Okostelefonos SoC-határozó

Bevezető

Mivel teljesen biztos vagyok benne, hogy a kollégáim is egyetértenek velem, megkérdezésük nélkül is le merem írni, hogy a munkánk egyik legjobb része mindig is az volt, amikor egy-egy tesztkészülékek szempontjából gyengébb időszakban összeültünk és kitaláltunk egy-egy olyan örökzöld cikktémát, melyet korábban valamiért sosem jutott eszünkbe megírni, holott teljesen egyértelmű, hogy szükség van rájuk. Így született meg egyik legnagyobb büszkeségünk, a GSM-hálózatokat bemutató cikkünk, vagy épp a kijelzőkről szóló anyagunk, de az adatkommunikációs alapozót is jó példaként lehet említeni.

Egy dologgal viszont az új generációs okostelefonok terjedése óta adósok vagyunk; egy olyan hardveres bemutatóval, melynek segítségével egyrészt a laikusok számára is világossá válhat, hogy mi a különbség egy és két processzormag között, másrészt a haladóknak is jelenthet egy olyan fix pontot, melyet támpontként használhatnak a készüléktesztjeink mellett. Feladatunknak eddig azért nem tettünk eleget, mert a készülékek alkatrészeivel kapcsolatos tudásunk meg sem közelíti a prohardveres kollégáinkét, de most már nem húzhatjuk tovább, muszáj foglalkoznunk a témával. Úgyhogy meg is tesszük, remélhetőleg olyan formában, hogy a legtöbbeknek megfeleljen.

Akik a Prohardvert is olvassák, azok elképzelhető, hogy a sorok végignyálazása után csalódottak lesznek. Ennek nyugodtan hangot lehet adni a fórumban, de előre szólunk, hogy felesleges; ezt a cikket nem azoknak szánjuk, akik első olvasásra tökéletesen megértik az ultramobil GPU-k mélylélektanát, hanem azoknak, akik érdeklődnek az okostelefonok és táblagépek iránt, de nem teljesen tudják, hogy a specifikációs táblázat hardveres mezőit böngészve mit mire véljenek.

Hardveres alapfogalmak: SoC, CPU, IPC és magok

Az okostelefonok és táblagépek kapcsán egyre többször lehet találkozni az SoC kifejezéssel, melyről talán még olvasóink egy része sem tudja, hogy pontosan mi, sokan pedig a processzorral keverik össze. Pedig az SoC (System On a Chip) egy olyan integrált áramkör (IC), aminek részét képezik a perifériakezelő rendszerek, a CPU-mag vagy -magok, jellemzően az integrált grafikus vezérlő és még sok minden más. Elektronikai eszköz alatt ugye az okostelefonokat, táblagépeket, tágabb értelemben számítógépet érthetjük, de a lényeg itt tényleg az, hogy fizikailag csak egyetlen egy chip van, aminek részét képezik a már említett egységek (perifériakezelő rendszerek, a CPU, adott esetben a GPU stb.). A definíció itt elég nehéz, egy SoC-t elméletileg csak egy hajszál választja el egy mikrokontrollertől, melyek a rajtuk található CPU-nak és a programozható I/O kezelőknek köszönhetően szintén SoC-k, de a mikrokontrollerek specializáltabb szerkezetek, mint amikről mi most beszélünk. Egyetlen leírható különbség van, mégpedig az, hogy a mikrokontrollerekben található valamennyi memória, míg az okostelefonos szemszögből megközelített SoC-kben nem, mivel az „mellettük” van. Ennél persze gyakorlatiasabb megközelítés az, hogy mikrokontrollernek nevezzük azt a specializált hardvert, ami képes működtetni mondjuk egy gyerekeknek szánt szintetizátort, míg az SoC jelzőt a komolyabb számítási kapacitással rendelkező egységekre aggatjuk rá – minden mikrokontroller SoC, de ez fordítva nem igaz. Ebből az egészből persze nem ezt kell látni, hanem azt, hogy a gyártók a helymegtakarítás miatt használnak SoC-ket a hordozható eszközöknél. Egy lapka kisebb alaplapot igényel, mint kettő, azaz több hely marad az akkumulátornak vagy kisebb lehet a telefon. Épp ezért jelenthető ki, hogy pár kivételtől eltekintve ma már szinte minden okostelefonban és táblagépben SoC található – ezért is olvadt kicsit össze a processzor és az SoC fogalma.

Az előző bekezdésben több olyan fogalom is bejött a képbe, melyek erősen magyarázatra szorulnak. Talán a legtöbbek számára a CPU mond valamit, ez a Central Processing Unit angol szóhármas rövidítése, melyet magyarul központi feldolgozóegységként szoktunk emlegetni. Ez az egység az elektronikai eszköz agya, az okostelefonoknál egyben talán a legösszetettebb, legtöbb tranzisztort tartalmazó hardver is, mely az utasítások értelmezését és végrehajtását vezérli – és rengeteg egyéb, számunkra érdekes tulajdonsága van. Például az órajel, melynek mértékegysége a Hertz (Hz), de a nagy számok miatt már évtizedek óta Megahertz (MHz), jó pár éve pedig Gigahertz (GHz) egységeket használunk: 1 GHz = 1000 MHz = 1 000 000 kHz = 1 000 000 000 Hz.

Óra és órajel

A processzorokban található óra magában foglal egy kvarckristályt, ami az órajel előállításához szükséges rezgés stabilitását adja, ezt mérjük ugyebár Hertzben. A processzor részegységei az órajel ütemére végzik feladataikat; amikor egy részegység megkapja az órajelet egy elektronikus jel formájában, akkor elvégzi a soron következő műveletet, majd amikor megkapja a következő jelet, akkor a következő műveletet végzi el. Egy másodperc alatt egy mai processzor egysége több milliószor kap jelet, ami a gigahertzes mértékegységek alapján kikövetkeztethető. Az órajel sebességének így ahhoz az időhöz kell alkalmazkodnia, amennyi időbe telik egy részegységnek a rá kijelölt művelet elvégzése (különben akkor jönne a következő művelet, amikor az előző még feldolgozás alatt van, ami problémákat okozna). Ez lényegében azt eredményezheti, hogy a processzor egységeinek a leglassabb elem miatt kell várakozniuk, amit persze különféle megoldásokkal orvosolnak. Ám a műveletet nem szabad összetéveszteni az utasítással: egy utasítás végrehajtása több órajelciklust is igénybe vehet.

Sokan a mai napig azt hiszik, hogy az órajel a teljesítmény mértékegysége és minél nagyobb a szám, annál nagyobb a számítási teljesítmény, azaz kvázi annál gyorsabb a processzor, de ez tévedés. Ez az általános nézet anno a Pentium 4-es asztali processzorok bemutatkozásával terjedt el (pontosabban az Intel próbálta terjeszteni), majd később az AMD Athlon megjelenése mutatott rá arra, hogy nem igaz. Egy adott processzor teljesítményét két szimpla változó szorzatának eredményeként kapjuk meg. Ezek a változók az órajel (pl. 2,6 GHz) és az IPC, azaz Instructions Per Cycle, magyarul egy órajelciklus alatt elvégzett műveletek száma. Egyértelmű, hogy két CPU közül a magasabb órajelű a gyorsabb, ha ugyanolyan IPC-vel rendelkeznek, tehát ha két azonos típusról van szó, ellenben ha két különböző típusú CPU-ról beszélünk, akkor az órajel ismerete önmagában nem elég ahhoz, hogy kiderüljön, melyik a gyorsabb (feltételezve, hogy a két különböző típusú processzor az IPC-t kivéve minden más paraméter szempontjából megegyezik). Azt, hogy egy adott CPU milyen IPC-vel rendelkezik, nem lehet konkrétan meghatározni, hiszen tudni kellene azt is, hogy milyen műveletről van szó, azonban a CPU-tesztek ki szokták mutatni, ha egy adott architektúra azonos órajelen gyorsabb, mint egy másik. Mivel az okostelefonoknál és a táblagépeknél ma már nagyon fontos, hogy milyen teljesítményre számíthatunk, gyakorlatilag az összes platformon vannak olyan tesztprogramok, melyek nagyjából biztos összehasonlítási alapot adnak bizonyos részterületeken – ezeket a szoftvereket mi is használjunk a készülékek tesztelésekor.

Tegra 3
NVIDIA Tegra 3

A processzoroknál nagyon fontos paraméter a magok száma, ma ugye egy, két, négy és nyolcmagos megoldások is piacon vannak. Sokan úgy gondolják, hogy a magok számának duplázása egyben 200 százalékos sebességet is jelent, de ez sajnos távolról sem igaz; a több processzormagnak azoknál a feladatoknál van értelme, ahol a műveleteket lehet párhuzamosítani, ráadásul ott is csak akkor, ha a feladat végrehajtását kérő szoftvert optimalizálták többmagos rendszerre. Mindezt egy nagyon egyszerű példával lehet leírni: képzeljük el magunkat és egy barátunkat, mint egy-egy processzormagot. Matematikai feladatokat kell megoldanunk, az első egy összeadás, mondjuk 3+4: itt nyilván nincs előnyünk abból, hogy egy barátunk is segít számolni, hiszen legfeljebb azt tudjuk csinálni, hogy mindketten egyszerre kiszámoljuk és kétszer lesz meg ugyanaz az eredményünk. Ellenben egy kicsit komplexebb műveletnél már meg lehet osztani a feladatokat; a (3+4)*(4+3) esetében például három műveletünk van, két összeadás és egy szorzás. Ha mi megcsináljuk az első összeadást, a barátunk közben megcsinálhatja a másikat, nekünk pedig ezután csak a szorzás marad, azaz bár nekünk három műveletnyi idő lett volna elvégezni a feladatot, a barátunk segítségével kettő alatt meglettünk. Mindez azonban csak akkor működik, ha a feladatokat megkapjuk és van köztünk kommunikáció, ez okostelefonos rendszerknél viszont nem ilyen triviális ez az egész. Az Android rendszer például csak a 3.0-s (Honeycomb) verzió óta támogatja rendszerszinten a kétmagos processzorokat, épp ezért is kapott kritikákat annak idején a korábbi rendszerrel piacra került LG Optimus 2X, melyben ugyan kétmagos CPU működött, de azt a rendszer nem tudta kihasználni. El kell viszont különíteni magát az Androidot és a szoftvereket, a lehetőségek ugyanis nem ugyanazok. Egy operációs rendszernél felhasználói élmény szempontjából talán fontosabb az, hogy milyen gyorsan kerülnek kiszámításra a felhasználói felülettel kapcsolatos műveletek, mint az, hogy sok processzormagunk legyen. Igaz ugyan, hogy vannak háttérfolyamatok, de azok inkább memória, nem pedig processzorigényesek. Ellenben mondjuk webböngészéskor jól jöhet egy négymagos rendszer; egy mag számolja a JavaScript műveleteket (mivel ez egy párhuzamos feldolgozást nem támogató nyelv), a többi mag pedig a sorban megnyíló újabb és újabb böngészőablakokat, azaz három darab fül megnyitásáig még egyértelmű előnyünk van. Ugyanígy egy játéknál is jól jön, ha egy processzormag foglalkozik a fizikai számításokkal és egy másik a mesterséges intelligenciával, de hangsúlyozni kell, hogy mindez csak akkor működőképes, ha a szoftverfejlesztők erre lehetőséget adnak. Operációs rendszerek tekintetében egyébként nincs nagy különbség a több mag kihasználásának tekintetében, nem lehetne azt mondani, hogy az Android vagy mondjuk a Windows Phone jobb vagy rosszabb, mint a többiek.

