Universidade Estácio de Sá Curso de Organização de Computadores II Prof. Gabriel P. Silva - 1o Sem. / 2005 1a Lista de Exercícios 1) Desenhe um diagrama funcional do modelo do tipo Von Neumann. Faça uma breve descrição de cada uma de suas partes. MEMÓRIA ENTRADA ARITMÉTICA SAÍDA CONTROLE - Memória: É a unidade onde as instruções, os dados de entrada, as tabelas de referência, e os resultados intermediários são armazenados para permitir a execução de um programa. - Controle: É a unidade responsável pelo seqüenciamento das operações e pelo controle das demais unidades do computador. - Aritmética: É a unidade que irá executar as operações aritméticas e lógicas tais como: soma, subtração, multiplicação, divisão, raiz quadrada, movimentação entre a unidade aritmética e a memória, verificação do sinal do resultado, conversão de decimal para binário e vice-versa. Um total de 10 operações fundamentais foi definido por Von Neumann. É chamada abreviadamente de UAL. - Entrada: É a unidade que transfere a informação (numérica ou não) do meio externo. Todas as transferências devem ser feitas para a memória e nunca diretamente para a unidade de controle. - Saída: É a unidade que transfere a informação (numérica ou não) para o meio externo. Todas as transferências devem ser feitas da memória para o meio externo, e nunca diretamente da unidade de controle. 2) Desenhe o diagrama em blocos do modelo de barramento de sistema, com uma breve descrição de cada uma das unidades funcionais. ENTRADA PROCESSADOR MEMÓRIA E SAÍDA Controle BarramentodeEndereço BarramentodeDados Nesse modelo, a unidade de controle e a unidade aritmética são vistas como um só elemento e recebem o nome de processador. As unidades de entrada e saída são vistas agora também como uma única unidade, chamada de unidade de entrada/saída. A memória continua sendo vista com uma unidade independente, com as mesmas funções da arquitetura de Von Neumann, ou seja, armazenamento de dados e instruções dos programas em execução. Um elemento novo que surge é o próprio barramento de sistema, que faz a interligação entre o processador, a memória e a unidade de entrada/saída. O barramento de sistema é composto pelos barramentos de endereço, dados e controle. O barramento de endereços transporta os sinais de endereço através de fios ou trilhas até a memória. Sinais estes que vão, principalmente, determinar qual a posição de memória que irá ser lida ou escrita. Os endereços podem ser fornecidos tanto pelo processador como pela unidade de entrada/saída. A informação dessa posição de memória, que está sendo lida ou escrita na memória, transita pelo barramento de dados, que é bidirecional. Apesar do nome, tanto instruções como os dados propriamente ditos circulam por esse barramento. O barramento de controle indica qual a natureza da operação que vai ser realizada: leitura ou escrita, na maior parte dos casos, e possui também sinais para a arbitragem do barramento, para determinar quem vai utilizar o barramento naquele momento, que pode ser tanto o processador como a unidade de entrada/saída. 3) Quais são os componentes principais do processador? R: Unidade Aritmética e Lógica, Unidade de Controle e Banco de Registradores. 4) Quais as funções que o processador realiza? R: Buscar instruções e dados na memória. Programar a transferência de dados entre a memória e os dispositivos de entrada/saída. Decodificar as instruções. Realizar das operações aritméticas e lógicas. Responder aos sinais enviados por dispositivos de entrada/saída, tais como interrupções e sinais de erro. 5) Qual a função do apontador de instruções (PC)? R: Guarda o endereço da próxima instrução a ser executada. 6) Qual a função do banco de registradores do processador? R: É o conjunto de registradors que são visíveis ao programador e/ou compilador. Ou seja, que podem ser utilizados para a execução de um programa. 7) Qual a função da memória principal? R: A memória principal é utilizada para armazenar os programas e dados que vão ser processados durante a operação normal do computador. As informações armazenadas memória principal podem ser alteradas durante a execução de um programa. São também usadas para armazenar os resultados intermediários e finais das operações realizadas pelo processador. 8) Qual a função da unidade de E/S? R: A unidade de entrada e saída contém os circuitos de interface necessários para permitir a comunicação entre os dispositivos de entrada/saída (também chamados de periféricos) com as demais partes do computador. 9) Descreva todos os passos do ciclo de busca de instrução de um processador. R: 1. Busca a próxima instrução que está localizada na memória para o registrador de instrução; 2. Atualiza o apontador de instruções (PC) para que ele aponte para a próxima instrução a ser lida da memória e executada. 3. Determina o tipo de instrução e o número de operandos; 4. Busca os operandos, se houver, para os registradores no processador; 5. Executa a instrução; 6. Armazena os resultados; 7. Volta ao passo 1 para executar a próxima instrução. 10) Quais são os principais tipos de instruções do processador DLX? R: Instruções aritméticas (soma, subtração, divisão, multiplicação, etc). Instruções lógicas (complemento, deslocamento, etc.). Instruções de transferência de dados (entre registradores, do registrador para a memória, da memória para o registrador). Instruções de transferência de controle (desvio incondicional e condicional, chamada de procedimento, etc). Instruções de Ponto Flutuante 11) Desenhe um fluxograma, e descreva todos os arquivos e programas, com as diversas etapas desde o código fonte até a obtenção do código executável. R: Programa em Linguagem de Alto Nível Compilador Programa em Linguagem de Montagem Montador Objeto: Rotinas da Biblioteca (em linguagem de máquina) Objeto: Programa em Linguagem de Máquina Ligador Programa Executável Carregador Memória 12) Quais as diferenças entre linguagem de máquina e linguagem de montagem? R: A linguagem de montagem é uma representação simbólica das instruções utilizando mnemoicis, isto é, pode ser entendida pelo programador. A linguagem de máquina é o conjunto das instruções em formato binário que são executadas pelo processador. 13) Cite três exemplos de linguagens de alto nível. R: C, PASCAL e JAVA. 14) Suponha um vetor na memória, cuja posição inicial é apontada pelo registrador R16 e cada elemento possui 4 bytes, com os seguintes dados mostrados ao lado. Quais os dados carregados nos registradores R2, R3 e R4 depois da execução do seguinte trecho de código: lw lw lw R: R2, 0(R16) R3, 8(R16) R4, 20(R16) 8 80 16 39 3 87 73 24 19 28 ... R2 = 8 R3 = 16 R4 = 87 15) Traduza o trecho seguinte de programa em linguagem “C” para linguagem de montagem. Considere que as variáveis i, j e k estão em memória. i= 4; j= 8; if ( i < j) k = j*2; else { k = i-2; j = j +1; } ELSE: FIM: addi addi sw sw slt beqz slli sw j subi addi sw sw nop R1, R0, 4 R2R0, 8 I(R0), R1 J(R0), R2 R8, R1, R2 R8, ELSE R3, R2, 1 K(R0), R3 FIM R3,R1,#2 R1, R1, #1 K(R0), R3 I(R0), R1 16) Traduza o trecho seguinte de programa em linguagem “C” para linguagem de montagem. Considere que a variável i está no registrador R1 e que o endereço inicial do vetor A está em R16. A variável MAX e o vetor A estão armazenados em memória e possuem 4 bytes cada. MAX = A[0]; for ( i = 1, i < 100, i++) { if (A[i] > MAX) MAX = A[i]; } R: Fica para a próxima ... 17) Supondo-se que os valores de LABEL e ROTINA sejam, respectivamente, 10000 e 13000, qual será o conteúdo do apontador de programa (PC), dos registradores R31 (RA) e R1 após a execução do seguinte trecho de programa? Justifique. LABEL: addi R2, R0,#4 addi R3, R0,#7 add R1, R2, R3 jal ROTINA R: Como o PC da instrução jal é 10.012, depois que ela for executada, o R31 será 10.012 + 4, ou seja, R31 = 10.016 e PC =13.000 (ROTINA). 18) A figura abaixo mostra o formato da instrução add R1,R2,R3 em linguagem de máquina. Como ficaria este formato se a instrução fosse and R12,R13,R14? O código de função correspondente à instrução and é 00000010010. opcode 000000 000000 rs1 rs2 00010 00011 01101 rd 00001 01110 01100 função 00000100000 00000010010 19) No trecho em linguagem de montagem a seguir, identifique os diversos modos de endereçamento (imediato, registrador, indireto, relativo ao PC) e classifique os tipos de instruções (aritmética, lógica, transferência de dados, transferência de controle) existentes. LABEL: lb addi bnez lw addi sw sub lw beqz j R1, CONST1 R2, R0, CONST2 R3, LABEL R4, 0(R16) R1, R2, -1 0(R16), R4 R1, R1, R2 R6, 4(R18) R2, LABEL EXIT transf. Dados aritmética transf. Controle transf. Dados aritmética transf. Dados aritmética transf. Dados transf. Controle transf. Controle Reg. , Imediato Reg., Reg., Imediato Reg., Relativo ao PC Reg., Indireto Reg., Reg., imediato Indireto, Registrador Reg., Reg., Reg. Reg., Indireto Reg., Relativo ao PC Relativo ao PC