470 likes | 579 Views
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.dcomp.ufs.br/index.php/docentes:Andre. Processadores – Aula 02. Agenda. Unidade de Controle O Controle da ALU Convertendo tabelas verdade em portas lógicas As demais unidades da unidade de controle.
E N D
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.dcomp.ufs.br/index.php/docentes:Andre Processadores – Aula 02
Agenda • Unidade de Controle • O Controle da ALU • Convertendo tabelas verdade em portas lógicas • As demais unidades da unidade de controle.
Na aula passada • Na aula passada vimos os componentes que formam um projeto simples de um caminho de dados. • A aula de hoje será focada na unidade de controle.
O controle da ALU • A ALU possui 4 bits de controle. A tabela a seguir ilustra os valores que devem ser transmitido para configurar o funcionamento da ALU.
O Controle da ALU • O controle da ALU é feito baseado nos seguintes critérios: • Se a instrução em questão for uma instrução do tipo R (add, sub, and, or, slt, etc) o campo funct, ou seja, os 6 últimos bits da instrução são utilizados para configurar a ALU. • Se a instrução for de acesso a memória ou de desvio (condicional ou incondicional), não utilizamos os últimos 6 bits da instrução.
O Controle da ALU • Na verdade a unidade de controle possui uma pequena unidade de controle de 2 bits, a AluOp. • A AluOp indica se a operação a ser realizada deve ser uma add (00) para lw e sw, subtract(01) para beq ou determinada pelo funct (10). • A saída da AluOp é um sinal de 4 bits que controla a ALU diretamente.
O Controle da ALU • Observem que a unidade de controle foi subdividida em unidades de controle menores (opALU). • Subdividir o controle em unidades mais simples, é uma prática comum, e trás algumas vantagens. • Em geral, simplifica o projeto de controle. • Pode tornar a unidade de controle mais rápida.
O Controle da ALU • Existem várias formas de se implementar esta unidade de controle para a ALU. • Observe que, no nosso exemplo, muito dos bits citados não são utilizados: • Embora, com o campo funct de 6 bits, possamos representar 64 diferentes valores, muito deles não são utilizados. • Em geral, utiliza-se uma tabela verdade para nos auxiliar na obtenção das portas lógicas que implementam o comportamento desejado.
O Controle da ALU AluOp nunca contém o valor 11
O Controle da ALU Don’tcare O sinal não possui influência no resultado obtido
O Controle da ALU • Podemos simplificar ainda mais esta tabela verdade, se fizermos um estudo individual de cada um dos bits operation. • Basicamente, construímos 3 novas tabelas, observando apenas os 3 bits menos significativos de operation. • Utilizando don’t care podemos eliminar mais alguns elementos.
Convertendo Tabela verdade em Portas Lógicas √ √ √ Quando entrada 1 X, Somente estas duas linhas aparecem com F1 = 1, logo os demais Fs são don’tcare
Convertendo Tabela verdade em Portas Lógicas √ √ √ √ √ Quando entrada 1 X, Somente estas três linhas aparecem com F2 = 0, logo os demais Fs são don’tcare
Convertendo Tabela verdade em Portas Lógicas √ √ Quando entrada 1 X, somente a linha 6 possui F0 = 1 Quando entrada 1 X, somente a linha 7 possui F3 = 1
A Unidade de Controle Principal • Antes de começarmos o projeto da unidade de controle principal, algumas observações com relação às instruções do MIPS.
A Unidade de Controle Principal • Resumindo: • O campo op, também chamado opcode, está sempre contido nos bits 31:26. OP[5:0]. • Os dois registradores a serem lidos sempre são especificados pelos campos rs e rt, nas posições 25:21 e 20:16. (tipo R, beq, sw) • O registrador de base para as instruções lw e sw está sempre nas posições 15:0. • O offset de 16 bits para branch, equal, load e store está sempre nas posições 15:0 • O registrador de destino está em um de dois lugares. Para um lw, ele está na posição 20:16 (rt). Para uma instrução do tipo R, ele está nas posições 15:11 (rd)
AluOp e Instruções Instruções Controle da ALU
A Unidade de Controle Principal • Quantas linhas temos para a unidade de controle principal? • A entrada de cada multiplexador/memória possuem apenas uma única linha de controle. • A entrada de OpAlu, como visto anteriormente, possui 2 bits. • Todos os sinais de controle apresentado anteriormente podem ser definidos, unicamente, a partir do opcode da instrução. • No entanto existe 1 que não pode? Qual?
A Unidade de Controle Principal • Quantas linhas temos para a unidade de controle principal? • A entrada de cada multiplexador/memória possuem apenas uma única linha de controle. • A entrada de OpAlu, como visto anteriormente, possui 2 bits. • Todos os sinais de controle apresentado anteriormente podem ser definidos, unicamente, a partir do opcode da instrução. • No entanto existe 1 que não pode? Qual? • PCScr.
A Unidade de Controle Principal • Valores dos Sinais de controle de acordo com a instrução passada.
Operação do Caminho de Dados • Instruções do tipo R • Add $t1, $t2, $t3 • Passos • A instrução é buscada e o PC é incrementado • Dois registradores, $t1 e $t2, são lidos do banco de registradores e a unidade de controle principal calcula a definição das linhas de controle também durante esta etapa. • A ALU opera nos dados lidos do banco de registradores, usando o código de função (bits 5:0. que é o campo funct, da instrução) para gerar a função da ALU. • O resultado da ALU é escrito no banco de registradores usando os bits 15:11 da instrução para selecionar o registrador de destino (St1).
2. Dois registradores, $t1 e $t2, são lidos Unidade de controle principal calcula as linhas de controle.
3. ALU opera nos dados lidos do banco de registradores para gerar a função da ALU.
4. O resultado da ALU é escrito no banco de registradores usando os bits 15:11 da instrução para selecionar o registrador de destino (St1).
Operação do Caminho de Dados • Lw $t1, offset($t2) • Passos • A instrução é buscada e o PC é incrementado • Um valor de registrador ($t2) é lido do banco de registradores. • A ALU calcula a soma do valor lido do banco de registradores com os 16 bits menos significativos com sinal estendido da instrução offset. • A Soma da ALU é usada como o endereço para a memória de dados. • Os dados da unidade de memória são escritos no banco de registradores; o registrador de destino é fornecido pelos bits 20:16 ($t1).
2. Um valor de registrador ($t2) é lido do banco de registradores.
3. A ALU calcula a soma do valor lido do banco de registradores com os 16 bits menos significativos com sinal estendido da instrução offset.
4. A Soma da ALU é usada como o endereço para a memória de dados.
5. Os dados da unidade de memória são escritos no banco de registradores; o registrador de destino é fornecido pelos bits 20:16 da instrução ($t1)
Operação do Caminho de Dados • beq $t1, $t2, offset • Passos • A instrução é buscada e o PC é incrementado. • Dois registradores, $t1 e $t2, são lidos do banco de registradores. • A ALU realiza uma subtração dos valores de dados lidos do banco de registradores. O valor PC + 4 é somado aos 16 bits menos significativos com sinal estendido (offset) deslocados de dois para a esquerda; o resultado é o endereço de destino do desvio. • O resultado Zero da ALU é usado para decidir o resultado de que somador deve ser armazenado no PC.
3. A ALU realiza uma subtração dos registradores O endereço de desvio é obtido
4. O resultado Zero da ALU é usado para decidir o resultado de que somador deve ser armazenado no PC.
Questão estilo as da prova. • Para próxima aula, tragam: • Utilizando portas lógicas, implemente a unidade de controle de acordo com a tabela verdade presente no slide anterior.
Referências • Hennessy e Patterson • Seções 5.4 e 5.5