LISTE DES JUGES DU SAMEDI 7 MAI 2016

Transcription

LISTE DES JUGES DU SAMEDI 7 MAI 2016
Infra-estrutura de Hardware
Lista de Exercícios – Pipeline – 2014-1
O objetivo desta aula será a utilização de simuladores que emulam o comportamento de um
processador com implementação usando pipeline.
Serão usados dois simuladores que implementam o MIPS com pipeline:
 O simulador MipsPipeS.exe emula um processador com pipeline simples
sem resolução de conflitos por hardware.
 O simulador MipsPipeXL.exe emula um processador implementado em
pipeline que possui unidade de adiantamento (curto-circuito) e
adiantamento do desvio.
O efeito da utilização do pipeline na execução das 4 classes de instruções do MIPS:
aritméticas, load, store e de desvio serão discutidos nas questões abaixo.
1- Crie um novo projeto e digite o programa abaixo e carregue o mesmo no simulador
(MipsPipeS.exe)
#include <reg.h>
.set noreorder
.text
.globl start
.ent start
start:
add
nop
nop
nop
nop
t0, t1, t2
.end start
a. Inicie t1 e t2 com valores distintos (diretamente na janela que mostra os registradores) e
execute o programa passo a passo. Descreva o que acontece quando a instruções
entram em cada estágio do pipeline (IF, ID, EX, MEM, WB)? Descreva todos os sinais, as
mudanças nos registradores e outros efeitos em detalhes.
b. Quantos ciclos são necessários para se ter o resultado da operação no registrador?
2. Substitua a instrução add t0, t1, t2 no programa acima pela instrução lw t0, 0(t1),
inicializando o registrador t1 (usando a janela de registradores) com algum endereço de
memória. Coloque um valor inicial no endereço de memória usando a janela da memória.
Compile o programa e analise sua execução no pipeline.
a.
b.
c.
d.
e.
f.
O que acontece nos diferentes estágios do pipeline?
Quais operações são feitas na ALU?
Quantos ciclos são necessários para que o registrador tenha o valor correto?
Todos os estágios do pipeline são utilizados?
Faça a mesma análise para a instrução sw t0, 4(t1)
Repita o mesmo tipo de análise para a instrução beq t0, t1, Dest. Note que você deve
inserir um rótulo no programa.
3. Execute o programa abaixo atribuindo valores distintos aos registradores t0, t1 e t3
(diretamente na janela dos registradores).
#include <reg.h>
.set noreorder
.text
.globl start
.ent start
start: add t2, t0, t1
add t4, t2, t3
nop
nop
nop
.end start
a.
b.
c.
d.
e.
Após quantos ciclos o registrador t2 recebe o resultado correto?
Após quantos ciclos este valor é necessário na segunda instrução?
Qual o problema neste programa e como ele pode ser resolvido?
Execute o mesmo programa usando o simulador MipsPipeXL.exe.
O pipeline executa corretamente? Porque?
4. Execute o programa abaixo no simulador (MipsPipeS.exe) atribuindo o mesmo valor aos
registradores t0 e t1 (diretamente na janela de registradores).
#include <reg.h>
.set noreorder
.text
.globl start
.ent start
start: nop
nop
beq t0, t1, start
addi t0, t0, 1
nop
nop
nop
.end start
a.
b.
c.
d.
Quantos ciclos são necessários até que o desvio possa ser executado
O que acontece com a instrução addi enquanto o branch é calculado?
Qual o problema e quais as soluções para resolve-lo?
Use agora a versão MipsPipeXL.exe, como será a execução do programa?
5. Execute o programa abaixo e atribua diferentes valores para os registradores t1, t2 e t3
(diretamente na janela de registradores). O registrador t2 contem um endereço de memória.
#include <reg.h>
.set noreorder
.text
.globl start
.ent start
start: add t0, t1, t2
lw
t1, 0(t2)
sub t2, t1, t3
nop
nop
nop
.end start
a.
b.
c.
d.
Após quantos ciclos o registrador t1 recebe o valor correto?
Em que ciclo este valor deveria estar disponível?
Qual o problema neste caso e como o mesmo pode ser resolvido?
Execute o programa usando o simulador MipsPipeXL.exe, qual foi o resultado? Porque
o resultado difere?
6. Considere o programa em linguagem assembly abaixo. Estude o programa para entender
sua funcionalidade. Caso alguma instrução não seja simulada pelo simulador MIPSPipeS.exe
troque por outra instrução que funcione neste simulador. (ou faça os cálculos manualmente)
(4.0)
#include <reg.h>
.set noreorder
.data
i . word 0
A .word 5, 2,-1, 6
B .word 1, -4, 3, 2
C .word –1,-2,-3,-4
.text
.globl start
.ent start
start: li $3, 3
li $4, 1
la $1, A
lw $2, i
Loop: slti $5, $2, 0
bne $5, $4, somac
lw $5, 16($1)
j rot
somac: lw $5,32($1)
rot:
j soma
volta: addi $3, $3, -1
sub $2, $5, $3
addi $1, $1, 4
slti $5, $3, 0
bne $5, $4, Loop
fim :
nop
soma: sw $2,0($29)
addi $29, $29, -4
lw $2, 0($1)
add $2, $2, $5
sw $2, 0($1)
addi $29, $29, 4
lw $2, 0($29)
j volta
Os vetores A, B e C possuem 4 inteiros cada. Os endereços iniciais são dados por: A=84,
B=100 e C=116. A variável i está localizada no endereço 80 da memória.
a. Calcule o tempo de execução (em ciclos de relógio) usando o simulador MIPSPipeS.exe
e inserindo NOP’s na ocorrência de conflito de dados e de controle.
b. Calcule o tempo usando o simulador MIPSPipeXL.exe, retirando os NOPS que não são
necessários. Compare com o resultado da letra (a). Você consegue um tempo de
execução menor? Como?
7. Escreva um programa em linguagem de montagem MIPS em que, dada como entrada
uma string de caracteres e um caractere único, no final de sua execução o registrador $2
possua o número de vezes que o caractere aparece na string. O programa obrigatoriamente
deverá ter a diretiva .set noreorder (com isso é preciso ter cuidado para evitar a geração de
conflitos no pipeline). O programa deverá ser simulado no MipsPipeS.exe e a string de
entrada deverá ser o nome da pessoa que fez o exercício ou o nome dos integrantes da
equipe. (6.0)
Siga as dicas para resolver esse exercício:
Cada caractere possui um valor de identificação único que está apresentado na tabela ASCII.
Cada caractere é formado por oito bits, ou seja um byte. A string sempre termina com o
caractere nulo, independentemente de que o mesmo seja colocado de forma explícita ou não.
Use o seguinte programa como base para essa questão:
#include <reg.h>
.data
string: .ASCIIZ “coloque os primeiros nomes dos integrantes da equipe”
//Define uma string de caracteres
caractere: .ASCIIZ “a” //Define o caractere de entrada
.set noreorder //Obrigatório para essa questão
.text
.globl start
.ent start
start:
// local onde os caracteres serão carregados e comparados
.end start
Ao término da execução do programa acima, desde que o mesmo seja completado, o
registrador $2 terá o valor 4, pois essa é a quantidade de vezes que o caractere a aparece no
nome da dupla que fez o exercício.
Considerando o código desenvolvido na questão anterior responda as questões a seguir.
Caso o código desenvolvido inclua instruções não suportadas pelo simulador MIPSPipe ou
MIPSPipeExe faça os cálculos solicitados manualmente.
a. Calcule o tempo de execução (em ciclos de relógio) considerando que NOP’s
são inseridos na ocorrência de conflito de dados e de controle.
b. Resolva todos os conflitos de dados e calcule o novo tempo de execução.
Descreva as otimizações utilizadas e mostra onde as mesmas se aplicam no
código.
c.
A partir das otimizações realizadas na letra (b) resolva os conflitos de
controle e calcule o novo tempo de execução. Descreva as otimizações
utilizadas e mostra onde as mesmas se aplicam no código.
Observações:
1- A lista pode ser feita em equipe.
2- As questões de 1 a 5 devem ser entregues até o dia 14/05/14, as questões 6 e 7 podem
ser entregues até o dia 27 de Maio de 2014. Todas as questões devem ser entregues por email e na forma impressa.

Documents pareils

liste des juges du dimanche 8 mai 2016

liste des juges du dimanche 8 mai 2016 GRIFFON BELGE GRIFFON BRUXELLOIS PETIT BRABANCON KROMFOHRLANDER CAVALIER KING CHARLES SPANIEL KING CHARLES SPANIEL COTON DE TULEAR PETIT CHIEN LION

Plus en détail

juges pressentis pour l`exposition canine internationale

juges pressentis pour l`exposition canine internationale Mr J.P. KERIHUEL (France) Mr E. DEUTSCHER (Autriche) Mr C. De GIULIANI (Italie) Mr C. De GIULIANI (Italie)

Plus en détail

STAT - Breed Summary

STAT - Breed Summary DOGO ARGENTINO DOGO CANARIO DOGUE DE BORDEAUX DO-KHYI ENGLISH TOY TERRIER Black and Tan ENTLEBUCHER SENNENHUND FILA BRASILEIRO FOX TERRIER Smooth FOX TERRIER Wire GROSSER SCHWEIZER SENNENHUND HOVAW...

Plus en détail

LISTE DES JUGES

LISTE DES JUGES Per IVERSEN (Norvège) Labrador Retriever. Mile ALEKSOSKI (Macedonia) Golden Retriever. Robert KANAS (Slovaquie) Deutscher Wachtelhund - English Springer Spaniel - Welsh Springer Spaniel - Kooikerho...

Plus en détail

races_fci

races_fci BEARDED COLLIE BEDLINGTON TERRIER BERGER ALLEMAND BERGER AMERICAIN MINIATURE BERGER AUSTRALIEN BERGER BERGAMASQUE BERGER BLANC SUISSE BERGER D'ASIE CENTRALE BERGER DE BEAUCE BERGER DE BOSNIE-HERZEG...

Plus en détail