Вы находитесь на странице: 1из 63

O processador: Caminho de

dados e controle
Sistemas Digitais
Raquel da Silva Cabral
raquel.cabral@arapiraca.ufal.br
2
O que vimos at agora ?
O que foi visto:
Viso geral de Sistemas Computacionais
Desempenho (segundos, ciclos, instrues)
Abstraes: Arquitetura do Conjunto de Instrues
(ISA) Ling. Assembly e Ling. de Mquina
Conjunto de Instrues MIPS (tipo R, I, J)
Compilao de cdigo para MIPS.
Construo de um somador
O processador: Caminho de dados
3
O processador: caminho de dados e
controle
Estamos prontos para ver uma implementao do MIPS
Simplificada para conter apenas:
Instrues lgicas e aritmticas: add, sub, and, or, slt
Instrues de referncia memria: lw, sw
Instrues de fluxo de controle: beq, j
Implementao genrica:
Use o contador de programa (PC) para fornecer endereo de instruo
Obtenha a instruo da memria
Leia os registradores
Use a instruo para decidir exatamente o que fazer
Todas as instrues usam a ALU aps lerem os registradores
Por qu? Referncia memria? Aritmtica? Fluxo de controle?
O processador: Caminho de dados
4
O processador: caminho de dados e
controle
Viso abstrata/simplificada:
Dois tipos de unidades funcionais:
Elementos que operamnos valores de dados (combinacionais)
Elementos que contmestado (seqenciais)
O processador: Caminho de dados
5
O processador: caminho de dados e
controle
O processador: Caminho de dados
6
Passos na execuo de uma instruo
O processador: Caminho de dados
Passo 1:
Busca da
Instruo
Passo 2:
Decodificao
e Busca de
Registradores
Passo 3:
Execuo,
clculo de
endereo de
memria,
desvio
condicional
Passo 4:
Escrita de
resultado para
instrues
tipo R e SW
Passo 5:
Escrita de
resultado para
a instruo
LW
Tipo R
IR = Mem[PC];
PC = PC+ 4;
A = Regs[IR[25-21]];
B = Regs[IR[20-16]];
UALSada = PC +
extenso_sinal(
IR[15-0]) << 2;
UALSada =
A op B;
Regs[IR[15-11]] =
UALSada;
LW
UALSada = A +
extenso_sinal(
IR[15-
0]);
MDR =
Mem[UALSada]
Regs[IR[20-16]] =
MDR;
SW
Mem[UALSada] =
B;
BEQ
if (A==B)
PC=UALSada;
J
PC = PC[31-28]
|| (IR[25-
0]<<2);
7
Convenes lgicas de projeto
Cada instruo comea a execuo em uma
transio de clock e completa a execuo na
prxima transio do clock.
O clock usado para determinar quando se deve
escrever no elemento de estado; esse elemento
pode ser lido a qualquer momento.
Ativo indica que o sinal est logicamente alto.
O processador: Caminho de dados
8
Convenes lgicas de projeto
Metodologia de clocking:
Determina quando os sinais podem ser lidos e escritos.
Uma metodologia de acionamento por transio.
Execuo tpica:
Ler contedo de alguns elementos de estado,
Enviar valores atravs de alguma lgica combinacional
Escrever os resultados em um ou mais elementos de
estado
O processador: Caminho de dados
9
Construindo um caminho de dados
Quais elementos do caminho de dados ?
Unidade de mmria: armazenar as instrues de um
programa e fornecer instrues de um dado endereo
Contador de programa (PC): contm o endereo da
instruo atual
ALU: somador para incrementar o PC.
O processador: Caminho de dados
10
Construindo um caminho de dados
Para executar qualquer instruo:
1. Buscar a instruo na memria.
2. Incrementar o PC (4 bytes depois) para apontar para a
prxima instruo.
O processador: Caminho de dados
11
Construindo um caminho de dados
Lembre-se dos formatos das instrues
O processador: Caminho de dados
12
Construindo um caminho de dados
Instrues no formato R (lgica e aritmtica)
ADD, SUB, AND, OR, SLT
Sequencia de execuo:
1. Leem dois registradores
2. Realizam uma operao na ALU com o contedo
dos registradores
3. Escrevem o resultado
Exemplo: ADD $t1,$t2,$t3
Banco de registradores:
Registradores de uso geral de 32 bits
Podem ser lidos ou escrtios indicando o seu nmero.
O processador: Caminho de dados
13
Construindo um caminho de dados
Instrues no formato R (lgica e aritmtica)
Para a leitura da palavra no registrador:
Entrada com o nmero dos registradores que sero
lidos.
Sada com o valor lido.
Para a escrita da palavra no registrador:
Nmero do registrador a ser escrito
Dados a serem escritos no registrador
No total:
Quarto entradas (trs para o nmero do registrador e
uma para dados)
Duas sadas (para dados)
O processador: Caminho de dados
14
Construindo um caminho de dados
As entradas possuem 5 bits de largura para
especificar um dos 32 registradores disponveis.
Entrada de dados e barramentos de sada de dados
possuem 32 bits de largura cada um.
O processador: Caminho de dados
15
Construindo um caminho de dados
Instrues LOAD, STORE
LW $t1, offset_value($t2) e SW $t1, offset_value($t2)
Calculam o endereo de memria somando o
registrador de base, que $t2, com o campo offset de 16
bits com o sinal contido na instruo.
Se a instruo for store, o valor a ser armazenado
tambm precisa ser lido $t2.
Se a instruo for load, o valor lido na memria precisa
ser escrito no registrador especificado $t2.
O processador: Caminho de dados
16
Construindo um caminho de dados
Instrues LOAD, STORE
Assim, precisamos do banco de registradores e da ALU
Alm disso, precisamos de uma unidade para
Estender o sinal
Unidade de memria da qual ler ou na qual escrever.
O processador: Caminho de dados
17
Construindo um caminho de dados
A instruo BEQ
BEQ $t1,$t2,offset
Trs operandos, dois registradores que so comparados
e um offset de 16 bits para calcular o endereo do
destino do desvio.
Calcular o endereo de destino somando ao offset
estendido com sinal com o PC.
Comparar o contedo do registrador.
O processador: Caminho de dados
18
Construindo um caminho de dados
Caminho de dados para o desvio
O processador: Caminho de dados
19
Construindo um caminho de dados
Como combinar todos os elementos vistos?
Caminho de dados simples: executa todas as
instrues em um nico ciclo de clock nenhum
recurso pode ser usado mais de uma vez por
instruo qualquer elemento que precise ser
usado mais de uma vez duplicado.
O processador: Caminho de dados
20
Construindo um caminho de dados
Diferenas entre instrues do tipo R e instrues
de acesso a memria
As instrues R usam a ALU com entradas vindas de
dois registradores.
As intrues de acesso a memria tambm podem usar
a ALU para fazer clculo de endereo.
O valor armazenado em um registrador de destino vem
da ALU (R) ou da memria (para load)
O processador: Caminho de dados
21
Construindo um caminho de dados
Como construir um caminho de dados para a parte
operacional das instrues do tipo R e instrues
de acesso a memria, que use um nico banco de
registradores e uma ALU para manipular os dois
tipos de instrues, incluindo quaisquer
multiplexadorer ?
O processador: Caminho de dados
22
Construindo um caminho de dados
O processador: Caminho de dados
Caminho de dados para as instrues de acesso a
memria e as instrues do tipo R
23
Construindo um caminho de dados
Combinando todas as partes:
Busca da instruo
Execuo de instrues do tipo R e de acesso a memria
Desvios
O processador: Caminho de dados
24
Construindo um caminho de dados
O processador: Caminho de dados
25
Construindo um caminho de dados
A unidade de controle
Selecionar as operaes a serem realizadas (ALU,
leitura/escrita etc.)
Controlar o fluxo de dados (entradas do multiplexador)
Informaes vm dos 32 bits da instruo
Esquema simples de implementao
Acesso a memria: LW, SW,
Desvio: BEQ,
Operaes de lgica e aritmtica: ADD, SUB, AND,
OR, SLT.
O processador: Caminho de dados
26
Construindo um caminho de dados
O controle da ALU
Operao da ALU com base no tipo de instruo e
cdigo de funo
O processador: Caminho de dados
27
Construindo um caminho de dados
O controle da ALU
A ALU possui quatro entradas de controle
Aritmticas e lgicas (and, or, sub, add, slt)
Load/store (add para clculo do endereo)
BEQ (subtrao)
O processador: Caminho de dados
28
Construindo um caminho de dados
Acrescentando o controle
Precisamos descrever o hardware para calcular entrada
de controle da ALU de 4 bits.
Tipo de instruo (OpALU) 2 bits
00 = lw, sw
01 = beq
10 = aritmtica
Cdigo de funo para aritmtica (funct) 6 bits
O processador: Caminho de dados
29
Construindo um caminho de dados
Controle da ALU
Precisamos descrever o hardware para calcular entrada
de controle da ALU de 4 bits.
O processador: Caminho de dados
30
Construindo um caminho de dados
Controle da ALU
Precisamos descrever o hardware para calcular entrada
de controle da ALU de 4 bits.
Descreva-o usando uma tabela verdade (pode se
tornar portes)
O processador: Caminho de dados
31
Construindo um caminho de dados
Controle da ALU
Uma vez que a tabela verdade construda ela pode ser
otimizada e, depois transformada em portas lgicas.
Processo completamente mecnico.
O processador: Caminho de dados
32
Construindo um caminho de dados:
Unidade de controle principal
Formatos de instruo considerados
Campo de opcode (bits 31-26)
Os dois registradores a serem lidos (rs e rt): posies 25-21 e 20-16 (tipo R, BEQ e store
word)
Registrador-base para instrues de load e store: est na posio 25-21 (rs)
16 bits de deslocamento do BE, lw e sw: 15-0
Registrador destino:
Para lw: 20-16 (rt)
Tipo R: 15-12 (rd)
necessrio ummultiplexador antes do banco de registradores
O processador: Caminho de dados
33
O caminho de dados com todos os
multiplexadores e linhas de controle
O processador: Caminho de dados
34
O processador: Caminho de dados
35
Operao do caminho de dados
Como cada instruo usa o caminho de dados ?
Fluxo das trs classes de instruo diferentes por meio
do caminho de dados.
Tudo ocorre em um ciclo de clock.
O processador: Caminho de dados
36
Operao do caminho de dados
Passos para a execuo de instrues R, ex., add
$t1,$t2,$t3
1. Busca da instruo na memria de instrues e incremento
do PC
2. Dois registradores, $t2 e $t3, so lidos do banco de
registradores. A unidade de controle coloca valores nas
linhas de controle.
3. A ALU opera sobre os dados lidos do banco de
registradores, usando o cdigo da funo (bits 5-0) para
gerar a funo da ALU
4. O resultado da ALU escrito no banco de registradores
usando-se os bits 15-11 da instru para selecionar o
registrador-destino ($t1)
O processador: Caminho de dados
37
Passos para a execuo da instruo add $t1,$t2,$t3
1. Busca da instruo na memria de instrues e incremento do PC
O processador: Caminho de dados
38
Passos para a execuo da instruo add $t1,$t2,$t3
2. Dois registradores, $t2 e $t3, so lidos do banco de registradores e a
unidade de controle coloca valores nas linhas de controle.
O processador: Caminho de dados
39
Passos para a execuo da instruo add $t1,$t2,$t3
3. A ALU opera sobre os dados lidos do banco de registradores, usando o
cdigo da funo (bits 5-0) para gerar a funo da ALU
O processador: Caminho de dados
40
Passos para a execuo da instruo add $t1,$t2,$t3
4. O resultado da ALU escrito no banco de registradores usando-se os
bits 15-11 da instru para selecionar o registrador-destino ($t1)
O processador: Caminho de dados
41
Operao do caminho de dados
Passos para a execuo de instrues R, ex., LW/SW
1. Busca da instruo na memria de instrues e incremento
do PC
2. Leitura do contedo de um registrador ($t2) do banco de
registradores
3. Clculo da soma do valor lido do banco de registradores
com o resultado da extenso do sinal de 16 bits menos
significativos da instruo (offset)
4. O resultado da soma usado para enderear a memria de
dados
5. O dado vindo da unidade de memria escrito no banco de
registradores; o nmero do registrador destino dado
pelos bits 20-16 da instruo ($t1)
O processador: Caminho de dados
42
Passos para a execuo da instruo lw $t1, offset($t2)
1. Busca da instruo na memria de instrues e incremento do PC
O processador: Caminho de dados
43
Passos para a execuo da instruo lw $t1, offset($t2)
2. Leitura do contedo de um registrador ($t2) do banco de registradores
O processador: Caminho de dados
44
Passos para a execuo da instruo lw $t1, offset($t2)
3. Clculo da soma do valor lido do banco de registradores com o resultado da
extenso do sinal de 16 bits menos significativos da instruo (offset)
O processador: Caminho de dados
45
Passos para a execuo da instruo lw $t1, offset($t2)
4. O resultado da soma usado para enderear a memria de dados
O processador: Caminho de dados
46
Passos para a execuo da instruo lw $t1, offset($t2)
5. O dado vindo da unidade de memria escrito no banco de registradores; o
nmero do registrador destino dado pelos bits 20-16 da instruo ($t1)
O processador: Caminho de dados
47
Operao do caminho de dados
Passos para execuo de instrues BEQ
1. Busca da instruo na memria de instrues e incremento
do PC
2. Leitura do contedo dos registradores $t1 e $t2
3. Realizao de uma subtrao pela ALU sobre os dois valores
lidos do bando de registradores. O valor de PC+4 somado
ao resultado da extenso do sinal dos 16 bits menos
significativos da instruo (deslocamento) deslocado de
dois bits esquerda. O resultado dessa soma o endereo
do destino do desvio
4. A sada Zero da ALU usada para decidir se o PC deve ser
atualizado com o valor de PC+4 ou com o valor do endereo
de destino do desvio condicional.
O processador: Caminho de dados
48
Execuo de instrues BEQ
O processador: Caminho de dados
49
Exerccio
Verifique a implementao de JUMPS ?
O processador: Caminho de dados
50
Implementao de ciclo nico
O projeto de ciclo nico ineficiente
O clock precisa ter a mesma durao para cada instruo nesse
projeto e o CPI ser sempre 1
O tempo de ciclo determinado pelo caminho mais longo; esse
caminho, certamente, uma instruo lw, que usa cinco
unidades funcionais em srie:
Memria de instrues
Banco de registradores
ALU
Memria de dados
Banco de registradores
Embora o CPI seja 1, o desempenho geral de uma
implementao de ciclo nico provavelmente no ser bom, j
que outras instrues poderiam ficar em um ciclo de clock mais
simples
O processador: Caminho de dados
51
Desempenho das mquinas de ciclo
nico
Suponha os seguintes tempos de operao
Unidade de memria: 200 ps
ALU e somadores: 100 ps
Banco de registradores: 50 ps
Considerando que os multiplexadores, a unidade de
controle, os acessos do PC, a unidade de extenso do sinal e
os fios no possuem atraso, qual das seguintes
implementaes seria mais rpida e por quanto?
Uma implementao em que toda instruo opera em 1 ciclo de
clock de uma durao fixa
Uma implementao em que toda instruo executada em 1 ciclo
de clock usando um ciclo de clock com durao varivel, que para
cada instruo, tem apenas a durao necessria (mtodo no
prtico)
O processador: Caminho de dados
52
Desempenho das mquinas de ciclo
nico
Soluo
Considerando o mix: 25% loads, 10% stores, 45% ALU,
15% desvios, 5% jumps
Lembre-se:
Tempo de execuo = Contagem instrues x CPI x
Tempo de ciclo
Como CPI 1 ento:
Tempo de execuo = Contagem instrues x 1 x
Tempo de ciclo
Tempo de execuo = Contagem instrues x Tempo
de ciclo
O processador: Caminho de dados
53
Desempenho das mquinas de ciclo
nico
Precisamos ento encontrar o tempo do ciclo de
clock para as duas implementaes, j que a
contagem de instrues e CPI so iguais.
Caminho crtico:
O processador: Caminho de dados
54
Desempenho das mquinas de ciclo
nico
Caminho crtico e tempo exigido para cada classe
de instrues
O processador: Caminho de dados
55
Desempenho das mquinas de ciclo
nico
O ciclo de clock determinado pela instruo mais
longa, que leva 600ps para ser executada:
=
600 25%+550 10%+400 45%+350 15%+200
5% =
,




=




=





=
O processador: Caminho de dados
56
Desempenho das mquinas de ciclo
nico
A implementao de clock varivel seria 1,34 vez
mais rpida
Mas, implementar um clock de velocidade varivel
para cada classe de instruo extremamente
difcil e o overhead para esse mtodo poderia ser
maior do que qualquer vantagem obtida.
Alternativa: usar um ciclo de clock mais curto que
realize menos trabalho e, ento, variar o nmero
de ciclos de clock para diferentes classes de
instrues.
O processador: Caminho de dados
57
Uma implementao multiciclo
A execuo de cada instruo quebrada em
passos
Cada etapa na execuo levar um ciclo de clock
Permite que que uma unidade funcional seja usada
mais de uma vez por instruo, desde que seja
usada em diferentes ciclos de clock
O processador: Caminho de dados
58
Uma implementao multiciclo
Uma nica unidade de memria usada para instrues e para
dados
Existe uma nica ALU, em vez de uma ALU e dois somadores
Um ou mais registradores so adicionados aps cada unidade
funcional para conter a sada dessa unidade at o valor ser
usado em um ciclo de clock subsequentente.
O processador: Caminho de dados
59
Uma implementao multiciclo
O processador: Caminho de dados
O ciclo de clock pode acomodar no mximo umas
das seguintes operaes:
Um acesso memria
Um acesso ao banco de registradores (duas leituras e
uma escrita)
Uma operao da ALU
Assim, os dados precisam ser salvos em um
registrador temporrio para o uso em um ciclo
posterior.
60
Uma implementao multiciclo
Registradores temporrios adicionais:
Registrador de instruo (IR)
Registrador de dados da memria (MDR)
Registradores A e B
Registrador SadaALU
Sinais de controle
Multiplexadores
O processador: Caminho de dados
61
Uma implementao multiciclo
O processador: Caminho de dados
62
Uma implementao multiciclo
O processador: Caminho de dados
63
Uma implementao multiciclo
O processador: Caminho de dados