SoC z tabletek – część I

Na prośbę Edwarda miałem streścić czytelnikom tego bloga różnicę pomiędzy rdzeniami fizycznymi a logicznymi w popularnym obecnie procesorze graficznym PowerVR SGX544.

Niestety rzucenie kilkoma terminami większości z Was nie za wiele powie i dlatego postanowiłem przybliżyć wam temat tego co pakują w nasze popularne „dachówki”.

O SoC’ach słów kilka

Atmel SAM4S16SoC, czyli System-on-a-Chip, w założeniach jest kompletnym komputerem w pigułce, takim samym jaki stoi zazwyczaj w pobliżu waszego biurka. Z rozmysłem piszę że w założeniach, bowiem obecne układy coraz bardziej zaczynają odchodzić od tej definicji. Przykładem jest tutaj choćby konieczność stosowania większej ilości pamięci RAM i usamodzielnianie jej przez zastosowanie odrębnych, dedykowanych kości. Nie zamierzam was zanudzać wywodami na temat samej architektury takich chipów, bo każdy może zapytać o nią wujka Google. Z punktu widzenia użytkownika też ma to drugorzędne znaczenie i omówię najważniejsze z nich, którym należy się przyjrzeć przed zakupem urządzenia. 

ARM – co to takiego?

arm-processorARM Holdings jest firmą, która ponad 20 lat temu położyła podwaliny pod obecne chipy SoC. Nazwa ARM pochodzi od „Advanced RISC Machine”, gdzie RISC jest rodzajem architektury głównej jednostki obliczeniowej (CPU), lepiej Wam znanej z choćby produktów Apple czy popularnych konsol do gier. Z czym to się je? Z czymś zupełnie innym niż drzemiące w metalowych pudłach Intele i AMD, pochodzących od CISC. Podstawowa różnica to zestaw instrukcji, który w CISC jest kompleksowy a w RISC zredukowany. Już w latach ’80 zauważono że podczas wykonywania programów ok. 50% mocy jest marnotrawione przez CISC z powodu zbyt rozbudowanej listy rozkazów. Do tego dochodziły powtarzające się wywołania i pętle, itd.

Platforma typu RISC jest architekturą VLIW i SIMD, co oznacza odpowiednio bardzo długie instrukcje oraz pojedynczą instrukcję z wieloma danymi. Wszystko to sprawia, że jest bardzo łatwo skalowalna (czyli np. popularne obecnie mnożenie rdzeni), co pozwala na drastyczne i tanie podnoszenie mocy obliczeniowej.

Ciekawostką dla niektórych będzie informacja, że ARM w ogóle nie produkuje chipów. Oni je tylko projektują i sprzedają prawa do patentu. 

Cortex A5,Cortex A15, ARM v7, Krait…

ARM CortexJak to rozróżnić? ARM v7 jest zestawem instrukcji używanym obecnie w większość urządzeń, gdzie v oznacza jego wersję. Oczywiście istnieją mniej złożone zestawy, a nad bardziej kompleksowymi trwają obecnie prace (ARM v8 – razem z Nvidią). Jakby tego było mało zestawy te są różne w zależności od ich stosowania.

Nas oczywiście interesuje Cortex A, czyli ta przeznaczona dla aplikacji (stąd literka A). Cyferka po „A” oznacza konkretny model, czyli określa budowę fizyczną chipa i zazwyczaj im wyższa tym bardziej jest on rozbudowany, co w efekcie zwiększa jego moc obliczeniową. Zazwyczaj nie oznacza zawsze. Oczywiście w związku z przyjętym przez ARM modelem biznesowym, wielu producentów dokonuje własnych zmian budowy, czego doskonały przykładem jest architektura Krait firmy Qualcomm. Tak więc ta jedna liczba definiuje ile może być rdzeni i w jakiej konfiguracji, jak duża jest pamięć podręczna, jak głęboki może być pojedynczy wątek wykonywany przez jednostkę obliczeniową oraz wiele innych istotnych parametrów.

Należy też dodać, że producenci chipów utrudniają nam życie wprowadzając łatwe do pomylenia oznaczenia jak A13 firmy Allwinner (Cortex A8) czy Apple A6 (również Cortex A8). Popularne hasło MPCore oznacza ni mniej ni więcej możliwość zastosowania kilku rdzeni w konstrukcji, więc jest to całkowicie zbędna informacja skoro wiemy ile dany SoC ma rdzeni.

nm – czyli co to jest 10−9 m i dlaczego mnie to dotyczy

intel-medfieldOtóż proces technologiczny w którym wykonany jest danych układ ma wręcz kolosalne znaczenie. Wiele osób myśli, że sama miniaturyzacja służy zwiększeniu ilości tych „dynksów” w czarnych kostkach i przez to zwiększeniu wydajności. Oczywiście jest to prawdą, ale niepełną. Przykładowo zmniejszenie procesu produkcji układu z 40nm do 28nm daje oszczędności w zużyciu energii rzędu 35-50% oraz znaczne obniżenie temperatury pracy. A mniej energii oznacza możliwość zwiększenia taktowania układu, czyli ilości cykli jakie on wykonuje w ciągu każdej sekundy pracy. Przy rozsądnym podniesieniu zegara, taki układ i tak będzie mniej prądożerny od oryginału, chłodniejszy i co najważniejsze – szybszy. A propos, te „dynksy” zazwyczaj odnoszą się do tranzystorów. 🙂

HGKM2013_core_sizes_768

Magiczne GigaHertze

