DE10027845B4 - Submodul für die Kontrolle einer Datenwarteschlange - Google Patents

Submodul für die Kontrolle einer Datenwarteschlange Download PDF

Info

Publication number
DE10027845B4
DE10027845B4 DE10027845A DE10027845A DE10027845B4 DE 10027845 B4 DE10027845 B4 DE 10027845B4 DE 10027845 A DE10027845 A DE 10027845A DE 10027845 A DE10027845 A DE 10027845A DE 10027845 B4 DE10027845 B4 DE 10027845B4
Authority
DE
Germany
Prior art keywords
queue
data
queue control
port
peripheral device
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
DE10027845A
Other languages
English (en)
Other versions
DE10027845A1 (de
Inventor
Gary Thomas Colorado Springs Bastian
Kevin Michael Colorado Springs Rishavy
Martin Gerard Colorado Springs Gravenstein
Robert Lee Saline Anderson
Rollie Morris Trenton Fisher
Raymond Allen Monument Stevens
Samuel James Dearborn Guido
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.)
Ford Motor Co
Original Assignee
Ford Motor 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 Ford Motor Co filed Critical Ford Motor Co
Publication of DE10027845A1 publication Critical patent/DE10027845A1/de
Application granted granted Critical
Publication of DE10027845B4 publication Critical patent/DE10027845B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Combined Controls Of Internal Combustion Engines (AREA)

Abstract

Submodul (20) für die Kontrolle einer Datenwarteschlange, welches einen Host-Prozessor (22) und mindestens ein Peripheriegerät unterstützt, enthaltend:
eine Speichereinheit (26, 28) mit einem ersten Abschnitt zur Speicherung von mit jedem Peripheriegerät verbundenen Warte schlangen-Steuerbefehlen und einem zweiten Abschnitt zur Speicherung von Peripheriegerätedaten;
eine Warteschlangenkontrolleinheit (30) zur Kontrolle des Datenflusses zwischen den genannten Peripheriegeräten und dem Host-Prozessor, wobei die Warteschlangenkontrolleinheit (30) die Peripheriegerätedaten gemäß den Warteschlangen-Steuerbefehlen verarbeitet;
eine Portschnittstelle (32), welche zwischen der Warteschlangenkontrolleinheit (30) und jedem Peripheriegerät angeordnet ist, wobei die Portschnittstelle (32) jedes Peripheriegerät in Reaktion auf einen Ereignistrigger mit der Warteschlangenkontrolleinheit (30) in Kommunikation treten lässt;
einen Ereigniscontroller in wirksamer Kommunikation mit dem Host-Prozessor (22) und der Portschnittstelle (32) zur Erzeugung der genannten Ereignistrig ger als Reaktion auf Datenanforderungen des Host-Prozessors (22); und
eine Logikschaltung (38) für die Warteschlangen-Kontrolle zur Bestimmung der nächsten zu bearbeitenden Datenwarteschlange als Funktion der momentan aktiven Datenwarteschlange und des...

Description

  • Die vorliegende Erfindung betrifft ein Submodul für Motorsteuerungssysteme, das den Datenfluss zwischen der CPU und Peripheriegeräten mittels einer Warteschlange kontrolliert.
  • Gegenwärtig übliche mikroprozessorbasierte Motorsteuerungssysteme müssen mit einer Vielzahl von peripheren Datengeräten kommunizieren. Während des Betriebs werden durch diese Peripheriegeräte Daten an verschiedene Teile des Steuerungssystems gesandt. Zusätzlich werden Daten vom Steuerungssystem durch dieselben Geräte empfangen und verarbeitet. Beispiele für derartige periphere Dateneinrichtungen sind serielle periphere Schnittstellen (SPI), serielle Kommunikationsschnittstellen (SCI), Analog-Digitalwandler (A/D) oder Controller-Bereichsnetzwerke (Controller Area Networks CAN). Um den Datentransfer zwischen diesen Einrichtungen zu erleichtern und um den Verwaltungsaufwand (Overhead) seitens der System-CPU zu minimieren, werden die Daten häufig in Listen oder Warteschlangen organisiert, die von einem Submodul für das Motorsteuerungssystem kontrolliert werden.
  • Bei den bekannten Motorsteuerungssystem ist es erforderlich, dass jede Portschnittstelle ihre eigene Warteschlange und ihren eigenen Warteschlangencontroller enthält. Dies führt zu einer unflexiblen Systemarchitektur in Hinblick auf die Warteschlangengröße und das Design der Portschnittstelle. Es ist daher schwierig, die Warteschlangenstruktur des gesamten Systems zum Beispiel hinsichtlich der Anzahl der Warteschlangen pro Gerät, der Größe der Warteschlangen und/oder hinsichtlich des Typs des Warteschlangentriggers zu modifizieren.
  • Die DE 35 46 664 C3 offenbart ein Verfahren zur Kommunikation eines Rechners über eine serielle Schnittstelle in einem Kraftfahrzeug. Ein zwischen einem Zentralprozessor und einer Busleitung befindliches Modul verwaltet eine Warteschlange mit Nachrichten, die Zwischen der CPU und der Busleitung ausgetauscht werden sollen. Die Nachrichten der Warteschlange sowie zugehörige Steuerinformationen werden in einem Speicher DPRAM zwischengespeichert. Die Behandlung der Nachrichten erfolgt gemäß ihrer zugeordneten Priorität.
  • Die US 4 858 108 zeigt eine Datenverarbeitungseinrichtung bei welcher ein externer Datencontroller EDC die Kommunikation zwischen einer CPU und mehreren externen I/O-Einheiten verwaltet. Dabei ist jede der I/O-Einheiten über zwei verschiedene Kommunikationskanäle erreichbar, und die EDC hat primär die Aufgabe, für die Übermittlung von Nachrichten zwischen der CPU und einer I/O-Einheit einen von mehreren freien Übertragungskanälen zu finden. Im Übrigen erfolgt die Abarbeitung der Nachrichten rein prioritätsgesteuert.
  • Die US 5 819 112 betrifft ein Verfahren zur Nutzung einer parallelen Schnittstelle an einem Computer für mehrere, über einen Multiplexer angeschlossene Peripheriegeräte. Die Aufgabe, die unterschiedlichen Kommunikationsanforderungen der Peripheriegeräte zu bedienen, wird hier komplett dem Betriebssystem und damit letztendlich dem Zentralprozessor übertragen.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Submodul für einen Warteschlangen-Datenport für mikroprozessorbasierte Motorsteuerungssysteme bereitzustellen, mit dem eine große Anzahl unterschiedlicher Typen von Peripheriegeräten flexibel bedient werden kann.
  • Mit der vorliegenden Erfindung werden die Nachteile der vorbekannten Motorsteuerungssysteme durch ein Submodul für die Kontrolle einer Datenwarteschlange überwunden, das einen Host-Prozessor und wenigstens ein Peripheriegerät unterstützt. Das Submodul weist eine Speichereinheit mit einem ersten Speicherabschnitt zur Speicherung von allen Peripheriegeräten zugeordneten Warteschlangenbefehlen und einen zweiten Speicherabschnitt zur Speicherung von Daten der Peripheriegeräte auf. Weiterhin ist in dem Submodul eine Warteschlangenkontrolleinheit zur Steuerung des Datenflusses zwischen den Peripheriegeräten und dem Host-Prozessor gemäß den Warteschlangen-Steuerbefehlen enthalten. Eine Portschnittstelle verbindet die Warteschlangenkontrolleinheit und die Peripheriegeräte bei Auftreten eines Triggerereignisses. Das Submodul weist ferner einen Ereigniscontroller auf, der in Kommunikation mit dem Host-Prozessor und der Portschnittstelle steht, wobei der Ereignistrigger als Reaktion auf Datenanforderungen von entweder dem Host-Prozessor oder den anderen Peripheriegeräten erzeugt. Ferner ist eine Logikschaltung für die Warteschlangen–Kontrolle zur Bestimmung der nächsten zu bearbeitenden Datenwarteschlange als Funktion der momentan aktiven Datenwarteschlange und des Datenwarteschlangen-Typs vorgesehen. Die Logikschaltung steht für die Warteschlangen-Kontrolle in wirksamer Kommunikation mit der Warteschlangenkontrolleinheit und dem Ereigniscontroller. Jeder der Warteschlangen-Steuerungsbefehle enthält erste und zweite Warteschlangen–Steuerungsworte, wobei das erste Warteschlangen–Steuerungswort ein erstes Datenfeld, das die Anzahl der Datenschreibtakte pro befohlenem Datentransfer repräsentiert, ein zweites Datenfeld, das die Anzahl der Datenlesetakte pro befohlenem Datentransfer reprä sentiert, ein Datenfeld, das die Größe der zu der Peripheriegerät-Warteschlange gehörigen Daten repräsentiert, und einen Zähler enthält. Das zweite Warteschlangen-Steuerungswort umfasst einen Datenzeiger, welcher die anfänglichen Werte des ersten Warteschlangen-Steuerungswortes repräsentiert.
  • Der Vorteil der vorliegenden Erfindung besteht darin, dass das Design jeder Portschnittstelle vereinfacht und eine größere Flexibilität in der Warteschlangenstruktur des gesamten Regelungssystems erzielt wird, wobei der Fluss der Daten in und aus dem RAM und den externen Geräten ohne die Notwendigkeit einer CPU-Intervention geregelt wird.
  • Nachfolgend wird die vorliegende Erfindung anhand der Figuren beispielhaft erläutert. Es zeigen:
  • 1 ein schematisches Diagramm eines Fahrzeugs, das mit einer ECU ausgestattet ist, die ein erfindungsgemäßes Submodul enthält;
  • 2 ein schematisches Blockdiagramm einer Ausführungsform des erfindungsgemäßen Submoduls;
  • 3 ein schematisches Diagramm des in 2 dargestellten QPSM-Speichers;
  • 4 ein schematisches Diagram des Warteschlangencontroller-Wortformates für den QPSM von 2;
  • 5 ein logisches Flussdiagramm, welches den Betrieb des Warteschlangenport-Submoduls von 2 beschreibt.
  • In 1 ist eine Motorsteuerungseinheit (Engine Control Unit ECU) 10 mit einem Warteschlangenport-Submodul in einem Fahrzeug 12 zur Regelung des Fahrzeug-Motorbetriebs dargestellt. Die Motorsteuerungseinheit 10 kommuniziert unter anderem mit einer Mehrzahl von peripheren Datengeräten, die zum Beispiel in dem Automatikgetriebesystem oder dem Instrumentenblock enthalten sein können.
  • In 2 ist ein Blockdiagramm eines seriellen Warteschlangenport-Submoduls (queued port serial module, QPSM) 20 dargestellt, welches Teil der ECU 10 ist und dazu dient, den Datenfluss im gesamten Motorsteuerungssystem des Fahrzeugs 12 zu kontrollieren. Die ECU 10 weist einen Mikroprozessor 22 auf, der mit dem QPSM 20 kommuniziert. Das QPSM 20 enthält im wesentlichen einen Ereigniscontroller, beispielsweise mit einem Warteschlangen-Flagregister 24, einem Warteschlangensteuerungs-RAM 26, einem Daten-RAM 28, einer QPSM-Zustandsmaschine 30 und einer Portschnittstelle 32. Zusätzlich enthält das QPSM eine dem modularen I/O-System (MIOS) entsprechende Busschnittstelle 34, einen Warteschlangen-Zähler 36 und eine Warteschlangen-Auswahllogik 38.
  • Die allgemein auch als Warteschlangenkontrolleinheit bezeichnete QPSM-Zustandsmaschine 30 ist eine flexible Warteschlangen-Schnittstelle zwischen dem zugeordneten RAM 28 und einer variablen Anzahl von I/O-Ports, die in 2 als "Port 1" bis "Port N" dargestellt sind.
  • Ein Port 42 kann eine variable Anzahl von zugehörigen Warteschlangen aufweisen, zum Beispiel sechzehn Stück. An die Ports 42 zu übertragende Datenwerte werden im RAM 28 durch die Host-CPU 22 über den MIOS-Bus 40 gespeichert. Von den Ports 42 übertragene Daten werden im RAM 28 gespeichert. Die Anzahl der Ports 42 und die mit jedem Port 42 verbundenen Warteschlangen werden zum Zeitpunkt der Chipherstellung festgelegt. Jede QPSM-Warteschlange kann unabhängig durch eine Dienstanforderung entweder von einem Port 42 oder von der Host-CPU 22 getriggert werden und weist ihren eigenen Warteschlangen-Steuerungsblock auf. Dies ermöglicht sowohl Lese- als auch Schreibübertragungen variabler Größe, z.B. mit 8, 16, 24 oder 32 Bit.
  • Ein wichtiger Aspekt des QPSM 20 ist die QPSM-Zustandsmaschine 30 und der zugehörige RAM-Speicher 26, 28. Der RAM-Speicher speichert sowohl die Steuerungsdaten für die Zustandsmaschine 30 als auch die an die Ports zu übermittelnden oder von den Ports 42 empfangenen Daten. Der Betrieb der Zustandsmaschine 30 und der RAM-Speicher 26, 28 werden weiter unten detaillierter beschrieben. Nachfolgend werden die Submodule des QPSM 20 detaillierter erläutert.
  • Die Portschnittstelle 32 weist einen Portzähler auf, welcher ständig zyklisch zwischen allen implementierten Ports 42 umläuft. Während der Warteschlangen-Zähler jeden Port 42 in aufsteigender Ordnung passiert, überprüft die QPSM-Zustandsmaschine 30, ob von dem Port ein Dienst verlangt wird. Sowohl die Lese- als auch die Schreibübertragungen zwischen der Portschnittstelle 32 und dem Daten-RAM 28 können von variabler Wortgröße sein. Zum Beispiel kann die Portschnittstelle 32 so ausgestaltet sein, dass sie eine Ein-Takt 8-Bit Schnittstelle aufweist. Wenn sechzehn Ports 42 mit bis zu sechzehn zu jedem Port gehörigen Warteschlangen vorhanden sind, können nur 16 Byte Daten in jedem Port 42 adressiert werden. Daher ist nur ein 4-Bit-Adressenfeld erforderlich. Jeder Port 42 wird durch ein Portauswahlsignal ausgewählt, welches nur für einen Port zur selben Zeit aktiv ist. Zusätzlich sind die Lese- und Schreibbusse vorzugsweise getrennt. Im Beispiel hat jeder Port 42 einen 8-Bit-Lesebus, und alle diese Busse sind zusammen gemultiplext. Auf die Ports 42 kann durch die QPSM-Zustandsmaschine 30 oder den MIOS-Bus 40 zugegriffen werden, um Daten in und aus dem Warteschlangen-Steuerungs-RAM 26 zu übertragen. Da die Lesebefehle nur mit 8 Bit zur selben Zeit durchgeführt werden, werden mehrere Takte benötigt, um Halbworte oder Datenworte zu übertragen.
  • Die Portschnittstelle 32 empfängt ferner vorzugsweise drei Steuersignale von den Ports 42. Diese Signale sind SP_service (der Port benötigt einen Dienst), SP_concat (eine verkettete Portoperation wird ausgeführt, daher dürfen die Warteschlangen nicht geändert werden) und SP_pause (der Port fordert ein Pausieren der Warteschlange an). Diese Steuersignale sind vorzugsweise als individuelle Leitungen ausgehend von jedem Port 42 ausgebildet und werden innerhalb der QPSM 20 zusammen gemultiplext.
  • Im Folgenden wird die MIOS-Busschnittstelle 34 unter Bezugnahme auf 2 näher beschrieben. In diesem Beispiel verwendet das QPSM 20 eine 32-Bit MIOS-Busschnittstelle 34. Das RAM 28 hat eine Verzögerung von einem Taktzyklus bei Lesebefehlen, jedoch keine Verzögerung bei Schreibbefehlen. Lesezugriffe auf die Ports 42 erfordern jedoch eine Vier-Takt zyklen-Verzögerung aufgrund der 8-Bit-Port schnitt stelle 32. Byte- und Halbwort-Schreibbefehle auf die Ports 42 werden um einen Taktzyklus verzögert, während das Schreiben von Worten eine Drei-Taktzyklen-Verzögerung erfordert. Alle anderen Register können ohne Verzögerung gelesen und beschrieben werden. Diese Zeitsteuerungsparameter werden durch die QPSM-Zustandsmaschine 30 geregelt. Da das QPSM 20 eine 32-Bit MIOS-Busschnittstelle verwendet, erfordern Byte-, Halbwort- und Wort-Lesekommandos dagegen alle dieselbe Zeitsteuerung. Tabelle 1 fasst die mit der MIOS-Busschnitt stelle 34 verbundenen Taktverzögerungen zusammen. Die aufgeführten Verzögerungen stellen selbstverständlich nur Beispiele für die mit der offenbarten Architektur verbundenen Verzögerungen dar. In Abhängigkeit von der Port- und Warteschlangenkonfiguration können die Verzögerungen variieren. Tabelle 1: MIOS Bus-Lese/Schreibverzögerungen
    Art der Übertragung Verzögerung (in Takten)
    Lesen von einer Nicht-Port-Registerspeicherstelle 0
    Lesen von einer RAM-Speicherstelle 1
    Lesen von einer Portspeicherstelle 4
    Schreiben in eine Nicht-Port-Registerspeicherstelle 0
    Schreiben in eine RAM-Speicherstelle 0
    Halbwort- oder Byte-Schreiben an eine Portspeicherstelle 1
    Wort-Schreiben an eine Portspeicherstelle 3
  • Nachfolgend wird das Warteschlangen-Steuerungs-RAM 26 unter Bezugnahme auf 2 näher erläutert. Das Warteschlangen-Steuerungs-RAM 26 enthält den Inhalt des ersten Warteschlangen-Steuerungswortes (queue control Word QCW) während des Betriebs zu jedem Port 42. Das in das Warteschlangen-Steuerungs-RAM 26 geladene QCW basiert auf der Portnummer und der Nummer der aktiven Warteschlange. Während der Übertragungen zählt ein Warteschlangen-Steuerungs-RAM-Zähler die Anzahl der Datenbewegungen und übermittelt diese Information an die QPSM-Zustandsmaschine 30, so dass die Zustandsmaschine 30 den Zustand in passender Weise weitersetzen kann. Am Ende des Transfers oder wenn die Warteschlange gewechselt wird lädt die QPSM-Zustandsmaschine 30 die Daten zurück in das RAM 26 an dieselbe Speicherstelle, aus der sie gekommen sind. Am Ende der Warteschlange und während Neustarts wird das zweite QCW für einen Takt in den Warteschlangen-Steuerungs-RAM 26 geladen, bis es in das erste QCW zurückgeladen werden kann.
  • Das Warteschlangen-Steuerungs-RAM 26 speichert die QCWs und die Dateneingaben und -ausgaben durch die Warteschlangen. Das RAM 26, 28 hat keine feste obere Grenze zwischen QCWs und Daten. Die QCWs werden beginnend bei der tiefsten Adresse des RAM 26, 28 gespeichert. In diesem Beispiel besetzt jedes QCW 8-Byte Speicherstellen. Die QCWs sind in aufeinanderfolgenden Speicherstellen gespeichert, zunächst nach Portnummer und dann nach Warteschlangennummer. Nicht benutzte Speicherstellen im RAM können von der Host-CPU 22 für andere Daten verwendet werden.
  • 3 zeigt die Organisation des Warteschlangen-Steuerungs-RAM 26 und des Daten-RAM 28. Der RAM-Bereich besteht aus zwei Teilen: einem zur Speicherung von QCW-Worten für jeden Port und jede Warteschlange und einem anderen zur Speicherung von Portdaten und Portbefehlsworten. Für jede Warteschlange innerhalb jedes Ports 42 existiert ein Paar von QCWs, welche den Datenfluss in und aus dem Port 42 kontrollieren. Wie bereits erwähnt, wird durch die Verwendung zweier identischer QCWs das erneute Laden der anfänglichen QCW ermöglicht, wenn jede der Warteschlangen fertig bearbeitet ist oder unterbrochen wird und auf den Anfangswert zurückgesetzt werden muss, wenn vom Anfang der Warteschlange neu gestartet wird. Diese Gruppe von Worten befindet sich am oberen Ende 50 des RAM-Bereichs. Der untere Abschnitt 52 des RAM-Bereichs enthält die Portübermittlungs-/Empfangsworte und Befehlsworte für jeden Datenblock, der gesendet oder empfangen werden soll.
  • Im Betrieb bestimmen die Warteschlangen-Flagregister 24, welche Warteschlangen aktiviert werden sollen. Die nächste zu aktivierende Warteschlange wird von der Warteschlangen-Auswahllogik 38 festgelegt, welche einen QCW-Zeiger aus den aktuel len Warteschlangen- und den Portnummern bildet. Die QPSM-Zustandsmaschine 30 verwendet das aktuelle QCW, um die korrekte Anzahl von Warteschlangen-Worten zu und von dem Port unter Verwendung der aktuellen Zahl von Lese- und Schreibtakten zu übertragen.
  • Nachfolgend werden unter Bezugnahme auf 2 die Warteschlangen-Flagregister 24 näher beschrieben. Die Warteschlangen-Flagregister 24 stellen im wesentlichen eine softwareseitig programmierbare Auswahlmatrix dar, welche irgendeinen der sechzehn Trigger zu irgendeinem der sechzehn Warteschlangen-Triggereingänge lenkt. Jeder mit dem QPSM 20 verbundene Port 42 weist einen Satz von Flags auf. Im Ausführungsbeispiel sind dies die Flags ENABLE, ACTIVE, DONS, ERROR und FIRST-TIME. Die Anzahl der Warteschlangen und die Anzahl der jedem Port 42 zugeordneten Ereignistrigger beeinflussen die Anzahl von Flags, die jedes dieser Module enthält. Für jede einem Port 42 zugeordnete Warteschlange existiert ein Flip-Flop für jedes der oben genannten Flags. Im vorliegenden Falle kann jeder Port 42 bis zu sechzehn Warteschlangen aufweisen. Zusätzlich sind alle Flags außer dem FIRST-TIME-Flag durch die Host-CPU 22 kontrollierbar und lesbar.
  • Die QPSM-Flags werden durch Schreiben einer "1" in das Bit an der passenden Setzadresse gesetzt. Gelöscht werden die Flags durch Schreiben einer "1" in das Bit an der passenden Löschadresse. Das ENABLE-Bit wird nur durch Host-Schreibvorgänge kontrolliert und wird verwendet, um der Warteschlange eine Aktivierung durch einen Trigger zu erlauben. Zusätzlich zur Kontrolle durch die HOST-CPU 22 wird das ACTIVE-Bit durch einen Ereignistrigger gesetzt, während das ENABLE-Bit gesetzt ist. Das ACTIVE-Bit wird entweder durch eine Pause oder durch eine Fertigbearbeitung der Warteschlange gelöscht. Zusätzlich zur Kontrolle durch den Host wird das DONE-Bit durch die Fertigbearbeitung der Warteschlange gesetzt. Das DONE-Bit kann nicht durch die Hardware gelöscht werden. Zusätzlich zur Kontrolle durch den Host kann das ERROR-Bit durch Empfangen eines Triggers gesetzt werden, während das ACTIVE-Bit gesetzt ist. Das ERROR-Bit kann ebenfalls nicht durch die Hardware zurückgesetzt werden. Vorzugsweise hat in allen Fallen das Löschen Vorrang, falls der Host sowohl ein Setzen als auch ein Löschen zur selben Zeit in dasselbe Bit schreibt. Ferner haben in allen Fällen Schreibvorgänge vom Host Vorrang vor Hardware-Ereignissen, die zur selben Zeit auftreten. Das FIRST-TIME-Bit wird nur von der Hardware kontrolliert. Es wird gesetzt, wenn das ACTIVE-Bit zuerst gesetzt wird, und gelöscht, wenn die Warteschlange zum ersten Mal bedient wird. Durch dieses Bit wird der QPSM-Zustandsmaschine 30 mitgeteilt, den Leseabschnitt des Taktes beim ersten Datentransfer der Warteschlange zu überspringen.
  • Unter Bezugnahme auf 2 wird nunmehr die Warteschlangen-Auswahllogik 38 näher beschrieben. Die Warteschlangen-Auswahllogik 38 bestimmt die nächste zu verarbeitende Warteschlange. Um die nächste Warteschlange zu bestimmen, werden die aktuelle Warteschlangennummer, die aktiven Bits und der Warteschlangentyp verwendet. Die Warteschlangen-Auswahllogik 38 stellt mehrere Betriebsmodi für jedes Gerät bereit einschließlich Round-Robin, Priorität, Prioritäts-Unterbrechbar und Einfach. Im Round-Robin Modus kommt jede Warteschlange gemäß der Warteschlangennummer nach jeder möglichen Unterbrechung der Datentransfers an die Reihe. Im Prioritätsmodus wird die Warteschlange höchster Priorität bedient, wenn die aktuelle Warteschlange beendet ist. Im Prioritäts-Unterbrechbar Modus wird die Warteschlange höchster Priorität sobald wie möglich nach ihrer Aktivierung bedient. In diesem Modus werden Warteschlangen niedrigerer Priorität angehalten, wenn eine Warteschlange höherer Priorität aktiv wird. Falls das RESTART-Bit der Warteschlange niedrigerer Priorität gesetzt worden ist, wird diese am Anfang neu begonnen, wenn ihre Weiterbearbeitung zugelassen wird. Im einfachen oder Slave Modus kann nur die erste Warteschlange aktiviert werden. Diese Warteschlange bewegt Daten bis zur fertigen Bearbeitung und zykliert, falls das WRAP-Bit gesetzt ist.
  • Im Folgenden wird die QPSM-Zustandsmaschine 30 unter Bezugnahme auf 2 näher beschrieben. Die QPSM-Zustandsmaschine 30 überwacht Warteschlangen-Transfers zwischen dem RAM 28 und den Ports 42. Der Portzähler der Portschnittstelle 32 zykliert kontinuierlich durch die implementierten Ports. Bei Aktivierung eines Ports 42 überprüft die QPSM-Zustandsmaschine 30 jeweils das SP service Bit und die aktiven Flags für diesen Port um festzustellen, ob ein Dienst angefordert ist. Falls ein Dienst angefordert ist, durchläuft die QPSM-Zustandsmaschine ihre entsprechenden Zustände, um Daten zu und von dem Port 42 zu entfernen und den Port erneut zu starten. Die logischen Basisfunktionen der Zustandsmaschine 30 sind Schreiben, Warten auf einen Portdienst, Testen auf eine neue Warteschlange und Lesen. Diese sind als READ, TEST, WRITE und WAIT implementiert mit einem zusätzlichen Bit pro Warteschlange, welches FIRST-TIME genannt wird. Wie vorstehend erwähnt, weist das FIRST-TIME-Bit die Zustandsmaschine 30 an, den READ-Befehl und den TEST-Befehl beim ersten Starten der Warteschlange zu ignorieren.
  • Unter Bezugnahme auf 2 wird nachfolgend das QPSM 20 weiter beschrieben. Die QPSM-Zustandsmaschine 30 regelt den Datenfluss in und aus dem RAM 28 und den Ports 42 ohne die Notwendigkeit einer Intervention durch die CPU 22. Wie vor stehend erwähnt, werden Daten im RAM 28 gespeichert und in einer flexiblen Anzahl von (zum Beispiel sechzehn) Datenwarteschlangen für jeden Port 42 arrangiert. Jede Datenwarteschlange kann unabhängig getriggert werden und hat ihren eigenen Warteschlangen-Kontrollblock, welcher sowohl Lese- als auch Schreibtransfers variabler Wortgröße, das heißt 8, 16, 24 oder 32 Bit, erlaubt. Für jede Warteschlange existiert ein Trigger mit programmierbarer Priorität für jedes Portgerät. Gemäß 2 wird jede der Warteschlangen durch Ereignisse getriggert, welche vom Systemereignisbus 60 empfangen werden. Die Ereigniskontroll- und Flagregister 24 bestimmen, welche Warteschlange als nächstes getriggert wird. Die nächste Warteschlange wird basierend auf der aktuellen Warteschlangennummer, der aktuell aktiven Warteschlange und dem Typ der Warteschlange (Einfach, Priorität, Round-Robin oder Prioritäts-Unterbrechbar) ausgewählt. Die QPSM-Zustandsmaschine 30 kann weiterhin so programmiert werden, dass sie Unterbetriebsmodi bereitstellt, so zum Beispiel Umbruch (Wrapping), Pause und Neustart.
  • Die Steuerung des Datenflusses für jeden Port 42 und jede Warteschlange in diesem Port wird durch das Warteschlangen-Steuerungswort (QCW) bestimmt. 4 zeigt das Format der QCWs. Es bestehen zwei identische QCWs 70, 72. Das zweite Kontrollwort dient der erneuten Speicherung der Werte im ersten Kontrollwort, wenn die Warteschlange rezykliert. Das QCW bestimmt für jeden Transfer die Zahl der Schreibtakte 63 und Lesetakte 64 pro Transfer. Weiterhin dient eine von der Datengröße (d.h. Byte, Halbwort oder Wort) abhängige Datenfeldbreite 61 zur Anpassung des Datentransfers, um den Transfer vollständiger Wortspeichergrenzen (full Word memory boundaries) zu erlauben. Das Zählerfeld 62 wird gleich der Gesamtzahl der zu übertragenden Worte in der Warteschlange ge setzt. Wenn der Zähler gleich Null ist, stoppt entweder die Warteschlange oder rezykliert zum Anfang. Zusätzlich sind drei 1-Bit-Felder vorgesehen, welche die PAUSE 65, RESET 66 und WRAP 67 Funktionen ermöglichen. Ein 13-Bit-Datenzeiger 68 zeigt die Startadresse der Warteschlangen-Daten im Daten-RAM 28 an.
  • Einige der Felder werden bei Auftreten des Datentransfers automatisch geändert. Der Zähler 62, der Schreibzähler 63 und der Lesezähler 64 werden dekrementiert, und der Datenzeiger wird inkrementiert.
  • Das zweite QCW ist mit dem ersten identisch mit der Ausnahme, dass sich die Werte während der Warteschlangenoperation nicht ändern. Der Zweck des zweiten QCWs besteht darin, die Anfangswerte des ersten QCWs zu bewahren. Wann immer die Warteschlange neu gestartet wird, werden die Werte des zweiten QCW automatisch in das erste QCW geladen.
  • Unter Bezugnahme auf 5 wird nunmehr der logische Fluss im Betrieb der QPSM-Zustandsmaschine 30 beschrieben. Wenn eine Warteschlange aktiv wird, wird bei Block 100 aus der Portnummer und der Warteschlangennummer der Zeiger auf das QCW gebildet. Das erste QCW wird in die Zustandsmaschine 30 geladen und setzt die Anzahl von Datenworten fest, die zum Port 42 gelesen oder geschrieben werden sollen. Falls die Warteschlange zum ersten Mal (FIRST-TIME, Block 102) aktiviert wird oder falls die Anzahl der Lesezyklen gleich Null ist (Block 104), wird die Leseoperation (Schritt 106) ausgelassen. Wenn dagegen der Lesetaktzähler nicht Null ist, werden Daten vom Port 42 gelesen (Schritt 106) und in den Daten-RAM 28 an der durch den 13-Bit-Daten-RAM-Zeiger vorgegebenen Adresse platziert. Die Anzahl von 8-Bit Byte-Lesevorgängen (Schritt 108) wird durch den Wert des Lesetaktzählers bestimmt, das heißt 0–7.
  • Nach der Leseoperation wird auf den Port geschrieben, und die Anzahl der geschriebenen Bytes ist gleich dem Wert im Schreibtaktzähler (0–7). Vor der Schreiboperation wird jedoch in Schritt 110 der Portadressenzeiger auf die Spitze der Portspeicherkarte zurückgesetzt. Wenn das Schreiben abgeschlossen ist (Schritte 112, 114, 116), wird das die Warteschlangentiefe anzeigende Zählerfeld um 1 dekrementiert (Schritt 118), und der Controller bedient eine Warteschlange in einem anderen aktiven Port (Schritt 120). Wenn der Warteschlangen-Zähler erneut zu diesem Port und dieser Warteschlange zurückkehrt, werden Lese- und Schreibvorgänge wie vorstehend beschrieben durchgeführt, und das Zählerfeld wird für jeden Lese-/Schreibtakt um 1 dekrementiert. Wenn der Zähler gleich Null ist, stoppt entweder die Warteschlange oder rezykliert zu ihrer Spitze.

Claims (6)

  1. Submodul (20) für die Kontrolle einer Datenwarteschlange, welches einen Host-Prozessor (22) und mindestens ein Peripheriegerät unterstützt, enthaltend: eine Speichereinheit (26, 28) mit einem ersten Abschnitt zur Speicherung von mit jedem Peripheriegerät verbundenen Warte schlangen-Steuerbefehlen und einem zweiten Abschnitt zur Speicherung von Peripheriegerätedaten; eine Warteschlangenkontrolleinheit (30) zur Kontrolle des Datenflusses zwischen den genannten Peripheriegeräten und dem Host-Prozessor, wobei die Warteschlangenkontrolleinheit (30) die Peripheriegerätedaten gemäß den Warteschlangen-Steuerbefehlen verarbeitet; eine Portschnittstelle (32), welche zwischen der Warteschlangenkontrolleinheit (30) und jedem Peripheriegerät angeordnet ist, wobei die Portschnittstelle (32) jedes Peripheriegerät in Reaktion auf einen Ereignistrigger mit der Warteschlangenkontrolleinheit (30) in Kommunikation treten lässt; einen Ereigniscontroller in wirksamer Kommunikation mit dem Host-Prozessor (22) und der Portschnittstelle (32) zur Erzeugung der genannten Ereignistrig ger als Reaktion auf Datenanforderungen des Host-Prozessors (22); und eine Logikschaltung (38) für die Warteschlangen-Kontrolle zur Bestimmung der nächsten zu bearbeitenden Datenwarteschlange als Funktion der momentan aktiven Datenwarteschlange und des Datenwarteschlangen-Typs, wobei die Logikschaltung (38) für die Warteschlangen-Kontrolle in wirksamer Kommunikation mit der Warteschlangenkontrolleinheit (30) und dem Ereigniscontroller (24) steht; wobei jeder der Warteschlangen-Steuerungsbefehle erste und zweite Warteschlangen-Steuerungsworte (70, 72) enthält, wobei das erste Warteschlangen-Steuerungswort ein erstes Datenfeld (63), das die Anzahl der Datenschreibtakte pro befohlenem Datentransfer repräsentiert, ein zweites Datenfeld (64), das die Anzahl der Datenlesetakte pro befohlenem Datentransfer repräsentiert, ein Datenfeld (61), das die Größe der zu der Peripheriegerät-Warteschlange gehörigen Daten repräsentiert, und einen Zähler (62) enthält, und wobei das zweite Warteschlangen-Steuerungswort einen Datenzeiger umfasst, welcher die anfänglichen Werte des ersten Warteschlangen-Steuerungswortes repräsentiert.
  2. Submodul nach Anspruch 1, dadurch gekennzeichnet, daß das zweite Warteschlangen-Steuerungswort (72) die QPSM-Modus-Auswahlbits PAUSE, RESET und WRAP enthält.
  3. Submodul nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Speichereinheit einen Direktzugriffsspeicher (26, 28) enthält.
  4. Submodul nach mindestens einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Logikschaltung (38) für die Warteschlangen-Kontrolle ein Datenfeld enthält, welches den Typ der zu verarbeitenden Datenwarteschlange anzeigt, wobei die Typen der Datenwarteschlangen die Typen Einfach, Round-Robin, Priorität und Prioritäts-Unterbrechbar einschließen.
  5. Submodul nach mindestens einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der Ereigniscontroller eine Mehrzahl von Warteschlangen-Flagregistern (24) enthält, wobei jedes der Warteschlangen-Flagregister (24) einem der Peripheriegeräte zugeordnet ist.
  6. Submodul nach Anspruch 5, dadurch gekennzeichnet, daß jedes der Warteschlangen-Flagregister (24) ein Datenfeld enthält, welches den Zustand der Datenwarteschlange des Peripheriegerätes anzeigt, und wobei die Datenfelder die Zustände ENABLE, ACTIVE und DONS umfassen.
DE10027845A 1999-06-22 2000-06-05 Submodul für die Kontrolle einer Datenwarteschlange Expired - Fee Related DE10027845B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/337,799 US6427180B1 (en) 1999-06-22 1999-06-22 Queued port data controller for microprocessor-based engine control applications
US09/337,799 1999-06-22

Publications (2)

Publication Number Publication Date
DE10027845A1 DE10027845A1 (de) 2000-12-28
DE10027845B4 true DE10027845B4 (de) 2008-01-10

Family

ID=23322065

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10027845A Expired - Fee Related DE10027845B4 (de) 1999-06-22 2000-06-05 Submodul für die Kontrolle einer Datenwarteschlange

Country Status (4)

Country Link
US (1) US6427180B1 (de)
JP (1) JP2001050100A (de)
DE (1) DE10027845B4 (de)
GB (1) GB2354856B (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948004B2 (en) * 2001-03-28 2005-09-20 Intel Corporation Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US6889262B1 (en) * 2002-06-26 2005-05-03 Advanced Micro Devices, Inc. Direct transaction mode for peripheral devices
US7852865B2 (en) * 2002-11-26 2010-12-14 Broadcom Corporation System and method for preferred service flow of high priority messages
US8140723B2 (en) * 2008-11-04 2012-03-20 Renesas Electronics America Inc. Digital I/O signal scheduler

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4858108A (en) * 1985-03-20 1989-08-15 Hitachi, Ltd. Priority control architecture for input/output operation
DE3546664C3 (de) * 1985-02-22 1995-10-26 Bosch Gmbh Robert Verfahren zum Betreiben einer Datenverarbeitungsanlage
US5819112A (en) * 1995-09-08 1998-10-06 Microsoft Corporation Apparatus for controlling an I/O port by queuing requests and in response to a predefined condition, enabling the I/O port to receive the interrupt requests

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0365731B1 (de) 1988-10-28 1994-07-27 International Business Machines Corporation Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher
US5325536A (en) 1989-12-07 1994-06-28 Motorola, Inc. Linking microprocessor interrupts arranged by processing requirements into separate queues into one interrupt processing routine for execution as one routine
EP0582535A1 (de) 1992-07-07 1994-02-09 International Business Machines Corporation Verfahren zur automatischen Schrifttypenbestimmung bei gemeinsamer Verwendung von Anwendungen
US5442754A (en) 1992-12-04 1995-08-15 Unisys Corporation Receiving control logic system for dual bus network
US5499384A (en) 1992-12-31 1996-03-12 Seiko Epson Corporation Input output control unit having dedicated paths for controlling the input and output of data between host processor and external device
US5386517A (en) 1993-01-26 1995-01-31 Unisys Corporation Dual bus communication system connecting multiple processors to multiple I/O subsystems having a plurality of I/O devices with varying transfer speeds
US5519883A (en) 1993-02-18 1996-05-21 Unisys Corporation Interbus interface module
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
US6088740A (en) * 1997-08-05 2000-07-11 Adaptec, Inc. Command queuing system for a hardware accelerated command interpreter engine
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3546664C3 (de) * 1985-02-22 1995-10-26 Bosch Gmbh Robert Verfahren zum Betreiben einer Datenverarbeitungsanlage
US4858108A (en) * 1985-03-20 1989-08-15 Hitachi, Ltd. Priority control architecture for input/output operation
US5819112A (en) * 1995-09-08 1998-10-06 Microsoft Corporation Apparatus for controlling an I/O port by queuing requests and in response to a predefined condition, enabling the I/O port to receive the interrupt requests

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MESSMER, Hans-Peter: PC-Hardwarebuch, 5. Aufl., Addison-Wesley, S. 554, 555 *

Also Published As

Publication number Publication date
GB0014472D0 (en) 2000-08-09
DE10027845A1 (de) 2000-12-28
US6427180B1 (en) 2002-07-30
GB2354856B (en) 2003-11-12
JP2001050100A (ja) 2001-02-23
GB2354856A (en) 2001-04-04

Similar Documents

Publication Publication Date Title
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE69323861T2 (de) Multiprozessorsystem mit gemeinsamem Speicher
DE3015875A1 (de) Speicherzugriffssystem und verfahren fuer einen zugriff zu einem digitalen speichersystem
DE3241376A1 (de) Dma-steuereinrichtung zur uebertragung von daten zwischen einem datensender und einem datenempfaenger
DE2944419A1 (de) Digitalrechnersystem
DE3650566T2 (de) System zur selektiven Verbindung zwischen mehreren Ports
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
EP0062141B1 (de) Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem
EP0185260B1 (de) Schnittstelle für direkten Nachrichtenaustausch
DE10027845B4 (de) Submodul für die Kontrolle einer Datenwarteschlange
EP0409330B1 (de) Schaltungsanordnung zum Steuern des Zugriffs auf einen Speicher
DE3787235T2 (de) Übertragungssysteme mit Paketbildung.
DE60211874T2 (de) Anordnung von zwei Geräten, verbunden durch einen Kreuzvermittlungsschalter
DE69320732T2 (de) Verfahren zur Gerätadressierung und zur Datensignalübertragung auf einem Bus
DE69325231T2 (de) Verfahren und Gerät zum Entfernen von Registern aus einem Stapel in einem Datenverarbeitungssystem
EP1308846B1 (de) Datenübertragungseinrichtung
DE2845218B1 (de) Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchfuehren von Ein-/Ausgabeoperationen
DE4122831C2 (de) Integrierte Halbleiterschaltung
DE2902477A1 (de) Datenverarbeitungsanordnung
DE10062996B4 (de) Unterbrecher-Steuereinrichtung mit Prioritätsvorgabe
EP0528060B1 (de) Verfahren zur Durchführung von Ein-/Ausgabeoperationen in Datenverarbeitungssystemen
DE2900380C2 (de)
EP1091290B1 (de) Prozessorsystem mit Speicher- oder Ladebebefehl mit Trenninformation
DE60210637T2 (de) Verfahren zum transferieren von daten in einer elektronischen schaltung, elektronische schaltung und zusammenhangeinrichtung
EP1895428A2 (de) Speicherverwaltungs-Schaltungsanordnung und Speicherverwaltungsverfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee