Assinalamento de Estados para Controladores Assíncronos

Propaganda
Anais do 13O Encontro de Iniciação Científica e Pós-Graduação do ITA – XIII ENCITA / 2007
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 01 a 04, 2007.
ASSINALAMENTO DE ESTADOS PARA CONTROLADORES
ASSÍNCRONOS
Denis Fillipini Vitti
Divisão de Ciência da Computação do Instituto Tecnologico de Aeronaútica – ICC – ITA
Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – São Paulo – Brasil
Bolsista PIBIC-CNPq – [email protected]
Duarte Lopes de Oliveira
Divisão de Engenharia Eletrônica do Instituto Tecnologico de Aeronaútica – IEEA – ITA
Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – São Paulo – Brasil
[email protected]
Resumo. Uma importante etapa no projeto de controladores assíncronos é o assinalamento de estados. Recentemente foi
proposto um algoritmo de assinalamento de estados para uma importante classse de controladores assíncronos denominada de
controladores modo rajada. Neste artigo propomos um algoritmo de assinalamento de estados para tais controladores e suas
extensões, que resolve o problema de assinalamento de estado com eficiência. Este algoritmo é baseado na teoria de partições e
usa uma eficiente estrutura de dados voltada para algebra booleana.
Palavras chave: classe de estados, dicotomia, cubos, exceção transição, hazards, corrida crítica.
1. Introdução
Sistemas digitais (controlador + datapath) são tipicamente construídos como sistemas síncronos, isto é, como
um sistema em que as operações estão sincronizadas com um simples sinal de relógio (Amaral, 1989). O sinal de
relógio pulsa em intervalos regulares, e é distribuído através do sistema. Todo o processamento em cada passo deve
se completado dentro do período do relógio, ou o circuito falha. Nos sistemas digitais atuais o uso do relógio global
apresenta sérios problemas, como: desvio de fase do relógio (do inglês clock skew), rede de distribuição do relógio e
consumo de potência (Mayers, 2001).
Projeto assíncrono dos sistemas digitais é uma alternativa promissora comparando com o tradicional projeto
síncrono. Eles operam por eventos, não tem nenhum sinal global que determina (ou sincroniza) as operações de seus
componentes. Por não possuírem sinal de relógio eles possuem diversas vantagens potenciais, como (Mayers, 2001):
modularidade (importante para reusabilidade), interface assíncrona, robustez a ruído e interferência eletromagnética
e a velocidade é calculada pelo atraso médio das portas e linhas. O problema dos sistemas digitais assíncronos é a
dificuldade do seu projeto. Estes sistemas para operarem corretamente devem ser livres de risco (do inglês Hazard)
(Unger,1969). Um circuito tem risco se ele tem potencial de apresentar transições indesejáveis ou pulsos espúrios
(glitches) nos seus sinais. Há diversos tipos de risco, como (Unger, 1969): funcional, lógico, atraso e seqüencial. O
risco seqüencial está relacionado com a transição das variáveis de estado, e é novamente dividido em dois tipos
(Unger, 1969): essencial e não essencial. O risco não essencial é mais conhecido como corrida crítica (do inglês
critical races). Corrida crítica são facilmente evitados através de uma codificação apropriada das variáveis de estado
(Fuhrer, 1999).
O projeto de um sistema digital assíncrono (controlador + datapath) pode ser dividido em três etapas de
projeto, que são (Mayers, 2001): síntese comportamental, síntese lógica e síntese física. Na etapa da síntese lógica
uma importante tarefa é a codificação (também chamado de assinalamento) dos estados do controlador assíncrono,
que pode ser implementado como uma máquina de estados finitos assíncrona (MEFA) (Mayers, 2001).
Há diversas classes de controladores assíncronos (Mayers,2001; Nowick, 1993; Yun, 1993; Oliveira, 2004).
Neste trabalho estamos voltados para classe proposta por Yun (1994), que é conhecida como controladores modo
rajada estendida (C_MRE), que são MEFA. Estes controladores permitem uma forma de múltiplas mudanças de
entrada, operam no modo fundamental e obedecem ao modelo de atraso bounded gate and wire delay (Unger, 1969).
Mostrando alto desempenho e confirmando os benefícios da lógica assíncrona, importantes projetos acadêmicos e
industriais foram realizados usando controladores C_MRE (Nowick, 1993).
Este trabalho é direcionado para a tarefa de assinalamento de estados dos controladores C_MRE, propondo
uma estrutura de dados intermediária chamada tabela de cubos, que armazena o C_MRE e um algoritmo de
assinalamento de estados baseado no algoritmo proposto por Tracey (1966).
O algoritmo proposto foi dividido em duas tarefas que facilita a sua implementação, assim como os testes: A
primeira tarefa consiste em detectar as exceções (conflitos) nas transições entre as classes de estados. Primeiramente
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
é realizada a leitura de uma estrutura de dados chamada de tabela de cubos, estruturas esta que caracterizam um
controlador. A segunda tarefa consiste em codificar todas as classes de estados do controlador, respeitando as
exceções e de modo a obtermos a menor codificação possível (número de variáveis de estado).
2. Descrição do problema
O problema consiste em implementar um algoritmo capaz de codificar um conjunto de classes de estados de
um determinado controlador assíncrono, de modo a obtermos a menor codificação possível com o menor número de
chaveamentos possíveis e respeitando as exceções que possam aparecer entre as transições de estados, pois assim
poderemos construir o controlador modo rajada com o menor consumo de energia e menor área.
2. 1. Representação do controlador assíncrono
O controlador a ser analisado será representado, e servirá com entrada do software, com uma estrutura de
dados (Fig. 1) especial que guarda todas as informações referentes às transições de estado que venham a ocorrer com
ele.
Figura. 1. Estrutura dados utilizada para representar um controlador assíncrono.
A parte mais importante de um arquivo de entrada são as informações sobre as transições ocorridas
chamadas de cubos (Figura 2). Um cubo de transição é sempre composto de quatro linhas (cubos): 1ª linha
representa o estado inicial 2ª linha representa o estado final; 3ª linha representa a transição das entradas do estado
inicial para o final; 4ª linha representa a transição das saídas do estado inicial para o final. Cada digito do cubo
representa o valor de um sinal do controlador. Por exemplo, o terceiro cubo na figura 2 é, D B A L I S Z0 Z1
=00211010, onde D,B,A são sinais de entrada; L,I, S são sinais de saída; Z0 e Z1 são variáveis de estado; o valor 2
significa que o sinal A é don´t-care.
Figura 2. Exemplo de cubo.
2. 2. Problema I – Geração do grafo de transições de estados
O algoritmo a ser implementado deve ser capaz, através da leitura das informações contidas nos cubos do
controlador assíncrono, de gerar um grafo com os estados minimizados (classes) que represente o controlador e
indique os estados conflitantes, ou seja, onde podem ocorrer “Hazards”. Os vértices do grafo contêm os sub-estados
de cada classe e as arestas do grafo contém as informações sobre conflitos de estados (Figura 3).
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
Figura 3. Grafo de estados e conflitos.
2. 3. Problema II – Codificação das Classes
Após gerar o grafo de estados e conflito o algoritmo deverá ser capaz de gerar uma simples tabela (Tabela 1)
de codificação das classes, de modo a respeitar todos conflitos existentes. No exemplo utilizado (Figura 3) temos a
transição da classe 3 para a classe 2 deve ocorre sem passar pela classe 1 com destacado em vermelho( aresta
rotulada):
Tabela 1. Tabela de codificação das classes.
Z0 / Z1
0
1
0
3
2
1
1
X
Na codificação apresentada acima pode se confirmar que na transição do estado 3 → 2 (00 → 01) não ocorrerá
a passagem pelo estado 1 como representado no grafo. Caso a codificação escolhida fosse 1 → 00, 2 → 10 e 3 → 01
poderíamos ter um risco funcional no circuito através da transição 3 → 2 (01 → 00 → 10) pois ocorreria uma
transição indesejada para a classe 1.
2. 4. Saída esperada
Ao final disto o software implementado deverá gera um arquivo de saída (Figura 4) que incluirá a codificação
gerada.
Figura 4. Arquivo de Saída.
3. Descrição dos algoritmos
Foi necessário muito tempo de pesquisa e análise para encontrarmos algoritmos eficientes que evitasse ao
máximo o problema de explosão combinatório sempre presente neste tipo de problema.
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
3.1. Geração do grafo de transições de estados
A complexidade deste algoritmo foi restrita apenas à criação de estruturas de dados apropriadas. Foi criada
uma estrutura de dados para ler as informações contidas nos cubos e armazená-las em tabelas verdade, sendo que
cada classe é representada por uma destas tabelas. Uma outra estrutura de dados, definida como tabelas adjacentes,
foi criada para poder agrupar todas as tabelas verdade, de modo que todas as características do controlador em
análise, representado por esta estrutura pode se tirar todas as informações referentes aos conflitos nas transições das
classes (ver figura 5).
Entrada
Ler Cubos
Tabela Verdade
Tabelas Adjacentes
Grafo
Figura 5. Fluxograma do algoritmo para gerar o grafo de classes e conflitos.
3.2. Codificação das Classes
O grafo abaixo (Figura 6) representando um conjunto de classes com suas transições e restrições que será
utilizado como modelo para exemplificar o algoritmo de codificação de classe. A codificação é realizada em 5
passos.
Figura 6. Grafo de estados e conflitos.
1º Passo: Detectar as dicotomias do sistema e gera as dicotomias complementares.
Neste passo devemos associar cada transição com sua exceção (transição:exceção) gerando um estrutura
denominada de dicotomia. As dicotomias garantem uma codificação sem risco funcional e corrida crítica.
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
Tabela 2. Tabela de dicotomias.
Básicas
13:4 – a
34:1 – b
24:3 – c
12:3 – d
Complementares
a – 4:13
b – 1:34
c – 3:24
d – 3:12
2º Passo: Verifica compatibilidade entres as dicotomias.
Neste passo devemos detectar as dicotomias compatíveis umas com as outras.
Tabela 3. Tabela de compatibilidade das dicotomias.
b
c
a
b
c
d
X
X
X
X
V
X
a
X
X
X
X
V
b
V
V
X
X
c
V
X
X
a
X
X
b
V
d
3º Passo: Agrupar as dicotomias de máxima compatibilidade.
Neste passo devemos agrupar o conjunto dicotomias compatíveis entre si visando assim à redução do
tamanho do código a se gerar.
Dicotomia
c
d
c
b
a
Tabela 4. Tabela de máxima compatibilidade das dicotomias.
Compatibilidade
Classes
d
(c, d)
b
(c, d) ,(b,d)
d, a
(c, d) ,(b,d) ,(c,d),(c, a)
d
(c, d) ,(b,d) ,(c,d),(c, a) ,(b, d)
c
(c, d) ,(b,d) ,(c,d),(c, a) ,(b, d) ,(a, c)
4º Passo: Gera tabela de cobertura.
Neste passo devemos encontrar o menor conjunto de dicotomia que cobre (que satisfazem, indicado por 1
na Tabela 5) as dicotomias básicas encontradas no primeiro passo.
Tabela 5. Tabela de Cobertura.
Dicotomias Básicas
X
Dicotomias compatíveis
13:4
(a)
34:1
(b)
24:3
(c)
(c, d)
(b,d)
(c,d)
(c, a)
(b, d)
(a, c)
0
0
0
1
0
1
0
1
0
0
1
0
1
0
1
1
0
1
12:3
(d)
1
1
1
0
1
0
5º Passo: Gerar codificação
Da Tabela 5 podemos observar que as classes (b, d) e (c, a) cobrem a tabela (ver tabela 6).
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
Tabela 6. Tabela de Codificação.
0
12
24
Código
(b, d)
(c, a)
1
34
13
Da tabela 6 temos que as classe aparece associadas aos bits 0 e 1 que representam a codificação de que cada
classe deve respeitar (ver tabela 7). Este exemplo necessitou de duas variáveis de estado (Z0, Z1).
Classe
1
2
3
4
Tabela 7. Tabela de Codificação das Classes.
Código (Z0, Z1)
01
00
11
10
4. Resultados e testes
O programa foi testado para diferentes controladores para aumentar o grau de confiabilidade do software
mostrado na Tabela 8. Esta tabela contém as informações dos testes realizados. A coluna código descreve o número
de variáveis de estado introduzidas.
Exemplo 1
Exemplo 2
Exemplo 3
Exemplo 4
Exemplo 5
Exemplo 6
Exemplo 7
Entradas
3
4
4
5
3
3
3
Tabela 8. Tabela de Teste e Resultados.
Número de
Saídas
Decisão
Classes
3
0
3
3
0
4
2
0
2
3
0
4
3
0
3
5
1
2
2
1
4
Dicotomias
1
2
0
2
2
0
3
Código
2
2
1
2
2
2
3
5. Conclusão
O resultado final foi um software robusto com estrutura de dados modernas totalmente dinâmicas que
possibilitaram a implementação eficiente do algoritmo.
Este software é capaz de codificar diversos controladores assíncronos de modo a obtermos a melhor
codificação possível, ou seja, com o menor número de transição possível entre a transição de um estado para outro,
evitando ainda risco funcional e corrida crítica.
O projeto pode ser considerado um sucesso visto que todos os testes realizados apresentaram resultados
satisfatórios em tempos de execução relativamente pequenos o que engrandece ainda mais nosso trabalho.
6. Agradecimentos
Agradeço pelo apoio e incentivo do meu professor e orientador Duarte Lopes de Oliveira que sempre esteve
disposto a me ajudar nas dúvidas que surgiam ao longo do trabalho. Não posso deixar de agradecer ao departamento
de Eletrônica e Computação do ITA que sempre deixou disponível o seu laboratório e os equipamentos necessários à
confecção deste experimento. Também não poderia deixar de lado o CNPq, que me deu a oportunidade de estar
realizando tal trabalho, contribuindo de forma decisiva para minha formação acadêmica.
7. Referências
Amaral, J. N., 1989, “Síntese Lógica Automática de Circuitos Seqüenciais Síncronos Baseadas em Máquinas de
Estados Finitos”, Tese de Mestrado, ITA.
Anais do XIII ENCITA 2007, ITA, Outubro, 01-04, 2007
Fuhrer, R. M., 1999, “Sequential Optimization of Asynchronous and Synchronous Finite-State Machines:
Algorithms and Tools” , Ph.D. Thesis, Columbia University.
Mayers, C. J., 2001, “Asynchronous Circuits Design”, John Wiley & Sons.
Nowick, S. M., 1993, “Automatic Synthesis of Burst-Mode Asynchronous Controllers” , Ph.D. Thesis, Stanford
University.
Oliveira, D. L., 2004, “Miriã: Uma Ferramenta para Síntese de Controladores Assíncronos Multi-Rajada”, Tese de
Doutorado, EPUSP.
Tracey, J. H., 1966, “Internal State Assignments for Asynchronous Sequential Switching Circuits”, IEEE-TEC,
EC-15, No. 4, August, pp. 551-560.
Unger, S. H, 1969, “Asynchonous Sequential Switching Circuits”, John Wiley & Sons.
Yun, K. Y., 1994, “Synthesis of Asynchronous Controllers for Heterogeneous Systems”, Ph.D. Thesis, Stanford
University.
Download