Quanta memória pode um endereço de máquina de 64 bits de cada vez?

30

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

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

Uma pesquisa geral no Google diz 8GB ou 16GB no máximo

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

    
por Moeb 25.07.2010 / 08:20

6 respostas

49

Existem vários fatores de intercalação.

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

Segundo, só porque uma arquitetura usa ponteiros de 64 bits, não significa que todos os bits desses ponteiros sejam realmente usados. Notavelmente, as atuais CPUs x86-64 (também conhecidas como AMD64 e os atuais chips de 64 bits da Intel) usam linhas de endereço de 48 bits (AMD64) e linhas de endereço de 42 bits (Intel) (consulte link ), teoricamente permitindo 256 terabytes de RAM física.

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

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

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

    
por 25.07.2010 / 08:41
9

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

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

  • Starter: 2 GB
  • Home Basic: 8 GB
  • Home Premium: 16 GB
  • Profissional: 192 GB
  • Empresa: 192 GB
  • Ultimate: 192 GB

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

Consulte o link para obter uma lista completa.

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

Eu acho que o Linux recente constrói o trabalho com cerca de 32TB de RAM, embora nem todo hardware possa suportar isso.

    
por 25.07.2010 / 09:49
8

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

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

Os sistemas operacionais definitivamente podem restringir a quantidade de memória endereçável (por exemplo, eles podem limitar o tamanho das tabelas de páginas, talvez para um máximo configurável que possa ser definido recompilando ou reconfigurando o sistema operacional - é difícil ser mais específico sem focar em algum grupo específico de SOs.

    
por 25.07.2010 / 08:30
3

Você pode ter o máximo de RAM que quiser, mas tudo depende do sistema operacional e do aplicativo que você está executando - como alguém afirmou.

Se você estiver executando um aplicativo com uso intenso da CPU, que também é intensivo em outro hardware como o seu 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 servidor de email em máquinas separadas.

Não importa quanta memória você tenha - no mercado de hoje todo o sistema vai parar. Unidades simples simplesmente não conseguem lidar com a multitarefa do jeito que você espera.

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. Esta é 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 balancear a carga com dois ou mais servidores.

Se você realmente levar a sério o desempenho, vá para 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 porque a própria CPU simplesmente não consegue lidar com isso.

Meu conselho é poupar dinheiro na memória e comprar um segundo servidor e depois balancear a carga dos dois. É muito mais simples, mais uma vez que você o aprende, é fácil de 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 software de 32 bits, mas com uma máquina de 32 bits você está limitado a apenas 32 bits ou menos aplicativos - incluindo o sistema operacional.

Como todo o mercado está indo 64bits em termos de hardware e software, eu aconselho ir a 64bits a longo prazo, mas esqueça a idéia de esmagar tudo em uma única máquina com muita memória porque você ficará desapontado .

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

    
por 24.07.2012 / 02:04
2

Acho que pode demorar mais do que um exabyte "EB".

Veja que este processador de 32 bits pode levar 2 32 B = 4 GB, mas no máximo leva 3 GB "porque são 1 GB para endereços reversos"

Isso significa que o processador de 64 bits pode receber 2 64 B = 16 EB, mas não sei como os endereços bloqueados para reversos são usados. então podemos dizer que o processador de 64 bits leva mais de 1 EB. e esta especificação não depende de qual sistema operacional o PC usou ou qual o seu modelo.

    
por 01.11.2012 / 14:31
1

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

Uma entrada na tabela da 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 4 níveis cujo nível superior consiste em entradas de 512 × 512GB. Portanto, a memória virtual é limitada a 256 TB.

Até onde eu sei, todos os sistemas operacionais de 64 bits implementam um DMAP (um mapa direto), que é super conveniente. No entanto, como a memória virtual é limitada a 256 TB, o tamanho do DMAP também é limitado. Normalmente, 128 TB é reservado para o modo de usuário e 128 TB para o kernel. Desse 128TB 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 suportados pela 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.

-

Interno para a CPU, os caches da CPU também têm uma limitação no número de bits de endereço físico que eles armazenam, já que cada bit de endereço adicional consome mais transistores na tag de cache. As limitações dos pinos do controlador de DRAM não são necessariamente a palavra final, uma vez que 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.

    
por 03.12.2017 / 22:56

Tags