Modulo II
Ferramentas para otimização
Agenda
 Compilador Microsoft®
 Compilador Intel®
 Intel® VTune™
Ferramentas
Compilador Microsoft®
Compilador Microsoft®
 Microsoft EVC 3.0 IDE
 IDE padrão para PocketPC/Smartphone 2002 SDK
 Vem com compilador 3.0
 Suporte apenas para ARM genérico
 Microsoft EVC 4.2 IDE [Para PocketPC/Smartphone 2003]
 Possui SDK para PocketPC 2003 e Smartphone 2003
 Não possui SDK para PocketPC/Smartphone 2002
 Suporte interno para extensões DSP e co-processador iMPT
 Suporta programação para Intel® XScale™
 Não suporta rotinas intrinsecas WMMX nem outras extensões WMMX
 Compilador ECV 4.2 pode ser instalado na IDE 3.0
 Compilador para microprocessador Intel® XScale™ pode ser
instalado no ambiente EVC 3.0
Suporte interno no compilador eVC 4.2
Função interna
Instrução Assembly XScale™
Descrição
void _SmulAdd_SL_ACC(
MIA (<cond>) acc0, Rm, Rs
MIA multiplica o valor no registrador Rs
pelo valor no Registrador Rm e soma o
resultado ao acumulador de 40 bits
MIAPH (<cond>) acc0, Rm, Rs
A instrução MIAPH faz duas
multiplicações de 4 inteiros de 16 bits
dois a dois e soma os resultados ao
acumulador de 40 bits
MIABB (<cond>) acc0, Rm, Rs
Faz uma multiplicação de 16 bits
utilizando as metades menos
significativas de Rm e Rs e soma ao
acumulador de 40 bits
MIATT (<cond>) acc0, Rm, Rs
Faz uma multiplicação de 16 bits
utilizando as metades mais
significativas de Rm e Rs e soma ao
acumulador de 40 bits
MIABT (<cond>) acc0, Rm, Rs
Faz uma multiplicação de 16 bits
usando a metade menos significativa
de Rm e a metade mais significativa de
Rs e soma ao acumulador de 40 bits
int Arg1,
int Arg2 );
void _SmulAddPack_2SW_ACC(
int Arg1,
int Arg2 );
void _SmulAddLo_SW_ACC(
int Arg1,
int Arg2 );
void _SmulAddHi_SW_ACC(
int Arg1,
int Arg2 );
void _SmulAddLoHi_SW_ACC(
int Arg1,
int Arg2);
Suporte interno no compilador EVC 4.2
Função interna
Instrução Assembly XScale™
Descrição
void _SmulAddHiLo_SW_ACC(
MIATB (<cond>) acc0, Rm, Rs
Faz uma multiplicação de 16bits
usando a metade menos significativa
de Rm e a metade mais significativa
de Rs e soma ao acumulador de 40
bits
MAR (<cond>) acc0, Rm, Rs
Move os 40 bits menos significativos
de Arg1 ao acumulador de 40 bits,
Arg2 é o número de co-processador,
deve ser 0
MRA (<cond>) acc0, Rm, Rs
Retorna o valor do co-processador. O
Arg1 é o número do co-processador,
deve ser 0
PLD (<cond>) acc0, Rm, Rs
Essa instrução é utilizada para
carregar previamente dados na
memória Cache
int Arg1,
int Arg2 );
void _WriteCoProcessor(
__int64 Arg1,
int Arg2 );
__int64 _ReadCoProcessor(
int Arg1 );
void _PreLoad(
unsigned long *addr );
Instalando o Compilador 4.0 no IDE EVC 3.0
•
•
Instale IDE Microsoft EVC 3.0
Instale IDE Microsoft EVC 4.2
– Note o diretório de instalação, ele
é diferente do IDE 3.0
•
•
•
•
•
•
Inicie o IDE EVC 3.0, escolha
Tools -> Options na barra de
menus
Escolha a aba Directories
Na List Box “Show Directories”,
escolha “Include Files”
Dê um duplo clique no espaço em
branco com a caixa vermelha
Clique no botão “...”
Ache o diretório com os arquivos
de include do compilador 4.2,
aperte OK
Desenvolvendo para sistemas
PocketPC/Smartphone 2002
Instalando o Compilador 4.0 no IDE EVC 3.0
• Selecione o novo
diretório adicionado e
com a seta para cima
carregue este diretório
até o topo da lista
– Isto fará com que ele
seja procurado primeiro
Instalando o Compilador 4.0 no IDE EVC 3.0
 Vá até o diretório:
 C:\Arquivos de Programas\Microsoft Embeeded Tools\EVC\wce300
 Copie o diretório bin
 Renomeie o diretório copiado para obin
 Localize o diretório bin do compilador 4.2
 Selecione todos os arquivos bin para serem copiados
 Copie-os sobre os arquivos do diretório wce300\bin
 Se você precisar voltar à versão antiga
 Renomeie o diretório bin para nbin
 Renomeie o diretório obin para bin
 Remova a referência do diretório 4.2 do Include File
Ajustando opções específicas para o
microprocessador Intel® XScale™ no compilador 4.0
 Vá até Project -> Settings
 Certifique-se de que o
módulo selecionado é o
módulo do projeto
 As opções do compilador
são:
 /QRxscale – o processador
é o Intel® XScale™
 /QRxscalesched – usa
características do pipeline
do Intel® XScale™
 /QRdsp – usa extensões
DSP da ARM
Qual compilador Microsoft está sendo usado?
 Vá até Project->
Settings na barra de
menu
 Clique na aba C/C++
 Na List Box “Category”
escolha “Customize”
 Desmarque “Supress
startup banner”
 Durante a compilação
você verá o texto do
compilador
 Para VCC++ 3.0, a
versão é 12.01.8569
 Para VCC++ 4.0, a
versão é 12.20.9615
Ferramentas
Compilador Intel®
Compilador Intel




Integrado ao IDE Microsoft eVC
Suporte a Intrínsecas
Inclui vector analysis (com a chave /QTPxsc3)
Geralmente produz melhor compilação de todo o
código (ganho de 8 a 10%)
 Possui bibliotecas superiores – para programas de
algoritmo intensivo, especialmente ponto flutuante, o
ganho pode facilmente ser de 2x
Usar o Compilador Intel e as Intrínsecas Wireless
MMX é uma maneira fácil de incorporar
desempenho Wireless MMX em uma aplicação
Opções do Compilador Intel® XScale™
• Use /O3
– Digite manualmente na caixa
“Additional Options”
– Em alguns casos raros, a
otimização é tão agressiva
que a execução do programa
falha – troque por /O2
• A opção /O2 é encontrada
em File->Settings, aba C++
• Selecione o pushbutton
/Qipo
– Faz otimizações interprocedurais
– Pode causar algum aumento
no tamanho do código
Usando o compilador Intel®
 Depois da instalação, 3 novos
itens aparecerão no menu
“Tools”
 “Compiler Options” habilita
a seleção de chaves
adicionais de otimização que
não fazem parte do conjunto
Microsoft
 Habilita/Desabilita o
compilador Intel®
 Fornece documentação sobre
as opções e outras
características do compilador
Ferramentas
Comparações entre os Compiladores
Dados de Aplicações sem WMMX
Aplicação
Gargalo
MS 3.0
MS 4.0
Intel 1.1
Prime
Memória
7.9909
7.2283
7.3918
Mortgage
Calculator
Aritmética de
ponto flutuante
11.5017
11.5008
2.8332
GapiDraw
Escrita a
memória
1.6394
1.5969
1.507
Digital Persona
Uso intensivo
da CPU
.8857
.7493
.6799
Speechworks
Uso intensivo
da CPU
sem dados
3.1244
2.80245
• O dado é o tempo em segundos
• A biblioteca de ponto flutuante faz grande diferença
Ferramentas
Intel® VTune™
Ferramenta de Análise de
Desempenho
VTune™ – Ferramenta de Análise Estatística de
Desempenho para Intel® XScale™
• Recolhe amostras em
intervalos regulares de
tempo, determinando qual
função consome mais
recursos da CPU (baseado
no tempo)
• Determinando qual função
causa a utilização mais
ineficiente do processador
(baseado em eventos)
• Usa a PMU encontrada
apenas nos processadores
Intel ®
VTune™ – Outros benefícios
 Mede desempenho sem instrumentação
 Apenas depura símbolos necessários
 Mostra no código fonte quais são os “HotSpots”
existentes na função
 Dá conselhos de ajuste de desempenho
VTune™ - Performance Tuning Advice
O que é amostragem estatística?
 Amostragem significa que a informação é obtida sobre
o processo, a thread e o módulo atual com a
localização no módulo quando o evento ocorre
 Eventos ocorrem em algum intervalo
 Baseado em um intervalo de tempo
 Baseado no número de eventos de uso ou travamento de
recursos
 Supõe-se que a cada intervalo o código em execução é
o mesmo, ou seja, não mudou desde o último evento
VTune™ - Hot Spot View
Exibe quais funções usam mais a CPU. Note a escala e a
diferença entre o timer e o timer event
VTune – Análise de eventos
 O VTune habilita a captura de dados estatísticos de
eventos
 Eventos são capturados pela PMU, tipicamente
representam travamento de recursos, por exemplo:
 Travamento por dependência de dados
 Perda de cache de instruções
 Perda de cache de dados
 Buffer de dados não disponível
VTune – Análise de eventos
 Depois de um número de eventos pré-definidos, uma
amostra é obtida
 Determinada pela calibração, NÃO PULE ESTE PASSO!
 Falha na escolha da calibração apropriada resulta em
interferência entre ISR e a aplicação
 Até 2 eventos podem ser capturados em conjunto com
amostras baseadas em tempo. No PXA27x (Bulverde)
até 4 eventos.
Eventos PMU para Intel® XScale™
Número
Definição
Número
0x0
Fracasso na cache de instruções
0x7
Instrução executada
0x1
Cache de instruções não pode
entregar a instrução
0x8
Travamento devido a
lotação da D-Cache
0x2
Travamento por dependência de
dados
0x9
Sequência contígua do
evento 0x8
0x3
Fracasso em instrução TLB
0xa
Acesso a Data cache
0x4
Fracasso em dado TLB
0xb
Fracasso na Data cache
0x5
Desvio de instrução executado
0xc
Data cache write-back
0x6
Fracasso em predição de desvio
0xd
Software mudou PC
Definição
Hotspots baseados em tempo e eventos
Tempos e eventos são apresentados no mesmo
gráfico. A escala em cada é completamente diferente
Preparando seu código para uma execução
do VTune™
 Em Project->Settings
 Tenha certeza que
projeto (topo) está
selecionado
 Pressione a guia C++
 Na caixa Debug Info,
selecione Program
Database
Preparando seu código para uma execução
do VTune™
 Vá para a guia Link
 Tenha certeza que a
caixa Generate debug
info está marcada
VTune ™ - Como o Data Collector trabalha
 O Data Collector é utilizado
para ajustar intervalos de
amostra na PMU
 Executa-se a aplicação, as
interrupções são
direcionadas pela PMU
para colher dados
 ISR coleta um histórico de
amostras, informações
sobre qual módulo, qual
processo, qual linha de
execução (thread)
Data Collector
 Arquivos da Saída:
Aplicação em
teste com
informações de
Debug
 Arquivo de amostra
(.rsf) – Dados de
amostra das
interrupções da PMU
Informações ISR
 Arquivo de módulo
(.rmf) – Lista dos
módulos e
localizações
Requer uma construção especial de uma imagem
ROM para plataformas baseadas em WinCE
Depois de coletar os dados



Use o ActiveSync para copiar os arquivos.rsf e
.rmf para o Host
Use um diretório próximo à raiz com nome
simples, exemplo: c:\vtune
Converta usando buildtbxxsc


Será necessário os utilitários de conversão no mesmo
diretório da conversão
Associe o arquivo.tb5 com o VTune

C:\Arquivos de
programas\Intel\VTune\Shared\Bin\VtuneEnv.exe
Depois de coletar os dados


Os utilitários de conversão:

Tbsutil.dll

Convert5.exe

Builtbxxsc.exe
Copie estes arquivos de C:\Arquivos de
programas\Intel\VTune\RDC for XSC2\Host para o
seu diretório de conversão
Abrindo o arquivo no VTune
Você terá de responder
isto o tempo todo
Marque “Do not import,
just view the file” e
pressione OK
Associação com arquivo binário
 Quando você entrar nos
Hotspots, você será
perguntado para associar
com o arquivo binário
 O VTune usa isto para
encontrar a localização das
funções junto do módulo
 Procure o diretório do seu
