FAQ: Windows och 4 GiB RAM-problemet

Permalänk
Hedersmedlem

FAQ: Windows och 4 GiB RAM-problemet

Sådär, texten genomläst, lite ändringar gjorda.

Den här FAQ:n är till för att reda ut 4 GiB RAM-problemet på x86 och x86-64 plattformarna och med inriktning på windows som operativsystem.

Inleder med korta svar och sen längre förklaring av problemet tekniken.
All den här texten skrevs utan åtanke på ett litet hack jag läste om där man "transplanterar" lite server 2008-saker in i vista SP1. Jag har INTE testat det själv men det låter rimligt att det kan fungera (att ta vissa saker mellan XP och server 2003 fungerade).
http://www.tipandtrick.net/2008/how-to-enable-use-and-support...
Det är inget för den oinsatte att försöka sig på att göra.

Q: Som förberedelse för resten av FAQ:n, hur vet jag om jag har 32- eller 64-bit windows?
Guide som hjälper dig: http://support.microsoft.com/kb/827218/en-us

Q: Jag har 4 GiB (eller mer) internminne i min XP/Vista-maskin men allt kan inte användas (ofta ~3 GiB tillgängligt), vad är det för fel?
Läs vidare här. Har du 64-bit windows och modernt moderkort-chipset (gäller intel, AMD:s ska fungera på alla som stödjer 64-bit) kan det gå att lösa, annars inte.

Q: Kan jag använda 4 GiB (eller mer) internminne i windows XP 32-bit (service pack 2 eller senare) eller i Vista 32-bit?
Nej, det går inte och det finns ingen fix, det är ett hårdvaruproblem och en kombination av mjukvarubegränsningar i XP och Vista. Mer info i tekniska förklaringen.

Q: Om jag lägger till /3GB flaggan i boot.ini då (XP)?
Nej det hjälper inte heller, den flaggan handlar om fördelningen av virtuellt minne mellan varje process och systemet. Internetminnet är det fysiska minnet och /3GB flaggan har inte något med det att göra.

Q: Om jag lägger till /PAE flaggan i boot.ini då (XP SP2 eller senare)?
Nej. det hjälper inte heller. PAE (Physical Address Extension) kan användas för att ge ett 32-bitars operativsystem tillgång till hela 64 GiB internminne. Men även med PAE aktiverat så ger det inte mer än 4 GiB i XP eller Vista. Mer i tekniska förklaringen.

Q: Jag har Vista 32-bit med service pack 1 och systeminformationsrutan (win+pause/break) visar 4 GiB, är det sant?
Nej inte sant i meningen att det visar hur mycket som är tillgängligt.
Microsoft gjorde om det här i service pack 1. Nu visas det hur mycket minne som är installerat i systemet, inte hur mycket som är tillgängligt. Ta upp aktivitetshanteraren och kolla prestandafliken på hur mycket fysiskt minne du har, det bevisar att problemet är kvar.

Q: Jag har skaffat 64-bitars windows men jag kan ändå inte få tillgång till alla mina 4 GiB minne (eller mer), vad är felet?
Du behöver endera ha en AMD-processor (vad jag läst ska det fungera med alla 64-bitarskompatibla, så länge moderkortet inte har något eget hinder) eller Intel-processor med ett moderkortchipset som stödjer en teknik som brukar kallas memory remapping. Titta efter i BIOS (ev. flasha till senaste) efter inställning kallad "memory remap feature", "memory remapping" eller dylikt (bör finnas under chipset features). Har kortet t.ex. P35 eller senare kan inställningen saknas fast det ändå är aktiverat. Använder man 32-bit XP/Vista ska man INTE ha denna på, då kan man få ännu mindre minne.
Intel-chipset som stödjer detta är 955X, P965, 975X och alla senare (3x- och 4x-serierna, t.ex. P35). Observera att lakeport, vilket är 945 och 946 INTE klarar det.
Man kan inte få tillgängligt mer än den mängd minne som datorn visar på POST-skärmen när den bootar, det ska visa 4 GiB annars har man inte löst problemet och att fixa med 64-bitarsoperativsystemet kan inte hjälpa.

Q: Hur mycket minne stödjer XP/Vista 64-bit?
XP samt Vista business, enterprise och ultimate: 128 GiB. Vista home premium 16 GiB och home basic 8 GiB.
Observera att det är gränsen som microsoft kan ändra i efterhand (t.ex. med service pack), då de t.ex. ökat server 2003 enterprise x86-64 från 64 GiB till 1 TiB och sist till 2 TiB.

Teknisk förklaring
x86-arkitekturen har normalt 32-bitars adressrymd. 2^32 bytes är just 4 GiB.
Från början när processorn skulle tala med andra enheter än internminnet så använde den speciella instruktioner för detta. Det var klumpigt och tog tid. En mycket enklare modell är att ha enheternas minne i samma adressrymd som internminnet, så kallad Memory-mapped I/O (MMIO).
Internminnet börjar man adressera "nerifrån" (förenklat: från noll) och uppåt, men MMIO-adresserna uppifrån (2^32) och neråt. Därimellan har det funnits ett hål i adressrymden fram tills nu när vi kommit upp i så mycket internminne att det krockar med MMIO-reserverade adresser, vilka måste finnas så det skuggar internminnet. Observera att det handlar om adresser, inte att enheter sparar data i internminnet.
Grafikkortet är skyldig till mycket av dessa adresser så med mycket minne på grafikkortet kan man räkna med att bli av med mycket tillgängligt internminne i adressrymden.

En teknik att gå runt problemet är att det skuggade minnet "flyttas upp" så högre adresser ger åtkomst till det minnet. Då flyttar man det till ovanför den mängd RAM som finns installerat i systemet (t.ex. 4 GiB (2^32 bytes)). Att man inte flyttar MMIO-adresserna istället är för att det finns enheter som bara klarar av 32-bitarsadressering (t.ex. enheter på 32-bitars PCI-buss).
Nu måste dock operativsystemet och drivrutiner kunna hantera adresser som är ovanför 4 GiB-gränsen. Man kan göra det med 32-bitars operativsystem genom tekniken PAE (Physical Address Extension) som funnits hos Intel sedan Pentium Pro och hos AMD sedan första Athlon (inte säker på det sista). Det gör att hela adressbussen aktiveras, vilket är 36-bitar på dessa processorer (40-bit på nuvarande 64-bitarsprocessorer i 64-bitarsläge)
Även ett lager i översättningen mellan virtuella och fysiska adresser läggs till.

Många 32-bitars drivrutiner är inte skrivna med det här i åtanke, de förväntar sig max 32-bitar i minnesadresser. Att aktivera sådant här kan skapa massa buggar så microsoft har valt att på konsumentversionerna av windows (XP och Vista) begränsa det maximala adressutrymmet till 32-bitar trotts att man aktiverat PAE. [1]
PAE aktiveras alltid när man använder NX-bit (eller eXecute Disable som Intel kallar det). Det är hårdvaruparten i skyddet microsoft kallar data execution prevention (DEP) och det blev standardaktiverat i.o.m. att det kom i XP service pack 2 och i Vista. Så då flesta med sådan processor "kör redan" i PAE-läge.
Microsofts 32-bitars serveroperativsystem av grövre klass (2000 advanced server, server 2003 enterprise och server 2008 enterprise samt alla data center versioner av dem) kan använda PAE för att utnyttja mer än 4 GiB RAM.
Servervärlden är mer homogen i fråga om hårdvarukonfigurationer och det ställs större krav på drivrutinsmakarna, så där har man tillåtit det. T.ex. så lär man vara mycket noggrannare med drivrutinerna till ett dyrt RAID-kontrollerkort än till en no-name webbkamera. Summerat så skulle PAE i var mans hand i 32-bitars OS ge många buggar och problem. Vill man ha 4 GiB eller mer internminne är det bättre att migrera till 64-bitars. Även om det i början var brist på drivrutiner så finns det idag många fler och man vet att drivrutinerna fungerar internt med 64-bitarsadresser - de är ju utvecklade med det i åtanke.

Lite om varför man inte ska använda memory remapping på 32-bitars XP/Vista (dvs utan PAE-stöd för mer än 4 GiB).
Vissa BIOS (t.ex. på tidigare chipset som P965) tog alla minnesadresser mellan 2 och 4 GiB och flyttade upp dem. Har man det aktiverat så blir det helt enkelt bara 2 GiB minne tillgängligt och inte ~3. I serveroperativsystemen som kan utnyttja extraminnet med PAE så bör man få ut hela 4 GiB. Jag testade med server 2003 enterprise och fick ut hela 8 GiB (vilket jag hade installerat), alltså memory remapping fungerade även vid PAE i 32-bitars. Utan memory remapping borde jag bara fått ~7 GiB.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Hedersmedlem

Den här FAQ-tråden är främst inte avsedd för problemlösning i sig utan förslag på förbättringar på själva FAQ-texten ovan. T.ex. skulle det vara bra att veta om när memory remapping kom in på nvidia och via-chipset (för intelprocessorer alltså).

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Hedersmedlem

*reserverad*

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem

Finns det något enkelt sätt att se om man kör 32-bitar eller 64-bitars Windows? Jag kör Windows 7 och det står i datorinformationen att jag har 4 Gb RAM, men jag är ändå osäker för en kollega till mig kör Windows Vista 32-bitars och enligt honom står det 4 Gb RAM på samma ställe.

Tänkte att det kunde vara en bra grej att skriva in i din lista "Hur vet man om man kör 32- eller 64-bitar?"

Visa signatur

i7-4790K | Noctua NH-D14 | ASUS Z97-A | Geforce 780 GTX | Samsung 850 PRO 512GB | Plextor M3PRO 128 GB | Fractial Design XL | MacBook Pro Retina 13"

Permalänk
Medlem

För Vista eller Windows 7 (jag kör engelsk så kanske skiljer sig på sen svenska versionen):
1) Klicka på Start-menyn, och skriv in "System" i sökrutan
2) Under gruppen för Kontrollpanel - klicka på System
3) Läs på fältet "System Type"
Går förstås att öppna i kontrollpanelen också.

En artikel på Microsofts supportsida om detta:
http://support.microsoft.com/kb/827218/en-us

Permalänk

Mycket bra skrivit Aqualize! Den här tråden bör klistras, då slipper vi förhoppningsvis de flesta trådar ang. det här problemet.

Ett tips till FAQ:en: Är det inte så att på vissa moderkort har man plockat bort "stödet" för 64-bitars OS. T. ex. på Asus p5k-pl. Det står ju att det stödjer 4GiB ram, men det har ändå memory remapping i BIOS(en kompis till mig har det moderkortet). Då gör det väl ändå inte så stor nytta att använda memory remapping? Eller får man de där extra 500MiB som grafikkortet adresserar i ett 32-bitars OS? Kanske är det bara en mjukvaru begränsning? Är det här något du borde ta upp i FAQ:en? '
/Calle

Permalänk
Medlem
Permalänk
Medlem

I den klistrade tråden De bästa trådarna från Microsofts operativsystem. Läs innan du skapar ny tråd! som alla bör känna till finns denna tråd listad.

Visa signatur

Vägra fx 3of4 Pi 1M 1.84 s Memory remapping
Minnen har ingen egen hastighet. Märkningen anger bara vilken hastighet minnena uppges klara

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av t0t4l str3
Mycket bra skrivit Aqualize! Den här tråden bör klistras, då slipper vi förhoppningsvis de flesta trådar ang. det här problemet.

Ett tips till FAQ:en: Är det inte så att på vissa moderkort har man plockat bort "stödet" för 64-bitars OS. T. ex. på Asus p5k-pl. Det står ju att det stödjer 4GiB ram, men det har ändå memory remapping i BIOS(en kompis till mig har det moderkortet). Då gör det väl ändå inte så stor nytta att använda memory remapping? Eller får man de där extra 500MiB som grafikkortet adresserar i ett 32-bitars OS? Kanske är det bara en mjukvaru begränsning? Är det här något du borde ta upp i FAQ:en? '
/Calle

Jag känner inte till om tillverkare idag aktivt har förhindrat 64-bit på moderkort. Men P5KPL stödjer enligt produktsidan 64-bit.
http://au.asus.com/products.aspx?l1=3&l2=11&l3=563&l4=0&model...
Du kopplar ihop maximala RAM-mängden med "bitstödet". Skulle din kompis köra med 64-bitars win XP/vista så får han ut "de där 500 MiB extra" eller hur nu mycket som förloras med till MMIO-adressering.

Som Hardware guy pekat på så finns den här tråden länkad ifrån en klistrad tråd. Vi har valt minska antalet klistrade trådar i forumdelarna och ha samlingstrådar, så den här kommer inte bli klistrad.

Tack för frågan om hur man vet vilken "bitversion" av windows man har. Frågan har ju inte varit aktuell tidigare då ingen datortillverkare skickade det OEM och alla som körde 64-bit hade gjort ett aktivt val och visste om vad det var när de installerade. Så är det ju nödvändigtvis inte idag. Jag lägger till en Q-sektion om det.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av t0t4l str3

Ett tips till FAQ:en: Är det inte så att på vissa moderkort har man plockat bort "stödet" för 64-bitars OS. T. ex. på Asus p5k-pl. Det står ju att det stödjer 4GiB ram, men det har ändå memory remapping i BIOS(en kompis till mig har det moderkortet). Då gör det väl ändå inte så stor nytta att använda memory remapping? Eller får man de där extra 500MiB som grafikkortet adresserar i ett 32-bitars OS? Kanske är det bara en mjukvaru begränsning? Är det här något du borde ta upp i FAQ:en? '
/Calle

4GB begränsningen på just det moderkortet kommer av att det bara har 2 st minnesslot. Om 4GB minnesstickor funnits tillgängliga vid skrivandet av specifikationerna så hade kortet förmodligen haft stöd för 8GB.

Visa signatur

Vägra fx 3of4 Pi 1M 1.84 s Memory remapping
Minnen har ingen egen hastighet. Märkningen anger bara vilken hastighet minnena uppges klara

Permalänk
Medlem

Jag har läst lite här omkring men tror inte jag har hittat svar på de jag undrar över,

Jag har nyligen köpt en helt ny dator i delar:

Asus Rampage II Extreme, X58
Intel Core? i7 920 Quad Processor
Corsair Dominator DHX+ DDR3 1600MHz 6GB

osv samt Windows Vista home premium 64bit

när jag startar upp datorn står de att jag bara har 4gb ram-minne, borde inte det vara 6gb? me tanke på att allt jag köpt stöder de?

vad måste jag göra för att de ska visa 6gb både vid uppstart samt i windows?
fast en grej va lite konstigt, cpu-z visa 6gb minnne :S

(har flashat till de senaste bios'et 1306)

Tacksam för svar!

Permalänk
Hedersmedlem

Jag har inte tid att kolla in moderkortets manual, kan du kolla efter någon inställning för "memory remapping" (eller liknande)?
Mitt gigabyte P35 moderkort fixar det automatiskt, vore väldigt konstigt om ASUS inte lyckats göra det ännu.
Annars kan jag inte komma på vad som gör att du inte ser 6 GiB vid bootskärmen..

Tänkte inte heller kolla CPU-Z:as gränssnitt men står det hur mycket minne du använder eller syftar du på att CPU-Z hittar alla minnesstickor? Det senare är inte konstigt, det är inte magiskt att programmet får fram hur många olika minnesstickor som är installerade i datorn.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem

Tack, äntligen fick jag igång de sista 1024mb av RAMet! vart enormt irriterande att den bara läste 3gb innan.

Visa signatur

Du vet att det är måndag när du upptäcker en landmina i din frukost. - Garfield

Permalänk
Medlem

http://www.unawave.de/windows-7-tipps/32-bit-ram-barrier.html...

Den där kan vara någonting att kika på för dom sin inte vill uppgradera till 64-bitars Windows 7.

Visa signatur

Dator med Skärm.

Permalänk
Hedersmedlem
Skrivet av mha109:

http://www.unawave.de/windows-7-tipps/32-bit-ram-barrier.html...

Den där kan vara någonting att kika på för dom sin inte vill uppgradera till 64-bitars Windows 7.

Verkar vara att de automatiskt fixar det likt server 2008 filer kunde läggas in i Vista för att på så vis låsa upp det, nu förpackad på ett enkelt sätt att göra det.

Kan ju vara värt att nämna (för länken gör inte det) att varje enskild process får inte mer direkt åtkomligt minne.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem

Vet inte om detta vore intressant för denna FAQ-tråden men många användare stöter ibland på att de inte kan utnyttja allt minne i Windows 7. Exempelvis står det 3.99GB (användbart) i Windows Task Manager trots att man har 8GB installerat. Dessutom hittas 8GB i BIOS.

Finns jättemånga som har detta problemet och det finns ingen riktig förklaring på varför. Åtminstone inte vad jag har hittat.
Men lösningen har varit att ta ut minnen ur datorn och sedan stoppa i på nytt så har det fungerat.

Exempel på en användare som har haft problemet: http://www.sweclockers.com/forum/22-microsoft-windows/1025237...

Visa signatur

"Claiming Java is good because it works on all OS' is like claiming anal sex is good because it works on all genders"