Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura e Organização de Computadores I Aula 15 Prof. Fábio Ramos Arquitetura e Organização de Computadores I • Tópicos a serem abordados na aula de hoje 1. Exercícios de implementação de instruções Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Implementar, nas organizações monociclo e multiciclo (dizer quantos ciclos ela demora também), as seguintes instruções: • slt (set on less than). • bne (branch on not equal). • addi (soma com imediato). • sll (shift left logical). – Instruções: • Qualquer nova operação aritmética e lógica pode ser acrescentada na ULA, se for necessária. • Qualquer componente já existente pode ser aumentado ou replicado. • Caso o controle exija mudança, explicitar quais sinais e estados (organização multiciclo) devem ser acrescidos. – No caso do monociclo, indicar que valores os sinais de controle devem possuir. – No caso do multiciclo, se precisar acrescentar estados novos ou novos caminhos, explicitar. – Se a mudança for no controle da ULA, indicar isso na tabela do controle da ULA. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Formato das instruções: 31 26 25 21 20 16 15 11 10 6 5 0 opcode rs rt rd shamt functInstrução tipo R: Instrução tipo I : 31 26 25 21 20 16 15 0 opcode rs rt deslocamento Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Assembly e linguagem de máquina: 31 26 25 21 20 16 15 11 10 6 5 0 0 18 19 17 0 42slt $s1, $s2, $s3: bne $s1, $s2, 100: 31 26 25 21 20 16 15 0 5 17 18 25 addi $s1, $s2, 100: 31 26 25 21 20 16 15 0 8 18 17 100 31 26 25 21 20 16 15 11 10 6 5 0 0 0 18 17 10 0sll $s1, $s2, 10 Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Controle da ULA: ULAOp Classe de instrução ULA deve realizar 00 lw/sw adição 01 beq subtração 10 tipo R depende do campo “funct” 11 - - Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst [15-0] M U X 0 1 ULAFonte LerMem EscMem Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp DvC 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI MIPS monociclo Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções MIPS multiciclo 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscCond PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] Arquitetura e Organização de Computadores I ULAFonteA = 1 ULAFonteB = 00 ULAOp = 01 PCEscCond = 1 PCEsc = 0 FontePC = 01 Término do desvio condicional 8 ULAFonteA = 1 ULAFonteB = 10 ULAOp = 00 Cálculo do endereço de acesso à memória 2 3 4 5 LerMem = 1 IouD = 1 EscMem = 1 IouD = 1 EscReg = 1 MemParaReg = 1 RegDst = 0 Acesso à memória Acesso à memória Escrita no registrador Rt Op = ‘lw’ Op = ‘sw’ ULAFonteA = 1 ULAFonteB = 00 ULAOp = 10 Execução 6 7 RegDst = 1 EscReg = 1 MemParaReg = 0 Término da instrução tipo R (escrita em Rd) PCEsc = 1 FontePC = 10 Término do desvio incondicional 9 ULAFonteA = 0 ULAFonteB = 11 ULAOp = 00 LerMem = 1 ULAFonteA = 0 IouD = 0 IREsc = 1 ULAFonteB = 01 ULAOp = 00 PCEsc = 1 FontePC = 00 Busca da instrução 0 Decodificação da instrução/ Leitura dos registradores Rs e Rt 1 início O p = ‘j u m p ’ Controle MIPS multiciclo Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para o slt, vamos considerar que a ULA entrega um outro sinal, chamado de Negativo. • Ou seja, se o valor gerado na operação da ULA for negativo, o sinal Negativo tem o valor 1. • E, caso contrário, tem o valor 0. Zero Resultado ULA Controle da ULA 3 32 32 32 Negativo Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Olhando para a organização monociclo, podemos usar o resultado do sinal Negativo para escrever de volta no registrador-destino. • Concatenando o seu valor com zeros nas 31 posições mais significativas, enquanto a posição menos significativa terá o valor de Negativo. – E esse resultado deve ser agregado no MUX que define a entrada do dado a ser escrito no banco de registradores. – Outra opção é considerar essa operação interna à ULA (que é o que faremos no multiciclo). Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Controle da ULA modificado para slt: ULAOp Classe de instrução ULA deve realizar 00 lw/sw adição 01 beq subtração 10 tipo R depende do campo “funct” 11 - - Podemos usar o mesmo sinal de ULAOp de instruções do tipo R, mas temos que indicar que a ULA deve suportar essa nova operação. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 1 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst = 1 [15-0] M U X 0 1 ULAFonte = 0 LerMem = 0 EscMem = 0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg = 10 Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 10 DvC = 0 3 Zero ULA Resultado 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 Negativo 2 Concate nação 32 Implementação de slt Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePCReg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 1 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst [15-0] M U X 0 1 ULAFonte = 0 LerMem EscMem Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg = 10 Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 10 DvC 3 Zero ULA Resultado 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI Negativo 2 Concate nação 32 Implementação de slt Poderíamos ter considerado que a lógica em destaque está integrada interna a ULA (vamos usar esse raciocínio no multiciclo). Como podemos utilizar uma subtração, a operação na ULA irá corresponder ao 10 (ou seja, vai depender de funct, visto que slt é tipo R). Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para implementar a slt no multiciclo, basicamente já temos tudo o que precisamos. • Só necessitamos que a ULA gere automaticamente o valor a ser colocado no registrador ULASaída. – Ou seja, vamos ter que criar uma nova operação na ULA. – Isso vai implicar em uma mudança no controle da ULA, que não precisa ser explicitada. • O controle global continua o mesmo. – A instrução vai necessitar 4 ciclos. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscCond PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] Implementação de slt Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscCond PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] A ULA possui uma nova operação, onde o resultado gerado caso um valor seja menor que o outro será 31 bits com zero, seguido por um bit 1. Caso contrário, 32 bits com 0s. O controle da ULA precisará informar para ULA que a nova operação será efetuada Implementação de slt Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para o bne, temos quase tudo o que necessitamos em ambas organizações. • Basicamente iremos fazer o desvio se o sinal Zero da ULA tiver o valor 0 após uma subtração entre os valores em registradores. – Vamos precisar diferenciar entre os dois desvios condicionais. • Ou seja, para o monociclo, vamos quebrar o sinal DvC em DvCe (para beq) e DvCne (para bne). • E então teremos que respeitar uma das seguintes condições: – Se DvCe = ‘1’ e Zero = ‘1’, fazemos o desvio. – Se DvCne = ‘1’ e Zero = ‘0’, também faremos o desvio. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Controle da ULA modificado para bne: ULAOp Classe de instrução ULA deve realizar 00 lw/sw adição 01 beq/bne subtração 10 tipo R depende do campo “funct” 11 - - Podemos usar o mesmo sinal de ULAOp usado em beq, pois necessitamos de uma subtração. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 0 Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst [15-0] M U X 0 1 ULAFonte = 0 LerMem = 0 EscMem = 0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 01 DvCe = 0 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 DvCne = 1 Implementação de bne Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 0 Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst [15-0] M U X 0 1 ULAFonte = 0 LerMem = 0 EscMem = 0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 01 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 Os dois sinais acrescentados Essa estrutura vai representar as duas condições para os desvios condicionais Implementação de bne DvCne = 1 DvCe = 0 Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Já no multiciclo, vamos quebrar o sinal PCESCCond em PCEscConde (para o beq) e PCEscCondne (para o bne), e teremos uma das duas condições para o branch ocorrer: • Se PSEscConde = ‘1’ e Zero = ‘1’. • Ou se PSEscCondne = ‘1’ e Zero = ‘0’. – O controle vai necessitar de um outro estado, para setar o PSEEscCondne. • A instrução bne vai continuar levando os mesmo 3 ciclos do beq. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscConde PCEsc MemParaRegULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] PCEscCondne Implementação de bne Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções Implementação de bne 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscConde PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] PCEscCondne Os dois sinais acrescentados Essa estrutura vai representar as duas condições para os desvios condicionais Arquitetura e Organização de Computadores I ULAFonteA = 1 ULAFonteB = 00 ULAOp = 01 PCEscConde = 1 PCEscCondne = 0 PCEsc = 0 FontePC = 01 Término do desvio condicional 8 ULAFonteA = 1 ULAFonteB = 10 ULAOp = 00 Cálculo do endereço de acesso à memória 2 3 4 5 LerMem = 1 IouD = 1 EscMem = 1 IouD = 1 EscReg = 1 MemParaReg = 1 RegDst = 0 Acesso à memória Acesso à memória Escrita no registrador Rt Op = ‘lw’ Op = ‘sw’ ULAFonteA = 1 ULAFonteB = 00 ULAOp = 10 Execução 6 7 RegDst = 1 EscReg = 1 MemParaReg = 0 Término da instrução tipo R (escrita em Rd) PCEsc = 1 FontePC = 10 Término do desvio incondicional 9 ULAFonteA = 0 ULAFonteB = 11 ULAOp = 00 LerMem = 1 ULAFonteA = 0 IouD = 0 IREsc = 1 ULAFonteB = 01 ULAOp = 00 PCEsc = 1 FontePC = 00 Busca da instrução 0 Decodificação da instrução/ Leitura dos registradores Rs e Rt 1 início O p = ‘j u m p ’ ULAFonteA = 1 ULAFonteB = 00 ULAOp = 01 PCEscCondne = 1 PCEscConde = 0 PCEsc = 0 FontePC = 01 10 Modificações no controle do multiciclo para bne Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para implementar a soma imediata, teremos que usar o valor imediato como um dos operandos na ULA. • Isso já é feito nas instruções de lw e sw, que também realizam uma soma. – Ou seja, a organização já está pronta para essas instruções. • Basta modificar o controle global de ambas organizações, monociclo e multiciclo. – No multiciclo, essa operação vai levar os mesmo 4 ciclos de instruções tipo R. • Vamos ter que acrescentar um estado a mais, vindo do estado 2. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Controle da ULA modificado para addi: ULAOp Classe de instrução ULA deve realizar 00 lw/sw/addi adição 01 beq/bne subtração 10 tipo R depende do campo “funct” 11 - - Coincidentemente, podemos usar a opção 00 de ULAOp, pois vamos precisar de uma adição com operando imediato, assim como em lw e sw. Se fosse um ori ou andi, precisaríamos usar o código 11. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 1 Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst = 0 [15-0] M U X 0 1 ULAFonte = 1 LerMem = 0 EscMem = 0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg = 1 Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 00 DvC = 0 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 Implementação de addi Arquitetura e Organização de Computadores I ULAFonteA = 1 ULAFonteB = 00 ULAOp = 01 PCEscCond = 1 PCEsc = 0 FontePC = 01 Término do desvio condicional 8 ULAFonteA = 1 ULAFonteB = 10 ULAOp = 00 Cálculo do endereço de acesso à memória 2 3 4 5 LerMem = 1 IouD = 1 EscMem = 1 IouD = 1 EscReg = 1 MemParaReg = 1 RegDst = 0 Acesso à memória Acesso à memóriaEscrita no registrador Rt Op = ‘lw’ Op = ‘sw’ ULAFonteA = 1 ULAFonteB = 00 ULAOp = 10 Execução 6 7 RegDst = 1 EscReg = 1 MemParaReg = 0 Término da instrução tipo R (escrita em Rd) PCEsc = 1 FontePC = 10 Término do desvio incondicional 9 ULAFonteA = 0 ULAFonteB = 11 ULAOp = 00 LerMem = 1 ULAFonteA = 0 IouD = 0 IREsc = 1 ULAFonteB = 01 ULAOp = 00 PCEsc = 1 FontePC = 00 Busca da instrução 0 Decodificação da instrução/ Leitura dos registradores Rs e Rt 1 início O p = ‘j u m p ’ Op = ‘addi’ Modificações no controle do multiciclo para addi RegDst = 0 EscReg = 1 MemParaReg = 0 10 Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para a instrução sll, vamos pensar um pouco: • Essa operação não existe na nossa ULA atual (deslocamento para a esquerda de n bits), ou seja, teremos que acrescentar essa operação. – A instrução sll é tipo R, entretanto ela faz uso de um operando imediato ao invés de um registrador: • O campo shamt, que está nos bits [10:6] da instrução. – Isso implicará em uma nova entrada no mux da entrada 2 da ULA. • Outro problema, o registrador a ser lido está no campo onde geralmente temos uma saída multiplexada. – Que gostaríamos de usar para a entrada imediata do shamt, comentada acima. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Controle da ULA modificado para sll: ULAOp Classe de instrução ULA deve realizar 00 lw/sw/addi adição 01 beq/bne subtração 10 tipo R depende do campo “funct” 11 - - Podemos usar o mesmo sinal de ULAOp de instruções do tipo R, mas temos que indicar que a ULA deve suportar essa nova operação. RegSrc = 1 Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 1 Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst = 1 [15-0] M U X 0 1 ULAFonte = 10 LerMem = 0 EscMem =0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg = 1 Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 10 DvC = 0 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 Implementação de sll 2 [10-6] M U X 0 1 RegSrc = 1 Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 26Endereço Instrução lida Memória de Instruções PC + 4 + Desl. à esq. 2 bits M U X 0 1 FontePC Reg a ser lido #1 Reg a ser lido #2 Reg a ser escritoDado de escrita Dado lido #1 Dado lido #2 Registradores EscReg = 1 Zero Resultado ULA 3 Exten- são de sinal 3216 [25-21] [20-16] [15-11] M U X 0 1 RegDst = 1 [15-0] M U X 0 1 ULAFonte = 10 LerMem = 0 EscMem =0 Endereço Dado lido Dado a ser escrito Memória de dados M U X 0 1 MemParaReg = 1 Controle [31-26] Opera- ção da ULA 2 [5-0] 6 ULAOp = 10 DvC = 0 32 Desl. à esq. 2 bits 26 28 PC+4[31-28] M U X 1 0 DVI = 0 Implementação de sll 2 [10-6] M U X 0 1 Sinal adicionado para o novo mux Sinal aumentado para dois bits por causa da nova entrada no mux Nova entrada vinda de outra fonte na instrução sll ULA deve suportar uma nova instrução. Controle precisa ser modificado para a nova operação. Necessário extensor de sinal (implícito na figura Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções – Para a implementação de sll no multiciclo, vamos ter os mesmos problemas. • Vamos tentar uma saída diferente, colocando uma entrada a mais no mux da entrada A. – De onde virá o operando imediato (quantidades de bits a ser deslocado para esquerda). – Depois precisamos adicionar um estado a mais no controle, para executar o sll. • Na verdade, em outros estados, teremos que adicionar o bit extra no sinal ULAFonteA. – Teremos 4 ciclos para essa instrução. Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp ULAFonteA FontePCPCEscCond PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] [10-6] 2 2 Implementação de sll ULAFonteA Arquitetura e Organização de Computadores I • Exercícios de implementação de instruções 32 Endereço DadoMem Memória PC Dado a ser escrito M U X 0 1 Zero Resultado ULA Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Registrador de instrução Registrador de dados da memória A B ULA Saída 32 [25-21] [20-16] [15-11] M U X 0 1 [15-0] M U X 0 1 M U X 0 1 2 3 M U X 0 1 Exten- são de sinal Desl. à esq. 2 bits 4 3216 IouD LerMem EscMem IREsc Opera- ção da ULA 2 6 32 [5-0] EscReg RegDst Controle ULAOp FontePCPCEscCond PCEsc MemParaReg ULAFonteB 2 Desl. à esq. 2 bits M U X 0 1 2 26 [25-0] 26 28 4 2 [31-28] [31-0] [10-6] 2 Caminho de dados acrescentado ao mux da entrada A da ULA Sinal de controle passa a ter dois bits 2 Implementação de sll ULA passa a executar o deslocamento para a esquerda Controle da ULA precisa suportar a nova operação Arquitetura e Organização de Computadores I ULAFonteA = 01 ULAFonteB = 00 ULAOp = 01 PCEscCond = 1 PCEsc = 0 FontePC = 01 Término do desvio condicional 8 ULAFonteA = 01 ULAFonteB = 10 ULAOp = 00 Cálculo do endereço de acesso à memória 2 3 4 5 LerMem = 1 IouD = 1 EscMem = 1 IouD = 1 EscReg = 1 MemParaReg = 1 RegDst = 0 Acesso à memória Acesso à memória Escrita no registrador Rt Op = ‘lw’ Op = ‘sw’ ULAFonteA = 01 ULAFonteB = 00 ULAOp = 10 Execução 6 7 RegDst = 1 EscReg = 1 MemParaReg = 0 Término da instrução tipo R (escrita em Rd) PCEsc = 1 FontePC = 10 Término do desvio incondicional 9 ULAFonteA = 00 ULAFonteB = 11 ULAOp = 00 LerMem = 1 ULAFonteA = 00 IouD = 0 IREsc = 1 ULAFonteB = 01 ULAOp = 00 PCEsc = 1 FontePC = 00 Busca da instrução 0 Decodificação da instrução/ Leitura dos registradores Rs e Rt 1 início O p = ‘j u m p ’ ULAFonteA = 10 ULAFonteB = 00 ULAOp = 10 10 Modificações no controle do multiciclo para sll
Compartilhar