caminho de dados

Propaganda
Função básica da CPU
• Buscar uma instrução na memória
• Interpretar qual operação é representada
pela instrução
• Trazer (se for o caso) os operandos para a
CPU
• Executar a operação
• Armazenar (se for o caso) os dados de saída
• Repetir o processo com uma nova instrução
 etapas do Ciclo de Instrução
Performance
• Medida de performance baseada em:
– número de instruções
– período do clock
– ciclos de clock por instrução (CPI)
• Clock
– dispositivo gerador de pulsos (medido em Hertz)
– Para cada pulso do relógio se realiza uma microinstrução
• A quantidade de vezes que o pulso se repete
em um segundo define a velocidade do clock
– Freqüência medida em Hertz (1 ciclo por segundo)
Ex: 1 MHertz
Performance
• Número de instruções
– Depende do programa
• Período do clock e ciclos de clock por
instrução
– Dependem da implementação do processador
Implementação da UCP
•
•
•
•
Definir como a instrução
Construção do caminho do dados
Definição da unidade de controle
Começar por uma implementação simples
(cada instrução dura exatamente um
clock) e ir melhorando iterativamente
Unidades da UCP
Composta por 2 tipos de unidades funcionais:
• Elementos que operam sobre valores de
dados
– Ex: ULA (Unidade Lógica e Aritmética) = ALU
• Elementos de estados
– Ex: Registradores e a memória de instruções e
dados
Unidades da UCP
• Elementos “combinacionais”:
– Elementos que operam sobre valores de dados
– Saída depende somente das entradas
– Dado o mesmo conjunto de entradas, produz sempre a
mesma saída
– Saída é uma “combinação” dos dados de entrada
• Elementos “seqüenciais”:
– Elementos de estados
– A saída depende tanto da entrada como do estado interno
do elemento
– Ex: Uma operação no banco de registradores depende
tanto do número do registrador quanto do valor
armazenado no registrador
Elementos necessários para construção da UCP
• Lugar para guardar as instruções do programa
– Memória de instruções (elemento de estados)
• Elementos para guardar o endereço da
instrução
– Program Counter (PC) (elemento de estados)
• Elemento para adicionar 1 ao PC para que este
possa ir para a próxima instrução
– ULA (Unidade Lógica e Aritmética) (elemento
combinacional)
Elementos necessários para construção (I)
• Memória de instruções
Endereço de
leitura
Instrução
• PC
Memória de
Instruções
PC
• ULA só de soma
Somador
Caminho de dados da
Busca da Instrução
• Busca a instrução na memória, cujo endereço
está no contador de programa PC
• Incrementa o contador de programa PC de 1
1
Somador
PC
Endereço de
leitura
Instrução
Memória de
Instruções
Subconjunto de instruções
• O foco será dado em um subconjunto de
instruções:
– Aritmética: add e addi
– Memória: lw e sw
– Desvio: beq
• Para cada instrução iremos definir o caminho de
dados
• O método de implementação das outras
instruções ocorre a partir das instruções básicas
Revisão do Formato das Instruções (I)
• R-FORMAT (lê dois registradores e escreve o resultado
em outro registrador)
– add regA regB destreg
31
25 24
0
7 bits
22 21
19 18
16 15
regA regB
rdop
3 bits 3 bits 3 bits
3 2
0
0
destreg
13 bits 3 bits
op: código de operação
regA: registrador com primeiro operando fonte
regB: registrador com segundo operando fonte
destreg: registrador que guarda resultado da operação
Exemplo: Instrução de Soma
• add regA regB destreg
– Mem[PC]
Obtém instrução da memória
– R[destreg] R[regA] + R[regB]
Executa operação de soma
– PC PC + 1
Calcula próximo endereço
1) Buscar informação dos registradores
2) Somar os valores
3) Guardar informação no registrador
Elementos necessários para construção (II)
• Banco de Registradores com 8 registradores
– Registrador selecionado por
• Reg a ser lido #1
• Reg a ser lido #2
• “Reg a ser escrito” seleciona registro que recebe
“dado a ser escrito” quando EscReg=1
– Um barramento de 32 bits de entrada
• Dado a ser escrito
– Dois barramentos de 32 bits de saída
• Dado lido #1 e Dado lido #2
– Registrador 0 tem o valor 0
Elementos necessários para construção (II)
• Banco de Registradores com 8 registradores
3
No do registrador
Dado
Reg a ser
lido # 1
Reg a ser
lido #2
Dado
lido #1
3
Reg a ser
escrito
Dado
lido #2
32
Dado de
escrita
3
EscReg
32
32
Dado
Elementos necessários para construção (III)
• Elementos Combinacionais
Select (=0 linha de cima,
=1 linha de baixo)
Somador
X
A
Soma = X + Y
Y
32
B
32
M
U
X
32
C
Multiplexador
Controle da ULA
(operação a ser executada)
32
3
Zero Usado para verificar se 2 dados são iguais
ULA
32
Resultado da UAL
32
Caminho de Dados para
Instruções do tipo R-FORMAT
• R[destreg]
R[regA] op R[regB]
– Reg a ser lido #1 = regA, Reg a ser lido #2=regB
– Reg a ser escrito= destreg
– Controle da UAL e de EscReg baseado no código da
instrução
Caminho de Dados para
Instruções do tipo R-FORMAT
• R[destreg]
I
N
S
T
R
U
Ç
Ã
O
R[regA] op R[regB]
Operação da UAL
3
3
3
32
Reg a ser
lido # 1
3
Reg a ser
lido #2
Dado
lido #1
32
Reg a ser
escrito
Dado
lido #2
32
Dado de
escrita
EscReg
UAL
Zero
Resultado da UAL
Revisão do Formato das Instruções (II)
• I-Format (trabalha com imm)
– lw regA regB imm
– sw regA regB imm
– addi regA regB imm
– beq regA regB imm
• Desvio utiliza endereço PC relativo
(PC + 1 + imm)
31
25 24
0
22 21
op
19 18
16 15
regA regB
7 bits 3 bits 3 bits 3 bits
0
imm
16 bits
Exemplo: Instrução de Carga
• lw regA regB imm
– mem[PC]
Busca instrução na memória
32 bits
16 bits
– End
R[regA]+SignExt(imm) Calcula o endereço
da memória
– R[regB] Mem[End] Carrega os dados da
memória no registrador
– PC PC+1
Calcula o próximo endereço
1)
2)
3)
4)
Buscar informação em registrador
Transformar 16 bits em 32 bits
Pegar informação da memória
Guardar informação do registrador
Elementos necessários para construção (IV)
• Extensão de sinal
– Transformar um número com 16 bits em um com
32 bits
– Replicar o bit mais significativo:
– Ex: (2)10 = 0000 0000 0000 0010 (com 16 bits)
0000 0000 0000 0000 0000 0000 0000 0010
– Ex: (-2)10 = inv (0000 0000 0000 0010)+1=
1111 1111 1111 1110 (com 16 bits)
1111 1111 1111 1111 1111 1111 1111 1110
Elementos necessários para construção (IV)
• Extensão de sinal
16
Extensão
de sinal
32
Elementos necessários para construção (V)
• Memória
– Um barramento de entrada: Dado a ser escrito
– Um barramento de saída: Dado lido
• Seleção de endereço
– Endereço seleciona a palavra a ser colocada em
Dado lido ou
endereço no qual o Dado a ser escrito será posto
– Para escrever no endereço, seta EscMem para 1
– Para ler do endereço, seta LerMem para 1
Elementos necessários para construção (V)
• Memória
EscMen
Endereço
Dado
lido
Dado a ser
escrito
LerMem
Caminho de Dados para
Instrução de Carga
• lw regA regB imm
(guarda no regB o dado do endereço de memória regA+imm)
Operação da UAL
3
I
N
S
T
R
U
Ç
Ã
O
3
32
Reg a ser
lido # 1
3
Reg a ser
lido #2
Dado
lido #1
Reg a ser
escrito
Dado
lido #2
Zero
UAL
EscMen
Endereço
Dado a ser
escrito
Dado de
escrita
EscReg
16
32
Extensão
de sinal
32
Dado
lido
LerMem
Exemplo: Instrução de
Armazenamento
• sw regA regB imm
– mem[PC]
– End
Busca instrução na memória
R[regA]+SignExt(imm)
Calcula o endereço
da memória
– Mem[End] R[regB]
Carrega os dados na
memória
– PC PC+1
Calcula o próximo endereço
1)
2)
3)
4)
Buscar informação em registrador
Transformar 16 bits em 32 bits
Pegar informação em registrador
Guardar informação na memória
Caminho de Dados para Instrução
de Armazenamento
• sw regA regB imm
(guarda no enderenço de memória regA+imm o dado de regB)
Operação da UAL
I
N
S
T
R
U
Ç
Ã
O
3
Reg a ser
lido # 1
3
Reg a ser
lido #2
Dado
lido #1
Reg a ser
escrito
Dado
lido #2
3
Zero
UAL
EscMen
Endereço
Dado a ser
escrito
Dado de
escrita
EscReg
16
32
Extensão
de sinal
32
Dado
lido
LerMem
Revisão do Formato de Instrução de Desvio
Condicional (III)
• beq regA regB imm
– mem[PC]
– Cond
Busca instrução na memória
R[regA]-R[regB]
Calcula a condição
de desvio
– if (Cond eq 0)
• PC
PC+1 + SignExt(imm)
Calcula endereço PC
relativo
– else
• PC
PC+1
Calcula o próximo endereço
Caminho de Dados para Instrução
de Desvio Condicional
PC+1 vindo do caminho de dados de
busca de uma instrução
I
N
S
T
R
U
Ç
Ã
O
3
Reg a ser
lido # 1
3
Reg a ser
lido #2
Endereço alvo
do desvio condicional
Somador
Dado
lido #1
UAL
Reg a ser
escrito
Zero
Dado
lido #2
Para a lógica de
controle do desvio
condicional
3
Dado de
escrita
Operação da UAL
EscReg
16
Extensão
de sinal
32
Se R[regA]-R[regB] = 0
o sinal na saída Zero é 1.
Se R[regA]-R[regB] != 0
o sinal na saída Zero é 0.
Passos do Projeto
• Objetivos: projetar um caminho de dados para
possibilitar a execução de todas as instruções
vistas em um único ciclo de clock
• De acordo com a arquitetura do conjunto de
instruções, define-se uma estrutura
organizacional macro.
• Essa estrutura é refinada para definir os
componentes do caminho de dados, suas
interconexões e pontos de controle
Caminho de Dados
• Busca de Instrução + Instruções Aritm. e Lóg. (R-format)
+ Instruções de Referência à Memória (I-Format)
1
P
C
Somador
Endereço de
leitura
Instrução
Operação da UAL
Reg a ser
lido # 1
M
U
X
3
Reg a ser
lido #2
Dado
lido #1
Reg a ser
escrito
Dado
lido #2
Dado de
escrita
Memória de
Instruções
EscReg
16
Extensão
de sinal
Zero
M
U
X
UAL
Endereço
Dado
lido
Dado a ser
escrito
LerMem
32
EscMen
M
U
X
Caminho de Dados
• Busca de Instrução + Instruções Aritm. e Lóg. (R-format)
+ Instruções de Referência à Memória (I-Format) + Desvio
1
M
U
X
Somador
UAL
Reg a ser
lido # 1
P
C
Endereço de
leitura
Instrução
M
U
X
3
Reg a ser
lido #2
Dado
lido #1
Reg a ser
escrito
Dado
lido #2
Dado de
escrita
Memória de
Instruções
16
EscMen
M
U
X
UAL
Endereço
Dado
lido
Dado a ser
escrito
LerMem
EscReg
Extensão
de sinal
DvC
32
M
U
X
Download