Concepção Conjunta Hardware/Software de Sistemas
Transcrição
Concepção Conjunta Hardware/Software de Sistemas
Concepção Conjunta Hardware/Software de Sistemas Embarcados de Processamento de Imagens AILTON FERNANDO DIAS CDTN/CNEN, Caixa Postal 941, 30123-970 Belo Horizonte, MG. [email protected] Resumo. Sistemas embarcados de processamento de imagens apresentam rigorosos requisitos de tempo de resposta, exigindo do projetista desses sistemas o uso de metodologias e ferramentas de desenvolvimento capazes de orientá-lo na definição da configuração da arquitetura de implementação dos mesmos. A concepção conjunta hardware/software permite que funções mais críticas e de mais baixo nível do processamento (aquisição, filtragem e segmentação) sejam executadas em dispositivos de hardware do tipo configurável, enquanto que funções de mais alto nível (restauração, extração de atributos, classificação) sejam executadas em dispositivos de hardware do tipo programável. Uma metodologia/ferramenta de concepção conjunta deve oferecer ao projetista a possibilidade de realizar a alocação espacial (distribuição) e temporal (escalonamento) das funções de processamento de forma manual, automática ou guiada para a arquitetura escolhida. 1. Introdução Os sistemas em tempo real têm sido muito utilizados em aplicações complexas nas áreas aeroespacial, automobilística, robótica, automática e de processamento de sinais e imagens. Esses sistemas são frequentemente integrados em componentes heterogêneos (hardware/software, analógico/digital e eletrônica/mecânica). Isso exige o desenvolvimento de metodologias de concepção que permitam a especificação, validação, otimização e implementação de sistemas heterogêneos utilizando, de preferência, um modelo unificado ao longo de todo o ciclo de concepção. A implementação dessas aplicações complexas recorre a arquiteturas heterogêneas usando componentes programáveis (processadores, microcontroladores ou DSP - Digital Signal Processor) e/ou circuitos especializados (ASIC - Application Specific Integrated Circuit, FPGA - Field Programmable Gate Array, IC - Integrated Circuit ou PAL - Programmed Array Logic) que se comunicam através de uma rede de comunicação. Os componentes programáveis oferecem mais flexibilidade (um mesmo componente pode implementar diferentes aplicações ao executar códigos diferentes), mas os circuitos especializados oferecem melhor desempenho (por serem dedicados à implementação da aplicação-alvo). Para resolver os problemas de prototipagem rápida e de concepção conjunta hardware/software relacionados à implementação de tais sistemas, é necessária a utilização de uma metodologia formal de concepção. 2. Sistemas Embarcados Os sistemas embarcados são frequentemente sistemas reativos em tempo real utilizados para processamento de sinais e imagens, telecomunicações e automação. Tipicamente, eles são implementados a partir de diferentes tecnologias, como microprocessadores, microcontroladores, DSP, circuitos reconfiguráveis, circuitos analógicos e de microondas e até mesmo sistemas microeletromecânicos (MEMS - MicroElectroMechanical Systems). Um sistema reativo de tempo real é um sistema que interage continuamente com sua vizinhança, produzindo reações a estímulos vindos do exterior num tempo limitado. O sistema consome as informações recebidas e as processa num tempo adequado ao controle da aplicação. Um sistema funciona em tempo real quando está submetido a restrições temporais (latência e cadência) a serem respeitadas [1]. Além das restrições temporais, um sistema reativo está sujeito a restrições tecnológicas de embarcabilidade (redução de volume, peso, superfície, consumo) e a restrições de custo de concepção e fabricação que encorajam a minimização dos recursos necessários à sua implementação. As ferramentas de concepção de sistemas embarcados existentes são ainda muito limitadas e exigem, por exemplo, que as especificações de hardware e software sejam feitas separadamente [2]. Os Anais do II Workshop em Tratamento de Imagens, NPDI/DCC/UFMG, 2001 problemas dessas ferramentas de concepção são: falta de uma representação unificada para o hardware e o software, tornando mais difícil a verificação do sistema completo e produzindo incompatibilidades no nível das fronteiras entre o hardware e o software; definição a priori das partições, produzindo sistemas sub-ótimos; falta de um fluxo de concepção sem ruptura, tornando difícil a revisão da especificação e, consequentemente, aumentando o tempo de concepção. Há diferentes abordagens universitárias e comerciais para resolver os problemas da concepção de sistemas embarcados. Entretanto, nenhuma oferece ao projetista, de forma satisfatória, funcionalidades tais como especificação independente da implementação e síntese automática de sistemas reativos em tempo real. 3. Concepção Conjunta Hardware/Software A concepção conjunta de sistemas hardware/software refere-se ao projeto de sistemas contendo uma parte material, constituída de um ou mais circuitos específicos (ASIC, componentes reconfiguráveis) e uma parte programável executada por um arquitetura à base de processadores de uso geral ou específicos (microcontroladores, DSP). A concepção conjunta pode ser definida como sendo a especificação, validação e exploração de diferentes alternativas de projeto de um sistema mixto hardware/software, com o objetivo de otimizar critérios de custo e/ou desempenho [3]. A exploração do espaço de soluções é a tarefa-chave dos sistemas de concepção conjunta, pois, associada a uma fase de análise de desempenho, permite a definição de características fundamentais, tais como custo, desempenho temporal e potência consumida [4]. A concepção conjunta é uma tentativa de integrar as técnicas de projeto de hardware e software numa metodologia única, estruturada e, de preferência, automática [5]. As vantagens dessa integração são a aceleração do processo de concepção e a possibilidade de avaliar dinamicamente diferentes combinações hardware/software. No caso dos DSP e dos circuitos específicos, o processo de concepção deve eliminar o abismo existente entre a especificação funcional heterogênea e sua implementação heterogênea. No nível de sistema, os DSP, p. ex., exigem uma combinação entre os modelos de fluxo de dados e os modelos reativos para sua especificação completa [6]. As metodologias de concepção de sistemas hardware/software baseadas nos níveis de abstração mais elevados (sistema ou comportamental) devem proporcionar: (a) geração automática de interfaces entre as partes materiais e programáveis; (b) geração de diferentes soluções hardware/software: as tarefas paralelas e temporalmente críticas devem ser implementadas em hardware (CI, ASIC, FPGA) e as tarefas sequenciais, irregulares e complexas devem ser implementadas em software (microcontroladores, DSP ou ASIP- Application-Specific Instruction-Set Processor); (c) especificação de sistemas hardware/software: as linguagens de especificação de (VHDL - VHSIC Hardware Description Language, Verilog) e as linguagens de especificação de software (C, C++, Assembly) não são apropriadas para a especificação de sistemas mixtos; (d) distribuição: novas ferramentas são necessárias para realizar o mapeamento entre a especificação e os componentes de hardware e software cooperantes. As ferramentas e metodologias atualmente existentes para a concepção de sistemas embarcados mixtos utilizam diferentes linguagens para descrever os componentes de hardware e software (p.ex., C para especificar os componentes implementados em software, VHDL ou Verilog para especificar o hardware e as interfaces). 4. Comentários finais Especificamente no caso de sistemas orientados ao processamento de imagens, a concepção conjunta hardware/software permite que funções mais críticas e de mais baixo nível do processamento, tais como aquisição, filtragens espaciais e segmentação, sejam executadas em dispositivos de hardware do tipo configurável, enquanto que funções de mais alto nível, tais como restauração, extração de atributos e classificação, sejam executadas em dispositivos de hardware do tipo programável. A especificação do sistema deve ser feita utilizando um modelo unificado (grafos de dependências de dados, p.ex.) e a distribuição (alocação espacial) das funções sobre os dispositivos deve ser realizada de forma automática ou guiada pelo projetista. Anais do II Workshop em Tratamento de Imagens, NPDI/DCC/UFMG, 2001 5. Referências [1] STANKOVIC, John A. Real-time computing. Byte, Aug. 1992, p.155-160. [2] POLIS. Polis: a framework for hardware/software co-design of embedded systems. Berkeley: University of California, 1998. [3] BELHADJ, Mohammed. Conception d’architectures em utilisant SIGNAL et VHDL. Rennes: Université de Rennes I, 1994. 162p. (Tese, Doutorado em Informática) [4] ROWSON, James E. et al. Hardware-software co-design: the next embedded system design challenge (Panel). In: DESIGN AUTOMATION CONFERENCE, 35, San Francisco, 1998. Proceedings... p.174-175. [5] ADAMS, Jay K., THOMAS, Donald E. The design of mixed hardware/software systems. In: DESIGN AUTOMATION CONFERENCE, 33, Las Vegas, 1996. Proceedings... [6] ROMPAEY, Karl van, VERKEST, Diederik, BOLSENS, Ivo, DE MAN, Hugo. CoWare – a design environment for heterogeneous hardware/software systems. Design Automation for Embedded Systems, v.1, n.4, Oct. 1996.p.357-362. Anais do II Workshop em Tratamento de Imagens, NPDI/DCC/UFMG, 2001