DE3587833T2 - Arithmetische und logische Einheit mit erweiterter Funktion. - Google Patents

Arithmetische und logische Einheit mit erweiterter Funktion.

Info

Publication number
DE3587833T2
DE3587833T2 DE3587833T DE3587833T DE3587833T2 DE 3587833 T2 DE3587833 T2 DE 3587833T2 DE 3587833 T DE3587833 T DE 3587833T DE 3587833 T DE3587833 T DE 3587833T DE 3587833 T2 DE3587833 T2 DE 3587833T2
Authority
DE
Germany
Prior art keywords
bit
operand
bits
instruction
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3587833T
Other languages
English (en)
Other versions
DE3587833D1 (de
Inventor
Paul Chu
Sanjay Iyer
Deepak Mithani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE3587833D1 publication Critical patent/DE3587833D1/de
Application granted granted Critical
Publication of DE3587833T2 publication Critical patent/DE3587833T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3856Operand swapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Description

  • Üblicherweise sind Prozessoren aus einer Vielfalt von VLSI-Chips (very large scale integrated circuit) konstruiert, die als Baueinheiten in einer Architektur verwendet werden, die in zwei Unterprozessoren aufgeteilt werden kann: einen Befehlsprozessor, der die Reihenfolge und das Dekodieren der auszuführenden Befehle überwacht, und einen Datenprozessor, der die mittels der Befehle geforderten Operationen an den Daten durchführt. Der Befehlsprozessor weist üblicherweise einen Mikroprogrammspeicher auf, der Mikrobefehle enthält. Jeder Mikrobefehl enthält mehrere Bits zur Steuerung der Elemente in dem Datenprozessor. Ferner wird eine oder mehrere Vorrichtungen, die als Sequenziereinheit oder Mikroprogrammsteuereinrichtung bezeichnet werden, zur Ausgabe von Adressen verwendet, die an den Mikroprogrammspeicher angelegt werden, um auf die auszuführende Mikrobefehlsfolge zuzugreifen. Bei der Verarbeitung bedingter Sprungbefehle testet die Sequenziereinheit oder Mikroprogrammsteuereinrichtung die gewählten Statusbits des Datenprozessors, wie beispielsweise Überlauf, Null, Übertrag oder Negativ.
  • Frühere Datenprozessoren wurden in die Kategorien der 8-, 16- oder 32-Bit-Vorrichtung eingeordnet. Sie waren in der Lage, an 8, 16 bzw. 32 Bits arithmetische oder logische Operationen durchzuführen. Bei einigen dieser Datenprozessoren ist die Fähigkeit zur Durchführung von Operationen an gewählten Teilen eines Worts in voller Größe eingeschränkt. Beispielsweise kann ein 16-Bit-Datenprozessor in der Lage sein, an dem niederwertigsten Byte (8 Bits) eines 16-Bit-Wortes mit voller Größe Operationen auszuführen. Bei einem derartigen Ansatz besteht ein 16- Bit-Prozessor aus einer Parallelkombination aus vier Vier-Bit- Prozessoren. Dies wird üblicherweise als "Bit-Slice"-Technik bezeichnet.
  • Dieses Verfahren jedoch bringt ausgedehnte Parallelverbindungen der Anschlußpins der Datenprozessoren mit sich, was zu Fehlfunktionen führen kann und die Herstellungskosten des Mikroprozessors erhöht. Ferner werden bestimmte chipinterne Funktionen unnötigerweise dupliziert, beispielsweise die auf jedem Prozessorchip vorhandene Mikrobefehlsdekodierfunktion. Außerdem wird der Platz, der üblicherweise auf den gedruckten Leiterplatten, die zur Befestigung der Mikroprozessorchips verwendet werden, von hoher Bedeutung ist, durch die starke Zunahme an Datenprozessorchips verbraucht.
  • Während frühere 8- und 16-Bit-Datenprozessoren unter Verwendung bipolarer Halbleiterherstellungstechniken zur Verfügung standen, waren 32-Bit-Datenprozessoren vom langsameren Metalloxidsiliziumtyp (MOS). Zu einer Verschlechterung hinsichtlich der Geschwindigkeit trug ebenfalls bei, daß die früheren Prozessoren einen einzigen gemultiplexten Eingangs-/Ausgangs-Bus verwendeten, der den Eingangs- und Ausgangsoperationen üblicherweise ein Tastverhältnis von 50% auferlegte.
  • Bei modernen Datenverarbeitungssystemen werden zwischen dem Hauptprozessor und dessen Peripheriegeräten, Speichereinrichtungen oder Anschlüssen kontinuierlich Daten übertragen, wobei diese Daten häufig kodierte Steuerwörter umfassen, die von dem Peripheriegerät zusammengesetzt oder auseinandergenommen werden müssen. Somit kann ein Packen oder Entpacken dieser kodierten Datenwörter, die binär kodierte Dezimalzahlen (BCD) oder vom amerikanischen Standardcode für Informationsaustausch (ASCII) sein können, notwendig sein. Üblicherweise erfordert ein derartiges Packen und Entpacken eine Rotations- (d. h. eine Neujustierung der Bits des kodierten Worts) und Merge-Funktion (logisches UND-Verknüpfen des neujustierten Worts mit einer Maske, um nur die gewünschten Bits durchzulassen und die unerwünschten Bits zu sperren oder abzuwerfen). Rotations- und Vergleichsfunktionen (ähnlich dem Drehen und Mergen) sind ebenfalls zum Vergleichen einer Anzahl von Bits eines Steuer- oder Statusdatenworts mit einer vorbestimmten Unbekannten weit verbreitet. Diese Funktionen erfordern eine komplexe Programmierung und eine ungeregelte Menge an Verarbeitungszeit.
  • Frühere Datenprozessoren boten diesen Datenbearbeitungsmerkmalen nur begrenzt Unterstützung. Üblicherweise war Maskieren, sofern überhaupt verfügbar, an lediglich einem Operanden zugelassen, und die Maske wurde lediglich auf das gesamte Wort oder bestenfalls auf einen bytejustierten Teil davon aufgebracht. Wenn nur ausgewählte Teile der Operanden arithmetisch zu kombinieren waren, war eine komplizierte Programmierung erforderlich, worunter die Geschwindigkeit litt und unnötigerweise zusätzliche Befehle und Speicherplatz hinzugefügt wurden.
  • Ferner können sich während des Lesens, Schreibens oder der tatsächlichen Datenübertragung Fehler einschleichen. Folglich wurde die Fehlerkontrolle zum integrierten Bestandteil der Auslegung vieler Peripherieeinheiten und ihrer Hauptcomputer. Eine der bevorzugteren Verfahren von heute zur Fehlerermittlung umfaßt das Hinzufügen von einem oder mehr Bits, als "Redundanz"-Bits bezeichnet, zu den informationstragenden Bits eines Zeichens oder Zeichenstroms. Beispielsweise ist ein gewöhnlich zur Fehlerermittlung verwendete s Verfahren die einfache Paritätskontrolle.
  • Die Geschwindigkeit des Betriebs des Datenprozessors und daher des Mikroprozessors selber hängt zum großen Teil von der Architektur seiner internen Schaltungsanordnung ab. Der Durchsatz (die zur Ausführung eines Befehls erforderliche Zeit) hängt teilweise von der Zahl der Gatter ab, die ein Datenwert während seiner Verarbeitung passieren muß. Ferner kann die Betriebsgeschwindigkeit durch Kombination mehrerer Operationen zu einem Befehl erhöht werden. Beispielsweise bieten bestimmte, heute verfügbare Hochgeschwindigkeitsprozessoren eine mit anderen arithmetischen Funktionen durchzuführende Verschiebefunktion durch Anordnen einer Verschiebeeinrichtung am Ausgang des Prozessors. Somit kann eine arithmetische Operation und eine Verschiebung (wie z. B. bei der Durchführung eines Multiplikationsschrittbefehls erforderlich sein kann) in einem statt in zwei oder mehr Befehlszyklen durchgeführt werden, und dadurch wird die Betriebsgeschwindigkeit des Mikroprozessors erhöht. Die Verschiebeschaltung jedoch, die sich am Prozessorausgang befindet, ist ständig auf dem Datenweg und verlängert dadurch, wenn sie nicht benötigt wird, die Zeit, die für die Daten zum Passieren des Bearbeitungszyklus erforderlich ist; das heißt, die Gesamtdurchsatzzeit wird verlängert.
  • Ein anderes Merkmal der internen Schaltungsanordnung, das den Durchsatz verschlechtert, liegt in der arithmetischen Übertragsschaltung. Bei den früheren Prozessoren treten aufgrund der verwendeten bitweisen Übertragausbreitungsschemata Engpässe auf. Ferner erfordern diese Prozessoren eine hohe Zahl an Verbindungen und verwenden an der letzten Stufe der Übertragschaltung ein sehr breites Gatter. Ferner benötigen die früheren Prozessoren eine ausdrückliche Normalisierung des Ergebnisses jeder Gleitpunktmultiplikation oder -division. Zu diesem Zweck würde eine Reihe von Normalisierungsbefehlen ausgeführt; wobei die von den bestimmten Operanden abhängige Zahl multipliziert oder dividiert wird.
  • Die zur Zeit erhältlichen Datenprozessoren gehören zu einer der nichtkompatiblen Arten: diejenigen, die bei Subtraktionen einen Übertrag verwenden und diejenigen, die einen negativen Übertrag verwenden. Es steht kein Prozessor zur Verfügung, der mit beiden Schemata funktioniert, daher ist die Herstellung jeder der beiden Arten erforderlich, wenn ein mit einem beliebigen gegebenen Mikroprozessor kompatibler Prozessor erwünscht ist.
  • Ein weiterer Grund für die Inkompabilität heutiger Datenprozessoren mit bestehender Hardware liegt in den beiden Arten von chipinternen Paritätsprüfeinrichtungen, die gegenwärtig verwendet werden: geradzahlige Parität wird verwendet, wenn Kompabilität mit einer Transistor-Transistor-Logik (TTL) gewünscht ist, ungeradzahlige Parität bei emittergekoppelter Logik (ECL).
  • Der Artikel "Bit-sliced processor speeds through BCD math" in Electronic Design, Band 29, Nr. 25 vom 10. Dezember 1981, S. 104-112 offenbart eine Anordnung zum Kombinieren der Geschwindigkeit der bipolaren Vier-Bit-Scheiben-Architektur mit der Dezimalarithmetikfähigkeit in einem Mikroprozessorsystem. Eine Veröffentlichung mit dem Titel "Mask Generator" von C.B. Steiglitz im IBM Technical Disclosure Bulletin Band 24, Nr. 1, Juni 1980, offenbart eine Anordnung von in bestimmten Computerarchitekturen verwendeten Bitmasken.
  • Dementsprechend schafft die vorliegende Erfindung ein Mikroprozessorsystem mit einer Datenspeichereinrichtung zum Speichern mehrerer in Mehrfachbit-"Bytes" angeordneten Mehrfachbitdatenwörter; einer Sequenziereinrichtung zum zyklischen Erzeugen von Adressen der Datenwörter in der Datenspeichereinrichtung und zum Erzeugen von Datenprozessor-Mikroprogrammbefehlen aus einem Satz derartiger Befehle; einer mit der Speichereinrichtung verbundenen und auf die Befehlswörter reagierenden Datenprozessorvorrichtung zum Empfang der an den erzeugten Adressen lokalisierten Mehrfachbitdatenwörter und zur Verarbeitung der Mehrfachbitdatenwörter; und einer Decodereinrichtung zum Empfang der Befehlswörter und zur Erzeugung mehrerer Steuersignale für den Datenprozessor aus den Befehlswörtern; wobei die Datenprozessorvorrichtung eine Arithmetik-Logik-Einrichtung aufweist, die mit der Decodereinrichtung verbunden ist und auf eine Anzahl der Decodersteuersignale reagiert, die einen ersten Operandeneingang und einen zweiten Operandeneingang aufweist, die zum Empfang der Mehrfachbitdatenwörter mit der Speichereinrichtung verbunden sind; und wobei jeder dieser Sätze von Mikroprogrammbefehlen ein Befehlswort aufweist, bei dem mehrere Bits in mehreren Feldern angeordnet sind, einschließlich wenigstens eines Operationscodefelds, das den Befehl definiert, und eines Datenspezifizierungsfelds, das denjenigen Teil eines Datenworts definiert, der während der Ausführung dieses Befehls zu verarbeiten ist; gekennzeichnet durch
  • eine mit der Decodereinrichtung verbundene und auf eine Anzahl der Steuersignale reagierende Maskenerzeugungs- und -verschiebeeinrichtung zum selektiven Erzeugen und selektiven Aufwärtsschieben eines Mehrfachbitworts, um auf diese Weise ein Mehrfachbitmaskenwort zu erzeugen, das einen wählbaren Teil NULL- Bits und einen verbleibenden Teil EINS-Bits aufweist; und wobei die Arithmetik-Logik-Einrichtung einen mit der Maskenerzeugungseinrichtung verbundenen dritten Operandeneingang zum Empfang des Mehrfachbitmaskenworts aufweist und wählbare, durch das Operandencodefeld eines Prozessormikrobefehls spezifizierte arithmetische und/oder logische Operationen, angewendet auf die gewählten Teile der Datenwörter an den ersten und zweiten Operandeneingängen, innerhalb eines einzigen Taktzyklus des Prozessors ausführt, und an einem Ausgang ein Ausgangsmehrfachbitwort erzeugt, das innerhalb des den NULL-Bits des Maskenworts entsprechenden Teils das Ergebnis der arithmetischen und/oder logischen Operationen, angewendet auf die gewählten Teile der Datenwörter an den ersten und zweiten Operandeneingängen, welche diesen Bitpositionen, an denen die Maskenbits Null sind, entsprechen, enthält, und das innerhalb des den EINS-Bits des Maskenworts entsprechenden verbleibenden Teils den den EINS-Bits des Maskenworts entsprechenden Teil des Mehrfachbitdatenworts am entweder ersten oder zweiten Operandeneingang enthält, und zwar abhängig von dem Operationscodefeld des Prozessormikrobefehls.
  • In dem bevorzugten Ausführungsbeispiel weist der Prozessor zwei 32-Bit-gewidmete Eingangsbusse auf, wodurch ihm die Fähigkeit des Empfangens und gleichzeitigen Kombinierens der zwei 32-Bit- Datenoperanden auf diesen in Eins-, Zwei-, Drei- oder Vier-Byteausgerichteten Teilen gegeben ist, so daß komplizierte Befehle in einem einzigen Befehlszyklus ausgeführt werden können. Das Ergebnis erscheint auf einem 32-Bit-gewidmeten Ausgangsbus. Der Prozessor weist eine Arithmetik-Logik-Einheit (ALU) mit den beiden 32-Bit-Datenoperanden als Eingängen, mit einer mit einem der Operandeneingänge verbundenen 64-Bit-Verschiebeschaltung und einer Maskenerzeugungs-/-verschiebeeinrichtung als drittem Operanden auf. Durch diese Struktur gibt die ALU dem Prozessor die Fähigkeit, herkömmliche Arten von Befehlen - z. B. Durchlaufen, Komplementieren, Zweier-Komplementieren, Addieren, Subtrahieren, UND, NAND, ODER, NOR, XOR und XNOR an beliebigen gewählten Ein-, Zwei-, Drei- oder Vier-Bytes des Operandenpaars auszuführen, wobei der nichtausgewählte Teil unverändert durchläuft. Ferner befähigt die Möglichkeit des gleichzeitigen Empfangens und Kombinierens von drei Operanden, zusammen mit der Verschiebungsmöglichkeit an einem Operandeneingang und dem Maskieren beider Operandeneingänge, die ALU, beispielsweise drei Operandenbefehle auszuführen, allesamt mit Maskieren jeder Funktion, sowie Rotieren und Mergen, und zwar in einem einzigen Befehlszyklus. Die gesamte 32-Bit-Prozessorarchitektur ist so gestaltet, daß sie als einzige integrierte Schaltung hergestellt werden kann.
  • In dem bevorzugten Ausführungsbeispiel ist der Datenprozessor der vorliegenden Erfindung in einem Mikroprozessor betreibbar, welcher eine Mikroprogrammspeichereinheit enthält, die 9-Bit- Befehlswörter enthält, auf die Adressen zugreifen, die ihr von einer mikroprogrammierten Sequenziereinheit zugeführt werden. Der Datenprozessor ist so konstruiert, daß er mit einem Doppel- Zugriff-Direktzugriffsspeicher (RAM) verwendet werden kann, der als Registerdatei wirkt.
  • Der 32-Bit-Bipolar-Prozessor der beschriebenen Art realisiert eine zweifache Geschwindigkeitszunahme: Zunächst ist er dadurch, daß er in der Lage ist, arithmetische oder logische Operationen an 32-Bit-Wörtern vorzunehmen, in der Lage, viermal oder doppelt so viele Daten pro Befehlszyklus zu verarbeiten wie ein gleichschneller bipolarer 8- oder 16-Bit-Prozessor. Zweitens wäre die Befehlszykluszeit aufgrund der bipolaren Konstruktion mit den schnellsten 8- oder 16-Bit-Prozessoren vergleichbar. Zur weiteren Verbesserung des Durchsatzes der Drei-Bus-Architektur erleichtert der Datenprozessor das Parallelschalten anderer derartiger Prozessoren.
  • Die ALU empfängt Datenoperanden in Form von 32-Bit-Datenwörtern an den beiden Datenoperandeneingängen über Datenwörter von außen vermittelte Datenleitungen, wobei die Eingänge nominell Ursprungseingang und Zieleingang genannt werden, und wobei die Datenleitungen gemultiplext werden, um die darauf befindlichen Datenwörter an die entsprechenden Datenoperandeingänge der ALU entsprechend dem bestimmten Befehl, der die Prozessoroperation bestimmt, zu übertragen.
  • Das Verbinden eines der Operandeneingänge der ALU mit dem Multiplexer erfolgt über eine 64-Bit-Aufwärtsschiebeschaltung, eine kombinatorische Logikanordnung, die in der Lage ist, die 64 Bits der verketteten 32-Bit-Datenwörter um 0-31 Stellen zu verschieben. Die höchstwertigen 32 Bits sind das Ergebnis. Das Abwärtsschieben kann durch Anlegen des Operanden an die niederwertigsten 32 Dateneingangssignale der Verschiebeeinrichtung und anschließendes Aufwärtsschieben des Zweier-Komplementier-Wertes des Verschiebungszählstandes bewirkt werden. Die Verschiebeeinrichtung wird auch in einen Barrel-Verschiebemodus (barrel-shifter mode) zur Durchführung von Aufwärts-/Abwärtsverschiebungen oder Rotationen an jedem der 32-Bit-Datenwörter einzeln verwendet. Die zur Durchführung der Verschiebungen verwendete Information stammt aus einer von zwei Quellen: entweder als von externen Quellen oder von einem Informationsbyte aus einem internen Statusregister an die Anschlußpins angelegt. Das verschobene Wort wird an einen Operandeneingang von ALU angelegt, die beiden Operanden entsprechend dem bestimmten Befehl, der den Prozessorbetrieb in einem Operationszyklus bestimmt, einer Merge-Funktion unterzogen.
  • Die Prozessorvorrichtung funktioniert auf ein einem Eingangsanschluß zugeführtes Taktsignal und auf 9-Bit-Befehle hin, die von einer Dekodierschaltung empfangen und dekodiert werden, welche ihrerseits mehrere Gattersignale auf einem Steuerbus ausgibt, um die Operanden durch die ALU auszuwählen und zu führen, um das durch den empfangenen Befehl spezifizierte Ergebnis zu erhalten. Außerdem ist die Prozessorvorrichtung so strukturiert, daß sie arithmetische Operationen in einem 8-Bit-(Byte)-, einem 16-Bit-(Zwei-Byte)-, einem 24-Bit-(Drei-Byte)- oder einem 32-Bit-(Vier-Byte)-Modus durchführt, so daß die von den Steuersignalen, die von der Dekodierschaltung ausgegeben werden, ausgeführten Wähl- und Gatterfunktionen die geeignete Zahl an Operandenbits zu und durch die ALU wählt und gattert. Die Bits des/der nichtgewählten Byte(s) entweder des Ursprungs- oder des Zieloperanden werden abhängig von dem Befehl unbeeinträchtigt zum Ausgang geleitet.
  • Zur kommerziellen Anwendung liefert der Datenprozessor Arithmetik für binärkodierte Dezimalzahlen (BCD) von variabler Länge.
  • Die in dem Prozessor des vorliegenden Ausführungsbeispiels vorgesehene ALU ist ferner imstande, logische Operationen an jedem beliebigen ausgewählten Satz von 0-31 zusammenhängenden Bits, beginnend an einer beliebigen Bitposition innerhalb der Datenwörter, durchzuführen. Wie bei den arithmetischen Operationen passieren die Bits der nichtgewählten Teile entweder des Ursprungs- oder des Zieloperanden unbeeinträchtigt.
  • Der Prozessor verwendet ein 32-Bit-Statusregister zum Angeben des Status der verschiedenen internen Parameter, wie beispielsweise Überlauf, Null, Übertrag oder Negativ. Der Prozessor weist eine gewidmete Schaltungsanordnung auf, die eine Zwei-Bit-aufeinmal-"Bewegungszelle", einen modifizierten Booth-Multiplikationsalgorithmus implementiert, der sowohl arithmetische Operanden mit Vorzeichen als auch solche ohne verarbeitet. Die ALU beinhaltet einen schnellen Vollparallelübertrag, indem eine Zwei-Bit-Logikzelle verwendet wird, die vier bedingte Summierungen liefert, in denen eine Last-Minute-Korrektur des Übertrags erfolgt. Dadurch wird erreicht, daß die arithmetischen Operationen mit ungefähr der Hälfte der Übertragerzeugungslogik der voll-Look-ahead-Logik ausgeführt werden, und dies erfolgt um eine Gatterebene schneller als bei dieser Logik. Wenn jedoch eine Verschiebung durchzuführen ist, wird die Look-ahead-Logik gesperrt und die zu verschiebenden Operanden werden an die 64- Bit-Aufwärtsschiebeeinrichtung und dann an einen ALU-Operandeneingang angelegt. Andere Operandeneingänge der ALU empfangen einen Maskenoperanden oder einen mit dem verschobenen Operanden zu mergenden Operanden, abhängig von dem bestimmten Befehl, wodurch komplexe Befehle mit einem einzigen Durchlauf durch die ALU und in einem Befehlszyklus ausgeführt werden. Die Ergebnisse jeder Operation werden selektiv in einem beliebigen (oder mehreren) der oben beschriebenen Speichereinrichtungen gespeichert.
  • Ein Voll-Ein-, -Zwei-, -Drei- und -Vier-Byte-Prioritätskodierschema wird von dem Prozessor implementiert.
  • Die Priorisieroperation erleichtert die Normalisierung der Gleitpunktarithmetikergebnisse oder der Ermittlung der Graphikgrundelemente.
  • Die vorliegende Erfindung wird in den angehängten Ansprüchen definiert. Das Verständnis der obigen und weiterer Merkmale und Vorteile dieser Erfindung kann durch Bezug auf die folgende Beschreibung in Verbindung mit den Zeichnungen erlangt werden, welche ein bevorzugtes Ausführungsbeispiel der Erfindung zeigen.
  • Fig. 1 zeigt ein Mikroprozessorsystem, das eine 32-Bit-Datenprozessorvorrichtung gemäß der vorliegenden Erfindung verwendet; und
  • Fig. 2 ist ein Blockschaltbild einer Prozessorvorrichtung der vorliegenden Erfindung.
  • Fig. 3 zeigt die Bitzuweisung des Statusregisters der vorliegenden Erfindung.
  • Fig. 4A zeigt das Format eines von dem Datenprozessor der vorliegenden Erfindung ausgeführten Bytegrenzen-Ausrichtungsoperand-Befehls.
  • Fig. 4B zeigt die Formate von von der Vorrichtung der vorliegenden Erfindung verarbeiteten Bytegrenzen-Ausrichtungsoperanden.
  • Fig. 5A zeigt das Format eines Befehls mit längenvariablem Bitfeldoperanden, der von dem Datenprozessor der vorliegenden Erfindung ausgeführt wird, sowie dessen zugehörige Breite und Positionsinformation.
  • Fig. 5B zeigt das Format eines von der Vorrichtung der vorliegenden Erfindung verarbeiteten längenvariablen Bitfeldoperanden.
  • Fig. 6A zeigt die Ausführung eines Einzel-Bit-Abwärtsschiebebefehls von einfacher Genauigkeit durch den Prozessor der vorliegenden Erfindung.
  • Fig. 6B zeigt die Ausführung eines Einzel-Bit-Abwärtsschiebebefehls von doppelter Genauigkeit durch den Prozessor der vorliegenden Erfindung.
  • Fig. 7A zeigt die Ausführung eines Einzel-Bit-Aufwärtsschiebebefehls von einfacher Genauigkeit durch den Prozessor der vorliegenden Erfindung.
  • Fig. 7B zeigt die Ausführung eines Einzel-Bit-Aufwärtsschiebebefehls von doppelter Genauigkeit durch den Prozessor der vorliegenden Erfindung.
  • Fig. 8A ist ein Flußdiagramm eines von dem Prozessor der vorliegenden Erfindung durchgeführten mit Vorzeichen versehenen Divisionsalgorithmus mit einfacher Genauigkeit.
  • Fig. 8B ist ein Flußdiagramm eines von dem Prozessor der vorliegenden Erfindung durchgeführten Divisionsalgorithmus ohne Vorzeichen mit einfacher Genauigkeit.
  • Fig. 8C ist ein Flußdiagramm eines von dem Prozessor der vorliegenden Erfindung durchgeführten Multiplikationsalgorithmus ohne Vorzeichen mit einfacher Genauigkeit.
  • Fig. 9 zeigt die von dem Befehlsdekodierer erzeugten und dem Steuerbus des Prozessors der vorliegenden Erfindung zugeleiteten Steuersignale.
  • Fig. 10A und 10B sind Logikdiagramme des Maskenerzeugungsabschnitts der Maskenerzeugungs-/-verschiebeeinrichtung des Prozessors der vorliegenden Erfindung.
  • Fig. 11 ist ein Logikdiagramm des Maskenverschiebeabschnitts der Maskenerzeugungs-/-verschiebeeinrichtung des Prozessors der vorliegenden Erfindung.
  • Fig. 12 zeigt das Maskieren der Operanden durch die Datenprozessorvorrichtung der vorliegenden Erfindung.
  • Fig. 13A und 13B sind Blockdiagramme des ALU-Operationsblocks des Datenprozessors der vorliegenden Erfindung.
  • Fig. 14 ist ein Logikdiagramm einer repräsentativen normalen Logikzelle des ALU-Operationsblocks der vorliegenden Erfindung.
  • Fig. 15A ist ein Logikdiagramm einer repräsentativen Bytegrenzenzelle des ALU-Operationsblocks der vorliegenden Erfindung.
  • Fig. 15B ist ein Logikdiagramm der Bewegungszelle des ALU-Operationsblocks der vorliegenden Erfindung.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS DER ERFINDUNG Allgemeines
  • Der 32-Bit-Datenprozessor gemäß der vorliegenden Erfindung ist zur Verwendung in mikroprogrammierten Systemen vorgesehen. Der Prozessor ist so strukturiert, daß er in Form einer integrierten Schaltung als eine einzelne Baueinheitskomponente zur Verwendung mit anderen Komponenten zur Bildung eines Mikroprozessors hergestellt werden kann. Zusätzlich zu seinem vollständigen Arithmetik- und Logiksatz bietet, wie im folgenden zu erkennen, der Befehlssatz und die Architektur des Prozessors einen breiten Bereich an besonders nützlichen Datenverarbeitungsfunktionen. Sie reichen von Einzel-Operand-Befehlen, wie beispielsweise Bitsetzen, Bitrücksetzen, Bittesten, bis zu Drei-Operand-Befehlen, wie beispielsweise logische Operationen von variabler Breite, breitenvariable bytejustierte arithmetische Operationen, Rotation und Mergen sowie Multiplizier- und Dividier-Schritt- Operationen. Die Architektur des Prozessors bietet die Möglichkeit des Ausführens jedes dieser Befehle in einem einzigen Takt- (Befehls-)Zyklus.
  • Fig. 1 zeigt eine typische Mikroprozessorsystemsarchitektur, die einen gemäß den Lehren der vorliegenden Erfindung konstruierten 32-Bit-Datenprozessor aufweist. Die Systemarchitektur kann in zwei verschiedene Abschnitte unterteilt werden: einen Befehlserfassungs- und -verarbeitungsabschnitt A auf der linken Seite und einen Datenerfassungs- und -verarbeitungsabschnitt B auf der rechten Seite. Der Abschnitt A weist einen Sequenzierer auf, der Adressen erzeugt, welche an einen Mikroprogrammspeicher 14 gekoppelt werden, welcher das Mikroprogramm zur Steuerung sowohl des Befehlsverarbeitungsabschnitts A als auch des Datenbearbeitungsabschnitts B enthält. Die Sequenz der Befehlswörter, die auf die von dem Mikroprogrammsequenzierer 12 gelieferten Adressen hin aus dem Mikroprogrammspeicher 14 gelesen werden, wird dem Pipeline-Register 16 zugeführt. Der in Fig. 1 dargestellte Sequenzierer 12 kann durch eine integrierte Schaltung implementiert werden, die von der Anmelderin unter der Bezeichnung Teil Nr. AM29331 (Microprogram Sequence Controller genannt) vertrieben wird.
  • Der Datenerfassungs- und -bearbeitungsabschnitt B enthält die Datenverarbeitungsschaltungen, die generell mit 20 bezeichnet sind, wozu die Arbeitsregister 22 und die 32-Bit-Datenprozessorvorrichtung 24 der vorliegenden Erfindung gehören. In dem Prozessor enthalten sind die Arithmetik-Logik-Einheit (ALU) 26 und das Statusregister 28. Die Datenverarbeitungsschaltungen verarbeiten Daten, die bei Durchführung irgendwelcher Operationen, welche durch den "Maschinen"-Befehl angefordert werden, von einem Speicher 30 abgerufen, auf den durch die Datenerfassungsschaltungen, die generell mit 32 bezeichnet sind, verwiesen wird, und zwar entsprechend einem Programmzähler 34 adressiert und über ein Speicheradreßregister 36 dem Zugriff ausgesetzt. Jeder "Maschinen"-Befehl wird an dem Mikroprozessor durch eine Sequenz von Mikrobefehlen, die von der Mikroprogrammsequenzsteuereinrichtung 12 gewählt werden, implementiert.
  • Zwar sind zum Zweck der Beschreibung bestimmte der in Fig. 1 dargestellten Blöcke als ausdrücklich durch bestimmte Leitungen verbunden dargestellt, doch sei darauf hingewiesen, daß die Datenkommunikation zwischen beliebigen der dargestellten Blöcke entlang eines bidirektionalen Datenbusses 38 erfolgen kann. In gleicher Weise können Adressen auf einem Adreßbus 40 zwischen beliebigen der dargestellten Blöcke übertragen werden.
  • Die Arbeitsregister 22 sind vorzugsweise als 32-Bit-breite Doppel-Zugriff-Direktzugriffsspeicher (RAM) implementiert und über 32-Bit-Busse 42 bzw. 44 mit DATA_A- und DATA_B-Eingängen der Datenprozessorvorrichtung 24 verbunden. Zwischen dem Datenbus 38 und dem Prozessor 24 werden Daten auf einem 32-Bit-Bus 46 übertragen, der mit einem Y-Ausgang des Prozessors 24 verbunden ist. Die Arbeitsregister 22 sind ebenfalls mit dem Y-Ausgang des Prozessors verbunden, und zwar über den Bus 46.
  • Das Pipeline-Register 16 und die Datenprozessorvorrichtungsschaltungen 24 sind durch einen 9-Bit-Bus 50, einen 5-Bit-breiten Bus 52, einen 6-Bit-Position-Bus 54 und 2 Steuerleitungen 56 und 58 miteinander verbunden, die jeweils Steuersignale an einen Ausgangsfreigabe- (OEy) - und einen Statusregisterausgangswähl- (STAT)-Anschluß des Prozessors 24 liefern. Über einen Bus 60 ist das Pipeline-Register 16 ferner mit den Eingängen (D) des Sequenzierers 12 verbunden. Ein Statusbus 62 leitet die Statusregistertestbits an den S-Anschlüssen des Prozessors 24 zu den CT- Eingängen des Sequenzierers 12.
  • Das Mikroprozessorsystem von Fig. 1 weist ferner einen Systemtaktgenerator 64 auf, der die verschiedenen Takt- und Zeitsteuerungssignale erzeugt, die von den anderen Elementen des Systems benötigt werden, einschließlich eines Taktsignales, das dem Taktimpuls-(CP)-Anschluß der Prozessorvorrichtung über die Signalleitung 66 zugeführt wird.
  • Der Eingangs-Ausgangs-Datenbus 38 ist als Verbindungsglied zwischen dem Mikroprozessorsystem von Fig. 1 und der Außenwelt vorgesehen. Zwischen dem Datenbus und dem Prozessor 24 werden Daten auf dem 32-Bit-Y-Bus 46 übertragen, der mit den Y-Anschlüssen des Prozessors verbunden ist. Wie deutlich werden wird, sind die Y-Anschlüsse der Prozessorvorrichtung 24 Drei- Zustands-Ausgänge, die, wie hier dargestellt, unter Steuerung des an den Ausgangsfreigabe-(OEy)-Anschluß des Prozessors 12 über die Steuerleitung 56 angelegten Signales die Ausgangsbusorganisation erleichtern.
  • Kurz gesagt, daß, was als "Maschinen"-Befehl bezeichnet werden kann, wird in ein Befehlsregister 68 geladen. Der Inhalt des Befehlsregisters wird an einen Mapping-Nur-Lese-Speicher (ROM) 70 angelegt, um wiederum die Adresse des ersten Mikrobefehls in dem Mikroprogrammspeicher 14 zu erzeugen, der ausgeführt werden muß, um die erforderliche Funktion (durch den von dem Befehlsregister 68 gehaltenen Befehl bestimmt) durchzuführen. Eine Verzweigung zu dieser Adresse tritt durch die Mikroprogrammsequenzsteuereinrichtung 12 auf. Der "Maschinen"-Befehl kann die Ausführung mehrerer Mikrobefehle verlangen, wie beispielsweise das Abrufen von Daten aus dem Speicher 30, das Durchführen einer arithmetischen oder logischen Operation durch die Datenverarbeitungsschaltungen 24, das Testen auf Überlauf oder andere Statusangaben innerhalb des Registers 28 und so fort.
  • Die Koordination dieser Operationen zwischen dem Befehlserfassungs- und -verarbeitungsabschnitt A und dem Datenerfassungs- und -bearbeitungsabschnitt B erfolgt folgendermaßen: auf von dem Mikroprogrammsequenzierer 12 gelieferte Adreßsignale hin werden aus dem Mikroprogrammspeicher 14 sequentiell Mehr-Bit-Mikrobefehlswörter ausgelesen. Jedes Mehr-Bit-Mikrobefehlswort (einschließlich eines 9-Bit-Mikrobefehlswortes für die Prozessorvorrichtung 10) wird in dem Pipeline-Register 16 gespeichert. Eine bestimmte Anzahl von nun in dem Pipeline-Register 16 enthaltenen Bits wird (parallel) zu den D-Eingängen des Sequenzierers 12 als nächste Mikrobefehlsinformation rückgeführt. Bestimmte andere der Bits erscheinen als Steuersignale auf den Bussen 52 und 54, um dem Datenprozessor Breiten- und Startpositionsinformationen zur Verwendung während der logischen Operationen zuzuführen; und 9 der in dem Pipeline-Register 16 gehaltenen Bits werden auf dem Bus 50 den Befehlseingangsanschlüssen INST der Prozessorvorrichtung 24 als ein Befehlswort zugeführt.
  • Diese Signale verursachen eine Datenübertragung von dem Speicher 30 zu dem Arbeitsregister 22 und deren anschließende Verarbeitung durch die Datenprozessorvorrichtung 24 und die Übertragung des Ergebnisses an den Speicher 30. Während der Datenverarbeitung kann der Prozessor 24 bestimmte Bits in das Statusregister 28 setzen. Die Prozessorvorrichtung liefert diese Information auf dem Statusbus 62 an die Test-CT-Eingänge der Mikroprogrammsequenzsteuereinrichtung 12, um die Adresse des nächsten Mikrobefehls bedingt zu modifizieren.
  • Dem Fachmann ist ersichtlich, daß das Mikrocomputersystem von Fig. 1 lediglich eine einfache Veranschaulichung der Verwendung des Prozessors 24 ist. In der Praxis werden zusätzliche Schaltungskomponenten hinzugefügt, um die Leistungs- und Datenverarbeitungsfähigkeit zu erhöhen.
  • Die 32-Bit-Datenprozessoreinheit
  • Die interne Architektur des Datenprozessors 24 ist in Fig. 2 dargestellt. Der 9-Bit-Teil des in dem Pipeline-Register 16 (Fig. 1) enthaltenen Mikrobefehls wird auf dem Bus 50 (Fig. 1) angeordnet und an den neun Befehlseingangsanschlüssen INST&sub0;-INST&sub8; des Prozessors 24 empfangen. Ein 7-Bit-Prozessorbefehlswort, das die an die Anschlüsse INST&sub0;-INST&sub6; angelegten Signale aufweist, wird zu einem Befehlsdecoder 100 geleitet. Der Befehlsdecoder 100 besteht aus einer programmierbaren Logik-Array (PLA) zum Dekodieren der 7-Bit-Prozessorbefehlswörter und zum Erzeugen von internen Steuersignalen aus diesen, die den anderen Elementen des Datenprozessors 24 zugeleitet werden, um das zur Ausführung des Prozessorbefehlswortes erforderliche Gattern und Steuern durchzuführen. Diese Steuersignale werden auf einem Prozessorsteuerbus 102 geleitet. Die Erzeugung und Art vieler der Steuersignale wird dem Fachmann nach der Beschreibung des gesteuerten Elements oder der gesteuerten Schaltung und den einzelnen Befehlswörtern intuitiv deutlich. Einige der erzeugten Steuersignale werden jedoch mit Bezug auf Fig. 9 und die folgenden Figuren ausführlicher erläutert, um das Verständnis des gesteuerten Elements bzw. der gesteuerten Schaltung und der Erfindung ihrerseits zu gewährleisten.
  • Der 2-Bit-Teil des 9-Bit-Befehlsworts, das an den Prozessoranschlüssen INST&sub7; und INST&sub8; empfangen wird, bestimmt die Bytebreite für die sogenannten Befehle mit byteausgerichtetem Operanden entsprechend der folgenden Tabelle I. Die an die Anschlüsse INST&sub7; und INST&sub8; angelegten Bytebreitensignale werden von dort durch Steuerleitungen 104 an einen Breitenmultiplexer (WIDTH MUX) 106 und einen Positionsmultiplexer (POS MUX) 108 geleitet. Tabelle I Bytebreitenwahl INST&sub8; Breite in Bytes
  • Auf den Signalleitungen 110 empfängt WIDTH MUX 106 den 5-Bit- Breiteninformationteil des in dem Pipeline-Register 16 (Fig. 1) enthaltenen Mikrobefehls, der über den Breitenbus 52 (Fig. 1) zu den 5 Eingangsanschlüssen W&sub0;-W&sub4; des Prozessors 24 geleitet wird. Der WIDTH MUX 106 ist ebenfalls über Signalleitungen 114 mit den fünf Bits STATUS&sub8;-STATUS&sub1;&sub2; des Statusregisters 112 (28 in Fig. 1) verbunden, das einen Breitenregisterteil 112a des 32-Bit-Statusregisters 112 aufweist. Auf die von dem Prozessor 24 auf dem Steuerbus 102, der ebenfalls mit dem WIDTH MUX 106 verbunden ist, empfangenen Breitensteuersignale W&sub0;-W&sub4; und die (von dem Befehlsdecoder 100 aus dem Prozessorbefehlswort erzeugten) Steuersignale hin wählt der WIDTH MUX entweder einen Satz von fünf Byteausrichtungsbefehlsbreitensignalen aus, die in dem Breitenregister 112a gespeichert und an die Signalleitungen 114 angelegt sind, oder den Satz von fünf logischen Befehlsbreitensignalen, die an die Signalleitungen 110 angelegt sind. Die gewählten fünf Breitensignale werden auf den Steuerleitungen 116 zu einer Maskenerzeugungs-/-verschiebeeinrichtung 118 geleitet.
  • Auf den Signalleitungen 120 empfängt der POS MUX 108 den 6-Bit- Positionsinformationsteil des Mikrobefehls, der in dem Pipeline- Register 16 (Fig. 1) enthalten ist und über den Positionsbus 56 (Fig. 1) zu den 6 Eingangsanschlüssen P&sub0;-P&sub5; des Prozessors 24 geleitet wird. Der POS MUX 108 ist ebenfalls über die Signalleitungen 122 mit den sechs Bits niedriger Ordnung STATUS&sub0;-STATUS&sub5; des Statusregisters 112 verbunden, die von einem Positionsregisterteil 112b kommen, welcher die acht Bits niedriger Ordnung STATUS&sub0;-STATUS&sub7;des 32-Bit-Statusregisters aufweist. Auf die von dem Prozessor 24 empfangenen Positionssteuersignale P&sub0;-P&sub5; und die auf dem ebenfalls mit dem POS MUX 108 verbundenen Steuerbus 102 vorhandenen (von PLA 100 aus dem Prozessorbefehlswort erzeugten) Steuersignale hin wählt der POS MUX entweder einen Satz von sechs Byteausrichtungsbefehlspositionssignalen aus, die in dem Positionsregister 112b gespeichert und an die Signalleitungen 122 angelegt sind, oder den Satz aus sechs logischen Befehlsbreitensignalen, die an die Signalleitungen 120 angelegt sind. Die gewählten sechs Positionssignale werden auf den Steuerleitungen 124 zu der Maskenerzeugungs-/-verschiebeeinrichtung 118 und einer 64-Bit-Verschiebeeinrichtung 126 geleitet.
  • Das an den INST&sub7;- und INST&sub8;-Anschlüssen empfangene Bytebreitensignal wird auch über die Signalleitungen 104 der Maskenerzeugungs-/-verschiebeeinrichtung 118 zugeführt. Der 32-Bit-Ausgang der Maskenerzeugungs-/-verschiebeeinrichtung 118 ist über einen 32-Bit-Bus 128 mit einem maskierten Operandeneingang (M) einer Drei-Operand-Arithmetik-Logik-Einheit (ALU) 130 (26 in Fig. 1) verbunden, die in dem Datenprozessor 24 enthalten ist. Die Maskenerzeugungs-/-verschiebeeinrichtung 118 erzeugt eine von zwei Arten von 32-Bit-Masken auf dem Bus 128, abhängig von den über den Steuerbus 102 daran angelegten Befehlssignalen und den auf den Leitungen 116 und 124 vorhandenen Breiten- und Positionssteuersignalen. Der erste Maskentyp ist 1 bis 4 Bytes breit und weist einen Bytegrenzen-Ausrichtungsoperanden auf, wobei dessen niederwertigstes Bit auf das Bit der niedrigsten Ordnung ausgerichtet ist. Die Breite des erzeugten M-Operanden wird gemäß der obigen Tabelle I bestimmt. Der zweite Maskentyp ist ein 1-bis- 32-Bit-Breitenoperand, der an einer beliebigen Position beginnt. In diesem Fall wird die Breite des erzeugten M-Operanden durch die dem Prozessor 24 eingegebenen Breitensteuersignale W&sub0;-W&sub4; und die Operandenstartposition (der Position des niederwertigsten Bits), wie sie von den dem Prozessor 24 eingegebenen Positionssteuersignalen P&sub0;-P&sub5; bestimmt wird, bestimmt. In diesem letzteren Fall kann der Operand auf das Bit der niedrigsten Ordnung ausgerichtet sein oder auch nicht.
  • Die von der Maskenerzeugungs-/-verschiebeeinrichtung 118 erzeugte Maske ist ein NULL-Satz niedriger Ordnung, der von einer Abschirmung aus EINSen begrenzt ist. Diese Maske wird dann von der Maskenerzeugungs-/-verschiebeeinrichtung auf Befehlssignale auf dem Steuerbus 102 hin von 0 bis 31 Bits aufwärts geschoben. Immer wenn ein Teil der Maske über das 31ste Bit höchster Ordnung hinaus verschoben wird, kehrt sie nicht zu dem niederwertigsten Bit 0 um. Vielmehr werden in die Positionen der niederwertigsten Bits, wie erforderlich, EINSen eingesetzt. Demgemäß erzeugt die Maskenerzeugungs-/-verschiebeeinrichtung 118 Masken und ermöglicht Verschiebungen an jedem angrenzenden Feld innerhalb eines 32-Bit-Worts und über eine Wortgrenze.
  • Der Datenprozessor 24 kann Daten an jedem von zwei Eingängen empfangen; einen Satz von 32 Dateneingangs-A-Anschlüssen DATA_A&sub0;- DATA_A&sub3;&sub1; und einen Satz von 32 Dateneingangs-B-Anschlüssen DA- TA_B&sub0;-DATA_B&sub3;&sub1;. Ein A-Bus 132 und ein B-Bus 134 leiten die an den DATA_A- bzw. DATA_B-Anschlüssen empfangenen 32-Bit-Datensignale sowohl zu einem Ursprungswählmultiplexer (SOURCE MUX) 136 als auch zu einem Swap-Multiplexer (SWAP MUX) 138. Ferner empfangen sowohl der SOURCE MUX 136 als auch der SWAP MUX 138 32 NULL-Bits repräsentierende Datensignale an ihren Eingängen, die von verschiedenen Prozessorbefehlen und von der 64-Bit-Schiebeeinrichtung 126 als eingebaute Konstante verwendet werden. Auf von dem Befehlsdecoder 100 erzeugte und über den Steuerbus 102 dem SOUR- CE MUX 136 zugeführte Steuersignale hin wählt der SOURCE MUX 136 entweder den A-Bus 132, den B-Bus 134 oder die NULL-Konstante aus, um über die Signalleitungen 140 mit dem höchstwertigen (MS) 32-Bit-Teil 126a der 64-Bit-Verschiebeeinrichtung 126 verbunden zu werden.
  • Der SWAP MUX 138 mit zwei Eingängen und zwei Ausgängen wird mit den von dem Befehlsdecoder 100 auf den Steuerbus 102 erzeugten Steuersignalen 100 versorgt und auf einer Signalleitung 120a wird das Bit hoher Ordnung des 6-Bit-Positionsteils des Mikrobefehls, der in dem Pipeline-Register 16 (Fig. 1) enthalten ist, zu dem Eingangsanschluß P&sub5; des Prozessors 24 geleitet und wählt entweder den A-Bus 132, den B-Bus 134 oder die NULL-Konstante als Ausgang an einem Ausgang OUT1, der über die Signalleitungen 142 mit dem niederwertigsten (LS) 32-Bit-Teil 126b der 64-Bit- Verschiebeeinrichtung 126 verbunden ist. Wenn entweder der A-Bus 132 oder der B-Bus 134 gewählt wird, ist der nicht gewählte A- Bus oder B-Bus Ausgang an einem zweiten Ausgang OUT2 des SWAP MUX 138, der über Signalleitungen 144 mit einem Eingang eines Multiplexers (S MUX) 146 verbunden ist, der den Operanden wählt, der über Signalleitungen 148 an einen S-Operandeneingang der ALU 130 anzulegen ist.
  • Der 32-Bit-Ausgang der 64-Bit-Verschiebeeinrichtung 126 wird über Signalleitungen 127 an einen R-Operandeneingang der ALU 130 angelegt und wird aus einer Kombination der auf dem A-Bus 132 und dem B-Bus 134 vorhandenen Datenwörter gebildet, und zwar auf das Positionieren dieser Eingänge darauf hin, auf die an den Steuerleitungen 124 von entweder den P&sub0;-P&sub5;-Anschlüssen des Prozessors hin oder dem Positionsteil 112b des Statusregisters 112 empfangenen gewählten Positionssteuersignale und die über den Steuerbus 102 angelegten Steuersignale hin.
  • Genauer gesagt, besteht der Ausgang der 64-Bit-Verschiebeeinrichtung 126 aus den höchstwertigen 32 Bits eines Ergebnisses, das durch Behandeln der auf den Steuerleitungen 124 empfangenen gewählten 6 Bits als eine 6-Bit-Zweierkomplementzahl (n), Leiten von entweder einer o-bis-31-Bit-Aufwärtsverschiebung (n positiv) oder einer 1-bis-32-Bit-Abwärtsverschiebung (n negativ) oder irgendeine andere Funktion gemäß der folgenden Tabelle II gebildet wird. TABELLE II 64-Bit-Verschiebeeinrichtungsausgang MS-Eingang LS-Eingang Effektive Funktion n-Bit-Linksverschiebung n-Bit-Rechtsverschiebung (A) n-Bit-Linksverschiebung (B) n-Bit-Rotation (A) Verketten A, B
  • Die Positionierung der Datenwörter auf dem A-Bus und dem B-Bus an den Eingängen zu der 64-Bit-Verschiebeeinrichtung 126 wird durch den bestimmten, an den INST&sub0;-INST&sub8;-Eingängen des Prozessors 24 empfangenen 9-Bit-Mikrobefehl und die sich ergebenden, von dem Befehlsdecoder 100 erzeugten Steuersignale erzielt, wie über den Steuerbus 102 an den SOURCE MUX 136 und den SWAP MUX 138 angelegt.
  • Die 64-Bit-Verschiebeeinrichtung 126 führt ihre gewählte Funktion direkt vor Anlegen des R-Operandeneingangs der ALU 130 zur Verarbeitung während desselben Befehlszyklus aus.
  • Der S MUX 146 wählt entweder den von Ausgang OUT2 des SWAP MUX 138 auf den Leitungen 144 zugeführten Eingang, einen Eingang auf einem Satz Signalleitungen 150, die den 32-Bit-Inhalt des Statusregisters 112 leiten, STATUS&sub0;-STATUS&sub3;&sub1;, oder einen Eingang auf einem Satz von Signalleitungen 152, die den 32-Bit-Inhalt eines 32-Bit-Multiplikator-Quotienten-(Q)-Registers 154 leiten. Der S MUX 146 legt die gewählten Signale an den S-Operanden der ALU 130 an, und zwar auf die über den Steuerbus 102 angelegten Steuersignale hin.
  • Die ALU 130 ist in der Lage, eine Vielzahl von Ein-, Zwei- oder Drei-Operand-Operationen an den 32-Bit-Daten auszuführen, die ihr auf die über den Steuerbus 102 angelegten Steuersignale und die ihr über die Signalleitungen 116 und 124 zugeleiteten Breiten- und Positionssteuersignale hin an ihren R-, M- und S-Operandeneingängen zugeführt werden. Der sich ergebende 32-Bit- Ausgang F erscheint auf den Signalleitungen 156. Ein 27-Bit-Teil der Leitung 156, der die höchstwertigen 27 Bits des ALU-Ausgangs aufweist, wird über die Signalleitungen 156a einem Satz (von siebenundzwanzig) Drei-Zustands-Ausgangstreibern 158 zugeführt. Die Treiber 158 ordnen das 27-Bit-Ergebnis auf einem bidirektionalen Drei-Zustands-Ausgangs-Y-Bus 162 an, der zum Empfangen, Leiten und Senden der 27 höchstwertigen Ausgangssignale zu den Ausgangsanschlüssen Y&sub5;-Y&sub3;&sub1; des Prozessors 24 vorgesehen ist. Die Drei-Zustands-Ausgangstreiber 158 werden von einem HIGH-Signal freigegeben, das von einem OEy-Anschluß des Prozessors 24 her auf einer Signalleitung geleitet wird.
  • Die fünf niederwertigsten Bits des 32-Bit-ALU-Ausgangs werden zu den Y&sub0;&submin;&sub4;-Ausgangsanschlüssen geleitet, und zwar über einen Fünf- Bit-Teil der Ausgangssignalleitungen 156, nämlich die Signalleitungen 156b, zu einem Y-Multiplexer (Y-MUX) 159, der auf die an ihn auf dem Steuerbus 102 angelegten Signale hin das 5-Bit-Ausgangssignal auf den Leitungen 156b an einen Satz (von fünf) Drei-Zustands-Ausgangstreibern 161 anlegen kann. Der Y-MUX 159 ist von verdrahteter ODER-Konstruktion und daher ist mit seinem Betrieb keine Gatterverzögerungsstrafe verbunden. Dann ordnen die Treiber 161 die niederwertigsten 5-Bits des ALU-Ausgangs auf einem Teil des bidirektionalen Drei-Zustands-Ausgangs-Y-Busses 162 an, der zum Empfangen, Leiten und Senden der fünf niederwertigsten Ausgangssignale zu den Ausgangsanschlüssen Y&sub0;-Y&sub4; des Prozessors 24 vorgesehen ist. Der Satz aus fünf Drei-Zustands- Ausgangstreibern 161 ist ebenfalls mit dem OEy-Anschluß verbunden.
  • Die ALU 130 ist über alle 32 Bits in dem Arithmetikmodus mit Vollparallelübertraglogik versehen. Die ALU weist sechzehn Zwei- Bit-ALU-Zellen auf, von denen es zwei Arten gibt: eine normale Zelle und eine Bytegrenzenzelle. Da die ALU in der Lage ist, an jedem Ein-, Zwei-, Drei- oder Vier-Byte-Byteausrichtungsoperanden Operationen vorzunehmen, extrahieren die Bytegrenzenzellen geeignete grenzorientierte Statusinformation.
  • Als Fortschritt gegenüber den ALUs nach dem Stand der Technik verwendet die ALU der vorliegenden Erfindung eine Parallelübertragslogik, die gleichzeitig mit anderen ALU-Funktionen verwendet wird. Insbesondere erzeugt die ALU 130 zwei Ergebnisse für jedes Bit; bei einem wird angenommen, daß der Carry-In eine EINS ist, bei dem anderen, daß der Übertrag eine NULL ist. Der geeignete Übertragseingang an jeder ALU-Bitposition wird im letzten Augenblick bestimmt, wodurch die bei früheren Prozessoren auftretende Array-Ausbreitungsverzögerung eliminiert wird.
  • Die 32-Bit-ALU 130 hat die Fähigkeit, sämtliche herkömmlichen Ein- und Zwei-Operanden-Operationen auszuführen, wie beispielsweise Durchlaufen lassen, Komplementieren, Zweierkomplementieren, Addieren, Subtrahieren, UND-, ODER-, NOR-, EXKLUSIV-ODER- und EXKLUSIV-NOR-Operationen. Bei den Zwei-Operand-Operationen werden die 32-Bit-Operanden nominell als Ursprungseingang bezeichnet und an den R-Operandeneingang der ALU 130 und den Zieleingang und an den S-Operandeneingang der ALU angelegt. Das Ergebnis der Operation kann, abhängig von dem ausgeführten Befehl, entweder am Ursprungs- oder Zielort gespeichert werden.
  • Ferner kann die ALU auch maskierte Zwei- oder Drei-Operand-Operationen ausführen, bei denen der von der Maskenerzeugungs-/verschiebeeinrichtung 118 erzeugte Maskenoperand an den M-Operandeneingang der ALU 130 angelegt wird. In diesem Modus wird die gewählte Operation lediglich an denjenigen Bitpositionen der R- und S-Operanden durchgeführt, die den Positionen entsprechen, in denen der M-Operand eine NULL ist. Die Positionen entweder des Ursprungs- oder des Zieloperanden, die einer EINS in dem M- Operanden entsprechen, passieren, abhängig von dem Befehl, unbeeinträchtigt.
  • Die ALU 130 ist imstande, binärkodierte Dezimalzahl-(BCD)-Arithmetik an gepackten BCD-Zahlen vorzunehmen und weist für die BCD- Operationen eine separate Carry-Logik auf. Diese Logik erzeugt "Nibble"-Überträge für jede BCD-Ziffer aus den aus den beiden BCD-Operanden gebildeten Ausbreitungs- und Erzeugungssignalen. Wie erwähnt, werden sämtliche Arten von Prozessorbefehlen in einem einzigen Taktzyklus ausgeführt, mit Ausnahme der BCD-Befehle, die zwei Taktzyklen benötigen.
  • Während einer BCD-Operation werden Addition und Subtraktion in zwei Taktzyklen durchgeführt. Während des ersten Zyklus wird eine binäre Addition durchgeführt und BCD-Nibble-Überträge (BCDC&sub1;&submin;&sub8;) werden erzeugt und in einem Nibble-Übertrag-Registerteil 112c des Statusregisters 112 gespeichert, so daß der Prozessor 24 nach dem ersten Taktzyklus unterbrochen werden kann, falls erforderlich, um während des zweiten Taktzyklus verwendet zu werden. Während des zweiten Taktzyklus wird das während des ersten Taktzyklus berechnete BCD-Ergebnis durch Anbringen der in dem Nibble-Übertrag-Register 112c gespeicherten acht Nibble- Überträge (BCDC&sub1;&submin;&sub8;) angepaßt und über die Signalleitungen 162 zu der ALU 130 geleitet.
  • Die ALU 130 weist eine siebzehnte Zwei-Bit-Zelle auf, die während der Befehle zur binären Multiplikation mit und ohne Vorzeichen verwendet wird, welche, gemäß einem Merkmal der vorliegenden Erfindung, mittels eines modifizierten Booth'schen Algorithmus implementiert werden. Wie aufgrund dieses Algorithmus erforderlich, ist diese Zelle mit dem höchstwertigen Byte der ALU 130 verkettet, wie durch die bestimmte, durch den Befehl festgelegte Bytebreite erforderlich. Da bei dem modifizierten Booth-Algorithmus in jedem Zyklus eine Abwärtsverschiebung um zwei Bits erforderlich ist, erzeugt die Bewegungszelle die beiden höchstwertigen Bits des Teilprodukts für jeden Zyklus. Daher ist die ALU 130 in der Lage, ihren Inhalt um zwei Bits abwärts zu verschieben, und zwar zur Implementierung des Multiplikationsalgorithmus, und den Inhalt um ein Bit aufwärts zu verschieben, wie von einem Dividieralgorithmus oder einem Einzel- Bit-Aufwärtsschiebebefehl gefordert wird. Der S-MUX 146 kann, wie bei bestimmten Befehlen erforderlich, Verschiebungen um ein Bit nach unten vornehmen.
  • Die ALU 130 erzeugt vier Statussignale: Übertrag (C), Negativ (N), Null (Z) und Überlauf (OVR), die jeweils angeben, ob die aktuelle arithmetische Operation einen Übertrag, eine Null oder ein negatives Ergebnis oder einen Überlaufzustand erzeugte. Das geeignete Statussignal C, N, Z oder OVR läßt sich nur auf das Ergebnis anwenden, das innerhalb der Breite liegt, die durch den Befehl spezifiziert wird, der gegenwärtig ausgeführt wird. Ferner wird ein Verbindungsstatussignal (L) erzeugt, das nur auf die spezifizierte Breite anwendbar ist.
  • Die Statussignale C, N, Z, OVR und L werden von der ALU 130 über eine 5-Bit-Statussignalleitung 164 zu einem Multiplexer (MUX) 166 geleitet, der auch die ALU-Ausgangsleitungen 156 empfängt. Der MUX 166 gibt auf die auf dem Steuerbus 102 empfangenen geeigneten Signale hin diese Statussignale an einen Statussignalregisterteil 112d des 32-Bit-Statusregisters 112 weiter. Fig. 3 zeigt die Bitzuordnungen jedes der vier Teile des Statusregisters 112, wobei die Ausgangssignalleitungen jeder Stufe mit einer Bezeichnung versehen sind (i.e. 114, 122, 162, 170). Diese Signalleitungen sind Teil eines 32-Bit-Busses 150, der den Inhalt des Statusregisters 112 zu anderen Teilen des Prozessors 24 leitet. Alternativ kann das Statusregister 112 über den MUX 166 von dem ALU-Ausgang F über die Signalleitungen 156 geladen werden, was zum Laden des Statusregisters 112 dient.
  • Der Breitenteil 112a und der Positionsteil 112b des Statusregisters 112 können durch die Datensignale aktualisiert werden, die von der ALU 130 zu dem MUX 166 gesendet werden. Auf die Signale auf dem Steuerbus 102 hin bewirkt der MUX 166, daß diese Fünf- und Sechs-Bit-Wörter dem Statusregister 112 zur Speicherung in dessen Breiten- bzw. Positionsteilen präsentiert werden. Die Breite kann auch von den Prioritätskodierausgängen geladen werden.
  • Der Nibble-Übertrag-Teil 112c des Statusregisters 112 wird nach dem ersten Taktzyklus der beiden Zyklen, die für die BCD-Arithmetik-Befehle erforderlich sind, aktualisiert. Die acht BCD- Überträge, BCDC&sub1;&submin;&sub8;, werden von der ALU 130 erzeugt und von dort auf einer 8-Bit-Signalleitung 164d zu dem MUX 166 geleitet und auf die Signale auf dem Steuerbus 102 hin leitet der MUX 166 diese an das Statusregister 112 zur Speicherung in dem Nibble- Übertrag-Register 112c.
  • Der Statusteil 112d des Statusregisters 112 wird in einer im folgenden zu beschreibenden Weise aktualisiert.
  • Alle erforderlichen Informationen über die von der ALU 130 durchgeführten Operationen werden in dem 32-Bit-Statusregister 112 nach jedem Prozessorbefehlszyklus gespeichert, wodurch es ermöglicht wird, den Prozessor 24 nach jedem Prozessorzyklus zu unterbrechen. Der Inhalt des Statusregisters 112 kann in den externen Arbeitsregistern 22 (Fig. 1) durch Steuersignale gespeichert werden, die von dem Befehlsdecoder 100 aus einem Prozessorbefehlswort erzeugt und über den Steuerbus 102 zu dem S- MUX 146 gesendet werden. Dies veranlaßt den S-MUX 146, die 32 Bits STATUS&sub0;&submin;&sub3;&sub1;, die von dem Statusregister 112 auf dem Satz von Signalleitungen 150 zu dem S-MUX 146 geleitet werden, auf dem S- Operanden der ALU 130 anzuordnen. Auf die Signale auf dem Steuerbus 102 hin ordnet die ALU 130 diese 32 Statusbits auf ihren F-Ausgängen an, wo sie auf Signalleitungen 156 und dem Ausgangs- Y-Bus 162 zu den Prozessorausgangsanschlüssen Y&sub0;-Y&sub3;&sub1; und dann zu den Arbeitsregistern 22 (Fig. 1) geleitet werden, und zwar über den 32-Bit-Bus 46 (Fig. 1).
  • Das Statusregister 112 kann von den DATA_A-Eingangs- oder den DATA_B-Eingangsanschlüssen durch Ausführung des geeigneten Prozessorbefehls geladen werden, wodurch der Inhalt des Worts auf die geeigneten Prozessoranschlüsse an dem F-Ausgang der ALU 130 angeordnet wird, wo er über die ALU-Ausgangsleitungen 156 und den MUX 166 zu dem Statusregister 112 geleitet wird.
  • Diese Speicher- und Ladekombination ermöglicht das Speichern und Neuspeichern des Inhalts des Statusregisters 112 zur Unterbrechungsverarbeitung.
  • Der Prozessor 24 ist mit einem Satz von fünf Statusausgangsanschlüssen S&sub0;-S&sub4; versehen. Diese Ausgangsanschlüsse können die Statussignale C, N, Z, OVR und L über die 5-Bit-Statussignalleitung 164 durch einen Statusmultiplexer (STATUS MUX) 168 empfangen. Auf ein geeignetes, an einer Statusausgangswählsignalleitung 58 (Fig. 1) an einem Eingangsanschluß STAT des Prozessors 24 empfangenes Signal hin leitet der STATUS MUX 168 diese fünf Statussignale an die fünf Statusausgangsanschlüsse S&sub0;-S&sub4; weiter.
  • Der Statusregisterteil 112d des Registers 112 kann auch, auf das geeignete Signal des STAT-Eingangs an den Prozessor 24 hin, über den STATUS MUX 168 als Ursprung für den Ausgang an den fünf Statusausgangsanschlüssen S&sub0;-S&sub4; gewählt werden. Die Signalleitungen 170 verbinden den s-Bit-Statusregisterteil 112d mit dem STATUS MUX 168 und ein an den STAT-Eingang angelegtes HIGH-Signal veranlaßt den STATUS MUX 168, die fünf Bits des Registerstatus durch Drei-Zustands-Puffertreiber 196 auf den Statusausgangsanschlüssen S&sub0;-S&sub4; anzuordnen. Ein LOW-Signal veranlaßt den STATUS MUX 168, die ALU-Statussignale C, N, Z, OVR, L auf den S&sub0;-S&sub4;- Anschlüssen anzuordnen.
  • Die STATUS&sub1;&sub3;-, STATUS&sub1;&sub4;- und STATUS&sub1;&sub5;-Positionen des Statusregisters 112 enthalten die logische Kombination der in dem in der folgenden Tabelle III dargestellten Statusregister 112 gespeicherten Statussignale C, N, Z und OVR. Tabelle III Extrahierte Statussignale STATUS-Bit Extrahiertes Signal
  • Diese drei Statusregisterbitpositionen können durch Ausführung eines Extrahier-Status-Prozessorbefehls gelesen werden, was im folgenden beschrieben wird, wodurch die ALU 130 veranlaßt wird, das geeignete extrahierte Statussignal an den niederwertigsten Bit des F-Ausgangs der ALU 130 anzulegen, von wo es über den Y- MUX 159 zu dem Y&sub0;-Ausgangsanschluß des Prozessors 24 geleitet werden kann.
  • Über eine Q-Verschiebeeinrichtung 172, die die 32 ALU-Ausgangsleitungen 156 empfängt, ist das Q-Register 154 mit dem Ausgang F der ALU 130 verbunden. Die Signalleitungen 174 verbinden den Ausgang der Q-Verschiebeeinrichtung mit dem Q-Register 154. Der Ausgang des Q-Registers 154 an den Leitungen 152 ist mit dem Eingang der Q-Verschiebeeinrichtung 172 verbunden. Die Q-Verschiebeeinrichtung 172 und das Q-Register 154 empfangen über den Steuerbus 102 Steuersignale, so daß die Q-Verschiebeeinrichtung 172 zusammen mit dem Q-Register 154 bestimmte Multiplikations- und Divisionsbefehle implementieren kann, welche eine Verschiebung des Q-Registers 154 um zwei Bits nach rechts bzw. um ein Bit nach links mit sich bringen, und zwar auf einmal. Die Produktbits werden während der Multiplikation in die höchstwertigen zwei Bits eingesetzt, wie durch die gewählte Bytebreite bestimmt. Die Quotientenbits werden während der Division in das niederwertigste Bit, das Bit 0, eingesetzt. Auf dem Laden des Statusregisters 112 ähnliche Weise kann das Q-Register 154 entweder von den DATA_A- oder den DATA_B-Eingangsanschlüssen des Prozessors 24 geladen werden.
  • Die ALU 130 leitet den an ihrem S-Operandeneingang empfangenen 32-Bit-Operanden über die Signalleitungen 178 an einen Prioritätskodierer 176 weiter. Auf den Signalleitungen 116 empfängt der Verarbeitungskodierer die von dem WIDTH MUX 106 gewählte 5- Bit-Bytebreiteninformation. Der Prioritätskodierer 176 erzeugt ein binärkodiertes 5-Bit-Wort, um die Position der EINS mit höchster Ordnung in dem an seinem Eingang empfangenen Ein-bis- Vier-Bytebreitenwort anzugeben. Lediglich diejenigen S-Operandenbits, die nicht von der Maskenerzeugungs-/-verschiebeeinrichtung 118 an dem M-Operandeneingang zu der ALU 130 maskiert worden sind, nehmen an der Priorisierung teil. Der Prioritätskodierer 176 arbeitet an jedem byteausgerichteten Ein-bis-Vier-Bytebreitenoperand, wie durch die von dem WIDTH MUX 106 gewählte Bytebreite spezifiziert. Für jede derartige Bytebreite erzeugt der Prioritätskodierer entsprechend der folgenden Tabelle IV den geeigneten binär gewichteten Code.
  • Es sei darauf hingewiesen, daß, falls keiner der Eingänge eine EINS ist, oder wenn das höchstwertige Bit des Eingangs für die bestimmte gewählte Bytebreite eine EINS ist, der Ausgang des Prioritätskodierers 176 Null ist. Die Differenz zwischen diesen beiden Fällen wird durch Einstellen des Z-Statussignalbits des Statusregisters 112 auf EINS in ersterem Fall und auf NULL in letzterem angegeben. TABELLE IV Prioritätskodierung Gewählte Bytebreite Aktives Bit mit höchster Priorität Kodierausgang(zweiunddreißig Bits) KEINS (vierundzwanzig Bits)
  • Der Ausgang des Prioritätskodierers 176 wird über die 5-Bit- Signalleitung 180, die auf das Signal auf dem Steuerbus 102 hin, d. h. den in Ausführung begriffenen Prozessorbefehl, von dem Y- MUX gewählt werden kann, zu dem Y-MUX 159 geleitet. Die fünf Prioritätskodiererbits werden an die Y&sub0;&submin;&sub4;-Ausgangsanschlüsse des Prozessors 24 angelegt. Das Ergebnis der Priorisieroperation kann in dem folgenden Taktzyklus verwendet werden, beispielsweise zur Normalisierung eines Gleitpunkts oder zur Ermittlung der Ecke eines Polygons bei einer Graphikanwendung. Der Ausgang des Prioritätskodierers 176 wird dementsprechend auch über die Signalleitung 180 zu dem MUX 166 geleitet, wo auf die Signale auf dem Steuerbus 102 hin die Prioritätskodiererbits in dem Positionsteil 112b des Statusregisters 112 gespeichert werden können.
  • Der Datenprozessor 24 bietet Paritätsfehlerermittlung an den DATA_A- und DATA_B-Eingängen und Paritätserzeugung an dem Y- Ausgang. Jedem Acht-Bit-Byte am DATA_A-Ausgang ist ein Paritätsbit PAi, i = 0, 1, 2, 3 zugeordnet, so wie jedem Acht-Bit-Byte am DATA_B-Eingang PBi, i = 0, 1, 2, 3. Eine Paritätsprüfeinrichtung 182 empfängt das DATA_A&sub0;&submin;&sub3;&sub1;-Eingangswort über den A-Bus 132 und die an A-Paritätsanschlüsse A_PAR&sub0;&submin;&sub3; angelegte und von dort auf einer 4- Bit-Signalleitung 184 geleiteten zugeordneten vier Paritätsbits PA&sub0;&submin;&sub3;. Die Paritätsprüfeinrichtung 182 empfängt ferner das DA- TA_B&sub0;&submin;&sub3;&sub1;-Eingangswort über den B-Bus 134 und die an die B-Paritätsanschlüsse B_PAR&sub0;&submin;&sub3; angelegten und von dort auf einer 4-Bit- Signalleitung geleiteten zugeordneten vier Paritätsbits PB&sub0;&submin;&sub3;. Die Paritätsprüfeinrichtung 182 erzeugt ein HIGH-Paritätsfehlersignal, das zu einem PARITY_ERROR-Ausgangsanschluß des Prozessors 24 geleitet wird, wenn an irgendeinem Eingangsbyte ein Paritätsfehler ermittelt wird.
  • Für das 32-Bit-Ausgangswort der ALU 130 ist ein Paritätsgenerator 188 vorgesehen, der den ALU-F-Ausgang über Signalleitungen 156 empfängt. Ein Satz aus vier Paritätsbits PYi, i = 0, 1, 2, 3, wird von dem Paritätsgenerator 188 erzeugt, wobei jedes Bit einem Acht-Bit-Byte des ALU-Ausgangsworts zugeordnet ist, und das 4-Bit-Paritätswort wird einem Satz aus vier Ausgangs-Y_PAR&sub0;&submin;&sub3;- Anschlüssen des Prozessors 24 zugeleitet. Der Paritätsgenerator 188 empfängt auch auf den Signalleitungen 180 den 5-Bit-Ausgang des Prioritätskodierers 176 und auf dem Steuerbus 102 die von dem Befehlsdecoder 100 erzeugten Steuersignale und kann in Reaktion darauf ein Paritätsbit PY&sub0; niedriger Ordnung erzeugen, das den von dem Prioritätskodierer 176 erzeugten fünf Prioritätskodiererbits zugeordnet ist.
  • Der Prozessor 24 weist einen Komparator 190 auf, der mit den Eingangs- und Ausgangsanschlüssen der Puffertreiber 196, 195, 158, 161 und 199 verbunden ist. Der Komparator 190 vergleicht jedes Signalpaar auf jeder Seite der Puffertreiber. (In Fig. 2 ist der Komparator 190 symbolisch mit gepaarten Leitungssätzen dargestellt, um diese Beziehung anzuzeigen.) Wenn irgendeines dieser Signalpaare nicht identisch ist, erzeugt der Komparator 190 einen Master/Slave Error. Im Master-Modus entscheidet der Komparator 190 lediglich, ob jeder der Puffertreiber 196, 195, 158, 161 und 199 korrekt funktioniert. Im Slave-Modus und mit einem zweiten Prozessor gekoppelt führt der Komparator 190 eine weitaus ernsthaftere Fehlerprüffunktion durch.
  • Im Slave-Modus arbeitet jeder der Ausgangsanschlüsse S&sub0;&submin;&sub4;, Y_PAR&sub0;&submin;&sub3;, Y&sub5;&submin;&sub3;&sub1;, Y&sub0;&submin;&sub4; und PARITY ERROR statt dessen als Eingangsanschluß. Ein HIGH-Signal an einem Slave/Master-Anschluß (S/M) wählt den Slave-Modus. Zusammen mit einem Ausgangsfreigabesignal (OEy) durch ein UND-Gatter 197 werden die Drei-Zustands-Puffertreiber 196, 195, 158, 161 und 199 in ihren hochohmigen Zustand ausgeschaltet. Die Ausgangsanschlüsse S&sub0;&submin;&sub4;, Y_PAR&sub0;&submin;&sub3;, Y&sub5;&submin;&sub3;&sub1;, Y&sub0;&submin;&sub4; und PARITY ERROR werden von dem STATUS MUX 168, dem Paritätsgenerator 188, der ALU 130, dem Y-MUX 159 bzw. der Paritätsprüfeinrichtung 182 entkoppelt. Die Ausgangsanschlüsse können nunmehr als Eingangsanschlüsse wirksam sein.
  • Die Ausgangs- und Eingangsanschlüsse eines ersten Prozessors 24 können nun mit den Ausgangs- und Eingangsanschlüssen eines zweiten Prozessors 24 verbunden werden. Ein Prozessor ist der Master und der zweite ist der Slave. Beide Prozessoren empfangen jedoch dieselben Befehle und Daten, um diese gleichzeitig zu bearbeiten. Somit empfängt der Slave-Prozessor dieselben Daten wie der Master-Prozessor und empfängt auch die Ausgangssignale des Master-Prozessors durch seine Ausgangsanschlüsse.
  • Somit prüft der Komparator 190 des Slave-Prozessors, ob die Statussignale an den Ausgangsanschlüssen S&sub0;&submin;&sub4; des Master-Prozessors an die von dem Slave-Prozessor erzeugten Statussignale angepaßt sind. Gleichermaßen werden die Datenausgangssignale an den Y&sub5;&submin;&sub3;&sub1;- und Y&sub0;&submin;&sub4; zusammen mit den Paritätssignalen Y_PAR&sub0;&submin;&sub3; für die Datenausgangssignale angepaßt. Der Komparator 190 des Slave- Prozessors prüft auch, ob das Ausgangssignal der Paritätsprüfeinrichtung 182 für die Paritätssignale (A-PAR(&sub0;&submin;&sub3; und B-PAR&sub0;&submin;&sub3;) mit den Dateneingangssignalen an den Eingangsanschlüssen DATAA&sub0;&submin;&sub3;&sub1; und DATAB&sub0;&submin;&sub3;&sub1; koinzidiert. Auf diese Weise wirkt der Slave-Prozessor als Dual-Prozessor, um über die Unversehrtheit der durch die gekoppelten Prozessorsysteme fließenden Daten gegenüber Hardwarefehlern zu entscheiden. Die Master-Slave-Anordnung kann auch über die beiden parallelen Prozessoren hinaus ausgedehnt werden.
  • Der Datenprozessor 24 kann entweder im Negativ-Übertrags- oder Übertragsmodus betrieben werden und ist mit einem BORROW-Eingangsanschluß versehen, der das an ihn angelegte Signal über die Signalleitung 190a an den Befehlsdecoder 100 leitet. Ein an den BORROW-Anschluß angelegtes HIGH-Signal bewirkt, daß alle Steuersignale, die von dem Befehlsdecoder 100 für die ALU 130 auf den Steuerbus 102 erzeugt werden, bei Subtraktionsoperationen eher die Verwendung und Erzeugung eines negativen Übertrags in der ALU 130 statt eines Übertrags bewirken.
  • C. Befehlssatz
  • Der Datenprozessor 24 der vorliegenden Erfindung arbeitet auf die in dem Pipeline-Register 16 (Fig. 1) enthaltenen und von dort dem Prozessor 24 an seinen INST-, W- und P- Eingangsanschlüssen zugeleiteten Prozessorinformationen hin. In dem Prozessorbefehlssatz stehen insgesamt 128 Prozessorbefehle zur Verfügung.
  • 1. Bytegrenzen-Ausrichtungsoperand-Befehl
  • Der Prozessorbefehlssatz enthält sieben Bytegrenzen-Ausrichtungsoperand-Befehlsgruppen:
  • 1. Datenbewegung (Doppeloperand);
  • 2. Logisch (Einzel- und Doppeloperand);
  • 3. Einzel-Bit-Verschiebungen (aufwärts, abwärts mit einfacher und doppelter Genauigkeit)
  • 4. Priorisieren
  • 5. Arithmetisch (binär, BCD)
  • 6. Divisionsschritte (mit einfacher und mehrfacher Genauigkeit)
  • 7. Multiplikationsschritte
  • Die Bytegrenzen-Ausrichtungsbefehle werden von neun Bits (I&sub8;I&sub7; . . . I&sub1;I&sub0;) gesteuert, die über den Bus 50 (Fig. 1) an die INST- Eingangsanschlüsse des Prozessors 24 angelegt werden. Fig. 4A zeigt das Format der Bytegrenzen-Ausrichtungsbefehle und die Befehlsbitzuordnungen, und Fig. 4-B zeigt die Bitzuordnungen für die Bytegrenzen-Ausrichtungsoperanden, auf die die Bytegrenzen- Ausrichtungsbefehle anzuwenden sind. Bytegrenzen-Ausrichtungsbefehle sind auf Bytegrenzen-Ausrichtungsganzzahlige- und binärkodierten Dezimalzahl- (BCD) -Datenarten anwendbar. Die folgende Tabelle V zeigt die Attribute der drei Datenarten, die der Prozessor 24 bearbeitet: Ganzzahlige, BCD und längenvariables Bitfeld. Die oben angeführte Tabelle I zeigt, wie die Operandenbytebreite durch die I&sub8;- und I&sub7;-Bits der Bytegrenzen-Ausrichtungsbefehle spezifiziert wird (Bytegrenzen-Ausrichtungsbefehle benötigen keine Breiten- und Positionsinformation). Die Bits I&sub6;I&sub5; . . . I&sub0; enthalten den Operationscodeteil (op code) des Befehls. TABELLE V Prozessorarten Art Operandenlänge Bereich mit Vz. (Zweierkompl.) ohne Vz. Numerisch, 2 Ziffern pro Byte. Höchstwertige Ziffer ist für Vorzeichen verwendbar. Hängt von Positions- und Breiteneingängen ab.
  • 2. Befehle mit längenvariablen Bitfeldoperanden
  • Der Prozessorbefehlssatz weist vier Befehlsgruppen mit längenvariablen Bitfeldoperanden auf:
  • 8. N-Bit-Verschiebungen, Rotationen
  • 9. Einzel-Bit-Operationen
  • 10. Logische Feldoperationen (ausgerichtet, nicht ausgerichtet, extrahieren)
  • 11. Maskenerzeugung
  • Die längenvariablen Bitfeldbefehle bestehen aus neun Bits (I&sub8;I&sub7; . . . I&sub1;I&sub0;), die über den Bus 50 an die INST-Eingangsanschlüsse des Prozessors 24 angelegt werden. Der Befehl ist von Breiten- und Positionsinformationen begleitet, die von dem Pipeline-Register 16 zu dem Prozessor 24 zu dessen W- bzw. P-Eingangsanschlüssen geleitet werden, und zwar über die 5-Bit-Signalleitungen 52 bzw. die 6-Bit-Signalleitungen 54. Fig. 5A zeigt das Format des Befehls mit längenvariablem Bitfeld und die Befehlsbitzuordnungen, und Fig. 5B zeigt die Bitzuordnungen für den längenvariablen Bitfeld-Operanden, auf den die Befehle mit längenvariablem Bitfeld anwendbar sind. Abhängig von den Bits I&sub8; und I&sub7; des Befehls mit längenvariablem Bitfeld, wird der Befehl und entweder die Breiten- und/oder die Positionsinformation, welche an den W&sub4;-W&sub0;-Breiteneingängen bzw. den P&sub5;-P&sub0;-Positionseingängen des Prozessors 24 anliegen, oder die Breiten- und/oder Positionsinformation, die in dem Breitenteil und Positionsteil des Statusregisters 28 (112a bzw. 112b von Fig. 2) gespeichert sind, zur Bestimmung der Werte der Position des niederwertigsten Bits des Operanden in bezug auf Bit 0, d. h. den in Fig. 5B gezeigten Wert P, und der Breite des Operanden verwendet. Die folgende Tabelle VI beschreibt die Art, in der die Befehlsbits I&sub8; und I&sub7; den Ursprung dieser Operandenbreiten- und Positionsparameter bestimmen. Die Bits I&sub6;I&sub5; . . . I&sub0; enthalten die Operationscodeposition (op code) des Befehls. TABELLE VI Ursprung der Parameter der längenvariablen Operanden Befehlsbits Breitenursprung Positionsursprung
  • Für Befehle mit längenvariablem Bitfeld, bei denen ein Feld aufwärts oder abwärts verschoben werden kann, wird P&sub5;-P&sub0; als eine Zweierkomplementzahl in dem Bereich -32 bis +31 interpretiert, welcher den Betrag und die Richtung der Verschiebung angibt. Bei Befehlen, die eine festgelegte Feldposition einnehmen, repräsentieren P&sub4;-P&sub0; die Position des niederwertigsten Bits des Feldes und P&sub5; wird ignoriert.
  • 3. Beschreibungen von Bytegrenzen-Ausrichtungsoperand-Befehlen
  • Die folgende Tabelle VII enthält eine Beschreibung der zwölf Bytegrenzen-Ausrichtungsoperand-Befehle der Gruppe 1 (Datenbewegung). TABELLE VII Gruppe 1 - Datenbewegungsbefehle Ursprungsort(e) Code Mnemonic ZERO-EXTA Bytebreite
  • (1) Diese Anmerkung betrifft einen Operanden, der aus 32 Bits besteht, (Bit (32-1):Bit0), von denen jedes Bit das Vorzeichen- (oberstes) Bit dieses Teils von A oder B innerhalb der Bytebreite ist, die durch die I&sub8; und I&sub7;-Bits des Befehls spezifiziert ist.
  • (2) Die Bits 13, 14, 15 und 23 des Statusregisters 112 können nicht geschrieben werden. Tabelle VII (fortgesetzt) Code Mnemonic Gesetzte Statutsflagge(n) ZERO-EXTA (Bytebreite)
  • (3) Wenn Bytebreite = 00 oder 11, ansonsten unverändert.
  • Tabelle VIIA wie die nachfolgenden Tabellen VIIIA bis XVIIA (für die Gruppen 2 bis 11) beschreibt jeden Befehl in Gruppe 1 durch Angeben des op code des Befehls in Spalte Eins. Der Operationscode des Befehls (op code) wird den sieben Befehlsbits I&sub6;I&sub5; . . . I&sub0; entsprechend sedezimal dargestellt (A=10, B=11, C=12, D=13, E=14, F=15). Der Befehl Mnemonic folgt in Spalte Zwei. Die Verarbeitung des Befehls ist in Spalte Drei unter Anwendung folgender Schreibweise erläutert (es sei angemerkt, daß Tabelle VIIA lediglich die für die Doppel-Operand-Befehle darstellt):
  • Für Bytegrenzen-Ausrichtungs-Einzeloperand-Befehle
  • Dest ist das Ziel für das Ergebnis des Befehls;
  • Op&sub1; ist der Ursprung des Einzel-Operanden;
  • Op&sub2; wird weggelassen; und
  • F(Op&sub1;) ist die Funktion, die der Befehl bei dem Operanden Op&sub1; verlangt.
  • Für jede Funktion wird von der von den I&sub8;- und I&sub7;-Bits des Befehls spezifizierten Bytebreite eine Bytemaske bestimmt und es ergibt sich eine Maske, die in den von den I&sub8;-, I&sub7;-Bits gemäß Tabelle I gewählten niederwertigsten Bytes aus NULLen und in den verbleibenden Bytes aus EINSen besteht, die in Fig. 4B als nicht schraffierte bzw. schraffierte Bytes dargestellt sind.
  • Die Funktion wird von der Bytemaske bestimmt, so daß die von der Bytemaske (NULLen) "gewählten" Positionen von den entsprechenden Bitpositionen des Ergebnisses der F(Op&sub1;) zu der Zielposition (Dest) geleitet werden und die "nicht gewählten" Bitpositionen in der Bytemaske (EINSen) von den entsprechenden Bitpositionen des Operanden Op&sub1; zu Dest geleitet werden.
  • Für Bytegrenzen-Ausrichtungs-Doppeloperand-Befehle
  • Dest ist wie bei Einzel-Operand-Befehlen;
  • Op&sub1; ist der erste Operand;
  • Op&sub2; ist der zweite Operand und
  • F(Op&sub1;, Op&sub2;) ist die Funktion, die von dem an den Operanden Op&sub1; und Op&sub2; durchgeführten Befehl verlangt wird.
  • Die Bytemaske wird wie bei den Einzel-Operand-Befehlen bestimmt und die Funktion F(Op&sub1;, Op&sub2;) wird von der Bytemaske wie bei den Einzel-Operand-Befehlen bestimmt, wobei die nicht gewählten Bitpositionen von Op&sub2; an Dest weitergeleitet werden.
  • Für Bytegrenzen-Ausrichtungs-Verschiebebefehle
  • Dest ist wie bei Einzel-Operand-Befehlen;
  • Op&sub1; ist der zu verschiebende Operand;
  • Op&sub2; ist der zweite Operand;
  • Fill-bit ist das Bit, das während der Verschiebung zum Füllen verwendet wird, und
  • Shiftdir bezeichnet entweder eine Aufwärts- oder eine Abwärtsverschiebung.
  • Für jeden Verschiebebefehl ist die durch die I&sub8;- und I&sub7;-Bits des Befehls spezifizierte Bytebreite die Anzahl von Bytes, die an der Verschiebung teilnehmen, und die Bytemaske wird wie bei den Einzel-Operand-Befehlen bestimmt, wobei die nicht gewählten Bitpositionen von den entsprechenden Bitpositionen des Operanden Op&sub2; zu Dest weitergeleitet werden.
  • Als Beispiel der Einträge in Tabelle VIIA sei auf einen ZERO-EX- TA-Befehl (der einen op code von 00 aufweist) mit einer spezifizierten Bytebreite von eins hingewiesen. Dieser Befehl hätte das Neun-Bit-Format /01100000001 und ist, wie in der ersten Zeile von Tabelle VIIA zu erkennen, ein Zwei-Operanden-Befehl, der ein 32-Bit-Wort verwendet, das an den DATA_A-Anschlüsse des Prozessors 24 anliegt, sowie ein 32-Bit-Wort, das aus allen NULLen als den Ursprüngen besteht, und die 32-Bit-Ausgangs-Y-Anschlüsse als Ziel hat. Die Befehlsbits 181 sind 01, und somit ist die Bytebreite gemäß der obigen Tabelle I 1. Somit besteht die bei der Ausführung des Befehls verwendete Bytemaske in dem niederwertigsten Byte insgesamt aus NULLen und in den drei höchstwertigen Bytes insgesamt aus EINSen.
  • Da die spezifizierte Funktion einfach den ersten Operanden bei Anwendung auf ein beliebiges Operandenpaar reproduziert, ist das "gewählte" niederwertigste Byte an den Ziel-Y-Anschlüssen das Byte von niedriger Ordnung, das an den DATA_A-Anschlüssen anliegt, während die nicht gewählten oberen drei Bytes die oberen drei Bytes des zweiten Operandenworts sind, die alle NULL sind. Somit bewirkt der ZERO-EXTA-Befehl, der eine Bytebreite von eins spezifiziert, daß das Byte niedriger Ordnung, das an den DATA_A- Anschlüssen des Prozessors 24 anliegt, zu dessen Y-Anschlüssen geleitet wird. Im allgemeinen wählt der ZERO-EXTA-Befehl die Zahl der niederwertigsten Bytes an den DATA_ A-Eingangsanschlüssen aus, die zu dem Y-Ausgangsanschluß passieren; die nicht gewählten, höchstwertigen Ausgangsbytes enthalten NULLen.
  • Wie aus Tabelle VIIB hervorgeht, setzt der ZERO-EXTA-Befehl die Nullermittlungs-(Z )-Flagge des Statusregisters 112, STATUS&sub1;&sub9;, auf HIGH, wenn alle an den Y-Ausgangsanschlüssen des Prozessors 24 anliegenden 32 Bits NULL sind; ansonsten wird die Z-Flagge auf LOW gesetzt. Auch die Negativ-Ermittlungs-(N)-Flagge des Statusregisters STATUS&sub1;&sub7; wird auf HIGH gesetzt, wenn das Vorzeichenbit dieses Teils der Bits, der den Y-Ausgangsanschlüssen innerhalb der von dem ZERO-EXTA spezifizierten Bytebreite anliegt, eine EINS ist, wodurch eine negative Zahl in diesem Teil (der die Bytebreite derjenigen niederwertigsten Zahl an Bytes ist, die von den DATA_A-Eingängen zu den Y-Anschlüssen passierten) angezeigt wird.
  • Wie aus Tabelle VIIA hervorgeht, gibt es fünf mögliche Operandenursprünge für die Datenbewegungsbefehle der Gruppe 1; die DA- TA_A-(A)- und DATA_B-(B)-Eingangsanschlüsse zu dem Prozessor 24, den "0"-Operandeneingang, das Q-REGISTER (Q-REG) 154 und das Statusregister (ST-REG) 112 und drei mögliche Ziele; die Y-Ausgangsanschlüsse (Y) 160, das Q-REG und das ST-REG.
  • Der Prozessor 24 akzeptiert den op code des bestimmten Befehls aus der Gruppe 1, der an den INST&sub0;&submin;&sub6;-Eingängen zu dem Befehlsdecoder 100 auszuführen ist, welcher über die auf den Steuerbus 102 erzeugten Steuersignale beim Anlegen an den SOURCE-MUX 136 und den SWAP-MUX 138 gewährleistet, daß die Eingänge an DATA_A, DATA_B oder dem "0"-Operanden zu den R- und S-Operand-Eingängen der ALU 130 geleitet werden. (Oder, bei denjenigen Befehlen aus Gruppe 1, bei denen das Q-REG 154 oder das ST-REG 112 beteiligt ist, werden die Steuersignale auf den Steuerbus 102 erzeugt, der an den S-MUX 146 angelegt wird, wodurch gewährleistet ist, daß der Inhalt des Q-REG oder des ST-REG zu dem S-Operanden-Eingang der ALU 130 geleitet wird. Ferner empfangen die INST&sub7;&submin;&sub8;-Eingänge den Bytebreitenteil des auszuführenden Befehls und die Maskenerzeugungs-/-verschiebeeinrichtung 118 empfängt die Breiten- und Positionssignale über den WIDTH-MUX 106 und den POS-MUX 108 auf die Steuersignale auf dem Bus 102 hin, wodurch bewirkt wird, daß die von dem Befehl spezifizierte Bytemaske zu dem M-Operandeneingang der ALU 130 geleitet wird.
  • Auf die von dem Befehlsdecoder 100 erzeugten und über den Steuerbus 102 empfangenen Steuersignale hin führt die ALU 130 die Funktion aus, die der Befehl gemäß F(Op&sub1;, Op&sub2;)-Spalte der obigen Tabelle VIIA fordert, und leitet die gewählten Bits entsprechend der Funktion F(Op&sub1;, Op&sub2;) und der von der Maskenerzeugungs- /-verschiebeeinrichtung 118 des M-Operanden-Eingangs der ALU 130 erzeugten Bytemaske zu dem F-Ausgang der ALU. "Nicht gewählte Bits" werden von entweder dem R- oder dem S-Operanden-Eingang, abhängig von den bestimmten Befehlen der Gruppe 1 gemäß der Tabelle VIIA, auf die Steuersignale auf dem Steuerbus 102 hin zu dem F-Ausgang der ALU 130 geleitet. (Die meisten Zwei-Operand- Befehle leiten die nicht gewählten Bits von dem S-Operanden- Eingang weiter.)
  • Das sich ergebende Ausgangssignal an dem F-Ausgang der ALU 130 wird auf dem Bus 156 angeordnet und auf die Steuersignale auf dem Bus 102 hin entweder über den MUX 159 oder 166, den Q-SHIF- TER 172 (oder in Verbindung mit dem Ausgangs-Freigabe-Signal OEy) entweder zu der Zielposition ST-REGm, Q-REG oder den Y-Ausgangsanschlüssen, entsprechend der Dest-Spalte von Tabelle VIIA, geleitet.
  • Was die SIGN-EXTA- und SIGN-EXTB-Befehle der Gruppe 1 betrifft, wird die in der Op&sub2;-Ursprung-Spalte der Tabelle VIIA verlangte Vorzeichenergänzung von der 64-Bit-Verschiebeeinrichtung 126 entweder an dem Wort an dem DATA_A- bzw. dem DATA_B-Eingang, wie es über den SOURCE-MUX 136 auf die von dem SOURCE-MUX 136 empfangenen Steuersignale auf dem Bus 102 und auf der Verschiebeeinrichtung 126 hin an die Verschiebeeinrichtung 126 angelegt wurde, durchgeführt. Die Verschiebeeinrichtung 126 dehnt das Vorzeichenbit von DATA-A oder DATA-B auf die von POS-MUX 108 auf den Signalleitungen 104 von den Befehlsbits 18 und 17 empfangene Bytebreiteninformation hin über die nicht gewählten Bytes aus, der POS-MUX 108 seinerseits erzeugt auf die Leitungen 124 ein 6- Bit-Positionssignal, das die von der Verschiebeeinrichtung 126 erzeugte Verschiebung steuert.
  • Auch in bezug auf die SIGN-EXTA- und SIGN-EXTB-Befehle der Gruppe 1 wird die in der Op&sub2;-Ursprung-Spalte von Tabelle VIIA geforderte Vorzeichenergänzung von dem S_MUX 146 durchgeführt, der den Teil des Operanden, der von den Befehlsbits 18 und 17 entsprechend der von den SIGN_EXTA- oder SIGN_EXTB-Befehlen spezifizierten Bytebreite gewählt wird, an die niedrigeren Bytes weiterleitet und die ergänzten Vorzeichenbits des A- oder B-Operanden an die oberen nicht gewählten Bytes weiterleitet.
  • Die Befehle der Gruppe 1 beeinflussen die von der ALU 130 erzeugten Statussignale gemäß der oben angeführten Tabelle VIIB. Jeder Befehl verändert lediglich die gezeigte(n) ALU-Statusflagge(n); alle anderen ALU-Statusflaggen sind unverändert. Wenn nicht anders festgelegt, bedeutet eine nicht indizierte Ursprungs- oder Zielbestimmung, daß alle spezifizierten Bits an dem angegebenen Test beteiligt sind. Der LOADQ-A-Befehl beispielsweise setzt die ALU-Z-Statusflagge entsprechend dem Test (Y UND Bytemaske (Bytebreite))=0. Das bedeutet, daß alle Y-Bits am Ausgang der ALU 130 innerhalb der von den Bits 18 und 17 des LOADQ-A-Befehls spezifizierten Bytebreite von der ALU 130 getestet werden, und wenn all diese Bits NULL sind, wird die Z-Flagge auf EINS gesetzt. Im anderen Fall setzt die ALU Z auf NULL.
  • Wie in Tabelle VIIB gezeigt, bewirken die LDSTAT-A- und LDSTAT- B-Befehle, daß die ALU 130 die Z-, N-, C-, L-, M-, S- und OVR- ALU-Statusbits von den einzelnen Bits des Worts an dem DATA-A- Eingang bzw. dem DATA-B-Eingang setzt, wenn dieses Wort über den SOURCE-MUX 136 zu dem R-Operandeneingang der ALU 130 geleitet wird. Diese ALU-Statusbits werden lediglich für Bytebreiten von 3 oder 4 gesetzt, wie durch die Befehlsbits 18 oder 17 spezifiziert.
  • Die folgende Tabelle VIII enthält eine Beschreibung der acht (Einzel- und Doppel-Operand) logischen Befehle mit Bytegrenzen- Ausrichtungsoperand der Gruppe 2. TABELLE VIII Gruppe 2 - Logische Befehle Code Mnemonic Dest oder Ursprungsort(e)
  • (1) Diese Anmerkung betrifft einen Operanden, der aus 32 Bits besteht, von denen jedes Bit der Inhalt des Statusregistervorzeichenbits 17 ist, d. h. N. Tabelle VIII (fortgesetzt) Code Mnemonic Gesetzte ALU-Statusflagge(n) Bytemaske (Bytebreite)
  • Die Art, auf die diese Befehle der Gruppe 2 an der ALU 130 durchgeführt werden, sollte ersichtlich sein. Es sei darauf hingewiesen, daß NOT-A, NOT-B und ZERO Einzel-Operand-Befehle sind und die "nicht gewählten" Bitpositionen, wie sie von der bytebreitenerzeugten Bytemaske spezifiziert sind, in allen Fällen von den entsprechenden Bitpositionen an dem Einzel-Operand Op&sub1; zu der Zielposition Y geleitet werden. Der ZERO-Befehl beispielsweise veranlaßt die ALU 130, in den "gewählten" Bytes der Prozessorausgangsanschlüsse Y NULLen anzuordnen; die "nicht gewählten Bytes hoher Ordnung werden von diesen Bytes des Worts an den DATA-B-Eingängen des Prozessors 24 weggenommen.
  • Die folgende Tabelle IX enthält eine Beschreibung der achtundzwanzig eine Auf- und Abwärtsbewegung beinhaltenden, mit einfacher und doppelter Genauigkeit ausgeführten Einfachbit-Verschiebungs-Bytegrenzen-Ausrichtungsbefehle der Gruppe 3. Tabelle IX Gruppe 3 Einzelbit-Verschiebungsbefehle mit einfacher Genauigkeit Code Mnemonic Dest Shiftdir Fill-Bit Ab Vorz. bit (Bytebreite) Auf TABELLE IX (fortgesetzt) mit doppelter Genauigkeit Code Mnemonic Dest Shiftdir Fill-Bit Ab Vorz. bit (Bytebreite) Auf TABELLE IX (fortgesetzt) mit einfacher Genauigkeit Code Mnemonic Gesetzte ALU-Statusflaggen (Bytebreite) TABELLE IX (forgesetzt) mit doppelter Genauigkeit Code Mnemonic Gesetzte ALU-Statusflaggen (Bytebreite)
  • Es sei auf Fig. 6 verwiesen, in der die Operation der Befehle zur Einzelbit-Verschiebung in Abwärtsrichtung mit einfacher und doppelter Genauigkeit schematisch dargestellt ist. Fig. 6A zeigt die Operation der in Tabelle IX A.1. beschriebenen Befehle zur Einfachbit-Abwärtsverschiebung mit einfacher Genauigkeit. Ein Multiplexer (MUX) 200 empfängt entweder ein NULL- oder ein EINS- Signal, wobei die Abwärtsverschiebebefehle aus Tabelle IX A.1 als entweder ein 1- oder ein 0-Fill-Bit empfangend implementiert werden. Der MUX 200 empfängt auch den Inhalt des L-Statusbits des ST-REG&sub2;&sub0; 202 auf Leitung 204. Der MUX 200 empfängt weiterhin den Inhalt des Vorzeichenbits der gewählten Bytes des Operanden auf einer Leitung 208 von dem Register 206. Der Ausgang des MUX 200 wird dem Eingang des Schieberegisters 206 zugesandt, das gewählte Bytes des Operanden Op enthält, entweder das Wort am DATA-A- oder am DATA-B-Eingang zum Prozessor. Der Ausgang des Schieberegisters 208 wird dem ST-REG&sub2;&sub0;, dem L-Statusbit 202 zugesandt.
  • Eine Einfachbit-Abwärtsverschiebung erfolgt durch Anordnen der gewählten Bytes niedriger Ordnung des Operanden in dem Register 206. Die Einfachbit-Abwärtsverschiebung des Registers 206 bewirkt, daß der Inhalt des ST-REG&sub2;&sub0;, 202, durch das Bit niedriger Ordnung des Operanden ersetzt wird. Der frühere Inhalt des ST- REG&sub2;&sub0; 202 wird auf der Leitung 204 angeordnet und der MUX 200 wählt das geeignete Fill-Bit aus den vier Eingängen zum MUX aus, und zwar gemäß Tabelle IX A.1. Dieses Fill-Bit wird dem Eingang des Schieberegisters 206 zugeführt, um das Bit höherer Ordnung seines Inhalts zu liefern. Der Inhalt des Schieberegisters 206 wird an die niederwertigsten Bytes des Worts an den Y-Ausgangsanschlüssen geleitet. Die nicht gewählten Bytes hoher Ordnung des Worts an dem Y-Ausgangsanschluß werden von den entsprechenden Bytes des Operanden her geleitet.
  • Fig. 6B zeigt die Operation der in Tabelle IX A.2 beschriebenen Einfachbit-Abwärtsverschiebebefehle mit doppelter Präzision. Ein Multiplexer (MUX) 210 empfängt entweder ein NULL- oder ein EINS- Signal, entsprechend den in Tabelle IX A.2 als entweder ein 1- oder ein 0-Füll-Bit empfangend gezeigten Abwärtsverschiebebefehlen. Der MUX 210 empfängt auch den Inhalt des L-Statusbits des ST-REG&sub2;&sub0;, dem 212, auf Leitung 214. Der MUX 210 empfängt ferner den Inhalt des Vorzeichenbits der gewählten Bytes des Operanden auf Leitung 218 von dem Register 216. Der Ausgang des MUX 210 wird zu dem Eingang eines Schieberegisters 216 gesandt, das in seinem höchstwertigen Teil die gewählten Bytes des Operanden Op enthält, entweder das Wort an dem DATA_A- oder dem DATA B-Eingang zu dem Prozessor. Der niederwertigste Teil des Schieberegisters 216 enthält die gewählten Bytes des Q-REG 154. Der Ausgang des Schieberegisters 216 wird dem ST-REG&sub2;&sub0; 212 zugesandt.
  • Eine Abwärtsverschiebung mit doppelter Genauigkeit erfolgt durch Anordnen der gewählten Bytes niedriger Ordnung des Operanden innerhalb des höchstwertigen Teils des Registers 216 und den gewählten Bytes niedriger Ordnung des Q-REG innerhalb des niederwertigsten Teils des Registers. Die Einfachbit-Abwärtsverschiebung des Registers 216 bewirkt, daß der Inhalt des ST-REG&sub2;&sub0; 212 durch das Bit niedriger Ordnung des Registers 216, d. h. Q&sub0;, ersetzt wird. Der frühere Inhalt des ST-REG&sub2;&sub0; 212 wird auf der Leitung 214 angeordnet und der MUX 210 wählt das geeignete Fill- Bit aus den vier Eingängen zu dem MUX entsprechend Tabelle IX A.2 aus. Dieses Fill-Bit wird zu dem Eingang des Schieberegisters' 216 übertragen, um das Bit hoher Ordnung seines Inhalts zu liefern. Der Inhalt des höchstwertigen Teils des Schieberegisters 216 wird an die gewählten niederwertigsten Bytes des Worts an den Y-Ausgangsanschlüssen weitergegeben. Die nicht gewählten Bytes hoher Ordnung des Worts an dem Y-Ausgangsanschluß werden von den entsprechenden Bytes des Operanden an weitergeleitet. Der Inhalt des niederwertigsten Teils des Schieberegisters 216 wird zu den gewählten niederwertigsten Bytes des Q-REG 154 geleitet, während die nicht gewählten Bytes hoher Ordnung des Q- REG unverändert sind.
  • Wie in Fig. 7 gezeigt, werden die Einfachbit-Aufwärtsschiebebefehle in im wesentlichen derselben Weise durchgeführt, wie es für die Einfachbit-Abwärtsschiebebefehle oben beschrieben wurde, ausgenommen der Punkt der Anwendung des Fill-Bits.
  • Die folgende Tabelle X enthält eine Beschreibung der zwei Bytegrenzen-Ausrichtungsoperanden-Priorisier-Befehle der Gruppe 4. TABELLE X Gruppe 4 - Priorisierbefehle Code Mnemonic Dest Ursprungsort(e) Priorität Gesetzte ALU-Statusfl. Bytemaske (Bytebreite)
  • (1) Die Prioritätsfunktion wird gemäß Tabelle IV bestimmt, nämlich, wie oben: bei einem Operanden der durch den Befehl spezifizierten Bytebreite ist die Priorität die Anzahl von Bits, um die der Operand aufwärts verschoben werden muß, um das höchstwertige EINS-Bit bis in die Vorzeichenposition des höchstwertigen gewählten Bytes zu bringen. Nichtgewählte Bytes des Operanden werden bei der Operation ignoriert. Wenn innerhalb der gewählten Bytes keine Bits EINS sind, hat die Prioritätsfunktion den Wert Null und die Z-Statusflagge wird in diesem Fall auf EINS und im anderen auf NULL gesetzt.
  • (2) Die höchstwertigen drei Bytes des Worts an dem Y-Bus werden auf NULL gesetzt, weil der Wert der Prioritätsfunktion stets zwischen 0 und 31 liegt, was in binärer Schreibweise in dem niedrigsten Byte des Wortes gespeichert werden kann. Das Positionsregister ist fünf Bit breit.
  • (3) Siehe Anmerkung (1) zu Tabelle X A.
  • Die folgende Tabelle XI enthält eine Beschreibung der achtundzwanzig Bytegrenzen-Ausrichtungsoperand-Arithmetikbefehle der Gruppe 5. TABELLE XI Gruppe 5 - Arithmetische Befehle A. 1 Ganzzahliges (Binär)* Code Mnemonic Dest oder Ursprungsort(e)
  • * (1) Diese Anmerkung betrifft das Zweierkomplement des Operanden Op&sub1;.
  • (2) C ist der Inhalt des Statusregisterübertragbits, ST-REG&sub1;&sub6;. TABELLE XI (fortgesetzt) A.2 Binär kodierte Dezimalzahl (BCD) Code Mnemonic Dest oder Ursprungsort(e)
  • (3) NCi ist der ite Nibble-Übertrag; ein Nibble-Übertrag-Flipflop speichert den zur Addierung von dem entsprechenden Nibble erzeugten Übertrag oder den von dem entsprechenden Nibble zur Subtraktion erzeugten negativen übertraf. Eine Voll-BCD-Übertragsausbreitung wird parallel mit der ALU 130 mit einem Carry-In von 0 für die BCD-Additionsbefehle und einem Carry-In von 1 für die BCD-Subtraktionsbefehle durchgeführt. Alle Nibbleüberträge oder -Negativ-Überträge werden in ihre entsprechenden Flipflops geladen (ungeachtet der Bytebreite); nicht gewählte Bytes hoher Ordnung des Op&sub2; jedoch passieren unverändert zum Y-Bus.
  • (4) Die sum-corr- oder diff-corr-Funktionen korrigieren jedes Nibble des Operanden (Ergebnis des unmittelbar vorher ausgeführten binären Befehls): ein Korrekturwort wird wie folgt gebildet: wenn der Inhalt eines Übertrag-/Negativ- Übertrag-Flipflop "1" ist, wird in der entsprechenden Nibbleposition eine "6" angeordnet. Wenn sie "0" ist, wird in der entsprechenden Position eine "0" angeordnet. Das sich ergebende 32-Bit-Wort wird im Falle von SUMCORR zu dem Teilergebnis hinzuaddiert oder im Falle von DIFFCORR davon subtrahiert.
  • Wie oben erwähnt, arbeiten die BCD-Arithmetik-Befehle an gepackten BCD-Operanden und zur Erzeugung eines Endergebnisses sind zwei Prozessortaktzyklen erforderlich. Während des ersten Taktzyklus wird von der ALU 130 ein Teilergebnis auf dem Y-Bus 156 als Folge einer Ausführung eines binären arithmetischen Befehls, wie oben in Tabelle XI beschrieben, angeordnet. Jeder dieser Befehle setzt die BCDC&sub1;&submin;&sub8;-Bits (Nibbleübertragflipflops), die von der ALU 130 über die Signalleitungen 164d und den MUX 166 zu dem Nibbleübertragteil 112c und dem Statusregister 112 gesendet werden, und zwar auf Steuersignale auf dem Steuerbus 102 hin. Während des nächsten Prozessorbefehlszyklus muß entweder der SUM-CORR-(A/B)- oder SUM-CORR-(A/B)-Befehl, bei dem die in Anmerkung (4) zu Tabelle XI A beschriebene Korrektur durchgeführt wird, ausgeführt werden und das Teilergebnis dementsprechend auf dem DATA-A- oder DATA-B-Eingangsanschluß angeordnet werden. Der Inhalt des Nibbleübertragteils 112c des Statusregisters wird für die ALU 130 über Signalleitungen 162 verfügbar, so daß die Korrektur gemäß Anmerkung (4) vorgenommen werden kann. TABELLE XI Gruppe 5 - Arithmetische Befehle B.1 Ganzzahliges (Binär) Code Mnemonic Gesetzte ALU-Statusflaggen (Bytebreite)
  • (5) Negativ-Übertrag-Modus wird von dem Signal an dem Negativübertrageingangsanschluß zu dem Prozessor 24 hergestellt, wie oben beschrieben. Ein HIGH-Signal an diesem Anschluß bewirkt, daß alle von dem Befehlsdecoder 100 auf den Steuerbus 102 erzeugten Steuersignale so, wie sie an die ALU 130 angelegt werden, eher die Erzeugung eines Negativ-Übertrags denn eines Übertrags durch die ALU während der Ausführung eines beliebigen der hier aufgelisteten Befehle bewirken.
  • Ein LOW-Signal an diesem Anschluß führt dazu, daß die ALU während der Ausführung dieser Befehle einen Übertrag erzeugt. Der Negativ-Übertrag-Modus ist nicht an der Ausführung der aufgeführten additiven Befehle beteiligt; nämlich den sechs INCRN-X-Befehlen und den ADD- und ADDC-Befehlen. TABELLE XI (fortgesetzt) B.2 Binär kodierte Dezimalzahlen (BCD) Code Mnemonic Gesetzte ALU-Statusflaggen Bytemaske (Bytebreite)
  • (6) Siehe Anmerkung (5) bei Tabelle XI oben. Der BORROW-MODE ist nicht an der Ausführung der aufgeführten additiven Befehle beteiligt, nämlich ADDBCD und ADDBCDC.
  • (7) Der Carry-Qut der ALU 130, wie von der Bytebreite des in Ausführung begriffenen Befehls spezifiziert, wird dem Statusregister 112 über die Signalleitungen 164a und den MUX 166 zugeführt, wo es in dem C-Statusflaggenbit des Statussignalregisterteils 112d des Statusregisters 112 gespeichert werden kann.
  • (8) Die Überlaufflagge (OVR) nimmt an, daß eine führende Vorzeichenziffer an einen beliebigen Operanden mit ungeradzahliger Bitlänge angehangen wird, damit er eine geradzahlige Länge bekommt. Somit ist die Definition des Überlaufs für Operanden mit ungeradzahliger Bitlänge nicht nützlich. Überlauf ist als Exklusiv-Oder des Carry-In und das Carry- Out des höchstwertigen Nibbles unter den Nibbles innerhalb der gewählten Bytebreite definiert.
  • (9) Die Vorzeichenflagge (N) nimmt an, daß eine führende Vorzeichenziffer an einen beliebigen Operanden mit ungeradzahliger Bitlänge angehangen wird, um eine geradzahlige Länge zu bilden. Eine BCD-Ziffer 0 repräsentiert ein positives Vorzeichen und eine Ziffer 9 repräsentiert ein negatives Vorzeichen im Zehnerkomplement. Die N-Flagge wird gesetzt, wenn das höchstwertige Bit der gewählten Bytebreite des Operanden 1 ist. Das Vorzeichennibble des Ergebnisses ist immer entweder 0 oder 9, außer wenn ein Überlauf auftritt; dann wird es entweder 1 oder 8.
  • Die folgende Tabelle XII enthält eine Beschreibung der dreizehn Bytegrenzen-Ausrichtungsoperand-Divisionsschrittbefehle der Gruppe 6. TABELLE XII Gruppe 6 - Divisionsschrittbefehle A.1 mit Vorzeichen und einfacher Genauigkeit Code Mnemonic Dest Shiftdir oder Ursprungsort(e) Fill-Bit (Bytebreite)
  • (1) Die Funktion B +A hängt vom Inhalt der M-Statusflagge ab, dem Statusregisterbit 21: wenn M=1, ist die Funktion B-A, wenn M=0, ist die Funktion B+A.
  • (2) Siehe Anmerkung (2) zu obiger Tabelle VIIA.
  • (3) Die Funktion B+1 hängt vom Inhalt der M-Statusflagge ab, dem Statusregisterbit 21: wenn M=0, ist die Funktion B-1; wenn M=0, ist die Funktion B+1.
  • (4) Die Funktion B A wird, abhängig vom Inhalt der M-Statusflagge, dem Statusregisterbit 21, wie folgt berechnet: wenn M=1, wird das Ganzwort A mit dem Übertrag vom Ganzwort B subtrahiert; wenn M=0, wird das Ganzwort A mit Übertrag zum Ganzwort B hinzuaddiert. Die von dem Befehl spezifizierte Bytebreite wird ignoriert und alle Operationen sind Ganzwort-Operationen.
  • (5) Entsprechend der durch den Befehl spezifizierten Bytebreite wird die Funktion B+A, abhängig vom Inhalt der M-Statusflagge, dem Statusregisterbit 21, wie folgt berechnet: wenn M=1, wird die Zahl der gewählten Bytes von A mit Übertrag von derselben Zahl gewählter Bytes von B subtrahiert; wenn M=0, wird die Anzahl der gewählten Bytes von A mit Übertrag zu derselben Anzahl von gewählten Bytes von B hinzuaddiert. TABELLE XIIA (fortgesetzt) A.2 ohne Vorzeichen, mit einfacher Genauigkeit Code Mnemonic Dest Shiftdir oder Ursprungsort(e) Fill-Bitt (Bytebreite)
  • (6) Der MPPIVSTEP3-Befehl setzt das niederwertigste Bit des Q- Registers 154, Q&sub0;, entsprechend der Gleichung: Q&sub0;←Vorzeichenbit (F, Bytebreite) XNOR Vorzeichenbit (A, Bytebreite), weil das Aufwärtsschieben des Q-Registers während der Ausführung des Schritts MPDIVSTEP1 Q&sub0; frei ließ; bis zum Schritt MPSDIVSTEP3 jedoch ist dieses Quotientenbit zum Laden in Q&sub0; nicht verfügbar.
  • (7) Entsprechend der durch den Befehl spezifizierten Bytebreite wird die Funktion B A, abhängig vom Inhalt der M-Statusflagge, Statusregisterbit 21, wie folgt berechnet; Wenn M=1, wird die Zahl der gewählten Bytes von A, um ein Bit null-ergänzt, mit Übertrag von derselben Anzahl gewählter Bytes von B, um die S-Statusflagge, das Statusregisterbit 21, ergänzt, subtrahiert; wenn M=0, wird die Anzahl der gewählten Bytes von A, um ein Bit null-ergänzt, mit Übertrag zur selben Anzahl gewählter Bytes von B, um das S- Flaggenbit ergänzt, hinzuaddiert.
  • (8) Der Befehl MPUDIVSTEP3 setzt das niederwertigste Bit des Q- Registers 154, Q&sub0;, entsprechend der Gleichung: Q&sub0;←M S Carry-Out (Bytebreite), weil das Aufwärtsschieben des Q- Registers während der Ausführung des Schritts MPDIVSTEP1 Q&sub0; leer ließ; dieses Quotientenbit ist jedoch vor dem Schritt MPSDIVSTEP3 nicht zum Laden in Q&sub0; verfügbar. Tabelle XII (fortgesetzt) B.1 mit Vorzeichen und einfacher Genauigkeit Code Mnemonic Gesetzte ALU-Statusflaggen Bytemaske (Bytebreite) Korrektur mit einfacher Genauigkeit, mit oder ohne Vorzeichen Überlauf mit mehrfacher Genauigkeit
  • Die ALU 130 des Prozessors 24 ist für drei Arten an Bytegrenzen- Ausrichtungs-Divisionsoperationen an Ganzzahligen vorgesehen: mit Vorzeichen mit einfacher Genauigkeit, ohne Vorzeichen mit einfacher Genauigkeit und mit mehrfacher Genauigkeit mit oder ohne Vorzeichen. Die Teiler und Dividenden jeder der Bytebreiten eins, zwei, drei oder vier können von der ALU 130 aufgenommen werden. Der Prozessor 24 ist zum Betrieb mit einer relativ einfachen Mikroprogrammsequenzsteuereinrichtung 12 ausgelegt, da die meisten der Entscheidungsanforderungen intern von dem Prozessor 24 gehandhabt werden. Die einzigen Anforderungen an die Sequenzsteuereinrichtung 12 bestehen darin, daß sie zum Durchlaufen von Schleifen und zum bedingten Verzweigen imstande ist. Jede der drei Arten von Bytegrenzen-Ausrichtungs-Divisionsoperationen wird unter Bezugnahme auf den Flußdiagrammalgorithmus von Fig. 8 beschrieben.
  • Fig. 8A ist ein Flußdiagramm, das den für die Division mit Vorzeichen mit einfacher Genauigkeit zu verwendenden Algorithmus zeigte wobei die Division unmittelbar von den in obigen Tabellen XIIA.1 und A.3 beschriebenen Befehlen implementiert und dementsprechend von der ALU 130 der vorliegenden Erfindung durchgeführt werden kann. Der Divisionsalgorithmus mit Vorzeichen und einfacher Genauigkeit ist ein Vier-Quadrant-Nichtwiederherstell- Teilungsalgorithmus, der ein Quotientenbit pro Befehlszyklus ergibt. Es sei angemerkt, daß alle in dem Flußdiagramm auftretenden Größen von derselben bei der Division durchgehend zu verwendenden Bytebreite sind.
  • Im allgemeinen reduziert der Divisionsalgorithmus den Teilrest bei jedem Schritt auf Null zu. Da der Algorithmus nicht wiederherstellend ist, wird bei jedem Schritt ein neues Quotientenbit und ein Teilrest erzeugt, und der vorige Teilrest wird, falls er falsch ist, korrigiert. Da die Korrektur gegenüber der Berechnung des Quotientenbits um einen Schritt verzögert ist, kann beim Austritt aus der Schleife ein Korrekturschritt erforderlich sein, wobei die sukzessive Verringerung des Rests implementiert wird. Wenn der sich ergebende Rest nicht exakt Null ist, sollte er dasselbe Vorzeichen wie der Dividend aufweisen. Wenn die Vorzeichen des Rests und der Anfangsdividend voneinander abweichen, ist eine Korrektur erforderlich. Bei positiven Quotienten wird die Korrektur durch Subtrahieren von Eins von dem Quotienten und Addieren des Divisiors zurück zum Rest durchgeführt. Bei negativen Quotienten wird die Korrektur durch Hinzuaddieren von Eins zu dem Quotienten und Subtrahieren des Divisors vom Rest durchgeführt.
  • Von einem Startblock 300 des Flußdiagramms von Fig. 8A gelangt man in einen Block 302, in dem das Q-Register 154 mit einem bei der Division zu verwendenden Dividend geladen wird. Dieser Dividend ist vermutlich an den DATA_A- oder DATA_B-Anschlüssen des Prozessors 24 und kann durch Verwenden des LOADQ-A- bzw. LOADQ- B-prozessorbefehls geladen werden, wobei eine Bytebreite die Anzahl der bei der Division zu verwendenden Bytes spezifiziert. Diese Befehle wurden oben bei der Erläuterung der Befehle der Gruppe 1 (Tabelle VII) beschrieben. Das Statusregistervorzeichenflaggenbit N, Bit 17 des Statussignalteils 112d, wird durch Laden des Q-Registers 154 gesetzt. Ferner ist in Block 302 die Ergänzung dieses Vorzeichenbits über einen verbleibenden Speicherbereich dargestellt; eine Operation, die durch den SIGN- Befehl (Gruppe 2, Tabelle VII) mit einer spezifizierten Bytebreite von Null durchgeführt werden kann. Dies präsentiert ein 32-Bit-Wort an den Y-Ausgangsanschlüssen des Prozessors 24, von denen jedes Bit die N-Statusflagge ist, die durch den Befehl, bei dem das Q-Register 154 geladen wird, gesetzt wird. Dieses Wort an den Y-Anschlüssen wird vermutlich über den Bus 46 zu einem Restspeicherplatz bei den Arbeitsregistern 22 (Fig. 1) übertragen.
  • Der Block 302 von Fig. 8A fordert auch eine Einfachbit-Aufwärtsverschiebung des Worts, das aus den gewählten Bits des Rests gebildet worden ist, woran sich die gewählten Bits in dem Q- Register 154 anschließen. Dies ist eine erforderliche Voraussetzung für jede Divisionsoperation und kann durch den obigen SDIVFIRST-Befehl (Tabelle XII) durchgeführt werden. Der Zweck dieses Befehls besteht darin, die M- und S-Statusflaggenbits des Statussignalteils 112d des Statusregisters in Vorbereitung für die Division zu setzen, was in Block 304 von Fig. 8A dargestellt ist. Der SDIVFIRST-Befehl wird an dem Dividenden wirksam, die in dem Q-REG ist, dem Divisor, der an die DATA_A-Eingänge anzuordnen ist und dem Rest, der an den DATA_B-Eingängen anzuordnen ist. Das Restergebnis wird an den y-Ausgangsanschlüssen des Prozessors 24 angeordnet und ist dem Restspeicherplatz in den Arbeitsregistern 22 zuzuführen. Das niederwertigste Bit des Q- Registers ist das Exklusiv-NOR der Vorzeichen des Divisors und des sich ergebenden Rests.
  • Wie aus Fig. 8A hervorgeht, gelangt man dann in einen Schleifenblock 304, der die Ausführung des Dividierschritts mit Vorzeichen und einfacher Genauigkeit insgesamt einmal weniger als das 8-fache der Anzahl der gewählten Bytebreiten, d. h. einmal für jedes verbleibende Bit der Parameter - Dividend, Divisorrest - das an der Division beteiligt ist, verlangt. Jeder Schritt dieser Divisionsschleife mit Vorzeichen erzeugt ein Quotientenbit und wird durch den SDIVSTEP-Befehl (Tabelle XII) wie folgt durchgeführt: das Q-Register enthält der Dividend, der DATA_A- Eingang hat den Divisor, der DATA_B-Eingang den Teilrest und das Ergebnis am Y-Ausgang des Prozessors ersetzt den Teilrest in den Arbeitsregistern.
  • Die gewählte Bytebreite bestimmt die Anzahl der niederwertigsten Bytes des Worts an dem A-Eingang, die (wenn die M-Statusflagge NULL ist) zu einer gleichen Anzahl von niederwertigsten Bytes des Worts am B-Eingang hinzuaddiert oder davon subtrahiert werden. Die in der Schleife 302 verlangte Einfachbit-Aufwärtsverschiebung wird an dem Wort durchgeführt, das aus den gewählten Bits des Rests und des Q-Registers gebildet ist, wie oben für den SDIVFIRST-Befehl beschrieben; wobei das Vorzeichenbit des Q- Registers in die niederwertigste Bitposition des Rests verschoben wird und das Ergebnis am Y-Ausgang des Prozessors 24 präsentiert wird. Die nicht gewählten Bytes hoher Ordnung am B-Eingang (d. h. der Teilrest) gelangen unverändert in die Bytes hoher Ordnung des Ergebnisses am Y-Ausgang. Das Ergebnis wird zu den Arbeitsregistern 22 übertragen, um den alten Rest zu ersetzen. Das Exklusiv-NOR des Vorzeichenbits am A-Eingang und das Vorzeichenbit des Ergebnisses vor der Aufwärtsverschiebung, d. h. das neue Quotientenbit, werden in das niederwertigste Bit des Q- Registers, Q&sub0;, verschoben. Das S-Statusflaggenbit, das das Vorzeichen des Dividenden enthält, wird durch die Ausführung des SDIVSTEP-Befehls nicht verändert.
  • Im Anschluß an die Schleife 304 gelangt man in einen Block 306, bei dem, auf der Basis des Vorzeichens des Endrests, der durch den Divisionsalgorithmus von Fig. 8A basiert, das Setzen der N- Statusflagge verlangt ist. Ein EINS-Bit wird ebenfalls in das niederwertigste Bit des Quotientenwerts in dem Q-Register, Q&sub0;, gesetzt. Diese Operationen werden durch die Ausführung des SDIV- LASTI-Befehls (Tabelle XII) durchgeführt und resultieren in algebraisch korrekten Werten für den Quotienten, Divisor und den Rest, wenn der Dividend positiv ist und der Rest während der Ausführung der Schleife 304 nicht Null wird. Um diese Möglichkeit zu testen, die sich aus negativen Dividenden ergibt, wenn der Rest beim Verlassen der Schleife 304 Null ist, wird die Z- Statusflagge dementsprechend rückgesetzt, indem, wie beschrieben wird, der SDIVLAST2-Befehl ausgeführt wird.
  • Beim Verlassen des Blocks 306 gelangt man in einen Entscheidungsblock 307, der bestimmt, ob der Inhalt des Z-Flagge EINS ist, und zwar auf der Basis der Ausführung von SDIVLAST1 in Block 306. Ein "Wahr"-Ausgang aus dem Entscheidungsblock 307 führt zu einem Block 310, der die Ausführung von Korrekturen an dem Quotienten und dem Rest verlangt. Der Inhalt des Q-Registers, der Quotient, muß zu den Y-Ausgangsanschlüssen des Prozessors 24 bewegt werden, so daß er anschließend korrigiert werden kann. Dies kann durch Ausführung des PASS-Q-Befehls (Gruppe 1, Tabelle VII) erfolgen.
  • Ein "Falsch"-Ausgang aus dem Entscheidungsblock 307 führt zu einem Entscheidungsblock 308, der Tests bezüglich des Vorhandenseins eines negativen Dividenden durchführt, wenn der Rest und der Divisor von derselben Größe sind, wie erwähnt. In diesem Fall wird die Z-Statusflagge in einem Block 309 rückgesetzt.
  • Wie in Block 310 gezeigt, erfolgt die Korrektur des Quotienten und des Rests, falls erforderlich, auf der Basis der Statusflaggen Z, N, S und M, die früher gesetzt worden sind, und zwar aufgrund der Zweierkomplementform der von dem Prozessor 24 verwendeten negativen Zahlen.
  • Algebraisch korrekte Werte für Quotient, Divisor und Rest, so daß Quotient * Divisor + Rest = Dividend, ergeben sich beim Eintritt in einen STOP-Block 312 entweder direkt aus einem "Falsch"-Ausgang aus dem Entscheidungsblock 308 oder nach den Korrekturschritten von Block 310.
  • Die in Block 310 verlangten Korrekturschritte werden durch Ausführen des QUOCORR-Befehls durchgeführt, der erfordert, daß der unkorrigierte Quotient (durch den PASS-Q-Befehl aus dem Prozessor ausgelesen) an die DATA_B-Eingangsanschlüsse angelegt wird und bewirkt, daß der korrigierte Quotient entsprechend dem Eintrag in den Zeilen drei und vier von Tabelle XII A.3 an den Y- Ausgangsanschlüssen anliegt. In gleicher Weise fordert der REM- CORR-Befehl, daß der Divisor an die DATA_A-Anschlüsse angelegt wird und der unkorrigierte Rest an die DATA_B-Anschlüsse angelegt wird und bewirkt, daß der korrigierte Rest gemäß dem Eintrag in den Zeilen eins und zwei der TABELLE XII A.3 an den Y- Ausgangsanschlüssen anliegt.
  • Ein Divisionsalgorithmus ohne Vorzeichen mit einfacher Genauigkeit, der direkt durch die in obiger Tabelle XII A.2 und A.3 beschriebenen Prozessorbefehle implementiert und dementsprechend von der ALU 130 der vorliegenden Erfindung ausgeführt werden kann, ist in Form eines Flußdiagramms in Fig. 8B dargestellt. Der Algorithmus ist dem Divisionsalgorithmus mit Vorzeichen und einfacher Genauigkeit von Fig. 8A recht ähnlich und bloß die Unterschiede werden im Detail beschrieben.
  • Von einem Startblock 320 gelangt man in einen Block 322, der dieselben vorläufigen Operationen ausführt, wie sie im Block 302 von Fig. 8A dargestellt sind, mit der Ausnahme, daß der UDIV- FIRST-Befehl (Tabelle XII) zur Implementierung der Einfachbit- Aufwärtsverschiebung des Worts, die hier gefordert ist, verwendet wird, das aus den gewählten Bits des Rests und des Q-Registers 154 verwendet wird. Dieser Befehl liefert ein NULL-Fill- Bit für das niederwertigste Bit des Q-Registers, Q&sub0;, wie in Zeile zwei von Tabelle XII A.2 gezeigt und in Block 322 verlangt.
  • Von Block 322 gelangt man zu Schleifenblock 324 und dieser führt dieselben Operationen aus, wie sie im Schleifenblock 304 von Fig. 8A dargestellt sind, mit der Ausnahme, daß während der hier verlangten Aufwärtsverschiebung das Q-Register mit einem Bit mit dem Wert M.S.carryout (Bytebreite) befüllt wird. (Die S-Statusflagge enthält das Vorzeichen des Teilrests nach jedem Schritt). Der Block 324 wird durch den UDIVSTEP-Befehl implementiert (Tabelle XIIA.2), der identisch mit dem SDIVSTEP-Befehl ist, außer dieser Wahl eines Fill-Bits von Q&sub0;, wie in Zeile fünf von Tabelle XIIA.2 angegeben ist.
  • Im Anschluß an die Schleife 324 gelangt man in einen Block 326, der das Setzen der N-Statusflagge auf den Wert M+S carryout (Bytebreite) und die Berechnung eines Q&sub0;-Fill-Bits, wie während der Schleife 324 verlangt, verlangt. Diese Operationen werden durch die Ausführung des UDIVLAST-Befehls (Tabelle XII) durchgeführt und resultieren in numerisch korrekten Werten für den Quotienten, den Divisor und den Rest, wenn die N-Statusflagge nicht auf eine EINS gesetzt worden ist. Um diese Möglichkeit zu testen, gelangt man nach Verlassen des Blocks 326 in einen Entscheidungsblock 328, der den Inhalt der N-Statusflagge testet. Ein "Wahr"-Ausgang aus dem Entscheidungsblock 328 führt zu einem Block 330, der die Durchführung derselben Korrekturschritte fordert wie der Divisionsalgorithmus mit Vorzeichen von Fig. 8A, Block 310.
  • Numerisch korrekte Werte für den Quotienten, den Divisor und den Rest, so daß Quotient * Divisor + Rest = Dividend beim Eintritt in einen STOP-Block 332 ergeben sich entweder direkt aus einem "Falsch"-Ausgang aus dem Entscheidungsblock 328 oder nach den Korrekturschritten des Blocks 330. Der Block 330 wird durch die Ausführung der PASS-Q-, REMCORR-Befehle implementiert, die in Verbindung mit dem oben erwähnten Divisionsalgorithmus mit Vorzeichen und einfacher Genauigkeit beschrieben worden sind.
  • Die innere Schleife eines Divisionsalgorithmus mit oder ohne Vorzeichen mit mehrfacher Genauigkeit kann, ähnlich dem in Flußdiagrammform in den Fig. 8A und 8B für die Division mit und ohne Vorzeichen mit einfacher Genauigkeit dargestellt, durch die in obiger Tabelle XII A.4 beschriebenen prozessorbefehle implementiert und dementsprechend von der ALU 130 ausgeführt werden. Der innere Schleifenblock ist den Schleifen 304 und 324 ähnlich und wird unter Verwendung des MPDIVSTEP1-Befehls ausgeführt, dem sich der MPDIVSTEP2-Befehl anschließt, wobei ein MPDIVSTEP2- Zyklus für Dreifach-Genauigkeit, zwei MPDIVSTEP2-Zyklen für Vierfach-Genauigkeit usw. ausgeführt werden. Und dann wird ein MPSDIVSTEP3 (für Division mit Vorzeichen mit mehrfacher Genauigkeit) oder ein MPUDIVSTEP3 (für Division ohne Vorzeichen mit mehrfacher Genauigkeit) durchgeführt, bei dem das neue Quotientenbit berechnet wird. Bei doppelter Genauigkeit, d. h. 64-Bit- Operanden, besteht die innere Schleife nur aus den MPDIVSTEP1- und MPDIVSTEP3- oder MPUDIVSTEP3-Befehlen.
  • Die folgende Tabelle XIII enthält eine Beschreibung der fünf Bytegrenzen-Ausrichtungsoperand-Ganzzahligen-Multiplikationsschrittbefehle der Gruppe 7. TABELLE XIII Gruppe 7 - Multiplikationsschrittbefehle ohne Vorzeichen oder Ursprungsort(e) Code Mnemonic Dest Shiftdir Fill-Bit
  • (1) Der Operand ist von einer Bitlänge, die gleich dem Achtfachen der durch den Befehl spezifizierten Bytebreite plus zwei ist. An der geeigneten Bytegrenze wird die ALU 130 um zwei Bits intern ergänzt, der an die ALU 130 angelegte Operand wird nicht beeinträchtigt.
  • (2) Die Funktion hängt vom Inhalt der beiden niederwertigsten Bits des Q-Registers, Q&sub1;, Q&sub0;, ab: wenn Q&sub1;Q&sub0;=10, dann wird A((1) um ein Bit nach oben verschoben; wenn Q&sub1;=0, hat die Funktion den Wert A (Aufwärtsverschiebung verlangt); oder wenn Q&sub1;=1, hat die Funktion einen Wert, der gleich dem Zweierkomplement von A((1)ist; wenn Q&sub1;Q&sub0;=00, hat die Funktion den Wert von insgesamt NULL.
  • (3) Die Funktion Down2 ist eine Abwärtsverschiebung zweier Bits der gewählten Bytes des Op&sub1;, wobei die nicht gewählten Bytes unverändert zu Dest gelangen.
  • (4) Die Funktion B((1) f(A(1)) wird wie folgt berechnet: abhängig vom Inhalt der beiden niederwertigsten Bits des Q-Registers, Q&sub1;, Q&sub0;, und dem Inhalt der M-Statusflagge, dem Statusregisterbit 21: wenn Q&sub1;Q&sub0;M=100 oder 011, dann ist f(A(1)) das um ein Bit aufwärts verschobene A wenn Q&sub1;=0, hat die Funktion einen Wert, der gleich der Summe aus B(1) und A(1) ist; oder wenn Q&sub1;=1, hat die Funktion den gleichen Wert wie die Differenz B(1) minus A(1).
  • (5) Siehe Anmerkung (5) zu Tabelle XII A, oben. TABELLE XIII (fortgesetzt) B.1 ohne Vorzeichen Code Mnemonic Gesetzte ALU-Statusflagge Bytemaske (Bytebreite)
  • Die ALU 130 des Prozessors 24 führt zwei Arten von Bytegrenzen- Ausrichtungs-Multiplikationsoperationen an Ganzzahligen aus: ohne Vorzeichen mit einfacher Genauigkeit und mit Vorzeichen mit einfacher Genauigkeit. Multiplikanden und Multiplikatoren jeder der Bytebreiten eins, zwei, drei oder vier können von der ALU 130 aufgenommen werden. Was die obigen Divisionsalgorithmen anbelangt, erfordern die Multiplikationsalgorithmen lediglich eine relativ einfache Mikroprogrammsequenzsteuereinrichtung, die imstande zum Schleifendurchlauf und bedingten Verzweigung imstande ist. Der sowohl für die Multiplikation mit als auch ohne Vorzeichen verwendete Algorithmus ist ein Booth'scher Algorithmus, der pro Befehlszyklus zwei Produktbits ergibt. Was die oben beschriebenen Divisionsalgorithmen anbelangt, sei darauf hingewiesen, daß die durch den Multiplikationsbefehl spezifizierte Bytebreite über die gesamte Multiplikation zu verwenden ist. Die Algorithmen sind zur Funktion bei einer ALU konzipiert, wie beispielsweise die durch die vorliegende Erfindung geschaffene, die zwei Zusatz-Genauigkeits-Bits an das höchstwertige Byte, das durch die über die Multiplikation verwendete Bytebreite gewählt ist, anhängt. Ferner wirkt der Algorithmus unter der Steuerung der M-Statusflagge, Bit 21 des Statusregisters 112 und den beiden niederwertigsten Bits des Q-Registers 154, Q&sub1; und Q&sub0;. Die ALU 130 verwendet zur Implementierung der Algorithmen eine Zwei-Bit-"Bewegungszelle".
  • Im allgemeinen sucht der Multiplikationsalgorithmus in dem Multiplikator nach EINSen-Folgen und am Anfang einer jeden derartigen Folge wird der Multiplikand von dem Multiplikator subtrahiert und am Ende jeder Folge wird der Multiplikand mit der korrekten Signifikanz wieder addiert. Bei einer Multiplikation mit Vorzeichen repräsentiert das Vorzeichenbit der Zweierkomplementzahl den Start einer unendlich langen EINS-Folge. Der Algorithmus erkennt den Beginn einer derartigen Folge und subtrahiert den Multiplikanden, woraufhin der Algorithmus endet, ohne den Multiplikanden zurückzuaddieren, was tatsächlich das korrekte Ergebnis für Multiplikation mit Vorzeichen ist. Bei Multiplikation ohne Vorzeichen besteht die einzige Veränderung darin, die beiden NULL-Bits hoher Ordnung mit dem Multiplikator zu verketten und dann den Algorithmus das Ende der EINS-Folge erkennen und entsprechend ausgleichen zu lassen.
  • Fig. 8C ist ein Flußdiagramm, das den bei Multiplikation ohne Vorzeichen mit einfacher Genauigkeit zu verwendenden Algorithmus darstellt, der direkt durch die in Tabelle XIII A.1 beschriebenen prozessorbefehle implementiert werden und dementsprechend von der ALU 130 der vorliegenden Erfindung ausgeführt werden kann. Von einem Startblock 340 des Flußdiagramms von Fig. 8C gelangt man in einen Block 342, in dem in das Q-Register ein bei der Multiplikation zu verwendender Multiplikator geladen wird. Dieser Multiplikator befindet sich wahrscheinlich an den DATA_A- oder DATA_B-Anschlüssen des Prozessors 24 und kann durch eine Verwendung des LOADQ-A- bzw. LOADQ-B-Prozessorbefehls geladen werden, wobei eine Bytebreite die Anzahl der bei der Multiplikation zu verwendenden Bytes spezifiziert. Die Statusregistervorzeichenflagge N, Bit 17 des Statussignalteils des Statusregisters 112, wird durch Laden des Q-Registers 154 gesetzt.
  • Der UMULFIRST-Befehl (Tabelle XIII) implementiert die in Block 342 geforderten Operationen. Der UMULFIRST-Befehl (Tabelle XIII) implementiert die anderen vorläufigen Operationen, die in Block 342 wie folgt verlangt werden: der gewählte Bytebreiten-Multiplikand wird um zwei Bits ergänzt, wobei in diesen beiden oberen Bits NULLen angeordnet werden, und dann um ein Bit nach oben verschoben, wenn die beiden Bits niedriger Ordnung des Multiplikators in dem Q-Register 154 Q&sub1;Q&sub0;=10 sind, wodurch ein erster vorläufiger Multiplikationsschritt durchgeführt wird, wenn der Anfang einer EINS-Folge in dem Multiplikator gefunden worden ist. Wenn Q&sub1;Q&sub0;=00, wird eine zwei-Bit-Abwärtsverschiebung des Worts, das aus den gewählten Bits in dem Q-Register 154 gebildet ist und dem ein Wort von gleicher Länge von insgesamt NULL folgt, durchgeführt, und das Ergebnis wird auf den Y-Ausgangsanschlüssen des Prozessors 24 angeordnet, wo es zu der Teilproduktposition in den Arbeitsregistern 22 übertragen wird. Bei den anderen übrigen Fällen von Q&sub1;Q&sub0; ungleich 00 wird die Zwei-Bit- Abwärtsverschiebung des Worts, das aus den gewählten Bits in dem Q-Register gebildet ist und dem sich die gewählten Bits des Multiplikanden (wenn erforderlich, aufwärts verschoben) anschließen, durchgeführt und das Ergebnis auf dem Y-Ausgang des Prozessors angeordnet, um das Teilprodukt zu ersetzen. Das zweitniederwertigste Bit des Q-Registers, Q&sub1;, wird in der M- Statusflagge gespeichert.
  • Bei durch den UMULFIRST-Befehl durchgeführten Operationen sowie bei den anderen Multiplikationsbefehlen von Tabelle XIII werden die nicht gewählten Bytes hoher Ordnung von dem geeigneten Operanden unverändert zu dem Y-Ausgang geleitet, ungeachtet des Vorhandenseins der beiden zusätzlichen Genauigkeits-Bits, die während der Ausführung der Multiplikationsschritte in der ALU 130 vorhanden sind.
  • Von dem Block 342 gelangt man in einen Schleifenblock 344, der die Ausführung des Multiplikationsschritts ohne Vorzeichen mit einfacher Genauigkeit insgesamt eins weniger als das Vierfache der Anzahl der gewählten Bytebreiten verlangt, d. h. einmal für jedes Bitpaar in dem Multiplikator und dem Multiplikanden, die an der Multiplikation teilnehmen. Jeder Schleifenschritt in dem Algorithmus von Fig. 8C erzeugt zwei Produktbits und wird durch den UMULSTEP-Befehl (Tabelle XIII) wie folgt implementiert: das Q-Register enthält den Multiplikator und einige Teilproduktbits, der DATA_A-Eingang weist den Multiplikanden, der DATA_B-Eingang das Teilprodukt auf, und das Ergebnis am Y-Ausgang des Prozessors 24 ersetzt das in den Arbeitsregistern gespeicherte Teilprodukt. Die in Schleifenblock 344 durchgeführten Schritte sind im wesentlichen dieselben Operationen wie die in Block 342 verlangten: Einfachbit-Aufwärtsverschiebung des Multiplikanden, wenn Q&sub1;Q&sub0;M=100 oder 011, wodurch Anfang oder Ende einer EINSen- Folge angezeigt wird, oder eine Zweibit-Abwärtsverschiebung des Worts, das aus den gewählten Bits in dem Q-Register gebildet ist, an das sich das an Teilprodukt anschließt, das an den DA- TA_B-Eingang angelegt wird, wenn Q&sub1;=Q&sub0;=M. Bei den anderen verbleibenden Fällen von Q&sub1;, Q&sub0; und M bestimmt die gewählte Bytebreite die Anzahl der niederwertigsten Bytes des Multiplikators in dem Q-Register, die zu einer gleichen Anzahl niederwertigster Bytes des Multiplikanden an dem A-Eingang zum Prozessor 24 hinzuaddiert werden (wenn die M-Statusflagge NULL ist) oder von ihr subtrahiert werden (wenn die M-Statusflagge EINS ist). Das Ergebnis, dem die gewählten Bits in dem Q-Register vorangehen, wird dann um zwei Bits abwärts geschoben. In jedem der beiden letzten Fälle wird das Ergebnis zusammen mit den nicht gewählten Bytes des Teilprodukts auf den y-Ausgangsanschlüssen des Prozessors 24 angeordnet und zu der Teilproduktposition in den Arbeitsregistern übertragen. Die Statusflagge M wird mit dem Inhalt des Q&sub1;-Bits des Q-Registers gesetzt. Der Schleifenblock 344 wird durch den UMULSTEP-Prozessorbefehl (Tabelle XIII) implementiert.
  • Beim Verlassen der Schleife 346 besteht das Teilprodukt aus einem Teil hoher Ordnung in der Arbeitsregisterposition und einem Teil niedriger Ordnung, welcher den Inhalt des Q-Registers 154 darstellt. Von der Schleife 344 gelangt man über einen Entscheidungsblock 346 in einen Korrekturblock 348, wenn eine Korrektur erforderlich ist, weil das führende Bit des Teilprodukts im Falle der Ganzzahligenmultiplikation ohne Vorzeichen unkorrekt als Vorzeichenbit interpretiert werden kann, wenn das höchstwertige Bit des Multiplikators eine EINS ist. Durch Verketten zweier NULL-Bits hoher Ordnung mit dem Multiplikator bei jedem Schleifenschritt zur Bildung des Multiplikators 1 hat die Schleife 344 bereits das Ende einer EINSen-Folge in diesem O&sub1;O&sub0;M=001 oder 010 erkannt, und somit würde die Aussage Teilprodukt der Aussage + Zweibit-Abwärtsverschiebung von Q_REG- (Multiplikator1-Multiplikand1) während der letzten Iteration des Schleifenblocks 344 getroffen worden sein, wenn Q&sub1;=1. Da die M- Statusflagge anschließend vor dem Verlassen des Schleifenblocks 344 auf den Inhalt von Q&sub1; gesetzt wird, gelangt man von dem "Wahr"-Ausgang des Entscheidungsblocks 348 auf der Basis von M als einer EINS in den Korrekturblock 348 und addiert die gewählten Bytes niedriger Ordnung des Multiplikanden wieder zu dem höchstwertigen Teil des Teilprodukts. Der UMMULLAST-Befehl (Tabelle XIII) implementiert diesen Korrekturblock und fordert, daß der Multiplikand an den DATA_A-Eingängen und der höchstwertige Teil des Teilprodukts an den DATA_B-Eingängen anliegt. Das Ergebnis wird an den Y-Anschlüssen ausgegeben und ist zu den Arbeitsregistern zu übertragen, um den höchstwertigen Teil des Teilprodukts zu ersetzen.
  • Korrekte Werte für die Bits hoher Ordnung des Teilprodukts und die Bits niedriger Ordnung des Teilprodukts existieren in dem Arbeitsregister bzw. dem Q-Register, wenn man in den STOP-Block 350 gelangt, entweder direkt von einem "Falsch"-Ausgang aus dem Entscheidungsblock 346 oder nach dem Korrekturschritt von Block 348.
  • Ein Multiplikationsalgorithmus mit Vorzeichen und einfacher Genauigkeit, der direkt durch die in obiger Tabelle XIII A.2 beschriebenen Befehle implementiert werden und dementsprechend von der ALU 130 der vorliegenden Erfindung ausgeführt werden kann, ist ähnlich dem in Form eines Flußdiagramms in Fig. BC dargestellten und wird nicht im einzelnen beschrieben. Die einzige signifikante Änderung in dem Algorithmus gegenüber dem in Fig. 8C gezeigten ergibt sich aus der Tatsache, daß bei einer Multiplikation mit Vorzeichen das Teilprodukt, das sich beim Verlassen der Schleife 344 ergibt, in allen Fällen korrekt ist, und somit ist kein Korrekturblock 348 zur Implementierung des Multiplikationsalgorithmus mit Vorzeichen erforderlich.
  • 4. Beschreibung von Befehlen mit längenvariablen Bitfeldoperanden
  • Wie oben erwähnt, weist der Befehlssatz des Datenprozessors 24 vier Befehlsgruppen mit längenvariablen Bitfeldoperanden auf. Jede Gruppe, Gruppe 8 bis Gruppe 11, wird unter Verwendung einer Tabelle beschrieben, die in derselben Schreibweise wie die zur Beschreibung der Bytegrenzen-Ausrichtungsoperand-Befehle verwendeten obigen Tabellen gehalten ist, außer daß statt einer Bytemaske einer Bytebreite, die durch die I&sub8;- und I&sub7;-Bits des Befehls zum "Wählen" bestimmter Bytes eine Operandenbitmaske für Feldoperationen, die mit einer Breite von 1 bis 32 Bits, wie durch die Breiteneingänge W&sub4;-W&sub0; zum "Wählen" bestimmter Bits spezifiziert ist, verwendet wird. Im Falle von Feldausrichtungs- und Einzelbit-Operanden bestimmten die vier Positionseingänge niedriger Ordnung P&sub4;-P&sub0; das niederwertigste Bit des Operanden, während im Fall von n-Bit-Verschiebungen und nichtausgerichteten Feldoperanden alle Positionseingänge P&sub5;-P&sub0; zur Lieferung eines Sechs-Bit-Zweierkomplement-Ganzzahligen mit Vorzeichen zur Spezifizierung des Betrags und der Richtung der Verschiebung verwendet werden. Der Ursprung der Operandenbreiten- und -positionsparameter wird gemäß obiger Tabelle VI von den Befehlsbits I&sub8; und I&sub7; gewählt.
  • Die folgende Tabelle XIV enthält eine Beschreibung der sechs Befehle mit längenvariablem Bitfeld der Gruppe 8 (N-Bit- Verschiebungen, Rotieren). TABELLE XIV Gruppe 8 - N-Bit-Verschiebungs und Rotationsbefehle A.1 Verschieben Code Mnemonic Dest Shiftdir Ursprungsort(e) Fill-Bit(s) Rotieren
  • (1) Die Verschieberichtung ist aufwärts für nicht-negative Werte des Sechs-Bit-Positionswertes mit Vorzeichen, der durch den Befehl spezifiziert ist, sonst abwärts.
  • (2) Betrifft den Inhalt des (Vorzeichen-) Bits hoher Ordnung des Operanden.
  • (3) Die Verschieberichtung ist stets aufwärts und der Betrag der Verschiebung wird durch die niederwertigsten fünf Positionsbits P&sub4;-P&sub0; bestimmt.
  • (4) Betrifft den gegenwärtigen Inhalt des Bits hoher Ordnung des Operanden an jedem Punkt innerhalb der Verschiebung; somit wird an dem Y-Ausgang eine zyklische Aufwärtsverschiebung des Operanden präsentiert. TABELLE XIV (fortgesetzt) B.1 Verschieben Code Mnemonic Gesetzte ALU-Statusflaggen Rotieren
  • Die folgende Tabelle XV enthält eine Beschreibung der neun Befehle mit längenvariablem Bitfeld der Gruppe 9 (Einzelbit-Operationen). TABELLE XV Gruppe 9 - Einzelbit-Operations-Befehle Code Mnemonic Dest
  • (1) Das extrahierte Bit erscheint an dem Bit niedriger Ordnung des Y-Ausgangs, d. h. Y&sub0;, wobei die Bits Y&sub3;&sub1;&submin;&sub1; hoher Ordnung auf NULL gesetzt sind.
  • (2) Die Funktion extrahiert das Bit des Operanden an der Position, die von den niederwertigsten fünf Positionsbits P&sub4;-P&sub0; bestimmt wird; komplementiert, wenn das höchstwertige Positionsbit P&sub5; eine EINS ist.
  • (3) Betrifft das Bit des Ziels an der von den niederwertigsten fünf Positionsbits P&sub4;-P&sub0; bestimmten Position; wobei die
  • anderen Zielbits unbeeinträchtigt von dem Operanden Op&sub1; her weitergeleitet werden. TABELLE XV (fortgesetzt) Code Mnemonic Gesetzte ALU-Statusflaggen keine
  • (4) Siehe ersten Teil von Anmerkung (2), die Positionsbits P&sub4;-P&sub0; betreffend.
  • Die folgende Tabelle XVI enthält eine Beschreibung der sechzehn Befehle mit längenvariablem Bitfeld der Gruppe 10 (logische Feldoperationen; ausgerichtet, nicht ausgerichtet, Extrahieren). TABELLE XVI Gruppe 10 - Feld-Logik-Operationsbefehle A.1 Ausgerichtet Code Mnemonic Dest oder Ursprungsort(e) Nichtausgerichtet
  • (1) Die gewählten Bits werden durch die niederwertigsten fünf Positionseingänge P&sub4;-P&sub0;, als ein Ganzzahliges ohne Vorzeichen behandelt, und die Breiteneingänge W&sub4;-W&sub0; bestimmt.
  • (2) Die Funktion Translate (Ergebnis) ist wie folgt definiert: Wenn der durch den Befehl spezifizierte Sechs-Bit-Positionsparameter positiv ist, wird zuerst das Ergebnis aus den niederwertigsten Bits eines Wortes innerhalb Op&sub1; der durch den Befehlsbreitenparameter spezifizierten Breite und den Bits eines Wortes innerhalb Op&sub2;, das an der Position startet und die Breite aufweist, die durch die Befehlspositions- und -breitenparameter spezifiziert ist, gebildet. Zweitens erscheint das Ergebnis an den Y-Ausgangsanschlüssen in den Bitpositionen, die, von den Befehlspositions- und -breitenparametern spezifiziert werden. Wenn der durch den Befehl spezifizierte Sechs-Bit-Positionsparameter negativ ist, wird zuerst das Ergebnis aus den Bits eines Worts innerhalb Op&sub2;, das an der Position beginnt und die von den Befehlspositions- und -breitenparametern bestimmte Breite aufweist, und aus den niederwertigsten Bits eines Worts innerhalb Op&sub2; der durch den Befehlsbreitenparameter spezifizierten Breite gebildet. Zweitens erscheint das Ergebnis an den Y-Ausgangsanschlüssen in den niederwertigsten Bits der von dem Befehlsbreitenparameter spezifizierten Breite. TABELLE XVI (fortgesetzt) A.3 Ausgerichtet Code Mnemonic Dest Shiftdir Ursprungsort(e) Fill-Bit(s)
  • (3) Bei nicht-negativen Werten des sechs-Bit-Positionswerts mit Vorzeichen, der durch den Befehl spezifiziert ist, werden die niederwertigsten Bits eines Worts innerhalb Op&sub1; einer von dem Befehlsbreitenparameter spezifizierten Breite zu der Bitposition aufwärts verschoben, die durch den Befehl spezifiziert ist. Bei negativen Positionswerten werden die Bits eines Worts innerhalb Op&sub1; einer durch den Befehl, der an dem Zweierkomplement des Positionswertes startet, spezifizierten Breite zu den niederwertigsten Bitpositionen abwärts verschoben.
  • (4) Ein aus Op&sub1; gebildetes Vierundsechzig-Bit-Wort, gefolgt von Op&sub2;, wird um einen Betrag rotiert, der durch den Befehl spezifiziert wird; aufwärts, wenn der Sechs-Bit-Positionswert nicht-negativ ist, und sonst abwärts.
  • (5) Betrifft den gegenwärtigen Inhalt des Bits an jedem Punkt in der Rotation, somit wird eine zyklische Verschiebung durchgeführt.
  • (6) Betrifft das niederwertigste Wort einer durch den Befehl spezifizierten Breite; wobei das Bit hoher Ordnung auf NULLen gesetzt ist. TABELLE XVI (fortgesetzt) A.1 Ausgerichtet Code Mnemonic Gesetzte ALU-Statusflaggen Bitmaske Position Breite Nichtausgerichtet Extrahieren
  • (7) Siehe Anmerkung (1).
  • Die folgende Tabelle XVII führt die Beschreibung der Befehle mit längenvariablem Bitfeld der Gruppe 11 (Maskenerzeugung) fort. TABELLE XVII Code Mnemonic Dest Bitmaske (Position, Breite) Gesetzte ALU-Statusflaggen keine
  • (1) Betrifft eine Bitmaske aus EINSen, beginnend an der durch die niederwertigsten fünf Positionsbits P&sub4;-P&sub0; der durch den Breitenparameter spezifizierten Breite spezifizierten Position.
  • D. Ausführliche Beschreibung
  • Nachdem die Datenprozessoreinheit 24 unter Bezugnahme auf Fig. 2 und der Befehlssatz im allgemeinen beschrieben worden ist, erfolgt nunmehr eine ausführliche Beschreibung bestimmter Elemente der Erfindung.
  • Steuerbus: Wie oben erwähnt, führt jeder Befehlszyklus-dem Befehlsdecoder 100 das 7-Bit-Prozessorbefehlswort zu. Der Befehlsdecoder 100 seinerseits dekodiert den Befehl und gibt mehrere Steuersignale auf dem Steuerbus 102 aus, die die zur Ausführung der Befehle erforderlichen Datenbusse manipulieren. Teile des Steuerbusses 102 werden zu allen Elementen der Prozessoreinheit 24 (Fig. 2) geleitet. Der Steuerbus 102 ist ein leitender unidirektionaler Bus, weil Informationen nur von dem Befehlsdecoder 100 und zu den jeweiligen Elementen der Prozessoreinheit 24 übertragen werden.
  • Wie in Fig. 9 deutlicher zu erkennen, weist der Steuerbus 102 mehrere Verbindungen auf, die jeweils für bestimmte Steuersignale reserviert sind, die von dem Befehlsdecoder 100 ausgehen. Die Steuersignale werden von dem Steuerbus 102 zu Zielpositionen geleitet, wo sie zur Steuerung der Datenwege durch verschiedene Elemente der Prozessoreinheit 24 verwendet werden, um die von dem bestimmten decodierten Befehl geführten Ergebnisse zu erzielen.
  • Fig. 9 dient in erster Linie zur Veranschaulichung des Ursprungs einiger der wichtigeren Steuersignale, die auf dem Steuerbus 102 geleitet werden, wobei deren Funktion in bezug auf das endgültige Ziel dieser Signale beschrieben wird, wenn verschiedene ausführliche Beschreibungen bestimmter der Schaltungselemente des Prozessors 24 erörtert werden. Beispielsweise leiten drei Signalleitungen die Steuersignale SEL_BYTE_W, EN_FULL_WD und BIT_INSTS, die, wie deutlich wird, an die ALU 130 angelegt werden, um die Bytes der Bits zu wählen, die an der bestimmten arithmetischen oder logischen Operation teilnehmen, die durch einen Befehl spezifiziert wird. Eines oder mehrere dieser Steuersignale wäre, abhängig von dem von dem Befehlsdecoder 100 decodierten Befehl, aktiv.
  • Auf Fig. 10 Bezug nehmend und der Maskenerzeugungs-/-verschiebeeinrichtung 118 folgend, sind dort die ALU 130 und der SWAP- MUX 138 ausführlicher dargestellt. Es sei daran erinnert, daß der Datenprozessor 24 eine Hochleistungs-, Hochgeschwindigkeitseinheit sein soll. Dementsprechend wird er vorzugsweise als bipolare integrierte Schaltung hergestellt, wobei eine emittergekoppelte Logik (ECL) verwendet wird. Es ist bekannt, daß die ECL-Technologie das Verbinden der Emitterleitungen der Ausgangstransistorstufen einer Reihe von Gates zuläßt, wodurch die verdrahtete ODER-Funktion ausgeführt wird.
  • In Fig. 10 ist die Maskenerzeugungs-/-verschiebeeinrichtung 118 als vier Maskenerzeugungsschaltungen 400, 401, 402 und 403 und eine Verschiebeeinrichtung 404 aufweisend dargestellt. Die Schaltungsanordnung einer repräsentativen der vier Maskenerzeugungsschaltungen, der Schaltung 400 für Bytes niedriger Ordnung, ist im Detail als acht Stufen aufweisend, eine für jedes Maskenbit niedriger Ordnung MB&sub7;, MB&sub6;, . . . MB&sub0; dargestellt. (Maskenbits hoher Ordnung MB&sub3;&sub1; bis MB&sub8; werden von den Schaltungen für Bytes hoher Ordnung, 403, 402 und 401, erzeugt.) Während der Verarbeitung eines Einzelbyte-Grenzenausrichtungsoperanden-Befehls wird beispielsweise ein Freigabebytenullsignal (ENEBYTE ) auf einer Signalleitung 406 von einer Feldbreitensteuerschaltung 408 erzeugt und von dieser zu den Eingängen eines Satzes aus acht ODER-Gattern 410, 412, 414, 416, 418, 420, 422 und 424 geleitet, wodurch alle acht Maskenbits niedriger Ordnung in dem während der Ausführung der oben beschriebenen Bytegrenzen-Ausrichtungsoperand-Befehle verwendeten Bytes niedriger Ordnung freigegeben werden. (Freigabebyte-(ENALL, ENBYTE, ENBYTE1)-Signale, die von der Feldbreitensteuerschaltung 408 auf den Signalleitungen 426, 427 bzw. 428 erzeugt werden, geben gleichermaßen alle vier, die niederwertigsten drei bzw. zwei Bytes frei.)
  • Um die obigen Befehle mit längenvariablen Bitfeldoperanden zu verarbeiten, werden von der Feldbreitensteuerschaltung 408 Breitensignale erzeugt und an die Eingänge der acht ODER-Gatter 410, 412, 414, 416, 418, 420, 422 und 424 und an den zweiten Satz aus acht ODER-Gattern 411, 413, 415, 417, 419, 421, 423 und 425 angelegt. Diese Breitensignale repräsentieren die fünf Breitenbits WIDTH&sub4;, WIDTH&sub3;, WIDTH&sub1; und WIDTH&sub0;, die von dem WIDTH-MUX 106 von entweder den Eingangsanschlüssen W&sub4;-W&sub0; des Prozessors 24 oder dem Breitenteil 112a des Statusregisters 112 ausgewählt werden, abhängig von dem von den Befehlsbits INST&sub7;&submin;&sub8; gemäß obiger Tabelle IV gewählten Breitenursprungsort, wie über die Signalleitungen 104 an den WIDTH-MUX 106 angelegt.
  • Die Ausgangssignale der mit aufeinanderfolgenden Zahlen numerierten Paare der sechzehn ODER-Gatter, die von 410 bis 425 numeriert sind, die Paare 410-411, 412-413, . . ., 424-425 sind mit einem Satz aus acht NOR-Gattern 430, 431, . . ., bzw. 437 verbunden und ihre Ausgänge sind die Maskenbits MB&sub7;, MB&sub6;, bzw. MB&sub0;. Und diese vierundzwanzig Gatter zusammen bilden einen binären Decoder mit einem Fünf-Bit-Eingang und einem Acht-Bit- Ausgang, der eine beliebige zusammenhängende Gruppe der Maskenbits MB&sub7;, MB&sub6;, . . ., MB&sub0; freigeben kann. In ähnlicher Weise bilden die Schaltungen 400, 401, 402 und 403 zusammen einen binären Decoder mit einem Fünf-Bit-Eingang und einem Zweiunddreißig-Bit- Ausgang, der eine beliebige zusammenhängende Gruppe der Maskenbits MB&sub3;&sub1;, MB&sub3;&sub0;, . . ., MB&sub0; zur Verwendung als eine Bitmaske von wählbarer Breite während der Verarbeitung der Befehle mit längenvariablem Bitfeldoperanden freigeben kann. Die freigegebenen Bits werden als NULLen kodiert und die verbleibenden Bits als EINSen, so daß die erzeugte Maske am höchstwertigen Ende von einer Umzäunung aus EINSen begrenzt ist.
  • Abhangig von dem von Prozessor 24 durchgeführten Prozessorbefehl, entweder einem Bytegrenzen-Ausrichtungsbefehl oder einem Befehl mit längenvariablem Bitfeldoperanden, erzeugt der Befehlsdecoder 100 Steuersignale, Bytebreitenwählsignale (SEL_BY- TE_W), Ganzwortfreigabesignale (EN_FULL_WD) oder Bitbefehlswählsignale (BIT_INST_S), die über den Steuerbus 102 der Feldbreitensteuerschaltung 408 zugeleitet werden. Bei Bytegrenzen-Ausrichtungsoperand-Befehlen ist das BIT_INST_S-Signal LOW und entweder das EN_FULL_WD- oder das SEL_BYTE_W-Signal ist HIGH und das andere Signal ist LOW, abhängig davon, ob der Prozessorbefehl eine Bytebreite von vier bzw. eine Bytebreite von weniger als vier spezifiziert. Bei Befehlen mit längenvariablem Bitfeld ist das BIT_INST_S-Signal HIGH und die EN_FULL_WD- und SEL_BY- TE_W-Signale sind LOW.
  • In ersterem Fall werden die Bit-Setz-Abschnitte der Feldbreitensteuerschaltung 408, die Schaltungen 403a und 408b, durch das LOW-BIT_INST_S-Signal, das an alle drei UND-Gatter 440, 441 und 442, die die Bit-Setz-Schaltung 408a bilden, und alle vier UND- Gatter 443, 444, 445 und 446, die die Bit-Setz-Schaltung 408b bilden weitergeleitet wird, deaktiviert, wodurch diese Schaltungen inaktiviert werden; während ein Byte-Setz-Abschnitt 408c der Feldbreitensteuerschaltung 408 durch das LOW-BIT_INST_S-Signal, das einem Satz UND-Gattern 448, 449, 450 und 451 an ihren Invertereingängen zugeführt wird, aktiviert wird. Die von dem WIDTH- MUX 106 gemäß Tabelle I erzeugten Bytebreitensignale WIDTH&sub4;, WIDTH&sub3;, WIDTH&sub2;, WIDTH&sub1; und WIDTH&sub0; werden über Signalleitungen 116 und einen Satz aus fünf Invertern 452 zu den Eingängen des Satzes aus UND-Gattern 448, 449, 450 und 451 und zu einem ODER- Gatter 454 und einem UND-Gatter 456 geleitet, was in Verbindung mit entweder dem an das Gatter 448 an einen Invertereingang oder an das Gatter 456 angelegte HIGH-Signal SEL_BYTE_W oder dem an ein ODER-Gatter 458 angelegten HIGH-Signal EN_FULL_WD bewirkt, daß das geeignete HIGH-Freigabebyte- (ENBYTE2, ENBYTE1, ENBYTE ) Signal am Ausgang des Gatters 449, 450 und/oder 451 erzeugt wird oder daß das HIGH-Signal zur Freigabe aller Bytes (ENALL) am Ausgang eines ODER-Gatters 460 erzeugt wird. Der Ausgang des Gatters 451 wird über die Signalleitung 406 zu den Eingängen der acht ODER-Gatter 410, 412, 414, 416, 418, 420, 422 und 424 der Maskenerzeugungsschaltung 400 (und 401), der Ausgang des Gatters 450 über die Signalleitung 428 zu den Eingängen von acht ähnlichen Gattern der Maskenerzeugungsschaltung 401 (und 402), der Ausgang des Gatters 445 über die Signalleitung 427 zu den Eingängen acht ähnlicher Gatter der Maskenerzeugungsschaltungen 402 und 403 und der Ausgang des Gatters 460 über die Signalleitung 426 zu allen derartigen Gattern der Maskenerzeugungsschaltungen 400, 401, 402 und 403 geleitet.
  • In letzterem Fall (des Befehls mit längenvariablem Bitfeld) werden die Bit-Setz-Abschnitte 408a und 408b der Feldbreitensteuerschaltung 408 von dem HIGH-BIT_INST_S-Signal aktiviert und der Byte-Setz-Abschnitt 408c der Feldbreitensteuerschaltung wird von den von dem Befehlsdecoder 100 erzeugten LOW-SEL_BYTE_W- und -EN_FULL_WD-Signalen deaktiviert. In diesem Fall werden die von dem WIDTH-MUX 106 gewählten Breitensignale WIDTH&sub4;, . . ., WIDTH&sub0; an die Gatter der Bit-Setz-Schaltungen 408a und 408b angelegt, die eine binäre Decodierung dieser fünf Breitensignale durchführen, und die daraus resultierenden decodierten Signale an den Ausgängen der Gatter 440, 441, 442, 443, 444, 445 und 456 werden über Signalleitungen 461, 462, 463, 464, 465, 466 bzw. 467 zu den Eingängen der ODER-Gatter geleitet, die die Maskenerzeugungsschaltungen 400, 401 und 402 und 403 vergleichen, so daß die n- Bits niedrigster Ordnung, die an der Bitposition beginnen, die durch die Breitensignale WIDTH&sub4;, . . ., WIDTH&sub0; spezifiziert werden und die als binäre Zahl (n) von fünf Bits angesehen werden, von den NOR-Gattern der Maskenerzeugungsschaltungen 400, 401, 402 und 403 auf NULL gesetzt werden, während die verbleibenden Bits höchster Ordnung (32-n) auf EINS gesetzt werden.
  • Eine ausführliche Ansicht der Maskenverschiebeeinrichtung 404 mit programmierten Nur-Lese-Speichern (PROM) und dazugehörigen Schieberegistern ist in Fig. 11 dargestellt und stellt PROMs 470 und 472 und Schieberegister 474 und 476 dar. Die zweiunddreißig Ausgänge der Maskenbyteschaltungen 400, 402, 402 und 403, die Maskenbits MB&sub3;&sub1;, MB&sub3;&sub0;, . . ., MB&sub0; werden an den PROM 470 angelegt und der PROM 470 leitet die zweiunddreißig Signale in einem naus-acht-Code dem Schieberegister 474 zu; wobei bei dem aus zweiunddreißig Stufen bestehenden Schieberegister 474 jede Stufe einen gewichteten der n-aus-acht-Codes empfängt.
  • Die Positionsinformationssignale POS&sub5;-POS&sub0; von dem POS-MUX j108 werden über die Signalleitungen 124 der Logikschaltung 474 zugeführt. Diese Positionssignale repräsentieren die sechs Positionsbits, die von dem POS-MUX 108 entweder von der den Prozessorbefehl begleitenden und an die Eingangsanschlüsse P&sub5;-P&sub0; des Prozessors 24 angelegten Positionsinformation oder dem Positionsabschnitt 112b des Statusregisters 112, abhängig von dem Positionsursprung, der von den Befehlsbits INST&sub7;&submin;&sub8; gemäß obiger Tabelle VI gewählt wird, wie an den POS-MUX 108 über Signalleitungen 104 angelegt, gewählt werden. In Verbindung mit einem Freigabemaskenverschiebungs- (EN_MASK_SH)-Steuersignal, das von dem Befehlsdecoder 100 auf das Anlegen eines Verschiebeprozessorbefehlsoperationscodes mit oder ohne Vorzeichen hin erzeugt und an die Eingänge eines Satzes von UND-Gattern 480, 481, 482, 483 und 484 über den Steuerbus 102 geleitet wird, und den Positionssignalen POS&sub4;-POS&sub0;, die als ein Fünf-Bit-Ganzzahliges ohne Vorzeichen im Bereich von 0 bis 31 interpretiert werden, von denen die drei Signale POS&sub4;, POS&sub3; und POS&sub2; hoher Ordnung zu den Gattern 484, 483 bzw. 482 geleitet werden und die zwei Signale POS&sub1; und POS&sub0; niedriger Ordnung zu den Gattern 481 bzw. 480 geleitet werden. Ein Drei-zu-Acht-Decoder 486 empfängt die Ausgänge der Gatter 484, 483 und 482 und erzeugt ein Signal auf die Leitungen 490, das zu dem Schieberegister 474 geleitet wird und eine Teil-Aufwärtsverschiebung erzeugt, und zwar von einer Größe, die den drei Positionsbits hoher Ordnung der Maskensignalbits MB&sub3;&sub1;-MB&sub0;, die von den Maskenbyteerzeugungsschaltungen 400, 401, 402 und 403 an die Maskenverschiebeeinrichtung 408 angelegt werden, entspricht. Von dem Schieberegister 474 werden während Aufwärtsverschiebungen intern Fill-Bits von NULL oder EINS erzeugt, um eine Rotation der Maske zu bewirken.
  • Die Ausgänge des Schieberegisters 474 mit zweiunddreißig Stufen werden über PROM 472 an die zweiunddreißig Stufen des Schieberegisters 476 in einem n-von-acht-Code angelegt, wobei die von dem Prozessorbefehl verlangte letzte Aufwärtsverschiebung auf die über die über die UND-Gatter 480 und 481 und einen Zwei-zu-Vier- Decoder 488 empfangene und von dort auf den Signalleitungen 492 geleitete und an das Schieberegister 476 angelegte Positionsinformation niedriger Ordnung hin ausgeführt wird.
  • Wiederum werden von der Schaltung 476 NULL- oder EINS-Fill-Bits geliefert. Jeder Modul der Schaltung 446 erzeugt ein maskenverschobenes Bit Mi, 0≤i≤31, auf den Satz aus zweiunddreißig Signalleitungen 128 (Fig. 2), das an den M-Operandeneingang der ALU 130 (Fig. 2) angelegt wird.
  • Unter Verwendung der Bytebreiten- oder Bitpositions- und -breiteninformation, die den Prozessorbefehl begleitet oder in dem Statusregister 112 gespeichert ist, kann die ALU 130 Operationen an nur denjenigen Bitpositionen der R- und S-Operanden durchführen, die den Positionen entsprechen, in denen der M-Operand eine NULL ist. Die Positionen entweder des R-Operanden bei Zwei- Operand-Befehlen oder des S-Operanden bei Drei-Operand-Befehlen, die einer EINS in dem M-Operand entsprechen, passieren unbeeinträchtigt zu den F-Ausgängen der ALU 130, wie im folgenden unter Bezugnahme auf Fig. 12 beschrieben wird.
  • In Fig. 12, bei der der Fall eines typischen Zwei-Operand-Befehls dargestellt ist, empfängt die ALU 130 von Fig. 2 als Eingänge die R- und S-Operanden auf den Signalleitungen 127 bzw. 148 und die Maske, wie sie von der Maskenerzeugungs-/-aufwärtsschiebeeinrichtung erzeugt und aufwärts verschoben worden ist, an ihrem M-Operandeneingang auf den Signalleitungen 128. Jeder R-, S- und M-Eingang ist ein 32-Bit-Wort, an dem die ALU eine Operation lediglich an den Bitpositionen des R- und S-Operanden durchzuführen hat, die von der Bytebreite im Falle von Bytegrenzen-Ausrichtungsoperand-Befehlen "gewählt" werden oder von der Bitmaske im Falle von Befehlen mit längenvariablem Bitfeldoperanden, und das Ergebnis in den entsprechenden Bitpositionen auf den 32-Bit-F-Bus an den Ausgang der ALU 130 anlegt.
  • Die an die ALU 130 auf den Signalleitungen 128 angelegte Maske wird einem 2 : 1-Multiplexer (MuX) 494 wie das Ergebnis der ALU- Operation, die in einem ALU-Operationsblock 496 an allen 32 Bits der diesem über Signalleitungen 127 bzw. 148 zugeführten R- und S-Operanden durchgeführt wird, zugeführt. Jedes Maskenbit veranlaßt den 2 : 1-MUX 494, zwischen der entsprechenden Bitposition der zwei Ursprungsorte zu wählen, nämlich dem Ergebnis der ALU- Operation oder dem S-Operanden, abhängig davon, ob das Maskenbit eine NULL oder eine EINS ist.
  • Die auf den Signalleitungen 127 und 148 gebildeten Signale werden den R- und S-Operandeneingängen der ALU 130 zugeführt, wie durchs den in der Ausführung begriffenen bestimmten Prozessorbefehl geleitet, und zur Durchführung der arithmetischen und/oder logischen Operationen verwendet, die von den decodierten Steuersignalen geleitet werden, die der ALU 130 von dem Steuerabschnitt des Busses 102 zugeführt werden. Der Teil der ALU 130, der diese Operationen durchführt, der ALU-Operationsblock 496 von Fig. 12, ist in Fig. 13 detaillierter dargestellt.
  • Wie in Fig. 13 dargestellt, weist der ALU-Operationsblock 496 (Fig. 12) einen Satz aus sechzehn Normal-Logik-Zellen (NLC) 500a-500p, einem Satz aus vier Bytegrenzen-Logikzellen (BLC) 502a-d, einer Bewegungslogikzelle 504 und einer Look-ahead-Logikschaltung 506 auf. (Der in Fig. 12 als Äußeres in bezug auf den ALU-Operationsblock 496 dargestellte 2 : 1-MUX 494 ist in jeder der NLC 500a-500p angeordnet). Jede der NLC 500a-500p sind identisch und bilden eine Zwei-Bit-Slice-Arithmetik-Logik-Schaltung, wie in bezug auf Fig. 14 im folgenden ausführlicher beschrieben wird. Jede der BLC 502a-502d sind gleichermaßen identisch und bilden eine Ein-Bit-Slice-Arithmetik-Logik-Schaltung wie in bezug auf Fig. 15 im folgenden ausführlicher beschrieben wird.
  • Der modifizierte Booth-Algorithmus, der oben in Verbindung mit den Bytegrenzen-Ausrichtungsoperand-Multiplikationsschrittbefehlen der Gruppe 7, Tabelle XIII, beschrieben worden ist, erfordert (n+2) Genauigkeitsbits zur Durchführung einer (n·n) Bitmultiplikation. Da der Prozessor 24 gemäß der vorliegenden Erfindung Daten einer Breite von ein, zwei drei oder vier Byte, d. h. von 8, 16, 24 oder 32 Bits aufnehmen kann, müssen die beiden zusätzlichen oder Genauigkeitsbits an das höchstwertige Byte der Daten angehangen werden, um den Algorithmus zu implementieren. Dies erfordert die Zwei-Bit-"Bewegungs"-Logikzelle (MLC) 504, die, wie in Fig. 13 gezeigt, mit jeder der vier BLC 502a-502d über Signalleitungen 508 verbunden ist, wodurch der BLC 502a- 502d die höchstwertigen Produktbits zugeführt werden, die bei jedem Multiplikationsschritt des modifizierten Booth-Algorithmus um zwei Bits abwärts verschoben werden. (Vergleiche die in bezug auf Tabelle XIII A, oben, beschriebenen UMULFIRST-, UMULSTEP-, SMULFIRST- und SMULSTEP-Befehle).
  • An einem Paar Eingängen empfängt der MLC 504 die Vorzeichenbits der gewählten Bytes der R- und S-Operanden über Signalleitungen 510 und 512, wie von den vier Bytegrenzen-Vorzeichenbits von einem Paar Multiplexer (MUX) 514 und 516 gemäß der Bytebreiteninformation, die den Multiplikationsbefehl begleitet, gewählt oder wie in dem Breitenbereich des Statusregisters gespeichert und den MUXs 514 und 516 auf den Signalleitungen 518 (116 in Fig. 2) zugeführt. Jeder BLC 502a-502d weist einen Multiplexer zum Wählen entweder des Zwei-Bit-Ausgangs der Bewegungs-Zelle oder ihres eigenen intern erzeugten Zwei-Bit-Ausgangs auf, und zwar abhängig von dieser Bytebreiteninformation, wie im folgenden beschrieben.
  • Jeder NLC 500a-500p weist R-, S- und M-Operandeneingänge zum Empfang der entsprechenden Zwei-Bits der 32-Bit-ALU-Eingänge auf den Signalleitungen 127, 148 und 128 von der 64-Bit-Verschiebeeinrichtung 126, dem S-MUX 146 bzw. der Maskenerzeugungs-/verschiebeeinrichtung 118 auf. Ferner weist jede NLC 500a-5O0p einen Steuereingang (CB) auf, der die auf dem Steuerbus 102 übertragenen Steuersignale empfängt. Schließlich empfängt jede NLC 500a-500p auch als Eingang ein CN-Signal, das von der Lookahead-Schaltung 506 erzeugt und auf den Signalleitungen 520 übertragen wird.
  • Der ALU-Operationsblock 496 weist einen internen Signalbus 524 auf, der alle NLC 500a-500p und die BLC502a-502d sowie die Lookahead-Logikschaltung 506 miteinander verbindet.
  • Jede NLC 500a-500p erzeugt an einem Paar Ausgängen Fn, Fn+1 ein entsprechendes Zwei-Bit-Paar der 32-Bit-Ausgänge F&sub0;-F&sub3;&sub1;, die das Ergebnis der Operation repräsentieren, die durch den Prozessorbefehl verlangt wird, der an das/die gewählte(n) Byte(s) oder Bit(s) des R- und S-Operanden, die an den ALU-Operationsblock 496 über Signalleitungen 127 bzw. 148 entsprechend der von der Maskenerzeugungs/-verschiebeeinrichtung 118 erzeugten und an den ALU-Operationsblock 496 auf den Signalleitungen 128 angelegten Maske M angelegt wird. Die nichtgewählten Byte(s) oder Bit(s) werden entweder von dem R- oder S-Operanden entsprechend dem in den obigen Tabellen VII bis XVII beschriebenen Befehl zu den entsprechenden Ausgängen F&sub0;-F&sub3;&sub1; geleitet.
  • Jede NLC 500a-500p erzeugt ein Paar Ausbreitungs- und Erzeugungssignale, die der Look-ahead-Schaltung 506 über 32 einzelne Signalleitungen innerhalb des internen Signalbusses 524 zugeführt werden. Die Erzeugungs- (GENn) und Ausbreitungs-(PROPn)- Signale werden durch jedes Paar der R- und S-Eingänge zu der NLC des n-ten Zustands gemäß den Booleschen Gleichungen bestimmt:
  • GENn = (Rn+1·Sn+1) + (Rn+1 + Sn+1)·Rn·Sn
  • PROPn = (Sn + Rn)·(Sn+1) + Rn+1)
  • Dieses Schema reduziert die Komplexität und den Zeitverbrauch, die üblicherweise in Verbindung mit Parallelübertragslogikschaltungen durch Verarbeitung der Eingangsoperanden, jeweils zwei Bits auf einmal, auftritt, wodurch die Anzahl der Erzeugungs- und Ausbreitungssignale von 32 auf 16 halbiert wird. Somit braucht in der Look-ahead-Logikschaltung 206 nur ein 16-Bit- Parallelübertragsschema verwendet zu werden.
  • Wie unter Bezugnahme auf Fig. 14 im folgenden beschrieben wird, verwenden die einzelnen NLC-Schaltungen einen internen Multiplexer, der ein bedingtes Summenwählschema implementiert, wodurch eine zusätzliche Verbesserung bei der Arbeitsgeschwindigkeit geschaffen wird. Die Look-ahead-Logikschaltung 506 empfängt decodierte Befehlssignale an einem cB-Eingang über einen Steuerbus 102 und während arithmetischer Operationen wird eines von zwei Signalen von der Schaltung 506 empfangen, die entweder einen Ganzzahligen-Parallelübertragsabschnitt der Schaltung 506 (das EN_INT_CARRY-Signal) oder einen binärkodierten Dezimal- (BCD)-Übertragsabschnitt der Schaltung (das EN_BCD_CARRY-Signal) freigibt. Da letzterer Schaltungsabschnitt bekannt ist, wird er nicht im einzelnen beschrieben. Der aktive Zustand des EN_INT_CARRY-Signals gibt die Look-ahead-Logikschaltung 506 frei, um die von den einzelnen NLC 500a-500p auf dem Signalbus 524 aus gegebenen Ausbreitungs- und Erzeugungssignale zu empfangen, zu bestimmen, ob von einer NLC-Stufe ein Übertrag erzeugt wird, der an die nächstfolgende NLC-Stufe anzulegen ist und, wenn dies zutrifft, das geeignete Signal an den CN-Ausgängen zu erzeugen, das über die Signalleitungen 520 bzw. 522 den NLC 500a-500p zugeleitet wird.
  • Jeder BLC 502a-502d empfängt ferner an einem Steuerbus-(CB)- Eingang die über den Steuerbus übertragenen Steuersignale und über die Signalleitungen 520 bzw. 522 die von der Parallelübertragslogikschaltung 506 erzeugten CN- und BYTEN-Signale. Jede BLC 502a-502d kann Bytegrenzeninformation erzeugen; ein Linkout-Signal (LINKOUT), ein Überlaufsignal (OVRn+2) und ein Carryout-Signal (CONTn+2), wie von der Bytebreite der arithmetischen oder logischen Operation erfordert, die von dem ALU-Operationsblock 496 durchgeführt wird.
  • In Fig. 14 ist die Schaltungsanordnung einer repräsentativen der sechzehn Normal-Logik-Zellen (NLC) 500a-500p des ALU-Operationsblocks 496 dargestellt. (Der in Fig. 12 als Äußeres in bezug auf den ALU-Operationsblock 496 dargestellte 2 : 1-MUX 494 ist aus Klarheitsgründen in Fig. 14 nicht dargestellt, wäre jedoch in jeder NLC-Schaltung vorhanden.) Wie dargestellt, sind die n-ten und (n+1)-ten Bits (n = 0, 2, 4, . . ., 30) der R-(Rn, Rn+1) und S- (Sn Rn+1) Operanden jeweils mit den Eingängen eines Satzes von Exklusiv-ODER-(XOR)-Gattern 520 und 532 und mit einer Erzeungungs-/Ausbreitungs-Logikschaltung 534 verbunden. Die n-ten Bits, Rn und Sn, der Operanden sind ebenfalls mit den Eingängen eines UND-Gatters 536 und eines ODER-Gatters 538 verbunden. Die Ausgänge des UND-Gatters 536 und des XOR-Gatters 532 sind mit den Eingängen eines XOR-Gatters 540 verbunden und die Ausgänge des ODER-Gatters 538 und des XOR-Gatters 532 sind mit den Eingängen eines XOR-Gatters 542 verbunden.
  • Die aus den Gattern 530, 432, 536, 538, 540 und 542 bestehende Schaltungsanordnung bildet vier bedingte Summen; eine an dem Ausgang des XOR-Gatters 530 auf einer Signalleitung 544 (SUMQ), eine an dem komplementierten Ausgang des XOR-Gatters 530 auf einer Signalleitung 546 (SUM1n), eine am Ausgang des XOR-Gatters 540 auf einer Signalleitung 548 (SUMOn+1) und eine am Ausgang des XOR-Gatters 542 auf einem Signal; jede bedingte Summe wird unter der Annahme entweder eines NULL- oder eines EINS-Carry-in Cn, wie von der Parallelübertrags-Logikschaltung 506 erzeugt und der NLC über eine des Satzes von Signalleitungen 520 zu der dargestellten NLC übertragen, gebildet. Das Signal Cn wird den Wähleingängen eines Satzes von drei Multiplexern 552, 554 und 556 zugeführt, wo das Signal von den MUX 552 und 554 verwendet wird, um entweder das Signal auf Leitung 544 oder das Signal auf Leitung 546 zu den Ausgängen des MUX 552 und 554 weiterzuleiten, und von dem MUX 556 verwendet wird, um entweder das Signal auf Leitung 548 oder 550 zu dem Ausgang des MUX 556 weiterzuleiten. Unter normalen Bedingungen ist der Ausgang des MUX 552, wie er durch das Vorhandensein des normalen (NORM) MUX-Freigabesignals, das von dem Decoder 100 erzeugt und über den Steuerbus 102 zu den MUX 552 und 556 übertragen wird, reflektiert wird, der Ausgang Fn der dargestellten NLC und unter normalen Umständen ist der Ausgang des MUX 556 der Ausgang Fn+1 der dargestellten NLC. Somit kann die Operation des Bildens bedingter Summen aus den Operanden Rn, Sn, Rn+1 und Sn+1 in den durch die Gatter 530, 532, 536, 538, 540 und 542 gegründeten Halbaddierern gleichzeitig mit der Operation des Erzeugens des Übertrags durch die Look-ahead-Logikschaltung 506 auftreten, wodurch eine Verbesserung in der Arbeitsgeschwindigkeit der ALU 130, wie oben erwähnt, bewirkt wird.
  • Die in Fig. 14 gezeigten drei übrigen Multiplexer 558, 560 und 562 führen Einfachbit-Aufwärtswärtsverschiebungen der gebildeten Summen sowie Zwei-Bit-Abwärtsverschiebungen der gebildeten Summen durch, wie durch die Divisions-Schritt- bzw. die Multiplikations-Schritt-Prozessorbefehle (in den Tabellen XII und XIII beschrieben) gefordert. Das Übertragssignal aus der vorhergehenden Zelle NLCn-1 (Cn-2) des ALU-Operationsblocks 496 wird über den internen Signalblock 524 zu dem MUX 558 übertragen, wo es von dem MUX 558 zum Weiterleiten jedes der Signale der bedingten Summen SUM1A-1 oder SUM n-1, die von der vorhergehenden Zelle NLCn-1 aus ihren Operanden hoher Ordnung Rn-1 und Sn-1 und auf das von dem Decoder 100 erzeugte und dem MUX 558 und dem MUX 554 bei der Verarbeitung von Divisionsschrittbefehlen zugeführte UP_ONE- Multiplexerfreigabesignal hin verwendet wird. Somit implementiert der MUX 558 die oben erwähnte Einfachbit-Aufwärtsverschiebung, wenn sie sich auf den Fn-Ausgang der dargestellten NLC bezieht. Der früher beschriebene MUX 554 implementiert die Einfachbit-Aufwärtsverschiebung, wenn sie sich auf den Fn+1-Ausgang der dargestellten NLC bezieht.
  • In ähnlicher Weise implementieren die Multiplexer 560 und 562 in Verbindung mit einem von dem Decoder 100 erzeugten DOWN_TWO- Freigabesignal und dem von der folgenden Zelle NLCn+1 erzeugten und über den internen Signalbus 524 dem MUX 560 und dem MUX 562 zugeführten Übertragssignal Cn+2 die oben erwähnten Zwei-Bit- Abwärtsverschiebungen.
  • Die Ausgänge des MUX 552, des MUX 558 und des MUX 560 werden in einer verdrahteten ODER-Konfiguration 564 zur Bildung des NLC- Ausgangs Fn miteinander verbunden. Die Ausgänge des MUX 554, des MUX 556 und des MUX 562 werden in einer verdrahteten ODER-Konfiguration zur Bildung des NLC-Ausgangs Fn+1 miteinander verbunden. Diese Konfiguration gestattet die Einfachbit-Aufwärtsverschiebungen oder Zwei-Bit-Abwärtsverschiebungen ohne zeitlichen Nachteil.
  • Die Erzeugungs-/Ausbreitungs-Logigschaltung 534 erzeugt ein Erzeugungs- (GENn) und ein Ausbreitungs-(PROPn) Signal gemäß den beiden obigen Booleschen Gleichungen als Funktionen der an ihren Eingang angelegten Signale Rn, Rn+1, Sn, Sn+1. Über den internen Signalbus 524 werden die GENn- und PROPn-Signale zu der Parallelübertrags-Logikschaltung 506 übertragen.
  • Es ist ersichtlich, daß die obige Beschreibung einer repräsentativen der NLC, wie in Fig. 14 gezeigt, im Falle von Zellen niedriger und hoher Ordnung in jedem Byte modifiziert werden muß. Diese Modifikationen sind dem Fachmann ersichtlich und werden daher nicht im einzelnen beschrieben.
  • Die Schaltungsanordnung einer repräsentativen der vier Bytegrenzen-Logikzellen (BLC 502a-504d) (Fig. 13) ist in Fig. 15A gezeigt und die Bewegungs-Logikzelle (MLC) 504 (Fig. 13), die an eine beliebige der vier BLC 502a-502d angehängt werden kann, ist in Fig. 15B gezeigt. Wie in Fig. 15A dargestellt, werden die nten Bits des R-(Rn) und S-(Sn)Operanden von der nächstniedrigeren NLC 500d, 500h, 500l oder 500p von der BCC 502a, 502b, 502c bzw. 502d über den internen Bus 524 empfangen. Der in Fig. 15A verwendete Wert "n" und dessen Beschreibung betreffen den Wert n = 6 für Byte 0, n = 14 für Byte 1, n = 22 für Byte 2 und n = 30 für Byte 3. Ebenfalls über den internen Bus 524 von der nächstniedrigeren NLC empfangen werden die bedingten Summensignale SUM1n-1 und SUM n-1, die von der nächstniedrigeren NLC aus ihren R- und S-Operanden hoher Ordnung erzeugt werden, sowie das Übertragssignal Cn-2 das von der nächstniedrigeren NLC erzeugt wird. Ein von der Parallelübertrags-Logikschaltung 506 über die Signalleitungen 522 empfangenes Byte-Übertrags-Signal (BYTE_Cn) wird ebenfalls von der BBC 502a-502d empfangen.
  • Die Rn- und Sn-Signale werden mit den Eingängen eines UND-Gatters 570 verbunden. Der Ausgang des UND-Gatters 570 ist mit dem Eingang eines XOR-Gatters 572 verbunden, der ebenfalls an einem Eingang das Byte-Übertragsn+2(BYTE_Cn+2)-Signal empfängt, das von der parallelübertrags-Logikschaltung 506 erzeugt wird. Das Ausbreitungs-Übertrags-Signal (PROPn) ist mit dem Eingang eines XOR- Gatters 514 verbunden, wie auch das BYTE_C_&sub2;-Signal, und die aus den Gattern 570 und 574 bestehende Schaltungsanordnung erzeugt die bedingte Summe, wie oben im Zusammenhang mit der Beschreibung der NLC 500a-500p beschrieben, und die Ausgänge der XOR- Gatter 572 und 574 sind mit einem Multiplexer (MUX) 576 verbunden, der wählt, welcher dieser Ausgänge an dem OVRn+2-Ausgang der BBC auf das an den MUX 576 angelegte Cn+2-Signal hin, das als Wählsignal verwendet wird, wie oben in Verbindung mit der NLC beschrieben, anzulegen ist.
  • Ein NAND-Gatter 578 empfängt an seinen Eingängen das BYTE_C_- Signal und ein höchstwertiges Byte-Wähl-Signal (MS_BYTE_SEL), das von dem Befehlsdecoder 100 entsprechend der obigen Tabelle I erzeugt wird, sowie die Befehlsbits INST&sub8; und INST&sub7;, die einen Bytegrenzen-Ausrichtungsoperand-Befehl begleiten. Das NAND-Gatter 578 erzeugt das COUTn+2-Signal. Die OVRn+2- und COUTn+2-Signale werden von der höchstwertigen BBC über die Signalleitungen 164a (Fig. 2) zu dem STATUS-MUX 168 und dem Statusregister 112 über den MUX 166 (Fig. 7) geleitet, wo sie auf den 5-Bus 62 (Fig. 1) zur Verwendung durch den Mikroprogrammsequenzierer 12 (Fig. 1) angelegt oder in dem Statusregister 112 gespeichert werden können. Die oben in Verbindung mit Fig. 2 beschriebenen Negativ- und Null-Statussignale, N und Z, werden von nicht dargestellten Eins-Ermittlungs- und Null-Ermittlungsschaltungen in der ALU 130 erzeugt, und zwar auf das Vorhandensein einer EINS an den F&sub3;&sub1;- Ausgängen (der NLC 500p, oder dem Vorhandensein aller NULLen an den Fn- (n=31, . . . 0)Ausgängen der NLC 500a-p hin. Ein Ausklinksignal (Ln+2) wird ebenfalls von dem höchstwertigen BLC von einem Multiplexer (MUX) 580, der ebenfalls von dem Cc-2-Signal gesteuert wird, erzeugt. Der MUX 580 wählt aus den bedingten Summensignalen SUM1n-1 und SUM n-1, die von der vorangehenden Zelle erzeugt werden, aus. Die N-, C- und L-Statussignale werden ebenfalls von der höchstwertigen BLC zu dem Statusregister 112 und dem S-Bus 62 geleitet.
  • Jede BLC 502a-502d weist einen Satz Gatter auf, die ermöglichen, daß die MLC 504 mit der höchstwertigen NLC des höchstwertigen Bytes verbunden werden kann, um den modifizierten Booth-Algorithmus zu implementieren, wie oben in Verbindung mit Fig. 8C beschrieben und für die Bytegrenzen-Ausrichtungsoperand-Multiplizierbefehle verwendet. Der MLC 504 ist mit jeder der BLC 502a-502d über die 4-Leiter-Signalleitungen 508, wie in Fig. 13 gezeigt, verbunden. Wie aus Fig. 15A hervorgeht, leiten die Signalleitungen 508 die vier zusätzlichen bedingten Summenbits MSUM , MSUM 1, MSUM1 , MSUM11, die von der MLC 504 auf die zwei Bits hoher Ordnung der über die MUX 516 und 518 an die MLC 504 angelegten R- und S-Operanden hin erzeugt werden. Die bedingten Bewegungs-Zellen-Summen hoher Ordnung, MSUM1 und MSUM11, werden zu einem Multiplexer (MUX) 582 geleitet, der auf das an den MUX 582 angelegte Signal BYTE_Cn+2 hin, eine dieser bedingten Summen wählte die über den internen Bus 524 der höchstwertigen NLC und dem höchstwertigen Byte, das für die Multiplikation benötigt wird, zuzuführen ist, wo sie mit dem in Fig. 14 gezeigten, dem verdrahteten ODER-Gatter 566 entsprechenden Gatter hoher Ordnung ODER-verdrahtet wird. Als solches ist diese Modifikation der NLC hoher Ordnung in jedem Byte eine der oben erwähnten Modifikationen.
  • In ähnlicher Weise werden die bedingten Bewegungs-Zellen-Summen niedriger Ordnung, MSUM und MSUM 1, zu einem Multiplexer (MUX) 584 geleitet, der, auf das an den MUX 584 angelegte Signal BY- TE_Cn+2 hin, eine der bedingten Summen wählt, die über den internen Bus 524 dem dem in Fig. 14 gezeigten Gatter 564 entsprechenden niederwertigsten verdrahteten ODER-Gatter zuzuführen ist.
  • In Fig. 15B ist die Bewegungs-Logikzelle (MLC) 504 dargestellt, die an das Byte hoher Ordnung angehängt werden kann, das für eine Bytegrenzen-Ausrichtungsmultiplikation über die BLC 502a- 502d, wie oben beschrieben, gewählt wird. Der den Multiplikationsschritt implementierende modifizierte Booth-Algorithmus erfordert zwei zusätzliche Genauigkeits-Bits hoher Ordnung und die MLC 504 liefert diese Bits über 4-Leiter-Signalleitungen 508, wie oben in Verbindung mit der repräsentativen BLC beschrieben.
  • Die gewählten Bits hoher Ordnung der in der Multiplikation verwendeten R- und S-Operanden, die entweder die Operandenvorzeichen oder die Operandenbits hoher Ordnung repräsentieren, abhängig davon, ob eine Multiplikation mit oder ohne Vorzeichen stattzufinden hat, werden über die Signalleitungen 510 bzw. 516 zu der MLC 504 übertragen. Zwei NAND-Gatter 590 und 592 empfangen an ihren Eingängen das gewählte Bit-Signal hoher Ordnung des R-Operanden und ein NAND-Gatter 594 empfängt an seinem Eingang das gewählte Bitsignal hoher Ordnung des S-Operanden. Ein Multiplikationssignal (S MUL) mit Vorzeichen, das von dem Befehlsdecoder 100 erzeugt wird und über den Steuerbus 102 zu der MLC 504 geleitet wird, wird an den Eingang des NAND-Gatters 590 und an einen Eingang eines ODER-Gatters 596 angelegt. Ein von dem Befehlsdecoder 100 erzeugtes Wähl-zwei-A-A-Multiplexer-Signal (SEL_2A_AMUX) wird an einen zweiten Eingang an dem ODER-Gatter 596 angelegt. Ein von dem Befehlsdecoder 100 erzeugtes Signal für den ersten Multiplikationsschritt (MULFIRST) wird an einen zweiten Eingang des NAND-Gatters 594 angelegt. Ein Satz aus drei XOR-Gattern 598, 600 und 602 empfängt an den jeweiligen_ Eingängen die Ausgangssignale von den NAND-Gattern 590, 592 bzw. 594. Das XOR-Gatter 602 empfängt ferner das Ausgangssignal des XOR- Gatters 600 an einem zweiten Eingang. Die Gatter 598 und 600 empfangen an einem zweiten Eingang ein R-Polaritätssignal (R_POL), das von dem Befehlsdecoder 100 erzeugt wird. Der Ausgang des XOR-Gatters 598 ist mit einem Eingang eines XOR-Gatters 604 verbunden, das auch an einem Eingang den Ausgang des NAND- Gatters 594 empfängt.
  • Der Ausgang des XOR-Gatters 604 ist mit den Eingängen eines Paars von XOR-Gattern 606 und 608 und der Ausgang des Ausgangs der Gatter 594 und 600 ist mit den Eingängen eines NAND-Gatters 610 und mit den Eingängen eines ODER-Gatters 612 verbunden. Der Ausgang des UND-Gatters 610 ist mit dem Eingang des XOR-Gatters 601 verbunden und der Ausgang des ODER-Gatters 612 ist mit dem Eingang des XOR-Gatters 606 verbunden.
  • Der Ausgang des XOR-Gatters 606 (des Halbaddierers mit den Gattern 612 und 606) und der Ausgang des XOR-Gatters 608 bilden die höchstwertigen Zusatzbit-Summensignale NSUM11 bzw. NSUM1 . Der Ausgang des XOR 602 und das Komplement dieses Ausgangs bilden die niederwertigsten Zusatzbit-Signale MSUM 1 bzw. MSUM , die über Signalleitungen zu der gewählten NLC hoher Ordnung übertragen werden.
  • Der ALU-Operationsblock 496 ist in der Lage, viele verschiedene logische und arithmetische Verschiebeoperationen durchzuführen, wie sie von den Steuersignalen geleitet werden, die von dem Befehlsdecoder 100 erzeugt und über den Steuerbus 102 übertragen werden. Eine ausführliche Beschreibung der Schaltungsanordnung der ALU 130 und der bei der Ausführung der Verschiebebefehle verwendeten Steuersignale findet sich in der U.S.-Patentanmeldung S.N. 174,490, mit dem Titel "PROCESSOR UNIT FOR MICROCOMPU- TER SYSTEMS", eingereicht am 1. August 1980 und auf die Anmelderin der vorliegenden Anmeldung übertragen.
  • Nunmehr sollte ersichtlich sein, daß der Datenprozessor 24 der vorliegenden Erfindung mit der oben beschriebenen Struktur in der Lage ist, komplexe Bytegrenzen-Ausrichtungsbefehle und Befehle mit längenvariablem Bitfeld in im wesentlichen dem Zeitraum auszuführen, der für alle Befehle benötigt wird. Die übrigen, von dem Prozessor 24 verwendeten und in Fig. 2 dargestellten Logikelemente sind von herkömmlicher Konstruktion und können gemäß obiger Beschreibung von Fig. 2 und den obigen Prozessorbefehlen auf einfache Weise konstruiert werden. Der Prioritätskodierer 176 beispielsweise ist eine kombinatorische Logikschaltung, die ein Ein-, Zwei-, Drei- oder Vier-Byte-Wort akzeptiert und daraus einen 5-Bit-Code erzeugt, der gemäß obiger Tabelle IV in Verbindung mit der Bytebreite, die durch den in der Ausführung begriffenen Priorisierungsprozessorbefehl (Gruppe 4) gewählt wird, die EINS höchster Ordnung anzeigt.
  • Die 64-Bit-Verschiebeeinrichtung 126 an dem R-Operandeneingang zu der ALU 130 ist ebenfalls eine kombinatorische Logikschaltung, die ein Paar von 32-Bit-Datenwörtern akzeptiert und eine n-Bit-Barrel-Verschiebung, aufwärts oder abwärts, jedes Eingangs vornimmt; eine n-Bit-Aufwärts- oder -Abwärtsverschiebung jedes Eingangs oder eine Verkettung der Eingänge, und zwar gemäß obiger Tabelle II, wie durch die Steuersignale, welche der 64-Bit- Verschiebeeinrichtung 126 auf dem Steuerbus 102 zugeführt werden, und die Positionssignale, die der 64-Bit-Verschiebeeinrichtung 126 über Signalleitungen 124 von dem POS-MUX 108 zugeführt werden, bestimmt, wobei der Wert n spezifiziert wird. Der Ausgang der 64-Bit-Verschiebeeinrichtung sind die höchstwertigen 32 Bits des sich ergebenden Bitmusters.
  • Die Q-Verschiebeeinrichtung 172 ist eine herkömmliche kombinatorische Logikschaltung, die ein 32-Bit-Wort akzeptiert und eine logische Verschiebung des Wortbits auf 31 Wortbits vornimmt, wie durch die Verschiebe-Divisions- und Multiplikationsschrittbefehle (Gruppen 3, 6 und 7) gefordert und durch die Steuersignale, die auf dem Steuerbus 102 zu der Q-Verschiebeeinrichtung 172 übertragen werden, bestimmt.
  • Schließlich sind die Paritätsprüfeinrichtung 182 und der Paritätsgenerator 188 einfach kombinatorische Logikschaltungen, die 32-Bit-Datenwörter als Eingang akzeptieren, und zwar im Falle der Paritätsprüfeinrichtung 182 für solche Wörter, und die Eingänge für ein gegebenes Wort in einer Kaskade von XOR-Gattern kombinieren, die, abhängig davon, ob eine ungeradzahlige Anzahl der eingegebenen 32 Bits EINSen sind, eine EINS (bei einer ECL- kompatiblen Version) oder eine NULL (bei einer TTL-kompatiblen Version) erzeugen.

Claims (9)

1. Mikroprozessorsystem, mit einer Datenspeichereinrichtung (30) zum Speichern mehrerer in Mehrfachbit-"Bytes" angeordneten Mehrfachbitdatenwörter; einer Sequenziereinrichtung (12) zum zyklischen Erzeugen von Adressen der Datenwörter in der Datenspeichereinrichtung (30) und zum Erzeugen von Datenprozessor-Mikroprogrammbefehlen aus einem Satz derartiger Befehle; einer mit der Speichereinrichtung (30) verbundenen und auf die Befehlswörter reagierenden Datenprozessorvorrichtung (24) zum Empfang der an den erzeugten Adressen lokalisierten Mehrfachbitdatenwörter und zur Verarbeitung der Mehrfachbitdatenwörter; und einer Decodereinrichtung (100) zum Empfang der Befehlswörter und zur Erzeugung mehrerer Steuersignale (102) für den Datenprozessor aus den Befehlswörtern; wobei die Datenprozessorvorrichtung (24) eine Arithmetik-Logik-Einrichtung (130) aufweist, die mit der Decodereinrichtung (100) verbunden ist und auf eine Anzahl der Decodersteuersignale reagiert, die einen ersten Operandeneingang (R) und einen zweiten Operandeneingang (S) aufweist, die zum Empfang der Mehrfachbitdatenwörter mit der Speichereinrichtung (30) verbunden sind; und wobei jeder dieser Sätze von Mikroprogrammbefehlen ein Befehlswort aufweist, bei dem mehrere Bits in mehreren Feldern angeordnet sind, einschließlich wenigstens eines Operationscodefelds, das den Befehl definiert, und eines Datenspezifizierungsfelds, das denjenigen Teil eines Datenworts definiert, der während der Ausführung dieses Befehls zu verarbeiten ist; gekennzeichnet durch
eine mit der Decodereinrichtung (100) verbundene und auf eine Anzahl der Steuersignale reagierende Maskenerzeugungs- und -verschiebeeinrichtung (118) zum selektiven Erzeugen und selektiven Aufwärtsschieben eines Mehrfachbitworts, um auf diese Weise ein Mehrfachbitmaskenwort zu erzeugen, das einen wählbaren Teil NULL-Bits und einen verbleibenden Teil EINS-Bits aufweist; und wobei die Arithmetik-Logik-Einrichtung (130) einen mit der Maskenerzeugungseinrichtung (118) verbundenen dritten Operandeneingang (M) zum Empfang des Mehrfachbitmaskenworts aufweist und wählbare, durch das Operandencodefeld eines Prozessormikrobefehls spezifizierte arithmetische und/oder logische Operationen, angewendet auf die gewählten Teile der Datenwörter an den ersten und zweiten Operandeneingängen, innerhalb eines einzigen Taktzyklus des Prozessors ausführt, und an einem Ausgang (F) ein Ausgangsmehrfachbitwort erzeugt, das innerhalb des den NULL- Bits des Maskenworts entsprechenden Teils das Ergebnis der arithmetischen und/oder logischen Operationen, angewendet auf die gewählten Teile der Datenwörter an den ersten und zweiten Operandeneingängen, welche diesen Bitpositionen, an denen die Maskenbits Null sind, entsprechen, enthält, und das innerhalb des den EINS-Bits des Maskenworts entsprechenden verbleibenden Teils den den EINS-Bits des Maskenworts entsprechenden Teil des Mehrfachbitdatenworts am entweder ersten oder zweiten Operandeneingang enthält, und zwar abhängig von dem Operationscodefeld des Prozessormikrobefehls.
2. Mikroprozessorsystem nach Anspruch 1, dadurch gekennzeichnet, daß:
a) der Datenprozessor-Mikroprogrammbefehlssatz Bytegrenzen-Ausrichtungsoperand-Befehle mit auf Bytegrenzen ausgerichtetem Operand aufweist, die jeweils in ihrem Datenspezifizierungsfeld mehrere Bits aufweisen, die die Anzahl der niederwertigsten 8 Bitbytes des Datenwortes ("gewählte(s) Byte(s)") eines auf Bytegrenzen ausgerichteten Operanden anzeigen, der während der Ausführung des Bytegrenzen-Ausrichtungsoperand-Befehls zu verarbeiten ist; und daß
b) die Maskenerzeugungseinrichtung (118) auf den Bytegrenzen-Ausrichtungsoperand-Befehl hin das Maskenwort so erzeugt, daß es NULL-Bits innerhalb der niederwertigsten 8-Bit-Bytes aufweist, welche durch den Bytegrenzen-Ausrichtungsoperand-Befehl angezeigt sind, und EINS-Bits innerhalb der verbleibenden höchstwertigen 8-Bit-Bytes aufweist, so daß das Ausgangsmehrfachbitwort innerhalb der "gewählten Bytes" das Ergebnis der Operation, angewendet auf die "gewählten Bytes" der Datenwörter an den ersten und zweiten Operandeneingängen, aufweist und innerhalb dem/der verbleibenden ("nichtgewählten") Byte(s) den höchstwertigen Teil der Datenwörter am entweder ersten oder zweiten Operandeneingang aufweist, und zwar abhängig vom Operationscodefeld des Bytegrenzen-Ausrichtungsoperand-Befehls.
3. Mikroprozessorsystem nach Anspruch 1, dadurch gekennzeichnet, daß:
a) der Datenprozessor-Mikroprogrammbefehlssatz Befehle mit längenvariablem Bitfeldoperand aufweist, die innerhalb des Datenspezifizierungsfelds jeweils einen Breitenteil und einen Positionsteil aufweisen, wobei der Breitenteil mehrere Bits aufweist, die die Anzahl der Bits des während der Ausführung des Befehls mit längenvariablem Bitfeldoperand zu verarbeitenden Datenwortes (die Länge des längenvariablen Operanden) anzeigen, und der Positionsteil mehrere Bits aufweist, die die Bitposition innerhalb des Datenworts des niederwertigsten Bits des längenvariablen Operanden, der während der Ausführung des Befehls mit längenvariablem Bitfeldoperand zu verarbeiten ist, anzeigen; und daß
b) die Maskenerzeugungseinrichtung (118) auf den Befehl mit längenvariablem Bitfeldoperand hin das Maskenwort erzeugt, das über die Länge NULL-Bits aufweist und an der Bitposition beginnt, die von dem Befehl mit längenvariablem Bitfeldoperand angezeigt wird, so daß das Ausgangsmehrfachbit innerhalb der Länge und beginnend mit dieser Bitposition das Ergebnis der Operation in den entsprechenden Bitpositionen der Datenwörter an den ersten und zweiten Operandeneingängen aufweist und
innerhalb der verbleibenden Bitpositionen die entsprechenden Bitpositionen der Datenwörter entweder an dem ersten oder dem zweiten Operandeneingang aufweist, und zwar abhängig von dem Operationscodefeld des Befehls mit längenvariablem Bitfeldoperand.
4. Datenprozessorvorrichtung nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, daß die Maskenerzeugungseinrichtung (118) eine erste Kombinations-Logikeinrichtung (400,401, 402,403) mit kombinatorischer Logik aufweist, die mit der Decodereinrichtung (100) verbunden ist, um auf eine Anzahl von Decodersteuersignalen zur Erzeugung eines Mehrfachbitworts mit einer wählbaren zusammenhängenden Vielzahl von NULL-Bits innerhalb seines niederwertigsten Teils und einer Vielzahl von EINS-Bits innerhalb seines höchstwertigen verbleibenden Teils zu reagieren, wobei die erste Kombinations-Logikeinrichtung ferner eine Einrichtung (404) zum selektiven Schieben des erzeugten Mehrfachbitworts aufweist, wodurch das Mehrfachbitmaskenwort erzeugt wird, wobei das Erzeugen und das Verschieben innerhalb des einzigen Taktzyklus des Prozessors auftritt.
5. Datenprozessorvorrichtung nach Anspruch 1, ferner gekennzeichnet durch eine zweite Zwei-Operanden-Kombinations- Logikeinrichtung (126), die zwischen die Speichereinrichtung (30) und den ersten Operandeneingang (R) der Arithmetik-Logik-Einrichtung (130) geschaltet ist, um an einem ersten und einem zweiten Eingang Mehrfachbitdatenwörter zu empfangen, die an den Adressen lokalisiert sind, die von der Sequenziereinrichtung (12) erzeugt werden, und die mit der Decodereinrichtung (100) verbunden ist, um auf eine Anzahl von Steuersignalen zur selektiven Bildung und Übertragung eines Mehrfachbitworts mit einer kombinatorischen Funktion dieser lokalisierten Mehrfachbitdatenwörter zu dem ersten Operandeneingang (R) der Arithmetik-Logik-Einrichtung (130) zu reagieren, wobei das Bilden und Übertragen innerhalb des einzigen Taktzyklus des Prozessors auftritt.
6. Datenprozessorvorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß das von der zweiten Zwei-Operanden-Kombinations-Logikeinrichtung gebildete und zu dem ersten Operandeneingang (R) der Arithmetik-Logik-Einrichtung übertragene Mehrfachbitwort selektiv ein Mehrfachbitwort sein kann, das aus dem Abwärtsschieben um eine wählbare Anzahl von Bits des lokalisierten Mehrfachbitworts an dem ersten Operandeneingang der zweiten Zwei-Operanden-Kombinations-Logikeinrichtung (126), aus dem Aufwärtsschieben um eine wählbare Anzahl von Bits dieses lokalisierten Mehrfachbitworts an dem ersten Operandeneingang, aus dem Abwärtsschieben um eine wählbare Anzahl von Bits des lokalisierten Mehrfachbitworts an dem zweiten Operandeneingang der zweiten Zwei- Operanden-Kombinations-Logikeinrichtung (126), aus dem Aufwärtsschieben um eine wählbare Anzahl von Bits dieses Mehrfachbitworts an dem zweiten Operandeneingang, aus einer zyklischen Verschiebung um eine wählbare Anzahl von Bits des lokalisierten Mehrfachbitworts an dem ersten Operandeneingang, aus der zyklischen Verschiebung um eine wählbare Anzahl von Bits des lokalisierten Mehrfachbitworts an dem zweiten Operandeneingang gebildet ist, oder das höchstwertige Mehrfachbitwort sein kann, das aus einer zyklischen Verschiebung um eine wählbare Anzahl von Bits eines aus der Verkettung der lokalisierten Mehrfachbitwörter an dem ersten und an dem zweiten Operandeneingang der Zwei-Operanden-Kombinations-Logikeinrichtung gebildeten Worts besteht.
7. Datenprozessorvorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Datenprozessor-Bytegrenzen-Ausrichtungsoperand-Befehle Multiplikationsschritt- und Divisionsschritt-Befehle aufweisen, und gekennzeichnet durch eine zwei-ab-Eins-auf-Multiplexeinrichtung (172), die mit der Arithmetik-Logik-Einrichtung (130) und der Decodereinrichtung (100) verbunden ist, um auf eine Anzahl der Decodersteuersignale zum selektiven Übertragen der Bits des Ausgangsmehrfachbitworts zu dem Ausgang der Arithmetik-Logik- Einrichtung zu reagieren, die aufwärts geschoben wird, auf den Empfang des Operationscode des Multiplikationsschrittbefehls durch die Decodereinrichtung (100) hin um zwei Bitpositionen abwärts geschoben wird, oder die auf den Empfang des Operationscode des Divisionsschrittbefehls durch die Decodereinrichtung (100) hin um eine Bitposition aufwärts geschoben wird, wobei das Verschieben innerhalb des einzigen Zyklus des Prozessortakts auftritt.
8. Datenprozessorvorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß die Arithmetik-Logik-Einrichtung (130) aufweist:
a) mehrere feststehende Kombinations-Logikeinrichtungen (500), die zur Reaktion auf eine Anzahl der Decodersteuersignale jeweils mit der Decodereinrichtung (100) verbunden sind und zum Empfang von zwei benachbarten Bits von Mehrfachbitdatenwörtern an dem ersten und dem zweiten Operandeneingang (R,S) zu der Arithmetik-Logik-Einrichtung (130) und von zwei benachbarten Bits des Mehrfachbitmaskenworts an dem dritten Operandeneingang (M) zu der Arithmetik-Logik-Einrichtung (130) geschaltet sind, um zwei benachbarte Bits des Ausgangs der Arithmetik-Logikeinrichtung und Übertrag-/Ausbreitungs-Signale zu erzeugen; und
b) eine einstellbare Kombinations-Logikeinrichtung (504), die zur Reaktion auf eine Anzahl der Decodersteuersignale mit der Decodereinrichtung (100) verbunden ist, und zum Empfang der höchstwertigen Bits der höchstwertigen gewählten Bytes der Mehrfachbitdatenwörter an dem ersten und dem zweiten Operandeneingang (R,S) zu der Arithmetik-Logikeinrichtung (130) geschaltet ist, wobei die einstellbare Kombinations-Logikeinrichtung (504) selektiv mit der einen der mehreren feststehenden Kombinations-Logikeinrichtungen (500) verbindbar ist, die die gewählten höchstwertigen Bits der Datenwörter empfängt, um zwei zusätzliche höchstwertige Bits des Ausgangs der Arithmetik-Logik-Einrichtung (130) zu erzeugen, der das Ergebnis der Operation, angewendet auf die "gewählten Bytes" der Datenwörter, aufweist, und zwar auf den Empfang des Operationscodefelds und des Datenspezifizierungsfelds des Multiplikationsschrittbefehls durch die Decodereinrichtung (100) hin.
9. Datenprozessorvorrichtung nach Anspruch 8, dadurch gekennzeichnet, daß die Arithmetik-Logik-Einrichtung (130) ferner eine mit jeder der feststehenden Kombinations-Logikeinrichtungen (500) verbundene und auf die davon erzeugten Übertrag/Ausbreitungs-Signale reagierende Zwei-Bit-Carry-Look- Ahead-Einrichtung (506) aufweist, und wobei jede der feststehenden Kombinations-Logikeinrichtungen (500) versehen ist mit einer Einrichtung zur Erzeugung von vier bedingten Ausgangsbits und ferner mit einer Multiplexeinrichtung (552, 554, 556) mit einem ersten Satz von Eingängen, die mit den höchstwertigen bedingten Ausgangsbits der feststehenden Kombinations-Logikeinrichtung der nächsthöheren Ordnung verbunden sind, einem zweiten Satz von Eingängen, die mit den niederwertigsten bedingten Ausgangsbits der feststehenden Kombinations-Logikeinrichtung der nächsthöheren Ordnung verbunden sind, einem dritten Satz von Eingängen, die mit den höchstwertigen bedingten Ausgangsbits der feststehenden Kombinations-Logikeinrichtung verbunden sind, einem vierten Satz von Eingängen, die mit den niederwertigsten bedingten Ausgangsbits der feststehenden Kombinations-Logikeinrichtung verbunden sind, und einem fünften Satz von Eingängen, die mit den höchstwertigen bedingten Ausgangsbits der feststehenden Kombinations-Logikeinrichtung der nächstniedrigeren Ordnung verbunden sind, und auf eine Anzahl der Decodersteuersignale und auf das Übertrag-/Ausbreitungs-Signal reagiert, um selektiv zwei benachbarte Bits des Ausgangs der Arithmetik-Logik-Einheit (130) aus zweien der bedingten Ausgangsbits zu bilden; und daß die Arithmetik-Logik-Einrichtung (130) bewirkt, daß die Multiplexeinrichtungseingänge simultan mit den Steuersignalen erzeugt werden, worauf hin die Multiplexeinrichtung zwei benachbarte Ausgangsbits erzeugt und die Verschiebung auf den Empfang des Multiplikationsschrittbefehls durch die Decodereinrichtung (100) hin innerhalb des einzigen Zyklus des Prozessortakts auftritt.
DE3587833T 1984-07-09 1985-07-08 Arithmetische und logische Einheit mit erweiterter Funktion. Expired - Fee Related DE3587833T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/628,921 US4785393A (en) 1984-07-09 1984-07-09 32-Bit extended function arithmetic-logic unit on a single chip

Publications (2)

Publication Number Publication Date
DE3587833D1 DE3587833D1 (de) 1994-07-07
DE3587833T2 true DE3587833T2 (de) 1994-12-08

Family

ID=24520862

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3587833T Expired - Fee Related DE3587833T2 (de) 1984-07-09 1985-07-08 Arithmetische und logische Einheit mit erweiterter Funktion.

Country Status (5)

Country Link
US (1) US4785393A (de)
EP (1) EP0171190B1 (de)
JP (1) JPS6188338A (de)
AT (1) ATE106580T1 (de)
DE (1) DE3587833T2 (de)

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0333235A3 (de) * 1984-10-01 1989-11-23 Unisys Corporation Programmierbare Datenpfadbreite in einer programmierten Einheit mit mehreren Niveaus von Unterbefehlssätzen
EP0305752B1 (de) * 1984-10-01 1993-05-05 Unisys Corporation Programmierbare Datenpfadbreite in einer programmierbaren Einheit mit mehreren Niveaus von Unterbefehlssätzen
US5109524A (en) * 1985-07-02 1992-04-28 Vlsi Technology, Inc. Digital processor with a four part data register for storing data before and after data conversion and data calculations
JPH07113884B2 (ja) * 1985-12-28 1995-12-06 株式会社東芝 論理回路
US4868740A (en) * 1986-06-04 1989-09-19 Hitachi, Ltd. System for processing data with multiple virtual address and data word lengths
ATE67326T1 (de) * 1986-07-02 1991-09-15 Unisys Corp Programmgesteuerte, teilweise verteilte maskenvorrichtung in einer programmierbaren einheit mit variablen datenwegbreiten.
US5210835A (en) * 1986-08-27 1993-05-11 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions
US5119484A (en) * 1987-02-24 1992-06-02 Digital Equipment Corporation Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction
US4949240A (en) * 1987-03-13 1990-08-14 Kabushiki Kaisha Toshiba Data storage system having circuitry for dividing received data into sequential wards each stored in storage region identified by chain data
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
US5206940A (en) * 1987-06-05 1993-04-27 Mitsubishi Denki Kabushiki Kaisha Address control and generating system for digital signal-processor
US5237667A (en) * 1987-06-05 1993-08-17 Mitsubishi Denki Kabushiki Kaisha Digital signal processor system having host processor for writing instructions into internal processor memory
EP0551932B1 (de) * 1987-06-05 1998-07-15 Mitsubishi Denki Kabushiki Kaisha Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet
JPH0746310B2 (ja) * 1987-06-30 1995-05-17 三菱電機株式会社 半導体論理回路
US4888722A (en) * 1987-07-02 1989-12-19 General Datacomm, Inc. Parallel arithmetic-logic unit for as an element of digital signal processor
US4926355A (en) * 1987-07-02 1990-05-15 General Datacomm, Inc. Digital signal processor architecture with an ALU and a serial processing section operating in parallel
JPS6476220A (en) * 1987-09-17 1989-03-22 Ibm Bit mask generation circuit
JPH01230125A (ja) * 1988-03-10 1989-09-13 Nec Corp レジスタの部分的更新機能を持つデータ処理装置
US4945509A (en) * 1988-03-14 1990-07-31 International Business Machines Corporation Dual look ahead mask generator
US5045992A (en) * 1988-10-19 1991-09-03 Hewlett-Packard Company Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type
US4890253A (en) * 1988-12-28 1989-12-26 International Business Machines Corporation Predetermination of result conditions of decimal operations
US5249273A (en) * 1989-01-17 1993-09-28 Fujitsu Limited Microprocessor having a variable length instruction format
US5130797A (en) * 1989-02-27 1992-07-14 Mitsubishi Denki Kabushiki Kaisha Digital signal processing system for parallel processing of subsampled data
US5047973A (en) * 1989-04-26 1991-09-10 Texas Instruments Incorporated High speed numerical processor for performing a plurality of numeric functions
JP2567134B2 (ja) * 1989-07-13 1996-12-25 富士通株式会社 ビットフィールド論理演算処理装置およびそれを具備するモノリシックマイクロプロセッサ
US5339447A (en) * 1989-11-17 1994-08-16 Texas Instruments Incorporated Ones counting circuit, utilizing a matrix of interconnected half-adders, for counting the number of ones in a binary string of image data
US5327571A (en) * 1990-04-03 1994-07-05 Advanced Micro Devices, Inc. Processor having decoder for decoding unmodified instruction set for addressing register to read or write in parallel or serially shift in from left or right
SE9002558D0 (sv) * 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
JPH0831032B2 (ja) * 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
JP2504312B2 (ja) * 1990-08-29 1996-06-05 三菱電機株式会社 プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
DE69227604T2 (de) * 1991-03-11 1999-06-24 Silicon Graphics Inc Mountain Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
JPH04302522A (ja) * 1991-03-29 1992-10-26 Hitachi Ltd 演算回路及びこれを用いた適応フィルタ並びにエコーキャンセラ
US5341500A (en) * 1991-04-02 1994-08-23 Motorola, Inc. Data processor with combined static and dynamic masking of operand for breakpoint operation
US5301345A (en) * 1991-05-03 1994-04-05 Motorola, Inc. Data processing system for performing a shifting operation and a constant generation operation and method therefor
KR100262438B1 (ko) * 1991-05-08 2000-08-01 가나이 쓰도무 연산장치 및 이것을 사용한 비트필드조작 연산방법
US5227989A (en) * 1991-09-27 1993-07-13 Chips And Technologies, Inc. Arithmetic logic unit for microprocessor with sign bit extend
US5327364A (en) * 1991-09-27 1994-07-05 Chips And Technologies Inc. Arithmetic logic unit for microprocessor with sign bit extended
DE69229324T2 (de) * 1991-10-29 2000-02-24 Advanced Micro Devices Inc Arithmetik-Logik-Einheit
US5822557A (en) * 1991-12-27 1998-10-13 Fujitsu Limited Pipelined data processing device having improved hardware control over an arithmetic operations unit
US5317531A (en) * 1992-04-02 1994-05-31 Intel Corporation Apparatus for reducing the size of an arithmetic and logic unit necessary to practice non-restore division
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
EP0593073A1 (de) * 1992-10-16 1994-04-20 Matsushita Electric Industrial Co., Ltd. Prozessor mit Schieberegistern
US5606677A (en) * 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US5651121A (en) * 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
US5752073A (en) * 1993-01-06 1998-05-12 Cagent Technologies, Inc. Digital signal processor architecture
AU3437293A (en) * 1993-01-06 1994-08-15 3Do Company, The Digital signal processor architecture
US5493524A (en) * 1993-11-30 1996-02-20 Texas Instruments Incorporated Three input arithmetic logic unit employing carry propagate logic
US5485411A (en) * 1993-11-30 1996-01-16 Texas Instruments Incorporated Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs
US6016538A (en) * 1993-11-30 2000-01-18 Texas Instruments Incorporated Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US5590350A (en) * 1993-11-30 1996-12-31 Texas Instruments Incorporated Three input arithmetic logic unit with mask generator
US6098163A (en) * 1993-11-30 2000-08-01 Texas Instruments Incorporated Three input arithmetic logic unit with shifter
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5974539A (en) * 1993-11-30 1999-10-26 Texas Instruments Incorporated Three input arithmetic logic unit with shifter and mask generator
US5465224A (en) * 1993-11-30 1995-11-07 Texas Instruments Incorporated Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs
US5640578A (en) * 1993-11-30 1997-06-17 Texas Instruments Incorporated Arithmetic logic unit having plural independent sections and register storing resultant indicator bit from every section
US5961635A (en) * 1993-11-30 1999-10-05 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator and mask generator
US6219688B1 (en) * 1993-11-30 2001-04-17 Texas Instruments Incorporated Method, apparatus and system for sum of plural absolute differences
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US6173305B1 (en) * 1993-11-30 2001-01-09 Texas Instruments Incorporated Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5522087A (en) * 1994-03-22 1996-05-28 Verifone Inc. System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up
GB2294138B (en) * 1994-09-23 1997-01-15 Cambridge Consultants Processor core embedded in an integrated circuit, simulator and emulator for the processor
GB9419246D0 (en) * 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5796643A (en) * 1996-01-02 1998-08-18 Allen-Bradley Company, Llc Logical operator based digital filter
US5964825A (en) * 1996-02-09 1999-10-12 Texas Instruments Incorporated Manipulation of boolean values and conditional operation in a microprocessor
US6070237A (en) * 1996-03-04 2000-05-30 Intel Corporation Method for performing population counts on packed data types
US20030195846A1 (en) 1996-06-05 2003-10-16 David Felger Method of billing a purchase made over a computer network
US7555458B1 (en) 1996-06-05 2009-06-30 Fraud Control System.Com Corporation Method of billing a purchase made over a computer network
US8229844B2 (en) 1996-06-05 2012-07-24 Fraud Control Systems.Com Corporation Method of billing a purchase made over a computer network
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
US5922066A (en) * 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US6061755A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Method of layering cache and architectural specific functions to promote operation symmetry
US5978871A (en) * 1997-04-14 1999-11-02 International Business Machines Corporation Method of layering cache and architectural specific functions for operation splitting
US5930158A (en) * 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
EP1019794B1 (de) * 1997-10-02 2008-08-20 Koninklijke Philips Electronics N.V. Datenverarbeitungsgerät zur verarbeitung von befehlen eines virtuellen maschinensystems
FR2770661B1 (fr) * 1997-11-03 2001-08-10 Inside Technologies Microprocesseur comprenant des moyens de concatenation de bits
US6557020B1 (en) * 1997-12-10 2003-04-29 Seiko Epson Corporation Information processing system, enciphering/deciphering system, system LSI, and electronic apparatus
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
ATE557343T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
US6378060B1 (en) 1998-08-24 2002-04-23 Microunity Systems Engineering, Inc. System to implement a cross-bar switch of a broadband processor
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP4933693B2 (ja) * 1998-08-24 2012-05-16 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
US6334179B1 (en) * 1998-09-23 2001-12-25 Masaana Research Limited DSP coprocessor having control flags mapped to a dual port section of memory for communicating with the host
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
EP1230591B1 (de) 1999-11-18 2007-01-03 Sun Microsystems, Inc. Bit-dekompression-verarbeitung mit einem viekseitigen ausrichten-werkzeug
DE60133855D1 (de) 2000-06-20 2008-06-19 Nxp Bv Datenverarbeitungsgerät
AU2001269394A1 (en) * 2000-07-28 2002-02-13 Delvalley Limited A method of processing data
GB2367650B (en) 2000-10-04 2004-10-27 Advanced Risc Mach Ltd Single instruction multiple data processing
US7039060B2 (en) * 2001-03-07 2006-05-02 Mips Tech Inc System and method for extracting fields from packets having fields spread over more than one register
US6954865B2 (en) * 2002-06-18 2005-10-11 Sun Microsystems, Inc. Reduced verification complexity and power saving features in a pipelined integrated circuit
US7200790B2 (en) * 2003-07-08 2007-04-03 Sun Microsystems, Inc. Switch level reliable transmission
ITRM20030354A1 (it) 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
JP4478050B2 (ja) * 2005-03-18 2010-06-09 株式会社リコー Simd型マイクロプロセッサ及びデータ処理方法
US7610472B2 (en) * 2005-06-05 2009-10-27 Apple Inc. Performing variable and/or bitwise shift operation for a shift instruction that does not provide a variable or bitwise shift option
KR100967136B1 (ko) * 2006-02-01 2010-07-05 후지쯔 가부시끼가이샤 패리티 생성 회로, 패리티 생성 회로용 구성 회로, 정보처리 장치, 및 인코더
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US20090182982A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Rotate Then Insert Selected Bits Facility and Instructions Therefore
JP5261738B2 (ja) * 2009-01-15 2013-08-14 国立大学法人広島大学 半導体装置
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
TWM393112U (en) * 2010-06-02 2010-11-21 Sentelic Corp digital signal processor
US9021000B2 (en) 2012-06-29 2015-04-28 International Business Machines Corporation High speed and low power circuit structure for barrel shifter
US9207942B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses,and methods for zeroing of bits in a data element
US10379932B2 (en) 2013-04-29 2019-08-13 Moogsoft, Inc. System for decomposing events from managed infrastructures
US10700920B2 (en) 2013-04-29 2020-06-30 Moogsoft, Inc. System and methods for decomposing events from managed infrastructures that includes a floating point unit
US10803133B2 (en) 2013-04-29 2020-10-13 Moogsoft Inc. System for decomposing events from managed infrastructures that includes a reference tool signalizer
US11080116B2 (en) 2013-04-29 2021-08-03 Moogsoft Inc. Methods for decomposing events from managed infrastructures
US10007716B2 (en) 2014-04-28 2018-06-26 Moogsoft, Inc. System for decomposing clustering events from managed infrastructures coupled to a data extraction device
US11010220B2 (en) 2013-04-29 2021-05-18 Moogsoft, Inc. System and methods for decomposing events from managed infrastructures that includes a feedback signalizer functor
US9529890B2 (en) 2013-04-29 2016-12-27 Moogsoft, Inc. System for decomposing events from managed infrastructures using a topology proximity engine, graph topologies, and k-means clustering
US10574551B2 (en) 2013-04-29 2020-02-25 Moogsoft, Inc. System for decomposing events from managed infrastructures
US10013476B2 (en) 2014-04-28 2018-07-03 Moogsoft, Inc. System for decomposing clustering events from managed infrastructures
US10243779B2 (en) 2013-04-29 2019-03-26 Moogsoft, Inc. System for decomposing events from managed infrastructures with situation room
US9292298B2 (en) 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
WO2015168071A1 (en) 2014-04-28 2015-11-05 Moogsoft, Inc. Alert dashboard system and method from event clustering
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US11924018B2 (en) 2015-01-27 2024-03-05 Dell Products L.P. System for decomposing events and unstructured data
US10425291B2 (en) 2015-01-27 2019-09-24 Moogsoft Inc. System for decomposing events from managed infrastructures with prediction of a networks topology
US10979304B2 (en) 2015-01-27 2021-04-13 Moogsoft Inc. Agent technology system with monitoring policy
US11817993B2 (en) 2015-01-27 2023-11-14 Dell Products L.P. System for decomposing events and unstructured data
US10873508B2 (en) 2015-01-27 2020-12-22 Moogsoft Inc. Modularity and similarity graphics system with monitoring policy
US9501353B2 (en) * 2015-01-28 2016-11-22 Quantum Corporation Erasure code prioritization
US9607682B1 (en) 2016-03-28 2017-03-28 Amazon Technologies, Inc. Address decoding circuit
US11210761B1 (en) 2020-12-22 2021-12-28 Apple Inc. Circuitry to determine set of priority candidates

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3751650A (en) * 1971-06-28 1973-08-07 Burroughs Corp Variable length arithmetic unit
US4378589A (en) * 1976-12-27 1983-03-29 International Business Machines Corporation Undirectional looped bus microcomputer architecture
US4360891A (en) * 1980-04-14 1982-11-23 Sperry Corporation Address and data interface unit
US4412283A (en) * 1980-05-30 1983-10-25 Fairchild Camera & Instrument Corp. High performance microprocessor system
EP0044450B1 (de) * 1980-07-10 1985-11-13 International Computers Limited Digitale Addierschaltung
US4467444A (en) * 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
US4592005A (en) * 1982-07-06 1986-05-27 Sperry Corporation Masked arithmetic logic unit

Also Published As

Publication number Publication date
EP0171190A2 (de) 1986-02-12
EP0171190A3 (en) 1989-11-23
DE3587833D1 (de) 1994-07-07
ATE106580T1 (de) 1994-06-15
EP0171190B1 (de) 1994-06-01
US4785393A (en) 1988-11-15
JPS6188338A (ja) 1986-05-06

Similar Documents

Publication Publication Date Title
DE3587833T2 (de) Arithmetische und logische Einheit mit erweiterter Funktion.
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE2900324C2 (de)
US4467444A (en) Processor unit for microcomputer systems
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
KR910004308B1 (ko) 조합 프로세서
KR970002391B1 (ko) 데이타 처리장치
KR940008613B1 (ko) 캐리선견가산기와 캐리전송방법
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
US20090019269A1 (en) Methods and Apparatus for a Bit Rake Instruction
EP0368826A2 (de) Datenverarbeitungsschaltung
US4037213A (en) Data processor using a four section instruction format for control of multi-operation functions by a single instruction
GB1129660A (en) Data processors
JPH05134848A (ja) 中央処理装置のデータシフト回路
US4172288A (en) Binary or BCD adder with precorrected result
KR0142334B1 (ko) 확장된 비트 슬라이스 프로세서 산술논리 연산 유니트
US4805131A (en) BCD adder circuit
DE69629646T2 (de) Verfahren zur durchführung einer "rotate through carry" operatiion
DE2830334C2 (de)
EP0068109B1 (de) Verarbeitungschips einer arithmetischen und logischen Einheit
DE3314035C2 (de)
DE2837901A1 (de) Tabellengetriebene entscheidungs- und steuerlogik fuer digitalrechner
US4754424A (en) Information processing unit having data generating means for generating immediate data
US3728689A (en) Program branching and register addressing procedures and apparatus

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee