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?
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?
Risposte:
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).
Se si utilizza MS Windows, la memoria massima è limitata dal sistema operativo.
Per Windows 7, i valori massimi sono:
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.
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).
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.
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.
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.