DE69033965T2 - Multiprozessorsystem mit mehrfachen Befehlsquellen - Google Patents
Multiprozessorsystem mit mehrfachen BefehlsquellenInfo
- Publication number
- DE69033965T2 DE69033965T2 DE69033965T DE69033965T DE69033965T2 DE 69033965 T2 DE69033965 T2 DE 69033965T2 DE 69033965 T DE69033965 T DE 69033965T DE 69033965 T DE69033965 T DE 69033965T DE 69033965 T2 DE69033965 T2 DE 69033965T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- instructions
- processing
- trap
- branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims abstract description 111
- 230000015654 memory Effects 0.000 claims description 55
- 238000003780 insertion Methods 0.000 claims description 20
- 230000037431 insertion Effects 0.000 claims description 20
- 230000002093 peripheral effect Effects 0.000 claims description 18
- 238000000034 method Methods 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 9
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 9
- 230000009471 action Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 241000761456 Nops Species 0.000 description 5
- 239000000835 fiber Substances 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000023402 cell communication Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003834 intracellular effect Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
Description
- Die vorliegende Erfindung bezieht sich allgemein auf Datenverarbeitungsverfahren und - vorrichtungen und insbesondere auf digitale Mehrprozessorcomputersysteme, die verteilte Speichersysteme haben.
- Mehrprozessor- bzw. Multiprozessorcomputersysteme stellen mehrere unabhängige zentrale Verarbeitungseinheiten (CPUs) bereit, die kohärent miteinander verbunden werden können. Jüngste Bemühungen auf dem Multiprozessorgebiet haben sich auf Multiprozessorsysteme konzentriert, bei welchen jeder aus einer Mehrzahl von Prozessoren mit einer zugeordneten Speichereinheit mit wahlweisem Zugriff (RAM) oder mit einer Cachespeichereinheit ausgestattet ist. Diese Mehrfachprozessoren kommunizieren typischerweise miteinander über eine gemeinsame Systembusstruktur oder durch Anzeigen bzw. Signalisierung innerhalb eines gemeinsam verwendeten Speicheradreßbereiches. Multiprozessoren, die einen gemeinsamen Bus verwenden, werden als geteilte (gemeinsam verwendete) Bussysteme bezeichnet, während diejenigen, die einen geteilten (gemeinsam verwendeten) Speicherbereich verwenden, als geteilte Adreßraumsysteme bezeichnet werden.
- Um Engpässe in der Übertragung minimal zu machen, verbinden einige verteilte Speichersysteme individuelle Verarbeitungseinheiten mit lokalen Speicherelementen, um halbautonome Verarbeitungszellen zu bilden. Um die Vorteile der Verarbeitung mit mehreren Prozessoren zu erreichen, stellen einige derartige Systeme Zellkommunikationen über eine Verwendung hierarchischer Architekturen bereit. Beispielsweise offenbart das US-Patent Nr. 4,622,631 von Frank et al. ein Mehrprozessorsystem, bei welchem eine Mehrzahl von Prozessoren, die jeweils einen zugeordneten privaten Speicher oder Cache haben, Daten gemeinsam verwenden bzw. teilen, die in einem Hauptspeicherelement enthalten sind. Daten innerhalb des gemeinsamen Speichers sind in Blöcke aufgeteilt, von denen jeder im Besitz von irgendeinem der mehreren Prozessoren oder des Hauptspeichers sein kann. Der aktuelle Besitzer eines Datenblockes wird als derjenige bezeichnet, der die korrekten Daten für diesen Block hat.
- Darüber hinaus sind in den letzten Jahren eine Vielfalt von Verfahren und Vorrichtungen vorgeschlagen oder entwickelt worden, um die Prozessoren eines geteilten Bussystems für mehrere Prozessoren zu verbinden.
- Ein solches Multiprozessorcomputersystem mit geteiltem Bus ist in der Patentanmeldung des Vereinigten Königreiches Nr. 2,178,205 offenbart, welches am 4. Februar 1987 veröffentlicht wurde. Die darin offenbarte Vorrichtung weist mehrere Prozessoren auf, von denen jeder seinen ihm zugeordneten Cachespeicher hat. Die Cachespeicher des Systems sind miteinander über eine geteilte Busstruktur verbunden.
- Gewissen konventionellen geteilten Bussystemen fehlt es jedoch an angemessener Bandbreite, um während Zeiten von hoher Buskonkurrenz bzw. eines starken Busbetriebs mehrere Prozessoren mit kurzen effektiven Zugriffszeiten zu versehen. Auch wenn eine Anzahl von Cacheschemata zum Zwecke der Reduzierung der Buskonkurrenz vorgeschlagen und entwickelt worden sind, ist die Geschwindigkeit und Größe vieler Multiprozessorcomputer dennoch durch Bus-Sättigung begrenzt.
- Darüber hinaus ist die Verarbeitungsgeschwindigkeit einer konventionellen Busstruktur durch die Buslänge eingeschränkt. Insbesondere nimmt, wenn zusätzliche Prozessoren mit einem typischen geteilten Bussystem verbunden werden, die Buslänge ebenso zu wie die Zeit, die für die Signalübertragung und -verarbeitung erforderlich ist.
- Eine andere Klasse von Verbindungssystemen, die als Querbalkennetzwerke (crossbar networks) bekannt sind, vermeiden einige der Einschränkungen konventioneller geteilter Bussysteme. In einem Crossbar-Netzwerk kann jedoch der Pfad, der von einem gegebenen Signal genommen wird, nicht eindeutig angegeben werden. Zusätzlich erhöhen sich die Systemkosten proportional zum Quadrat der Anzahl von miteinander verbundenen Prozessoren. Diese Eigenschaften machen Crossbar-Netzwerke im allgemeinen ungeeignet für Multiprozessorsysteme.
- Die internationale Patentanmeldung WO 84/016 beschreibt eine digitale Verarbeitungsvorrichtung, welche eine Ziel-CPU, einen Datencache, einen Befehlscache und einen Emulatorunterstützungsprozessor (EAP) umfaßt. Wenn ein vorbestimmtes Feld innerhalb des Quellbefehls um einen Schritt weitergeht und auf einen Teil kontrollierter Information aus dem Speicher zugreift, und wenn kontrollierte Information eine Feld-zu-Feld-Zuordnung bezeichnet, so kann eine skelettartige Zielanweisung ausgefüllt werden, indem entweder wahlweise die Felder des Quellbefehls kopiert werden, oder ansonsten dieselben berechnet werden. Wenn die Zuordnung durch einen dazwischengeschalteten unabhängigen Prozessor ausgeführt wird, so erhöht das Überlappen einer solchen Umwandlung den Durchsatz, wobei der unabhängige Prozessor Multifeld-Anweisungen für eine CPU einer ersten Art in Multifeld-Anweisungen für eine CPU einer zweiten Art umwandelt, ohne den logischen Strom oder die Ausführung irgendwelcher Ströme von Source- oder Drain- Targetbefehlen zu unterbrechen.
- Es ist daher eine Aufgabe der Erfindung, Mehrprozessorverfahren und Vorrichtungen bereitzustellen, die flexible Verbindungskonfigurationen haben, welche eine erhöhte Verarbeitungsgeschwindigkeit ermöglichen.
- Gemäß einem ersten Aspekt der Erfindung wird eine digitale Verarbeitungsvorrichtung bereitgestellt, welche einen Satz von miteinander verbundenen Verarbeitungselementen aufweist, wobei der Satz von Verarbeitungselementen ein erstes Verarbeitungselement umfaßt und das erste Verarbeitungselement Vorabheranholeinrichtungen für das Vorabheranholen von Befehlen aus einer ersten Befehlsquelle aufweist, wobei Befehle, die von der ersten Befehlsquelle vorab herangeholt werden, einen Befehlsstrom bilden, und mit einer Ausführungseinrichtung zum Ausführen von Befehlen, wobei zumindest ein anderes der Verarbeitungselemente Eingangs-/Ausgangs-Verarbeitungseinrichtungen für die Verarbeitung von Signalen umfaßt, die von einem Peripheriegerät empfangen und an dieses weitergeleitet wurden, wobei die Eingabe-/Ausgabe-Verarbeitungseinrichtung eine Einfügungseinrichtung aufweist, die Einfügungseinrichtung so betreibbar ist, daß sie auf ausgewählte Signale von dem peripheren Gerät in der Weise reagiert, daß sie Steueranweisungen für direkten Speicherzugriff (DMA) erzeugt und diese DMA-Steueranweisungen als eingefügte Anweisungen bzw. Befehle für das erste Arbeitselement einfügt, damit sie verarbeitet werden, um dadurch zumindest DMA-Übertragungen zu dem peripheren Gerät auszulösen, wobei die Ausführungseinrichtung sowohl die aus der ersten Befehlsquelle vorab herangeholten Befehle bzw. Anweisungen als auch die eingefügten Anweisungen verarbeitet, wobei die Ausführungseinrichtung die eingefügten Anweisungen in derselben Weise ausführt wie die Anweisungen bzw. Befehle, die aus der ersten Befehlsquelle vorab herangeholt werden, ohne die Abfolge derselben zu beeinflussen.
- Gemäß einem zweiten Aspekt der Erfindung wird ein Verfahren zum Betreiben eines digitalen Datenprozessors bereitgestellt, der einen Satz von miteinander verbundenen Verarbeitungselementen umfaßt, wobei das Verfahren die Schritte aufweist, daß ein erstes Verarbeitungselement Befehle in einem Befehlsstrom von einer ersten Befehlsquelle vorab heranholt, zumindest ein weiteres der Verarbeitungselemente Eingabe-/Ausgabe-Verarbeitungseinrichtungen umfaßt, um Signale zu verarbeiten, die von einem peripheren Gerät empfangen wurden und zu einem peripheren Gerät gesendet werden, wobei die Eingabe-/Ausgabe-Verarbeitungseinrichtung eine Einfügungseinrichtung umfaßt, die Einfügungseinrichtung auf ausgewählte Signale von dem peripheren Gerät reagiert, um Steueranweisungen für einen direkten Speicherzugriff (DMA) zu erzeugen und diese DMA- Steueranweisungen als eingefügte Befehle für das erste Verarbeitungselement zuführen, damit sie verarbeitet werden, um dadurch zumindest DMA-Übertragungen zu dem peripheren Gerät auszulösen, wobei das erste Verarbeitungselement sowohl die von der ersten Befehlsquelle vorab herangeholten Befehle als auch die eingefügten Befehle bzw. Anweisungen verarbeitet, wobei die eingefügten Befehle in derselben Art und Weise ausgeführt werden wie die von der ersten Befehlsquelle vorab herangeholten Befehle und ohne deren Abfolge zu beeinflussen.
- Die erste Befehlsquelle kann ein Speicherelement sein, welches ein Befehlscacheelement umfaßt, um digitale Werte zu speichern, die Darstellungen von Befehlen und Programmschritten sind, oder eine Ausführungseinheit (CEU), die Elemente umfaßt, um Signale an das Befehlscacheelement vorzubringen, um zu bewirken, daß Befehle von dem Befehlscacheelement zu der CEU übermittelt werden.
- Eine Ausführungsform der Erfindung kann eine Befehlspipeline umfassen, um die Prozessoren miteinander zu verbinden und um die Befehle zu transportieren. Die Einfügungselemente können die eingefügten Befehle in die Befehlspipeline einfügen.
- Die eingefügten Befehle können dasselbe Format haben wie die Befehle von der ersten Befehlsquelle, einschließlich eines ersten Satzes digitaler Befehlsbits für das Eingeben ausgewählter Adreßsignale sowie eines zweiten Satzes digitaler Befehlsbits für das Spezifizieren ausgewählter Anweisungssignale. Eingefügte Befehle, welche dieses Format haben, können Cacheverwaltungsanweisungen umfassen, die durch das Befehlscacheelement eingefügt werden.
- Die I/O-Prozessoren können eine periphere Schnittstelleneinheit (XIU) für das Kontrollieren bzw. Steuern von Signalen aufweisen, die von einem peripheren Gerät empfangen und durch dieses übermittelt wurden, sie können weiterhin einen Grafikcontroller aufweisen, um Signale zu steuern, die an eine Anzeigeeinrichtung übermittelt werden, und sie können Textsuchelemente aufweisen, um Datenstrukturen zu suchen, die für Text repräsentativ sind.
- Ausgewählte Prozessoren können weiterhin ein Registerelement umfassen, um digitale Datenwerte zu speichern, die Daten darstellen. Nach diesem Aspekt der Erfindung können die Einfügungselemente eingefügte Befehle vorbringen, um eine Verschiebung bzw. Bewegung von Daten in Registerelemente hinein und aus diesen heraus zu kontrollieren, welche den ausgewählten Prozessoren zugeordnet sind.
- Die eingefügten Befehle können so ausgestaltet werden, daß sie eine Ausführung ausgewählter logischer Operationen mit den in den Registerelementen gespeicherten digitalen Werten bewirken.
- Darüber hinaus können die Prozessoren Abfangelemente umfassen, die eine Abfangsequenz in Reaktion auf ein angelegtes Abfangsignal auslösen. Die Einfügungselemente können Elemente für erzeugte eingefügte Befehle umfassen, um das Abfangsignal zu erzeugen und die daraus resultierende Abfangsequenz kann irgendeinen Satz von ausgewählten Programmschritten umfassen. Die Prozessoren können weiterhin Interruptelemente aufweisen, die auf ein Interruptsignal reagieren, um eine Interruptsequenz auszulösen. Diese Interruptsequenz kann analog zu der Abfangsequenz irgendeinen Satz ausgewählter Programmschritte umfassen. Die Einfügungselemente können Elemente beinhalten, um eingefügte Befehle zu erzeugen, die dafür ausgelegt sind, die Interruptsequenz auszulösen, oder um ein Abfangsignal in Reaktion auf ein Interruptsignal zu erzeugen.
- Für ein vollständigeres Verständnis der Art und der Aufgaben der Erfindung wird auf die folgende genaue Beschreibung und die zugehörigen Zeichnungen verwiesen, von denen:
- Fig. 1 ein schematisches Diagramm ist, welches eine Multiprozessorstruktur zeigt, die in Verbindung mit einer bevorzugten Ausführung der Erfindung verwendet wird,
- Fig. 2 ein Blockdiagramm einer beispielhaften Verarbeitungszelle ist, wie sie in Fig. 1 dargestellt ist,
- Fig. 3 eine weitere Ausführungsform einer Verarbeitungszelle zeigt, die gemäß der Erfindung konstruiert ist,
- Fig. 4 Einzeltaktbefehle gemäß der Erfindung zeigt,
- Fig. 5 und 6 Beispiele von Befehlssequenzen zeigen, die Quellregisterbeschränkungen verletzen,
- Fig. 7-10 eine Ressourcenverwendung und einen Zeitablauf für beispielhafte Befehle zeigen,
- Fig. 11 ein Beispiel von überlappenden Befehlen zeigt, die einer Abfangsequenz zugeordnet sind,
- Fig. 12 einen beispielhaften Verzweigungsbefehl gemäß der Erfindung zeigt,
- Fig. 13-19 Beispiele von Programmcode zeigen, welcher Verzweigungsmerkmale gemäß der Erfindung verwendet,
- Fig. 20 ein Beispiel eines Programmcodes für eine Fernausführung zeigt,
- Fig. 21-23 Merkmale von Abfangereignissen, Fehlern und Interrupts gemäß der Erfindung zeigen, und
- Fig. 24-32 Beispiele von Programmcode zeigen, der Abfangsequenzen zugeordnet ist.
- Fig. 1 zeigt eine Multiprozessorstruktur 10, die in Verbindung mit einer Ausführung der Erfindung verwendet werden kann. Eine Struktur dieser Art wird weiterhin beschrieben in dem kanadischen Patent Nr. 1,320,003 desselben Inhabers, das am 8. November 1988 für ein digitales Multiprozessor-Datenverarbeitungssystem eingereicht wurde, welches durch diese Bezugnahme hier einbezogen wird. Die dargestellte Multiprozessorstruktur ist beispielhaft wiedergegeben und die nachstehende Erfindung kann in vorteilhafter Weise in Verbindung mit digitalen Verarbeitungsstrukturen und Systemen ausgeführt werden, die sich von dem in Fig. 1 dargestellten unterscheiden.
- Die dargestellte Multiprozessorstruktur 10 umfaßt drei Informationsübertragungsdomänen: Domäne(0), Domäne(1) und Domäne(2). Jede Informationsübertragungsdomäne umfaßt ein oder mehrere Domänensegmente, die durch ein Buselement und eine Mehrzahl von Zellschnittstellenelementen gekennzeichnet sind. Insbesondere umfaßt die Domäne(0) des dargestellten Systems 10 sechs Segmente, die als 12A, 12B, 12C, 12D, 12E bzw. 12F bezeichnet sind. In ähnlicher Weise umfaßt die Domäne(1) Segmente 14A und 14B, während die Domäne(2) das Segment 16 umfaßt.
- Jedes Segment der Domäne(0), das heißt die Segmente 12A, 12B ... 12F, weist eine Mehrzahl von Verarbeitungssegmenten auf. Beispielsweise umfaßt das Segment 12A, wie es dargestellt ist, die Zellen 18A, 18B und 18C, das Segment 12B umfaßt die Zellen 18D, 18E und 18F usw. Jede dieser Zellen umfaßt eine zentrale Verarbeitungseinheit und ein Speicherelement, die entlang eines intrazellulären Prozessorbusses (nicht dargestellt) miteinander verbunden sind. Gemäß der bevorzugten Ausübung der Erfindung speichert das Speicherelement, welches in jeder der Zellen enthalten ist, alle Steuer- und Datensignale, die durch seine zugehörige zentrale Verarbeitungseinheit verwendet werden.
- Wie weiterhin dargestellt ist, kann jedes Domäne(0)-Segment als eines gekennzeichnet werden, das ein Buselement hat, welches einen Kommunikationspfad für das Übertragen von Information darstellenden Signalen zwischen den Zellen des Segmentes bereitstellt. Demnach wird das dargestellte Segment 12A durch den Bus 20A charakterisiert, das Segment 12B durch 20B, das Segment 12C durch 20C usw. Wie in der kanadischen Patentanmeldung mit der Seriennummer 582,560 desselben Inhabers, die am 8. November 1988 eingereicht wurde und die durch diese Bezugnahme hier einbezogen wird, mit mehr Einzelheiten beschrieben wird, werden Information darstellende Signale zwischen den Zellen 18A, 18B und 18C des beispielhaften Segmentes 12A mit Hilfe der Speicherelemente weitergeleitet, die jeder dieser Zellen zugeordnet sind. Spezielle Schnittstellen zwischen diesen Speicherelementen und dem Bus 20A sind durch Zellschnittstelleneinheiten 22A, 22B und 22C bereitgestellt, wie es dargestellt ist. Ähnliche direkte Kommunikationspfade werden in den Segmenten 12B, 12C und 12D zwischen deren jeweiligen Zellen 18D, 18E ... 18R, wie dargestellt durch Zellschnittstelleneinheiten 22D, 22E ... 22R bereitgestellt.
- Wie in der Darstellung gezeigt und oben erwähnt, umfassen die verbleibenden Informationsübertragungsdomänen, das heißt die Domäne(1) und die Domäne(2) jeweils ein oder mehrere entsprechende Domänensegmente. Die Anzahl von Segmenten in jedem nachfolgenden Segment ist geringer als die Anzahl von Segmenten in dem vorangehenden. Demnach ist die Anzahl der beiden Segmente 14A und 14B der Domäne(1) geringer als die Anzahl der sechs (Segmente) 12A, 12B ... 12F der Domäne(0), wohingegen die Domäne(2) nur das Segment 16 hat und damit die geringste Zahl von allen aufweist. Jedes der Segmente in der Domäne(1) und der Domäne(2), das heißt den "höheren" Domänen umfaßt ein Buselement für das Übertragen von Information darstellenden Signalen innerhalb der jeweiligen Segmente. In der Darstellung umfassen die Segmente 14A und 14B der Domäne(1) Buselemente 24A bzw. 24B, während das Segment 16 der Domäne(2) das Buselement 26 aufweist.
- Die Segmentbusse dienen dazu, Information zwischen den Bauteilelementen jedes Segmentes zu übertragen, das heißt zwischen den mehreren Domänenroutingelementen des Segmentes. Die Routingelemente ihrerseits stellen einen Mechanismus für das Übertragen von Information zwischen zugehörigen Segmenten aufeinanderfolgender Domänen bereit. Die Routingelemente 28A, 28B und 28C stellen beispielsweise eine Einrichtung zum Übertragen von Information zu und von dem Segment 14A der Domäne(1) und jedem der Segmente 12A, 12B bzw. 12C der Domäne(0) bereit. In ähnlicher Weise stellen die Routingelemente 28D, 28E und 28F eine Einrichtung zum Übertragen von Information zu und von dem Segment 14B der Domäne(1) und den Segmenten 12D, 12E bzw. 12F der Domäne(0) bereit. Weiterhin stellen Domänenroutingelemente 30A und 30B einen Informationsübertragungspfad 16 der Domäne(2) und den Segmenten 14A und 14B der Domäne(1) bereit, wie dargestellt.
- Die Domänenroutingelemente bilden eine Schnittstelle für ihre entsprechenden Segmente über Zwischenverbindungen auf den Buselementen. Demnach bildet das Domänenroutingelement 28A eine Schnittstelle für die Buselemente 20A und 24A an den Zellschnittstelleneinheiten 32A bzw. 34A, während das Element 28B eine Schnittstelle für die Buselemente 20B und 24B an den Zellschnittstelleneinheiten 32B bzw. 34B bildet, usw. In ähnlicher Weise bilden die Routingelemente 30A und 30B Schnittstellen zu ihren jeweiligen Bussen, das heißt 24A, 24B und 26 an den Zellschnittstelleneinheiten 36A, 36B, 38A und 38B, wie dargestellt.
- Fig. 1 zeigt weiterhin einen bevorzugten Mechanismus, welcher ferngelegene Domänen und Zellen in einem digitalen Datenverarbeitungssystem verbindet, welches gemäß der Erfindung aufgebaut ist. Die Zelle 18R, die an einem Punkt liegt, der räumlich von dem Bussegment 20F entfernt ist, kann mit diesem Bus und dessen zugeordneten Zellen (18P und 18O) über eine faseroptische Übertragungsleitung verbunden werden, die durch eine gestrichelte Linie angezeigt wird. Eine entfernte Schnittstelleneinheit 19 stellt eine physikalische Schnittstelle zwischen der Zellschnittstelle 22R und der ferngelegenen Zelle 18R her. Die ferngelegene Zelle 18R ist so konstruiert und wird in ähnlicher Weise betrieben wie die anderen dargestellten Zellen und umfaßt eine ferngelegene Schnittstelleneinheit für die Verbindung mit dem faseroptischen Anschluß an ihrem ferngelegenen Erde.
- In ähnlicher Weise können Domänensegmente 12F und 14B über eine faseroptische Verbindung von ihren übergeordneten Segmenten miteinander verbunden werden. Wie gezeigt, weisen die entsprechenden Domänenroutingeinheiten 28F und 30B jeweils zwei in der Ferne miteinander verbundene Teile auf. Bezüglich der Domänenroutingeinheit 28F ist beispielsweise ein erster Teil direkt über einen Standard-Busanschluß mit der Zellschnittstelle 34F des Segmentes 14B verbunden, während ein zweiter Teil direkt mit der Zellschnittstelleneinheit 32F des Segmentes 12F verbunden ist. Diese beiden Teile, die identisch aufgebaut sind, sind miteinander über eine faseroptische Verbindung gekoppelt, die durch eine gestrichelte Linie angezeigt wird. Wie oben wird eine physikalische Schnittstelle zwischen den Teilen der Domänenroutingeinheit und dem faseroptischen Medium durch eine ferngelegene Schnittstelleneinheit (nicht dargestellt) vorgesehen.
- Fig. 2 zeigt eine Ausführungsform der Verarbeitungszellen 18A, 18B ... 18R nach Fig. 1. Die dargestellte Verarbeitungszelle 18A umfaßt eine zentrale Verarbeitungseinheit 58, die mit einer externen Geräteschnittstelle 60, einem Datenuntercache 62 und einem Befehlsuntercache 64 über den Prozessorbus 66 bzw. den Befehlsbus 68 verbunden ist. Die Schnittstelle 60, die Kommunikationen zwischen externen Geräten, z. B. Festplatten, über den externen Gerätebus bereitstellt, ist in konventioneller Art und Weise aufgebaut.
- Der Prozessor 58 kann irgendeiner von mehreren kommerziell verfügbaren Prozessoren sein, beispielsweise der Motorola 68000 CPU, der an Interfaceuntercaches 62 und 64 angepaßt ist und unter der Steuerung einer Untercache-Coausführungseinheit über Daten- und Adreßsteuerleitungen 69A und 69B in konventioneller Art arbeitet und der weiterhin dafür ausgelegt ist, Speicherbefehle auszuführen, wie unten beschrieben wird. Die Verarbeitungszellen sind weiterhin beschrieben in der kanadischen Patentanmeldung 1,320,003 desselben Patentinhabers, eingereicht am 8. November 1988 für ein "Multiprocessor Digital Data Processing System", welche durch diese Bezugnahme hier aufgenommen wird.
- Die Verarbeitungszelle 18A umfaßt weiterhin Datenspeichereinheiten 72A und 72B, die über Cachesteuereinheiten 74A und 74B mit dem Cachebus 76 verbunden sind. Die Cachesteuereinheiten 74C und 74D stellen ihrerseits eine Verbindung zwischen dem Cachebus 76 und den Verarbeitungs- und Datenbussen 66 und 68 bereit. Wie in Fig. 2 angezeigt, stellt der Bus 78 eine Verbindung zwischen dem Cachebus 76 und dem Bussegment 20A der Domäne(0) bereit, welches der dargestellten Zelle zugeordnet ist. Bevorzugte Ausgestaltungen für Cachesteuereinheiten 74A, 74B, 74C und 74D werden in dem am 8. November 1988 eingereichten kanadischen Patent Nr. 1,320,003 mit dem Titel "Multiprocessor Digital Data Processing System" und dem kanadischen Patent 2,019,300, eingereicht am selben Tag wie die vorliegende Anmeldung für ein "Improved Multiprocessor System" diskutiert. Die Lehre beider Anmeldungen wird hier durch die Bezugnahme aufgenommen.
- In einer bevorzugten Ausführungsform umfassen Datencaches 72A und 72B dynamische Direktzugriffsspeicher-Einrichtungen (DRAM), die jeweils in der Lage sind, bis zu 16 MBytes an Daten zu speichern. Die Untercaches 62 und 64 sind statische Direktzugriffsspeichereinrichtungen (SRAM), wobei ersterer in der Lage ist, bis zu 256 KByte an Daten zu speichern und letzterer bis zu 256 KByte an Befehlsinformationen speichern kann. Wie dargestellt, stellen Cache- und Prozessorbusse 76 und 64 Übertragungspfade mit 64 Bit bereit, während der Befehlsbus 68 einen 64-Bit- Übertragungsweg bereitstellt. Eine bevorzugte Konstruktion eines Cachebusses 76 wird in der am 8. November 1988 eingereichten kanadischen Patentanmeldung 1,320,003 mit dem Titel "Multiprocessor Digital Data Processing System" bereitgestellt, welche hier durch die Bezugnahme übernommen wird.
- Die Fachleute auf diesem Gebiet verstehen, daß die dargestellte CPU 58 eine konventionelle, zentrale Verarbeitungseinheit darstellen kann und allgemein jedes Gerät, welches in der Lage ist, Speicheranforderungen auszugeben, z. B. ein I/O-Controller oder ein anderes Verarbeitungselement für einen speziellen Zweck sein kann.
- Die Befehlsausführung einer hier beschriebenen Verarbeitungszelle unterscheidet sich von konventionellen digitalen Verarbeitungssystemen in mehrfacher signifikanter Weise. Die Verarbeitungszelle - beispielsweise 18A - hat mehrere Verarbeitungszellen oder funktionale Einheiten - z. B. 58, 60 -, die Befehle parallel ausführen können. Zusätzlich arbeiten die funktionellen Einheiten nach dem "Pipeline"-Verfahren, um zu ermöglichen, daß mehrere Befehle gleichzeitig fortschreiten, indem ihre Ausführung überlappt. Dieses Pipelining wird noch weiter beschrieben in der kanadischen Patentanmeldung mit der Seriennummer 582,560, die am 8. November 1988 für ein "Multiprocessor Digital Data Processing System" eingereicht wurde, und die hier durch die Bezugnahme übernommen wird. Eine weitere Beschreibung der hier diskutierten Befehle - einschließlich Ladevorgängen (LOADS), Speichervorgängen (STORES), MOVOUT, MOVB, FDIV und andere - kann man in der kanadischen Patentanmeldung 2,019,300 finden, die am selben Tag wie die vorliegende eingereicht wurde und welche hier durch die Bezugnahme aufgenommen wird.
- Eine Verarbeitungszelle einer Ausführungsform der Erfindung führt eine Sequenz von Befehlen aus, die vorab von dem Speicher herangeholt wurden. Der Kontext der Ausführung kann teilweise durch die Architektur definiert werden und teilweise durch Software. Der architektonische Bereich des Ausführungskontexts kann aus einem Kontextadreßspeicherraum, einem Privilegienniveau, allgemeinen Registern und einem Satz von Programmzählern bestehen. Der Kontextadreßraum und das Privilegienniveau legen fest, welche Daten in dem Speichersystem verweisen können. Allgemeine Register, die gemäß einer bekannten Konstruktionspraxis aufgebaut werden können, werden für die Berechnung verwendet. Diese Merkmale werden noch weiter in der kanadischen Anmeldung mit der Seriennummer 582,560 beschrieben, die hier durch die Bezugnahme aufgenommen wird. Die Programmzähler definieren, welcher Teil des Befehlsstroms bereits ausgeführt worden ist und was als nächstes ausgeführt werden wird, wie es nachfolgend noch genauer beschrieben wird.
- Für die Spezifizierung des Zeitablaufs von Befehlen können zwei Zeiteinheiten verwendet werden. Diese Einheiten werden hier als "Takte" bzw. "Zyklen" bezeichnet. Ein Takt ist eine Einheit einer Realzeit, die eine Dauer hat, welche durch die Systemhardware definiert ist. Der Prozessor führt ein Befehfsheranholen mit jedem Zyklus aus. Ein Zyklus benötigt einem Takt, es sei denn, es tritt ein "Anhalten" auf, wobei in diesem Fall ein Zyklus eine größere ganzzahlige Anzahl von Takten umfassen kann. Die Ausführung von Befehlen wird in Bezug auf Zyklen beschrieben und ist datenunabhängig.
- Pipelineabreißen bzw. Pipelinestops können von einer Zusatzlast der Untercache- und Cacheverwaltung herrühren. Die meisten Lade- (LOAD-) und Speicher- (STORE-) Vorgänge laufen ohne einen Halt ab, jedoch kann jeder Lade-, Speicher- oder Speichersteuerbefehl einen Halt verursachen, um zu ermöglichen, daß das System Daten von dem lokalen Cache oder von entfernt gelegenen Zellen wiedergewinnt bzw. heranholt. Diese Verzögerungen werden hier als "Anhalten" bzw. "Stops" bezeichnet. Während eines Stops schreitet die Ausführung anderer Befehle nicht fort und es werden keine neuen Befehle vorab herangeholt. Stops beziehen sich nicht auf den Befehl selbst, sondern auf die Nähe der zugehörigen Daten. Stops werden in Einheiten von Takten gemessen und jeder Stop beträgt eine ganzzahlige Anzahl von Takten. Auch wenn eine CEU stoppen bzw. anhalten kann, während sie Daten von dem lokalen Cache erhält, bleibt das (in Zyklen ausgedrückte) Programmiermodell konstant.
- Wie in Fig. 3 dargestellt, kann eine Verarbeitungszelle 18.1 gemäß der Erfindung vier Verarbeitungselemente aufweisen, die hier auch als "funktionelle Einheiten bezeichnet werden: die CEU 58, die IPU 84, die FPU 82 und die XIU 60. Während Fig. 3 eine Verarbeitungszelle 18.1 zeigt, die vier Verarbeitungselemente hat, erkennen die Fachleute, daß die Erfindung in Verbindung mit einer Verarbeitungszelle ausgeführt werden kann, die mehr oder weniger Verarbeitungselemente hat.
- Insbesondere holt die CEU (zentrale Ausführungseinheit) alle Befehle vorab heran, kontrolliert das Datenheranholen und Speichern (FETCH und STORE, die hier als Lade- und Speichervorgänge bzw. LOADS und STORES bezeichnet werden), steuert den Befehlsstrom (Verzweigungen) und führt arithmetische Operationen aus, die für Adreßberechnungen erforderlich sind. Die IPU (Verarbeitungseinheit für ganze Zahlen) führt ganzzahlige arithmetische und logische Befehle aus. Die FPU (Fließkommaverarbeitungseinheit) führt Fließkommabefehle aus. Die XIU (externe I/O- Einheit ist eine gemeinsame Ausführungseinheit, die die Schnittstelle für externe Geräte bereitstellt. Die XIU führt DMA (direkte Speichervorgänge) und programmierte I/O (Eingaben und Ausgaben) aus und enthält Zeitgeberregister. Sie führt mehrere Befehle aus, um eine programmierte I/O (Eingabe/Ausgabe) zu steuern.
- Die Verarbeitungszelle 18.1 weist demnach einen Satz von miteinander verbundenen Prozessoren 58, 60, 82 und 84 auf, einschließlich einer CEU 58 für die normale Verarbeitung eines Befehlsstromes einschließlich Befehlen aus dem Befehlscache 64. Der Strom bzw. die Kette von Befehlen aus dem Befehlscache 64 wird in Fig. 3 durch gestrichelte Linien 86 angezeigt.
- Wie in Fig. 3 dargestellt, kann zumindest einer der Prozessoren - in dem dargestellten Beispiel die FPU 82 und die XIU 60 - Befehle vorbringen, die hier als "eingefügte Befehle" oder als "Einfügungsbefehle" bezeichnet werden, die durch die CEU 58 ausgeführt werden können. Der Strom von eingefügten Befehlen von der FPU 82 zur CEU 58 wird in Fig. 3 durch gestrichelte Linien 88 angezeigt. In analoger Weise wird die Bewegung von eingefügten Befehlen von der XIU 60 zu der CEU 58 durch gestrichelte Linien 90 angezeigt.
- Darüber hinaus können, wie nachfolgend noch genauer erläutert werden wird, diese eingefügten Befehle durch die CEU in derselben Art und Weise ausgeführt werden wie die Befehle aus dem Befehlscache 64 und ohne die Ausführungsreihenfolge derselben zu beeinflussen. Weiterhin können, wie nachstehend noch erläutert wird, die eingefügten Befehle dasselbe Format haben wie die Befehle aus der ersten Befehlsquelle, einschließlich eines ersten Satzes digitaler Befehlsbits für die Spezifizierung ausgewählter Adreßsignale und eines zweiten Satzes digitaler Befehlsbits für die Spezifizierung von ausgewählten Anweisungssignalen.
- Eingefügte Befehle, welches dieses Format haben, können Cacheverwaltungsbefehle umfassen, die durch den Befehlscache 64 oder durch die Cachesteuereinheit 74D eingefügt werden können, die in Fig. 2 dargestellt sind.
- Während Fig. 3 einen Befehlscache 64 als Quelle von Befehlen zeigt, kann alternativ die Quelle von Befehlen auch ein Prozessor oder eine Ausführungseinheit sein - einschließlich, unter gewissen Umständen, der CEU 58 -, die dafür ausgelegt ist, Signale an das Befehlscacheelement vorzubringen, um zu bewirken, daß Befehle von dem Befehlscacheelement zu der CEU 58 übermittelt werden.
- Wie oben diskutiert, kann die Verarbeitungszelle 18.1 eine Befehlspipeline umfassen, welche einen Befehlsbus 68 für das Verbinden der Prozessoren und zum Ausführen der Befehle aufweist. Die Prozessoren können ihrerseits Hardware- und Softwareelemente beinhalten, um die eingefügten Befehle in die Befehlspipeline einzufügen.
- Die XIU 60, die in Fig. 3 dargestellt ist, kann Eingabe-/Ausgabe- (I/O-) Module für die Handhabung von Signalen 70 beinhalten, die von peripheren Geräten empfangen wurden und an diese gesendet werden, die hier auch als externe Geräte bezeichnet werden. Diese I/O-Module können Elemente für direkten Speicherzugriff (DMA) umfassen, welche auf ausgewählte Signale von einem peripheren Gerät reagieren, um DMA-Befehle einzufügen, die durch die CEU 58 in derselben Art und Weise verarbeitet werden können, wie die Befehle von der ersten Befehlsquelle, ohne die Bearbeitungssequenz derselben zu beeinflussen. Diese Verarbeitungssequenzen werden anschließend noch genauer diskutiert werden. Die XIU 60 kann also Grafiksteuerschaltkreise umfassen, die entsprechend einer bekannten Konstruktionspraxis aufgebaut sind, um Signale zu steuern, die an eine Anzeigeeinrichtung übertragen werden, oder konventionelle Textsuchelemente umfassen, um Datenstrukturen zu suchen, die typisch für Text sind.
- Jeder Prozessor 58, 60, 82, 84, der in Fig. 3 gezeigt ist, kann Register für das Speichern digitaler Werte aufweisen, welche Daten und Prozessorzustände darstellen, und zwar in einer Art und Weise, die anschließend noch genauer erläutert wird. Die eingefügten Befehle steuern die Bewegung von Daten in die Register und aus diesen heraus und bewirken die Ausführung von ausgewählten logischen Operationen mit Werten, die in den Registern gespeichert sind.
- In einer bevorzugten Ausführungsform der Erfindung können die in Fig. 3 gezeigten Prozessoren eine Abfangsequenz in Reaktion auf ein angelegtes Abfangsignal auslösen, wie es nachstehend noch genauer diskutiert wird. Die Abfangsequenz kann ausgelöst werden durch ausgewählte eingefügte Befehle. In analoger Weise können die Prozessoren der Zelle 18.1, die in Fig. 3 gezeigt ist, Elemente für das Initiieren einer Unterbrechungssequenz bzw. Interruptsequenz aufweisen und die eingefügten Befehle können den Eintritt in eine Interruptsequenz bewirken oder ein Abfangsignal in Reaktion auf ein Interruptsignal auslösen. Diese Merkmale der Erfindung, einschließlich spezieller Befehlscodes zum Auslösen von Abfang- und Interruptsequenzen, werden nachstehend erläutert.
- Die vier Funktionseinheiten, die in Fig. 3 dargestellt sind, arbeiten parallel. Die Zellpipeline kann mit jedem Zyklus zwei Befehle abschicken. Einige Befehle, wie z. B. FMAD (Fließkommamultiplikation und -addition) führen mehr als einen Vorgang aus. Andere, wie z. B. LD64 (lade 64 Byte) erzeugen mehr als ein Ergebnis. Jedes kann einen Befehl unabhängig von den anderen ausführen.
- Programmbefehle können in dem Speicher in Befehlspaaren gespeichert werden. Jedes Paar besteht aus einem Befehl für die CEU oder XIU und einem Befehl für die FPU oder IPU. Ersterer wird der CX-Befehl und letzterer wird der FI-Befehl genannt.
- Die CEU kann drei Programmzähler (PCs) haben, die als PC0, PC1 und PC2 bezeichnet werden. PC2 wird hier auch als "Heranhol-PC" bezeichnet. Aus der Sicht des Programmierers führt das Verarbeitungselement das Befehlspaar aus, auf welches durch PC0 gezeigt wird, wird als nächstes das Befehlspaar ausführen, welches durch PC1 bezeichnet wird und wird das Befehlspaar vorab heranholen, welches durch PC2 bezeichnet wird. Wenn ein Befehl abgearbeitet ist, nimmt PC0 den vorherigen Wert von PC1 an, PC1 nimmt den vorherigen Wert von PC2 an und PC2 wird erneuert entsprechend dem soeben ausgeführten CX-Befehl. Wenn dieser Befehl kein Verzweigungsbefehl war oder ein bedingter Verzweigungsbefehl war, dessen Bedingung nicht erfüllt war, so wird PC2 auf den Wert von PC2+8 gesetzt. Wenn dieser Wert nicht im selben Segment wie der vorherige Wert von PC2 liegt, so ist das Ergebnis nicht definiert. Wenn dieser Befehl eine gewählte Verzweigung war, so wird PC2 mit dem Ziel der Verzweigung auf den neuesten Stand gebracht.
- In jedem Zyklus holt der Prozessor logisch das Befehlspaar aus dem Speicher heran, welches durch PC2 bezeichnet wurde, und beginnt mit der Ausführung beider Befehle parallel in dem Paar, welches durch PC0 bezeichnet wurde. Demnach kann ein einzelnes Befehlspaar Arbeit in der CEU und IPU, der CEU und FPU, der XIU und IPU oder der XIU und FPU auslösen. Die Fachleute erkennen, daß, da die Funktionseinheiten nach dem Pipelineverfahren arbeiten, jede Einheit in jedem Zyklus die Ausführung eines neuen Befehls beginnen kann, unabhängig von der Anzahl von Zyklen, die erforderlich sind, um einen Befehl abzuarbeiten. Es gibt jedoch Einschränkungen bezüglich der Verwendung von Prozessorelement- oder Funktionseinheitsressourcen, welche die Anordnung von Befehlen durch den Compiler oder den Programmierer beeinflussen.
- Gewisse Befehle haben Wirkungen auf mehr als eine Einheit. Lade- und Speicherbefehle beispielsweise betreffen die CEU und die Einheit, welche die Quell- oder Zielregister enthält. Der Prozessor kann jedoch ein Laden oder Speichern (LOAD oder STORE) für die FPU oder IPU in demselben Zyklus abschicken, in welchem sie ein Ausführungsbefehl für dieselbe Einheit abschickt.
- Der MOVB- (Verschiebung zwischen Einheiten) Befehl verschiebt Daten zwischen den Registern von zwei Einheiten. Die meisten Datenverschiebungen zwischen Einheiten erfordern einen einzelnen Befehl; das Verschieben von Daten zwischen der FPU und der fPU erfordert die Spezifikation von MOVIN- und MOVOUT-Befehlen in einem einzelnen Befehlspaar.
- Wenn sich der Wert von PC2 verändert, holt der Prozessor dieses Befehlspaar heran. Die Befehle werden in die Prozessorpipeline eingegeben und besetzen Pipelinezustände in der Reihenfolge, in der sie eingetreten sind. Auch wenn ein Befehl nicht aus einer Pipeline entfernt werden kann, so kann er dennoch als "abgelehnt" bzw. "verworfen" markiert werden. Gemäß der Erfindung gibt es zwei Typen des Verwerfens, was hier als "Ergebnisverwerfen" und "Startverwerfen" bezeichnet wird. Das Verwerfen eines Ergebnisses tritt während "Abfangereignissen" auf. Ein Abfangereignis oder auch "Trap" ist eine Betriebssequenz, die durch den Abfangmechanismus ausgelöst wird, der verwendet wird, um im Falle von Interrupts und "Ausnahmen" Steuerung bzw. Kontrolle auf privilegierte Software zu übertragen. Eine Ausnahme, die im folgenden noch genauer beschrieben wird, ist ein Zustand, der auftritt, wenn ein Befehl, der in der FPU oder IPU abläuft, ein "Trap" berichtet und irgendein Betriebsbefehl für dieselbe Einheit in den Zyklen zwischen dem Abschicken und dem aktuellen Zyklus abgeschickt wurde. Eine Ausnahme wird angezeigt, wenn irgendein Fehler als direktes Ergebnis des Vorabheranholens oder Ausführens eines Befehls in dem Befehlsstrom erfaßt wird. Ausnahmen umfassen den Überlauf eines Datentyps, Zugriffsverletzungen, Paritätsfehler und Seitenfehler.
- Ein Abfangereignis kann auf zwei grundlegende Arten ausgelöst werden: durch einen Fehler oder ein Interrupt. Ein Fehler ist explizit mit dem ausführenden Befehlsstrom verbunden. Ein Interrupt ist ein Ereignis in dem System, welches nicht direkt in Beziehung zu dem Befehlsstrom steht. Abfrageereignisse (Traps), Fehler und Interrupts werden nachstehend noch genauer beschrieben.
- Befehle, die zu dem Zeitpunkt eines Traps ausgeführt werden, können im Ergebnis verworfen werden. Ein Befehl, der in seinem Ergebnis verworfen wird, wurde durch die Funktionseinheit abgeschickt und verarbeitet, beeinflußt jedoch nicht das Register oder den Speicherzustand mit Ausnahme der Tatsache, daß er den Zustand in einem oder mehreren speziellen Abfang- Zustandsregistern berichtet, die unten noch beschrieben werden.
- Ein Befehl, der hinsichtlich des Abschickens bzw. Starts verworfen wird, wird in einer Art und Weise gehandhabt, die ähnlich derjenigen ist, welche für no_operation-Befehle (NOP) verwendet wird. Ein startverworfener Befehl kann nur Traps bezüglich des Vorabheranholens dieses Befehls erzeugen. Alle anderen Wirkungen eines hinsichtlich des Starts verworfenen Befehls werden gelöscht. Wenn ein Befehl zu dem Zeitpunkt, wenn er den PC0-Zustand erreicht, startverworfen wird, so wird er nicht gestartet und verwendet keinerlei Ressource, welche normalerweise durch den Befehl verwendet wird. Das Startverwerfen ist mit den drei Ausführungs-PCs verknüpft. Es ist möglich, um in individueller Weise das Startverwerfen für die PC0 CX- und FI-Befehle zu steuern und um das Startverwerfen für das PC1-Befehlspaar zu kontrollieren. Die Systemsoftware und die Hardware können individuell alle drei Steuerungen des Verwerfens ändern. Ein Trap führt zu einem Startverwerfen gewisser Befehle in der Pipeline. Zusätzlich ermöglichen bedingte Verzweigungssysteme es dem Programm, die beiden Befehlspaare zu verwerfen, die in der Pipeline nachfolgen. Dies wird Verzweigungs-Verwerfen genannt und führt dazu, daß der Prozessor die Befehle in der Verzweigungsverzögerung hinsichtlich des Starts verwirft. Diese Merkmale werden nachstehend noch genauer beschrieben.
- Wenn beim Vorabheranholen eines Befehls PC1 nach PC0 kopiert wird, so setzt dies ein Startverwerfen sowohl für die CX- als auch für die FI-Befehle, abhängig von dem alten Start- Verwerfzustand von PC1. Wenn der soeben abgearbeitete CX-Befehl eine bedingte Verzweigung war, welche ein Verzweigungsverwerfen angegeben hat und wenn kein Trap (Abfangereignis) auftrat, so wird das Startverwerfen für PC0 CX und FI und PC1 gesetzt, nachdem die PCs auf den neuesten Stand gebracht wurden. Ein Befehl veranlaßt typischerweise, daß ein Verarbeitungselement einen oder mehrere Quelloperanden liest, sie in einer bestimmten Art und Weise verarbeitet und einen Ergebnisoperanden liefert. Gemäß der Erfindung können "Ausführungsklassen"-Befehle in drei Gruppen klassifiziert werden, und zwar danach, wie sie ihre Operanden lesen und Ergebnisse ausgeben. Die erste Gruppe bewirkt, daß eine Funktionseinheit die Sourceoperanden sofort liest, berechnet und das Ergebnis sofort ausgibt. Das Ergebnis kann von dem nächsten Befehlspaar verwendet werden. Die zweite Gruppe veranlaßt eine Funktionseinheit, daß sie die Quelloperanden sofort liest, berechnet und das Ergebnis nach einer gewissen Verzögerung ausgibt. Das Ergebnis kann durch das N-te Befehlspaar verwendet werden, welches auf den Befehl folgt, wobei N entsprechend dem Befehl variiert. Die dritte Gruppe bewirkt, daß die Funktionseinheit irgendwelche Quelloperanden sofort liest, einen Teil des Ergebnisses berechnet, nach einer gewissen Verzögerung andere Quelloperanden liest und das Ergebnis nach einer gewissen Verzögerung ausgibt. Das Ergebnis kann durch das N-te Befehlspaar verwendet werden, welches auf den Befehl folgt, wobei N entsprechend dem Befehl variiert.
- Lade- und Speicherbefehle haben mehrere signifikante Eigenschaften. Alle Ladeanweisungen verwenden die Quelladresse sofort und liefern eines oder mehrere Ergebnisse nach einer gewissen Verzögerung. Darüber hinaus verwenden alle Ladebefehle ihre CEU-Indexregisterquelle sofort. Wenn in ein CEU- oder XIU-Register gespeichert wird, so wird dieser Wert sofort erhalten. Wenn in ein FPU oder IPU-Register gespeichert wird, so erhält man dieses Ergebnis nach einer gewissen Verzögerung. Der Befehl STORE-64BYTE (ST64) verwendet seine CEU- Indexregisterquelle während der Dauer des Befehls und erhält die verschiedenen FPU- und IPU- Quelldaten nach unterschiedlichen Verzögerungen.
- Bei jedem Zyklus untersuchen die Prozessorelemente und Funktionseinheiten den passenden Befehl des Befehlspaares, der durch den Programmzähler (PC) adressiert wurde. Ein Befehl innerhalb des Befehlspaares kann eine Weisung an eine oder beide entsprechende Einheiten (CEU/XIU oder FPU/IPU) sein, oder zeigt an, daß es für keine der Einheiten eine neue Arbeit gibt. Der letztere Fall wird angezeigt durch Nichthandlungs-Befehlscodierungen, CXNOP und FINOP. Soweit hier verwendet, ist ein Handlungsbefehl ein Befehl, der kein FINOP oder CXNOP ist und der nicht startverworfen ist. Wenn eine Handlungsanweisung vorliegt, setzt die passende Einheit diesen Befehl ab (bzw. in Gang). Wenn die Befehlsausführung vollendet ist, setzt die Funktionseinheit den Befehl "zur Ruhe". Im allgemeinen ist das Ergebnis eines Befehls für das Befehlspaar im Anschluß an das Zur-Ruhe-Setzen des Befehls verfügbar, wie es in Fig. 4 dargestellt ist.
- Fig. 4 zeigt Einzelzyklusbefehle, die hier als ein Befehl definiert werden, der zur Ruhe gesetzt wird, bevor das nächste Befehlspaar für das Starten in Betracht gezogen wird und der eine "Ergebnisverzögerung" von 0 hat. Alle anderen Befehle werden als Mehrzyklusbefehle bezeichnet und haben eine nicht verschwindende Ergebnisverzögerung. Die Ergebnisverzögerung entspricht der Anzahl von Befehlspaaren, die zwischen einem bestimmten Befehl und demjenigen Befehl vorhanden sein müssen, welcher das Ergebnis verwendet. Alle anderen Zeitabläufe werden durch Zyklen von der Absende- bzw. Startzeit des Befehls an ausgedrückt. Der erste Zyklus wird mit 0 numeriert.
- Viele Befehle können Abfangereignisse verwenden, um anzuzeigen, daß der Befehl nicht erfolgreich abgearbeitet wurde. Das hier offenbarte System liefert den Benutzern eine beträchtliche Kontrolle über arithmetische Abfangereignisse bzw. Traps. Andere Traps können durch die Systemsoftware verwendet werden, um Merkmale zu implementieren, wie z. B. einen virtuellen Speicher, wie es in der kanadischen Anmeldung mit der Seriennummer 582,560 beschrieben wurde, die hier durch die Bezugnahme umfaßt wird. Wie nachstehend genauer beschrieben wird, berichten Befehle über Traps an wohldefinierten Trap-Punkten, die in seit dem Abschicken bzw. Starten des Befehls vollendeten Zyklen ausgedrückt werden.
- Jeder Befehl liest seine Quellregister zu einer angegebenen Zeit. Alle Einzelzyklen und viele Multizyklen-Befehle lesen alle ihre Quellen im Zyklus 0 der Ausführung (das heißt mit einer Verzögerung von 0). Bestimmte Multizyklenbefehle lesen eine oder mehrere Quellen zu einem späteren Zeitpunkt.
- Wenn eine Trap auftritt, kann die Software eine Korrekturaktion ausführen (z. B. die Seite verfügbar machen) und den Programmbefehlsstrom des Benutzers erneut starten. Das Programm darf im allgemeinen die Quellregister während der Zeit, während welcher der Befehl durch einen Fehler beeinflußt werden könnte, nicht ändern. Diese Eigenschaft wird als die Quellregisterbeschränkung bezeichnet. Fig. 5 zeigt ein Beispiel einer Befehlssequenz, die diese Beschränkung verletzt.
- Jede Funktionseinheit verwendet einen ausgewählten Satz von Quellregistern. Das CEU {A,B}-Quellregister beispielsweise wird während aller CEU-Befehle verwendet. Es stellt das Indexregister bereit, welches durch ein Laden oder Speichern verwendet wird, wobei die Quelloperanden von Befehlen einer Ausführungsklasse verwendet werden. Das FPU {A,B}-Quellregister wird während FPU-Ausführungsklassenbefehlen verwendet. Es stellt die ersten oder die ersten und zweiten Quelloperanden bereit, die durch Ausführungsklassenbefehle verwendet werden. Die FPU {C}- Quelle wird während FPU-Ausführungsklassen-Triadenbefehlen verwendet. Sie liefert den dritten Operanden, der durch diese Befehle verwendet wird. Sie wird auch verwendet, wenn die CEU auf ein FPU-Register mit einem Befehl vom Speichertyp oder MOVB-Befehl zugreift.
- Zusätzlich wird die IPU {A,B}-Quelle während IPU-Ausführungsklassenbefehlen verwendet. Sie liefert die ersten oder ersten und zweiten Quelloperanden, welche durch Ausführungsklassenbefehle verwendet wurden. Die IPU {C}-Quelle wird verwendet, wenn die CEU auf ein IPU-Register mit einem Befehl vom Speichertyp oder einem MOVB-Befehl zugreift. Die XIU {A,B}-Quelle wird während XIU-Ausführungsklassenbefehlen verwendet. Sie stellt die ersten oder ersten und zweiten Quelloperanden bereit, die durch Ausführungsklassenbefehle verwendet werden. Sie wird auch verwendet, wenn die CEU auf ein XIU-Register mit einem Befehl der Speicherklasse oder einem MOVB-Befehl zugreift.
- Wie oben beschrieben, hat jeder Befehl, der ein Ergebnis erzeugt, eine Ergebnisverzögerung, welche angibt, wie viele Zyklen vergehen, bevor das Ergebnis verfügbar ist. Während der Ergebnisverzögerung sind die Ergebnisregister undefiniert. Programme können sich während der Ergebnisverzögerung dieses Befehls nicht auf den alten Wert eines Ergebnisregisters eines Befehls verlassen. Dies wird die Ergebnisregisterbeschränkung genannt. Wenn eine Ausnahme auftritt, so läßt man alle gestarteten Befehle abarbeiten, bevor die Systemsoftwarebehandlungsroutine aufgerufen wird. Demnach ist es möglich, daß das Ergebnis eines Mehrzyklusbefehls ausgegeben wird, bevor die definierte Ergebnisverzögerung abgelaufen ist. Ein Befehl, welcher das Ergebnisregister eines Mehrzyklusbefehls während der Ergebnisverzögerung dieses Befehls verwendet, erhält in unbestimmter Weise einen der (zumindest zwei) Werte dieses Registers. Fig. 6 zeigt eine Sequenz, welche diese Beschränkung verletzt. Der FNEG-Befehl versucht, den Wert zu verwenden, den %f2 vor dem FADD-Befehl hatte. Der FADD-Befehl beschreibt %f2 zeitgerecht, damit der FSUB-Befehl ihn lesen kann. Wenn der LD8-Befehl einen Seitenfehler bekommt oder wenn ein Interrupt angezeigt wird, bevor FNEG herangeholt wird, wird FADD vollendet, bevor FNEG abgeschickt wird. Dieses Programm erzeugt daher nicht vorhersehbare Ergebnisse.
- Jede der Funktionseinheiten hat eine Zahl interner Ressourcen, die verwendet werden, um Befehle auszuführen. Diese Ressourcen arbeiten möglicherweise zu einem gegebenen Zeitpunkt nur für einen Befehl. Zu jedem Zeitpunkt muß jede Ressource entweder frei (im Leerlauf) oder durch höchstens einen Befehl in Gebrauch sein. Dies wird die Ressourcenbeschränkung genannt. Verschiedene Funktionseinheiten können Verletzungen der Ressourcenbeschränkung erfassen und ein Abfangen (ein Trap) veranlassen.
- Die CEU hat nur eine Ressource, die Konflikten ausgesetzt ist. Dies ist die Lade- /Speicherressource, die durch alle LOAD-, STORE-, MOVB-, MOVOUT-Befehle und Speichersystembefehle verwendet wird. Alle Befehle mit Ausnahme von LD64 und ST64 (lade und speichere 64 Bytes) verwenden diese Ressource nur während ihres dritten Zyklus (das heißt mit einer Verzögerung von 2). Die LD64- und ST64-Befehle verwenden die Lade-/Speicherressource während des dritten bis neunten Zyklus (Verzögerung von 2-8). Die Ressourcenverwendung von LD- und MOVB- Befehlen wird in Fig. 7 dargestellt, während Fig. 8 die Ressourcenverwendung zeigt. Der zeitliche Ablauf eines LD64-Befehls wird in Fig. 9 wiedergegeben und der eines ST64-Befehls wird in Fig. 10 wiedergegeben.
- Die IPU-Ressourcen umfassen eine Multiplizierer-Ressource, die durch die MUL- und MULH-Befehle verwendet wird. Ressourcen, die zu der FPU gehören, umfassen Ergebnis-, Dividier- ,Addier- und Multiplizier-Ressourcen. Die Ergebnisressource wird durch alle FX-Befehle verwendet, um Ergebnisse in Registern abzulegen. Diese Ressource wird nicht durch gewisse CX-Befehle verwendet - LD, ST, LD64, ST64, MOVOUT und MOVB -, die mit FPU-Registern arbeiten. Sie wird durch MOVIN für %f-Register verwendet.
- Die IPU-Dividierer-Ressource wird in FDIV-Befehlen benutzt, die IPU-Addier-Ressource wird in vielen Fließkommaberechnungsbefehlen verwendet und die IPU-Multiplizierer-Ressource wird in vielen Fließkommaberechnungsbefehlen verwendet. In der XIU sind keine Ressourcenkonflikte möglich.
- In der Beschreibung von Befehlen, die hier gegeben wird und in der gleichzeitig anhängigen europäischen Anmeldung EP-A-0 404 560, wird die Ressourcenverwendung durch Angabe des Namens der Ressource, die Anzahl von Zyklen der Verzögerung vor der Verwendung der Ressource und dann die Anzahl der Zyklen, während welcher sie verwendet wird, in einem Tabellenformat spezifiziert. Demnach würde der Zeitablauf eines LD-Befehls folgendermaßen beschrieben werden:
- Der Zeitablauf für Quellen ist ein Triple, welches [Verzögerung, Zyklen, Quellbeschränkung] angibt. "Verzögerung" ist die Anzahl von Zyklen, bis die Ressourcen verwendet werden, sie wird von 0 an gezählt, beginnend mit dem Abschicken des Befehls. "Zyklen" ist die Anzahl von Zyklen, während welcher die Quelle verwendet wird, nachdem die Verzögerung abgelaufen ist. "Quellbeschränkung" ist die Anzahl von Zyklen, während welcher die Quelle nicht geändert werden sollte, gezählt, nachdem die Verzögerung abgelaufen ist. "Ergebnisverzögerung" ist die Anzahl von Befehlen, die zwischen dem Befehlspaar und dem ersten Befehl, der auf das Ergebnis Bezug nimmt, auftreten müssen.
- Da einige Befehle es erfordern, daß mehrere Zyklen abgearbeitet werden oder einen Ausnahmezustand berichten, hält die CPU einen gemeinsamen Ausführungs-PC für die FPU und für die IPU bereit. Wenn eine Ausnahme auftritt, so muß möglicherweise die Trap-Handhabungsroutine den PC für die gemeinsame Ausführung untersuchen, um die aktuelle Adresse des fehlerhaften Befehls zu bestimmen, wie es später noch genauer beschrieben wird. Die CEU führt eine ähnliche Funktion mit Befehlen vom Lade-/Speichertyp aus, so daß Ausnahmen eines ST64-Befehls aufgelöst werden können.
- Wenn ein Befehl abgefangen bzw. abgeleitet wird (Trap), darf es für dieselbe Einheit keine Handlungsbefehle in den Befehlsabschnitten zwischen dem enthaltenden Befehlspaar und dem Befehlspaar geben, wo über das Trap berichtet wurde. Dies wird die Trap-PC-Beschränkung genannt. Es ist möglich, einen Handlungsbefehl in dem Befehlspaar anzuordnen, wo über das Trap berichtet wird oder in irgendeinem Befehlspaar danach. Die Anwendung dieser Beschränkung hängt von den Erfordernissen des Betriebssystems und der Benutzeranwendung ab.
- Diese Codierungspraktiken stellen sicher, daß eine Befehlssequenz deterministische Ergebnisse erzeugt und daß irgendeine Ausnahme, die auftritt, durch die Systemsoftware aufgelöst oder an das Benutzerprogramm für eine Analyse weitergeleitet wird. In allen Fällen ist es möglich, exakt zu bestimmen, welche Vorgänge gerade abliefen, um einen temporären Zustand, wie z. B. eine fehlende Seite, zu korrigieren, Daten zu ändern und schließlich die Berechnung erneut zu beginnen. Das Programm darf nicht die Ergebnisregisterbeschränkung oder irgendeine Quell- bzw. Ressourcenbeschränkung aufheben. Das Programm kann sicherstellen, daß datenabhängige Fehler während FI-Befehlen nicht auftreten, entweder weil es die Daten kennt oder durch Verwendung des Modifizierers für den no trap-Befehl. In letzterem Fall kann das Programm entscheiden, ob unterschiedliche Zustandscodes zu untersuchen (wie z. B. @IOV), um festzustellen, ob ein arithmetischer Fehler aufgetreten ist oder nicht. Wenn keine Fehler auftreten können, so ist es möglich, die Quellregisterbeschränkung zu verletzen und die Trap-PC-Beschränkung für FI-Anweisungen zu verletzen. Es ist auch möglich, diese Beschränkung selbst dann zu verletzen, wenn Traps auftreten, sofern eine genaue Kenntnis des Trap-Befehls nicht erforderlich ist. Ob die CEU-Quellregisterbeschränkung verletzt wird oder nicht, hängt von der Systemsoftware ab, jedoch garantieren typische Implementierungen nicht die Ergebnisse solcher Verletzungen. Fig. 11 zeigt ein Beispiel überlappender Befehle, die den Regeln für exakte Traps gehorchen.
- Wie oben beschrieben, hat die CEU drei PCs, die den aktuellen Befehlsstrom definieren. Ein Verzweigungsbefehl verändert den Vorabheranhol-PC (PC2) auf den Zielwert der Verzweigung. Ein Verzweigungsbefehl kann eine bedingte Verzweigung (B**-Befehl), ein unbedingter Sprung (JMP- oder RTT-Befehl) oder ein unbedingter Unterprogrammsprung (JSR-Befehl) sein. Bedingte Verzweigungen ermöglichen es dem Programm, zwei CEU-Register oder ein CEU-Register und eine Konstante zu vergleichen oder einen CEU-Bedingungscode zu untersuchen. Der Vorabheranhol-PC wird geändert, wenn die Verzweigungsbedingung erfüllt ist und wird einfach um einen Schritt heraufgesetzt, wenn der Verzweigungszustand nicht erfüllt ist.
- Um die durch ein Programm ausgeführten Befehlspaare zu verfolgen, ist es notwendig, die Werte der drei PCs zu verfolgen, während das Programm fortschreitet. Ein Programm kann Verzweigungsbefehle in einer Verzweigungsverzögerung spezifizieren. Diese Technik wird hier als Fernbefehlsausführung bezeichnet, und sie wird nachstehend genauer beschrieben. Jeder JMP-, JSR- oder RTT-Befehl, welcher den Segmentabschnitt von PC2 beträchtlich verändert, hat möglicherweise keine "PC-verwandte" Verzweigung in dieser Verzweigungsverzögerung. Eine PCverwandte Verzweigung wird definiert als irgendeine bedingte Verzweigung oder unbedingte Verzweigung, welche den Programmzähler an seinem Indexregister spezifiziert.
- Auf eine Verzweigung folgen immer zwei Befehle in der Prozessorpipeline. Diese Befehle werden Verzweigungsverzögerungsbefehle genannt. Die Verzweigungsverzögerung ist tatsächlich ein besonderer Fall der Ergebnisregisterverzögerung, wobei das Ergebnisregister einer Verzweigung zufällig PC0 ist. Für unbedingte Verzweigungen werden diese Befehle immer ausgeführt. Für bedingte Verzweigungen wird ihre Ausführung durch die Option des Verzweigungsverwerfens des Verzweigungsbefehls geregelt. Da Verzweigungsbefehle in den Verzweigungsverzögerungs-Slots bzw. -positionen einer anderen Verzweigung auftreten können, bedeutet die Steuerung durch die Option des Verzweigungs-Verwerfens nicht notwendigerweise, daß die beiden Befehlspaare, die der Reihe nach auf eine Verzweigung in dem Programmspeicher folgen, herangeholt oder ausgeführt werden.
- Diese Eigenschaft wird unten noch genauer erläutert.
- Es gibt keine Quellregistereinschränkung, Verzweigungsregistereinschränkung oder Ressourceneinschränkung für Verzweigungsbefehle. Dies liegt daran, daß der Heranhol-PC durch die Verzweigungsanweisung verändert wird, und da jede Ausnahme, welche sich auf den neuen Vorabheranhol-PC bezieht, zu demjenigen Zeitpunkt berichtet wird, zu welchem der Wert bei PC0 angekommen ist und das Befehlspaar wird abgeschickt. Für eine optimale Leistungsfähigkeit können Verzweigungsverzögerungen mit Befehlen gefüllt werden, die logisch vor die Verzweigung gehören, jedoch die Verzweigung selbst nicht beeinflussen noch durch diese beeinflußt werden. Wenn keine solchen Befehle verfügbar sind, können die Verzögerungsabschnitte mit NOPS gefüllt werden.
- Ein typischer Verzweigungsbefehl ist in Fig. 12 wiedergegeben. Der JMP-Befehl wird gemeinsam mit seinem Partner vorabherangeholt. Der Partner beginnt die Ausführung. Die beiden Verzögerungspaare werden dann vorabherangeholt und beginnen die Ausführung. Dann wird das Befehlspaar an der Zieladresse vorabherangeholt und ausgeführt.
- Der Programmierer oder der Compiler können die Verzweigungsverzögerung eines unbedingten Verzweigungsbefehls mit Befehlen ausfüllen, die der Verzweigung selbst vorangehen oder folgen. Die Verzweigungsverzögerung von bedingten Verzweigungen ist möglicherweise schwerer zu füllen. Im besten Fall können Befehle, die der Verzweigung vorangehen, in die Verzweigungsverzögerung eingesetzt werden. Diese müssen unabhängig davon ausgeführt werden, ob die Verzweigung ausgeführt wird oder nicht. Jedoch sind Befehle von der Stelle vor der Verzweigung nicht immer für ein Verschieben in die Verzweigungsverzögerung verfügbar. Das Füllen der Verzweigungsverzögerung bedingter Verzweigungen wird durch das Verzweigungsverwerfen vereinfacht. Insbesondere ermöglichen es bedingte Verzweigungsbefehle dem Programmierer, anzugeben, ob die Verzweigungsverzögerungsbefehle auf der Basis des Ergebnisses der Verzweigungsentscheidung ausgeführt werden sollen. Der Verzweigungsbefehl kann ein Verwerten bei Erfüllung spezifizieren, wenn die Befehle dann verzweigungsverworfen werden sollen, wenn die Verzweigung genommen wird, oder ein Verwerfen bei Nichterfüllung, wenn sie "verzweigungsverworfen" werden sollen, wenn die Verzweigung nicht genommen wird und sie kann ein "niemals verwerfen" setzen, wenn die Befehle immer ausgeführt werden sollen. Die Mnemonik der bedingten Assemblerverzweigung verwendet die Buchstaben QT, QF bzw. QN, um anzuzeigen, welche Semantik der Verzweigungsverwerfung erforderlich ist. Die Verzweigungsverwerfung resultiert in einem Startverwerfen, wenn die Befehle in der Verzweigungsverzögerung bei PC0 und PC1 ankommen.
- Wenn Befehle vor der Verzweigung in der Verzweigungsverzögerung verwendet werden sollen, wird ein "niemals verwerfen" angegeben. Wenn derartige Befehle nicht verfügbar sind, kann der Programmierer die Verzögerung mit Befehlen aus der Zielstrecke füllen und das Verwerfen bei Nichterfüllung auswählen oder von unterhalb der Verzweigung auswählen und das Verwerfen bei Erfüllung auswählen. Die Entscheidung, aus welcher Quelle aufgefüllt wird, hängt davon ab, welche Befehle einfach verschoben werden können, und von der Vorhersage zum Zeitpunkt der Codeerzeugung, ob die Verzweigung wahrscheinlich genommen wird. Beispiele sind in den Fig. 13-19 dargestellt.
- Die Fig. 13-15 zeigen ein Beispiel einer aufgefüllten Verzweigungsverzögerung. In diesem Beispiel wird Code aus einer Position vor einer Verzweigung in die Verzweigungsverzögerung verschoben, so daß dadurch zwei NOPS aus dem Befehlsstrom entfernt werden. Insbesondere zeigt Fig. 13 die Originalcodesequenz mit NOPS in der Verzweigungsverzögerung. Die ausgeführten Befehle sind FI_INSA0/CX_INSA0, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, FI_INSA3/jmp, FI_NOP/CXNOP, FI_NOP/CXNOP, FI_INSB4/CX_INSB4, FI_INSB5/CX_INSB5. Diese Sequenz führt zur Verschwendung zweier Zyklen.
- Alternativ kann die optimierte Codesequenz mit eingefüllter Verzweigungsverzögerung verwendet werden, wie sie in Fig. 14 dargestellt ist. Wie dort dargestellt, werden die Befehle FI_INSA1/CX_INSA1 und FI_INSA2/CX_INSA2 in die Verzweigungsverzögerung verschoben, was zwei Befehlszyklen einspart. Die ausgeführten Befehle sind FI_INSA0/CX_INSA0, FI_INSA3/jmp, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, FI_INSB4/CX_INSB4, FI_INSB5/CX_INSB5, was dazu führt, daß keine Zyklen verschwendet werden. Es ist außerdem möglich, die FI-Befehle unabhängig von der Neuanordnung der CX-Befehle anzuordnen, wie es in Fig. 15 dargestellt ist.
- Gewisse Programmierkonstruktionen, wie z. B. die Schleife, machen es wahrscheinlich, daß eine Verzweigung genommen wird. Wenn die Verzweigung sehr wahrscheinlich genommen wird, können die beiden ersten Befehle aus dem Zielzweig in der Verzweigungsverzögerung angeordnet werden. Das Verzweigungsverwerfen bei Nichterfüllung wird verwendet, um korrekte Ergebnisse zu erzeugen für den Fall, daß die Verzweigung nicht genommen werden soll. Wenn die Verzweigung in der Tat genommen wird, bleiben die Befehlszyklen erhalten. Wenn nicht, werden die Zyklen verzweigungsverworfen und auf diese Weise wird die Korrektheit des Programms erhalten. Fig. 16 zeigt eine Codesequenz, die NOPS in einer Verzweigungsverzögerung verwendet, während Fig. 17 eine optimierte Codesequenz mit Zielzweigbefehlen in der Verzweigungsverzögerung und Verzweigungsverwerfen zeigt. Gemäß Fig. 16 sind die ausgeführten Befehle, falls die Verzweigung nicht genommen wird, FI_INSA0/CX_INSA0, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, ..., FI_INSA7/CBR.QN, FINOP/CXNOP, FINOP/CXNOP, FI_INSC0/CX_INSC0, was zu zwei verschwendeten Zyklen führt. Wenn die Verzweigung genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, FI_INSA7/CBR.QN, FINOP/CXNOP, FINOP/CXNOP, FI_INSC0/CX_INSC0, was zu zwei verschwendeten Zyklen führt.
- Fig. 17 zeigt, daß für das Auffüllen der Verzweigungsverzögerung der Benutzer die beiden Befehlen FI_INSA0/CX_INSA0 und FI_INSA1/CX_INSA1 in die Verzweigungsverzögerung kopieren kann und das Verzweigungsverwerfen bei Nichterfüllung auswählen kann (wenn die Verzweigung genommen wird) und den Zielzweig einstellen. Wenn die Verzweigung nicht genommen wird, so sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, ..., FI_INSA7/CBR.QF verzweigungsverworfen, verzweigungsverworfen, FI_INSC0/CX_INSC0, was zu zwei verschwendeten Zyklen führt. Wenn die Verzweigung genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CX_INSA1, FI_INSA2/CX_INSA2, ..., FI_INSA7/CBR.QF, FI_INSA0.1/CX_INSA0.1, FI_INSA1/CX_INSA1.1, FI_INSA2/CX_INSA2, so daß im wahrscheinlichsten Fall keine Zyklen verschwendet werden.
- In einigen Programmen werden gewisse Verzweigungen mit größter Wahrscheinlichkeit übersprungen bzw. nicht genommen. Eine derartige Verzweigung ist ein Test einer sehr selten eintretenden Bedingung, wie z. B. der arithmetische Überlauf. Wenn die Verzweigung sehr wahrscheinlich übersprungen wird, so können die ersten beiden Befehle nach der Verzweigung in die Verzweigungsverzögerung eingesetzt werden. Es wird das Verzweigungsverwerfen bei Erfüllung verwendet, um korrekte Ergebnisse zu erzeugen, falls die Verzweigung genommen werden sollte. Wenn die Verzweigung in der Tat nicht genommen wird, werden zwei Befehlszyklen eingespart. Falls dies nicht eintritt, werden die beiden Zyklen verzweigungsverworfen und die Ausführungszeit wird nicht verbessert. Ein entsprechendes Beispiel ist in den Fig. 18 und 19 dargestellt.
- Fig. 18 ist eine Codesequenz, welche NOPS in der Verzweigungsverzögerung hat. Wenn die Verzweigung nicht genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CBR.QN, FINOP/CXNOP, FINOP/CXNOP, FI_INSB0/CX_INSB0, FI_INSB1/CX_INSB1, FI_INSB2/CX_INSB2, was zu zwei verschwendeten Zyklen führt. Falls die Verzweigung genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CBR.QN, FINOP/CXNOP, FINOP/CXNOP, FI_INSC0/CX_INSC0, FI_INSC1/CX_INSC1, FI_INSC2/CX_INSC2, was zu zwei verschwendeten Zyklen führt.
- Fig. 19 zeigt eine optimierte Codesequenz mit nach der Verzweigung liegenden Befehlen in der Verzweigungsverzögerung und Verzweigungsverwerfen. Wie in Fig. 19 dargestellt, kann der Benutzer für das Auffüllen der Verzweigungsverzögerung die Befehle INSA1 und INSA2 in die Verzweigungsverzögerung verschieben und das Verzweigungsverwerfen bei Erfüllung wählen, was zwei Befehlszyklen einspart, wenn die Verzweigung tatsächlich nicht genommen wird. Wenn die Verzweigung genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CBR.QT, verzweigungsverworfen, verzweigungsverworfen, FI_INSC0/CX_INSC0, FI_INSC1/CX_INSC1, FI_INSC2/CX_INSC2, was zu zwei verschwendeten Zyklen führt. Wenn die Verzweigung nicht genommen wird, sind die ausgeführten Befehle FI_INSA0/CX_INSA0, FI_INSA1/CBR.QT, FI_INSB0/CX_INSB0, FI_INSB1/CX_INSB1, FI_INSB2/CX_INSB2, so daß es in dem wahrscheinlichsten Fall keine verschwendeten Zyklen gibt.
- Wegen der zum Bestimmen des Befehlsstroms verwendeten drei PCs ist es möglich, ein oder zwei Befehle "aus der Ferne auszuführen", die nicht mit dem linearen Strom eines Programms verknüpft sind. Diese Vorgänge können mit der Art einer Sequenz ausgeführt werden, wie sie in Fig. 20 dargestellt ist. Die Programmsequenz gemäß Fig. 20 führt das Befehlspaar an den Adressen 000, 008, 010, 100, 018, 020 usw. aus. Indem der JMP von der Adresse 008 zu der Adresse 0 · 10 verschoben wird, werden zwei entfernt gelegene Befehlspaare (bei 100 und 108) ausgeführt. Diese besonderen Sequenzen unterstützen nicht Fernbefehle, die Verzweigungen als CX-Befehle enthalten.
- Die Übermittlung von Interrupts und DMA fügt Befehle in die Prozessorpipeline zwischen aufeinanderfolgenden Befehlen des Befehlsstromes ein. Diese Befehle werden hier als Einfügungsbefehle bezeichnet. Die CEU kontrolliert das "Recht", Befehle einzufügen, und ignoriert oder verwirft gelegentlich einen Einfügungsbefehl.
- Die Architektur ermöglicht, daß irgendein beliebiger Befehl eingefügt wird, jedoch können die Funktionseinheiten so ausgelegt sein, daß nur ein begrenzter Teil des Befehlssatzes verwendet wird. Diese Einfügungsbefehle verändern die PCs nicht. Einfügungsbefehle verwenden Zyklen und ermöglichen es, daß die Pipelines aller Verarbeitungselemente oder Funktionseinheiten fortschreiten, genau wie es ein gewöhnlicher Befehl tut.
- Der Effekt von Einfügungsbefehlen auf das Programmiermodell besteht darin, daß ein Einfügungsbefehl bewirken kann, daß ein Ergebnis früher als erwartet erscheint. Dies liegt daran, daß der Einfügungsbefehl eine physikalische Pipelinestufe besitzt und daß ein versteckter Zyklus erscheint. Wenn das Programm das Ergebnisregisterbeschränkung erfolgt, so gibt es keine Änderung in der logischen Ausführung des Programms, nur hinsichtlich der erforderlichen Zeit, um es auszuführen. Einfügungsbefehle können nicht durch den Zustand des Verzweigungsverwerfens und des Startverwerfens verworfen werden, der zu der logischen Pipeline (PC0, PC1, PC2) gehören, sie können jedoch hinsichtlich ihres Ergebnisses verworfen werden oder im Falle einer Ausnahme in der physikalischen Pipeline absendeverworfen werden.
- Die folgenden Beispiele zeigen, wie die CCU und XIU eingefügte Befehle verwenden können, was noch weiter in dem gleichzeitig eingereichten Anhang beschrieben wird. Die XADDR-, XCACHE-, XNOP- und XDATA-Befehle und die Unterseiten, Unterblock und andere Speichervorgänge, die in den folgenden Beispielen dargestellt werden, werden weiterhin in dem kanadischen Patent 2,019,300 beschrieben, welches gleichzeitig mit dem vorliegenden eingereicht wurde, sowie in dem kanadischen Patent 1,320,003, die hier beide durch die Bezugnahme einbezogen werden. Die CCUs und die XIU führen den CX-Abschnitt eines Befehlspaares zu und die CEU führt logisch einen FINOP-Befehl zu. Die CCUs und die XIU handhaben die Prozessorbusse zum selben Zeitpunkt, zu welchem sie einen Befehl einfügen, um die Operanden des Befehls zuzuführen. Die CCU und die XIU fügen zwei oder mehr zusammenhängende Befehle ein.
- xaddr
- xaddr
- xnop
- xcache
- xcache
- xaddr
- xnop
- xnop
- xdata
- xaddr
- xaddr
- xnop
- xdata
- xdata
- xaddr
- xaddr
- xnop
- xdata
- xnop
- xnop
- xnop
- xnop
- xnop
- xnop
- xnop
- xtrap
- xnop
- Die Einfügungsbefehle können als Teil eines Programms durch Diagnosesoftware codiert werden. In einer bevorzugten Ausführungsform der Erfindung implementiert die CEU den FI-Befehl, welcher den CX-Befehl begleitet. Das Programm muß einen speziellen Vorgang auslösen, um je nach Erfordernis Daten zuzuführen oder zu extrahieren. Dies kann beispielsweise bewerkstelligt werden durch Verwendung von MOVIN- oder MOVOUT-Befehlen.
- In einer bevorzugten Ausführungsform der Erfindung wird ein Trap-Mechanismus verwendet, um für den Fall von Interrupts und Ausnahmen die Steuerung auf privilegierte Software zu übertragen. Die Taxonomie von Traps ist in Fig. 21 wiedergegeben. Wie dort dargestellt, kann ein Trap auf zwei grundlegenden Wegen ausgelöst werden: durch einen Fehler oder durch einen Interrupt. Ein Fehler ist explizit mit dem ausgeführten Befehlsstrom verbunden und tritt auf, wenn bestimmte Kombinationen von Daten, Zuständen und einem Befehl auftreten. Ein Interrupt ist ein Ereignis in dem System, das nicht direkt in Beziehung zu dem Befehlsstrom steht.
- Fehler werden weiterhin klassifiziert in Softwarefehler bzw. Hardwarefehler. Softwarefehler sind diejenigen Fehler, die Teil der erwarteten Ausführung des Programms sind und die durch Anwender- oder Systemsoftware als Teil der Implementierung eines Berechnungsmodells verursacht sein können. Hardwarefehler können auftreten, wenn unerwartete Fehler durch die Hardware erfaßt werden, während sie arbeitet. Vorzugsweise handhabt der Prozessor Fehler sofort, jedoch kann er manchmal auch von der Handhabung von Interrupts absehen.
- Die wichtigste Eigenschaft der Trap-Sequenz ist ihre Fähigkeit, eine Ausführung auszusetzen und den Ausführungszustand des Prozessors zu erhalten, so daß die Software die Ausführung in einer Art und Weise wieder beginnen kann, die transparent - das heißt "unsichtbar" - für das ursprüngliche Programm ist. Derartige Sequenzen werden möglich durch die Konfiguration von Prozessorregistern und die Beschränkungen, die in der kanadischen Patentanmeldung mit der Seriennummer 582,560 beschrieben sind, die hier durch die Bezugnahme übernommen wird. Ein Programm, welches die anwendbaren Beschränkungen verletzt, kann jedoch unter unbestimmten Ergebnissen oder der Unfähigkeit leiden, daß ein Befehlsstrom nach einer Trap-Handhabung (nicht) wieder aufgenommen werden kann. Das Abfangereignis (Trap) mit der höchsten Priorität wird hier als ein RESET bezeichnet. Ein RESET kann nicht maskiert werden.
- Zwischen drei und sechs PC Werten sind erforderlich, um zum Zeitpunkt eines Abfangereignisses die in Ausführung befindlichen Befehle zu spezifizieren. Wie genauer in der kanadischen Anmeldung mit der Seriennummer 582,560, die hier durch die Bezugnahme aufgenommen wird, beschrieben wird, wird die CEU-Pipeline durch PC0, PC1 und PC2 beschrieben. Während eines Abfangereignisses werden dieses PCs in den CEU-Registern %TR0, %TR1 und %TR2 (die auch als %C0, %C1 und %C2 bezeichnet werden) gesichert. Die CEU hält die Adressen der zuletzt arbeitenden FPU- und IPU-Befehle fest. Diese Adressen werden die Co-Ausführungs-PCs genannt.
- Die Co-Ausführungs-PCs für eine gegebene Funktionseinheit zeigt den PC-Wert des letzten arbeitenden Befehls an, der durch diese Einheit abgeschickt wurde, solange dieser Befehl noch nicht im Ergebnis verworfen ist, weil ein früherer Befehl in irgendeiner Funktionseinheit eine Ausnahme berichtet hat. Dieser Mechanismus in Verbindung mit der Trap-PC-Beschränkung ermöglicht es, daß Software den exakten Befehls-PC ermittelt, der für eine Ausnahme verantwortlich ist, unabhängig von der Ergebniszeit des Befehls.
- Der Ausführungspunkt der XIU wird immer durch PC0 zu dem Zeitpunkt des Abfangereignisses beschrieben, da die XIU keine überlappende Ausführung hat. Während eines Abfangereignisses werden die gemeinsam ausführenden PCs in !PC_IPU und !PC_FPU gesichert, wie es in Fig. 22 angezeigt ist. Die CEU stellt auch !PC_SCEU bereit, um die Systemsoftware darin zu unterstützen, Fehler zu handhaben, die von einem ST64-Befehl herrühren. Die CEU und die gemeinsamen Ausführungs-PCs werden zusammen als die Ausführungs-PCs bezeichnet und sind in Fig. 22 dargestellt.
- Wenn ein Befehl, der in der FPU oder der IPU ausgeführt wird, ein Abfangereignis berichtet und irgendeine Betriebsanweisung für dieselbe Einheit in den Zyklen zwischen dem Start und dem aktuellen Zyklus begonnen wurde, so berichtet diese Einheit eine "unpräzise Ausnahme". Ansonsten wird die Ausnahme als "präzise" bezeichnet. Gemäß der Erfindung kann das Befehlspaar, welches bei PC0 angezeigt ist, einen Befehl für dieselbe Einheit enthalten, ohne die Präzision der durch den früheren Befehl berichteten Ausnahme zu beeinflussen.
- Eine Ausnahme wird als "unpräzise" markiert, wenn der Prozessor nicht genügend Information hat, um den Zustand der Berechnung genau anzugeben. Wenn eine Betriebsanweisung in der Pipeline hinter dem Befehl vorliegt, der die Ausnahme berichtet, so gibt es keine PC-Information für den Abfangbefehl, da die CEU den Co-Ausführungs-PC bereits auf den neuesten Stand gebracht hat. Derartige Berechnungen können nicht sinnvoll erneut gestartet werden und die Anzeige "unpräzise_Ausnahme" wird in !I_TRAP und/oder !F_TRAP auf 1 gesetzt, je nachdem, was angemessen ist.
- Der Trap-Mechanismus speichert die Trap-Zustandswerte in verschiedenen Registern. Diese Register umfassen die folgenden:
- %TR0 speichert den PC der Anweisung am Trap-Punkt.
- %TR1 speichert den PC des ersten Befehls hinter dem Trap-Punkt.
- %TR2 speichert den PC des Befehls, der für das Heranholen bereit ist (der zweite hinter dem Trap-Punkt).
- !CONTEXT speichert das Kontextregister des anhängenden Befehlsstroms.
- !TRAP speichert das Trap-Register, welches die Ursachen des Traps aufzeichnet.
- !PC_SCEU speichert den PC des letzten LD- oder ST-Befehls, der abgeschickt wurde und ein Trap berichtet hat oder des letzten LD64- oder ST64-Befehls, der nicht absendeverworfen und nicht ergebnisverworfen wurde durch irgendeine andere Ausnahme. Wenn ein STT- oder Speichersystemfehler in !TRAP angezeigt wird, so enthält dieses Register den PC des entgegenstehenden Befehls.
- !PC_FPU speichert den PC des letzten arbeitenden, abgeschickten FPU- Befehls, der möglicherweise die vorliegende Ausnahme erzeugt hat. Dieses Register ist nur gültig, wenn !TRAP eine FPU- Ausnahme anzeigt und "F_TRAP" anzeigt, daß die Ausnahme präzise war.
- !F_TRAP speichert das FPU-Trap-Register, welches jegliche FPU- Ausnahmen aufzeichnet.
- !PC_IPU speichert den PC der letzten gestarteten IPU-Befehle, die möglicherweise die aktuelle Ausnahme erzeugt haben könnten. Dieses Register ist nur gültig, wenn !TRAP eine IPU-Ausnahme anzeigt und !I_TRAP anzeigt, daß die Ausnahme präzise war.
- !I_TRAP speichert die Einzelheiten der IPU-Ausnahme, wenn eine IPU- Ausnahme in !TRAP angezeigt ist.
- !X_TRAP speichert Einzelheiten der XIU-Ausnahme, wenn in !TRAP eine XIU-Ausnahme angezeigt wird.
- Beim Eintritt in die Trap-Handhabungssoftware wird der Zustand der Ausführung durch diese Register spezifiziert. Zusätzlich werden die Ursachen des Traps (Abfangereignisses) durch die Inhalte dieser Register angezeigt, was umfassender in den US-Patenten 5,055,999 und 5,251,308 beschrieben wird, die durch diese Bezugnahme hierin aufgenommen werden.
- Lücken in dem Befehlsstrom können auftreten, wenn ein mehrzyklischer Befehl eine Ausnahme nach dem Zyklus 0 der Ausführung anzeigt. Ein Befehl wird gestartet, wenn seine Adresse in PC0 vorhanden ist. Im nächsten Zyklus werden die Ausführungs-PCs auf den neuesten Stand gebracht, um die nächsten drei Befehle zu beschreiben, die ausgeführt werden sollen. Wenn dieser Mehrzyklusbefehl eine präzise Ausnahme berichtet, so ist seine Adresse in dem Co-Ausführungs- PC vorhanden (!PC_FPU, oder !PC_IPU) oder !PC_SCEU. Die Adresse des Befehls geht verloren, wenn das Programm einen weiteren Betriebsbefehl für dieselbe Einheit innerhalb der Ergebnisverzögerung dieses Befehls startet.
- Nachdem ein Trap (Abfangereignis) aufgetreten ist, kann die Systemsoftware für das Programm einen Fehler signalisieren oder die Trap-Ursache auflösen bzw. beseitigen. Um einen Befehlsstrom ohne Lücken erneut zu starten, führt der Kern eine einfache Sequenz aus, die die Ausführungs-PCs und den Registerzustand wiederherstellt. Die Anwender- oder Systemsoftware muß alle "unerledigten" Befehle abschließen, bevor der Befehlsstrom erneut gestartet werden kann, wie im folgenden noch genauer diskutiert wird.
- Eine CEU-Lücke kann vorhanden sein, wenn ein ST64-Befehl eine Ausnahme in seinem Endzyklus der Ausführung berichtet. Dies ist nur dann der Fall, wenn !PC_SCEU gültig ist (eine STT- oder Speichersystemausnahme aufgetreten ist), jedoch nicht gleich %TR0 ist. Der aktuelle Befehl wurde sieben Zyklen vor dem durch PC0 bezeichneten Befehlspaar gestartet, wenn das Trap auftritt.
- Wenn Mehrfachbefehle in der IPU oder FPU ausgeführt werden, während ein Trap auftritt, ist der Trap-Zustand dieser Einheit unpräzise. Ein unpräziser Zustand kann nicht sinnvoll analysiert werde, so daß die Systemsoftware typischerweise für den Benutzerprozeß einen Fehler signalisiert und nicht zuläßt, daß der vorherige Befehlsstrom erneut gestartet wird. Wenn der Trap-Zustand präzise ist, so ist es möglich, daß das Trap durch den Befehl am Trap-Punkt (PCO/%TR0) oder durch einen vor dem Trap-Punkt gestarteten Befehl verursacht wurde.
- Wenn der Prozessor ein Trap signalisiert, so stellt er einen Trap-Punkt fest. Der Trap-Punkt ist einer von den PCs in der Abfolge von Befehlspaaren, die durch das Programm ausgeführt werden. Alle Befehlspaare an dem Trap-Punkt werden speziell behandelt entsprechend den Quellen des Trap und der vorhandenen Befehle.
- Für Einzelzyklusbefehle, welche Ausnahmen anzeigen, ist der Trap-Punkt der PC des abgefangenen Befehls. Einige mehrzyklische Befehle berichten Ausnahmen in dem Null-Zyklus der Ausführung oder zu einem späteren Zeitpunkt. In vielen Fällen ist der spätere Trap-Punkt der Zyklus, bevor das Ergebnis verfügbar wird. Der CEU erreicht einen stationären Zustand, sichert den Ausführungszustand und tritt in die Trap-Handhabung ein, wie nachstehend beschrieben wird.
- Wenn ein Trap angezeigt wird, stoppt der Prozessor das Heranholen eines Befehls, weigert sich, eingefügte Befehle zuzulassen und wartet darauf, daß alle Co-Ausführungseinheiten alle ablaufenden Befehle in den Ruhezustand versetzen. Wenn irgendwelche von diesen Befehlen Ausnahmen berichten, so wird jede Ausnahme als Teil der Trap-Information einbezogen. Jede Co- Ausführungseinheit kann zur Ruhe gesetzt werden, indem seine Handlungen erfolgreich vollendet werden oder indem ein Ausnahmezustand berichtet und seine Ergebnisse verworfen werden. Wenn ein Befehl, während er vollendet wird, keinen Ausnahmezustand berichtet, so ist keine weitere Aktion mehr erforderlich. Wenn ein zur Ruhe gesetzter Befehl, der vor dem Befehlspaar bei PC0 gestartet wurde, einen Ausnahmezustand berichtet, so repräsentiert dieser Befehl eine Lücke in dem Befehlsstrom vor dem Trap-Punkt. Sein Zustand und seine Adresse müssen für die Software gesichert werden für die Verwendung bei der Ausfüllung der Lücke.
- Die CEU handhabt das Befehlspaar bei PC0 (dem Abfangpunkt) entsprechend dem Start- Verwerfungszustand des Befehlsstroms, der Abfangquelle und dem CX-Befehl bei PC0. Interrupts werden beispielsweise erzeugt, wenn die XIU oder eine CCU einen XTRAP-Befehl in den Befehlsstrom einfügt. Ein eingefügter Befehl beeinflußt nicht die Programm-PCs; das XTRAP erscheint, bevor das Befehlspaar bei PC0 gestartet wird. Demnach wird, wenn das Trap durch einen Interrupt ausgelöst wurde (unabhängig davon, ob irgendeine funktionelle Einheit über einen Trap als Teil des Erreichens eines stationären Zustandes berichtet), das Befehlspaar bei PC0 nicht gestartet. Die Befehle bei PC0, PC1 und PC2 werden im Ergebnis verworfen.
- Wenn die CEU die Ausführungs-PCs (PC0, PC1, PC2) auf den neuesten Stand bringt, so versucht sie, den durch PC2 angezeigten Befehl heranzuholen. Es ist möglich, daß während einer Adreßübersetzung ein Fehler signalisiert wird (STT-Verletzung), oder auch während die CEU den Befehlsunterblock (z. B. Seiten_Fehler) erhält. Der Fehlerzustand wird dem Befehlspaar zugeordnet und folgt ihm durch die Pipeline. Wenn das Befehlspaar nicht ergebnisverworfen wird, so wird die Ausnahme nicht berichtet. Ansonsten wird die Ausnahme berichtet und die Befehle bei PC0, PC1 und PC2 werden ergebnisverworfen.
- Wenn ein Trap durch die CEU oder XIU berichtet wird, so wird der CX-Befehl bei PC0 ergebnisverworten. Eine Serviceanforderung wird wie irgendein anderer CEU-Befehl behandelt, der ein Trap im Zyklus 0 berichtet. Wenn der FI-Befehl bei PC0 nicht schon startverworfen war, so wird er ergebnisverworfen. Die Befehle bei PC1 und PC2 werden ergebnisverworfen.
- Die Trap-Sequenz bewirkt ein Ergebnisverwerfen des FI-Befehls. Wenn der CX-Befehl bei PC0 nicht ein Befehl vom Speichertyp ist, so wird er ergebnisverworfen. Wenn der CX-Befehl bei PC0 CX ein Befehl vom Speichertyp ist, so kann er abgearbeitet werden. Der Speichertypbefehl kann normal ablaufen oder ein Trap berichten. Im ersteren Fall wird PC0 CX als startverworfen markiert. Wenn der Befehl vom Speichertyp eine Ausnahme berichtet, so wird er Teil des Trap- Zustandes; der Zustand des Startverwerfens wird nicht verändert. Dieses Verhalten stellt sicher, daß ein Befehl vom Speichertyp nur einmal abgearbeitet wird.
- Die Befehle bei PC1 und PC2 werden ergebnisverworfen. Die Ursache oder die Ursachen des Traps werden in den Trap-Registern gespeichert. Die CEU setzt ihr Trap-Register, !TRAP, um die Ursachen und Quellen des Traps anzuzeigen. Jede Co-Ausführungseinheit, die eine Ausnahme berichtet, setzt ebenfalls ihr Trap-Register -!F_TRAP, !i trap, oder !x-trap -, um weitere Details der Ausnahme, die sie festgestellt hat, aufzunehmen.
- Fig. 23 zeigt das Befehlsausführungsmodell und das Auftreten eines Traps. Wenn ein Programm ein bedingtes Verzweigungsverwerfen verwendet, so ist es wichtig, daß sein Verwerfungszustand als Teil des Trap-Zustandes erhalten bleibt. Der Zustand des Verzweigungsverwerfens beeinflußt den Startverwerfen-Zustand. Wenn ein eingefügter XTRAP-Befehl ein Trap verursacht, so tritt das Trap vor oder nach dem bedingten Verzweigungsbefehl auf. Im ersten Fall bewirkt das Trap ein Startverwerfen der bedingten Verzweigung; wenn der Befehlsstrom erneut gestartet wird, wird die bedingte Verzweigung erneut herangeholt und gestartet. Im zweiten Fall bewirkt der Zustand des Verzweigungsverwerfens, daß für PC0 CX/FI und PC1 CX/FI ein Startverwerfen gesetzt wird und dann der eingefügte Befehl (der logisch PC0 nicht zugeordnet ist) ausgeführt wird und ein Trap verursacht. Demnach zeigt der gespeicherte Zustand des Startverwerfens an, daß die beiden Befehlspaare verworfen werden sollten, wenn der Befehlsstrom erneut gestartet wird.
- Wenn ein Befehl vor der bedingten Verzweigung oder vor dem FI-Befehl, welcher mit einer bedingten Verzweigung gepaart ist, ein Trap anzeigt, so wird der bedingte Verzweigungsbefehl ergebnisverworfen und das Startverwerfen wird nicht beeinflußt. Wenn der Befehlsstrom erneut gestartet wird, so wird das bedingte Verzweigungsbefehlspaar erneut gestartet und ein Verzweigungsverwerfen tritt auf, wenn die Pipeline-PCs auf den neuesten Stand gebracht werden.
- Die Trap-Sequenz speichert den Zustand des Befehlsstroms in den Prozessorregistern. Die Inhalte dieser Register sind in den US-Patenten 5,055,999 und 5,251,308 beschrieben, die hier durch die Bezugnahme aufgenommen werden. Um diese Registerwerte davor zu schützen, daß sie durch ein weiteres Trap zerstört werden, schaltet die Trap-Sequenz weitere Traps ab. Die Trap- Handhabungssoftware aktiviert Traps erneut, wenn die Register in dem Speicher sicher gespeichert sind. Insbesondere schaltet die Hardware-Trapsequenz, um den Ausführungszustand zu sichern, weitere Traps ab, indem sie !CONTEXT.TE = 0 setzt, PC0 (den Abfangpunkt) im Trap-Register 0 (!TR0) speichert, PC1 (den nächsten PC) im Trap-Register 1 (%TR1) speichert, PC2 (den Befehlsheranhol-PC) im Trap-Register 2 (%TR2) speichert, die Kontextregister, !CONTEXT, modifiziert, um das Privilegienniveau, !CONTEXT.PL, auf dem alten Privilegienniveau, !CONTEXT.OP, zu sichern, den Zustand des Startverwerfens in !CONTEXT.QSH kopiert, und die aktuellen Co-Ausführungs- PCs und !PC_SCEU speichert. Die Gültigkeit von !PC_FPU und !PC_SCEU hängt von der Ausführungszustand ab, der durch die individuellen Funktionseinheiten oder Prozessorelemente berichtet wird.
- Die in %TR0, %TR1 und %TR2 gespeicherten PCs und die Information über das Startverwerfen in !CONTEXT gesicherte Information definieren den wiederaufzunehmenden Befehlsstrom. Das Trap-Register !TRAP zeigt an, ob das Befehlspaar bei PC0 (%TR0) eine Ausnahme verursacht hat. Die %TR1 und %TR2 gespeicherten PCs stehen nicht in Beziehung zu der Ursache des Traps.
- Die Co-Ausführungseinheits-PCs (!PC_FPU, !PC_IPU, und !pc_xiu), die in der CEU gehalten werden, sind nur gültig, wenn das !TRAP-Steuerregister anzeigt, daß die entsprechende Co- Ausführungseinheit eine Ausnahme berichtet hat. Schließlich muß der Prozessor die Information sammeln, die die Ursachen des Traps beschreibt und dies in den Trap-Registern, !TRAP, !F_TRAP, !X_TRAP und !I_TRAP, zu speichern.
- In der dritten Stufe der Trap-Sequenz beginnt der Prozessor mit der Ausführung der Trap- Handhabungsroutine und verändert das Privilegienniveau des Prozessors auf das höchste Privileg, indem !CONTEXT.pl = 0 gesetzt wird, wobei der Zustand des Startverwerfens gelöscht wird, so daß keine Befehle verworfen werden, und die PCs werden so gesetzt, daß eine sequentielle Ausführung bewirkt wird, beginnend mit der Kontext-Adresse Null.
- Mit Ausnahme des oben Erwähnten wird der Kontext des vorherigen Befehlsstroms von der Trap-Handhabungsroutine übernommen. Die Systemsoftware muß sicherstellen, daß die Kontextadresse 0 durch den ISTT jedes Ausführungskontextes zugeordnet ist. Die Trap-Handhabung kann sich entscheiden, den Zustand zu speichern und dann auf irgendeinen anderen Kontext zu verändern. Da die Trap-Handhabung bei Privilegienniveau 0 arbeitet, hat sie Zugriff auf die allgemeinen Kernregister, %C0-%C3.
- Da die Trap-Handhabungsroutine den Kontextadreßraum von allem übernimmt, was ausgeführt wurde, als das Trap auftrat, muß jeder Kontextadreßraum die Code- und Datensegmente zuordnen, welche die Trap-Handhabungsroutine für ihren Start benötigt. Die Datenzuordnungen können gegenüber dem Benutzerbefehlsstrom versteckt sein, indem Zugriff nur auf das Niveau 0 eingeschränkt wird. Die Trap-Sequenz beansprucht die Anzahl von Takten, die erforderlich sind, um irgendwelche gemeinsam ausgeführten Befehle, die sich in Arbeit befinden, in den Ruhezustand zu versetzen, zuzüglich dreier Befehlszyklen. Interrupts werden während dieser Zyklen nicht angenommen.
- Fehler sind Traps, die direkt in Beziehung zu dem Befehlsstrom stehen, der ausgeführt wird. Der KSR-Befehl beispielsweise wird verwendet, um eine Betriebssystemdienstleistung oder einen Debugging-Unterbrechungspunkt anzufordern. Die Systemsoftware definiert eine Schnittstelle, durch welche ein Programm Information weiterleitet, welche die spezielle Natur seiner Anfrage genauer wiedergibt. Eine Serviceanforderung hat dieselben Trap-Eigenschaften wie irgendein anderer CX- Befehl, der im Zyklus 0 der Ausführung fehlerhaft ist. Dies wird separat dargestellt, weil das erneute Starten des Befehlsstroms eine ausdrückliche Aktivität der Systemsoftware erfordert.
- Der KSR-Befehl ist definiert als ein Einzelzyklusbefehl und wird im Zyklus 0 der Ausführung abgefangen. Ein KSR-Befehl schließt niemals normal ab. Die Adresse des KSR wird in %TR0 aufgezeichnet. Der Abfangstatus zeigt die Serviceanforderung an und zeigt auch an, ob der dazu gepaarte FI-Befehl fehlerhaft ist. Wenn der Befehlsstrom erneut gestartet werden muß, muß die Systemsoftware den Verwerfungszustand ändern, so daß der CX-Befehl verworfen wird. Man beachte, daß dieser Vorgang dazu führt, daß der FI-Befehl abgeschlossen wird, nachdem der Serviceaufruf abgeschlossen ist.
- Eine Ausnahme wird signalisiert, wenn irgendein Fehler als direkte Folge des Heranholens oder Ausführens eines Befehls in dem Befehlsstrom erfaßt wird. Ausnahmen umfassen den Überlauf eines Datentyps, Zugriffsverletzungen, Paritätsfehler und Seitenfehler. Die Ursachen von Ausnahmen werden beschrieben durch die Register !TRAP, !F_TRAP, !I_TRAP und !X_TRAP.
- Da mehrere Befehle in den Co-Ausführungseinheiten parallel ausgeführt werden, kann mehr als eine Ausnahme im selben Zyklus signalisiert werden. Wenn ein Trap (ein Abfangereignis) signalisiert wird, muß die Software alle Sourceanzeigen in !TRAP untersuchen, um die Quellen der Traps zu bestimmen. Individuelle Einheiten berichten über den zusätzlichen Status in ihren privaten Trap- Registern.
- Wenn ein CX-Befehl in dem Zyklus 0 einer Ausführung eine Ausnahme signalisiert, so wird er verworfen und der entsprechende FI-Befehl wird ergebnisverworfen. Wenn der FI-Befehl oder beide Befehle in einem Paar eine Ausnahme in ihrem ersten Ausführungszyklus (Zyklus 0) signalisieren, so wird das Befehlspaar verworfen und der Trap-Punkt ist das Befehlspaar mit der Ausnahme eines ST- oder ST64-Befehlspartners eines FPU- oder IPU-Befehls, der eine Ausnahme anzeigt.
- Demnach liegt der gespeicherte Zustand vor, wie er war, bevor die Ausnahme auftrat. Die Adresse des Befehls, welcher die Ausnahme verursacht hat, ist in %TR0 gespeichert.
- In dem in Fig. 24 dargestellten Beispiel hat der add8-Befehl eine Ergebnisverzögerung von 0 und berichtet im Zyklus 0 der Ausführung einen Überlauf. Der Registerwert von %TR0 ist 0, %TR1 ist 8, %TR2 ist 0 · 10. Zusätzlich ist !PC_IPU 0 und die Ausnahme ist präzise.
- Wie oben beschrieben führt eine durch einen Befehl nach dem Zyklus 0 der Ausführung signalisierte Ausnahme zu einer Lücke in dem Befehlsstrom, was dadurch angezeigt wird, daß das entsprechende !PC-Register ungleich %TR0 ist. Wenn die Ausnahme ungenau ist, so kann das PC- Register von %TR0 verschieden sein oder auch nicht und zeigt nicht an, daß der Befehl eine Ausnahme signalisiert.
- In dem Beispiel einer Befehlssequenz, welches in Fig. 25 dargestellt ist, hat der FMUL- Befehl eine Ergebnisverzögerung von 2 und kann ein Trap im Zyklus 0 oder Zyklus 2 der Ausführung berichten. Wenn die Ausnahme in Zyklus 0 berichtet wird, so ist %TR0 0, %TR1 ist 8, %TR2 ist 0 · 10. Der Wert von !PC_FP0 ist 0 und die Ausnahme ist präzise.
- Das Beispiel einer überlappenden Ausführung, welches in Fig. 26 dargestellt ist, ist ähnlich dem der Fig. 25 des vorherigen Beispiels, jedoch mit Daten, die bewirken, daß der FMUL-Befehl in Zyklus 2 fehlerhaft ist. In diesem Fall ist %TR0 0 · 10, %TR1 ist 0 · 18, %TR2 ist 0 · 20, !PC_FPU ist 0. Diese Ausnahme ist präzise.
- In dem in Fig. 27 dargestellten Beispiel berichtet FMUL wiederum über eine Ausnahme in Zyklus 2. Unabhängig davon, ob der Befehl bei 0 · 10 eine Ausnahme berichtet, ist %TR0 0 · 10, %TR1 0 · 18, %TR2 0 · 20, !PC_FP0 ist 0. Diese Ausnahme ist präzise.
- In dem Beispiel der Befehlssequenz nach Fig. 28 berichtet der FMUL-Befehl wiederum über eine Ausnahme im Zyklus 2. Wenn der FADD-Befehl eine Ausnahme im Zyklus 0 berichtet, so ist %TR0 8, %TR1 ist 0 · 10, %TR2 ist 0 · 18, !PC_FP0 ist 8, die Ausnahme ist unpräzise. Ansonsten ist %TR0 0 · 10, %TR1 ist 0 · 18, %TR ist 0 · 20 und !PC_FP0 ist 8, und die Ausnahme ist unpräzise.
- Fig. 29 zeigt eine Befehlssequenz, bei welcher Daten derart sind, daß der FMUL-Befehl nicht abgefangen wird. Wenn der FADD-Befehl eine Ausnahme im Zyklus 0 berichtet, so ist TR0 8, %TR1 ist 0 · 10, %TR2 ist 0 · 18, !PC_FPU ist 8, die Ausnahme ist präzise. Wenn der FADD-Befehl eine Ausnahme im Zyklus 2 berichtet, so ist %TR0 gleich 0 · 18, %TR1 ist 0 · 20, %TR2 ist 0 · 28. Wenn der FADD-Befehl bei 0 · 10 ein FPU-Betriebsbefehl ist, so ist die FADD-Ausnahme unpräzise und %PC_FPU ist 0 · 10. Ansonsten ist die FADD-Ausnahme präzise und !PC_FPU ist 8.
- In dem in Fig. 30 dargestellten Beispiel hat der FMUL-Befehl Daten, die keinen Fehler verursachen. Der CX-Befehl bei 0 und 8 erfährt ein Trap im Zyklus 0 (page_fault). Die FPU verwirft ihre gestarteten Befehle und das Ergebnis von FMUL wird an %f2 geliefert. %TR0 ist 8, %TR1 ist 0 · 10, %TR2 ist 0 · 18, !PC_FPU ist nicht gültig. Die CEU-Ausnahme ist präzise und !PC_SCEU ist 8, was anzeigt, daß ein ST64-Befehl nicht die Ursache des Speichersystemfehlers war.
- Die in Fig. 31 dargestellte Befehlssequenz zieht Vorteil aus der Tatsache, daß Befehle vom Speichertyp nur eine Verzögerung um einen Zyklus haben, bevor sie die Quelle lesen. Diese Codesequenz erzeugt nur dann korrekte Ergebnisse, wenn kein Trap auftreten kann, wenn der Speicherbefehl durch PC0 adressiert wird.
- Auch wenn die Ergebnisverzögerung für einen LOAD-Befehl zwei Zyklen beträgt, ist es in ähnlicher Weise möglich, die Sequenz zu komprimieren, wenn bekannt ist, daß kein Fehler auftreten kann, wenn der Speicherbefehl durch PC0 adressiert wird. Die in Fig. 32 dargestellte Sequenz ist präzise und kann wiedergestartet werden, selbst wenn bei der Adresse 0 oder 0 · 10 ein CX-Fehler auftritt.
- Alle LD-, LD64- und ST-Befehle erfassen Ausnahmen im Zyklus 0 einer Ausführung. Demnach kann, wenn ein STT- oder Speichersystemfehler (z. B. missing_segment, missing_page) bei TR0 berichtet wird und !PC_SCEU auf die Adresse dieses Befehls gesetzt ist, der ST64-Befehl einen Fehler im Zyklus 0 (bezogen auf STT) oder Zyklus 7 (erfaßt durch das Speichersystem) berichten. Fehler, die nicht programmtechnischer Natur sind (wie z. B. Paritätsfehler), können jederzeit auftreten und der Wert von %TR0 ist nicht vorhersehbar.
- Die XIU und das Speichersystem können eingefügte Befehle verwenden, um Interrupts anzufordern und einen direkten Speicherzugriff (DMA) auszuführen. In einer bevorzugten Ausführungsform der Erfindung bewirken diese Befehle kein Trap. Stattdessen berichtet jeder eingefügte Befehl einen Fehlerzustand an seine Quelle. Die Quelle kann dann die CEU über den Fehler mit einem Interrupt informieren. Eingefügte Befehle können startvenrworfen werden, wenn irgendein früherer Befehl ein Trap verursacht.
- Interrupts sind, wie oben beschrieben, Ereignisse, die nicht mit dem Hauptbefehlsstrom verknüpft sind, jedoch die Aufmerksamkeit des Prozessors erfordern. Interrupts können durch das Speichersystem oder die XIU erzeugt werden, während asynchrone Aktivitäten ausgeführt werden. Der Generator liefert den Interrupt an die CEU, indem er einen XTRAP-Befehl einfügt. Die CEU nimmt zu einer gegebenen Zeit nur einen Interrupt an und kann mitunter alle Interrupts zurückweisen. Interruptquellen sind verantwortlich für das Aufrechterhalten von Interrupts, bis die CEU sie annimmt. Das !TRAP-Steuerregister zeigt die Quelle des Interrupts an.
- Interrupts können Speichersysteminterrupts, Zwischenzellinterrupts und XIU-Interrupts umfassen. Ein Speichersysteminterrupt ist ein Interrupt, der durch das Speichersystem erzeugt wird. Ein Cache erzeugt Interrupts, wann immer er Fehler an asynchronen Vorgängen erfaßt, die er ausführt, an den Daten, die er hält, oder aus seiner Sicht des Speichersystems. Die Priorität der Speicherinterrupts wird festgelegt durch die Konfigurationsposition der Zelle, die ihn erfaßt.
- Ein Zwischenzellinterrupt ist ein Sonderfall eines Speichersysteminterrupts und tritt nur als Ergebnis eines Schreibvorgangs in die CTL$CCU_CELL_INT-Steuerposition einer Zelle auf. Wegen des hierarchischen Layouts des SPA-Raumes können Prozessoren Interrupts auf spezielle Prozessoren oder auf Gruppen von Prozessoren in einem Niveau der Hierarchie leiten.
- Ein XIU-Interrupt wird verursacht durch Zeitablauf einer I/O-Ausführung. Dieser Aspekt von I/O-Vorgängen wird in dem hiermit eingereichten Anhang, der durch diese Bezugnahme hier einbezogen wird, genauer beschrieben.
- Wenn ein XTRAP- (Interruptanforderung-) Befehl vor irgendeinem Befehl, der eine Ausnahme hervorruft, in den Befehl eingefügt wird, wird der Interrupt akzeptiert und die folgenden Befehle werden startverworfen. Darüber hinaus wird, wenn der XTRAP-Befehl in die Pipeline eingefügt wird und irgendein vorangehender Befehl ein Trap verursacht, bevor das XTRAP gestartet ist, das XTRAP ignoriert, so daß der Interrupt im Ergebnis zurückgewiesen wird. Demnach bewirken Interruptanforderungen kein doppeltes Trap-Reset. Wenn dieses geschieht, so zeigt die Antwort auf den asynchronen Befehl, welcher den Interrupt anforderte, an, daß er zurückgewiesen wurde.
- Wenn ein Interrupt empfangen wird, wird die normale Trap-Sequenz ausgelöst. Dies bewirkt, daß alle Befehle der Co-Ausführungseinheit abgearbeitet werden und ihren Ausnahmestatus berichten, falls vorhanden. Wenn irgendein gemeinsam ausgeführter Befehl eine Ausnahme berichtet, so werden der Interrupt und der Ausnahmestatus verschmolzen und in !TRAP berichtet.
- Zusätzlich wird, wenn die Trap-Sequenz vollendet ist, ein neuer Befehlsstrom an der Kontextadresse 0 gestartet. Dieser Code, der auf dem Privilegienniveau 0 ausgeführt wird, ist die Software-Trap-Handhabung, die den Trap-Mechanismus vollendet. Ihre Aufgabe ist es, den in den Registern gespeicherten Trap-Zustand zu sichern, die Steuerung an die geeignete Software auszusenden, um den Trap zu handhaben und später den ausgesetzten Befehlsstrom wiederaufzunehmen oder zu verwerfen.
- Durch die Trap-Sequenz werden Traps abgeschaltet. Ein Prozessor erhält einen doppelten Trap-Reset, wenn ein weiterer Fehler auftritt, bevor die Traps eingeschaltet sind. XTRAP-Befehle, die durch die CCUs oder die XIU eingefügt werden, um einen Interrupt zu signalisieren, erzeugen jedoch keinen Trap, während Traps abgeschaltet werden. Wenn Traps wieder eingeschaltet werden, bevor der Maschinenzustand sicher gespeichert ist, so kann dieser Zustand durch ein weiteres Trap überschrieben werden, was eine Neustartanalyse ausschließt. Daher sichert die Trap-Handhabung der Systemsoftware vorzugsweise zuerst den Trap-Zustand und gibt dann die Traps so schnell wie möglich wieder frei. Dieses macht den Betrag an Systemsoftware minimal, der codiert werden muß, um Fehler zu vermeiden. Die Trap-Handhabung muß !TRAP untersuchen und feststellen, welche anderen Register gültig sind.
- Da die Trap-Handhabungsroutine im Kontext des vorherigen, abgefangenen Befehlsstromes abläuft, muß sie auch jegliche Register sichern, die sie stören könnten, wie z. B. !CONTEXT, !I_CONTEXT, !F_CONTEXT und gewisse CIU/IPU/FPU-Allgemeinregister.
- Gewisse Traps erfordern es, daß das System auf einen Zustand reagiert und später den ausgesetzten Befehlsstrom wiederaufnimmt, als wenn das Trap nicht aufgetreten wäre. Andere führen dazu, daß der Befehlsstrom beseitigt oder an einer Stelle erneut begonnen wird, die eine andere ist als die, wo das Trap aufgetreten ist. Diese Reaktionen werden hier insgesamt als "Wiederaufnehmen des Befehlsstromes" bezeichnet.
- Die Trap-Handhabung beginnt auf dem Privilegienniveau 0, wo sie den Wiedereintritt herstellen und dann auf das spezielle Trap wirken muß. Die Systemsoftware kann das Trap auf dem Privilegienniveau 0 handhaben und dann den Befehlsstrom wiederaufnehmen. Der Trap-Zustand kann auch an weniger privilegierten Code weitergeleitet werden, indem ein neuer Befehlsstrom aufgerufen wird. Diese Softwarehandhabung kann korrektive Wirkung haben und dann eine Dienstleistungsanforderung abgeben, damit der Kern den abgefangenen Befehlsstrom wieder startet. Die Systemsoftware oder weniger privilegierter Code kann weiterhin entscheiden, daß der abgefangene Befehlsstrom aufgegeben wird und ein neuer Befehlsstrom gestartet wird.
- Ein wichtiger Gesichtspunkt in der Handhabung eines Trap umfaßt das Ausfüllen von Lücken in dem Befehlsstrom, die durch FPU-, IPU- oder ST64-Befehle hinterlassen werden, welche Ausnahmen berichtet haben. Das Erfordernis, Lücken auszufüllen, ist die Basis für die oben beschriebene Quellregisterbeschränkung. Um diese Gaps zu handhaben, muß die Software "manuell" die noch anhängigen Befehle ausführen. In einigen Fällen wird der Befehl wirksam ausgeführt, indem sein Ergebnisregister oder Speicher verändert wird. Beispielsweise könnte eine Berechnung, die einen Überlauf hatte, dadurch gehandhabt werden, daß das Ergebnisregister auf den größten gültigen Wert gesetzt wird.
- Es ist außerdem möglich, Quellwerte oder den Maschinenzustand zu verändern und den fehlerhaften Befehl erneut auszuführen. Ein Beispiel einer solchen Modifikation und erneuten Ausführung umfaßt das Ändern einer arithmetischen Operation oder das Zugänglichmachen einer Seite. Die Systemsoftware kann einen speziellen Kontext bereitstellen, der den anhängigen Befehl an seiner tatsächlichen Kontextadresse startet und sofort den Kern wiederaufruft.
- Bei einem Beispiel des speziellen Kontexts ist PC0 die Adresse des anhängigen Befehls und PC1 und PC2 sind die Adressen eines KSR-Befehls (mit einem speziellen Operandencode), in dem Textraum der Systemsoftware. Bei dem mit dem anhängigen Befehl gepaarten Befehl ist das Startverwerfen angegeben und PC1 hat das Startverwerfen gelöscht. Dieser Kontext startet den gewünschten Befehl. Wenn der anhängige Befehl in dem Zyklus 0 der Ausführung eine Ausnahme berichtet, so erscheint sofort ein Trap. Ansonsten wird der KSR-Befehl ausgeführt und verursacht ein Trap; wenn der anhängige Befehl ein Einzelzyklusbefehl war, so ist er erfolgreich vollendet worden. Wenn der anhängige Befehl ein Mehrzyklenbefehl ist, kann er immer noch eine Ausnahme berichten, wenn der Prozessor den stationären Zustand erreicht, oder er kann normal abgeschlossen werden.
- Wenn der Kern wiedereintritt, so untersucht er den Trap-Zustand. Wenn der anhängige Befehl erfolgreich abgeschlossen wurde, kann der ursprüngliche, abgefangene Befehlsstrom erneut gestartet werden. Ansonsten muß die Systemsoftware den neuen Fehler behandeln oder den Befehlsstrom verwerfen. Wenn mehrere anhängige Befehle in dem ursprünglichen, abgefangenen Befehlsstrom vorhanden sind, so können sie unter Verwendung der obigen Technik der Reihe nach aufgelöst werden. Die Systemsoftware muß Vorkehrungen treffen, um sicherzustellen, daß Anwender nicht versuchen, den speziellen KSR-Befehl zu unpassenden Zeitpunkten auszuführen.
- Der größte Teil des Kontextes eines abgefangenen Befehlsstromes kann wiederhergestellt werden, während Traps noch immer abgeschaltet sind. Beispielsweise werden alle FPU- und IPU- Allgemeinregister, das !f_context-Register und die meisten CEU-Register nicht durch die Trap- Handhabung verwendet, während Traps abgeschaltet sind. Unter der Annahme, daß die Trap- Handhabungssoftware ein geeignetes rekursives Modell implementiert, würde jegliches Trap, welches während der Wiederherstellung dieses Zustandes auftritt, schließlich jeden Zustand wiederherstellen, den es verändert hat. Die Systemsoftware läuft normalerweise mit eingeschalteten Traps ab, muß jedoch Traps als abschließenden Teil der Wiederaufnahme eines abgefangenen Befehlsstroms abschalten. Wenn die Trap-Handhabung anfänglich aufgerufen worden ist, so ist dies erforderlich, um zu verhindern, daß ein rekursives Trap den Zustand zerstört. Als nächstes wird das Register !CONTEXT wiederhergestellt. Schließlich werden die Trap-PCs in %TR0, %TR1 und %TR2 wieder geladen und der folgende Code wird ausgeführt:
- RTT 0(%TR0) /* Schalte Traps frei, stelle Privilegienniveau aus !CONTEXT.OPL wieder her. Stelle Verwerfen aus !CONTEXT.QSH wieder her (mit zwei Befehlen Verzögerung). Verzweige zum Befehlspaar am Abfangpunkt, welches durch %TR0 gekennzeichnet ist. */
- JMP 0(%TR1) /* Springe zum ersten Befehl hinter dem Abfangpunkt. */
- JMP 0(%TR2) /* Springe zu dem zweiten Befehl hinter dem Abfangpunkt. */
- Diese Sequenz stellt den Zustand des ausgesetzten Befehlsstromes wieder her und beginnt mit der Ausführung am Trap-Punkt, als wenn kein Trap aufgetreten wäre. Die Verwendung von drei aufeinanderfolgenden Verzweigungsanweisungen ist in der Tat ein Mittel der ferngesteuerten Befehlstechnik, wie sie oben beschrieben wurde. Die Änderungen des Privilegienniveaus und das Trap-Freischalten durch den RTT-Befehl wird wirksam, wenn er Befehl bei %TR0 ausgeführt wird. Die beiden JMP-Anweisungen sind bereits von dem Segment erneut herangeholt worden, welches diesen Code enthält. Alle nachfolgenden Befehlsheranholungen verwenden die wiedergespeicherten Werte von !CONTEXT.PL, um Privilegienverletzungen zu erfassen. Der Prozessorzustand wird daher ebenso wiederhergestellt, wie der ausgesetzte Code seine Ausführung wiederaufnimmt. Die durch das Trap gespeicherten Bedingungen werden vor der Rückkehrsequenz ausdrücklich erneut gespeichert und nicht durch die Sequenz verändert. Die Startverwerfen-Information, die durch den RTT-Befehl wiederhergestellt wird, steuert ein individuelles Verwerfen des ersten CX- und FI- Befehls und das Verwerfen des zweiten Befehlspaares. Diese Fähigkeit ist notwendig, um zu ermöglichen, daß Interrupts zwischen einer bedingten Verzweigung und den Befehlen auftreten, die sie verwirft, und um zu ermöglichen, daß die Systemsoftware die Kontrolle über das erste Befehlspaar übernimmt, welches erneut gestartet wird.
- Die Systemsoftware muß keine besonderen Vorsichtsmaßnahmen bezüglich des ISTT- oder Speichersystems treffen, um sicherzustellen, daß die Adressen bei %TR0, %TR1 oder %TR2 zugriffsfähig sind. Dies liegt daran, daß jede Ausnahme, die sich auf das Heranholen dieser Befeh le bezieht, während der Trap-Phase dieses Befehls berichtet wird. Wenn z. B. diejenige Seite, welche die durch %TR0 angegebenen Adressen enthält, fehlt, so tritt der Befehlsseitenfehler an dieser Adresse auf.
- Wenn die Systemsoftware eine weniger privilegierte Fehlerhandhabung aufruft, einem Anwenderprogramm ein Signal gibt oder einen neuen Prozeß beginnt, so muß die Software einen neuen Befehlsstrom starten. Dies kann bewerkstelligt werden durch Herstellen von Information, die derjenigen, welche durch die Trap-Handhabungssoftware gespeichert wird, äquivalent ist, und dann Wiederaufnehmen der Ausführung dieses unterbrochenen Befehlsstromes. Dies ist die bevorzugte Technik für das Wechseln von dem Kernbetriebszustand in den Anwenderbetriebszustand.
- Eine Ausführungsform der Erfindung erreicht in effizienter Weise die oben beschriebenen Ziele, neben denjenigen, die aus der vorstehenden Beschreibung offensichtlich geworden sind. Insbesondere stellt die Erfindung Mehrprozessorverfahren und -vorrichtungen bereit, bei denen jeder Prozessor wahlweise Befehle an andere Verarbeitungselemente ausgeben kann, wodurch die Parallelität der Ausführung erhöht und die Verarbeitungsgeschwindigkeit beschleunigt wird.
- Es versteht sich, daß Änderungen an der obigen Konstruktion und den vorstehenden Sequenzen des Betriebs vorgenommen werden können, ohne vom Schutzumfang der Erfindung abzuweichen. Die Erfindung kann beispielsweise in Verbindung mit Mehrprozessorstrukturen realisiert werden, die andere sind als diejenigen, die in Fig. 1 dargestellt sind. Es ist dementsprechend beabsichtigt, daß alles, was in der vorstehenden Beschreibung enthalten oder in den beigefügten Zeichnungen dargestellt ist, nur als veranschaulichend und beispielhaft und nicht im beschränkenden Sinn interpretiert werden soll.
Claims (19)
1. Digitale Verarbeitungsvorrichtung mit:
einem Satz miteinander verbundener Verarbeitungselemente (58, 60, 82, 84), wobei der
Satz von Verarbeitungselementen ein erstes Verarbeitungselement umfaßt,
das erste Verarbeitungselement (58) aufweist:
eine Heranholeinrichtung für das Heranholen von Befehlen von einer ersten Befehlsquelle,
wobei Befehle bzw. Anweisungen, die von der ersten Befehlsquelle herangeholt werden, einen
Anweisungs- bzw. Befehlsstrom bilden, und
eine Ausführungseinrichtung für das Ausführen der Befehlen,
wobei zumindest ein weiteres der Verarbeitungselemente
Eingabe-/Ausgabeverarbeitungseinrichtungen (60) für das Verarbeiten von Signalen umfaßt, die von einem peripheren Gerät
empfangen oder zu diesem übermittelt werden, wobei die Eingabe-/Ausgabeverarbeitungseinrichtung
eine Einfügungseinrichtung aufweist und die Einfügungseinrichtung in der Weise betreibbar ist, daß
sie auf ausgewählte Signale von dem peripheren Gerät reagiert, um Direktspeicherzugriffs-, \DMA,
-steuerbefehle zu erzeugen und diese DMA-Steuerbefehle als eingefügte Befehle für das erste
Verarbeitungselement bereitzustellen, damit sie durch diese verarbeitet werden, um zumindest DMA-
Übertragungen mit dem peripheren Gerät auszulösen,
wobei die Ausführungseinrichtung sowohl die Befehle, die von der ersten Befehlsquelle
herangeholt wurden, als auch die eingefügten Befehle verarbeitet und wobei die
Ausführungseinrichtung die eingefügten Befehle in derselben Art und Weise ausführt wie die von der ersten
Befehlsquelle herangeholten Befehle, ohne deren Abfolge zu beeinflussen.
2. Vorrichtung nach Anspruch 1, welche weiterhin aufweist:
eine Befehlspipelineeinrichtung für das Verbinden der Verarbeitungselemente und der ersten
Befehlsquelle für das Ausführen der Befehle, und
wobei die Einfügungseinrichtung eine Einrichtung zum Anwenden einer oder mehrerer der
eingefügten Befehle auf die Befehlspipelineeinrichtung aufweist.
3. Vorrichtung nach Anspruch 1 oder 2, wobei die eingefügten Befehle dasselbe Format haben
wie die Befehle aus der ersten Befehlsquelle.
4. Vorrichtung nach Anspruch 3, wobei das Format eine ausgewählte Anzahl digitaler
Befehlsbits aufweist, wobei zumindest ein erster Satz der Befehlsbits ein erstes Befehlsfeld bilden.
5. Vorrichtung nach Anspruch 3, wobei das Format einen ersten Satz digitaler Befehlsbits
aufweist, um ausgewählte Adreßsignale anzugeben, und einen zweiten Satz von digitalen Befehlsbits
aufweist für das Angeben ausgewählter Befehlssignale.
6. Vorrichtung nach einem der vorstehenden Ansprüche, wobei die erste Befehlsquelle ein
Speicherelement aufweist.
7. Vorrichtung nach Anspruch 6, wobei das Speicherelement ein Befehlscacheelement zum
Speichern digitaler Werte aufweist, welche Befehlen entsprechen.
8. Vorrichtung nach Anspruch 7, wobei
das erste Verarbeitungselement eine Ausführungseinheit (CEU) aufweist, wobei die CEU
umfaßt
eine Einrichtung zum Ausgeben von Signalen an das Befehlscacheelement, um zu bewirken,
daß Befehle von dem Befehlscacheelement zu der CEU übertragen werden.
9. Vorrichtung nach Anspruch 7, wobei die Befehle Cacheverwaltungsbefehle umfassen, die
durch das Befehlscacheelement eingefügt werden.
10. Vorrichtung nach Anspruch 7, wobei das Befehlscacheelement Einrichtungen zum Speichern
von Befehlen umfaßt, die Programmschritten entsprechen.
11. Vorrichtung nach einem der vorstehenden Ansprüche, wobei die Eingabe-
/Ausgabeverarbeitungseinrichtung eine periphere Schnittstelleneinheit (XIU) für das Steuern von
Signalen aufweist, die von einem Peripheriegerät empfangen und durch dieses gesendet werden.
12. Vorrichtung nach einem der vorstehenden Ansprüche, wobei die Eingabe-
/Ausgabeverarbeitungseinrichtung eine Grafiksteuereinrichtung aufweist, um Signale zu steuern, die
zu einer Anzeigeeinrichtung übermittelt werden.
13. Vorrichtung nach einem der vorstehenden Ansprüche, wobei die Eingabe-
/Ausgabeverarbeitungseinrichtung eine Textsucheinrichtung zum Suchen von Datenstrukturen
aufweist, welche Text entsprechen.
14. Vorrichtung nach einem der vorstehenden Ansprüche, wobei zumindest ein ausgewähltes
der Verarbeitungselemente zumindest ein erstes Registerelement aufweist, welches diesem
Verarbeitungselement zugeordnet ist, um digitale Werte zu speichern, die Daten entsprechen, sowie eine
Einfügungseinrichtung aufweist, die Einrichtungen zum Erzeugen und Anwenden von Befehlen auf
das ausgewählte Verarbeitungselement umfaßt, um die Bewegung von Daten in zumindest das
erste Registerelement und aus diesem heraus zu kontrollieren.
15. Vorrichtung nach einem der vorstehenden Ansprüche, wobei zumindest ein ausgewähltes
der Verarbeitungselemente zumindest ein erstes Registerelement aufweist, welches diesem
Verarbeitungselement zugeordnet ist, um digitale Werte zu speichern, die Daten entsprechen, und eine
Einfügungseinrichtung aufweist, welche Einrichtungen zum Erzeugen und Anwendungen von
Befehlen auf das ausgewählte Verarbeitungselement umfaßt, um die Ausführung von ausgewählten
Logikoperationen mit ausgewählten Datenwerten zu bewirken, die in zumindest dem ersten
Registerelement gespeichert sind.
16. Vorrichtung nach einem der vorstehenden Ansprüche, wobei zumindest eines der
Verarbeitungselemente eine Abfangeinrichtung aufweist, der auf ein Abfangsignal reagiert, um eine
Abfangsequenz auszulösen, wobei die Abfangsequenz ausgewählte Programmschritte umfaßt, die in
Reaktion auf ein Abfangsignal ausgeführt werden sollen, und mit einer Einfügungseinrichtung, welche
Einrichtungen zum Erzeugen und Anwenden von Befehlen auf das Verarbeitungselement, um ein
Signal für ein Abfangereignis zu erzeugen.
17. Vorrichtung nach einem der vorstehenden Ansprüche, wobei zumindest eines der
Verarbeitungselemente eine Unterbrechungseinrichtung aufweist, welche auf ein Unterbrechungssignal
(Interruptsignal) reagiert, um eine Unterbrechungssequenz auszulösen, wobei die
Unterbrechungssequenz ausgewählte Programmschritte umfaßt, die in Reaktion auf ein Unterbrechungssignal
ausgeführt werden sollen, und mit einer Einfügungseinrichtung, die Einrichtungen zum Erzeugen und
Anwenden von Befehlen auf das Prozessorelement umfaßt, um eine Unterbrechungssequenz
auszulösen.
18. Vorrichtung nach Anspruch 17, wobei die Unterbrechungseinrichtung Einrichtungen zum
Erzeugen eines Abfangsignales in Reaktion auf ein Unterbrechungssignal aufweist.
19. Verfahren zum Betreiben eines digitalen Datenprozessors einschließlich eines Satzes von
miteinander verbundenen Verarbeitungselementen (58, 60, 82, 84), wobei das Verfahren die
Schritte aufweist:
Heranholen von Befehlen in Form eines Befehlsstromes von einer ersten Befehlsquelle
durch ein erstes Verarbeitungselement (58),
wobei zumindest ein weiteres der Verarbeitungselemente
Eingabe-/Ausgabeverarbeitungseinrichtungen (60) zum Verarbeiten von Signalen aufweist, die von einem peripheren Gerät
empfangen und an ein solches übermittelt werden, die Eingabe-/Ausgabeverarbeitungseinrichtung
eine Einfügungseinrichtung aufweist, die Einfügungseinrichtung auf ausgewählte Signale von dem
peripheren Gerät reagiert, um Steuerbefehle für einen direkten Speicherzugriff (DMA) zu erzeugen,
und diese DMA-Steuerbefehle als eingefügte Befehle auf das erste Verarbeitungselement
anwendet, damit sie durch diese verarbeitet werden, um zumindest DMA-Übertragungen mit der
peripheren Einrichtung auszulösen,
das erste Verarbeitungselement sowohl die Befehle, die von der ersten Befehlsquelle
herangeholt werden als auch die eingefügten Befehle verarbeitet, wobei die eingefügten Befehle in
derselben Art und Weise wie die von der ersten Befehlsquelle herangeholten Befehle ausgeführt
werden und ohne die Abfolge der letzteren zu beeinflussen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37032589A | 1989-06-22 | 1989-06-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69033965D1 DE69033965D1 (de) | 2002-07-04 |
DE69033965T2 true DE69033965T2 (de) | 2003-01-09 |
Family
ID=23459177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69033965T Expired - Fee Related DE69033965T2 (de) | 1989-06-22 | 1990-06-21 | Multiprozessorsystem mit mehrfachen Befehlsquellen |
Country Status (6)
Country | Link |
---|---|
EP (2) | EP0404559B1 (de) |
JP (1) | JPH03116234A (de) |
AT (1) | ATE218225T1 (de) |
CA (1) | CA2019299C (de) |
DE (1) | DE69033965T2 (de) |
ES (1) | ES2173075T3 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761413A (en) * | 1987-12-22 | 1998-06-02 | Sun Microsystems, Inc. | Fault containment system for multiprocessor with shared memory |
US5245563A (en) * | 1991-09-20 | 1993-09-14 | Kendall Square Research Corporation | Fast control for round unit |
US5313647A (en) * | 1991-09-20 | 1994-05-17 | Kendall Square Research Corporation | Digital data processor with improved checkpointing and forking |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
CA2078312A1 (en) | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital data processor with improved paging |
EP1496420B1 (de) * | 2000-05-22 | 2007-07-04 | Infineon Technologies AG | Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren |
US7337306B2 (en) | 2000-12-29 | 2008-02-26 | Stmicroelectronics, Inc. | Executing conditional branch instructions in a data processor having a clustered architecture |
FR2831739B1 (fr) * | 2001-10-31 | 2005-07-22 | Gemplus Card Int | Procede de mise en oeuvre securisee d'un module fonctionnel, dans un composant electronique et composant correspondant |
CN1555005A (zh) * | 2003-12-29 | 2004-12-15 | ����ͨѶ�ɷ�����˾ | 动态循环流水线的交叠式命令提交方法 |
US7937557B2 (en) | 2004-03-16 | 2011-05-03 | Vns Portfolio Llc | System and method for intercommunication between computers in an array |
EP1821211A3 (de) * | 2006-02-16 | 2008-06-18 | Technology Properties Limited | Kooperatives Multitaskingverfahren in einem Multiprozessorsystem |
US7934075B2 (en) | 2006-02-16 | 2011-04-26 | Vns Portfolio Llc | Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array |
US7904615B2 (en) | 2006-02-16 | 2011-03-08 | Vns Portfolio Llc | Asynchronous computer communication |
US7617383B2 (en) | 2006-02-16 | 2009-11-10 | Vns Portfolio Llc | Circular register arrays of a computer |
EP1821202B1 (de) * | 2006-02-16 | 2011-01-12 | VNS Portfolio LLC | Ausführung von Anweisungen direkt von der Eingabequelle aus |
US7966481B2 (en) | 2006-02-16 | 2011-06-21 | Vns Portfolio Llc | Computer system and method for executing port communications without interrupting the receiving computer |
TW200817925A (en) * | 2006-03-31 | 2008-04-16 | Technology Properties Ltd | Method and apparatus for operating a computer processor array |
US7555637B2 (en) | 2007-04-27 | 2009-06-30 | Vns Portfolio Llc | Multi-port read/write operations based on register bits set for indicating select ports and transfer directions |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4553203A (en) * | 1982-09-28 | 1985-11-12 | Trw Inc. | Easily schedulable horizontal computer |
US4587612A (en) * | 1982-10-22 | 1986-05-06 | International Business Machines Corporation | Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter |
US4709324A (en) * | 1985-11-27 | 1987-11-24 | Motorola, Inc. | Data processor control unit having an interrupt service using instruction prefetch redirection |
US4888689A (en) * | 1986-10-17 | 1989-12-19 | Amdahl Corporation | Apparatus and method for improving cache access throughput in pipelined processors |
-
1990
- 1990-06-19 CA CA002019299A patent/CA2019299C/en not_active Expired - Fee Related
- 1990-06-21 EP EP90306776A patent/EP0404559B1/de not_active Expired - Lifetime
- 1990-06-21 EP EP01204052A patent/EP1182544A2/de not_active Withdrawn
- 1990-06-21 ES ES90306776T patent/ES2173075T3/es not_active Expired - Lifetime
- 1990-06-21 AT AT90306776T patent/ATE218225T1/de not_active IP Right Cessation
- 1990-06-21 DE DE69033965T patent/DE69033965T2/de not_active Expired - Fee Related
- 1990-06-22 JP JP2163027A patent/JPH03116234A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CA2019299C (en) | 2002-01-15 |
EP0404559A2 (de) | 1990-12-27 |
JPH03116234A (ja) | 1991-05-17 |
EP0404559A3 (de) | 1994-01-05 |
CA2019299A1 (en) | 1990-12-22 |
EP1182544A2 (de) | 2002-02-27 |
ATE218225T1 (de) | 2002-06-15 |
EP0404559B1 (de) | 2002-05-29 |
DE69033965D1 (de) | 2002-07-04 |
ES2173075T3 (es) | 2002-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69033965T2 (de) | Multiprozessorsystem mit mehrfachen Befehlsquellen | |
DE112011101364B4 (de) | Fehlerbehebung in Multithread-Code | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE69130138T2 (de) | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor | |
DE102018005216A1 (de) | Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen | |
DE69415126T2 (de) | Gegenflusspipelineprozessor | |
DE69807729T2 (de) | Threadumschaltungssteuerung in einem multithreadprozessorsystem | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE69130858T2 (de) | Überlappende Serienverarbeitung | |
DE112005000706B4 (de) | Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene | |
DE69130519T2 (de) | Hochleistungsfähiger Multiprozessor mit Gleitkommaeinheit und Verfahren zu seinem Betrieb | |
DE69825350T2 (de) | Verzweigungsvorhersage in Rechnersystem | |
DE69600995T2 (de) | Fehlerbearbeitung in spekulativen befehlen | |
DE60115976T2 (de) | Rechnersystem und Interruptvorgang | |
DE102018005172A1 (de) | Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger | |
DE60014005T2 (de) | Verfahren und Vorrichtung zur Befehlsvorabholung | |
DE10297856B4 (de) | Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt | |
DE68927415T2 (de) | Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69819849T2 (de) | Anordnung zum willkürlichen Abtasten von Instruktionen in einer Prozessorpipeline | |
DE60217157T2 (de) | Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts | |
DE102018006735A1 (de) | Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array | |
DE102018006889A1 (de) | Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array | |
DE19506734A1 (de) | Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange | |
DE112011100715T5 (de) | Hardware-hilfs-thread |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8339 | Ceased/non-payment of the annual fee |