DE102012214672A1 - Bereitstellung einer Zuordnungsrelation und Durchführen einer Codeoptimierung - Google Patents

Bereitstellung einer Zuordnungsrelation und Durchführen einer Codeoptimierung Download PDF

Info

Publication number
DE102012214672A1
DE102012214672A1 DE201210214672 DE102012214672A DE102012214672A1 DE 102012214672 A1 DE102012214672 A1 DE 102012214672A1 DE 201210214672 DE201210214672 DE 201210214672 DE 102012214672 A DE102012214672 A DE 102012214672A DE 102012214672 A1 DE102012214672 A1 DE 102012214672A1
Authority
DE
Germany
Prior art keywords
performance
code
events
instruction
association relation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE201210214672
Other languages
English (en)
Inventor
Jia Zou
Rui Hou
Yan Qi Wang
Wei Fan
Michael Wurst
Zheng Ya Sun
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012214672A1 publication Critical patent/DE102012214672A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein Verfahren und eine System zum Durchführen einer Leistungsoptimierung werden bereitgestellt. Das Verfahren umfasst Folgendes: Empfangen der Leistungsprofilierdaten, die der Ausführung eines ersten Codes zugeordnet sind, auf der ersten physischen Plattform; gemäß den Leistungsprofilierdaten Ermitteln der Zuordnungsrelation zwischen der Anweisungssequenz und den Leistungsmangelereignissen; und Bereitstellen der Zuordnungsrelation für eine andere physische Plattform. Die zweite physische Plattform kann die Zuordnungsrelation erhalten und die Zuordnungsrelation dazu verwenden, den zweiten Code zu optimieren, wodurch die Ausführungsleistung des zweiten Codes auf der ersten Plattform optimiert wird. Die in der Erfindung bereitgestellte Vorrichtung entspricht dem vorstehend beschriebenen Verfahren. Das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung können es ermöglichen, den entwickelten Code auf der Entwicklungsplattform auf der Grundlage der auf der Zielplattform erzeugten Zuordnungsrelation zu optimieren, wodurch die plattformübergreifende Leistungsoptimierung realisiert und der Optimierungsprozess effektiver wird.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft die Optimierung der Ausführungsleistung von Computern und insbesondere die plattformübergreifende Optimierung der Leistung.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Mit der Weiterentwicklung der Informationstechnologie ist eine höhere Ausführungsleistung von Computern zu erwarten. In der Praxis hängt diese Ausführungsleistung nicht nur von den physischen Plattformen von Computern ab, sondern auch von der Effizienz der Nutzung der physischen Plattformen durch eine Softwareanwendung bei deren Ausführung. Wenn Software und Hardware gute Synergien untereinander aufweisen, das heißt eine Software die Ausführungskapazität einer physischen Plattform optimal nutzen kann, wird eine höhere Ausführungsleistung erreicht.
  • Um die Ausführungsleistung zu verbessern, muss eine Software bei ihrer Entwicklung und Ausführung optimiert werden, um besser an die Hardwareplattform angepasst zu sein. Insbesondere testet der Prozessor während des Prozesses des Ausführens von Softwarecode die Ausführung von Anweisungen und hält dies fest, wodurch Hardwareprofildaten gebildet werden. Die Hardwareprofildaten können das Verhalten und Ereignisse in Verbindung mit Hardwareleistung wiedergeben, die beim Ausführen von Anweisungen aufgetreten sind und werden daher auch als Leistungsprofilierdaten (performance profiling data) bezeichnet. Durch Analysieren der Leistungsprofilierdaten kann das Ausführungsprofil spezifischer Anweisungen auf einer spezifischen Hardwareplattform erfasst werden. Auf Grundlage des erhaltenen Ausführungsprofils können der Anweisungscode optimiert, die Leistungsmängel verursachenden Ereignisse beseitigt und daher die Ausführungsleistung verbessert werden.
  • Insbesondere können viele Prozessoreinheiten des Standes der Technik ein Hardwaresignal bereitstellen, um die Hardwareleistungsereignisse anzuzeigen. Um diese Leistungsereignisse zu erhalten, kann auf der Plattform eine Leistungsüberwachungseinheit angeordnet werden, die eine Vielzahl spezieller Hardwareleistungszähler umfasst, die jeweils über einen Wandler mit einem Hardwaresignal verbunden sind. Der im Betriebssystemkernel ausgeführte Tester kann periodisch oder ausgelöst durch Überlaufausnahmefehler (overflow exception) des Leistungsüberwachers Tests dieser Zähler durchführen. Das Testprotokoll kann im Arbeitsspeicherpuffer gespeichert und schließlich in eine Datei geschrieben werden, wodurch die Leistungsprofilierdaten gebildet werden.
  • Üblicherweise können abhängig von den unterschiedlichen Hardwarestrukturen, Dutzende, ja sogar Tausende unterschiedlicher Hardwareleistungsereignisse im Prozessor auftreten. Zu solchen Ereignissen zählen zum Beispiel Anweisungs-Cachefehler (Instructions-Cache Miss (ICacheMiss)), Daten-Cachefehler (Data Cache Miss (DCacheMiss)), TLB-Fehler (TLB Miss (TLBMiss)), Anweisungspipeline aufgehoben (Blockieren) (Instruction Pipeline Suspended (Stall)), Pipeline Warten (Zurückführen) (Pipeline Wait (Recycle)) und Ähnliches. Die Ereignistypen hängen hauptsächlich vom physischen Aufbau des Prozessors ab. Diese Ereignisse können den Status des Prozessors ändern und stellen wichtige Einflussfaktoren für die Ausführungsleistung dar.
  • 1 zeigt ein typisches Beispiel für Leistungsprofilierdaten. In dem in 1 gezeigten Beispiel sind Leistungsprofilierdaten in einer Tabelle angeordnet, in der jeder Eintrag, wie beispielsweise jede Zeile, ein Ausführungsprofil einer Anweisung zeigt, wozu die der Anweisung zugeordneten Anweisungsinformationen und die Leistungsereignisstatistiken gehören. Zu den Anweisungsinformationen gehört zum Beispiel der Modulname der Anweisung (Mod), die Adresse der Anweisung (Addr), die Zieladresse (einer Sprunganweisung) (TargetAddr), der Operationscode der Anweisung (Opcode), der Operand (Operand), die Testanzahl (ticks), usw.; zu den der Anweisung zugeordneten Leistungsereignisstatistiken gehören die Testinformationen, in denen die vorstehenden Ereignisse wie beispielsweise ICacheMiss, DCacheMiss, TLBMiss, Blockieren, Recycle, usw. erscheinen. Es ist verständlich, dass die Leistungsprofilierdaten abhängig vom Aufbau der physischen Plattform und der Gestaltung der Leistungsüberwachungseinheit weitere oder andere Leistungsereignisse umfassen können. Allgemein ist zumindest ein Teil der festgehaltenen Leistungsereignisse Leistungsmängeln beim Ausführen von Anweisungen zugeordnet. Zum Beispiel hindern die vielfältigen festgehaltenen CacheMiss-Ereignisse in 1 den Prozessor daran, Daten direkt aus dem Cachespeicher zu lesen, durch die Blockieren- und Recycle-Ereignisse der Pipeline wird die Ausführung des Anweisungsstroms aufgehoben, in den Wartezustand versetzt und Ähnliches. Das Auftreten dieser Ereignisse verringert die Ausführungsgeschwindigkeit und Effizienz des Prozessors und verursacht Leistungsmängel; daher können solche Ereignisse als Leistungsmangelereignisse bezeichnet werden.
  • Durch Analysieren der vorstehenden Leistungsprofilierdaten und Empfangen der den Leistungsmängeln zugeordneten Anweisungsinformationen können diese Mängel möglicherweise überwunden und dadurch der Code optimiert und die Ausführungsleistung des Prozessors verbessert werden. 2 zeigt eine schematische Abbildung der Codeoptimierung des Standes der Technik. Wie in der Figur gezeigt, werden ein Optimierer und eine Ausführungseinheit in derselben physischen Plattform bereitgestellt. Vielfältige Codes, darunter der Quellcode einer Softwareanwendung, der Zwischencode oder der umgewandelte Binärcode, stellen zunächst die Eingangsgrößen des Optimierers dar. Wenn die Codes zum ersten Mal ausgeführt werden, übermittelt der Optimierer die Codes direkt an die Ausführungseinheit. Während die Ausführungseinheit diese Codes ausführt, erzeugt die Leistungsüberwachungseinheit, wie vorstehend beschrieben, Leistungsprofilierdaten bezüglich der Ausführung der Codes. Sobald diese Leistungsprofilierdaten erhalten wurden, kann der Optimierer durch Analysieren der Leistungsprofilierdaten die leistungsmängelbezogenen Ereignisse erhalten. Auf der Grundlage der Leistungsmangelereignisse kann der Optimierer die Codes mit der Absicht modifizieren und optimieren, die Leistungsmangelereignisse zu beseitigen oder zu verringern. Anschließend übermittelt der Optimierer die optimierten Codes erneut der Ausführungseinheit zur Ausführung und bildet dabei erneut Leistungsprofilierdaten. Durch erneutes Analysieren der Leistungsprofilierdaten optimiert der Optimierer die Codes erneut und entfernt die Leistungsmängel weiter. Somit können die Codes der Softwareanwendung nach wiederholtem Ausführen und Modifizieren wie vorstehend beschrieben besser an die Ausführungsplattform angepasst werden.
  • Während des in 2 gezeigten Optimierungsprozesses beruht die Codeoptimierung auf der Analyse der Leistungsprofilierdaten, und die Leistungsprofilierdaten werden auf der Grundlage der Ausführung der Codes auf einer bestimmten Plattform erstellt; daher müssen die Codes zuerst auf der physischen Zielplattform ausgeführt werden, bevor sie optimiert werden, und die Ausführung und die Optimierung müssen auf derselben physischen Plattform durchgeführt werden. In der Praxis wird eine Softwareanwendung jedoch im Allgemeinen durch Entwickler auf einer Entwicklungsplattform entwickelt, während sie im Allgemeinen auf der Hardwareplattform des Kunden ausgeführt wird. Da die Hardwareplattformen, auf denen die Softwareanwendung ausgeführt wird, verschiedene physische Eigenschaften aufweisen, muss die Codeoptimierung für jede Hardwareplattform den Code auf jeder Plattform ausführen, was unvermeidlich sehr hohe Kosten für die Optimierung verursacht. Andererseits können die Leistungsprofilierdaten die auf einer physischen Plattform ausgeführten Anweisungsinformationen wiedergeben, und daher kann die auf der Hardwareplattform des Kunden durch Entwickler ausgeführte Codeoptimierung möglicherweise potenzielle Sicherheitsrisiken mit sich bringen, wie beispielsweise Lecks der Quellcodedaten oder Lecks der vertraulichen Daten des Kunden. Daher weisen die Leistungsoptimierlösungen des Standes der Technik in vielerlei Hinsicht Nachteile auf.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Im Hinblick auf die vorstehenden Fragen stellt die vorliegende Erfindung eine plattformübergreifende Leistungsoptimierlösung bereit, um mindestens eines der beim Stand der Technik bestehenden Probleme zu überwinden.
  • Insbesondere stellt die vorliegende Erfindung in einem ersten Aspekt ein Verfahren des Bereitstellens einer Zuordnungsrelation bereit, das Folgendes umfasst: Empfangen der Leistungsprofilierdaten, die der Ausführung eines ersten Codes zugeordnet sind, wobei die Leistungsprofilierdaten die Informationen von Anweisungen, die dem ersten Code entsprechen, und die Informationen von Leistungsmangelereignissen, die den Anweisungen entsprechen, umfassen; gemäß den Leistungsprofilierdaten Aufbauen mindestens einer Anweisungssequenz und Ermitteln der Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen; und Bereitstellen der Zuordnungsrelation für eine andere physische Plattform zum Durchführen der Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation.
  • Gemäß dem zweiten Aspekt stellt die vorliegende Erfindung ein Verfahren zum Durchführen einer Codeoptimierung bereit, das Folgendes umfasst: Empfangen der Zuordnungsrelation, wie sie im ersten Aspekt bereitgestellt wird; gemäß der Zuordnungsrelation Ermitteln der dem zweiten Code entsprechenden Leistungsmängelereignisse; und auf der Grundlage der ermittelten Leistungsmangelereignisse Optimieren des zweiten Codes.
  • Gemäß dem dritten Aspekt stellt die vorliegende Erfindung eine Vorrichtung zum Bereitstellen einer Zuordnungsrelation bereit, die Folgendes umfasst: eine Profilierdatenempfangseinheit, die so eingerichtet ist, dass sie die der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten erhalten kann, wobei die Leistungsprofilierdaten die Informationen von Anweisungen, die dem ersten Code entsprechen, und die Informationen von Leistungsmängelereignissen, die den Anweisungen entsprechen, umfassen; eine Zuordnungsermitteleinheit, die so eingerichtet ist, dass sie gemäß den Leistungsprofilierdaten mindestens eine Anweisungssequenz aufbauen und die Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen ermitteln kann; und eine Zuordnungsbereitstelleinheit, die so eingerichtet ist, dass sie die Zuordnungsrelation einer anderen physischen Plattform zum Durchführen der Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation bereitstellen kann.
  • Gemäß dem vierten Aspekt stellt die vorliegende Erfindung eine Vorrichtung zum Durchführen einer Codeoptimierung bereit, die Folgendes umfasst: eine Zuordnungsempfangseinheit, die so eingerichtet ist, dass sie die Zuordnungsrelation, wie sie im dritten Aspekt bereitgestellt wird, erhalten kann; eine Mangelermittlungseinheit, die so eingerichtet ist, dass sie gemäß der Zuordnungsrelation die dem zweiten Code entsprechende Leistungsmängelereignisse ermitteln kann; und eine Codeoptimiereinheit, die so eingerichtet ist, dass sie auf der Grundlage der ermittelten Leistungsmangelereignisse den zweiten Code optimieren kann.
  • Gemäß einer Ausführungsform, eine Vorrichtung zum Bereitstellen einer Zuordnungsrelation für die Codeoptimierung, die Folgendes umfasst:
    eine Profilierdatenempfangseinheit, die so eingerichtet ist, dass sie die der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten erhalten kann, wobei die Leistungsprofilierdaten die Informationen von Anweisungen, die dem ersten Code entsprechen, und die Informationen von Leistungsmangelereignissen, die den Anweisungen entsprechen, umfassen;
    eine Zuordnungsermitteleinheit, die so eingerichtet ist, dass sie gemäß den Leistungsprofilierdaten mindestens eine Anweisungssequenz aufbauen und die Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen ermitteln kann; und
    eine Zuordnungsbereitstelleinheit, die so eingerichtet ist, dass sie die Zuordnungsrelation einer anderen physischen Plattform zum Durchführen der Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation bereitstellen kann.
  • Gemäß einer Ausführungsform werden die Leistungsprofilierdaten auf der Grundlage der Testprotokolle gebildet, die erstellt werden, wenn der erste Code ausgeführt wird.
  • Gemäß einem anderen Aspekt stellt die Erfindung eine Vorrichtung zum Durchführen einer Codeoptimierung bereit, die Folgendes umfasst:
    eine Zuordnungsempfangseinheit, die so eingerichtet ist, dass sie die Zuordnungsrelation erhalten kann, wie sie durch die Vorrichtung gemäß einer Ausführungsform der Erfindung bereitgestellt wird;
    eine Mangelermittlungseinheit, die so eingerichtet ist, dass sie gemäß der Zuordnungsrelation die dem zweiten Code entsprechenden Leistungsmangelereignisse ermitteln kann; und
    eine Codeoptimiereinheit, die so eingerichtet ist, dass sie auf der Grundlage der ermittelten Leistungsmangelereignisse den zweiten Code optimieren kann.
  • Gemäß einer Ausführungsform ist die Zuordnungsempfangseinheit so eingerichtet, dass sie die Zuordnungsrelation über eine Zuordnungsfreigabeplattform erhalten kann.
  • Gemäß einer Ausführungsform ist die Mangelermitteleinheit so eingerichtet, dass sie:
    den zweiten Code abtasten und Anweisungssequenzen erzeugen kann, die dem zweiten Code entsprechen;
    die erzeugten Anweisungssequenzen mit der erhaltenen Zuordnungsrelation vergleichen kann; und
    gemäß der Zuordnungsrelation die Leistungsmangelereignisse ermitteln kann, die der passenden Anweisungssequenz entsprechen.
  • Gemäß einer Ausführungsform ist die Codeoptimiereinheit so eingerichtet, dass sie die Leistungsmangelereignisse auf mindestens eine der folgenden Weisen beseitigen oder verringern kann:
    Anpassen der Ausführungsreihenfolge des zweiten Codes; und
    Hinzufügen zusätzlicher Anweisungscodes zum zweiten Code.
  • Das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung können es ermöglichen, den entwickelten Code auf der Entwicklungsplattform auf der Grundlage der Zuordnungsrelation zwischen der Anweisungssequenz und den auf der physischen Zielplattform erzeugten Leistungsmängelereignissen zu optimieren, um den entwickelten Code besser an die Zielplattform anzupassen und dadurch die plattformübergreifende Leistungsoptimierung zu realisieren und den Optimierungsprozess effektiver zu gestalten.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein typisches Beispiel für Leistungsprofilierdaten;
  • 2 zeigt eine schematische Abbildung der Codeoptimierung des Standes der Technik;
  • 3 zeigt einen Ablaufplan eines Verfahrens zum Bereitstellen einer Zuordnungsrelation gemäß einer Ausführungsform der Erfindung;
  • 4 zeigt einen Ablaufplan eines Verfahrens zum Durchführen einer Codeoptimierung gemäß einer Ausführungsform der Erfindung;
  • 5A zeigt einen Teilschritt eines Ermittelns einer Zuordnungsrelation gemäß einer Ausführungsform der Erfindung;
  • 5B zeigt einen Teilschritt eines Ermittelns einer Zuordnungsrelation gemäß einer weiteren Ausführungsform der Erfindung;
  • 6 zeigt ein Beispiel des Anhäufens (clustering) und Codierens von Anweisungssequenzen gemäß einer Ausführungsform der Erfindung;
  • 7 zeigt eine schematische Abbildung von Zuordnungsrelationen gemäß einer Ausführungsform der Erfindung;
  • 8 zeigt einen Teilschritt eines Ermittelns von Leistungsmangelereignissen gemäß einer Ausführungsform der Erfindung;
  • 9A zeigt ein schematisches Blockschaltbild einer Vorrichtung zum Bereitstellen einer Zuordnungsrelation gemäß einer Ausführungsform der Erfindung;
  • 9B zeigt ein schematisches Blockschaltbild einer Vorrichtung zum Durchführen einer Codeoptimierung gemäß einer Ausführungsform der Erfindung;
  • 10 stellt ein Blockschaltbild dar, das ein beispielhaftes Computersystem 100 zeigt, das geeignet ist, die Ausführungsformen der Erfindung zu realisieren.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Nachfolgend werden die Ausführungsformen der Erfindung beschrieben. Wie für den Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren, oder Computerprogrammprodukt ausgebildet sein. Dementsprechend können Aspekte der Erfindung in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder in einer Ausführungsform ausgebildet sein, die Software- und Hardware-Aspekte kombiniert, was hierin sämtlich allgemein als „Schaltung”, „Modul”” oder „System” bezeichnet sein kann. Weiterhin können Aspekte der Erfindung in Form eines Computerprogrammprodukts ausgebildet sein, das in einem oder mehreren computerlesbaren Datenträgern mit auf dem Datenträger befindlichem durch Computer verwendbaren Programmcode enthalten sein kann.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Datenträgern kann verwendet werden. Bei dem computerlesbaren Datenträger kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich, ohne darauf beschränkt zu sein, beispielsweise um ein System, eine Vorrichtung, eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer oder Infrarot oder Halbleiter verwendender Art oder eine beliebige Kombination des zuvor Genannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht erschöpfende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM)), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Nur-Lese-Compact-Disk-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder beliebige geeignete Kombinationen des zuvor Genannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes physisch greifbare Medium handeln, welches das Programm zur Verwendung durch oder in Verbindung mit dem System, der Vorrichtung oder der Einheit zur Ausführung von Anweisungen beinhalten oder speichern kann.
  • Zu computerlesbaren Signalmedien kann ein ausgebreitetes Datensignal zählen, bei dem der computerlesbare Programmcode entweder im Basisband oder als Teil des Trägersignals ausgebildet ist. Ein derartiges ausgebreitetes Signal kann jede geeignete Form verwenden, einschließlich, jedoch nicht beschränkt auf, ein elektromagnetisches Signal, ein optisches Signal oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das sich vom computerlesbaren Speichermedium unterscheidet und welches das Programm zur Verwendung durch oder in Verbindung mit dem System, der Vorrichtung oder der Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
  • Der in dem computerlesbaren Datenträger enthaltene Computercode kann mittels eines beliebigen geeigneten Mediums, einschließlich, aber nicht beschränkt auf, kabellose, kabelgebundene, Lichtleiterkabel, Hochfrequenz (HF) usw. oder einer beliebigen geeigneten Kombination davon übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen einschließlich objektorientierter Programmiersprachen wie Java, Smalltalk, C++ oder ähnliche und herkömmlicher prozeduraler Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf einem Computer eines Benutzers, teilweise auf einem Computer eines Benutzers, als eigenständiges Softwarepaket, teilweise auf einem Computer eines Benutzers und teilweise auf einem entfernt angeordneten (remote) Computer oder vollständig auf einem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Schema kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk, darunter ein Nahbereichsnetzwerk (local area network (LAN)) oder ein Weitbereichsnetzwerk (wide area network (WAN)) verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden.
  • Nachstehend werden Aspekte der Erfindung unter Bezugnahme auf Ablaufpläne und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten der Ausführungsform der Erfindung beschrieben. Es ist zu beachten, dass jeder Block des Ablaufplans und/oder des Blockdiagramms sowie Kombinationen von Blöcken in dem Ablaufplan und/oder Blockdiagramm durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockdiagramms angegebenen Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Datenträger gespeichert werden, der einen Computer oder eine andere Datenverarbeitungsvorrichtung anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Datenträger gespeicherten Anweisungen einen Herstellungsartikel einschließlich eines Anweisungsmittels erzeugen, welches die im Block oder in den Blöcken des Ablaufplans und/oder Blockdiagramms angegebenen Funktionen/Handlungen ausführt.
  • Die Computerprogrammanweisungen können zudem in einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung eine Reihe von Operationsschritten durchzuführen, um einen computerimplementierten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, einen Prozess zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockdiagramms angegebenen Funktionen/Handlungen erzeugen.
  • Im Weiteren werden die Ausführungsformen der Erfindung in Verbindung mit den Zeichnungen beschrieben. Es sollte beachtet werden, dass die Beschreibung der folgenden detaillierten Beispiele lediglich dazu dient, die beispielhaften Realisierungsarten zu erläutern und keine Einschränkung des Umfangs der Erfindung bedingen sollen.
  • In manchen Ausführungsformen der Erfindung wird die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen dadurch erhalten, dass die Leistungsprofilierdaten der physischen Zielplattform analysiert werden; anschließend wird Code unter Verwendung der erhaltenen Zuordnungsrelation auf der Entwicklungsplattform optimiert, wodurch die plattformübergreifende Leistungsoptimierung realisiert wird. Wie vorstehend beschrieben, können die Leistungsprofilierdaten das Verhalten und die Ereignisse in Verbindung mit der Hardwareleistung wiedergeben, die beim Ausführen von Anweisungen aufgetreten sind und hängen stark von den Hardwareeigenschaften der physischen Plattform und dem auf der physischen Plattform ausgeführten Code ab. Dies bedeutet, dass die Leistungsprofilierdaten sowohl die Hardwareeigenschaften der physischen Plattform als auch die Eigenschaften des ausgeführten Codes wiedergeben. Dies ist der Grund, warum Entwickler den Code beim Stand der Technik als erstes ausführen und die entsprechenden Leistungsprofilierdaten erzeugen müssen und dann den Code gemäß den Profilierdaten optimieren können. In den Ausführungsformen der Erfindung hingegen können durch Analysieren der Leistungsprofilierdaten die statistischen Gesetzmäßigkeiten bezüglich der Anweisungssequenzen und der Leistungsmangelereignisse herausgearbeitet und dadurch die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmängeln erhalten werden, die nur die Hardwareeigenschaften der physischen Plattform wiedergibt und nichts mit den ausgeführten Codes zu tun hat. Auf der Grundlage einer solchen Zuordnungsrelation kann eine Codeoptimierung auf der Entwicklungsplattform derart durchgeführt werden, dass der optimierte Code besser an die physische Zielplattform angepasst ist, wodurch die plattformübergreifende Leistungsoptimierung realisiert wird. Im Weiteren werden die Ausführungsformen der Erfindung in Verbindung mit den Zeichnungen beschrieben.
  • Gemäß den Ausführungsformen der Erfindung kann der Prozess der plattformübergreifenden Leistungsoptimierung in zwei Stufen eingeteilt werden, d. h. ein auf einer ersten physischen Plattform (zum Beispiel der physischen Zielplattform) ausgeführtes Verfahren zum Bereitstellen der Zuordnungsrelation und ein auf einer zweiten physischen Plattform (zum Beispiel der physischen Entwicklungsplattform) ausgeführtes Verfahren zum Durchführen der Codeoptimierung.
  • 3 zeigt einen Ablaufplan eines Verfahrens zum Bereitstellen einer Zuordnungsrelation gemäß einer Ausführungsform der Erfindung. Die Schritte im Ablaufplan können auf der ersten physischen Plattform ausgeführt werden. Wie in der Figur gezeigt, umfasst der Prozess insbesondere in Schritt 30 ein Erhalten von der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten, wobei die Leistungsprofilierdaten die dem ersten Code entsprechenden Informationen von Anweisungen und die den Anweisungen entsprechenden Informationen von Leistungsmangelereignissen umfassen; in Schritt 32 ein Aufbauen von Anweisungssequenzen gemäß den Leistungsprofilierdaten und ein Ermitteln der Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen; und in Schritt 34 ein Bereitstellen der Zuordnungsrelation für eine andere physische Plattform, um die Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation durchzuführen.
  • Auf der Grundlage der so bereitgestellten Zuordnungsrelation kann eine Codeoptimierung durchgeführt und daher die Ausführungsleistung verbessert werden. 4 zeigt einen Ablaufplan eines Verfahrens zum Durchführen einer Codeoptimierung gemäß einer Ausführungsform der Erfindung. Die Schritte im Ablaufplan können auf der zweiten physischen Plattform ausgeführt werden. Wie in 4 gezeigt, umfasst der Prozess insbesondere in Schritt 40 ein Erhalten der Zuordnungsrelation, wie sie im Verfahren von 3 bereitgestellt wird; in Schritt 42 ein Ermitteln der dem zweiten Code entsprechenden Leistungsmangelereignisse gemäß der Zuordnungsrelation; und in Schritt 44 ein Optimieren des zweiten Codes auf der Grundlage der ermittelten Leistungsmangelereignisse und dadurch Optimieren der Ausführungsleistung des zweiten Codes auf der ersten physischen Plattform.
  • Im Weiteren werden die Schritte der vorstehenden Ausführungsform in Verbindung mit detaillierten Beispielen beschrieben.
  • Als Erstes werden in Schritt 30 die der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten auf der ersten physischen Plattform erhalten. Bei der ersten physischen Plattform kann es sich um die physische Zielplattform handeln, auf die sich die Leistungsoptimierung richtet; bei dem ersten Code kann es sich um jeden beliebigen auf der ersten physischen Plattform ausgeführten Code handeln, wie beispielsweise den Quellcode, den Zwischencode und den Binärcode von verschiedener Software, verschiedenen Anwendungen und Programmen usw. handeln. Wie vorstehend beschrieben wird in vielen physischen Plattformen des Standes der Technik eine Leistungsüberwachungseinheit bereitgestellt, um die Signale zu erfassen und zu zählen, die durch den Prozessor erzeugt werden, und Hardwareleistungsereignisse anzuzeigen. Gleichzeitig kann der im Betriebssystemkernel ausgeführte Tester Tests aus den vorstehend erwähnten Zählungen entnehmen. Um die Leistungsprofilierdaten zu erhalten, werden in einer Ausführungsform in Schritt 30 des Prozesses die Testergebnisse während der Ausführung des ersten Codes durch den Prozessor direkt von dem vorstehenden Tester in Echtzeit gelesen und die Testergebnisse gesammelt und strukturiert, wodurch die Leistungsprofilierdaten erhalten werden. In einer anderen Ausführungsform erzeugt der Tester periodisch Testprotokolle und speichert sie im Arbeitsspeicherpuffer oder liest weiterhin die Testprotokolle vom Arbeitsspeicherpuffer, schreibt sie in eine Datei und speichert die Datei an einem bestimmten Speicherort einer Festplatte. In diesem Fall können in Schritt 30 die Testprotokolle direkt vom Arbeitsspeicherpuffer oder von dem bestimmten Speicherort der Festplatte gelesen und daraus die Leistungsprofilierdaten gebildet werden.
  • Wie vorstehend beschrieben, umfassen die Leistungsprofilierdaten allgemein die Anweisungsinformationen und die zugehörigen Leistungsereignisse. Entsprechend umfassen die durch den vorstehenden Schritt 30 erhaltenen Leistungsprofilierdaten die entsprechenden Anweisungen beim Ausführen des ersten Codes sowie die durch diese Anweisungen hervorgerufenen Leistungsereignisse, wozu auch die Leistungsmangelereignisse zählen. Insbesondere können die erhaltenen Leistungsprofilierdaten, wie im Beispiel von 1 gezeigt, ausgebildet sein. Für den Fachmann ist jedoch ersichtlich, dass der Inhalt der Leistungsprofilierdaten von vielen Faktoren abhängt, wie beispielsweise dem Aufbau der physischen Plattform, dem auf der physischen Plattform ausgeführten Anweisungscode, der Gestaltung der Leistungsüberwachungseinheit und des Testers und Ähnlichem. Da diese Faktoren unterschiedlich sind, können die in Schritt 30 erhaltenen Leistungsprofilierdaten zusätzliche und/oder unterschiedliche Anweisungsinformationen und Leistungsereignisse im Hinblick auf das Beispiel von 1 umfassen.
  • Anschließend werden vom Prozess in Schritt 32 die Profilierdaten auf der Grundlage der erhaltenen Leistungsprofilierdaten analysiert, daraus Anweisungssequenzen aufgebaut und die Gesetzmäßigkeiten von durch die Anweisungssequenzen hervorgerufenen Leistungsmängeln herausgearbeitet, d. h. die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen ermittelt, so dass die Zuordnungsrelation die Hardwareeigenschaften der ersten physischen Plattform wiedergibt und nichts mit dem darauf ausgeführten Code (zum Beispiel dem ersten Code) zu tun hat. Die Analyse und Ermittlung der Zuordnungsrelation wie vorstehend beschrieben kann auf viele Weisen realisiert werden.
  • Insbesondere zeigt 5A Schritte des Empfangens der vorstehend erwähnten Zuordnungsrelation gemäß einer Ausführungsform der Erfindung, d. h. die Teilschritte von Schritt 32 in 3. In der Ausführungsform wird die Zuordnungsrelation erhalten, indem die Anzahl des Auftretens der Anweisungssequenzen und die Anzahl des Auftretens der Leistungsereignisse gezählt werden. Wie insbesondere in der Figur gezeigt wird, werden in Schritt 3211 Anweisungssequenzen gemäß den Leistungsprofilierdaten aufgebaut. Wie vorstehend beschrieben halten die Leistungsprofilierdaten allgemein die Informationen der ausgeführten Anweisungen, wie die Anweisungsadresse, den Operationscode und so weiter wie in 1 gezeigt in der Reihenfolge der Anweisungsausführung fest. Für die Sprunganweisung, die nicht in der allgemeinen Reihenfolge ausgeführt wird, halten die Leistungsprofilierdaten die Quelladresse und die Zieladresse der Anweisung fest. Daher kann der Ausführungspfad der Anweisungen erhalten werden, indem eine Rückverfolgung entlang der Aufzeichnungsreihenfolge und, falls erforderlich, ein Sprung gemäß der Quelladresse und der Zieladresse stattfindet. Auf der Grundlage des Ausführungspfades kann eine Anzahl aufeinanderfolgend ausgeführter Anweisungen erhalten werden und dadurch eine Anweisungssequenz aufgebaut werden, die aus einer Anzahl aufeinanderfolgender Anweisungen besteht. In einem Beispiel ist die Anweisungssequenz durch den Operationsinhalt der Anweisungen und genauer durch den Operationscode gekennzeichnet. Zum Beispiel können L (Laden), MVC (Verschieben), XC (oder) und ST (Speichern), die in den Leistungsprofilierdaten von 1 aufeinanderfolgend auftreten, als eine Anweisungssequenz betrachtet werden. Anschließend wird im Prozess in Schritt 3212 die Anzahl des Auftretens jeder Anweisungssequenz in den Leistungsprofilierdaten gezählt. Dann wird in Schritt 3213 die Anzahl des Auftretens der jeder Anweisungssequenz entsprechenden Leistungsmangelereignisse gezählt. Schließlich wird in Schritt 3214 auf der Grundlage des Anteils der wie vorstehend gezählten Anzahlen des Auftretens die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen ermittelt. Insbesondere kann in diesem Schritt der Anteil der Anzahlen des Auftretens verschiedener Leistungsmangelereignisse von den Anzahlen des Auftretens der Anweisungssequenz ermittelt, der ermittelte Anteil mit einem zuvor festgelegten Schwellenwert verglichen und gemäß dem Vergleichsergebnis die Zuordnungsrelation zwischen der Anweisungssequenz und den Leistungsmängeln ermittelt werden. Zum Beispiel wird für die vorstehend erwähnte Anweisungssequenz L-MVC-XC-ST angenommen, dass in Schritt 3212 herausgefunden wird, dass die Anweisungssequenz 100 Mal in den Leistungsprofilierdaten auftritt. Dann wird in Schritt 3213 durch Prüfen der Leistungsprofilierdaten herausgefunden, dass bei Ausführen der letzten ST-Anweisung der Sequenz 85 Mal ein „TLBMiss”-Ereignis auftritt, 5 Mal ein Blockieren-Status auftritt und zweimal ein „ICacheMiss”-Ereignis auftritt. In diesem Fall kann in Schritt 3214 ermittelt werden, dass bei Ausführen der Anweisungssequenz ein „TLBMiss”-Ereignis mit einem Anteil von 85% auftritt. Unter der Annahme, dass der zuvor festgelegte Schwellenwert für den Anteil 80% beträgt, kann festgestellt werden, dass zwischen der vorstehenden Anweisungssequenz und dem Leistungsmangelereignis „TLBMiss” die Zuordnungsrelation besteht. In einer Ausführungsform kann weiterhin das Maß der Zuordnung eingeführt werden, um das Ausmaß der Zuordnungsrelation anzugeben. Insbesondere kann der vorstehend beschriebene Anteil der Anzahlen des Auftretens als Wert des Maßes der Zuordnung verwendet werden.
  • Es ist ersichtlich, dass in der Ausführungsform von 5A die Zuordnungsrelation ermittelt wird, indem die Anzahlen des Auftretens der Anweisungssequenz und der Leistungsmangelereignisse direkt gezählt werden. In vielen Fällen ist die Zahl der Anweisungssequenzen so groß (insbesondere in den Fällen, in denen die Sequenzlänge nicht begrenzt ist), dass die Bearbeitungseffizienz der vorstehenden Zählschritte nicht ideal ist. Daher können den tatsächlichen Bearbeitungsressourcen entsprechend verschiedene Arten verwendet werden, um Schritt 32 auszuführen, der dazu dient, die Zuordnungsrelation zu erhalten.
  • In einer Ausführungsform werden nach Schritt 3212 in 5A, in dem die Anzahlen des Auftretens jeder Anweisungssequenz gezählt werden, die gemäß den Anzahlen des Auftretens häufig auftretenden Anweisungssequenzen ausgewählt. Bei den häufig auftretenden Anweisungssequenzen kann es sich um die Anweisungssequenzen handeln, deren Anzahlen des Auftretens einen zuvor festgelegten Schwellenwert übersteigen. Dann werden in Schritt 3213 nur die Leistungsmangelereignisse gezählt, die den häufig auftretenden Anweisungssequenzen entsprechen. Auf diese Weise kann das Weglassen weniger häufig auftretender und daher nicht repräsentativer Anweisungssequenzen Einiges an Berechnungsaufwand für das Zählen einsparen.
  • In einer anderen Ausführungsform werden die Anweisungssequenzen auf der Grundlage der Leistungsereignisse einer einzelnen Anweisung vorläufig gesichtet. Insbesondere erhält der Prozess für jede einzelne Anweisung in den Leistungsprofilierdaten den Anteil der Testanzahlen der bei Ausführen der Anweisung aufgetretenen Leistungsmangelereignisse zu den Testanzahlen der Anweisung. Ist der Anteil größer als ein zuvor festgelegter Schwellenwert, wird die Anweisung als die Endanweisung der Anweisungssequenz betrachtet, die möglicherweise die Leistungsmangelereignisse hervorrufen kann. Entsprechend erfolgt, beginnend mit dieser Anweisung, eine Rückverfolgung für eine bestimmte Anzahl von Schritten entlang des Ausführungspfades von Anweisungen, wodurch eine Kandidatenanweisungssequenz erhalten wird. Zum Beispiel beträgt für die Anweisung MVC in Zeile 6 von 1 die Testanzahl 14, worin das Ereignis „Recycle” 5 Mal vorkommt. Wenn angenommen wird, dass dieser Anteil größer als der zuvor festgelegte Schwellenwert ist, kann davon ausgegangen werden, dass es sich bei der mit MVC endenden Anweisungssequenz um eine Sequenz handelt, die möglicherweise das „Recycle”-Ereignis hervorrufen kann. Entsprechend können durch Rückverfolgen entlang des Ausführungspfades von Anweisungen beginnend mit MVC Kandidatensequenzen erhalten werden, die möglicherweise das „Recycle”-Ereignis hervorrufen. Wenn andererseits der Anteil eines bestimmten Typs von aufgetretenem Leistungsmangelereignis für eine Anweisung kleiner als der vorstehende Schwellenwert ist, kann davon ausgegangen werden, dass die Anweisung wahrscheinlich nicht die Endanweisung der Anweisungssequenz darstellt, die den Typ von Leistungsmangelereignis hervorruft, und es daher unnötig ist, eine Rückverfolgung bei dieser Anweisung zu beginnen. Somit werden nur Kandidatenanweisungssequenzen erhalten, die möglicherweise die Leistungsmangelereignisse hervorrufen können, und daher Einiges an Zähl- und Rechenaufwand eingespart. Die erhaltenen Kandidatenanweisungssequenzen können im Prozess auf ähnliche Weise gezählt werden wie in der Ausführungsform von 5A, weshalb schließlich die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen ermittelt werden kann. Es versteht sich, dass der Fachmann die verschiedenen vorstehend beschriebenen Ausführungsformen entsprechend tatsächlichen Anforderungen kombinieren kann, um mehr Varianten zu erzeugen und die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen zu erhalten.
  • Anstatt die Anzahlen des Auftretens der Anweisungssequenzen und der Leistungsmangelereignisse direkt zu zählen, werden alternativ dazu in einer anderen Ausführungsform die Anweisungssequenzen angehäuft und auf der Grundlage der Informationsentropie analysiert, um die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen zu erhalten. 5B zeigt die Schritte des Ermittelns der Zuordnungsrelation gemäß der Ausführungsform. Wie in 5B gezeigt, umfasst in der Ausführungsform der Prozess des Empfangens der Zuordnungsrelation Folgendes: in Schritt 3221 ein Aufbauen von Anweisungssequenzen; in Schritt 3222 ein Auswählen der häufig auftretenden Anweisungssequenzen; in Schritt 3223 ein Anhäufen und Codieren der Anweisungssequenzen auf der Grundlage der Informationsentropie; in Schritt 3224 ein Auswählen der unterschiedlichen Anhäufungen in Verbindung mit dem Zählen der Leistungsereignisse; in Schritt 3225 weiteres Klassifizieren der ausgewählten Anhäufungen; und in Schritt 3226 ein Beurteilen, ob die derzeitigen Anhäufungen eine zuvor festgelegte Bedingung erfüllen, und falls sie dies nicht tun, Wiederholen der Schritte 3222 bis 3225, bis die zuvor festgelegte Bedingung erfüllt ist. Im Weiteren werden die vorstehenden Schritte im Detail beschrieben.
  • In Schritt 3221 werden im Prozess der Ausführungspfad von den Leistungsprofilierdaten und eine Vielzahl von Anweisungssequenzen entsprechend dem Anweisungsausführungspfad erhalten. Dieser Schritt ähnelt dem Schritt 3211 von 5A und wird daher weggelassen. Anschließend werden im Prozess in Schritt 3222 die häufig auftretenden Anweisungssequenzen ausgewählt. Insbesondere können die Anzahlen des Auftretens der Anweisungssequenzen mit einem zuvor festgelegten Schwellenwert verglichen und die Anweisungssequenzen ausgewählt werden, deren Anzahl des Auftretens den Schwellenwert übersteigt; oder es können die Anweisungssequenzen nach ihren Anzahlen des Auftretens sortiert werden und eine bestimmte Zahl von Anweisungssequenzen in der Reihenfolge der Anzahlen des Auftretens von niedrig zu hoch ausgewählt werden; es können andere Arten verwendet werden, um die häufig auftretenden Anweisungssequenzen auszuwählen.
  • Als nächstes werden im Prozess in Schritt 3223 die Anweisungssequenzen auf der Grundlage der Informationsentropie angehäuft und codiert. Die Informationsentropie stellt ein Maß für die Gewissheit und das Chaos der Informationen dar, indem auf das Konzept der Entropie in der Thermodynamik zurückgegriffen wird. Allgemein ausgedrückt: je chaotischer ein System ist, und je ungewisser die darin enthaltenen Varianten sind, desto größer ist die Informationsentropie; im Gegenzug ist die Informationsentropie umso geringer, je geordneter ein System ist. Im Stand der Technik wurden viele Verfahren vorgeschlagen, um die Informationsentropie mathematisch anzunähern und abzuschätzen. Die Anweisungssequenzen können auf der Grundlage der mathematisch abgeschätzten Informationsentropie angehäuft werden, so dass das aus den Anweisungssequenzen bestehende System nach dem Anhäufen die geringste Informationsentropie, das heißt die größte Informationsmenge, aufweist. Als nächstes werden im Prozess die Anhäufungen von Anweisungssequenzen „codiert”, das heißt es werden unterschiedliche, für unterschiedliche Klassen stehende Codes verwendet, um die weitere Analyse zu unterstützen.
  • In einem einfachen Beispiel werden die Anweisungssequenzen auf der Grundlage der Tatsache angehäuft, ob es sich bei der ersten Anweisung um L oder MVC handelt und ob es sich bei der Endanweisung um ST handelt. Wenn es sich insbesondere bei der ersten Anweisung einer Anweisungssequenz um L oder MVC handelt, wird die erste Anweisungsfunktion mit 1 oder andernfalls mit 0 gekennzeichnet; wenn es sich bei der Endanweisung um ST handelt, wird die Endanweisung der Anweisungssequenz mit 1 oder andernfalls mit 0 gekennzeichnet. Wenn indessen der Anteil der bei der Endanweisung der Anweisungssequenz aufgetretenen Blockieren-Ereignisse größer als 20% ist, wird das Blockieren-Ereignis mit Y, andernfalls mit N gekennzeichnet. Somit kann die Tabelle wie in 6 gezeigt erhalten werden. Es ist ersichtlich, dass es durch Anhäufen und Codieren der Anweisungssequenzen einfacher ist, die Gesetzmäßigkeiten der Anweisungssequenzen herauszuarbeiten.
  • Anschließend werden im Prozess in Schritt 3224 die unterschiedlichen Anhäufungen in Verbindung mit dem Zählen der Leistungsereignisse ausgewählt. Insbesondere wird das Maß der Zuordnung zwischen den Anhäufungen und den mit Codes gekennzeichneten Leistungsereignissen aufgelistet und die Anhäufungen mit einem relativ hohen Maß an Zuordnung ausgewählt. Immer noch unter Verwendung der Tabelle von 6 ist ersichtlich, dass die mit 1-1 gekennzeichnete Anhäufung 8 Mal vorkommt, wovon das Blockieren-Ereignis 6 Mal mit Y gekennzeichnet ist. In diesem Fall kann die Anhäufung zur weiteren Analyse ausgewählt werden, ohne dass andere Anhäufungen berücksichtigt werden müssen.
  • Es ist ersichtlich, dass durch das Anhäufen und Codieren der Anweisungssequenzen ein Teil der Anweisungssequenzinformationen verloren geht. Da zum Beispiel alle Anweisungssequenzen mit einer ersten Anweisung in Form von L oder MVC und der Endanweisung ST mit 1-1 gekennzeichnet werden, gehen andere Merkmale der Anhäufung verloren. Aus diesem Grund werden die ausgewählten Sequenzanhäufungen in Schritt 3225 weiter klassifiziert und ein Teil der verlorenen Informationen wieder hergestellt. Zum Beispiel wird die in Schritt 3224 ausgewählte Anhäufung 1-1 so weiter klassifiziert, dass die Anweisungssequenzen mit einer ersten Anweisung L als eine Gruppe angesehen werden und die Anweisungssequenzen mit einer ersten Anweisung MVC als eine andere Gruppe angesehen werden. Für jede Gruppe von Anweisungssequenzen wird im Prozess in Schritt 3226 beurteilt, ob die Gruppe von Anweisungssequenzen die zuvor festgelegte Bedingung erfüllt, und falls dies nicht der Fall ist, werden die Schritte 3222 bis 3224 wiederholt, um erneut ein Anhäufen und Auswählen durchzuführen, bis die zuvor festgelegte Bedingung erfüllt ist. Die zuvor festgelegte Bedingung kann abhängig von vielen Faktoren festgelegt werden, wie beispielsweise Rechenressourcen oder die gewünschte Genauigkeit, und auch die Anforderungen mit einbeziehen, dass zum Beispiel die Zahl von Anweisungssequenzen in jeder Gruppe kleiner ist als ein bestimmter Schwellenwert, dass das Maß der Zuordnung zwischen der Anweisungssequenz und den Leistungsereignissen nicht kleiner ist als ein bestimmter Schwellenwert und Ähnliches. Somit werden durch Anhäufen und anschließendem weiterem Klassifizieren der Sequenzen die repräsentativen und unterschiedlichen Informationen Schritt für Schritt aus einer großen Zahl von Anweisungssequenzen entnommen und die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen erhalten.
  • Mehrere Ausführungsformen des Aufbauens von Anweisungssequenzen und des Ermittelns der Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen wurden vorstehend in Verbindung mit detaillierten Beispielen beschrieben; der Fachmann erkennt jedoch, dass die vorstehenden Ausführungsformen lediglich beispielhaft und nicht einschränkend sind. Auf der Grundlage der vorstehenden Beispiele kann der Fachmann weiterhin Modifikationen und Variationen vornehmen und ähnliche oder andere Arten verwenden, um die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsereignissen zu entnehmen. Derartige Modifikationen und Variationen seien im Umfang der Erfindung enthalten.
  • 7 zeigt eine schematische Abbildung einer gemäß einer Ausführungsform der Erfindung erhaltenen Zuordnungsrelation. Im Beispiel von 7 wird die Zuordnungsrelation in einem Tabellenformat zum Ausdruck gebracht. In dieser Tabelle zeigt jeder Eintrag die Zuordnung zwischen einer Anweisungssequenz und einem Leistungsmangelereignis. Zum Beispiel sind gemäß der ersten Zeile der Tabelle die Anweisungssequenz {BNORC, (LTGR oder LH), BERC} und das Leistungsmangelereignis Blockieren einander zugeordnet, was bedeutet, dass die aufeinanderfolgende Ausführung der Anweisungssequenz den Status Blockieren hervorrufen würde. In einer weiteren Ausführungsform ist das Maß der Zuordnung zwischen den Anweisungssequenzen und den Leistungsmangelereignissen angegeben, d. h. die Möglichkeit, die Leistungsmängel beim Ausführen der Anweisungssequenz hervorzurufen. Es ist ersichtlich, dass die Zuordnungsrelation in anderen Formaten angezeigt und gespeichert werden kann und nicht auf das Beispiel von 7 beschränkt ist.
  • Durch Vergleichen der in 1 gezeigten Leistungsprofilierdaten und der in 7 gezeigten Zuordnungsrelation ist ersichtlich, dass die Leistungsprofilierdaten direkt die Informationen der Anweisungen (zum Beispiel die Anweisungsadresse, die Ausführungsreihenfolge, den Operationscode, den Operand, die Testanzahl usw.) zeigen; daher ist es möglich, den Ausführungspfad von Anweisungen durch Prüfen der Leistungsprofilierdaten zu erhalten, und weiterhin ist es möglich, die auf der physischen Plattform ausgeführten Codedaten, wie beispielsweise die vorstehend beschriebenen Informationen des ersten Codes, durch Lesen des Ausführungspfades von Anweisungen (zum Beispiel durch Verwenden von – Auseinandernehmwerkzeugen (disassembler)) zu erhalten. Die Zuordnungsrelation zeigt jedoch die Relevanz zwischen den Anweisungssequenzen und den Leistungsmangelereignissen, die auf der Grundlage der Statistiken der Anweisungssequenzen und allen Arten von Leistungsereignissen erhalten wird und keinen Bezug zu den bestimmten Ausführungsinformationen der Anweisungen aufweist. Daher ist es unmöglich, die auf der physischen Plattform ausgeführten Codedaten durch Prüfen der Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen zu erhalten. Das bedeutet, dass sich die vorstehende Zuordnungsrelation lediglich auf die Eigenschaften der physischen Plattform bezieht und nichts mit der Codeausführung darauf zu tun hat und keine Lecks der Codedaten möglich sind. Anderseits wird in vielen Fällen das Auftreten der Leistungsmangelereignisse nicht durch die Ausführung einer einzigen Anweisung hervorgerufen, sondern ist das Ergebnis des Nacheinanderausführens einer Vielzahl von Anweisungen. Daher kann das Durchsuchen der Zuordnungsrelation zwischen einer Anweisungssequenz, die aus einer Vielzahl nacheinander ausgeführten Anweisungen besteht, und den Leistungsmangelereignissen inhärent die Gesetzmäßigkeiten des Hervorrufens der Leistungsmängel wiedergeben und besser die Eigenschaften der physischen Plattform wiedergeben.
  • Im Hinblick auf die vorstehend beschriebenen Eigenschaften der Zuordnungsrelation, ist die Zuordnungsrelation sehr gut geeignet, als Referenzrichtlinie zu dienen, wenn Codes für eine physische Plattform optimiert werden. Somit wird anschließend in Schritt 34 die Zuordnungsrelation einer anderen physischen Plattform bereitgestellt, um eine Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation durchzuführen, wobei sich der zweite Code vom ersten Code in Schritt 30 unterscheiden kann. Insbesondere kann in einer Ausführungsform die vorstehend ermittelte Zuordnungsrelation lokal gespeichert werden und eine bestimmte „andere physische Plattform” wird mit Zugangsberechtigungen zur Zuordnungsrelationsdatei versehen. Alternativ dazu kann in einer anderen Ausführungsform in Schritt 34 die ermittelte Zuordnungsrelation direkt an die andere physische Plattform gesendet werden. In noch einer anderen Ausführungsform kann die ermittelte Zuordnungsrelation an eine Zuordnungsfreigabeplattform gesendet werden, so dass die andere physische Plattform die Zuordnungsrelation von der Freigabeplattform erhalten kann.
  • Aufgrund der Tatsache, dass die Zuordnungsrelation gemäß dem Verfahren von 3 auf der ersten Plattform bereitgestellt wird, kann eine andere physische Plattform, wie die zweite Plattform, die Zuordnungsrelation erhalten und die Zuordnungsrelation dazu verwenden, den Code zu optimieren, wodurch die plattformübergreifende Leistungsoptimierung wie in den Schritten von 4 gezeigt realisiert wird.
  • Insbesondere wird in Schritt 40 die Zuordnungsrelation auf der zweiten physischen Plattform erhalten. In einer Ausführungsform wird die bereitgestellte Zuordnungsrelation auf der ersten physischen Plattform gespeichert. In diesem Fall sendet die zweite physische Plattform in Schritt 40 eine Anfrage an die erste Plattform, um ein Lesen der erzeugten Zuordnungsrelation zu erfragen. Nach Empfangen der Berechtigungsantwort von der ersten physischen Plattform kann die zweite physische Plattform die für die erste physische Plattform erzeugte Zuordnungsrelation von der ersten physischen Plattform lesen. In einer anderen Ausführungsform wird die von der ersten physischen Plattform stammende Zuordnungsrelation auf einer Zuordnungsfreigabeplattform gespeichert und mit einer Kennzeichnung der ersten physischen Plattform versehen. In diesem Fall liest die zweite physische Plattform in Schritt 40 die Zuordnungsrelation für die erste physische Plattform von der Freigabeplattform.
  • Es ist verständlich, dass die Übertragung der Zuordnungsrelation zwischen den physischen Plattformen mittels vielfältiger Daten übertragungsarten realisiert werden kann, die bekannt sind oder wahrscheinlich in Zukunft verwendet werden, wozu auch die über vielfältige Protokolle wie FTP, HTTP, POP3, SMTP usw. unter Verwendung vielfältiger Medien wie kabellose, kabelgebundene, optische Kabel, HF usw. durchgeführte Übertragung gehört.
  • Aufgrund der Tatsache, dass die zweite physische Plattform die für die erste physische Plattform erzeugte Zuordnungsrelation erhält, kann sie auf der zweiten physischen Plattform eine Codeoptimierung für die erste physische Plattform durchführen. Insbesondere umfasst der Optimierungsprozess in Schritt 42 ein Ermitteln der dem zweiten Code entsprechenden Leistungsmangelereignisse gemäß der Zuordnungsrelation; und in Schritt 44 ein Optimieren des zweiten Codes auf der Grundlage der ermittelten Leistungsmangelereignisse und dabei ein Beseitigen oder Verringern der Leistungsmangelereignisse, die durch den zweiten Code hervorgerufen werden können. Bei dem vorstehenden zweiten Code handelt es sich um einen Code, der auf der ersten physischen Plattform auszuführen ist und zu optimieren ist.
  • 8 zeigt Teilschritte von Schritt 42 gemäß einer Ausführungsform der Erfindung, d. h. die detaillierten Schritte des Ermittelns der Leistungsmangelereignisse. Insbesondere werden, wie in 8 gezeigt, in Schritt 421 des Prozesses zuerst der zweite Code abgetastet und dem zweiten Code entsprechende Anweisungssequenzen erzeugt, um die dem zweiten Code entsprechenden Leistungsmangelereignisse zu ermitteln. Anschließend werden in Schritt 422 die erzeugten Anweisungssequenzen mit der erhaltenen Zuordnungsrelation verglichen, was bedeutet, zu prüfen, ob eine entsprechende Anweisungssequenz in der erhaltenen Zuordnungsrelation vorhanden ist. Wenn es eine passende Anweisungssequenz gibt, wird in Schritt 423 gemäß der Zuordnungsrelation zwischen der Anweisungssequenz und dem Leistungsmangelereignis das der passenden Anweisungssequenz entsprechende Leistungsereignis ermittelt. Es ist ersichtlich, dass es sich bei dem in Schritt 423 ermittelten Leistungsmangelereignis um das Leistungsmangelereignis handelt, dass eintreten kann, wenn angenommen wird, dass der aktuelle zweite Code auf der ersten physischen Plattform ausgeführt wird.
  • Auf der Grundlage der vorstehend ermittelten oder vorhergesagten Leistungsmängel wird in Schritt 44 von 4 der zweite Code so optimiert, dass er die Leistungsmangelereignisse beseitigt und/oder verringert und dadurch die Ausführungsleistung des zweiten Codes auf der ersten physischen Plattform optimiert. Bei der in Schritt 44 verwendeten Codeoptimierungsweise kann es sich um die gemeinhin verwendete Optimierungsweise des Standes der Technik handeln. Zum Beispiel können in einer Ausführungsform die Ausführungsreihenfolge des zweiten Codes geeignet angepasst und daher die Anweisungssequenzen verringert werden, die möglicherweise die Leistungsmangelereignisse verursachen können. Zum Beispiel beinhaltet der zweite Code eine Anweisungssequenz A zum aufeinanderfolgenden Ausführen einer Vielzahl von Operanden, die jedoch häufig das Blockieren-Ereignis hervorruft. Wenn in diesem Fall nach der Anweisungssequenz A eine unabhängige Anweisung B vorhanden ist, deren zeitliche Planung nicht so wichtig ist, kann die Anweisung B vorgezogen und in die Anweisungssequenz A eingefügt werden, um die möglicherweise Mängel hervorrufende Sequenz A zu unterbrechen. In einer anderen Ausführungsform wird die Codeoptimierung durch Hinzufügen zusätzlicher Codes durchgeführt. Wenn die Anweisungssequenzen gefunden werden, welche die Cachefehler-Ereignisse wie CacheMiss, DCacheMiss, TLBMiss usw. hervorrufen, können vor diesen Anweisungen zusätzliche Anweisungscodes eingefügt werden. Diese zusätzlichen Anweisungscodes werden dazu verwendet, den Prozessor zu informieren, die Operanden oder Anweisungsdaten, die nachfolgend im Cachespeicher verwendet werden, vorab zu holen und dabei die Cachefehler bei Ausführen der nachfolgenden Anweisungssequenz zu vermeiden. Darüber hinaus kann der Fachmann erforderlichenfalls den zweiten Code auf andere Weise modifizieren und optimieren, so dass der zweite Code wirksam auf der ersten physischen Plattform ausgeführt werden kann.
  • Somit wird gemäß der Ausführungsform von 4 der zweite Code auf der Grundlage der Zuordnungsrelation optimiert und daher die Ausführungsleistung des zweiten Codes auf der ersten physischen Plattform verbessert.
  • In den vorstehend beschriebenen Ausführungsformen wird zuerst auf der ersten physischen Plattform die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen erhalten und dann der zweite Code auf der zweiten Plattform auf der Grundlage der Zuordnungsrelation optimiert, wodurch die plattformübergreifende Leistungsoptimierung realisiert wird. Wie vorstehend beschrieben bezieht sich die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen nicht auf detaillierte Anweisungen oder Codes, weshalb nach der Übertragung an die zweite Plattform keine Sicherheitsrisiken oder Lecks der auf der ersten Plattform ausgeführten Codedaten auftreten. Indessen gibt die Zuordnungsrelation die Hardwareeigenschaften der ersten physischen Plattform inhärenter wieder, weshalb die Optimierung der auszuführenden Codes auf der Grundlage der Zuordnungsrelation das Ergebnis besser optimieren kann. Wenn ein Entwickler daher seine entwickelte Softwareanwendung für die Zielplattform optimieren möchte, muss er die Softwareanwendung nicht wie im Falle des Standes der Technik auf der Zielplattform ausführen; stattdessen kann er den Code der Softwareanwendung direkt auf seiner eigenen Entwicklungsplattform optimieren, wodurch der Optimierungsprozess komfortabler und effizienter wird.
  • Auf der Grundlage desselben erfinderischen Konzeptes stellt die vorliegende Erfindung weiterhin ein System zum Durchführen einer Leistungsoptimierung bereit, das eine auf einer ersten physischen Plattform befindliche Vorrichtung zum Bereitstellen einer Zuordnungsrelation und eine auf einer zweiten physischen Plattform befindliche Vorrichtung zum Durchführen einer Codeoptimierung umfasst. 9A zeigt ein schematisches Blockschaltbild einer Vorrichtung zum Bereitstellen einer Zuordnungsrelation gemäß einer Ausführungsform der Erfindung. Wie in 9A gezeigt, umfasst die Vorrichtung zum Bereitstellen der Zuordnungsrelation gemäß der Ausführungsform Folgendes: eine Profilierdatenempfangseinheit 911, die so eingerichtet ist, dass sie die der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten erhalten kann, wobei die Leistungsprofilierdaten die dem ersten Code entsprechenden Informationen von Anweisungen und die den Anweisungen entsprechenden Informationen von Leistungsmangelereignissen umfassen; eine Zuordnungsermitteleinheit 912, die so eingerichtet ist, dass sie gemäß den Leistungsprofilierdaten mindestens eine Anweisungssequenz aufbauen und die Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen ermitteln kann; und eine Zuordnungsbereitstelleinheit 913, die so eingerichtet ist, dass sie die Zuordnungsrelation einer anderen physischen Plattform bereitstellen kann, um die Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation durchzuführen. 9B zeigt ein schematisches Blockschaltbild einer Vorrichtung zum Durchführen einer Codeoptimierung gemäß einer Ausführungsform der Erfindung. Wie in 9B gezeigt, umfasst die Vorrichtung zum Durchführen einer Codeoptimierung gemäß der Ausführungsform Folgendes: eine Zuordnungsempfangseinheit 921, die so eingerichtet ist, dass sie die Zuordnungsrelation, wie sie durch die Vorrichtung von 9A bereitgestellt wird, erhalten kann; eine Mangelermittlungseinheit 922, die so eingerichtet ist, dass sie gemäß der Zuordnungsrelation die dem zweiten Code entsprechenden Leistungsmangelereignisse ermitteln kann; und eine Codeoptimiereinheit 923, die so eingerichtet ist, dass sie auf der Grundlage der ermittelten Leistungsmangelereignisse den zweiten Code optimieren kann.
  • Insbesondere erhält die Profilierdatenempfangseinheit 911 von der Leistungsüberwachung der ersten physischen Plattform die Leistungsprofilierdaten, die festgehalten werden, wenn der erste Code ausgeführt wird. Die erhaltenen Leistungsprofilierdaten können wie im Beispiel von 1 gezeigt ausgebildet sein, oder sie können zusätzliche und/oder unterschiedliche Anweisungsinformationen und Leistungsereignisse beinhalten. Auf der Grundlage der erhaltenen Leistungsprofilierdaten analysiert die Zuordnungsermitteleinheit 912 diese Daten, baut daraus Anweisungsinformationen auf und arbeitet die Gesetzmäßigkeiten für das Hervorrufen der Leistungsmängel durch die Anweisungssequenzen heraus, das heißt sie ermittelt die Zuordnungsrelation zwischen den Anweisungssequenzen und den Leistungsmangelereignissen. In einer Ausführungsform erhält die Zuordnungsermitteleinheit 912 die Zuordnungsrelation durch Zählen der Anzahlen des Auftretens der Anweisungssequenzen und der Anzahlen des Auftretens der Leistungsereignisse. In einer anderen Ausführungsform tastet die Zuordnungsermitteleinheit 912 weiter die Anweisungssequenzen ab und spart daher Einiges an Rechenaufwand für das Zählen. In noch einer anderen Ausführungsform häuft die Zuordnungsermitteleinheit 912 die Anweisungssequenzen an und analysiert sie auf der Grundlage der Informationsentropie und erhält daher die Relevanz zwischen den Anweisungssequenzen und den Leistungsmangelereignissen. Die erhaltene Zuordnung kann wie in 7 gezeigt ausgebildet sein oder in andern Formaten gespeichert und ausgedrückt werden. Weiterhin stellt die Zuordnungsbereitstelleinheit 913 die Zuordnungsrelation einer anderen physischen Plattform wie beispielsweise der zweiten Plattform auf viele Weisen bereit, um die Codeoptimierung auf der anderen Plattform auf der Grundlage der Zuordnungsrelation durchzuführen.
  • Auf dieser Basis liest die Zuordnungsempfangseinheit 921 der zweiten physischen Plattform über vielfältige Datenübertragungsweisen die Zuordnungsrelation. Dann vergleicht die Mangelermittlungseinheit 922 die dem zweiten Code entsprechenden Anweisungen mit der Zuordnungsrelation und ermittelt somit die dem zweiten Code entsprechenden Leistungsmangelereignisse. Daher kann die Codeoptimiereinheit 923 den zweiten Code auf der Grundlage der ermittelten Leistungsmangelereignisse optimieren und die Leistungsmangelereignisse, die der zweite Code möglicherweise hervorrufen kann, beseitigen oder verringern, wodurch die Ausführungsleistung des zweiten Codes auf der ersten physischen Plattform optimiert wird.
  • Die detaillierten Realisierungsweisen der vorstehenden Einheiten werden hierin nicht beschrieben, da Bezug auf die vorstehende detaillierte Beschreibung in Verbindung mit der Verfahrensprozedur und besonderen Beispielen genommen werden kann.
  • Das vorstehend beschriebene Verfahren und das vorstehend beschriebene System zum Durchführen einer Leistungsoptimierung können mittels eines Computersystems realisiert werden. 10 zeigt ein Blockschaltbild eines veranschaulichenden Computersystems 100, dass so angepasst ist, dass es Ausführungsformen der Erfindung realisieren kann. Wie gezeigt, kann das Computersystem 100 Folgendes umfassen: eine CPU (Central Processing Unit – Zentrale Verarbeitungseinheit) 101, einen RAM (Random Access Memory – Speicher mit wahlfreiem Zugriff) 102, einen ROM (Read-Only Memory – Nur-Lese-Speicher) 103, einen Systembus 104, eine Festplattensteuereinheit 105, eine Tastatursteuereinheit 106, eine Steuereinheit für serielle Schnittstellen 107, eine Steuereinheit für parallele Schnittstellen 108, eine Anzeigensteuereinheit 109, eine Festplatte 110, eine Tastatur 111, eine serielle externe Einheit 112, eine parallele externe Einheit 113 und eine Anzeige 114. Unter diesen Einheiten ist der Systembus 104 mit der CPU 101, dem RAM 102, dem ROM 103, der Festplattensteuereinheit 105, der Tastatursteuereinheit 106, der seriellen Steuereinheit 107, der parallelen Steuereinheit 108 und der Anzeigensteuereinheit 109 verbunden. Die Festplatte ist mit der Festplattensteuereinheit 105 verbunden, die Tastatur 111 ist mit der Tastatursteuereinheit 106 verbunden, die serielle externe Einheit 112 ist mit der Steuereinheit für serielle Schnittstellen 107 verbunden, die parallele externe Einheit 113 ist mit der Steuereinheit für parallele Schnittstellen 107 verbunden, und die Anzeige 114 ist mit der Anzeigesteuereinheit 109 verbunden. Es ist ersichtlich, dass das in 10 gezeigte Strukturblockschaltbild lediglich dem Zwecke der Veranschaulichung dient, anstatt eine Einschränkung des Umfangs der Erfindung darzustellen. Unter manchen Umständen können bestimmte Einheiten auf der Grundlage der tatsächlichen Gegebenheiten hinzugefügt oder entfernt werden.
  • Der Ablaufplan und die Blockdiagramme in den angehängten Zeichnungen veranschaulichen die Architektur, Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß vielfältigen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder den Blockdiagrammen für ein Modul, ein Segment oder einen Codeabschnitt stehen, der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen logischen Funktion oder Funktionen umfasst. Es soll zudem angemerkt werden, dass bei einigen alternativen Realisierungen die im Block angegebenen Funktionen in anderer Reihenfolge als der in den Figuren angegebenen auftreten können. Zum Beispiel können zwei aufeinander folgend abgebildete Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der betreffenden Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird ebenfalls angemerkt, dass jeder Block der Blockdiagramme und/oder Abbildungen von Ablaufplänen und Kombinationen von Blöcken in den Blockdiagrammen und/oder Abbildungen von Ablaufplänen durch zweckbestimmte hardwaregestützte Systeme oder Kombinationen von zweckbestimmter Hardware und Computeranweisungen realisiert werden kann, welche die angegebenen Funktionen oder Handlungen durchführen.
  • Obwohl die jeweiligen Vorrichtungen und Verfahren der vorliegenden Erfindung in Verbindung mit spezifischen Ausführungsformen im Detail beschrieben wurden, ist die vorliegende Erfindung nicht darauf beschränkt. Gemäß der Lehre der Beschreibung können durch den Fachmann vielfältige Änderungen, Ersetzungen und Modifikationen an der Erfindung vorgenommen werden, ohne den Geist und Umfang der Erfindung zu verlassen. Es ist ersichtlich, dass alle derartigen Änderungen, Ersetzungen und Modifikationen nach wie vor unter den Schutzumfang der Erfindung fallen. Der Umfang der Erfindung wird durch die angehängten Ansprüche festgelegt.

