Tegra K1 – ostatnia szansa NVidii?

NVIDIA-Tegra-K1

NVidia już od ponad 6 lat próbuje zaistnieć na rynku zintegrowanych rozwiązań procesorowych (System-on-a-Chip – zwanych często po prostu procesorami) dla urządzeń mobilnych. Premierę Tegry datuje się na początek 2008 roku, a pierwszym urządzeniem wyposażonym w ten układ był Zune HD, który ujrzał światło dzienne w drugiej połowie 2009 roku. Zanim przejdę do szczegółów, myślę, że warto wyjaśnić kilka podstawowych pojęć związanych z architekturą procesorów.

Czasami można zauważyć, że nie do końca poprawnie, zamiennie używa się terminów takich jak SoC, procesor, CPU, jednostka obliczeniowa czy układ. Nie zagłębiając się w detale, System-on-a-Chip (SoC) jest to układ scalony integrujący wszystkie elementy obliczeniowe komputera lub innego systemu w jedno.  W przypadku urządzeń mobilnych, SoC może zawierać w sobie między innymi obliczeniową jednostkę centralną (CPU, procesor), procesor graficzny (GPU), mostek północny (odpowiadający za połączenia pomiędzy procesorem, pamięcią operacyjną i magistralą), mostek południowy (realizujący połączenie procesora do wolniejszej części wyposażenia mikrokomputera), modem LTE czy kontroler pamięci. Omówione zależności zostały zobrazowane na poniższym schemacie, na przykładzie SoC dla rozwiązań stacjonarnych:

Schemat_blokowy_chipsetu

Jeśli jeszcze nie zasnęliście, przejdę do prawdopodobnie ciekawszych, marketingowych aspektów pierwszych SoC, na przykładzie właśnie NVidii Tegry. Trudno powiedzieć czy Tegra przynosi pecha urządzeniom, które ją wykorzystują, czy może to te (nie zawsze dobrze wykonane) urządzenia sprawiły, że układ ów jest kojarzony z odwiecznymi problemami, a w brutalnym świecie anonimowego Internetu nawet wyszydzany i odsądzany od czci i wiary. Krytyka jest jednak przynajmniej częściowo zasłużona – Zune HD, smartfon KIN (Tegra), Motorola XOOM, Sony Tablet S (Tegra 2), Surface RT, HTC One X (Tegra 3), to tylko niektóre urządzenia wykorzystujące ten układ, którym mimo dużych oczekiwań nie udało się podbić rynku, a czasami stawały się wielkimi symbolami klęski.  Innowacyjna jak na owe czasy 4-rdzeniowa architektura Tegry 3 nie okazała się spektakularnym sukcesem ani wydajnościowym ani marketingowym, jednak na dobre zapoczątkowała wojnę na rdzenie i gigaherce. Rynek mobilny górnej półki został zdominowany przez Qualcomma ze swoimi Snapdragonami, Samsunga z własnymi SoC z rodziny Exynos i rosnącego ostatnio w siłę MediaTeka. Tegra 4 miała przełamać tą złą passę, ale mimo tego, że to solidny układ mogący jak równy z równym konkurować z najnowszymi Snapdragonami, nie trafił on do zbyt wielu urządzeń w ubiegłym roku. Wyjątkiem może być Surface 2, który dzięki znacznemu wzrostowi wydajności Tegry 4 w stosunku do poprzedniej generacji – wrócił do gry i odnotowuje znacznie lepsze wyniki sprzedaży niż jego poprzednik.

Tegra_kepler

Tegra K1 – 4 rdzenie + 1, 32 bity i Kepler na pokładzie

Tegra 2 była pierwszym 2-rdzeniowym procesorem ARM dla Androida – to miało ją wyróżniać. Podobnie było z Tegrą 3 – w tym przypadku zaskoczono nas po raz pierwszy 4 rdzeniami. Tegra 4 była po prostu szybsza i bardziej wydajna, ale na pewno nie przełomowa. K1 z kolei, wreszcie koncentruje się na podstawach. Tak jak Tegra 4, część CPU składa się z 4 rdzeni głównych Cortex A15 i piątego rdzenia „companion”, zoptymalizowanego do działania w niskich częstotliwościach i mocach, między innymi dla zadań w tle, takich jak notyfikacje czy stan bezczynności. Wraz ze wzrostem zapotrzebowania na moc obliczeniową – włączają się kolejne rdzenie – 1, 2, 3 i 4, ale nigdy 5 jednocześnie.

W stosunku do Tegry 4, K1 wyposażono w nowsze rdzenie A15 (r3p3 zamiast r2p1), które mają zapewnić jeszcze lepszą wydajność przy jednoczesnym zmniejszeniu poboru prądu, głównie dzięki zagęszczeniu clock gating oraz zmianie procesu technologicznego z 28nm HPL na 28nm HPM. Różnica między HPM a HPL polega głównie na zoptymalizowaniu poziomu wycieku (zjawisko kwantowe, którego skutkiem jest tunelowanie ładunków między warstwą izolatora, będące obecnie jednym z głównych czynników limitujących maksymalną moc obliczeniową procesora) do wydajności szczytowej. Taktowanie zwiększono z 1,9 GHz do 2,3 GHz, nie zmieniono natomiast układu pamięci podręcznej L1/L2 – wciąż mamy do czynienia z współdzielonymi 2 MB pamięci L2 i 32/32 kB L1 na rdzeń, a CPU i GPU komunikują się z pamięcią przez 64-bitowy interfejs LPDDR3.

O ile zmiany w CPU są kosmetyczne, dużo ciekawiej wygląda sytuacja z GPU. Dotychczas, wszystkie Tegry, jeśli chodzi o GPU, opierały się na niezunifikowanej architekturze o kiepskim API, kodowo nazwanej GeForce ULP – rdzenie te nigdy nie powalały jeśli chodzi o wydajność (limitowaną zwykle przez wąski interfejs pamięci) czy energooszczędność, a przemawiał za nimi jedynie niski koszt. Tegra K1 będzie pierwszym czipem z tej rodziny, wykorzystującym architekturę Kepler, znaną dotychczas tylko z rozwiązań pecetowych. Na pierwszy rzut oka może się to nie wydawać aż tak znaczące, ale wypowiedzi przedstawicieli firmy wskazują, że nowe rozwiązania GPU będą najpierw trafiać na procesory mobilne, a dopiero potem do kart graficznych – co może wreszcie pozwolić NVidii konkurować, a może nawet zostawić konkurentów w tyle. Jest to ogromny skok jakościowy nie do przecenienia – z uwagi na kompatybilność API z architekturą Kepler (OpenGL 4.4, DX11 i CUDA 6.0), gry wydane na konsole PS3 czy Xbox 360 mogą być portowane bezpośrednio, bez wprowadzania pracochłonnych zmian w kodzie. Gry z tych konsol dostępne tylko dla tabletów z Tegrą byłyby ogromną przewagą marketingową nad Qualcommem i resztą konkurencji. Dzięki temu pojedynczemu ruchowi, NVidia, z firmy która była krytykowana za brak wsparcia i udostępniania API dla Tegry, stała się (lub może się stać) liderem w tej dziedzinie.

Wracając do zastosowanej technologii – K1 wykorzystuje aż 192 rdzenie CUDA w praktycznie niezmienionej, w porównaniu do rozwiązań PC, architekturze Kepler, z tym samym rozmiarem rejestru i współdzieloną pamięcią L1. Wszystkie zmiany w architekturze, pozwoliły na ograniczenie poboru mocy przez GPU do poziomu poniżej 2 W. Daje to wynik jak najbardziej akceptowalny, dający nadzieję na dłuższy czas życia urządzenia na jednym ładowaniu, przy zachowaniu bardzo wysokiej mocy obliczeniowej. 32-bitowa Tegra K1 nie zachwyca CPU, ale przełom po stronie GPU jest naprawdę znaczący i rodzi ogromne potencjalne możliwości.

k1-wersje

Projekt Denver, czyli powrót do 2 rdzeni i krok w stronę świata 64 bitów

Tylko dwa rdzenie w flagowym układzie NVidii, która kilka lat temu rozpoczęła wyścig na liczbę rdzeni? To nie świat stanął na głowie, tylko po rozum do głowy poszli architekci, którzy zrozumieli wreszcie gdzie leżą priorytety. Zanim opowiem o szczegółowej strukturze drugiej wersji Tegry K1 (Project Denver), która światło dzienne ujrzy pod koniec tego roku, zastanówmy się o co chodzi w zamieszaniu związanym z wprowadzeniem procesorów 64-bitowych. Czy chodzi tylko o pamięć RAM? Większość czytelników zapewne spotkało się z twierdzeniem, że procesor 32-bitowy nie może zaadresować więcej pamięci operacyjnej niż 4 GB (a w praktyce jeszcze mniej, z uwagi na zastrzeżoną przestrzeń adresową). Skąd wynika to ograniczenie? Z prostego rachunku: 32 bity określają liczbę możliwych do zaadresowania komórek. Istnieje 2^32 wariacji 32-bitowego adresu, czyli bezpośrednio można adresować 4 294 967 296 (4 G) komórek pamięci. Czy jednak rzeczywiście stanowi to problem nie do przejścia dla 32-bitowej architektury? Nie koniecznie. Od dawna znane są rozwiązania zwiększenia przestrzeni adresowej np. przez zastosowanie segmentacji lub wirtualizacji pamięci – użycie PAE (Physical Adress Extension). Rozwiązanie to pozwala procesorowi na dostęp do więcej niż 4 GB pamięci RAM, ale nie zmienia rozmiaru wirtualnej przestrzeni adresowej dla pojedynczego procesu – każdy proces w pamięci będzie dalej ograniczony limitem 4 GB.

Po co komu zatem 64 bity? Czy 64-bitowy A7 w iPadzie Air to tylko chwyt marketingowy, jak twierdził Anand Chandrasekher, przedstawiciel Qualcomma? Qualcomm oficjalnie wycofał się z tego stanowiska, stwierdzając, że 64-bitowa architektura to przyszłość urządzeń mobilnych i przejście na nią jest nieuniknione. Jakie są zatem zalety 64 bitów? Architektura ta dostarcza więcej rejestrów, które są dwa razy szersze, co przyczynia się do wzrostu wydajności aplikacji, które są skompilowane dla 64 bitów. Z uwagi na większą liczbę rejestrów, rzadziej występuje potrzeba bezpośredniego odwoływania się do pamięci fizycznej. Dodatkowo, wywołania funkcji są szybsze z uwagi na możliwość przekazywania aż 4 argumentów w rejestrach na raz (pozwala uniknąć to przerzucania ich przez stos).

Dla K1 Denver, od 64-bitowej architektury, której nie wspierają obecnie dostępne aplikacje w Play czy Windows Store, ważniejsze jest zastosowanie rdzeni opartych o instrukcje ARMv8 (zamiast ARMv7 jak w przypadku 32-bitowej Tegry K1), które zwiększają wydajność między innymi przez szybsze operacje arytmetyczne, zwiększenie liczby rejestrów ogólnego przeznaczenia i wyeliminowanie niektórych starszych instrukcji, które były mało wydajne. Zrezygnowano z czterech rdzeni głownych i jednego rdzenia pomocniczego na korzyść dwóch większych (i szybszych zarówno jeśli chdozi o taktowanie jak i komunikacje międzyprocesową), ale oba układy są ze soba kompatybilne jeśli chodzi o piny, co może wskazywać na zastosowanie tego samego 64-bitowego interfejsu pamięci. Firma ogłosiła, że Denver (druga generacja K1) będzi miała 128 kB pamięci podręcznej L1 dla instrukcji i 64 kB L1 dla danych – taka asymetria jest rzadko spotykana i pokazuje, że układ ten jeszcze nie raz nas zaskoczy – nie tylko taktowaniem na poziomie 2,5 GHz. Ironicznym wydaje się fakt, że firma, która zaczęła ten wyścig zbrojeń, wraca do pierwotnego rozwiązania z dwoma silnymi rdzeniami, które od lat sprawdza się w procesorach Apple czy Intela. Najwyższy czas. Czy to zakończy szaleńczy wyścig na liczbę rdzeni? Raczej nie, bo już teraz mamy informacje o kolejnych procesorach Qualcomma i pozostałych producentów, z 8 rdzeniami, które będą mogły pracować jednocześnie. Czas pokaże której z firm udało się najlepiej zbalansować trudną równowagę maksymalnej mocy obliczeniowej, liczby rdzeni i poboru energii. Benchmarki, w których króluje 2-rdzeniowy, niskotaktowany A7 od Apple’a pokazują, że na końcową wydajność, wpływ ma wiele czynników, nie koniecznie bezpośrednio związanych z zegarem czy liczbą rdzeni – począwszy od szybkości komunikacji miedzy modułami, a skończywszy na optymalizacji samego oprogramowania.

Na targach CES zaprezentowano urządzenie referencyjne z Androidem 4.4 napędzane Tegrą K1 Denver. Czas pokaże czy ograniczenie liczby rdzeni na korzyść ich mocy obliczeniowej i szybkości transmisji danych okazało się słuszne. Wraz z bardzo szerokim i otwartym API, dobrym stosunkiem moc obliczeniowa/pobór energii oraz wsparciem dla 64 bitów, drugi model K1 wydaje się wyjątkowo ciekawym układem, który najprawdopodobniej znajdzie się w tablecie Surface trzeciej generacji, o ile Microsoft zdąży do tego czasu przygotować 64-bitową wersję Windows RT. Czy w świecie zdominowanym przez Qualcomma, NVidia ma szansę na odrodzenie się i namieszanie na rynku procesorów mobilnych? Czy urządzenia z Androidem jej w tym pomogą? Jeśli te szanse istnieją, ich najlepszym ucieleśnieniem jest właśnie 64-bitowa Tegra K1. Trzeba jednak pamiętać, że konkurencja nie śpi, mając w zanadrzu własne 64-bitowe rozwiązania, które również będą już wkrótce pojawiać się na rynku. Tylko czas, benchmarki i sam rynek zweryfikują moje prognozy. Ja trzymam za Tegrę kciuki – konkurencja jest potrzebna (między innymi do obniżania cen układów), co widać po sytuacji na rynku PC, zdominowanym niemalże całkowicie przez Intela. Czy za rok procesory ARM będą na tyle mocne, że producenci oprogramowania zaczną wytwarzać software do zastosowań profesjonalnych dla tej architektury? Chyba wszyscy byśmy sobie tego życzyli.