Para o fluxo de dados abaixo, considere que:
O sinal de “clock” está distribuído adequadamente;
Os pontos de controle dos registradores (tipo D) fazem a habilitação em nível ALTO;
Os registradores, quando habilitados, alteram seu valor na próxima borda ascendente do “clock”;
Não existem problemas de temporização;
A seleção dos multiplexadores segue os níveis que estão indicados no desenho.
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?
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 |
É possível ler e escrever no mesmo registrador durante o mesmo pulso de clock. Portanto, podemos economizar um clock.
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 |
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?
CarregaA, CarregaB, SelecionaFunção, carregaSaida;
CarregaB, CarregaA, carregaSaida, SelecionaFunção;
SelecionaFunção, CarregaA, CarregaB, carregaSaida;
SelecionaFunção, CarregaB, CarregaA; carregaSaida;
carregaSaida, SelecionaFunção, CarregaA, CarregaB;
carregaSaida, CarregaA, SelecionaFunção, CarregaB.
CarregaA, CarregaB, SelecionaFunção, carregaSaida;
CarregaB, CarregaA, carregaSaida, SelecionaFunção; (resultado errado)
SelecionaFunção, CarregaA, CarregaB, carregaSaida;
SelecionaFunção, CarregaB, CarregaA; carregaSaida;
carregaSaida, SelecionaFunção, CarregaA, CarregaB; (resultado errado)
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?
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?
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.