Skrivet av sesese:
Nu när AMD och Intel har pengar så kommer utvecklingen gå mycket snabbare på X86 sidan. Intel kunde inte bli ensam tillverkare på X86 för då skulle plattformen dö. Så resan som AMD gjort gynnar Intel i längden. Snacket om byta till ARM är betydligt lägre idag än det var för 3år sedan. Idag har Intel har många fickor fulla med saker som inte är släppta ännu på grund av svårigheterna att komma över till 10nm. Jag tror att X86 servrar kommer se ett stort prestandalyft i prestanda/kärna framöver vilket kommer stänga många dörrar för ARM att komma in i servermiljön.
Fast hur kommer du till den slutsatsen?
Arm fick sig en rejäl (och faktiskt välförtjänt) snyting när man började prata om att utmana x86_64 med deras 32-bitars arkitektur.
32-bitars Arm är inte bättre än x86_64, den är bättre på vissa saker och sämre på andra. Båda dessa ISA har fundamentala problem i sin design som gör det väldigt svårt att bygga kretsar med riktigt hög prestanda per kärna. Vidare gjordes den offensiven i ett läge där hela server-världen redan var på god väg att helt migrera till 64-bit. 32-bitars Arm och x86_64 kan inte fixa dessa problem med mindre än att bryta bakåtkompatibiliteten, något som inte är realistiskt för någon av dessa ISA.
ARM64 och i teorin även RISC-V är i grunden designade specifikt för att komma runt de största flaskhalsarna man sett hos andra ISA för att skapa effektiva rejält "breda" designer. Apple utnyttjade detta rätt tidigt, men "ingen" insåg egentligen hur bra Apples CPUer blivit då de bara användes i telefoner och pekplattor.
Arm började en seriös serversatsning rätt sent, deras försa "riktiga" server-krets är Neoverse N1 som lanserades för ungefär två år sedan. Intel och AMD har fortfarande högre peak-prestanda än Neoverse N1, men till skillnad mot desktop där det faktiskt fungerar att klocka kretsar till 4,5-5,0 GHz fungerar inte det för servers när de faktiskt har lite last.
På serversidan kan inte AMD/Intel klocka högre än Arm, faktum är att Ampere Altra med 80 Neoverse N1 kärnor har något högre frekvens än AMD/Intels toppmodeller samtidigt som Neoverse N1 utför ungefär lika mycket som Zen2/Skylake per cykel. Tidigare i år lanserades andra generationen Neoverse N2 och V1, som förväntas klocka ungefär lika högt men ha 30 resp. 50 % högre IPC än Neoverse N1. Det når inte Apples nivå (M1 ligger 80-90 % högre per cykel jämfört med Zen2/Skylake), men det är högre än ens de mest passiva gissningarna ligger på kring var AMD/Intel kommer ligga under 2022 (Neoverse N2/V1 produkter väntas eventuellt Q4 2021 annars under 2022).
Arm når denna prestanda på väsentligt lägre transistorbudget jämfört med x86_64 kollegorna. Intel/AMD lär vara smärtsamt medvetna om hur mycket transistorer de är trycker in i sina designer för att nå rätt små IPC-ökningar. För 5-10 år sedan kunde de vifta bort Arm med att de trots allt var betydligt snabbare i absoluta termer, men vi ser nu att ARM64 designer inte bara matchade x86_64, de har gått förbi med råge.
Framförallt Apple, men även Arms Cortex X1 utför mer per cykel än något x86_64 gänget har, i bästa fall matchar Intel det med Golden Cove fast Cortex X2 är redan lanserad och kretsar baserad på den designen lär komma i slutet av året.
De största vinnarna om x86_64 tillslut ersätts med något designad den här sidan millenieskiftet (som bl.a. ger bättre prestanda i multicore samt bättre utväxling räknat per transistor) är vi kunder. Tyvärr är världen extremt beroende av x86_64 p.g.a. Windows hårda låsning till den ISA.
Ett riktigt talade exempel man kan designa fast sig i en viss ISA är .NET. Specifikationen för .NET har ingen som specifikt gör det bundet till x86_64, likt alla andra moderna ramverk/programspråk. Men när Microsoft mer seriöst började jobba med ARM32/ARM64 stöd för .NET insåg man att allt för många viktiga ramverk innehöll buggar som "råkar" fungera korrekt på x86_64, men som är buggar om man går efter .NET-spec:en och det blir verkligen buggar på ARM64, RISC-V, PowerPC ja egentligen all utom x86 och SPARC (båda råkar fungera lika på just punkten som orsakar problemet).
Nu är det inte hela världen, Microsoft har gjort en workaround som gör att .NET program fungerar korrekt även på ARM64. Tyvärr kostar det prestanda i vissa lägen.