Är det ingen som läser tråden eller minst bläddrar igenom den lite för att se om någon intelligent person skrivit ett bra svar redan?
Börja med att läsa Lars svar här och sedan läs mina tillägg... (TL;DR finns längst ner)
Enligt TS sitter alltså 2 Gigabyte minne på grafikkortet och 4 Gigabyte på moderkortet. Det finns alltså total 6 Gigabyte fysiskt minne på datorn.
För att förstå vidare vad som sker måste du förstå vad 32 bitars faktiskt står för.
Binärt
Som vi alla vet så arbetar datorer med ettor och nollor, också kallat binärtal eller binärt. Det vill säga att till skillnad från oss människor som kan räkna till tio på våra fingrar så kan en dator bara räkna till 2, sedan måste den börja om igen.
Om du räknar till tio på dina fingrar och sedan vill fortsätta räkna på fingrarna så tar du ner alla fingrar igen och kommer ihåg att du har räknat till tio så långt, eller hur? Din dator gör samma sak men tar alltså ner alla "fingrar" när den räknat till 2 och kommer ihåg att den har räknat till 2.
Men en dator räknar ju bara i ettor och nollor? Vart kommer två ifrån?
Det är helt rätt, när du börjar räkna så säger du t.ex "ett, två, tre, fyra, ..." men när en dator räknar så börjar den på noll.
En dator räknar alltså "noll, ett, ..." istället för "ett, två".
Utöver detta så har inte en dator några "ord" för nummer över ett. När vi räknar har vi ord som "tio, elva, tolv, tretton, ..., tjugo, trettio, fyrtio, ..., hundra, tusen, ..." osv osv. En dator kan bara noll och ett så när en dator vill räkna över ett så säger den "ett-noll, ett-ett, ett-noll-noll, ett-noll-ett, ..." osv.
Såhär ser det alltså ut när en dator räknar:
Människan datorn
0 noll 0000 noll-noll-noll-noll
1 ett 0001 noll-noll-noll-ett
2 två 0010 noll-noll-ett-noll
3 tre 0011 noll-noll-ett-ett
4 fyra 0100 noll-ett-noll-noll
5 fem 0101 noll-ett-noll-ett
6 sex 0110 noll-ett-ett-noll
7 sju 0111 noll-ett-ett-ett
8 åtta 1000 ett-noll-noll-noll
9 nio 1001 ett-noll-noll-ett
10 tio 1010 ett-noll-ett-noll
11 elva 1011 ett-noll-ett-ett
12 tolv 1100 ett-ett-noll-noll
13 tretton 1101 ett-ett-noll-ett
14 fjorton 1110 ett-ett-ett-noll
15 femton 1111 ett-ett-ett-ett
Vad har detta då med 32 bitar att göra?
I en dator kallas varje etta eller nolla för en bit. Om det finns 32 bitar är det samma som att säga att det finns 32 händer för datorn att räkna på, eller...
00000000000000000000000000000000 = 32 bitars värde i binärform som är lika med noll.
00000000000000000000000001100110 = 32 bitars värde i binärform som är lika med etthundratvå.
Om vi börjar på höger sida av ett binärtal så är första biten värd antingen ett eller noll. Andra biten är värd två eller noll, tredje biten är värd 4 eller noll.
Ungefär på samma sätt som om du har räknat till tio på två händer så är första två händerna värda ett värde mellan 1 och 10, andra två händerna är värda 11 till 20 osv osv.
För att snabbt räkna ut vad ett binärvärde är så kan man använda följande matematik:
2^N-1*S + 2^N-1*S + 2^N-1*S ... = värdet
Där N är bit N från höger och S är statusen på den biten (ett eller noll)
Ett exempel:
1010 =
2^0*0 + 2^1*1 + 2^2*0 + 2^3*1 =
1*0 + 2*1 + 4*0 + 8*1 =
0 + 2 + 0 + 8 =
10
Det enda du egentligen behöver förstå är att en dator räknar 2^N eller "2 upphöjt till".
Om man då vill veta hur högt en dator kan räkna i ett 32 bitars system tar man 2^32 som är ~4.2 miljarder.
Som du kanske redan vet är en Gigabyte 1024 Megabyte som i sin tur är ungefär 1048576 Kilobyte som i sin tur är 1073741824 byte. (eller ~1.07 miljarder byte)
Har man då fyra Gigabyte så har man alltså ungefär 4.2 miljarder byte.
Adresser
När din dator vill lagra någonting i minnet behöver den veta vart någonstans i minnet den skall lagra. Då behöver den en "adress" (alltså, en platsbeskrivning) för att kunna lagra data. I ett 32 bitars system är denna adressen ett 32 bitars nummer, som alltså "bara" kan vara upp till ~4.2 miljarder.
Så om jag vill spara bokstaven B på den sista platsen i mitt 4 Gigabyte ramminne så skulle jag spara den på adressen 4294967295.
Vill jag istället spara min bokstav på den trehundranionde platsen i minnet skulle jag spara den på adress 308.
Varför 308 och inte 309?
För att datorn börjar räkna på noll om du minns? Om jag vill spara på första platsen i mitt minne skulle jag spara min bokstav på adressen 0 (noll).
Okej, men om datorn har ett 32 bitars operativsystem och jag har 4 Gigabyte minne... Varför kan jag bara använda X Gigabyte av mitt minne då?
För att ditt ram minne är inte det enda som din dator behöver adresser till. Allting som finns i din dator har en adress, din processor har ett antal adresser som du kan använda för att genomföra operationer med din processor. Dina enheter har alla ett antal adresser som gör att du kan kommunicera med dessa. Ditt ramminne är inte lika viktigt som din processor och diverse enheter på din dator.
Utöver detta så kan en viss mängd adresser allokeras för att kunna prata med ditt grafikkort, som i sin tur har en mängd minne.
Jaha, så om jag har 2 GB minne på mitt grafikkort så använder mitt grafikkort hälften av alla adresser då?
Inte nödvändigtvis, vissa grafikkort gör på detta sättet men inte alla och det är sedan länge opraktiskt att kommunicera med grafikkortet på detta sättet i ett 32 bitars system.
Istället tar grafikkortet upp en relativt liten del av adressrymden (64 Megabit, 128 Megabit eller 256 Megabit, 512 Megabit) i syfte att kunna kopiera data till och från grafikminnet. Detta går att ställa in i BIOS på ett antal datorer i förväg.
Likaså går det att ställa in i bios om man vill reservera adresser på det gamla traditionella sättet för att öka bakåtkompatibilitet med program skrivna på den tiden då grafikkort fungerade på ett annat sätt.
Men jag hittar inte dessa inställningar i mitt BIOS
Om dessa inställningar saknas i ditt BIOS så stödjer inte ditt BIOS eller moderkort dessa funktioner eller så har du inte letat tillräckligt noga.
Du kanske behöver uppdatera eller låsa upp ditt BIOS för att få tillgång till dessa funktioner?
Finns det inga andra sätt?
Jo men inga som löser alla dina problem.
Du kan aktivera PAE men det förutsätter att programmen du kör har stöd för PAE. Har dom inte det gör det noll skillnad och spel har mest troligen inte stöd för PAE.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Hoppas detta ger en bättre förståelse för varför TS bara har 2 GB minne tillgängligt.
TL;DR
Det finns ~4.2 miljarder adresser att nytta. Många av dessa tas redan upp av processor och diverse enheter kopplade till moderkortet.
Även enheter som inte är kopplade men har sina styrkontroller aktiverade tar upp adressrymd.
Traditionellt bakåt i tiden tog grafikkort upp lika stor adressrymd som det minne som fanns på dom för att kunna skriva till och läsa från detta grafikminnet.
Detta var inget problem på den tiden då datorer sällan hade mer än 1 Gb ramminne och 256 Mb minne på grafikkorten.
Men allt eftersom ramminnen växte i storlek och grafikminnen likaså började adresserna ta slut och man var tvungen att prioritera mellan vad som var viktigast.
Fast sedan kom olika lösningar på problemet, en av dessa var att göra så att minnesåtkomst på grafikkorten skedde i sektioner där man kunde skriva en viss mängd data till grafikkortets minne på en viss plats i grafikkortets minne. Sedan kunde man säga till grafikkortet att flytta sin markör till en annan plats i sitt minne för att skriva till det.
Grafikkortet i sin tur hade nu koll på vad som fanns vart någonstans i dess minne och kunde peka på den adressen när en viss resurs behövde ritas på skärmen. På så vis löste man problemet med det begränsade adressutrymmet och användare kunde igen utnyttja upp till 3.5 Gb ramminne av 4 fastän dom också hade 2 Gb minne på sina grafikkort.
Detta knep har igen återgått till att använda full fysisk adressering av grafikminnet på 64 bitars system med möjligheten att byta mellan de två metoderna. Anledningen till att full fysisk adressering används är att prestandan vid kopiering av minne ökar.
Inte för att speciellt många spel kör 64 bitars adressrymd ändå...
Men *baaaw* mina 32 bitars spel använder 4 Gb minne och jag kör 5 olika spel samtidigt som total använder 20 Gb av mitt 128 Gb totala minne
Ja, för att i ett 64 bitars system kan operativsystemet ge varje program sin egen adressrymd. Jag tänker inte förklara mer än så, googla!
Men självklart går det inte att adressera mer minne än 4 Gb på ett 32 bitars system då ett 32 bitars nummer inte kan peka på högre än ~4.2 miljarder adresser. I alla fall inte utan att ändra på arkitekturen markant, vilket är nästan omöjligt på grund av bakåtkompatibla problem.