Download - Função básica da CPU
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 micro-
instruçã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
• PC
• ULA só de soma
Memória de Instruções
Endereço deleitura
Instrução
PC
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
Memória de Instruções
Endereço deleitura
Instrução
PC
1Somador
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
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
00 regArd regBop destreg
7 bits 3 bits 3 bits 3 bits 13 bits 3 bits
31 25 24 22 21 19 18 16 15 3 2 0
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ço1) Buscar informação dos registradores2) Somar os valores3) 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
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
3
3
3
32
32
32
EscReg
Dado
Dado
No do registrador
Elementos necessários para construção (III)
• Elementos Combinacionais
3
Soma = X + Y
Somador
Controle da ULA(operação a ser executada)
Zero
Resultado da UALULA
X
Y
32MUX
32
32A
BC
Select (=0 linha de cima, =1 linha de baixo)
Usado para verificar se 2 dados são iguais
32
32
32
Multiplexador
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
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
3
3
3
32
32
32
EscReg
3Operação da UAL
Resultado da UAL
Zero
• R[destreg] R[regA] op R[regB]
INSTRUÇÃO
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)
op regBregA
7 bits 3 bits 3 bits 16 bits
imm
3 bits
0
31 25 24 22 21 19 18 16 15 0
Exemplo: Instrução de Carga
• lw regA regB imm– mem[PC] Busca instrução na memória
– End R[regA]+SignExt(imm) Calcula o endereço da memória
– R[regB] Mem[End] Carrega os dados damemória no
registrador– PC PC+1 Calcula o próximo endereço1) Buscar informação em registrador
2) Transformar 16 bits em 32 bits3) Pegar informação da memória4) Guardar informação do registrador
32 bits 16 bits
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 32
Extensãode sinal
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
Endereço
Dado a ser escrito
Dadolido
LerMem
EscMen
Caminho de Dados para Instrução de Carga
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
3
3
32
32
EscReg
3Operação da UAL
Zero
Endereço
Dado a ser escrito
Dadolido
LerMem
EscMen
16 32
Extensãode sinal
INSTRUÇÃO
• lw regA regB imm(guarda no regB o dado do endereço de memória regA+imm)
UAL
Exemplo: Instrução de Armazenamento
• sw regA regB imm– mem[PC] Busca instrução na memória
– End 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ço1) Buscar informação em registrador2) Transformar 16 bits em 32 bits3) Pegar informação em registrador4) Guardar informação na memória
Caminho de Dados para Instrução de Armazenamento
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
3
3 32
EscReg
3Operação da UAL
Zero
Endereço
Dado a ser escrito
Dadolido
LerMem
EscMen
16 32
Extensãode sinal
INSTRUÇÃO
• sw regA regB imm(guarda no enderenço de memória regA+imm o dado de regB)
UAL
Revisão do Formato de Instrução de Desvio Condicional (III)
• beq regA regB imm– mem[PC] Busca instrução na memória
– Cond 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
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
3
3
EscReg
3Operação da UAL
ZeroUAL
16 32
Extensãode sinal
Somador
PC+1 vindo do caminho de dados de busca de uma instrução
Endereço alvodo desvio condicional
Para a lógica de controle do desvio condicional
INSTRUÇÃO
Caminho de Dados para Instrução de Desvio Condicional
Se R[regA]-R[regB] = 0o sinal na saída Zero é 1.
Se R[regA]-R[regB] != 0o 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
• Estrutura de controle é definida• O projeto do caminho de dados e controle é refinado para
projeto físico e validação funcional
Caminho de Dados• Busca de Instrução + Instruções Aritm. e Lóg. (R-format) + Instruções de Referência à Memória (I-Format)
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
EscReg
3
Operação da UAL
Zero
Endereço
Dado a ser escrito
Dadolido
LerMem
EscMen
Extensãode sinal
UAL
MUX
MUX
Memória de Instruções
Endereço deleitura
Instrução
PC
1 Somador
16 32
MUX
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
Reg a ser lido # 1
Reg a ser lido #2
Reg a ser escrito
Dado de escrita
Dado lido #1
Dadolido #2
EscReg
3
Endereço
Dado a ser escrito
Dadolido
LerMem
EscMen
Extensãode sinal
UAL
MUX
MUX
Memória de Instruções
Endereço deleitura
Instrução
PC
1 Somador
16 32
MUX
UAL
MUX
DvC