EA-869 - Dúvidas Frequentes

Capítulo III


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 é compatível com a organização mostrada na Fig. 3.16 do livro-texto (versão do segundo semestre de 1997)? Caso negativo, propõe uma solução alternativa.

O conteúdo da micromemória ilustrado na Fig. 3.19 é condizente com os microprogramas apresentados na página 107 do livro-texto?

Solução do exercício 19 do Capítulo.


O que distingue um controlador hardwired de um controlador microprogramado?

    A principal função de um controlador num processador é decodificar uma instrução e sequenciar as microoperações correspondentes. Quando os sinais de controle são gerados por hardwire 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.
    Note que na primeira organização alterações na arquitetura implica 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.

Qual é a relação entre a arquitetura de um computador e a tecnologia do seu controlador?

    A definição do repertório de instruções de um processador está intimamente relacionada com a 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 - uma arquitetura apropriada para um controlador totalmente hardwired; 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), cuja implementação é economicamente viável somente através da tecnologia de microprogramação.

Através do processador microprogramado especificado na seção III.4 do livro-texto, exemplifique os formatos de instrução horizontal, vertical e diagonal.

    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 dentro do controlador sã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 for 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 representa um sinal de controle. Como são 24 sinais de controle, 5 bits são suficientes para codificar cada um destes sinais. Com um decodificador podemos sempre obter a partir da palavra o sinal de controle correspondente. 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. Para evitar este problema projeta-se o processador de tal forma que cada sinal de controle corresponda a uma microoperação.
    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 funcionalmente exclusivos. Analisando o processador da seção III.4, podemos identificar 7 conjuntos de sinais de controle funcionalmente exclusivos:
    1. operações que envolvem o barramento 1 da UAL: sinais de controle 1 e 2.
    2. operações que envolvem o barramento 2 da UAL: sinais de controle de 3 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, utilizar 1 bit para codificar os sinais de controle 1 e 2; 3, para os sinais de 3 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, conforme mostra a seguinte figura.

Faz sentido classificar uma microinstrução diagonal em monofásica e polifásica?

    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?

    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?

    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)?

    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 N=0, então atribui-se a TESTNEG o valor 2; senão o valor 1. Analogamente, se 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.?

    Um procedimento mais 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 complementado os bits menos e mais significativos com 0's. Consideremos um computador microprogramdo cujas instruções reservam 3 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 bitas 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?

    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 um pouco a ocupação da micromemória conforme o esquema seguinte
    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)
    RDM <- ((REM))
    MPC <- (MPC) + 1
    18 Acc <- 0 + (RDM)
    MPC <- 0 + 0
    : : :

Quais inicializações são necessárias para executar corretamente um programa no computador microprogramado da seção III.4?

    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?

    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 (versão do segundo semestre de 1997)? Caso negativo, propõe uma solução alternativa.

    O microprograma apresentado na seção III.4.4 não será executado corretamete. Observe que os registradores R1 e RDM são ligados ao mesmo barramento (barramento 2) do processador o que invalida a execução da microoperação utilizada pelo microprograma
    RDM <- (RDM) + (R1)
    Esta microoperação requer o acesso simultâneo do barramento 2 para transferir os operandos a UAL e somá-los.
    Uma solução alternativa correta será substituir o registrador R1 pelo registrador PC, que está ligado no barramento 1, ou seja,
    RDM <- (PC) + (RDM).
    Para isso, 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 14 o end. 0 da Memória é 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
    MPC <- (MPC) + 1 19, 23
    3 PC <- (R1) + 0 3, 10 carregar o multiplicando
    MPC <- (MPC) + 1 19, 23
    4 Acc <- 0 + (Acc) 2, 11 testar o conteúdo do Acc
    MPC <- (MPC) + TESTZERO 20, 23
    5 MPC <- 0 + 8 7, 24 desviar para end. 8
    6 RDM <- (PC) + (RDM) 1, 7, 14 adicionar o multiplicando ao resultado parcial
    MPC <- (MPC) + 1 19, 23
    7 Acc <- (Acc) - 1 2, 5, 8, 11 decrementar o Acc
    MPC <- 0 + 4 8, 24
    8 REM <- 0 + 1 5, 15 transferir o resultado para o end. 1 da memória
    (REM) <- (RDM) 17
    MPC <- (MPC) + 1 19, 23
    9 REM <- 0 + 0 15 ler o conteúdo do end. 0
    RDM <- ((REM)) 16
    MPC <- (MPC) + 1 19, 23
    10 PC <- 0 + (RDM) 7, 10 restaurar o conteúdo do PC
    MPC <- 0 + 0 -

O conteúdo da micromemória ilustrado na Fig. 3.19 é condizente com os microprogramas apresentados na página 107 do livro-texto?

    Não. Compare os sinais de controle na coluna SC de cada microinstrução na página 107 com o conteúdo de cada palavra da micromemória da Fig. 3.19 ...

Solução do exercício 19 do Capítulo.

    Considerando
    1. a organização do item anterior e
    2. o código de operação da instrução igual a 1010,
    devemos utilizar o endereço 11 da micromemória para fazer o mapeamento entre o C.O. e o endereço 66 - o endereço a partir do qual a micromemória está ainda disponível - ou seja, no endereço 11 deve conter a microoperção MPC <- 0 + 66.
    Consideramos ainda que o bit mais significativo do multiplicador é o de sinal, sempre igual a 0, então, um algoritmo para multiplicar dois números binários pode ser descrito pelo seguinte fluxogramo:

    Levando em conta as especificações do processador e o formato das microinstruções, podemos utilizar os seguintes registradores para traduzir o fluxogramo acima no seguinte microprograma:
    Endereço Microoperações Sinais de Controle Comentários
    66 REM <- 0 + 0 15 o end. 0 da Memória é reservado para guardar temporariamente o conteúdo do PC
    MPC <- (MPC) + 1 19,23
    67 RDM <- (PC) + 0 1, 14
    (REM) <- (RDM) 17
    MPC <- (MPC) + 1 19, 23
    68 R2 <- 0 + 1 5, 13 inicializar o contador
    MPC <- (MPC) + 1 19, 23
    69 RDM <- 0 + 0 14 inicializar o resultado
    MPC <- (MPC) + 1 19, 23
    70 PC <- (Acc) + 0 2, 10 carregar o multiplicador
    MPC <- (MPC) + 1 19, 23
    71 R2 <- 0 + (R2) 4, 13 testar o contador
    MPC <- (MPC) + TESTNEG 21, 23
    72 MPC <- 0 + 78 4, 7, 8, 9, 24 desviar para end. 78
    73 RDM <- shift_left(0 + (RDM)) 7, 9, 14 multiplicar o resultado parcial por 2
    MPC <- (MPC) + 1 19, 23
    74 Acc <- 0 + (R1) 3, 10 transferir o conteúdo do R1 para Acc
    MPC <- (MPC) + 1 19, 23
    75 PC <- shift_left((PC) + 0) 1, 9, 11 testar o bit mais significativo do PC
    MPC <- (MPC) + TESTNEG 21, 23
    76 RDM <- (Acc) + (RDM) 2, 7, 14 somar ao resultado parcial o multiplicando
    MPC <- (MPC) + 1 19, 23
    77 MPC <- 0 + 71 4, 8, 9, 10, 24 continuar o laço
    78 Acc <- 0 + (RDM) 7, 11 armazenar o resultado em Acc
    MPC <- (MPC) + 1 19, 23
    79 REM <- 0 + 0 15 ler o conteúdo do end. 0
    RDM <- ((REM)) 16
    MPC <- (MPC) + 1 19, 23
    80 PC <- 0 + (RDM) 7, 10 restaurar o conteúdo do PC
    MPC <- 0 + 0 -
    Observe que por falta de registradores, utilizamos o PC para processar o microprograma. O seu conteúdo foi salvo antes do uso e restaurado antes de terminar o microprograma. Com isso, garante-se que o fluxo de execução do programa não seja alterado.
    Observe ainda que, diferentemente das considerações feitas no Capítulo III do livro-texto, consideramos aqui que os valores TESTNEG e TESTZERO correspondem aos bits de condição gerados pela UAL após cada operação aritmética e lógica.

Last modified: Sun Sep 21 10:54:28 BRA 1997

Sugestões para ting@dca.fee.unicamp.br

Voltar para a página do curso.

Ting