LISTE DES JUGES DU SAMEDI 7 MAI 2016
Transcription
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
GRIFFON BELGE
GRIFFON BRUXELLOIS
PETIT BRABANCON
KROMFOHRLANDER
CAVALIER KING CHARLES SPANIEL
KING CHARLES SPANIEL
COTON DE TULEAR
PETIT CHIEN LION
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)
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...
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...
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...