Lista de Exercícios – ACM 1) Neste exercício, você avaliará a diferença de desempenho entre duas arquiteturas de CPU, a CISC (Complex Instruction Set Computing) e a RISC (Reduced Instruction Set Computing). Genericamente falando, as CPUs CISC possuem instruções mais complexas do que as CPUs RISC e, portanto, precisam de menos instruções para realizar as mesmas tarefas. Entretanto, em geral uma instrução CISC, por ser mais complexa, leva mais tempo para ser completada do que uma instrução RISC. Considere que uma determinada tarefa precise de P instruções CISC e 2P instruções RISC, e que uma instrução CISC leva 8T ns (nanossegundos) para ser completada enquanto uma instrução RISC leva 2T ns. Com essas considerações, qual arquitetura apresenta o melhor desempenho? 2) Algumas vezes, a otimização pode melhorar significativamente o desempenho de um sistema computacional. Considere que uma CPU pode realizar uma operação de multiplicação em 10 ns e uma operação de subtração em 1 ns. Quanto tempo a CPU levará para calcular o resultado da equação d = a*b – a*c? Você poderia otimizar a equação de modo que ela levasse menos tempo? 3) Suponha que você trabalhe em uma empresa, e seja o responsável pela aquisição de um novo computador. Imagine que fosse apresentada a você uma lista com contenha muitos computadores a considerar para a compra. Você poderia usar o custo dividido pelo tempo de execução da aplicação a ser mais utilizada pela empresa como métrica para ajudar em sua decisão de compra? E quanto ao custo multiplicado pelo tempo de execução? Se uma das duas fórmulas não puder ser usada, apresente um exemplo simples que demonstre por que não. 4) Queremos comparar dois computadores diferentes: M1 e M2. As seguintes medições foram feitas nesses computadores: Programa 1 2 Tempo em M1 (em seg.) 2,0 5,0 Tempo em M2 (em seg.) 1,5 10,0 Considerando que o custo de M1 é de US$500,00 e de M2 US$800,00, responda: a) Qual computador possui o melhor desempenho para essa carga (workload)? O quanto melhor? b) Que computador é mais produtivo para essa carga (leve em conta o custo)? O quanto mais? 5) No mercado de embutidos, no qual o custo é um fator decisivo, os processadores algumas vezes implementam ponto flutuante apenas por software. Estamos interessados em duas implementações de um computador, uma com e uma sem hardware de ponto flutuante especial. Considere um programa, P, com o seguinte mix de operações: Multiply de ponto flutuante 10% Add de ponto flutuante 15% Divide de ponto flutuante 5% Instruções de inteiros 70% O computador MFP (computador com ponto flutuante) possui hardware de ponto flutuante e, portanto, pode implementar as operações de ponto flutuante diretamente. Ele exige o seguinte número de ciclos de clock para cada classe de instrução: Multiply de ponto flutuante Add de ponto flutuante Divide de ponto flutuante Instruções de inteiros 06 04 20 02 O computador MNFP (computador sem ponto flutuante) não possui qualquer hardware de ponto flutuante e, então, precisa emular as operações de ponto flutuante usando instruções de inteiros. Todas as instruções de inteiros levam 2 ciclos de clock. O número de instruções de inteiros necessário para implementar cada uma das operações de ponto flutuante é o seguinte: Multiply de ponto flutuante Add de ponto flutuante Divide de ponto flutuante 30 20 50 Os dois computadores possuem uma velocidade de clock de 1.000MHz. Encontre os índices de MIPS nativos para ambos os computadores. 6) Se o computador MFP no Exercício 5 precisa de 300 milhões de instruções para esse programa, de quantas instruções de inteiros o computador MNFP precisa para o mesmo programa? 7) Considerando as contagens de instruções do Exercício 5, qual é o tempo de execução (em segundos) para o programa no exercício ser executado no MFP e no MNFP? 8) Você é o diretor de projeto de um novo processador. O projeto do processador e o compilador estão completos e, agora, você precisa decidir entre produzir o projeto atual como está ou gastar mais tempo para melhorá-lo. Você discute esse problema com sua equipe de engenharia de hardware e chega às seguintes opções: a. Deixar o projeto como está. Chame esse computador básico de Mbase. Ele possui uma velocidade de clock de 500MHz e as seguintes medições foram feitas usando um simulador para Mbase: Classe de instrução CPI Freqüência Classe de Instrução A B C D CPI 2 3 3 5 Freqüência 40% 25% 25% 10% b. Otimizar o hardware. A equipe de hardware afirma que pode melhorar o projeto do processador para conferir-lhe uma velocidade de clock de 600MHz. Chame esse computador de Mopt. As seguintes medições foram feitas usando um simulador para Mopt: Classe de instrução CPI Freqüência Classe de Instrução A B C D CPI 2 2 3 4 Freqüência 40% 25% 25% 10% Qual é o CPI para cada computador? 9) escrever quaisquer registradores, que leva o mesmo tempo de uma instrução de inteiros. Considere que o tempo de acesso a unidades de memória leve 200ps, ALU 100ps os e registradores 50ps. Nestes exercícios, encontraremos o índice de desempenho entre uma implementação em que o ciclo de clock é diferente para cada classe de instrução e uma implementação em que todas as instruções possuem o mesmo tempo de ciclo de clock. Considere o seguinte: Todos os loads levam o mesmo tempo e representam 30% das instruções. Todos os stores levam o mesmo tempo e representam 15% das instruções. As instruções no formato R representam 25% do mix. Os branches representam 10% das instruções, enquanto os jumps respondem por 5%. Soma e subtração de ponto flutuante levam o mesmo tempo e, juntas, representam 5% das instruções. Multiplicação e divisão de ponto flutuante levam o mesmo tempo e, juntas, representam 10% das instruções. a) Encontre o tempo para as operações de ponto flutuante. b) Descubra o tempo para o processador com uma extensão fixa de ciclo de clock igual à instrução mais longa. c) Encontre o tempo médio por instrução para o processador com um clock de extensão variável. 10) Descreva as características gerais de um programa que exibiria muito pouca localidade temporal e espacial com relação a buscas de instruções. 11) Descreva as características gerais de um programa que exibiria quantidades muito altas de localidade temporal, mas muito pouca localidade espacial com relação a buscas de instruções. 12) Descreva as características gerais de um programa que exibiria muito pouca localidade temporal, mas quantidades muito altas de localidade espacial com relação a buscas de instruções. 13) Considere uma hierarquia de memória usando uma das três organizações para a memória principal mostradas na figura abaixo. Suponha que o tamanho do bloco da cache é de 16 palavras, que a largura da organização (b) da figura é de quadro palavras e que o número de bancos na organização (c) é quatro. Se a latência da memória principal para um novo acesso é de 10 ciclos de clock de barramento de memória, e o tempo de transferência é de um ciclo de clock de barramento de memória, quais são as penalidades de memória para cada uma dessas organizações? 14) Suponha que um processador com tamanho de bloco de 16 palavras tenha uma taxa de falhas efetiva por instrução de 0,5%. Suponha que o CPI sem perdas de cache seja 1,2. Usando as memórias descritas na figura acima e o exercício anterior, o quanto esse processador é mais rápido usando a memória larga do que usando memórias estreitas ou intercaladas?