O tamanho de um endereço de memória e tamanho do barramento de endereços está relacionado?

4

Minhas perguntas são sobre a relação entre o tamanho de um endereço real / físico e o tamanho do barramento de endereços.

  1. Se bem entendi, o tamanho do endereço real / físico é determinado durante o projeto da arquitetura do computador.
  2. O tamanho do barramento de endereços deve ser o mesmo que o número de bits em um endereço? Se não, significa que um endereço físico deve ser transmitido através de um barramento de endereço menor mais de uma vez?

Nota

  • Eu não estou falando sobre o tamanho da palavra (ou seja, o tamanho que a CPU pode processo de uma só vez), que pode ser diferente de ambos tamanho real / físico do endereço e tamanho do barramento de endereços.
  • Não estou falando sobre o uso de endereços segmentados e de deslocamento para representa um endereço físico.
por Tim 04.08.2011 / 02:54

2 respostas

3

A largura de bit do barramento de endereço físico pode ser menor ou menor que a largura de bit em um determinado endereço de memória, pois há todos os tipos de hacks de hardware que você pode projetar em um sistema para permitir endereçamento estranho modos. Por exemplo, em alguns sistemas de 32 bits, o barramento de endereços tem 52 bits de largura. Como outro exemplo, algumas instruções da CPU podem decodificar um endereço mais longo usando uma combinação de um endereço base e uma tabela de pesquisa.

No final do dia, é tarefa do hardware interpretar um endereço de memória de uma CPU. A CPU apenas calcula o endereço de memória que precisa e a envia para o controlador de memória da placa-mãe (lembre-se, estamos falando de hardware, não de software aqui, veja minha nota final na parte inferior). O trabalho do controlador de memória é interpretar esse endereço e colocar os dados apropriados no barramento de memória.

Como tudo isso é tratado em um nível de hardware, é possível aumentar o espaço de endereço físico de alguns sistemas de memória de bit inferior usando extensão de endereço físico . Novamente, como esses endereços estendidos são manipulados é parte de como o sistema / hardware foi implementado.

Por fim, para dar mais mérito aos hacks de hardware que mencionei acima, um bom exemplo é a entrada mapeada na memória / output (MMIO para breve). Isso permite que uma CPU acesse os periféricos e RAM através do próprio barramento de endereços. Geralmente isso é feito através dos endereços de memória de ordem mais alta para evitar conflitos de endereço de ordem inferior. No entanto, isso deu origem à barreira de memória de 3 GB comumente conhecida em todas as variantes de consumidor dos sistemas operacionais Windows de 32 bits. Novamente, isso é apenas para mostrar o que é possível em um nível de hardware.

Da perspectiva de um programador de alto nível, isso não tem nada a ver com variáveis de ponteiro. Eles sempre têm o mesmo tamanho de dados, já que essas extensões de endereço são manipuladas para você pelo sistema operacional e / ou pelo próprio hardware. Tamanhos de ponteiro, endereços e deslocamentos são definidos / calculados pelo compilador.

    
por 04.08.2011 / 03:00
1

Uma coisa é entender que todos os computadores modernos maiores são mapeados na memória. O programa "espaço de endereço" (essencialmente determinado pelo tamanho de um ponteiro) pode ser maior ou menor que o espaço de endereço físico (conforme determinado pela quantidade de RAM que possivelmente pode ser endereçada). No meio do caminho, há uma ou várias camadas de lógica de mapeamento de endereços que convertem de endereços "lógicos" para "físicos". Isso suporta a "paginação" de memória virtual (em que uma página de memória particular pode ser "paginada" para uma unidade de disco quando não é referenciada recentemente) e também permite que vários processos / tarefas tenham seu próprio "espaço de endereço". p>

Além do acima (e especialmente em microprocessadores onde os pinos são limitados) o endereço "bus" que sai do processador para o banco de memória pode ser "multiplexado" de forma que os endereços sejam enviados em dois ciclos separados, primeiro a metade alta, por exemplo, depois a metade baixa. De fato, alguns módulos de memória são construídos com isso em mente, já que eles também "multiplexam" os endereços que entram.

    
por 04.08.2011 / 04:12