64-bits-prosessorer   
 

Opp

 

 

 

 

 

 

 

 

 

Dato: 12. jan. 2005

Etter at 64-bits-prosessorer har kommet på markedet har det oppstått en rekke misforståelser. I denne artikkelen gjennomgår vi de grunnleggende forskjellene mellom 32- og 64-bits prosessorer.

Både forumet og undertegnedes innboks har tidvis fylt seg opp med spørsmål og merkelige påstander om 64-bits-prosessorer. Det viser at det finnes mange som lurer på hva overgangen til 64-bit egentlig betyr og ikke minst at det finnes mange misoppfattelser.

Noe av det jeg husker best var en kameratgjeng fra IKT-driftsfag på en videregående skole, som åpenbart hadde hengt for mye i 1337-miljøet. Disse mente jeg måtte være en patetisk person som ikke i større grad la vekt på Linux i tester av Athlon 64-prosessorer. Det kan vi for så vidt si oss enige i, men det tar dessverre for mye tid i forhold til hva man får igjen for det. Det som derimot var interessant, var at denne gjengen mente at man med Linux, som støtter 64-bit, ville oppnå dobbelt så høy ytelse fordi (vi siterer) "64-bit som kjent er 2 x 32-bit".

La oss avlive den myten med én gang: En 64-bits prosessor tilsvarer ikke to 32-bits prosessorer, og gir dertil ikke automatisk noen dobling av ytelsen.

Denne guiden er ikke først og fremst ment for de som har studert mange år med informatikk. Den er mer siktet inn mot de som ønsker å forstå hva forskjellen på 32- og 64-bits prosessorer er, både rent teknisk og i praksis. De som har studert dette mye vil nok si at vi forenkler i overkant mye, og at det er mange faktorer som spiller inn. Skal man derimot studere dette temaet i detalj, finnes det mange tykke bøker som man må gå igjennom. Målet med guiden er at man etter å ha lest den skal ha et begrep om hva forskjellen mellom 32- og 64-bit innebærer.

På neste side vil vi ta for oss den helt fundamentale forskjellen mellom 32- og 64-bit, og her blir det en god del tall. Noen vil kanskje føle at det blir for mye tall, og at dette derfor kan bli litt vel tungt lesestoff. Det er likevel viktig å ha et lite innblikk i den helt fundamentale forskjellen mellom 32- og 64-bits prosessorer. Datamaskiner er maskiner som kun jobber med tall, og det er derfor umulig å komme helt unna tallene.

På siste side vil vil gå mer gjennom den praktiske forskjellen, som kommer som en konsekvens av den fundamentale forskjellen i teknologien.

Hva er en 64-bits prosessor?

En 64-bits prosessor er i seg selv ingen stor revolusjon. En prosessor håndterer et visst antall bits om gangen. Det er ikke slik at det er umulig å lage f.eks. 256-bits prosessorer - de finnes det mange av i verden. Årsaken til at man ikke går mye høyere enn 64-bit, er fordi flere bits ikke er en udelt positiv ting, men medfører både fordeler og ulemper.

16-bit
Går man tilbake i historien var 80286-prosessoren til Intel (bedre kjent som 286) en 16-bit prosessor, og en av de første PC-prosessorene mange av oss ble kjent med. Den kunne håndtere 16 bit om gangen. Som kjent opererer datamaskiner med det binære tallsystemet (kun tallene 0 og 1). En 16-bits prosessor kan altså håndtere en 16-siffers tallrekke om gangen.

Med 16 bit er det høyeste tallet man i prinsippet kan skrive 2^16 = 65536-1. Det er nok et tall som mange vil kjenne igjen. Minus 1 har vi satt på fordi bare 0 også regnes som et tall, og man har altså 65 536 tallkombinasjoner, der 65 535 blir det høyeste tallet.

Om en 16-bit prosessor skal legge sammen tallene 561 og 10687, vil det i praksis se slik ut:

   0000001000110001 (= 561)
+ 0010100110111111 (= 10687)
= 0010101111110000 (= 11248)

Legg merke til at den legger til mange 0-er i starten av sifferet, uavhengig av størrelsen av tallet. Den opererer alltid med 16 binære siffer i tallene.

