AMD patenterar hybriddesign – Ryzen med små och stora kärnor

Permalänk
Datavetare
Skrivet av SAFA:

Som jag läser artikeln så verkar det som AMD kommit på hur man kan låta hårdvaran fixa skeduleringen så att OS:et inte behöver bry sig.

Det är absolut en möjlighet att man tänker i de banorna. Frågan är om det är rätt väg...

I början av Arms big-little äventyr (BTW: Arm använder inte längre den termen, tekniken heter sedan år tillbaka DynamIQ och den är mer kapabel än big-little) hade man utmaningar med OS-stöd och vissa kretstillverkare valde därför olika lösningar på HW-nivå för att komma runt bristande OS-stöd. T.ex. så använde vissa ett par av en stor och en liten kärna för att göra en mer flexibel prestanda/effekt kurva per OS tråd.

Problemet med att göra sådant i HW är att HW vet mindre om vad som faktiskt körs på systemet än vad OS:et vet. big-little tekniken blev långt mer värdefull när man helt lyfte in stödet till OS.

Jag hoppas och tror att AMD inte riktigt jobbar på att ta över OS-kärnans jobb i HW. Det finns andra saker som man men fördel kan lyfta in i HW för att hjälpa OS-kärnan att göra rätt val. Ett sådant exempel är "speed-shift" i Skylake, en teknik som AMD också implementerat i Zen. Är fortfarande OS som avgör vilken "prestanda-nivå" man ska köra en viss kärna, men det är CPUn som sköter finliret kring exakt vilken frekvens som användas i läget där OS säger: vill ha maximal hastighet från den här kärnan. I det läget kan fortfarande frekvensen variera rätt mycket, det baserad på aktuell last hos kärnan, genom att styra det helt i HW kan man reagera långt snabbare på bursts av jobb än vad en OS-kärna kan.

Skrivet av cheben:

Dels termiska problem ja, färre "feta" kärnor gör att de som finns kan dissipera mer värme -> högre frekvenser som är bra för enkeltrådade applikationer. Men det finns även smarta tricks att ta till. Denna artikel var ganska intressant om hur apples M1 använder olika kärntyper för att upplevas rappare

https://arstechnica.com/gadgets/2021/05/apples-m1-is-a-fast-c...

Nu är den i och för sig inte lika intressant för ren spelprestanda (? kanske, inte helt säker), men för vardagsanvändning gör det tydligen skillnad

Vad Apple tidigt fattade är att OS-kärnan må vara den som måste agera general över HW, men en general kan bara ta riktigt bra beslut om det finns en riktigt bra förståelse vad som utspelas på slagfältets olika delar. Man behöver spaning!

Den som har absolut bäst kännedom om hur en viss applikation kan tänkas uppföra sig är inte OS, den kan bara reagera på historiskt beteende och ha en heuristik för att förutsäga framtiden. Applikationen kan rätt ofta veta i förväg vad den vill göra i framtiden!

Med Grand Central Dispatch (introducerades redan i Snow Leopard för över ett decennium sedan) gav man applikationer möjligheten att själva specificera vilken typ av last varje del av applikationen förväntar sig. Det är något som kan riktigt göra så big-little tekniken kan utnyttja sin fulla potential.

Det Ars skriver är så brutalt uppenbart när man använder en Windows PC mot en M1 MacOS PC sida vid sida. Har bl.a. en 5950X/3090 system och en M1 MacMini. Under "normal" interaktiv användning är dessa väldigt snarlika i respons, under "tung" last uppför de sig väldigt olika.

5950X systemet uppför sig som en typisk server, d.v.s. den är rätt kass på att hantera interaktiva uppgifter när systemet är rejält lastat (i vissa lägen faktiskt riktigt kass med rejäl lagg). Sett till throughput har man en massiv prestanda, sett till respons blir den direkt dålig under hög last.

M1 systemet har i princip samma svarstider när det är "idle" som när det är fullt lastat. Finns flera orsaker, men de två huvudpunkterna är att de stora kärnorna prioriteras just för att minimera svarstider samt de körs ju på samma frekvens oavsett last. På AMD/Intel system har man dels problemet att kärnorna klockar ned sig och ett ännu större problem är att SMT gör att prestanda per CPU-tråd / OS-tråd i praktiken mer än halveras under full last.