A CPU não gera endereços no sentido de criá -los do nada. Em vez disso, a CPU * usa os endereços * gerados por outras partes do sistema de computador, principalmente:
*
Ponteiro de instrução (IP) / contador de programas (PC): Esse registro interno da CPU mantém o endereço da próxima instrução a ser executada. A CPU busca instruções da memória usando este endereço. O IP/PC é * incrementado * após cada busca de instruções, gerando efetivamente o endereço para a instrução subsequente (sequencialmente).
*
Endereços calculados: A CPU calcula endereços de memória com base nas instruções. Isso geralmente envolve:
*
Endereço direto: A instrução contém explicitamente o endereço de memória.
*
Endereço indireto: A instrução contém o endereço de um local de memória * contendo * o endereço dos dados.
*
Registre o endereço indireto: O endereço é mantido em um registro da CPU.
*
Base + Offset Endereço: Um endereço base (talvez de um registro) é adicionado a um valor de deslocamento especificado na instrução. Isso é comum para acessar elementos nas matrizes.
Esses cálculos são realizados pela unidade lógica aritmética da CPU (ALU), mas não envolvem os endereços * gerando * de maneira livre. Os endereços são derivados de valores já presentes nos registros ou na memória.
*
DMA (Access Direct Memory) Controladores: Esses chips especializados podem gerar endereços de memória independentemente da CPU para transferir dados diretamente entre a memória e os periféricos (por exemplo, um disco rígido ou placa de rede). Enquanto isso gera endereços, está fora do controle direto da CPU.
Em suma, a CPU não * gera * endereços de maneira criativa. Ele recupera endereços de instruções, registros internos ou os recebe de outros componentes de hardware. Seu papel é * usar * esses endereços para acessar a memória.