• Uma CPU de um microprocessador pode interpretar o
conteúdo de uma palavra de memória como sendo o código
de instrução. Mas pergunta-se:
• Qual o número máximo ou mínimo de eventos lógicos que
constituem uma instrução?
• O que ocorre dentro de uma CPU durante a execução de
uma instrução?
• Qual o suporte lógico necessário à CPU?
• Vamos examinar como a Unidade de Controle decodifica
Unidade de Controle
Prof. Eduardo Appel
os códigos de instrução:
[email protected]
• A execução de uma instrução de qualquer
microprocessador pode ser dividida em duas partes: a
busca da instrução e a execução da instrução.
Arquitetura e Organização de
Computadores
• A operação de busca de instrução é também conhecida por
(instruction fetch).
• Funcionamento da busca de instrução: a lógica da CPU
envia o conteúdo do registro contador de programa + sinais
apropriados. O resultado é que a lógica externa retorna o
conteúdo de memória endereçado pelo PC.
• Sob o ponto de vista de lógica externa, esta operação é
uma simples leitura de memória.
• Ao ser recebido pela CPU, o conteúdo é armazenado no
registro de instrução e logo é interpretado como um código
de instrução. Ou seja, o conteúdo do registro de Instrução é
decodificado pela Unidade de Controle.
• Enquanto a lógica externa está respondendo à busca de
instrução, a CPU usa sua lógica interna para fazer
PC=PC+1.
Arquitetura e Organização de
Computadores
3
• Registro Buffer: armazena os dados transitórios na CPU.
Por exemplo: quando 2 bytes de dados são somados, a
palavra de dados lida da memória para ser somada ao
acumulador será armazenada temporariamente no registro
buffer.
Arquitetura e Organização de
Computadores
4
• No exemplo anterior do programa de adição binária,
vamos analisar a instrução 2. Buscar o conteúdo da palavra
de dados (um byte endereçado pelo contador de dados e
armazená-lo no acumulador)
Sinais e temporização da busca de instrução
• O primeiro passo ao se executar qualquer instrução é a
busca da instrução (na verdade uma leitura em memória).
É enviado o endereço de memória e é recebido uma
palavra de dado como resposta.
• Associado ao endereço deve ser enviado um sinal de
controle READ, indicando que os dados devem entrar na
CPU.
Arquitetura e Organização de
Computadores
2
5
Arquitetura e Organização de
Computadores
6
1
Diferenças entre ciclos de busca de instruções
e busca de dados
1. Mover o conteúdo do acumulador para
a barra de dados
• Busca de instrução: o endereço colocado nas linhas de
endereços é o conteúdo do registro PC, durante a busca de
dados, é o do contador de dados.
• Durante o ciclo de busca de instrução, o dado de entrada
(lido) é armazenado no registro de instrução. Durante o
ciclo de busca de dados ele é armazenado no acumulador.
• Analisaremos como procederíamos para realizar o
complementar do conteúdo do acumulador.
• Complementar o conteúdo do acumulador , requer cinco
passos:
Arquitetura e Organização de
Computadores
7
2. Mover o conteúdo da barra de dados
para o complementador
Arquitetura e Organização de
Computadores
8
3. Ativar a lógica do complementador
9
4. Mover o conteúdo do complementador
para a barra de dados
Arquitetura e Organização de
Computadores
Arquitetura e Organização de
Computadores
Arquitetura e Organização de
Computadores
10
5. Mover o conteúdo da barra de dados
para o acumulador
11
Arquitetura e Organização de
Computadores
12
2
• Microinstrução: Cada um destes cinco passos são
conhecidos como uma microinstrução.
• Cada microinstrução é habilitada por um sinal vindo da
Unidade de Controle.
• A Unidade de Controle pode seqüencializar qualquer
número de microinstruções para criar uma macroinstrução.
• Macroinstrução: resposta aceita pela CPU a um código de
instrução em linguagem Assembly.
• Assembly: linguagem de máquina, constituída de códigos
binários individualizados e associados a uma instrução.
• No exemplo do complementar o conteúdo do acumulador,
a Unidade de Controle precisa de cinco códigos binários,
cada um disparando o sinal de controle apropriado (sinais).
Arquitetura e Organização de
Computadores
• Microprograma: é a seqüência de códigos binários dentro
de uma Unidade de Controle.
• Microprogramação: é a geração da seqüência de códigos
binários armazenados dentro da Unidade de Controle.
• O programa em assembly é conhecido como sendo um
macroprograma.
• Cada código de instrução de um macroprograma inicia a
execução de um microprograma interno na forma que está
armazenado na Unidade de Controle.
13
Arquitetura e Organização de
Computadores
14
Sinais de uma Unidade de Controle
• Complexidade de Macroinstruções: a complexidade das
operações associadas a qualquer macroinstrução é uma
função direta do tamanho do microprograma cuja execução
é disparada pela macroinstrução.
• A Unidade de Controle de um microprocessador nada mais
é do que um microprograma. Se o usuário for capaz de
criar ou modificar o microprograma dentro da Unidade de
Controle, então o microprocessador será
microprogramável.
• Os microprocessadores que permitem acesso à CPU mas
não à Unidade de Controle, pode-se seqüencializar a lógica
da CPU utilizando-se macroinstruções , chamadas
coletivamente conjunto de instruções da linguagem
assembly.
Arquitetura e Organização de
Computadores
15
Arquitetura e Organização de
Computadores
16
Seleção do fluxo de dados quando C0=1 ou C1=1
Sinal
C0 C1
C2 C3
C4 C5
C6 C7 C8
Write/ Read
φ
C, P, S, Z
Função
C0=0 C1=0 Nenhum dado é transferido de (ou para) a barra de
dados nem para o registro de endereços.
C0=1 C1=0 Dados movidos para a barra de dados ou registro de
endereços.
C0=0 C1=1 Dados movidos da barra de dados em registro de
endereços
C0=1 C1=1 Microinstrução será abortada na UC
Quando C0=1 C1=0 ou C0=0 C1=1 estes quatro sinais são
decodificados para selecionar o fluxo específico de dados.
Estes três sinais são decodificados para selecionar as operações da
ULA
Conexões diretas dos pinos de saída para dois bits da UC
Sinal de clock recebido pela Unidade de Controle
Quatro bits de estado (flags) conectados a quatro bits de dados da
UC
Arquitetura e Organização de
Computadores
17
C5
C4
C3
C2
Função
0
1
0
0
0
0
0
0
0
1
0
0
1
1
0
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
0
0
0
0
1
1
0
0
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
Acumulador ⇔ barra de dados
Byte alto do contador de dados ⇔ barra de dados
selecionada
Byte baixo do contador de dados ⇔ barra de dados
selecionada
Byte alto do contador programa ⇔ barra de dados
selecionada
Byte baixo do contador programa ⇔ barra de dados
selecionada
Registro de instrução ⇔ barra de dados selecionada
Registro de estado ⇔ barra de dados selecionada
Deslocador ⇔ barra de dados selecionada
Complementador ⇔ barra de dados selecionada
Armazenadores da ULA ⇔ barra de dados selecionada
Buffer da ULA ⇔ barra de dados selecionada
Registro de dados ⇔ barra de dados selecionada
Contador de dados ⇔ registro de endereços selecionado
Contador de programa ⇔ registro de endereços
selecionado
Registro de dados ⇔ registrador buffer
Não utilizado
Arquitetura e Organização de
Computadores
18
3
Sinais de seleção da ULA
• Os sinais descritos nas tabelas não permitem que a (UC)
realize todas as operações necessárias ao suporte de
instruções em linguagem Assembly.
• Nada foi dito como os sinais de controle READ / WRITE
são gerados, ou como os flags de estado são manuseados.
• Em relação aos sinais C 0 e C 1 , , se ambos forem iguais a
1; esta condição torna-se impossível de ser implementada,
pois especifica a transferência de dados para as barras e
das barras (nos dois sentidos) simultâneamente.
C8
C7
C6 Função
0
0
0
Seleciona lógica do Deslocador
1
0
0
Seleciona lógica do Complementador
0
1
0
Seleciona lógica do Somador *
1
1
0
Seleciona lógica de AND (E) *
0
0
1
Seleciona lógica de OR (OU)*
1
0
1
Selciona lógica de XOR (OU-EXCLUSIVO)*
0
1
1
Incrementa armazenadores da ULA
1
1
1
Nenhuma operação da ULA
* A operação é realizada com o conteúdo dos armazenadores (LATCHES) da ULA
e o Registrador Buffer. O resultado aparece nos armazenadores da ULA (ou
LATCHES DA ULA)
Arquitetura e Organização de
Computadores
19
• Se C 0 e C 1 forem ambos 1, os sinais restantes
de C 2 a C 8 serão interpretados como especificando as
seguintes classes de operações internas especiais à (UC).
Arquitetura e Organização de
Computadores
C8
C7 C6
C5
C4
C3
0
C2
C1
1
Arquitetura e Organização de
Computadores
1
Pula
próxima microinstrução se estado = 1
1 = Especifica condições de estado do buffer de dados da UC
0 = Especifica configuração do estado da ULA
Z
S
P
1 = Selecionado o estado, e deve ser testado para configuraçào de 1
0 = Não testa este estado
C
21
3. Se C 2 e C 3 são 0 e 1; então a lógica da condição 2 descrita será
repetida. Entretanto os flags de estado correspondente serão testados
para o valor 0 como condição para pular a próxima microinstrução.
4. Se C 2 , C 3 e C 4 forem 1, 0 e 0 respectivamente, então C 5 , C 6 , C 7
e C 8 especificarão o estado de quatro sinais de controle que a unidade
de controle deve colocar nos pinos de saída do chip. Assuma que C 8
especifica a condição do READ e C 7 a condição do WRITE. Esta
condição pode ser ilustrada da seguinte maneira:
C0
1
1. Se C 2 a C 8 estão todos em 0, então os flags de estado Z, S, P
e C na ULA terão suas condições gravadas no buffer de dados
da (UC).
2. Se C 2 e C 3 estão em 1, então C 5 , C 6 , C 7 e C 8 serão
interpretados como correspondendo aos estados de Z, S, P e C
respectivamente. Se C 4 for 0, são referenciadas as condições
de estado na ULA; se C 4 for 1, são referenciadas as condições
de estado armazenadas no buffer de dados da UC. C 5 , C 6 , C7
e C 8 serão testados para valor 1. Se for encontrado um 1,
então o estado correspondente será testado. Se o estado
correspondente tiver também o valor 1, então a próxima
microinstrução não será executada. Esta utilização pode ser
ilustrada da seguinte maneira:
20
Arquitetura e Organização de
Computadores
C8
C7 C6
C5
C4
0
C3
0
C2
1
22
C1
C0
1
1
Envia sinais de controle
Não especificado
Não especificado
WRITE assume valor deste bit
READ assume valor deste bit
Arquitetura e Organização de
Computadores
23
Arquitetura e Organização de
Computadores
24
4
• Vamos criar alguns microprogramas. O primeiro a ser
criado vai ser para a busca de uma instrução.
• Vale lembrar que toda a execução de instrução começa
com uma busca de instrução; portanto o microprograma de
busca de instrução deve preceder qualquer outro
microprograma que implemente a execução de uma
instrução.
• O microprograma da UC não representa dados numéricos
ou códigos de instrução, portanto o número de bits da
microinstrução é escolhido de acordo com a necessidade
de projeto.
Arquitetura e Organização de
Computadores
66,7 nanosegundos.
15o
• Se durante o
passo do microprograma de busca de
instrução, o código for carregado no registro de instrução
por um código de instrução de complemento do
Acumulador, então a lógica da unidade de controle irá
desviar-se para a execução do seguinte microprograma:
27
C8
C7
C6
C5
C4
C3
C2
C1
C0
Função
(a) Carrega a parte baixa do contador de dados
1
.
.
14
15
Repete as microinstruções de 1 a 14 da
busca de instrução
1
1
1
0
1
0
0
1
0
Move barra de dados para parte alta do
contador de dados
(b) Carrega parte alta do contador de dados
1
Repete as microinstruções de 1 a 14 da
busca de instrução
.
.
14
15
Move barra de dados para parte baixa do
1
1
1
1
0
0
0
1
0
contador de dados
(c) Carrega conteúdo da palavra de memória de dados endereçada para o acumulador
Move contador de dados para registro de
1
1
1
1
0
0
1
1
0
1
endereços
Coloca sinal de READ em verdade e WRITE
2
1
0
0
0
1
0
1
1
1
em falso
Inclui 12 operações nulas para dar tempo à
1
1
1
0
0
0
0
0
0
3
lógica externa para buscar o dado
.
.
15
16
1
1
1
1
1
1
1
0
1
0
0
0
1
0
0
1
1
0
Move registro de dados p/ barra dados
Move barra dados p/ acumulador
Arquitetura e Organização de
Computadores
C8
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
C7
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
C6
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
C5
1
0
0
1
1
1
0
1
1
0
1
1
1
1
1
C4
0
0
0
0
1
0
0
1
0
0
1
0
1
1
0
C3
1
0
1
0
1
0
1
0
0
1
1
0
0
0
1
C2
1
1
0
1
1
1
0
0
1
1
1
1
0
1
0
C1
0
1
0
1
0
0
1
0
1
1
0
0
1
0
1
C0
1
1
1
0
0
1
0
1
0
1
0
1
0
1
0
Função
Move PC para o registro de endereços
Coloca READ (T) e WRITE (F)
Move byte baixo do PC p/ barra dados
Move barra de dados p/ latches da ULA
Incrementa os latches da ULA
Move latches da ULA p/ barra dados
Move barra dados p/ byte baixo do PC
Move byte alto do PC p/ barra dados
Move barra de dados p/ latches da ULA
Pula a próxima instrução se carry=0
Incrementa os latches da ULA
Move latches da ULA p/ barra dados
Move barra dados p/ byte alto do PC
Move registro de dados p/ barra dados
Move barra dados p/ registro de Instrução
Arquitetura e Organização de
Computadores
26
Microprograma de complemento do acumulador
Núm Instr
1
2
3
4
5
C8
1
1
1
1
1
C7
1
1
0
1
1
C6
1
1
0
1
1
C5
0
0
1
0
0
C4
0
0
1
0
0
C3
0
0
1
0
0
C2
0
1
1
1
0
C1
0
1
0
0
1
C0
1
0
0
1
0
Função
Move acumulador para barra de dados
Move barra de dados para complementador
Executa lógica do complementador
Move complementador para barra de dados
Move barra de dados para acumulador
• Embora as 5 microinstruções acima possam ser executadas
em 312.5 nanossegundos, a sincrronização do sistema
exige no mínimo um período de clock para a execução de
instruções; portanto o tempo que sobra é desperdiçado.
Arquitetura e Organização de
Computadores
28
Considerações Finais
Leitura de Memória em 3 instruções
Núm Instr
Núm Instr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
25
• A seqüência de 15 microinstruções que são executadas
durante a busca de uma instrução, é executada em apenas
um período de clock. Por exemplo: se o clock tem um
período de 1seg, cada microinstrução será executada em
Arquitetura e Organização de
Computadores
Microprograma de busca de instrução:
29
• Qual o número máximo ou mínimo de eventos lógicos que
constituem uma instrução?
– Depende da complexidade da instrução. Quanto mais
complexa a instrução mais eventos lógicos estão
associados.
• O que ocorre dentro de uma CPU durante a execução de uma
instrução?
– Ocorre uma seqüência de eventos lógicos, disparados pela
Unidade de Controle sob a forma de sinais de controle,
associados às microinstruções.
• Qual o suporte lógico necessário à CPU?
– Registros especiais, lógica de geração de sinais de controle
e lógica de seqüencialização de microinstruções.
Arquitetura e Organização de
Computadores
30
5
Download

Unidade de Controle