Baixe o app para aproveitar ainda mais
Prévia do material em texto
2020.2 - ARQUITETURA DE COMPUTADORES QUESTIONÁRIO 9 –Processadores- parte 2 – Instruções de Máquina-Ciclo-Inst- Componentes-vídeos 38-42 GABARITO 1. O que significa CI – contador de instrução? Qual sua função em um processador? Resp: CI – contador de instrução. É um registrador que armazena o endereço da próxima instrução a ser realizada. A alteração de seu conteúdo indica a sequência de execução de um programa. Normalmente, o CI é alterado (em um dos passos do ciclo de instrução soma-se um valor x ao seu conteúdo) para apontar para aa próxima instrução contígua na memória, na sequência, conforme estabelecido pelo princípio da localidade). Porém, às vezes, a sequência deve ser alterada e isso acontece por meio de uma instrução de máquina específica para isso (instrução de desvio). 2. Qual a finalidade de um Ciclo de Instrução? Resp: Sabe-se que os processadores são projetados para executar instruções de máquina, uma a uma. A execução de uma instrução é realizada em pequenas etapas (microoperações) segundo um algoritmo predetermiando, armazenado na unidade de controle (“cérebro”) do processador. Este algoritmo é denominado Ciclo de Instrução. Assim, como se diz que um determinado processador é capaz ade realizar, por exemplo, 100 bilhões de instruções por segundo (100 MIPS), isso é igual a se afirmar que o referido processador executa 100 milhões de ciclos de instrução por segundo. A partir das etapas do ciclo de uma instrução pode-se deduzir quais os dispositivos básicos que um processador precisa ter para funcionar adequadamente. 3. Quando um processador obtém uma cópia da instrução que será realizada naquele momento, como ele identifica o que ela faz (qual operação) e, em consequência, inicia sua execução propriamente dita? Resp: Cada instrução tem um grupo de seus bits que indica qual a operação a ser realizada (código da operação-C.Op). Em um dos passos do ciclo de instrução, este C.Op. é introduzido em um dispositivo chamado de decodificador de instrução. Sua saída é específica para cada instrução e vai desencadear a execução de microperações para execução da referida operação. Associação Carioca de Ensino Superior Centro Universitário Carioca 4. Quais são as partes componentes de uma instrução de máquina. Qual o segnificado de cada uma? Resp: Uma instrução de máquina é constituída de 2 partes básicas (2 grupos de bits para cada uma): código de operação e operando (s). O C.Op é um grupo de bits que identifica qual a operação a ser realizada por aquela instrução; p.ex., a instrução SOMAR A, B tem o C.Op de SOMAR (em linguagem de máquina é um grupo de bits com esta finalidade. Cada instrução tem um C.Op. específico, havendo tantos C.Op. quantas operações foram programadas em fábrica naquele processador. Campo Operando (s) – Op, identifica o ou os dado(s) que serão manipulados pela instrução. Se é SOMAR então devem existir 3 operandos (um dado a ser somado com outro dado e o resultado); há instruções que os 3 campos operandos são explícitos e dizemos que é uma instrução de 3 operandos e há outras que só tem 2 operandos e até mesmo instruções com 1 operando. 5. Como se interpreta a instrução Assembly: OUT tec7, AX? Resp: É uma instrução de E/S com 2 operandos. Ela transfere um dado de um registrador para uma porta de saída (o barramento). No exemplo, o C.Op é OUT e AX é o nome do registrador de origem e tec7 é a porta de saída especificada (pode ser uma impressora ou outro dispositivo qualquer de saída). Usualmente não se precisa saber de cabeça cada significado de instrução assembly (a não ser programadores muito experientes em uma determinada linguagem), pois basta olhar no manual o significado. Este exercício serviu apenas para se verificar a lembrança dos slides do vídeo 21, pois no exemplo de instruções há uma muito semelhante a esta. 6. Um processador possui 16 registradores de dados e um conjunto de 97 instruções de máquina, todas com 2 operandos, cada um deles indicando um endereço de registrador. Qual seria o tamanho mínimo do registrador RI? Supondo que a memória desse sistema tenha 64M endereços, qual deverá ser a largura mínima do CI? Resp: O RI (registrador de instrução) é um registrador que armazena a instrução corrente (a que está sendo executada) e, por isso, deve ter uma largura em bits igual a de uma instrução. Então, para saber sua largura deve-se obter o tamanho (a largura) em bits das instruções que ele armazena. No caso, o enunciado informa que toda instrução tem 2 operandos (que são endereços de cada um dos 16 registradores) mais um campo que toda instrução tem: o do C.Op. Como há 16 registradores, então endereço de cada um é um número com 4 bits, pois sabe-se que 2E = N, sendo N=16 e E=4. E o campo C.Op tem 7 bits, para poder conter cada um dos 97 C.Op. (se tiver 6 bits só pode representar 64 C.Op (26 = 64) e 7 dará para 128 códigos, sobrando C.Op ainda não definidos. Somando alargura dos 3 campos (7 + 4 + 4) dará 15 bits para largura de cada instrução, que também será a largura do RI Como 2E = N e, há N = 64M endereços, então E = 26 bits 7. A manipulação de dados pelo processador requer que ele entenda o tipo de dados que vai manipular, de forma a representá-lo corretamente. O tipo de dados é informado ao processador por: A) análise léxica e sintática b)declaração de variável c)compilação d)interpretação e)análise prévia de tipo de dados Resp: Quando o programador declara a variável, isso está indicando ao compilador e, posteriormente, ao processador qual o tipo de dado da respectiva variável. 8. Um processador (UCP-Unidade Central de Processamento) executa cada instrução em pequenas etapas, apresentadas a seguir, em uma ordem não necessariamente correta: 1. Alterar o contador de programa para indicar a próxima instrução. 2. Se a instrução usar uma palavra na memória, determinar onde essa palavra está. 3. Determinar o tipo de instrução trazida. 4. Trazer a próxima instrução da memória até o registrador. 5. Voltar à primeira etapa para iniciar a execução da instrução seguinte. 6. Trazer a palavra para dentro de um registrador da CPU, se necessário. 7. Executar a instrução. Qual deve ser a sequência correta das etapas com que um processador realiza suas atividades durante a execução de um programa? Como é conhecido o conjunto dessas etapas? Resp: O ciclo de instrução é usualmente constituído das seguintes etapas: Busca da instrução- Incremento do CI – Decodificação do código de operação- Busca dos operandos – Execução da operação – Volta ao início para buscar a próxima. A seuqência correta das etapas é, então:: 4– 1 – 3 – 2 – 6 – 7 – 5 9. Por que o registrador Contador de Instrução (CI) ou Programa Counter (PC) é incrementado sempre que uma instrução é buscada na memória para ser executada? Resp: Para que o processamento seja automático. Como se deseja que o processador execute uma instrução em sequência a outra anterior, ao buscar uma, ele deve já se preparar para a buscar a outra e para isso, deve obter seu endereço. Ora, como o CI é o registrador que armazena endereços de instruções, ele deve ser sempre incrementado para o próximo endereço. 10. Durante a realização do ciclo de uma instrução, uma das etapas é: “Decodificar o C. Op. para definir qual a operação a ser realizada e emissão dos sinais apropriados para sua execução.” Qual é o dispositivo do processador que é responsável por implementar esta etapa? E a qual das duas áreas lógicas do processador ele se enquadra? Resp: O dispositivo é o decodificador de instruções. Ele pertence a área de controle. O decodificador de instrução deve ter, na entrada, uma quantidade de fios igual a largura do C. Op. e na saída 2COp fios, um apontando para a execução de cada instrução de máquina. A maioria dos processadores,no entanto, não sai de fábrica com a quantidade de instruções em valor máximo possível (2COp), sobrando sempre alguns códigos de operação para uma versão futura. 11. Um processador possui 32 registradores de dados e um conjunto de 184 instruções de máquina, todas com 2 operandos, cada um deles indicando um endereço de memória do dado. As instruções desse sistema possuem todas a mesma largura de 48 bits. Pergunta-se: a) Qual deverá ser a capacidade máxima de endereços da memória deste sistema? b) Qual deverá ser o valor de fios de entrada e de saída do decodificador de instruções? c) Se o projeto do processador fosse alterado para que o formato de todas as instruções fosse C.Op R1, R2, R3, onde R1, R2 e R3 fossem endereços dos registradores de dados, qual deveria ser o tamanho mínimo de cada instrução de máquina, conservando-se os demais dados? Resp: a) Se ele possui 108 instruções de máquina, então também deve ter 108 C.Op. e, neste caso, o campo C.Op da instrução deve ter largura mínima de 7 bits (pois 6 bits só permitiria 64 C.Op). Assim, sobram 40 bits para os dois campos operandos (47 – 7 = 40) e, conclui-se que cada campo Op deve ter 20 bits, pois é o resultado da divisão de 40 / 2. Como o campo Op armazena o endereço dos dados, significa que cada endereço tem 20 bits e N = 2E = 220 = 1M (um mega) endereços. b) 7 fios de entrada (COp = 7 bits) e no mínimo 108 de saída ( o normal seria ter 128 fios de saída, pois 27 = 128. c) Como o sistema tem 32 registradores, isso significa que cada registrador tem um endereço com largura de 5 bits (25 = 32). E como tem 3 campos de endereços de registradores, a instrução terá 3 x 5 bits = 15 bits para os campos de R1, R2 e R3. O campo C.Op permanece com 7 bits, pois foi afirmado para conservar os demais dados. Então, 7 + 8 = 15 bits seria o tamanho de cada instrução. 47 bits Op 2 Op 1 C.Op 7 bits 12. O que se entende, em computação, por código fonte? E código executável? Resp: Código fonte é o conjunto de instruções de um programa elaborado, por um programador, em linguagem de alto nível. É o programa original desenvolvido. Para este programa (código fonte) se tornar um elemento executável (isto é, cujas instruções estão em binário, no formato interpretável pelo processador), necessita ser convertido no referido código binário, este sim, chamado código executável (normalmente, o arquivo com o código binário possui terminação .EXE). Quando um usuário do sistema aciona a execução do programa (clicando duas vezes no arquivo .exe ou no ícone representativo do programa, etc) o Sistema Operacional inicia o processo de execução do mesmo. 13. O Zilog Z80 é um microprocessador de 8 bits, projetado e vendido pela Zilog, que foi largamente utilizado, por exemplo, em desktops e sistemas embarcados. A linguagem de montagem (assembly) do Z80 é projetada para minimizar o número de diferentes códigos de operação (“opcodes”) correspondentes ao conjunto de operações primitivas e para fornecer uma descrição consistente de operandos. O movimento de dados é indicado em primeiro lugar por um único código de operação, por exemplo LD, independente do movimento ser entre diferentes registradores ou registradores e locais de memória. O primeiro operando de uma instrução LD é o destino da operação, e o segundo operando é a fonte da operação. Descreva o que ocorre quando o processador lida com o código de operação a seguir: LD A, B Resp: Ele transfere um valor armazenado no endereço B (fonte ou origem) para um outro local de armazenamento cujo endereço é representado por A (destino). 14. Todo processador é projetado para executar diretamente um conjunto de operações promitivas, cuja descrição e implementação é realizada por meio de binários chamados de Instrução de Máquina. Sobre este assunto, analise as afirmações a seguir e indique a opção verdadeira: A) Toda instrução de máquina possui obrigatoriamente um campo de bits chamado Código da Operação CORRETO- senão, a instrução não seria identificada nem executada pelo processador. B) Um processador que possui instruções de máquina com largura do campo código da operação igual a 7 bits, poderá ter, no máximo, 127 instruções INCORRETO- poderia ter, no máximo, 128 instruções (27 = 128) C) cada instrução de máquina é processada na unidade aritmética e lógica, redundando na chamada área de controle INCORRETA- tudo errado, pois cita duas áreas superpostas. E as instruções são executadas usando-se as duas áreas, de processamento e de controle. D) Instruções do tipo SSE ou MMX foram criadas pela Intel em seus processadores, com o objetivo de processar números inteiros de 64 bits INCORRETO- elas foram criadas ainda com os processadores de 32 bits. E) Instruções de máquina com dois códigos de operação podem executar o dobro da quantidade de instruções de um processador comum, com apenas um código de operação INCORRETO- não existem instruções com dois códigos de operação Resp: OPÇÂO A 15. Os Sistemas de Computação são popularmente conhecidos como computadores e desde sua criação inicial na década de 1940 vem se desenvolvendo de forma bastante acelerada. O referido desenvolvimento tem ocorrido em diversos aspectos, tais como: velocidade de processamento, inclusão de memórias internas chamadas de cache e na quantidade de unidades de cálculo e este conjunto de aperfeiçoamentos tem sido possível PORQUE tem aumentado a quantidade de instruções de máquina criadas nos novos processadores, devido à redução de custo do material usado na fabricação dos transistores. Assinale a opção correta: A – a primeira afirmação é verdadeira , sendo justificada pela segunda. B – as duas afirmações são falsas. C – a primeira afirmação é falsa mas a segunda é verdadeira. D – a primeira afirmação é verdadeira mas a segunda é falsa. Resp: OPÇÃO D, pois as causas do crescente desenvolvimento dos computadores são, entre outras, as que foram mencionadas na primeira afirmação. No entanto, a segunda afirmação é falsa, pois se trata do contrário. Desde há algum tempo que se constatou ser melhor ter poucas instruções do que muitas (arquitetura RISC), o que acontece nas máquinas modernas. 16. Os processadores possuem diversos componentes que, para funcionarem corretamente, precisam ser instruidos por meio de ordens de execução de cada atividade. Há diversas linguagens utilizadas para computação. Analise as afirmações a seguir e assinale qual a única que é verdadeira: a) há dois tipos de linguagens de programação: as de baixo nível e as de alto nível. Exemplo de uma linguagem de baixo nível é a linguagem Assembly CERTO b) Linguagens de programação são códigos binários que permitem a comunicação entre o homem e a máquina, ou seja, entre o ser humano e os computadores ERRADO. Elas permitem a transmissão d eordens mas não há comunicação direta c) Linguagens de alto nível são utilizadas apenas em microcomputadores, sendo substituidas por códigos binários em processadores móveis ERRADO. São usadas em qualquer máquina d) Um código binário é constituido sempre de duas partes: a origem da transmissão e o destinatário ERRADO. Não existe isso e )programas criados diretamente em linguagem assembly podem ser diretamente executados pelo hardware, já que assembly é uma linguagem de máquina ERRADO. É uma linguagem de máquina simbólica, não diretamente de máquina (código binário sim). 17. Segue-se o trecho final de uma memória principal, contendo o trecho de endereços 3F2 até o endereço 3F9, onde todos os números são representados em sistema de numeração hexadecimal. 3F2 0102 3F3 5CD4 3F4 500F 3F5 6609 3F6 BBE8 3F7 3478 3F8 1B4E 3F9 0037 Considerando que em um dado instante, o CI – Contador de Instrução do processador tem armazenado o valor 3F6 e que o sistema é “congelado” exatamente nesteinstante e que ele estava executando a etapa de decodificação do código de operação da instrução, qual o valor que deverá estar armazenado, respectivamente, no RI e no CI neste instante. Resp: Dois fatos precisam ser sabidos aqui: 1.que o CI armazena o endereço de próxima instrução a ser buscada DEPOIS de execução da atual. 2. Os passos do cilo de instrução: busca da instrução – incremento do CI-decodificação – execução- voltar. CI = 3F6. Isso está no enunciado e é o valor armazenado no INSTANTE do passo de decodificação, que está DEPOIS do passo de incremento do CI. Ou seja, no início deste ciclo de instrução mencionado, o CI tinha o valor de endereço da instrução corrente (valor ANTES de ser 18. Suponha um sistema de computação que possua um processador que contém 32 registradores de dados, cada um tendo uma largura de 24 bits, isto é, podem armazenar dados ou endereços de valor máximo igual a 224 – 1. Havendo necessidade de identificar os registradores de dados, qual deverá ser a largura , em bits, do endereço de cada registrador. E se um deles fosse designado para armazenar endereços da MP (memória principal), qual deverá ser o espaço máximo de endereçamento da MP (capacidade da MP).? Resp: 32 registradores. Então como universalmente X = 2n e X = 32, n = 5 bits . Endereço de cada registrador Ora, se cada registrador armazena um dado (ou endereço) com 24 bits de largura, então, MP tem capacidade igual a 224 endereços ou 16M endereços, 224 = 24 (16) x 220 (M)
Compartilhar