32bit vs 64bit – hvad skal jeg vælge
Dette indlæg bliver lidt længere, og lidt mere teknisk end normalt. Grundet længden og kompleksiteten af artiklen, starter jeg også med at give dig konklusionen – hvis du så vil have påstanden underbygget, kan du jo vælge at læse resten af artiklen.
Konklusion: 32bit er højst sandsynlig den version du bør vælge, og holde dig til de næste 2-3 år.
Og her kommer forklaringen – jeg starter helt basalt, så er du nogenlunde teknisk funderet, kan du bare rulle længere ned i artiklen, hvor der kommer mere kød på.
Bits’Nbytes – hvad er det?
Bit er synonym for det digitale, og udtryk for, at alting bliver målt i ledninger der enten er strøm på, eller er slukket. En bit er med andre ord en talenhed, der kun kan holde værdien 0 og 1. Dette er også forklaringen på, hvorfor det binære talsystem ofte bliver vist i forbindelse ed IT. Det binære talsystem fungere ligesom vores 10-tals system, men har altså kun 2 tal – 0 og 1. For at runde disse værdier af, så er én byte et tal bestående af 8 bit (eks: 01001011), og er interessant, fordi det er netop den mængde bits der bliver brugt til at skrive ét tegn. Har du8 bit, kan du kombinere 0 og 1-taller på 256 måder – så de spænder fra 00000000 til 11111111, eller fra 0 til 255, skrevet med decimal-tal.
32 bit og 64 bit – hvad er forskellen?
Din computer består af en stribe enheder, hvor hukommelse eller RAM er en del af det. Når en computer skal tilgå data, for eks. at ligge 2 tal sammen, så skal den hente det ene tal på én adresse i hukommelsen, og det andet tal på en anden adresse. En 32bit computer, har 32 bit til at skrive adresser med – det svarer til at den har 4.294.967.295 adresser den kan tilgå – det tal kaldes også 4 Gigabyte, og vi tal her om computerens adresserum eller dens evne til at allokere hukommelse.
Har du 64bit at gøre godt med er tallet betydelig større, du har pludselig et adresserum på 18.446.744.073.709.551.616 adresser – jeg har indtil videre ikke mødt en server med den slags hukommelseslager, så din XP derhjemme kommer nok heller ikke til at løbe tør for memory lige foreløbig.
Så den store forskel er altså, hvor meget hukommelse computeren kan udnytte.
Med det på plads, burde det være meget enkelt…men det er det bare ikke.
64 bit = performancetab.
Okay, nu begynder det at blive teknisk.
Når man programmere benytter man sig af det der hedder simple varibale og objekter. Simple variabler er sådan noget som heltal (integers), det er tegn (char), linier (strings), og lignende, men man benytter sig også af objekter, der typisk er nogle simple variabler, og nogle måder at tilgå disse variabler på. Det betyder ét objekt kan indeholde 3 heltal, 1 flydene kommatal, og 2 char – men i moderne sprog som java og .NET betyder dette blot, at objektet indeholder referencer (adresser) til simple objekter, der indeholder variablen, og en metode til at tilgå denne.
Og hvorfor er det så interessant?
En reference er en adresse, da en 64bit adresse fylder cirka dobbelt så meget i hukommelsen, end en 32bit adresse, betyder det at størrelsen på objekterne stiger. Da heltal også flytter sig fra at fylde 32bit til 64bit, og dette sker med en helt del andre avriabeltyper, betyder det at objektstørrelsen i hukommelsen vil stige, alene fordi du skifter fra 32bit til 64bit – faktisk vil den gennemsnitlige objektstørrelse stige med cirka 40 procent.
Det betyder, at for at du har den samme mængde pladser til din rådighed, skal du som minimum have 40 procent mere hukommelse i din maskine, når du skifter fra 32bit til64bit. Da grænsen for 32bit systemer går ved 4GB, betyder det at hvis du vil overveje 64bit systemer, bør du som minimum have 6GB RAM at gøre godt med.
Nå – men vi slutter ikke helt her.
Når et objekt skal behandles af CPU’en, flyttes det fra hjukommelsen, ned gennem bussen og rammer CPU’ens cache. Cachen er en lille bitte hukommelse der sidder direkte på CPU’en og er super hurtig, herfra flyttes objektet videre ned i 1. level cachen og til sidste får man lidt CPU-tid, og beregningen sker. Cache er lavet for at CPU’en skal brug mindst mulig tid på at vente på data. Jo større din cache er, jo mindre tid skal du vente. Da 2nd level og 1st level cache er rigtig dyr, er det ofte størrelsen på disse lagre der bestemmer prisen og hastigheden på din computer.
Når vores objekter nu er blevet 40% større går det ikke kun ud over vores RAM. Pludselig bliver udnyttelsesgraden af din cache også forringet med 40%, hvilket betyder der er plads til færre objekter i din cache. Dette medfører performancetab, eller rettere ydelsestab. På en almindelig hjemmecomputer taler vi om tab på 20-30 procent.
Bruger du din computer til internet, lidt word-skrivning og nogle regneark, har dette ikke den store indflydelse, til gengæld har det overhovedet ingen indflydelse at du skifter fra 32bit til 64bit, fordi du har ikke brug for den ekstra mængde hukommelse du kan allokere.
Bruger du din computer til spil, kan det have en temmelig grim effekt på hvordan dit spil arter sig. De fleste spil er 32bit, og ofte kan de internt ikke bruge mere end 2GB RAM, da de bruger den sidste bit i deres adresseallokering til andet. Selv idag, benytter de færreste spil sig af hukommelse ud over 1 GB, så at have 8 GB RAM er altså cirka 5GB spild, plus en ineffektivsering af din computer.
Bruger du din computer helt specielt, har du en server med en meget stor database på (og 1 million rækker på MySQL er IKKE en stor database), eller studere du på universitetet og skal bruge nogle ekstremt præcise målinger, så giver 64bit rigtig god mening – men så er du sikkert også klar over dit behov.
Lad os slå det fast én gang for alle, har du 4GB RAM, og vil gerne udnytte de sidste 500MB, kan det IKKE betale sig at opgradere. Du skal minimum have 6GB, og iøvrigt udnytte dem, før det giver mening – hverken World of Warcraft, MS word eller det at du bruger 4 tabs når du surfer kommer i nærheden af den mængde pladsforbrug!
Hvordan finder jeg ud af mine behov?
Nemt – du starter noget memory-overvågning op. På Windows er det din taskmanager, der kan findes ved at trykke Ctrl-Shift-Esc ned. Når den kører, logger den også dit memoryforbrug. Så starter du dit spil op, eller de programmer op du plejer at bruge, og kigger på hvor meget hukommelse din maskine reelt bruger. Kommer du over 2GB er jeg imponeret!
I Linux er det top der skal køre. Start en terminal op, og skriv ‘top’ – så kan du hele tiden se dit forbrug.
Som slutnote kan det siges, at ovenstående gælder, uanset om du kører Windows, Linux, UNIX, MacOS eller et vilkårligt andet operativsystem.
- Jeg er i tvivl om læsernes niveau her på bloggen, og vil rigtig gerne høre din mening om ovenstående artikel?
- Er der noget der er for dårligt forklaret, bruger jeg for meget tid på at forklarer hvad der sker, eller er det alt alt for teknisk?
- Er du interesseret i flere lignende artikler, eller ser du helst at det her er den sidste af sin art?
Al respons tages ad notum.
Ét er adresseringsmuligheden. Men der er så sandelig også hastighedsforskelle i forhold til antallet af interne instruktioner. Hastighedstab skal nok passe på Windows-området, men jeg tvivler om Apple nogensinde ville hoppe med på 64-bit instruktioner i flere af deres programmer hvis det havde givet ydelsestab….
[Ref: http://www.apple.com/macosx/technology/
Helt tilbage til MAOS (MAskinarkitektur og OperativSystemer) på datamatikerstudiet, diskuteredes det meget hvorvidt der ville ske det store dengang vi sprang fra 8 bit til 16 bit, og principielt kan det siges, at meget af debatten har bundet i en manglende adskillelse af filsystem fra processorfunktionerne. Så længe man har ville bevare et bagudkompatibelt filformat (FAT) i stedet for NTFS og andre systemer, så har man ikke kunne komme forbi de “gamle” grænser…
Med andre ord er en stor del af Windows XP’s ulemper rent faktisk den manglende skrotning af enhver form for FAT-format. NTFS er det eneste fornuftige – dels af fragmenteringshensyn, men også af hensyn til sikkerheden.
Det bringer os videre til det næste: et operativsystem er kun så hurtigt som det svageste led. Hos nogle er det fragmenteringen på harddisken, hos andre er det mængden af RAM, hos særligt mange er det programmer med jævnt dårlig adressering og elendig styring af søgeprocedurer. Som om det kun var sekventiel søgning gennem en fil der fungerede.
Faktisk kunne det sammenlignes med det vi kender helt tilbage fra enten GW-Basic eller Turbo Pascals åbne filer og en LAAAANG søgning gennem hele filen set i forhold til en databasestruktur med pegere, adressering m.v. Det er jo derfor PBS hver nat opdaterer Dankort-systemerne. Hvis ikke det skete gik der ikke mange dage før det ville tage rigtig lang tid før du kunne hæve penge i automaterne.
Så det er en god artikel. Velbeskrevet. Men stoffet går nok langt over det de fleste almindeligvis kender til.
8 – 16 – 32 – 64 bit instruktioner:
Det er ehlt korrekt, at når man går over til et 64bit system, så åbner man også op for et nyt instruktionsset. Det gælder desværre sådan, at 64bit instruktioner er mere komplekse, end ex. 8 bit instruktioner, og tager derfor flere clockcykluser, og er derfor ikke entydigt hurtigere.
Instruktionerne i applikationenen vil oftest stadig ligge som 32bit instruktioner, da man så ofte kan nøjes med at compilere til begge typer kerne, med den ene forskel, at du internt i applikationen kan udbytte, at du har adgang til et større lager.
De ulemper jeg beskriver gør sig skam ganske rigtig også gældene på UNIX, og herved også Mac. Jeg sidder til daglig med AIX, hvor det her også er et issue.
Det gode er, at hvis man afvikler en 32bit applikation, vil den internt kun allokere som en 32bit applikation – og har du RAM nok, får den altså pludselig hele 4GB lagerplads at boltre sig på, uden at skulle kæmpe med OS native heap og andet. Men det pointere bare igen, at man skal have mere end 4 GB hukommelse før det giver mening, og tro mig – den hastig du vinder, ved at indføre et 64bit instruktionset, opvejer ikke det perfomancetab der er, grundet bloated objekter.
FilTabeller:
FAT har én fordel, og det er, at systemet er meget simpelt – hvilket gør det rigtig godt til eks. USB-penne. Ulempen ligger naturligvis i, at der er en begrænset mængde data, det kan allokere – lidt ligesom ovenstående debat, altså omkring memory-allokeringen. Det andet problem er, at sikkerheden (både adgang men også at filer ikke bliver korrupte) ikke er tænkt ind i FAT.
Datamængder og Batch:
Oftest behandler man stadig meget store datamængder i batches, som du selv er inde på – PBS, eller andre pengebærende transaktioner.
Det skyldes så også, at disse systemer ofte er baseret på mainframe, der selvom de har CICS, til at behandle online-transaktioner, så kræver store datamængder et hurtigere system. Ved at skrive dine programmer som batchprogrammer i COBOL eller PL1, oprette statisk SQL, og optimere det hele så meget som overhovedet muligt, kan du på runtime-øjeblikket minimere procestiden for den enkelte transaktion temmelig meget. Derudover kan du kører du udenfor peakhour, så det berør færrest mulige mennesker.
Mange tak for kommentaren, og dit besyv til arkitekturen.
Så er flg. info fra microsoft rimelig misvisende:
http://windows.microsoft.com/da-DK/windows-vista/32-bit-and-64-bit-Windows-frequently-asked-questions
Jeg har et program som det et muligt at beregne vinkler med. jeg har anvendt gwbasic.exe.
Nu har jeg en maskine med Vista og 64 bit, selv om jeg køre som XP eller Windows 98 står de 64 bits i vejen?.
Findes der et program som kan ændre det?
Umiddelbart ikke.
Det er sådan, at når du tager en applikation, der er skrevet og compilet til et 32bit miljø, så opretter OS en heap (hukommelsesområde til en given applikation) til applikationen der internt fungere som et 32bit-miljø.
Der er de naturlige ulemper, at man ikke kan benytte 64bit instruktioner, ligesom heapen ikke kan overstige de 4GB – meget enkelt fordi adresseområdet som sagt er kun har 32 bit.
Det der kan give dig problemer er, at du…som jeg læser det, bevæger dig fra en Win98 til en moderne platform.
Problemet er, at Win95/98/ME, lidt karigeret, kørte som en slags udvidelse af DOS (dette er en sandhed med heftige modifikationer).
Derimod er de NT-baserede systemer: NT / 2000 / XP / 2003 / Vista / 2008 / Win7 helstøbte Windows-systemer, med et kommandointerface.
gwbasic er mig bekendt en kommandofortolker, der fungerede som en slags udvidelse til DOS – det blev senere overtaget af QBasic. Om det kører under Vista…jeg aner det ikke.
Tak for svaret, jeg må prøve at lægge det over i Excel, hvis jeg stadig kan huske formlerne. Det omtalte program m. fl. er udført i begyndelsen af 80erne.
Venligst
Ole