DE3686741T2 - Verfahren und rechneranordnung fuer die bedingte datenverarbeitung. - Google Patents

Verfahren und rechneranordnung fuer die bedingte datenverarbeitung.

Info

Publication number
DE3686741T2
DE3686741T2 DE8686108416T DE3686741T DE3686741T2 DE 3686741 T2 DE3686741 T2 DE 3686741T2 DE 8686108416 T DE8686108416 T DE 8686108416T DE 3686741 T DE3686741 T DE 3686741T DE 3686741 T2 DE3686741 T2 DE 3686741T2
Authority
DE
Germany
Prior art keywords
instruction
computer
register
condition
values
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
DE8686108416T
Other languages
English (en)
Other versions
DE3686741D1 (de
Inventor
Allen J Baum
David A Fotland
Terrence C Miller
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE3686741D1 publication Critical patent/DE3686741D1/de
Application granted granted Critical
Publication of DE3686741T2 publication Critical patent/DE3686741T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

  • In einem Rechner mit Mikroprogrammierung gemäß dem Stand der Technik, weist die Steuereinheit eines solchen Rechners gewöhnlich einen autonomen Festwertspeicher auf. Jedes Mal, wenn ein Programmbefehl beginnt, erzeugt die Steuereinheit eine Adresse an den Festwertspeicher, die von der Funktion oder dem Operationscode des Befehls abgeleitet ist. Diese Addresse lokalisiert, was das erste von einer Reihe von Worten sein kann, das die Steuersignale an den Computer zum Ausführen des speziellen zu verarbeitenden Befehls liefert. Tatsächlich erzeugt jeder Befehl eine Übertragung zu einer damit verbundenen Mikro-Subroutine, und die darausfolgende schrittweise Operation der Maschine entspricht der Ausführung eines Programms in einer sehr ins Einzelne gehende Art.
  • In einem solchen bekannten Rechner, umfassen Programmbefehle gewöhnlich einen Operationcode, d.h. Opcode, zusammen mit Information bezüglich des Orts der Operanden, nämlich der zu bearbeitenden Daten. Diese Operanden können manchmal zusätzliche Betriebsinformation haben. Die Länge der Programmbefehle kann relativ lang oder relativ kurz sein, je nach Menge der jeweiligen Daten. Die Operationscodes geben überlicherweise den auszuführenden Vorgang an. Nachdem die Länge des Operationcodes erstellt ist, ist es möglich, daß nur ein bestimmter fester Satz verschiedener Operationscodes und zugeordneter Programmbefehle vorhanden ist. Es werden jedoch nicht alle Operationcodes, die theoretisch durch eine bestimmte Anzahl von Bits ausgedrückt werden können, d.h. Operationcodes innerhalb des festen Satzes zur Charakterisierung von Programmbefehlen, verwendet, für die der Rechner Mikroprogramm- Hilfsmittel aufweist. Es wird üblicherweise nur ein Teil oder ein Satzteil verwendet, und daher wird die Programmleistung verschlechtert.
  • Darüberhinaus, stellt der Speicher des Rechners den größten Kostenfaktor der Hardware dar. Aus diesem Grund ist die wirksame Benutzung des Speichers für Schnelligkeit und minimalen Hardwareaufwand entscheidend. Rechner mit festgelegter Befehlslänge benötigen dieselbe Anzahl von Bits für jedes Befehlswort, ungeachtet ob der auszuführenden Befehl einfach oder kompliziert ist. Viele Bits können z.B. bei Befehlen, die einfache Vorgänge spezifizieren, verschwendet werden, während viele Befehle bei komplexen Operationen, wenn die Wirksamkeit des Befehls durch seine Länge beschränkt ist, verschwendet werden können. Es ist daher anzustreben, einen Rechner mit einem Befehlssatz, der alle Anwendungen am effizientesten durchführt, zu ermöglichen.
  • Um die Effizienz der mikroprogrammierten Verarbeitung im Stand der Technik zu verbessern, wird das Konzept verwendet, optimierte Compiler einzusetzen, erstens um Programmsprachen in Befehle zu übersetzen, die wie Mikrobefehle keinen groben virtuellen Addressraum belegen und zweitens um die Befehlszykluszeit so schnell wie es die Technologie erlaubt zu machen. Rechner mit solchen optimierten Compilern haben weniger Befehle als die Rechner im Stand der Technik, und die wenigen Befehle, die sie aufweisen, sind einfach und gewöhnlich in einem Taktzyklus ausführbar. Solche Rechner tragen den entsprechende Namen: RISC (Reduced Instruction Set Computer), Rechner mit eingeschrängtem Befehlssatz.
  • Befehle, die Teil eines eingeschränkten Befehlssatzes in einer RISC Maschine sind und auf neue Art eine verbesserte Wirksamkeit aufweisen, sind Gegenstand der vorliegenden Erfindung und im nachfolgenden beschrieben.
  • Insbesondere weisen viele Programme Verfahren zum Bewerten einer Bedingung und Speichern der Ergebnisse der Bewertung als Boole'sche Variable auf. Die meisten Rechner-Befehlssätze des Stands der Technik können jedoch eine Bedingung, die normalerweise das Ergebnis eines Vergleichs ist, nur verwenden, um eine Verzweigungs-Entscheidung zu beeinflussen und nicht um die Bedingung als Wert zu verwirklichen.
  • Ein Beispiel dieser Befehlssätze des Stands der Technik ist ein Befehlssatz, der einen Code kompliert, der die Bedingung verwendet, um damit einen Code, der Bits setzt oder nullstellt, zu umgehen. Dieser Befehlssatz ist gewöhnlich langsam und beinhaltet bedingte Verzweigungen, die die Pipeline von Hochleistungsprozessoren überfüllen können.
  • Ein weiteres Beispiel ist ein bekannter Befehlssatz, der spezielle Befehle, die ein Bit, das der Bedingungswert ist, in ein Register setzt, verwendet. Bei diesem Befehlssatz muß gewartet werden, bis die Bedingung ausgewählt und aufgelöst ist, bevor das Ergebnis gespeichert wird. Diese Operation, die verschiedene Zeiten erfordert, ist langsamer als das Auswählen und Speichern des Ergebnisses einer arithmetischen Operation.
  • Gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung und wie in Anspruch 1 formuliert, verwendet ein Befehlssatz zwei Befehlsfolgen, um das Ergebnis des Vergleichs zu speichern. Die beiden Befehlsfolgen verwenden keine Verzweigungsbefehle und warten nicht auf die Bedingungsauflösung, bevor sie die Ergebnisse speichern. Sie können auch etwas mehr Operationen als nur einen Null- oder Eins-Wert eines Vergleichs verwirklichen.
  • Im Grunde vergleicht der vorliegende Befehlssatz zwei Operanden und speichert unbedingt eine Null, die ein Bool'sches "Falsch" darstellt an einer ausgewählten Stelle. Die Befehlsanordnung löscht ferner bedingt den nachfolgenden Befehl.
  • Die verschiedenen Merkmale und Vorteile der vorliegenden Erfindung werden anhand der nachstehenden Beschreibung unter Bezug auf und in Verbindung mit der beiliegenden Zeichnung weiter erläutert. Es zeigen:
  • Fig. 1 den Befehl zum Vergleichen und Nullstellen, der in der Rechnervorrichtung gemäß der bevorzugten Ausführungsform der Erfindung enthalten ist;
  • Fig. 2 die Funktionsblöcke in der Rechnervorrichtung gemäß der bevorzugten Ausführungsform der Erfindung zur Verwendung des Befehlssatzes nach Fig. 1.
  • Der Zweck eines Befehlssatzes in der Rechnervorrichtung gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung ist es, den Inhalt von zwei Registern zu vergleichen, ein Register nullzustellen und bedingt den folgenden Befehl abhängig vom Ergebnis des Vergleichs auszuführen. In anderen Worten, werden die Inhalte der beiden allgemeinen Register, z.B. "rb" und "rc" miteinander verglichen und ein drittes Register "ra" nullgestellt. Der Befehl im nächsten Ausführungszyklus, der dem Vergleichsbefehl folgt, wird bedingt ausgeführt. Er wird nullgestellt, wenn die Bedingung erfüllt ist. Die Bedingung kann eine beliebige arithmetische Bedingung oder ihre Negation sein.
  • Dieser Befehl zum Vergleichen und Nullstellen (COMCLR) wird wie folgt angegeben:
  • COMCLR, cf rb,rc,ra
  • wobei:
  • cf die arithmetische Bedingung oder ihre Negation ist;
  • rb und rc die allgemeinen Register sind, deren Inhalt verglichen wird; und
  • ra das allgemeine Register ist, das nullgestellt wird, und hat das in Fig. 1 dargestellte Format, nämlich
  • 02 / rb / rc / c / f / 44 / ra,
  • wobei:
  • 02 ein 6-Bit-Feld 120 ist, das eine Arithmetik/Logik- Befehlsklasse identifiziert;
  • rb ein 5-Bit-Feld 122 ist, das das allgemeine Register "b" spezifiziert, dessen Inhalt verglichen wird (Registerquelle "b")
  • rc ein 5-Bit-Feld 124 ist, das das allgemeine Register "c" spezifiziert, dessen Inhalt verglichen wird (Registerquelle "c");
  • c ein 3-Bit-Bedingungsspezifizierer 126 ist;
  • f ein 1-Bit-Bedingungsnegations-Spezifizierer 128 ist;
  • 44 eine 7-Bit-Operationscode-Erweiterung 130 ist; und
  • ra ein 5-Bit-Feld 132 ist, das das allgemeine Register "a" spezifiziert, dessen Inhalt nullgestellt wird (Registerziel "a").
  • In Betrieb arbeitet die Befehlsanordnung 110 wie folgt:
  • 1. Während des ersten Taktzykluses T:
  • a. Addieren des Inhalts des allgemeinen Registers "rb" mit dem Einerkomplement des allgemeinen Registers "rc" und "1"; und
  • b. Übertragen von "0" zum allgemeinen Register "ra".
  • 2. Während des zweiten Taktzykluses T + 1: wenn die durch (c,f) definierte Bedingung erfüllt ist, Löschen des in diesem Zyklus T + 1 ausgeführten Befehls.
  • Die Operation dieses Vergleichs- und Nullstell-Befehlssatzes 110 ist in Fig. 2 gezeigt. Dort wird der Inhalt der Register "rb" und "rc" (nicht gezeigt) aus einer Registerdatei 210 in einer Arithmetik-Logikeinheit (ALU) 212 verglichen. Genaugenommen wird der Inhalt des Registers "rb" mit dem Einerkomplement des Inhalts des Registers "rc" addiert. Ein Multiplexer (MUX) 214 liefert ein Ausgangssignal 216 in Reaktion auf ein Eingangssignal 220 von der ALU 212, den Befehlscode 110 und ein "0"-Eingangssignal. Das Ausgangssignal 216 wird zur Registerdatei 210 übertragen, wo die Inhalte der Register "rb" und "rc" in Reaktion auf das Signal 216 gelesen werden. Das Ergebnis des Vergleichs in der ALU 212 wird der vorgewählten Bedingung 218 unterworfen und zur Folge-Steuereinheit 222 übertragen, die je nach den vorgewählten Bedingungen feststellt, ob das Löschen des nächsten Befehls nötig ist. Diese Operation stellt ein schnelles, direktes und effizientes Verfahren der unbedingten Nullstellung eines ausgewählten Registers in einem Computer gemäß der vorliegenden Erfindung dar.

Claims (5)

1. Verfahren zur bedingten Datenverarbeitung in einem Rechner mit den folgenden Schritten:
Auslesen und Vergleichen gemäß einer vorgewählten Bedingung (c) zweier ausgewählter Werte aus einem ersten Register ("b") bzw. einem zweiten Register ("c"); und unbedingtes Nullsetzen eines dritten Registers ("a") wobei diese Schritte in einem einzigen Rechnertaktzyklus ausgeführt werden.
2. Verfahren zur Datenverarbeitung nach Anspruch 1, mit dem weiteren Schritt:
Löschen eines Befehls, der in einem nachfolgenden Taktzyklus, der unmittelbar dem einzigen Rechnertaktzyklus folgt, auszuführen ist, wenn die vorgewählte Bedingung erfüllt ist.
3. Verfahren nach einem der Ansprüche 1 bis 3, wobei die Bedingung eine beliebige arithmetische Bedingung oder ihre Negation ist.
4. Rechneranordnung zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 3, die umfaßt:
einen Befehl (110) mit:
a. einem ersten Feld (126) zum Spezifizieren einer vorgewählten Bedingung (c) für den Vergleich zweier Werte;
b. einem zweiten Feld (122) zum Spezifizieren eines der beiden Werte;
c. einem dritten Feld (124) zum Spezifizieren des anderen der beiden Werte; und
d. einem vierten Feld (132) zum Spezifizieren eines Registers ("a") , das unbedingt nullgestellt werden soll;
wobei das erste, zweite, dritte und vierte Befehlsfeld in einem einzigen Befehl enthalten sind, der in einem einzigen Taktzyklus des Rechners ausgeführt wird; und
Einrichtungen (212, 214, 216) in Reaktion auf den Befehl zum unbedingten Zugriff und Nullstellen des Registers "a").
5. Rechneranordnung nach Anspruch 4, die weiterhin umfaßt:
eine Leseeinrichtung (210), die in Reaktion auf das zweite und dritte Befehlsfeld (122, 124) die zwei Werte ausliest;
eine Arithmethik- und Logikeinrichtung (212), die mit der Leseeinrichtung (210) zum Vergleichen der zwei Werte verbunden ist; und
eine Folge-Steuereinrichtung (222), die in Reaktion auf die Arithmetik- und Logikeinrichtung (212) und das erste Befehlsfeld (126) einen nachfolgenden Befehlscode, der in dem nächsten Rechnertaktzyklus unmittelbar nach dem ersten Rechnertakt auszuführen ist, auf Null setzt, wenn die vorgewählte Bedingung erfüllt ist.
DE8686108416T 1985-06-28 1986-06-20 Verfahren und rechneranordnung fuer die bedingte datenverarbeitung. Expired - Fee Related DE3686741T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/750,809 US4747046A (en) 1985-06-28 1985-06-28 Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch

Publications (2)

Publication Number Publication Date
DE3686741D1 DE3686741D1 (de) 1992-10-22
DE3686741T2 true DE3686741T2 (de) 1993-01-21

Family

ID=25019253

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8686108416T Expired - Fee Related DE3686741T2 (de) 1985-06-28 1986-06-20 Verfahren und rechneranordnung fuer die bedingte datenverarbeitung.

Country Status (6)

Country Link
US (2) US4747046A (de)
EP (1) EP0206276B1 (de)
JP (1) JPH0769795B2 (de)
AU (1) AU583929B2 (de)
CA (1) CA1258712A (de)
DE (1) DE3686741T2 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
JPH0330018A (ja) * 1989-06-28 1991-02-08 Nec Corp 10進演算方式
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
CA2045735A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
CA2162115A1 (en) * 1993-06-14 1994-12-22 David V. James Method and apparatus for finding a termination character within a variable-length character string on a processor
US5815695A (en) * 1993-10-28 1998-09-29 Apple Computer, Inc. Method and apparatus for using condition codes to nullify instructions based on results of previously-executed instructions on a computer processor
US6026484A (en) * 1993-11-30 2000-02-15 Texas Instruments Incorporated Data processing apparatus, system and method for if, then, else operation using write priority
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
DE4430195B4 (de) * 1993-12-13 2004-09-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren zur Auswertung von Booleschen Ausdrücken
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5768172A (en) * 1995-10-04 1998-06-16 Apple Computer, Inc. Graphic software functions without branch instructions
US7801215B2 (en) * 2001-07-24 2010-09-21 Sasken Communication Technologies Limited Motion estimation technique for digital video encoding applications
JP3851228B2 (ja) 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
EP1387254B1 (de) * 2002-07-31 2012-12-12 Texas Instruments Incorporated Übersprungbefehl, der einen Test mit direkten Daten durchführt
EP1387255B1 (de) * 2002-07-31 2020-04-08 Texas Instruments Incorporated Test- und Übersprungbefel mit mindestens einem Registeroperand
WO2006127856A2 (en) 2005-05-24 2006-11-30 Texas Instruments Incorporated Operand width indication for micro-sequence processing

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3577190A (en) * 1968-06-26 1971-05-04 Ibm Apparatus in a digital computer for allowing the skipping of predetermined instructions in a sequence of instructions, in response to the occurrence of certain conditions
US3881173A (en) * 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
EP0072373B1 (de) * 1981-08-19 1986-03-19 International Business Machines Corporation Mikroprozessor
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4589065A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system
US4618956A (en) * 1983-09-29 1986-10-21 Tandem Computers Incorporated Method of operating enhanced alu test hardware
US4654786A (en) * 1984-04-11 1987-03-31 Texas Instruments Incorporated Data processor using picosquencer to control execution of multi-instruction subroutines in a single fetch cycle

Also Published As

Publication number Publication date
EP0206276B1 (de) 1992-09-16
CA1258712A (en) 1989-08-22
EP0206276A3 (en) 1988-10-05
JPH0769795B2 (ja) 1995-07-31
JPS623335A (ja) 1987-01-09
AU583929B2 (en) 1989-05-11
EP0206276A2 (de) 1986-12-30
DE3686741D1 (de) 1992-10-22
US4873627A (en) 1989-10-10
US4747046A (en) 1988-05-24
AU5934186A (en) 1987-01-08

Similar Documents

Publication Publication Date Title
DE3686741T2 (de) Verfahren und rechneranordnung fuer die bedingte datenverarbeitung.
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE2230102C2 (de) Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE68927911T2 (de) Datenverarbeitungssystem
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE3688824T2 (de) Datenverarbeitungssystem.
DE1250659B (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage
DE3486085T2 (de) Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE2357003A1 (de) Programmierbarer prozessor
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE3650006T2 (de) Verfahren und Mittel zum Transportieren von Bytes in einem Rechner mit reduziertem Befehlssatz.
DE4403917A1 (de) Vorrichtung zum Berechnen einer Besetzungszählung
DE68927313T2 (de) Operandenspezifiererverarbeitung
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE3307194C2 (de)
DE2336676C3 (de) Einrichtung zur Modifizierung von Mikroprogrammbefehlen
DE3686984T2 (de) Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.
DE3688973T2 (de) Verarbeitungssystem in Pipelinestruktur und Mikroprozessor mit einem derartigen System.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8339 Ceased/non-payment of the annual fee