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.