Aula 20: UCP: A Unidade de Controlediego/disciplinas/2015_1/FAC/arquivos/aula2… · Aula 20: UCP:...

Preview:

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