O Processador: Caminho de Dados e Controle
Por: joaopaulos4 • 26/9/2018 • Trabalho acadêmico • 3.086 Palavras (13 Páginas) • 258 Visualizações
O Processador: Caminho de Dados e Controle
Durante este semestre vimos que o desempenho de uma máquina é determinado por três fatores principais:
- Números de instruções executadas.
- Período de clock (freqüência).
-Número de ciclos gastos por instrução (CPI).
Vimos também que o compilador e a arquitetura do conjunto de instruções afetam o funcionamento da máquina porque determinam o número de instruções executadas. Por outro lado, tanto o tempo do freqüência de clock, quanto o número de ciclos por instrução são determinados pelo processador. Por este motivo, vamos estudar o conceito de caminho de dados e verificaremos que a escolha da estratégia de implementação afeta a freqüência do clock e a CPI da máquina.
O estudo aqui apresentado inclui o projeto de implementação de um pequeno subconjunto das instruções do processador MIPS. Considera-se este subconjunto de instruções representativo dos princípios fundamentais de um projeto de um caminho de dados e de uma unidade de controle. Isto porque qualquer conjunto de instruções possui pelo menos estas três classes de instruções: as de acesso à memória, as lógicas e aritméticas, e as de transferência de controle.
Lembre-se sempre que descrever uma arquitetura implica em definir quais são os seus componentes, a funcionalidade de cada um deles e como eles interagem entre si.
Visão Geral de Implementação
Para qualquer tipo de instrução a ser executada, o processador passa inicialmente por dois passos:
- Enviar o valor armazenado no PC (program counter)1 para a memória que contém o código, trazendo para o caminho de dados a instrução armazenada nesta memória.
- Ler um ou dois registradores, usando os campos de instrução para selecionar os registradores a serem lidos.
Após a execução desses passos, as ações necessárias para completar a execução de uma instrução dependem da classe de instrução em curso, mas deve-se lembrar que mesmo entre classes diferentes existem algumas semelhanças. Por exemplo, todas as classes usam a ULA após a leitura dos registradores:
- As instruções de referência à memória usam a ULA para calcular o endereço.
- As aritméticas e lógicas para execução da própria operação.
- As de desvio para efetuar comparações.
[1]
Após usar a ALU, as ações necessárias para completar a execução das instruções de cada classe são diferentes. Uma instrução que referencia a memória precisa realizar o acesso à memória. Nas instruções lógicas e aritméticas é preciso armazenar o resultado produzido pela ALU num registrador. E, numa instrução de desvio pode ser necessário modificar o endereço da próxima instrução a ser buscada da memória.
Uma primeira visão do caminho de dados de um computador nos levaria ao seguinte modelo simplificado (Figura 1).
[pic 1]
Figura 1 – Caminho de Dados Básico.
As unidades funcionais componentes do MIPS são construídas a partir de:
- Elementos que operam sobre dados (combinacionais).
- Elementos de estado (seqüenciais e de memorização).
- O sinal de clock determina quando um elemento de estado é lido ou escrito, determinando a cadência de funcionamento do hardware.
Metodologia de Temporização
A metodologia de temporização define quando os dados podem ser lidos ou escritos em cada um desses componentes.
O mais importante dos dispositivos de memória é o flip-flop, que pode ser construído com a ajuda de um conjunto de portas lógicas básicas. Embora, individualmente, tais portas não tenham capacidade de memória, a conexão adequada entre elas permite o armazenamento de informações.
A partir do flip-flop básico apresentado na figura abaixo, pode-se compreender os princípios que norteiam o projeto e funcionamento de outros tipos de flip-flop, como o JK, o mestre-escravo,o T e o D.
[pic 2]
Figura 2 – Flip-Flop RS.
A metodologia mais simples é àquela sensível às transições do sinal de clock, que é demonstrada abaixo. A atualização do estado armazenado somente nas transições não cria condições de corrida, o que evita a indeterminação dos valores dos dados.
[pic 3]
Figura 3 – Metodologia de Temporização.
Todos os sinais precisam se propagar do elemento de estado 1 para o 2 através da lógica combinacional durante o tempo de um ciclo de clock, sem que haja realimentação e é isto que determina a freqüência de clock de uma máquina.
[pic 4]
Figura 4 – Propagação dos Dados.
Implementação
Inicialmente mostraremos uma implementação bem simples do subconjunto de instruções. Ela é baseada num único ciclo de clock que é suficiente longo para atender todas as instruções consideradas (projeto monociclo). Assim, toda instrução começa sua execução em uma transição ativa do clock e termina na próxima transição ativa do clock. Dessa forma, todas as instruções gastam o mesmo tempo para serem executadas.
Utilizando esta metodologia, é necessário que o tempo escolhido para determinar a freqüência de clock seja o da instrução mais demorada. Este implementação é apresentada por ser mais a simples de entender, mas não é implementado na realidade porque é muito ineficiente.
Busca da Instrução
O primeiro passo de qualquer instrução é a busca. Para tanto são necessários três componentes: dois elementos de estado e um somador. Um dos elementos de estado armazena instruções (memória de instruções) e o outro armazena o endereço da próxima instrução a ser executada (Program Counter - PC). O terceiro componente calcula o endereço da próxima instrução a ser executada (somador).
A tarefa do somador é incrementar o valor do PC. Ele pode ser visto como uma ULA muito simples que só realiza operação de soma. O valor 4 numa das entradas do somador indica que a próxima instrução está armazenada 4 bytes depois do valor corrente do PC.
Instruções Aritméticas
Já examinamos os principais elementos básicos de um caminho de dados, em que foi possível perceber que toda e qualquer instrução começa com a busca da instrução na memória. Para preparar a próxima instrução, incrementa-se o PC, fazendo-o apontar para a próxima instrução (4 bytes depois do endereço corrente).
Agora vamos analisar as instruções do tipo R que precisam ler 2 registradores, realizar uma operação na ULA e escrever o resultado em um registrador. Deve-se considerar que estas instruções possuem 3 operandos em registradores, dessa forma conclui-se que é necessário ler 2 palavras de dados do banco de registradores. Para realizar tal leitura, é necessária uma entrada para o banco de registradores que especifique o número do registrador a ser lido, além de uma saída do banco de registradores para o valor lido.
...