Arquiteturas de Computadores Implementação monociclo de IPS Fontes dos slides: Patterson & Hennessy book website (copyright organ Kaufmann) e Dr. Sumanta Guha
Implementando IPS Implementação do conjunto de instruções IPS Simplificado para conter somente Instruções lógico-aritméticas: add, sub, and, or, slt Instruções de referência à memória: lw, sw Instruções de controle de fluxo: beq, j 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op rs rt rd shamt funct R-Format 6 bits 5 bits 5 bits bits op rs rt offset 6 bits 26 bits op address I-Format J-Format
Implementando IPS: Ciclo Busca/Execução Visão alto nível da implementação do ciclo de busca/execução de uma instrução usa o registrador contador de instrução (PC) para fornecer o endereço da instrução busca a instrução na memória e incrementa PC usa campos da instrução para selecionar os registradores a serem lidos executa a instrução repita Data Register # PC Address Registers Register # ALU memory Register # Address Data memory Data
Estilos para implementação do processador onociclo Executa cada instrução em um ciclo de relógio O ciclo de relógio deve ser longo o suficiente para que a instrução que demanda maior tempo seja executada desvantagem: tão rápido quanto a instrução mais lenta ulti-ciclos Quebra o ciclo de busca/execução em vários passos executa 1 passo em cada ciclo de relógio vantagem: cada instrução usa somente o número de ciclos que precisa Pipelined executa cada instrução em vários passos executa 1 passo / instrução em cada ciclo de relógio Processa múltiplas instruções em paralelo
Elementos funcionais Dois tipos de elementos funcionais no hardware: elementos que operam os dados (denominados elementos combinacionais ) elementos que contêm dados (denominados elementos de estado ou sequenciais)
Elementos Combinacionais Trabalham com uma função input output, e.g., ALU Lógica combinacional lê dados de entrada de um registrador e escreve dados no mesmo registrador ou em um diferente Leitura/escrita acontecem em um único ciclo elemento combinacional não armazena dado de um ciclo para outro Unidades de hardware com lógica combinacional State element 1 Combinational logic State element 2 State element Combinational logic Clock cycle
Elementos de Estado Elementos de estado armazenam dados, e.g., registradores e memória Todos os elementos de estado definem o estado da máquina
Elementos de estado no caminho de dados: Registradores Clock 5 bits 5 bits 5 bits 32 bits register number 1 register number 2 Register file register data data 1 data 2 32 bits 32 bits Sinal de controle Registradores com duas portas para leitura e uma porta para escrita
Elementos de estado no caminho de dados: Registradores Implementação: Clock Clock register number 1 Register 0 Register 1 Register n 1 Register n u x data 1 Register number 0 1 n-to-1 decoder n 1 n C Register 0 D C Register 1 D register number 2 u x data 2 Register data C Register n 1 D C Register n D Portas de entrada são implementadas com 2 multiplexadores de 5 bits para selecionar 32 registradores Porta de saída é implementada com um decodificador 5-to-32 para 32 registradores. O relógio é relevante para a escrita porque o estado do registrador só pode ser trocado na transição do relógio
Implementação de IPS monociclo A primeira implementação de IPS irá usar um único ciclo longo de relógio para cada instrução Cada instrução começa a ser executada em uma transição para cima do relógio e termina na próxima transição para cima Esta abordagem não é prática porque é muito mais devagar que uma implementação multiciclo onde cada instrução pode necessitar de números de ciclos diferentes Em uma implementação monociclo, cada instrução deve utilizar o mesmo tempo que a instrução mais lenta necessita Em uma implementação multiciclo, este problema é evitado porque instruções mais rápidas necessitam um número menor de ciclos Embora a abordagem monociclo não seja utilizada na prática, ela é simples e fácil de entender
Caminho de dados: Instrução Armazena/Busca & Incremento do PC address memory PC Add Sum PC address 4 Add a. memory b. Program counter c. Adder Três elementos usados para armazenar e buscar instruções e incrementar o PC memory Caminho de dados
Caminho de dados: Instrução Armazena/Busca & Incremento do PC ADD Instrução <- E[PC] PC <- PC + 4 4 PC ADDR emory RD
Caminho de dados: Instrução do tipo R Register numbers Data 5 3 register 1 5 5 register 2 Registers register data data 1 data 2 Reg Data ALU control Zero ALU ALU result a. Registers b. ALU register 1 register 2 Registers register data data 1 data 2 Reg 3 ALU operation Zero ALU ALU result Dois elementos usados para implementar instruções do tipo R Caminho de dados
Caminho de dados: Instrução do tipo R op rs rt rd shamt funct add rd, rs, rt R[rd] <- R[rs] + R[rt]; 5 5 5 RN1 RN2 WN RD1 Register File Operation 3 ALU Zero Reg RD2
Caminho de dados: Instrução Carrega/Armazena Address data em Data memory data Sign 32 extend register 1 register 2 Registers register data Reg data 1 data 2 3 ALU operation Zero ALU ALU result Address data em Data memory data em Sign 32 extend em a. Data memory unit b. Sign-extension unit Dois elementos adicionais usados para implementar instruções do tipo carrega/armazena Caminho de dados
Caminho de dados: Instrução Carrega/Armazena op rs rt offset/immediate 5 5 RN1 RN2 WN RD1 Register File Reg 5 RD2 E T N D 32 Operation 3 ALU lw rt, offset(rs) R[rt] <- E[R[rs] + s_extend(offset)]; Zero em ADDR emory em RD
Caminho de dados: Instrução Carrega/Armazena op rs rt offset/immediate 5 5 RN1 RN2 WN RD1 Register File Reg 5 RD2 E T N D 32 Operation 3 ALU sw rt, offset(rs) E[R[rs] + sign_extend(offset)] <- R[rt] Zero em ADDR emory em RD
Caminho de dados: Instrução de desvio PC + 4 from instruction datapath Add Sum Branch target Shift left 2 register 1 register 2 Registers register data Reg data 1 data 2 Sign 32 extend 3 ALU ALU operation Zero To branch control logic Caminho de dados
Caminho de dados: Instrução de desvio op rs rt offset/immediate PC +4 from instruction datapath ADD 5 5 RN1 RN2 WN RD1 Register File Operation ALU Zero <<2 Reg RD2 E T N D 32 beq rs, rt, offset if (R[rs] == R[rt]) then PC <- PC+4 + s_extend(offset<<2)
Caminho de dados para IPS I:onociclo Entrada deve ser conteúdo de registrador (formato R) ou metade da instrução com extensão de sinal (formato carrega/armazena) Dados vêm da ALU (tipo R) ou da memória (carrega) Combinando o caminho de dados para instruções do tipo R e carrega/armazena usando dois multiplexadores
Instruções do tipo R add rd,rs,rt 32 5 5 RN1 RN2 WN RD1 Register File 5 Operation 3 ALU Zero Reg RD2 E T N D 32 U ALUSrc em ADDR Data emory em RD emtoreg U
Instrução do tipo carrega lw rt,offset(rs) 32 5 5 RN1 RN2 WN RD1 Register File 5 Operation 3 ALU Zero Reg RD2 E T N D 32 U ALUSrc em ADDR Data emory em RD emtoreg U
Instrução do tipo armazena sw rt,offset(rs) 32 5 5 RN1 RN2 WN RD1 Register File 5 Operation 3 ALU Zero Reg RD2 E T N D 32 U ALUSrc em ADDR Data emory em RD emtoreg U
Caminho de dados para IP II: onociclo Add Somador separado da ALU porque as operações da ALU e incremento do PC devem ocorrer no mesmo ciclo de relógio 4 PC address memory register 1 register 2 register data Reg emória de dados e instruções separadas porque leitura de memória e instrução ocorrem no mesmo ciclo de relógio Registers data 1 data 2 Sign 32 extend ALUSrc u x Busca da instrução add 3 ALU operation Zero ALU ALU result Address data em em data Data memory emtoreg u x
Caminho de dados para IP III: onociclo PCSrc Novo multiplexador PC 4 address Add memory Endereço da instrução é PC+4 ou endereço do desvio register 1 register 2 register data Registers data 1 data 2 Reg Sign 32 extend Shift left 2 ALUSrc u x Add ALU result 3 ALU operation Zero ALU ALU result u x Address data Precisa de um somador extra porque os dois operam no mesmo ciclo em em data Data memory emtoreg u x Incluindo a capacidade de desvio e outro multiplexador
Execução da instrução add ADD 4 ADD U PC ADDR emory RD 32 5 5 RN1 RN2 WN RD1 Register File 5 <<2 Operation 3 ALU Zero PCSrc add rd, rs, rt Reg RD2 E 32 T N D U ALUSrc em ADDR Data emory em RD emtoreg U
Execução da instrução lw ADD 4 ADD U PC ADDR emory RD 32 5 5 RN1 RN2 WN RD1 Register File 5 <<2 Operation 3 ALU Zero PCSrc lw rt,offset(rs) Reg RD2 E 32 T N D U ALUSrc em ADDR Data emory em RD emtoreg U
Execução da instrução sw 4 ADD ADD U PC ADDR emory RD 32 5 5 RN1 RN2 WN RD1 Register File 5 <<2 Operation 3 ALU Zero PCSrc sw rt,offset(rs) Reg RD2 E 32 T N D U ALUSrc em ADDR Data emory em RD emtoreg U
Execução da instrução beq ADD 4 ADD U PC ADDR emory RD 32 5 5 RN1 RN2 WN RD1 Register File 5 <<2 Operation 3 ALU Zero PCSrc beq r1,r2,offset Reg RD2 E 32 T N D U ALUSrc em ADDR Data emory em RD emtoreg U
Controle Os dados de entrada da unidade de controle são: Os bits do campo opcode da instrução A unidade de controle gera Sinais de controle para a ALU Sinais de escrita e leitura para os elementos de armazenamento Sinais de controle para cada multiplexador
Controle da ALU Como controlar a ALU: controle principal envia 2-bits ALUOp para o campo de controle da ALU. Baseado em ALUOp e campo funct da instrução o controle da ALU gera os 3 bits do campo de controle da ALU Campo de controle da ALU 000 and 001 or 010 add 110 sub 111 slt Function ain Control 6 2 ALUOp ALU Control 3 ALU control input To ALU ALU deve executar funct field add para carregamentos/armazenamentos (ALUOp 00) sub para desvios (ALUOp 01) um entre and, or, add, sub, slt para instruções do tipo R, dependendo do campo da instrução funct (ALUOp 10)
Gerenciando bits de controle da ALU Tabela verdade para os bits de controle da ALU
Projetando o controle principal R-type opcode rs rt rd shamt funct 31-26 25-21 20-15-11 10-6 5-0 Load/store or branch opcode rs rt address 31-26 25-21 20-15-0 Observações sobre o formato da instrução IPS opcode está sempre nos bits 31-26 Dois registradores que devem ser lidos são sempre rs (bits 25-21) e rt (bits 20-) Registrador base para armazenamentos e carregamentos é sempre rs (bits 25-21) Deslocamento de -bits para desvios e armazenamentos e carregamentos é sempre definido pelos bits 15-0 Registrador destino para carregamentos é definido pelos bits 20- (rt) enquanto que para instruções do tipo R é definido pelos bits 15-11 (rd) (necessita de multiplexador)
Caminho de dados com controle I Adicionando controle ao caminho de dados III (e um novo multiplexador para selecionar registrador destino):
Sinais de controle Nome do sinal Efeito quando valor =0 Efeito quando valor =1 RegDst O identificador do registrador a ser escrito vem O identificador do registrador a ser escrito vem dos bits 20- dos bits 15-11 Reg Nenhum O registrador identificado é escrito com os dados que estão em data input ALUSrc O segundo operando da ALU vem O segundo operando da ALU vem do valor com sinal estendido do segundo registrador lido ( data 2) dos bits da instrução PCSrc O conteúdo do PC é substituído pela saída do somador O conteúdo do PC é substituído pela saída do somador que calcula o valor PC + 4 que calcula o endereço do desvio em Nenhum O conteúdo da memória que está no endereço é colocado na saída data output em Nenhum O conteúdo da memória endereçada é substituído pelo conteúdo que está em data input emtoreg O valor de entrada de escrita do registrador O valor de entrada de escrita do registrador data input vem da ALU data input vem da memória Efeitos dos sete sinais de controle
Caminho de dados com controle II 0 4 Add [31 26] Control RegDst Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add result ALU u x 1 PCSrc PC address memory [31 0] [25 21] [20 ] [15 11] 0 u x 1 register 1 data 1 register 2 Registers data 2 register data 0 u x 1 Zero ALU ALU result Address data Data memory data 1 u x 0 [15 0] Sign 32 extend ALU control [5 0] Unidade de controle: a entrada são os 6-bits do campo opcode da instrução, a saída são 7 sinais de 1-bit e 2-bits de sinal ALUOp