Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Aula 20: UCP: A Unidade de Controle
Diego Passos
Universidade Federal Fluminense
Fundamentos de Arquiteturas de Computadores
Diego Passos (UFF) UCP: Unidade de Controle FAC 1 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Revisão
Diego Passos (UFF) UCP: Unidade de Controle FAC 2 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Na Aula Passada. . .
Avançamos bastante no projeto do nosso processador.Construímos caminhos de dados para diversas instruções.
▶ Instrução branch on equal.▶ Instrução add immediate.▶ Instruções store word e load word.
Uma aula antes, havíamos feito o mesmo para todas as instruções do tipo R.
Diego Passos (UFF) UCP: Unidade de Controle FAC 3 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Na Aula Passada. . . (II)
Embora tenhamos implementado o caminho de dados de várias instruções, estes aindaestavam incompletos.
▶ Faltavam as conexões das linhas de controle.▶ Da ALU, da interface com a memória.
Além disso, construímos caminhos de dados separados para cada tipo de instrução.▶ De alguma forma, precisamos juntá-los.▶ Combinar os projetos em um único.
Adicionalmente, há uma instrução do conjunto de instruções que não foi implementada.▶ O salto incondicional.▶ Instrução jump.
Diego Passos (UFF) UCP: Unidade de Controle FAC 4 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Na Aula de Hoje
Objetivo da aula de hoje é (quase) terminar o projeto.▶ Ao menos esta versão.
Vamos combinar os caminhos de dados de cada conjunto de instruções em um único.▶ E criar ainda mais ainda mais linhas de controle a serem conectadas.
Vamos (finalmente) conectar as linhas de controle.
Diego Passos (UFF) UCP: Unidade de Controle FAC 5 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando os Caminhos de Dados
Diego Passos (UFF) UCP: Unidade de Controle FAC 6 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminhos de Dados Separados
Para simplificar o problema, dividimos a implementação do caminho de dados em tipos deinstruções.Isso resultou em 4 caminhos de dados separados:
▶ Caminho de dados para instruções do tipo R.▶ Caminho de dados para a instrução branch on equal.▶ Caminho de dados para a instrução add immediate.▶ Caminho de dados para instruções de transferência de memória.
Isso seria suficiente se nosso processador só executasse instruções de um destes quatrotipos.
▶ Mas um processador assim não seria muito útil.▶ Precisamos de um que seja capaz de implementar todas as instruções.
Diego Passos (UFF) UCP: Unidade de Controle FAC 7 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminhos de Dados Separados
Como já temos os caminhos de dados separados, vamos aproveitar este conhecimento.Vamos tentar combiná-los em um único caminho de dados.
▶ Que permita a execução de qualquer das instruções.
Como passo inicial, vamos lembrar como eram os 4 caminhos de dados já vistos.
Diego Passos (UFF) UCP: Unidade de Controle FAC 8 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminho de Dados para Instruções R
RI
RI[25-21]
RI[20-16]
RI[15-11]
Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registrador de Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
Diego Passos (UFF) UCP: Unidade de Controle FAC 9 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminho de Dados para a Instrução Branch on Equal
PC
Extensãode
Sinal
Deslocamentode 2 à
Esquerda
Somador
Somador
4RI
RI[15-0] 16 32
Mux
0
1
ALUZero
Resultado
Controle
RI[25-21]
RI[20-16]
Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registrador de Escrita
Valor Escrito
Registradores
Memória de Instruções
Endereço
Instrução Lida
Diego Passos (UFF) UCP: Unidade de Controle FAC 10 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminho de Dados para a Instrução Add Immediate
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registrador de Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
Diego Passos (UFF) UCP: Unidade de Controle FAC 11 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Caminho de Dados para Instruções de Transferência de Memória
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registradorde Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
Escrita Leitura
Memória de Dados
Endereço
Valor Escrito
Valor Lido
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
Diego Passos (UFF) UCP: Unidade de Controle FAC 12 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Quão Diferentes Eles São?
Semelhanças:▶ Todos possuem o incremento do PC.▶ Todos fazem a leitura da próxima instrução.
⋆ Armazenada no RI.▶ Todos utilizam a ALU.
⋆ Primeira entrada é sempre o “Valor Lido 1” do banco de registradores.▶ Sempre há um banco de registradores.
⋆ IDs dos registradores a serem lidos sempre vêm dos bits 25–21 e 20–16 do RI.
Diego Passos (UFF) UCP: Unidade de Controle FAC 13 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Quão Diferentes Eles São? (II)
Diferenças:▶ A segunda entrada da ALU:
⋆ “Valor Lido 2” do banco de registradores.⋆ Ou bits 15–0 do RI, depois de extensão de sinal para 32 bits.
▶ ID do registrador de escrita do banco de registradores.⋆ Bits 15–11 do RI.⋆ Ou Bits 20–16 do RI.⋆ Ou nada.
▶ Valor a ser escrito no banco de registradores.⋆ Saída da ALU.⋆ Ou valor lido da interface com a MP.
▶ A existência da interface com a MP.⋆ Para instruções de transferência de memória.
▶ Novo valor do PC.⋆ Saída do somador com a constante 4.⋆ Saída do somador com o deslocamento para desvios condicionais.
Diego Passos (UFF) UCP: Unidade de Controle FAC 14 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Como Conciliar as Diferenças?
Há três tipos de diferenças:▶ Componentes que não estão em todos os caminhos de dados.
⋆ Podemos simplesmente colocar todos os componentes que aparecem em pelo menos umcaminho de dados.
⋆ Nem todos os componentes são usados em todas as instruções.⋆ Não é um problema.
▶ Saídas de componentes ligadas a entradas diferentes em caminhos de dados diferentes.⋆ Podemos replicar a saída para todas as entradas necessárias.⋆ e.g., resultado da ALU conectado tanto como entrada do banco de registradores, quanto da
interface com a MP.▶ Entradas de componentes conectadas à componentes diferentes.
⋆ Problema mais sério.⋆ Não podemos simplesmente “emendar” as várias entradas possíveis.⋆ Temos que fazer algum tipo de seleção, de acordo com a instrução executada.
Diego Passos (UFF) UCP: Unidade de Controle FAC 15 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Como Conciliar as Diferenças?
Há três tipos de diferenças:▶ Componentes que não estão em todos os caminhos de dados.
⋆ Podemos simplesmente colocar todos os componentes que aparecem em pelo menos umcaminho de dados.
⋆ Nem todos os componentes são usados em todas as instruções.⋆ Não é um problema.
▶ Saídas de componentes ligadas a entradas diferentes em caminhos de dados diferentes.⋆ Podemos replicar a saída para todas as entradas necessárias.⋆ e.g., resultado da ALU conectado tanto como entrada do banco de registradores, quanto da
interface com a MP.
▶ Entradas de componentes conectadas à componentes diferentes.⋆ Problema mais sério.⋆ Não podemos simplesmente “emendar” as várias entradas possíveis.⋆ Temos que fazer algum tipo de seleção, de acordo com a instrução executada.
Diego Passos (UFF) UCP: Unidade de Controle FAC 15 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Como Conciliar as Diferenças?
Há três tipos de diferenças:▶ Componentes que não estão em todos os caminhos de dados.
⋆ Podemos simplesmente colocar todos os componentes que aparecem em pelo menos umcaminho de dados.
⋆ Nem todos os componentes são usados em todas as instruções.⋆ Não é um problema.
▶ Saídas de componentes ligadas a entradas diferentes em caminhos de dados diferentes.⋆ Podemos replicar a saída para todas as entradas necessárias.⋆ e.g., resultado da ALU conectado tanto como entrada do banco de registradores, quanto da
interface com a MP.▶ Entradas de componentes conectadas à componentes diferentes.
⋆ Problema mais sério.⋆ Não podemos simplesmente “emendar” as várias entradas possíveis.⋆ Temos que fazer algum tipo de seleção, de acordo com a instrução executada.
Diego Passos (UFF) UCP: Unidade de Controle FAC 15 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Selecionando entre Várias Entradas
Note que há um componente que pode realizar esta seleção.O multiplexador:
▶ Recebe duas ou mais entradas.▶ E uma ou mais linhas de controle.
⋆ Também chamadas de seletor.▶ A saída é idêntica à entrada apontada pelas linhas de controle.
Para cada entrada que pode receber dois ou mais valores, colocaremos um ou maismultiplexadores.
▶ Bastará, de alguma forma, ligar corretamente o seletor.▶ De acordo com a instrução a ser executada.
Diego Passos (UFF) UCP: Unidade de Controle FAC 16 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Formato R e Transferência de Memória
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registradorde Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
Escrita Leitura
Memória de Dados
Endereço
Valor Escrito
Valor Lido
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
RI[15-11]
Mux
0
1
Mux
1
0
Mux
0
1S
S
S
Diego Passos (UFF) UCP: Unidade de Controle FAC 17 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Add Immediate
O suporte a esta instrução vem “de graça”.▶ Utiliza partes do caminho do formato R e partes da transferência de memória.
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registradorde Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
Escrita Leitura
Memória de Dados
Endereço
Valor Escrito
Valor Lido
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
RI[15-11]
Mux
0
1
Mux
1
0
Mux
0
1S
S
S
Diego Passos (UFF) UCP: Unidade de Controle FAC 18 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Branch on Equal
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registradorde Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
Escrita Leitura
Memória de Dados
Endereço
Valor Escrito
Valor Lido
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
RI[15-11]
Mux
0
1
Mux
1
0
Mux
0
1S
S
S
Deslocamentode 2 à
Esquerda
Somador
Mux
0
1
Diego Passos (UFF) UCP: Unidade de Controle FAC 19 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Branch on Equal (II)
Há algum problema no projeto do slide anterior?
Sim:▶ Colocamos um caminho alternativo para a atualização do PC.▶ A única coisa que controla o uso deste caminho alternativo é o bit zero de saída da ALU.▶ Se estivermos executando qualquer instrução que use a ALU e, por coincidência o
resultado for zero, PC receberá um valor provavelmente errado.Como solucionar isso?
▶ Precisamos garantir que o multiplexador do novo valor do PC receba 0 como seletor sempreque a instrução não seja de desvio condicional.
Diego Passos (UFF) UCP: Unidade de Controle FAC 20 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Branch on Equal (II)
Há algum problema no projeto do slide anterior?Sim:
▶ Colocamos um caminho alternativo para a atualização do PC.▶ A única coisa que controla o uso deste caminho alternativo é o bit zero de saída da ALU.▶ Se estivermos executando qualquer instrução que use a ALU e, por coincidência o
resultado for zero, PC receberá um valor provavelmente errado.Como solucionar isso?
▶ Precisamos garantir que o multiplexador do novo valor do PC receba 0 como seletor sempreque a instrução não seja de desvio condicional.
Diego Passos (UFF) UCP: Unidade de Controle FAC 20 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Branch on Equal (II)
Há algum problema no projeto do slide anterior?Sim:
▶ Colocamos um caminho alternativo para a atualização do PC.▶ A única coisa que controla o uso deste caminho alternativo é o bit zero de saída da ALU.▶ Se estivermos executando qualquer instrução que use a ALU e, por coincidência o
resultado for zero, PC receberá um valor provavelmente errado.Como solucionar isso?
▶ Precisamos garantir que o multiplexador do novo valor do PC receba 0 como seletor sempreque a instrução não seja de desvio condicional.
Diego Passos (UFF) UCP: Unidade de Controle FAC 20 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Combinando Caminhos de Dados: Suporte à Branch on Equal (III)
Extensãode
Sinal
RI
RI[15-0] 16 32
RI[25-21] Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registradorde Escrita
Valor Escrito
Registradores
ALUZero
Resultado
Controle
RI[20-16]
Escrita Leitura
Memória de Dados
Endereço
Valor Escrito
Valor Lido
PC
Somador
4
Memória de Instruções
Endereço
Instrução Lida
RI[15-11]
Mux
0
1
Mux
1
0
Mux
0
1S
S
S
Deslocamentode 2 à
Esquerda
Somador
Mux
0
1
Branch
Diego Passos (UFF) UCP: Unidade de Controle FAC 21 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A Unidade de Controle
Diego Passos (UFF) UCP: Unidade de Controle FAC 22 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A Unidade de Controle
Há algumas aulas, citamos que a CPU pode ser dividida:▶ Caminho de dados: circuito lógico por onde dados passam e são “processados”.▶ Unidade de controle: circuito lógico que controla/configura o caminho de dados de acordo
com a instrução.Acabamos de montar um caminho de dados capaz de executar várias instruçõesdiferentes.
▶ Para cada instrução, vemos um caminho pelo qual os dados passam e são alterados.▶ Ao final do caminho, temos o resultado desejado.
Mas para compatibilizar as várias instruções, tivemos que usar várias linhas de controle.▶ Alguém precisa determinar o valor destas linhas.▶ Trabalho da unidade de controle.
Diego Passos (UFF) UCP: Unidade de Controle FAC 23 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Determinando as Linhas de Controle
Quais linhas de controle temos no nosso caminho de dados atual?São 11, no total. Vamos nomeá-las:
▶ Quatro linhas de controle da ALU: ALU0, ALU1, ALU2, ALU3.▶ RegDst: seleciona ID do registrador de escrita.▶ RegWrite: determina se havará escrita em registrador.▶ ALUSrc: seleciona segunda entrada da ALU (registrador ou imediato).▶ Branch: determina se novo valor de PC é apenas o increment ou se é decidido por instrução
de desvio.▶ MemRead: determina se haverá leitura da MP.▶ MemWrite: determina se haverá escrita na MP.▶ MemToReg: seleciona dado a ser escrito em registrador (se vindo da memória, ou da ALU).
Diego Passos (UFF) UCP: Unidade de Controle FAC 24 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Linhas de Controle e OpCodes
Com exceção às linhas de controle da ALU, todas as demais são determinadas peloOpCode.
▶ Pelo tipo de operação a ser realizada.Por exemplo, considere a linha RegWrite.
▶ Deve ser ativada para as instruções de formato R e para instrução load word.▶ Mas não pode ser ativada para as demais instruções.
⋆ Caso contrário, escreveremos lixo em algum registrador.
Este tipo de raciocínio pode ser feito com todas as linhas, formando tabelas verdade.
Diego Passos (UFF) UCP: Unidade de Controle FAC 25 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: RegDst
Seleciona origem do ID do registrador de escrita.Precisa ser 1 para instruções de formato R (usar bits 15–11 do RI).Precisa ser 0 para load word e add immediate (usar bits 20–16).Outras instruções não escrevem em registrador.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 RegDstFormato R 0 0 0 0 0 0 1load word 1 0 0 0 1 1 0store word 1 0 1 0 1 1 Xadd immediate 0 0 1 0 0 0 0branch on equal 0 0 0 1 0 0 X
Possível expressão: RegDst = ¬Op5 ∧ ¬Op3.
Diego Passos (UFF) UCP: Unidade de Controle FAC 26 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: ALUSrc
Seleciona origem da segunda entrada da ALU.Precisa ser 1 para instruções de formato I (usar imediato).Precisa ser 0 para as demais (usar registrador).
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 ALUSrcFormato R 0 0 0 0 0 0 0load word 1 0 0 0 1 1 1store word 1 0 1 0 1 1 1add immediate 0 0 1 0 0 0 1branch on equal 0 0 0 1 0 0 0
Possível expressão: ALUSrc = Op5 ∨ Op3.
Diego Passos (UFF) UCP: Unidade de Controle FAC 27 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: MemToReg
Seleciona dado a ser escrito em registrador.Precisa ser 1 para load word (usar saída da interface com a MP).Precisa ser 0 para as de formato R e a add immediate (usar saída da ALU).Outras instruções não escrevem em registrador.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 MemToRegFormato R 0 0 0 0 0 0 0load word 1 0 0 0 1 1 1store word 1 0 1 0 1 1 Xadd immediate 0 0 1 0 0 0 0branch on equal 0 0 0 1 0 0 X
Possível expressão: MemToReg = Op0.
Diego Passos (UFF) UCP: Unidade de Controle FAC 28 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: RegWrite
Determina se haverá escrita em registrador.Precisa ser 1 para load word, add immediate e formato R.Precisa ser 0 para as demais.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 RegWriteFormato R 0 0 0 0 0 0 1load word 1 0 0 0 1 1 1store word 1 0 1 0 1 1 0add immediate 0 0 1 0 0 0 1branch on equal 0 0 0 1 0 0 0
Possível expressão: RegWrite = ¬((Op0 ∧ Op3) ∨ Op2).
Diego Passos (UFF) UCP: Unidade de Controle FAC 29 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: MemRead
Determina se haverá leitura da MP.Precisa ser 1 para load word.Podemos considerar 0 para as demais.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 MemReadFormato R 0 0 0 0 0 0 0load word 1 0 0 0 1 1 1store word 1 0 1 0 1 1 0add immediate 0 0 1 0 0 0 0branch on equal 0 0 0 1 0 0 0
Possível expressão: MemRead = Op5 ∧ ¬Op3.
Diego Passos (UFF) UCP: Unidade de Controle FAC 30 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: MemWrite
Determina se haverá escrita na MP.Precisa ser 1 para store word.Precisa ser 0 para as demais.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 MemWriteFormato R 0 0 0 0 0 0 0load word 1 0 0 0 1 1 0store word 1 0 1 0 1 1 1add immediate 0 0 1 0 0 0 0branch on equal 0 0 0 1 0 0 0
Possível expressão: MemWrite = Op5 ∧ Op3.
Diego Passos (UFF) UCP: Unidade de Controle FAC 31 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabela Verdade das Linhas de Controle: Branch
Determina se a instrução é de branch.Precisa ser 1 para branch if equal.Precisa ser 0 para as demais.
Tipo de Operação Op5 Op4 Op3 Op2 Op1 Op0 BranchFormato R 0 0 0 0 0 0 0load word 1 0 0 0 1 1 0store word 1 0 1 0 1 1 0add immediate 0 0 1 0 0 0 0branch on equal 0 0 0 1 0 0 1
Possível expressão: Branch = Op2.
Diego Passos (UFF) UCP: Unidade de Controle FAC 32 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Componente de Controle
Obtivemos expressões lógicas para cada linha de controle.▶ Em função dos bits do campo OpCode.
Podemos facilmente implementá-las através de portas lógicas.▶ Componentes de eletrônica digital.
E encapsular a implementação em um componente do processador.▶ Que chamaremos simplesmente de Controle.
Diego Passos (UFF) UCP: Unidade de Controle FAC 33 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Componente de Controle (II)
Controle
RI
RI[31-26]
RegDest
Branch
MemReadMemWrite
MemToReg
ALUSrcRegWrite
Diego Passos (UFF) UCP: Unidade de Controle FAC 34 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Controle da ALU
Nosso componente de controle lida com 7 das 11 linhas de controle do caminho de dados.Mas ignoramos as linhas da ALU.O motivo para isso é simples:
▶ Os bits do OpCode não determinam completamente as linhas de controle da ALU.▶ Instruções de formato R têm todas o mesmo OpCode.▶ Mas requerem ações diferentes da ALU dependendo do campo função.
⋆ Seis últimos bits da instrução.▶ Isso quer dizer que precisaremos de outro conjunto de lógica de controle para estes bits.
⋆ Chamaremos este de Controle da ALU.
Diego Passos (UFF) UCP: Unidade de Controle FAC 35 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Controle da ALU: Tabela Verdade
Podemos construir uma tabela verdade mapeando o campo Função às linhas de controleda ALU.
Instrução Func5 Func4 Func3 Func2 Func1 Func0 ALU3 ALU2 ALU1 ALU0add 1 0 0 0 0 0 0 0 1 0subtract 1 0 0 0 1 0 0 1 1 0AND 1 0 0 1 0 0 0 0 0 0OR 1 0 0 1 0 1 0 0 0 1slt 1 0 1 0 1 0 0 1 1 1
Possíveis expressões lógicas:▶ ALU3 = 0.▶ ALU2 = Func1.▶ ALU1 = ¬Func2.▶ ALU0 = (¬Func0) ∧ (¬Func3).
Diego Passos (UFF) UCP: Unidade de Controle FAC 36 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Controle da ALU: Outras Instruções
Note que todas as instruções vistas até aqui usam a ALU.▶ Não apenas as de formato R.
As de transferência de memória (store word, load word) executam uma soma (registradormais imediato).A add immediate idem.A branch on equal executa uma subtração.As expressões lógicas do slide anterior, portanto, só valem para instruções do tipo R.
▶ OpCode zerado.Para implementar estas exceções, vamos criar duas linhas de controle adicionais:
▶ Note que o controle da ALU não tem acesso aos bits do OpCode.⋆ Precisaremos da intervenção do Componente de Controle.
Diego Passos (UFF) UCP: Unidade de Controle FAC 37 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O Controle da ALU: Outras Instruções
Para implementar estas exceções, vamos criar duas linhas de controle adicionais:▶ OpALU0 e OpALU1.
Estas linhas de controle serão entradas adicionais do componente de controle da ALU.E serão determinadas pelo Componente de Controle, com base nos bits do OpCode.Mais espeficamente:
▶ Quando OpALU0 = 0, OpALU1 = 0, ALU deve somar.▶ Quando OpALU0 = 0, OpALU1 = 1, ALU deve subtrair.▶ Quando OpALU0 = 1, OpALU1 = 0, operação especificada pelo campo Função.
Diego Passos (UFF) UCP: Unidade de Controle FAC 38 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Linhas de Controle OpALU
Controle
RI
RI[31-26]
RegDest
Branch
MemReadMemWrite
MemToReg
ALUSrcRegWrite
ControleALU
ALUOp1
RI[5-0]
ALUOp0
ALU0ALU1ALU2ALU3
Diego Passos (UFF) UCP: Unidade de Controle FAC 39 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Juntando Tudo
Controle
PC
ControleALU
Extensãode
Sinal
Deslocamentode 2 à
Esquerda
Somador
Somador
ALUZero
Resultado
Escrita
Escrita Leitura
4
RI RI[31-26]
RI[25-21]
RI[20-16]
RI[15-0]
Mux
0
1
16 32
Mux
0
1Mux
1
0
RI[15-11]
RegDest
Branch
MemReadMemWrite
MemToReg
ALUOp1
ALUSrcRegWrite
RI[5-0]
Memória de Dados
Endereço
Valor Escrito
Valor Lido
Memória de Instruções
Endereço
Instrução Lida
ALUOp0
Bit 0Bit 1Bit 2Bit 3
Mux
0
1
Registrador de Leitura 1
Valor Lido 1
Registrador de Leitura 2
Valor Lido 2
Registrador de Escrita
Valor Escrito
Registradores
Diego Passos (UFF) UCP: Unidade de Controle FAC 40 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Juntando Tudo (II)
Terminamos?
Quase.▶ Nosso processador ainda não consegue implementar a instrução jump.▶ Desvio incondicional.▶ Mas esta é uma adição relativamente simples.▶ Veremos na próxima aula.
Diego Passos (UFF) UCP: Unidade de Controle FAC 41 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Juntando Tudo (II)
Terminamos?Quase.
▶ Nosso processador ainda não consegue implementar a instrução jump.▶ Desvio incondicional.▶ Mas esta é uma adição relativamente simples.▶ Veremos na próxima aula.
Diego Passos (UFF) UCP: Unidade de Controle FAC 41 / 42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Exercício
Derive expressões lógicas para as linhas de controle ALU0, ALU1, ALU2 e ALU3considerando as linhas OpALU0 e OpALU1 como entradas.Lembre-se:
▶ Quando OpALU0 = 0, OpALU1 = 0, ALU deve somar.▶ Quando OpALU0 = 0, OpALU1 = 1, ALU deve subtrair.▶ Quando OpALU0 = 1, OpALU1 = 0, operação especificada pelo campo Função.
E a tabela verdade do campo Função:
Instrução Func5 Func4 Func3 Func2 Func1 Func0 ALU3 ALU2 ALU1 ALU0add 1 0 0 0 0 0 0 0 1 0subtract 1 0 0 0 1 0 0 1 1 0AND 1 0 0 1 0 0 0 0 0 0OR 1 0 0 1 0 1 0 0 0 1slt 1 0 1 0 1 0 0 1 1 1
Diego Passos (UFF) UCP: Unidade de Controle FAC 42 / 42