Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA ARQUITETURA DE COMPUTADORES Exercícios – Lista 5 1. Suponha que você tenha uma máquina com pipeline implementado assumindo que os desvios nunca serão realizados. Se cada instrução leva 1 ciclo, e a penalidade (caso o desvio seja realizado) leva 5 ciclos, quantos ciclos serão gastos para executar o programa abaixo quando as posições 13 e 14 contêm (a) 1 e 5, (b) 5 e 1, (c) 1 e 1, respectivamente? 00: LOD 13 01: SUB 14 02: JMN 7 03: JMZ 10 04: LOD-C -1 05: STO 15 06: JMP 12 07: LOD-C 1 08: STO 15 09: JMP 12 10: LOD-C 0 11: STO 15 12: HLT 13: 14: 15: Mnemônico Significado SUB X Subtrai o conteúdo do endereço X de AC LOD X Carrega o conteúdo de X no AC LOD-C X Carrega o número X no AC STO X Armazena o conteúdo de AC no endereço X JMP X Desvia controle para o endereço X JMZ X Desvia para o endereço X se AC for zero JMN X Desvia para o endereço X se AC for negativo HLT Finaliza processamento Resposta: as seguintes instruções, e tempo em ciclos, serão realizadas para cada caso: (a) 00 -> 01 -> 02 => 07 -> 08 -> 09 => 12 [totalizando 17 ciclos], (b) 00 -> 01 -> 02 -> 03 -> 04 -> 05 -> 06 => 12 [totalizando 13 ciclos], (c) 00 -> 01 -> 02 -> 03 => 10 -> 11 -> 12 [totalizando 12 ciclos]. Note que cada instrução gasta 1 ciclo, a menos que seja um desvio e este seja realizado. Neste caso (simbolizado por =>), além do 1 ciclo da instrução, adiciona-se 5 ciclos de penalidade. 2. Considere um processador no qual 20% das instruções são desvios condicionais e os outros 10% são desvios do tipo loop. Os desvios condicionais podem ser previstos com 70% de acerto e os desvios do tipo loop com 90% de acerto. A penalidade no caso de previsão errada é de 5 ciclos. Não existe penalidade para desvios incondicionais ou desvios previstos corretamente, ou seja, neste caso gasta-se um ciclo. Calcule o tempo médio de execução de uma instrução no pipeline deste processador. Resposta: Tme = 0,7*[1] + 0,2*[0,7*(1) + 0,3*(1+5)] + 0,1*[0,9*(1) + 0,1*(1+5)] = 0,7 + 0,5 + 0,15 = 1,35 ciclos. 3. O que significa as representação big-endian e little-endian? Qual é melhor? Dê a representação big-endian e little-endian para o número inteiro 15251. Assuma uma representação de 32 bits (4 bytes). Reposta: Significam duas formas distintas de se representar dados que cruzam a fronteira do byte. Nenhuma é melhor do que a outra visto que a escolha entre as duas pode ser feita de forma arbitrária. A representação de 15251 em big-endian é 00000000 00000000 00111011 10010011, e em little- endian é 10010011 00111011 00000000 00000000. 4. Um computador tem uma cache de dois níveis. Suponha que 80% das referências à memória seja realizada pela cache de primeiro nível, 15% pela cache de segundo nível, e 5% pela memória principal. Os tempos de acesso são 5 ns, 15 ns e 60 ns respectivamente, sendo que os tempos para a cache de segundo nível e memória principal iniciam a contar no momento em que se sabe da sua necessidade (um acesso à cache de segundo nível só inicia quando ocorre uma falha na cache de primeiro nível). Qual é o tempo médio de acesso? Reposta: O tempo médio de acesso seria 0,8*5 + 0,15*(5 + 15) + 0,05*(5 + 15 + 60) que é igual a 11ns. 5. Considere o algoritmo de Hamming para correção de erros simples. Assumindo a palavra de dados 11011110, determine quantos bits adicionais de verificação serão necessários e quais serão seus valores. Resposta: são necessário 4 bits adicionais de verificação. Os bits da palavra de código resultante, considerando o bit 1 como sendo o mais a esquerda, são: 1(?)2(?)3(1)4(?)5(1)6(0)7(1)8(?)9(1)10(1)11(1)12(0). Assumiremos paridade par. Como o bit 1 verifica os bits 3,5,7,9,11, seu valor deve ser 1. O bit 2 verifica os bits 3,6,7,10,11, e seu valor será 0. O bit 4 verifica os bits 5,6,7,12 e seu valor será 0. E o bit 8 verfica os bits 9,10,11,12 e seu valor será 1. Deste modo, a palavra código resultante será [1][0]1[0]101[1]1110
Compartilhar