controle Conjunto de instrues do processador MIPS acesso memria (lw, sw) lgica/aritmtica (add,sub) desvio (beq, j) PC Memria de Instrues Banco de Registradores endereo instruo dados Reg # ALU Memria de Dados endereo dados Viso refinada novas unidades funcionais conexes entre unidades unidade de controle Sinais de controle ativos nvel alto (1 lgico) Componentes combinacionais e seqenciais Metodologia de temporizao sensvel s transies Transies positivas nico ciclo de clock suficiente para atender a todas as instrues maior tempo processador MIPS 32 bits Componente sinais de controle associados Busca Componentes memria de instrues (MI) program counter (PC) somador (SO) PC Endereo de leitura
Instruo Somador prximo endereo 4 Memria de Instrues Busca Execuo de instrues lgicas e aritmticas 2 registradores fonte 1 registrador destino add, sub, slt, and, or Componentes banco de registradores (BR) ALU Execuo de instrues lgicas e aritmticas Reg #1 ALU Banco de Registradores Reg a ser escrito Dado #1 Dado #2 Dado de escrita Instruo Zero Operao da ALU EscReg Resultado da ALU 3 Reg #2 Execuo de instrues de acesso memria lw $t1, dst ($t2) sw $t1, dst ($t2) modo de endereamento? Componentes banco de registradores (BR) ALU memria de dados (MD) extenso de sinal (Ext) Execuo de instrues acesso memria Reg #1 ALU Banco de Registradores Reg #2 Reg a ser escrito Dado #1 Dado #2 Dado de escrita Instruo Zero Operao da ALU EscReg Resultado da ALU 3 Extenso de sinal 16 LerMem Dado a ser escrito Memria de Dados Endereo Dado lido EscMem Execuo de instrues de desvio Condicional desvio condicional beq $t1, $t2, label 2 registradores comparao deslocamento endereo alvo de desvio endereo alvo de desvio PC atual (PC+4) deslocamento de 2 bits esquerda Componentes banco de registradores (BR) ALU extenso de sinal (Ext) somador (SO) deslocamento de 2 bits (D2) Execuo de instrues desvio condicional Reg #1 ALU Banco de Registradores Reg #2 Dado #1 Dado #2 Dado de escrita Zero Operao da ALU EscReg 3 16 Somador Soma Desl. 2 bits Endereo alvo do desvio condicional Para lgica de controle do desvio condicional PC + 4 (vindo da busca) 32 Extenso de sinal Instruo Execuo de instrues de desvio Incondicional desvio incondicional j label modo de endereamento ? endereo alvo de desvio PC atual (PC+4), 4 bits mais significativos 28 bits menos significativos (26 bits da instruo + 2 bits de deslocamento) Componentes deslocamento de 2 bits (D2) Endereo Memria de Instrues Instruo [31-0] PC 4 Somador
PC + 4 Desl. 2 bits Inst [25-0] 26 28 32 Caminhos abordados anteriormente Componentes de cada classe Linhas de controle adicionais Multiplexadores (caminhos compartilhados)
nico perodo de clock projeto monociclo
Mostre como combinar o caminho de dados do passo de busca com o do passo de execuo das intrues lgicas e aritmticas e de acesso memria. Utilize multiplexadores e no duplique os elementos comuns. Instrues Lgicas e Aritmticas e de Acesso Memria Memria de Dados Extenso de sinal 1 M U X 0 0 M U X 1 Endereo Dado lido Dado escrito Dado escrito Banco de Registradores Dado #2 Dado #1 Reg #1 Reg #2 Reg escrito ALU Resultado Zero Instruo Operao da ALU EscReg LerMem EscMem MemReg ALUFonte
16 32 3 0 M U X 1 RegDest Busca e Instrues Lgicas e Aritmticas e de Acesso Memria Endereo Memria de Instrues Instruo [31-0] PC Extens. sinal 1 M U X 0 0 M U X 1 Desl. 2 bits 0 M U X 1 4 Somador
Somador
Endereo Dado lido Dado escrito Memria de Dados Dado escrito Banco de Registradores Dado #2 Dado #1 Reg #1 Reg #2 Reg escrito ALU Resultado Zero Operao da ALU LerMem EscMem MemReg EscReg ALUFonte FontePC 3 32 16 0 M U X 1 Controla o caminho de dados Sinais de entrada gera sinais para elementos de estado seletores dos multiplexadores sinais de controle da ALU Controle da ALU: 3 entradas 2 3 possveis sadas 3 possibilidades Entrada da ALU Funo 000 AND 001 OR 010 soma 110 subtrao 111 set less than
Campo de Controle ALUOp 00 soma 01 subtrao 10 campo func ALUOp (2 bits) + campo func (6 bits) muitas combinaes Combinaes relevantes ao controle da ALU
ALUOp func Operao bit 1 bit 0 F5 F4 F3 F2 F1 F0 da ALU 0 0 x x x x x x 010 x 1 x x x x x x 110 1 x x x 0 0 0 0 010 1 x x x 0 0 1 0 110 1 x x x 0 1 0 0 000 1 x x x 0 1 0 1 001 1 x x x 1 0 1 0 111 Controle do caminho de dados dependendo do formato das instrues, a UC responsvel por gerar os valores para cada um dos sinais (linhas de controle) Controle ALUOp bit 1 bit 0 F5 F4 F3 F2 F1 F0 RegDest DvC LerMem MemParaReg ALUOper EscMem ALUFonte EscReg Desl. 2 bits 0 M U X 1 Somador
ALU Resultado
Zero Controle RegDest DvC LerMem MemParaReg ALUOper EscMem ALUFonte EscReg PC + 4 Desl. 2 bits { func ALUOp Tabela verdade sinais de sada da UC Inst RegDest ALUFonte MemReg EscReg LerMem EscMem DvC ALUOp R 1 0 1 1 0 0 0 10 lw 0 1 1 1 1 0 0 00 sw x 1 x 0 0 1 0 00 beq x 0 x 0 0 0 1 01 j x 0 x 0 0 0 0 xx Mostre como a tabela verdade para a funo de controle associada ao cdigo das instrues lgicas e aritmtica, de acesso memria e desvio condicional e incondicional. Endereo Memria de Instrues Instruo [31-0] PC 0 M U X 1 Inst. [25-21] Inst. [20-16] Inst. [15-11] Extenso de sinal Inst. [15-0] 1 M U X 0 0 M U X 1 Desl. 2 bits 0 M U X 1 4 Somador
Somador
Endereo Dado lido Dado escrito Memria de Dados Dado escrito Registradores Dado #2 Dado #1 Reg #1 Reg #2 Reg escrito ALU Resultado
Zero Controle RegDest DvC LerMem MemReg ALUOp EscMem ALUFonte EscReg Oper ALU Inst. [5-0] 1 M U X 0 26 28 32 DvI Desl. 2 bits
Inst. [31-26] Classe Unidades Funcionais Usadas Tempo Tipo R MI(2) BR(1) ALU(2) BR(1) 6s lw MI(2) BR(1) ALU(2) MD(2) BR(1) 8s sw MI(2) BR(1) ALU(2) MD(2) 7s beq MI(2) BR(1) ALU(2) 5s j MI(2) 2s
Qual o efeito de manter em 0 lgico todos os sinais de controle dos multiplexadores no caminho de dados completo do projeto monociclo? Alguma instruo ainda continua funcionando? Elabore um raciocnio semelhante considerando agora com todos os sinais em 1 lgico. Considere as seguintes unidades funcionais e seus respectivos tempos de retardo para a nossa implementao monociclo. MI = 2 ns ALU = 2 ns BR = 1ns Somador (PC + 4) = X ns MD = 2 ns Somador do desvio condicional = Y ns Qual seria o perodo de clock caso: X = 3 e Y = 5; X = 5 e Y = 5; e X = 1 e Y = 8. Execuo de cada instruo uma srie de passos Cada passos operaes das unidades funcionais Implementao cada passo de execuo = 1 perodo de clock unidades funcionais utilizadas mais de uma vez por instruo reduz a quantidade de hardware necessrio
Vantagens executar instrues em quantidades diferentes de perodos de clock compartilhamento de unidades funcionais Viso abstrata Endereo Memria Instruo ou Dado PC Dado escrito Dado escrito Registradores Dado #2 Dado #1 Reg #1 Reg #2 Reg escrito ALU IR MDR A B R Diferenas: uso de uma nica memria para instrues e dados referncia a uma nica ALU um ou mais registradores depois de cada unidade funcional armazena temporariamente o resultado calculado para ser utilizado em um ciclo de clock subseqente
A posio no caminho de dados dos registradores adicionais determinada por dois fatores: quais dados sero usados em ciclos de clock posteriores na execuo da instruo quais as unidades funcionais cujo uso ficar restrito a um nico ciclo de clock Ciclo de clock compatvel com: acesso memria, banco de registradores ou operao da ALU Dado produzido por estas unidades funcionais deve ser armazenado em registradores (IR, MDR, A, B, e R) Sinal de controle de escrita de IR mantm instruo durante toda sua execuo Demais registradores no precisam de sinal de controle armazenam dados somente entre dois ciclos de clock Compartilhamento novos multiplexadores ou expandir os j existentes Memria endereo de acesso (2x1) PC (instruo) Registrador (dado) ALU dois multiplexadores Primeira entrada (2x1) Registrador A PC Segunda entrada (4x1) Registrador B Constante 4 valor resultante da extenso de sinal valor para o clculo do endereo alvo de desvio condicional Endereo Memria Instruo ou Dado PC Dado escrito Dado escrito Registradores Dado #2 Dado #1 Reg #1 Reg #2 Reg escrito ALU IR MDR A B R Zero Controle ALU 0 1 0 1 0 1 0 1 Ext sinal Desl 2 bits 0 1 2 3
IouD MemReg ALUOp FonteALU_A FonteALU_B LerMem EscMem IREsc EscReg RegDest 4 Suporte para desvios condicionais e incondicionais 3 fontes para PC ALU PC + 4 no passo de busca R endereo alvo de desvio condicional calculado pela ALU (IR[25-0] << 2 bits) | (4 bits mais significativos PC + 4) endereo alvo de desvio incondicional Escrita no PC durante um incremento normal desvios incondicionais se instruo de desvio condicional e se a condio for verdadeira Controle de escrita 2 sinais PCEsc PCEscCond Portas lgicas obteno do sinal de escrita Combinando os 3 sinais PCEsc PCEscCond Zero AND entrada (Zero . PCEscCond) sada para porta OR (Zero. PCEscCond) OR entrada (sada AND + PCEsc) sada controle de escrita do PC Endereo Memria Instruo ou Dado PC Dado escrito Dado escrito Registradores Dado # 2 Dado # 1 Reg #1 Reg #2 Reg escrito ALU IR MDR A B R Zero Controle ALU 0 1 0 1 0 1 Ext sinal Desl 2 bits 0 1 2 3
IouD MemReg ALUOp FonteALU_A FonteALU_B LerMem EscMem IREsc EscReg RegDest PCEscCond PCEsc 0 1 2 FontePC Desl 2 bits 4 0 1 Sinais de Controle 1 bit Sinal Inativo Ativo RegDest seleciona rt seleciona rd EscReg - Reg geral carregado com dado escrito FonteALU_A operando o PC operando o A LerMem - Contedo da memria colocado na sada EscMem - carrega dado na memria MemReg dado vem de R dado vem do MDR IouD PC usado para fornecer endereo R usado para fornecer endereo IREsc - Sada da memria escrita no IR PCEsc - PC atualizado PCEscCond - PC atualizado se sada Zero estiver ativa Sinais de Controle 2 bits Sinal Combinaes Significado ALUOp 00 soma 01 subtrao 10 depende do campo func FonteALU_B 00 operando o B 01 operando a constante 4 10 operando vem da extenso de sinal IR 11 operando vem da extenso de sinal IR + 2 bits FontePC 00 PC + 4 enviado ao PC 01 endereo alvo de desvio produzido pela ALU (DvC) 10 endereo alvo de desvio enviado ao PC (DvI) Definida por: sinais de controle e seus valores Melhora no desempenho diferentes quantidades de ciclos de clock por instruo Ciclo de clock operao da ALU, acesso memria ou ao banco de registradores Tamanho do ciclo = maior tempo de retardo Cada instruo 3 a 5 passos de execuo Busca, decodificao, execuo, resultado IR = Memria[PC]; PC = PC + 4; Sinais envolvidos LerMem 1 FonteALU_B 01 IREsc 1 ALUOp 00 I ou D 0 PCEsc 1 FonteALU_A 0 FontePC 00
Acesso ao registrador, se necessrio Somente aes aplicveis a todas as classes de instrues a) Tipo R A = Reg [IR[25-21]]; B = Reg [IR[20-16]]; b) Desvio condicional R = PC + extenso de sinal (IR[15-0] << 2); Sinais envolvidos Fonte ALU_A 0 (PC) FonteALU_B 11 (extenso de sinal deslocada) ALUOp 00 (soma)
Aps este ciclo de clock a ao a ser realizada depende do contedo da instruo (decodificao). Clculo do endereo de acesso memria Efetivao do desvio incondicional Operao do caminho de dados classe de instruo ALU opera sobre os dados preparados no passo 2 Funo depende da classe de instrues Acesso memria R = A + extenso de sinal (IR[15-0]);
Sinais envolvidos FonteALU_A 1 FonteALU_B 10 (seleciona extenso de sinal) ALUOp 00 (soma) Tipo R R = A op B;
Sinais envolvidos FonteALU_A 1 FonteALU_B 00 (seleciona B) ALUOp 10 (campo func operao) Desvio Condicional Se (A = = B) PC R;
Sinais envolvidos FonteALU_A 1 FonteALU_B 00 (seleciona B) ALUOp 01 (subtrao) PCEscCond 1 FontePC 01 ( PC R) Desvio Incondicional PC PC (IR[31-28] | (IR[25-0] << 2);
Sinais envolvidos EscReg 1 RegDest 0 MemReg 1 Define srie de estados regras de transio entre estados funo prximo estado Projeto multiciclo cada estado corresponde a um dos passos de execuo 2 primeiros estados iguais para todas as instrues Mquina de estados finitos LerMem 1 IouD 0 IREsc 1 FonteALU_A 0 FonteALU_B 01 ALUOp 00 PCESc 1 FontePC 00
Estado 0 Estado 1 Busca Decodificao lw/sw Tipo R Desvio condicional Desvio incondicional FonteALU_A 0 FonteALU_B 11 ALUOp 00
Vem do Estado 1 Op = lw Op = sw FonteALU_A 1 FonteALU_B 10 ALUOp 00
EscMem 1 IouD 1 LerMem 1 IouD 1 EscReg 1 RegDest 0 MemReg 1 Estado 2 Estado 3 Estado 4 Estado 5 Retorna ao Estado 0 Vem do Estado 1 Estado 6 Estado 7 Retorna ao Estado 0 FonteALU_A 1 FonteALU_B 00 ALUOp 10
RegDest 1 EscReg 1 MemReg 0 Vem do Estado 1 Condicional Incondicional PCEsc 1 FontePC 10 Estado 8 Estado 9 Retorna ao Estado 0 Vem do Estado 1 FonteALU_A 1 FonteALU_B 00 ALUOp 01 PCEscCond 1 FontePc 01
1.Mostre como a mquina de estados finitos completa combinando todos os passos de execuo de todas as classes de instrues abordadas.
2. Acrescente ao caminho de dados multiciclo a instruo addi. Verifique a necessidade de algum componente de hardware adicional e sinais de controle. Mostre as modificaes necessrias na mquina de estados finitos. 3. Considere o mesmo enunciado da questo anterior e acrescente a instruo jal (jump and link) ao projeto multiciclo.
4. Mostre como a instruo jr (jump register) pode ser implementada simplesmente com algumas modificaes na mquina de estados finitos completa (lembre-se que $zero = 0 e est mapeado no registrador $0).