ESTIMAÇÃO E CÁLCULO DE POTÊNCIA NO INÍCIO DO FLUXO DE
PROJETO USANDO SYSTEMC
André M. Dantas, Monica M. Pereira, Ivan S. Silva e Luigi Carro1
Departamento de Informática e Matemática Aplicada - UFRN
Campus Universitário – Lagoa Nova – 59.072-970 – Natal – RN – Brasil
1
Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS)
Caixa Postal 15064 – 91.501-970 – Porto Alegre – RS – Brasil
{amdantas, monica}@ciencomp.com.br, [email protected] e [email protected]
SUMMARY
Nowadays the estimation of the power consumed by embedded systems in early stages of the design
becomes hugely necessary. Specifically in portable systems the designer needs to estimate and
maximize the battery lifetime. Whoever, traditionally the design flows wait more accurate models of
the embedded systems to proceed the power consumption evaluation. This paper presents the
implementation of a methodology to estimates the power consumption of an embedded system
described in the SystemC hardware description language. The utilization of SystemC language using
the methodology presented make possible to estimate the power consumption very early at the
beginning of the simulation and verification of the system description and functionality.
RESUMO
Os requisitos dos sistemas embarcados vêm progressivamente abrangendo bem mais que o simples
processamento correto, a prioridade também tem sido direcionada para os aspectos de consumo de
potência. Este trabalho tem como finalidade apresentar uma maneira de implementar técnicas de
cálculo de potência aplicadas à uma das linguagem de descrição de hardware mais utilizadas no
mercado, o SystemC. Procurando prover simplicidade e praticidade ao projetista, ao qual será
necessário apenas algumas alterações nas suas descrições originais para obter a simulação e os
resultados estimados. A utilização dessas técnicas pode significar buscas para novas soluções ainda
dentro do espaço de projeto.
ESTIMAÇÃO E CÁLCULO DE POTÊNCIA NO INÍCIO DO FLUXO DE
PROJETO USANDO SYSTEMC
André M. Dantas, Monica M. Pereira, Ivan S. Silva e Luigi Carro1
Departamento de Informática e Matemática Aplicada - UFRN
Campus Universitário – Lagoa Nova – 59.072-970 – Natal – RN – Brasil
1
Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS)
Caixa Postal 15064 – 91.501-970 – Porto Alegre – RS – Brasil
{amdantas, monica}@ciencomp.com.br, [email protected] e [email protected]
RESUMO
Os requisitos de projeto dos sistemas embarcados vêm
progressivamente
abrangendo
aspectos
que
rotineiramente só podem ser definitivamente avaliados
quando o produto encontra -se pronto. A cada dia é mais
importante a avaliação do consumo de potência
apresentado por um produto em desenvolvimento. Este
artigo apresenta a aplicação de uma metodologia de
cálculo da potência consumida por um sistema
embarcado quando descrito na linguagem SystemC. Esta
metodologia, quando aplicada a uma das atualmente mais
utilizadas linguagens de descrição de hardware, oferece
simplicidade, praticidade e maior produtividade ao
projetista. Neste artigo a metodologia e sua aplicação são
apresentadas juntamente com estudos de caso e
comparações com outra aplicação da mesma
metodologia.
1. INTRODUÇÃO
O uso de descrições em alto nível de hardware tem se
tornado cada vez mais importante para garantir a
implementação mais adequada aos sistemas integrados de
um modo geral. O surgimento de linguagens de alto nível
especialmente projetadas para a descrição de hardware
permitiu que sistemas inteiros pudessem ser descritos e
simulados, conferindo maior produtividade as equipes de
projetistas. Por outro lado esta produtividade adicional
tornou possível a estas mesmas equipes, agregar, ainda
nas fases iniciais do projeto, preocupações que vão além
da simples correção do sistema descrito.
Para alguns sistemas, os requisitos vão além dos
tradicionais compromissos entre custo e desempenho. No
caso de sistemas embarcados, como câmeras fotográfica
digitais, telefones celulares, mp3 players, entre outros, a
preocupação com a vida útil da fonte de alimentação está
cada vez maior. Isso significa que a potência consumida
por esses sistemas precisa ser sempre a menor possível.
Ter o conhecimento de quanta potência o sistema
consome, ou até mesmo quais partes do sistema são as
maiores responsáveis por esse consumo, pode ser
fundamental para o desenvolvimento de novas soluções de
melhor desempenho, neste aspecto, ainda na fase de
exploração do espaço de projeto.
Este trabalho apresenta a aplicação em SystemC de
uma metodologia de calculo da potência consumida por
um sistema descrito nesta linguagem. Para tanto são
aplicadas técnicas já utilizadas por alguns simuladores
dessa categoria [10].
Este artigo está organizado em 6 seções. Na seção 2
encontra-se uma breve explanação sobre as linguagens de
descrição de hardware. Na seção seguinte (3) é
apresentada uma breve motivação para o cálculo do
consumo de potência a partir de descrições de alto nível
dos projetos. A Seção 4 trata de trabalhos já conhecidos
com essa função. A Seção 5 apresenta X estudos de caso e
os resultados obtidos. Por último na seção 6 encontram-se
as conclusões e algumas considerações finais.
2. DESCRIÇÃO DE HARDWARE
Logo no surgimento das linguagens e ferramentas de
descrição de hardware pouca ou quase nenhuma facilidade
adicional, além da facilidade de descrição e simulação era
oferecida. A síntese veio permitir que os sistemas antes
descritos como forma de documentação, pudessem ser
implementados tendo a descrição com importante fonte de
informação, definição e estabelecimento de requisitos. As
dificuldades encontradas eram, dentre outras, o uso dos
limitados diagramas esquemáticos, que se fundamentavam
na construção do sistema a partir de componentes básicos
(esquema bottom-up), e a grande dificuldade de manipular
ferramentas de simulação. Tais problemas foram
1
contornados com o advento das Linguagens de Descrição
de Hardware (ou HDL em inglês) que trouxeram
ferramentas que possibilitavam projeto em níveis mais
altos de abstração.
Com a necessidade crescente de otimizar os principais
requisitos dos sistemas, tais como, custo, desempenho,
consumo de potência e tempo de projeto, é que a prática
da descrição de hardware ganhou mais importância. Isso
devido à simplicidade cada vez mais evidente do uso de
linguagens especializadas, além de permitir a evolução do
projeto a partir de testes simulados, antes mesmo da
confecção do hardware.
Existe no mercado algumas opções interessantes de
linguagem de descrição de hardware, dentre elas o
Verilog, VHDL e SystemC.
2.1 Verilog
Baseia-se na descrição de módulos, que são decompostos
em outros módulos até chegar a circuitos elementares ou
elementos de biblioteca. Verilog permite aos projetistas
expressarem com módulos comportamentais, deixando os
detalhes da implementação para outras etapas do projeto
[1]. Dessa forma, permite vários níveis de detalhamento,
atendendo a necessidade de cada sistema.
2.2 VHDL
VHDL (Very High Speed Integrated Circuit Hardware
Description Language) foi originalmente utilizada para
simulação e documentação, sendo posteriormente adotada
para a síntese automatizada de sistemas digitais. O fato de
ser um padrão aberto permitiu o intercâmbio de descrições
entre várias ferramentas e sistemas de apoio ao projeto,
fazendo com que se seja hoje muito usada em projetos de
hardware [2].
2.3 SystemC
SystemC é um conjunto de definições de classes C++,
bem como uma metodologia para o uso destas definições e
classes [3]. Suporta o co-design do hardware-software e a
descrição de sistemas complexos que consistem de
componentes de software e hardware. Pode-se dizer que o
SystemC cria uma "especificação executável" de um
sistema [4].
Essa especificação executável prove grandes
benefícios, tais como evitar inconsistências e erros e
garantir a completude do sistema; assegurar uma
interpretação não ambígua para a especificação do
sistema; verificar a funcionalidade do sistema antes do
início da sua implementação; criar modelos de
performance do sistema, ou validar a performance do
sistema.
Outra importante qualidade do SystemC é utilizar-se
do paradigma da orientação a objeto e as macros do C++
que permitem estender a linguagem, sem mudar a sua
sintaxe. A descrição dos módulos e do sistema em
SystemC baseia-se na estrutura ilustrada na figura 1.
MÓDULO
MÓDULO
MÓDULO
modulo.cpp
modulo.h
ARQUITETURA
main.cpp
Figura 1. Estrutura dos sistemas em SystemC
Cada módulo possui sua descrição dividida em dois
arquivos, o cabeçalho (modulo.h) que define a interface
(portas de entrada e saída, processos e variáveis do
módulo) e o principal (modulo.cpp) que define o
comportamento das interfaces (como os processos são
implementados). No arquivo principal da descrição do
sistema (main.cpp) são instanciados cada módulo e os
sinais que os interligam.
Apesar de todas as facilidades oferecidas, o SystemC
não provê mais que a descrição e a simulação do
hardware. Tanto nela como nas outras HDLs citadas
anteriormente, ainda existe a deficiência de não abranger
diretamente o consumo de potência pela arquitetura
descrita.
3. CÁLCULO DE POTÊNCIA
Com a crescente popularização dos sistemas embarcados,
a estimativa do consumo de potência de um sistema vem
se tornando prática cada vez mais comum em projetos de
hardwares dessa categoria [5] [6] [7]. Sobretudo quando
esse estudo é realizado antes mesmo da implementação,
permitindo ao projetista avaliar o gasto da potência do seu
sistema desde o início do projeto.
O tamanho ou qualidade das baterias de telefones
celular, por exemplo, podem ser reflexos de avaliações
minuciosas de como, quanto e onde um sistema pode estar
consumido mais potência do que o necessário. Sendo
então fundamental o desenvolvimento e aprimoramento de
ferramentas capazes de estimar potência consumida a
partir de simulações realizadas da descrição do hardware.
4. TRABALHOS RELACIONADOS
Diversas formas e técnicas já foram apresentadas para se
obter o consumo de potência no início do ciclo do projeto,
entre elas pode-se citar. A estimativa da média de potência
dissipada por cada instrução executada pelo processador,
esta estimativa é feita a partir de resultados de simulação
[8]. Em [9] é apresentada um simulador de código
compilado especificamente voltado para sistemas com um
2
processador ARM, que avalia, em cada ciclo, a potência
consumida.
Existem, porém técnicas que reúnem um pouco de
cada solução. O simulador CACO-PS (Cycle-Accurate
COnfigurable Power Simulator) [10], calcula a potência
consumida em cada componente com a ajuda de uma
tabela de histórico dos sinais de entrada e saída. Com esta
tabela verifica as mudanças de valores das entradas e
realiza a estimativa a partir funções de cálculo de
potência. As funções de cálculo de potência são definidas
com base em resultados de simulações spice realizadas
para cada componente da biblioteca. CACO-PS
caracteriza-se também por apresentar, apesar de ser um
simulador de código compilado, características de um
simulador de propósito geral, pois possui uma sintaxe
permite ao projetista qualquer nível de detalhamento da
descrição. Entretanto, a utilização de uma sintaxe própria
implica na necessidade de utilização de uma linguagem de
descrição que não pode ser adequadamente utilizada em
outras etapas do desenvolvimento do projeto.
A motivação para a realização desse trabalho partiu da
percepção de que a utilização das técnicas de calculo de
consumo de potência descritas em [10] poderiam ser
vantajosamente utilizadas em descrições utilizando a
linguagem SystemC. Nas próximas seções são
apresentadas a aplicação das técnicas utilizadas pelo
CACO-PS nem uma descrição SystemC, alguns estudos
de caso realizados e os resultados obtidos.
5. TÉCNICAS DE CÁLCULO DE POTÊNCIA EM
SYSTEMC
As técnicas brevemente apresentadas na seção anterior e
originalmente proposta em [10] foram aplicadas a
descrições SystemC, procurando manter a estrutura da
descrição do sistema com poucas alterações ou nenhuma
alteração. O objetivo é evitar que futuros usuários
necessitem realizar alterações profundas em seus códigos.
Como SystemC já envolve simulações precisas ao
nível do ciclo, o trabalho focou-se na aplicação das
técnicas apresentada em [10], permitindo o calculo de
potência em qualquer nível de descrição e em
componentes ou circuitos, síncronos ou assíncronos.
Nos componentes síncronos o cálculo da potência é
feito através da verificação do chaveamento dos bits de
entrada naquele ciclo. Para isto compara-se o valor da
entrada atual com o valor da entrada anterior [10]. Para
esta comparação, são armazenados os valores dos bits de
entrada, de um ciclo para outro, em uma variável que deve
ser incluída na descrição de cada módulo. Desta forma, a
cada transição do relógio, a potência consumida simulada
daquele componente é calculada e acumulada à consumida
simulada total.
O chaveamento dos bits de entrada não é, entretanto a
única condição que leva um componente a dissipar
potência. Um registrador, por exemplo, dissipa potência
em outras duas situações [10]: consumo estático apenas
por participar da arquitetura e por chaveamento do bit de
habilitação de. O projetista deve então descrever o
consumo de cada componente em uma função de cálculo
de potência que também deve ser incluída na descrição
SystemC do componente.
O cálculo da potência dos componentes assíncronos
merece uma atenção especial. Uma vez que não possuem
relógio, a saída destes componentes é calculada usando-se
o método de sensibilidade às entradas disponível em
systemC. A potência não pode, entretanto ser calculada da
mesma forma, pois se as entradas permanecerem as
mesmas a função que calcula a potência não será
executada (já que não houve alteração nas portas de
entrada) invalidando a potência do comp onente. Um
inversor, por exemplo, possui um método que calcula sua
saída usando a sensibilidade à entrada, ou seja, quando sua
entrada é alterada seu método de saída é invocado. Se a
potência também fosse calculada deste modo não haveria
chamada ao método da potência quando a entrada
permanecer inalterada. Desta forma a variável que
acumula a potência consumida simulada não pode ser
inicializada, levando a imprecisões no calculo do consumo
de potência.
A solução encontrada foi encapsular os componentes
assíncronos em um componente hierarquicamente superior
dotado de uma entrada de relógio. Nestes componentes a
entrada de relógio é unicamente utilizada para o calculo de
potência consumida. Assim a função de cálculo
permanece sensível à transição do relógio e, da mesma
forma que o registrador, guardar o valor da entrada
anterior. Dessa forma, a todo ciclo do sistema é verificada
a mudança nos valores de entrada. A figura 2 mostra como
a solução adotada foi aplicada ao componente inversor.
A
B
P
clk
Figura 2. Esquema de módulo assíncrono
A verificação de chaveamentos de bit na transição do
relógio está exemplificada na figura 3, onde se observa
um sinal de relógio e um sinal de entrada (Entrada A) que
representa a entrada de uma porta inversora. Verifica-se
que no instante i1 o sinal Entrada A mudou de 1 para zero,
imediatamente (utilizando a sensibilidade a entrada) é
atribuída à porta de saída a negação desse valor. No
instante i2 ocorre a transição positiva do relógio, neste
instante a função de potência é invocada e, a partir da
comparação entre os valores da entrada no ciclo atual e no
ciclo anterior, calcula quantos bits foram modificados.
Posteriormente é atualizada a variável que representa o
valore de entrada no ciclo anterior. O processo descrito
continua até que não haver mais entrada, ou ciclos.
3
No caso do instante i3 ocorre uma alteração rápida da
entrada que retorna imediatamente a seu valor anterior
(glitch), antes da próxima transição do relógio. Quando
ocorre a transição do relógio, os valores que serão
comparados são iguais, não havendo possibilidade de
considerar a potência consumida nesses casos.
bit das entradas dos somadores e 1 up por chaveamento de
cada bit da entrada do componente inversor.
6.1 Primeiro Estudo de Caso
Nesse estudo de caso (figura 4) o somador receberá
constantemente o valor 5 do registrador regB, e acumulará
a soma no registrador regA.
Clock
Instante i2
Instante i1
Entrada A
Instante i3
R
E
G
B
“ 5 ”
set
reset
Caso com
“glitch”
Figura 3. Gráfico de ondas de um inversor
6. RESULTADOS
Inicialmente foram testados estudos de caso simples de
arquiteturas descritas em SystemC aplicando as técnicas
expostas na seção anterior. A seguir serão apresentados os
resultados da simulação para três arquiteturas, obtidos
tanto no CACO-PS quanto em SystemC.
Os valores usados para calcular a potência em cada
componente em todos os estudos de caso foram os mesmo
utilizados pelo CACO-PS, são eles: 4 up (unidades de
potência) por chaveamento de cada bit das entradas dos
registradores; 16 up por alteração do bit de enable dos
registradores; 5 up por cada bit do registrador por
participar da arquitetura; 8 up por chaveamento de cada
R
E
G
A
set
reset
Para que as soluções apresentadas possam ser
utilizadas por projetistas foram criadas macros de C++
definidas em um arquivo de cabeçalho (sc_potencia.h) a
serem usadas na descrição dos módulos. A macro utilizada
fornece funções e métodos para o módulo poder calcular e
fornecer a potência consumida. O usuário deve descrever
como o módulo consome potência em algum processo, tal
descrição se dá através da utilização da macro
“ZERA_POTENCIA” para atualizar o consumo a cada
vez que calculado, a função “transição_bit(valor1, valor2,
posicao_bit)” que irá verificar se houve chaveamento de
um determinado bit em uma entrada, passando como
parâmetro o valor atual e o anterior da mesma e
necessariamente utilizar a variável inteira “potencia” para
o acúmulo da soma do consumo.
Além de o usuário poder criar a função de cálculo de
potência dos seus componentes, existe também uma
biblioteca com vários componentes que podem ser
reutilizados por outros usuários. E para acessar o valor da
potencia calculada ciclo-a-ciclo, no arquivo principal, no
qual é descrita a arquitetura (main.cpp), o usuário durante
a simulação apenas precisa invocar o método de cada
módulo “getPotencia()”.
Figura 4. Estudo de caso - Acumulador
A arquitetura em SystemC compõe-se dos
componentes registrador e somador, todos possuem um
arquivo cabeçalho onde se encontra a definição da
interface suas portas de entrada e saída, o construtor e os
métodos, além do arquivo principal, o qual possui a
implementação dos métodos.
Na tabela 1 são apresentados os resultados da
simulação feita em três ciclos, descrevendo o consumo de
cada um dos componentes e o total do sistema.
Tabela 1. Resultados da simulação do primeiro estudo de
caso
Componente
Registrador A
Registrador B
Somador
Total
Ciclo 1
88 up
80 up
16 up
184 up
Ciclo 2
96 up
80 up
16 up
192 up
Ciclo 3
88 up
80 up
32 up
200 up
Total
272 up
240 up
64 up
576 up
O regB foi inicializado com o valor 5 antes da
simulação, portanto no primeiro ciclo como o registrador
já possuía esse sinal em sua entrada e a escrita havia sido
habilitada também antes da simulação, ele consome
apenas a potência por participar da arquitetura que é 80
up, considerando que os registradores possuem 16 bits. A
potência do regA no primeiro ciclo é relativa a 80 up por
participar da arquitetura e 8 up por chaveamento da
entrada. Enquanto o somador dissipa potência por
chaveamento das entradas, que no caso do primeiro ciclo
corresponde a 16 up.
4
Nos ciclos seguintes a potência dos registradores é
relativa ao chaveamento de bits das entradas e a
participação dos mesmos na arquitetura, e o somador
dissipa somente devido ao chaveamento das entradas.
6.2 Segundo Estudo de Caso
O estudo de caso a seguir (figura 5) a seguir consiste em
implementar um sistema que retorne um quando receber
três valores um na entrada. A arquitetura que representa a
máquina de estados da figura 5 possui dois componentes
que implementam portas lógicas and e três registradores,
como ilustrados na figura 6.
0
1
6.3 Terceiro Estudo de Caso
Nesse estudo de caso procura -se verificar se componentes
assíncronos estariam sendo eficientes em calcular o
consumo da potência em uma transição do relógio como
explicado na seção anterior.
A arquitetura constitui-se de dois registradores, um
somador, um componente que implementa a porta lógica
and e uma cadeia de três inversores, como ilustra a figura
7.
0
1
arquitetura, pois o bit de enable já havia sido habilitado
antes da simulação. E a potência dissipada pelo regC é
devida apenas a sua participação na arquitetura, já que
apenas no quarto ciclo haverá chaveamento dos bits da
entrada.
Nos ciclos seguintes a potência dissipada está
relacionada a participação dos registradores na arquitetura
e ao chaveamento de bits das entradas caso estas sejam
alteradas.
1
0
Figura 5. Máquina de estados
R
E
G
A
“ 5 ”
R
E
G
B
set
reset
set
reset
R
E
G
C
“ 1 ”
se t
re se t
se t
re se t
“ 1 ”
R
E
G
B
se t
re se t
R
E
G
A
Figura 7. Estudo de caso – Circuito misto
Na tabela 3 encontram-se os resultados obtidos dos
componentes, exceto do and que não consome potência
pelos mesmos motivos do estudo de caso anterior.
Figura 6. Estudo de caso – Máquina de Estados
Na tabela 2 são apresentados os resultados do consumo
somente dos registradores e do sistema, pois não é
definido nenhum tipo de consumo de potência pelo
CACO-PS aos componentes do and.
Tabela 2. Resultados da simulação do segundo estudo de caso
Componente
Ciclo 1
Ciclo 2
Ciclo 3
Total
Registrador A
Registrador B
Registrador C
Total
80 up
84 up
80 up
244 up
80 up
80 up
84 up
244 up
80 up
80 up
80 up
240 up
240 up
244 up
244 up
728 up
Assim, como no estudo de caso anterior, o regA foi
inicializado antes da simulação, portanto no primeiro ciclo
não houve alteração da sua entrada e nem do bit enable,
consumindo apenas a potência por participar da
arquitetura (80 up). O regB no primeiro ciclo dissipou
potência por chaveamento da entrada e por participar da
Tabela 3. Resultados da simulação do terceiro estudo de caso
Componente
Ciclo 1
Ciclo 2
Ciclo 3
Total
Registrador A
Registrador B
Somador
Inversores
Total
80 up
84 up
16 up
0 up
180 up
80 up
84 up
8 up
0 up
172 up
80 up
84 up
8 up
0 up
172 up
240 up
252 up
32 up
0 up
524 up
Os sinais de entrada do regA e do primeiro inversor
são inicializados antes da simulação com 5 e 0
respectivamente. Dessa maneira nenhum dos dois
consomem potência no primeiro ciclo, e como o inversor
trata-se de um componente assíncrono sua entrada foi
propagada antes mesmo do primeiro ciclo de simulação,
portanto os outros inversores também não consomem
potência. Nos ciclos seguintes, as entradas desses
inversores permanecem constantes, conseqüentemente não
havendo o chaveamento de bits, e assim justificado o
consumo nulo de potência por esses componentes.
5
O regA dissipa potência no primeiro ciclo apenas por
participar da arquitetura. A potência dissipada pelo regB
relaciona-se ao chaveamento de bits da entrada e a sua
participação na arquitetura. E a potência consumida pelo
somador deve-se apenas ao chaveamento de bits das
entradas, que no primeiro ciclo foi o chaveamento da
entrada referente à saída do registrador A.
Nos ciclos seguintes a potência dissipada pelo regA é
relativa apenas a sua participação na arquitetura. Enquanto
o regB dissipa potência por chaveamento de bits de sua
entrada e por participar da arquitetura e o somador apenas
consome potência pelo chaveamento das suas entradas.
6.4 Microcontrolador Femtojava
Visando a utilização de um estudo de caso mais
realísticos, foi simulado o processador Femtojava [11],
que é um microcontrolador baseado em operações de pilha
e que executa bytecodes Java. Esse processador foi
projetado especificamente para a utilização em sistemas
embarcados [10].
A figura 8 está representando toda a arquitetura
descrita do processador.
Na tabela 4 são apresentados os resultados obtidos a
partir de 3.940 ciclos das simulações realizadas no
simulador CACO-PS e no SystemC. O processador foi
submetido à execução do algoritmo de ordenação
quicksort, através das memórias RAM e ROM sendo
representadas por arquivos do tipo MIF gerados pelo
SASHIMI [11], que é um ambiente destinado à síntese de
sistemas microcontrolados especificados em linguagem
Java [12].
Tabela 4. Resultados da s imulação do Femtojava
RAM
CACO-PS
8.089.600 up
SystemC
10.268.076 up
ROM
296.448 up
675.328 up
Núcleo
4.642.337 up
3.959.737 up
Total
13.028.385 up
14.903.141 up
7. CONSIDERAÇÕES FINAIS
Neste atigo foi apresentada a implemenatção de uma
metodologia de calculo do consumo de potência de um
dispositivo, circuito ou sistema embarcado a partir de sua
descrição na linguagem SystemC.
Para a validação da aplicação da metodologia à
linguagem escolhida foram realizados quatro estudos de
caso. O primeiro estudo de caso verifica o consumo de
potência em um circuito acumulador. Neste estudo de caso
são verificados os consumos estático e dinâmico dos
registradores e de uma Unidade de Lógica e Aritmética
que realiza unicamente somas. O segundo estudo de caso
apresenta uma máquina de estado que reconhece o
símbolo “111”. Sua implementação envolve simplesmente
três registradores e duas portas lógicas. O terceiro estudo
de caso envolve a utilização componentes síncronos e
assíncronos. Por fim o quarto estudo de caso realiza o
cálculo do consumo de potência de um microcontrolador
qando este executa um algoritmo de ordenação
(quicksort).
Os resultados obtidos nos estudos de caso mostraram
que a metodologia apresentada em [10] pode ser aplicada
a simulações em SystemC. A utilização desta linguagem
garante ao projetista a possibilidade de utilização de uma
única linguagem para descrição, simulação com cálculo da
potencia consumida e síntese. As discrepâncias
observadas com a simulação realizadas em CACO-PS e
em SystemC estão sendo estudadas e novos estudos de
caso estão sendo realizados.
8. REFERÊNCIAS BIBLIOGRÁFICAS
Figura 8. Representação gráfica do microcontrolador
Femtojava
[1] Hyde, C. D. (1998). “Using Verilog HDL to Teach
Computer Architecture Concepts”. Em 25th International
Symposium on Computer Architecture
6
[2] Marcon, C. A. M., Calazans, N. L. V., Moraes, F. G.,
Ries, L. H. L. e Hessel, F (2002). “Modelagem e
Descrição de Sistemas Computacionais - Um Estudo de
Caso de Comparação das Linguagens VHDL e SDL”. Em
VIII Workshop IBERCHIP
[3] Open SystemC Initiative. “SystemC 2.0.1 Language
Reference
Manual”.
2003.
Disponível
em:
http://www.systemc.org
[4] Synopsys Inc. “SystemC Version 2.0 Users Guide”.
2003. Disponível em: www.systemc.org
[5] Carro, L., Corrêa, L., Cardozo, R., Moraes, F. e
Bampi, S. (2003). “Exploiting reconfigurability for lowpower control of embedded processors”. Em IEEE
International Symposium on Circuits and Systems
(ISCAS)
[6] Gervini, A. I., Corrêa, E. F., Carro, L. e Wagner, F. R.
(2003). “Avaliação de Desempenho, Área e Potência de
Mecanismos de Comunicação em Sistemas Embarcados”.
Em XXX Seminário Integrado de Software e Hardware
(SEMISH)
[7] Shiue, W.-T. e Chakrabarti, C. (1999). "Memory
Exploration for Low Power, Embedded Systems". Em
IEEE International Symposium on Circuits & Systems
(ISCAS).
[8] Tiwari, V., Malik, S. e Wolfe, A. (1994). "Power
Analysis of Embedded Software: a First Step Towards
Software Power Minimization". IEEE Transactions on
Very Large Scale Integration (VLSI) Systems. Vol. 2, No.
4, pp 437-445.
[9] Simunié, T., Benini, L. e De Micheli, G. (1999).
“Cycle-Accurate Simulation of Energy Comsumption in
Embedded Systems”. Em ACM Transaction on Design
Automation Conference (DAC)
[10] Beck F., A.C.S., Mattos, J.C.B., Rosa J., L.S.,
Wagner, F.R. e Carro, L. (2003). “CACO-PS: um
avaliador de potência”. Em Seminário Integrado de
Software e Hardware (SEMISH)
[11] Ito, S., Carro, L. e Jacobi, R. (2001). "Sashimi and
FemtoJava: Making Java Work for Microcontroller
Applications". IEEE Design & Test of Computers. Vol.
18, No. 5, pp.100-110
[12] Carro, L. e Wagner, F.R. (2003). “Sistemas
Computacionais Embarcados”. Em JAI'03 – XXII
Jornadas de Atualização em Informática, Capítulo 2.
7
Download

Estimação e Cálculo de Potência no Início do Fluxo de Projeto