• No results found

A arquitetura do hardware de um sistema pode ser classificada como dedicada ou programável. No caso de ser dedicada, significa que cada um dos diferentes módulos ou blocos que a constituem têm uma arquitetura completamente adaptada a tarefas específicas. Estas permitem minimizar os custos no hardware e baixar o consumo de potência, no entanto esta dedicação apresenta como desvantagem a impossibilidade de posteriores extensões para outras tarefas. Por outro lado, as arquiteturas programáveis são aquelas em que cada módulo oferece flexibilidade para permitir a execução de várias tarefas no mesmo hardware apenas modificando o software. Consequentemente, a flexibilidade deste hardware implica tanto maiores custos como maior consumo de potência relativamente a uma arquitetura dedicada [39].

Porém algumas aplicações estão associadas a esquemas híbridos, cujas tarefas apresentam diferentes caraterísticas computacionais. De modo a processar eficientemente as várias tarefas individuais, as arquiteturas de sistema têm se tornado hibridas, as quais são compostas tanto por módulos de arquitetura dedicada

31

como por módulos de arquitetura programável. Contudo, continuam a ser classificadas como dedicadas ou programáveis, conforme o tipo dominante de arquitetura entre os diferentes módulos constituintes do sistema.

A seleção entre arquiteturas de sistema programáveis ou dedicadas depende essencialmente do campo de aplicação do dispositivo. As arquiteturas programáveis são adequadas para aplicações com demandas computacionais e algoritmos muito variáveis, enquanto arquiteturas dedicadas são adequadas para aplicações bem definidas com funcionalidade fixa.

No caso dos algoritmos de codificação de imagem e vídeo, podem ser considerados esquemas de codificação híbridos uma vez que envolvem diferentes procedimentos, os quais, em conjunto, reduzem as redundâncias estatísticas, espaciais e temporais dos sinais de imagem e vídeo. Ainda assim, esta é considerada uma aplicação específica, de modo que, para que se obtenham as mais eficientes soluções em hardware, uma arquitetura dedicada é a mais indicada.

O desenvolvimento de uma arquitetura dedicada eficiente envolve o mapeamento das tarefas individuais em diferentes módulos, de forma a identificar o tipo de arquitetura mais adequada para cada um deles, e a otimizá-la em termos de requisitos de desempenho, área e potência, alcançando portanto uma arquitetura de sistema dedicada com o mais alto grau de adaptação. Tal implica ainda uma análise detalhada aos algoritmos pretendidos, de modo a que as caraterísticas computacionais especiais inerentes aos mesmos possam ser exploradas [39].

Na Figura 2.15 é apresentada a arquitetura básica de um sistema de comunicação multimédia, a qual também inclui a codificação de imagem e vídeo.

32

O CPU (Central Processing Unit) hospedeiro (Host CPU) desempenha um papel importante em todo o sistema, pois é responsável pelo controlo de todos os módulos bem como pela alocação de memória para os mesmos. Em aplicações mais complexas este pode correr um sistema operativo que serve de ponte entre o software da aplicação e o hardware.

A DSP (Digital Signal Processor) é normalmente integrada no sistema para codificação de áudio, podendo também implementar alguns módulos de compressão de vídeo, como as transformadas e a CM. A interface de áudio (Audio I/F) serve para receber ou fornecer dados áudio, e está associada a DACs e a ADCs para conexão a microfones e a altifalantes.

A interface de visualização (Display I/F) é responsável pela conexão aos dispositivos de reprodução dos dados de vídeo, e pode tornar-se um módulo complexo quando integra funções gráficas 2D e 3D, como o redimensionamento de frames necessário para alguns dispositivos de visualização. O canal de comunicação, para uma rede sem fios por exemplo, é implementado através da interface de rede (Network I/F).

O analisador de codificação de comprimento variável (VLC parser) e o desmultiplexer (DEMUX) são responsáveis pela descodificação do fluxo de transporte (transport stream, TS) e pela separação em fluxos de vídeo, áudio ou de sistema. A aquisição de frames é realizada através da interface de câmara ou vídeo (Camera I/F or vídeo I/F), as quais podem ser provenientes de um sensor de imagem ou de um sinal de vídeo. Este módulo pode se tornar complexo se implementar funções de processamento de sinal de imagem [40].

O acelerador em hardware para compressão de vídeo (Hardware accelerator for vídeo compression), tal como o nome indica, representa um módulo dedicado para a realização de compressão de imagem e vídeo. Este é constituído por uma memória on-chip e por módulos mais pequenos, os quais podem ser conectados uns aos outros através de um bus local e controlados por um controlador local, que por sua vez pode comunicar com o CPU hospedeiro para obter as instruções. Outra alternativa é conectar os vários módulos diretamente ao bus do sistema. A escolha da mais adequada arquitetura varia conforme a aplicação final [40].

Para além dos módulos descritos, esta arquitetura também inclui um controlador de memória e um bus matrix. A bus matrix é responsável pela conexão entre os vários módulos, os quais transferem entre si grandes quantidades de dados. Por sua vez, o controlador de memória é responsável pelo acesso a esses dados através de frame buffers, e pelo seu transporte entre os vários módulos e uma

33

memória. Este pode ser um processo lento e pode implicar uma elevada potência se for utilizada uma memória off-chip. Felizmente, a tecnologia de integração em muito larga escala (very large scale integration, VLSI) tem permitido a integração de DRAM

(Dynamic Random Access Memory) ou SRAM (Static Random Access Memory)

como frame buffer on-chip, permitindo assim aumentar significativamente o desempenho e reduzir o consumo de potência [39].

A bus matrix também pode ser modificada de acordo com as aplicações finais. Uma compreensão mais profunda dos padrões de comunicação entre módulos é essencial para desenvolver uma bus matrix eficiente, a qual pode proporcionar maior largura de banda e consumir menor potência. Pode-se considerar que existe um compromisso entre a flexibilidade e a eficiência da bus matrix: a utilização de um bus global proporciona maior flexibilidade mas menor eficiência, enquanto a utilização de um bus matrix particionada em vários links de dados, em que cada um é dedicado com total adaptação a um algoritmo específico, proporciona mais alta eficiência, uma vez os módulos conectados aos diferentes links não interferem uns com os outros, no entanto perde alguma flexibilidade [39].

Esta arquitetura pode ser integrada numa FPGA ou num único chip, como um SoC, sendo geralmente esta a chave para alcançar os desejados requisitos de baixo consumo energético, alto desempenho e baixo custo dos produtos de multimédia atuais [40].