Okostelefonos SoC-határozó

A cikk elolvasása után 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.
Ezt a leírást azoknak szánjuk, 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.
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 rendszerekné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.
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 találhatják. A tudástár jelen pillanatra érvényes, természetesen ezen a területen is hihetetlen gyors a fejlődés.
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 |
A cikk sokaknak segíthet 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.
Forrás:Mobilaréna
blog comments powered by Disqus