Trädvy Permalänk
Avstängd
Plats
Bell
Registrerad
Maj 2007

Varför suger x86?

Det sägs ibland att x86 arkitekturen suger, och det påstås att den är dålig.

Vad är dåligt med x86 arkitekturen?
Någon som kan förklara?

Världsmästare i elakhet!

Trädvy Permalänk
Medlem
Registrerad
Jun 2006

Att säga att x86 suger tycker jag är en kraftig överdrift. De flesta nackdelar kan också ses som fördelar. På rak arm kan jag komma att tänka på följande saker som kan ses som negativt:

1: Instruktionerna har varierande längd, en del är några enstaka byte långa medan andra är betydligt längre. Detta gör det jobbigare att koda av instruktionerna, speciellt om man försöker koda av fler instruktioner samtidigt då man inte kan veta var nästa instruktion börjar innan man kodat av och vet längden av den föregående.

2: Ett litet antal register. Innan x86-64 fanns det endast 8 st register för att lagra värden för beräkningar i processorn. Detta gör att om fler än 8 värden används relativt ofta i beräkningar måste man spara undan tidigare resultat i minnet och hämta ny data från minnet varje gång man behöver ett nytt värde. Dessutom har många programmeringsspråk så kallade "calling conventions" vilka kan beskrivas som regler för hur programkod lämnar över värden mellan varandra. Dessa regler innebär oftast att indata till funktioner måste lämnas i några förbestämda register innan funktionsanropet sker och då måste man spara undan det värde som finns där. Kort sagt så kan få register leda till onödig minnes trafik som bara finns där för att det inte gick att hålla kvar värdet i processorn.

3: Måste stödja gammal kod. x86 fyller 30 redan 2008 tror jag. Under årens lopp har instruktionsuppsättningen byggts ut med en rad tillägg. Samtidigt har utvecklingen gått framåt och tack vare detta är några av de gamla instruktionerna blivit utdaterade idag och kan ses som ganska värdelösa. Trots detta måste de ändå kunna köras på alla moderna processorer för att inte bryta bakåtkompatibiliteten. Detta gör att man måste släpa på lite onödigt bagage från förr vilket förhindrar mer optimerad design.

Motargument till dessa saker är t.ex.:

1: Instruktioner av varierande längd tillåter mer optimal kodning av instruktioner. Om instruktionerna inte är längre än absolut nödvändigt får man plats med fler instruktioner i processorns cache-minnen vilket ger ökad prestanda för varje given storlek på cache-minnet. Antingen kan man spara in på cachen men behålla samma prestanda eller får ökad prestanda med samma mängd cache som en motsvarande processor exekverande likvärdig kod som tar större plats.

2: Moderna tekniker som t.ex. out of order execution med register renaming, data prefetching, cacheminnen med mera bidrar alla på olika vis till att minska inverkan av få register. Däremot ger få register ger också mycket fördelar rent hårdvarumässigt då komplexiteten hos processorn ökar rätt mycket av att lägga till register (iaf hos moderna processorer som har en hel del ninja hyss för sig i bakgrunden). Om komplexiteten ökar är det i regel svårare att få den att gå snabbt. Dessutom utökades register uppsättningen till 16 register i och med x86-64 och förmodligen överväger nackdelarna fördelarna redan vid 32 register. Det är väldigt sällan så många värden behövs samtidigt.

3: Den största fördelen av dem alla med x86 är just alla gammal kod som skrivits till den. Ingen tänker kasta bort hela det existerande mjukvarubiblioteket för några futtiga procent ökad prestanda eller någon watt mindre energiförbrukning. Dessutom har man i regel flyttat ut alla mindre viktiga instruktioner till mikrokodsprogram vilket minimerar deras negativa inverkan på resten av kärnan.

Dock tycker jag att det i dagsläget är ganska bevisat att instruktionsuppsättningsarkitekturen i praktiken har ganska liten inverkan egentligen. Det är bara en tun, tun, fasad runt processorkärna som där bakom kan se väldigt olika ut beroende på vilken funktionalitet man försöker optimera. Visst man kanske förlorar nån procent i prestanda här och var men på det stora hela avgörs processorns slutgiltiga prestanda av hur duktig man är när man bygger mikroarkitekturen.

Tolka inte det här fel nu. Helt klart finns det brister hos x86, att säga något annat vore löjligt. Dock tror jag inte de spelar någon avgörande roll i huvudmarknaden för processorerna med den instruktionsuppsättningen. Det vill säga persondatormarknaden. Dock kan nog några av dem spela en större roll om man försöker bygga processorer för andra användningsområden. Jag tror till exempel att det skulle vara svårt att implementera en x86 processor som drar under 1 W med dagens halvledarteknik. Även om det går så blir det nog inte alls lika bra som om man arbetat med en modernare och simplare instruktionsuppsättning.

Är det någon annan som har andra tankar om det här? Jag har egentligen ingen koll på x86 så om nån annan vet bättre så kan ni gärna säga till. : )

edit: oj va långt det blev... så går det när man är onykter... gonatt...
edit2: stav- och slarvfelsrättning...

/Hej hopp!

Trädvy Permalänk
Avstängd
Plats
Bell
Registrerad
Maj 2007

Tack!

Väldigt bra svar.
Jag trodde inte jag skulle få några svar.

Hör gärna om några andra här har tankar om det här...

Om inte så kan du gärna få förklara varför BIOS suger. Eller om du ser några begränsningar i x86, om det finns något väsentligt bättre i andra arkitekturer, och vilken arkitektur du gillar eller tror på. Hur långtid du tror x86 håller, etc...

Världsmästare i elakhet!

Trädvy Permalänk
Medlem
Registrerad
Jun 2006

BIOS har jag ingen aning om hur det fungerar... det är väl nått elektriskt kan man misstänka...
Angående begränsningar i x86; Under årens lopp har man ju utökat instruktionsuppsättningen med saker som saknades och kommer väl att fortsätta göra det om man ser behov. Så x86 täcker ju in det mesta nu för tiden, iaf om man inte börjar titta långt utanför huvudmarknaden. Detta gör det ju till lite av en något oelegant klumpeduns men så länge man inte försöker bygga väldigt små å söta processorer så gör det inte så mycket. Och x86 kommer nog trots dess brister att dyka upp i saker som avancerade mobiltelefoner och liknande inom en ganska snar framtid. Kommer man bara under en viss gräns i energiförbrukning för processorn så blir den ju oviktig för displayen och antennförstärkaren drar mer iaf. Och vips så är det nån mjukvarumänniska som tycker att det vore ganska smidigt att kunna använda samma kod för en mailklient till både laptopen och telefonen och sen bär det av.

Att sia om x86 död är ju nästan så populärt att det borde bli en OS-gren…
Om det någon gång ska hända så ser jag bara två möjligheter:

1: Någon uppfinner en annan arkitektur som ger sissådär 10x prestandaökning MINST i SNITT för ALLA relevanta applikationer. Och lyckas få ut den på marknaden… jättetroligt scenario alltså…

2: Tillverkarna av nuvarande x86 processorer kommer fram till att det är dags att byta upp sig och enas om en ny arkitektur (om det då finns fler än en relevant tillverkare… vilket man ju hoppas). Genom att behålla bakåtkompatibilitet, kanske genom att ha någon/några bakåtkompatibla kärnor kvar eller emuleringstekniker, kan man kanske göra en övergång på 10-20 år eller så…

Vad man skulle satsa på istället är ju lite svårt att säga... Kanske bygger man nått heterogent där man låter alla kärnor köra någon enkel RISC instruktionsuppsättning och därefter lägger till olika extensions som kan ta till vara prestanda i specialanpassade kärnor för kryptering, vektorberäkningar eller liknande. Eller så bygger man nått VLIW:igt som Itanium... Vem vet…

/Hej hopp!

Trädvy Permalänk
Avstängd
Plats
Bell
Registrerad
Maj 2007

Hur tror du multi-core utvecklingen går då?
Vi har ju dual-core och quad-core, och har hört rykten om att det skall komma 8-core processorer också.

Har vi snart 100+ core processorer?
Är det ett bra sätt att vidareutveckla dagens processorer att lägga till fler och fler kärnor?

Världsmästare i elakhet!

Trädvy Permalänk
Medlem
Registrerad
Jun 2006

Att vi numer ser fler och fler kärnor i processorerna är ju inte för att nån egentligen vill ha det så (ok det finns väl vissa fall då det är fördelaktigt...). De flesta skulle ju hellre ta en kärna i 10 GHz än 10 kärnor i 1 GHz... Skulle nog till och med vilja tro att många gladeligen skulle byta bort 10 st 2GHz kärnor pluss sin mamma för en 10 GHz (förutsatt samma IPC) trots att det ger mindre maximal prestanda. Det är ju helt enkelt inte så många problem som har speciellt mycket inbygg parallellism i sig. Nu är det ju tyvärr så att verkligheten sätter stop för hur hög frekvens man kan ha på en kärna och också hur ”bred” man kan bygga den. Där för verkar det vara så att vi är så illa tvungna att leva med fler och fler kärnor istället att ökad prestanda i varje kärna (klart att lite bättre blir de ju alltid men inte alls enligt den tidigare trenden).

