Baixe o app para aproveitar ainda mais
Prévia do material em texto
(1) LISTA DE EXERCÍCIOS – CONSTRUÇÃO DA CPU 1. Uma CPU pode ser modelada por meio de 2 partes básicas: caminho de dados e controle. Qual a função de cada uma das partes e como elas são usadas para executar as instruções de um programa. OBS.: O deslocamento de 2 bits permite que o campo de endereço de 26 bits acesse 228 posições de memória, os 6 bits restantes são provenientes do PC. Assim, o desvio incondicional é relativo ao PC. Caso o desvio deva ser de 32 bits é necessário realizar um desvio usando um registrador. 2. Em geral, processadores monociclos possuem relógio (clock) fixo. Com isso o tempo de execução de qualquer instrução é dado pelo tempo da instrução mais lenta. Numa implementação com relógio variável, cada classe de instrução possui um tempo de execução diferente que depende apenas dos atrasos no caminho de dados. Compare as implementações usando argumentos ligados ao controle (relógio e sinais) e ao desempenho final. 3. Implemente a instrução addi (soma imediata). Acrescente os caminhos de dados e sinais de controle que forem necessários para o funcionamento da instrução. Mostre as modificações na arquitetura monociclo da figura anterior (Figura 5.19 da 3ª Edição). addi rs, rt, operando rs ←←←← rt + operando 4. Idem exercício 2, mas com a instrução a ser acrescentada sendo a bne (branch if not equal). bne rs, rt, label se(rs != rt) $pc ←←←← label + $pc + 4 senão $pc ←←←← $pc + 4 5. Idem exercício 2, mas com a instrução a ser acrescentada sendo uma variante da lw (load word). lw rd, rs, rt rd ←←←← M[rs + rt] 6. Explique porque não é possível implementar a instrução swap sem modificar o banco de registradores. swap rs, rt rs ←←←← rt rt ←←←← rs Arquitetura de Computadores (2) 7. Explique como seria possível implementar a instrução swap quebrando-a numa sequência de instruções executáveis nessa arquitetura. 8. Seria possível eliminar o sinal de controle MemParaReg (MemtoReg) usando no seu lugar o sinal LerMem? 9. Determine se algum dos sinais de controle, diferentes do MemParaReg (MemtoReg), da implementação monociclo podem ser substituídos por outros sinais já existentes. Por que? 10. Modifique a organização do MIPS de forma a tirar a capacidade de especificar um deslocamento para instruções com acesso à memória. Especificamente, todas as instruções do tipo load-store com deslocamento diferente de 0 devem tornar-se pseudoinstruções e devem ser implementadas através de duas instruções. Exemplo: lw $t0, 104($t1) addi $at, $t1, 104 lw $t0, $at Que mudanças devem ser realizadas no caminho de dados e de controle para que esta modificação funcione? 11. Considerando a execução completa numa CPU monociclo de uma instrução do tipo R add $r1, $r2, $r3, mostre o conteúdo as de cada um dos registradores e da ULA durante cada uma das etapas de execução da instrução? Suponha que a arquitetura disponível é a mesma da Figura 5.19 mostrada anteriormente e que os tempos para propagação (veja na figura) dos sinais na ULA, somador, escrita e leitura em memória, escrita e leitura em registradores são, respectivamente, 2ns, 1ns, 4ns e 1ns. Os demais componentes têm tempos associados desprezíveis. Considerando o intervalo de tempo de 1 ciclo de clock, monte um gráfico para ilustrar em qual a partir de qual instantes de tempo os sinais de controle associados à execução de R devem ser gerados. Qual o tempo mínimo para a geração do sinal de controle RegDest indicado na figura? 12. Repita a questão para a execução de uma instrução do tipo memória lw $r1, 80($r2) 13. Repita a questão para a execução de uma instrução do tipo memória sw $r2, 4($r5) 14. O que diferencia uma CPU monociclo de uma CPU multiciclo? 15. A arquitetura multiciclo (figura a seguir) utiliza 1 única memória para dados e instruções, além de registradores extras, porém, somos obrigados a trabalhar com 2 memórias separadas (instruções e dados) na CPU monociclo da Figura 5.19 (anterior). Explique. 16. Qual a função dos registradores A, B e ALUOut na CPU multiciclo da Figura 5.26 a seguir. Qual a função de cada um dos multiplexadores nessa mesma arquitetura? Arquitetura de Computadores (3) 17. Um benchmark executado na arquitetura multiciclo anterior revelou o seguinte mix de instruções: 25% de loads, 10% stores, 11% de branches (beq), 2% de jumps e 52% de operações de ULA. Calcule o CPI médio, assumindo que cada etapa/estado de execução da CPU multiciclo é feita em 1 ciclo de clock? Em que situação encontraria o pior valor possível para o CPI? E o melhor valor? 18. Se o mesmo benchmark fosse executado na arquitetura monociclo, qual seria o CPI médio? Analisando os valores encontrados nessa questão e na anterior, o que pode ser concluído com relação ao desempenho das implementações? Discuta essa questão. 19. Suponha que o conjunto de instruções da arquitetura anterior passe a incluir operações de multiplicação e divisão de inteiros a serem executados num hardware especial associado à ULA. Qual o impacto disso na arquitetura da CPU (via de dados e controle). Você pode usar argumentos relacionados aos sinais de controle, inclusão de unidades, tempo de clock, etapas de execução. 20. Suponha que será necessário modificar o hardware de controle para que seja possível executar a instrução bne (branch if not equal) pela CPU. Defina os novos estados de controle e os valores dos sinais associados a esses estados a partir da máquinas de estados da Figura 5.38. 21. Suponha que será necessário agora acrescentar estados a mais na máquina de controle para o tratamento de instruções cuja execução ainda não está implementada na CPU. Essas instruções gerariam opcodes inválidos que se fossem detectados na etapa de decodificação, deveriam provocar o desvio do fluxo de programa para uma rotina de tratamento de erro. Em outras palavras, elas provocariam uma mudança no PC para uma rotina de tratamento de erro. Modifique a máquina de estados final da Figura 5.38 para incluir esse tratamento de erros (note que encontrar um opcode errado significa fazer um jump para um endereço fixo e pré-determinado). 22. Discuta a afirmação: Já que a instrução jump não usa registradores, nem computa valores para definir o desvio, ela poderia, em tese, estar concluída já no segundo estágio da execução multiciclo. Isso poderia ser feito? Explique. 23. Controladores por máquinas de estados são geralmente implementados usando lógica combinacional. Controladores implementados por microprogramas usam memórias. Arquiteturas modernas (a partir do 486, por exemplo) utilizam controles híbridos: parte hardwired para execução de instruções simples e parte microcódigo para instruções mais complexas. Explique a diferença entre as formas de controle e a vantagem de se usar uma abordagem “híbrida” como ocorre nas máquinas atuais. 24. Repita a questão 15 considerando uma CPU multiciclo. Arquitetura de Computadores (4) 25. Existem duas possibilidades de implementação do controle multiprogramado (ver figura a seguir): (a) sem nenhuma codificação, sendo que cada microinstrução corresponde a uma linha da memória armazena todos os bits para os sinais de controle da via de dados e (b) com codificação, sendo que cada microinstrução define um conjunto de sinais a ser enviado para uma lógica combinacional para gerar sinais de controle. - Considerando o esquema da figura a seguir para implementar o controle microprogramado, calcule o tamanho da memória de microcódigo supondo uma implementação de controle (a); - Compare as abordagens (a) e (b) em termos da complexidade e velocidade. PCWrite PCWriteCond IorD MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite AddrCtl Outputs Microcode memory IRWrite MemRead MemWrite RegDst Control unitInput Microprogram counter Address select logic O p[5 – 0] Adder 1 Datapath Instruction register opcode field BWrite
Compartilhar