Mine sisu juurde

ARM big.LITTLE

Allikas: Vikipeedia

ARM big.LITTLE on Arm Holdings poolt arendatav protsessori arhitektuur, kus kombineeritakse energiasäästlikumad ja aeglasemad tuumad (LITTLE) suurema jõudluse ja energiatarbega tuumadega (big). Kusjuures mõlemat tüüpi tuumad kasutavad sama käsustikku.[1]

big.LITTLE avalikustati esmakordselt 2011.a oktoobris koos Cortex-A7 ja Cortex-A15 protsessoritega, mis on omavahel ühilduvad big.LITTLE konfiguratsioonis, kus Cortex-A7 on "LITTLE" rollis ja Cortex-A15 "big" rollis.[2][3]

big.LITTLE proovib saavutada korraga nii maksimaalset jõudlust kui ka energiasäästilkust ja pikka aku kestust. Selleks kasutatakse "suurt" suure jõudlusega protsessorit nõudlike ülesannete jaoks ja "väikest" energiatõhusat protsessorit lihtsamate käskude (nt. taustaprotsessid) täitmiseks.

"Väiksed" tuumad on valmistatud kasutades erinevat mikroarhitektuuri, mis tähendab, et tänu oma lihtsamale disainile on need tuumad energiasäästlikumad.[4]

Võimalikud mudelid

[muuda | muuda lähteteksti]

Cluster migration

[muuda | muuda lähteteksti]
Big.LITTLE cluster migration

Tuumad on jagatud kahte klastrisse, üks klaster koosneb "suurtest" tuumadest ning teine "väikestest" tuumadest. Korraga saab aktiivne olla ainult üks klaster, s.t. et korraga ei saa töötada nii "suured" kui ka "väiksed" tuumad.

Koormuse muutumise korral, kas madalast kõrgesse või kõrgest madalaks, edastatakse protsessid ühest klastrist teise ning esimene lülitatakse välja. Antud mudel on ebaefektiivne, kui "väikeste" tuumadega klastri ühel tuumal on kõrge koormus, kuid teised klastri tuumad on madala koormusega olekus. Ebaefektiivsus kulgeb selles, et antud olukorras võidakse energiasäästlikum klaster välja lülitada ning töö üle viia suurema jõudluse ja energiatarbega klastri peale.[5][6]

Big.LITTLE CPU migration

CPU migration

[muuda | muuda lähteteksti]

Iga "suur" tuum on paaris "väikse" tuumaga, mõlemaid tüüpi tuumasid peab sama kogus olema. Korraga saab aktiivne olla ainult üks tuum iga paari kohta, ehk maksimaalselt saavad aktiivsed olla ainult pooled tuumadest.

Süsteem jälgib iga tuuma koormust ja valib aktiivse tuuma vastavalt jõudluse vajadusele. Koormuse languse (kõrgelt madalaks) korral protsessi olek edastatakse "suurelt" tuumalt "väiksele" ning koormuse tõusu korral vastupidi. Seejärel protsessid jätkuvad uuel tuumal ja mitteaktiivne tuum lülitatakse välja.[1][5][7]

Big.LITTLE global task scheduling

Global task scheduling

[muuda | muuda lähteteksti]

Võimaldab kõikide tuumade üheaegset kasutamist ning tuumasid on võimalik korraga kasutada igas kombinatsioonis. "Suuri" ja "väikseid" tuumasid võib olla erinev kogus.

Mitteaktiivsed tuumad lülitatakse välja energia säästmiseks. Kui kõik tuumad klastris on väljalülitatud, lülitatakse ka klaster välja.[1][5]

Ressursijaotus

[muuda | muuda lähteteksti]

Selleks, et süsteem saaks määrata, millised ülesanded on intensiivsed ja millised on kerged, jälgib plaanur iga lõime kaalutud keskmist koormust lõime kasutusel olnud aja jooksul. Kuna koormus on kaalutud, siis viimase ülesande värskeim koormus mõjutab keskmise arvutusi kõige rohkem.

Mõõdetud keskmist kasutatakse, et otsustada kuidas ja millal allokeerida lõime "suurele" või "väiksele" tuumale. Selleks on kaks lävendit: üles migreerimine ja alla migreerimine.

Ressursijaotuseks, global task scheduling mudeli puhul, on kasutusel järgmised meetodid:

Fork migration

[muuda | muuda lähteteksti]

Kasutatakse, kui luuakse uus lõim. Sel hetkel puudub varasema koormuse andmed. Süsteem allokeerib lõime vaikimisi "suurele" tuumale, eeldusel et väikse koormuse korral lõim migreeritakse kiiresti "väiksele" tuumale.

Sellest meetodist saab kasu suure koormusega ülesanded, sest nad ei kaota jõudlust erinevalt, kui nad oleksid vaikimisi käivitatud "väiksel" tuumal.[1]

Wake migration

[muuda | muuda lähteteksti]

Kui ülesanne, mis oli eelnevalt mitteaktiivne, on valmis tegutsema, peab jaotur otsustama milline tuum teostab selle täitmise. Valiku tegemiseks kasutab jaotur ülesande koormuse ajalugu. Kuna koormuse keskmist ei uuendata hetkel, kui ülesannet ei täideta, siis koormuse keskmine on sama, mis oli hetkel, kui käsku viimati täideti. Sel põhjusel üldiselt ülesande täitmine jätkub sama tüüpi tuuma peal, eeldusel et ülesande koormus ei muutu kohe.[1]

Forced migration

[muuda | muuda lähteteksti]

See meetod lahendab probleemi, mis tekib pika elueaga lõimedega, mis ei satu unerežiimi väga sageli. Isegi kui koormus püsib sama, siis kaalutud koormuse väärtus tõuseb ajas. Kui kaalutud keskmine ületab üles migreerimise lävendit, siis ülesanne edastatakse "suurele" tuumale.[1]

Idle pull migration

[muuda | muuda lähteteksti]

See meetod on loodud aktiivsete "suurte" tuumade parimaks kasutamiseks. Kui "suurel" tuumal pole ülesannet, mida täita, siis kontrollitakse kõiki "väikseid" tuumasid, et teada saada, kas ühelgi tuumal täidetav ülesanne ületab üles migreerimise lävendit. Vastava ülesande leidmisel see edastatakse mitteaktiivsele "suurele tuumale", vastasel juhul "suur" tuum lülitatakse välja.[1]

Offload migration

[muuda | muuda lähteteksti]

Pika elueaga lõimed kasutavad "suuri" tuumasid, jättes "väiksed" tuumad mitteaktiivseks. Selleks perioodiliselt edastatakse lõimesid allapoole "väikestele" tuumadele, et vähendada kasutamata ressursse. Kui alla edastatud lõimed ületavad üles migreerimise lävendit, võidakse nad tagasi üles migreerida.[1]

DynamIQ big.LITTLE

[muuda | muuda lähteteksti]

2017.a mais avalikustati DynamIQ arhitektuur, mis on big.LITTLE arhitektuuri järeltulija. DynamIQ suurendab mitmetuumalisuse funktsionaalsust ning paindlikkust, samal ajal lubab veelgi suuremat energiatõhusust ja jõudlust.

DynamIQ kombineerib "suured" ja "väiksed" tuumad üheks klastriks, võrreldes big.LITTLE arhitektuuriga, kus "suured" ja "väiksed" tuumad olid eraldi klastrites. See kiirendab andmete liikumist "suurte" ja "väikeste" tuumade vahel. Juurde lisandub ka uusi konfiguratsiooni kombinatsioone, nagu näiteks 1 "suur" + 3 "väikest" tuuma ja 1 "suur" + 7 "väikest" tuuma. DynamIQ suurendab maksimaalse tuumade arvu klastri kohta Armv9.2 puhul 14-ne tuumani, võrreldes big.LITTLE 4 tuuma piiranguga. Igal tuumal on oma L2 vahemälu ning klastril on jagatud L3 vahemälu. Kõik ülesannete üleminekud ja andmete jagamised "suurte" ja "väikeste" tuumade vahel toimuvad nüüd klastri sees läbi L3 vahemälu.[8]

DynamIQ võimaldab igal tuumal kasutada erinevat taktsagedust, võrreldes big.LITTLE arhitektuuriga, kus klastris kõikidel tuumadel oli üks ja sama taktsagedus. DynamIQ süsteemid lülituvad kiiremini protsessori võimsuse olekute vahel (nt. sisselülitatud, väljalülitatud). Lisaks on veel autonoomne mäluhalduse funktsioon, mis võimaldab L3 vahemälu osasid välja lülitada, et vähendada lekkevoolu, kui mälu pole kasutusel. Mälu on võimalik välja lülitada 0%, 50% ja 100% ulatuses.[9][10]

  1. 1 2 3 4 5 6 7 8 "big.LITTLE Technology: The Future of Mobile" (PDF). Vaadatud 22. aprillil 2025.
  2. "The Top 5 Things to Know about Cortex-A7 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com (inglise). 1. november 2013. Vaadatud 18. aprillil 2025.
  3. Wright, Arol (22. september 2021). "What Is the big.LITTLE Architecture?". MUO (inglise). Vaadatud 18. aprillil 2025.
  4. "Ten Things to Know About big.LITTLE - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com (inglise). 11. september 2013. Vaadatud 22. aprillil 2025.
  5. 1 2 3 "Tech Explained - ARM big.LITTLE Processing". HEXUS. 24. oktoober 2013. Vaadatud 22. aprillil 2025.
  6. "Power Management with big.LITTLE: A technical overview - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com (inglise). 11. september 2013. Vaadatud 1. mail 2025.
  7. "Software Techniques for ARM big.LITTLE Systems" (PDF). Vaadatud 22. aprillil 2025.
  8. Ltd, Arm. "DynamIQ: Revolutionizing Multicore Computing". Arm | The Architecture for the Digital World (inglise). Vaadatud 29. aprillil 2025.
  9. "Arm® DynamIQ™ Shared Unit-120". Lk 61. Vaadatud 29. aprillil 2025.
  10. "Where does big.LITTLE fit in the world of DynamIQ? - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com (inglise). 6. aprill 2017. Vaadatud 28. aprillil 2025.