Angående utvecklingen så tror jag nog att vi kommer få se iaf 8 st homogena kärnor på samma chip, kanske till och med 16 st. Efter det tror jag nog att de största vinsterna skulle komma från att byta till en mer heterogen sammansättning med specialdesignade kärnor av varierande storlek och komplexitet helt optimerade för att snabbt tugga sig igenom olika sorters kod.

Om de nån gång når över 100 kärnor på samma chip är ju lite svårt att säga. Nån gång händer det väl. Dock tror jag att det kommer mattas av något i utvecklingen runt 16-32 kärnor eller nått sånt. De kommer nog på nya trix att spendera transistorer på istället som t.ex. helt ofantliga cache. Sen kanske vi helt byter tillverkningsteknik från kisel/transistor till nått annat spännande å då lär utvecklingen ta fart i nån ny riktning igen. Kanske blir allt enkärnigt igen…

/Hej hopp!

Trädvy Permalänk
Avstängd
Plats
Afghanistan
Registrerad
Okt 2007

Man har ju hört något om att Intel (tror jag det var), skulle ha någon 80-kärnig processor eller nåt.

Också hört att de ska integrera GPU.
Kanske kommer det att integrera physics processing unit.

Även hört om "optiska processorer". Annars kanske nanotuber erbjuder något spännande....

Trädvy Permalänk
Medlem
Plats
/root
Registrerad
Jul 2001

Sun's kommande processor "Rock" ska vara utrustad med 16 cores, dock dröjer det väl innan det kommer processorer med så många kärnor för hemmabruk.

Anågende BIOS så är detta en läsvärd artikel angående nackdelarna med BIOS samt fördelarna med EFI och openfirmware (openfirmware är dock väldigt gammalt, så man undrar varför PCn inte har fått något liknande EFI mycket tidigare...).

"to conquer others is to have power, to conquer yourself is to know the way"
Blogg / Browser/OS-sniffer

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Feb 2002

Tack för läsningen multimiffo, det är det enda jag kan tillägga.

Trädvy Permalänk
Avstängd
Plats
Jönköping
Registrerad
Jul 2001
Citat:

Ursprungligen inskrivet av Morot11
Man har ju hört något om att Intel (tror jag det var), skulle ha någon 80-kärnig processor eller nåt.

Också hört att de ska integrera GPU.
Kanske kommer det att integrera physics processing unit.

Även hört om "optiska processorer". Annars kanske nanotuber erbjuder något spännande....

AMD är ju de som tagit initiativ att integrera GPU, och antagligen de som nått längst. Intels 80-kärninga CPU har inga riktiga processorer utan det handlar mer om beräkningsenheter. Det är ganska kraftlösa saker.
Du vill liksom inte ha en 80-kärnig miniräknare, den gör inte mycket. Dock lär de väl sig mycket på att utveckla sånt och i framtiden kan nog de olika tillverkarna komma med en hel del intressanta lösningar.

Trädvy Permalänk
Medlem
Registrerad
Jun 2006
Citat:

Ursprungligen inskrivet av narlith
Tack för läsningen multimiffo, det är det enda jag kan tillägga.

Tack själv!
Jag svamlar så gärna när jag har lite tid över...

/Hej hopp!

Trädvy Permalänk
Medlem
Plats
Hötorget
Registrerad
Apr 2006
Citat:

Ursprungligen inskrivet av Morot11
Man har ju hört något om att Intel (tror jag det var), skulle ha någon 80-kärnig processor eller nåt.

Också hört att de ska integrera GPU.
Kanske kommer det att integrera physics processing unit.

Även hört om "optiska processorer". Annars kanske nanotuber erbjuder något spännande....

Yep, Intels Integrerad gpu och on-die memorycontroller dyker redan upp med Nehalem.

"Nehalem is not only designed to take Intel up to eight cores on a single die, but those cores are meant to be mixed and matched with varied amounts of cache and different features in order to produce processors that are tailored to specific market segments.

The blockbuster revelation is that some Nehalem designs will sport an on-die memory controller and integrated graphics processor."

Inte nog med det.

"The other big revelation is that Nehalem will bring back simultaneous multithreading to Intel's processor line. Gelsinger says that Nehalem cores will support up to two threads, and that the implementation will be "like Hyperthreading." There aren't a lot of details yet, but Gelsinger did say that Nehalem parts would max out at eight cores and 16 threads.

Nehalem will go into production in 2008 on Intel's 45nm process."

http://arstechnica.com/news.ars/post/20070328-intel-aims-neha...

Apple MacBook Air
Samsung Galaxy S2