Aula 8

Data de publicação: Nov 04, 2013 12:3:42 AM

Arquitetura de um microprocessador

Arquitetura básica

Tradicionalmente os microprocessadores assentam na mesma arquitetura elementar constituída pelos blocos apresentados a seguir:

Unidade de descodificação - esta unidade tem como função indicar qual o tipo de instrução (ler da memória, adicionar dois valores, etc.) à unidade de controlo em linguagem que esta entenda (descodificada).

PC - Program Counter (Registo de Programa) guarda o endereço próxima instrução a ser lida da memória. Basicamente é um apontador de posições de memória.

IR - Instruction Register (Registo de Instruções) contém uma cópia da instrução a ser executada.

SP - Stack Pointer (Apontador de pilha) tem como função guardar a informação de retorno à rotina que estava a ser executada antes de uma interrupção ter lugar.

R0...Rn - Registers (Unidade de registos) memórias internas onde são armazenados temporariamente dados e resultados com que o CPU trabalha.

Acumulador - registo associado à ALU que serve de buffer enquanto a outra entrada da ALU ainda não tem um valor carregado. Em alguns processadores serve também para guardar o resultado de cada operação.

Flags (registos de estado) são responsáveis por guardar o estado do resultado de cada operação realizada pela ALU. Por exemplo, se houver overflow. Uma ALU que opere com palavras de 8 bit só lida com números de 0-255. Uma soma de dois valores pode originar overflow 200+200=400 > 255. Isto é um valor que não pode ser representado apenas com 8 bit.

Registo Temporário - este registo é necessário para armazenar (servir de buffer) o resultado de uma operação realizada pela ALU enquanto o barramento de dados se encontra ocupado. Existem arquiteturas de microprocessadores que utilizam este registo na outra entrada da ALU prescindindo dele na saída.

Nos próximos pontos veremos a participação de cada um destes blocos em exemplos concretos.

Acesso à memória

Anteriormente explicou-se de que forma um programa é lido na memória, particularmente como decorre o ciclo de procura, descodificação e execução (fetch-decode-execute cycle). Pretende-se agora concretizar através de um exemplo (embora de forma muito simplificada) como se sucedem as etapas do ciclo mencionado, no interior do microprocessador.

Fase de procura (Fetch) 1

O exemplo consiste na leitura de um conteúdo de memória (um operando) para um registo interno do CPU.

O Program Counter (PC) contém o endereço K da memória onde se encontra a próxima instrução "mover o valor (conteúdo) do endereço L da memória para o registo Ra". Consideremos que a posição de memória com endereço L tem no conteúdo o valor 23.

Na figura anterior, podemos verificar que o único registo interno a verde, de momento é o PC. Isto significa que se encontra preenchido neste caso, com um endereço de memória, o endereço K. Podemos também verificar que no endereço seguinte L da memória se encontra o valor 23, que se pretende que no final da execução da instrução seja copiado para o registo Ra.

Numa segunda fase (figura abaixo) a Unidade de Controlo (UC) coloca no barramento de endereços o conteúdo do PC (K) e através do barramento de controlo envia um comando de leitura do conteúdo da posição (endereço) K da memória.

Fase de procura (Fetch) 2

Por sua vez (figura abaixo), a memória responde com o conteúdo dessa posição de memória (neste caso uma instrução) colocando-o no barramento de dados que o levará para o processador. Esta instrução é copiada para o IR (que passa a conter a instrução a ser executada no momento). O PC é também incrementado de um valor (passa a apontar para o endereço L), para apontar para a próxima posição de memória que contém o operando a retirar da memória. A parte identificada como Fetch (procura) fica concluída.

Fase de procura (Fetch) 3

Segue-se a descodificação (decore). A unidade de descodificação recebe a instrução presente no IR (figura abaixo), decodifica-a e entrega-a à UC numa linguagem que esta compreenda.

Fase de descodificação (decore)

Finalmente a UC verifica qual a operação que é necessário realizar e passa à fase de execução (execute). Verifique então, que é necessário mover o conteúdo da posição L da memória para o registo Ra. Assim, volta a usar o barramento de controlo para indicar que vai ler da memória. Esta responderá com o valor presente na posição da memória com o endereço L, colocando-o no barramento de dados que o levará até ao registo Ra. O PC é novamente incrementado para apontar para a próxima instrução (M).

Fase de execução (execute)

Todo o processo anterior será repetido para as próximas instruções.