ARM:s arkitekturer får högre prestanda, säkerhet och maskininlärning

Permalänk
Melding Plague

ARM:s arkitekturer får högre prestanda, säkerhet och maskininlärning

Bolagets instruktionsuppsättning får med ARMv9 sin största uppdatering sedan 64-bitarsstödet introducerades med ARMv8 år 2011.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Datavetare

Liten nit-pick: "I ARMv9 introduceras även den senaste versionen av tekniken Scalable Vector Exentions (SVE), som utvecklats i samarbete med Fujitsu."

SVE introducerades redan i ARMv8, men där hanteras det som en extension medan det är en del av grundspecifikationen för ARMv9.

Detta är väldigt likt hur NEON hanterades, det är ett valbart tillägg i ARMv7 medan det ingår som standard i ARMv8.

SVE blir spännande att se, det är förhoppningsvis en bättre design för framtida utökningar jämfört med hur SSE/AVX fungerar där man i praktiken måste definiera om alla instruktioner för varje bredd, d.v.s. så här långt för 128, 256 och 512 bitar.

I SVE stöds logiskt allt från 128 till 2048 bitar, så instruktionerna finns för alla varianter. HW skalas oberoende av det, är fullt möjligt att köra SVE i en telefon med endast 128-bitars fysisk bredd. En 2048 bitars instruktion tar då 16 cykler att köra om det tar 1 att köra med 2048 bitars HW.

SVE har redan visat hur väldesignat det är. Världens snabbaste superdator är ARM64 baserad (ARMv8.2A + SVE-utökning) och det har nått förstaplatsen utan att pumpa sin beräkningskapacitet med massa GPUer. SVE med lite större HW-bredd betyder i praktiken att man har en integrerad GPU i CPU!

Edit: nit-pick till det jag skrev ovan här... Som nämns i artikeln är det SVE2 som introduceras i ARMv9, verkar som om SVE2 lite blir unionen av NEON+SVE

Visa signatur

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

Permalänk
Medlem

Jag har väldigt lite förståelse för de exakta skillnaderna, men övergången till ARM är nog det mest intressanta som hänt i hårdvarubranschen det senaste decenniet. Inte bara en förbättrad teknik, men även nya tillverkare och marknadsstruktur.

HYPE.

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk
Medlem
Skrivet av Yoshman:

SVE blir spännande att se, det är förhoppningsvis en bättre design för framtida utökningar jämfört med hur SSE/AVX fungerar där man i praktiken måste definiera om alla instruktioner för varje bredd, d.v.s. så här långt för 128, 256 och 512 bitar.

I SVE stöds logiskt allt från 128 till 2048 bitar, så instruktionerna finns för alla varianter. HW skalas oberoende av det, är fullt möjligt att köra SVE i en telefon med endast 128-bitars fysisk bredd. En 2048 bitars instruktion tar då 16 cykler att köra om det tar 1 att köra med 2048 bitars HW.

SVE har redan visat hur väldesignat det är. Världens snabbaste superdator är ARM64 baserad (ARMv8.2A + SVE-utökning) och det har nått förstaplatsen utan att pumpa sin beräkningskapacitet med massa GPUer. SVE med lite större HW-bredd betyder i praktiken att man har en integrerad GPU i CPU!

Ja, onekligen spännande tid nu och framöver! 🤓

Jag tror dessutom att ARM och RISC-V oundvikligt kommer etablera sig, långt mer än idag, som seriösa plattformar (även utanför server- & workstation-marknader).

Visa signatur

Hårdvara:
Varierande nog, = onödig information.

Gillar Linux, det kan vara värt vetande. 🙂

Permalänk
Medlem
Skrivet av Yoshman:

Liten nit-pick: "I ARMv9 introduceras även den senaste versionen av tekniken Scalable Vector Exentions (SVE), som utvecklats i samarbete med Fujitsu."

SVE introducerades redan i ARMv8, men där hanteras det som en extension medan det är en del av grundspecifikationen för ARMv9.

Detta är väldigt likt hur NEON hanterades, det är ett valbart tillägg i ARMv7 medan det ingår som standard i ARMv8.

SVE blir spännande att se, det är förhoppningsvis en bättre design för framtida utökningar jämfört med hur SSE/AVX fungerar där man i praktiken måste definiera om alla instruktioner för varje bredd, d.v.s. så här långt för 128, 256 och 512 bitar.

I SVE stöds logiskt allt från 128 till 2048 bitar, så instruktionerna finns för alla varianter. HW skalas oberoende av det, är fullt möjligt att köra SVE i en telefon med endast 128-bitars fysisk bredd. En 2048 bitars instruktion tar då 16 cykler att köra om det tar 1 att köra med 2048 bitars HW.

SVE har redan visat hur väldesignat det är. Världens snabbaste superdator är ARM64 baserad (ARMv8.2A + SVE-utökning) och det har nått förstaplatsen utan att pumpa sin beräkningskapacitet med massa GPUer. SVE med lite större HW-bredd betyder i praktiken att man har en integrerad GPU i CPU!

Vad tror du om tex framtida graviton 3 kretsar ? Redan nu är arm 40 %effektivare , 20 lägre kost samt 20 prc snabbare om man tittar på graviton 2 hos aws

Visa signatur

Nätverksnörd

Permalänk
Hedersmedlem

Intressant, men vem blir egentligen först ut med att släppa en entusiastplattform baserad på ARM? Tänker mig alltså något liknande AM4 eller LGA1200.

Sockelbar processor, upplåst för överklockning, etc. Samt så klart något slags avtal med Microsoft så att man kan köra Windows på plattformen i fråga (eller ännu hellre att de bara släpper ARM-Windows fritt retail...)

Den dagen det kommer, så är det ganska stor chans att jag hoppar på.

Permalänk

Spännande. Jag tror Xiaomi kan bli en het aktör och ta Arm riktigt in bland budgetdatorer.
Det är bara se på mobiltelefoner. Vem var först med den nya ljudstandarden LE Audio för trådlös ljud som inte laggar ("suger")?
Vem var först med Samsungs nya megastora fotosensor etc?
Jo, Xiaomi.

Apple i sin tur tar en annan marknad. Men för att arm ska ta över måste arm in på budgetmarknaden.

Permalänk
Medlem

Om man leker med tanken. ARM för råa gaming riggar och arbetsstationer (redigering) eller rendereringsserver för den delen.

ARM har ju lyckats då alla "onödiga" instruktioner har tagits bort. Dess starka sida är helt enkelt att ARM har få instruktioner, men det kan ju också vara dess svaga sida.
Hur långt ifrån en sweetspot är man för ex. pc gaming?
Finns det några specifika instruktionsuppsättningar som skulle behövas för att det ska vara optimalt?

Visa signatur

www.fckdrm.com - DRM år 2024? Ha pyttsan.

Permalänk
Datavetare
Skrivet av moire:

Vad tror du om tex framtida graviton 3 kretsar ? Redan nu är arm 40 %effektivare , 20 lägre kost samt 20 prc snabbare om man tittar på graviton 2 hos aws

Vet inte om du läst denna artikel, detta sammanfattar rätt bra vad jag tror

"The Graviton3 will likely be based on ARM's Neoverse V1 architecture. As I wrote on my recent article titled "Intel And AMD: History Repeats - X86 Faces Obsolescence", the Neoverse V1 performance jump is so large that it's to be expected that the x86 world in general will face significant trouble. This trouble will be exacerbated in the server room."

AnandTech har skrivit tidigare om Neoverse V1. Deras spekulation om att Neoverse V1 blir först med ARMv9 stöd känns än mer sannolikt nu.

Neoverse V1 är rätt mycket servervarianten av Cortex X1, släktskapet kanske blir lite svagare än vad som är fallet mellan nuvarande Neoverse N1 som väldigt mycket är server varianten av Cortex A76.

Cortex X1 matchar inte Apples Firestorm, men det är ändå en mikroarkitektur som utför mer per cykel än både Zen3 och Cypress Cove. Inte alls säkert att ens Golden Cove kommer matcha denna i utfört arbete per MHz.

På serversidan har vi ju sett att de Neoverse N1 baserade servers som finns (N1 har ungefär samma prestanda per MHz som Skylake/Zen2) kan klockas högre jämfört med Intel/AMD när alla kärnor används. Just Graviton2 är ett undantag med dess väldigt låga 2,5 GHz klocka (ändå högre än vad viss x86 serverkretsar når i praktiken), Amazon ville få ned 64-kärnor under 100 W TDP, finns andra kretsar som klockar till 3,3 GHz med upp till 80 kärnor (128 kärnors varianter är på ingång).

Intel/AMD måste verkligen dra en kanin ur deras magiska x86-hatt om de ska fortsätta vara relevanta. De har lite kuddar (tack Microsoft), t.ex. att dotnet är rätt populärt och även om det fungerar redan nu på ARM64 lyckades folk ändå göra så mycket buggar som bryter mot VM-specifikationen för dotnet, men "råkar" fungera korrekt på x86. "Fixen" för detta leder tyvärr till att dotnet på ARM64 presterar något sämre än vad som annars vore fallet. Det är ett exempel, finns flera och sådant är ett hinder.

Molntjänsterna körs primärt på Linux, Linux är faktiskt större än Windows även på Microsoft Azure numera, så där är barriären väsentligt mindre än för Windows. Finns ändå lite saker som x86 gänget kan hålla fast sig i, t.ex. så ser OneAPI väldigt lovande ut och Intel har lagt massor med resurser på att få ut maximalt ur både x86 och deras kommande GPUer. Nu finns även ARM64 stöd, dock saknas så vitt jag vet SVE/SVE2 stöd (NEON stöd finns), vilket är ett problem då en av huvudnumren för OneAPI är att dra maximal nytta av SIMD (SSE/AVX på x86, NEON/SVE på ARM64).

På sikt lär Intel/AMD kunna hålla emot om det hela tiden kommer mer effektiva och snabbare ARM64 kretsar som i fallet Graviton2 också kostar mindre. Blir ju affärsmässigt vansinne för användarna att klamra sig fast vi x86 då.

Visa signatur

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

Permalänk
Avstängd
Skrivet av Yoshman:

Vet inte om du läst denna artikel, detta sammanfattar rätt bra vad jag tror

hur bedömer du att förväntningarna ligger på aktierna?

Visa signatur

There is more stupidity than hydrogen in the universe, and it has a longer shelf life. /Frank Zappa

Permalänk
Medlem
Skrivet av Yoshman:

Vet inte om du läst denna artikel, detta sammanfattar rätt bra vad jag tror

"The Graviton3 will likely be based on ARM's Neoverse V1 architecture. As I wrote on my recent article titled "Intel And AMD: History Repeats - X86 Faces Obsolescence", the Neoverse V1 performance jump is so large that it's to be expected that the x86 world in general will face significant trouble. This trouble will be exacerbated in the server room."

AnandTech har skrivit tidigare om Neoverse V1. Deras spekulation om att Neoverse V1 blir först med ARMv9 stöd känns än mer sannolikt nu.

Neoverse V1 är rätt mycket servervarianten av Cortex X1, släktskapet kanske blir lite svagare än vad som är fallet mellan nuvarande Neoverse N1 som väldigt mycket är server varianten av Cortex A76.

Cortex X1 matchar inte Apples Firestorm, men det är ändå en mikroarkitektur som utför mer per cykel än både Zen3 och Cypress Cove. Inte alls säkert att ens Golden Cove kommer matcha denna i utfört arbete per MHz.

På serversidan har vi ju sett att de Neoverse N1 baserade servers som finns (N1 har ungefär samma prestanda per MHz som Skylake/Zen2) kan klockas högre jämfört med Intel/AMD när alla kärnor används. Just Graviton2 är ett undantag med dess väldigt låga 2,5 GHz klocka (ändå högre än vad viss x86 serverkretsar når i praktiken), Amazon ville få ned 64-kärnor under 100 W TDP, finns andra kretsar som klockar till 3,3 GHz med upp till 80 kärnor (128 kärnors varianter är på ingång).

Intel/AMD måste verkligen dra en kanin ur deras magiska x86-hatt om de ska fortsätta vara relevanta. De har lite kuddar (tack Microsoft), t.ex. att dotnet är rätt populärt och även om det fungerar redan nu på ARM64 lyckades folk ändå göra så mycket buggar som bryter mot VM-specifikationen för dotnet, men "råkar" fungera korrekt på x86. "Fixen" för detta leder tyvärr till att dotnet på ARM64 presterar något sämre än vad som annars vore fallet. Det är ett exempel, finns flera och sådant är ett hinder.

Molntjänsterna körs primärt på Linux, Linux är faktiskt större än Windows även på Microsoft Azure numera, så där är barriären väsentligt mindre än för Windows. Finns ändå lite saker som x86 gänget kan hålla fast sig i, t.ex. så ser OneAPI väldigt lovande ut och Intel har lagt massor med resurser på att få ut maximalt ur både x86 och deras kommande GPUer. Nu finns även ARM64 stöd, dock saknas så vitt jag vet SVE/SVE2 stöd (NEON stöd finns), vilket är ett problem då en av huvudnumren för OneAPI är att dra maximal nytta av SIMD (SSE/AVX på x86, NEON/SVE på ARM64).

På sikt lär Intel/AMD kunna hålla emot om det hela tiden kommer mer effektiva och snabbare ARM64 kretsar som i fallet Graviton2 också kostar mindre. Blir ju affärsmässigt vansinne för användarna att klamra sig fast vi x86 då.

Jag funderade på huruvida RPi4 skulle gynnas av ARMv9-specifikationen eller inte. Tänker att om det kommer system som kompilerats i det, om det kan köras eller om det krävs helt ny hårdvara för att det överhuvudtaget ska fungera.

Antar att det inte fungerar, men kände att det var en intressant sak att fråga. Om inte annat så lär kommande RPier kunna dra nytta av det!

Permalänk
Medlem
Skrivet av Balconette:

Jag funderade på huruvida RPi4 skulle gynnas av ARMv9-specifikationen eller inte. Tänker att om det kommer system som kompilerats i det, om det kan köras eller om det krävs helt ny hårdvara för att det överhuvudtaget ska fungera.

Antar att det inte fungerar, men kände att det var en intressant sak att fråga. Om inte annat så lär kommande RPier kunna dra nytta av det!

Ja, kanske, tänk dock på att rpi har riktigt billiga kretsar, men om rpi5an kommer med något om två år så kanske.

Visa signatur

Nätverksnörd

Permalänk
Datavetare
Skrivet av ELF:

Om man leker med tanken. ARM för råa gaming riggar och arbetsstationer (redigering) eller rendereringsserver för den delen.

ARM har ju lyckats då alla "onödiga" instruktioner har tagits bort. Dess starka sida är helt enkelt att ARM har få instruktioner, men det kan ju också vara dess svaga sida.
Hur långt ifrån en sweetspot är man för ex. pc gaming?
Finns det några specifika instruktionsuppsättningar som skulle behövas för att det ska vara optimalt?

32-bitars ARM != ARM64, de är två helt olika instruktionsuppsättningar.

32-bitars ARM är inte heller den en "traditionell" RISC, Arm är lite unik bland "RISC" CPUerna i att de har rätt komplexa instruktioner. RISC vs CISC är helt enkelt en rätt suddig klassning.

Rent generellt brukar RISC leda till fler instruktioner och större program jämfört med RISC. Vidare har de flesta RISC-varianter instruktioner av en fast storlek. Instruktioner för 32-bitars ARM kan vara 2 eller 4 bytes, och programmen är i princip alltid mindre än motsvarande x86_64 program.

32-bitars ARM har en stor designmiss: det som gör programmen väldigt kompakta är också något som gör det extremt svårt att bygga riktigt högpresterande CPUer.

64-bitars ARM, ARM64, rättar till misstagen. Där är alla instruktioner 4 bytes, programmen är inte lika kompakta som 32-bitars ARM, men fortfarande lika kompakta som x86_64 eller något kompaktare.

ARM64 tillsammans med RISC-V är de enda instruktionsuppsättningar som designas efter att man formaliserade saker som atomära instruktioner och andra saker relaterat till kodning av multitrådade program i programspråk som C, C++, Java m.fl. Man tog vara på den kunskapen och skapade en "perfekt" instruktionsuppsättning för dessa krav.

Så för egen del känns det riktigt surt att denna generations konsoler stannade på stenåldern. De hade definitivt kunna använda Cortex A77 och man hade mycket väl kunna få in Cortex X1. Det hade gett konsoler med högre absolut CPU-prestanda samt väsentligt mycket bättre prestanda/W. Lär väl hända nästa generation...

Skrivet av Balconette:

Jag funderade på huruvida RPi4 skulle gynnas av ARMv9-specifikationen eller inte. Tänker att om det kommer system som kompilerats i det, om det kan köras eller om det krävs helt ny hårdvara för att det överhuvudtaget ska fungera.

Antar att det inte fungerar, men kände att det var en intressant sak att fråga. Om inte annat så lär kommande RPier kunna dra nytta av det!

RPi4 är utrustad med fyra Cortex A72 kärnor. De gynnas överhuvudtaget inte av ARMv9 då de inte implementerar den specifikationen. Cortex A72 implementerar ARMv8.0-A.

Vad man kan göra med RPi4 är att välja en Linux-distro som använder sig av ARM64. Tror även Raspbian har ARM64 stöd numera, har själv kört ARM64 versionen av Ubuntu 20.04 på min RPi4 sedan release. ARM64 är så mycket bättre designad jämfört med 32-bitars ARM att man kommer få bättre prestanda, hur mycket varierar från fall till fall men 10-30 % högre prestanda kan man nog förvänta sig.

Visa signatur

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

Permalänk
Medlem

Apple M1 är baserad på ARMv8.4-A, innebär det att nästa generation kommer ha ytterligare +30%?

Hoppas alla i framtiden kan köra vilken arch dom vill. Alla program är LLVM IR, som byggs specifikt för ens processor och extensions innan exekvering.

Visa signatur

How do 'Do Not Walk on the Grass' signs get there ?

Permalänk
Inaktiv
Skrivet av Yoshman:

Vet inte om du läst denna artikel, detta sammanfattar rätt bra vad jag tror

"The Graviton3 will likely be based on ARM's Neoverse V1 architecture. As I wrote on my recent article titled "Intel And AMD: History Repeats - X86 Faces Obsolescence", the Neoverse V1 performance jump is so large that it's to be expected that the x86 world in general will face significant trouble. This trouble will be exacerbated in the server room."

AnandTech har skrivit tidigare om Neoverse V1. Deras spekulation om att Neoverse V1 blir först med ARMv9 stöd känns än mer sannolikt nu.

Neoverse V1 är rätt mycket servervarianten av Cortex X1, släktskapet kanske blir lite svagare än vad som är fallet mellan nuvarande Neoverse N1 som väldigt mycket är server varianten av Cortex A76.

Cortex X1 matchar inte Apples Firestorm, men det är ändå en mikroarkitektur som utför mer per cykel än både Zen3 och Cypress Cove. Inte alls säkert att ens Golden Cove kommer matcha denna i utfört arbete per MHz.

På serversidan har vi ju sett att de Neoverse N1 baserade servers som finns (N1 har ungefär samma prestanda per MHz som Skylake/Zen2) kan klockas högre jämfört med Intel/AMD när alla kärnor används. Just Graviton2 är ett undantag med dess väldigt låga 2,5 GHz klocka (ändå högre än vad viss x86 serverkretsar når i praktiken), Amazon ville få ned 64-kärnor under 100 W TDP, finns andra kretsar som klockar till 3,3 GHz med upp till 80 kärnor (128 kärnors varianter är på ingång).

Intel/AMD måste verkligen dra en kanin ur deras magiska x86-hatt om de ska fortsätta vara relevanta. De har lite kuddar (tack Microsoft), t.ex. att dotnet är rätt populärt och även om det fungerar redan nu på ARM64 lyckades folk ändå göra så mycket buggar som bryter mot VM-specifikationen för dotnet, men "råkar" fungera korrekt på x86. "Fixen" för detta leder tyvärr till att dotnet på ARM64 presterar något sämre än vad som annars vore fallet. Det är ett exempel, finns flera och sådant är ett hinder.

Molntjänsterna körs primärt på Linux, Linux är faktiskt större än Windows även på Microsoft Azure numera, så där är barriären väsentligt mindre än för Windows. Finns ändå lite saker som x86 gänget kan hålla fast sig i, t.ex. så ser OneAPI väldigt lovande ut och Intel har lagt massor med resurser på att få ut maximalt ur både x86 och deras kommande GPUer. Nu finns även ARM64 stöd, dock saknas så vitt jag vet SVE/SVE2 stöd (NEON stöd finns), vilket är ett problem då en av huvudnumren för OneAPI är att dra maximal nytta av SIMD (SSE/AVX på x86, NEON/SVE på ARM64).

På sikt lär Intel/AMD kunna hålla emot om det hela tiden kommer mer effektiva och snabbare ARM64 kretsar som i fallet Graviton2 också kostar mindre. Blir ju affärsmässigt vansinne för användarna att klamra sig fast vi x86 då.

Om nu Apple kan bygga en CPU som kör x86-kod på ett konkurrenskraftigt sätt, fart + effektförbrukning etc, så kan väl vem som helst göra det. Ok, det kräver något som Rosetta 2 men kan Apple så kan väl andra också, och inte heller bara Microsoft. Därmed är det väl då frivilligt att använda Intel/AMD? Visst, det finns lite randvillkor och förutsättningar men i princip alltså.

Om sedan Microsoft lanserar Windows 11 som ARM-baserad så har väl den världen gjort samma övergång som Apple nu har gjort. Apple har fördelen av att ha kontroll över hela kakan vilket gör det enklare för dom men det ser alltså ut som även Windows-användare också skall kunna göra samma övergång och kan göra den nu direkt. Eller finns det något principiellt jag missat?

Så det som nu krävs är att någon bygger ett chip baserat på ARMv9 inklusive stöd för att emulera x86 (minneshantering etc) och dito Rosetta-klon. Nvidia, Samsung och/eller Huawei kanske är intresserade av att kunna konkurrera med Intel/AMD.

Permalänk
Datavetare
Skrivet av anon214822:

Om nu Apple kan bygga en CPU som kör x86-kod på ett konkurrenskraftigt sätt, fart + effektförbrukning etc, så kan väl vem som helst göra det. Ok, det kräver något som Rosetta 2 men kan Apple så kan väl andra också, och inte heller bara Microsoft. Därmed är det väl då frivilligt att använda Intel/AMD? Visst, det finns lite randvillkor och förutsättningar men i princip alltså.

Grejen är: M1 kan inte köra x86_64 kod! Rosetta 2 gör flera saker, men den största och viktigaste är att den tar ett x86_64 program och binäröversätter detta till ett logiskt motsvarande ARM64 program.

Det blir tyvärr inte lika effektivt som att kompilera direkt från källkod till ARM64 kod, men det coola är att vissa tillkortakommanden hos x86_64 kan lindras då det är rimligt att göra mer avancerad statisk analys på x86_64 än vad som är möjligt i en CPU som måste fatta rätt många beslut på (sub)nanosekund nivå.

Vad M1 verkar ha (Apple har inte officiellt sagt att det är så, men allt pekar på att så är fallet) är stöd för att på HW-nivå köra samma minneskonsistensmodell som x86_64.

Den modell som x86_64 använder är mindre effektiv än den ARM64 använder för multitrådade program, problemet är att om ARM64 modellen används för x86_64 minnesoperationer så har man nästan garanterat introducerat data-race! Är logiskt fullt möjligt att implementera x86_64 modellen inom ramen för ARM64, är så Microsoft gör i deras x86_64 "emuleringslager" (rent tekniskt är det binäröversättning även där, inte emulering).

Rosetta 2 sätter M1 i x86_64 modellen (som kallas TSO) när den kör kod som översatts från x86_64, annars kör den en mer effektiv ARM64-modell.

Rätt säker att x86_64 lägret redan lurat på om något i ovan inkräktar på någon IP, men de lär får svårt att hitta något i HW just p.g.a. att CPUn kör faktiskt endast ARM64 instruktioner. TSO är en gammal och välkänd modell, långt ifrån unik för x86.

Skrivet av anon214822:

Om sedan Microsoft lanserar Windows 11 som ARM-baserad så har väl den världen gjort samma övergång som Apple nu har gjort. Apple har fördelen av att ha kontroll över hela kakan vilket gör det enklare för dom men det ser alltså ut som även Windows-användare också skall kunna göra samma övergång och kan göra den nu direkt. Eller finns det något principiellt jag missat?

På ett sätt är det sant att Windows också är i en övergång. På många kritisk sätt är det milsvid skillnad mellan vad Apple gör och vad Microsoft gör. Apple har gjort helt klart: ARM64 är framtiden och vill man vara relevant på MacOS måste man erbjuda "riktiga" ARM64 binärer.

Microsoft har rudimentärt stöd för ARM64, "ingen" vågar i nuläget satsa sitt företags framtid på att ARM64 på Windows kommer bli stort.

Skrivet av anon214822:

Så det som nu krävs är att någon bygger ett chip baserat på ARMv9 inklusive stöd för att emulera x86 (minneshantering etc) och dito Rosetta-klon. Nvidia, Samsung och/eller Huawei kanske är intresserade av att kunna konkurrera med Intel/AMD.

Att göra en Rosetta-klon lär vara hyfsat komplicerat p.g.a. alla udda-fall som måste hanteras. Det positiva är ändå att grovjobbet med att översätta x86_64 instruktioner till ARM64 finns i LLVM (är det Rosetta 2 använder och skulle bli förvånad om Microsoft inte bygger sin lösning på den tekniken). LLVM är öppen källkod med en "företagsvänlig" licens, d.v.s. det är inte GPL utan Apache License 2.0.

Visa signatur

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

Permalänk
Medlem
Skrivet av Yoshman:

Att göra en Rosetta-klon lär vara hyfsat komplicerat p.g.a. alla udda-fall som måste hanteras. Det positiva är ändå att grovjobbet med att översätta x86_64 instruktioner till ARM64 finns i LLVM (är det Rosetta 2 använder och skulle bli förvånad om Microsoft inte bygger sin lösning på den tekniken). LLVM är öppen källkod med en "företagsvänlig" licens, d.v.s. det är inte GPL utan Apache License 2.0.

Tänk om llvm hade haft en annan licens, då kanske Apple varit tvungna att dela med sig av rosetta koden och resten av världen hade kunnat gå över till arm snabbare
Har själv svårt att förstå stora open source projekt som inte har en copy left licens, ska jag ge bort mitt arbete tycker jag det är rimligt att de som drar fördel av det gör detsamma

Permalänk
Medlem
Skrivet av Yoshman:

32-bitars ARM != ARM64, de är två helt olika instruktionsuppsättningar.

32-bitars ARM är inte heller den en "traditionell" RISC, Arm är lite unik bland "RISC" CPUerna i att de har rätt komplexa instruktioner. RISC vs CISC är helt enkelt en rätt suddig klassning.

Rent generellt brukar RISC leda till fler instruktioner och större program jämfört med RISC. Vidare har de flesta RISC-varianter instruktioner av en fast storlek. Instruktioner för 32-bitars ARM kan vara 2 eller 4 bytes, och programmen är i princip alltid mindre än motsvarande x86_64 program.

32-bitars ARM har en stor designmiss: det som gör programmen väldigt kompakta är också något som gör det extremt svårt att bygga riktigt högpresterande CPUer.

64-bitars ARM, ARM64, rättar till misstagen. Där är alla instruktioner 4 bytes, programmen är inte lika kompakta som 32-bitars ARM, men fortfarande lika kompakta som x86_64 eller något kompaktare.

ARM64 tillsammans med RISC-V är de enda instruktionsuppsättningar som designas efter att man formaliserade saker som atomära instruktioner och andra saker relaterat till kodning av multitrådade program i programspråk som C, C++, Java m.fl. Man tog vara på den kunskapen och skapade en "perfekt" instruktionsuppsättning för dessa krav.

Så för egen del känns det riktigt surt att denna generations konsoler stannade på stenåldern. De hade definitivt kunna använda Cortex A77 och man hade mycket väl kunna få in Cortex X1. Det hade gett konsoler med högre absolut CPU-prestanda samt väsentligt mycket bättre prestanda/W. Lär väl hända nästa generation...

RPi4 är utrustad med fyra Cortex A72 kärnor. De gynnas överhuvudtaget inte av ARMv9 då de inte implementerar den specifikationen. Cortex A72 implementerar ARMv8.0-A.

Vad man kan göra med RPi4 är att välja en Linux-distro som använder sig av ARM64. Tror även Raspbian har ARM64 stöd numera, har själv kört ARM64 versionen av Ubuntu 20.04 på min RPi4 sedan release. ARM64 är så mycket bättre designad jämfört med 32-bitars ARM att man kommer få bättre prestanda, hur mycket varierar från fall till fall men 10-30 % högre prestanda kan man nog förvänta sig.

Tack för svar. Då vet jag att det vore dumdristigt att lägga mer funderingar på det. Blir att se fram emot nya generationers Raspberries istället.

Nej, jag har varit noggrann med att det ska vara ARMv8-distros som ska in på RPi4or. Faktum är att jag köpte min första RPi4a så tidigt att det inte ens existerade då. Tror det var Gentoo som var först ut med ett fungerande OS men det var mycket mek med att få igång det överhuvudtaget. Det var spännande att följa communityt i utvecklingen och en än mäktigare känsla att peta igång ARMv8 på den för första gången. Lite "Framtiden är här idag, och den börjar i min hand"-känsla.

Permalänk
Inaktiv
Skrivet av Yoshman:

<klipp>
På sikt lär Intel/AMD kunna hålla emot om det hela tiden kommer mer effektiva och snabbare ARM64 kretsar som i fallet Graviton2 också kostar mindre. Blir ju affärsmässigt vansinne för användarna att klamra sig fast vi x86 då.

Enligt Darwins teori om naturligt urval, liksom evolutionsläran i allmänhet, sker utvecklingen i en serie små steg där då varje steg innebär någon evolutionsmässig fördel. Problemet blir då när vi kommer till något som att utveckla flygförmåga. I början är en liten vingstump inte alls användbar, mest bara en missbildning. Nyttan kommer först när en fungerande flygförmåga finns på plats men det kräver alltså massor med steg som var och en inte alls nödvändigtvis innebär någon evolutionsmässig fördel.

Vi har lite samma problem med Linux på desktopen. Att börja tillverka Linux-burkar är inte lönsamt när ingen köper dom därför allt ändå finns på Windows och om ingen köper dom så byggs det aldrig uppå något ekosystem av mjukvara som kan fungera som reellt alternativ till Windows. Även om Linux på många sätt är bättre finns det ingen väg att få till övergången. The year of the Linux desktop händer aldrig.

Så när du säger att Intel/AMD inte kan hålla emot på sikt så kanske det är fel, dom kanske mycket väl kan hålla emot lika länge som man har kunnat hålla emot Linux på desktopen.

Jag försöker alltså hitta en väg där Windows-världen byter till typ ARMv9 där delstegen i övergången är lönsamma för den/de som behöver göra delstegen. Apple har ju visat hur man gör rent tekniskt men dom är också en integrerad vertikal. Återstår att se hur ekosystemet runt Windows rent affärsmässigt göra samma övergång. Det är den problematiken som ligger bakom mina frågor.

Hur tänker du runt det här på ett mera affärsmässigt plan?

Permalänk
Medlem
Skrivet av anon214822:

Enligt Darwins teori om naturligt urval, liksom evolutionsläran i allmänhet, sker utvecklingen i en serie små steg där då varje steg innebär någon evolutionsmässig fördel. Problemet blir då när vi kommer till något som att utveckla flygförmåga. I början är en liten vingstump inte alls användbar, mest bara en missbildning. Nyttan kommer först när en fungerande flygförmåga finns på plats men det kräver alltså massor med steg som var och en inte alls nödvändigtvis innebär någon evolutionsmässig fördel.

Vi har lite samma problem med Linux på desktopen. Att börja tillverka Linux-burkar är inte lönsamt när ingen köper dom därför allt ändå finns på Windows och om ingen köper dom så byggs det aldrig uppå något ekosystem av mjukvara som kan fungera som reellt alternativ till Windows. Även om Linux på många sätt är bättre finns det ingen väg att få till övergången. The year of the Linux desktop händer aldrig.

Så när du säger att Intel/AMD inte kan hålla emot på sikt så kanske det är fel, dom kanske mycket väl kan hålla emot lika länge som man har kunnat hålla emot Linux på desktopen.

Jag försöker alltså hitta en väg där Windows-världen byter till typ ARMv9 där delstegen i övergången är lönsamma för den/de som behöver göra delstegen. Apple har ju visat hur man gör rent tekniskt men dom är också en integrerad vertikal. Återstår att se hur ekosystemet runt Windows rent affärsmässigt göra samma övergång. Det är den problematiken som ligger bakom mina frågor.

Hur tänker du runt det här på ett mera affärsmässigt plan?

Är evolutionsläran öht applicerbar här?

Permalänk
Medlem
Skrivet av anon214822:

Enligt Darwins teori om naturligt urval, liksom evolutionsläran i allmänhet, sker utvecklingen i en serie små steg där då varje steg innebär någon evolutionsmässig fördel. Problemet blir då när vi kommer till något som att utveckla flygförmåga. I början är en liten vingstump inte alls användbar, mest bara en missbildning. Nyttan kommer först när en fungerande flygförmåga finns på plats men det kräver alltså massor med steg som var och en inte alls nödvändigtvis innebär någon evolutionsmässig fördel.

Evolution kan inte jämnföras med människors system. Vore det evolution skulle intel och amd blivit uppätna, större risk att dom går ihop eller tillverkar en egen arm cpu. Det sker inte i naturen eftersom där tar små steg flera miljoner år. Sen har vi att vissa företag kan släppa en produkt helt och göra nått helt annat.

Kul att arm sätter lite press på marknaden.

Visa signatur

Ryzen 5900X @ Stock, MSI Suprim X 3080 @ game mode.

Permalänk
Datavetare
Skrivet av anon214822:

Enligt Darwins teori om naturligt urval, liksom evolutionsläran i allmänhet, sker utvecklingen i en serie små steg där då varje steg innebär någon evolutionsmässig fördel. Problemet blir då när vi kommer till något som att utveckla flygförmåga. I början är en liten vingstump inte alls användbar, mest bara en missbildning. Nyttan kommer först när en fungerande flygförmåga finns på plats men det kräver alltså massor med steg som var och en inte alls nödvändigtvis innebär någon evolutionsmässig fördel.

Vi har lite samma problem med Linux på desktopen. Att börja tillverka Linux-burkar är inte lönsamt när ingen köper dom därför allt ändå finns på Windows och om ingen köper dom så byggs det aldrig uppå något ekosystem av mjukvara som kan fungera som reellt alternativ till Windows. Även om Linux på många sätt är bättre finns det ingen väg att få till övergången. The year of the Linux desktop händer aldrig.

Så när du säger att Intel/AMD inte kan hålla emot på sikt så kanske det är fel, dom kanske mycket väl kan hålla emot lika länge som man har kunnat hålla emot Linux på desktopen.

Jag försöker alltså hitta en väg där Windows-världen byter till typ ARMv9 där delstegen i övergången är lönsamma för den/de som behöver göra delstegen. Apple har ju visat hur man gör rent tekniskt men dom är också en integrerad vertikal. Återstår att se hur ekosystemet runt Windows rent affärsmässigt göra samma övergång. Det är den problematiken som ligger bakom mina frågor.

Hur tänker du runt det här på ett mera affärsmässigt plan?

Rent affärsmässigt: vad är poängen/fördelen med Linux på desktop?
Har själv väldigt svårt att se någon direkt fördel. Allt för få gör något superkrävande på skrivbordet och samtidigt har Windows blivit betydligt bättre, är egentligen bara nätverksprestanda samt allt runt Cgroups och namespace isolation (det "container-tekniken" bygger på) där Linux är helt överlägset Windows.

Läser man Linux-trådarna här på SweC är en väldigt vanligt fråga: hur kör jag spel (som är primärt designade för Windows) under Linux. Men sådana krav är det kontraproduktivt att gå ifrån Windows.

För mig var den sista spiken i kistan för Linux som ett mainstream OS på skrivbordet när Apple börjar gå riktigt bra. Huvudpoängen med Linux på skrivbordet är att ha en UNIX-baserad miljö med lysande skrivbordsstöd. OSX/MacOS löste det, samtidigt som man alltid haft det företagskritiska stödet från MS Office, program för bild/filmredigering och annat som Linux aldrig haft. Idag har vi även WSL2 på Windows.

Kollar vi däremot på områden Linux har lyckats, vilket är typ de flesta förutom desktop, kan man ställa frågan: varför har det gått så bra där? Linux total-dominerar "molnet", orsaken är det med råge är den bästa tekniska lösningen. Till och med på Microsoft Azure är Linux det dominerande OS:et, har själv väldigt svårt att se varför någon skulle vilja plåga sig sig själv med Windows i sådan miljöer.

Apple har inte ens försökt göra en MacOS lösning av "containers", kör man Docker på MacOS är det Linux som körs i alla containers.

M1 får Intels/AMDs nuvarande produkter att te sig patetiska på laptops, just nu är Apples bärbara både snabbare och billigare än produkter i motsvarande segment på Windows-sidan. Om/när något med samma tekniska överlägsenhet blir tillgängligt för Windows är affärsvärdet uppenbart, förutsatt att det faktiskt finns stöd på Windows. Idag skulle det inte hjälpa om M1 kunde köra Windows (vilket jag tror är möjligt numera), Microsoft har inte gjort det som krävs för att ARM64-stödet ska vara bra nog.

Tekniken finns redan, finns också väldigt rykte att Microsoft själva jobbar på en ARM64 lösning men den kan eventuellt bara rikta sig på server/moln-sidan. Det hade varit fullt möjligt att släppa en Cortex X1/A78 krets designad för Windows-laptops i slutet av Q4 2020, hade inte matchat M1 men hade ändå varit bra nog att slå allt som Intel/AMD har på marknaden. Får se om man tar chansen i år, Cortex X2 kommer antagligen lanseras i maj i år och i så fall är det realistiskt för Microsoft att ha en krets ute till slutet av året om man verkligen vill satsa.

Stationära kommer ha lägst prioritet, det är en sådan försvinnande liten del av marknaden. Men om man satsar på bärbara och servers kommer även stationära följa med tids nog.

Om Torvalds har rätt, vilket jag tror han har, om vilken fördel det är att köra samma ISA på desktop som för de system man utvecklar programvara mot finns en väldigt stort affärsvärde för Microsoft att få till ARM64 stödet på Windows: ARM64 dominerar redan på mobilerna, ARM64 dominerar högre segmentet för inbyggda system (32-bitars Arm dominerar de lägre) och allt mer pekar på att ARM64 kommer växa rejält på server/molnsidan. Endera fixar de bra ARM64 stöd på Windows eller så tvingas utvecklarna till MacOS!

Redan idag är MacOS långt mer populärt bland utvecklare än vad det är på marknaden i stort, iOS är en viktig del där. Balmer hade kanske inte rätt i allt han sa... men en sak han ofta pekade på var nog helt sant: Windows framgångar har väldigt mycket kommit från att Windows (mycket tack vare Visual Studio) tidigt blev utvecklarnas mest populära OS. Tappar man den ledartröjan har man ett stort problem. Saker som WSL2 är ett genidrag, Linux har redan "vunnit" molnet, WSL2 gör det möjligt ändå köra allt "native" på sin Windows-burk, i alla fall fram till att även ARM64 blir ett krav.

Visa signatur

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

Permalänk

Mycket intressant läsning i denna tråd.

Tänker mig att Windows och x86 mycket möjligt kan komma att leva kvar i tex vissa industrier, sjukvård och andra branscher där man har utrustning som är helt beroende av detta. Emulering i all ära, men tror inte man kommer våga koppla in o styra tex en CNC-fräs den vägen. Ny utrustning är nått helt annat, men att än en gång lägga några hundratusen för att programmera nya drivers och kommunikationsmjukvara till 20-50 år gamla maskiner lär inte bli aktuellt.

Visa signatur

Dator: EEE901 N270/ 1GB / 20GB SSD ... Kraftigt nedbantat/tweakat Win7 x86 for speeeEED!
Facebook användare? Hatar tidslinjen? gå med i denna FB-grupp:
Undo Timeline ...med lite tur får h*lvetet ett slut!

Permalänk
Medlem

Apple A15 lär nog vara först med V9

Permalänk
Skrivet av Valetudo_swe:

Apple A15 lär nog vara först med V9

Det tror jag också, men behöver man inte kompilera om iOS för V9 då också?

Ps förta posten

Permalänk
Medlem
Skrivet av Yoshman:

64-bitars ARM, ARM64, rättar till misstagen. Där är alla instruktioner 4 bytes, programmen är inte lika kompakta som 32-bitars ARM, men fortfarande lika kompakta som x86_64 eller något kompaktare.

Vad baserar du det på?
I den här artikeln har kod skriven för 21 olika ISA jämförts i kod-densitet (storlek). x86-64 var en av de bästa. i vissa fall med dubbelt så tät som kod för 32-bittars ARM.
64-bittars ARM hade inte kommit när artikeln skrevs. Det skulle vara intressant med en nyare studie som också tar med den och RISC-V. Det finns också många sätt som en sådan studie kunde vara bättre på: man skulle vilja se på kompilator-output, <em>critical path</em> och riktiga program som finns där ute.

Visa signatur

För övrigt anser jag att tobak ska förbjudas.

Permalänk
Datavetare
Skrivet av Findecanor:

Vad baserar du det på?
I den här artikeln har kod skriven för 21 olika ISA jämförts i kod-densitet (storlek). x86-64 var en av de bästa. i vissa fall med dubbelt så tät som kod för 32-bittars ARM.
64-bittars ARM hade inte kommit när artikeln skrevs. Det skulle vara intressant med en nyare studie som också tar med den och RISC-V. Det finns också många sätt som en sådan studie kunde vara bättre på: man skulle vilja se på kompilator-output, <em>critical path</em> och riktiga program som finns där ute.

Hur kan jag läsa artikeln du länkar, den är ju bakom pay-wall?

Det jag primärt baserade mitt påstående på är vad jag sett under de ~20 år jag jobbat med inbyggda system, varav 15 som arkitekt för ett OS som stödjer x86, x86_64, ARM, ARM64, MIPS och PowerPC.

Testa gärna själv och experimentera med Compiler Explorer, där är det enkelt att se resultatet för kodsegment i en rad olika kompilatorversion och CPU-arkitekturer.

Här är två exempel (båda C++ program) kompilerade med GCC version 10, alla med "-O2" optimering och "-static" (så man får "self-contained" binärer helt utan beroende på externa bibliotek)

ISA

Program #1

Program #2

Arm (Thumb2)

1 527 764

2 021 908

Aarch64

2 060 032

2 606 504

x86

2 256 072

2 814 720

x86_64

2 370 800

2 967 928

PPC64

2 421 200

3 468 608

Andra sätt är att t.ex. jämföra storleken på binärer mellan en viss version av Ubuntu för Arm, AArch64 och x86_64. 32-bitars Arm är rejält mycket kompaktare än de andra, AArch64 och x86_64 brukar ligga rätt nära varandra.

Men det finns aspekter som är långt viktigare, något som t.ex. denna rapport belyser (ej bakom pay-wall).

Detta är vad 32-bitars Arm saknade och vad som gör ARM64 (AArch64) unik

Citat:

1. On average, ARMv8 outperforms other ISAs on similar microarchitectures, as it offers better instruction-level parallelism and has lower number of dynamic µ-ops compared to the other ISAs in most of the cases.

4. On average, x86 has the highest number of dynamic µ-ops. This agrees with previous findings when compared to Alpha [20]. There are few examples where Alpha exceeds 53x86 in the number of µ-ops, but ARMv8 always has lower or equal number of µ-ops when compared to x86.

5. x86 seems to have over-serialized code due to ISA limitations, such as use of implicit operands and overlap of one of the source and destination registers as observed by [21]. x86 has the highest average degree of use of registers (the average number of instructions, which consume the value generated by a particular instruction)

ARM64 ställer helt devisen "RISC har färre och enklare instruktioner" helt på huvudet, i alla fall när man tittar på hur program faktiskt skapas idag: via språk på högre nivå än assembler som kompileras till maskinkod. Ett typiskt program tar färre instruktioner på ARM64 än andra ISA, just den punkten var svagheten hos tidigare RISCs ställd mot x86.

Man noterar också att x86 är "over-serialized", d.v.s. den har lägre ILP (instruction level parallelism) jämfört med ARM64. Kort och gott, en viss mikroarkitektur kommer prestera bättre med en ARM64 front-end jämfört med en x86_64 front-end.

Just "over-serialized" är 32-bitars Arm stora svaghet. Det som gör koden så extremt kompakt har tyvärr också bieffekten att instruktioner har extremt mycket beroende mellan varandra -> det var rätt hopplöst att designa 32-bitars Arm CPU som matchade x86 i prestanda. Det lär varit huvudanledningen att Arm valde att designa ARM64 från scratch i stället för, som i princip alla andra, utöka den existerande 32-bitars ISAn till 64-bit.

Den effekten kan studeras med t.ex. RPi4 då den stödjer både ARM och ARM64. Samma program är i praktiken alltid snabbare om det byggs för ARM64, hur mycket varierar rejält beroende på vad som är primär flaskhals. NEON optimerade program ser typ ingen skillnad då flaskhalsen är flyttalskapacitet, medan extremfallen kan visa på upp till dubbla prestanda. Känslan jag fått är att man ser ~20-30 % högre prestanda enbart från ISA, då är Cortex A72 knappas något som utnyttjar all inneboende ILP i ARM64 då det är rätt "smal" design.

RISC-V kan vara lika bra som ARM64 på ILP punkten, men svårt att vara säker innan det finns faktiskt produkter med bredd likt Apples Firestorm.

Visa signatur

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

Permalänk
Skrivet av Yoshman:

Hur kan jag läsa artikeln du länkar, den är ju bakom pay-wall?

IEEE artiklar var gratis som student men många artklar kan man ändå hitta på annat håll (ex scholar.google.se).

Länk till samma IEEE artikel från Chalmers: http://www.cse.chalmers.se/~mckee/papers/iccd09.pdf

Permalänk
Medlem
Skrivet av Yoshman:

Hur kan jag läsa artikeln du länkar, den är ju bakom pay-wall?

Ursäkta mig, jag hade googlat upp den på flera site:r och gett dig den sämsta länken av misstag. Den finns också här (direkt länk) och här.

I övrigt hatar jag när forskningsrapporter är paywall:ade. I de allra flesta fall brukar man dock kunna googla på författarna och titeln och hitta den någon annanstans.

Skrivet av Yoshman:

Här är två exempel (båda C++ program) kompilerade med GCC version 10, alla med "-O2" optimering och "-static" (så man får "self-contained" binärer helt utan beroende på externa bibliotek)

Jag tror att statisk länkning till standardbibliotek tvärtom är fel väg för att få en korrekt jämförelse. Om man inte har skrivit och kompilerat det själv så kan man inte vara helt säker på att det inte finns några skillnader i biblioteket för olika ISA.

Att ARM Thumb är bäst i din jämförelse är inte konstigt. Det som är konstigt är att x86-64 är så långt efter.
På x86-64 borde några av de kortaste instruktionerna också vara de allra vanligast förekommande tycker man.

Visa signatur

För övrigt anser jag att tobak ska förbjudas.

Permalänk
Datavetare
Skrivet av Findecanor:

Ursäkta mig, jag hade googlat upp den på flera site:r och gett dig den sämsta länken av misstag. Den finns också här (direkt länk) och här.

I övrigt hatar jag när forskningsrapporter är paywall:ade. I de allra flesta fall brukar man dock kunna googla på författarna och titeln och hitta den någon annanstans.

Fick ju länken ovan och noterade att jag faktiskt redan hade läst den. Problemet är att den inte är aktuell, vad man fick med GCC 4.2 är långt ifrån relevant för vad man får med de senare GCC-versionerna. Arm pushade tidigare primärt sin egen kompilator, men har ändrat strategi rejält runt lansering av ARM64 och i stället lagt rejäla resurser på att förbättra GCC (medan Apple, Google, m.fl. primärt jobbat med Clang/LLVM).

Skrivet av Findecanor:

Jag tror att statisk länkning till standardbibliotek tvärtom är fel väg för att få en korrekt jämförelse. Om man inte har skrivit och kompilerat det själv så kan man inte vara helt säker på att det inte finns några skillnader i biblioteket för olika ISA.

Helt sant och var därför jag valde att kompilera två program där jag hade tillgång till all källkod, d.v.s. det var verkligen samma program och samma kompilator-version.

I teorin borde så även vara fallet om man jämför samma program i t.ex. Ubuntu, men det kan man inte veta säkert. Vidare verkar Ubuntu 19.10 vara sista versionen som stödjer 32-bitars Arm.

För att ta ett Ubuntu exempel: bash-binären (som är dynamiskt länkad) har följande storlekar

Arm: 912 712
AArch64: 1 215 072
x86_64: 1 183 448

och detta får man med ssh-binären

Arm: 677 756
AArch64: 764 792
x86_64: 789 448

OBS: Arm här är inte Thumb2 utan "vanliga" 32-bit instruktioner som alltid är 4-bytes (antar att man vill stödja även RPi1/Zero, dessa saknar stöd för Thumb2).

Ur alla praktiska hänseenden så är AArch64 och x86_64 ungefär lika kompakta, kvar är då den överlägsna inneboende ILPn hos AArch64/ARM64.

Skrivet av Findecanor:

Att ARM Thumb är bäst i din jämförelse är inte konstigt. Det som är konstigt är att x86-64 är så långt efter.
På x86-64 borde några av de kortaste instruktionerna också vara de allra vanligast förekommande tycker man.

Då den rapport du länkade var så pass gammal körde man ju Thumb1 där. Thumb1 var i.o.f.s. kompakt, men det var långsammare än "vanliga" 32-bit Arm. Thumb2 rättade till prestandaproblemen, så det är därför rätt mycket normalfallet för 32-bit Arm nu för tiden. Tycker det verkar vara en bug i GCC 10 (valde den versionen då jag använde Ubuntu 20.04 under WSL2 och det var standardversionen där), switchen som ska växla mellan "vanliga" varianten och Thumb2 verkade inte fungera (blev Thumb2 oavsett).

Problemet för x86_64 i moderna kompilatorer tror jag stavas REX-prefix och VEX-prefix... Det har städats och misstag har rättats till i x86_64, problemet är att man inte kan ta bort redan publicerade instruktioner då det skulle paja bakåtkompatibilitet. De nya instruktioner är bättre, t.ex. har man numera icke-destruerande instruktioner för AVX. Men det är rätt mycket slut på "korta" instruktioner, genomsnittslängden på instruktioner för x86_64 har ökat genom åren allt eftersom kompilatorer allt mer utnyttjar de nya instruktionerna.

Sen måste man också komma ihåg att det hänt väldigt mycket i både LLVM/Clang och GCC det senaste decenniet. ARM64 presenterades 2011 och första produkterna hittade ut 2012. Kvalitén på kodgenerering av ARM64 har förbättrats enormt under det decennium ISAn funnits, mycket pekar på att vi börjar nå toppen av S-kurvan då det inte längre är några stora skillnader de senaste GCC/Clang versionerna.

Även för 32-bit Arm har det hänt väldigt mycket. 2009, när artikeln du länkade publicerades, var det fortfarande så att Arms egen kompilator genererade både snabbare och kompaktare kod. Men likt hur Intels ICC med tiden tappat sin fördel mot GCC och Clang/LLVM har samma sak skett på Arm sidan. Idag finns ingen större skillnad mellan de öppna kompilatorerna och Arms egen kompilator. Apple (iOS/MacOS) och Google (Android) använder primärt LLVM/Clang medan Arm själva primärt pushar GCC (vilket typiskt är standardvalet på Linux).

Visa signatur

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