EXPERIMENTOS COM A INTERFACE BVCI E COM PROJETOS DE

Transcrição

EXPERIMENTOS COM A INTERFACE BVCI E COM PROJETOS DE
EXPERIMENTOS COM A INTERFACE BVCI E COM PROJETOS DE
SISTEMAS EM CHIP BASEADOS NO REUSO DE HARDWARE
Thaísa Leal da Silva, Luciano Agostini
Grupo de Arquiteturas e Circuitos Integrados – GACI
DMEC – Universidade Federal de Pelotas – UFPel
Caixa Postal 354 – CEP 96010-900 – Pelotas – RS – Brasil
{thleal, agostini}@ufpel.edu.br
RESUMO
A grande complexidade dos projetos de sistemas em chip atuais torna essencial o reuso de blocos de hardware. Esta
metodologia possibilita o aumento da produtividade das equipes de projeto e facilita o alcance das exigências de mercado.
Para que a reutilização de blocos de funcionais torne-se efetiva é indispensável o uso de interfaces padronizadas para a
interligação dos mesmos. Este artigo têm como objetivo investigar metodologias de reuso de blocos de hardware no projeto
de sistemas em chip a partir de experimentos com a interface BVCI (Basic Virtual Component Interface). A interface BVCI
está sendo descrita em SystemC e será descrita em VHDL com o objetivo de desenvolver experimentos que permitam validar
a comunicação através dessa interface e que apontem dados comparativos entre a interface BVCI e outras interfaces
industriais. Nesse sentido, serão realizados experimentos integrando a interface BVCI a módulos de um sistema de baixa
complexidade: um compressor JPEG para imagens em tons de cinza que foi desenvolvido em trabalhos anteriores. Assim,
será possível avaliar os impactos em termos de desempenho e uso de recursos nos módulos do compressor JPEG, quando
da utilização da interface padrão BVCI.
SUMMARY
The high complexity of the current system-on-chip designs becomes essential the reuse of hardware blocks. This
methodology makes possible to increase the design teams productivity and makes easy to these teams to reach the market
requirements. The use of standard interfaces to the interconnection of functional blocks is indispensable to a effective
reuse of these blocks. This paper goals to investigate methodologies of hardware reuse in the systems-on-chip design
through experiments with BVCI (Basic Virtual Component Interface). BVCI interface is being described in SystemC and will
be described in VHDL to design experiments that will allow to validate the communication through this interface and to
obtain comparative results between BVCI and other industrial interfaces. The modules of a low complexity system designed
in previous works will be integrated with the BVCI interface to evaluate the impacts of the use of a BVCI interface in a real
system design. This low complexity system is a JPEG compressor for gray scale images and the experiments results will
indicate the impacts in terms of performance and use of resources into the system modules and into the complete JPEG
compressor.
EXPERIMENTOS COM A INTERFACE BVCI E COM PROJETOS DE
SISTEMAS EM CHIP BASEADOS NO REUSO DE HARDWARE
Thaísa Leal da Silva, Luciano Agostini
Grupo de Arquiteturas e Circuitos Integrados – GACI
DMEC – Universidade Federal de Pelotas – UFPel
Caixa Postal 354 – CEP 96010-900 – Pelotas – RS – Brasil
{thleal, agostini}@ufpel.edu.br
RESUMO
A grande complexidade dos projetos de sistemas em chip
atuais torna essencial o reuso de blocos de hardware. Esta
metodologia possibilita o aumento da produtividade das
equipes de projeto e facilita o alcance das exigências de
mercado. Para que a reutilização de blocos de funcionais
torne-se efetiva é indispensável o uso de interfaces
padronizadas para a interligação dos mesmos. Este artigo
têm como objetivo investigar metodologias de reuso de
blocos de hardware no projeto de sistemas em chip a partir
de experimentos com a interface BVCI (Basic Virtual
Component Interface). A interface BVCI está sendo
descrita em SystemC e será descrita em VHDL com o
objetivo de desenvolver experimentos que permitam
validar a comunicação através dessa interface e que
apontem dados comparativos entre a interface BVCI e
outras interfaces industriais. Nesse sentido, serão
realizados experimentos integrando a interface BVCI a
módulos de um sistema de baixa complexidade: um
compressor JPEG para imagens em tons de cinza que foi
desenvolvido em trabalhos anteriores. Assim, será
possível avaliar os impactos em termos de desempenho e
uso de recursos nos módulos do compressor JPEG,
quando da utilização da interface padrão BVCI.
1. INTRODUÇÂO
O aumento na demanda por um curto time-to-market e por
produtos de baixo custo é muito forte nos projetos de
sistemas eletrônicos atuais. Esta tendência, juntamente
com os avanços da tecnologia de processo de fabricação
em silício, a qual tem permitido projetos de sistemas em
chip (SoC’s) extensos e complexos, está acelerando a
necessidade ao reuso de blocos de hardware e a geração
núcleos de propriedade intelectual (IP), também chamados
de componentes virtuais (VC), em escala industrial. Esta
tendência está mudando a indústria de microeletrônica
tendo em vista a fabricação, caracterização, distribuição e
aplicação de IP’s, que são indispensáveis aos projetistas
de circuitos integrados e aos desenvolvedores de SoCs.
Padronizações que viabilizem o reuso de blocos de
hardware possuem grande importância para a indústria de
microeletrônica. A tendência crescente ao reuso é um fato
irreversível, já possuindo ampla aceitação da comunidade
científica e industrial. Neste sentido, o grupo de trabalho
de Barramentos em Chip (OCB - On-Chip Bus) da VSIA
(Virtual Sockets Interface Alliance) [1] desenvolveu o
padrão VCI, que identifica os blocos reusáveis como
componentes virtuais ou VCs. O objetivo do VCI é a
geração de uma interface padrão para encapsular esses
componentes virtuais. Deste modo, VCs de diferentes
origens podem ser conectados para gerar os sistemas em
chip ou SoCs e não possuem seu uso limitado a um único
projeto, podendo ser utilizados em tantos projetos quanto
necessário.
O padrão VCI disponibilizou uma família de interfaces
de componentes virtuais que são compatíveis entre si,
permitindo algumas escolhas ao projetista do SoC quanto
a complexidade da interface de reuso a ser empregada [1].O
aspecto chave para o reuso de um IP é a sua facilidade de
ser integrado dentro de SoC. Para tanto, é necessário
utilizar os princípios de reusabilidade, antes
desnecessários ou pouco utilizados e agora extremamente
considerados pelas equipes desenvolvedoras. Princípios
como: para ser reusável, um projeto precisa primeiro ser
usável, isto é, precisa ser um projeto robusto e correto.
Muitas das técnicas para reuso de projetos são
simplesmente boas técnicas de projeto [2], por exemplo:
boa documentação;
código bem escrito;
código minuciosamente documentado;
ambiente de verificação bem desenvolvido;
scripts robustos.
Ignorar essas técnicas não compromete projetos que
serão utilizados apenas uma vez, mas passa a ser um
problema crítico para projetos que visam a reusabilidade.
Este trabalho visa implementar a interface de reuso
BVCI em SystemC [1] e em VHDL.
Para validar o seu uso em um sistema complexo, a
interface BVCI será integrada a módulos do compressor
JPEG para imagens em tons de cinza que foi desenvolvido
em trabalhos anteriores [3]. Neste caso, todos os módulos
irão se comunicar via interfaces BVCI para realizar a
compressão JPEG.
Deste estudo de caso, serão analisados os impactos em
termos de desempenho e de uso de recursos com e sem a
utilização da interface BVCI.
A seção dois deste artigo faz uma breve descrição
sobre interface de reuso BVCI, identificando sua origem e
suas características principais. Na seção três faz-se uma
concisa explanação sobre o compressor JPEG para imagens
em tons de cinza que será utilizado nos experimentos a
serem realizados com a interface BVCI. Já na seção quatro
do artigo estão relacionados os experimentos propostos
para dar continuidade a este trabalho, e o estado atual em
que se encontra o mesmo. E finalmente as seções cinco e
seis, apresentam, respectivamente, as conclusões e
propostas para trabalhos futuros, e as referências
bibliográficas utilizadas neste artigo.
2. A INTERFACE DE REUSO BVCI
O padrão VCI (Virtual Component Interface) [4] definido
pelo grupo de trabalho em Barramentos em Chip (OCB On-Chip Bus) da VSIA (Virtual Sockets Interface
Alliance) [1], foi criado com o objetivo de gerar uma
interface padrão que permita que componentes virtuais
compatíveis se comuniquem, mesmo que desenvolvidos
por diferentes projetistas, para gerarem sistemas em chip.
Assim, os componentes virtuais não terão seu uso limitado
a um único projeto, podendo ser instanciados e utilizados
em tantos projetos quanto forem necessários.
O padrão VCI identifica os blocos reusáveis como
componentes virtuais ou VCs (Virtual Components), por
isso, estes termos serão utilizados como sinônimos neste
artigo.
O padrão VCI especifica uma família de protocolos de
comunicação que visam facilitar a comunicação entre os
VC’s. Atualmente, três protocolos pertencem a esta família:
o Peripheral Virtual Component Interface (PVCI), o Basic
Virtual Component Interface (BVCI) e o Advanced Virtual
Component Interface (AVCI).
O protocolo PVCI provê uma interface simples e de
fácil implementação e é direcionado para aplicações que
não necessitam de todas as funcionalidades do BVCI. O
protocolo BVCI define uma interface apropriada para a
maioria das aplicações, possuindo um protocolo poderoso
e não muito complexo. O protocolo AVCI adiciona
recursos mais sofisticados em relação ao protocolo BVCI,
para suportar aplicações de alto desempenho [4].
Os objetivos iniciais considerados na elaboração do
padrão VCI foram [1]:
• A necessidade de máxima portabilidade para um VC,
onde um componente virtual deve poder ser usado
com barramentos com vários protocolos e de vários
níveis de desempenho.
• A simplicidade e a eficiência na implementação, com
um protocolo claro e de fácil compreensão, para que o
padrão seja amplamente aceito.
• A disponibilidade de uma família de interfaces de
componentes virtuais, com interfaces compatíveis,
permitindo algumas escolhas ao projetista do sistema
em chip e gerando mais oportunidades para o
projetista de componentes virtuais.
• A definição completa do protocolo, incluindo a
completa enumeração das possíveis interações, com
declarações sobre os comportamentos permitidos e
não permitidos, além de prover mecanismos para a
extensão deste protocolo.
A interface VCI pode ser usada para conexões ponto a
ponto entre duas unidades chamadas de iniciador e alvo,
onde o iniciador emite uma requisição e o alvo responde
[5].
O padrão VCI pode ser usado como interface para um
wrapper ou empacotador, que conecta-se a um
barramento. Esta é a forma pelo qual o padrão VCI permite
que os componentes virtuais sejam conectados em
qualquer barramento. Uma vez que tenham sido
desenvolvidos os empacotadores para um determinado
barramento, qualquer componente virtual pode ser
conectado a este barramento. [6]
A comunicação entre o iniciador e o alvo na interface
BVCI, está apresentada na Fig. 1.
Figura 1 – Conexão entre iniciador e alvo usando uma
interface BVCI
Figura 2 - Handshake de Controle para Requisição e Resposta (ACK Assíncrono)
Na Fig. 1, o iniciador é responsável pelos conteúdos
de requisição, e o alvo é responsável pelos conteúdos de
resposta. Estes conteúdos são transferidos separadamente
sob o controle de um protocolo simples chamado
handshake, onde as mensagens de requisição e resposta
são completamente independentes umas das outras. O
protocolo de handshake visa sincronizar dois blocos
transferindo informação de controle em ambas as direções,
seus principais sinais de transferência são chamados VAL
e ACK (Valid e Acknoledge).
A Fig. 2 mostra o funcionamento do protocolo de
handshake, onde as linhas verticais tracejadas representam
os ciclos de clock. Os conteúdos de requisição fluem do
Iniciador para o Alvo, pela ativação do sinal VAL, e os
conteúdos de resposta fluem do Alvo para o Iniciador, pela
ativação do sinal ACK.
Quando o sinal VAL é ativado significa que o
Iniciador está solicitando um dado de leitura para o Alvo.
A ativação do sinal ACK pelo Alvo, em resposta à
solicitação do Iniciador, indica que o conteúdo solicitado
já está disponível e pode ser lido.
O sinal ACK pode ser gerado assincronamente como
mostrado na Fig. 2, ou sincronamente,, onde após a
ativação do sinal VAL, solicitando uma leitura de dados, o
sinal de confirmação (ACK) é gerado na próxima borda de
subida do clock.
3. O COMPRESSOR JPEG PARA IMAGENS EM TONS
DE CINZA
Este item do artigo pretende apresentar uma visão bastante
abrangente do compressor de imagens JPEG,
especificando o funcionamento geral de cada um de seus
módulos, os quais, posteriormente, serão encapsulados
pelas interfaces de reuso BVCI.
O compressor JPEG que será utilizado neste trabalho
foi desenvolvido utilizando o modo de operação baseline
que é definido como o modo que contém o menor grupo de
requisitos para considerar uma compressão como
compressão JPEG, sendo o modo mais simples e o que é
mais utilizado na prática, tanto para aplicações em software
como para aplicações em hardware [7].
A compressão JPEG, quando operando no modo
baseline, é formada, basicamente, por três operações
principais, como está apresentado na fig. 3: Transformada
Discreta do Co-seno em Duas Dimensões (DCT 2-D),
Quantização e Codificação de Entropia [8].
As três operações apresentadas na fig. 3 são
realizadas na compressão de imagens em tons de cinza e
formam o núcleo da compressão JPEG.
Figura 3 – Operações da compressão JPEG
A Transformada Discreta do Co-seno em Duas
Dimensões - DCT 2-D, é utilizada para transformar a
representação da informação do domínio espacial para o
domínio das freqüências. Após a transformação de
domínio, as freqüências mais elevadas, que tendem a
contribuir menos com a informação da imagem, são
atenuadas, ou mesmo eliminadas, pelo processo chamado
de quantização, que é a operação que sucede a DCT 2-D
na compressão JPEG [7].
O processo de Quantização é uma divisão inteira dos
coeficientes da DCT 2-D por uma determinada constante,
chamada de constante de quantização, e o resultado é
arredondado para o menor inteiro mais próximo. O objetivo
da quantização é que o resultado arredondado seja zero
para o maior número possível de freqüências que não
interfiram, ou interfiram pouco, na qualidade da imagem,
potencializando assim o uso de técnicas de codificação
sem perdas [3].
A última operação a ser realizada para finalmente
obter-se a imagem comprimida, é a Codificação de Entropia
que utiliza, em conjunto, várias técnicas de compressão
sem perdas, com o intuito de obter o menor número
possível de bits para representar cada matriz de
coeficientes quantizados. Estas técnicas são a codificação
diferencial, a codificação de comprimento de palavra
variável (Variable Length Coding – VLC), a codificação
por número de ocorrências (Run-Length Encoding – RLE)
e a codificação de Huffman [3], as quais não serão
aprofundadas neste trabalho.
4. EXPERIMENTOS PROPOSTOS
Este trabalho prevê a realização de experimentos onde a
interface BVCI será, primeiramente, implementada em
SystemC, como uma unidade iniciadora e também, como
uma unidade alvo, havendo em seguida a junção destes
blocos: BVCI iniciadora e BVCI alvo, para a validação do
protocolo handshake desenvolvido de acordo com o
padrão, que visa sincronizar a comunicação entre os dois
blocos, transferindo informação de controle em ambas as
direções.
Implementadas a BVCI iniciadora e a BVCI alvo, estas
interfaces serão integradas a módulos do compressor JPEG
de imagens em tons de cinza, implementado em SystemC,
validando-se, posteriormente, o funcionamento do
compressor JPEG utilizando blocos reusáveis.
A seguir, a BVCI iniciadora e a BVCI alvo, serão
implementadas em VHDL, para obter os dados de síntese,
necessários a uma verificação consistente dos resultados.
As interfaces BVCI iniciadora e BVCI alvo, descritas em
VHDL, serão integradas ao principal módulo do
compressor JPEG: a DCT 2-D. A partir do desenvolvimento
dessas arquiteturas, poderão ser avaliados os impactos em
termos de desempenho e de uso de recursos com a
utilização da interface BVCI.
Obtidos os resultados finais dos experimentos
realizados com a interface BVCI, estes serão comparados
aos resultados obtidos em experimentos dessa mesma
natureza só que realizados utilizando as interfaces padrão
PVCI [4] e OCP [9]de reuso de hardware, experimentos
esses desenvolvidos em trabalhos paralelos.
Até o momento foi realizado um estudo detalhado da
interface BVCI e parte da descrição das interfaces BVCI
iniciadora e alvo já foi realizada em SystemC.
5. CONCLUSÕES E TRABALHOS FUTUROS
Com base no estudo da interface BVCI verificou-se a sua
maior versatilidade em relação à interface PVCI já estudada
em trabalhos anteriores, pois a interface BVCI viabiliza um
maior número de aplicações, com um melhor desempenho,
e possui um protocolo de comunicação mais completo.
Como trabalho futuro, será concluída a implementação
das interfaces BVCI em SystemC. A seguir as interfaces
desenvolvidas e seu protocolo serão validados e as
interfaces serão integradas a módulos do compressor
JPEG, apresentado no item 3 deste artigo. Por fim, será
validado o funcionamento do compressor JPEG construído
com blocos reusáveis, sempre utilizando SystemC.
A seguir serão desenvolvidos, em VHDL, alguns dos
blocos construídos e validados em SystemC, para avaliar
os impactos em termos de desempenho e de uso de
recursos no compressor JPEG, com a utilização da interface
BVCI.
Dos experimentos realizados espera-se confirmar a
contribuição do uso de interfaces padronizadas para o
reuso de hardware em projetos de sistemas em chip, tanto
pelo aumento na flexibilidade quanto pela redução no
tempo de projeto.
6. REFERÊNCIAS
[1] VSI Alliance, <www.vsia.org>, Janeiro 2004.
[2] M. Keating e P. Bricaud, Reuse Methodology Manual
for System-on-a-Chip Designs, 2ª ed., Kluwer Academic
Publishers, USA, 1999.
[3] L. Agostini, Projeto de Arquiteturas Integradas para
a Compressão de Imagens JPEG. Dissertação de Mestrado
– Universidade Federal do Rio Grande do Sul. II. PPGC,
Porto Alegre, Brasil, 2002.
[4] VSIA. On-Chip Bus Development Working Group.
Virtual Component Interface Standard (OCB 2.1.0).
Março 2000.
[5] G. Cyr, G. Bois, M. Aboulhamid, “Synthesis of
communication
interface
for
SoC
using
VSIA
recommendations”, Proc. of DATE 2001, Munich,
Allemagne/Germany, Março 2001.
[6] R. Lysecky, F. Vahid, T. Givargis, “Experiments with
the Peripheral Virtual Component Interface”, International
Symposium on System Synthesis, Madri, Espanha,
Setembro 2000.
[7] V. Bhaskaran e K. Ko nstantinides. Image and Video
Compression Standards Algorithms and Architectures,
Kluwer Academic Publishers, USA, 1999.
[8] The
International
Telegraph
and
Telephone
Consultative Committee (CCITT). “Digital Compression
and Coding of Continuous-Tone Still Images –
Requirements and Guidelines”. Rec. T.81, 1992.
[9] OCP – Iternational Partnership. Open Core Protocol
Specification (Release 1.0).2001.