ARM big.LITTLE
From Wikipedia, the free encyclopedia
Remove ads
Remove ads
Az ARM big.LITTLE egy az ARM Holdings által fejlesztett heterogén számítástechnikai architektúra, melyben (viszonylag) lassabb, kisebb fogyasztású processzor magokat (viszonylag) hatékonyabb és energiaigényesebb magokkal párosítanak. A szándék egy olyan többmagos processzor létrehozására irányul, amely jobban képes alkalmazkodni a dinamikus számítási igényekhez és kevesebbet fogyaszt, mint ami egyedül az órajel skálázásával elérhető.
2011 októberében a big.LITTLE architektúrát az ARM Cortex-A7 maggal együtt jelentették be, amelyet felépítésében eleve a Cortex-A15-tel kompatibilisnek terveztek.[1] 2012 októberében az ARM bejelentette a Cortex-A53 és Cortex-A57 (ARMv8-A) magokat, amelyek szintén kompatibilisek egymással és együtt használhatók egy big.LITTLE csipben.[2] Az ARM később bejelentette a Cortex-A12 magot is a Computex 2013 rendezvényen, amelyet a Cortex-A17 bejelentése követett 2014 februárjában, ez a kettő szintén párosítható egy big.LITTLE konfigurációban a Cortex-A7 típusú maggal.[3][4]
Remove ads
Végrehajtási állapot-migráció
A különböző processzormagokat három módon lehet[5] egy big.LITTLE kialakításban elrendezni, a kernelben megvalósított ütemezőtől függően.[6] Mindegyikben az ütemező átkapcsolhat a lassabb és gyorsabb magok között, tetszőleges irányban, a teljesítmény optimalizálása végett. Az átkapcsolás során a különböző sebességű processzormagok között át kell adni a teljes futási környezetet, ezt nevezik a végrehajtási vagy futási állapot migrációjának.
Klaszterezett kapcsolás
A klaszteres modell megközelítés az első és legegyszerűbb megvalósítás, amelyben a processzort egyenlő méretű, „big” vagy „LITTLE” magokat tartalmazó klaszterekbe sorolják. Az operációs rendszer ütemezője egyszerre csak egy klasztert lát; mikor a teljes processzor terhelése átlépi az alacsony és magas szintek közötti határt, akkor a rendszer klasztert vált. Minden releváns adat átadódik a közös L2 gyorsítótáron keresztül, az egyik mag-klaszter kikapcsol, a másik aktiválódik. Ebben a rendszerben Cache Coherent Interconnect (CCI) összekapcsolást alkalmaznak. Ezt a modellt implementálták pl. a Samsung Exynos 5 Octa (5410) egylapkás rendszerében.[7]
In-kernel switcher (CPU migráció)

Az in-kernel switcher (IKS, kernelbeli átkapcsoló) módszerrel történő CPU migráció előfeltétele a magok megfelelő elrendezése; ilyenkor egy „big” mag egy „LITTLE” maggal van párosítva, és a csipen sok ilyen azonos páros kialakítására van lehetőség. Minden pár egy virtuális magként működik, és a működés alatt egy valódi mag van (teljesen) bekapcsolva és csak ez az egy mag fut egy időben. A „big” mag fut nagy terhelés esetén, és a „LITTLE” mag, mikor a terhelés alacsony. Mikor a virtuális mag terhelése megváltozik (a magas és alacsony között), akkor a belépő mag bekapcsol, a futási állapot átadódik, a kilépő mag lekapcsolódik, és a feldolgozás az új magban folytatódik. Az átváltás a cpufreq keretrendszer segítségével történik. A Linux 3.11-hez egy teljes big.LITTLE IKS implementáció lett hozzáadva. A big.LITTLE IKS egy jelentős előrelépés a klaszteres migrációhoz képest, a fő különbség abban áll, hogy ebben minden pár külön látható / elérhető az ütemező számára.
Az összetettebb elrendezés együtt jár a „big” és „LITTLE” magok nemszimmetrikus csoportosításával. Egyetlen lapkán egy vagy több „big” mag és sokkal több „LITTLE” mag is elhelyezhető, vagy fordítva. Az Nvidia ehhez hasonló rendszert alkotott a kis fogyasztású „kísérő mag” (companion core) beépítésével a Tegra 3 egylapkás rendszerébe.
Heterogén multiprocesszálás (globális feladatütemezés)

A big.LITTLE leghatékonyabb használati modellje a heterogén multiprocesszálás (MP), amely lehetővé teszi az összes fizikai mag egyidejű használatát. A magas prioritású vagy nagy számítási teljesítményt igénylő szálak ebben az esetben a „big” magokhoz rendelhetők, míg az alacsonyabb prioritású vagy kisebb intenzitásigényű szálak, mint például a háttérfeladatok, a „LITTLE” magokkal hajthatók végre.[8]
A Linux kernel fővonalába már beépítették az upstream big.LITTLE GTS patcheket, a Linux 3.10-től kezdve. Ezt a modellt alkalmazzák a Samsung Exynos 5 Octa (5420, 5422, 5430) és Hexa (5260) csipekben.[9][10]
Remove ads
Az ütemezés
A páros elrendezés lehetővé teszi az operációs rendszer számára átlátszó átkapcsolást a már létező dinamikus feszültség és frekvenciaváltó eszköz (DVFS) használatával. A létező DVFS támogatás a kernelben (pl. a cpufreq a Linuxban) egyszerűen egy frekvencia- és feszültséglistát lát és ezek fokozatai között kapcsol át belátása szerint, pontosan úgy, ahogy a létező hardveren teszi. Ekkor azonban az alacsonyabb szintű foglalatok a „LITTLE”, a magasabb szintűek pedig a „big” magokat aktiválják.
Alternatív megoldásként az összes mag láthatóvá tehető a kernel ütemező számára, amely eldönti, hogy melyik szál vagy folyamat melyik magnak lesz kiosztva. Ez szükséges a nem párosított elrendezésekben, de a párosított magokkal is használható. Ez egyedi problémákat állít a kernel ütemezője elé, amelyben eddig azt feltételezték, legalábbis a modern tömegcikk-hardverek körében, hogy az SMP rendszerben minden mag egyenrangú (azonos).
Remove ads
A globális feladatütemezés előnyei
- A terhelés finomabb felbontásban történő vezérlése, mint ami a magok között migrálható. Mivel az ütemező közvetlenül migrálja a feladatokat a magok között, a kernel többletterhelése csökken és az energiamegtakarítás ennek megfelelően növekszik.
- Az ütemezőben való megvalósítás miatt az átváltási döntések végrehajtása gyorsabb, mint az IKS-hez kialakított cpufreq keretrendszerben.
- Lehetőség nyílik a nem-szimmetrikus egycsipes rendszerek (SoC-k) könnyű támogatására (pl. 2 Cortex-A15 mag és 4 Cortex-A7 mag egy rendszerben).
- Az összes mag egyidejű használatának lehetősége javítja az egylapkás rendszer teljes adatátviteli sebességét, tehát a csúcsteljesítményt, az IKS-sel összehasonlítva.
Implementációk
Remove ads
Jegyzetek
Források
Fordítás
További információk
Kapcsolódó szócikkek
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads