DE102010003565A1 - Zyklischer Priorisierungswechsel bei einer Datenverarbeitung - Google Patents

Zyklischer Priorisierungswechsel bei einer Datenverarbeitung Download PDF

Info

Publication number
DE102010003565A1
DE102010003565A1 DE201010003565 DE102010003565A DE102010003565A1 DE 102010003565 A1 DE102010003565 A1 DE 102010003565A1 DE 201010003565 DE201010003565 DE 201010003565 DE 102010003565 A DE102010003565 A DE 102010003565A DE 102010003565 A1 DE102010003565 A1 DE 102010003565A1
Authority
DE
Germany
Prior art keywords
tasks
processing
task
processing unit
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
DE201010003565
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 DE201010003565 priority Critical patent/DE102010003565A1/de
Priority to PCT/EP2011/054014 priority patent/WO2011120812A1/de
Publication of DE102010003565A1 publication Critical patent/DE102010003565A1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

Die 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 Schaltungsanordnung dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden. Ferner betrifft die vorliegende Erfindung ein entsprechendes Verfahren und ein entsprechendes Computerprogramm.

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- und 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 arithmetische-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 gegebenenfalls wiederum unterschiedlichen Aufgaben (Tasks) gewidmet sein können. Man spricht dabei dann 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 bearbeitete 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 Abarbeitungszeiten 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 Abarbeitung 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 aufwendig 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.
  • Demnach wäre es wünschenswert, eine Möglichkeit vorzusehen, die zur Verfügung stehende Abarbeitungskapazität einer zentralen Recheneinheit bzw. CPU so zu nutzen, dass auf einfache Weise gewährleistet wird, dass jede abzuarbeitende Aufgabe, die aktuell eine Bearbeitung anfordert, egal welche Priorität dieser Aufgabe in Relation zu allen anderen Aufgaben zuzuordnen ist, innerhalb einer bestimmten Zeit abgearbeitet wird.
  • Offenbarung der Erfindung
  • Vor diesem Hintergrund werden eine Schaltungsanordnung gemäß Patentanspruch 1 und ein entsprechendes Verfahren mit den Merkmalen von Patentanspruch 9 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
  • Gemäß Patentanspruch 1 wird eine Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung einer Mehrzahl von Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität bereitgestellt. Die erfindungsgemäß vorgesehene Schaltungsanordnung ist dazu konfiguriert, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, und ferner zu steuern, dass die Aufgaben in der vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Verarbeitung übersprungen werden.
  • Gemäß einer möglichen Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung ist die Schaltungsanordnung ferner dazu konfiguriert, jede der Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Registern 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 dies entsprechend signalisieren, so dass sie bei der Bearbeitung durch die Verarbeitungseinheit 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. einer ALU oder CPU, gleichmäßig auf alle aktiven Aufgaben (Tasks) aufzuteilen. Gemäß einer weiteren Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung entspricht die Zeitdauer dabei genau einem Takt eines Takt-Zyklus der Verarbeitungseinheit.
  • Ferner kann vorgesehen sein, dass die Schaltungsanordnung dazu konfiguriert ist, eine Abarbeitung von Befehlen der jeweiligen Register der jeweiligen Kanäle der 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.
  • Dabei kann vorgesehen sein, dass Befehlsdekodierung und Speicherzugriff für eine erste aktive Aufgabe jeweils in Zeitabschnitten erfolgen, in welchen mindestens einer zweiten aktiven Aufgabe die Verarbeitungseinheit zugeordnet ist.
  • Gemäß einer weiteren Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung ist vorgesehen, dass eine Berechnung der Zuordnung einer einer aktuell in Verarbeitung befindlichen Aufgabe nachfolgenden Aufgabe in Abhängigkeit davon erfolgt, welche die aktuell zu verarbeitende Aufgabe ist und ferner, welche Aufgaben zum Berechnungszeitpunkt eine Bearbeitungsanfrage stellen bzw. eine Anforderung zur Bearbeitung signalisieren.
  • Es existiert somit ein Priorisierung der aktiven Aufgaben mit variabler Priorität. Das bedeutet, dass alle aktiven Aufgaben in einer Reihenfolge abgearbeitet werden und die Reihenfolge davon abhängt, welche Aufgabe zuletzt bzw. gerade abgearbeitet wird. Dies wird nachfolgend anhand der Figuren noch näher erläutert werden. Durch die erfindungsgemäß vorgesehene Schaltungsanordnung gibt es eine genau bestimmte voranstehend genannte Worst Case Execution Time (WCET), die aber nur dann voll ausgeschöpft wird, wenn alle Aufgaben in der vorgegebenen Reihenfolge aktiv sind, d. h. alle Aufgaben jeweils eine entsprechende Bearbeitungsanforderung gestellt haben. Jede aktive Aufgabe bekommt die Verarbeitungskapazität der zentralen Verarbeitungseinheit in der vorgegebenen Reihenfolge zugeteilt. Werden zusätzliche zunächst passive Aufgaben der Reihenfolge aktiv, so reihen sich diese unmittelbar in die vorgegebene Reihenfolge ein bzw. werden in die vorgegebene Reihenfolge eingegliedert. Nicht aktive Aufgaben in der Reihenfolge werden, wie voranstehend beschrieben, übersprungen.
  • Es ist denkbar, dass die Berechnung der Zuordnung der entsprechenden jeweils nachfolgenden Aufgabe vorausschauend mittels eines sogenannten Pipelinings erfolgt.
  • Ferner betrifft die vorliegende Erfindung ein Verfahren zur Abarbeitung einer Mehrzahl von Aufgaben in einem datenverarbeitenden System 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.
  • 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 eine mögliche Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung, hier insbesondere bei Bestimmung der jeweils nächsten abzuarbeitenden Aufgabe.
  • 4 zeigt die in 3 dargestellte Ausführungsform im Detail.
  • 5 zeigt eine Ausführungsform zur Realisierung eines in der Ausführungsform der 3 und 4 verwendeten Barrel-Shifters mit 16 × 16 Multiplexer.
  • 6 zeigt eine mögliche Ausführungsform eines in der Ausführungsform von 3 und 4 verwendeten ”first one detector” mit 32 Multiplexern.
  • 7 zeigt eine mögliche Realisierung einer Addition modulo 17 mit Overflow-Look-Ahead (OLA), wie sie in einer Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung vorgesehen sein kann.
  • 8 zeigt eine mögliche Ausführungsform eines erfindungsgemäß vorgesehenen Verfahrens, bei welchem eine zusätzliche Pipeline-Stufe zur Aufgabenauswahl vorgesehen ist.
  • 9 zeigt als eine alternative Möglichkeit zum in der Ausführungsform von 3 und 4 vorgesehenen Barrel-Shifter ein rotierendes Register.
  • 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 T 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 ... N – 1 bezeichnet sind.
  • Das bedeutet, dass in der hier dargestellten MCS-Architektur T Befehlsregister (T·IR) 35, T Befehlszähler (T·PC) 25 und T Status-Register (T·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.
  • 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. Der als nächstes zu bearbeitende Kanal wird dabei in Abhängigkeit von einem Zählerstand (CNT) bezüglich gerade aktiver Aufgaben und einem Anforderungssignal (RDYi) einer jeden Aufgabe i bestimmt. Dies wird anhand von 3 im Folgenden noch näher erläutert. Dabei ist vorgesehen, dass zwar einerseits jede Aufgabe unabhängig von einer ihr zuzuordnenden Priorität im Vergleich zu anderen Aufgaben bearbeitet werden kann, jedoch 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.
  • Eine Abarbeitung von Befehlen 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 T·PC bzw. T·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, 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. das entsprechende 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 die TBU (Time Base Unit) 85 einen Operanden bilden 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).
  • 2 verdeutlicht nochmals die parallele Verarbeitung von Pipeline-Stufen bei T 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. T + 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 T + 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 T-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. T 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 T + 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 zur Bestimmung der bei einer Bearbeitung als nächstes abzuarbeitenden Aufgabe.
  • 4 zeigt die Ausführungsform von 3 in weiterer detaillierterer Form.
  • Zunächst wird für jede Aufgabe ein sogenanntes RDYi Bit gesetzt. Dieses Bit signalisiert, ob die jeweils betreffende Aufgabe aktiv oder inaktiv ist, d. h. ob diese Aufgabe zu bearbeiten ist oder bei Bearbeitung in der Reihenfolge zu überspringen ist. Demnach liegt für jedes RDYi = 1 eine Anforderung der Aufgabe i zur Bearbeitung vor, wie dies durch Pfeil 1_0 angedeutet ist. Mit Hilfe eines kombinatorischen Auswahl-Netzwerks 2_0 wird dann jeweils die nächste abzuarbeitende Aufgabe bestimmt und über einen sogenannten new_CNT-Zählerstand angezeigt, wie durch Pfeil 3_0 kenntlich gemacht. Diese Information wird dann einer entsprechenden Flip-Flop Schaltung 40 zugeführt, so dass damit mittels eines entsprechenden Abspeichersignals für die Flip-Flops die entsprechende Aufgabe bestimmt ist, die als nächste bearbeitet werden soll. Der Zählerstand CNT, wie durch Pfeil 5_0 dargestellt, zeigt eine gerade in Bearbeitung befindliche Aufgabe an, welche bei der Auswahl benötigt wird als Basis, um bestimmen zu können anhand der vorgegebenen Reihenfolge, welche Aufgabe als nächstes zu bearbeiten ist, unter Berücksichtigung der Tatsache, dass manche der gemäß der Reihenfolge folgenden Aufgaben ggf. nicht aktiv sind.
  • Gemäß 4, die weitere Details zu 3 zeigt und in welcher daher gleiche Vorgänge bzw. Einheiten mit gleichen Bezugszeichen versehen sind, wird bei Ermittlung der nächsten aktiven Aufgabe von bspw. 17 möglichen Aufgaben zunächst in einem Barrel-Shifter 2_1 als Teil des Auswahl-Netzwerks 2_0 ein entsprechend vorliegender RDY-Vektor ”RDY_rot” 2_3 um CNT Stellen nach rechts geschoben und überlaufende Bits an einer anderen Seite wieder eingespeist. Man kann sich diese Verschiebung auch als eine Rotation nach rechts um CNT Bits vorstellen. Die RDY-Bitwerte i des Eingangsvektors 1_0 werden in Speichereinheiten (z. B. Flip-Flops) abspeichert, diese Flip-Flops werden als Schieberegister verschaltet und der Inhalt dieses Schieberegisters wird um CNT Stellen nach rechts verschoben, wobei man die rechts aus dem Schieberegister hinausgeschobenen Bitwerte jeweils wieder links als Eingang dem Schieberegister zuführt (siehe auch 9, unten). Um Hardwareaufwand zu sparen, ist es aber in der Regel günstiger, anstelle eines derartigen Schieberegisters eine kombinatorische Schaltung zu benutzen. Eine solche Schaltung ist dem Fachmann als Barrel-Shifter bekannt. Details einer entsprechenden Schaltung des genannten Barrel-Shifters 2_1 sind nachfolgend in 5 gezeigt und beschrieben. Das Bit RDY_rot(0) wird dabei nicht generiert, weil es der gerade bearbeiteten Aufgabe entspricht und deshalb immer gleich 1 sein muss. Der hier dargestellte und im Einsatz sich befindende Barrel-Shifter 2_1 benötigt ca. 640 Gatteräquivalente. Das Ergebnis der oben genannten Rotation ist ein auf den entsprechenden CNT-Wert normalisierter RDY_rot-Vektor 2_3. Die Anzahl der niedrigstwertigsten (Least Significant Bit, LSB) ”Nullen” (außer in Position 0) im zu bestimmenden RDY_rot-Vektor zeigt mit seinen Bitwerten an, ob die nächsten zu bearbeitenden Aufgaben aktiv (Bit = 1) oder passiv (Bit = 0) sind. Die beschriebene Rotation mit dem Barrelshifter ist notwendig, weil je nach aktuellem Bearbeitungsstand der Aufgaben (und damit dem Wert von CNT, 5) eine andere Aufgabe die nächste wäre (unabhängig von der Aktivität dieser Aufgabe). Die Bitwerte in RDY_rot (2-3) zeigen dann an der Stelle 0 (LSB, Least Significant Bit) den Wert des RDY-Bits der gerade bearbeitenden Aufgabe an der Stelle 1, das RDY-Bit der Aufgabe, die als nächste an der Reihe wäre, das Bit an der Stelle 2, das RDY-Bit der übernächsten Aufgabe und so weiter.
  • Im Barrel-Shifter 2_1 kann, aufgrund oben genannter Gründe, auf die Bestimmung des Wertes RDY_rot(0) verzichtet werden. Mit Hilfe einer sogenannten First One Detektor Schaltung (FOD) 2_2 wird ermittelt, an welcher niedrigwertigsten Stelle im RDY_rot-Vektor eine ”1” steht. Die niedrigwertigste Stelle zeigt ausgehend von der Position 0, welche die gerade in Bearbeitung stehende Aufgabe angibt, die nächste Aufgabe in der vorgegebenen Reihenfolge an, die aktiv ist und demnach als nächstes zu bearbeiten ist. An dieser Stelle sei nochmals betont, dass eine 1 an der Position 0 des RDY_rot-Vektors keine Rolle spielt, weil diese 1 der momentanen abgearbeiteten bzw. sich gerade in Abarbeitung befindenden Aufgabe entspricht und deshalb an dieser Position immer eine 1 stehen muss. Es wird deshalb nur eine 1 oberhalb der Position 0 ermittelt. Die Position wird in dem Wert FOP (First One Position) 2_4 binär kodiert dargestellt. Die Schaltung zur Ermittlung der FOP-Bits ist in 6 gezeigt und benötigt in dieser Realisierung ca. 80 Gatteräquivalente. Eine Beschreibung mittels einer Hardwarebeschreibungssprache ist für diese Schaltung einfach möglich. Die Struktur lässt sich bspw. in VHDL für das Bit FOP(0) (als Signal deklariert) wie folgt beschreiben:
    Figure 00150001
    Figure 00160001
  • Der so ermittelte FOP-Vektor 2_4 wird als Binärwert addiert und zu dem momentanen CNT-Wert 5_0, wie in 4 dargestellt, addiert. Der Addierer 2_5 führt bspw. eine Addition modulo 17 durch und benötigt in der Regel ca. 50 Gatteräquivalente. Dazu muss ein Korrekturwert 15 zum Ergebnis addiert werden, im Falle, dass ein Wert größer als 16 als Ergebnis ermittelt wurde. Um den korrigierten new_CNT-Vektor zu erhalten, braucht man ggf. eine zusätzliche Taktphase, sobald ein Überlauf erfolgt. Dazu prüft man nach der Durchführung der Addition von CNT und FOP in einem vorläufigen Ergebnisvektor new_CNT_v, ob das höchstwertige Bit (Most Signifigant Bit, MSB) gleich ”1” ist und noch ein weiteres Bit im Ergebniswert gleich 1 ist und addiert in diesem Wall den Korrekturwert hinzu. Das kann durch folgende Gleichung in der Hardwarebeschreibungssprache VHDL beschrieben werden:
    IF (new_CNT_v(16) = ’1’ AND (new_CNT_v(15) = ’1’ OR new_CNT_v(14) = ’1’ OR new_CNT_v(13) = ’1’ OR new_CNT_v(12) = ’1’ OR ... OR new_CNT_v(0) = ’1’)
    THEN new_CNT <= new_CNT_v + 15;
    ELSE new_CNT <= new_CNT_v;
  • Es ist jedoch auch möglich, einen zusätzlichen Addierer 7_2 mit dem entsprechenden Korrekturwert dem ersten Addierer 2_5 nachzuschalten, wie dies als alternative Ausführungsform in 7 gezeigt ist, wobei hier lediglich ein Ausschnitt des Auswahlnetzwerks 2_0 gezeigt ist. Dazu wird der Addierer 7_2 entweder mit 15 (0xF) für den Fall eines Überlaufs 7_4 (OV = Overflow) oder mit 0(0x0) im Falle eines Wertes kleiner oder gleich 16 beaufschlagt. Dabei kann geeigneterweise eine Schaltung 7_5 eingesetzt werden, die vorausschauend einen Überlauf 7_4 erkennt (Overflow-Look-Ahead, OLA). Eine derartige Schaltung ist nachfolgend mittels Tabelle 1 und den ebenfalls nachfolgend beschriebenen Booleschen Gleichungen beschrieben:
    CNT-Wert FOP-Wert OV FOP-Wert OV
    16 ≥ 1 1 0 0
    15 ≥ 2 1 ≤ 1 0
    14 ≥ 3 1 ≤ 2 0
    13 ≥ 4 1 ≤ 3 0
    12 ≥ 5 1 ≤ 4 0
    11 ≥ 6 1 ≤ 5 0
    10 ≥ 7 1 ≤ 6 0
    9 ≥ 8 1 ≤ 7 0
    8 ≥ 9 1 ≤ 8 0
    7 ≥ 10 1 ≤ 9 0
    6 ≥ 11 1 ≤ 10 0
    5 ≥ 12 1 ≤ 11 0
    4 ≥ 13 1 ≤ 12 0
    3 ≥ 14 1 ≤ 13 0
    2 ≥ 15 1 ≤ 14 0
    1 ≥ 16 1 ≤ 15 0
    0 - 0 - 0
    Tabelle 1: Wertetabelle für OV
  • In 7 sind dem CNT-Wert das Bezugszeichen 7_6, dem FOP-Wert das Bezugszeichen 7_8, dem neuen new_CNT-Vektor das Bezugszeichen 7_10 und dem vorläufigen Ergebnisvektor new_CNT_v das Bezugszeichen 7_11 zugeordnet.
  • Boolesche Gleichung für OV in direkter Umsetzung der Tabelle 1 mit ^ = Konjunktion und ∨ = Disjunktion:
    OV = CNT(4) ^ (FOP(4) ∨ FOP(3) ∨ FOP(2) ∨ FOP(1) ∨ FOP(0)) ∨
    CNT(3) ^ CNT(2) ^ CNT(1) ^ CNT(0) ^ (FOP(4) ∨ FOP(3) ∨ FOP(2) ∨ FOP(1)) ∨
    CNT(3) ^ CNT(2) ^ CNT(1) ^ (FOP(4) ∨ FOP(3) ∨ FOP(2) ∨ (FOP(1) ^ FOP(0))) ∨
    CNT(3) ^ CNT(2) ^ CNT(0) ^ (FOP(4) ∨ FOP(3) ∨ FOP(2)) ∨
    CNT(3) ^ CNT(2) ^ (FOP(4) ∨ FOP(3) ∨ (FOP(2) ^ (FOP(1) ∨ FOP(0)))) ∨
    CNT(3) ^ CNT(1) ^ CNT(0) ^ (FOP(4) ∨ FOP(3) ∨ (FOP(2) ^ FOP(1))) ∨
    CNT(3) ^ CNT(1) ^ (FOP(4) ∨ FOP(3) ∨ (FOP(2) ^ FOP(1) ^ FOP(0))) ∨
    CNT(3) ^ CNT(0) ^ (FOP(4) ∨ FOP(3)) ∨
    CNT(3) ^ (FOP(4) ∨ FOP(3) ^ (FOP(2) ∨ FOP(1) ∨ FOP(0)) ∨
    CNT(2) ^ CNT(1) ^ CNT(0) ^ (FOP(4) ∨ FOP(3) ^ (FOP(2) ∨ FOP(1)) ∨
    CNT(2) ^ CNT(1) ^ (FOP(4) ∨ FOP(3) ^ (FOP(2) ∨ (FOP(1) ^ FOP(0)))) ∨
    CNT(2) ^ CNT(0) ^ (FOP(4) ∨ (FOP(3) ^ FOP(2))) ∨
    CNT(2) ^ (FOP(4) ∨ (FOP(3) ^ FOP(2) ^ (FOP(1) ∨ FOP(0)))) ∨
    CNT(1) ^ CNT(0) ^ (FOP(4) ∨ (FOP(3) ^ FOP(2) ^ FOP(1))) ∨
    CNT(1) ^ (FOP(4) ∨ (FOP(3) ^ FOP(2) ^ FOP(1) ^ FOP(0))) ∨
    CNT(0) ^ FOP(4)
  • Diese Booleschen Gleichung bietet noch Optimierungspotenzial bei der Compilierung und wird mit ca. 50 Gatteräquivalenten Realisierungsaufwand abgeschätzt.
  • Es ist anzumerken, dass der Gesamtaufwand der erfindungsgemäß vorgeschlagenen Schaltungsanordnung, wie sie als mögliche Ausführungsform in 4 dargestellt ist, mit ca. 900 Gatteräquivalenten in einem Bereich liegt, der die damit einhergehende Hardwareeinsparung, die durch das bereitgestellte Multitasking erzielt wird, nicht übertrifft. Mit der erfindungsgemäß vorgesehenen Schaltungsanordnung wird gewährleistet, dass die Latenzzeit zur Bearbeitung der Aufgaben verkürzt wird, wenn nicht alle Aufgaben gleichzeitig eine Anforderung an die zentrale Verarbeitungseinheit stellen.
  • Ferner ist es möglich, dass die CNT- und new_CNT-Werte 7_6, 7_10 vorausschauend berechnet werden. Dazu kann eine zusätzliche Pipeline-Stufe vorgesehen werden, die den CNT-Wert 7_6 erst einen Takt später für die Aufgaben bzw. Kanal-Auswahl wirksam werden lässt. Dazu wird CNT um einen Takt verzögert in old_CNT gespeichert und dieser Wert bestimmt die Auswahl der aktuellen Aufgabe, wie dies beispielhaft in 8 dargestellt ist.
  • In 8 werden wiederum für gleiche Vorgänge bzw. Einheiten gleiche Bezugszeichen wie in den voranstehend beschriebenen Ausführungsformen der 3, 4 und 7 verwendet. Im Signal 3_1 wird hier allerdings als new_CNT 7_10 die übernächste abzuarbeitende Aufgabe angezeigt, was einer entsprechenden Flip-Flop Schaltung 4_1 zugeführt wird. Im Signal 5_1 wird als CNT-Wert 7_6 die nächste abzuarbeitende Aufgabe angezeigt, was wiederum dann dem Auswahl-Netzwerk 2_0 zugeführt wird und über eine Flip-Flop Schaltung 4_2 auch in old_CNT 6_0 dann als aktuell abzuarbeitende Aufgabe angezeigt wird.
  • In einer weiteren möglichen Ausgestaltung der erfindungsgemäß vorgeschlagenen Schaltungsanordnung kann alternativ zu dem in 5 dargestellten Barrel-Shifter auch ein Register mit 17 Bits eingesetzt werden, das entsprechend der CNT-Werte rotiert, wie dies in 9 gezeigt ist. Eine Einspeisung der RDYi-Werte in dieses Register erfolgt dabei an einer festgelegten Position, in 9 ist dies die Position 0, und je nach Rotationszustand wird das entsprechende RDYi-Bit an dieser Position gespeichert. Diese Ausführungsform der erfindungsgemäß vorgeschlagenen Schaltungsanordnung erfordert mit ca. 200 Gatteräquivalenten einen wesentlich geringeren Hardwareaufwand als der in 5 dargestellte Barrel-Shifter. Dabei ist jedoch zu beachten, dass die RDY-Signale erst nach einer zusätzlichen Latenzzeit, aufgrund einer Rotation des Registers, berücksichtigt werden können. Ferner ist zu beachten, dass beim Überspringen mehrerer Aufgaben durch das damit einhergehende Erhöhen des CNT-Wertes um mehr als 1 eine Rotation in mehreren Takten vorgenommen werden muss. Eine entsprechend vorausschauende Berechnung in Form eines Pipelining in mehreren Stufen erhöht dabei die Latenzzeit nochmals.
  • Es sei ferner angemerkt, dass man die Priorisierung, wie voranstehend beschrieben, auch ausschalten kann, indem jede Aufgabe eine Abarbeitungszeit zugeteilt wird, unabhängig von einer Bearbeitungsanforderung. Dazu ist FOD auf den Wert 0x002, 0x003, ... oder 0xFFF zu setzen, unabhängig von den Werten RDY_rot. Das bewirkt, dass zumindest die nächste Aufgabe aktiv gesetzt ist (Bit 1 = 1).

Claims (10)

  1. Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit (10) mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei die Schaltungsanordnung (100) dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit (10) zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden.
  2. Schaltungsanordnung nach Anspruch 1, wobei die Schaltungsanordnung (100) 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 (10) auszuwählen und mit der Verarbeitungseinheit (10) zu verbinden.
  3. Schaltungsanordnung nach einem der Ansprüche 1 oder 2, wobei die Schaltungsanordnung (100) ferner dazu konfiguriert ist, die Verarbeitungseinheit (10) jeder der Aufgaben mit aktueller Bearbeitungsanforderung jeweils für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zuzuordnen.
  4. Schaltungsanordnung nach Anspruch 3, wobei die Zeitdauer einem Takt eines Takt-Zyklus der Verarbeitungseinheit (10) entspricht.
  5. Schaltungsanordnung nach einem der Ansprüche 2 bis 4, wobei die Schaltungsanordnung (100) 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.
  6. Schaltungsanordnung nach Anspruch 5, 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.
  7. Schaltungsanordnung nach einem der voranstehenden Ansprüche, wobei eine Berechnung der Zuordnung einer einer aktuell in Verarbeitung befindlichen Aufgabe nachfolgenden Aufgabe in Abhängigkeit davon erfolgt, welche die aktuell in Verarbeitung befindliche Aufgabe ist und welche Aufgaben zum Berechnungszeitpunkt eine Bearbeitungsanforderung stellen.
  8. Schaltungsanordnung nach Anspruch 7, wobei die Berechnung der Zuordnung der entsprechend nachfolgenden Aufgabe vorausschauend mittels Pipelinening erfolgt.
  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.
  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.
DE201010003565 2010-03-31 2010-03-31 Zyklischer Priorisierungswechsel bei einer Datenverarbeitung Pending DE102010003565A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE201010003565 DE102010003565A1 (de) 2010-03-31 2010-03-31 Zyklischer Priorisierungswechsel bei einer Datenverarbeitung
PCT/EP2011/054014 WO2011120812A1 (de) 2010-03-31 2011-03-17 Zyklischer priorisierungswechsel bei einer datenverarbeitung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201010003565 DE102010003565A1 (de) 2010-03-31 2010-03-31 Zyklischer Priorisierungswechsel bei einer Datenverarbeitung

Publications (1)

Publication Number Publication Date
DE102010003565A1 true DE102010003565A1 (de) 2011-10-06

Family

ID=44123387

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201010003565 Pending DE102010003565A1 (de) 2010-03-31 2010-03-31 Zyklischer Priorisierungswechsel bei einer Datenverarbeitung

Country Status (2)

Country Link
DE (1) DE102010003565A1 (de)
WO (1) WO2011120812A1 (de)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330584B1 (en) * 1998-04-03 2001-12-11 Mmc Networks, Inc. Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US20030046517A1 (en) * 2001-09-04 2003-03-06 Lauterbach Gary R. Apparatus to facilitate multithreading in a computer processor pipeline
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline

Also Published As

Publication number Publication date
WO2011120812A1 (de) 2011-10-06

Similar Documents

Publication Publication Date Title
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE69126166T2 (de) Programmierbare Steuerungsvorrichtung
DE60006270T2 (de) Parallele prozessorarchitektur
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
EP3077912B1 (de) Steuergerät für ein kraftfahrzeug
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
EP1146432A2 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE3121742A1 (de) Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung
EP2541348B1 (de) Verfahren und Programmiersystem zur Programmierung einer Automatisierungskomponente
WO2011063869A1 (de) Verfahren zum ermöglichen einer sequentiellen, nicht blockierenden abarbeitung von anweisungen in nebenläufigen tasks in einer steuereinrichtung
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE202004021684U1 (de) Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
EP3417373A1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE102010003512A1 (de) Geteilte zentrale Verarbeitung von Daten
DE102011083468A1 (de) Schaltungsanordnung zur Ablaufplanung bei einer Datenverarbeitung
DE112004002368T5 (de) Prozessor und Verfahren zur Unterstützung eines kompilierergerichteten Managements von Multi-Threading
DE102010003565A1 (de) Zyklischer Priorisierungswechsel bei einer Datenverarbeitung
EP1917587B1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems
DE102021129313B4 (de) Flächen- und energieeffizienter mechanismus zum aufwecken speicherabhängiger ladevorgänge durch zusammenführungen beim abarbeiten von speichervorgängen
DE102009037158B4 (de) Steuervorrichtung zur Steuerung eines elektrischen Antriebs

Legal Events

Date Code Title Description
R012 Request for examination validly filed