DE69227664T2 - Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor - Google Patents

Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor

Info

Publication number
DE69227664T2
DE69227664T2 DE69227664T DE69227664T DE69227664T2 DE 69227664 T2 DE69227664 T2 DE 69227664T2 DE 69227664 T DE69227664 T DE 69227664T DE 69227664 T DE69227664 T DE 69227664T DE 69227664 T2 DE69227664 T2 DE 69227664T2
Authority
DE
Germany
Prior art keywords
queue
event
task
word
data
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.)
Expired - Fee Related
Application number
DE69227664T
Other languages
English (en)
Other versions
DE69227664D1 (de
Inventor
Mark F Anderson
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69227664D1 publication Critical patent/DE69227664D1/de
Application granted granted Critical
Publication of DE69227664T2 publication Critical patent/DE69227664T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

    Gebiet der Erfindung
  • Diese Erfindung bezieht sich auf Prozessoren, die programmiert sind, um parallel viele Aufgaben zu erfüllen, und insbesondere auf eine Hardwareimplementation eines Abschnitts des Prozessorbetriebssystems, um es zu ermöglichen, daß Mehraufgaben-Operationen, welche auch Multitasking-Operationen genannt werden, schneller ablaufen.
  • Hintergrund der Erfindung
  • Echtzeitdatenprozessoren sind in der Lage, die Verarbeitung einer Anzahl von Aufgaben gleichzeitig handzuhaben. Multiprozessoren führen diese Funktion durch, indem eine Anzahl von Prozessoren bereitgestellt wird, die auf die Aufgaben parallel arbeiten. Einzelprozessorsysteme, die echtzeitmäßig arbeiten, handhaben eine "parallele" Verarbeitung auf einer Multitasking-Basis. Multitasking ist ein Verfahren zum Ausführen mehrere Aufgaben gleichzeitig oder parallel. Die parallel verarbeiteten Aufgaben werden zum gleichen Zeitpunkt logisch ausgeführt, selbst wenn sie physisch nicht zum gleichen Zeitpunkt ausgeführt werden.
  • Frühere Computer umfaßten manchmal eine Mehrzahl von Betriebssystemen (OS; OS = Operating System), um eine parallele Ausführung mehrerer Programme zu schaffen. Es sei beispielsweise auf die Offenbarung EP-A-0,024,434 verwiesen, die die Verwendung einer virtuellen Maschine lehrt, die mit einem Steuerprogramm zum gleichzeitigen Laufenlassen mehrerer Betriebssysteme versehen ist. Für diese virtuelle Maschinenfunktion wird eine Hardwareunterstützung bereitgestellt.
  • Bei modernen Computern werden Multitasking-Operationen unter der Steuerung des Computerbetriebssystems und insbesondere unter der Steuerung eines Segments "Ausführung" desselben ausgeführt, das die Disposition der gleichzeitig laufenden Aufgaben steuert. Das Segment Ausführung (nachfolgend EXEC (EXEC = Executive) genannt) schafft eine Schnittstelle zwischen den Aufgaben und der Zentralverarbeitungseinheit.
  • Für jede Aufgabe erscheint EXEC als eigene zentrale Verarbeitungseinheit. Das EXEC handhabt alle Details, die beim Aufteilen der physischen CPU auf alle Aufgaben in dem System betroffen sind. Somit steuert ein EXEC, welche Aufgabe zu einem Zeitpunkt Besitz von der CPU (CPU = Central Processing Unit) haben sollte, indem Prioritäts- und Bereitschafts-Pegel untersucht werden, die jeder Aufgabe zugewiesen sind.
  • Im allgemeinen ermöglicht das EXEC das Laufenlassen einer Aufgabe auf der COU, bis eine andere Anforderung, um die CPU zu verwenden, von einer Aufgabe mit höherer Priorität empfangen wird. Die laufende Aufgabe wird "suspendiert", woraufhin die Aufgabe mit höherer Priorität laufen kann. Dieser Prozeß kann viele Male auftreten, wobei die Aufgabe mit höchster Priorität jedoch früher oder später ihre Verarbeitung vollendet hat oder sich selbst freiwillig suspendiert. Selbst wenn somit eine Aufgabe mit niedriger Priorität viele Male suspendiert wird, bevor sie vollendet worden ist, wird sie schließlich vollendet und erzeugt das gleiche Ergebnis, das sie hätte, wenn sie ununterbrochen geladen wäre.
  • Aufgaben haben verschiedene Ausführungszustände. Eine aktive Aufgabe ist eine, die die Steuerung der CPU hat und ausgeführt wird. Nur eine Aufgabe kann zu einem beliebigen gegebenen Zeitpunkt bei einer Multitasking-CPU aktiv sein. Eine inaktive Aufgabe wird nicht ausgeführt und wartet auch nicht auf die Ausführung. Dieselbe läuft einfach leer. Eine bereite Aufgabe ist eine, die darauf wartet, bis eine CPU-Zeit verfügbar wird, derart, daß sie ausgeführt werden kann. Eine wartende Aufgabe ist eine, die eine suspendierte Operation bis zum Auftreten eines bestimmten Ereignisses hat. Das Er eignis kann durch eine andere Aufgabe oder ein Hardwareereignis erzeugt werden. Beim Auftreten des Ereignisses wird die Aufgabe von dem Wartezustand in entweder den bereiten oder aktiven Zustand abhängig von der Priorität der gegenwärtig aktiven Aufgaben bewegt.
  • Aufgaben können durch eine Priorität oder durch einen Aufgabenbereitheit oder eine Kombination beider synchronisiert sein. Im allgemeinen umfaßt ein EXEC eine Anzahl von Nutzroutinen, die von Aufgaben verwendet werden, um notwendige Steuerfunktionen durchzuführen. Unter diesen Nutzroutinen kann jede Aufgabe eine andere Aufgabe disponieren, sich selbst oder eine andere Aufgabe suspendieren, ein Ereignis signalisieren, auf ein Ereignis warten oder ein Ereignis eine Zeitdauer lang zu verzögern. Die prinzipiellen EXEC- Nutzprogramme sind folgende: Disponieren, Suspendieren, Signalisieren, Warten und Verzögern. Das Disponieren-Hilfsprogramm wird von einer aktiven Aufgabe verwendet, wenn sie will, daß eine andere Aufgabe die Ausführung beginnt oder wieder aufnimmt. Das Disponieren-Hilfsprogramm erlaubt es der bereiten Aufgabe mit höchster Priorität, daß sie ausgeführt wird. Das Suspendieren-Hilfsprogramm wird von einer aktiven Aufgabe verwendet, um sich selbst von dem bereiten Zustand zu entfernen oder eine andere Aufgabe in den inaktiven Zustand zu bewegen. Daraufhin wird der aktuellen bereiten Aufgabe mit der höchsten Priorität die Steuerung übergeben.
  • Das Signalisieren-Hilfsprogramm wird von der aktiven Aufgabe oder einer Unterbrechungs-Serviceroutine verwendet, um ein spezielles Ereignis zu erzeugen. Wenn keine Aufgabe auf das Ereignis wartet, das signalisiert wird, führt das EXEC die Steuerung wieder auf die aktive Aufgabe zurück. Wenn eine andere Aufgabe auf das signalisierte Ereignis wartet, springt die Steuerung zu der Aufgabe mit höchster Priorität.
  • Das Warten-Hilfsprogramm wird verwendet, wenn die aktive Aufgabe wünscht, die Ausführung zu suspendieren und beim Auftreten eines speziellen Ereignisses oder von speziellen Ereignissen wieder aufzunehmen.
  • Das Verzögern-Hilfsprogramm wird von der aktiven Aufgabe verwendet, wenn dieselbe oder eine andere Aufgabe um eine spezifische Zeitdauer vor der Wiederaufnahme der Ausführung warten muß. Dieses Hilfsprogramm erlaubt es, daß eine asynchrone Aufgabe unter Verwendung der Zeit als Referenz synchronisiert wird.
  • Ein Betriebssystem umfaßt eine Unterbrechungseinrichtung, die die Haupteinrichtung zum Synchronisieren von Firmware- Operationen mit Hardwareereignissen ist. Wenn eine Unterbrechung auftritt, wird die Steuerung von einer gerade ausführenden Aufgabe zu einem Unterbrechungshandhabungsmodul übertragen. Ein Unterbrechungs- oder Interrupt-Modul existiert für jeden Unterbrechungstyp, der auftreten kann.
  • Eine Vielzahl von Datenstrukturen wird von dem EXEC verwendet, um die oben beschriebenen Hilfsprogramme zu implementieren. Eine CPU-Warteschlange ist eine Liste von Aufgaben in dem Bereit-Zustand. Die Aufgabe mit höchster Priorität ist die gegenwärtig aktive Aufgabe. Wenn zwei bereite Aufgaben mit gleicher Priorität vorhanden sind, wird die Aufgabe, die zuerst bereit ist, die aktive Aufgabe. Eine Ereignis-Warteschlange ist eine Liste von Aufgaben in einem Wartezustand. Eine Verzögerungs-Warteschlange ist eine weitere Liste von verzögerten Ereignissen, die, nach der Dauer einer Verzögerung, bewirken werden, daß Aufgaben, die auf diese Ereignisse warten, in die CPU-Warteschlange bewegt werden, um bereite Aufgaben zu werden.
  • Die beschriebenen Warteschlangen sind der Struktur nach dynamisch und müssen zumindest vier Grundoperationen umfassen: Einfügen eines Gegenstands; Entfernen eines Gegenstands; Orten eines Gegenstands; und Modifizieren eines Gegenstands. Jede Warteschlange kann als lineare Liste, als einfach verbundene Liste oder als doppelt verbundene Liste konfiguriert sein. Eine einfach verbundene Liste ist eine, bei der jeder Gegenstand einen Zeiger auf den nächsten Gegenstand in der Liste umfaßt. Eine doppelt verbundene Liste hat Gegenstände mit zwei verbundenen Feldern. Jeder Gegenstand in der Liste hat einen Zeiger auf den nächsten Gegenstand auf der rechten Seite und auf den nächsten Gegenstand auf der linken Seite.
  • Wie es oben angesprochen wurde, ist ein EXEC allgemein als Abschnitt ("Kern" oder "Kernel") des Betriebssystems konfiguriert. Oft muß das EXEC Warteschlangen-bereite Operationen durchführen, die Vergleiche und das Verschieben des Inhalts der Warteschlange umfassen. Solche Operationen werden seriell durchgeführt, wobei ihre Ausführungszeit zumindest linear in der Länge der Warteschlange variiert. Solche Ausführungszeiten können einen schädlichen Einfluß auf das Verhalten des Betriebssystems haben und stellen reelle Hindernisse für die Verbesserung des Systemverhaltens dar.
  • Daher besteht die Aufgabe der vorliegenden Erfindung darin, ein Multitasking-Datenverarbeitungssystem mit einem EXEC zu schaffen, das nicht durch serielle Verarbeitungsoperationen begrenzt ist.
  • Eine weitere Aufgabe dieser Erfindung besteht darin, ein EXEC zu schaffen, das einen effizienteren Betrieb eines Multitasking-Datenverarbeitungssystems ermöglicht.
  • Eine weitere Aufgabe dieser Erfindung besteht darin, ein Multitasking-Datenverarbeitungssystem mit einem Hardwareimplementierten Betriebssystemkern zu schaffen, bei dem Warteschlangen, die in dem Kern gehalten werden, keine getrennte Prioritätsanzeige erfordern.
  • Zusammenfassung der Erfindung
  • Ein Multitasking-Datenverarbeitungssystem mit einem Hardwareimplementierten Betriebssystemkernelement wird durch die vorliegende Erfindung geschaffen. Das System umfaßt einen Satz von Befehls- und Status-Registern zum Empfangen von sowohl Adressen als auch Daten von einem verbundenen Datenverarbeitungssystem und zum Leiten von Daten zu dem Datenverarbeitungssystem. Eine CPU-Warteschlange ist vorgesehen, die eine Mehrzahl von Wortspeichern zum Speichern einer Warteschlange von Aufgabennamen umfaßt. Die Aufgabennamen sind in einer Prioritätsreihenfolge der Aufgabennamen organisiert, wobei alle Aufgaben zur Ausführung bereit sind. Eine Ereigniswarteschlange ist vorgesehen, die eine Mehrzahl von gespeicherten Worten zum Speichern einer Warteschlange von Aufgabennamen in einer Prioritätsreihenfolge umfaßt, wobei jeder Aufgabenname in Zuordnung zu einem Ereignisnamen gespeichert ist, bei dessen Auftreten der zugeordnete Aufgabenname zur Ausführung bereit sein wird. Zusätzlich ist eine Warteschlangenzustandsmaschine vorgesehen, die auf Ereignisdaten in den Befehls- und Status-Registern anspricht, um ein paralleles Durchsuchen der Ereigniswarteschlange zu bewirken, um alle Aufgabennamen zu finden, die den Ereignisdaten zugeordnet sind, und um eine Übertragung der Aufgabennamen zu der CPU-Warteschlange zu ermöglichen.
  • Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm auf hoher Ebene eines Systems, das die vorliegende Erfindung ausführt.
  • Fig. 2 ist ein Blockdiagramm einer CPU-Warteschlange, die bei dem System von Fig. 1 verwendet wird.
  • Fig. 3 ist ein Blockdiagramm jedes Warteschlangenelements innerhalb der CPU-Warteschlange von Fig. 2.
  • Fig. 4 ist ein detaillierteres Logikdiagramm eines Wortspeichers innerhalb eines Warteschlangenelementworts von Fig. 3.
  • Fig. 5 ist ein Schaltungsdiagramm einer Inhalts-adressierbaren Speicherzelle.
  • Fig. 6 ist ein Blockdiagramm eines Satzes von Ereigniszählregistern, die bei der Erfindung verwendet werden.
  • Fig. 7 ist ein Blockdiagramm einer Verzögerungszeitsteuerung, die bei der Erfindung verwendet wird.
  • Fig. 8 ist ein beispielhafter Satz von Lesen/Schreiben-Registern, die in den Befehls- und Status-Registern, die in Fig. 1 gezeigt sind, enthalten sind.
  • Detaillierte Beschreibung der Erfindung
  • Kurz gesagt entfernt diese Erfindung bestimmte kritische Betriebssystemfunktionen von einer Betriebssystemsoftware und implementiert sie in einer Hardwarestruktur. Durch diesen Mechanismus können bestimmte oft zu findende Datenneuorganisationsoperationen parallel und in einem vorbestimmten Zeitintervall durchgeführt werden. Der Hardwarekern verwendet hauptsächlich fünf Befehle, d. h. Disponieren, Suspendieren, Signalisieren, Warten und Verzögern. Durch diese Befehle und Kombinationen derselben wird ein Satz von Echtzeit-Betriebssystemgrundelementen erzeugt, die eine wesentliche Verbesserung von Betriebsparameteren eines verwundenen Prozessors erlauben. Aufgrund der Hardwarekonfiguration der Warteschlangen in dem Kern werden Warteschlangen-weite Operationen ohne weiteres in einem Bruchteil der Zeit erreicht, die für ähnliche Operationen in einer Softwareumgebung benötigt werden.
  • EXEC-Modul (Kern)
  • Nachfolgend wird auf Fig. 1 Bezug genommen. In Fig. 1 ist ein Blockdiagramm auf hoher Ebene des Systems gezeigt. Ein Mikroprozessor 10 umfaßt ein EXEC-Modul 12, das hardwaremäßig implementiert ist. Das EXEC-Modul 12 enthält drei Hauptfunktionsblöcke, d. h. einen Befehls-Und-Status-Register-Satz 14, eine Warteschlangenzustandsmaschine 16 und ein Warteschlangensystem 18. Das Warteschlangensystem 18 enthält die Datenstrukturen, die alle Programme manipulieren. Es existieren drei physisch identische Warteschlangen im Warteschlangensystem 18, d. h. die CPU-Warteschlange 20, die Verzögerungs-Warteschlange 22 und die Ereignis-Warteschlange 24.
  • Die CPU-Warteschlange 20 ist eine nach Prioritäten geordnete Liste von Namen von Aufgabensteuerblöcken (TCBs; TCB = Task Control Block) und zugeordneten Ereignissen, die bewirken, daß die TCBs in der CPU-Warteschlange plaziert werden. Die CPU-Warteschlange 20 steuert die Sequenz, in der die verschiedenen Aufgaben innerhalb des Mikroprozessors 10 ausgeführt werden. Die TCBs enthalten alle Informationen, die sich auf dem Status einer Aufgabe beziehen, und dieselben werden innerhalb des Mikroprozessors 10 verwendet, um solche Aufgaben zu steuern. Der Name jedes TCB ist ein Wert (beispielsweise von 0-255), der seine Priorität anzeigt und gleichzeitig den TCB bezeichnet. Die Priorität der Aufgabe, auf die in dem TCB der Aufgabe verwiesen wird, wird verwendet, um zu bestimmen, wann einer Aufgabe Besitz vom Mikroprozessor 10 übertragen werden soll. Der TCB an dem "Kopf" der CPU-Warteschlange 20 erhält dann Besitz am Mikroprozessor 10 für diese Aufgabe. Wenn eine Aufgabe mit höherer Priorität in der Warteschlange plaziert wird, wird die gegenwärtig laufende Aufgabe durch die Aufgabe mit höherer Priorität am Kopf der CPU-Warteschlange 20 ersetzt, und die Aufgabe mit höherer Priorität wird ausgeführt. Zu jeden Zeitpunkt kann die Anzahl von Aufgaben-TCBs der CPU-Warteschlange 20 von allen (alle Aufgaben sind zur Ausführung bereit) zu keinen (keine aktive oder bereite Aufgabe) reichen.
  • Die Ereigniswarteschlange 24 enthält eine nach Prioritäten geordnete Liste von Namen von TCBs, wobei jeder TCB in der Liste mit einem Ereignisnamen verbunden ist, bei dessen Auftreten der TCB in die CPU-Warteschlange 20 bewegt wird. Die Verzögerungs-Warteschlange 22 enthält eine Liste von Ereignisnamen, wobei jeder Ereignisname einer Verzögerung zugeordnet ist, die die Zeitmenge anzeigt, bevor das zugeordnete Ereignis signalisiert werden wird. Die Ereignisnamen in der Verzögerungs-Warteschlange 22 sind prioritisiert, und zwar basierend auf ihren zugeordneten Verzögerungswerten.
  • Das Warteschlangensystem 18 umfaßt ferner einen Satz von Ereigniszählregistern 26, die die Verfügbarkeit einer vorbestimmten Anzahl von möglichen Ereignissen verfolgen, die in dem System auftreten können. Es sei in Erinnerung gerufen, daß ein Ereignis durch Systemaufgaben signalisiert und auf Ereignis von Systemaufgaben gewartet werden kann. Die Anzahl von Ereignissen, die von dem System aufgenommen werden können, wird durch die Größe einer Adresse diktiert und stellt keine Begrenzung des Systems dar. Zwecks der Beschreibung wird angenommen, daß das System bis zu 256 mögliche Ereignisse aufnehmen kann und eine 8-Bit-Adresse für jedes derartige Ereignis verwendet.
  • Innerhalb der Befehls-Und-Status-Register 14 befindet sich ein Befehlsregister, auf das von dem Mikroprozessor 10 geschrieben wird, um ein EXEC-Hilfsprogramm zu starten. Zusätzlich existiert eine Anzahl von Registern, auf die von dem Mikroprozessor 10 "lesend zugegriffen werden kann", die Daten enthalten, die von Operationen innerhalb des EXEC-Moduls 12 erzeugt werden. Eine Liste dieser Register wird nachfolgend gegeben.
  • Die Warteschlangenzustandsmaschine 16 steuert die Handlungen des EXEC-Moduls 12. Beim Empfang eines EXEC-Befehls vom Mikroprozessor 10 in einem Register in den Befehls-Und-Status-Registern 14 führt die Warteschlangenzustandsmaschine 16 die erforderlichen Aktionen auf eine Warteschlange oder War teschlangen in dem Warteschlangensystem 18 auf. Die Warteschlangenzustandsmaschine 16 führt ebenfalls erforderliche Handlungen auf die Register in den Befehls-Und-Status-Registern 14 aus oder steuert ferner eine Zeitsteuerung ("Timer") 28 und ein Torsteuermodul 30. Das Torsteuermodul 30 liefert I/O-Befehlsfunktionen für das EXEC-Modul 12. Adressen- und Daten-Verbindungen zwischen dem Mikroprozessor 10 und dem EXEC-Modul 12 werden direkt durch das Befehls- Und-Status-Register-Modul 14 über Leitungen 31 bzw. 33 geliefert.
  • Signalleitungsdefinitionen
  • Signalleitungen existieren zwischen dem Mikroprozessor 10 und dem EXEC-Modul 12, wie folgt:
  • Eingänge in das EXEC-Modul 12
  • CS - Chip-Auswahl (CS = Chip Select)
  • R/W - Lesen/Nicht- (Schreiben-)-Leitung (R/W = Read/Write = Lesen/Schreiben)
  • uPAddr (0-7) - Adressenleitungen
  • SCLK - EXEC-Systemtakt (nicht gezeigt)
  • NRST - externe Rücksetzleitung
  • NTST - Testleitung (für einen Testmodusbetrieb)
  • Bidirektionale Leitungen für das EXEC-Modul 12
  • uP Data (0-15) - Datenleitungen
  • Ausgänge von dem EXEC-Modul 12
  • MDTACK - Datenübertragungsbestätigung (asynchrone Bestätigung)
  • NINT - Unterbrechungs- (oder Interrupt-) Leitung zur CPU
  • Die folgenden Signale laufen zwischen der Warteschlangenzustandsmaschine 16 und jeder Warteschlange 20, 22 und 24 über den Bus 32 (dieselben sind jedoch in Fig. 1 nicht spezifisch dargestellt).
  • D(0-7) - Interner Datenbus des EXEC
  • ADDR (0-15) - Interner Adressbus des EXEC
  • CMD (0-3) - Befehlsleitungen zum Warteschlagensystem 18
  • QEN (0-3) - Warteschlangenbefehlsfreigaben (eine für jede Warteschlange und jedes Array)
  • Es existieren 256 Warteschlangenelemente in jeder Warteschlange. Jedes Warteschlangenelement speichert zwei 8-Bit- Worte. Daher werden 8 Datenleitungen und 9 Adressenleitungen benötigt, um auf jedes Wort in jeder Warteschlange zuzugreifen. Die neunte Adressleitung ist die CMD(3)-Signalleitung. CMD(0-2) werden verwendet, um zu spezifizieren, welcher der 8 unterschiedlichen Befehle durchgeführt wird. CMD(3) bestimmt, auf welches von zwei Warteschlangenelementworten eine Operation durchgeführt wird. QEN(0-3)-Leitungen werden verwendet, um nur eine der Warteschlangen freizugeben.
  • Befehle können zu einer speziellen Warteschlange gesendet werden, um arithmetische Vergleiche auszuführen. Diese arithmetischen Vergleiche werden auf alle Warteschlangenelemente parallel durchgeführt. Das Ergebnis solcher Vergleiche wird verwendet, um Parallelverschiebungen in der Warteschlange durchzuführen, um Gegenstände einzufügen oder zu entfernen. Dies ergibt eine wesentliche Geschwindigkeitsverbesserung gegenüber einem Manipulieren dieser Daten, wie es typischerweise mit Zeigern in eine Liste durchgeführt wird.
  • Die folgenden zusätzlichen Signale laufen von der Warteschlangenzustandsmaschine 16 zu den Ereigniszählregistern 26 über einen Bus 32 (in Fig. 1 nicht spezifisch gezeigt).
  • ECOP (0-1) - Ereigniszähleroperationen
  • ECOC - Ereigniszählerausgangssteuerung
  • ECCLK - Ereigniszählertakt
  • ECLR - Ereignisregisterarray-Löschen
  • EOC - Ereignisregisterausgangssteuerung
  • Diese Signale werden verwendet, um 256 8-Bit-Register in den Ereigniszählregistern 26 und einen Zähler in denselben zu steuern, die mit einem dieser Werte geladen und inkrementiert oder dekrementiert werden können.
  • Jede Registerposition in den Ereigniszählregister 26 ist einem entsprechend numerierten Ereignis zugeordnet. Wenn ein "Signalisieren eines speziellen Ereignisses" auftritt, wird der geeignete Registerwert gelesen, inkrementiert und neu geschrieben. Genauso wird, wenn ein Warten auf ein spezielles Ereignis ausgeführt wird, der geeignete Registerwert gelesen, dekrementiert und neu geschrieben.
  • Warteschlangenstrukturen
  • Nachfolgend wird auf Fig. 2 Bezug genommen. Die Grundstruktur der CPU-Warteschlange 20 ist in Fig. 2 dargestellt. Es sei in Erinnerung gerufen, daß die Hardwarestruktur jeder Warteschlange identisch ist. TCB-Namen werden in der CPU- Warteschlange 20 in einer Prioritätsreihenfolge gespeichert. Statt eines Zuweisens eines getrennten Prioritätswerts zu einem TCB-Name wurde bestimmt, daß wesentlicher Speicherraum gespart werden kann, indem als TCB-Name der tatsächliche Prioritätswert, der dem TCB zugeordnet ist, zugewiesen wird. Somit hat ein TCB mit dem Namen 0 den höchsten Prioritätswert, wobei auf diesen durch eine Adressanzeige in dem EXEC-Modul 12 durch eine Adresse mit lauter Nullen verwiesen wird. Andere TCBs mit niedrigerer Priorität sind ähnlich bezeichnet.
  • Die CPU-Warteschlange 20 enthält eine Mehrzahl von Warteschlangenelementen 35. Aus Darstellungsgründen ist die CPU- Warteschlange 20 mit nur vier Warteschlangenelementen statt der 256 gezeigt, die mit einer 8-Bit-Adresse verwendet wer den kann. Die Struktur eines Warteschlangenelements ist in Fig. 3 gezeigt und wird nachfolgend detailliert beschrieben. Datenleitungen D(0-7) tragen Daten in und aus Datentoren in jedem Warteschlangenelement 35 (siehe Fig. 2). CMD(0-3) sind Adressenleitungen, die verwendet werden, um zu spezifizieren, welcher von acht unterschiedlichen Befehlen von jedem Warteschlangenelement 35 durchgeführt wird. Die Leitung CMD(3) liefert einen Pegel, der bestimmt, auf welches von zwei Worten in einem Warteschlangenelement 35 die Operation ausgeführt wird. QEN(0) ist eine Freigabeleitung und gibt eine der drei Warteschlangen (20, 22, 24) frei.
  • Ein Adressenbus ADDR (0-7) wird durch einen Adressendecodierer 36 decodiert und verwendet, um ein einzelnes Warteschlangenelement 35 (über ein Ausgangssignal auf einem Kabel 38, das 256 getrennte Wortleitungen enthält) auszuwählen. Jede Wortleitung in dem Wortbus 38 ist mit einem einzelnen Warteschlangenelement 35 verbunden, um Logikoperationen in jedem beliebigen ausgewählten Warteschlangenelement gemäß einer in dem Adressendecodierer 36 empfangenen Adresse freizugeben. Solche Verbindungen sind in Fig. 2 nicht gezeigt, um ein zu kompliziertes Diagramm zu vermeiden.
  • Der Adressenbus ADDR (0-7) trägt ferner Adresseninformationen zurück zu der Warteschlangenzustandsmaschine 16 während Vergleichsoperationen. Während einer solchen Operation wird die Adresse eines Warteschlangenelements 35, das ein Vergleichskriterium erfüllt, auf einem Adressbus ADDR (0-7) zurückgegeben.
  • Ein Auflöser/Codierer 40 löst den Fall auf, bei dem mehr als ein Warteschlangenelement 35 ein Vergleichskriterium erfüllt. Wenn beispielsweise ein Befehl ausgegeben wird, um eine Adresse eines Warteschlangenelements zurückzugeben, das "Ziffer 0" enthält, und alle Warteschlangenelemente "0" enthalten, dann bewirkt der Auflöser/Codierer 40, daß der Adressbus ADDR 0-7 die am niedrigsten nunerierte Warteschlangenposition zu der Warteschlangenzustandsmaschine 16 zurück gibt. Bei dem gegebenen Beispiel würde der Auflöser/Codierer 40 die Position 1 auf den Adressbus ADDR (0-7) zurückgeben.
  • Jedes Warteschlangenelement 35 enthält zwei Informationsworte, die sich auf eine Aufgabe beziehen. Im allgemeinen wird das Warteschlangenelement 35 an der Position 1 in der CPU-Warteschlange 20 zwei Worte enthalten, die sich auf die Aufgabe mit höchster Priorität, die auf eine Handlung wartet, beziehen. Diese Worte sind der TCB-Name mit dem kleinsten numerischen Wert (Priorität) und der Name des Ereignisses, das bewirkt hat, daß der TCB-Name in die CPU-Warteschlange 20 bewegt wird. Warteschlangenelemente an der Position 3, 4, usw. werden TCB-Namen mit niedrigerer Priorität (und einem höheren numerischen Wert) enthalten.
  • Es exisitieren zwei lokale Busse 42 und 44, die jedes Warteschlangenelement 35 mit seinem nächsthöheren numerierten Nachbarwarteschlangenelement verbinden, und die verwendet werden, wenn Gegenstände von einer Warteschlange entfernt oder in die Warteschlange eingefügt werden. Jedes Warteschlangenelement 35 hat zwei Vergleichsoperationen in seiner Struktur enthalten, wobei die Ergebnisse an einem GT-Ausgang 46 und an einem M-Ausgang 48 abgenommen werden können. Die Signale "GT" und "M" stehen für "Größer als" (GT = Greater Than) bzw. "Übereinstimmung" (M = Match). Wenn Daten an den Datenbus D (0-7) angelegt werden, bestimmt kurz gesagt jedes Warteschlangenelement 35, ob ein Datenwort, das in ihm enthalten ist, im Wert mit dem angelegten Datenwort übereinstimmt oder größer als das angelegte Datenwort ist. Wenn es herausfindet, daß sein gespeicherter Wortwert größer als der Datenbuswert ist, dann wird ein Ausgangssignal auf die Ausgangs-GT-Leitung aufgebracht. Wenn eine Übereinstimmung zwischen den Werten gefunden wird, wird der M-Ausgangs 48 angeregt. Ein Multiplexer 50 ist mit allen Warteschlangenelementen 35 verbunden, und derselbe wird gesteuert, um entweder alle "Größer-als"-Ausgänge 46 von den Warteschlangenelementen 35 oder alle "Übereinstimmung"-Ausgänge 48 von den Warteschlangenelementen 35 zu wählen. Bei dem in Fig. 2 ge zeigten Beispiel liefert der Multiplexer 50 vier Ausgänge von den ausgewählten Größer-als- oder Übereinstimmung-Ausgängen von den vier gezeigten Warteschlangenelementen 35. Welche Gruppe von Signalen ausgewählt wird, hängt davon ab, ob es erwünscht ist, das niedrigst numerierte Warteschlangenelement 35 zu kennen, das mit den Eingangsdaten übereinstimmt, oder das niedrigst numerierte Warteschlangenelement 35 zu kennen, das einen Wert hält, der größer als die Eingangsdaten sind.
  • Warteschlangenelementstruktur
  • In Fig. 3 ist die Struktur eines Warteschlangenelements 35 dargestellt. In jedem Warteschlangenelement 35 hält ein Paar von Wortspeichern 52 und 54 zwei 8-Bit-Werte, d. h. ein Wort A und ein Wort B. Zusätzlich enthält jeder Wortspeicher die notwendige Logik, um es zu ermöglichen, daß ein Vergleich zwischen einem ankommenden Datenwort und dem in demselben enthaltenen Wort durchgeführt wird. Details dieser Logikstruktur sind in Fig. 4 gezeigt und werden nachfolgend betrachtet.
  • Ein Warteschlangenelement 35 hält die folgenden Informationen:
  • Die Aufgabe Name/Priorität zeigt sich durch einen TCB-Namen, dessen Wert direkt auf seine Priorität (wie oben beschrieben) bezogen ist. Ein "Ereignisfall" ist der Ereignisnamenwert, der auftrat, und der bewirkte, daß die Aufgabe, die durch einen TCB in dem Wort A bezeichnet ist, in die CPU- Warteschlange 20 bewegt wird. Ein "Ereignisname" ist ein Wert, der einer spezifischen Handlung in dem Mikroprozessor 20 gegeben wurde. Ein Ereignisname kann beispielsweise ein Wert sein, der einer Hardware-Unterbrechung, einer I/O-Unterbrechung usw. zugeordnet ist. Ein "Verzögerungswert" ist ein Wert, der einer Zeit zugewiesen ist, bevor ein Ereignis auftreten soll.
  • Jeder Wortspeicher 52, 54 hat einen Ausgang GT und einen Ausgang M, der jeweils mit Multiplexern 56 und 58 verbunden ist. Die Leitung CMD (3) wird an die Multiplexer 56 und 58 angelegt, und ihr Pegel wählt aus, welches Wort (Wort A oder Wort B) verglichen wird, um das erwünschte Ausgangssignal auf entweder der Leitung GT46 oder der Leitung M48 zu liefern.
  • ZULETZT-Busse 42 und 44 und NÄCHSTES-Busse 42' und 44' werden verwendet, um Worte zwischen Warteschlangenelementen 35 zu verschieben. Jeder Wortspeicher 52, 54 hat seinen eigenen Bus ZULETZT und NÄCHSTES, der es erlaubt, daß der Inhalt eines gesamten Warteschlangenelements 35 in einer Paralleloperation verschoben wird. Der Inhalt eines Wortspeichers 52 und eines Wortspeichers 54 nehmen immer das gleiche Warteschlangenelement 35 zusammen ein.
  • Wortspeicherstruktur
  • In Fig. 4 sind die Details eines Wortspeichers 52 dargestellt. Ein Multiplexer 70 empfängt vier Quellen von Eingangsdaten für den Wortspeicher 52 (Wort A). Diese Quellen lauten folgendermaßen:
  • ZULETZT A(0-7) - Inhalt des nächstniedrigeren Warteschlangenelementworts
  • D(0-7) - Interner Datenbus des EXEC
  • NÄCHSTE> A(0-7) - Inhalt des nächsthöheren Warteschlangen elementworts A
  • VDD - wird verwendet, um BIT- und nBIT- (komplementär) Leitungen während eines Vergleichs in einem Inhalts-adressierbaren Speicher 72 vorzuladen.
  • Der Inhalts-adressierbare Speicher (CAM; CAM Content Adressable Memory) 72 enthält acht parallel geschaltete Bitzellen für das Wort A. Jede Bitzelle liefert sowohl ein Wahr- als auch ein Komplementär-Ausgangssignal für sein jeweiliges Bit. Ein Paar von Multiplexern 74 und 76 ermöglichen eine Vergleichsoperation, die bezüglich des 8-Bit- Worts, das in dem CAM 72 gehalten wird, ausgeführt wird.
  • Die Details einer Ein-Bit-CAM-Zelle sind in Fig. 5 gezeigt. Bitleitungen 82 und 84 sind getrennt, wobei jedoch die Wortleitungen 81 und 83 aller acht Ein-Bit-CAM-Zellen miteinander verbunden sind (nicht gezeigt), um eine gemeinsame 8- Bit-Wortleitung zu bilden. Die Basisspeicherzelle ist ein CMOS-Flip-Flip 85 mit bekannter Struktur. Um in die Zelle 85 zu schreiben, werden Daten auf der Bitleitung 82 plaziert, während Komplementärdaten auf einer komplementär-Bitleitung 84 plaziert werden. Dann werden Wortleitungen 81, 83 aktiviert, was bewirkt, daß Zellen 80 gemäß den angelegten Eingangssignalen umgeschaltet werden. Eine Lese-Operation wird begonnen, indem die Bit- und die Bitkomplement-Leitung 82 und 84 vorgeladen werden. Wortleitungen 81, 83 werden dann aktiviert, und die Bitleitung 82 hat den Wert der Zelle.
  • Für eine Vergleichsoperation werden wahre Daten, gegenüber denen ein Vergleich durchgeführt werden soll, an die Komplementärbitleitung 84 angelegt, während komplementäre Daten auf der Bitleitung 82 plaziert werden. Wenn die angelegten Daten mit denen in der Zelle 85 übereinstimmen, dann bleibt ein Übereinstimmungstransistor 86 in einem nicht-leitenden Zustand, wodurch es ermöglicht wird, daß die Übereinstimmungsleitung 88 durch den Zustand in der Zelle 80 unbeeinflußt bleibt. Es existiert eine Übereinstimmungsleitung 88 in jeder Speicherzelle.
  • Bezugnehmend auf Fig. 4 empfängt ein Warteschlangenelementlogikmodul 73 eine Mehrzahl von Befehlen über Leitungen CMD(0-2), decodiert jeden Befehl unter Verwendung einer verdrahteten Logik und erregt entsprechend eine oder mehrere seiner Ausgangsleitungen S1-S5, E und W. Die Ausgangsleitungen von dem Warteschlangenelementlogikmodul 73 werden an Multiplexer 70, 74, 75, an den Inhalts-adressierbaren Wortspeicher 72 und an einen Demultiplexer 76 angelegt, um es zu ermöglichen, daß ein empfangener Befehl durchgeführt wird.
  • Ein Komparator 77 untersucht die Übereinstimmungsleitungsausgangssignale von dem CAM 72 und Dateneingangssignale, die auf dem Datenbus D (0-7) erscheinen, um zu bestimmen, ob empfangene Daten einen größeren Wert haben als Daten, die in dem Wortspeicher 72 gespeichert sind. Der Komparator 77 umfaßt eine Exklusiv-NOR-Eingangsstufe (nicht gezeigt), die das gespeicherte Datenwort von den Übereinstimmungsleitungsausgängen rekonstruiert und einen nachfolgenden Betragsvergleich der Eingangswerte ermöglicht. Wenn die Eingangsdaten wertmäßig kleiner als das gespeicherte Wort sind, wird der GT-Ausgang des Komparators 77 aktiviert. Wenn die Eingangsdaten wertemäßig gleich dem gespeicherten Wort sind, aktiviert das UND-Gatter 78 seinen Ausgang M.
  • Warteschlangenbefehle
  • Jeder Wortspeicher 52/54 spricht auf die folgenden Befehle an:
  • Übereinstimmung = - Zurückgegen der höchst-numerierten Position, die das verglichene Wort enthält
  • Übereinstimmung> - Zurückgeben der höchst-numerierten Position, die den nächsthöheren Wert als das verglichene Wort enthält
  • SR - Schieben des Inhalts der Warteschlange nach rechts (zur nächsthöher-numerierten Position)
  • SL - Verschieben des Inhalts der Warteschlange nach links (zur nächstniedriger-numerierten Position)
  • RD - Lesen des Inhalts des adressierten Wortspeichers auf D(0-7)
  • LD - Laden von D(0-7) in den adressierten Wortspeicher
  • Init - Initialisieren aller Warteschlangenelementworte auf einen Wert, derart, daß alle den Wert 1 haben.
  • Die Befehle "Übereinstimmung" sind Vergleichsbefehle und werden in jedem Warteschlangenelement in einer Warteschlange bezüglich einem ausgewählten Wortspeicher (Wort A oder Wort B) ausgeführt. Die Befehle RD und LD werden nur auf ein adressiertes Wort in einer Warteschlange ausgeführt. Die Befehle SR und SL enthalten beide Adressen, die einen Warteschlangenelementwortspeicher anzeigen, aus dem eine Datenverschiebung auftreten soll. Somit werden die Schiebebefehle SR und SL nur innerhalb von Warteschlangenelementen ausgeführt, deren Adressenposition gleich oder größer als die spezifizierte Adresse ist. Die selektive Schiebeoperation wird freigegeben, indem die spezifizierte Adresse von der Warteschlangenzustandsmaschine 16 zu dem Adressdecodierer (Fig. 2) in der jeweiligen Warteschlange eingespeist wird. Der Adressendecodierer 36 spricht auf die Adresse an, indem die erforderlichen Wortleitungen auf dem Bus 38 aktiviert werden, die in jedes Warteschlangenelement laufen (z. B. Wort (0), die in das Warteschlangenelementlogikmodul 73 in Fig. 4 läuft).
  • Der Befehl Init wird verwendet, um alle Wortspeicher in einer Warteschlange auf den Zustand 1 zu initialisieren. Dieser Wert zeigt an, daß ein Warteschlangenelement leer ist.
  • Bezugnehmend auf Fig. 4 werden die Operationen des Wort speichers 52 als Reaktion auf die Befehle Übereinstimmung = , RD, LD und SR betrachtet.
  • Der Befehl Übereinstimmung = wird durch geeignete Werte initialisiert, die auf die Leitungen CMD(0-2) und QEN(0) plaziert werden, die in das Warteschlangenelementlogikmodul 77 laufen. Diese Werte zeigen einen Befehl Übereinstimmung - für die spezifische Warteschlange an, in der der Wortspeicher 52 vorhanden ist. Der Datenwert, mit dem eine Übereinstimmung hergestellt werden soll, wird dem Wortspeicher 52 auf den Leitungen D(0-7) von dem Datenbus gereicht. Das Warteschlangenelementlogikmodul 73 aktiviert Ausgangssignals 51 und 52, um zu bewirken, daß die Multiplexer 70 die Eingänge D(0-7) zu den Multiplexem 74, 75 leiten. Das Signal 53 von dem Warteschlangenelementlogikmodul 73 wird aktiviert und wählt D(0-7) aus, damit es in den NBIT(0-7)-Eingang in den Wortspeicher 72 fließt. Das Signal 53 bewirkt ferner, das das Komplement von D(0-7) in den Eingang BIT(0-7) in den Wortspeicher 72 fließt. Wenn D(0-7) mit dem Wert übereinstimmt, der in dem Wortspeicher 72 gehalten ist, bewirken resulierende Ausgänge auf den Leitungen Übereinstimmung, daß das UND-Gatter 78 den Übereinstimmungsausgang M aktiviert.
  • Nun sei angenommen, daß ein Befehlinhalt Lesen (RD; RD = Read Contents) über den Leitungen CMD(0-2) auftritt, der von einem Freigabesignal QEN(0) begleitet ist. Das Warteschlangenelementlogikmodul 73 interpretiert diese Pegel als einen Befehl RD-A (Lesen) des Worts A. Ein an den Eingangwort (0) angelegter Pegel in das Warteschlangenelementlogikmodul 73 zeigt an, daß das Wort A dieses speziellen Warteschlangenelements auf den Datenbus D(0-7) gelesen wird. Die Leseoperation wird durch Vorladen (Anheben auf den logischen Zustand 1) der Bitleitungen jeder Bitzelle in dem Wortspeicher 72 eingeleitet. Dies wird durch Bringen der Ausgänge von den Multiplexern 74 und 76 in den Tri-State-Betrieb mit einer Aktivierung der Leitung E von dem Warteschlangenelementlogikmodul 73 begleitet. Die Wortleitung in jede Bitzelle in dem Wortspeicher 72 wird dann aktiviert, woraufhin die 8-Bit-Werte, die in denselben gespeichert sind, über den Demultiplexer 76 unter der Steuerung der Signale S4 und S5 von dem Warteschlangenelementlogikmodul 73 auf den Datenbus D(0-7) gelesen werden.
  • Ein Befehl Laden (LD; LD = Load) wird durch Befehlswerte begonnen, die auf die Eingängen CMD(0-2) in das Warteschlangenelementlogikmodul 73 angelegt werden, was durch ein Freigabesignal QEN(0) begleitet wird. Eine Aktivierung des Eingangsworts (0) in das Warteschlangenelementlogikmodul 73 zeigt an, daß dieses spezielle Warteschlangenelementwort A von dem Datenbus D(0-7) geladen wird. Ansprechend auf den Befehl LD aktiviert das Warteschlangenelementlogikmodul 73 die Signale S1 und S2 in den Multiplexer 70, was wiederum bewirkt, daß die Eingänge D(0-7) mit dem Eingang der Multiplexer 74 und 75 verbunden werden. Aktivierte Pegel auf den Ausgängen S3 und S4 von dem Warteschlangenelementlogikmodul 73 wählen dann die Datenwerte D(0-7) und ihre Komplemente aus, damit dieselben mit den Eingängen Bit (0-7) bzw. NBIT (0-7) in den Wortspeicher 72 verbunden werden. Die Wortleitung W von dem Warteschlangenelementlogikmodul 73 wird dann aktiviert und bewirkt ein Speichern der Datenwerte in dem Wortspeicher 72.
  • Um einen Befehl nach rechts schieben (SR; SR = Shift Right) zu bewirken, werden die Leitungen CMD(0-2) mit den korrekten Befehlswerten aktiviert, was durch ein Freigabesignal auf QEN(0) begleitet wird. Die Wortleitung Wort (0) wird aktiviert, was anzeigt, daß dieses spezielle Warteschlangenelement Wort A Teil einer teilweisen oder gesamten Warteschlangenpositionsverschiebung ist. Ein Befehl SR (oder SL) ist eine Aneinanderknüpfung der oben beschriebenen Befehle RD und LD. Die einzigen Unterschiede bestehen darin, daß Logiksignale 54 und 55 von dem Warteschlangenelementlogikmodul 73 NEXTA(0-7) (NEXT - NÄCHSTES) als Ausgänge der Lesefunktion auswählen, und daß die Ausgänge S1 und S2 LAST(0-7) (LAST = ZULETZT) als Eingangssignale für das Laden (für den Befehl SR) auswählen.
  • Eine parallele Verschiebungsoperation nach rechts wird durch Lesen aller Warteschlangenelementwort gleichzeitig auf die getrennten Busse NEXTA und dadurch gleichzeitiges Laden aller Warteschlangenelementworte von ihren getrennten Bussen LASTA erreicht. Obwohl es nicht ausdrücklich gezeigt ist, ist jeder Warteschlangenelement-NEXTA-Bus mit dem LASTA-Bus des nächsthöheren Warteschlangenelements verbunden. Aus dem obigen ist somit zu sehen, daß Verschiebungen von Daten zwischen Warteschlangenelementen parallel und gleichzeitig auftreten und zwischen ausgewählten Warteschlangenelementen oder zwischen allen Warteschlangenelementen in einer Warteschlange auftreten können.
  • Ereigniszählreqister
  • Das EXEC-Modul 12 umfaßt 256 Ereigniszählregister 26, und zwar eines für jedes mögliche Ereignis (durch eine 8-Bit- Adresse begrenzt). In Fig. 6 sind ein 8-Bit-Ereigniszähler 100 und die ersten drei Ereigniszählregister 102, 104 und 106 gezeigt. Der Ereigniszähler 100 ist programmierbar und spricht entweder auf einen Ereigniszählwert, der über den Datenbus D(0-7) geladen wird, oder auf einen Ereigniszählwert von einem Register 102, 104 oder 106 an.
  • Jedes Ereigniszählregister hat einen zugewiesenen Wert, der eines von 256 Ereignisse anzeigt, die in dem System auftreten können. Wenn ein Register eine Fluß-Zählwert anzeigt, ist dies eine Anzeige, daß mehrere Aufgaben darauf warten, daß das Ereignis auftritt. Wenn das Ereigniszählregister einen negativen Wert zeigt, bedeutet diese Anzeige, daß das Ereignis öfter signalisiert (aufgetreten) ist, als Aufgaben vorhanden sind, die auf das Auftreten des Ereignisses warten. Beim Auftreten eines Ereignisses wird das Ereigniszählregister, das diesem Ereignis entspricht, untersucht, um den Zustand seines Zählwerts zu sehen. Wenn der Zählwert sich als positiv herausstellt, dann weiß die Warteschlangenzu standsmaschine 16, daß eine Aufgabe in der Ereigniswarteschlange 24 vorhanden ist und auf das Auftreten des spezifischen Ereignisses wartet. In einem solchen Fall wird die Ereigniswarteschlange 24 parallel durchsucht, um alle TCBs zu finden, die das spezifische Ereignis spezifizieren. Der TCB mit der höchsten Priorität, die das Ereignis spezifiziert, wird dann zur Ausführung ausgewählt. Die Warteschlangenzustandsmaschine 16 überträgt den ausgewählten TCB von der Ereignisschlange 24 in die CPU-Warteschlange 20, wo er in Prioritätsreihenfolge plaziert wird. Wenn die Aufgabe von der Ereignisschlange 24 entfernt wird, wird der Wert in dem Ereigniszählregister über die Handlung des Zählers 100 dekrementiert.
  • Wenn ein Ereignis auftritt, bewirkt das Hilfsprogramm Signalisieren, daß der Wert des entsprechenden Ereigniszählregisters gelesen wird und verwendet wird, um den Zähler 100 zu programmieren. Dann dekrementiert der Zähler 100 den Wert, wobei dieser dekrementierte Wert dann zurück in ein geeignetes Register geschrieben wird. Ein Hilfsprogramm Warten bewirkt, daß das gleiche Segment auftritt, mit der Ausnahme, daß der Wert dekrementiert ist. Der Wert jedes Ereigniszählregisters (102, 104, 106, usw.) ist verfügbar, um über den Datenbus D(0-7) durch die Warteschlangenzustandsmaschinen 16 gelesen zu werden. Die folgenden Befehlsleitungen von der Warteschlangenzustandsmaschine 16 werden an den Zähler 100 angelegt.
  • ECOP(0-1) werden verwendet, um zu spezifizieren, ob der Zähler 100 Inkrementieren, Dekrementieren, Laden oder gelöscht werden soll.
  • ECOC wird verwendet, um die Ausgabe von dem Zähler 100 auf die Datenleitungen D(0-7) freizugeben.
  • ECCLK ist der Takt, der verwendet wird, um eine Operation auf den Zähler 100 zu bewirken.
  • ECLR wird verwendet, um alle Ereigniszählregister 102, 104, 106, usw. auf Null zu initialisieren.
  • Verzögerungs-Zeitgeber
  • In Fig. 7 sind die Details des Verzögerungszeitgebers 28 in Fig. 1 gezeigt. Der Verzögerungszeitgeber 28 zählt Systemtaktzyklen und bewirkt, daß die Warteschlangenzustandsmaschine 16 jedes Ereignis signalisiert, dessen Verzögerung hoch ist. Die Anzahl von Taktzyklen in einer Verzögerungseinheit (d. h. einer Einheit der Verzögerungszeit) ist programmierbar und wird in einem Zeitgeberintervallregister in den Befehls-Und-Status-Registern 14 gehalten. Der Verzögerungseinheitswert kommt in einen 8-Bit-Zähler 110 in dem Verzögerungszeitgeber 28 auf Leitungen TIR(0-7) von dem Zeitgeberintervallregister. Der 8-Bit-Zähler 112 zählt die Anzahl von Verzögerungseinheiten durch Akkumulieren der Anzahl von Taktzyklen in jeder Verzögerungseinheit und durch dann Inkrementieren auf einen nächsten Verzögerungseinheitzählwert. Der 8-Bit-Zähler 112 zählt bis auf 255 und läuft dann auf 0 über. Das Hilfsprogramm Verzögern verzögert Ereignisse um eine relative Zeit, nicht um eine absolute Zeit.
  • Befehls-Und-Status-Register
  • Bezugnehmend auf Fig. 1 umfassen die Befehls- und Status- Register 14 eine Anzahl von Registern, auf die der Mikroprozessor zugreifen kann, die 16-Bit-Daten (und Befehle) von dem Mikroprozessor 10 und 8-Bit-Daten von verschiedenen Elementen innerhalb des EXEC-Moduls 12 empfangen. Alle Register haben eine Breite von 16 Bit, wobei auf jedes Register entweder geschrieben oder von demselben gelesen werden kann, jedoch nicht beides. In Fig. 8 sind Beispiele für ein Schreiben-Register 120 und ein Lesen-Register 122 zusammen mit ihren Verbindungen und Steuerschaltungen gezeigt. Das Register 122 ist ein Lesen-Register und empfängt Daten von dem EXEC-Moduldatenbus D(0-7). Solche Daten können anschließend beim Anlegen eines Freigabesignals ROEN (5) zu dem Mikroprozessor 10 ausgelesen werden. Auf ähnliche Art und Weise empfängt das Schreiben-Register 120 Daten vom Mikroprozessor 10 und liefert auf das Anlegen eines Freigabesignals RIEN(0) solche Daten als Ausgabe auf den Datenbus D(0-7).
  • Nachfolgend ist eine Liste von Registern (nicht gezeigt), auf die der Mikroprozessor zugreifen kann, innerhalb der Befehls-Und-Status-Register 14 gezeigt, wobei ferner eine Beschreibung des jeweiligen Registerbetriebs während der Ausführung einer zugeordneten Hilfsprogrammoperation gegeben ist.
  • Disponieren-Register (ein Schreiben-Register): Wenn ein Aufgaben-TCB in dieses Register geschrieben wird, wird der TCB in der CPU-Warteschlange 20 gemessene Priorität (dem TCB-Wert) plaziert.
  • Suspendieren-Register (ein Schreiben-Register): Wenn ein Aufgaben-TCB in dieses Register geschrieben wird, wird der TCB von der CPU-Warteschlange 20 entfernt, wenn er tatsächlich in der CPU-Warteschlange 20 ist. Wenn der TCB nicht in der CPU-Warteschlange 20 ist, wird eine Unterbrechungsbedingung für den Mikroprozessor 10 erzeugt. Ein Status, der diese Bedingung anzeigt, wird in einem Statusregister eingestellt.
  • Signalsieren-Register (ein Schreiben-Register): Wenn ein Ereignissteuerblock in dieses Register von dem Mikroprozessor 10 geschrieben wird, wird dieses Ereignis signalisiert. Wenn keine Aufgabe auf dieses Ereignis wartet, besteht die einzige Handlung darin, daß der Ereigniszählwert für dieses Ereignis dekrementiert wird. Wenn Aufgaben auf dieses Ereignis warten, dann wird der TCB mit der höchsten Priorität (dem niedrigsten TCB-Wert) von der Ereigniswarteschlange 24 entfernt und in der CPU-Warteschlange 20 plaziert.
  • Warten-Register (ein Schreiben-Register): Wenn ein Ereignissteuerblock in dieses Register von dem Mikroprozessor 10 geschrieben wird, wird der TCB der laufenden Aufgabe in der Ereignis-Warteschlange 24 plaziert, um auf das bezeichnete Ereignis zu warten. Der TCB der laufenden Aufgabe ist an der ersten Warteschlangenposition in der CPU-Warteschlange 20 (Position 0) zu finden. Dieser TCB wird von der CPU-Warteschlange 20 entfernt und in der Ereigniswarteschlange 24 gemäß seiner Priorität (dem TCB-Wert) plaziert.
  • Verzögern-Register (ein Schreiben-Register): Wenn ein Ereignissteuerblock und ein 8-Bit-Verzögerungswert in dieses Register von dem Mikroprozessor 10 geschrieben werden, wird der Ereignissteuerblockname in der Verzögern-Warteschlange 22 plaziert, und zwar nach seinem Verzögerungswert prioritisiert. Je niedriger die Verzögerungs ist, um so näher an dem Kopf dieser Warteschlange wird der Block plaziert.
  • Status-Register (ein Lesen-Register): Das Status-Register enthält Informationen über irgendwelche unnormalen Bedingungen, die innerhalb des EXEC-Chips auftreten können.
  • Zeitgeberintervall-Register (ein Schreiben-Register): Der Benutzer schreibt einen 16-Bit-Wert in dieses Register, der die Anzahl von Systemtakten darstellt, die jeden Verzögerungswert ausmachen.
  • CPUQ-Register, Ereignis-Q-Register, Verzögerung-Q-Register (Lesen-Register): Diese Register werden, wenn sie von dem Mikroprozessor 10 gelesen werden, sequentiell den Inhalt aller Warteschlangenelementworte in der geeigneten Warteschlange geben. Diese sind Diagnose-Register.
  • Diagnosezeiger-Register (ein Schreiben-Register): Wenn auf die Diagnoseregister ein Wert geschrieben wird, werden die Diagnoseregister, wenn sie gelesen werden, eingestellt, um von dieser Position innerhalb der Warteschlange zu lesen.
  • Aktiv-TCB-Register (ein Lesen-Register): Wenn sie gelesen werden, wird der TCB-Name der gegenwärtigen Aufgabe, die die höchste Priorität der CPU-Warteschlange hat, zurückgegeben.
  • Ereignisfall-Register (ein Lesen-Register): Wenn es gelesen wird, wird der Ereignissteuerblockname des Ereignisses, das bewirkte, daß eine Aufgabe die Ausführung aufnahm, zurückgegeben. Dieser Wert hat nur eine Bedeutung, wenn diese Aufgabe einen Warten-Hilfsprogramm-Aufruf ausgeführt hat.
  • Warteschlangenzustandsmaschine
  • Die Warteschlangenzustandsmaschine 16 steuert die Arbeit des EXEC-Moduls 12. Die Warteschlangenzustandsmaschine 16 wird wiederum durch eine interne Hardware gesteuert, die auf Befehle anspricht, die auf die Befehls-Und-Status-Register 14 geschrieben werden, um Steuerleitungen sequentiell zu erregen, um Systemoperationen gemäß einem spezifizierten Befehl zu bewirken. Die Warteschlangenzustandsmaschine 16 ist in jeder Hinsicht herkömmlich und ihrer Anordnung nach für Fachleute bekannt.
  • Disponieren-Hilfsprogramm für den EXEC-Modul-Betrieb
  • Es sei angenommen, daß der Mikroprozessor 10 einen TCB einer Aufgabe, die er disponieren möchte, in das Disponieren-Register innerhalb der Befehls-Und-Status-Register 14 in dem EXEC-Modul 12 schreibt. Der TCB-Wert wird dadurch innerhalb des Disponieren-Registers zwischengespeichert. Darauf ansprechend führt die Warteschlangenzustandsmaschine 16 eine Parallelsuche der CPU-Warteschlange 20 durch, um einen gespeicherten TCB mit nächstniedriger Priorität von dem disponierten TCB zu finden. Sobald er gefunden ist, werden die TCBs innerhalb der CPU 20 um eine Position nach rechts ver schoben, wobei von der Warteschlangenposition des ankommenden TCB gestartet wird. Die Position innerhalb der CPU 20, die durch diese Rechtsverschiebung frei wird, wird mit dem TCB der zu disponierenden Aufgabe geladen.
  • Das EXEC-Modul 12 aktiviert nun ein Handschlag-Signal NDTACK von der Torsteuerung 30, um anzuzeigen, daß die Transaktion nun beendet werden kann. Daraufhin deaktiviert der Mikroprozessor 10 sein Signal CS zu der Torsteuerung 30, wobei dieses Signal jeder Transaktion mit dem EXEC-Modul 12 vorausgeht.
  • Die CPU-Warteschlange 20 ist nun modifiziert, derart, daß der TCB-Name der zu disponierenden Aufgabe in der CPU-Warteschlange 20 an ihrer korrekten Prioritätsposition vorhanden ist. Der Mikroprozessor 10 liest, um zu bestimmen, was nun die Aufgabe mit höchster Priorität ist, die auf eine Ausführung wartet, das Aktiv-TCB-Register von den Befehls- Und-Status-Registern 14. Der Mikroprozessor 10 kann ebenfalls das Ereignisfallregister lesen. Der Zugriff durch den Mikroprozessor 10 auf das Aktiv-TCB-Register bewirkt, daß die Warteschlangenzustandsmaschine 16 den TCB-Name von dem ersten Warteschlangenelement (mit höchster Priorität) in der CPU-Warteschlange 20 liest, und daß dieser Wert auf die Mikroprozessordatenleitungen DATA (0-15) gelegt wird. Die Vorsteuerung 30 aktiviert dann die NDTACK-Leitung, um anzuzeigen, daß der Wert des Aktiv-TCB-Registers für den Mikroprozessor 10 verfügbar ist.
  • Es sei in Erinnerung gerufen, daß der Ereignisfall der Name des Ereignisses ist, das bewirkt hat, daß ein Name einer Aufgabe in die CPU-Warteschlange 20 bewegt wird. Der Mikroprozessor 10 kann auf das Ereignisfallregister zugreifen, um den Ereigniswert innerhalb der CPU-Warteschlange 20 zu bestimmen. Dieser Zugriff bewirkt, daß der Ereignisname von dem ersten Warteschlangenelement in der CPU-Warteschlange 20 in das Ereignisfallregister gelesen wird und somit auf den Datenbus DATA (0-15) des Mikroprozessors 10 plaziert wird.
  • Das Signal NDTACK wird aktiviert, was dem Mikroprozessor 10 zeigt, daß der Wert dieses Registers auf dem Ausgangsdatenbus verfügbar ist.
  • Warteschlangenzustandsmaschinenbetrieb - Disponieren-Hilfsprogramm
  • Im nachfolgenden finden sich Zustände, die während eines Disponieren-Hilfsprogramms auftreten. Eingangssignale in die Warteschlangenzustandsmaschine 16 sind in Kleinbuchstaben dargestellt, während Ausgangssignale in Großbuchstaben dargestellt sind. Alle Ereignisse sind auf den Systemtakt synchronisiert. Für jeden Zustand, der nicht verlassen wird, bis ein spezielles Ereignis auftritt, ist das Ereignis angedeutet. Wenn kein Ereignis für einen gegebenen Zustand spezifiziert ist, wird der Zustand nach dem nächsten Maschinentakt verlassen.
  • 1. IDLE (IDLE = Leerlauf) - EXEC-Chipauswahl (cs) ist nicht aktiviert, ntst ist nicht aktiviert, nrst ist nicht aktiviert, Zeitgeber-Übertrag-heraus (tco; tco = timer carry out) ist nicht aktiviert.
  • Ereignis - Chipauswahl (cs) ist aktiviert, die CPU wünscht, einen Betriebssystemaufruf durchzuführen.
  • 2. CMD RCVD - ein EXEC-Befehl wird empfangen.
  • Handlungen - Das Disponieren-Register speichert den Wert zwischen, den die CPU auf den uP-Address-Leitungen liefert. Dieser Wert ist der TCB-Name der Aufgabe, die zur Ausführung disponiert werden soll.
  • 3. SETUP MATCH CMD - Beginnen des Disponieren-Hilfsprogramms.
  • Einstellen für einen Befehl "Übereinstimmung> .".
  • Handlungen - Die Leitungen CMD(0-3) werden mit dem Befehl "Übereinstimmung> A". eingestellt. Die Leitungen D(0-7) erhalten den Wert in dem Disponieren-Register. QEN(0-3) ist auf den CPUQ-Wert eingestellt, um anzuzeigen, daß diese Handlung auf der CPU-Warteschlange stattfindet.
  • 4. BEENDEN DES BEFEHLS ÜBEREINSTIMMEN - Aktivieren der Leitung "Übereinstimmen".
  • Handlungen - Deaktivieren der Handlungen des letzten Zustands und Aktivieren der Leitung ÜBEREINSTIMMUNG.
  • 5. LESEN ÜBEREINSTIMMUNG> ADRESSE - Lesen der Adressenleitungen für die Übereinstimmung> -Adresse mit höchster Priorität.
  • Handlungen - Speichern des Werts auf ADDR(0-7) in einem Temporärregister und Deaktivieren der Leitung ÜBEREIN- STIMMUNG.
  • 6. EINSTELLEN DES BEFEHLS SR - Einstellung für einen Befehl Verschieben nach rechts.
  • Handlungen - Setzen eines Werts im Temporärregister auf die Leitungen ADDR(0-7). Einstellen der Leitungen CMD(0-3) auf den Befehl "SR" (Schieben nach rechts) und Einstellen der Leitungen QEN(0-3) gleich dem Wert CPUQ (um eine Handlung auf der CPU-Warteschlange zu zeigen).
  • 7. BEENDEN DES BEFEHLS SR - Beenden des Befehls Verschieben nach rechts.
  • Handlungen - Deaktivieren der letzten Handlungen.
  • 8. EINSTELLEN DES BEFEHLS LD - Einstellen für einen Befehl "LD" (Laden).
  • Handlungen - Die CMD(0-3)-Leitungen erhalten den "LDA"- Befehlswert. Die Leitungen D(0-7) erhalten den Inhalt des Disponieren-Registers. Die Leitungen ADDR(0-7) erhalten den Wert in dem Temporärregister. Die Leitungen QEN(0-3) werden gleich dem CPUQ-Wert eingestellt (um eine Handlung auf die CPU-Warteschlange anzuzeigen).
  • 9. BEENDEN DES BEFEHLS LD - Beenden des Befehls Laden. Handlungen - Deaktivieren der Handlungen des letzten Zustands.
  • 10. EINSTELLUNG, UM uP XACTION ZU BEENDEN (Einstellen, um eine Transaktion mit der CPU zu beenden).
  • Handlungen - DTACK (Datenübertragungsbestätigung) wird aktiviert.
  • Ereignis - cs ist deaktiviert.
  • 11. BEENDEN VON uP XACTION - Beenden einer Transaktion mit der CPU.
  • Handlungen - DTACK (Datentransferbestätigung) wird deaktiviert.
  • 12. LEERLAUFEN - GEHEN zum obigen Zustand 1.
  • Zu diesem Zeitpunkt wurde der TCB der Aufgabe in der CPU- Warteschlange plaziert. Um die aktualisierten Warteschlangeninformationen zu verwenden, muß der Mikroprozessor 10 einen Befehl "LESEN AKTIVER TCB" ausführen. Zusätzlich kann der Mikroprozessor 10 einen Befehl "LESEN EREIGNISFALL" ausführen, um das Ereignis zu bestimmen, das bewirkte, daß diese Aufgabe die Ausführung wieder aufnahm. Diese Handlungen werden für jeden Hilfsprogrammaufruf durchgeführt, einschließlich Disponieren, Suspendieren, Signalisieren, Warten und Verzögern.
  • Befehl LESEN_AKTIVER_TCB
  • 1. LEERLAUF EXEC-Chip-Auswahl (cs), ntst, nrst und tco (Zeitgeber-Übertrag-heraus) sind alle deaktiviert.
  • 2. EINSTELLEN DES BEFEHLS RD - Einstellen eines Befehls "RD" (Lesen).
  • Handlungen - Die Leitungen CMD(0-3) erhalten den Befehl "RDA" (Lesen des Worts A). Die Leitungen QEN(0-3) erhalten den CPUQ-Wert. Die Leitungen ADDR(0-7) werden gleich 0 eingestellt (für die erste Position in der CPU-Warteschlange, d. h. den Warteschlangenkopf).
  • 3. SCHREIBEN DES AKTIV-TCB-REGISTERS - Beschreiben des Aktiv-TCB-Registers mit dem TCB-Name an dem Kopf der CPU- Warteschlange.
  • Handlungen - Das Aktiv-TCB-Register wird mit dem Wert beschrieben, der nun auf den Leitungen D(0-7) erscheint. Dies ist der TCB-Name für die nächste Aufgabe, die die CPU-Betriebsmittel kraft ihrer Priorität verwendet.
  • 4. EINSTELLEN EINES ENDES EINER uP XACTION - Einstellen, um eine Transaktion mit der CPU zu beenden.
  • Handlungen - DTACK (Datentransfer bestätigt) ist aktiviert.
  • Ereignis - cs ist deaktiviert.
  • 5. BEENDEN VON uP XACTION - Beenden einer Transaktion mit der CPU.
  • Handlungen - DTACK (Datentransferbestätigung wird deak tiviert.
  • 6. LEERLAUFEN (Zustand 1 oben)
  • BEFEHL LESEN_EREIGNISFALL
  • 1. LEERLAUFEN - EXEC-Chipauswahl (cs), ntst, nrst, und tco (Zeitgeber-Übertrag-heraus) sind alle deaktiviert.
  • 2. EINSTELLEN EINES BEFEHLS RD - Einstellen eines Befehls "RD" (Lesen).
  • Handlungen - CMD(0-3) wird auf den Wert "RDB" (Lesen des Worts B) eingestellt. QEN(0-3) wird auf den Wert CPUQ eingestellt. Die Leitungen ADDR(0-7) werden auf 0 eingestellt. Wir möchten das Wort B des ersten Elements in der CPU-Warteschlange lesen.
  • 3. SCHREIBEN DES EREIGNISFALL-REGISTERS - Beschreiben des Ereignisfall-Registers mit dem Ereignisfall-Wert der nächsten Aufgabe, die auf der CPU ausgeführt wird.
  • Handlungen - Das Ereignisfall-Register wird gleich dem Wert der Leitungen D(0-7) eingestellt. Die Handlungen des letzten Zustands werden deaktiviert.
  • 4. EINSTELLEN EINES ENDES DER uP XACTION - Einstellen, um eine Transaktion mit der CPU zu beenden.
  • Handlungen - DATCK (Datentransferbestätigung) wird aktiviert.
  • Ereignis - cs ist deaktiviert.
  • 5. BEENDEN EINER uP XACTION - Beenden einer Transaktion mit der CPU.
  • Handlungen - DTACK (Datentransferbestätigung) wird deak tiviert.
  • 6. LEERLAUF (Zustand 1 oben).

Claims (13)

1. Ein in Hardware implementiertes Betriebssystemkernelement mit folgenden Merkmalen:
einem Satz von Befehls-Und-Status-Registern (24) zum Empfangen von sowohl Adressen als auch Daten von einem verbundenen Datenverarbeitungssystem (10) und zum Leiten von Daten zu dem Datenverarbeitungssystem (10);
einer CPU-Warteschlange (20), die eine Mehrzahl von Wortspeichern (52, 54) umfaßt, um eine Warteschlange von Aufgabennamen zu speichern, wobei die Aufgabennamen in einer Prioritätsreihenfolge der benannten Aufgaben organisiert sind, wobei alle Aufgaben zur Ausführung bereit sind;
einer Ereigniswarteschlange (24), die eine Mehrzahl von Wortspeichern (52, 54) umfaßt, um eine Warteschlange von Aufgabennamen in einer Prioritätsreihenfolge zu speichern, wobei jeder Aufgabenname in Zuordnung zu einem Ereignisnamen gespeichert ist, bei dessen Auftreten der zugeordnete Aufgabenname zur Ausführung bereit sein wird; und
einer Warteschlangenzustandsmaschine (16), die auf Ereignisdaten in den Befehls-Und-Status-Registern (14) anspricht, um ein Durchsuchen der Ereigniswarteschlange (24) auf parallele Art und Weise zu bewirken, um alle Aufgabennamen zu finden, die den Ereignisdaten zugeordnet sind, und um eine Übertragung der Aufgabennamen zu der CPU-Warteschlange (20) freizugeben.
2. Das Kernelement gemäß Anspruch 1, bei dem die Warteschlangenzustandsmaschine (16) bewirkt, daß die Aufgabennamen in der CPU-Warteschlange (20) in der Aufgabennamenprioritätsreihenfolge gespeichert werden.
3. Das Kernelement gemäß Anspruch 1 oder 2, bei dem jeder Aufgabenname ein einzigartiger Wert ist, wobei der Wert die Priorität der benannten Aufgabe anzeigt.
4. Das Kernelement gemäß einem der Ansprüche 1 bis 3, das ferner folgendes Merkmal aufweist:
eine Verzögerungswarteschlange (22), die eine Mehrzahl von Wortspeichern (52, 54) zum Speichern einer Warteschlange von Verzögerungsintervallwerten und zugeordneten Ereignisnamen aufweist, die beim Auftreten des Verzögerungsintervallwerts signalisiert werden sollen, wobei die Ereignisnamen in der Warteschlange (22) gemäß einem ansteigenden Wert der zugeordneten Verzögerungsintervallwerte angeordnet sind, wobei die Warteschlangenzustandsmaschine (16) auf eine Verzögerungsintervallwertmanifestierung anspricht, um zu bewirken, daß ein zugeordneter Ereignisname signalisiert wird, wodurch Aufgabennamenübertragungen von der Ereigniswarteschlange freigegeben werden können.
5. Ein Kernelement gemäß Anspruch 4, das ferner folgende Merkmale aufweist:
eine Zeitgebereinrichtung (28) zum Signalisieren von Verzögerungsintervallwerten; und
eine Einrichtung (16), die auf einen Verzögerungsintervallwert anspricht, der durch die Zeitgebereinrichtung (28) signalisiert wird, zum Durchsuchen von Wortspeichern (52, 54) in der Verzögerungswarteschlange (22) auf parallele Art und Weise, um ein Ereignis herauszufinden, das bei einem Signalisieren eines Verzögerungs intervallwerts signalisiert werden soll, und um das signalisierte Ereignis zu der CPU-Warteschlange zu übertragen, wodurch Aufgabennamen in der Verzögerungswarteschlange (22) identifiziert werden, die bei einer Signalisierung des Ereignisses zu der CPU-Warteschlange (20) übertragen werden sollen.
6. Das Kernelement gemäß Anspruch 4 oder 5, das ferner folgendes Merkmal aufweist:
eine Adresseneinrichtung (36), die mit jedem Wortspeicher in jeder Warteschlange verbunden ist, um ein selektives Lesen von Daten von dem Wortspeicher oder ein selektives Schreiben von Daten in den Wortspeicher freizugeben.
7. Das Kernelement gemäß Anspruch 6, das ferner folgendes Merkmal aufweist:
eine Buseinrichtung (42', 44'), die mit jedem Wortspeichern (52, 54) in jeder Warteschlange verbunden ist, um eine gleichzeitige Datenübertragung zwischen ausgewählten Wortspeichern (52, 54) zu ermöglichen.
8. Das Kernelement gemäß einem der vorhergehenden Ansprüche, das ferner folgendes Merkmal aufweist:
eine Mehrzahl von Ereignisregistern (100, 102, 104, 106), wobei eines für jedes zu signalisierende Ereignis vorgesehen ist, wobei jedes Ereignisregister (100, 102, 104, 106) einen Zählwert von Aufgaben anzeigt, die auf das Auftreten eines Ereignisses warten, wobei die Warteschlangenzustandsmaschine auf ein signalisiertes Ereignis anspricht, um alle Ereignisregister (100, 102, 104, 106) parallel zu durchsuchen, um zu bestimmen, ob irgendwelche Aufgaben auf das Auftreten des signalisierten Ereignisses warten, und um, wenn das so ist, eine Übertragung des Aufgabennames mit höchster Priorität, der dem Ereignis in der Ereigniswarteschlange (24) zugeordnet ist, zu bewirken.
9. Das Kernelement gemäß einem der vorhergehenden Ansprüche, das ferner folgendes Merkmal aufweist:
eine Verschiebungslogikeinrichtung (73, 42', 44'), zum gleichzeitigen Übertragen einer Mehrzahl von Aufgabennamen von einem Satz von Wortspeichern (52, 54) zu einem anderen Satz von Wortspeichern (52, 54) in der Prozessorwarteschlange (20).
10. Das Kernelement gemäß Anspruch 9, bei dem die Verschiebungslogikeinrichtung (73) eine Einrichtung (42', 44') zum gleichzeitigen Übertragen der Mehrzahl von Aufgabennamen von Wortspeichern in einer ersten Richtung entlang der Warteschlange oder in der entgegengesetzten Richtung entlang der Warteschlange abhängig von einem erzeugten Befehlssignal umfaßt.
11. Das Kernelement gemäß Anspruch 10, bei dem die Verschiebungslogikeinrichtung (73) unter der Steuerung einer Adresse des Wortspeichers bewirkt, daß die gleichzeitige Übertragung von Aufgabennamen von dem adressierten Wortspeicher begonnen wird, und daß die Aufgabennamen in zusätzliche Wortspeicher entlang der Prozessorwarteschlange aufgenommen werden, wobei von dem adressierten Wortspeicher ausgegangen wird.
12. Ein Kernelement gemäß einem der vorhergehenden Ansprüche, bei dem eine parallele Durchsuchung der Ereigniswarteschlange (24) ein Auslesen aller Aufgabennamen, die einem signalisierten Ereignis zugeordnet sind, auf parallele Art und Weise und in der Prioritätsreihenfolge bewirkt.
13. Ein Kernelement gemäß einem der vorhergehenden Ansprüche, bei dem die Einrichtung (16) ferner für jedes Er eignis bestimmt, ob mehr Ereignisse aufgetreten sind, als Aufgaben vorhanden sind, die auf das Auftreten eines solchen Ereignisses warten.
DE69227664T 1991-10-15 1992-10-14 Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor Expired - Fee Related DE69227664T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US77693191A 1991-10-15 1991-10-15

Publications (2)

Publication Number Publication Date
DE69227664D1 DE69227664D1 (de) 1999-01-07
DE69227664T2 true DE69227664T2 (de) 1999-04-22

Family

ID=25108772

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69227664T Expired - Fee Related DE69227664T2 (de) 1991-10-15 1992-10-14 Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor

Country Status (4)

Country Link
US (1) US5465335A (de)
EP (1) EP0537721B1 (de)
JP (1) JP3604091B2 (de)
DE (1) DE69227664T2 (de)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE59310052D1 (de) * 1993-11-26 2000-07-06 Siemens Ag Recheneinheit mit mehreren ausführbaren Tasks
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
US5627745A (en) * 1995-05-03 1997-05-06 Allen-Bradley Company, Inc. Parallel processing in a multitasking industrial controller
DE19530483A1 (de) * 1995-08-18 1997-02-20 Siemens Ag Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
KR19990076823A (ko) * 1995-12-29 1999-10-25 파워티브이, 인코포레이티드 운영 시스템 커널 및 이것에서의 이벤트 필터링 방법과세마포 기능 구현 방법
FR2759177B1 (fr) * 1997-01-31 1999-04-23 Sextant Avionique Procede et dispositif de traitement de plusieurs applications techniques avec pour chacune d'elles la surete qui lui est propre
US6408324B1 (en) 1997-07-03 2002-06-18 Trw Inc. Operating system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of processes with the system
US5938708A (en) * 1997-07-03 1999-08-17 Trw Inc. Vehicle computer system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of vehicle processes
US6006027A (en) * 1997-08-20 1999-12-21 Synopsys, Inc. Method and apparatus for event simulation
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US6216132B1 (en) * 1997-11-20 2001-04-10 International Business Machines Corporation Method and system for matching consumers to events
US6128672A (en) * 1998-03-10 2000-10-03 Motorola, Inc. Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device
US6360243B1 (en) 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US6430593B1 (en) 1998-03-10 2002-08-06 Motorola Inc. Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system
US6188975B1 (en) 1998-03-31 2001-02-13 Synopsys, Inc. Programmatic use of software debugging to redirect hardware related operations to a hardware simulator
US7805724B1 (en) 1998-05-27 2010-09-28 Arc International I.P., Inc. Apparatus, method and computer program for dynamic slip control in real-time scheduling
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
US7451447B1 (en) 1998-08-07 2008-11-11 Arc International Ip, Inc. Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls
US6539440B1 (en) 1998-11-16 2003-03-25 Infineon Ag Methods and apparatus for prediction of the time between two consecutive memory accesses
US6453370B1 (en) 1998-11-16 2002-09-17 Infineion Technologies Ag Using of bank tag registers to avoid a background operation collision in memory systems
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6892272B1 (en) 1999-02-23 2005-05-10 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a content addressable memory device
US6215325B1 (en) 1999-03-29 2001-04-10 Synopsys, Inc. Implementing a priority function using ripple chain logic
DE19923232C2 (de) * 1999-05-20 2001-04-19 Beta Res Gmbh Vorrichtung und Verfahren zur Sicherung von Daten auf einer Chipkarte
US6944709B2 (en) 1999-09-23 2005-09-13 Netlogic Microsystems, Inc. Content addressable memory with block-programmable mask write mode, word width and priority
US6567340B1 (en) * 1999-09-23 2003-05-20 Netlogic Microsystems, Inc. Memory storage cell based array of counters
US6934795B2 (en) 1999-09-23 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with programmable word width and programmable priority
US7143231B1 (en) 1999-09-23 2006-11-28 Netlogic Microsystems, Inc. Method and apparatus for performing packet classification for policy-based packet routing
US7272027B2 (en) 1999-09-23 2007-09-18 Netlogic Microsystems, Inc. Priority circuit for content addressable memory
US6691175B1 (en) * 2000-02-25 2004-02-10 Sun Microsystems, Inc. Method and apparatus for managing data propagation between software modules
US6728715B1 (en) * 2000-03-30 2004-04-27 International Business Machines Corporation Method and system for matching consumers to events employing content-based multicast routing using approximate groups
US7315901B1 (en) * 2000-04-13 2008-01-01 International Business Machines Corporation Method and system for network processor scheduling outputs using disconnect/reconnect flow queues
US6820263B1 (en) * 2000-12-29 2004-11-16 Nortel Networks Limited Methods and system for time management in a shared memory parallel processor computing environment
US6772372B2 (en) 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
US6694457B2 (en) 2001-03-06 2004-02-17 Hewlett-Packard Development Company, L.P. System and method for monitoring execution of privileged instructions
US7823131B2 (en) * 2001-06-29 2010-10-26 Mentor Graphics Corporation Debugger for a hardware-implemented operating system
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US6985976B1 (en) 2002-02-22 2006-01-10 Teja Technologies, Inc. System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
US7130936B1 (en) 2002-02-22 2006-10-31 Teja Technologies, Inc. System, methods, and computer program product for shared memory queue
US7039772B1 (en) 2002-02-22 2006-05-02 Teja Technologies, Inc. System, method, and computer program product for processing reflective state machines
US7320044B1 (en) 2002-02-22 2008-01-15 Arc International I.P., Inc. System, method, and computer program product for interrupt scheduling in processing communication
US6797998B2 (en) 2002-07-16 2004-09-28 Nvidia Corporation Multi-configuration GPU interface device
JP3859564B2 (ja) * 2002-08-05 2006-12-20 日本電気株式会社 イベント通知タスク制御処理方式及び方法並びにプログラム
US7043729B2 (en) * 2002-08-08 2006-05-09 Phoenix Technologies Ltd. Reducing interrupt latency while polling
JP2004078665A (ja) * 2002-08-20 2004-03-11 Nec Corp タスク制御装置、及びタスク制御方法
US7111089B2 (en) * 2002-12-23 2006-09-19 Motorola, Inc. Programmable scheduler for digital signal processor
US7330477B2 (en) * 2002-12-24 2008-02-12 Sun Microsystems, Inc. Method and apparatus for starvation-free scheduling of communications
US7441240B2 (en) * 2003-01-07 2008-10-21 Matsushita Electric Industrial Co., Ltd. Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling
US7346664B2 (en) * 2003-04-24 2008-03-18 Neopath Networks, Inc. Transparent file migration using namespace replication
US8539081B2 (en) * 2003-09-15 2013-09-17 Neopath Networks, Inc. Enabling proxy services using referral mechanisms
US7984446B1 (en) * 2003-09-18 2011-07-19 Nvidia Corporation Method and system for multitasking BIOS initialization tasks
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
WO2005055058A1 (en) * 2003-12-04 2005-06-16 Matsushita Electric Industrial Co., Ltd. Task scheduling device, method, program, recording medium, and transmission medium for priority-driven periodic process scheduling
JP4675891B2 (ja) * 2003-12-26 2011-04-27 パナソニック株式会社 タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体
JP4009602B2 (ja) * 2004-03-02 2007-11-21 日本電気通信システム株式会社 リアルタイムosを用いたタスク処理方法、装置、及びプログラム
US8533716B2 (en) * 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US8195627B2 (en) * 2004-04-23 2012-06-05 Neopath Networks, Inc. Storage policy monitoring for a storage network
US8190741B2 (en) * 2004-04-23 2012-05-29 Neopath Networks, Inc. Customizing a namespace in a decentralized storage environment
CN100538622C (zh) * 2004-05-09 2009-09-09 意法半导体有限公司 一种提高数字电视接收设备中事件传递与处理的方法
KR100597406B1 (ko) 2004-06-29 2006-07-06 삼성전자주식회사 Osd 화면 상에서 애니메이션이 진행되는 동안 실시간키입력이 가능한 셋탑박스 및 osd 데이터 출력 방법
US8832697B2 (en) * 2005-06-29 2014-09-09 Cisco Technology, Inc. Parallel filesystem traversal for transparent mirroring of directories and files
US8170041B1 (en) * 2005-09-14 2012-05-01 Sandia Corporation Message passing with parallel queue traversal
US8131689B2 (en) * 2005-09-30 2012-03-06 Panagiotis Tsirigotis Accumulating access frequency and file attributes for supporting policy based storage management
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
JP5024899B2 (ja) * 2006-03-27 2012-09-12 株式会社日立製作所 データ処理装置
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US7950014B2 (en) * 2007-06-01 2011-05-24 Microsoft Corporation Detecting the ready state of a user interface element
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
TWI587693B (zh) 2011-06-30 2017-06-11 微軟技術授權有限責任公司 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
US9513904B2 (en) 2013-10-15 2016-12-06 Mill Computing, Inc. Computer processor employing cache memory with per-byte valid bits
US10936369B2 (en) 2014-11-18 2021-03-02 International Business Machines Corporation Maintenance of local and global lists of task control blocks in a processor-specific manner for allocation to tasks
US10175885B2 (en) 2015-01-19 2019-01-08 Toshiba Memory Corporation Memory device managing data in accordance with command and non-transitory computer readable recording medium
US10691502B2 (en) 2016-06-03 2020-06-23 International Business Machines Corporation Task queuing and dispatching mechanisms in a computational device
US10185593B2 (en) 2016-06-03 2019-01-22 International Business Machines Corporation Balancing categorized task queues in a plurality of processing entities of a computational device
US11029998B2 (en) 2016-06-03 2021-06-08 International Business Machines Corporation Grouping of tasks for distribution among processing entities
US10318354B1 (en) 2017-05-22 2019-06-11 Datacore Software Corporation Methods and apparatus for command list processing in performing parallel IO operations
US11150944B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Balancing mechanisms in ordered lists of dispatch queues in a computational device
JP7147615B2 (ja) 2019-02-15 2022-10-05 株式会社デンソー タスク管理装置
CN111158875B (zh) * 2019-12-25 2023-05-02 眸芯科技(上海)有限公司 基于多模块的多任务处理方法、装置及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253420A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253428A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4387427A (en) * 1978-12-21 1983-06-07 Intel Corporation Hardware scheduler/dispatcher for data processing system
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US4736318A (en) * 1985-03-01 1988-04-05 Wang Laboratories, Inc. Data processing system having tunable operating system means
JPS63159941A (ja) * 1986-12-23 1988-07-02 Nec Corp リアル・タイムosのタスク管理方式
JPS63208948A (ja) * 1987-02-26 1988-08-30 Toshiba Corp マルチプロセツサシステムにおけるタスクスケジユ−リング方式
US5012409A (en) * 1988-03-10 1991-04-30 Fletcher Mitchell S Operating system for a multi-tasking operating environment
US4965716A (en) * 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5291614A (en) * 1991-09-03 1994-03-01 International Business Machines Corporation Real-time, concurrent, multifunction digital signal processor subsystem for personal computers

Also Published As

Publication number Publication date
EP0537721A3 (en) 1993-07-14
DE69227664D1 (de) 1999-01-07
EP0537721B1 (de) 1998-11-25
JP3604091B2 (ja) 2004-12-22
JPH05204674A (ja) 1993-08-13
US5465335A (en) 1995-11-07
EP0537721A2 (de) 1993-04-21

Similar Documents

Publication Publication Date Title
DE69227664T2 (de) Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE69231500T2 (de) Ein-Chip-Mikrorechner
DE3685863T2 (de) Rechnersystem zur steuerung virtueller maschinen.
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69128565T2 (de) Mikrorechner ausgestattet mit einer DMA-Steuerung
DE68928113T2 (de) Reihenfolgesteuersystem zur Behandlung von Befehlen
DE69114333T2 (de) Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen.
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69622776T2 (de) Von Multitasking gebrauch machendes Sortieren
DE3638572C2 (de)
DE2953861C2 (de)
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE69031524T2 (de) Verfahren und Vorrichtung zur Datenübertragung zwischen Prozessorelementen
DE10110504A1 (de) Controller für Prozessoren mit mehreren Befehlsthreads
DE19729618C2 (de) Mikroprozessor und Mehrprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee