Quanta memória uma máquina de 64 bits pode endereçar por vez?


32

Se a memória é endereçável em bytes, não deveria ser

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

Uma pesquisa geral do Google indica 8 GB ou 16 GB no máximo.

Como isso é verdade? Além disso, como isso depende do sistema operacional?


Obviamente, 8 GB estão fora da parede, pois minha máquina de trabalho tem 12 GB e pode lidar com tudo isso, além de um GB de RAM de vídeo, além de todo meu hardware e toda minha memória virtual.

Newegg vende um pacote de 32 GB de RAM, destinado a um computador. 32 bits suportam 3,2 GB e 128 bits suportam milhões de terabytes, então acho que 64 bits é muito mais do que o dobro do que 32 bits tinham.
tkbx

Respostas:


53

Existem vários fatores de intercalação.

Antes de tudo, você nunca poderá montar um sistema que tenha 2 64 bytes (16 exibytes) de RAM física.

Segundo, apenas porque uma arquitetura usa ponteiros de 64 bits, não significa que todos os bits desses ponteiros sejam realmente usados. Notavelmente, os atuais processadores x86-64 (também conhecidos como AMD64 e os atuais chips de 64 bits da Intel) realmente usam linhas de endereço de 48 bits (AMD64) e linhas de endereço de 42 bits (Intel) (consulte http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), permitindo teoricamente 256 terabytes de RAM física.

Segundo, as placas-mãe têm seus próprios limites em quanta RAM eles podem suportar, tanto física quanto logicamente. Fisicamente, haverá apenas tantos slots disponíveis para RAM. Quanto aos limites "lógicos", não entendo completamente por que esse ainda é o caso do x86-64 (o controlador de memória há muito tempo foi migrado para a própria CPU), mas existe. Presumivelmente, cantos estão sendo cortados nas linhas de endereço para economizar alguns dólares em design e fabricação.

Terceiro, um sistema operacional pode ter limitações internas quanto à quantidade de RAM que pode suportar com eficiência. Em parte, isso é para evitar a necessidade de estruturas de dados muito grandes para acompanhar o uso de memória que não existe realmente. A última vez que verifiquei, o Linux permite 128 TB de espaço de endereço virtual por processo em x86-64 e, teoricamente, pode suportar 64 TB de RAM física.

Quarto, alguns sistemas operacionais (por exemplo, Windows) limitarão artificialmente a quantidade de RAM que pode ser usada como uma tática para fazer com que os usuários atualizem para versões mais caras, se quiserem mais RAM (o Windows 7 Starter está limitado a 2 GB, Home Basic a 8, Home Premium 16 e Professional e acima são 192 GB, e as versões do Windows Server têm limites muito mais altos).


11
1 para mencionar linhas de endereços físicos, sendo tipicamente << número de bits num registo de endereço em arquiteturas de 64 bits
Paul R

3
Uma fonte para as linhas de endereço de 42 bits (adicionadas por edição anônima) seria apreciada. Até então, eu pessoalmente não considero essa informação confiável.
Bob

21
Nunca diga nunca. A Lei de Moore ainda está em vigor, a última que ouvi, portanto sistemas com 16 exabytes de RAM podem aparecer durante nossas vidas. Então nós todos teremos que mudar para sistemas operacionais de 128 bits ...
Michael Hampton

Os endereços físicos também são limitados pelo número de bits fornecidos para endereços físicos nos TLBs (e pelo tamanho das tags de cache com a identificação de endereço físico) e pelos bits disponíveis para endereços físicos nas entradas da tabela de páginas (se forem definidas pelo arquitetura como em x86-64, que suporta espaço de endereço físico de 52 bits com páginas 4KiB). Este último é um limite mais firme (arquitetural, não baseado em implementação), embora até as arquiteturas possam ser alteradas.
Paul A. Clayton

2
@MichaelHampton - NecroReply, mas não resisti :) Dobrar a cada 2 anos (o que é mais rápido que as tendências recentes) ainda levaria 60 anos para passar de 16 GB a 16 EB. Até então eu duvido "leis" sobre os transistores de silício terá qualquer relevância;)
MatBailie

9

Se você usa o MS Windows, a memória máxima é restringida pelo sistema operacional.

Para o Windows 7, os valores máximos são:

  • Starter: 2GB
  • Casa Básico: 8GB
  • Home Premium: 16GB
  • Profissional: 192GB
  • Empresa: 192GB
  • Ultimate: 192GB

O Windows Server 2008 varia de 8 GB para o nível de entrada a 2 TB para o topo da linha.

Consulte http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx para obter uma lista completa.

Esses limites são principalmente por razões de marketing. Ao restringir as versões mais baratas, elas tornam as versões mais sofisticadas (comparativamente) mais atraentes.

Eu acho que as recentes versões do Linux funcionam com cerca de 32 TB de RAM, embora nem todo hardware possa suportar isso.


4
Esses não são realmente limites técnicos. Esses são limites artificiais introduzidos por razões comerciais.
precisa saber é o seguinte

8

Uma máquina de 64 bits deve ser capaz de endereçar até 2 64 unidades endereçáveis ​​(em arquiteturas projetadas nas últimas décadas, as unidades endereçáveis ​​são invariavelmente bytes, também conhecidas como octetos). Se você definir um "gigabyte" como 2 30 unidades endereçáveis, sim, 2 34 gigabytes seriam outra maneira de expressar a mesma contagem.

Qual pesquisa do Google produziu esses minúsculos ridículos resultados? Talvez a página que você encontrou estava falando sobre as quantidades de RAM que você pode comprar em caixas razoavelmente baratas de um determinado modelo - você pode definitivamente ter muito mais RAM (todas endereçáveis, é claro), mesmo em caixas que estão longe de ser muito caras. .

Os sistemas operacionais definitivamente podem restringir e restringir a quantidade de memória endereçável (por exemplo, eles podem fazê-lo limitando o tamanho das tabelas de páginas, talvez até um valor máximo configurável que pode ser definido recompilando ou reconfigurando o sistema operacional - é difícil seja mais específico sem focar em um grupo específico de sistemas operacionais).


Por que 2 ^ 30 unidades endereçáveis ​​são 1 GB? Cada unidade de endereço armazena 1 bit; portanto, 2 ^ 30 unidades de endereço armazenam muitos bits que chegam a 0,134217728 gigabytes. o que estou perdendo?
Darshan Chaudhary

11
@DarshanChaudhary 2 ^ 30 é o número de endereços distintos. Cada endereço identifica um byte de memória, não um bit.
David Moles

3

Você pode ter a quantidade de RAM que desejar, mas tudo depende do sistema operacional e do aplicativo em execução - como outra pessoa afirmou.

Se você estiver executando um aplicativo intensivo de CPU com fome que também consome outros hardwares como o disco rígido, é melhor considerar seriamente uma segunda CPU, em uma máquina completamente separada. Por exemplo, executando um aplicativo de banco de dados e um servidor de email em máquinas separadas.

Não importa quanta memória você tenha - no mercado atual, todo o sistema irá parar. CPUs únicas simplesmente não conseguem lidar com a multitarefa da maneira que você esperaria.

Para uma única máquina com muita memória, é melhor, mas não tão brilhante, se você tiver vários aplicativos em execução no mesmo sistema - independentemente da quantidade de memória instalada. Essa é a razão pela qual as grandes empresas usam não apenas a arquitetura de 64 bits para endereçar mais memória, mas também equilibram a carga com dois ou mais servidores.

Se você realmente leva a sério o desempenho, definitivamente vai 64 bits, mas considere também o balanceamento de carga com um segundo servidor.

Eu estive nessa estrada - configurando uma única máquina com o máximo de RAM. No entanto, ao executar vários aplicativos, ele ainda funciona como um cachorro. Isso ocorre porque a própria CPU simplesmente não consegue lidar com isso.

Meu conselho é economizar sua memória e comprar um segundo servidor e, em seguida, carregar os dois. É muito mais simples - uma vez que você se familiariza com isso - é fácil expandir quando você precisa de mais poder e velocidade de processamento.

Além disso, uma máquina de arquitetura de 64 bits pode lidar com o software de 32 bits, mas com uma máquina de 32 bits, você está limitado a apenas aplicativos de 32 bits ou menos - incluindo o sistema operacional.

Como todo o mercado está operando em 64 bits em termos de hardware e software, eu recomendaria que operasse em 64 bits a longo prazo, mas esqueça a idéia de compactar tudo em uma única máquina com grande quantidade de memória, pois você ficará desapontado.

Se você não tiver certeza do que é o "balanceamento de carga", pesquise no Google.


2

Eu acho que pode demorar mais do que um exabyte "EB".

Observe que esse processador de 32 bits pode levar 2 32 B = 4 GB, mas no máximo são necessários 3 GB "porque são 1 GB para endereços invertidos"

Isso significa que o processador de 64 bits pode receber 2 64 B = 16 EB, mas não sei como os endereços bloqueados por reverso são usados. então podemos dizer que o processador de 64 bits leva mais de 1 EB. e essa especificação não depende do que o sistema operacional usado pelo PC ou do modelo.


11
Na prática, os processadores de 64 bits geralmente possuem um espaço de endereço de 48 bits, suficiente para 256 terabytes de memória.
465544

Eu acho que você quer dizer exbibyte , não exabyte .
martineau

1

Tomando uma CPU Intel ou AMD como exemplo, existem várias limitações para a memória física e a memória virtual. Outras pessoas falaram sobre limitações de pinos e placas-mãe de hardware, mas também existem limitações internas.

Uma entrada da tabela de página de terminal na MMU contém 52 bits significativos de endereço físico e pode, teoricamente, mapear até 4096 TB de RAM física.

A MMU implementa uma tabela de páginas de quatro níveis cujo nível superior consiste em entradas de 512 × 512 GB. Portanto, a memória virtual é limitada a 256 TB.

Até onde eu sei, todos os sistemas operacionais de 64 bits implementam um DMAP (mapa direto), o que é super conveniente. No entanto, como a memória virtual é limitada a 256 TB, o tamanho do DMAP também é limitado. Normalmente, 128 TB são reservados para o modo de usuário e 128 TB para o kernel. Desses 128 TB para o kernel, até a metade pode ser reservada para o DMAP. Devido à utilidade do DMAP, os sistemas operacionais geralmente limitam a memória física ao que o DMAP pode manipular.

Portanto, a maioria dos sistemas operacionais de 64 bits para Intel / AMD com suporte à memória física é limitada a algo em torno de 64 TB, deixando 64 TB para a memória virtual geral do kernel e 128 TB para a memória virtual do usuário.

-

Internos à CPU, os caches da CPU também têm uma limitação no número de bits de endereço físico que armazenam, pois cada bit de endereço adicional consome mais transistores na tag de cache. As limitações dos pinos do controlador DRAM não são necessariamente a palavra final, pois a memória também pode ser endereçada através de links DMI.

Diferentes arquiteturas de CPU (por exemplo, ARM, PowerPC, etc.) terão limitações diferentes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.