ARM, utasításkészlet, csíkszélesség, RAM

A hordozható gépek hardvere kapcsán egyre többször lehet olvasni az ARM kifejezést, mely az ARM Limited által kifejlesztett, 32 bites, egyszerűsített utasításkészletű (RISC) processzorarchitektúra. Jelenleg ez a világ egyik legelterjedtebb megoldása, amit nem véletlenül használnak a hordozható eszközökben; bár az ARM-alapú processzorok teljesítménye elmarad az x86-os architektúrát használó megoldásokétól, energiaigényük is jóval alacsonyabb. Többek között ennek köszönhető, hogy 2011-ben közel 8 milliárd ARM-alapú processzort szállítottak világszerte, ami a mobiltelefonok között 95 százalékos, a televízióknál pedig 40 százalékos részesedést jelentett, azaz 20-ból 19 mobiltelefonban ARM-chip volt.

Az ARM Limited nem gyárt processzorokat, tervezni viszont terveznek és ezeket a terveket el is adják. Itt konkrét processzormagokra kell gondolni, de az egész képletet átlátni már csak azért sem egyszerű, mert ARM-architektúrájú processzorokat külső gyártók is tervezhetnek, többek között ezt csinálja a Qualcomm (Snapdragon család) és az Apple (A6, A6x) is. Ráadásul az ARM által tervezett processzorok besorolása sem a legegyszerűbb, hiszen van egyrészt a processzorcsalád, mely nagyjából 10 évvel ezelőttig még teljesen átlátható volt: ARM1, ARM2, ARM3 és így tovább egészen ARM11-ig. Utána viszont jött a Cortex-M, a Cortex-R és a Cortex-A család, mely közül mi főleg az utóbbit ismerjük, hiszen az ottani megoldásokat tervezték alkalmazások futattására. A Cortex-A család jelenleg 5 tagból áll (A5, A7 MPCore, A8, A9 MPCore, A15 MPCore), de hamarosan érkezik majd két új gyermek is (A53 és A57), melyek már architekturális lépést is jelentenek majd. A telefonoknál ARMv6 vagy ARMv7 architektúrát használnak, de manapság már minden friss megoldás az ARMv7 architektúrára épít, v6-os processzorokat csak az olcsóbb készülékekben használnak. A közös utasításkészlet biztosítja, hogy az architektúrára lefordított programok minden egyes cég fejlesztésén elinduljanak. Az ARMv7 a nevének megfelelően a hetedik generációs technológia, de az előző architektúrára írt alkalmazások is futnak rajta. Az új generációt az ARMv8 jelenti majd, mely már egy 64 bites processzorarchitektúra, így a mai megoldásoknál sokkal több memóriát képes megcímezni, emellett a kompatibilitása is biztosított a régebbi programokkal. Fűszerezésként elmondható, hogy bizonyos ARM processzormagokba implementálható az úgynevezett NEON SIMD kiterjesztés, ami a multimédiás feladatokat képes felgyorsítani.


Nanométer szemléltetés

Egy kicsit most fellélegezhetünk, a csíkszélesség ugyanis egy jóval egyszerűbben érthető tulajdonsága a processzoroknak. Az efféle chipeket ugyebár szilíciumból gyártják, ami egyébként egy nagyon kemény kémiai elem (és a földkéreg negyedét teszi ki, megtalálható többek között a homokban is, de a természetben tisztán nem fordul elő). A processzorok fejlődését többek között az teszi lehetővé, hogy egyre keskenyebb (vagy ha úgy tetszik, vékonyabb) szilíciumlapkákra nyomtatják az áramköröket; a számítógépeknél jelenleg 22 nanométer a minimum, az okostelefonos/táblagépes megoldások általában 28, 32, 45 és 65 nanométeres csíkszélességgel készülnek (egy nanométer az egymilliárdod méter, azaz egy átlagos hajszál hozzávetőlegesen egymilliószor vastagabb, mint az említett csíkszélesség). Nagy általánosságban azt lehet mondani, hogy a kisebb csíkszélesség kevesebb hőtermeléssel és fogyasztással, ebből adódóan jellemzően nagyobb teljesítménnyel jár, de a gyártástechnológia és a chipgyártás nem olyan egyszerű, hogy az elméleti következtetések minden szempont szerint megállják a helyüket. Az adott lapka teljesítmény/fogyasztás aránya nagymértékben függ a tervezéstől, így olyan gyakorlati tényezők kerülnek a képletbe, melyek kiüthetik az elméletet.

SoC-k összehasonlítása

Az alábbi táblázatban a jelenleg elterjedt, okostelefonokban vagy táblagépekben használt megoldásokat szedtük össze. Bár próbáljuk frissen tartani, a Logouton található, tjb007 által karban tartott SoC kisokost is érdemes lehet nézegetni, mert az idő múlásával előfordulhat, hogy az naprakészebb, mint ez a táblázat:

Okostelefonokban és táblagépekben használt SoC-k összehasonlítása
Típus Csíkszélesség Magok Órajel GPU
Allwinner A10/A13 55 nm 1 ? - 1,2 GHz ARM Mali-400 MP
Allwinner A31 ? 4 ? PowerVR SGX544 MP2
Amlogic AML8726-M1 65 nm 1 ? - 1 GHz ARM Mali-400 MP
Amlogic AML8726-M3 45 nm 1 ? - 1 GHz ARM Mali-400 MP
Amlogic AML8726-MX 40 nm 2 ? - 1,5 GHz ARM Mali-400 MP2
Apple A4 45 nm 1 1 GHz PowerVR SGX535
Apple A5 45/32 nm 1/2 1 GHz PowerVR SGX543MP2
Apple A5X 45 nm 2 1 GHz PowerVR SGX543MP4
Apple A6 32 nm 2 1,3 GHz PowerVR SGX543MP3
Apple A6X 32 nm 2 1,4 GHz PowerVR SGX554MP4
Broadcom BCM21654 40 nm 1 ~850 MHz VideoCore IV
Hisilicon Hi3620 (Huawei K3V2) 40 nm 4 1,2 - 1,5 GHz Vivante GC4000
Intel Medfield 32 nm 1 1,6 GHz PowerVR SGX540
MTK MT6573 65 nm 1 650 MHz PowerVR SGX531
MTK MT6575 40 nm 1 1 GHz PowerVR SGX531
MTK MT6577 40 nm 2 1 GHz PowerVR SGX531
MTK MT6589 28 nm 4 1 - 1,2 GHz PowerVR SGX544
NVIDIA Tegra 2 40 nm 2 1 - 1,5 GHz ULP GeForce
NVIDIA Tegra 3 40 nm 4 + 1 1,2 - 1,6 GHz ULP GeForce (Kal-El)
Rockchip RK2918 55 nm 1 1 - 1,2 GHz Vivante GC800
Rockchip RK3066 40 nm 2 ? - 1,6 GHz ARM Mali-400 MP4
Rockchip RK31xx 28 nm 4 ? - 2 GHz ?
Samsung Exynos 4210 45 nm 2 1,2 GHz - 1,4 GHz ARM Mali-400 MP4
Samsung Exynos 4212 32 nm 2 1,2 GHz - 1,4 GHz ARM Mali-400 MP4
Samsung Exynos 4412 32 nm 4 1,5 GHz - 1,8 GHz ARM Mali-400 MP4
Samsung Exynos 5250 32 nm 2 2 GHz ARM Mali-T604MPx
ST-Ericsson NovaThor U8500 45 nm 2 800 MHz - 1 GHz ARM Mali-400 MP
ST-Ericsson NovaThor A9500 45 nm 2 1,2 GHz ARM Mali-400 MP
ST-Ericsson NovaThor A9540 32 nm 2 1,85 GHz PowerVR SGX544
Qualcomm MSM7x25 (Snapdragon S1) 65 nm 1 528 MHz nincs
Qualcomm MSM7x25A (Snapdragon S1) 45 nm 1 600 - 800 MHz Adreno 200
Qualcomm MSM7x27 (Snapdragon S1) 65 nm 1 600 MHz Adreno 200
Qualcomm MSM7x27T (Snapdragon S1) 65 nm 1 800 MHz Adreno 200
Qualcomm MSM7x27A (Snapdragon S1) 45 nm 1 800 MHz - 1 GHz Adreno 200
Qualcomm MSM7x30 (Snapdragon S2) 45 nm 1 800 MHz - 1 GHz Adreno 205
Qualcomm QSD/MSM8x50 (Snapdr. S1) 65 nm 1 1 GHz Adreno 200
Qualcomm MSM8x55 (Snapdragon S2) 45 nm 1 1 GHz Adreno 205
Qualcomm MSM8x55T (Snapdragon S2) 45 nm 1 1,5 GHz Adreno 205
Qualcomm MSM8x60 (Snapdragon S3) 45 nm 2 1,2 - 1,5 GHz Adreno 220
Qualcomm MSM8x30 (Snapdragon S4) 45 nm 2 1,2 - 1,5 GHz Adreno 305
Qualcomm MSM8260A (Snapdragon S4) 28 nm 2 1,5 - 1,7 GHz Adreno 225
Qualcomm MSM8x70 (Snapdragon S4) 28 nm 2 1,5 - 1,7 GHz Adreno 225
Qualcomm MSM8930 (Snapdragon S4) 28 nm 2 1 - 1,2 GHz Adreno 305
Qualcomm MSM8960 (Snapdragon S4) 28 nm 2 1,5 - 1,7 GHz Adreno 225
Qualcomm MSM8960 Pro (Snapdr. S4) 28 nm 2 1,5 - 1,7 GHz Adreno 320
Qualcomm MSM8930 (Snapdragon S5) 28 nm 1 1 - 1,2 GHz Adreno 305
Qualcomm MSM8974 (Snapdragon S5) 28 nm 4 2 - 2,5 GHz Adreno 320
TI OMAP3630 45 nm 1 800 MHz - 1,2 GHz PowerVR SGX530
TI OMAP4430 45 nm 2 1 GHz - 1,2 GHz PowerVR SGX540
TI OMAP4460 45 nm 2 1,2 GHz - 1,5 GHz PowerVR SGX540
TI OMAP4470 45 nm 2 1,5 GHz - 1,8 GHz PowerVR SGX544
TI OMAP5430/32 28 nm 2 2 GHz PowerVR SGX544MP2

Jelen írás első verziójában volt egy második táblázat is, melyben a különféle grafikus chipek adatait lehetett összehasonlítani, de ezt eltávolítottuk, mert a gyártók sajnos nem publikálnak minden adatot, így a számok kuszák lettek és nem könnyítették meg az összehasonlítást. Jelenleg is dolgozunk rajta, hogy egy átlátható, valós adatokat tartalmazó táblázat kerüljön a cikkbe, ha ez sikerül, akkor e sorok már nem lesznek olvashatók. A mobil grafikus chipek témakörében ajánljuk a Prohardver nemrég publikált, igen velős írását. Reméljük, hogy cikkünk sokaknak segített eligazodni a hardveres fogalmak tengerében és most már egyszerűbben megértik az SoC-k felépítését és az eszközök működését. A fenti táblázatokat az új megoldások piacra kerülésével igyekszünk majd bővíteni.

Bocha (némi Abu85 segítséggel, köszi!)

A cikk elkészítésében a T-Mobile 4G mobilinternet volt segítségünkre.

Azóta történt

Előzmények

Hirdetés