1. A pastilha do processador Intel 80486 possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é organizado com mapeamento associativo por conjuntos de quatro linhas e com blocos de quatro palavras de 32 bits. A memória cache é organizada em 128 conjuntos. Existe um único "bit de linha válida" e três bits, BO, B1 e B2 (bits de uso para o algoritmo LRU), por conjunto. No caso de um acesso com falha na cache, o 80486 lê uma linha de 16 bytes da memória principal, em uma única leitura por meio do barramento de memória. Mostre como os diferentes campos do endereço são interpretados. 2. Uma memória cache associativa por conjuntos tem um tamanho de bloco de quatro palavras de 16 bits e um conjunto de duas linhas. A memória cache pode acomodar um total de 4048 palavras. A porção da memória principal que é cache tem dimensão de 64K x 32 bits. Mostre como os endereços do processador são interpretados. 3. Considere o seguinte código: for (i = O; i < 20; i++) for (j = O; j < 10; j + +) a[i] = a[i] * j; a. Dê um exemplo de localidade espacial no código. b. Dê um exemplo de localidade temporal no código. 4. Assumindo o pipeline de 4 estágios (BI: busca de instrução, DI: decodificação de instrução, EI: executa instrução, AR: armazena resultado), desenhe um diagrama de execução em pipeline para o seguinte fragmento de código. Assuma que o desvio não será tomado. ADD r1, r2, r3 SUB r4, r5, r6 BEQ r8, #0, r9 DIV r12, r13, r14 5. Desenhe um diagrama de tempo de um pipeline de dois estágios (busca e execução) para execução de um trecho de programa de quatro instruções. 6. Projete um código de operação com tamanho variável, de modo que permita que todas as operações a seguir sejam codificadas em uma instrução de 36 bits: i. Instruções com dois endereços de 15bits e um número de registrador de 3bits; ii. Instruções com um endereço de 15bits e um número de registrador de 3bits; iii. Instruções sem endereços ou registradores. iv. Suponha que um conjunto de instruções use um tamanho fixo de instruções de 16bits. As referências a operandos tem tamanho de 6bits. Existem k instruções com dois operandos e L instruções com zero operandos.
v. Qual o número máximo de instruções com um operando que pode ser fornecido? 7. Suponha que o endereço armazenado no contador de programa seja designado pelo símbolo X1. A instrução armazenada em X1 tem um campo de endereço (referência a operando) X2. O operando necessário para executar a instrução é armazenada uma palavra de memória de endereço X3. Um registrador índice contém o valor X4. Qual é a relação entre essas várias quantidades se o modo de endereçamento da instrução é i. direto; ii. indireto iii. indexado 8. Identifique as dependências de dados nesta seqüência de instruções: DIV r2, r5, r8 SUB r9, r2, r7 ASH r5, r14, r6 // r5=r14 deslocado r6 bits a esquerda MUL r11, r9, r5 BEQ r10, #0, r12 // desvia para endereço r10 se r12==0 OR r8, r15, r2 9. Suponha que é usado um pipeline de quatro estágios: busca, decodificação/iniciação, execução e resposta. Suponha que cada um dos estágios do pipeline consome um ciclo de relógio, exceto o estágio de execução. O estágio de execução gasta um ciclo para operações lógicas e para operações aritméticas simples sobre números inteiros, mas consome cinco ciclos para operações de carga (LOAD) de dado da memória. 10. Calcule os speedups de processadores pipeline com 2, 4, 8 e 16 estágios para um trecho de programa de 10 e 100 instruções. 11. Considere o seguinte programa em linguagem de montagem: I1: Move R3, R7 / R3 (R7) I2: Load R8, (R3) / R8 Memória (R3) I3: Add R3, R3, 4 / R3 (R3) + 4 I4: Load R9, (R3) / R9 Memória (R3) I5: BLE R8, R9, L3 / Desvia para L3 se (R9) > (R8) Esse programa inclui dependência de tipo escrita-escrita, leitura-escrita e escrita-leitura. Mostre essas dependências. 12. Descreva a Arquitetura básica proposta por Von Neumann e as vantagens da mesma em relação aos computadores anteriores à mesma. 13. Enumere as vantagens da microprogramação de instruções. 14. Descreva o ciclo de busca-decodificação-execução de instruções de uma CPU.
15. Um certo cálculo é altamente seqüencial. Explique se o mesmo seria executado de modo mais eficiente num processador pipeline ou num array processor. Justifique. 16. Descreva os princípios gerais em que se baseia a arquitetura superescalar. 17. Destaque as diferenças entre o nível de microprogramação e o nível de máquina convencional. 18. Que critérios devem ser adotados no projeto do formato de um conjunto de instruções? 19. Qual é a razão do uso de expansão do código de operação num conjunto de instruções de nível de máquina convencional? Como é implementada? 20. Explique o conceito de ortogonalidade do código de operação e operandos numa instrução de nível 3. 21. O que são Modos de Endereçamento? 22. Descreva: Endereçamento Imediato, Direto, Direto via Registrador, Indireto via Registrador, por Indexação e por Estrutura de Pilha. Destaque aplicações para as quais cada um destes modos é mais apropriado. 23. Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador. 24. Considere a execução do seguinte código em um pipeline de 5 estágios como definido na questão anterior: dadd R5, R6, R7 ld R6, 100(R7) dsub R7, R6, R8 dadd R7, R7, 1 sd 100(R7), R6 25. Quantos ciclos serão gastos para executar este código se não houver adiantamento de dados? E com adiantamento de dados? E se o processador possuir caches separadas para dados e instruções? 26. Considere a execução do seguinte código, com o mesmo pipeline descrito na questão anterior: Início: dadd R1, R2, R3 dadd R4, R5, R6 add R7, R8, R9 dadd R10, R11, R12 dadd R13, R14, R15 Se no primeiro ciclo a instrução correspondente ao label Início está sendo buscada, quais os registradores que estarão sendo lidos no quarto ciclo de execução,? Quais estarão sendo escritos? 27. Defina os conceitos de arquitetura VLIW, superpipelined e superescalar dos modernos processadores.
28. Dado um processador MIPS64 com um pipeline de 5 estágios, escreva um trecho de código em linguagem de montagem do MIPS64 em que ocorram as seguintes situações: a) Adiantamento de dados da saída para a entrada da ALU; b) Adiantamento de dados da saída do estágio de memória para a entrada da ALU; c) Uma bolha no pipeline devido a uma dependência de controle. 29. Considere o seguinte trecho de código em linguagem de montagem: dadd R5, R0, R0 daddi R20, R0, #400 Soma: ld R10, 1000(R20) dadd R5, R5, R10 dsubi R20, R20, #4 bnez R20, Soma Assuma que o pipeline do processador não possui mecanismos de stalls ou adiantamento de dados. Reescreva o código inserindo o menor número possível de nops para eliminar as dependências de dados. Se for possível, reordene as instruções para minimizar o número de nops (as instruções podem ser reordenadas desde que se preserve a equivalência semântica). 30. Considere o seguinte trecho de código: COPIA: ld sd R10, 1000(R20) R10, 2000(R20) dsubi R20, R20, 4 bnez R20, COPIA Assuma que o pipeline do processador não possui mecanismos de stalls ou adiantamento de dados. a) Reescreva o código inserindo o menor número de nops necessários; reordene as instruções, se possível, para minimizar o número de nops preservando a equivalência semântica. b) Escreva uma fórmula para o número de ciclos necessários para executar este laço como uma função de N (número de palavras copiadas), ou seja, se forem copiadas N palavras quantos ciclos serão necessários? Relacione os problemas que impedem que o pipeline obtenha a sua eficiência máxima na execução de um programa? 31. Quando acontece e como pode ser eliminado o conflito estrutural? 32. Descreva os tipos de dependências de dados, como e quando elas ocorrem e quais as técnicas para resolvê-las por hardware e por software? Que tipo (s) de dependência é(são) eliminada(s) com o renomeação de registradores?
33. Descreva as técnicas empregadas na resolução do conflito de controle, indicando quais são realizadas pelo compilador e quais pelo hardware (CPU). Comente as vantagens e desvantagens de cada técnica. 34. Descreva o funcionamento do branch target buffer, considerando as vantagens em usá-lo (considere o uso de 2 bits em cada entrada do buffer para previsão de desvio, mostrando a máquina de estados). Qual a vantagem dese usar um único bit ou dois bits na máquina de estados para a previsão de desvios? 35. Quando é necessário anular resultados de instruções já ou parcialmente executadas? 36. Descreva quais as vantagens e desvantagens de um processador realizar o acesso à memória através de apenas dois tipos de instruções: load e store? 37. Porque a implementação eficiente de pipelines só é possível em máquinas RISC? 38. Assuma que um programa tem um profile de execução onde 80% das instruções são simples (tais como AND, XOR, DADD e BEQZ) e o restante 20% são instruções complexas (tais como DMUL e DDIV). Adicionalmente considere que que as instruções simples precisam de 4 ciclos de máquina e as complexas precisam de 8 ciclos em uma máquina CISC (cada ciclo = 100 ns). Em uma máquina RISC, as instruções simples serão executadas em 1 ciclo, enquanto que as instruções complexas deverão ser simuladas por software necessitando, em média, 14 ciclos por instrução. Devido a sua simplicidade o tempo de ciclo em uma máquina RISC é de 70 ns. A máquina RISC será mais rápida que a CISC para na execução do programa mencionado? 39. Uma tabela de histórico de desvios (BHT) é uma pequena memória colocada no estágio de busca de instruções, indexada pelos bits mais baixos do endereço da instrução que está sendo buscada. Cada entrada na BHT codifica a predição do resultado da próxima execução de qualquer instrução de desvio que indexe essa entrada na tabela. i. Desenhe um diagrama de estados para um preditor bimodal e explique seu funcionamento. ii. Discuta a acurácia de predição desse esquema para um desvio no final de um loop. iii. Discuta a acurácia da predição de desvio se o preditor for de um bit. 40. Sobre a organização interna da CPU, é correto afirmar que: i. As operações aritméticas são realizadas diretamente pela Unidade de Controle; ii. Todos os registradores da CPU são visíveis ao usuário; iii. O registrador PC contém o endereço da instrução a ser buscada; iv. O registrador MAR contém uma palavra de dados a ser escrita na memória ou a palavra mais recentemente lida. 41. Analise as seguintes informações acerca dos modos de endereçamento:
I. O modo de endereçamento direto é aquele no qual o operando se encontra presente na instrução; II. O modo de endereçamento indireto permite um espaço de endereçamento maior, quando comparado ao modo de endereçamento direto; III.O modo de endereçamento à pilha é, na verdade, uma especialização do modo de endereçamento indireto via registrador. São verdadeiras as informações: (a) I, II e III; (b) I e II; (c) II e III; (d) I e III.