DE102011083468A1 - Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung - Google Patents

Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung Download PDF

Info

Publication number
DE102011083468A1
DE102011083468A1 DE201110083468 DE102011083468A DE102011083468A1 DE 102011083468 A1 DE102011083468 A1 DE 102011083468A1 DE 201110083468 DE201110083468 DE 201110083468 DE 102011083468 A DE102011083468 A DE 102011083468A DE 102011083468 A1 DE102011083468 A1 DE 102011083468A1
Authority
DE
Germany
Prior art keywords
tasks
processing
processing unit
task
circuit arrangement
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
DE201110083468
Other languages
English (en)
Inventor
Eberhard Boehl
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 DE201110083468 priority Critical patent/DE102011083468A1/de
Priority to US13/609,795 priority patent/US8973006B2/en
Priority to FR1258987A priority patent/FR2980611A1/fr
Priority to CN201210363054.5A priority patent/CN103176835B/zh
Publication of DE102011083468A1 publication Critical patent/DE102011083468A1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

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)

Abstract

Die vorliegende Erfindung betrifft eine Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei die Schaltungsanordung dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugegebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden, wobei die Schaltungsanordnung eine Priorisierungsreihenfolgenregelung umfasst, die bestimmt, in welcher Reihenfolge die Aufgaben abgearbeitet 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. Ferner betrifft die vorliegende Erfindung ein entsprechendes Verfahren.

Description

  • Die Erfindung betrifft eine Schaltungsanordnung für ein Datenverarbeitungssystem zur Abarbeitung von einer Mehrzahl von Aufgaben mittels einer zentralen Verarbeitungseinheit und ein entsprechendes Verfahren zur Abarbeitung von einer Mehrzahl von Aufgaben in einem datenverarbeitenden System.
  • 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.
  • 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 zuzuordnenden Prioritäten und die Abarbeitungszeit hochpriorisierter 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 oben 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.
  • Allerdings hat sich in der Vergangenheit gezeigt, dass solche Garantien sehr aufwändig sein können und darüber hinaus die Leistungsfähigkeit des zugrundeliegenden Systems einschränken können. Ferner ist hier ein Interrupt-Controller notwendig, der zudem mit einer Prioritätssteuerung ausgestattet sein muss.
  • Es ist bereits beschrieben worden, wie durch eine zyklische Abfrage aller Aufgaben, auch solcher ohne Anforderungen, entschieden werden kann, welche Aufgabe bearbeitet werden soll. Dazu wurde eine Schaltungsanordnung vorgestellt, die in einer datenverarbeitenden Architektur implementiert ist und dazu konfiguriert ist, der dem System zur Verfügung stehenden Verarbeitungseinheit die zu bearbeitenden Aufgaben entsprechend zuzuweisen. Die Schaltungsanordnung steuert dabei, dass die Verarbeitungskapazität der Verarbeitungseinheit gleichmäßig und unabhängig von einem Bedarf der jeweiligen Aufgaben auf die jeweiligen Aufgaben bis zu deren jeweiliger Abarbeitung aufgeteilt und den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zugeordnet wird. Dadurch wird erreicht, dass jede Aufgabe innerhalb einer bestimmten Zeit, insbesondere innerhalb der oben genannten Worst-Case Execution Time (WCET) automatisch abgearbeitet wird, unabhängig von einer zuvor vorgenommenen Priorisierung. Die Zeitspanne zwischen zwei bei der Ablaufplanung getroffenen Planungszeiten entspricht dabei stets der Anzahl der Aufgaben N multipliziert mit einer Taktdauer TCLK, während welcher eine Aufgabe jeweils bearbeitet wird. Diese Größe wird im Folgenden auch als Ausführungszeit einer Aufgabe T bezeichnet.
  • Ferner wurde bereits eine Schaltungsanordnung vorgestellt, welche einen modifizierten Algorithmus zur Ablaufplanung implementiert, wobei eine Priorisierung von sogenannten aktiven Aufgaben vorgenommen wird. Inaktive Aufgaben, die ohnehin keine Verwendung für die Rechenkapazität einer ALU oder einer CPU haben, werden dabei in die Ablaufplanung nicht mit einbezogen, wodurch im Mittel eine Beschleunigung der Bearbeitung erreicht wird.
  • Der dabei erfolgende zyklische Priorisierungswechsel bei der Verarbeitung von Aufgaben/Daten hat allerdings den Nachteil, dass der zugrundeliegende Algorithmus zur Ablaufplanung im Verarbeitungssystem mit mehreren sogenannten Pipeline-Stufen dazu führen kann, dass die Ausführungszeit T größer ist als das oben genannte Produkt aus Anzahl der Aufgaben N und der Taktdauer TCLK.
  • Demnach wäre es wünschenswert, eine Möglichkeit vorzusehen, die zur Verfügung stehende Arbeitskapazität einer zentralen Recheneinheit bzw. CPU so zu nutzen, dass auf einfache Weise gewährleistet ist, dass jede abzuarbeitende Aufgabe, die aktuell eine Bearbeitung anfordert, innerhalb einer bestimmten Zeit abgearbeitet wird, wobei ferner gewährleistet wird, dass eine maximale Ausführungszeit nicht überschritten wird.
  • Vor diesem Hintergrund werden eine Schaltungsanordnung gemäß Patentanspruch 1 sowie ein entsprechendes Verfahren mit den Merkmalen von Patentanspruch 10 bereitgestellt.
  • Die erfindungsgemäß vorgesehene Schaltungsanordnung kann bspw. in einer datenverarbeitenden Architektur implementiert sein und einer dem datenverarbeitenden System zur Verfügung stehenden Verarbeitungseinheit, bspw. einer CPU oder ALU, aktuell zu bearbeitende Aufgaben entsprechend zuweisen. Geeignete Ausführungsformen der erfindungsgemäß vorgestellten Schaltungsanordnung sowie des erfindungsgemäß vorgestellten Verfahrens ergeben sich aus den jeweils abhängigen Ansprüchen und der Beschreibung.
  • Kern und Vorteile der Erfindung
  • Erfindungsgemäß wird eine Schaltungsanordnung für ein datenverarbeitendes System, insbesondere für ein zyklisches Datenverarbeitungssystem, zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität vorgeschlagen. Die Schaltungsanordnung ist dabei dazu konfiguriert, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugegebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden. Erfindungsgemäß umfasst die Schaltungsanordnung dabei eine Priorisierungsreihenfolgenregelung, die dazu ausgelegt ist, zu bestimmen, in welcher Reihenfolge die Aufgaben abzuarbeiten sind, wobei bei jeder aktuellen Auswahl einer Aufgabe zur Bearbeitung die Reihenfolge für die Bearbeitung der 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.
  • Die erfindungsgemäß vorgesehene Schaltungsanordnung umfasst einen Algorithmus zur Ablaufplanung von Aufgaben in zyklischen Datenverarbeitungssystemen, wobei ein Aktivitätsstatus aller Aufgaben bewertet wird, um so eine Beschleunigung einer entsprechenden Datenverarbeitung herbeizuführen. Überdies gewährleistet der in der Schaltungsanordnung implementierte Algorithmus eine maximale Ausführungszeit von T = N·TCLK, so dass in keinem Fall die eingangs erwähnte Worst-Case Execution Time überschritten wird.
  • Die erfindungsgemäß vorgeschlagene Schaltungsanordnung bzw. das erfindungsgemäß vorgeschlagene Verfahren können in einem sogenannten Multichannel Sequencer (MCS) eines Generic Timer Modules (GTM) implementiert werden.
  • Dabei bedient der Multi Channel Sequencer mehrere Kanäle. Erfindungsgemäß kann vorgesehen sein, dass die Schaltungsanordnung dazu konfiguriert ist, jeder der zu bearbeitenden Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit auszuwählen und mit der Verarbeitungseinheit zu verbinden.
  • Ferner kann vorgesehen sein, dass die Schaltungsanordnung dazu konfiguriert ist, die Verarbeitungseinheit jeder der Aufgaben mit aktueller Bearbeitungsanforderung, d. h. jeder der sogenannten aktiven Aufgaben, jeweils für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zuzuordnen. Als passive Aufgabe bezeichnet man dabei Aufgaben ohne aktuelle Bearbeitungsanforderung, d. h. Aufgaben, die aktuell keine Bearbeitung signalisieren. Aktive Aufgaben sind im Rahmen der vorliegenden Beschreibung demgegenüber Aufgaben, die eine aktuelle Bearbeitungsanforderung stellen und diese entsprechend signalisieren, so dass sie bei der Bearbeitung durch die Bearbeitungseinheit berücksichtigt werden.
  • Die erfindungsgemäß vorgesehene Schaltungsanordnung sieht demnach vor, die Verarbeitungskapazität bzw. Rechenkapazität der in dem datenverarbeitenden System vorgesehenen Verarbeitungseinheit, wie bspw. eine ALU oder CPU gleichmäßig auf alle aktiven Aufgaben (Tasks) aufzuteilen.
  • Gemäß einer weiteren Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung entspricht die Zeitdauer, die jede Aufgabe, d. h. jeder Task zusammenhängend zur Verfügung gestellt wird, dabei genau einem Takt der Verarbeitungseinheit. Dabei ist bei der erfindungsgemäßen Schaltungsanordnung eine Priorisierungsreihenfolgenregelung vorgesehen, mittels derer bestimmt wird, in welcher Reihenfolge die Aufgaben abzuarbeiten sind bzw. abgearbeitet werden sollen. Das bedeutet erfindungsgemäß, dass bei jeder aktuellen Auswahl einer Aufgabe zur Bearbeitung die Priorisierungsreihenfolge für die Bearbeitung der Aufgaben jeweils neu bestimmt wird.
  • Gemäß einer Ausführungsform der Erfindung ist dabei vorgesehen, dass die Reihenfolge der abzuarbeitenden Aufgaben durch eine Liste (im Folgenden Prioritätenliste genannt) mit Listenstellen mit aufsteigender Priorität bestimmt ist und eine zur Bearbeitung aktuell ausgewählte Aufgabe dann an die Listenstelle mit niedrigster Priorität zu setzen ist. Die Prioritätenliste besitzt stets eine gleiche Länge, d. h. eine gleiche Anzahl von Listenstellen entsprechend der Anzahl von Aufgaben. Das letzte Listenelement bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit höchster Priorität behandelt wird. Das Vorgängerelement der Prioritätenliste bezeichnet dabei eine Aufgabe, die beim anstehenden Ablaufplanungsschritt mit zweithöchster Priorität behandelt wird usw.
  • Die Prioritätenliste wird zum Zeitpunkt eines Schaltung-Resets der Schaltungsanordnung mit den Werten: LPRIO[i] = i für alle i = 0 ..., N – 1 initialisiert.
  • Gemäß einer weiteren Ausführungsform der erfindungsgemäßen Schaltungsanordnung ist vorgesehen, dass den Aufgaben ohne aktuelle Bearbeitungsanfrage in der Liste zugeordnete Listenstellen gleich bleiben, aber so unter den Aufgaben ohne aktuelle Bearbeitungsanfrage rotieren, dass der Aufgabe ohne Bearbeitungsanfrage mit der aktuell höchsten Priorität dann die Listenstelle mit niedrigster Priorität zuzuordnen ist.
  • Ferner ist die Schaltungsanordnung in einer weiteren Ausführungsform dazu konfiguriert, jeder der Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit auszuwählen und mit der Verarbeitungseinheit zu verbinden.
  • Dabei wird die Verarbeitungseinheit jeder der Aufgaben mit aktueller Bearbeitungsanforderung jeweils spätestens nach einer maximalen Wartezeit und dann für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zugeordnet.
  • Die Zeitdauer kann einem Takt eines Takt-Zyklus der Verarbeitungseinheit entsprechen.
  • Die definierte maximale Wartezeit ergibt sich gemäß einer möglichen Ausgestaltung der Schaltungsanordnung aus dem Produkt der Anzahl der Aufgaben und der konstanten Zeitdauer (Zeiteinheit), in welcher die Verarbeitungseinheit einer jeweiligen Aufgabe zur Bearbeitung zugeordnet und mit dieser verbunden ist.
  • Ferner kann die erfindungsgemäße Schaltungsanordnung dazu konfiguriert sein, eine Abarbeitung von Befehlen der jeweiligen Register der jeweiligen Kanäle der Aufgaben mit aktueller Bearbeitungsanforderung als aktiven Aufgaben in einer Pipeline mit mehreren Pipeline-Stufen vorzusehen, wobei die jeweiligen Register zum Zeitpunkt der Abarbeitung in entsprechend getaktete Pipeline-Register der Pipeline umgeschaltet werden und die Pipeline-Stufen in einem Zeitabschnitt parallel, aber jeweils für verschiedene Kanäle verarbeitet werden.
  • Befehlsdekodierung und Speicherzugriffe für eine erste aktive Aufgabe erfolgen dabei geeigneterweise jeweils in Zeitabschnitten, in welchen mindestens einer zweiten aktiven Aufgabe die Verarbeitungseinheit zugeordnet ist.
  • Ferner betrifft die vorliegende Erfindung ein Verfahren zur Abarbeitung einer Mehrzahl von Aufgaben in einem datenverarbeitenden System, insbesondere in einem zyklischen Datenverarbeitungssystem mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität. Dabei ist vorgesehen, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, die Aufgaben in einer vorzugebenden Reihenfolge zu bearbeiten und Aufgaben ohne aktuelle Bearbeitungsanfrage in der Reihenfolge bei der Bearbeitung zu überspringen. Dabei wird in der Reihenfolge, in welcher die Aufgaben abgearbeitet werden sollen eine Priorisierung der Aufgaben vorgenommen und bei jeder Auswahl einer aktuell zu bearbeitenden Aufgabe die Reihenfolge für die Bearbeitung der Aufgaben neu bestimmt, wobei 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.
  • 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 alleine verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
  • 1 zeigt ein Architekturmodell, in welchem das erfindungsgemäß vorgeschlagene Verfahren ausgeführt werden kann.
  • 2 zeigt eine mögliche Ausführungsform eines Pipelining, gemäß welchem Befehlsverarbeitungen gemäß dem erfindungsgemäß vorgeschlagenen Verfahren vorgenommen werden können.
  • 3 zeigt in schematischer Darstellung eine Ausführungsform einer erfindungsgemäßen Schaltungsanordnung.
  • Ausführungsformen der Erfindung
  • Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird unter Bezugnahme auf die Zeichnungen schematisch ausführlich beschrieben. Dabei wird eine detaillierte Beschreibung in Aufbau und Funktion gegeben.
  • Das erfindungsgemäß vorgeschlagene Verfahren bzw. die erfindungsgemäß vorgesehene Schaltungsanordnung kann bspw. in einem sogenannten Multi Channel Sequencer (MCS) eines generic timer modules (GTM) implementiert sein, wobei eine mögliche Architektur eines derartigen Multi Channel Sequencers in 1 dargestellt ist.
  • Der hier dargestellte Multi Channel Sequencer (MCS) 100 bedient mehrere Kanäle, bspw. 8 oder 16, was den zu verarbeitenden Aufgaben entspricht. Das bedeutet, dass jeder zu verarbeitenden Aufgabe ein Kanal zugeteilt wird. Der MCS 100 verfügt über eine zentrale Verarbeitungseinheit 10, wie bspw. eine ALU, und einen Speicher 20, wie bspw. ein RAM. In dem hier dargestellten Fall werden seitens des MCS N Kanäle bedient, wobei jeder Kanal ein eigenes Micro-Programm besitzt, das an unterschiedlichen Stellen des Speichers untergebracht ist. Zur Abarbeitung diese Programms besitzt jeder Kanal ein eigenes Befehlsregister (IR) 35, einen eigenen Befehlszähler (PC) 25, ein eigenes Status-Register (STA) 45 und eigene sogenannte General Purpose Register (GPR) 55, die in der vorliegenden Darstellung mit 0... K – 1 bezeichnet sind.
  • Das bedeutet, dass in der hier dargestellten MCS-Architektur N Befehlsregister (N·IR) 35, N Befehlszähler (N·PC) 25 und N Status-Register (N·STA) 45 dargestellt sind. Ferner besitzt jeder Kanal eine eigene Schnittstelle 30, wie bspw. ein ARU-Interface, über die Daten in den jeweiligen GRPs 55 asynchron, d. h. ohne ein Warten auf Bearbeiten eines entsprechenden Kanals, aktualisiert werden können bzw. Daten ausgegeben werden können.
  • Die Mehrzahl der vorhandenen Schnittstellen 30, entsprechend der Anzahl von Kanälen, wird durch ein angedeutetes "Übereinanderlegen" der die Schnittstellen jeweils repräsentierenden Symbole deutlich gemacht. Gleiches gilt für die Mehrzahl von Befehlsregistern 35, Befehlszählern 25, General Purpose Registern 55 und Status-Registern 45 und ABC Registern 65.
  • Zu Synchronisationszwecken wird eine Bearbeitung eines Kanals blockiert, was bedeutet, dass eine durchzuführende Operation und damit ein weiterer Programmablauf des entsprechenden Kanals erst dann erfolgt, wenn angeforderte Daten über das jeweilige, dem entsprechenden Kanal zugeordnete ARU-Interface 30 eingetroffen oder abgeholt worden sind. Ferner ist in der hier dargestellten Architektur vorgesehen, dass ein ARU-Interface 30 eines Kanals jeweils durch ein eigenes Kontroll-Bit-Register (ACB) 65 komplettiert wird. Diese Kontrollbits werden mit den Daten der GPRs 55 an das ARU-Interface 30 weitergeleitet bzw. werden mit jedem ARU-Lesebefehl aktualisiert. Der blockierende Zustand eines Kanals wird durch Setzen eines entsprechenden Bits (z. B. im Status-Register (STA) 45) signalisiert. Alle anderen Kanäle arbeiten ihr Programm weiterhin ab. Das Aufheben eines blockierenden Befehls wird asynchron (d. h. unabhängig davon, ob der Kanal sich in der Pipeline befindet) über das ARU-Interface 30 veranlasst, sobald Daten der General Purpose Register 55 empfangen bzw. gesendet wurden.
  • Alle von der MCS 100 bedienten Kanäle benutzen in der hier dargestellten Architektur die gleiche zentrale arithmetisch-logische Einheit 10 (ALU), den gleichen Instruktions-Dekoder 40, den gleichen Instruktions-Predekoder 50, den gleichen Speicher 20 und den gleichen Adress-Dekoder 15 für den Speicher 20, wie in 1 dargestellt ist. In der hier dargestellten MCS Architektur 100 greift eine Host-CPU über ein Host-CPU-Interface 60 über den Speicher 20 (RAM) in den Ablauf ein, d. h. Daten werden in einem dafür reservierten Zyklus von oder zum Handshake-Interface 60 der Host-CPU übergeben.
  • Eine Abarbeitung von Befehlen/Aufgaben gemäß einer möglichen Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung wird in einer Pipeline mit einer Mehrzahl von Pipeline-Stufen vorgenommen. Dabei werden vorzugsweise vier Pipeline-Stufen unterschieden. Die Pipeline bzw. Befehls-Pipeline bezeichnet eine Art Fließband, mit dem die Abarbeitung von Befehlen in Teilbefehle entsprechend der Anzahl der Pipeline-Stufen zerlegt wird, wobei die Pipeline-Stufen für mehrere Kanäle (d. h. Aufgaben) parallel durchgeführt werden können, aber jeweils für einen anderen Kanal (siehe 2). Das bedeutet, dass anstelle, dass eine Aufgabe während eines Bearbeitungszyklus der Verarbeitungseinheit vollständig abgearbeitet wird, lediglich jeweils eine Teilaufgabe abgearbeitet wird, wobei dabei allerdings verschiedene Teilaufgaben mehrerer Aufgaben gleichzeitig bearbeitet werden. Die Pipeline-Stufen können dabei vorzugsweise sein:
    Stage 0: RAM-Zugriffsdekodierung
    Stage 1: RAM-Zugriff
    Stage 2: Befehls-Vordekodierung
    Stage 3: Befehlsabarbeitung
  • In Stage 0 werden zunächst Adressen und Steuersignale für den in der nächsten Pipeline-Stufe anstehenden RAM-Zugriff gebildet. Ein RAM-Zugriff kann das Lesen eines Datums oder eines Befehls oder das Schreiben eines Datums sein. Im Falle des Lesens eines Befehls wird die Adresse aus dem betreffenden Befehlszähler (PC) gebildet. Stage 0 wird in 1 und 2 jeweils mit dem Bezugszeichen 0 dargestellt.
  • In Stage 1 erfolgt dann der Zugriff auf den Arbeitsspeicher 20 (RAM), wobei der entsprechende Befehl aus dem Arbeitsspeicher 20 geladen wird. Stage 1 wird in 1 und 2 jeweils mit Bezugszeichen 1 dargestellt.
  • In Stage 2 erfolgt dann mittels des Instruktions-Predekoders 50 eine Befehls-Vordekodierung. Stage 2 wird in 1 und 2 jeweils mit Bezugszeichen 2 dargestellt.
  • In Stage 3 erfolgt letztlich die Befehlsabarbeitung, welche für alle Aufgaben durch ein und dieselbe Verarbeitungseinheit 10, wie bspw. eine ALU vorgenommen wird. Stage 3 wird in 1 und 2 jeweils mit Bezugszeichen 3 dargestellt.
  • Alle Pipeline-Stufen bzw. Pipeline-Stages werden parallel verarbeitet, aber jeweils für einen anderen Kanal bzw. eine dem entsprechenden Kanal zugeteilten Aufgabe. Allerdings erfolgt die Verarbeitung gemäß der hier vorgeschlagenen Schaltungsanordnung nur für aktive Aufgaben bzw. damit verbundenen aktiven Kanälen. Die Art der zeitlichen Abarbeitung ist in 2 mit Hilfe eines sogenannten Pipeline-Flows dargestellt. Wenn Kanal Ca 204 zunächst mit der Dekodierung der RAM-Adresse beginnt (Stage 0) wird Kanal Ca im nächsten Takt den RAM-Zugriff ausführen (Stage 1), während Kanal Cb 206 mit der Dekodierung der RAM-Adresse beschäftigt ist (Stage 0). Die entsprechenden "eigenen" Register N·PC bzw. N·IR, jeweils dargestellt in 1 durch 25 bzw. 35 werden je nach Kanal automatisch dazugeschaltet. Befehle, die nur einen Bearbeitungszyklus Ausführungszeit benötigen, verarbeiten in Stage 3 die Operanden 200 und ggf. 300 aus den eigenen Registern oder den Direktoperanden aus dem Befehlswort und schreiben das Ergebnis in die entsprechenden Register zurück. Für ein Rückschreiben von Daten in den Speicher 20 (RAM) wird ein weiterer Bearbeitungszyklus benötigt. Dazu wird im Statusregister STA 45 des entsprechenden Kanals ein Bit gesetzt, das das Rückschreiben im nächsten Befehlszyklus bewirkt. Das bedeutet, dass, wenn der entsprechende Kanal wieder in Stage 0 bearbeitet wird, die entsprechende RAM-Adresse dekodiert wird, und die Daten dann in Stage 1 aus dem entsprechenden General Purpose Register (GPR) 55 in den Speicher 20 (RAM) geschrieben werden. Ähnlich verhält es sich mit den Operanden aus dem Speicher 20 (RAM). Ein ganzer Pipeline-Ablauf wird benötigt, um Daten aus dem Speicher 20 (RAM) in das entsprechende GPR-Register 55 zu laden. Erst beim nächsten Bearbeitungszyklus kann dann dieser Operand verarbeitet werden. Für Befehle, die mehrere Bearbeitungszyklen benötigen, ist zu beachten, dass die entsprechende Aufgabe bzw. der entsprechende Kanal aktiv bleibt d. h. ein entsprechendes Anforderungssignal RDYi gesetzt bleibt, bis der Befehl vollständig abgearbeitet ist.
  • Ein Spezialregister TRG 75 schafft die Möglichkeit einer Triggerung von Kanälen untereinander. Die Kanäle selbst können durch zeit- oder positionsbezogene Signale (TBU-Time Base Unit) 85 ein Ereignis in einen aktuellen Zeitbezug versetzen oder in Abhängigkeit von Positionen steuern. Dieser Vergleich wird in der Verarbeitungseinheit 10, bspw. einer ALU, durchgeführt, bei dem z.B. die TBU (Time Base Unit, hier nicht dargestellt) einen Operanden 85 bereitstellen kann. Ein Zugriff auf Daten der jeweiligen Schnittstelle 30, bspw. eines ARU-Interfaces, wird von dem entsprechenden Kanal erwartet und durch das blockierende Lesen wird gewährleistet, dass es zu keiner Dateninkonsistenz kommen kann.
  • Der Instruktions-Predekoder 50 ermöglicht das Bereitstellen eines Datums aus dem Speicher 20 (RAM) im nächsten Betriebszyklus. Dazu wird ein RAM-Datum in eine Instruktion gewandelt, die das Datum in das geforderte Zielregister schreibt. Außerdem sorgt der Instruktions-Predekoder 50 dafür, dass bei aktivierten blockierenden Befehlen (das entsprechende Bit im Kontrollregister ist gesetzt), die nachfolgenden Befehle aus den vorangegangenen Pipeline-Stufen verworfen werden. Während ein blockierender Befehl noch aktiv ist, wird der nachfolgende Befehl bereits in den Pipeline-Stufen 0 und 1 bearbeitet und aus dem RAM transferiert und in Pipeline-Stufe 2 wird entschieden, ob der Befehl nun in der nachfolgenden Pipeline-Stufe 3 verarbeitet wird (falls der blockierende Befehl asynchron über das ARU-Interface beendet wurde) oder verworfen wird (falls der blockierende Befehl noch aktiv ist).
  • Gemäß dem erfindungsgemäß vorgesehenen Verfahren und der erfindungsgemäß vorgesehenen Schaltungsanordnung wird zunächst ermittelt, welcher Kanal, d. h. welche Aufgabe jeweils im Rahmen eines Bearbeitungszyklus als nächstes bearbeitet werden soll. Das erfindungsgemäße 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 Stage 0 eingeschoben wird, einen Algorithmus vor, der mit Hilfe einer Liste, einer sogenannten Prioritätenliste LPRIO eine Ablaufplanung vornimmt. Die Ablaufplanung wird nachfolgend in 3 näher erläutert.
  • Die Prioritätenliste LPRIO besitzt immer eine gleiche Länge, d. h. eine gleiche Anzahl von Listenstellen entsprechend der Anzahl der zu bearbeitenden Aufgaben N.
  • In dieser Prioritätenliste enthält jedes Element eine eindeutige Zuordnung zu einer Aufgabe durch eine Identifikationsnummer (ID) und die Reihenfolge in dieser Liste bestimmt die Priorität, mit der diese Aufgabe abgearbeitet wird. Jede Identifikationsnummer kommt genau einmal in dieser Liste vor.
  • Die Listenstellen der Prioritätenliste werden mit LPRIO[i] (i = 0, ..., N – 1) referenziert. Das letzte Listenelement LPRIO[N – 1] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit höchster Priorität behandelt wird. Das Vorgängerelement LPRIO[N – 2] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit zweit-höchster Priorität behandelt wird, usw. Die Liste wird 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, der in Pipelinestufe Stage 0 eingeschoben, d. h. dessen ihm zugeordnete Aufgabe als nächstes bearbeitet wird.
  • Figure 00130001
  • Die dabei eingehende Funktion is_active(x) ist wahr, wenn Kanal x ein aktiver Kanal ist, der bereit ist, die Rechenkapazität der ALU in Anspruch zu nehmen. Um diesen aktiven Zustand anzuzeigen, gibt jede aktive Aufgabe i ein Anforderungssignal (RDYi) aus.
  • Die ferner eingehende Funktion not_in_pipe(x) ist wahr, falls Kanal x im nächsten Takt nicht mehr in einer Pipelinestufe ist, d. h. aktuell dann nicht mehr bearbeitet wird und somit in Kombination mit einem entsprechenden Anforderungssignal erneut zur Bearbeitung ansteht.
  • Um eine Realisierung der MCS-Hardware zu vereinfachen, darf ein Kanal niemals mehr als einmal in einer Pipelinestufe aktiv sein.
  • Weiterhin wird erfindungsgemäß innerhalb jedes Taktzyklus unmittelbar nach dem Ermitteln von s auch die Prioritätenliste LPRIO[i] wie folgt aktualisiert:
  • Figure 00140001
  • Figure 00150001
  • Wenn sich jede Aufgabe spätestens nach N Takten einmal an der Listenstelle LPRIO[N – 1] (Position mit höchster Priorität) befindet, so ergibt sich für alle aktiven Kanäle x mit wahrem is_active(x) eine maximale Ausführungszeit von T ≤ N Takte (worst case execution time), wenn die Bearbeitungszeit für jede Aufgabe ein Takt ist. Obiger Algorithmus gewährleistet diese Forderung, da sämtliche Listenelemente, d. h. sämtliche Aufgaben in jedem Takt mindestens um eine Stelle weitergeschoben werden und zu jedem Zeitpunkt alle Aufgaben in der Liste enthalten sind.
  • Dabei ist vorgesehen, dass die jeweilige Aufgabe nur dann bearbeitet wird, wenn sie selbst als aktive Aufgabe, wie vorstehend beschrieben, zu betrachten ist. Das bedeutet, dass Aufgaben, die keine Anforderung einer Bearbeitung zu einem aktuellen Zeitpunkt stellen, d. h. kein Anforderungssignal aussenden, bei Abarbeitung in der Reihenfolge der Aufgaben übersprungen werden. Das heißt die Reihenfolge, die vorgegeben wird, umfasst alle zu bearbeitenden Aufgaben, bei Abarbeitung der Aufgaben wird jedoch in der Reihenfolge darauf geachtet, ob die jeweilige Aufgabe, die gemäß der Reihenfolge ansteht, auch als aktive Aufgabe zu betrachten ist, d. h. ob diese Aufgabe aktuell ein Anforderungssignal ausgesendet hat.
  • Jede aktive Aufgabe i und damit verbunden jeder aktive Kanal i, dessen Anforderungssignal somit auf 1 gesetzt ist, d. h. RDYi = 1, wird immer genau einen Takt des Bearbeitungszyklus oder eine andere gleiche Verarbeitungszeit bearbeitet. Ferner kann vorgesehen sein, dass die CPU auch eine sogenannte reservierte Aufgabe bedient, d. h. mindestens ein zusätzlicher Kanal ist dafür reserviert. Als zusätzlicher Kanal wird dabei das Schreiben oder Lesen des RAMs bzw. Speichers 20 angesehen. Da dieser Speicher 20 vorteilhafterweise als single port RAM ausgeführt wird (zum Zwecke der Einsparung von Hardware gegenüber einem dual port RAM), würde ein Schreiben oder Lesen des RAM 20 durch eine Host-CPU über das Host-CPU-Interface 60 möglicherweise zu Konflikten führen, falls ein anderer Prozess gleichzeitig den Zugriff zu dem RAM 20 benötigt. Dieser andere Prozess kann dabei die Ausarbeitung des Programms für einen gerade bearbeiteten Kanal sein. Wenn ein zusätzlicher Kanal für die Host-CPU 60 reserviert wird, dann bekommt nur die Host-CPU über das Host-CPU-Interface 60 in dem entsprechenden Zeitabschnitt 250 den Zugriff auf den RAM 20 (siehe 2). Dabei kann bspw. auch vorgesehen sein, dass über diesen zusätzlichen Kanal mögliche Interrupt-Anforderungen bedient werden, wenn diese Anforderung mit dem Lesen oder Schreiben des RAMs 20 in Verbindung steht.
  • 2 verdeutlicht nochmals die parallele Verarbeitung von Pipeline-Stufen bei N Kanälen. In dem hier dargestellten Fall umfasst die Pipeline 4 Pipeline-Stufen, dargestellt als Stage 0, Stage 1, Stage 2 und Stage 3. Ein Bearbeitungszyklus 202 entspricht bspw. N + 1 Takten. Nach einer Anlaufphase wird in jedem Takt genau ein Kanal einer Pipeline-Stufe zugeordnet und entsprechend bearbeitet. Daher werden die Pipeline-Stufen parallel, aber jeweils für einen anderen Kanal verarbeitet. Wie bereits erwähnt, wird der CPU mindestens ein zusätzlicher Zeitschlitz 250 zugeordnet, wodurch der Bearbeitungszyklus 202 N + 1 Takte umfasst.
  • 2 zeigt im Detail, dass in der ersten Pipeline-Stufe während eines ersten Bearbeitungszyklus 202 nacheinander ein Kanal Ca 204, ein Kanal Cb 206, ein Kanal Cc 208, ein Kanal Cd 210 usw. abgearbeitet bzw. ausgeführt wird. Zuletzt erfolgt während des ersten Bearbeitungszyklus 202 die Abarbeitung bzw. Ausführung eines Kanals Ck 218, welcher den N-ten aktiven Kanal darstellt. Der letzte Zeitschlitz 250 des Bearbeitungszyklus 202 ist für die CPU reserviert bzw. für den für die CPU reservierten Kanal. In einem nachfolgenden Bearbeitungszyklus werden ein Kanal Cx 220, ein Kanal Cy 222, ein Kanal Cz 224 usw. bearbeitet, wobei es sich stets um aktuell aktive Kanäle handelt.
  • Für die weiteren Pipeline-Stufen Stage 1, Stage 2, Stage 3 beginnt eine Bearbeitung der jeweiligen aktiven Kanäle jeweils um einen Takt versetzt.
  • Hierbei ist für die erste Pipeline-Stufe Stage 1 gemäß 2 vorgesehen, dass während des Bearbeitungszyklus 202 Kanal Ca 204, Kanal Cb 206, Kanal Cc 208 usw. bearbeitet bzw. ausgeführt werden. Am Ende des Bearbeitungszyklus 202 werden Kanal Cj 216 und Kanal Ck 218 bearbeitet. Im nachfolgenden Bearbeitungszyklus wird der CPU zunächst ein Zeitschlitz 250 bereitgestellt und nachfolgend werden Kanal Cx 220, Kanal Cy 222 usw. ausgeführt.
  • Ebenfalls um einen Takt versetzt erfolgt für die zweite Pipeline-Stufe 2 während des ersten Bearbeitungszyklus 202 zunächst eine Ausführung bzw. Bearbeitung des Kanals Ca 204 und des Kanals Cb 206. Am Ende des Bearbeitungszyklus werden Kanal Ci 214 und Kanal Cj 216 bearbeitet. Im nächsten Bearbeitungszyklus werden zunächst Kanal Ck 218 abgearbeitet, der Zeitschlitz 250 für die CPU bereitgestellt und dann Kanal Cz usw. abgearbeitet.
  • Für die dritte Pipeline-Stufe 3 wird während des ersten Bearbeitungszyklus 202 Kanal Ca 204 usw. bearbeitet. Am Ende des ersten Bearbeitungszyklus 202 erfolgt eine Bearbeitung bzw. Ausführung eines Kanals Ch 212 und des Kanals Ci 214. Im nächsten Bearbeitungszyklus erfolgt zunächst die Bearbeitung des Kanals Cj 216 und des Kanals Ck 218.
  • Das bedeutet zusammenfassend, dass gemäß der exemplarischen Darstellung in 2 nach einer Anlaufphase in jedem Bearbeitungszyklus bspw. N aktive Aufgaben bearbeitet und zusätzlich ein Zeitschlitz für eine Host-CPU bzw. für einen für die Host-CPU reservierten Kanal bereitgestellt wird, wodurch jeder Bearbeitungszyklus N + 1 Takte umfasst. Die einzelnen aktiven Aufgaben werden jeweils in allen 4 Pipeline-Stufen bearbeitet, wobei dies für eine einzelne aktive Aufgabe zeitversetzt, hier in 2, um einen Takt versetzt erfolgt. Die in 2 dargestellten "..." weisen auf alle aktiven Aufgaben hin, die im Bearbeitungszyklus 202 ohne explizite Benennung bearbeitet werden.
  • 3 zeigt eine Schaltungsanordnung, 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 erfindungsgemäße 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 Stage 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 zweithö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 Stage 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 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 dargestellt) 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-3 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 die 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.

Claims (10)

  1. Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei die Schaltungsanordung dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugegebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden, wobei die Schaltungsanordnung eine Priorisierungsreihenfolgenregelung umfasst, die dazu konfiguriert ist, zu bestimmen, in welcher Reihenfolge die Aufgaben abzuarbeiten sind, 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.
  2. Schaltungsanordnung nach Anspruch 1, wobei die Reihenfolge der abzuarbeitenden Aufgaben durch eine Liste mit Listenstellen mit aufsteigender Priorität bestimmt ist und eine zur Bearbeitung aktuell ausgewählte Aufgabe an die Listenstelle mit niedrigster Priorität zu setzen ist.
  3. Schaltungsanordnung nach Anspruch 2, wobei den Aufgaben ohne aktuelle Bearbeitungsanfrage in der Liste zugeordnete Listenstellen gleich bleiben, aber so unter den Aufgaben ohne aktuelle Bearbeitungsanfrage rotieren, dass der Aufgabe ohne Bearbeitungsanfrage mit der aktuell höchsten Priorität dann die Listenstelle mit niedrigster Priorität zuzuordnen ist.
  4. Schaltungsanordnung nach einem der voranstehenden Ansprüche, wobei die Schaltungsanordnung ferner dazu konfiguriert ist, jeder der Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit auszuwählen und mit der Verarbeitungseinheit zu verbinden.
  5. Schaltungsanordnung nach einem der voranstehenden Ansprüche, wobei die Schaltungsanordnung ferner dazu konfiguriert ist, die Verarbeitungseinheit jeder der Aufgaben mit aktueller Bearbeitungsanforderung jeweils spätestens nach einer maximalen Wartezeit und dann für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zuzuordnen.
  6. Schaltungsanordnung nach Anspruch 5, wobei die Zeitdauer als Zeiteinheit einem Takt der Verarbeitungseinheit entspricht.
  7. Schaltungsanordnung nach einem der Ansprüche 4 bis 6, wobei die Schaltungsanordnung ferner dazu konfiguriert ist, eine Abarbeitung von Befehlen der jeweiligen Register der jeweiligen Kanäle der Aufgaben mit aktueller Bearbeitungsanforderung als aktiven Aufgaben in einer Pipeline mit mehreren Pipeline-Stufen vorzusehen, wobei die jeweiligen Register zum Zeitpunkt der Abarbeitung in entsprechend getaktete Pipeline-Register der Pipeline umgeschaltet werden und die Pipeline-Stufen in einem Zeitabschnitt parallel, aber jeweils für verschiedene Kanäle verarbeitet werden.
  8. Schaltungsanordnung nach Anspruch 7, wobei Befehlsdekodierung und Speicherzugriffe für eine erste aktive Aufgabe jeweils in Zeitabschnitten erfolgen, in welchen mindestens einer zweiten aktiven Aufgabe die Verarbeitungseinheit zugeordnet ist.
  9. 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.
  10. Verfahren nach Anspruch 9, wobei jeder der Aufgaben jeweils ein Kanal mit eigenen Registern zugeteilt wird und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit ausgewählt und mit der Verarbeitungseinheit verbunden werden.
DE201110083468 2011-09-27 2011-09-27 Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung Pending DE102011083468A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE201110083468 DE102011083468A1 (de) 2011-09-27 2011-09-27 Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung
US13/609,795 US8973006B2 (en) 2011-09-27 2012-09-11 Circuit arrangement for execution planning in a data processing system
FR1258987A FR2980611A1 (fr) 2011-09-27 2012-09-25 Circuit pour planifier le deroulement d'un traitement de donnees
CN201210363054.5A CN103176835B (zh) 2011-09-27 2012-09-26 用于在数据处理中规划流程的电路装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201110083468 DE102011083468A1 (de) 2011-09-27 2011-09-27 Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung

Publications (1)

Publication Number Publication Date
DE102011083468A1 true DE102011083468A1 (de) 2013-03-28

Family

ID=47827713

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201110083468 Pending DE102011083468A1 (de) 2011-09-27 2011-09-27 Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung

Country Status (4)

Country Link
US (1) US8973006B2 (de)
CN (1) CN103176835B (de)
DE (1) DE102011083468A1 (de)
FR (1) FR2980611A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016210432A1 (de) 2016-06-13 2017-12-14 Robert Bosch Gmbh Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung
DE102016210345A1 (de) 2016-06-10 2017-12-14 Robert Bosch Gmbh Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010003512A1 (de) * 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW405090B (en) * 1997-04-04 2000-09-11 Ibm Predictive cache loading by program address discontinuity history
US7055151B1 (en) * 1998-04-03 2006-05-30 Applied Micro Circuits Corporation Systems and methods for multi-tasking, resource sharing and execution of computer instructions
EP1194842A2 (de) * 1999-12-30 2002-04-10 Koninklijke Philips Electronics N.V. Mehrprozesssoftwarearchitektur
JP5836585B2 (ja) * 2010-02-09 2015-12-24 キヤノン株式会社 データ処理装置及びその制御方法、プログラム
DE102010003512A1 (de) * 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten
CN101887382B (zh) * 2010-06-28 2016-11-23 南京中兴软件有限责任公司 动态优先级的仲裁方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016210345A1 (de) 2016-06-10 2017-12-14 Robert Bosch Gmbh Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung
DE102016210432A1 (de) 2016-06-13 2017-12-14 Robert Bosch Gmbh Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung

Also Published As

Publication number Publication date
US8973006B2 (en) 2015-03-03
CN103176835B (zh) 2018-10-09
FR2980611A1 (fr) 2013-03-29
CN103176835A (zh) 2013-06-26
US20130081041A1 (en) 2013-03-28

Similar Documents

Publication Publication Date Title
DE60307532T2 (de) Paralleles Prozess-Ausführungsverfahren und Mehrprozessorenrechner
DE10110504B4 (de) Verfahren und Computersystem zur Verwaltung von Threads
DE19728726B4 (de) Robotercontroller und dessen Steuerverfahren
DE60226176T2 (de) Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
EP0762274B1 (de) Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE10392278T5 (de) Verfahren und Vorrichtung zur Speicherzugangssteuerung
DE19506435A1 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE60125540T2 (de) Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt
EP2541348B1 (de) Verfahren und Programmiersystem zur Programmierung einer Automatisierungskomponente
DE102011083468A1 (de) Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung
WO2011120814A1 (de) Geteilte zentrale verarbeitung von daten
DE202004021684U1 (de) Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
WO2011063869A1 (de) Verfahren zum ermöglichen einer sequentiellen, nicht blockierenden abarbeitung von anweisungen in nebenläufigen tasks in einer steuereinrichtung
DE19983709B4 (de) Einplanung von Ressourcenanforderungen in einem Computersystem
DE102015100566A1 (de) Verfahren und leichter Mechanismus für gemischte kritische Anwendungen
DE112004002368T5 (de) Prozessor und Verfahren zur Unterstützung eines kompilierergerichteten Managements von Multi-Threading
DE10039277A1 (de) Verfahren für die termingerechte Ausführung einer Zielfunktion
DE2507405C2 (de) Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage
EP4016296A1 (de) Fahrzeugsteuergerät mit synchronem treiber
EP1917587B1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems
DE102019219260A1 (de) Verfahren zum Betreiben einer Recheneinheit
WO2007048675A1 (de) Verfahren zum implementieren von software-timern und datenverarbeitungssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed