64-bitine arvutiarhitektuur

**64-bitine [[arvutiarhitektuur]]** on arvutil, milles mäluaadresside ja ALU täisarvude suurus on 64 bitti (8 baiti). 64-bitise arhitektuuriga protsessori registrite, aadressisiinide ja andmesiinide laius on 64 bitti.

64-bitised protsessorid on superarvutites kasutusel olnud alates 1970. aastatest, üks esimesi 64-bitiseid arvuteid oli Cray-1 (1975). Enne 64-bitiseid kasutati ka 60-bitiste registritega arvuteid, näiteks CDC 6000 seeria (1964). Laiemalt tulid 64-bitised protsessorid kasutusele RISC-baasil tööjaamades ja serverites 1990. aastate alguses. 2003. aastal tehti need tavakasutajatele kättesaadavaks x86-64 ja PowerPC protsessoriarhitektuuri näol.

## Arhitektuur
Protsessori registrid on tavaliselt jaotatud mitmesse rühma: täisarvud, murdarvud, SIMD (*Single instruction, multiple data*), kontrollsummad ja (vanemates disainides) spetsiaalsed registrid aadresside ja indeksite jaoks. Moodsamates protsessorites saab mälu adresseerimiseks kasutada ainult täisarvu- ja/või aadressiregistreid. Nende registrite suurus limiteerib tavaliselt otseselt adresseeritava mälu hulga, isegi kui protsessoris on laiemaid registreid, näiteks murdarvude registrid.

Enamuses suure jõudlusega 32-bitistes ja 64-bitistes protsessorites (mõned erandid on ARM ja 32-bitised MIPS protsessorid) on sisse ehitatud eraldi murdarvudega opereerimiseks mõeldud riistvara, mis sageli põhineb 64-bitistel andmeüksustel. Näiteks x86/x87 arhitektuuril on instruktsioonid, mis on suutelised laadima ja hoidma mälus 32-bitiseid ja 64-bitiseid murdarve, kuid protsessorisisesed andmestruktuurid ja registrid võivad olla ka 80 bitti laiad.

## Piirangud
Enamik 64-bitiseid mikroprotsessoreid on tänapäeval piiratud mälu mahult, mida nad tegelikult suudavad edastada. See on tunduvalt madalam võrreldes sellega, milleks 64-bitine protsessor tegelikult suuteline oleks. Näiteks AMD64 arhitektuuril on 52-bitine piirang füüsilisele mälule ja toetab ainult 46-bitist virtuaalset aadressiruumi. See on vastavalt 4 PB (4×10245 baiti) ja 256 TB (256×10244 baiti). Arvuti ei saa sisaldada 4 petabaiti mälu aga AMD suured serverid, ühismälu klastrite ja muude viisidega võivad selleni jõuda lähitulevikus. 52-bitine mäluaadress annab võimaluse laiendamiseks palju odavamalt kui 64-bitine mäluaadress. 48-bitine virtuaalmäluaadress tehti ka selleks, et võimaldada enam kui 64 000 korda suuremat mälu 32-bitise piirangust, mis on 4 GB (4 × 10 243 baiti). Võimaldades ruumi laienemiseks lähitulevikus ilma, et sellega kaasneks töötlusaja pikenemist täieliku 64-bitise protsessori puhul.

## Ajalugu

### 64-bitiste protsessorite ajaline järjestus
**1961**
:IBM esitab IBM 7030 Stretch superarvuti, mis kasutab 64-bitist andmesõna ning 32- ja 64-bitist käsusõna.
**1974**
:Control Data Corporation andis välja CDC Star-100 vektorgraafika superarvuti, mis kasutab 64-bitist sõna arhitektuuri (varasemad CDC-süsteemid põhinesid 60-bitisel arhitektuuril). International Computers Limited andis välja 32-bitise, 64-bitise ja 128-bitise ICL 2900 seeria. 

**1976**
:Cray Research esitles esimest Cray-1 superarvutit, mis põhines 64-biti sõnaarhitektuuril ja millel hakkasid põhinema hilisemad Cray vektorgraafika superarvutid.
**1983**
:Elxsi andis välja Elxsi 6400 paralleelse minisuperarvuti. Elxsi arhitektuuril oli 64-bitine andmeregister, kuid 32-bitine aadressiruum.
**1989**
:Intel tõi välja Intel i860 RISC protsessori, mida turustati 64-bitise mikroprotsessorina; tal oli 32-bitine arhitektuur, millel oli 3D-graafika üksus, mis suutis sooritada 64-bitiseid täisarvuoperatsioone.
**1991**
:MIPS Technologies produtseeris esimese 64-bitise mikroprotsessori R4000. Seda protsessorit kasutati SGI graafika tööjaamades, alustades IRIS Crimsoniga. Kendall Square Research tõi ilmale nende esimese KSR1 superarvuti, mis põhineb 64-bitisel RISC-protsessoril.

**1992**
:Digital Equipment Corporation (DEC) tõi turule 64-bitist arhitektuuri, mis sündis PRISM-projektist.
**1993**
:Atari tõi turule Atari Jaguari videomängukonsooli, mis sisaldab oma arhitektuuris 64-bitiseid andmeteid. 
**1994**
:Intel teatab oma plaanidest leiutada järglane oma edukale IA-32 arhitektuurile – 64-bitine IA-64 arhitektuur. Väljalaske aastaks plaanitakse 1998 ja 1999 vahe. SGI andis välja IRIX 6.0, millel 64-biti tugi.

**1995**
:Sun andis välja 64-bitise SPARC tüüpi protsessori UltraSPARC. HAL Computer Systems andis välja tööjaama, mis põhines 64-bitisel protserssoril. See oli HALi iseseisvalt disainitud esimese generatsioon SPARC64. IBM andis välja A10 ja A30 mikroprotsessorid ja 64-bitised PowerPC AS protsessorid. Samuti tuli IBM-ilt 64-bitise AS/400 süsteemi uuendus, mis lubab vahetada operatsioonisüsteemi, andmebaase ja rakendusi.
**1996**
:Nintendo tõit turule Nintendo 64 videomängukonsooli, mis on ehitatud madalahinnalise variandi MIPS R4000 baasil. HP andis välja 64-bitise 2.0 versiooni nende PA-RISC protsessori arhitektuurist ehk PA-8000.
**1997**
:IBM andis välja RS64 seeria, mis sisaldab 64-bitiseid PowerPC/POWER protsessoreid.
**1998**
:IBM andis välja POWER3 seeria, mis sisaldab 64-bitiseid PowerPC/POER protsessoreid.
**1999**
:Intel avaldab IA-64 arhitektuuri instruction seti. AMD avalikustab oma 64-bitised laiendused IA-32-le, mida kutsuti x86-64 (hiljem AMD64).
**2000**
:IBM andis välja esimesed 64-bitised z/Arhitektuuriga suurarvutid, zSeeria z900. z/Arhitektuur on 64-bitine versioon 32-bitisest ESA/390 arhitektuurist, 32-bitise System/360 arhitektuuri järeltulija.
**2001**
:Pärast mõningaid viivitusi andis Intel lõpuks välja IA-64 liini protsessorid, mille koodnimeks saab Itanium. Selle sihtmärgiks olid suure võimsusega serverid, kuid müüginumbrid ei vastanud oodatule.
**2003**
:AMD tõi turule Opteroni ja Athloni 64-bitised protsessorisarjad, mis põhinevad AMD64-arhitektuuril. Apple paiskas müüki 64-bitise "G5" PowerPC 970 protsessori, mis tootja oli IBM. Inteli Itanium seeria on jätkuvalt ainukesed ainult 64-bitised protsessorid (teised toetavad paralleelselt ka 32-bitist).
**2004**
:Intel reageeris AMD turuedule ja tunnistas, et on tootmas klooni AMD64-st, nimega IA-32e (hiljem nimetati ümber EM64T-ks ja lõpuks Intel 64-ks). Intel tõi turule uuendatud versioonid Xeon ja Pentium 4 protsessoriperest, mis toetasid uusi 64-bitiseid instruktsioone. VIA Technologies tõi turule 64-bitise protsessori Isaiah.

**2006**
:Sony, IBM ja Toshiba alustasid 64-bitiste Celli protsessorite tootmist, mida kasutatakse Playstation 3-s, serverites ja tööjaamades.

### 64-bitiste operatsioonisüsteemide ajaline järjestus
**1985**
:Cray andis välja UNICOSi, esimese 64-bitise rakenduse Unixi operatsioonisüsteemile.
**1993**
:DEC andis välja 64-bitise DEC OSF/1 AXP Unix-like operatsioonisüsteemi (hiljem nimetati ümber Tru64 UNIX-iks), mis põhines Alpha arhitektuuril. 
**1995**
:DEC andis välja OpenVMS 7.0, mis oli esimene täielikult 64-bitine versioon OpenVMS-ist Alphale.
**1998**
:Sun andis välja Solaris 7-me, mis toetab täielikult 64-bitist UltraSPARC tuge.
**2000**
:IBM andis välja z/OS. mis on 64-bitine operatsioonisüsteem. See on MVSi järglane, mis oli loodud uutele zSeeria 64-bitistele suurarvutitele.
**2001**
:NetBSD on esimene operatsioonisüsteem, mis töötab Inteli Itanium protsessoril kohe protsessori väljaandmisel. Microsoft andis välja Windows XP 64-bitise versiooni, mis oli mõeldud Itaniumi IA-64 arhitektuurile ja saab käitada ka 32-bitiseid rakendusi.
**2003**
:Apple andis välja oma Mac OS X 10.3 Pantheri operatsioonisüsteemi, mis lisab toe 64-bitistele PowerPC 970 protsessoritele. Mitmetele Linuxi distributsioonidele tuleb AMD64 tugi. Microsoft teatab oma plaanidest teha Windowsi operatsioonisüsteem, mis toetaks ka AMD64 arhitektuuri, kuid millel on olemas ka 32-bitiste rakenduste tugi. FreeBSD saab AMD64 toe. 
**2005**
:31. jaanuaril andis Sun välja Solaris 10, mis toetab nii AMD64 kui ja EMT64 protsessoreid. 29. Aprillil andis Apple välja Mac OS X 10.4 Tiger, mis andis PowerPC 970 protsessoritega arvutitele limiteeritud toe 64-bitiste käsurearakenduste käivitamiseks. Hilisemates versioonides toetasid nad ka EM64T protsessoreid. 30. Aprillil andis Microsoft välja AMD64 ja EM64T toega Windows XP Professional x64 versiooni. 
**2006**
:Microsoft andis välja Windows Vista, mille 64-bitine versioon toetas AMD64/Intel64 protsessoreid, kuid säilitas ka 32-bitise funktsionaalsuse. 64-bitises versioonis on kõik windowsi rakendused ja komponendid 64-bitised, kuid samas võisid erinevd tarkvaramoodulid säilitada ka 32-bitised versioonid. 
**2007**
:Apple andis välja Mac OS X 10.5 Leopard, mis toetab täielikult 64-bitiseid rakendusi arvutites, mis kasutavad PowerPC 970 või EM64T protsessorit.
**2009**
:Apple andis välja Mac OS X 10.6 Snow Leopard, mille enamik kaasas olevaid rakendusi on nüüd 64-bitised. Microsoft andis välja Windows 7, mis on sarnaselt Windows Vistaga 64-bitine. Hakatakse müüma 64-bitiseid Windowsi operatsioonisüsteemiga arvuteid. Microsoft andis välja ka Windows Server 2008 R2, mis on esimene ainult 64-bitine server Microsoftilt.

## 32-bitine vs. 64-bitine
Üleminek 32-bitiselt 64-bitisele arhitektuurile on olnud vaevarikas, kuna enamik operatsioonisüsteeme ja draivereid tuleb uuest arhitektuurist kasu saamiseks ümber kirjutada. Ka tarkvara tuleb uute võimaluste ärakasutamiseks muutma. Vanem tarkvara on tavaliselt toetatud kas riistvara ühilduvuse režiimis (uued protsessorid toetavad seeläbi ka 32-bitiseid rakendusi), läbi tarkvaralise emulaatori või tegeliku 32-bitise tuuma sisestamisega 64-bitisesse protsessorisse (näiteks Itaniumi protsessorid, mis sisaldavad ühte x86 protsessori tuuma, et käitada 32-bitiseid rakendusi). Praegused 64-bitised operatsioonisüsteemid toetavad üldiselt nii 32- kui ka 64-bitiseid rakendusi. 

Üks suur erand on AS/400, mille tarkvara töötab virtuaalsel ISA-l, mida kutsutakse TIMI-ks (Technology Independent Machine Interface), mis on tõlgitud koodiks madala otsa tarkvara poolt enne käivitamist. Madala otsa tarkvara ongi see, mida on vaja, et kirjutada ja liigutada kogu operatsioonisüsteem ja tarkvara uuele platvormile. Näiteks IBM tegi oma 32/48-bitisest "IMPI" instruction setist 64-bitise PowerPC. 

Kuigi 64-bitine arhitektuur teeb vaieldamatult kiiremaks töö valdkondades nagu videotöötlus ja suured andmebaasid, on pidevalt käimas vaidlused, kas samas hinnaklassis 64-bitised protsessorid on oma 32-bitistest alternatiividest kiiremad ka teistes valdkondades. Igal juhul on X86-64 arhitektuuriga võimalik sujuvalt kasutada enamikku 32-bitiseid operatsioonisüsteeme ja rakendusi. 

Kompileeritud Java programmid toimivad ühtmoodi nii 32- kui ka 64-bitises operatsioonisüsteemis. Kuna pikkused ja täpsus on kõikidel sisseehitatud tüüpidel määratud Java standarditega, ei sõltu Java allolevast arhitektuurist. Java programmid, mis töötavad 64-bitises Java virtuaalarvutis, omavad lihtsalt ligipääsu suuremale aadressiruumile.

Kiirus pole ainuke tegur, millega 32-bitiseid ja 64-bitiseid protsessoreid võrreldakse. Rakendused, kus kasutatakse multitegumtööd, klasterdamist ja stress testingut, töötavad paremini 64-bitisel arhitektuuril. 64-bitised arvutiklastrid on just sellel põhjusel laialdaselt kasutusel sellistes suurettevõtetes nagu IBM, HP ja Microsoft.

## Plussid ja miinused
* Peamine valearusaam on see, et 64-bitine arhitektuur pole 32-bitisest arhitektuurist parem, kui just arvutil pole üle 4 GB põhimälu. See pole täielikult tõene. Mõned operatsioonisüsteemid ja teatud riistvarakonfiguratsioonid limiteerivad füüsilise mälu 3 GB-le IA-32 süsteemis. Pole olemas 32-bitiseid arhitektuure, mis suudaks otseselt adresseerida 4 GB mälu. Siiski suudavad IA-32 protsessorid alates Pentium 2-st adresseerida 36-bitist aadressiruumi kasutades Physical Address Extensionit (PAE), mis annab 64-gigabaidise füüsilise mälu ulatuse. Seetõttu PAE toega operatsioonisüsteemid ei ole limiteeritud 4 GB füüsilise mäluga.

* Mõned operatsioonisüsteemid reserveerivad portsjoni aadressiruumist operatsioonisüsteemile kasutamiseks ja vähendavad sellega aadressiruumi, mis on saadaval kasutaja programmidele. Samuti jaotavad enda protsessi aadressiruumi Windows CP DLLid ja teised operatsioonisüsteemi komponendid, jättes ainult 2–3 GB (olenevalt sätetest) aadressiruumi saadavale. 64-bitistel operatsioonisüsteemidel on see limiit on kõvasti kõrgem ja seetõttu ei piira reaalset mälukasutust.

* Mälujaotusega faile on 32-bitistes arhitektuurides aina raskem rakendada, kuna neljagigabaidine fail pole enam ebatavaline ja nii suuri faile ei saa kergelt jaotada. Ainult ühe regiooni failist saab jaotada aadressiruumi ja kui tahad sellisele failile mälujaotusega juurde pääseda, siis peab regioone jaotama aadressiruumi nii mitu korda, kui tarvis. See on probleem, kuna mälujaotus on üks efektiivseim kettalt mälule operatsioon, kui see on operatsioonisüsteemis korralikult implementeeritud. 

* Mõned algoritmid, nagu andmete krüpteerimine, saavad 64-bitistel süsteemidel (kui muidugi tarkvara on 64-bitise toega) töötada 3–5 korda kiiremini kui 32-bitistel arhitektuuridel.

* Osadel 64-bitistel arhitektuuridel, nagu x86-64, on rohkem üldotstarbelisi registereid kui nende 32-bitistel analoogidel. Sellest saab selge kiiruse võidu, kuna protsessor ei pea minema teise taseme vahemällu või põhimällu – registritesse mahub rohkem andmeid.

* Peamine puudus 64-bitisel arhitektuuril on see, et sama suurusega andmehulk võtab mälus rohkem ruumi. See suurendab mälukasutust ja võib tekitada implikatsioone protsessori vahemälu utiliseerimisel.

## Viited

## Välislingid
*Andrey Karpov. 64-bitise operatsioonisüsteemi tarkvaravigade kogu
*AMD64 (EM64T) arhitektuur
*Suur hulk draivereid 64-bitise operatsioonisüsteemi jaoks
*Siin saad veenduda, kas sul on 64-bitine operatsioonisüsteem