Pós-processamento `objdump --disassemble` com contagens de ciclo ARM
Existe um script disponível para pós-processamento algunsobjdump --disassemble
saída para anotar com contagens de ciclo? Especialmente para a família ARM.Na maioria das vezes, isso seria apenas uma correspondência de padrões com uma pesquisa de tabela para a contagem. Eu acho que anotações como+5M
para cinco ciclos de memória podem ser necessários. Perl, python, bash,C
, etc estão bem. Eu acho que isso pode ser feito genericamente, mas estou interessado noBRAÇO, que tem umortogonal conjunto de instruções. Aqui está uma discussão sobre o68HC11 fazendo a mesma coisa. O script precisaria de uma CPUmodelo opção para selecionar as contagens de ciclo apropriadas; Eu acho que essas contagens já existem nogcc
descrição da máquina.
Eu não acho que haja umobjdump
mudar para isso, mas o RTFM seria ótimo.
Editar: Para esclarecer, suposições como o melhor subsistema de memória de caso, como será o caso quando o código é executado a partir do cache, são boas. O objetivo não é uma contagem de ciclos 100% precisa, como em alguns equipamentos de corrida. É possível obter uma estimativa razoável, caso contrário, o design do compilador seria impossível.
ComoDWelch Um total de execução simples não é possível com a arquitetura profunda de pipelines, como os chips Cortex mais recentes. oobjdump
pós-processamento teria que olhar para opcodes circundantes. Um plug-in do gcc é mais provável de ser capaz de realizar isso e, como isso é novo (4.5+), eu não acho que isso exista. Um script para o ARM926 é certamente possível e bastante simples.
A latência de memória não importa. O controlador de memória é como outroCPU
. Ele está fazendo negócios enquanto a CPU está fazendo aritmética, etc. Um algoritmo bom / bem ajustadoparalelo a memória acessa com os cálculos. Contando cargas / armazenamento e ciclos, você pode determinar quanto paralelismo é realizado, quando você ativa o perfil com um temporizador. O pipeline é significativo devido aos intertravamentos entre registros, mas uma contagem de ciclo parablocos básicos pode ser confiavelmente calculado e usado até mesmo em processadores ARM modernos; isso é muito complexo para um script simples.