DE69430510T2 - Arithmetik-Logikschaltung mit drei Eingängen - Google Patents
Arithmetik-Logikschaltung mit drei EingängenInfo
- Publication number
- DE69430510T2 DE69430510T2 DE69430510T DE69430510T DE69430510T2 DE 69430510 T2 DE69430510 T2 DE 69430510T2 DE 69430510 T DE69430510 T DE 69430510T DE 69430510 T DE69430510 T DE 69430510T DE 69430510 T2 DE69430510 T2 DE 69430510T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- data
- input
- register
- arithmetic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 description 391
- 238000012546 transfer Methods 0.000 description 152
- 230000015654 memory Effects 0.000 description 148
- 238000010977 unit operation Methods 0.000 description 67
- 238000000034 method Methods 0.000 description 36
- 238000012986 modification Methods 0.000 description 35
- 230000004048 modification Effects 0.000 description 35
- 239000000872 buffer Substances 0.000 description 30
- 239000003607 modifier Substances 0.000 description 22
- 238000003860 storage Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 20
- 230000008859 change Effects 0.000 description 18
- 230000000295 complement effect Effects 0.000 description 17
- 238000011156 evaluation Methods 0.000 description 17
- 230000014509 gene expression Effects 0.000 description 17
- 102000017177 Fibromodulin Human genes 0.000 description 15
- 108010013996 Fibromodulin Proteins 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 12
- 230000000873 masking effect Effects 0.000 description 10
- 101000643024 Homo sapiens Stimulator of interferon genes protein Proteins 0.000 description 9
- 102100035533 Stimulator of interferon genes protein Human genes 0.000 description 9
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 9
- 230000006854 communication Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 9
- 238000003384 imaging method Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 6
- 230000005669 field effect Effects 0.000 description 6
- 230000010076 replication Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 5
- 101100332287 Dictyostelium discoideum dst2 gene Proteins 0.000 description 4
- 239000003086 colorant Substances 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 238000012905 input function Methods 0.000 description 4
- 229920006395 saturated elastomer Polymers 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 101150051438 CYP gene Proteins 0.000 description 2
- 101150069538 ROT1 gene Proteins 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101150026303 HEX1 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005577 local transmission Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Image Processing (AREA)
Description
- Diese Anmeldung bezieht auf Verbesserungen an den in den folgenden gleichzeitig anhängigen US-Patentanmeldungen offenbarten Erfindungen, die sämtlich auf Texas Instruments übertragen sind:
- US-Patentanmeldung, lfd. Nr. 07/437.858, eingereicht am 17. November 1989, jetzt US-Patent Nr. 5.212.777, erteilt am 18. Mai 1993, mit dem Titel "MULTIPROCESSOR RECONFIGURABLE IN SINGLE INSTRUCTION MULTIPLE DATA (SIMD) AND MULTIPLE INSTRUCTION MULTIPLE DATA (MIMD) MODES AND METHOD OF OPERATION".
- US-Patentanmeldung, lfd. Nr. 07/437.946, eingereicht am 17. November 1989, jetzt US-Patent Nr. 5.197.140, erteilt am 23. März 1993, mit dem Titel "SLICED ADDRESSING MULTI-PROCESSOR AND METHOD OF OPERATION".
- US-Patentanmeldung, lfd. Nr. 07/437.857, eingereicht am 17. November 1989, jetzt US-Patent Nr. 5.339.447, erteilt am 16. August 1994, mit dem Titel "ONES COUNTING CIRCUIT, UTILIZING A MATRIX OF INTERCONNECTED HALF-ADDERS, FOR COUNTING THE NUMBERS OF ONES IN A BINARY STRING OF IMAGE DATA".
- US-Patentanmeldung, lfd. Nr. 07/437.851, eingereicht am 17. November 1989, jetzt US-Patent Nr. 5.239.654, erteilt am 24. August 1993, mit dem Titel "DUAL MODE SIMD/MIMD PROCESSOR PROVIDING REUSE OF MIMD INSTRUCTION MEMORIES A5 DATA MEMORIES WHEN OPERATING IN SIMD MODE".
- US-Patentanmeldung, lfd. Nr. 07/437.875, eingereicht am 17. November 1989, jetzt US-Patent Nr. 5.226.125, erteilt am 6. Juli 1993, mit dem Titel "SWITCH MATRIX HAVING INTEGRATED CROSSPOINT LOGIC AND METHOD OF OPERATION".
- Das technische Gebiet dieser Erfindung ist das Gebiet der digitalen Datenverarbeitung und insbesondere der Mikroprozessorschaltungen, Architekturen und Verfahren zur digitalen Verarbeitung und insbesondere zur digitalen Bild-/Graphikverarbeitung.
- Diese Erfindung bezieht sich auf das Gebiet der Computergraphik und insbesondere der Bitmap-Graphik. In der Bitmap-Graphik speichert der Computerspeicher Daten für jedes einzelne Bildelement oder Pixel eines Bildes an Speicherplätzen, die dem Platz dieses Pixels in dem Bild entsprechen. Dieses Bild kann ein Bild sein, das angezeigt werden soll, oder es kann ein aufgenommenes Bild sein, das manipuliert, gespeichert, angezeigt oder erneut gesendet werden soll. Das Gebiet der Bitmap-Computergraphik hat stark von den gesunkenen Kosten und der erhöhten Kapazität der dynamischen Schreib-Lese-Speicher (DRAM) und von den gesunkenen Kosten und der erhöhten Verarbeitungsleistung der Mikroprozessoren profitiert. Diese vorteilhaften Veränderungen in bezug auf die Kosten und die Leistung der Einzelteile ermöglichen, daß größere und komplexere Computerbildsysteme wirtschaftlich möglich werden.
- Das Gebiet der Bitmap-Graphik hat bei der Entwicklung der zur Bilddatenmanipulation verwendeten Verarbeitungstypen mehrere Phasen durchlaufen. Anfangs verwendete ein Computersystem, das die Bitmap-Graphik unterstützt, für sämtliche Bitmap-Operationen den Systemprozessor. Dieser Systemtyp litt unter mehreren Nachteilen. Zunächst war der Computersystemprozessor nicht besonders für die Behandlung von Bitmap-Graphiken entworfen. Entwurfswahlen, die für die Universaldatenverarbeitung sehr sinnvoll sind, sind für Bitmap-Graphiksysteme ungeeignet. Folglich wurden einige Routine-Graphikaufgaben langsam bearbeitet. Außerdem wurde schnell entdeckt, daß die zur Bildmanipulation der Bitmap-Graphik erforderliche Verarbeitung die Rechenkapazität des Systemprozessors so belastete, daß andere Operationen ebenfalls verzögert wurden.
- Der nächste Schritt in der Entwicklung der Bitmap-Graphikverarbeitung waren hierzu vorgesehene Hardware-Graphik-Controller. Diese Vorrichtungen können unter der Steuerung des Systemprozessors einfache Figuren wie etwa Linien, Ellipsen und Kreise zeichnen. Viele dieser Vorrichtungen können außerdem Pixelblockübertragungen (PixBlt) ausführen. Eine Pixelblockübertragung ist eine Speicherbewegungsoperation von Bilddaten aus einem Speicherabschnitt in einen anderen. Eine Pixelblockübertragung ist nützlich zum Rendern von Standardbildelementen wie etwa alphanumerischen Zeichen in einer besonderen Schriftart in einer Anzeige durch Übertragung aus dem nicht angezeigten Speicher in den Bitmap-Anzeigespeicher. Diese Funktion kann außerdem zum Erzeugen von Kacheln durch Übertragen des gleichen kleinen Bildes in den gesamten Bitmap-Anzeigespeicher verwendet werden. Die integrierten Algorithmen zum Ausführen einiger der am häufigsten verwendeten Graphikfunktionen schaffen eine Möglichkeit zur Verbesserung der Systemleistung. Ein nützliches Computergraphiksystem erfordert aber häufig viele Funktionen neben den wenigen, die in einem solchen Hardware-Graphik-Controller realisiert sind. Diese Zusatzfunktionen müssen softwaremäßig durch den Systemprozessor realisiert werden. Typischerweise gewähren diese Hardware-Graphik-Controller dem Systemprozessor nur einen begrenzten Zugriff auf den Bitmap-Speicher und begrenzen somit den Grad, in dem die System-Software den festen Funktionssatz des Hardware-Graphik-Controllers erweitern kann.
- Der Graphiksystemprozessor repräsentiert noch einen weiteren Schritt in der Entwicklung der Bitmap-Graphikverarbeitung. Ein Graphiksystemprozessor ist eine programmierbare Vorrichtung, die sämtliche Eigenschaften eines Mikroprozessors besitzt und außerdem Spezialfunktionen für Bitmap-Graphiken enthält. Diese Klasse von Vorrichtungen repräsentieren die von Texas Instruments Incorporated hergestellten Graphiksystemprozessoren TMS34010 und TMS34020. Diese Graphiksystemprozessoren reagieren auf die gleiche Weise wie ein Mikroprozessor auf ein gespeichertes Programm und enthalten die Fähigkeit zur Datenmanipulation über ein Rechenwerk, zur Datenspeicherung in Registerablagen und zur Steuerung sowohl des Programmablaufs als auch des externen Datenspeichers. Außerdem enthalten diese Vorrichtungen Spezial- Graphikmanipulations-Hardware, die gemäß der Programmsteuerung arbeitet. Zusatzbefehle in dem Befehlssatz dieser Graphiksystemprozessoren steuern die Spezialgraphik-Hardware. Diese Befehle und die Hardware, die sie unterstützt, sind in der Weise ausgewählt, daß sie Grund-Graphikfunktionen ausführen, die in vielen Kontexten nützlich sind. Somit kann ein Graphiksystemprozessor mit Algorithmen, die für das besondere Problem ausgewählt wurden, für viele verschiedene Graphikanwendungen programmiert werden. Dies schafft eine Zunahme der Nützlichkeit ähnlich der, die durch den Übergang von Hardware- Controllern zu programmierten Mikroprozessoren geschaffen wird. Da diese Graphiksystemprozessoren auf die gleiche Weise wie Mikroprozessoren programmierbare Vorrichtungen sind, können sie als selbständige Graphikprozessoren, als Slave-Graphikcoprozessoren für einen Systemprozessor oder als eng gekoppelte Graphik-Controller arbeiten.
- Neue Anwendungen führen zu dem Wunsch nach der Schaffung leistungsfähigerer Graphikfunktionen. Mehrere Gebiete erfordern, daß weitere kosteneffektive Graphikroutinen wirtschaftlich möglich werden. Diese umfassen die Durchführung von Videokonferenzen, die Multimedia-Datenverarbeitung mit Bewegtbildvideo, das hochaufgelöste Fernsehen, Farbfax und Digitalphotographie. Jedes dieser Gebiete bietet einzigartige Probleme, wobei aber die Bilddatenkompression und -dekompression gemeinsame Themen sind. Der Betrag der Übertragungsbandbreite und der Betrag der Ablagekapazität, die für Bilder und insbesondere für Bewegtbildvideo benötigt wird, sind gewaltig. Ohne effiziente Videokompression und -dekompression, die zu einer akzeptablen Endbildqualität führen, sind diese Anwendungen durch die Kosten im Zusammenhang mit der Übertragungsbandbreite und Ablagekapazität begrenzt. Außerdem besteht im Gebiet ein Bedarf an einem Einzelsystem, das sowohl Bildverarbeitungsfunktionen wie etwa die Bilderkennung als auch Graphikfunktionen wie etwa die Anzeigesteuerung unterstützen kann.
- EP 0 451562 offenbart eine Prozessorarchitektur, die so beschaffen ist, daß sie das Problem, daß der Operand für einen Befehl von dem Ergebnis einer früheren in der Pipeline abhängt, überwindet. Die offenbarte Arithmetik-/Logikeinheit umfaßt einen Drei-Port-Addierer, dessen einer Eingang eine logische Kombination zweier Operanden ist, wobei die Kombination durch ein Steuersignal als UND, ODER oder XOR ausgewählt wird. Einer dieser Operanden wird an einen anderen Eingangsport des Addierers angelegt.
- Gemäß der vorliegenden Erfindung wird eine Datenverarbeitungsvorrichtung geschaffen, mit:
- einem Befehlsdecodierer, der eine erste Menge von Funktionssignalen und eine zweite Menge von Funktionssignalen, die einem momentanen Befehl entsprechen, unabhängig erzeugt; und
- einer Arithmetik-/Logikeinheit mit drei Eingängen, die enthält:
- ein UND-Gatter, das einen ersten Eingang, der ein erstes Mehrbit- Eingangssignal, einen zweiten Eingang sowie einen Ausgang, der eine bitweise UND-Verknüpfung von an den ersten und zweiten Eingängen empfangenen Signalen bildet, besitzt;
- einen ersten Generator Boolescher Funktionen mit zwei Eingängen, der an den Befehlsdecodierer angeschlossen ist und einen ersten Eingang, der ein zweites Mehrbit-Eingangssignal empfängt, einen zweiten Eingang, der ein drittes Mehrbit-Eingangssignal empfängt, und einen Ausgang, der an den zweiten Eingang des UND-Gatters angeschlossen ist, besitzt, wobei der Ausgang eine erste Boolesche Kombination F1(B,C) von an den ersten und zweiten Eingängen empfangenen Signalen bildet, die der ersten Menge von Funktionssignalen entspricht und aus der folgenden Menge Boolescher Kombinationen mit zwei Eingängen ausgewählt ist:
- (1) alle Nullen unabhängig von B und C,
- (2) alle Einsen unabhängig von B und C,
- (3) B,
- (4) -B-1,
- (5) C,
- (6) -C-1,
- (7) B UND C,
- (8) -(B UND C)-1,
- (9) B ODER C,
- (10) -(B ODER C)-1,
- (11) B UND NICHT C,
- (12) -(B UND NICHT C)-1,
- (13) B ODER NICHT C,
- (14) -(B ODER NICHT C)-1,
- (15) (B UND NICHT C) ODER ((-B-1) UND C), und
- (16) (B UND C) ODER ((-B-1) UND NICHT C);
- einen zweiten Generator Boolescher Funktionen mit zwei Eingängen, der an den Befehlsdecodierer angeschlossen ist und einen ersten Eingang, der das zweite Mehrbit-Eingangssignal empfängt, einen zweiten Eingang, der das dritte Mehrbit-Eingangssignal empfängt, und einen Ausgang besitzt, der eine zweite Boolesche Kombination F2(B,C) von an den ersten und zweiten Eingängen empfangenen Signalen bildet, die der zweiten Menge von Funktionssignalen entspricht und aus der obigen Menge Boolescher Kombinationen mit zwei Eingängen ausgewählt ist; und
- einen Addierer, der einen ersten Eingang, der an den Ausgang des UND-Gatters angeschlossen ist, einen zweiten Eingang, der an den Ausgang des zweiten Generators Boolescher Funktionen mit zwei Eingängen angeschlossen ist, und einen Ausgang, der die Summe der an den ersten und zweiten Eingängen empfangenen Signale bildet, besitzt.
- Weitere Ausführungsformen dieser Erfindung sind in den beigefügten abhängigen Ansprüchen angegeben.
- Diese und weitere Aspekte der vorliegenden Erfindung werden unten zusammen mit den Figuren beschrieben, in denen:
- Fig. 1 die Systemarchitektur eines Bildverarbeitungssystems zeigt, das diese Erfindung enthält;
- Fig. 2 die Architektur einer Schaltung eines einzelnen integrierten Mikroprozessors zeigt, der diese Erfindung enthält;
- Fig. 3 in Form eines Blockschaltplans einen der in Fig. 2 gezeigten digitalen Bild- /Graphikprozessoren zeigt;
- Fig. 4 in schematischer Form die Pipelinestufen des Betriebs des in Fig. 2 gezeigten digitalen Bild-/Graphikprozessors zeigt;
- Fig. 5 in Form eines Blockschaltplans die Dateneinheit der in Fig. 3 gezeigten digitalen Bild-/Graphikprozessoren zeigt;
- Fig. 6 in schematischer Form die Felddefinitionen des Statusregisters der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 7 in Form eines Blockschaltplans die Art der Aufspaltung des Rechenwerks der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 8. in Form eines Blockschaltplans die Art der Adressierung des Datenregisters der in Fig. 5 gezeigten Dateneinheit als Rotationsregister zeigt;
- Fig. 9 in schematischer Form die Felddefinitionen des ersten Datenregisters der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 10 in Form eines Blockschaltplans die Konstruktion der Ein-Bit-Schaltung des Rechenwerks der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 11 in schematischer Form die Konstruktion der Ergebnislogik und der Logik für den Übertrag für die nächsthöhere Stelle der in Fig. 10 gezeigten Bitschaltung zeigt;
- Fig. 12 in schematischer Form die Konstruktion des booleschen Funktionsgenerators der in Fig. 10 gezeigten Bitschaltung zeigt;
- Fig. 13 in Form eines Blockschaltplans die Funktionssignalauswahleinrichtung des Funktionssignalgenerators der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 14 in Form eines Blockschaltplans den Funktionssignal-Modifiziererabschnitt des Funktionssignalgenerators der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 15 in Form eines Blockschaltplan den Generator für den Übertrag von einer vorhergehenden Stelle an das Bit 0 der in Fig. 5 gezeigten Dateneinheit zeigt;
- Fig. 16 in Form eines Blockschaltplans eine konzeptionelle Ansicht des in den Fig. 10 und 11 gezeigten Rechenwerks zeigt;
- Fig. 17 in Form eines Blockschaltplans eine konzeptionelle Ansicht einer alternativen Ausführungsform des Rechenwerks zeigt;
- Fig. 18 in schematischer Form das Befehlswort zeigt, das die Operation des in Fig. 3 gezeigten digitalen Bild-/Graphikprozessors steuert; und
- Fig. 19 in schematischer Form die integrierte Mehrprozessorschaltung dieser Erfindung mit einem einzelnen digitalen Bild-/Graphikprozessor in einem Farbfaxsystem zeigt.
- Fig. 1 ist ein Blockschaltplan eines Bilddaten-Verarbeitungssystems mit einer für die Bild- und Graphikverarbeitung konstruierten integrierten Mehrprozessorschaltung, die diese Erfindung enthält. Dieses Datenverarbeitungssystem enthält ein Host-Verarbeitungssystem 1. Das Host- Verarbeitungssystem 1 liefert die Datenverarbeitung für das Host-System des Datenverarbeitungssystems aus Fig. 1. In dem Host-Verarbeitungssystem 1 sind ein Prozessor, wenigstens eine Eingabevorrichtung, eine Langzeit- Ablagevorrichtung, ein Nur-Lese-Speicher, ein Schreib-Lese-Speicher und wenigstens ein mit dem Host-Bussystem gekoppeltes Host-Peripheriegerät 2 enthalten. Die Anordnung und der Betrieb des Host-Verarbeitungssystems werden als herkömmlich betrachtet. Wegen dieser Verarbeitungsfunktionen steuert das Host-Verarbeitungssystem 1 die Funktion des Bilddaten-Verarbeitungssystems.
- Die integrierte Mehrprozessorschaltung 100 liefert fast die gesamte Datenverarbeitung einschließlich der Datenmanipulation und -berechnung für die Bildoperationen des Bilddaten-Verarbeitungssystems aus Fig. 1. Die integrierte Mehrprozessorschaltung 100 ist doppeltgerichtet an einen Bildsystembus angeschlossen und kommuniziert über diesen Bildsystembus mit dem Host- Verarbeitungssystem 1. In der Anordnung aus Fig. 1 arbeitet die integrierte Mehrprozessorschaltung 100 unabhängig von dem Host-Verarbeitungssystem 1. Die integrierte Mehrprozessorschaltung 100 spricht aber auf das Host- Verarbeitungssystem 1 an.
- Fig. 1 zeigt zwei Bildsysteme. Die Abbildungsvorrichtung 3 stellt einen Dokumentabtaster, einen Abtaster mit ladungsgekoppelten Vorrichtungen oder eine Videokamera, dar, wobei diese als Bildeingabevorrichtung dienen. Die Abbildungsvorrichtung 3 liefert dieses Bild an den Bilderfassungs-Controller 4, der dazu dient, das Bild zu digitalisieren und zu Rasterabtastrahmen zu bilden. Dieser Rahmenerfassungsprozeß wird durch Signale von der integrierten Mehrprozessorschaltung 100 gesteuert. Die auf diese Weise gebildeten Bildrahmen werden in dem Video-Schreib-Lese-Speicher 5 gespeichert. Durch die integrierte Mehrprozessorschaltung 100 kann über den Bildsystembus, der die Datenübertragung zur Bildverarbeitung ermöglicht, auf den Video-Schreib-Lese- Speicher 5 zugegriffen werden.
- Das zweite Bildsystem steuert eine Videoanzeige an. Die integrierte Mehrprozessorschaltung 100 kommuniziert mit dem Video-Schreib-Lese- Speicher 6 zur Spezifikation eines angezeigten Bildes über ein Pixelmuster. Die integrierte Mehrprozessorschaltung 100 steuert über den Bildsystembus die in dem Video-Schreib-Lese-Speicher 6 gespeicherten Bilddaten. Die diesem Bild entsprechenden Daten werden von dem Video-Schreib-Lese-Speicher 6 abgerufen und an die Videopalette 7 geliefert. Die Videopalette 7 kann diese abgerufenen Daten in einen anderen Farbraum umwandeln, die Anzahl der Bits pro Pixel erweitern und dergleichen. Diese Umsetzung kann über eine Nachschlagtabelle ausgeführt werden. Außerdem erzeugt die Videopalette 7 die richtigen Videosignale zum Ansteuern der Videoanzeige 8. Wenn diese Videosignale analoge Signale sind, enthält die Videopalette 7 eine geeignete Digital-Analog- Umsetzung. Das Videopegel-Ausgangssignal von der Videopalette 7 kann Farb-, Sättigungs- und Helligkeitsinformationen enthalten. Die integrierte Mehrprozessorschaltung 100 steuert die in der Videopalette 7 gespeicherten Daten und steuert somit den Datenumwandlungsprozeß und die Zeitgebung der Bildrahmen. Die integrierte Mehrprozessorschaltung 100 kann über die Steuerung der Videopalette 7 die Zeilenlänge und die Anzahl der Zeilen pro Rahmen des Videoanzeigebilds, die Synchronisation, den Rücksprung und die Austastsignale steuern. Es ist von Bedeutung, daß die integrierte Mehrprozessorschaltung 100 bestimmt und steuert, wo die Graphikanzeigeinformationen in dem Video- Schreib-Lese-Speicher 6 gespeichert werden. Nachfolgend bestimmt die integrierte Mehrprozessorschaltung 100 während des Auslesens aus dem Video- Schreib-Lese-Speicher 6 die Auslesereihenfolge aus dem Video-Schreib-Lese- Speicher 6, die Adressen, auf die zugegriffen werden soll, und die zum Erzeugen des gewünschten Graphikbilds auf der Videoanzeige 8 benötigten Steuerinformationen.
- Die Videoanzeige 8 erzeugt die spezifizierte Videoanzeige zur Betrachtung durch den Anwender. Es gibt zwei umfassend verwendete Techniken. Die erste Technik spezifiziert die Videodaten für jedes Pixel in bezug auf Farbe, Farbton, Helligkeit und Sättigung. Für die zweite Technik werden für jedes Pixel die Farbniveaus von Rot, Blau und Grün spezifiziert. Die Videopalette 7 der Videoanzeige 8 ist so konstruiert und hergestellt, daß sie mit der gewählten Technik kompatibel ist.
- Fig. 1 zeigt einen an den Bildsystembus gekoppelten Additionsspeicher 9. Dieser zusätzliche Speicher kann einen zusätzlichen Video-Schreib-Lese-Speicher, einen dynamischen Schreib-Lese-Speicher, einen statischen Schreib-Lese-Speicher oder einen Nur-Lese-Speicher umfassen. Die integrierte Mehrprozessorschaltung 100 kann entweder ganz oder teilweise durch ein in dem Speicher 9 gespeichertes Programm gesteuert werden. Dieser Speicher 9 kann außerdem verschiedene Typen von Graphikbilddaten speichern. Außerdem enthält die integrierte Mehrprozessorschaltung 100 vorzugsweise Speicherschnittstellenschaltungen zum Video-Schreib-Lese-Speicher, zum dynamischen Schreib-Lese-Speicher und zum statischen Schreib-Lese-Speicher. Somit kann unter Verwendung der integrierte Mehrprozessorschaltung 100 ein System ohne irgendeinen Video-Schreib-Lese- Speicher 5 oder 6 konstruiert werden.
- Fig. 1 zeigt einen Sende-Empfänger 16. Der Sende-Empfänger 16 liefert eine Übersetzung und eine doppeltgerichtete Kommunikation zwischen dem Bildsystembus und einem Kommunikationskanal. Ein Beispiel eines Systems, das den Sende-Empfänger 16 verwendet, ist ein Videokonferenzsystem. Das in Fig. 1 gezeigte Bilddaten-Verarbeitungssystem verwendet die Abbildungsvorrichtung 3 und den Bilderfassungs-Controller 4 zum Bilden eines Videobilds von Personen an einem ersten Ort. Die integrierte Mehrprozessorschaltung 100 schafft eine Videokompression und sendet das komprimierte Videosignal über den Sende- Empfänger 16 und den Kommunikationskanal an ein ähnliches Bilddaten- Verarbeitungssystem an einem anderen Ort. Der Sende-Empfänger 16 empfängt über den Kommunikationskanal ein ähnlich komprimiertes Videosignal von dem fernen Bilddaten-Verarbeitungssystem. Die integrierte Mehrprozessorschaltung 100 dekomprimiert dieses empfangene Signal und steuert den Video-Schreib- Lese-Speicher 6 und die Videopalette 7 zum Anzeigen des entsprechenden dekomprimierten Videosignals auf der Videoanzeige 8. Es wird angemerkt, daß dies nicht das einzige Beispiel ist, in dem das Bilddaten-Verarbeitungssystem den Sende-Empfänger 16 verwendet. Außerdem wird angemerkt, daß die doppeltgerichteten Kommunikationen keine Signale vom gleichen Typ zu sein brauchen. Beispielsweise sendet in einem interaktiven Kabelfernsehsignal der Kabelsystemkopf komprimierte Videosignale über den Kommunikationssignal an das Bilddaten-Verarbeitungssystem. Das Bilddaten-Verarbeitungssystem kann über den Sende-Empfänger 16 und über den Kommunikationskanal Steuer- und Datensignale an den Kabelsystemkopf zurücksenden.
- Fig. 1 zeigt die integrierte Mehrprozessorschaltung 100, ausgeführt in einem System mit dem Hostverarbeitungssystem 1. Der Fachmann auf dem Gebiet erkennt aus der folgenden Offenbarung der Erfindung, daß die integrierte Mehrprozessorschaltung 100 als der einzige Prozessor eines nützlichen Systems verwendet werden kann. In einem solchen System ist die integrierte Mehrprozessorschaltung 100 in der Weise programmiert, daß sie sämtliche Funktionen des Systems ausführt.
- Diese Erfindung ist besonders nützlich in einem zur Bildverarbeitung verwendeten Prozessor. Gemäß der bevorzugten Ausführungsform ist diese Erfindung in der integrierten Mehrprozessorschaltung 100 ausgeführt. Diese bevorzugte Ausführungsform enthält mehrere völlig gleiche Prozessoren, die diese Erfindung ausführen. Jeder dieser Prozessoren wird ein digitaler Bild- /Graphikprozessor genannt. Diese Beschreibung ist lediglich eine Zweckmäßigkeitsfrage. Der Prozessor, der diese Erfindung ausführt, kann ein getrennt in einer einzelnen integrierten Schaltung oder ein in mehreren integrierten Schaltungen hergestellter Prozessor sein. Bei der Ausführung in einer einzelnen integrierten Schaltung kann diese einzelne integrierte Schaltung optional ebenfalls den von dem digitalen Bild-/Graphikprozessor verwendeten Nur-Lese-Speicher und Schreib-Lese-Speicher enthalten.
- Fig. 2 zeigt die Architektur der integrierten Mehrprozessorschaltung 100, die diese Erfindung enthält. Die integrierte Mehrprozessorschaltung 100 enthält: zwei Schreib-Lese-Speicher 10 und 20, von denen jeder in mehrere Abschnitte unterteilt ist; eine Kreuzschiene 50; einen Master-Prozessor 60; die digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74; den Übertragungs-Controller 80, der den Zugriff auf den Systemspeicher vermittelt; und den Rahmen-Controller 90, der den Zugriff auf unabhängige erste und zweite Bildspeicher steuern kann. Die integrierte Mehrprozessorschaltung 100 schafft einen hohen Grad von Betriebsparallelität, die in Bildverarbeitungs- und Graphikoperationen wie etwa bei der Multimedia-Datenverarbeitung nützlich ist.
- Die integrierte Mehrprozessorschaltung 100 enthält zwei Schreib-Lese-Speicher. Der Schreib-Lese-Speicher 10 ist in erster Linie dem Master-Prozessor 60 gewidmet. Er enthält zwei Befehls-Cache-Speicher 11 und 12, zwei Daten-Cache- Speicher 13 und 14 und einen Parameterspeicher 15. Diese Speicherabschnitte können physikalisch völlig gleich sein, wobei sie aber verschieden angeschlossen sind und verwendet werden. Auf den Schreib-Lese-Speicher 20 kann durch den Master-Prozessor 60 und durch jeden der digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 zugegriffen werden. Jeder digitale Bild-/Graphikprozessor 71, 72, 73 und 74 besitzt fünf entsprechende Speicherabschnitte. Diese enthalten einen Befehls-Cache-Speicher, drei Datenspeicher und einen Parameterspeicher. Der digitale Bild-/Graphikprozessor 71 besitzt einen entsprechenden Befehls-Cache- Speicher 21, die Datenspeicher 22, 23, 24 und den Parameterspeicher 25; der digitale Bild-/Graphikprozessor 72 besitzt den entsprechenden Befehls-Cache- Speicher 26, die Datenspeicher 27, 28, 29 und den Parameterspeicher 30; der digitale Bild-/Graphikprozessor 73 besitzt den entsprechenden Befehls-Cache- Speicher 31, die Datenspeicher 32, 33, 34 und den Parameterspeicher 35; und der digitale Bild-/Graphikprozessor 74 besitzt den entsprechenden Befehls-Cache- Speicher 36, die Datenspeicher 37, 38, 39 und den Parameterspeicher 40. Wie die Abschnitte des Schreib-Lese-Speichers 10 können diese Speicherabschnitte physikalisch völlig gleich sein, wobei sie aber verschieden angeschlossen sind und verwendet werden. Vorzugsweise enthält jeder dieser Speicherabschnitte der Speicher 10 und 20 bei einem Gesamtspeicher in der integrierten Mehrprozessorschaltung 100 von 50 KBytes 2KBytes.
- Die integrierte Mehrprozessorschaltung 100 ist in der Weise konstruiert, daß sie mit mehreren unabhängigen parallelen Datenübertragungen eine hohe Datenübertragungsrate zwischen den Prozessoren und dem Speicher schafft. Die Kreuzschiene 50 ermöglicht diese Datenübertragungen. Jeder digitale Bild- /Graphikprozessor 71, 72, 73 und 74 besitzt drei Speicherports, die in jedem Zyklus gleichzeitig arbeiten können. Ein Befehlsport (I) kann 64-Bit-Datenwörter aus dem entsprechenden Befehls-Cache holen. Ein lokaler Datenport (L) kann aus den Datenspeichern oder aus dem Parameterspeicher, die diesem digitalen Bild- /Graphikprozessor entsprechen, ein 32-Bit-Datenwort lesen oder ein 32-Bit- Datenwort in diese schreiben. Ein globaler Datenport (G) kann ein 32-Bit- Datenwort aus irgendeinem der Datenspeicher oder aus den Parameterspeichern oder aus dem Schreib-Lese-Speicher 20 lesen oder ein 32-Bit-Datenwort in diese schreiben. Der Master-Prozessor 60 enthält zwei Speicherports. Ein Befehlsport (I) kann ein 32-Bit-Befehlswort entweder aus dem Befehls-Cache 11 oder aus dem Befehls-Cache 12 holen. Ein Datenport (C) kann ein 32-Bit-Datenwort aus den Daten-Caches 13 oder 14, aus dem Parameterspeicher 15 des Schreib-Lese- Speichers 10 oder aus irgendeinem der Datenspeicher oder Parameterspeicher des Schreib-Lese-Speichers 20 lesen oder ein 32-Bit-Datenwort in diese schreiben. Der Übertragungs-Controller 80 kann über den Datenport (C) auf irgendeinen der Abschnitte des Schreib-Lese-Speichers 10 oder 20 zugreifen. Somit können in irgendeinem einzelnen Speicherzyklus fünfzehn parallele Speicherzugriffe angefordert werden. Zur Unterstützung so vieler paralleler Zugriffe sind die Schreib-Lese-Speicher 10 und 20 in 25 Speicher unterteilt.
- Die Kreuzschiene 50 steuert die Verbindungen des Master-Prozessors 60, der digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 und des Übertragungs- Controllers 80 mit den Speichern 10 und 20. Die Kreuzschiene 50 enthält mehrere in Zeilen und Spalten angeordnete Koppelpunkte 51. Jede Spalte von Koppelpunkten 51 entspricht einem einzelnen Speicherabschnitt und einem entsprechenden Bereich von Adressen. Ein Prozessor fordert über die höchstwertigen Bits einer durch diesen Prozessor ausgegebenen Adresse den Zugriff auf einen der Speicherabschnitte an. Diese durch den Prozessor ausgegebene Adresse läuft entlang einer Zeile. Der dem Speicherabschnitt mit dieser Adresse entsprechende Koppelpunkt 51 reagiert dadurch, daß er den Zugriff auf den Speicherabschnitt entweder gewährt oder verweigert. Falls während des momentanen Speicherzyklus kein anderer Prozessor Zugriff auf diesen Speicherabschnitt angefordert hat, gewährt der Koppelpunkt 51 durch Verbinden der Zeile und der Spalte den Zugriff. Dies liefert die Adresse an den Speicherabschnitt. Der Speicherabschnitt reagiert dadurch, daß er den Datenzugriff auf diese Adresse zuläßt. Dieser Datenzugriff kann entweder eine Datenleseoperation oder eine Datenschreiboperation sein.
- Falls mehr als ein Prozessor gleichzeitig den Zugriff auf den gleichen Speicherabschnitt fordert, gewährt die Kreuzschiene 50 den Zugriff nur einem der fordernden Prozessoren. Die Koppelpunkte 51 in jeder Spalte der Kreuzschiene 50 kommunizieren und gewähren den Zugriff anhand einer Prioritätshierarchie. Falls zwei Anforderungen auf Zugriff mit dem gleichen Rang gleichzeitig stattfinden, gewährt die Kreuzschiene 50 den Zugriff auf einer Round-Robin- Grundlage, wobei derjenige Prozessor, der als letzter Zugriff gewährt bekommt, die niedrigste Priorität besitzt. Jeder gewährte Zugriff dauert so lange, wie es das Bedienen der Anforderung erfordert. Die Prozessoren können ihre Adressen in jedem Speicherzyklus ändern, so daß die Kreuzschiene 50 die Verbindung zwischen den Prozessoren und den Speicherabschnitten auf einer zyklusweisen Grundlage ändern kann.
- Der Master-Prozessor 60 führt vorzugsweise die Hauptsteuerfunktionen für die integrierte Mehrprozessorschaltung 100 aus. Der Master-Prozessor 60 ist vorzugsweise ein 32-Bit-Prozessor eines Rechners mit reduziertem Befehlsvorrat (ein 32-Bit-RISC-Prozessor) mit einem Hardware-Gleitkomma-Rechenwerk. Gemäß der RISC-Architektur werden sämtliche Zugriffe auf den Speicher mit Lade- und Speicherbefehlen ausgeführt, während die meisten Ganzzahl- und logischen Operationen in einem einzigen Zyklus an Registern ausgeführt werden. Wenn das Gleitkomma-Rechenwerk die gleiche Registerablage verwendet, wie sie von der Ganzzahl- und Logikeinheit verwendet wird, benötigt sie aber allgemein mehrere Zyklen zum Ausführen der Operationen. Eine Registeranzeigetafel stellt sicher, daß die richtigen Registerzugriffsreihenfolgen erhalten bleiben. Die RISC- Architektur ist für Steuerfunktionen bei der Bildverarbeitung geeignet. Das Gleitkomma-Rechenwerk ermöglicht eine schnelle Berechnung von Bildrotationsfunktionen, was für die Bildverarbeitung wichtig sein kann.
- Der Master-Prozessor 60 holt Befehlswörter aus dem Befehls-Cache-Speicher 11 oder aus dem Befehls-Cache-Speicher 12. In ähnlicher Weise holt der Master- Prozessor 60 Daten entweder aus dem Daten-Cache 13 oder aus dem Daten-Cache 14. Da jeder Speicherabschnitt 2 KBytes an Speicher enthält, gibt es 4 KBytes an Befehls-Cache und 4 KBytes an Daten-Cache. Die Cache-Steuerung ist eine wesentliche Funktion des Master-Prozessors 60. Wie zuvor erwähnt wurde, kann der Master-Prozessor 60 über die Kreuzschiene 50 auch auf andere Speicherabschnitte zugreifen.
- Die vier digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 besitzen jeweils eine hochgradig parallele Digitalsignalprozessor-Architektur (DSP-Architektur). Fig. 3 zeigt eine Übersicht über den beispielhaften digitalen Bild- /Graphikprozessor 71, der völlig gleich zu den digitalen Bild-/Graphikprozessoren 72, 73 und 74 ist. Der digitale Bild-/Graphikprozessor 71 schafft unter Verwendung dreier getrennter Einheiten: der Dateneinheit 110; der Adressierungseinheit 120; und der Programmablauf-Steuereinheit 130, einen hohen Grad an Parallelität des Betriebs. Diese drei Einheiten bearbeiten gleichzeitig verschiedene Befehle in einer Befehlspipeline. Außerdem enthält jede dieser Einheiten eine interne Parallelität.
- In der Mehrbefehls-Mehrdaten-Betriebsart (MIMD-Betriebsart) können die digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 unabhängig Befehlsströme ausführen. In der MIMD-Betriebsart führt jeder digitale Bild-/Graphikprozessor ein einzelnes Programm, das unabhängig oder zusammenwirkend sein kann, aus seinem entsprechenden Befehls-Cache aus. Im letzteren Fall ermöglicht die Kreuzschiene 50 in Verbindung mit dem gemeinsam genutzten Speicher eine Inter-Prozessor-Kommunikation. Die digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 können auch in einer synchronisierten MIMD-Betriebsart arbeiten. In der synchronisierten MIMD-Betriebsart sperrt die Programmsteuer-Ablaufeinheit 130 jedes digitalen Bild-/Graphikprozessors das Holen des nächsten Befehls, bis sämtliche synchronisierten Prozessoren bereit sind fortzufahren. Diese synchronisierte MIMD-Betriebsart ermöglicht, daß getrennte Programme der digitalen Bild-/Graphikprozessoren in einer eng gekoppelten Operation in einer Sperrstufe ausgeführt werden.
- In der Einzelbefehls-Mehrdaten-Betriebsart (SIMD-Betriebsart) können die digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 völlig gleiche Befehle an verschiedenen Daten ausführen. In dieser Betriebsart kommt von dem Befehls- Cache-Speicher 21 ein Einzelbefehlsstrom für die vier digitalen Bild- /Graphikprozessoren. Der digitale Bild-/Graphikprozessor 71 steuert die Hol- und Verzweigungsoperationen, während die Kreuzschiene 50 den gleichen Befehl an die anderen digitalen Bild-/Graphikprozessoren 72, 73 und 74 liefert. Da der digitale Bild-/Graphikprozessor 71 das Befehlsholen für sämtliche digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74 steuert, sind die digitalen Bild- /Graphikprozessoren in der SIMD-Betriebsart inhärent synchronisiert.
- Der Übertragungs-Controller 80 ist eine gemeinsame Speicherdirektzugriffs- Maschine (DMA-Maschine) und Speicherschnittstelle für die integrierte Mehrprozessorschaltung 100. Der Übertragungs-Controller 80 reiht intelligent in Warteschlangen ein, setzt intelligent Prioritäten und bedient intelligent die Datenanforderungen und Cache-Fehltreffer der fünf programmierbaren Prozessoren. Der Master-Prozessor 60 und die digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 greifen sämtlich über den Übertragungs-Controller 80 auf Speicher und Systeme zu, die gegenüber der integrierten Mehrprozessorschaltung 100 extern sind. Die Daten-Cache- oder Befehls-Cache-Fehltreffer werden durch den Übertragungs-Controller 80 automatisch behandelt. Der Cache-Dienstport (Cache-S-Port) sendet solche Cache-Fehltreffer an den Übertragungs-Controller 80. Der Cache-Dienstport (S) liest Informationen von den Prozessoren und nicht aus dem Speicher. Der Master-Prozessor 60 und die digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74 können Datenübertragungen vom Übertragungs-Controller 80 als Verkettete-Listen-Paketanforderungen anfordern. Diese Verkettete-Listen-Paketanforderungen ermöglichen, daß zwischen der Quell- und der Ziel-Speicheradresse, die innerhalb der integrierten Mehrprozessorschaltung 100 liegen können oder extern in bezug auf die integrierte Mehrprozessorschaltung 100 sein können, mehrdimensionale Blöcke von Informationen übertragen werden. Außerdem enthält der Übertragungs- Controller 80 bevorzugt einen Auffrisch-Controller für den dynamischen Schreib- Lese-Speicher (DRAM), der ein dynamisches Auffrischen zum Halten seiner Daten erfordert.
- Der Rahmen-Controller 90 ist die Schnittstelle zwischen der integrierten Mehrprozessorschaltung 100 und den externen Bilderfassungs- und -anzeigesystemen. Der Rahmen-Controller 90 schafft eine Steuerung über die Erfassungs- und Anzeigevorrichtungen und organisiert automatisch die Bewegung der Daten zwischen diesen Vorrichtungen und dem Speicher. Zu diesem Zweck schafft der Rahmen-Controller 90 eine gleichzeitige Steuerung über zwei unabhängige Bildsysteme. Obgleich die Anwendung des Rahmen-Controllers 90 durch den Anwender gesteuert wird, umfassen diese typischerweise ein erstes Bildsystem für die Bilderfassung und ein zweites Bildsystem für die Bildanzeige. Diese Bildsysteme umfassen normalerweise unabhängige Rahmenspeicher, die entweder für die Bildfangschaltung oder für den Bildwiederholspeicher verwendet werden. Vorzugsweise arbeitet der gesteuerte Rahmen 90 in der Weise, daß er über eine Auffrisch- und Schieberegistersteuerung den dynamischen Video- Schreib-Lese-Speicher (VRAM) steuert.
- Die integrierte Mehrprozessorschaltung 100 ist für die Großbildverarbeitung konstruiert. Der Master-Prozessor 60 schafft eine eingebettete Steuerung, ordnet die Aktivitäten der digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 und interpretiert die Ergebnisse, die sie erzeugen. Die digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74 sind für die Pixelanalyse und -manipulation gut geeignet. Wenn erwartet wird, daß die Pixel hoch in bezug auf Daten und niedrig in bezug auf Informationen sind, können die digitalen Bild- /Graphikprozessoren 71, 72, 73, und 74 die Pixel in einer typischen Anwendung gut untersuchen und die Rohdaten in Informationen umwandeln. Diese Informationen können daraufhin entweder durch die digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74 oder durch den Master-Prozessor 60 untersucht werden. Die Kreuzschiene 50 vermittelt die Inter-Prozessor- Kommunikation. Die Kreuzschiene 50 ermöglicht, daß die integrierte Mehrprozessorschaltung 100 als System mit gemeinsam genutztem Speicher realisiert wird. In dieser Architektur braucht die Nachrichtenübergabe keine hauptsächliche Form der Kommunikation zu sein. Die Nachrichten können aber über die gemeinsam genutzten Speicher übergeben werden. Jeder digitale Signal- /Graphikprozessor, der entsprechende Abschnitt der Kreuzschiene 50 und die entsprechenden Abschnitte des Speichers 20 besitzen die gleiche Breite. Dies ermöglicht eine Architekturflexibilität durch Anpassung an das Hinzufügen oder Entfernen von digitalen Bild-/Graphikprozessoren und eine entsprechende Speichermodularität bei Erhaltung der gleichen Anschlußstiftausgabe.
- In der bevorzugten Ausführungsform sind sämtliche Teile der integrierten Mehrprozessorschaltung 100 in einer einzelnen integrierten Schaltung angeordnet. In der bevorzugten Ausführungsform ist die integrierte Mehrprozessorschaltung 100 als Komplementär-Metalloxid-Halbleiter (CMOS) mit Merkmalsgrößen von 0,6 um ausgebildet. Die integrierte Mehrprozessorschaltung 100 ist vorzugsweise in einem PGA-Gehäuse mit 256 Anschlußstiften konstruiert. Die Eingänge und Ausgänge sind vorzugsweise kompatibel mit Transistor-Transistor-Logik- Logikspannungen (TTL-Logikspannungen). Vorzugsweise enthält die integrierte Mehrprozessorschaltung 100 etwa 3 Millionen Transistoren und verwendet eine Taktrate von 50 MHz.
- Fig. 3 zeigt eine Übersicht eines beispielhaften digitalen Bild-/Graphikprozessors 71, der praktisch völlig gleich zu den digitalen Bild-/Graphikprozessoren 72, 73 und 74 ist. Der digitale Bild-/Graphikprozessor 71 enthält: eine Dateneinheit 110; eine Adressierungseinheit 120; und eine Programmablauf-Steuereinheit 130. Die Dateneinheit 110 führt die logischen oder arithmetischen Datenoperationen aus. Die Dateneinheit 110 enthält acht Datenregister D7-D0, ein Statusregister 210 und ein Mehrmerkerregister 211. Die Adressierungseinheit 120 steuert die Erzeugung der Lade/Speicher-Adressen für den lokalen Datenport und für den globalen Datenport. Wie unten weiter beschrieben wird, enthält die Adressierungseinheit 120 zwei praktisch völlig gleiche Adressierungseinheiten, eine zur lokalen Adressierung und eine zur globalen Adressierung. Jede dieser Adressierungseinheiten enthält ein Nur-Lese-Register ausschließlich mit "0"-en, das in einer Relativadressenbetriebsart die absolute Adressierung ermöglicht, einen Stapelzeiger, fünf Adressenregister und drei Indexregister. Die Adressierungseinheiten nutzen ein globales Bitmultiplex-Steuerregister gemeinsam, das beim Bilden einer Mischadresse aus beiden Adressierungseinheiten verwendet wird. Die Programmablauf-Steuereinheit 130 steuert den Programmablauf für den digitalen Bild-/Graphikprozessor 71 einschließlich der Erzeugung der Adressen für das Befehlsholen über den Befehlsport. Die Programmablauf-Steuereinheit 130 enthält: einen Programmzähler PC 701, eine Befehlszeiger-Adressenstufe IRA 702, die die Adresse des Befehls hält, der momentan in der Adressen-Pipeline-Stufe ist; eine Befehlszeiger-Ausführungsstufe IRE 703, die die Adresse des Befehls hält, der momentan in der Ausführungs-Pipeline-Stufe ist; einen Befehlszeiger-Rücksprung vom Unterprogramm IPRS 704, der die Adresse für Rücksprünge von Unterprogrammen hält; einen Satz von Registern, die organisationsaufwandfreie Schleifen steuern; vier Cache-Tag-Register TAG3-TAG0, die zusammen 708 genannt werden und die höchstwertigen Bits von vier Blöcken von Befehlswörtern in dem entsprechenden Befehls-Cache-Speicher halten.
- Wie in Fig. 4 gezeigt ist, bearbeitet der digitale Bild-/Graphikprozessor 71 eine dreistufige Pipeline. Die Dateneinheit 110, die Adressierungseinheit 120 und die Programmablauf-Steuereinheit 130 bearbeiten gleichzeitig verschiedene Befehle in einer Befehls-Pipeline. Die drei Stufen sind in chronologischer Reihenfolge Holen, Adressieren und Ausführen. Somit bearbeitet der digitale Bild- /Graphikprozessor 71 jederzeit verschiedene Funktionen von drei Befehlen. Der Begriff Pipeline-Stufe wird anstelle der Bezugnahme auf Taktzyklen verwendet, um anzugeben, daß spezifische Ereignisse beim Fortschreiten der Pipeline, nicht aber während Blockierungsbedingungen stattfinden.
- Die Programmablauf-Steuereinheit 130 führt sämtliche Operationen aus, die während der Hol-Pipeline-Stufe stattfinden. Die Progammablauf-Steuereinheit 130 enthält einen Programmzähler, eine Schleifenlogik, eine Unterbrechungslogik und eine Pipeline-Steuerlogik. Während der Hol-Pipeline-Stufe wird das nächste Befehlswort aus dem Speicher geholt. Die in dem Programmzähler enthaltene Adresse wird mit den Cache-Tag-Registern verglichen, um zu bestimmen, ob das nächste Befehlswort im Befehls-Cache-Speicher 21 gespeichert ist. Die Programmablauf-Steuereinheit 130 liefert die Adresse in dem Programmzähler an den Befehlsport-Adressenbus 131, um dieses nächste Befehlswort, falls vorhanden, aus dem Befehls-Cache-Speicher 21 zu holen. Die Kreuzschiene 50 sendet diese Adresse an den entsprechenden Befehls-Cache, hier an den Befehls- Cache-Speicher 21, der das Befehlswort an den Befehlsbus 132 zurückgibt. Andernfalls tritt ein Cache-Fehltreffer auf, wobei der Übertragungs-Controller 80 auf den externen Speicher zugreift, um das nächste Befehlswort zu erhalten. Der Programmzähler wird aktualisiert. Falls das folgende Befehlswort an der nächsten nachfolgenden Adresse steht, inkrementiert die Programmsteuer-Ablaufeinheit 130 den Programmzähler nach. Andernfalls lädt die Programmsteuer- Ablaufeinheit 130 gemäß der Schleifenlogik oder der Softwareverzweigung die Adresse des nächsten Befehlsworts. Falls die synchronisierte MIMD-Betriebsart aktiv ist, wartet das Befehlsholen, bis sämtliche spezifizierten digitalen Bild- /Graphikprozessoren synchronisiert sind, was durch die Sync-Bits in einem Kommunikationsregister angegeben wird.
- Die Adressierungseinheit 120 führt sämtliche Adressenberechnungen der Adressen-Pipeline-Stufe aus. Die Adressierungseinheit 120 enthält zwei unabhängige Adressierungseinheiten, eine für den globalen Port und eine für den lokalen Port. Wenn der Befehl einen oder zwei Speicherzugriffe verlangt, erzeugt die Adressierungseinheit 120 während der Adressen-Pipeline-Stufe die Adresse(en). Die Adresse(en) werden über den jeweiligen Adressenbus 121 für den globalen Port und über den jeweiligen Adressenbus 122 für den lokalen Port zur Konflikterkennung/Priorisierung an die Kreuzschiene 50 geliefert. Falls es keinen Konflikt gibt, bereitet sich der Speicher, auf den zugegriffen wird, darauf vor, den angeforderten Zugriff zuzulassen, wobei der Speicherzugriff aber während der folgenden Ausführungs-Pipeline-Stufe stattfindet.
- Während der Ausführungs-Pipeline-Stufe führt die Dateneinheit 110 sämtliche logischen und arithmetischen Operationen aus. Sämtliche logischen und arithmetischen Operationen und sämtliche Datenbewegungen zum oder vom Speicher finden während der Ausführungs-Pipeline-Stufe statt. Der globale Datenport und der lokale Datenport schließen irgendwelche während der Adressen-Pipeline-Stufe begonnen Speicherzugriffe während der Ausführungs- Pipeline-Stufe ab. Der globale Datenport und der lokale Datenport führen die gesamte von Speicher-Speicheroperationen benötigte Datenausrichtung und irgendeine von Speicher-Ladeoperationen benötigte Datenentnahme und Vorzeichenerweiterung aus. Falls während irgendeiner Operation der Ausführungs-Pipeline-Stufe der Programmzähler als Datenziel spezifiziert wird, wird vor dem Stattfinden irgendeiner Verzweigung eine Verzögerung von zwei Befehlen erfahren. Die Pipeline-Operation benötigt diese Verzögerung, da die nächsten zwei Befehle, die auf einen solchen Verzweigungsbefehl folgen, bereits geholt worden sind. Gemäß der Praxis bei RISC-Prozessoren können in den zwei Verzögerungsschlitzstellen andere nützliche Befehle angeordnet werden.
- Der digitale Bild-/Graphikprozessor 71 enthält drei interne 32-Bit-Datenbusse. Diese sind der Datenbus für den lokalen Port Lbus 103, der Quelldatenbus für den globalen Port Gsrc 105 und der Zieldatenbus für den globalen Port Gdst 107. Diese drei Busse verbinden die Dateneinheit 110, die Adressierungseinheit 120 und die Programmablauf-Steuereinheit 130. Außerdem sind diese drei Busse an eine Datenporteinheit 140 mit einem lokalen Port 141 und mit einem globalen Port 145 angeschlossen. Die Datenporteinheit 140 ist an die Kreuzschiene 50 gekoppelt, um einen Speicherzugriff bereitzustellen.
- Der lokale Datenport 141 besitzt einen Puffer 142 für Datenspeicheroperationen in dem Speicher. Eine Multiplexer/Puffer-Schaltung 143 lädt vom Datenbus 144 für den lokalen Port über die Kreuzschiene 50 Daten aus dem Speicher, von einem Adressenbus 122 für den lokalen Port oder vom Datenbus 148 für den globalen Port auf den Lbus 103. Der Datenbus für den lokalen Port Lbus 103 überträgt somit 32-Bit-Daten, die entweder ihren Ursprung in einem Register haben (Speicheroperationen) oder ihren Ursprung im Speicher haben (Ladeoperationen). Vorteilhaft können arithmetische Ergebnisse in der Adressierungseinheit 120 über den Adressenbus 122 für den lokalen Port und über den Multiplexerpuffer 143 an den Datenbus für den lokalen Port Lbus 103 geliefert werden, so daß sie die arithmetischen Operationen der Dateneinheit 110 ergänzen. Dies wird unten weiter beschrieben. Der Puffer 142 und der Multiplexerpuffer 143 führen die Ausrichtung und Entnahme der Daten aus. Der Datenbus für den lokalen Port Lbus 103 verbindet die Datenregister in der Dateneinheit 110. Ein vorübergehendes Halteregister LTD 104 für den lokalen Bus ist ebenfalls an den Daten-Lbus 103 für den lokalen Port angeschlossen.
- Der Quelldatenbus für den globalen Port Gsrc 105 und der Zieldatenbus für den globalen Port Gdst 107 übermitteln globale Datenübertragungen. Diese globalen Datenübertragungen können entweder Speicherzugriffe, Register-Register- Bewegungen oder Befehlswortübertragungen zwischen Prozessoren sein. Der Quelldatenbus für den globalen Port Gsrc 105 überträgt 32-Bit- Quellinformationen einer Datenübertragung für den globalen Port. Die Datenquelle kann irgendeines der Register des digitalen Bild-/Graphikprozessors 71 oder irgendein Daten- oder Parameterspeicher, der irgendeinem der digitalen Bild- /Graphikprozessoren 71, 72, 73 oder 74 entspricht, sein. Die Daten werden über den globalen Port 145 im Speicher gespeichert. Der Multiplexerpuffer 146 wählt die Leitungen vom Daten-Lbus 103 für den lokalen Port oder vom Quelldatenbus für den globalen Port Gsrc 105 aus und führt die Datenausrichtung aus. Der Multiplexerpuffer 146 schreibt diese Daten auf den Datenbus 148 für den globalen Port, um sie über die Kreuzschiene 50 an den Speicher anzulegen. Der Quelldatenbus für den globalen Port Gsrc 105 liefert die Daten außerdem an die Dateneinheit 110, was ermöglicht, die Daten des Quelldatenbusses für den globalen Port Gsrc 105 als eine der Quellen des Rechenwerks zu verwenden. Diese letztere Verbindung ermöglicht, daß irgendein Register des digitalen Bild- /Graphikprozessors 71 eine Quelle für eine Rechenwerksoperation ist.
- Der Zieldatenbus für den globalen Port Gdst 107 überträgt 32-Bit-Zieldaten einer Datenübertragung des globalen Busses. Das Ziel ist irgendein Register des digitalen Bild-/Graphikprozessors 71. Der Puffer 147 im globalen Port 145 bildet den Ursprung der Daten des Zieldatenbusses für den globalen Port Gdst 107. Der Puffer 147 führt irgendwelche erforderlichen Datenentnahme- und Vorzeichenerweiterungsoperationen aus. Dieser Puffer 147 arbeitet, wenn die Datenquelle der Speicher ist und wenn somit eine Ladeoperation ausgeführt wird. Das Rechenwerksergebnis dient als alternative Datenquelle für den Zieldatenbus für den globalen Port Gdst 107. Dies ermöglicht, daß irgendein Register des digitalen Bild-/Graphikprozessors 71 das Ziel einer Rechenwerksoperation ist. Außerdem ist an den Zieldatenbus für den globalen Port Gdst 107 ein vorübergehendes Halteregister GTD 108 für den globalen Bus angeschlossen.
- Die Schaltungsanordnung mit den Multiplexerpuffern 143 und 146 verbindet zwischen dem Quelldatenbus für den globalen Port Gsrc 105 und dem Zieldatenbus für den globalen Port Gdst 107, um Register-Register-Bewegungen zu schaffen. Dies ermöglicht, ein Leseergebnis aus irgendeinem Register des digitalen Bild-/Graphikprozessors 71 auf den Quelldatenbus für den globalen Port Gsrc 105 über den Zieldatenbus für den globalen Port Gdst 107 in irgendein Register des digitalen Bild-/Graphikprozessors 71 zu schreiben.
- Es wird angemerkt, daß es vorteilhaft möglich ist, über den Zieldatenbus Gdst 107 für den globalen Port eine Ladeoperation irgendeines Registers des digitalen Bild- /Graphikprozessors 71 aus dem Speicher auszuführen, während gleichzeitig über den Quelldatenbus für den globalen Port Gsrc 105 das Rechenwerk in der Dateneinheit 110 aus irgendeinem Register beliefert wird. Ähnlich ist es vorteilhaft möglich, die Daten in irgendeinem Register des digitalen Bild- /Graphikprozessors 71 über den Quelldatenbus für den globalen Port Gsrc 105 im Speicher zu speichern, während das Ergebnis einer Rechenwerksoperation über den Zieldatenbus für den globalen Port Gdst 107 in irgendeinem Register des digitalen Bild-/Graphikprozessors 71 gesichert wird. Die Nützlichkeit dieser Datenübertragungen wird unten weiter genau geschildert.
- Die Programmablauf-Steuereinheit 130 empfängt die über den Befehlsbus 132 aus dem Befehls-Cache-Speicher 21 geholten Befehlswörter. Dieses geholte Befehlswort wird vorteilhaft in zwei 64-Bit-Befehlsregistern gespeichert, die als die Befehlregister-Adressenstufe IRA 751 und als die Befehlregister- Ausführungsstufe IRE 752 bezeichnet werden. Die Inhalte jedes der Befehlsregister IRA und IRE werden decodiert und verteilt. Der digitale Bild- /Graphikprozessor 71 enthält den Opcode-Bus 133, der die decodierten oder teilweise decodierten Befehlsinhalte an die Dateneinheit 110 und an die Adressierungseinheit 120 überträgt. Wie später beschrieben wird, kann ein Befehlswort ein 32-Bit-, ein 15-Bit- oder ein 3-Bits-Sofortfeld enthalten. Die Programmablauf-Steuereinheit 130 leitet ein solches Sofortfeld zur Lieferung an sein Ziel an den Quelldatenbus für den globalen Port Gsrc 105.
- Der digitale Bild-/Graphikprozessor 71 enthält drei Adressenbusse 121, 122 und 131. Die Adressierungseinheit 120 erzeugt Adressen auf dem Adressenbus 121 für den globalen Port und auf dem Adressenbus 122 für den lokalen Port. Wie unten weiter genau geschildert wird, enthält die Adressierungseinheit 120 getrennte globale und lokale Adressierungseinheiten, die die Adressen auf dem Adressenbus 121 für den globalen Port bzw. auf dem Adressenbus 122 für den lokalen Port liefern. Es wird angemerkt, daß die lokale Adressierungseinheit 620 auf den Speicher mit Ausnahme desjenigen Datenspeichers, der diesem digitalen Bild-/Graphikprozessor entspricht, zugreifen kann. In diesem Fall greift die lokale Adressierungseinheit über den Adressenbus 121 zu. Die Programmablauf- Steuereinheit 130 liefert die Befehlsadresse auf dem Befehlsport-Adressenbus 131 aus einer Kombination der Adressenbits von einem Programmzähler und von der Cache-Steuerlogik. Diese Adressenbusse 121, 122 und 131 übertragen jeweils Adressen-, Byte-Freigabe- und Lese/Schreib-Informationen.
- Fig. 5 zeigt Einzelheiten der Dateneinheit 110. Selbstverständlich zeigt Fig. 5 nicht sämtliche Verbindungen der Dateneinheit 110. Insbesondere sind verschiedene Steuerleitungen und dergleichen aus Klarheitsgründen weggelassen. Somit ist Fig. 5 für ein vollständiges Verständnis des Betriebs der Dateneinheit 110 mit der folgenden Beschreibung zu lesen. Die Dateneinheit 110 enthält eine Anzahl von Teilen, die vorteilhaft parallel arbeiten. Die Dateneinheit 110 enthält acht mit D7- D0 bezeichnete 32-Bit-Datenregister 200. Das Datenregister D0 kann als Universalregister verwendet werden, während es außerdem bei Verwendung mit bestimmten Befehlen Spezialfunktionen besitzt. Die Datenregister 200 enthalten mehrere Lese- und Schreibports, die an die Dateneinheitsbusse 201 bis 206 und an den Datenbus für den lokalen Port Lbus 103, an den Quelldatenbus Gsrc 105 für den globalen Port und an den Zieldatenbus für den globalen Port Gdst 107 angeschlossen sind. Die Datenregister 200 können außerdem in einer Weise, die als Rotationsregister beschrieben wird und die unten weiter beschrieben wird, "seitwärts" gelesen werden. Die Dateneinheit 110 enthält ferner ein Statusregister 210 und ein Mehrmerkerregister 211, das den Rechenwerks-Ergebnisstatus zur Verwendung in bestimmten Befehlen speichert. Die Dateneinheit 110 enthält als ihre Hauptrechenkomponenten einen Hardware-Multiplizierer 220 und ein Dreieingangs-Rechenwerk 230. Schließlich enthält die Dateneinheit 110: einen ersten Multiplizierereingangsbus 201, einen zweiten Multiplizierereingangsbus 202, einen Multipliziererzielbus 203, einen Rechenwerks-Zielbus 204, einen ersten Rechenwerks-Eingangsbus 205, einen zweiten Rechenwerks-Eingangsbus 206; die Puffer 104, 106, 108 und 236; die Multiplexer Rmux 221, Imux 222, MSmux 225, Bmux 227, Amux 232, Smux 231, Cmux 233 und Mmux 234; und die Produkt-Linksverschiebeeinrichtung 224, den Addierer 226, die Barrel- Rotationseinrichtung 235, die LMO/RMO/LMBC/RMBC-Schaltung 237, die Erweiterungsschaltung 238, den Maskengenerator 239, den Bus 241 für den Eingang A, den Bus 242 für den Eingang B, den Bus 243 für den Eingangs C, den Rotationsbus 244, den Funktionssignalgenerator 245, den Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 und die Befehlsdecodierungslogik 250, die sämtlich unten weiter beschrieben werden.
- Die folgende Beschreibung der Dateneinheit 110 sowie die weiteren Beschreibungen der Verwendung jedes digitalen Bild-/Graphikprozessors 71, 72, 73 und 74 verwenden zur Erleichterung des Ausdrucks mehrere Symbole. Viele dieser Symbole sind mathematische Standardoperationen, die keiner Erläuterung bedürfen. Einige sind logische Operationen, die dem Fachmann auf dem Gebiet vertraut sind, deren Symbole möglicherweise aber nicht vertraut sind. Schließlich beziehen sich einige Symbole auf Operationen, die für diese Erfindung einzigartig sind. Tabelle 1 führt einige dieser Symbole und ihre entsprechende Operation auf.
- ~ bitweises NOT
- & bitweises UND
- bitweises ODER
- ^ bitweises Exklusiv-ODER
- @ Mehrmerkerregister-Erweiterung
- % Maskenerzeugung
- %! modifizierte Maskenerzeugung
- \\Linksrotation
- < < Linksverschiebung
- > > u Rechtsverschiebung, Nullerweiterung
- > > s Rechtsverschiebung, Vorzeichenerweiterung
- > > Rechtsverschiebung, Vorzeichenerweiterung, voreingestellter Fall
- Paralleloperation
- *(A ± X) Speicherinhalt im Adressenbasisregister A ± Indexregister X oder Distanzadresse X
- &*(A ± X) Adressierungseinheitsarithmetik, Adressenbasisregister A ± Indexregister X oder Distanzadresse X
- *(A ± [X]) Speicherinhalt im Adressenbasisregister A ± skalierten Indexregister X oder Distanzadresse X
- Die Folgen der oben in Tabelle 1 aufgeführten Operationen sind möglicherweise nicht sofort offensichtlich. Diese werden unten genau geschildert.
- Fig. 6 zeigt die Felddefinitionen für das Statusregister 210. Das Statusregister 210 kann über den Quelldatenbus für den globalen Port Gsrc 105 ausgelesen oder über den Zieldatenbus Gdst-Bus 107 für den globalen Port beschrieben werden. Außerdem kann das Statusregister 210 in ein spezifiziertes Datenregister 200 schreiben oder aus ihm laden. Das Statusregister 210 wird bei der Steuerung der Operationen in der Dateneinheit 110 verwendet.
- Das Statusregister 210 speichert vier Rechenwerks-Ergebnisstatusbits "N", "C", "V" und "Z". Diese werden unten einzeln beschrieben, wobei ihr Setzverhalten zusammen aber wie folgt ist. Es wird angemerkt, daß die hier aufgeführten Befehlstypen unten genau geschildert werden. Falls das Bedingungscodefeld für Befehlswörter mit einem 32-Bits-Sofortfeld "unbedingt" ist, werden sämtliche vier Statusbits gemäß dem Ergebnis des Rechenwerks 230 gesetzt. Falls das Bedingungscodefeld eine andere Bedingung als "unbedingt" spezifiziert, werden unabhängig davon, ob die Bedingung wahr ist, keine Statusbits gesetzt. Für Befehlswörter, die keine 32-Bit-Sofortfeldoperationen enthalten und keine bedingten Operationsfelder enthalten, werden sämtliche Statusbits gemäß dem Ergebnis des Rechenwerks 230 gesetzt. Falls das Bedingungsfeld für Befehlswörter, die kein 32-Bit-Sofortfeld enthalten und bedingte Operationen ermöglichen, "unbedingt" oder nicht "unbedingt" ist und die Bedingung wahr ist, geben die Befehlswortbits 28 bis 25 an, welche Statusbits zu schützen sind. Alle ungeschützten Bits werden gemäß dem Ergebnis des Rechenwerks 230 gesetzt. Falls für Befehlswörter, die kein 32-Bit-Sofortfeld enthalten und bedingte Operationen ermöglichen, das Bedingungsfeld nicht "unbedingt" ist und die Bedingung falsch ist, werden keine Statusbits gesetzt. Es gibt keinen Unterschied in bezug auf das Statussetzverhalten für boolesche Operationen und arithmetische Operationen. Wie unten weiter erläutert wird, ermöglicht dieses Verhalten, daß die bedingten Befehle und die Quellenauswahl Operationen ausführen, die normalerweise eine Verzweigung erfordern.
- Die Rechenwerks-Ergebnisbits des Statusregisters 210 sind wie folgt. Das "N"-Bit (Bit 31) speichert eine Angabe eines negativen Ergebnisses. Das "N"-Bit wird auf "1" gesetzt, wenn das Ergebnis der letzten Operation des Rechenwerks 230 negativ war. Dieses Bit wird mit dem Bit 31 des Ergebnisses geladen. In einer Rechenwerks-Mehrfachoperation, die unten erläutert wird, wird das "N"-Bit auf das UND der Nullvergleichsoperation der mehreren Abschnitte des Rechenwerks 230 gesetzt. In einer durch die LMO/RMO/LMBC/RMBC-Schaltung 237 ausgeführten Biterfassungsoperation wird das "N"-Bit auf das UND der Nullvergleichsoperationen der mehreren Abschnitte des Rechenwerks 230 gesetzt. Das softwaremäßige Schreiben in dieses Bit überschreibt die normale Rechenwerks- Ergebnisschreiblogik.
- Das "C"-Bit (Bit 30) speichert eine Angabe eines Übertragsergebnisses. Das "C"- Bit wird auf "1" gesetzt, wenn das Ergebnis der letzten Operation des Rechenwerks 230 zu einem Übertrag für die nächsthöhere Stelle vom Bit 31 des Rechenwerks führt. Während der Mehrfach-Arithmetik und Biterfassung wird das "C"-Bit auf das ODER der Überträge für die nächsthöhere Stelle der mehreren Abschnitte des Rechenwerks 230 gesetzt. Somit wird das "C"-Bit auf "1" gesetzt, wenn wenigstens einer der Abschnitte einen Übertrag für die nächsthöhere Stelle besitzt. Das softwaremäßige Schreiben in dieses Bit überschreibt die normale Rechenwerks-Ergebnisschreiblogik.
- Das "V"-Bit (Bit 29) speichert eine Angabe eines Überlaufergebnisses. Das "V"- Bit wird auf "1" gesetzt, wenn das Ergebnis der letzten Operation des Rechenwerks 230 eine Überlaufbedingung erzeugte. Dieses Bit wird mit dem Exklusiv-ODER des Übertrags von einer vorhergehenden Stelle und des Übertrags für die nächsthöhere Stelle des Bits 31 des Rechenwerks 230 geladen. Während einer Rechenwerks-Mehrfachoperation ist das "V"-Bit das UND der Überträge für die nächsthöhere Stelle der mehreren Abschnitte des Rechenwerks 230. Für die Erfassung des Bits mit der am weitesten links stehenden Eins und mit der am weitesten rechts stehenden Eins wird das "V"-Bit auf "1" gesetzt, falls das Eingangswort keine "1"-en enthält, während das "V" andernfalls auf "0" gesetzt wird. Für die Erfassung des Bits mit der am weitesten links stehenden Bitänderung und mit der am weitesten rechts stehenden Bitänderung wird das "V"-Bit auf "1" gesetzt, wenn sämtliche Bits des Eingangssignals gleich sind, während das "V"-Bit andernfalls auf "0" gesetzt wird. Das softwaremäßige Schreiben in dieses Bit überschreibt die normale Rechenwerks- Ergebnisschreiblogik.
- Das "Z"-Bit (Bit 28) speichert eine Angabe eines "0"-Ergebnisses. Das "Z"-Bit wird auf "1" gesetzt, wenn das Ergebnis der letzten Operation des Rechenwerks 230 ein "0"-Ergebnis erzeugt. Dieses "Z"-Bit wird sowohl für arithmetische Operationen als auch für logische Operationen gesteuert. In Mehrfach-Arithmetik- und Biterfassungsoperationen wird das "Z"-Bit auf das ODER der Nullvergleichsoperationen der mehreren Abschnitte des Rechenwerks 230 gesetzt. Das softwaremäßige Schreiben in dieses Bit überschreibt die normale Rechenwerks-Ergebnisschreib-Logikschaltungsanordnung.
- Das "R"-Bit (Bit 6) steuert die von der Erweiterungsschaltung 238 und von der Rotation der Mehrmerkerregister 211 verwendeten Bits während Befehlen, die die Erweiterungsschaltung 238 zum Erweitern von Teilen des Mehrmerkerregisters 211 verwenden. Wenn das "R"-Bit "1" ist, sind die in einer Erweiterung des Mehrmerkerregisters 211 über die Erweiterungsschaltung 238 verwendeten Bits die höchstwertigen Bits. Für eine Operation, die die Erweiterung des Mehrmerkerregisters 211 umfaßt und bei der der Rechenwerks-Funktionsmodifizierer keine Mehrmerkerregister-Rotation spezifiziert, wird das Mehrmerkerregister 211 gemäß dem "Msize"-Feld "nach links nachgedreht". Falls der Rechenwerks-Funktionsmodifizierer eine Mehrmerkerregister-Rotation spezifiziert, wird das Mehrmerkerregister 211 gemäß dem "Asize"-Feld gedreht. Falls das "R"-Bit "0" ist, verwendet die Erweiterungsschaltung 238 die niederwertigsten Bits des Mehrmerkerregisters 211. Gemäß dem "Msize"-Feld findet keine Rotation statt. Der Rechenwerks-Funktionsmodifizierer kann aber eine Rotation durch das "Asize"-Feld spezifizieren.
- Das "Msize"-Feld (Bits 5-3) gibt die Datengröße an, die in bestimmten Befehlsklassen verwendet wird, die Maskendaten vom Mehrmerkerregister 211 an den C-Port des Rechenwerks 230 liefern. Das "Msize"-Feld bestimmt, wieviel Bits des Mehrmerkerregisters 211 zum Erzeugen der Maskeninformationen verwendet werden. Wenn der Befehl entsprechend dem "Asize"-Feld keine Rotation spezifiziert und das "R"-Bit "1" gesetzt ist, wird das Mehrmerkerregister 211 automatisch um den durch das "Msize"-Feld eingestellten Betrag "nach links nachgedreht". Die Codierungen für diese Bits sind in Tabelle 2 gezeigt. Tabelle 2
- Wie oben angemerkt wurde, unterstützt die bevorzugte Ausführungsform entsprechend den Datengrößen von 8, 16 bzw. 32 Bits "Msize"-Felder von "100", "101" und "110". Es wird angemerkt, daß die Rotation für ein "Msize"-Feld von "001" zu keiner Änderung der Datenausgabe führt. "Msize"-Felder von "001", "010" und "011" sind mögliche nützliche Alternativen. "Msize"-Felder von "000" und "111" sind bedeutungslos, können aber in einer Erweiterung der Mehrmerkerregister 211 auf 64 Bits verwendet werden.
- Das "Asize"-Feld (Bits 2-0) gibt die Datengröße für durch das Rechenwerk 230 ausgeführte Mehrfachoperationen an. Das Rechenwerk 230 enthält vorzugsweise 32 parallele Bits. Während bestimmter Befehle wird das Rechenwerk 230 in mehrere unabhängige Abschnitte aufgeteilt. Dies wird eine Rechenwerks- Mehrfachoperation genannt. Diese Aufteilung des Rechenwerks 230 ermöglicht die parallele Operation an Pixeln mit weniger als 32 Bits, die in 32-Bit- Datenwörter gepackt sind. In der bevorzugten Ausführungsform unterstützt das Rechenwerk 230: eine einzelne 32-Bit-Operation; zwei Abschnitte von 16-Bit- Operationen; und vier Abschnitte von 8-Bit-Operationen. Diese Operationen werden Wort-, Halbwort- und Byte-Operationen genannt.
- Das "Asize"-Feld gibt an: die Anzahl der mehreren Abschnitte des Rechenwerks 230; die Anzahl der Bits der Mehrmerkerregister-Bits 211, die während der Rechenwerksoperation gesetzt werden und deren Anzahl gleich der Anzahl der Abschnitte des Rechenwerks 230 ist; und die Anzahl der Bits, die das Mehrmerkerregister nach der Ausgabe während der Rechenwerks- Mehrfachoperation "nach links nachdrehen" soll. Wenn der Rechenwerks-Funktionsmodifizierer eine Mehrfacharithmetik ohne Rotation angibt, dominiert der durch das "Asize"-Feld spezifizierte Rotationsbetrag gegenüber dem durch das "Msize"-Feld und durch das "R"-Bit spezifizierten Rotationsbetrag. Die Codierungen für diese Bits sind in Tabelle 3 gezeigt. Es wird angemerkt, daß, obgleich die momentan bevorzugte Ausführungsform der Erfindung eine Mehrfacharithmetik eines 32-Bit-Abschnitts, zweier 16-Bit-Abschnitte und vierer 8-Bit-Abschnitte unterstützt, die Codierung des "Asize"-Feldes die Spezifizierung von acht Abschnitten mit je 4 Bits, von sechzehn Abschnitten mit je 2 Bits und von zweiunddreißig Abschnitten mit je 1 Bit unterstützt. Jede dieser zusätzlichen Abschnittunterteilungen des Rechenwerks 230 ist möglich. Außerdem wird angemerkt, daß die Codierung des "Asize"-Feldes auf 64 Bits ferner die Spezifikation einer 64-Bit-Datengröße zur möglichen Erweiterung des Mehrmerkerregisters 211 unterstützt. Tabelle 3
- Das "Msize"- und das "Asize"-Feld des Statusregisters 210 steuern verschiedene Operationen. Bei Verwendung des Mehrmerkerregisters 211 als Quelle zum Erzeugen einer auf den C-Port des Rechenwerks 230 angewendeten Maske steuert das "Msize"-Feld die Anzahl der verwendeten Bits und den Rotationsbetrag. In diesem Fall bestimmt das "R"-Bit, ob die höchstwertigen Bits oder die niederwertigsten Bits verwendet werden. Bei Verwendung des Mehrmerkerregisters 211 als Ziel für die den Abschnitten des Rechenwerks 230 entsprechenden Statusbits steuert das "Asize"-Feld die Anzahl und die Identität der geladenen Bits und den optionalen Rotationsbetrag. Wenn mit einem Befehl, der Maskendaten an den aus dem Mehrmerkerregister 211 abgeleiteten C-Port liefert, eine Rechenwerks-Mehrfachoperation mit einer durch das "Asize"-Feld spezifizierten Rotation spezifiziert wird, dominiert der Rotationsbetrag des "Asize"-Feldes gegenüber dem Rotationsbetrag der Kombination des "R"-Bits und des "Msize"-Feldes.
- Das Mehrmerkerregister 211 ist ein 32-Bit-Register, das für bestimmte Befehle Maskeninformationen an den C-Port des Rechenwerks 230 liefert. Der Zieldatenbus für den globalen Port Gdst-Bus 107 kann in das Mehrmerkerregister 211 schreiben. Der Quellbus Gsrc für den globalen Port kann Daten aus dem Mehrmerkerregister 211 lesen. Außerdem können Rechenwerks- Mehrfachoperationen in das Mehrmerkerregister 211 schreiben. In diesem Fall zeichnet das Mehrmerkerregister 211 entweder die Übertrags- oder die Null- Statusinformationen der unabhängigen Abschnitte des Rechenwerks 230 auf. Der ausgeführte Befehl steuert, ob der Übertrag oder Null gespeichert wird.
- Das "Msize"-Feld des Statusregisters 210 steuert die Anzahl der vom Mehrmerkerregister 211 verwendeten niederwertigsten Bits. Diese Anzahl ist oben in Tabelle 2 gegeben. Das "R"-Bit des Statusregisters 210 steuert, ob das Mehrmerkerregister 211 vor dem Liefern dieser Bits nach links vorgedreht wird. Der Wert des "Msize"-Feldes bestimmt den Betrag der Rotation, wenn das "R"- Bit "1" ist. Die ausgewählten Daten liefert die Erweiterungsschaltung 238, die, wie unten genau geschildert wird, eine 32-Bit-Maske erzeugt.
- Das "Asize"-Feld des Statusregisters 210 steuert die während Rechenwerks- Mehrfachoperationen im Mehrmerkerregister 211 gespeicherten Daten. Wie zuvor beschrieben wurde, kann das Rechenwerk 230 in der bevorzugten Ausführungsform in einem, in zwei oder in vier getrennten Abschnitten verwendet werden, die Daten mit 32 Bits, 16 Bits bzw. 8 Bits verwenden. Bei der Ausführung einer Rechenwerks-Mehrfachoperation gibt das "Asize"-Feld über die definierte Datengröße die zum Aufzeichnen der Statusinformationen jedes getrennten Ergebnisses des Rechenwerks verwendete Anzahl der Bits des Mehrmerkerregisters 211 an. Die Bitsetzung des Mehrmerkerregisters 211 ist in Tabelle 4 zusammengefaßt. Tabelle 4
- Es wird angemerkt, daß Tabelle 4 lediglich die Fälle für Datengrößen von 8, 16 und 32 Bits einschließt. Der Fachmann auf dem Gebiet erkennt leicht, wie Tabelle 4 zu erweitern ist, damit die Fälle von Datengrößen von 64 Bits, 4 Bits, 2 Bits und 1 Bit eingeschlossen sind. Außerdem wird angemerkt, daß sich die vorausgehende Diskussion auf die Speicherung entweder des Übertrags oder des Nullstatus im Mehrmerkerregister 211 bezog. Außerdem ist es möglich, andere Statusbits wie etwa negativ und Überlauf zu speichern.
- Das Mehrmerkerregister 211 kann bei der Ausführung jeder Rechenwerksoperation um eine Anzahl von Bitstellen nach links gedreht werden. Der Rotationsbetrag ist oben gegeben. Bei der Ausführung von Rechenwerks- Mehrfachoperationen dominiert die Ergebnisstatus-Bitsetzung für jene Bits, die gesetzt werden, gegenüber der Rotation. Bei der Ausführung von Rechenwerks- Mehrfachoperationen besteht eine Alternative zur Rotation im Löschen sämtlicher Bits des Mehrmerkerregisters 211, die durch den Ergebnisstatus nicht gesetzt werden. Wenn in diesem Befehl Maskendaten verwendet werden, erfolgt dieses Löschen nach der Erzeugung der Maskendaten. Wenn das Mehrmerkerregister 211 gleichzeitig mit dem Aufzeichnen eines Rechenwerksergebnisses softwaremäßig beschrieben wird, besteht die bevorzugte Operation für das softwaremäßige Beschreiben im Laden sämtlicher Bits. Somit dominieren softwaremäßige Schreiboperationen gegenüber der Rotation und dem Löschen des Mehrmerkerregisters 211.
- Fig. 7 zeigt die Aufteilung des Rechenwerks 230 in mehrere Abschnitte. Wie in Fig. 7 gezeigt ist, sind die 32 Bits des Rechenwerks 230 in vier Abschnitte mit jeweils acht Bits aufgeteilt. Der Abschnitt 301 enthält die Rechenwerksbits 7-0, der Abschnitt 302 enthält die Bits 15-8, der Abschnitt 303 enthält die Bits 23-16 und der Abschnitt 304 enthält die Bits 31-24. Es wird angemerkt, daß Fig. 7 aus Klarheitsgründen die Eingänge oder Ausgänge dieser Abschnitte, die herkömmlich sind, nicht zeigt. Die Übertragspfade innerhalb jedes Abschnitts 301, 302, 303 und 303 sind wie im Gebiet bekannt.
- Die Multiplexer 311, 312 und 313 steuern den Übertragspfad zwischen den Abschnitten 301, 302, 303 und 304. Jeder dieser Multiplexer wird in der Weise gesteuert, daß er einen der drei Eingänge auswählt. Der erste Eingang ist ein Übertragsvorausschaupfad von dem Ausgang des vorhergehenden Multiplexers oder im Fall des ersten Multiplexers 311 vom Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Solche Übertragsvorausschaupfade und ihr Gebrauch sind im Gebiet bekannt und werden hier nicht weiter beschrieben. Die zweite Auswahl ist der Übertrag für die nächsthöhere Stelle von dem letzten Bit des entsprechenden Abschnitts des Rechenwerks 230. Die letzte Auswahl ist das Signal für den Übertrag von einer vorhergehenden Stelle vom Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Der Multiplexer 314 steuert den Ausgangsübertragspfad für das Rechenwerk 230. Der Multiplexer 314 wählt entweder den Übertragsvorausschaupfad von dem durch den Multiplexer 313 ausgewählten Übertrag für die nächsthöhere Stelle oder das Signal für den Übertrag für die nächsthöhere Stelle für das Bit 31 aus dem Abschnitt 304.
- Die Multiplexer 311, 312, 313 und 314 werden anhand der ausgewählten Datengröße gesteuert. Im Normalfall bearbeitet das Rechenwerk 230 32-Bit- Datenwörter. Dies wird dadurch angegeben, daß ein "Asize"-Feld des Statusregisters 210 gleich "110" ist. In diesem Fall wählt der Multiplexer 311 den Übertrag für die nächsthöhere Stelle von Bit 7 aus, während der Multiplexer 312 den Übertrag für die nächsthöhere Stelle von Bit 15, der Multiplexer 313 den Übertrag für die nächsthöhere Stelle von Bit 23 und der Multiplexer 314 den Übertrag für die nächsthöhere Stelle von Bit 31 auswählt. Somit sind die vier Abschnitte 301, 302, 303 und 304 zu einem einzigen 32-Bit-Rechenwerk miteinander verbunden. Falls das Statusregister 210 über ein "Asize"-Feld von "101" ein Halbwort ausgewählt hat, wählt der Multiplexer 311 den Übertrag für die nächsthöherer Stelle von Bit 7, während der Multiplexer 312 vom Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 den Übertrag von einer vorhergehenden Stelle, der Multiplexer 313 den Übertrag für die nächsthöhere Stelle vom Bit 23 und der Multiplexer 314 den Übertrag für die nächsthöhere Stelle vom Bit 31 auswählt. Die Abschnitte 301 und 302 sind zu einer 16-Bit-Einheit verbunden und die Abschnitt 303 und 304 sind zu einer 16- Bit-Einheit verbunden. Es wird angemerkt, daß der Multiplexer 312, da das Bit 16 das erste Bit in einem 16-Bit-Halbwort ist, das Bit-0-Signal für den Übertrag von einer vorhergehenden Stelle für das Bit 16 ebenso wie für das Bit 0 auswählt. Wenn das Statusregister 210 über ein "Asize"-Feld von "100" ein Byte ausgewählt hat, wählen die Multiplexer 311, 312 und 313 den Übertrag von einer vorhergehenden Stelle von dem Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 aus. Die Abschnitte 301, 302, 303 und 304 sind in vier unabhängige 8-Bit-Einheiten aufgeteilt. Es wird angemerkt, daß die Auswahl des Signals für den Übertrag von einer vorhergehenden Stelle an das Bit 0 in jedem Multiplexer richtig ist, da die Bits 8, 16 und 24 jeweils das erste Bit in einem 8-Bit-Byte sind.
- Fig. 7 zeigt ferner die Null-Ergebnis-Erfassung. Jede 8-Bit-Null- Auswerteschaltung 321, 322, 323 und 324 erzeugt ein Ausgangssignal "1", wenn das Ergebnis von dem entsprechenden 8-Bit-Abschnitt sämtlich Nullen "00000000" sind. Das UND-Gatter 331 ist an die 8-Bit-Null-Auswerteschaltungen 321 und 322 angeschlossen und erzeugt somit eine "1", wenn sämtliche sechzehn Bits 15-0 gleich "0" sind. Das UND-Gatter 332 ist ähnlich an die 8-Bit-Null- Auswerteschaltungen 321 und 322 angeschlossen, um eine "1" zu erzeugen, wenn sämtliche sechzehn Bits 31-16 gleich "0" sind. Schließlich ist das UND-Gatter 341 an die UND-Gatter 331 und 332 angeschlossen und erzeugt eine "1", wenn sämtliche 32 Bits 31-0 gleich "0" sind.
- Während Rechenwerks-Mehrfachoperationen kann das Mehrmerkerregister 211 je nach Befehl entweder Überträge für die nächsthöhere Stelle oder den Nullvergleich speichern. Diese gespeicherten Ergebnisse steuern während späterer Operationen die Masken für den C-Port. Tabelle 4 zeigt die Quelle für die gespeicherten Statusbits. Falls das Mehrmerkerregister 211 das Signal bzw. die Signale für den Übertrag für die nächsthöhere Stelle speichert, bestimmt das "Asize"-Feld des Statusregisters 210 die Identität und die Anzahl der gespeicherten Signale für den Übertrag für die nächsthöhere Stelle. Wenn das "Asize"- Feld Wort-Operationen spezifiziert, speichert das Mehrmerkerregister 211 ein einzelnes Bit, das gleich dem Signal für den Übertrag für die nächsthöhere Stelle des Bits 31 ist. Wenn das "Asize"-Feld Halbwort-Operationen spezifiziert, speichert das Mehrmerkerregister 211 zwei Bits, die gleich den Signalen für den Übertrag für die nächsthöhere Stelle der Bits 31 bzw. 15 sind. Wenn das "Asize"- Feld Byte-Operationen spezifiziert, speichert das Mehrmerkerregister 211 vier Bits, die gleich den Signalen für den Übertrag für die nächsthöhere Stelle der Bits 31, 23, 15 bzw. 7 sind. Ähnlich steuert das "Asize"-Feld die Anzahl und die Identität der im Mehrmerkerregister 211 gespeicherten Null-Ergebnisse, wenn die Speicherung der Null-Ergebnisse ausgewählt ist. Wenn das "Asize"-Feld Wort- Operationen spezifiziert, speichert das Mehrmerkerregister 211 ein einzelnes Bit, das gleich dem Ausgangssignal des UND-Gatters 341 ist, das angibt, ob die Bits 31-0 "0" sind. Wenn das "Asize"-Feld Halbwort-Operationen spezifiziert, speichert das Mehrmerkerregister 211 zwei Bits, die gleich den Ausgangssignalen der UND-Gatter 331 bzw. 332 sind. Wenn das "Asize"-Feld Byte-Operationen spezifiziert, speichert das Mehrmerkerregister 211 vier Bits, die gleich den Ausgangssignalen der 8-Bit-Null-Auswerteschaltungen 321, 322, 323 bzw. 324 sind.
- Es ist technisch möglich, weitere Mehrfachoperationen des Rechenwerks 230 wie etwa: acht Abschnitte von 4-Bit-Operationen; sechzehn Abschnitte, 2-Bit- Operationen; und zweiunddreißig Abschnitte, Ein-Bit-Operationen, zu ermöglichen. Es wird angemerkt, daß sowohl das "Msize"- als auch das "Asize"- Feld des Statusregisters 210 eine Codierung zur Unterstützung solcher zusätzlichen Mehrfachoperationstypen enthält. Der Fachmann auf dem Gebiet kann die in Fig. 7 gezeigten Schaltungen mit zusätzlichen Multiplexern und UND- Gattern leicht abändern und erweitern. Wegen der zusätzlichen Komplexität bei der Konstruktion des Rechenwerks 230 werden diese letzteren möglichen Optionen in der bevorzugten Ausführungsform nicht unterstützt. Außerdem wird angemerkt, daß diese Technik auf eine Datenverarbeitungsvorrichtung erweitert werden kann, die 64-Bit-Daten verwendet, und daß diese Lehre eine solche Erweiterung ermöglicht.
- Die Datenregister 200, die bezeichneten Datenregister D7-D0, sind an den Datenbus für den lokalen Port Lbus 103, an den Quelldatenbus für den globalen Port Gsrc 105 und an den Zieldatenbus für den globalen Port Gdst 107 angeschlossen. Die Pfeile in dem Rechteck, das die Datenregister 200 darstellt, geben die Richtungen des Datenzugriffs an. Ein nach links zeigender Pfeil gibt Daten an, die aus den Datenregistern 200 abgerufen werden. Ein nach rechts zeigender Pfeil gibt Daten an, die in die Datenregister 200 geschrieben werden. Der Datenbus für den lokalen Port Lbus 103 ist als Datenquelle oder als Datenziel doppeltgerichtet an die Datenregister 200 gekoppelt. Der Zieldatenbus für den globalen Port Gdst 107 ist als Datenquelle für in die Datenregister 200 geschriebene Daten an die Datenregister 200 angeschlossen. Der Quelldatenbus für den globalen Port Gsrc 107 ist als Datenziel für Daten, die sowohl in einer normalen Datenregisterbetriebart als auch in einem unten beschriebenen Rotationsregistermerkmal aus den Datenregistern 200 abgerufen werden, an die Datenregister 200 angeschlossen. Das Statusregister 210 und das Mehrmerkerregister 211 können über den Quelldatenbus für den globalen Port Gsrc 106 ausgelesen und über den Zieldatenbus für den globalen Port Gdst 107 beschrieben werden. Die Datenregister 200 liefern Daten an den ersten Multiplizierereingangsbus 201, an den zweiten Multiplizierereingangsbus 202, an den ersten Rechenwerks-Eingangsbus 205 und an den zweiten Rechenwerks- Eingangsbus 206. Die Datenregister 200 sind in der Weise angeschlossen, daß sie Eingangsdaten vom Multipliziererzielbus 203 und vom Rechenwerks-Zielbus 204 empfangen.
- Wie in Fig. 8 gezeigt ist, sind die Datenregister 200, die bezeichneten Register D7-D0, in der Weise angeschlossen, daß sie ein 256-Bit-Rotationsregister bilden. Dieses Rotationsregister wird insgesamt als Rotationsregister (ROT-Register) ROT 208 bezeichnet. Dieses bildet ein 256-Bit-Register, das acht 32-Bit- Rotationsregister ROT0, ROT1, ... ROT7 umfaßt. Fig. 8 zeigt teilweise die Definitionen der Rotationsregister ROT0, ROT1, ... ROT7. Diese Rotationsregister sind in bezug auf die Datenregister D7-D0 seitwärts definiert. Das Rotationsregister 208 kann wie unten beschrieben durch einen Nicht- Rechenwerksbefehl DROT gedreht werden. Während dieser Rotation wird das niederwertigste Bit des Datenregisters D7 in das höchstwertige Bit des Datenregisters D6 gedreht usw. Das niederwertigste Bit des Datenregisters D0 ist rückwärts an das höchstwertige Bit des Datenregisters D7 angeschlossen. Das ROT-Register 208 kann in vier 8-Bit-Bytes gleichzeitig gelesen werden. Wie unten in Tabelle 5 gezeigt und in Fig. 8 dargestellt ist, sind die vier 8-Bit-Bytes in jedem der Datenregister 200 jeweils Oktette von Bits mit der gleichen Bitzahl. Tabelle 5
- Wenn ein DROT-Befehl ausgeführt wird, wird das 256-Bit-Rotationsregister 208 um eine Bitstelle nach rechts gedreht. Das niederwertigste Bit 0 jedes Bytes A, B, C, D jedes Registers wie etwa D7 wird wie gezeigt auf eine besondere Bitnummer des ROT-Registerausgangs zu dem Quelldatenbus für den globalen Port Gsrc 105 abgebildet. In der bevorzugten Ausführungsform ist das ROT-Register 208 ein Nur-Lese-Register, während es in anderen Ausführungsformen aber beschreibbar sein kann.
- Das ROT-Register 208 ist bei Bildrotationen, orthogonalen Transformationen und Spiegeltransformationen nützlich. Das Ausführen von 32-Bit-Speicheroperationen in den Speicher aus dem Rotationsregister 208 parallel zu acht DROT-Befehlen dreht vier 8-mal-8-Bit-Teilstücke der Daten im Gegenuhrzeigersinn um neunzig Grad. Die gedrehten Daten werden an den Zielspeicherplätzen gespeichert. Verschiedene Kombinationen von Registerladeoperationen, Speicheradressen- Speicheroperationen und Datengrößenänderungen können die Ausführung einer Vielzahl von Rotationen von 8-mal-8-Bit-Teilstücken im Uhrzeigersinn und im Gegenuhrzeigersinn ermöglichen. Die Rotation größerer Bereiche kann dann durch das Bewegen ganzer Bytes ausgeführt werden. Diese bemerkenswerte orthogonale Struktur, die für die Registerablage in einer Betriebsart einen Zugriff auf die Register D7-D0 schafft und in der DROT-Operation einen Rotationsregisterzugriff schafft, ist nur etwas komplexer als eine Registerablage allein.
- Das Datenregister D0 besitzt eine Doppelfunktion. Es kann auf die gleiche Weise wie die anderen Datenregister D7-D1 als normales Datenregister verwendet werden. Außerdem kann das Datenregister D0 bei der Ausführung einiger Befehle bestimmte Spezialfunktionen definieren. Einige der Bits des höchstwertigen Halbworts des Datenregisters D0 spezifizieren die Operation sämtlicher Typen der erweiterten Rechenwerksoperationen. Einige der Bits des niederwertigsten Halbworts des Datenregisters D0 spezifizieren während einer Mehrfachmultiplikationsoperation Multipliziereroperationen. Die 5 niederwertigsten Bits des Datenregisters D0 spezifizieren einen von bestimmten Befehlsklassen verwendeten voreingestellten Barrel-Rotationsbetrag. Fig. 9 zeigt den Inhalt des Datenregisters D0 bei der Spezifizierung der Operation der Dateneinheit 110.
- Das "FMOD"-Feld (Bits 31-28) des Datenregisters D0 ermöglicht die Modifizierung der Grundoperation des Rechenwerks 230 bei der Ausführung eines Befehls, der eine erweiterte Rechenwerksoperation (eine EALU-Operation) aufruft. Tabelle 6 zeigt diese Modifiziereroperationen. Es wird angemerkt, daß bestimmte Befehlswortbits, wie in Tabelle 6 angegeben ist, in einigen Befehlsformaten auf die gleiche Weise als Funktionsmodifizierer decodiert werden. Diese werden unten weiter diskutiert. Tabelle 6
- Die in Tabelle 6 aufgeführten modifizierten Operationen werden unten erläutert. Wenn das "FMOD"-Feld "0000" ist, führt dies zur normalen, nicht modifizierten Operation. Die Modifizierung "cain" bewirkt, daß der Übertrag von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 das "C"-Bit des Statusregisters 210 ist. Dies ermöglicht eine Addition mit Übertrag, die Subtraktion mit Borgen und das Negieren mit Borgeoperationen. Die Modifizierung "%!" arbeitet bei der Maskenerzeugung. Wenn die "%!"-Modifizierung aktiv ist, erzeugt der Maskengenerator 239 für einen Drehbetrag null effektiv anstelle von sämtlich "0"-en sämtlich "1"-en. Diese Funktion kann durch Ändern der von dem Maskengenerator 239 erzeugten Maske oder durch Modifizieren der Funktion des Rechenwerks 230 realisiert werden, so daß die Maske sämtlicher an den C-Port gelieferten "0"-en so wirkt, als ob sämtlich "1"-en geliefert würden. Diese Modifizierung ist nützlich in einigen Rotationsoperationen. Die Modifizierungen "LMO", "RMO", "LMBC" und "RMBC" bezeichnen Steuerungen der LMO/RMO/LMBC/RMBC-Schaltung 237. Die Modifizierung "LMO" findet die am weitesten links stehende "1" des zweiten arithmetischen Eingangssignals. Die Modifizierung "RMO" findet die am weitesten rechts stehende "1". Die Modifizierung "LMBC" findet das am weitesten links stehende Bit, das sich von dem Vorzeichenbit (Bit 31) unterscheidet. Die "RMBC"- Modifizierung findet das am weitesten rechts stehende Bit, das sich von dem ersten Bit (Bit 0) unterscheidet. Es wird angemerkt, daß diese Modifizierungen nur relevant sind, wenn der C-Port des Rechenwerks 230 keine Maske vom Maskengenerator 239 empfängt. Die Modifizierung "A-port = 0" gibt an, daß das Eingangssignal in den A-Port des Rechenwerks 230 effektiv auf 0 gesetzt wird. Dies kann dadurch stattfinden, daß der Multiplexer Amux 232 ein Ausgangssignal null liefert, oder die Operation des Rechenwerks 230 kann in einer Weise geändert werden, die die gleiche Wirkung hat. Eine "A-port = 0"-Modifizierung wird in bestimmten Negations-, Absolutwert- und Rechtsverschiebungsoperationen verwendet. Eine "Rechenwerksmehrfachoperation"-Modifizierung gibt an, daß einer oder mehrere Übertragspfade des Rechenwerks 230 bedient werden, wobei tatsächlich zwei oder mehr parallel arbeitende unabhängige Rechenwerke gebildet werden. Das "Asize"-Feld des Statusregisters 210 steuert die Anzahl dieser mehreren Rechenwerkabschnitte. Das Mehrmerkerregister 211 speichert eine Anzahl von Statusbits, die gleich der Anzahl der Abschnitte der Rechenwerks- Mehrfachoperationen ist. In der "Übertrag/Überträge für die nächsthöhere Stelle- > Mehrmerker"-Modifizierung wird das Übertragsbit oder werden die Übertragsbits im Mehrmerkerregister 211 gespeichert. In der "Null-Ergebnisse(e) → Mehrmerker"-Modifizierung wird eine Angabe des Null-Ergebnisses für den entsprechenden Rechenwerksabschnitt im Mehrmerkerregister 211 gespeichert. Dieser Prozeß ist oben zusammen mit der Beschreibung des Mehrmerkerregisters 211 beschrieben. Während dieser Speicheroperation können die Bits im Mehrmerkerregister 211 als Reaktion auf die "Drehe"-Modifizierung gedreht oder als Reaktion auf die "Lösche"-Modifizierung gelöscht werden. Diese Optionen sind oben zusammen mit der Beschreibung des Mehrmerkerregisters 211 diskutiert.
- Das "A"-Bit (Bit 27) des Datenregisters D0 steuert, ob das Rechenwerk 230 während einer erweiterten Rechenwerksoperation eine arithmetische oder eine boolesche logische Operation ausführt. Dieses Bit wird das Arithmetikfreigabebit genannt. Wenn das "A"-Bit "1" ist, wird eine arithmetische Operation ausgeführt. Wenn das "A"-Bit "0" ist, wird eine logische Operation ausgeführt. Wenn das "A"-Bit "0" ist, ist der Übertrag von einer vorhergehenden Stelle vom Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 allgemein "0". Wie unten weiter erläutert wird, können bestimmte erweiterte Rechenwerksoperationen selbst dann ein Bit für den Übertrag "1" von einer vorhergehenden Stelle haben, wenn das "A"-Bit "0" ist, was eine logische Operation bezeichnet.
- Das "EALU"-Feld (Bits 19-26) des Datenregisters D0 definiert eine erweiterte Rechenwerksoperation. Die acht Bits des "EALU"-Feldes spezifizieren die in sämtlichen Typen erweiterter Rechenwerksoperationen verwendeten Rechenwerks-Funktionssteuerbits. Diese Bits werden zu den Steuersignalen für das Rechenwerk 230. Sie können direkt an das Rechenwerk 230 übergeben werden oder gemäß dem "FMOD"-Feld modifiziert werden. In einigen Befehlen werden die Bits des "EALU"-Feldes invertiert, was zu einem "EALUF" oder zu einer erweiterten Rechenwerks-Fehloperation führt. In diesem Fall werden die acht an das Rechenwerk 230 gelieferten Steuerbits invertiert.
- Das "C"-Bit (Bit 18) des Datenregisters D0 bezeichnet den Übertrag von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 während erweiterter Rechenwerksoperationen. Durch dieses "C"-Bit ist der Wert des Übertrags von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks während erweiterter Rechenwerksoperationen gegeben. Dies ermöglicht, den Wert des Übertrags von einer vorhergehenden Stelle wie für Nicht-EALU-Operationen anstatt durch eine Formel direkt zu spezifizieren.
- Das "I"-Bit (Bit 17) des Datenregisters D0 wird als das Bit für die Invertierung des Übertrags von einer vorhergehenden Stelle bezeichnet. Das "I"-Bit bestimmt zusammen mit dem "C"-Bit und dem (unten definierten) "S"-Bit, ob der Übertrag von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 zu invertieren ist oder nicht, wenn der Funktionscode einer Rechenwerksoperation invertiert ist. Dies wird unten weiter genau geschildert.
- Das "S"-Bit (Bit 16) des Datenregisters D0 gibt die Auswahl der Vorzeichenerweiterung an. Das "S"-Bit wird bei der Ausführung erweiterter Rechenwerksoperationen ("A"-Bit = 1) verwendet. Wenn das "S"-Bit "1" ist, sind die (aus dem Bit 22-19 erzeugten) Rechenwerks-Steuersignale F3-F0 zu invertieren, wenn das Vorzeichenbit (Bit 31) des ersten Rechenwerks- Dateneingangsbusses 206 "0" ist, während sie nicht zu invertieren sind, wenn das Vorzeichenbit "1" ist. Die Wirkung des bedingten Invertierens der Rechenwerks- Steuersignale F3-F0 wird unten erläutert. Eine solche Inversion ist nützlich zur Vorzeichenerweiterung eines gedrehten Eingangssignals in bestimmten arithmetischen Operationen. Falls die erweiterte Rechenwerkoperation boolesch ist ("A"-Bit = 0), wird das "S"-Bit ignoriert, wobei die Rechenwerks- Steuersignale F3-F0 ungeändert sind.
- Tabelle 7 zeigt die Wechselwirkung des "C"-, "I"- und "S"-Bits des Datenregisters D0. Es wird angemerkt, daß ein "X"-Eintrag entweder für das "I"-Bit oder für das Vorzeichen des ersten Eingangssignals angibt, daß das Bit das Ergebnis nicht steuert, d. h. eine "Unbedeutend"-Bedingung ist. Tabelle 7
- Wenn das "S"-Bit gleich "1" ist und das Vorzeichenbit des ersten für den B-Port des Rechenwerks 230 bestimmten Eingangssignals gleich "0" ist, kann der Wert des Übertrags von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230, der durch den Wert des "C"-Bits eingestellt wird, optional gemäß dem Wert des "I"-Bits invertiert werden. Dies ermöglicht, daß der Übertrag von einer vorhergehenden Stelle anhand des Vorzeichens des Eingangssignals optional invertiert wird oder nicht. Außerdem wird angemerkt, daß die Rechenwerks- Steuersignale F3-F0 anhand des Vorzeichens des Eingangssignals optional invertiert werden, wenn das "S"-Bit gleich "1" ist. Diese Auswahl der Inversion der Rechenwerks-Steuersignale F3-F0 kann durch das "FMOD"-Feld überschrieben werden. Wenn das "FMOD"-Feld "Übertrag von einer vorhergehenden Stelle = Statusregister-Übertragsbit" spezifiziert, ist der Übertrag von einer vorhergehenden Stelle unabhängig vom Wert des "S"- und "I"-Bits gleich dem "C"-Bit des Statusregisters 210. Außerdem wird angemerkt, daß der Übertrag von einer vorhergehenden Stelle für das Bit 0 des Rechenwerks 230 für erweiterte Rechenwerksoperationen selbst dann über das "C"-Bit auf "1" gesetzt werden kann, wenn das "A"-Bit "0" ist, d. h. eine boolesche Operation angibt.
- Das "N"-Bit (Bit 15) des Datenregisters D0 wird bei der Ausführung einer Aufspaltungs- oder Mehrabschnittsoperation des Rechenwerks verwendet. Dieses "N"-Bit wird das Nicht-mehrfach-Maskenbit genannt. Für einige erweiterte Rechenwerksoperationen, die über das "FMOD"-Feld Mehrfachoperationen spezifizieren, spezifiziert der Befehl eine über den Maskengenerator 239 an den C-Port des Rechenwerks 230 zu übergebende Maske. Dieses "N"-Bit bestimmt, ob die Maske in die gleiche Anzahl von Abschnitten wie das Rechenwerk 230 aufgeteilt wird oder nicht. Es wird daran erinnert, daß die Anzahl dieser mehreren Abschnitte durch das "Asize"-Feld des Statusregisters 210 eingestellt wird. Wenn das "N"-Bit "0" ist, wird die Maske in mehrere Masken aufgeteilt. Wenn das "N"- Bit "1" ist, erzeugt der Maskengenerator 239 eine einzige 32-Bit-Maske.
- Das "E"-Bit (Bit 14) bezeichnet einen explizit mehrfachen Übertrag von einer vorhergehenden Stelle. Dieses Bit ermöglicht, den Übertrag von einer vorhergehenden Stelle zur Laufzeit durch das Eingangssignal in den C-Port des Rechenwerks 230 zu spezifizieren. Wenn sowohl das "A"-Bit als auch das "E"-Bit "1" sind und das "FMOD"-Feld nicht die cain-Funktion bezeichnet, werden die Wirkungen des "S"-, "I"- und "C"-Bits aufgehoben. Das Übertragseingangssignal in jeden Abschnitt wird während der Mehrfacharithmetik als das Exklusiv-ODER des niederwertigsten Bits des entsprechenden in den C-Port eingegebenen Abschnitts und des Funktionssignals F0 genommen. Falls die Mehrfacharithmetik nicht ausgewählt ist, ist der einzelne Übertrag von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 das Exklusiv-ODER des niederwertigsten Bits (Bit 0) des Eingangssignals in den C-Port und des Funktionssignals F0. Dies ist besonders nützlich zur Ausführung einer Mehrfacharithmetik, in der in verschiedenen Abschnitten verschiedene Funktionen ausgeführt werden. Eine erweiterte Rechenwerksoperation entspricht (A^B)&C (A^~B)&C. Unter Verwendung einer Maske für das Eingangssignal des C-Ports erzeugt ein Abschnitt mit sämtlich "0"-en eine Addition mit dem richtigen Übertrag "0" von einer vorhergehenden Stelle, während ein Abschnitt mit sämtlich "1"-en eine Subtraktion mit dem richtigen Übertrag "1" von einer vorhergehenden Stelle erzeugt.
- Das "DMS"-Feld (Bits 12-8) des Datenregisters D0 definiert die Verschiebung nach dem Multiplizierer. Diese Verschiebung findet in der Produkt- Linksverschiebeeinrichtung 224 vor dem Sichern des Ergebnisses oder vor dem Übergeben des Ergebnisses an die Rundungslogik statt. Während dieser Linsverschiebung werden die herausgeschobenen höchstwertigen Bits verworfen, während in die niederwertigsten Bits Nullen geschoben werden. Das "DMS"-Feld ist während irgendeiner Multiplikationsoperation/erweiterten Rechenwerksoperation wirksam. In der bevorzugten Ausführungsform wählen die Bits 9-8 des Datenregisters D0 eine Linksverschiebung von 0, 1, 2, oder 3 Stellen aus. Tabelle 8 zeigt die Decodierung. Tabelle 8
- Das DMS-Feld enthält 5 Bits, die Linksverschiebungsbeträge von 0 bis 31 Stellen bestimmen können. In der bevorzugten Ausführungsform ist die Produkt- Linksverschiebungseinrichtung 224 aus Größen- und Komplexitätsgründen auf Verschiebungen von 0 bis 3 Stellen begrenzt. Somit werden die Bits 12-10 des Datenregisters D0 beim Einstellen des Linksverschiebungsbetrags ignoriert. Auf Wunsch ist es aber möglich, aus dem "DMS"-Feld einen Linksverschiebungsbetrag innerhalb des vollen Bereichs von 0 bis 31 Stellen zu erzeugen.
- Das "M"-Bit (Bit 7) des Datenregisters D0 gibt eine Mehrfachmultiplikationsoperation an. Der Multiplizierer 220 kann zwei 16-Bit- Zahlen multiplizieren, um ein 32-Bit-Ergebnis zu erzeugen, oder er kann gleichzeitig zwei Paare von 8-Bit-Zahlen multiplizieren, um ein Paar von 16-Bit- Ergebnissen zu erzeugen. Dieses "M"-Bit wählt entweder, falls "M" = "0" ist, eine einzelne 16-mal-16-Multiplikation oder, falls "M" = "1" ist, zwei 8-mal-8- Multiplikationen aus. Diese Operation ist ähnlich zu Rechenwerks- Mehrfachoperationen und wird unten weiter beschrieben.
- Das "R"-Bit (Bit 6) des Datenregisters D0 spezifiziert, ob an dem Ergebnis von dem Multiplizierer 220 eine Rundungsoperation stattfindet. Wenn das "R"-Bit "1" ist, findet eine unten zusammen mit der Operation des Multiplizierers 220 erläuterte Rundungsoperation statt. Wenn das "R"-Bit "0" ist, findet keine Rundung statt, wobei das 32-Bit-Ergebnis vom Multiplizierer 220 in das Zielregister geschrieben wird. Es wird angemerkt, daß die Verwendung eines vorgegebenen Bits im Datenregister D0 lediglich eine bevorzugte Ausführungsform für die Auslösung dieser Betriebsart ist. Es ist ebensogut möglich, die Rundungsbetriebsart über ein vorgegebenes Befehlswortbit freizugeben.
- Das "DBR"-Feld (Bits 4-0) des Datenregisters D0 spezifiziert einen von der Barrel-Rotationseinrichtung 235 während bestimmter Befehle verwendeten voreingestellten Barrel-Rotationsbetrag. Das "DBR"-Feld spezifiziert die Anzahl der Bitstellen, um die die Barrel-Rotationseinrichtung 235 nach links dreht. Diese 5 Bits können eine Linksrotation von 0 bis 31 Stellen spezifizieren. Der Wert des "DBR"-Feldes kann auch über den Multiplexer Mmux 234 an den Maskengenerator 239 geliefert werden. Der Maskengenerator 239 bildet eine an den C-Port des Rechenwerks 230 gelieferte Maske. Die Operation des Maskengenerators 239 wird unten diskutiert.
- Der Multiplizierer 220 ist ein Einzyklus-Hardware-Multiplizierer. Wie oben beschrieben wurde, arbeitet der Multiplizierer 220 in der Weise, daß er ein Paar 16-Bit-Zahlen multipliziert, um ein 32-Bit-Ergebnis zu erhalten, oder zwei Paare von 8-Bit-Zahlen multipliziert, um zwei 16-Bit-Ergebnisse in dem gleichen 32- Bit-Datenwort zu erhalten.
- Das Rechenwerk 230 führt arithmetische und logische Operationen in der Dateneinheit 110 aus. Vorteilhaft enthält das Rechenwerk 230 drei Eingangsports zum Ausführen von arithmetischen und logischen Dreieingangsoperationen. Zahlreiche Busse und Hilfshardware unterstützten die drei Eingänge.
- Der Bus 241 für den Eingang A liefert Daten an den A-Port des Rechenwerks 230. Je nach Befehl liefert der Multiplexer Amux 232 Daten entweder vom zweiten Multiplizierereingangsbus 202 oder vom ersten Rechenwerks- Eingangsbus 205 an den Bus 241 für den Eingang A. Die Daten auf dem zweiten Multiplizierer-Eingangsbus 202 können über den Multiplexer Imux 222 und über den Puffer 223 aus einem spezifizierten Datenregister 200 oder von einem Sofortfeld des Befehls sein. Die Daten auf dem ersten Rechenwerks-Eingangsbus 205 können aus einem spezifizierten Datenregister 200 oder über den Puffer 106 vom Quelldatenbus für den globalen Port Gsrc-Bus 105 sein. Somit können die an den A-Port des Rechenwerks 230 gelieferten Daten aus einem der Datenregister 200, von einem Sofortfeld des Befehlsworts oder über den Datenbus für den globalen Quelldatenbus Gsrc 105 und über den Puffer 106 von einer Fernquelle aus einem anderen Register des digitalen Bild-/Graphikprozessors 71 sein.
- Der Bus 242 für den Eingang B liefert die Daten an den B-Port des Rechenwerks 230. Die Barrel-Rotationseinrichtung 235 liefert die Daten an den Bus 242 für den Eingang B. Somit steuert die Barrel-Rotationseinrichtung 235 das Eingangssignal in den B-Port des Rechenwerks 230. Die Barrel-Rotationseinrichtung 235 empfängt die Daten vom zweiten Rechenwerks-Eingangsbus 206. Der zweite Rechenwerks-Eingangsbus 206 liefert die Daten aus einem spezifizierten Datenregister 200, die Daten vom Quelldatenbus für den globalen Port Gsrc-Bus 105 über den Puffer 104 oder ein Spezialdatenwort vom Puffer 236. Falls freigegeben, liefert der Puffer 236 eine 32-Bit-Datenkonstante von "00000000000000000000000000000001" (auch Hex "1" genannt) an den zweiten Rechenwerks-Eingangsbus 206. Es wird angemerkt, daß Daten oder Adressen, vor denen ein "Hex" steht, im folgenden hexadezimal ausgedrückt sind. Daten vom Quelldatenbus für den globalen Port Gsrc 105 können wie zuvor beschrieben als Fernquelle an die Barrel-Rotationseinrichtung 235 geliefert werden. Wenn der Puffer 236 freigegeben ist, gibt die Barrel-Rotationseinrichtung 235 die Erzeugung irgendeiner Konstante der Form 2N, wobei N der Barrel- Rotationsbetrag, auf dem Bus 242 für den Eingang B frei. Konstanten dieser Form sind nützlich in Operationen zur Steuerung nur eines einzelnen Bits eines 32-Bit- Datenworts. Die an den zweiten Rechenwerks-Eingangsbus 206 und an die Barrel-Rotationseinrichtung 235 gelieferten Daten hängen von dem Befehl ab.
- Die Barrel-Rotationseinrichtung 235 ist eine 32-Bit-Rotationseinrichtung, die ihre empfangenen Daten von 0 bis 31 Stellen drehen kann. Sie ist eine Linksrotationseinrichtung, wobei aber durch Linksrotation von 32-n Bits eine Rechtsrotation von n Bits erhalten werden kann. Ein Fünfbit-Eingangssignal vom Rotationsbus 244 steuert den Betrag der von der Barrel-Rotationseinrichtung 235 gelieferten Rotation. Es wird angemerkt, daß die Rotation zirkulär ist und daß keine Bits verlorengehen. Die links aus der Barrel-Rotationseinrichtung 235 herausgedrehten Bits laufen nach rechts zurück um. Der Multiplexer Smux 231 beliefert den Rotationsbus 244. Der Multiplexer Smux 231 besitzt mehrere Eingänge. Diese Eingänge umfassen: die fünf niederwertigsten Bits des ersten Multiplizierereingangsbusses 201; die fünf niederwertigsten Bits des zweiten Multiplizierereingangsbusses 202; fünf Bits von dem "DBR"-Feld des Datenregisters D0; und eine Fünf-Bit-Null-Konstante "00000". Es wird angemerkt, daß das Befehlswort, da der zweite Multiplizierereingangsbus 202 über den Multiplexer Imux 222 und über den Puffer 223 Sofortdaten empfangen kann, einen Sofortrotationsbetrag an die Barrel-Rotationseinrichtung 235 liefern kann. Je nach Befehl wählt der Multiplexer Smux 231 einen dieser Eingänge zur Bestimmung des Rotationsbetrags in der Barrel-Rotationseinrichtung 235 aus. Jede dieser Rotationsgrößen beträgt fünf Bits und kann somit eine Linksrotation in dem Bereich von 0 bis 31 Bits einstellen.
- Außerdem liefert die Barrel-Rotationseinrichtung 235 Daten an den Multiplexer Bmux 227. Dies ermöglicht, daß die gedrehten Daten von der Barrel- Rotationseinrichtung 235 parallel zu einer Operation des Rechenwerks 230 über den Multipliziererzielbus 203 in einem der Datenregister 200 gespeichert werden. Die Barrel-Rotationseinrichtung 235 nutzt den Multipliziererzielbus 203 über den Multiplexer Bmux 227 gemeinsam mit dem Multiplexer Rmux 221. Somit können die gedrehten Daten nicht gesichert werden, wenn eine Mehrfachoperation stattfindet. In der bevorzugten Ausführungsform wird dieses Zurückschreibeverfahren insbesondere durch erweiterte Rechenwerksoperationen unterstützt, wobei es durch Spezifizieren des gleichen Registerziels für das Ergebnis der Barrel-Rotationseinrichtung 235 wie für das Ergebnis des Rechenwerks 230 gesperrt werden kann. In diesem Fall wird nur das auf dem Rechenwerks-Zielbus 204 erscheinende Ergebnis des Rechenwerks 230 gesichert.
- Obgleich sich die obengegebene Beschreibung auf eine Barrel- Rotationseinrichtung 235 bezieht, erkennt der Fachmann auf dem Gebiet, daß der wesentliche Nutzen unter Verwendung einer Schiebeeinrichtung erreicht werden kann, die die Daten nicht umlaufen läßt. Insbesondere für Schiebe- und Maskenoperationen, bei denen nicht sämtliche Bits für den B-Port des Rechenwerks 230 verwendet werden, liefert eine durch den Rotationsbus 244 gesteuerte Schiebeeinrichtung die benötigte Funktionalität. In diesem Fall gibt vorzugsweise ein zusätzliches Bit wie etwa das höchstwertige Bit auf dem Rotationsbus 244 an, ob eine Rechtsverschiebung oder eine Linksverschiebung auszuführen ist. Zur Angabe des Verschiebungsbetrags sind weiterhin fünf Bits auf dem Rotationsbus 244 erforderlich. Somit ist in der untenstehenden Beschreibung selbstverständlich, daß die Barrel-Rotationseinrichtung 235 in vielen Fällen durch eine Schiebeeinrichtung ersetzt werden kann.
- Der Bus 243 für den Eingang C liefert Daten an den C-Port des Rechenwerks 230. Der Multiplexer Cmux 233 liefert Daten an den Bus 243 für den Eingang C. Der Multiplexer Cmux 233 empfängt Daten aus vier Quellen. Diese sind die LMO/RMO/LMBC/RMBC-Schaltung 237, die Erweiterungsschaltung 238, der zweite Multiplizierereingangsbus 202 und der Maskengenerator 239.
- Die LMO/RMO/LMBC/RMBC-Schaltung 237 ist eine hierzu vorgesehene Hardware-Schaltung, die je nach Befehl oder dem "FMOD"-Feld des Datenregisters D0 entweder die am weitesten links stehende "1" oder die am weitesten rechts stehende "1", die am weitesten links stehende Bitänderung oder die am weitesten rechts stehende Bitänderung der Daten auf dem zweiten Rechenwerks-Eingangsbus 206 bestimmt. Die LMO/RMO/LMBC/RMBC- Schaltung 237 liefert an den Multiplexer Cmux 233 eine 32-Bit-Zahl mit einem Wert, der der erfaßten Größe entspricht. Die am weitesten links stehende Bitänderung ist als die Stelle des am weitesten links stehenden Bits definiert, das von dem Vorzeichenbit 32 verschieden ist. Die am weitesten rechts stehende Bitänderung ist als die Stelle des am weitesten rechts stehenden Bits definiert, das vom Bit 0 verschieden ist. Das Ergebnis ist eine der erfaßten Bitstelle entsprechende Binärzahl, wie sie unten in Tabelle 9 aufgeführt ist. Die Werte sind effektiv die Big-Endian-Bitnummer der erfaßten Bitstelle, wobei das Ergebnis 31- (Bitstelle) ist. Tabelle 9
- Diese Bestimmung ist nützlich zur Normierung und zur Bildkompression zum Auffinden einer am weitesten links oder am weitesten rechts stehenden "1" oder eines geänderten Bits als Rand eines Bildes. Die LMO/RMO/LMBC/RMBC- Schaltung 237 ist ein potentieller Geschwindigkeitspfad, womit die an den zweiten Rechenwerks-Eingangsbus 206 gekoppelte Quelle vorzugsweise auf eines der Datenregister 200 beschränkt ist. Für die Operationen der am weitesten links stehenden "1" und der am weitesten rechts stehenden "1" wird das "V"-Bit, das den Überlauf des Statusregisters 210 angibt, auf "1" gesetzt, falls es in der Quelle keine "1"-en gab, während es auf "0" gesetzt wird, wenn es welche gab. Für die Operationen der am weitesten links stehenden Bitänderung und der am weitesten rechts stehenden Bitänderung wird das "V"-Bit auf "1" gesetzt, wenn sämtliche Bits in der Quelle gleich waren, während es auf "0" gesetzt wird, wenn eine Änderung erfaßt wurde. Wenn das "V"-Bit durch irgendeine dieser Operationen auf "1" gesetzt wird, ist das LMO/RMO/LMBC/RMBC-Ergebnis effektiv 32. Weitere Einzelheiten in bezug auf die Operation des Statusregisters 210 erscheinen oben.
- Die Erweiterungsschaltung 238 empfängt Eingangssignale vom Mehrmerkerregister 211 und vom Statusregister 210. Anhand des obenbeschriebenen "Msize"-Feldes des Statusregisters 210 verdoppelt die Erweiterungsschaltung 238 einige der im Mehrmerkerregister 211 gespeicherten niederwertigsten Bits zum Auffüllen der 32 Bits. Die Erweiterungsschaltung 238 kann die niederwertigsten Bits 32-mal erweitern, die zwei niederwertigsten Bits 16-mal erweitern oder die vier niederwertigsten Bits 8-mal erweitern. Das "Asize"-Feld des Statusregisters 210 steuert Prozesse, in denen das 32-Bit- Rechenwerk 230 in unabhängige Abschnitte für unabhängige Datenoperationen aufgeteilt ist. Dies ist nützlich für eine Operation an Pixelgrößen mit weniger als der Breite von 32 Bits des Rechenwerks 230. Dieser Prozeß sowie Beispiele seiner Verwendung werden unten weiter beschrieben.
- Der Maskengenerator 239 erzeugt 32-Bit-Masken, die über den Cmux 233 an den Bus 243 für den Eingang C geliefert werden können. Die erzeugte Maske hängt von einem S-Bit-Eingangssignal vom Multiplexer Mmux 234 ab. Der Multiplexer Mmux 234 wählt entweder die 5 niederwertigsten Bits des zweiten Multiplizierereingangsbusses 202 oder das "DBR"-Feld vom Datenregister D0 aus. In der bevorzugten Ausführungsform führt ein Eingangssignal mit dem Wert N dazu, daß der Maskengenerator 239 ein Maske erzeugt, die N "1"-en in den niederwertigsten Bits und 32-N "0"-en in den höchstwertigen Bits besitzt. Dies bildet ein Ausgangssignal mit N rechtsbündigen "1"-en. Dies ist nur eines von vier möglichen Verfahren zum Betrieb des Maskengenerators 239. In einer zweiten Ausführungsform erzeugt der Maskengenerator 239 die Maske mit N rechtsbündigen "0"-en, d. h. mit N "0"-en in den niederwertigsten Bits, und N-32 "1"-en in den höchstwertigen Bits. Es ist ebensogut möglich, daß der Maskengenerator 239 die Maske mit N linksbündigen "1"-en oder N linksbündigen "0"-en erzeugt. Tabelle 10 zeigt die Operation des Maskengenerators 239 gemäß der bevorzugten Ausführungsform, wenn keine Mehrfacharithmetik ausgewählt ist. Tabelle 10
- Ein Wert N von "0" erzeugt somit 32 "0"-en. In einigen Situationen wird es aber bevorzugt, daß ein Wert von "0" 32 "1"-en erzeugt. Diese Funktion wird durch die in dem "FMOD"-Feld des Statusregisters 210 oder bei der Ausführung einer erweiterten Rechenwerksoperation in den Bits 52, 54, 56 und 58 des Befehls spezifizierte "%!"-Modifizierung ausgewählt. Diese Funktion kann dadurch realisiert werden, daß die durch den Maskengenerator 239 erzeugte Maske geändert wird, oder dadurch, daß die Funktion des Rechenwerks 230 in der Weise modifiziert wird, daß die an den C-Port gelieferte Maske sämtlich aus "0"-en in der Weise wirkt, als ob sämtlich "1"-en geliefert würden. Es wird angemerkt, daß ähnliche Modifizierungen der anderen ausführbaren Maskenfunktionen möglich sind. Somit kann die "%!"-Modifizierung einen Maskengenerator 239, der eine Maske mit N rechtsbündigen "0"-en erzeugt, für N = 0 sämtlich auf "0"-en ändern. Ähnlich kann die "%!"-Modifizierung einen Maskengenerator 239, der N linksbündige "1"-en erzeugt, für N = 0 sämtlich auf "1"-en ändern, oder einen Maskengenerator 239, der N linksbündige "0"-en erzeugt, für N = 0 sämtlich auf "0"-en ändern.
- Die Auswahl der Mehrfacharithmetik modifiziert die Operation des Maskengenerators 239. Wenn das "Asize"-Feld des Statusregisters "110" ist, wählt dies eine Datengröße von 32 Bits aus, wobei die Operation des Maskengenerators 239 gegenüber der in Tabelle 10 gezeigten ungeändert ist. Wenn das "Asize"-Feld des Statusregisters "101" ist, wählt dies eine Datengröße von 16 Bits aus, wobei der Maskengenerator 239 zwei unabhängige 16-Bit- Masken bildet. Dies ist in Tabelle 11 gezeigt. Es wird angemerkt, daß das höchstwertige Bit des Eingangssignals in den Maskengenerator 239 in diesem Fall ignoriert wird. Tabelle 11 zeigt dieses Bit als ein unbedeutend-"X". Tabelle 11
- Die Funktion des Maskengenerators 239 wird ähnlich für eine Auswahl von Bytedaten über ein "Asize"-Feld von "100" modifiziert. Der Maskengenerator 239 bildet unter Verwendung lediglich der drei niederwertigsten Bits seines Eingangssignals vier unabhängige Masken. Dies ist in Tabelle 12 gezeigt. Tabelle 12
- Wie oben angemerkt wurde, ist es möglich, daß Mehrfachoperationen mit 8 Abschnitten mit jeweils 4 Bits, mit 16 Abschnitten mit jeweils 2 Bits und mit 32- Ein-Bitabschnitten unterstützt werden. Der Fachmann auf dem Gebiet erkennt, daß diese anderen Datengrößen eine ähnliche Modifizierung an der Operation des Maskengenerators 239 erfordern, wie sie oben in den Tabellen 10, 11 und 12 gezeigt ist.
- Die Dateneinheit 110 enthält ein Dreieingangs-Rechenwerk 230. Das Rechenwerk 230 enthält drei Eingangsbusse: der Bus 241 für den Eingang A liefert ein Eingangssignal an einen A-Port; der Bus 242 für den Eingang B liefert ein Eingangssignal an einen B-Port; und der Bus 243 für den Eingang C liefert ein Eingangssignal an einen C-Port. Das Rechenwerk 230 liefert ein Ergebnis an den Rechenwerks-Zielbus 204. Dieses Ergebnis kann in einem der Datenregister der Datenregister 200 gespeichert werden. Alternativ kann das Ergebnis über den Puffer 108 und über den Zieldatenbus für den globalen Port Gdst 107 in einem anderen Register in dem digitalen Bild-/Graphikprozessor 71 gespeichert werden. Diese Funktion wird eine Fernoperation genannt. Der Befehl spezifiziert das Ziel des Ergebnisses. Die vom Funktionssignalgenerator 245 an das Rechenwerk 230 gelieferten Funktionssignale bestimmen die besondere für einen besonderen Zyklus durch das Rechenwerk 230 ausgeführte Dreieingangsfunktion. Der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 bildet ein an das Bit 0, das erste Bit des Rechenwerks 230, geliefertes Signal für den Übertrag von einer vorhergehenden Stelle. Wie zuvor beschrieben wurde, liefert der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 während arithmetischer Mehrfachoperationen das Signal für den Übertrag von einer vorhergehenden Stelle an das niederwertigste Bit jedes der mehreren Abschnitte.
- Fig. 10 zeigt in Form eines Blockschaltplans die Konstruktion einer beispielhaften Bitschaltung 400 des Rechenwerks 230. Das Rechenwerk 230 bearbeitet bevorzugt Datenwörter mit 32 Bits und enthält somit 32 parallele Bitschaltungen 400. Jede Bitschaltung 400 des Rechenwerks 230 empfängt: die entsprechenden Bits der drei Eingänge Ai, Bi und Ci; ein als cin0 bezeichnetes Signal für einen Null-Übertrag von einer vorhergehenden Stelle von der vorhergehenden Bitschaltung 400; ein als cin1 bezeichnetes Signal für einen Eins-Übertrag von einer vorhergehenden Stelle von der vorhergehenden Bitschaltung 400; ein Arithmetikfreigabesignal Aen; ein inverses Vernichtungssignal i-1 von der vorhergehenden Bitschaltung; ein Übertragsabtast-Auswahlsignal zur Auswahl des Signals für den Übertrag von einer vorhergehenden Stelle cin0 oder cin1; und acht inverse Funktionssignale - . Die Signale für den Übertrag von einer vorhergehenden Stelle cin0 und cin1 für das erste Bit (Bit 0) sind völlig gleich und werden durch eine Spezialschaltung erzeugt, die unten beschrieben wird. Es wird angemerkt, daß die Eingangssignale Ai, Bi und Ci für jedes Bit des Rechenwerks 230 gebildet werden und verschieden sein können. Das Arithmetikfreigabesignal Aen und die invertierten Funktionssignale - sind für sämtliche 32 Bitschaltungen 400 gleich. Jede Bitschaltung 400 des Rechenwerks 230 erzeugt: ein entsprechendes Ein-Bit-Ergebnis Si; ein Signal Zi für eine frühe Null; ein als cout0 bezeichnetes Signal für einen Null-Übertrag für die nächsthöhere Stelle, das für die nächste Bitschaltung das Signal cin0 für einen Null-Übertrag von einer vorhergehenden Stelle bildet; ein als cout1 bezeichnetes Signal für einen Eins-Übertrag für die nächsthöhere Stelle, das für die nächste Bitschaltung das Signal cin1 für einen Eins-Übertrag von einer vorhergehenden Stelle bildet; und ein inverses Vernichtungssignal i, das für die nächste Bitschaltung das inverse Vernichtungssignal i-1 bildet. Falls das "C"-Bit für diesen Befehl nicht gegenüber einer Änderung geschützt ist, wird entweder das Signal cout0 für einen Null-Übertrag für die nächsthöhere Stelle oder das Signal cout1 für einen Eins- Übertrag für die nächsthöhere Stelle des letzten Bits in dem 32-Bit-Rechenwerk 230 im Statusregister 210 gespeichert. Außerdem kann der Befehl während einer Mehrfacharithmetik spezifizieren, daß Signale für einen Übertrag für die nächsthöhere Stelle von getrennten Rechenwerksabschnitten im Mehrmerkerregister 211 gespeichert werden. In diesem Fall wird entweder das Signal für einen Null-Übertrag für die nächsthöhere Stelle cout0 oder das Signal für einen Eins-Übertrag für die nächsthöhere Stelle cout1, das ausgewählt wurde, im Mehrmerkerregister 211 gespeichert.
- Die Bitschaltung 400 enthält den Ergebnisgenerator 401, die Logik 402 für den Übertrag für die nächsthöhere Stelle und den Generator 403 für boolesche Funktionen. Der Generator 403 für boolesche Funktionen bildet gemäß den inversen Funktionssignalen - eine boolesche Kombination der jeweiligen Biteingangssignale Ai, Bi und Ci. Der Generator für boolesche Funktionen erzeugt ein entsprechendes Fortpflanzungssignal Pi, ein Erzeugungssignal Gi und ein Vernichtungssignal Ki. Die Ergebnislogik 401 kombiniert das Fortpflanzungssignal Pi entsprechend der Auswahl durch das Übertragssinn-Auswahlsignal entweder mit dem Signal cin0 für den Übertrag von einer vorhergehenden Stelle oder mit dem Signal cin1 für den Übertrag von einer vorhergehenden Stelle vor einer vorhergehenden Bitschaltung 400 und bildet das Bitergebnis Si und ein Signal Zi für eine frühe Null. Die Logik 402 für den Übertrag für die nächsthöhere Stelle empfängt das Fortpflanzungssignal Pi, das Erzeugungssignal Gi, das Vernichtungssignal Ki, die zwei Signale cin0 und Cin1 für den Übertrag von einer vorhergehenden Stelle und ein Arithmetikfreigabesignal Aen. Die Logik 402 für den Übertrag für die nächsthöhere Stelle erzeugt zwei Signale cout0 und cout1 für den Übertrag für die nächsthöhere Stelle, die an die nächste Bitschaltung 400 geliefert werden.
- Die Fig. 11 und 12 zeigen zusammen eine beispielhafte Bitschaltung 400 des Rechenwerks 230. Fig. 11 zeigt die Einzelheiten einer Ergebnislogik 401 und der Logik 402 für den Übertrag für die nächsthöhere Stelle jeder Bitschaltung 400 des Rechenwerks 230. Fig. 12 zeigt die Einzelheiten des entsprechenden Generators 403 für boolesche Funktionen jeder Bitschaltung 400 des Rechenwerks 230.
- Jede Ergebnislogik 401 erzeugt ein entsprechendes Ergebnissignal Si und ein Signal Zi für eine frühe Null. Die Ergebnislogik 420 bildet diese Signale aus den zwei Signalen für einen Übertrag von einer vorhergehenden Stelle, aus einem inversen Fortpflanzungssignal i, aus einem inversen Vernichtungssignal i-1 von der Schaltung für das vorhergehende Bit und aus einem Übertragssinn- Auswahlsignal. Die Logik 402 für einen Übertrag für die nächsthöhere Stelle bildet zwei Signale für einen Übertrag für die nächsthöhere Stelle und ein inverses Vernichtungssignal i. Diese Signale werden aus den zwei Signalen für einen Übertrag von einer vorhergehenden Stelle, aus einem inversen Fortpflanzungssignal i, aus einem inversen Erzeugungssignal i und aus einem Vernichtungssignal Ki für diese Bitschaltung 400 gebildet. Jedes Fortpflanzungssignal gibt an, ob sich ein Signal für einen "1"-Übertrag von einer vorhergehenden Stelle über die Bitschaltung 400 zu der nächsten Bitschaltung 400 fortpflanzt oder ob es absorbiert wird. Das Erzeugungssignal gibt an, ob die Eingangssignale in die Bitschaltung 400 ein Signal für einen "1"-Übertrag für die nächsthöhere Stelle für die nächste Bitschaltung 400 erzeugen. Das Vernichtungssignal gibt an, ob das Eingangssignal in die Bitschaltung 400 ein Signal für einen "0"-Übertrag für die nächsthöhere Stelle für die nächste Bitschaltung erzeugt. Es wird angemerkt, daß sich das Fortpflanzungssignal Pi, das Erzeugungssignal Gi und das Vernichtungssignal Ki gegenseitig ausschließen.
- Für jede Kombination der Eingangssignale wird nur eines dieser Signale erzeugt.
- Jede Bitschaltung 400 des Rechenwerks 230 verwendet eine Technik zum Verringern der Übertragsabklingzeit über die 32 Bits. Das Rechenwerk 230 ist in Übertragsabschnitte mit vorzugsweise 4 Abschnitten zu je 8 Bits unterteilt. Das Signal cin0 für einen Null-Übertrag von einer vorhergehenden Stelle jedes vorhergehenden Abschnitts der niederwertigsten Bitschaltung 400 jedes solchen Abschnitts ist fest auf "0" verdrahtet, während sein Signal cin1 für einen Eins- Übertrag von einer vorhergehenden Stelle fest auf "1" verdrahtet ist. Jede Bitschaltung 400 bildet zwei Ergebnisse und zwei Signale für den Übertrag für die nächsthöhere Stelle für die nächste Bitschaltung. Wenn die Übertragswelligkeit über jeden Abschnitt abgeschlossen ist, bildet das tatsächliche Übertragsausgangssignal von dem höchstwertigen Bit des vorhergehenden Übertragsabschnitts das Übertragssinn-Auswahlsignal. Dieses Übertragsauswahlsignal ermöglicht über einen Multiplexer die Auswahl des durch die Bits eines Abschnitts erzeugten tatsächlichen Ergebnisses. Der erste Übertragsabschnitt empfängt sein Übertragsauswahlsignal von dem unten genau geschilderten Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Diese Technik ermöglicht, daß die Übertragswelligkeit über die Übertragsabschnitte gleichzeitig stattfindet. Dies verringert auf kosten von etwas zusätzlicher Hardware für die redundanten Übertragsleitungen und für die Auswahl des Übertragssinns die Länge der zum Erzeugen des Ergebnisses benötigten Zeitdauer.
- Die Logik 402 für den Übertrag für die nächsthöhere Stelle steuert die Transformation der Signale für den Übertrag von einer vorhergehenden Stelle in Signale für den Übertrag für die nächsthöhere Stelle. Die Logik 402 für den Übertrag für die nächsthöhere Stelle enthält eine völlig gleiche Schaltung, die die zwei Signale cin0 und cin1 für den Übertrag von einer vorhergehenden Stelle bearbeitet. Das inverse Fortpflanzungssignal i und sein Inverses, das durch den Inverter 412 gebildete Fortpflanzungssignal Pi, steuern die Durchlaßgatter 413 und 423. Wenn das Fortpflanzungssignal Pi "1" ist, wird die Leitung 410 für einen Eins-Übertrag von einer vorhergehenden Stelle über das Durchlaßgatter 413 mit der Leitung 411 für einen Eins-Übertrag für die nächsthöhere Stelle verbunden, während die Leitung 420 für einen Null-Übertrag von einer vorhergehenden Stelle über das Durchlaßgatter 423 mit der Leitung 421 für einen Null-Übertrag für die nächsthöhere Stelle verbunden wird. Somit wird das Signal für den Übertrag von einer vorhergehenden Stelle auf den Übertrag für die nächsthöhere Stelle fortgepflanzt. Wenn das Fortpflanzungssignal Pi "0" ist, wird die Leitung 410 für einen Eins-Übertrag von einer vorhergehenden Stelle von der Leitung 411 für den Eins-Übertrag für die nächsthöhere Stelle getrennt, während die Leitung 420 für den Null-Übertrag von einer vorhergehenden Stelle von der Leitung 421 für den Übertrag für die nächsthöhere Stelle getrennt wird. Wenn das Erzeugungssignal Gi "1" ist, d. h., wenn das inverse Erzeugungssignal i "0" ist, wird der P-Kanal- MOSFET (Metalloxid-Feldeffekttransistor) 414 eingeschaltet, um die Speisespannung mit der Leitung 411 für den Übertrag für die nächsthöhere Stelle zu koppeln, während der P-Kanal-MOSFET 424 eingeschaltet wird, um die Speisespannung mit der Leitung 421 für den Übertrag für die nächsthöhere Stelle zu koppeln. Wenn das Erzeugungssignal Gi "0" ist, d. h., wenn das inverse Erzeugungssignal i "1" ist, werden die P-Kanal-MOSFETs 414 und 424 ausgeschaltet, wobei sie die Leitungen 411 und 421 für den Übertrag für die nächsthöhere Stelle nicht beeinflussen. Wenn das Vernichtungssignal Ki "1" ist, koppelt der N-Kanal-MOSFET 415 die Masse mit der Leitung 411 für den Übertrag für die nächsthöhere Stelle, während der N-Kanal-MOSFET 425 die Masse mit der Leitung 421 für den Übertrag für die nächsthöhere Stelle koppelt. Wenn das Vernichtungssignal Ki "0" ist, werden die N-Kanal-MOSFETs 415 und 425 ausgeschaltet, wobei sie die Leitungen 411 und 421 für den Übertrag für die nächsthöhere Stelle nicht beeinflussen. Der Inverter 422 erzeugt das an die nächste Bitschaltung gelieferte inverse Vernichtungssignal i.
- Die Exklusiv-ODER-Schaltungen 431 und 433 bilden die zwei Ergebnisse der Ergebnislogik 401. Die Exklusiv-ODER-Schaltungen 431 und 433 empfangen jeweils auf einem invertierenden Eingang das Fortpflanzungssignal Pi vom Inverter 427 und auf einem nichtinvertierenden Eingang das inverse Fortpflanzungssignal i vom Inverter 428. Die Exklusiv-ODER-Schaltung 431 empfängt für den Fall eines "0"-Übertrags von einer vorhergehenden Stelle für das niederwertigste Bit des momentanen Übertragsabschnitts auf einem nichtinvertierenden Eingang das inverse Signal in0 für einen Null-Übertrag von einer vorhergehenden Stelle von dem Inverter 426 und bildet das Ergebnis. In gleicher Weise empfängt die Exklusiv-ODER-Schaltung 433 für den Fall eines "1"- Übertrags von einer vorhergehenden Stelle für das niederwertigste Bit des momentanen Übertragsabschnitts auf einem nichtinvertierenden Eingang das inverse Signal in1 für einen "1"-Übertrag von einer vorhergehenden Stelle von dem Inverter 416 und bildet das Ergebnis. Die Inverter 432 und 434 liefern die Eingangssignale an den Multiplexer 435. Der Multiplexer 435 wählt anhand des Übertragssinn-Auswahlsignals eines dieser Signale aus. Dieses Übertragssinn- Auswahlsignal entspricht dem tatsächlichen Signal für den Übertrag für die nächsthöhere Stelle von dem höchstwertigen Bit des vorhergehenden Übertragsabschnitts. Das invertierte Ausgangssignal des Multiplexers 435 vom Inverter 436 ist das gewünschte Bitergebnis S..
- Die Ergebnislogik 401 bildet außerdem ein Signal Zi für eine frühe Null für dieses Bitergebnis. Dieses Signal Zi für eine frühe Null gibt eine frühe Anzeige, daß das Ergebnis Si dieser Bitschaltung 400 gleich "0" sein wird. Die Exklusiv-ODER- Schaltung 437 empfängt auf einem invertierenden Eingang das Fortpflanzungssignal Pi vom Inverter 427 und auf einem nichtinvertierenden Eingang das inverse Fortpflanzungssignal i vom Inverter 428. Außerdem empfängt die Exklusiv-ODER-Schaltung 437 auf einem nichtinvertierenden Eingang das inverse Vernichtungssignal i-1 von der vorhergehenden Bitschaltung 400. Falls das Vernichtungssignal Ki-1 für das vorhergehende Bit ein Signal für einen "0"-Übertrag für die nächsthöhere Stelle erzeugt und das Fortpflanzungssignal Pi ebenfalls "0" ist, bildet die Exklusiv-ODER-Schaltung 437 ein Signal Zi für eine frühe Null. Es wird angemerkt, daß dann, wenn Ki-1 gleich "0" ist, unabhängig vom Zustand der Signale cin0 und cin1 für den Übertrag zu einer nächsthöheren Stelle sowohl das Signal cout0 für einen Null-Übertrag für die nächsthöhere Stelle als auch das Signal cout1 für einen Eins-Übertrag für die nächsthöhere Stelle "0" sind. Es wird angemerkt, daß dieses Signal Zi für eine frühe Null verfügbar ist, bevor sich der Übertrag über den Übertragsabschnitt fortpflanzen kann. Dieses Signal Zi für eine frühe Null kann somit die Bestimmung eines Ausgangssignals null vom Rechenwerk 230 beschleunigen.
- Der Generator 403 für boolesche Funktionen jeder Bitschaltung 400 des in Fig. 12 gezeigten Rechenwerks 230 erzeugt das Fortpflanzungssignal Pi, das Erzeugungssignal Gi und das Vernichtungssignal Ki für die Bitschaltung 400. Der Generator 403 für boolesche Funktionen enthält vier Ebenen. Die erste Ebene enthält die Durchlaßgatter 451, 452, 453, 454, 455, 456, 457 und 458. Die Durchlaßgatter 451, 453, 455 und 457 werden über den Eingang Ci und über den inversen Eingang i vom Inverter 459 in einem ersten Sinn gesteuert. Die Durchlaßgatter 452, 454, 456 und 458 werden über den Eingang Ci und über den inversen Eingang i in einem entgegengesetzten Sinn gesteuert. Je nach dem Zustand des Eingangs Ci sind entweder die Durchlaßgatter 451, 453, 455 und 457 leitend oder sind die Durchlaßgatter 452, 454, 456 und 458 leitend. Die zweite Ebene enthält die Durchlaßgatter 461, 462, 463 und 464. Die Durchlaßgatter 461 und 463 werden über den Eingang Bi und über den inversen Eingang i vom Inverter 465 in einem ersten Sinn gesteuert. Die Durchlaßgatter 462 und 464 werden in dem entgegengesetzten Sinn gesteuert. Je nach dem Zustand des Eingangs Bi sind entweder die Durchlaßgatter 461 und 463 leitend oder sind die Durchlaßgatter 462 und 464 leitend. Die dritte Ebene enthält die Durchlaßgatter 471, 472 und 473. Das Durchlaßgatter 471 wird über den Eingang Ai und über den inversen Eingang i vom Inverter 473 in einem ersten Sinn gesteuert. Die Durchlaßgatter 472 und 473 werden in dem entgegengesetzten Sinn gesteuert. Je nach dem Zustand des Eingangs Ai ist entweder das Durchlaßgatter 471 leitend oder sind die Durchlaßgatter 472 und 473 leitend. Die erste Ebene enthält die Inverter 441, 442, 443, 444, 445, 446, 447 und 448, die an die entsprechenden invertierten Funktionssignale - gekoppelt sind. Die Inverter 441, 442, 443, 444, 445, 446, 447 und 448 liefern die Eingangsansteuerung für den Generator 403 für boolesche Funktionen und bestimmen die durch das Rechenwerk 230 ausgeführte Logikfunktion.
- Der Generator 403 für boolesche Funktionen bildet anhand der entsprechenden Eingangssignale Ai, Bi und Ci und der durch den Zustand der invertierten Funktionssignale - ausgewählten Funktion das Fortpflanzungssignal Pi. Das Fortpflanzungssignal Pi am Eingang zum Inverter 476 ist "1", falls irgendein Pfad über die Durchlaßgatter 451, 452, 453, 454, 455, 456, 457, 458, 461, 462, 463, 464, 471 oder 472 eine "1" von einem der Inverter 441, 442, 443, 444, 445, 446, 447 oder 448 koppelt. In allen anderen Fällen ist dieses Fortpflanzungssignal Pi "0". Der Inverter 476 bildet das inverse Fortpflanzungssignal i, das an die in Fig. 11 gezeigte Ergebnislogik 401 angeschlossen ist.
- Jedes Durchlaßgatter 451, 452, 453, 454, 455, 456, 457, 458, 461, 462, 463, 464, 471, 472 und 473 enthält einen N-Kanal-MOSFET und einen P-Kanal-MOSFET, die parallel angeordnet sind. Das Gate des N-Kanal-MOSFETs empfängt ein Steuersignal. Dieser Feldeffekttransistor ist leitend, wenn sein Gate- Eingangssignal über der Schaltstellenspannung liegt. Das Gate des P-Kanal- MOSFETs wird über einen der Inverter 459, 465 oder 474 durch das Inverse des Steuersignals angesteuert. Dieser Feldeffekttransistor ist leitend, wenn sein Gate- Eingangssignal unter einer Schaltschwelle liegt. Da der P-Kanal-MOSFET invers zur Operation des N-Kanal-MOSFETs arbeitet, stellen die entsprechenden Inverter 459, 467 oder 474 sicher, daß diese zwei Feldeffekttransistoren entweder beide leitend oder beide nichtleitend sind. Die parallelen N-Kanal- und P-Kanal- Feldeffekttransistoren stellen, wenn erwünscht, die Leitung unabhängig von der Polarität des gesteuerten Eingangssignals sicher.
- Die Dreizustands-UND-Schaltung 480 bildet das Erzeugungssignal Gi und das Vernichtungssignal Ki. Das Erzeugungssignal Gi, das Vernichtungssignal Ki und das Fortpflanzungssignal Pi schließen sich in der bevorzugten Ausführungsform gegenseitig aus. Somit steuert das Fortpflanzungssignal Pi das Ausgangssignal der Dreizustands-UND-Schaltung 480. Wenn das Fortpflanzungssignal Pi "1" ist, ist die Dreizustands-UND-Schaltung 480 gesperrt, wobei sowohl das Erzeugungssignal Gi als auch das Vernichtungssignal Ki gleich "0" sind. Somit ändert weder das Erzeugungssignal Gi noch das Vernichtungssignal Ki das Übertragssignal. Das Durchlaßgatter 473 koppelt das Ausgangssignal von einem Teil des Generators 403 für boolesche Funktionen mit dem Eingang der Dreizustands-UND-Schaltung 480. Die Gate-Eingänge des Durchlaßgatters 473 sind im ersten Sinn mit dem ersten Eingangsbit Ai gekoppelt. Ein N-Kanal- MOSFET 475 koppelt dieses Eingangssignal der Dreizustands-UND-Schaltung 480 bedingt mit der Masse. Das Inverse des ersten Eingangsbits i liefert das Gate-Eingangssignal an den N-Kanal-MOSFET 475. Das Durchlaßgatter 473 und der N-Kanal-MOSFET 475 sind in einer verdrahteten ODER-Beziehung gekoppelt, wobei aber keine ODER-Operation stattfindet, da ihre Gate- Eingangssignale bewirken, daß sie abwechselnd leitend sind. Der N-Kanal- MOSFET 475 dient dazu, ein Eingangssignal "0" in die Dreizustands-UND- Schaltung 480 zu zwingen, wenn Ai = "0" ist. Ein Arithmetikfreigabesignal liefert das zweite Eingangssignal an die Dreizustands-UND-Schaltung 480.
- Das Dreizustands-UND-Gatter 480 arbeitet wie folgt. Wenn das Fortpflanzungssignal Pi gleich "1" ist, sind sowohl der P-Kanal-MOSFET 481 als auch der N-Kanal-MOSFET 482 leitend, während das Durchlaßgatter 483 nichtleitend ist. Dies schaltet die P-Kanal-MOSFETs 414 und 424 und die N- Kanal-MOSFETs 415 und 425 aus, so daß keiner dieser Feldeffekttransistoren leitet. Somit ist das Ausgangssignal der Dreizustands-UND-Schaltung 480 ein hochimpedanter Zustand, der das Signal auf den Leitungen 411 und 421 für den Übertrag für die nächsthöhere Stelle nicht ändert. Wenn das Fortpflanzungssignal Pi gleich "0" ist, ist sowohl der P-Kanal-MOSFET 481 als auch der N-Kanal- MOSFET 482 nichtleitend, während das Durchlaßgatter 483 leitend ist. Die Schaltung bildet dann ein logisches UND der zwei Eingangssignale. Wenn entweder die Arithmetikfreigabe oder das Signal am Übergang des N-Kanal- MOSFETs 475 und des Durchlaßgatters 473 gleich "0" ist oder beide gleich "0" sind, verbindet wenigstens entweder der P-Kanal-MOSFET 484 oder der P-Kanal- MOSFET 485 die Speisespannung V+ (eine logische "1") als das inverse Erzeugungssignal i mit den Gates der P-Kanal-MOSFETs 414 und 424 der Logik 402 für den Übertrag für die nächsthöhere Stelle. Somit sind die P-Kanal- MOSFETs 414 und 424 nichtleitend. Gleichzeitig ist das Durchlaßgatter 483 leitend und liefert dieses "1"-Signal als Vernichtungssignal Ki an die Gates der N- Kanal-MOSFETs 415 und 525 der Logik 402 für den Übertrag für die nächsthöhere Stelle. Dies zieht das Signal auf der Leitung 421 für den Null-Übertrag für die nächsthöhere Stelle aktiv herunter, was das Signal cout0 für einen Null- Übertrag für die nächsthöhere Stelle auf "0" zwingt, während die Leitung 411 für den Eins-Übertrag für die nächsthöhere Stelle das Signal cout1 für einen Eins- Übertrag für die nächsthöhere Stelle auf "0" zwingt. Wenn beide Eingangssignale "1" sind, liefert die Serienschaltung des N-Kanal-MOSFETs 486 und des N- Kanal-MOSFETs 487 die Masse (eine logische "0") an die Gates der N-Kanal- MOSFETs 415 und 425. Die N-Kanal-MOSFETs 415 und 425 der Logik 402 für den Übertrag für die nächsthöhere Stelle werden ausgeschaltet und nichtleitend. Gleichzeitig koppelt das Durchlaßgatter 483 diese "0" an die Gates der P-Kanal- MOSFETs 414 und 424. Somit sind die P-Kanal-MOSFETs 414 und 424 der Logik 402 für den Übertrag für die nächsthöhere Stelle leitend. Dies zieht das Signal auf der Leitung 421 für den Null-Übertrag für die nächsthöhere Stelle aktiv herauf, was das Signal cout0 für einen Eins-Übertrag für die nächsthöhere Stelle auf "1" zwingt, während die Leitung 411 für den Eins-Übertrag für die nächsthöhere Stelle das Signal cout1 für den Eins-Übertrag für die nächsthöherer Stelle auf "1" zwingt.
- Diese in Fig. 10 und Fig. 21 gezeigte Bitschaltungskonstruktion bildet einen Fortpflanzungsterm, einen Erzeugungsterm, einen Ergebnisterm und zwei Terme für den Übertrag für die nächsthöhere Stelle. Die Bitschaltung 400 bildet den Fortpflanzungsterm Pi wie folgt:
- Pi = F0&(~Ai&~Bi&~Ci) F1&(Ai&~Bi&~Ci) F2&(~Ai&Bi&~Ci) F3&(Ai&Bi&~Ci) F4&(~&~Ai&~Bi&Ci) F5&(Ai&~Bi&Ci) F6&(~Ai&Bi&Ci F7&(Ai&Bi&Ci)
- Die Bitschaltung 400 bildet den Erzeugungsterm Gi wie folgt:
- Gi = Ai&[(F0&~F1&~Bi&~Ci (F2&~F3&Bi&~Ci) (F4&~F5&~Bi&Ci) (F6&~F7&Bi&Ci)]
- Die Bitschaltung 400 bildet den Vernichtungsterm Ki wie folgt:
- Ki = ~Gi&~Pi
- Die Bitschaltung 400 bildet den Ergebnisterm Si wie folgt:
- Si = Pi^(cin0&CSS ci1&~CSS),
- wobei: CSS das Übertragssinn-Auswahlsignal ist. Die Bitschaltung 400 bildet die zwei Signale cont0 und cout1 für den Übertrag für die nüchsthöhere Stelle wie folgt:
- cout0 = (Pi&cin0 Gi&Aen) ~(Ki&Aen)
- cout1 = (Pi&cin1 Gi&Aen) ~(Ki&Aen)
- Es wird angemerkt, daß sich das Fortpflanzungssignal Pi, das Erzeugungssignal Gi und das Vernichtungssignal Ki für irgendein einzelnes Bit i gegenseitig ausschließen. Keine zwei dieser Signale treten gleichzeitig auf.
- Die Konstruktion jeder Bitschaltung 400 ermöglicht, daß das Rechenwerk 230 je nach den invertierten Funktionssignalen - irgendeine von 256 möglichen booleschen 3-Eingangs-Funktionen oder irgendeine von 256 möglichen gemischten booleschen und arithmetischen 3-Eingangs-Funktionen ausführt. Die neun Eingänge mit dem Arithmetikfreigabesignal und den invertierten Funktionssignalen - ermöglichen die Auswahl von 512 Funktionen. Wie unten weiter beschrieben wird, ermöglichen die Datenpfade der Dateneinheit 110 vorteilhaft auf viele Weise die Verwendung des Dreieingangs-Rechenwerks 230 zur Beschleunigung der Operationen.
- Tabelle 13 führt die einfachen booleschen logischen Funktionen der Bitschaltung 400 als Reaktion auf die einzelnen Funktionssignale F7-F0 auf. Da diese boolesche logische Funktionen sind, während das Arithmetikfreigabesignal "0" ist, ist sowohl die Erzeugungs- als auch die Vernichtungsfunktion gesperrt. Es wird angemerkt, daß für boolesche erweiterte Rechenwerksoperationen wie zuvor beschrieben die Signale cin0 und cin1 für einen Übertrag von einer vorhergehenden Stelle vom Generator 246 für einen Übertrag von einer vorhergehenden Stelle an das Bit 0 spezifiziert werden können, was somit eine Übertragswelligkeit ermöglicht. Tabelle 13
- Diese Funktionen können durch Untersuchung der Fig. 11 und 12 bestätigt werden. Für das Beispiel F7 = "1" und F6-F0 sämtlich gleich "0" geben die Inverter 441, 442, 443, 444, 446, 447, und 448 jeweils eine "0" aus. Nur der Inverter 445 erzeugt ein Ausgangssignal "1". Das Fortpflanzungssignal ist nur dann "1", wenn Ci = "1" das Durchlaßgatter 455 einschaltet, Bi = "1" das Durchlaßgatter 463 einschaltet und Ai = "1" das Durchlaßgatter 472 einschaltet. Sämtliche anderen Kombinationen führen zu einem Fortpflanzungssignal "0". Da dies eine logische Operation ist, ist sowohl das Signal cin0 für den Null-Übertrag von einer vorhergehenden Stelle als auch das Signal cin1 für den Eins-Übertrag von einer vorhergehenden Stelle "0". Da die beiden Exklusiv-ODER-Schaltung 431 und 433 das Fortpflanzungssignal zurückgeben, ist somit Si = "1". Die anderen Einträge in Tabelle 13 können ähnlich bestätigt werden.
- Die insgesamt 256 booleschen logischen Funktionen der drei Eingänge A, B und C werden durch eine geeignete Auswahl der Funktionssignale F7-F0 ermöglicht.
- Es wird angemerkt, daß die Zustandstabelle der drei Eingänge 8 Stellen enthält, womit es 2&sup8; = 256 mögliche boolesche logische Funktionen der drei Eingänge gibt. Zwei Eingangsfunktionen sind Teilmengenfunktionen, die durch paarweise Auswahl der Funktionssignale F7-F0 erreicht werden. Es wird angenommen, daß eine boolesche Funktion von B und C ohne Beziehung zu dem Eingangssignal A erwünscht ist. Die Auswahl F7 = F6, F5 = F4, F3 = F2 und F1 = F0 stellt die Unabhängigkeit vom Eingangssignal A sicher. Es wird angemerkt, daß die Verzweigungen des an die Durchlaßgatter 471 und 472 angeschlossenen Generators 403 für boolesche Funktionen völlig gleich angesteuert werden. Dies stellt sicher, daß das Ergebnis unabhängig davon, ob Ai = "1" oder Ai = "0" ist, das gleiche ist. Eine solche Auswahl liefert weiter 4 steuerbare Funktionspaare, die das Spezifizieren sämtlicher 16 boolescher logischer Funktionen der Eingänge B und C ermöglichen. Es wird angemerkt, daß die Zustandstabelle der zwei Eingänge vier Stellen enthält, womit es 2&sup4; = 16 mögliche boolesche logische Funktionen der drei Eingänge gibt. Ähnlich stellt die Auswahl F7 = F5, F6 = F4, F3 = F1 und F2 = F0 die Unabhängigkeit vom Eingangssignal B sicher und liefert 4 steuerbare Funktionspaare zum Spezifizieren von 16 booleschen logischen Funktionen der Eingangssignale A und C. Die Auswahl F7 = F3, F6 = F2, F5 = F1 und F4 = F0 ermöglicht über 4 steuerbare Funktionspaare die Auswahl von 16 booleschen logischen Funktionen der Eingangssignale A und B unabhängig vom Eingangssignal C.
- Das Befehlswort bestimmt die vom Rechenwerk 230 ausgeführte Funktion und ob diese Operation eine arithmetische oder eine boolesche logische Operation ist. Wie in Tabelle 13 angemerkt ist, enthält das Befehlswort ein Feld, das mit den Funktionssignalen für boolesche logische Operationen codiert ist. Wenn der Befehl eine boolesche logische Operation für das Rechenwerk 230 spezifiziert, ist dieses Feld, das "8-Bit-Rechenwerk"-Feld (Bits 58-51) des Befehlsworts, direkt mit den Funktionssignalen codiert.
- Wenn der Befehl arithmetische Operationen spezifiziert, ist das "8-Bit- Rechenwerk"-Feld anders codiert. Eine Untersuchung der ausführbaren arithmetischen Funktionen zeigt, daß eine Teilmenge dieser arithmetischen Funktionen die am häufigsten verwendeten Operationen spezifiziert. Wenn die Menge der Funktionssignale F7-F0 als zweistellige Hexadezimalzahl ausgedrückt wird, werden die am häufigsten verwendeten Funktionen normalerweise nur mit den Ziffern a, 9, 6 und 5 gebildet. In diesen Mengen von Funktionssignalen ist F7 = ~F6, F5 = ~F4, F3 = ~F2 und F1 = ~F0. Die Bits 57, 55, 53 und 51 spezifizieren fünfzehn Operationen, wobei ein "8-Bit-Rechenwerk"-Feld sämtlich mit Nullen für den Spezialfall von Nicht-Rechenwerksoperationen reserviert ist. Nicht-Rechenwerksoperationen werden unten beschrieben. Bei der Ausführung einer arithmetischen Operation ist das Funktionssignal F6 = Bit 57, das Funktionssignal F4 = Bit 55, das Funktionssignal F4 = Bit 53 und das Funktionssignal F2 = Bit 51. Die anderen Funktionssignale sind durch F7 = F5 = ~F4, F3 = ~F2 und F1 = ~F0 eingestellt. Diese Operationen und ihre entsprechenden Funktionssignale sind in Tabelle 14 gezeigt. Tabelle 14 zeigt auch die Modifizierungen gegenüber der voreingestellten Codierung. Tabelle 14
- Wie in Tabelle 14 gezeigt ist, werden mehrere Codierungen der Befehlswortbits 57, 55, 53 und 51 in modifizierter Form ausgeführt. Es wird angemerkt, daß diejenigen Funktionen, die Links- oder Rechtsverschiebungen aufführen, in Verbindung mit der Barrel-Rotationseinrichtung 235 und mit dem Maskengenerator 238 verwendet werden. Diese Operationen werden unten genau geschildert. Das "sign", auf das in dieser Beschreibung Bezug genommen wird, ist Bit 31 des zweiten Rechenwerks-Eingangsbusses 206 und der Busansteuer-Barrel- Rotationseinrichtung 235. Dies ist das Vorzeichenbit einer vorzeichenbehafteten Zahl. Eine "0" in diesem Vorzeichenbit bezeichnet eine positive Zahl, während eine "1" in diesem Vorzeichenbit eine negative Zahl (Zweierkomplementzahl) bezeichnet. Ein Zustand der Bits 57, 55, 53 und 51 von "0100" führt zu einer normalen Funktion A - B mit Rechtsverschiebung, "1"-erweitert. Falls Bit 31 des zweiten Rechenwerks-Eingangsbusses 206 gleich "0" ist, ändert sich die Operation zu A - B mit Rechtsverschiebung, vorzeichenerweitert. Ein Zustand der Bits 57, 55, 53 und 51 von "0110" führt je nach dem bitweisen Zustand von C zu einer normalen Funktion A-B oder A + B. Wenn der Befehl keine Mehrmerkerregister-Maskenoperation spezifiziert (@MF), ändert sich die Operation zu A - B. Falls das Bit 31 des zweiten Rechenwerks-Eingangsbusses 206 gleich "1" ist, ändert sich die Operation zur A + B (A plus dem Absolutwert von B). Ein Zustand der Bits 57, 55, 53 und 51 von "1011" führt je nach dem bitweisen Zustand von C zu einer normalen Funktion A + B oder A - B. Wenn der Befehl keine Mehrmerkerregister-Maskenoperation spezifiziert (-@MF), ändert sich die Operation zu A + B. Wenn Bit 31 des zweiten Rechenwerks- Eingangsbusses 206 gleich "1" ist, ändert sich die Operation zu A - B (A minus dem Absolutwert von B). Ein Zustand der Bits 57, 55, 53 und 51 von "1001" führt zu einer normalen Funktion A + B mit Rechtsverschiebung, "1"-erweitert. Falls Bit 31 des zweiten Rechenwerks-Eingangsbusses 206 gleich "0" ist, ändert sich die Operation zu A + B mit Rechtsverschiebung, vorzeichenerweitert.
- Zwei Codes sind modifiziert, um nützlichere Funktionen zu schaffen. Ein Zustand der Bits 57, 55, 53 und 51 von "0000" führt zu einer normalen Funktion -A (not A), was wie unten beschriebenen für die Unterstützung der Nicht- Rechenwerksoperationen reserviert ist. Ein Zustand der Bits 57, 55, 53 und 51 von "1111" führt zu einer normalen Funktion A. Gesteuert durch den Zustand von C wird dies zu (A & C) + (B & C) oder zu einer Feldaddition von A und B modifiziert.
- Die Grundmenge der in Tabelle 14 aufgeführten Operationen kann in arithmetischen Befehlen spezifiziert werden. Es wird angemerkt, daß die Befehlswortbits 58, 56, 54 und 52 wie in Tabelle 6 dargestellt Modifizierungen dieser Grundoperationen steuern. Diese Modifizierungen wurden oben in Verbindung mit Tabelle 6 und mit der Beschreibung des Statusregisters 210 erläutert. Wie unten weiter beschrieben wird, spezifizieren bestimmte Befehle erweiterte Rechenwerksoperationen. Weiter ist es möglich, jede der 256 arithmetischen Operationen über eine erweiterte Rechenwerksoperation (EALU- Operation) zu spezifizieren. Für diese Befehle spezifiziert das "A" (Bit 27) des Datenregisters D0 entweder eine arithmetische oder eine boolesche logische Operation, während das "EALU"-Feld (Bits 26-19) die Funktionssignale F7-F0 spezifiziert und das "FMOD-Feld (Bits 31-28) Modifizierungen der Grundfunktionen spezifiziert. Außerdem wird angemerkt, daß die Felder "C", "I", "S", "N" und "E" des Datenregisters D0, falls die Mehrfacharithmetik freigegeben ist, die Steuerung des Übertrags von einer vorhergehenden Stelle an das Bit 0 des Rechenwerks 230 und an das niederwertigste Bit jedes Abschnitts ermöglichen. Somit gibt es vier Formen erweiterter Rechenwerkoperationen. Zwei von ihren spezifizieren parallele Multiplikationsoperationen unter Verwendung des Multiplizierers 220. In einer erweiterten Rechenwerks-Wahr-Operation (EALUT- Operation) sind die Funktionssignale F7-F0 gleich den entsprechenden Bits des "EALU"-Feldes des Datenregisters D0. In einer erweiterten Rechenwerks-Falsch- Operation (EALUF-Operation) sind die einzelnen Bits des "EALU"-Feldes des Datenregisters D0 invertiert, so daß sie die Funktionssignale F7-F0 bilden. Die erweiterte Rechenwerks-Falsch-Operation ist nützlich, da die invertierten Funktionssignale während einiger Algorithmen eine nützliche verwandte Funktion ausführen. Das Invertieren sämtlicher Funktionssignale spezifiziert typischerweise eine inverse Funktion. Somit kann auf diese verwandte Operation ohne Neuladen des Datenregisters 208 über einen anderen Befehl zugegriffen werden. In den anderen erweiterten Rechenwerksoperationen sind die Funktionssignale F7-F0 gleich den entsprechenden Bits des "EALU"-Feldes des Datenregisters D0, wobei aber andere Datenpfade zum Rechenwerk 230 freigegeben sind. Diese Optionen werden unten erläutert.
- Eine Operation der Dateneinheit 110 erfolgt als Reaktion auf von der Programmablauf-Steuereinheit 130 geholte Befehlswörter. Die Befehlsdecodierungslogik 250 empfängt die Daten entsprechend dem Befehl in der Ausführungspipelinestufe über den Opcode-Bus 133. Die Befehlsdecodierungslogik 250 erzeugt Steuersignale für die Operation der Multiplexer Fmux 221, Imux 222, MSmux 225, Bmux 227, Amux 232, Cmux 233, Mmux 234 und Smux 231. Außerdem steuert die Befehlsdecodierungslogik 250 gemäß dem empfangenen Befehlswort die Operation der Puffer 104, 106, 108, 223 und 236. Die Steuerleitungen für diese Funktionen sind aus Klarheitsgründen weggelassen. Die einzelnen gesteuerten Funktionen der Multiplexer und Puffer werden unten bei der Beschreibung der Befehlswortformate in Verbindung mit Fig. 18 beschrieben. Die Befehlsdecodierungslogik 250 liefert außerdem teilweise decodierte Signale zur Steuerung des Rechenwerks 230 an den Funktionssignalgenerator 245 und an den Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Die besondere Hardware für diese teilweise Decodierung ist nicht gezeigt, wobei aber der Fachmann auf dem Gebiet diese Funktionen anhand der Beschreibung der Befehlswortformate in Verbindung mit Fig. 18 bereitstellen kann. Die Befehlsdecodierungslogik 250 steuert ferner durch Steuern der zuvor in Verbindung mit Fig. 7 beschriebenen Multiplexer 311, 312, 313 und 314 den optionalen Mehrabschnittsbetrieb des Rechenwerks 230.
- Fig. 13 zeigt Einzelheiten der Funktionssignal-Auswahleinrichtung 245a. Die Funktionssignal-Auswahleinrichtung 245a bildet einen Teil des in Fig. 5 gezeigten Funktionssignalgenerators 245. Für ein vollständiges Bild der Funktionssignalerzeugung ist Fig. 13 mit dem in Fig. 14 gezeigten Funktionssignalmodifizierer 245b zu betrachten. Multiplexer sind durch Rechtecke mit einem Pfeil gezeigt, der das Fortschreiten der Bits von den Eingängen zu den Ausgängen repräsentiert. Die Eingänge sind mit kleinen Buchstaben bezeichnet. Die Steuerleitungen sind mit entsprechenden großen Buchstaben bezeichnet, die in der Weise gezeichnet sind, daß sie senkrecht zu dem Pfeil in das Multiplexerrechteck eintreten. Wenn eine mit einem besonderen großen Buchstaben bezeichnete Steuerleitung aktiv ist, ist der Eingang mit dem entsprechenden kleinen Buchstaben ausgewählt und an den Ausgang des Multiplexers angeschlossen.
- Der Eingang "a" des Multiplexers Omux 500 empfängt ein Eingangssignal in zwei Teilen. Die Bits 57, 55, 53 und 51 des Befehlsworts sind an die Bitleitungen 6, 4, 2 bzw. 0 des Eingangs "a" angeschlossen. Der Inverter 501 invertiert die jeweiligen Befehlswortbits und liefert sie an die Bitleitungen 7, 5, 3 und 1 des Eingangs "a". Der Eingang "a" wird ausgewählt, wenn die Steuerleitung "A" aktiv wird und wenn die acht Eingangsbitleitungen, wenn er ausgewählt ist, mit ihren acht entsprechend numerierten Ausgangsbitleitungen 7-4 und 3-0 verbunden sind. Die Steuerleitung "A" wird durch das UND-Gatter 502 gespeist. Das UND-Gatter 503 empfängt ein erstes Eingangssignal, das die Ausführung eines Befehls in irgendeiner der Befehlsklassen 7-0 angibt. Dies gibt das Befehlswortbit 63 an. Diese Befehlsklassen werden unten weiter beschrieben. Das UND-Gatter 502 besitzt einen zweiten Eingang, der mit dem Bit 59 des Befehlsworts gespeist wird. Wie unten erläutert wird, gibt ein Bit 59 gleich "1" eine arithmetische Operation an. Das NAND-Gatter 503 liefert ein drittes Eingangssignal an das UND-Gatter 502. Das NAND-Gatter 503 tastet ab, wann irgendeines der vier Befehlswortbits 57, 55, 53 oder 51 tief ist. Der Steuereingang "A" ist somit aktiv, wenn irgendeine der Befehlsklassen 7-0 ausgewählt und das Arithmetikbit 59 des Befehlsworts "1" ist und die Befehlswortbits 57, 55, 53 und 51 nicht sämtlich "1" sind. Es wird daran erinnert, daß anhand von Tabelle 14 ein Zustand der Bits 57, 55, 53 und 51 von "1111" anstatt zu den natürlichen Funktionssignalen zu den modifizierten Funktionssignalen Hex "60" führt.
- Das Eingangssignal "b" in den Multiplexer Omux 500 ist eine konstante Hex "60". Der Multiplexer Omux 500 wählt dieses Eingangssignal aus, wenn das UND-Gatter 504 das Steuersignal "B" aktiviert. Das UND-Gatter 504 aktiviert das Steuersignal "B", wenn der Befehl in den Klassen 7-0 liegt, was durch das Befehlswort 63, das Befehlswortbit 59, das "1" ist, was eine arithmetische Operation angibt, und durch einen Zustand der Bits 57, 55, 53 und 51 von "1111" angegeben wird. Wie zuvor in Verbindung mit Tabelle 14 beschrieben wurde, wird unter diesen Bedingungen die Funktion Hex "60" für die durch den Befehl angegebenen Funktionssignale ersetzt.
- Der Eingang "c" in den Multiplexer Omux 500 empfängt sämtliche acht Befehlswortbits 58-51. Der Multiplexer Omux 500 wählt diesen Eingang aus, wenn das UND-Gatter 505 das Steuersignal "C" aktiviert. Das UND-Gatter 505 empfängt das über den Inverter 506 invertierte Befehlswortbit 59 und eine Angabe irgendeiner der Befehlsklassen 7-0. Somit werden die Befehlswortbits 58-51 in der Weise ausgewählt, daß sie irgendeine der 256 booleschen Operationen in den Befehlsklassen 7-0 ausführen.
- Die Bits 63-61 der Befehlswörter für die für die Steuereingänge "D", "E", "F", "G" und "H" relevanten Operationen sind "011". Falls diese Bedingung erfüllt ist, definieren die Bits 60-57 den Typ der Operation.
- Das Eingangssignal "d" in den Multiplexer Omux 500 ist eine konstante Hex "66". Dieses Eingangssignal wird für Befehle ausgewählt, die eine parallele vorzeichenbehaftete Multiplikation und Addition (MPYS ADD) oder eine parallele vorzeichenlose Multiplikation und Addition (MPYU ADD) ausführen. Auf diese Befehle wird gemeinsam mit der Mnemonik MPYx ADD Bezug genommen.
- Das Eingangssignal "e" in den Multiplexer Omux 500 ist eine konstante Hex "99". Dieses Eingangssignal wird für Befehle ausgewählt, die eine parallele vorzeichenbehaftete Multiplikation und Subtraktion (MPYS SUB) oder eine parallele vorzeichenlose Multiplikation und Subtraktion (MPYU SUB) ausführen. Auf diese Befehle wird zusammen mit der Mnemonik MPYx SUB Bezug genommen.
- Das Eingangssignal "f" in den Multiplexer Omux 500 ist eine konstante Hex "A6". Dieses Eingangssignal wird für die DIVI-Operation ausgewählt. Die Operation dieser DIVI-Operation, die bei der Division verwendet wird, wird unten weiter beschrieben.
- Das Eingangssignal "g" in den Multiplexer Omux 500 wird gemäß einem erweiterten Rechenwerks-Funktionscode von dem "EALU"-Feld (Bits 26-19) des Datenregisters D0 von den Bits 26-19 darin geliefert. Der Steuereingang "G" wird aktiv, um dieses "EALU"-Feld vom Datenregister D0 auszuwählen, wenn das ODER-Gatter 507 entweder eine MPYx EALUT-Operation oder eine EALU- Operation erfaßt. Wie zuvor beschrieben wurde, bezeichnet das Suffix T in EALUT EALU-Code-wahr im Gegensatz zum inversen (falsch) in EALUF. Wenn das "EALU"-Feld des Datenregisters D0 entweder EALU oder EALU% bezeichnet, ist das EALU-Eingangssignal aktiv, um das Eingangssignal "G" zu steuern.
- Der Inverter 508 invertiert die einzelnen Bits des "EALU"-Feldes des Datenregisters D0, um sie an den Eingang "h" des Multiplexers Omux 500 zu liefern. Das Eingangssignal "h" des Multiplexers Omux S00 wird als Reaktion auf die Erfassung einer MPYx EALUF-Operation des Steuereingangssignals "H" ausgewählt. Wie zuvor beschrieben wurde, gibt das Suffix F von EALUF an, daß die einzelnen Bits des "EALU"-Feldes des Registers D0 zur Spezifizierung der Funktionssignale F7-F0 invertiert werden.
- Der ebenfalls in Fig. 13 gezeigte Multiplexer AEmux 510 erzeugt das Arithmetikfreigabesignal. Dieses Arithmetikfreigabesignal wird an das Dreizustands-UND-Gatter 480 jeder Bitschaltung 400 geliefert. Das Eingangssignal "a" in den Multiplexer AEmux 510 ist das "a"-Bit (Bit 27) des Datenregisters D0. Das ODER-Gatter 511 empfängt drei Eingangssignale: MPYx EALUT, EALU und MPYx EALUF. Falls der Befehl irgendeine dieser drei Operationen auswählt, wählt der Steuereingang "A" in den Multiplexer AEmux das "A"-Bit (Bit 27) des Datenregisters D0 aus. Das Eingangssignal "b" in den Multiplexer AEmux 510 ist das "ari"-Bit (Bit 59) des Befehlsworts. Wie unten beschrieben wird, wählt dieses "ari"-Bit für bestimmte Typen von Befehlen arithmetische Operationen aus. Dieses Eingangssignal wird ausgewählt, wenn der Befehl irgendeine der Befehlsklassen 7-0 ist. In diesem Fall wird das "ari"-Bit, das eine arithmetische Operation angibt ("ari" = "1") oder eine boolesche Operation angibt ("ari" = "0") direkt an das Rechenwerk 230 übergeben. Das Eingangssignal "c" des Multiplexers AEmux 510 ist eine konstante "1". Das Gatter 512 wählt dieses Eingangssignal aus, falls der Befehl weder ein erweiterter Rechenwerksbefehl ist noch innerhalb der Befehlsklassen 7-0 liegt. Solche Befehle umfassen die DIVI-Operation und die Operationen MPYx ADD und MPYx SUB. Das ODER-Gatter 513 liefert ein arithmetisches oder ein EALU- Signal, wenn der Befehl entweder, was durch das Ausgangssignal des Multiplexers AEmux 510 angegeben ist, eine arithmetische Operation ist oder, was durch das ODER-Gatter 511 angegeben wird, eine "irgendeine EALU"- Operation ist.
- Fig. 14 zeigt den Funktionssignalmodifizierer 245b. Der Funktionssignalmodifizierer 245b modifiziert je nach dem Befehl gemäß dem "FMOD"-Feld des Datenregisters D0 oder gemäß den Befehlsbits 58, 56, 54 und 52 das vom Funktionssignalgenerator 245a eingestellte Funktionssignal. Der Multiplexer Fmux 520 wählt den Funktionsmodifizierercode aus.
- Das Eingangssignal "a" in den Multiplexer Fmux 520 ist sämtlich "0"-en (Hex "0"). Das NOR-Gatter 521 beliefert die Steuerleitung "A" des Multiplexers Fmux 520. Das NOR-Gatter 521 besitzt einen ersten Eingang, der von dem in Fig. 13 gezeigten ODER-Gatter 511 das "irgendein EALU"-Signal empfängt, und einen zweiten Eingang, der an den Ausgang des UND-Gatters 522 angeschlossen ist. Das UND-Gatter 522 empfängt ein erstes Eingangssignal von dem "ari"-Bit (Bit 59) des Befehlsworts und ein zweites Eingangssignal, das angibt, daß der Befehl in den Befehlsklassen 7-0 liegt. Somit erzeugt das NOR-Gatter 521 ein Aktiv- Ausgangssignal, das für den Fmux 520 das Eingangssignal Hex "0" auswählt, wenn der Befehl nicht irgendeine erweiterte Rechenwerksoperation ist und wenn entweder das "ari"-Bit der Befehlsklasse "0" ist oder der Befehl nicht innerhalb der Befehlsklassen 7-0 liegt.
- Das Eingangssignal "b" in den Multiplexer Fmux 520 empfängt die Bits 58, 56, 54 und 52 des Befehlsworts. Der Steuereingang "B" empfängt das Ausgangssignal des UND-Gatters 522. Somit wählt der Multiplexer Fmux 520 die Bits 58, 56, 54 und 52 des Befehlsworts aus, wenn der Befehl in irgendeiner Befehlsklasse 7-0 liegt und das "ari"-Bit des Befehls gesetzt ist.
- Der Eingang "c" des Multiplexers Fmux 520 empfängt die Bits des "FMOD"- Feldes (Bits 31-28) des Datenregisters D0. Der Steuereingang "C" empfängt von dem ODER-Gatter 511 das "irgendein EALU"-Signal. Wenn der Befehl irgendeine erweiterte Rechenwerksoperation verlangt, hat der Multiplexer Fmux 520 das "FMOD"-Feld des Datenregisters D0 ausgewählt.
- Der Multiplexer Fmux 520 wählt den Code zur Modifizierung der aktiven Funktion aus. Der Code zur Modifizierung der aktiven Funktion modifiziert wie unten beschrieben die an das Rechenwerk 230 gelieferten Funktionssignale. Der Funktionsmodifizierungscode wird zur Steuerung der in Tabelle 6 spezifizierten Operationen decodiert. Wie oben erläutert wurde, umfassen diese modifizierten Operationen das gesteuerte Aufspalten des Rechenwerks 230, das Einstellen eines oder mehrerer Bits des Mehrmerkerregisters 211 durch eine Null bzw. durch Nullen oder durch einen Übertrag/durch Überträge für die nächsthöhere Stelle vom Rechenwerk 230, das Drehen oder Löschen des Mehrmerkerregisters 211, das Betätigen der LMO/RMO/LMBC/RMBC-Schaltung 237 in einer seiner vier Betriebsarten, die Operationsmaskenerzeugung 239 und das Betätigen des Generators 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Die in bezug auf einen besonderen Zustand des Funktionsmodifizierungscodes ausgeführten Operationen sind in Tabelle 6 dargestellt.
- Drei Schaltungsblöcke in dem Funktionsmodifizierer 245b können die Funktionssignale F7-F0 vom in Fig. 13 gezeigten Multiplexer Omux 500 modifizieren. Der Mmux-Block 530 kann in der Weise arbeiten, daß er effektiv die Eingangssignale in den C-Port sämtlich auf "1"-en setzt. Der A-Port-Block 540 kann in der Weise arbeiten, daß er effektiv das Eingangssignal in den A-Port sämtlich auf "0"-en setzt. Der Vorzeichenerweiterungsblock 550 ist eine Vorzeichenerweiterungseinheit, die die Funktionssignale F3-F0 kippen kann.
- Der Mmux-Block 530 enthält einen Multiplexer 531, der die Funktionssignale F3- F0 normalerweise ohne Modifizierung übergibt. Um effektiv das Eingangssignal in den C-Port des Rechenwerks 230 auf "1"-en einzustellen, repliziert der Multiplexer 531 die Funktionssignale F7-F4 auf die Funktionssignale F3-F0. Der Multiplexer 531 wird durch das UND-Gatter 533 gesteuert. Das UND-Gatter 533 ist aktiv, um effektiv das Eingangssignal in den C-Port sämtlich auf "1"-en zu setzen, wenn sämtliche drei folgende Bedingungen vorhanden sind: 1) Wie durch die "0X1X"-Übereinstimmungs-Auswerteschaltung 532 (X = unbedeutend) erfaßt wird, ist der Funktionsmodifizierercode-Multiplexer Fmux 520 irgendeiner der vier Codes "0010", "0011", "0110" oder "0111"; 2) die Befehlsaufrufe für eine Maskenerzeugungsoperation; und 3) das Ausgangssignal vom Multiplexer Mmux 234 ist "0". Wie oben beschrieben wurde, ermöglicht die Verdopplung der Funktionssignale F7-F4 auf die Funktionssignale F3-F0, d. h. die Auswahl F7 = F3, F6 = F2, F5 = F1 und F4 = F0, die Auswahl der 16 booleschen logischen Funktionen der Eingangssignale A und B unabhängig vom Eingangssignal C. Anhand von Tabelle 6 wird angemerkt, daß die vier Funktionsmodifizierercodes "0X1X" die "%!"-Modifizierung enthalten. Gemäß Fig. 14 wird die "%!"- Modifizierung nicht durch Ändern der durch den Maskengenerator 239 erzeugte Maske sondern durch Ändern der an das Rechenwerk 230 gesendeten Funktionssignale erreicht.
- Der A-Port-Block 540 enthält den Multiplexer 541 und die Verbindungsschaltung 542, die die Funktionssignale F7-F0 normalerweise ohne Modifizierung übergeben. Um effektiv das Eingangssignal in den A-Port des Rechenwerks 230 auf sämtlich "0"-en zu setzen, replizieren der Multiplexer 541 und die Verbindungsschaltung 541 die Funktionssignale F6, F4, F2 und F0 in die Funktionssignale F7, F5, F3 bzw. F1. Der Multiplexer 541 und die Verbindungsschaltung 542 nehmen diese Ersetzung vor, wenn sie durch das ODER- Gatter 544 aktiviert sind. Das ODER-Gatter 544 besitzt einen ersten Eingang, der an die "010X"-Übereinstimmungs-Auswerteschaltung 543 angeschlossen ist, und einen zweiten Eingang, der an das UND-Gatter 546 angeschlossen ist. Das UND- Gatter 546 besitzt einen ersten Eingang, der an die "011X"-Übereinstimmungs- Auswerteschaltung 545 angeschlossen ist. Die beiden Übereinstimmungs- Auswerteschaltungen 543 und 545 bestimmen, ob der Funktionsmodifizierercode mit ihrem Erfassungszustand übereinstimmt. Das UND-Gatter 546 besitzt einen zweiten Eingang, der ein Signal empfängt, das angibt, ob der Befehl eine Maskenerzeugungsoperation verlangt. Das Eingangssignal in den A-Port des Rechenwerks 230 wird durch Austausch der Funktionssignale F6, F4, F2 und F0 durch die Funktionssignale F7, F5, F3 bzw. F1 effektiv auf null gesetzt. Wie zuvor beschrieben wurde, macht diese Ersetzung des Ausgangssignals das Rechenwerk 230 unabhängig von dem Eingangssignal A. Diese Ersetzung findet statt, wenn: 1) der Funktionsmodifizierercode in der "010X"-Übereinstimmungs- Auswerteschaltung 543 eine Übereinstimmung findet; oder 2) der Befehl eine Maskenerzeugungsgeneration verlangt und der Funktionsmodifizierercode in der "010X"-Übereinstimmungs-Auswerteschaltung 545 eine Übereinstimmung findet und der Befehl eine Maskenerzeugungsoperation verlangt.
- Der Vorzeichenerweiterungsblock 550 enthält das Exklusiv-ODER-Gatter 551, das die Funktionssignale F3-F0 normalerweise unmodifiziert übergibt. Unter bestimmten Bedingungen werden diese Funktionssignale F3-F0 zur Rechenwerks- Vorzeichenerweiterung und für Absolutwertzwecke invertiert. Es wird angemerkt, daß die Funktionssignale F7-F4 vom A-Port-Block 540 durch den Vorzeichenerweiterungsblock 550 immer unmodifiziert übergeben werden. Das UND-Gatter 552 steuert, ob das Exklusiv-ODER-Gatter 551 die Funktionssignale F3-F0 invertiert. Das UND-Gatter 552 besitzt einen ersten Eingang, der von dem in Fig. 13 gezeigten ODER-Gatter 513 das arithmetische oder das erweiterte Rechenwerkssignal empfängt. Das zweite Eingangssignal in das UND-Gatter 552 kommt vom Multiplexer 553.
- Der Multiplexer 553 wird durch das "irgendein EALU"-Signal vom ODER-Gatter 511 aus Fig. 13 gesteuert. Wenn das "irgendein EALU"-Signal aktiv ist, wählt der Multiplexer 553 ein erstes Signal vom UND-Gatter 554 aus, während er ein zweites Signal vom UND/ODER-Verbundgatter 556 auswählt, wenn das "irgendein EALU"-Signal inaktiv ist. Das Ausgangssignal des UND-Gatters 554 ist gleich "1", wenn die Daten auf dem zweiten Rechenwerks-Eingangsbus 206 positiv sind, was durch das durch den Inverter 555 invertierte Vorzeichenbit (Bit 31) angegeben wird, und wenn das "S"-Bit (Bit 16) des Datenregisters D0 "1" ist. Das Ausgangssignal des UND/ODER-Verbundgatters 556 ist aktiv, falls: 1) die Daten auf dem zweiten Rechenwerks-Eingangbus 206 positiv sind, was durch das durch den Inverter 555 invertierte Vorzeichenbit (Bit 31) angegeben wird; 2) der Befehl in den Befehlsklassen 7-0 liegt; und 3) entweder a) die Befehlsbits 57, 55, 53 und 51 eine Übereinstimmung in der "0100"/"1011"-Übereinstimmungs- Auswerteschaltung 557 finden oder b) das UND-Gatter 560 erfaßt, daß die Befehlswortbits 57, 55, 53 und 51 eine Übereinstimmung in der "1001"/"0110"- Übereinstimmungs-Auswerteschaltung 558 finden und der Befehl keine Mehrmerkerregister-Maskenoperation (@MF) verlangt, was durch den Inverter 559 angegeben wird.
- Der Vorzeichenerweiterungsblock 550 realisiert die in Tabelle 14 angemerkten Ausnahmen. Ein inaktives "irgendein EALU"-Signal, das angibt, daß der Befehl eine arithmetische Operation spezifiziert hat, wählt das zweite Eingangssignal in den Multiplexer 553 aus. Das UND/ODER-Verbundgatter 556 bestimmt, daß der Befehl in den Befehlsklassen 7-0 liegt und daß das Vorzeichenbit "0" ist. Falls unter diesen Bedingungen die Befehlswortbits 57, 55, 53 und 51 gleich "0100" sind, kippt das Funktionssignal durch Invertieren der Funktionssignalbits F3-F0 von Hex "9a" auf Hex "95". Ähnlich kippt das Funktionssignal durch Invertieren der Funktionssignalbits F3-F0 von Hex "65" auf Hex "6a", wenn die Befehlswortbits 57, 55, 53 und 51 gleich "1011" sind. Wenn die Befehlswortbits 57, 55, 53 und 51 gleich "1001" sind und der Befehl keine Mehrmerkerregister- Maskenoperation verlangt, was durch den Inverter 599 angegeben wird, kippt das Funktionssignal von Hex "69" auf Hex "66". Diese Menge von Funktionssignalen bewirkt, daß das Rechenwerk 230 den Ausdruck A - B , A minus dem Absolutwert von B, realisiert. Wenn die Befehlswortbits 57, 55, 53 und 51 gleich "0110" sind und der Befehl keine Mehrmerkerregister-Maskenoperation verlangt, kippt das Funktionssignal von Hex "96" auf Hex "99". Dies führt die Funktion A + B , A plus dem Absolutwert von B, aus. Es wird angemerkt, daß diese Kippvorgänge der Funktionssignale auf dem Vorzeichenbit (Bit 31) der Daten auf dem zweiten Rechenwerks-Eingangsbus 206 beruhen.
- Fig. 15 zeigt den Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0. Wie zuvor beschrieben wurde, erzeugt der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 das an das erste Bit des Rechenwerks 230 gelieferte Signal cin für den Übertrag von einer vorhergehenden Stelle. Außerdem wird dieses Signal cin für den Übertrag von einer vorhergehenden Stelle von dem Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 allgemein an das erste Bit jedes der mehreren Abschnitte geliefert, wenn der Befehl eine Rechenwerks-Mehrfachoperation verlangt. Der Multiplexer Zmux 570 wählt anhand von sechs entsprechenden Steuereingangssignalen von der Befehlsdecodierungslogik 250 eine von sechs möglichen Quellen für dieses Signal cin für den Übertrag von einer vorhergehenden Stelle an das Bit 0 aus.
- Das Eingangssignal "a" des Multiplexers Zmux 570 wird mit dem Bit 31 des Mehrmerkerregisters 211 geliefert. Der Multiplexer Zmux 570 wählt dieses Eingangssignal als das Signal cin für den Übertrag von einer vorhergehenden Stelle an das Bit 0 aus, wenn der Befehl eine DIVI-Operation verlangt.
- Die Eingangssignale "b", "c" und "d" in den Multiplexer Zmux 570 werden aus logischen Verbundfunktionen gebildet. Das Eingangssignal "b" des Multiplexers Zmux 570 empfängt ein Signal, das eine boolesche Funktion der Funktionssignale F6, F2 und F0 ist. Dieser durch die Schaltung 571 gebildete boolesche Ausdruck ist (F0 & ~F6) (F0 & ~F2) (~F2 & ~F6). Das Eingangssignal "c" des Multiplexers Zmux 570 wird durch das Exklusiv-ODER-Gatter 572 gespeist, das ein erstes Eingangssignal besitzt, das durch das Exklusiv-ODER-Gatter 573 geliefert wird, und das ein zweites Eingangssignal besitzt, das durch das UND- Gatter 574 geliefert wird. Das Exklusiv-ODER-Gatter 573 besitzt als erstes Eingangssignal das "C"-Bit (Bit 18) des Datenregisters D0, das angibt, ob die frühere Operation des Rechenwerks 230 an Bit 31, dem letzten Bit, ein Signal cout für den Übertrag für die nächsthöhere Stelle erzeugt hat. Das zweite Eingangssignal des XOR-Gatters 573 empfängt ein Signal, das die Befehlsaufrufe für eine MPYx EALUF-Operation angibt. Das UND-Gatter 574 besitzt einen ersten Eingang vom Inverter 575, der das auf dem zweiten Rechenwerks- Eingangsbus 206 vorhandene Vorzeichenbit (Bit 31) zur Erfassung eines positiven Vorzeichens invertiert. Das UND-Gatter 574 besitzt ein zweites Eingangssignal von dem "I"-Bit (Bit 17) des Datenregisters D0 und ein drittes Eingangssignal von dem "S"-Bit (Bit 16) des Datenregisters D. Wie oben erläutert wurde, bewirkt das "I"-Bit eine Inversion des Übertrags von einer vorhergehenden Stelle, wenn das "S"-Bit angibt, daß die Vorzeichenerweiterung freigegeben ist. Diese Operation ergänzt die Vorzeichnerweiterungsoperation des UND-Gatters 554 und des XOR-Gatters 551 des in Fig. 14 gezeigten Funktionsmodifizierers 246b. Das Eingangssignal "d" des Multiplexers Zmux 570 kommt vom XOR- Gatter 576. Das XOR-Gatter 576 besitzt ein erstes Eingangssignal, das von dem Funktionssignal F0 geliefert wird, und ein zweites Eingangssignal, das vom Bit 0 der Daten auf dem Bus 243 für den Eingang C geliefert wird.
- Das Eingangssignal "b" des Multiplexers Zmux 570 wird ausgewählt, wenn das UND-Gatter 581 das Steuereingangssignal "B" aktiv setzt. Dies findet statt, wenn das "arithmetisch oder EALU" vom ODER-Gatter 513 aktiv ist, wenn der Befehl keine erweiterte Rechenwerksoperation verlangt, was durch den Inverter 582 angegeben wird, und wenn das Eingangssignal keines anderen Multiplexers Zmux 570 angelegt werden kann, was durch die Inverter 583, 584 und 585 gesteuert wird.
- Das Eingangssignal "c" des Multiplexers Zmux 570 wird ausgewählt, wenn das UND-Gatter 586 ein aktives Ausgangssignal an den Steuereingang "C" liefert. Das UND-Gatter 586 reagiert auf ein Signal, das angibt, daß der Befehl eine "irgendeine EALU"-Operation verlangt. Der Rest der Eingangssignale in das UND-Gatter 586 stellt sicher, daß das UND-Gatter 586 nicht aktiv ist, falls irgendwelche der Eingangssignale "d", "e" oder "f" über die Inverter 584, 585 und 595 aktiv sind.
- Das Eingangssignal "d" des Multiplexers Zmux 570 wird ausgewählt, wenn die Steuerleitung "D" von dem UND-Gatter 587 kommt. Das UND-Gatter 587 ist aktiv, wenn der Befehl eine arithmetische Operation oder eine erweiterte Rechenwerksoperation ist, wenn das UND-Gatter 589 aktiv ist und wenn das Eingangssignal "e" nicht ausgewählt ist, was durch den Inverter 589 angegeben wird. Das UND-Gatter 589 ist aktiv, wenn der Befehl eine Mehrmerkerregister- Maskenoperationserweiterung (@MF-Erweiterung) spezifiziert und wenn die Befehlswortbits 57, 55, 53 und 51 in der "0110"/"1001"-Übereinstimmungauswerteschaltung 588 eine Übereinstimmung finden. Diese Befehlswortbits entsprechen den Funktionssignalen Hex "69" und Hex "96", die je nach dem Eingangssignal in den Port C eine Addition oder eine Subtraktion zwischen den Ports A und B bewirken. Da die Befehlsklasse eine Mehrmerkerregister-Erweiterung enthält, ist keine Funktionssignalkippung enthalten. Fig. 7 zeigt das Liefern dieses Signals für den Übertrag von einer vorhergehenden Stelle an mehrere Abschnitte eines aufgeteilten Rechenwerks in der Mehrfachbetriebsart.
- Das Eingangssignal "e" des Multiplexers Zmux 570 kommt von dem "C"-Bit (Bit 30) des Statusregisters 210. Wie zuvor beschrieben wurde, wird dieses "C"-Bit des Statusregisters 210 auf "1" gesetzt, wenn das Ergebnis der letzten Operation des Rechenwerks 230 einen Übertrag von einer vorhergehenden Stelle vom Bit 31 bewirkt hat. Das UND-Gatter 594 liefert das Steuereingangssignal "E". Das UND- Gatter 594 wird aktiv, wenn der Befehl eine arithmetische Operation oder eine erweiterte Rechenwerksoperation spezifiziert und wenn die folgende Logik wahr ist: 1) der Funktionsmodifizierercode findet in der "0X01"-Übereinstimmungs- Auswerteschaltung 591 eine Übereinstimmung; oder (ODER-Gatter 590) 2) der Befehl verlangt eine Maskenerzeugungsoperation und (UND-Gatter 593) der Funktionsmodifizierercode findet eine Übereinstimmung in der "0X11"- Übereinstimmungs-Auswerteschaltung 592.
- Der Eingangs "fº des Multiplexers Zmux 570 wird mit einer Konstanten "0" beliefert. Der Multiplexer Zmux 570 wählt dieses Eingangssignal aus, wenn das "arithmetisch oder EALU"-Signal vom ODER-Gatter 513 angibt, daß der Befehl eine durch den Inverter 595 invertierte boolesche Operation spezifiziert.
- Das Ausgangssignal des Zmux 570 wird normalerweise ungeändert über den Ymux 580 geleitet und erscheint am Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0. In einer Mehrfacharithmetikoperation, in der das "A"-Bit (Bit 27) und das "E"-Bit (Bit 14) des Datenregisters D0 nicht beide "1" sind, erzeugt der Ymux mehrere völlig gleiche Signale für den Übertrag von einer vorhergehenden Stelle. Die Auswahl der Halbwort-Operation über das "Asize"-Feld des Statusregisters 210 bewirkt, daß der Ymux das Liefern des Ausgangssignals des Zmux 570 sowohl an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0 als auch an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 16 liefert. Ähnlich liefert der Ymux 580 bei Auswahl der Byte-Operation das Ausgangssignal des Zmux 570 an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0, an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 8, an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 16 und an das Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 24.
- Die Operation des Ymux 580 ist anders, wenn das "A"-Bit (Bit 27) und das "E"- Bit (Bit 14) des Datenregisters D0 beide "1" sind. Das UND-Gatter 577 bildet diese Bedingung und steuert die Operation des Ymux 580. Dies ist der einzige Fall, in dem sich die an verschiedene Abschnitte des Rechenwerks 230 während der Mehrfacharithmetik gelieferten Signale für den Übertrag von einer vorhergehenden Stelle unterscheiden. Wenn das UND-Gatter 577 diese Bedingung erfaßt, werden die Signale für den Übertrag von einer vorhergehenden Stelle durch das Exklusiv-ODER des Funktionssignals F0 und des niederwertigsten Bits des Eingangssignals C des entsprechenden Abschnitts des Rechenwerks 230 gebildet. Wenn das "Asize"-Feld die Wort-Operation auswählt, d. h., wenn das Rechenwerk 230 einen einzigen 32-Bit-Abschnitt bildet, ist das durch den Ymux 580 gebildete Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0 das durch das XOR-Gatter 596 gebildete Exklusiv-ODER des Funktionssignals F0 und des Bits 0 des Busses für den Eingang C. Es werden keine weiteren Signale für den Übertrag von einer vorhergehenden Stelle gebildet. Falls das "Asize"-Feld die Halbwort-Operation auswählt, bei der zwei 16-Bit-Abschnitte gebildet werden, ist das durch den Ymux 580 gebildete Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0 das Ausgangssignal des XOR-Gatters 596, während der Übertrag von einer vorhergehenden Stelle an das Bit 16 das durch das XOR- Gatter 598 gebildete Exklusiv-ODER des Funktionssignals F0 und des Bits 16 des Busses für den Eingang C ist. Schließlich ist für die Byte-Mehrfacharithmetik das durch den Ymux 580 gebildete Ausgangssignal für den Übertrag von einer vorhergehenden Stelle an das Bit 0 das Ausgangssignal des XOR-Gatters 596, wobei der Übertrag von einer vorhergehenden Stelle an das Bit 8 durch das XOR- Gatter. 597 gebildet wird, der Übertrag von einer vorhergehenden Stelle an das Bit 16 durch das XOR-Gatter 598 gebildet wird und der Übertrag von einer vorhergehenden Stelle an das Bit 24 durch das XOR-Gatter 599 gebildet wird.
- Die Fig. 13, 14 und 15 repräsentieren nicht nur spezifische Blöcke, die die Tabellen realisieren, sondern erläutern auch den unkomplizierten Prozeß, mit dem die Tabellen und Figuren kompakt die Logikschaltungsanordnung definieren, um zu ermöglichen, daß der Fachmann die bevorzugte Ausführungsform selbst dann konstruiert, wenn ein Blockschaltplan einer besonderen Schaltungsanordnung möglicherweise der Kürze halber fehlt. Es wird angemerkt, daß die Schaltungen der Fig. 13 und 14 die Steuerungen für die verschiedenen Multiplexer und Spezialschaltungen über die Befehlsdecodierungslogik 250, die Teil der in Fig. 5 gezeigten Dateneinheit 110 sind, nicht einschließen. Die Steuerung dieser Schaltungen ist aber unkompliziert und liegt im Rahmen der Fähigkeit des Durchschnittsfachmanns auf dem Gebiet. Somit werden diese der Kürze halber nicht weiter offenbart.
- Das Rechenwerk 230 enthält drei 32-Bit-Eingänge mit verschiedenen Hardwarefunktionen, die jedem Eingang vorausgehen. Dies ermöglicht die Ausführung vieler verschiedener Funktionen unter Verwendung des Rechenwerks 230 zum Kombinieren von Ergebnissen von der Hardware, die jedes Eingangssignal speist. Das Rechenwerk 230 führt boolesche oder bitweise logische Kombinationen, arithmetische Kombinationen und gemischte boolesche und arithmetische Kombination der 3 Eingangssignale aus. Gemischte boolesche und arithmetische Funktionen werden wegen der Ähnlichkeit ihrer Ausführung im folgenden arithmetische Funktionen genannt. Das Rechenwerk 230 besitzt ein Steuerbit, das entweder boolesche Funktionen oder arithmetische Funktionen auswählt. Die booleschen Funktionen erzeugen keine Überträge für die nächsthöhere Stelle der Bitschaltungen 400 des Rechenwerks 230 oder zwischen ihnen. Somit kombiniert jede Bitschaltung 400 des Rechenwerks 230 die 3 Eingangssignale in diese Bitschaltung, wobei unabhängig 32 einzelne bitweise Ergebnisse gebildet werden. Während arithmetischer Funktionen kann jede Bitschaltung 400 von dem benachbarten niederwertigeren Bit einen Übertrag von einer vorangehenden Stelle empfangen und einen Übertrag für die nächsthöhere Stelle für die nächste höchstwertige Bitstelle erzeugen. Ein 8-Bit-Steuersignal (die Funktionssteuersignale F7-F0) steuert die vom Rechenwerk 230 ausgeführte Funktion. Dies ermöglicht die Auswahl von einer von 256 booleschen Funktionen und von einer von 256 arithmetischen Funktionen. Die Funktionssignalnumerierung der Funktionssignale F7-F0 ist völlig gleich zu der, die in Microsoft® Windows verwendet wird. Wenn der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 in der arithmetischen Betriebsart ist, liefert er die Signale für den Übertrag von einer vorhergehenden Stelle. In der arithmetischen Betriebsart kann das Rechenwerk 230, um mehrere kleinere Datensegmente parallel zu verarbeiten, entweder in zwei unabhängige 16-Bit- Abschnitte oder in vier unabhängige 8-Bit-Abschnitte aufgeteilt werden. Wenn das Rechenwerk 230 in einem, zwei oder vier Abschnitten arbeitet, liefert der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 entweder ein, zwei oder vier Signale für den Übertrag von einer vorhergehenden Stelle. In der bevorzugten Ausführungsform enthält ein Assembler für die Dateneinheit 110 eine Ausdrucksbewertungsschaltung, die anhand der algebraischen Eingabesyntax die richtige Menge der Funktionssignale auswählt.
- Der besondere Befehl, der ausgeführt wird, bestimmt die Funktion des Rechenwerks 230. Wie unten genau geschildert wird, enthält das Befehlswort in der bevorzugten Ausführungsform ein Feld, das entweder boolesche oder arithmetische Operationen angibt. Ein weiteres Befehlswortfeld spezifiziert die an das Rechenwerk 230 gelieferten Funktionssignale. Boolesche Befehle spezifizieren die 8 Funktionssignale F7-F0 direkt. In arithmetischen Befehlen spezifiziert eine erste Teilmenge dieses Befehlswortfelds gemäß Tabelle 14 eine Teilmenge der möglichen Rechenwerksoperationen. Eine zweite Teilmenge dieses Befehlswortfelds spezifiziert gemäß Tabelle 6 Modifizierungen der Befehlsfunktion. Alle möglichen Modifizierungen der Funktionssignale und die Funktionsmodifizierungen sowohl für boolesche als auch für arithmetische Befehle können unter Verwendung eines erweiterten Rechenwerksbefehls (EALU-Befehls) spezifiziert werden. In diesem Fall spezifizieren die vorgegebenen Felder in dem in Fig. 9 gezeigten Datenregister D0 die Operation des Rechenwerks 230.
- Obgleich das Rechenwerk 230 alle drei Eingänge kombinieren kann, beziehen viele nützliche Funktionen einige der Eingänge nicht ein. Beispielsweise behandelt der Ausdruck A & B das Eingangssignal C als unbedeutend, während der Ausdruck A C das Eingangssignal B als unbedeutend behandelt. Da jedem Eingang andere Datenpfadhardware vorausgeht, unterstützt die Fähigkeit, irgendwelche der Eingänge zu nutzen oder zu ignorieren, die Auswahl der für die gewünschte Funktion benötigten Datenpfadhardware. Tabelle 15 zeigt Beispiele dreier nützlicher Eingangsausdrücke, bei denen der C-Eingang als Maske oder als Mischsteuerung behandelt wird. Da die Dateneinheit 110 in dem Datenpfad des Eingangs C des Rechenwerks 230 die Erweiterungsschaltung 238 und den Maskengenerator 239 enthält, ist es natürlich, den Eingang C als Maske zu verwenden.
- (A&C) (B&~C) bitweises Multiplexieren (Mischen) von A und B anhand von C. A wird gewählt, wenn das entsprechende Bit in C gleich 1 ist.
- (A&~C) (B&C) bitweises Multiplexieren (Mischen) von A und B anhand von C. B wird gewählt, wenn das entsprechende Bit in C gleich 1 ist.
- (A B)&~C logisches ODER von A und B und daraufhin Nullsetzen überall, wo C gleich 1 ist.
- (A&B)&~C logisches UND von A und B und daraufhin Nullsetzen überall, wo C gleich 1 ist.
- A B&C) Nullsetzen des B-Eingangssignals vor logischer ODER- Kombination mit A, wenn C gleich 0 ist.
- A B C) Einssetzen des B-Eingangssignals vor logischer ODER- Kombination mit A, wenn C gleich 0 ist.
- Das Dreieingangs-Rechenwerk 230 kann in einem einzigen Durchlauf durch das Rechenwerk 230 gemischte boolesche und arithmetische Funktionen ausführen. Die gemischten booleschen und arithmetischen Funktionen unterstützen die Ausführung boolescher Funktionen vor einer arithmetischen Funktion. In Verbindung mit anderer Datenpfad-Hardware können durch die entsprechende Rechenwerksfunktion verschiedene Verbundfunktionen wie etwa Verschieben und Addieren, Verschieben und Subtrahieren oder Feldmaskieren vor dem Addieren oder Subtrahieren ausgeführt werden. Es wird angemerkt, daß das Rechenwerk 230 256 verschiedene arithmetische Funktionen unterstützt, wobei für die meiste Programmierung aber nur eine Teilmenge von ihnen erforderlich sind. Außerdem müssen weitere Optionen wie etwa Übertrag von einer vorhergehenden Stelle und Vorzeichenerweiterung gesteuert werden. In Tabelle 16 sind einige Beispiele aufgeführt, deren häufige Verwendung erwartet wird.
- Die am allgemeinsten nutzbare Menge arithmetischer Funktionen zusammen mit den voreingestellten Optionen für die Steuerung des Übertrags von einer vorhergehenden Stelle und für die Vorzeichenerweiterung sind direkt in dem Befehlssatz in einer Grundmenge der Operationen verfügbar. Diese sind in Tabelle 14 aufgeführt. Diese Grundmenge umfaßt Operationen, die die Funktionssteuerungen des Rechenwerks anhand der Vorzeichenbits modifizieren, wobei sie für den Übertrag von einer vorhergehenden Stelle die voreingestellte Auswahl verwenden. Einige Beispiele von ihnen sind unten genau geschildert.
- Sämtliche 256 arithmetischen Funktionen zusammen mit einer expliziteren Steuerung des Übertrags von einer vorhergehenden Stelle und der Vorzeichenerweiterung sind über den erweiterten Rechenwerksbefehl (EALU- Befehl) verfügbar. In erweiterten Rechenwerksbefehlen werden die Funktionssteuersignale, der Funktionsmodifizierer und die explizite Steuerung des Übertrags von einer vorhergehenden Stelle und der Vorzeichenerweiterung im Datenregister D0 spezifiziert. Die Codierung des Datenregisters D0 während dieser erweiterten Rechenwerksbefehle ist oben in Verbindung mit Fig. 9 beschrieben.
- Binärzahlen können als vorzeichenbehaftet oder vorzeichenlos bezeichnet sein.
- Vorzeichenlose Binärzahlen sind nichtnegative ganze Zahlen in dem Bereich der verwendeten Bits. Eine vorzeichenlose N-Bit-Binärzahl kann irgendeine ganze Zahl zwischen 0 und 2 N-1 sein. Vorzeichenbehaftete Binärzahlen tragen eine Angabe des Vorzeichens in ihrem höchstwertigen Bit. Wenn dieses höchstwertige Bit "0" ist, ist die Zahl positiv oder null. Wenn das höchstwertige Bit "1" ist, ist die Zahl negativ oder null. Eine vorzeichenbehaftete N-Bit-Binärzahl kann irgendeine ganze Zahl von -2N-1-1 bis 2Nn-1 sein. Die Kenntnis, wie und warum Zahlen einen Übertrag für die nächsthöhere Stelle oder einen Überlauf erzeugen, ist wichtig beim Verständnis des Betriebs des Rechenwerks 230.
- Wenn die Summe zweier vorzeichenloser Zahlen nicht mehr in der für die Zahlen verwendeten Anzahl der Bits ausgedrückt werden kann, führt sie zu einem Überlauf. Dieser Zustand wird durch die Erzeugung eines Übertrags für die nächsthöhere Stelle von dem höchstwertigen Bit erkannt. Es wird angemerkt, daß das Rechenwerk 230 zum Betrieb an Zahlen mit 8 Bits, 16 Bits oder 32 Bits konfiguriert werden kann. Diese Überträge für die nächsthöhere Stelle können im Mflags-Register 211 gespeichert und zur Aufrechterhaltung der Genauigkeit verwendet werden. Die Differenz zweier vorzeichenloser Zahlen führt zu einem Unterlauf, wenn die Differenz kleiner als null ist. Es wird angemerkt, daß negative Zahlen in der Schreibweise für vorzeichenlose Zahlen nicht ausgedrückt werden können. Die untenstehenden Beispiele zeigen, wie während der vorzeichenlosen Subtraktion Überträge für die nächsthöhere Stelle erzeugt werden.
- Das erste Beispiel zeigt 7, "00000111", minus 5, "00000110". Das Rechenwerk 230 führt die Subtraktion durch die Zweierkomplementaddition aus. Das Zweierkomplement einer vorzeichenlosen Binärzahl kann durch Invertieren der Zahl und Addieren von 1 erzeugt werden, so daß -X = ~X + 1 ist. Das Rechenwerk 230 negiert eine Zahl durch logisches Invertieren (oder Einerkomplementbildung) der Zahl und Einführen eines Übertrag von einer vorhergehenden Stelle von 1 in das niederwertigste Bit. Zunächst wird die 5 bitweise invertiert, was das Einerkomplement "11111001" erzeugt. Das Rechenwerk 230 addiert dies zu 7, wobei in das Eingangssignal für den Übertrag von einer vorhergehenden Stelle des ersten Bits eine "1" eingeführt wird. Dies erzeugt das folgende Ergebnis.
- Es wird angemerkt, daß dies einen Übertrag "1" für die nächsthöhere Stelle von dem höchstwertigen Bit erzeugt. In der Zweierkomplementsubtraktion gibt ein solcher Übertrag für die nächsthöhere Stelle ein Nicht-Borgen an. Somit gibt es während dieser Subtraktion keinen Unterlauf. Das nächste Beispiel zeigt 7-5. Es wird angemerkt, daß das 8-Bit-Einerkomplement von "00000111" gleich
- In diesem Fall gibt der Übertrag "0" für die nächsthöhere Stelle ein Borgen an, womit das Ergebnis kleiner als null ist und ein Unterlauf aufgetreten ist. Das letzte Beispiel der vorzeichenlosen Subtraktion ist 0-0. Es wird angemerkt, daß das 8- Bit-Einerkomplement von 0 gleich "11111111" ist.
- Die Erzeugung eines Übertrag "1" für die nächsthöhere Stelle gibt keinen Unterlauf an.
- Die Situation für vorzeichenbehaftete Zahlen ist komplizierter. Ein Überlauf bei einer vorzeichenbehafteten Addition findet statt, wenn beide Operanden positiv sind und das Vorzeichenbit des Ergebnisses eine 1 (d. h. negativ) ist, was angibt, daß sich das Ergebnis vom Positiven ins Negative verschoben hat. Ein Überlauf bei einer Addition findet ebenfalls statt, wenn beide Operanden negativ sind und das Ergebnis ein Vorzeichenbit 0 (d. h. positiv) besitzt. Mit anderen Worten, ein Überlauf bei einer Addition tritt auf, wenn beide Vorzeichenbits der Operanden gleich sind, während das Ergebnis ein anderes Vorzeichenbit besitzt. Ähnlich kann eine Subtraktion überlaufen, wenn die Operanden das gleiche Vorzeichen haben, während das Ergebnis ein anderes Vorzeichenbit besitzt.
- Beim Setzen des Übertragsbits im Statusregister 210 oder in dem Mflags-Register 211 ist das Bit oder sind die Bits immer die "natürlichen" durch das Rechenwerk 230 erzeugten Überträge für die nächsthöhere Stelle. Die meisten anderen Mikroprozessoren stellen den "Übertragsstatus" während der Addition anhand des Bits für den Übertrag für die nächsthöhere Stelle ein, wobei sie ihn während der Subtraktion aber anhand des Nichtübertrags für die nächsthöhere Stelle (oder Borgens) einstellen. Diese anderen Mikroprozessoren müssen den Nichtübertrag bei der Ausführung der Subtraktion mit Borgen erneut invertieren, um für das Rechenwerk den richtigen Übertrag von einer vorhergehenden Stelle zu erhalten. Dieser Unterschied führt dazu, daß diese Erfindung zum Erhalten der gleichen Verzweigungsbedingungen einen etwas anderen Satz bedingter Verzweigungsgleichungen verwendet als andere Prozessoren. Wenn der Sinn der Übertrags/Nichtborge-Operationen so belassen wird, wie er durch das Rechenwerk 230 erzeugt wird, vereinfacht dies viele Möglichkeiten, mit denen jeder digitale Bild-/Graphikprozessor sie verwenden kann.
- In dem Grundsatz von arithmetischen Befehlen ist der voreingestellte Übertrag von einer vorhergehenden Stelle für die Addition "0" und für die Subtraktion gleich "1". Der Befehlssatz und die bevorzugte Ausführungsform des Assemblers stellen den Übertrag von einer vorhergehenden Stelle für die Addition oder Subtraktion in arithmetischen 32-Bit-Operationen automatisch ein. Der Befehlssatz unterstützt außerdem einen Übertrag von einer vorhergehenden Stelle anhand des Übertrag für die nächsthöhere Stelle des Statusregisters, um die Operationen der Addition mit Übertrag oder Subtraktion mit Borgen mit mehrfacher Genauigkeit zu unterstützen.
- Wie später genauer geschildert wird, unterstützen einige Funktionen des Rechenwerks 230, daß der C-Port steuert, ob das Eingangssignal in den B-Port zu dem Eingangssignal in den A-Port addiert oder von ihm subtrahiert wird. Die Kombination dieser Rechenwerksfunktionen mit der Mehrfacharithmetik ermöglicht, daß das Eingangssignal in den C-Port steuert, ob jeder Abschnitt des Rechenwerks 230 addiert oder subtrahiert. Der Grundsatz von Operationen steuert den Übertrag von einer vorhergehenden Stelle an jeden Abschnitt des Rechenwerks 230, um einen Übertrag "0" von einer vorhergehenden Stelle zu liefern, wenn dieser Abschnitt eine Addition ausführt, und um einen Übertrag "1" von einer vorhergehenden Stelle zu liefern, wenn dieser Abschnitt eine Subtraktion ausführt. Die Hardware zur Unterstützung des Übertrags von einer vorhergehenden Stelle an diese Abschnitte ist oben in bezug auf Fig. 15 beschrieben.
- Im folgenden wird der volle Umfang der unter Verwendung des Dreieingangs- Rechenwerks 230 des digitalen Bild-/Graphikprozessors 71 möglichen arithmetischen Funktionen genau geschildert. Für die meisten Algorithmen ist der Teilsatz der oben aufgeführten Befehle mehr als ausreichend. Die folgende ausführliche Beschreibung ist der Vollständigkeit halber enthalten.
- In der untenstehenden Beschreibung sind Informationen darüber enthalten, wie der Funktionscode für das Rechenwerk 230 abzuleiten ist. Einige Beobachtungen über den Funktionscode F7-F0 sind hilfreich beim Verständnis dessen, wie das Rechenwerk 230 für verschiedene Operationen verwendet werden kann und wie erweiterte Rechenwerksbefehle am besten verwendet werden. Mit Ausnahme der Fälle, in denen das Eingangssignal in den C-Port die Auswahl der Addition oder Subtraktion zwischen A und B steuert, ist der voreingestellte Übertrag von einer vorhergehenden Stelle gleich F0, dem niederwertigsten Bit des Funktionscode. Das Invertieren sämtlicher Funktionscodebits ändert das Vorzeichen der Operation. Beispielsweise sind der Funktionscode Hex "66", der A + B spezifiziert, und Hex "99", der A - B spezifiziert, bitweise invers. Ähnlich sind die Funktionscodes Hex "65" (A + (B ~C)) und Hex "9A" (A-(B ~C)) bitweise invers. Erweiterte Rechenwerksbefehle treten in Paaren eines erweiterten Rechenwerks-Wahr (EALUT) und eines erweiterten Rechenwerks-Falsch (EALUF) auf. Der erweiterte Rechenwerks-Falsch-Befehl invertiert den in den Bits 26-19 des Datenregisters D0 gespeicherten Rechenwerks-Steuercode. Wie oben angemerkt wurde, wählt diese Inversion allgemein zwischen Addition und Subtraktion. Invertieren der 4 niederwertigsten Bits des Funktionscodes Hex "6A" für A + (B & C) ergibt Hex "65", d. h. die Funktion A + (B ~C). Ähnlich liefert Invertieren der 4 niederwertigsten Bits des Funktionscodes Hex "95" für A - (B & C) den Funktionscode Hex "9A", d. h. A - (B ~C). Die Operation B & C setzt Bits in B auf null, wenn C gleich "0" ist, während die Operation B ~C Bits in B auf "1" zwingt, wenn C gleich "0" ist. Dies erreicht die entgegengesetzte Maskierungsfunktion in bezug auf C. Wie unten erläutert wird, führt das selektive Invertieren der 4 niederwertigsten Bits des Funktionscodes anhand eines Vorzeichenbits vor der Addition oder Subtraktion eine Vorzeichenerweiterung aus.
- Sämtliche verfügbaren 256 arithmetischen Funktionen, die das Rechenwerk 230 verwenden, können wie folgt ausgedrückt werden:
- S = A & F1(B, C) + F2(B, C),
- wobei: S das Rechenwerksergebnis ist; und F1(B, C) und F2(B, C) irgendwelche der unten in Tabelle 17 gezeigten 16 möglichen booleschen Funktionen von B und C sein können. Tabelle 17
- Fig. 16 zeigt diese Ansicht des Rechenwerks 230 in Form eines Blockschaltplans. Die Arithmetikeinheit 491 bildet die Addition der Gleichung. Die Arithmetikeinheit 491 empfängt vom Generator für den Übertrag von einer vorhergehenden Stelle an das Bit 0 ein Übertragseingangssignal für das Bit 0. Das UND-Gatter 492 bildet A UND F1(B, C). Die Logikeinheit 493 bildet aus den wie in Tabelle 17 aufgeführten Funktionssignalen die Unterfunktion F1(B, C). Die Logikeinheit 494 bildet aus den in Tabelle 17 aufgeführten Funktionssignalen die Unterfunktion F2(B, C). Diese Ansicht des Rechenwerks 230 zeigt, daß während gemischter boolescher und arithmetischer Operationen die booleschen Funktionen vor den arithmetischen Funktionen ausgeführt werden. Eine Menge der in den Fig. 10, 11 und 12 gezeigten Bitschaltungen 400 zusammen mit dem in Fig. 13 gezeigten Funktionsgenerator, dem in Fig. 14 gezeigten Funktionsmodifizierer und dem in Fig. 15 gezeigten Generator für den Übertrag von einer vorhergehenden Stelle an das Bit 0 bilden die bevorzugte Ausführungsform des in Fig. 16 gezeigten Rechenwerks 230. Der Fachmann auf dem Gebiet erkennt, daß es viele mögliche Wege zur Realisierung des in Fig. 16 gezeigten Rechenwerks 230 gibt.
- Wie in Fig. 16 deutlich gezeigt ist, sind die Unterfunktionen F1(B, C) und F2(B, C) unabhängig, wobei sie für eine einzelne Operation des Rechenwerks 230 verschiedene Unterfunktionen sein können. Die Unterfunktion F2(B, C) enthält sowohl das Negative von B als auch das Negative von C. Somit können entweder B oder C durch Addition ihres Negativen von A subtrahiert werden. Die Codes für die Unterfunktionen F1(B, C) und F2(B, C) ermöglichen die Ableitung des Funktionscodes F7-F0 für das in den Fig. 11 und 12 gezeigte Rechenwerk 230. Der Funktionscode F7-F0 für das Rechenwerk 230 ist das Exklusiv-ODER der Codes für die entsprechenden Unterfunktionen F1(B, C) und F2(B, C). Es wird angemerkt, daß die Codes für die Unterfunktionen in der Weise ausgewählt worden sind, daß sie dieses Ergebnis liefern, so daß diese Unterfunktionen für die gleiche Operationen keine völlig gleichen Codes besitzen.
- Die Unterfunktionen aus Tabelle 17 sind mit den am allgemeinsten nutzbaren Arten des Ausdrucks aufgeführt. Es gibt andere Arten, jede Funktion darzustellen oder zu faktorisieren. Beispielsweise entspricht die Funktion B ~C unter Anwendung des DeMorganschen Gesetzes ~(~B & C). Wegen ~X = -X - 1 entspricht ~(~B & C) dem Ausdruck (~B & C) -1, während B ~C dem Ausdruck B (-C - 1) entspricht. Es wird angemerkt, daß die negativen Formen in Tabelle 17 jeweils einen nachgestellten Term "-1" besitzen. Wie oben erläutert wurde, sind negative Zahlen Zweierkomplemente. Diese entsprechen dem bitweisen logischen Inversen, das das Einerkomplement bildet, minus 1. Um die -1 auszugleichen und das Zweierkomplement zu bilden, kann an das niederwertigste Bit ein Übertrag "1" von einer vorhergehenden Stelle" eingeführt werden. In den nützlichsten Funktionen mit einer negativen Unterfunktion erzeugt nur die Unterfunktion F2(B, C) ein Negatives.
- Häufig ist es zweckmäßig, sich die booleschen Unterfunktionen in Tabelle 17 in der Weise vorzustellen, daß sie eine Maskierungsoperation ausführen. Wie in Tabelle 17 angemerkt ist, kann die Unterfunktion B & C in der Weise interpretiert werden, daß sie den Wert des Eingangssignals B auf "0" zwingt, wenn das entsprechende Bit in C gleich "0 ist. Die Unterfunktion B ~C kann in der Weise interpretiert werden, daß sie den Wert des Eingangssignals B für jedes Bit, dessen Eingangssignal C gleich "0" ist, auf "1" zwingt. Da der Maskengenerator 234 und die Erweiterungsschaltung 238 über den Multiplexer 233 den C-Port des Rechenwerks 230 speisen, wird in Unterfunktionen, die sowohl B- als auch C- Terme enthalten, in den meisten Fällen der C-Port als Maske verwendet. In Tabelle 17 ist der Ausdruck jeder Unterfunktion in Termen faktorisiert, bei denen angenommen ist, daß das Eingangssignal in den C-Port als Maske verwendet wird. Die obenstehende Gleichung zeigt, daß das Eingangssignal A in dem arithmetischen Ausdruck nicht negiert werden kann. Somit kann das Rechenwerk 230 nicht A entweder von B oder C subtrahieren. Da die Unterfunktionen F1(B, C) und F2(B, C) die Negation/Inversion von B und C unterstützen, kann andererseits entweder B oder C von A subtrahiert werden.
- Wenn die Unterfunktionen aus Tabelle 17 in die obenstehende Gleichung eingesetzt werden, erzeugen sie sämtliche 256 möglichen arithmetischen Funktionen, die das Rechenwerk 230 ausführen kann. Gelegentlich liefert eine weitere Reduzierung in dem Ausdruck des Ergebnisses einen Ausdruck, der dem ursprünglichen entspricht und leicht verständlich ist. Beim Reduzieren solcher Ausdrücke können mehrere Hinweise hilfreich sein. Wie in Tabelle 17 ausgedrückt ist, verwendet der Grundbefehlssatz voreingestellt einen Übertrag "0" von einer vorhergehenden Stelle für die Addition und einen Übertrag "1" von einer vorhergehenden Stelle, wenn die Unterfunktion F2(B, C) einen negativen Term B oder C besitzt. Diese Einführung eines Übertrags von einer vorhergehenden Stelle bewirkt, daß das Einerkomplement (logische Inversion) dadurch, daß die -1 auf der rechten Seite des Ausdrucks dieser Unterfunktionen effektiv aufgehoben wird, zu einem Zweierkomplement gemacht wird. Das logische UND eines A, das sämtlich "1"-en enthält, ist gleich A. Somit kann die Unterfunktion F1(B, C) in der Weise eingestellt werden, daß sie sämtlich "1"-en liefert, um auf der linken Seite der Gleichung A zu erhalten. Außerdem wird angemerkt, daß sämtlich "1"-en gleich dem Zweierkomplement der vorzeichenbehafteten Binärzahl minus 1 (-1) sind.
- Die untenstehenden Beispiele zeigen, wie die Gleichung und die Unterfunktionen aus Tabelle 17 zur Ableitung irgendeiner der möglichen Rechenwerksfunktionen und ihrer entsprechenden Funktionscode zu verwenden sind. Die arithmetische Funktion A + B kann als A & (sämtlich "1"-en) + B ausgedrückt werden. Dies erfordert F1(B, C) = sämtlich "1"-en und F2(B, C) = B. Der F1-Code für sämtlich "1"-en ist Hex "AA", während der F2-Code für B gleich Hex "CC" ist. Die bitweise XOR-Kombination von Hex "AA" und Hex "CC" ergibt Hex "66". Tabelle 16 zeigt, daß Hex "66" der Funktionscode für A + B ist.
- Die arithmetische Funktion A - B kann als A & (sämtlich "1"-en) + (-B - 1) + 1 ausgedrückt werden. Dies beinhaltet F1(B, C) = sämtlich "1"-en (F1-Ccode Hex "AA") und F2(B, C) = -B - 1 (F2-Code Hex "33 ") mit Einführung eines Übertrag "1" von einer vorhergehenden Stelle. Es wird daran erinnert, daß ein Übertrag "1" von einer vorhergehenden Stelle für Unterfunktionen F2, die eine Negation enthalten, voreingestellt ist. Die bitweise XOR-Kombination des F1-Codes von Hex "AA" mit dem F2-Code Hex "33" ergibt Hex "99". Tabelle 16 zeigt, daß Hex "99" unter der Annahme eines Übertrag "1" von einer vorhergehenden Stelle der Funktionscode für A - B ist.
- Die arithmetische Funktion A + C wird ähnlich zu A + B abgeleitet. Somit ist A + C = A & (sämtlich "1"-en) + C. Dies kann durch die Wahl F1(B, C) = sämtlich "1"-en und F2(B, C) = C abgeleitet werden. Das Exklusiv-ODER des F1-Codes Hex "AA" und des F2-Codes Hex "F0" erzeugt Hex "5A", den Funktionscode für A + C. Ähnlich ist A - C das gleiche wie A & (sämtlich "1"- en) + (-C - 1) + 1. Das Exklusiv-ODER des F1-codes Hex "AA" und des F2-Codes Hex "0F" erzeugt Hex "A5", den Funktionscode für A - C.
- Das Dreieingangs-Rechenwerk 230 schafft dadurch einen großen Nutzen, daß es anhand des dritten Eingangssignals Maskierungs- und/oder bedingte Funktionen zwischen zwei der Eingangssignale liefert. Der Datenpfad der Dateneinheit 110 ermöglicht, daß der C-Port am nützlichsten als Maske unter Verwendung des Maskengenerators 234 oder als bedingter Steuereingang unter Verwendung der Erweiterungsschaltung 238 ist. Das Rechenwerk 230 führt in irgendwelchen gemischten booleschen und arithmetischen Funktionen die booleschen Funktionen stets vor den arithmetischen Funktionen aus. Somit kann sich ein Übertrag aus nicht maskierten Bits in eines oder in mehrere Bits, die durch eine boolesche Funktion 0-gesetzt wurden oder gesetzt wurden, fortpflanzen. Die folgenden Beispiele sind nützlich bei Maskierungs- und bedingten Operationen.
- Die Funktion A + (B & C) kann als A & (sämtlich "1"-en) + (B & C) ausgedrückt werden. Die Wahl F1(B, C) = sämtlich "1"-en (F1-Code Hex "AA") und F2(B, C) = B & C (F2-Code Hex "C0") ergibt A + (B & C). Das bitweise Exklusiv- ODER von Hex "AA" und Hex "C0" ergibt den in Tabelle 16 aufgeführten Rechenwerks-Funktionscode Hex "6A". Diese Funktion kann Bits von vorzeichenlosen Zahlen entfernen. Wie unten gezeigt wird, kann diese Funktion bei der Ausführung von Rechtsverschiebungs- und Additionsoperationen mit der Barrel-Rotationseinrichtung 235 und mit dem Maskengenerator 234 kombiniert werden. In diesem Fall wirkt C als Bitmaske, die die Bits von B überall dort, wo C "0" ist, nullsetzt. Da der Maskengenerator 234 eine Maske mit rechtsbündigen Einsen erzeugen kann, ermöglicht die Auswahl des Maskengenerators 234 über den Multiplexer Cmux 233, daß diese Funktion einige der höchstwertigen Bits in B vor dem Addieren zu A nullsetzt. Eine weitere Verwendung dieser Funktion ist die bedingte Addition von B zu A. Die Auswahl der Erweiterungsschaltung 238 über den Multiplexer Cmux 233 ermöglicht anhand der Bits im Mflags-Register 211 eine Steuerung, ob B zu A addiert wird. Während der Mehrfacharithmetik können Bits im Mflags-Register 211 entsprechende Abschnitte des Rechenwerks 230 steuern.
- Die Funktion A + (B ~C) kann als A & (sämtlich '1'-en) + (B ~C) ausgedrückt werden. Die Wahl F1(B, C) = sämtlich "1"-en (F1-Code Hex "AA") und F2(B, C) = B ~C (F2-Code "CF") liefert diesen Ausdruck. Wie in Tabelle 16 aufgeführt ist, erreicht das bitweise Exklusiv-ODER von Hex "AA" und Hex "C0" den Funktionscode Hex "65".
- Die Funktion A - (B & C) kann als A & (sämtlich "1"-en) + (-(B & -C) - 1) + 1 ausgedrückt werden. Die Wahl F1(B, C) = sämtlich "1"-en (F1-Code Hex "AA") und F2(B, C) = -(B & C) - 1 (F2-code Hex "3F") mit Einführung eines Übertrags "1" von einer vorhergehenden Stelle liefert diesen Ausdruck. Das bitweise Exklusiv-ODER von Hex "AA" und Hex "3F" liefert den in Tabelle 16 aufgeführten Funktionscode Hex "95". Diese Funktion kann über das Eingangssignal C vor dem Subtrahieren von A Bits in dem Eingangssignal B entfernen oder maskieren.
- Es gibt 16 mögliche Funktionen, bei denen die Unterfunktion F1(B, C) = 0 ist. Diese Funktionen werden im allgemeinen mit anderer Hardware zum Ausführen der Negation, des Absolutwerts, der Bitmaskierung und/oder der Vorzeichenerweiterung des Eingangssignals B durch das Eingangssignal C verwendet. Wenn die Unterfunktion F1(B, C) = 0 ist, ist die Rechenwerksfunktion durch die Unterfunktion F2(B, C) gegeben.
- Die Funktion -(B & C) kann als (A & "0") + (-(B & C)) ausgedrückt werden. Dieser Ausdruck kann durch die Wahl F1(B, C) = 0 (F1-Code Hex "00") und F2(B, C) = -(B & C) - 1 (F2-Code Hex "3F") mit Einführung eines Übertrags "1" von einer vorhergehenden Stelle gebildet werden. Wie in Tabelle 16 gezeigt ist, liefert das Exklusiv-ODER von Hex "00" und Hex "3F" den Funktionscode Hex "3F". Diese Funktion maskiert über eine Maske C Bits in B und negiert daraufhin die Größe. Diese Funktion kann als Teil einer Rechtsverschiebungs- und Negationsoperation verwendet werden.
- Mehrere Funktionen unterstützen in nützlicher Weise die Maskierung beider Terme der Summe in der obenstehenden Gleichung. Die Funktion (A & C) + (B & C) kann durch die Wahl F1(B, C) = C (F1-Code Hex "A0") und F2(B, C) = B & C (F2-Code Hex "C0") erreicht werden. Wie in Tabelle 16 gezeigt ist, liefert das Exklusiv-ODER von Hex "A0" und Hex "F0" den Funktionscode Hex "60". Diese Funktion setzt die entsprechenden Bits der Eingangssignale A und B effektiv auf null, wenn C vor der Addition "0" ist. Es wird angemerkt, daß die boolesche Funktion vor der Addition angewendet wird und daß sich einer oder mehrere Überträge in die nullgesetzten Bits fortpflanzen können. Bei Verwendung der Mehrfacharithmetik überqueren solche Überträge nicht die Grenzen zwischen den Aufspaltungsabschnitten des Rechenwerks 230. Eine übliche Verwendung für diese Funktion ist das Summieren mehrerer kleiner Größen, die in einem Register gehalten werden. Der B-Port empfängt eine gedrehte Version der Zahl, die an den A-Port geht, wobei der C-Port eine Maske für die sich überschneidenden Bits liefert. In einem einzelnen Befehl können vier 8-Bit-Zahlen zu zwei 16-Bit-Zahlen summiert werden oder können zwei 16-Bit- Zahlen zu einer 32-Bit-Zahl summiert werden.
- Die ähnliche Funktion (A & C) - (B & C) wird durch die Wahl F1(B, C) = C (F1- Code Hex "A0") und F2(B, C) = -(B & C) - 1 und Einführen eines Übertrag "1" von einer vorhergehenden Stelle erreicht. Wie in Tabelle 16 gezeigt ist, liefert das Exklusiv-ODER von Hex "A0" und Hex "3F" den Funktionscode Hex "9F". Diese Funktion kann negative Summen erzeugen, wobei der C-Port-Wert als Maske der Eingangssignale A und B wirkt.
- Die Funktion (A & B) + B wird durch die Wahl F1(B, C) = C (F1-Code Hex "A0") und F2(B, C) = B (F2-Code Hex "CC") erreicht. Das Exklusiv-ODER von Hex "A0" und Hex "CC" liefert den Funktionscode Hex "6C". Diese Funktion kann anhand dessen, ob A sämtlich "1"-en oder sämtliche "0"-en sind, B bedingt verdoppeln.
- Fig. 17 zeigt in Form eines Blockschaltplans eine alternative Ausführungsform des Rechenwerks 230. Das Rechenwerk 230 aus Fig. 17 bildet die Gleichung:
- S = F3(A, B, C) + F4(A, B, C),
- wobei: S das Rechenwerksergebnis ist; und F3(A, B, C) und F4(A, B, C) irgendwelche der 256 möglichen booleschen Funktionen von A, B und C sein können. Der Addierer 495 bildet die Addition dieser Gleichung und nimmt ein Eingangssignal für einen vom Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 eingegebenen Übertrag an ein niederwertigstes Bit auf. Der Generator 496 für boolesche Funktionen bildet gesteuert durch die Eingangsfunktionssignale die Funktion F3(A, B, C). Ähnlich bildet der Generator 497 für boolesche Funktionen gesteuert durch die Eingangsfunktionssignale die Funktion F4(A, B, C). Es wird angemerkt, daß die Generatoren 496 und 497 für boolesche Funktionen die boolesche Kombinationen von A, B und C unabhängig aus einer Menge von 256 möglichen booleschen Kombinationen von drei Eingangssignalen bilden. Es wird angemerkt, daß gemäß dieser Konstruktion klar ist, daß das Rechenwerk 230 die booleschen Kombinationen vor Bildung der arithmetischen Kombination bildet. Die Schaltung in Fig. 12 kann abgewandelt werden, um dieses Ergebnis zu erreichen. Die in Fig. 12 gezeigte Erzeugungs/Vernichtungs-Funktion verwendet einen Teil des in der Fortpflanzungsfunktion verwendeten Logikbaums. Dieser enthält die Durchlaßgatter 451, 452, 453, 454, 461 und 462. Das Vorsehen eines getrennten Logikbaums für diese Funktion, der die Durchlaßgatter 451, 452, 453, 454, 461 und 462 verdoppelt und das NICHT-A-Gatter 475 beseitigt, führt zu einer in Fig. 17 ausgeführten Struktur. Es wird angemerkt, daß in dieser Konstruktion entweder die Erzeugungs- oder die Vernichtungsterme gleichzeitig mit dem Fortpflanzungsterm auftreten können. Diese Konstruktion schafft eine noch höhere Flexibilität als die in Fig. 16 gezeigte.
- Das Dreieingangs-Rechenwerk 230, die Hilfsdatenpfad-Hardware und die Kenntnis des binären Zahlensystems können verwendet werden, um viele nützliche elementare Funktionen zu bilden. Der Befehlssatz der digitalen Bild- /Graphikprozessoren macht mehr von der Hardware für den Programmierer zugänglich, als es bei Mikroprozessoren üblich ist. Das stärkere Zugänglichmachen der Hardware für den Programmierer legt einige Aspekte der Architektur frei, die in den meisten anderen Prozessoren verborgen sind. Dieser Befehlssatz unterstützt die Bildung nutzerangepaßter Operationen unter Verwendung der elementaren Funktionen als Bausteine. Dies macht über die im allgemeinen in anderen Prozessoren gefundenen Hardware-Funktionen hinaus eine größere Funktionalität für den Programmierer zugänglich, wobei die digitalen Bild-/Graphikprozessoren Hardware-Funktionen besitzen, die für die Bild-, Graphik- und andere Verarbeitung sehr nützlich sein können. Diese Kombination von Hardware-Fähigkeit und Flexibilität ermöglicht, daß Programmierer etwas in einem Befehl ausführen, was in den meisten anderen Architekturen viele Befehle erfordern würde. Im folgenden werden einige elementare Schlüsselfunktionen beschrieben, und wird beschrieben, wie zwei oder mehr von ihnen zum Erzeugen einer komplexen Operation kombiniert werden können.
- In den vorausgehenden Abschnitten wurden die einzelnen Funktionen jedes Funktionsblocks der Dateneinheit 110 beschrieben. In diesem Abschnitt wird diskutiert, wie diese Funktionen in Verbindung verwendet werden können, um komplexere Operationen auszuführen. Die Barrel-Rotationseinrichtung 235, der Maskengenerator 239 und das Dreieingangs-Rechenwerk 230 können zusammenarbeiten, um entweder allein oder zusammen mit der Addition oder Subtraktion in dem einzigen Rechenwerks-Befehlszyklus eine Linksverschiebung, eine vorzeichenlose Rechtsverschiebung und eine vorzeichenbehaftete Rechtsverschiebung auszuführen. Ein Assembler erzeugt Programmcode für die digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74. Dieser Assembler unterstützt vorzugsweise die Symbole "»u" für vorzeichenlose "logische" Rechtsverschiebungen, "»" oder "»s" für arithmetische (vorzeichenbehaftete) Rechtsverschiebungen und "«" für eine Linksverschiebung. Diese Verschiebungsschreibweisen sind tatsächlich Makrofunktionen, die in bezug auf Rotationen, Maskenerzeugung und Rechenwerksfunktion die richtigen expliziten Funktionen auswählen. Außerdem unterstützt der Assembler vorzugsweise das explizite Spezifizieren der Barrel-Rotation ("\\"), der Maskenerzeugung ("%" und "%!") und der Rechenwerksfunktion. Die explizite Schreibweise wird allgemein nur dann verwendet, wenn eine nutzerangepaßte Funktion spezifiziert wird, die durch die Verschiebungsschiebeschreibweise nicht ausgedrückt werden kann.
- Die Dateneinheit 110 führt Linksverschiebungsoperationen in einem einzigen Rechenwerkszyklus aus. Eine solche Linksverschiebungsoperation umfaßt eine Barrel-Rotationseinrichtung um die Anzahl der Bits der Linksverschiebung durch die Barrel-Rotationseinrichtung 235. Wie oben angemerkt wurde, laufen Bits, die während einer solchen Rotation links herausgedreht werden, nach rechts zurück um und müssen somit entfernt werden, um eine Linksverschiebung auszuführen. Das gedrehte Ausgangssignal wird an den B-Port des Rechenwerks 230 gesendet. Der Maskengenerator 239 empfängt den Verschiebungsbetrag und bildet eine Maske mit einer Anzahl rechtsbündiger Einsen, die gleichem dem Verschiebungsbetrag ist. Es wird angemerkt, daß der gleiche Verschiebungsbetrag vom zweiten Eingangsbus 202 über den Multiplexer Smux 231 an den Rotationssteuereingang der Barrel-Rotationseinrichtung 235 geliefert wird und vom zweiten Eingangsbus 202 über den Multiplexer Mmux 234 an den Maskengenerator 239 geliefert wird. Der Maskengenerator 239 beliefert den C- Port des Rechenwerks 230. Das Rechenwerk 230 kombiniert das gedrehte Ausgangssignal mit der Maske mit der booleschen Funktion B & ~C. Die Linksverschiebungen sind unten in dem Assembler ausgedrückt.
- Left_Shift = Input « Shift_Amount
- Diese Operation entspricht der folgenden Schreibweise:
- Left_Shift = (Input\\Shift_Amount) & ~%Shift_Amount
- Das folgende Beispiel zeigt eine Linksverschiebung von Hex "53FFFFA7" um 4 Bits. Obgleich diese in mehreren Schritten gezeigt ist, führt die Dateneinheit 110 diese in einem einzigen Durchlaufzyklus des Rechenwerks aus. Die ursprüngliche Zahl in Binärschreibweise ist:
- 0101 0011 1111 1111 1111 1111 1010 0111
- Die Rotation um 4 Stellen in der Barrel-Rotationseinrichtung 235 liefert:
- 0011 1111 1111 1111 1111 1010 0111 0101
- Der Maskengenerator 239 bildet die folgende Maske:
- 0000 0000 0000 0000 0000 0000 0000 1111
- Das Rechenwerk 230 bildet die logische Kombination B & ~C. Diese maskiert Bits in dem gedrehten Betrag, was dazu führt, daß sie "0" sind, während es die anderen Bits erhält. Dies liefert das Linksverschiebungsergebnis:
- 0011 1111 1111 1111 1111 1010 0111 0000
- Da einige Bits "übergelaufen" sind, führt die Linksverschiebung des obengenannten Beispiels zu einem arithmetischen Überlauf. Während einer Linksverschiebung tritt für vorzeichenlose Zahlen ein arithmetischer Überlauf auf, falls irgendwelche Bits herausgeschoben werden. Ein arithmetischer Überlauf kann auch für vorzeichenbehaftete Zahlen auftreten, falls sich das resultierende Vorzeichenbit von dem ursprünglichen Vorzeichenbit unterscheidet. Das Rechenwerk 230 dieser Erfindung erfaßt den arithmetischen Überlauf bei Linksverschiebungen nicht automatisch. Ein Linksverschiebungsüberlauf kann durch Subtrahieren des durch die LMO/RMO/LMBC/RMBC-Schaltung 237 erfaßten Betrags der am weitesten links stehenden Bitänderung der ursprünglichen Zahl von dem Linksverschiebungsbetrag erfaßt werden. Falls die Differenz kleiner als oder gleich null ist, laufen während der Verschiebung keine Bits über. Falls die Differenz größer als null ist, ist die Differenz die Anzahl der überlaufenden Bits.
- Außerdem steuert der Assembler die Dateneinheit 110 zum Ausführen von Linksverschiebungs- und Additionsoperationen und von Linksverschiebungs- und Subtraktionsoperationen. Der Assembler übersetzt die Funktion A + (B « n) in eine Steuerung der Barrel-Rotationseinrichtung 235, des Maskengenerators 239 und des Rechenwerks 230 zum Ausführen der gewünschten Operation. Mit Ausnahme der Operation des Rechenwerks 230 funktioniert eine Linksverschiebungs- und Additionsoperation völlig gleich zu dem obengegebenen Beispiel einer einfachen Verschiebung. Anstelle der Ausführung der logischen Funktion B & ~C wie in einer einfachen Verschiebung führt das Rechenwerk die gemischte arithmetische und logische Funktion A + (B & ~C) aus. Eine Linksverschiebungs- und Additionsoperation wird in der Assemblerschreibweise wie folgt ausgedrückt:
- Lshift_Add = Input1 + Input2 « Shift_Amount.
- Diese Operation entspricht:
- Lshift_Add = Input1 + [(Input2\\Shift_Amount) & ~%Shift_Amount]
- Das folgende Beispiel zeigt eine Linksverschiebung von Hex "53FFFFA7" um 4 Bits, gefolgt von der Addition von Hex "000000AA". Es wird angemerkt, daß alle diese Schritte nur einen einzigen Rechenwerkszyklus benötigen. Das ursprüngliche Input2 ist in Binärschreibweise:
- 0101 0011 1111 1111 1111 1111 1010 0111
- Die Rotation um 4 Stellen in der Barrel-Rotationseinrichtung 235 liefert:
- 0011 1111 1111 1111 1111 1010 0111 0101
- Der Maskengenerator 239 bildet die Maske:
- 0000 0000 0000 0000 0000 0000 0000 1111
- Das Rechenwerk 230 bildet die logische Kombination B & ~C und erzeugt ein Linksverschiebungsergebnis:
- 0011 1111 1111 1111 1111 1010 0111 0000
- Der Operand Input1 ist in Binärschreibweise:
- 0000 0000 0000 0000 0000 0000 1010 1010
- Schließlich ist die Summe:
- 0011 1111 1111 1111 1111 1011 0001 1010
- Es wird angemerkt, daß das Rechenwerk 230 die logische Kombination und die arithmetische Kombination in einem einzigen Zyklus bildet und daß das oben gezeigte Linksverschiebungsergebnis als Zwischenergebnis nicht verfügbar ist. Außerdem wird angemerkt, daß die Summe selbst dann überlaufen kann, wenn die Linksverschiebung keinen Überlauf erzeugt. Der Überlauf der Summe wird durch Erzeugung eines Übertrags für die nächsthöhere Stelle von dem höchstwertigen Bit des Rechenwerks 230 erfaßt. Diese Bedingung wird erfaßt und in dem "V"-Bit des Statusregisters 210 gespeichert.
- Die Linksverschiebungs- und Subtraktionsoperation zerfällt ebenfalls in eine Menge von durch die Barrel-Rotationseinrichtung 235, den Maskengenerator 237 und das Rechenwerk 230 in einem einzigen Rechenwerkszyklus ausgeführten Funktionen. Die Linksverschiebungs- und Subtraktionsoperation unterscheidet sich von der zuvor beschriebenen Linksverschiebungsoperation und Linksverschiebungs- und Additionsoperation nur in bezug auf die Funktion des Rechenwerks 230. Während der Linksverschiebung und Subtraktion führt das Rechenwerk 230 die gemischte arithmetische und logische Funktion A + (B ~C) + 1 aus. Das Rechenwerk 230 führt die Operation "+1" durch Einfügen einer "1" in das Übertragseingangssignal des niederwertigsten Bits aus. Dieses Einfügen eines Übertrags von einer vorhergehenden Stelle findet im Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 statt. Die meisten Subtraktionsoperationen finden bei dieser Erfindung unter Verwendung eines solchen Übertrags "1" von einer vorhergehenden Stelle an das niederwertigste Bits statt. Die Assemblerschreibweise drückt Linksverschiebungs- und Subtraktionsoperationen wie folgt aus:
- LShift_Sub = Input1 - Input2 « Shift_Amount
- Diese Operation entspricht:
- LShift_Sub = Input1 - [(Input2\\Shift_Amount) & ~%Shift_Amount] + 1
- Das folgende Beispiel zeigt eine Linksverschiebung von Hex "53FFFFA7" um 4 Bits und eine nachfolgende Subtraktion von Hex "000000AA". Es wird angemerkt, daß alle diese Schritte lediglich einen einzigen Rechenwerkszyklus benötigen. Das ursprüngliche Input2 in Binärschreibweise ist:
- 01010011 1111 1111 1111 1111 1010 0111
- Die Rotation um 4 Stellen in der Barrel-Rotationseinrichtung 235 liefert:
- 0011 1111 1111 1111 1111 1010 0111 0101
- Der Maskengenerator 239 bildet die Maske:
- 0000 0000 0000 0000 0000 0000 0000 1111
- Das Ergebnis der logischen Kombination ~B C ist wie folgt:
- 1100 0000 0000 0000 0000 0101 10001111
- Der andere Operand Input1 ist in Binärschreibweise:
- 0000 0000 0000 0000 0000 0000 1010 1010
- Die Summe A + (~B C) ist:
- 1100 0000 0000 0000 0000 0110 0011 1001
- Schließlich liefert die Addition der in den Übertrag von einer vorhergehenden Stelle an das niederwertigste Bit eingeführten "1":
- 1100 0000 0000 0000 0000 0110 0011 1010
- Es wird angemerkt, daß das Rechenwerk 230 die logische Kombination und die arithmetische Kombination in einem einzigen Zyklus bildet und daß weder das Linksverschiebungsergebnis noch die obengezeigte Teilsumme als Zwischenergebnisse verfügbar sind.
- Der Assembler der bevorzugten Ausführungsform kann die Dateneinheit 110 zum Ausführen einer vorzeichenlosen Rechtsverschiebung mit von links hereingeschobenen Nullen in einem einzigen Rechenwerkszyklus steuern. Da die Barrel-Rotationseinrichtung 235 eine Linksrotation ausführt, kann eine Nettorechtsrotation mit einem Rotationsbetrag von 32 - n, wobei n die Anzahl der nach rechts zu drehenden Bits ist, gebildet werden. Es wird angemerkt, daß von der Barrel-Rotationseinrichtung 235 und von dem Maskengenerator 239 nur die 5 niederwertigsten Bits der Daten auf dem zweiten Eingangsbus 202 verwendet werden. Somit sind die Beträge 32 und 0 bezüglich der Steuerung der Schiebeoperation gleichwertig. Für Verschiebungen mit einem Sofort- Rechtsverschiebungsbetrag führt der Assembler die Berechnung von 32 - n automatisch aus. Der Assembler der bevorzugten Ausführungsform erfordert, daß bei registerbasierten Verschiebungen der Programmierer die Größe 32 - n bildet.
- Nachdem die Anpassung an die Rechtsrotation vorgenommen worden ist, funktioniert die vorzeichenlose Rechtsverschiebung mit Ausnahme dessen, daß das Rechenwerk 230 eine andere Funktion ausführt, genauso wie die Linksverschiebung. Diese Operation enthält eine Rotation um die Größe 32 - n mittels der Barrel-Rotationseinrichtung 235. Im Ergebnis dieser Nettorechtsrotation laufen die Bits von dem niederwertigsten zu dem höchstwertigen Teil des Wortes um. Die gleiche Größe (32 - n) steuert den Maskengenerator 239, der 32 - n rechtsbündige Einsen erzeugt. Der Maskengenerator 239 wird durch die "!"-Option gesteuert, so daß ein Verschiebungsbetrag null eine Maske aus sämtlich "1"-en erzeugt. In diesem Fall brauchen keine Bits entfernt zu werden. Daraufhin bildet das Rechenwerk 230 eine boolesche Kombination der Ausgangssignale der Barrel-Rotationseinrichtung 235 und des Maskengenerators 239.
- Unten ist ein Beispiel einer vorzeichenlosen Rechtsverschiebungsoperation gezeigt. Die Assemblerschreibweise für eine vorzeichenlose Rechtsverschiebung ist:
- Unsigned_Right_Shift = Input » u(32-Shift_Amount).
- Die entsprechende Operation, die die ausgeführten Funktionen explizit zeigt, ist:
- Unsigned_Right_Shift = (Input\\(32-Shift_Amount)) & %!(32-Shift_Amount)
- Es wird angemerkt, daß der Maskenoperator "%!" in der obenstehenden Gleichung spezifiziert, daß, wenn der Verschiebungsbetrag 0 ist, eine Maske sämtlich aus "1"-en erzeugt wird. Das untenstehende Beispiel zeigt die vorzeichenlose Verschiebung der Zahl Hex "53FFFFA7" um 4 Bitstellen nach rechts. Die ursprüngliche Zahl in Binärform ist:
- 0101 0011 1111 1111 1111 1111 1010 0111
- Wenn diese Zahl um 32 - 4 = 28 Stellen nach links gedreht wird, wird sie zu:
- 0111 0101 0011 1111 1111 1111 1111 1010
- Der Maskengenerator 239 bildet aus der Eingangsgröße 32 - 4 = 28 eine Maske, d. h.:
- 0000 1111 1111 1111 1111 1111 1111 1111
- Schließlich führt das Rechenwerk 230 die boolesche Kombination B & C aus, die das Ergebnis liefert:
- 0000 0101 0011 1111 1111 1111 1111 1010
- Die Dateneinheit 110 kann entweder vorzeichenlose Rechtsverschiebungs- und Additions- oder vorzeichenlose Rechtsverschiebungs- und Subtraktionsoperationen ausführen. In der bevorzugten Ausführungsform übersetzt der Assembler die Schreibweise A + B » u(n) in einem Befehl, der die Barrel-Rotationseinrichtung 235, den Maskengenerator 239 und das Rechenwerk 230 zum Ausführen einer vorzeichenlosen Rechtsverschiebungs- und Additionsoperation steuert. Die vorzeichenlose Rechtsverschiebung und Addition funktioniert mit Ausnahme dessen, daß das Rechenwerk 230 die Funktion A + (B & C) ausführt, völlig gleich zu dem vorausgehenden Beispiel einer einfachen vorzeichenlosen Rechtsverschiebung. In der bevorzugten Ausführungsform übersetzt der Assembler die Schreibweise A - B » u(n) in einen Befehl, der die Barrel-Rotationseinrichtung 235, den Maskengenerator 239 und das Rechenwerk 230 zum Ausführen einer vorzeichenlosen Rechtsverschiebungs- und Subtraktionsoperation steuert. Die vorzeichenlose Rechtsverschiebung und Subtraktion funktioniert mit Ausnahme dessen, daß das Rechenwerk 230 die Funktion A-(~B C + 1) ausführt, ähnlich zu dem vorausgehenden Beispiel einer einfachen vorzeichenlosen Rechtsverschiebung. Wie bei der Linksverschiebung und Subtraktion umfaßt die Operation "+1" das Einführen eines Übertrags "1" von einer vorhergehenden Stelle an das niederwertigste Bit über den Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0.
- Der Assembler der bevorzugten Ausführungsform kann die Dateneinheit 110 zum Ausführen einer vorzeichenbehafteten Rechtsverschiebung mit von links hereingeschobenen Vorzeichenbits in einem einzigen Rechenwerkszyklus steuern. Der Assembler nimmt für diese Verschiebungen mit einem Sofort- Rechtsverschiebungsbetrag automatisch die Berechnung von 32 - n vor. Die Dateneinheit 110 enthält Hardware, die den Zustand des höchstwertigen Bits, des sogenannten Vorzeichenbits, des Eingangssignals in die Barrel-Rotationseinrichtung 235 erfaßt. Dieses Vorzeichenbit kann die 4 niederwertigsten Bits des Funktionscodes steuern. Unter Verwendung dieser Hardware werden die 4 niederwertigsten Bits des Funktionscodes invertiert, wenn das Vorzeichenbit "0" ist. Vorzeichenbehaftete Rechtsverschiebungsoperationen verwenden diese Vorzeichenerfassungshardware, um anhand des Vorzeichens des Eingangssignals der Barrel-Rotationseinrichtung 235 die Funktion zu steuern, die das Rechenwerk 230 ausführt. Diese Operation kann unter Verwendung der folgenden elementaren Funktionen erläutert werden. Die Barrel-Rotationseinrichtung 235 führt durch Linksdrehen um 32 minus der Anzahl der gewünschten vorzeichenbehafteten Rechtsverschiebung (32 - n) eine Nettorechtsrotation aus. Dieser Verschiebungsbetrag (32 - n) wird an den Maskengenerator 237 geliefert, der somit 32 - n rechtsbündige "1"-en erzeugt. Die "1"-en dieser Maske wählen die gewünschten Bits der Zahl aus, die nach rechts verschoben wird. Die "0"-en dieser Maske erzeugen Vorzeichenbits, die gleich dem höchstwertigen in die Barrel-Rotationseinrichtung 235 eingegebenen Bit sind. Das Rechenwerk 230 kombiniert daraufhin die gedrehte Zahl von der Barrel-Rotationseinrichtung 235 und die Maske vom Maskengenerator 237. Die vom Rechenwerk 230 ausgeführt boolesche Funktion hängt von dem Vorzeichenbit an dem Eingang in die Barrel- Rotationseinrichtung 235 ab. Wenn dieses Vorzeichenbit "0" ist, empfängt das Rechenwerk 230 Funktionssignale zum Ausführen von B & C. Während die gedrehte Zahl unverändert ausgewählt wird, zwingt dies irgendwelche Bits, die in der Maske "0" sind, auf "0". Somit sind die höchstwertigen Bits des Ergebnisses "0", was das gleiche Vorzeichen wie das Eingangssignal in die Barrel- Rotationseinrichtung 235 angibt. Wenn das Vorzeichenbit "1" ist, hat das Rechenwerk 230 ein Funktionssignal zum Ausführen von B ~C empfangen. Diese Funktion wählt den gedrehten Betrag ungeändert aus, während sie irgendwelche Bits, die in der Maske "0" sind, auf "1" zwingt. Die Änderung des Funktionscodes umfaßt das Invertieren der 4 niederwertigsten Bits, falls das erfaßte Vorzeichenbit "0" ist. Somit sind die höchstwertigen Bits des Ergebnisses "1", der gleichen Vorzeichenangabe wie das Eingangssignal in die Barrel- Rotationseinrichtung 235.
- Unten sind zwei Beispiele der vorzeichenlosen Rechtsverschiebungsoperation gezeigt. Die vorzeichenbehaftete Rechtsverschiebung ist die voreingestellte Assembler-Schreibweise für Rechtsverschiebungen. Die zwei zulässigen Assembler-Schreibweisen für eine vorzeichenbehaftete Rechtsverschiebung sind:
- Signed_Right_Shift = Input » s(32-Shift_Amount)
- Signed_Right_Shift = Input » (32-Shift_Amount)
- Da diese Operation die Vorzeichenerfassungs-Hardware nutzt, gibt es in der Schreibweise der bevorzugten Ausführungsform des Assemblers keine explizite Möglichkeit, diese Operation in bezug auf Rotation und Maskierung zu spezifizieren. In der bevorzugten Ausführungsform steuert das Vorzeichen des Eingangssignals in die Barrel-Rotationseinrichtung 235 die Inversion der Funktionssignale F3-F0. Das erste Beispiel zeigt eine vorzeichenbehaftete Rechtsverschiebung der negativen Zahl Hex "ECFFFFA7" um 4 Stellen. Die ursprüngliche Zahl ist in Binärschreibweise:
- 1110 1100 1111 1111 1111 1111 1010 0111
- Die Linksrotation um 28 (32 - 4) Stellen liefert:
- 0111 1110 1100 1111 1111 1111 1111 1010
- Der Maskengenerator 237 bildet diese Maske:
- 0000 1111 1111 1111 1111 1111 1111 1111
- Da das höchstwertige Bit des Eingangssignals in die Barrel-Rotationseinrichtung 235 "1" ist, bildet das Rechenwerk 230 die boolesche Kombination B C. Dies liefert das Ergebnis:
- 1111 1110 1100 1111 1111 1111 1111 1010
- In diesem Beispiel werden "1"-en in die höchstwertigen Bits des verschobenen Ergebnisses verschoben, die mit dem Vorzeichenbit der ursprünglichen Zahl übereinstimmen. Das zweite Beispiel zeigt eine vorzeichenbehaftete Rechtsverschiebung der positiven Zahl Hex "SCFFFFA7" um 4 Stellen. Die ursprüngliche Zahl ist in Binärschreibweise:
- 0101 1100 1111 1111 1111 1111 1010 0111
- Die Linksrotation um 28 (32 - 4) Stellen liefert:
- 0111 0101 1100 1111 1111 1111 1111 1010
- Der Maskengenerator 237 bildet diese Maske:
- 0000 1111 1111 1111 1111 1111 1111 1111
- Da das höchstwertige Bit des Eingangssignals in die Barrel-Rotationseinrichtung 235 gleich "0" ist, bildet das Rechenwerk 230 die boolesche Kombination B & C durch Inversion der vier niederwertigsten Bits des Funktionscodes. Dies liefert das Ergebnis:
- 0000 0101 1100 1111 1111 1111 1111 1010
- Es wird angemerkt, daß bei dieser Rechtsverschiebung in die höchstwertigen Bits, die füit dem Vorzeichenbit der ursprünglichen Zahl übereinstimmen, "0"-en verschoben werden.
- Die Dateneinheit 110 kann entweder vorzeichenbehaftete Rechtsverschiebungs- und Additions- oder vorzeichenbehaftete Rechtsverschiebungs- und Subtraktionsoperationen ausführen. In der bevorzugten Ausführungsform übersetzt der Assembler die Schreibweisen A + B » (n) oder A + B » s (n) in einen Befehl, der die Barrel-Rotationseinrichtung 235, den Maskengenerator 239 und das Rechenwerk 230 zum Ausführen einer vorzeichenbehafteten Rechtsverschiebungs- und Additionsoperation steuert. Die vorzeichenbehaftete Rechtsverschiebung und Addition funktioniert mit Ausnahme der durch das Rechenwerk 230 ausgeführten Funktion völlig gleich zu dem vorausgehenden Beispiel der vorzeichenbehafteten Rechtsverschiebung. In der vorzeichenbehafteten Rechtsverschiebungs- und Additionsoperation führt das Rechenwerk 230 die Funktion A + (B & C) aus, wenn das Vorzeichenbit des Eingangssignals in die Barrel-Rotationseinrichtung 235 gleich "0" ist. Wenn dieses Vorzeichenbit "1" ist, führt das Rechenwerk 230 die Funktion A + (B ~C) aus. In der bevorzugten Ausführungsform übersetzt der Assembler die Schreibweisen A - B » s(n) oder A - B » (n) in einen Befehl, der die Barrel- Rotationseinrichtung 235, den Maskengenerator 239 und das Rechenwerk 230 zum Ausführen einer vorzeichenbehafteten Rechtsverschiebungs- und Subtraktionsoperation steuert. Die vorzeichenbehaftete Rechtsverschiebungs- und Subtraktionsoperation funktioniert mit Ausnahme der Funktion des Rechenwerks 230 ähnlich zu dem vorausgehenden Beispiel einer einfachen vorzeichenbehafteten Rechtsverschiebung. Wenn das Vorzeichenbit "1" ist, führt das Rechenwerk 230 die Funktion A - (B & C) + 1 aus. Wenn das Vorzeichenbit "0" ist, führt das Rechenwerk 230 die alternative Funktion A - (B ~C) + 1 aus.
- Wie im Fall der Linksverschiebung und Subtraktion umfaßt die Operation "+1" das Einfügen eines Übertrags "1" von einer vorhergehenden Stelle an das niederwertigste Bit über den Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0.
- Die Barrel-Rotationseinrichtung 235, der Maskengenerator 237 und das Rechenwerk 230 können eine Feldauskopplung in einem einzigen Zyklus ausführen. Eine Feldauskopplung nimmt ein an irgendeiner beliebigen Bitstelle beginnendes Feld von Bits in einem Wort, entfernt die Bits außerhalb des Feldes und richtet das Feld rechtsbündig aus. Eine solche Feldauskopplung wird dadurch ausgeführt, daß das Wort um die zum rechtsbündigen Ausrichten des Feldes erforderliche Anzahl von Bits nach links gedreht und das Ergebnis der Rotation um die Anzahl der Bits in der Größe des Feldes maskiert wird. Anders als in den Fällen für die Verschiebung haben der Rotationsbetrag, der auf der Bitstelle beruht, und das Maskeneingangssignal, das auf der Feldgröße beruht, nicht notwendig den gleichen Betrag. Der Assembler der bevorzugten Ausführungsform verwendet die folgende Schreibweise für die Feldauskopplung:
- Field_Extract = (Value\\(32-starting_bit)) & %!Field size
- Der "%!"-Operator bewirkt, daß der Maskengenerator 237 eine Maske mit einer Anzahl rechtsbündiger "1"-en bildet, die mit Ausnahme eines Eingangssignals null gleich der Feldgröße ist. In diesem Fall sind sämtliche Bits der erzeugten Maske "1", so daß durch die logische UND-Operation keine Bits maskiert werden. Falls die Feldgröße größer als die Anfangsbitstelle ist, kann diese Rotation und Maskierung umgelaufene Bits erzeugen. Diese Parameter spezifizieren einen anormalen Fall, in dem das spezifizierte Feld über das Ende des ursprünglichen Wortes hinaus verläuft. Die Dateneinheit 110 liefert keine Hardware-Prüfung für diesen Fall. Es liegt in der Verantwortung des Programmierers, dieses Ergebnis zu verhindern. Das untenstehende Beispiel veranschaulicht die Feldauskopplung eines beim Bit 24, d. h. dem achten Bit von links, beginnenden 4 Bit-Feldes aus der Zahl Hex "5CFFFFA7". Die Zahl in Binärform ist:
- 0101 1100 1111 1111 1111 1111 1010 0111
- Um das Feld rechtsbündig auszurichten, muß die Zahl um 32 - 24 oder 8 Bits nach links gedreht werden. Das Ausgangssignal von der Barrel-Rotationseinrichtung 235 ist:
- 1111 1111 1111 1111 1010 0111 0101 1100
- Der Maskengenerator 237 bildet aus der Feldgröße von 4 Bits die folgende Maske:
- 0000 0000 0000 0000 0000 0000 0000 1111
- Schließlich bildet das Rechenwerk 230 die boolesche Kombination B & C. Dies erzeugt das ausgekoppelte Feld wie folgt:
- 0000 0000 0000 0000 0000 0000 0000 1100
- Das Mflags-Register 211 ist in einer Vielzahl von Bild- /Graphikverarbeitungsoperationen nützlich. Diese Operationen fallen in zwei Klassen. Die erste Klasse von Mflags-Operationen erfordert einen einzigen Durchlauf durch das Rechenwerk 230. Eine Zahl wird in das Mflags-Register 211 geladen und steuert über die Erweiterungsschaltung 238, den Multiplexer Cmux 233 und den C-Port des Rechenwerks 230 den Betrieb des Rechenwerks 230. Die Farberweiterung ist ein Beispiel dieser Eindurchlaufsoperationen. Die zweite Klasse der Mflags-Operationen erfordert zwei Durchläufe durch das Rechenwerk 230. Während eines ersten Durchlaufs werden anhand des Übertrags von Null- Ergebnissen des Rechenwerks 230 bestimmte Bits in dem Mflags-Register 211 gesetzt. Während eines zweiten Durchlaufs steuert der Inhalt des Mflags-Registers 211 über die Erweiterungsschaltung 238, den Multiplexer Cmux 233 und den C- Port des Rechenwerks 230 die Operation des Rechenwerks 230. Solche Zweidurchlauf-Mflags-Operationen sind besonders nützlich bei Verwendung der Mehrfacharithmetik. In diese zweite Klasse fallen zahlreiche Anpassungs- und Vergleichs-, Transparenz-, Minimum-, Maximum- und Sättigungsoperationen.
- Eine Graphikgrundoperation ist die Umsetzung eines Ein-Bit pro-Pixel-Form- Deskriptors in Pixelgröße-Größen. Diese wird häufig Farberweiterung genannt. Um sparsam mit Speicherplatz umzugehen, wird die Form der Bitmap- Textzeichensätze häufig als Formen mit einem Bit pro Pixel gespeichert. Diese Formen werden dann beim Zeichnen in den Anzeigespeicher auf die gewünschte Farbe bzw. auf die gewünschten Farben "erweitert". Allgemein wählen "1"-en in dem Form-Deskriptor eine "Eins-Farbe" aus, während "0"-en in dem Form- Deskriptor eine "Null-Farbe" auswählen. Eine häufig verwendete Alternative besitzt in dem Form-Deskriptor "0"-en, die als Platzsparer oder transparentes Pixel dienen.
- In dem folgenden Beispiel werden 4 Bits solcher Form-Deskriptor-Daten in 8-Bit- Pixel umgesetzt. In diesem Beispiel beträgt die Datengröße der Mehrfacharithmetikoperation 8 Bits. Somit arbeitet das Rechenwerk 230 in 4 unabhängigen 8-Bit-Abschnitten. Die vier Bits der Deskriptor-Daten "0110" werden in das Mflags-Register 211 geladen:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX0110
- Die als "X" aufgeführten Bits sind unbedeutende Bits, die an der Farberweiterungsoperation nicht beteiligt sind. Die Erweiterungsschaltung 238 erweitert diese vier Bits im Mflags-Register 211 wie folgt zu Blöcken von 8-Bit- "1"-en und -"0"-en:
- 00000000 11111111 11111111 00000000
- Die Eins-Farbe wird an den A-Port des Rechenwerks 230 geliefert, wobei sie für jedes der 4 Pixel in dem 32-Bit-Datenwort wiederholt wird:
- 11110000 11110000 11110000 11110000
- Die Null-Farbe wird an den B-Port des Rechenwerks 230 geliefert, wobei sie ebenfalls für jedes der 4 Pixel wiederholt wird:
- 10101010 10101010 10101010 10101010
- Das Rechenwerk 230 bildet die boolesche Kombination (A & C) (B & ~C), die folgendes liefert:
- 10101010 11110000 11110000 10101010
- Die Farberweiterung wird im allgemeinen bei einem PixBlt-Algorithmus verwendet. Um ein vollständiges PixBlt auszuführen, müssen die Daten gedreht und mit früheren Daten gemischt werden, um die Bits in den zu erweiternden Daten auf die Pixelausrichtung der Zielwörter auszurichten. Die Barrel- Rotationseinrichtung 235 und das Rechenwerk 230 können Wörter im Mflags- Register 211 ausrichten. Um das Beispiel einfach zu halten, wird bei diesem Beispiel angenommen, daß die Form-Deskriptor-Daten richtig ausgerichtet wurden. Außerdem wird angemerkt, daß das Mflags-Register 211 beim Setzen der Bits und Anwenden der Bits seine eigene Rotationsfähigkeit besitzt. Somit kann ein 32-Bit-Wort in das Mflags-Register 211 geladen und der obengenannte Befehl 8-mal wiederholt werden, um 32 erweiterte Pixel zu erzeugen.
- Die einfache Farberweiterung wie in dem obengenannten Beispiel erzwingt, daß das Ergebnis eine von zwei Vollfarben ist. Häufig ist es insbesondere bei Textbuchstaben mit Signatur, deren Rechteckkästen sich überschneiden können, erwünscht, die "1"-en in dem Form-Deskriptor auf die eine Farbe zu erweitern, während aber die "0"-en als Platzsparer oder transparente Pixel dienen. Bei der Verschiebung einer solchen transparenten Farbe ist der Zielpixelwert ungeändert. Die Dateneinheit 110 kann eine transparente Farberweiterung einfach dadurch ausführen, daß sie ein Register verwendet, das den ursprünglichen Inhalt des Ziels als das Nullwert-Eingangssignal enthält. Ein Beispiel hierfür erscheint unten. Das Rechenwerk 230 führt die gleiche Funktion wie im Beispiel der vorausgehenden Farberweiterung aus. Der einzige Unterschied besteht darin, daß das ursprüngliche Ziel zu einem der Eingangssignale in das Rechenwerk 230 wird. Die vier Bits der Deskriptor-Daten "0110" werden in das Mflags-Register 211 geladen:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX0110
- Die Erweiterungsschaltung 238 erweitert diese vier Bits im Mflags-Register 211 wie folgt auf Blöcke von 8-Bit-"1"-en und -"0"-en:
- 00000000 11111111 11111111 00000000
- Die Eins-Farbe wird an den A-Port des Rechenwerks 230 geliefert, wobei sie für jedes der vier Pixel in dem 32-Bit-Datenwort wiederholt wird:
- 11110000 11110000 11110000 11110000
- Die ursprünglichen Zieldaten werden an den B-Port des Rechenwerks 230 geliefert, wobei die ursprünglichen Zieldaten 4 Pixel enthalten:
- 11001100 10101010 11101110 11111111
- Das Rechenwerk 230 bildet wieder die boolesche Kombination (A & C) (B & ~C), die folgendes ergibt:
- 11001100 11110000 11110000 11111111
- Es wird angemerkt, daß das Ergebnis für Pixel, die einer "1" im Mflags-Register 211 entsprechen, die Eins-Farbe enthält, während es für Pixel, die einer "0" im Mflags-Register 211 entsprechen, den ursprünglichen Pixelwert enthält.
- Die Dateneinheit 110 kann anhand eines genauen Vergleichs einer Reihe von 8- Bit-Größen mit einem festen Vergleichswert eine 1-Bit-pro-Pixel-Maske erzeugen. Dies ist in dem untenstehenden Beispiel gezeigt. Der Vergleichswert wird in dem 32-Bit-Wort viermal wiederholt. Das Rechenwerk 230 subtrahiert den Wert des wiederholten Vergleichs von einem Datenwort mit vier der 8-Bit- Größen. Während dieser Subtraktion ist das Rechenwerk 230 in 4 Abschnitte zu jeweils 8 Bits aufgeteilt. Die in Fig. 7 gezeigten Null-Auswerteschaltungen 321, 322, 323 und 324 liefern im Mflags-Register 211 zu speichernde Daten. Um das Akkumulieren durch Drehen des Mflags-Registers 211 zu veranschaulichen, enthält dieses Beispiel zwei Befehle nacheinander. Anfangs speichert das Mflags- Register 211 unbedeutende Daten:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
- Die erste Größe für den Vergleich ist:
- 00000011 00001111 00000001 00000011
- Das Vergleichsergebnis ist "00000011". Dies wird in dem 32-Bit-Wort viermal wiederholt als:
- 00000011 00000011 00000011 00000011
- Das Rechenwerk 230 subtrahiert das Vergleichsergebnis von der ersten Größe. Die sich ergebende Differenz ist:
- 00000000 00001100 11111110 00000000
- Dies bildet die folgenden Null-Vergleiche "1001", die im Mflags-Register 211 gespeichert werden. In diesem Beispiel wird das Mflags-Register 211 vor Speichern der Null-Ergebnisse vorgelöscht. Somit ist das Mflags-Register 211:
- 00000000 00000000 00000000 00001001
- Die zweite Größe für den Vergleich ist
- 00000111 11111100 00000011 00000000
- Das Ergebnis einer zweiten Subtraktion desselben Vergleichswerts ist:
- 00000100 11111001 00000000 11111101
- Dies bildet die neuen Null-Vergleiche "0010", die nach der Rotation von vier Stellen im Mflags-Register 211 gespeichert werden:
- 00000000 00000000 00000000 10010010
- Bis das Mflags-Register 211 die 32 Bits speichert, können auf die gleiche Weise zusätzliche Vergleiche vorgenommen werden. Daraufhin kann der Inhalt des Mflags-Registers 211 in ein anderes Register bewegt oder in den Speicher geschrieben werden.
- Die Schwellwerterfassung umfaßt den Vergleich der Pixelwerte mit einem festen Schwellwert. Die Schwellwerterfassung setzt einen 1 Bit-Wert für jedes Pixel, der angibt, daß der Pixelwert größer oder kleiner als ein fester Schwellwert war. Je nach der besonderen Anwendung wird der Gleich-Fall entweder mit dem Größer- als-Fall oder mit dem Kleiner-als-Fall gruppiert. Die Dateneinheit 110 kann von dem Vergleichsergebnis in einem einzigen Rechenwerkszyklus programmiert werden. Das Rechenwerk 230 bildet die Differenz zwischen der zu testenden Größe und dem festen Schwellwert. Die Überträge für die nächsthöhere Stelle von jedem Abschnitt des Rechenwerks 230 werden im Mflags-Register 211 gesichert. Falls von der zu testenden Größe I der feste Schwellwert T subtrahiert wird, tritt ein Übertrag für die nächsthöhere Stelle nur dann auf, wenn I größer als oder gleich T ist. Wie oben festgestellt wurde, führt das Rechenwerk 230 eine Subtraktion durch eine Zweierkomplementaddition aus, wobei unter diesen Umständen ein Übertrag für die nächsthöhere Stelle ein Nicht-Borgen angibt. Unten findet sich ein Beispiel dieses Prozesses für vier 8-Bit-Größen, in denen der Schwellwert "00000111" ist. Die vier zu testenden 8-Bit-Größen I seien:
- 00001100 00000001 00000110 00000111
- Der viermal in dem 32-Bit-Wort wiederholte Schwellwert T ist:
- 00000111 00000111 00000111 00000111
- Die Differenz ist:
- 00000101 11111010 11111111 00000000
- was die folgenden Überträge "1001" für die nächsthöhere Stelle erzeugt. Dies führt zu einem Mflags-Register 211 von:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX1001
- Wie im Fall der Vergleichserfassung kann dieser Einzelbefehl für neue Daten mit einer Mflags-Register-Rotation wiederholt werden, bis 32 Bits gebildet sind. Bei der Addition zweier vorzeichenloser Zahlen gibt ein Übertrag für die nächsthöhere Stelle an, daß das Ergebnis größer ist, als das, welches in der Anzahl der Bits des Ergebnisses ausgedrückt werden kann. Dieser Übertrag für die nächsthöhere Stelle repräsentiert das höchstwertige Bit der Genauigkeit des Ergebnisses. Somit kann das Sichern der Überträge für die nächsthöhere Stelle im Mflags-Register 211 zum Aufrechterhalten der Genauigkeit verwendet werden. Diese Bits für den Übertrag für die nächsthöhere Stelle können für eine spätere Addition zur Erhaltung der Genauigkeit gesichert werden. Insbesondere bei Verwendung mit der Mehrfacharithmetik ermöglicht das Begrenzen der Genauigkeit auf weniger Bits häufig, daß der gleiche Prozeß in weniger Rechenwerkszyklen ausgeführt wird.
- Die Mflags-Operationen vom zweiten Typ verwenden sowohl das Setzen von Bits im Mflags-Register 211 als auch das Verwenden von im Mflags-Register 211 gespeicherten Bits zum Steuern der Operation des Rechenwerks 230. Die Mehrfacharithmetik kann in Verbindung mit Erweiterungen des Mflags-Registers 211 zum Ausführen mehrerer paralleler Byte- oder Halbwort-Operationen verwendet werden. Außerdem sind das Setzen von Bits im Mflags-Register 211 und das Erweitern des Mflags-Registers 211 für das Rechenwerk 230 Umsetzungen in einen inversen Raum, die in einer Vielzahl verschiedener Möglichkeiten verwendet werden können.
- Das untenstehende Beispiel zeigt eine Kombination eines arithmetischen 8-Bit- Mehrfach-Befehls, gefolgt von einem Befehl, der eine Erweiterung zum Ausführen einer Transparenzfunktion verwendet. Die Transparenz wird im allgemeinen beim Ausführen rechteckiger PixBlts von nicht rechteckigen Formen verwendet. Die transparenten Pixel werden als Platzsparerpixel verwendet, die das Ziel nicht beeinflussen und somit transparent sind, so daß das ursprüngliche Ziel durchscheint. Bei der Transparenz werden in dem Ziel nur diejenigen Pixel in der Quelle ersetzt, die nicht gleich dem Transparenz-Code sind. In einem ersten Befehl wird der Transparenz-Farb-Code von der Quelle subtrahiert, wobei das Mflags-Register 211 anhand von gleich null gesetzt wird. Falls eine gegebene 8- Bit-Größe mit dem Transparenz-Code übereinstimmt, wird im Mflags-Register 211 eine entsprechende "1" gesetzt. Der zweite Befehl verwendet die Erweiterungsschaltung 238 zum Erweitern des Mflags-Registers 211 zum Steuern der Auswahl der Quelle oder des Ziels auf pixelweiser Grundlage. Das Rechenwerk 230 führt die Funktion (A & C) (B & ~C) aus, um diese Auswahl vorzunehmen. Obgleich diese boolesche Funktion bitweise ausgeführt wird, ist das Mflags-Register 211 auf die Pixelgröße von 8 erweitert worden, so daß es zwischen Pixeln wählt. Die Pixelquelle ist:
- 00000011 01110011 00000011 00000001
- Der Transparenz-Code TC ist "00000011". Wenn dies viermal wiederholt wird, um das 32-Bit-Wort zu füllen, wird dies zu:
- 00000011 00000011 00000011 00000011
- Die Differenz SRC-TC ist:
- 00000000 01110000 00000000 11111110
- was die Null-Erfassungsbits "1010" erzeugt. Somit speichert das Mflags-Register 211
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX1010
- In dem zweiten Befehl erweitert die Erweiterungsschaltung 238 das Mflags- Register 211 auf:
- 11111111 00000000 11111111 00000000
- Das ursprüngliche Ziel DEST ist:
- 11110001 00110011 01110111 11111111
- Die ursprüngliche Quelle SRC bildet ein drittes Eingangssignal in das Rechenwerk 230. Daraufhin bildet das Rechenwerk 230 die boolesche Kombination (DEST & @MF) (SRC & ~@MF), d. h.:
- 11110001 00010011 01110111 00000001
- Es wird angemerkt, daß das Ergebnis den Zustand der Quelle hat, wenn die Quelle nicht transparent ist, während es andernfalls den Zustand des Ziels hat. Dies ist die Transparenzfunktion.
- Die Dateneinheit 110 kann unter Verwendung des Mflags-Registers 211 und zweier Rechenwerkszyklen Maximum- und Minimum-Funktionen ausführen. Die Maximum-Funktion nimmt den größeren von zwei vorzeichenlosen Pixelwerten als Ergebnis. Die Minimum-Funktion nimmt den kleineren von zwei vorzeichenlosen Pixelwerten als Ergebnis. In diesen Operationen führt der erste Befehl mehrere Subtraktionen aus, die anhand der Überträge für die nächsthöhere Stelle das Mflags-Register 211 setzen. Somit bildet das Rechenwerk 230 zur Statuseinstellung OP1 - OP2. Dieser erste Befehl setzt nur das Mflags-Register 211, wobei die resultierende Differenz verworfen wird. Bei der Ausführung der Maximum-Funktion des zweiten Befehls führt das Rechenwerk 230 die Operation (OP1 & @MF) (OP2 & ~@MF) aus. Diese bildet das Maximum der einzelnen Pixel. Der erste Operand OP1 sei
- 00000001 11111110 00000011 00000100
- während der zweite Operand OP2:
- 00000011 00000111 00000111 00000011
- sei. Die Differenz OP1-OP2 ist:
- 11111110 11110111 11111100 00000000
- Dies erzeugt die Überträge für die nächsthöhere Stelle (Nicht-Borgungen) "0101", was das Mflags-Register 211 als:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX0101
- setzt. In dem zweiten Befehl werden die vier niederwertigsten Bits im Mflags- Register 211 über die Erweiterungsschaltung 238 erweitert, was:
- 00000000 11111111 00000000 11111111
- erzeugt. Das Rechenwerk 230 führt die boolesche Funktion (OP1 & @MF) (OP2 & ~@MF) aus. Dies erzeugt das Ergebnis:
- 00000011 11111110 00000111 00000100
- Es wird angemerkt, daß jeder 8-Bit-Abschnitt des Ergebnisses den Zustand des größeren der entsprechenden Abschnitte von OP1 und OP2 hat. Dies ist die Maximum-Funktion. Die Minimum-Funktion funktioniert mit Ausnahme dessen, daß das Rechenwerk 230 in dem zweiten Befehl die boolesche Funktion (OP1 & ~@MF) (OP2 & @MF) ausführt, ähnlich wie die obenstehende Maximum-Funktion. Diese boolesche Funktion wählt für jeden 8-Bit-Abschnitt anstatt der größeren Größe die kleinere Größe aus.
- Außerdem kann die Dateneinheit 110 eine Addition-mit-Sättigung-Funktion ausführen. Die Addition-mit-Sättigung-Funktion funktioniert wie eine normale Addition, es sei denn, es tritt ein Überlauf auf. In diesem Fall klemmt die Addition-mit-Sättigung-Funktion das Ergebnis sämtlich auf "1"-en. Die Addition- mit-Sättigung-Funktion wird in der Graphik- und Bildverarbeitung im allgemeinen verwendet, um zu verhindern, daß kleine ganzzahlige Ergebnisse über die höchste Zahl hinaus zu einer kleinen Zahl zurück überlaufen. Das untenstehende Beispiel zeigt an vier 8-Bit-Pixeln in zwei Befehlen die Bildung der Addition-mit-Sättigung-Funktion unter Verwendung der Mehrfacharithmetik. Zunächst findet die Addition statt, bei der die Überträge für die nächsthöhere Stelle im Mflags-Register 211 gespeichert werden. Ein Übertrag für die nächsthöhere Stelle von "1" gibt einen Überlauf an, so daß diese Summe auf sämtlich "1"-en, d. h. auf den gesättigten Wert, zu setzen ist. Daraufhin erweitert die Erweiterungsschaltung 238 das Mflags-Register 211 zum Steuern der Auswahl der Summe oder des gesättigten Werts. Der erste Operand OP1 ist:
- 00000001 11111001 00000011 00111111
- Der zweite Operand OP2 ist:
- 11111111 00001011 00000111 01111111
- Das Rechenwerk 230 bildet die Summe OP1 + OP2 = RESULT, was zu:
- 00000000 00000100 00001010 10111110
- mit entsprechenden Überträgen für die nächsthöhere Stelle von "1100" führt. Diese werden im Mflags-Register 211 als:
- XXXXXXXX XXXXXXXX XXXXXXXX XXXX1100
- gespeichert. In dem zweiten Befehl erweitert die Erweiterungsschaltung 238 die vier niederwertigsten Bits des Mflags-Registers 211 auf:
- 11111111 11111111 00000000 00000000
- Das Rechenwerk 230 führt die boolesche Funktion RESULT @MF aus und bildet:
- 11111111 11111111 00001010 10111110
- Es wird angemerkt, daß das Ergebnis des zweiten Befehls gleich der Summe ist, wenn die Summe nicht übergelaufen ist, während es gleich "11111111" ist, wenn die Summe übergelaufen ist.
- Ähnlich kann die Dateneinheit 110 eine Subtraktion-mit-Sättigung-Funktion ausführen. Wenn kein Unterlauf auftritt, funktioniert die Subtraktion-mit- Sättigung-Funktion wie eine normale Subtraktion. In diesem Fall klemmt die Subtraktion-mit-Sättigung-Funktion das Ergebnis sämtlich auf "0"-en. Auch die Subtraktion-mit-Sättigung-Funktion kann im allgemeinen in der Graphik- und Bildverarbeitung verwendet werden. Die Dateneinheit 110 führt die Subtraktion- mit-Sättigung-Funktion ähnlich zu der obengezeigten Addition-mit-Sättigung- Funktion aus. Zunächst findet die Subtraktion statt, wobei die Überträge für die nächsthöhere Stelle im Mflags-Register 211 gespeichert werden. Ein Übertrag für die nächsthöhere Stelle von "0" gibt ein Borgen und somit einen Unterlauf an. In diesem Fall ist die Differenz sämtlich auf "0"-en, d. h. auf den gesättigten Wert, zu setzen. Daraufhin erweitert die Erweiterungsschaltung 238 das Mflags-Register 211 zum Steuern der Auswahl der Differenz oder des gesättigten Werts. Während dieses zweiten Befehls führt das Rechenwerk 230 die boolesche Funktion RESULT & @MF aus. Diese zwingt die Kombination, wenn der entsprechende Übertrag für die nächsthöhere Stelle "0" war, auf "0" und sättigt dadurch die Differenz sämtlich auf "0"-en. Falls andererseits der entsprechende Übertrag für die nächsthöhere Stelle "1" war, ist die boolesche Kombination das gleiche wie RESULT.
- Fig. 18 zeigt das Format des Befehlsworts für die digitalen Bild- /Graphikprozessoren 71, 72, 73 und 74. Das Befehlswort besitzt 64 Bits, die, wie in Fig. 18 gezeigt ist, allgemein in zwei parallele Abschnitte unterteilt sind. Die höchstwertigen 25 Bits des Befehlsworts (Bits 63-39) spezifizieren den Typ der durch die Dateneinheit 110 ausgeführten Operation. Die niederwertigsten 39 Bits des Befehlsworts (Bits 38-0) spezifizieren parallel zur Operation der Dateneinheit 110 ausgeführte Datenübertragungen. Es gibt fünf Formate A, B, C, D und E für die Operation der Dateneinheit 110. Es gibt zehn Typen von Datenübertragungsformaten 1 bis 10. Als Alternative zum Spezifizieren von Datenübertragungen kann das Befehlswort einen 32-Bit-Sofortwert spezifizieren. Beim Spezifizieren eines 32-Bit-Sofortwerts wird das Befehlswort nicht in die obengenannten zwei Abschnitte unterteilt, wobei dies die Ausnahme von der allgemeinen Vorschrift ist. Viele Befehle führen Operationen aus, die die Dateneinheit 110 nicht nutzen. Je nach Befehl können diese Befehle parallele Datenübertragungsoperation zulassen oder können parallele Datenübertragungsoperation verboten sein. In anderer Hinsicht sind die für die Dateneinheit 110 spezifizierten Operationen von den für die Datenübertragung spezifizierten Operationen unabhängig.
- Die Befehlswortalternativen werden wie folgt zusammengefaßt. Die Operation der Dateneinheit 110 kann eine einzelne Rechenwerksoperation oder eine einzelne Multiplikation sein oder es kann jeweils eine von ihnen parallel ausgeführt werden. Sämtliche Operationen der Dateneinheit 110 können anhand eines Feldes in dem Befehlswort bedingt gemacht werden. Die parallelen Datenübertragungen werden am lokalen Port 141 und am globalen Port 145 der Datenporteinheit 140 zum und/oder vom Speicher ausgeführt. In dem Befehlswort werden zwei Datenübertragungsoperationen unabhängig spezifiziert. Mit einer Wahl des Register- oder Distanzadressenindex werden für jeden Speicherzugriff zwölf Adressierungsbetriebsarten unterstützt. Anstelle eines Speicherzugriffs über den globalen Port 145 kann in dem Befehlswort eine interne Register-Register- Übertragung in der Dateneinheit 110 spezifiziert werden. Wenn eine Operation der Dateneinheit 110 ein Nicht-Dateneinheitsregister als Quelle oder Ziel verwendet, spezifiziert ein Teil des Abschnitts für parallele Datenübertragungen des Befehlsworts zusätzliche Registerinformationen, wobei der Quelldatenbus für den globalen Port Gsrc 105 und der Zieldatenbus für den globalen Port Gdst 107 die Daten zu und von der Dateneinheit 110 übertragen.
- Ein Teil des Befehlsworts, der normalerweise die Datenübertragung über den lokalen Bus spezifiziert, besitzt eine alternative Verwendung. Diese alternative Verwendung ermöglicht eine bedingte Operation der Dateneinheit 110 und/oder einen globalen Speicherzugriff oder eine Register-Register-Bewegung. Bei der Operation der Dateneinheit 110 wird eine begrenzte bedingte Quellenauswahl unterstützt. Das Ergebnis der Dateneinheit 110 kann bedingt gesichert oder verworfen werden, wobei eine Operation vorteilhaft bedingt ausgeführt wird, ohne daß eine Verzweigung erfolgen muß. Die Aktualisierung jedes einzelnen Bits eines Statusregisters kann ebenfalls bedingt ausgewählt werden. Bedingte Speicheroperationen in den Speicher wählen zwischen zwei Registern. Bedingte Ladeoperationen aus dem Speicher laden oder verwerfen die Daten. Bedingte Register-Register-Bewegungsoperationen schreiben entweder in das Ziel oder verwerfen die Daten.
- Es folgt eine Beschreibung der Typen der Befehlswörter aus Fig. 18 und eine Erläuterung oder ein Glossar verschiedener Bits und Felder der fünf Dateneinheitsoperationsformate. Die Bits und Felder definieren nicht nur die Befehlswörter, sondern auch die Schaltungsanordnung, die die Befehlswörter gemäß den spezifizierten Logikbeziehungen decodiert. Diese Schaltungsanordnung reagiert auf ein besonderes Bit oder Feld oder auf eine logische Kombination der Befehlswörter, um die besondere(n) repräsentierte(n) Operation(en) auszuführen. Dementsprechend definiert in dieser Technik die Spezifizierung der Bits, Felder, Formate und Operationen wichtige und vorteilhafte Merkmale der bevorzugten Ausführungsform und spezifiziert dementsprechend die Logikschaltungsanordnung zum Decodieren oder Realisieren der Befehlswörter. Diese Schaltungsanordnung wird anhand dieser Spezifikation durch den Fachmann in einer programmierbaren Logikanordnung (PLA) oder in Form anderer Schaltungen, die jetzt bekannt sind oder in Zukunft konstruiert werden, unkompliziert realisiert. Auf die Beschreibung des Befehlswortformats folgt eine Beschreibung der zulässigen Operationskombinationen.
- Das Dateneinheitsformat A wird über das Bit 63 = "1" und über das Bit 44 = "0" erkannt. Das Dateneinheitsformat A spezifiziert eine Rechenwerks- Grundoperation mit einem 5-Bit-Sofortfeld. Das "Klasse"-Feld (Bits 62-60) bezeichnet die Datenlenkung in der Dateneinheit 110 in bezug auf das Rechenwerk 230. Tabelle 18 zeigt die Definition der Datenlenkungen entsprechend dem "Klasse"-Feld für die Dateneinheitsformate A, B und C. Tabelle 18
- In Tabelle 18 ist "Eingang A" die durch den Amux 232 für den Bus 241 für den Eingang A ausgewählte Quelle. Die Quelle "src2/im" ist entweder, im Dateneinheitsformat A, der Fünfbit-Sofortwert des "immed"-Feldes (Bits 43-39), oder, im Dateneinheitsformat B, das mit dem "src2"-Feld (Bits 41-39) bezeichnete Datenregister 200 oder, im Dateneinheitsformat C, der 32-Bit-Sofortwert des "32- Bit-Sofort"-Feldes (Bits 31-0). Die Quelle "dstc" ist ein Begleitdatenregister 200 für das Ziel des Ergebnisses des Rechenwerks 230. Dieses Begleitdatenregister 200 besitzt ein Registerziel mit den oberen vier Bits gleich "0110", wodurch eines der Datenregister 200 spezifiziert wird, und mit drei durch das "dst"-Feld (Bits 50-48) spezifizierten unteren Bits. Die Begleitregister werden bei den Übertragungsformaten 6 und 10 verwendet, die ein "Adstbnk"-Feld (Bits 21-18) zum Spezifizieren der Registerbank des Ziels und ein "As1bank" (Bits 9-6) zum Spezifizieren der Registerbank des Eingangs B verwenden. Da das Ziel keines der Datenregister 200 ist, ist dies als Fernziel bekannt. Somit können eine Quelle und das Ziel verschiedene Registerbänke mit den gleichen Registernummern besitzen. Tabelle 19 zeigt anhand der in dem "Adstbnk"-Feld spezifizierten Registerbank die Begleitregister zu verschiedenen anderen digitalen Bild- /Graphikprozessorregistern. Es wird angemerkt, daß dieses Quellregister bei irgendwelchen anderen Übertragungsformaten das Datenregister 200 mit der durch das "dst"-Feld spezifizierten Registernummer ist. Tabelle 19
- In Tabelle 19 gibt "--" ein reserviertes Register an. Es wird angemerkt, daß die Registerbänke "0110", "1000", "1001", "1010" oder "1011" in Tabelle 19 nicht aufgeführt sind. Sämtliche Register in diesen Bänken sind entweder reserviert oder Emulationsfunktionen zugeordnet und werden normalerweise nicht als Fernziele verwendet.
- In Tabelle 18 ist "Eingang B" die Quelle für die Barrel-Rotationseinrichtung 235, die den Bus 242 für den Eingang B beliefert. Die mit "src1" bezeichnete Quelle "Eingang B" ist dasjenige Datenregister 200, das durch das "src1"-Feld (Bits 47-45) in den Dateneinheitsformaten A und B oder durch die Registerbank des "s1bank"-Feldes (Bits 38-36) und durch die Registernummer des "src1"-Feldes (Bits 48-45) angegeben ist, wobei diese irgendwelche der 64 unteren adressierbaren Register in der Dateneinheit 110 im Datenformat C sein können. Die Quelle "Hex 1" für "Eingang B" ist die 32-Bit-Konstante gleich "1" aus dem Puffer 236. Der "Eingang C" ist in Tabelle 18 die durch den Cmux 233 ausgewählte Quelle für den Bus 243 für den Eingang C.
- Die Quelle "@MF" für den "Eingang C" ist eines oder mehrere Bits aus dem Mehrmerkerregister 211, die durch die Erweiterungsschaltung 238 gemäß dem "Msize"-Feld (Bits 5-3) des Statusregisters 210 erweitert wurden. Die Definition des "Msize"-Feldes des Statusregisters 210 ist in Tabelle 2 enthalten. Die Quelle "src2/im" wurde zuvor in Verbindung mit der Quelle "Eingang A" beschrieben. Die Quelle "mask" ist das Ausgangssignal des Maskengenerators 239. "maskgen" ist in Tabelle 18 die durch den Mmux 234 für den Maskengenerator 239 ausgewählte Quelle. Diese Quelle kann wie zuvor beschrieben "src2/im" oder "D0(4-0)", d. h. der voreingestellte Barrel-Rotationsbetrag des "DBR"-Feldes (Bits 4-0) des Datenregisters D0, sein. "rotate" ist in Tabelle 18 die durch den Smux 231 ausgewählte Quelle zur Steuerung des Rotationsbetrags der Barrel- Rotationseinrichtung 235. Diese Quelle kann "0" sein, was keine Rotation liefert, kann "D0(4-0)" sein, was der voreingestellte Barrel-Rotationsbetrag des "DBR"- Feldes (Bits 4-0) des Datenregisters D0 ist, oder kann wie zuvor beschrieben "src2/im" sein.
- Das "ari"-Bit (Bit 59) gibt an, ob das Rechenwerk 230 der Dateneinheit 110 für eine arithmetische Operation oder für eine boolesche logische Operation verwendet wird. Wenn das "ari"-Bit "1" ist, findet eine arithmetische Operation statt, während eine boolesche logische Operation stattfindet, wenn es "0" ist.
- Das Dateneinheitsformat A ermöglicht die Befehlwortspezifizierung der Operation des Rechenwerks 230. Das "8-Bit-ALU-Code"-Feld (Bits 58-51) bezeichnet die vom Rechenwerk 230 ausgeführte Operation. Falls das "ari"-Bit "1" ist, bezeichnet dieses Feld eine arithmetische Operation. Wenn das der Fall ist, bezeichnen die "8-Bit-ALU-Code"-Bits 57, 55, 53 und 51 die arithmetische Operation gemäß Tabelle 14, modifiziert durch das "FMOD"-Feld, das gemäß Tabelle 6 die "8-Bit-ALU-Code"-Bits 58, 56, 54 und 52 enthält. Wenn das "ari"- Bit "0" ist, ist dies eine boolesche Operation, wobei das "8-Bit-ALU-Code"-Feld gemäß Tabelle 13 in die Funktionssignale F7-F0 übersetzt. Die Einzelheiten dieser Codierungen wurden oben in Verbindung mit der Beschreibung der Dateneinheit 110 beschrieben.
- Das Dateneinheitsformat A bezeichnet zwei Quellen und ein Ziel für das Rechenwerk 230. Das "dst"-Feld (Bits 50-48) bezeichnet ein Register als das Ziel für das Rechenwerk 230. Je nach Übertragungsformat kann das "dst"-Feld über die Registernummer auf eines der Datenregister 200 Bezug nehmen oder kann die Registernummer des "dst"-Feldes in Verbindung mit einer Registerbank zum Spezifizieren eines Fernregisters verwendet werden. Das "src1"-Feld (Bits 47-45) bezeichnet ein Register als die erste Quelle für das Rechenwerk 230. Je nach Übertragungsformat kann dies eines der Datenregister 200 sein oder kann es in Verbindung mit einer Registerbank zum Spezifizieren eines Fernregisters verwendet werden. Das "immed"-Feld (Bits 43-39) bezeichnet einen 5-Bit- Sofortwert, der als die zweite Quelle für das Rechenwerk 230 verwendet wird. Im Gebrauch wird dieser 5-Bit-Sofortwert auf 32 Bits nullerweitert. Die Verwendung der Registerbänke wird unten in Verbindung mit der Beschreibung der Übertragungsformate weiter diskutiert.
- Das Speichern des Ergebnisses in dem Zielregister findet nur dann statt, wenn die in dem "cond."-Feld vermerkte Bedingung wahr ist. Das "cond."-Feld (Bits 35-32) bezeichnet die Bedingungen für eine bedingte Operation. Es wird angemerkt, daß dieses "cond."-Feld in den allgemein für das Übertragungsformat verwendeten Teil des Befehlsworts fällt. Die Übertragungsformate 7, 8, 9 und 10 enthalten dieses Feld. Somit findet eine bedingte Speicherung des Ergebnisses des Rechenwerks 230 nur dann statt, wenn diese Übertragungsformate verwendet werden. In der bevorzugten Ausführungsform wird das "cond."-Feld wie unten in Tabelle 20 gezeigt decodiert. Tabelle 20
- Die Bedingungen werden mit Bezug auf das Statusregister 210 erfaßt. Wie zuvor beschrieben wurde, speichert das Statusregister 210 mehrere Bits in bezug auf die Bedingung des Ausgangssignals des Rechenwerks 230. Diese Bedingungen umfassen negativ, Übertrag, Überlauf und null. Die bedingte Operation des Rechenwerks 230 in bezug auf das Statusregister 210 wurde oben in Verbindung mit der Beschreibung der Dateneinheit 110 genau geschildert.
- Das Dateneinheitsformat B wird durch Bit 63 = "1", Bit 44 = "0", erkannt. Das Dateneinheitsformat B spezifiziert eine Rechenwerks-Grundoperation mit einem für die zweite Quelle des Rechenwerks 230 spezifizierten Register. Wie zuvor in Verbindung mit Tabelle 18 beschrieben wurde, bezeichnet das "Klasse"-Feld die Datenlenkung in der Dateneinheit 110. Das "ari"-Bit gibt an, ob das Rechenwerk 230 der Dateneinheit 110 für eine arithmetische Operation oder für eine boolesche logische Operation verwendet wird. Das "8-Bit-ALU-Code"-Feld gibt die durch das Rechenwerk 230 in der obenbeschriebenen Weise ausgeführte Operation an. Das "src2"-Feld (Bits 41-39) gibt eines der Datenregister 200 als die zweite Quelle für das Rechenwerk 230 an. Im Dateneinheitsformat B ist die zweite Quelle für das Rechenwerk 230 das im "src2"-Feld angegebene Datenregister. Einige Datenübertragungsformate ermöglichen die Angabe der Registerbänke für die erste Quelle und das Ziel des Rechenwerks 230. In anderer Hinsicht ist das Dateneinheitsformat B das gleiche wie das Dateneinheitsformat A.
- Das Dateneinheitsformat C wird durch Bit 63 = "1", Bit 44 = "1" und Bit 43 = "1" erkannt. Das Dateneinheitsformat C spezifiziert eine Rechenwerks- Grundoperation mit einem 32-Bit-Sofortfeld. Wie zuvor in Verbindung mit Tabelle 18 beschrieben wurde, gibt das "Klasse"-Feld die Datenlenkung in der Dateneinheit 110 an. Das "ari"-Bit gibt an, ob das Rechenwerk 230 der Dateneinheit 110 für eine arithmetische Operation oder für eine boolesche logische Operation verwendet wird. Wie oben beschrieben wurde, gibt das "8-Bit- ALU-Code"-Feld die von dem Rechenwerk 230 ausgeführte Operation an. Die erste Quelle ist das von dem "src1"-Feld angegebene Datenregister. Die zweite Quelle ist der 32-Bit-Sofortwert des "32-Bit imm."-Feldes (Bits 31-0). Dieses Dateneinheitsformat läßt keinen Platz zum Spezifizieren paralleler Datenübertragungen, so daß keine zulässig sind. Das "dstbank"-Feld (Bits 42-39) gibt eine Registerbank in der Dateneinheit 110 an. Das "dstbank"-Feld wird mit dem "dst"-Feld (Bits 50-48) zur Angabe irgendeines der 64 Register der Dateneinheit 110 als Ziel für das Rechenwerk 230 verwendet. Das "s1bnk"-Feld (Bits 38-36) gibt eine Registerbank in der Dateneinheit 110 an. Diese Angabe ist auf eine untere Hälfte der Register der Dateneinheit 110 beschränkt und wird mit dem "src1"-Feld zur Angabe irgendeines der 64 unteren Halbregister in der Dateneinheit 110 als die erste Quelle für das Rechenwerk 230 verwendet. Die Operationen können in einer unten genau geschilderten Weise anhand des "cond."-Feldes (Bits 35-32) bedingt gemacht werden.
- Das Dateneinheitsformat D besitzt Bit 63 = "1", Bit 44 = "0", während das "Klasse"-Feld "000" ist, das Bit 59 = "1" ist (was normalerweise im Gegensatz zu einer booleschen logischen Operation eine arithmetische Operation auswählt) und die Bits 57, 55, 53 und 51 des "8-Bit-ALU-Codes" sämtlich "0" sind. Das Dateneinheitsformat D spezifiziert Nicht-Rechenwerksoperationen. Das "Operation"-Feld (Bits 43-39) gibt eine Nicht-Rechenwerksoperation an. In der bevorzugten Ausführungsform wird dieses "Operation"-Feld wie unten in Tabelle 21 gezeigt decodiert.
- 00000 keine Operation
- 00001 Leerlauf
- 00010 Freigabe globaler Unterbrechungen
- 00011 Sperrung globaler Unterbrechungen
- 00100 Verriegelung der Synchronisation des Befehlsholens
- 00101 Entriegelung der Synchronisation des Befehlsholens
- 00110 reserviert
- 00111 Rotation der D-Register nach rechts 1
- 01000 Null
- 01001 Anhalten der Befehlsausführung
- 01010 reserviert
- 01011 reserviert
- 01100 Gehen zur Emulatorunterbrechung
- 01101 Ausgeben der Emulatorunterbrechung 1
- 01110 Ausgeben der Emulatorunterbrechung 2
- 01111 reserviert
- 1XXXX reserviert
- Die Nicht-Rechenwerksbefehle Null, Anhalten der Befehlsausführung, Gehen zur Emulatorunterbrechung, Ausgeben der Emulatorunterbrechung 1 und Ausgeben der Emulatorunterbrechung 2 verhindern parallele Datenübertragen. Irgendwelche in dem Befehlswort spezifizierten parallelen Datenübertragungen werden ignoriert. Die anderen Nicht-Rechenwerksbefehle ermöglichen parallele Datenübertragungen.
- Das Dateneinheitsformat E wird dadurch erkannt, daß die Bits 63-61 "011" sind. Das Dateneinheitsformat E spezifiziert parallele Rechenwerks- und Multiplikationsoperationen. Diese Operationen werden wegen der sechs in diesem Format spezifizierten Operanden als "Sechsoperandenoperationen" bezeichnet. In der bevorzugten Ausführungsform spezifiziert das "Operation"-Feld (Bit 60-57) die unten in Tabelle 22 gezeigten Operationen. Das Symbol " " gibt an, daß die aufgeführten Operationen in der Dateneinheit 110 parallel stattfinden. Es wird angemerkt, daß lediglich 11 der 16 möglichen Operationen definiert sind.
- 0000 MPYS ADD
- 0001 MPYS SUB
- 0010 MPYS EALUT
- 0011 MPYS EALUF
- 0100 MPYU ADD
- 0101 MPYU EUB
- 0110 MPYU EALUT
- 0111 MPYU EALUF
- 1000 EALU ROTATE
- 1001 EALU% ROTATE
- 1010 DIVI
- 1011 reserviert
- 1100 reserviert
- 1101 reserviert
- 1110 reserviert
- 1111 reserviert
- Die Mnemoniken für diese Operationen wurden oben definiert. Als Übersicht: MPYS ADD bezeichnet eine parallele vorzeichenbehaftete Multiplikation und Addition; MPYS SUB bezeichnet eine parallele vorzeichenbehaftete Multiplikation und Subtraktion; MPYS EALUT bezeichnet eine parallele vorzeichenbehaftete Multiplikation und erweiterte Rechenwerks-Wahr-Operation; MPYS EALUF bezeichnet eine parallele vorzeichenbehaftete Multiplikation und erweiterte Rechenwerks-Falsch-Operation; MPYU ADD bezeichnet eine parallele vorzeichenlose Multiplikation und Addition; MPYU SUB bezeichnet eine parallele vorzeichenlose Multiplikation und Subtraktion; MPYU EALUT bezeichnet eine parallele vorzeichenlose Multiplikation und erweiterte Rechenwerks-wahr-Operation; MYFU EALUF bezeichnet eine parallele vorzeichenlose Multiplikation und erweiterte Rechenwerks-falsch-Operation; EALU ROTATE bezeichnet eine erweiterte Rechenwerksoperation, bei der das Ausgangssignal der Barrel-Rotationseinrichtung 235 getrennt gespeichert wird; EALU% ROTATE bezeichnet eine erweiterte Rechenwerksoperation unter Verwendung einer durch den Maskengenerator 239 erzeugten Maske, bei der das Ausgangssignal der Barrel-Rotationseinrichtung 235 getrennt gespeichert wird; und DIVI bezeichnet eine Divisions-Iterations-Operation, die bei der Division verwendet wird. Die Rechenwerksoperation in einem MPYx EALUT-Befehl wird durch das "EALU"-Feld (Bits 19-26) des Datenregisters D0 ausgewählt, wobei das "A"-Bit (Bit 27) entweder eine arithmetische Operation oder eine logische Operation, die durch das "FMOD"- Feld (Bits 31-28) modifiziert wurde, auswählt. Die Codierung dieser Felder ist oben beschrieben worden. Mit Ausnahme dessen, daß der Sinn der Bits des "EALU"-Feldes umgekehrt ist, wird die Rechenwerksoperation in dem MPYx EALUF-Befehl ähnlich ausgewählt. Die Rechenwerksoperationen für die Befehle EALU und EALU% werden ähnlich ausgewählt. Diese Operationen verwenden einen Teil des Datenregisters D0 der Dateneinheit 110 zum Spezifizieren der Rechenwerksoperation. Das Datenregister D0 wird mit dem gewünschten Code für die erweiterte Rechenwerksoperation vorgeladen. Die DIVI-Operation wird unten weiter genau geschildert. Parallel zur Operation der Dateneinheit 110 kann irgendein Datenübertragungsformat spezifiziert werden.
- Im Dateneinheitsfeld E werden sechs Operanden spezifiziert. Es gibt vier Quellen und zwei Ziele. Das "src3"-Feld (Bits 56-54) gibt eines der Datenregister 200 als die dritte Quelle an. Dies ist das erste Eingangssignal für den Multiplizierer 220, wenn eine Multiplikationsoperation spezifiziert ist, während dies andernfalls der Barrel-Rotationsbetrag der Barrel-Rotationseinrichtung 235 ist. Das "dst2"-Feld (Bits 53-51) gibt eines der Datenregister 200 als das zweite Ziel an. Falls der Befehl eine Multiplikationsoperation spezifiziert, ist "dst2" das Ziel für den Multiplizierer 220. Andernfalls spezifiziert "dst2" das Ziel für das Ausgangssignal der Barrel-Rotationseinrichtung 235. Das "dst1"-Feld (Bits 50-48) gibt eines der Datenregister 200 als das Ziel für das Rechenwerk 230 an. Das "src1"-Feld (Bits 47-45) gibt ein Register als das erste Eingangssignal für das Rechenwerk 230 an. Falls dieser Befehl ein Übertragungsformat 6 oder 10 enthält, das ein "As1bank"- Feld (Bits 9-6) enthält, kann dieses Quellregister irgendein Register in der Dateneinheit 110 sein, wobei das "As1bank"-Feld die Registerbank angibt, während das "sr1"-Feld die Registernummer angibt. In diesem Fall können diese Daten nicht durch die Barrel-Rotationseinrichtung 235 gedreht werden. Dies wird als Fern-Rechenwerksoperation bezeichnet. Für andere Übertragungsformate spezifiziert das "src1"-Feld über die Registernummer eines der Datenregister 200. Die Übertragungsformate 7, 8, 9 und 10 ermöglichen, daß anhand des "N"-Bits des Statusregisters 210 aus einem Paar von Datenregistern 200 die Registerquelle bedingt ausgewählt wird. Wenn das "N"-Bit (Bit 31) des Statusregisters 211 "1" ist, wird das angegebene Datenregister als die erste Quelle für das Rechenwerk 230 ausgewählt. Wenn das "N"-Bit "0" ist, wird das um eins kleinere Datenregister ausgewählt. Wenn diese Option verwendet wird, muß die Registernummer des "src1"-Feldes ungerade sein. Das "src4"-Feld (Bits 44-42) gibt eines der Datenregister 200 als den zweiten Eingang für den Multiplizierer 220 an. Das "srcA4"-Feld (Bits 41-39) gibt eines der Datenregister 200 als Eingang für die Arithmetik-/Logikeinheit 230 an.
- Tabelle 23 zeigt die Datenpfadverbindungen für einige der im Dateneinheitsformat E unterstützten Operationen. Eingang C ist das durch den Multiplexer Cmux 233 ausgewählte an den Bus 243 für den Eingang C angelegte Signal. Maskgen ist das durch den Multiplexer Mmux 234 ausgewählte an den Maskengenerator 239 angelegte Signal. Rotate ist das durch den Multiplexer Smux 231 ausgewählte an den Steuereingang der Barrel-Rotationseinrichtung 235 gelieferte Signal. Produktlinksverschiebung ist das an den durch den Multiplikationsverschiebungs-Multiplexer MSmux 225 ausgewählten Steuereingang der Produktlinksverschiebungseinrichtung 224 gelieferte Signal. Es wird angemerkt, daß der Spezialfall der DIVI-Operation später beschrieben wird. Tabelle 23
- Für alle sechs in Tabelle 23 aufgeführten Sechsoperandenbefehle ist der erste Eingang in den Multiplizierer 220 am Bus 201 das durch das "src3"-Feld (Bits 56-54) angegebene Register, während der zweite Eingang in den Multiplizierer 220 am Bus 202 das durch das "src4"-Feld (Bits 44-42) angegebene Register, der Eingang in die Barrel-Rotationseinrichtung 235 das durch das "src1"-Feld (Bits 41-39) angegebene Register und der Eingang in den Bus 241 für den Eingang A das durch das "src2"-Feld (Bits 47-45) angegebene Register ist. Außerdem wird angemerkt, daß der Multiplizierer 220 in den EALU- und EALU%-Befehlen nicht verwendet wird, während statt dessen die Ergebnisse der Barrel- Rotationseinrichtung 235 über den Multiplexer Bmux 227 in dem durch das "dst2"-Feld (Bits 53-51) angegebenen Register gesichert werden.
- Die DIVI-Operation verwendet das Rechenwerk 230, während sie den Multiplizierer 220 nicht verwendet. Die DIVI-Operation kann in einer verschachtelten Schleife für die vorzeichenlose Division verwendet werden. Die vorzeichenbehaftete Division kann mit zusätzlichen Einrichtungs- und Reinigungsbefehlen zur Behandlung des Vorzeichens des Quotienten realisiert sein. Es ist im Gebiet wohlbekannt, daß die Division die in Computern am schwierigsten zu realisierende der vier arithmetischen Grundoperationen (Addition, Subtraktion, Multiplikation und Division) ist.
- Der DIVI-Befehl verwendet die Hardware der Dateneinheit 110 zum Berechnen einer Ziffer des gewünschten Quotienten pro Ausführungspipeline-Stufe, nachdem diese eingerichtet ist. Es wird angemerkt, daß der DIVI- Dateneinheitsbefehl nur mit einem Datenübertragungsformat verwendet werden kann, das bedingte Datenübertragungen (und folglich bedingte Dateneinheitsoperationen) unterstützt. Diese Datenübertragungsformate 7, 8, 9 und 10 werden unten umfassend beschrieben. Der Multiplexer Amux 232 wählt durch das "src2"-Feld angegebene Daten vom Datenregister 200b auf dem ersten Rechenwerks-Eingangsbus 205 aus, um sie über den Bus 241 für den Eingang A an das Rechenwerk 230 zu liefern. Der Multiplexer Imux 222 wählt die Konstante Hex "1" zum Liefern an den zweiten Multiplizierer-Eingangsbus 202 aus, während der Multiplexer Smux 231 diese Hex "1" auf dem zweiten Multiplizierer- Eingangsbus 202 zum Liefern an den Rotationsbus 244 auswählt. Die Daten aus einem der durch das "src1"-Feld angegebenen Datenregister 200 werden an die Barrel-Rotationseinrichtung 235 geliefert. Dieses Register kann nur das Datenregister D7, D5, D3 oder D1 sein, wobei es eine bedingte Registerquelle ist, die anhand des "N"-Bits (Bit 31) des Statusregisters 210 durch den Multiplexer 215 ausgewählt wird. Wenn das "N"-Bit des Statusregisters 210 "0" ist, wird das durch das "src1"-Feld angegebene Datenregister 200a ausgewählt. Mit Ausnahme des entgegengesetzten Sinns verwendet diese Registerauswahl vorzugsweise die gleiche Hardware, die zur Schaffung der bedingten Registerauswahl in anderen Befehlen, die das Rechenwerk 230 verwenden, verwendet wird. Diese Registerauswahl kann über einen Multiplexer oder durch Ersetzen des Inversen des "N"-Bits des Statusregisters 210 für das niederwertigste Bit des Registerfelds während der Spezifikation des Registers erreicht werden. Wenn das "N"-Bit des Statusregisters 210 gleich "1" ist, wird dasjenige Datenregister 200c ausgewählt, das um eins kleiner als das durch das "src1"-Feld angegebene Register ist. Die Barrel-Rotationseinrichtung 235 dreht diese Daten um ein Bit nach links und liefert das Ergebnis über den Bus 241 für den Eingang B an das Rechenwerk 230. Das Ausgangssignal der Barrel-Rotationseinrichtung 235 wird außerdem über den Multiplexer Bmux 227 in das Datenregister 200a gesichert, wobei das Bit 31 des Mehrmerkerregisters 211 (vor der Rotation) für das Bit 0 des Ausgangssignals der Barrel-Rotationseinrichtung 235 ersetzt wird. Dieses Zielregister ist das durch das "src1"-Feld angegebene Register. Der Multiplexer Mmux 234 wählt die Konstante Hex "1" auf dem zweiten Multiplizierer-Eingangsbus 202 zum Liefern an den Maskengenerator 239 aus. Der Multiplexer Cmux 233 wählt das Ausgangssignal vom Maskengenerator 239 zum Liefern über den Bus 243 für den Eingang C an das Rechenwerk 230 aus. Der Generator 246 für den Übertrag von einer vorhergehenden Stelle an das Bit 0 liefert das Bit 31 des Mehrmerkerregisters 211 (vor der Rotation) an den Eingang für einen Übertrag von einer vorhergehenden Stelle des Rechenwerks 230.
- Das Rechenwerk 230 empfängt während des DIVI-Befehls einen Funktionscode F7-F0 von Hex "A6". Dies bewirkt, daß das Rechenwerk 230 die Eingangssignale auf dem Bus 241 für den Eingang A und auf dem Bus 242 für den Eingang B addiert und das Ergebnis mit null erweitert nach links schiebt. Diese Linksverschiebung erfolgt wegen der als Antwort auf das Eingangssignal Hex "1" vom Maskengenerator 239 gelieferten Maske um ein Bit. Diese Funktion ist mnemonisch A + B < 0 < . Das Ergebnis des Rechenwerks 230 wird in dem durch das "dst1"-Feld angegebenen Datenregister 200c gespeichert. Das Mehrmerkerregister 211 wird um ein Bit gedreht, wobei das niederwertigste Bit (Bit 0) des Mehrmerkerregisters 211 gemäß dem vom Rechenwerk 230 erzeugten Ergebnis gesetzt wird. Dasselbe Bit wird in dem "N"-Bit (Bit 31) des Statusregisters 210 gespeichert. Das ODER-Gatter 247 bildet dieses im Mehrmerkerregister 211 und im Statusregister 210 gespeicherte Bit aus dem cout des Rechenwerks 230, das mit Bit 31 des Eingangssignals in die Barrel- Rotationseinrichtung 235 ODER-kombiniert wird. Es wird angemerkt, daß die anderen Bits des Statusregisters 210, "C", "V" und "Z", normal gesetzt werden. Wenn die Daten im Datenregister 200a X, die Daten im Datenregister 200b Y und die Daten im Datenregister 200c Z sind, bildet der DIVI-Befehl X = X « 1 und Z = X[n]Z + Y. Die Mnemonik "n" gibt anhand des Statusregisterbits N die Registerquellenauswahl an.
- Der DIVI-Befehl funktioniert in der Weise, daß er Iterationen eines Divisionsalgorithmus mit bedingter Subtraktion und Verschiebung ausführt. Dieser Befehl kann für einen 32-Bit-Zähler, der durch einen 16-Bit-Divisor geteilt wird, um einen 16-Bit-Quotienten und einen 16-Bit-Rest zu erzeugen, oder für einen 64-Bit-Zähler, der durch einen 32-Bit-Divisor geteilt wird, um einen 32-Bit- Quotient und einen 32-Bit-Rest zu erzeugen, verwendet werden. Im Fall des 64- Bit-Zählers werden die 32 höchstwertigen Bits des Zählers anfangs im Datenregister 200a gespeichert, während die 32 niederwertigsten Bits anfangs im Mehrmerkerregister 211 gespeichert werden. Das Datenregister 200b speichert das Inverse des Divisors. Bei der ersten Iteration einer Divisionsoperation wird entweder der DIVI-Befehl unbedingt ausgeführt oder das "N"-Bit des Statusregisters 210 auf "0" gesetzt. Die gedrehte Zahl von der Barrel- Rotationseinrichtung 235 wird im Datenregister 200a gespeichert. Die Barrel- Rotationseinrichtung 235 und die Rotation des Mehrmerkerregisters 211 verschieben effektiv den 64-Bit-Zähler um eine Stelle. Es wird angemerkt, daß das höchstwertige Bit des Mehrmerkerregisters 211 das zweithöchstwertige Bit des 64-Bit-Zählers ist, und daß es richtig an den Eingang für den Übertrag von einer vorhergehenden Stelle des Rechenwerks 230 geliefert wird. Die im Datenregister 200a gespeicherte Größe wird der Zähler/laufende Rest genannt. Das Ergebnis der Probesubtraktion wird im Datenregister 200c gespeichert.
- Es gibt zwei Fälle für das Ergebnis der Probesubtraktion. Falls entweder das höchstwertige Bit des Anfangszählers "1" war oder falls die Addition des negativen Divisors einen Übertrag erzeugt, ist das entsprechende Quotientenbit "1". Dieses wird in dem ersten Bit des Mehrmerkerregisters 211 und in dem "N"- Bit des Statusregisters 210 gespeichert. Aufgrund der "1" in dem "N"-Bit des Statusregisters 210 wählt der Multiplexer 215 für die nächste Probesubtraktion das Datenregister 200c für den B-Eingang für die nächste Iteration aus. Somit wird die nächste Probesubtraktion von dem vorherhegenden Ergebnis genommen. Falls das ODER-Gatter 247 eine "0" erzeugt, ist das entsprechende Quotientenbit "0". Somit wird die nächste Probesubtraktion von dem in dem um eine Stelle nach links verschobenen Datenregister 200a gespeicherten früheren Zähler/laufenden Rest genommen. Diese Iteration wird während 32 Zyklen von DIVI fortgesetzt, wobei während jedes Zyklus ein Bit des Quotienten gebildet wird. Daraufhin ist der 32-Bit-Quotient vollständig im Mehrmerkerregister 211 gebildet. Je nach Zustand des "N"-Bits des Statusregisters 210 wird der 32-Bit-Rest entweder im Datenregister 200a oder im Datenregister 200c gefunden.
- Der Prozeß für eine 32-Bitmal-16-Bit-Division ist ähnlich. Der negierte Divisor wird vor dem Speichern im Datenregister 200b um 16 Stellen nach links verschoben. Der gesamte Nenner wird im Datenregister 200a gespeichert. Der DIVI-Befehl wird lediglich 16-mal wiederholt, woraufhin der Quotient in den 16 niederwertigsten Bits des Mehrmerkerregisters 211 gebildet wird, während der Rest je nach Zustand des "N"-Bits des Statusregisters 210 in den 16 höchstwertigen Bits entweder des Datenregisters 200a oder des Datenregisters 200c gespeichert wird.
- Um den Organisationsaufwand vieler Mikroprozessoroperationen zu verringern, verwendet diese Technik bereits in der Dateneinheit 100 verfügbare Hardware. Der DIVI-Befehl bildet im wesentlichen ein Bit einer vorzeichenlosen Division. Zur Unterstützung einer vorzeichenbehafteten Division kann zusätzliche Software verwendet werden. Für die Fälle der vorzeichenlosen Halbwort-Division (32- Bit/16-Bit-Division), der vorzeichenlosen Wort-Division (64-Bit/32-Bit- Division), der vorzeichenbehafteten Halbwort-Division (32-Bit/16-Bit-Division) und der vorzeichenbehafteten Wort-Division (64-Bit/32-Bit-Division) können vier Divisionsunterprogramme geschrieben werden. Jedes der vier Unterprogramme enthält drei Phasen: die Divisionsvorbereitung; die Divisionsiteration in einer einzigen Befehlsschleife; und die Divisionsnachbereitung. In dem Schleifenkern werden vorzugsweise organisationsaufwandfreie Schleifen und ein einziger 64- Bit-DIVI-Befehl verwendet.
- Der erste Teil jedes Divisionsunterprogramms ist die Divisionsvorbereitung. Diese enthält zunächst den Test auf einen Divisor null. Falls der Divisor "0" ist, wird das Divisionsunterprogramm abgebrochen und eine Fehlerbedingung festgehalten. Als nächstes werden die Vorzeichenbits für den Zähler und für den Divisor bestimmt. In den vorzeichenbehafteten Divisionsunterprogrammen wird das Vorzeichen des Quotienten als ODER der Vorzeichenbits des Zählers und des Divisors eingestellt. Falls entweder der Zähler oder der Divisor negativ ist, wird er daraufhin in der vorzeichenbehafteten Division negiert, um eine positive Zahl zu erhalten. Der Zähler wird zwischen einem ausgewählten ungeraden Datenregister und dem Mehrmerkerregister 211 aufgeteilt. Bei einer Wort-Division werden die oberen 32 Bits des Zählers in dem ausgewählten Datenregister gespeichert, während die unteren 32 Bits des Zählers im Mehrmerkerregister 211 gespeichert werden. Bei einer Halbwort-Division werden sämtliche 32 Bits des Zählers in dem ausgewählten Datenregister gespeichert. Bei der Halbwort-Division werden die nicht genutzten unteren Bits des Mehrmerkerregisters 211 mit Nullen gefüllt. Bei der Halbwort-Division wird der Divisor in den oberen 16 Bits eines Datenregisters gespeichert, während die unteren Bits mit Nullen gefüllt werden. Der Divisor ist zu negieren, so daß das Rechenwerk 230 die Subtraktion über die Addition bilden kann. Die Unterprogramme können die Absolutwerte der höchstwertigen Bits des Zählers und des Nenners vergleichen, um zu bestimmen, ob es zu einem Überlauf des Quotienten kommt.
- Das Herz jedes Divisionsunterprogramms ist eine Schleife mit einem einzigen DIVI-Befehl. Es ist sehr vorteilhaft, in eine der Registeradressen LSRE2-LSRE0 zu schreiben, um eine organisationsaufwandfreie Einbefehls-Schleife auszulösen. Für Halbwort-Quotienten sind sechzehn Iterationen erforderlich, während für Wort-Quotienten 32 erforderlich sind. Da die Schleifenlogik 720 auf null dekrementiert, ist der Schleifenzähler mit eins weniger als der gewünschten Anzahl der Iterationen zu laden. Außerdem ist es möglich, nach der Schleifenlogikinitialisierung bis zu zwei Iterationen des DIVI-Befehls in den Verzögerungsschlitzen anzuordnen. Der Einzelbefehl in dieser Schleife ist der DIVI-Befehl, der oben umfassend beschrieben wurde.
- Jedes Divisionsunterprogramm wird mit einer Divisionsnachbereitung abgeschlossen. Die Divisionsnachbereitung umfaßt die folgenden Schritte: Der Quotient wird aus dem Mehrmerkerregister 211 in ein Datenregister bewegt. Falls das Vorzeichen des Quotienten negativ ist, wird zu dem Quotienten in dem Datenregister "1" addiert, um von der Einerkomplementdarstellung in die Zweierkomplementdarstellung umzusetzen. Falls der Rest benötigt wird, wird er anhand des "N"-Bits des Statusregisters 210 ausgewählt.
- Es folgt eine Beschreibung der Datenübertragungsformate und eine Erläuterung oder ein Glossar der verschiedenen Bits und Felder der parallelen Datenübertragungsformate der Befehlswörter aus Fig. 18. Wie oben zuvor in Verbindung mit dem Glossar der Bits und Felder der Dateneinheitsformate beschrieben wurde, definieren diese Bits und Felder nicht nur das Befehlswort, sondern auch die Schaltungsanordnung, die die Ausführung des Befehlsworts ermöglicht.
- Das Übertragungsformat 1 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß die Bits 30-28 nicht "000" sind und daß die Bits 16-15 nicht "00" sind. Das Übertragungsformat 1 wird das Doppelparallel-Datenübertragungsformat genannt. Das Übertragungsformat 1 ermöglicht zwei unabhängige Zugriffe, einen globalen Zugriff und einen lokalen Zugriff, auf den Speicher 20, die auf die dem digitalen Bild-/Graphikprozessor entsprechenden Speicherabschnitte beschränkt sind. Das "Lmode"-Feld (Bit 38-35) bezieht sich auf eine lokale Übertragungsbetriebsart, die spezifiziert, wie die lokale Adressierungseinheit der Adressierungseinheit 120 arbeitet. Dieses Feld wird vorzugsweise wie in Tabelle 24 gezeigt decodiert. Tabelle 24
- Das "d"-Feld (Bits 34-32) gibt eines der Datenregister D0-D7 als Quelle oder Ziel einer Übertragung über den lokalen Bus an. Falls das "e"-Bit (Bit 31) "1" ist, gibt es für die lokale Datenübertragung eine Vorzeichenerweiterung an, während es, wenn es andernfalls "0" ist, eine Nullerweiterung angibt. Diese ist wirksam in einem Speicher zur Registerübertragung, wenn das lokale "siz"-Feld (Bits 30-29) weniger als eine volle 32-Bit-Wortgröße angibt. Falls die Datengröße 32 Bits beträgt, wird das "e"-Bit ignoriert. Die Kombination "e" (Bit 31) = "1" und "L" (Bit 21) = "0", die andernfalls bedeutungslos ist, gibt eine arithmetische Operation der lokalen Adressierungseinheit an. Das lokale "siz"-Feld (Bits 30-29) wird vorzugsweise wie in Tabelle 25 gezeigt codiert.
- 00 Byte 8 Bits
- 01 Halbwort 16 Bits
- 10 Ganzwort 32 Bits
- 11 reserviert
- Das "s"-Bit (Bit 28) stellt die Skalierungsbetriebsart ein, die auf die Indexskalierung der lokalen Adresse angewendet wird. Wenn das "s"-Bit "1" ist, wird der Index in der Adressenberechnung, der aus einem Indexregister oder aus einer durch Befehl spezifizierten Distanzadresse abgerufen werden kann, auf die durch das "siz"-Feld angegebene Größe skaliert. Wenn das "s"-Bit "0" ist, findet keine Skalierung statt. Wie zuvor beschrieben wurde, findet diese Indexskalierung in der Indexskalierungseinrichtung 614 statt. Falls die ausgewählte Datengröße 8 Bits (Byte) ist, findet unabhängig vom Status des "s"-Bits keine Skalierung statt. Nur in diesem Fall kann das "s"-Bit als zusätzliches Distanzadressenbit verwendet werden. Falls das "Lmode"-Feld eine Distanzadresse angibt, wird dieses "s"-Bit zu dem höchstwertigen Bit der Distanzadresse und setzt den 3-Bit- Distanzadressenindex des "Lim/x"-Feldes in 4 Bits um. Das "La"-Feld (Bits 27-25) gibt ein Adressenregister in der lokalen Adressierungseinheit 620 der Adressierungseinheit 120 für eine lokale Datenübertragung an. Das "L"-Bit (Bit 21) gibt an, daß die lokale Datenübertragung eine Ladeoperation ist, die Daten aus dem Speicher an ein Register (L = "1") überträgt, oder eine Speicheroperation ist, die Daten aus einem Register an den Speicher (L = "0") überträgt. Das "Lim/x"- Feld (Bits 2-0) spezifiziert je nach Codierung des "Lmode"-Feldes entweder die Registernummer eines Indexregisters oder eine 3-Bit-Distanzadresse.
- Die globale Datenübertragungsoperation wird in ähnlicher Weise wie die lokale Datenübertragung codiert. Das "L"-Bit (Bit 17) ist eine globale Lade/Speicher- Auswahl. Dieses Bit bestimmt, ob die globale Datenübertragung eine auch als Ladeoperation bekannte Speicher-Register-Übertragung ("L" = "1"-Übertragung) oder eine auch als Speicheroperation bekannte Register-Speicher-Übertragung = "0"-Übertragung) ist. Das "Gmode"-Feld (Bits 16-13) definiert auf die gleiche Weise, wie die lokale Übertragungsbetriebsart durch das "Lmode"-Feld definiert ist, eine globale Übertragungsbetriebsart. Dieses Feld wird vorzugsweise wie in Tabelle 26 gezeigt decodiert. Tabelle 26
- Das "reg"-Feld (Bits 12-10) identifiziert ein Register. Das "reg"-Feld gibt im Fall einer Speicheroperation die Nummer des Quellregisters an oder gibt im Fall einer Ladeoperation die Nummer des Zielregisters an. Das "Obank"-Feld (Bits 20-18) enthält drei Bits und identifiziert in den unteren 64 Registern eine Registerbank. Diese Register besitzen Registerbanknummern in der Form "0XXX". Das 3-Bit- Feld "Obank" wird mit dem 3-Bit-Feld "reg" kombiniert, um irgendein Register in den unteren 64 Registern als Datenquelle oder -ziel für die globale Datenübertragung anzugeben. Wenn das "e"-Bit (Bit 9) "1" ist, gibt es für die globale Datenübertragung eine Vorzeichenerweiterung an, während es, falls es "0" ist, eine Nullerweiterung angibt. Dies funktioniert in einer Speicher-Register- Übertragung, wenn das globale "siz"-Feld (Bits 8-7) weniger als eine volle 32-Bit- Wortgröße angibt. Dieses "e"-Bit wird ignoriert, falls die Datengröße 32 Bits beträgt. Die Kombination "e" (Bit 9) = "1" und "L" (Bit 17) = "0" gibt eine globale arithmetische Adressierungseinheitsoperation an. Das globale "siz"-Feld (Bits 8-7) wird vorzugsweise wie in Tabelle 27 gezeigt codiert.
- 00 Byte 8 Bits
- 01 Halbwort 16 Bits
- 10 Ganzwort 32 Bits
- 11 reserviert
- Das "s"-Bit (Bit 6) stellt die Skalierungsbetriebsart ein, die auf die Indexskalierung der globalen Adresse anzuwenden ist. Falls das "s"-Bit "1" ist, wird der Index in der Adressenberechnung, der aus einem Indexregister oder von einer durch Befehl spezifizierten Distanzadresse abgerufen werden kann, auf die durch das "siz"-Feld angegebene Größe skaliert. Falls das "s"-Bit "0" ist, findet keine Skalierung statt. Falls das "siz"-Feld eine Datengröße von 8 Bits angibt, findet unabhängig von Status des "s"-Bits keine Skalierung statt. Falls das "Gmode"-Feld eine Distanzadresse angibt, wird dieses "s"-Bit zu dem höchstwertigen Bit der Distanzadresse und setzt den 3-Bit-Distanzadressenindex des "Gim/x"-Feldes in 4 Bits um. Das "Ga"-Feld (Bits 5-3) gibt ein Adressenregister in der globalen Adressierungseinheit 610 der Adressierungseinheit 120 für eine Ubertragung über den lokalen Bus an. Das "Gim/x"-Feld (Bits 24-22) spezifiziert je nach Codierung des "Gmode"-Feldes entweder die Registernummer eines Indexregisters oder eine 3-Bit- Distanzadresse. Das "Ga"-Feld (Bits 5-3) spezifiziert die Registernummer des beim Berechnen der Speicheradresse der globalen Datenübertragung verwendeten Adressenregisters.
- Das Datenübertragungsformat 2 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß die Bits 30-28 gleich "000" sind und daß die Bits 16-15 nicht "00" sind. Das Datenübertragungsformat 2 wird das XY-Teilstückformat genannt. Das Datenübertragungsformat 2 ermöglicht die Adressierung des Speichers 20 in der Art von XY-Teilstücken, wobei Adressen sowohl von den globalen als auch von den lokalen Adressierungseinheiten der Adressierungseinheit 120 multiplexiert werden. Das "o"-Bit (Bit 34) ermöglicht die Erfassung, ob außerhalb eines XY- Teilstücks. Wenn das "o"-Bit auf "1" gesetzt ist, werden die durch die Bits "a" und "n" spezifizierten Operationen ausgeführt, wenn die spezifizierte Adresse außerhalb des XY-Teilstücks liegt. Wenn andernfalls das "o"-Bit "0" ist, werden die Operationen ausgeführt, wenn die Adresse innerhalb des Teilstücks liegt. Das "a"- Bit (Bit 33) spezifiziert die XY-Teilstück-Speicherzugriffs-Betriebsart. Wenn das "a"-Bit auf "1" gesetzt ist, wird der Speicherzugriff unabhängig davon ausgeführt, ob die Adresse innerhalb oder außerhalb des XY-Teilstücks liegt. Wenn das "a"- Bit auf "0" gesetzt ist, ist der Speicherzugriff gesperrt, wenn die Adresse außerhalb (falls das "o"-Bit "1" ist) oder innerhalb (falls das "o"-Bit "0" ist) des Teilstücks liegt. Das "n"-Bit (Bit 32) spezifiziert die XY-Teilstück-Unterbrechungsbetriebsart. Falls das "n"-Bit auf "1" gesetzt ist, wird ein Unterbrechungsmerker-Registerbit für das XY-Teilstück auf "1" gesetzt, falls die Adresse außerhalb (falls das "o"-Bit "1" ist) oder innerhalb (falls das "o"-Bit "0" ist) des Teilstücks liegt. Falls das "n"-Bit auf "0" gesetzt ist, wird der XY- Teilstück-Unterbrechungsanforderungsmerker nicht gesetzt.
- Andere Felder sind in der gleichen oben genau geschilderten Weise definiert. Das "Lmode"-Feld spezifiziert die Betriebsart für die lokale Adressenberechnung, wie sie in Fig. 28 gezeigt ist. Diese lokale Adressenberechnung umfaßt ein lokales Adressenregister, das durch das "La"-Feld und entweder durch eine vorzeichenlose 3-Bit-Distanzadresse oder durch ein durch das "Lim/x"-Feld angegebenes lokales Indexregister angegeben wird. Das "Gmode"-Feld spezifiziert die globale Adressenberechnung. Eine globale vorzeichenlose 3-Bit- Distanzadresse oder ein durch das "Gim/X"-Feld angegebenes globales Indexregister werden mit dem durch das "Ga"-Feld spezifizierten Adressenregister kombiniert, um die globale Adresse zu bilden. Das 4-Bit- "Bank"-Feld (Bits 21-18) identifiziert eine Datenregisterbank und wird mit dem 3- Bit-"reg"-Feld, das eine Registernummer identifiziert, kombiniert, um irgendein Register als Datenquelle oder -ziel für einen XY-Teilstückzugriff anzugeben. Das "L"-Bit ist eine Lade/Speicher-Auswahl. Dieses Bit bestimmt, ob ein XY- Teilstückzugriff eine auch als Ladeoperation bekannte Speicher-Register- Übertragung ("L" = "1"-Übertragung) oder eine auch als Speicheroperation bekanüte Register-Speicher-Übertragung ("L" = "0"-Übertragung) ist. Falls das "e"-Bit gleich "1" ist, gibt es die Vorzeichenerweiterung an, während es andernfalls, wenn es "0" ist, die Nullerweiterung angibt. Dies funktioniert in einer Ladeoperation (Speicher-Register-Datenübertragung), wenn das "siz"-Feld weniger als eine volle 32-Bit-Wortgröße angibt. Dieses "e"-Bit wird ignoriert, wenn die Datengröße 32 Bits beträgt. Die Kombination "e" = "1" mit "L" = "0" gibt eine arithmetische Teilstückoperation der Adressierungseinheit an. Das "s"- Bit stellt die auf den globalen Adressenindex angewendete Skalierungsbetriebsart ein. Wenn das "s"-Bit gleich "1" ist, werden die aus dem Speicher abgerufenen Daten auf die durch das "siz"-Feld angegebene Größe skaliert. Wenn das "s"-Bit gleich "0" ist, findet keine Skalierung statt. Wenn die ausgewählte Datengröße 8 Bits (Byte) beträgt, findet unabhängig vom Status des "s"-Bits keine Skalierung statt. Nur in diesem Fall wird das "s"-Bit als das höchstwertige Bit der Distanzadresse verwendet, das den 3-Bit-"Gim/x"-Distanzadressenindex in 4 Bits umsetzt.
- Das Datenübertragungsformat 3 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-13 gleich "0000" sind. Das Datenübertragungsformat 3 wird das Format für Bewegungen und lokale Datenübertragungen genannt. Das Datenübertragungsformat 3 ermöglicht parallel zu einer Register-Register-Bewegung unter Verwendung des Quelldatenbusses für den globalen Port Gsrc 105 und des Zieldatenbusses für den globalen Port Gdst 107 eine Lade- oder Speicheroperationen eines der Datenregister 200 über den lokalen Datenport. Die Operation des lokalen Datenports ist in der obenbeschriebenen Weise durch die Felder "Lmode", "d", "e", "siz", "s", "La", "L" und "Lim/x" definiert. Die Register-Register-Bewegung erfolgt aus dem Register, das durch die durch das "srcbank"-Feld (Bits 9-6) angegebene Bank und durch die durch das "src"-Feld (Bits 12-10) angegebene Registernummer definiert ist, in das Register, das durch die durch das "dstbank"-Feld (Bits 21-18) angegebene Bank und durch die durch das "dst"-Feld (Bits 5-3) angegebene Registernummer deimiert ist.
- Das Datenübertragungsformat 3 unterstützt die relative Adressierung des digitalen Bild-/Graphikprozessors. Das "Lrm"-Feld (Bits 23-22) gibt den Typ der Adressierungsoperation an. Dies ist in Tabelle 28 dargestellt.
- 00 normale Adressierung
- 01 reserviert
- 10 Datenspeicher-Grundadresse DBA
- 11 Parameterspeicher-Grundadresse PBA
- Die Spezifizierung der DBA bewirkt, daß die lokale Adressierungseinheit 620 die Grundadresse ihres entsprechenden Speichers erzeugt. In gleicher Weise bewirkt die Spezifizierung der PBA, daß der lokale Adressengenerator 620 die Grundadresse des entsprechenden Parameterspeichers erzeugt. Die auf diese Weise erzeugte Grundadresse kann in irgendeiner der in dem in Tabelle 24 gezeigten "Lmode"-Feld spezifizierten Adressenerzeugungsoperationen mit dem in einem Indexregister gespeicherten Index oder mit einem Distanzadressenfeld kombiniert werden.
- Dieses Datenübertragungsformat unterstützt außerdem die Befehlsworterzeugung. Falls das Ziel der Register-Register-Bewegung das Nullwert-Adressenregister der globalen Adressierungseinheit A15 ist, löst die Befehlswort- Decodierungsschaltungsanordnung eine Befehlswortübertragung an einen bezeichneten Prozessor aus. Dieses Befehlswort wird in Begleitung eines speziellen Befehlswortsignals über den globalen Datenport an die Kreuzschiene 50 gesendet. Dies ermöglicht eine Interprozessor-Kommunikation, so daß beispielsweise irgendwelche der digitalen Bild-/Graphikprozessoren 71, 72, 73 und 74 an andere Prozessoren eine Unterbrechung ausgeben können. Dieser Prozeß ist oben genau geschildert.
- Das Datenübertragungsformat 4 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-13 gleich "0001" sind. Das Datenübertragungsformat 4 wird das Format für Feldbewegungen und lokale Datenübertragungen genannt. Das Datenübertragungsformat 4 ermöglicht parallel zu einer Register-Register-Feldbewegung unter Verwendung des Quelldatenbusses für den globalen Port Gsrc 105 und des Zieldatenbusses für den globalen Port Gdst 107 eine Lade- oder Speicheroperation eines der Datenregister 200 über den lokalen Datenport. Die Operation für den lokalen Datenport ist in der obenbeschriebenen Weise durch die Felder "Lmode", "d", "e" (Bit 31), "siz" (Bits 30-29), "s", "La", "L" und "Lim/x" definiert.
- Die Register-Register-Feldbewegung erfolgt aus dem Datenregister, das durch die durch das "src"-Feld (Bits 12-10) angegebene Registernummer definiert ist, in das Register, das durch die durch das "dstbank"-Feld (Bits 21-18) angegebene Bank und durch die durch das "dst"-Feld (Bits 5-3) angegebene Registernummer definiert ist. Das "D"-Bit (Bit 6) gibt an, ob die Feldbewegung, wenn "D" = "1" ist, eine Feldreplikationsbewegung ist oder, wenn "D" = "0" ist, eine Feldentnahmebewegung ist. In einer Feldreplikationsbewegung werden die niederwertigsten 8 Bits des Quellregisters viermal in dem Zielregister wiederholt, wenn das "siz"-Feld (Bits 8-7) eine Bytegröße angibt, während die niederwertigsten 16 Bits des Quellregisters in dem Zielregister dupliziert werden, wenn das "siz"-Feld (Bits 8-7) eine Halbwortgröße angibt. Wenn das "siz"-Feld eine Wortgröße angibt, werden unabhängig vom Zustand des "D"-Bits die gesamten 32 Bits des Quellregisters ohne Replikation in das Zielregister übertragen. In einer Feldextraktionsbewegung gibt das "itm"-Feld (Bits 23-22) die aus dem Quellregister zu entnehmende Little-Endian-Positionsnummer an. Die besonderen entnommenen Bits hängen außerdem von dem "siz"-Feld ab. Wenn die Datengröße des "siz"-Feldes (Bits 8-7) Byte ist, kann "itm" 0, 1, 2 oder 3 sein, was das gewünschte Byte angibt. Wenn die Datengröße des "siz"-Feldes (Bits 8-7) Halbwort ist, kann "itm" 0 oder 1 sein, was das gewünschte Halbwort angibt. Wenn das "siz"-Feld (Bits 8-7) Wort ist, wird das "itm"-Feld ignoriert. Das aus dem Quellregister entnommene Feld wird vorzeichenerweitert, wenn das "e"-Bit (Bit 9) "1" ist, während es nullerweitert wird, wenn das "e"-Bit (Bit 9) "0" ist.
- Während Feldreplikationsbewegungen wird das "e"-Feld ignoriert.
- Das Datenübertragungsformat 5 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß das Bit 24 gleich "1" ist, und daß die Bits 16-15 gleich "00" sind. Das Datenübertragungsformat 5 wird lokale Datenübertragung mit langer Distanzadresse genannt. Da keine globale Datenübertragung möglich ist, ermöglicht das Datenübertragungsformat 5 einen Speicherzugriff auf den globalen Port unter Verwendung einer in der lokalen Adressierungseinheit konstruierten Adresse. Die Operation für den lokalen Datenport ist in der obenbeschriebenen Weise durch die Felder "Lmode", "d", "e", "siz", "s", "La" und "L" definiert. Die Registerquelle oder das Registerziel entspricht der in dem "reg"-Feld (Bits 24-32) in der Bank des in dem "bank"-Feld (Bits 21-18) angegebenen Registers angegebenen Registernummer. Wie es durch das "Lmode"-Feld eingestellt ist, spezifiziert das "Local Long Offset/x"-Feld (Bits 14-0) eine lokale 15-Bit- Adressendistanz oder spezifizieren die drei niederwertigsten Bits ein Indexregister. Da das Datenübertragungsformat 5 irgendein Dateneinheitsregister als Quelle für eine Speicheroperation oder als Ziel für eine Ladeoperation zuläßt, könnte ein Programmierer dieses Datenübertragungsformat unter Verwendung eines Indexregisters anstelle des "Local long offset"-Feldes verwenden wollen. Das "Lmode"-Feld gibt an, ob dieses Feld einen Distanzadressenwert oder eine Indexregisternummer enthält. Wenn die ausgewählte Datengröße 8 Bits (Byte) ist, findet unabhängig vom Status des "s"-Bits keine Skalierung statt. Nur in diesem Fall wird das "s"-Bit zu dem höchstwertigen Bit der Distanzadresse, die das 15- Bit-"Local long offset"-Feld in 16 Bits umsetzt. Das "Lrm"-Feld (Bits 23-22) spezifiziert eine normale Adressenoperation, eine Datenspeicher-Grundadressenoperation oder eine Parameterspeicher-Grundoperation, wie sie oben in Tabelle 28 aufgeführt sind.
- Das Datenübertragungsformat 6 wird dadurch erkannt, daß die Bits 38-37 gleich "00" sind, daß die Bits 16-15 nicht "00" sind und daß das Bit 2 gleich "0" ist. Das Datenübertragungsformat 6 wird globale Datenübertragung mit langer Distanzadresse genannt. Mit Ausnahme dessen, daß die Adressenberechnung in der globalen Adressierungseinheit stattfindet, ist das Datenübertragungsformat 6 ähnlich zum Datenübertragungsformat 5. Die Felder "bank", "L", "Gmode", "reg", "e", "siz", "s" und "Ga" sind wie oben definiert. Das "Global Long Offset/x"-Feld (Bits 36-22) spezifiziert je nach "Gmode"-Feld eine globale Distanzadresse oder ein Indexregister. Dies ist ähnlich dem obendiskutierten "Local Long Offset/x"- Feld. Das "Grm"-Feld (Bits 1-0) gibt den Typ der Adressierungsoperation an. Dies ist in Tabelle 29 dargestellt.
- 00 normale Adressierung
- 01 reserviert
- 10 Datenspeicher-Grundadresse DBA
- 11 Parameterspeicher-Grundadresse PBA
- Mit Ausnahme dessen, daß die Adressenberechnung in der globalen Adressierungseinheit 610 stattfindet, funktioniert dies auf die gleiche Weise wie das obenbeschriebene "Lrm"-Feld.
- Das Datenübertragungsformat 7 wird dadurch erkannt, daß die Bits 38-37 nicht "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-14 gleich "001" sind. Das Datenübertragungsformat 7 wird das Format für Nicht-Datenregister- Dateneinheitsoperationen und lokale Datenübertragungen genannt. Das Datenübertragungsformat 7 ermöglicht parallel zu einer Dateneinheitsoperation, bei der die erste Quelle für das Rechenwerk 230 und das Ziel für das Rechenwerk 230 irgendein Register im digitalen Bild-/Graphikprozessor 71 sein können, einen Speicherzugriff auf den lokalen Port. Die Operation für den lokalen Datenport ist in der obenbeschriebenen Weise durch die Felder "Lmode", "d", "e", "siz", "s", "La", "Lrm", "L" und "Lim/x" definiert. Das "Adstbnk"-Feld (Bits 21-18) spezifiziert eine Registerbank für das Rechenwerksziel. Dieses Feld spezifiziert in den Dateneinheitsformaten A, B und C in Verbindung mit dem "dst"-Feld und im Dateneinheitsformat D in Verbindung mit dem "dst1"-Feld eine Registerquelle. Das "As1bank"-Feld spezifiziert eine Registerbank für die erste Rechenwerksquelle. Dieses spezifiziert in Verbindung mit dem "src1"-Feld in den Dateneinheitsformaten A, B, C und D eine Registerquelle. Da die erste Quelle und das Ziel nicht die Datenregister 200 der Dateneinheit 110 zu sein brauchen, werden diese Dateneinheitsoperationen Fern-Rechenwerksoperationen genannt.
- Das Datenübertragungsformat 8 wird dadurch erkannt, daß die Bits 38-37 gleich "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-13 gleich "0000" sind. Das Datenübertragungsformat 8 wird das Format für bedingte Dateneinheitsoperationen und bedingte Bewegungsübertragungen genannt. Das Datenübertragungsformat 8 ermöglicht eine bedingte Auswahl der ersten Quelle für das Rechenwerk 230 und das bedingte Speichern des Ergebnisses des Rechenwerks 230. Die bedingten Rechenwerksoperationen sind durch die Felder "cond.", "c", "r", "g" und "N C V Z" definiert.
- Das "cond."-Feld (Bits 35-32) definiert eine Rechenwerksoperation aus bedingten Registerquellen und die bedingte Speicherung des Rechenwerksergebnisses. Dieses Feld ist in Tabelle 20 definiert. Diese Bedingungen werden anhand der Bits "N", "C", "V" und "Z" des Statusregisters 210 ausgewertet.
- Die spezifizierte Bedingung kann eine bedingte Registerquelle, eine bedingte Speicherung des Ergebnisses des Rechenwerks 230 oder eine bedingte Register- Register-Bewegung bestimmen. Das "c"-Bit (Bit 31) bestimmt die Auswahl der bedingten Quelle. Wenn das "c"-Bit "0" ist, wird anhand des "src1"-Feldes (Bits 47-45) des Dateneinheitsformatsteils des Befehlsworts die erste Quelle für das Rechenwerk 230 unbedingt ausgewählt. Wenn das "c"-Bit "1" ist, wird die Registerquelle zwischen einem ungeraden und einem geraden Registerpaar ausgewählt. Es wird angemerkt, daß das "src1"-Feld in diesem Fall ein Datenregister 200 mit einer ungeraden Nummer spezifizieren muß. Wenn die Bedingung wahr ist, wird das spezifizierte Register als die erste Quelle für das Rechenwerk 230 ausgewählt. Wenn die Bedingung falsch ist, wird das entsprechende gerade Datenregister, das um eins kleiner als das spezifizierte Datenregister ist, als die Quelle ausgewählt. Die bevorzugte Ausführungsform unterstützt die Auswahl der bedingten Quelle anhand des "N"-Bits des Statusregisters 210. Wenn das "N"-Feld des Statusregisters 210 gleich "1" ist, wird das bezeichnete Datenregister als die erste Quelle für das Rechenwerk 230 ausgewählt. Wenn das "N"-Feld des Statusregisters 210 "0" ist, wird das um eins kleinere Datenregister ausgewählt. Diese Auswahl kann durch einen Multiplexer oder durch Ersetzen des "N"-Feldes des Statusregisters 210 für das niederwertigste Bit der Registernummer getroffen werden. Obgleich die bevorzugte Ausführungsform nur eine Auswahl der bedingten Quelle anhand des "N"- Bits des Statusregisters 210 unterstützt, ist es möglich, eine Auswahl der bedingten Quelle anhand der Bits "C", "V" und "Z" des Statusregisters 210 vorzusehen.
- Das Datenübertragungsformat 8 unterstützt die bedingte Speicherung des Ergebnisses des Rechenwerks 230. Das "r"-Bit (Bit 30) gibt an, ob die Speicherung des Ergebnisses bedingt ist. Wenn das "r"-Bit "1" ist, ist die Speicherung des Ergebnisses anhand der Bedingung des "cond."-Feldes bedingt. Wenn das "r"-Bit "0" ist, ist die Speicherung des Ergebnisses unbedingt. Es wird angemerkt, daß die Statusbits des Statusregisters 210 in einer Operation mit bedingtem Ergebnis unbedingt gesetzt werden. Somit können diese Bits selbst dann gesetzt werden, wenn das Ergebnis nicht gespeichert wird.
- Außerdem gestattet das Datenübertragungsformat 8 eine bedingte Register- Register-Bewegungsoperation. Die Bedingung ist durch das gleiche "cond."-Feld definiert, die bedingte Dateneinheitsoperationen spezifiziert. Die Registerdatenquelle der Bewegung ist durch die durch das "srcbank"-Feld (Bits 9-6) angegebene Bank und durch die durch das "src"-Feld (Bits 12-10) angegebene Registernummer definiert. Das Registerdatenziel ist durch die durch das "dstbank"-Feld (Bits 21-18) angegebene Bank und durch die durch das "dst"- Feld (Bits 5-3) angegebene Registernummer definiert. Das "g"-Bit (Bit 29) gibt an, ob die Datenbewegung bedingt ist. Wenn das "g"-Bit "1" ist, ist die Datenbewegung anhand der in dem "cond."-Feld spezifizierten Bedingung bedingt. Wenn das "g"-Bit "0" ist, ist die Datenbewegung unbedingt. Es wird angemerkt, daß ein Ziel des Nullwert-Adressenregisters A15 der globalen Adressierungseinheit wie oben zuvor beschrieben eine Befehlswort-Schreiboperation erzeugt. Somit ermöglicht das Datenübertragungsformat 8 eine bedingte Befehlsworterzeugung.
- Das "N C V Z"-Feld (Bits 28-25) gibt an, welche Bits des Status während der Ausführung des Befehls gegenüber einer Änderung geschützt sind. Die Bedingungen des Statusregisters sind: N negativ; C Übertrag; V Überlauf; und Z null. Falls eines oder mehrere dieser Bits auf "1" gesetzt sind, ist das entsprechende Bedingungsbit bzw. sind die entsprechenden Bedingungsbits in dem Statusregister während der Ausführung des Befehls gegenüber einer Modifizierung geschützt. Andernfalls werden die Statusbits des Statusregisters 210 normalerweise gemäß dem Ergebnis des Rechenwerks 230 gesetzt.
- Das Datenübertragungsformat 9 wird dadurch erkannt, daß die Bits 38-37 gleich "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-13 gleich "0001" sind. Das Datenübertragungsformat 9 wird das Format für bedingte Dateneinheitsoperationen und bedingte Feldbewegungsübertragungen genannt. Das Datenübertragungsformat 9 ermöglicht auf die gleiche Weise wie das Datenübertragungsformat 8 eine bedingte Auswahl der ersten Quelle für das Rechenwerk 230 und eine bedingte Speicherung des Ergebnisses des Rechenwerks 230. Wie oben bei der Beschreibung des Datenübertragungsformats 8 vermerkt wurde, sind die bedingten Rechenwerksoperationen durch die Felder "cond.", "c", "r" und "N C V Z" definiert.
- Das Datenübertragungsformat 9 unterstützt außerdem bedingte Register-Register- Feldbewegungen. Die Bedingung ist durch das gleiche "cond."-Feld definiert, das bedingte Dateneinheitsoperationen spezifiziert. Die Quelle der Feldbewegung muß eines der Datenregister 200 sein. Das "src"-Feld (Bits 12-10) spezifiziert das besondere Datenregister. Das Ziel der Register-Register-Bewegung ist das durch die Registerbank des "dstbank"-Feldes (Bits 21-18) definierte Register und die Registernummer des "dst"-Feldes (Bits 5-3). Die Felder "g" (Bit 29), "itm" (Bits 23-22), "e" (Bit 9), "siz" (Bits 8-7) und "D" (Bit 6) definieren die Parameter der bedingten Feldbewegung. Das "g"-Bit bestimmt, wenn "g" = "0" ist, daß die Feldbewegung unbedingt ist, und wenn "g" = "1" ist, daß die Feldbewegung bedingt ist. Das "D"-Bit gibt an, ob die Feldbewegung, wenn "D" = "1" ist, eine Feldreplikationsbewegung ist oder, wenn "D" = "0" ist, eine Feldentnahmebewegung ist. Diese Funktionen sind oben beschrieben worden. In einer Feldentnahmebewegung gibt das "itm"-Feld (Bits 23-22) die bei der durch das "siz"-Feld spezifizierten Datengröße aus der Quellregisterbasis zu entnehmende Little-Endian-Positionsnummer an. Das aus dem Quellregister entnommene Feld wird vorzeichenerweitert, wenn das "e"-Bit (Bit 9) "1" ist, und nullerweitert, wenn das "e"-Bit (Bit 9) "0" ist. Das "e"-Feld wird während Feldreplikationsbewegungen ignoriert.
- Das Datenübertragungsformat 10 wird dadurch erkannt, daß die Bits 38-37 gleich "00" sind, daß die Bits 16-15 nicht "00" sind und daß das Bit 2 gleich "1" ist. Das Datenübertragungsformat 10 wird das Format für bedingte Dateneinheitsoperationen und bedingte globale Datenübertragungen genannt. Das Datenübeutragungsformat 10 ermöglicht die bedingte Auswahl der ersten Quelle für das Rechenwerk 230 und die bedingte Speicherung des Ergebnisses des Rechenwerks 230. Wie oben bei der Beschreibung des Datenübertragungsformats 8 vermerkt wurde, sind die bedingten Rechenwerksoperationen durch die Felder "cond.", "e", "r" und "N C V Z" definiert.
- Das Datenübertragungsformat 10 unterstützt außerdem den bedingten Speicherzugriff über die globale Adressierungseinheit 610. Der bedingte Speicherzugriff ist wie zuvor beschrieben durch die Felder "g", "Gim/x", "bank", "L", "Gmode", "reg", "e", "siz", "s", "Ga" und "Grm" spezifiziert. Das "g"-Bit (Bit 29) gibt an, ob die Datenbewegung in der zuvor beschriebenen Weise bedingt ist. Das "Gimix"-Feld spezifiziert je nach Zustand des "Gmode"-Feldes entweder eine Indexregisternummer oder ein Distanzadressenfeld. Das "bank"-Feld spezifiziert die Registerbank, während das "reg"-Feld die Registernummer der Registerquelle oder das Ziel des globalen Speicherzugriffs spezifiziert. Das "L" gibt durch eine "1" eine Ladeoperation (Speicher-Register-Übertragung) und durch eine "0" eine Speicheroperation (Register-Speicher-Übertragung) an. Das "Gmode"-Feld gibt wie in Tabelle 26 dargestellt die Operation der globalen Dateneinheit 610 an. Das "e"-Feld gibt die Vorzeichen- oder Nullerweiterung für Ladeoperationen an. Es wird angemerkt, daß ein "L"-Feld von "0" und ein "e"-Feld von "1" eine Adressenarithmetikoperation erzeugt. Das "siz"-Feld spezifiziert wie in Tabelle 27 dargestellt die Datengröße. Wie oben beschrieben wurde, gibt das "s"-Bit an, ob der Index auf die obenbeschriebene Datengröße skaliert wird. Das "Ga"-Feld spezifiziert das bei der Adressenberechnung verwendete Adressenregister. Wie in Tabelle 29 dargestellt wurde, gibt das "Grm"-Feld den Typ der Adressierungsoperation an.
- Das Datenübertragungsfonnat 11 wird dadurch erkannt, daß die Bits 38-37 gleich "00" sind, daß das Bit 24 gleich "0" ist und daß die Bits 16-14 gleich "001" sind. Das Datenübertragungsformat 11 wird das bedingte Nichtdatenregister- Dateneinheitsformat genannt. Das Datenübertragungsformat 11 ermöglicht keine Speichertigriffe. Statt dessen ermöglicht das Datenübertragungsformat 11 bedingte Dateneinheitsoperationen mit einer Quelle und dem Ziel für das Rechenwerk 230 als irgendeinem Register in dem Bild-/Graphikprozessor 71. Dies sind sogenannte Fern-Rechenwerksoperationen. Das "As1bank"-Feld (Bits 9-6) spezifiziert eine Registerbank, die in Verbindung mit dem "src1"-Feld (Bits 47-45) in dem Dateneinheitsformat des Befehls die erste Rechenwerksquelle definiert. Somit kann diese Quelle irgendein Register in dem digitalen Bild- /Graphikprozessor 71 sein. Das "Adstbnk"-Feld (Bits 21-18) spezifiziert eine Registerbank, die in Verbindung mit dem "dst"-Feld (Bits 50-48) in dem Dateneinheitsformaten A, B und C und mit dem "dst1"-Feld (Bits 50-48) in dem Dateneinheitsformat E das Rechenwerksziel definiert. Wie oben bei der Beschreibung des Datenübertragungsformats 8 angemerkt wurde, sind die bedingten Rechenwerksoperationen durch die Felder "cond.", "c", "r" und "N C V Z" definiert.
- Das "R"-Bit (Bit 0) ist ein Rücksetzbit. Das "R"-Bit wird nur beim Rücksetzen verwendet. Das "R"-Bit bestimmt, ob das Stapelzeigerregister A14 beim Rücksetzen des digitalen Bild-/Graphikprozessors 71 initialisiert wurde. Dieses "R"-Bit ist nicht für Anwender über den Befehlssatz verfügbar und wird nicht weiter beschrieben.
- Bei so vielen in einem einzelnen Befehl möglichen Operationen ist es möglich, daß mehr als eine Operation eines einzelnen Befehls das gleiche Zieldatenregister 200 spezifiziert. In diesem Fall bestimmt eine feste Reihenfolge der Priorität, welche Operation ihr Ergebnis in dem gemeinsam spezifizierten Zielregister sichert. Diese feste Reihenfolge der Priorität ist in Tabelle 30 in der Reihenfolge von der höchsten Priorität bis zur niedrigsten Priorität gezeigt.
- höchster Datenübertragung der globalen Adressierungseinheit
- mittel Datenübertragung der lokalen Adressierungseinheit
- niedrigster Dateneinheit
- Multiplikation/ALU = > Multiplikation
- Rotation/ALU = > ALU
- Somit besitzen Datenübertragungen der globalen Adressierungseinheit die höchste Priorität, während Dateneinheitsoperationen die niedrigste Priorität besitzen. Da während eines einzelnen Befehls mehr als eine Dateneinheitsoperation stattfinden kann, gibt es für diese Operationen einen weiteren Prioritätsrang. Falls eine Multiplikationsoperation und eine Rechenwerksoperation das gleiche Zielregister haben, wird nur das Ergebnis der Multiplikationsoperation gespeichert. In diesem Fall werden durch die abgebrochene Rechenwerksoperation keine Statusbits geändert. Es wird angemerkt, daß dann, wenn das Speichern des Ergebnisses einer Rechenwerksoperation wegen eines Konflikts mit einer Datenübertragung der globalen oder der lokalen Adressierungseinheit abgebrochen wird, die Statusbits normal gesetzt werden. Falls ein Barrel-Rotationsergebnis und eine Rechenwerksoperation das gleiche Ziel haben, werden nur die Ergebnisse der Rechenwerksoperation gespeichert. In diesem Fall werden die Statusbits für die abgeschlossene Rechenwerksoperation normal gesetzt.
- In Fig. 19 ist die integrierte Mehrprozessorschaltung 101 als Teil einer Farbfaxvorrichtung gezeigt. Das Modem 1301 ist doppeltgerichtet an eine Telephonleitung zum Senden und Empfangen angeschlossen. Außerdem kommuniziert das Modem 1301 mit dem Puffer 1302, der ferner mit dem Bildsystembus gekoppelt ist. Das Modem 1301 empfängt über die Telephonleitung ein Faxsignal. Das Modem 1301 demoduliert diese Signale, die daraufhin vorübergehend im Speicher 1302 gespeichert werden. Der Übertragungs-Controller 80 bedient den Puffer 1302, indem er die Daten zur Verarbeitung durch den digitalen Bild-/Graphikprozessor 71 an die Datenspeicher 22, 23 und 24 überträgt. Falls der digitale Bild-/Graphikprozessor 71 den ankommenden Daten nicht vorausbleiben kann, kann der Übertragungs-Controller 80 auch Daten aus dem Puffer 1302 an den Speicher 9 übertragen. Der digitale Bild-/Graphikprozessor 71 verarbeitet die Bilddaten des ankommenden Fax. Dies kann eine Bilddekompression, eine Rauschminderung, eine Fehlerkorrektur, eine Farbbasiskorrektur und dergleichen einschließen. Nachdem die Bilddaten verarbeitet wurden, überträgt sie der Übertragungs-Controller 80 aus den Datenspeichern 22, 23 und 24 an den Video-Schreib-Lese-Speicher (VRAM) 1303. Der Drucker-Controller 1304 ruft die Bilddaten gemäß der Steuerung des Rahmen-Controllers 90 ab und liefert sie an den Farbdrucker 1305, der den Ausdruck bildet.
- Die Vorrichtung aus Fig. 19 kann auch ein Farbfax senden. Die Abbildungsvorrichtung 3 tastet das Quelldokument ab. Die Abbildungsvorrichtung 3 liefert die Rohbilddaten an den Bilderfassungs- Controller 4, der gemäß der Steuerung des Rahmen-Controllers 90 arbeitet. Diese Bilddaten werden im Video-Schreib-Lese-Speicher 1303 gespeichert. Es wird angemerkt, daß die in Fig. 19 gezeigte Ausführungsform im Gegensatz zu der Ausführungsform aus Fig. 1, die getrennte Video-Schreib-Lese-Speicher nutzt, den Video-Schreib-Lese-Speicher 1303 sowohl für die Bilderfassung als auch für die Bildanzeige gemeinsam nutzt. Der Übertragungs-Controller 80 überträgt diese Bilddaten an die Datenspeicher 22, 23 und 24. Der digitale Bild- /Graphikprozessor 71 verarbeitet daraufhin die Bilddaten für die Bildkompression, für die Fehlerkorrekturredundanz, für die Farbbasis-Korrektur und dergleichen. Erforderlichenfalls werden die verarbeiteten Daten durch den Übertragungs-Controller 80 zur Unterstützung der Faxübertragung an den Puffer 1303 übertragen. Je nach den jeweiligen Datenraten kann der Übertragungs- Controller 80 die Daten vor der Übertragung an den Puffer 1302 vorübergehend im Speicher 9 speichern. Diese Bilddaten im Puffer 1302 werden durch das Modem 1301 moduliert und über die Telephonleitung gesendet.
- Es wird angemerkt, daß die Anwesenheit einer Abbildungsvorrichtung und eines Farbdruckers in dem gleichen System ermöglicht, daß dieses System auch als Farbkopierer arbeitet. In diesem Fall sind die Datenkompression und -dekompression möglicherweise nicht erforderlich. Der digitale Bild- /Graphikprozessor 71 ist aber weiter nützlich zur Rauschminderung und zur Farbbasiskorrektur. Außerdem ist es möglich, daß der digitale Bild- /Graphikprozessor 71 in der Weise programmiert wird, daß er die Farben absichtlich verschiebt, so daß die Kopie eine andere Färbung als das Original hat. Diese als Falschfarben bekannte Technik ist nützlich zur Anpassung des dynamischen Datenbereichs an den dynamischen Bereich der verfügbaren Druckfarben.
Claims (4)
1. Datenverarbeitungsvorrichtung, mit:
einem Befehlsdecodierer (250), der eine erste Menge von
Funktionssignalen und eine zweite Menge von Funktionssignalen, die einem
momentanen Befehl entsprechen, unabhängig erzeugt; und
einer Arithmetik-/Logikeinheit (230) mit drei Eingängen, die enthält:
ein UND-Gatter (492), das einen ersten Eingang, der ein erstes Mehrbit-
Eingangssignal (A), einen zweiten Eingang sowie einen Ausgang, der eine
bitweise UND-Verknüpfung von an den ersten und zweiten Eingängen
empfangenen Signalen bildet, besitzt;
einen ersten Generator (493) Boolescher Funktionen mit zwei Eingängen,
der an den Befehlsdecodierer angeschlossen ist und einen ersten Eingang, der ein
zweites Mehrbit-Eingangssignal B empfängt, einen zweiten Eingang, der ein
drittes Mehrbit-Eingangssignal C empfängt, und einen Ausgang, der an den
zweiten Eingang des UND-Gatters angeschlossen ist, besitzt, wobei der Ausgang
eine erste Boolesche Kombination F1(B,C) von an den ersten und zweiten
Eingängen empfangenen Signalen bildet, die der ersten Menge von
Funktionssignalen entspricht und aus der folgenden Menge Boolescher
Kombinationen mit zwei Eingängen ausgewählt ist:
(1) alle Nullen unabhängig von B und C,
(2) alle Einsen unabhängig von B und C,
(3) B,
(4) -B-1,
(5) C,
(6) -C-1,
(7) B UND C,
(8) -(B UND C)-1,
(9) B ODER C,
(10) -(B ODER C)-1,
(11) B UND NICHT C,
(12) -(B UND NICHT C)-1,
(13) B ODER NICHT C,
(14) -(B ODER NICHT C)-1,
(15) (B UND NICHT C) ODER ((-B-1) UND C), und
(16) (B UND C) ODER ((-B-1) UND NICHT C);
einen zweiten Generator (494) Boolescher Funktionen mit zwei
Eingängen, der an den Befehlsdecodierer angeschlossen ist und einen ersten
Eingang, der das zweite Mehrbit-Eingangssignal empfängt, einen zweiten
Eingang, der das dritte Mehrbit-Eingangssignal empfängt, und einen Ausgang
besitzt, der eine zweite Boolesche Kombination F2(B,C) von Signalen bildet, die
der zweiten Menge von Funktionssignalen entspricht und aus der obigen Menge
Boolescher Kombinationen mit zwei Eingängen ausgewählt ist; und
einen Addierer (491), der einen ersten Eingang, der an den Ausgang des
UND-Gatters (492) angeschlossen ist, einen zweiten Eingang, der an den Ausgang
des zweiten Generators (494) Boolescher Funktionen mit zwei Eingängen
angeschlossen ist, und einen Ausgang (S), der die Summe der an den ersten und
zweiten Eingängen empfangenen Signale bildet, besitzt.
2. Datenverarbeitungsvorrichtung nach Anspruch 1, die ferner einen
Übertrageingang-Generator (246) für ein niedrigstwertiges Bit umfaßt, der an den
Addierer angeschlossen ist und für ein niedrigstwertiges Bit des Addierers einen
Übertrageingang liefert.
3. Datenverarbeitungsvorrichtung nach Anspruch 2, bei der der
Übertrageingang, der durch den Übertrageingang-Generator (246) für ein
niedrigstwertiges Bit erzeugt wird, einen ersten Zustand für eine erste
vorgegebene Untermenge der zweiten Booleschen Kombination F2(B,C) und
einen zum ersten Zustand entgegengesetzten zweiten Zustand für eine zweite
vorgegebene Untermenge der zweiten Booleschen Kombination F2(B,C) besitzt.
4. Datenverarbeitungsvorrichtung nach Anspruch 3, bei der:
die zweite vorgegebene Untermenge der zweiten Booleschen Kombination
F2(B,C) enthält:
(4) -B-1,
(6) -C-1,
(8) -(B UND C)-1,
(10) -(B ODER C)-1,
(12) -(B UND NICHT C)-1,
(14) -(B ODER NICHT C)-1,
der Carry-in-Generator (246) für ein niedrigstwertiges Bit einen
Übertrageingang von "0" für die erste vorgegebene Untermenge der zweiten
Booleschen Kombination F2(B,C) und einen Übertrageingang von "1" für die
zweite vorgegebene Untermenge der zweiten Booleschen Kombination F2(B,C)
bildet.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/159,345 US5485411A (en) | 1993-11-30 | 1993-11-30 | Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69430510D1 DE69430510D1 (de) | 2002-06-06 |
DE69430510T2 true DE69430510T2 (de) | 2002-11-07 |
Family
ID=22572183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69430510T Expired - Lifetime DE69430510T2 (de) | 1993-11-30 | 1994-11-30 | Arithmetik-Logikschaltung mit drei Eingängen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5485411A (de) |
EP (1) | EP0657803B1 (de) |
KR (1) | KR100315407B1 (de) |
DE (1) | DE69430510T2 (de) |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596763A (en) * | 1993-11-30 | 1997-01-21 | Texas Instruments Incorporated | Three input arithmetic logic unit forming mixed arithmetic and boolean combinations |
US5964825A (en) * | 1996-02-09 | 1999-10-12 | Texas Instruments Incorporated | Manipulation of boolean values and conditional operation in a microprocessor |
GB2317971B (en) * | 1996-10-02 | 2000-12-06 | Advanced Risc Mach Ltd | Digital adder circuit |
US6055557A (en) * | 1997-01-08 | 2000-04-25 | International Business Machines Corp. | Adder circuit and method therefor |
US6374346B1 (en) | 1997-01-24 | 2002-04-16 | Texas Instruments Incorporated | Processor with conditional execution of every instruction |
US6952823B2 (en) * | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
US6318156B1 (en) * | 1999-10-28 | 2001-11-20 | Micro Motion, Inc. | Multiphase flow measurement system |
US7844579B2 (en) * | 2000-03-09 | 2010-11-30 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143253A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143237A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143180A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US8230482B2 (en) | 2000-03-09 | 2012-07-24 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20050015608A1 (en) * | 2003-07-16 | 2005-01-20 | Pkware, Inc. | Method for strongly encrypting .ZIP files |
US6879988B2 (en) * | 2000-03-09 | 2005-04-12 | Pkware | System and method for manipulating and managing computer archive files |
US20060143249A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143199A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060155788A1 (en) * | 2000-03-09 | 2006-07-13 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060173847A1 (en) * | 2000-03-09 | 2006-08-03 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US8959582B2 (en) | 2000-03-09 | 2015-02-17 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US7140003B2 (en) * | 2003-02-14 | 2006-11-21 | International Business Machines Corporation | Method and system for specifying sets of instructions for selection by an instruction generator |
US6873181B1 (en) * | 2003-08-13 | 2005-03-29 | Altera Corporation | Automated implementation of non-arithmetic operators in an arithmetic logic cell |
US7817719B2 (en) * | 2005-05-31 | 2010-10-19 | Atmel Corporation | System for increasing the speed of a sum-of-absolute-differences operation |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US8626815B1 (en) | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8255448B1 (en) | 2008-10-02 | 2012-08-28 | Altera Corporation | Implementing division in a programmable integrated circuit device |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8805916B2 (en) | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8886696B1 (en) | 2009-03-03 | 2014-11-11 | Altera Corporation | Digital signal processing circuitry with redundancy and ability to support larger multipliers |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
RU2461868C1 (ru) * | 2011-10-03 | 2012-09-20 | Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" (г. Санкт-Петербург) Министерства обороны Российской Федерации | Арифметический вычислитель систем булевых функций |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
RU2472209C1 (ru) * | 2012-02-08 | 2013-01-10 | Закрытое акционерное общество "ИВЛА-ОПТ" | Логический модуль |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
RU2768627C1 (ru) * | 2021-04-02 | 2022-03-24 | федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" | Логический преобразователь |
CN115454378B (zh) * | 2022-09-01 | 2023-07-18 | 深圳市紫光同创电子有限公司 | 一种查找表电路 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3983539A (en) * | 1969-05-19 | 1976-09-28 | Burroughs Corporation | Polymorphic programmable units employing plural levels of sub-instruction sets |
US4037094A (en) * | 1971-08-31 | 1977-07-19 | Texas Instruments Incorporated | Multi-functional arithmetic and logical unit |
US4503511A (en) * | 1971-08-31 | 1985-03-05 | Texas Instruments Incorporated | Computing system with multifunctional arithmetic logic unit in single integrated circuit |
US3789206A (en) * | 1972-04-04 | 1974-01-29 | Bell Telephone Labor Inc | Threshold logic overflow detector for a three-input adder |
US3783254A (en) * | 1972-10-16 | 1974-01-01 | Ibm | Level sensitive logic system |
FR2253415A5 (de) * | 1973-12-04 | 1975-06-27 | Cii | |
US4125901A (en) * | 1976-10-27 | 1978-11-14 | Texas Instruments Incorporated | Electronic calculator or microprocessor having a multi-input arithmetic unit |
US4467444A (en) * | 1980-08-01 | 1984-08-21 | Advanced Micro Devices, Inc. | Processor unit for microcomputer systems |
US4601055A (en) * | 1984-04-10 | 1986-07-15 | The United States Of America As Represented By The Secretary Of Commerce | Image processor |
US4562537A (en) * | 1984-04-13 | 1985-12-31 | Texas Instruments Incorporated | High speed processor |
US4779210A (en) * | 1984-05-02 | 1988-10-18 | Hitachi Engineering, Co. Ltd. | Graphic processing apparatus |
US4785393A (en) * | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
US5249266A (en) * | 1985-10-22 | 1993-09-28 | Texas Instruments Incorporated | Data processing apparatus with self-emulation capability |
US5140687A (en) * | 1985-10-22 | 1992-08-18 | Texas Instruments Incorporated | Data processing apparatus with self-emulation capability |
US4933878A (en) * | 1988-07-07 | 1990-06-12 | Texas Instruments Incorporated | Graphics data processing apparatus having non-linear saturating operations on multibit color data |
US5231694A (en) * | 1986-01-23 | 1993-07-27 | Texas Instruments Incorporated | Graphics data processing apparatus having non-linear saturating operations on multibit color data |
US5051940A (en) * | 1990-04-04 | 1991-09-24 | International Business Machines Corporation | Data dependency collapsing hardware apparatus |
US5136539A (en) * | 1988-12-16 | 1992-08-04 | Intel Corporation | Adder with intermediate carry circuit |
US4905180A (en) * | 1988-12-16 | 1990-02-27 | Intel Corporation | MOS adder with minimum pass gates in carry line |
US5081698A (en) * | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US5226125A (en) * | 1989-11-17 | 1993-07-06 | Keith Balmer | Switch matrix having integrated crosspoint logic and method of operation |
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
-
1993
- 1993-11-30 US US08/159,345 patent/US5485411A/en not_active Expired - Lifetime
-
1994
- 1994-11-30 EP EP94308901A patent/EP0657803B1/de not_active Expired - Lifetime
- 1994-11-30 DE DE69430510T patent/DE69430510T2/de not_active Expired - Lifetime
- 1994-11-30 KR KR1019940032083A patent/KR100315407B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US5485411A (en) | 1996-01-16 |
KR950015059A (ko) | 1995-06-16 |
EP0657803A2 (de) | 1995-06-14 |
EP0657803A3 (de) | 1996-01-24 |
KR100315407B1 (ko) | 2002-02-28 |
EP0657803B1 (de) | 2002-05-02 |
DE69430510D1 (de) | 2002-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69430510T2 (de) | Arithmetik-Logikschaltung mit drei Eingängen | |
DE69430516T2 (de) | Arithmetisch-logische Einheit mit drei Eingängen, die die Summe einer ersten und einer zweiten booleschen Kombination berechnet | |
DE69428499T2 (de) | Bedingtes Speicherladen von einem Registerpaar | |
DE69419697T2 (de) | Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits | |
DE69432659T2 (de) | Rotationsregister zur orthogonalen Datentransformation | |
EP0655676A2 (de) | Arithmetisch-logische Einheit mit drei Eingängen, die gemischte arithmetische und boolesche Kombinationen macht | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
US5590350A (en) | Three input arithmetic logic unit with mask generator | |
US5696954A (en) | Three input arithmetic logic unit with shifting means at one input forming a sum/difference of two inputs logically anded with a third input logically ored with the sum/difference logically anded with an inverse of the third input | |
DE69625790T2 (de) | Verfahren und vorrichtung für anpassbare operationen durch einen prozessor | |
USRE44190E1 (en) | Long instruction word controlling plural independent processor operations | |
DE2900324A1 (de) | Mikroprogrammierbare arithmetische fliesskommaeinheit | |
DE10297000T5 (de) | Verfahren und Vorrichtung zur parallelen Datenverschiebung nach rechts mit Datenzusammenfügung | |
US5596519A (en) | Iterative division apparatus, system and method employing left most one's detection and left most one's detection with exclusive OR | |
DE69901338T2 (de) | Mikroprozessor mit mehreren registersätzen, die den gleichen logischen raum besitzen | |
US5442581A (en) | Iterative division apparatus, system and method forming plural quotient bits per iteration | |
US5512896A (en) | Huffman encoding method, circuit and system employing most significant bit change for size detection | |
US6173305B1 (en) | Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder | |
KR100315408B1 (ko) | 이동기를구비한3입력산술논리유닛 | |
DE3314035C2 (de) | ||
DE69428504T2 (de) | Drei-Eingänge-Arithmetik-Logik-Einheit mit Trommel-Rotationsschaltung | |
DE69327030T2 (de) | Schaltung zur Verzweigungsentscheidung eines Prozessors | |
JPH08161460A (ja) | 第1の入力に加算された第2の入力と第3の入力との第1のブール組合せプラス第2の入力と第3の入力の第2のブール組合せの和を形成する3入力算術論理装置 | |
JPH087082A (ja) | バレル回転子及びマスク発生器を有する3入力算術論理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |