Você está na página 1de 9

Exerccios resolvidos (aula de 4 de Maio) 1. Um microprocessador gera endereos de memria de 14 bits.

Desenhe um mapa de memria dos seus endereos de memria fronteira especificados em hexadecimal. Uma ROM de 4 K localizada no espao de memria de endereos mais baixos. Uma RAM de 2K localizada nos espaos de memria mais altos. Repita considerando agora endereos de 16 bits e 20 bits e 32 bits.

Resoluo: Se o microprocessador gera endereos de memria de 14 bits, significa que possui 14 linhas para efectuar o endereamento das posies de memria. O intervalo de endereamento de 0 at 16K posies ou seja 3FFFh. Para: 16 bits: 0.. 64K, 20 bits: 0..1M, 32 bits: 0..4G, FFFFh FFFFFh FFFFFFFFh

2k

3FFF 3800

2k

FFFF F800

2k

FFFFF FF800

2k

FFFFFFFF FFFFF800

4k

0FFF 0000

4k

0FFF 0000

4k

0FFF 0000

4k

0FFF 0000

-1-

2. Para o seguinte cdigo comente as instrues e identifique o que fazem escrevendo o seu equivalente em C:
loop: add beq add sub j addi add $t0, $a1, $t0, $a1, loop $t0, $v0, $zero, $zero $zero, finish $t0, $a0 $a1, 1 $t0, 100 $t0, $zero

finish:

Resoluo:

loop:

finish:

add $t0, $zero, $zero beq $a1, $zero, finish add $t0, $t0, $a0 sub $a1, $a1, 1 j loop addi $t0, $t0, 100 add $v0, $t0, $zero

# coloca $t0 a zero # enquanto $a1 no for zero # $t0=$t0+$a0 # subtrai 1 de $a1 # salta para loop # soma 100 a $t0 # guarda resultado em $v0

Entradas: Operao: Sadas:

$ao e $a1 Multiplica $a0 por $a1 (soma $a0 $a1 vezes) em $v0 o resultado da multiplicao $a0 por $a1

Considerando a atribuio de variveis: $a0 a a0, $a1 a a1 e $v0 a v Em C temos: v=a0*a1

-2-

3. Depois da execuo do seguinte cdigo, qual o valor de $s0 e $s1 em decimal? (lb significa load byte neste caso apenas l um byte de um contedo de memria). Considere nmeros com sinal:
lb lb $s0, 100 ($zero) $s1, 200 ($zero) # contedo 100 = 0x0f # contedo 200 = 0xff

Resoluo: Depois da execuo das instrues fica em: $s0=0F $s1=FF Como so nmeros com sinal: 0F=0000 1111 Numero positivo +15 FF=1111 1111 um numero negativo. Qual? -1

-3-

4. Para cada instruo do programa abaixo identifique os formatos de codificao e os modos de endereamento. add beq lw $t0, $zero, $zero $a1, $zero, finish $t0, 100( $a0)

Resoluo: No MIPS existem 3 formatos para a codificao em linguagem mquina das instrues. O formato R, I e J No Mips existem 5 modos de endereamento, que so: Por Registo, Base ou deslocamento de endereo, imediato, relativo ao PC e pseudo endereamento. add $t0, $zero, $zero formato: R endereamento: por registo, pois os operandos so registos beq $a1, $zero, finish formato: I endereamento: Relativo ao PC, pois o operando especificado pela soma de um registo com o PC, cujo endereo corresponde ao especificado por finish lw $t0, 100( $a0) formato: I endereamento: Relativo Base(registo) , pois o operando especificado pela soma de um registo com uma constante, neste caso $a0+100

-4-

5. Qual o intervalo de endereos para um salto condicional no MIPS?

Resoluo: Uma instruo de salto condicional significa que o salto s se toma caso uma expresso (de comparao) seja verdadeira. A no tomada da salto significa que a execuo do programa continua na prxima instruo (PC+4). A tomada do salto significa que a prxima instruo a ser executada est localizada em PC+4+deslocamento, em que o valor do deslocamento o um nmero com sinal de 16 bits. Um valor negativo do deslocamento representa salto no sentido decrescente dos endereos e um valor positivo representa um salto no sentido crescente dos endereos da memria de programa. Para o clculo dos endereos preciso saber qual o espao para representar esse valor no formato da instruo. Neste caso esse espao de 16 bits, assim com uma representao de nmeros com sinal em complementos de 2, temos um intervalo entre os valores: 1000 0000 0000 0000 -32 768, que corresponde ao maior numero negativo 0111 1111 1111 1111 +32 767, que corresponde ao maior numero positivo O intervalo de salto ser: 6. [-32 768 + PC +4, +32 767 +PC +4]

-5-

7. A execuo de um programa numa determinada mquina s pode ser efectuada se esse programa se apresentar ao microprocessador dessa mquina na sua linguagem nativa. Esclarea os diferentes passos desde a escrita do cdigo fonte at sua execuo pela mquina, considere a linguagem C. Compare com escrita e execuo na plataforma .NET

Resoluo: Procedimento tradicional utilizando compilador de C, escreve-se um programa em cdigo fonte utilizando um editor de texto. Efectua a compilao que gera instrues assembly para o microprocessador da mquina correspondente s instrues do cdigo fonte. Estas instrues so convertidas para cdigo mquina e ligadas a outras rotinas de outros mdulos (caso existam) ou a rotinas de livrarias que esto includas no cdigo fonte. Obtm-se no final um programa para ser executado pelo processador, cujo contedo so instrues mquinas para serem executadas pelo processador. A execuo do programa efectuada depois do carregamento do programa para a memria pelo sistema operativo da mquina. No caso da plataforma .NET o funcionamento diferente, aqui o cdigo fonte at pode ser o mesmo do anterior mas a sua compilao gera um assembly especifico para a plataforma .Net, desta forma a plataforma .Net pode ser visto com um processador virtual. Na execuo o cdigo do programa compilado em tempo real para o cdigo do processador da mquina pelo compilador JIT (Just In Time)

-6-

8. Para o seguinte programa explique a operao que efectuada em cada estado do pipeline. lw lw add beq j sw r1, 0(r0) r2, 1(r0) r3, r1, r2 r1, r2, salto rotina 2(r0), r3

Resoluo: Estamos a considerar um pipeline de 5 estados: (1) Busca da Instruo, (2) descodificao, (3) Execuo, (4) Memria, (5) Escrita de resultados. Para a resoluo do exerccio apenas interessa a classificao das instrues em grupos: Lw Load: estados 1 e 2 efectuada a busca e descodificao da instruo, no estado 3 calculado o endereo da posio de memria, no estado 4 lido o contedo da posio de memria calculado em 3 e no estado 5 escrito o seu contedo no registo. Sw Store: estados 1 e 2 efectuado a busca e descodificao da instruo, no 3 efectua o clculo do endereo da posio de memria, no estado 4 escrito o valor do registo na memria. O estado 5 no usado. Add operaes na ALU: estados 1 e 2 para a busca e descodificao da instruo, no 3 executa a instruo, ou seja efectua a soma e no 5 escreve resultado. (No usado o estado 4) Beq Saltos condicionais: estados 1 e 2 para a busca e descodificao da instruo e 3 para verificar se a expresso de teste para o salto verdadeira? Estados 4 e 5 no usados. J Saltos incondicionais: estados 1 e 2 busca e descodificao da instruo, suficientes para actualizar o PC com o novo valor. Estados 3, 4 e 5 no usados.

-7-

9. Considere o datapath da figura de ciclo simples

0 Add 4 Shift left 2 Add ALU result M u x 1

Instruction [3126] Control

RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Read register 2 Write register Write data

Instruction [2521] PC Read address Instruction [2016] Instruction [310] Instruction memory 0 M u Instruction [1511] x 1

Read data 1 Zero Read data 2 0 M u x 1 ALU ALU result Address Read data 1 M u x 0

Registers

Data Write memory data ALU control

Instruction [150]

16

Sign extend

32

Instruction [50]

a. O que significa datapath ciclo simples? b. Como que o bloco de controlo selecciona as linhas de controlo para as diferentes unidades do datapath c. Esclarea o significado dos mdulos Sign Extended e Shift Left 2e que instrues afecta? d. Qual o efeito na execuo das instrues se as linhas de controlo dos multiplexer estiver sempre a 1 e. Complete a seguinte tabela, com o valor das linhas de controlo
Instruo $t1, $t1, $s2 $v0, $zero, 0 $t0, 0($t1) $v1, 0($a1) $v1, $zero, loop ResDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch

add addi lw sw beq

-8-

Resoluo: a. Entende-se por datapath de ciclo simples quando a execuo de todos os estados acontece num nico ciclo de relgio, por este motivo tambm se designa de datapath de ciclo longo. b. O bloco de controlo utiliza lgica combinatria para gerar os diversos sinais de controlo (RegWrite,) em que as entradas desse circuito combinatrio so os 6 bits mais significativos do cdigo de instruo de 26 a 31. c. O bloco Sign- Extended converte de 16 para 32 bits mantendo o valor de 16 para 32 bits, significa que os 16 bits mais significativo so completados com o valor do bit mais significativo da palavra de 16 bits. As instrues que utilizam esta instruo so as que utilizam o formato I. O bloco Shift Left 2 significa multiplicar por 4 o deslocamento para calcular o endereo da prxima instruo. Afecta as instrues de salto relativo. d. Se o mux(RegDest) estiver a 1, apenas podem ser executadas instrues do tipo R. Se o mux(ALUSrc) estiver a 1 apenas podem ser executadas instrues do tipo I, com endereamento imediato e de salto relativo a Base(registo) ALU-imediato e loads e stores. Se o mux(de salto) estiver a 1 apenas so executadas as instrues de salto apenas se o salto se tomar. Se o mux(MemtoReg) estiver a 1apenas podem ser executadas instrues de load. e.
Instruo add addi lw sw beq $t1, $t1, $s2 $v0, $zero, 0 $t0, 0($t1) $v1, 0($a1) $v1, $zero, loop ResDst 1 0 0 x x ALUSrc 0 1 1 1 0 MemtoReg 0 0 1 x x RegWrite 1 1 1 0 0 MemRead 0 0 1 0 0 MemWrite 0 0 0 1 0 Branch 0 0 0 0 1

-9-

Você também pode gostar