32-bit
I 1985 lanserte Intel sin første 32-bits prosessor, bedre kjent som 386. Denne kunne behandle 32-bit om gangen, istedenfor 16. Dette gir en betydelig økning i sifrene man kan operere med. 2^32 = 4294967296-1 blir her det høyeste tallet, i motsetning til 65536-1 på en 16-bits prosessor.

Om en 32-bit prosessor skal legge sammen tallene 561 og 10687, vil det i praksis se slik ut:

   00000000000000000000001000110001 (= 561)
+ 00000000000000000010100110111111 (= 10687)
= 00000000000000000010101111110000 (= 11248)

Legg merke til at tallene er identiske med de over, de er bare dobbelt så lange og inneholder 16 ekstra 0-er. Dette er ikke noe som er unikt med det binære tallsystemet. I vårt titallssystem vil f.eks. 00045 ha den samme verdien som 45.

64-bit
Så går vi over til 64-bits prosessorer, som f.eks. AMD Athlon 64. Her kan man behandle tall opp til: 2^64 = 18446744073709551616-1. Sagt på en annen måte er dette 18,4 peta, eller 18,4 milliarder milliarder. Legg merke til at en 64-bits prosessor ikke bare kan behandle tall som er dobbelt så store som en 32-bits prosessor, men tall nesten 4,3 millliarder ganger større! Lengden på tallene uttrykt binært er derimot bare den dobbelte.

Skal en 64-bit prosessor legge sammen tallene 561 og 10687, vil det i praksis se slik ut:

   000000000000000000000000000000000000000-
   0000000000000001000110001 (= 561)
+ 000000000000000000000000000000000000000-
   0000000000010100110111111 (= 10687)
= 000000000000000000000000000000000000000-
   0000000000010101111110000 (= 11248)

Legg igjen merke til at tallene som blir gjengitt er identiske med de to over, men igjen har de bare mange flere 0-er foran seg.

Prinsipielt er det ikke forskjellig fremgangsmåte for utregninger i en 16-bit prosessor i forhold til en 64-bits prosessor. Svært grovt kan man skissere en adderingsoperasjon i en prosessor slik:

  1. Hent inn tall a fra RAM/cache og legg i register A
    (et register er små lagringsområder i selve prosessorkjernen hvor prosessoren mellomlagrer slike tall til bruk i regneoperasjoner).
  2. Hent inn tall b fra RAM/cache og legg i register B.
  3. Addér register A og B og legg resultat i register C.
  4. Så kan resultatet brukes videre i andre regneoperasjoner, eller skrives tilbake til RAM/cache.

Man forstår fort at om man skal legge sammen tall på under 4 milliarder, har en 64-bits prosessor lite for seg. Det vi har sett på så langt, viser bare at forskjellen mellom antall bit en prosessor kan behandle går på hvor lange tallrekker den kan behandle i én operasjon. Legg merke til at en 32-bits prosessor fint kan behandle tall over 4,3 milliarder, den må bare gjøre det i flere operasjoner.

Det betyr at så lenge man holder seg til relativt små tall, har 64-bits prosessorer lite for seg. Tvert i mot er det faktisk en ulempe med flere bits enn det som er nødvendig. Husk at hvert tall som skal lagres i en 64-bits prosessor alltid er 64-bit, mens det i en 32-bits prosessor alltid er 32-bit.

Det vil si at en 64-bits prosessor i prinsippet trenger dobbelt så store registre og cache for å gjøre nøyaktig den samme jobben som en 32-bits prosessor - forutsatt at tallene ikke er for store.

Legger man sammen tallene vi har brukt som eksempler over, ville faktisk i prinsippet en 16-bits prosessor vært det mest gunstige, fordi den kun bruker 1/4 så mye plass i registre, cache og RAM som en 64-bits prosessor. I de fleste av dagens programmer vil det faktisk være helt unødvendig med mer enn 32-bit. Dette er en av hovedårsakene til at Intel har vært tilbakeholdne med å gå over til 64-bit på desktop-markedet. Tekst består f.eks. bare av 8 eller 16 bit lange tallsekvenser.

Ikke bare ulemper

Det er selvsagt ikke slik at det bare er ulemper med å gå over til 64-bit-prosessorer. Også en rekke fordeler finnes, men de er kanskje ikke like store som man skulle tro.

