Objavljeno: 22.12.2009 | Avtor: Primož Gabrijelčič | Monitor December 2009 | Teme: windows, vista

Prihodnost je 64-bitna

32 ali 64 bitov, to je zdaj vprašanje. Kaj je bolje, kaj lepše očisti perilo in predvsem - kaj se splača imeti v osebnem računalniku?

Večina uporabnikov se ne zaveda ravno natančno, kaj poganja njihov računalnik. "Eeee, eni Windows, mislim da 97," je tipičen odgovor. Njim ta prispevek ni namenjen.

Zanimal bo vse, ki vsaj približno razumejo, kaj tiktaka pod pokrovom računalnika, kaj pomenita besedi "operacijski sistem" in zakaj je v računalniku bolje imeti 2 gigabajta pomnilnika kakor enega. No, še raje pa štiri. Ali pa osem.

Pa je to res? Vam bo več pomnilnika vedno tudi pomagalo? Nikakor ne. Samo za (hipotetični) primer - kaj pa, če v tak računalnik namestite predpotopni DOS? Koliko od teh osmih gigabajtov bo na voljo za programe? Manj kot en megabajt! (Če spadate v skupino iz prvega odstavka tega poglavja in vas tema kljub temu zanima - en gigabajt je 1024 megabajtov.) Operacijski sistem je torej še kako pomemben za izkoriščanje strojnih zmogljivosti!

Pa vendar se do letošnjega leta večina uporabnikov, vsaj tistih z osebnimi računalniki (upravitelji velikih strežnikov so posebna rasa, to vemo menda vsi), ni pretirano ukvarjala s tem. Vprašanje je bilo morda: "Kateri Windows?" Ali pa: "Linux ali Windows ali OS X", pa morda se je kdo pozabaval še z izbiro distribucije ali pa podrazličice Windows (saj veste - Home ali Business ali Professional ali Ultimate ali ... ma, kdo bi vedel, kaj vse so naštepali microsoftovci v zadnjih različicah). Zdaj pa kar naenkrat pričakujejo, da se bomo odločali o še enem parametru - 32 ali 64 bitov. Kaj sploh so biti in zakaj so pomembni? Na to bo, upamo, odgovoril ta prispevek.

Kaj sploh so ti biti?

Poskusimo za začetek odgovoriti, kaj so sploh biti. Zakaj 32. Ali 64. Ali kolikor pač že.

Razlaga bo najenostavnejša, če se vrnemo malce v zgodovino. Tako, kakšnih 33 let. Takrat je namreč nastal Zilogov procesor Z80, ki je bil sicer le 8-biten (da, zavedamo se tega, da "bitnosti" še nismo razložili), a je bil kljub temu soodgovoren za revolucijo osebnih računalnikov.

Srce vsakega procesorja - in tudi Zilogov ni bil izjema - so registri, nekakšni predalčki, v katere lahko spravljamo vrednosti in s katerimi lahko računamo (se pravi, da so v njih podatki), ali pa jih uporabimo kot naslov pomnilniške celice, v kateri so podatki (torej so v njih lahko tudi naslovi; postopku, pri katerem register uporabimo kot naslov celice v zunanjem pomnilniku, pa pravimo naslavljanje). Oboje je nujno potrebno za delovanje računalnikov, kakor jih poznamo dandanes.

V Zilogu - pa tudi v drugih procesorjih iz tistega časa, denimo v Intelovem 8080, katerega bistveno izboljšana kopija je bil Z80, so bili registri osembitni. Z drugimi besedami, vsak register je imel osem bitov, torej je posledično lahko shranil 28Vse potence (2 na nekaj) sem pobarval - zelo verjetno se bodo superscripti izgubili pri uvozu v InDesign.

Kaj pa pomnilnik? Čeprav je bila notranjost Z80 osembitna, je za naslavljanje pomnilnika uporabljal 16-bitne pare registrov in je lahko zato naslovil "celih" 64 kilobajtov. Kilobajtov, da se razumemo! 1024 kilobajtov je en megabajt, 1024 megabajtov en gigabajt in šele pri gigabajtih pridemo do številk, o katerih se pogovarjamo dandanes!

Kaj pa operacijski sistemi? Bili so najrazličnejši, za vsak računalniček ga je spisalo drugo podjetje (navadno kar tisto, ki je izdelovalo in prodajalo računalnik) in njihova edina skupna točka je bila, da so skoraj vsi imeli vgrajen tolmač nekega dialekta jezika basic.

V 33 letih so procesorji močno napredovali. Levo Zilog Z80 (vir: Wikipedia), desno najnovejši Intel Core i7pa še model i7 procesorja zraven, karkoli bo na slikci

Procesorji so se razvijali in osembitne so začeli izpodrivati 16-bitni. Prvi IBM PC je uporabljal procesor Intel 8088, ki je bil le cenjša različica modela 8086, zato ga ne bomo opisovali. Bolj zanimiv je bil Intel 8086, vgrajen v računalnike IBM PC XT in v njihove številne klone. (Avtor članka se še vedno z nostalgijo spominja modela Sokol, ki ga je uvažala/sestavljal Zveza organizacij za tehnično kulturo Slovenije, ZOTKS.)

8086 je vseboval 16-bitne registre, pa tudi vse notranje povezave so bile 16-bitne, zato ga uvrščamo kam drugam kot med 16-bitne procesorje. Ker pa se je Intelovim razvijalcem zdelo 64 KB naslovljivega pomnilnika premalo (in še kako prav so imeli!), so bili naslovi 20-bitni, največji možni zunanji pomnilnik pa je torej meril 1 MB (220) oziroma 16-krat več kakor v Z80.

Da so bili lahko naslovi 20-bitni, čeprav so bili vsi notranji registri le 16-bitni, je 8086 uporabljal grdo (vsaj s stališča programerjev) zvijačo. Poleg običajnih podatkovno/naslovnih registrov je imel še štiri segmentne registre CS (code segment), DS (data segment), SS (stack segment) in ES (extra segment). Pri naslavljanju se je vrednost v segmentnem registru (denimo DS, kadar si uporabljal podatke) premaknila v levo za štiri bite in se prištela vrednosti registra, v katerem je bil naslov. Nekako tako, kot če bi naslov izračunali po formuli 16 * DS + 16-bitni odmik.

Zaradi segmentov je bilo programiranje zelo zapleteno, sploh če si hotel napisati program, večji od 64 KB (velikost enega segmenta oziroma velikost naslovljivega prostora, če se vrednost segmentnega registra ni spremenila), zato je bolje, da na ta žalostni del zgodovine hitro pozabimo.

Nadomestil ga je procesor Intel 80286, ki je bil prvi Intelov procesor, združljiv za nazaj. Zanimiv procesor, ki ga je odlikovala dvoličnost - lahko je deloval v realnem načinu, kjer se je obnašal kakor hitrejši 8086, ali pa se je zbudil v zaščitenem (protected) načinu, v katerem je lahko naslovil kar 16 MB (224). Računalniki s tem procesorjem so se imenovali IBM PC AT in tudi tu je bilo na trgu brez števila klonov, med njimi tudi "slovenski" Gepard, zanimiv računalnik z 20-megabajtnim diskom, ki se je včasih malo zataknil, in ga je bilo treba sprostiti z močnim bočnim udarcem. Ja, tako smo se zabavali včasih ...

Tudi na 80286 smo večinoma poganjali DOS, na voljo pa so bili že tudi Windows v različici 2, ki pa jih v Sloveniji ni skoraj nihče uporabljal. Oboje je poganjalo procesor v realnem načinu, zaščitenega pa ste lahko uporabili, če ste naložili Xenix (različica Unixa) ali pa Windows 286 - različico Windows 2.1, ki je delovala v zaščitenem načinu.

Velika novost pa je bil procesor 80386, ki je prvi pravi Intelov 32-bitni procesor, začetnik arhitekture IA-32 (arhitektura = nabor procesorskih ukazov, način naslavljanja in pač vse, kar opisuje procesor), ki je v rabi še dandanes. Zaradi 32-bitnih registrov in 32-bitnega naslavljanja je lahko uporabljal do 232 bajtov pomilnika (oziroma, po domače, do štirih gigabajtov), kar je tako noro več od enega megabajta, kolikor je obvladal 8086/80286, da si razlike v tistih časih nismo mogli niti predstavljati. Nič čudnega, da vrsto let tega velikanskega prostora nismo bili sposobni izkoristiti, vsaj v hišnih računalnikih ne. Kar pomislite - 80386 je bil predstavljen leta 1985 in šele letos so računalniki s 4 GB pomnilnika postali stalnica!

Primerjava naslovljivega pomnilniškega prostora v procesorjih 8086 (ter 80286 v realnem načinu) in 80386

Zanimiva je bila tudi procesorjeva "troličnost". Poleg realnega in zaščitenega načina, ki sta bila enaka kot v 80286, je poznal tudi navidezni (virtual) način, v katerem je deloval kot več med seboj ločenih procesorjev 8086. V zaščitenem načinu je bilo naslavljanje popolnoma enostavno - z 32-bitnim registrom si naslovil 32-bitni pomnilnik - v realnem pa je seveda ohranjal združljivost za nazaj in uporabljal segmentne registre (ter bil omejen na 1 MB, kajpada).

Tudi na 80386 smo še precej uporabljali DOS, dostikrat v kombinaciji s programom DesqView, ki je omogočal hkratno poganjanje več programov. Uporabljali pa smo tudi že Windows - najprej Windows 386, ki je bil v resnici Windows 2.10, preveden za zaščiteni način procesorja 80386, kasneje pa Windows 3.0. Ta je deloval v realnem, zaščitenem ali virtualnem načinu. Slednji različici se je reklo 386-enhanced in je štela za prve vsaj približno uporabne Windows - zaradi virtualnega načina so bili programi (vsak se je izvajal v svojem navideznem 8086) vsaj približno ločeni med seboj in zato sesutje enega programa včasih celo ni porušilo kompletnega operacijskega sistema.

Matjaž Klančar

Namestil sem si 64-bitni Windows 7 (manjkajoči 1 GB RAM mi ni dal miru ;) in sem zaenkrat našel samo nekaj, kar ne deluje - moj starajoči se Acrobat Professional 7 je izjavil, da ne more namestiti tiskalnika PDF. Aha, pa zeloooo stari Ulead DVD Movie Factory 4 je izjavil, da ima le še 5% pomnilnika, čeprav je Task Manager lepo pokazal, da sta prosta še 2 od 4 GB...

Presenečen sem, da tudi programi, pri katerih bi pričakoval, da bodo kar skočili na 64-bitni voz, tega še nimajo. Recimo Apache za Okna je samo 32-biten ... (so pa razni neuradni 64-bitni patchi).

Od tu naprej postane zgodovina dokaj dolgočasna. Procesorji so bili 32-bitni, pa potem 32-bitni, te pa so zamenjali 32-bitni. Seveda so bili vedno močnejši, menjala pa so se tudi imena: i486, Pentium, Pentium II, III, 4 (najbolj dolgočasna Intelova faza), pa Celeron in na primer Core - procesorji, ki so z nami (v različici i7) še dandanes. Nekje vmes so živeli (in nekako živijo še danes) tudi AMDjevi in še kateri modeli, vendar so to že podrobnosti.

Hkrati s procesorji so napredovali tudi operacijski sistemi. Windows 3.1 je zamenjal prvi stabilni in res zelo razširjeni Windows 95, pa 98 in ME (bolje, da ga niti omenjali ne bi), vzporedno s temi pa so se pojavili začetki sedanjih Windows - NT 3.1, 3.5, 4, potem Windows 2000, XP in ... stop, tule se bomo malce zaustavili.

Windows NT 3.1, popolnoma na novo razvit operacijski sistem, kar pomeni, da ni bil zasnovan na družini 3.x/95 (čisto mimogrede - njegov nastanek opisuje odlična knjiga Showstopper), je bil prvi Microsoftov operacijski sistem, ki je polno izkoriščal Intelovo 32-bitno arhitekturo. Poleg tega je deloval tudi na drugih procesorjih - DEC Alpha in MIPS, v različici 3.51 pa je bil podprt tudi PowerPC. Kdo bi si takrat mislil, da se bo Microsoft kasneje počasi umaknil iz vseh teh platform ter se posvetil samo Intelovi arhitekturi ...

Arnold Marko

Meni Nuendo, Ableton Live in Sound Forge ne delajo nikakršnih težav. Moja Phase88 ima 64-bitne gonilnike, bp deluje tudi USB MIDI kontroler M-Audio, pa tudi Phonicsova 16 kanalna miza/zvočna kartica prek firewira deluje s 64-bitnimi gonilniki, tako da v bistvu še nisem zares naletel na težave z gonilniki. Edino, zaradi česar še vedno vzporedno poganjam tudi XP, je čudaški Premiere CS4, a o tem kdaj drugič ...

Hja, seveda ... sem na 64-bitni Visti, to pa zato, ker imam Matrox RT.X2, ki ima 64-bitne gonilnike zgolj za 64-bitno Visto. V kompu imam 8 GB, ki jih Premiere in Matrox zdaj izkoriščata in so nujni za delo s HDjem (tako kot RAID 0, ki ga tudi imam). V 32-bitni različici je namreč pomnilnik bil (zelo) ozko grlo, tako da je bilo daljše projekte nujno deliti na več manjših ... Za vse drugo pa uporabljam 32-bitni Linux.

Medtem je Intel (v sodelovanju s Hpjem) začel razvijati 64-bitni procesor Itanium, zasnovan na arhitekturi IA-64. Itanium je odlikovalo marsikaj - 64-bitni podatki, logični naslovni prostor neverjetnih 264 (z drugimi besedami - 18.446.744.073.709.551.616 bajtov), 128 64-bitnih celoštevilskih registrov, 128 82-bitnih registrov za računanje v plavajoči vejici. Skratka - zverina. Oziroma zverina z eno "majhno" napako - ni bil sposoben poganjati 32-bitnih programov.

Ne vemo, kdo je pravzaprav kriv, vodstvo ali razvojni oddelek, a prvi Itaniumi so imeli resne težave s poganjanjem obstoječe 32-bitne kode. Ker arhitektura IA-64 ni združljiva z IA-32, je za poganjanje poskrben emulacijski sloj, ki pa hitrostno ni ravno blestel. Pa še ena težava je bila (v tem trenutku nas lahko bralci, ki jih procesorske tehnikalije ne zanimajo preveč, brez škode zapustijo in preskočijo naslednji odstavek).

Procesorji Pentium in njihovi nasledniki so hitrost izvajanja dosegali z dolgimi cevovodi. Notranjost procesorja je sestavljalo več logičnih enot, ukazi pa so se izvajali v več korakih - medtem ko je en ukaz šele nalagal vrednosti iz pomnilnika, je drugi izvajal (na primer) seštevanje, tretji pa je že zapisoval rezultate v pomnilnik. Da bi bila ta notranjost kar najbolj izkoriščena (in s tem izvajanje programov kar najhitrejše), je poseben del procesorja poskrbel za preurejanje izvajanja (out-of-order execution). Kadar je ugotovil, da je neki del procesorja nezaseden in da na izvajanje čaka ukaz, ki bi ta del procesorja izrabil, pri tem pa delovanje tega ukaza ni odvisno od rezultata ukazov, ki se že izvajajo ("so v cevovodu") - ter seveda nasprotno - je procesor tak ukaz izvedel vnaprej. S tem se je delovanje procesorja zelo pospešilo. V arhitekturi IA-64 pa za to preurejanje ni poskrbel procesor (ki take nadzorne logike sploh ni imel vgrajene), temveč sam prevajalnik. Ker pa so bili obstoječi 32-bitni programi prevedeni z obstoječimi (starimi) 32-bitnimi prevajalniki, ukazi v njih niso bili preurejeni, zato je bilo izvajanje še dodatno upočasnjeno.

Skratka, 32-bitni programi so se izvajali počasi. Intel je problem v naslednjih generacijah Itaniuma sicer rešil, a na gordijski način - izvajanje 32-bitne kode so enostavno onemogočili! Ker je bilo v tistih časih 64-bitnih programov silno malo (saj ni bilo dosti 64-bitnih računalnikov), 64-bitni procesorji niso doživeli večjega uspeha. Kljub temu je Itanium še vedno živ - vgrajujejo ga v orjaške ("Enterprise") strežnike, vredne več 100.000 dolarjev.

Kaj pa operacijski sistemi? Prvi je bil - ne boste uganili - Linux! Sledilo mu je še nekaj Unixov, kmalu pa tudi Windows XP 64-bit, preveden za Itanium, ki ga pa ni uporabljalo kaj dosti uporabnikov - seveda zato, ker se ni dalo poganjati 32-bitnih programov. Kljub temu Microsoft še vedno vztraja pri izdelavi operacijskih sistemov za Itanium, a le strežniških. Trenutno lahko za ta procesor kupite Windows Server 2003 in 2008. Verjetno tudi zato, ker za strašno drage strežnike brez težav prodajo strašno drage operacijske sisteme ...

Medtem pa so v AMD razvijali družino procesorjev K8 (in se verjetno privoščljivo hahljali Intelovemu neuspehu). K8 so bili prvi procesorji z arhitekturo x86-64 oziroma s 64-bitno razširitvijo arhitekture x86 (uradno imenovane IA-32). Dandanes to arhitekturo navadno imenujemo kar AMD64.

No, ti procesorji pa so se prijeli, in to iz dveh razlogov. Prvič, bili so bistveno cenejši od Itaniumov, le malo dražji od 32-bitnih procesorjev. Drugič, brez težav so (in to hitro!) izvajali 32-bitno kodo. Celo tako zelo so bili uspešni, da je arhitekturo AMD64 licenciral tudi Intel, jo poimenoval EM64T ter jo začel vgrajevati v svoje 64-bitne procesorje. Uspeh procesorjev AMD64/EM64T je bil tako velik, da je dandanes le še redkokateri procesor 32-biten. Celo vsi procesorji, na katerih tečejo 32-bitni operacijski sistemi, so navadno 64-bitni (če so bili seveda kupljeni v zadnjem letu).

Ali procesor podpira 64-bitne operacijske sisteme

Operacijski sistem Windows Vista ali 7 zna povedati, ali je procesor v računalniku 64-biten. Odprite nadzorno ploščo Informacije o učinkovitosti delovanja in orodja in na njej kliknite napis Ogled in tiskanje podrobnih informacij (Performance Information and Tools, View and print details). Na seznamu je zapisano, ali strojna oprema podpira 64-bitne operacijske sisteme.

Registri v arhitekturi AMD64 so seveda 64-bitni, poleg tega so v teh procesorjih na voljo še dodatni registri, ki jih IA-32 ne pozna. Navidezni naslovni prostor (prostor, uporaben za naslavljanje navideznega pomnilnika) je velik 248 oziroma 256 TB (terabajtov, en terabajt je 1024 gigabajtov), arhitektura pa dopušča možnost, da se bo v kasnejših generacijah ta vrednost povečala na neverjetnih 264 oziroma 16 eksabajtov (en eksabajt je 1024 petabajtov (PB) in en petabajt je 1024 terabajtov). Naslavljanje je 64-bitno, brez zapletanja s segmentnimi registri, a vsi biti niso uporabljeni. V trenutnih procesorjih lahko naslovimo do 240 bajtov (1 TB), arhitektura pa dovoljuje povečanje te vrednosti do 252 (4 PB). Skoraj neverjetno vrednosti, sploh če upoštevamo, da dandanes spadajo 1 TB diski med večje. A po drugi strani - tudi pred 25 leti je bilo 4 GB pomnilnika nepojmljivo veliko, pa smo to vrednost že dosegli in presegli.

Za varno delovanje računalnikov je zelo pomemben bit NX (No-Execute), ki omogoča operacijskemu sistemu, da prepove izvajanje kode z izbranih pomnilniških strani. Operacijski sistemi (tudi 64-bitni Windows) uporabljajo to možnost, da preprečijo programom, da bi izvajali kodo, shranjeno med podatki, kar je priljubljena ukana virusov in črvov.

Procesorji AMD64 lahko delujejo v dveh bistveno različnih načinih. V podedovanem (legacy) načinu procesor posnema arhitekturo IA-32 in deluje v vseh treh načinih, ki jih je poznal že 80386. V dolgem (long) načinu pa lahko poganja 64-bitne program, še vedno pa je omogočeno izvajanje 32-bitne in celo 16-bite kode. Ja, na AMD64 lahko še vedno poganjate DOS.

Tudi na to arhitekturo je bil najprej prenesen Linux, prvi Microsoftov operacijski sistem zanjo pa je bil Windows XP Professional x64 Edition. Tudi v novejših operacijskih sistemih podpora AMD64 ni izostala - na njej smo lahko poganjali 64-bitno Visto, Server 2003, Server 2008, pa seveda tudi najnovejši Windows 7. IA-32 izginja, enako se bo zgodilo z 32-bitnimi različicami operacijskih sistemov. Preden pa se posvetimo 64-bitnim sistemom, se za trenutek povrnimo k tistim, ki so naše mlinčke poganjali zadnjih deset let.

Pomanjkljivosti 32-bitnega sveta

Če se omejimo samo na "prav zares 32-bitne" različice operacijskega sistema Windows, se pravi na družino NT, se prav lahko vprašamo: "Ja, kaj ji pa pravzaprav manjka?" Zadnje generacije sistemov so stabilne, videti je, da so najbolj grozljive razpoke v varnosti odpravili, programske opreme zanje je obilo ... Čemu bi sploh razmišljali o prehodu na 64-bitne različice? Z drugimi besedami - čemu je sploh nastal ta članek?

Omejitev 32-bitnih Windows je pravzaprav le ena - količina podprtega pomnilnika. Windows 2000/XP/Vista/7 lahko v 32-bitni različici naslovijo do 4 GB podatkov. Toliko pač dopušča 32-bitni procesor. (Bolj izobraženi bralci ste zagotovo že skočili v zrak in začeli pisati besno e-pismo uredništvu. Potrpite trenutek, vse bomo razjasnili.)

Ti štirje gigabajti so razdeljeni na 2 GB za uporabniške programe ter 2 GB za sistem - jedro (kernel), BIOS, naslovni prostor, ki ga zavzame grafična kartica ter morebitne druge kartice, in še kakšna malenkost bi se našla. Prvih 2 GB pa Windows deli naprej, vsakemu programu toliko, kolikor potrebuje. Dokler pomnilnika ne zmanjka. Če mislite, da nam pri tem lahko pomaga navidezni pomnilnik (prijazna lastnost spodobnih operacijskih sistemov, da nam zagotovi več pomnilnika, kakor ga je v resnici v računalniku), se motite. Pomnilniški naslovi v 32-bitnih programih so pač 32-bitni in konec. In tisti štirje gigabajti z začetka tega odstavka, ki se potem razdelijo na 2 + 2, so pravzaprav navidezni gigabajti. Bolj prav bi bilo, ko bi rekli, da Windows razdelijo navidezni naslovni prostor 4 GB ... in tako naprej. A potem bi večina obupala že pri tem stavku in ne bi brala naprej.

Vladimir Djurdjič

Ob nakupu novega računalnika sem malo eksperimentiral z 32-bitno in 64-bitno možnostjo in potem sem se odločil za slednjo, ker izkoristi ves pomnilnik. Potem sem previdno preizkušal program za programom in na moje presenečenje vsaj v prvem obdobju nisem naletel na take, ki ne bi hoteli delovati na Visti s 64-biti.

Najbolj sem bil presenečen, ker praktično nisem našel igre, ki bi glede tega povzročala težave. Razen dveh tako starih, da jih tudi na 32-bitni Visti poganjam v VMwaru. Ampak res, 64-bitov ni nobena ovira za igre. Prej nasprotno.

Nato me je presenetilo, da ne povzročajo težav niti nizkonivojski pomočniki, kot so Tune Up in podobni.

In potem se je začelo rahlo lomiti. Moja klaviatura Casio, ki ima priključek USB, nikakor noče delovati s 64-biti. Pika. Moj kitarski efekt Zoom, ki ima prav tako USB, noče delovati s 64-biti. Pika.

Oba izdelovalca pravita, da nimata nobenih namenov, da bi naredila 64-bitne gonilnike. Pazite, govorimo o izdelkih, kupljenih leta 2008, ne o neki stari solati.

Na Visti z 32-biti pa delujeta. Logično.

Tudi sicer avdio programi ne marajo preveč 64 bitov, še manj pa Viste. Večina Cubasejev, Cakewalkov, Fruity Loopsov in podobnih malo manj ali malo bolj nagaja. So vsi blaženi, ker je menda to v Windows 7 vrnjeno na raven Windows XP.

Sicer močno uporabljam VMware in pod 64 biti in z dovolj RAMa in procesorjem Quad Core deluje kot pesmica. 

Če imate v sistemu veliko pomnilnika in programe, ki bi ga z veseljem uporabili (zbirke podatkov so že take), potem lahko Windows zbudite s stikalom /3 GB in s tem vključite prilagajanje, imenovano "4-Gigabyte Tuning" (4GT), to pa razdeli navidezni pomnilniški prostor malo drugače - tri GB dodeli uporabniškim programom in le enega sistemu. Včasih pomaga, včasih pa tudi ne, saj se sistem v 1 GB pomnilnika počuti že zelo stisnjeno.

Še ena zvijača se skriva za vsem tem. Tudi če vključite 4 GT, bo večina aplikacij dobila le do 2 GB navideznega pomnilnika. Pri prvih testiranjih te funkcije, še daleč pred izidom prve beta različice, ki je to podpirala, so namreč ugotovili, da cel kup program ne deluje prav, če dobijo dodeljen pomnilnik iz naslovov nad 2 GB. Da se razumemo, "ne dela prav" je v tem primeru evfemizem. Programi enostavno crknejo.

Matic Zupančič

Moja izkušnja je taka, da sem že bil na 64-bitnem XP, pa sem potem preklopil na 32-bitno Visto (ja, saj vem ... je tudi meni žal). Poglavitni razlog so bili gonilniki za takrat novi tiskalnik, ki jih pač ni imel in mu jih še danes niso napisali.

Ko bom kupoval naslednji tiskalnik, bom preklopil tudi na 64 bitov.

Krivec za to je predstavitev podatkov v računalniku. Tradicionalno pisani programi (in s tem mislimo kodo v Cju in podobnih jezikih) ne razlikujejo kaj dosti med števili, naslovi v pomnilniku (ki so pravzaprav tudi števila) in predmeti v programu (te predstavijo s kazalci nanje, kazalci pa so naslovi v pomnilniku). Pri razdelitvi 2 + 2 so naslovi predmetov vedno pozitivna števila. Najvišji možni naslov, 2 GB - 1 (oziroma še malo manj, a pustimo malenkosti) ima šestnajstiško vrednost 0x7FFFFFFF, kar v desetiškem predstavlja vrednost 2.147.483.647. Za en bajt višji naslov, 0x80000000, pa lahko predstavlja dve različni vrednosti. Če ga interpretiramo kot nepredznačeno število, je enak 2.147.483.648, če ga program obravnava kot predznačeno število, pa je njegova vrednost - 2.147.483.648. Pri delu z naslovi (oziroma kazalci) je zato treba biti pazljiv. Ker pa v običajnem Windows do takih primerov sploh ne more priti, programerji napak, ki bi povzročale težave pri naslovih nad 2 GB, sploh ne odkrijejo. Programi crknejo šele pri stranki, ki poskuša vključiti 4 GT.

Da bi se izognili situacijam, ko uporabnik vključi 4 GT, da bi mu bolje delovala zbirka podatkov, potem pa mu zaradi programerske napake crkne brskalnik, podpora visokim naslovom (nad 2 GB) ni samodejna. Sistem jo odobri le programom, ki imajo v zaglavju izvršne datoteke postavljeno posebno zastavico, katere edini pomen je ta, da programerji z njim sistemu sporočajo: "Da, naš program je preizkušen z naslovi nad 2 GB!"

Se pravi, da programi v 32-bitnem Windows dobijo od 2 do 3 GB naveznega pomnilnika? No, niti ne. V resnici smo se zlagali takoj na začetku. Windows lahko uporabi tudi več kot 4 GB pomnilnika. Če pogledate specifikacije operacijskih sistemov na Microsoftovem spletišču, boste, denimo, opazili, da je nekoč bil Windows 2000 Datacenter Server, ki je zmogel uporabiti do 32 GB. Windows Server 2008 Enterprise pa podpira kar do 64 GB. V 32-bitni različici, seveda.

Kako torej jim to uspeva? Kaj niso procesorji omejeni na 4 GB? Pravzaprav ne. V začetku (80386, i486) so bili, kasneje pa so v Intelu vgradili vanje razširitev, imenovano Physical Address Extension, PAE, s katero pridobimo štiri dodatne naslovne bite. Namesto 32 jih je torej 36, naslovljivi pomnilnik pa se poveča na 236, oziroma 64 GB.

Kako PAE pridobi 60 gigabajtov

V zaščitenem načinu procesorjev 80386 in novejših naslov ne predstavlja neposredno kazalca na pomnilniško celico. Namesto tega ga procesor v dveh korakih premapira v končni naslov in pri tem uporablja sistemske tabele, za katere je odgovoren operacijski sistem. S tem omogoči vpeljavo navideznega pomnilnika in zaščito med naslovnimi prostori posameznih procesov.

Zgornjih deset bitov naslova (biti od 31 do 22, oziroma 31 : 22) se uporabijo kot indeks v imenik strani. Ta je velika 4 KB (kar je velikost standardne pomnilniške strani na arhitekturi IA-32) in obsega 1024 32-bitnih vnosov. 210 je ravno 1024; 1024 * 4 bajti (4 bajti = 32 bitov) pa 4096 bajtov oziroma 4 KB.

Procesor iz imenika strani (njegov naslov je shranjen v sistemskem registru CR3) na odmiku, ki ga določajo biti 31 : 24, prebere 32-bitni element, ki predstavlja naslov tabele strani. Tudi ta je velika 4 KB in obsega 1024 32-bitnih podatkov. Iz te tabele procesor prebere podatek, ki ga določa naslednjih deset bitov naslova (21 : 12). Spet dobi 32-bitno vrednost, ki določa naslov 4 KB strani v fizičnem pomnilniku. Spodnjih 12 bitov naslova (11 : 0) pa določa odmik znotraj te strani. 212 je 4096, torej lahko na ta način naslovimo vse možno bajte znotraj strani.

Vir slik: Wikipedia

V načinu PAE postane naslavljanje trinivojsko. Register CR3 kaže na tabelo imenikov, ki ima samo štiri vnose. Imenik strani in tabela strani sta še vedno dolga 4 KB, a imata 512 64-bitnih elementov. V vsakem elementu je zgornjih 12 bitov rezerviranih za sistem, spodnjih 52 pa vsebuje naslov v fizičnem pomnilniku. Od teh 52 je porabljenih bistveno manj - v dolgem načinu 64-bitnih procesorjev je uporabljenih 48 bitov, v zaščitenem načinu 32-bitnih procesorjev pa le 36. Čisto mimogrede - bit 63 v vnosih imenika strani je slavni NX, bit, ki določa, da pomnilniške strani, na katere kaže vnos, vsebujejo podatke in ne izvršljive kode.

Vnos v tabelo strani ima v 32-bitnem načinu izrabljenih le 36 bitov, zato lahko naslovi 236 oziroma 68.719.476.736 bajtov ali, po domače, 64 gigabajtov. Ni ravno 256 TB, ki jih lahko izrabi AMD64, kljub temu pa kar za 60 GB več od 4 GB, kolikor lahko naslovi 32-bitni procesor brez razširitve PAE.

Primož Gabrijelčič

V osnovi gre za "goljufijo", podobno segmentnim registrom. Operacijski sistem sicer še vedno vidi le 4 GB hkrati, a lahko zelo hitro preklaplja med različnimi deli večjega fizičnega pomnilnika. V nekem trenutku, denimo, deluje z naslovi od 0 do 4 GB-1, v naslednjem pa že z naslovi od 4 GB do 8 GB-1. (Pa v resnici ni čisto tako, ker je sistem vedno na istih naslovih, spreminjajo se le tisti deli pomnilnika, ki jih naslavljajo programi.)

Preden gremo naprej, poskusimo razčistiti še eno malenkost. V vseh virih piše, da PAE omogoča razširitev na največ 64 GB. V različnih dokumentih pa je zapisano, da so nekateri 32-bitni Windows, denimo Server 2003 Datacenter Edition, omejeni na 128 GB. Kako je to mogoče? Odkrito povedano - ni nam jasno. Po temeljiti raziskavi Microsoftove dokumentacije je videti, kot da je 2003 Datacenter sistemsko sicer res omejen na 128 GB, a na nobeni platformi ne more izkoristiti več kot 64 GB. Reklamna poteza, torej. (Lahko pa se seveda tudi motimo.)

Primerjava naslovljivega pomnilniškega prostora v 32-bitnih procesorjih (brez razširitve PAE in z njo) ter 64-bitnih procesorjih z arhitekturo AMD64

Ker PAE omogoča naslavljanje več kot 4 GB, lahko na ustrezno podprtem računalniku poženemo številne programe in vsi bodo dostopali do svojih 2 (ali 3 GB) pomnilnika. Kaj pa, če bi radi na takem sistemu pognali le en program in mu dali ves razpoložljivi pomnilnik? Potrebujemo 64-bitni operacijski sistem?

Če je program ustrezno sprogramiran, je odgovor nikalen. To, kar PAE omogoča operacijskemu sistemu, ta posreduje aplikacijam s programskim vmesnikom Address Windowing Extension oziroma AWE. Ta zelo enostavni API omogoča aplikaciji, da poljubni del naslovnega prostora nad 2 (ali 3) GB premapira pod to mejo. Ker se pomnilnik ne prepisuje naokoli, temveč se popravi samo ustrezna tabela, ki krmili PAE, je takšno premapiranje zelo hitro. Aplikacija lahko torej uporabi "poljubno" pomnilnika, a je v vsakem trenutku naslovljivega le 2 (ali 3) GB. Pri nekaterih nalogah (spet bomo omenili zbirke podatkov) je tak način izrabe pomnilnika povsem primeren. Pri drugih, na primer pri velikanskih matematičnih izračunih, simulacijah, grafičnem modeliranju ... pa niti ne. Tam bi si želeli, da bi lahko program neposredno naslavljal čim več pomnilnika. To pa nam omogočajo le 64-bitni sistemi.

S programi za obdelavo slik lahko brez težav porabimo več kot 4 GB pomnilnika.

V 64-bitnem svetu

Pa smo le prispeli do jedra današnje teme, sistemov, ki podpirajo terabajt pomnilnika. Povejmo najprej, kako poteka poganjanje 32-bitnih programov v takšnih sistemih. Zelo enostavno - delujejo. Uporabijo lahko do 2 GB pomnilnika, če imajo nastavljeno zastavico, ki smo jo omenjali pri načinu 4GT, pa lahko zasežejo cele 4 GB. Stikalo/3 GB (in posebni način 4 GT) nista več potrebna.

Nekaj podobnega velja tudi za 64-bitne programe. Če nimajo nastavljenega omenjene zastavice, sta njihova samo 2 GB, šele če je zastavica postavljena, pa je njihovih do 8 TB pomnilnika. Navideznega, seveda, saj smo že omenili, da AMD64 trenutno naslavlja le do 1 TB fizičnega pomnilnika. Koliko ga bo dovolil vaš sistem, je odvisno od različice Windows. Starter podpira le 2 GB, Home 8 GB, Premium 16 GB, Professional, Enterprise in Ultimate pa "potegnejo" do 192 GB. Server 2008 R2 dovoljuje večje sestave - od 8 GB (Foundation) do 2 TB (Datacenter, Enterprise). Kako 2 TB, ko pa AMD64 naslavlja le 1 TB? Hja, kdo bi vedel, verjetno gre za podoben marketing kakor pri Server 2003 Datacenter. Pa saj je vseeno - dandanes boste bolj težko našli matično ploščo, na katero bi lahko pritrdili toliko pomnilnika.

Štiri gigabajte pa lahko vtaknete že v marsikatero matično ploščo (pa tudi osem jih navadno ne predstavlja težav). Večinoma bo operacijski sistem takoj videl štiri gigabajte, včasih pa boste morali malce popraviti nastavitve BIOS. Na nekaterih sistemih je treba nastavitev "Memory Remap Feature" spremeniti v "Enabled". Ponekod se ta nastavitev imenuje "Memory Hole Remapping".

Za izrabo 4 GB pomnilnika bo treba ponekod pravilno nastaviti BIOS.

Slišati je zelo enostavno. Stari 32-bitni programi bodo delovali, novi 64-bitni še bolje, kaj bi torej lahko bil razlog, da ne namestimo 64-bitnega operacijskega sistema? Pravzaprav - če je že XP bil na voljo v 64-bitni različici, zakaj o opuščanju 32-bitov govorimo šele letos? Problem so seveda - programi. Tisti bolj specifični, ki skrbijo za povezavo z napravami. Gonilniki, na kratko.

O drugih sistemih pišemo v okvirčkih, v Windows pa velja, da zna jedro naložiti samo gonilnike, ki so prevedeni za enak naslovni prostor kakor jedro. Z drugimi besedami - 32-bitno jedro zna naložiti le 32-bitne gonilnike, 64-bitno pa le 64-bitne. To ni nekaj, v kar bi razvijalce prisilila arhitektura AMD64, temveč gre "le" za omejitev izvedbe jedra Windows.

V časih Windows XP je to predstavljalo velik problem. 64-bitnih gonilnikov skoraj ni bilo. Tistih nekaj malega, ki jih je priložil Microsoft, pa so bili generični (se pravi, da niso podpirali specifičnih funkcij strojne opreme) in neoptimizirani, kar se je še kako poznalo pri grafičnih gonilnikih. Za igrice 64-bitni XP niso bili primerni. Ker ni bilo dovolj gonilnikov, je bilo malo nameščenih 64-bitnih sistemov. Ker je bilo takih sistemov le malo, se nihče ni trudil pisati gonilnikov. Začarani krog. Pa še ena "malenkost" je povzročala težave. Razen če si računalnik poganjal v načinu "driver testing", sistem ni hotel naložiti gonilnikov, ki jih ni odobril in podpisal Microsoft. Menda so hoteli s tem doseči stabilnost sistema, dosegli pa so bolj kot ne samo njegovo životarjenje in rabo v sestavah, kjer ni bilo priključenih "čudnih" naprav in kjer nikogar ni zanimala hitrost grafičnega sistema - torej v strežnikih, ki so poganjali kaj drugega kot zbirke podatkov.

