Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Aula 2: Revisão – MIPS Monociclo Professor: Leandro Marzulo Arquiteturas Avançadas de Computadores Conjunto de Instruções RISC – Reduced Instruction Set Computer Poucas instruções Acesso a memória somente via load/store Formato regular Controle mais simples Tamanho de código maior (tanto em bytes quanto em quantidade de instruções) Mais cargas de instrução e mais decodificações (mais instruções) 2 Conjunto de Instruções CISC – Complex Instruction Set Computer Muitas instruções (específicas) Instruções que acessam dados diretamente na memória (não somente via registradores) Formato irregular Controle mais complexo Tamanho de código menor (tanto em bytes quanto em quantidade de instruções) Menos cargas de instrução e menos decodificações (menos instruções) 3 Conjunto de Instruções do MIPS RISC Lógica e aritmética: add, addi, sub, subi, and, or, slt Memória: lw, sw Fluxo de controle: beq, j op rs rt offset 6 bits 5 bits 5 bits 16 bits op rs rt rd funct shamt 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits R-Format I-Format op address 6 bits 26 bits J-Format 0 6 5 11 10 16 15 21 20 26 25 31 4 Implementações Monociclo 1 instrução por ciclo de clock Ciclo deve ser longo o suficiente para acomodar a instrução mais lenta – Gargalo! Multiciclo Cada instrução é executada em múltiplas etapas (ex: busca, decodificação, execução, acesso a memória e escrita de resultado) Cada etapa leva 1 ciclo O tempo do ciclo deve acomodar a etapa mais longa Uma instrução pode levar menos ciclos que outras (usar apenas as etapas necessárias) Pipelined Executa cada instrução em múltiplas etapas (como no multiciclo) Cada etapa executa uma instrução diferente – etapas em paralelo – como em uma linha de montagem 5 ALUOp ALUSrc MemReg Implementação Monociclo Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite 6 ALUOp ALUSrc MemReg Implementação Monociclo Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite 7 1 0 10 0 0 0 0 0 1 ALUOp ALUSrc MemReg Instruções do tipo R Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle e os números dos registradores de leitura para o banco de registradores. É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=0) A operação é executada na ALU de acordo com o campo funct (ALUOP=10) O resultado é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RD (MemReg=0, RegWrite=1 e Regdest=1) MemRead=0 e MemWrite=0 pois não fazemos uso da memória. PC+4 é gravado em PC (Jump=0 e Branch=0) 1 1 00 0 0 0 0 0 0 ALUOp ALUSrc MemReg Subi, Addi – Tipo I Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle, o número do registrador de leitura (RS) para o banco de registradores e o imediato para ALU (com extensão de sinal) É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1) A operação é executada na ALU de acordo com o opcode(ALUOP=00 para soma ou 01 para subtração) O resultado é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RT (MemReg=0, RegWrite=1 e Regdest=0) MemRead=0 e MemWrite=0 pois não fazemos uso da memória. PC+4 é gravado em PC (Jump=0 e Branch=0) 1 1 00 1 0 1 0 0 0 ALUOp ALUSrc MemReg LW– Tipo I Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle, o número do registrador de leitura (RS – end base) para o BR e o deslocamento para ALU (com extensão de sinal) É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1) O endereço base e o deslocamento são somados na ALU (ALUOP=00) É feita a leitura na memória, usando o endereço calculado (MemRead=1 e MemWrite=0). O resultado da leitura é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RT (MemReg=1, RegWrite=1 e Regdest=0) PC+4 é gravado em PC (Jump=0 e Branch=0) 0 1 00 X 1 0 0 0 X ALUOp ALUSrc MemReg SW– Tipo I Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle, o número do regs de leitura (RS – end base e RT – dado de escrita) para o BR e o deslocamento para ALU (com ext de sinal) É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1) O endereço base e o deslocamento são somados na ALU (ALUOP=00) É feita a escrita na memória, usando o endereço calculado e o Dado lido de RT (MemRead=0 e MemWrite=1). Não é feita escrita no Banco de Registradores (MemReg=X, RegWrite=0 e Regdest=X) PC+4 é gravado em PC (Jump=0 e Branch=0) 0 0 01 X 0 0 1 0 X ALUOp ALUSrc MemReg BEQ – Tipo I Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle e os número dos registradores de leitura (RS e RT) para o banco de registradores É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=0) A ALU subtrai os valores para saber se são iguais, se isso ocorrer, o resultado será zero (ALUOP=01) MemRead=0 e MemWrite=0 pois não fazemos uso da memória. RegWrite=0 pois não escrevemos em registradores (logo, RegDest=X e MemReg=X) PC+4 ou Delocamento*4 + PC+4 é gravado em PC, dependendo da saída Zero da ALU (Jump=0 e Branch=1) 0 X XX X 0 0 0 1 X ALUOp ALUSrc MemReg J – Tipo J Add Zero Result . Read address Instruction [31 – 0] Instruction Memory Address Read Data Data Memory Write Data Read Register 1 Read Data 1 Read Register 2 Read Data 2 Write Register Register File Write Data PC 4 0 1 Control Instruction [31-26] Instruction [15-11] Instruction [20-16] 0 1 Sign Extend Instruction [15-0] Instruction [25-21] 16 0 1 32 ALU Ctl 1 0 Shift Left 2 Add Instruction [5-0] Shift Left 2 Instruction [25-0] 26 1 0 28 PC+4 [31-28] 32 Jump Address [31-0] RegDest Jump Branch MemRead MemWrite 2 RegWrite Instrução é carregada, usando o PC... O opcode é passado para a unidade de controle e o endereço do desvio é passado para o shifter Os 4 bits mais significativos de PC+4 são concatenados com o endereço do desvio e armazenados em PC (Jump=1 e Branch=0) Não é necessário ler/escrever no BR, usar a ALU ou ler/escrever na memória (RegWrite=0, MemRead=0, MemWrite=0, RegDest=X, MemReg=X, ALUSrc=X, ALUOP=XX) 13 Contatos 14 leandro@ime.uerj.br lmarzulo@cos.ufrj.br leandro.marzulo@gmail.com
Compartilhar