Buscar

Lista Prova1 Celso Saibel

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lista com Questões de 
Provas anteriores Arquitetura de Computadores Prof. Celso A. Saibel Santos 
 
1. As arquiteturas de uso geral atuais são normalmente referenciadas como máquinas von Neumman. Quais as 
principais características dessa arquitetura e sua principal limitação? 
 
2. Um dos conceitos-chave relacionados ao desempenho de uma arquitetura é o balanceamento entre 
processador, memória, estruturas de interconexão e dispositivos de entrada e saída. Explique como um 
balanceamento adequado/ruim influencia positivamente/negativamente o desempenho de uma arquitetura. 
 
3. A frequência do clock é uma das variáveis utilizadas em projetos de arquiteturas de computadores, em 
particular, dos processadores. Explique por que a mudança no tempo de ciclo de uma arquitetura não 
implica, necessariamente, em aumento imediato de desempenho. 
 
4. Considere o código de uma mesma aplicação em linguagem de alto-nível compilado para duas arquiteturas, 
uma RISC e outra CISC. Poderia se dizer que o código compilado para RISC sempre terá sempre mais bytes 
que o compilado para CISC? Explique sua resposta com argumentos convincentes. 
 
5. Estuda-se melhorar uma máquina adicionando-se a ela um modo vetorial. Um processamento rodando em 
modo vetorial é 20x mais rápido que o modo normal de execução. O percentual de tempo que pode ser 
utilizado por uma aplicação usando modo vetorial é chamado percentual de vetorização. 
a. Desenhe um gráfico com, no mínimo 4 pontos, mostrando o speedup (ganho de velocidade) em 
função do percentual de processamento realizado de processamento em modo vetorial. Chame o 
“eixo y” de “speedup alcançado” e o eixo x de “percentual de vetorização”. 
b. Qual o percentual de vetorização é necessário para alcançar o speedup de 2? 
c. Qual o percentual de vetorização é necessário para alcançar metade do speedup máximo possível 
usando o modo vetorial? 
 
6. Três melhorias com os seguintes speedups são propostos para uma nova arquitetura: (i) Speedup1 = 30; (ii) 
Speedup2 =20; (iii) Speedup3 = 10. Somente 1 melhoria é usada por vez para essas medidas. 
a. Se as melhorias 1 e 2 são utilizadas, cada uma, por 30% do tempo, qual fração de tempo deve ser 
utilizada pela melhoria 3 de forma a se obter um speedup global de 10? 
b. Considere que a distribuição do uso das melhorias é de 30%, 30% e 20% para as melhorias 1, 2 e 3, 
respectivamente. Assumindo que as 3 melhorias estão em uso, para qual fração do tempo de 
execução reduzido não haverá melhoria no uso? 
c. Considere que para um certo benchmark, a fração de uso é 15% para cada uma as melhorias 1 e 2 e 
70% para a melhoria 3. Deseja-se maximizar o desempenho. Se somente 1 melhoria pode ser 
implementada, qual delas deveria ser escolhida? Se 2 melhorias são possíveis, quais deveriam ser as 
escolhidas? 
 
7. (Pag. 43, Livro texto, 2ª Ed.) Considere uma máquina onde o CPI é 2.0 quando todos os acessos à memória 
resultam em acertos na cache (hits). Os único acessos a dados são feitos através de instruções (operações) do 
tipo load e store, as quais correspondem a cerca de 40% do total de instruções. Se a penalidade por falha de 
cache é de 25 ciclo de clock e a taxa de falhas é de 2%, quanto mais rápida seria a máquina se todas as 
instruções resultassem em acertos (hits) de cache? 
 
8. Considere que uma máquina tem um CPI de 3.0 para instruções aritméticas com inteiros, 10.0 para 
instruções aritméticas em ponto-flutuante, 2.0 para instruções de acesso à memória e 4.0 para instruções de 
desvio. Os resultados de vários benchmarks indicaram que, em média, 40% de instruções são de acesso à 
memória (load e store), 20% de desvios e o restante, operações da ULA. 
 
a. Qual o CPI médio para essa arquitetura, considerando que apenas operações aritméticas com inteiros 
são executadas? 
b. Qual a razão máxima entre operações em ponto-flutuante e operações de inteiros de forma a qua o 
CPI médio não ultrapasse 4.0? 
c. Suponha que seja possível se fazer uma melhoria dos acessos à memória através de uso de caches. Se 
a penalidade por falha de cache é de 25 ciclos de clock e a taxa de falhas é de 2%, quanto mais 
rápida seria a máquina se todas as instruções resultassem em acertos (hits) de cache? 
 
9. (Pag.45, Livro texto, 2ª Ed.) Considere que foi construído um compilador otimizado para uma máquina 
load-store para a qual as medidas de desempenho são mostradas na tabela a seguir. O compilador melhora 
em 50% o desempenho da execução das instruções lógica-aritméticas (ULA), sem reduzir os tempos para as 
instruções de load, store e desvios (branches). Ignorando qualquer outra mudança no sistema e assumindo 
um tempo de clock de 2ns (500MHz de taxa de clock) e um CPI não otimizado de 1.57, qual a relação de 
MIPS considerando código otimizado versus código não otimizado? O ganho na taxa de MIPS se reflete em 
ganho no tempo de execução? Explique. 
 
Tabela – Medidas na máquina load-store 
 
 
10. Explique como funcionam as 5 formas de endereçamento básicas da arquitetura MIPS mostradas. Compare-
as em termos de complexidade de execução da busca/utilização dos operandos: 
 
Byte Halfword Word
Registers
Memory
Memory
Word
Memory
Word
Register
Register
1. Immediate addressing
2. Register addressing
3. Base addressing
4. PC-relative addressing
5. Pseudodirect addressing
op rs rt
op rs rt
op rs rt
op
op
rs rt
Address
Address
Address
rd . . . funct
Immediate
PC
PC
+
+
 
 
11. Compare a eficiência de memória dos 4 estilos de conjunto de instruções das arquiteturas (ISA’s): 
− Stack—Todas as operações ocorrem no topo da pilha. Acesso à memória somente por operações push e 
pop; todas as outras instruções removem os operandos da pilha e os substitui pelo resultado. A 
implementação da operação usa uma pilha que acessa as duas entradas a partir do topo; acessos a outras 
posições da pilha são referências à memória. 
− Accumulator—Todas as operações ocorrem entre um único registrador e um endereço de memória. 
− Memory-memory—Todos os três operandos da instrução estão na memória. 
− Load-store—Todas as operações ocorrem em registradores e as instruções register-to-register têm 3 
operandos por instrução. 
 
Considere que existem 16 registradors de propósito geral. Os registradores são especificados por sequências 
de 4 bits. Para medir a eficiência de memória, são feitas as seguintes considerações sobre os 4 ISA’s: 
− O opcode tem sempre 1 byte (8 bits). 
− Todos os endereços de memória têm 2 bytes (16 bits) 
− Todos os dados dos operandos cabem em 4 bytes (32 bits). 
− Todas as instruções ocupam um número inteiro de bytes. 
 
As 4 diferentes implementações da operação C=A+B nos diferentes ISA’s são exemplificados abaixo. Note 
que a instrução Add tem operando implícitos nas arquiteturas baseadas em pilha e acumulador e explícitos 
para arquiteturas baseadas em registradores. A, B e C estão todos na memória e os valores de A e B não 
devem ser destruídos na operação: 
 
Stack Accumulator Register (register-memory) Register (load-store) 
Push A Load A Load R1,A Load R1,A 
Push B Add B Add R3,R1,B Load R2, B 
Add Store C Store R3,C Add R3,R1,R2 
Pop C Store R3,C 
 
Considere que não existe qualquer outra otimização do código para reduzir o tráfego de/para memória, e as 
variáveis A, B, C e D já estão armazenadas na memória inicialmente. 
 
• Baseando-se nos comandos mostrados na tabela anterior, escreva os 4 códigos em assembly (1 para cada 
estilo de arquitetura) que seja equivalente ao fragmento de código em linguagem de alto nível a seguir: 
 
A = B + C; 
D = A * C; 
E = A - B; 
 
• Calcule o número de bytes de instruções buscados na memória e o número de bytes de dados trocados 
entre a memória e a CPU. 
• Qual das arquiteturas é mais eficiente comrelação ao tamanho de bytes do código? Qual é arquitetura mais 
eficiente com relação ao total de largura de banda (transferência) de memória requerida para o código 
(código + dados)? 
 
12. Um certo benchmark foi realizado com 97.789 operações de ponto 
flutuante, conforme a tabela ao lado. O mesmo benchmark foi executado 
em um processador embarcado, após um processo de compilação com a 
otimização ativada. O processador embarcado é baseado em um modelo 
processador RISC que inclui unidades funcionais de ponto flutuante. 
Entretanto, o processador embarcado atualmente em uso não inclui o ponto 
flutuante por questões de custo, consumo de energia e também, por não 
haver necessidade de ponto flutuante para as aplicações destino. O 
compilador permite que as instruções de ponto flutuante sejam calculadas 
com as unidades de hardware ou com rotinas de software, dependendo das 
opções escolhidas para o compilador. 
 Operações em ponto flutuante 
 Operação Contagem 
 
Soma 41007 
 
Subtração 4114 
 
Multiplicação 36610 
 
Divisão 10700 
 
Conversão Int para PF 3003 
 
Comparação 2355 
 
TOTAL 97789 
O benchmark demorou 1,08 segundo no processador RISC original e 13,6 segundos usando o software em sua versão 
embarcada (sem otimizações do compilador). Suponha que o CPI usando o processador RISC original fosse medido 
como 10 e o CPI da versão embarcada do processador fosse medido como 6. 
a. Qual o número total de instruções executadas em ambas as execuções do benchmark? 
b. Qual o valor MIPS para ambas as execuções? 
c. Em média, quantas instruções de inteiros são necessárias para implementar a execução de uma operação em 
ponto flutuante usando rotinas em software? 
13. Escreva os códigos em linguagem de máquina para computar a expressão X=(A+B×C)/(A−−−−B×C) para as duas 
arquiteturas com instruções em linguagem de máquina disponíveis e formas de endereçamento para operações 
aritméticas conforme a tabela a seguir. Em seguida, determine o no de bytes de instruções buscados na memória e 
o no de bytes de dados trocados entre a memória e a CPU. 
Forma de Endereçamento 
 
OBSERVAÇÕES: 
Registrador-Memória Registrador 
 
1. Considere possíveis otimizações no código 
Load R1,M Load R1,M 
 
2. M é um endereço de memória 16 bits 
Store R1,M Store R1,M 
 
3. Ri é um registrador de 4 bits 
Add R3,R2,M Add R3,R2,R1 
 
4. Os opcodes possuem 8 bits 
Sub R3,R2,M Sub R3,R2,R1 
 
5. As instruções devem ter comprimentos múltiplos 
de 4 bits Mult R3,R2,M Mult R3,R2,R1 
 Div R3,R2,M Div R3,R2,R1 
 
6. Note que a linguagem não é MIPS

Outros materiais