DE102007051803A1 - Verfahren und Vorrichtung zur Datenverarbeitung - Google Patents

Verfahren und Vorrichtung zur Datenverarbeitung Download PDF

Info

Publication number
DE102007051803A1
DE102007051803A1 DE102007051803A DE102007051803A DE102007051803A1 DE 102007051803 A1 DE102007051803 A1 DE 102007051803A1 DE 102007051803 A DE102007051803 A DE 102007051803A DE 102007051803 A DE102007051803 A DE 102007051803A DE 102007051803 A1 DE102007051803 A1 DE 102007051803A1
Authority
DE
Germany
Prior art keywords
data processing
processing operation
progress
priority
time
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
DE102007051803A
Other languages
English (en)
Inventor
Thomas Dr. Zettler
Gunther Fenzl
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.)
Intel Germany Holding GmbH
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102007051803A priority Critical patent/DE102007051803A1/de
Priority to US12/261,264 priority patent/US20090113439A1/en
Publication of DE102007051803A1 publication Critical patent/DE102007051803A1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

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

Abstract

Es werden Verfahren und Vorrichtungen zur Datenverarbeitung bereitgestellt. Bei einem Ausführungsbeispiel wird ein Datenverarbeitungsvorgang (11) gestartet, welchem eine vorgegebene Maximaldauer (Ta) zugeordnet ist. Der Fortschritt des Datenverarbeitungsvorgangs (11) wird zu einem vorgegebenen Zeitpunkt (14) überprüft, und eine Priorität des Datenverarbeitungsvorgangs (11) wird in Abhängigkeit von dem Fortschritt des Datenverarbeitungsvorgangs (11) geändert.

Description

  • Hintergrund der Erfindung
  • Die vorliegende Erfindung betrifft Verfahren und Vorrichtungen zur Datenverarbeitung.
  • Zur Beschleunigung der Datenverarbeitung in Computersystemen werden verschiedene Ansätze verfolgt. Ein Ansatz ist das sogenannte Multithreading, bei welchem auf einem Prozessor zwischen der Verarbeitung von zwei oder mehr sogenannten Threads in kurzen Abständen umgeschaltet wird, anstatt die Threads sequenziell zu verarbeiten. Beispiele für derartiges Multithreading sind das sogenannte coarse-grained-multithreading oder das sogenannte fine-grained-multithreading. Hierdurch können Zeiten, in welchen der Prozessor oder andere Komponenten aufgrund von Wartezeiten nicht arbeiten (sogenannte Prozessor Stall Zeiträume) verringert werden und somit Ressourcen effektiver genutzt werden.
  • Durch die quasiparallele Verarbeitung mehrerer Threads auf einem Prozessor ist es jedoch schwierig, vorauszusagen, wie lange es dauert, bis die Verarbeitung eines bestimmten Threads abgeschlossen ist. Dies kann beispielsweise bei Echtzeitanwendungen problematisch sein.
  • Ein ähnliches Problem kann bei Prozessoren auftreten, welche meherere Prozessorkerne zur Verarbeitung von Daten aufweisen, wobei sich die Prozessorkerne Elemente wie z. B. Cachespeicher (Level 1 Cache, Level 2 Cache) teilen. Auch hier kann die Dauer eines Prozesses auf einem der Prozessorkerne davon abhängen, wie viel Zugriffszeit ein anderer Prozess auf einem anderen Prozessorkern auf die genannten externen Elemente benötigt, wodurch die für die Abarbeitung des Prozesses benötigte Zeit schwerer vorhersehbar ist. Auch dies kann bei Echtzeitanwendungen, bei welchem ein Prozess zu einem bestimmten Zeitpunkt beendet sein muss, problematisch sein. Ähnliches kann allgemein für Mehrprozessorsysteme gelten.
  • Es gibt daher ein Bedürfnis nach Verfahren und Vorrichtungen zur Datenverarbeitung, wobei Echtzeitdatenverarbeitungsvorgänge in Kombination mit Verfahren und Vorrichtungen zur parallelen Datenverarbeitung wie Multithreading oder Mehrprozessorsystemen mit höherer Zuverlässigkeit ausführbar sind.
  • Kurzzusammenfassung der Erfindung
  • Die Erfindung stellt Verfahren nach Anspruch 1 oder 8 und Vorrichtungen nach Anspruch 12 oder 15 bereit. Die abhängigen Ansprüche definieren weitere Ausführungsbeispiele.
  • Ein Ausführungsbeispiel eines erfindungsgemäßen Verfahrens umfasst: Starten eines Datenverarbeitungsvorgangs, wobei der Datenverarbeitungsvorgang eine vorgegebenen Maximaldauer aufweist, Überprüfen des Fortschritts des Datenverarbeitungsvorgangs zu einem vorgegebenen Zeitpunkt vor dem Ablauf der Maximaldauer, und Ändern einer Priorität des Datenverarbeitungsvorgangs in Abhängigkeit von dem Fortschritt des Datenverarbeitungsvorgangs.
  • Kurze Beschreibung der Zeichnung
  • Die Erfindung wird nachfolgend anhand von beispielhaften Ausführungsbeispielen unter Bezugnahme auf die beigefügte Zeichnung näher erläutert. Es zeigen:
  • 1 ein Diagramm zur Veranschaulichung einer Möglichkeit des Multithreadings in Ausführungsbeispielen der Erfindung,
  • 2 ein Diagramm zur Veranschaulichung eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens,
  • 3 ein Blockdiagramm eines Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung,
  • 4 ein Blockdiagramm eines weiteren Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung,
  • 5 ein Blockdiagramm eines anderen Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung,
  • 6 ein Blockdiagramm eines weiteren Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung,
  • 7 ein Blockdiagramm eines anderen Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung, und
  • 8 ein Blockdiagramm eines weiteren Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung.
  • Detaillierte Beschreibung der Erfindung
  • Im Folgenden werden Ausführungsbeispiele der Erfindung detailliert erläutert. Zuvor werden einige verwendete Begriffe definiert:
    Der Begriff „Datenverarbeitungsvorgang" umfasst im Rahmen dieser Anmeldung jede Art von Datenverarbeitungsvorgang, beispielsweise einen Thread in einem Multithreadingsystem, einen auf einem Prozessor oder Prozessorkern ablaufenden Datenverarbeitungsprozess oder Task, beispielsweise ein Task eines Multitaskingsystems, oder Zugriffe auf Elemente eines Datenverarbeitungssystems wie Speicher oder Bussysteme.
  • Der Begriff „parallel" bzw. „parallele Verarbeitung" in Bezug auf Datenverarbeitungsvorgänge umfasst sowohl tatsächlich parallele Verarbeitung mit mehreren Prozessorkernen oder Prozessoren als auch quasiparallele Verarbeitung wie beispielsweise beim Multithreading, bei dem in schneller Folge zwischen mehreren Threads umgeschaltet wird.
  • Eine „Priorität" eines Datenverarbeitungsvorgangs gibt bei der parallelen Verarbeitung von mehreren Datenverarbeitungsvorgängen an, welche Datenverarbeitungsvorgänge bevorzugt gegenüber anderen Datenverarbeitungsvorgängen bearbeitet werden. Eine hohe Priorität bedeutet dabei eine bevorzugte Verarbeitung gegenüber einer niedrigen Priorität. Es ist zu bemerken, dass, wenn die Priorität beispielsweise mit Ziffern oder Zahlen ausgedrückt wird, je nach System beispielsweise auch eine niedrige Ziffer oder Zahl eine hohe Priorität in diesem Sinn und eine hohe Ziffer oder Zahl eine niedrige Priorität bedeuten kann.
  • „Datenverarbeitungssystem" bezieht sich im Rahmen dieser Anmeldung auf jede Art von Datenverarbeitungssysteme, beispielsweise Computer wie Heimcomputer oder Großrechner, aber auch Rechner oder Logikschaltungen, welche z. B. auf Basis von anwendungsspezifischen Bausteinen (ASICS) aufgebaut sind.
  • Im Folgenden werden zunächst Ausführungsbeispiele der Erfindung beschrieben, bei welchen beispielsweise auf einem sogenannten Multithreadingprozessor mehrere Threads unter Verwendung von Multithreading ausgeführt werden. Ein derartiges Multithreading ist in beispielhafter Weise in 1 dargestellt.
  • In 1 ist allgemein mit Bezugszeichen 13 gekennzeichnet schematisch die Verarbeitung von zwei Threads in Zeitschritten dargestellt, wobei jeder Zeitschritt durch ein Kästchen repräsentiert ist. Ein derartiger Zeitschritt kann ein oder mehrere Taktzyklen eines entsprechenden Multithreadingprozessors umfassen.
  • Bei dem dargestellten Beispiel werden zwei Threads ausgeführt, wobei ein erster Thread mit dem Bezugszeichen 11 und ein zweiter Thread mit dem Bezugszeichen 12 gekennzeichnet ist. Bei dem dargestellten Beispiel werden die Threads 11, 12 zu einem Zeitpunkt gestartet, welcher durch eine senkrechte Linie 15 gekennzeichnet ist.
  • Mit Bezugszeichen 10 sind Zeitschritte gekennzeichnet, in welchem der Prozessor weder den ersten Thread 11 noch den zweiten Thread 12 ausführt, beispielsweise weil auf Ereignisse wie Speicherzugriffe, Ergebnisse von anderen Einheiten, Eingaben und dergleichen gewartet werden muss (sogenannte Stall-Zeiträume).
  • Wie in 1 zu sehen wird beim Multithreading zwischen den Threads 11 und 12 umgeschaltet. Das Umschalten kann bei Ausführungsbeispielen der Erfindung beispielsweise abhängig von einer Priorität der Threads und/oder abhängig von einer Zeit seit dem letzten Ausführen des Threads geschehen. Haben zwei Threads die gleiche Priorität, können sie beispielsweise abwechselnd ausgeführt werden. Hat ein Thread eine höhere Priorität als ein anderer Thread, wird er häufiger als der andere Thread ausgeführt. Beispielsweise kann jedem Thread ein Prioritätswert zugewiesen sein, und zu diesem Prioritätswert kann die Zeit seit der letzten Ausführung des Threads addiert werden. Der Thread mit dem höheren Gesamtwert wird dann in dem nächsten Zeitschritt ausgeführt. Beim Umschalten kann zudem berücksichtigt werden, ob für die Ausführung eines Threads benötigte Ressourcen zur Verfügung stehen.
  • Bei dem in 15 gezeigten Beispiel ist beispielsweise Thread 11 ein Echtzeitthread, welcher innerhalb eines Zeitraums Ta, d. h. bis zu dem durch eine senkrechte gestrichelte Linie 17 gekennzeichneten Zeitpunkt, beendet sein muss, um die Echtzeitverarbeitung zu gewährleisten. Bei dem dargestellten Beispiel ist der Thread 11 nach einer Zeit T1, d. h. bis zu einem Zeitpunkt 16, welcher vor dem Zeitpunkt 17 liegt, beendet, so dass keine Echtzeitverletzung auftritt.
  • Als Vergleich ist allgemein mit 50 bezeichnet in der unteren Hälfte der 5 eine sequentielle Verarbeitung der Threads 11, 12 dargestellt, wobei zunächst der Thread 11 und dann der Thread 12 ausgeführt wird. Die Zeit T1' zur Ausführung des Threads 11 ist hier kürzer, allerdings werden innerhalb des Zeitraums Ta aufgrund von mehr Stall-Zeiträumen 10 weniger Schritte des Threads 12 ausgeführt, so dass bei dem dargestellten Beispiel die sequentielle Verarbeitung länger dauert als das Multithreading.
  • Zu bemerken ist, dass zur Vereinfachung in 1 lediglich zwei Threads dargestellt wurden. Derartiges Multithreading ist jedoch auch mit mehr als zwei Threads, zwischen denen umgeschaltet wird, möglich.
  • Bei dem Beispiel von 1 ist die Zeit T1 zur Ausführung des Threads 11 auch von dem Thread 12 oder allgemein von anderen Threads abhängig, so dass abhängig von der Ausführung anderer Threads ohne weitere Maßnahmen die Zeit T1 auch die Zeit Ta übersteigen kann, so dass eine Echtzeitverletzung auftritt.
  • In 2 ist ein Diagramm zur Veranschaulichung eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens, welches auf derartigem Multithreading basiert, schematisch dargestellt. Elemente, welche Elementen der 1 entsprechen, sind mit den gleichen Bezugszeichen wie in 1 gekennzeichnet.
  • Bei dem in 2 veranschaulichten Ausführungsbeispiel des erfindungsgemäßen Verfahrens wird bei der Ausführung eines Echtzeitthreads, welcher zur Vermeidung von Echtzeitverletzungen innerhalb eines Zeitraums Ta abzuarbeiten ist, nach einer Zeit Tw, Tw < Ta, der Fortschritt des Threads überprüft. Bei einem Ausführungsbeispiel wird dabei beispielsweise überprüft, ob eine vorgegebene Zahl von Instruktionen oder Programmschritten des Echtzeitthreads abgearbeitet sind. Wenn dies nicht der Fall ist, wird die Priorität des Echtzeitthreads erhöht, so dass dieser bevorzugt ausgeführt wird. Dieser Vorgang ist in 2 beispielhaft dargestellt. Thread 11 ist dabei ein Echtzeitthread, welcher zu einem Zeitpunkt 15 gestartet wird und bis zu einem Zeitpunkt 17 innerhalb einer Zeit Ta abzuarbeiten ist. Der Thread 11 benötigt zu seiner Ausführung dabei 6 jeweils durch Kästchen gekennzeichnete Zeitschritte. Bei dem dargestellten Beispiel entspricht die Zeit Ta dreizehn derartigen Zeitschritten.
  • Parallel zu dem Thread 11 wird wie bereits unter Bezugnahme auf 1 erläutert ein Thread 12 ausgeführt. Bei dem Beispiel entspricht die vorgegebene Zeit Tw, nach welcher der Fortschritt des Echtzeitthreads überprüft wird, zehn Zeitschritten. Der Fortschritt des Threads 11 wird also zu dem mit Pfeil 14 gekennzeichneten Zeitpunkt überprüft.
  • Bei dem dargestellten Beispiel wird nach der Zeitdauer Tw beispielsweise überprüft, ob bereits eine Anzahl von Instruktionen des Tasks 11 ausgeführt sind, welche fünf Zeitschritten entsprechen. Da bei dem dargestellten Beispiel zu diesem Zeitpunkt erst vier Zeitschritte des Task 11 ausgeführt wurden, wird die Priorität des Threads 11 erhöht, so dass nach dem durch den Pfeil 14 gekennzeichneten Zeitpunkt der Thread 11 wie dargestellt bevorzugt ausgeführt wird. Hiermit wird erreicht, dass der Thread 11 zum Zeitpunkt 16, welcher in diesem Fall dem Zeitpunkt 17 entspricht, vollständig abgearbeitet ist, so dass die vorgegebene maximale Bearbeitungszeit Ta eingehalten wird und keine Echtzeitverletzung auftritt.
  • Die unter Bezugnahme auf 2 gegebenen Zahlenbeispiele für die Zeiten Ta, Tw sowie für die Anzahl von Instruktionen, welche nach Ablauf von Tw abgearbeitet sein müssen, sind selbstverständlich lediglich als veranschaulichendes Beispiel zu verstehen und können insbesondere in Abhängigkeit von den jeweils betrachteten Threads gewählt werden.
  • Bei dem oben unter Bezugnahme auf 2 erläuterten Ausführungsbeispiel wird der Fortschritt eines Threads nach einer Zeit Tw nach Start des Threads überprüft. Bei einem anderen Ausführungsbeispiel kann eine derartige Überprüfung zu mehreren Zeitpunkten geschehen. Bei noch einem anderen Ausführungsbeispiel können die Zeitpunkte, zu welchen eine Überprüfung stattfindet, in Abhängigkeit von dem spätesten gestatteten Ende des Threads, d. h. dem Ablauf der Zeit Ta bestimmt werden, beispielsweise eine vorgegebene Anzahl von Zeitschritten vor dem Zeitpunkt 17, welcher in Figur den Ablauf der Zeit Ta kennzeichnet.
  • In 3 ist ein Blockdiagramm eines Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung dargestellt, mit welcher beispielsweise das oben unter Bezugnahme auf 2 erläuterte Ausführungsbeispiel eines erfindungsgemäßen Verfahrens, aber auch andere erfindungsgemäße Verfahren realisiert werden können. Das in 3 dargestellte Ausführungsbeispiel stellt dabei einen Teil eines Datenverarbeitungssystems dar, bei welchem Komponenten über einen Bus 20 verbunden sind. Die in 3 dargestellte Vorrichtung umfasst einen Multithreadingprozessor 22, eine Prioritätseinheit 21, einen Instruktionszähler 23, eine Interrupteineheit 24 und einen Timer 25, welche jeweils über den Bus kommunizieren. Weiterhin kann bei dem dargestellten Ausführungsbeispiel wie durch Pfeile veranschaulicht der Timer 25 direkt mit der Interrupteinheit 24, die Interrupteinheit 24 direkt mit dem Multithreadingprozessor 23 und die Prioritätseinheit 21 ebenfalls direkt, d. h. ohne den Bus 20 zu benutzen, mit dem Multithreadingprozessor 22 kommunizieren. Ein Datenverarbeitunssystem, welches die in 3 dargestellte Vorrichtung umfasst, kann bei einem Ausführungsbeispiel weitere (nicht dargestellte) Komponenten wie Speicher, Schnittstellen und dergleichen umfassen, welche bei einem Ausführungsbeispiel ebenfalls über den Bus 20 kommunizieren.
  • Auf dem Multithreadingprozessor 22 können zwei oder mehr Threads parallel verarbeitet werden, wie dies unter Bezugnahme auf 1 bereits erläutert wurde. Dabei können verschiedene Arten des Multithreadings wie beispielsweise coarse-grained-multithreading, fine-grained-multithreading oder simultaneous multithreading zum Einsatz kommen. Der Multithreadingprozessor 22 weist den integrierten Instruktionszähler 23 auf, welcher zählt, wie viele Instrutionen eines Threads bereits abgearbeitet sind.
  • Die Abfolge der Bearbeitung der Threads (scheduling) wird bei dem Ausführungsbeispiel in Abhängigkeit von Prioritäten der einzelnen Threads durch die Prioritätseinheit 21 gesteuert.
  • Bei dem Ausführungsbeispiel der 3 wird beim Start eines Echtzeitthreads der Timer 25 gestartet. Nach Ablauf einer vorgegebenen Zeit, beispielsweise der Zeit Tw aus 2, steuert der Timer 25 die Interrupteinheit 24 an, einen Interrupt an den Multhithreadingprozessor 22 auszulösen. In einer entsprechenden Interruptroutine (Interrupthandler) wird dann der Wert des Instruktionszählers für den Echtzeitthread mit einem vorgegebenen Wert von Instruktionen verglichen. Wenn die Anzahl der bereits abgearbeiteten Instruktionen kleiner als der vorgegebene Wert ist, wird die Priorität des Echtzeitthreads erhöht, indem der Multithreadingprozessor 22 der Prioritätseinheit 22 einen entsprechend höheren Wert mitteilt.
  • Der Instruktionszähler 23 kann dabei ein bereits in dem Multithreadingprozessor 22 ohnehin vorhin vorhandener Instruktionszähler sein. Bei einem anderen Ausführungsbeispiel ist der Instruktionszähler als Programmroutine realisiert, welcher mittels eines in dem Mulithreadingprozessor 22 vorhandenen Programmzählers (program counter) die Anzahl der Instruktionen berechnet. Bei wieder einem anderen Ausführungsbeispiel kann der Instruktionszähler 23 vollständig als Programmroutine implementiert sein.
  • In 4 ist ein Blockdiagramm eines weiteren Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung dargestellt. Elemente der Vorrichtung von 4, welchen Elemente der 3 entsprechen, sind mit den gleichen Bezugszeichen gekennzeichnet.
  • Die in 4 dargestellte Vorrichtung umfasst einen Bus 20, eine Prioritätseinheit 21, einen Multithreadingprozessor 22 und einen Instruktionszähler 23, welche den entsprechenden Elementen aus 3 entsprechen und daher nicht erneut beschrieben werden. Des Weiteren umfasst die in 4 dargestellte Vorrichtung einen Multithreadingüberwachungstimer 30. Der Multithreadingüberwachungstimer 30 weist einen Speicher 31 auf, um einen Wert der einem Thread, z. B. einem Echtzeitthread, zugeordneten Zeit Tw, nach der der Fortschritt des Threads überprüft wird, zu speichern, und einen Speicher 32, um einen Vergleichswert X zu speichern, welcher den bereits erwähnten vorgegebenen Wert, d. h. der Anzahl der Instruktionen, welche bis zur Zeit Tw abgearbeitet sein sollen, entspricht. Die Speicher 31 und 32 können bei einem Ausführungsbeispiel als gemeinsamer Speicher realisiert sein. Bei noch einem anderen Ausführungsbeispiel können diese Werte in einem (nicht dargestellten) allgemeinen Speicher gespeichert sein, auf welchen der Multithreadingüberwachungstimer Zugriff hat.
  • Der Multithreadingüberwachungstimer wird bei dem Ausführungsbeispiel der 4 beim Start eines Echtzeitthreads gestartet und greift nach Ablauf der Zeit Tw auf den Instruktionszähler 23 zu, um die Anzahl der abgearbeiteten Instruktionen des Threads mit dem Vegleichswert X zu vergleichen. Ist die Anzahl der abgearbeiteten Instruktionen kleiner als X, schreibt bei der Vorrichtung aus 4 der Multithreadingüberwachungstimer 30 direkt eine höhere Priorität für den Thread auf die Prioritätseinheit 21, so dass die Priorität des Echtzeitthreads erhöht wird und der Thread somit bevorzugt abgearbeitet wird.
  • Bei den Ausführungsbeispielen der 3 und 4 wird jeweils ein einzelner Thread, z. B. ein Echtzeitthread, behandelt. Selbstverständlich kann statt eines Echtzeitthreads auch ein anderer Thread, welcher bevorzugt innerhalb einer gewissen Zeitdauer abgearbeitet werden soll, behandelt werden. Bei einem anderen Ausführungsbeispiel werden mehrere Threads, beispielsweise Echtzeitthreads, überwacht. Hierzu können beispielsweise bei einem aus dem Ausführungsbeispiel von 4 basierenden Ausführungsbeispiel in dem Speicher 31 für jeden Thread eine Zeit Tw und in dem Speicher 32 für jeden Thread einen Vergleichswert X abgelegt werden, wobei die einzelnen Zeiten Tw bzw. die einzelnen Vergleichswerte X gleich oder teilweise oder ganz unterschiedlich sein können.
  • Bei einem anderen Ausführungsbeispiel werden zusätzlich oder alternativ für einen einzelnen Thread mehrere Zeiten Tw und entsprechend mehrere Vergleichswerte X gespeichert, so dass der Fortschritt des Threads zu mehreren Zeiten Tw überprüft wird und abhängig von einem Vergleich der abgearbeiteten Instruktionen mit dem jeweiligen Wert X die Priorität erhöht wird.
  • Bei noch einem anderen Ausführungsbeispiel wird zusätzlich oder alternativ für jede Zeit Tw ein Vergleichswert Y vorgegeben, welcher beispielsweise bei einem auf dem Ausführungsbeispiel der 4 basierenden Ausführungsbeispiel ebenfalls in dem Speicher 32 gespeichert wird. Bei diesem Ausführungsbeispiel wird, wenn die Anzahl der abgearbeiteten Instruktionen des Threads zum Zeitpunkt Tw den Wert Y übersteigt, die Priorität des Threads erniedrigt. Bei einem Ausführungsbeispiel ist dabei für den jeweiligen Wert Tw Y größer als X, wobei bei einem anderen Ausführungsbeispiel Y auch gleich X kann.
  • Wie unter Bezugnahme auf 4 erläutert, steuert die Prioritätseinheit 21 die Abfolge bzw. Auswahl der Bearbeitung der Threads auf dem Multithreadingprozessor 22. Bei einem anderen Ausführungsbeispiel kann die Prioritätseinheit 21 zusätzlich oder alternativ Zugriffe auf weitere Einheiten, beispielsweise einem Cachespeicher des Multithreadingprozessors 22 oder einen externen Speicher regeln. Beispielsweise kann für einen Thread niedriger Priorität ein Bereich eines Cachespeichers gesperrt werden, so dass Threads höherer Priorität, welche auf den gesamten Cachespeicher Zugriff haben, bevorzugt werden.
  • In 5 ist ein weiteres Ausführungsbeispiel einer erfindungsgemäßen Vorrichtung dargestellt, welche wie die Ausführungsbeispiele von 3 und 4 als Teil eines Datenverarbeitungssystems implementiert sein kann.
  • Das in 5 dargestellte Ausführungsbeispiel ist ein Mehrprozessorsystem umfassend einen ersten Prozessor 41 und einen zweiten Prozessor 43. Andere Ausführungsbeispiele können auch mehr als zwei Prozessoren umfassen. Dem ersten Prozessor 41 ist ein erster Instruktionszähler 42 zugeordnet, und dem zweiten Prozessor 43 ist ein zweiter Instruktionszähler 44 zugeordnet. Die Instruktionszähler 42, 44 können jeweils wie bereits unter Bezugnahme auf 3 für den Instruktionszähler 23 erläutert implementiert sein und zählen eine Anzahl von abgearbeiteten Instruktionen eines auf den jeweils zugeordneten Prozessor bzw. 43 laufenden Prozesses oder Task.
  • Den Prozessoren 41 und 43 ist gemeinsame Hardware 46, beispielsweise ein gemeinsamer Level 2 Cache, gemeinsame Schnittstellen etc. zugeordnet. Die Hardware 46 kann auch einen durch die Prozessoren 41 und 43 gemeinsam genutzten Bus oder jede andere Art gemeinsam genutzter Hardware umfassen. Der Zugriff der Prozessoren 41 und 43 auf die Hardware 46 wird durch eine Prioritätseinheit 47 geregelt. Beispielsweise kann den auf den Prozessoren 41, 43 laufenden Prozessen jeweils ein Prioritätswert zugeordnet werden, und der Prozessor, auf welchem der Prozess mit höherer Priorität läuft, darf beispielsweise häufiger auf die Hardware 46 zugreifen. Im Falle eines Cache-Speichers darf bei einem Ausführungsbeispiel ein Datenverarbeitungsvorgang mit höherer Priorität auf größere Speicherbereiche zugreifen als ein Datenverarbeitungsvorgang mit niedriger Priorität. Im Falle eines Bussystems erhöht bei einem Ausführungsbeispiel eine höhere Priorität die Wahrscheinlichkeit der Zugriffserlaubnis auf den Bus. Andere Möglichkeiten sind ebenso denkbar, beispielsweise können die bereits unter Bezugnahme auf 24 diskutierten Möglichkeiten zur Prioritätssteuerung für mehrere Threads in Multithreadprozessoren in entsprechender Weise auf den Zugriff auf die Hardware 46 durch verschiedene auf den Prozessoren 41, 43 laufende Prozesse übertragen werden.
  • Die Komponenten der in 5 gezeigten Vorrichtung sind über ein Bussystem 40 miteinander und gegebenenfalls mit weiteren (nicht dargestellten) Komponenten wie Speichern, Schnittstellen und dergleichen verbunden.
  • Auf dem ersten Prozessor 41 und/oder dem zweiten Prozessor 43 kann bei dem Ausführungsbeispiel der 5 ein Echtzeitprozess oder anderer Prozess laufen, welcher in einer vorgegebenen Zeit abgearbeitet werden soll. Zur Überwachung des Fortschritts derartiger Prozesse weist die in 5 dargestellte Vorrichtung einen Überwachungstimer 45 auf. Der Überwachungstimer weist einen Speicher 48 zum Speichern von Zeitdauern Tw1 für den ersten Prozessor 41 und Tw2 für den zweiten Prozessor 43 auf. Des Weiteren umfasst der Überwachungstimer 45 bei dem dargestellten Ausführungsbeispiel einen Speicher 49 zum Speichern eines Vergleichswerts X1 für den ersten Prozessor 41 und eines Vergleichswerts X2 für den zweiten Prozessor 43. Beim Start beispielsweise eines Echtzeitprozesses auf dem ersten Prozessor 41 wird der Überwachungstimer 45 durch den Instruktionszähler 42 über den Start informiert. Nach Ablauf der Zeit Tw1 fragt der Überwachungstimer 45 den ersten Instruktionszähler 42 ab und vergleicht die Anzahl der abgearbeiteten Instruktionen mit dem Vergleichswert X1. Wenn die Anzahl der abgearbeiteten Instruktionen kleiner als X1 ist, teilt der Überwachungstimer 45 der Prioritätseinheit 47 mit, dass die Priorität des ersten Prozessors 41 bzw. des auf den ersten Prozessor 41 laufenden Prozesses erhöht werden soll, beispielsweise durch Schreiben einer höheren Priorität auf die Prioritätseinheit 47. In entsprechender Weise kann der Überwachungstimer 45 einen auf den zweiten Prozessor 43 laufenden Prozess überwachen, wobei hierzu die Zeitdauer Tw2 und der Vergleichswert X2 verwendet werden.
  • Bei den Ausführungsbeispielen der 25 wird nach Ablauf einer vorgegebenen Zeit bzw. zu bestimmten Zeitpunkten die der Fortschritt eines Datenverarbeitungsvorgangs überprüft, beispielsweise indem eine Anzahl von abgearbeiteten Instruktionen mit einem vorgegebenen Schwellenwert verglichen wird. Bei einem anderen Ausführungsbeispiel wird der Fortschritt eines Datenverarbeitungsvorgangs relativ zu dem Fortschritt eines anderen Datenverarbeitungsvorgangs überprüft, und Prioritäten der Datenverarbeitungsvorgänge werden entsprechend angepasst.
  • Ein derartiges Ausführungsbeispiel ist in 6 dargestellt. Elemente des Ausführungsbeispiels von 6, welche Elementen des Ausführungsbeispiels von 5 entsprechen, tragen die gleichen Bezugszeichen und werden nicht nochmals detailliert erläutert. So umfasst das in 6 dargestellte Ausführungsbeispiel wie das Ausführungsbeispiel von 5 einen Bus 40, einen ersten Prozessor 41, einen dem ersten Prozessor zugeordneten ersten Instruktionszähler 42, einen zweiten Prozessor 43, einen dem zweiten Prozessor 43 zugeordneten zweiten Instruktionszähler 44 sowie Hardware 46 wie einen Cache-Speicher, auf welchen der erste Prozessor 41 und der Prozessor 43 gemeinsam zugreifen, wobei die Zugriffsdauer bzw. -zeiten der Prozessoren 41, 43 prioritätsgesteuert verwaltet werden.
  • Für diese Prioritätssteuerung umfasst die Vorrichtung aus 6 eine Prioritätseinheit 60. Bei dem Ausführungsbeispiel von 6 liest die Prioritätseinheit 60 den ersten Instruktionszähler 42 und den zweiten Instruktionszähler 44, d. h. eine Anzahl N1 von abgearbeiteten Instruktionen eines Prozesses auf dem ersten Prozessor 41 und eine Anzahl N2 von abgearbeiteten Instruktionen eines Prozesses auf dem zweiten Prozessor 43, aus. In Abhängigkeit von N1 und N2 werden dann die Prioritäten des Prozesses auf den ersten Prozessor 41 und des zweiten Prozessors 43 verändert.
  • Bei einem Ausführungsbeispiel kann beispielsweise jeweils derjenige Prozess, bei welchem weniger Instruktionen abgearbeitet sind, die höhere Priorität erhalten. So kann näherungsweise eine gleiche Verarbeitungsgeschwindigkeit erzielt werden.
  • Ebenso ist es bei einem anderen Ausführungsbeispiel möglich, das Verhältnis N1/N2 auf einen beliebigen Wert c zu regeln. Bei einem Ausführungsbeispiel der Erfindung wird hierzu das Verhältnis N1/N2 mit c verglichen. Wenn N1/N2 größer als c ist, wird die Priorität des Prozesses auf dem zweiten Prozessor 43 erhöht, und wenn N1/N2 kleiner als c ist, wird die Priorität des Prozesses auf den ersten Prozessor 41 erhöht.
  • Bei einem anderen Ausführungsbeispiel kann auch ein anderer Wert als das Verhältnis von N1 und N2 auf einen konstanten Wert geregelt werden, in allgemeiner Form f(N1, N2) = c, wobei f eine beliebige funktionale Abhängigkeit ausdrückt.
  • In einem weiteren Ausführungsbeispiel kann auch die Zeit t mit berücksichtigt werden, beispielsweise ein von einem (nicht gezeigten) in der Prioritätseinheit 60 oder einem anderen Element der Vorrichtung integrierten Timer gelieferter Zeitwert. In allgemeiner Form können bei einem Ausführungsbeispiel die Prioritäten der Prozesse derart geregelt werden, dass f(t, N1, N2) = c. Durch eine derartige Abhängigkeit kann beispielsweise während eines ersten Zeitabschnitts ein Prozess auf dem ersten Prozessor 41 bevorzugt werden, während in einem darauf folgenden zweiten Zeitabschnitt ein Prozess auf dem zweiten Prozessor 2 bevorzugt wird, d. h. die Prioritäten so geregelt werden, dass mehr Instruktionen des jeweils bevorzugten Prozesses abgearbeitet werden.
  • Bei dem Ausführungsbeispiel von 6 steuert die Prioritätseinheit 60 den Zugriff bzw. die Benutzung von Hardware 46, auf welche der erste Prozessor 41 und der zweite Prozessor 43 direkt zugreifen. Bei einem anderen Ausführungsbeispiel wird eine derartige Prioritätseinheit eingesetzt, um den Zugriff auf weitere Hardware über den Bus 40 zu steuern. Ein entsprechendes Ausführungsbeispiel ist in 7 dargestellt.
  • Bei dem Ausführungsbeispiel von 7 entsprechen der erste Prozessor 41, der erste Instruktionszähler 42, der zweite Prozessor 43 und der zweite Instruktionszähler 44 wie der Bus 40 den bereits unter Bezugnahme auf 5 und 6 beschriebenen Komponenten, diese werden daher nicht nochmals erläutert.
  • Bei dem Ausführungsbeispiel von 7 ist dem ersten Prozessor 41 ein Cache-Master 67 zugeordnet, und dem zweiten Prozessor 43 ist ein Cache-Master 68 zugeordnet.
  • Bei dem Ausführungsbeispiel von 7 ist weiterhin ein Speicher 66 mit dem Bus 40 verbunden. Der Speicher 46 kann beispielsweise ein externes SDRAM, ein Flash-Speicher oder auch ein internes SRAM sein. Der Zugriff der Prozessoren 41, 43, gegebenenfalls über die Cache-Master 67 bzw. 68, über den Bus 40 auf den Speicher 66 wird von einer Prioritätseinheit 65 geregelt, welche den ersten Instruktionszähler 42 und den zweiten Instruktionszähler 44 ausliest und davon abhängig die Priorität der entsprechenden Prozesse auf dem ersten Prozessor 41 und dem zweiten Prozessor 43 für den Speicherzugriff auf den Speicher 66 verändert. Dies kann wie bereits unter Bezugnahme auf 6 für die Prioritätseinheit 60 erläutert geschehen.
  • Die Ausführungsbeispiele der 57 umfassen jeweils einen ersten Prozessor 41 und einen zweiten Prozessor 43. Bei einem anderen Ausführungsbeispiel der Erfindung können auch mehr als zwei Prozessoren vorgesehen sein. Zudem kann bei einem Ausführungsbeispiel eine Prioritätseinheit den Zugriff auf verschiedene Komponenten steuern. Ein entsprechendes Ausführungsbeispiel, welches diese beiden Aspekte kombiniert, ist in 8 dargestellt.
  • Bei dem Ausführungsbeispiel der 8 entsprechen der Bus 40, der erste Prozessor 41, der erste Instruktionszähler 42, der zweite Prozessor 43, der zweite Instruktionszähler 44 und die Hardware 46 den bereits unter Bezugnahme auf 5 und 6 beschriebenen Komponenten. Die Hardware 46 kann insbesondere ein Cache-Speicher sein, auf welchen der erste Prozessor 41 und der zweite Prozessor 43 gemeinsam zugreifen.
  • Des Weiteren umfasst das Ausführungsbeispiel der 8 einen Speicher 66 wie unter Bezugnahme auf 7 beschrieben.
  • Zudem umfasst das Ausführungsbeispiel von 8 einen dritten Prozessor 71 mit einem dritten Instruktionszähler 72. Eine Prioritätseinheit 70 liest den ersten Instruktionszähler 42, den zweiten Instruktionszähler 44 und den dritten Instruktionszähler 42 auf und steuert hiervon abhängig den Zugriff des ersten Prozessors 41 und des zweiten Prozessors 43 auf die Hardware 46 sowie den Zugriff der Prozessoren 41, 43 und 71 auf den Speicher 66. Bei einem Ausführungsbeispiel wird der Zugriff auf die Hardware 46 wie unter Bezugnahme auf 6 beschrieben gesteuert. Zur Steuerung des Zugriffs auf den Speicher 66 kann das unter Bezugnahme auf 6 und 7 beschriebene Verfahren dahingehend erweitert werden, dass auch eine Anzahl von abgearbeiteten Instruktionen N3 eines auf dem dritten Prozessor 71 laufenden Prozesses einbezogen wird, d. h. eine Funktion g(N1, N2, N3) auf einen vorgegebenen Wert c geregelt wird, wobei die Funktion g zusätzlich von der Zeit abhängen kann.
  • Die vorliegende Erfindung ist nicht auf die dargestellten Ausführungsbeispiele begrenzt. Beispielsweise können auch mehr als drei Prozessoren vorhanden sein. In ähnlicher Weise können bei den Ausführungsbeispielen der 24 auch mehr als zwei Threads auf einem Multithreadingprozessor verwaltet werden.
  • Die unter Bezugnahme auf die 3 und 4 diskutierten Erweiterungen und Modifikationen können auch in den Ausführungsbeispielen der 58 implementiert werden. Beispielsweise kann ein auf dem ersten Prozessor 41 laufender Prozess und/oder ein auf dem zweiten Prozessor 43 laufender Prozess zu mehreren Zeitpunkten entsprechend mehreren Zeiten Tw1 mit entsprechend zugeordneten Vergleichswerten X1 auf seinen Fortschritt hin überprüft werden, wodurch gegebenenfalls die Priorität des Prozessors bzw. des darauf laufenden Prozesses mehrmals erhöht wird. Auch ein Vergleich mit zusätzlichen Vergleichswerten Y1, Y2 entsprechend dem bereits diskutierten Vergleichswert Y kann bei einem Ausführungsbeispiel realisiert werden, wobei, wenn die Anzahl der abgearbeiteten Instruktionen den entsprechenden Wert Y1 bzw. Y2 übersteigt, die Priorität entsprechend erniedrigt wird. Grundsätzlich kann bei einem anderen Ausführungsbeispiel der Erfindung auch nur überprüft werden, ob die Anzahl der abgearbeiteten Instruktionen eines Datenverarbeitungsvorgangs einen vorgegebenen Wert übersteigt und falls ja die Priorität des datenverarbeitenden Vorgangs herabgesetzt werden.
  • Bei den Ausführungsbeispielen der 35 sind verschiedene Einheiten durch verschiedene Blöcke in den Figuren dargestellt. Diese Einheiten oder Blöcke können in getrennten Bausteinen implementiert sein, können aber ebenso auf gemeinsamen Chips oder in gemeinsamen Bausteinen integriert sein. Beispielsweise kann die Prioritätseinheit 21 der 3 und 4 in dem Multithreadingprozessor 22 der 3 und 4 integriert sein. Auch die Überwachungstimer 30, 45 können in einem der Prozessoren der jeweiligen Vorrichtung integriert sein, sie können jedoch ebenso als eigenständige Bausteine, welche mit verschiedenen Prozessoren verwendet werden können, realisiert sein. Auch können die Prozessoren 41, 43 der Ausführungsbeispiele der 58 als getrennte Prozessoren realisiert sein, sie können jedoch ebenso verschiedene Prozessorkerne eines Mehrkernprozessors darstellen. Auch weitere Modifikationen sind denkbar.
  • Beispielsweise können die Ausführungsbeispiele der 3 und 4 mit einem der Ausführungsbeispiele der 58 kombiniert werden, indem ein oder mehrere der Prozessoren 41, 43 und 71 als Multithreadingprozessoren wie der Multithreadingprozessor 22 aus 4 ausgestaltet sind. In diesem Fall können durch ein oder mehrere Prioritätseinheiten sowohl der Zugriff der Prozessoren auf die Hardware 46 als auch die Priorität der verschiedenen auf einem Prozessor laufenden Threads gesteuert werden, und durch ein oder mehrere Überwachungstimer oder auch durch eine Lösung wie in 3 dargestellt können die Threads, z. B. Echtzeitthreads, überwacht werden. Auch kann statt des Überwachungstimers 45 in 5 eine Kombination aus einem Timer und einer Interrupteinheit wie in 3 dargestellt implementiert sein. Bei einem anderen Ausführungsbeispiel kann ein Überwachungstimer wie in 5 dargestellt mit einer Prioritätseinheit wie in den 68 erläutert kombiniert werden. Beispielsweise kann bei einem Ausführungsbeispiel ähnlich dem in 8 dargestellten Ausführungsbeispiel der Zugriff des ersten Prozessors 41 und des zweiten Prozessors 43 auf die Hardware 46 mittels eines Überwachungstimers wie dem Überwachungstimer 45 aus 5 gesteuert werden, während der Zugriff auf dem Speicher 66 nur über eine Prioritätseinheit gesteuert wird, welche die jeweiligen Instruktionszähler der Prozessoren ausliest.
  • Auch im Übrigen ist die vorliegende Erfindung nicht auf die dargestellten Ausführungsbeispiele begrenzt, welche lediglich zur Veranschaulichung der Erfindung dienen.
  • 10
    Prozessor Stall
    11
    Echtzeitthread
    12
    Thread
    13
    Multithreading
    14
    Pfeil
    15
    Startzeit
    16
    Endzeit
    17
    Ablauf der Maximaldauer
    20
    Bus
    21
    Prioritätseinheit
    22
    Multithreadingprozessor
    23
    Instruktionszähler
    24
    Interrupteinheit
    25
    Timer
    30
    Multithreadingüberwachungstimer
    31
    Speicher
    32
    Speicher
    40
    Bus
    41
    Prozessor
    42
    Instruktionszähler
    43
    Prozessor
    44
    Instruktionszähler
    45
    Überwachungseinheit
    46
    Hardware
    47
    Prioritätseinheit
    48
    Speicher
    49
    Speicher
    50
    sequentielle Verarbeitung
    52
    Zeitablauf
    60
    Prioritätseinheit
    65
    Prioritätseinheit
    66
    Speicher
    67
    Cache Master
    68
    Cache Master
    70
    Prioritätseinheit
    71
    Prozessor
    72
    Instruktionszähler
    Ta
    Maximaldauer
    T1, T1'
    Dauer

Claims (21)

  1. Verfahren zur Verarbeitung von Daten, umfassend: Starten eines Datenverarbeitungsvorgangs (11), wobei dem Datenverarbeitungsvorgang eine vorgegebene Maximaldauer (Ta) zugeordnet ist, Überprüfen des Fortschritts des Datenverarbeitungsvorgangs zu einem vorgegebenen Zeitpunkt (14) vor dem Ablauf der Maximaldauer (Ta), und Ändern einer Priorität des Datenverarbeitungsvorgangs (11) in Abhängigkeit von dem Fortschritt des Datenverarbeitungsvorgangs (11).
  2. Verfahren nach Anspruch 1, wobei der Datenverarbeitungsvorgang ausgewählt ist aus der Gruppe umfassend einen Thread (11) in einem Multithreadingsystem, einen Prozess in einem Multiprozessorsystem und einen Task in einem Multiprozessorsystem.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Überprüfen des Fortschritts des Datenverarbeitungsvorgangs einen Vergleich einer Anzahl von abgearbeiteten Instruktionen des Datenverarbeitungsvorgangs mit mindestens einem vorgegebenen Vergleichswert (X, X1, X2) umfasst.
  4. Verfahren nach Anspruch 1, wobei der mindestens eine vorgegebene Vergleichswert einen ersten Vergleichswert (X, X1, X2) umfasst, wobei die Priorität des Datenverarbeitungsvorgangs (11) erhöht wird, wenn die Anzahl von abgearbeiteten Instruktionen kleiner ist als der erste Vergleichswert.
  5. Verfahren nach Anspruch 3 oder 4, wobei der mindestens eine vorgegebene Vergleichswert einen zweiten Vergleichswert umfasst, wobei die Priorität des Datenverarbeitungsvorgangs erniedrigt wird, wenn die Anzahl der abgearbeiteten Instruktionen größer ist als der zweite vorgegebene Vergleichswert.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Überprüfen des Fortschritts das Überprüfen des Fortschritts zu einer Vielzahl von vorgegebenen Zeitpunkten vor dem Ablauf der Maximaldauer (Ta) umfasst, und wobei das Ändern der Priorität des Datenverarbeitungsvorgangs ein Ändern der Priorität des Datenverarbeitungsvorgangs bei jedem vorgegebenen Zeitpunkt in Abhängigkeit von dem Fortschritt des Datenverarbeitungsvorgangs (11) umfasst.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei der vorgegebene Zeitpunkt eine vorgegebene Zeitspanne (Tw) nach dem Starten des Datenverarbeitungsvorgangs (11) liegt.
  8. Verfahren zur Verarbeitung von Daten, umfassend: Ausführen eines ersten Datenverarbeitungsvorgangs und eines zu dem ersten Datenverarbeitungsvorgang parallelen zweiten Datenverarbeitungsvorgangs, Ermitteln eines Fortschritts des ersten Datenverarbeitungsvorgangs und eines Fortschritts des zweiten Datenverarbeitungsvorgangs, und Ändern einer Priorität des ersten Datenverarbeitungsvorgangs und/oder einer Priorität des zweiten Datenverarbeitungsvorgangs in Abhängigkeit von dem Fortschritt des ersten Datenverarbeitungsvorgangs und dem Fortschritt des zweiten Datenverarbeitungsvorgangs.
  9. Verfahren nach Anspruch 8, wobei das Ermitteln des Fortschritts ein Ermitteln einer Anzahl von abgearbeiteten Instruktionen des ersten Datenverarbeitungsvorgangs und einer Anzahl von abgearbeiteten Instruktionen des zweiten Datenverarbeitungsvorgangs umfasst.
  10. Verfahren nach Anspruch 8 oder 9, wobei die Priorität des ersten Datenverarbeitungsvorgangs und/oder Priorität des zweiten Datenverarbeitungsvorgangs derart geändert wird, dass eine Funktion des Fortschritts des ersten Datenverarbeitungsvorgangs und des Fortschritt des zweiten Datenverarbeitungsvorgangs auf einen vorgegebenen Wert geregelt wird.
  11. Verfahren nach einem der vorhergehenden Ansprüche, umfassend das Regeln des Zugriffs auf eine Hardwarekomponente ausgewählt aus der Gruppe umfassend einen Cache-Speicher (46), einen externen Speicher (66) und einen Bus (40) in Abhängigkeit von der Priorität.
  12. Vorrichtung zur Datenverarbeitung, umfassend: Datenverarbeitungsmittel (22; 41, 43), und Überprüfungsmittel (22, 23, 24, 25; 30; 45) zum Überprüfen des Fortschritts eines auf den Datenverarbeitungsmitteln (22; 41, 43) ausgeführten Datenverarbeitungsvorgangs (11), wobei die Überprüfungsmittel (22, 23, 24, 25; 30; 45) derart ausgestaltet sind, dass die Fortschritte des Datenverarbeitungsvorgangs zu einem vorgegebenen Zeitpunkt vor dem Ablauf einer vorgegebenen Maximaldauer (Ta) des Datenverarbeitungsvorgangs (11) überprüfen und eine Priorität des Datenverarbeitungsvorgangs (11) in Abhängigkeit von dem Fortschritt des Datenverarbeitungsvorgangs (11) ändern.
  13. Vorrichtung nach Anspruch 12, wobei die Überprüfungsmittel einen Timer (25) und eine Interruptsteuerung (24) umfassen, wobei die Überprüfungsmittel (22, 23, 24, 25) derart ausgestaltet sind, dass der Timer (25) nach Ablauf einer vorgegebenen Zeitdauer nach dem Starten des Datenverarbeitungsvorgangs (11) die Interruptsteuerung (25) zur Auslösung eines Interrupts an die Datenverarbeitungsmittel (22) ansteuert, woraufhin die Datenverarbeitungsmittel (22) den Fortschritt des Datenverarbeitungsvorgangs (22) überprüfen.
  14. Vorrichtung nach einem der Ansprüche 12 oder 13, wobei die Überprüfungsmittel einen Instruktionszähler (23, 42, 44) zum Zählen einer Anzahl von abgearbeiteten Instruktionen des Datenverarbeitungsvorgangs (11) umfassen, und wobei das Überprüfen des Fortschritts das Vergleichen der Anzahl der abgearbeiteten Instruktionen mit einem vorgegebenen Vergleichswert (X, X1, X2) umfassen.
  15. Vorrichtung zur Datenverarbeitung, umfassend: Datenverarbeitungsmittel (41, 43, 71) zur parallelen Ausführung eines ersten Datenverarbeitungsvorgangs und eines zweiten Datenverarbeitungsvorgangs, und Überprüfungsmittel (60, 65, 70) zum Ermitteln eines Fortschritts des ersten Datenverarbeitungsvorgangs und des zweiten Datenverarbeitungsvorgangs und zum Ändern einer Priorität des ersten Datenverarbeitungsvorgangs und/oder einer Priorität des zweiten Datenverarbeitungsvorgangs in Abhängigkeit von dem Fortschritt des ersten Datenverarbeitungsvorgangs und dem Fortschritt des zweiten Datenverarbeitungsvorgangs.
  16. Vorrichtung nach einem der Ansprüche 12–15, wobei die Überprüfungsmittel (2225; 30; 45; 60; 65; 70) derart ausgestaltet sind, dass sie eine Priorität des Datenverarbeitungsvorgangs ohne Benutzung der Datenverarbeitungsmittel (22; 41, 43, 71) direkt ändern können.
  17. Vorrichtung nach einem der Ansprüche 12–16, wobei die Überprüfungsmittel (2225; 30; 45; 60; 65; 70) mindestens einen separaten Baustein umfassen.
  18. Vorrichtung nach einem der Ansprüche 12–17, wobei die Datenverarbeitungsmittel einen Multithreadingprozessor (22) umfassen.
  19. Vorrichtung nach einem der Ansprüche 12–18, wobei die Datenverarbeitungsmittel mindestens zwei Prozessoreinheiten (41, 43, 71) umfassen, wobei die mindestens zwei Prozessoreinheiten (41, 43, 71) in Abhängigkeit von Prioritäten von auf den Prozessoreinheiten laufenden Datenverarbeitungsvorgängen (11, 10) auf gemeinsame Hardwarekomponenten (46) zugreifen.
  20. Vorrichtung nach einem der Ansprüche 12–19, wobei die Vorrichtung zur Bearbeitung von Echtzeitdatenverarbeitungsvorgängen ausgestaltet ist.
  21. Vorrichtung nach einem der Ansprüche 12–20, wobei die Vorrichtung zur Durchführung des Verfahrens nach einem der Ansprüche 1–11 ausgestaltet ist.
DE102007051803A 2007-10-30 2007-10-30 Verfahren und Vorrichtung zur Datenverarbeitung Withdrawn DE102007051803A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102007051803A DE102007051803A1 (de) 2007-10-30 2007-10-30 Verfahren und Vorrichtung zur Datenverarbeitung
US12/261,264 US20090113439A1 (en) 2007-10-30 2008-10-30 Method and Apparatus for Processing Data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102007051803A DE102007051803A1 (de) 2007-10-30 2007-10-30 Verfahren und Vorrichtung zur Datenverarbeitung

Publications (1)

Publication Number Publication Date
DE102007051803A1 true DE102007051803A1 (de) 2009-05-07

Family

ID=40514191

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007051803A Withdrawn DE102007051803A1 (de) 2007-10-30 2007-10-30 Verfahren und Vorrichtung zur Datenverarbeitung

Country Status (2)

Country Link
US (1) US20090113439A1 (de)
DE (1) DE102007051803A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593125B (zh) * 2009-07-02 2012-03-14 上海交通大学 使用监控线程对二进制翻译程序执行流程动态监控的方法
US9013991B2 (en) * 2009-12-21 2015-04-21 Empire Technology Development Llc Multicore processor including two or more collision domain networks
US8533682B2 (en) * 2010-11-05 2013-09-10 Microsoft Corporation Amplification of dynamic checks through concurrency fuzzing
JP6653997B2 (ja) 2014-05-09 2020-02-26 株式会社半導体エネルギー研究所 表示補正回路及び表示装置
US20160210174A1 (en) * 2015-01-15 2016-07-21 Microsoft Corporation Hybrid Scheduler and Power Manager
US10031771B2 (en) * 2015-06-15 2018-07-24 Nxp Usa, Inc. Multiple processor core interrupt priority levels
US11314558B2 (en) * 2019-07-23 2022-04-26 Netapp, Inc. Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof
CN114212096B (zh) * 2022-02-22 2022-04-22 智道网联科技(北京)有限公司 自动驾驶车辆控制延时处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327668B1 (en) * 1998-06-30 2001-12-04 Sun Microsystems, Inc. Determinism in a multiprocessor computer system and monitor and processor therefor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210872A (en) * 1991-06-28 1993-05-11 Texas Instruments Inc. Critical task scheduling for real-time systems
US6604200B2 (en) * 1997-04-22 2003-08-05 Intel Corporation System and method for managing processing
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
JP4693326B2 (ja) * 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
US7043726B2 (en) * 2001-03-20 2006-05-09 Hewlett-Packard Development Company, L.P. Binding of processes in network systems
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7802255B2 (en) * 2003-12-19 2010-09-21 Stmicroelectronics, Inc. Thread execution scheduler for multi-processing system and method
US7162666B2 (en) * 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327668B1 (en) * 1998-06-30 2001-12-04 Sun Microsystems, Inc. Determinism in a multiprocessor computer system and monitor and processor therefor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jonsson, J.: "Architectures and Scheduling Techniq ues for Time- Deterministic Parallel Computations" . Chalmers University of Technology, Sweden. Licen tiate Thesis TR-191L, 1995, pp. 1-20 <http://www.c e.chalmers.se/~janjo/papers> (recherchiert am 02.0 7. 08)
Jonsson, J.: "Architectures and Scheduling Techniques for Time- … Deterministic Parallel Computations". Chalmers University of … Technology, Sweden. Licentiate Thesis TR-191L, 1995, pp. 1-20 … http://www.ce.chalmers.se/~janjo/papers (recherchiert am 02.07. … 08) *

Also Published As

Publication number Publication date
US20090113439A1 (en) 2009-04-30

Similar Documents

Publication Publication Date Title
DE102007051803A1 (de) Verfahren und Vorrichtung zur Datenverarbeitung
DE102015004034B4 (de) Steuervorrichtung zum Ausführen eines Ablaufprogramms, die einen Mehrkernprozessor verwendet
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE102014103139B4 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
DE112019005584T5 (de) Arithmetiksteuervorrichtung
WO2015086357A1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE102016221526A1 (de) Vorrichtung und Verfahren zum Bearbeiten einer Mehrzahl Aufgaben
DE102013022564B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE10206865C1 (de) Reaktionszeit-Beschränkung eines Software-Prozesses
DE102004059972B4 (de) Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung
DE102017130552B3 (de) Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
DE102016224206A1 (de) Fahrzeugsteuervorrichtung
DE102007026982B4 (de) Prozessor, programmgesteuerte Einheit und Verfahren zur Regelung eines Prozessortaktes
DE102016206490A1 (de) Elektronische steuereinheit
DE10228778B4 (de) Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros
DE102019219260A1 (de) Verfahren zum Betreiben einer Recheneinheit
DE102020205720A1 (de) Computerimplementiertes Verfahren und Vorrichtung zur Planung von Ressourcen
DE102018205390A1 (de) Verfahren und Vorrichtung zur Fehlerbehandlung in einer Kommunikation zwischen verteilten Software Komponenten
EP2126700B1 (de) Steuerung des laufzeitverhaltens von prozessen
EP3073375A1 (de) Verfahren zur ermittlung einer maximalen laufzeit für ein tasksystem
DE102013114451A1 (de) Verfahren zum Verteilen einer Prozessorlast auf Echtzeit-Prozessorthreads
DE102016107646A1 (de) Optimierungstechnologie für Single- zu Multi-Core Portierungen von Steuerungssoftware
DE102017211564A1 (de) Elektronische steuereinheit
DE102017200571A1 (de) Datenverarbeitungseinrichtung
DE102015203695A1 (de) Elektronische steuereinheit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: LANTIQ DEUTSCHLAND GMBH, 85579 NEUBIBERG, DE

R081 Change of applicant/patentee

Owner name: LANTIQ DEUTSCHLAND GMBH, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE

Effective date: 20110325

R016 Response to examination communication
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130501