DE112013001747T5 - Optimieren des Verbindens von Anweisungen - Google Patents

Optimieren des Verbindens von Anweisungen Download PDF

Info

Publication number
DE112013001747T5
DE112013001747T5 DE112013001747.4T DE112013001747T DE112013001747T5 DE 112013001747 T5 DE112013001747 T5 DE 112013001747T5 DE 112013001747 T DE112013001747 T DE 112013001747T DE 112013001747 T5 DE112013001747 T5 DE 112013001747T5
Authority
DE
Germany
Prior art keywords
instruction
instructions
internal
optimized internal
optimized
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.)
Ceased
Application number
DE112013001747.4T
Other languages
English (en)
Inventor
c/o IBM Corporation Salapura Valentina
c/o IBM Corporation Gschwind Michael Karl
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 DE112013001747T5 publication Critical patent/DE112013001747T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Ein Computersystem zum Optimieren von Anweisungen ist so konfiguriert, dass es zwei oder mehr zum Optimieren geeignete Maschinenanweisungen erkennt, die zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung verbindet, die so konfiguriert ist, dass sie Funktionen der zwei oder mehr Maschinenanweisungen ausführt, und die einzige optimierte interne Anweisung ausführt, um die Funktionen der zwei oder mehr Maschinenanweisungen auszuführen. Zum Ermitteln der Eignung gehört ein Feststellen, dass die zwei oder mehr Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung beinhalten, die das erste Zielregister als Quellenregister und ein Zielregister angibt. Die zweite Anweisung stellt eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge dar, wobei die erste Anweisung eine erste Funktion, die ausgeführt werden soll, und die zweite Anweisung eine zweite Funktion angibt, die ausgeführt werden soll.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Optimieren von Anweisungen und insbesondere Optimieren von internen Anweisungen durch Verbinden von geeigneten Anweisungen.
  • Prozessoren führen Folgen von Anweisungen aus, um Daten zu verarbeiten, zu speichern und Operationen zu steuern. Die Prozessoren können die Anweisungen durch Abrufen von Maschinenanweisungen von einem Datenspeicher, durch Erzeugen interner Anweisungen auf der Grundlage der Maschinenanweisungen und durch Ausführen der internen Anweisungen ausführen, um Operationen zum Steuern eines Systems auszuführen, das den Prozessor enthält.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform der vorliegenden Erfindung enthält ein Computersystem zum Optimieren von Anweisungen einen Prozessor, der eine Anweisungsausführungseinheit, die zum Ausführen von Anweisungen konfiguriert ist, eine Anweisungsoptimierungseinheit, die zum Optimieren von zwei oder mehr Anweisungen konfiguriert ist, und einen Speicher zum Speichern von zwei oder mehr Maschinenanweisungen aufweist, die durch die Anweisungsausführungseinheit ausgeführt werden sollen. Das Computersystem ist so konfiguriert, dass es ein Verfahren ausführt, das Erkennen der zwei oder mehr Maschinenanweisungen beinhaltet, die zum Optimieren geeignet sind, wobei zum Feststellen, dass die zwei oder mehr Maschinenanweisungen geeignet sind, eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung gehören, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei die zweite Anweisung eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge darstellt, wobei die erste Anweisung eine erste Funktion, die ausgeführt werden soll, und die zweite Anweisung eine zweite Funktion angibt, die ausgeführt werden soll. Das Verfahren beinhaltet ferner Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie Funktionen der zwei oder mehr Maschinenanweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben werden, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und wobei die einzige optimierte interne Anweisung die erste und zweite auszuführende Funktion angibt, und Ausführen der einzigen optimierten internen Anweisung, um die Funktionen der zwei oder mehr Maschinenanweisungen auszuführen.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung beinhaltet ein Computerprogrammprodukt zum Umsetzen einer Anweisungsoptimierung ein materielles Speichermedium, das durch eine Verarbeitungseinheit lesbar ist und in dem Anweisungen zum Ausführen durch die Verarbeitungseinheit gespeichert sind, um ein Verfahren auszuführen. Das Verfahren beinhaltet Feststellen, dass die mindestens zwei Maschinenanweisungen einer Anweisungsfolge zum Optimieren geeignet sind, wobei zum Feststellen der Eignung gehört, dass die mindestens zwei Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung aufweisen, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei die zweite Anweisung eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge darstellt, wobei die erste Anweisung eine erste Funktion, die ausgeführt werden soll, und die zweite Anweisung eine zweite Funktion angibt, die ausgeführt werden soll. Das Verfahren beinhaltet ferner Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie Funktionen der zwei oder mehr Anweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben werden, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und wobei die einzige optimierte interne Anweisung die erste und zweite Funktion angibt, die ausgeführt werden sollen, und Ausführen der einzigen optimierten internen Anweisung, um die Funktionen der mindestens zwei Maschinenanweisungen auszuführen.
  • Gemäß noch einer weiteren Ausführungsform der vorliegenden Offenbarung beinhaltet ein computergestütztes Verfahren Feststellen, dass zwei oder mehr Anweisungen eines Anweisungsfolge zum Optimieren geeignet sind, wobei zum Feststellen der Eignung gehört, dass die zwei oder mehr Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung aufweisen, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei es sich bei der zweiten Anweisung um eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge handelt, wobei die erste Anweisung eine erste Funktion, die ausgeführt werden soll, und die zweite Anweisung eine zweite Funktion angibt, die ausgeführt werden soll. Das computergestützte Verfahren beinhaltet ferner Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie die erste und die zweite Funktion der zwei oder mehr Maschinenanweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben werden, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und wobei die einzige optimierte interne Anweisung die erste und zweite auszuführende Funktion angibt. Das computergestützte Verfahren beinhaltet ferner Ausführen der einzigen optimierten internen Anweisung, um die erste und zweite Funktion der zwei oder mehr Anweisungen auszuführen.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorgelegten Erfindung realisiert. Andere Ausführungsformen und Merkmale der Erfindung werden hierin ausführlich beschrieben und als Teil der beanspruchten Erfindung angesehen. Zum besseren Verständnis der Erfindung mit den Vorteilen und den Merkmalen wird auf die Beschreibung und auf die Zeichnungen verwiesen.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ZEICHNUNGSANSICHTEN
  • Der Gegenstand der Erfindung wird in den Ansprüchen am Ende der Beschreibung ausführlich dargelegt und ausdrücklich beansprucht. Das oben Gesagte und weitere Merkmale und Vorteile der Erfindung werden aus der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden Zeichnungen klar, wobei:
  • 1 ein Blockschaubild eines Systems zum Optimieren von Anweisungen gemäß einer Ausführungsform der vorliegenden Offenbarung zeigt;
  • 2 eine Konfiguration eines Systems zum Optimieren von Anweisungen gemäß einer Ausführungsform der vorliegenden Offenbarung zeigt;
  • 3 einen Ablaufplan zum Optimieren von Anweisungen gemäß einer Ausführungsform der vorliegenden Offenbarung zeigt;
  • 4 einen Ablaufplan zum Ermitteln zeigt, ob Anweisungen zum Optimieren gemäß einer Ausführungsform geeignet sind;
  • 5 grafisch das Optimieren und Ausführen von Anweisungen gemäß einer Ausführungsform der Offenbarung zeigt;
  • 6 grafisch das Optimieren und Ausführen von Anweisungen gemäß einer anderen Ausführungsform der Offenbarung zeigt; und
  • 7 ein Computerprogrammprodukt gemäß einer Ausführungsform zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt ein System 1 zum Optimieren von Anweisungen, das eine Anweisungsspeichereinheit 10, eine Ausgabewarteschlange, eine Anweisungsoptimierungseinheit 12, eine Anweisungsausführungseinheit 13, eine Operandenspeichereinheit 14 und Register 15 beinhaltet. Das System 1 ist nicht auf die obigen Elemente oder Komponenten beschränkt, jedoch werden diese Komponenten zur Beschreibung dargelegt. Es können gemäß Systemen innerhalb des Schutzumfangs der vorliegenden Offenbarung weitere Komponenten hinzugefügt und eine oder mehrere der obigen Komponenten weggelassen werden.
  • In der Anweisungsspeichereinheit 10 sind Anweisungen gespeichert, die durch die Anweisungsausführungseinheit 13 ausgeführt werden sollen. Die Anweisungen können gemäß einer beliebigen Architektur in der Anweisungsspeichereinheit 10 gespeichert sein, unter anderem in Abhängigkeit davon, wann die Anweisungen programmiert wurden, nach dem Zufallsprinzip, wann die Anweisungen durch das System 1 aufgerufen wurden oder auf sie zugegriffen wurde, oder gemäß anderen konstruktiven Parametern, Anforderungen oder Architekturen. Gemäß einer Ausführungsform sind in der Anweisungsspeichereinheit 10 Maschinenanweisungen und gemäß einer anderen Ausführungsform Anweisungen gespeichert, die auf der Grundlage der Maschinenanweisungen erzeugt werden.
  • Die Ausgabewarteschlange 11 enthält eine vorgegebene Anzahl von Bereichen zum Speichern von Anweisungen, die durch die Anweisungsausführungseinheit 13 nacheinander ausgeführt werden sollen. Die Anweisungen in der Ausgabewarteschlange 11 rücken in der Warteschlange weiter, wenn eine Anweisung am Anfang der Warteschlange ausgeführt wird. Das Weiterrücken kann durch einen Zeiger, der auf die nächste Anweisung zeigt, indem die Anweisungen elektrisch aus der Warteschlange gelesen und dann in einer neuen Reihenfolge wieder in die Warteschlange zurück gelesen werden, oder durch einen beliebigen anderen Prozess realisiert werden. Gemäß einer Ausführungsform sind in der Ausgabewarteschlange 11 Maschinenanweisungen und gemäß einer anderen interne Anweisungen gespeichert, die auf der Grundlage der Maschinenanweisungen erzeugt werden.
  • Gemäß bestimmten Ausführungsformen der vorliegenden Offenbarung werden mehrere Anweisungen in der Ausgabewarteschlange 11 beispielsweise durch die Anweisungsausführungseinheit 13 analysiert, um zu ermitteln, ob eine Vielzahl von Anweisungen in der Ausgabewarteschlange 11 parallel ausgeführt werden können, um eine Geschwindigkeit zu erhöhen, mit der das System 1 Gruppen von Anweisungen ausführt. Das Analysieren jeder einzelnen der Anweisungen in den Bereichen der Ausgabewarteschlange 11 nimmt eine vorgegebene Zeitspanne in Anspruch, sodass durch Vergrößern der Tiefe, um eine Anzahl von Anweisungen in der Ausgabewarteschlange 11 zu erhöhen, eine Latenzzeit des Systems 1 verlängert wird.
  • Gemäß Ausführungsformen der vorliegenden Offenbarung analysiert die Anweisungsoptimierungseinheit 12 eine Vielzahl von Anweisungen in einer Anweisungsfolge, um zu ermitteln, ob die Anweisungen zum Optimieren geeignet sind. Die Anweisungsfolge kann in der Anweisungsspeichereinheit 10 oder in der Ausgabewarteschlange 11 gespeichert sein, und dort kann auf sie zugegriffen werden. Gemäß einer Ausführungsform werden die in der Anweisungsspeichereinheit 10 oder der Ausgabewarteschlange 11 gespeicherten Maschinenanweisungen analysiert, um zu ermitteln, ob sie zum Optimieren geeignet sind. Wenn festgestellt wird, dass sie zum Optimieren geeignet sind, können die Anweisungen optimiert werden, um eine optimierte interne Anweisung zu erzeugen, und die optimierte interne Anweisung kann in der Ausgabewarteschlange 11 gespeichert werden. Gemäß einer anderen Ausführungsform können die in der Ausgabewarteschlange 11 gespeicherten internen Anweisungen analysiert werden, um die Eignung zum Optimieren zu ermitteln. Wenn festgestellt wird, dass die internen Anweisungen zum Optimieren geeignet sind, können die internen Anweisungen optimiert werden, um eine optimierte interne Anweisung zu erzeugen, und die optimierte interne Anweisung kann in der Ausgabewarteschlange 11 gespeichert werden.
  • Das Optimieren kann zum Beispiel erfolgen, während eine Anweisung decodiert wird. Wenn festgestellt wird, dass die Anweisungen zum Optimieren geeignet sind, verbindet die Anweisungsoptimierungseinheit 12 die Anweisungen zu einer einzigen optimierten internen Anweisung, die separate interne Anweisungen beinhaltet, die den Anweisungen entsprechen, deren Eignung zum Optimieren festgestellt wurde. Die einzige optimierte interne Anweisung kann nur in einem Bereich der Ausgabewarteschlange 11 gespeichert werden. Wenn ein Register umbenannt wird, kann die einzige optimierte interne Anweisung ein einziges Umbenennungs-Zielregister verwenden, um das Ergebnis des Verbindens der ersten und zweiten internen Anweisung widerzuspiegeln und dadurch den Verbrauch der knappen Ressourcen des Umbenennungsregisters zu verringern.
  • Während des Ausführens der internen Anweisungen greift die Anweisungsausführungseinheit 13 auf eine Anweisung am Anfang der Ausgabewarteschlange 11 zu und führt die Anweisung aus, indem sie auf einen oder mehrere Operanden aus einer Operandenspeichereinheit 14 oder Registern 15 zugreift und ein Ergebnis in der Operandenspeichereinheit 14 und/oder in den Registern 15 speichert. Wenn es sich bei der durch die Anweisungsausführungseinheit 13 ausgeführten Anweisung um eine optimierte interne Anweisung handelt, kann die Anweisungsausführungseinheit 13 die optimierte interne Anweisung zweimal ausführen – einmal, um die erste Anweisung in der optimierten internen Anweisung auszuführen, und noch einmal, um die zweite Anweisung in der optimierten internen Anweisung auszuführen.
  • 2 veranschaulicht eine physische Konfiguration eines Systems 2 zum Optimieren von Anweisungen gemäß einer Ausführungsform der vorliegenden Offenbarung. Das System 2 enthält einen Speicher 21 und einen Prozessor 26. In dem Speicher 21 sind Operanden in einem Operandenspeicher 22, Anweisungen in einem Anweisungsspeicher 23, Daten in Registern 24 und interne Anweisungen in der Ausgabewarteschlange 25 gespeichert. Gemäß Ausführungsformen der vorliegenden Offenbarung können zu dem Speicher 21 ein Speicher-Chip wie beispielsweise ein Direktzugriffsspeicher-(random access memory, RAM)Chip, eine Vielzahl von Speicher-Chips, verschiedene Speichertypen wie beispielsweise flüchtige Speicher, nichtflüchtige Speicher, Flash-Speicher, Cachespeicher oder ein beliebiger anderer Typ von Datenspeicher zählen. Der Operandenspeicher 22, die Register 24 und die Ausgabewarteschlange 25 können sich in ein und demselben Speichertyp, in ein und demselben Speicher-Chip oder in ein und derselben integrierten Schaltung befinden. Alternativ können sich der Operandenspeicher 22, der Anweisungsspeicher 23, die Register 24 und/oder die Ausgabewarteschlange 25 in einem anderen Speichertyp, in einem anderen Speicher-Chip oder in einer anderen integrierten Schaltung befinden als der Operandenspeicher 22, der Anweisungsspeicher 23, die Register 24 und/oder die Ausgabewarteschlange 25. Zum Beispiel kann der Anweisungsspeicher 23 zwar einen RAM oder einen Nur-Lese-Speicher (ROM) aufweisen, die Ausgabewarteschlange 25 hingegen kann einen Cachespeicher aufweisen.
  • Der Prozessor 26 enthält eine Anweisungsausführungseinheit 27 und eine Anweisungsoptimierungseinheit 28. Gemäß Ausführungsformen der vorliegenden Offenbarung können die Anweisungsausführungseinheit 27 und die Anweisungsoptimierungseinheit 28 eine fest verdrahtete Schaltlogik in dem Prozessor 26, Software zum Steuern der Arbeitsschritte des Prozessors 26, auf die Verarbeitungselemente des Prozessors 26 zugreifen, eine oder mehrere arithmetische Logikeinheiten, weitere Logik, Cachespeicher oder beliebige andere Schaltlogiken beinhalten, um den Prozessor zum Optimieren und Ausführen von internen Anweisungen zu veranlassen.
  • 3 veranschaulicht ein Verfahren zum Optimieren von Anweisungen gemäß einer Ausführungsform der vorliegenden Offenbarung. Das Verfahren kann in einem System 2, das eine in 2 veranschaulichte Konfiguration aufweist, oder in einem beliebigen anderen zum Ausführen des Verfahrens konfigurierten System ausgeführt werden. Obwohl in 3 die Blöcke 31 bis 36 dargestellt sind, ist klar, dass Ausführungsformen der vorliegenden Offenbarung Verfahren umfassen, in denen ein oder mehrere der Blöcke 31 bis 36 weggelassen oder geändert oder in denen zusätzliche Blöcke hinzugefügt sind.
  • In Block 31 wird eine Vielzahl von Anweisungen zum Optimieren analysiert. Zu den analysierten Anweisungen können Maschinenanweisungen oder interne Anweisungen gehören, die auf der Grundlage von Maschinenanweisungen erzeugt wurden. 4 veranschaulicht eine Ausführungsform zum Ermitteln, ob Anweisungen zum Optimieren geeignet sind. Obwohl in 4 die Blöcke 41 bis 44 veranschaulicht sind, ist klar, dass Ausführungsformen der vorliegenden Offenbarung Verfahren umfassen, in denen ein oder mehrere der Blöcke 41 bis 44 weggelassen oder geändert oder in denen zusätzliche Blöcke hinzugefügt sind. In Block 41 wird ein Zielregister oder ein Ziel einer ersten Anweisung ermittelt. In Block 42 werden ein Bereich eines Operanden und ein Zielregister oder ein Ziel einer zweiten Anweisung ermittelt.
  • In Block 43 wird ermittelt, ob das Zielregister oder das Ziel der ersten und zweiten Anweisung identisch sind und ob das Zielregister oder das Ziel und der Bereich eines Operanden der zweiten Anweisung identisch sind. Wenn dies der Fall ist, wird in Block 44 festgelegt, dass die Anweisungen zum Optimieren geeignet sind. Wenn die erste und zweite Anweisung auf der Grundlage der Analyse von Block 43 nicht zum Optimieren geeignet sind, wird der Prozessor beendet.
  • Obwohl gemäß der Ausführungsform von 4 ein Ermitteln beschrieben wird, ob Anweisungen auf der Grundlage eines Zielregisters der Operationen zum Optimieren geeignet sind, kann anhand anderer Kriterien ermittelt werden, ob Anweisungen zum Optimieren geeignet sind. Insbesondere können Anweisungen immer dann zum Optimieren geeignet sein, wenn eine exakte Ausführung der zweiten Anweisungen vom Ergebnis der ersten Anweisung abhängt. Wenn zum Beispiel eine zweite Operation Daten in einem Register verwendet, die eine erste Operation hineingeschrieben hat, und in dieses Register schreibt, kann es in der zweiten Operation zu einem fehlerhaften Ergebnis kommen, wenn die zweite Operation vor der ersten Operation ausgeführt wird. Da die zweite Operation von der Ausführung der ersten Operation abhängt, können die Operationen zum Optimieren geeignet sein.
  • Gemäß einer Ausführungsform sind die erste und die zweite Anweisung in der Warteschlange einander benachbart, sodass eine Anweisung unmittelbar nach der anderen ausgeführt wird, wenn die Ausführung in der Reihenfolge von der ersten zur letzten Anweisung in der Warteschlange erfolgt. Gemäß einer Ausführungsform wird nur die Quelle des Operanden der zweiten Anweisung mit dem Zielregister oder dem Ziel der ersten Anweisung verglichen. Gemäß einer anderen Ausführungsform wird nur das Zielregister oder das Ziel der zweiten Anweisung mit dem Zielregister oder dem Ziel der ersten Anweisung verglichen.
  • Gemäß einer Ausführungsform können die Bereiche der Operationen und die Zielregister oder Ziele der Anweisungen in der Ausgabewarteschlange analysiert werden, und es kann ermittelt werden, ob die erste und die zweite Anweisung zum Optimieren geeignet sind, wenn keine Anweisung zwischen der ersten Anweisung und der zweiten Anweisung in der Ausgabewarteschlange Daten auf den Bereich eines Operanden schreibt, auf den die zweite Anweisung zugreift und wenn keine Anweisung zwischen der ersten Anweisung und der zweiten Anweisung in der Ausgabewarteschlange Daten von dem Zielregister oder dem Ziel der ersten Anweisung liest.
  • Gemäß einer Ausführungsform kann ermittelt werden, ob die Anweisungen Typen entsprechen, die zum Kombinieren miteinander geeignet sind. Zum Beispiel können gemäß einer Ausführungsform mit mehreren Ausgabewarteschlangen Anweisungen nur miteinander kombiniert werden, wenn sie von ein und derselben Ausgabewarteschlange ausgegeben werden. Gemäß einer Ausführungsform können somit Vektoranweisungen und Gleitkommaanweisungen miteinander kombiniert werden, ebenso können Ganzzahlanweisungen kombiniert werden, während Ganzzahl- und Vektoranweisungen nicht miteinander kombiniert werden können. Desgleichen kann eine Ausgabelogik andere Kombinationen von Anweisungen einschränken.
  • Wenn in der Operation 32 in 3 festgestellt wird, dass die analysierten Anweisungen zum Optimieren geeignet sind, werden die Anweisungen in der Operation 33 miteinander verbunden, um eine optimierte interne Anweisung zu bilden, die Anweisungsdaten jeder der analysierten Anweisungen enthält. Die optimierte interne Anweisung kann gemäß vorgegebenen Programmierparametern so angeordnet werden, dass eine Anweisungsausführungseinheit erkennt, dass der erste Teil der optimierten internen Anweisung als erste Anweisung und der zweite Teil der optimierten internen Anweisung als zweite Anweisung ausgeführt werden soll.
  • Gemäß einer Ausführungsform handelt es sich bei den analysierten Anweisungen um Maschinenanweisungen, und das Verbinden der Anweisungen beinhaltet Ausführen eines Registerumbenennungsprozesses und Erzeugen von internen Anweisungen, die den Maschinenanweisungen entsprechen, um die optimierte interne Anweisung zu erzeugen. Gemäß einer anderen Ausführungsform kann es sich bei den analysierten Anweisungen um die internen Anweisungen handeln, sodass diese zum Verbinden der Anweisungen vor dem Erzeugen der optimierten internen Anweisung nicht in interne Anweisungen konvertiert zu werden brauchen.
  • In Schritt 34 wird die optimierte interne Anweisung als interne Anweisung gespeichert. Wenn zum Beispiel eine Ausgabewarteschlange 11 eine Vielzahl von Bereichen aufweist und jeder Bereich zum Speichern einer internen Anweisung konfiguriert ist, kann die optimierte interne Anweisung nur in einem Bereich in der Ausgabewarteschlange 11 gespeichert werden. Wenn ein Prozessor interne Anweisungen in der Ausgabewarteschlange analysiert, um zu ermitteln, ob mehrere interne Anweisungen ausgeführt werden sollen, entspricht demgemäß die optimierte interne Anweisung nur einer durch den Prozessor analysierten Anweisung.
  • Gemäß bestimmten Ausführungsformen wird eine Breite der Ausgabewarteschlange erhöht, um optimierte interne Anweisungen mit einer Größe aufzunehmen, die die Größe der voneinander getrennten ersten und zweiten internen Anweisung übersteigt. Gemäß bestimmten Ausführungsformen wird eine Tiefe der Ausgabewarteschlange oder eine Anzahl von Bereichen in der Ausgabewarteschlange gegenüber einer Ausgabewarteschlange mit einer Breite verringert, die nicht einer optimierten internen Anweisung, sondern nur einer einzigen Anweisung entspricht, um einen Gesamtdatenumfang der Ausgabewarteschlange beizubehalten. Gemäß einer solchen Ausführungsform kann eine Prozessorzeit zum Analysieren aller Bereiche in der Ausgabewarteschlange verkürzt werden, da die Ausgabewarteschlange weniger Bereiche enthält. Da jedoch eine optimierte interne Anweisung einer oder mehreren internen Anweisungen entspricht, ist der Prozessor in der Lage, trotz der verringerten Anzahl von Bereichen eine gleiche Anzahl von internen Anweisungen zu analysieren.
  • Gemäß einer anderen Ausführungsform wird als Tiefe der Ausgabewarteschlange dieselbe Tiefe wie die der Ausgabewarteschlange mit einer Breite beibehalten, die nur einer einzigen Anweisung entspricht, sodass ein Prozessor, der die internen Anweisungen in den Bereichen der Ausgabewarteschlange analysiert, in der Lage ist, eine größere Gesamtzahl von internen Anweisungen in derselben Anzahl von Bereichen zu analysieren, da ein oder mehrere der Bereiche optimierte interne Anweisungen aufweisen.
  • Gemäß einer Ausführungsform erfolgt das Einfügen der optimierten internen Anweisung in die Ausgabewarteschlange in Verbindung mit der Registerumbenennung mit den Operanden des angegebenen logischen Registers in den internen Anweisungen der optimierten internen Anweisung. Gemäß einer Ausführungsform wird ein Prozess der Registerumbenennung durchgeführt, indem nur ein einziges Zielumbenennungsregister zugeordnet wird, um das Ergebnis der ersten internen Anweisung und der zweiten internen Anweisung der optimierten internen Anweisung zu speichern, wobei es sich bei dem Zielregister der ersten internen Anweisung um dasselbe Zielregister wie das der zweiten internen Anweisung handelt oder wobei das Zielregister der ersten internen Anweisung mit dem Quellenregister eines Operanden der zweiten internen Anweisung identisch ist.
  • Wenn die zweite interne Anweisung nach dem Kombinieren zu einer optimierten internen Anweisung das Ergebnis der ersten internen Anweisung der optimierten internen Anweisung liest, wird das gemeinsame Zielregister gemäß mindestens einer Ausführungsform nicht als Quellenregister benannt und stellt stillschweigend einen weiteren Operanden dar, der in der optimierten internen Anweisung nicht separat als Quellenoperand gespeichert, sondern als Quellenoperand für die zweite interne Anweisung bereitgestellt wird, wenn diese ausgeführt wird oder wenn ein Teil der optimierten internen Anweisung ausgeführt wird, der der zweiten internen Anweisung entspricht.
  • In Schritt 35 wird eine erste interne Anweisung der optimierten internen Anweisung ausgeführt. Ein Prozessor kann die optimierte interne Anweisung lesen und eine erste und eine zweite interne Anweisung erkennen, die in der optimierten internen Anweisung enthalten ist. Die erste und die zweite interne Anweisung können so angeordnet sein, dass ihre Ausführungsreihenfolge durch den Prozessor akzeptiert wird. Gemäß einer Ausführungsform kann ein Code, der einer ersten internen Anweisung entspricht, in höherwertigen Bits als ein Code enthalten sein, der der zweiten internen Anweisung entspricht.
  • In Schritt 36 wird die zweite interne Anweisung der optimierten internen Anweisung ausgeführt, nachdem die erste Anweisung ausgeführt worden ist. Gemäß Ausführungsformen der vorliegenden Offenbarung werden die erste und die zweite interne Anweisung in derselben Reihenfolge ausgeführt, wie die internen Anweisungen in einer Anweisungsfolge vor dem Verbinden zu der optimierten internen Anweisung angeordnet waren. Wenn zum Beispiel die erste interne Anweisung in der Reihenfolge vor der zweiten internen Anweisung steht, woraus folgt, dass die erste interne Anweisung zuerst auszuführen ist, wenn die internen Anweisungen der Reihe nach ausgeführt werden, wird die erste interne Anweisung in der optimierten internen Anweisung zuerst ausgeführt.
  • Gemäß einer Ausführungsform werden die erste und die zweite Maschinenanweisung optimiert, um die optimierte interne Anweisung zu erzeugen, und die erste und die zweite interne Anweisung werden in den Schritten 35 und 36 ausgeführt, indem aus der optimierten internen Anweisung eine erste und eine zweite interne Anweisung erzeugt werden, die der ersten und der zweiten Maschinenanweisung entsprechen, und die erste und die zweite interne Anweisung separat ausgeführt werden, beispielsweise in separaten Arbeitszyklen. Gemäß einer anderen Ausführungsform werden die erste und die zweite interne Anweisung optimiert, um die optimierte interne Anweisung zu bilden, die als einzige Anweisung gespeichert werden soll, und die optimierte interne Anweisung wird ausgeführt, indem die erste und die zweite Anweisung erzeugt und die erste und die zweite interne Anweisung separat ausgeführt werden, beispielsweise in separaten Arbeitszyklen.
  • Gemäß noch einer anderen Ausführungsform werden die erste und die zweite interne Anweisung in den Schritten 35 und 36 ausgeführt, indem die optimierte interne Anweisung zweimal ausgeführt wird, wobei die optimierte interne Anweisung einen Teil der ersten internen Anweisung, der der ersten internen Anweisung entspricht, und einen Teil der zweiten internen Anweisung aufweist, der der zweiten internen Anweisung entspricht. Gemäß dieser Ausführungsform wird der Teil der ersten internen Anweisung ausgeführt, wenn die optimierte interne Anweisung zum ersten Mal ausgeführt wird, und der Teil der zweiten internen Anweisung wird ausgeführt, wenn die optimierte interne Anweisung zum zweiten Mal ausgeführt wird.
  • Gemäß noch einer weiteren Ausführungsform werden die erste und die zweite interne Anweisung in den Schritten 35 und 36 ausgeführt, indem nicht zwei separate interne Anweisungen erzeugt werden, sondern die optimierte interne Anweisung einmal ausgeführt wird. Gemäß dieser Ausführungsform enthält die optimierte interne Anweisung einen Teil der ersten internen Anweisung, der der ersten internen Anweisung entspricht, und einen Teil der zweiten internen Anweisung, der der zweiten internen Anweisung entspricht, und der Teil der zweiten internen Anweisung wird unmittelbar nach dem Teil der ersten internen Anweisung ausgeführt, ohne separate interne Anweisungen zu erzeugen.
  • Ausführungsformen der vorliegenden Offenbarung umfassen eine beliebige Architektur von Anweisungssätzen, darunter eine RISC-Architektur (reduced instruction set computing, Rechnen mit reduzierten Anweisungssatz) und eine CISC-Architektur (complex instruction set computing, Rechnen mit komplexem Anweisungssatz). Zum Beispiel kann es sich bei Ausführungsformen mit Bezug auf eine RISC-Architektur bei der ersten Anweisung um eine Ladeanweisung und bei der zweiten Anweisung um eine Datenverarbeitungsoperation handeln, die auf ein Ergebnis der ersten Anweisung reagiert, beispielsweise einer arithmetischen Anweisung. Bei Ausführungsformen mit Bezug auf eine CISC-Architektur hingegen kann es sich bei der ersten Anweisung um einen beliebigen Anweisungstyp handeln, darunter eine arithmetische Anweisung, und bei der zweiten Anweisung kann es sich um einen beliebigen Anweisungstyp handeln, darunter eine arithmetische Anweisung.
  • Die 5 und 6 veranschaulichen Beispiele von Verbindungsanweisungen zum Bilden einer optimierten internen Anweisung und zum Ausführen der optimierten internen Anweisung oder separater interner Anweisungen gemäß Ausführungsformen der vorliegenden Offenbarung. In 5 werden die erste und die zweite Maschinenanweisung 51 und 52 analysiert, um zu ermitteln, ob diese optimiert werden können. Die erste Maschinenanweisung 51 ist so konfiguriert, dass sie einen Prozessor veranlasst, um auf der Grundlage einer Adresse im Register r3 und einer Konstanten 120 einen Wert in das Register r1 zu laden. Die zweite Maschinenanweisung 52 ist so konfiguriert, dass sie einen Prozessor veranlasst, auf der Grundlage der Summe der Inhalte der Register r1 und r5 einen Wert in das Register r1 zu laden.
  • Wenn festgestellt wird, dass die erste und die zweite Maschinenanweisung 51 und 52 zum Optimieren geeignet sind, werden die erste und die zweite Maschinenanweisung 51 und 52 miteinander verbunden, um die optimierte interne Anweisung 53 zu bilden. Obwohl weitere Prozesse wie beispielsweise ein Register-Umbenennungsprozess aus der Darstellung in 5 weggelassen wurden, ist klar, dass in das Optimieren und Ausführen der Maschinenanweisungen 51 und 52 zusätzliche Prozess einbezogen werden oder diesen eigen sein können. Die optimierte interne Anweisung 53 enthält Teile von internen Anweisungen, die sowohl der ersten als auch der ersten Maschinenanweisung 51 bzw. 52 entsprechen.
  • 5 zeigt die optimierte interne Anweisung 53, nachdem eine Registerumbenennung erfolgt ist, indem logische Registerkennungen r1, r3 und r5 durch physische Umbenennungsregister p101, p103 bzw. p105 ersetzt wurden. Insbesondere beinhaltet die optimierte interne Anweisung 53 interne Anweisungen, um in den physischen Speicherbereich 101, der dem Register r1 entspricht, einen Wert zu laden, der einer Adresse im physischen Speicherbereich p103 entspricht, der wiederum dem Register r3 entspricht, zuzüglich der Konstanten 120. Die optimierte interne Anweisung 53 beinhaltet ferner interne Anweisungen zum Addieren der Inhalte des physischen Speicherbereichs p105, der dem Register r5 entspricht, zu den Inhalten des physischen Speicherbereichs p101, der dem Register r1 entspricht, und zum Speichern der Inhalte in dem physischen Speicherbereich p101.
  • Bei Ausführungsformen, bei denen die erste und die zweite Maschinenanweisung 51 und 52 nur dann zum Optimieren geeignet sind, wenn die zweite Maschinenanweisung 52 auf die Daten von demselben Register wie das Zielregister der ersten Maschinenanweisung 51 zugreift und dieselben ersetzt, kann die optimierte interne Anweisung 53 zum Beispiel die Operandendaten p101 (die weggelassenen Daten sind durch Klammern angezeigt) am Ende des Teils der zweiten Anweisung der optimierten internen Anweisung 53 weglassen und dadurch einen Umfang der optimierten internen Anweisung 53 verringern.
  • Zwar ist in 5 eine Ausführungsform einer optimierten internen Anweisung 53 veranschaulicht, es ist jedoch klar, dass Ausführungsformen der vorliegenden Offenbarung optimierte interne Anweisungen umfassen, die andere Inhalte und Anordnungen aufweisen. Gemäß einer Ausführungsform kann zum Beispiel ein separater Datenbereich für das Zielregister oder das Ziel der zweiten Operation der optimierten internen Anweisung bereitgestellt werden. Gemäß einer anderen Ausführungsform kann ein separater Datenbereich für jeden Operanden der zweiten Operation der optimierten internen Anweisung unabhängig davon bereitgestellt werden, ob es sich bei dem Operanden um denselben wie für das Zielregister oder das Ziel des Teils der ersten Anweisung handelt.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung wird die optimierte interne Anweisung 53 ausgeführt, indem zwei separate interne Anweisungen 54 und 55 ausgeführt werden. Eine erste interne Anweisung 54 kann der ersten Maschinenanweisung 51 entsprechen, und eine zweite interne Anweisung 55 kann der zweiten Maschinenanweisung 52 entsprechen. Die erste und die zweite interne Anweisung 54 und 55 werden in derselben Reihenfolge ausgeführt, wie die erste und die zweite Maschinenanweisung 51 und 52 auf der Grundlage der ursprünglichen Positionen der ersten und der zweiten Maschinenanweisung 51 und 52 in einer Anweisungsfolge ausgeführt würden, die durch den Pfeil E angezeigt ist.
  • Gemäß einer Ausführungsform beinhaltet das Ausführen der ersten und der zweiten internen Anweisung 54 und 55 Aufteilen der optimierten internen Anweisung 53 in separate interne Anweisungen 54 und 55 und Ausführen jeder der separaten internen Anweisungen 54 und 55 in separaten Arbeitszyklen. Gemäß einer anderen Ausführungsform beinhaltet Ausführen der ersten und der zweiten internen Anweisung 54 und 55 zweimaliges Ausführen der optimierten internen Anweisung 53, indem beim ersten Optimieren der optimierten internen Anweisung 53 der erste Teil der optimierten internen Anweisung 53 ausgeführt wird, der der ersten internen Anweisung 54 entspricht, und beim zweiten Ausführen der optimierten internen Anweisung 53 ein zweiter Teil der optimierten internen Anweisung 53 ausgeführt wird, der der zweiten internen Anweisung 55 entspricht.
  • Gemäß einer Ausführungsform werden ein Quellenbereich und/oder ein Zielbereich eines Operanden aus dem zweiten Teil der optimierten internen Anweisung 53 weggelassen, der der zweiten internen Anweisung 55 entspricht, und ein Prozessor wie beispielsweise die Anweisungsausführungseinheit 27 von 2 liefert den Zielbereich des ersten Teils der optimierten internen Anweisung 53, der der ersten internen Anweisung 54 entspricht, als weggelassenen Quellenbereich und/oder Zielbereich des Operanden der zweiten internen Anweisung 55.
  • 6 veranschaulicht eine Ausführungsform, in der die erste und die zweite interne Anweisung 61 und 62 jeweils arithmetischen Operationen entsprechen. Dem Fachmann ist klar, dass interne Anweisungen wie die in 6 veranschaulichten einer komplexen Architektur wie beispielsweise einer CISC-Architektur, in der eine arithmetische Operation einer Verarbeitungslinie folgt, nicht jedoch einer RISC-Architektur entsprechen, in der die Operationen so voneinander getrennt sind, dass jede Operation nur einen Taktzyklus in Anspruch nimmt, sodass zum Ausführen einer arithmetischen Operation zum Beispiel auch eine Ladeoperation erforderlich wäre.
  • Die erste Maschinenanweisung 61 ist so konfiguriert, dass sie einen Prozessor veranlasst, die Inhalte der Register r3 und r4 zu addieren und das Ergebnis in das Register r1 zu laden. Die zweite Maschinenanweisung 62 ist so konfiguriert, dass sie einen Prozessor veranlasst, die Inhalte der Register r5 und r1 zum Register r1 zu addieren. Wenn festgestellt wird, dass die erste und die zweite Maschinenanweisung 61 und 62 zum Optimieren geeignet sind, werden die erste und die zweite Maschinenanweisung 61 und 62 miteinander verbunden, um die optimierte interne Anweisung 63 zu bilden. Die optimierte interne Anweisung 63 enthält einen ersten und einen zweiten Teil, die der ersten Maschinenanweisung 61 sowie der zweiten Maschinenanweisung 62 entsprechen. Gemäß einer Ausführungsform der vorliegenden Offenbarung ist die optimierte interne Anweisung 63 nur in einem Speicherbereich der Ausgabewarteschlange gespeichert.
  • Wenn die komplexe interne Anweisung ausgeführt wird, was durch den Pfeil E angezeigt wird, kann die optimierte interne Anweisung in eine erste interne Anweisung 64 und eine zweite interne Anweisung 65 aufgeteilt werden. Die erste interne Anweisung 64 kann vor der zweiten internen Anweisung 65 ausgeführt werden, sodass die Reihenfolge der Ausführung der ersten und der zweiten internen Anweisung 64 und 65 in Bezug auf die erste und die zweite Maschinenanweisung 61 und 62 beibehalten wird.
  • Gemäß einer Ausführungsform beinhaltet das Ausführen der ersten und der zweiten internen Anweisung 64 und 65 Aufteilen der optimierten internen Anweisung 63 in separate interne Anweisungen 64 und 65 und Ausführen jeder der separaten internen Anweisungen 64 und 65 in separaten Arbeitszyklen. Gemäß einer anderen Ausführungsform beinhaltet das Ausführen der ersten und der zweiten internen Anweisung 64 und 65 zweimaliges Ausführen der optimierten internen Anweisung 64, wobei beim ersten Optimieren der optimierten internen Anweisung 63 der erste Teil der optimierten internen Anweisung 63 ausgeführt wird, der der ersten internen Anweisung 64 entspricht, und beim zweiten Ausführen der optimierten internen Anweisung 63 ein zweiter Teil der optimierten internen Anweisung 63 ausgeführt wird, der der zweiten internen Anweisung 65 entspricht.
  • Gemäß noch einer anderen Ausführungsform wird die optimierte interne Anweisung 63 ausgeführt, anstatt die erste und die zweite interne Anweisung 64 und 65 zu erzeugen und die erste und die zweite interne Anweisung 64 und 65 nacheinander auszuführen. Mit anderen Worten, es kann eine Anweisungsausführungseinheit eines Prozessors 26 so konfiguriert werden, dass sie erkennt, dass die optimierte interne Anweisung 63 mehrere Funktionen aufweist, und die mehreren Funktionen nacheinander ausführt, anstatt separate interne Anweisungen 64 und 65 zu erzeugen, die den separaten Funktionen entsprechen.
  • Gemäß einer Ausführungsform werden ein Quellenbereich und/oder ein Zielbereich eines Operanden aus dem zweiten Teil der optimierten internen Anweisung 63 weggelassen, der der zweiten internen Anweisung 65 entspricht, und ein Prozessor wie beispielsweise die Anweisungsausführungseinheit 27 von 2 liefert den Zielbereich des ersten Teils der optimierten internen Anweisung 63, der der ersten internen Anweisung 64 entspricht, als weggelassenen Quellenbereich und/oder Zielbereich des Operanden der zweiten internen Anweisung 65.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung kann das Ausführen der optimierten internen Anweisung 63 Ausführen der Funktionen der ersten und der zweiten Maschinenanweisung 61 und 62, insbesondere die Funktion „Addieren”, nacheinander beinhalten, ohne eine Speicheroperation am Ende des Teils der optimierten internen Anweisung 63, der der ersten internen Anweisung 64 entspricht, oder eine Ladeoperation am Anfang des Teils der optimierten internen Anweisung 63 auszuführen, der der zweiten internen Anweisung 64 entspricht. Mit anderen Worten, beispielsweise kann gemäß 6 Optimieren bei einer Operation, in der durch die erste und die zweite Maschinenanweisung 61 und 62 zwei arithmetische Funktionen bereitgestellt werden, Überspringen der Operation „Speichern” in das Register p101 der internen Anweisung 64 und der Operation „Laden” vom Register p101 der internen Anweisung 65 beinhalten, und stattdessen kann ein Prozessor die erste und die zweite Additionsfunktion (p103 + p104 + p105) miteinander kombinieren, um die optimierte interne Anweisung 63 auszuführen.
  • Gemäß der obigen Beschreibung können Ausführungsformen in Form von computergestützten Prozessen und Vorrichtungen zum Ausführen dieser Prozesse umgesetzt werden. Eine Ausführungsform kann ein Computerprogrammprodukt 700 gemäß 7 auf einem computerlesbaren/durch Computer nutzbaren Medium 702 mit einer Computerprogrammcode-Logik 704 beinhalten, die in einem materiellen Medium als Herstellungsprodukt gespeicherte Anweisungen enthält. Als beispielhafte Herstellungsprodukte für ein computerlesbares/durch Computer nutzbares Medium 702 kommen Disketten, CD-ROMs, Festplatten, USB-Flash-Speicher oder beliebige andere computerlesbare Speichermedien infrage, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn die Computerprogrammcode-Logik 704 in einen Computer geladen und durch diesen ausgeführt wird. Ausführungsformen beinhalten eine Computerprogrammcode-Logik 704, die in einem Speichermedium gespeichert sein, in einen Computer geladen und/oder durch diesen ausgeführt werden oder über ein bestimmtes Übertragungsmedium übertragen werden kann, beispielsweise über eine elektrische Leitung oder Kabel, durch Lichtwellenleiter oder über elektromagnetische Strahlung, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn die Computerprogrammcode-Logik 704 in den Computer geladen und durch diesen ausgeführt wird. Wenn die Segmente der Computerprogrammcode-Logik 704 auf einem Universal-Mikroprozessor installiert sind, konfigurieren diese den Mikroprozessor so, dass er spezielle Logikschaltungen erzeugt.
  • Technische Effekte und Vorteile von Ausführungsformen der vorliegenden Offenbarung führen zum Verringern einer Anzahl von Anweisungen, die durch einen Prozessor für Prozesse wie beispielsweise Parallelverarbeitung analysiert werden, zum Verringern einer Anzahl in einem Speicher wie beispielsweise einer Ausgabewarteschlange gespeicherter interner Anweisungen und zum Verringern einer Anzahl durch einen Prozessor auszuführender Schritte zum Ausführen interner Anweisungen. Zum Beispiel analysiert der Prozessor gemäß einer Ausführungsform, in der der Prozessor zum Durchführen einer Parallelverarbeitung konfiguriert ist, Anweisungen in einer Anweisungsfolge, die in einer Anweisungswarteschlange oder einer Ausgabewarteschlange gespeichert sind, und kann gemäß den oben beschriebenen Ausführungsformen optimierte interne Anweisungen bilden, damit der Prozessor weniger interne Anweisungen zur Parallelverarbeitung zu analysieren braucht und die Latenzzeit in einem System verkürzt wird, das den Prozessor enthält. Andere technische Effekte und Vorteile können sich aus Systemen, Verfahren und Computerprogrammprodukten gemäß Ausführungsformen der vorliegenden Offenbarung ergeben, und der Schutzumfang der Erfindung ist nicht auf einen der obigen Effekte oder Vorteile beschränkt.
  • Die hierin verwendeten Begriffe dienen nur zum Beschreiben bestimmter Ausführungsformen und nicht zur Einschränkung der Erfindung. Die hierin verwendeten Einzahlformen „ein”, „eine” und „der, die, das” sollen gleichermaßen auch die Mehrzahlformen einschließen, sofern aus dem Zusammenhang nicht eindeutig anderes hervorgeht. Ferner ist klar, dass die Begriffe „weist auf” und/oder „aufweisend” bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, jedoch nicht das Vorhandensein oder das Hinzukommen einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder deren Gruppen ausschließen.
  • Die Beschreibung der vorliegenden Erfindung ist zur Veranschaulichung und Beschreibung vorgelegt worden, erhebt jedoch nicht den Anspruch auf Vollständigkeit oder auf Beschränkung auf die Erfindung in der offenbarten Form. Dem Fachmann sind viele Änderungen und Varianten offensichtlich, ohne vom Schutzumfang und vom Wesensgehalt der Erfindung abzuweichen. Die obigen Ausführungsformen wurden ausgewählt und beschrieben, um die Grundgedanken der Erfindung und deren praktische Anwendung bestmöglich zu erläutern und anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Änderungen zu erleichtern, die für die jeweils vorgesehene Verwendung geeignet sind.
  • Dem Fachmann ist einsichtig, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardwareausführungsform, einer kompletten Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte in sich vereint, die hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
  • Es kann eine beliebige Komponente eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Als speziellere Beispiele (eine nicht erschöpfende Aufzählung) für das computerlesbare Speichermedium kommen infrage: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine austauschbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein austauschbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen zu enthalten oder zu speichern.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit einem darin verkörperten computerlesbaren Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine beliebige aus einer Vielfalt an Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterverbreiten oder transportieren kann.
  • Ein auf einem computerlesbaren Medium gespeicherter Programmcode kann unter Verwendung eines beliebigen geeigneten Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben.
  • Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Komponente einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann komplett auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder komplett auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferner Computer mit dem Computer des Benutzers durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder schematische Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise so zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungen beinhaltet, die die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Folge auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktionen/Aktionen bereitstellen.
  • Die oben beschriebenen Ausführungsformen können in Form computergestützter Prozesse und Vorrichtungen zum praktischen Umsetzen dieser Prozesse realisiert werden. Gemäß Ausführungsformen ist die Erfindung in einem Computerprogrammcode verkörpert, der durch ein oder mehrerer Netzwerkelemente ausgeführt wird. Ausführungsformen beinhalten ein Computerprogrammprodukt auf einem durch Computer nutzbaren Medium, wobei eine Logik des Computerprogrammcodes Anweisungen enthält, die in einem materiellen Medium als Herstellungsprodukt verkörpert sind. Als beispielhafte Herstellungsprodukte für das durch Computer nutzbare Medium kommen Disketten, CD-ROMs, Festplatten USB-Flash-Speicher oder jedes andere computerlesbare Speichermedium infrage, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn die Logik des Computerprogrammcodes in den Computer geladen und durch diesen ausgeführt wird. Ausführungsformen beinhaltet eine Logik des Computerprogrammcodes, die zum Beispiel in einem Speichermedium gespeichert ist, in einen Computer geladen und/oder durch diesen ausgeführt oder über ein bestimmtes Übertragungsmedium wie beispielsweise über elektrische Leitungen oder Kabel, Lichtwellenleiter oder elektromagnetische Strahlung übertragen wird, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn der Computerprogrammcode in den Computer geladen und durch diesen ausgeführt wird. Wenn die Logiksegmente des Computerprogrammcodes auf einem Universal-Mikroprozessor implementiert sind, wird der Mikroprozessor so konfiguriert, dass spezielle Logikschaltungen erzeugt werden.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Demgemäß kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktionen aufweist. Zu beachten ist, dass bei bestimmten alternativen Ausführungsformen die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge vorkommen können. Zum Beispiel können zwei nacheinander gezeigte Blöcke je nach vorgesehener Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Ferner wird darauf hingewiesen, dass jeder Block in den Blockschaubildern und/oder Ablaufplänen und Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplänen durch spezielle Hardwaresysteme, die die angegebenen Funktionen oder Aktionen ausführen, oder durch Kombination von spezieller Hardware und Computeranweisungen umgesetzt werden.

Claims (20)

  1. Computersystem zum Optimieren von Anweisungen, wobei das Computersystem aufweist: einen Prozessor, der eine Anweisungsausführungseinheit, die zum Ausführen von Anweisungen konfiguriert ist, und eine Anweisungsoptimierungseinheit enthält, die zum Optimieren von zwei oder mehr Anweisungen konfiguriert ist; und einen Speicher zum Speichern von zwei oder mehr Anweisungen, die durch die Anweisungsausführungseinheit ausgeführt werden sollen, wobei das Computersystem zum Ausführen eines Verfahrens konfiguriert ist, das aufweist: Ermitteln der zwei oder mehr Maschinenanweisungen, die zum Optimieren geeignet sind, wobei zum Ermitteln der Eignung festgestellt wird, dass die zwei oder mehr Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung aufweisen, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei es sich bei der zweiten Anweisung um eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge handelt, wobei die erste Anweisung eine erste auszuführende Funktion und die zweite Anweisung eine zweite auszuführende Funktion angibt; Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie Funktionen der zwei oder mehr Maschinenanweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben sind, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und wobei die einzige optimierte interne Anweisung die erste und die zweite auszuführende Funktion angibt, und Ausführen der einzigen optimierten internen Anweisung, um die Funktionen der zwei oder mehr Maschinenanweisungen auszuführen.
  2. Computersystem nach Anspruch 1, wobei das Computersystem so konfiguriert ist, dass es die einzige optimierte interne Anweisung ausführt, anstatt zwei oder mehrere interne Anweisungen auszuführen, die den zwei oder mehr Maschinenanweisungen entsprechen.
  3. Computersystem nach Anspruch 1, wobei das Verfahren ferner aufweist: Ausführen der optimierten internen Anweisung in zwei oder mehr separaten Arbeitszyklen, um die Funktionen jeder der zwei oder mehr Maschinenanweisungen auszuführen.
  4. Computersystem nach Anspruch 1, wobei der Speicher eine Ausgabewarteschlange beinhaltet, die eine Vielzahl von Bereichen aufweist, die jeweils zum Speichern einer separaten internen Anweisung aus einer Vielzahl interner Anweisungen in einer Reihenfolge konfiguriert ist, in der die Vielzahl interner Anweisungen durch die Anweisungsausführungseinheit ausgeführt werden sollen, und wobei das Verfahren ferner aufweist: Speichern der optimierten internen Anweisung in einem Speicherbereich der Ausgabewarteschlange.
  5. Computersystem nach Anspruch 1, wobei die Ausführungseinheit so konfiguriert ist, dass sie die optimierte interne Anweisung durch Erzeugen von zwei oder mehr separaten internen Anweisungen ausführt, die den zwei oder mehr Maschinenanweisungen entsprechen, und jede der zwei oder mehr separaten internen Anweisungen in separaten Arbeitszyklen ausführt.
  6. Computersystem nach Anspruch 1, wobei interne Anweisungen der zwei oder mehr Maschinenanweisungen in einer Ausgabewarteschlange gespeichert werden, das Verbinden mit den internen Anweisungen der zwei oder mehr Maschinenanweisungen durchgeführt wird und das Computersystem ferner aufweist: Ersetzen mindestens einer der internen Anweisungen in der Ausgabewarteschlange durch die auszuführende einzige optimierte interne Anweisung.
  7. Computersystem nach Anspruch 1, wobei der Prozessor so konfiguriert ist, dass er eine Registerumbenennung durch Zuordnen eines einzigen Zielregisters durchführt, um ein Ergebnis sowohl der ersten als auch zweiter der zwei oder mehr Maschinenanweisungen darzustellen.
  8. Computersystem nach Anspruch 7, wobei die einzige optimierte interne Anweisung nur eine gespeicherte Kennung des umbenannten Registers beinhaltet, um sowohl ein Zielregister einer ersten internen Anweisung als auch ein Quellenregister einer zweiten internen Anweisung zu kennzeichnen, wobei die erste und die zweite interne Anweisung einer ersten und einer zweiten Maschinenanweisung der zwei oder mehr Maschinenanweisungen entsprechen, und wobei das Ausführen der einzigen optimierten internen Anweisung aufweist: Auswählen des Zielregisters der ersten internen Anweisung als Quellenregister der zweiten internen Anweisung.
  9. Computersystem nach Anspruch 1, wobei es sich bei einer ersten der zwei oder mehr Maschinenanweisungen um eine Speicherladeanweisung und bei einer zweiten der zwei oder mehr Maschinenanweisungen um eine Datenverarbeitungsanweisung zum Verarbeiten von Daten aus der Speicherladeanweisung handelt.
  10. Computerprogrammprodukt zum Optimieren von Anweisungen, wobei das Computerprogrammprodukt aufweist: ein materielles Speichermedium, das durch eine Verarbeitungseinheit lesbar ist und in dem Anweisungen zum Ausführen durch die Verarbeitungsschaltung zum Ausführen eines Verfahrens gespeichert sind, wobei das Verfahren aufweist: Feststellen, dass mindestens zwei Maschinenanweisungen einer Anweisungsfolge zum Optimieren geeignet sind, wobei das Feststellen der Eignung ein Feststellen aufweist, dass die mindestens zwei Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung aufweisen, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei es sich bei der zweiten Anweisung um eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge handelt, wobei die erste Anweisung eine erste auszuführende Funktion und die zweite Anweisung eine zweite auszuführende Funktion angibt; Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie Funktionen der zwei oder mehr Maschinenanweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben sind, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und wobei die einzige optimierte interne Anweisung die erste und die zweite auszuführende Funktion angibt; und Ausführen der einzigen optimierten internen Anweisung, um die Funktionen der mindestens zwei Maschinenanweisungen auszuführen.
  11. Computerprogrammprodukt nach Anspruch 10, wobei das Ausführen der einzigen optimierten internen Anweisung ein Ausführen der einzigen optimierten internen Anweisung beinhaltet, anstatt mindestens zwei interne Anweisungen auszuführen, die den mindestens zwei Maschinenanweisungen entsprechen.
  12. Computerprogrammprodukt nach Anspruch 10, wobei das Verfahren ferner ein Speichern der einzigen optimierten internen Anweisung als einzige Anweisung in dem materiellen Speichermedium aufweist, und wobei das Ausführen der einzigen optimierten internen Anweisung ein Erzeugen von mindestens zwei internen Anweisungen, die den mindestens zwei Maschinenanweisungen entsprechen, und ein Ausführen der mindestens zwei internen Anweisungen in separaten Operationen beinhaltet.
  13. Computerprogrammprodukt nach Anspruch 10, wobei das Verfahren ferner ein Speichern der einzigen optimierten internen Anweisung als einzige Anweisung in dem materiellen Speichermedium aufweist, und wobei die Anweisungsausführungseinheit so konfiguriert ist, dass sie die einzige optimierte interne Anweisung ein erstes Mal ausführt, um eine Operation auszuführen, die der ersten Maschinenanweisung entspricht, und dass sie die einzige optimierte interne Anweisung ein zweites Mal ausführt, um eine Operation auszuführen, die der zweiten Maschinenanweisung entspricht.
  14. Computergestütztes Verfahren, das aufweist: Feststellen, dass zwei oder mehr Anweisungen einer Anweisungsfolge zum Optimieren geeignet sind, wobei das Feststellen der Eignung ein Feststellen aufweist, dass die zwei oder mehr Maschinenanweisungen eine erste Anweisung, die ein erstes Zielregister angibt, und eine zweite Anweisung aufweist, die das erste Zielregister als Quellenregister und ein Zielregister angibt, wobei es sich bei der zweiten Anweisung um eine nächste Folgeanweisung der ersten Anweisung in der Programmreihenfolge handelt, wobei die erste Anweisung eine erste auszuführende Funktion und die zweite Anweisung eine zweite auszuführende Funktion angibt; Verbinden der zwei oder mehr Maschinenanweisungen zu einer einzigen optimierten internen Anweisung, die so konfiguriert ist, dass sie die erste und die zweite Funktion der zwei oder mehr Maschinenanweisungen unter Verwendung von Operanden ausführt, die durch die zwei oder mehr Maschinenanweisungen angegeben werden, wobei die einzige optimierte interne Anweisung das erste Zielregister als einziges Zielregister angibt und die einzige optimierte interne Anweisung die erste und die zweite auszuführende Funktion angibt; und Ausführen der einzigen optimierten internen Anweisung, um die erste und die zweite Funktion der zwei oder mehr Anweisungen auszuführen.
  15. Computergestütztes Verfahren nach Anspruch 14, wobei das Ausführen der einzigen optimierten internen Anweisung ein Ausführen der einzigen optimierten internen Anweisung anstelle von zwei oder mehr separaten internen Anweisungen beinhaltet, die den zwei oder mehr Anweisungen der Anweisungsfolge entsprechen.
  16. Computergestütztes Verfahren nach Anspruch 14, das ferner ein Speichern der einzigen optimierten internen Anweisung in einem einzigen Speicherbereich einer Warteschlange aufweist, wobei das Ausführen der einzigen optimierten internen Anweisung ein Abrufen der einzigen optimierten internen Anweisung von der Warteschlange und ein Erzeugen von zwei oder mehr separaten internen Anweisungen aus der einzigen optimierten internen Anweisung beinhaltet, die den zwei oder mehr Anweisungen der Anweisungsfolge entsprechen.
  17. Computergestütztes Verfahren nach Anspruch 16, wobei das Verbinden der zwei oder mehr Anweisungen zu der einzigen optimierten internen Anweisung ein Bilden der einzigen optimierten internen Anweisung derart beinhaltet, dass diese einen Teil der ersten Anweisung, der einer ersten der zwei oder mehr Anweisungen entspricht, und einen Teil der zweiten Anweisung aufweist, der der zweiten der zwei oder mehr Anweisungen entspricht.
  18. Computergestütztes Verfahren nach Anspruch 17, wobei das Verbinden der zwei oder mehr internen Anweisungen zu der einzigen optimierten internen Anweisung ein Weglassen von Daten, die dem ersten Zielregister entsprechen, aus dem Teil der zweiten Anweisung beinhaltet.
  19. Computergestütztes Verfahren nach Anspruch 17, das ferner ein Ausführen der einzigen optimierten internen Anweisung durch Ausführen des Teils der ersten Anweisung und des Teils der zweiten Anweisung in separaten Anweisungszyklen aufweist.
  20. Computergestütztes Verfahren nach Anspruch 19, wobei das Ausführen der einzigen optimierten internen Anweisung ein zweimaliges Ausführen der einzigen optimierten Anweisung beinhaltet, indem bei dem ersten Ausführen der einzigen optimierten internen Anweisung der Teil der ersten Anweisung und bei dem zweiten Ausführen der einzigen optimierten internen Anweisung der Teil der zweiten Anweisung ausgeführt wird.
DE112013001747.4T 2012-03-28 2013-02-19 Optimieren des Verbindens von Anweisungen Ceased DE112013001747T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/432,458 US9292291B2 (en) 2012-03-28 2012-03-28 Instruction merging optimization
US13/432,458 2012-03-28
PCT/IB2013/051341 WO2013144733A2 (en) 2012-03-28 2013-02-19 Instruction merging optimization

Publications (1)

Publication Number Publication Date
DE112013001747T5 true DE112013001747T5 (de) 2015-02-26

Family

ID=49236682

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001747.4T Ceased DE112013001747T5 (de) 2012-03-28 2013-02-19 Optimieren des Verbindens von Anweisungen

Country Status (5)

Country Link
US (2) US9292291B2 (de)
CN (1) CN104884145B (de)
DE (1) DE112013001747T5 (de)
GB (1) GB2514043B (de)
WO (1) WO2013144733A2 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940242B2 (en) 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US10810155B2 (en) 2012-01-17 2020-10-20 International Business Machines Corporation Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US9372695B2 (en) 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
US9292903B2 (en) 2013-10-03 2016-03-22 Google Inc. Overlap aware reordering of rendering operations for efficiency
US10175961B2 (en) * 2015-06-10 2019-01-08 International Business Machines Corporation Joining operator graph elements via whole program optimization
US9977677B2 (en) 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
CN106775745B (zh) * 2016-12-28 2020-04-28 广州华多网络科技有限公司 合并程序代码的方法及装置
CN107016277B (zh) * 2017-04-11 2018-08-28 北京深思数盾科技股份有限公司 信息处理方法和信息安全设备
CN107179895B (zh) * 2017-05-17 2020-08-28 北京中科睿芯科技有限公司 一种应用复合指令加快数据流结构中指令执行速度的方法
CN111488298A (zh) * 2017-12-29 2020-08-04 贵阳忆芯科技有限公司 优化nvm接口命令执行顺序的方法与装置
CN108628759B (zh) * 2017-12-29 2020-09-01 贵阳忆芯科技有限公司 乱序执行nvm命令的方法与装置
CN111816180B (zh) * 2020-07-08 2022-02-08 北京声智科技有限公司 基于语音控制电梯的方法、装置、设备、系统及介质
CN112015474B (zh) * 2020-08-28 2024-01-26 格兰菲智能科技有限公司 电子装置及其命令数量减少方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS623338A (ja) 1985-06-28 1987-01-09 Yokogawa Hewlett Packard Ltd 直接値処理方式
US6282633B1 (en) 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6338136B1 (en) * 1999-05-18 2002-01-08 Ip-First, Llc Pairing of load-ALU-store with conditional branch
US6675376B2 (en) 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US7398372B2 (en) * 2002-06-25 2008-07-08 Intel Corporation Fusing load and alu operations
US7802076B2 (en) * 2004-06-24 2010-09-21 Intel Corporation Method and apparatus to vectorize multiple input instructions
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7818550B2 (en) 2007-07-23 2010-10-19 International Business Machines Corporation Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10810155B2 (en) 2012-01-17 2020-10-20 International Business Machines Corporation Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’)
US10831701B2 (en) 2012-01-17 2020-11-10 International Business Machines Corporation Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’)
US9940242B2 (en) 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US10061705B2 (en) 2014-11-17 2018-08-28 International Business Machines Corporation Identifying instructions for decode-time instruction optimization grouping in view of cache boundaries

Also Published As

Publication number Publication date
US9292291B2 (en) 2016-03-22
GB201414519D0 (en) 2014-10-01
GB2514043A (en) 2014-11-12
WO2013144733A2 (en) 2013-10-03
CN104884145A (zh) 2015-09-02
CN104884145B (zh) 2018-04-06
US9298464B2 (en) 2016-03-29
US20130262840A1 (en) 2013-10-03
US20130262839A1 (en) 2013-10-03
WO2013144733A3 (en) 2016-09-01
GB2514043B (en) 2015-06-17

Similar Documents

Publication Publication Date Title
DE112013001747T5 (de) Optimieren des Verbindens von Anweisungen
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE102013204420A1 (de) Zwischenspeichern von optimierten internen Befehlen in einem Schleifenpuffer
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112012000212T5 (de) Technik für live Analyse-basierte Rematerialisation zur Reduktion von Registerdruck und zur Verbesserung von Parallelität
DE102018132781A1 (de) Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE102013200029A1 (de) Bereitstellen leistungsangepasster versionen kompilierten codes für eine cpu in einem system heterogener kerne
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE102009051288A1 (de) Befehl und Logik zur Ausführung von Bereichserkennung
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur
DE102009046876A1 (de) Verfahren und System für die Datenvorabholung für Schleifen auf der Basis linearer Induktionsausdrücke
DE102013205059A1 (de) Durchführen von vordecodierzeitoptimierten Anweisungen zusammen mit Sequence Caching von vordecodierzeitoptimierten Anweisungen
DE112018006377T5 (de) Verschmelzen spärlich besetzter kernels zur approximation eines vollen kernels eines neuronalen faltungsnetzes
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102014002898A1 (de) Verzweigungszielpuffer mit einer effizienten Rückgabevorhersagefähigkeit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final