Lista de Exercícios sobre Processador

Para o fluxo de dados abaixo, considere que:

Crie uma sequência de palavras de controle, uma para cada “clock” consecutivo, que faça a troca (swap) entre os conteúdos dos registradores A e B.

Sem modificar o projeto, existe alguma forma de diminuir a quantidade de ciclos utilizados?

Fluxo de Dados
Fluxo de Dados

Primeira versão (básica):

Versão Básica da Ativação dos Pontos
Ponto de Controle clk 1 clk 2 clk 3 clk 4
Sel DeMux A X X 0 1
HabReg A 0 0 1 0
HabReg B 0 0 0 1
Sel Mux A 0 1 X X
Sel DeMux 1 0 1 X X
HabReg 1 1 0 0 0
HabReg 2 0 1 0 0
Sel Mux 1 X X 1 0
Primeiro Clock: REG1 = REGA
Primeiro Clock: REG1 = REGA
Segundo Clock: REG2 = REGB
Segundo Clock: REG2 = REGB
Terceiro Clock: REGA = REG2 = REGB
Terceiro Clock: REGA = REG2 = REGB
Quarto Clock: REGB = REG1 = REGA
Quarto Clock: REGB = REG1 = REGA


Segunda versão (otimizada):

É possível ler e escrever no mesmo registrador durante o mesmo pulso de clock. Portanto, podemos economizar um clock.

Versão Otimizada da Ativação dos Pontos
Ponto de Controle clk 1 clk 2 clk 3
Sel DeMux A X 1 0
HabReg A 0 0 1
HabReg B 0 1 0
Sel Mux A 0 1 X
Sel DeMux 1 0 1 X
HabReg 1 1 0 0
HabReg 2 0 1 0
Sel Mux 1 X 0 1
Primeiro Clock: REG1 = REGA
Primeiro Clock: REG1 = REGA
Segundo Clock: REG2 = REGB e REGB = REG1 = REGA
Segundo Clock: REG2 = REGB e REGB = REG1 = REGA
Terceiro Clock: REGA = REG2 = REGB
Terceiro Clock: REGA = REG2 = REGB

Para o fluxo de dados abaixo, considerando A=B, quais sequências de ativação dos pontos de controle não resultam na resposta correta?

  1. CarregaA, CarregaB, SelecionaFunção, carregaSaida;

  2. CarregaB, CarregaA, carregaSaida, SelecionaFunção;

  3. SelecionaFunção, CarregaA, CarregaB, carregaSaida;

  4. SelecionaFunção, CarregaB, CarregaA; carregaSaida;

  5. carregaSaida, SelecionaFunção, CarregaA, CarregaB;

  6. carregaSaida, CarregaA, SelecionaFunção, CarregaB.

Fluxo de Dados
Fluxo de Dados
Fluxo de Dados
Fluxo de Dados
  1. CarregaA, CarregaB, SelecionaFunção, carregaSaida;

  2. CarregaB, CarregaA, carregaSaida, SelecionaFunção; (resultado errado)

  3. SelecionaFunção, CarregaA, CarregaB, carregaSaida;

  4. SelecionaFunção, CarregaB, CarregaA; carregaSaida;

  5. carregaSaida, SelecionaFunção, CarregaA, CarregaB; (resultado errado)

  6. carregaSaida, CarregaA, SelecionaFunção, CarregaB. (resultado errado)


Para o formato de instrução mostrado abaixo, responda:

Qual a quantidade de instruções que podem ser codificadas?

Quantos registradores o processador possui?

Qual a arquitetura do processador em uso?

Caso exista o modo de endereçamento imediato, qual seria a faixa de inteiros, com sinal, suportada?

Formato da Instrução
OpCode Reg A Reg B Reg C Reservado
5 bits 6 bits 6 bits 6 bits 9 bits

Total de instruções: OpCode = 5 bits → 2^5 combinações → 32 instruções.

Total de registradores: Reg A = Reg B = Reg C = 6 bits → 2^6 endereços → 64 registradores.

Arquitetura: Load-Store ou Registrador-Registrador.

Soma com imediato: Reg A = Reg B + Imediato → Imediato pode utilizar os 6 bits do Reg C somados com os 9 reservados = 15 bits = 32.768 representações.

Considerando o bit para o sinal, teremos 16.384 inteiros positivos (considerando o zero) e 16.384 inteiros negativos (não existe zero negativo). A faixa será de -16.384 até +16.383.


Para o formato de instrução mostrado abaixo, responda:

Qual a quantidade de instruções que podem ser codificadas?

Quantos registradores o processador possui?

Qual a arquitetura do processador em uso?

Caso exista o modo de endereçamento imediato, qual seria a faixa de inteiros, com sinal, suportada?

addi R1, Imediato
Formato da Instrução
OpCode Reg A Reservado
6 bits 5 bits 13 bits

Total de instruções: OpCode = 6 bits → 2^6 combinações → 64 instruções.

Total de registradores: Reg A = 5 bits → 2^5 endereços → 32 registradores.

Arquitetura: Registrador-Memória.

Soma com imediato: Reg A = Reg A + Imediato → Imediato possui 13 bits = 2^13 = 8192 representações.

Considerando o bit para o sinal, teremos 4.096 inteiros positivos (considerando o zero) e 4.096 inteiros negativos (não existe zero negativo). A faixa será de -4.096 até +4.095.


Ferramenta Auxiliar: Conversor Binário para Decimal (com ou sem sinal)

    Binário com Sinal