# Registrador (informática)

O registrador ou registo de uma UCP (unidade central de processamento) é a memória dentro da própria CPU que armazena n bits. Os registradores estão no topo da hierarquia de memória, sendo assim, é um tipo de memória mais rápida e financeiramente mais custosa. Apesar do alto custo por bit armazenado, sua velocidade de acesso é essencial para o funcionamento dos computadores modernos e, portanto, são incluídos, ainda que em menor capacidade, mesmo em processadores de baixo custo.
Lembrando que os registradores são circuitos digitais capazes de armazenar e deslocar informações binárias, e são tipicamente usados como um dispositivo de armazenamento temporário.
São utilizados na execução de programas de computadores, disponibilizando um local para armazenar dados. Na maioria dos computadores modernos, quando da execução das instruções de um programa, os dados são deslocados da memória principal para todos os registradores. Então, as instruções que utilizam estes dados são executadas pelo processador e, finalmente, os dados são movidos de volta para a memória principal.

## Registradores Gerais

Nos dias de hoje os computadores necessitam de muito mais espaço para armazenar as informações em todos os tipos de memória, a partir desse momento, as informações que são armazenadas por conjuntos de dígitos binários nos sistemas digitais internos do computador também tem que ser maior, ocupando um espaço de 32, 64 ou 128 bits, sendo que em períodos mais antigos essa memória dos conjuntos de dígitos binários possuíam no máximo 16 bits.
Os sistemas digitais necessitam de comunicação com a parte de hardware do computador, para que seja armazenado nos conjuntos de dígitos binários.
Dentro dos sistemas digitais temos os circuitos digitais capazes de realizar o armazenamento de informações sendo eles os registradores.
O nome utilizado para armazenar dados em um registrador é carregar, embora as palavras escrever e armazenar também sejam usadas. A ação oposta a carregar um registrador é conhecida como ler os conteúdos de um registrador. A leitura consiste simplesmente em se conectar às saídas do registrador. Assim percebe-se que a leitura não está sincronizada com o relógio, além disso não remove os bits do registrador nem os modifica de nenhum modo.

## Exemplos de registradores gerais

* Registrador acumulador (EAX): registrador acumulador expandido de arquiteturas 8086
* Registradores de base (EBX): registrador de base estendido de arquiteturas 8086
* Registrador contador (ECX): registrador de laços de repetição em arquiteturas 8086
* Registradores de dados (EDX): registrador estendido de "contas" com palavras de arquiteturas 8086

### Registradores de base

Registradores de base são registradores que recebem o endereço-base de um dado objeto. Este tipo de registrador oferece aos programadores um subterfúgio para a criação de ponteiros (variáveis, contendo o caminho para um endereço no software). Imagine-se da seguinte forma:
Um programa que, tendo dois números, recebe de um outro programa outros valores. Então, o que se faz é criar "atalhos" (path) que indicam qual valor será usado. Assim, havendo somente uma imagem do valor, podem ser usados os valores, sem alterá-los diretamente.

### Registrador contador

Conta todas as repetições e deslocamentos, podendo ser atribuído um valor de interrupção.

### Registradores de dados

Registradores de dados são utilizados para armazenar valores, tais como inteiros e pontos flutuantes. Em algumas UCPs (CPUs, em inglês) antigas e mais baratas, é um registrador de dados especial, conhecido como acumulador, e é utilizado implicitamente em muitas operações. O acumulador funciona como um recipiente onde são colocados e somados valores de cálculos e comparações.

### Registrador de carga paralela

O tipo mais simples de registrador é um conjunto de flip-flops que são carregados a cada ciclo de relógio. Este registrador básico será útil como registrador de estado em um bloco de controle, onde são carregados em todos os ciclos do relógio. Porém, para algumas aplicações queremos controlar se dentro desse ciclo do relógio o registrador vai ser carregado ou apenas manter o valor anterior.
Assim, utilizaremos um registrador de carga paralela. No qual terá uma linha de carga que controlará se o registrador é carregado com entradas externas, com todas elas carregadas em paralelo.
A entrada externa utilizada para obter o controle sobre a carga do registrador pode ser um multiplexador 2X1, que será colocado na frente de cada flip-flop, no caso de um registrador de 4 bits.

### Registrador de deslocamento

Pode-se também deslocar os conteúdos de um registrador para a direita ou para a esquerda. Deslocar a direita significa mover um bit armazenado (em um flip-flop) para o flip-flop que lhe está à direita. Por exemplo: Se um registrador de quatro bits armazena originalmente 1101, então o deslocamento à direita resultará em 0110, ou seja, perdemos o bit que estava mais à direita (1), e colocamos um 0 no bit à esquerda.
Basicamente temos 4 tipos desses registradores dependendo da forma como entra e como sai a informação dos mesmos, sendo eles:
* SISO: entrada em série (serial) e uma saída em série (serial).
* PISO: entrada em paralelo e uma saída em série (serial).
* SIPO: entrada em série (serial) e uma saída em paralelo.
* PIPO: entrada paralela e uma saída paralela.

#### Registrador circular

A partir do momento que tem-se um registrador de deslocamento, pode-se obter o registrador circular, que nada mais é que uma variação do registrador de deslocamento. Essa variação consiste em uma adição de rotação no registrador, ou seja, o bit que sai, volta. Assim, o bit que estiver mais à direita do registrador será automaticamente deslocado para o bit que estiver mais à esquerda. Este registrador precisa de algum recurso para que possa alocar alguma informação no registrador, sendo este recurso por deslocamento ou carga paralela.

## Considerações

Apesar dos registradores apresentarem um bom desempenho no quesito rapidez, possuem uma capacidade de armazenamento baixíssima comparada a outros circuitos de armazenamento, como é o caso da memória secundária.