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

Documentos relacionados