If you move from 32 to 64 bit, you basically need to at least double your memory. 2 gigs in 64 bit is the equivalent of a gig of RAM on a 32bit machine. That's because you're dealing with chunks that are twice the size.
Fel, fel, fel. Nigel Page på Microsoft Australia har
försökt förklara systemkraven hos nästkommande version av deras operativsystem (Windows Vista) och särskilt hur mycket extra RAM en x86-64-burk drar jämför med en vanlig x86-32.
Sanningen är att programkoden tar mer plats (bredare instruktioner) och alla pekare drar 8 bytes istället för 4 (64-bitars addressrymd). Datan däremot, som typiskt ockuperar den absolut största delen av detta nämnda gigabytestora RAM, drar inte per automatik mer utrymme.
C-perspektivet (för x86-64, andra 64-bitars plattformar beter sig annorlunda): En
int är fortfarande 4 bytes bred. En
float,
double eller
long double är lika stora som i 32-bitars fallet. En
long är fördubblad, 8 bytes istället för 4. Så visst, om någon programmerare strött
long's över hela sin kod, använder dom som 32-bitars data och kompilerar om rubbet för x86-64 så drar programmet mycket riktigt onödigt mycket RAM. En bugg.
Dubbel faktiskt datamängd fås bara om programmet anpassas till att använda dubbla ordstorleken på 64-bitars diton med vetskap om att ALU:n fixar beräkningen på samma tid. Man vill åt dubblerad heltalsprecision. Sådana program kommer vara ytterst sällsynta, istället ser man till att programmet kompileras med
long long mot x86-32 och
long mot x86-64, vilket ger samma uppförande på båda plattformar med bonusen i 64-bitarsfallet att beräkningarna sker fortare. Nej, ska man verkligen dra nytta av sina extra bitar använder man den bredare ALU:n till att bearbeta
samma data på halverad tid. Till samma RAM-kostnad. Kika på
GNU MP för ett exempel (en bignum-implementation).
Notera att Java, Mono och .NET inte gör skillnad på de inbyggda datatypernas storlekar mellan 32- och 64-bitars plattformar. En
long är alltid 8 bytes stor. Körs programmet på en 64-bitars maskin kan VM:en utföra en
long + long addition i en instruktion. Till samma RAM-kostnad.
Så lugn i stormen, om du verkligen behöver dubblera RAM-minnet för att rulla Vista på din x86-64-maskin kanske du borde fundera på hur välskrivna de program (och det OS) du kör är. Fundera är väl det ända som återstår att göra, när inte källkoden finns tillgänglig för dig eller någon annan nyfiken själ att glutta på.