Академический Документы
Профессиональный Документы
Культура Документы
Introduo
C-2 C-3
Implementando controle com mquinas de estados finitos C-6 Implementando a funo de prximo estado com um seqenciador Traduzindo um microprograma para hardware Comentrios finais Exerccios C-24 C-24 C-20 C-16
C.1
Introduo
O controle normalmente possui duas partes: uma parte combinacional sem estados e uma unidade de controle seqencial que manipula seqenciao e o controle principal em um projeto multiciclo. As unidades de controle combinacionais normalmente so usadas para tratar parte do processo de decodificao e controle. O controle da ALU no Captulo 5 um bom exemplo. Uma implementao de ciclo nico como a do Captulo 5 tambm pode usar um controlador combinacional, j que ele no exige mltiplos estados. A Seo C.2 examina a implementao dessas duas unidades combinacionais por meio das tabelas verdade do Captulo 5. Como as unidades de controle seqencial so maiores e em geral mais complexas, h uma variedade maior de tcnicas para implementar uma unidade de controle seqencial. A utilidade dessas tcnicas depende da complexidade do controle, das caractersticas como o nmero mdio de prximos estados para um determinado estado e da tecnologia de implementao. A maneira mais simples de implementar uma funo de controle seqencial com um bloco de lgica que toma como entradas o estado atual e o campo opcode do registrador Instruction e produz como sada os sinais de controle do caminho de dados e o valor do prximo estado. A representao seqencial pode ser um diagrama de estados finitos ou um microprograma. No ltimo caso, cada microinstruo representa um estado. Em uma implementao usando um controle de estados finitos, a funo de prximo estado ser computada com lgica. A Seo C.3 constri essa implementao para uma ROM e uma PLA. Um mtodo alternativo de implementao calcula a funo de prximo estado usando um contador que incrementa o estado atual para determinar o prximo estado. Quando o prximo estado no segue seqencialmente, outra lgica usada para determinar o estado. A Seo C.4 explora esse tipo de implementao e mostra como ele pode ser usado para o controle de estados finitos criado no Captulo 5. Na Seo C.5, mostramos como uma representao de microprograma do controle seqencial traduzida para lgica de controle.
C-3
Apndice C
ELSEVIER
C.2
Nesta seo, mostraremos como a unidade de controle da ALU e a unidade de controle principal para o projeto de clock nico so mapeadas para o nvel de portas lgicas. Com sistemas de CAD modernos, esse processo completamente mecnico. Os exemplos incluem como um sistema de CAD tira vantagem da estrutura da funo de controle, incluindo a presena de dont cares.
Campo Funct F3 X X 0 0 0 0 1 F2 X X 0 0 1 1 0 F1 X X 0 1 0 0 1 F0 X X 0 0 0 1 0
Operation
FIGURA C. 2.1 A tabela verdade para os bits de controle da ALU (chamados Operation) como uma funo de OpALU e do campo de cdigo Function. Essa tabela igual mostrada na Figura 5.13.
C.2
C-4
a. A tabela verdade para Operation2 = 1 (essa tabela corresponde ao bit mais esquerda do campo Operation na Figura C.2.1) OpALU OpALU1 0 X OpALU0 X X F5 X X F4 X X Campos de cdigo Function F3 X X F2 X 0 F1 X X F0 X X
b. A tabela verdade para Operation1 = 1 OpALU OpALU1 1 1 OpALU0 X X F5 X X F4 X X Campos de cdigo Function F3 X 1 F2 X X F1 X X F0 1 X
c. A tabela verdade para Operation0 = 1 FIGURA C. 2.2 As tabelas verdade para as trs linhas de controle da ALU. Apenas as entradas para as quais a sada 1 so mostradas. Os bits em cada campo so numerados da direita para a esquerda comeando com 0; assim, F5 o bit mais significativo do campo Function, e F0 o bit menos significativo. Da mesma forma, os nomes dos sinais correspondentes ao cdigo de operao de 3 bits fornecidos para a ALU so Operation2, Operation1 e Operation0 (com o ltimo sendo o bit menos significativo). Portanto, a tabela verdade anterior mostra as combinaes de entrada para as quais o controle da ALU deve ser 010, 001, 110 ou 111 (as combinaes 011, 100 e 101 no so usadas). Os bits de OpALU so denominados OpALU1 e OpALU0. Os trs valores de sada dependem do campo OpALU de 2 bits e, quando esse campo igual a 10, do cdigo de funo de 6 bits na instruo. De igual modo, quando o campo OpALU no igual a 10, no nos importamos com o valor do cdigo de funo (ele representado por um X). Veja o Apndice B para saber mais sobre dont cares.
Detalhamento: em geral, uma equao lgica e uma representao de tabela verdade de uma funo lgica so equivalentes. (Discutimos isso em mais detalhes no Apndice B.) Entretanto, quando uma tabela verdade apenas especifica as entradas que resultam em sadas no zero, ela pode no descrever completamente a funo lgica. Uma tabela verdade completa indica todas as entradas dont care. Por exemplo, a codificao 11 para OpALU sempre gera um dont care na sada. Portanto, uma tabela verdade completa teria XXX na parte da sada para todas as entradas com 11 no campo OpALU. Esses dont cares nos permitem substituir o campo OpALU 10 e 01 por 1X e X1, respectivamente. Incorporar os dont cares e minimizar a lgica algo complexo e propenso ao erro, e, portanto, mais apropriado para um programa.
OpALU Bloco de controle da ALU OpALU0 OpALU1
F3 F2 F (50) F1
F0
FIGURA C. 2.3 O bloco de controle da ALU gera os trs bits de controle da ALU, com base nos bits do cdigo Function e de OpALU. Essa lgica gerada diretamente da tabela verdade da Figura C.2.2. Considere a sada Operation2, gerada por duas linhas na tabela verdade para Operation2. A segunda linha o AND dos dois termos (F1 = 1 e OpALU1 = 1); a porta AND superior de duas entradas corresponde a esse termo. O outro termo que faz com que Operation2 seja ativado OpALU0. Esses dois termos so combinados com uma porta OR cuja sada Operation2. As sadas Operation0 e Operation1, do mesmo modo, so derivadas da tabela verdade.
C-5
Apndice C
ELSEVIER
Controle
Nome do sinal
formato R
lw
sw
beq
0p5 0p4 Entradas Op3 Op2 Op1 Op0 RegDst ALUSrc MemparaReg EscreveReg Sadas LeMem EscreveMem Branch OpALU1 OpALU0 FIGURA C. 2.4
0 0 0 0 0 0 1 0 0 1 0 0 0 1 0
1 0 0 0 1 1 0 1 1 1 1 0 0 0 0
1 0 1 0 1 1 X 1 X 0 0 1 0 0 0
0 0 0 1 0 0 X 0 X 0 0 0 1 0 1
A funo de controle para a implementao simples de clock nico completamente satisfeita por essa tabela verdade. Essa tabela igual mostrada na Figura 5.22.
C.3
C-6
Sadas formato R Iw sw beq RegDst ALUSrc MemparaReg EscreveReg LeMem EscreveMem Branch OpALU1 OpALU0 FIGURA C. 2.5 A implementao estruturada da funo de controle como descrita pela tabela verdade
na Figura C.2.4. A estrutura, chamada de array lgico programvel (PLA), usa um array de portas AND seguido de um array de portas OR. As entradas para as portas AND so as entradas de funo e seus inversos (as bolhas indicam a inverso de um sinal). As entradas para as portas OR so as sadas das portas AND (ou, como um caso degenerado, as entradas da funo e seus inversos). As sadas das portas OR so as sadas da funo.
C.3
Para implementar o controle como uma mquina de estados finitos, precisamos primeiro atribuir um nmero a cada um dos 10 estados; qualquer estado poderia usar qualquer nmero, mas, para simplificar, usaremos a numerao seqencial, como no Captulo 5. (A Figura C.3.1 uma cpia do diagrama de estados finitos da Figura 5.38, reproduzida para facilidade de acesso.) Com 10 estados, precisaremos de 4 bits para codificar o nmero do estado e chamamos esses bits de estado de S3, S2, S1 e S0. O nmero do estado atual ser armazenado em um registrador de estado, como mostra a Figura C.3.2. Se os estados foram atribudos seqencialmente, o estado i ser codificado usando os bits de estado como o nmero binrio i. Por exemplo, o estado 6 codificado como 0110bin ou S3 = 0, S2 = 1, S1 = 1, S0 = 0, que tambm pode ser escrito como S3 S2 S1 S0 A unidade de controle possui sadas que especificam o prximo estado. Essas so escritas no registrador de estado na transio do clock e se tornam o novo estado no incio do prximo ciclo de clock seguinte transio ativa do clock. Essas sadas so denominadas NS3, NS2, NS1, NS0. Uma vez determinados os nmeros das entradas, os estados e as sadas, sabemos como se parecer a estrutura bsica da unidade de controle, como vemos na Figura C.3.2. O bloco rotulado como lgica de controle na Figura C.3.2 lgica combinacional. Podemos pensar nele como uma grande tabela dando o valor das sadas em funo das entradas. A lgica nesse bloco implementa as duas partes diferentes da mquina de estados finitos. Uma parte a lgica que
C-7
Apndice C
ELSEVIER
Busca de instrues 0 LeMem OrigAALU = 0 IouD = 0 EscreveIR OrigBALU = 01 OpALU = 00 EscrevePC OrigPC = 00
Incio
(Op
W = 'L
') ou
(O
'S p=
6
Execuo 8
(O
W')
(O Concluso do branch
ti p=
(Op = 'J')
'B EQ
po
R)
')
Concluso do jump
(O
(Op = 'LW')
Acesso memria 5
p = 'S W ')
Acesso memria 7 EscreveMem IouD = 1 Concluso do tipo R
3 LeMem IouD = 1
FIGURA C. 3.1
determina a definio das sadas de controle do caminho de dados, que dependem apenas dos bits de estado. A outra parte da lgica de controle implementa a funo de prximo estado; essas equaes determinam os valores dos bits de prximo estado e as outras entradas (o opcode de 6 bits). A Figura C.3.3 mostra as equaes lgicas: a parte superior mostrando as sadas e a parte inferior mostrando a funo de prximo estado. Os valores nessa tabela foram determinados a partir do diagrama de estados na Figura C.3.1. Sempre que uma linha de controle est ativa em um estado, esse estado inserido na segunda coluna da tabela. Da mesma forma, as entradas de prximo estado so feitas sempre que um estado um sucessor para outro. Na Figura C.3.3, usamos a abreviatura stateN para indicar o estado atual N. Portanto, stateN substitudo pelo termo que codifica o nmero de estado N. Usamos NextStateN para representar a definio das sadas de prximo estado para N. Essa sada implementada usando as sadas de prximo estado (NS). Quando NextStateN est ativo, os bits NS[3-0] so definidos de acordo com a verso binria do valor N. claro que, como um determinado bit de prximo estado ativado em mltiplos
C.3
C-8
PCWrite PCWriteCond IorD MemRead MemWrite IRWrite Lgica de controle Sadas MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0
Entradas
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
Registrador de estado
FIGURA C. 3.2 A unidade de controle para MIPS consistir em alguma lgica de controle e em um registrador para conter o estado. O registrador de estado escrito na transio ativa do clock e estvel durante o ciclo de clock.
prximos estados, a equao para cada estado ser o OR dos termos que ativam esse sinal. Da mesma forma, quando usamos um termo como (Op = lw), isso corresponde a um AND das entradas de opcode que especifica a codificao do opcode lw em 6 bits, exatamente como fizemos para a unidade de controle simples na seo anterior deste captulo. simples traduzir as entradas na Figura C.3.3 em equaes lgicas para as sadas.
EQUAES LGICAS PARA AS SADAS DE PRXIMO ESTADO Fornea a equao lgica para o bit de prximo estado menos significativo, NS0. O bit de prximo estado NS0 deve estar ativo sempre que o prximo estado tiver NS0 = 1 na codificao de estado. Isso verdadeiro para NextState1, NextState3, NextState5, NextState7 e NextState9. As entradas para esses estados na Figura C.3.3 fornecem as condies quando esses valores de prximo estado devem estar ativos. A equao para cada um desses prximos estados fornecida a seguir. A primeira equao diz que o prximo estado 1 se o estado atual 0; o estado atual 0 se cada um dos bits de entrada de estado for 0, que o que indica o termo de produto mais direita. NextState1 = State0 = S3 S2 S1 S0 NextState3 = State2 (Op[5-0] = lw) = S3 S2 S1 S0 Op5 Op4 Op3 Op2 Op1 Op0 EXEMPLO RESPOSTA
S0
C-9
Apndice C
ELSEVIER
Sada EscrevePC EscrevePCCond IouD LeMem EscreveMem EscreveIR MemparaReg OrigPC1 OrigPC0 OpALU1 OpALU0 OrigBALU1 OrigBALU0 OrigAALU EscreveReg RegDst NextState0 NextState1 NextState2 NextState3 NextState4 NextState5 NextState6 NextState7 NextState8 NextState9
Estados atuais state0 + state9 state8 state3 + state5 state0 + state3 state5 state0 state4 state9 state8 state6 state8 state1 + state2 state0 + state1 state2 + state6 + state8 state4 + state7 state7 state4 + state5 + state7 + state8 + state9 state0 state1 state2 state3 state2 state1 state6 state1 state1
Op
(Op = lw) + (Op = sw) (Op = lw) (Op = sw) (Op = R-type)
FIGURA C. 3.3 As equaes lgicas para a unidade de controle mostradas de uma forma resumida. Lembre-se de que + significa OR em equaes lgicas. As entradas de estado e as sadas das entradas NextState precisam ser expandidas usando a codificao de estado. Qualquer entrada em branco um dont care.
NextState5 = State 2 (Op[5-0] = sw ) = S3 S2 S1 S0 Op5 Op4 Op3 Op2 Op1 Op0 NextState7 = State6 = S3 S2 S1 S0 NextState9 = State1 (Op[5-0] = jmp) = S3 S2 S1 S0 Op5 Op4 Op3 Op2 Op1 Op0 NS0 a soma lgica de todos esses termos.
Como j vimos, a funo de controle pode ser expressa como uma equao lgica para cada sada. Esse conjunto de equaes lgicas pode ser implementado de duas maneiras: correspondente a uma tabela verdade completa ou correspondente a uma estrutura lgica de dois nveis que permite uma codificao esparsa da tabela verdade. Antes de olharmos essas implementaes, vejamos a tabela verdade para a funo de controle completa. mais simples se dividirmos a funo de controle definida na Figura C.3.3 em duas partes: as sadas de prximo estado, que podem depender de todas as entradas, e as sadas de sinal de controle, que
C.3
C-10
dependem apenas dos bits do estado atual. A Figura C.3.4 mostra as tabelas verdade para todos os sinais de controle do caminho de dados. Como esses sinais realmente dependem apenas dos bits de estado (e no do opcode), cada uma das entradas em uma tabela na Figura C.3.4, na verdade, representa 64 (= 26) entradas, com os 6 bits denominados Op tendo todos os valores possveis; isto , os bits Op so bits dont care para determinar as sadas de controle do caminho de dados. A Figura C.3.5 mostra a tabela verdade para os bits de prximo estado NS[3-0], que dependem dos bits de entrada de estado e dos bits de instruo, que formam o opcode. Detalhamento: existem muitas oportunidades de simplificar a funo de controle observando semelhanas entre dois ou mais sinais e usando a semntica da implementao. Por exemplo, os sinais EscrevePCCond, OrigPC0 e OpALU0 so todos ativados exatamente em um estado, o estado 8. Esses trs sinais de controle podem ser substitudos por um nico sinal.
s3
s2
s1
s0
s3
s2
s1
s0
s3
s2
s1
s0
0 1
0 0
0 0
0 1
0 0
0 1
1 0
1 1
0 0
0 0
0 1
0 1
s3
s2
s1
s0
s3
s2
s1
s0
s3
s2
s1
s0
0 0
0 0
0 1
1 0
0 0
0 0
0 0
0 1
0 0 1
0 1 0
1 1 0
0 0 0
0 0
1 1
0 1
0 1
FIGURA C. 3.4
As tabelas verdade so mostradas para os 16 sinais de controle do caminho de dados que dependem apenas dos bits da entrada de estado atual, que so mostrados para cada tabela. Cada tabela verdade corresponde a 64 entradas: uma para cada valor possvel dos 6 bits Op. Observe que algumas das sadas esto ativas sob quase as mesmas circunstncias. Por exemplo, no caso de EscrevePCCond, OrigPC0 e OpALU0, esses sinais esto ativos apenas no estado 8 (veja b, i e k). Esses trs sinais poderiam ser substitudos por um sinal. H outras oportunidades de reduzir a lgica necessria para implementar a funo de controle tirando proveito de outras semelhanas nas tabelas verdade.
C-11
Apndice C
ELSEVIER
Op5 0 0
Op4 0 0
Op3 0 0
Op2 0 1
Op1 1 0
Op0 0 0
S3 0 0
S2 0 0
S1 0 0
S0 1 1
a. A tabela verdade para a sada NS3, que est ativa quando o prximo estado 8 ou 9. Esse sinal ativado quando o estado atual 1. Op5 0 1 X X Op4 0 0 X X Op3 0 1 X X Op2 0 0 X X Op1 0 1 X X Op0 0 1 X X S3 0 0 0 0 S2 0 0 0 1 S1 0 1 1 1 S0 1 0 1 0
b. A tabela verdade para a sada NS2, que est ativa quando o prximo estado 4, 5, 6 ou 7. Essa situao ocorre quando o estado atual 1, 2, 3 ou 6. Op5 0 1 1 1 X Op4 0 0 0 0 X Op3 0 0 1 0 X Op2 0 0 0 0 X Op1 0 1 1 1 X Op0 0 1 1 1 X S3 0 0 0 0 0 S2 0 0 0 0 1 S1 0 0 0 1 1 S0 1 1 1 0 0
c. A tabela verdade para a sada NS1, que est ativa quando o prximo estado 2, 3, 6 ou 7. O prximo estado 2, 3, 6 ou 7 apenas se o estado atual 1, 2 ou 6. Op5 X 1 1 X 0 Op4 X 0 0 X 0 Op3 X 0 1 X 0 Op2 X 0 0 X 0 Op1 X 1 1 X 1 Op0 X 1 1 X 0 S3 0 0 0 0 0 S2 0 0 0 1 0 S1 0 1 1 1 0 S0 0 0 0 0 1
d. A tabela verdade para a sada NS0, que est ativa quando o prximo estado 1, 3, 5, 7 ou 9. Isso ocorre apenas se o estado atual 0, 1, 2 ou 6. FIGURA C. 3.5 As quatro tabelas verdade para os quatro bits de sada de prximo estado (NS[3-0]). As sadas de prximo estado dependem do valor de Op[5-0], que o campo opcode, e do estado atual, fornecido por S[3-0]. As entradas com X so dont cares. Cada entrada com um dont care corresponde a duas entradas, uma com essa entrada em 0 e uma com essa entrada em 1. Portanto, uma entrada com n dont cares, na verdade, corresponde a 2n entradas da tabela verdade.
C.3
C-12
de memria e o NS0 ser o bit menos significativo. O bit de endereo mais significativo ser fornecido por Op5, que o bit mais significativos da instruo, e o bit de endereo menos significativo ser fornecido por S0. Podemos construir o controle da ROM montando a tabela verdade inteira de uma forma em que cada linha corresponda a uma das 2n combinaes de entrada nicas, e um conjunto de colunas indique que sadas esto ativas para essa combinao de entrada. No temos espao aqui para mostrar todas as 1.024 entradas na tabela verdade. Entretanto, podemos faz-lo separando o controle do caminho de dados e as sadas de prximo estado, j que as sadas de controle do caminho de dados dependem apenas do estado atual. A tabela verdade para as sadas de controle do caminho de dados mostrada na Figura C.3.6. Inclumos somente as codificaes das entradas de estado que esto em uso (ou seja, os valores de 0 a 9 correspondentes aos 10 estados da mquina de estados).
Sadas 0000 EscrevePC EscrevePCCond IouD LeMem EscreveMem EscreveIR MemparaReg OrigPC1 OrigPC0 OpALU1 OpALU0 OrigBALU1 OrigBALU0 OrigAALU EscreveReg RegDst 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0001 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0010 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0011 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
FIGURA C. 3.6 A tabela verdade para as 16 sadas de controle do caminho de dados, que dependem apenas das entradas de estado. Os valores so determinados pela Figura C.3.4. Embora haja 16 valores possveis para o campo de estado de 4 bits, apenas 10 so usados e mostrados aqui. Os 10 valores possveis so mostrados no alto; cada coluna mostra o valor das sadas de controle do caminho de dados para o valor de entrada de estado que aparece no alto da coluna. Por exemplo, quando as entradas de estado so 0011 (estado 3), as sadas de controle do caminho de dados so IouD e LeMem.
A tabela verdade na Figura C.3.6 fornece diretamente o contedo dos 16 bits mais significativos de cada word na ROM. O campo de entrada de 4 bits fornece os quatro bits menos significativos do endereo de cada word, e a coluna fornece o contedo da word nesse endereo. Se mostrssemos uma tabela verdade inteira para os bits de controle do caminho de dados com o nmero de estado e os bits de opcode como entradas, as entradas de opcode seriam todas indiferentes. Quando construmos a ROM, no podemos ter quaisquer dont cares, pois os endereos na ROM precisam estar completos. Assim, as mesmas sadas de controle do caminho de dados ocorrero muitas vezes na ROM, j que essa parte da ROM a mesma sempre que os bits de estado so idnticos, independente do valor das entradas de opcode.
C-13
Apndice C
ELSEVIER
ENTRADAS DO CONTROLE NA ROM EXEMPLO Para quais endereos de ROM o bit correspondente a EscrevePC, o bit mais significativo da word de controle, ser 1? EscrevePC est ativo nos estados 0 e 9; isso corresponde aos endereos com os 4 bits menos significativos sendo 0000 ou 1001. O bit estar ativo na word de memria independente das entradas Op[5-0], de modo que os endereos com o bit ativo so 000000000, 0000001001, 0000010000, 0000011001, ..., 1111110000, 1111111001. A forma geral disso XXXXXX0000 ou XXXXXX1001, onde XXXXXX qualquer combinao de bits e corresponde ao opcode de 6 bits do qual essa sada no depende.
RESPOSTA
Mostraremos o contedo inteiro da ROM em duas partes para facilitar a compreenso. A Figura C.3.7 mostra os 16 bits mais significativos da word de controle; isso vem diretamente da Figura C.3.6. Essas sadas de controle do caminho de dados dependem apenas das entradas de estado, e esse conjunto de words seria duplicado 64 vezes na ROM inteira, como discutimos anteriormente. Como as entradas correspondentes aos valores de entrada 1010 a 1111 no so usadas, no nos importamos com o que elas contm. A Figura C.3.8 mostra os 4 bits menos significativos da word de controle correspondentes s sadas de prximo estado. A ltima coluna da tabela na Figura C.3.8 corresponde a todos os valores possveis do opcode que no coincidem com os opcodes especificados. No estado 0, o prximo estado sempre o estado 1, j que a instruo ainda est sendo buscada. Aps o estado 1, o campo opcode precisa ser vlido. As tabelas indicam isso pelas entradas marcadas como ilegais; veremos como lidar com esses opcodes ilegais na Seo 5.6. Essa representao como duas tabelas separadas no s uma maneira mais compacta de mostrar o contedo da ROM, mas tambm um meio mais eficiente de implementar a ROM. A maioria das sadas (16 de 20 bits) depende apenas de 4 das 10 entradas. O nmero de bits no total quando o controle implementado como duas ROMs separadas 24 16 + 210 4 = 256 + 4096 = 4,3Kbits, que aproximadamente um quinto do tamanho de uma nica ROM, que requer 210 20 = 20 Kbits. H algum overhead associado com qualquer bloco de lgica estruturada, mas, nesse caso, o overhead adicional de uma ROM extra seria muito menor do que as economias advindas da diviso da ROM nica.
Bits 19-4 da word 1001010000001000 0000000000011000 0000000000010100 0011000000000000 0000001000000010 0010100000000000 0000000001000100 0000000000000011 0100000010100100 1000000100000000
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
FIGURA C. 3.7 O contedo dos 16 bits mais significativos da ROM dependem apenas das entradas de estado. Esses valores so iguais aos da Figura C.3.6, simplesmente girados em 90o. Esse conjunto de words de controle seria duplicado 64 vezes para todo valor possvel dos 6 bits mais significativos do endereo.
C.3
C-14
Op[5-0] Estado atual S[30] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 FIGURA C. 3.8 000000 (formato R) 0001 0110 XXXX 0100 0000 0000 0111 0000 0000 0000 000010 (jmp) 0001 1001 XXXX 0100 0000 0000 0111 0000 0000 0000 000100 (beq) 0001 1000 XXXX 0100 0000 0000 0111 0000 0000 0000 100011 (lw) 0001 0010 0011 0100 0000 0000 0111 0000 0000 0000 101011 (sw) 0001 0010 0101 0100 0000 0000 0111 0000 0000 0000 Qualquer outro valor 0001 ilegal ilegal ilegal ilegal ilegal ilegal ilegal ilegal ilegal
Esta tabela contm os 4 bits menos significativos da word de controle (as sadas de NS), que dependem das entradas de estado, S[3-0], e do opcode, Op[5-0], que correspondem ao opcode da instruo. Esses valores podem ser determinados a partir da Figura C.3.5. O nome de opcode mostrado sob a codificao no cabealho. Os 4 bits da word de controle cujo endereo dado pelos bits de estado atual e os bits Op so mostrados em cada entrada. Por exemplo, quando os bits de entrada de estado so 0000, a sada sempre 0001, independente das outras entradas; quando o estado 2, o prximo estado dont care para trs das entradas, 3 para lw e 5 para sw. Juntamente com as entradas na Figura C.3.7, essa tabela especifica o contedo da ROM da unidade de controle. Por exemplo, a word no endereo 1000110001 obtida encontrando-se os 16 bits mais significativos na tabela da Figura C.3.7 usando apenas os bits de entrada de estado (0001) e concatenando os 4 bits menos significativos encontrados usando o endereo inteiro (0001 para localizar a linha e 100011 para localizar a coluna). A entrada da Figura C.3.7 produz 0000000000011000, enquanto a entrada apropriada na tabela imediatamente acima 0010. Portanto, a word de controle no endereo 1000110001 00000000000110000010. A coluna Qualquer outro valor se aplica apenas quando os bits de Op no correspondem a um dos opcodes especificados.
Embora essa codificao de ROM da funo de controle seja simples, ela extravagante, mesmo quando dividida em duas partes. Por exemplo, os valores das entradas do registrador Instruction normalmente no so necessrios para determinar o prximo estado. Portanto, a ROM de prximo estado possui muitas entradas duplicadas ou dont cares. Considere o caso quando a mquina est no estado 0: existem 26 entradas na ROM (j que o campo opcode pode ter qualquer valor), e essas entradas tero todas o mesmo contedo (a saber, a word de controle 0001). A razo por que tanta ROM desperdiada que a ROM implementa a tabela verdade completa, fornecendo a oportunidade de ter uma sada diferente para cada combinao de entradas. Entretanto, a maioria das combinaes das entradas nunca ocorre ou redundante!
C-15
Apndice C
ELSEVIER
Figura C. 3.9 Essa PLA implementa a lgica da funo de controle para a implementao multiciclo. As entradas para o controle aparecem esquerda e as sadas, direita. A metade superior da figura o plano AND que calcula todos os mintermos. Os mintermos so transportados para o plano OR nas linhas verticais. Cada ponto em cinza corresponde a um sinal que compe o mintermo transportado nessa linha. Os termos de soma so calculados desses mintermos, com cada ponto cinza representando a presena do mintermo que intercepta esse termo de soma. Cada sada consiste em um nico termo de soma.
Como podemos ver pela PLA na Figura C.3.9, existem 17 mintermos nicos 10 que dependem apenas do estado atual e 7 outros que dependem de uma combinao do campo Op e os bits de estado atual. O tamanho total da PLA proporcional a (#entradas #termos de produto) + (#sadas #termos de produto), como podemos ver simbolicamente na figura. Isso significa que o tamanho total da PLA na Figura C.3.9 proporcional a (10 17) + (20 17) = 510. Por comparao, o tamanho de uma nica ROM proporcional a 20Kbits e mesmo a ROM de duas partes possui um total de 4,3Kbits. Como o tamanho de uma clula de PLA ser apenas ligeiramente maior do que o tamanho de um bit em uma ROM, uma PLA ser uma implementao muito mais eficiente para essa unidade de controle. claro que, assim como dividimos a ROM em duas, podemos dividir a PLA em duas PLAs: uma com 4 entradas e 10 mintermos que gera as 16 sadas de controle, e uma com 10 entradas e 7 mintermos que gera as 4 sadas de prximo estado. A primeira PLA teria um tamanho proporcional a (4 10) + (10 16) = 200, e a segunda PLA teria um tamanho proporcional a (10 7) + (4 7) = 98. Isso
C.4
C-16
produziria um tamanho total proporcional a 298 clulas de PLA, cerca de 55% do tamanho de uma PLA nica. Essas duas PLAs sero consideravelmente menores do que uma implementao usando duas ROMs. Para obter mais detalhes sobre PLAs e sua implementao, bem como as referncias para livros sobre projeto de lgica, veja o Apndice B.
C.4
Vamos olhar cuidadosamente a unidade de controle construda na ltima seo. Se voc examinar as ROMs que implementam o controle nas Figuras C.3.7 e C.3.8, poder ver que muito da lgica usada para especificar a funo de prximo estado. Na verdade, para a implementao usando duas ROMs separadas, 4.096 dos 4.368bits (94%) correspondem funo de prximo estado! Alm disso, imagine como seria a lgica de controle se o conjunto de instrues tivesse muito mais tipos de instruo diferentes, alguns dos quais exigindo muitos clocks para serem implementados. Haveria muito mais estados na mquina de estados finitos. Em alguns estados, poderamos estar desviando para um nmero maior de estados diferentes dependendo do tipo de instruo (como fizemos no estado 1 da mquina de estados finitos na Figura C.3.1). Entretanto, muitos dos estados continuariam de uma maneira seqencial, exatamente como os estados 3 e 4 na Figura C.3.1. Por exemplo, se inclussemos ponto flutuante, veramos uma seqncia sucessiva de muitos estados que implementam uma instruo de ponto flutuante multiciclo. Como alternativa, considere como o controle pode se parecer para uma mquina que pode ter mltiplos operandos de memria por instruo. Ela exigiria que muito mais estados buscassem mltiplos operandos de memria. O resultado disso seria que a lgica de controle ser dominada pela codificao da funo de prximo estado. Alm disso, muito da lgica ser dedicada a seqncias de estados com apenas um caminho entre eles que se parecem com os estados 2 a 4 na Figura C.3.1. Com mais instrues, essas seqncias consistiro em estados numerados muito mais seqencialmente do que para nosso subconjunto simples. Para codificarmos de maneira eficiente essas funes de controle mais complexas, podemos usar uma unidade de controle que tenha um contador para fornecer o prximo estado seqencial. Esse contador elimina a necessidade de codificar a funo de prximo estado explicitamente na unidade de controle. Como mostra a Figura C.4.1, um somador usado para incrementar o estado, transformando-o essencialmente em um contador. O estado incrementado sempre o estado que se segue na ordem numrica. Todavia, a mquina de estados finitos algumas vezes desvia. Por exemplo, no estado 1 da mquina de estados finitos (veja a Figura C.3.1), existem quatro prximos estados possveis, sendo que apenas um deles o prximo estado seqencial. Desse modo, precisamos ser capazes de escolher entre o estado incrementado e um novo estado com base nas entradas do registrador Instruction e no estado atual. Cada word de controle incluir linhas de controle que determinaro como o prximo estado escolhido. fcil implementar a parte do sinal da sada de controle da word de controle, j que, se usarmos os mesmos nmeros de estado, essa parte da word de controle se parecer exatamente com o controle da ROM mostrado na Figura C.3.7. No entanto, o mtodo para selecionar o prximo estado difere da funo de prximo estado na mquina de estados finitos. Com um contador explcito fornecendo o prximo estado seqencial, a lgica da unidade de controle s precisa especificar como escolher o estado quando ele no o estado seqencialmente seguinte. H dois mtodos para fazer isso. O primeiro um mtodo que j vimos: A unidade de controle codifica explicitamente a funo de prximo estado. A diferena que a unidade de controle s precisa definir as linhas de prximo estado quando o prximo estado designado no o estado que o contador indica. Se o nmero de estados for grande e a funo de prximo estado que precisamos codificar estiver principalmente vazia, isso pode no ser uma boa escolha, j que a unidade de controle resultante ter muito espao vazio ou redundante. Um mtodo alternativo usar lgica externa separada para especificar o prximo estado quando o contador no especifica o estado. Muitas unidades de controle, especialmente aquelas que implementam grandes conjuntos de instrues, usam esse mtodo, e iremos focalizar a especificao externa do controle.
C-17
Apndice C
ELSEVIER
Sadas
CtlEnd
Campo opcode do registrador Instruction FIGURA C. 4.1 A unidade de controle usando um contador explcito para calcular o prximo estado. Nessa unidade de controle, o prximo estado calculado usando um contador (pelo menos em alguns estados). Por comparao, a Figura C.3.2 codifica o prximo estado na lgica de controle para todos os estados. Nessa unidade de controle, os sinais rotulados como CtlEnd controlam como o prximo estado determinado.
Embora o prximo estado no seqencial venha de uma tabela externa, a unidade de controle precisa especificar quando isso deve ocorrer e como encontrar esse prximo estado. H dois tipos de desvio que precisamos implementar na lgica de seleo de endereo. Primeiro, precisamos ser capazes de saltar para um de vrios estados baseado na parte do opcode do registrador Instruction. Essa operao, chamada despacho, normalmente implementada usando um conjunto de ROMs ou PLAs especiais includas como parte da lgica de seleo de endereo. Um conjunto adicional de sadas de controle, que chamamos CtlEnd, indica quando um despacho deve ser feito. Olhando o diagrama de estados finitos (Figura C.3.1), vemos que existem dois estados em que fazemos um desvio baseado em uma parte do opcode. Portanto, precisaremos de duas pequenas tabelas de despacho. (Como alternativa, tambm poderamos usar uma nica tabela de despacho e usar os bits de controle que selecionam a tabela como bits de endereo que escolhem de que parte da tabela de despacho selecionar o endereo.) O segundo tipo de desvio que precisamos implementar consiste em desviar de volta para o estado 0, que inicia a execuo da prxima instruo MIPS. Portanto, existem quatro maneiras possveis de escolher o prximo estado (trs tipos de desvios e incrementar o nmero do estado atual), que podem ser codificadas em 2 bits. Vamos considerar que a codificao a seguinte:
Valor de CtlEnd 0 1 2 3 Ao Define o estado em 0 Despacha com ROM 1 Despacha com ROM 2 Usa o estado incrementado
Op[50]
C.4
C-18
PLA ou ROM
ROM de despacho 2
Se usarmos essa codificao, a lgica de seleo de endereo para essa unidade de controle pode ser implementada como mostra a Figura C.4.2. Para completar a unidade de controle, s precisamos especificar o contedo das ROMs de despacho e os valores das linhas de controle de endereo para cada estado. J especificamos a parte do controle do caminho de dados da word de controle usando o contedo da ROM da Figura C.3.7 (ou as partes correspondentes da PLA na Figura C.3.9). O contador de prximo estado e as ROMs de despacho substituem a parte da unidade de controle que estava calculando o prximo estado, mostrada na Figura C.3.8. Como estamos apenas implementando uma parte do conjunto de instrues, as ROMs de despacho estaro primordialmente vazias. A Figura C.4.3 mostra as entradas que precisam ser atribudas para esse subconjunto. A Seo 5.6 do Captulo 5 discute o que fazer com as entradas nas ROMs de despacho que no correspondem a qualquer instruo.
ROM de despacho 1 Op 000000 000010 000100 100011 101011 Nome do opcode formato R jmp beq lw sw ROM de despacho 2 Op 100011 101011 FIGURA C. 4.3 Nome do opcode lw sw Valor 0011 0101
6
Op
Valor 0110 1001 1000 0010 0010
Cada uma das ROMs de despacho possui 2 = 64 entradas com 4 bits de largura, j que esse o nmero de bits na codificao de estado. Essa figura mostra as entradas na ROM de interesse para esse subconjunto. A primeira coluna de cada tabela indica o valor de Op, que o endereo usado para acessar a ROM de despacho. A segunda coluna mostra o nome simblico do opcode. A terceira coluna indica o valor nesse endereo na ROM.
C-19
Apndice C
ELSEVIER
Agora podemos determinar a definio das linhas de seleo de endereo (CtlEnd) em cada word de controle. A tabela na Figura C.4.4 mostra como o controle de endereo precisa ser definido para cada estado. Essas informaes sero usadas para especificar a definio do campo CtlEnd na word de controle associada com esse estado.
Nmero do estado 0 1 2 3 4 5 6 7 8 9 FIGURA C. 4.4 Ao do controle de endereo Usa o estado incrementado Usa a ROM de despacho 1 Usa a ROM de despacho 2 Usa o estado incrementado Substitui o nmero do estado por 0 Substitui o nmero do estado por 0 Usa o estado incrementado Substitui o nmero do estado por 0 Substitui o nmero do estado por 0 Substitui o nmero do estado por 0 Valor de CtlEnd 3 1 2 3 0 0 3 0 0 0
Os valores das linhas de controle de endereo so definidos na word de controle que corresponde a cada estado.
O contedo da ROM de controle inteira mostrado na Figura C.4.5. O armazenamento total necessrio para o controle muito pequeno. Existem 10 words de controle, cada uma com 18 bits de largura, para um total de 180 bits. Alm disso, as duas tabelas de despacho tm 4 bits de largura e cada uma possui 64 entradas, para um total de 512 bits adicionais. Esse total de 692 bits melhor do que a implementao que usa duas ROMs com a funo de prximo estado nas ROMs (que exige 4,3Kbits).
Nmero do estado 0 1 2 3 4 5 6 7 8 9 Bits de word de controle 17-2 1001010000001000 0000000000011000 0000000000010100 0011000000000000 0000001000000010 0010100000000000 0000000001000100 0000000000000011 0100000010100100 1000000100000000 Bits de word de controle 1-0 11 01 10 11 00 00 11 00 00 00
FIGURA C. 4.5 O contedo da memria de controle para uma implementao usando um contador expl-
cito. A primeira coluna mostra o estado, a segunda mostra os bits de controle do caminho de dados e a ltima coluna mostra os bits de controle de endereo em cada word de controle. Os bits 17-2 so idnticos aos da Figura C.3.7.
Naturalmente, as tabelas de despacho so esparsas e poderia ser implementada mais eficientemente com duas pequenas PLAs. A ROM de controle tambm poderia ser substituda por uma PLA.
C.4
C-20
res, para reduzir a quantidade de hardware necessria. O sucesso desse processo depende de quantas entradas existem na tabela verdade e de como esto relacionadas. Por exemplo, nesse subconjunto, apenas os opcodes lw e sw possuem um valor ativo para o sinal Op5; portanto, podemos substituir as duas entradas da tabela verdade que testam se a entrada lw ou sw por um teste simples nesse bit; da mesma forma, podemos eliminar vrios bits usados para localizar lw e sw na primeira ROM de despacho. Evidentemente, se o espao do opcode fosse mais denso, as oportunidades para essa otimizao seriam mais difceis de localizar. Todavia, escolhendo os opcodes, o arquiteto pode fornecer oportunidades adicionais de escolher opcodes relacionados para instrues que provavelmente compartilham estados no controle. Um tipo diferente de otimizao pode ser feito atribuindo os nmeros de estado em uma implementao de estados finitos ou microcdigo para minimizar a lgica. Essa otimizao, chamada atribuio de estados, tenta escolher os nmeros de estado de modo que as equaes lgicas resultantes contenham mais redundncia e, assim, possam ser simplificadas. Vamos considerar primeiro o caso de uma mquina de estados finitos com um controle de prximo estado codificado, j que ela permite que os estados sejam atribudos arbitrariamente. Por exemplo, observe que na mquina de estados finitos o sinal EscreveReg est ativo apenas nos estados 4 e 7. Se codificssemos esses estados como 8 e 9, em vez de 4 e 7, poderamos reescrever a equao para EscreveReg simplesmente como um teste no bit S3 (que s est ligado para os estados 8 e 9). Essa renumerao permite combinar as duas entradas da tabela verdade na parte (o) da Figura C.3.4 e substitu-las por uma nica entrada, eliminando um termo na unidade de controle. claro que teramos de renumerar os estados existentes 8 e 9, talvez como 4 e 7.
Sadas
EscrevePC EscrevePCCond IouD LeMem EscreveMem EscreveIR EscreveB MemparaReg OrigPC OpALU OrigBALU OrigAALU EscreveReg RegDst CtlEnd
Caminho de dados
Campo opcode do registrador Instruction FIGURA C. 4.6 A unidade de controle como um microcdigo. O uso do termo micro serve para distinguir entre o contador de programa no caminho de dados e o contador de microprograma, e entre a memria de microcdigo e a memria de instrues.
Op[50]
C-21
Apndice C
ELSEVIER
A mesma otimizao pode ser aplicada em uma implementao que usa um contador de programa explcito, embora estejamos mais restritos. Como o nmero do prximo estado freqentemente calculado incrementando o nmero do estado atual, no podemos atribuir arbitrariamente os estados. No entanto, se mantivermos os estados em que o estado incrementado usado como o prximo estado na mesma ordem, poderemos reatribuir os estados consecutivos como um bloco. Em uma implementao com um contador de prximo estado explcito, a atribuio de estado pode permitir simplificar o contedo das ROMs de despacho. Se olharmos novamente a unidade de controle na Figura C.4.1, surpreendentemente ela se parece muito com um computador. A ROM ou a PLA pode ser imaginada como instrues buscadas na memria para o caminho de dados. O estado pode ser imaginado como um endereo de instruo. Da a origem do nome microcdigo ou controle microprogramado. As words de controle so consideradas como microinstrues que controlam o caminho de dados, e o registrador State chamado de contador de microprograma. A Figura C.4.6 mostra uma viso da unidade de controle como um microcdigo. A prxima seo descreve como mapear de um microprograma para o microcdigo.
C.5
Para traduzir o microprograma da Seo 5.5 para hardware real, precisamos especificar como cada campo se traduz em sinais de controle. Podemos implementar o microprograma com controle de estados finitos ou uma implementao de microcdigo com um seqenciador explcito. Se escolhermos uma mquina de estados finitos, precisaremos construir a funo de prximo estado a partir do microprograma. Uma vez que essa funo seja conhecida, podemos mapear um conjunto de entradas da tabela verdade para as sadas de prximo estado. Nesta seo, veremos como traduzir o microprograma considerando que o prximo estado seja especificado por um seqenciador. Das tabelas verdade que construiremos, seria simples construir a funo de prximo estado para uma mquina de estados finitos. Considerando um seqenciador explcito, precisamos realizar duas tarefas adicionais para traduzir o microprograma: atribuir endereos s microinstrues e preencher o contedo das ROMs de despacho. Esse processo igual ao processo de traduzir um programa em assembly para instrues de mquina: Os campos em assembly ou a instruo do microprograma so traduzidos e os rtulos das instrues precisam ser convertidos em endereos. A Figura C.5.1 mostra os diversos valores para cada campo de microinstruo que controla o caminho de dados e como esses campos so codificados como sinais de controle. Se o campo correspondente a um sinal que afeta uma unidade com estado (ou seja, Controle da Memria, Controle dos Registradores, Controle da ALU ou Controle de escrita no PC) estiver vazio, ento, nenhum sinal de controle deve estar ativo. Se um campo correspondente a um sinal de controle de multiplexador ou ao controle de operao da ALU (ou seja, OpALU, SRC1 ou SRC2) estiver vazio, a sada no utilizada, de modo que os sinais associados podem ser definidos como dont cares. O campo Seqenciamento pode ter quatro valores: Fetch (significando ir para o estado Fetch), Dispatch 1, Dispatch 2 e Seq. Esses quatro valores so codificados para definir o controle de endereo de 2 bits exatamente como foram na Figura C.4.4: Fetch = 0, Dispatch 1 = 1, Dispatch 2 = 2, Seq = 3. Finalmente, precisamos especificar o contedo das tabelas de despacho para relacionarem as entradas de despacho do campo Seqenciamento aos rtulos simblicos no microprograma. Usamos as mesmas tabelas de despacho que usamos anteriormente na Figura C.4.3. Um montador de microcdigo usaria a codificao do campo Seqenciamento, o contedo das tabelas de despacho simblicas na Figura C.5.2, a especificao na Figura C.5.1 e o microprograma real na Figura 5.7.3 para gerar as microinstrues.
C.5
C-22
Sinais ativos OpALU = 00 OpALU = 01 OpALU = 10 OrigAALU = 0 OrigAALU = 1 OrigBALU = 00 OrigBALU = 01 OrigBALU = 10 OrigBALU = 11
Comentrio Faz com que a ALU realize uma soma. Faz com que a ALU realize uma subtrao; isso implementa a comparao para desvios. Usa o cdigo de funo da instruo para determinar o controle da ALU. Usa o PC como a primeira entrada da ALU. O registrador A a primeira entrada da ALU. O registrador B a segunda entrada da ALU. Usa 4 como a segunda entrada da ALU. Usa a sada da unidade de extenso de sinal como a segunda entrada da ALU. Usa a sada da unidade de deslocamento em dois bits como a segunda entrada da ALU. L dois registradores usando os campos rs e rt do IR como os nmeros de registrador e colocando os dados nos registradores A e B.
SRC1
PC A
SRC2
B 4 Extend Extshft
Read Write ALU EscreveReg, RegDst = 1, MemparaReg = 0 EscreveReg, RegDst = 0, MemparaReg = 1 LeMem, IouD = 0, EscreveIR LeMem, IouD = 1 EscreveMem, IouD = 1 OrigPC = 00, EscrevePC OrigPC = 01, EscrevePCCond OrigPC = 10, EscrevePC CtlEnd = 11 CtlEnd = 00 CtlEnd = 01 CtlEnd = 10
Escreve num registrador usando o campo rd do IR como o nmero de registrador e o contedo de SadaALU como os dados. Escreve num registrador usando o campo rt do IR como o nmero de registrador e o contedo de MDR como os dados. L a memria usando o PC como o endereo; escreve o resultado no IR (e no MDR). L a memria usando SadaALU como o endereo; escreve o resultado no MDR. Escreve na memria usando SadaALU como o endereo e o contedo de B como os dados. Escreve a sada da ALU no PC. Se a sada Zero da ALU estiver ativa, escreve o PC com o contedo do registrador SadaALU. Escreve o PC com o endereo de jump da instruo. Escolhe a prxima microinstruo seqencialmente. Vai para a primeira microinstruo para iniciar uma nova instruo. Despacha usando a ROM 1. Despacha usando a ROM 2.
Write MDR
Controle da Memria
Read PC
Read ALU Write ALU Controle de Escrita no PC ALU ALUOut-cond jump address Seqenciamento Seq Fetch Dispatch 1 Dispatch 2
FIGURA C. 5.1 Cada campo de microcdigo traduzido para um conjunto dos sinais de controle a serem definidos. Essa tabela especifica um valor para cada um dos campos que foram especificados originalmente na Figura 5.7.3. Esses 22 valores diferentes dos campos especificam todas as combinaes necessrias das 18 linhas de controle. As linhas de controle no definidas que correspondem a aes so 0 por padro. As linhas de controle de multiplexador so definidas como 0 se a sada importa. Se uma linha de controle de multiplexador no estiver explicitamente definida, sua sada dont care e no usada.
Como o microprograma uma representao abstrata do controle, h uma grande flexibilidade em como o microprograma traduzido. Por exemplo, a entrada atribuda a muitas microinstrues pode ser escolhida arbitrariamente; as nicas restries so as impostas pelo fato de que certas microinstrues precisam ocorrer em ordem seqencial (de modo que incrementar o registrador State gere o endereo da prxima instruo). Portanto, o montador de microcdigo pode reduzir a complexidade do controle atribuindo as microinstrues inteligentemente.
C-23
Apndice C
ELSEVIER
Tabela de despacho de microcdigo 1 Campo opcode 000000 000010 000100 100011 101011 Nome do opcode formato R jmp beq lw sw Valor R-format1 JUMP1 BEQ1 Mem1 Mem1
Tabela de despacho de microcdigo 2 Campo opcode 100011 101011 Nome do opcode lw sw Valor LW2 SW2
FIGURA C. 5.2 As duas ROMs de despacho de microcdigo mostrando o contedo em forma simblica usando as tabelas no microprograma.
C.6
Comentrios finais
C-24
nho de dados e pode exigir menos ciclos de clock do que um microprograma composto de microinstrues restritas que no podem realizar qualquer combinao de operaes em uma nica microinstruo. Entretanto, se a capacidade total da word de microprograma mais larga no for usada intensamente, muito do armazenamento de controle ser desperdiado; alm disso, a mquina pode se tornar menor e mais rpida restringindo a capacidade de microinstruo. O mtodo mais estreito, mas em geral mais longo, chamado de microcdigo vertical, enquanto o mtodo largo mas curto chamado de microcdigo horizontal. Devemos salientar que os termos microcdigo vertical e microcdigo horizontal no possuem uma definio universal os projetistas do 8086 consideravam sua microinstruo de 21 bits mais horizontal do que outros computadores de chip nico da poca. Os termos relacionados maximamente codificado e minimamente codificado provavelmente so melhores do que vertical e horizontal.
C.6
Comentrios finais
Iniciamos este apndice vendo como traduzir um diagrama de estados finitos para uma implementao usando uma mquina de estados finitos. Em seguida, examinamos os seqenciadores explcitos que usam uma tcnica diferente para realizar a funo de prximo estado. Embora grandes microprogramas normalmente sejam destinados a implementaes usando esse mtodo de prximo estado explcito, tambm podemos implementar um microprograma com uma mquina de estados finitos. Como vimos, as implementaes em ROM e PLA das funes lgicas so possveis. As vantagens do prximo estado explcito versus codificado e da implementao em ROM versus PLA so resumidas abaixo.
Quer o controle seja representado como um diagrama de estados finitos ou como um microprograma, a traduo para uma implementao de controle de hardware semelhante. Cada estado ou microinstruo ativa um conjunto de sadas de controle e especifica como escolher o prximo estado. A funo de prximo estado pode ser implementada codificando-a em uma mquina de estados finitos ou usando um seqenciador explcito. O seqenciador explcito mais eficiente se o nmero de estados for grande e houver muitas seqncias de estados consecutivos sem desvio. A lgica de controle pode ser implementada com ROMs ou PLAs (ou mesmo um mix). As PLAs so mais eficientes, a menos que a funo de controle seja muito densa. As ROMs podem ser apropriadas se o controle for armazenado em uma memria separada, e no dentro do mesmo chip que o caminho de dados.
Colocando em
perspectiva
C.7
Exerccios
C.1 [10] <C.2> Em vez de usar 4 bits de estado para implementar a mquina de estados finitos da
Figura C.3.1, use 9 bits de estado, cada um dos quais sendo um 1 apenas se a mquina de estados finitos estiver nesse estado especfico (por exemplo, S1 1 no estado 1, S2 1 no estado 2 etc.). Redesenhe a PLA (Figura C.3.9).
C.2 [5] <C.3> Quantos termos de produto so necessrios em uma PLA que implementa o caminho de dados de ciclo nico para jal, considerando as adies de controle descritas no Exerccio
5.20 em
Aprofundando o aprendizado?
C-25
Apndice C
ELSEVIER
C.3 [5] <C.3> Quantos termos de produto so necessrios em uma PLA que implemente o caminho de dados de ciclo nico e controle para addiu, considerando que as adies de controle que voc
Aprofundando o aprendizado?
C.4 [10] <C.3> Determine o nmero de termos de produto em uma PLA que implemente a mquina de estados finitos para jal construda no Exerccio 5.55 em Aprofundando o aprendizado?
A maneira mais fcil de fazer isso construir as tabelas verdade para qualquer nova sada ou qualquer sada afetada pela adio.
C.5 [10] <C.3> Determine o nmero de termos de produto em uma PLA que implemente a mquina de estados finitos para addi no Exerccio 5.19 em Aprofundando o aprendizado? A maneira mais fcil de fazer isso construir as adies s tabelas verdade para addi. C.6 [20] <C.4> Implemente a mquina de estados finitos do Exerccio 5.19 na seo
Aprofundando o aprendizado usando um contador explcito para determinar o prximo estado. Preencha as novas entradas para as adies Figura C.4.5. Alm disso, acrescente quaisquer entradas necessrias s ROMs de despacho da Figura C.5.2. multiciclo do Captulo 5 considerando que a funo de prximo estado implementada com um contador. Implemente as tabelas de despacho da Figura C.5.2 usando duas PLAs, e o contedo da unidade de controle principal na Figura C.4.5 usando outra PLA. Como o tamanho total dessa soluo se compara com a soluo de uma nica PLA com o prximo estado codificado? E se as PLAs principais para os dois mtodos forem divididas em duas PLAs separadas decompondo o prximo estado ou os sinais de seleo de endereo?
C.7 [15] <C.3C.6> Determine o tamanho das PLAs necessrias para implementar a mquina