Arquitetura de Microprocessadores - Parte 3

Page 1

Técnico de Gestão e Programação de Sistemas Informáticos


2

Arquitetura de Microprocessadores

Conteúdos  

Execução de um programa residente em memória; Arquitetura de um microprocessador: – Arquitetura Básica; – Acesso à memória; – Operações com a ALU; – Interrupções.


3

 Na

Execução de um programa

arquitetura von Neumann, para minimizar os recursos envolvidos, as instruções e dados partilham a mesma memória e canais de comunicação (barramento);  Para o CPU identificar as posições de memória que contêm as instruções ou dados é necessário que estejam distribuídas de forma consecutiva;  Assim o CPU “sabe” que pela leitura da primeira posição de memória o que virá a seguir.


4

Execução de um programa

 Se

por exemplo a primeira posição contiver o código da instrução: somar dois valores;  A posição seguinte irá conter os operandos referidos na instrução anterior;  Terminada a execução das instruções o CPU “sabe” automaticamente que na próxima posição de memória se encontra a próxima instrução a executar.

Instrução Operando Instrução

Operando Instrução


5

Execução de um programa

 O facto de na

arquitetura von Neumann os dados e instruções serem encaminhados em série reduz a sua velocidade.

 Uma outra arquitetura

chamada Harvard preconiza a utilização de barramentos de dados e endereços distintos;  Bem como memória de programa e dados independentes.


6

Execução de um programa

Para se tornar a base dos atuais microprocessadores, a arquitetura von Neumann teve de sofrer alguns aperfeiçoamentos;  Tendo aproveitado algumas características da arquitetura Harvard; 

 Por exemplo a divisão

de parte da memória para os programas e outra parte da memória para dados.


7

Execução de um programa

A

execução de um programa determinado conjunto de etapas:

segue

um

– Busca na unidade de memória pela próxima instrução a ser executada; – Descodificação da instrução a executar (Identificação dos operandos e qual o tipo de operação a realizar); – Obtenção dos operandos e carregamento destes nos registos internos do CPU; – Execução da tarefa; – Armazenamento do resultado em memória ou em registos internos do CPU.  Repetir o processo

para a próxima instrução.


8

Execução de um programa

 Nem

todos os programas necessitam de percorrer todas as etapas, assim sendo, a execução pode resumir-se nos passos do ciclo: fetch – decode – execute FETCH (procurar)

EXECUTE (executar)

DECODE (descodificar)


Arquitetura Básica

9

O

microprocessador assenta basicamente nos seguintes blocos: Barramentos de dados

Acumulador

IR

SP

PC

R0

Rn ALU

Unidade de descodificação -----------------------------

UC

Barramento de controlo

Barramento de endereços

Registo temporário

F L A G S


10

Arquitetura Básica

 UC: Unidade de controlo

– Controlador de toda a máquina inclusivamente a própria ALU; – Trata do endereçamento da memória, envio dos dados para a ALU, coordenando todas as operações que esta deve realizar.  ALU ou ULA: Unidade Lógica e Aritmética

– Unidade responsável pela realização de operações aritméticas como somas, subtrações, etc.; – É ainda responsável pela realização de operações lógicas com OR (ou) AND (e) XOR (ou exclusivo).


11

Arquitetura Básica

 Unidade de descodificação

– Tem com função indicar qual o tipo de instrução (ler, adicionar, etc.) à Unidade de Controlo em linguagem que esta entenda (descodificada);  PC: Program Counter (registo de programa)

– Guarda o endereço da próxima instrução a ser lida da memória (basicamente é um apontador de posições de memória);  IR: Instruction Register (Registo de instrução)

– Contém uma cópia da instrução a ser executada no momento.


12

Arquitetura Básica

 SP: Stack Pointer (Apontador de pilha)

– Tem como função guardar a informação de retorno à rotina a ser executada antes de uma interrupção ter lugar;  R0…Rn: Register (Unidade de registos)

– Memórias internas onde são armazenados temporariamente dados e resultados com que o CPU trabalha;  Acumulador

– Registo associado à ALU que serve de buffer enquanto a outra entrada da ALU ainda não tem o valor carregado, em alguns processadores guarda o resultado de cada operação.


13

Arquitetura Básica

 Flags (Registos de estado)

– Responsáveis por guardar o estado resultante de cada operação realizada pela ALU (EX: se houver overflow); – Uma ALU que opere a 8 bit só lida com 0-255 se somar por exemplo 200+200 gera um overflow.  Registo Temporário

– Necessário para armazenar o resultado de uma operação realizada pela ALU enquanto o barramento de dados se encontra ocupado; – Existem arquiteturas de microprocessadores que utilizam este registo na outra entrada da ALU prescindindo dele na saída.


Acesso à Memória

14

Barramento de dados

CPU ALU

descodificação

Bus interno PC

IR

Endereços

Conteúdo

K

Mover L para Ra

L

23

M

Outra instrução

Ra

K

Registos Barramento de controlo

RAM

Unidade de controlo e

Barramento de endereços

No exemplo a seguir apresentado iremos ler um conteúdo de memória (um operando) para um registo interno do CPU:


15

Acesso à Memória

O Program Counter contém o endereço K da memória onde se encontra a próxima instrução: “Mover o valor do endereço L da memória para o registo Ra”;

Considerando que a posição de memória com o endereço L tem como conteúdo o valor 23;  Na imagem anterior podemos verificar que o único registo interno a verde é o PC, isso significa que se encontra preenchido com um endereço (endereço K);  Podemos ainda verificar que no endereço seguinte (L) se encontra o valor 23, que se pretende que no final da execução seja copiado para o registo interno Ra. 


16

 Numa

Acesso à Memória

segunda fase a Unidade de Controlo (UC) executa duas operações: – Coloca no barramento de endereços o conteúdo do Program Counter (K); – E através do barramento de controlo envia um comando de leitura do conteúdo da posição (endereço) K da memória.


Acesso à Memória

17

Barramento de dados

Unidade de controlo e

ALU

descodificação

Bus interno PC

IR

Ra

K

Conteúdo

K

Mover L para Ra

L

23

M

Outra instrução

Ler memória

K

Registos Barramento de controlo

RAM

Barramento de endereços

CPU

Endereços


18

Acesso à Memória

 Por

sua vez a memória responde com o conteúdo dessa posição (neste caso uma instrução): – Colocando-o no barramento de dados que o levará para o processador.

 Esta instrução é copiada para o Instruction Register:

– Que passa a conter a instrução a ser executada no momento. O

Program Counter é também incrementada de um valor: – Que passa a apontar para o endereço L (próxima posição de memória) que contém o operando a retirar da memória.


Acesso à Memória

19

Barramento de dados

CPU ALU

descodificação

Bus interno PC

LK

IR

L

Endereços

Conteúdo

K

Mover L para Ra

L

23

M

Outra instrução

Ra

Mover L para Ra

Registos Barramento de controlo

RAM

Unidade de controlo e

Barramento de endereços

A fase identificada como Fetch (procura) fica concluída.


20

Acesso à Memória

 Segue-se a fase Decode (descodificação); A

unidade de descodificação recebe a instrução presente no Instruction Register, descodifica-a e entrega-a à Unidade de Controlo numa linguagem que esta compreenda.


Acesso à Memória

21

Barramento de dados

CPU ALU

Bus interno PC

L

IR

Endereços

Conteúdo

K

Mover L para Ra

L

23

M

Outra instrução

Ra

Mover L para Ra

Registos Barramento de controlo

RAM

UC e descodificação

Barramento de endereços

Fase Decode (descodificação)


22

Acesso à Memória

Finalmente a Unidade de Controlo verifica qual a operação que é necessário realizar e passa à fase de execução (execute);  Verifica que é necessário mover o conteúdo da posição L da memória para o registo Ra;  Assim volta a usar o barramento de controlo para indicar que vai ler da memória;  Esta responderá com o valor presente na posição da memória com o endereço L, colocando-o no barramento de dados que o levará até ao registo Ra;  O Program Counter é novamente incrementado para apontar para a próxima instrução (M). 


Acesso à Memória

23

Barramento de dados

Unidade de controlo e

ALU

descodificação

L

IR

Ra

Conteúdo

K

Mover L para Ra

L

23

M

Outra instrução

Bus interno PC

Endereços

Ler memória

Mover L para Ra

Registos Barramento de controlo

RAM

Barramento de endereços

CPU

23


24

 Aproveitando

Operações com a ALU

o exercício anterior veremos as operações realizadas pela ALU;  Aproveitando o valor do registo Ra (23) e iremos mover outro valor para o registo Rb (7);  Suponhamos que a próxima instrução era uma soma: Ra=Ra+Rb;  Assim no final Ra deverá conter o resultado da soma calculada pela ALU;  Assumimos que o registo IR já contem a instrução a executar e os registos Ra e Rb já estão carregados com os valores 23 e 7. 


Operações com a ALU

25

Barramentos de dados

IR Ra=Ra+Rb

Ra 23

Rb 7

 

Acumulador

Rn

ALU

Registo temporário

F L A G S


26

O

Operações com a ALU

primeiro passo será colocar o valor do registo Ra no acumulador à entrada da ALU;   Este registo é necessário para realizar a função de buffer, isto é para aguentar o valor 23 até que o valor do registo Rb seja colocado na outra entrada da ALU.


Operações com a ALU

27

Barramentos de dados

23 IR Ra=Ra+Rb

Ra 23

Rb 7

Rn

Acumulador Acumulador 23

ALU

Registo temporário

F L A G S


28

 Assim

Operações com a ALU

que as duas entradas da ALU tenham os operandos carregados, esta efetua a soma;  De seguida coloca-os num registo temporário;   O resultado desta operação origina um tipo de variável de estado (FLAGS) que será diferente consoante o tipo de valor que for devolvido pela ALU.


Operações com a ALU

29

Barramentos de dados 7 IR Ra=Ra+Rb

Ra 23

Rb 7

Rn

Acumulador 23

ALU

Registo temporário

 F L A G S


Operações com a ALU

30

Barramentos de dados

IR Ra=Ra+Rb

Ra 23

Rb 7

Rn

Acumulador 23

7

23 ALU

23+7

Registo 30 temporário

F L A G S


31

O

Operações com a ALU

registo temporário é necessário para servir de buffer;  Acontece que o barramento de dados ainda está ocupado com o valor de Rb e se não houvesse este buffer o resultado da operação seria novamente introduzido na ALU alterando o resultado final;  Assim, quando o barramento ficar livre o resultado é finalmente escrito no registo Ra. 


Operações com a ALU

32

Barramentos de dados

IR Ra=Ra+Rb

Ra 30 23

Rb 7

Rn

Acumulador 23

ALU

Registo 30 temporário

30

F L A G S


33

 Por

Interrupções

vezes o CPU interrompe o seu trabalho para atender outros pedidos;  Para esse efeito o CPU possui linhas de interrupção próprias que disponibiliza para atender interrupções provenientes de dispositivos exteriores (uma tecla do teclado);  Para atender a interrupção, tem de saber onde interrompeu o trabalho anterior, para o poder retomar mais tarde;  Isso só é possível se o CPU armazenar temporariamente a informação em memória.


34

Interrupções

 É aqui que entra o registo Stack Pointer (SP);

 Será

esse registo o responsável por guardar a informação relativa às interrupções numa zona especial da memória denominada por Stack – pilha;  A sua função passa por guardar a informação de retorno à rotina que estava a ser executada antes da interrupção, ou seja o valor do Program Counter ou por vezes o valor dos registos internos;  Desta forma o Program Counter fica livre para poder ser carregado com o endereço da rotina que gerou a interrupção.


Interrupções

35

 Resumindo

os passos que ocorrem durante uma interrupção: a) O conteúdo do registo Program Counter (endereço de memória) é guardado na Stack;  b) Guardam-se os valores dos registos internos a ser utilizado aquando da interrupção, igualmente na Stack.  O apontador Stack Pointer é incrementado para a próxima posição da pilha, isto é, para a posição imediatamente acima. 


Interrupções

36

Interrupção Interrupção

PC

A

10100110

D

11110110

C

10111110

D

10110100

E

10110000

Livre Livre Programa principal RAM

Conteúdo

01110110

N

10010110

O

11110110

SP

Livre

SP

PC+Registos Livre

.…

M

Livre

Outro principal

Stack

Endereços


37

Interrupções

c) Atender a interrupção passando o Program Counter a apontar para a zona da memória onde está o programa a executar durante a interrupção;  d) Termina a execução da interrupção , são recuperados da Stack os valores que os registos internos tinham antes da interrupção, o valor do Program Counter e o apontador Stack Pointer é decrementado;  e) Finalmente retoma a execução do programa interrompido. 


Interrupções

38

PC

A

10100110

D

11110110

C

10111110

D

10110100

E

10110000

PC

Livre Livre Programa principal

Livre

01110110

N

10010110

O

11110110

SP

PC+Registos Livre

.…

M

Livre

RAM

Conteúdo

Outro principal

Stack

Endereços


39

 No

Interrupções

entanto, pode ocorrer outra interrupção quando já está a ser atendida uma interrupção;  Esta situação não tem limites e pode ocorrer tantas vezes quantas as necessárias;  A ordem pela qual a informação das interrupções é armazenada na stack e posteriormente extraída segue normalmente uma lógica LIFO (Last In First Out) a última interrupção será a primeira a ser atendida.


40

 Resumindo

Interrupções o CPU necessita de armazenar em

memória: – Instruções; – Dados; – Informação que permite retomar a execução de um programa previamente interrompido.


41

Bibliografia

SÉRGIO, Ricardo, Arquitetura de Computadores, 1ª Edição, Areal Editores, 2011.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.