Qual é a quantidade máxima de memória ram que uma máquina de 64 bits pode teoricamente tratar?

21

Estou lendo meu livro de arquitetura de computadores e vejo que em uma CPU de 32 bits x86, o contador do programa é de 32 bits.

Portanto, o número de bytes que ele pode endereçar é 2 ^ 32 bytes ou 4 GB. Portanto, faz sentido para mim que a maioria das máquinas de 32 bits limita a quantidade de memória ram a 4 GB (ignorando o PAE).

Estou certo ao supor que uma máquina de 64 bits poderia teoricamente endereçar 2 ^ 64 bytes ou 16 exabytes de memória ram ?!

KingNestor
fonte
4
Observe que nenhum processador x86 de 64 bits existente pode realmente fazer isso. Seus caches não têm bits de tag suficientes, seus barramentos de endereços não têm largura suficiente e assim por diante. 46 bits (8 TB) é o máximo para muitos CPUs x86 modernos.
David Schwartz
4
Teoricamente, não há limite. Até as CPUs de 32 bits podem ter um espaço de endereço acima de 4 GiB. Depende de como o sistema de gerenciamento de memória é implementado no hardware , que geralmente é independente do tamanho da palavra da CPU. Os ponteiros nos programas têm sempre o tamanho da palavra, mas são endereços virtuais de qualquer maneira (e não físicos); portanto, eles são mapeados em um espaço de endereço diferente.
precisa
Esta é uma pergunta antiga com respostas antigas, mas acho que as respostas mais votadas para essa pergunta são muito enganadoras e são respostas para Quanta RAM poderia uma máquina com um endereço de barramento de endereço de 64 bits de largura . Como David e Breakthrough apontaram acima, a "testemunha" de uma arquitetura reflete o tamanho dos registros primários, não o tamanho do barramento de endereços.
Sebi
Por que você ignoraria o PAE?
Jamie Hanrahan 24/03

Respostas:

28

Teoricamente: 16,8 milhões de terabytes. Na prática: o gabinete do seu computador é pequeno demais para caber em toda essa memória RAM.

http://en.wikipedia.org/wiki/64-bit#Limitations_of_practical_processors

Matt Ball
fonte
13
Muito pequeno .... hoje !!!!
snicker
2
16,777216 milhões de tebibyte. Se você quer ser preciso.
totymedli
Li em outras fontes que um processador não pode usar todos os bits para acessar a memória. Isso está sendo considerado na sua resposta?
Andrey
17

Para complementar a resposta de Matt Ball, a maior quantidade atual de RAM que posso encontrar em um varejista on-line específico é de 32 GB. Seriam necessários 32 deles para atingir 1 terabyte. Com cerca de meia polegada por vara, isso nos leva a um espaço dedicado de 16 polegadas na placa-mãe por um terabyte de memória RAM comercial. Para atingir 16,8 milhões de terabytes, seria necessária uma placa-mãe 4.242,42 milhas. A distância de Los Angeles a Nova York é de cerca de 2141 milhas, de modo que a placa-mãe se estendia por todo o país e volta para acomodar tanta RAM.

Claramente isso é impraticável.

Que tal não colocarmos nossa memória RAM em uma linha, como na maioria das placas-mãe, mas colocá-las lado a lado. Quero dizer que o bastão médio de carneiro tem cerca de quinze centímetros de comprimento; portanto, se permitirmos meia polegada de largura, você pode ter uma unidade quadrada de 12 galhos de carneiro em um quadrado de 6 polegadas. Vamos chamar esse quadrado de RAM-tile. Um bloco de RAM contém 384 GB de RAM. Para atingir os 16,8 milhões de terabytes necessários em blocos de 384 GB, seriam necessários 44,8 milhões de blocos. Vamos ser confusos, e use a raiz quadrada disso para concluir que isso caberá em um quadrado de 6693 x 6694 telhas, ou 13.386 x 13.388 pés, que fica próximo o suficiente a 4 km quadrados, o suficiente para cobrir o centro de Seattle na sombra, como se eles ainda não tinham o suficiente para reclamar.

Conrad.Dean
fonte
2
Muito grande. Por que você está colocando-os planos? Você pode obter tudo isso em um cubo de 100 '. Você provavelmente precisará de nitrogênio líquido para se refrescar!
Loren Pechtel
1
a quantidade de gás nitrogênio que iria ferver para representaria um risco de segurança para o grande povo de Seattle
Conrad.Dean
Uma possível correção. Como um ladrilho é de 6 "por 6", isso não tornaria a área 3346,5 por 3347 pés (metade da contagem de ladrilhos), em vez dos 13.386 citados, que é o dobro da contagem de ladrilhos. Além disso, outra questão que ninguém parece ter mencionado. Suponha a melhor disposição: um círculo, o raio precisará ser de aproximadamente 1.890 pés para incluir a área necessária. Como Adm, Grace Hopper apontou, a latência de transmissão sobre o cobre é de cerca de nanossegundos / pé. Isso significa que a latência de ida e volta para o anel externo será de ~ 3,78 microssegundos. Isso é um pouco lento para a memória principal. IMEHO.
dgnuff 24/01
4

Efetivamente, sim - os processos poderiam, em teoria, endereçar 2 ^ 64 bytes de memória. Mas, como você apontou, existem maneiras de contornar esse limite.

Adam Wright
fonte
3

Não existe um relacionamento fixo específico entre o tamanho do bit de um processador e a quantidade de memória endereçável. A maioria das máquinas de 8 bits do final da década de 1970 podia acessar facilmente 65.536 bytes diretamente, as 8088 e 8086 de 16 bits podiam acessar 1.048.576 bytes diretamente. Além disso, é possível adicionar hardware para permitir que as máquinas acessem qualquer quantidade de RAM indiretamente; muitas máquinas com processadores de 8 bits tinham 128K ou mais, e as unidades de expansão de memória para PCs baseados em 8088 podiam acessar mais de 16 megas. Embora a Microsoft tenha ativado esse recurso apenas nas versões "servidor" do Windows, era possível que o código de 32 bits acessasse a memória além da marca 4GiB usando abordagens semelhantes.

supercat
fonte
2

Você estaria correto. Você pode endereçar até 16 exabytes de RAM. Agora .. se o sistema operacional pode lidar com isso seria outra questão ....


fonte
2

Também seria bom observar que o sistema operacional tem sua própria limitação sobre a memória em uma arquitetura de 64 bits.

Por exemplo, veja o que a wikipedia diz sobre o Windows Vista 64:

Todas as versões de 64 bits dos sistemas operacionais Microsoft atualmente impõem um limite de 16 TB no espaço de endereço. Os processos criados nas edições de 64 bits do Windows Vista podem ter 8 TB na memória virtual para processos do usuário e 8 TB nos processos do kernel para criar uma memória virtual de 16 TB. [29] Em termos de memória física, o Windows Vista 64-Bit Basic suporta até 8 GB de RAM, o Windows Vista 64-bit Home Premium suporta até 16 GB de RAM e o Windows Vista 64-bit Business / Enterprise / Ultimate suporta até 128 GB de RAM. [8]

decasteljau
fonte
Detalhes atualizados para o Windows: msdn.microsoft.com/en-us/library/windows/desktop/aa366778.aspx
Arjan
1

A maior vantagem de 64 bits não é a RAM que ele pode endereçar, mas todo o resto. Você pode definir um endereço para cada byte em um disco, por exemplo, e o aumento da capacidade do disco não o invalidará por décadas.

Mark Ransom
fonte
É claro que, como as CPUs atuais têm esse espaço de endereço artificialmente limitado, pode levar apenas uma década para que não haja bits suficientes para endereçar cada byte no disco. Esperamos que, nesse estágio, os limites tenham sido aumentados, conforme o andamento dos SSDs, fazendo com que um disco inteiro apareça como uma seção da memória, que possa melhorar drasticamente o desempenho. Eu não me importaria de conectar um SSD em um slot de RAM em vez de em um cabo SATA!
Malvineous
@ Malvineous Eu estava falando sobre algo mais fundamental, mesmo que você se limite a 63 bits, pode endereçar diretamente 9223372 TB. E os SSDs em um slot de RAM já existem, consulte Sandisk .
Mark Ransom
Eu não estava discordando de você, apenas estava apontando que, com a tecnologia atual, existem limites artificiais para o que você está sugerindo (por exemplo, apenas 48 ou 51 bits do endereço trazido para o barramento físico). Se esses DIMM-SSDs capturarem, podemos ficar sem endereços de memória mais cedo do que você sugere, a menos que esses limites artificiais possam ser aumentados ou removidos. Concordo que se os 64 bits completos estivessem disponíveis, levaria décadas até que se tornasse um problema.
Malvineous
Só para constar, olhei para o link SanDisk UlltraDIMM, mas infelizmente isso não é tecnicamente SSD como RAM. É um SSD SATA de 6 Gbps, com um adaptador DDR3 para SATA, permitindo que ele seja acessado como se fosse memória. A conversão adicional de solicitações de memória no protocolo SATA introduz alguma latência e parece um pouco confusa. Espero que alguém veja o benefício disso e logo libere uma interface de memória verdadeira para piscar sem nenhum adaptador desnecessário no meio!
precisa saber é o seguinte
0

A maioria dos processadores atuais de hoje tem algum tipo de limite artificial no tamanho do endereço. Por exemplo, a arquitetura AMD64 tem um limite de 52 bits na memória física e atualmente suporta apenas um espaço de endereço virtual de 48 bits. (Via Wikipedia). No entanto, sim, fisicamente ~ 16,4 milhões de terabytes são possíveis.


fonte
-1

para uma resposta física realista de 1536 gb com 48 cartões de memória ram rodando em bastões de 32 gb e 4x lga2011 xeons

isto é para o esayist pc que alguém pode comprar sem violar os servidores hardcore ocultos, acho que existem 64gb que stics traz ... 3072gb 128gb be 6144gb 256gb be 12288gb

só para jogar lá fora, existem maneiras de contornar as limitações do RAM com o RAM, se o seu SO puder ver apenas 4 GB de RAM transformar as sobras em uma unidade de RAM e usar a unidade como arquivo de página XD XD XD XD apenas uma questão de fazer uma pré-inicialização sistema alguma coisa semelhante foi feita nos primeiros dias do DOS / Windows 3.11 etc

e pode haver outros pequenos hacks para contornar as limitações da CPU

engrenagem podemos ver isnt wats lá fora, há coisas muito mais potentes que eu tinha um PC de 98 executando 8 proccessores e algo parecido com 32GB de RAM, mas isso é caro oi servidores finais

estou olhando para servidores como desktops porque estou cansado dos computadores para o público XD

Weazel
fonte