DE102016210345A1 - Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung - Google Patents

Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung Download PDF

Info

Publication number
DE102016210345A1
DE102016210345A1 DE102016210345.8A DE102016210345A DE102016210345A1 DE 102016210345 A1 DE102016210345 A1 DE 102016210345A1 DE 102016210345 A DE102016210345 A DE 102016210345A DE 102016210345 A1 DE102016210345 A1 DE 102016210345A1
Authority
DE
Germany
Prior art keywords
processing
tasks
task
order
processing unit
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.)
Pending
Application number
DE102016210345.8A
Other languages
English (en)
Inventor
Ruben Bartholomae
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102016210345.8A priority Critical patent/DE102016210345A1/de
Publication of DE102016210345A1 publication Critical patent/DE102016210345A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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

Abstract

Die Erfindung betrifft ein Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zugeordnet wird, die Aufgaben in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden, wobei bei jeder Auswahl einer Aufgabe zur Bearbeitung die Reihenfolge für die Aufgaben neu bestimmt wird und die Auswahl so gesteuert wird, dass für eine Anzahl N von Aufgaben maximal N Zeiteinheiten vergehen, bis eine aktive Aufgabe erneut Verarbeitungskapazität von der Verarbeitungseinheit zugeteilt bekommt, wobei in einem Zeitraum zwischen Auftreten eines Ausnahmeereignisses und dessen vollständiger Behandlung die gesamtmögliche Kapazität der Verarbeitungseinheit zur Verfügung gestellt wird.

Description

  • Die Erfindung betrifft ein Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung. Das vorgestellte Verfahren dient insbesondere zur priorisierten Ablaufplanung bei einer geteilten zentralen Datenverarbeitung und eine Schaltungsanordnung zur Durchführung des Verfahrens.
  • Stand der Technik
  • In datenverarbeitenden Systemen, wie bspw. in Rechner-Mikroprozessor-Systemen, Steuereinheiten, peripheren Einheiten sowie in anderen informationsverarbeitenden Systemen, werden zum Zweck der Berechnung häufig sogenannte CPUs (Central Processing Unit) als zentrale Verarbeitungseinheiten eines Computers oder aber auch lediglich einfache arithmetisch-logische Einheiten (ALU) verwendet. Ferner werden zur Speicherung von Programmen und Daten entsprechende Speicher wie RAM, ROM, EPROM, EEPROM usw. eingesetzt. Der Prozessor bzw. die CPU arbeitet ein Programm ab bzw. führt ein Programm aus. Das Programm ist dabei in der Regel aus verschiedenen Teilprogrammen zusammengesetzt, die ggf. wiederum unterschiedliche Aufgaben (Tasks) gewidmet sein können. Man spricht dabei von Multitasking.
  • Je nach einem aktuellen Szenario, d. h. welche Aufgaben zu diesem Zeitpunkt eine Bearbeitung anfordern, wird dabei entschieden, welche Aufgabe durch die CPU abgearbeitet werden soll. Dabei ist es denkbar, dass unterschiedlichen Aufgaben unterschiedliche Prioritäten zugewiesen sind, so dass bei Abarbeitung der Aufgaben die den jeweiligen Aufgaben zugeordnete Priorität beachtet wird und entsprechend die Aufgabe der höchsten Priorität vorrangig bearbeitet wird. Dies geschieht bspw. durch sogenannte Interrupts. Bei einem Interrupt handelt es sich um eine kurzfristige Unterbrechung eines Programms, um eine andere, prioritätshöhere bzw. zeitkritische Verarbeitung einer anderen Aufgabe durchzuführen. Dabei wird zunächst eine Unterbrechungsanforderung gestellt, woraufhin eine Unterbrechungsroutine ausgeführt wird und die zuvor ausgeführte Aufgabe unterbrochen und nach Beendigung des Interrupts diese Aufgabe an der Unterbrechungsstelle fortgesetzt wird. Das bedeutet, dass in der Regel dabei eine aktuelle Anforderung einer Aufgabe, die eine höhere Priorität besitzt als die sich gerade in Bearbeitung befindende Aufgabe, vorrangig bearbeitet wird, und dass dafür die sich bereits in Bearbeitung befindende Aufgabe unterbrochen wird. Der betreffende Interrupt veranlasst dabei die CPU zu einem Sprung in einen entsprechenden Programmabschnitt, um so den Taskwechsel zu realisieren. Hierbei müssen benutzte Register der CPU in einem Datenspeicher, üblicherweise ein RAM, zwischengespeichert werden, die dann anschließend nach Beendigung des unterbrechenden Tasks wiederhergestellt werden. Sowohl das Zwischenspeichern als auch das Wiederherstellen von benutzen Registern benötigt zusätzliche Rechenzeit der CPU, die ausschließlich dem Wechseln eines Tasks zugeordnet werden kann und somit keinen Fortschritt in der Berechnung der Aufgaben leistet.
  • Das voranstehend genannte Multitasking kann auch ein sogenanntes "Time Sharing" bewirken, das mehrere Nutzer scheinbar gleichzeitig bedient. Generell bezeichnet Multitasking die Fähigkeit einer CPU, mehrere Aufgaben (Tasks) nebenläufig auszuführen. Dabei werden die verschiedenen Prozesse in so kurzen Abständen immer abwechselnd aktiviert, dass ein Eindruck der Gleichzeitigkeit entsteht.
  • Die Auswahl der einzelnen Aufgaben können allerdings dazu führen, dass Aufgaben mit niedriger Priorität selten und im Extremfall gar nicht abgearbeitet werden. Dies kann dann der Fall sein, wenn quasi dauerhaft vorstehend genannte Interrupt-Anfragen kommen und somit die Abhängigkeit einer in Relation zu anderen Aufgaben niedrig priorisierte Aufgabe hier nicht vollständig vollendet werden kann. In diesem Fall ist es notwendig, Maßnahmen zu ergreifen, die eine sogenannte Worst-Case Execution-Time (WCET) garantieren und damit ein Mindestmaß an Arbeitskapazität der CPU für jede zu bearbeitende Aufgabe garantieren.
  • In der Druckschrift DE 10 2010 003 521 A1 wird eine Zeitgeber-Einheit beschrieben, die eine modularen Struktur zur Datenverarbeitung darstellt. Diese Struktur stellt sogenannte Multi-Channel-Sequencer-Module (MCS-Module) bereit, die eine Ausführung von mehreren, ggf. unabhängigen Aufgaben auf einer gemeinsam genutzten zentralen Datenverarbeitungseinheit ermöglichen.
  • Die Druckschrift DE 10 2010 003 512 A1 beschreibt eine Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mit einer geteilten zentralen Verarbeitungseinheit, sogenannte Multi-Channel-Sequencer-Module, MCS-Module.
  • Diese Schaltungsanordnung wird zusammen mit einem vorgeschlagenen Algorithmus in der Druckschrift DE 10 2011 083 468 A1 vorgestellt. Die Schaltungsanordnung ist dazu konfiguriert, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, so dass jedem aktiven Kanal eines MCS eine Worst-Case Execution-Time von T = N·TCLK garantiert wird, wobei TCLK die Taktdauer bezeichnet. Um dies garantieren zu können, wird in einer Schaltungsanordnung eine Prioritätsliste verwaltet, die zeitlich länger zurückliegende aktive Aufgaben mit einer höheren Priorität behandelt als aktive Aufgaben, die erst kürzlich bearbeitet wurden. Aufgaben ohne Bearbeitungsanforderung werden in der Prioritätsliste übersprungen, so dass die Rechenkapazität ausschließlich aktiven Aufgaben zugeteilt wird und keine Rechenkapazität und inaktive Aufgaben verschwendet wird.
  • Ein in der genannten Druckschrift vorgestellter Algorithmus zur Ablaufplanung der Datenverarbeitung besitzt die Eigenschaft, dass die zur Verfügung stehenden Zeiteinheiten der zentralen Datenverarbeitungseinheit immer gleichmäßig den aktiven Kanälen eines MCS zugeteilt werden, so dass die Worst-Case Execution-Time von T = N·TCLK für jeden Kanal garantiert werden kann. Diese Zuteilung wird üblicherweise beim Bearbeiten von unabhängigen Aufgaben bevorzugt. In Ausnahmefällen kann eine priorisierte Bearbeitung von einem oder mehreren Kanälen jedoch vorteilhaft bzw. erforderlich sein. Für sicherheitskritische Anwendungen wird beispielsweise ein separater MCS-Kanal reserviert, der beim Auftreten eines externen Störereignisses bzw. Ausnahmeereignisses, z.B. Ausfall eines Sensors zur Positionserfassung eines Motors, möglichst schnell ein Kanalprogramm ausführen muss um eine Not-Abschaltung vorzunehmen.
  • Offenbarung der Erfindung
  • Vor diesem Hintergrund werden ein Verfahren gemäß Anspruch 1 und eine Schaltungsanordnung nach Anspruch 10 vorgestellt. Ausführungsformen ergeben sich aus den abhängigen Ansprüchen und der Beschreibung.
  • Es wurde erkannt, dass, da in dem in der Druckschrift DE 10 2011 083 468 A1 vorgestellte Algorithmus zur Ablaufplanung alle Kanäle stets gleichberechtigt behandelt werden, für die Behandlung des Ausnahmeereignisses nicht die gesamtmögliche Kapazität der Verarbeitungseinheit zur Verfügung steht.
  • Dieser Mangel wird mit dem beschriebenen Verfahren und der vorgestellten Schaltungsanordnung behoben, indem für die Zeit zwischen Auftreten eines Ausnahmeereignisses und dessen vollständiger Behandlung die gesamtmögliche Kapazität der Verarbeitungseinheit zur Behandlung des Ausnahmeereignisses zur Verfügung gestellt wird. Hierbei kann optional unmittelbar von einer Optimierung, nämlich einer Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung, profitiert werden. Durch Annahme eines spekulativen Programmverlaufs durch die Instruktionsvorladung kann ggf. eine Beschleunigung der Befehlsabarbeitung erzielt werden.
  • Zu beachten ist, dass nach Abschluss der Behandlung des Ausnahmeereignisses wieder eine Gleichverteilung der Kapazität der Verarbeitungseinheit an die MCS Kanäle erfolgen sollte, bei der wieder die ursprüngliche Worst-Case Execution-Time von T = N·TCLK garantiert wird.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen.
  • Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt eine Ausführungsform einer Schaltungsanordnung mit sieben Pipelinestufen für ein datenverarbeitendes System mit einer geteilten zentralen Verarbeitungseinheit.
  • 2 zeigt eine Schaltungsanordnung zur Ablaufplanung die als zentrales Teilmodul "Task-Scheduler", in der in 1 gezeigten Schaltungsanordnung enthalten ist.
  • 3 zeigt das zeitliche Verhalten der sieben Pipelinestufen der Schaltungsanordnung aus 1 im Falle einer priorisierten Ablaufplanung bei einem Ausnahmeereignis.
  • Ausführungsformen der Erfindung
  • Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
  • 1 zeigt eine Ausführungsform der Schaltungsanordnung, die insgesamt mit der Bezugsziffer 10 bezeichnet ist. Eine Pipelinestufe 0 15 berechnet die Adressen für einen RAM-Zugriff. Eine erste und zweite Pipelinestufe 12 sind für einen RAM-Zugriff vorgesehen, eine dritte Pipelinestufe 14 für eine Instruktionsverteilung, eine vierte Pipelinestufe 16 für das Decodieren, eine fünfte Pipelinestufe 18 für die Ausführung und eine sechste Pipelinestufe 20 für das Speichern.
  • In Pipelinestufe 0 15 ist ein RAM-Zugriff-Decoder 42 vorgesehen. In der ersten und zweiten Stufe 12 ist ein RAM-Prioritäts-Decoder 22, der über eine Slave-Bus-Schnittstelle 24 an externe Bus-Master angebunden ist und über weitere Anschlüsse 26 mit einem RAM 0 28 und einem optionalen RAM 1 30 verbunden ist. In der dritten Stufe 14 ist ein Verteiler 32 für Instruktionen und Daten vorgesehen. In der vierten Stufe 16 ist ein Instruktionsdecoder 34 vorgesehen. In der fünften Stufe 18 ist eine ALU 36 vorgesehen. In der sechsten Pipelinestufe werden die in der ALU berechneten Ergebnisse über den MCS internen Bus 82 und 84 in einem Zielregister 60, 62, 64, 66, 68 oder 70 gespeichert.
  • Die Schaltungsteile der unterschiedlichen Pipelinestufen und der externen RAM-Module werden durch sogenannte Pipeline-Register 40 und 26 getrennt. Wenn die zwischen den Pipelinestufen auszutauschenden Daten länger als ein Systemtakt gehalten werden müssen, so werden taskspezifische Pipeline-Register 40a in Form von N-Fachen Register-Arrays vorgesehen.
  • In einem weiteren Block 50 sind gemeinsam genutzte sowie taskspezifische Speicher- und Kommunikationsressourcen eines MCS bereitgestellt, die über MCS interne Busse 84, 81 und 82 Daten mit den MCS Pipelinestufen austauschen oder über eine Slave-Bus-Schnittstelle 52 von einem extern angeschlossene Bus-Master kontrolliert werden können. Die taskspezifischen Datenregister 60 bis 62 dienen typischerweise als Quell- und Zielregister für Rechenoperationen. Die taskspezifischen Kontrollregister 64 bis 66 und die gemeinsam genutzten Kontrollregister 68 bis 70 können zusätzliche Hardware-Funktionalität beinhalten. Hierzu werden extern angeschlossene Hardwaremodule über zusätzliche Ein- bzw. Ausgangssignale 54 und 56 mit den Kontrollregistern verbunden. Zudem besitzt jeder MCS-Kanal eine eigne Bus-Master-Ressource 87, mit der über ein externes Bus-Interface 58 mit angeschlossenen Slave-Bus-Teilnehmer kommuniziert werden kann.
  • Weiterhin ist ein Aufgaben-Einteiler bzw. Task-Scheduler 80 dargestellt, der über die Kontrollsignale 83 steuert, dass ein bestimmter MCS-Kanal in einer bestimmten Pipelinestufe aktiviert wird.
  • 1 zeigt einen MCS mit sieben statt vier Pipelinestufen, wodurch eine Erhöhung der Taktfrequenz erreicht werden kann. Die zu berechnenden Aufgaben werden in Form von sogenannten (Kanal-)Programmen den N Kanälen eines MCS-Moduls zugeordnet. Ein MCS-Kanal stellt dabei einige spezifische Hardware-Ressourcen, im Wesentlichen Daten- und Kontrollregister, zur Verfügung, die nicht für andere Aufgaben geteilt werden. Durch diese exklusive Zuordnung kann das vorstehend erwähnte Zwischenspeichern und Wiederherstellen von benutzen Registern in einem Datenspeicher gänzlich entfallen und die erwähnte zusätzlich anfallende Zeit für einen Taskwechsel wird gänzlich eliminiert. Um eine zeitlich gleichmäßige Zuteilung der zentralen Datenverarbeitungseinheit zu den Kanälen des MCS zu ermöglichen, wird eine Schaltungsanordnung mit einem Algorithmus zur Ablaufplanung verwendet, nämlich der Task Scheduler 80.
  • 2 zeigt eine Schaltungsanordnung zur Ablaufplanung, die aus N Registern 100_0 bis 100_N – 1 und einem Schaltnetz 103 besteht. Die Register 100_0 bis 100_N – 1 dienen zum Speichern der Listenelemente der Prioritätsliste LPRIO[i] (i = 0, ..., N – 1) und das Schaltnetz dient zur Auswahl derjenigen Aufgabe s bzw. eines entsprechend zugeordneten Kanals s, welche im Rahmen eines Bearbeitungszyklus als nächstes bearbeitet werden soll. Das vorgestellte Verfahren sieht für die Bestimmung des als nächstes zu bearbeitenden Kanals, d. h. desjenigen Kanals, der im nächsten Taktzyklus in die Pipelinestufe 0 eingeschoben wird, den voranstehend beschriebenen Algorithmus vor, der mit Hilfe der Prioritätenliste LPRIO dargestellt eine Ablaufplanung vornimmt. Die Register 100_0, ..., 100_N – 1 der Prioritätenliste werden mit LPRIO[i] (i = 0, ..., N – 1) referenziert, wobei die Anzahl der Aufgaben N ist. Das letzte Listenelement 100_N – 1 = LPRIO[N – 1] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit höchster Priorität behandelt wird. Das Vorgängerregister 100_N – 2 = LPRIO[N – 2] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit zweit-höchster Priorität behandelt wird usw. Die Register 100_0 bis 100_N – 1 werden zum Zeitpunkt eines Schaltungs-Resets mit den Werten: LPRIO[i] = i für alle i = 0, ..., N – 1 initialisiert.
  • Innerhalb eines Taktzyklus wird nun Kanal s ermittelt bzw. selektiert, der in Pipelinestufe 0 eingeschoben, d. h. dessen ihm zugeordnete Aufgabe als nächstes bearbeitet wird. Hierzu evaluiert der im Schaltnetz 103 realisierte Algorithmus die Register über die dargestellten Eingangssignale 101_0 bis 101_N – 1, wobei die Funktion "is_active" durch Auswertung der N Eingangssignale 104 und die Funktion "not_in_pipe" durch Auswertung der Eingangssignale 105 realisiert wird. Funktion "is_active" gibt an, ob eine gerade betrachtete Aufgabe s aktiv ist, d. h. ob der ihr zugeordnete Kanal bereit ist, Rechenkapazität der ALU in Anspruch zu nehmen. Funktion "not_in_pipe" prüft, ob die Aufgabe s im nächsten Takt nicht mehr in einer Pipelinestufe ist. Die Informationen für die Bildung der Funktionen "is_active" und "not_in_pipe" können beispielsweise, wie dies dargestellt ist, durch jeweils N Einzelsignale 104 und 105 bereitgestellt werden. In diesem Fall gibt ein einzelnes binäres Signal den Zustand eines einzelnen vorherbestimmten Kanals wieder. Die Register 101_0 bis 100_N – 1 werden in absteigender Reihenfolge durchlaufen und wenn die beiden entsprechenden Bits aus 104 und 105 der gerade betrachteten Aufgabe wahr sind, so wird diese Aufgabe als Aufgabe s ausgewählt und im nächsten Takt in die Pipeline eingeschoben. Parallel dazu wird s im nächsten Takt über Signal 107 in das Prioritätsregister 100_0 mit niedrigster Priorität eingeschoben. Zudem bringt das Schaltnetz 103 über Multiplexer 106_1 bis 106_N – 1 die Steuersignale 102_1 bis 102_N – 1 in die gewünschte Stellung, und zwar genau so, dass der gewählte Kanal s nicht mehr in den Registern 100_1 bis 100_N – 1 enthalten. ist. Die in den Registern 100_0 bis 100_N – 1 vorhandenen Kanäle werden hierzu um eine oder zwei Listenstellen nach oben in der Prioritätenliste geschoben. Die Listenstelle LPRIO[i] wird dann von dem vorhergehenden Element/Aufgabe eingenommen, das zuvor auf Listenstelle LPRIO[i – 1] war oder falls das ausgewählte Element s auf dieser Listenstelle LPRIO[i – 1] war oder bereits einer in der vorigen Iteration in der Liste gefunden wurde von dem vorvorgehenden Element/Aufgabe, das zuvor auf Listenstelle LPRIO[i – 2] war, so dass jede Aufgabe spätestens nach N Takten zur Bearbeitung ansteht, d. h. Listenstelle LPRIO[N – 1] innehat.
  • Die dargestellte Schaltungsanordnung kann bzgl. ihrer Struktur nahezu unmittelbar für das hier vorgeschlagene Verfahren angewandt werden. Analog zu den N-Eingangssignalen 104 und 105 werden allerdings zusätzliche N Eingangssignale 108 dem Schaltnetz 103 zugefügt. Eine neue Funktion "can_prefetch" kann somit durch Auswertung dieser Eingangssignale 108 realisiert werden. Der Algorithmus zur Ablaufplanung wird außerdem modifiziert. Hierzu wird eine Variable Cp (mit p ∊ {0, 1, ... N – 1}) eingeführt, mit der der zu priorisierende MCS-Kanal ausgewählt wird. p wird üblicherweise dabei vom Anwender des Systems zu Beginn festgelegt. Eine Änderungen von p kann aber auch während der Laufzeit des Systems erfolgen. Mittels einer weiteren Variablen h (h ∊ {0, 1}) wird durch den Algorithmus festgelegt, ob das Schaltnetz zur Aktualisierung der Prioritätenliste angehalten ist (h = 1) oder nicht (h = 0).
  • Eine weitere Optimierung, nämlich eine Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung des Algorithmus zur Ablaufplanung kann optional auch zusammen mit der hierin vorgeschlagenen Änderung verwendet werden.
  • Der Algorithmus aus der Druckschrift DE 10 2011 083 468 A1 aus Absatz [0054] wird unter Berücksichtig der in der Optimierung Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung vorgeschlagenen Änderungen wie folgt modifiziert:
    Figure DE102016210345A1_0002
    Figure DE102016210345A1_0003
  • Weiterhin wird der Algorithmus aus der Druckschrift DE 10 2011 083 468 A1 in Absatz [0058] wie folgt modifiziert:
    Figure DE102016210345A1_0004
    Figure DE102016210345A1_0005
  • Nach Festlegung des priorisierten Kanals p durch den Anwender arbeitet der Algorithmus zunächst gemäß der ursprünglichen Variante. Zur Überprüfung des Ausnahmeereignisses wird der MCS-Kanal p derartig konfiguriert, dass er beim Eintreffen des Ereignisses aktiviert wird (is_active(p) ist wahr) und nach Behandlung dieses Ausnahmeereignisses wird der Kanal p wieder deaktiviert, d. h. is_active(p) ist falsch. Mit dieser Annahme und dem vorstehend geänderten Algorithmus gilt: solange is_active(p) wahr ist, wird MCS-Kanal p vom Algorithmus der Ablaufplanung bevorzugt behandelt und die Aktualisierung der Prioritätenliste wird angehalten (h = 1). Wenn diese Art der Bevorzugung im Zusammenhang mit einer Instruktionsvorladung angewandt wird, so stehen nach Eintreten des Ausnahmeereignisses bis zum Abschluss der Behandlung des Ausnahmeereignisses die Ressourcen aller Pipelinestufen dem priorisierten Kanal p uneingeschränkt zur Verfügung. Durch diese Bevorzugung kann nun die ursprüngliche Worst-Case Execution-Time von T = N·TCLK den Nachbarkanälen von p für die Dauer der Behandlung des Ausnahmeereignisses nicht mehr garantiert werden. Nach Abschluss der Behandlung des Ausnahmeereignisses wird diese Bevorzugung jedoch aufgegeben und die ursprüngliche Worst-Case Execution-Time von T = N·TCLK gilt wieder für alle Kanäle i mit i ≠ p.
  • 3 zeigt das zeitliche Verhalten an einem Beispiel. Die Darstellung zeigt oben den Verlauf von Signalen, und zwar ein erstes Signal 200 für C0 ist aktiv, ein zweites Signal 202 für C1 ist aktiv, ein drittes Signal 204 für C2 ist aktiv und ein viertes Signal 206 für Ci, i = 3 ... N – 1, ist aktiv. Eine Reihe 210 bezeichnet den Zyklus 0 bis 14. Weitere Reihen bezeichnen Stufe 0 220, Stufe 1 222, Stufe 2 224, Stufe 3 226, Stufe 4 228, Stufe 5 230 und Stufe 6 232.
  • Es wird angenommen, dass der priorisierte Kanal p = C2 ist, die Kanäle C0 und C1 sind über den gesamten Betrachtungszeitraum aktiv und ermöglichen immer Instruktionsvorladung. Weiter wird angenommen, dass das Störereignis in Zyklus 4 eintrifft.
  • Bei komplexeren Anwendungen kann es erforderlich sein, dass mehrere Ausnahmeereignisse behandelt werden müssen. In diesem Fall muss eine individuelle Gewichtung der Priorität für alle Ausnahmeereignisses vom Anwender vorgenommen werden. Ein Anwender kann hier z. B. definieren, dass ein Kanal p0 für die Behandlung eines ersten Ausnahmeereignisses und ein zweiter Kanal p1 für die Behandlung eines zweiten Ausnahmeereignisses verwendet wird. Wenn weiterhin definiert ist, dass beim gleichzeitigen Auftreten beider Störfälle das erste Ausnahmeereignis immer höhere Priorität hat, kann die folgende Änderung von Algorithmus aus Absatz [0054] der Druckschrift DE 10 2011 083 468 A1 das erforderliche Verhalten leisten:
    Figure DE102016210345A1_0006
  • 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
    • DE 102010003521 A1 [0006]
    • DE 102010003512 A1 [0007]
    • DE 102011083468 A1 [0008, 0011, 0030, 0031, 0035]

Claims (11)

  1. Verfahren zur Abarbeitung von mehreren Aufgaben (s) in einem datenverarbeitenden System mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei den jeweiligen Aufgaben (s) die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zugeordnet wird, die Aufgaben (s) in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben (s) ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden, wobei bei jeder Auswahl einer Aufgabe (s) zur Bearbeitung die Reihenfolge für die Aufgaben (s) neu bestimmt wird und die Auswahl so gesteuert wird, dass für eine Anzahl N von Aufgaben (s) maximal N Zeiteinheiten vergehen, bis eine aktive Aufgabe (s) erneut Verarbeitungskapazität von der Verarbeitungseinheit zugeteilt bekommt, wobei in einem Zeitraum zwischen Auftreten eines Ausnahmeereignisses und dessen vollständiger Behandlung die gesamtmögliche Kapazität der Verarbeitungseinheit zur Verfügung gestellt wird.
  2. Verfahren nach Anspruch 1, bei dem eine Instruktionsvorladung vorgenommen wird, durch die ein spekulativer Programmverlauf angenommen wird.
  3. Verfahren nach Anspruch 2, bei dem die Instruktionsvorladung durch Auswertung von Eingangssignalen (101, 104, 105, 108) realisiert wird.
  4. Verfahren nach Anspruch 1 oder 2, bei dem ein Rückgabewert einer Funktion zur Evaluierung der Zweckmäßigkeit der Instruktionsvorladung ausgewertet wird.
  5. Verfahren nach Anspruch 4, bei dem in Abhängigkeit des Rückgabewerts einer Funktion zur Evaluierung der Zweckmäßigkeit der Instruktionsvorladung vorgeladene Instruktionen behandelt werden.
  6. Verfahren nach Anspruch 5, bei dem im Falle der fehlerhaften Instruktionsvorladung lediglich die Instruktionen des Kanals mit fehlerhafter Instruktionsvorladung aus der Pipeline entfernt werden und die Instruktionen aller anderen Kanäle in der Pipeline unbeeinflusst weiterverarbeitet werden und sich die Maßnahme der spekulativen Instruktionsvorladung nicht verlangsamend auf Nachbarkanäle auswirkt.
  7. Verfahren nach Anspruch 6, bei dem zur Lokalisierung des korrekten Quellregisters bei einem Daten-Hazard zusätzlich noch die aktuelle Kanalnummer einer Pipelinestufe ausgewertet wird, um die korrekten Forwarding-Pfade zu aktivieren, um ein Löschen der Pipeline zu vermeiden.
  8. Verfahren nach einem der Ansprüche 1 bis 7, bei dem die Behandlung von mehreren Ausnahmeereignissen durchgeführt wird und in diesem Fall eine individuelle Gewichtung der Priorität für alle Ausnahmeereignisses vorgenommen wird.
  9. Verfahren nach Anspruch 8, bei dem nach vollständiger Behandlung des Ausnahmeereignisses wieder eine Gleichverteilung der Berechnungskapazitäten für alle, außer den zuvor priorisierten Kanälen, nach der ursprünglichen Worst-Case Execution-Time von T = N·TCLK gilt.
  10. Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, die dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 9 auszuführen.
  11. Schaltungsanordnung nach Anspruch 10, wobei die Schaltungsanordnung (10) dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen und zu steuern, dass die Aufgaben (s) in einer vorzugegebenden Reihenfolge bearbeitet und Aufgaben (s) ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden, wobei die Schaltungsanordnung (10) eine Priorisierungsreihenfolgenregelung umfasst, die dazu konfiguriert ist, zu bestimmen, in welcher Reihenfolge die Aufgaben (s) abzuarbeiten sind, wobei bei jeder Auswahl einer Aufgabe (s) zur Bearbeitung die Reihenfolge für die Aufgaben (s) neu bestimmt wird und die Auswahl so gesteuert wird, dass für eine Anzahl N von Aufgaben (s) maximal N Zeiteinheiten vergehen, bis eine aktive Aufgabe (s) erneut Verarbeitungskapazität von der Verarbeitungseinheit zugeteilt bekommt.
DE102016210345.8A 2016-06-10 2016-06-10 Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung Pending DE102016210345A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102016210345.8A DE102016210345A1 (de) 2016-06-10 2016-06-10 Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016210345.8A DE102016210345A1 (de) 2016-06-10 2016-06-10 Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung

Publications (1)

Publication Number Publication Date
DE102016210345A1 true DE102016210345A1 (de) 2017-12-14

Family

ID=60419829

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016210345.8A Pending DE102016210345A1 (de) 2016-06-10 2016-06-10 Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung

Country Status (1)

Country Link
DE (1) DE102016210345A1 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010003521A1 (de) 2010-03-31 2011-10-06 Robert Bosch Gmbh Modulare Struktur zur Datenverarbeitung
DE102010003512A1 (de) 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten
DE102011083468A1 (de) 2011-09-27 2013-03-28 Robert Bosch Gmbh Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010003521A1 (de) 2010-03-31 2011-10-06 Robert Bosch Gmbh Modulare Struktur zur Datenverarbeitung
DE102010003512A1 (de) 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten
DE102011083468A1 (de) 2011-09-27 2013-03-28 Robert Bosch Gmbh Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung

Similar Documents

Publication Publication Date Title
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
EP1917581B1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE102004061339A1 (de) Scheduling-Verfahren, insbesondere Kontex-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Scheduling-Verfahren
DE102016221526A1 (de) Vorrichtung und Verfahren zum Bearbeiten einer Mehrzahl Aufgaben
WO2011120814A1 (de) Geteilte zentrale verarbeitung von daten
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
DE102011083468A1 (de) Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung
DE102016210345A1 (de) Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung
DE102004059972A1 (de) Thread-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Thread-Scheduling-Verfahren
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102016210432A1 (de) Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung
WO2012051972A2 (de) Verfahren, zur effizienten nutzung eines zwei- oder mehrkernprozessors durch ein betriebssystem
EP1917587B1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems
DE102019219260A1 (de) Verfahren zum Betreiben einer Recheneinheit
DE2507405A1 (de) Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage
DE102017206626A1 (de) Verfahren und Vorrichtung zum Steuern von Prozessen
EP2758886B1 (de) Zugangssteuerung zu einem gemeinsam exklusiv nutzbaren übertragungsmedium
DE10228778A1 (de) Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros
EP2160670A1 (de) Prozessor und verfahren zu seiner ansteuerung
AT513762B1 (de) Verfahren zum Schutz vor Unterbrechung einer festgelegten Befehlssequenz eines Prozesses durch einen anderen Prozess in einer Datenverarbeitungsanlage
WO2011120812A1 (de) Zyklischer priorisierungswechsel bei einer datenverarbeitung

Legal Events

Date Code Title Description
R012 Request for examination validly filed