Baixe o app para aproveitar ainda mais
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
Compartilhar