Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Introdução
Os computadores só conseguem entender instruções muito básicas como somar dois números,
copiar um dado da memória para um dispositivo de saída, ou verificar se resultado de uma
operação foi negativo. Essas instruções básicas são chamadas de instruções de máquina.
Qualquer aplicação precisa ser escrita, ou convertida através de compiladores, para linguagem de
máquina para que possa ser executada. Neste material, veremos como esses programas em
linguagem de máquina são executados ou, em outras palavras, como o computador e, em
especial, a CPU (microprocessador) funcionam. Para isto estudaremos um processador genérico
simples.
2. A CPU e o Computador
Registradores — São a unidade de armazenamento mais básica, tanto para os dados que serão
processados, como para os dados resultantes desse processamento. Alguns exemplos de
registradores são o de endereços e o de instruções, o acumulador e o contador de programa.
Os barramentos podem ser definidos como um conjunto de sinais ou, fisicamente, como um
agrupamento de trilhas em uma placa de circuito impresso (PCI, ou PCB no inglês). Cada
barramento segue uma especificação lógica, elétrica e mecânica adequadas ou, em outras
palavras, tipos de sinais, velocidade, níveis de tensão, padrão de pinagem dos circuitos integrados
(“chips”) e dos conectores, etc. Alguns exemplos de barramentos são: PCI, ISA, AGP, RAMbus,
etc. Podemos classificar os barramentos em três tipos principais:
de dados — trafega os dados que são lidos e escritos de, e para, a memória e de, e para, os
dispositivos de E/S;
Os microprocessadores são circuitos integrados que abrigam em seu encapsulamento uma CPU
completa. Mais recentemente é possível encontrar a memória cache e outros circuitos dentro do
mesmo encapsulamento, como no caso dos processadores Intel Pentium.
End. Cont.
(hexa) (hexa)
Memória de
CPU
Barramento de Dados
Programa ULA Registrador Registrador
0000 86 de Status Temporário
0001 0A
0002 8B
0003 05 Complem.
Somador
0004 8B Deslocador Acumulador
0005 12
Buffer / Latch – A0:16
Barramento Interno
0006 B7
0007 20
0008 00
0009 H L
Barramento de Endereços
... ...
Memória de PC
Dados
2000
2001
Stack Pointer
... ...
End. Cont.
(hexa) (hexa) Decodificador RI
de Instrução
Escrita
Write
Leitura Unidade de Controle
Read Clock Reset INT
Fora da CPU, notamos que a memória está dividida em programa (instruções) e dados, muito
embora em um mesmo chip. Notamos também a presença de dois sinais de controle, um para
habilitar a leitura e outro para habilitar a escrita. Esses sinais são gerados pela unidade de
controle da CPU e fazem parte do barramento de controle.
O acesso aos dispositivos de E/S dá-se da mesma forma, utilizando sinais de controle apropriados.
É muito comum que o endereçamento desses dispositivos se dê através de uma faixa dedicada de
posições de memória. Um exemplo poderia ser a faixa de endereços de FF00 a FFFF, o que
permitiria endereçar 256 dispositivos. O circuito encarregado de interpretar essa faixa de
endereços e acionar cada dispositivo é chamado de decodificador de endereços.
3.1.Descrição da CPU
Ainda com referência à Figura 1, podemos observar diversos sinais que integram o barramento de
controle, além das entradas de alimentação e de cristal, que é um componente eletrônico
utilizado para gerar uma base de tempo de alta precisão. Essa base de tempo é sub-dividida
dentro da CPU, para gerar um sinal de relógio (clock) responsável por sincronizar todas as
atividades da CPU e do computador.
Além do sinal de relógio e dos sinais de leitura e escrito comentados anteriormente, há um sinal
de inicialização da CPU (reset), que faz com que a CPU retorne a um estado inicial definido e
conhecido, para que possa começar a executar os programas. Há também uma entrada de sinal de
interrupção que será detalhada posteriormente.
Dentro da CPU podemos ver a unidade de controle, a ULA, os diversos registradores e todas as
interconexões entre eles. Além dos registradores mostrados é comum haver outros registradores,
quer sejam específicos, quer sejam de propósito geral. A função dos registradores exibidos é a
seguinte:
Registrador de endereços (H, L) — Podem ser utilizados como registradores de uso geral, mas
normalmente funcionam como um par de registradores (16 bits) para armazenamento de um
endereço (posição) de memória.
Apontador de pilha (Stack Pointer) — Utilizado para indicar a base (ou topo) da área de
memória utilizada como pilha.
4. O Funcionamento do Microprocessador
4.1.O Programa
O programa que será executado pelo processador genérico nesse exemplo é o indicado na Figura
1. Nela, tanto as instruções, como os dados estão indicados em hexadecimal, por isso,
reproduzimos o programa na Figura 2, com as devidas explicações e uma representação em
linguagem de montagem (assembly), que será trabalhada posteriormente.
End. Cont.
(hexa) (hexa)
Memória de Significado Assembly
Programa
0000 86 Carrega o acumulador LOAD 0A
0001 0A Valor a ser carregado
0002 8B Soma o valor com o conteúdo do acumulador ADD 05
0003 05 Valor a ser somado
0004 8B Soma o valor com o conteúdo do acumulador ADD 12
0005 12 Valor a ser somado
0006 B7 Armazena o conteúdo do acumulador no endereço de memória STORE 2000
0007 20 Parte alta do endereço (8 bits mais significativos)
0008 00 Parte baixa do endereço (8 bits menos significativos)
0009
... ...
Memória de
Dados
2000 Posição onde o resultado será armazenado
2001
... ...
End. Cont.
(hexa) (hexa)
Figura 2 - Programa exemplo
Portanto, a tarefa executada por este programa é a de somar três números e armazenar o
resultado na posição de memória 2000.
4.2.Ciclo de Instrução
Para que cada instrução seja executada são seguidos determinados passos, conforme mostra a
Figura 4. Resumidamente, chamamos de ciclos de busca e execução. O ciclo de busca é
constituído dos três primeiros passos da Figura 4, nele o processador cuida da instrução: onde
está, qual é e como executá-la. O ciclo de instrução é constituído pelos passos seguintes, neles, o
processador cuida de descobrir quais são os operandos e obtê-los, executar a operação, descobrir
onde armazenar o resultado e fazê-lo.
Armazena-
Busca de Busca de
mento do
instrução operando
resultado
Múltiplos Múltiplos
operandos resultados
Execução da operação
Cálculo de endereço do resultado — Verifica onde o resultado da operação deve ser guardado.
4.3.Execução do Programa
Agora que foram vistos o programa exemplo e o ciclo de execução de cada instrução, vejamos o
programa exemplo sendo executado.
Quando inicializado o microprocessador genérico, o PC contém o endereço 0000. Isto significa que
este será o endereço da primeira instrução. O processador coloca o valor 0000 no barramento de
endereços e aciona o sinal de leitura da memória, conforme mostra a Figura 4.
End. Cont.
(hexa) (hexa)
Memória de
CPU
Barramento de Dados
Programa ULA Registrador Registrador
0000 86 de Status Temporário
0001 0A
0002 8B
0003 05 Complem.
Somador
0004 8B Deslocador Acumulador
0005 12
Buffer / Latch – A0:16
Barramento Interno
0006 B7
0007 20 0000 Reg. de endereços
0008 00
0009 H L
Barramento de Endereços
Escrita
Write
Leitura Unidade de Controle
Read Clock Reset INT
End. Cont.
(hexa) (hexa)
Memória de
CPU
Barramento de Dados
Programa ULA Registrador Registrador
0000 86 de Status Temporário
0001 0A
0002 8B
0003 05 Complem.
Somador
0004 8B Deslocador Acumulador
0005 12 Buffer / Latch – A0:16
Barramento Interno
0006 B7
0007 20
Reg. de endereços
0008 00
0009 H L
Barramento de Endereços
Escrita
Write
Leitura Unidade de Controle
Read Clock Reset INT
End. Cont.
(hexa) (hexa)
Memória de
CPU
Barramento de Dados
Programa ULA Registrador Registrador
0000 86 de Status Temporário
0001 0A
0002 8B
0003 05 Complem.
Somador
0004 8B Deslocador Acumulador
0005 12
Buffer / Latch – A0:16
Barramento Interno
0006 B7
0007 20 0001 Reg. de endereços
0008 00
0009 H L
Barramento de Endereços
Escrita
Write
Leitura Unidade de Controle
Read Clock Reset INT
End. Cont.
(hexa) (hexa)
Memória de
CPU
Barramento de Dados
Programa ULA Registrador Registrador
0000 86 de Status Temporário
0001 0A
0002 8B
0003 05 Complem.
Somador
0004 8B Deslocador Acumulador
0005 12 0A
Buffer / Latch – A0:16
Barramento Interno
0006 B7
0007 20
Reg. de endereços
0008 00
0009 H L
Barramento de Endereços
Escrita
Write
Leitura Unidade de Controle
Read Clock Reset INT
5. Referências Bibliográficas: