DE102014111302B4 - Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem - Google Patents

Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem Download PDF

Info

Publication number
DE102014111302B4
DE102014111302B4 DE102014111302.0A DE102014111302A DE102014111302B4 DE 102014111302 B4 DE102014111302 B4 DE 102014111302B4 DE 102014111302 A DE102014111302 A DE 102014111302A DE 102014111302 B4 DE102014111302 B4 DE 102014111302B4
Authority
DE
Germany
Prior art keywords
arbiter
cpu
fifo
interrupt
port
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.)
Active
Application number
DE102014111302.0A
Other languages
English (en)
Other versions
DE102014111302A1 (de
Inventor
Muhammad Nasir Bin Ibrahim
Namazi Bin Azhari
Adam Bin Baharum
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.)
Univ Malaysia Teknologi
Universiti Teknologi Malaysia (UTM)
Original Assignee
Univ Malaysia Teknologi
Universiti Teknologi Malaysia (UTM)
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 Univ Malaysia Teknologi, Universiti Teknologi Malaysia (UTM) filed Critical Univ Malaysia Teknologi
Priority to DE102014111302.0A priority Critical patent/DE102014111302B4/de
Publication of DE102014111302A1 publication Critical patent/DE102014111302A1/de
Application granted granted Critical
Publication of DE102014111302B4 publication Critical patent/DE102014111302B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

Microcomputersystem, aufweisend:eine CPU (100); undeine Mehrzahl von Bussen (101) der CPU (100); undeinen I/O Arbiter (101), welcher aus dem Folgenden besteht:eine Arbiter-Schnittstelle (109), welche mit der Mehrzahl von Bussen (101) der CPU (100) verbunden ist; undeinen Arbiter- und Interruptcontroller (105), der mit der Arbiter-Schnittstelle (109) verbunden ist; undeine Mehrzahl von FIFO-Modulen (104), wobei jedes davon mit dem Arbiter- und Interruptcontroller (105) verbunden ist; undeine Mehrzahl von I/O Portmaschinen (103), die mit den FIFO-Modulen (104) verbunden sind und I/O Ports aufweisen; undeine Mehrzahl von Geräten (102), die mit den I/O Ports der I/O Portmaschinen (103) verbunden sind;wobei der I/O Arbiter (101) dazu ausgestaltet ist, folgende Schritte auszuführen:Umwandeln, in den I/O Portmaschinen (103), irgendeines Datenformats von den Geräten (102) in vollständige 32-bit-Wörter; undPuffern dieser 32-bit-Wörter in den entsprechenden FIFO-Modulen (104); undwenn ein FIFO-Modul (104) voll ist, Erzeugen, durch das FIFO-Modul (104), eines spezifischen Interrupts; undin Reaktion auf das Erzeugen des spezifischen Interrupts, Einreihen der Port-Identifizierung eines I/O Ports in einen Ringpuffer (216) von anstehenden Unterbrechungen,Übertragen aller in dem Ringpuffer (216) eingereihten anstehenden Unterbrechungen zu einem Interrupt-Pin der CPU (100) zusammen mit der zugeordneten Port-Identifizierung.

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung bezieht sich auf eine E/A- (englisch: I/O) Buszuteilung bei einem Mikrocomputersystem.
  • HINTERGRUND DER ERFINDUNG/HINTERGRUNDTECHNIK
  • Relevanter Stand der Technik findet sich in der US 5 185 694 A , der US 7 096 293 B2 , der US 5 239 629 A , der US 2009/0 089 478 A1 , der US/2008 0 043 767 A1 , der US/2012 0 096 210 A1 , sowie in „Symmetric Crossbar Arbiters for VLSI Communication Switches“, Tamir, Y. et. al., in IEEE TRANSAKTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, VOL. 4, NO. 1, 1993.
  • Konventionelle E/A-Bus-Zuteiler und befähigende Technologieentwicklungen
  • Konventionelle E/A- (Eingabe-/Ausgabe-) Bus-Zuteiler (englisch: arbiters) sind bei einem Multibussystem bei SOC- (= System-On-Chip = System auf einem Chip) Architekturen vom Einfachen zum Komplexen mit nicht nur einer Mehrzahl von Bussen, sondern auch einer Mehrzahl von Zuteilern, erforderlich. Bei einem fortgeschrittenen Kommunikationsprozessor, wie zum Beispiel der Intel IXP435, existieren in einem einzelnen Chip drei Bus-Zuteiler, vier unterschiedliche Busse und zwei Brücken, selbst wenn das SOC eine Einzel-CPU ist, die auf der ARM-Architektur basiert, jedoch mit zwei Hardwareunterstützungsbeschleunigern (englisch accelerators) oder Coprozessoren. Die Intel-Pentium-Serie von Computersystemen und andere mikrocomputerbasierte SOC-Systeme arbeiteten ebenfalls mit dem gleichen Schema.
  • Die meisten Zuteiler benötigen mindestens zwei Signale: das Paar REQ-GNT (= Request-Grant = Anforderung-Gewährung) für das Busanforderungssignal von einer Vorrichtung und das entsprechende Busgewährungssignal von dem Zuteiler. Und dies zusätzlich zu dem CPU- (Prozessor-) DMA (= direct memory access = direkter Speicherzugriff), INT (= interrupt = Unterbrechung) und BUSREQ-BUSGNT (= bus request-bus grant = Busanforderung-Busgewährung; ein Bussteuersignalpaar). Dies bedeutet, dass ein Implementieren eines einfachen Zuteilers ein gründliches Verständnis und eine Vertrautheit mit einem speziellen System erfordert. Der DMA ist bei einem PC-System oftmals die komplexeste Vorrichtung.
  • Konventionelle Zuteiler eignen sich eine minimale Kenntnis der Quellen von E/A-Vorrichtungserfordernissen, in vielen Fällen keine Kenntnis, an; daher die Notwendigkeit komplexer Hardwareschemata, wie zum Beispiel eines Algorithmus zur Prioritätensetzung (englisch: prioritizing), eines Zeitstempels für eine Alterung (englisch: aging) und anderer unklarer Schemata, wenn viele vereinfacht werden können, indem man eine Vorkenntnis der Vorrichtungsübertragungsfähigkeit hat. Diese Schemata benötigen nun in Anbetracht des aktuellen Modells einer Verarbeitung, die paketorientiert ist, wie es bei Breitbandvorrichtungen erforderlich ist, einige Modifikationen.
  • Ein Beispiel dazu, wie ein E/A-Zuteiler implementiert ist, besteht darin, sich anzusehen, wie ein beliebter Zuteilerchip bei einem typischen System verwendet wird. Der Intel 8289 war ein wegbereitender Zuteilerchip, der entworfen wurde, um mit der Intel-8288-Bussteuerung und der Intel-8086-CPU, der der Vorfahr von allen Intelbasierten Pentium-Computern ist, zu arbeiten. Er ist ein Teil der Intel-MCS-86-Familie von Unterstützungschips, die nach der Einführung der Intel-8086-CPU 1978 herauskamen. Der 8289 lässt ferner Multizuteilerchips zu, sodass mehr Chaos zugelassen wird, wenn nicht nur Vorrichtungen eine Buszuteilung benötigen, sondern auch Zuteiler eine Zuteilung benötigen.
  • Es wurde bereits entlang dieser Linie eines Infragestellens der Philosophie komplexer Zuteilungsschemata gedacht. Das US-Patent Nr. 7096293B2 , erteilt am 22. August 2006 an Samsung Electronics, beschreibt ein Zuteilungsschema, das stark auf einem Haupt-CPU-Signal, das heißt, dem Signal INT (Unterbrechung), beruht. Dies hat jedoch auch die Verwendung des herkömmlichen Signalpaars REQ-GNT für eine Zuteilung erfordert, wobei das Patent ferner den PCI-Bus umfasst hat.
  • Auf einem anderen Entwicklungsgebiet beschreibt das US-Patent Nr. 5,185,649 , erteilt am 9. Februar 1993 an die Motorola Inc. eine neue Anweisung, die Block-MOVE, die eine native CPU-Anweisung ist, die eine Bitbündel- (englisch: burst-) Übertragung von Daten unter einer Programmierersteuerung durchführen kann. Obwohl die Erfindung eine Bitbündelübertragung zwischen Speicher-Speicher beschreibt, kann die Idee ebenso auf eine E/A angewendet werden.
  • Die Bitbündelübertragung oder synchrone Datenübertragung ist nun eine Erfordernis für einen Systemdurchsatz, derart, dass nach dem Patent von 1993 die Bitbündelübertragung als die Grundoperation der PCI-Bus-Spezifikation, die Intel 1994 hervorgebracht hat, anzusehen ist. Es handelt sich ebenfalls um das gleiche Konzept, das bei dem beliebten SDRAM verwendet wird, der von diesem Jahr an seine Verwendung bei Mikrocomputern erlebt hat und die Grundpfeilertechnologie war, bis dieselbe 2002 durch DDR und dann spät in 2009 durch DDR2 ersetzt wurde.
  • Eine Bitbündelübertragung von Daten benötigt auf jeder Seite der zwei sendenden und empfangenden Tore (englisch: ports) FIFO, um unterschiedliche Geschwindigkeitsfähigkeiten anzupassen. Diese Entwicklungen ebneten den Weg für die nächste Verbesserung der E/A-Zuteilertechnologie, die der Gegenstand dieser Erfindung ist.
  • Die E/A-Zuteiler-Erfindung
  • Aktuelle Mikrocomputersysteme betrachten Busse, Zuteiler, Unterbrechungen, DMA, Brücken als separate Elemente, die separat behandelt werden müssen. Das aktuelle Modell behandelt Vorrichtungen folgend dem logischen Vorrichtungstreibermodell von Unix, das diese in zwei Teile zerbricht - eine Zeichenvorrichtung und eine Blockvorrichtung - als unterschiedlich. Mit den unterschiedlichen Vorrichtungen ist das Erfordernis unterschiedlicher E/A-Busse erschienen. Wenn mehr als ein E/A-Bus existiert, muss es Brücken geben, um dieselben zu trennen und von einem Bus zu einem anderen zu hüpfen. Wenn all jene anwesend sind, muss es einen Zuteiler für Vorrichtungen geben, der an jeden Bus geknüpft ist. Und es muss zusätzliche Zuteiler geben, um zwischen allen Zuteilern zuzuteilen. Und dann müssen die Unterbrechungssignale, DMA-Signale, verbunden werden, um diese unabhängigen Datenübertragungen zu verwalten. Ein sehr gutes Beispiel dieses komplexen Schemas kann mit dem Intel-IXP435-Kommunikationsprozessor und der Intel-Pentium-Serie von Prozessoren, die Personalcomputer antreiben, veranschaulicht werden.
  • Diese Erfindung kombiniert alle Funktionsziele derselben in sich, während einige für ein einfacheres System eliminiert werden, jedoch die gleichen Ziele mit einem besseren Modell erreicht werden.
  • Diese neue E/A-Zuteiler-Erfindung kombiniert alle nach Jahren einer Verwendung in vielen fortschrittlichen Systemen bewährten befähigenden Datenübertragungstechnologien, wie zum Beispiel eine Bitbündelübertragung oder synchrone Datenübertragung, FIFO und Hardwaremaschinen (englisch: engines), was durch ein FPGA (= Field-Programmable-Gate-Array = feldprobrammierbare Gatteranordnung) ermöglicht wird, um einen E/A-Zuteiler zu erzeugen, der nicht nur einfach zu verstehen und zu verwenden ist, sondern in Aussicht stellt, mindestens eine äquivalente Leistung, wenn nicht sogar besser, zu liefern. Die Haupteleganz derselben besteht in der Einheitlichkeit eines Behandelns von Vorrichtungen bei einem Buszugriff, derart, dass es keine Notwendigkeit anderer Zuteiler gibt, außer diesem einen.
  • Ausgehend von einem klaren Entwurf, der am besten durch einen gleichermaßen klaren CPU-Entwurf unterstützt wird, werden herkömmliche Schnittstellensignale, die bei E/A-Zuteilern, die den PCI-Bus umfasst haben, verwendet wurden, redundant gemacht und können aus dem System vollständig beseitigt werden, indem lediglich die CPU-Unterbrechungssignale und ein Satz von drei synchronen Taktsignalen, die durch die CPU gesteuert werden, verwendet werden.
  • Die einfache Schlussfolgerung dahinter besteht darin, dass letzten Endes jeder Prozess bei einem Computersystem durch die Unterbrechung (englisch: interrupt) gesteuert wird, bei der der Zeitplaner (englisch: scheduler) präemptiv wirken kann. Somit kann es so gemacht werden, dass es keine Notwendigkeit anderer Steuersignale gibt, die die Unterbrechungssignale untergraben, wobei tatsächlich unterbrechungsgetriebene Prozesse erzeugt werden, was einen Systementwickler zwingt, in Kategorien von Unterbrechungen zu denken. Durch Betrachten als und Herstellen von allen E/A-Operationen als interne CPU-Operationen und stromlinienförmiges Gestalten derselben als einzelne vereinheitlichende Unterbrechungsereignisse und -quellen in der Unterbrechungssteuerung als anstehende Unterbrechungen werden Dinge unmittelbar vereinfacht, und mit einem Schlag wird ein gänzlich neues Computersystemmuster erzeugt.
  • Das Muster besteht darin, dass verschiedene Vorrichtungen, ob sie Zeichen-, Block-, Start- (englisch: boot) ROM oder vernetzte Vorrichtungen sind, als eine homogene Vorrichtung bzw. ein homogenes Gerät mit Puffern und FIFO betrachtet werden können. Die homogenen Vorrichtungen zeigen der E/A-Zuteilermaschine und schließlich der CPU die gleiche Schnittstelle, die sich lediglich hinsichtlich der Größe der Puffer und FIFO unterscheidet. Das Schema hindert die CPU an einem direkten Zugriff auf die Steuerregister in den Vorrichtungen; lediglich die Befähigung, einen Block von vollständigen 32-Bit-Wörtern zu lesen und zu schreiben, beseitigt schließlich die physischen Vorrichtungstreibercodes auf der Softwareebene.
  • Das Modell lässt eine direkte Verbindung mit Vorrichtungen, egal wie kompliziert dieselben sind, zu, ohne jemals mehr als einen E/A-Zuteiler, Busbrücken und einen Bus, wie zum Beispiel den PCI, mit den elektrischen Signalbegrenzungen desselben zu benötigen.
  • KURZFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung wurde in Anbetracht der oben beschriebenen Probleme getätigt.
  • Eine Lösung dieser Probleme findet sich in Anspruch 1.
  • Die E/A-Zuteiler-Erfindung kann aus einem Blockdiagramm in 1 zusammengefasst werden, das die drei Hauptkomponenten innerhalb des Kontexts einer CPU (100) und von Vorrichtungsschnittstellensignalen (106) darstellt: eine E/A-Zuteiler- und Unterbrechungssteuerung (105), ein FIFO (104) und eine Port-Maschine (102). Eine Vorrichtung, ob mit Zeichen- oder Blockdatenübertragungsnatur, ist mit einer Port-Maschine verbunden, die für eine 32-Bit-Wortwandlung von dem Format der Vorrichtung verantwortlich ist, und einer Maschine oder einem FSM (Finite-State-Machine = Automat mit endlichen Zuständen) für die Steuerung der Signale einer Vorrichtung, wo es notwendig ist, verbunden.
  • Die Hauptfunktion des E/A-Zuteilers (101) bei diesem Ausführungsbeispiel besteht darin, einen der sieben FIFO-Busse mit den Bussen der CPU (100) einzeln bei einer Bitbündelübertragung zu verbinden. Eine Vorrichtung bittet durch das zugeordnete FIFO derselben um Aufmerksamkeit, indem dieselbe das zweckgebundene INT-Signal desselben aktiviert, bei dem die Zuteiler- und Unterbrechungssteuerung (105) die Anforderung in einen Ringpuffer (216) auf einer Wer-zuerst-kommt-mahlt-zuerst- (englisch: first-come-first-serve) Basis einreiht.
  • Der E/A-Zuteiler-Prozess beginnt bei der Port-Maschine (103), die irgendein Datenformat von der Vorrichtung (102) in ein vollständiges 32-Bit-Wort wandelt. Die Vorrichtung überträgt ein Paket von 32-Bit-Daten, und der E/A-Zuteiler muss diese Daten in dem zugeordneten FIFO (104) puffern. Schließlich benötigt die CPU (100) diese Daten in einem Puffer in einem Hauptspeicher, wie bei allen anderen Prozessen. Wenn das FIFO (104) voll ist, erzeugt die FIFO-Steuerung in dem FIFO-Block (104) eine einmalige Unterbrechung. Die E/A-Zuteiler-Unterbrechungssteuerung weiß, dass diese von jenem speziellen Port kommt und reiht die Anschlussidentifizierung (ID; ID = identifier) in den Ringpuffer von anstehenden Unterbrechungen ein.
  • Wenn die Port-ID-Stelle in der Warteschlange auftaucht, aktiviert der E/A-Zuteiler das CPU-INT (107) und wartet auf das Signal CPU-INTA (Unterbrechungs-Bestätigung) (108), wobei der E/A-Zuteiler einen Unterbrechungsvektor, der lediglich die Port-ID ist, platziert. Die CPU (100) liest die ID und springt zu der Unterbrechungsdienstroutine (ISR; ISR = interrupt service routine) für diesen Vektor und weiß, dass der Port einen Block von Daten in dem FIFO (104) hat, und liest dieselben alle zu dem Hauptspeicherpuffer, der für diesen Port reserviert ist.
  • Ein Schreiben eines Blocks von Daten durch die CPU (100) kehrt das Verfahren um. Die CPU (100) kann einen Block von Daten zu irgendeiner Zeit, zu der dieselbe in der Lage ist, dies zu tun, oder ansprechend auf eine Unterbrechung über den E/A-Zuteiler (101) schreiben. Es sei daran erinnert, dass die CPU lediglich bei einem Bitbündelmodus, zusätzlich zu dem notwendigen 32-Bit-Wort und der Port-Adresse die synchronen Taktsignale in der Gruppe von Steuerleitungen nutzend, einen Port lesen oder zu demselben schreiben kann.
  • Der E/A-Zuteiler arbeitet grundsätzlich auf einem Unterbrechungsauslösen von E/A-Ports, die Dienste erfordern. Alle anstehenden Unterbrechungen werden in einem Ringpuffer eingereiht und auf den einzelnen Unterbrechungsanschluss der CPU zusammen mit dem zugeordneten Vektor nach einem Empfangen des INTA von der CPU übersetzt. Jeder Port hat die eigenen INT- und INTA-Anschlüsse desselben für den E/A-Zuteiler, um einzureihen, und gibt seinerseits das INT zu der CPU aus.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein vollständigeres Verständnis der Erfindung kann durch Lesen der folgenden Beschreibung eines spezifischen stellvertretenden Ausführungsbeispiels der Erfindung in Verbindung mit den beigefügten Zeichnungen erlangt werden. Es zeigen:
    • 1 die E/A-Zuteiler-Erfindung mit Schnittstellensignalen zu einer kompatiblen CPU, wobei die Grundprinzipien eines Betriebs gezeigt sind; und
    • 2 einen internen Betrieb des E/A-Zuteilers mit allen notwendigen Schnittstellensignalen.
  • DETAILLIERTE BESCHREIBUNG
  • Die detaillierte Beschreibung basiert auf 2. Der E/A-Zuteiler besteht aus der Zuteilerschnittstelle 200, der Zuteiler- und Unterbrechungssteuerung 201, einer Mehrzahl von FIFO-Modulen, wobei ein Beispiel das FIFO 0 204 ist, und einer Mehrzahl von Port-Maschinen, wobei ein Beispiel die Port-0-Maschine 203 ist. Eine Mehrzahl von Vorrichtungen, wobei ein Beispiel die Vorrichtung 0 202 ist, die kein Teil des Zuteilers sind, in gepunkteten Kästen sind für den Kontext gezeigt. In dieser Beschreibung ist einer der Datenpfade der Vorrichtungen ausgewählt; für die Vorrichtung 0 202, die für alle anderen Vorrichtungen, die mit dem E/A-Zuteiler verbunden sind, stellvertretend ist.
  • Ein entscheidender Faktor, der zu erwähnen ist, besteht darin, dass alle synchronen Bitbündelübertragungen zwischen der CPU 100 und FIFO durch die CPU 100 gesteuert sind, was der Grund dafür ist, dass das Signal CLK 209 unidirektional ist. Unter dieser Bedingung ist keine unabhängige DMA-Übertragung durch eine Vorrichtung möglich.
  • Starten der Bitbündeldatenübertragung
  • Ein Anfangszugriff einer FIFO-Vorrichtung, ob ein Datenbündel von Daten ansprechend auf eine Unterbrechungsanforderung gelesen oder geschrieben wird, beginnt mit einem Schreibbefehlswort zu dem geplanten FIFO. Das Befehlswort wird durch Aktivieren des Signals WR 210 zusammen mit den jeweiligen Adressleitungen (A12-A0) 206, die ein Signal CS (= chip-select = Chip-Auswahl), um die FIFO-Vorrichtung auszuwählen, bilden, zu der FIFO-Vorrichtung geschrieben. Die FIFO-Vorrichtung spricht beim Interpretieren des Befehlsworts mit einem aktiven Signal STP 207 an, was eine Verbindung mit offener Drain (englisch: open-drain) ist und mit allen Signalen STP2 207 verknüpft ist. Die CPU 100 beginnt dann durch Aktivieren der Signale CLK 209, STP1 208, RD 211 und WR 210 eine Bitbündelmodusdatenübertragung.
  • Bitbündelübertragungsprotokoll für eine einfache vollständige Übertragung ƒür eine vorbestimmte Länge eines Datenblocks entweder im Hauptspeicher oder in den FIFO
  • Kurz die vorhergehenden Absätze für einen spezifischen Prozess zusammenfassend, wird ein Lesen aus der Vorrichtung 0 202 durch ein Schreibbefehlswort der CPU 100, dem Signal WR 210 zusammen mit den jeweiligen Adressleitungen (A12-A0) 206, die das CS_10 205 bilden, um die Vorrichtung FIFO 0 204 auszuwählen, eingeleitet. Das FIFO 0 204 erkennt, dass die Schreiboperation eine Befehlswortphase statt des Beginns einer Bitbündeldatenübertragung ist, indem dasselbe bemerkt, dass das Signal CLK 209 inaktiv ist.
  • Wenn das FIFO 0 204 decodiert, dass das Befehlswort bedeutet, dass die CPU 100 einen Block von Daten lesen möchte, aktiviert das FIFO 0 204 unmittelbar das Signal STP2 207, das angibt, dass dasselbe für den Befehl bereit ist, bei dem die CPU 100 eine Bitbündellesesequenz startet, indem das Signal CLK 209 synchron mit dem 32-Bit-Block von Datenworten in dem FIFO 0 204 aktiviert wird. Nachdem eine vorbestimmte Blocklänge übertragen wurde, aktiviert das FIFO 0 204 das Signal STP2 207, um die CPU über das Ende der Bitbündelübertragung zu informieren, wenn dasselbe das Ende des FIFO-Puffers erreicht hat.
  • Wenn zu der Vorrichtung 0 204 geschrieben wird, aktiviert ähnlicherweise nach der Befehlswortphase, wobei das FIFO 0 204 das Wort als einen Schreibbefehl decodiert hat, das FIFO 0 204 unmittelbar das Signal STP2 207, das angibt, dass dasselbe für den Befehl bereit ist, bei dem die CPU 100 durch Aktivieren des Signals CLK 209 synchron mit dem 32-Bit-Block von Datenworten in dem Hauptspeicher eine Bitbündelschreibsequenz startet. Nachdem eine vorbestimmte Blocklänge übertragen wurde, aktiviert die CPU 100 das Signal STP1 208, um das FIFO 0 204 über das Ende der Bitbündelübertragung zu informieren.
  • Bitbündelübertragungsprotokoll für eine unvollständige Übertragung einer unbekannten Länge eines Datenblocks bei den FIFO
  • Eine Datenübertragung von der CPU 100 zu den FIFO ist immer bekannt, da dieselbe unter einer Softwaresteuerung ist. Die Software kann immer die Zahl von Datenblöcken kennen, und die Datenlänge zu einer Vorrichtung ist eine Strategie für eine optimale Datenübertragung. Die einzige unvermeidbare Variable ist die Datenübertragung von den Vorrichtungen, das heißt, ein Bitbündellesen durch die CPU 100, da es keinen Weg gibt, die Zahl von Datenblöcken und die Datenlänge, die von einer Vorrichtung kommt, vorher zu kennen. Pakete von einer LAN-Vorrichtung kommen solange weiter, bis der FIFO-Puffer derselben überläuft, wobei in diesem Fall derselbe eine Unterbrechung erzeugt.
  • In dieser Situation kommt die Unterbrechungssteuerung ins Spiel; wenn es viele Vorrichtungen geben kann, die erfordern, dass die CPU 100 ausliest und die FIFO derselben leert.
  • Nimmt man den Datenpfad der Vorrichtung 0 204, wird das FIFO 0 204 eine einmalige Unterbrechung erzeugen, wenn das FIFO voll ist. Die E/A-Zuteiler- und Unterbrechungssteuerung 201 weiß, dass dies von dem Anschluss 0 204 kommt und reiht die Port-Identifizierung (ID) in dem Ringpuffer 216 von anstehenden Unterbrechungen ein.
  • Wenn die Port-ID-Stelle in der Warteschlange auftaucht, aktiviert der E/A-Zuteiler 101 das CPU-INT 212 und wartet auf das Signal CPU-INTA 213 (Unterbrechung-Bestätigung), bei dem der E/A-Zuteiler 101 einen Unterbrechungsvektor, der lediglich die Port-ID ist, platziert. Die CPU 100 liest die ID und springt zu der Unterbrechungsdienstroutine (ISR; ISR = interrupt service routine) für diesen Vektor und weiß, dass der Port einen Block von Daten in dem FIFO 0 204 hat. Die Unterbrechungssteuerung 201 aktiviert an dem Ende des FSM-Zyklus derselben, und wenn dieselbe bestimmt hat, dass die nächste zu bedienende Vorrichtung die des FIFO 0 204 ist, das Signal INTA 217 zu dem FIFO 0 204. Das FIFO 0 204 bestätigt, dass es für eine Übertragung bereit ist, indem das Signal STP2 207 aktiviert wird, um die CPU 100 wissen zu lassen, die Bitbündellesesequenz zu beginnen. Die CPU 100 liest dann alles zu dem Hauptspeicherpuffer, der für diesen Port 0 203 reserviert ist. Wenn das FIFO 0 204 leer ist, aktiviert dasselbe das Signal STP2 207, über das die CPU 100 weiß, dass dasselbe das Ende der Blockübertragung ankündigt, und muss auf die nächste Unterbrechung von der Vorrichtung 0 202 warten.
  • Bei der Bitbündelschreibübertragung der CPU 100 wird das FIFO 0 204 das Signal STP2 207 aktivieren, um die CPU 100 darüber zu informieren, wann der FIFO-Puffer desselben voll ist, wobei in diesem Fall die CPU 100 den Bitbündelschreibzyklus beendet.
  • Die Unterbrechungssteuerung 201 erfordert lediglich das Paar von zwei Signalen INT 212, INTA 213 von der CPU 100 für den FSM derselben, um die Zeiger 214, 215 für den Pufferkopf und den Pufferfuß beim Verwalten von allen anstehenden Unterbrechungen in dem System herauszufinden. Dieselbe erzeugt erneut den eigenen Zyklus des INT-INTA 217 derselben an alle Vorrichtungen, die an derselben angeschlossen sind.
  • Die vorhergehende Beschreibung liefert die Basis für ein System, um irgendeine Vorrichtung, ob eine Zeichen- oder Blockvorrichtung, integrierte Schaltungen, wie zum Beispiel einen ROM, ein Festplattenlaufwerk, ein LAN , eine andere CPU und irgendetwas anderes, das ohne eine DMA-Einrichtung, Brücken, zusätzliche Busse oder zusätzliche Zuteiler vorstellbar ist, an den Ports desselben anzuschließen.

Claims (1)

  1. Microcomputersystem, aufweisend: eine CPU (100); und eine Mehrzahl von Bussen (101) der CPU (100); und einen I/O Arbiter (101), welcher aus dem Folgenden besteht: eine Arbiter-Schnittstelle (109), welche mit der Mehrzahl von Bussen (101) der CPU (100) verbunden ist; und einen Arbiter- und Interruptcontroller (105), der mit der Arbiter-Schnittstelle (109) verbunden ist; und eine Mehrzahl von FIFO-Modulen (104), wobei jedes davon mit dem Arbiter- und Interruptcontroller (105) verbunden ist; und eine Mehrzahl von I/O Portmaschinen (103), die mit den FIFO-Modulen (104) verbunden sind und I/O Ports aufweisen; und eine Mehrzahl von Geräten (102), die mit den I/O Ports der I/O Portmaschinen (103) verbunden sind; wobei der I/O Arbiter (101) dazu ausgestaltet ist, folgende Schritte auszuführen: Umwandeln, in den I/O Portmaschinen (103), irgendeines Datenformats von den Geräten (102) in vollständige 32-bit-Wörter; und Puffern dieser 32-bit-Wörter in den entsprechenden FIFO-Modulen (104); und wenn ein FIFO-Modul (104) voll ist, Erzeugen, durch das FIFO-Modul (104), eines spezifischen Interrupts; und in Reaktion auf das Erzeugen des spezifischen Interrupts, Einreihen der Port-Identifizierung eines I/O Ports in einen Ringpuffer (216) von anstehenden Unterbrechungen, Übertragen aller in dem Ringpuffer (216) eingereihten anstehenden Unterbrechungen zu einem Interrupt-Pin der CPU (100) zusammen mit der zugeordneten Port-Identifizierung.
DE102014111302.0A 2014-08-07 2014-08-07 Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem Active DE102014111302B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102014111302.0A DE102014111302B4 (de) 2014-08-07 2014-08-07 Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102014111302.0A DE102014111302B4 (de) 2014-08-07 2014-08-07 Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem

Publications (2)

Publication Number Publication Date
DE102014111302A1 DE102014111302A1 (de) 2016-02-11
DE102014111302B4 true DE102014111302B4 (de) 2023-09-14

Family

ID=55134629

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014111302.0A Active DE102014111302B4 (de) 2014-08-07 2014-08-07 Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem

Country Status (1)

Country Link
DE (1) DE102014111302B4 (de)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185694A (en) 1989-06-26 1993-02-09 Motorola, Inc. Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies
US5185649A (en) 1990-03-29 1993-02-09 Sgs-Thomson Microelectronics, S.R.L. Circuital arrangement for preventing latchup in transistors with insulated collectors
US5239629A (en) 1989-12-29 1993-08-24 Supercomputer Systems Limited Partnership Dedicated centralized signaling mechanism for selectively signaling devices in a multiprocessor system
US7096293B2 (en) 2003-06-26 2006-08-22 Samsung Electronics Co., Ltd. Dynamic bus arbitration method and bus arbiter
US20080043767A1 (en) 2006-08-18 2008-02-21 Fujitsu Limited Arbiter, crossbar, request selection method and information processing device
US20090089478A1 (en) 2007-09-28 2009-04-02 Arvind Pratap Singh Crossbar channel router having a distributed arbitration scheme
US20120096210A1 (en) 2009-06-24 2012-04-19 Paul Milbredt Star coupler for a bus system, bus system having such a star coupler and method for interchanging signals in a bus system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185694A (en) 1989-06-26 1993-02-09 Motorola, Inc. Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies
US5239629A (en) 1989-12-29 1993-08-24 Supercomputer Systems Limited Partnership Dedicated centralized signaling mechanism for selectively signaling devices in a multiprocessor system
US5185649A (en) 1990-03-29 1993-02-09 Sgs-Thomson Microelectronics, S.R.L. Circuital arrangement for preventing latchup in transistors with insulated collectors
US7096293B2 (en) 2003-06-26 2006-08-22 Samsung Electronics Co., Ltd. Dynamic bus arbitration method and bus arbiter
US20080043767A1 (en) 2006-08-18 2008-02-21 Fujitsu Limited Arbiter, crossbar, request selection method and information processing device
US20090089478A1 (en) 2007-09-28 2009-04-02 Arvind Pratap Singh Crossbar channel router having a distributed arbitration scheme
US20120096210A1 (en) 2009-06-24 2012-04-19 Paul Milbredt Star coupler for a bus system, bus system having such a star coupler and method for interchanging signals in a bus system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tamir, Y. et al.: Symmetric Crossbar Arbiters for VLSI Communication Switches. In: IEEE Transactions on Parallel and Distributed Systems. vol. 4, 1993. pp. 13 - 27

Also Published As

Publication number Publication date
DE102014111302A1 (de) 2016-02-11

Similar Documents

Publication Publication Date Title
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE602004012563T2 (de) Mehrfädiges DMA
DE3788805T2 (de) Prioritaetstechnik für einen zerteilten transaktionsbus in einem multiprozessorrechnersystem.
US6513089B1 (en) Dual burst latency timers for overlapped read and write data transfers
EP3167374B1 (de) Überbrückung von kommunikation zwischen bussen
DE112013000601T5 (de) Techniken für die Befehlsbestätigung für den Zugriff auf ein Speichergerät durch einen entfernten Client
DE102005009021A1 (de) Vereinheitliche USB OTG-Steuerungseinheit
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
US9335934B2 (en) Shared memory controller and method of using same
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
CA2027572A1 (en) Controller for direct memory access
DE10255937A1 (de) Ordnungsregelgesteuerte Befehlsspeicherung
WO2009009133A2 (en) Dual bus system and method
US10210114B2 (en) Interrupt-driven I/O arbiter for a microcomputer system
US8769231B1 (en) Crossbar switch device for a processor block core
Noami et al. High priority arbitration for less burst data transactions for improved average waiting time of Multi-Processor Cores
EP1207457A1 (de) Externe Busarbietrierungsverfahren für Multikern-DSP Gerät
CN111679992B (zh) 用于管理对共享总线访问的方法和对应的电子设备
DE102006012659A1 (de) System und Verfahren zum Reduzieren der Speicherlatenz bei mit einem Bus verbundenen Mikroprozessorsystemen
DE102014111302B4 (de) Unterbrechungsgesteuerter Ein-/Ausgabe-Arbiter für ein Mikrocomputersystem
DE10057794B4 (de) Verfahren für Datentransaktionen zwischen Steuerchipsätzen
US20100100717A1 (en) Mechanism for performing function level reset in an i/o device
WO2006042108A1 (en) Multi-threaded direct memory access
US8397006B2 (en) Arbitration scheme for accessing a shared resource
CN101777035A (zh) 一种amba ahb总线实现方法及装置

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division