EA-869 - Dúvidas Frequentes
EA-869 - Dúvidas Frequentes
Capítulo III (26.04.2006), 1/2008
(Ting - 2s97;
Léo - 1s2006)
O que distingue um controlador hardwired de um
controlador microprogramado?
Qual é a relação entre a arquitetura de um computador e
a tecnologia do seu controlador?
Através do processador microprogramado especificado na
seção III.4 do livro-texto, exemplifique os formatos de instrução horizontal,
vertical e diagonal.
Faz sentido classificar uma microinstrução diagonal em monofásica
e polifásica?
Como é possível transferir o conteúdo do registrador RDM
para o registrador Acc no processador microprogramado
especificado na seção III.4?
Como é possível incrementar o conteúdo do PC
no processador microprogramado especificado na seção III.4?
Quais bits de condição gerados pela UAL podem
ser utilizados no controlador
do processador microprogramado da seção III.4 para implementar os desvios
condicionais (JUMPZERO e JUMPNEG)?
Como se consegue determinar o endereço inicial de um
microprograma a partir do código de operação, C.O.?
O processador especificado na seção III.4
reserva 4 bits para o código de operação, ou seja, ele permite
representar 16 instruções de forma distinta. Mas, da forma como
os microprogramas foram organizados na micromemória, só poderemos
implementar no máximo 9 instruções. Justifique esta afirmação.
Como poderemos contornar esta limitação?
Quais inicializações são necessárias para executar corretamente
um programa no computador microprogramado da seção III.4?
A ligação entre o registrador RI e o barramento 2 no processador
da seção III.4 consiste de 12 linhas, enquanto o barramento 2 é constituído de 16 linhas.
Os 4 bits mais significativos do barramento ficarão indefinidos?
O microprograma que multiplica os conteúdos dos registradores
Acc e R1 apresentado na seção III.4.4 é executável para a organização
apresentada na Fig. 3.16 do livro-texto.Suponha que isto não fosse possível e você tivesse de usar o registrador PC como registrador auxiliar. Proponha uma solução para esta alternativa.
Solução do exercício 19 do Capítulo.
O que distingue um controlador hardwired de um
controlador microprogramado? (Ting - 2s97), (Muraro/2008)
A função de um controlador num processador é decodificar instruções e sequenciar as microoperações correspondentes. Quando os sinais de controle são gerados por hardware com o uso de técnicas de circuitos lógicos convencionais, conforme exemplifica a seção II.4 do livro-texto, dizemos que o controlador é hardwired. Quando a unidade de controle é provida de uma memória (conhecida como micromemória) e os sinais de controle são gerados em função de um conjunto de bits (conhecido também como palavra de controle) armazenado nesta memória, dizemos que o controlador é microprogramado.
Na primeira organização alterações na arquitetura implicam em modificações em hardware; enquanto na segunda organização, alterações na arquitetura podem significar modificações somente no conteúdo da micromemória.
Máquinas projetadas com a primeira organização são mais velozes do que as
máquinas projetadas com a segunda organização, pois esta dependem da
velocidade das memórias disponíveis.
E, para máquinas mais complexas, o custo de uma unidade de controle
hardwired é maior do que o de uma unidade de controle microprogramada.
Qual é a relação entre a arquitetura de um computador e
a tecnologia do seu controlador? (Ting - 2s97)
A definição do repertório de instruções de um processador está
intimamente relacionada à sua arquitetura.
À medida que cresce o repertório de instruções fica
economicamente mais difícil implementar um controlador
totalmente hardwired (no Capítulo II vimos que para
cada instrução foi necessário projetar um registrador de deslocamento
para sequenciar os sinais de controle correspondentes a uma
instrução!). A
microprogramação vem sendo uma solução para máquinas
que suportam uma grande variedade de instruções e modos
de endereçamento (a ser visto no Capítulo IV).
Basicamente distinguem-se duas arquiteturas de
computadores:
- RISC (Reduced Instruction Set
Computer), com um número reduzido de instruções e modos
de endereçamento; e
- CISC (Complex Instruction Set Computer), com
um número grande de instruções (tipicamente entre 100 a 250)
e um grande número de modos de endereçamento (tipicamente
entre 5 a 20 modos).
A utilização de microprogramação dá-se qaundo o ganho com a flexibilidade compensa alguma perda de desempenho. A família de processadores 68000 da Motorola é um exemplo de processadores, recentes, microprogramados.
Através do processador microprogramado especificado na
seção III.4 do livro-texto, exemplifique os formatos de instrução horizontal,
vertical e diagonal. (Ting - 2s97) (modificada Léo - 1s98 e 1/02)
No formato horizontal um sinal de controle é representado por um bit
na palavra de controle. Como o processador especificado na seção III.4
tem 24 sinais de controle (observe que os sinais de controle internos ao
controlador estão incluídos), teremos que reservar no mínimo 24 bits
para designar estes sinais de controle. Conforme observado na seção
III.3.1 do livro-texto, caso cada microinstrução seja executada num
ciclo de relógio (monofásica), algumas combinações desses sinais
de controle são inválidas. Por exemplo, o sinal de controle SC1
(transferência do conteúdo do PC para o barramento 1) e SC2
(transferência do conteúdo do Acc para o barramento 1).
No formato vertical cada palavra contém os sinais de controle
necessários para executar uma microoperação. Assim a quantidade de bits
será aquela necessária para definir a microoperação com maior quantidade de
microcomandos (mais os bits necessários para distinguir as microinstruções).
Apesar de
reduzirmos drasticamente o tamanho da
palavra de controle, com este formato não só perdemos a possibilidade de
paralelismo de sinais de controle como ganhamos o problema de especificar
conjuntos de sinais de controle que devem atuar simultaneamente sobre
as componentes, tais como os três sinais SC2, SC5 e SC8 para decrementar
o conteúdo de Acc.
O formato diagonal é um compromisso dos dois formatos
acima. Ele consiste em dividir a palavra de controle em vários
campos, onde cada campo representa um conjunto de sinais de controle que
funcionalmente não podem ocorrem no mesmo pulso de relógio. Analisando
o processador da seção III.4,
podemos identificar 7 conjuntos de sinais de controle com esta
característica:
- operações que envolvem o barramento
1 da UAL:
sinais de controle 1, 2 e 3.
- operações que envolvem o barramento
2 da UAL:
sinais de controle de 4 a 7.
- operações que envolvem a UAL:
sinais de controle 8 e 9.
- operações que envolvem o barramento 3
(para o nosso exemplo,
vamos supor que não é permitida a
escrita simultânea dos
registradores): sinais de controle de 10 a 15.
- operações que envolvem RDM:
sinais de controle de 16 a 18.
- operações que envolvem o barramento
BI1 do somador do controlador: sinais de controle de 19 a 22.
- operações que envolvem o barramento
BI2 do somador do controlador: sinais de controle 23 e 24.
Podemos, portanto (utilizando codificação), utilizar 2 bits para codificar os sinais de
controle 1, 2 e 3; 2, para os sinais de 4 a 7;
3, para os sinais 10 a 15; 2, para os sinais de 16 a 18; e 2, para
os sinais de 19 a 22. Com isso, precisaremos no mínimo de 15 bits
na palavra de controle e 5 decodificadores para designar os sinais
de controle
necessários ao controle do computador especificado na seção III.4.
Feito isso um sub-conjunto do total de campos definiria a opção diagonal.
Faz sentido classificar uma microinstrução diagonal em monofásica
e polifásica? (Ting - 2s97)
Sim. Uma microinstrução em formato diagonal pode conter
sinais de controle que devem ser executados em distintos ciclos (ou fases) de
relógio. Se for permitido combinar numa microinstrução sinais de controle
de distintos ciclos, dizemos que ela é polifásica. Caso contrário,
a microinstrução é denominada monofásica.
Como é possível transferir o conteúdo do registrador RDM
para o registrador Acc no processador microprogramado
especificado na seção III.4? (Ting - 2s97)
Diferentemente dos computadores hipotéticos que vimos no Capítulo II,
no processador em questão o registrador RDM é ligado ao registrador
Acc via barramento 2, UAL e barramento 3. Isso significa que precisamos aplicar uma
operação aritmética ou
lógica sobre o conteúdo do RDM e transferir este conteúdo para o registrador
Acc via barramento 3. Uma operação aritmética que não afetaria o conteúdo do RDM
seria por exemplo (RDM)+0 (sinal de controle SC7). Para transferir o resultado
ao registrador Acc precisaremos de mais um sinal de controle, SC11.
Como é possível incrementar o conteúdo do PC
no processador microprogramado especificado na seção III.4?
(Ting - 2s97)
Diferentemente dos computadores que vimos no Capítulo II,
o processador em questão não tem o sinal de controle específico
para incrementar o conteúdo do PC. Porém, temos nesta
organização conexões do PC à UAL via barramento 1 (leitura)
e via barramento 3 (escrita). Portanto, podemos obter
o mesmo efeito do sinal de controle IPC do Capítulo II
através dos sinais de controle SC1, SC5 (colocar o conteúdo
do PC e o valor "1" nos dois barramentos de entrada da UAL
e somá-los) e SC10 (transferir o resultado da soma para
PC).
Quais bits de condição gerados pela UAL podem ser utilizados no controlador
do processador microprogramado da seção III.4 para implementar os desvios
condicionais (JUMPZERO e JUMPNEG)? (Ting - 2s97)
Os bits de condição negativo, N (na Fig. 3.16 corresponde a TESTNEG),
e zero, Z (na Fig. 3.16 corresponde a TESTZERO). Se o bit N=0,
então
atribui-se a TESTNEG o valor 2; senão o valor 1.
Analogamente, se o bit Z=0, então atribui-se a TESTZERO o valor 2;
senão o valor 1.
Como se consegue determinar o endereço inicial de um
microprograma a partir do código de operação, C.O.?
(Ting - 2s97) (modificada Léo - 1s98)
Um procedimento simples consiste em conversão do código de operação
(sempre menor que a palavra que representa um endereço da micromemória)
no endereço da micromemória completando os bits menos e mais significativos
com 0's. Consideremos um computador microprogramdo cujas instruções reservam 4 bits para
o código de operação e contém uma micromemória com 128 palavras de controle (7 bits
para endereçá-las). Um procedimento para determinar o endereço inicial do
microprograma correspondente a um dado código de operação é adicionar dois
zeros nos bits menos significativos e 1 zero no bit mais significativo,
conforme ilustra a figura abaixo
Este procedimento de correspondência reserva para cada código um espaço de 4 palavras.
Caso o microprograma necessite de mais palavras pode-se introduzir um desvio às
palavras dos endereços 1000000 até 1111111 onde podem ser armazenadas as microinstruções
excedentes.
A seção III.4 do livro-texto apresenta um outro procedimento de correspondência.
Para obter o endereço inicial de cada microprograma, utilizou-se simplesmente
o código de operação acrescido de um deslocamento (no caso, 2,
que corresponde às duas primeiras
microinstruções do ciclo de busca, subtraído de 1, já que
C.O.= 0000 não foi utilizado):
Com isso é alocada a cada código de operação
uma palavra de controle. Nesta palavra está armazenado somente
o endereço efetivo da primeira microinstrução de um microprograma. A transferência deste
endereço efetivo ao contador de microprograma, MPC, permite iniciar a execução
deste microprograma.
O processador especificado na seção III.4
reserva 4 bits para o código de operação, ou seja, ele permite
representar 16 instruções de forma distinta. Mas, da forma como
os microprogramas foram organizados na micromemória, só poderemos
implementar no máximo 9 instruções. Justifique esta afirmação.
Como poderemos contornar esta limitação? (Ting - 2s97) (modificada Léo - 1s98)
Observe que o procedimento de mapeamento
utilizado pelo processador em questão associa a cada código
de operação um endereço da micromemória que corresponde ao valor
(1+(C.O.)). Como são reservados 4 bits ao C.O. podemos teoricamente
projetar 16 instruções (de 0000 até 1111) cujos microprogramas
teriam seus endereços efetivos armazenados no espaço de micromemória de
(1+0000000000 até 1+0000001111). Entretanto, a forma como os endereços
da micromemória foram utilizados não podemos utilizar
C.O.=0000 (pois o endereço 0000000001 já é reservado para
uma microinstrução do ciclo de busca) nem C.O. > 1001
(pois a partir do endereço 0000001011 a micromemória foi utilizada
pelas microinstruçoes dos microprogramas).
A segunda limitação pode ser facilmente contornada se reorganizarmos
a ocupação da micromemória conforme o esquema a seguir:
Função |
Endereço |
Microoperações |
Ciclo de Busca |
0 |
REM <- (PC) + 0 |
RDM <- ((REM)) |
MPC <- (MPC) + 1 |
1 |
PC <- (PC) + 1 |
RI <- (RDM) |
MPC <- (MPC) + (RI.CO) |
Mapeamento |
2 |
MPC <- 0 + 17 |
3 |
MPC <- 0 + 19 |
4 |
MPC <- 0 + 21 |
5 |
MPC <- 0 + 23 |
6 |
MPC <- 0 + 25 |
7 |
MPC <- 0 + 42 |
8 |
MPC <- 0 + 59 |
9 |
MPC <- 0 + 60 |
10 |
MPC <- 0 + 63 |
11 |
reservado |
12 |
reservado |
13 |
reservado |
14 |
reservado |
15 |
reservado |
16 |
reservado |
LOAD |
17 |
REM <- 0 + (RI.END) |
RDM <- ((REM)) |
MPC <- (MPC) + 1 |
18 |
Acc <- 0 + (RDM) |
MPC <- 0 + 0 |
: |
: |
: |
A outra limitação com relação ao uso do CO=0000, exigiria o uso das
palavras a partir do endereço "0" na micromemória e assim teriamos
na decodificação MPC <- (RI.CO) e o microprograma do Ciclo de Busca
armazenado a partir de outro endereço da Memória de Controle.
Quais inicializações são necessárias para executar corretamente
um programa no computador microprogramado da seção III.4? (Ting - 2s97)
Deve-se carregar no PC o endereço inicial do programa e assegurar que
o conteúdo do MPC seja nulo. Note-se que se (MPC) não for zero, podemos
interpretar incorretamente a primeira instrução do programa.
A ligação entre o registrador RI e o barramento 2 no processador
da seção III.4 consiste de 12 linhas, enquanto o barramento 2 é constituído de 16 linhas.
Os 4 bits mais significativos do barramento ficarão indefinidos? (Ting - 2s97)
Não. É possível implementar um circuito que coloque 0 nestas 4 linhas quando o sinal de controle SC6 for ativado.
Esta mesma observação vale para a conexão entre o barramento 3 e o
registrador REM. Neste caso, o conteúdo dos 4 bits mais significativos
do barramento 3 serão desprezados.
O microprograma que multiplica os conteúdos dos registradores
Acc e R1 apresentado na seção III.4.4 é executável para a organização
apresentada na Fig. 3.16 do livro-texto.Suponha que isto não fosse possível e você tivesse de usar o registrador PC como registrador auxiliar. Proponha uma solução para esta alternativa. (Ting - 2s97) (modificada Léo - 1s2006)
Precisamos salvar o conteúdo do PC no endereço 0 da memória
principal por exemplo (lembre que o PC mantém a sequência
de endereços das instruções de um programa em execução!) e utilizá-lo
temporariamente no microprograma. Antes do término da execução do microprograma devemos
restaurar o PC, conforme mostra o seguinte fluxogramo:
que pode ser traduzido em seguintes microinstruções:
Endereço |
Microoperações |
Sinais de Controle |
Comentários |
0 |
REM <- 0 + 0 |
15 |
o end. 0 da Memória Principal é reservado para guardar temporariamente o conteúdo do PC |
MPC <- (MPC) + 1 |
19,23 |
1 |
RDM <- (PC) + 0 |
1, 14 |
(REM) <- (RDM) |
17 |
MPC <- (MPC) + 1 |
19, 23 |
2 |
RDM <- 0 + 0 |
14 |
inicializar o resultado: RDM = 0 |
MPC <- (MPC) + 1 |
19, 23 |
3 |
PC <- (R1) + 0 |
3, 10 |
carregar o multiplicando em PC |
MPC <- (MPC) + 1 |
19, 23 |
4 |
MPC <- (MPC) + TESTZERO |
20, 23 |
MPC + 1 (se Acc=0) ou MPC +2 (caso contrário) |
5 |
MPC <- 0 + 9 |
7,10, 24 |
desviar para end. 9, se Acc=0 |
6 |
RDM <- (PC) + (RDM) |
1, 7, 14 |
adicionar o multiplicando ao resultado parcial, acumulando em RDM |
MPC <- (MPC) + 1 |
19, 23 |
7 |
Acc <- (Acc) - 1 |
2, 5, 8, 11 |
decrementar o Acc |
MPC <- (MPC) + 1 |
19,23 |
8 |
MPC <- 0 + 4 |
8, 24 |
retorna para o laço de multiplicação |
9 |
REM <- 0 + 1 |
5, 15 |
transferir o resultado para o end. 1 da memória |
(REM) <- (RDM) |
17 |
MPC <- (MPC) + 1 |
19, 23 |
10 |
REM <- 0 + 0 |
15 |
ler o conteúdo do end. 0 |
RDM <- ((REM)) |
16 |
MPC <- (MPC) + 1 |
19, 23 |
11 |
PC <- 0 + (RDM) |
7, 10 |
restaurar o conteúdo do PC e continuar, por exemplo na próxima posição da micromemória |
MPC <- (MPC) + 1 |
19,23 |
Sugestões para uma possível solução para o exercício 19 do Capítulo. (Léo - 1s98)
- Inicialmente é importante perceber que os registradores são de 16 bits
e se multiplicarmos dois números de 16 bits haverá perda de informação. Neste
caso a sugestão é limitar os operandos a 8 bits;
- Uma possível implementação poderá partir de operandos fornecidos
pelo usuário e armazenados em dois registradores;
- se for ser usado o TESTNEG é importante notar que o teste é
feito no bit de sinal do Acc (o bit mais significativo do Acc);
- se for ser usado SHIFT LEFT é importante lembrar que os
operandos tem 8 bits (e assim os 8 bits mais significativos são zero no registrador de 16 bits);
- para a solução talvez seja necessário usar os regs. PC, REM como
registradores auxiliares. É necessário salvar o valor deles.
Atualizado: 12/03/2008
Last modified: Sun Sep 21 10:54:28 BRA 1997
Sugestões para ting@dca.fee.unicamp.br ou leopini@dca.fee.unicamp.br ou