Como funciona o endereçamento de byte?

1

Eu sou novo na arquitetura de computadores. Então me corrija se eu estiver errado.

Se um módulo de memória consistir em 8 chips de memória e se cada chip armazenar 4bits por endereço, então aplicando um endereço ao pino de endereço do módulo eu posso obter (8 x 4 =) 32 bits a partir daquele endereço no módulo. Mas o endereçamento de bytes informa que cada byte tem um endereço. Mas aqui estou acessando 32bits usando um endereço. Então, como é possível?

Acho que se cada chip armazenar 1bit por endereço, então, aplicando um endereço ao módulo, posso acessar 8 bits ou um byte.

    
por Kaustav 24.03.2016 / 11:32

1 resposta

1

Bem, primeiro, a organização da memória nos DIMMs é realmente bastante transparente para os programas e até mesmo para a CPU. Mas ... em todos os sistemas recentes que usam processadores de commodity e DIMMs, os DIMMs realmente implementam "palavras" de 64 bits (não 32, nem mesmo em CPUs de 32 bits).

No passado, quando as CPUs de commodity (x86) tinham endereço separado vs. pinos de dados, se você observasse as designações nos pinos de endereço, eles não começariam em A0 (o bit menos significativo de um endereço ), mas sim em A3. Assim, embora os endereços declarados pelos programas sejam "totalmente" para endereçar o bit 0, e após a conversão do endereço, o endereço físico resultante também vai para o bit 0, os três bits de ordem baixa do endereço físico nunca saem do processador . O processador lê e grava RAM em palavras de 8 bytes (64 bits) e elas estão sempre alinhadas em limites de 8 bytes. O mesmo é verdade hoje, embora os sinais de endereço e dados sejam multiplexados no barramento (ou seja, eles usam os mesmos pinos na CPU).

Endereçamento de coisas menores que as palavras de 8 bytes, por exemplo

MOV AL, [EBX] 

(mova o byte cujo endereço está em EBX para o byte de baixa ordem do registrador A) é implementado no processador e no cache de memória no chip. O controlador de memória busca a palavra de 64 bits que contém o byte desejado e armazena tudo no cache. (Na verdade, o cache é organizado em "linhas de cache" de 64 bytes cada, então oito palavras de 64 bits sucessivas são lidas dos DIMMs no cache, mas não importa que ...) em seguida, coloque um barramento de dados interno na CPU, a partir do qual a CPU acessa o (s) byte (s) de que necessita, com base nos três bits de baixa ordem do endereço. Ou, talvez, a interface para o cache faça isso - isso não está claro para mim.

(Claro, se a palavra necessária já estava no cache, não há acesso aos DIMMs.)

Da mesma forma, para escrever um byte individual, a CPU (ou a interface de cache) deve ler a palavra contendo 8 bytes do cache, alterá-la de acordo com quais bytes devem ser afetados e, em seguida, enviar o 8 bytes resultante. palavra de volta para o cache. Eventualmente, ele é liberado para a RAM.

    
por 24.03.2016 / 12:06