Você está na página 1de 7

Software de Aplicao para Plataforma NoC empregado em Sistemas Embarcados Multimdia

Gustavo Siebra Lopes, Elias Teodoro da Silva Jr. Instituto Federal de Educao, Cincia e Tecnologia (IFCE) 60040-531 Fortaleza CE Brasil
gustavosiebra@gmail.com, elias@ifce.edu.br

Abstract. This work consists of application software for a multiprocessed platform oriented to multimedia embedded systems. The programming interface model adopted is called middleware, which acts on the MPSoC platform, focused on embedded systems and real-time. The software implemented is a matrix multiplier, which can be an example of a distributed application over the middeware. This paper analyses the results found during the experiments and draws conclusions about the performance of a multiprocessing system, considering the time spent for message exchanging among processors. Resumo. Esse trabalho consiste em um software de aplicao para uma plataforma multiprocessada voltada para sistemas embarcados multimdia. Para isto, foi usado um modelo de interface de programao que atua sobre uma plataforma MPSoC, voltada para sistemas embarcados e de tempo-real, chamado de middleware. O software implementado um multiplicador de matrizes que pode servir de exemplo para outras aplicaes distribudas, escritas sobre o middleware. Esse trabalho analisa os resultados encontrados durante os experimentos e tira concluses sobre o desempenho de um sistema multiprocessado, considerando o tempo gasto com troca de mensagens entre os processadores.

1 - Introduo
A complexidade dos sistemas embarcados atuais tem se tornado cada vez maior e para acompanhar esse desenvolvimento, torna-se necessrio o uso de uma plataforma multiprocessada (MPSoC-Multiprocessor SoC). Com vrias unidades de processamento trabalhando de forma distribuda, o sistema ganha desempenho sem elevar consideravelmente a potncia dissipada. No entanto, esta distribuio encontra problemas de concorrncia. Esse trabalho foi desenvolvido em uma plataforma MPSoC de processadores FemtoJava, conectados pela NoC (Network-on-Chip) SoCIN (System-on-Chip Interconnection Network). Os cdigos Java foram compilados em padro Java e processados no ambiente SASHIMI (System As Software and Hardware In MIcrocontrollers) utilizado para gerao de aplicaes especficas, baseadas em software e hardware para microcontroladores. Para verificao do seu funcionamento foi utilizado o simulador Simple, com a opo de implementao em um FPGA (Field Programmable Gate Array) por sntese lgica. O exemplo implementado, um

Multiplicador de Matrizes, levou em considerao que todo sistema multimdia utiliza matrizes como base fundamental em seu processamento.

2 A Plataforma
2.1 Hardware O FemtoJava, inicialmente apresentado por Ito (2001), sofreu diversas modificaes ao longo do seu desenvolvimento otimizando, tamanho e facilidade de programao. Atualmente, o processador composto por uma unidade de processamento baseada em arquitetura de pilha, memrias RAM e ROM integradas, portas de entrada e sada mapeadas em memria e um mecanismo de tratamento de interrupes com dois nveis de prioridade. A mquina de pilha implementa um subconjunto de instrues da JVM (Java Virtual Machine), fazendo do FemtoJava uma JVM em hardware. As instrues so divididas em: operaes com inteiros e de manipulao de bits, operaes de leitura e armazenamento na memria, desvios condicionais e incondicionais, operaes de pilha e dois pseudo-bytecodes para leitura e escrita arbitrria em memria. Seu funcionamento consistente com a especificao da JVM. Para usar esta plataforma, as classes Java da aplicao devem ser compiladas em uma ferramenta padro Java e depois processadas pelo SASHIMI. O SASHIMI um ambiente destinado sntese de sistemas microcontrolados especificados em linguagem Java. As ferramentas do ambiente SASHIMI conseguem carregar arquivos executveis Java (.class), interpretar suas estruturas internas e, portanto extrair o cdigo e outras informaes necessrias execuo da aplicao. A ferramenta l todas as classes da aplicao e gera um conjunto de arquivos VHDL (Very High Speed Integrated Circuit (VHSIC) Hardware Description Language) cujo conjunto de instrues contm somente aquelas utilizadas pela aplicao que descreve o processador e as memrias ROM (mtodos) e RAM (atributos). Esta descrio pode ser usada tanto para sntese lgica quanto para a simulao. O SASHIMI ainda pode ser considerado uma ferramenta de otimizao da JVM, pois remove do cdigo final os mtodos e atributos que no so usados em momento nenhum pela aplicao. 2.1.1 NoC SoCIN Com o aumento da complexidade de algumas aplicaes de sistemas embarcados, a procura por sistemas que atendam simultaneamente aos critrios de baixo consumo de energia, alto desempenho, flexibilidade e paralelismo esto em alta demanda. O uso de sistemas multiprocessados (MPSoCs) uma forte tendncia para sistemas embarcados nos dias atuais por oferecer elevado desempenho a um baixo custo em energia e potncia. MPSoCs (Multiprocessor Systems-on-Chip) so constitudos por vrios processadores conectados por barramento ou por uma rede interna (NoC). No entanto, barramentos oferecem suporte limitado no que diz respeito escalabilidade, reusabilidade, paralelismo e consumo de energia. Para resolver este problema foram propostas as NoCs por Benini (2002), que so inspiradas na aplicao de redes de computadores convencionais. As NoCs tm como principais vantagens: largura de banda escalvel, uso de conexes ponto-a-ponto curtas e o paralelismo na comunicao. Embora tenham como desvantagens maiores custos e latncia na comunicao, esses problemas vm

sendo reduzidos pela grande disponibilidade de transistores e por solues arquiteturais que permitem diminuir a latncia da rede e seus efeitos no desempenho da aplicao [Zeferino 2003].

2.2 Software
2.2.1 Middleware O middleware MiddleSoC foi proposto com o objetivo de prover o reuso da infraestrutura de hardware e software j existentes, aliando mecanismos que auxiliem na expresso de propriedades de tempo-real. Ele pode gerenciar adaptaes em tempo-real, deixando o programador das aplicaes livre dessa tarefa. Alm disso, a complexidade das aes de comunicao entre processadores e entre hardware e software est encapsulada em primitivas de alto nvel [Silva Jr. 2008a]. A arquitetura do MiddleSoC est organizada em camadas com nveis de abstrao diferenciados, buscando melhores resultados em parmetros como energia ou memria, alm de atender a restries temporais. Esta arquitetura foi dividida em dois nveis organizacionais: nvel de estrutura e nvel de servio, como mostra a Figura2.1.

Figura 2.1: Arquitetura do Middleware [Silva Jr. 2008a]

O nvel de estrutura oferece os recursos mais bsicos do middleware, que so a comunicao em rede e o gerenciamento multitarefa e de tempo-real. O nvel de servio oferece uma maior abstrao e utiliza os recursos implementados no nvel de estrutura, permitindo a explorao de diferentes arranjos para alocao das tarefas tanto em tempo de projeto quanto em tempo de execuo nos projetos de aplicaes embarcadas multiprocessador. Este trabalho explora mais os recursos do nvel de estrutura do middleware. As sees seguintes vo detalhar o funcionamento dos servios utilizados. 2.2.2 - API de Tempo-Real A RTSJ (Real-Time Specification for Java) [Bollella 2000] define um conjunto de especificaes de comportamento em Java, que permite desenvolver aplicaes de tempo real. Pode-se ainda usar esta API para descrever: tarefas peridicas e espordicas, oramento de tempo de processamento e deadline de tarefas. Na linguagem Java padro, a aplicao executada sobre o sistema operacional e quem faz o escalonamento das threads a JVM. Na plataforma deste trabalho, quem faz as funes de gerenciamento de threads, tpicas do RTOS (Real-Time Operating System),

a API de Wehrmeister (2004) e esta API executada sobre a JVM, desempenhada pelo processador. Como em qualquer sistema operacional de tempo real (RTOS), o escalonamento de tarefas consiste em um processo adicional no qual o processador alocado a tarefas que se encontram no estado de prontas para executar. O desenvolvedor da aplicao deve escolher o algoritmo de escalonamento mais adequado em tempo de projeto. Ento, o escalonador selecionado sintetizado juntamente com a aplicao no cdigo final do sistema embarcado. 2.2.3 - API de Comunicao Para prover as facilidades de comunicao foi desenvolvida a APICOM, introduzida em [Silva Jr., 2008a] para funcionar juntamente com o processador FemtoJava, provendo uma interface com a camada de aplicao. A APICOM permite que as aplicaes estabeleam um canal de comunicao atravs da rede que pode ser usado para prover troca de mensagens entre aplicaes que se encontram em processadores diferentes, ou no mesmo processador. O servio da API tambm permite que prioridades diferentes sejam designadas s mensagens, bem como definio de tempos mximos para o envio ou espera de mensagens. Este estabelecimento de tempo baseado no modelo da RTSJ, integrando as duas API. Do ponto de vista da aplicao, o sistema capaz de abrir e fechar conexes, assim como enviar e receber mensagens, podendo ser acessado por diferentes tarefas simultaneamente. A aplicao ainda pode enviar mensagens no modelo cliente-servidor (orientado a conexo ponto-a-ponto) ou por publish-subscribe (sem conexo prvia ponto-multiponto). Assim como no modelo OSI, o sistema de comunicao foi dividido em camadas ou nveis que prestam servios um para o outro, contribuindo para a melhor comunicao desejvel para a aplicao. Nesta API se encontram trs camadas: Transporte, Rede e Enlace. Cada uma delas tem funes especficas que complementam as demais. 2.2.4 - API Ponto Flutuante De acordo com a figura 2.2, o padro IEEE 754 recomenda os seguintes nmeros de bits, de acordo com a preciso usada. Meia Preciso: s = 1, e = 5, f = 10 (+ 1 escondido), N = 16 bits. Preciso Simples: s = 1, e = 8, f = 23 (+ 1 escondido), N = 32 bits. A expresso (N = s + e + t) corresponde ao tamanho da palavra em bits.

Figura 2.2: Modelo da representao do ponto flutuante [Viana 1999].

Este trabalho usa uma API chamada Softfloat16, que adota o padro de meia preciso. A API consegue fazer as operaes matemtica bsica de soma, subtrao, multiplicao e diviso. Nessa aplicao foram utilizados os mtodos de soma e multiplicao para fazer a multiplicao entre matrizes.

2.2.5 SIMPLE Para verificao do funcionamento de uma aplicao em plataforma FemtoJava, pode-se usar tanto um FPGA, quanto um simulador. Nesse trabalho foi usado o simulador SIMPLE [Silva Jr. 2008b], pela maior facilidade de fazer os experimentos. Ele permite uma simulao em nvel de instrues de processador, os bytecodes Java. O SIMPLE foi desenvolvido em SystemC e pode instanciar um nmero arbitrrio de processadores de acordo com o tamanho da NoC (System-On-Chip). Os dispositivos atualmente disponveis so os temporizadores, as portas de I/O, um relgio de temporeal e as interfaces de rede.

3 Multiplicador de Matrizes
3.1 - Algoritmo Nessa implementao so dadas duas matrizes A e B, resultando a multiplicao entre elas, em uma matriz C. A multiplicao de matrizes com um processador no utiliza paralelismo. Quando s h um processador operando, ele que multiplica todas as linhas de A por todas as colunas de B. Para que haja o paralelismo na multiplicao com dois processadores, preciso estabelecer uma comunicao entre dois processadores e se faz necessrio o uso de um mestre e um escravo, como no modelo de memria distribuda. No trabalho foi utilizada a API COM. Cada elemento de processamento fica responsvel por multiplicar N linhas da matriz A por todas as colunas da matriz B. O mestre deve enviar ao escravo parte da matriz A que ele deve multiplicar pela matriz B. A matriz B tambm enviada ao escravo, s que integralmente. Essas matrizes e esses limites de matrizes so enviados por mensagens, depois de estabelecida uma conexo entre eles. Quando o escravo realiza sua parte do algoritmo, ele tambm deve enviar ao mestre seus resultados para que o mestre monte a matriz C com os valores calculados nos dois processadores. Esta aplicao foi implementada e simulada e, para verificar o seu funcionamento, o resultado da operao foi pr-calculado em tempo de desenvolvimento e armazenado em uma matriz a parte, chamada Resultado. Ento, o resultado da multiplicao calculado durante a execuo do programa comparado ao resultado pr-calculado e o programa sinaliza que o clculo foi bem sucedido. 3.2 - Resultados da Simulao Os experimentos de multiplicao de duas matrizes foram feitos com o processador FemtoJava operando a 100MHz. As matrizes A e B so matrizes trinta e dois por trinta e dois utilizando nmeros reais de meia preciso. No lado mestre o cdigo Java tem 272 linhas, enquanto no lado escravo so 253 linhas. O tempo gasto pelo multiplicador de matrizes para realizar a multiplicao efetiva de matrizes foi de 407,541 ms, sendo o tempo gasto com a comunicao entre processadores de 85,448 ms. O estabelecimento de conexo, o preparo e o envio de mensagens com as matrizes, a recepo e a transformao de dados recebidos nas mensagens em matrizes novamente fazem parte do custo de comunicao.

A tabela 3.1 mostra o custo computacional para execuo do mesmo algoritmo de multiplicao de matrizes operando em apenas um processador foi de 816,040 ms. Comparando este resultado com os 407,541 ms gastos operando com dois processadores, se v o quanto se pode ganhar com o paralelismo. O paralelismo obtido neste caso com apenas dois processadores se mostra promissor.
Tabela 3.1: Medida de tempo do custo computacional para um e dois processadores

Experimentos Um Processador Dois Processadores

Custo Computacional 816,040ms 407,541ms

4 - Concluso
Este trabalho apresenta um caso de uso de uma plataforma multiprocessador baseada em uma estrutura de NoC (Network on Chip) que utiliza processadores Java. O algoritmo utilizado, multiplicao de matrizes, base de muitos outros usados em aplicaes multimdia, sendo tambm de fcil paralelizao. Os resultados confirmam que a paralelizao reduz sensivelmente o tempo de computao, alm de mostrarem que a plataforma utilizada causa um baixo overhead para as operaes escolhidas. Uma proposta de software que tambm utilize o gerenciamento de energia pode beneficiar sistemas multimdia, quanto ao desempenho e economia de baterias. No caso do multiplicador de matrizes para dois processadores, enquanto o mestre prepara uma mensagem para o escravo, o escravo apenas espera esta mensagem. Adotar uma freqncia menor para o processador (neste caso, o escravo) que no estiver operando, j resulta em um ganho de energia. Na continuidade deste trabalho sero usados outros recursos do middleware, como o gerenciamento da energia, alm de aumentar a quantidade de processadores.

Bibliografia:
Benini, L.; Demicheli, G. Networks on Chip: A New SoC Paradigm. IEEE Computer, [S.l.], v.35, n.1, p. 490-504, Jan. 2002. Bollella, G.; et al. The Real-Time Specification for Java. Massachusetts: Addison Wesley Longman, 2000. 195 p. Ito, S.A.; Carro, L.; Jacobi, R.P. Making Java Work for Microcontroller Applications. IEEE Design & Test of Computers, California, v.18, n.5, p. 100-110, Sept./Oct. 2001. Silva Jnior, E.T.; Middleware Adaptativo para Sistemas Embarcados e de TempoReal. 2008a. Tese (Doutorado em Cincia da Computao) - Instituto de Informtica, UFGRS, Porto Alegre. Silva Jnior, E. T.; Barcelos, D.; Wagner, F. R. ; Pereira, C. E. A Virtual Platform for Multiprocessor Real-Time Embedded Systems. In: international workshop on Java

technologies for real-time and embedded systems, 2008, Santa Clara. JTRES. New York : ACM, 2008b. p. 31-37. Viana, G. V. R.; Padro IEEE-754 para Aritmtica Binria de Ponto Flutuante. Cincias e Tecnologia (UECE), Fortaleza-CE, v. 1, n. 1, p. 29-33, 1999. WOLF, W. Computers as Components. Nova Iorque: McGraw-Hill, 2001. Wehrmeister, M.A.; Becker, L.B.; Pereira, C.E. Optimizing Real-Time Embedded Systems Development Using a RTSJ-based API. In: WORKSHOP ON JAVA TECHNOLOGIES FOR REAL-TIME AND EMBEDDED SYSTEMS, JTRES, 2., 2004, Agia Napa, Cyprus. Proceedings... Berlin: Springer, 2004. p. 292-302. (Lecture Notes in Computer Science, v.3292). Zeferino, C.A.; Susin, A.A. SoCIN: A parametric and scalable network-onchip. In: Symposium On Integrated Circuits And Systems Design, SBCCI, 16., 2003, So Paulo. Proceedings... Los Alamitos: IEEE Computer, 2003. p. 169-17

Você também pode gostar