DE102008045767A1 - Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung - Google Patents

Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung Download PDF

Info

Publication number
DE102008045767A1
DE102008045767A1 DE102008045767A DE102008045767A DE102008045767A1 DE 102008045767 A1 DE102008045767 A1 DE 102008045767A1 DE 102008045767 A DE102008045767 A DE 102008045767A DE 102008045767 A DE102008045767 A DE 102008045767A DE 102008045767 A1 DE102008045767 A1 DE 102008045767A1
Authority
DE
Germany
Prior art keywords
pipeline
execution clock
clock cycle
determination unit
cycle determination
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
DE102008045767A
Other languages
English (en)
Inventor
Lukusa Didier Dr. Kabulepa
Andreas Dr. Kirschbaum
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.)
Continental Teves AG and Co OHG
Original Assignee
Continental Teves AG and Co OHG
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 Continental Teves AG and Co OHG filed Critical Continental Teves AG and Co OHG
Priority to DE102008045767A priority Critical patent/DE102008045767A1/de
Priority to CN2009801333682A priority patent/CN102138127A/zh
Priority to EP09782476A priority patent/EP2324420A1/de
Priority to PCT/EP2009/061299 priority patent/WO2010026145A1/de
Priority to US13/061,832 priority patent/US20120110310A1/en
Publication of DE102008045767A1 publication Critical patent/DE102008045767A1/de
Withdrawn legal-status Critical Current

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/30003Arrangements for executing specific machine instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware

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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

Mikroprozessor, umfassend eine Pipeline-Mikroarchitektur (1) und eine Pipelineblasen-Erfassungseinrichtung (2), wobei die Pipelineblasen-Erfassungseinrichtung (2) eine Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) zur Ermittlung einer minimalen und/oder optimalen Anzahl an Abarbeitungstaktzyklen eines oder mehrerer Programmbefehle aufweist, die die Pipeline-Mikroarchitektur (1) durchlaufen und/oder von dieser bearbeitet werden.

