Qual é o tamanho da palavra de uma RAM na máquina de 32/64 bits (processador)

3

Qual é o tamanho da palavra de uma RAM na máquina de 32/64 bits (processador)?

Esta questão está me deixando louco. Qual é exatamente o tamanho da palavra que salva os dados na própria RAM em máquinas de 64 bits, como microprocessadores Intel Core i5?

Além disso, o tamanho da palavra que contém os dados muda de 32 bits para 64 bits?

    
por M-T-A 12.11.2012 / 12:37

2 respostas

3

Eu não estou familiarizado com os detalhes sangrentos de como a RAM trabalha com CPU da Intel atualmente, considerando coisas mais novas como cache coherency e NUMA, mas do ponto de vista da RAM, acredito que ainda sejam bytes de 8 bits. comumente organizado em canais onde vários slots podem ser acessados de uma só vez. Então, pegar 4 bytes (assumindo 4 slots) por vez vai demorar o mesmo tempo que pegar 1 byte em tal sistema. Ainda assim, a RAM aceita um endereço do controlador de memória como entrada e devolve 8 bits como saída AFAIK.

O tamanho "palavra" pode significar coisas diferentes. Eu lembro primeiro de encontrar este termo estudando 68000 linguagem de montagem - no texto que eu estava lendo, "byte" significava 8 bits e "word" significava 16 bits, e "alinhado por palavra" significava um endereço caindo em um limite de 16 bits. Eu sei que o termo "palavra" estava em uso anteriormente para a introdução do 68000 (1980?) E pode ter sido sinônimo de "byte" em tempos anteriores a isso.

Os dados "nativos" com os quais a CPU "prefere" correspondem ao "bitness" de sua arquitetura e ao modo em que está sendo executado. Uma CPU de 32 bits (ou CPU de 64 bits que não está no "modo longo") ) tem registros de 32 bits, um monte de instruções para carregar valores de RAM (4 bytes) para os registradores e outros stuf. Mas com a Intel, um registrador de 32 bits como o EAX também pode ser endereçado como dois registradores AH (os 16 bits superiores do EAX) e AL (os 16 bits mais baixos) e existem inúmeras instruções MOV que carregam material da RAM no EAX, AH, AL, e de lá de volta para a RAM. Estou com preguiça de olhar para o guia de referência do programador Intel no momento, mas acho que há instruções para carregar bytes simples para os 8 bits superiores ou inferiores de AH ou AL. (Eu sei que o MIPS tem instruções como essa). Mas eu acho que há mais instruções que funcionam com todos os 32 bits, e se você quiser trabalhar com menos bits, você terá sucesso na eficiência, porque você precisa mover o stuf para os registros temporários primeiro e tal.

Portanto, na Intel e na maioria dos outros processadores de uso geral feitos desde a era de 16 bits, você é realmente flexível na forma como endereça a memória. No entanto, é provável que as instruções sejam mais otimizadas para trabalhar na "bitness" da arquitetura.

    
por 12.11.2012 / 13:06
3

"Palavras" em arquiteturas de computadores são geralmente a menor unidade endereçável de memória. E tradicionalmente isso tem sido o mesmo que o tamanho de registro de propósito geral da máquina. No entanto, desde que o endereçamento de bytes se tornou popular (provavelmente podemos creditar o IBM System / 360, e o PDP-11 no lado de minicomputadores, por isso) o conceito se tornou diluído.

Em termos de endereçamento de memória, conforme definido pela arquitetura da CPU - ou seja, como os programadores vêem a máquina - o conceito de "palavra" não existe em x86 / x64, a menos que você pense nele como sinônimo de bytes. O endereço de um byte é também o endereço de qualquer região maior que comece nesse byte. É claro que podemos mover um, dois, quatro ou (em x64) oito bytes de uma vez entre o registrador e a RAM - ou muito mais, memória para memória, com as instruções REP -, mas o endereço que afirmamos ainda é o de um byte. Podemos fazer aritmética em palavras de todos esses tamanhos.

Se você pensar em termos de registradores, o "tamanho da palavra" de uma máquina é normalmente assumido como sendo o mesmo de seus registradores de propósito geral. Isso seria 32 bits em x86, 64 bits em x64. Na maioria das arquiteturas, o tamanho GPR é o tamanho de um inteiro no qual a CPU pode realizar aritmética simples com uma única instrução.

Em termos de plataforma (placa-mãe, módulos RAM e chips, etc.), a memória RAM é endereçada em trechos de 64 bits - suponho que você poderia chamá-los de palavras. Você pode ver isso muito claramente em processadores anteriores que tinham pinos separados para endereço e dados: O pino de endereço menos significativo é chamado A3, não A0! Os bits de endereço físico A0, A1 e A2 nunca saem do processador. Mas os programadores nunca veem esses endereços.

E, finalmente, há o conceito de uma "linha de cache". Uma linha de cache é um pedaço fisicamente contíguo de RAM que ocupa uma entrada no cache L1 / L2 / L3. As linhas de cache no mundo Intel / AMD têm 64 bytes de largura há algum tempo. Então, quando você acessa um endereço de memória que não está atualmente em seu cache, o processador busca oito desses blocos de 8 bytes de RAM. Em outras palavras, os endereços armazenados no cache omitem os seis bits de baixa ordem. Então talvez uma palavra no cache tenha realmente 64 bytes ou 512 bits! (Mas o acesso à memória que ignora o cache ainda pode ler ou gravar apenas 8 bytes por vez; em intervalos de endereços físicos que são decodificados por dispositivos de E / S mapeados na memória, bytes individuais podem ser endereçáveis; isso depende do barramento.) / p>

Em ambientes de programação derivados da Microsoft C, uma "palavra" é de 16 bits - tem sido assim desde muito antes da Microsoft, e o nome e a definição do tipo de dados foram transportados para os ambientes de 32 e 64 bits para compatibilidade. Uma "palavra dupla" (ou DWORD ou LONG, para "longword", termo que era comum no VAX) é de 32 bits. Os inteiros de 64 bits são chamados de "quadwords" na arquitetura, mas geralmente têm nomes mais específicos em C, como UINT64 (inteiro de 64 bits, não assinado).

Então, depende de onde você está no sistema e do que você está olhando. Geralmente, não pensamos em "tamanho de palavras" em todos esses dias, e sim em "tamanho GPR".

    
por 13.03.2017 / 23:31

Tags