Gå til innhold

Minneallokering på 32bit systemer


espenfjo

Anbefalte innlegg

Videoannonse
Annonse
Hvordan gjøres det når man skal bruke mer enn 4 GiB RAM på 32 bit systemer?

På både AMD og Intel-systemer så gjør man det via noe som jeg ikke husker navnet på, men jeg husker fremgangsmåten.:

 

Man sender en kommando til chipsettet som "bytter" hvilken minneblokk som skal adresseres. Hver av disse minneblokkene er på 4GiB. Normalt har man under 4GiB og bruker dermed kun en minneblokk og trenger derfor ikke denne bytte-kommandoen. Bytte-kommandoen må støttes av både OS, chipsett og CPU for å fungere. Hele byttet tar noe tid, (jeg tipper ca 100-1000 ns). I denne perioden kan kun minnet fra den valgte minneblokka adresseres, og det kan kun adresseres av Ètt program av gangen.

 

OS'et kjører alltid programmer i virituell modus, noe som betyr at selve programmet ikke får jobbe i "real-mode". Når OS'et skal switche mellom de ulike programmene og eget arbeid (kernel) så må det hele tiden bytte sende kommandoer for å bytte mellom hvilken minneblokk som skal adresseres. Siden OS'et switcher dette ganske ofte (ca hvert 1ms ?) så blir det en del byttinger og ting går betydelig tregere enn om det ikke trengte noen byttekommandoer.

 

Jeg tror det er svært uvanlig (om det fins i det hele tatt) at programmer selv får bytte mellom minneblokker. Dvs. at hvert enkelt program i praksis er begrenset til maksimalt 4GB til seg selv.

 

De 32-bit prosessorene som støtter over 4GiB er:

Intel Xeon (P4-baserte i hvertfall, husker ikke om PIII-baserte også støtter det)

AMD Sempron og Athlon64/Athlon64FX/Opteron når de kjører i 32-bit modus.

 

Jeg vet ikke hvilke chipsett som støtter det, men regner med det kun er typiske server-chipsett.

 

Jeg vet at det er en del Unix/Linux-baserte OS som støtter det, men vet ikke helt hvilke. På Windows-plattformen så er det vel Windows 2000 Server, Windows 2000 Advanced server, Windows 2000 Advanced datacenter, og Windows 2003 server som støtter over 4GiB. (Jeg er litt usikker så ikke skyt meg om jeg bommer litt her)

 

EDIT:

* Alle PentiumIII-baserte Intel-CPU'er og nyere støtter vist opp til 64GB.

* Støtten kalles PSE36 (36bit Page Size Extension)

Endret av Simen1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...