-
Diese Anmeldung bezieht sich 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 AS 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".
TECHNISCHES GEBIET DER ERFINDUNG
-
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.
HINTERGRUND DER ERFINDUNG
-
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 Rendem 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 Masse 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.
-
US-4.467.444 (Harmon Jr. u. a.) offenbart ein Datenverarbeitungssystem mit
einem Rechenwerk mit drei Operandeneingängen, wobei einer dieser Eingänge
mit einer Barrel-Rotationseinrichtung versehen ist. Der Barrel-Rotationsbetrag
wird durch ein aus einem Befehl abgeleitetes Rotationssteuersignal definiert.
-
EP 0464601 (NEC Corporation) offenbart ein Datenverarbeitungssystem mit
einem Rechenwerk mit drei Operandeneingängen, wobei einer dieser Eingänge
durch eine Schiebeeinrichtung geliefert wird. Der Verschiebungsbetrag wird
durch von einer Ablaufsteuerung ausgegebene Steuersignale definiert.
-
"An image processor for a multi image processing system" von Vorstermans
u. a. (Microprocessing & Microprogramming, Bd. 18, Nr. 1-5, S. 525-538),
offenbart ein Datenverarbeitungssystem mit einem Rechenwerk (ALU) mit drei
Operandeneingängen, wobei einer dieser Eingänge von einer Barrel-
Schiebeeinrichtung geliefert wird. Der Barrel-Rotationsbetrag kann direkt von
dem Programm oder von einem von dem ALU-Ausgang ladbaren Barrel-
Zählregister (BACNT) gesteuert werden.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Gemäß der Erfindung wird ein Datenverarbeitungssystem geschaffen, das
umfaßt: ein Rechenwerk mit ersten, zweiten und dritten Dateneingängen für
digitale Mehrbitsignale, die entsprechende erste, zweite und dritte
Eingangssignale repräsentieren, und einem Funktionssteuersignal-Eingang, der
ein Funktionssignal empfängt, wobei das Rechenwerk an einem Ausgang ein
digitales Mehrbitsignal erzeugt, das eine gemischte arithmetische und boolesche
Kombination aus den ersten, zweiten und dritten Eingängen entsprechend dem
Funktionssignal repräsentiert; eine Barrel-Rotationseinrichtung mit einem
digitalen Eingang, einem Rotationssteuereingang, der ein Rotationssteuersignal
empfängt, und einem Datenausgang, der an den zweiten Dateneingang des
Rechenwerks angeschlossen ist, wobei die Barrel-Rotationseinrichtung das zweite
digitale Mehrbitsignal um einen Betrag, der dem Rotationssteuersignal entspricht,
nach links dreht und das nach links gedrehte zweite digitale Mehrbitsignal dem
zweiten Dateneingang des Rechenwerkes zuführt; eine Datenregisterablage, die
umfaßt: mehrere Datenregister, einen ersten Datenausgangsbus, der an den ersten
Dateneingang des Rechenwerkes angeschlossen ist, um von einem ersten durch
Befehl spezifizierten Datenregister Daten, die darin gespeichert sind, abzurufen,
einen zweiten Datenausgangsbus, der an den Dateneingang der Barrel-
Rotationseinrichtung angeschlossen ist, um aus einem zweiten durch Befehl
spezifizierten Datenregister Daten, die darin gespeichert sind, abzurufen und einen
dritten Datenausgangsbus, der an den dritten Dateneingang des Rechenwerkes
angeschlossen ist, um aus einem dritten durch Befehl spezifizierten Datenregister
Daten, die darin gespeichert sind, abzurufen, und einen ersten Dateneingangsbus,
der an den Ausgang des Rechenwerkes 230 angeschlossen ist, um in einem
vierten durch Befehl spezifizierten der Datenregister die Kombination aus den
ersten, zweiten und dritten Eingangssignalen zu speichern,
-
dadurch gekennzeichnet, daß ein vorgegebenes der mehreren Datenregister
der Datenregisterablage ein Spezialfunktion-Datenregister ist, das darin einen
voreingestellten B arrel-Rotationsbetrag speichert; und der Rotationssteuereingang
der B arrel-Rotationseinrichtung den voreingestellten B arrel-Rotationsbetrag des
Spezialfunktion-Datenregisters empfängt.
-
In einer Ausführungsform enthält eine Datenverarbeitungsvorrichtung ein
Dreieingangs-Rechenwerk. Dieses Dreieingangs-Rechenwerk bildet ein digitales
Mehrbitsignal, das eine Kombination aus dem ersten, zweiten und dritten
Eingangssignal repräsentiert, die durch ein Funktionssignal ausgewählt wird. Die
Datenverarbeitungsvorrichtung enthält mehrere Datenregister zum Speichern von
Daten und des Ausgangssignals des Rechenwerks.
-
Eine Barrel-Rotationseinrichtung, die die Eingangsdaten um einen Betrag, der
einem Rotationssteuersignal entspricht, nach links dreht, liefert ein
Eingangssignal an das Dreieingangs-Rechenwerk. Ein Spezialfunktion-
Datenregister speichert einen voreingestellten Barrel-Rotationsbetrag, der einen
voreingestellten Rotationsbetrag der Barrel-Rotationseinrichtung steuert. Ein
Rotationssteuersignal-Multiplexer wählt zwischen der voreingestellten Barrel-
Rotation oder einer vorgegebenen Menge von Datenbits, die aus einem der zwei
Datenregister abgerufen werden. Der Rotationssteuersignal-Multiplexer kann
außerdem ein Null-Eingangssignal auswählen, wodurch keine Rotation durch die
Barrel-Rotationseinrichtung spezifiziert wird.
-
Vorzugsweise enthält die Datenverarbeitungsvorrichtung eine an den Eingang
der Barrel-Rotationseinrichtung angeschlossene Quelle für konstante Einsen.
Diese Quelle für konstante Einsen liefert ein digitales Mehrbitsignal "0001" an die
Barrel-Rotationseinrichtung. Dies ermöglicht, bei der Steuerung des
Rotationsbetrags der Barrel-Rotationseinrichtung ein zweites Eingangssignal der
Form 2N zu erzeugen, wobei N der Rotationsbetrag ist.
-
Vorzugsweise enthält die Datenverarbeitungsvorrichtung einen Ausgangsbus
von der Barrel-Rotationseinrichtung zu den Datenregistern. Dies ermöglicht, das
Ausgangssignal der Barrel-Rotationseinrichtung unabhängig vom Ergebnis des
Rechenwerks zu speichern.
-
Ein weiteres Eingangssignal in das Rechenwerk kommt von einem
Multiplexer, der zwischen Daten, die aus einem Datenregister abgerufen werden,
und wenigstens einer Maske, die von einem Maskengenerator aus Daten gebildet
wird, die aus einem Datenregister abgerufen werden, wählt. Das dritte
Eingangssignal kann außerdem ein durch Befehl spezifiziertes Sofortfeld sein.
Eine bevorzugte Form des Maskengenerators erzeugt entsprechend einem
Maskeneingangssignal eine Maske mit einer Anzahl rechtsbündiger Einsen.
Dieses Maskeneingangssignal kann gemäß der Auswahl durch einen Multiplexer
der voreingestellte Barrel-Rotationsbetrag oder eine vorgegebene Anzahl der von
einem Datenregister abgerufenen niederwertigsten Bits sein. Eine zweite
bevorzugte Form des Maskengenerators erzeugt eine Maske aus: entweder (1)
einer Zahl, die der Bitstelle der am weitesten links stehenden 1 der aus einem
Datenregister abgerufenen Daten entspricht; oder (2) einer Zahl, die der Bitstelle
einer am weitesten rechts stehenden 1 der aus einem Datenregister abgerufenen
Daten entspricht; oder (3) einer Zahl, die der Bitstelle eines am weitesten links
stehenden aus einem Datenregister abgerufenen Datenbits, das sich von dem
höchstwertigen Bit unterscheidet, entspricht; oder (4) einer Zahl, die der Bitstelle
eines am weitesten rechts stehenden aus einem Datenregister abgerufenen
Datenbits, das sich von dem niederwertigsten Bit unterscheidet, entspricht.
-
In der bevorzugten Ausführungsform dieser Erfindung ist das Dreieingangs-
Rechenwerk in wenigstens einem digitalen Bild-/Graphikprozessor als Teil eines
Multiprozessors, der in einer in der Bildverarbeitung verwendeten einzelnen
integrierten Schaltung ausgebildet ist, ausgeführt.
KURZBESCHREIBUNG DER ZEICHNUNG
-
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;
-
Figur 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;
-
Figur 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 Blockschaltplans 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.
AUSFÜHRLICHE BESCHREIBUNG BEVORZUGTER
AUSFÜHRUNGSFORMEN
-
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 Rost-Verarbeitungssystem 1. Das Rost-
Verarbeitungssystem 1 liefert die Datenverarbeitung für das Rost-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 Rost-
Verarbeitungssystem 1. In der Anordnung aus Fig. 1 arbeitet die integrierte
Mehrprozessorschaltung 100 unabhängig von dem Rost-Verarbeitungssystem 1.
Die integrierte Mehrprozessorschaltung 100 spricht aber auf das Rost-
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,
Heiligkeit 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-/Graphilcprozessoren 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 2K Bytes.
-
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 (1) 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
(1) 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
Gnandlage ä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-/Graphilcprozessor 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 MIIVID-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 (5) 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 periodisches 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 Aufftisch- 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 gm 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-TAGO, 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 Softwareverzweigtung die
Adresse des nächsten Befehlsworts. Falls die synchronisierte MLMD-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 Quelidatenbus 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 Quelidatenbus 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-/Graphilcprozessors 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 Quelidatenbus
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 Quelidatenbus 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 Quelidatenbus 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 ausführlicher 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 JRA 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 ausführlicher geschildert wird, enthält die Adressierungseinheit 120
getrennte globale und lokale Adressierungseinheiten, die die Adressen auf dem
Adressenbus 121 für den globalen Fort 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 für den globalen Port 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 Quelidatenbus
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.
Tabelle 1
Symbol Operation
-
~ 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 ausführlich
geschildert.
-
Fig. 6 zeigt die Felddefinitionen für das Statusregister 210. Das Statusregister
210 kann über den Quelidatenbus 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 ausführlich 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 Nulivergleichsoperation 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 "t-Bit (Bit 28) speichert &ne 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
Befehlskiassen 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 mit 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 scheiben. 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 ausführlich 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 Ergebnis status 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 "A-size"-Feld Halbwort-Operationen spezifiziert,
speichert das Mehnnerkerregister 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 Mehnnerkerregister 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
Mehnnerkerregister 211 können über den Quelidatenbus 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
Rotationsregisterbits Oktett von Bits von jedem Bit D7-D0
-
31-24 24
-
23-16 16
-
15-8 8
-
7-0 0
-
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 Quelidatenbus 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
Uhrzeigersinn 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
Befehlskiassen 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
Funktionsmodifizierercode Ausgeführte Modifizierung
-
0000 normale Operation
-
0001 cain
-
0010 %!, Wenn Maskenerzeugungsbefehl
LMO, wenn keine Maskenerzeugungsbefehl
-
0011 (%! und cain), wenn Maskenerzeugungsbefehl
RMO, wenn keine Maskenerzeugungsbefehl
-
0100 A-Port = 0
-
0101 A-Port = 0 und cain
-
0110 (A-Port = 0 und %!), wenn Maskenerzeugungsbefehl
LMBC, wenn keine Maskenerzeugungsbefehl
-
0111 (A-Port = 0 und %! und cain), wenn
Maskenerzeugungsbefehl
RMBC, wenn kein Maskenerzeugungsbefehl
-
1000 Rechenwerks-Mehrfachoperationen,
Übertrag/Überträge für die nächsthöhere Stelle -->
Mehrmerkerregister
-
1001 Rechenwerks-Mehrfachoperationen,
Null-Ergebnisse(e) --> Mehrmerkerregister
-
1010 Rechenwerks-Mehrfachoperationen,
Übertrag Überträge für die nächsthöhere Stelle -->
Mehrmerkerregister
Drehen um "Asize"-Feld des Statusregisters
-
1011 Rechenwerks-Mehrfachoperationen,
Null-Ergebnisse(e) --> Mehrmerkerregister, Drehen
um "Asize"-Feld des Statusregisters
-
1100 Rechenwerks-Mehrfachoperationen,
Übertrag/Überträge für die nächsthöhere Stelle -->
Mehnnerkerregister,
Lösche Mehrmerkerregister
-
1101 Rechenwerks-Mehrfachoperationen,
Null-Ergebnisse(e) --> Melirmerkerregister,
Lösche Melirmerkerregister
-
1110 reserviert
-
1111 reserviert
-
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 Andern
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 getrennt 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 direkt zu spezifizieren, anstatt durch eine Formel wie
für Nicht-EALU-Operationen.
-
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 ausführlicher geschildert.
-
Das "S"-Bit (Bit 16) des Datenregisters D0 gibt die Auswahl der
Vorzeichenerweiterung an. Das "5 "-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
inwenieren, 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"-, "1"- und "S"-Bits des
Datenregisters D0. Es wird angemerkt, daß ein "X"-Eintrag entweder für das "1"-
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 "5"- und "1"-
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 Steife. Dieses Bit ermöglicht, den Übertrag von einer
vorhergehenden Stelle zur Laufzeit durch das Eingangs signal 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"-, "1"- 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 B arrel-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 beliefern 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 Quelidatenbus 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 globalen
Quelidatenbus Gsrc 105 und über den Puffer 106 von einer Feruquelle 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 Barrelt-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 "lIex" steht, im folgenden hexadezimal ausgedrückt sind.
Daten vom Quelldatenbus für den globalen Port Gsrc 105 können wie zuvor
beschrieben als Feruquelle an die Barrel-Rotationseinrichtung 235 geliefert
werden. Wenn der Puffer 236 freigegeben ist, gibt die Barrel-Rotationseinrichtung
235 die Erzeugung irgendeiner Konstante der Form 2 N, 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 tun. 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 Multiplizieroperation
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 liefen 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/RMB C-
Schaltung 237 liefen 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
Bitstelle Ergebnis
-
0 31
-
1 30
-
2 29
-
3 28
-
4 27
-
5 26
-
6 25
-
7 24
-
8 23
-
9 22
-
10 21
-
11 20
-
12 19
-
13 18
-
14 17
-
15 16
-
16 15
-
17 14
-
18 13
-
19 12
-
20 11
-
21 10
-
22 9
-
23 8
-
24 7
-
25 6
-
26 5
-
27 4
-
28 3
-
29 2
-
30 1
-
31 0
-
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 5-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 13 liefen
ein Eingangssignal an einen 13-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-/Graphilcprozessor 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-Auswahisignal 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 cou1 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 couto 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. Ini diesem Fall wird entweder das
Signal für einen Null-Übertrag für die nächsthöhere Stelle couto 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
ausführlich 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 Si.
-
Die Ergebnislogik 401 bildet außerdem ein Signal 4 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 4 für eine
frühe Null verfügbar ist, bevor sich der Übertrag über den Übertragsabscbnitt
fortpflanzen kann. Dieses Signal 4 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 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 1%.
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-UNID-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 liefen
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 alls 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 liefen 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
Nullbeitrag 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 Steile 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&B&~Ci)
-
F3&(A~&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 cin1 & ~CSS),
-
wobei: CSS das Übertragssinn-Auswahlsignal ist. Die Bitschaltung 400 bildet
die zwei Signale cout0 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 - 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 Portpflanzungssignal 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 28 = 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 liefen 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 = P5, P6 = F4, F3 = P1 und F2 = F0 die Unabhängigkeit vom
Eingangssignal B sicher und liefen 4 steuerbare Funktionspaare zum
Spezifizieren von 16 booleschen logischen Funktionen der Eingangssignale A und
C. Die Auswahl F7 = F3, F6 F2, F5 = P1 und F4 = F0 ermöglicht über 4
steuerbare Funktionspaare die Auswahl von 16 booleschen logischen Funktionen
der Eingangssignale A und 13 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 = ~F6,
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
ausführlich 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 (@MIF),
ä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", "1", "5",
"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 Dateriregisters D0. In einer erweiterten Rechenwerks-Falsch-
Operation (FALUF-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
Befehlsdecodierungslogilc 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 gemäß dem empfangenen Befehlswort. 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 Klarheits grü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 Weinen 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 (MIPYS SIJB) 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 "0" 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 FALUF. 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 500 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 BALUF. 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 ("ah" = "1") oder eine boolesche
Operation angibt ("an" = "0") direkt an das Rechenwerk 230 übergeben. Das
Eingangssignal "c" des Multiplexers AEmux 510 ist eine konstante "1". Das
Gatten 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 aritmetisches 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-Gatten 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 des Befehlsworts "0" ist oder der Befehl nicht innerhalb der
Befehlsklassen 7-0 liegt.
-
Der Eingang "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 ihrer 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) der Befehl verlangt 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 Andern 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 Punktionssignale 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 P6, F4, F2 und F0 in die
Funktionssignale P7, PS, 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, P4, F2 und F0
durch die Funktionssignale P7, PS, F3 bzw. P1 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 Punktionssignale P3-P0 normalerweise unmodifiziert übergibt. Unter
bestimmten Bedingungen werden diese Punktionssignale P3-P0 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 ~ für den Übertrag von einer vorhergehenden
Stelle. Außerdem wird dieses Signal c~ 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 ~ 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) 1 (F0 & ~F2) 1 (~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 0 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 UNID-Gatter 594 liefen 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 Eingang "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,
liefen 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, liefen 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 ausführlich 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.
Tabelle 15
logische Funktion typischer Gebrauch
-
(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 Feldruaskieren
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.
Tabelle 16
-
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 davon sind unten ausführlich 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 2N-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 2N-1-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 vörzeichenloser 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 wahrend 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 Übertrags "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 ausführlicher 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 im einzelnen 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 13 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 andere 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 Operation 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 Tennen 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 leichter 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 P1-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
Punktionscode 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 Exlusiv-ODER
des P1-Codes Hex "AA" und des F2-Codes Hex "F0" erzeugt Hex "SA", 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 P1-codes Hex "AA" und des F2-Codes
Hex "OF" 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 (P1-Code Hex "AA")
und F2(B, C) = B & C (P2-Code Hex "CO") ergibt A + (B & C). Das bitweise
Exklusiv-ODER von Hex "AA" und Hex "CO" ergibt den in Tabelle 16
aufgeführten Rechenwerks-Punktionscode 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, nulisetzt. 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 nulisetzt.
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 FL(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,
liefen 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) = 13 & 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 Meiner
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
auswahlen. 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 10100111 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 = Inpui1 + [(Input2\\Shift_Amount) & ~%Shift_Amount]
-
Das folgende Beispiel zeigt eine Linksverschiebung von Hex "53FFFFA7" um
4 Bits, gefolgt von der Addition von Hex "00000AA". 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 10100111
-
Die Rotation um 4 Stellen in der Barrel-Rotationseinrichtung 235 liefert:
-
0011 1111 1111 1111 1111 10100111 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 Assembierschreibweise 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:
-
0101 0011 1111 1111 1111 1111 1010 0111
-
Die Rotation um 4 Stellen in der Barrel-Rotationseinrichtung 235 liefert:
-
0011 1111 1111 1111 1111 10100111 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 1000 1111
-
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 liefen 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 Assembierschreibweise 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 10100111
-
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 liefen:
-
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_Sight_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 10100111
-
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 n-üt dem Vorzeichenbit der ursprünglichen Zahl
übereinstimmen. Das zweite Beispiel zeigt eine vorzeichenbehaftete
Rechtsverschiebung der positiven Zahl Hex "5CFFFFA7" um 4 Stellen. Die
ursprüngliche Zahl ist in Binärschreibweise:
-
0101 11001111 1111 1111 1111 10100111
-
Die Linksrotation um 28 (32 - 4) Stellen liefen:
-
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 liefen das Ergebnis:
-
00000101 11001,111 1111 1111 1111 1010
-
Es wird angemerkt, daß bei dieser Rechtsverschiebung in die höchstwertigen
Bits, die mit 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 ro-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-Faxb-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
Additionmit-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 0000011010 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
Subtraktionmit-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 ausführlich 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 "slbnk"-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 ausführlich 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.
Tabelle 21
Operationsfeld Nicht-ALU-Operation
-
44443
-
32109
-
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 "1" 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.
Tabelle 22
Operationsfeldbits Sechsoperandenoperationen
-
6555
-
0987
-
0000 MPYS ADD
-
0001 MPYS SUB
-
0010 MPYS EALUT
-
0011 MPYS EALUF
-
0100 MPYU ADD
-
0101 MPYU SUB
-
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; MYPU 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 ausführlich 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 "srl"-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 "src2"-Feld (Bits 44-42)
gibt eines der Datenregister 200 als den zweiten Eingang für den Multiplizierer
220 an. Das "src2"-Feld (Bits 41-39) gibt eines der Datenregister 200 als den
zweiten Eingang für den Multiplizierer 220 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 D 1 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-LSREO
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.
Tabelle 25
Größenfeld Datenwortgröße
-
32
-
09
-
00
-
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 ("L" = "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.
Tabelle 27
Größenfeld Datenwortgröße
-
87
-
00 Byte 8 Bits
-
00 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 Übertragung ü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 ausführlich 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
bekannte 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 "Limit' 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 definiert 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.
Tabelle 28
-
Lrm-Feld Adressierungsbetriebsart
-
87
-
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 ausführlich 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 34-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.
Tabelle 29
Grm-Feld Adressierungsbetriebsart
-
10
-
00 normale Adressierung
-
01 reserviert
-
10 Datenspeicher-Grundadresse
-
11 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 "Limlx" 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 unterstützt 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übertragungsformat 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.", "c", "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 "Gim/x"-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übertragungsformat 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
Speicherzugriffe. 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.
Tabelle 30
Prioritätsran Operation
-
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 Puffer 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 eingehenden 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 eingehenden 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.