Baixe o app para aproveitar ainda mais
Prévia do material em texto
ORGANIZAÇÃO DE COMPUTADORES Linguagens assembly, compilação e desempenho4 Assinale Verdadeiro ou Falso. (Questões 1 a 5) EXERCÍCIOS DE APOIO Apenas para praticar. Não vale nota. Para implementar as chamadas de funções/procedimentos (procedure call) em assembly do MIPS, utilizam-se as instruções jal e jr. É necessário salvar os registradores $s, que serão utilizados pela função na pilha, e restaurá-los antes de retornar. ( ) Verdadeiro ( ) Falso A resposta correta é: Verdadeiro. 1. Caso seja um procedimento folha, é necessário salvar o registrador $ra. ( ) Verdadeiro ( ) Falso RESPOSTA: A resposta correta é: Falso - Os procedimentos folha não chamam outros procedimentos e assim não é preciso salvar $ra. Funções que chamam outras funções devem salvar $ra antes de chamar a função para poder retornar ao ponto de chamada. 2. As arquiteturas dos conjuntos de instruções de ARM e MIPS são similares, sendo ambos RISC. Uma das diferenças está no número de registradores disponíveis. ( ) Verdadeiro ( ) Falso RESPOSTA: A resposta correta é: Verdadeiro. 3. Um conjunto de instruções complexo torna a implementação mais difícil. Assim, na arquitetura IA-32, ocorre a tradução das instruções para microoperações, que são similares às instruções RISC. ( ) Verdadeiro ( ) Falso RESPOSTA: A resposta correta é: Verdadeiro. 4. Devido à decisão de manutenção de compatibilidade da ISA, o número de instruções existentes na arquitetura x86 manteve-se constante ao longo do tempo. ( ) Verdadeiro ( ) Falso RESPOSTA: A resposta correta é: Falso - O número de instruções existentes na arquitetura x86 cresceu significativamente ao longo do tempo, pois a decisão de manter a compatibilidade implica em manter instruções antigas mesmo com a adição de novas instruções. 5. Faça o download e execute o tutorial do simulador MARS (download e tutorial disponível em https://courses.missouristate.edu/KenVollmar/MARS/ (https://courses.missouristate.edu/KenVollmar/MARS/) . Familiarize-se com as ferramentas disponíveis (menu Tools). Leia e entenda o código em assembler para o cálculo de números de Fibonacci, disponível em https://courses.missouristate.edu/KenVollmar/MARS/Fibonacci.asm (https://courses.missouristate.edu/KenVollmar/MARS/Fibonacci.asm) . Modifique o código para que o tamanho do vetor seja 5. Execute o código no simulador MARS. Responda: 6. Qual o número total de instruções executadas? Como é a distribuição para as seguintes classes: ULA, desvio (branch e jump) e memória (load e store)? RESPOSTA: Utilizando a ferramenta Instruction Statistics, obtém-se que o número total de instruções é 94, sendo 54 de ULA, 10 de desvio (branch e jump) e 17 de memória (load e store). a. Como é a distribuição das instruções nos tipos R, I e J? RESPOSTA: Utilizando a ferramenta Instruction Counter, obtém-se que a distribuição das instruções é: R = 21%, I = 77% e J = 1 %. b. https://courses.missouristate.edu/KenVollmar/MARS/ https://courses.missouristate.edu/KenVollmar/MARS/Fibonacci.asm Quais os valores dos registradores $s e $t utilizados ao final da execução? Justifique todas as respostas, e mostre os resultados no simulador. RESPOSTA: Os valores dos registradores $s e $t utilizados ao final da execução são indicados nas figuras a seguir. c. Este é um trecho de código para o MIPS: lw $v1, 0($a0) addi $v0, $v0, 1 sw $v1, 0($a1) addi $a0, $a0, 1 Considere as seguintes afirmações sobre esse trecho de código. 7. A memória de instruções é acessada duas vezes.I. Assinale a alternativa correta: RESPOSTA: A resposta correta é a alternativa c) "Apenas a afirmação II está correta." A memória de instruções é acessada quatro vezes.II. A memória de dados é acessada quatro vezes.III. Apenas as afirmações I e III estão corretas.a. Apenas as afirmações II e III estão corretas.b. Apenas a afirmação II está correta.c. Apenas a afirmação I está correta.d. As afirmações I, II e III estão corretas.e. Considere as seguintes afirmações sobre tipos de conjuntos de instruções. Assinale a alternativa correta: RESPOSTA: A resposta correta é a alternativa d) "Apenas a afirmação II está correta." 8. Uma arquitetura RISC (Reduced Instruction Set Computer) se caracteriza pela redução do tempo médio de execução das instruções de máquina. I. Uma arquitetura CISC (Complex Instruction Set Computer) se caracteriza por ter instruções mais complexas, objetivando diminuir o número de instruções que um programa necessita para sua implementação. II. Em arquiteturas RISC (Reduced Instruction Set Computer), tipicamente há pouco trabalho para o compilador. III. As afirmações I, II e III estão corretas.a. Apenas a afirmação I está correta.b. Apenas a afirmação III está correta.c. Apenas a afirmação II está correta.d. Apenas as afirmações I e II estão corretas.e. Considere as seguintes afirmações: Assinale a alternativa correta: RESPOSTA: A resposta correta é a alternativa d) "Apenas a afirmação III está correta." 9. Um conjunto de instruções mais complexo implica em desempenho melhor.I. Programas escritos em linguagem assembly terão obrigatoriamente melhor desempenho. II. Atualmente, os compiladores conseguem lidar com paralelismo em nível de instrução e hierarquia de memória melhor do que a maior parte dos programadores. III. As afirmações I, II e III estão corretas.a. Apenas a afirmação II está correta.b. Apenas as afirmações I e III estão corretas.c. Apenas a afirmação III está correta.d. Apenas a afirmação I está correta.e. Considere as seguintes afirmações sobre os princípios de projeto do MIPS.10. Assinale a alternativa correta: RESPOSTA: A resposta correta é a alternativa a) "As afirmações I, II e III estão corretas." Um dos princípios de projeto do MIPS é que a simplicidade favorece a regularidade. Por exemplo, todas as operações aritméticas têm a mesma forma, o que aumenta o desempenho. I. Outro princípio de projeto do MIPS é que menor é mais rápido, e está relacionado ao uso de banco de registradores e seu tamanho. II. Outro princípio de projeto do MIPS está relacionado ao uso do campo imediato nas instruções. Como constantes pequenas são comuns, utilizar o imediato evita o uso de instruções de acesso à memória. III. As afirmações I, II e III estão corretas.a. Apenas a afirmação I está correta.b. Apenas a afirmação II está correta.c. Apenas as afirmações I e II estão corretas.d. Apenas a afirmação III está correta.e. Considere as seguintes afirmações sobre organizações de computadores. Assinale a alternativa correta: RESPOSTA: A resposta correta é a alternativa e) "Apenas as afirmações II e III estão corretas." 11. Em um processador com organização do tipo load/store, somente é possível realizar operações aritméticas com operandos em registrador. I. Em um processador com organização baseada em acumulador, um dos operandos está no registrador acumulador obrigatoriamente. II. Em um processador com organização do tipo memória-memória, é possível realizar operações aritméticas com um operando na memória. III. Apenas a afirmação I está correta.a. Apenas a afirmação II está correta.b. Apenas a afirmação III está correta.c. As afirmações I e II e III estão corretas.d. Apenas as afirmações II e III estão corretas.e. As questões a seguir tratam da tradução de C para MIPS. Assuma que as variáveis g, h, i e j são dadas e podem ser consideradas inteiros de 32 bits, como declarado em um programa em C. RESPOSTA: 12. f = g + h + i + j;a. f = g + (h + 5);b. Para as linhas em C acima, qual é o código assembly MIPS correspondente? Use o número mínimo de instruções assembly MIPS. I. Para as linhas em C acima, quantas instruções em assembly MIPS são necessárias para executar cada linha? II. Se as variáveis f, g, h, i e j têm valores 1, 2, 3, 4 e 5, respectivamente, qual o valor final de f? III. ESCONDER GABARITO I-a) add f, g, h add f, f, i add f, f, j I-b) addi f, h, 5 addi f, f, g II-a)3 II-b) 2 III-a) 14 III-b) 10 As questões a seguir tratam da tradução de MIPS para C. Assuma que as variáveis g, h, i e j são dadas e podem ser consideradas inteiros de 32 bits, como declarado em um programa em C. RESPOSTA: I-a) f = g + h I-b) f = g + h II-a) 5 II-b) 5 13. add f, g, h a. addi f, f, 1 add f, g, h b. Para as linhas em assembly MIPS acima, qual é o código em C correspondente?I. Se as variáveis f, g, h, e i têm valores 1, 2, 3 e 4, respectivamente, qual o valor final de f? II.
Compartilhar