Processador registra - geralmente, alguma coisa relacionada a qualquer operação que a CPU faça deve estar em um de seus registros.
Por exemplo, veja este . São as várias formas da instrução Intel x86 ADD
. Você notará que você pode adicionar dois registradores juntos ou adicionar um registrador junto com o conteúdo de um local de memória ("acumulador" é apenas outro registro, "imediato" significa apenas que os dados estão diretamente no local da memória ou "imediatamente" "após o opcode ADD real). Não há ADD mem,mem
.
CPUs RISC, como o ARM, são ainda menos flexíveis. Os dados da memória devem sempre ser copiados para um registrador como uma operação separada antes que a CPU possa fazer algo como ADD
, SUB
, etc. Eles têm muito mais registros para compensar isso.
Registros de E / S - geralmente, algo relacionado a qualquer operação que um chipset ou dispositivo de E / S deve ter em um de seus registradores.
Por exemplo, veja este . É um detalhe sobre os registradores padrão VGA "CRTC". De particular interesse são os registros "Start Address High" e "Start Address Low". Os valores nesses registros informam ao VGA onde começar a ler a memória para renderizar uma exibição.
Existem muitas maneiras de tornar os registros de E / S acessíveis a partir de uma CPU. Geralmente não é como registros de processador acima. Vários métodos incluem:
- Uma maneira é criar o dispositivo de E / S para que ele responda da mesma maneira em um nível de hardware como RAM, mas apenas em determinados endereços. As leituras / gravações nesses endereços não vão para a RAM, mas para o dispositivo de E / S. Dispositivos de E / S podem, então, tornar seus registros acessíveis em determinados endereços. A CPU então lê ou grava os registros usando os mesmos que faz para a RAM. Muito comum em arquiteturas de 8 bits e ARM.
- x86 tem instruções especiais
IN
eOUT
para E / S. Estes especificam endereços, mas não aqueles em que a RAM pode ser conectada. Dispositivos de E / S podem se conectar a esses endereços (geralmente chamados de "portas", não confundir com portas TCP) e tornar seus registros acessíveis dessa maneira.
Continuando com o exemplo dos registros VGA CRTC acima, com o modo como expliquei "portas de E / S" acima, você agora está armado com o conhecimento para entender isso e entenda que, emitindo instruções específicas de OUT
, a CPU então modifica o valor no registrador de E / S da VGA, que é retido e usado pelo chipset VGA.
Nem todos os dispositivos de E / S possuem registradores. Alguns são realmente simples e só precisam de algum tipo de sinal para fazer suas coisas, e também "ler" o dispositivo apenas relata um estado atual. O antigo PC "game port" é um exemplo. Não há realmente nenhum armazenamento de dados acontecendo, portanto pode não ser tecnicamente correto chamá-lo de registro. A maior parte da documentação técnica não fará essa distinção, no entanto.