Är ju rena gissningar innan vi har någon som faktiskt implementerar något med effektbudget i nivå med x86. Min gissning är ändå att det inte kommer vara en så dramatisk vinst som 2-3 gånger, 30-60 % är kanske mer realistiskt.
Hur extremt icke-linjär effekt/prestanda skalar är ser vi rätt bra hos Intel när de pushar ut de absolut sista 100-tals MHz samt även hos AMD där den mer avancerade temperaturövervakningen gör att man relativt sett kan pusha enkeltrådfallet hårdare än Intel, helt rätt strategi från AMD men det ger kanske 100-200 MHz till och högre effekt trots TSMC 7 nm mot Intels 14 nm
3900X drar väsentligt mer än 9900K när endast en kärna lastas.
https://tpucdn.com/review/amd-ryzen-9-3900x/images/power-singlethread.png
Trenden är helt klart att ju mer man krymper transistorer, ju större blir krökningen runt inflexionspunkten där man går från bra perf/W skalning till dålig perf/W skalning. Är därför de flesta gissar att högsta möjliga frekvens kommer minska framöver, är 2-4 GHz där man verkar ha området med riktigt bra effektivitet och i det spannet förbättras fortfarande perf/W med mindre noder
Aarch64 kommer inte undan just den aspekten. Amazons Graviton2 har ju 64 ARM N1 kärnor (N1 är mot Cortex A76 vad Skylake SP är mot Skylake Y/U/H/S) klockade till 2,5 GHz där hela kretsen (inklusive 8 DDR4 3200 MT/s kanaler, okänt antal PCIe 4.0 kanaler men gissas var 64 st) drar runt 100 W.
Ampere Altra använder samma N1 kärnor, fast klockade till 3,0 GHz (20 % högre) och 80 st till antalet (25 % fler). Även här är det 8 DDR4 3200 MT/s kanaler, fast hela 128 PCIe 4.0. Svårt att jämföra I/O då vi inte ens vet hur det ser ut för Graviton2, men Altra är specificerad till 210 W. Gissar vi att det mesta av ökning kommer från 20 % högre frekvens och 25 % fler kärnor, vilket nog inte är helt galet gissat då relativt liten del av effekten i Zen2 system verkar komma från I/O-die, är det ungefär en fördubbling i effekt för "endast" 50 % högre total beräkningskraft.
Just i inlägget du kommenterar är IPC faktiskt helt korrekt då Cortex A76 och Cortex A77 implementerar exakt samma uppsättning instruktioner, båda implementerar ARMv8.2-A.
Rätt säker att majoriteten av alla dagens spel saknar helt delar skrivna direkt i assembler. Det finns väldigt liten poäng att ta till assembler, kompilatorer är i dag så bra samtidigt som moderna out-of-order CPUer är så icke-logiska för människor att mycket få personer är idag kapabel till att skriva något i assembler som ens är snabbare än vad en kompilator spottar ur sig, än färre fixar att göra något som är relevant mycket snabbare för att motivera den enorma merkostnad att knacka assembler.
I operativsystem använder man fortfarande assembler, men idag är det i väldigt begränsad form och orsaken är i princip alltid att man måste för att vissa saker man inte uttryckas i C. Det handlar alltså inte om prestandaoptimeringar, endast nödvändigt ont.
Har själv skrivit om vissa synkroniseringsprimitiver i ett OS där handskriven assembler ersattes med C11/C++11 atomics. Förutom att C11 atomics är betydligt lättare för än människa att förstå jämfört med fippla med motsvarande assemblerinstruktioner. Användning av s.k. memory-fences är extremt icke-intiutiva, kompilatortillverkare behöver få det rätt en gång, någon som skriver direkt i assembler måste göra rätt varje gång... Slutresultatet var i princip lika snabbt eller snabbare i varje testat fall, fördelen nu är att man kan välja att använda specifika instruktioner för en viss CPU-modell enbart genom att ändra flaggor till kompilatorn (är det skrivit i assembler kan inte kompilatorn göra något alls).
Tvivlar inte en sekund på att det finns enstaka funktion i program som Final Cut Pro som är SIMD optimerade. Fram till väldigt nyligen var egentligen det enda sättet att få till sådana optimeringar handskriven assembler, eller är sällan assembler utan man använder något som kallas compiler intrinsics så det blir mer som C-funktionsanrop. Resultatet blir ändå specifikt till CPUer som t.ex. implementerar AVX2 eller AVX512 om man väljer att använda sådana intrinsics.
Men sådan användning är oftast isolerade i bibliotek, så är ju "bara" att skriva motsvarande bibliotek för ARM NEON. Så fungerar t.ex. Matlab och andra programvaror som jobbar mycket med matriser. Där finns ett de-facto API på C-nivå, BLAS, detta API har implementationer för alla idag relevanta CPU-arkitekturer samt även för Nvidias GPUer.
Två saker gör dock handrullad SIMD kod mindre relevant framöver. Dels är mycket som kan optimeras med SIMD saker som en GPU (eller annan form av accelerator) kan göra ännu mer effektivt. Dels har man, efter rätt många misslyckade försökt, fått fram en programmeringsmodell där man kan skriva C/C++ (fler språk lär komma) med några enstaka utökningar tillagd och sedan väldigt effektivt kompilera den till önskad SIMD-instruktionsuppsättning. SPMD är en LLVM-baserad kompilatorn som kan producera SSE, AVX, AVX2, AVX-512 samt NEON instruktioner. SPMD är viktigt för Intel då det gör det långt enklare för programvaror att stödja AVX-512, det gör också så att man med samma kodbas även kan stödja ARM NEON.
Ditt argument för Final Cut Pro är samma som Apple försökte använda för PowerPC: visst är >90 % av allt man kör på datorn snabbare på x86, men kolla in hur mycket snabbare det här obskyra Photoshop-filtret är!!! Vi har samma läge här, fast nu är det Aarch64 som är x86 och x86 som är PowerPC. Om >90 % av fallen ser en förbättring, är då den kvarvarande minoriteten av fallen ett vettig argument för att inte byta (och de kommer ju fixas med tiden)?
Du nämner Aida64, det är ett exempel på en mikrobenchmark. Visst får man information från en sådan, men informationen är helt värdelös som måttstock för generell prestanda. Benchmarks som Cinebench testar ju fall från riktiga program, så de är långt bättre måttstockar än syntetiska mikrobenchmark. Men sådana benchmarks är fortfarande usla pekpinnar för generell prestanda då de bara testar ett enda specifikt fall.
SPEC och Geekbench 4/5 försöker ge en bredare bild. Där kör man "riktiga" program, SPEC tester bl.a. kompileringsprestanda med GCC medan GB gör det med LLVM, båda kör också skriptspråk och en rad moment med vanliga program och bibliotek. De har bara olika fokus, SPEC väljer program och dataset som kan anses "normala" för servers medan GB väljer program och dataset som kan anses "normal" för interaktiv användning (så fokus på typiska race-to-sleep fall).
Visst är det inte direkt IPC man jämför när man ställer olika CPU-arkitekturer mot varandra i SPEC/GB, det man mäter är långt mer användbart: faktiskt prestanda för en användare av systemen.