Você está na página 1de 13

Avaliao de Desempenho, rea e Potncia de Mecanismos de Comunicao em Sistemas Embarcados

Alexandre I. Gervini1, Edgard de F. Corra1,2, Luigi Carro3, Flvio R. Wagner1


1

Instituto de Informtica Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15064 91501-970 Porto Alegre RS Brasil

Superintendncia de Informtica Universidade Federal do Rio Grande do Norte (UFRN) Av. Salgado Filho, 3000 59078-970 Natal RN Brasil
3

Depto. Engenharia Eltrica Universidade Federal do Rio Grande do Sul (UFRGS) Av. Osvaldo Aranha, 103 90035-190 Porto Alegre RS Brasil
{gervini, edgard, flavio}@inf.ufrgs.br, carro@eletro.ufrgs.br

Abstract. For embedded systems-on-chip whose design is software-dominated, mechanisms for communication among processes have a considerable impact on performance, power consumption, and area of the final system. This paper evaluates classic communication mechanisms, showing their impact on those metrics for an architectural platform based on an application-specific Java microcontroller. With these results, the developer of an embedded software application may estimate, at a high abstraction level, the impact of his/her design decisions on the final synthesized SoC. Resumo. Em sistemas embarcados integrados numa pastilha, cujo projeto dominado pelo software, os mecanismos adotados para comunicao entre processos tm grande influncia sobre o desempenho, a potncia consumida e a rea ocupada pelo sistema. Este artigo avalia mecanismos de comunicao clssicos, mostrando seu impacto sobre estas mtricas em uma plataforma arquitetural baseada em um microcontrolador Java dedicado aplicao. Com estes resultados, o desenvolvedor de uma aplicao de software embarcada pode estimar, num alto nvel de abstrao, o impacto de suas decises de projeto sobre o SoC sintetizado final.

1. Introduo
Os sistemas embarcados [Wolf 2001] apresentam caractersticas em comum com sistemas computacionais de propsitos gerais, mas no possuem a uniformidade desses. Cada aplicao pode apresentar requisitos diferentes de desempenho, consumo de potncia e rea ocupada, o que vai acarretar em uma combinao distinta de mdulos de hardware e software para atender estes requisitos. Em muitas aplicaes adequada a integrao do sistema em uma nica pastilha (SoC System-on-a-Chip). A arquitetura de hardware de um SoC embarcado pode conter um ou mais processadores, memrias, interfaces para perifricos e blocos dedicados. Os componentes so interligados por uma estrutura de comunicao que

pode variar de um barramento a uma rede complexa (NoC - Network-on-a-Chip) [Micheli 2002]. Os processadores podem ser de tipos diversos (RISC, VLIW, DSP, at ASIPs processadores integrados para aplicaes especficas), conforme a aplicao. O software de aplicao pode ser composto por mltiplos processos, distribudos entre diversos processadores e comunicando-se atravs de diferentes mecanismos. Em muitos casos so gerenciados atravs de um sistema operacional de tempo real (RTOS) [Burns 1997], que fornece, pelo menos, servios de comunicao e escalonamento de processos. Sendo, em geral, os projetos de sistemas embarcados dominados pelo software (aplicaes e RTOS), ideal que a explorao do espao de projeto seja feita no nvel de abstrao mais alto possvel. Esta explorao consiste em avaliar as alternativas de arquitetura de hardware e de software, verificando o impacto sobre desempenho, potncia e rea do sistema. Para que esta prvia avaliao corresponda ao sistema real necessria a utilizao de bons estimadores. A escolha da forma de comunicao (software-software, software-hardware e hardware-hardware) e do mecanismo (memria compartilhada, troca de mensagens, acesso direto memria, etc.) representa um dos aspectos mais importantes em um projeto de sistemas embarcados. Outro fator importante na explorao do espao de projeto a definio dos servios que sero fornecidos pelo RTOS. O nvel de suporte de comunicao oferecido pelas primitivas e o tamanho do sistema operacional so exemplos de alguns dos parmetros que devem ser levados em conta. As abordagens atuais para sntese de um RTOS dedicado e mnimo [Chivukula 2002] [Gauthier 2001] consideram as necessidades da aplicao, mas no consideram explicitamente o atendimento de restries de projeto como rea e potncia. Por outro lado, existem diversas abordagens para projeto de software que consideram restries de potncia [Yang 2001] [Zhang 2002], mas no especificamente no caso do projeto da comunicao. Este trabalho demonstra o impacto de dois mecanismos clssicos de comunicao (memria compartilhada e troca de mensagens) sobre o desempenho, potncia e rea de memria de um sistema embarcado. Estes mecanismos foram desenvolvidos em Java e tiveram seus custos caracterizados para uma plataforma-alvo baseada em um microcontrolador Java dedicado (ASIP). Com estes resultados, o desenvolvedor de uma aplicao de software embarcada para esta plataforma pode estimar, num alto nvel de abstrao, o impacto de suas decises de projeto sobre o sistema sintetizado final. O restante deste artigo est organizado da seguinte forma: a Seo 2 discute trabalhos relacionados. Na Seo 3 apresentada a plataforma-alvo e na Seo 4 os mecanismos de comunicao avaliados. A Seo 5 descreve a ferramenta utilizada na avaliao de potncia e desempenho dos mecanismos. Os resultados obtidos so apresentados e discutidos na Seo 6. Por fim, a Seo 7 apresenta as concluses e introduz trabalhos futuros.

2. Trabalhos Relacionados
Sistemas Embarcados geralmente interagem com o ambiente ou tem alguma funo relacionada ao tempo. Sistemas Operacionais de Tempo Real (RTOS) podem ser

utilizados na implementao do domnio de software de tais sistemas. As principais caractersticas de RTOS so:

determinismo na latncia do tratamento de interrupes; implementao otimizada para ocupar menos espao na memria e executar mais rapidamente; escalonamento baseado em prioridades; escalabilidade; suporte a multitarefas preemptivas.

Para que um sistema embarcado possa ser executado, as tarefas devem ser mapeadas para processos no sistema operacional. Tais processos podem comunicar-se atravs de estruturas providas pelo sistema operacional como caixas de mensagens ou diretamente atravs da memria compartilhada. Durante o projeto, um fator a ser considerado que tipo de sistema operacional ser utilizado: genrico ou sintetizado a partir das necessidades da aplicao. RTOS genricos, como o QNX [Oakley 1997] e o eCos [RedHat 2003], demonstram as vantagens de serem flexveis e adaptveis tendo implementaes para diferentes arquiteturas, sendo, portanto, portveis. Outros propem a sntese de um sistema operacional especfico para a aplicao. Ditze [Ditze 1998] apresenta resultados da sntese de um RTOS baseado na biblioteca DREAMS, demonstrando que a utilizao de um sistema operacional especfico resulta em um menor espao de memria ocupado e melhor desempenho. Vrios trabalhos propem a sntese do sistema operacional a partir da especificao do sistema. Em [Gauthier 2001] apresentada uma ferramenta para sntese de sistemas operacionais a partir de descries realizadas em SystemC. A comunicao entre os processos transformada em chamadas do sistema na forma de readX, writeX, onde X o tipo do dado a ser transferido. A implementao de tais chamadas de sistema varia conforme a organizao dos processos. Para processos em um mesmo processador utilizada a memria compartilhada enquanto que para processos em processadores diferentes a comunicao realizada pelo barramento utilizando-se endereos para especificar o canal a ser utilizado. Bke [Bke 2000] apresenta um ambiente para sntese do RTOS com nfase nas estruturas de comunicao. O sistema operacional construdo a partir de uma biblioteca pr-definida denominada DREAMS. Aps a anlise da aplicao possvel verificar os recursos utilizados e se a estrutura de comunicao utilizada atende aos requisitos da aplicao. Em [Brunel 2000] a sntese tambm feita considerando a comunicao entre componentes de software. Outra abordagem de sntese de RTOS apresentada em [Mooney 2002], onde o sistema operacional sintetizado como um mdulo de hardware em um SoC. De um modo geral, tanto nos casos de RTOS dedicados, como naqueles sintetizados no existe uma preocupao direta na avaliao de potncia, rea e desempenho. A prioridade a minimizao do tamanho do software. O aumento do desempenho e a minimizao da potncia e da rea, muitas vezes, so resultantes da sntese, mas no objetivo central desta.

Algumas abordagens propem anlises de consumo de potncia utilizando estimadores baseados nas instrues do processador. Em [Tiwari 1994] a estimativa obtida atravs de experimentos. Outras abordagens tambm baseadas em simulao ao nvel de instrues [Choi 2001] [Chen 2001] [Dalal 2001], consideram modelos especficos de consumo de potncia para os componentes da arquitetura (unidades funcionais, barramentos, registradores, memrias, unidades de controle) que so afetados por cada instruo, de acordo com a atividade de chaveamento das entradas dos componentes e de suas propriedades fsicas. Existem ainda abordagens [Givargis 2001] [Stitt 2000] que combinam ambos os modelos de estimativa: baseado em componentes e baseado em instrues. Alm do impacto do software na plataforma de hardware (atravs do sistema operacional, dos diferentes algoritmos possveis, do estilo de codificao e da compilao da aplicao), a gerncia da potncia do sistema tem se tornado uma parte fundamental no projeto do sistema operacional [Micheli 2000]. Quando alguns componentes do sistema no esto sendo utilizados o sistema operacional pode desliglos, enquanto permanecer esta inatividade.

3. Plataforma
A plataforma-alvo utilizada na caracterizao dos mecanismos de comunicao foi um microcontrolador Java - FemtoJava [Ito 2001]. Na sntese dos algoritmos que descrevem os mecanismos em linguagem Java foi utilizado um ambiente CAD [Ito 2000] que realiza automaticamente esta sntese para a plataforma-alvo. O microcontrolador FemtoJava baseado em pilha e executa bytecodes Java. Suas principais caractersticas so: um conjunto reduzido de instrues bytecodes, arquitetura Harvard, execuo ortogonal, tamanho pequeno e fcil insero/remoo de instrues. O FemtoJava implementa uma mquina de execuo Java em hardware atravs de uma mquina de pilha compatvel com a especificao da mquina virtual Java (JVM Java Virtual Machine). Em geral a JVM tem trs componentes principais: carregador de classe, verificador de classe e mecanismo de execuo. Os dois primeiros atuam em tempo de execuo e somente so necessrios para plataformas com multi-aplicaes ou que tenham carregamento dinmico de cdigo atravs da rede. No nosso caso usado um compilador que obedece a especificao da JVM e sintetiza uma verso de um processador FemtoJava especfico para a aplicao (ASIP - Application Specific Instruction-Set Processor). Somente as execues do ncleo e de algumas ferramentas para extrao do software em tempo de projeto so realmente necessrias. A sntese foi realizada em um ambiente CAD - SASHIMI (Systems As Software and Hardware In MIcrocontrollers) [Ito 2000] que utiliza as vantagens de compatibilidade de software atravs do microcontrolador FemtoJava. Devido flexibilidade e ao baixo custo, a sntese feita para FPGA. Esta abordagem tambm caracterizada pela alta integrao de funes, pelo ambiente simples de execuo, por ser desnecessrio desenvolver um novo compilador, pela compatibilidade de software e pela possibilidade de desenvolvimento independente de plataforma. Uma vantagem da execuo nativa de bytecodes Java a compatibilidade de software. Esta caracterstica garante a possibilidade de desenvolvimento e execuo

com independncia de plataforma. Em algumas plataformas Java (PC ou estaes de trabalho, por exemplo) somente possvel executar um programa Java. Assim, a execuo de um programa equivalente simulao do ambiente da aplicao no microcontrolador alvo, com todos os recursos e convenincias do ambiente de um computador na fase de desenvolvimento. A implementao bsica do FemtoJava tem 68 instrues e feita usando VHDL. A sntese suporta instrues para aritmtica de inteiros e operaes de bit, desvios condicionais/incondicionais, instrues load/store, operaes de pilha e dois bytecodes extras para load/store arbitrrios. Nesse ncleo todas as instrues implementadas so executadas em 3, 4, 7 ou 14 ciclos, por causa da ausncia de memria cache no microcontrolador e pela limitao de memria de vrias instrues.

4. Caracterizao dos Mecanismos de Comunicao


Os mecanismos a serem avaliados foram escolhidos dentre os mais tradicionais na comunicao de processos: memria compartilhada e troca de mensagens. Esses mecanismos foram descritos em alto nvel, em linguagem Java, com posterior sntese atravs da ferramenta SASHIMI. 4.1. Memria Compartilhada O uso compartilhado de variveis de memria para realizar a comunicao entre processos a forma de implementao mais simples, e que, em geral, deveria apresentar menor custo de potncia e melhor desempenho. Entretanto, o compartilhamento de memria vai exigir um maior cuidado para manter a consistncia dos dados no controle de escrita e leitura das variveis envolvidas. O cdigo fonte Java utilizado para descrever comunicao utilizando memria compartilhada de uma palavra (16 bits) apresentado na Figura 1.
public class mem1 { static int msg2; static int memcomp[] = new int[128]; memcomp[end] = msg0; } public static void ler(int end){ msg2 = memcomp[end]; } } // area da memoria compartilhada public static void escrever(int msg0,int end){

Figura 1 Implementao de memria compartilhada Como apresentado na Figura 1, a rea de memria compartilhada definida pelo arranjo de inteiros memcomp[ ]. O arranjo pode ser manipulado atravs dos mtodos (primitivas) escrever, utilizado para enviar um dado para um determinado endereo da memria (memcomp[ ]), e ler, que utilizado para buscar um dado da memria compartilhada para dentro de uma varivel.

4.2. Troca de Mensagens A utilizao de troca de mensagens na comunicao entre processos resolve o problema de consistncia que tem que ser tratado na memria compartilhada, mas vai exigir a existncia de um protocolo que controle o envio e o recebimento das mensagens. Este protocolo representa uma sobrecarga de processamento, provavelmente reduzindo o desempenho e aumentando o consumo de potncia. O cdigo fonte usado para descrever troca de mensagens de uma palavra (16 bits) mostrado na Figura 2.
public class Porta1 { static int msg2; static int fila[] = new int[128]; static int proximo; static int inicio; static boolean fila_cheia; static boolean fila_vazia; public static void inicializa(){ proximo = 0; inicio = 0; fila_cheia= false; fila_vazia=true; } public static void send(int msg0){ if(fila_cheia!=true) { fila[proximo] = msg0; if(proximo + 1==128){ proximo = 0; } else proximo = proximo+1; if(fila_vazia=true) fila_vazia=false; if(proximo==inicio) fila_cheia=true; } } } } } } if(fila_cheia=true) fila_cheia=false; if(proximo==inicio) fila_vazia=true; } else{ inicio = inicio+1; public static void receive(){ if(fila_vazia!=true){ msg2 = fila[inicio]; if (inicio+1==128){ inicio = 0;

Figura 2 - Implementao de troca de mensagens

5. Ferramenta de avaliao
Um simulador ciclo-a-ciclo CACO-PS (Cycle-Accurate COmpiled-code Power Simulator) [Beck 2003] do microcontrolador FemtoJava foi utilizado para prover dados do consumo de energia, uso de memria e performance. Este simulador atua sobre uma

descrio estrutural do microcontrolador, avaliando a potncia consumida por cada bloco funcional acionado a cada ciclo de relgio na execuo de cada instruo. A dissipao de potncia avaliada em termos de chaveamento de carga dos capacitores, e como o processador tem as instrues separadas da memria de dados, o mdulo de avaliao fornece tambm a avaliao distinta para as memrias RAM e ROM. Dessa forma, possvel verificar o consumo de potncia da CPU, da memria de programa e da memria de dados. Isso importante para avaliar o impacto de cada um desses blocos para melhor explorar o espao de projeto. Por exemplo, se o consumo de potncia da ROM e da RAM forem muito diferentes, verses distintas do mesmo algoritmo podem ser avaliadas para reduzir o consumo total do sistema. Um algoritmo com nfase no nmero reduzido de instrues, que utilize mais laos e registradores da CPU, implicar numa ROM reduzida e numa maior memria de dados. Por outro lado, outra verso que utilize mais constantes e instrues de endereamento imediato gerar uma menor RAM e uma memria de programa maior. O simulador coleta a quantidade de capacitncias chaveadas durante a execuo de um determinado programa e fornece o nmero de ciclos, a quantidade utilizada de memria de programa e de memria de dados, assim como o consumo de potncia. Dessa forma, o projetista pode medir facilmente o impacto sobre aspectos fsicos de seu sistema a partir de uma descrio de alto nvel de abstrao da aplicao embarcada, avaliando rapidamente o impacto de diferentes alternativas do projeto de software.

6. Avaliao dos Mecanismos de Comunicao


A avaliao dos mecanismos de comunicao foi realizada em trs etapas. Inicialmente, num nvel alto de abstrao, descreveu-se em linguagem Java o comportamento de cada um dos mecanismos a serem avaliados. Em seguida utilizou-se o ambiente SASHIMI para fazer a sntese dos mecanismos para linguagem de hardware (VHDL e MIF) em um processador alvo - FemtoJava. O passo seguinte foi utilizar os arquivos com as descries em MIF da ROM e da RAM para obter o consumo de potncia e custo de comunicao no simulador. De forma a se ter um conjunto representativo do comportamento dos mecanismos de comunicao e considerando que o FemtoJava trabalha com inteiros de 16 bits, foram realizados os experimentos mostrados na Tabela 1. Cada um dos experimentos foi realizado tanto para o caso de memria compartilhada como para o caso de troca de mensagens. Assim, para enviar dados de 64 bytes, por exemplo, tm-se as seguintes alternativas:

enviar 32 pacotes com tamanho de 2 bytes (1 inteiro); enviar 16 pacotes com tamanho de 4 bytes (2 inteiros) ou enviar 8 pacotes com tamanho de 8 bytes (4 inteiros).

Tabela 1 Conjunto de experimentos realizados

Tamanho da Mensagem Tamanho do Pacote 1 inteiro (2 bytes) 2 inteiros (4 bytes) 4 inteiros (8 bytes) 6.1. Anlise de Desempenho

8 bytes 4 pacotes 2 pacotes 1 pacote

64 bytes 32 pacotes 16 pacotes 8 pacotes

128 bytes

256 bytes

64 pacotes 128 pacotes 32 pacotes 16 pacotes 64 pacotes 32 pacotes

A anlise de desempenho feita atravs do levantamento do nmero de ciclos gasto em cada mecanismo, apresentou os resultados mostrados na Tabela 2.
Tabela 2 Nmero de ciclos gastos pelos mecanismos de comunicao MEMRIA COMPARTILHADA 1 inteiro x 8 x 64 x 128 x 256 2 inteiros x 8 x 64 x 128 x 256 4 inteiros x 8 x 64 x 128 x 256 574 4186 8314 16573 574 4186 8314 16573 524 3786 7514 14973 TROCA DE MENSAGENS 1788 13126 26040 51895 1252 8802 17410 34629 928 6210 12226 24249

Analisando os dados obtidos pode-se constatar que o mecanismo de troca de mensagens significativamente mais custoso, comparado com o de memria compartilhada, na questo do tempo de computao. Porm, esta diferena diminui conforme o aumento da palavra de dados a ser transmitida. Isto porque o custo de gerncia da fila dilui-se, pois o mecanismo para o tratamento da mesma relativamente decresce conforme o aumento da palavra de dados. Isto se torna evidente, por exemplo, observando a variao percentual de ciclos que os dois mecanismos obtiveram para enviar 256bytes de dados, com palavras de 64 bits.

Enquanto na memria compartilhada o nmero de ciclos diminuiu cerca de 10% (16573 14973), no mecanismo de troca de mensagens o valor decresce cerca de 39% (24249 14973). Um resultado peculiar foi a obteno de nmero de ciclos idnticos entre os dados de memria compartilhada, utilizando palavras de um inteiro (16 bits) e dois inteiros (32 bits). Isto ocorreu por casualidade, devido s instrues escolhidas pelo compilador. Em cada um dos casos era diferente o nmero e o grupo de instrues geradas. No entanto, uma anlise dos bytecodes gerados revelou que o caso onde ocorria o menor nmero de instrues, estas eram as que necessitavam de um maior nmero de ciclos, o que gerou um nmero total de ciclos idntico para os dois tamanhos de dados. 6.2. Anlise de Potncia O consumo de potncia, medido em capacitncias de gate (Cg), fornecido pela ferramenta CACO-PS, apresentou os resultados da Tabela 3.
Tabela 3 Potncia consumida pelos mecanismos de comunicao MEMRIA COMPARTILHADA Potncia 1 inteiro x8 x 64 x 128 x 256 2 inteiros x8 x 64 x 128 x 256 4 inteiros x8 x 64 x 128 x 256 5.071.396 35.292.187 69.832.380 138.898.060 3.948.712 26.335.360 51.956.902 103.225.496 3.196.211 20.307.086 39.897.075 79.108.788 # Ciclos 574 4186 8314 16573 574 4186 8314 16573 524 3786 7514 14973 TROCA DE MENSAGENS Potncia 8.546.373 59.009.816 116.585.716 231.778.054 5.999.682 38.575.964 75.778.420 150.256.148 4.528.034 26.799.189 52.219.850 103.069.104 # Ciclos 1788 13126 26040 51895 1252 8802 17410 34629 928 6210 12226 24249

Observando os dados da tabela constata-se que a potncia, independente do mtodo de comunicao, diminui de acordo com tamanho da palavra a ser transmitida. Ainda, novamente o mtodo de troca de mensagens mostrou-se mais custoso em relao potncia do que o de memria compartilhada. Isto j era esperado, pelo fato do mtodo de troca de mensagens possuir um nmero de ciclos maior do que o de memria compartilhada. interessante ressaltar que, conforme se aumenta os dados a serem transmitidos, maior a linearidade entre os nmeros de ciclos e a potncia, pois as operaes de escrita e leitura de dados comeam a dominar e no o processamento de CPU. Outro fator relevante, que apesar de haver uma linearidade entre os valores de

potncia e nmeros de ciclo nos dois mecanismos, esta relao no mantida interrelacionando os dois mecanismos. Isto pode ser comprovado confrontando os valores do envio de 128 bytes com palavras de 32 bits do mtodo de troca de mensagens, com o envio de 256 bytes com palavras de 32 bits no mtodo de memria compartilhada. Os valores de nmero de ciclos so semelhantes, porm os valores de potncia diferem de forma significativa. Isto ocorre porque o mecanismo de memria compartilhada est utilizando um maior nmero operaes de acessos memria, que possui um custo de potncia diferente das operaes que acessam a CPU. 6.3. Variando a Potncia da RAM Outros resultados interessantes sobre a potncia foram obtidos com a variao da potncia da memria RAM. Nesses clculos foram considerados os valores de potncia para a RAM de 23.000 Cg e 4.600 Cg. Os resultados so apresentados na Tabela 4.
Tabela 4 Potncia consumida na RAM pelos mecanismos de comunicao POTNCIA TOTAL MEMRIA COMPARTILHADA RAM(23000) 1 inteiro x8 x 64 x 128 x 256 2 inteiros x8 x 64 x 128 x 256 4 inteiros x8 x 64 x 128 x 256 5.071.396 35.292.187 69.832.380 138.898.060 3.948.712 26.335.360 51.956.902 103.225.496 3.196.211 20.307.086 39.897.075 79.108.788 RAM(4600) 1.575.396 11.188.187 22.176.380 44.138.060 1.335.912 9.296.960 18.432.102 36.727.896 1.135.411 7.684.686 15.204.275 30.275.188 TROCA DE MENSAGENS RAM(23000) 8.546.373 59.009.816 116.585.716 231.778.054 5.999.682 38.575.964 75.778.420 150.256.148 4.528.034 26.799.189 52.219.850 103.069.104 RAM(4600) 3.504.773 25.061.816 49.646.516 98.856.454 2.430.082 16.440.764 32.446.420 64.530.548 1.804.834 11.435.189 22.430.250 44.465.104

Percebe-se nitidamente, com o auxlio da Tabela 4, que com a diminuio da potncia da memria em cinco vezes, o impacto sobre a potncia total dos mtodos de comunicao diminudo significativamente. Porm, o mecanismo de troca de mensagens mais fortemente influenciado que o de memria compartilhada, pois ele possui um maior nmero operaes a serem realizadas pela CPU, que no sofrem influncia da variao de potncia sofrida pela memria RAM. Desta forma, mais custoso percentualmente realizar troca de mensagens em relao memria compartilhada conforme o valor da potncia da memria RAM diminuda. Ainda deve-se ressaltar, que com o aumento da palavra de dados diminui-se o aumento percentual de potncia em relao troca de dados na memria compartilhada, causado pela variao de potncia da memria RAM.

6.4. Anlise de rea Na tabela 5, percebe-se que, conforme o aumento da palavra de dados, o cdigo sintetizado da aplicao diminui. Isto se d pela diminuio de chamadas de mtodos causadas pelo envio de grandes pacotes de dados para memria.
Tabela 5 rea ocupada pelo cdigo dos mecanismos de comunicao MEMRIA COMPARTILHADA ROM 1 inteiro x8 x 64 x 128 x 256 2 inteiros x8 x 64 x 128 x 256 4 inteiros x8 x 64 x 128 x 256 109 439 823 1592 123 309 533 982 167 281 425 714 TROCA DE MENSAGENS ROM 243 465 721 1234 265 403 563 884 313 409 521 746

7. Concluses e trabalhos futuros


O artigo demonstrou que h grandes diferenas no impacto de dois mecanismos clssicos de comunicao (memria compartilhada e troca de mensagens) sobre o desempenho, potncia e rea de memria de um sistema embarcado implementado sobre uma plataforma-alvo baseada em um microcontrolador Java dedicado, para diferentes tamanhos de dados a serem transmitidos. A caracterizao prvia de uma biblioteca de mecanismos de comunicao , portanto, de grande utilidade para o desenvolvedor de uma aplicao de software embarcada, j que permite a ele a estimao, num alto nvel de abstrao, do impacto de suas decises de projeto sobre o sistema sintetizado final. Alm disto, a avaliao mostrou que a diferena de consumo entre a CPU e as memrias de dados e de programa tambm provoca alteraes nos custos relativos entre os dois mecanismos de comunicao. Na medida em que o custo em potncia da memria de dados torna-se da mesma ordem de valor do custo da CPU, mecanismos mais complexos como troca de mensagens tem seu custo em potncia elevado em relao a mecanismos mais simples. Isto claramente abre um espao de projeto na escolha do mecanismo de comunicao quando a diferena entre as potncias da CPU e da memria muito discrepante.

A biblioteca de comunicao est sendo estendida para outros estudos de caso, incluindo comunicao por DMA e inclusive mecanismos para comunicao softwarehardware e hardware-hardware. Esta biblioteca, devidamente caracterizada em termos de custos de projeto dos diversos mecanismos, ser integrada a uma metodologia para gerao automtica de RTOS considerando o atendimento de restries de projeto (desempenho, potncia, rea) de uma aplicao especfica. Esta metodologia faz parte de um ambiente de explorao arquitetural de alto nvel de projeto de SoCs.

Agradecimentos
Este artigo teve financiamento parcial do CNPq e CAPES.

Referncias
Beck Filho, A. C. S. (2003). CACO-PS: um avaliador de potncia. (Relatrio de Pesquisa) Porto Alegre: PPGC da UFRGS. Bke, C. (2000) Combining Two Customization Approaches: Extending the Customization Tool TEReCS for Software Synthesis of Real-Time Execution Platforms. In: Proceedings of the Workshop on Architectures of Embedded Systems. Brunel, J-Y. et al. (2000) COSY Communication IPs. In: DAC'00 Design Automation Conference, Los Angeles. Proceedings, ACM. Burns, A. and Wellings, A. (1997) Real-Time Systems and Their Programming Languages. Addison-Wesley. Chen, R., Irwin, M. J. and Bajwa, R. (2001) Architecture-Level Power Estimation and Design Experiments. In: ACM Transactions on Design Automation of Electronic Systems, vol. 6, n. 1. pp 50-66. Chivukula, R. P., Bke, C. and Ramming, F. J. (2002) Customizing the Configuration Process of an Operating System Using Hierarchy and Clustering. In: Proceedings of the 5th IEEE International Symposium on Object Oriented Real Time Distributed Computing. Crystal City. IEEE Computer Society Press. p. 280-287. Choi, K. and Chatterjee, A. (2001) "Efficient Instruction-Level Optimization Methodology for Low-Power Embedded Systems". International Symposium on System Synthesis. Montral. ACM. pp 147-152. Dalal, V. and Ravikumar, C. P. (2001) "Software Power Optimizations in an Embedded System". VLSI Design Conference. IEEE Computer Science Press. pp 254-259. Ditze, C. and Bke, C. (1998) Supporting Software Synthesis of Communication Infrastructures for Embedded Real-Time Applications. In: Proceedings of the Workshop on Distributed Computer Control Systems, Italy. Gauthier, L., Yoo, S. and Jerraya, A. (2001) Automatic Generation and Targeting of Application-Specific Operating Systems and Embedded Systems Software. In: Proceedings of the Design, Automation, and Test in Europe Conference. Munich. IEEE Computer Society Press.

Givargis, T., Vahid, F. and Henkel, J. (2001) System-Level Exploration for Paretooptimal Configurations in Parameterized Systems-on-a-chip. International Conference on Computer-Aided Design. Santa Clara. Ito, S. A., Carro, L. and Jacobi, R. (2000) "System Design Based on Single Language and Single-Chip Java ASIP Microcontroller". Design, Automation and Test in Europe Conference. Paris. IEEE Computer Society. Ito, S. A., Carro, L. and Jacobi, R. (2001) "Making Java Work for Microcontroller Applications". In: IEEE Design & Test, vol. 18, n. 5, Sept. /Oct. pp. 100-110. Micheli, G. and Benini, L. (2000) System-Level Power Optimization: Techniques And Tools. In: Proceedings of the Design, Automation, and Test in Europe Conference. Paris. IEEE Computer Society. Micheli, G. and Benini, L. (2002) "Networks-on-Chip: a New Paradigm for Systemson-Chip Design". In: Proceedings of the Design, Automation, and Test in Europe Conference. Paris. IEEE Computer Society Press. Mooney III, V. J. and Blough, D. M. (2001) "A Hardware-Software Real-Time Operating Systems Framework for SoCs". In: IEEE Design & Test of Computers, Nov. /Dec. Oakley, R. (1997) QNX microkernel technology: a scalable approach to real-time distributed and embedded systems. In: Proceedings of the Symposium on Operating System Principles. ACM. RedHat, (2003) eCos Reference Manual (http://sources.redhat.com/ ecos/docslatest/ref/ecos-ref.html), Technical Reference Manual, RedHat, Mar. Stitt, G., Vahid, F., Givargis, T. and Lysecky, R. (2000) "A First-Step Towards an Architecture Tuning Methodology". International Conference on Compilers, Architecture and Synthesis for Embedded Systems. San Jose. Tiwari, V., Malik, S. and Wolf, A. (1994) "Power Analysis of Embedded Software: a First Step Towards Software Power Minimization". In: IEEE Transactions on Very Large Scale Integration Systems, vol. 2, n. 4, Dec. pp 437-445. Wolf, W. (2001) Computers as Components. McGraw-Hill. Yang, P. et al. (2001) "Energy-Aware Runtime Scheduling for EmbeddedMultiprocessor SOCs". In: IEEE Design & Test of Computers, Sept./Oct. Zhang, Y., Hu, X., and Chen, D. Z. (2002) "Task Scheduling and Voltage Selection for Energy Minimization". In: Proceedings of the Design Automation Conference, New Orleans. ACM.

Você também pode gostar