Aula 28 - Rodrigo Hausen

Propaganda
Organização de Computadores
Aula 28
Operação da Unidade de Controle
Rodrigo Hausen
17 de novembro de 2011
http://cuco.pro.br/ach2034
Rodrigo Hausen - OCD
1/44
Apresentação
1. Bases Teóricas
●
2. Organização de computadores
– ...
– 2.6. Conjunto de Instruções
– 2.7. Estrutura e Função da CPU
– 2.8. Operação da Unidade de Controle
– 2.9. Controle Microprogramado
●
●
Aula de hoje: Stallings (5a. Edição), Capítulo 14
Rodrigo Hausen - OCD
2/44
Microoperações
Execução de programa: sequência de ciclos de instrução
(fetch-decode-execute-store)
Cada ciclo tem diversos passos, as microoperações:
●
●
–
–
–
–
–
–
●
●
Busca instrução: MAR←PC, MBR←Mem[MAR], IR←MBR,
PC←PC+1
Decodificação instrução: depende do conteúdo do IR
Cálculo endereço(s) de operando(s): MAR←calcula endereço a
partir do IR, etc.
Busca operando(s): MBR←Mem[MAR], Reg←MBR, etc.
Executa instrução: depende da instrução
Cálculo endereço(s) de operando(s) destino, etc.
Cada passo é muito simples (por isso, o micro-)
Passos indivisíveis: operações atômicas da CPU
Rodrigo Hausen - OCD
3/44
Elementos da Execução de um Programa
Execução de Programa
Rodrigo Hausen - OCD
4/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Rodrigo Hausen - OCD
5/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Rodrigo Hausen - OCD
Ciclo de Instrução
6/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Rodrigo Hausen - OCD
Ciclo de Instrução
Ciclo de Instrução
7/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Rodrigo Hausen - OCD
Ciclo de Instrução
Ciclo de Instrução
8/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Busca
Rodrigo Hausen - OCD
Ciclo de Instrução
Proc.Indireção
Execução
Ciclo de Instrução
Proc. Interrup.
9/44
Elementos da Execução de um Programa
Execução de Programa
Ciclo de Instrução
Busca
μOP
μOP
Rodrigo Hausen - OCD
μOP
Ciclo de Instrução
Proc.Indireção
μOP
Execução
Ciclo de Instrução
Proc. Interrup.
μOP
10/44
Busca de Instrução: 4 registradores
Memory Address Register (MAR)
– Conectado ao barramento de endereço do sistema
– Especifica o endereço para a operação de leitura ou escrita
●
Memory Buffer Register (MBR)
– Conectado ao barramento de dados do sistema
– Armazena os dados recém-lidos ou a serem escritos
●
Program Counter (PC)
– Armazena o endereço da próxima instrução a ser lida
●
Instruction Register (IR)
– Armazena a última instrução lida
●
Rodrigo Hausen - OCD
11/44
Sequência de Busca
●
●
●
●
●
●
●
●
Endereço da próxima instrução está no PC
Endereço (MAR) é colocado no barramento do sistema
Unidade de Controle envia comando de leitura p/ mem.
Resultado (dado da memória) aparece no barr. de dados
Dado do barramento de dados é colocado no MBR
PC incrementado de 1 (pode ser feito em paralelo com
leitura de dado da memória)
Dado (instrução) copiado do MBR ao IR
MBR está livre para outras operações
Rodrigo Hausen - OCD
12/44
Sequência de Busca usando RTN
●
RTN = Register Transfer Notation = Notação de
Transferência de Registrador
t1: MAR ← PC
t2: MBR ← Memória[MAR],
PC ← PC +1
t3: IR ← MBR
●
tx = unidade de tempo/ciclo do clock
Rodrigo Hausen - OCD
13/44
Sequência de Busca usando RTN
●
RTN = Register Transfer Notation = Notação de
Transferência de Registrador
t1: MAR ← PC
t2: MBR ← Memória[MAR],
PC ← PC +1
t3: IR ← MBR
OU
t1: MAR ← PC
t2: MBR ← Memória[MAR]
t3: PC ← PC +1,
IR ← MBR
Rodrigo Hausen - OCD
14/44
Regras para Agrupamento de Microoperações
1) Sequência apropriada deve ser seguida
– MAR ← PC deve preceder MBR ← Memória[MAR]
2) Conflitos devem ser evitados
– Não pode escrever e ler o mesmo registrador ao mesmo
tempo
ex. MBR ← Memória[MAR] e IR ← MBR não podem
estar no mesmo ciclo
Observe também: PC ← PC+1 envolve adição. Pode usar
a ULA, ou pode ser feita por um circuito independente.
Algumas operações da ULA podem necessitar de
microoperações adicionais (p. ex. multiplicação de
números em ponto flutuante)
●
–
–
Rodrigo Hausen - OCD
15/44
Subciclo de Proc. End. Indireto
n-1
IR
opcode
x
y y-1
end. indireto
operando 1
end. indireto
operando 2
z
k
0
end. indireto
operando N
t1: MAR ← IRx … IRy (campo de endereço do IR)
t2: MBR ← Memória[MAR]
t3: IRx … IRy ← MBRendereço (parte do MBR contendo end.)
●
MBR conterá um endereço
●
IR está agora no mesmo estado caso estivéssemos usando
endereçamento direto
●
Consequência: geralmente, campos de endereço do IR
precisam ter tamanho suficiente para endereçar
diretamente toda a memória principal.
Rodrigo Hausen - OCD
16/44
Subciclo de Proc. Interrupção
Executado após o subciclo execute/store.
●
Primeiramente, verifica se ocorreu interrupção. Se
ocorreu, executa as seguintes microoperações:
t1: MBR ← PC
t2: MAR ← End. de Salvamento, PC ← End. do handler
t3: Memória[MAR] ← MBR
●
End. de salvamento geralmente é topo da pilha (em SP).
Neste caso, necessita de mais uma microop SP ← SP − 1
●
Isto é o mínimo indispensável:
– podem ser necessárias microoperações adicionais para
obter o endereço do handler
– N.B. salvar o resto do contexto é atribuição do handler de
interrupção, não das microoperações.
●
Rodrigo Hausen - OCD
17/44
Subciclo de Execução: Exemplo 1
●
As microoperações no subciclo de execução variam muito de
instrução para instrução.
Rodrigo Hausen - OCD
18/44
Subciclo de Execução: Exemplo 1
●
●
As microoperações no subciclo de execução variam muito de
instrução para instrução.
Para a instrução ADD R1, X – adiciona conteúdo da po-sição
de memória X ao registrador R1, resultado em R1.
t1: MAR ← IRendereço (campo de endereço do IR)
t2: MBR ← Memória[MAR]
t3: R1 ← R1 + MBR (por meio da ULA)
Rodrigo Hausen - OCD
19/44
Subciclo de Execução: Exemplo 1
●
●
●
As microoperações no subciclo de execução variam muito de
instrução para instrução.
Para a instrução ADD R1, X – adiciona conteúdo da po-sição
de memória X ao registrador R1, resultado em R1.
t1: MAR ← IRx … IRy (campo de endereço do IR)
t2: MBR ← Memória[MAR]
t3: R1 ← R1 + MBR (por meio da ULA)
Note que, neste caso, não pode haver sobreposição das
microoperações
Rodrigo Hausen - OCD
20/44
Subciclo de Execução: Exemplo 1
●
●
●
●
As microoperações no subciclo de execução variam muito de
instrução para instrução.
Para a instrução ADD R1, X – adiciona conteúdo da po-sição
de memória X ao registrador R1, resultado em R1.
t1: MAR ← IRx … IRy (campo de endereço do IR)
t2: MBR ← Memória[MAR]
t3: R1 ← R1 + MBR (por meio da ULA)
Note que, neste caso, não pode haver sobreposição das
microoperações
Observe que a operação de soma depende da organização
interna da ULA. P. ex. em uma ULA que possui um
registrador de saída RULAout:
t3: RULAout ← R1 + MBR
t4: R1 ← RULAout
Rodrigo Hausen - OCD
21/44
Subciclo de Execução: Exemplo 2
●
ISZ X – Increment and Skip if Zero (incremente o
conteúdo da posição de memória X e pule próxima
instrução se result. da última operação foi zero)
t1: MAR ← IRendereço
t2: MBR ← Memória[MAR]
t3: MBR ← MBR+1
t4: Memória[MAR] ← MBR,
IF (MBR == 0) then PC ← PC + 1
●
●
Ação condicional: a UC verifica e, caso a condição seja
verdadeira, executa a ação (incrementar o PC) em uma
única microooperação
Como MBR só está sendo lido no if e na cópia do seu
valor para a memória, pode haver sobreposição.
Rodrigo Hausen - OCD
22/44
UC: Requisitos funcionais
●
●
Após decompor o ciclo de instrução em operações
elementares, precisamos definir o que a Unidade de
Controle deve fazer para que elas sejam seguidas.
Três passos para caracterizar a UC:
1) Definir os elementos básicos do processador
2) Descrever as microoperações que o processador executa
3) Determinar as funções que a UC deve realizar para que
as microoperações sejam seguidas
Rodrigo Hausen - OCD
23/44
Passo 1:
Elementos Básicos do Processador
●
Minimamente:
●
ULA
●
Registradores
●
Caminhos de dados internos
●
Caminhos de dados externos
●
Unidade de Controle
Rodrigo Hausen - OCD
24/44
Passo 2:
Tipos de Microoperações
●
Pelos exemplos vistos anteriormente, é suficiente
categorizar as microoperações em:
1)Transferência de dado entre registradores
2)Transferência de dado de registrador para o exterior
(p. ex. barramento do sistema)
3)Transferência de dado do exterior para registrador
4)Execução de operação lógica ou aritmética, usando
registradores como fonte e destino.
Rodrigo Hausen - OCD
25/44
Passo 3:
Funções da Unidade de Controle
●
●
●
●
Duas tarefas básicas.
Sequenciamento:
– Faz com que a CPU siga as microoperações passo a passo
Execução
– Executa, efetivamente, cada microoperação
Regidas e executadas por meio de sinais de controle.
Rodrigo Hausen - OCD
26/44
Sinais de Controle
Clock
– Uma microoperação (ou conjunto de microoperações
simultâneas) por ciclo de clock.
●
do Registrador de Instrução
– Opcode da instrução atual
– Determina quais microinstruções executar e sua ordem
●
Flags
– Estado da CPU
– Resultados de operações anteriores
●
do Barramento de Controle
– Interrupções
– Reconhecimento de sinais de controle originários da CPU
(acknowledgments)
●
Rodrigo Hausen - OCD
27/44
Sinais de controle
para componentes
internos à CPU
Unidade de
Controle
Sinais de controle do
barramento do sistema
Barramento de Controle
Modelo de uma UC
Sinais de controle para
barramento do sistema
Rodrigo Hausen - OCD
28/44
Sinais de Controle – Saída
●
●
Dentro da CPU
– Causam movimento de dados
– Activam funções específicas
Através do barramento de controle do sistema
– Para a memória principal
– Para módulos de entrada/saída
Rodrigo Hausen - OCD
29/44
Controle de Leitura/Escrita
●
●
As operações de leitura/escrita em registradores podem
ser pensadas como operações de “abertura” e
“fechamento” de portas (gates).
Um registrador tem 2 gates, um de saída (leitura) e um
de entrada (escrita).
Rwrite
Rread
R
●
A operação (leitura/escrita) pode ser controlada por meio
de sinais nos gates.
Rodrigo Hausen - OCD
30/44
Controle de Leitura/Escrita
●
●
As operações de leitura/escrita em registradores podem
ser pensadas como operações de “abertura” e
“fechamento” de portas (gates).
Um registrador tem 2 gates, um de saída (leitura) e um
de entrada (escrita).
1 = Rwrite
Rread = 0
R
escrita no registrador
●
A operação (leitura/escrita) pode ser controlada por meio
de sinais nos gates.
Rodrigo Hausen - OCD
31/44
Controle de Leitura/Escrita
●
●
As operações de leitura/escrita em registradores podem
ser pensadas como operações de “abertura” e
“fechamento” de portas (gates).
Um registrador tem 2 gates, um de saída (leitura) e um
de entrada (escrita).
0 = Rwrite
Rread = 1
R
leitura do registrador
●
A operação (leitura/escrita) pode ser controlada por meio
de sinais nos gates.
Rodrigo Hausen - OCD
32/44
Controle de Leitura/Escrita
●
●
As operações de leitura/escrita em registradores podem
ser pensadas como operações de “abertura” e
“fechamento” de portas (gates).
Um registrador tem 2 gates, um de saída (leitura) e um
de entrada (escrita).
0 = Rwrite
Rread = 0
R
registrador desabilitado
●
A operação (leitura/escrita) pode ser controlada por meio
de sinais nos gates.
Rodrigo Hausen - OCD
33/44
Organização Interna da CPU
●
●
●
●
Geralmente, um único barramento interno
Os gates controlam o movimento de dados de/para o
barramento interno
Sinais de controle controlam a transferência de dados
de/para o barramento do sistema
Registradores temporários para o funcionamento
adequado da ULA: RULAin e RULAout
(obs.: na figura 14.6 são os registradores Y e Z)
Rodrigo Hausen - OCD
34/44
CPU com
Barramento
Interno
Único
Rin
ULA
Rout
Rodrigo Hausen - OCD
35/44
Sequência de Sinais
de Controle: Exemplo
Busca de instrução:
●
t1: MAR ← PC
– UC abre gate de leitura do PC e
gate de escrita do MAR
Rin
ULA
Rout
Rodrigo Hausen - OCD
36/44
Sequência de Sinais
de Controle: Exemplo
Memory
READ
Busca de instrução:
t1: MAR ← PC
– UC abre gate de leitura do PC e
gate de escrita do MAR
●
t2: MBR ← Memória[MAR]
– UC abre gate de leitura do MAR,
gate de escrita do MBR p/ barr.
do sistema e manda comando
de leitura para memória
●
Rin
ULA
Rout
Rodrigo Hausen - OCD
37/44
Sequência de Sinais
de Controle: Exemplo
Busca de instrução:
t1: MAR ← PC
– UC abre gate de leitura do PC e
gate de escrita do MAR
●
t2: MBR ← Memória[MAR]
– UC abre gate de leitura do MAR,
gate de escrita do MBR p/ barr.
do sistema e manda comando
de leitura para memória
●
t3: IR ← MBR
– UC abre gate de leitura do MBR p/
barr. interno e gate de escrita do IR
●
Rodrigo Hausen - OCD
Rin
ULA
Rout
38/44
UC calcula Funções Lógicas!
Cada sinal de controle é função lógica dos bits do IR, das
flags, e do tempo de execução atual (um número binário
que depende do clock)
Sinais de controle
para componentes
internos à CPU
Unidade de
Controle
contador
Rodrigo Hausen - OCD
Sinais de controle do
barramento do sistema
Sinais de controle para
barramento do sistema
Barramento de Controle
●
39/44
Controle Hardwired
●
●
●
●
Como cada sinal de controle é função lógica variáveis
booleanas, podemos criar circuitos digitais
combinacionais que calculem essas funções lógicas.
Essa abordagem usando apenas circuitos digitais, não
reprogramáveis, é chamada “hardwired”
Entradas: bits do barramento de controle, flags,
registrador de instrução, bits do gerador de temporização
(um contador binário que tem como entrada o clock)
Saídas: sinais binários de controle para os gates dos
registradores, para a ULA, e para as linhas de controle do
barramento do sistema.
Rodrigo Hausen - OCD
40/44
Controle Hardwired: Entradas
●
●
●
Flags e bits do barramento de controle
– Cada bit tem um significado
Registrador de Instrução (IR)
– Opcode causa sinais de controle diferentes para cada
instrução
– Lógica diferente para cada opcode
– Geralmente, a lógica é facilitada colocando-se um
decodificador entre o IR e a UC
– decodificador: n bits de entrada e 2n bits de saída
Clock
– Coloca-se um contador entre o clock e a UC (chamado
gerador de temporização)
Rodrigo Hausen - OCD
41/44
UC com Entradas Decodificadas
Flags and
control bus
signals
Rodrigo Hausen - OCD
42/44
Controle Hardwired: Problemas
Lógica complexa de sequenciamento e de implementação
das microoperações
Difícil de projetar e de testar
Projeto inflexível
●
●
●
–
Dificuldade de implementar novas instruções
●
–
●
E se houver um erro de projeto? Só pode ser corrigido
alterando-se o circuito! Como geralmente hoje os circuitos
são integrados (sem possibilidade de alterá-los), o único
jeito de corrigir um erro seria trocar o processador
Seria necessário trocar o processador.
E se pudéssemos programar as microoperações?
– Yes, we can! Isso se chama controle microprogramado.
Rodrigo Hausen - OCD
43/44
Para Casa
●
●
●
●
Ler o capítulo 14 (a subseção sobre o Intel 8085 é para
ser lida como cultura geral, para fixar os conceitos)
Exercícios: fazer do 14.1 ao 14.5 (todos os exercícios do
capítulo na 5a. edição)
Fazer leitura de familiarização do cap. 15 (próxima aula)
LEMBREM DE PREPARAR A FOLHA DE CONSULTA
PARA A P2! Vejam as condições nos slides da aula 27.
Rodrigo Hausen - OCD
44/44
Download