ARM big.LITTLE - ARM big.LITTLE

Cortex A57 / A53 MPCore mare.Cip CPU LITTLE

ARM big.LITTLE este o arhitectură de calcul eterogenă dezvoltată de ARM Holdings , cuplând nucleele procesorului cu economie relativă de baterie și cele mai lente ( LITTLE ) cu cele relativ mai puternice și cu energie mai mare ( mare ). De obicei, doar o „parte” sau cealaltă va fi activă simultan, dar toate nucleele au acces la aceleași regiuni de memorie, astfel încât încărcăturile de lucru pot fi schimbate între nucleele mari și cele mici din mers. Intenția este de a crea un procesor multi-core care să se poată adapta mai bine la nevoile de calcul dinamic și să utilizeze mai puțină energie decât scalarea ceasului singur. Materialul de marketing al ARM promite economii de până la 75% în consumul de energie pentru unele activități. Cel mai frecvent, arhitecturile ARM big.LITTLE sunt utilizate pentru a crea un sistem multi-procesor pe cip (MPSoC).

În octombrie 2011, big.LITTLE a fost anunțat împreună cu Cortex-A7 , care a fost conceput pentru a fi compatibil din punct de vedere arhitectural cu Cortex-A15 . În octombrie 2012, ARM a anunțat nucleele Cortex-A53 și Cortex-A57 ( ARMv8-A ), care sunt, de asemenea, intercompatibile pentru a permite utilizarea lor într-un cip mare.LITTLE. ARM a anunțat ulterior Cortex-A12 la Computex 2013 urmat de Cortex-A17 în februarie 2014. Atât Cortex-A12, cât și Cortex-A17 pot fi, de asemenea, asociate într-o configurație mare.LITTLE cu Cortex-A7.

Problema pe care big.LITTLE o rezolvă

Pentru o bibliotecă dată de logică CMOS , puterea activă crește pe măsură ce logica comută mai mult pe secundă, în timp ce scurgerile cresc cu numărul de tranzistoare. Deci, CPU-urile concepute pentru a rula rapid sunt diferite de CPU-urile concepute pentru a economisi energie. Atunci când un procesor foarte repede în stare de funcționare este la ralanti la viteze foarte mici, un procesor cu scurgeri mult mai puține (mai puține tranzistoare) ar putea face aceeași lucrare. De exemplu, ar putea utiliza o memorie cache mai mică (mai puține tranzistoare) sau o microarhitectură mai simplă, cum ar fi o conductă . big.LITTLE este o modalitate de optimizare pentru ambele cazuri: putere și viteză, în același sistem.

În practică, un sistem mare.PICI poate fi surprinzător de inflexibil. O problemă este numărul și tipurile de domenii de alimentare și de ceas pe care le oferă IC. Este posibil ca acestea să nu se potrivească cu funcțiile standard de gestionare a energiei oferite de un sistem de operare. Un alt lucru este că CPU-urile nu mai au abilități echivalente, iar potrivirea sarcinii software potrivite cu CPU-ul potrivit devine mai dificilă. Majoritatea acestor probleme sunt rezolvate prin flexibilizarea electronicii și a software-ului.

Migrarea în stare de rulare

Există trei moduri în care diferitele nuclee ale procesorului pot fi aranjate într-un design mare.LITTLE, în funcție de planificatorul implementat în kernel .

Comutare în grup

Comutare mică

Abordarea modelului grupat este prima și cea mai simplă implementare, aranjând procesorul în clustere de dimensiuni identice de nuclee „mari” sau „MICI”. Planificatorul sistemului de operare poate vedea doar un cluster la un moment dat; când încărcarea pe întregul procesor se schimbă între scăzută și înaltă, sistemul trece la celălalt cluster. Toate datele relevante sunt apoi trecute prin memoria cache L2 comună , clusterul activ activ este oprit și celălalt este activat. Se utilizează o interconectare coerentă cache (CCI). Acest model a fost implementat în Samsung Exynos 5 Octa (5410).

Switcher în kernel (migrare CPU)

Micul comutator din nucleu

Migrarea procesorului prin comutatorul in-kernel (IKS) implică asocierea unui nucleu „mare” cu un nucleu „LITTLE”, cu multe perechi identice într-un singur cip. Fiecare pereche funcționează ca un așa-numit nucleu virtual și doar un singur nucleu real este alimentat (complet) și funcționează odată. Nucleul „mare” este utilizat atunci când cererea este mare, iar nucleul „MIC” este utilizat atunci când cererea este scăzută. Când cererea pentru nucleul virtual se schimbă (între mare și scăzut), nucleul de intrare este pornit, starea de rulare este transferată , ieșirea este oprită și procesarea continuă pe noul nucleu. Comutarea se face prin cadrul cpufreq . O implementare completă.LITTLE IKS a fost adăugată în Linux 3.11. big.LITTLE IKS este o îmbunătățire a migrării clusterelor ( § Comutare clusterizată ), diferența principală fiind că fiecare pereche este vizibilă pentru planificator.

Un aranjament mai complex implică o grupare nesimetrică a nucleelor ​​„mari” și „MICI”. Un singur chip ar putea avea unul sau două nuclee „mari” și multe alte nuclee „MICI”, sau invers. Nvidia a creat ceva asemănător cu acest „nucleu însoțitor” de putere redusă în Tegra 3 System-on-Chip .

Multi-procesare eterogenă (programare globală a sarcinilor)

Mare.Procesare multiplă eterogenă mică

Cel mai puternic model de utilizare a arhitecturii big.LITTLE este Heterogeneous Multi-Processing (HMP), care permite utilizarea tuturor nucleelor ​​fizice în același timp. Firele cu prioritate ridicată sau intensitate de calcul pot fi alocate în acest caz nucleelor ​​„mari” în timp ce firele cu prioritate mai mică sau intensitate de calcul mai mică, cum ar fi sarcinile de fundal, pot fi realizate de nucleele „LITTLE”.

Acest model a fost implementat în Samsung Exynos începând cu seria Exynos 5 Octa (5420, 5422, 5430) și procesoarele din seria Apple A începând cu Apple A11 .

Programare

Aranjamentul asociat permite comutarea să se facă în mod transparent la sistemul de operare utilizând facilitatea de tensiune dinamică și frecvență (DVFS) existentă. Suportul DVFS existent în kernel (de exemplu cpufreqîn Linux) va vedea pur și simplu o listă de frecvențe / tensiuni și va comuta între ele după cum consideră potrivit, la fel ca pe hardware-ul existent. Cu toate acestea, sloturile low-end vor activa nucleul „Little”, iar sloturile high-end vor activa nucleul „Big”. Aceasta este soluția timpurie oferită de programatorul de CPU „termen” al Linux (care nu trebuie confundat cu programatorul I / O cu același nume) din 2012.

Alternativ, toate nucleele pot fi expuse planificatorului kernel , care va decide unde se execută fiecare proces / fir. Acest lucru va fi necesar pentru aranjamentul care nu este asociat, dar poate fi folosit și pe nucleele asociat. Pune probleme unice pentru programatorul de kernel, care, cel puțin cu hardware-ul modern de marfă, a reușit să presupună că toate nucleele dintr-un sistem SMP sunt mai degrabă egale decât eterogene . O adăugire din 2019 la Linux 5.0 numită Energy Aware Scheduling este un exemplu de planificator care consideră nucleele diferit.

Avantajele programării globale a sarcinilor

  • Control mai fin al sarcinilor de lucru care sunt migrate între nuclee. Deoarece planificatorul migrează în mod direct sarcini între nuclee, cheltuielile cu nucleul sunt reduse și economiile de energie pot fi crescute în mod corespunzător.
  • Implementarea în planificator face, de asemenea, deciziile de comutare mai rapide decât în ​​cadrul cpufreq implementat în IKS.
  • Capacitatea de a suporta cu ușurință clustere nesimetrice (de exemplu, cu 2 nuclee Cortex-A15 și 4 nuclee Cortex-A7).
  • Capacitatea de a utiliza toate nucleele simultan pentru a oferi performanțe de vârf îmbunătățite ale SoC în comparație cu IKS.

Succesor

În mai 2017, ARM a anunțat DynamIQ ca succesor al big.LITTLE. Se așteaptă ca DynamIQ să permită mai multă flexibilitate și scalabilitate atunci când proiectează procesoare multi-core. Spre deosebire de big. Tehnologia oferă, de asemenea, un control mai bun al tensiunii pe nucleu și viteze mai mari de cache L2. Cu toate acestea, DynamIQ este incompatibil cu proiectele ARM anterioare și este inițial acceptat doar de nucleele procesorului Cortex-A75 și Cortex-A55 .

Referințe

Lecturi suplimentare

linkuri externe