“Registro do processador” e “registro IO”

3

Eu queria saber se os registros do processador e os registros IO são o mesmo conceito?

Eles são registrados na CPU ou em alguns dispositivos de IO?

Eu peguei os registros IO de esta pergunta de superusuário .

    
por Tim 09.07.2011 / 16:57

3 respostas

2

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 e OUT 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.

    
por 10.07.2011 / 05:05
4

Você pode comparar o conceito de um registro de E / S a um registro de hardware genérico, pois um registro é um termo arbitrário usado para se referir a uma área de armazenamento digital. Um registrador pode atuar como um acumulador , manter informações de execução, fornecer um buffer de entrada-saída entre dispositivos, etc. Isso também significa que um registro do processador é apenas um tipo de registro de hardware.

Um registrador de E / S, então, também é uma abstração de um registrador - ele contém dados intermediários que se movem entre os componentes. Processadores não possuem registros de E / S específicos , mas sim vários registros genéricos que podem realizar a mesma tarefa (que são usados, por exemplo, quando o sistema usa mapeamento de memória I / O . Eles são usados para fornecer um barramento de interface comum entre a CPU e a memória do sistema, mas, no caso do MMIO, permitem o acesso à memória dos dispositivos externos do barramento de endereços real.

Como um programador realmente faria isso? Eles precisariam determinar como o dispositivo externo é mapeado no barramento de endereços do sistema e, em seguida, usar um dos vários x86 registra para armazenar o endereço (em um registrador index / pointer). Este registro poderia então ser usado (com instruções de máquina ) para transferir dados de / para outro registro no processador para um registro em o dispositivo.

Se a CPU não suporta MMIO (ou o programador decide não usá-la), então no caso do x86 também pode existir instruções especiais para E / S de uma porta (que é essencialmente outro barramento). Essas instruções ( IN e OUT ) funcionam de maneira semelhante à MOV instrução - elas até use os mesmos registradores do processador. A única diferença é o que o endereço no índice / ponteiro registra significa (já que esses registros usam um I diferente / O mapa de endereços ).

É por isso que eu digo que os registradores de E / S são uma abstração de qualquer outro registrador de CPU - eles são um na mesma coisa. Os dados ainda entram e saem do processador nos mesmos registros, sejam ou não usados para resultados intermediários, transferência de dados de / para a RAM ou acesso a hardware externo.

Dependendo do layout da placa-mãe, uma CPU pode acessar a memória de um dispositivo externo através do próprio barramento de endereços, ou outro barramento conectado a uma porta na CPU. No entanto, tudo isso geralmente é regido pela northbridge da placa-mãe para acesso à memória, e southbridge para acesso periférico (por exemplo, placas de vídeo, mouse / teclado).

Por fim, se você estiver familiarizado com o conceito de DMA , os próprios periféricos externos podem ter registros designados especificamente para / O propósitos da RAM do computador. Observe que o DMA basicamente contorna qualquer intervenção da CPU, portanto, o conceito de um registrador de processador não seria aplicável aqui.

Palavra final: Cada dispositivo em seu computador possui algum tipo de registro, já que nenhum dispositivo está conectado diretamente à CPU - e se fosse, você estaria desperdiçando ciclos de clock da CPU dados no barramento até que o dispositivo tenha tempo suficiente para usá-lo (a CPU geralmente tem o clock mais rápido em qualquer sistema). Esse é apenas um dos motivos pelos quais os dispositivos precisam de um local para armazenar dados antes de poderem trabalhar com eles - e isso é essencialmente tudo que um registrador faz.

    
por 10.07.2011 / 01:58
2

Conceitualmente, os registros de E / S e os registros do Processador são a mesma coisa. Ambos são unidades de armazenamento de dados para operações de processamento.

A diferença é uma das localidades. Registradores de E / S e registradores de CPU são todos parte da mesma família; Registradores de Hardware. Registros da CPU vivem na CPU, registradores de E / S vivem fora da CPU nos seus próprios processadores digitais de dispositivos de E / S.

Para informações detalhadas: Registros de hardware , explica registros de hardware em geral, mencionando seus diferentes tipos.

    
por 10.07.2011 / 17:03