Vectors-Backgrounds-with-Frequency-GraphicsTaktowanie układu jest oczywiście zależne nie tylko od danego modelu ARM procesora ale i konkretnej konstrukcji, czyli danego modelu, danej linii, danego producenta, a wszelkie porównania tego parametru w przypadku różnych układów zazwyczaj mijają się z celem. A więc co wybrać w przypadku powiedzmy Allwinner’a A31? 1.0GHz? 1.2GHz? A może ktoś oferuje jeszcze więcej? Oczywiście większa moc jest fajna, ale zawsze osiąga się to kosztem zwiększenia zużycia energii i wydzielanego ciepła. Mało tego, może to skutkować niestabilnym działaniem układu i jego krótszą żywotność. Tutaj trzeba wybrać złoty środek. 

Wróżenie z fusów

Modern 45-nanometer transistorsWięc co będzie się działo dalej z SoC’ami? Przy obecnym popycie rynku będzie to technologia ze wszech miar rozwijana. Skoro taki gigant jak Nvidia ogłaszając wyniki finansowe za 2012r zaznacza, że 1/3 ich przychodów pochodzi z rynku urządzeń mobilnych, a Samsung potrafi wykupić za plecami konkurentów całe zapasy kości pamięci, możemy stwierdzić ze wojna trwa w najlepsze. A wielu producentów i zacięta rywalizacja między nimi oznacza dla nas, konsumentów, tanie i dobre produkty oraz ogrom nowości.

Z pewnych rzeczy można stwierdzić że najbliższe miesiące zaowocują w SoC oparte na heterogenicznej (trudne słowo) architekturze ARM big.LITTLE, czyli połączenia rdzeni Cortex A15 z Cortex A7. Małe rdzenie będą obsługiwać proste operacje, a ich większy brat włączy się dopiero w przypadku zapotrzebowania na dużą moc obliczeniową. Proces produkcji 28nm do końca tego roku będzie standardem i chociaż Intel oficjalnie zaprezentował już metodę 14 nm, to wątpię aby któryś z producentów pokusił się o wprowadzenie jej do produkcji masowej.

Dla dociekliwszych szczegółów kilka

Poniżej skrócona tabelka z Wikipedii, która pomoże się wam rozeznać w samej architekturze.

[table caption=”Architektura ARM” colalign=”left|left|left|left|left|left|left”]
Właściwość  ,Cortex-A7 , Scorpion* , Krait* , Cortex-A8 , Cortex-A9 , Cortex-A15
Głębokość potoków, 8,10,11,13,8,15-25
Ilość potoków, 2,2,3,2,2,3
Wykonywanie instrukcji poza kolejnością, Nie, Tak (tylko niespekulatywnie), Tak, Nie, Tak, Tak
FPU, VFPv4,VFPv3,VFPv4,VFPv3,VFPv3,VFPv4
NEON,Tak (64bit),Tak (128bit),Tak (128bit),Tak (64bit),Opcjonalnie (64bit), Tak (128bit)
Pamięć L0,Brak,Brak,4kB + 4kB,Brak,Brak,Brak
Pamięć L1,8-64kB na rdzeń,32kB + 32kB,16kB + 16kB,32kB + 32kB,32 kB + 32 kB,32 kB + 32 kB na rdzeń
Pamięć L2,do 1MB (opcjonalnie) na rdzeń,256kB na rdzeń,1MB na każde 2 rdzenie,256kB lub 512kB,1 MB,Do 4MB na klaster i do 8MB na chip
Możliwa konfiguracja rdzeni, 1/ 2/ 4, 1/2,2/4,1,1/2/4,2/4/8
Typowe procesy technologiczne,40/28 nm, 65/45 nm, 28 nm,  65/45 nm,  45/40/ 32/28 nm,  32/28 nm
[/table]

*kompatybilne z Cortex-A7

Głębokość potoków to innymi słowy „długość” instrukcji. Ciekawostką jest że według badań optymalna ilość to 7 etapów.

Ilość potoków określa oczywiście ile instrukcji może być wykonywanych w jednym cyklu zegara.

Wykonywanie instrukcji poza kolejnością wbrew pozorom jest bardzo ważna i pożądaną funkcją, a jej brak jest mocno odczuwalny.

FPU to jednostka zmiennoprzecinkowa, wykonująca działania matematyczne. Architektura ARM przydziela VFP głównie liczenie wektorów, co ma duży wpływ na ogólną wydajność.

NEON jest zestandaryzowanym rozszerzeniem zestawu instrukcji o dekodowanie multimediów (od mp3 po filmy UltraHD).

Pamięci to pamięci, chociaż niekoniecznie im więcej tym lepiej. Oczywiście dobrze jak jest jej dużo, ale nie zawsze będzie to oznaczało wzrost wydajności. Wiele zależy od jej poziomu (im mniejsza liczba przy L, tym bliżej jest ona rdzenia jednostki, a 0 oznacza sam rdzeń), budowy (szyna, czasy, itd.) oraz możliwości samego rdzenia.

Budowa danej jednostki SoC, a mianowicie jej skalarność (ilość możliwych do obsłużenia rdzeni) również jest ograniczona ze względu na model.

Druga część artykułu jest dostępna tutaj.

Od redakcji

Cyklem artykułów „SoC z tabletek” Tomasz będzie starał się przybliżyć Wam architekturę układów graficznych (GPU) w obecnie produkowanych SoC’ach. Mamy nadzieję, że tak podana niełatwa wiedza, pozwoli Wam bardziej świadomie wybierać sprzęt.

intelfab