Tudi 64-bitna Vista je ni odnesla dosti bolje. Gonilnikov je bilo sicer več, a ne dovolj za splošno sprejetje. Večina namiznih računalnikov in prenosnikov je imela manj kot 2 GB pomnilnika, za izrabo katerega so popolnoma zadoščali 32-bitni operacijski sistemi.

Primož Gabrijelčič

Na 64-bitno Visto sem šel z novim računalnikom. Ker je pač imel 4 GB pomnilnika in me je škrto slovensko srce bolelo ob misli, da približno osmine tega ne bi mogel izkoristiti. Nobenih težav nisem imel, res pa je, da na tem računalniku ne visi čuden hardver. Razni skenerji, faksi, tiskalniki in podobno so obešeni na pisarniški strežnik, ki ga poganja Windows XP, in tako bo ostalo še dolgo.

Ko sem (zaradi popolnega sesutja diskovja) spet nameščal operacijski sistem, sem se malo posodobil in zdaj uporabljam Windows 7, seveda še vedno v 64-bitni izvedbi. Ko sem nadgradil računalnik na 8 GB, je postala pot nazaj nemogoča, tudi če bi si slučajno zaželel 32 bitov. Pa si jih nisem.

Težav s programi prav zares nisem imel. Pogrešam le Sandboxie, ki ga za 64-bitni Windows ni. Res škoda. Pa TortoiseSVN imam nameščen v obeh različicah - 32- in 64-bitni - ker le tako dobimo enostaven dostop do razširitev lupine tako v Explorerju kot tudi v Total Commanderju.

Letos pa se je zgodil velik premik - v računalnike se je začelo vgrajevati štiri gigabajte. Kupci so se takoj začeli pritoževati, ker jim je od tega ostalo le nekje od 3 do 3,5 gigabajta. Ostanek naslovnega prostora se je namreč pokrival z naslovnim prostorom BIOSa, pa z video pomnilnikom, pa tudi druge kartice v sistemu so si rezervirale kakšen košček. Zoprna situacija - kupiš pomnilnik, pa ga potem niti ne vidiš v sistemu. Uporabniki so se razburjali, prodajalci izgovarjali na strojne omejitve in situacija je postala tako zoprna, da je Intel celo izdelal vezni nabor (chipset), ki omogoča rabo treh pomnilniških modulov hkrati (običajno module v računalnike vtikamo posamič ali v parih) in s tem izgradnjo sistemov s tremi gigabajti pomnilnika (čeprav, resnici na ljubo, odločitev o treh modulih ni temeljila na dotični težavi).

Vedno več je bilo tudi matičnih plošč, ki so sprejele bistveno več kot 4 GB. Zato se je zanimanje za 64-bitne Windows tako povečalo, da so se končno začeli pojavljati tudi gonilniki. In ker je na voljo dovolj gonilnikov, je tudi 64-bitnih namestitev vedno več. Začarani krog se odpira.

Kljub temu pa bodite pozorni - morda ravno za vaš tiskalnik/skener/igralno palico gonilnika ni. Pred namestitvijo 64-bitnega sistema to vsekakor preverite!

Poleg gonilnikov povzroča težave tudi grafična lupina (shell). V 64-bitnih Windows so vsi programi 64-bitni (razen Internet Explorerja, ki ga dobimo v obeh različicah), torej je takšna tudi lupina. Ker je 64-bitna, pa lahko naloži le 64-bitne razširitve (shell extensions). Marsikatera razširitev je dandanes že na voljo v obeh različicah, ostaja pa jih še dosti, ki so le 32-bitne, in te na 64-bitnem sistemu ne bodo delovale. No, vsaj popolnoma ne. Razširitvam se uspe registrirati (gre le za nekaj vnosov v register), a jih sistem potem enostavno "ne vidi". Opazili jih bodo le 32-bitni programi, ki uporabljajo funkcije grafične lupine, na primer Total Commander, ki ob desnem kliku datoteke pokaže menu z akcijami, ki jih lahko s to datoteko počnemo (tega pa dobi od lupine). Ker je Total Commander še vedno 32-biten, so tudi možnosti le iz 32-bitnega sveta. Avtor pa je poskrbel za zanimivo rešitev - na prikaznem menuju vidimo tudi možnost X64, ki odpre menu 64-bitne lupine. Programer je to dosegel z enostavno zvijačo. Total Commander naloži še 64-bitni programček, katerega edina naloga je, da se na eni strani pogovarja s Total Commanderjem, na drugi pa dostopa do 64-bitne lupine.

Tudi 32-bitni programi lahko - po ovinkih - dostopajo do razširitev 64-bitne lupine.

Nekaj podobnega se lahko zgodi tudi pri uporabi DirectX. Tudi DirectShow lahko naloži le fitre enake "bitnosti". 64-bitna aplikacija, ki uporablja DirectShow za prikaz ali obdelavo videa, bo lahko uporabila le 64-bitne filtre, teh pa je bistveno manj kakor 32-bitnih.

Tudi brskalniki so v težavah. Internet Explorer 64 ne more naložiti 32-bitnih kontrol ActiveX (še dobro, bo pripomnil marsikdo), zato 64-bitna različica IE na primer ne more naložiti popravkov iz update.microsoft.com. 64-bitnim Windows sta ravno zaradi tega priložena dva Internet Explorerja - 32-bitni in 64-bitni.

Drugi brskalniki s prehodom na 64 bitov ne hitijo preveč, ker jih omejuje vseprisotni flash. 64-bitnega flasha namreč še ni. No, pa nič hudega, saj brskalniki ne spadajo ravno med programe, ki bi jih morali na vsak način izvajati v 64 bitih.

Tudi 32-bitni sistemski programi - protivirusniki, vdorobrani in podobno - ne bodo delovali. Nujno morate poiskati 64-bitno različico.

Pa še zadnja omejitev nam je ostala. V 64-bitnih Windows ne morete poganjati 16-bitnih programov. Odpade torej izvajanje starih DOS aplikacij in programja, napisanega za 16-bitne Windows. Ja, tudi tega je še kar nekaj na svetu. AMD64 poganjanje 16-bitnih programov sicer podpira, Windows pa ne. Največja omejitev je pomanjkanje navideznega načina, ki ga je doslej izkoriščal NTVDM (del sistema, zadolžen za poganjanje 16-bitnih programov). AMD64 sicer pozna navidezni način, a le v podedovanem načinu, v dolgem, ki ga potrebujemo za 64-bitno delovanje, pa ne.

Kljub temu da 16-bitnih programov ni mogoče pognati, pa Microsoft obljublja, da se bo še vedno dalo namestiti nekatere 32-bitne programe, ki za nameščanje uporabljajo določene različice 16-bitnih namestitvenih programov InstallShield in Acme. Če citiram Ibro Hadžipuzića: "Svašta!" Kako jim je to uspelo, ne vemo. Možnost bi bila, da sistem ugotovi, da gre za enega od teh namestitvenih programov, iz njega "izvleče" vse podatke o namestitvi in jo opravi sam. Je pa to res samo ugibanje.

64 bitov v svetu iger

Igričarji so primorani nenehno skrbeti za zmogljivost svojih računalnikov, zato pogosteje kot druge skupine zahajajo v trgovine s strojno opremo in so za kak FPS več pripravljeni zamenjati tudi operacijski sistem. Od leta 2005, ko so se pojavile prve 64-bitne igre (Far Cry, Half Life2), ki jih je tedaj propagiral AMD za svojo serijo 64-bitnih procesorjev, se v glavah navdušencev vrti vprašanje: 64 bitov, da ali ne?

Hude revolucije na tem področju vse do čisto pred nedavnim ni bilo. Izdelovalci iger morajo namreč pri svojih projektih zelo paziti, da s sistemskimi zahtevami igre zajamejo čim širši krog kupcev, lastniki 64-bitnih platform pa med njimi ne predstavljajo kakega opaznega odstotka. Zato je do nedavna izhajalo le malo iger, ki ob 32-bitnih podpirajo 64-bitne sisteme, pa še te se pri merjenjih niso izkazale opazno bolje od 32-bitnih. V nekaterih primerih je šlo le za kako sličico na sekundo več, včasih pa so delovale celo počasneje. Na primerjalnem preizkusu, ki so ga letos opravili na Tomshardware, se je opazno bolje odrezala samo igra GTA4. Razlog za slabe rezultate najverjetneje tiči v dejstvu, da igre niso bile pisane za 64-bitne sisteme, temveč zgolj prirejene. Nekatere so, da so delovale normalno, kasneje potrebovale še lepo število zaplat (patchev). So pa bile nekoliko polepšane, saj si programerji denimo pri izdelavi pokrajine lahko privoščijo gostejšo in lepo valujočo travo.

Tako bi lahko za zdaj kot edino konkretno prednost 64-bitnih sistemov zapisali podporo pomnilniku, večjemu od 4 GB. Toda ker večina iger ne potrebuje take količine pomnilnika, med igranjem pa ponavadi ne poganjamo več aplikacij vzporedno, s tem ni mogoče pridobiti prav veliko. Preizkusi so pokazali, da sodobne igre (Crysis, Far Cary 2) s 3 ali 6 GB pomnilnika delujejo zanemarljivo različno hitro.

Toda, ker je pomnilnik danes poceni, iger s podporo 64-bitnim OS pa bo vse več, zlasti takih, ki bodo arhitekturo izkoriščale v popolnosti, ni razloga, da ne bi z mislijo na prihodnost kupili in namestili 64-biten operacijski sistem. Sploh, ker pri kupovanju igričarskega računalnika najverjetneje ne boste kupili manj kot 4 GB pomnilnika. To pa je - da ga boste sploh lahko izkoristili v celoti - že zadosten razlog za prehod na 64 bitov. Z združljivostjo za nazaj pa težav tako in tako ni in delovale vam bodo tudi igre, pisane za dobro staro arhitekturo x86.

Dare Hriberšek

Pomagamo si lahko z navideznim strojem. V računalnik namestimo DosBox, VirtualBox, VMWare ali pa uporabimo VirtualPC, ki je nekaterim različicam Windows 7 že priložen, in v njem izvajamo stare programe. Navidezni stroji so primerni tudi za testiranja 64-bitnih operacijskih sistemov. Vsaj nekateri. Virtual PC sploh ne zna poganjati 64-bitnih okolij, VMWare in VirtualBox pa znata na računalniku s 64-bitnim procesorjem pognati navidezni računalnik s 64-bitnim operacijskim sistemom, tudi če je gostitelj 32-biten. Z drugimi besedami - če imate dokaj nov računalnik in na njem 32-bitni operacijski sistem, lahko vanj namestite VirtualBox (več o njem smo pisali v februarskem Monitorju) in vanj namestite 64-bitno različico Windows. Res pa je, da bo to delovalo le na računalniku, ki vsebuje 64-bitni procesor z vključeno strojno virtualizacijo. Takšni so sicer skoraj vsi 64-bitni procesorji, čisto vsi pa žal ne - nekaterim cenejšim modelom Intel onemogoči izvajanje strojne virtualizacije.

Virtualizacija postaja vedno bolj pomembna tudi na strežnikih. Na močno strojno opremo namestite VMWare ESX(i) ali kaj podobnega in poganjate različne operacijske sisteme. K temu nas sili tudi Microsoft, ki ne podpira namestitev nekaterih kombinacij programske opreme v istem operacijskem sistemu. Primer sta domenski strežnik in strežnik Exchange, ki naj bi bila nameščena na dva ločena sistema. To, da boste morali kupiti dve licenci Windows Serverja 2008, pa je zgolj pozitiven stranski učinek (za Microsoft). Zanimivo, da v primeru strežnika za manjše skupine (Small Business Server) oboje lepo deluje na enem samem strežniku. Morda bi spet veljalo uporabiti zgornji "Svašta!" ...

WOW64!

Omenili smo, da 32-bitni programi brez težav delujejo znotraj 64-bitnega operacijskega sistema. Seveda je tudi tukaj treba dodati "običajno". Sem ter tja se najde 32-bitni program, ki ima v 64-bitnem sistemu težave. Da takih primerov ne bi bilo preveč, skrbi emulacijski sloj WOW64 (Windows on Windows 64).

Ta emulacijski sloj poskrbi, da je operacijski sistem videti tako, kot ga pričakuje 32-bitni program. 64-bitni Windows vsebuje le 64-bitni programski vmesnik, ki ga 32-bitni programi ne morejo neposredno uporabiti. WOW64 poskrbi za prilagajanje velikosti parametrov API klicev, delo z datotečnim sistemom, registrom in podobno. Spotoma pa postori še nekaj stvari, ki preprečijo, da bi 32-bitni programi pokvarili sistemske nastavitve, programerjem pa še dodatno otežijo življenje.

32-bitni programi tako ne morejo uporabiti mape \Windows\System32. Vsak poskus takega dostopa je neopazno preusmerjen v mapo \Windows\SysWOW64. Podobno se zgodi pri dostopu do registra. Vsako delo s ključem HKEY_LOCAL_MACHINE\Software je preusmerjeno v HKEY_LOCAL_MACHINE\Software\WOW6432Node. Tretja sprememba pa je dostop do mape s programi (Program Files), kjer se vsi dostopi preusmerijo v Program Files (x86).

V Microsoftu so prijazno poskrbeli za bolj hekerske programerje, ki občasno potrebujejo (potrebujemo) dostop tudi do skritih delov datotečnega sistema - programsko lahko onemogočimo preusmeritve na datotečnem sistemu, zahtevamo dostop do "pravih" vej v registru in preverimo, ali se proces izvaja znotraj sloja WOW64.

Če hoče program izkoristiti vse prednosti 64-bitnega okolja, ga je treba prevesti v 64-bitno kodo. To je po eni strani zelo enostavno - v Visual Studio, denimo, samo nastavimo ustrezno stikalo - po drugi pa daleč od tega. Prevajanje za 64 bitov namreč spremeni velikost vseh kazalcev (naslovov predmetov) in če program z njimi počne kakšne čudne mahinacije (jih, denimo, posreduje funkcijam kot 32-bitna cela števila), bo s predelavo kar nekaj dela. 64-bitni Windows uporabljajo model LLP64, ki predpisuje, da se s spremembo 32/64 ne spremeni velikost celoštevilskih tipov (int, long), velikost kazalcev pa. Sodobni prevajalniki nas na srečo znajo opozoriti na morebitne težave.

Nastavitev ciljne platforme v Visual Studiu

V .NET je prehod enostavnejši, ker je okolje neobčutljivo za spremembe v ciljni platformi. Programe lahko prevedete za x86, x86-64 ali AnyCPU - v slednjem primeru bo program v 32-bitnem problemu deloval 32-bitno, v 64-bitnem pa 64-bitno. Podobno malo težav imajo tudi sodobni jeziki, ki se interpretirajo in ne prevajajo (ruby, python), čeprav imate tudi pri njih lahko težave, če kličete zunanjo, procesorsko odvisno kodo.

Če prevajalnik ne podpira izdelave kode za 64-bitno platformo, hja, potem ste pa v težavah.

Kaj pa Mac OS X?

Applov operacijski sistem se je s 64 biti začel spogledovati ob izidu različice Mac OS X 10.3 (Panther) davnega oktobra 2003. A res samo spogledovati, saj je zmogel le osnovno podporo 64-bitnemu procesorju PowerPC G5, kot je npr. celoštevilska aritmetika. Aprila 2005 je izšla različica 10.4 (Tiger), ki je uvedla možnost ustvarjanja procesov s 64-bitnim naslovnim prostorom. A šele oktobra 2007 rojeni Mac OS X 10.5 (Leopard) je to možnost razširil na procese, ki izvajajo operacije uporabniškega vmesnika. Pa še tu se je prikradla omejitev, saj je novost obveljala le za aplikacije programskega vmesnika Cocoa, Carbon API pa je tako postal dolgoročno obsojen na smrt.

Konec avgusta letos je začel Apple za 29 evrov prodajati Mac OS X 10.6 (Snow Leopard), ki prinaša izboljšave skoraj samo pod pokrovom motorja. Tako je npr. upravitelj datotek Finder prepisan v programski vmesnik Cocoa in uporablja 64-bitno tehnologijo, prvič pa je 64-bitno tudi jedro operacijskega sistema. A privzeto se z izjemo strežnikov Xserve še vedno uporablja 32-bitno jedro, 64-bitnega pa vklopimo z držanjem tipk 6 in 4 med zagonom. Razlog za to je odsotnost kombiniranega načina, ki bi 64-bitnim procesom omogočal nalaganje 32-bitnih knjižnic, gonilnikov itd. In v tem trenutku je že 64-bitnih gonilnikov občutno premalo, da bi si Apple upal Mac OS X privzeto zbuditi v 64-bitnem načinu. Kljub temu je prispevek Snow Leoparda k prehodu na 64-bitno tehnologijo velik, saj je Leopard imel le eno 64-bitno aplikacijo (Chess), Snow Leopard pa ima samo štiri 32-bitne (iTunes, Grapher, Front Row in DVD Player).

Pomembno je opozoriti, da kljub 32-bitnemu jedru lahko uporabljamo aplikacije v 64-bitnem načinu in izkoristimo več kot 4 GB glavnega pomnilnika.

Matjaž Horvat

128-bitni operacijski sistemi

Čeprav 128-bitnih OS v resnici ne potrebujemo (in vprašanje, ali jih bomo sploh kdaj potrebovali), pa so že na voljo 128-bitni datotečni sistemi. Tak je Sunov ZFS.

Sodobni diski so navadno razdeljeni na 512-bajtne bloke in, če jih ne združujemo v gruče (kot to počneta datotečna sistema FAT in FAT32), lahko z 32 biti naslovimo le 2 TB podatkov. S 64 biti naslovimo do 8 ZB (zetabajtov, en zetabajt je 1024 eksabajtov), kar je sicer gromozansko veliko, a kljub temu dovolj malo, da so se razvijalci že začeli ukvarjati s problemom še večjih diskovnih sistemov. 65 ali 66 bitov bi se sicer večini zdelo dovolj za kar nekaj časa, a kaj, ko je prva "pametna" vrednost po 64-bitih 128. Računalnikarji pač radi množimo z dve.

128-bitni datotečni sistemi sicer ne zahtevajo 128-bitnih operacijskih sistemov, kljub temu pa je treba prilagoditi sistem za upravljanje datotek, ki se pač mora zavedati, da datotečni sistem podpira tako velike vrednosti.

Pred nekaj tedni je splet obkrožila novica, da naj bi bil Windows 8 128-bitni operacijski sistem. Podrobnosti o tem niso znane, novica pa ni kaj dosti verjetna. 128-bitnega operacijskega sistema zaenkrat še ne potrebujemo in vprašanje je, kdaj ga sploh bomo. Čisto možno pa je, da bo Windows 8 podpiral velikanske datotečne sisteme s 128-bitnim naslavljanjem. 

Unix in Linux sta tu že dolgo domača

Operacijski sistem Unix je 64 bitov posvojil razmeroma hitro. Že predhodnik sistema True64 Unix je leta 1993 uspešno naslavljal 64-bitni pomnilnik ter poznal podatkovne tipe ustrezne velikosti. Sunova različica sistema Unix (Solaris) je do te stopnje prišla pet let kasneje, s številko 7. Vseskozi je svet Unix/Linux pridno sledil tempu, ki ga je narekoval bliskovit razvoj strojne opreme. Tako je Linux pridobil naslavljanje v razširjeni bitni prostor že z jedrom 2.4 in takrat hkrati poskrbel za povratno združljivost (ang. long mode).

S popularizacijo arhitekture s strani izdelovalcev procesorjev in drugega čipovja se je skozi čas večala tudi podpora in angažiranost linuxovske skupnosti. Dandanes vse večje distribucije ponujajo 64-bitno različico na tak ali drugačen način. Ene jo zapakirajo skupaj z dvaintridesetko (SuSE, Mandriva), druge pa že na začetku ustvarijo dva ločena paketa (Fedora, Ubuntu). Različne Linuxe lahko ločimo tudi po načinu implementacije. Nekateri omogočajo zaganjanje tako 32- kot tudi 64-bitnih aplikacij (ang. multilib), drugi so namenjeni strogo aplikacijam s podporo višjim bitom (ang. purelib).

Na splošno velja, da je prehod priporočljiv za sisteme z veliko pomnilnika, saj ga drugače ne morejo uporabljati več kot 4 GB, posamezen proces le 3 GB. Težavo so sprva reševali izdelovalci procesorjev (prvi Intel) z vgrajevanjem PAE jeder (ang. Physical Address Extension), tehnologijo, ki je omogočila naslavljanje večje količine pomnilnika (do 16GB), a ni obšla omejitve na proces.

Nadalje zagovorniki tehnologije navajajo vrsto prednosti in dodanih zmožnosti, ki naj bi jih tak prehod prinesel. Hitrost je eden izmed njihovih ključnih argumentov. Pa je res Linux hitrejši v večbitni izvedenki? Niti ne. Temu botrujejo predvsem uporabniški programi, saj jih je večina le na novo prevedenih, oziroma se zaganjajo ob pomoči posnemanja. Tako se dejansko zaganjajo stari 32-bitni programi, brez kakršnekoli optimizacije za novo okolje. Ista zmožnost prevajanja aplikacij in gonilnikov tako pride prav drugemu argumentu, kajti v svetu 64- bitnega Linuxa ni težav z združljivostjo programske opreme ali delovanjem posameznih gonilnikov. Zato je uporaba sistema z novo arhitekturo smiselna predvsem pri računalnikih z večjim številom gigabajtov notranjega pomnilnika. Sicer tak operacijski sistem, zaradi napihnjenih kazalcev in določenih podatkovnih tipov, tudi "pokuri" več RAMa, vendar se to pri računalu z veliko pomnilnika ne bo poznalo. Hkrati je uporaba 64-bitne arhitekture tudi edini način, kako izkoristiti drago plačano strojno opremo, saj podpira več procesorjev in do 256 GB notranjega pomnilnika. Na koncu lahko ugotovimo, da s prehodom nismo (zaenkrat) nič kaj bistvenega pridobili. Vendar zadržek sprejmite z rezervo, če imate močnejši stroj z več pomnilnika, večinoma uporabljate kakšno specialno aplikacijo, pisano posebej za 64-bitni sistem, če se računalo veliko ukvarja z računskimi operacijami ali ste ljubitelj novotarij na računalniškem področju. V naštetih primerih mirne duše pustite, da vas štiriinšestdeset pingvinčkov zapelje v prihodnost.

Boris Šavc

Kaj izbrati?

Če imate možnost izbire in imate v računalniku 4 GB pomnilnika ali več, vam vsekakor priporočamo 64-bitni operacijski sistem. Preverite le, ali so na voljo vsi potrebni gonilniki, pa po spletu malo pobrskajte, kako je z združljivostjo programov, brez katerih vam ni živeti.

Včasih pa pač ni izbire. Ali v 64-bitnem sistemu ne deluje kakšen košček, ki ga nujno potrebujete, ali pa 32-bitne različice program sploh ni (tak je Exchange 2007) ali pa celo 32-bitnega operacijskega sistema ni na voljo (Windows Server 2008 R2). Takrat pač uporabljajte različico, v katero ste prisiljeni. Kaj pa vam ostane drugega?

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji