Postprozess `objdump --disassemble` mit ARM-Zykluszählern

Gibt es ein Skript zur Nachbearbeitung einigerobjdump --disassemble Ausgabe mit Zykluszählungen zu kommentieren? Speziell für die ARM-Familie.Meistens war dies nur eine Musterübereinstimmung mit einer Tabellensuche für die Zählung. Ich denke, Anmerkungen mögen+5M es könnten fünf Speicherzyklen erforderlich sein. Perl, Python, Bash,Cusw. sind in Ordnung. Ich denke, das kann generisch gemacht werden, aber ich interessiere mich für dieARM, die eine hatsenkrecht Befehlssatz. Hier ist ein Thread zum68HC11 das Gleiche tun. Das Skript würde eine CPU benötigenModell- Option zur Auswahl der entsprechenden Zykluszahlen; Ich denke, diese Zählungen existieren bereits in dergcc Maschinenbeschreibung.

Ich glaube nicht, dass es eine gibtobjdump Dafür wechseln, aber RTFM wäre toll.

Bearbeiten: Zur Verdeutlichung sind Annahmen wie das Best-Case-Speichersubsystem, wie es der Fall sein wird, wenn der Code aus dem Cache ausgeführt wird, in Ordnung. Das Ziel ist nicht eine 100% genaue Zykluszählung, wie dies bei manchen laufenden Maschinen der Fall ist. Es ist möglich, eine vernünftige Schätzung zu erhalten, da sonst das Compiler-Design unmöglich wäre.

WieDWelch weist darauf hin, dass eine einfache laufende Summe mit einer Deep-Pipeline-Architektur wie neueren Cortex-Chips nicht möglich ist. Dasobjdump Nachbearbeitung müsste sich umliegende Opcodes ansehen. Ein gcc-Plug-in kann dies mit größerer Wahrscheinlichkeit und da dies neu (4.5+) ist, glaube ich nicht, dass es so etwas gibt. Ein Skript für den ARM926 ist sicherlich möglich und recht einfach.

Die Speicherlatenz spielt keine Rolle. Der Speichercontroller ist wie ein andererCPU. Es erledigt seine Geschäfte, während die CPU arithmetisch arbeitet usw. Ein gut / gut abgestimmter Algorithmus wird dies tunparallel der Speicher greift mit den Berechnungen zu. Durch Zählen von Lasten / Speichern und Zyklen können Sie bestimmen, wie viel Parallelität erreicht wird, wenn Sie ein aktives Profil mit einem Zeitgeber erstellen. Die Pipeline ist aufgrund von Verriegelungen zwischen Registern von Bedeutung, jedoch aufgrund einer Zykluszahl fürGrundblöcke kann auch auf modernen ARM-Prozessoren zuverlässig berechnet und verwendet werden; Dies ist zu komplex für ein einfaches Skript.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage