Buscar

P2_2020_2

Prévia do material em texto

CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
Arquitetura de Computadores I – Turmas 4 e 5 (EARTE) – 2020/2
Prof. Rodolfo da Silva Villaça – rodolfo.villaca@ufes.br
Segunda Prova – 22 de abril de 2021
NOME: André Oliveira Cunha
MATRÍCULA: 2019107756
Importante: Para esta prova considere que o seu número de matrícula na UFES pode ser
representado pelo formato 20******YX, sendo Y e X inteiros decimais no intervalo [0..9].
1ª Questão – A Figura 1 representa o projeto da CPU MIPS monociclo conforme
apresentado no Capítulo 4.4 do livro texto1.
Boa Prova!
Figura 1 – Projeto do Caminho de Dados e Controle da CPU MIPS monociclo
1 HENNESSY, J. L.; PATTERSON, D. A. Computer Organization and Desing: The hardware/software
Interface. 5th Edition, 2014. ISBN: 978-0-12-407726-3
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
mailto:rodolfo.villaca@ufes.br
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
A instrução jal é uma instrução de salto incondicional, similar ao j, porém com a
característica de armazenar o endereço da próxima instrução (PC+4) no registrador $ra. A
instrução jal é bastante útil na chamada de funções e procedimentos que tenham retorno
ao final da execução.
Em resumo, a operação da instrução jal target possui o seguinte efeito:
$ra = PC+4 //armazena o endereço da próxima instrução no registrador $ra
PC = target //carrega target* no registrador PC
* target está no mesmo formado usado pela instrução j, ver Figura 2 (Apêndice A.10 do
livro texto1).
Figura 2 – Formato da Instrução jal, conforme linguagem de montagem MIPS
a) (1,5) Identifique as modificações necessárias no caminho de dados (muxes e novos
caminhos) do projeto apresentado na Figura 1 para adicionar suporte à instrução jal.
Justifique. Se necessário use esquemas (desenhos) localizados em sua resposta.
R: O jal precisa armazenar o target em algum registrador para posteriormente ser
utilizado. Porém no projeto atual da Figura 1 não é possível fazer essa operação.
Para adicionar esse suporte à instrução jal faremos as seguintes modificações. Vamos
modificar dois mux para que tenham 3 entradas cada, são eles o que vem logo depois da
memória de dados e o que vai para o banco de registradores. O mux alterado que entra
no banco de registradores vai receber a saída do mux que sai da memória de dados. O
mux que vem depois da memória de dados vai receber da saída do somador que faz PC
+ 4.
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
b) (1,0) Identifique as modificações de sinais de controle necessárias no projeto
apresentado na Figura 1 para adicionar suporte à instrução jal. Justifique. Se necessário
use esquemas (desenhos) localizados em sua resposta.
R: Precisa ser criado um novo sinal para saber a hora que a instrução jal será usada.
Dessa forma poderá usar os muxes de forma que seja salvo no registrador correto.
2ª Questão – Considere o programa p2q2.asm a seguir e substitua “X+Y” pelo valor da
soma X+Y conforme seu número de matrícula na UFES. Se em seu caso específico X e Y
forem iguais a 0, escolha aleatoriamente um valor para X+Y no intervalo [1..18].
p2q2.asm:
.data
numbers: .word 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35
count: .word "X+Y"
res: .word 0
.text
la $a0, numbers // Linha 0
lw $a1, count // Linha 1
li $t2, 0 // Linha 2
sum:
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
beq $t2, $a1, finish // Linha 3
addi $a0, $a0, 4 // Linha 4
addi $t2, $t2, 1 // Linha 5
lw $t0, 0($a0) // Linha 6
add $t1, $t1, $t0 // Linha 7
b sum // Linha 8
finish:
sw $t1, res // Linha 9
a) (1,5) Apresente o estado das linhas de dados (caminhos dos muxes) e sinais de
controle para a execução da instrução na Linha X do programa p2q2.asm. Justifique sua
resposta.
R: Na linha 6 temos: lw $t0, 0($a0).
Analisando a unidade de controle, percebemos que os seguintes sinais são utilizados:
ALUSrc: 1
MemRead: 1
MemToReg: 1
RegWrite: 1
O ALUSrc seleciona o segundo operando de origem para a ALU (rt ou campo imediato
estendido por sinal em Patterson e Hennessey). O MemRead ativa uma leitura de
memória para instruções de carregamento. O MemToReg determina de onde vem o valor
a ser escrito (resultado de ALU ou memória em Patterson e Hennessey). E o RegWrite
habilita a gravação em um dos registradores.
b) (1,0) Preencha a tabela a seguir conforme o valor de X+Y no seu caso específico.
Justifique o valor de res obtido no seu caso específico (o que faz o programa?).
Os dados abaixo foram pegos pelo no Mars, no Instruction Counter. O programa utiliza o
valor de count como condição de parada, no meu caso é igual a 11 (6+5). O programa faz
a soma de (count-1), dos números da sequência, mas ignorando o primeiro já que o
incremento do contador no loop foi feito antes da soma. Ou seja, ele faz a soma dos 11
primeiros números, pulando o primeiro.
Valor de res # Instruções
Executadas do
Tipo R
# Instruções
Executadas do
Tipo I
# Instruções
Executadas do
Tipo J
# Total de
Instruções
Executadas
143 11 63 0 75
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
Figura 3 – Versão simplificada da CPU MIPS com pipeline de 5 estágios
3ª Questão – Considere a Figura 3, que representa uma versão bastante simplificada da
CPU MIPS com um pipeline de 5 estágios (ver Capítulo 4.6 do livro texto1) sem resolução
de conflitos e perigos (hazards).
a) (1,5) Identifique os problemas (conflitos e hazards) que ocorrerão ao executarmos o
programa p2q2.asm no projeto apresentado na Figura 3. Na sua resposta identifique as
instruções problemáticas e o problema associado a cada uma dessas instruções.
R: lui $1, 4097 com ori $4, $1, 0. Causa dependência de dados
ori $4, $1,0 com lui $1, 4097. Causa dependência de dados
lui $1, 4097 com lw $5, 72($1). Causa dependência de dados
addiu $10, $0, 0 com beq $10, $5, 5. Causa dependência de dados
beq $10, $5, 5. Pode gerar um conflito do tipo mudança de fluxo.
addi $4, $4, 4 com lw $8, 0($4). Sempre causa um conflito de referência de dados.
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
lw $8, 0($4) com add $9, $9, $8. Sempre causa um conflito de referência de dados.
bgez $0, -6. Sempre causa um conflito de mudança de fluxo.
lui $1, 4097 com sw $9, 76($1). Causa dependência de dados.
Esses problemas de dependência ocorrem quando uma instrução depende de um
resultado de uma instrução anterior, que ainda não está disponível. Os problemas de
fluxos de controle ocorrem quando tem salto, normalmente causados por instruções beq,
j, b e bne.
b) (1,0) Quais desses problemas poderiam ser resolvidos com mudanças de código
(inserção de instruções nop) e reorganização das instruções? Justifique sua resposta.
R: Para a dependência de dados é possível resolver com inserção de nops, que causa um
atraso no código e permitindo que os valores nos registradores estejam lá na hora que
precisarem dele. Podemos também fazer uma reorganização das instruções, dependendo
do caso, com isso podemos evitar o uso de alguns nops.
Para a mudança de fluxo também é possível usar nops, atrasando as tarefas antes de
ocorrer o desvio de fluxo.
4ª Questão – Considere agora a Figura 4, que representa a CPU MIPS com pipeline de 5
estágios completa, com resolução de conflitos e hazards no pipeline, conforme projeto do
Capítulo 4.8 do livro texto1. Considere também o programa p2q2.asm original, usado na
Questão 2.
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514,Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
Figura 4 – CPU MIPS com pipeline de 5 estágios e resolução de conflitos e perigos
(hazards)
a) (1,5) Identifique os elementos estruturais adicionados no projeto da CPU MIPS da
Figura 4 que foram capazes de solucionar os problemas identificados na sua resposta da
3ª Questão, letra a. Justifique sua resposta.
R: Os elementos que foram capazes de solucionar os problemas são Forwarding Unit,
verificador de igualdade na saída dos registradores e Hazard Detection Unit.
- Hazard Detection Unit: identifica quando é necessário adicionar bolhas no ciclo de
instruções ou nops.
- Forwarding Unit: faz o adiantamento de dados ainda não processados, como no
caso de um add que precisa de um dado anterior.
- Verificador de igualdade: identifica quando vai acontecer mudanças de fluxos,
como caso do beq. Se acontecer, ele zera as instruções à frente para não ocorrer
conflito.
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA
b) (1,0) Preencha a tabela a seguir correspondente à execução do programa p2q2.asm
original, conforme o valor de X+Y no seu caso específico, na CPU MIPS pipeline de 5
estágios representada na Figura 4.
Valor de res # Instruções
Executadas do
Tipo R
# Instruções
Executadas do
Tipo I
# Instruções
Executadas do
Tipo J
# Total de
Instruções
Executadas
143 11 63 0 75
Compare as tabelas da 2ª Questão e da 4ª Questão. Considere o fato de que na CPU
monociclo cada instrução gasta 1 ciclo para completar sua execução, enquanto que na
CPU pipeline de 5 estágios cada instrução gasta 5 ciclos para completar sua execução.
Se o tempo de ciclo for o mesmo em ambos os projetos, qual projeto é geralmente mais
vantajoso em termos de desempenho, monociclo ou pipeline? Justifique.
R: As tabelas são iguais, porque as instruções não são alteradas se a CPU for alterada. O
projeto geralmente é mais vantajoso com o pipeline, visto que o tempo de execução é
menor. Além disso, o pipeline finaliza com mais ciclos, no entanto aumenta o throughput
do sistema, rodando várias instruções ao mesmo juntas e reduzindo o tempo final de
execução, tornando o desempenho da CPU pipeline melhor.
Boa Prova!
Departamento de Informática (DI) / Centro Tecnológico (CT)
Av. Fernando Ferrari, 514, Campus de Goiabeiras, CEP: 29.075-910, Vitória/ES

Continue navegando