Intel föreslår x86S – förenklad arkitektur utan legacy-lägen

Permalänk
Medlem
Skrivet av Yoshman:

Men finns det verkligen någon 386 tillverkning kvar?

Min google-fu fick fram en del grejer åtminstone, och verkar existera såväl NOS som kloner. På den sortens system är ju moderkort med passivt bakplan en fungerande lösning också, så att man kan ta över nödvändiga ISA-kort relativt enkelt utan att behöva emulera dem.

Skrivet av Yoshman:

Fattar naturligtvis varför Intel/AMD vill göra allt för att dra liket vidare,

Den bollen kan man nog dela ut på lite olika sätt, då det var AMD som var upphovet till att förlänga livet på x86. Nu säger jag inte att just IA-64 var framtiden, men x86-64 var säkerligen dödsstöten för de flesta samtida satsningar på att byta ut x86 mot något bättre.

Väldigt få kunder kommer dessutom att bry sig om huruvida olika problem löses på ett elegant sätt.

Lars-Gunnar, 63, som köper in all IT-utrustning bryr sig inte om huruvida arkitekturen har den "ultimata minnesmodellen" eftersom Excel redan fungerar, typ.

Skrivet av Yoshman:

ARM64

I mitten av 90-talet förväntade sig väldigt många att CPUer som Sun SPARC/MIPS Rxxxxx/DEC Alpha var framtiden, såpass mycket att Intel köpte stora delar av DEC i slutet av 90-talet i samband med att Compaq och sedermera HP köpte upp Compaq/DEC. Det var vad jag kan minnas även en enorm hype kring StrongARM, men såväl Intels egna (i860/i960) RISC-CPUer som StrongARM misslyckades att komma någonstans.

Jag får mest känslan av att historien upprepar sig med att någon uppfinner något nytt och elegant som sedan faller för olika praktikaliteter.

Skrivet av Yoshman:

Om man förlitar sig på sådana saker är man rätt rökt. De 486-kretsar som tillverkas idag är "kompatibla", det är inte Intel/AMD/Cyrix originalkretsar som nytillverkas. QEMU och andra emulatorer har dock i vissa lägen fått implementera specifika buggar i CPUer och HW just för att det ska vara kompatibelt, rimligen görs det även i "moderna" 486:or.

Jo, det problemet kommer man ju inte ifrån, jag tvivlar mest på kompetensen att förstå såna saker i en värld när det mesta är såpass annorlunda inom datorvärlden. Sen är det ju då även alla gamla styrkort och liknande prylar där den ursprungliga tillverkaren upplösts för flera decennier sedan, där känns det ju spontant som en enklare lösning att ha ett system som är designat för att t.ex. ha en ISA-buss från början.

Permalänk
Medlem
Skrivet av Sveklockarn:

Det var vad jag kan minnas även en enorm hype kring StrongARM, men såväl Intels egna (i860/i960) RISC-CPUer som StrongARM misslyckades att komma någonstans.

Nja, vad jag minns så var i860 och i960 mycket tidigare än StrongARM. Intel har alltid haft lite olika produkter och ingen av de har var tänkt att bli någon uppföljare till x86.

Intel 860 var VLIW vilket är svårt att kompilera till, men kan bli riktigt snabbt om får till det i assembler, så det användes mest som en DSP i bl.a. dyrare grafikkort.
Vad jag hört så ska i960 ha gått ganska bra på embedded-marknaden.
StrongARM var ganska vanlig som CPU i PDA:er runt millenieskiftet har jag för mig.

Visa signatur

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

Permalänk
Medlem
Skrivet av Yoshman:

Om man har källkoden måste man vara rätt ordentligt inkompetent för att misslyckas porta till ARM64/RISC-V. Så "även" AutoDesk lyckades med den bedriften

"For the first time, AutoCAD for Mac 2024 and AutoCAD LT for Mac 2024 now run natively on both Intel and Apple Silicon architectures, including M1 and M2 chips in the M-series chips. The support for Apple Silicon can increase overall performance by up to two times compared to 2023."

Som sagt, AutoCad är en skog av applikationer för respektive disciplin, att kärnan nu äntligen finns till ARM64 betyder i sig väldigt lite för de flesta rent professionellt. För studerande är det ju dock grymt då man absolut klarar sig utan de specifika anpassningarna. Gissar att Architecture blir först eller redan är klart. EAGLE är väl också sannolikt högt upp i kön.

Kollar på mitt konto, på Windows har jag 48 appar att installera, på Mac fyra. Av de fyra är bara två, AutoCad och AutoCad LT kompilerade för ARM64. De två övriga är webbaserade. Av de 48 på Wintel är ju en del webbaserat också.

Mac och ARM är inte på långa väger ett bra val för ingenjörer eller tillverkande industri, det handlar inte om något år är min poäng. Alla dessa CAD/CAM-programvaror har add-ins som är mer eller mindre nödvändiga för respektive disciplin eller bransch. Vissa använder VBA, andra använder .Net för integrering, det finns python-bryggor/wrappers men de är ofta just .Net-applikationer.

Datorer för programmerare och IT-generellt har lite betydelse för stora delar av samhället, IT-branschen och dessa navelskådare är just orsaken till skolplattformar och andra kul IT-konsultprojekt av programmerare som inte förstår att verktyg skall fungera, inte för att en programmera skall få ribba över en ny processorarkitektur.

Arkitekturell CAD och som både Revit och Archicad har startats av arkitekter med programmeringskunskap, till skillnad från AutoCad exempelvis. Nästan alla vettiga add-ins startar med ett ingenjörsbehov, inte ett programmeringsspråksval.

Permalänk
Datavetare
Skrivet av Sveklockarn:

Min google-fu fick fram en del grejer åtminstone, och verkar existera såväl NOS som kloner. På den sortens system är ju moderkort med passivt bakplan en fungerande lösning också, så att man kan ta över nödvändiga ISA-kort relativt enkelt utan att behöva emulera dem.
Den bollen kan man nog dela ut på lite olika sätt, då det var AMD som var upphovet till att förlänga livet på x86. Nu säger jag inte att just IA-64 var framtiden, men x86-64 var säkerligen dödsstöten för de flesta samtida satsningar på att byta ut x86 mot något bättre.

Väldigt få kunder kommer dessutom att bry sig om huruvida olika problem löses på ett elegant sätt.

Lars-Gunnar, 63, som köper in all IT-utrustning bryr sig inte om huruvida arkitekturen har den "ultimata minnesmodellen" eftersom Excel redan fungerar, typ.

Helt sant. Intel blev inte dominant för att de satt på den bästa tekniska lösningen för en CPU, det hände dels genom lyckosamt samarbete med Microsoft ihop med att de hade något som var "tillräckligt bra" till ett lägre pris än andra.

Varför har x86 så kapitalt fallerat i mobiler? Primärt därför någon annan kunde erbjuda något som var "tillräckligt bra" (well, i det läget även bättre trots att Intel gjorde rejäla försök när de fortfarande hade världens bästa kretstillverkning) och till en betydligt bättre pris (x86 baserade SoC:ar var dyrare/krångligare).

Är därför ingen självklarhet att x86 kommer tappa sin dominas på skrivbordet, den är fortfarande "tillräckligt bra".

Det trista blir när man ser Arm vs AMD tillverka CPUer på samma TSMC-process och den förra kan designa ARM64 baserade designer som använder ~1/3 av transistornbudget/area för att nå samma prestanda/MHz. För oss kunder betyder det främst att vi nu betalar onödigt mycket för "tillräckligt bra".

Skrivet av Sveklockarn:

I mitten av 90-talet förväntade sig väldigt många att CPUer som Sun SPARC/MIPS Rxxxxx/DEC Alpha var framtiden, såpass mycket att Intel köpte stora delar av DEC i slutet av 90-talet i samband med att Compaq och sedermera HP köpte upp Compaq/DEC. Det var vad jag kan minnas även en enorm hype kring StrongARM, men såväl Intels egna (i860/i960) RISC-CPUer som StrongARM misslyckades att komma någonstans.

Jag får mest känslan av att historien upprepar sig med att någon uppfinner något nytt och elegant som sedan faller för olika praktikaliteter.
Jo, det problemet kommer man ju inte ifrån, jag tvivlar mest på kompetensen att förstå såna saker i en värld när det mesta är såpass annorlunda inom datorvärlden. Sen är det ju då även alla gamla styrkort och liknande prylar där den ursprungliga tillverkaren upplösts för flera decennier sedan, där känns det ju spontant som en enklare lösning att ha ett system som är designat för att t.ex. ha en ISA-buss från början.

Svårt att säga att ingen lyckats. Det säljs numera fler Arm-baserade CPUer per år än vad det sålts x86-baserade CPUer någonsin. Majoriteten av volymen är i.o.f.s. mikrokontrollers, en annan marknad Intel försökt sig på med x86 (Quark) som visade hur pinsamt dålig x86 är om man verkligen går efter maximal effektivitet och enkelhet.

Mikrokontrollers använder 32-bit Arm och lär fortsätta göra det under överskådlig tid. Inte alls säkert att ARM64 är rätt val där, vilket visar en annan sak: är nästan omöjligt att göra en design som är bra på allt. Det som gör 32-bit Arm lysande att bygga superenkla CPUer är samma egenskaper som i praktiken gör det omöjligt att bygga högpresterande kretsar på den ISAn (i det läget finns långt fler problem i 32-bit Arm än vad x86_64 någonsin haft).

Tittar man på de ISA som skapats och dött har ingen tidigare varit bättre på varje relevant punkt jämfört med x86, det samtidigt som Intel under 20-25 år kunder luta sig mot att kompensera eventuella brister med att ha bättre kretstillverkning än någon annan.

MIPS: var enkel, men saknar 32-bit Arms fördelar med exceptionell kompakt kod och "trick" som ger bra prestanda i "in-order" designer. Jämfört med både 32-bit Arm och x86 hade MIPS problem med låg koddensitet. "Smarta" tricket med delay-slots var en bra idé när man kunde hålla sig till en 5-stegs pipeline, men blev ett rejält misstag när frekvenserna började dra iväg

SPARC: samma problem som MIPS + "S" (scalable) delen var ju en väldigt bra idé så länge man kör enkeltrådade program som typ kör "för evigt". Rätt dålig idé om man har väldigt många OS-trådar som ofta kontext-switchar (att bygga CPUer med hundratals CPU-trådar löste inte grundproblemet)...

IA64: I grunden hade Intel rätt filosofi här, man titta på vad forskningen sa och gick all-in på det. Problemet var att VLIW var väldigt på ropet under den tiden. Fungerar bra på vissa nischer (Itanium var riktigt stark på vissa matematiskt tunga uppgifter), men VLIW har visat sig vara helt fel väg att gå för "generell heltalsintesiv kod" (vilket är majoriteten av vad vi kör på desktop/servers)

PowerPC/POWER: denna var/är i genomsnitt en klart bättre design jämfört med x86. Innan ARM64 dominerade PowerPC vissa nischer inom inbyggda system där man behöver relativt hög prestanda och låga svarstider (32-bit Arm var för klen för detta). Även här har folk försökt med x86 (i jakt på lägre pris), men det har generellt fungerat rätt dåligt. Idag dominerar ARM64 detta.

PowerPC hade ändå kunnat bli något om någon likt Intel pushat det och Microsoft verkligen anammat det. Intel kunde skjuta ned den satsningen primärt med överlägsen kiseltillverkning + PowerPC är inte direkt bättre än x86_64 på heltalsberäkningar.

ARM64 och RISC-V har inte bara "perfekt minneskonsistensmodell", de är också designade utefter att "ingen längre skriver assembler". Finns andra ISA som haft "smarta instruktioner", men dessa har i praktiken krävt just att man skriver assembler för att få ut något. ARM64/RISC-V är optimerade för att en kompilator ska kunna göra optimal kod!

Man lär sig nya saker hela tiden. Skillnaden nu mot 80/90-talet är att x86 är äldre och har nu fler kända defekter. Har faktiskt svårt att komma på en enda sak där x86 är bättre än ARM64/RISC-V, dessa producerar med moderna kompilatorer kompaktare kod än x86 (vilket historiskt varit en klar fördel för x86 mot alla RISC:ar förutom 32-bit Arm).

Fast som du skriver: dagens datorer är redan "tillräckligt bra", så inget kommer ändras om framförallt inte Windows pushar något annat än x86. Och ovanpå det lär man få endera billigare alt. snabbare system om man byter, blir spännande att se Qualcomms CPU under 2024 (ARM64 designad helt för Windows).

Skrivet av Mordekai:

Som sagt, AutoCad är en skog av applikationer för respektive disciplin, att kärnan nu äntligen finns till ARM64 betyder i sig väldigt lite för de flesta rent professionellt. För studerande är det ju dock grymt då man absolut klarar sig utan de specifika anpassningarna. Gissar att Architecture blir först eller redan är klart. EAGLE är väl också sannolikt högt upp i kön.

Kollar på mitt konto, på Windows har jag 48 appar att installera, på Mac fyra. Av de fyra är bara två, AutoCad och AutoCad LT kompilerade för ARM64. De två övriga är webbaserade. Av de 48 på Wintel är ju en del webbaserat också.

Mac och ARM är inte på långa väger ett bra val för ingenjörer eller tillverkande industri, det handlar inte om något år är min poäng. Alla dessa CAD/CAM-programvaror har add-ins som är mer eller mindre nödvändiga för respektive disciplin eller bransch. Vissa använder VBA, andra använder .Net för integrering, det finns python-bryggor/wrappers men de är ofta just .Net-applikationer.

Datorer för programmerare och IT-generellt har lite betydelse för stora delar av samhället, IT-branschen och dessa navelskådare är just orsaken till skolplattformar och andra kul IT-konsultprojekt av programmerare som inte förstår att verktyg skall fungera, inte för att en programmera skall få ribba över en ny processorarkitektur.

Arkitekturell CAD och som både Revit och Archicad har startats av arkitekter med programmeringskunskap, till skillnad från AutoCad exempelvis. Nästan alla vettiga add-ins startar med ett ingenjörsbehov, inte ett programmeringsspråksval.

Det sista är ju en punkt jag nämnt flera gånger ovan: historiskt har just portning varit en svår punkt. Framförallt kod skrivet i C eller C++ (båda är dominerade i alla programvara som har några år på nacken) kommer med väldigt nära 100 % sannolikhet inte fungera med en enkel omkompilering på MIPS, PowerPC, SPARC eller 32-bit Arm om man tidigare bara kört på x86/x86_64.

Förutsatt att man inte skrivit saker i assembler är däremot sannolikheten att det fungerar på RISC-V och ARM64 mycket hög, nära 100 % om programmen är enkeltrådade. Lite mindre om de är multitrådade, men då handlar det om saker som är buggar även på x86 men de i praktiken händer rätt sällan p.g.a. x86 minneskonsistensmodell.

Skillnaden med "moderna språk" är att det faktiskt med stor sannolikhet även fungerar rakt av på alla typer av CPUer.

Så om/när Windows för brett stöd för något annan än x86_64 lär det gå väldigt fort att porta all relevant programvara. I alla fall så länge det handlar om ISA som tar samma approach som ARM64/RISC-V.

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 Findecanor:

StrongARM var ganska vanlig som CPU i PDA:er runt millenieskiftet har jag för mig.

Det tvivlar jag inte på, men hypen då som nu byggde [såvitt jag kan minnas] på att en annan RISC-CPU skulle ta över åtminstone desktopmarknaden inom en snar framtid.

Själv drömde jag om att få köra Windows på Alpha. Jag har även för mig att DEC hade en färdig lösning för virtualisering så att man kunde köra Win32-programvaror med relativt liten prestandaförlust. 🙂

Permalänk
Medlem
Skrivet av Yoshman:

För oss kunder betyder det främst att vi nu betalar onödigt mycket för "tillräckligt bra".

Jo, det är ett sätt att se det. Tyvärr är det få som räknar på saker som är mer svårgripbara än inköpspriset och eventuellt hur länge hårdvaran fungerar. Jag inbillade mig en gång i forntiden även att IT-medvetenheten och kunskaperna skulle öka väldigt mycket när alla och deras farmor hade datorer hemma, men det verkar inte ha hänt än.

Skrivet av Yoshman:

Svårt att säga att ingen lyckats. Det säljs numera fler Arm-baserade CPUer per år än vad det sålts x86-baserade CPUer någonsin. Majoriteten av volymen är i.o.f.s. mikrokontrollers, en annan marknad Intel försökt sig på med x86 (Quark) som visade hur pinsamt dålig x86 är om man verkligen går efter maximal effektivitet och enkelhet.

Mikrokontrollers använder 32-bit Arm och lär fortsätta göra det under överskådlig tid. Inte alls säkert att ARM64 är rätt val där, vilket visar en annan sak: är nästan omöjligt att göra en design som är bra på allt. Det som gör 32-bit Arm lysande att bygga superenkla CPUer är samma egenskaper som i praktiken gör det omöjligt att bygga högpresterande kretsar på den ISAn (i det läget finns långt fler problem i 32-bit Arm än vad x86_64 någonsin haft).

Forister här tolkar mig säkert som en generell ARM-motståndare, och det kan jag ju passa på att skriva att jag absolut inte är. Jag är tvärtom glad över de enorma möjligheter som öppnats av att det existerar billiga och snabba CPUer som kan stoppas i olika automationslösningar för konsumenter utan att det påverkar priset nämnvärt.

Hela den mobila marknaden står på ARM i lite olika smaker. Likaså alla möjligheter man fått som hobbynörd att få ihop billiga enkortsdatorer som t.o.m. kan drivas med batterier.

Skrivet av Yoshman:

MIPS: var enkel, men saknar 32-bit Arms fördelar med exceptionell kompakt kod och "trick" som ger bra prestanda i "in-order" designer. Jämfört med både 32-bit Arm och x86 hade MIPS problem med låg koddensitet. "Smarta" tricket med delay-slots var en bra idé när man kunde hålla sig till en 5-stegs pipeline, men blev ett rejält misstag när frekvenserna började dra iväg

SPARC: samma problem som MIPS + "S" (scalable) delen var ju en väldigt bra idé så länge man kör enkeltrådade program som typ kör "för evigt". Rätt dålig idé om man har väldigt många OS-trådar som ofta kontext-switchar (att bygga CPUer med hundratals CPU-trådar löste inte grundproblemet)...

IA64: I grunden hade Intel rätt filosofi här, man titta på vad forskningen sa och gick all-in på det. Problemet var att VLIW var väldigt på ropet under den tiden. Fungerar bra på vissa nischer (Itanium var riktigt stark på vissa matematiskt tunga uppgifter), men VLIW har visat sig vara helt fel väg att gå för "generell heltalsintesiv kod" (vilket är majoriteten av vad vi kör på desktop/servers)

PowerPC/POWER: denna var/är i genomsnitt en klart bättre design jämfört med x86. Innan ARM64 dominerade PowerPC vissa nischer inom inbyggda system där man behöver relativt hög prestanda och låga svarstider (32-bit Arm var för klen för detta). Även här har folk försökt med x86 (i jakt på lägre pris), men det har generellt fungerat rätt dåligt. Idag dominerar ARM64 detta.

PowerPC hade ändå kunnat bli något om någon likt Intel pushat det och Microsoft verkligen anammat det. Intel kunde skjuta ned den satsningen primärt med överlägsen kiseltillverkning + PowerPC är inte direkt bättre än x86_64 på heltalsberäkningar.

Väldigt intressant att läsa dina uttömmande svar, som vanligt. Forumet borde ha en funktion för att enkelt hitta tillbaka till såna här inlägg.

Skrivet av Yoshman:

ARM64 och RISC-V har inte bara "perfekt minneskonsistensmodell", de är också designade utefter att "ingen längre skriver assembler". Finns andra ISA som haft "smarta instruktioner", men dessa har i praktiken krävt just att man skriver assembler för att få ut något. ARM64/RISC-V är optimerade för att en kompilator ska kunna göra optimal kod!

”Legacy” anses ju ofta som ett fult ord, men även utan nämnvärda programmeringskunskaper så har jag åsikten att det som cementerades på 90-talet kommer hänga med väldigt länge bara på grund av den enorma utbredningen x86 fått sedan vanligt folk fick råd med datorer.

Det blir ju även effekten att många mer eller mindre medvetet hellre jobbar i något som är bekant kontra något potentiellt bättre men okänt.

Skrivet av Yoshman:

Skillnaden med "moderna språk" är att det faktiskt med stor sannolikhet även fungerar rakt av på alla typer av CPUer.

Så om/när Windows för brett stöd för något annan än x86_64 lär det gå väldigt fort att porta all relevant programvara. I alla fall så länge det handlar om ISA som tar samma approach som ARM64/RISC-V.

Få är villiga att ta ens en liten inlärningskurva, vilket man även ser inom Windowsvärlden, i övrigt kommer merparten av alla användare inte att bry sig om vilken arkitektur de kör sina program på. I dagsläget finns ju inte specifikt den ”mjuka övergången”, och det hjälper nog inte att många av vurmarna för andra OS/arkitekturer är fast i sitt perspektiv där det ”bara” är att lära sig något annat.

Är personligen inte oroad över att bakåtkompatibilitet inte kan lösas enkelt med någon form av virtualisering heller eftersom det skett en enorm utveckling åt det hållet i allmänhet de senaste tre decennierna. Det startskottet kommer dock mest sannolikt komma ifrån de som är dominerande, som du är inne på, och inte från några nördar som övertygar världen a’la Kalifornien sent 70-tal.

Permalänk
Medlem
Skrivet av Yoshman:

Har faktiskt svårt att komma på en enda sak där x86 är bättre än ARM64/RISC-V, dessa producerar med moderna kompilatorer kompaktare kod än x86 (vilket historiskt varit en klar fördel för x86 mot alla RISC:ar förutom 32-bit Arm).

En skillnad jag stött på är att x86 har bättre stöd för att hantera overflow av heltalsberäkningar.
Nyare, populära programmeringsspråk som t.ex. Swift och Rust vill gärna ha det.

Rust har visserligen en workaround iom att overflow-koll endast är påslaget i Debug-byggen, och avslaget i Release. Då gäller det att alla ens såna buggar har hittats i tester innan släpp ...

Visa signatur

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

Permalänk
Datavetare
Skrivet av Findecanor:

En skillnad jag stött på är att x86 har bättre stöd för att hantera overflow av heltalsberäkningar.
Nyare, populära programmeringsspråk som t.ex. Swift och Rust vill gärna ha det.

Rust har visserligen en workaround iom att overflow-koll endast är påslaget i Debug-byggen, och avslaget i Release. Då gäller det att alla ens såna buggar har hittats i tester innan släpp ...

Hur är x86 bättre?

Både ARM64 och 32-bit Arm kan specificera om en instruktion ska påverka flaggor eller ej. I majoriteten av fallen vill man inte att flag-fältet ska uppdateras då det är en (av flera) anledningar att CPU får svårt att köra många instruktioner parallellt. Nästan alla ALU instruktioner i x86 kommer ha implicit påverkan på flag-flältet, något som ger extra komplexitet i out-of-order designer.

RISC-V har tagit detta ännu ett steg längre (primärt för att förenkla designen och öka potentiell ILP), där finns inte ens ett flag-fält (vilket fortfarande är "upp till bevis" om det är ett smart drag, finns både uppsida och nedsidan).

Tar vi t.ex. denna Rust-kod som även kollar för overflow i release, ger "panic" vid overflow

pub fn add_with_overflow_check(a: u32, b: u32) -> u32 { a.checked_add(b).unwrap() }

Så ser den relevanta delen ut så här på x86_64, alla kompilerade med samma rustc kompilator

add edi, esi jb .ERROR_HANDLING_PATH mov eax, edi ret

ARM64

adds w0, w0, w1 ;; ALU instructions ending with "s" update flags, instructions without don't b.hs .ERROR_HANDLING_PATH ret

ARMv7

adds r0, r0, r1 ;; ALU instructions ending with "s" update flags, instructions without don't bxlo lr ;; 32-bit ARM-ism, this will only take effekt if O-flag is set, is otherwise a no-op ;; error handling follows

RISC-V

mv a2, a0 addw a0, a0, a1 sext.w a1, a2 bltu a0, a1, .ERROR_HANDLING_PATH ret

32-bit Arm är typiskt crazy kompakt, men att nästan alla instruktioner är villkorade är ingen höjdare om man vill bygga "breda" mikroarkitekturer... Men det är guld värt för enkla in-order CPUer

ARM64 är mer kompakt än x86, i detta fall delvis p.g.a. hur ABI är definierat för x86_64 (returvärde måste ligga i eax, första och andra argumentet kommer i edi och esi)

Just i detta fall syns nackdelen med RISC-V designen, det blir en instruktion mer än för x86_64. Majoriteten av instruktioner behöver dock inte flaggor och är en lite förenkling att helt skippa flagfältet. Behövs high-end RISC-V som ställs mot likvärdig ARM64 för att avgöra vem som valt "bäst" här (min gissning är tyvärr på ARM64, vill se RISC-V som slutlig "vinnare").

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:

Hur är x86 bättre?

x86 har direkt stöd för overflow-koll i alla fyra räknesätten, samt vänsterskift (bara med 1 men ändå).

ARM64 har bara stöd i "add" och "sub". "mul" behöver fyra instruktioner.Motsvarigheten för "sdiv" blir flera cmp och branch.
Eftersom RISC-V inte har inga flaggor alls eller "smarta" instruktioner för bit-fippling som ARM har så det blir ännu fler instruktioner, ja.
Om overflow-koll ska vara det normala så spelar det roll.

Jag håller med om att det är bättre när flaggor sätts bara av vissa instruktioner. Ännu bättre vore det om flaggan var kumulativ, så att man behövde kolla den först efter att en beräkning är klar, innan man sparar resultatet eller använder det för control flow. PowerPC har såna instruktioner och flagga, men den verkar bara funka för signed overflow.
ARM har en kumulativ flagga för sina mättande SIMD-instruktioner, men då också bara för add, sub ... och ett par ovanliga DSP-instruktioner. RISC-V's V-utökning har det också för mättade SIMD add och sub.
Den föreslagna "P"-utökningen till RISC-V (SIMD i heltalsregister) har kumulativ flagga för mättnad och använder heltalsregister men den har inte kommit närmare standardisering eller implementering på ett par år, så jag är rädd att någon variant av den aldrig blir av.

Visa signatur

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

Permalänk
Datavetare
Skrivet av Findecanor:

x86 har direkt stöd för overflow-koll i alla fyra räknesätten, samt vänsterskift (bara med 1 men ändå).

ARM64 har bara stöd i "add" och "sub". "mul" behöver fyra instruktioner.Motsvarigheten för "sdiv" blir flera cmp och branch.
Eftersom RISC-V inte har inga flaggor alls eller "smarta" instruktioner för bit-fippling som ARM har så det blir ännu fler instruktioner, ja.
Om overflow-koll ska vara det normala så spelar det roll.

Jag håller med om att det är bättre när flaggor sätts bara av vissa instruktioner. Ännu bättre vore det om flaggan var kumulativ, så att man behövde kolla den först efter att en beräkning är klar, innan man sparar resultatet eller använder det för control flow. PowerPC har såna instruktioner och flagga, men den verkar bara funka för signed overflow.
ARM har en kumulativ flagga för sina mättande SIMD-instruktioner, men då också bara för add, sub ... och ett par ovanliga DSP-instruktioner. RISC-V's V-utökning har det också för mättade SIMD add och sub.
Den föreslagna "P"-utökningen till RISC-V (SIMD i heltalsregister) har kumulativ flagga för mättnad och använder heltalsregister men den har inte kommit närmare standardisering eller implementering på ett par år, så jag är rädd att någon variant av den aldrig blir av.

Fast x86 har ju andra begränsningar när man kommer till heltals multiplikation och heltalsdivision: ax och dx register används implicit både som källa och mottagare. Det kommer i sig generera extra instruktioner utanför de enklaste fallen.

Ovanpå det är både kapacitet och latens rätt rejält mycket mindre för multiplikation och division, vilket i en någorlunda "bred" mikroarkitektur betyder att man i praktiken kan köra extra instruktioner "gratis" parallellt. Som exempel kan M1/M2 köra upp till 6 st add/sub instruktioner per cykel, upp till 3 st adds/subs (alla med 1 cykels latens). Går bara köra 2 mul och 0.5 div (1 varannan cykel) per cykler (3 resp 7 cyklers latens). AMD/Intels senaste ligger på liknande nivåer, peak är nog 4 per cykel av de enklaste instruktionerna.

Tar vi Rust fallet igen är det nu lika många instruktioner för x86_64 som för ARM64, ARMv7 lyckas fortfarande hamna lägst och ser sådär ut för RISC-V...

x86_64

mov eax, edi mul esi jo .ERROR_HANDLING ret

ARM64

umull x0, w0, w1 tst x0, #0xffffffff00000000 b.ne .ERROR_HANDLING ret

ARMv7

umull r0, r1, r0, r1 cmp r1, #0 bxeq lr ;; error handling follows

RISC-V

slli a1, a1, 32 slli a0, a0, 32 mulhu a0, a0, a1 srli a1, a0, 32 bnez a1, .ERROR_HANDLING ret

