Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura de Computadores COMPUTADOR SEQUENCIAL O computador conhecido como do tipo von Neumann, ou máquina IAS, foi projetado e construído no Instituto de Estudos Avançados de Princeton (Princeton Institute for Advanced Studies). Essa máquina, que foi completada em 1952, é o modelo de todos os computadores subsequentes de propósito geral. A estrutura dessa máquina foi delineada por von Neumann da seguinte forma: 1) Se a máquina é um computador, ela deve realizar operações aritméticas básicas mais frequentes, que são adição, subtração, multiplicação e divisão. É portanto razoável que contenha unidades especializadas para essas operações. Essa parte constitui a primeira parte específica: CA; 2) O controle lógico do dispositivo, que é a própria sequenciação das operações, pode ser realizado mais eficientemente por uma unidade de controle centralizada: CC; 3) Qualquer máquina que deve realizar uma sequência complexa e longa de operações deve ter uma memória considerável. Essa memória constitui a terceira parte específica: M; As três partes específicas CA, CC e M, correspondem aos neurônios associativos do sistema nervoso humano. Falta ainda discutir os equivalentes aos neurônios sensoriais ou aferentes e aos neurônios motores ou eferentes. São as unidades de entrada (sensorial) e saída (motora) do dispositivo, chamadas de meio de registro externo: R; 4) A máquina deve ter unidades para transferir informações de R para as partes específicas CA, CC e M, que formam a entrada, a quarta parte específica: I; e 5) A máquina deve ter unidades para transferir de suas partes específicas CA, CC e M para R. Essas unidades formam a saída, a quinta parte específica: O. Com raras excessões, os computadores atuais tem essa estrutura e função geral e então são referidos como máquinas do tipo von Neumann. Essencialmente, o que caracteriza essas máquinas é o programa armazenado na memória, junto com os dados. O programa é constituído por um conjunto de instruções, e essas instruções são armazenadas em endereços subsequentes, ou sequenciais, na memória. Isso significa que as instruções são executadas na sequência de armazenamento na memória, com excessão dos casos de imposição de quebra dessa sequência, através de instruções de salto, ou interrupção. Essa memória em que as instruções e os dados são armazenados é denominada memória principal. AC MQ MBR Circuitos de Aritmetica e Logica E n d e r e c o Instrucoes e dados MEMORIA PRINCIPAL IR PC MAR Circuitos de Controle Linhas de controle S i n a i s UNIDADE DE CONTROLE Dispositivos de Entrada/Saida TimingOscilador D a d o s Endereco UNIDADE DE FLUXO DE DADOS Figura 1. Diagrama simplificado do computador IAS. A seguir será apresentado o computador IAS, com pequenas alterações, reduzindo o tamanho da palavra de memória de 40 para 20 bits, e adotando o sistema binário. Isso significa que uma palavra de 40 bits contendo duas instruções, do IAS, foi simplificado para uma palavra de 20 bits contendo apenas uma instrução. As instruções de salto que faz referência a uma das duas instruções no IAS também foram excluídas. A Fig. 1 mostra um diagrama simplificado do computador, com a Unidade de Fluxo de Dados, Unidade de Controle , Dispositivos de Entrada/Saída e Memória Principal. Nele são notados os seguintes registradores: a) MBR (Memory Buffer Register): contem uma palavra que deve ser escrita na memória ou uma palavra lida da memória; b) MAR (Memory Address Register): especifica o endereço de memória para a leitura ou escrita de uma palavra contida no MBR; c) IR (Instruction Register): Contem o opcode de 8 bits de uma instrução que está sendo executada; d) PC (Program Counter): Contem o endereço da instrução a ser lida da memória; e e) AC (Acumulador) e MQ(Multiplicador-Quociente): Empregados para manter temporariamente os operandos e resultados de operações realizadas pela ULA. Por exemplo, o resultado de uma multiplicação de dois números de 20 bits é um número de 40 bits; os 20 bits mais significativos são armazenados no AC e os bits menos significativos no MQ. O computador IAS é constituído de uma memória de 4096 endereços de armazenamento, chamados de palavras, de 20 dígitos binários cada. Cada número é representado por um bit de sinal e 19 bits de valor (Fig.2). 0 1 19 Figura 2. Representação numérica. 0 7 8 19 Figura 3. Formato de uma palavra de memória contendo uma instrução. Uma palavra pode também conter uma instrução de 20 bits, com um formato consistindo de um código de operação de 8 bits (opcode) especificando a operação a ser realizada e um endereço de 12 bits designando uma das palavras da memória (numeradas de 0 a 4095), Fig. 3. A unidade de controle opera o computador sequencial fazendo as buscas de instruções da memória e as execuções, uma por vez. Um computador sequencial opera realizando repetitivamente os ciclos de instrução. Cada ciclo de instrução consiste de dois outros ciclos: de busca da instrução (instruction fetch) e execução (instruction execution). Durante o ciclo de busca, o opcode da próxima instrução é carregada no IR e a parte referente ao endereço é carregada no MAR. Essa instrução é obtida da memória carregando a palavra no MBR, e então, para IR e MAR. Uma vez que o opcode se encontra no IR, o ciclo de execução é realizado. O circuito de controle decodifica o opcode e executa a instrução enviando os sinais de controle apropriados para fazer com que os dados sejam movidos e a operação seja realizada pela ULA. A Tabela 1 mostra um conjunto de instruções do IAS agrupadas em: a) Transferência de dados: move os dados entre a memória e os registradores da ULA; ou entre dois registradores das ULA; b) Salto incondicional: normalmente, a unidade de controle executa instruções em sequência de armazenamento na memória. Essa sequência pode ser alterada por uma instrução de salto. Essa instrução facilita operações de repetição; c) Salto condicional: o salto pode ser dependente de uma condição, permitindo a existência de pontos de decisão; d) Aritmética: operações realizadas pela ULA; e e) Modificação de endereço: permite que os endereços sejam computados pela ULA e então inseridos em instruções armazenados na memória. Isso permite que um programa tenha uma considerável flexibilidade de endereçamento. As instruções são mostradas em código binário do opcode, e em forma simbólica, também conhecida como mnemônico. Junto ao mnemônico é especificado também o operando, que corresponde ao campo de 12 bits. A parte referente ao opcode (8bits) especifica qual das instruções deve ser executada. A parte referente ao endereço (12 bits), M(X) especifica qual dos 4096 endereços de memória é envolvido na execução da instrução, ou MQ representa o uso do registrador MQ . Tabela 1. Conjunto de Instruções do IAS Tipo de Instrução Opcode Representação Simbólica Descrição Transferência de Dados 00001010 00001001 00100001 LOAD MQ LOAD MQ,M(X) STOR M(X) Tranfere o conteúdo do registrador MQ para o acumulador AC Transfere o conteúdo da posição de memória X ao MQ Transfere o conteúdo do acumulador para a posição de memória X 00000001 00000010 00000011 00000100 LOAD M(X) LOAD –M(X) LOAD | M(X) | LOAD - | M(X) | Transfere M(X) para o acumulador Transfere –M(X) para o acumulador Transfere o valor absoluto de M(X) para o acumulador Transfere - | M(X) | para o acumulador Salto Incondicional 00001101 JUMP M[X] Toma a próxima instrução do endereço M[X] Salto Condicional 00001111 JPOS M(X) Se o número contido no acumulador é positivo, tomar a próxima instrução de M(X) Aritmética 00000101 00000111 00000110 00001000 0000101100001100 00010100 00010101 ADD M(X) ADD | M(X) | SUB M(X) SUB | M(X) | MUL M(X) DIV M(X) LSH RSH Somar M(X) ao AC; colocar o resultado em AC Somar | M(X) | ao AC; colocar o resultado em AC Subtrair M(X) de AC; colocar o resultado em AC Subtrair | M(X) | de AC; colocar o resultado em AC Multiplicar M(X) por MQ; colocar os bits mais significativos em AC e os bits menos significativos em MQ Dividir AC por M(X); colocar o quociente em MQ e o resto em AC Multiplicar o acumulador por 2, isto é, deslocar uma posição à esquerda Dividir o acumulador por 2, isto é, deslocar uma posição à direita Modificação de Endereço 00010010 STOR M(X,8:19) Substituir o campo de endereço de M(X) pelos 12 bits mais à direita de AC CICLO DE INSTRUÇÕES Um computador interpreta as instruções, num período denominado ciclo de interpretação de instrução, ou ciclo de instrução, que corresponde a uma sequência de pequenos passos discriminados a seguir: 1) busca de instrução da memória para o registrador de instrução; 2) atualização do contador de programa para que o mesmo aponte para a próxima instrução na memória; 3) determinação do tipo de instrução; 4) busca do operando, se houver, carregando um dos registradores; 5) execucão da operação (soma, subtração, etc.); 6) armazenamento do resultado; e 7) volta para o passo 1 para iniciar a interpretação da instrução seguinte. Nota-se que cada tipo de instrução apresenta diferenças nos passos de 4 a 6; sendo porém, coincidentes nos demais passos. O primeiro passo corresponde à operação de busca da instrução na memória apontada pelo contador de programa. Nota-se que no início da interpretação de uma instrução, o contador de programa deve conter o endereço da instrução na memória. A instrução lida da memória é carregada no registrador de instrução, IR. O passo seguinte corresponde à atualização do contador de programa, PC, para que o mesmo aponte para a próxima instrução da memória. Esse passo tem o conceito de computador sequencial implicitamente embutido, pois o que é feito normalmente é incrementar o contador de programa, ou somar um ao conteúdo anterior, para que o conteúdo do mesmo seja o anterior acrescido de um, apontando, portanto, para a próxima palavra contígua na memória principal. O terceiro passo corresponde à análise do campo de código de operação (opcode) da instrução. Essa análise pode ser feita num decodificador, quando se usa uma unidade de controle fixo (hardwired), ou através de microinstruções, quando se usa uma unidade de controle microprogramada. Os passos 4,5 e 6, são diferentes para cada tipo de instrução, sendo portanto necessária uma descrição do conjunto de instruções do computador. O último passo é a volta para o início do ciclo de interpretação de instruções. A Fig. 4 mostra alguns exemplos de execução de instrução. Nota-se que cada operação requer vários passos. A operação de multiplicação requer 19 suboperações, uma para cada posição de bit, exceto o bit de sinal. INICIO MAR <-- PC MBR <-- M[MAR] IR <-- MBR(0,7) MAR <-- MBR(8,19) PC <-- PC + 1 DECODIFICACAO DO OPCODE MBR <-- M[MAR] AC <--MBR AC > 0 PC <-- MAR ---- SOMASE AC>0 salta Salta Nao Sim <-------- Demais instrucoes < C I C L O D E B U S C A D E I N S T R U C A O C I C L O D E E X E C U C A O Figura 4. Diagrama de Fluxo de Interpretação Parcial de Instruções do IAS. Para elucidar graficamente o fluxograma de interpretação de instruções do IAS, apresenta-se na Fig.5 um diagrama alternativo do computador IAS. AC MQ MBR Circuitos de Aritmetica e Logica E n d e r e c o Instrucoes e dados MEMORIA PRINCIPAL IR PC M A R Circuitos de Controle Linhas de controle S i n a i s UNIDADE DE CONTROLE Dispositivos de Entrada/ Saida TimingOscilador D a d o s Endereco UNIDADE DE FLUXO DE DADOS Decodificador Figura 5. Diagrama alternativo do computador IAS. No diagrama da Fig.5 nota-se a inclusão dos multiplexadores descrevendo com mais detalhes o fluxo de dados, em relação a Fig. 1. Na Unidade de Controle foi acrescentado o decodificador que recebe como entrada o opcode da instrução, e cada opcode indica uma saída distinta para o ciclo de execução. Além disso foi acrescentado o oscilador e o circuito de timing, que é comum a todos os sistemas digitais síncronos. EXEMPLO DE INTERPRETAÇÃO DA INSTRUÇÃO DE SOMA Para facilitar a compreensão do fluxo de informações para a busca da instrução, mostra-se na Fig.6 os elementos envolvidos. A Tab. 2 mostra o conteúdo dos registradores durante o ciclo de busca, para o caso em que o valor do contador de programa é igual a 20; a instrução contida no endereço correspondente é ADD M(X) onde o endereço do operando é igual a 40. O opcode da instrução em binário é então 00000101, que corresponde a 5 em decimal. MBR E n d e r e c o Instrucao IR PC M A R Figura 6. Elementos do computador envolvidos na busca da instrução. Tabela 2. Valores dos registradores durante o ciclo de busca de instrução. Os valores dos registradores estão em ordem cronológica crescente. operações PC MAR MBR (0,7) MBR (8,19) IR Fim do ciclo anterior MAR ß PC PC ß PC + 1; MBR ß M[MAR] IR ß MBR(0,7); MAR ß MBR (8,19) 20 20 21 21 21 XX 20 20 20 40 XX XX XX 5 5 XX XX XX 40 40 XX XX XX XX 5 A instrução de soma consiste em realizar a adição do conteúdo do acumulador com um conteúdo de memória. O resultado é carregado no acumulador. Nota-se que nessa instrução existem dois operandos, sendo que um deles é o conteúdo do acumulador. Esse operando já está pronto para ser usado, no início da interpretação da instrução, e se chama operando implícito. O segundo operando deve ser lido na memória, cujo endereço é fornecido pelo campo de operando da instrução. Após a busca do operando na memória, o mesmo fica carregado no registrador MBR. Nesse momento é possível iniciar o subciclo correspondente à execução da operação soma. AC MBR Circuitos de Aritmetica e Logica E n d e r e c o Instrucoes e dados IR M A R Figura 7. Elementos envolvidos na execução da instrução soma. A Fig. 7 mostra os elementos envolvidos na execução da instrução soma. Para a ilustração dessa execução apresenta-se na Tab.3 os valores dos registradores nesse ciclo. É considerado que o valor inicialmente contido no acumulador é igual a 80 , e o valor contido na memória, M(X), é igual a 50. Tabela 3. Valores dos registradores durante o ciclo de execução de soma, em ordem cronológica crescente. Operações IR MAR MBR AC Fim do ciclo de busca de instrução MBR ß M[MAR] AC ß AC + MBR 5 5 5 40 40 40 5-40 50 50 80 80 130 MICROOPERAÇÕES Uma operação mínima de transferência entre registradores no computador é denominada microoperação. Uma microoperação é realizada num período de relógio do computador, e e´portanto indivisível em suboperações. Um exemplo de microoperação é a transferência de um dado do MBR para o AC: AC ß MBR. NOTAÇÃO RTN (REGISTER TRANSFER NOTATION) Para facilitar a descrição da seqüência de microoperações no computador, usamos uma notação denominada Register Transfer Notation, ou simplesmente RTN, que consiste numa notação do tipo: condição : ação 1; ação 2 …; ação n. A condição explicita o instante em que as ações são tomadas e as ações são as microoperações, ou outros sinais de controle disparados naquele instante. Exemplo: E.ADD.T1: MBR ß M[MAR]. No exemplo acima, a carga do MBR com o conteúdo de memória é executada no subciclo T1, do ciclo de execução E, da instrução ADD (soma ). Além de uma microoperação, uma ação pode ser o acionamentode um sinal de controle, como iniciaWR, para ativar o sinal de escrita na memória, fimWR para desativar o sinal de escrita, Fig. 8, e recicla, para reiniciar o ciclo de interpretação de instrução. Como exemplo, no subciclo T2 da instrução ADD, tem-se as seguintes operações em RTN: E.ADD.T2: AC ß AC + MBR; recicla. E n d e r e c o Instrucoes e dados J K Q Q’ IniciaWR FimWR Clock READ/WRITE’ IniciaWR FimWR MEMORIA PRINCIPAL Figura 8. Controle de escrita da memória. PROJETO DA UNIDADE DE CONTROLE HARDWIRED O computador a ser projetado tem uma unidade de controle fixa (hardwired), constituída de um decodificador e um circuito combinatório que gera os sinais de controle. Esses sinais de controle devem ser interligados aos pontos de controle cuja maioria se encontram numa outra unidade denominada fluxo de dados. A unidade de controle recebe como entrada o opcode, e os sinais de sincronismo, gerados pelo circuito de temporização (timing ), além das sinalizações provenientes das unidades controladas, que são a memória, a entrada e saída, e o fluxo de dados. PROJETO DA UNIDADE DE FLUXO DE DADOS A unidade de fluxo de dados consiste dos blocos funcionais (registradores, somador, multiplexadores) e das interligações entre os blocos funcionais. Uma interligação direta entre dois blocos funcionais, ou seja caminho direto, depende do compromisso custo/benefício. Por outro lado, a existência de duas entradas num mesmo registrador implica na existência de um multiplexador, aumentando a complexidade da implementação. A Fig. 9a mostra o caso em que os registradores MBR, PC e MAR estão com conexões diretas dois a dois, permitindo que as transferências de MBR a PC, PC a MAR e MAR a MBR possam ser executadas diretamente, através das microoperações PC ß MBR, MAR ß PC e MBR ß MAR, respectivamente. Porém, a transferência de PC a MBR, só é possível indiretamente, através das microoperações MAR ß PC e MBR ß MAR. O diagrama da Fig. 9b mostra a inclusão do caminho direto de PC a MBR, para melhorar o desempenho do computador. Nesse caso é agora possível uma transferência direta de PC a MBR através da microoperação MBR ß PC, porém houve um aumento na complexidade do circuito acrescentando a interconexão e o multiplexador. Nota-se, também, que quanto maior o número de entradas num mesmo registrador, maior é a complexidade do multiplexador. MBR PC M B R MBR PC M B R ( a) ( b) MUX Figura 9. (a) Registradores MBR, PC e MAR interligados dois a dois; e (b) Acréscimo da interconexão de PC a MBR com a inclusão de um multiplexador. O projeto deve adotar, portanto, a estratégia de minimização do número de caminhos sem prejudicar o desempenho do fluxo de dados. Normalmente o resultado é obtido após algumas tentativas. O projeto deve iniciar-se com a escolha de algumas instruções típicas (carga, armazenamento, soma, salto a subrotina) e a determinação de caminhos de dados implicados; seguidas de uma tentativa de projeto do fluxo de dados sujeito a algumas restrições; determinação do ciclo de fluxo de dados típico, que corresponde à menor operação de fluxo de dados do computador; e do ciclo de estado de controle principal, que corresponde a um conjunto de ciclos de fluxo de dados para a realização de uma operação considerada básica ao nível do computador. CIRCUITO DE TEMPO (TIMING) O computador executa as instruções em pequenos passos que denominamos aqui de subciclos. Para o exemplo usamos as notações T0, T1, T2 e T3, para os subciclos utilizados. Esses subciclos correspondem a uma operação de menor duração dentro do computador, como de transferência direta de dados entre registradores. Correspondem também a um período do relógio geral (clock) que fornece a base de tempo para toda a máquina. Como os subciclos são usados para uma operação mínima de fluxo de dados, eles também são chamados de ciclos de fluxo de dados. Um ciclo de busca de instrução, ou um ciclo de execução da instrução, é constituído de um conjunto desses subciclos. O ciclo de busca (fetch) de instrução é constituído de quatro subciclos no nosso caso, e contém uma operação de leitura de memória. Como o computador do tipo IAS é baseado em referência à memória, os ciclos de estado de controle principal como o ciclo de busca de instrução tem uma duração correspondente a um acesso à memória. Os ciclos de estado de controle principal, ou ciclo principal, são também conhecidos como ciclos de máquina, e correspondem a uma operação básica ao nível da máquina. Um ciclo de interpretação de instrução é constituído de pelo menos dois ciclos de máquina. O primeiro ciclo é comum para todas as instruções e corresponde ao ciclo de busca (fetch) de instrução. O ciclo de execução da operação, é diferente para cada instrução, podendo ter um tempo diferente para a sua conclusão. Os processadores complexos podem ter ciclos de fetch de instrução com mais de um ciclo de máquina, o mesmo acontecendo com os ciclos de execução. EXEMPLO DE CIRCUITO DE TIMING Fig.10. Circuito de timing de um computador simples para a geração de ciclos principais I e E, e subciclos T0, T1, T2 e T3. O circuito mostrado na Fig.10 corresponde ao circuito de timing de um computador para a geração de sinais de sincronismo para os ciclos de estado principais, I e E, e subciclos T0, T1, T2 e T3. O circuito é sincronizado por um sinal periódico denominado relógio (clock). Os sinais gerados pelo circuito são mostrados na Fig. 11. A parte superior da Fig.10 corresponde a um contador em anel, que gera os subciclos. Nota-se que um sinal recicla é responsável pelo reinício do contador (T0 = 1, T1 = 0, T2 = 0 e T3 = 0). Além do recicla, quando os três primeiros flip-flops do contador estiverem em zero (T0 = 0, T1 = 0 e T2 = 0), o contador reinicia. Quando o circuito de reinício estiver em zero, o contador desloca um bit à direita na borda de subida do sinal de relógio, introduzindo um zero no primeiro flip-flop (T0 = 0). Quando o circuito de reinício estiver em um, o contador desloca um bit à direita na borda de subida do sinal de relógio, introduzindo o valor um no primeiro flip-flop (T0 = 1). A parte inferior da Fig.10 corresponde a um outro contador em anel, mas de ciclos principais: ciclo I (busca de instrução) e ciclo E (execução da operação). Esses ciclos se alteram a cada reinício do contador de subciclos, sincronizados com a borda de subida do relógio. O reinício do contador de ciclos principais, no entanto, é diferente do reinício do contador de subciclos. O reinício do contador de ciclos principais é acionado por um circuito de reinício do computador denotado POR (Power-On-Reset). Esse circuito gera um pulso negativo, quando o fornecimento de energia é acionado (quando liga a máquina, power on), ou quando a energia já estiver acionada e o operador aperta o botão de reset. O pulso negativo é usado para introduzir os valores iniciais (I = 1 e E = 0) no contador em anel, de ciclos principais. Figura 11. Diagrama de tempo do circuito de timing. Nota-se através do circuito da Fig. 10 que o contador de subciclos pode ser reiniciado a qualquer momento, desde que o sinal de recicla seja acionado. O controle sobre o sinal de recicla será visto posteriormente, quando serão analisadas as interpretações das as instruções. O recicla é acionado no final da operação no ciclo de execução (E), para finalizar o ciclo principal, mesmo que não tenha ocorrido todos os quatro subciclos, eliminando portanto a ociosidade da máquina. O ciclo de busca de instrução (I) ocupa todos os quatros subciclos, e sendo comum para todas as instruções, não necessita ser finalizado antes de terminar todos os subciclos. ATUAÇÃO DAS LINHAS DE CONTROLE NOS ELEMENTOS A partir da notação RTN é possível projetar o circuitode controle fixo do computador. No exemplo a condição E.ADD.T0, deve acionar a carga do MBR, ou seja, a microoperação: MBR ß M[MAR]. Isso implica em implementar um circuito que dada a condição necessária, E.ADD.T0, gera um sinal de controle para o acionamento desejado, Fig. 12. A entrada E indica que o ciclo de estado de controle principal corresponde à execução. A entrada ADD é o sinal que indica qual instrução está sendo executada e corresponde à saída de um circuito decodificador de opcode. Finalmente, a entrada T0 indica o subciclo em que a microoperação deve ocorrer. MBR E n d e r e c o Instrucoes e dados IR PC M A R E ADD E ADD T0 CLOCK Figura 12. Diagrama que relaciona a linha de controle e o acionamento. Ainda na Fig. 12 nota-se a seleção do multiplexador, na condição E.ADD, implicando que o multiplexador está selecionado para a entrada da memória durante toda execução da instrução ADD. CIRCUITO DE CONTROLE É fácil notar que a Unidade de Controle deve conter um circuito de tempo, ou timing, que indica o subciclo (T0,.., T3), o ciclo de estado de controle principal de busca de Instrução (I ) ou Execução (E)), sendo que a cada final da interpretação de uma instrução, é iniciado um novo ciclo de busca de instrução, I. O circuito de sequenciação recebe um trem de pulsos, que serve como base para a geração dos sinais de subciclos, provindo do circuito oscilador, denominado relógio. IR DECODIFICADOR RELOGIO TIMING T0 T1 T2 T3 I E E ADD E ADD T0 A D D J U M P S T O R CLOCK E.ADD E.ADD.T0 .... Figura 13. Delineamento da Unidade de Controle Fixo (Hardwired). Além disso, deve existir um circuito de decodificação do campo do código de operação, opcode, da instrução. A Fig. 13 mostra um diagrama delineando a Unidade de Controle, com as partes envolvidas. Além do sinal de controle, o registrador MBR recebe como entrada, o sinal de relógio, para sincronizar a entrada de dados com os outros registradores. AC MQ MBR Circuitos de Aritmetica e Logica E n d e r e c o Instrucoes e dados MEMORIA PRINCIPAL IR PC M A R MBMUX ACMUX M A M U X Figura 14. Diagrama do fluxo de dados simplificado do IAS. MICROOPERAÇÕES EM RTN PARA O CICLO DE BUSCA DE INSTRUÇÃO Como o ciclo de busca de instrução é igual para todas as instruções, iniciamos o projeto com a representação RTN das etapas desse ciclo. I.T0 : MAR ß PC; { inicio da leitura } I.T1 : espera a leitura; PC ß PC + 1; I.T2 : MBR ß M[MAR]; e I.T3 : IR ß MBR(0,7); MAR ß MBR (8,19). Observamos que uma condição previamente imposta neste projeto é de que a memória leva dois subciclos para o seu acesso para leitura ou escrita. Durante o subciclo T1 a memória está sendo lida. O incremento do contador de programa pode ocorrer em qualquer subciclo após a carga do conteúdo atual para o MAR que ocorre no subciclo T0. No exemplo, fazemos esse incremento no subciclo T1. Após o tempo de espera de leitura de memória o conteúdo lido pode ser carregado no MBR, que ocorre em T2. Em seguida, o campo de opcode da instrução lida é carregado para o IR, e o campo de endereço é carregado no MAR. A carga do MAR serve para iniciar a leitura do operando, embora a leitura do operando seja necessária somente para algumas instruções (por exemplo: ADD e LOAD), a memória fica em repouso na condição de leitura. Portanto, o endereçamento antecipado da memória com o campo de operando X, não afeta as instruções que não fazem uso de referência à memória, e adianta a leitura para outras instruções. O opcode carregado em IR é usado para a decodificação da instrução, que é realizado por um circuito decodificador. Essa decodificação é realizada num tempo muito rápido, de tal forma que no próximo subciclo, que corresponde a um ciclo principal de execução de instrução, ciclo E, o computador já deve ter disponível qual a operação a ser realizada. SUBCONJUNTO DE INSTRUÇÕES DO COMPUTADOR IAS A SEREM IMPLEMENTADAS NO EXEMPLO A Tab.4 mostra as instruções típicas de um computador seqüencial, a serem implementadas a seguir. TABELA 4. Instruções típicas a serem implementadas. Opcode Binário Mnemô- nico Instrução 00000001 LOAD M[X] Carga 00100001 STOR M[X] Armazenamento 00000101 ADD M[X] Soma 00001111 JPOS M[X] Desvia se positivo 00001101 JUMP M[X] Desvio incondicional Para as descrições seguintes sobre os ciclos de execução será usada uma configuração de caminhos existentes no computador simplificado conforme mostrado no diagrama da Fig.14, que é uma alteração da Fig.5, incluindo a denominação dos multiplexadores, mostrando a parte referente ao fluxo de dados. A configuração foi definida para satisfazer o projeto de uma parte das instruções do computador IAS, como mostradas na Tab.4. MICROOPERAÇÕES PARA EXECUÇÃO DA INSTRUÇÃO ADD Apresentamos a seguir os subciclos correspondentes a instrução ADD: E.T0.ADD : {espera a leitura} E.T1.ADD : MBR ß M[MAR}; e E.T2.ADD : AC ß AC + MBR; recicla. Nota-se que após o sinal de controle recicla o circuito de timing volta para o subciclo T0 de busca de instrução. Caso a carga de MAR com o endereço do operando não tivesse sido incorporado no subciclo anterior I.T3, essa operação deveria ser feita em E.T0.ADD, e o último subciclo seria em E.T3.ADD. A carga antecipada de MAR antecipa a finalização da interpretação da instrução ADD, tornando o computador mais rápido. Nota-se também que a representação RTN acima leva em conta que o fluxo de dados contem os caminhos diretos interligando os blocos funcionais como somador, acumulador, registrador de dados de memória. Além disso a parte relativa ao endereçamento de memória contem os caminhos diretos interligando MBR com MAR e PC com MAR, usando um multiplexador na entrada de MAR. MICROOPERAÇÕES PARA A EXECUÇÃO DA INSTRUÇÃO LOAD A instrução LOAD faz a carga do acumulador com um conteúdo de memória. As microoperações para a instrução LOAD são as seguintes: E.T0.LOAD : {espera a leitura} E.T1.LOAD : MBR ß M[MAR}; e E.T2.LOAD : AC ß MBR; recicla. A descrição acima implica na existência de um caminho direto entre o MBR e AC, para a microoperação AC ß MBR. Caso não exista esse caminho direto, uma alternativa de projeto é usar o caminho que passa pelo somador, fazendo com que a soma não seja realizada, de alguma forma, como por exemplo, zerando o conteúdo do acumulador, antes da operação. MICROOPERAÇÕES PARA A EXECUÇÃO DA INSTRUÇÃO STOR A instrução STOR realiza a escrita na memória com o conteúdo do acumulador. As microoperações para a execução de STOR podem ser as seguintes: E.T0.STOR : MBR ß AC; inicioWR E.T1.STOR : {espera de escrita} e E.T2.STOR : fimWR; recicla. MICROOPERAÇÕES PARA A EXECUÇÃO DA INSTRUÇÃO JUMP A instrução JUMP realiza um salto incondicional. Como o salto é feito alterando o conteúdo de PC, a única microoperação executada é uma transferência do campo de operando contido no MAR para o PC. Isso implica na existência de um caminho direto entre MAR e PC. A expressão RTN para a instrução JUMP é a seguinte: E.T0.JUMP : PC ß MAR; recicla. MICROOPERAÇÕES PARA A EXECUÇÃO DA INSTRUÇÃO JPOS A instrução JPOS realiza um salto condicional, quando o conteúdo do acumulador for positivo AC(0) = 0. A diferença entre a instrução JUMP e JPOS é que o salto só é executado se o primeiro bit do acumulador for igual a zero, indicando que o valor é positivo. Nesse caso tem-se duas expressões RTN, seguintes: E.T0.JPOS : recicla; e E.T0.JPOS. AC(0)’ : PC ß MAR. CIRCUITO COMBINATÓRIO DOS SINAIS DE CONTROLE O projeto da unidade de controle deve iniciar-se pela identificação dos pontos de controle do computador. Na Tab. 5 podemos verificar os pontos decontrole identificados, separados em ativação de registradores, seleção de multiplexadores, e flip-flops de controle. Tabela 5. Pontos de Controle Ativação dos registradores Controle dos Multiplexadores Controle De Memória HMBR HPC HAC HMAR INCRPC HIR ACMUX MAMUX MBMUX InícioWR FimWR Uma tabela de microoperações que implicam em ativação dos pontos de controle facilita a identificação detalhada das implicações para os pontos de controle. Para a construção dessa tabela, é interessante desenvolver uma tabela auxiliar mostrando todas as expressões RTN, usadas para as diversas instruções (Tab. 6). A Tab. 7 mostra as microoperações e os pontos de controle ativados. Tabela 6. Tabela completa de expressões RTN Ciclo de busca: I.T0 : MAR ß PC; { inicio da leitura } I.T1 : espera a leitura; PC ß PC+1; I.T2 : MBR ß M[MAR]; e I.T3 : IR ß MBR(0,7); MAR ß MBR(8,19). Execução: ADD E.T0.ADD : {espera a leitura} E.T1.ADD : MBR ß M[MAR}; e E.T2.ADD : AC ß AC + MBR; recicla. Execução: LOAD E.T0.LOAD : {espera a leitura} E.T1.LOAD : MBR ß M[MAR}; e E.T2.LOAD : AC ß MBR; recicla. Execução: STOR E.T0.STOR : MBR ß AC; inicioWR E.T1.STOR : {espera de escrita} e E.T2.STOR : fimWR; recicla. Execução: JUMP E.T0.JUMP : PC ß MAR; recicla. Execução: JPOS E.T0.JPOS : recicla; e E.T0.JPOS. AC(0)’ : PC ß MAR. Tabela 7. Microoperações e os pontos de controle Destinação Microoperação Pontos de controle ativos AC AC ß MBR AC ß AC + MBR HAC ACMUX HAC ACMUX MAR MAR ß MBR(8,19) MAR ß PC HMAR MAMUX HMAR MAMUX MBR MBR ß M [MAR] MBR ß AC HMBR MBMUX HMBR MBMUX IR IR ß MBR (0,7) HIR PC PC ß PC + 1 PC ß MBR(8,19) INCRPC HPC AGRUPAMENTO DAS IMPLICAÇÕES PARA OS PONTOS DE CONTROLE DOS REGISTRADORES O projeto prossegue agrupando para os pontos de controle os implicantes. Como exemplo, nota-se pela Tab. 7 que o ponto de controle HAC é ativo para duas microoperações. Para o agrupamento dos implicantes, é necessário verificar no conjunto de microoperações, nas expressões RTN as condições correspondentes. Para o exemplo do HAC tem-se: HAC = E.T2.ADD + E.T2.LOAD Os implicantes para os demais pontos de controle de registradores podem ser obtidos analogamente: HMAR = I.T3 HMBR = I.T2 + E.T1.ADD + E.T1.LOAD + E.T0.STOR HIR = I.T3 HPC = E.T0.JUMP + E.T0.JPOS.AC(0)’ INCRPC = I.T1 AGRUPAMENTO DAS IMPLICAÇÕES PARA OS PONTOS DE CONTROLE DOS MULTIPLEXADORES Para o controle de seleção dos multiplexadores é necessário verificar qual a seleção necessária para as microoperações. Para isso convem desenvolver uma extensão da Tab.7, para os multiplexadores, conforme a Tab. 8. Tabela 8. Seleção dos multiplexadores. Destinação Microoperação Pontos de Controle ativos Seleção dos Multiplexadores AC AC ß MBR AC ß AC + MBR HAC ACMUX HAC ACMUX ACMUX 0 1 MAR MAR ß MBR(8,19) MAR ß PC HMAR MAMUX HMAR MAMUX MAMUX 0 1 MBR MBR ß AC MBR ß M [MAR] HMBR MBMUX HMBR MBMUX MBMUX 0 1 O projeto dos implicantes significa verificar para a coluna de seleção dos multiplexadores da Tab. 8, quais as condições em que os pontos de controle devem ter o valor um, e determinar os implicantes usando a tabela de microoperações. Por exemplo, o projeto de ACMUX consiste nos implicantes em que: AC ß AC + MBR Portanto, ACMUX = E.T2.ADD. Após a determinação das equações booleanas para os pontos de controle, a próxima tarefa é a minimização do circuito combinatório resultante. O projeto apresentado constitui essencialmente de uma unidade de controle fixo, ou hardwired. Nota-se que uma vez feita a minimização do circuito é difícil alterar uma instrução sem refazer totalmente o projeto do circuito combinatório. INSTRUÇÕES DE SALTO E RETORNO DA SUBROTINA No computador IAS não consta a instrução de salto a subrotina SBR, nem a instrução de retorno ao programa principal RET, após a execução da subrotina. Apresentamos a seguir essas duas instruções para facilitar o entendimento dos mecanismos de salto e retorno de subrotinas, nos computadores modernos. A instrução SBR que será apresentada a seguir é usada para que a seqüência de execução das instruções seja alterada para uma outra posição da memória principal, onde se encontra a subrotina. Na primeira posição da subrotina, porém, deve ser armazenado o endereço de retorno. A subrotina se inicia, portanto, na segunda posição. A seguir será apresentada a execução da instrução SBR M(X), em RTN: E.T0.SBR : MBR(0,7) ß 00000000; MBR(8,19) ß PC; PC ß MBR(8,19); inicioWR; E.T1.SBR : {espera de escrita}; e E.T2.SBR : fimWR; PC ß PC + 1; recicla. Pela descrição RTN, durante o subciclo T0, o valor correspondente ao endereço de retorno, que seria a próxima instrução caso não houvesse o salto, é carregado do PC ao MBR; além disso, o valor contido no MBR(8,19) que corresponde ao endereço da primeira posição da subrotina é transferido para o PC. No subciclo T2 é finalizado o processo de escrita do endereço de retorno na primeira posição da subrotina M(X), e o conteúdo do contador de programa é incrementado de um para que a próxima instrução a ser executada seja lida na segunda posição da subrotina. A instrução RET é usada para o retorno ao programa principal, após a execução da subrotina. Como o endereço de retorno é armazenado na primeira posição da subrotina pela instrução SBR, esse endereço deve ser lido para ser usado como o endereço da próxima instrução, alterando o conteúdo de PC. A seguir é mostrada a representação em RTN da instrução RET M(X): E.T1.RET : MBR ß M[MAR]; e E.T2.RET : PC ß MBR(8,19); recicla. INSTRUÇÕES DE ENTRADA E SAÍDA No computador IAS, também não consta a instrução de entrada, bem como instrução de saída. A entrada e saída no IAS era feita através de instruções de referência a memória, em endereços específicos, previamente destinados para essa finalidade. Essa forma de entrada e saída é denominada de entrada/saída mapeada em memória (memory mapped I/O). As instruções de entrada e saída apresentadas a seguir são específicas para a finalidade de troca de informações com o uso do acumulador, AC; e são comuns na maioria dos computadores modernos. A instrução de entrada, INP, é usada para a leitura de um dado contido num dispositivo de entrada. Após a execução dessa instrução o dado é disponível no AC. Como existem vários dispositivos de entrada, um duto de dados é usado em comum por todos os dispositivos, porém, um único dispositivo deve ser selecionado durante uma instrução de entrada. A instrução INP D(X) deve portanto indicar qual dispositivo a ser ativado para a entrada, através do valor contido em D(X). Como o campo de endereço é carregado em MAR durante o ciclo de busca de instrução, o circuito de endereçamento dos dispositivos de entrada deve estar conectado às linhas de saída do MAR. A representação RTN abaixo mostra a execução da instrução de entrada: E.T0.INP : iniciaINP; E.T2.INP : AC ß dadoEntrada; e E.T3.INP : fimINP. O sinal de controle iniciaINP é usado para ativar um flip-flop de controle de entrada, cuja saída deve ser conectada aos dispositivos de entrada para sinalizar o momento em que o dado deve ser disponibilizado no duto de dados de entrada. O sinal fimINP serve para sinalizar o fim da entrada de dados. Durante o subciclo T2 o dado é carregado no AC. A instrução de saída, OUT, é usada para que um dado contido no AC seja lido por um dispositivo de saída. A forma de endereçamentodo dispositivo de saída é idêntica à instrução de entrada. Durante a execução da instrução OUT D(X) é gerado num flip-flop de controle de saída, um pulso indicando a disponibilização do dado no duto de dados de saída. Assim são usados os sinais de controle inicioOUT e fimOUT, para essa finalidade, conforme a descrição seguinte: E.T0.OUT : iniciaOUT; e E.T3.OUT : fimOUT. CONTROLE DE INTERRUPÇÃO Uma interrupção durante a execução de um programa no computador implica em parar temporariamente a execução do programa e executar uma subrotina de atendimento ao dispositivo que solicitou a interrupção. As interrupções em geral podem ser gerados pelo próprio computador, ou por algum dispositivo de entrada ou de saída. As interrupções geradas pelo próprio computador, são causadas por alguma operação imprópria, como por exemplo, divisão por zero, estouro da unidade aritmética, etc. Uma interrupção causada por dispositivos externos, corresponde a alguma solicitação de entrada ou de saída de dados. Como o dispositivo externo é assíncrono em relação ao computador, a interrupção é uma forma eficiente para a entrada ou saída de dados. Um outro método de entrada e saída, menos eficiente é chamado polling, e nesse caso o computador fica executando um laço até que o dispositivo externo fique pronto. Como um dispositivo externo é assíncrono em relação ao computador, o tempo gasto pelo computador executando o laço é imprevisível. Um dispositivo externo que interrompe o computador é o teclado, em que o operador digita caracteres durante um processamento de texto. Se for utilizado o método de polling para a entrada pelo teclado, o computador ficaria a maioria do tempo em laço, esperando o operador. Um exemplo de implementação é mostrado na Fig. 15. Figura 15. Diagrama do circuito de interrupção. A interrupção é habilitada por um flip-flop IEN (Interrupt ENable). Esse flip-flop quando é ligado permite que um dispositivo externo interrompa a execução normal do computador no próximo ciclo de busca I. A interrupção é solicitada pelo dispositivo externo através da linha INT’, ativa em zero. Após a linha INT’ ser ativada, o computador entra no estado de interrupção no próximo ciclo de instrução se o IEN estiver ativo. Se IEN não estiver ativo, o computador fica no estado de execução normal do programa principal, até que IEN seja ativado por uma instrução “OUTP 0”. O circuito mostra a ativação do flip-flop IEN e do flip-flop RUPT, que indica o estado de interrupção. O sinal gerado por esse flip-flop é usado pela unidade de controle para introduzir no MBR uma instrução de chamada de subrotina no endereço zero, “SBR 0”. Como o momento da interrupção é imprevisível é óbvio que essa instrução não provem da memória principal. Uma forma de implementação do mecanismo é a introdução da instrução no multiplexador do MBR, conforme mostra o diagrama da Fig. 16. Ao executar a instrução SBR 0, o computador faz um salto à subrotina no endereço zero, portanto a rotina de tratamento do dispositivo de interrupção deve estar nesse endereço. A última instrução da subrotina sendo RETN, a sua execução faz com que o computador passe a executar de volta o programa principal, após o atendimento à interrupção. AC MQ MBR Circuitos de Aritmetica e Logica E n d e r e c o Instrucoes e dados MEMORIA PRINCIPAL IR PC M A R Dispositivos de Entrada/ Saida D a d o s Endereco MBMUX ACMUX M A M U X SBR 0 Figura 16. Alteração do MBMUX para a inclusão da instrução “SBR 0”. O diagrama de tempo da Fig. 17 mostra uma sequência de instruções durante duas solicitações de interrupção. Nota-se da esquerda para a direita que o flip-flop RUPT torna-se ativo, pela primeira solicitação de interrupção, quando IEN é ativo. Logo em seguida IEN fica inativo pelo circuito da Fig. 15, de solicitação de interrupção. Para uma outra interrupção ser habilitada uma instrução de “OUTP 0” deve ser executada. Nota-se no diagrama de tempo que embora uma segunda interrupção seja solicitada, ela só pode ser atendida após a ativação de IEN. A última instrução da subrotina RETN é executada antes de entrar no segundo estado de interrupção. ‘SBR 0’ ‘SBR 0’ Figura 17. Diagrama de tempo do circuito de interrupção. INSTRUÇÃO DE MULTIPLICAÇÃO No projeto computador IAS, está inclusa uma instrução de multiplicação, que executa uma multiplicação de dois números inteiros de 20 bits, gerando um produto de 40 bits. Para essa implementação é possível adotar o algoritmo A1 apresentado a seguir, baseado no diagrama da Fig.18. PRODUTO MULTIPLICADOR MULTIPLICANDO SOMADOR 0 19 20 39 Figura 18. Diagrama dos elementos funcionais para a multiplicação. Algoritmo A1. Multiplicação serial de dois números inteiros de 20 bits. INICIO TESTA PRODUTO Somar o multiplicando `a metade esquerda do do produto e colocar o resultado na mesma posicao. Deslocar o produto `a direita ULTIMA CASA FIM = 0 = 1 NAO SIM Como a execução do algoritmo A1 exige um número de ciclos correspondente ao número de bits do multiplicador, a implementação da instrução de multiplicação exige uma alteração do circuito de timing apresentado na Fig.10 para que durante essa instrução a execução seja constituída por um número de ciclos de estado principal correspondente ao número de bits do multiplicador. Além disso, deve ser acrescido um circuito contador para que após completar o número necessário de ciclos o computador gere o sinal de recicla, para iniciar a busca da próxima instrução.
Compartilhar