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?
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?
Respostas:
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).
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:
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.
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).
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.
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.
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.