DE69613423T2 - Unterbrechungssystem in einem Mikroprozessor - Google Patents
Unterbrechungssystem in einem MikroprozessorInfo
- Publication number
- DE69613423T2 DE69613423T2 DE69613423T DE69613423T DE69613423T2 DE 69613423 T2 DE69613423 T2 DE 69613423T2 DE 69613423 T DE69613423 T DE 69613423T DE 69613423 T DE69613423 T DE 69613423T DE 69613423 T2 DE69613423 T2 DE 69613423T2
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- central
- control unit
- register
- interrupt control
- 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 - Lifetime
Links
- 238000012545 processing Methods 0.000 claims abstract description 170
- 230000002093 peripheral effect Effects 0.000 claims abstract description 37
- 238000000034 method Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 48
- 238000010586 diagram Methods 0.000 description 29
- 230000007246 mechanism Effects 0.000 description 16
- 239000013598 vector Substances 0.000 description 15
- 230000007704 transition Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000001994 activation Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Exchange Systems With Centralized Control (AREA)
- Multi Processors (AREA)
Description
- Die vorliegende Erfindung betrifft Computersysteme und insbesondere innerhalb symmetrischer Multiprozessorsysteme verwendete Interrupt-Steuerarchitekturen und Schemata.
- Computersysteme, bei denen Multiprozessoreinheiten eingesetzt werden, versprechen eine ökonomische Realisierung von Leistungskapazitäten, die diejenigen derzeit verwendeter, auf Einzelprozessoren basierender Systeme übersteigen. In einer Multiprozessorumgebung konzentriert sich die gesamte Verarbeitung für eine Anwendung nicht auf einen einzelnen Prozessor, sondern werden Aufgaben in Gruppen oder "Bausteine" unterteilt, die von separaten Prozessoren verarbeitet werden können. Die Gesamtverarbeitungsbelastung wird dadurch auf mehrere Prozessoren aufgeteilt, und die aufgeteilten Aufgaben sind gleichzeitig ausführbar. Die Software des Betriebssystems unterteilt verschiedene Bereiche des Programmkodes in separat ausführbare Bausteine und weist typischerweise jedem Baustein eine Prioritätsebene zu.
- Fig. 1 zeigt ein Blockschaltbild eines sogenannten symmetrischen Multiprozessorsystems 10 mit einer Vielzahl von Verarbeitungseinheiten 12A-12C. Jede Verarbeitungseinheit 12A-12C weist jeweils einen Verarbeitungskern 14A- 14C, einen Cache-Speicher 16A-16C und ein Bus-Interface 18A-18C auf. Die Verarbeitungseinheiten 12A-12C sind über einen Systembus 22 mit einem Hauptspeicher 20 gekoppelt. Ein Paar I/O-Vorrichtungen 24 und 26 sind ebenfalls mit dem Systembus 22 gekoppelt.
- Das in Fig. 1 dargestellte Multiprozessorsystem 10 ist symmetrisch in dem Sinne, dass sämtliche Verarbeitungseinheiten 12A-12C den gleichen Speicherplatz benutzen (d. h. den Hauptspeicher 20) und unter Verwendung der gleichen Adressenübersetzung auf den Speicherplatz zugreifen. Das Multiprozessorsystem 10 ist ferner symmetrisch in dem Sinne, dass sämtliche Verarbeitungseinheiten 12A-12C in gleicher Weise auf das gleiche I/O-Teilsystem zugreifen.
- Generell ist eine einzelne Kopie der Betriebssystem-Software sowie eine einzelne Kopie jeder Anwenderdatei im Hauptspeicher 20 gespeichert. Jede Verarbeitungseinheit 12A-12C arbeitet von diesen einzelnen Kopien des Betriebssystems und der Anwenderdateien aus. Obwohl die Verarbeitungskerne 14A- 14C einen Code gleichzeitig ausführen können, sei darauf hingewiesen, dass nur eine Verarbeitungseinheit 12A-12C zu einer bestimmten Zeit die Vorherrschaft über den Systembus 22 übernehmen kann. Somit ist ein (nicht gezeigter) Busbenutzungs-Entscheidungsmechanismus zur Entscheidung über gleichzeitig auftretende Busanforderungen von zwei oder mehreren Verarbeitungseinheiten und Gewährung der Vorherrschaft an eine der Verarbeitungseinheiten basierend auf einem vorbestimmten Entscheidungsalgorithmus vorgesehen. Es sind zahlreiche Busbenutzungs-Entscheidungstechniken bekannt.
- Der Hochgeschwindigkeits-Cache-Speicher 16A-16C jeder Verarbeitungseinheit 12A-12C speichert Daten, auf die erst kürzlich von der jeweiligen Verarbeitungseinheit zugegriffen worden ist, und zwar zusammen mit Adressenkennungen, die die Hauptspeicheradresse angeben, der die zugeordneten Daten entsprechen. Da Programme dazu neigen, wiederholt die gleichen Codeabschnitte auszuführen und auf die gleichen Datenstrukturen zuzugreifen, sind viele der Speicherplätze, auf die Zugriff genommen wird, bereits im Cache-Speicher gespeichert, wenn der Cache-Speicher ausreichend groß ist.
- Der Cache-Speicher bietet zwei bedeutende Vorteile. Erstens ist, aufgrund der Tatsache, dass die Cache-Speicher mit Hochgeschwindigkeitsspeichern implementiert sind und auf diese ohne Busbenutzungs-Entscheidung und Pufferverzögerungen zugegriffen werden kann, ein Zugriff auf einen Speicherplatz in dem jeweiligen Cache-Speicher viel schneller möglich als ein Zugriff auf den Haupt-Speicher. Zweitens wird, da ein Zugriff auf einen in dem jeweiligen Cache-Speicher gespeicherten Platz keinen Zugriff auf den Systembus erderlich macht, die Busbenutzung jedes Prozessors beträchtlich reduziert. Der Systembus steht daher für andere angeforderte Vorgänge zur Verfügung. Typischerweise gilt, je höher die "Trefferrate" ist, desto besser ist die Gesamtsystemleistung. Die Trefferrate ist der Prozentsatz an Zugriffen durch einen speziellen Verarbeitungskern auf Plätze, die bereits im Cache-Speicher gespeichert sind. Gut konfigurierte Systeme mit mäßig großen Cache-Speichern können Trefferraten von über neunzig Prozent erzielen.
- Eine wichtige Überlegung bezüglich Multiprozessorsystemen mit Cache- Speichern ist die Datenkohärenz. Da Mehrfachkopien der im Hauptspeicher 20 gespeicherten Daten (und Befehle) gleichzeitig in einem oder mehreren Cache-Speichern 16A-16C vorhanden sein können, bedarf es eines besonderen Mechanismus zur Aufrechterhaltung der Datenvollständigkeit in dem Fall, in dem eines der Speicherteilsysteme aktualisiert wird (d. h. dass neue Daten eingeschrieben werden). Man stelle sich z. B. eine Situation vor, in der ein spezielles Datensegment im Cache-Speicher 16A durch den Verarbeitungskern 14A aktualisiert wird, jedoch nicht im entsprechenden Segment des Hauptspeichers 20 aktualisiert wird. Wenn der Verarbeitungskern 14B danach auf das gleiche Kodesegment zugreift, muss ein zuverlässiger Mechanismus vorhanden sein, der feststellt, welches Segment aktualisiert ist und welches Segment nicht länger gültig ist, damit gewährleistet ist, dass der Verarbeitungskern 14B auf die richtigen Daten zugreift. Es sind daher zahlreiche Techniken mit dem Ziel einer effizienten Aufrechterhaltung der Cache-Speicher- Kohärenz entwickelt worden, einschließlich Techniken, die auf sogenannten Durchschreibe- und Rückschreibetechniken basieren. Verschiedene Cache- Speicher-Kohärenz-Techniken sind in einer Vielzahl von Veröffentlichungen zum Stand der Technik beschrieben worden und werden hier nicht weiter behandelt.
- Eine weitere wichtige Überlegung hinsichtlich symmetrischer Multiprozessorsysteme ist die Verarbeitung und Aufteilung von Interrupts, die von verschiedenen Systemeinheiten erzeugt worden sind. In dem in Fig. 1 dargestellten System können die I/O-Vorrichtungen 24 und 26 z. B. basierend auf dem Eintreten (oder Nichteintreten) eines bestimmten Ereignisses jeweils ein Interrupt-Signal erzeugen. Wie für Fachleute auf dem Gebiet offensichtlich, werden Interrupts routinemäßig von Systemeinheiten, wie Tastaturvorrichtungen, Druckern und Zeitgebern u. a., erzeugt. Viele Systeme nehmen auch Sollware-Interrupts auf, wodurch ein Interrupt in Abhängigkeit von einem Software-Befehl aktivierbar ist. Aufgrund der Anzahl von unterschiedlichen Interrupts, die in einem System auftreten können, ist es wünschenswert, einen Mechanismus zum effizienten Verwalten und Aufteilen der Interrupts zwecks Erzielung einer optimalen Systemleistung und eines optimalen Buseinsatzes bereitzustellen.
- Bei einer Technik zum Verarbeiten von Interrupts wird eine zentralisierte Interrupt-Steuereinrichtung benutzt, die mehrere Interrupts empfangen und die Interrupts priorisieren und auf die verschiedenen Verarbeitungseinheiten aufteilen kann. Ein Problem besteht im Zusammenhang mit einer zentralisierten Interrupt-Steuertechnik darin, dass die Gesamtanzahl von realisierbaren Interrupts typischerweise durch die Anzahl von der zentralisierten Interrupt- Steuereinrichtung zugeordneten Eingangsstiften begrenzt ist. Mit anderen Worten können z. B., wenn die zentralisierte Interrupt-Steuereinrichtung insgesamt sechzehn Interrupt-Eingangsstifte aufweist, typischerweise nicht mehr als sechzehn Interrupt-Vorrichtungen im System realisiert werden. Dadurch wird die Flexibilität des Systems eingeschränkt. Ferner muss in solchen Systemen eine zweckbestimmte Interrupt-Leitung mit jeder Interrupt-Quelle verbunden sein. Solche zweckbestimmte Interrupt-Leitungen sind möglicherweise in rechnerfernen Kabelnetzen, die eine oder mehrere Peripherieeinrichtungen mit dem Computersystem verbinden, nicht verfügbar. Auch dadurch kann die Flexibilität des Systems eingeschränkt werden.
- Es ist ferner wichtig, dass die von einem Multiprozessorsystem verwendete Interrupt-Konfiguration Interrupt-Vorrichtungen aufnehmen kann, die sich auf unterschiedlichen I/O-Bussen befinden. Bei herkömmlichen Einzelprozessorsystemen werden Lnterrupt-Steuereinrichtungen, wie die besonders häufig eingesetzte Interrupt-Steuereinrichtung AM8259 von Advanced Micro Devices;
- Inc., zur Aufnahme einer relativ großen Anzahl von Peripherievorrichtungen, wie ISA-Peripherievorrichtungen, verwendet. Ferner können Peripherievorrichtungen, die sich auf einem PCI-Bus in solchen Systemen befinden, auch flexibel, aufgenommen, derart, dass ihre Interrupts über eine Interrupt-Abbildeeinrichtung abgebildet werden, wobei die Interrupt-Abbildeeinrichtung die PCI- Interrupts zu verfügbaren Eingängen auf den 8259er Interrupt-Steuereinrichtungen führt. Leider dienen Interrupt-Steuereinrichtungen, wie die 8259er Einrichtung, nicht der Aufteilung der Interrupts auf die mehreren Prozessoren. Zur zusätzlichen Verkomplizierung übernehmen herkömmliche Betriebssysteme, wie DOS, eine vorhandene 8259er Interrupt-Steuereinrichtung im System.
- Die Bereitstellung eines Interrupt-Mechanismus und eines Verfahren für ein Multiprozessorsystem ist wünschenswert, wobei Interrupts von auf mehreren I/O-Bussen befindlichen Peripherievorrichtungen aufgenommen werden. Der Interrupt-Mechanismus und das Verfahren sollten ferner der Realisierung weiter entwickelter Multiprozessor-Betriebssystemen dienen, die gleichzeitig mit herkömmlichen Betriebssystemen, wie DOS, rückwärts kompatibel sein sollten.
- Gemäß einem ersten Aspekt ist erfindungsgemäß ein symmetrisches Multiprozessorsystem nach Anspruch 1 vorgesehen.
- Gemäß einem zweiten Aspekt ist erfindungsgemäß ein Verfahren zum Führen mehrerer Interrupt-Signale in einem Multiprozessorsystem nach Anspruch 10 vorgesehen.
- Ein symmetrisches Multiprozessorsystem gemäß einer Ausführungsfarm der vorliegenden Erfindung weist eine zentrale Interrupt-Steuereinheit auf. Die zentrale Interrupt-Steuereinheit ist mit mehreren Verarbeitungseinheiten und mehreren Interrupt-Quellen gekoppelt. Die Interrupt-Quellen umfassen mehrere mit einem ersten Peripheriebus, wie einem PCI-Bus, gekoppelte Peripherieeinrichtungen. Die Interrupt-Quellen umfassen ferner mit einem zweiten Peripheriebus, wie einem ISA-Bus, gekoppelte Vorrichtungen. Die zentrale Interrupt-Steuereinheit kann in zwei Moden arbeiten. In einem ersten Modus, dem Vorschubmodus, werden Interrupts sowohl von PCI- als auch von ISA- Vorrichtungen direkt an die zentrale Interrupt-Steuereinheit übermittelt. In einem zweiten Modus, der als Durchgangsmodus bezeichnet wird, werden Interrupts von ISA-Peripherievorrichtungen über eine Interrupt-Steuereinrichtung, wie in Kaskade geschaltete 8259er Interrupt-Steuereinrichtungen, an die zentrale Interrupt-Steuereinheit übermittelt. Die zentrale Interrupt- Steuereinrichtung leitet dann das Interrupt direkt an eine Master-Verarbeitungseinheit weiter. PCI-Interrupts werden über eine PCI-Abbildeeinrichtung an andere verfügbare Interrupt-Eingänge der Interrupt-Steuereinrichtung übermittelt. Der Durchgangsmodus ermöglicht in vorteilhafter Weise eine Rückwärtskompatibilität des Systems mit herkömmlichen Betriebssystemen, wie DOS.
- Es sei darauf hingewiesen, dass beim Vorschubbetriebsmodus die zentrale Interrupt-Steuereinheit für ein Deaktivieren der PCI-Abbildeeinrichtung sorgt. Da die PCI-Abbildeeinrichtung während des Vorschubmodus deaktiviert ist, können zusätzliche ISA-Peripherieeinrichtungen im System aufgenommen werden, ohne dass diese mit PCI-Interrupts in Konflikt geraten.
- Weitere Ziele und Vorteile der Erfindung werden anhand der folgenden detaillierten Beschreibung und den beiliegenden Zeichnungen ersichtlich. Es zeigen:
- Fig. 1 ein Blockschaltbild eines typischen symmetrischen Multiprozessorsystems mit mehreren Prozessoreinheiten;
- Fig. 2 ein Blockschaltbild eines symmetrischen Multiprozessorsystems mit einem zentralisierten Interrupt-Steuereinrichtungsmechanismus;
- Fig. 3 ein Blockschaltbild einer zentralen Interrupt-Steuereinheit;
- Fig. 4 ein Blockschaltbild einer I/O-Interrupt-Steuereinrichtung;
- Fig. 5 ein Blockschaltbild mit Darstellung eines Interrupt-Kanals;
- Fig. 6 eine schematische Darstellung eines Interrupt-Kanal-Steuerregisters mit den dazugehörigen Feldern;
- Fig. 7 ein Blockschaltbild mit Darstellung der Hardware des symmetrischen Multiprozessorsystems in einem Kaskadenmodus eines Interrupt-Eingangs-Prozessors;
- Fig. 8 ein Blockschaltbild mit Darstellung der Hardware für einen weiteren Kaskadenmodus des symmetrischen Multiprozessorsystems;
- Fig. 9 ein Blockschaltbild eines Prozessor-Interrupt-Generators;
- Fig. 10 ein Blockschaltbild mit Darstellung eines Prozessorkanals;
- Fig. 10A eine schematische Darstellung eines CPU-Kanal-Steuerregisters mit den dazugehörigen Feldern;
- Fig. 10B eine schematische Darstellung eines Interrupt-Registers zwischen den Prozessoren mit den dazugehörigen Feldern;
- Fig. 11 ein Ablaufdiagramm mit Darstellung der Operation der Boot-Verarbeitungseinheit bei Systemrücksetzung;
- Fig. 12 eine schematische Darstellung der Hardware, die die CPU-Kanalregistereinheit jedes CPU-Kanals aktiviert;
- Fig. 13 ein Blockschaltbild mit Darstellung der Schaltanordnung in der zentralen Interrupt-Steuereinheit;
- Fig. 14 ein Ablaufdiagramm mit Darstellung der Initialisiersequenz für jede Slave-Verarbeitungseinheit;
- Fig. 15 ein Blockschaltbild mit Darstellung einer der mit der zentralen Interrupt-Steuereinheit gekoppelten Verarbeitungseinheiten;
- Fig. 16 ein Blockschaltbild eines Multiprozessorsystems, das speziell definierte Interrupt-Zyklen zum Initiieren eines Interrupts realisiert;
- Fig. 17 ein Blockschaltbild mit Darstellung eines Interrupt-Kanals mit einer Hardware zum Dekodieren eines Interrupt-Zyklus;
- Fig. 18 ein Blockschaltbild mit Darstellung eines Teils der zentralen Interrupt-Steuereinheit mit einem inneren Teil der zentralen Steuereinrichtung;
- Fig. 19 ein Ablaufdiagramm mit Darstellung der Zuführung eines Interrupts während des Sendemodus;
- Fig. 20 ein Blockschaltbild der zentralen Steuereinheit mit einem programmierbaren Latenzzeitgeber;
- Fig. 21 ein Blockschaltbild eines symmetrischen Multiprozessorsystems mit adaptivem Interrupt-Abbildungsmechanismus und adaptiver Abbildungstechnik gemäß der vorliegenden Erfindung.
- Obwohl die Erfindung verschiedenen Modifikationen unterzogen werden und alternative Formen aufweisen kann, sind spezifische Ausführungsformen beispielhaft in den Zeichnungen dargestellt und werden nachstehend genauer beschrieben. Es sei jedoch darauf hingewiesen, dass die Erfindung durch die Zeichnungen und die detaillierte Beschreibung nicht auf die dargestellte besondere Form beschränkt wird, sondern dass im Gegenteil sämtliche Modifikationen, Äquivalente und Alternativen abgedeckt sind, die in den Umfang der vorliegenden Erfindung, wie sie in den beiliegenden Patentansprüchen definiert ist, fallen.
- Fig. 2 zeigt ein Blockschaltbild eines symmetrischen Multiprozessorsystems 200 mit einem zentralisierten Interrupt-Steuereinrichtungsmechanismus. Das System 200 weist mehrere über einen CPU-Lokalbus 207 mit einem Hauptspeicher 204 gekoppelte Verarbeitungseinheiten 202-1 bis 202-m auf. Jede Verarbeitungseinheit 202-1-bis 202-m weist jeweils einen Verarbeitungskern 204-1 bis 204-m, einen Cache-Speicher 205-1 bis 205-m und ein Bus-Interface 206-1 bis 206-nn auf. Eine Busbrücke 208 koppelt den CPU-Lokalbus 207 mit einem I/O-Bus 210. Mehrere I/O-Peripherievorrichtungen 212-1 bis 212-n sind mit dem I/O-Bus 210 gekoppelt. Ferner sind eine zusätzliche I/O-Vorrichtung 214 und eine Interrupt-Steuereinrichtung 216 mit dem I/O-Bus 210 gekoppelt. Die I/O-Vorrichtungen 212-I bis 212-n sind mit einer zentralen Interrupt-Steuereinheit 220 gekoppelt. Die I/O-Vorrichtungen 212-1 bis 212-n und 214 sind über die Busbrücke 208 für jede Verarbeitungseinheit 202-1 bis 202- m zugänglich.
- Die zentrale Interrupt-Steuereinheit 220 ist zur Verwaltung von von den I/O- Vorrichtungen 212-1 bis 212-n und der Interrupt-Steuereinrichtung 216 kommenden Interrupts und zur Aufteilung der Interrupts auf die Verarbeitungseinheiten 202-1 bis 202-m vorgesehen. Die zentrale Interrupt-Steuereinheit 220 verwaltet ferner Interrupts zwischen den Prozessoren und Software- Interrupts, die von den Verarbeitungseinheiten 202-1 bis 202-m erzeugt werden. In der bevorzugten Form wird die zentrale Interrupt-Steuereinheit 220 zur Erreichung einer optimalen Systemflexibilität mit einer Vielzahl von programmierbaren Merkmalen implementiert, wie nachstehend beschrieben.
- Bei dem I/O-Bus 210 kann es sich um jeden beliebigen geeigneten Bus zum Koppeln von Peripherievorrichtungen, wie CD-ROM-Einheiten, Lokalnetz- (LAN-) Vorrichtungen und Druckern mit dem Computersystem 200 handeln. Beispiele für Peripherie-Busstandards sind der ISA- (Industriestandardarchitektur) Bus, der EISA- (erweiterte Industriestandardarchitektur) Bus und der PCI- (Peripherie-Komponentenverbindungs-) Bus. Die Busbrücke 208 stellt ein Interface zwischen dem I/O-Bus 210 und dem CPU-Lokalbus 207 dar.
- Die Verarbeitungskerne 204-1 bis 204-m sind Datenverarbeitungseinheiten, die gemäß einem vorbestimmten Befehlssatz arbeiten. Beispiele für Verarbeitungseinheiten sind 80486er Verarbeitungseinheiten, Pentium-kompatible Verarbeitungseinheiten und PowerPC-Verarbeitungseinheiten. Es sei jedoch darauf hingewiesen, dass die Verarbeitungseinheiten 202-1 bis 202-m auch gemäß anderen Befehlssätzen arbeiten könnten.
- Die Cache-Speicher 205-1 bis 205-m werden mittels Hochgeschwindigkeits- Speichervorrichtungen implementiert. Jeder Cache-Speicher 205-1 bis 205-m ist einer (in der Figur nicht separat gezeigten) Cache-Speicher-Steuereinrichtung zugeordnet, die die Übertragung von Daten zwischen dem jeweiligen Verarbeitungskern 204-1 bis 204-m, dem jeweiligen Cache-Speicher 205-1 bis 205-m und dem CPU-Lokalbus 207 ordnet und verwaltet. In der bevorzugten Form arbeitet die Cache-Speicher-Steuereinrichtung jeder Verarbeitungseinheit zur Erreichung einer maximalen Dauerleistung gleichzeitig mit dem jeweiligen Verarbeitungskern.
- Der CPU-Lokalbus 207 hat eine vorbestimmte Bitbreite und ist der Primärbus des Computersystems. Der Hauptspeicher 204 ist ein reeller Speicher mit einer vorbestimmten Größe und kann mit einem DRAM (dynamischen RAM- Speicher) implementiert werden. Eine (nicht separat gezeigte) Speicher- Steuereinrichtung ist dem Hauptspeicher 204 zugeordnet und steuert und ordnet die Übertragung von Daten, Adressen und Steuersignalen zwischen CPU-Lokalbus 207 und Hauptspeicher 204.
- Die Interrupt-Steuereinrichtung 216 ist für das Sortieren und Verwalten von von einer Vielzahl von Interrupt-Quellen, wie der I/O-Vorrichtung 214, abgeleiteten Interrupt-Signalen vorgesehen. Die Interrupt-Steuereinrichtung 216 ist ein Beispiel für eine serienprogrammierbare 8259er Interrupt-Steuereinrichtung von Advanced Micro Devices, Inc. Die programmierbare 8259er Interrupt-Steuereinrichtung ist in der Veröffentlichung "MOS Microprocessors and Peripherals" auf Seite 3-371 bis 3-388 (Advanced Micro Devices, Inc. 1987) beschrieben.
- Vor einer detaillierten Beschreibung der zentralen Interrupt-Steuereinheit 220 sei darauf hingewiesen, dass eine Vielzahl von Konfigurationsregistern in der zentralen Interrupt-Steuereinheit 220 ausgeführt sind. Der I/O-Bus 220 kann diese Konfigurationsregister programmieren und auf diese zugreifen. Entsprechend ist die zentrale Interrupt-Steuereinrichtung 220 unabhängig vom Typ des CPU-Lokalbusses 207 und ist somit in einer Vielzahl von Systemen mit unterschiedlichen Verarbeitungseinheiten einsetzbar. Folglich ist die zentrale Steuereinheit 220 in Zusammenhang mit einer Vielzahl von Multiprozessorsystemen verwendbar und mit diesen kompatibel.
- Anhand von Fig. 3 werden als nächstes Einzelheiten der zentralen Interrupt- Steuereinheit 220 betrachtet. Fig. 3 zeigt ein Blockschaltbild einer Ausführungsform der zentralen Steuereinheit 220 mit einer mit einer I/O-Interrupt- Steuereinrichtung 304 und einem Prozessor-Interrupt-Generator 306 gekoppelten zentralen Steuereinrichtung 302. Eine I/O-Bus-Interface-Einheit 308 ist ferner in mit der zentralen Steuereinrichtung 302 gekoppeltem Zustand dargestellt.
- Die I/O-Interface-Einheit 308 stellt ein Interface zwischen dem I/O-Bus 210 und der zentralen Steuereinrichtung 302 dar und ermöglicht somit das Programmieren der zentralen Steuereinheit 220 sowie das Ausführen anderer Funktionen der zentralen Steuereinheit 220, wie nachstehend genauer erläutert. Es sei darauf hingewiesen, dass die zentrale Interrupt-Steuereinheit 220 alternativ oder zusätzlich eine CPU-Bus-Interface-Einheit zum Koppeln des CPU-Lokalbusses 206 mit der zentralen Steuereinheit 220 zwecks Programmierung und Ausführung anderer Funktionen aufweisen kann.
- Wie oben erläutert, kann die zentrale Interrupt-Steuereinheit 220 Interrupts von einer Vielzahl unterschiedlicher I/O-Vorrichtungen aufnehmen. Diese Interrupts werden an mehreren Interrupt-Anschlussstiften empfangen, als INTR1-INTRn bezeichnet und an die I/O-Interrupt-Steuereinrichtung 304 übermittelt. Die zentrale Interrupt-Steuereinheit 220 ist derart konfiguriert, dass jedes Interrupt INTR1-INTRn zur Bezeichnung eines spezifischen Interrupt-Typs, zur Spezifizierung eines bestimmten Zuführmodus und zur Anzeige der Prioritätsebene einzeln programmierbar ist. Ferner kann jeder Interrupt- Anschlussstift zur Erhöhung der Anzahl von Interrupt-Signalen, die an dem speziellen Anschlussstift empfangen und identifiziert werden können, in einem Kaskadenmodus verwendet werden. Dies wird nachstehend genauer erläutert.
- Die zentrale Steuereinrichtung 302 priorisiert die verschiedenen Interrupt-Signale und führt sie dem Prozessor-Interrupt-Generator 306 zu, wobei der Interrupt-Generator 306 die Interrupt-Signale basierend u. a. auf dem Zuführmodus für jedes Interrupt und der Priorität der aktuellen Tasks jeder Verarbeitungseinheit einer oder mehreren Verarbeitungseinheiten 202-1 bis 202-m zuführt. Die zentrale Steuereinrichtung 302 hält einen Interrupt-Stack und eine Vorrichtungsliste für das System und ferner die Prioritäten der aktuellen Tasks sämtlicher Verarbeitungseinheiten aufrecht. Die zentrale Steuereinrichtung 302 weist schließlich einen Mechanismus zum Aufteilen ausgewählter Interrupts auf, die in Sendemanier von sämtlichen Prozessoren verarbeitet werden müssen. Dieser Aufteilmechanismus wird nachstehend genauer erläutert.
- Wie oben gesagt, führt der Prozessor-Interrupt-Generator 306 die verschiedenen Interrupts einer bezeichneten Zielverarbeitungseinheit (oder Verarbeitungseinheiten) zu. Bei dieser Ausführungsform dient die zentrale Interrupt- Steuereinheit 220 der Aufteilung von Interrupts auf maximal 256 Verarbeitungseinheiten. Die Anzahl von in dem System vorgesehenen Verarbeitungseinheiten wird bei der Systeminitialisierung programmiert, wie aus der nachstehenden Beschreibung hervorgeht.
- Fig. 4 zeigt ein Blockschaltbild der I/O-Interrupt-Steuereinrichtung 304. Die I/O-Interrupt-Steuereinrichtung 304 empfängt über die Anschlussstifte INTR1, INTR2, ... INTRn Interrupts von I/O-Vorrichtungen. Die I/O-Interrupt-Steuereinrichtung 304 weist mehrere jeweils mit den Anschlussstiften INTR1-INTRn gekoppelte Interrupt-Kanäle 402-1 bis 402-n auf. Ein Interface 404 der zentralen Steuereinrichtung ist mit jedem Interrupt-Kanal 402-1 bis 402-n gekoppelt. Die Interrupt-Kanäle 402-1 bis 402-n stellen zweckbestimmte Kanäle dar, über die an den jeweils zugeordneten Interrupt-Anschlussstiften INTR1- INTRn empfangene Interrupts verarbeitet werden. Bei einer Ausführungsform weist die I/O-Steuereinrichtung 304 insgesamt sechzehn Interrupt-Eingangsstifte auf, von denen jeder zur Aufnahme von maximal 256 einzelnen Interrupt-Vektoren mit sechzehn Interrupt-Signalen in Kaskade geschaltet werden kann.
- Mehrere (in Fig. 4 nicht gezeigte) Register sind in jedem Interrupt-Kanal 402- 1 bis 402-n zur Steuerung der Verarbeitung jedes ankommenden Interrupts vorgesehen. Diese Register werden entweder innerhalb des Speicherplatzes oder des I/O-Platzes des Systems abgebildet. Weitere Einzelheiten bezüglich der internen Register der Interrupt-Kanäle 402-1 bis 402-n sind nachstehend aufgeführt.
- Jeder Interrupt-Kanal 402-1 bis 402-n detektiert die Aktivierung eines Interrupt-Signals an dem ihm zugeordneten Eingangsstift INTR1-INTRn und verarbeitet das Interrupt-Signal zwecks Prüfung, ob das Interrupt zu den Verarbeitungseinheiten gesandt werden soll. Die Interrupt-Charakteristiken sind einzeln programmierbar, und eine implizierte Positionsabhängigkeit steht in keinem Zusammenhang mit den Interrupt-Kanälen 402-1 bis 402-n.
- Fig. 5 zeigt ein Blockschaltbild mit Darstellung jedes Interrupt-Kanals 402-1 bis 402-n. Der in Fig. 5 dargestellte Interrupt-Kanal 402 weist einen mit einer Registereinheit 504 und einer Interrupt-Übernahmeeinheit 506 gekoppelten Interrupt-Eingangsprozessor 502 auf. Der Interrupt-Eingangsprozessor 502 verarbeitet das Interrupt-Signal (oder Signale, wenn ein Kaskadenmodus programmiert ist) auf dem INTR-Stift und bestimmt den Übertragungsmodus für in Kaskade geschaltete Interrupts. Wenn der Stift als in Kaskade geschalteter Stift programmiert ist, wird der Index des aktuell in Kaskade geschalteten Interrupts bestimmt und in einem Kaskaden-Interrupt-Adressen- (CIA-) Register gespeichert. Es sei darauf hingewiesen, dass, wenn der Interrupt-Kanal 402 in einem Kaskadenmodus betrieben wird, die Anzahl von Registereinheiten 504 und die Anzahl von Interrupt-Übernahmeeinheiten 506 fünfzehn Mal dupliziert wird, derart, dass ein separater Interrupt-Teilkanal für jedes mögliche in Kaskade geschaltete Interrupt-Signal vorgesehen ist. Diese Teilkanäle sind in Fig. 5 in Phantomdarstellung gezeigt.
- Jedes Interrupt-Signal ist einem programmierbaren Steuerregister 504A, einem Ziel-CPU-Register 504B, einem Affinitäts-CPU-Register 504C und einem ID- (Vektor-) Register 504D zugeordnet. Auf der Basis der Informationen im Steuerregister 504A verarbeitet die Interrupt-Übernahmeeinheit 506 das Signal auf dem INTR-Stift. Wenn das Interrupt ein echtes, frei gegebenes und akzeptables Signal ist, wird es zwecks Zuführung an eine oder mehrere Verarbeitungseinheiten an das Interface 404 (aus Fig. 4) der zentralen Steuereinrichtung weitergeleitet.
- Wie oben beschrieben, ist jeder INTR-Stift in einem Kaskadenmodus programmierbar, wobei der Interrupt-Stift ein in Kaskade geschaltetes Signal, das sechzehn verschiedene Interrupts darstellt, empfängt. Wenn ein Stift auf Kaskadenschaltung programmiert ist, werden sechzehn einzelne Sätze von Registereinheiten und Interrupt-Übernahmeeinheiten dem Interrupt-Kanal zugeordnet, wie in Fig. 5 in Phantomdarstellung gezeigt. Die Kaskadenmoden der zentralen Steuereinheit 220 werden nachstehend genauer erläutert.
- Die verschiedenen Register jedes Interrupt-Kanals (oder Teilkanals) werden als nächstes betrachtet. Wie oben gesagt, ist ein separater Registersatz für jedes mögliche Interrupt-Signal vorgesehen. Diese Register sind als Steuerregister 504A, Ziel-CPU-Register 504B, Affinitäts-CPU-Register 504C und ID-Register 504D bezeichnet. Diese Register sind für die Software sichtbar und werden entweder innerhalb des Speicherplatzes oder des I/O-Platzes des Systems abgebildet. Ein separates Steuerregister 504A ist für jedes Interrupt- Signal vorgesehen und programmierbar. Das Steuerregister 504A für jedes Interrupt-Signal definiert und bestimmt die Funktionalität jedes INTR-Stifts und kann von einem 32-Bit-Register realisiert werden. Fig. 6 zeigt die dem Steuerregister 504A zugeordneten Felder, und Tabelle 1 beschreibt die verschiedenen Felder des Steuerregisters 504A. Tabelle 2 zeigt die Kodierung des Kaskadenmodus, Tabelle 3 die Kodierung des Zuführmodus und Tabelle 4 die Kodierung der Statusbits. Wie in Tabellen 1-4 dargestellt, speichert das Steuerregister 504A verschiedene Informationen zur Festlegung der Art des Interrupt-Signals, das dem Kanal zugeführt wird, des Modus des Interrupt-Stifts (d. h. Normal- oder Kaskadenmodus), ob das Interrupt-Signal gerade maskiert ist, der dem Interrupt zugeordneten Prioritätsebene, des Zuführmodus sowie anderer dem Interrupt zugeordneter Parameter. Tabelle 1: ICC Steuerregisterfelder
- CM (1 : 0) Definition
- 00 Serieller kodierter Modus
- 01 Serieller 26-Bit-Modus
- 10 8259er Modus
- 11 TBD
- DM (2 : 0) Definition
- 000 Festgelegt: Zuführung des Interrupts zur CPU/den CPUs im Ziel- CPU-Register
- 001 Niedrigste Priorität: Zuführung des Interrupts zum Prozessor, dessen Ausführung die niedrigste Priorität hat
- 010 Senden: Zuführen des Interrupts zu sämtlichen CPUs
- 011 TBD
- 100 NMI: Zuführen eines ebenengesteuerten Interrupts als NMI zur Ziel-CPUs
- 101 Rücksetzung
- 110 SMI: Zuführung eines ebenengesteuerten Interrupts als SMI zur Ziel-CPUs
- 111 TBD
- ST (1 : 0) Definition
- 00 Im Ruhezustand
- 01 In der Abarbeitungsphase (übermittelt und bestätigt)
- 10 Übermittelt von CIC (jedoch nicht bestätigt)
- 11 Auf Warteliste in CC
- Gemäß Fig. 5 hängt die Definition des Ziel-CPU-Registers 504B vom Zuführmodus und dem aktuellen Status des dazugehörigen Interrupt-Signals ab. Wenn das Interrupt nicht in der Abarbeitungsphase ist, weist das Ziel-CPU- Register 504B den ID-Wert der Verarbeitungseinheit oder der Gruppe von Verarbeitungseinheiten auf, auf die das Interrupt gerichtet ist. Wenn das Interrupt in der Abarbeitungsphase ist, weist das Ziel-CPU-Register 504B den ID-Wert der Verarbeitungseinheit auf, die das Interrupt abarbeitet. Wenn der Zuführmodus gesendet wird oder die niedrigste Priorität hat, übermittelt dieses Register keinen zugeordneten Bedeutungsgehalt.
- Das Affinitäts-CPU-Register 504C enthält den ID-Wert derjenigen Verarbeitungseinheit 202-1 bis 202-m (Fig. 2), die das Interrupt zuletzt abgearbeitet hat. Das ID-Register 504D enthält den ID-Wert (oder den Vektor) des Interrupts.
- Interrupts werden vor ihrer Weiterleitung über das Interface 404 der zentralen Steuereinheit zu der zentralen Steuereinheit 302 von der jeweiligen Interrupt-Übernahmeeinheit 506 verarbeitet. Wenn das Interrupt frei gegeben (EN des ICR) und nicht maskiert (MSK des ICR) ist, wird es zusammen mit den Informationen über den Zuführmodus, die Ziel-Verarbeitungseinheit (falls vorhanden), die Prioritätsebene und den Interrupt-ID-Wert an die zentrale Steuereinrichtung 302 weitergeleitet.
- Wie oben beschrieben, ermöglicht die Architektur ein Programmieren jedes Interrupt-Stifts INTR1-INTRn der zentralen Interrupt-Steuereinheit 220 entweder als Direkt-Interrupt oder als in Kaskade geschaltetes Interrupt. Wenn das Kaskadenbit in dem Steuerregister 504A gesetzt ist, realisiert der dazugehörige Interrupt-Kanal insgesamt fünfzehn zusätzliche Erweiterungs-Interrupts. Jedes dieser Erweiterungs-Interrupts ist einem zweckbestimmten Interrupt-Steuerregister (ICR) 504A, einem Ziel-CPU-Register 504B, einem Affinitäts-CPU-Register 504C und einem ID-Register 504D zugeordnet, wie in Fig. 5 in Phantomdarstellung gezeigt. Mit Ausnahme der Tatsache, dass die CSD-, CM- und ISA-Felder der Erweiterungs-Interrupt-Steuerregister nicht festgelegt sind, sind diese Register mit denen aus den Tabellen 1-4 identisch.
- Das CM-Feld bestimmt das Verfahren zum Zugreifen auf eines von sechzehn Interrupts im Kaskadenmodus. Der Index eines von sechzehn Interrupts wird von dem CIA-Register im Interrupt-Eingangsprozessor bestimmt. Der CM-Modus bestimmt den Mechanismus zum Berechnen von CIA.
- Fig. 7 und 8 zeigen Hardware-Konfigurationen zur Kaskadenschaltung eines bestimmten Stifts. Es sei darauf hingewiesen, dass die zentrale Interrupt- Steuereinheit 220 eine Interrupt-Erweiterung über drei unterschiedliche Kaskadenmoden aufnimmt. Die ersten beiden Moden ermöglichen es einem einzelnen reellen Interrupt-Stift INTR1-INTRn, die Interrupts mehrerer I/O-Vorrichtungen ausgewählten Interrupt-Teilkanälen zuzuführen. Der dritte Modus ermöglicht die Integration einer herkömmlichen 8259er Interrupt-Steuereinrichtung im Computersystem. Dies führt zu einer Kompatibilität von herkömmlicher PC-Hardware und Software.
- Fig. 7 zeigt eine Hardware-Konfiguration für den "seriellen kodierten" Modus. Fig. 7 zeigt ein Blockschaltbild mit Darstellung innen liegender Teile des Interrupt-Eingangsprozessors 502, die aktiviert werden, wenn der spezielle Interrupt-Kanal in den seriellen kodierten Kaskadenmodus gesetzt wird. Wie in Fig. 6 dargestellt, weist der Interrupt-Eingangsprozessor 502 eine mit einer Schiebesteuerung 572 und einer seriellen Dekodierschaltung 574 gekoppelte Steuereinheit 570 auf. Die Steuereinheit 570 spricht auf die CSD- und CM-Felder des entsprechenden Steuerregisters 504A an. Wenn das CM-Feld (d. h. Kaskadenmodusfeld) anzeigt, dass der aktuelle Modus ein serieller kodierter Kaskadenmodus ist, aktiviert die Steuereinheit 570 die Schiebesteuerung 572 und die serielle Dekodierschaltung 574 derart, dass seriell übersandte kodierte Daten am entsprechenden Interrupt-Stift INTR zum Identifizieren der Aktivität eines speziellen Interrupt-Signals dekodiert werden. Der Interrupt-Eingangsprozessor ist so dargestellt, dass er mit einem rechnerfernen Interrupt- Handler 580 gekoppelt ist, der einen mit einem Schieberegister 584 und einer Interrupt-Detektier-Parallelschaltung 586 gekoppelten Interrupt-Datenkodierer aufweist.
- Mehrere Interrupt-Signale 0 bis 15 werden zur Interrupt-Detektier-Parallelschaltung 586 übermittelt. Der rechnerferne Interrupt-Handler 580 sammelt die Vorrichtungs-Interrupts und teilt den Status jedes Interrupt-Signals über eine kodierte serielle Meldung auf der INTR-Leitung des jeweiligen Interrupt- Kanals der zentralen Interrupt-Steuereinheit mit. Die Interrupt-Detektier- Parallelschaltung 586 überwacht die an den rechnerfernen Interrupt-Handler 580 übermittelten Interrupt-Signale. Wenn in einem der Interrupt-Signale ein Übergang auftritt, sorgt der Interrupt-Datenkodierer 582 dafür, dass eine kodierte serielle Meldung über das Schieberegister 584 an den Interrupt-Eingangsprozessor 502 gesandt wird. Die seriellen Daten werden auf einer Leitung für die serielle kodierte Meldung, die der INTR-Leitung des Interrupt- Kanals zugeführt wird, übermittelt. Das Schieberegister 584 liefert bei jeder Übertragung einer seriellen kodierten Meldung einen Synchronisations- Schiebetakt an den Interrupt-Eingangsprozessor 502.
- Bei einer Ausführungsform bestehen die kodierten Meldungen aus der Nummer eines in Kaskadie geschalteten Signals und dem Interrupt-Zustand in 6- Bit-Form. Ein mögliches Kodierschema sieht wie folgt aus:
- Bits 5 : 4 Interrupt-Zustand 00 Interrupt-Übergang auf Low-Zustand
- 01 Interrupt-Übergang auf High-Zustand
- 10 belegt
- 11 belegt
- Bits 3 : 0 Interrupt-Nummer für in Kaskade geschaltete Eingangssignale von 0 bis 15
- Man stelle sich z. B. eine Situation vor, in der ein Interrupt-Signal 3 vom Low- Zustand in den High-Zustand übergeht. Dieser Übergang wird von der Interrupt-Detektier-Parallelschaltung 586 detektiert. Der Interrupt-Datenkodierer 582 erzeugt in Reaktion darauf einen kodierten Wert, der die Art des erfolgten Übergangs und das spezielle Interrupt-Signal, das den Übergang ausgeführt hat, anzeigt. Wenn z. B. das oben genannte Kodierschema angewandt wird, würde ein kodierter Wert "010111" in einem Interrupt-Signal 7 ("0111") einen Übergang auf den High-Zustand ("01") repräsentieren. Der kodierte Wert wird dann an das Schieberegister 584 übermittelt, das eine serielle Übertragung initiiert, die von der Schiebesteuereinheit 572 empfangen wird. Die serielle Dekodiereinheit 574 dekodiert dann die empfangene Meldung gemäß dem Kodierschema des Interrupt-Datenkodierers 582 und übermittelt die Meldung an die Interrupt-Übernahmeeinheit 506 des bezeichneten Interrupt- Teilkanals. Die Interrupt-Übernahmeeinheit 506 für das entsprechende Interrupt-Signal leitet dann das Interrupt zu der zentralen Steuereinrichtung 302 weiter, wenn das Interrupt frei gegeben (EN des Steuerregisters) und nicht maskiert (MSK des Steuerregisters) ist. Ähnlich wie in der obigen Beschreibung wird, wenn eine Interrupt-Übernahmeeinheit 506 ein Interrupt an die zentrale Steuereinrichtung 302 weiter leitet, das Interrupt zusammen mit den Informationen über den Zuführmodus, die Ziel-CPU (falls vorhanden), die Prioritätsebene und den Interrupt-ID-Wert für das Interrupt-Signal weiter geleitet.
- Gemäß der in Fig. 6 dargestellten seriellen kodierten Kaskadenkonfiguration ist der serielle Kanal nur dann aktiv, wenn eine Aktivität auf einer oder mehreren Interrupt-Signalleitungen auftritt, und somit eine Erweiterungstechnik mit geringem Energieverbrauch und ohne elektrische Störungen realisiert wird. Ferner bietet das Kodierschema reservierte Werte zur Realisierung zusätzlicher Meldungsarten.
- Fig. 8 zeigt ein Blockschaltbild einer alternativen Kaskadenkonfiguration. Schaltungsteile, die den in Fig. 7 dargestellten entsprechen, sind identisch nummeriert. Bei dieser Konfiguration wird anstelle der Kodierung eines eine Aktivität eines speziellen Interrupt-Signals anzeigenden Werts der Zustand der Interrupt-Detektier-Parallelschaltung 586 dem Interrupt-Eingangsprozessor 502 kontinuierlich und direkt über das Schieberegister 584 mitgeteilt. Somit erzeugt das Schieberegister kontinuierlich ein serielles Signal, das den Zustand der Interrupt-Detektier-Parallelschaltung 586 anzeigt, und konvertiert die Schiebesteuereinheit 572 die serielle Übertragung in parallele Daten. Die parallelen Daten werden dann vom Meldungsdekodierer 590 dekodiert, der das übertragene detektierte Interrupt-Signal zusammen mit den jeweiligen Steuer- und Vektorinformationen in der entsprechenden Registereinheit 504 an die entsprechende Interrupt-Übernahmeeinheit 506 leitet.
- Bei dieser Konfiguration taktet der Interrupt-Eingangsprozessor 502 kontinuierlich das rechnerferne Interrupt-Schieberegister 584. Es muss dann verfolgt werden, zu welchem Interrupt die aktuellen Daten gehören, und dieses muss zu dem jeweiligen Kanal geführt werden. Die Daten sind einfach "Interrupt high" oder "Interrupt low".. Die zentrale Steuereinrichtung (oder Interrupt- Übernahmeeinheit 506) muss dann bestimmen, ob die Daten eine Änderung des Interrupt-Zustands repräsentieren und welche Maßnahme, falls überhaupt eine, ergriffen werden soll.
- Als nächstes werden zusätzliche Aspekte der in Fig. 2 dargestellten zentralen Interrupt-Steuereinheit 220 betrachtet. Fig. 9 zeigt ein Blockschaltbild mit Darstellung des Prozessor-Interrupt-Generators 306. Wie oben gesagt, empfängt der Prozessor-Interrupt-Generator 306 Interrupt-Informationen von der zentralen Steuereinrichtung 302 und erzeugt Prozessor-Interrupt-Signale mit der Bezeichnung INT1-INTm, die den Verarbeitungseinheiten zugeführt werden. Wie in der Figur dargestellt, weist der Prozessor-Interrupt-Generator 306 ein Interface 602 der zentralen Steuereinrichtung, einen Interprozessor- Interrupt- (IPI-) und Software-Interrupt-Registersatz 604 sowie einen Satz CPU-Kanäle 606-1 bis 606-m auf. Jede Verarbeitungseinheit in dem System empfängt ein Interrupt von einem dazugehörigen CPU-Kanal 606-1 bis 606-m des Prozessor-Interrupt-Generators 306. Die CPU-Kanäle 606-1 bis 606-m empfangen über das Interface 602 der zentralen Steuereinrichtung Interrupts von den zentralen Steuereinrichtung 302 (Fig. 3) und übermitteln diese an die jeweilige(n) Verarbeitungseinheit (oder -einheiten).
- Fig. 10 zeigt ein Blockschaltbild mit Darstellung jedes Prozessorkanals 606-1 bis 606-m. Der in Fig. 10 dargestellte CPU-Kanal 606 weist eine CPU-Kanal- Registereinheit 650 und eine mit einer Interrupt-Dispatch-Steuereinheit 654 gekoppelte Interrupt-Warteschlange 652 auf. Die Interrupt-Dispatch-Steuereinheit 654 übermittelt anstehende Interrupts an die entsprechende Verarbeitungseinheit.
- Die CPU-Kanal-Registereinheit 650 weist ein Prioritätsregister für aktuelle Tasks 650A, ein ID-Register für aktuelle Interrupts 650B, ein Prozessor-ID- Register 650C und ein Steuerregister 650D auf. Die Funktionen und Bitdefinitionen jedes dieser Register werden als nächstes beschrieben.
- Jeder Verarbeitungseinheit im System wird ein zweckbestimmtes Steuerregister 650D zur Bestimmung der Funktionalität aus der Sicht der zentralen Interrupt-Steuereinheit 220 zugewiesen. Dabei handelt es sich um programmierbare 32-Bit-Register, die entweder im IJO- oder Speicherplatz des Systems abgebildet werden. Fig. 10A zeigt ein CPU-Kanal-Steuer- (CIG-) Register 650D mit den ihm zugeordneten Feldern, und Tabellen 5 bis 7 beschreiben jedes dieser Felder im Steuerregister. Tabelle 5: CIG-Steuerregisterfelder
- ITM (1 : 0) Definition
- 00 Zuführung der Interrupts auf separaten Stiften
- 01 Zuführung der Interrupts auf dem CPU-Bus
- 10 Benutzung zweckbestimmter Interrupt-Zuführbusse (z. B. 4 Bits breit) zum Zuführen der Interrupts
- 11 TBD
- IST (1 : 0) Definition
- 00 Keine Abarbeitun von Interrupts
- 01 Abarbeitun von Interrupts durch die CPU
- 10 Übermittlung von Interrupts zur CPU noch nicht bestätigt
- 11 TBD
- Das Prozessor-ID-Register 650C enthält den ID-Wert der dem spezifischen Kanal zugeordneten Verarbeitungseinheit 202-1 bis 202-m. Das ID-Register 650B für aktuelle Interrupts ist zum Speichern des ID-Werts (Vektors) desjenigen Interrupts vorgesehen, das von der mit dem Kanal verbundenen Verarbeitungseinheit abgearbeitet wird. Das ID-Register 650B für aktuelle Interrupts ist nur dann gültig, wenn das Statusfeld des Steuerregisters anzeigt, dass ein Interrupt abgearbeitet wird. Das Prioritätsregister 650A für aktuelle Tasks spiegelt die Priorität der von der mit dem Kanal verbundenen Verarbeitungseinheit ausgeführten Task wieder.
- Gemäß Fig. 9 bildet der Interprozessor-Interrupt- und Software-Interrupt- Registersatz 604 einen Satz von Registern, auf die von sämtlichen CPU-Kanälen an den gleichen Stellen logisch zugegriffen werden kann. Der Platz in diesem Registersatz bietet einen Blick auf jeden CPU-Kanal durch Verwendung des Prozessor-ID-Werts als Index. Somit wird, wenn zwei Prozessoren Lese-/ Schreibzyklen zu diesen auf der gleichen logischen Stelle abgebildeten Registern erzeugen, tatsächlich auf separate reelle Register zugegriffen. Die Verarbeitungseinheiten schreiben zum Initiieren von Interprozessor-Interrupts oder zum Organisieren von Software-Interrupts in diese Register.
- Fig. 10B zeigt das Interprozessor-Interrupt- (IPI-) Registerformat und die dazugehörigen Felder. Sämtliche IPI-Register sind entweder an einem I/O-Platz oder einem Speicherplatz des Systems für die Software zugänglich. Der ID- Wert der Verarbeitungseinheit dient als Index zum Bestimmen, auf welches Register zugegriffen wird. Tabellen 8 bis 11 beschreiben die verschiedenen Felder in jedem IPI-Register. Tabelle 8: CIG-IPI-Registerfelder
- ST (1 : 0) Definition
- 00 Im Ruhezustand
- 01 In der Abarbeitungsphase (übermittelt und bestätigt)
- 10 Übermittelt von CIC (jedoch nicht bestätigt)
- 11 In der Warteschlange in CC
- DTC (1 : 0) Definition
- 00 Ziel-ID-Feld (DID) des IPI-Registers
- 01 Selbst
- 10 Senden
- 11 Sämtliche Prozessoren ohne Selbst
- DM (2 : 0) Definition
- 000 Festgelegt: Zuführen des Interrupts zu der CPU/den CPUs im Ziel- CPU-Register
- 001 Niedrigste Priorität: Zuführen des Interrupts zu dem Prozessor, dessen Ausführung die niedrigste Priorität hat
- 010 TBD
- 011 TBD
- 100 NMI: Zuführen eines ebenengesteuerten Interrupts als NMI zu sämtlichen CPUs
- 101 Rücksetzung
- 110 TBD
- 111 TBD
- Eine Verarbeitungseinheit schreibt in ihr IPI-Register, wenn sie ein Interprozessor-Interrupt organisiert hat. Wenn eine Verarbeitungseinheit mehrere Interprozessor-Interrupts organisieren kann, sollte sie das ST- (Status-) Feld des IPI-Registers überwachen. Wenn dieses Feld im Ruhezustand ist, kann die Verarbeitungseinheit ein Interprozessor-Interrupt in das System injizieren. Wenn eine Verarbeitungseinheit einen Interprozessor-Interrupt injiziert, ohne den Status des IPI-Registers zu prüfen, und wenn das ST-Feld nicht im Ruhezustand ist, sind das aktuelle Interprozessor-Interrupt und jedes zuvor organisierte Interrupt unbestimmt. Es sei darauf hingewiesen, dass ferner ein Software-Interrupt-Register für jeden Prozessorkanal vorgesehen sein kann, dessen Format mit dem für das Interprozessor-Interrupt-Register spezifizierten identisch ist. Für Software-Interrupts wird jedoch ein angefordertes Interrupt nur der das Interrupt anfordernden Verarbeitungseinheit zugeführt.
- Anhand von Fig. 2 werden als nächstes Einzelheiten bezüglich des Startens des Computersystems 200 sowie der Initialisierung der verschiedenen Konfigurationsregister in der zentralen Interrupt-Steuereinheit 220 beschrieben. Bei der Systemkonfiguration wird eine der Verarbeitungseinheiten 202-1 bis 202-m als die "Boot"-Verarbeitungseinheit bezeichnet. Es sei in der folgenden Beschreibung angenommen, dass die Verarbeitungseinheit 202-1 als die Boot- Verarbeitungseinheit benannt worden ist. Fig. 11 ist ein Ablaufdiagramm mit Darstellung der Operation der Boot-Verarbeitungseinheit bei Systemrücksetzung. In Schritt 852 beginnt die Verarbeitungseinheit 202-1 ein Einschalt- Eigenprüfverfahren und ein Initialisierverfahren. Es sei darauf hingewiesen, dass anfangs die anderen Verarbeitungseinheiten 202-2 bis 202-m von der zentralen Steuereinheit 220 im Rücksetzzustand gehalten werden. In Schritt 854 initialisiert die Verarbeitungseinheit 202-1 die Registereinheit 504 (d. h. das Steuerregister 504A und das ID- (Vektor-) Register 504D) jedes Interrupt-Kanals. Wie oben gesagt, wird die Registereinheit 504 jedes Interrupt- Kanals innerhalb des I/O- oder Speicherplatzes des Computersystems abgebildet. Jedes Register jedes Interrupt-Kanals erhält eine vorbestimmte und einzigartige Adresse. Die der Registereinheit 504 jedes Interrupt-Kanals zugeführten Initialisierdaten werden typischerweise im BIOS-Kode des Hauptspeichers 204 gespeichert. Somit hängt der BIOS-Kode zum Initialisieren der Registereinheit 504 jedes Interrupt-Kanals von der speziellen Systemkonfiguration (d. h. der Anzahl und der Art von Interrupt erzeugenden Einrichtungen) ab und muss von der Systemprogrammiereinrichtung bereitgestellt werden.
- Der CPU-Kanal 606-1 der zentralen Interrupt-Steuereinheit 220, der mit der Verarbeitungseinheit 202-1 verbunden ist, muss ebenfalls initialisiert werden. Es sei jedoch darauf hingewiesen, dass das sich Prioritätsregister für aktuelle Tasks 650A, das ID-Register für aktuelle Interrupts 650B, das Prozessor-ID- Register 650C und das Steuerregister 650D für einen speziellen CPU-Kanal 606-1 bis 606-m an denselben Systemadressenplätzen (entweder I/O- oder Speicherplatz) befinden und auf diesen abgebildet sind wie die entsprechenden Register für die anderen CPU-Kanäle. Das heißt, dass die Adresse des Prioritätsregisters für aktuelle Tasks 650A für jeden CPU-Kanal 606-1 bis 606 m gleich ist. Ähnlich ist die Adresse für das ID-Register für aktuelle Interrupts 650B für jeden CPU-Kanal identisch, das gleiche gilt für die Adressenwerte für das Prozessor-ID-Register 650C und das Steuerregister 650D jedes CPU- Kanals. Ein Verarbeitungseinheits-ID-Wert ist somit jeder Verarbeitungseinheit 202-1 bis 202-m zugeordnet und in einem bezeichneten Befehl zum Initialisieren oder Aktualisieren der CPU-Kanal-Registereinheit 650 jedes CPU-Kanals 606-1 bis 606-m enthalten. Dies wird nachstehend genauer erläutert.
- Fig. 12 zeigt eine genauere schematische Darstellung der Hardware, die ein Initialisieren und Aktualisieren der CPU-Kanal-Registereinheit 650 jedes CPU- Kanals 606-1 bis 606-m während der normalen Ausführung ermöglicht. Fig. 12 zeigt ein ID-Register 902-1, das der Verarbeitungseinheit 202-1 zugeordnet ist. Identische IG-Register 902-2 bis 902-m sind den Verarbeitungseinheiten 202-2 bis 202-m zugeordnet. Jedes ID-Register 202-1 bis 202-m enthält einen Wert, der einmalig die spezielle Verarbeitungseinheit identifiziert. Der ID-Wert jeder Verarbeitungseinheit kann ein fester Wert sein oder bei der Systemkonfiguration erzeugt werden. Wenn z. B. fünfzehn Verarbeitungseinheiten innerhalb des Systems angeschlossen sind, können die ID-Werte in den ID-Registern 902-1 bis 902-m jeweils zwischen 0 und 15 liegen. Auf jedes ID- Register 902-1 bis 902-m kann mittels eines Software-Befehls über jeweilige Steuerdekodierer 904-1 bis 904-m jeder Verarbeitungseinheit zugegriffen werden. Die ID-Register können entweder innerhalb des Speicher- oder des I/O-Platzes abgebildet sein. Es sei jedoch darauf hingewiesen, dass jede Verarbeitungseinheit über denselben Adressenwert auf ihr entsprechendes ID-Register 902 zugreift. Das ID-Register 902 jeder Verarbeitungseinheit 202-1 bis 202-m kann z. B. an einem Speicherplatz von 2000: H abgebildet sein. Somit wird, wenn ein bezeichneter Verarbeitungskern 204-1 bis 204-m einen Lesezyklus bezogen auf Speicherplatz 2000: H ausführt, der Wert im entsprechenden ID-Register 902 für diese Verarbeitungseinheit an den Verarbeitungskern übermittelt. Jeder Verarbeitungskern würde in dieser Situation einen einmaligen Wert ablesen.
- Fig. 13 zeigt eine Schaltanordnung in der zentralen Interrupt-Steuereinheit 220, die das Schreiben (oder Lesen) von Daten von der jeweiligen CPU-Kanal- Registereinheit 650 jedes CPU-Kanals 606-1 bis 606-m ermöglicht. Bei dieser Darstellung sei angenommen, dass insgesamt sechzehn Verarbeitungseinheiten innerhalb des Systems angeschlossen sein können; es sei jedoch darauf hingewiesen, dass die Schaltanordnung alternativ derart konfiguriert sein kann; dass sie z. B.. 256 einzelne Verarbeitungseinheiten aufweist. Fig. 13 zeigt die CPU-Kanal-Registereinheit 650-1 bis 650-16 für die sechzehn einzelnen CPU-Kanäle. Wie oben gesagt, weist jede CPU-Kanal-Registereinheit 650-1 bis 650-16 ein Prioritätsregister für aktuelle Tasks 650A, ein ID-Register für aktuelle Interrupts 65GB, ein Prozessor-ID-Register 650C und ein Steuerregister 650D auf. Jedes dieser Register dient zum Empfangen (oder Übermitteln) von Daten von den Datenleitungen des CPU-Lokalbusses 207. Eine 4 : 16-Dekodierschaltung 920 ist an ihren Eingängen ferner mit ausgewählten Datenleitungen des CPU-Lokalbusses 207 gekoppelt. Die Ausgänge der 4 : 16-Dekodierschaltung 920 sind jeweils mit Selektleitungen der CPU- Kanal-Registereinheiten 650-1 bis 650-16 gekoppelt. Es sei darauf hingewiesen, dass jede CPU-Kanal-Registereinheit 650-1 bis 650-16 ein separates Selektsignal von der Dekodierschaltung 920 empfängt. Ein Adressendekodierer 922 ist ferner an seinem Eingang mit den Adressenleitungen des I/O-Busses 210 gekoppelt. Vier Latch-Enable-Leitungen sind an einem Ausgang des Adressendekodierers 922 vorgesehen. Eine Adressendekodierer-Enable-Leitung ist mit den Latch-Enable-Eingängen jedes Prioritätsregisters für aktuelle Tasks 650A der CPU-Kanal-Registereinheit 650-1 bis 650-16 gekoppelt, und auf ähnliche Weise sind die Adressendekodierer-Enable-Leitungen mit jedem ID-Register für aktuelle Interrupts 650B, jedem Prozessor-ID-Register 650C und jedem Steuerregister 650D gekoppelt.
- Gemäß der Hardware-Implementierung, wie sie in Fig. 12 und 13 dargestellt ist, bei der die CPU-Kanal-Registereinheit 650 des bezeichneten CPU-Kanals 606-1 bis 606-m initialisiert oder aktualisiert werden muss, kann die Betriebssystemprogrammiereinrichtung den Ausführungskode derart strukturieren, dass der Prozessor-ID-Wert als Index zum Leiten von Daten zu den richtigen CPU-Kanal-Registereinheiten 650 in einem bezeichneten ID-Register 902 enthalten ist. Man betrachte z. B. eine Situation, in der das ID-Register 902 jeder Verarbeitungseinheit 202-1 bis 202-m auf einem Speicherplatz 2000: H abgebildet ist, und in der das Steuerregister 650D jedes CPU-Kanals 606-1 bis 606-m auf einer I/O-Adresse 3000: H abgebildet ist. Wenn das Betriebssystem die Konfigurationsinformationen im Steuerregister 650D für eine spezielle Verarbeitungseinheit akaualisieren muss, kann die Programmiereinrichtung zunächst dafür sorgen, dass die bezeichnete Verarbeitungseinheit einen Speicherlesezyklus bezogen auf Speicherplatz 2000: H zum Lesen des Werts im ID-Register der speziellen Verarbeitungseinheit ausführt. Die Programmiereinrichtung kann dann einen Befehl zum Verbinden des ID-Werts mit den in dem jeweiligen Steuerregister 650D zu speichernden Konfigurationsdaten aufrufen.
- Danach wird ein I/O-Schreibbefehl zum Adressenplatz 3000 : H zum Schreiben der zusammengefassten Informationen (d. h. der Konfigurationsdaten mit dem Prozessor-ID-Wert) ausgeführt. Dieser I/O-Zyklus wird vom Adressendekodierer 922 dekodiert, der in Reaktion darauf die Freigabe der Steuerregister 650D jeder CPU-Kanal-Registereinheit 650-1 bis 650-16 veranlasst. Der Prozessor-ID-Wert, der mit den Konfigurationsdaten zusammengefasst ist, wird dann von dem 4 : 16-Dekodierer 920 dekodiert, der ein Selektsignal an eine ausgewählte CPU-Kanal-Registereinheit 650-1 bis 650-16 übermittelt. Somit werden die Konfigurationsdaten nur in den ausgewählten und frei gegebenen Registern gespeichert. Die Konfigurationsdaten werden dadurch an den bezeichneten CPU-Kanal 606-1 bis 606-m übermittelt, ohne dass separate zweckbestimmte Adressenplätze für die Konfigurationsregister jedes CPU-Kanals erforderlich sind. Es sei darauf hingewiesen, dass Zyklen zum Aktualisieren der Register jedes CPU-Kanals sowie Lesezyklen gleichzeitig aufgeführt werden. Ein beispielhafter Kode, der die erforderliche Prozessor-ID-Leseoperation durchführt, sowie der Kode zum Verbinden des ID-Werts mit den Konfigurationsdaten und zum Schreiben der Konfigurationsdaten in einen bezeichneten CPU-Kanal sieht wie folgt aus:
- Gemäß Fig. 11 muss nach Initialisierung der I/O-Kanäle in der zentralen Interrupt-Steuereinheit 220 (die Konfigurationsregister jedes I/O-Kanals sind auf zweckbestimmten Plätzen getrennt von den Konfigurationsregistern anderer I/O-Kanäle abgebildet) durch die Boot-Verarbeitungseinheit die Boot-Verarbeitungseinheit 202-1 den CPU-Kanal 606-1 initialisieren. Dies geschieht durch Anwendung des oben anhand von Fig. 12 und 13 beschriebenen Verfahrens. Somit liest bei Schritt 856 die Verarbeitungseinheit 202-1 ihre entsprechenden ID-Register 902. In Schritt 858 verbindet die Verarbeitungseinheit 202 ihren ID-Registerwert mit den gewünschten Konfigurationsdaten, die in einem bezeichneten Register der CPU-Kanal-Registereinheit 650 gespeichert werden müssen. Die Verarbeitungseinheit 202-1 führt dann einen Zyklus zum Schreiben der zusammengefassten Daten in das ausgewählte Register der CPU-Kanal-Registereinheit 650 aus. Es sei darauf hingewiesen, dass während dieses Zyklus der in Fig. 13 gezeigte 4 : 16-Dekodierer 920 zum Auswählen der Registereinheit 650-1 des CPU-Kanals 906-1 benutzt wird. Ähnliche Operationen können zum Schreiben zusätzlicher Initialisierdaten in andere Register der CPU-Kanal-Registereinheit 650 des CPU-Kanals 606-1 initiiert werden. Bei einer Implementierung werden während der Initialisiersequenz von der Verarbeitungseinheit 202-1 Initialisierdaten in das Prioritätsregister für aktuelle Tasks 650A und das Steuerregister 650D geschrieben. Nach Initialisierung des CPU-Kanals 606-1 durch die Verarbeitungseinheit 202-1 übermittelt die Verarbeitungseinheit 202-1 einen Befehl an die zentrale Interrupt-Steuereinheit 22'0, wodurch die zentrale Interrupt-Steuereinheit 202 die übrigen Verarbeitungseinheiten 202-2 bis 202-m aus dem Rücksetzzustand (Schritt 862) entlässt. Danach (Schritt 864) wartet die Boot-Verarbeitungseinheit 202-1 auf die Beendigung der Slave-Initialisiersequenz, wie in Fig. 14 dargestellt. Damit wird die Initialisiersequenz abgeschlossen.
- Fig. 14 zeigt ein Ablaufdiagramm mit Darstellung der Initialisiersequenz jeder Slave-Verarbeitungseinheit 202-2 bis 202-m. Wenn die Master-Verarbeitungseinheit 202-1 veranlasst, dass die zentrale Interrupt-Steuereinheit 220 die übrigen Verarbeitungseinheiten aus dem Rücksetzzustand entlässt, liest jede Verarbeitungseinheit 202-2 bis 202-m ihre ihr zugeordneten jeweiligen ID- Register 902-2 bis 902-m in Schritt 870, verbindet den ID-Wert mit den im Steuerregister 650D zu speichernden Konfigurationsdaten (Schritt 872) und schreibt die zusammengefassten Daten in die CPU-Kanal-Registereinheit 650 (Schritt 874). Die in Fig. 13 gezeigte Dekodierschaltung 920 ist während dieser Zyklen aktiv und wählt die entsprechende CPU-Kanal-Registereinheit 650- 1 bis 650-16 gemäß dem in jedem speziellen Zyklus identifizierten Prozessor- ID-Wert. Ähnliche Operationen werden zum Initialisieren des Prioritätsregisters für aktuelle Tasks 650A jedes CPU-Kanals wiederholt (Schritt 876). Es sei auch hier darauf hingewiesen, dass, da ein einzigartiger ID-Wert in jedem ID- Register 902-2 bis 902-m mit den in jedes Register der CPU-Kanal-Registereinheit 650 geschriebenen Daten verbunden wird, jede Verarbeitungseinheit 202-2 bis 202-m ihre eigene CPU-Kanalkonfiguration durchführt.
- Mit Bezug auf Fig. 2 und 4 ist oben gesagt worden, dass jeder bezeichnete Interrupt-Kanal 402-1 bis 402-n im so genannten "8259er" Modus programmierbar ist. Dadurch wird das Verbinden einer programmierbaren Interrupt- Steuereinrichtung, wie der Interrupt-Steuereinrichtung 216, mit der zentralen Interrupt-Steuereinheit 220 ermöglicht, wenn ein spezieller Interrupt-Kanal im 8259er Modus programmiert ist (wie vom CM-Feld des dazugehörigen Steuerregisters 504A angezeigt). Im 8259er Betriebsmodus wird das Interrupt-Signal entsprechend der programmierten Priorität von der 8259er Interrupt-Steuereinrichtung über die zentrale Interrupt-Steuereinheit 220 geleitet und das bestätigte Signal von der Empfangs-Verarbeitungseinheit 202-1 bis 202-m über die zentrale Interrupt-Steuereinheit 220 zur Interrupt-Steuereinrichtung 16 zurück gesandt. Dies ist in Fig. 15 dargestellt, in der eine der Verarbeitungseinheiten 202 mit der zentralen Interrupt-Steuereinheit 220 und einem Puffer 219 gekoppelt ist. Wenn ein ISA-Interrupt an einem Interrupt- Eingang der 8259er Interrupt-Steuereinrichtung 216 empfangen wird, werden die Interrupts über die zentrale Interrupt-Steuereinheit 220 geleitet und entsprechend der programmierten Prioritätsebene und anderer Führungsparameter der zentralen Steuerung zu einer bezeichneten Verarbeitungseinheit 202 geführt. Wenn die bezeichnete Verarbeitungseinheit 202 den Zyklus bestätigt, wird das Interrupt-Bestätigungssignal INTA über die zentrale Interrupt- Steuereinheit 220 weiter geleitet und auf der Bestätigungsleitung der 8259er Interrupt-Steuereinrichtung 216 empfangen. Die Interrupt-Steuereinrichtung 216 legt in Reaktion darauf den Interrupt-Vektor auf einen X-Bus 210 (oder einen anderen Bus), und der Interrupt-Vektor wird über einen Puffer 219 an die Verarbeitungseinheit 202 weiter geleitet. Es sei darauf hingewiesen, dass der Puffer 219 in der Busbrücke 208 enthalten sein kann. Entsprechend spricht beim 8259er Kaskadenmodus die zentrale Interrupt-Steuereinheit 220 nicht direkt auf den Interrupt-Bestätigungszyklus der Empfangs- Verarbeitungseinheit 202 an und ermöglicht statt dessen das Weiterleiten von Vektorinformationen von der 8259er Interrupt-Steuereinrichtung 216. Es sei ferner darauf hingewiesen, dass das Realisieren des 8259er Modus, wie oben beschrieben, in vorteilhafter Weise die Verwendung integrierter Interrupt- Quellen, wie einer integrierten Schaltung vom Typ 82C206 mit einem Systemzeitgeber 834 und einer Echtzeituhr 835 ermöglicht.
- Gemäß Fig. 2 kann das Multiprozessorsystem 200 ferner derart konfiguriert sein, dass es die Übertragung von Interrupt-Informationen über verschiedene Interfaces mittels eines speziellen Zyklus, der über einen oder mehrere Busse im System übertragen wird, ermöglicht. Dies ist am besten in Fig. 16 ersichtlich. Fig. 16 zeigt ein Blockschaltbild des Multiprozessorsystems, wie es im wesentlichen in Fig. 2 mit einer mit einem zweiten I/O-Bus 282 gekoppelten zusätzlichen I/O-Vorrichtung 280 dargestellt ist. Der zweite I/O-Bus 282 ist über eine Busbrücke 284 mit dem I/O-Bus 210 gekoppelt. Die Busbrücke 284 ist ein Beispiel für eine Ankoppelstation zum Koppeln eines tragbaren Computers, wie von der I/O-Vorrichtung 280 dargestellt, mit dem Multiprozessorsystem. Bei dem in Figur. 16 gezeigten System kann die I/O-Vorrichtung 280 ein Interrupt-Signal zur Busbrücke 284 übermitteln. Wegen der Kosten und der möglichen Nichtverfügbarkeit zweckbestimmter Interrupt-Stifte, die die Busbrücke 284 mit der zentralen Interrupt-Steuereinheit 220 koppeln, kann die Busbrücke 284 möglicherweise nicht zum Aktivieren eines Interrupt-Signals auf einer zweckbestimmten Leitung, das von der zentralen Interrupt-Steuereinheit 220 empfangen wird, dienen. Statt dessen kann in Reaktion auf die Aktivierung eines Interrupts durch die I/O-Vorrichtung 280 die Busbrücke 284 einen speziellen Zyklus oder einen Speicher- oder I/O-Zyklus bezogen auf einen zweckbestimmten Speicherplatz ausführen, auf den ein spezieller Interrupt-Kanal der zentralen Interrupt-Steuereinheit 220 anspricht. Fig. 17 zeigt einen Interrupt-Kanal mit einer Hardware zum Dekodieren eines Interrupt- Zyklus, wie er von der Busbrücke 284 ausgeführt wird, und zum Aktivieren eines entsprechenden Interrupt-Signals in dem entsprechenden Interrupt-Kanal. Gemäß Fig. 17 spricht eine Steuereinheit 290 auf das CM-Feld des Steuerregisters 504A an und gibt entsprechend den Interrupt-Zyklusdekodierer 292 frei, wenn der Interrupt-Kanalmodus als I/O-Busmodus bezeichnet ist. Wenn die Steuereinheit 290 den Interrupt-Zyklusdekodierer 292 frei gibt, wird der von der Busbrücke 284 erzeugte spezielle Interrupt-Zyklus vom Interrupt- Zyklusdekodierer 292 detektiert, der entsprechend ein Interrupt-Signal am INTR-Eingang des Interrupt-Eingangsprozessors 502 aktiviert. Es sei darauf hingewiesen, dass in Situationen, in denen der I/O-Bus 210 ein PCI-Standard- Bus ist, der spezielle Interrupt-Zyklus durch eine vorspezifizierte Kodierung der Zyklusdefinitionsbits des PCI-Busses definiert sein kann. Alternativ kann der spezielle Interrupt-Zyklus als Zyklus bezogen auf eine vorbestimmte Adresse entweder im Speicher- oder im I/O-Platz des Systems definiert sein.
- Die Priorisierung von Interrupts durch die zentrale Steuereinrichtung 302 wird als nächstes betrachtet. Fig. 18 zeigt ein Blockschaltbild mit Darstellung eines Teils der zentralen Interrupt-Steuereinheit 220 mit der I/O-Interrupt-Steuereinrichtung 304, der zentralen Steuereinrichtung 302 und dem Prozessor- Interrupt-Generator 306. Statt der automatischen Zuordnung einer vom Interrupt-Vektor abhängigen festen Priorität zu einem speziellen Interrupt ermöglicht die zentrale Interrupt-Steuereinheit 220 einen separaten programmierbaren Interrupt-Vektor und eine separate Priorität für jedes Interrupt. Die Priorität wird im PL-Feld des jeweiligen Steuerregisters 504A für den Interrupt-Kanal gespeichert. Wie oben ausgeführt, wird der Vektor für jeden Interrupt-Kanal bei der Systeminitialisierung gesetzt. Ferner wird auch die Prioritätsebene für den Interrupt-Kanal gesetzt. Wenn eine spezielle Interrupt-Anforderung von der I/O-Interrupt-Steuereinrichtung 304 angenommen worden ist, werden der Interrupt-Vektor und die Prioritätsdaten von einem Interrupt- Steuerprogramm 305 der zentralen Steuereinrichtung 302 verarbeitet, das entsprechend den Interrupt-Vektor und die Prioritätsdaten für jedes Interrupt in einer Interrupt-Warteschlange 652 (Fig. 10) eines bezeichneten CPU-Kanals des Prozessor-Interrupt-Generators 306 erzeugt. Die Interrupts werden zu den verschiedenen Interrupt-Warteschlangen der CPU-Kanäle übermittelt, und zwar priorisiert auf Basis der von dem Interrupt-Steuerregister angezeigten Prioritätsebene sowie auf Basis der aktuellen Task-Prioritäten der zur Verfügung stehenden Verarbeitungseinheiten. Fig. 18 zeigt eine Dekodiereinheit 309 in der I/O-Bus-Interface-Einheit 308, die ein separates Programmieren der Vektorinformatioinen und der Prioritätsinformationen für jedes Interrupt über bezeichnete I/O- oder Speicherzyklen auf dem I/O-Bus 210 ermöglicht. Bei einer einfachen Konfiguration werden anstehende Interrupt-Anforderungen in der priorisierten Reihenfolge an die Interrupt-Warteschlangen der CPU-Kanäle übermittelt.
- Mit Bezug auf Fig. 2 ist oben gesagt worden, dass es erforderlich sein kann, die ausgewählten Interrupts, wie ein Zeitgeber-Tick-Interrupt, an jede Verarbeitungseinheit 202-1 bis 202-m zu senden. Wenn der Zuführmodus für ein spezielles Interrupt-Signal als Sendemodus bezeichnet ist (d. h. DM-Feld des Steuerregisters 504A für das Interrupt), arbeitet die zentrale Steuereinrichtung 302 gemäß einer Selbstverkettungstechnik, wie in dem in Fig. 19 gezeigten Ablaufdiagramm dargestellt. Gemäß Fig. 19 wird, wenn das Interrupt-Anforderungssignal für ein als Sendung bezeichnetes Interrupt aktiviert ist, wie in Schritt 470 festgelegt, das Interrupt an die Verarbeitungseinheit 202-1 bis 202-m mit der niedrigsten Prioritätsebene für aktuelle Tasks (wie vom Prioritätsregister für aktuelle Tasks 650A für diesen CPU-Kanal angezeigt) in Schritt 472 übermittelt. In Schritt 474 arbeitet die bezeichnete Verarbeitungseinheit das Interrupt ab und sendet einen Befehl "Ende des Interrupts" (EOI) an die zentrale Steuereinrichtung zurück. Wenn sämtliche Verarbeitungseinheiten 202-1 bis 202-m noch kein Interrupt empfangen haben (Schritt 476), wird das Interrupt an die nächste Verarbeitungseinheit 202-1 bis 202-m übermittelt, die noch kein Interrupt empfangen hat und die den niedrigsten Prioritätswert für aktuelle Tasks (gegenüber denjenigen Verarbeitungseinheiten, die noch kein Interrupt empfangen haben) aufweist. Diese nächste Verarbeitungseinheit arbeitet dann das Interrupt ab und sendet einen Befehl "Ende des Interrupts" an die zentrale Steuereinrichtung 302 zurück. Dieser Prozess wird wiederholt, bis jede Verarbeitungseinheit 202-1 bis 202-m das Interrupt empfangen hat. Wenn sämtliche Verarbeitungseinheiten das Interrupt empfangen und abgearbeitet haben, wird das Belegtbit für das Interrupt (d. h. der Ruhezustand des ST-Felds des Steuerregisters 504A für den Interrupt-Kanal) beseitigt (Schritt 478). Es sei darauf hingewiesen, dass ein ähnliches Selbstverkettungsverfahren durchgeführt werden kann, wenn anstelle sämtlicher Verarbeitungseinheiten ein bezeichneter Satz Verarbeitungseinheiten ein spezielles Interrupt empfangen muss. Gemäß der oben beschriebenen Selbstverkettung, bei der Interrupts, wie Zeitgeber-Tick-Interrupts, an zwei oder mehr der Verarbeitungseinheiten übermittelt werden, leitet die zentrale Steuereinrichtung 302 auf intelligente Weise das Interrupt selektiv an die Verarbeitungseinheit mit der niedrigsten Prioritätsebene für aktuelle Tasks weiter. Das Interrupt wird erst an nachfolgende Verarbeitungseinheiten weitergeleitet, wenn die vorhergehende Verarbeitungseinheit die Abarbeitung des Interrupts beendet hat. Infolge dessen wird die Buskonkurrenz minimiert und die Systemleistung durch Ausschalten der Verarbeitungseinheiten mit den niedrigsten Prioritätswerten für aktuelle Tasks vor dem Ausschalten von Verarbeitungseinheiten mit den höchsten Task-Prioritäten maximiert.
- Die zentrale Interrupt-Steuereinheit 220 verhindert ferner, dass unerwünschte Interrupts auftreten. Wie oben gesagt, wird, wenn ein ebenengesteuertes Interrupt von einer bezeichneten Verarbeitungseinheit abgearbeitet wird, ein I/O-Befehl typischerweise einer Interrupt-Abarbeitungsroutine zugeordnet, die bei Ausführung dafür sorgt, dass die Interrupt-Quelle das Interrupt-Signal deaktiviert. Danach wird ein Befehl "Ende des Interrupts" (EOI) ausgeführt, mit dem die zentrale Interrupt-Steuereinheit 220 darüber informiert wird, dass die Interrupt-Abarbeitung abgeschlossen ist. Ein unerwünschtes Interrupt kann auftreten, wenn eine beträchtliche Latenz zwischen dem Zeitpunkt, zu dem die Verarbeitungseinheit den I/O-Befehl ausführt (damit die Interrupt-Quelle das Interrupt-Signal deaktiviert), und dem Zeitpunkt, zu dem das Interrupt- Signal deaktiviert ist, besteht. Eine solche Latenz kann z. B. auftreten, wenn die I/O-Vorrichtung über mehrere Bus-Interface-Einheiten auf einem rechnerfernen Bus resident ist. Wenn die Interrupt-Quelle das Interrupt-Signal nicht vor Ansprechen der zentralen Interrupt-Steuereinrichtung auf den Befehl "Ende des Interupts" deaktiviert, kann die fortgesetzte Aktivierung des Interrupts von der zentralen Interrupt-Steuereinheit 220 detektiert werden, wodurch veranlasst wird, dass das Interrupt unbeabsichtigt reinitiiert wird.
- Gemäß Fig. 20 ist die zentrale Steuereinheit 220 in vorteilhafter Weise einem mit einem I/O-Bus 2:10 über eine Dekodiereinheit 596 gekoppelten programmierbaren Latenzzeitgeber 595 zugeordnet. Der programmierbare Latenzzeitgeber 595 kann von einem Systemanwender derart programmiert werden, dass eine programmierbare Zeitverzögerung zwischen dem Zeitpunkt, zu dem die zentrale Steuereinrichtung 302 den Befehl "Ende des Interrupts" empfängt, und dem Zeitpunkt, zu dem die zentrale Steuereinrichtung 302 das Status- (ST-) Feld des Steuerregisters 504A des speziellen Interrupt-Kanals zurück setzt, einstellbar ist. Es sei darauf hingewiesen, dass die I/O-Interrupt- Steuereinrichtung 304 derart konfiguriert ist, dass ein bezeichnetes Interrupt- Signal nicht überwacht wird, wenn der Status anzeigt, dass das Interrupt entweder abgearbeitet wird, von der zentralen Interface-Steuereinheit 220 an eine spezielle Verarbeitungseinheit übermittelt worden ist oder in der zentralen Steuereinrichtung 302 auf der Warteliste steht. Wenn die zentrale Steuereinrichtung 302 den Status für ein spezielles Interrupt-Signal in den Ruhezustand zurücksetzt, fährt die I/O-Interrupt-Steuereinrichtung 304 mit der Überwachung des speziellen Interrupt-Signals für nachfolgende Aktivierungen fort. Es sei darauf hingewiesen, dass, da der programmierbare Zeitgeber 595 die Rücksetzung des ST-Felds des Steuerregisters für den speziellen Interrupt-Kanal verzögert, das Auftreten unerwünschter Interrupts vermieden werden kann. Es sei ferner darauf hingewiesen, dass der programmierbare Zeitgeber 595 über das EOI-Feld des Kanalsteuerregisters 504A dieses Interrupts selektiv freigegeben werden kann. Es sei außerdem angemerkt, dass der Dekodierer 596 als integraler Bestandteil der I/O-Bus-Interface-Einheit 308 ausgeführt sein kann.
- Fig. 21 zeigt ein Blockschaltbild eines symmetrischen Multiprozessorsystems, das einen adaptiven Interrupt-Abbildungsmechanismus und eine adaptive Interrupt-Abbildungstechnik anwendet. Schaltungsteile, die den in Fig. 2 dargestellten entsprechen, erhalten der Einfachheit und Klarheit halber die gleichen Bezugszeichen.
- Gemäß Fig. 21 ist ein PCI-Bus 902 über eine Busbrücke 208 mit dem CPU- Lokalbus 207 gekoppelt. Ein ISA-Bus 904 ist ebenfalls über eine Busbrücke 906 mit dem PCI-Bus 902 gekoppelt. Mehrere PCI-Vorrichtungen 907-909 sind mit dem PCI-Bus 902 gekoppelt. Mehrere ISA-Vorrichtungen 910-912 sind in ähnlicher Weise mit dem ISA-Bus 904 gekoppelt. Eine Interrupt- Steuereinrichtung 915 und eine PCI-Abbildeeinrichtung 916 sind mit dem ISA- Bus 904 gekoppelt.
- Die zentrale Interrupt-Steuereinheit 220 ist derart konfiguriert, dass sie in einem "Vorschub"modus oder einem "Durchgangs"modus arbeitet. Der Durchgangsmodus ist der Standardmodus. In den Vorschubmodus wird übergegangen, indem ein Bit in einem Konfigurationsregister der zentralen Interrupt-Steuereinheit 220 (d. h. durch Setzen eines Bits im Steuerregister 504A) gesetzt wird. Die Operation des Multiprozessorsystems in den beiden Moden wird nachstehend erläutert.
- Allgemein kann gesagt werden, dass die Interrupt-Steuereinrichtung 915 Interrupts von mehreren Interrupt-Vorrichtungen, wie PCI-Vorrichtungen 907- 909 und ISA-Vorrichtungen 910-912, priorisiert und verarbeitet. Die Interrupt-Steuereinrichtung 915 kann ferner weitere Funktionen ausführen, z. B. Maskierfunktionen. Die Interrupt-Steuereinrichtung 915 erzeugt ein Interrupt- Signal auf einer Leitung 920, die mit der zentralen Interrupt-Steuereinheit 220 gekoppelt ist. Die Interrupt-Steuereinrichtung 915 ist ein Beispiel für ein Paar in Kaskade geschaltete Interrupt-Steuereinrichtungen vom Typ AM8259.
- Die PCI-Abbildeeinrichtung 916 dient zum Führen eines Interrupt-Signals von jeder PCI-Vorrichtung 907-909 zu einem separaten Interrupt-Eingang (A-H) einer Interrupt-Steuereinrichtung 915. Die PCI-Abbildeeinrichtung 916 ermöglicht in vorteilhafter Weise, dass das System-BIOS das Führen jedes Interrupts von den PCI-Vorrichtungen 907-909 über die PCI-Abbildeeinrichtung 916 zu einem bezeichneten Eingang (A-H) der Interrupt-Steuereinrichtung 915 (d. h. zu Eingängen, die nicht bereits von einer der ISA-Vorrichtungen 910-912 benutzt werden) programmiert. Entsprechend kann das System- BIOS bei der Systeminitialisierung bestimmen, welche ISA-Vorrichtungen mit dem System verbunden werden, und kann entsprechend Interrupts von jeder beliebigen PCI-Vorrichtung über die PCI-Abbildeeinrichtung 916 auf unbenutzten Interrupt-Eingängen der Interrupt-Steuereinrichtung 915 abbilden. Es sei darauf hingewiesen, dass Interrupts von den ISA-Vorrichtungen 910-912 und den PCI-Vorrichtungen 907-909 ferner direkt an die zentrale Interrupt-Steuereinheit 220 übermittelt werden. Dies wird nachstehend genauer erläutert.
- Im Durchgangsmodus werden Interrupts von den ISA-Vorrichtungen 910-912 an die Interrupt-Steuereinrichtung 915 übermittelt. Ein entsprechendes Interrupt wird in Reaktion darauf von der Interrupt-Steuereinrichtung 915 auf der Leitung 920 erzeugt und durch die zentrale Interrupt-Steuereinheit 220 direkt an die Master-Verarbeitungseinheit 202-1 weitergeleitet. In ähnlicher Weise werden Interrupts von den PCI-Vorrichtungen 907-909 über die PCI-Abbildeeinrichtung 916 an die Interrupt-Steuereinrichtung 915 übermittelt. Auch hier führt ein von einer der PCI-Vorrichtungen 907-909 aktiviertes Interrupt zu einer Aktivierung eines Interrupts auf der Leitung 920 von der Interrupt- Steuereinrichtung 915. Das Interrupt von der Interrupt-Steuereinrichtung 915 wird dann über die zentrale Interrupt-Steuereinheit 220 direkt an die Master- Verarbeitungseinheit 202-1 weitergeleitet. Die zentrale Interrupt-Steuereinheit ist ferner derart konfiguriert, dass sie bei diesem Modus die direkt von den PCI-Vorrichtungen 907 und 909 und von den ISA-Vorrichtungen 910-912 kommenden interrupts ignoriert. Es sei darauf hingewiesen, dass im Durchgangsmodus die Verarbeitungseinheiten 202-2 bis 202-m im Ruhezustand bleiben und das System als Einzelprozessorsystem arbeitet. Dieser Modus wird in vorteilhafter Weise von herkömmlichen Betriebssystemen, wie DOS, angewandt.
- Im Vorschubmodus, der nach der Master-Initialisierung durch ein weiter entwickeltes Betriebssystem, das eine Mehrfachverarbeitung durchführt (z. B. Windows NT) einstellbar ist, wird die PCI-Abbildeeinrichtung 916 deaktiviert, so dass sämtliche Ausgänge drei Zustände aufweisen. Interrupts von den PCI- Vorrichtungen 907-9U9 werden direkt der zentralen Interrupt-Steuereinheit 220 zugeführt. In ähnlicher Weise werden Interrupts von den ISA-Vorrichtungen 910-912 ebenfalls direkt der zentralen Steuereinheit 220 zugeführt. Das Verarbeiten dieser Interrupts kann dann wie oben beschrieben durchgeführt werden. Beim Vorschubmodus wird der Interrupt-Ausgang der Interrupt- Steuereinrichtung 915 von der zentralen Steuereinheit 220 ignoriert. Die nachstehende Tabelle 12 zeigt die Auswirkung des Durchgangs- und des Vorschubmodus auf die verschiedenen Interrupts und auf die PCI-Abbildungseinrichtung 916. Tabelle 12
- Das in Fig. 21 gezeigte Multiprozessorsystem verwendet daher einen adaptiven Interrupt-Abbildemechanismus und ein adaptives Abbildeverfahren, so dass sowohl weiter entwickelte Betriebssysteme als auch herkömmliche Einzelprozessor-Betriebssysteme leicht integrierbar sind. Da die PCI-Abbildeeinrichtung 916 im Vorschubmodus deaktiviert ist, können zusätzliche ISA-Vorrichtungen im Vorschubmodus mit dem ISA-Bus 904 verbunden werden, ohne dass diese mit den Interrupts von den PCI-Vorrichtungen 907-909 in Konflikt geraten. Entsprechend wird ein großer Bereich an Systemkonfigurationen aufgenommen und kann die Anzahl von verfügbaren ISA-Interrupt-Leitungen maximiert werden. Mit dem oben beschriebenen symmetrischen Multiprozessorsystem wird eine effiziente Verwaltung der System-Interrupts bei gleichzeitiger Aufrechterhaltung einer weitreichenden Kompatibilität erreicht. Die Interrupt-Verwaltung erfolgt durch eine zentralisierte Interrupt-Steuereinheit.
- Zahlreiche Änderungen und Modifikationen sind für Fachleute auf dem Gebiet anhand der vorstehenden Beschreibung offensichtlich. Die folgenden Patentansprüche sind so zu interpretieren, dass sämtliche Änderungen und Modifikationen in ihnen enthalten sind.
Claims (12)
1. Symmetrisches Multiprozessorsystem mit:
einer Vielzahl von Verarbeitungseinheiten (202);
einer mit der Vielzahl von Verarbeitungseinheiten (202) über einen
ersten Peripheriebus (904) gekoppelten ersten Peripherievorrichtung
(910);
einer mit der Vielzahl von Verarbeitungseinheiten (202) über einen
ersten Peripheriebus (904) gekoppelten zweiten Peripherievorrichtung
(911);
gekennzeichnet durch:
eine mit der Vielzahl von Verarbeitungseinheiten (202) über einen
zweiten Peripheriebus (902) gekoppelte dritte Peripherievorrichtung (907);
eine Interrupt-Steuereinrichtung (915) mit einer ersten Eingangsleitung
zum Empfangen eines ersten Interrupt-Signals von der ersten
Peripherievorrichtung (910) und einer zweiten Eingangsleitung zum Empfangen
eines zweiten Interrupt-Signals von der zweiten Peripherievorrichtung
(911);
eine Interrupt-Abbildungseinrichtung (916) mit einer
Interrupt-Eingangsleitung zum Empfangen eines dritten Interrupt-Signals von der
dritten Peripherievorrichtung (907) und zum Leiten des dritten Interrupt-Signals
zu einer dritten Eingangsleitung der
Interrupt-Steuereinrichtung (915); und
eine mit dem ersten Peripheriebus (904), über eine
Interrupt-Anforderungsleitung der Interrupt-Steuereinrichtung mit der
Interrupt-Steuereinrichtung (915), mit der Vielzahl von Verarbeitungseinheiten (202)
und mit der ersten Eingangsleitung, der zweiten Eingangsleitung der
Interrupt-Steuereinrichtung (915) und der Interrupt-Leitung der
Interrupt-Abbildungseinrichtung (916) gekoppelte zentrale Interrupt-
Steuereinheit (220), wobei die zentrale Interrupt-Steuereinheit (220)
das erste Interrupt-Signal, das zweite Interrupt-Signal und das dritte
Interrupt-Signal auf einer mit der ersten Eingangsleitung gekoppelten
ersten Eingangsleitung der zentralen Interrupt-Steuereinheit, einer mit
der zweiten Eingangsleitung gekoppelten zweiten Eingangsleitung der
zentralen Interrupt-Steuereinheit bzw. einer mit der Eingangsleitung
gekoppelten dritten Eingangsleitung der zentralen
Interrupt-Steuereinheit empfängt und das erste Interrupt-Signal, das zweite Interrupt-
Signal und das dritte Interrupt-Signal im ersten Betriebsmodus auf die
Vielzahl von Verarbeitungseinheiten (202) aufteilt, und wobei die
zentrale Interrupt-Steuereinheit (220) im ersten Betriebsmodus ein Signal
zum Deaktivieren der Interrupt-Abbildungseinrichtung (915) aktiviert,
und wobei in einem zweiten Betriebsmodus die zentrale Interrupt-
Steuereinheit (202) über die Interrupt-Anforderungsleitung der
Interrupt-Steuereinrichtung ein das erste Interrupt-Signal, das zweite
Interrupt-Signal und das dritte Interrupt-Signal anzeigendes Signal
empfängt.
2. Symmetrisches Multiprozessorsystem nach Anspruch 1, bei dem die
dritte Eingangsleitung ein unbenutzter Interrupt-Eingang der Interrupt-
Steuereinrichtung (915) ist und bei dem während der
Systeminitialisierung ein System-BIOS des symmetrischen Multiprozessorsystems den
unbenutzten Interrupt-Eingang der Interrupt-Steuereinrichtung (915)
identifiziert und das dritte Interrupt-Signal über die Interrupt-Abbildungseinrichtung
(916) zu dem unbenutzten Interrupt-Eingang der
Interrupt-Steuereinrichtung (915) leitet.
3. Symmetrisches Multiprozessorsystem nach Anspruch 1 oder 2, bei dem
der erste Betriebsmodus der zentralen Interrupt-Steuereinheit (220)
und der zweite Betriebsmodus der zentralen Interrupt-Steuereinheit
(220) über ein Bit in einem Konfigurationsregister innerhalb der
zentralen Interrupt-Steuereinheit (220) programmierbar sind.
4. Symmetrisches Multiprozessorsystem nach Anspruch 3, bei dem im
zweiten Betriebsmodus die Interrupt-Steuereinrichtung (915) ein
entsprechendes Interrupt-Signal erzeugt, wenn das erste, zweite bzw.
dritte Interrupt-Signal auf der ersten, zweiten bzw. dritten Eingangsleitung
empfangen wird.
5. Symmetrisches Multiprozessorsystem nach Anspruch 4, bei dem im
zweiten Betriebsmodus das entsprechende Interrupt-Signal nur zu einer
bestimmten Einheit der Vielzahl von Verarbeitungseinheiten (202)
übermittelt wird.
6. Symmetrisches Multiprozessorsystem nach Anspruch 5, bei dem die
bestimmte Verarbeitungseinheit eine Master-Verarbeitungseinheit ist.
7. Symmetrisches Multiprozessorsystem nach Anspruch 1, bei dem die
erste (910), zweite (911) und dritte (907) Peripherieeinrichtung ferner
mit der zentralen Interrupt-Steuereinheit (220) gekoppelt sind.
8. Symmetrisches Multiprozessorsystem nach Anspruch 7, bei dem im
ersten Betriebsmodus die zentrale Interrupt-Steuereinheit (220) das erste,
zweite und dritte Interrupt-Signal verarbeitet und auf eine oder
mehrere der Vielzahl von Verarbeitungseinheiten (202) aufteilt.
9. Symmetrisches Multiprozessorsystem nach einem der vorhergehenden
Ansprüche, bei dem die erste (910) und die zweite (911)
Peripherievorrichtung ISA-Standard-Peripherievorrichtungen sind und die dritte
(907) Peripherievorrichtung eine PCI-Standard-Peripherievorrichtung
ist.
10. Verfahren zum Leiten einer Vielzahl von Interrupt-Signalen in einem
Multiprozessorsystem, gekennzeichnet durch folgende Schritte:
Initialisieren des Multiprozessorsystems in einem Durchgangsmodus
zum Aktivieren einer Interrupt-Abbildungseinrichtung (916), die ein
oder mehrere Interrupt-Signale von einem oder mehreren
Peripherievorrichtungen (907, 910,911) zu einer Interrupt-Steuereinrichtung
(915) leitet;
Übermitteln eines Deaktiviersignals zur Interrupt-Abbildungseinrichtung
(916) und Eintreten in einen nächsten Modus;
Übermitteln eines oder mehrerer Interrupt-Signale von der einen oder
den mehreren Peripherievorrichtungen zu einer zentralen Interrupt-
Steuereinheit (220) unter Umgehung der Interrupt-Steuereinrichtung
(915); und
Aufteilen des einen oder der mehreren Interrupt-Signale von der
zentralen Interrupt-Steuereinheit (220) auf eine oder mehrere der
Vielzahl von Verarbeitungseinheiten (202).
11. Verfahren zum Leiten einer Vielzahl von Interrupt-Signalen in einem
Multiprozessorsystem nach Anspruch 10, bei dem im Initialisierschritt
das Multiprozessorsystem in einem Einzelprozessormodus bootet.
12. Verfahren zum Leiten einer Vielzahl von Interrupt-Signalen in einem
Multiprozessorsystem nach Anspruch 10 oder 11, ferner mit dem Schritt
des Setzens eines Bits innerhalb eines Konfigurationsregisters (504A)
der zentralen Interrupt-Steuereinheit (220).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/408,003 US5721931A (en) | 1995-03-21 | 1995-03-21 | Multiprocessing system employing an adaptive interrupt mapping mechanism and method |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69613423D1 DE69613423D1 (de) | 2001-07-26 |
DE69613423T2 true DE69613423T2 (de) | 2002-05-02 |
Family
ID=23614444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69613423T Expired - Lifetime DE69613423T2 (de) | 1995-03-21 | 1996-03-12 | Unterbrechungssystem in einem Mikroprozessor |
Country Status (6)
Country | Link |
---|---|
US (1) | US5721931A (de) |
EP (1) | EP0737923B1 (de) |
JP (1) | JP3570810B2 (de) |
KR (1) | KR100399385B1 (de) |
AT (1) | ATE202425T1 (de) |
DE (1) | DE69613423T2 (de) |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5944809A (en) * | 1996-08-20 | 1999-08-31 | Compaq Computer Corporation | Method and apparatus for distributing interrupts in a symmetric multiprocessor system |
US6269391B1 (en) * | 1997-02-24 | 2001-07-31 | Novell, Inc. | Multi-processor scheduling kernel |
US5925115A (en) * | 1997-03-10 | 1999-07-20 | Vlsi Technology, Inc. | Method and system for extending interrupt sources and implementing hardware based and software based prioritization of interrupts for an embedded processor |
US6256660B1 (en) * | 1997-04-08 | 2001-07-03 | International Business Machines Corporation | Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts |
JP3008896B2 (ja) * | 1997-06-16 | 2000-02-14 | 日本電気株式会社 | 共有バス型マルチプロセッサシステムの割り込み負荷分散システム |
US6003109A (en) * | 1997-08-15 | 1999-12-14 | Lsi Logic Corporation | Method and apparatus for processing interrupts in a data processing system |
US6219741B1 (en) | 1997-12-10 | 2001-04-17 | Intel Corporation | Transactions supporting interrupt destination redirection and level triggered interrupt semantics |
US6418496B2 (en) * | 1997-12-10 | 2002-07-09 | Intel Corporation | System and apparatus including lowest priority logic to select a processor to receive an interrupt message |
US6571206B1 (en) * | 1998-01-15 | 2003-05-27 | Phoenix Technologies Ltd. | Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment |
US6081861A (en) * | 1998-06-15 | 2000-06-27 | International Business Machines Corporation | PCI migration support of ISA adapters |
US6192439B1 (en) | 1998-08-11 | 2001-02-20 | Hewlett-Packard Company | PCI-compliant interrupt steering architecture |
US6065088A (en) | 1998-08-31 | 2000-05-16 | International Business Machines Corporation | System and method for interrupt command queuing and ordering |
US6701429B1 (en) | 1998-12-03 | 2004-03-02 | Telefonaktiebolaget Lm Ericsson(Publ) | System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location |
US6263395B1 (en) * | 1999-01-06 | 2001-07-17 | Compaq Computer Corp. | System and method for serial interrupt scanning |
US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US20020099893A1 (en) * | 2001-01-24 | 2002-07-25 | Nguyen Tuyet-Huong Thi | System and method for the handling of system management interrupts in a multiprocessor computer system |
US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US6971004B1 (en) * | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US20040111549A1 (en) * | 2002-12-10 | 2004-06-10 | Intel Corporation | Method, system, and program for improved interrupt processing |
US7340740B2 (en) * | 2003-04-22 | 2008-03-04 | International Business Machines Corporation | Cooperatively multitasking in an interrupt free computing environment |
US20040267998A1 (en) * | 2003-06-26 | 2004-12-30 | Zimmer Vincent J | Method to support legacy and native mode interrupts with multiplexed execution of legacy and native interrupt service |
US7584316B2 (en) * | 2003-10-14 | 2009-09-01 | Broadcom Corporation | Packet manager interrupt mapper |
US7028106B2 (en) * | 2003-12-05 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Remapping routing information entries in an expander |
US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US7332976B1 (en) * | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US7162559B1 (en) * | 2005-03-08 | 2007-01-09 | Emc Corporation | System for controlling interrupts between input/output devices and central processing units |
US7904962B1 (en) * | 2005-03-10 | 2011-03-08 | George Mason Intellectual Properties, Inc. | Network attack modeling, analysis, and response |
US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
JP5006526B2 (ja) * | 2005-05-31 | 2012-08-22 | ルネサスエレクトロニクス株式会社 | 割り込み分配装置 |
US20070106827A1 (en) * | 2005-11-08 | 2007-05-10 | Boatright Bryan D | Centralized interrupt controller |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
JP4222370B2 (ja) * | 2006-01-11 | 2009-02-12 | セイコーエプソン株式会社 | デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム |
US8067948B2 (en) * | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US20080082710A1 (en) * | 2006-09-29 | 2008-04-03 | Dell Products L.P. | System and method for managing system management interrupts in a multiprocessor computer system |
US7721034B2 (en) * | 2006-09-29 | 2010-05-18 | Dell Products L.P. | System and method for managing system management interrupts in a multiprocessor computer system |
WO2008066511A1 (en) * | 2006-11-27 | 2008-06-05 | Intel Corporation | Centralized interrupt controller |
DE102007015507B4 (de) * | 2007-03-30 | 2010-09-02 | Advanced Micro Devices, Inc., Sunnyvale | Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US8040266B2 (en) * | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8092083B2 (en) * | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
JP2009251802A (ja) * | 2008-04-03 | 2009-10-29 | Panasonic Corp | マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法 |
US20100088446A1 (en) * | 2008-10-06 | 2010-04-08 | Texas Instruments Incorporated | Prioritizing interrupt controller |
US7849247B2 (en) * | 2008-10-14 | 2010-12-07 | Freescale Semiconductor, Inc. | Interrupt controller for accelerated interrupt handling in a data processing system and method thereof |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US8312195B2 (en) * | 2010-02-18 | 2012-11-13 | Red Hat, Inc. | Managing interrupts using a preferred binding between a device generating interrupts and a CPU |
JP2012009063A (ja) * | 2011-09-05 | 2012-01-12 | Intel Corp | 中央化された割り込みコントローラ |
JP5710712B2 (ja) * | 2013-08-22 | 2015-04-30 | インテル コーポレイション | 中央化された割り込みコントローラ |
US9563588B1 (en) | 2014-01-29 | 2017-02-07 | Google Inc. | OS bypass inter-processor interrupt delivery mechanism |
US9910700B2 (en) * | 2015-08-26 | 2018-03-06 | Netapp, Inc. | Migration between CPU cores |
US10459759B2 (en) | 2015-08-26 | 2019-10-29 | Netapp, Inc. | Migration between CPU cores |
CN111506530A (zh) * | 2019-01-30 | 2020-08-07 | 智原科技股份有限公司 | 中断管理系统及其管理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01255040A (ja) * | 1988-04-04 | 1989-10-11 | Fujitsu Ltd | 割込みマスク回路 |
KR940001878B1 (ko) * | 1990-03-08 | 1994-03-10 | 가부시끼가이샤 히다찌세이사꾸쇼 | 멀티 프로세서시스템 및 인터럽션 제어장치 |
US5125093A (en) * | 1990-08-14 | 1992-06-23 | Nexgen Microsystems | Interrupt control for multiprocessor computer system |
KR930001365B1 (ko) * | 1990-11-30 | 1993-02-27 | 현대전자 산업주식회사 | 콤팩트 디스크 플레이에서의 트랙 점프방법 |
US5506997A (en) * | 1994-01-28 | 1996-04-09 | Compaq Computer Corp. | Device for mapping a set of interrupt signals generated on a first type bus to a set of interrupt signals defined by a second type bus and combing the mapped interrupt signals with a set of interrupt signals of the second type bus |
US5530891A (en) * | 1994-05-31 | 1996-06-25 | Advanced Micro Devices | System management interrupt mechanism within a symmetrical multiprocessing system |
-
1995
- 1995-03-21 US US08/408,003 patent/US5721931A/en not_active Expired - Lifetime
-
1996
- 1996-03-12 DE DE69613423T patent/DE69613423T2/de not_active Expired - Lifetime
- 1996-03-12 EP EP96301674A patent/EP0737923B1/de not_active Expired - Lifetime
- 1996-03-12 AT AT96301674T patent/ATE202425T1/de not_active IP Right Cessation
- 1996-03-19 JP JP06296396A patent/JP3570810B2/ja not_active Expired - Fee Related
- 1996-03-21 KR KR1019960007693A patent/KR100399385B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR960035261A (ko) | 1996-10-24 |
KR100399385B1 (ko) | 2004-02-05 |
JP3570810B2 (ja) | 2004-09-29 |
US5721931A (en) | 1998-02-24 |
DE69613423D1 (de) | 2001-07-26 |
EP0737923A1 (de) | 1996-10-16 |
ATE202425T1 (de) | 2001-07-15 |
EP0737923B1 (de) | 2001-06-20 |
JPH0916533A (ja) | 1997-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69613423T2 (de) | Unterbrechungssystem in einem Mikroprozessor | |
DE69027515T2 (de) | Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung | |
DE69531270T2 (de) | Unterbrechungssteuerungsgeräte in symmetrischen Mehrprozessorsystemen | |
DE69130106T2 (de) | Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher | |
DE69718892T2 (de) | Busarbitrierungsverfahren und -vorrichtung mit gewichteter bandbreitenzuteilung | |
DE69233655T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren | |
DE69729243T2 (de) | Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen | |
DE69021603T2 (de) | Buszugriffsarbitrierung in digitalen Rechnern. | |
DE69529381T2 (de) | Warteschlangen-Arbitrierungsmechanismus für Datenverarbeitungssystem | |
DE3782335T2 (de) | Speichersteuersystem. | |
DE19580707C2 (de) | PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus | |
DE69626231T2 (de) | Bus-Master-Arbitrierungssschaltung mit einer Vielzahl von Arbitern | |
DE69628609T2 (de) | Distribuiertes Pipeline-Busarbitrierungssystem | |
DE69634182T2 (de) | Direktspeicherzugriffssteuerung mit programmierbarer Zeitsteuerung | |
DE3883532T2 (de) | Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus. | |
DE69519926T2 (de) | Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke | |
DE3486299T2 (de) | Bus-Arbitrierungssystem. | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
DE69429279T2 (de) | Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern | |
DE69032481T2 (de) | Buszugriff für Digitalrechnersystem | |
DE3882977T2 (de) | Verfahren und anordnung zur implementierung von mehrverriegelungsanzeigen in einem multiprozessordatenverarbeitungssystem. | |
DE112013001361B4 (de) | System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer | |
DE69701802T2 (de) | Paralleler prozessor mit redundanz von prozessorpaaren und verfahren | |
DE69834519T2 (de) | Bussteuerungssystem und -verfahren | |
DE69424272T2 (de) | Auf Warteschlangen basierender prädiktiver Durchflusssteuerungsmechanismus |
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: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY |