Prova G2 Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans .data 0x1E20FFF9 seis palavras da memória de programa

Documentos relacionados
Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans

Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans

Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans

Número de Linha. Código objeto

1. uins.ce <= '1' when i=sw or i=lw else '0'; 2. uins.rw <= '0' when i=sw else '1'; 3. uins.wreg <= '0' when i=sw else '1';

datapath adrt adrd uins.i ext_sinal ext_0

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans lui+ori syscall 1. .text 2. main: $s0, string 3.

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

Dicas: Nas linhas 7 e 8 as constantes imediatas são especificadas como caracteres ASCIIE, o que é aceito pelo montador MARS.

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans. Lista de associação de números e mnemônicos para os registradores do MIPS

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

66 [2] 0x x c

instruction uins.i add AdWP instruction Memória de ext_sinal ext_0

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

[1] $2,$0,$3 105 [2] 0x004000e8

Sistemas de Computação. Instruções de Linguagem de Máquina

1: 2: 2, [1] [2] 0x x3c011001

Implementação de um Subconjunto Multi-Ciclo do Processador MIPS

Guia Rápido MIPS. Tipos de Dados e Formatações

SSC0114 Arquitetura de Computadores

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Arquitetura de Computadores

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 07/outubro/2009

SSC0611 Arquitetura de Computadores

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

MIPS_Monociclo. instruction instr add AdWP. wreg instruction. Memória de

Sistemas Processadores e Periféricos Aula 2 - Revisão

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Implementação Multi-Ciclo

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

Questionário Arquitetura e Organização de Computadores

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

4. Modelo de Programação do DLX Introdução

Relembrando desempenho...

Relembrando desempenho...

Infraestrutura de Hardware. Instruindo um Computador

Organização de Computadores

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Especificação do Projeto de Processador RISC

PROCESSADOR MULTI-CICLO MR2

Operações Aritméticas e Lógicas e Avaliação de Condições

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Exercícios resolvidos (aula de 4 de Maio) Resolução:

ção de Computadores II

Organização e Arquitetura de Computadores I

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Conjunto de Instruções MIPS Parte IV

Computador Cleópatra

PROCESSADOR MULTI-CICLO MR3

Organização de Unidades de Processamento

Sumário. Aula Anterior. Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits.

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

PROCESSADOR MULTICICLO MIPS-S

UCP: Construindo um Caminho de Dados (Parte I)

CPU Implementação. Multiciclo. Prof. Carlos Bazilio

Sistemas de Computação Gabarito - Lista 2

Arquitectura de Computadores ARQC MIPS. Serviços de Sistemas Exemplos. Serviços de Sistema

Arquiteturas de Computadores

Infra-estrutura de Hardware

MIPS. Prof. Carlos Bazilio

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Escreva um programa em código assembly correspondente ao seguinte programa C.

ISA Instruction Set Architecture (Revisão) Na Aula Anterior... Nesta Aula. Conceitos. Tipos de Dados. Tipos de Dados 11/03/2019

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Aritmética Binária e Caminho de Dados. Aritmética Binária Caminho de Dados

ARQUITECTURA DE COMPUTADORES

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans MULTICICLO syscall space syscall addiu 1. .data 2.

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

Faculdade de Computação

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Nível Máquina Formatos de Instruções

Microcontroladores e Interfaces

Arquitetura de Computadores. Linguagem de Máquina

Figura 8 Diagrama de Compilação

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes.

Organização e Arquitetura de Computadores I

AOC II - Arquitetura e Organização de Computadores Prof. Dr. rer. nat. Daniel Duarte Abdala. Lista de Exercícios

Lista de Revisão para a Primeira Avaliação

Introdução da memória de programa

MODOS DE ENDEREÇAMENTO

MIPS ISA (Instruction Set Architecture)

Organização ou MicroArquitectura

Neander - características

Arquitetura de Computadores II MIPS64. Prof. Gabriel P. Silva

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

Computador Cleópatra

SSC510 Arquitetura de Computadores 1ª AULA

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans 0x

Transcrição:

Prova G2 Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans Aluno: 07/dezembro/2012 1. (3,0 pontos) Verdadeiro ou Falso. Abaixo aparem 10 afirmativas. Marque com V as afirmativas verdadeiras e com F as falsas. Se não souber a resposta correta, deixe em branco, pois cada resposta correta vale 0,3 pontos, mas cada resposta incorreta desconta 0,2 pontos do total positivo de pontos. Não é possível que a questão produza uma nota menor do que 0,0 pontos. a) (X) A diretiva de montagem.data aita pelo montador do ambiente MARS tem como efeito alocar um espaço na memória de dados exatamente do tamanho de uma palavra do prossador MIPS, ou seja 4 bytes. b) (X) Pseudo-instruções aitas como válidas pelo montador do ambiente MARS podem gerar uma ou duas instruções do MIPS como resultado de sua tradução durante o prosso de montagem de um programa. c) (X) Uma implementação de hardware completa do prossador MIPS R2000, ao executar uma instrução, deve ser capaz de produzir um dado imediato de 32 bits a partir do código objeto da instrução usando um de pelo menos quatro prossos distintos. d) (X) O bloco de controle de uma implementação de hardware completa do prossador MIPS R2000 precisa analisar apenas os seis bits mais significativos (31 a 26) do código objeto para identificar univocamente de que instrução se trata. e) (X) O modo de endereçamento pseudo-absoluto no MIPS é usado exclusivamente em instruções de salto para subrotina. f) (X) O código objeto 0x1E20FFF9 corresponde a uma instrução de salto condicional que, quando saltar, o faz para uma instrução que está exatamente seis palavras da memória de programa acima do salto. g) (X) A definição do número de portas de entrada e saída do banco de registradores do MIPS é estabelecida pela arquitetura do conjunto de instruções deste. Como existem instruções que manipulam até três registradores, o banco de registradores de qualquer organização do MIPS precisa ter no mínimo três portas de asso para leitura e/ou escrita. h) (X) A instrução SLT $t0, $t1, $t2 é uma instrução de controle de fluxo de execução de instruções. i) (X) O modo de endereçamento base-deslocamento é a única maneira que instruções do prossador MIPS usam para especificar endereços de asso à memória de dados. j) (X) Somente existem instruções na arquitetura MIPS R2000 que escrevem em 0 ou 1 registrador do banco. Nenhuma instrução escreve em 2 ou mais registradores. 2. (2,0 pontos) Considere as linhas abaixo, que contêm parte do VHDL da MIPS multiciclo/ Elas possuem a definição do sinal ads que corresponde ao conjunto de fios que gera o endereço da porta superior de leitura do banco de registradores. Pede-se: a) Assuma que as instruções da MIPS multiciclo são codificadas em 6 bits com valores na faixa de 000000 a 100000, na ordem dada na Questão 3 abaixo. A partir deste pressuposto, defina os códigos associados às instruções SLL, SRA e SRL. b) Usando os códigos definidos no item a), desenhe um diagrama que use apenas portas lógicas e multiplexadores, refletindo um circuito correto que pode resultar da compilação deste código VHDL. M3: ads <= IR(20 downto 16) when =SSLL or =SSRA or =SSRL else IR(25 downto 21);

3. (2,0 pontos) Considere o bloco de dados da MIPS multiciclo abaixo (sem multiplicação nem divisão), que implementa parte de um prossador que dá suporte a uma versão parcial da arquitetura do conjunto de instruções do prossador MIPS. Suponha que o multiplexador M4 estragou, e que seu defeito é, independente do valor do sinal de controle, sempre deixar passar sua entrada superior (IR(15 downto 11)) para a saída. Diga qual/quais das instruções deste prossador ainda executa(m) corretamente com esta falha atuando, e justifique sua resposta. Lembre-se que as instruções da MIPS multiciclo são as seguintes: ADDU, SUBU, AND, OR, XOR, NOR, SLL, SLLV, SRA, SRAV, SRL, SRLV, ADDIU, ANDI, ORI, XORI, LUI, LBU, LW, SB, SW, SLT, SLTU, SLTI, SLTIU, BEQ, BGEZ, BLEZ, BNE, J, JAL, JALR e JR. dtpc M1 D rpc Q uins.wpc 4 + pc=i_address address data Memória de Instruções incpc RNPC instruction uins.cy1 RIR uins.cy1 ir=ir_out 25..0 npc RIN 25..21 RD 20..16 M3 AdRs op1 R1 M6 RA R1 D 20..16 AdRt RS A 15..11 REGS L 20..16 M4 AdRd op2 U 11111 R2 RB R2 RT M7 wreg M7 ads add 0-extend s-extend s-extend*4 0000 & IR[25:0] & 00 M2 result uins.wreg M5 cte_im RIM npc IMED RA RB outalu C o salta m p RALU uins.walu RALU=d_address address data Memória de Dados uins. uins.bw uins.rw RB RALU uins. uins.rw data M8 mdr_int x 000000 & data[7:0] 4. (3,0 pontos) Abaixo é dado um programa em linguagem de montagem do MIPS. Para este programa, responda às questões que seguem: a) (1,0 ponto) Diga quantos bytes ocupa este programa (área de instruções, área de dados e total) e calcule seu tempo de execução em nanossegundos, supondo que se trata da implementação MIPS multiciclo executando em uma frequência de 400MHz. b) (1,0 ponto) Estude o programa e diga o que ele faz. De nada adianta descrever o que cada instrução do programa executa individualmente, pois isto não será avaliado, defina a semântica deste. c) (1,0 ponto) Com os dados fornecidos, que valor(es) será(ão) escrito(s) em memória quando este código executar até o fim? Assumindo que a área de dados inicia no endereço 0x10010000, que endereços de memória serão escritos pelo programa? 1.text 2.globl main 3 main: la $t0,text 4 addu $t3,$zero,$zero 5 turn: lb $t1,0($t0) 6 beq $zero,$t1,did 7 jal tl 8 addiu $t0,$t0,1 9 j turn 10 did: la $t2,no 11 sw $t3,0($t2) 12 li $v0,10 13 syscall 14 tl: addiu $t4,$zero,'b' 15 bne $t1,$t4,c 16 addiu $t3,$t3,1 17 jr $ra 18 c: addiu $t4,$zero,'b' 19 bne $t1,$t4,e 20 addiu $t3,$t3,1 21 e: jr $ra 22.data 23 No:.word 0 24 Text:.asciiz "Minha Babá gosta de me babar!!" RMDR uins.wmdr MDR result M9

Gabarito 1. (3,0 pontos) Verdadeiro ou Falso. Abaixo aparem 10 afirmativas. Marque com V as afirmativas verdadeiras e com F as falsas. Se não souber a resposta correta, deixe em branco, pois cada resposta correta vale 0,3 pontos, mas cada resposta incorreta desconta 0,2 pontos do total positivo de pontos. Não é possível que a questão produza uma nota menor do que 0,0 pontos. a) (X) A diretiva de montagem.data aita pelo montador do ambiente MARS tem como efeito alocar um espaço na memória de dados exatamente do tamanho de uma palavra do prossador MIPS, ou seja 4 bytes. b) (X) Pseudo-instruções aitas como válidas pelo montador do ambiente MARS podem gerar uma ou duas instruções do MIPS como resultado de sua tradução durante o prosso de montagem de um programa. c) (X) Uma implementação de hardware completa do prossador MIPS R2000, ao executar uma instrução, deve ser capaz de produzir um dado imediato de 32 bits a partir do código objeto da instrução usando um de pelo menos quatro prossos distintos. d) (X) O bloco de controle de uma implementação de hardware completa do prossador MIPS R2000 precisa analisar apenas os seis bits mais significativos (31 a 26) do código objeto para identificar univocamente de que instrução se trata. e) (X) O modo de endereçamento pseudo-absoluto no MIPS é usado exclusivamente em instruções de salto para subrotina. f) (X) O código objeto 0x1E20FFF9 corresponde a uma instrução de salto condicional que, quando saltar, o faz para uma instrução que está exatamente seis palavras da memória de programa acima do salto. g) (X) A definição do número de portas de entrada e saída do banco de registradores do MIPS é estabelecida pela arquitetura do conjunto de instruções deste. Como existem instruções que manipulam até três registradores, o banco de registradores de qualquer organização do MIPS precisa ter no mínimo três portas de asso para leitura e/ou escrita. h) (X) A instrução SLT $t0, $t1, $t2 é uma instrução de controle de fluxo de execução de instruções. i) (X) O modo de endereçamento base-deslocamento é a única maneira que instruções do prossador MIPS usam para especificar endereços de asso à memória de dados. j) (X) Somente existem instruções na arquitetura MIPS R2000 que escrevem em 0 ou 1 registrador do banco. Nenhuma instrução escreve em 2 ou mais registradores. Solução da Questão 1 a) (F) A diretiva de montagem.data aita pelo montador do ambiente MARS tem como efeito alocar um espaço na memória de dados exatamente do tamanho de uma palavra do prossador MIPS, ou seja 4 bytes. Justificativa: FALSO, a diretiva.data apenas define que as linhas após ela correspondem a definições de conteúdos da memória de dados; ela não resaerva espaço nesta memória. b) (V) Pseudo-instruções aitas como válidas pelo montador do ambiente MARS podem gerar uma ou duas instruções do MIPS como resultado de sua tradução durante o prosso de montagem de um programa. Justificativa: VERDADEIRO, pois foram vistos exemplos em aula destes dois casos, usando as pseudo-instruções li e la. A primeira, quando rebe um operando

imediato representável em até 16 bits produz apenas uma instrução ao ser traduzida para código objeto, enquanto la sempre produz duas instruções (lui+ori). c) (V) Uma implementação de hardware completa do prossador MIPS R2000, ao executar uma instrução, deve ser capaz de produzir um dado imediato de 32 bits a partir do código objeto da instrução usando um de pelo menos quatro prossos distintos. Justificativa: VERDADEIRO, pois como vimos por exemplo na descrição da organização da MIPS multiciclo, há quatro blocos distintos que podem gerar a entrada do registrador IMED. Os quatro prossos de geração de dado imediato vistos em aula foram: extensão de 0, extensão de sinal, extensão de sinal multiplicada por 4 (usado nas instruções de salto condicional) e geração de endereço a partir de pseudo-endereços de 26 bits (usado nas instruções J e JAL, por exemplo). d) (F) O bloco de controle de uma implementação de hardware completa do prossador MIPS R2000 precisa analisar apenas os seis bits mais significativos (31 a 26) do código objeto para identificar univocamente de que instrução se trata. Justificativa: FALSO, pois em alguns casos, como para as instruções tipo R, estes 6 bits tem o mesmo valor para diversas instruções (no caso 000000). Neste caso, este valor igual para diversas instruções implica que a análise deve ser estendida para mais bits, de forma a identificar a instrução de forma unívoca. No caso do exemplo dado aqui (instruções tipo R) analisa-se os bits 5 a 0 do código objeto. e) (F) O modo de endereçamento pseudo-absoluto no MIPS é usado exclusivamente em instruções de salto para subrotina. Justificativa: FALSO. Embora este modo seja usado na instrução JAL que é de salto para subrotina, existe pelo menos mais uma instrução onde ele é usado que não é de salto para subrotina, a instrução J. f) (V) O código objeto 0x1E20FFF9 corresponde a uma instrução de salto condicional que, quando saltar, o faz para uma instrução que está exatamente seis palavras da memória de programa acima do salto. Justificativa: VERDADEIRO. Os 6 primeiros bits do código objeto são, em binário, 000111, ou seja 7 em decimal/hexadecimal. Isto corresponde de fato ao código de uma instrução BGTZ (um tipo de salto condicional). Observando os 16 bits inferiores (0xFFF9), nota-se que se trata de um numeral que em complemento de 2 expressa o binário 1111111111111001 o número -7. Como este valor é somado ao valor do PC apontando para a palavra seguinte à instrução BGTZ, ao multiplicar -7 por 4 e somar ao PC, obtém-se o endereço da posição localizada exatamente 6 palavras acima da BGTZ. g) (F) A definição do número de portas de entrada e saída do banco de registradores do MIPS é estabelecida pela arquitetura do conjunto de instruções deste. Como existem instruções que manipulam até três registradores, o banco de registradores de qualquer organização do MIPS precisa ter no mínimo três portas de asso para leitura e/ou escrita.

Justificativa: FALSO. Como visto desde o início do semestre, o nível de abstração da arquitetura é mais alto que o da organização. Claro que se pode ter um banco de registradores com mais do que três portas de asso, mas isto seria inútil, dado que não existem instruções que manipulam mais do que 3 registradores. por outro lado, é possível usar menos que três portas, mas isto implica a serialização do asso ao hardware, tornando o hardware menos rápido. Ainda assim, isto pode ser interessante, pois reduz a quantidade de hardware para implementar o banco de registradores e a potência dissipada por este. h) (F) A instrução SLT $t0, $t1, $t2 é uma instrução de controle de fluxo de execução de instruções. Justificativa: FALSO. Trata-se de uma instrução que testa sem o valor em $t1 é menor que o valor em $t2, anotando o resultado do teste em $t0. Claro que isto pode depois ser usado com instruções de salto condicional para realizar controle de fluxo, mas SLT em si não se caracteriza como tal tipo de instrução. i) (V) O modo de endereçamento base-deslocamento é a única maneira que instruções do prossador MIPS usam para especificar endereços de asso à memória de dados. Justificativa: VERDADEIRO. Como a arquitetura do MIPS define que instruções não podem ocupar mais do que 32 bits e que endereços de memória ocupam 32 bits, é impossível armazenar um endereço inteiro em uma instrução. Além do mais a arquitetura do MIPS é do tipo LOAD-STORE. Embora haja outros modos de endereçamento para fazer asso à memória de instruções, somente o basedeslocamento está disponível para asso à memória de dados. j) (V) Somente existem instruções na arquitetura MIPS R2000 que escrevem em 0 ou 1 registrador do banco. Nenhuma instrução escreve em 2 ou mais registradores. Justificativa: VERDADEIRO. Embora existam no MIPS instruções que escrevem informação útil em mais de um registrador (como a instrução JAL), isto nunca é feito para dois registradores do banco. Fim da Solução da Questão 1 2. (2,0 pontos) Considere as linhas abaixo, que contêm parte do VHDL da MIPS multiciclo/ Elas possuem a definição do sinal ads que corresponde ao conjunto de fios que gera o endereço da porta superior de leitura do banco de registradores. Pede-se: a) Assuma que as instruções da MIPS multiciclo são codificadas em 6 bits com valores na faixa de 000000 a 100000, na ordem dada na Questão 3 abaixo. A partir deste pressuposto, defina os códigos associados às instruções SLL, SRA e SRL. b) Usando os códigos definidos no item a), desenhe um diagrama que use apenas portas lógicas e multiplexadores, refletindo um circuito correto que pode resultar da compilação deste código VHDL. M3: ads <= IR(20 downto 16) when =SSLL or =SSRA or =SSRL else IR(25 downto 21); Solução da Questão 2 Solução: a) Dado o pressuposto da questão, SLL, SRA e SRL são respectivamente a sétima, nona e décima primeira, na ordem dada. Como a codificação inicia-se em 000000

(para a primeira instrução), tem-se os seguintes códigos: SLL=000110, SRA=001000 e SRL=001010. b) Ver desenho abaixo: IR (25 downto 21) IR (20 downto 16) M3 ads SLL SRA SRL (5) (4) (3) (2) (1) Fim da Solução da Questão 2 (0) 3. (2,0 pontos) Considere o bloco de dados da MIPS multiciclo abaixo (sem multiplicação nem divisão), que implementa parte de um prossador que dá suporte a uma versão parcial da arquitetura do conjunto de instruções do prossador MIPS. Suponha que o multiplexador M4 estragou, e que seu defeito é, independente do valor do sinal de controle, sempre deixar passar sua entrada superior (IR(15 downto 11)) para a saída. Diga qual/quais das instruções deste prossador ainda executa(m) corretamente com esta falha atuando, e justifique sua resposta. Lembre-se que as instruções da MIPS multiciclo são as seguintes: ADDU, SUBU, AND, OR, XOR, NOR, SLL, SLLV, SRA, SRAV, SRL, SRLV, ADDIU, ANDI, ORI, XORI, LUI, LBU, LW, SB, SW, SLT, SLTU, SLTI, SLTIU, BEQ, BGEZ, BLEZ, BNE, J, JAL, JALR e JR. dtpc M1 D rpc Q uins.wpc 4 + pc=i_address address data Memória de Instruções instruction Solução da Questão 3 incpc RNPC uins.cy1 RIR uins.cy1 ir=ir_out 25..0 npc RIN 25..21 RD 20..16 M3 AdRs op1 R1 M6 RA R1 D 20..16 AdRt RS A 15..11 REGS L 20..16 M4 AdRd op2 U 11111 R2 RB R2 RT M7 wreg M7 ads add 0-extend s-extend s-extend*4 0000 & IR[25:0] & 00 M2 result uins.wreg M5 cte_im RIM npc IMED RA RB outalu C o salta m p RALU uins.walu RALU=d_address address data Memória de Dados uins. uins.bw uins.rw RB RALU uins. uins.rw data M8 mdr_int x 000000 & data[7:0] RMDR uins.wmdr MDR result M9

Solução: O conjunto de bits IR(15 downto 11) é usado basicamente nas instruções tipo R. Assim estas continuam funcionando normalmente e são: ADDU, SUBU, AND, OR, XOR, NOR, SLL, SLLV, SRA, SRAV, SRL, SRLV, SLT e SLTU. Além destas, como o mux M4 controla o endereço de escrita no banco, todas as instruções que não escrevem no banco continuam também funcionando normalmente e são: SB, SW, BEQ, BGEZ, BLEZ, BNE, J e JR. As demais instruções param de funcionar corretamente, pois ADDIU, ANDI, ORI, XORI, LUI, LBU, LW, SLTI, SLTIU, JAL e JALR escrevem no banco, mas usam um endereço de escrita que não vem de IR(15 downto 11). Fim da Solução da Questão 3 4. (3,0 pontos) Abaixo é dado um programa em linguagem de montagem do MIPS. Para este programa, responda às questões que seguem: a) (1,0 ponto) Diga quantos bytes ocupa este programa (área de instruções, área de dados e total) e calcule seu tempo de execução em nanossegundos, supondo que se trata da implementação MIPS multiciclo executando em uma frequência de 400MHz. b) (1,0 ponto) Estude o programa e diga o que ele faz. De nada adianta descrever o que cada instrução do programa executa individualmente, pois isto não será avaliado, defina a semântica deste. c) (1,0 ponto) Com os dados fornecidos, que valor(es) será(ão) escrito(s) em memória quando este código executar até o fim? Assumindo que a área de dados inicia no endereço 0x10010000, que endereços de memória serão escritos pelo programa? 1.text 2.globl main # bytes 3 main: la $t0,text # 8 Endereço de Text em $t0 4 addu $t3,$zero,$zero # 4 Zera contador de b s ou B s 5 turn: lb $t1,0($t0) # 4 Lê caracter de Text 6 beq $zero,$t1,did # 4 Se é o último, acabou, vai para did 7 jal tl # 4 Senão, chamada rotina ver se b ou B 8 addiu $t0,$t0,1 # 4 Depois, incrementa ponteiro de Text 9 j turn # 4 e volta a testar 10 did: la $t2,no # 8 No final, escreve contador de b/b s 11 sw $t3,0($t2) # 4 na memória, em No 12 li $v0,10 # 4 Agora cai fora do programa 13 syscall # 4 # Subrotina que vê se caracter= b ou B 14 tl: addiu $t4,$zero,'b' # 4 Gera código de b em $t4 15 bne $t1,$t4,c # 4 Se não é b, vai testar se é B 16 addiu $t3,$t3,1 # 4 Senão, incrementa contador 17 jr $ra # 4 e volta 18 c: addiu $t4,$zero,'b' # 4 Gera código de B em $t4 19 bne $t1,$t4,e # 4 Se não é B, volta sem incrementar 20 addiu $t3,$t3,1 # 4 Senão, incrementa contador 21 e: jr $ra # 4 e volta 22.data # 23 No:.word 0 # 4 Lugar onde guardar valor de contagem 24 Text:.asciiz "Minha Babá gosta de me babar!!" # 31 Text a analisar # Programa=84 bytes, Dados=35 bytes. # Total=119 bytes Solução da Questão 4 Solução: a) Como detalhado individualmente nos comentários acima, a área de programa ou instruções ocupa 84 bytes, a área de dados ocupa 35 bytes, gerando um total de 119 bytes de memória ocupados pelo programa. Com relação ao tempo de execução, primeiro computa-se o número de ciclos para executar este com a área de dados dada. Com esta área, as linhas 3 a 4 e 10 a 13 executam exatamente um vez, perfazendo um total de 8(la=lui+ori) + 4(addu) + 8(la) + 4(sw) + 4(li=addiu) + 4(syscall)=32 ciclos. O restante do código do programa é um laço executado tantas vezes quanto seja o tamanho da cadeia Text em bytes (31). A particularidade é que a última vez que o laço é executado ele sai do laço na segunda linha. Logo, sem considerar o tempo de execução da subrotina tl, o laço

gasta 30*(5(lb)+4(beq+4(jal)+4(addiu)+4(j))+(5(lb)+4(beq))ciclos= 30*21+9=639 ciclos. A subrotina tl, por sua vez, cada vez que for chamada pode executar de três formas distintas, cada uma com tempo de execução diferente: caso letra seja b - gasta 4(addiu)+4(bne não salta)+4(addiu)+4(jr retorna)=16 ciclos; caso letra não seja b nem B - gasta 4(addiu)+4(bne salta)+4(addiu)+4(bne salta)+4(jr retorna)=20 ciclos; caso letra seja B - gasta 4(addiu)+4(bne salta)+4(addiu)+4(bne não salta)+4(addiu)+4(jr retorna)=24 ciclos. Como a rotina é chamada exatamente 30 vezes, e deve prossar 3 bs e 1 B na cadeia fornecida, o total de ciclos gasto executando tl é 3*(16)+1*24(B)+(30-4)*20=592ciclos. Agora basta somar os montantes assim obtidos para obter o total de ciclos que o programa leva para executar, o que dá 32+639+592=1263 ciclos de relógio. Como a frequência de operação dada é 400MHz, o período de relógio é 1/(400*10 6 ) ou 2,5 nanossegundos. Logo o tempo de execução total do programa é 1263*2,5= 3157,5 nanossegundos. b) Este programa computa o número de letras `b (maiúsculas ou minúsculas) que ocorre em um texto contido na cadeia Text, e armazena este valor na posição de memória No. c) Só existe uma instrução SW no programa e ela é executada apenas uma vez (na linha 11) Esta instrução escreve uma palavra (SW) nas quatro primeiras posições da memória de dados, ou seja nos endereços 0x10010000 a 0x10010003. O dado escrito é o número de letras b (maiúsculas ou minúsculas) existente na cadeia Text, o que no caso resulta no valor 4. este é o único valor escrito na memória pelo programa. Fim da Solução da Questão 4