projeto, então entre no
diretório ARMV4Dbg ou
ARMV4Rel
 Selecione o binário do seu
projeto
Entendendo os modos de visão do VTune™
 O VTune habilita a observação de dados coletados por Process,
Thread, Módulo ou HotSpot
 No modo Process (processos), o VTune apresentará as amostras de
todos o processos do dispositivo
 No modo Thread (linhas de execução), ele apresentará todas as
threads dependentes do processo escolhido
 No modo Module (módulo), ele apresentará todas as amostras de
cada módulo que estavam em execução. Um módulo é um código
executável carregado em um local. Quando seu programa chama uma
DLL, ele continua no mesmo processo e thread, mas em um módulo
diferente
 No modo HotSpot é apresentado como todas as amostras estão
distribuídas por função para o módulo selecionado
Dicas do VTune™
 Associe o arquivo .tb5 com o VTune
 Isso torna mais fácil a abertura do arquivo
 Você pode ordenar os dados por ascendência ou
descendência
 O VTune permite que você organize os dados em uma
planilha, útil para captar dados para análises futuras
 Você não pode salvar as informações, mas você pode recortar e
colar em uma outra planilha
Dicas do VTune™
 Considere o uso de “Print Screen” para captar marcas
significativas
 Cole no PowerPoint
 Antes da otimização
 Depois da otimização
 Certifique-se em qual modo de visão você está
 Processos - Thread - Módulo
 Seja cuidadoso sobre o que foi medido, quando o VTune
executa a aplicação a medida funciona melhor
 Executando a aplicação manualmente, ou executando uma
aplicação que requer interação do usuário com o VTune, gera
uma variação nos resultados, aparece VTIdle (VTune fica ocioso)
Dicas do VTune™ - Seja cuidadoso na
forma de interpretar os dados
 Gráficos de barras no módulo Process possuem abscissa com
unidades em 100, que não são unidades de medida, nem são
porcentagem!
 As porcentagens das funções são as porcentagem do módulo, não
do processo, e não de tudo; desse modo todas as porcentagens de
tempo das funções em um módulo somam 100
 Os eventos estão em número de interrupções, é preciso multiplicar
esse número pelo número de eventos acontecidos por interrupção
 Diferentes eventos são desenhados em escalas completamente
diferentes no mesmo gráfico
 Os clocks estão em ticks ou em milissegundos, isso pode ser
confuso
Dicas do VTune™ - Ligação incorreta ou
quebrada de símbolos
 Seja cuidadoso em recompilações
 Separe os diretórios de resultados do VTune para diferentes
experimentos, também separe os diretórios de projetos
 O VTune utiliza informações do
 Arquivo executável (.exe)
 Diretório do projeto
 Copie o arquivo .exe do PDA em um diretório separado, aponte o
Vtune para aquele arquivo .exe
 Seja cuidadoso ao sobrescrever os arquivos .rsf, .rmf, .tb5, apague
os arquivos .sdb (arquivos de símbolo), force o VTune a recriar as
informações de símbolos
Dicas do VTune™ - Interrupções
imprecisas
 Sempre tenha em mente como o VTune obtém o dados
 É possível que uma função gere 99% dos eventos, mas
após a próxima função ser chamada a interrupção
ocorre, ela será responsabilizada por todos os eventos.
Ao longo de todo o processo de medida isso não é um
problema a não ser que haja coincidência específica
entre a amostragem e as chamadas das funções
 A natureza imprecisa do VTune faz o ponto exato no
fonte ser incerto
 Considerando as incertezas nas informações obtidas
 Contínua útil para aproximações
VTune™ - Imagens com Suporte
 Requer PMU encontrada em XScale™
 Não trabalha em SA1110
 Requer modificação no Windows CE para a BSP
 A imagem ROM deve ser construída para suportar PMU
 Para Windows CE






Placa Lubbock, intrínseco
Recarga especial no PocketPC somente no IPAQ 3950
Viewsonic PC V35 (PPC 2002)
Todos PPC 2003 e SmartPhones 2003
Axim X3 PPC 2003
Mitac 8390 SmartPhome 2003
Módulo II
Laboratório
Objetivos:
- Instalar o compilador Microsoft 4.2 na IDE do eVC++ 3.0
- Usar o Compilador Intel C++ for Intel XScale Processor
- Obter métricas iniciais de performance
Download

Compilador Intel