David Kanter vet i de flesta fall vad han snack om, men läste du den där artikeln? Han sticket inte på något sätt under stolen med att det är gissningar.
Och viktigast av allt: han pratade där om 32-bitars ARM. Den största elefanten i rummet nämndes inte ens, ARMv7 och tidigare är alla 32-bit _only_. Förutom prestanda var precis alla försökt att bygga servers på ARMv7 DoA, varför skulle man gå tillbaka till 32-bit när allt annat redan 2011 hade gått till 64-bit?
Bl.a. nämns detta
Citat:
ARM microproccesors are designed for lower performance and unlikely to match x86 performance in the next few years
High-end ARM designs may not have a power efficiency advantage over x86
Emulating x86 on ARM is necessary for compatibility and reduces performance and efficiency even further
Thunderbolt I/O is probably not available on ARM
No second source ARM vendors for key components such as the GPU
Intel and AMD already do an excellent job competing to meet Apple’s needs
6. är inte helt sant längre. 4. är definitivt inte sant då Intel släppt specifikationen.
2. kan vi inte svara på då Kanter pratade om 32-bitars ARM. För Aarch64 (som är en "perfekt" ISA givet dagens krav, det kan man definitivt inte säga om 32-bitars ARM) har vi ju redan facit: high-end Aarch64 har definitivt en fördel över x86 här. Apples Iphone11 matchar de absolut snabbaste x86 CPUerna som drar >100 W i enkeltrådprestanda, en telefon ligger typiskt <5 W men peak är kanske det dubbla (och i GB4/5 är testerna korta nog för att kunna köra peak-power).
2. är också överbevisad från ARM själva då Cortex A77 har högre heltals IPC än någon x86 design, det samtidigt som den är ungefär hälften så stor per CPU-kärna jämfört med Zen2 på samma TSCM 7nm process.
Han skriver också
Citat:
It would be very expensive for Apple to design their own microprocessors – perhaps in the range of $200M or more. The entire notion is incredibly risky, given Apple’s lack of experience with end-to-end chip design, especially for high performance microprocessors and graphics.
$200 M är väl kaffepengar för Apple idag, oavsett så har de den CPU med i särklass högsta IPC idag (som de designat in-house) och de har sedan något år tillbaka även en egen GPU-krets.
Sedan är GPU ett icke-problem. PCIe fungerar lika bra på ARM, som på x86, MIPS, SPARC, PowerPC eller vad det nu må vara. Går ju att köra Nvidias, AMD och snart även Intels GPU-kretsar om man vill ha rejält med pulver.
Det är helt sant att tidigare har det alltid funnits för och nackdelar med alla ISA. MIPS har dålig koddensitet -> sämre cache-effektivitet, ARM må vara kompakt men det är otroligt komplext för att vara en RISC och vansinnesbeslutet att göra varje instruktion villkorad gjorde det rätt hopplöst att designa riktigt breda och djupa OoO-designer.
x86 har variabel längd på instruktion, vilket komplicerar avkodning (något både AMD/Intel parerar med micro-op cache men det kostar massor med transistorer), massor med implicita beroenden mellan instruktion som komplicerar design av väldigt bred back-end (men även här kompenseras det med massor av transistorer) och minneskonsistensmodellen definierades i en tid när två kärnor var exotiskt, man valde en modell som är lätt för människor att förstå men den är allt för strikt (vilket lämnar prestanda på bordet) för vad som i slutändan blev det alla stora programspråk valde som modell (går inte att ändra utan att bryta bakåtkompatibilitet).
Aarch64 och RISC-V är de enda ISA som designats i en tid när "ingen" längre skriver assembler, de är därför designade för att göra livet så lätt som möjligt för kompilator tillverkare. De designades efter man insåg att allt högre frekvens kommer inte fungera, så de flesta instruktioner har inga implicita sidoeffekter vilket möjliggör effektiva extremt breda mikroarkitekturer (Apples A13 är brutalbred, betydligt bredare än Zen2/Sunny Cove). De designades efter att den modell vi nu använder för multitrådade program definierades och har därför en perfekt match på instruktionsnivå för det.
Har själv levt i tron att ISA är irrelevant, det enda som spelar roll är mikroarkitektur. Det var också sant under ~3 decennier. Intel designade ju IA64 för att vara en "perfekt ISA" på sin tid men de råkade göra det när forskningen hade råkat gå in vad man senare insåg var ett återvändsgränd. Så tanken var rätt, men timing helt fel. Intel lär har bränt sig rätt mycket där, för därifrån har man definitiv hört att det enda som spelar roll är mikroarkitektur. Det var fel, det man aldrig tidigare lyckats med var att designa en ISA som eliminerade relevanta flaskhalsar och samtidigt inte skapade massa nya.
x86 har en gigantisk fördel: den är bakåtkompatibel men en ISA som varit extremt framgångsrik sedan slutet av 80-talet. Ovanpå det är det mest populära OSet på skrivbordet, Windows, extremt hårt knuten till x86. Så x86 kommer leva länge. Men vi borde se en övergång till Aarch64 både i bärbara och datacenter (AWS satsning borde rätt mycket garantera det, även Microsoft designar Aarch64 baserad infrastruktur för Azure men än så länge kan man som kund inte köra på sådana system).
Ur alla andra tekniska aspekter är Aarch64 lika bra eller bättre, man kommer alltid få mer prestanda med Aarch64 om man slänger en fix mängd transistorer på problemet. Utan sitt försprång i tillverkningsteknik är inte heller det en lösning för Intel och det kommer aldrig bli en lösning för AMD då de har samma fabriker som de andra.
Man kan hoppas att RISC-V "vinner" i slutändan då det är öppet. Men problemet är investeringar i programvara, framförallt grundläggande sådan som kompilatorer och grundläggande bibliotek... Apple har i princip löst detta för Aarch64 genom att lägga enorma summor på FoU där, det gynnade ju deras största kassako iOS-enheter. Amazon, som har ungefär lika mycket pengar, gör just en liknande insats på serversidan för Aarch64 då de antagligen kommer gynna en av deras kassakor (AWS är redan en kassako, får se om kunderna anammar Graviton2 när den rullas ut).