Ubisoft presenterar kvartalsrapport – PC/Windows går om PS4 i intäkter

Trädvy Permalänk
Medlem
Registrerad
Jun 2003
Skrivet av Yoshman:

ARM64 i stället för x86 känns som en självklarhet för något som en konsol idag. Apples ARM-design har 40-50 % högre IPC jämfört med Zen2/Skylake. ARMs mer budgete-orienterade Cortex A76 har ungefär samma IPC som Zen2/Skylake, det med väsentligt färre transistorer och klart bättre perf/W.

Jag googlade en del för att hitta artiklar som stödjer 40-50% högre IPC än Zen2/Skylake. Hittade inga träffar på det trots flera försök, så undrar lite var du får 40-50% bättre IPC någonstans. Helst inte baserade på specifika syntetiska benchmarks som bara representerar en liten del av normalt arbete av en CPU. Jag är rätt kass på att googla dock, så kanske missat det, ursäkta mig i så fall.

Fann dock en artikel som diskuterar ARM framtåg och prestanda jämfört med x86.
https://reveried.com/article/arm-processors-nearing-performan...

Där jämförs Spec2006 mellan Apple A12X (Ipad Pro) och Intel 6700K. Då ska man tänka på att A12X är en 7nm CPU från hösten 2018 och 6700K är en 14nm CPU från 2015.

"Compared to the top-of-the-line consumer desktop CPU from a few years ago, the A12X performs 20% worse on average in the various SPECint2006 benchmarks, a figure which almost sounds like I’ve produced evidence that doesn’t support my argument. But it achieves this result while being clocked 40% lower, while using a fraction of the power, and with absolutely zero active cooling. "

Om man multiplicerar prestandan för A12X med skillnaden i klockfrekvens blir det 12% högre prestanda vid samma klockfrekvens. Förutsatt helt linjär skalning. Jag bortser också från skillnad i kylning eftersom det inte är jätteviktigt i en stationär konsol som Xbox eller PS. Man får tänka på att en A12X med 40% högre klockning som belastas hårt konstant under timmmar kommer att behöva någon form av kylning.

Sen kan knappast Microsoft eller Sony använda en Apple-baserad CPU i sin konsol, utan de får nöja sig med vad andra kan göra får ARM-baserad CPU i så fall.

Trädvy Permalänk
Datavetare
Plats
Stockholm
Registrerad
Jun 2011
Skrivet av Fulci:

Du ser det fortfarande enbart från ett tekniskt ideologiskt perspektiv och tar inte med några andra faktorer i bilden som jag gjorde.

Om nu IPC är 40-50% högre hos Apple ARM, varför har vi inte redan Apples ARM i deras bärbara och stationära datorer? Det var betydligt mindre faktorer som gjorde att Apple bytte från PowerPC till x86-64. Det har ryktats om att ett generationsskfite är på gång, men det verkar dröja vidare.

Av allt att döma kommer Apple Mac:ar byta till deras ARM CPUer under nästa år. Om de man tror är läckta Geekbench 4 resultat från den CPU stämmer kommer nästa års MBP spöa desktop x86 i absolut prestanda per CPU-tråd!

Skrivet av Fulci:

Jag googlade en del för att hitta artiklar som stödjer 40-50% högre IPC än Zen2/Skylake. Hittade inga träffar på det trots flera försök, så undrar lite var du får 40-50% bättre IPC någonstans. Helst inte baserade på specifika syntetiska benchmarks som bara representerar en liten del av normalt arbete av en CPU. Jag är rätt kass på att googla dock, så kanske missat det, ursäkta mig i så fall.

Fann dock en artikel som diskuterar ARM framtåg och prestanda jämfört med x86.
https://reveried.com/article/arm-processors-nearing-performan...

Där jämförs Spec2006 mellan Apple A12X (Ipad Pro) och Intel 6700K. Då ska man tänka på att A12X är en 7nm CPU från hösten 2018 och 6700K är en 14nm CPU från 2015.

"Compared to the top-of-the-line consumer desktop CPU from a few years ago, the A12X performs 20% worse on average in the various SPECint2006 benchmarks, a figure which almost sounds like I’ve produced evidence that doesn’t support my argument. But it achieves this result while being clocked 40% lower, while using a fraction of the power, and with absolutely zero active cooling. "

Om man multiplicerar prestandan för A12X med skillnaden i klockfrekvens blir det 12% högre prestanda vid samma klockfrekvens. Förutsatt helt linjär skalning. Jag bortser också från skillnad i kylning eftersom det inte är jätteviktigt i en stationär konsol som Xbox eller PS. Man får tänka på att en A12X med 40% högre klockning som belastas hårt konstant under timmmar kommer att behöva någon form av kylning.

Sen kan knappast Microsoft eller Sony använda en Apple-baserad CPU i sin konsol, utan de får nöja sig med vad andra kan göra får ARM-baserad CPU i så fall.

Är lite svårt att hitta direkta jämförelser mellan Apples ARM (iOS) och x86 (Windows/Linux/MacOS). Det jag refererade till var GB4 resultaten, där är det ~40-50 % fördel Apple.

Men låt oss använda SpecInt2006 då du tog upp det. Länken du postar har en del rejäla grodor, men de kan redas ut. Största grodan är denna

"I've picked the i7 6700k to compare the A12X with in this scenario. It’s the most recent and fastest i7 in the official SPEC2006 database, so in honesty, it's the only option. But since SPEC2006 is a single-core benchmark, core count changes in recent generations aren’t that relevant, and Intel haven’t improved IPC in a few generations, the results will still be quite relevant compared to using the 8700k. The iPad Pro results have been pulled from Anandtech’s review of the iPad Pro. The i7 results have been pulled directly from the SPEC2006 website."

Det fetmarkerade visar att den som skrivit artikeln har rätt dålig koll på hur man kan göra vettiga jämförelser mellan olika SPEC körningar, vad han gör där är äpplen mot päron.

Som tur är använder artikeln AnandTech som referens. Låt oss också göra detta då AnandTech kört just SpecInt2006 både på x86 och ARM64 under jämförbara förhållanden (d.v.s. med samma kompilator-familj, samma optimeringar etc).

Nästa problem är att x86 resultaten presenterar alla delresultaten medan ARM resultaten är "SPECInt2006 base". Men man kan räkna ut den senare från delresultaten.

"Each ratio is computed, and then the geometric mean of those ratios is computed to produce an overall value. "

Geometrisk medelvärde för Xeon 8176@3.8 resultaten är 41,67.

IPC-fördel för A12 (som har maximal turbo på 2,5 GHz, använder det som frekvens för att i alla fall inte överskatta IPC) är då

45,96 (resultat för A12, notera det är i absoluta termer högre än Xeon 8176) / 41,67 (resultat Xeon 8176) = 10 %

Så A12 är 10 % snabbare redan innan vi kompenserar för skillnad i frekvens.

IPC fördel = 10 % * 3,8 / 2,5 = 64 %

Så med SpecInt2006 som måttstock har A12 faktiskt hela 67 % högre IPC jämfört med Skylake SP.

Använder vi SweC GB4 resultat från Ryzen 3000 när x86 CPUer körs i 2,8 GHz får man detta

IPC-fördel(A12 över 9900K) = 5344 (Integer score för A12 @ 2,5 GHz) / 3623 (Integer score 9900K @ 2,8 GHz) * 2,8 / 2,5 = 65 %

65 % för heltal enligt GB4.

Och för flyttal

IPC-fördel(A12 över 9900K) = 4574 (Integer score för A12 @ 2,5 GHz) / 3462 (Integer score 9900K @ 2,8 GHz) * 2,8 / 2,5 = 48 %

48 % i flyttal enligt GB4.

För spel är heltalsprestanda långt viktare än flyttalsprestanda. Flyttalsberäkningar förekommer absolut i spel, men det är primärt på GPU-sidan, det lilla som händer på CPU-sidan är ingen relevant flaskhals. Så mina 40-50 % var (medvetet) konservativa, just då det finns lite tunt med jämförelser.

Jobbar väldigt mycket med ARM då jag håller på med OS-utveckling för inbyggda system, så har rätt bra koll på hur ARM Cortex A står sig mot x86 (ARM är vår klart viktigaste plattform, med x86 som klar tvåa). (PowerPC är 3:a, fast med klar nedåtgående trend, vi har precis börjat jobba med RISC-V, en plattform jag hoppar väldigt mycket på!!!).

Tror Intel/AMD får det svettigt när Apple lanserar sin MBP-serie med deras ARM-CPU. För oss som behöver mycket CPU-kraft, framförallt maximal kraft per CPU-tråd, kommer ju Apple antagligen bli det självklara valet framöver. Håller tummarna att Qualcomms 8cx blir en lysande plattform för Windows/Linux så man har lite alternativ!

edit: fixade länk till Qualcomm 8cx

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Trädvy Permalänk
Medlem
Registrerad
Jun 2003

@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.

Trädvy Permalänk
Datavetare
Plats
Stockholm
Registrerad
Jun 2011
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

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer