ii
!
∀ #∃ %&∋(∋
∋&) ∗ ∋
∋( !++∋ ,−./.
..0∀11.
#Ε∋(∗ 5% ΦΑ3 Γ∋(Η ∋(Η∋.
;3 ∀≅≅1∀11
Banca Examinadora:
1
Suporte financeiro de: CNPq, FAPESP (processo 2005/02565-9) e CAPES (processo 0737/07-0).
vii
c Felipe Vieira Klein, 2009.
Todos os direitos reservados.
ix
Resumo
xi
aplicações, negligenciando métricas tais como energia e potência. Este trabalho apresenta
uma análise pormenorizada do consumo de energia de uma implementação estado-da-arte
de STM (Software Transactional Memory), sendo a primeira do gênero neste contexto.
Além disso, uma nova estratégia de gerenciamento de contenção baseada em DVFS (Dy-
namic Voltage and Frequency Scaling) é proposta, com o intuito de reduzir o consumo de
energia de aplicações exibindo alta contenção no barramento.
xii
Abstract
The growing demand for features to be included into electronic devices, along with tight
performance constraints, make power consumption one of the most important design cons-
traints in the CAD/EDA design flow. The constant evolution of the semiconductor tech-
nology, observed in the last decades, has considerably increased the complexity of today’s
systems, which demand exorbitant computational resources. Unfortunately, the growing
complexity leads to a higher power consumption which, in turn, has a number of undesired
side effects, such as thermal issues and increased power density, thus compromising the
overall circuit reliability. Hence, elaborated cooling solutions are required, increasing its
final cost and compromising its time-to-market. Moreover, the large amounts of energy
needed by portable devices substantially reduce their battery lifetime. The contributions
of this thesis encompass two distinct topics within the so-called low-power design. The
first one is related to RTL power macromodeling techniques. It is shown that conventi-
onal single-model techniques have intrinsic limitations that affect their accuracy. Then,
a quantitative and qualitative analysis is conducted, pinpointing the limitations of se-
veral well-known techniques, followed by a demonstration that the adoption of a single
technique may compromise the overall quality of the estimates. Subsequently, two novel
multi-model power macromodeling techniques are proposed, which exploit the strengths
of each single-model technique in order to optimize the accuracy of power estimation. The
obtained results revealed substantial improvements in accuracy, which becomes 7 times
better for the average errors, while the overall maximum estimation error is divided by 9.
The second part of this thesis is related to a topic which is gaining much attention recently
in the multi-core era: the concurrent programming paradigm widely known as transac-
tional memory, which aims at making the task of creating concurrent software simpler.
Although this is a rather active area, researchers have invariably focused on performance,
leaving other metrics such as power and energy unattended. This work presents a detailed
power analysis of a state-of-the-art STM (Software Transactional Memory) implementa-
tion, being the first one in this context. Moreover, a novel DVFS-based (Dynamic Voltage
xiii
and Frequency Scaling) contention management strategy is proposed, which reduces the
energy consumption by exploiting the slack available in applications displaying high bus
contention.
xiv
Agradecimentos
xv
Sumário
Resumo xi
Abstract xiii
Agradecimentos xv
Sumário xvii
1 Introdução 1
1.1 Panorama dos Problemas Atacados . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Contribuições deste Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Organização do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Conceitos Fundamentais 7
2.1 Potência versus Energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Dissipação de Potência em CMOS . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Potência Dinâmica e Estática . . . . . . . . . . . . . . . . . . . . . 10
2.3 Nı́veis de Abstração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Trabalhos Relacionados 17
3.1 Nı́vel RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.1 Métodos Analı́ticos (top-down) . . . . . . . . . . . . . . . . . . . . . 18
3.1.2 Métodos Empı́ricos (bottom-up) . . . . . . . . . . . . . . . . . . . . 19
xvii
3.2 Nı́vel de Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Interconexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 ORINOCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Nı́vel de Instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 Otimizações de Software . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4 Nı́vel de Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Modelagem de Baterias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1 Equação de Peukert . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.2 Modelo Baseado em Cadeias de Markov . . . . . . . . . . . . . . . 40
3.5.3 Modelagem de Eficiência . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.4 Modelo Discreto para Nı́vel de Sistema . . . . . . . . . . . . . . . . 42
3.5.5 Sistemas com Múltiplas Baterias . . . . . . . . . . . . . . . . . . . 44
3.6 Memória Transacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
xviii
6 Perfil de Consumo de Energia de Memória Transacional em Software 97
6.1 STM Adotada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.2 Plataforma de Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.3 Caracterização de Energia . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.3.1 A Ferramenta de Caracterização Parametrizável . . . . . . . . . . . 104
6.3.2 Resultados Preliminares . . . . . . . . . . . . . . . . . . . . . . . . 106
6.4 Perfilamento do STAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.5 Estratégia de Gestão de Contenção Baseada em DVFS . . . . . . . . . . . 114
7 Conclusões 117
7.1 Produção Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.2 Tópicos em Aberto para Trabalhos Futuros . . . . . . . . . . . . . . . . . . 120
xix
Lista de Tabelas
xxi
Lista de Figuras
xxiii
4.10 Esboço de um macromodelo para um multiplicador . . . . . . . . . . . . . 63
xxiv
Lista de Acrônimos
xxv
MPSoC Multi-Processor System-on-Chip
NASCUG North American SystemC User’s Group Meeting
PDE Partial Differential Equation
PFA Power Factor Approximation
PSM Power State Machine
RTL Register-Transfer level
SoC System-on-Chip/System-on-a-Chip
SMS Sampled Monitored Simulation
SPM ScratchPad Memory
SRAM Static Random Access Memory
STAMP Stanford Transactional Applications for Multi-Processing
STM Software Transactional Memory
TL2 Transactional Locking II
TLR Transactional Lock Removal
TM Transactional Memory
UMM Uncorrelated Multi-Modeling
VHDL VHSIC Hardware Description Language
VHSIC Very High Speed Integrated Circuits
VLSI Very Large Scale Integration
xxvi
Capı́tulo 1
Introdução
1
2 Capı́tulo 1. Introdução
este problema são necessárias, então, soluções paliativas para o resfriamento do chip,
aumentando o custo final do produto e seu time-to-market. Logo, sua competitividade no
mercado é reduzida.
No que diz respeito aos dispositivos portáteis, que devem ser pequenos e possuir grande
autonomia, sabe-se que há um grande hiato entre a evolução da tecnologia de baterias e
da indústria de semicondutores [135]. Para manter a portabilidade, as baterias devem ser
pequenas. No entanto, as funcionalidades complexas implementadas por estes produtos
requerem altos montantes de energia, fazendo requisitos de portabilidade e autonomia
entrarem, inevitavelmente, em conflito.
Não é à toa que alguns colocam o problema do consumo de potência como um dos que-
sitos mais crı́ticos em Computação e no projeto de semicondutores [48]. Portanto, outras
abordagens devem ser adotadas no projeto de sistemas digitais e ferramentas adequadas
devem ser providas para que essa situação seja modificada.
Tudo isto deixa claro que o projeto de sistemas digitais visando a redução do consumo
de potência e energia é chave no fluxo de projeto, formando uma área denominada low
power design.
técnica cria uma função de predição que correlaciona as estimativas produzidas por
um conjunto de macromodelos, além das propriedades dos estı́mulos aplicados às
entradas. Esta função é construı́da com o auxı́lio de métodos de análise de regressão
não-linear.
Conceitos Fundamentais
Antes da revisão bibliográfica ser introduzida, este capı́tulo define alguns conceitos básicos
relacionados à dissipação de potência e elabora sobre os nı́veis de abstração e suas inter-
relações no projeto de circuitos integrados.
A Figura 2.1 mostra, graficamente, a relação entre potência e energia no contexto deste
7
8 Capı́tulo 2. Conceitos Fundamentais
Note que a Figura 2.1 exibe três métricas de grande importância dentro do chamado
low-power design, que são: potência média, potência de pico e energia.
A escolha da métrica mais relevante dependerá, entre outros, da aplicação e do tipo
de dispositivo sendo desenvolvido. Por exemplo, para um dispositivo contendo um de-
codificador de vı́deo, a potência instantânea variará expressivamente entre momentos da
decodificação do vı́deo em si e momentos em que o mesmo aguarda alguma entrada do
usuário (e.g., seleção do vı́deo a ser reproduzido). Se este mesmo dispositivo for operado
por baterias, a energia terá mais importância dentro do projeto, pois é o principal fator
que determina o tempo de vida de uma bateria.
De forma a ilustrar este tipo de análise, a Figura 2.2 apresenta os cenários observados
em dois circuitos distintos realizando uma mesma tarefa. No Cenário 1 (à esquerda),
o circuito executa a tarefa em τ1 = 30ns, com uma potência média de P1avg = 45mW .
2.2. Dissipação de Potência em CMOS 9
Logo, a energia consumida para a execução da tarefa sob estas condições será E1 =
τ1 ×P1avg = 1,35nJ. Analisando o Cenário 2 (à direita), pode-se notar que, em comparação
ao primeiro cenário, há uma dissipação de potência significativamente menor (P2avg =
15mW ), porém com uma duração maior (τ2 = 90ns). Fazendo os cálculos de forma
similar, tem-se E2 = τ2 × P2avg = 1,35nJ. Portanto, do ponto de vista de consumo de
energia, ambos os circuitos são equivalentes. A escolha entre um ou outro projeto será
definida pelas outras restrições impostas, que incluem o atraso máximo permitido e o
perfil de dissipação de potência esperado.
O transistor pode ser visto como uma chave. Quando uma voltagem maior que uma
dada voltagem de limiar (threshold VT ) é aplicada no gate, um canal condutivo é criado
sob o mesmo, de forma a habilitar a passagem de corrente elétrica entre fonte e dreno.
Quando isto ocorre, diz-se que a chave está fechada. Da mesma forma, quando a voltagem
aplicada é menor que VT , maior é a resistividade do canal e menor é a corrente. Se o canal
é inexistente (a corrente é nula), a chave é considerada aberta.
A tecnologia do processo de fabricação CMOS é definida em termos do comprimento
do canal de condução, que é ilustrado na Figura 2.3 sob o gate (e.g., 90nm, 45nm).
Dois tipos de transistores são encontrados em qualquer circuito CMOS, que são o
NMOS (substrato do tipo-P com fonte/dreno n+ ) e o PMOS (substrato do tipo-N com
fonte/dreno p+ ). De forma simplista, a diferença funcional entre ambos está na forma
como a chave é aberta e/ou fechada. No transistor NMOS, a chave fecha quando uma
voltagem equivalente ao valor lógico 1 é aplicada no gate . No PMOS ocorre o contrário,
isto é, uma voltagem equivalente ao valor lógico 0 fecha o canal de condução.
O estudo detalhado da tecnologia e dos circuitos CMOS está fora do escopo desta tese.
O leitor interessado encontrará em Rabaey et al [117] uma análise ampla e pormenorizada
desta tecnologia.
equivalente ao valor lógico 0, o transistor NMOS abre, ao mesmo tempo em que o tran-
sistor PMOS fecha, conectando a saı́da out à Vdd e, desta forma, permitindo a carga
da capacitância CL associada à saı́da desta porta (Figura 2.4(a)). Complementarmente,
quando uma voltagem equivalente ao valor lógico 1 é aplicada, o oposto ocorre: o transis-
tor NMOS fecha, enquanto o transistor PMOS abre, fazendo com que esta mesma carga
CL seja descarregada através do terra (Figura 2.4(b)).
Figura 2.4: O inversor CMOS com seus dois transistores: PMOS (superior) e NMOS (in-
ferior)
2
Edyn = CL Vdd . (2.3)
Este comportamento é ilustrado na Figura 2.5. Isto acontece pelo fato de existir um
atraso durante a transição entre os valores lógicos. Do lado esquerdo da figura é mostrada
a linha do tempo com os valores de voltagem dos sinais de entrada (in) e saı́da (out).
Note que, por um curto intervalo durante a transição do sinal de entrada, ambos os
transistores estão fechados e conectando Vdd ao terra, criando a corrente de curto-circuito
ISC . A potência de curto-circuito pode ser descrita pela equação abaixo:
2. Igate (gate leakage): a corrente que flui diretamente do gate para o substrato;
3. Igidl (gate induced drain leakage): corrente que flui do dreno para o substrato;
4. Irev (reverse bias junction leakage): causado pela geração de buracos nas regiões de
depleção.
A potência estática tem se tornado cada vez mais importante ao longo das gerações
de tecnologia de processo. Espera-se que, a partir de 22nm, o componente estático passe
a contribuir em mais de 76% do total de potência dissipada [43].
Há diversas maneiras efetivas de gerenciar este tipo de dissipação, dentre as quais
podemos destacar: multi-VT e power gating [69]. Na primeira, o circuito é dividido em
diversas regiões, chamadas ilhas de voltagem, onde cada uma utiliza portas lógicas com
voltagem de threshold distintas, de forma a mitigar a dissipação estática. Saliente-se
que, quanto maior é VT , menor é Isub , o que contribui substancialmente para uma redução
da potência estática. Já na abordagem conhecida como power gating, há uma criteriosa
seleção de blocos lógicos cuja alimentação é cortada em perı́odos de inatividade.
14 Capı́tulo 2. Conceitos Fundamentais
Para os nı́veis mais baixos como, por exemplo, os nı́veis de circuito e lógico, estimar
potência já é uma área de pesquisa consolidada, havendo uma grande diversidade de
ferramentas de CAD (Computer-Aided Design) disponı́veis [102,139,140]. No entanto, no
nı́vel de circuitos reais esta pode ser uma tarefa excessivamente custosa, senão inviável,
16 Capı́tulo 2. Conceitos Fundamentais
em termos de tempo. O foco desta tese está nos nı́veis mais altos de abstração, onde
estão as maiores oportunidades de otimização de potência [103] e onde gargalos podem
ser detectados ainda em fases iniciais do ciclo de projeto.
O próximo capı́tulo apresenta uma seleção de trabalhos relacionados a esta tese, abran-
gendo vários nı́veis de abstração.
Capı́tulo 3
Trabalhos Relacionados
Neste capı́tulo serão revistos diversos trabalhos dentro do contexto de análise e otimização
de potência em altos nı́veis de abstração, conforme definidos na Seção 2.3.
A Seção 1.1 deu uma visão geral dos problemas estudados por esta tese de doutorado,
os quais são: (i) a modelagem de potência de sistemas digitais, no que diz respeito ao
seu componente de hardware; e (ii) o perfilamento energético de modelos de programação
concorrente modernos (memória transacional). Desta forma, este capı́tulo organiza-se
com o intuito de conglobar os trabalhos mais relevantes de ambos.
Além dos modelos de potência para os circuitos integrados, diversos modelos de bateria
serão apresentados na Seção 3.5, devido à grande importância dos dispositivos operados
por bateria no projeto de sistemas contemporâneos.
17
18 Capı́tulo 3. Trabalhos Relacionados
1. top-down (métodos analı́ticos) [28, 83, 92, 93, 99, 104, 151] e
onde GEi é o número gates equivalentes para cada bloco funcional i, Etyp é o consumo
médio de energia do gate de referência, CLi a capacitância, Vdd a voltagem de entrada, f
é a frequência de operação e Aiint é a porcentagem média dos gates que chaveiam a cada
ciclo. Um problema visı́vel é que apenas um gate é usado como referência para o consumo
de todo o circuito. Isso foi melhorado em [83], separando o circuito em várias entidades
(lógica, memória, interconexão e relógio), ajustando o cálculo de potência de acordo com
o tipo de entidade considerada.
Outras técnicas da abordagem top-down baseiam-se no conceito de entropia, da teoria
da informação, como medida de atividade do circuito. A meta é relacionar esforço compu-
tacional de cada bloco com sua dissipação de potência [92, 93, 104]. Em [104], os autores
3.1. Nı́vel RTL 19
Há algumas visı́veis limitações nesta abordagem. Primeiro, existe uma suposição
implı́cita de que a capacitância é distribuı́da uniformemente pela área do circuito e, se-
gundo, informações de temporização não são levadas em conta no cômputo da entropia.
Todavia, uma notável vantagem das técnicas top-down é a necessidade de pouca in-
formação para a geração das estimativas. Em contrapartida, esta vantagem é um dos
fatores limitantes, pela fraca relação entre os modelos e o hardware real, o que acaba
afetando a precisão destas técnicas.
Pin , Din e Dout são números reais no intervalo [0, 1], e seus valores referem-se à média
aritmética das probabilidades para todos os sinais de entrada e/ou saı́da. Logo, o macro-
modelo proposto pelos autores é uma expressão da forma
Di Di
≤ Pi ≤ 1 − (3.5)
2 2
Esta propriedade implica que a tabela utilizada não será preenchida completamente, con-
forme é ilustrado na Figura 3.1. A região sombreada da figura representa a região das
combinações válidas no plano Pin × Din .
O processo de caracterização do macromodelo consiste, então, em duas etapas:
D(in)
1
0 0.5 1 P(in)
simulação é usada, sem discretização, buscando o valor mais próximo na tabela. Caso o
valor não corresponda exatamente a algum ponto na tabela, o que geralmente é o caso,
algum procedimento de interpolação é usado com os pontos vizinhos aos valores simulados.
Em [51], apesar de os autores sugerirem interpolação, nenhuma estratégia a ser seguida
é indicada. Em [6], algumas estratégias de interpolação são sugeridas para a técnica,
além de algumas melhorias, especialmente no que diz respeito à geração de sequências
de vetores. Posteriormente, Gupta et al [53] propuseram uma melhoria em sua técnica
original, adicionando um novo parâmetro ao modelo (i.e., um novo eixo), resultando numa
tabela quadridimensional.
Outra técnica, conhecida como EqTab [4], é uma mistura entre a abordagem baseada
em equações e a baseada em tabelas. Ela foi proposta originalmente para reduzir o
tempo de caracterização, reduzindo o número de sequências necessárias para a criação do
modelo. Porém, conforme já foi mostrado em [148], um conjunto adequado de sequências
é essencial para a elaboração de modelos de alta qualidade.
Nesta técnica, uma tabela de duas dimensões é utilizada, cujos eixos são os parâmetros
Pin e Din . Ao contrário do 3DTab, que usa a média da densidade de transição e proba-
bilidade entre todos os sinais de entrada e saı́da, esta técnica considera todos os sinais
individualmente. O modelo de potência é uma expressão da seguinte forma
P ower = c0 + c1 Din (0) + ... + cm Din (m) + cm+1 Dout (1) + ... + cm+n Dout (n) (3.6)
SW × C = P (3.7)
3.1. Nı́vel RTL 23
onde PLnew e PLref são os modelos de potência para as bibliotecas nova e de referência,
respectivamente. A tarefa então restringe-se na determinação do valor de K. Como a nova
biblioteca de tecnologia é especificada de antemão, o cálculo de K é baseado no processo
de escala de uma única instância G da biblioteca. Mais especificamente, uma instância
24 Capı́tulo 3. Trabalhos Relacionados
PLnew
K= (3.9)
PLref
As técnicas propostas neste trabalho [27] foram implementadas numa ferramenta comer-
cial chamada PowerChecker, da BullDAST [114].
Técn Tab Eq Ciclos Param Bib Técn Tab Eq Ciclos Param Bib
√ √ √ √ √ √
[21] [27]
√ √
[125] [121] • • • •
√ √ √ √ √
[54] [51]
√ √ √
[52] [53]
√ √ √
[126] [20]
√ √
[31] [6]
√ √ √ √
[64] [14]
√ √ √ √ √
[4] [22]
√ √ √
[85] [95]
√ √ √ √
[65] [34]
√ √ √
[3] [110]
√ √ √
[148] [50]
[84] • • [86] • •
√ √ √ √
[35] [152]
√ √ √ √
[24] [38]
√ √ √ √
[23] [149]
√ √ √
[59] [19]
√ √ √ √ √
[37] [63]
√ √
[124] [101]
CDFGs (Control Data Flow Graphs). O problema em se estimar potência aqui pode, de
maneira simplista, ser visto como: dada uma descrição comportamental, deve-se estimar
a potência dissipada pela implementação em hardware otimizado desta descrição.
Como pode ser visto, são necessárias predições da arquitetura, da ativação dos com-
ponentes da mesma, bem como da comunicação e armazenamento. Neste contexto, isto
se traduz em [94]:
2
P ower = Na Cavg Vdd fs (3.10)
Pavg ∝ D × CT OT (3.11)
3.2.1 Interconexão
Os elementos de comunicação são, por muitas vezes, ignorados durante a otimização do
hardware no nı́vel de algoritmos. Isto tende a acontecer pois são necessárias informações
fı́sicas sobre o placement dos componentes, de sua interconexão e também da rede de
relógio. Contudo, conforme mostrado em [132,153], reduções de mais de 20% na potência
2
Do inglês, back-annotated
3
Do inglês, adaptive sampling
28 Capı́tulo 3. Trabalhos Relacionados
total podem ser obtidas com técnicas de otimização de potência cientes da interconexão.
Em [153], os autores propõem uma técnica que, ao contrário de muitos trabalhos, não se
baseia na chamada regra de Rent [33] para estimar a potência da interconexão. Esta regra
é utilizada para derivar o comprimento médio dos fios dentro de chips. Um framework
que implementa suas heurı́sticas é introduzido, onde a descrição comportamental é feita
usando-se CDFGs, e os fios são representados pelas arestas. O fluxo deste framework
inicia-se com a simulação dos CDFGs, de forma a capturar estatı́sticas de atividade em
suas arestas, que são usadas durante o processo de sı́ntese. Uma técnica chamada signal
gating é aplicada para reduzir a atividade nos fios, onde for possı́vel, e heurı́sticas que
exploram o compartilhamento e ligação de recursos são aplicadas para reduzir a potência
de interconexão. Os resultados reportam reduções na potência total de aproximadamente
27% com um aumento de área de apenas 0.5%.
Uma outra abordagem para otimização de potência ciente de interconexão, que também
não usa a regra de Rent, é apresentada em [131, 132]. Os autores argumentam que a
potência de interconexão depende fundamentalmente do comprimento dos fios e apresen-
tam um modelo onde a capacitância do fio é derivada através de métodos de regressão
linear, usando como variáveis explanatórias o comprimento do fio, o número de pinos e o
número de branch points (pontos onde o fio se divide em dois ou mais caminhos). Uma
heurı́stica de floorplanning, baseada em simulated annealing (SA) é usada para estimar
o comprimento dos fios. O algoritmo de otimização consiste em dois algoritmos SA ani-
nhados, onde o SA mais interno executa o floorplanning e o SA externo executa a ligação
(note que as duas etapas são realizadas simultaneamente). Os resultados reportados são
similares aos da técnica anterior [153], com reduções de 22% na potência total e aumento
de 2% na área.
3.2.2 ORINOCO
Muitos trabalhos de pesquisa têm sido realizados no nı́vel algorı́tmico no âmbito acadêmico,
porém um número limitado de opções é encontrado na indústria [29, 44, 103]. Uma fer-
ramenta de análise e otimização de potência comercial neste nı́vel que deve ser menci-
onada é o ORINOCO (OFFIS Research INstitute pOwer Characterizer, estimator and
Optimizer) [103, 133]. O fluxo de projeto do ORINOCO é mostrado na Figura 3.2.
O ORINOCO aceita como entrada descrições comportamentais em C, C++ ou
SystemC, que são analisadas e instrumentadas automaticamente para capturar a ati-
vidade de transição. O resultado é um CDFG, utilizado durante a fase de otimização,
3.3. Nı́vel de Instrução 29
que gera uma arquitetura otimizada para potência. Os modelos de potência utilizados são
gerados automaticamente por ferramentas de caracterização, que fazem parte do conjunto
de ferramentas do ORINOCO. Os relatórios de potência gerados auxiliam o projetista
a encontrar os pontos crı́ticos da arquitetura, facilitando a realização de modificações na
descrição algorı́tmica que gerem maior impacto na redução de potência.
i) técnicas de medição: medições reais [105] são feitas com o uso de amperı́metros
main:
mov bx, 0FF
mov bx, 0FA
...
mov bx, 0AC
...
jmp main
Cada um destes efeitos inter-instrução foi considerado pelos autores e o modelo de potência
resultante é: X X X
Eprog = (Bi Ni ) + (Oi,j Ni,j ) + Ek (3.13)
i i,j k
2. Variações nos dados tem uma contribuição significativa para a variação de potência
para uma dada instrução, ao contrário do que é afirmado em [143].
Xn Xn
Eprog = (( Pavgi nai ) + ( nsi ) ∗ Pstall ) × T (3.14)
i=1 i=1
32 Capı́tulo 3. Trabalhos Relacionados
25, 30, 47, 79, 89, 100, 115, 123, 134, 150].
I−cache
ASIP
core D−cache SRAM
Memória
IP principal IP
core (DRAM) core
IP
Processador de core
uso geral Cache
(ex. PowerPC)
5
Do inglês, profiled
36 Capı́tulo 3. Trabalhos Relacionados
K
C= (3.16)
Iα
onde C é a capacidade energética da bateria, K é uma constante referente às propriedades
quı́micas da bateria e I é a corrente de descarga. O valor de α também é determinado
empiricamente, de acordo com as propriedades quı́micas da bateria, onde α = 0 é usado
para o caso de baterias ideais. Para baterias reais, este valor fica em torno de 0.7.
Este modelo é útil como uma aproximação e exige pouco esforço computacional.
Porém, caracterı́sticas como a capacidade de recuperação não são levados em conta. Ou-
tra limitação deste modelo é que apenas taxas de descarga constantes são consideradas,
o que não é verdade para a maioria dos sistemas reais.
modelo estocástico é mostrado na Figura 3.5, onde os estados de carga da bateria são
modelados como uma cadeia de Markov. O comportamento da célula de bateria é mode-
lado como um processo estocástico com tempo discreto. Cada estado da cadeia define o
atual estado de carga da bateria, onde N denota bateria cheia e 0 denota bateria vazia.
As transições entre os estados indicam descarga (forward transitions) e carga (backward
transitions), que representa a capacidade de recuperação da bateria. A cada unidade de
tempo, o estado de carga sai de i para i − n, onde n é o número de unidades de carga
requerido da bateria. Da mesma forma, quando nenhuma unidade de carga da bateria é
demandada, uma transição de i para i + 1 pode ocorrer.
Pelo fato deste modelo incluir a capacidade de recarga das baterias, um número de
unidades de carga maior que N pode ser utilizado, desta forma, melhorando o desempenho
da bateria. Este modelo foi validado comparando-se os resultados com os de um modelo
PDE e o erro máximo obtido foi de 3%.
Este modelo aproxima um comportamento contı́nuo através da discretização do pro-
cesso de descarga e carga (capacidade de recuperação). Isto é um problema no que diz
respeito ao processo de caracterização deste modelo, tornando difı́cil a sua utilização para
diferentes tipos de bateria com diferentes caracterı́sticas quı́micas.
µ = f (I) (3.19)
Como pode ser notado, este modelo é de baixa complexidade de implementação e bom
desempenho de simulação, o que o torna adequado para uso em nı́vel de sistema. Os
autores reportam erros médios de 0.52% em seus experimentos.
publicações na literatura nesta direção. Em HTM, este cenário não é muito diferente,
com apenas alguns trabalhos [42, 97, 98] disponı́veis. Em [97, 98], os autores concluem
que, na ocorrência de poucos conflitos, a abordagem de HTM pode ser vantajosa tanto
em desempenho quanto em energia com relação à locks. Os autores em [42] avaliam uma
HTM implementada numa arquitetura embarcada e também propõem duas otimizações:
(i) um semáforo em hardware no qual os processadores executam os perı́odos de spin-lock
em memória scratchpad (mais eficiente em termos de energia); e (ii) uma estratégia para
desligar a cache transacional em caso de subutilização.
Herlihy e Moss [58] cunharam o termo memória transacional com sua proposta de
implementação em hardware das operações atômicas do tipo read-modify-write para um
número arbitrário (limitado) de posições de memória. Nesta abordagem, o processador
foi estendido com seis novas instruções para o gerenciamento de dados transacionais.
Uma cache transacional também foi adicionada, paralelamente à cache convencional, cuja
função é reter os dados transacionais criados com o uso das novas instruções. O protocolo
de coerência de cache foi modificado de forma a detectar conflitos nos acessos à memória
compartilhada entre os processadores.
Outra abordagem em hardware é a TLR [119] (Transactional Lock Removal), onde a
resolução de conflitos é suportada em hardware no protocolo de coerência e nos controlado-
res de cache. O mecanismo de resolução de conflitos baseia-se em timestamps e emprega
relógios lógicos de Lamport [75], além do algoritmo wound-wait, que garante que uma
transação de maior prioridade jamais espere por uma transação com menor prioridade,
forçando-a a esperar ou reiniciar em caso de existência de conflitos.
No contexto dos trabalhos em software, uma proposta proeminente é a DSTM [57],
que foi implementada como uma biblioteca. A granularidade das transações é definida
em termos de objetos (e.g. Java), que são clonados localmente dentro das transações. As
modificações são efetuadas diretamente na cópia privada (clone) e, eventualmente, o clone
irá substituir a versão original no caso de um commit. O programador utiliza a DSTM
fazendo uso das classes e métodos da biblioteca, encapsulando cada objeto envolvido numa
transação dentro de um contêiner.
No caso da TL2 [36], a granularidade é definida em termos de palavras. Nesta abor-
dagem, há um arranjo de locks versionados que controlam os acessos à memória com-
partilhada. Uma função de hash mapeia cada endereço de memória para uma posição
deste arranjo. Cada elemento deste arranjo ou contém um ponteiro para o descritor da
transação (caso o lock correspondente tenha sido adquirido), ou contém a versão atual
para esta posição de memória (baseada num número de versão global). O funcionamento
3.6. Memória Transacional 49
da TL2 pode ser resumido como segue: no inı́cio de cada transação, faz-se uma cópia
local do número de versão global. Durante sua execução, barreiras de leitura/escrita são
utilizados ao invés de chamadas diretas a loads/stores. Uma barreira de leitura garante a
consistência da execução através da comparação do número de versão global com a versão
do lock da palavra carregada. Uma barreira de escrita faz o valor sendo escrito ser armaze-
nado localmente num buffer de escrita. A etapa de commit inicia-se adquirindo os locks de
todas as entradas no buffer de escrita, seguido pelo incremento, efetuado atomicamente,
do número de versão global. Depois disso, o conjunto de leitura da transação é validado,
as modificações são confirmadas na memória principal e os locks são liberados. Se, em
algum dos passos anteriores, for encontrada alguma inconsistência, a transação é abortada
e re-executada. Esta abordagem de STM foi escolhida para a avaliação experimental feita
no Capı́tulo 6.
Outros trabalhos propuseram abordagens de memória transacional chamadas de
hı́bridas. Na proposta em [74], as transações podem ser executadas tanto em HTM (gra-
nularidade em termos de linhas de cache) quanto em STM (DSTM, com granularidade
em termos de objetos). O trabalho estende o conjunto de instruções do processador com
instruções para a execução de ambos os modos de operação (hardware e software). Um dos
requisitos desta abordagem é a necessidade de haver duas versões de cada transação, uma
para cada modo. Os autores descrevem o uso de heurı́sticas para determinar o modo de
execução: cada transação tenta executar em modo HTM por três vezes antes de alternar
para STM.
O próximo capı́tulo descreve a infraestrutura desenvolvida neste trabalho para análise
e modelagem de potência.
Capı́tulo 4
51
52 Capı́tulo 4. PowerSC: o Arcabouço para Análise de Potência
Numa abordagem bottom-up, os nı́veis mais baixos de abstração são geralmente utiliza-
dos para a criação de modelos de potência para os imediatamente superiores. Há o suporte
à descrições em SystemC gate-level, para que o processo de modelagem de potência possa
ser realizado desde os nı́veis mais baixos, onde há uma precisão maior, até os mais altos,
onde o desempenho de simulação é superior.
A Figura 4.1 apresenta dois fluxos de projeto complementares e ortogonais. Do lado
direito, o fluxo SystemC puro é mostrado. Do lado esquerdo, o fluxo da PowerSC é
ilustrado com mais detalhes.
Design
Refinement
SystemC Config.
Design Files
PowerSC
Library SystemC
Library
C++ Compiler
PowerSC SystemC
Executable Specification Executable Specification
Simulation Usual
for Power Simulation
Reports Reports
PowerSC flow
1 #i n c l u d e <s y s t e m c . h>
2 #i n c l u d e <p o w e r s c . h> // <−− m o d i f i c a c a o o b r i g a t o r i a −−
3 #i n c l u d e ” muls32 . h”
4 .. ,
5 SC MODULE( r t l e x a m p l e ) {
6 sc in clk clk ;
7 ...
8 s c s i g n a l <s c u i n t <2> > s i g 1 , s i g 2 ; // s i n a i s
9 ...
10 MulS32 ∗ mult ;
11 ...
12 };
13 ...
14 i n t s c m a i n ( i n t a r g c , char ∗∗ a r g v ) {
15 . . . // i n s t a n c i a c a o de modulos
16 s c s t a r t ( /∗ tempo de s i m u l a c a o ∗/ ) ;
17 PSC REPORT POWER; // <−− i s t o tambem e ’ n e c e s s a r i o −−
18 return ( 0 ) ;
19 }
para uma dada biblioteca de tecnologia. Os passos necessários para tal são mostrados na
Figura 4.3.
A biblioteca-base (contendo componentes, tais como, somadores e multiplicadores) é
construı́da a partir de uma biblioteca de tecnologia no formato Liberty [138] usando uma
ferramenta do pacote Cynthesizer [44]. Os componentes são descritos em SystemC no
nı́vel RT (SC RTL) e em Verilog em nı́vel de portas lógicas (V GATES).
Dado que, neste trabalho, o foco está numa representação unificada dentro do ar-
cabouço, foram implementados dois conversores, que realizam a tradução de formatos
externos para SystemC, como segue:
• a ferramenta vlog2sc traduz cada netlist3 encontrada em V GATES para uma des-
crição funcionalmente equivalente em SystemC;
As descrições gramaticais destes tradutores foram elaboradas com o auxı́lio do ANTLR [40,
3
netlist – lista de portas lógicas e suas interconexões que representam um circuito.
4.1. Caracterização de Potência no Nı́vel de Portas Lógicas 55
Technology C++
A B technology
Library (.lib) lib2psclib psclib2sc
library
SystemC SystemC
RTL Design Gate−level Design
108], que é uma ferramenta para reconhecimento de linguagens apta a gerar parsers em
uma grande diversidades de linguagens, tais como C++, que foi a linguagem-alvo seleci-
onada.
Os arquivos produzidos pelas ferramentas de conversão resultam na chamada biblioteca
de componentes em SystemC gate-level (SC GATES), que substitui a biblioteca Verilog.
O usuário pode, então, selecionar entre simulação no nı́vel RT ou de portas lógicas
através da seleção do componente da biblioteca apropriada: SC GATES ou SC RTL.
A estimativa de potência é feita da mesma forma como mostrado na Figura 4.2. Note
que, independente do nı́vel de abstração, os aspectos da PowerSC visı́veis ao usuário são
exatamente os mesmos.
O processo de conversão é ilustrado através de alguns exemplos de arquivos de en-
trada e saı́da. Inicialmente, considere as conversões representadas pelos pontos A e B
da Figura 4.3. Um trecho da descrição de uma biblioteca de tecnologia 0.13µm é exibido
na Figura 4.4 (ponto A da Figura 4.3) no formato PSCLib, que é uma versão simplifi-
cada de Liberty. Diversos atributos são definidos neste arquivo. Note que, no inicio do
código, as unidades adotadas são determinadas, seguidas pela descrição de uma das células
existentes na biblioteca (xor2v0x1). Estas informações habilitam o cálculo da potência
dissipada pelas células, bem como a geração automática de código em SystemC das mes-
mas. Como pode ser visto, os valores de potência estática (leakage power), dados sobre
capacitância nos pinos de entrada/saı́da (a, b, z), e potência dinâmica (obtida através da
tabela internal power) estão presentes. A semântica de cada célula é descrita pelo atri-
buto function que, neste exemplo, representa a porta lógica XOR (OU-exclusivo). Este
arquivo de entrada é convertido automaticamente para C++ (ponto B da Figura 4.3),
56 Capı́tulo 4. PowerSC: o Arcabouço para Análise de Potência
é conectado a um sinal rotulado como N74 e seus pinos de entrada (a, b) são conectados,
respectivamente, às segundas entradas dos sinais externos de 4 bits a e b. Este arquivo é
convertido em um modelo SystemC, conforme o esboço apresentado na Figura 4.7. Note
que, na primeira linha, a biblioteca de tecnologia gerada pela psclib2sc é incluı́da no mo-
delo. Observe que tal descrição simplesmente instancia e conecta as células da biblioteca
de tecnologia, além de definir entradas/saı́das, e declarar os sinais utilizados no modelo.
Este procedimento é conduzido de maneira muito similar ao que é feito num modelo
SystemC convencional.
A PowerSC habilita a modelagem em diversos nı́veis de abstração, dentre os quais
estão o nı́vel de portas lógicas e o nı́vel RT, conforme é apresentado na próxima seção.
58 Capı́tulo 4. PowerSC: o Arcabouço para Análise de Potência
1 const double L i b U n i t s : : v o l t a g e = 1 ;
2 const double L i b U n i t s : : c a p a c i t i v e = 1e −15;
3 const double L i b U n i t s : : t i m e = 1e −12;
4 const double L i b U n i t s : : l e a k a g e p o w e r = 1e −12;
5 const double L i b U n i t s : : d y n a m i c p o w e r = 0 . 0 0 1 ;
6 ...
7 void x o r 2 v 0 x 1 : : p r o c ( )
8 {
9 z . write ( a . read () ˆ b . read ( ) ) ;
10 }
11
12 xor2v0x1 : : ˜ xor2v0x1 ()
13 {
14 #i f d e f POWER SIM
15 sc interface ∗ if a = a. get interface ();
16 p s c o b j i n f o i f ∗ p a = dynamic cast<p s c o b j i n f o i f ∗>( i f a ) ;
17
18 sc interface ∗ if b = b. get interface ();
19 p s c o b j i n f o i f ∗ p b = dynamic cast<p s c o b j i n f o i f ∗>( i f b ) ;
20
21 sc interface ∗ if z = z . get interface ();
22 p s c o b j i n f o i f ∗ p z = dynamic cast<p s c o b j i n f o i f ∗>( i f z ) ;
23 ...
24 double E b z n = p s c g e o m e t r i c c e n t r o i d ( p t s b z n ,
25 p b −>g e t n e t d e l a y ( ) ,
26 p z −>g e t n e t l o a d ( ) ) ;
27
28 p s c c e l l p o w e r i n f o i n f o ( name ( ) , c e l l t y p e ) ;
29
30 i n f o . s e t l e v e l (PSC GATE LEVEL ) ;
31 info . set leak power ( leakage power ) ;
32 p s c p i n p o w e r i n f o p w r a z n ( p z −>g e t i d () , E a z n );
33 p w r a z n . s e t r e l p i n s ( 1 , p a −>g e t i d ( ) . c str ());
34 i n f o . add ( p w r a z n ) ;
35 p s c p i n p o w e r i n f o p w r b z n ( p z −>g e t i d () , E b z n );
36 p w r b z n . s e t r e l p i n s ( 1 , p b −>g e t i d ( ) . c str ());
37 i n f o . add ( p w r b z n ) ;
38 PSC INSERT CELL( i n f o ) ;
39 #e n d i f
40 }
Figura 4.5: Arquivo-exemplo de saı́da gerado pela psclib2sc para a porta lógica xor2v0x1
4.1. Caracterização de Potência no Nı́vel de Portas Lógicas 59
1 #i n c l u d e ” t e c h l i b r a r y . h”
2 ...
3 SC MODULE( Add4 )
4 {
5 s c i n <bool> a [ 4 ] ;
6 s c i n <bool> b [ 4 ] ;
7 sc out<bool> o u t 1 [ 4 ] ;
8
9 xor2v0x1 ∗ I22 ;
10 ...
11 p s c s i g n a l b o o l N74 ;
12 ...
13 SC CTOR( Add4 )
14 {
15 I 2 2 = new x o r 2 v 0 x 1 ( ” I 2 2 ” ) ;
16 I 2 2 −>z ( N74 ) ;
17 I 2 2 −>a ( a [ 1 ] ) ;
18 I 2 2 −>b ( b [ 1 ] ) ;
19 ...
20 PSC OBJ ALIAS( N74 , ”N74” ) ;
21 }
22 };
23
24 SC MODULE( A d d 4 w r a p p e r )
25 {
26 s c i n <s c u i n t <4> > a ;
27 s c i n <s c u i n t <4> > b ;
28 sc out<s c u i n t <4> > o u t 1 ;
29
30 Add4 ∗ a d d 4 0 ;
31 ...
32 }
33
34 #d e f i n e Add4 Add4 wrapper
Figura 4.7: Arquivo-exemplo de saı́da gerado pela vlog2sc referente ao componente Add4
4.2. Modelagem e Estimativa de Potência no nı́vel RT 61
1 c l a s s psc macromodel {
2 ...
3 public :
4 v i r t u a l void i n i t p o w e r m a p ( ) ;
5 v i r t u a l double g e t p o w e r ( const psc macromodel parms & ) ;
6 ...
7 };
Os detalhes internos são omitidos do usuário, que deve apenas criar o código para
as seguintes funções virtuais, usadas internamente pela PowerSC para o cômputo da
potência:
• get_power: esta função contém o comportamento a ser executado tendo como base
o seu parâmetro psc_macromodel_parms, que resultará na estimativa de potência.
Por exemplo, os atributos da classe psc_macromodel_parms derivada poderiam ser
as estatı́sticas de sinal. A PowerSC invoca esta função internamente de forma a
gerar os relatórios de potência de um modelo de potência especı́fico.
1 SC MODULE( MulS16 ) {
2 s c i n <s c i n t <16> > i n 1 ;
3 s c i n <s c i n t <16> > i n 2 ;
4 sc out<s c i n t <32> > o u t 1 ;
5 ...
6 void s o m e p r o c e s s ( ) ;
7 ...
8 PSC MACROMODEL MulS16 ;
9 ...
10 SC CTOR( MulS16 ) ;
11 } ;
1 ...
2 #i f d e f POWER SIM
3 #d e f i n e PSC MACROMODEL MulS16\
4 s t a t i c const char ∗ c e l l t y p e ; \
5 s t a t i c psc macromodel MulS16 EqTab p o w e r m o d e l ; \
6 ˜ MulS16 ( )
7 #e l s e
8 #d e f i n e PSC MACROMODEL MulS16
9 #e n d i f
10 ...
11 #d e f i n e TOTAL POINTS 59
12 ...
13 c l a s s psc macromodel parms MulS16 EqTab :
14 p u b l i c psc macromodel parms {
15 public :
16 psc macromodel parms MulS16 EqTab ( ) ;
17 ...
18 };
19
20 c l a s s psc macromodel MulS16 EqTab : p u b l i c psc macromodel {
21 private :
22 s t a t i c const double m o d e l c o e f f s [ TOTAL POINTS + 1 ] [ 6 4 + 1 ] ;
23
24 public :
25 void i n i t p o w e r m a p ( ) ;
26 double g e t p o w e r ( const psc macromodel parms & p ) ;
27 ...
28 };
Tanto a Academia quanto a Indústria têm investido notáveis quantias de recursos e tempo
em pesquisa e desenvolvimento no contexto de projeto de circuitos integrados visando
baixo consumo de potência. Os nı́veis mais baixos de abstração, como o de circuito e o
de gates, foram os que receberam as maiores fatias deste investimento, atingindo elevados
patamares de solidez. Isto pode ser notado pelas diversas ferramentas industriais [61,102,
116, 139, 140] disponı́veis com ampla aceitação dos projetistas de hardware.
O crescente aumento de complexidade dos sistemas digitais contemporâneos tem forçado
os projetistas a conduzirem o desenvolvimento de seus projetos em nı́veis de abstração
cada vez mais altos. Ainda que diversos trabalhos sejam encontrados na literatura, con-
forme apresentado no Capı́tulo 3, o grau de consolidação da pesquisa nestes nı́veis ainda
está aquém dos padrões exigidos pela indústria.
Dentre os problemas encontrados, pode-se mencionar a precisão das estimativas gera-
das. Este problema é consequência, principalmente, da informação imprecisa do hardware
final nas descrições do sistema. Caracterı́sticas importantes, tais como, comprimento de
fios, roteamento, distribuição de relógio entre outros, encontram-se disponı́veis somente
nos últimos estágios de projeto.
Segundo Macii e Poncino, o nı́vel RT está atualmente no limiar entre a Academia
e a Indústria [91]. Uma caracterı́stica dos modelos de potência neste nı́vel é que sua
precisão é extremamente sensı́vel ao conjunto de treinamento utilizado, bem como às
variáveis selecionadas para sua criação. Um dos fatores responsáveis pelas técnicas de
macromodelagem RTL ainda não terem se tornado um padrão de facto, é o conjunto de
suposições feitas por cada técnica. Tais suposições distintas causam, fatalmente, algum
tipo de limitação intrı́nseca no modelo que, por sua vez, afetam a precisão das predições.
A maioria das abordagens existentes se baseia numa única técnica de macromode-
65
66 Capı́tulo 5. A Abordagem de Múltiplos Modelos
O modelo 4DTab baseia-se nas seguintes propriedades de sinal: (i) a média da probabili-
dade de sinal de entrada Pin ; (ii) a média da densidade de transição de entrada Din ; (iii)
68 Capı́tulo 5. A Abordagem de Múltiplos Modelos
P ower = c0 + c1 ∗ Din (0) + c2 ∗ Din (1) + ... + cn+m−1 ∗ Dout (m − 2) + cn+m ∗ Dout (m − 1)
5.1. Limitações da Abordagem de Modelo Único 69
A técnica EqTab baseia-se numa LUT que é indexada por (Pin , Din ). Para cada entrada
desta tabela, ao invés de diretamente armazenar um valor de potência, a entrada cor-
respondente, na verdade, armazena os coeficientes da equação acima. Como resultado, a
estimativa consiste em três passos:
Basicamente, o macromodelo eHD é uma equação que expressa potência como uma função
de duas propriedades de sinal distintas: (i) a distância de Hamming e (ii) o número de
2
fitting coefficients
70 Capı́tulo 5. A Abordagem de Múltiplos Modelos
bits estáveis entre dois vetores de entrada sucessivos (a técnica não emprega sinais de
saı́da). Dados dois vetores de entrada u e v com n bits cada, a distância de Hamming (h)
e o número de bits estáveis (s) com valor ‘1’ são definidos, respectivamente, como:
h(u, v) = |{i|(ui 6= vi )}|, para 1 ≤ i ≤ n; e
s(u, v) = |{i|(ui = vi = 1)}|, para 1 ≤ i ≤ n.
De forma oposta às técnicas anteriores, o macromodelo eHD calcula a potência por
ciclo, como segue.
Seja Eh,s uma classe de evento de chaveamento representando as propriedades de um
par de vetores, onde h é sua distância de Hamming e s é seu número de bits estáveis em
1. Sejam P ower(c) o consumo de potência no c-ésimo ciclo de simulação e n o número de
bits de entrada. A equação do macromodelo eHD é definida como segue, onde ph,s denota
a contribuição do evento de chaveamento Eh,s para o consumo de potência e δh,s denota
se tal evento ocorreu ou não no ciclo c.
δ1,n−1
..
h i
P ower(c) = p1,n−1 · · · pn,0 . (5.1)
δn,0
Dada uma stream de entrada, a estimativa começa calculando-se h(u, v) e s(u, v) para
cada par (u, v) de vetores sucessivos. Então, os ativadores associados com eventos ocor-
rendo num dado ciclo c são determinados e a Equação 5.1 retorna o consumo de potência
para aquele ciclo. O consumo de potência total é obtido agregando-se a contribuição de
todos os ciclos.
A caracterização de componentes começa com a geração de streams de entrada criadas
aleatoriamente. Então, para todas as streams, cada par (u, v) de seus sucessivos vetores
é injetada nas entradas do componente e as funções h(u, v) e s(u, v) são avaliadas. O
consumo de potência resultante é determinado com um modelo de potência pré-existente
do componente, descrito em um nı́vel de abstração inferior. Finalmente, para todas as
streams com um mesmo (h, s), a potência média ph,s é calculada.
5.1. Limitações da Abordagem de Modelo Único 71
1. Para cada tupla válida (Pin , SCin , Din ), diversas streams são geradas, tentando-se
cobrir ao máximo o espaço de entrada.
3. Os valores resultantes (Pin , SCin , Din , Dout , P ower) são usados, de acordo com a
equação acima, num método de análise de regressão de forma a obter-se os coefici-
entes (c0 , c1 , ..., c14 ) da equação do macromodelo.
usando-se 0.1 como passo de discretização. Um conjunto de 5000 streams foi gerado de
forma a cobrir o espaço Pin x Din adequadamente. Então, as estimativas obtidas com
os macromodelos em RTL foram comparadas às estimativas em gate-level, para cada par
(Pin , Din ).
Os resultados obtidos com estes experimentos são mostrados nas Figuras 5.1, 5.2, 5.3
e 5.4, onde a distribuição de erros no espaço Pin × Din é revelada para ambos os exemplos,
e para as quatro técnicas adotadas.
Note que, para um dado componente, os distintos macromodelos levam a erros médios
bem diferentes. Por exemplo, independente do componente escolhido, o macromodelo eHD
leva aos maiores erros médios para as streams de entrada cuja densidade de transição está
dentro do intervalo [0.0,0.1]. Isto significa que 4DTab, EqTab ou Analytical poderiam ser
uma melhor escolha para tais streams. No entanto, para as streams cuja densidade de
transição é maior que 0.6, eHD exibe uma melhor precisão, competitiva em relação às
outras técnicas.
5.1. Limitações da Abordagem de Modelo Único 73
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
(b) MulS16
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
(b) MulS16
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
(b) MulS16
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
1.0 0%-10%
10%-20%
20%-40%
40%-100%
0.8 >100%
0.6
Din
0.4
0.2
0.0
(b) MulS16
Note que apenas a última (D15 ) e as três primeiras entradas (D0,1,2 ), de fato, chaveiam
para esta stream. Isto significa que parte do circuito MulS16 não é estimulado, ao contrário
da distribuição uniforme suposta pela 4DTab, o que implicaria nas seguintes densidades
de transição:
(D0 , D1 , ..., D15 ) = (0.006875, 0.006875, ..., 0.006875).
Pode-se, portanto, concluir que, apesar de terem um mesmo valor de Din , padrões
de estı́mulo completamente distintos como estes provavelmente levarão a estimativas de
78 Capı́tulo 5. A Abordagem de Múltiplos Modelos
(A0 , ..., A3 , B0 , ..., B3 ) = (0.5, 0.5, 0.5, 0.0, 0.0, 0.5, 0.0, 0.0),
(A0 , ..., A3 , B0 , ..., B3 ) = (0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.5, 0.0).
este componente, o erro fica no intervalo [-52%, 300%]. Isto implica que a técnica eHD
pode resultar em altos erros de estimativa, pois diferentes comportamentos do circuito
não podem ser distinguidos pelas mesmas estatı́sticas de sinal de entrada. Se estatı́sticas
de saı́da fossem incluı́das no modelo, tais comportamentos distintos poderiam ser melhor
capturados.
Considere agora a técnica Analytical. Este método utiliza os mesmos parâmetros
usados pela 4DTab. Novamente, há uma suposição implı́cita de que os parâmetros são
uniformemente distribuı́dos ao longo de todos os sinais de entrada/saı́da. Portanto, este
método está fadado a possuir as mesmas limitações da 4DTab.
Dado que as limitações de cada método foram identificadas quantitativamente e quali-
tativamente, a próxima seção propõe um mecanismo de múltiplos modelos como solução.
3. geração do multimodelo; e
4. uso do multimodelo.
As três primeiras fases são executadas apenas uma vez para uma dada biblioteca de tec-
nologia, durante a etapa de caracterização da biblioteca. No lado esquerdo da figura está
o gerador de sequências (streams), que produz dois tipos de streams: conjuntos de trei-
namento, usados durante o processo de caracterização (Fase 1) e conjuntos de avaliação,
usados durante a avaliação de robustez do modelo (Fase 2). Se um único conjunto fosse
usado durante ambas as Fases 1 e 2, somente os erros intrı́nsecos seriam capturados. Para
garantir um mecanismo de macromodelagem sem viés (Fase 3), conjuntos de treinamento
e avaliação são gerados de acordo com parâmetros distintos pré-especificados.
Library
RTL Part
Characterization GL Part
Engine
Power Power
Model 1 ... Model n
Phase 1
Sequence
Generator
Evaluation
Evaluation
Parameters
set
Evaluation
Engine
Model 1 Model n
...
Eval. Eval.
Phase 2
Multi−modeling
Engine
pi−function
Phase 3
(a) a primeira supõe que, dadas as propriedades do sinal de entrada, um dos macromo-
delos individuais leva a uma melhor precisão que os outros;
As Figuras 5.6(a) e 5.6(b) mostram as funções ζ geradas para os módulos Add ECLA32
e MulS16. Cada sı́mbolo representa o macromodelo mais preciso para um dado ponto no
espaço de entrada. Por exemplo, o sı́mbolo + associado à (Pin , Din ) = (0.8, 0.3) na
Figura 5.6(a) indica que o EqTab foi o modelo selecionado.
1 1
EqTab 4DTab
4DTab eHD
eHD Analytical
0.8 Analytical 0.8
Input Transition Density
0.4 0.4
0.2 0.2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
Input Signal Probability Input Signal Probability
Embora as funções ζ nas Figuras 5.6(a) e 5.6(b) sejam diferentes, um padrão comum
pode ser observado em ambos os exemplos. O macromodelo eHD é, em geral, mais preciso
que as outras técnicas para maiores densidades de transição, enquanto que o macromodelo
Analytical é mais preciso para menores densidades de transição. Como um exemplo, para
(Pin , Din ) = (0.5, 0.9), é melhor usar o modelo eHD para o componente Add ECLA32,
considerando que ele tem um erro médio esperado de 0% à 10%, enquanto que, para EqTab
e Analytical, este erro fica dentro das faixas de 10%–20% e 40%–100%, respectivamente.
Agora, considerando a região ao redor de (0.3, 0.3), o modelo 4DTab deveria ser usado
ao invés dos outros, dado que ele leva aos menores erros (10%–20%). Como um outro
exemplo, considere o componente MulS16. Como pode ser notado, o modelo Analytical é
selecionado para a maioria das regiões do espaço de entrada. Apesar disso, para as regiões
ao redor de (Pin , Din ) = (0.5, 0.6), os outros modelos deveriam ser usados, visto que eles
têm um erro esperado menor. Também observe que, para este componente, EqTab não é
selecionado para nenhuma região do espaço de entrada.
Para a obtenção de uma estimativa de potência, esta abordagem também se baseia nas es-
timativas computadas para cada macromodelo individual. Todavia, ao invés de selecionar
84 Capı́tulo 5. A Abordagem de Múltiplos Modelos
a−1
n=1+a+ +a (5.5)
2
5.2.5 Discussão
Pode ser notado que, de forma geral, há uma grande interseção entre os conjuntos de
parâmetros requeridos para um dado pool de macromodelos suportados. Por exemplo,
sendo o macromodelo mais complexo, eHD contém os parâmetros requeridos por 4DTab,
EqTab e Analytical. Logo, o overhead de se usar a abordagem UMM é levemente maior que
o do macromodelo mais complexo. O pequeno incremento no overhead do macromodelo
dominante é devido ao tempo exigido para aplicar a função π, uma vez por componente.
Observe que, essencialmente, não há overhead extra na execução do macromodelo: apenas
uma função (possivelmente distinta) de macromodelo é invocada por componente, exata-
mente o mesmo número de execuções que um mecanismo de modelo simples convencional
requereria.
Para a abordagem CMM, dado que a estimativa de potência exige a computação
de pi , para todo i ∈ M , o overhead é composto de uma invocação de cada função de
macromodelo por componente durante a avaliação da função π.
5.3 Experimentos
Esta seção compara as técnicas convencionais de modelo simples com as abordagens mul-
timodelo propostas com relação à precisão das estimativas. As estimativas de referência
em gate-level foram obtidas com a ferramenta PrimePower, da Synopsys.
O conjunto de benchmarks consiste em seis circuitos, sintetizados para uma biblioteca
de tecnologia TSMC 0.25µm. Os nomes dos circuitos estão listados na primeira coluna
da Tabela 5.1, enquanto suas descrições e áreas estão mostradas nas colunas seguintes.
Dois deles são componentes simples de uma biblioteca de componentes (Add ECLA32 e
MulS16). Quatro são circuitos in-house complexos, extraı́dos de aplicações reais: uma
implementação de um algoritmo de equação diferencial (Diffeq) e várias implementações
de um algoritmo de cruzamento de áudio estéreo (Crossover1, Crossover2, Crossover3).
Estes circuitos complexos consistem de vários componentes diferentes, com diferentes
larguras de bit, tais como, somadores, multiplicadores e subtratores. Diversas estimativas
foram feitas para cada circuito e para várias streams de entrada diferentes. Os tempos
de simulação, que incluem o overhead imposto pelos macromodelos, ficou entre 56s e
126s para estes experimentos. As máquinas utilizadas foram Intel Pentium 4 2.8GHz
convencionais com o sistema operacional Linux.
5.3. Experimentos 87
e ( )
i i
|Pest − Pref |
εM AX = max i
× 100% (5.8)
1≤i≤n Pref
i i
onde n é o número de componentes no circuito, Pest e Pref são, respectivamente, os valores
de potência estimados e de referência para o i-ésimo componente.
5.3. Experimentos 89
40
Average Error (%)
30
20
10
0
Add_ECLA32 MulS16 Crossover1 Crossover2 Crossover3 Diffeq AVERAGE
Design
500
400
Maximum (%)
300
200
100
0
Add_ECLA32 MulS16 Crossover1 Crossover2 Crossover3 Diffeq AVERAGE
Design
Três observações podem ser feitas a partir destas figuras. Primeiro, para todos os
circuitos, há uma grande variação nos erros entre cada uma das técnicas de modelo simples
(quatro primeiras barras). Para os erros médios, esta variação estende-se de 15% a 101%.
Valores ainda mais contrastantes podem ser vistos na Figura 5.7(b), na faixa de 83% a
1453%. Note que a abordagem de modelo simples pode levar a erros inaceitáveis. Erros
altos como estes podem comprometer a qualidade geral das estimativas o que, por sua
vez, pode levar a decisões de projeto equivocadas.
Para o conjunto de circuitos adotados, os maiores erros foram obtidos com a técnica
eHD. Isto indica que tal macromodelo não deve ser utilizado sozinho. Contudo, isto
não significa, necessariamente, que esta técnica deva ser descartada de antemão. Pelo
contrário, conclui-se que ela só não é adequada para algumas regiões no espaço Pin × Din .
De fato, conforme mostrado na Seção 5.1, há regiões onde eHD teve desempenho superior
com relação às outras técnicas.
A segunda observação é que as estimativas produzidas pelas abordagens multimodelo
propostas (duas últimas barras) são muito superiores se comparadas às produzidas pelas
técnicas de modelo único. Do ponto de vista de erros médios, CMM desempenhou melhor
que UMM na maioria dos casos. As únicas exceções foram para MulS16 e Crossover1,
onde UMM obteve erros menores. Isto é devido ao fato que, para o componente MulS16,
o macromodelo Analytical obteve resultados melhores se comparados às outras técnicas
(4DTab, EqTab e eHD) para uma grande parte do espaço de entrada (veja a Figura 5.6(b)).
Isto afetou a computação dos coeficientes do modelo durante a análise de regressão. Note,
todavia, que mesmo nestes casos as abordagens multimodelo superam o melhor modelo
único equivalente. Observe também que, em nenhum outro caso, uma técnica de modelo
único apresenta erros médios abaixo de ∼12%.
De forma a quantificar o benefı́cio obtido ao se usar as abordagens multimodelo pro-
postas ao invés das alternativas de modelo único convencionais, usamos a seguinte famı́lia
de razões como figuras de mérito:
x εsingle
AV Gx
RAV G = multi
, ∀x ∈ {min, avg, max}, (5.9)
εAV Gx
single multi
onde εAV G e εAV G são os erros médios para as técnicas de modelo único e multimodelo
(como computados na Equação 5.7) e onde x determina as faixas de benefı́cio quando com-
min
paradas às técnicas de modelo único. Em média, as razões obtidas foram: RAV G = 3.05,
avg max
RAV G = 7.75, e RAV G = 20.54.
Do ponto de vista de erros máximos (Figura 5.7(b)), resultados similares àqueles apre-
5.3. Experimentos 91
sentados na Figura 5.7(a) são percebidos, com os menores erros máximos sendo observados
para UMM e CMM. A única exceção é, MulS16, onde Analytical apresenta erros meno-
res que CMM. Note também que os erros máximos gerais de UMM são melhores que os
obtidos com CMM para estes experimentos.
Figuras de mérito similares àquelas da Equação 5.9 podem ser usadas com relação aos
erros máximos, como é mostrado abaixo:
x εsingle
M AXx
RM AX = multi , x ∈ {min, avg, max} (5.10)
εM AXx
single multi
A diferença da Equação 5.9 é basicamente na computação de εM AX e εM AX , que agora
min avg
usam a Equação 5.8. Na média, as razões resultantes foram: RM AX = 1.60, RM AX = 9.80,
max
e RM AX = 27.86.
A terceira observação, no que diz respeito às Figuras 5.7(a) e 5.7(b) é que cada técnica
de macromodelagem multimodelo exibe pequenas variações ao longo dos circuitos, ao
contrário das abordagens de modelo único convencionais. Para as abordagens multi-
modelo, encontrou-se um desvio padrão de σavg = 0.92% e σmax = 25.48% para os
erros médios e máximos, respectivamente. Em contraste, os valores σavg = 37.63% e
σmax = 609.62% foram encontrados para as abordagens de modelo único. Isto mostra
que as abordagens propostas produzem estimativas de potência de forma robusta, uma
propriedade desejável e importante que todo modelo de potência deveria possuir.
Para sumarizar as melhorias alcançadas num único número para os erros médios e
avg avg
máximos, fazemos uso das razões RAV G e RM AX , computadas com as Equações 5.9 e 5.10.
Note que a acurácia se torna 7 vezes melhor para os erros médios, se comparada às
abordagens convencionais, enquanto o erro máximo geral é divido por 9.
o espaço de entrada. A Figura 5.8(a) ilustra esta cobertura, onde os eixos horizontal e
vertical representam a probabilidade do sinal de entrada (Pin ) e a densidade de transição
(Din ), respectivamente. Cada ponto nesta figura representa a uma stream distinta.
1.0
100
0.8
80
Input Transtion Density
# of ocurrences
0.6
60
0.4
40
0.2
20
0.0 0
0.0 0.2 0.4 0.6 0.8 1.0 0 200 400 600 800
Input Signal Probability Actual Power (uW)
(a) Cobertura do espaço de entrada Pin × Din . (b) Distribuição dos valores de potência de re-
Cada ponto representa um stream distinta ferência
Além disso, a distribuição dos valores de potência de referência para estas streams,
juntamente com a curva normal, é mostrada na Figura 5.8(b). Cada barra neste histo-
grama corresponde a um valor de potência distinto e sua altura corresponde ao número
de ocorrências deste valor especı́fico de potência.
O próximo passo da avaliação consistiu em gerar estimativas de potência com todas
as técnicas de modelo único e de múltiplos modelos, para todas as streams de entrada
da Figura 5.8(a). Então, estas estimativas foram comparadas aos valores de referência,
resultando na chamada robustez do modelo.
As Figuras 5.9(a)–5.9(f) apresentam a robustez das técnicas adotadas. Note que a
escala usada na Figura 5.9(d) é diferente da usada nas outras. Como pode ser visto nas
Figuras 5.9(a)–5.9(d), a afirmação de que técnicas convencionais de modelo único têm
limitações intrı́nsecas que afetam sua precisão é evidente. Note também que os erros
produzidos por estas técnicas não são aleatórios; uma tendência identificável é detectada
nas estimativas de cada um dos métodos, embora sejam bem distintas. Estes resultados
corroboram a análise qualitativa de limitações de macromodelagem feita na Seção 5.1.
A robustez das abordagens multimodelo propostas pode ser vista nas Figu-
ras 5.9(e) e 5.9(f). Observe que tanto a UMM quanto a CMM apresentam uma me-
5.3. Experimentos 93
800 800
600 600
400 400
200 200
0 0
0 200 400 600 800 0 200 400 600 800
4DTab (uW) EqTab (uW)
1200
1000
600
Actual Power (uW)
400
600
400
200
200
0 0
0 200 400 600 800 0 200 400 600 800 1000 1200
eHD (uW) Analytical (uW)
600 600
Actual Power (uW)
Actual Power (uW)
400 400
200 200
0 0
0 200 400 600 800 0 200 400 600 800
140
120
150
100
# of ocurrences
# of ocurrences
80
100
60
40
50
20
0 0
0 200 400 600 800 0 200 400 600 800
4DTab (uW) EqTab (uW)
250 100
200 80
# of ocurrences
# of ocurrences
150 60
100 40
50 20
0 0
0 100 200 300 400 500 600 700 0 250 500 750 1000 1250 1500
eHD (uW) Analytical (uW)
100
100
80
# of ocurrences
# of ocurrences
75
60
50
40
25
20
0 0
0 200 400 600 800 0 200 400 600 800
UMM (uW) CMM (uW)
Figura 5.10: Distribuição dos valores de potência das técnicas adotadas (Add ECLA32)
5.3. Experimentos 95
A era multi-core chegou e para ficar. Desde que se constatou que o ganho de desempenho
via o tradicional aumento de frequência alcançava seus limites fı́sicos, com grande impacto
no consumo de potência, pesquisadores têm concentrado seus esforços em investigar ar-
quiteturas alternativas a fim de conservar o crescente aumento de desempenho, conforme
observado nas últimas décadas.
Tal cenário é corroborado pela copiosa diversidade de arquiteturas multiprocessadas,
tanto acadêmicas quanto industriais, tornando a programação concorrente um importante,
senão essencial, paradigma para exploração destas arquiteturas.
Atualmente, a construção de software concorrente é usualmente feita com locks, que
exibem um desempenho excelente quando usados em aplicações de alta granularidade.
Contudo, programar nesta abordagem não é uma tarefa fácil, pois a mesma apresenta
vários problemas [137] (e.g. deadlocks), além de serem de difı́cil composição e depuração,
como mencionado na Seção 3.6.
Portanto, para que o paradigma de programação concorrente se torne ubı́quo, deve-se
buscar maneiras eficientes de simplificar a tarefa do programador.
Com este intuito, propôs-se memória transacional1 [58] (ver Seção 3.6, pág. 47). Neste
paradigma, o programador deve apenas marcar um trecho de código como transacional,
como ilustrado na Figura 6.1, deixando a cargo do sistema de memória transacional
subjacente a tarefa de detectar e resolver os conflitos de acesso à memória compartilhada.
Apesar de os requisitos de consumo de energia e/ou potência serem essenciais tanto
1
A partir daqui, o acrônimo TM será usado para se referenciar genericamente ao paradigma de memória
transacional.
97
98 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
1 atomic {
2 statement 1;
3 statement 2;
4 ...
5 statement n ;
6 }
Duas primitivas extras são adicionadas por conveniência. A primeira (Rollback) su-
mariza os custos associados à reexecução de transações abortadas, enquanto a segunda
(Other) é utilizada para referenciar outras operações menos significativas dentro de uma
implementação de STM, tais como aquelas relacionadas à alocação/desalocação transaci-
onal de memória.
6.1. STM Adotada 99
mapeia os endereços de memória para um destes locks, que têm duas utilidades: (i) se
o lock do referido endereço de memória está liberado (o que é indicado pelo bit menos
significativo), então o elemento do array contém o número da versão baseado num relógio
global; (ii) caso contrário, o mesmo elemento armazena um ponteiro para o descritor da
transação ao qual o lock pertence.
As transações regulares e somente-leitura realizam os seguintes passos durante sua
execução, em ordem:
• Transações regulares
• Transações somente-leitura
6.2. Plataforma de Simulação 101
• um número variável de processadores ARMv7 (CORE), cada qual com uma ca-
che de instruções (I$) de 8KB e uma cache de dados (D$) de 4KB (ambas com
associatividade 4-way).
• memórias SPM (scratchpad memory) tanto para instrução (I-SPM) quanto para da-
dos (D-SPM). Estas memórias são geralmente bem pequenas e altamente acopladas
ao processador, o que garante acessos muito eficientes em termos de energia.
102 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
• Perfilamento dos rollbacks: sempre que uma transação aborta, a energia regis-
trada de todas as primitivas executadas desde a última chamada a TxStart, incluindo
o código da aplicação, é agregada num único valor (Rollback). A única exceção é a
energia referente ao gerenciador de contenção, que é acumulada em backoff.
O procedimento descrito acima permite quantificar os custos de energia inerentes à
aplicação, bem como o overhead de cada uma das primitivas da API da STM. Com isso,
facilita-se a identificação de possı́veis gargalos, servindo de guia para a elaboração de
otimizações focadas na redução do consumo de energia devido à abordagem de STM.
É importante ressaltar que o impacto deste procedimento no consumo total de energia
foi relativamente baixo (∼2%).
Esta seção apresenta alguns resultados preliminares através do uso de uma aplicação
genérica, antes de introduzir o perfilamento das aplicações do benchmark de TM na
Seção 6.4.
• IPC: iterações por core. Ajusta o número de transações a serem executadas por cada
core. Configuração: 2K, 8K.
Cada core é responsável pela leitura de uma janela deslizante, que muda a cada
transação. A função GetWindowRange (linha 3) retorna a fatia do array compartilhado
a ser considerada durante a iteração atual. Os elementos lidos desta janela são, então,
consumidos, resultando num valor distinto (x).
Depois que o valor é computado, a sequência de escritas é iniciada com o cômputo de
um deslocamento (offset) relativo ao começo da janela deslizante. Este deslocamento é
determinado aleatoriamente (linha 9) e confinado dentro dos limites da janela deslizante.
A seguir, um novo valor (y) é produzido baseado nos valores de deslocamento e de x
(previamente computado). Então, o valor resultante é armazenado de volta na janela
deslizante.
Assim que a sequência de leituras e escritas é concluı́da, a transação faz uma chamada
à operação TxCommit (linha 14). Subsequentemente, um atraso é requisitado fora do
escopo da transação e antes do inı́cio da próxima transação (determinado pelo parâmetro
ITD).
É importante observar que, embora o objetivo desta ferramenta parametrizável seja
emular o comportamento de diferentes aplicações, esta emulação não tem o propósito de
ser exaustiva.
Cores
1
40 2
4
8
20
10
1 2 4 8 16 32 64 128
Read Set Size
(a) TxLoad
Cores
50 1
2
4
8
Mean Energy (nJ)/Store
40
30
20
1 2 4 8 16 32
Write Set Size
(b) TxStore
Figura 6.4: Perfis energéticos das primitivas TxLoad e TxStore com a ferramenta de
caracterização
108 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
20000
Cores
18000 1
2
16000 4
8
Energy (nJ)/Commit
14000
128
12000
R=
10000
8000
6000
64
R=
4000
R=32
2000 R=4 R=8 R=16
R=1 R=2
0
1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16
2 8 32 2 8 32 2 8 32 2 8 32 2 8 32 2 8 32 2 8 32 2 8 32
Write Set Size
(a) TxCommit
160
Cores
2
140 4
8
R=16
120 R=2
Energy (nJ)/Abort
8
12
R=4
R=
100
80
60
40
1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16
2 8 32 2 8 32 2 8 32 2 8 32 2 8 32 2 8 32 2 8 32
Write Set Size
(b) TxAbort
Figura 6.5: Perfis energéticos das primitivas TxCommit e TxAbort com a ferramenta de
caracterização
Pode ser visto nestas figuras um comportamento similar para ambas as primitivas:
conforme os tamanhos dos conjuntos são aumentados, o consumo de energia diminui. Isto
é explicado por efeitos de misses observados na cache de instrução (13% para a TxLoad e
30% para a TxStore). Conforme os efeitos de cache são mitigados, a energia por operação
tende a estabilizar. Note também que as configurações com um número maior de cores
exibem maior consumo de energia, causado pela maior contenção gerada no barramento.
Os resultados para as primitivas TxCommit e TxAbort são mostradas nas Figu-
ras 6.5(a) e 6.5(b). As figuras apresentam o consumo de energia por operação variando-se
os tamanhos do write-set e read-set (R=valor indica a configuração do read-set).
6.3. Caracterização de Energia 109
Duas observações podem ser feitas para a TxCommit (Figura 6.5(a)). Primeiro,
fixando-se o tamanho de read-set, note que o custo energético aumenta com o tama-
nho do write-set. Isto ocorre pelo fato da TL2 iterar três vezes durante a execução desta
primitiva: (i) durante a aquisição dos locks; (ii) ao confirmar os valores na memória princi-
pal; e (iii) ao liberar os locks. Segundo, o custo de energia também aumenta com maiores
tamanhos de read-set, dado que o mesmo tem que ser validado com relação à consistência.
80
Cores
1
Mean STM Energy Overhead (%) 2
70 4
8
60
50
40
1.00
1.41
2.00
2.83
4.00
5.66
8.00
11.31
16.00
22.63
32.00
45.25
64.00
Geometric Mean (Reads and Writes)
∼40% no cenário com 1 core para ∼80% no cenário com 8 cores). Ao se aumentar os
tamanhos destes conjuntos, o overhead por operação é amortizado, reduzindo o overhead
total. Todavia, para maiores valores no eixo horizontal, o overhead tende a subir no-
vamente. Isto sugere a existência de configurações de read-sets e write-sets nas quais o
overhead tende a ser mı́nimo.
Normalized Speedup
4 4
Normalized Energy
3 3
2 2
1 1
0 0
1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8 1 2 4 8
Como pode ser visto, aumentando o número de cores sempre causa um maior consumo
de energia, com exceção do bayes 4-core. No entanto, o desempenho não segue sempre
esta mesma tendência. Enquanto em algumas aplicações, tais como genome+ e kmeans,
o desempenho cresce monotonicamente com o número de cores, em outras o desempenho
não escala apropriadamente, obtendo, inclusive, degradação em alguns casos (mais nota-
velmente no intruder+). A explicação para a perda de desempenho é o excessivo número
de transações abortadas e o consequente tempo gasto durante o rollback das mesmas. O
mesmo comportamento foi observado para estas aplicações com a configuração TL2-eager.
O paradigma de memória transacional em software impõe um significativo overhead
nas aplicações. De forma a pormenorizar o impacto no consumo de energia, a Figura 6.8
decompõe o overhead de energia em seus constituintes para o caso com um único core. Os
números desta figura estão normalizados em relação à versão sequencial de cada aplicação.
Três observações são feitas sobre esta figura. Primeiro, algumas aplicações não exibem
overhead significativo. Mais especificamente, bayes, labyrinth+ e yada têm transações
longas e o overhead devido às primitivas transacionais é pequeno (no yada pode ser
notado um baixo overhead relativo a TxCommit). Contudo, o cenário é diferente para
o kmeans, pois esta aplicação faz uso extensivo de operações de ponto-flutuante que, na
plataforma utilizada, é emulada em software. Desta forma, estas operações contribuem
para esconder o overhead normalmente exibido pelas primitivas transacionais. Segundo,
112 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
0
lazy lazy lazy lazy lazy lazy lazy lazy lazy lazy
eager eager eager eager eager eager eager eager eager eager
Figura 6.8: Decomposição do overhead de energia da STM para o caso com um único core
bayes genome+ kmeans-high kmeans-low labyrinth+ ssca2 vacation-high vacation-low yada intruder+
10 50
ROLLBACK
BACKOFF
8 TXCOMMIT 40
Normalized Energy
TXSTORE
TXLOAD
6 Other 30
Application
4 20
2 10
0 0
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
lazy/lin
eager/lin
lazy/exp
eager/exp
Figura 6.9: Decomposição do overhead de energia da STM para o caso com 8 cores
114 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
energia foi reduzida por um fator de ∼45%, alcançando reduções máximas de até 87%
para o intruder+. Como efeito colateral positivo desta otimização, a taxa de abortos
foi reduzida, dado que as transações abortadas permaneceram um maior tempo (devido a
redução da frequência) no modo de backoff, logo, evitando uma reexecução prematura que
estava fadada a falhar. Consequentemente, o desempenho aumentou em aproximadamente
13% (em média) e o resultante EDP foi diminuı́do substancialmente. Segundo, algumas
aplicações experienciaram resultados negativos com algumas configurações do backoff ex-
ponencial com DVFS. Nas aplicações genome+-lazy, ssca2-lazy e ssca2-eager, a con-
tenção observada foi baixa, o que implica em entrar no modo de backoff diminutas vezes.
Contudo, devido às baixas taxas de abortos (≤3%), o tempo despendido nos perı́odos de
backoff é aumentado mais do que o necessário, neutralizando os efeitos de executá-lo em
modo de baixo consumo de potência. Além disso, como não há perı́odos de inatividade
passı́veis de serem explorados, tanto a energia quanto o EDP são levemente, mas adversa-
mente, afetados por este comportamento. Uma explicação similar é válida para o aumento
do EDP nas aplicações vacation-low e vacation-high (ambos com backoff exponen-
cial). Porém, nestas aplicações, ao contrário do que ocorre com as aplicações anteriores,
há pequenos perı́odos de inatividade disponı́veis, que são apropriadamente explorados,
como pode ser observado pela diminuição no consumo total de energia. Note que as mes-
mas aplicações não são influenciadas pelo comportamento mencionado quando o esquema
de backoff linear é usado. Terceiro, para aquelas aplicações exibindo um baixo overhead
de energia de STM, especificamente, kmeans-high, kmeans-low e labyrinth+, os resul-
tados obtidos foram praticamente os mesmos. Isto acontece devido ao baixo número de
reexecuções por transação, o que impede o processador de entrar no modo de backoff.
116 Capı́tulo 6. Perfil de Consumo de Energia de Memória Transacional em Software
Finalmente, para o bayes, mesmo havendo apenas uma estreita margem de rollback e
backoff disponı́vel, o esquema proposto praticamente reduziu pela metade seus montan-
tes, resultando numa melhoria média de ∼6% e ∼20%, no consumo total de energia e no
EDP, respectivamente.
O próximo capı́tulo conclui esta tese de doutorado, enumerando as contribuições e
resultados obtidos pela mesma.
Capı́tulo 7
Conclusões
117
118 Capı́tulo 7. Conclusões
diversos nı́veis de abstração. Este arcabouço foi apresentado no NASCUG VI1 (North
American SystemC User’s Group Meeting), um dos principais eventos de SystemC. O
trabalho foi apresentado em uma palestra, ocorrida no dia 21 de fevereiro de 2007, em
San Jose, Califórnia, EUA.
A fim de otimizar a precisão das estimativas, foram propostas duas novas técnicas de
macromodelagem baseadas em múltiplos modelos, cujo objetivo era explorar os pontos
fortes de cada método convencional de modelo simples, sobrepujando as limitações de
uma forma global.
Na primeira técnica, chamada UMM, uma função seletora é construı́da, em que a
escolha do macromodelo a ser utilizado para gerar a estimativa é feita com base nas
estatı́sticas da sequência (stream) de vetores sendo aplicados às entradas de um dado
componente.
Na segunda técnica, chamada CMM, uma função de predição é criada tal que, para um
dado conjunto de vetores utilizados como estı́mulos, as estimativas produzidas por cada
macromodelo são correlacionadas entre si e com as propriedades dos estı́mulos aplicados
às entradas para produzir uma estimativa de potência. Tal função é construı́da com o
auxı́lio de métodos de análise de regressão não-linear.
Os resultados obtidos com a abordagem de múltiplos modelos revelaram melhorias
significativas em comparação às técnicas convencionais de modelo único, otimizando a
precisão, em média, 7 vezes para os erros médios, e 9 vezes para os erros máximos. O
overhead de ∼1% imposto à simulação, devido ao uso da abordagem proposta, pode ser
considerado negligı́vel.
O segundo problema aborda um tópico relativamente distinto do primeiro. Como foi
mostrado, a chegada da era multi-core introduziu um nova dificuldade, que é a criação de
programas concorrentes que extraiam o máximo de paralelismo existente nas aplicações,
mas que, principalmente, sejam fáceis de programar e funcionalmente corretos. O para-
digma de programação concorrente conhecido como memória transacional tem esta pro-
posta.
Esta área de pesquisa é atualmente muito ativa, porém os pesquisadores têm se concen-
trado quase que invariavelmente no desempenho das aplicações, negligenciando métricas
importantes tais quais potência e energia.
Desta forma, esta tese efetuou uma análise pormenorizada do consumo de energia
em uma implementação estado-da-arte de STM. Inicialmente, uma ferramenta de ca-
racterização parametrizável foi proposta para emular diferentes cenários transacionais e
1
http://www.nascug.org
7.1. Produção Bibliográfica 119
Capı́tulos de livro:
Conferências internacionais:
Relatórios Técnicos:
[2] Sally Adee. 37 Years of Moore’s Law. IEEE Spectrum, May 2008.
[3] Crina Anton, Alessandro Bogliolo, Pierluigi Civera, Ionel Colonescu, Enrico Macii,
and Massimo Poncino. RTL Estimation of Steering Logic Power. In PATMOS
’00: Proceedings of the 10th International Workshop on Integrated Circuit Design.
Power and Timing Modeling, Optimization and Simulation, pages 36–46, London,
UK, 2000. Springer-Verlag.
[5] Nikhil Bansal, Kanishka Lahiri, Anand Raghunathan, and Srimat T. Chakradhar.
Power Monitors: A Framework for System-Level Power Estimation Using Hete-
rogeneous Power Models. In VLSID ’05: Proceedings of the 18th International
Conference on VLSI Design, pages 579–585, Los Alamitos, CA, USA, 2005.
[7] Luiz André Barroso and Urs Hözle. The Case for Energy-Proportional Computing.
IEEE Computer, 40(12):33–37, Dec 2007.
[8] S. Bathia and N. K. Jha. Genesis: A Behavioral Synthesis System for Hierarchical
Testability. In Proceedings of the European Design and Test Conference, pages
272–276. IEEE Press, 1994.
123
124 REFERÊNCIAS BIBLIOGRÁFICAS
[13] L. Benini, G. Castelli, A. Macii, E. Macii, M. Poncino, and R. Scarsi. Extending Li-
fetime of Portable Systems by Battery Scheduling. In DATE ’01: Proceedings of the
conference on Design, automation and test in Europe, pages 197–203, Piscataway,
NJ, USA, 2001. IEEE Press.
[14] Luca Benini, Alessandro Bogliolo, Enrico Macii, Massimo Poncino, and Mihai Sur-
mei. Regression-based RTL Power Models for Controllers. In GLSVLSI ’00: Proce-
edings of the 10th Great Lakes symposium on VLSI, pages 147–152, New York, NY,
USA, 2000. ACM Press.
[15] Luca Benini, Giuliano Castelli, Alberto Macii, Enrico Macii, Massimo Poncino, and
Riccardo Scarsi. Discrete-Time Battery Models for System-Level Low-Power Design.
IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 9(5):630–640,
2001.
[16] Luca Benini, Giuliano Castelli, Alberto Macii, and Riccardo Scarsi. Battery-Driven
Dynamic Power Management. IEEE Design & Test of Computers, 18(2):53–60,
2001.
[17] Luca Benini and Giovanni de Micheli. System-Level Power Optimization: Techni-
ques and Tools. ACM Trans. Des. Autom. Electron. Syst., 5(2):115–192, 2000.
REFERÊNCIAS BIBLIOGRÁFICAS 125
[18] Luca Benini, Robin Hodgson, and Polly Siegel. System-Level Power Estimation and
Optimization. In ISLPED ’98: Proceedings of the 1998 International Symposium
on Low power Electronics and Design, pages 173–178, New York, NY, USA, 1998.
ACM Press.
[20] A. Bogliolo and L. Benini. Robust RTL Power Macromodels. IEEE Transactions
on Very Large Scale Integration (VLSI) Systems, 6(4):578–581, December 1998.
[23] Alessandro Bogliolo, Luca Benini, and Giovanni De Micheli. Regression-based RTL
Power Modeling. ACM Trans. Des. Autom. Electron. Syst., 5(3):337–372, 2000.
[24] Alessandro Bogliolo, Enrico Macii, Virgil Mihailovici, and Massimo Poncino.
Power Models for Semi-Autonomous RTL Macros. In PATMOS-00: International
Workshop on Power And Timing Modeling, Optimization and Simulation, 2000.
[26] David Brooks, Vivek Tiwari, and Margaret Martonosi. Wattch: A Framework for
Architectural-Level Power Analysis and Optimizations. In ISCA ’00: Proceedings of
the 27th Annual International Symposium on Computer Architecture, pages 83–94.
ACM Press, 2000.
126 REFERÊNCIAS BIBLIOGRÁFICAS
[27] Maurizio Bruno, Alberto Macii, and Massimo Poncino. A Statistical Power Model
for Non-Synthetic RTL Operators. In PATMOS-03: International Workshop on
Power And Timing Modeling, Optimization and Simulation, pages 208–218, Sep-
tember 2003.
[28] K. M. Buyuksahin and F. N. Najm. Early Power Estimation for VLSI Circuits.
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,
24(7):1076–1088, July 2005.
[30] Naehyuck Chang, Kwanho Kim, and Hyung Gyu Lee. Cycle-Accurate Energy Con-
sumption Measurement and Analysis: Case Study of ARM7TDMI. In ISLPED ’00:
Proceedings of the 2000 International Symposium on Low power Electronics and
Design, pages 185–190, 2000.
[31] Zhanping Chen and K. Roy. Estimation of Power Dissipation Using a Novel Power
Macromodeling Technique. IEEE Transactions on Computer-Aided Design of Inte-
grated Circuits and Systems, 19(11):1363–1369, November 2000.
[33] P. Christie and D. Stroobandt. The Interpretation and Application of Rent’s Rule.
IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 8(6):639–648,
Dec 2000.
[35] Imed Ben Dhaou and Hannu Tenhunen. Efficient Library Characterization for High-
Level Power Estimation. IEEE Transactions on Very Large Scale Integration (VLSI)
Systems, 12(6):657–661, June 2004.
[36] Dave Dice, Ori Shalev, and Nir Shavit. Transactional Locking II. In DISC ’06:
Proceedings of the 20th International Symposium on Distributed Computing, pages
194–208. Springer-Verlag, 2006.
REFERÊNCIAS BIBLIOGRÁFICAS 127
[37] Michael Eiermann and Walter Stechele. Efficient Power Modeling Techniques for
Combinational and Sequential RTL Macroblocks. In 9th International Conference
on Electronics, Circuits and Systems, volume 2, pages 705–708, 2002.
[38] Michael Eiermann and Walter Stechele. Novel Modeling Techniques for RTL Power
Estimation. In ISLPED ’02: Proceedings of the 2002 International Symposium on
Low Power Electronics and Design, pages 323–328, 2002.
[40] Terence Parr et al. ANTLR – ANother Tool for Language Recognition. Disponı́vel
em http://www.antlr.org [consultado em agosto de 2009].
[42] Cesare Ferri, Amber Viescas, Tali Moreshet, R. Iris Bahar, and Maurice Herlihy.
Energy Efficient Synchronization Techniques for Embedded Architectures. In GLS-
VLSI ’08: Proceedings of the 18th ACM Great Lakes Symposium on VLSI, pages
435–440, 2008.
[43] International Technology Roadmap for Semiconductors. ITRS Update 2008. http:
//www.itrs.net/Links/2008ITRS/Home2008.htm [consultado em julho de 2009],
2008.
[44] FORTE Design Systems. Cynthesizer User’s Guide, v3.3 edition, May 2007.
http://www.forteds.com.
[45] D. Gajski, N. Dutt, A. Wu, and S. Lin. High-Level Synthesis: Introduction to Chip
and System Design. Kluwer Academic Publishers, 1992.
[48] Pat Gelsinger. Microprocessors for the New Millennium: Challenges, Opportunities,
and New Frontiers. In ISSCC ’01: Proceedings International Conference Solid-State
Circuits Conference, pages 22–25, San Francisco, CA, USA, 2001.
[49] Sean Gold. A PSPICE Macromodel for Lithium-Ion Batteries. In Annual Battery
Conference on Applications and Advances, pages 9–15. IEEE Press, 1997.
[50] Subodh Gupta and Farid Najm. Analytical Models for RTL Power Estimation of
Combinational and Sequential Circuits. IEEE Transactions on Computer-Aided
Design of Integrated Circuits and Systems, 19(7):808–814, July 2000.
[51] Subodh Gupta and Farid N. Najm. Power Macromodeling for High-Level Power
Estimation. In DAC ’97: Proceedings of the 34th Annual Conference on Design
Automation, pages 365–370, 1997.
[52] Subodh Gupta and Farid N. Najm. Energy-Per-Cycle Estimation at RTL. In ISL-
PED ’99: Proceedings of the 1999 International Symposium on Low Power Electro-
nics and Design, pages 121–126, 1999.
[53] Subodh Gupta and Farid N. Najm. Power Modeling for High-Level Power Es-
timation. IEEE Transactions on Very Large Scale Integration (VLSI) Systems,
8(1):18–29, February 2000.
[55] Jörg Henkel. A Low Power Hardware/Software Partitioning Approach for Core-
based Embedded Systems. In DAC ’99: Proceedings of the 36th ACM/IEEE Con-
ference on Design Automation, pages 122–127, 1999.
[57] Maurice Herlihy, Victor Luchangco, Mark Moir, and William N. Scherer, III. Soft-
ware Transactional Memory for Dynamic-Sized Data Structures. In PODC ’03:
Proceedings of the 22nd Annual Symposium on Principles of Distributed Compu-
ting, pages 92–101, 2003.
REFERÊNCIAS BIBLIOGRÁFICAS 129
[58] Maurice Herlihy and J. Eliot B. Moss. Transactional Memory: Architectural Sup-
port for Lock-free Data Structures. In ISCA ’93: Proceedings of the 20th Annual
International Symposium on Computer Architecture, pages 289–300, San Diego, Ca-
lifornia, United States, 1993. ACM.
[59] Cheng-Ta Hsieh, Qing Wu, Chih-Shun Ding, and Massoud Pedram. Statistical
Sampling and Regression Analysis for RT-Level Power Evaluation. In ICCAD ’96:
Proceedings of the 1996 IEEE/ACM International Conference on Computer-Aided
Design, pages 583–588, 1996.
[60] Chung-Hsing Hsu and Ulrich Kremer. The Design, Implementation, and Evaluation
of a Compiler Algorithm for CPU Energy Reduction. SIGPLAN Not., 38(5):38–48,
2003.
[63] Yi-Min Jiang, Shi-Yu Huang, Kwang-Ting Cheng, Deborah C. Wang, and ChingYen
Ho. A Hybrid Power Model for RTL Power Estimation. In Asia and South Pacific
Design Automation Conference, pages 551–556, 1998.
[64] Gerd Jochens, Lars Kruse, Eike Schmidt, and Wolfgang Nebel. A new parameteri-
zable power macro-model for datapath components. In DATE ’99: Proceedings of
the conference on Design, automation and test in Europe, page 8, New York, NY,
USA, 1999. ACM Press.
[65] Gerd Jochens, Lars Kruse, Eike Schmidt, Ansgar Stammermann, and Wolfgang
Nebel. Power Macro-Modelling for Firm-Macro. In PATMOS-00: International
Workshop on Power And Timing Modeling, Optimization and Simulation, pages
24–35, September 2000.
[66] Russ Joseph and Margaret Martonosi. Run-Time Power Estimation in High Per-
formance Microprocessors. In ISLPED ’01: Proceedings of the 2001 International
Symposium on Low Power Electronics and Design, pages 135–140, 2001.
130 REFERÊNCIAS BIBLIOGRÁFICAS
[67] Praveen Kalla, Jörg Henkel, and Xiaobo Sharon Hu. SEA: Fast Power Estimation
for Micro-Architectures. In ASPDAC: Proceedings of the 2003 Conference on Asia
South Pacific Design Automation, pages 600–605, 2003.
[68] Stefanos Kaxiras and Margaret Martonosi. Computer Architecture Techniques for
Power-Efficiency. Morgan & Claypool Publishers, 2008.
[69] Michael Keating, David Flynn, Robert Aitken, Alan Gibbons, and Kaijian Shi. Low
Power Methodology Manual for System-on-Chip Design. Springer, 2007.
[70] F. Klein, R. Azevedo, and G. Araujo. High-Level Switching Activity Prediction Th-
rough Sampled Monitored Simulation. In Proceedings of International Symposium
on System-on-Chip (SOC), pages 161–166, Tampere, Finland, November 2005.
[71] Felipe V. Klein. PowerSC: Uma Extensão de SystemC para a Captura de Atividade
de Transição. Master’s thesis, Instituto de Computação, Universidade Estadual de
Campinas (UNICAMP), 2005. Dissertação defendida em 15 de abril de 2005.
[73] Ulrich Kremer, Jamey Hicks, and James Rehg. A Compilation Framework for Power
and Energy Management on Mobile Computers. In 14th International Workshop
on Languages and Compilers for Parallel Computing (LCPC 2001), pages 115–131.
Springer-Verlag, 2001.
[74] Sanjeev Kumar, Michael Chu, Christopher J. Hughes, Partha Kundu, and Anthony
Nguyen. Hybrid Transactional Memory. In PPoPP ’06: Proceedings of the 11th
ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming,
pages 209–220, 2006.
[75] Leslie Lamport. Time, Clocks, and the Ordering of Events in a Distributed System.
Communications of the ACM, 21(7):558–565, 1978.
[77] James R. Larus and Ravi Rajwar. Transactional Memory. Morgan & Claypool
Publishers, 2007.
REFERÊNCIAS BIBLIOGRÁFICAS 131
[78] Mike Tien-Chien Lee, Vivek Tiwari, Sharad Malik, and Masahiro Fujita. Power
Analysis and Minimization Techniques for Embedded DSP Software. IEEE Tran-
sactions on Very Large Scale Integration (VLSI) Systems, 5(1):123–135, 1997.
[79] Sheayun Lee, Andreas Ermedahl, and Sang Lyul Min. An Accurate Instruction-
Level Energy Consumption Model for Embedded RISC Processors. In LCTES ’01:
Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers and Tools
for Embedded Systems, pages 1–10, 2001.
[81] Yanbing Li and Jörg Henkel. A Framework for Estimation and Minimizing Energy
Dissipation of Embedded HW/SW Systems. In DAC ’98: Proceedings of the 35th
Annual Conference on Design Automation, pages 188–193, San Francisco, Califor-
nia, United States, 1998. ACM Press.
[82] David Lidsky and Jan M. Rabaey. Early Power Exploration: a World Wide Web
Application. In DAC ’96: Proceedings of the 33rd Annual Conference on Design
Automation, pages 27–32, 1996.
[83] D. Liu and C. Svensson. Power Consumption Estimation in CMOS VLSI Chips.
IEEE Journal of Solid-State Circuits, pages 663–670, June 1994.
[84] Xun Liu and Marios C. Papaefthymiou. A Markov Chain Sequence Generator
for Power Macromodeling. In ICCAD ’02: Proceedings of the 2002 IEEE/ACM
International Conference on Computer-Aided Design, pages 404–411, New York,
NY, USA, 2002. ACM Press.
[85] Xun Liu and Marios C. Papaefthymiou. HyPE: Hybrid Power Estimation for IP-
based Programmable Systems. In ASPDAC: Proceedings of the 2003 Conference on
Asia South Pacific Design Automation, pages 606–609, New York, NY, USA, 2003.
ACM Press.
[86] Xun Liu and Marios C. Papaefthymiou. A Markov Chain Sequence Generator for
Power Macromodeling. IEEE Transactions on Computer-Aided Design of Integrated
Circuits and Systems, 23(7):1048–1062, July 2004.
132 REFERÊNCIAS BIBLIOGRÁFICAS
[87] Mirko Loghi, Massimo Poncino, and Luca Benini. Cycle-Accurate Power Analysis
for Multiprocessor Systems-on-a-Chip. In GLSVLSI ’04: Proceedings of the 14th
ACM Great Lakes Symposium on VLSI, pages 410–406, 2004.
[88] Mirko Loghi, Massimo Poncino, and Luca Benini. Cache Coherence Tradeoffs in
Shared-Memory MPSoCs. ACM Trans. Embed. Comput. Syst., 5(2):383–407, 2006.
[89] Josué Tzan Hsin Ma. Estimativa de Consumo de Energia em Nı́vel de Instrução
para Processadores Modelados em ArchC. Master’s thesis, Instituto de Computação,
Universidade Estadual de Campinas (UNICAMP), 2007. Dissertação defendida em
26 de outubro de 2007.
[90] Alberto Macii, Luca Benini, and Massimo Poncino. Memory Design Techniques for
Low Energy Embedded Systems. Springer, 2002.
[91] Enrico Macii and Massimo Poncino. Power Macro-Models for High-Level Power
Estimation. In Low-Power Electronics Design, chapter 39. CRC Press, 2005.
[93] Diana Marculescu, Radu Marculescu, and Massoud Pedram. Information Theoretic
Measures of Energy Consumption at Register Transfer Level. In ISLPED ’95: Pro-
ceedings of the 1995 International Symposium on Low Power Design, pages 81–86.
ACM Press, 1995.
[94] Renu Mehra and Jan Rabaey. Behavioral Level Power Estimation and Exploration.
In Proceedings of the First International Workshop on Low Power Design, pages
197–202, 1994.
[95] Huzefa Mehta, Robert Michael Owens, and Mary Jane Irwin. Energy Characteriza-
tion Based on Clustering. In DAC ’96: Proceedings of the 33rd Annual Conference
on Design Automation, pages 702–707, 1996.
[96] Chi Cao Minh, JaeWoong Chung, C. Kozyrakis, and K. Olukotun. STAMP: Stan-
ford Transactional Applications for Multi-Processing. In IISWC 2008: Proceedings
of the IEEE International Symposium on Workload Characterization, pages 35–46,
Sep 2008.
REFERÊNCIAS BIBLIOGRÁFICAS 133
[97] Tali Moreshet, R. Iris Bahar, and Maurice Herlihy. Energy Reduction in Multi-
processor Systems Using Transactional Memory. In ISLPED ’05: Proceedings of
the 2005 International Symposium on Low Power Electronics and Design, pages
331–334, 2005.
[98] Tali Moreshet, R. Iris Bahar, and Maurice Herlihy. Energy-Aware Microproces-
sor Synchronization: Transactional Memory vs. Locks. In Workshop on Memory
Performance Issues, 2006.
[100] Radu Muresan and Catherine Gebotys. Instantaneous Current Modeling in a Com-
plex VLIW Processor Core. Trans. on Embedded Computing Sys., 4(2):415–451,
2005.
[103] Wolfgang Nebel and Domenik Helms. High-level Power Estimation and Analysis.
In Low-Power Electronics Design, chapter 38. CRC Press, 2005.
[104] Mahadevamurty Nemani and Farid Najm. Towards a High-Level Power Estimation
Capability. In IEEE Transactions on Computer-Aided Design of Integrated Circuits
and Systems, pages 588–598. IEEE Press, 1996.
[106] Open SystemC Initiative. SystemC Language Reference Manual, revision 1.0 edition,
2003. See http://www.systemc.org.
134 REFERÊNCIAS BIBLIOGRÁFICAS
[107] Debashis Panigrahi, Sujit Dey, Ramesh Rao, Kanishka Lahiri, Carla Chiasserini,
and Anand Raghunathan. Battery Life Estimation of Mobile Embedded Systems.
In International Conference on VLSI Design, volume 00, 2001.
[108] Terence J. Parr and Russell W. Quong. ANTLR: A Predicated-LL(k) Parser Gene-
rator. Software Practice and Experience, 25:789–810, 1994.
[109] Massoud Pedram and Qing Wu. Design Considerations for Battery-Powered Elec-
tronics. In DAC ’99: Proceedings of the 36th ACM/IEEE Conference on Design
Automation, pages 861–866, 1999.
[112] Scott R. Powell and Paul M. Chau. Estimating Power Dissipation of VLSI Signal
Processing Chips: The PFA Technique. VLSI Signal Processing IV, pages 250–259,
1990.
[115] Gang Qu, Naoyuki Kawabe, Kimiyoshi Usami, and Miodrag Potkonjak. Function-
Level Power Estimation Methodology for Microprocessors. In DAC ’00: Proceedings
of the 37th Conference on Design Automation, pages 810–813, 2000.
[117] Jan M. Rabaey, Anantha Chandrakasan, and Borivoje Nikolic. Digital Integrated
Circuits. Prentice Hall, 2nd edition, 2003.
REFERÊNCIAS BIBLIOGRÁFICAS 135
[118] A. Raghunathan and N. K. Jha. Behavioral Synthesis for Low Power. In IEEE
International Conference on Computer Design, pages 318–322. IEEE Press, 1994.
[119] Ravi Rajwar and James R. Goodman. Transactional Lock-Free Execution of Lock-
based Programs. In ASPLOS-X: Proceedings of the 10th International Conference
on Architectural Support for Programming Languages and Operating Systems, pages
5–17, 2002.
[121] Srivaths Ravi, Anand Raghunathan, and Srimat Chakradhar. Efficient RTL Power
Estimation for Large Designs. In IEEE International Conference on VLSI Design,
pages 431–439, January 2003.
[122] Philip E. Ross. Why CPU Frequency Stalled. IEEE Spectrum, Apr 2008.
[123] Jeffry T. Russel and Margarida F. Jacome. Software Power Estimation and Opti-
mization for High Performance, 32-bit Embedded Processors. In ICCD ’98: Proce-
edings of the International Conference on Computer Design, pages 328–333, 1998.
[125] Eike Schmidt, Lars Kruse, Gerd Jochens, Ed Huijbregts, Wouter Nieuweboer, Eric
Seelen, and Wolfgang Nebel. Power Consumption of On-Chip ROMs: Analysis
and Modeling. In PATMOS-98: International Workshop on Power And Timing
Modeling, Optimization and Simulation, 1998.
[126] Eike Schmidt, Gerd von Cölln (Jochens), Lars Kruse, Frans Theeuwen, and Wolf-
gang Nebel. Memory Power Models for Multilevel Power Estimation and Opti-
mization. IEEE Transactions on Very Large Scale Integration (VLSI) Systems,
10(2):106–109, 2002.
[127] Joseph J. Sharkey, Dmitry V. Ponomarev, Kanad Ghose, and Oguz Ergin. Ins-
truction Packing: Reducing Power and Delay of the Dynamic Scheduling Logic.
In ISLPED ’05: Proceedings of the 2005 International Symposium on Low Power
Electronics and Design, pages 30–35, 2005.
136 REFERÊNCIAS BIBLIOGRÁFICAS
[128] Tajana Simunic, Luca Benini, and Giovanni De Micheli. Cycle-Accurate Simulation
of Energy Consumption in Embedded Systems. In DAC ’99: Proceedings of the
36th ACM/IEEE Conference on Design Automation, pages 867–872, 1999.
[129] Tajana Simunic, Luca Benini, and Giovanni De Micheli. Energy-Efficient Design
of Battery-Powered Embedded Systems. In ISLPED ’99: Proceedings of the 1999
International Symposium on Low Power Electronics and Design, pages 212–217,
1999.
[130] Tajana Simunic, Luca Benini, Giovanni De Micheli, and Mat Hans. Source Code
Optimization and Profiling of Energy Consumption in Embedded Systems. In ISSS
’00: Proceedings of the 13th International Symposium on System Synthesis, pages
193–198, 2000.
[133] Ansgar Stammermann, Lars Kruse, Wolfgang Nebel, Alexander Pratsch, Eike Sch-
midt, Milan Schulte, and Arne Schulz. System Level Optimization and Design Space
Exploration for Low Power. In ISSS ’01: Proceedings of the 14th International Sym-
posium on Systems Synthesis, pages 142–146, 2001.
[134] Phillip Stanley-Marbell and Michael Hsiao. Fast, Flexible, Cycle-Accurate Energy
Estimation. In ISLPED ’01: Proceedings of the 2001 International Symposium on
Low Power Electronics and Design, pages 141–146, 2001.
[135] Thad. E. Starner and Joseph A. Paradiso. Human-Generated Power for Mobile
Electronics. In Low-Power Electronics Design, chapter 45. CRC Press, 2005.
[136] S. Steinke, M. Knauer, L. Wehmeyer, and P. Marwedel. An Accurate and Fine Grain
Instruction-Level Energy Model Supporting Software Optimizations. In PATMOS-
REFERÊNCIAS BIBLIOGRÁFICAS 137
[137] Herb Sutter and James R. Larus. Software and the Concurrency Revolution. Queue,
3(7):54–62, 2005.
[139] Synopsys Inc. Power Compiler User Guide, x-2005.09 edition, December 2005.
[140] Synopsys Inc. Prime Power Manual, x-2005.06 edition, June 2005.
[141] Doug Lea et al. A Memory Allocator. Artigo e código-fonte disponı́veis no endereço
http://gee.cs.oswego.edu/dl/html/malloc.html. Acessado em agosto de 2009.
[142] V. Tiwari, S. Malik, A. Wolfe, and M. Lee. Instruction Level Power Analysis and
Optimization of Software. Journal of VLSI Signal Processing, 13(2–3):223–238,
August 1996.
[143] Vivek Tiwari, Sharad Malik, and Andrew Wolfe. Power Analysis of Embedded
Software: A First Step Towards Software Power Minimization. In ICCAD ’94:
Proceedings of the 1994 IEEE/ACM International Conference on Computer-Aided
Design, pages 384–390, San Jose, California, United States, 1994. IEEE Computer
Society Press.
[144] Manish Verma and Peter Marwedel. Overlay Techniques for Scratchpad Memo-
ries in Low Power Embedded Processors. IEEE Transactions on Very Large Scale
Integration (VLSI) Systems, 14(8):802–815, August 2006.
[145] Manish Verma, Lars Wehmeyer, and Peter Marwedel. Efficient Scratchpad Alloca-
tion Algorithms for Energy Constrained Embedded Systems. In PACS, pages 41–56,
2003.
[146] Manish Verma, Lars Wehmeyer, Robert Pyka, Peter Marwedel, and Luca Benini.
Compilation and Simulation Tool Chain for Memory Aware Energy Optimizati-
ons. In Workshop on Embedded Computer Systems: Architectures, Modeling, and
Simulation (SAMOS VI), 2006.
[147] Robert A. Walker and Donald E. Thomas. A Model of Design Representation and
Synthesis. In DAC ’85: Proceedings of the 22nd ACM/IEEE Conference on Design
Automation, pages 453–459, Las Vegas, Nevada, United States, 1985. ACM Press.
138 REFERÊNCIAS BIBLIOGRÁFICAS
[148] Q. Wu, C. Ding, C. Hsieh, and M. Pedram. Statistical Design of Macro-Models for
RT-Level Power Evaluation. In ASP-DAC ’97: Proceedings of the Asia and South
Pacific Design Automation Conference, pages 523–528, 1997.
[149] Qing Wu, Qiu Qinru, Massoud Pedram, and Chih-Shun Ding. Cycle-Accurate
Macro-Models for RT-Level Power Analysis. IEEE Transactions on Very Large
Scale Integration (VLSI) Systems, 6(4):520–528, December 1998.
[150] Wei Wu, Lingling Jin, Jun Yang, Pu Liu, and Sheldon X.-D. Tan. A Systematic
Method for Functional Unit Power Estimation in Microprocessors. In DAC ’06:
Proceedings of the 43rd Annual Conference on Design Automation, pages 554–557,
2006.
[153] Lin Zhong and Niraj K. Jha. Interconnect-Aware High-Level Synthesis for Low
Power. In ICCAD ’02: Proceedings of the 2002 IEEE/ACM International Confe-
rence on Computer-Aided Design, pages 110–117, 2002.
[154] Lin Zhong, S. Ravi, A. Raghunathan, and N. K. Jha. Power Estimation for Cycle-
Accurate Functional Descriptions of Hardware. In ICCAD ’04: Proceedings of the
2004 IEEE/ACM International Conference on Computer-Aided Design, pages 668–
675. IEEE Computer Society, 2004.
[155] Ahmad Zmily and Christos Kozyrakis. Energy-Efficient and High-Performance Ins-
truction Fetch Using a Block-Aware ISA. In ISLPED ’05: Proceedings of the 2005
International Symposium on Low Power Electronics and Design, pages 36–41, 2005.