Skrivet av Fulci:
@Yoshman
Tack för jobbet att kolla upp och summera info. Intressant läsning. Det råder ingen tvekan om att Apple producerat en mycket bra CPU, vi får se när den kommer i deras bärbara. Sen blir det för de andra tillverkarna av ARM att komma ikapp, som Samsung och Qualcomm. Vi ser redan en Nvidia variant av ARM i nästa Switch modeller även om det inte finns så mycket tekniska fakta än. Sen har Nvidia sagt att de jobbar med ARM för kommande HPC-lösningar.
https://www.theverge.com/2019/6/17/18681783/nvidia-arm-cuda-c...
Oavsett det tror jag inte ARM är rätt val för stationära konsoler nu, det ger för lite skillnad i spelen för att vara värt ta bort bakåtkompatibiliteten. Vi får se om det ändrar sig än längre fram. Kanske gör Apple en ny avancerad Apple TV/IOS enhet som även blir spelkonsol.
OBS: ARM != ARM64. Detta är jätteviktigt i sammanhanget för det ARM visade med sin övergång till ARM64 var att det idag finns ett enormt tungt bagage som de CPU-arkitekturer man designade innan multi-core eran drar runt på. Ett bagage som inte kan slängas ut med mindre än att totalt paja bakåtkompatibilitet.
Jag tror inte heller 32-bitars ARM (Aarch32) är rätt val för high-end konsoler som PlayStation och Xbox inför nästa generation. Apples CPU är inte heller ett alternativ då de inte säljer den till andra.
Snabbaste Aarch32 modellen som existerar är Cortex A75. Den ligger en hyfsad bit efter Skylake/Zen2 i IPC, men är också betydligt enklare/mindre. Är fullt möjligt att skapa Aarch32 designer som matchar x86 i rå prestanda, men det är nog ungefär dit man kan nå. D.v.s. matcha x86.
Apple drog ifrån övriga ARM-designer rejält när de helt droppade stödet för Aarch32. Att stödja både Aarch32 och Aarch64 är mer komplicerat än att stödja x86 och x86_64. Aarch32 och Arch64 är två helt separata ISA, de är hyfsat snarlika på assemblernivå men de skiljer sig signifikant i faktisk kodning på bitnivå och i en rad kritiska detaljer. x86_64 är en ren utökning av x86, i stort sätt samma begränsningar samt ett par trevliga förbättringar.
Cortex A76 är första designen där ARMs design andra kan licensiera, bl.a. AMD som har en ARM-licens, där man droppat "native-stöd" för Aarch32 (OS-kärnan måste köra Aarch64, Aarch32 kan bara emuleras i applikationer). Precis som för Apple kunde man då ignorera allt bagage från Aarch32, det med samma resultat för IPC: ett enormt lyft.
Sett till GB4 presterar Kirin 980 (som använder 4 st Cortex A76 + 4 st Cortex A55) 14 % bättre jämfört med Zen2 i heltal vid samma frekvens.
D.v.s. redan förra årets ARM-design optimerad för mobiler (Kirin 980 har bara 4 MB L3$, storleken på L3$ är konfigurerbart) är snabbare än den high-end x86 design AMD precis släppt och som kommer hamna i nästa generations konsoler. Det betydligt att man ska jämföra mot Cortex A77 som väntas ligga ~20 % högre i IPC.
Gissningarna på frekvens för CPU i konsolerna ligger på strax över 3 GHz strecket, d.v.s. det skulle gå att klocka en Cortex A76/77 design lika högt då designen fungerar upp till 3,2-3,4 GHz någonstans.
Aarch64 är så brutalt mycket bättre designad jämfört med x86, så Cortex A76 når i stort samma IPC som Zen2/Skylake med brutalt färre transistorer. Här är en die-shot på Kirin 980, total area är 74,1 mm²
Storlek på cache + 4 st Cortex A76 + 4 st Cortex A55 är endast ~10 mm², i en konsol skulle kan självklart köra med 8 st Cortex A77, 16-32 MB L3$ samt 4 st A55 (dessa enbart för att slippa dedicera high-end CPUer för att köra systemet, något som idag tar bort en kärna från spelen i PS4/XBO).
Enbart de fyra Cortex A76 kärnorna tar <5 mm². Nu är Cortex A77 något större, åtta sådana tar ändå garanterat <15 mm². Ställ det mot Zen2 chiplets som ligger strax under 80 mm² på samma TSMC 7 nm process!!
Ser jag faktiskt bara nackdelar med att välja x86 inför nästa generation över ARM64 (Aarch64). Konsoler är rätt ordentligt begränsade av både ström och kretsarea (tillverkningskostnad). Realistiskt hade man fortfarande behövt en GPU från AMD, men det är inga problem alls att para en sådan med Cortex A kärnor. Speciellt inte då AMD redan har nödvändigt licens för detta.
Faktum är att det, givet hur det idag ser ut på GPU- och CPU-fronten nog hade varit fördelaktigt även för AMD. De hade fått en större andel av den FoU-budget Sony/Microsoft "ger" till AMD för utveckling av kretsar till konsoler mot GPU-sidan, d.v.s. där den just nu behövs i långt större utsträckning.
Vidare hade både mer ström och mer transistorer kunnat dedicerats till GPU-delen och ändå fått en CPU-del som presterat >30 % bättre (potentiellt mer än 30 % givet mycket större L3$ samt dedicerade kärnor för systemet) än man nu kommer få.
Men självklart betyder det merjobb för t.ex. Ubisoft och de anda speltillverkarna då de måste utveckla både för x86 (lär vara relevant på PC lång tid framöver) och ARM64 på konsol?
Absolut ett rungande nej på den. Redan idag måste man ändå göra ett speciellt bygge av programvaran för PC samt för varje konsol. De använder olika bibliotek. Spel är dock nästan uteslutande skrivna i C++ (delvis i C# om man kör Unity), så CPU-arkitektur är irrelevant. Framförallt givet att x86 och ARM/ARM64 båda använder samma byte-ordning (rent tekniskt stödjer ARM både big- och little-endian, men idag används nästan bara det senare och självklart skulle man välja det för en konsol just för x86/PC kör detta).
Visual Studio är den vanligaste utvecklingsplattformen, den stödjer x86, x86_64, ARM och ARM64. Så krävs bra att man väljer CPU-arkitektur och kompilerar om! (Även om jag personligen skulle köra LLVM för ARM64, VS/VS-code har båda officiellt stöd för att använda LLVM).
Inte ens bakåtkompatibilitet är ett speciellt bra argument. Är primärt GPU-delen som kan göra sådan lite hårigt, men om den levererades av AMD skulle de rätt mycket bara vara att kompilera om de spel från nuvarande generation man vill erbjuda på nästa. Att kompilera om i stället för att sikta på binärkompatibilitet är ett relativt litet merjobb, men ett merjobb som samtidigt betyder att man enkelt kan utnyttja all lågt hängande frukt i den nya plattformen för saker som mer stabil FPS, högre upplösning och/eller bättre AA etc.
Långt inlägg, men det förklarar nog i princip helt i detalj varför jag anser det är ett sådan trist misstag att man väljer en CPU-arkitektur som åter igen kommer leda till en konsolgeneration som i praktiken är en medioker spel-PC redan vid lansering