Anais do XVI Encontro de Iniciação Científica e Pós-Graduação do ITA – XVI ENCITA / 2010
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, 20 de outubro de 2010
MINIMIZAÇÃO DE ESTADOS PARA MÁQUINAS DE
ESTADO FINITO ASSÍNCRONO
Rômulo Magalhães Brasil
Divisão de Eletrônica Aplicada do Instituto Tecnológico de Aeronáutica – I TA – IEEA
Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – SP – Brasil
Bolsista PIBIC-CNPq
Email: Rô[email protected]
Duarte Lopes de Oliveira
Divisão de Eletrônica Aplicada do Instituto Tecnológico de Aeronáutica – I TA – IEEA
Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – SP – Brasil
Email: [email protected]
Resumo. Projeto de sistemas digitais síncronos VLSI (Very Large Scale Integration) na tecnologia DSM (Deep-
SubMicron) que permite 109 transistores tem no sinal de relógio o seu maior problema. Uma interessante alternativa
para o projeto VLSI_DSM é o paradigma assíncrono. Eles operam por eventos, portanto não necessitam de um sinal
de relógio. Máquinas de estado finito assíncrono (MEFA) é um importante componente dos sistemas digitais
assíncronos. Uma interessante MEFA é as máquinas modo rajada estendido (MEFA_MRE) (extended burst-mode
machine). Ela é implementada na arquitetura de Huffman estendida (saída realimentada), usando a ferramenta 3D.
Uma etapa na síntese lógica das MEFA_MRE é a minimização de estados. Este artigo mostra que a álgebra das
partições pode ser usada para minimizar as MEFA_MRE, na arquitetura clássica de Huffman.
Palavras chave: lógica assíncrona, risco, especificação modo rajada, máquinas de estado finito, minimização de estados
1. Introdução
Circuitos assíncronos são circuitos seqüenciais que não necessitam de sinal externo de relógio (Clock) para
coordenar suas operações internas (Myers, 2001). Circuitos assíncronos foram usados nos primeiros computadores, e os
estudos nessa área tiveram grande crescimento na década de 60. No entanto, na década de 70 o interesse nesse circuito
caiu devido, principalmente, a popularidade dos circuitos síncronos, que precisam de um sinal de clock para gerenciar
suas atividades (McCluskey, 1986; Sparso, et al., 2001). A popularidade dos circuitos síncronos tem como principal
razão a facilidade com que os mesmos podem ser projetados, quando comparados com os circuitos assíncronos. A
única regra que os projetistas tinham de seguir era garantir a estabilidade do circuito, dado certo intervalo de tempo,
antes e depois da mudança no sinal de clock (tempos de set-up e hold).
Todavia, com a evolução da tecnologia VLSI (deep-submicron – DSM – 109 transistores), as deficiências dos
circuitos síncronos começaram a emergir. Os problemas mais importantes são defasagem de clock (clock skew),
dissipação de potência, rede de distribuição do clock e interação com o ambiente (Sparso, et al., 2001). Devido aos
problemas crescentes da síntese síncrona, em meados dos anos 80 voltou o interesse por circuitos assíncronos,
inicialmente no meio academico e posteriormente no meio industrial.
Projetistas de circuitos síncronos tinham de lidar com problemas de defasagem de clock: a diferença no instante de
chegada dos sinais de clock em várias partes do chip ou um sistema que reduz efetivamente o tempo alocado para
processos computacionais úteis. Na medida em que os chips VLSI diminuíam de tamanho, os transistores tornavam-se
mais rápidos. No entanto, a distância que os elétrons tinham de viajar para entregar os níveis do sinal de clock
permaneciam as mesmas. Mais ainda, a largura dos fios diminuía, mas o mesmo não acontecia com sua largura vertical.
Portanto os elétrons demoravam ainda mais tempo para percorrerem a mesma distância. Dessa maneira, a evolução da
tecnologia VLSI agravou ainda mais os problemas com defasagem de clock. Para minimizar esses efeitos, uma área
cada vez maior dos chips VLSI é designada para distribuição dos sinais de clock.
Além do exposto acima, com o aumento do número de transistores inseridos em um único chip, os projetistas
começaram a enfrentar reais problemas com a dissipação de potência. Em chips síncronos com sinais de clock globais,
até mesmo as partes inativas do chip dissipam calor (Sutherland, et al., 2002; Hauck, 1995).
Por fim, a maioria dos chips VLSI e, conseqüentemente, todos os sistemas digitais têm de interagir com sinais
assíncronos. É dificil imaginar dois sistemas digitais conectados por uma rede sincronizada com um clock global terem
um alto desempenho. Um chip síncrono que se comunica com um ambiente que não compartilha do mesmo sinal de
clock deve sincronizar entradas externas assíncronas com o próprio clock interno. Isso apresenta um risco inerente de
falha de sincronização. Quando circuitos digitais operavam em velocidade relativamente baixa, o risco de falha de
sincronização era extremamente baixo. No entanto, quando as freqüências dos sinais de clock chegaram na faixa de
centenas de MHz, a probabilidade de falha se tornou significativa. Isso incentivou as buscas por novas soluções.
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
1.1. Sistemas digitais assíncronos: uma alternativa
Existem vários benefícios que circuitos assíncronos trazem para o projeto de sistemas digitais. Considera-se a
necessidade de circuitos assíncronos no contexto dos sistemas (Myers, 2001; Fuhrer, 1999):
•
•
•
•
Várias interfaces de sinalização de protocolos, como a SCSI bus data transfer protocol, são assíncronas.
Projeto de controles síncronos requereria sincronização de sinais assíncronos para uma alta velocidade do
clock interno, dificultando o projeto e potencialmente prejudicando o desempenho.
Circuitos assíncronos são ideais para a construção de componentes modulares. Modularidade é uma
propriedade atrativa em qualquer sistema, pois faz com que a verificação temporal global seja desnecessária.
Circuitos assíncronos projetados para alto desempenho também funcionam quando a velocidade do sistema é
diminuída.
Circuitos assíncronos tendem a dissipar menos energia que os síncronos em algumas aplicações que utilizam
tecnologia CMOS. Circuitos assíncronos não apresentam dissipação de potência devido a transições de clock e
glitches, pois circuitos CMOS dissipam potência apenas durante as transições. Além disso, a natureza dos
circuitos assíncronos é ideal para aplicações de baixa potência que necessitam de rápidas transições entre os
estados standby e ativo, pois as partes inativas dos circuitos assíncronos estão em modo standby sem
dissipação alguma de potência. Com a crescente ênfase em componentes eletrônicos portáteis e aplicações sem
fio, baixa dissipação de potência deve se tornar um requerimento importante para designs de chips VLSI.
Circuitos assíncronos têm baixa latência de saída, pois os sinais de saídas são gerados imediatamente após o
recebimento dos sinais de entrada, sem a necessidade de se esperar o próximo sinal de clock. Essa
característica é importante em controladores de memória e em circuitos de alto desempenho.
1.2. Sistemas digitais assíncronos: problemas
Mesmo tendo levantado vários argumentos a favor do uso de assíncrono na última seção, existem alguns problemas
com o projeto de assíncronos em seu estado atual. Circuitos assíncronos são difíceis de projetar manualmente,
principalmente devido ao fenômeno chamado hazard, que são glitches potenciais, ou pulsos indesejados no circuito.
Nos circuitos síncronos, glitches não causam problemas contanto que os mesmos se estabilizem antes do próximo sinal
de clock. No entanto, em circuitos assíncronos, glitches não podem ser tolerados pois os circuitos são sensíveis a toda e
qualquer mudança nos sinais de entrada. Portanto, os projetistas precisam estar bem atentos a cada passo durante a
síntese para evitar esses problemas no projeto final (Myers, 2001; Yuan, et al., 2004).
Um problema ainda maior no projeto de assíncronos é a falta de ferramentas para síntese automática, como também,
para verificação e testabilidade. As poucas ferramentas existentes carecem de eficiencia, quando aplicadas em grandes
sistemas digitais. Ainda mais importante, é fácil prever que para o futuro, praticamente todos os projetos assíncronos
deverão interagir com os projetos síncronos já existentes. As metodologias atuais para o projeto de circuitos assíncronos
não estão adequadas para serem aplicadas em circuitos heterogêneos, os quais consistem de componentes síncronos e
assíncronos.
1.3. Projeto digital assíncrono: estilos
Uma maneira convencional de classificar circuitos assíncronos é pela robustez de cada classe de circuitos com
respeito às variações no atraso dos componentes de sistema físico. Cada classe de circuitos faz algumas hipóteses sobre
atrasos. Essas hipóteses diretamente afetam a validade dos métodos de síntese. Por exemplo, um modelo que assume
que as portas possuem atrasos arbitrários não seria aplicável para circuitos síncronos, pois nesse modelo não existe
garantia de que as mudanças nas saídas das portas irão se estabilizar dentro de um período de clock (Hauck, 1995).
Um circuito insensível a atrasos (delay-insensitive – DI) são circuitos assíncronos que funcionam corretamente
independentemente das variações de atraso dos fios e das portas que o compõem. Em outras palavras, esta classe de
circuitos é modelada como tendo atrasos arbitrários e finitos tanto em suas portas quanto em seus fios. Esses circuitos
consistem de macromódulos e de fios que os conectam. Cada macromódulo deve ser projetado de modo a garantir que
as variações de atrasos nos fios não causem mau funcionamento do circuito. O projeto interno dos macromódulos prevê
certos valores temporais. Por isso os mesmos não são insensíveis a atrasos, embora as comunicações entre eles o sejam.
Uma outra classe robusta (equivalente ao DI) mas com alguma consideração temporal é quase insensível a atraso (quasi
delay insensitive – QDI), onde os fios com fan-out >1 (isochronic fork) devem ter atrasos iguais (Myers, 2001; Sparso,
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
et al., 2001). A classe de circuitos independentes de velocidade (speed-independent – SI) opera corretamente
independentemente das variações no atraso das portas, e os atrasos nos fios são desprezíveis (Hauck, 2001). A hipótese
SI era viável nos primeiros tempos do VLSI, quando os atrasos nos fios eram desprezíveis comparados aos das portas.
No entanto, nas novas gerações de VLSI os atrasos dos fios não são mais insignificantes. Portanto, ao projetar-se
circuitos com a hipótese SI deve-se ter extremo cuidado para que a suposição de fios com atrasos constante (diferença
desprezível) não seja violada. A classe de circuitos assíncronos que mais se aproximam dos circuitos síncronos, opera
corretamente no modelo onde os atrasos nas portas e linhas são conhecidos e possuem limite inferior e superior
(bounded gate and wire delay – BGWD).
Existem diferentes estilos de projeto assíncrono. Cada estilo está relacionado com a classe do circuito, arquitetura e
metodologia. Um interessante estilo de projeto de sistemas assíncronos é o de decomposição. Este estilo decompõe o
sistema em controlador + datapath. Um estilo bastante popular para síntese do controlador é as máquinas de estado
finito assíncrona modo rajada estendido (MEFA_MRE) (extended burst-mode machine) (Yun, 1999). As MEFA_MRE
são máquinas modelo Mealy que na maoria dos casos é especificada incompletamente (MEFA_MRE_EI), e obedecem
ao modelo BGWD. A interação com o ambiente acontece no modo fundamental (Yun, 1999). A ferramenta 3D
proposta por Yun no seu doutorado sintetiza as MEFA_MRE na arquitetura de Huffman estendida (ver figura 1b). Esta
arquitetura usa as variáveis de saída como estado, que possibilita circuitos menores, mas há o potêncial de aumento do
tempo de latência. A minimização de estados é uma importante tarefa na síntese de MEFA_MRE_EI, mas os
algoritmos propostos que realizam minimização exata exigem um alto esforço computacional, inviabilizando a tarefa
para máquinas grandes. Os motivos são: a explosão na geração das classes de compatibilidade e a etapa de cobertura
mínima é um problema NP-completo (McCluskey, 1986).
Neste artigo propomos um algorimo de minimização de estados para MEFA_MRE_EI, que é uma adaptação do
algoritmo classico de minimização de estados para MEF especificadas completamente (MEF_EC), que é baseado na
álgebra das partições. A nosso algoritmo está voltado para a arquitetura de Huffman (ver figura 1a) (Huffman, 1954),
onde os estados são identificados por variáveis de estado, portanto baixo tempo de latência. A tarefa de minimização de
estados para MEF_EC exigem um baixo esforço computacional. As classes geradas são drasticamente reduzidas e o
algoritmo de partições tem complexidade linear (McCluskey, 1986). Para obtermos um baixo esforço computacional na
máqunas EI o nosso algoritmo incorpora uma nova operação que é a fusão de partições. O algoritmo proposto obtém
resultados bastante satisfatórios, no caso sub-ótimo.
Este artigo está estruturado como segue: seção 2 apresenta a especificação MEFA_MRE; seção 3 mostra conceitos
de minimização de estados e o algoritmo de particionamento; seção 4 ilustra duas aplicações do algoritmo; seção 5
apresenta uma discussão e resultados; seção 6 finalmente as nossas conclusões e trabalho futuro.
E ntradas
Saidas
E ntradas
S aidas
E stados
E stados
(a)
(b)
Figura 1. Arquitetura alvo: a) máquina de Huffman; b) máquina de Huffman estendida (saída realimentada).
2. Especificação de MEFA_MRE
O modo rajada estendido é uma interface poderosa para especificar uma grande classe de controladores. Sua
intenção é projetar máquinas de estados assíncronas e máquinas que caiam na área intermediária, entre síncronos e
assíncronos, mesmo assim é teoricamente possível fazer a especificação de qualquer máquina síncrona Moore e
praticamente possível de fazer o projeto de pequenas e médias máquinas síncronas de Moore. É particularmente útil
para controladores que operam com sistemas heterogêneos, isto é, com sistemas com uma mistura de componentes
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
síncronos e assíncronos. É importante notar que toda especificação legal do modo rajada estendido é possível de se
implementar.
Figura 2 mostra um exemplo de especificação do modo rajada estendido (benchmark biu-dma2fifo). Sinais que não
estão cercados por desigualdades (< >) e terminam com + ou – são sinais terminais. Esses são sinais de transição.
Sinais cercados pelas desigualdades (<>) são condicionais, que são sinais cujos valores são amostrados quando todas as
transições terminais associadas a eles tenham ocorrido. O condicional <a+> pode ser lido como “se a estiver alto” e <a> pode ser lido como “se a estiver baixo”. Uma transição de estado ocorre se todas as condições são satisfeitas e todas
as transições têm aparecido. Um sinal terminado com asterisco é um direct don’t care. Se “a” é um direct don’t care
deve haver uma seqüência de transições de estados na máquina rotulada com a*. Se uma transição de estado é rotulada
com a*, as seguintes transições de estado na máquina devem ser rotuladas com a* ou com a+ ou com a- (as transições
terminais para o direct don’t care). A figura 2 descreve uma máquina de estados, tendo uma entrada condicional
(cntgt1), três entradas de transição (ok,frin,dackn) e duas saídas (dreq,faout). Consideremos a transição de estado 4→5.
Nesse ponto, o comportamento da máquina é: “Se cntgt1 está baixo quando dackn abaixar, vá para o estado 2 e abaixe a
saída dreq”.
Figura 2. Especificação modo rajada estendido: biu-dma2fifo.
Um sinal direct don’t care deve mudar no máximo uma vez durante a seqüência de transições de estados que rotula,
isto é, direct don’t care são sinais monotônicos, e, se não mudam nessa seqüência, deve mudar durante a transição de
estado que esse terminal de transição rotula. Um terminal de transição que não é imediatamente precedido por um direct
don’t care é chamado compulsório, desde que deve aparecer na transição de estado que rotula. Na figura 2, frin está em
nível baixo quando a especificação está no estado 4. Essa variável pode assumir nível alto em qualquer instante com o
“deslocamento” da máquina entre os estados 5 e 6 ou para o estado 2, dependendo do nível de cntgt1, e deve ter subido
no instante em que a máquina vai para o estado 6 ou 2, pois a terminação de transição frin+ aparece entre os estados 5 e
6 e também entre os estados 4 e 2.
Os sinais de entrada são globalmente particionados em sinais de nível (condicionais), os quais nunca podem ser
usados como sinais de transição, e sinais de transição (terminais ou direct don’t care), os quais nunca podem ser usados
como sinais de nível. Se um sinal de nível não é mencionado em uma particular transição de estados, ele pode mudar
livremente. Se um sinal de transição não é mencionado, esse não pode mudar livremente. Mais genericamente, uma
máquina assíncrona de estados finitos modo rajada estendido é especificada por um diagrama de estados que consiste
de um número finito de estados, um conjunto de transições rotuladas conectando pares de estados, e um estado inicial.
Cada transição de estado é rotulada com um conjunto de sinais de nível e dois conjuntos de sinais de transição: uma
rajada de entrada e outra de saída. Uma rajada de saída é um conjunto de saída de transição, e uma rajada de entrada é
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
um conjunto não-vazio de entradas de transição (terminais ou direct don’t care), pelo menos um dos quais deve ser
compulsório.
Em um dado estado, quando todos os sinais condicionais especificados têm valores corretos e quando todos os
terminais de transição especificados na rajada de entrada têm aparecido, a máquina gera a correspondente rajada de
saída e vai para o próximo estado. Sinais de transição especificados na rajada de entrada podem aparecer em uma
ordem temporal arbitrária. Contudo, os sinais condicionais devem estabilizar em níveis corretos antes de qualquer sinal
compulsório na rajada de entrada apareça e devem manter seus valores até que todas as terminações de transição
apareçam. O atraso mínimo da estabilização condicional para a primeira transição compulsória é chamado tempo de
setup. Analogamente, o mínimo atraso do último sinal terminal até a mudança na condicional é chamado tempo de hold.
Valores atuais de tempo de setup e hold de sinais condicionais com respeito ao primeiro pico compulsório e o último
pico terminal dependem da implementação. O período entre o especificado tempo de setup antes do primeiro pico
compulsório e terminando no especificado tempo de hold depois do último pico terminal é chamado tempo de
amostragem. Níveis de sinais condicionais não precisam ser estáveis fora dos especificados períodos de amostragem.
Cada sinal especificado com um direct don’t care pode modificar seu valor monotonicamente a qualquer instante
incluindo durante as rajadas de saída, a menos que já esteja no nível especificado no próximo pico terminal. As saídas
podem ser geradas em qualquer ordem, mas o próximo conjunto de picos compulsórios da próxima rajada de entrada
não deve aparecer até que a máquina esteja estabilizada. Diferentes ferramentas foram propostas para síntese de
máquinas de estado modo-rajada e extensões (Yun, 1999; Fuhrer, 1999; Oliveira, 2004).
Seguem alguns exemplos de rótulos de transições de estados:
•
•
<c1+><c2->x+/z1+z2- significa: se c1=1 e c2=0, quando x “subir”, a máquina deve “levantar” z1 e
“abaixar” z2.
x1+x2-/z+
significa: quando x1 “subir” e x2 “abaixar” a máquina deve “levantar” z
3. Minimização de estados para MEFA_MRE_EI
Aplicaremos o nosso algoritmo no benchmak biu-dma2fifo (figura 2) (Yun, 1999). Ele descreve um controlador
para uma unidade de interface de barramento (Bus Interface Unit), cuja função é controlar o barramento de dados entre
o DMA (Direct Memory Access) e a FIFO (first-in first-out). Este controlador faz parte da interface SCSI (Small
Computer Systems Interface). Para facilitar a exposição do algoritmo de minimização de estados, a especificação MRE
será descrita na representação equivalente que é a tabela de fluxo MRE, que já está voltada para a arquitetura de
Huffman. Figura 3 mostra o benchmark biu-dma2fifo descrito na tabela de fluxo MRE, onde os sinais de entrada O,F e
D são respectivamente ok, frin e dackn.
Figura 3. Tabela de fluxo MRE: biu-dma2fifo.
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
Os algoritmos propostos para minimização de estados das MEFA_MRE_EI podem gerar até 2N classes
compatíveis, onde N é o número de estados. O motivo deste número elevado de classes é que a propriedade transitiva
nas MEFA_MRE_EI não é obedecida, portanto um estado pode aparecer em várias classes. Isto ocorre porque um
estado don’t-care pode assumir vários estados, para permitir a compatibilidade. Para reduzir drasticamente o esforço
computacional do algoritmo de minimização de estados, propomos uma nova operação que é a fusão de partições.
Neste modelo o estado don’t-care na fusão assumirá um único estado. A escolha do estado atribuído ao estado
originalmente don’t-care segue a heurística da ordem dos estados da tabela de fluxo. Os algoritmos de minimização de
estados para MEF_EI usam o conceito de par de estados compatíveis. Este conceito continua valendo no nosso
algoritmo.
Definição 3.1 (Unger, 1969) Dois estados A e B da tabela de fluxo T que opera no modo fundamental são compatíveis
se e somente se:
(a)
Se forem especificados, as saídas são idênticas, e
(b)
Se forem especificados, os seus próximos estados também são compatíveis
Se um par de estados é compatível, então eles podem ser fundidos. A fusão de estados pode inviabilizar a etapa de
minimização lógica livre de risco lógico nas MEFA_MRE. A cobertura de implicantes obedece a um conjunto de
regras, onde a fusão de estados pode inviabilizar estas regras. A inviabilidade é porque a definição 3.1 não satisfaz a
cobertura de implicantes livre de risco. Para solucionar este problema, há uma extensão desta definição.
Definição 3.2 (Nowick, 1995) Dois estados A e B da tabela de fluxo MRE_EI T são compatíveis livre de risco se e
somente se:
(a) Se forem especificados, as saídas são idênticas, e
(b) Se forem especificados, os seus próximos estados também são compatíveis, e
(c) Regras de cobertura lógica livre de risco são viabilizadas.
A definição 3.2 permite gerar classes de compatibilidade em que um estado pode fazer parte de diferentes classes,
portanto pode levar a uma explosão de classes. Nas máquinas especificadas completamente um estado faz parte
somente de uma única classe, portanto gera-se uma partição. Para ilustrar o modelo de estado único, apliquemos no
benchmark da figura 3. A primeira etapa de um algoritmo de minimização de estados para máquinas EI é a geração de
todos os pares de estados compatíveis, que é obtido na aplicação da definição 3.2. Por exemplo, o estado 0 é comparado
com os estados (1,2,..6) e gera os pares de estados compatíveis (0,1)e (0,4). O estado 1 é comparado com os estados
(2,3,...,6) e gera o par (1,4), e assim por diante. Como houve a geração dos três pares de estados compatíveis (0,1), (0,4)
e (1,4), então temos a classe (0,1,4), porque temos as três combinações de pares compatíveis possíveis. Nas máquinas
EI faz-se a geração de todos os pares possíveis. Nas nossas máquinas a geração de um par compatível, imediatamente
usa-se este par para comparar com outros estados. Para as nossas máquinas o estado 0 é comparado com o estado 1,
como são compatíveis temos a classe (0,1). A seguir a classe (0,1) é comparada com os estados que segue (2,3,4).
Como há compatibilidade entre a classe (0,1) e o estado 4, então gera a classe (0,1,4).
3.1. Método K-partição
Neste artigo apresentamos uma extensão do algoritmo K-partição. Diferente do algoritmo clássico, onde somente
há reparticionamento, no nosso algoritmo também há fusão de partições. Ele é processado em seis passos e é aplicado
nas MEFA_MRE_EI, portanto toda partição final satisfaz a definição 3.2:
1: Todos os estados da MEFA_MRE_EI estão em uma única partição.
2: Particione os estados separando os de saída diferentes
3: Reparticione os estados criando partições separadas para os estados de uma mesma partição, mas que os seus
próximos estados estejam em partições diferentes.
4: Repita o passo 3 até que a nova partição gerada seja igual a anterior.
5: Seja C o conjunto de K partições finais, {P1,P2,...,PK}; compare Pi de C, onde 1≤i≤K com Pj de C tal que i≠j.
Se Pi e Pj forem compatíveis, então gerar a partição Pij.
6: Repita o passo 6 até que a nova fusão de partições gerada seja igual a anterior.
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
A ferramenta de minimização de estados aceita a descrição textual das MEFA_MRE, no caso o benchmark biudma2fifo (ver figura 4).
input ok
input frin
input dackn
input cntgt1
output
output
01
12
15
23
34
45
42
56
60
0
0
1
0
dreq
faout
ok+ frin*
[cntgt1+] frin* dackn[cntgt1-] frin* dacknfrin+ dackn+
frin+
[cntgt1-] frin* dackn[cntgt1+] frin* dacknok* fain+ dackn+
ok- frin-
0
0
| dreq+
| dreq| dreq| faout+
| dreq+ faout| dreq| dreq| faout+
| faout-
Figura 4. Descrição textual (arquivo de entrada) do biu-dma2fifo para a ferramenta de minimização.
4. Exemplos
Para ilustrar o nosso método de minimização de estados, aplicaremos em dois benchmarks
4.1. Benchmark biu-dma2fifo
A arvore descrita na figura 5 mostra o procedimento do nosso algoritmo de partição. Cada vértice descreve uma
partição e as arestas indicam o reparticionamento ou fusão de partições. A raiz é o passo 1 do nosso algoritmo. O passo
2 corresponde ao nível 2 da arvore. Os passos 3 e 4 correspondem ao nível 3 da arvore. Os passos 5 e 6 correspondem
ao nível 4 da arvore. No ultimo nível da arvore aparecem ás partições finais, que definem os estados fundidos. Neste
exemplo houve a fusão das partições ((0),(1,4)) que gerou a fusão dos estados (0,1,4). Figura 6 mostra a tabela de fluxo
MRE reduzida.
Figura 5 Arvore de particionamento: biu-dma2fifo
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
Figura 6 Tabela de fluxo MRE_EI reduzida: biu-dma2fifo.
4. 2. Benchmark Hp-ir
As figuras 7 e 8 mostram respectivamente benchmark Hp-ir descrito na forma de diagrama e de tabela de fluxo. A
figura 9 mostra a arvore de particionamento, onde obtivemos as fusões dos estados (1,2,7), (0,5), (3,4) mostrados no
ultimo nível da arvore. Neste exemplo, as partições ((3),(4)) e ((0),(5)) foram fundidas A figura 10 mostra a tabela de
fluxo MRE reduzida.
Figura 7. Especificação modo rajada: Hp-ir
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
Figura 8. Tabela de fluxo modo rajada Hp-ir
Figura 9 Arvore de particinamento: Hp-ir
Figura 10. Tabela de fluxo MR_EI reduzida: Hp-ir
Anais do XVI ENCITA, ITA,20 de outubro de 2010
,
5. Discussão e Resultados
O algoritmo proposto usa como estrutura intermediária uma arvore, que facilita o reparticionamento e as fusões de
partições. Em cada nível da arvore o número de vértices não ultrapassa o número de estados. O número de níveis é no
máximo de quatro. Toda partição que está contida em outra partição é eliminada. O algoritmo proposto foi testado
manualmente em vários benchmarks. Os dois benchmarks ilustrados obtiveram a minimização exata.
6. Conclusão
Trata-se de um trabalho inovador na literatura, que procura diminuir o esforço computacional requerido no
processo de minimização de MEFA_MRE. O processo de minimização de estados é um problema NP-completo e por
isso torna-se inviável para máquinas de grande porte. Com essa motivação, foi proposto um algoritmo que é uma
expansão do algoritmo de particionamento que visa viabilizar uma minimização para máquinas como as mencionadas
acima, mesmo que tal procedimento não garanta uma redução máxima do número de estados. O algoritmo proposto foi
detalhado e um software computacional que o implementa está sendo desenvolvido na linguagem C++ no ambiente PCwindows.
7. Agradecimentos
Agradeço a Deus e minha família pelo apoio dado em momentos difíceis e também ao CNPQ pelo auxílio
financeiro de grande valia.
8. Referências
Myers, C. J., 2001, “Asynchronous circuit design,” John Wiley & Sons
Spars_, J and Furber, S (eds.), 2001, “Principles of asynchronous circuit design - A systems perspective,” Kluwer
Academic Publishers.
McCluskey, E. J., 1986, “Logic Design Principles with Emphasis on Testable Semicustom Circuits”, Prentice-Hall.
Yuan, J. S. and Kuang, W. 2004, “Teaching Asynchronous Design in Digital Integrated Circuits,” IEEE Trans on
Education, vol.47, no. 3, pp. 397-404.
Sutherland, E. and Ebergen, J., 2002, “Computers without clocks,” Sci. Amer., pp. 62-69.
S. Hauck, S., 1995, “Asynchronous Design Methodologies: An Overview”, Proc. of the IEEE, Vol. 83:1 pp.69-93.
Huffman, H., 1954, “The Synthesis of Sequential Switching Circuits,” J. Franklin Ins., Vol. 257, pp. 161-190, March e
pp.275-303, April.
Nowick, S. M., 1995, “Automatic Synthesis of Burst-Mode Asynchronous Controllers,” Ph.D. thesis, Stanford
University.
Yun, K. Y. and Dill, D. L., 1999, "Automatic Synthesis of Extended Burst-Mode Circuits: Part I (Specification and
Hazard-.Free Implementation) and Part II (Automatic Synthesis)," IEEE Trans. on CAD of Integrated Circuit and
Systems, Vol. 18:2, pp. 101-132.
Fuhrer, R. M., 1999, “Sequential Optimization of Asynchronous and Synchronous Finite-State Machine”, Ph.D. thesis,
Department of Computer Science, Columbia University.
Oliveira, D. L., 2004, “Miriã: Uma ferramenta para síntese de controladores assíncronos multi-rajada,” tese de
doutorado, EPUSP.
Download

MINIMIZAÇÃO DE ESTADOS PARA MÁQUINAS DE ESTADO