Innehåll

Flest bitar när han dör vinner

Inledning
8-bitar
16-bitar
32-bitar
64-bitar
Framtiden
Övrigt

 


13/10 -01 | Janne Johansson | jj@it.kth.se


Inledning

Allas vår favvoplats heter 64bits, men vad menas egentligen med att en CPU har "64-bitar"? Vad skiljer den från 32-bitars CPU:er, och vad var det med 16 och 8-bitars maskinerna? Tyvärr har det inte varit så enkelt under de senaste 20 åren så att det har funnits en enda definition på hur många bitar en CPU har, utan det har givetvis flytit omkring lite, mest beroende på vad marknadsförarna har velat att det ska stå.

När jag började med datorer (1981) så var alla hemdatorer 8 bitars. Det berodde ju mest på att det inte fanns särskilt många att välja på, och att de flesta hade samma CPU i sig. (Z80) Den jag började med var en Sinclar ZX-81. Den hade modiga 1k ram-minne och en Z80 på 1MHz. Nu var det så att på den tiden så räknade man oftast bitar genom att titta på databussen och CPU:ns interna instruktioner. En Z80 arbetar hela tiden internt med 8 bitar. Skulle man behandla större tal än 255 fick man alltså "emulera" större instruktioner genom att göra alla sådana operationer i många små steg, på samma sätt som man kan göra multiplikationen 3*3 genom att addera 3 med sig själv 3 gånger för att få 9.

På samma sätt får man då använda sig av 8-bitars instruktioner för att kunna hantera tal som ska kunna rymma tal större än 255. (Rätt ofta, med andra ord) Däremot kunde en Z80 adressera upp till 64k minne (i teorin) så alla adresspekare var 16-bitars, och bestod då av två st. 8-bitars enheter som klumpades ihop. Två 8- bitars tal kan peka ut 256*256 olika minnesplatser. Samtidigt så använde den 8 ledningar (en 8 bitars buss) mot ram-minnet, för att skicka och hämta data. Då var det ingen tvekan om att den var en 8-bitars CPU. Internt (instruktionerna) och externt (databussen) hade dataflödet samma storlek. Det fanns en del CPU:er som var 4-bitars, 9-bitars och andra märkliga konstruktioner, men de udda 9bitarna tänkte jag hoppa över, och de 4-bitars "CPU:er" som fanns tidigare skulle idag närmast klassas som embeddedchip i samma klass som en binär räknare (555) eller en vippa. Då de kom var de säkert underverk förstås.

8-bitar

  • Z80 (ZX-80, ZX-81, ZX Spectrum, C128, Jupiter Ace, TRS-80, MSX m.fl)
  • 6502 (PET, VIC20, AppleII)
  • 6510 (C-64, C-128?)
  • 8086/8 (IBM PC/XT)


Sen vart det ett litet problem med hur man skulle mäta bitarna. En del hade fortfarande 8-bitar externt, men räknade med 32 internt (68008) medans CPU:er som 8088:an såg ordentligt 8-bitars ut på insidan, men hade ändå möjlighet att adressera 20-bitar externt (1024k) Det som jag placerat under kategorin 16-bitars CPU:er är ju dessa hybrider som var varken det ena eller det andra. Jag stötte aldrig på någon CPU som jag upplevde som ren 16-bitars. Lagom tills att marketingfolket får klart för sig hur de skulle använda bitarna i reklam var redan 32-bitar på marknaden. Undantaget var väl Nintendo och liknande som kände sig tvingade att kalla sina spelkonsoler för 8,16,32-bitars i olika omgångar, men det var nog ännu mer marknadsföringsknep och mindre fakta där.

16-bitar

  • 68008 (snikversion av 68000, fanns i Sinclair QL bl.a)
  • 80186 (Compis, det svenska datorbyggarfiaskot =)
  • 80286 (IBM AT)

Det var ju många som ville placera 68000 i 16-bitarsfacket pga. att den hade 16-bitars buss externt, men internt så gick allting i 32-bitars, både för data och adressrymd. Den kunde alltså tro att det satt 4G ram kopplat till den, men eftersom bara 24 ledare från adresspinnarna var tillgängliga på utsidan så gick bara 16M att använda. Programmen var dock "rena 32-bitars" och drog full nytta av att köras på en senare 680x0 med mer än 16M minne. På Intelsidan var det iom 80386 som de tog klivet upp till 32-bitars, i mina ögon. Helt plötsligt kunde man gå ifrån intels märkliga 64k-segment-adressering och gå på rena 32-bitars adresser. Här dök också alla RISC-CPU:er upp, varpå man kunde brottas lite med RISC-vs-CISC när folket tappat förtroendet för det 16-vs-32-gnabb som pågick.

32-bitar

  • 68000,68010,68020,68030,68040,68060 (Amiga, Atari, Mac m.fl)
  • 80386,80486,Pentium-1,2,3,4 (PC)
  • Sparc sun4,sun4c,sun4d,sun4m (Sunmaskiner)
  • MIPS R2-3-4-5000 (SGI, Playstation, Pmax m.m)
  • PPC 601->G4 (PowerMac, IBMs servrar, PPCamiga =)
  • ARM (palm-device:ar)

Här blev det ett "stopp" så att säga. När 386:an kom, så var fortfarande 16M minne en lyx. Att CPU:n kunde adressera 4G var så oändligt långt bort att man inte behövde fundera på det ens. MS-DOS lät 386:an gå i gammal x86-mod alldeles för länge bara för att det inte fanns nåt kundtryck att göra det effektivare då. Under hela 1985->95 jobbade man sig upp från 4-8-16M till datorer som faktiskt kunde ha en Gigabyte minne. Då började man närma sig taket för vad de nuvarande CPU:erna skulle klara av och man fick se sig om efter en ytterligare fördubbling. Den som följt IDE länge vet ju att man på IDE-fronten normalt sett brukar fyrdubbla sig fram. Först var det problem med 540M, sen 2G, sen 8G, via 33G och nu anses IDE-problem-nivån ligga på 137Gb. Men skillnaden mellan att gå från 32-bitars adressrymd (som klarar 4294967296 bytes, 4G) till 64 innebar att man nu kan ha 18446744073709551616 bytes adresser, bara 18 miljarders miljarder bytes.

Nu tar det säkert ett tag innan vi fyller upp DET området, men för en maskin med ett par gig minne så blir det faktiskt trångt om man kör på en 32bitars CPU. Man brukar inte låta program ligga där de lagras i minnet, utan man låter MMU:n mappa om från virtuella adresser som programmet ser till riktiga adresser som operativsystemet ser för att få kontroll (och kunna swappa in och ut m.m.) så om man närmar sig gränsen för vad CPU:n kan hantera så minskar handlingsfriheten. Det här bör förklaras i en artikel om virtuellt minne egentligen, det tar för lång tid för att passa in här. Hursomhelst, att gå till 64-bitar kommer kräva att man byter CPU för de flesta, vilket innebär att man inte får med sig sina gamla fina program utan de måste kompileras om. Alla program vinner inte på att man går från 32->64 bitar, men eftersom många filsystem och liknande delar av operativ- systemet redan nu använder sig av 64-bitars matematik(på samma sätt om Z80 fick göra för att räkna tal större än 255) så kommer de delarna vinna på att CPU:n internt också behandlar data i större enheter.


  Nästa sida »

 




13/10 -01 | Janne Johansson | jj@it.kth.se

Diskutera denna artikeln i vårt forum!