310 likes | 419 Views
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
E N D
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 baseadaem: • número de instruções • período do clock • ciclos de clock porinstrução (CPI) • Clock • dispositivogerador de pulsos (medidoem Hertz) • Para cadapulso do relógio se realizauma micro-instrução • A quantidade de vezesque o pulso se repeteem um segundo define a velocidade do clock • Freqüênciamedidaem Hertz (1 cicloporsegundo) 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 • ProgramCounter (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 Endereço de leitura Instrução Memória de Instruções 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 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
0 op regA 0 destreg rd regB 3 bits 3 bits 3 bits 13 bits 3 bits 7 bits 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 22 21 19 18 16 15 3 2 0 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 Buscar informação dos registradores Somar os valores 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 3 32 Dado lido #1 Dadolido #2 3 No do registrador Dado 32 3 32 Dado EscReg
Elementos necessários para construção (III) • Elementos Combinacionais Select (=0 linha de cima, =1 linha de baixo) Somador 32 X MUX A 32 C Soma = X + Y B Y 32 Multiplexador Controle da ULA (operação a ser executada) 3 32 Zero Usado para verificar se 2 dados são iguais ULA Resultado da UAL 32 32
Caminho de Dados paraInstruçõ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 paraInstruções do tipo R-FORMAT • R[destreg] R[regA] op R[regB] I N S T R U Ç Ã O Operação da UAL 3 Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 3 32 Dado lido #1 Dadolido #2 Zero UAL 3 32 Resultado da UAL 32 EscReg
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 22 21 19 18 16 15 0 imm op regA 0 regB 3 bits 3 bits 16 bits 3 bits 7 bits
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 da memória no registrador • PC PC+1 Calcula o próximo endereço 32 bits 16 bits 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 Extensão de sinal 16 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 a ser escrito Dadolido LerMem
Caminho de Dados paraInstrução de Carga • lwregAregBimm (guarda no regB o dado do endereço de memóriaregA+imm) Operação da UAL 3 Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 EscMen I N S T R U Ç Ã O 32 Dado lido #1 Dadolido #2 Zero Endereço Dado a ser escrito UAL Dadolido 3 32 LerMem EscReg Extensão de sinal 16 32
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ço 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 paraInstrução de Armazenamento • swregAregBimm(guarda no enderenço de memóriaregA+imm o dado de regB) Operação da UAL 3 Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 I N S T R U Ç Ã O 3 32 Dado lido #1 Dadolido #2 Zero EscMen UAL Endereço Dado a ser escrito Dadolido LerMem EscReg Extensão de sinal 16 32
Revisão do Formato de Instrução de DesvioCondicional (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
Caminho de Dados paraInstrução de DesvioCondicional PC+1 vindo do caminho de dados de busca de umainstrução Endereçoalvo do desviocondicional 3 Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Somador I N S T R U Ç Ã O 3 Dado lido #1 Dadolido #2 Para a lógica de controle do desvio condicional UAL Zero 3 Operação da UAL EscReg Extensão de sinal 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. 16 32
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çõesAritm. e Lóg. (R-format) + Instruções de Referência à Memória (I-Format) 1 Somador Operação da UAL Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 PC Endereço de leitura Dado lido #1 Dadolido #2 EscMen Zero Instrução M U X Endereço Dado a ser escrito UAL M U X Dadolido M U X Memória de Instruções EscReg LerMem Extensão de sinal 16 32
Caminho de Dados • Busca de Instrução + InstruçõesAritm. e Lóg. (R-format) + Instruções de Referência à Memória (I-Format) + Desvio M U X 1 Somador UAL Reg a ser lido # 1 Reg a ser lido #2 Reg a ser escrito Dado de escrita DvC 3 PC Endereço de leitura Dado lido #1 Dadolido #2 EscMen Instrução M U X Endereço Dado a ser escrito UAL M U X Dadolido M U X Memória de Instruções LerMem EscReg Extensão de sinal 16 32