[go: up one dir, main page]

DE69327030T2 - Schaltung zur Verzweigungsentscheidung eines Prozessors - Google Patents

Schaltung zur Verzweigungsentscheidung eines Prozessors

Info

Publication number
DE69327030T2
DE69327030T2 DE69327030T DE69327030T DE69327030T2 DE 69327030 T2 DE69327030 T2 DE 69327030T2 DE 69327030 T DE69327030 T DE 69327030T DE 69327030 T DE69327030 T DE 69327030T DE 69327030 T2 DE69327030 T2 DE 69327030T2
Authority
DE
Germany
Prior art keywords
alu
candidate
branch decision
circuit
signal
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
DE69327030T
Other languages
English (en)
Other versions
DE69327030D1 (de
Inventor
Patrick W. Bosshart
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE69327030D1 publication Critical patent/DE69327030D1/de
Publication of DE69327030T2 publication Critical patent/DE69327030T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/507Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

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

Description

    GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich allgemein auf Mikroprozessor- Verzweigungsentscheidungsschaltungen.
  • HINTERGRUND DER ERFINDUNG
  • Ohne daß dadurch der Schutzbereich der Erfindung begrenzt werden soll, wird der Hintergrund der Erfindung anhand der RISC (Computer mit eingeschränktem Befehlssatz)-Architektur "SPARC" beispielhaft erläutert.
  • Bis jetzt basierten auf diesem Gebiet Verzweigungsentscheidungen auf ALU-Ausgangsstatussignalen oder Zustandscodes ALU=0, ALU-Überlauf, ALU-Ausgabe-Negativ und ALU-Übertragsausgabe. Bei typischen zum Stand der Technik gehörenden Architekturen erzeugt die ALU diese Statussignale ungefähr zur gleichen Zeit, zu der sie ihre Summenausgabe erzeugt. Bei in starkem Maße optimierten zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltungen wird das Verzweigungsentscheidungssignal oder das "Jump-Taken-Signal" innerhalb von 5 oder 6 Gatterlaufzeiten, gerechnet von der Verfügbarkeit dieser Statussignale, erzeugt. Eine weitere Verzögerung bei zum Stand der Technik gehörenden "SPARC"-Verzweigungsentscheidungsschaltungen wird durch die Berechnung des ALU-Überlauf-Statussignals eingebracht, das eine logische ODER-Verknüpfung zwischen dem arithmetischen Überlauf und dem markierten (tagged) Überlauf ist (ein spezielles Merkmal der "SPARC"-Architektur). Diese logische ODER-Verknüpfung fügt eine zusätzliche Gatterlaufzeit hinzu. Eine weitere Verzögerung wird bei zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltungen durch die der "SPARC"-Architektur eigene Definition der Polarität der ALU- Übertragsausgabe eingebracht. Die "SPARC"-Architekturen definieren die Polarität des Übertragsausgabesignals in umgekehrter Form bei Subtraktionsoperationen relativ zur Polarität von Ad ditionsoperationen. Diese Notwendigkeit erfordert eine logische Invertierung beim Testen auf den Zustand der ALU-Übertragsausgabe einer Subtraktionsoperation. Diese logische Invertierung fügt eine weitere Gatterlaufzeit hinzu.
  • Eine weitere Quelle von Verzögerungen bei zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltungen, die gemäß der "SPARC"-Architektur entworfen wurden, stammt von der Tatsache, daß ein Zustandscode verwendet wird, der durch ALU-Operationen eingestellt wird und während nachfolgender Verzweigungsbefehle verwendet wird. Bei typischen parallel arbeitenden (Pipeline)- Implementierungen erzeugt die ALU dann, wenn ein einer Verzweigungsentscheidung vorhergehender Befehl den Zustandscode modifiziert, den Zustandscode in dem gleichen Taktzyklus, in dem die nachfolgende Verzweigungsentscheidung getroffen wird. Wenn der Zustandscode jedoch durch einen Befehl eingestellt wird, der nicht unmittelbar der Verzweigungsentscheidung vorhergeht, dann muß der Zustandscode aus einem Zustandscoderegister gelesen werden. So muß die ALU entweder die ALU-Ausgangsstatussignale oder die Statussignale auswählen, die in dem Zustandscoderegister gespeichert sind. Diese Auswahl wird typischerweise unter Verwendung eines Sende-Multiplexers durchgeführt, was eine weitere Gatterlaufzeit zu der Verzweigungsentscheidung bei zum Stand der Technik gehörenden Schaltungen hinzufügt.
  • Bei zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltungen werden Statussignale und Steuersignale von Eingaben von kombinatorischen Logikschaltungen empfangen. Diese kombinatorische Logik wirkt bei diesen zum Stand der Technik gehörenden Schaltungen auf diese Signale ein, und nachdem sich die Eingaben durch die Stufen der Gatter fortgepflanzt haben (typischerweise 5 oder 6 Stufen an Gattern bei in hohem Maße optimierten zum Stand der Technik gehörenden Schaltungen), wird ein Verzweigungsentscheidungssignal verfügbar. Wie vorher erwähnt, bringen neben der minimalen Anzahl an Gates, die für eine allgemeine Verzweigungsentscheidung notwendig sind, spezielle Implementierungen, wie die "SPARC"-Implementierung weitere Verzögerungen dadurch ein, daß es bei ihnen erforderlich ist, daß die Statussignale oder Zustandscodes durch weitere prozessorspezifische Zustände sich fortpflanzen, z. B. die Invertierung der ALU-Übertragsausgabe für Subtraktionsoperationen und Multiplexer-Senden (mux forwarding).
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung überwindet bei ihren bevorzugten Ausführungsformen in starkem Maße die vorher erwähnten Schwierigkeiten und dient dazu, die Verzögerung, die zwischen der Berechnung der ALU-Summenausgabe (oder der Ausgabe von einer beliebigen ALU-Operation, logisch oder arithmetisch) bis zur Verfügbarkeit der Verzweigungsentscheidung auftritt. Die vorliegende Erfindung erkennt, daß trotz der Abhängigkeit des Verzweigungsentscheidungssignals von den ALU-Statussignalen, die Verzweigungsentscheidungsschaltung so aufgebaut sein kann, daß ein großer Anteil der Berechnung des Verzweigungsentscheidungssignals vor der Verfügbarkeit dieser Statussignale ausgeführt werden kann, und zwar parallel mit der Summenberechnung(oder anderen Operationen).
  • Gemäß der vorliegenden Erfindung, wie sie im Anspruch 1 definiert ist, wird eine Schaltung zum Erzeugen eines Verzweigungsentscheidungssignals basierend auf den Ergebnissen einer arithmetischen oder logischen Operation beschrieben. Die Schaltung umfaßt wenigstens zwei als Kandidaten in Frage kommende Verzweigungsentscheidungsschaltungen, wobei jede dazu dient, ein als Kandidat in Frage kommendes Verzweigungsentscheidungssignal zu berechnen, und jede wenigstens einen eindeutigen als Kandidaten in Frage kommenden Zustandscode für wenigstens eines der ALU-Statussignale annimmt. Die Schaltung umfaßt darüber hinaus eine erste Auswahlschaltung zum Auswählen eines geeigneten Verzweigungsentscheidungssignals aus den als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen basierend auf dem ALU-Statussignal zu dem Zeitpunkt, zu dem das Statussignal verfügbar wird.
  • Ein weiterer Aspekt der Erfindung ist im Anspruch 20 definiert. Weitere Ausführungsformen der Erfindung sind in den beigefügten abhängigen Ansprüchen definiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein schematisches Schaubild einer ersten zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltung;
  • Fig. 2 ist ein schematisches Schaubild einer zweiten zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltung;
  • Fig. 3 ist ein schematisches Schaubild einer ersten Ausführungsform einer Verzweigungsentscheidungsschaltung, die dafür optimiert ist, daß cin 31 der als letztes ankommende Zustandscode ist;
  • Fig. 4 ist ein schematisches Diagramm einer bevorzugten Ausführungsform des Zustandscoderegisters und der zugeordneten Schaltungsanordnung;
  • Fig. 5a-5b sind Zeitablaufdiagramme des Zustandscoderegisters und der zugeordneten Schaltungsanordnung mit und ohne Senden;
  • Fig. 6a ist eine teilweise schematische Darstellung, die eine erste Implementierung von das als Kandidat in Frage kommende Verzweigungsentscheidungssignal auswählenden Multiplexern einer zweiten bevorzugten Ausführungsform der Verzweigungsentscheidungsschaltung zeigt, deren Aufbau konsistent mit einem Carry- Select-Addierer/ALU ist und dafür optimiert ist, daß gcin der als letztes ankommende Zustandscode ist;
  • Fig. 6b ist eine teilweise schematische Darstellung, die eine zweite Implementierung von das als Kandidat in Frage kommende Verzweigungsentscheidungssignal auswählenden Multiplexern einer zweiten bevorzugten Ausführungsform der Verzweigungsentscheidungsschaltung zeigt, deren Aufbau konsistent zu einem Carry- Select-Addierer/ALU ist, der dafür optimiert ist, daß gcin der als letztes ankommende Zustandscode ist;
  • Fig. 7 ist eine teilweise schematische Darstellung, die die Implementierung von das als Kandidat in Frage kommende Verzweigungsentscheidungssignal auswählenden Multiplexern einer dritten bevorzugten Ausführungsform der Verzweigungsentscheidungsschaltung darstellt, deren Aufbau mit einem Carry-Select- Addierer/ALU konsistent ist, dafür optimiert, daß ALU0 der als letztes ankommende Zustandscode ist;
  • Fig. 8 ist eine teilweise schematische Darstellung, die die Implementierung von das als Kandidat in Frage kommende Verzweigungsentscheidungssignal auswählenden Multiplexern einer vierten bevorzugten Ausführungsform der Verzweigungsentscheidungsschaltung darstellt, deren Aufbau mit einem Carry-Select- Addierer/ALU konsistent ist, optimiert für den Fall, daß ALU0 der als letztes ankommende Zustandscode ist;
  • Fig. 9 ist eine schematische Ansicht einer höheren Stufe eines Carry-Select-Addierers, der N-Bit-Teilsummenaddierer mit MSB- Übertragseingabe-Signalen umfaßt, die für die Verzweigungsentscheidungssignalauswahl verfügbar gemacht sind;
  • Fig. 10 ist eine teilweise schematische Ansicht eines N-Bit- Ripple-Carry-Addierers, wie er für die Teilsummenaddierer verwendet werden könnte, die in Blockform in der Fig. 9 dargestellt sind;
  • Fig. 11 ist eine schematische Ansicht auf höherem Niveau eines Carry-Lookahead-Addierers, der N-Bit-Teilsummenaddierer umfaßt, wobei das MSB-Übertragseingabe-Signal für die Verzweigungsentscheidungssignalauswahl verfügbar gemacht ist;
  • Fig. 12 ist eine teilweise schematische Ansicht eines eines Carry-Lookahead-Addierers, wie er für die in Blockform in der Fig. 11 dargestellten Teilsummenaddierer verwendet werden könnte;
  • Fig. 13a-13b zeigen eine verallgemeinerte ALU-Schaltung, die in der Lage ist, die Ausführungsformen der Fig. 3 zu unterstützen; und
  • Fig. 14a-14b zeigen eine ALU=0-Schaltung mit Ein-Bit-Null- Zellen.
  • Gleiche Bezugszeichen und Symbole in den verschiedenen Figuren beziehen sich auf gleiche Teile, wenn es nicht anders angezeigt ist.
  • KURZE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Eine erste zum Stand der Technik gehörende Verzweigungsentscheidungsschaltung 30 ist schematisch in der Fig. 1 dargestellt. Die Gatter sind bei dieser zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltung 30 so ausgewählt, daß sie mit einer Registerübertragungsebenen (RTL)-Beschreibung konsistent sind. Die Gattersteuerung der jeweiligen Verzweigungsbedingungen ALU-Null, ALU-Negativ, ALU-Überlauf und ALU- Übertrag wird durch EN< 3 : 0> in Zusammenwirkung mit den UND- Gattern 32, 33, 34, 35 bewirkt, wie es in der Fig. 1 dargestellt ist. Das EXKLUSIV-ODER-Gatter 36, das 3 Eingänge aufweisende ODER-Gatter 37 und das EXKLUSIV-ODER-Gatter 38 wirken zusammen, um ein Verzweigungsentscheidungssignal JTAKEN, wie in der Fig. 1 dargestellt und weiter unten beschrieben, zu erzeugen:
  • Fehler!
  • Eine zweite zum Stand der Technik gehörende Verzweigungsentscheidungsschaltung 40 ist schematisch in der Fig. 2 dargestellt. Die Gatter sind bei dieser zum Stand der Technik gehörenden Verzweigungsentscheidungsschaltung 40 so ausgewählt, daß sie mit einer CMOS-Implementierung (CMOS = komplementärer Metalloxid-Halbleiter) konsistent sind. Die Gattersteuerung der jeweiligen Verzweigungsbediügen ALU-Null, ALU-Negativ, ALU- Überlauf und ALU-Übertrag wird durch EN< 3 : 0> in Zusammenwirkung mit den NAND-Gattern 42, 43, 44 und 45, wie in der Fig. 2 dargestellt, bewirkt. Das EXKLUSIV-NOR-Gatter 46, das drei Eingän ge aufweisende NAND-Gatter 47 und das EXKLUSIV-ODER-Gatter 48 wirken zusammen, um ein Verzweigungsentscheidungssignal JTAKEN, wie es in der Fig. 2 dargestellt ist, zu erzeugen. Die Funktionsbeschreibung der Schaltung entspricht derjenigen, die in der obigen Gleichung beschrieben wurde.
  • Eine erste bevorzugte Ausführungsform einer Verzweigungsentscheidungsschaltung 50 ist schematisch in der Fig. 3 dargestellt. Diese Verzweigungsentscheidungsschaltung nimmt spät ankommende Statussignale an, konsistent mit einem Addierer/ALU, bei denen das "ALU=0"-Signal oder ALU0 und das Übertragseingangssignal, cin31, zum höchstwertigsten Bit (MSB) als die spät ankommenden Signale angenommen werden. Eine Schaltung, von der das "ALU=0"-Signal abgeleitet werden kann, ist in den Fig. 14a- 14b dargestellt, obwohl es viele andere "ALU=0"-Schaltungen gibt, die in vorteilhafter Weise in Verbindung mit der hierin beschriebenen Erfindung eingesetzt werden können. Eine Schaltung, mit Hilfe der "cin31" bestimmt werden kann, ist in der Fig. 10 dargestellt. Die Signalnamen und -nummern der spät ankommenden Signale sind nur beispielhaft gewählt. Diese erste bevorzugte Ausführungsform einer Verzweigungsentscheidungsschaltung 50 kann in vorteilhafter Weise bei vielen Addierern und ALU-Architekturen angewendet werden, zu denen Carry-look- ahead-Addierer (Paralleladdierer)/ALUs, Carry-select-Addierer/- ALUs, Conditional-sum-Addierer/ALUs und Ripple-carry-Addierer/- ALUs gehören, wobei alle jeweils andere spät ankommende Statussignale aufweisen. Die erste bevorzugte Ausführungsform ist jedoch nicht auf die aufgelisteten Addierer und ALU-Architekturen beschränkt.
  • Gemäß der Fig. 3 macht die bevorzugte Ausführungsform der vorliegenden Erfindung von der Tatsache Gebrauch, daß das Verzweigungsentscheidungsergebnis als Funktion von cin31 und ALU0 ausgedrückt werden kann. Da diese Signale typischerweise spät ankommen, sind vier Kopien der Verzweigungsschaltungsanordnung 52, 54, 56 und 58 vorhanden. Jede Kopie der Verzweigungsschaltung nimmt eine andere Kombination der Werte für cin31 und ALU0 an. Da diese angenommenen Werte Konstanten sind, tragen sie nicht zur Verzögerung bei. Nachdem alle vier als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 ihre Ergebnisse ausgegeben haben, wählen die Multiplexer 62, 64 und 66 das richtige Ergebnis aus den als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 unter Verwendung der tatsächlichen Werte von cin31 und ALU0 als Ausweichsteuersignale aus. Dadurch, daß cin31 und ALU0 es ermöglichen, die Verzweigungsentscheidung nach nur einer oder zwei Multiplexerverzögerungen zu erzeugen, kann die Verzweigungsentscheidung viel schneller als beim Stand der Technik gefällt werden. Der Grund dafür, daß die Verzweigungsentscheidung als Funktion von cin31 ausgedrückt wird, ist der, daß die ALU-Überlauf-, ALU- Negativ- und ALU-Übertragsausgang-Zustandscodes leicht berechnet werden können, nachdem ein Wert für cin31 angenommen worden ist.
  • Unter Bezug auf die Fig. 3 ist zu erkennen, daß die in Frage kommenden Zustandscodes zwischen den als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 variieren. Mit Ausnahme der ALU-0-Verzweigungsbedingung heißen die als Kandidaten in Frage kommenden Zustandscodes ALU- NZVCx (wobei · 0 oder 1 ist, je nachdem, ob eine 0 oder 1 als möglicher Wert für cin31 angenommen wird). Der für ALU-Null als Kandidat in Frage kommende Zustandscode wird als ALU-Zy bezeichnet (wobei y entweder 0 oder 1 ist, je nachdem, ob eine 0 oder 1 als möglicher Wert für ALU=0 angenommen wird). Die Ableitung dieser als Kandidaten in Frage kommenden Zustandscodes wird später beschrieben werden. Die Zuordnung der ALU- Zustandscodes ALU-Negativ, ALU-Null, ALU-Überlauf und ALU- Übertrag der als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 und ihrer zugeordneten Freigabesignale EN< 3 : 0> zu den als Kandidaten in Frage kommenden Zustandscodes ist unten in der Tabelle 1 dargestellt:
  • Jede als Kandidat in Frage kommende Verzweigungsentscheidungsschaltung 52, 54, 56 und 58 erzeugt eine als Kandidat in Frage kommende Verzweigungsentscheidung. Die erste als Kandidat in Frage kommende Verzweigungsentscheidungsschaltung 52 erzeugt JT0-ALU0, wobei cin31 = 0 und ALU0 = 0 angenommen wird, was in der Fig. 3 dargestellt und in der Tabelle 2 aufgelistet ist. Die zweite als Kandidat in Frage kommende Verzweigungsentscheidungsschaltung 54 erzeugt JT0-ALU1, wobei cin31 = 0 und ALU0 = 1 angenommen wurde, was in der Fig. 3 dargestellt und in der Tabelle 2 aufgelistet ist. Die dritte als Kandidat in Frage kommende Verzweigungsentscheidungsschaltung 56 erzeugt JT1-ALU0, wobei cin31 = 1 und ALU0 = 0 angenommen wurde, was in der Fig. 3 dargestellt und in der Tabelle 2 aufgelistet ist. Schließlich erzeugt die vierte als Kandidat in Frage kommende Verzweigungsentscheidungsschaltung 58 JT1-ALU1, wobei cin31 = 1 und ALU0 = 1 angenommen wurde, was in der Fig. 3 dargestellt und in der Tabelle 2 aufgelistet ist. Die Zuordnungen der als Kandidat in Frage kommenden Verzweigungsentscheidungssignale und der als Kandidat in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 zu den als Kandidat in Frage kommenden Bedingungen von cin31 und ALU0 sind unten in der Tabelle 2 dargestellt: TABELLE 2
  • In der Fig. 3 ist allgemein zu erkennen, daß die bevorzugte Ausführungsform der Schaltung 50 mit Hilfe der Multiplexer 62, 64 und 66 zur Auswahl eines der als Kandidaten in Frage kommenden Verzweigungsentscheidungssignale aus den vier als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen JT0-ALU0, JT0-ALU1, JT1-ALU0 und JT1-ALU1 eine Auswahl trifft. Die vier als Kandidaten in Frage kommenden Verzweigungsentscheidungen durch die Kandidatenverzweigungs- Multiplexer 62 und 64 werden in zwei Kandidaten JT0 und JT1 aufgelöst, die als Auswahleingangssignale ALU0 empfangen. Eine negativ angenommene Bedingung für ALU=0 (ALU0 = 0) wählt JT0-ALU0 als Signal aus, das der Kandidatenverzweigungs-Multiplexer 62 als JT0 ausgeben wird und wählt JT1-ALU0 als Signal aus, das der Kandidatenverzweigungs-Multiplexer 64 als JT1 ausgeben wird. Eine positive Bedingung für ALU=0 (ALU0 = 1) wählt JT0-ALU1 als Signal aus, das der Kandidatenverzweigungs-Multiplexer 62 als JT0 ausgeben wird, und wählt JT1-ALU1 als das Signal aus, das der Kandidatenverzweigungs-Multiplexer 64 als JT1 ausgeben wird. Diese beiden Kandidaten JT0 und JT1 werden durch den Auswahl-Multiplexer 66 in ein einziges Verzweigungsentscheidungssignal JT aufgelöst, der an seinem Auswahleingang cin31 empfängt. Eine negative Bedingung für cin31 (cin31 = 0) wählt JT0 für die Weiterleitung als JT aus. Eine positive Bedingung für cin31 (cin31 = 1) wählt JT1 und führt es als JT weiter. So kann das Verzweigungsentscheidungssignal JT innerhalb einer Gatterlaufzeit, gerechnet von dem Empfang des spät ankommenden Si gnals cin31, und innerhalb von zwei Gatterlaufzeiten, gerechnet von dem Empfang des spät ankommenden Signals ALU=0, gültig werden. Vorzugsweise ist das spät ankommende Signal ALU=0 vor dem Gültigwerden des ALU-Summenausgangssignals gültig oder gleichzeitig mit diesem gültig, um eine maximale Verminderung der Verzögerung bis zu einem gültigen Verzweigungsentscheidungssignal JT zu erreichen. Ein Beispiel für eine Schaltung, die dazu dient, eine beschleunigte Berechnung des "ALU=0"-Signals zu erreichen, ist schematisch in den Fig. 14a-14b dargestellt. Obwohl angenommen worden ist, daß cin31 und ALU0 die spät ankommenden Signale sind, von denen die Verzweigungsentscheidungssignale bedingungsmäßig abhängen, kann die bevorzugte Ausführungsform der vorliegenden Erfindung in einfacher Weise auch so eingerichtet werden, daß sie bedingungsmäßig von anderen oder zusätzlichen spät ankommenden Signalen abhängt.
  • Immer noch mit Bezug auf die Fig. 3 wird nun die Ableitung der als Kandidaten in Frage kommenden Zustandscodes beschrieben werden. Wie oben erwähnt, sind die als Kandidaten in Frage kommenden Zustandscodes ALU-NZVCx< 3 : 0> und ALU-Zy. Da bei der bevorzugten Ausführungsform die Verzweigungsentscheidungen bedingungsmäßig von ALU=0 abhängen, werden die als Kandidaten in Frage kommenden Zustandscodes ALU-NZVCx< 2> , die sonst die ALU- Null-Kandidaten-Bedingungszustände repräsentieren würden, nicht verwendet. Stattdessen wird der ALU-Null-Zustand durch die Kandidatenzustandscodes ALU-Zy dargestellt. Wenn jedoch bei einer alternativen Ausführungsform die Verzweigungsentscheidung bedingungsmäßig nur von cin31 abhängen würde, würden ALU- NZVC0< 3 : 0> und ALU-NZVC1< 3 : 0> einen kompletten Satz an als Kandidaten in Frage kommenden Zustandscodes darstellen. Die Zustandscodes für ALU-Negativ, ALU-Überlauf und ALU-Übertrag und ihre zugeordneten (Zuordnung wie in der Tabelle 1 oben dargestellt) als Kandidaten in Frage kommenden Zustandscodes können aus einem Zustandscoderegister 70 (das nicht dargestellt ist, siehe Fig. 4) ausgewählt werden, dessen Ausgangssignale ICC< 3, 1 : 0> sind, oder direkt von den Zustandscodelogikschaltungen 72, 74, deren Operation unten beschrieben ist. Diese Auswahl ist typisch für parallel arbeitende Architekturen (Architekturen, die mit Pipelining arbeiten), bei denen ALU-Operationen typi scherweise den Zustandscode einstellen und spätere Verzweigungsentscheidungen den Zustandscode zu einem beliebigen Zeitpunkt verwenden können. Wenn eine ALU-Operation den Zustandscode sofort vor einem Verzweigungsbefehl, der diesen Zustandscode verwendet, modifiziert, erzeugt bei typischen parallel arbeitenden Implementierungen die ALU den Zustandscode in dem gleichen Taktzyklus, in dem der nachfolgende Verzweigungsbefehl ausgeführt wird. Wenn der Zustandscode jedoch vorher von einem vorhergehenden Befehl eingestellt wurde (mit nachfolgenden Befehlen dazwischen), muß der Zustandscode für die nachfolgende Verzweigungsentscheidung von einem Zustandscoderegister 70 genommen werden. Als Folge davon muß die Verzweigungsentscheidungsschaltung 50 auswählen, ob sie entweder die Signale von den Zustandscodelogikschaltungen 72 und 74 oder die in dem Zustandscoderegister 70 gespeicherten Statussignale, ICC< 3, 1 : 0> , verwendet. Diese Auswahl wird typischerweise unter Verwendung der Zustandscode-Auswahlmultiplexer 80 und 82 mit einem Auswahlsignal "icc-von-ALU" oder ICCFA durchgeführt. ICCFA wird die als Kandidaten in Frage kommenden Zustandscodes von dem Zustandscoderegister 70 auswählen, wenn es negativ ist, und von den Zustandscode-Logikschaltungen 72 und 74 auswählen, wenn es positiv ist. Die Schaltungsanordnung für das Zustandscoderegister 70 und ICC< 3, 1 : 0> sind nachfolgend hierin näher erläutert und in der Fig. 4 dargestellt. In dem Fall, daß Daten von dem Zustandscoderegister 70 durch ICCFA = 0 ausgewählt werden, werden identische Signale durch die als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 geleitet, und die Schaltungsanordnung zur Auswahl der geeigneten als Kandidat in Frage kommenden Verzweigungsentscheidung wird nicht von Bedeutung sein, da sämtliche Verzweigungsentscheidungen identisch sind.
  • Immer noch mit Bezug auf die Fig. 3 wird nun die Arbeitsweise der Zustandscode-Logikschaltungen 72, 74 und der daraus abgeleiteten Zustandscodes beschrieben werden. Die Zustandscode-Logikschaltungen 76, 78 und ihre Zustandscodes werden später beschrieben werden. Als erstes erzeugt die Zustandscode- Logikschaltung 72 die als Kandidaten in Frage kommenden Zustandscodes für einen angenommenen cin31-Wert von 0 und einen positiv angenommenen ICCFA, wie oben erwähnt. Die Logik für diese Kandidatensignale sind für den Fall einer Additionsoperation unten in der Tabelle 3 dargestellt. Die Erweiterung oder Modifikation dieser Logik für eine Subtraktionsoperation ist für einen Fachmann auf dem Gebiet des Designs der Computerarchitekturen selbstverständlich ableitbar. TABELLE 3: LOGIK FÜR DEN ALS KANDIDATEN IN FRAGE KOMMENDEN ZUSTAND ÜBERTRAGSEINGABE = 0
  • Die Logik, die verwendet wird, um die in der Tabelle 3 dargestellte Logik für ICCFA = 1 abzuleiten, ist in der Fig. 3 dargestellt.
  • "n = 3"-Bit: ALU-NZVC0< 3> ist das als Kandidat in Frage kommende ALU-Negativ-Signal, wobei angenommen wird, daß cin31 = 0 ist. Dieses Signal wird in das "n = 3"-Bit des positiv gesetzten Eingangs des ersten Zustandscode-Ausfallmultiplexers 80 eingegeben. ALU-Negativ entspricht SUM< 31> , dem MSB-Summenausgangssignal des Addierers. Es entspricht dem Fortpflanzungssignal des Bits 31 der ALU, das p31 genannt wird, da das Ausgangssignal dem Fortpflanzungssignal entspricht, wenn der Übertragseingang Null ist. p31 wird direkt in das vierte (n = 3) Bit des positiv gesetzten Eingangs des ersten Zustandscode- Auswahlmultiplexers 80 gespeist.
  • "n = 1" Bit: ALU-NZVC0< 1> ist das als Kandidat in Frage kommende ALU-Überlauf-Signal, wobei angenommen wird, daß cin31 = 0 ist. Dieses Signal wird in das "n = 1"-Bit des positiv gesetzten Eingangs des ersten Zustandscode-Auswahlmultiplexers 80 von einem ODER-Gatter 84 eingegeben, das eine logische ODER- Verknüpfung von g31 und TOFLO durchführt. Die ODER-Funktion ist dazu erforderlich, bei der für die "SPARC"-Architektur spezifische Typüberprüfung den Überlauf-TOFLO-Zustand zu gewichten und steht nicht in Beziehung zum ALU-MSB-Überlauf. Arithmetischer oder ALU-MSB-Überlauf ist als wahr definiert, wenn das MSB der Summenausgabe das Vorzeichen des Ergebnisses nicht richtig repräsentiert. Mit anderen Worten würde dann, wenn beide Eingaben um ein Bit einer Vorzeichenerweiterung unterzogen werden würden und die ALU ein Bit breiter wäre, dieses neue MSB sich von dem aktuellen MSB unterscheiden. Da sowohl die a- und b-Eingaben zu diesen zwei Bits gleich sind, unterscheiden sich ihre Ergebnisse, wenn sich ihre Übertragseingänge unterscheiden oder wenn die Übertragsausgabe von Bit 31 nicht der Übertragseingabe entspricht. Für ALU-NZVC0 wird bei einem angenommenen Wert von cin31 = 0 der Überlauf wahr sein, wenn die Übertragsausgabe wahr ist. Die Übertragsausgabe wird nur dann wahr sein, wenn g31 wahr ist.
  • "n = 0"-Bit: ALU-NZVC0< 0> ist das als Kandidat in Frage kommende ALU-Übertragsausgabe-Signal, wobei cin31 = 0 angenommen ist. Dieses Signal wird in das "n = 0"-Bit des positiv gesetzten Eingangs des ersten Zustandscode-Auswahlmultiplexers 80 von einem EXKLUSIV-ODER-Gatter 86 eingegeben, das eine logische EXKLUSIV-ODER-Verknüpfung von g31 und ALUSUB durchführt. Unter der Annahme, daß cin31 = 0 ist, wird das ALU-Übertragsausgangssignal wahr sein, wenn g31 = 1 ist. Wie oben erwähnt, reserviert die "SPARC"-Architektur die Polarität der Übertragsausgabe für Subtraktionen, die die EXKLUSIV-ODER-Funktion von NZVC0< 0> mit ALUSUB erfordern.
  • Die Signale g31 und p31, die oben verwendet wurden, sind die Erzeugungs- und Fortpflanzungssignale für das MSB (bei dieser Ausführungsform das einunddreißigste Bit) des Addierers/ALU. Diese Fortpflanzungs- und Erzeugungssignale sind auf dem Gebiet des Entwurfs der Addierer/ALUs bekannt. Ihre Definitionen für eine Additionsoperation lassen sich folgendermaßen beschreiben, wobei a< 31> und b< 31> das 31. Bit des ersten beziehungsweise zweiten Operanden sind:
  • p31(oder p< 31> ) = a< 31> b< 31> ,
  • g31(oder g< 31> ) = a< 31> ·b< 31> .
  • Die oben beschriebenen als Kandidaten in Frage kommenden Zustandscodes NZVC0< 3> , NZVC0< 1> und NZVC0< 0> werden von den als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52 und 54 empfangen, für die ein Wert von 0 für cin31 angenommen wird.
  • Die zweite Zustandscode-Logikschaltung 74 erzeugt als Kandidaten in Frage kommende Zustandscodes für eine angenommene Übertragseingabe zum MSB der ALU (cin31) von 1 und einen positiv gesetzten ICCFA wie oben erwähnt. Die Logik für diese als Kandidaten in Frage kommenden Signale ist unten in der Tabelle 4 dargestellt. Die Erweiterung oder Modifikation dieser Logik für eine Subtraktionsoperation ist für einen Fachmann auf dem Gebiet des Entwurfs der Computerarchitekturen eine Selbstverständlichkeit. TABELLE 4: LOGIK FÜR DEN ALS KANDIDATEN IN FRAGE KOMMENDEN ZUSTAND ÜBERTRAGSEINGABE = 0
  • Die Logik für die Eingabe zu den positiv gesetzten Eingaben (ICCFA = 1) eines zweiten Zustandscode-Auswahlmultiplexers 82 der am Auswahleingang ICCFA empfängt, ist unten beschrieben und in der Fig. 3 dargestellt:
  • "n = 3"-Bit: p31 (bei dem der hintere Strich "_" ein negatives logisches Signal anzeigt, wie es durch eine Überstreichung in der Fig. 3 dargestellt ist) wird direkt in das vierte (n = 3) Bit des positiv gesetzten Eingangs des zweiten Zustandscode-Auswahlmultiplexers 82 gespeist. Der Grund für p31, das den ALU-Negativ-Zustand repräsentiert, ist folgender: Das Zeichen von MSB entspricht der MSB-Summe, was auf dem Gebiet wohlbekannt ist. Die Ein-Bit-Summe entspricht p< 31> ®cin31. Da cin31 = 1 (als Kandidat in Frage kommender Wert für cin31) ist, entspricht p< 31> O+cin31 einfach p3 l.
  • "n = 1"-Bit: Diese Eingabe in das zweite (n = 1) Bit des positiv gesetzten Eingangs des zweiten Zustandscode- Auswahlmultiplexers 82 wird von einem ODER-Gatter 88 empfangen, das eine logische ODER-Verknüpfung von k31 und TOFLO durchführt. Wie bei dem "n = 1"-Bit von ALU-NZVC0 ist ein ODER-Gatter 88 erforderlich, um eine logische ODER-Operation zwischen dem Arithmetiküberlauf und dem Tag-Überlauf, TOFLO, durchzuführen. Wie in Verbindung mit ALU-NZVC0 besprochen, ist ALU-MSB als wahr definiert, wenn die Übertragsausgabe des Bits 31 nicht der Übertragseingabe entspricht. Bei einem angenommenen Wert von cin31 = 1, wird für ALU-NZVC1 der Überlauf wahr sein, wenn das Abbruchsignal, k31, wahr ist.
  • "n = 0"-Bit: ALU-NZVC1< 0> ist das als Kandidat in Frage kommende ALU-Übertragsausgabe-Signal, wobei cin31 = 1 angenommen wurde. Dieses Signal wird in das erste (n = 0) Bit des als positiv gesetzten Eingangs des zweiten Zustandscode-Auswahlmultiplexers 82 eingegeben. Ein EXNOR-Gatter 90 erzeugt dieses Signal aus einer logischen EXNOR-Verknüpfung von k31 und ALUSUB. Das ALU-Übertragsausgabe-Signal wird wahr sein, wenn g31 = 1 oder p31 = 1 ist. Diese kombinierten Bedingungen entsprechen k31 = 0. Wie oben erwähnt, kehrt die "SPARC"-Architektur die Polarität der Übertragsausgabe für Subtraktionen um, was die EXNOR- Funktion mit ALUSUB erfordert.
  • Die Signale k31 und p31, die oben verwendet wurden, sind das Abbruch- und das Fortpflanzungssignal für das einunddreißigste Bit des Addierers/ALU. Diese Signale sind typischerweise in bestehenden Addierer-/ALU-Schaltungen vorhanden, und eine spezielle Schaltungsanordnung zum Erzeugen dieser Signale wird daher hierin nicht mit eingeschlossen. Diese Fortpflanzungs- und Abbruch-Signale (propagate and kill signals) und Mittel zum Erzeugen derselben sind auf dem Fachgebiet des Entwurfs von Addierern/ALUs bekannt. Ihre Definitionen für eine Additionsoperation sind im folgenden beschrieben, wobei a< 31> und b< 31> das 31. Bit des ersten Operanden beziehungsweise des zweiten Operanden sind:
  • Die oben beschriebenen als Kandidaten in Frage kommenden Zustandscodes NZVC1< 3> , NZVC1< 1> und NZVC1< 0> werden von den als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 56 und 58 empfangen, für die ein Wert von 1 für cin31 angenommen wurde.
  • Mit Bezug auf die Fig. 3 wird nun die Ableitung der Signale ALU-20 und ALU-21, die von den Gattern 76 beziehungsweise 78 erzeugt werden, beschrieben werden. Die bevorzugte Ausführungsform der vorliegenden Erfindung hängt bedingungsmäßig von ALU=0 ab, indem sie die als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52 und 56 aufweist, bei denen der Wert von ALU=0 als negativ gesetzt angenommen wird, und die als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 54, 58 aufweist, bei denen der Wert von ALU=0 oder ALU0 als positiv gesetzt angenommen wird (d. h. ALU0 = 1 oder das Ergebnis der ALU-Berechnung ist Null). Bei zum Stand der Technik gehörenden Schaltungen hing die Verzweigungsentscheidungsschaltung 30, 40 nicht bedingungsmäßig von dem spät ankommenden "ALU=0"-Signal ab. Der ALU-0-Zustandscode würde dann von dem "n = 2"-Bit des Zustandscoderegisters 70 und dem "ALU=0"-Signal von der ALU basierend auf dem Zustand von ICCFA ausgewählt. Die zum Stand der Technik gehörende Multiplexer-Auswahllogik ist folgendermaßen:
  • ALU-Null = ICCFA·ALU0+ ·ICC< 2>
  • Die als Kandidaten in Frage kommenden Zustandscodes ALU-20 und ALU-21 hängen bedingungsmäßig von der obigen Gleichung ab, indem ALU0 0 beziehungsweise 1 gesetzt wird. Diese Gleichungen sind unten dargestellt:
  • ALU-Z0 = ?ICCFA + · ICC < 2>
  • = ?ICCFA · ICC < 2>
  • ALU - Z1 = ?ICCFA + · ICC < 2>
  • = ?ICCFA + · ICC < 2>
  • = ?ICCFA + ICC < 2>
  • Die Erzeugung des Signals ALU-20 wird durch die dritte Zustandscode-Logikschaltung 76 erreicht, von der das Ausgangssignal ALU-20 zur ersten als Kandidat in Frage kommenden Verzweigungsentscheidungsschaltung 52 und zur dritten als Kandidat in Frage kommenden Verzweigungsentscheidungsschaltung 56 gesendet wird. Diese dritte Zustandscode-Logikschaltung 76 ist typischerweise ein UND-Gatter, wie es in der Fig. 3 dargestellt ist. Die Erzeugung des Signals ALU-21 wird durch eine vierte Zustandscode-Logikschaltung 78 erreicht, von der das Ausgangssignal ALU-21 zur zweiten als Kandidat in Frage kommenden Verzweigungsentscheidungsschaltung 54 und zur vierten als Kandidat in Frage kommenden Verzweigungsentscheidungsschaltung 58 gesendet wird. Diese vierte Zustandscode-Logikschaltung 78 ist typischerweise ein ODER-Gatter, wie es in der Fig. 3 dargestellt ist.
  • Unter weiterem Bezug auf die Fig. 3 ist zu erkennen, daß die NAND-Gatter 92, 94, 96 und 98 der als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 als Kandidaten in Frage kommenden Zustandscode empfangen, wobei eine Steuerung durch die Freigabesignale EN< 3 : 0> , wie vorher erläutert, erfolgt. Das EXNOR-Gatter 100 empfängt die durch das Gatter gesteuerten als Kandidaten in Frage kommenden Zustandscodes von den NAND-Gattern 94 und 96. Das drei Eingänge aufweisende NAND-Gatter 102 empfängt wiederum die Ausgabe von dem EXNOR-Gatter 100 und den NAND-Gattern 92 und 98, um ein als Kandidat in Frage kommendes Verzweigungsentscheidungssignal JTx-ALUy' zu erzeugen, wobei x und y die als Kandidaten in Frage kommenden Zustände für cin31 und ALU0 sind, wie es in der Tabelle 2 beschrieben wurde. Die Logikbeschreibung für JTx- ALUy' wird anhand der Kandidatenzustandscodes und Freigabesignale folgendermaßen beschrieben:
  • JTx-ALUy¹ = EN< 3> ·ALU-Zy + (EN< 2> ·ALU-NZVCX< 3> EN< 1> ·ALU- NZVCX< 1> ) + EN< 0> ·ALU-NZVCX< 0> )
  • Die als Kandidat in Frage kommende Verzweigungsentscheidung JTx-ALUy' kann durch ein zwei Eingänge aufweisendes EXKLUSIV-ODER-Gatter 104 invertiert werden, das die Ausgabe des NAND-Gatters 102 und das Signal INV-JT empfängt. INV-JT dient dazu, die als Kandidat in Frage kommende Verzweigungsentscheidung zu invertieren, wie es aus der Definition der EXKLUSIV- ODER-Funktion folgt: Wenn INV-JT negativ gesetzt ist (INV-JT = 0), dann wird eine negativ gesetzte Ausgabe des NAND- Gatters 102 eine negativ gesetzte als Kandidat in Frage kommende Verzweigungsentscheidung erzeugen, und eine positiv gesetzte Ausgabe des NAND-Gatters 102 wird eine positiv gesetzte als Kandidat in Frage kommende Verzweigungsentscheidung erzeugen; wenn INV-JT positiv gesetzt ist (INV-JT = 1), dann wird eine negativ gesetzte Ausgabe des NAND-Gatters 102 eine positiv gesetzte als Kandidat in Frage kommende Verzweigungsentscheidung erzeugen, und eine positiv gesetzte Ausgabe des NAND-Gatters 102 wird eine negativ gesetzte als Kandidat in Frage kommende Verzweigungsentscheidung erzeugen. Die endgültige Ausgabe nach der EXKLUSIV-ODER-Verknüpfung 104 ist JTx-ALUy, wobei x, y 0,0 oder 0,1 oder 1,0 oder 1, 1 sind, je nach den in Frage kommenden Zuständen, wie es oben beschrieben ist.
  • Wie vorher erwähnt, trifft die Schaltung 50 der bevorzugten Ausführungsform eine Auswahl aus den vier als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen JT0-ALU0, JT0-ALU1, JT1-ALU0 und JT1-ALU1 durch die die als Kandidaten in Frage kommenden Verzweigungsentscheidungssignale auswählenden Multiplexer 62, 64 und 66. Die in der Fig. 3 dargestellte Multiplexer-Anordnung ist konsistent mit Signalen, die typisch für einen Ripple-Carry-Addierer, einen Carry-Lookahead-Addierer, einen Conditional-Sum-Addierer oder andere Addierer sind. Die Anordnung kann in einfacher Weise durch einen Fachmann auf diesem Gebiet für die Verwendung bei anderen Addierern modifiziert werden. Die aufgeführten Addierer können darüber hinaus leicht veränderliche Architekturen aufweisen, an die die Erfindung in einer offensichtlichen Weise angepaßt werden kann, damit sie damit kompatibel ist. Die Modifikationen sind hierin dargestellt, um verschiedene mögliche Ausführungsformen zu illustrieren. Verschiedene Modifikationen und Kombinationen der beispielhaft gewählten Ausführungsformen sowie andere Ausführungsformen der Erfindung werden für Fachleute auf diesem Gebiet unter Bezug auf die Beschreibung offenbar werden. Es ist daher beabsichtigt, daß die beigefügten Ansprüche solche Modifikationen oder Ausführungsformen umfassen.
  • In der Fig. 4 ist eine bevorzugte Ausführungsform eines schematischen Schaubildes des Zustandscoderegisters 70 und der dazugehörigen Schaltungsanordnung 110 dargestellt. Bei dieser speziellen Implementierung läßt sich ein Vier-Bit-vier-zu-eins- Multiplexer 112 durch Auswahleingangssignale S0, S1 so betreiben, daß Daten ausgewählt werden, die in das Zustandscoderegister 70 von einer von vier Zustandscodequellen geladen werden. Vorzugsweise werden S0 und S1 von einem zugehörigen Prozessor bereitgestellt. Wenn in diesem Falle S0, S1 = 0,0 sind, dann wird das Zustandscoderegister 70 drei Datenbits von einem Drei- Bit-zwei-zu-eins-Multiplexer 114 und ein viertes Bit von dem ALU0-Signal empfangen. Dieser Multiplexer 114 wählt zwischen den als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen ALU-NZVC0< 3, 1 : 0> und ALU-NZVC1< 3, 1 : 0> durch den Zustand von cin31 aus, um die Signale ALU-NZVC< 3,1 : 0> zu erzeugen. Wenn S0, S1 = 0,1 sind, dann wählt der Multiplexer 112 alternativ dazu SCHREIBEN-DATEN< 3 : 0> aus, um die Daten zum Zustandscoderegister 70 zu leiten. SCHREIBEN-DATEN< 3 : 0> können Daten sein, die in das Zustandscoderegister 70 direkt von der ALU geschrieben wurden. Wenn S0, S1 = 1,0 sind, dann wählt der Multiplexer 112 TRAP< 3 : 0> als Daten aus, die durch das Zustandscoderegister 70 zu leiten sind. Wenn schließlich S0, S1 = 1,1 sind, dann wird der Wert der Ausgabe ICC< 3 : 0> des Zustandscoderegisters 70 wieder in das Zustandscoderegister 70 eingegeben, wodurch konstante Daten in dem Zustandscoderegister gehalten werden. Die mit Bezug auf die Fig. 4 beschriebenen Signale und Schaltungsanordnungen sind nur beispielhaft gewählt, um zu zeigen, in welcher Weise das Zustandscoderegister arbeiten könnte, wenn es zwischen verschiedenen Gruppen von Zustandscodes auswählt. Der Vorteil dieses Funktionsprinzips wird für Fachleute mit normalen Fachkenntnissen auf diesem Gebiet deutlich werden, so wie es der offensichtliche Einsatz von TRAP< 3 : 0> , SCHREIBENDATEN< 3 : 0> und der anderen Gruppen von Zustandscodes sein wird. Mit Bezug auf die Fig. 3 in Verbindung mit den Fig. 5a-5b ist zu erkennen, daß die Multiplexer 80 und 82 und die Gatter 76 und 78 dafür vorgesehen sind, das Senden des Zustandscodes zu ermöglichen. Die Arbeitsweise dieser Schaltungsanordnung 76, 78, 80, 82 zum Senden des Zustandscodes und die Zustandscode- Logikschaltungsanordnung 72, 74 läßt sich am besten bei Betrachtung der Zeitablaufdiagramme der Fig. 5a-5b unter Bezug auf die Fig. 3 verstehen. Die Fig. 5a-5b zeigen mehrere Taktzyklen einer parallel arbeitenden Architektur (Pipeline- Architektur). In den Fig. 5a-5b dargestellte aufeinanderfolgende Befehle, die vertikal gegeneinander versetzt sind, überlappen sich bei der parallel arbeitenden Architektur in Bezug auf ihre Ausführung. Die Fig. 5a-5b zeigen eine Arithmetikoperation mit und ohne Senden. Wenn in einer parallel arbeitenden Architektur (Pipeline-Architektur) der unmittelbar vor einer Verzweigungsentscheidung auftretende Befehl den Zustandscode modifiziert, dann erzeugt die ALU den Zustandscode in dem gleichen Taktzyklus, in dem die nachfolgende Verzweigungsentscheidung die Verzweigungsentscheidung trifft. So wird ICCFA positiv gesetzt und die Zustandscode-Sendeschaltungen 76, 78, 80 und 82 werden die Zustandscodes direkt und nicht von dem Zustandscoderegister 70 auswählen. Für den Fall, daß ICCFA = 0 ist, wird dagegen der Zustandscode von einem vorhergehenden Befehl eingestellt, und die gespeicherten Zustandscodes für die Verzwei gungsentscheidungen müssen daher aus dem Zustandscoderegister 70 gelesen werden. Diese Auswahl kann daher unter Verwendung der Zwei-zu-eins-Sendemultiplexer 80, 82 und der Gatter 76, 78, gesteuert durch ICCFA, getroffen werden. In dem Fall, daß Daten von dem Zustandscoderegister 70 durch ICCFA = 0 ausgewählt werden, werden identische Signale durch die als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen 52, 54, 56 und 58 geleitet, und die Schaltungsanordnung zur Auswahl der geeigneten als Kandidat in Frage kommenden Verzweigungsentscheidung wird ohne Bedeutung sein, da alle Verzweigungsentscheidungen identisch sein werden.
  • Die Fig. 6a zeigt eine teilweise schematische Darstellung einer ersten Implementierung 120 einer zweiten bevorzugten Ausführungsform einer Verzweigungsentscheidungsschaltung. Die Struktur dieser Ausführungsform ist, wie diejenige, die in der Fig. 9 dargestellt ist, mit einem Carry-Select-Addierer konsistent. Multiplexer 62, 64 zur Auswahl von als Kandidaten Frage kommenden Verzweigungsentscheidungssignalen lösen die als Kandidaten in Frage kommenden Verzweigungsentscheidungssignale JTx-ALUy auf der Basis von ALU0 auf. Insbesondere werden die vier als Kandidaten in Frage kommenden Verzweigungsentscheidungen in zwei als Kandidaten in Frage kommende Zwischenverzweigungsentscheidungen JT0, 3T1 durch die Kandidaten-Verzweigungsmultiplexer 62, 64 in der gleichen Weise aufgelöst, wie sie für die erste bevorzugte Ausführungsform der Verzweigungsentscheidungsschaltung 50 erläutert wurde. Jedoch muß die zweite bevorzugte Ausführungsform der Schaltung darüber hinaus diese Zwischenkandidaten-Verzweigungsentscheidungssignale JT0, JT1 durch cin311 und cin31h und wiederum durch gcin auflösen. Diese erste in der Fig. 6a dargestellte Implementierung 120 wählt durch die Verwendung des Multiplexers 122, dessen Auswahleingangssignal cin311 ist, einen Wert von JT0 und JT1 aus, der in einer weiteren Zwischenstufe als JT0' weitergeleitet wird, und wählt durch die Verwendung des Multiplexers 124, dessen Auswahleingangssignal cin31h ist, einen Wert von JT0 und JT1 aus, der als JT1' weitergeleitet wird. Dann wird JT aus JT0' und JT1' durch den Multiplexer 126 ausgewählt, dessen Auswahleingangssignal gcin ist.
  • Die zweite Implementierung 130 der zweiten bevorzugten Ausführungsform ist in der Fig. 6b dargestellt. Wie bei der ersten Implementierung 120 lösen die Multiplexer 62, 64 die für die Auswahl der als Kandidaten in Frage kommenden Verzweigungsentscheidungssignale die als Kandidaten in Frage kommenden Verzweigungsentscheidungssignale JTx-ALUy auf der Basis von ALU0 auf. Insbesondere werden die vier als Kandidaten in Frage kommenden Verzweigungsentscheidungen in zwei als Kandidaten in Frage kommende Zwischenverzweigungsentscheidungssignale JT0, JT1 durch die Kandidatenverzweigungsmultiplexer 62, 64 in der gleichen Weise aufgelöst, wie es für die erste bevorzugte Ausführungsform der Verzweigungsentscheidungsschaltung 50 beschrieben wurde. Ein Multiplexer 134 wählt dann zwischen den Zwischenwerten JT0 und JT1 auf der Basis von cin31' aus und gibt ein Verzweigungsentscheidungssignal JT aus. Die Struktur dieser Ausführungsform ist ebenfalls konsistent mit einem Carry-Select-Addierer, ebenso wie diejenige, die in der Fig. 9 dargestellt ist. Die zweite Implementierung der zweiten bevorzugten Ausführungsform liefert unterschiedliche Signalpfadverzögerungen relativ zur ersten Implementierung und kann je nach den Signalverzögerungen des Addierers, bei dem sie verwendet wird, in vorteilhafter Weise eingesetzt werden.
  • In der Fig. 7 ist ein schematisches Teildiagramm einer dritten bevorzugten Ausführungsform einer Verzweigungsentscheidungsschaltung 140 dargestellt. Der Aufbau dieser Ausführungsform ist konsistent mit einem Carry-Ripple-Addierer, einem Carry-Lookahead-Addierer, einem Conditional-Sum-Addierer oder anderen Addierern/ALUs, optimiert für den Fall, daß ALU0 der als letztes ankommende Zustandscode ist. Diese Ausführungsform verwendet einen Multiplexer 142, um JT0-ALU0 und JT1-ALU0 in das Zwischenverzweigungsentscheidungssignal AL0 unter Verwendung von cin31 als Auswahleingangssignal aufzulösen, und einen Multiplexer 144, um JT0-ALU1 und JT1-ALU1 unter Verwendung von cin31 als Auswahleingangssignal in AL1 aufzulösen. AL0 und AL1 werden dann durch den Multiplexer 146 in das Verzweigungsentscheidungssignal JT unter Verwendung von ALU0 als das Auswahleingangssignal zum Multiplexer 146 aufgelöst.
  • Die Fig. 8 zeigt eine schematische Teilansicht einer vierten bevorzugten Ausführungsform einer Verzweigungsentscheidungsschaltung 150. Der Aufbau dieser Ausführungsform ist konsistent mit einem Carry-Select-Addierer/ALU, optimiert für den Fall, daß ALU0 der als letztes ankommende Zustandscode ist. Diese Ausführungsform verwendet einen Multiplexer 152, um JT0- ALU0 und JT1-ALU0 in JT0-ALU0(I) unter Verwendung von cin311 als das Auswahleingangssignal aufzulösen, und einen Multiplexer 154, um JT0-ALU0 und JT1-ALU0 in JT1-ALU0(I) unter Verwendung von cin31h als das Auswahleingangssignal aufzulösen. Diese Ausführungsform verwendet darüber hinaus einen Multiplexer 156, um JT0-ALU1 und JT1-ALU1 in JT0-ALU1(I) unter Verwendung von cin311 als das Auswahleingangssignal aufzulösen, und einen Multiplexer 158, um JT0-ALU1 und JT1-ALU1 in JT1-ALU1(I) unter Verwendung von cin31h als das Auswahleingangssignal aufzulösen. Ein Multiplexer 160 löst dann JT0-ALU0(I) und JT1-ALU0(I) in AL0 unter Verwendung von gcin als ein Auswahleingangssignal auf, und ein Multiplexer 162 löst JT0-ALU1(I) und JT1-ALU1(I) in AL1 unter Verwendung von gcin als ein Auswahleingangssignal auf. Schließlich löst ein Multiplexer 164 AL0 und AL1 in das Verzweigungsentscheidungssignal JT unter Verwendung von ALU0 als das Auswahleingangssignal zum Multiplexer 164 auf.
  • In der Fig. 9 ist ein Carry-Select-Addierer 170 mit N-Bit- Teilsummenaddierern 172, 174 und 176 schematisch dargestellt, wobei MSB-Übertragseingangssignale cin311 und cin31h für die Verzweigungsentscheidungssignalauswahl verfügbar gemacht sind. Bei diesem speziellen Schema wird eine 2 N-Bit-Summe unter Verwendung eines N-Bit-Teilsummenaddierers 172 für SUM< N-1 : 0> erreicht. Ein Multiplexer 178 wählt dann SUM< 2 N-1:N> zwischen einem N-Bit-Addierer 174, dessen Übertragseingabe als 0 angenommen wurde, und einen N-Bit-Addierer 176 aus, dessen Übertragseingabe als 1 angenommen wurde. Diese Auswahl zwischen den beiden Addierern 174 und 176 wird durch die Übertragsausgabe und gcin von dem Teilsummenaddierer 172 bewirkt. Der Addierer 174 liefert eine Ausgabe, cin311, von der Übertragseingabe zu seinem MSB, und der Addierer 176 liefert eine Ausgabe, cin31h, von der Übertragseingabe zu seinem MSB. Cin311, cin31h und gcin sind die Signale, die für die Multiplexerauswahl bei der zweiten und vierten bevorzugten Ausführungsform der in den Fig. 6a- 6b und 8 dargestellten Verzweigungsentscheidungsschaltungen verwendet wurden.
  • Fig. 10 zeigt eine teilweise schematische Ansicht eines N- Bit-Ripple-Carry-Addierers 180, wie er für die Teilsummenaddierer 172, 174 und 176 verwendet werden könnte, die in den Blöcken in der Fig. 9 dargestellt sind. Diese Addierer könnten darüber hinaus auch die Addiererschaltungsanordnung für die erste bevorzugte Ausführungsform, die in der Fig. 3 dargestellt wurde, darstellen. In solch einem Fall könnte N gleich 32 sein, wobei 32 die Anzahl an Bits des gesamten Addierers/ALU wäre. So wäre das in der Fig. 10 dargestellte cin31-Signal das spät ankommende MSB-Übertragseingangs-Statussignal.
  • Die Fig. 11 zeigt schematisch einen N-Bit-Carry-Lookahead- Addierer 200. Dieser Addierer verwendet Carry-Lookahead- Addiererzellen 202, die ein Gruppenübertragseingangssignal empfangen, das von einem UND-ODER-Gatter 204-206 berechnet wird. Das UND-ODER-Gatter 204-206 berechnet das Übertragseingangssignal von den Gruppenfortpflanzungs-, p, und Gruppenerzeugungs-, g, Signalen von einer niederwertigen Addiererzelle 202. Die höchstwertige Addiererzelle 202 berechnet SUM< N-1 : N-4> , wie es in der Fig. 11 dargestellt ist. Die höchstwertige Addiererzelle 202 gibt darüber hinaus das MSB-Übertragseingangssignal für die Verwendung durch die bevorzugte Ausführungsform der Verzweigungsentscheidungsschaltungen aus, wie es vorher beschrieben wurde. Der Ursprung dieses Signales ist unten in der Fig. 12 dargestellt. Bei diesem speziellen Carry-Lookahead- Addierer weisen die Addiererzellen 202 vier Bits auf, obwohl die Anzahl an Bits bei dieser Ausführungsform nur zur beispielhaften bequemen Erläuterung gewählt wurde, und andere Größen der Addiererzelle 202 ausgewählt werden könnten. Die Carry- Lookahead-Addiererstruktur ist auf diesem Fachgebiet bekannt.
  • Die Fig. 12 zeigt die Carry-Lookahead-Addiererzelle 202, die in der Fig. 11 verwendet wird. Die Arbeitsweise dieser Zelle ist auf dem Fachgebiet bekannt. So werden Ein-Bit-Summen S< n> durch EXKLUSIV-ODER-Gatter 212 aus den Übertragseingangssignalen C< n> und den Fortpflanzungssignalen P< n> erzeugt, wobei n eine Indexvariable ist, die die Bitposition der Eingangssignale, der Ausgangssignale und der zugeordneten Schaltungsanordnung beschreibt. In dem Fall der hier dargestellten Vier- Bit-Addiererzelle 202 wird n zwischen 0 und 3 variieren. Das Signal C< 0> wird das gcin von einer niederwertigen Carry- Lookahead-Addiererzelle 202 sein. Das Signal C< 3> der höchstwertigsten Addiererzelle 202 der Ausführungsform der Fig. 11 wird das Signal cin31 zu den Verzweigungsentscheidungsschaltungen der bevorzugten Ausführungsform liefern. Wie oben erwähnt ist die Arbeitsweise einer Carry-Lookahead-Addiererzelle 202 auf dem Fachgebiet wohlbekannt. Es ist ebenfalls bekannt, daß UND-ODER-Gatter 214-216 G< n-1> , P< n-1> und C< n-1> empfangen und Übertragseingangssignale C< n> zu seiner zugehörigen Addiererzelle erzeugen. Dieser Teil der Carry-Lookahead-Addiererzelle 202 entspricht im wesentlichen derjenigen eines Ripple-Carry- Addierers. Um die Anzahl an Gattern zu minimieren, durch die der Addiererübertrag weitergeleitet werden muß oder sich fortpflanzen muß, empfängt das UND-Gatter 222 sämtliche P< n> - Signale mit n = 0 bis 3 und erzeugt ein Gruppenfortpflanzungssignal GRP PROP, das als g ausgegeben wird und in der Fig. 11 dargestellt ist. Darüber hinaus erzeugen die UND-ODER-Gatter 218-220 ein Gruppenerzeugungssignal, GRP GEN, das eine Funktion von P< n> , n = 1, 2,3, und G< n> , n = 0 bis 3, ist. Da GRP GEN und GRP PROP keine Funktion von irgendwelchen Übertragseingangssignalen, einschließlich des Gruppenübertragseingangssignals, gcin, sind, wird das Ausmaß der Verzögerung, das bei der Übertragsweitergabe auftritt, stark vermindert. Die in der Fig. 12 dargestellte und hierin beschriebene Logik ist aus Gründen der Klarheit der Darstellung vereinfacht worden, wobei Modifikationen aus Gründen höherer Geschwindigkeit in bezug auf das Schaltungslayout für einen Fachmann auf diesem Gebiet offensichtlich sind.
  • Untersucht man die Fig. 3 und 7 (erste und dritte Ausführungsform) in bezug auf die Fig. 6a, 6b und 8 (zweite und vierte Ausführungsform), ist zu erkennen, daß die erste und dritte Ausführungsform weniger Multiplexerstufen benötigen und daher weniger Verzögerung bei der Erzeugung des geeigneten Verzweigungsentscheidungssignals einbringen. Eine verallgemeinerte ALU-Schaltung 230, die in der Lage ist, die erste Ausführungsform der Fig. 3 und die dritte Ausführungsform der Fig. 7 zu unterstützen, ist in der Fig. 13a dargestellt. Es ist eine N- Bit-ALU 230 dargestellt, die eine N-1-Bit-ALU 232 für die niedrigstwertigsten Bits (LSBs) und eine getrennte 1-Bit-ALU 234 für das einzige höchstwertigste Bit (MSB) aufweist. Diese Aufteilung erzeugt das Signal cin31 als die Übertragsausgabe der N-1-Bit-ALU 232. Die N-1-Bit-ALU 232 kann durch eine Reihe von unterschiedlichen Addierer-Architekturen implementiert werden, zu denen der Carry-Ripple-Addierer/ALU, der Carry-Lookahead- Addierer/ALU, der Carry-Select-Addierer/ALU, der Conditional- Sum-Addierer/ALU oder andere Addierer/ALUs gehören. Die Fig. 13b zeigt ein zu einer höheren Ebene gehörendes Diagramm eines N-1-Bit-Conditional-Sum-Addierers 240. Falls N = 32 ist, was auf diesem Fachgebiet ein allgemein üblicher Wert ist, dann wird der N-1-Bit-Conditional-Sum-Addierer ein 31-Bit-Addierer mit Übertragseingabe sein. Das läßt sich in äquivalenter Weise mit einem 32-Bit-Addierer ohne Übertragseingabe implementieren, um die "Potenz von 2"-Bitbreite zu liefern, die für Conditional- Sum-Addierer wünschenswert ist. In diesem Falle ist die einzige LSB-Schaltungsanordnung des Addierers vereinfacht, da keine Summenausgabe erforderlich ist, und die Übertragserzeugung der Übertragseingabe entspricht. Ein wichtiges Merkmal dieser Implementierung des Conditional-Sum-Addierers 240 ist die zweckdienliche Lieferung des cin31-Signals zu einer Verzweigungsentscheidungsschaltung, wie derjenigen der hierin beschriebenen bevorzugten Ausführungsform der Verzweigungsentscheidungsschaltungen. Das wichtige architektonische Merkmal dieses Conditional-Sum-Addierers, der die zweckdienliche Lieferung von cin31 ermöglicht, besteht darin, daß die Aufteilung des Addierers in Hälften 242, 244 zwischen Bits 14 und 15 und nicht zwischen den Bits 15 und 16 auftritt, wie es im allgemeinen auf diesem Fach gebiet bisher bekannt war. Die Arbeitsweise des Conditional- Sum-Addierers 240 wird für einen Fachmann auf diesem Gebiet bei Betrachtung desselben sofort ersichtlich sein. Kurz gesagt empfängt die erste Hälfte 242 des Addierers 240 A< 14 : 0> und B< 14 : 0> und berechnet SUM< 14 : 0> , wobei sie an ihrem LSB eine Übertragseingabe eingibt, um die "Potenz von 2"-Bitbreite zu erhalten, die im allgemeinen bei Conditional-Sum-Addierern verwendet wird. Die Übertragsausgabe von der ersten Hälfte 242 wird als eine Auswahleingabe eines Multiplexers 246 verwendet, der eine von zwei Bedingungssummen auswählt, die durch den ersten Teil 244a und den zweiten Teil 244b der zweiten Hälfte 244 des Conditional-Sum-Addierers 240 berechnet wurden. Die Übertragsausgabe von der ersten Hälfte 242 wird darüber hinaus als eine Auswahleingabe des Multiplexers 248 verwendet, um die geeignete Übertragsausgabe von dem ersten Teil 244a und dem zweiten Teil 244b der zweiten Hälfte 244 des Conditional-Sum- Addierers 240 auszuwählen. Die ausgewählte Ausgabe des Multiplexers 248 wird als ein Gruppen-Übertragseingabesignal oder gcin zu nachfolgenden Addiererstufen verwendet, wie es auf diesem Fachgebiet bekannt ist. Der Multiplexer 246 liefert die SUM< 30 : 15> durch die Auswahl der geeigneten Bedingungssumme (Conditional-Sum) durch die Übertragsausgabe von der ersten Hälfte 242 des Addierers 240. Der erste Teil 244a und der zweite Teil 244b der zweiten Hälfte 244 des Conditional-Sum- Addierers 240 sind nur aus Gründen der Klarheit getrennt dargestellt.
  • In den Fig. 14a-14b ist eine schematische Darstellung einer "ALU=0"-Schaltung 250 dargestellt. In der Fig. 14a ist eine "ALU=0"-Schaltung 250 dargestellt, die so betrieben werden kann, daß sie "ALU=0" berechnet, und zwar ohne Berücksichtigung des aktuellen ALU-Berechnungsergebnisses, was es ermöglicht, daß ein "ALU=0"-Signal beschleunigt verfügbar wird, und zwar vor oder gleichzeitig mit dem Moment, an dem das ALU- Berechnungsergebnis gültig wird. Bei dieser Implementierung dient eine N-Bit-UND-Schaltung 252 dazu, N-Ein-Bit-Null-Signale Zn, n = 0 bis N-1, von Ein-Bit-Null-Zellen 254 zu empfangen. Die N-Bit-UND-Schaltung 252 führt eine logische UND-Verknüpfung der N-Ein-Bit-Null-Signale Zn durch. Wie in der Fig. 14a dargestellt, empfängt jede n-te Ein-Bit-Null-Zelle 254 Kn 1 von der nächsten weniger wichtigen Ein-Bit-Null-Zelle 254 und gibt 1% zur nächsten höherwertigen Ein-Bit-Null-Zelle 254 aus. Die Untersuchung der Fig. 14b zeigt, daß jedes Ein-Bit-Null-Signal Zn nur von den Signalen der n-ten und der "n-1-ten" Zelle abhängt, wodurch vermieden wird, daß das Signal durch alle N-Bits weitergeleitet oder fortgepflanzt wird, was charakteristisch für Addierer-/Subtrahierer-Schaltungen ist. Kn-, Gn-, Pn- und Zn- Zellen 262, 264, 266 und 268 erzeugen die Signale 1%, Gn, Pn und Zn (n = 0 bis N-1). Obwohl Pn und Gn nicht explizit für das "ALU=0"-Signal verwendet werden (Zn verwendet Pn indirekt, jedoch können andere Implementierungen abgeleitet werden), sind diese Signale auf dem Gebiet des Entwurfs der Addierer/ALUs bekannt und sind hier nur zu Zwecken der Illustration für einen Addierer dargestellt. Ein Subtrahierer oder eine ALU würden andere Konstruktionen der Kn-, Gn, Pn und Zn-Zellen 262, 264, 266 und 268 verwenden. Diese anderen Implementierungen oder Modifikationen sind auf dem Fachgebiet bekannt.
  • Die Tabelle 5 liefert unten einen Überblick über die Ausführungsformen und die Zeichnungen: TABELLE 5
  • Konventionen in bezug auf die Namensgebung, die für die Schaltungsanordnung der bevorzugten Ausführungsform verwendet wurden, nehmen eine 32-Bit-ALU zu Zwecken der Illustration an. Daher wird das MSB als das 31. Bit in dem Zusammenhang dieser Druckschrift bezeichnet. Es können jedoch offensichtlich auch ALU-Größen, die von 32 Bit abweichen, verwendet werden, und solche werden daher durch die Erfindung, wie sie in den beigefügten Ansprüchen definiert ist, vorweggenommen.
  • Wenige bevorzugte Ausführungsformen sind im einzelnen hierin oben beschrieben worden. Es ist jedoch zu erkennen, daß der Schutzbereich der Erfindung auch Ausführungsformen umfaßt, die von den beschriebenen abweichen, jedoch noch innerhalb des Schutzbereichs der Ansprüche liegen.
  • Manchmal ist der Ausdruck "Mikrocomputer" so verwendet worden, daß darunter ein Mikrocomputer zu verstehen ist, der einen Speicher erfordert, während ein "Mikroprozessor" keinen Speicher erfordert. Hierin ist die Verwendung der Begriffe jedoch so, daß diese synonym sind und sich auf äquivalente Dinge beziehen. Der Ausdruck "Verarbeitungsschaltungsanordnung" umfaßt ASICs (anwendungsspezifische integrierte Schaltungen), PAL (programmierbare Matrixlogik), PLAs (programmierbare Logikanordnungen), Decoder, Speicher, nicht auf Software basierende Prozessoren oder andere Schaltungsanordnungen oder digitale Computer, einschließlich Mikroprozessoren und Mikrocomputer beliebiger Architektur, oder Kombinationen aus solchen. Die hier verwendeten Ausdrücke sollen im nicht erschöpfenden Sinne zu interpretieren sein, wenn der Schutzbereich der Erfindung betrachtet wird.
  • Die Implementierung kann in Form von diskreten Bauelementen oder in Form von vollständig integrierten Schaltungen in Silizium, Galliumarsenid oder anderen Familien elektronischer Materialien erfolgen, sowie in auf optischen Techniken oder anderen Technologien basierenden Formen und Ausführungsformen. Es ist zu erkennen, daß verschiedene Ausführungsformen der Erfindung Hardware, Software oder mikrocodierte Firmware verwenden können oder in diesen verkörpert sein können.
  • Obwohl die Erfindung mit Bezug auf beispielhafte Ausführungsformen beschrieben wurde, ist diese Beschreibung nicht in einem einschränkenden Sinne auszulegen. Verschiedene Modifikationen und Kombinationen der beispielhaft gewählten Ausfüh rungsformen sowie andere Ausführungsformen der Erfindung werden für Fachleute auf diesem Gebiet mit Bezug auf die Beschreibung offenbar werden. Es ist daher beabsichtigt, daß die beigefügten Ansprüche solche Modifikationen oder Ausführungsformen umfassen.

Claims (20)

1. Schaltung zum Erzeugen eines Verzweigungsentscheidungssignals basierend auf den Ergebnissen einer arithmetischen oder logischen Operation, die in einem zugeordneten Rechen- und Logikwerk (ALU) ausgeführt wird, das als Ausgangssignale ALU- Statussignale aufweist, mit
wenigstens zwei als Kandidaten in Frage kommenden Verzweigungsentscheidungsschaltungen (56, 58), von denen jede dazu dient, ein als Kandidat in Frage kommendes Verzweigungsentscheidungssignal (JT1-ALU1, JT1-ALU0) zu berechnen, und jede einen eindeutigen als Kandidat in Frage kommenden Zustandscode für wenigstens eines der ALU-Statussignale (ALU-NZVC1) annimmt, wobei das ALU-Statussignal wenigstens zwei Zustände aufweist; und
einer ersten Auswahlschaltung (64), die dazu dient, basierend auf dem wenigstens einen ALU-Statussignal (ALU0) aus den wenigstens zwei als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen ein geeignetes Verzweigungsentscheidungssignal (JT1) auszuwählen.
2. Schaltung nach Anspruch 1, die darüber hinaus wenigstens eine Zustandscode-Logikschaltung umfaßt, die dazu dient, aus dem wenigstens einen ALU-Statussignal und aus wenigstens einem weiteren ALU-Statussignal wenigstens zwei berechnete als Kandidaten in Frage kommende Zustandscodes zu berechnen, wobei jeder berechnete als Kandidat in Frage kommende Zustandscode aus einer eindeutigen Kombination von als Kandidaten in Frage kommenden ALU-Statussignalen abgeleitet worden ist.
3. Schaltung nach Anspruch 1 oder Anspruch 2, die darüber hinaus ein Zustandscoderegister zum Speichern eines gespeicherten Zustandscodes umfaßt.
4. Schaltung nach Anspruch 3, die darüber hinaus eine zweite Auswahlschaltung umfaßt, die dazu dient, eine Auswahl aus den berechneten als Kandidaten in Frage kommenden Zustandscodes und dem gespeicherten Zustandscode zu treffen.
5. Schaltung nach Anspruch 3 oder Anspruch 4, die darüber hinaus eine dritte Auswahlschaltung umfaßt, die dazu dient, eine von wenigstens zwei Zustandscodequellen auszuwählen, die in das Zustandscoderegister einzugeben ist und unter der Steuerung eines Prozessors ausgewählt wird.
6. Schaltung nach Anspruch 5, bei der eine der Zustandscodequellen aus dem Satz gespeicherter Zustandscodes besteht, so daß die Zustandscodes von einem vorherigen Befehlszyklus verwendet werden können.
7. Schaltung nach einem der vorhergehenden Ansprüche, bei der die erste Auswahlschaltung ein Netzwerk aus Multiplexern umfaßt.
8. Schaltung nach Anspruch 7, bei der das Netzwerk aus Multiplexern aus einem einzelnen Multiplexer besteht.
9. Schaltung nach einem der vorhergehenden Ansprüche, bei dem die Auswahlschaltung ein Netzwerk aus UND-ODER-Invertgattern umfaßt.
10. Schaltung nach einem der vorhergehenden Ansprüche, bei der wenigstens ein ALU-Statussignal anzeigt, ob das Ergebnis der arithmetischen oder logischen Operation einen Übertrag zu dem höchstwertigen Bit des Rechen- und Logikwerks (ALU) verursachte.
11. Schaltung nach einem der vorhergehenden Ansprüche, bei der wenigstens ein ALU-Statussignal anzeigt, ob das Ergebnis der arithmetischen oder logischen Operation null war.
12. Schaltung nach einem der vorhergehenden Ansprüche, bei der wenigstens eines der ALU-Statussignals das Ergebnis eines Übertrags von einer niedrigerwertigen Bitgruppe anzeigt.
13. Schaltung nach einem der vorhergehenden Ansprüche, bei der wenigstens eines der ALU-Statussignale als ein Teil der ersten Auswahlschaltung fungiert, um zwischen zwei zusätzlichen ALU- Statussignalen auszuwählen.
14. Schaltung nach einem der vorhergehenden Ansprüche, bei der das Rechen- und Logikwerk (ALU) N Bits aufweist.
15. Schaltung nach Anspruch 14, bei das N Bits aufweisende Rechen- und Logikwerk (ALU) ein N-1 Bits aufweisendes Rechen- und Logikwerk (ALU) und ein 1 Bit aufweisendes MSB-Rechen- und Logikwerk (ALU) aufweist.
16. Schaltung nach Anspruch 15, bei der das N-1 Bits aufweisende Rechen- und Logikwerk (ALU) die Architektur eines N Bit aufweisenden Rechen- und Logikwerks (ALU) ohne Übertrag aufweist.
17. Schaltung nach Anspruch 16, bei das N-1 Bits aufweisende Rechen- und Logikwerk (ALU) eine Conditional-Sum-ALU ist.
18. Schaltung nach Anspruch 17, bei der die Conditional-Sum-ALU eine erste Hälfte und eine zweite Hälfte aufweist, wobei die erste Hälfte eine Summe für das nullte bis einschließlich das (N · 1/2)-2 -te Bit berechnet und die zweite Hälfte eine Summe für das (N · 1/2)-1 -te bis einschließlich das N-1 -te Bit berechnet.
19. Schaltung nach Anspruch 17 oder Anspruch 18, bei der die Conditional-Sum-ALU ein Conditional-Sum-Addierer ist.
20. Verfahren zum Fällen einer Verzweigungsentscheidung, bei dem
a) eine arithmetische oder eine logische Operation durchgeführt wird;
b) wenigstens ein ALU-Statussignal geliefert wird;
c) wenigstens zwei als Kandidaten in Frage kommende Verzweigungsentscheidungssignale berechnet werden, von denen jedes einen eindeutigen als Kandidat in Frage kommenden Zustandscode für das wenigstens eine ALU-Statussignal annimmt; und
d) basierend auf dem wenigstens einen ALU-Statussignal zu dem Zeitpunkt, zu dem das Statussignal gültig wird, aus den wenigstens zwei als Kandidaten in Frage kommenden Verzweigungsentscheidungssignalen ein geeignetes Verzweigungsentscheidungssignal ausgewählt wird.
DE69327030T 1992-09-29 1993-09-27 Schaltung zur Verzweigungsentscheidung eines Prozessors Expired - Fee Related DE69327030T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/953,637 US5504867A (en) 1992-09-29 1992-09-29 High speed microprocessor branch decision circuit

Publications (2)

Publication Number Publication Date
DE69327030D1 DE69327030D1 (de) 1999-12-23
DE69327030T2 true DE69327030T2 (de) 2000-07-20

Family

ID=25494300

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69327030T Expired - Fee Related DE69327030T2 (de) 1992-09-29 1993-09-27 Schaltung zur Verzweigungsentscheidung eines Prozessors

Country Status (6)

Country Link
US (1) US5504867A (de)
EP (1) EP0590914B1 (de)
JP (1) JP3597547B2 (de)
KR (1) KR100286881B1 (de)
DE (1) DE69327030T2 (de)
TW (1) TW320702B (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
WO2001063416A1 (en) * 2000-02-24 2001-08-30 Bops Incorporated Methods and apparatus for scalable array processor interrupt detection and response
US8707037B2 (en) * 2008-04-17 2014-04-22 Atmel Corporation Cryptographic authentication apparatus, systems and methods
US9652242B2 (en) * 2012-05-02 2017-05-16 Apple Inc. Apparatus for predicate calculation in processor instruction set
DE102013008367A1 (de) 2013-05-16 2014-11-20 Man Truck & Bus Ag Antriebsvorrichtung sowie Verfahren zum Betreiben derselben unter Verwendung eines partiell oxidierten Dieselkraftstoffs

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947369A (en) * 1982-12-23 1990-08-07 International Business Machines Corporation Microword generation mechanism utilizing a separate branch decision programmable logic array
US4685078A (en) * 1984-10-31 1987-08-04 International Business Machines Corporation Dual incrementor
US5247627A (en) * 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
JPH01277931A (ja) * 1988-04-29 1989-11-08 Nec Ic Microcomput Syst Ltd 零検出回路

Also Published As

Publication number Publication date
TW320702B (de) 1997-11-21
JPH076032A (ja) 1995-01-10
EP0590914A3 (en) 1994-05-25
JP3597547B2 (ja) 2004-12-08
KR100286881B1 (ko) 2001-04-16
KR940007722A (ko) 1994-04-28
US5504867A (en) 1996-04-02
EP0590914A2 (de) 1994-04-06
DE69327030D1 (de) 1999-12-23
EP0590914B1 (de) 1999-11-17

Similar Documents

Publication Publication Date Title
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE69327996T2 (de) Verfahren zur Feststellung eines nullwertigen Ergebnisses als Folge einer arithmetischen oder logischen Berechnung und Schaltung hierfür
DE69430510T2 (de) Arithmetik-Logikschaltung mit drei Eingängen
DE69326314T2 (de) Durchführung aritmetische Operationen auf Daten
DE69832985T2 (de) Multiplizier-Akkumulatorschaltungen
DE69430053T2 (de) Ganzzahldivisionsvorrichtung und -verfahren
DE2900324C2 (de)
DE69428499T2 (de) Bedingtes Speicherladen von einem Registerpaar
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
DE3840969C2 (de)
DE60216210T2 (de) Binärer Grösse-Vergleicher
DE69321241T2 (de) Hochleistungsmantissendividierer.
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE19540102A1 (de) Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE3700323C2 (de)
DE19983870B4 (de) Berechnung impliziter Datentypbits für Simd-Operationen
DE3701599C2 (de)
DE69519448T2 (de) Digitale Verarbeitungsanlage mit Befehlen zum Suchen des Minimums und Maximums
DE3852576T2 (de) Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen.
DE69326793T2 (de) Parallelisierter Grössevergleicher zum Vergleichen einer Binärzahl mit einer bestimmten Zahl
DE69629646T2 (de) Verfahren zur durchführung einer &#34;rotate through carry&#34; operatiion
DE69327030T2 (de) Schaltung zur Verzweigungsentscheidung eines Prozessors

Legal Events

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