Sen är väl ändå normalfallet att man kombinerar "add-with-carry" instruktion med eventuell overflow check på sista operationen när man jobbar med godtyckligt stora tal, i det läget vinner man väl ändå inget på med kumulativ flag-hantering, eller?

Testar man att addera två u128 i Rust med overflow kontroll tar det lika många instruktioner på x86_64 som för ARM64 (båda behöver totalt 6 instruktioner). Här börjar det gå utför med ARMv7 (fast det beror mycket på att den är 32-bit), det krävs 13 instruktioner medan RISC-V (har använt riscv64gc) behöver 10 st.

Fast då har man nog ändå lämnat "normalfallet" bakom 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

Låter lite som Apple, de tog bort allt 32-bit stöd för några år sedan i MacOs. Kontentan blev att alla 32-bitars program/spel som användare har köpt via appstore och inte längre fungerar, så hänvisar Apple att utgivaren till spel/program som har ett antal år på nacken ska uppdatera dessa. Vilket i praktiken aldrig hände och användare fick roll-back och gå tillbaka till föregående operativsystem.
Så hur ser Intel på framtiden, ska man sitta kvar på ett gammalt system eller enbart köpa Amd om man vill behålla sina spel/appar som inte är renodlade 64-bit?

Visa signatur

Legion 5 Pro" Ryzen 5800H / 32GB ram / 2TB+1TB nvme / RTX 3070 8GB 140w

Permalänk
Skrivet av Playboy_1338:

Låter lite som Apple, de tog bort allt 32-bit stöd för några år sedan i MacOs. Kontentan blev att alla 32-bitars program/spel som användare har köpt via appstore och inte längre fungerar, så hänvisar Apple att utgivaren till spel/program som har ett antal år på nacken ska uppdatera dessa. Vilket i praktiken aldrig hände och användare fick roll-back och gå tillbaka till föregående operativsystem.
Så hur ser Intel på framtiden, ska man sitta kvar på ett gammalt system eller enbart köpa Amd om man vill behålla sina spel/appar som inte är renodlade 64-bit?

Du har inte läst tråden, va?
Det påtalas ett flertal gånger i tråden att 32 bittars program kommer att fungera med den förenklade processorn.

Permalänk
Medlem
Skrivet av Playboy_1338:

Så hur ser Intel på framtiden, ska man sitta kvar på ett gammalt system eller enbart köpa Amd om man vill behålla sina spel/appar som inte är renodlade 64-bit?

WoW64 är över 20 år gammalt, alla Windows x64-versioner för konsumenter har använt det sedan Windows Vista 2006, och det hanterar redan körningen av alla 32-bitarsapplikationer i 64-bitarsmiljön.

Det du är oroad över har alltså redan hänt för längesen, och det fungerar redan. Undantaget är vissa av de tidigaste spelen (t.ex. Command & Conquer) som släpptes på Windows 9x/ME-tiden, där får man använda emulator i vissa fall, men så har det varit sedan 2006.

Permalänk
Medlem
Skrivet av Sveklockarn:

WoW64 är över 20 år gammalt, alla Windows x64-versioner för konsumenter har använt det sedan Windows Vista 2006, och det hanterar redan körningen av alla 32-bitarsapplikationer i 64-bitarsmiljön.

Det du är oroad över har alltså redan hänt för längesen, och det fungerar redan. Undantaget är vissa av de tidigaste spelen (t.ex. Command & Conquer) som släpptes på Windows 9x/ME-tiden, där får man använda emulator i vissa fall, men så har det varit sedan 2006.

Jag ser att du inte förstod vad jag skrev.
Jag var en av de som var med om det när Apple uppgraderade MacOS till att ta bort allt tidigare stöd för 32bit. De tidigare MacOS var också 64bit system, men de raderade stödet för 32bit applikationer.
Hänt för längesen? Aldrig i Windows miljön iaf. Går du in på C:\ så har du väl 2st program mappar, en vanlig ”program” och en ”program x86”. Så även om du kör Xp 64 bit, så har det fortfarande stöd för 32bit. Nu handlade det väl om att skrota att ens kunna exekvera 32bit?

Visa signatur

Legion 5 Pro" Ryzen 5800H / 32GB ram / 2TB+1TB nvme / RTX 3070 8GB 140w

Permalänk
Medlem
Skrivet av Playboy_1338:

Jag var en av de som var med om det när Apple uppgraderade MacOS till att ta bort allt tidigare stöd för 32bit. De tidigare MacOS var också 64bit system, men de raderade stödet för 32bit applikationer.

Men så gjorde alltså inte Microsoft utan de såg till att Win32-applikationer kunde fungera på 64-bitars operativsystem redan för över tjugo år sedan. Det kommer alltså högst sannolikt att vara precis samma med x86S vad Windows beträffar, och man kommer alltså att använda WoW64 även där.

Skrivet av Playboy_1338:

Nu handlade det väl om att skrota att ens kunna exekvera 32bit?

Nej. Det kommer däremot inte gå att köra 32-bitars operativsystem, men det spelar ju som jag förklarade i förra inlägget ingen som helst roll eftersom WoW64 är en grej sedan länge.

Permalänk
Datavetare
Skrivet av Playboy_1338:

Jag ser att du inte förstod vad jag skrev.
Jag var en av de som var med om det när Apple uppgraderade MacOS till att ta bort allt tidigare stöd för 32bit. De tidigare MacOS var också 64bit system, men de raderade stödet för 32bit applikationer.
Hänt för längesen? Aldrig i Windows miljön iaf. Går du in på C:\ så har du väl 2st program mappar, en vanlig ”program” och en ”program x86”. Så även om du kör Xp 64 bit, så har det fortfarande stöd för 32bit. Nu handlade det väl om att skrota att ens kunna exekvera 32bit?

Vad det primärt handlar om här är att ta bort en massa saker som i praktiken inte längre används.

Även de absolut nyaste x86 CPUer idag startar fortfarande i 16-bit läge med minnesskydd avslaget. Det har inte varit relevant sedan vi körde DOS och Windows 3.x/9x.

Sedan har Microsoft droppat stödet för 32-bit OS-kärnor, så det är inte heller speciellt relevant längre.

x64S handlar om att ta bort de delar som inte längre används + starta CPU direkt i 64-bit läge med minnes-skydd aktiver, då slipper man massa ”trampolin-kod” som i praktiken bara är overhead.

Att Apple rätt snabbt skrotade 32-bit stödet har att göra med att 32 vs 64 bit är på teknisk nivå fundamentalt två olika saker på x86 vs Arm. På x86 är 64-bit läget en direkt utökning av 32-bit läget, de flesta av de instruktioner som finns i båda lägena har samma binärkodning. D.v.s. inte superstor uppoffring att lämna kvar 32-bit stöd.

Arm insåg vilka begränsningar deras 32-bit instruktionsuppsättning har och de förstod hur mycket bättre man skulle kunna göra saker om man gjorde något nytt. Så ARM64 är inte en utökning av ARMv7, det är en helt ny instruktionsuppsättning med ny binärkodning.

Så en Arm CPU som stödjer både 32-bit oh 64-bit måste i praktiken ha två ”front-end” implementationer. Det går inte heller att dra full nytt av fördelarna med ARM64 så länge man även måste tänka på 32-bit läget. Arm själv höll fast längre vid 32-bit, men även där såg man ett hopp i prestanda i samband med att man gick till en ”ren” ARM64 implementationer i deras Cortex A/X serie.

Nackdelen med det Arm gjorde är att man helt tappar 32-bit stödet, fördel är en enklare och mer effektiv plattform när man väl tagit steget.

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

Kan x86s ge bättre prestanda?

Visa signatur

Lightsaber - Black armour - and balls!

Permalänk
Medlem

Ja, en ny icke-kompatibel standard löser såklart alla problem.
Låt oss kalla den för tItanium!

Permalänk
Hedersmedlem
Skrivet av Svensktiger:

Ja, en ny icke-kompatibel standard löser såklart alla problem.
Låt oss kalla den för tItanium!

Den är ju kompatibel nog att snittpersonen inte kommer märka av det så länge som de kör ett uppdaterat OS. Inte alls som Itanium som var helt annorlunda i grunden.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Moderator
Festpilot 2020, Antiallo

Ja, förenkla x86 så kan vi få ut lite dugliga x86-processorer med rimlig prestanda ett tag till.

@kotz Senaste det pratades om att fimpa alla uråldriga stenåldersinstruktioner så snackades det om ett prestandalyft på ca 30% över ett bräde. Det är värt det om man kan bibehålla 90% av prestandan i emulerade lager av uråldrig programvara likt rosetta.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Hedersmedlem
Skrivet av DavidtheDoom:

@kotz Senaste det pratades om att fimpa alla uråldriga stenåldersinstruktioner så snackades det om ett prestandalyft på ca 30% över ett bräde. Det är värt det om man kan bibehålla 90% av prestandan i emulerade lager av uråldrig programvara likt rosetta.

Hm, vet du mer specifikt varför det skulle göra så stor skillnad?
Det är väl knappast tal om 30%+ kretsyta som sparas in (och 30% extra kretsyta ger väl knappast 30% prestanda?), så varifrån kommer prestandaökningen?

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Datavetare
Skrivet av Thomas:

Hm, vet du mer specifikt varför det skulle göra så stor skillnad?
Det är väl knappast tal om 30%+ kretsyta som sparas in (och 30% extra kretsyta ger väl knappast 30% prestanda?), så varifrån kommer prestandaökningen?

x86S lär inte ge någon prestandavinst alls i sig själv. Däremot kan man ju ta de transistorer man skulle spara in och i stället lägga de på något som kan förbättra prestanda
Men ja, handlar knappast om några 30 % utan i bästa fall kanske någon enstaka procent.

Det som x86S skulle ändra är att ta bort stöd för något som i praktiken ändå inte används. Tvärtom betyder dess existens mer kod bara för att ta sig förbi "gamla lägen som sendan länge helt saknar relevans i moderna OS". Detta vore huvudsyfte med denna manöver.

Visa signatur

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