Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores Material Teórico Responsável pelo Conteúdo: Prof. Ms. Fábio Peppe Beraldo Revisão Textual: Profa. Esp. Márcia Ota Instruções e U.L.A. • Instruções de Máquina • Quais os elementos de uma instrução de máquina? • Tipos de Instruçôes • Projetando um conjunto de instruções • Unidade Logica e Aritmética (ULA) • Breve simulação · Esta unidade objetiva capacitar o aluno em como construir uma instrução bem balanceada, identificar e utilizar os tipos de instruções corretas e a trabalhar com as memórias de modo otimizado para o sistema. OBJETIVO DE APRENDIZADO Olá, aluno (a)! Nesta Unidade, será introduzido o conceito de instruções e suas partes, além de como o hardware trabalha com as memórias e, por fim, o que é uma ULA, quais suas partes e como seu funcionamento ocorre. Esses conceitos, na verdade, são a chave do funcionamento de um processador; portanto, uma das mais importantes. Além disso, para que a sua aprendizagem ocorra num ambiente mais interativo possível, na pasta de atividades, você também encontrará as atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material disponibilizado é mais um elemento para seu aprendizado, por favor, estude todos com atenção! ORIENTAÇÕES Instruções e U.L.A. UNIDADE Instruções e U.L.A. Contextualização A linguagem de máquina de um computador trata de uma representação para as instruções, em nível mais básico, que um computador pode executar. Um programa escrito em linguagem de máquina é composto por uma série de instruções de máquina. Com essas instruções, um programador consegue determinar que operações um processador deverá executar. Esse processador utiliza uma memória para transportar dados entre e a ULA e as demais partes de um processador, e é assim que iniciamos nossa etapa atual de estudos, em que faremos uma introdução aos assuntos descritos, bem como exemplificações de funcionamento. 6 7 Instruções de Máquina Um conjunto de instruções de máquina determina o limite que um engenheiro e um programador de sistemas veem a máquina: · O engenheiro vê um conjunto de instruções de máquina que fornecem os requisitos mínimos para que um processador possa trabalhar corretamente. · Para o programador, é necessário conhecer quais registradores do processador, sua estrutura de memória, os tipos de dados disponíveis diretamente na máquina e o funcionamento da ULA, que veremos, em breve, nessa unidade. Caracterizando uma instrução de máquina O processador realiza seu trabalho de acordo com as instruções de que está executando, a essas instruções damos o nome de instrução de máquina, que podem ser de diferentes tipos, de acordo com a necessidade de trabalho do processador que trabalha com várias instruções ao “mesmo tempo”, o que chamamos de conjunto de instruções de processamento. É obrigatório que, em uma instrução, haja todas as informações necessárias para a correta realização de um trabalho pelo processador e esse trabalho deve seguir alguns passos para o correto funcionamento, como podemos ver na figura a seguir: Cálculo de endereçamento do operando Armazenamento de resultado Cálculo de endereçamento do operando Operação sobre os dados Retorno para cadeia de caracteres ou vetor de dados Instrução completada, busca da próxima instrução Busca de instrução Cálculo de endereçamento da instrução Decodi�cação da operação da instrução Busca de operando Múltiplos Operando Múltiplos Resultados Figura 1: Diagrama de estados do ciclo de instruções. Fonte: Desenvolvido pelo autor. 7 UNIDADE Instruções e U.L.A. Quais os elementos de uma instrução de máquina? Os elementos envolvidos na execução de uma instrução são: · Código de operação: especifica a operação a ser efetuada (por exemplo, ADO, E/S). A operação é especificada por um código binário, conhecido como código de operação. · Referência a operando fonte: a operação pode envolver um ou mais operandos fonte, ou seja, operandos que constituem dados de entrada para a operação. · Referência a operando de destino: a operação pode produzir um resultado. · Endereço da próxima instrução: indica onde a CPU deve buscar a próxima instrução, depois que a execução da instrução corrente for completada. As instruções a serem buscadas, normalmente, estão localizadas na memória principal ou, quando estiverem trabalhadas pelo sistema operacional, na memória virtual. O mais comum é que as novas instruções sigam uma após a outra da instrução em processamento, o que anula a necessidade de uma referência a outra instrução, o que chamamos de endereçamento de instrução. Os operandos fonte e de destino podem estar localizados em uma das seguin- tes áreas: · Memória principal ou virtual: assim como na referência para a próxima instrução, deve ser fornecido um endereço, que pode ser na memória principal ou na memória virtual. · Registrador da CPU: com raras exceções, a CPU contém um ou mais registradores, que podem ser referenciados pelas instruções de máquina. Se existir apenas um único registrador, a referência a ele poderá ser implícita. Se existirem vários registradores, então, cada registrador será designado por um número distinto e a instrução deverá conter o número do registrador desejado. · Dispositivo de E/S: a instrução deve especificar um módulo de E/S e um dispositivo para a operação. Se for usada a EI S mapeada na memória, essa informação consistirá apenas em um endereço na memória principal ou na memória virtual. É um pouco complexo falar do que são compostas as instruções sem a possibilidade de visualização da mesma. Por isso, a figura, a seguir, demonstra uma representação lógica das partes básicas de uma instrução. 8 9 Código de Operação Referência a operando Referência a operando 4 bits 6 bits 16 bits 6 bits Figura 2: Formato de instrução simples. Fonte: Stallings, W., Arquitetura e Organização de Computadores. Como pode se observar na figura, a instrução é dividida em campos, onde cada campo representa uma etapa de execução no processador. Há também a composição da instrução, conforme o IAS onde já é demonstrado o endereçamento de novas instruções para a continuidade do processamento. A memória do IAS consiste em mil posições de memória, denominadas palavras, cada uma constituída de 40 dígitos binários (bits). Dados e instruções são ambos armazenados na memória. Portanto, os números devem ser representados em forma binária e cada instrução deve ter também um código binário. Cada número é representado por um bit de sinal e um valor de 39 bits. Uma palavra pode conter duas instruções de 20 bits, cada uma consistindo em um código de operação (opcode) com 8 bits, que especifica a operação a ser executada, e de um endereço com 12 bits, que designa uma palavra na memória (numerada de 0 a 999). 01 (a) Armazenamento de número Bit de sinal 39 0 8 19 20 28 (b) Palavra para armazenamento de uma instrução Código de operação Endereço Instrução esquerda 39 Instrução direita Código de operação Endereço Figura 3: Formatos de uma palavra no IAS. Fonte: Stallings, W., Arquitetura e Organização de Computadores. Normalmente, temos dificuldades para trabalhar diretamente com códigos binários de instruções. Dessa forma, instituiu-se o uso de representações simbólicas demonstradas na tabela 1, onde podemos ver as representações utilizadas em instruções IAS. Na coluna “códigos de operação”, há abreviações para a operação que o determinado comando executará; chamamos esses códigos de mnemônicos. Hoje, é muito raro programar em linguagem de máquina. A maioria dos programas é escrita em linguagem de alto nível. No entanto, a linguagem de máquina simbólica permanece como uma ferramenta útil para descrever instruções de máquina, sendo usada a seguir para esse propósito. 9 UNIDADE Instruções e U.L.A. Tabela 1: O conjunto de instruções do IAS. Tipo de instrução Código de operação Representação simbólica Descrição Transferênciade dados 00001010 LOAD MQ Transfere o conteúdo do registrador MQ Para o acummulador AC 00001001 LOAD MQ,M(X) Transfere o conteúdo da posição de mamória X para MQ 00100001 STOR M(X Transfere o conteúdo do acumulador para a posição de memória X 00000001 LOAD M(X) Transfere M(X) para o acumulador 00000010 LOAD - M(X) Transfere -M(X) para o acumulador 00000011 LOAD I M(X) I Transfere o valor absoluto de M(X) para o acumulador 00000100 LOAD - I M(X) I Transfere -I M(X) I para o acumulador Desvio incondicional 00001101 JUMP M(X,0:19) A próxima instrução a ser executada é buscada na metade esquerda de M(X) 00001110 JUMP M(X,20:39) A próxima instrução a ser executada é buscada na metade direita de M(X) Desvio condicional 00001111 JUMP =(X,0:19) Se o número no acumulador é um valor não negativo, a próxima instrução a ser executada é buscada na metade esquerda de M(X) 00010000 JUMP +M(X,20:39) Se o número no acumulador é um valor não negativo, a próxima instrução a ser executada é buscada na metade direita de M(X) Aritimética 00000101 ADD (MX) Soma M(X) a AC; armazena o resultado em AC 00000111 ADD I M(X) I Soma I M(X) I a AC; armazena o resultado em AC 00000110 SUB M(X) Subtrai M(X) de AC; armazena o resultado em AC 00001000 SUB I M(X) I Subtrai M(X) de AC; armazena o resultado em AC 00001011 MUL M (X) Multiplica M(X) por MQ; armazena os bits mais significativos do resultado em AC; armazena os bits menos significativos em MQ 00001100 DIV M(X) Divide AC por M(X); armazena o quociente em MQ e o resto em AC 00010100 LSH Multiplica o acumulador por 2, ou seja, desloca os bits uma posição para a esquerda 00010101 RSH Divide o acumulador por 2, ou seja, desloca os bits uma posição para a direita Alteração de endereço 00010010 STOR M(X,9:19 Substitui o campo de endereço à esquerda de M(X) pelos 12 bits mais à direita de AC 00010011 STOR M(X,28:39) Substitui o campo de endereço à direita de M(X) pelos 12 bits mais à direita de AC Fonte: Stallings, W., Arquitetura e Organização de Computadores. Tipos de Instruções Computadores utilizam de conjuntos de instruções que permitem ao programador desenvolver qualquer trabalho de processamento. Para tanto, é necessário utilizar comandos disponíveis em uma determinada linguagem de programação de alto nível. Qualquer linguagem de programação atual pode ser diretamente traduzida para a linguagem de máquina e só assim interpretada pelo processador. Seguindo essa lógica, o conjunto de instruções criado deve possuir expressões suficientes para 10 11 suprir todos os comandos requisitados pela linguagem de alto nível. Para começar a diferenciar os tipos de instruções, podemos dividi-los pela sua função primária. · Processamento de dados: instruções aritméticas e lógicas. · Armazenamento de dados: instruções de memória. · Movimentação de dados: instruções de E/S. · Controle: instruções de teste e de desvio. No processamento de dados, são definidos os métodos e formas de como serão trabalhadas as instruções. As instruções aritméticas determinam a capacidade computacional para o processamento de dados numéricos (conforme o próprio nome diz), as instruções lógicas que obedecem ao método booleano e operam sobre bits de uma palavra, como bits e não como números; oferecem, portanto, a capacidade para processar qualquer outro tipo de dado que o usuário possa desejar empregar. Essas operações são efetuadas, primariamente, em dados armazenados em registradores da CPU. Já que serão utilizados, constantemente, memórias e registradores, com certeza, a movimentação de dados entre essas memórias será intensa, instruções de memória se farão necessárias para controlá-la e instruções de E/S para controlar a transferência entre programas e dados para a memória e para transferir resultados da computação de volta para o usuário. Instruções de teste são usadas para testar o valor de uma palavra de dados ou o estado de uma computação. Instruções de desvio são utilizadas para desviar a execução do programa para uma nova instrução, possivelmente, dependendo do resultado de um teste. Quando estamos construindo instruções, acabamos percebendo que as instruções de processamento (aritméticas e lógicas) são as que ocupam mais espaço da instrução, ou seja, maior número de operandos. Como exemplo, temos operandos unários ou binários que consumiriam dois endereços para suas referências, lembrando que o resultado desse trabalho precisa ser armazenado. Então, precisamos de mais um endereço de armazenamento, somando, até agora, 3 endereços, daí para a frente uma nova instrução será referenciada e para tanto seu endereço deve ser dado e, para armazená-lo, mais uma unidade de endereço foi consumida, totalizando quatro endereços. Dessa forma, teríamos instruções com quatro endereços: dois para operandos, um para o resultado e o endereço da próxima instrução. Na prática, as coisas são um pouco diferentes, pois instruções com quatro endereços são mais raras, sendo mais comuns as instruções de um, dois e três endereços de operando. Na figura 4, você pode observar três exemplos diferentes de como construir um instrução para executar o comando Y=(A-B)÷(C+D×E). 11 UNIDADE Instruções e U.L.A. Instrução Comentário SUB Y, A, B Y A - B MPY T, D, E T D x E ADD T, T, C T T + C DIV Y, Y, T Y Y ÷ T (a) Instruções com três endereços Instrução Comentário LOAD D AC D MPY E AC AC x E ADD C AC AC + C STOR Y Y AC LOAD A AC A SUB B AC AC - B DIV Y AC AC ÷ Y STOR Y Y AC (c) Instruções com um endereços Instrução Comentário MOVE Y, A Y A SUB Y, B Y Y - B MOVE T, D T D MPY T, E T T x E ADD T, C T T + C DIV Y,T Y Y ÷ T (b) Instruções com dois endereços Figura 4: Instrução para execução do comando . Fonte: Stallings, W., Arquitetura e Organização de Computadores. Ao utilizarmos de três endereços, cada instrução especificará dois endereços de operandos e um endereço para o resultado. Se não for desejável, a alteração do valor de qualquer posição de memória, uma área de memória temporária, T, é usada para armazenar resultados intermediários. Note que a implementação do comando requer quatro instruções e que a expressão original tem cinco operandos. Formatos de instrução com três endereços resultam em instruções de tamanho relativamente grande, devido ao espaço necessário para manter os três endereços. No caso de instruções com dois endereços e das operações binárias, um dos endereços referência, tanto um operando quanto o resultado. Por exemplo, a instrução SUB Y, B calcula o valor Y - B e armazena o resultado em Y. O uso do formato de instrução com dois endereços reduz o tamanho das instruções, mas apresenta algumas desvantagens. Para evitar que se altere o valor de um operando, é usada uma instrução MOVE, para mover um dos operandos para a posição de resultado ou para uma posição temporária, antes de a operação ser efetuada. O número de instruções requeridas para implementar o exemplo anterior aumentaria, nesse caso, para seis instruções. Por fim, quando usamos a solução com apenas um endereço, um segundo endereço deve ser implícito. Esse tipo de instrução era comum nas primeiras máquinas, onde o endereço subentendido é um registrador da CPU, conhecido como acumulador (AC). O acumulador contém um dos operandos e é usado para armazenar o resultado. Nesse caso, são necessárias oito instruções para se implementar nosso exemplo. 12 13 A seguir, veremos alguns exemplos de comandos para construir uma instrução: Tabela 2: Instruções Aritméticas Simples add $r1, $r2, $r3 Esta instrução soma o conteúdo dos registradores $r2 e $r3, colocando o conteúdo no registrador $r1 addi $r4, $r1, 9 Agora, estamos somando o conteúdo do registrador $r1 com o valor imediato 9 e armazenando o resultado em $r4. O número imediato deve ter 16 bits. addu $r5, $r6, $r4 Quase igual ao add. Mas, agora, assumimos que todos os valores são não-negativos. addiu $r7, $r8, 10 Somamos o conteúdo de $r8 com o valor imediato 10 e armazenamos oresultado em $r7. Assume-se que todos os valores são não-negativos. sub $r1, $r2, $r3 Subtrai-se o conteúdo de $r3 do conteúdo de $r2 e coloca-se em $r1. Também existe subi, subu e subiu que tem comportamento semelhante a addi, addu e addiu, mas para a subtração. Fonte: Tanenbaum, A., Organização Estruturada de Computadores Tabela 3: Instruções de Operadores Lógicos and $r1, $r2, $r3 Realiza uma operação AND bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1. andi $r1, $r2, 42 Realiza uma operação AND bit-a-bit entre $r2 e o valor imediato 42. O resultado é armazenado em $r1. O número imediato deve caber em 16 bits. or $r1, $r2, $r3 Realiza uma operação OR bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1. ori $r1, $r2, 42 Realiza uma operação OR bit-a-bit entre $r2 e o valor imediato 42. O resultado é armazenado em $r1. O número imediato deve caber em 16 bits. Fonte: Tanenbaum, A., Organização Estruturada de Computadores Tabela 4: Instruções de Uso de memória lw $r1, 4($r2) Load Word: Esta instrução carrega uma palavra (estrutura de 4 bytes) localizada no endereço representado pela soma do valor armazenado no registrador $r2 mais 4. O resultado é armazenado em $r1. lh $r1, 6($r3) Load Half: Esta instrução carrega uma estrutura de 2 bytes localizada no endereço representado pela soma do valor armazenado no registrador $r3 mais o número 6. O resultado é armazenado em $r1. lb $r1, 16($r2) Realiza uma operação OR bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1. Fonte: Tanenbaum, A., Organização Estruturada de Computadores 13 UNIDADE Instruções e U.L.A. Tabela 5: Instruções armazenamento de registros na memória sw $r1, 4($r2) Store Word: Esta instrução carrega uma palavra (estrutura de 4 bytes) localizada no registrador $r1 e armazena no endereço representado pela soma do valor armazenado no registrador $r2 mais 4. sh $r1, 4($r2) Store Half: Esta instrução carrega uma estrutura de 2 bits localizada no registrador $r1 e armazena no endereço representado pela soma do valor armazenado no registrador $r2 mais 4. sb $r1, 4($r2) Store Byte: Esta instrução carrega um byte (8 bits) localizado no registrador $r1 e armazena no endereço representado pela soma do valor armazenado no registrador $r2 mais 4. Fonte: Tanenbaum, A., Organização Estruturada de Computadores Projetando um conjunto de instruções Não dá para negar que projetar uma instrução é muito complicado, não só pelo número de consequências que sua construção gera no programa ou no sistema, mas, muito mais, na forma de construção do corpo da instrução. Algumas das questões mais importantes no projeto são as seguintes: · Repertório de operações: quantas e quais são as operações que devem ser fornecidas e quão complexas elas podem ser. · Tipos de dados: quais os tipos de dados sobre os quais as operações são efetuadas. · Formatos de instrução: qual o tamanho das instruções (em bits), o número de endereços por instrução, o tamanho dos vários campos etc. · Registradores: qual o número de registradores da CPU que podem ser usados pelas instruções e qual o propósito de cada um. · Endereçamento: de que modo (ou modos) o endereço de um operando pode ser especificado. Essas questões são, altamente, inter-relacionadas e devem ser consideradas em conjunto ao se projetar um conjunto de instruções. É claro que, neste livro, temos de considerá-las em alguma sequência, mas procuramos sempre mostrar o relacionamento entre elas. Tipos de Operandos Os tipos de dados operandos mais comuns são: números, caracteres e dados lógicos; cada um será discutido, brevemente, nesta seção. Algumas máquinas definem, além desses, alguns tipos de dados especiais ou estruturas de dados. Por exemplo, podem fornecer operadores que operam diretamente sobre listas ou sequências de caracteres. 14 15 Tipos de Operações O número de códigos de operação distintos varia muito de máquina para máquina. Entretanto, o mesmo conjunto de classes de operações é encontrado em todas as máquinas. Uma classificação típica dessas operações é descrita a seguir: · Operações de transferência de dados; · Operações aritméticas; · Operações lógicas; · Operações de conversão; · Operações de E/ 5; · Operações de controle de sistema; · Operações de transferência de controle. A tabela, a seguir, demonstra a função básica de cada classificação dentro do processador. Tabela 6: Ações do processador para as classes de operandos Transferência de dados Transfere dados de uma posição para outra. Se envolver endereço de memória: Determina o endereço de memória; Efetua conversão entre endereço de memória real e virtual; Verifica a memória cache; Inicia leitura / escrita na memória. Operação aritmética Pode envolver transferência de dados, antes e/ou depois da operação. Executa a operação na ULA. Atualiza códigos de condição. Operação lógica Análoga à operação aritmética. Operação de conversão Análoga à operação aritmética ou lógica. Pode envolver lógica especial para efetuar a conversão. Transferência de controle Atualiza o contador de programa. No caso de chamada/ retorno de sub-rotina, gerencia a passagem de parâmetros e o encadeamento de chamadas. Operação de E/S Emite comando para um módulo de E/S.No caso de E/S mapeada na memória, determina o endereço mapeado na memória. Operações de controle de sistema São aquelas que apenas podem ser executadas quando o processador está no estado privilegiado ou está executando um programa carregado em uma área especial da memória, que é privilegiada. Fonte: Tanenbaum, A., Organização Estruturada de Computadores. 15 UNIDADE Instruções e U.L.A. Unidade Logica e Aritmética (ULA) A unidade lógica e aritmética é o componente da CPU responsável pelas execuções das operações matemáticas dos dados, ou seja, é na ULA que as operações das instruções estudadas, realmente, são trabalhadas interpretadas e as respostas são geradas. As operações que a ULA compreende são: · Soma; · Multiplicação; · Operação lógica AND; · Operação lógica XOR; · Deslocamento à direita; · Incremento; · Subtração; · Divisão; · Operação logica OR; · Operação complemento; · Deslocamento à esquerda; · Decremento. Normalmente, essas operações utilizam um ou dois valores e, por isso, a ULA possui duas entradas e ambas as entradas se concentram a uma saída, via barramento interno. UAL UCP RDM (MBR) ACC CI (PC) REM (MAR) MP UC RI (IR) Decodi�cador de instruçõesRelógio Controle Barramento de controle Barramento de endereços Barramento de dados Dados/Endereço Registradores 0 a R1 Figura 5: Estrutura da CPU com destaque para a ULA. Fonte: Monteiro, M., Introdução a Organização de Computadores. UAL Entradas de registradores Sinais de controle da UC Saídas para registradoresSaída para ags Figura 6: Interligação da ULA com a CPU. Fonte: Monteiro, M., Introdução a Organização de Computadores. É possível definir como que a ULA funciona como sendo um conjunto de circuitos lógicos, utilizados conforme o tipo de operação a ser realizada, que recebem na entrada dois ou, às vezes um; valores que seguem pela circuitaria determinados pelas portas lógicas e na saída entregam um resultado. 16 17 Vamos exemplificar, aqui, a soma de dois valores binários, X=1 e Y=1, que irão produzir o valor Z=0 e um bit carry (C=1) que tem a função de armazenamento em um registrador especial do processador para referências, quando necessário. Chamamos esse registrador de FLAG. O que muitos desconsideram é que as distâncias percorridas, fisicamente, tem grande influência no tempo de resposta, apenas para lembrar, a ULA ainda obedece à fórmula e=vt, onde: · e = é a distância entre a entrada e a saída do circuito. · v = é a velocidade atingida pelos sinais elétricos que são representações dos bits através do circuito que é, nominalmente, a velocidade da luz; porém, jamais alcança os 300.000km/s, pois isso só ocorre no vácuo. · t = é o tempo de execução da operação,ou seja, o tempo de percurso dos sinais desde a entrada até a saída. UAL Y = 1 C = 1 Z = 0 Para ACC Para registrar �ag Saída Circuito Somador Entrada X e Y - valores que serão somados (1 + 1 = Ø e vai 1) Z - resultado da operação m = Ø C - bit de “vai 1” = 1 X = 1 Figura 7: Circuito lógico da ULA. Fonte: Monteiro, M., Introdução a Organização de Computadores. O circuito somador é a base de funcionamento da ULA, classificado, essencialmente, pelo somador half adder ou somador parcial e o somador full adder que é o somador completo. No somador parcial, a soma é realizada apenas com os dois valores binários envolvidos recebidos na entrada (X e Y como visto na figura 7) e entregar um resultado Z e o carry (o carry, às vezes, pode não acontecer), ou seja, a figura 7 é uma representação lógica de um somador parcial. No somador completo, o carry é considerado na soma, que fica com três parcelas. Dessa forma, a totalidade das ULAs são fabricada como um circuito somador que pode somar dois valores numéricos, independentemente da quantidade de bits que eles possam possuir, dependendo diretamente da palavra do processador. Mais para frente na disciplina, nós iremos aprender os circuitos lógicos e, então, retomaremos os exemplos práticos dos somadores, utilizando a representação de circuitaria de suas portas lógicas. 17 UNIDADE Instruções e U.L.A. Breve simulação No material complementar, há um link para uma simulação de funcionamento da ULA. Então, acesse o link e, além de aproveitar maiores explicações sobre a CPU, algumas que ainda veremos na disciplina futuramente, atente-se, mais especialmente, ao simulador de parte operativa. Nessa seção, você terá acesso a um simulador online na soma de dois valores pela ULA (somador parcial) e a entrega do resultado. Além disso, verá como ocorre o transporte dos dados entre registradores e ULA. Essa simulação funciona como um resumo do estudado nessa unidade. Desse modo, experimente e faça várias simulações, conforme as instruções do site e discuta suas impressões e resultados com os amigos de sala no fórum virtual. 18 19 Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Introdução à Computação – Simulador de CPU http://goo.gl/EsOQCv Arquiteturas de Computadores http://goo.gl/p290ze Tópicos de Informática Aplicados à Administração http://goo.gl/7RQlHH Vídeos Passos para execução de uma instrução https://goo.gl/fDUyL4 19 UNIDADE Instruções e U.L.A. Referências MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora: LTC; 2012. TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 5ª Ed.; Editora: Pearson Education; 2006. 20
Compartilhar