Quanta memoria può indirizzare un computer a 64 bit alla volta?


32

Se la memoria è indirizzabile in byte, non dovrebbe essere

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Una ricerca generale di Google indica 8 GB o 16 GB max.

Com'è vero? Inoltre, come dipende dal sistema operativo?


8 GB sono ovviamente fuori dal comune in quanto la mia macchina di lavoro ha 12 GB e può occuparmi di tutto, oltre a un GB di RAM video, oltre a tutto il mio hardware e tutta la mia memoria virtuale.

Newegg vende un pacchetto di RAM da 32 GB, destinato a un computer. 32-bit supportato da 3,2 GB e 128-bit supporteranno milioni di terabyte, quindi penso che 64-bit sia molto più del doppio rispetto a 32-bit.
tkbx,

Risposte:


53

Esistono più fattori interleaving.

Prima di tutto, non sarai mai, mai in grado di assemblare un sistema che ha 2 64 byte (16 exibytes) di RAM fisica.

In secondo luogo, solo perché un'architettura utilizza puntatori a 64 bit, non significa che tutti i bit di tali puntatori siano effettivamente utilizzati. In particolare, le attuali CPU x86-64 (ovvero AMD64 e gli attuali chip a 64 bit di Intel) utilizzano effettivamente le linee di indirizzo a 48 bit (AMD64) e le linee di indirizzo a 42 bit (Intel) (vedi http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), teoricamente consentendo 256 terabyte di RAM fisica.

In secondo luogo, le schede madri hanno i propri limiti su quanta RAM possono supportare, sia fisicamente che logicamente. Fisicamente, ci saranno solo tanti slot disponibili per la RAM. Per quanto riguarda i limiti "logici", non capisco bene perché questo sia ancora il caso di x86-64 (il controller di memoria è stato migrato da tempo nella CPU stessa), ma è così. Presumibilmente gli angoli vengono tagliati sulle linee degli indirizzi per risparmiare qualche soldo nella progettazione e produzione.

Terzo, un sistema operativo può avere limiti interni su quanta RAM può supportare in modo efficiente. In parte, ciò serve a prevenire la necessità di strutture di dati eccessivamente grandi per tenere traccia dell'utilizzo della memoria che non esiste. L'ultima volta che ho verificato, Linux consente 128 TB di spazio di indirizzi virtuali per processo su x86-64 e può teoricamente supportare 64 TB di RAM fisica.

In quarto luogo, alcuni sistemi operativi (ad esempio Windows) limiteranno artificialmente la quantità di RAM che può essere utilizzata come tattica per fare in modo che gli utenti eseguano l'aggiornamento a versioni più costose se desiderano più RAM (Windows 7 Starter è limitato a 2 GB, Home Basic a 8, Home Premium a 16 e Professional e versioni successive sono 192 GB e le versioni di Windows Server hanno limiti molto più elevati).


1
+1 per menzionare che le linee di indirizzi fisici sono in genere << numero di bit in un registro indirizzi su architetture a 64 bit
Paul R

3
Una fonte per le linee di indirizzi a 42 bit (aggiunte da modifiche anonime) sarebbe apprezzata. Fino ad allora, personalmente non considero tali informazioni affidabili.
Bob

21
Mai dire mai. L'ultima legge che ho ascoltato è ancora in vigore, quindi i sistemi con 16 exabyte di RAM potrebbero apparire nella nostra vita. Quindi dovremo tutti passare ai sistemi operativi a 128 bit ...
Michael Hampton,

Gli indirizzi fisici sono inoltre limitati dal numero di bit forniti per gli indirizzi fisici nei TLB (e dalla dimensione dei tag della cache dati dalla tagging degli indirizzi fisici) e dai bit disponibili per gli indirizzi fisici nelle voci della tabella delle pagine (se tali sono definiti dal architettura come in x86-64 che supporta lo spazio degli indirizzi fisici a 52 bit con pagine 4KiB). Quest'ultimo è un limite più rigido (architettonico non basato sull'implementazione), sebbene anche le architetture possano essere modificate.
Paul A. Clayton,

2
@MichaelHampton - NecroReply, ma non ho resistito :) Il raddoppio ogni 2 anni (che è più veloce delle tendenze recenti) impiegherebbe ancora 60 anni per passare da 16 GB a 16 EB. A quel punto dubito che le "leggi" sui transistor al silicio avranno qualche rilevanza;)
MatBailie,

9

Se si utilizza MS Windows, la memoria massima è limitata dal sistema operativo.

Per Windows 7, i valori massimi sono:

  • Motorino di avviamento: 2 GB
  • Home Basic: 8 GB
  • Home Premium: 16 GB
  • Professionale: 192 GB
  • Azienda: 192 GB
  • Ultimate: 192 GB

Windows Server 2008 varia da 8 GB per il livello base a 2 TB per il vertice della linea.

Vedere http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx per un elenco completo.

Questi limiti sono principalmente per ragioni di marketing. Limitando le versioni più economiche, rendono le versioni di fascia alta (relativamente) più interessanti.

Penso che i recenti build Linux funzionino con circa 32 TB di RAM, sebbene non tutto l'hardware sia in grado di supportarlo.


4
Questi non sono limiti tecnici. Questi sono limiti artificiali introdotti per motivi di lavoro.
Kasperd,

8

Una macchina a 64 bit dovrebbe essere in grado di indirizzare fino a 2 64 unità indirizzabili (nelle architetture progettate negli ultimi decenni, le unità indirizzabili sono invariabilmente byte, ovvero ottetti). Se si definisce un "gigabyte" come 2 30 unità indirizzabili, sì, 2 34 gigabyte sarebbero un altro modo per esprimere lo stesso conteggio.

Quale ricerca di Google ha prodotto quei ridicoli risultati minuscoli? Forse la pagina che hai trovato parlava della quantità di RAM che puoi acquistare in scatole ragionevolmente economiche di un certo modello - puoi sicuramente avere molta più RAM (tutte indirizzabili, ovviamente) anche in scatole che sono lungi dall'essere molto costose .

I sistemi operativi sicuramente possono e limitano la quantità di memoria indirizzabile (ad esempio, possono farlo limitando la dimensione delle tabelle di pagine, forse a un massimo configurabile che può essere impostato ricompilando o riconfigurando il sistema operativo - è difficile essere più specifici senza concentrarsi su un gruppo specifico di sistemi operativi).


Perché 2 ^ 30 unità indirizzabili sono 1 GB? Ogni unità di indirizzo memorizza 1 bit, quindi 2 ^ 30 unità di indirizzo memorizzano quei bit che ammontano a 0,134217728 gigabyte. Cosa mi sto perdendo?
Darshan Chaudhary,

1
@DarshanChaudhary 2 ^ 30 è il numero di indirizzi distinti. Ogni indirizzo identifica un byte di memoria, non un bit.
David Moles,

3

Puoi avere tutta la RAM che desideri, ma tutto dipende dal sistema operativo e dall'applicazione che stai eseguendo, come affermato da qualcun altro.

Se stai eseguendo un'applicazione affamata di CPU che è intensiva anche su altri hardware come il tuo disco rigido, allora prendi in seria considerazione una seconda CPU, in una macchina completamente separata. Ad esempio, eseguendo un'applicazione di database e un server di posta elettronica su macchine separate.

Non importa quanta memoria hai: nel mercato di oggi l'intero sistema si fermerà. Le singole CPU semplicemente non possono gestire il multitasking come ti aspetteresti.

Per un singolo computer con un sacco di memoria è meglio, ma non così brillante se hai più applicazioni in esecuzione sullo stesso sistema, indipendentemente dalla quantità di memoria installata. Questo è il motivo per cui le grandi aziende utilizzano non solo l'architettura a 64 bit per indirizzare più memoria, ma bilanciano anche l'intero lotto con due o più server.

Se sei davvero serio sulle prestazioni, allora vai sicuramente a 64 bit, ma considera anche il bilanciamento del carico con un secondo server.

Sono stato su quella strada - configurando una singola macchina con la massima RAM. Tuttavia, quando si eseguono più applicazioni, funziona ancora come un cane. Questo perché la CPU stessa non può gestirla.

Il mio consiglio è di salvare i soldi in memoria e acquistare un secondo server e quindi bilanciare il carico dei due. È molto più semplice, una volta che ne hai preso le prese, è facile espandersi quando hai bisogno di più potenza e velocità di elaborazione.

Inoltre, una macchina con architettura a 64 bit può far fronte a software a 32 bit ma con una macchina a 32 bit sei limitato a solo 32 bit o meno applicazioni, incluso il sistema operativo.

Dal momento che l'intero mercato sta andando a 64 bit in termini sia hardware che software, consiglierei di andare a 64 bit a lungo termine, ma dimentica l'idea di schiacciare tutto su una singola macchina con un sacco di memoria perché rimarrai deluso.

Se non sei sicuro di cosa sia il "bilanciamento del carico", cercalo su Google.


2

Penso che può richiedere più di un "EB" exabyte.

Guarda questo processore a 32 bit può richiedere 2 32 B = 4 GB, ma al massimo ci vogliono 3 GB "perché sono 1 GB per gli indirizzi invertiti"

Ciò significa che il processore a 64 bit può richiedere 2 64 B = 16 EB, ma non riesco a utilizzare gli indirizzi bloccati per l'inversione. quindi possiamo dire che il processore a 64 bit richiede più di 1 EB. e questa specifica non dipende dal sistema operativo utilizzato dal PC o dal suo modello.


1
In pratica, i processori a 64 bit di solito hanno uno spazio degli indirizzi a 48 bit che è sufficiente per 256 terabyte di memoria.
465544

Penso che intendi exbibyte , non exabyte .
martineau,

1

Prendendo ad esempio una CPU Intel o AMD, ci sono diverse limitazioni sia alla memoria fisica che alla memoria virtuale. Altre persone hanno parlato del pin-out hardware e dei limiti della scheda madre, ma ci sono anche limiti interni.

Una voce della tabella delle pagine terminali nella MMU contiene 52 bit significativi di indirizzo fisico e può teoricamente mappare fino a 4096 TB di RAM fisica.

La MMU implementa una tabella di pagine a 4 livelli il cui livello superiore è composto da 512 × 512 GB di voci. Quindi la memoria virtuale è limitata a 256 TB.

Per quanto ne so, tutti i sistemi operativi a 64 bit implementano un DMAP (una mappa diretta), che è super conveniente. Tuttavia, poiché la memoria virtuale è limitata a 256 TB, anche la dimensione del DMAP è limitata. In genere 128 TB sono riservati per la modalità utente e 128 TB per il kernel. Di quei 128 TB per il kernel, fino alla metà può essere riservato per il DMAP. A causa dell'utilità del DMAP, i sistemi operativi di solito limitano la memoria fisica a ciò che il DMAP può gestire.

Quindi la maggior parte (tutti?) Dei sistemi operativi a 64 bit per Intel / AMD, la memoria fisica supportata è limitata a circa 64 TB, lasciando 64 TB per la memoria virtuale del kernel generale e 128 TB per la memoria virtuale dell'utente.

-

All'interno della CPU, le cache della CPU hanno anche una limitazione sul numero di bit di indirizzi fisici che memorizzano, poiché ogni bit di indirizzo aggiuntivo consuma più transistor nel tag cache. Le limitazioni dei pin del controller DRAM non sono necessariamente l'ultima parola, poiché la memoria può anche essere indirizzata tramite collegamenti DMI.

Le diverse architetture della CPU (ad es. ARM, PowerPC, ecc.) Avranno limitazioni diverse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.