Arquitetura dos Microprocessadores Prof. Msc Eng. Getúlio Teruo Tateoki Introdução Do ponto de vista do programador, a Arquitetura de Computadores trata do comportamento funcional de um sistema computacional (ex. tamanho de um tipo de dados – 32 bits para um inteiro) e a Organização de Computadores trata da estrutura interna que não é visível para o programador (ex. freqüência do relógio ou tamanho da memória física). Existe um conceito de níveis na arquitetura de computadores. A idéia básica é que existem muitos níveis nos quais o computador pode ser considerado, do nível mais alto, onde o usuário executa programas, ao nível mais baixo, que consiste de transistores e fios.[1] Este trabalho tem por objetivo o conhecimento e o estudo da arquitetura básica de um microprocessador hipotético tendo por base os microprocessadores Z8088 e Z80 da Zilog. Histórico Desde a invenção da escrita e do papel, um dos maiores problemas do homem era saber utilizar com eficiência as informações gravadas, problemas estes que se persistiram até ao advento dos microprocessadores. Basicamente, estes problemas eram: 1- Organização de catálogos ou fichas. Ex. Lista Telefônica, Catálogo de Clientes e Fornecedores, etc. 2- Contabilidade. Ex. Senso demográfico, Saldo do Cliente, etc. 3- Consulta de um ponto ou localização geográfica. Ex. Cidade, Rios, etc. Com a relação ao primeiro item, pode se notar que o procedimento a ser adotado, é o da decisão, pois na prática se resume em uma sucessão de operações que devem ser decididas segundo algum critério de ordem. No item dois, observa-se que devem der feitos milhares de operações matemáticas e no três, a consulta de arquivo ou mapa. Pode-se observar que as tarefas envolvidas nos dois primeiros itens são repetitivas, não havendo nenhuma necessidade de qualquer criatividade para serem realizadas. Além disso, as três tarefas envolvidas, podem ter um tempo de execução relativamente longo, fora a possibilidade de erros na sua execução. Para sanar estes problemas ou pelo menos minimizalas ao máximo, a humanidade tem procurado soluções em alguma máquina que possa que possa ordenar, calcular e executar uma infinidade de tarefas sem erros. Porém, dada à Arquitetura de Microprocessadores Página 1 diversidade das tarefas a ser executadas, seria necessário “ensinar” a máquina, de uma maneira fácil, através de uma seqüência de operações repetitivas que devem obedecer a uma operação lógica. Assim sendo esta seqüência de comandos executadas pela máquina são denominados PROGRAMA, que podem ser modificados com relativa facilidade tornando-a, pois, esta máquina potente com alta flexibilidade. Porém, ainda há necessidade de solução de alguns problemas como: 1- Realização de operações lógicas (maior que, menor que, etc.) e aritméticas; 2- Armazenamento de dados (para as operações acima) e seqüências de operações (operações acima); 3- Execução de programas; 4- A obtenção dos dados e dos programas a partir de alguma ação do operador (teclado por exemplo.) 5- A apresentação dos resultados como em algum display ou impressão em papel. Estes problemas podem ser resolvidos separadamente e depois juntados para ser construído uma máquina. Realização das Operações Lógicas Aritméticas As Operações Lógicas Discretas podem ser realizadas a nível físico utilizando portas lógicas e implementadas com circuitos eletrônicos. Além da realização básica de dois números binários, são também realizadas as suas comparações. Dá-se a denominação de Unidade Lógica Aritmética (ULA) o bloco desde sistema que recebe nas entradas os operandos A e B, a função de executar F, o resultado C (em se tratando de operação aritmética) ou K quando em comparação (operação lógica). A figura 1, mostra uma ULA básica, com as flechas que significam que podem ter mais de um único bit. Figura 1 – ULA- Unidade Lógica Aritmética Arquitetura de Microprocessadores Página 2 Armazenamento de Dados e Programas Suponhamos que nós quiséssemos somar dois números A e B. Para armazena-lo, precisamos de dois registradores na entrada do ULA para que só assim possa ser efetuada a soma (F indicando “soma”) como mostra a figura 2. Figura 2 – Soma de dois números A e B Se por acaso forem somados 10 valores D1, D2,...,D10 será necessário utilizar um artifício de seleção P que recebesse na sua entrada os dados da saída de C, sendo: P=1 -> S=A e P=0 -> S=C conforme descrito na figura 3. Portanto, o bloco Seleção faz a escolha entre A e C conforme o comando P. Figura 3 –Soma sucessiva de dois números Por exemplo, para se somar dez valores, são efetuadas: 1- O registrador 1 é carregado com o valor D0 e o registrador 2 com o valor D1, com P=1; Arquitetura de Microprocessadores Página 3 2- É somado os valores dos registradores 1 e 2; 3- É armazenado o resultado no registrador 2, com P=0; 4- É colocado o próximo valor no registrador 1; 5- É retornado ao passo 2, até que o décimo valor tenha sido somado. O resultado será armazenado no registrador 2. Porém, há de se observar que os valores inseridos vieram de algum local que foram previamente armazenados. Este Local é denominado Memória. Memórias As memórias podem ser idealizadas como uma rua onde existem várias casas. Estas casas para serem devidamente identificadas deverão possuir um endereço com número e também possuir, para se ter acesso a elas, uma porta para entrada e/ou saída. Pode-se também ser representado de uma outra maneira conforme descrito na figura 4. Figura 4 - Representação de uma memória Portanto, para o acesso à memória teremos as duas condições básicas: 1- Operação de Escrita: -É colocado em A o endereço da posição de memória que deve armazenar o valor D e em seguida é acionado o sinal ESCREVE. 2- Operação de Leitura: É posicionada em A o endereço da posição de memória da qual se deseja saber do conteúdo. Este valor irá aparecer em D quando ativado o sinal LÊ. Uma vez encontrado um local para o armazenamento de valores, será necessário um registrador para o armazenamento de endereço da posição de memória que contém o dado requerido. O conjunto do sistema pode ser esquematizado até agora como mostra na figura 5, donde pode-se observar que no bloco de SELEÇÃO 2, através do acionamento do sinal Arquitetura de Microprocessadores Página 4 R, o conteúdo da memória agora em D é armazenado no registrador 1 ou passa ser a parcela A. Figura 5 – Conjunto do Sistema com Memória Armazenamento de Programas Para a realização de um uma seqüência de operação, as instruções devem estar contidas em um programa e a máquina deve ser capaz de entende-la. Um computador ou um processador deve ser capaz de basicamente realizar um certo número fixo de operações básicas. Este conjunto deve ser escolhido de tal forma que as ações complexas possam ser decompostas nestas operações básicas. Por exemplo, uma expressão matemática tipo: 3 + 4 ∗ 8 + 9 − 10 ÷ 8 ( i ) Basicamente a expressão i não passa de uma combinação de quatro operações aritméticas básicas. Uma vez selecionado este conjunto de operações básicas, são associados a cada um, um número: Operação Soma Subtração e assim por diante.. Número Associado 4 1 A esses números associados é denominado CÓDIGO DE OPERAÇÃO. Assim, um programa será codificado como uma seqüência de números, cada qual indicando uma operação. Por exemplo, na realização das seguintes operações básicas: 1- armazenar um dado no registrador 1 - código 10 2- armazenar um dado no registrador 2 -código 17 3- somar os valores nos registradores 1 e 2, guardando o resultado no registrador 2 – código 20. Portanto, teremos um programa para efetuar a soma de 3 números: Arquitetura de Microprocessadores Página 5 Operação - armazenar 1º valor no registrador 2 - armazenar 2º valor no registrador 1 - somar - armazenar 3º valor no registrador 1 - somar Código de Operação 17 10 20 10 20 Ainda é necessário alocar uma posição da memória para guardar os códigos de operação que é realizado dividindo a posição de memória em duas partes, sendo uma para guardar os valores e outra para os códigos de operação conforme é mostrado na figura 6. Figura 6 – Forma como é guardo as informações na memória Execução dos Programas Um programa é composto de instruções. Essas instruções devem ser executadas de forma seqüencial, ou seja, uma nova operação só pode ser iniciada quando a anterior tiver sido concluída. Este procedimento pode ser descrito como: 1- ler na memória um código de operação (ciclo de busca). 2- “entender” o que deve ser executado (decodificação da instrução). 3- ler na memória, eventualmente um ou mais dados (ciclo de extensão ou busca de operandos). 4- executar a instrução (ciclo de instrução). Arquitetura de Microprocessadores Página 6 Por exemplo, para se executar a soma de três valores são realizados os seguintes procedimentos: 1- o primeiro código de operação (18) deve ser lido da memória 2- armazenar um dado no registrador 2. 3- A máquina deve ler na memória o primeiro valor (5) e posicionar os controles R e P dos blocos de seleção. 4- Através de um ciclo de clock o registrador 2 para que este armazene o valor (5) Portanto, a execução da primeira instrução estará completa. A próxima já estará em condições de ser executada.É preciso notar que o ciclo de extensão para a instrução SOMA não existe, já que os valores a somar estão nos registradores 1 e 2. O diagrama esquemático pode ser atualizado agora de acordo com a figura 7que agora contém adicionado novos blocos: Figura 7- Esquema de um processador que executa um programa Registrador de instruções: -Armazena o código de operações quando o bloco Seleção 2 o seleciona como saída. O código de instrução , será entregue ao decodificador. Arquitetura de Microprocessadores Página 7 Decodificador: -É responsável pela “tradução” do código de instrução naquilo que ele significa, ou seja é com ele que a maquina irá entender o que deve ser feito. Este significado é entregue ao gerador de sinais de controle. Gerador de Sinais de Controle: -Ele é encarregado de atuar sobre os diversos blocos para a realização da operação desejada como os selecionadores e registradores, indicando o quê em que momento deve ser feito. Apontador de Instruções: -É o registrador qeu contém o endereço de memória da próxima instrução a ser executada, fazendo com que o bloco Seleção 3 escolha este valor como endereço A para a memória. +1: -Representa um circuito que soma “1” ao valor apontador de instrução. Finalmente o sinal LIMPA iniciaria todo o sistema, fazendo com que o apontador de instrução ficasse com o valor “1” e a Seleção 3 colocasse esse valor como endereço para a memória. Supondo que a tecla LIMPA tenha sido pressionada, uma nova instrução será executada. Pode-se ser analisada em blocos com se segue: 1- leitura de um código de operação (ciclo de busca); a) o valor atual do apontador é 1; o bloco Seleção 3 coloca como endereço ª b) o gerador de sinais de controle gera o sinal LÊ. c) A memória apresenta à saída D o valor do código de operação (17). d) o gerador de sinais de controle atua sobre o bloco Seleção 2 para que o código de operação fique armazenado no registrador de instrução. e) o decodificador de instrução interpreta o valor 17 como “pegar o dado no endereço 6 de memória e armazena-lo no registrador 2. 2- leitura do dado na memória: a) o registrador de endereço fica com o valor 6. b) o gerador de sinais de controle atua sobre seleção 3, para que o conteúdo do registrador de endereço seja usado como endereço para a memória. c) o gerador de sinais de controle gera o sinal LÊ. d) a memória apresenta em D o conteúdo da posição de endereço 6 (3). e) o gerador de controle atua sobre Seleção 2 e Seleção 1, armazenando o valor no registrador 2. 3- preparação para a próxima instrução: Arquitetura de Microprocessadores Página 8 a) o gerador de controle atua sobre o bloco “+1” a fim de incrementar o valor do apontador de instrução, de forma que o seu conteúdo passa a 2. b) o sistema volta ao passo 1 para a execução de uma nova instrução. Obtenção dos Dados e Programas a partir de ações externas Se a máquina fosse somente fosse capaz de executar a soma de 3 valores seria de pouca serventia. Seria interessante que pudesse mudar com facilidade os dados e/ou programa. Por exemplo, um operador tendo em sua frente um teclado de máquina de escrever pode-se nele digitar as instruções de mudança, fazendo-se que os códigos digitados sejam armazenados na memória, porém primeiramente convertida em números binários e armazenados em um registrador. Apresentação dos Resultados Se forem necessários a impressão do resultado da soma de 3 valores por exemplo, que estava no registrador 2 em um papel, podem ser efetuados conforme mostra a figura 8. Figura 8 – Registradores conectados a uma impressora. Saída de Alta Impedância (Tri-State) Os dispositivos de saída (Registradores) possuem na sua saída, além dos níveis lógicos 0 ou 1, uma terceira opção que é de Alta Impedância ou Tri-State. É como se houvesse uma chave lógica e pudesse desconectar o circuito ou como se houvesse desfeito uma ligação elétrica. Esta característica é extremamente importante, já que muitas vezes como, por Arquitetura de Microprocessadores Página 9 exemplo, em uma impressora onde não se quer que receba os dados o tempo todo a não ser quando for preciso ser encaminhado alguma informação para ser impresso, normalmente a saída destes registradores ficam em Tri-State. No caso específico da arquitetura em estudo, pode-se os geradores de sinais atuar diretamente sobre os registradores ao invés dos blocos de seleção. O esquema definitivo pode ser apresentado conforme mostra a figura 9. Como podem ser observadas, as vias, que são conjuntos de conexões elétricas como, por exemplo, fios que carregam o mesmo tipo de informação como dados e endereços, podem interconectar o sistema principal que é chamado CPU - Unidade de Processamento Central dos demais outros sub-sistemas como memórias e interfaces. A CPU (ou UCP) é considerada a “inteligência” da máquina. Figura 9 – Diagrama em Blocos do Sistema Definitivo Um outro esquema mais simplificado pode ser representado através de um outro diagrama de blocos como é mostrado na figura 10. Este é um esquema básico que é praticamente encontrado na maioria dos livros de autores diversos, salvo com algumas modificações. Arquitetura de Microprocessadores 10 Página Figura 10 – Diagrama de Blocos de um Microprocessador Bibliografia: 1-Curso de Microprocessadores. Occidental Schools.(1986) 2-M. Murdocca, V. Heuring; Introdução à Arquitetura de Computadores. Extraído do site: http://www.gta.ufrj.br/ensino/EEL580/apresentacoes/ (03.03.2008) Arquitetura de Microprocessadores 11 Página