Sie sind auf Seite 1von 66

Caminho de Dados e Controle

Prof. Leonardo Barreto Campos

Sumrio


Introduo;

Convenes Lgicas de Projeto;

Construindo um Caminho de Dados;

O Controle da ULA;

Projeto da Unidade de Controle Principal;

Operao do Caminho de Dados;






Operao do Caminho de Dados Tipo R


Operao do Caminho de Dados Load
Operao do Caminho de Dados beq

Prof. Leonardo Barreto Campos

2/66

Sumrio


Uma Implementao Multiciclo;

Etapas de Execuo

Bibliografia.

Prof. Leonardo Barreto Campos

3/66

Introduo


At o momento, analisamos as instrues MIPS


bsicas:





Aritmticas (add, sub);


Lgicas(or, slt);
De Referncia memria (lw, sw);
De desvio(beq, j, jr).

Para cada instruo, duas etapas so idnticas:




Enviar o contador de Programa (PC) memria que contm o


cdigo e buscar a instruo dessa memria;
Ler um ou mais registradores, usando campos da instruo.

Prof. Leonardo Barreto Campos

4/66

Introduo


Aps essas duas etapas, as aes necessrias para


completar a instruo dependem da classe de
instruo:

Prof. Leonardo Barreto Campos

5/66

Introduo
Usado para fornecer o endereo de
instruo para a memria de instrues

Depois que a instruo buscada, os registradores


usados
como
operandos
pela
instruo
so
especificados com campos dessa instruo
Prof. Leonardo Barreto Campos

6/66

Introduo
Os registradores, por sua vez, podem ser
operadores para calcular endereo (lw e sw)

Os
registradores
podem ser operadores
para
calcular
um
resultado
aritmtico
(lgica e aritmtica)

Os registradores podem ser


operadores para calcular uma
comparao (desvio)
Prof. Leonardo Barreto Campos

7/66

Introduo


Consideraes:


Se a instruo for uma instruo lgica ou aritmtica, o


resultado da ULA precisa ser escrito em um registrador.
Se a operao for um load ou store, o resultado da ULA
usado como um endereo para armazenar o valor de um
registrador ou ler um valor da memria para um registrador.
O resultado da ULA ou memria escrito de volta no banco de
registradores;
Os desvio exigem o uso da sada da ULA para determinar o
prximo endereo de instruo, que vem da ULA ou de um
somador que incrementa PC atual em 4;
Prof. Leonardo Barreto Campos

8/66

Convenes Lgicas de Projeto




Antes de discutir o projeto de uma mquina MIPS,


vejamos a implementao lgica dessa mquina e como
ela ser sincronizada(clock);
As unidades funcionais na implementao MIPS
consistem em dois tipos diferentes de elementos
lgicos:


Combinacionais: sadas dependem apenas das entradas atuais


(Portas Lgicas);
De Estado: que contm estado se tiver algum armazenamento
interno (Flip-Flop);

Prof. Leonardo Barreto Campos

9/66

Convenes Lgicas de Projeto




Em relao ao clock, deve-se definir quando os sinais


podem ser lidos e quando podem ser escritos;


Evita leituras e escritas simultneas;

Prof. Leonardo Barreto Campos

10/66

Convenes Lgicas de Projeto




Ao usarmos uma trava os dados sero coordenados


pelo clock, vejamos o exemplo com o flip-flop a seguir:





O valor a ser armazenado (D)


O sinal do relgio (C) indicando leitura ou escrita
O valor do estado interno (Q) eo seu complemento (Q)

Prof. Leonardo Barreto Campos

11/66

Convenes Lgicas de Projeto




Como apenas os elementos


armazenar valores de dados:


de

estado

podem

qualquer coleo de lgica combinatria precisa ter duas


entradas vindo de um conjunto de elementos de estados e
suas sadas escritas em um conjunto de elementos de estado;

Prof. Leonardo Barreto Campos

12/66

Construindo um Caminho de Dados




Para iniciar um projeto de caminho de dados


examinemos os principais componentes necessrios
para executar cada classe de instruo MIPS:

Prof. Leonardo Barreto Campos

13/66

Construindo um Caminho de Dados




Para iniciar um projeto de caminho de dados


examinemos os principais componentes necessrios
para executar cada classe de instruo MIPS:

Prof. Leonardo Barreto Campos

14/66

Construindo um Caminho de Dados




Memria de Instrues:


Contador de Programa(PC):


Armazena as instrues de um programa


e fornece instrues dado um endereo;

Usado para conter o endereo


da instruo atual;

Somador:


Incrementa o PC para o endereo da


prxima instruo;
Prof. Leonardo Barreto Campos

15/66

Construindo um Caminho de Dados




Consideraes:


Para
executar
qualquer
instruo, precisamos comear
buscando
a
instruo
na
memria de instrues;
Para preparar para executar a
prxima instruo, tambm
temos de incrementar a o
contador de programa (4
bytes);

Prof. Leonardo Barreto Campos

16/66

Construindo um Caminho de Dados




Banco de Registradores:


Elemento de estado que


consiste em um grupo de
registradores que podem
ser
lidos
e
escritos
fornecendo um nmero de
registro a ser acessado;
O banco de registradores
contm
o estado dos
registradores da mquina,
que ser passado para a
ULA ;

Prof. Leonardo Barreto Campos

17/66

Construindo um Caminho de Dados




Considerando uma instruo


do tipo R:


Precisamos ler duas palavras


de dados do banco de
registradores e escrever uma
palavra de dados no banco de
registradores;
Para ler cada palavra de dados
precisamos de uma entrada no
banco de registradores que
especifique o nmero do
registrador a ser lido
e uma sada que conduzir o
valor lido dos registradores;
Prof. Leonardo Barreto Campos

18/66

Construindo um Caminho de Dados




Considerando uma instruo do


tipo R:


Para escrever uma palavra de


dados, precisamos de duas
entradas:
Uma para especificar o nmero
do registrador a ser escrito
e uma para fornecer os dados a
serem escritos no registrador;
As escritas, no entanto, so
controladas pelo sinal de
controle de escrita, que precisa
ser ativo na transmisso do
clock;

Prof. Leonardo Barreto Campos

19/66

Construindo um Caminho de Dados




ULA:


Usa duas entradas de 32 bits


e produz um resultado de 32
bits, bem como um sinal de 1
bit se o resultado for 0;
A ULA possui um sinal de
controle de quatro bits;
e possui ainda uma sada de
deteco de Zero para
implementar desvios;

Prof. Leonardo Barreto Campos

20/66

Construindo um Caminho de Dados




Extenso de Sinal:


Considerando uma instruo do load


word e store word:
So instrues que necessitam
calcular um endereo de memria
somado ao registrador base;
Como o campo reservado para offset
(deslocamento) nessas instrues
so de 16 bits precisaremos de uma
unidade para estender o sinal para
32 bits;
Prof. Leonardo Barreto Campos

21/66

Construindo um Caminho de Dados




Memria de Dados:


Instrues load e store necessitam


ainda de uma unidade de memria
da qual ler ou escreve dados;
A memria de dados precisa ser
escrita com instruo store,
portanto, ela tem sinais de
controle de leitura(load) e escrita;
Uma entrada de endereo e uma
entrada para dados a serem
escritos na memria;

Prof. Leonardo Barreto Campos

22/66

Construindo um Caminho de Dados




Endereo de destino
do desvio:


Uma
operao
beq
possui trs operando
(beq
$t1,
$t2,
off_set);
Como implementar essa
soluo?
Soluo: somando o
campo
off_set
estendido ao sinal da
instruo com o PC;
Prof. Leonardo Barreto Campos

23/66

Construindo um Caminho de Dados




Existem dois detalhes na definio de instrues de


desvio:


O conjunto de instrues especifica que a base para o clculo


de desvio o endereo da instruo seguinte ao desvio
A arquitetura tambm diz que o campo offset(deslocamento)
deslocado 2 bits para a esquerda de modo que seja um
offset de uma word; esse deslocamento aumenta a faixa
efetiva do campo offset por um fator de quatro vezes;

Prof. Leonardo Barreto Campos

24/66

Construindo um Caminho de Dados




Consideraes do endereo de destino do desvio:




Alm de calcular o endereo de destino do desvio, tambm


precisamos saber se a prxima instruo a instruo que
seque seqencialmente ou a instruo no endereo de destino
do desvio;
beq $t1, $t2, off_set

Quando a condio verdadeira, o endereo de destino do


desvio se torno o novo PC
Quando a condio falsa, o PC incrementado deve substituir
o PC atual;

Prof. Leonardo Barreto Campos

25/66

Construindo um Caminho de Dados

Prof. Leonardo Barreto Campos

26/66

O Controle da ULA


Como vimos anteriormente, a ULA possui quatro


entradas de controle.
Esses bits no foram codificados, portanto apenas 6
das 16 combinaes so usadas neste subconjunto;

Prof. Leonardo Barreto Campos

27/66

O Controle da ULA


Consideraes:


NOR necessria para outras partes do conjunto de


instrues MIPS;
Para lw e sw usamos a ULA para calcular o endereo de
memria por adio.
Para instrues do tipo R, a ULA precisa realizar uma das
cinco aes (AND, OR, subtract ou set on less than)
dependendo do campo funct (funo) de 6 bits;
Para branch equal, a ULA precisa realizar uma subtrao;

Prof. Leonardo Barreto Campos

28/66

O Controle da ULA


Podemos gerar a entrada do controle da ULA de 4


bits usando uma pequena unidade de controle:


Essa unidade de controle tem como entradas o campo funct da


instruo e o campo control de 2 bits que chamados de
OpALU;

OpALU indica se a operao a ser realizada deve ser:






add(00) para loads e stores,


subtract (01) para beq ou
determinar pela operao de codificada no campo funct(10);

Prof. Leonardo Barreto Campos

29/66

O Controle da ULA


Vejamos o quadro completo da relao OpALU de 2


bits e o cdigo de funo de 6 bits.

A unidade de controle gera os bits OpALU, que, ento so


usados como entrada para o controle da ULA que gera os
sinais reais para controlar a ULA;
Prof. Leonardo Barreto Campos

30/66

Projeto da Unidade de Controle Principal




Para continuar a construo o controle principal,


necessrio considerar o formato das instrues:

O campo op, est sempre contido nos bits 31:26. Iremos nos
referir a esse campo como Op[5:0];
Prof. Leonardo Barreto Campos

31/66

Projeto da Unidade de Controle Principal




Continuao das consideraes sobre o formato das


instrues:


Os dois registradores a serem lidos nas instrues do tipo R,


branch equal e store nas posies 25:21 e 20:16;
O registrador de base para a instruo de load e store est
sempre nas posies de bit 25:21;
O offset de 16 bits para beq, load e store est sempre nas
posies 15:0;

Prof. Leonardo Barreto Campos

32/66

Projeto da Unidade de Controle Principal




Continuao das consideraes sobre o formato das


instrues:


O registrador de destino est em um de dois lugares:


 Para load: ele est nas posies 20:16 (rt)


Tipo R: ele est nas posies 15:11 (rd).


Portanto, precisamos incluir um multiplexador para
selecionar que campo da instruo ser usado para indicar
o nmero de registrador a ser escrito;

Prof. Leonardo Barreto Campos

33/66

Prof. Leonardo Barreto Campos

34/66

Operao do Caminho de Dados




Vejamos o fluxo das trs classes de instruo (Tipo R, I e J) por


meio do caminho de dados;
vlido ressaltar que todas as operaes ocorrem em 1 ciclo de
clock.
Dessa forma podemos pensar em quatro etapas oara executar
uma instruo do tipo R, vejamos:
Tomemos a instruo a seguir:
add $t1, $t2, $t3

Prof. Leonardo Barreto Campos

35/66

Operao do Caminho de Dados




Operaes ordenadas pelo fluxo da informao:





A instruo buscada e o PC incrementado;


Dois registradores. $t2 e $t3, so lidos do banco de
registradores e a unidade de controle principal calcula a
definio das linhas de controle tambm durante essa etapa;
A ULA opera nos dados lidos do banco de registradores,
usando o cdigo de funo (bits 5:0) para gerar a funo da
ULA;
O resultado da ULA escrito no banco de registradores
usando os bits 15:11 da instruo para selecionar o registrador
destino;

Prof. Leonardo Barreto Campos

36/66

Operao do Caminho de Dados Tipo R

Prof. Leonardo Barreto Campos

37/66

Operao do Caminho de Dados




Vejamos como ficaram as linhas de controle:

Prof. Leonardo Barreto Campos

38/66

Operao do Caminho de Dados




Tomemos a instruo a seguir:


lw $t1, offset($t2)







A instruo buscada e o PC incrementado;


Um valor do registrador ($t2) lido do banco de registradores;
A ULA calcula a soma do valor lido do banco de registradores com os
16 bits menos significativos com sinal estendido da instruo offset;
A soma da ULA usada como o endereo para a memria de dados;
Os dados da unidade de memria so escritos no banco de
registradores, o registrador de destino fornecido pelos bits 20:16
da instruo ($t1);

Prof. Leonardo Barreto Campos

39/66

Operao do Caminho de Dados Load

Prof. Leonardo Barreto Campos

40/66

Operao do Caminho de Dados




Vejamos como ficaram as linhas de controle:

Prof. Leonardo Barreto Campos

41/66

Operao do Caminho de Dados




Tomemos a instruo a seguir:


beq $t1,$t2, offset




A instruo buscada e o PC incrementado;


Dois registradores, $t1 e $t2, so lidos do banco de registradores;
A ULA realiza uma subtrao dos valores de dados lidos do banco de
registradores. O valor de PC + 4 somado aos bits menos
significativos com sinal estendido da instruo offset deslocados de
dois para a esquerda; O resultado o endereo de destino do desvio
O resultado Zero da ULA usado para decidir o resultado de que
somador deve ser armazenado no PC;

Prof. Leonardo Barreto Campos

42/66

Operao do Caminho de Dados beq

Prof. Leonardo Barreto Campos

43/66

Operao do Caminho de Dados




Vejamos como ficaram as linhas de controle:

Prof. Leonardo Barreto Campos

44/66

Exerccio


Qual seriam as linhas de controle para a instruo sw?

Prof. Leonardo Barreto Campos

45/66

Operao do Caminho de Dados




Vejamos detalhes da lgica combinacional do controle


da ALU:

Prof. Leonardo Barreto Campos

46/66

Operao do Caminho de Dados




Vejamos detalhes da lgica combinacional do controle:

Prof. Leonardo Barreto Campos

47/66

Uma Implementao Multiciclo




Na implementao de ciclo nico toda instruo opera


em 1 clock de uma durao fixa;
Nesse caso, consideramos que o ciclo de clock igual
ao atraso do pior caso para todas as instrues;
Portanto, a implementao de ciclo nico ineficiente
tanto em seu desempenho quanto em seu custo de
hardware (unidades funcionais duplicadas);

Prof. Leonardo Barreto Campos

48/66

Uma Implementao Multiciclo




Como dividimos cada instruo em uma srie de etapa


correspondentes
s
operaes
das
unidades
funcionais, podemos usar essas etapas para definir
ciclos;
Em uma implementao multiciclo, cada etapa na
execuo levar 1 ciclo de clock;
A implementao multiciclo permite que uma unidade
funcional seja usada mais de uma vez por instruo;

Prof. Leonardo Barreto Campos

49/66

Uma Implementao Multiciclo




Vejamos a viso alto nvel de um caminho de dados


multiciclo:

Prof. Leonardo Barreto Campos

50/66

Uma Implementao Multiciclo




Consideraes:


Uma nica unidade de memria usada para instrues e para


dados;
Existe uma nica ULA, em vez de uma ULA e dois somadores;
Um ou mais registradores so adicionados aps cada unidade
funcional para conter a sada dessa unidade at o valor a ser
usado em um ciclo de clock subseqente;
No final de um ciclo de clock, todos os dados usados nos ciclos
de clock subseqentes precisam ser armazenados em um
elemento de estado visvel ao programador: bando de
registradores, o PC ou a memria;
Prof. Leonardo Barreto Campos

51/66

Uma Implementao Multiciclo




Consideraes:


Por outro lado, os dados usados pela mesma instruo em um


ciclo de clock posterior precisam ser armazenados em um
desses registradores adicionais;
O registrador IR e o registrador de dados da memria (MDR)
so includos para salvar a sada da memria para uma leitura
de instruo e uma leitura de dados respectivamente;
Os registradores A e B so usados para conter os valores dos
registradores operandos lidos do banco de registradores;
O registrador SadaALU contm a sada da ULA;

Prof. Leonardo Barreto Campos

52/66

Uma Implementao Multiciclo




Consideraes:


Todos os registradores exceto o IR contm dados apenas


entre um par de ciclos de clock adjacente, e portanto, no
precisaro de um sinal de controle de escrita;
Como vrias unidades funcionais so compartilhadas para
diferentes finalidades, precisamos de ambos: incluir
multiplexadores e expandir os multiplexadores existentes;
Vejamos a figura que mostra os detalhes do caminho de dados
com os multiplexadores adicionais:

Prof. Leonardo Barreto Campos

53/66

Uma Implementao Multiciclo




Caminho de dados multiciclo para o MIPS manipular as


instrues bsicas

Prof. Leonardo Barreto Campos

54/66

Uma Implementao Multiciclo




O caminho de dados mostrado na figura anterior


exigir diferentes sinais de controle;


As unidades de estado visveis aos programador (o PC, a


memria e os registradores), bem como o IR, precisaro de
sinais de controle de escrita;
A memria tambm precisar de um sinal de leitura;
Cada multiplexador de quatro entradas exige duas linhas de
controle;
Vejamos o caminho de dados completo para a implementao
multiciclo:

Prof. Leonardo Barreto Campos

55/66

Prof. Leonardo Barreto Campos

56/66

Etapas de Execuo


Dado o caminho de dados, vejamos o que deve


acontecer em cada ciclo de clock da execuo
multiciclo:


Busca da Instruo;

Decodificao da instruo e busca dos registradores;

Execuo, clculo do endereo de memria ou concluso do


desvio;

Acesso memria ou concluso da instruo tipo R;

Etapa de escrita adiada (write-back)


Prof. Leonardo Barreto Campos

57/66

Etapas de Execuo


Etapa 1: Busca da Instruo




Use o PC para obter a instruo e coloc-la no registrador de


Instruo;

Incremente o PC em 4 e coloque o resultado novamente no PC;

Descrio na RTL (Register-Transfer Language), vejamos:


IR <= Memory[PC];
PC <= PC + 4;

Prof. Leonardo Barreto Campos

58/66

Etapas de Execuo


Etapa 2: Decodificao da Instruo e Busca dos


registradores


Leia os registradores rs e rt no caso de instrues que


utilizem eles;
Calcule o endereo de desvio no caso da instruo ser um
branch;
Vejamos em RTL:
A <= Reg[IR[25:21]];
B <= Reg[IR[20:16]];
ALUOut <= PC + (sign-extend(IR[15:0]) < 2);
Prof. Leonardo Barreto Campos

59/66

Etapas de Execuo


Etapa 3: Dependente da instruo




A ULA executar uma das trs funes a seguir com base no


tipo de instruo, vejamos em RTL:
Tipo R:
ALUOut <= A op B;
Referncia memria:
ALUOut <= A + sign-extend(IR[15:0]);
Branch:
if (A == B) PC <= ALUOut;
Prof. Leonardo Barreto Campos

60/66

Etapas de Execuo


Etapa 4: Tipo R ou acesso memria




Loads e stores acessam a memria:


MDR <= Memory[ALUOut];
ou
Memory[ALUOut] <= B;

Instrues do tipo R finalizam


Reg[IR[15:11]] <= ALUOut;

Prof. Leonardo Barreto Campos

61/66

Etapas de Execuo


Etapa 5: Concluso da leitura da memria




Load:

Reg[IR[20:16]] <= MDR;

Prof. Leonardo Barreto Campos

62/66

Etapas de Execuo


Vejamos um resumo:

Prof. Leonardo Barreto Campos

63/66

Etapas de
Execuo


Especificao
grfica:

Prof. Leonardo Barreto Campos

64/66

Exerccio


Quantos ciclos sero necessrios para executar o


cdigo a seguir:
lw $t2, 0($t3)
lw $t3, 4($t3)
beq $t2, $t3, Label #considere not
add $t5, $t2, $t3
sw $t5, 8($t3)
Label: ...

Prof. Leonardo Barreto Campos

65/66

Bibliografia


W. Arquitetura e Organizao
Computadores, Pearson Hall, 5 ed. SP: 2002.

Stallings,

Prof. Leonardo Barreto Campos

de

66/66

Das könnte Ihnen auch gefallen