Mer RAM
Den mest åpenbare fordelen er evnen til å adressere mer minne. En datamaskin må til enhver tid ha muligheten til å ha kontroll over hvor alt ligger i RAM-en. En prosessor kan i utgangspunktet ikke adressere flere byte lagringsplass enn antall bit den selv opererer med. Det vil si at en 32-bits prosessor ikke kan adressere mer enn ca 4,3 milliarder bytes.

I praksis betyr det at en 32-bits prosessor kan adressere 4 GiB (4 gigabinære byte) med data. Med andre ord kan man med en hvilken som helst vanlig desktop-prosessor i utgangspunktet ikke ha mer enn 4 GB minne. Mer enn dette er det faktisk umulig for datamaskinen å håndtere.

4 GB høres kanskje mye ut, men tenk på følgende: Av disse 4 GB blir som regel 1 eller 2 GB reservert for I/O-operasjoner (dette varierer litt), noe som betyr at programmer maksimalt sett kun har tilgang til 2 eller 3 GB med data. Dette begynner allerede i dag å bli for lite for mange.

I tillegg har man en tommelfingerregel som sier at man bør ha en swap-fil på 2,5 ganger RAM-størrelsen. Problemet er at prosessoren ikke ser forskjell på RAM og swap-fil, og swap-filen kan derfor ikke være større enn 4 GB. I dag strekker man altså denne regelen, da det finnes mange som har mer enn 1,6 GB RAM. (Det skal nevnes at dette er en gammel tommelfingerregel, og at den i dag ikke nødvendigvis er like korrekt som da den ble bragt på banen. Mange vil i dag påstå at 1,5 ganger størrelsen på RAM-en, eller ingen swap-fil i det hele tatt, er tingen.)

Det er utviklet teknikker for å utvide dette opp til 64 GB med visse begrensninger, gjennom noe som kalles Physical Address Extention, som gjelder mengde RAM, ikke swap-fil. Dette støttes kun av de aller dyreste serveroperativsystemene, og er et relativt dårlig substitutt for skikkelig adressering.

Med en 64-bits prosessor kan man i prinsippet adressere opp til 2^64 byte, altså omtrent 18 petabyte med data. Sagt på en annen måte: Uhorvelig mye data! Så mye RAM vil neppe noen ha i PC-en sin med det første.

Dagens AMD64-teknologi utnytter faktisk ikke hele dette potensialet, og adresserer ikke fysisk minne med mer enn 40 bit, eller 1024 GB, men bruker 48-bit til å adressere virtuelt minne - opp til 256 TB. Sistnevnte er like stort som Windows maksimalt støtter i harddiskstørrelser.

Tro det eller ei, men dette med mulighet for større fysisk minne er faktisk det aller viktigste poenget med 64-bits-prosessorer. Dette har bl.a. Intel gjort ganske klart i sin navngiving av sin 64-bits-teknologi for desktop-markedet, nemlig EM64T: Extended Memory 64 Technology. Intel anser faktisk ikke muligheten for å behandle store tall som så alt for viktig. At dette har å gjøre med svakheter i arkitekturen på dagens Pentium 4-prosessorer vil mange hevde er årsaken, men det er en helt annen diskusjon.

Det er viktig å merke seg at det ikke er nok å ha en prosessor som kan kjøre 64-bits kode, som AMD64- og EM64T-prosessorene. En må i tillegg ha et 64-bits operativsystem. Det vil si at man med dagens Windows XP ikke kan ha mer enn 4 GB RAM uansett. Den endelige 64-bits-versjonen av Windows XP er ventet på markedet i løpet av 2005.

Både 32 og 64-bit
Dagens prosessorer med 64-bit-støtte kan typisk kjøre både 32- og 64-bits kode. Med 32-/64-bits kode menes det at programmer som skal kjøre på et 64-bits system eksplisitt må kompileres for 64-bit for at det skal fungere korrekt. Det er ikke bare å ta et 32-bits program og kjøre det på et 64-bits system, og håpe på en ytelsesforbedring. Et program kompilert for 64-bits systemer blir da 64-bits kode (noe forenklet).

(Grunnet arkitekturiske forskjeller i AMD64-prosessorene vil man faktisk kunne oppnå ytelsesforbedring med 32-bits kode når den kjører på et 64-bits OS. Dette kommer av helt andre årsaker enn overgang til 64-bit, men har med flere registre i prosessoren å gjøre, som kun blir aktivert i 64-bits-modus og kan gi ytelsesfordeler.)

I utgangspunktet er det slik at hvis man tar en 32-bits prosessor og utvider den til 64-bit, slik Intel har gjort med sin nye Pentium 4 600-serie, og som AMD til en viss grad har gjort med sine AMD64-prosessorer, har man mulighet til å kjøre 32-bits kode på en 64-bits prosessor. På samme måte kan dagens 32-bits prosessorer/operativsystemer kjøre 16-bits kode fra de gamle MS DOS-dagene.

Athlon 64-/Opteron-prosessorene fra AMD, og de kommende 64-bits-prosessorene for desktop-markedet fra Intel, samt nye Xeon-prosessorer, vil være i stand til å kjøre 32-bits operativsystemer og kjøre 32-bits kode. Dette er fordi de er bygget på gammel x86-teknologi, og er laget eksplisitt for å være bakoverkompatible.

Det er likevel ikke slik at 64-bits prosessorer automatisk er bakoverkompatible. Ser man på de første Itanium-prosessorene til Intel, som er rene 64-bits prosessorer, kunne de i utgangspunktet ikke kjøre 32-bits kode i det hele tatt. For å kjøre 32-bits kode måtte man emulere et 32-bits system via programvare, noe som gjorde at effektiviteten ble svært lav. Dette er forbedret mye i de nyeste Itanium II-prosessorene, men illustrerer poenget at det ikke er noen automatikk i at 64-bits-prosessorer kan kjøre 32-bits kode.

Raskere på noe
På forrige side var vi inne på at en 64-bits prosessor kan behandle større tall av gangen enn 32-bits prosessorer, og det er her ytelsesfordelen med 64-bit kommer inn. Hvis man bedriver regneoperasjoner som addering, subtrahering, dividering og multiplikasjon i sin enkle form, noe nesten alle programmer i hovedsak er bygget opp av, har 64-bits teknologi lite for seg.

Har man derimot komplekse regneoperasjoner som skal utføres begynner 64-bit å ha noe for seg. La oss si at man skal kryptere informasjon ut i fra f.eks. 256-bits krypteringsnøkler, noe som ikke er uvanlig, kan en 64-bits prosessor ta langt større "jafs" av operasjonen per syklus. På denne måten får den utført mer per operasjon, og den vil derfor ta kortere tid. Ace's Hardware viste at de i flere scenarioer klarte å halvere krypteringstiden med 64-bit i forhold til 32-bit. Dette er dog langt fra den generelle tendensen man vil oppleve på systemet i den daglige bruken.

De samme fordelene vil man kunne oppleve ved f.eks. komprimering av video til f.eks. DivX-formatet. Utviklerne av DivX sier at man kan oppnå 20% ytelsesforbedring med 64-bits systemer fremfor 32-bit, noe som ser ut til å stemme ganske bra med hva tester viser. Tunge bildebehandlingsfiltere i Photoshop vil også kunne dra fordel av 64-bits systemer.

Servere drar allerede i dag store fordeler av 64-bit gjennom Opteron- og Itanium-systemer. Tunge sorteringsalgoritmer blir enklere å utføre, som gjør at f.eks. databaser vil gå mye raskere.

Geologiske beregninger er noe av det som beslaglegger aller mest tid på de store superdatamaskinene i verden, og denne typen vanvittig kompliserte utregninger vil også dra store fordeler av 64-bit.

Ytelsestester Anandtech har gjort med 64-bits-systemer opp mot tilsvarende 32-bits-systemer, viser at man som regel vil oppnå ytelsesøkning på alt fra ingenting og opp til 20% under normal bruk.

Konklusjon

  • 64-bit betyr evne til å behandle store tall raskere
  • 64-bit betyr evne til å adressere mer minne
  • 64-bit betyr ikke dobbel ytelse i forhold til 32-bit
  • 64-bit betyr ikke 2 x 32-bits-prosessorer

Startside ] Opp ] [Søk]

Copyright © 2002 Øyvind Haugland
Sist endret:  13 januar 2019
 

  Interested in this stuff? Please write to:
 

HTML Counter            stats counter