



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Exercícios sobre microprocessadores
Tipologia: Exercícios
1 / 6
Esta página não é visível na pré-visualização
Não perca as partes importantes!




Universidade de Pernambuco Escola Politécnica de Pernambuco Graduação em Engenharia Elétrica
Microprocessadores
Aluno: Eduardo César Ferreira de Oliveira Mat: 0322612 Turma: AB Prof.: Alexandre Branco
Recife - 2007
Livro: D. A. Patterson & J. L. Hennessy. Organização e Projeto de Computadores: A interface hardware/software. Ed. LTC. Rio de Janeiro. Questões: Cap. 2) 2.10, 2.11, 2.12, 2.15 e 2. Cap .4) 4.10, 4.11, 4.12, 4.13, 4.16, 4.17, 4.18, 4.20, 4.21, 4.23 e 4.31.
M1 F 0E 8 Freq. Clock = 500MHZ CPIa=1, CPIb=2, CPIc=3 e CPId= M2 F 0E 8 Freq. Clock = 750MHZ CPIa=2, CPIb=2, CPIc=4 e CPId= Performance de pico F 0E 8 Maior taxa para executar as seqüências de instruções Maior Performance F 0E 8 Maior Freq. Clock e/ou menor CPI Instrução = 1 Como a instrução = 1 para M1 e M2, o MIPS é fator de performance.
Para M1 F 0E 8 Freq. Clock = 500MHz , Classe de Instrução A, CPI = 1 Para M2 F 0E 8 Freq. Clock = 750MHz , Classe de Instrução A e B, CPI = 2
Cada classe de instrução tem o mesmo número de instruções I
Freqclock = 1000MHz Programa P Ciclos MFP Ciclos MNFP Multiplicação PF 10% 6 2
Soma PF 15% 4 2
Divisão PF 5% 20 2
Instrução inteira 70% 2 2
addu $t2, $zero, $t3 #copia $t3 para $t bgez $t3, fim #se $t3 0, termina e $t2 = $t sub $t2, $zero, $t3 #$t2 = - $t
Transformar os múltiplos de 6 de decimal para binário 6: 0000 0110 12: 0000 1100 18: 0001 0010 24: 0001 1000 30: 0001 1110 (Harry está errado, 4 1´s) 36: 0010 0100 42: 0010 1010 (David está errado, número ímpares de 1´s)
4.12) .data mask:.word 0xfffff83f # Máscara. O equivalente binário a este número é 1111 1111 1111 1111 1111 1000 0011 1111(2)
. text start: lw $t0, mask # Armazena em #$t0 o valor binário da máscara lw $s0, shifter # Armazena em #$s0 o código referente à instrução sll que está no label shifter. and $s0, $s0, $t0 # Executa o mascaramento da instrução, ou seja, limpa o conteúdo da informação de shamt andi $a2, $s2, 0x1f # Limpa o conteúdo do registrador $s2 a partir do sexto bit. sll $s2, $s2, 6 # Move 6 bits o conteúdo dos primeiros 5 bits de$s2 para ficar na mesma posição do shamt. or $s0, $s0, $s2 # Adiciona a $s0 a informação de shamt, copiando de $s sw $s0, shifter # Altera o valor da instrução localizada no label shifter shifter:sll $s0, $s1, 0 # Executa a instrução que foi modificada anteriormente Este trecho de código é um exemplo de alteração dinâmica de código. O algoritmo utiliza uma máscara para limpar o conteúdo da linha de
código referente ao label “shifter”, limpando a informação de quantos bits irá ser deslocado. Logo após, limpa a informação de $a desnecessária, deixando só os primeiros 5 bits. Rotaciona essa informação para encaixar perfeitamente com o código da instrução rll no campo shamt e após isso modifica a linha de código utilizando o “sw”. Essa prática não é aconselhada e até mesmo autorizada em algumas arquiteturas devido a complexidade de depuração de problemas, visto que o código passa a ser modificado dinamicamente. Se houver algum erro nessa manipulação pode ser danificada toda a estrutura do código.
4.13) O problema é que A_lower extenderá o sinal ao ser somado com $t0. A solução é ajustar A_upper adicionando 1 se o bit mais significativo de A_lower for 1.
4.16)
gcc(lw) = 21% Serão 15% de 21% das instruções lw no MIPS F 0 E 8 0,15 x 0,21 = 0,^ F 0 E 8 3,15%
4.17) addu $t2, $t3, $t sltu $t2, $t2, $t
4.18) Com overflow
addu $t3, $t5, $t sltu $t2, $t3, $t addu $t2, $t2, $t addu $t2, $t2, $t
Sem overflow
addu $t3, $t5, $t sltu $t2, $t3, $t add $t2, $t2, $t add $t2, $t2, $t
O nome dessa estrutura seria srop ( shift right one place ) – Deslocar para a direita apenas uma posção. Essa instrução trata os dois registradores como um único número de 4 bits, onde o $s1 seria a parte menos significativa e o $s0 a parte mais