-
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.
-
-
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:
-
-
-
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.