9. sep2009

64-bit? Hvorfor det?

Dette er et spørsmål jeg får ofte. 

–Du, jeg har hørt at Windows også selges i 64-bits utgave, hva er egentlig vitsen med det?

–Vel, med 64-bits operativsystem kan man ha mer enn 4GB RAM i maskinen.

–Hva skal jeg med det da?

 My-computer-icon

Jeg har ofte blitt svar skyldig, helt til jeg nylig kom over RunAs Radio sin podcast nr. 117: “Phil Peery On the Powers and Pitfalls og 64 Bit Operating Systems!”. Phil Peery er medlem av Microsoft Premier Field Engineer team i New York og liker å snakke om 64-bits Windows. Med utgangspunkt i denne podcasten (som jeg anbefaler alle som er interessert i å høre gjennom) vil jeg i denne artikkelen forsøke å belyse noen av de mange fordelene med 64-bits arkitektur.

 

 

Minne

En datamaskin bruker minnet til alle programmer som kjører, til å håndtere nettverkstrafikk, grafikk og alle data til og fra disken.

 

Med en 32-bits datamaskin kan man maksimalt adressere 2^32 bytes (2 opphøyd i 32) som er 4,294,967,296 bytes eller 4GB.

 

Med 64-bits arkitektur øker man antall bytes datamaskinen kan adressere i minnet. Når man dobler buss-bredden til 64 bit, får man ikke en dobling av antall bytes - den øker eksponensielt til 2^64 = 18,446,744,073,709,551,616 bytes eller 16 Exabytes!!

 

Det er mye minne, men så skal vi huske at tidlige operativsystemer som DOS på 80-tallet hadde sin begrensning på 1MB og dette var på den tiden ansett for å være mye minne. Vår venn Bill Gates har fått rykte på seg for å i 1981 ha sagt at “640kB ought to be enough for anyone” -  uten at jeg har greid å finne noen pålitelig kilde som kan verifisere at han faktisk sa dette.. :)

 

Det finnes ingen datamaskiner pr i dag som har fysisk kapasitet til så mye minne, men hvis økningen i lagringskapasitet fortsetter å øke i samme takt som i dag, og mye tyder på det, vil vi nok ha datamaskiner med Exabytes med minne innen noen år.

 

Prosessorarkitektur

Prosessorarkitekturen ligger til grunn for CPU’ens oppbygging.

De fleste datamaskiner som selges i dag, har allerede 64-bits arkitektur, som kreves for å kunne kjøre 64-bits programmer. Et hederlig unntak er de etter hvert så populære “nettbøkene” (kan man si det?? :)) som fortsatt har 32-bits arkitektur.

 

- Men når jeg nå har en datamaskin med 64-bits arkitektur, har jeg da noen andre fordeler enn at jeg kan ha gigantiske mengder med minne i den? Og hva med de gamle 32-bits programmene mine, må de byttes ut? Må jeg kjøpe alt nytt??

 

64-bits Windows

Noen husker kanskjer at vi for noen år siden gikk fra 16-bits arkitektur (Intel 80286) til 32-bits (Intel 80386) da vi fikk behov for mer kapable maskiner. 16-bits programmer var fortsatt støttet av alle Windows versjoner opp til og inkludert Windows Vista. Nå er vi kommet til neste grense, og 64-bit er det naturlige neste steg. For å gjøre det enklere å komme seg over til ny arkitektur, har de som designer prosessorene gjort det mulig å kjøre både 32- og 64-bits operativsystemer på 64-bits CPU’er og Windows støtter både 32- og 64-bits programmer i 64-bits versjonen.

 

Dagens moderne 64-bits maskiner kjører altså like fint med 32-bits operativsystemer, og det er dette som selges mest pr i dag. Antall 64-bits installasjoner øker derimot kraftig, og vil om kort tid være i flertall. Hovedgrunnen til at dette tar tid, er at maskinvareleverandørene må lage drivere til produktene de selger og de lever bedre av at forbrukerne kjøper nytt. Business as usual der altså. :)

 

Når man bytter til 64-bits Windows må man installere drivere som er laget for 64-bits arkitektur.  For å kunne kjøre 32-bits applikasjoner som før, brukes en teknologi som kalles “Windows on Windows” (WoW) som er et kjøremiljø for applikasjonen. Applikasjonene kjører like godt som på 32-bits Windows, og brukeren merker ikke forskjell.

 

Som man får høre i podcasten, vil man ved å kjøre de samme applikasjonene på den samme maskinvaren i et rent 64-bits miljø, der både drivere, operativsystem og applikasjoner er 64-bit, oppleve opp til 30-40% bedre ytelse. Hvordan er det mulig?

 

Ytelse

For å forstå hvordan overgangen til 64-bits plattform kan gi store forbedringer i ytelse, er det viktig å forstå litt om hvordan Windows håndterer minne. Podcasten går i mye dypere teknisk detalj enn det jeg vil gjøre her, og anbefales for den interesserte.

32-bits operativsystemer håndterer data i 32-bits verdier. Hele operativsystemet er designet og kompilert til å jobbe på denne måten. Når man øker til 64-bit, kan systemet håndtere dobbelt så mange 32-bits verdier pr prosessor-klokkesyklus. Dette er viktig fordi det er fortsatt mange grunnleggende 32-bits verdier i Windows. Mer om drivere lenger ned.

 

32-bits Windows deler det tilgjengelige minneområdet i to:

  • 0-2 GB: Kernel-mode område. Dette brukes utelukkende av Windows kjernen og hardware drivere.
  • 2-4 GB: User-mode område. Her kjører applikasjoner; feks Notepad, SQL Server, MS Word osv.

 

Vi kan ta følgende eksempel, som også brukes i podcasten:

Hvis man har en server som er konfigurert som Active Directory domenekontroller er det prosessen lsass.exe som håndterer oppslag i databasen. Denne prosessen kjører i User-mode området, og kan da (under 32-bits Windows) adressere 2GB maksimalt. Den bruker en del minne til håndtering av trafikk etc, slik at den maksimale AD databasen den kan holde i minnet er ca 1.4GB. Husk også at andre User-mode programmer kjører i dette samme området. Så snart databasen blir større, må prosessen begynne å lese og skrive endringer til og fra disk og dette er operasjoner som går i størrelsesorden 1000x saktere enn operasjoner mot minnet!

 

* Her måtte jeg sjekke hva vi hadde av størrelse på vår beskjedne interne AD database, som har i overkant av 2000 objekter (brukere, datamaskiner, grupper osv) og likevel har vi langt igjen til denne begrensningen:

image

Så da kan selv vurdere hva man har – det er nok hundretusenvis av objekter i en database på 1.4GB! En AD database som er så stor, vil ha mye trafikk og derfor vil det raskt merkes treghet når man må skrive til disk.

 

Ved å bytte til 64-bits Windows får man et User-mode område på 8TB, og alle slike bekymringer forsvinner som dugg for solen… :)

 

Databaser som MS SQL vokser seg fort mye større enn 1.4GB og vil derfor lide under begrensninger i tilgjengelig minne. Byttet til 64-bits plattform vil snart virke fornuftig når man ser hvordan dette økte minneområdet gir applikasjoner og tjenester mer rom å boltre seg på.

 

Nå er det ikke slike utfordringer på den jevne hjemme-pc, men hvis man jobber med bilder, video, spill eller andre krevende applikasjoner vil man merke stor forskjell bare med å bytte til 64-bits Windows på den samme maskinen. Dersom det er mulig, installer 4-8GB RAM og prøv å se hvor mange prosjekter du kan ha åpen i Photoshop, eller hvor mye bedre flyt du får i de krevende spillene dine! Her må du ta forbehold om at spillene sannsynligvis fortsatt kjører som 32-bits programmer under Windows on Windows, men det at de kan få 2GB minne for seg selv vil gjøre en stor forskjell!!

 

Drivere

For at Windows skal kommunisere med maskinvaren, lager leverandørene drivere som er programmer som “forstår” maskinvaren og lar operativsystemet styre den. Disse driverne kjører i Kernel-mode området, og der finnes ikke noe “Windows on Windows” slik at man kunne brukt 32-bits drivere. Kernel-mode er rent 64-bits område, derfor må også alle drivere til printer, scanner, kamera, lydkort, grafikk-kort osv. være skrevet i 64-bits arkitektur.

 

I 64-bits versjonene av Windows 7 og Windows Server 2008 R2, som er basert på samme kodebase, er det et krav at Kernel-mode drivere skal være testet og godkjent gjennom Windows Logo Program, som utstyrer driveren med en signatur som verifiserer ektheten og sikrer at driveren holder god kvalitet. Dette i seg selv sikrer bedre stabilitet og ytelse på 64-bits Windows.

* Se denne siden for en svært detaljert teknisk forklaring på hva som kreves av 64-bits drivere.

 

Erfaringer med 64-bits Windows

Personlig har jeg kjørt Windows Vista og Windows 7 i 64-bits versjon på min fire år gamle HP Compaq nx9420 laptop de siste to årene. Jeg kan med hånden på hjertet si at jeg aldri har opplevd noe problem som følge av at jeg har hatt 64-bits Windows. Jeg har riktignok et par ganger vært borti utfordringer med skriverdrivere, men begge ganger hadde leverandøren en driver på sin hjemmeside. Jeg har også to “Unknown devices” i min Enhetsbehandling, men det er ikke noe jeg har savnet. Se en diskusjonstråd på Microsoft Forums jeg har hatt gående.

(Merk: ytelsesproblemene som nevnes i denne tråden var ikke reelle, og i siste versjon av Windows 7 er måltallet 5,8 i diskytelse!). Se her for et skjermbilde: image

 

Alt jeg har plugget til av maskinvare har enten hatt driveren tilgjengelig på Windows Update eller på leverandørens hjemmeside, og det har aldri vært noen utfordring.

Jeg mener at 64-bits Windows er klart til bruk for de aller aller fleste, og at det kun i tilfeller der man må supportere gammel, utrangert hardware er grunnlag for å holde seg til 32-bits plattform.

Jeg gleder meg til spillprodusentene begynner å lage 64-bits utgaver av spillene sine, slik at de kan utnytte kraften i plattformen ordentlig! :)

 

Håper dette har vært interessant lesing! Ta gjerne kontakt hvis det er noe du lurer på!


Published: 09.09.2009 | 0  Comments | 0  Links to this post
Tagged as: Windows

25. apr2009

Boot Configuration Data – BCD

BCD er Microsofts oppgradering av den gode gamle Bootloaderen, som man møter når man feks vil lage en dual boot konfigurasjon. Jeg ble plutselig nødt til å sette meg inn i dette, noe uforvarende, pga noe konfig i pcen min som jeg ikke hadde forutsett. Jeg skulle installere Win7 beta, og regnet med at den ville ta seg av dual boot konfigen. Det gjorde den ikke, trolig pga disken jeg installerte Win7 på, var disk0 i min maskin. Okke som, her er det jeg fant ut i prossessen:

BCDedit.exe

Konfigurasjon av dualboot i Vista, Server 2008, 7, er kraftig "forbedret" over tidligere versjoner med NTLDR. Jo, det er klart det er forbedret, man kan blant annet boote av WMI virtuelle harddisker, men Microsoft gjør det ikke spesielt intuitivt, og det er kanskje fordi det ikke er noe Hvermannsen trenger å ta stilling til.

BCD.docx (http://www.microsoft.com/whdc/system/platform/firmware/bcd.mspx) forklarer hvordan, men det krever litt detektivarbeid for å finne ut av:

  1. Som vanlig er det litt lurt å ta backup av konfig'en før du kuker det til for ille:

    Bcdedit /export BackupStoreName

    Nå skal det sies at jeg ikke har funnet ut hvordan/om man kan bruke denne backupen til noe, filen som produseres er ikke (som man kunne forventet) XML, men binært. Samma det.

  2. Finn ut av hvilke(n) disk(er) OS'ene du vil ha å velge mellom, befinner seg. I tillegg til de oven nevnte, har man fortsatt støtte for Windows XP's NTLDR, så du kan også bombe deg selv tilbake til steinalderen, om du så måtte ønske.
  3. Start en privilegert CLI. (Windows-tasten, skriv cmd, hold Ctrl-Shift og trykk Enter)
  4. BCDedit bruker GUID'er for å identifisere konfigurasjonene. Jeg fant ut at den kjørende konfig'en i tillegg har et alias {current} som gjør dette litt lettere.
    Kopier den kjørende konfigurasjonen til en ny "store":
    Bcdedit /copy {current} /d "Windows Vista (eller hva du nå vil)"
    BCDedit svarer med din NYE GUID, merk deg denne.
  5. Forresten du kan liste opp alle konfigurasjonene med
    Bcdedit /enum ALL
  6. Nå skal den nye entryen konfigureres (NewID = GUID'en du noterte i stad):
    Bcdedit /set NewID device partition=d:
    Bcdedit /set NewID osdevice partition=d:
    Bcdedit /displayorder NewID –addlast
  7. Så, hvis du vil du ha denne nye konfigen som default under oppstarten, kan du bruke
    Bcdedit /default NewID
    Timeouten før default valget gis med
    Bcdedit /timeout 15
    Sett rekkefølgen med
    Bcdedit /displayorder ID1, ID2, ID3 osv

Det er ørten hundre andre parametre og konfigurasjoner, knock yourself out.. ;)

 

[Edit: Windows 7 kan også konfigureres til å boote fra en VHD-fil! Scott Hanselman har oppskriften]


Published: 25.04.2009 | 0  Comments | 0  Links to this post
Tagged as: Windows