Description

  • Die Erfindung betrifft einen Mikroprozessor gemäß Oberbegriff von Anspruch 1, ein Verfahren zur Ansteuerung eines Mikroprozessors gemäß Oberbegriff von Anspruch 8 sowie die Verwendung des Mikroprozessors in Kraftfahrzeugen.
  • Pipeline-Mikroarchitekturen bzw. Pipelines stellen eine bekannte Möglichkeit dar, die Leistung des Verarbeitungskernes in Mikroprozessoren zu erhöhen. Dabei wird die Abarbeitung von Maschinenbefehlen in aufeinander folgende Teilaufgaben zerlegt, deren Durchführung überlappend erfolgt. Diese Überlappung ermöglicht eine Steigerung des Durchsatzes bei der Abarbeitung von Programmbefehlen bzw. Maschinenbefehlen. Die Anzahl der pro Taktzyklus bzw. Takteinheit ausgeführten Befehle kann mit Erweiterungen der Pipeline-Funktionalität noch erhöht werden. Eine mögliche Erweiterung bietet beispielsweise die Superskalartechnik an. Mit dieser Technik werden mehrere Maschinenbefehle aus einer Befehlssequenz gleichzeitig durch dynamische Zuteilung an parallel arbeitende Funktionseinheiten übergeben. Der Mikroprozessor wickelt selbst die dynamische Zuteilung während der Abarbeitung der Befehle ab. Somit geschieht die dynamische Zuteilung nicht bereits während des Kompilierens.
  • Die VLIW(Very Long Instruction Word)-Technik stellt eine alternative Erweiterungsmöglichkeit der Pipeline-Funktionalität dar. Im Gegensatz zur Superskalartechnik werden bei der VLIW-Technik die Befehle nicht dynamisch zur Laufzeit prozessorseitig den einzelnen Funktionseinheiten zugewiesen, sondern der Compiler gruppiert parallel ausführbare Befehle.
  • Auch unter Verwendung einer der oben angeführten Erweiterung kann die Leistung einer Pipeline-Mikroarchitektur durch Pipeline-Konflikte, auch Pipeline-Hazards genannt, beeinträchtigt werden. Das Auftreten eines Pipeline-Konfliktes kann zum temporären Anhalten der Pipeline-Abarbeitung führen, was auch als Pipeline-Stall bezeichnet wird. Bei einem Pipeline-Stall wird nicht die gesamte Pipeline blockiert. Während eine Instruktion angehalten wird, wird typischerweise nur die Ausführung der nachfolgenden Befehle verzögert, während die vorausgehenden Befehle weiter ausgeführt werden. Die entstehenden Lücken in der Pipeline-Abarbeitung werden als Pipelineblasen bzw. Pipeline-Bubbles bezeichnet.
  • Folgende Pipeline-Konflikte können beispielhaft in einer Pipeline-Mikroarchitektur auftreten:
    • – Ressourcenkonflikte (Structural Hazards): Dieser Fall tritt beispielsweise auf, wenn zwei verschiedene Pipeline-Stufen gleichzeitig auf die gleiche Ressource, wie zum Beispiel den gleichen single-port Speicher, zugreifen wollen.
    • – Datenabhängigkeiten (Data Hazards): Ein Folgebefehl wartet beispielsweise darauf, dass ein vorheriger Befehl Daten in einem Register aktualisiert.
    • – Konflikte im Kontrollfluss (Control Hazards): Kontrollfluss-Konflikte, wobei sich beispielsweise die Zieladresse eine Sprungbefehls aus Daten anderer Befehle ergibt und sich somit die Abarbeitung des Sprungbefehls um die Auswertungszeit dieser Daten anderer Befehle verzögern kann. Um ein diesbezügliches Anhalten der Pipeline-Abarbeitung zu verhindern verwendet bzw. implementiert man beispielsweise Sprungvorhersagen (Branch-Prediction), welche spekulativ die Sprungadresse vorher berechnen. Die Abarbeitung läuft ohne Unterbrechung weiter, wenn sich die Vorhersage als richtig erwiesen hat. Im Falle einer falschen Sprungvorhersage müssen allerdings in der Zwischenzeit ausgeführte Befehle verworfen werden (Pipeline-Flush). Dies nimmt insbesondere für lange Pipeline-Mikroarchitekturen viel Zeit in Anspruch. Bei einem erneuten Auffüllen der Pipeline resultieren daraus automatisch Pipeline-Bubbles in einigen Pipeline-Stufen.
  • Zur Reduzierung von Pipelineblasen sind bereits verschiedene Techniken bekannt, die im Compiler oder in der Hardware-Implementierung der Pipeline bzw. in der Pipeline-Mikroarchitektur wirken. Für den Compiler wird in der Regel ein Satz von Konfigurationsparametern gesucht, die für eine vorgegebene Anwendung die Häufigkeit von Pipeline-Konflikten minimal hält. Auf der Hardwareseite werden in der Regel zusätzliche Vorkehrungen in die Pipeline-Mikroarchitektur implementiert, um das Auftreten von Pipelineblasen möglichst zu verhindern oder eine schnellere Lösung von Pipeline-Konflikten im Prozessor zu fördern.
  • In der Druckschrift WO 2004/111838 A1 wird ein Verfahren beschrieben, das die durch Datenabhängigkeiten hervorgerufenen Pipeline-Konflikte teilweise vermeidet. Hierbei sorgen ange passte Pipeline-Stufen dafür, dass sich zwei auf das gleiche Register zugreifende Befehle nicht blockieren.
  • Druckschrift US 2003/0200421 A1 offenbart ein Verfahren, bei welchem der Prozessor die abzuarbeitenden Befehle nach mehreren Durchläufen so umordnet, dass die Abarbeitung möglichst ohne Pipeline-Konflikte durchgeführt wird. Bei diesen Verfahren sowie in anderen ähnlichen Veröffentlichungen liegt der Schwerpunkt auf eine Optimierung der Pipeline-Architektur, um Pipeline-Konflikte zu vermeiden.
  • Druckschrift EP 0 352 103 A2 schlägt einen Prozessor und ein Verfahren zum Betreiben einer Pipeline-Verarbeitungseinheit vor, bei welchem Pipeline-Blasen mittels einer Pipelineblasen-Erfassungseinrichtung in einem ersten Pipeline-Abschnitt detektiert werden, wonach die Pipelineblasen durch einen Überschreibvorgang eliminiert werden.
  • Die Erfindung hat sich die Aufgabe gestellt einen Mikroprozessor und ein Verfahren zur Ansteuerung eines Mikroprozessors vorzuschlagen, welcher eine verbesserte Vermeidung von Pipelineblasen ermöglicht.
  • Die Aufgabe wird erfindungsgemäß gelöst durch den Mikroprozessor gemäß Anspruch 1 sowie das Verfahren gemäß Anspruch 8.
  • Der Erfindung liegt insbesondere der Gedanke zu Grunde, eine Pipelineblasen-Erfassungseinrichtung um eine Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und/oder eine Re al-Abarbeitungstaktzyklen-Ermittlungseinheit zu ergänzen, um eine relativ präzise Analyse des Auftretens von Pipelineblasen zu ermöglichen.
  • Der erfindungsgemäße Mikroprozessor ist vorzugsweise geeignet, um Software-Entwicklern eine vertiefte Analyse der Güte eines Programmcodes hinsichtlich des Auftretens von Pipeline-Konflikten zu ermöglichen.
  • Mit bekannten Verfahren zur Reduzierung von Pipelineblasen können viele Software-Entwickler ihre Beiträge zur Vermeidung von Pipeline-Konflikten nur begrenzt aktiv auswerten. Ein typischer Software-Entwickler erhält einen für sein Projekt vorkonfigurierten Compiler für eine feststehende Pipeline-Mikroarchitektur in einem Mikroprozessor. Wenn sein Programmcode mit anderen Programmcodes zusammengefügt wird, kann er bislang nur ungenau abschätzen, in welchem Maße sein Programmcode Pipeline-Konflikte verursacht.
  • Der erfindungsgemäße Mikroprozessor und das erfindungsgemäße Verfahren haben insbesondere den Vorteil, dass Rückmeldungen hinsichtlich des Pipeline-Verhaltens bzw. des Auftretens von Pipelineblasen für einen vom Software-Entwickler beliebig ausgewählten Teil eines Programmcodes bereitgestellt werden können. Bei einem vorgegebenen Compiler für einen vorhandenen Mikroprozessor mit optimierter Pipeline-Mikroarchitektur kann dabei ein Software-Entwickler relativ schnell und einfach analysieren, in wie fern ein Programmteil an der Erzeugung von Pipeline-Konflikten beteiligt ist. Der Programmcode kann dadurch hinsichtlich einer Vermeidung von Pipelinebla sen verbessert werden. Dies kann zweckmäßigerweise dadurch erreicht werden, dass im Zuge der Verifikation des Programms bzw. Programmcodes durch den Software-Entwickler die Compiler-Einstellungen im Zusammenwirken mit der Optimierung des Programmcodes selbst optimiert werden.
  • Die Pipeline-Mikroarchitektur umfasst vorzugsweise zumindest Teile des Steuerwerks des Mikroprozessors.
  • Der Begriff „bearbeiten” umfasst bevorzugt den Begriff „abarbeiten”.
  • Unter dem Begriff „optimieren” wird zweckmäßigerweise ein Optimieren hinsichtlich des Vermeidens von Pipelineblasen verstanden.
  • Unter der Anzahl an Taktzyklen wird vorzugsweise ebenfalls oder alternativ eine Abarbeitungszeit, insbesondere eine nicht diskrete Abarbeitungszeit, verstanden.
  • Die Pipelineblasen-Erfassungseinrichtung weist vorzugsweise zusätzlich eine Real-Abarbeitungstaktzyklen-Ermittlungseinheit zur Ermittlung der im Wesentlichen tatsächlichen Anzahl an Abarbeitungstaktzyklen, in welcher einer oder mehrere Programmbefehle die Pipeline-Mikroarchitektur durchlaufen und/oder von dieser abgearbeitet werden, auf. Die Real-Abarbeitungstaktzyklen-Ermittlungseinheit umfasst dabei insbesondere ein Zählerelement.
  • Es ist bevorzugt, dass der Befehlssatz des Mikroprozessors einen Pipelineblasen-Test-Startbefehl und einen Pipelineblasen-Test-Stoppbefehl aufweist, mit welchen die Pipelineblasen-Erfassungseinrichtung so angesteuert werden kann, dass ein Pipelineblasen-Test gestartet und beendet wird, wodurch die Pipelineblasen-Erfassungseinrichtung entsprechend aktiviert und deaktiviert wird.
  • Die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit weist vorzugsweise eine Maschinencode-Abarbeitungstaktzyklen-Zuordnungseinheit auf, welche die minimale Anzahl an Abarbeitungstaktzyklen des zuletzt geladenen Befehls aus dem Maschinencode ermittelt.
  • Es ist zweckmäßig, dass die Pipelineblasen-Erfassungseinrichtung und die Pipeline-Mikroarchitektur so ausgebildet sind, dass nach dem Laden des Pipelineblasen-Test-Startbefehls in die Pipeline-Mikroarchitektur und/oder bei Abarbeitung des Pipelineblasen-Test-Startbefehls in der Pipeline-Mikroarchitektur die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit jeweils gestartet werden und durch diese die Minimal- und Realanzahl an Abarbeitungstaktzyklen von einem oder mehreren Befehlen ermittelt wird, wonach die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit gestoppt werden, wenn der Pipelineblasen-Test-Stoppbefehl in die Pipeline-Mikroarchitektur geladen oder in dieser ausgeführt oder von dieser zurückgeschrieben wird.
  • Die Real-Abarbeitungstaktzyklen-Ermittlungseinheit weist vorzugsweise eine Monitoreinheit auf, welche für jeden durch die Pipeline-Mikroarchitektur bearbeiteten Befehl ein Differenz aus der tatsächlichen Anzahl an Abarbeitungstaktzyklen und der durch die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit ermittelten optimalen Anzahl an Abarbeitungstaktzyklen bildet, falls die Pipelineblasen-Erfassungseinrichtung aktiv ist, wobei die Monitoreinheit insbesondere eine Maximalwert-Speichereinheit aufweist, welche den Wert einer maximalen Differenz speichert.
  • Es ist bevorzugt, dass die Pipelineblasen-Erfassungseinrichtung eine Ergebnisspeichereinheit aufweist, welche eingangsseitig mit der Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und der Real-Abarbeitungstaktzyklen-Ermittlungseinheit verbunden ist und in welcher die Summe der optimalen Anzahl an Abarbeitungstaktzyklen und/oder die Summe der tatsächlichen Anzahl an Abarbeitungstaktzyklen und/oder eine Differenz dieser Summen gespeichert wird, wobei sich diese Summen auf die Abarbeitung eines oder mehrerer Programmbefehle beziehen, insbesondere auf sämtliche Programmbefehle, die während eines einzelnen Pipelineblasen-Tests die Pipeline-Mikroarchitektur durchlaufen und/oder von dieser abgearbeitet und/oder bearbeitet werden.
  • Das Verfahren wird zweckmäßigerweise ergänzt, indem das von dem Mikroprozessor abzuarbeitende Programm zumindest einen Pipelineblasen-Test-Startbefehl und wenigstens einen Pipeli neblasen-Test-Stoppbefehl aufweist, welche die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und eine Real-Abarbeitungstaktzyklen-Ermittlungseinheit der Pipelineblasen-Erfassungseinrichtung ansteuern und so ein Pipelineblasen-Test gestartet und beendet wird, wodurch die Pipelineblasen-Erfassungseinrichtung aktiviert und deaktiviert wird, indem, insbesondere nach dem Laden des Pipelineblasen-Test-Startbefehls in die Pipeline-Mikroarchitektur, die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit jeweils gestartet werden und von diesen im Wesentlichen die entsprechende Minimal- und Realanzahl an Taktzyklen von einem oder mehreren Befehlen ermittelt wird, wonach die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit gestoppt werden, wenn der Pipelineblasen-Test-Stoppbefehl in der Pipeline-Mikroarchitektur geladen oder ausgeführt oder zurückgeschrieben wird. Besonders bevorzugt weist der Programmcode an verschiedenen Stellen jeweils einen Pipelineblasen-Test-Startbefehl und einen Pipelineblasen-Test-Stoppbefehl auf, wodurch der Teil des Programmcodes, der von diesen beiden Befehlen eingeschlossen ist, hinsichtlich des Auftretens von Pipelineblasen analysiert werden kann und der entsprechende Programmcodeteil, ganz besonders bevorzugt im Zusammenwirken mit den Compilereinstellungen, optimiert werden kann.
  • Es ist zweckmäßig, dass der gesamte erfindungsgemäße Mikroprozessor oder einzelne Module oder Teile dieses Mikroprozessors als Code, insbesondere als ein Bitcode, verwirklicht sind, welcher als Ansteuerung eines logischen Mehrzweck chips, wie besonders bevorzugt einem FPGA (fieldprogrammable gate array), verwendet wird. Vor allem bei relativ geringen Stückzahlen können so Kosten gegenüber der Verwendung von ASICs gespart werden.
  • Die Erfindung bezieht sich außerdem auf die Verwendung des Mikroprozessors in Kraftfahrzeugen, insbesondere in Kraftfahrzeugregelungssystemen und/oder -sicherheitssystemen, dabei besonders bevorzugt in Kraftfahrzeugbremssystemen.
  • Die Erfindung ist vorzugsweise zur Optimierung von Programmcode durch einen Software-Entwickler vorgesehen, insbesondere in einem Verifikationsprozess des Programmcodes.
  • Weitere bevorzugte Ausführungsformen ergeben sich aus den Unteransprüchen und den nachfolgenden Beschreibungen von Ausführungsbeispielen an Hand von Figuren.
  • Es zeigen in schematischer Darstellung
  • 1 ein Ausführungsbeispiel einer Pipeline-Mikroarchitektur und einer dieser zugeordneten Pipelineblasen-Erfassungseinrichtung,
  • 2 eine beispielhafte Befehlsabarbeitung eines Pipelineblasen-Tests in einer Pipeline-Mikroarchitektur, und
  • 3 einen beispielhaften Programmcode, umfassend einen Pipelineblasen-Test-Startbefehl und einen Pipeli neblasen-Test-Stoppbefehl, wodurch dem Software-Entwickler eine Analyse der Güte des Programmcodes hinsichtlich des Auftretens von Pipeline-Konflikten in relativ flexibler Weise ermöglicht wird.
  • Die in 1 beispielhaft veranschaulichte Pipeline-Mikroarchitektur 1 umfasst verschiedene Pipeline-Stufen. Je nach Auslegung der Pipeline-Mikroarchitektur kann die Anzahl der Stufen stark variieren. In 1 werden beispielsweise folgende Pipeline-Stufen veranschaulicht:
    • – IF (Instruction Fetch) Stufe 10: In diese Pipeline-Stufe werden der Maschinencode bzw. OP Code 14 und die dazu gehörenden Daten wie beispielsweise ein Operand oder eine Zieladresse über den Eingangsbus 15 eingespeist.
    • – ID (Instruction Decode) Stufe 11: Nachdem ein Befehl geladen bzw. geholt wurde, erfolgt die Dekodierung des Befehls in dieser Stufe 11.
    • – EX (Execution) Stufe 12: Nachdem ein Befehl dekodiert und identifiziert wurde, wird er ausgeführt.
    • – WB (Write Back) Stufe 13: In dieser Stufe wird das Ergebnis mittels des Pipeline-Ausgangsbusses 16 beispielsweise in ein Register zurückgeschrieben und gegebenenfalls für weitere Abarbeitungsschritte bereit gehalten.
  • Pipeline-Mikroarchitektur 1 ist mit Pipelineblasen-Erfassungseinrichtung 2 verbunden. Die über Eingangsbus 4 geholten Befehle werden auch Pipelineblasen-Erfassungseinrichtung 2 zur Verfügung gestellt. Sobald der Pipelineblasen-Test-Startbefehl BTON vorzugsweise in der Stufe 10, IF oder in der Stufe 11, ID erkannt wird, triggert Pipeline-Mikroarchitektur 1 die Pipelineblasen-Erfassungseinrichtung 2 über den Signalpfad 17 zum Start eines Pipelineblasen-Tests, wonach Pipelineblasen-Erfassungseinrichtung 2 die Pipeline-Abarbeitung überwacht. Hierbei besteht die Überwachung hauptsächlich darin, Unterschiede zwischen der theoretisch besten bzw. geringsten Anzahl an Taktzyklenzeiten und der Anzahl tatsächlich angefallener Taktzyklenzeiten von Befehlsfolgen zu ermitteln. Nachdem Pipelineblasen-Erfassungseinrichtung 2 gestartet wird, bestimmt sie die minimale bzw. optimale Anzahl an Taktzyklen jedes in Stufe 10, IF geholten Befehls mittels Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit 3. Hierfür weist diese eine Maschinencode-Abarbeitungstaktzyklen-Zuordnungseinheit 6 auf, mit welcher Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit 3 aus den Bitwerten bzw. aus dem OP Code der durch Eingangsbus 15 bereitgestellten Befehle die minimale Anzahl bzw. theoretisch beste Anzahl an Taktzyklen des in Stufe 10, IF geladenen Befehls ableitet bzw. bestimmt. Über Signalpfad 17 teilt Pipeline-Mikroarchitektur 1 der Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit 3 mit, wann die Stufe 10, IF einen neuen Befehl geholt hat. Zählerelement 5 der Real-Abarbeitungstaktzyklen-Ermittlungseinheit 4 ist mit Pipeline-Mikroarchitektur 1 über Signalpfade 17, 18 und 19 verbunden und kann somit im Wesentlichen die tatsächlich erfasste Anzahl an Taktzyklen eines Befehl oder mehrerer Programmbefehle bzw. Befehle ermitteln. Eine Differenz aus der tatsächlichen Anzahl an Abarbeitungstaktzyklen und der durch die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit 3 ermittel ten optimalen Anzahl an Abarbeitungstaktzyklen des aktuellen Programmbefehls wird durch Monitoreinheit 7 der Real-Abarbeitungstaktzyklen-Ermittlungseinheit 4 gebildet. Somit stellt Monitoreinheit 7 jeweils das Überwachungsergebnis des zuletzt abgearbeiteten Programmbefehls bereit. Zusätzlich umfasst Monitoreinheit 7 beispielgemäß eine Maximalwert-Speichereinheit 20, welche den Wert einer maximalen Differenz bezogen auf einen abgearbeiteten Befehl speichert, also die größte Differenz zwischen der theoretisch geringsten Anzahl an Taktzyklen und der tatsächlich angefallenen Anzahl an Taktzyklen. Ergebnisspeichereinheit 9 (Accumulator) ist eingangsseitig mit der Minimal-Abarbeitungs-taktzyklen-Ermittlungseinheit 3 und mit Real-Abarbeitungs-taktzyklen-Ermittlungseinheit 4 verbunden und speichert beispielgemäß die Summe der optimalen Anzahl an Abarbeitungstaktzyklen, die Summe der tatsächlichen Anzahl an Abarbeitungstaktzyklen und eine Differenz dieser Summen in jeweils einem Register, wobei sich diese drei Summen auf die Abarbeitung sämtlicher Programmbefehle beziehen, die während eines einzelnen Pipelineblasen-Tests durch Pipeline-Mikroarchitektur abgearbeitet werden.
  • Ergebnisspeichereinheit 9 wird zurückgesetzt, wenn Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit 3 zum Start des Pipelineblasen-Tests getriggert wird. Pipelineblasen-Erfassungseinrichtung 2 ist nur während eines Pipelineblasen-Tests aktiv und liefert ansonsten, also in einem inaktiven Zustand, keine Ergebnisse. Wenn ein Pipelineblasen-Test-Stoppbefehl BTOFF die letzte Stufe 13, WB der Pipeline-Mikroarchitektur 1 erreicht, sendet diese an Pipelineblasen- Erfassungseinrichtung 2 ein Stopp-Signal. Daraufhin ist der jeweilige Pipelineblasen-Test beendet und die in der Pipelineblasen-Erfassungseinrichtung 2 erhaltenen Ergebnisse bleiben unverändert, bis der nächste Pipelineblasen-Test-Startbefehl BTON geladen bzw. bearbeitet wird.
  • 2 veranschaulicht einen beispielhaften Ablauf eines Pipelineblasen-Tests, der mit dem Ereignis 41 gestartet und mit dem Ereignis 43 beendet wird. Das Ereignis 41 tritt auf, nachdem bzw. wenn der Pipelineblasen-Test-Startbefehl BTON in die Stufe 10, IF geholt wird. Wenn der Pipelineblasen-Test-Stoppbefehl BTOFF Befehl die letzte Pipeline-Stufe WB erreicht hat bzw. zurückgeschrieben wird, tritt das Ereignis 43 auf. Zur Veranschaulichung dient dabei ein schematischer Ausschnitt 44 aus einem Programm, welche die Pipelineblasen-Test-Befehle BTON und BTOFF umfasst, die entsprechende Abarbeitungsfolge der Befehle dieses Programm-Ausschnitts in einem Pipeline-Abarbeitungsschema 45 in Bezug zum Mikroprozessortakt 46, clk.
  • Mit dem oben beschriebenen Verfahren verfügt ein Software-Entwickler über eine relativ hohe Flexibilität bei der Auswahl des zu untersuchenden Teils eines Programmcodes 50. 3 veranschaulicht beispielhaft, wie ein Software-Entwickler beliebig die Pipelineblasen-Test-Befehle BTON und BTOFF, 51 und 52 in den Programmcode 50 einfügen kann.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • - WO 2004/111838 A1 [0007]
    • - US 2003/0200421 A1 [0008]
    • - EP 0352103 A2 [0009]

Claims (10)

  1. Mikroprozessor, umfassend eine Pipeline-Mikroarchitektur (1) und eine Pipelineblasen-Erfassungseinrichtung (2), dadurch gekennzeichnet, dass die Pipelineblasen-Erfassungseinrichtung (2) eine Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) zur Ermittlung einer minimalen und/oder optimalen Anzahl an Abarbeitungstaktzyklen eines oder mehrerer Programmbefehle aufweist, die die Pipeline-Mikroarchitektur (1) durchlaufen und/oder von dieser bearbeitet werden.
  2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Pipelineblasen-Erfassungseinrichtung (2) zusätzlich eine Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4), insbesondere umfassend ein Zählerelement (5), aufweist, zur Ermittlung der im Wesentlichen tatsächlichen Anzahl an Abarbeitungstaktzyklen, in welcher einer oder mehrere Programmbefehle die Pipeline-Mikroarchitektur (1) durchlaufen und/oder von dieser abgearbeitet werden.
  3. Mikroprozessor nach Anspruch 2, dadurch gekennzeichnet, dass der Befehlssatz des Mikroprozessors einen Pipelineblasen-Test-Startbefehl (BTON) und einen Pipelineblasen-Test-Stoppbefehl (BTOFF) aufweist, mit welchen die Pipelineblasen-Erfassungseinrichtung (2) so angesteuert werden kann, dass ein Pipelineblasen-Test gestartet und beendet wird, wodurch die Pipelineblasen-Erfassungseinrichtung (2) entsprechend aktiviert und de aktiviert wird.
  4. Mikroprozessor nach mindestens einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) eine Maschinencode-Abarbeitungstaktzyklen-Zuordnungseinheit (6) aufweist, welche die minimale Anzahl an Abarbeitungstaktzyklen des zuletzt geladenen Befehls aus dem Maschinencode (OP Code) ermittelt.
  5. Mikroprozessor nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass die Pipelineblasen-Erfassungseinrichtung (2) und die Pipeline-Mikroarchitektur (1) so ausgebildet sind, dass nach dem Laden des Pipelineblasen-Test-Startbefehls (BTON) in die Pipeline-Mikroarchitektur und/oder bei Abarbeitung des Pipelineblasen-Test-Startbefehls (BTON) in der Pipeline-Mikroarchitektur die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) jeweils gestartet werden und durch diese die Minimal- und Realanzahl an Abarbeitungstaktzyklen von einem oder mehreren Befehlen ermittelt wird, wonach die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) gestoppt werden, wenn der Pipelineblasen-Test-Stoppbefehl (BTOFF) in die Pipeline-Mikroarchitektur (1) geladen oder in dieser ausgeführt oder von dieser zurückgeschrieben wird.
  6. Mikroprozessor nach mindestens einem der Ansprüche 3 bis 5, dadurch gekennzeichnet, dass die Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) eine Monitoreinheit (7) aufweist, welche für jeden durch die Pipeline-Mikroarchitektur (1) bearbeiteten Befehl eine Differenz aus der tatsächlichen Anzahl an Abarbeitungstaktzyklen und der durch die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) ermittelten optimalen Anzahl an Abarbeitungstaktzyklen bildet, falls die Pipelineblasen-Erfassungseinrichtung (2) aktiv ist, wobei die Monitoreinheit (7) insbesondere eine Maximalwert-Speichereinheit (20) aufweist, welche den Wert einer maximalen Differenz speichert.
  7. Mikroprozessor nach mindestens einem der Ansprüche 2 bis 6, dadurch gekennzeichnet, dass die Pipelineblasen-Erfassungseinrichtung (2) eine Ergebnisspeichereinheit (9) aufweist, welche eingangsseitig mit der Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und der Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) verbunden ist und in welcher die Summe der optimalen Anzahl an Abarbeitungstaktzyklen und/oder die Summe der tatsächlichen Anzahl an Abarbeitungstaktzyklen und/oder eine Differenz dieser Summen gespeichert wird, wobei sich diese Summen auf die Abarbeitung eines oder mehrerer Programmbefehle beziehen, insbesondere auf sämtliche Programmbefehle, die während eines einzelnen Pipelineblasen-Tests die Pipeline-Mikroarchitektur (1) durchlaufen und/oder von dieser abgearbeitet und/oder bearbeitet werden.
  8. Verfahren zur Ansteuerung eines Mikroprozessors, insbesondere eines Mikroprozessors nach mindestens einem der Ansprüche 1 bis 7, umfassend eine Pipeline-Mikroarchitektur (1) und eine Pipelineblasen-Erfassungseinrichtung (2), welche eine Information über das Auftreten von Pipelineblasen in der Pipeline-Mikroarchitektur (1) bereitstellt, dadurch gekennzeichnet, dass ein von dem Mikroprozessor abzuarbeitendes Programm eine Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) der Pipelineblasen-Erfassungseinrichtung (2) ansteuert, welche eine minimale und/oder optimale Anzahl an Abarbeitungstaktzyklen eines oder mehrerer Programmbefehle ermittelt, die die Pipeline-Mikroarchitektur (1) durchlaufen und/oder von dieser bearbeitet werden.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass das von dem Mikroprozessor abzuarbeitende Programm zumindest einen Pipelineblasen-Test-Startbefehl (BTON) und wenigstens einen Pipelineblasen-Test-Stoppbefehl (BTOFF) aufweist, welche die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und eine Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) der Pipelineblasen-Erfassungseinrichtung (2) ansteuern und so ein Pipelineblasen-Test gestartet und beendet wird, wodurch die Pipelineblasen-Erfassungseinrichtung (2) aktiviert und deaktiviert wird, indem, insbesondere nach dem Laden des Pipelineblasen-Test-Startbefehls (BTON) in die Pipeline-Mikroarchitektur (1), die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) jeweils gestartet werden und von diesen im Wesentlichen die entsprechende Minimal- und Realanzahl an Taktzyklen von einem oder mehreren Befehlen ermittelt wird, wonach die Minimal-Abarbeitungstaktzyklen-Ermittlungseinheit (3) und die Real-Abarbeitungstaktzyklen-Ermittlungseinheit (4) gestoppt werden, wenn der Pipelineblasen-Test-Stoppbefehl in der Pipeline-Mikroarchitektur (1) geladen oder ausgeführt oder zurückgeschrieben wird.
  10. Verwendung des Mikroprozessors nach mindestens einem der Ansprüche 1 bis 7 in Kraftfahrzeugen.
DE102008045767A 2008-09-04 2008-09-04 Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung Withdrawn DE102008045767A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE102008045767A DE102008045767A1 (de) 2008-09-04 2008-09-04 Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung
CN2009801333682A CN102138127A (zh) 2008-09-04 2009-09-01 具有流水线泡沫检测装置的微处理器
EP09782476A EP2324420A1 (de) 2008-09-04 2009-09-01 Mikroprozessor mit pipelineblasen-erfassungseinrichtung
PCT/EP2009/061299 WO2010026145A1 (de) 2008-09-04 2009-09-01 Mikroprozessor mit pipelineblasen-erfassungseinrichtung
US13/061,832 US20120110310A1 (en) 2008-09-04 2009-09-01 Microprocessor with pipeline bubble detection device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102008045767A DE102008045767A1 (de) 2008-09-04 2008-09-04 Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung

Publications (1)

Publication Number Publication Date
DE102008045767A1 true DE102008045767A1 (de) 2010-03-11

Family

ID=41226754

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008045767A Withdrawn DE102008045767A1 (de) 2008-09-04 2008-09-04 Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung

Country Status (5)

Country Link
US (1) US20120110310A1 (de)
EP (1) EP2324420A1 (de)
CN (1) CN102138127A (de)
DE (1) DE102008045767A1 (de)
WO (1) WO2010026145A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405866B1 (en) 2015-05-29 2016-08-02 International Business Machines Corporation Automating a microarchitecture design exploration environment

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120179898A1 (en) * 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
US20140258780A1 (en) * 2013-03-05 2014-09-11 Micron Technology, Inc. Memory controllers including test mode engines and methods for repair of memory over busses used during normal operation of the memory
GB2561299B (en) 2015-05-01 2019-04-03 Imagination Tech Ltd Control path verification of hardware design for pipelined process

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0352103A2 (de) 1988-07-20 1990-01-24 Digital Equipment Corporation Vernichtung von Pipelineblasen in einem Rechnersystem
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5919268A (en) * 1997-09-09 1999-07-06 Ncr Corporation System for determining the average latency of pending pipelined or split transaction requests through using two counters and logic divider
US6353805B1 (en) * 1997-12-31 2002-03-05 Intel Corporation Apparatus and method for cycle accounting in microprocessors
US20030200421A1 (en) 2002-04-18 2003-10-23 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
WO2004111838A2 (en) 2003-06-12 2004-12-23 Advanced Micro Devices, Inc. Method and data processor for reduced pipeline stalling

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913047A (en) * 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US6052802A (en) * 1997-12-31 2000-04-18 Intel Corporation Apparatus and method for cycle accounting in microprocessors
US6067644A (en) * 1998-04-15 2000-05-23 International Business Machines Corporation System and method monitoring instruction progress within a processor
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US7373557B1 (en) * 2003-04-04 2008-05-13 Unisys Corporation Performance monitor for data processing systems
US20060277395A1 (en) * 2005-06-06 2006-12-07 Fowles Richard G Processor performance monitoring
US20080177990A1 (en) * 2007-01-19 2008-07-24 Mips Technologies, Inc. Synthesized assertions in a self-correcting processor and applications thereof
US20080184012A1 (en) * 2007-01-30 2008-07-31 Nema Labs Ab Speculative Throughput Computing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0352103A2 (de) 1988-07-20 1990-01-24 Digital Equipment Corporation Vernichtung von Pipelineblasen in einem Rechnersystem
DE68924380T2 (de) * 1988-07-20 1996-06-13 Digital Equipment Corp Maynard Vernichtung von Pipelineblasen in einem Rechnersystem.
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5919268A (en) * 1997-09-09 1999-07-06 Ncr Corporation System for determining the average latency of pending pipelined or split transaction requests through using two counters and logic divider
US6353805B1 (en) * 1997-12-31 2002-03-05 Intel Corporation Apparatus and method for cycle accounting in microprocessors
US20030200421A1 (en) 2002-04-18 2003-10-23 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
WO2004111838A2 (en) 2003-06-12 2004-12-23 Advanced Micro Devices, Inc. Method and data processor for reduced pipeline stalling

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405866B1 (en) 2015-05-29 2016-08-02 International Business Machines Corporation Automating a microarchitecture design exploration environment
US9507891B1 (en) 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
US9665674B2 (en) 2015-05-29 2017-05-30 International Business Machines Corporation Automating a microarchitecture design exploration environment

Also Published As

Publication number Publication date
US20120110310A1 (en) 2012-05-03
WO2010026145A1 (de) 2010-03-11
EP2324420A1 (de) 2011-05-25
CN102138127A (zh) 2011-07-27

Similar Documents

Publication Publication Date Title
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE10297279T5 (de) Verfahren und Vorrichtung zum Durchführen von Compiler-Transformation von Softwarecode unter Verwendung von Fast-Forward-Bereichen und Wertespezialisierung
EP1794680A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
EP2962205B1 (de) Mehrkern-prozessorsystem mit fehleranalysefunktion
DE102008045767A1 (de) Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung
DE102013224137A1 (de) Anweisungs-Kategorisierung für Vorauslaufen-Operation
WO2006032585A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
DE102009050161A1 (de) Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
EP3770766A1 (de) Verfahren zum testen eines systems
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102009028871A1 (de) Verfahren zum Überprüfen eines Speichers
DE102005045904A1 (de) Datenverarbeitungseinrichtung mit Performance-Steuerung
WO2017153411A1 (de) Verfahren zum betreiben eines steuergeräts für ein kraftfahrzeug
DE102009038177B4 (de) Ablaufverfolgung in einem laufenden Computersystem
EP3388944A1 (de) Verfahren zur fehlererkennung in einem betriebssystem
EP2179356A1 (de) Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
EP2634700A1 (de) Verfahren und Entwicklungsumgebung zur Überwachung eines ablaufenden Programms
DE102022105132A1 (de) Verfahren zum Simulieren von einem Steuergeräte-Antwortverhalten in einer Produktionslinie zum Fertigen eines Kraftfahrzeugs
DE102016000213A1 (de) Steuersystem mit Funktion zur Optimierung der Steuersoftware einer numerischen Steuerung gemäß einem Bearbeitungsprogramm
EP3331740B1 (de) Verfahren zum betreiben einer steuervorrichtung und diagnosesystem
EP4199553A1 (de) Verfahren und testeinheit zur testausführung virtueller tests

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
R005 Application deemed withdrawn due to failure to request examination