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:
    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:
    1. operações que envolvem o barramento 1 da UAL: sinais de controle 1, 2 e 3.
    2. operações que envolvem o barramento 2 da UAL: sinais de controle de 4 a 7.
    3. operações que envolvem a UAL: sinais de controle 8 e 9.
    4. 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.
    5. operações que envolvem RDM: sinais de controle de 16 a 18.
    6. operações que envolvem o barramento BI1 do somador do controlador: sinais de controle de 19 a 22.
    7. 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)

  1. 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;
  2. Uma possível implementação poderá partir de operandos fornecidos pelo usuário e armazenados em dois registradores;
    1. se for ser usado o TESTNEG é importante notar que o teste é feito no bit de sinal do Acc (o bit mais significativo do Acc);
    2. 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);
    3. 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