Claims (15)

  1. Verfahren zum Bereitstellen einer Zuordnungsrelation für eine Codeoptimierung, das Folgendes umfasst: Empfangen der Leistungsprofilierdaten, die der Ausführung eines ersten Codes zugeordnet sind, wobei die Leistungsprofilierdaten die Informationen von Anweisungen, die dem ersten Code entsprechen, und die Informationen von Leistungsmangelereignissen, die den Anweisungen entsprechen, umfassen; gemäß den Leistungsprofilierdaten Aufbauen mindestens einer Anweisungssequenz und Ermitteln der Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen; und Bereitstellen der Zuordnungsrelation für eine andere physische Plattform zum Durchführen der Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation.
  2. Verfahren nach Anspruch 1, wobei die Leistungsprofilierdaten auf der Grundlage der Testprotokolle gebildet werden, die erstellt werden, wenn der erste Code ausgeführt wird.
  3. Verfahren nach Anspruch 1, wobei das Ermitteln der Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen Folgendes umfasst: Zählen der Anzahl des Auftretens der mindestens einen Anweisungssequenz; Zählen der Anzahlen des Auftretens der Leistungsmangelereignisse, die der mindestens einen Anweisungssequenz entsprechen; und auf der Grundlage des Anteils der Anzahlen des Auftretens der Anweisungssequenz an den Anzahlen des Auftretens der Leistungsmangelereignisse, wie vorstehend gezählt, Ermitteln der Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen.
  4. Verfahren nach Anspruch 3, das weiterhin ein Auswählen der häufig auftretenden Anweisungssequenzen gemäß den Anzahlen des Auftretens der mindestens einen Anweisungssequenz umfasst; und wobei beim Zählen der Anzahlen des Auftretens der Leistungsmangelereignisse, die der mindestens einen Anweisungssequenz entsprechen, nur die Anzahlen des Auftretens der den häufig auftretenden Anweisungssequenzen entsprechenden Leistungsmangelereignisse gezählt werden.
  5. Verfahren nach Anspruch 1, wobei das Ermitteln der Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen Folgendes umfasst: Auswählen der häufig auftretenden Anweisungssequenzen; Anhäufen und Codieren der Anweisungssequenzen auf der Grundlage der Informationsentropie; Auswählen der unterschiedlichen Anhäufungen in Verbindung mit dem Zählen der Leistungsmangelereignisse; und weiteres Klassifizieren der Anhäufungen der ausgewählten Sequenzen bis eine zuvor festgelegte Bedingung erfüllt ist.
  6. Verfahren nach Anspruch 5, wobei die zuvor festgelegte Bedingung mindestens eines der folgenden Elemente umfasst: die Anzahl der Anweisungssequenzen in der klassifizierten Gruppe ist kleiner als ein erster bestimmter Schwellenwert; und das Maß der Zuordnung zwischen den Anweisungssequenzen und den Leistungsmangelereignissen ist nicht kleiner als ein zweiter bestimmter Schwellenwert.
  7. Verfahren zum Durchführen einer Codeoptimierung, das Folgendes umfasst: Empfangen der Zuordnungsrelation, wie sie durch das Verfahren nach einem der Ansprüche 1 bis 6 bereitgestellt wird; gemäß der Zuordnungsrelation Ermitteln der dem zweiten Code entsprechenden Leistungsmangelereignisse; und auf der Grundlage der ermittelten Leistungsmangelereignisse Optimieren des zweiten Codes.
  8. Verfahren nach Anspruch 7, wobei das Empfangen der Zuordnungsrelation Folgendes umfasst: Empfangen der Zuordnungsrelation über eine Zuordnungsfreigabeplattform.
  9. Verfahren nach Anspruch 7, wobei das Ermitteln der dem zweiten Code entsprechenden Leistungsmangelereignisse Folgendes umfasst: Abtasten des zweiten Codes und Erzeugen einer dem zweiten Code entsprechenden Anweisungssequenz; Vergleichen der erzeugten Anweisungssequenz mit der erhaltenen Zuordnungsrelation; und gemäß der Zuordnungsrelation Ermitteln des der passenden Anweisungssequenz entsprechenden Leistungsmangelereignisses.
  10. Verfahren nach Anspruch 7, wobei das Optimieren des zweiten Codes ein Beseitigen oder Verringern der Leistungsmangelereignisse auf mindestens eine der folgenden Weisen umfasst: Anpassen der Ausführungsreihenfolge des zweiten Codes; und Hinzufügen zusätzlicher Anweisungscodes zum zweiten Code.
  11. Vorrichtung zum Bereitstellen einer Zuordnungsrelation für eine Codeoptimierung, die Folgendes umfasst: eine Profilierdatenempfangseinheit, die so eingerichtet ist, dass sie die der Ausführung eines ersten Codes zugeordneten Leistungsprofilierdaten erhalten kann, wobei die Leistungsprofilierdaten die Informationen von Anweisungen, die dem ersten Code entsprechen, und die Informationen von Leistungsmangelereignissen, die den Anweisungen entsprechen, umfassen; eine Zuordnungsermitteleinheit, die so eingerichtet ist, dass sie gemäß den Leistungsprofilierdaten mindestens eine Anweisungssequenz aufbauen und die Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen ermitteln kann; und eine Zuordnungsbereitstelleinheit, die so eingerichtet ist, dass sie die Zuordnungsrelation einer anderen physischen Plattform zum Durchführen der Optimierung eines zweiten Codes auf der anderen physischen Plattform auf der Grundlage der Zuordnungsrelation bereitstellen kann.
  12. Vorrichtung nach Anspruch 11, wobei die Zuordnungsermitteleinheit so eingerichtet ist, dass sie: die Anzahlen des Auftretens der mindestens einen Anweisungssequenz zählen kann; die Anzahlen des Auftretens der Leistungsmangelereignisse zählen kann, die der mindestens einen Anweisungssequenz entsprechen; und auf der Grundlage des Anteils der Anzahlen des Auftretens der Anweisungssequenz an den Anzahlen des Auftretens der Leistungsmangelereignisse, wie vorstehend gezählt, die Zuordnungsrelation zwischen der mindestens einen Anweisungssequenz und den Leistungsmangelereignissen ermitteln kann.
  13. Vorrichtung nach Anspruch 12, wobei die Zuordnungsermitteleinheit weiterhin so eingerichtet ist, dass sie die häufig auftretenden Anweisungssequenzen gemäß den Anzahlen des Auftretens der mindestens einen Anweisungssequenz auswählen kann; und beim Zählen der Anzahlen des Auftretens der Leistungsmangelereignisse, die der mindestens einen Anweisungssequenz entsprechen, nur die Anzahlen des Auftretens der den häufig auftretenden Anweisungssequenzen entsprechenden Leistungsmangelereignisse gezählt werden.
  14. Vorrichtung nach Anspruch 11, wobei die Zuordnungsermitteleinheit so eingerichtet ist, dass sie: die häufig auftretenden Anweisungssequenzen auswählen kann; die Anweisungssequenzen auf der Grundlage der Informationsentropie anhäufen kann; die unterschiedlichen Anhäufungen in Verbindung mit dem Zählen der Leistungsmangelereignisse auswählen kann; und die Anhäufungen der ausgewählten Sequenzen weiter klassifizieren kann, bis eine zuvor festgelegte Bedingung erfüllt ist.
  15. Vorrichtung nach Anspruch 14, wobei die zuvor festgelegte Bedingung mindestens eines der folgenden Elemente umfasst: die Anzahl der Anweisungssequenzen in der klassifizierten Gruppe ist kleiner als ein erster bestimmter Schwellenwert; und das Maß der Zuordnung zwischen den Anweisungssequenzen und den Leistungsmangelereignissen ist nicht kleiner als ein zweiter bestimmter Schwellenwert.
DE201210214672 2011-08-30 2012-08-17 Bereitstellung einer Zuordnungsrelation und Durchführen einer Codeoptimierung Withdrawn DE102012214672A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201110252353.7 2011-08-30
CN201110252353.7A CN102955712B (zh) 2011-08-30 2011-08-30 提供关联关系并执行代码优化的方法和装置

Publications (1)

Publication Number Publication Date
DE102012214672A1 true DE102012214672A1 (de) 2013-02-28

Family

ID=47045287

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201210214672 Withdrawn DE102012214672A1 (de) 2011-08-30 2012-08-17 Bereitstellung einer Zuordnungsrelation und Durchführen einer Codeoptimierung

Country Status (3)

Country Link
CN (1) CN102955712B (de)
DE (1) DE102012214672A1 (de)
GB (1) GB2494268A (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107808098B (zh) 2017-09-07 2020-08-21 阿里巴巴集团控股有限公司 一种模型安全检测方法、装置以及电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002024052A (ja) * 2000-07-03 2002-01-25 Matsushita Electric Ind Co Ltd コンピュータ周辺機器のエラー再現試験方法
US7039910B2 (en) * 2001-11-28 2006-05-02 Sun Microsystems, Inc. Technique for associating execution characteristics with instructions or operations of program code
US8640114B2 (en) * 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US20070006037A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Automated test case result analyzer
US8621468B2 (en) * 2007-04-26 2013-12-31 Microsoft Corporation Multi core optimizations on a binary using static and run time analysis
US20090055636A1 (en) * 2007-08-22 2009-02-26 Heisig Stephen J Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence
US20090113403A1 (en) * 2007-09-27 2009-04-30 Microsoft Corporation Replacing no operations with auxiliary code
JP2010026851A (ja) * 2008-07-22 2010-02-04 Panasonic Corp コンパイラによる最適化方法
CN101727335A (zh) * 2008-10-31 2010-06-09 国际商业机器公司 用于二进制代码程序的安装方法和***

Also Published As

Publication number Publication date
GB201215035D0 (en) 2012-10-10
CN102955712A (zh) 2013-03-06
GB2494268A (en) 2013-03-06
CN102955712B (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
DE10050684B4 (de) Verfahren und System zur periodischen Ablaufverfolgung für Aufrufsequenzen zwischen Routinen
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE112012000797B4 (de) Mehrfach-Modellierungsparadigma für eine Vorhersageanalytik
DE202014010910U1 (de) Vorgang zur Anzeige von Testabdeckungsdaten während der Codeüberprüfung
DE102016221813A1 (de) Datenreplikation auf der Grundlage des Verlaufs des Komprimierungsverhältnisses
DE102014116367A1 (de) Verwaltung von leistungsstufen von informationstechnologiesystemen
DE102014113692A1 (de) Verdichtung von longitudinalen epa für eine verbesserte phänotypisierung
DE102016011905A1 (de) Bestimmen der Qualität einer Zusammenfassung eines Multimediainhalts
DE112014000336T5 (de) Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE112021006232T5 (de) Proaktive anomalieerkennung
DE112016005697T5 (de) Vorrichtung, Verfahren und Programm zur Planerzeugung
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE102017129579A1 (de) Verfahren und System zur automatisierten Arbeitsmusterquantifizierung
DE112011101759B4 (de) Sampling von Leerlauftransitionen
DE112010004003T5 (de) Verfahren zum Schulen und Verwenden eines Klassifikationsmodells mit Modellen für Assoziationsregeln
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
DE112012004169T5 (de) Überwachen der Ausführung von gespeicherten Prozeduren
DE112011100168B4 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE202017106569U1 (de) Analyse grossangelegter Datenverarbeitungsaufträge
DE112021002883T5 (de) Automatisierte rückmeldung und kontinuierliches lernen zur abfrageoptimierung
EP2854045B1 (de) Verfahren und System zum Bewerten von erhobenen Messwerten eines Systems
DE102013000857A1 (de) Kompakte Funktionsablaufprotokollierung
DE102016223484B4 (de) Bestimmen von Ähnlichkeiten in Computersoftwarecodes zur Leistungsanalyse
DE102012214672A1 (de) Bereitstellung einer Zuordnungsrelation und Durchführen einer Codeoptimierung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee