DE3686984T2 - Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz. - Google Patents

Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.

Info

Publication number
DE3686984T2
DE3686984T2 DE19863686984 DE3686984T DE3686984T2 DE 3686984 T2 DE3686984 T2 DE 3686984T2 DE 19863686984 DE19863686984 DE 19863686984 DE 3686984 T DE3686984 T DE 3686984T DE 3686984 T2 DE3686984 T2 DE 3686984T2
Authority
DE
Germany
Prior art keywords
instruction
cycle
address
computer system
register
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
DE19863686984
Other languages
English (en)
Other versions
DE3686984D1 (de
Inventor
Allen J Baum
Ruby Bei-Loh Lee
Steven S Muchnick
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
Application granted granted Critical
Publication of DE3686984D1 publication Critical patent/DE3686984D1/de
Publication of DE3686984T2 publication Critical patent/DE3686984T2/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Bei herkömmlichen Rechnern mit Microprogrammierung weist der steuerbereich oder das Leitwerk eines solchen Rechners im allgemeinen einen autonomen Nur-Lese-Speicher auf. Jedesmal wenn ein Programmbefehl beginnt, erzeugt das Leitwerk eine Adresse für den Nur-Lese-Speicher, die aus dem Funktion- oder Operationscode des Befehls abgeleitet wird. Diese Adresse lokalisiert ein Wort, das als das erste von einer Reihe von Wörtern gelten kann, welche das Steuersignal für den Rechner liefern, um die Verarbeitung dieses speziellen Befehl auszuführen. Tatsächlich erzeugt jeder Befehl eine Übertragung zu einem diesem zugeordneten Unterprogramm, und der sich ergebende schrittweise Betrieb der Maschine entspricht der Ausführung eines Programms auf einer sehr ausführlichen Betriebsstufe.
  • Bei einem solchen bekannten Rechner umfassen Programmbefehle im allgemeinen einen Befehlscode oder Operationscode, das heißt, den OP-Code, zusammen mit Informationen bezüglich der Lage der Operanden, das heißt, der zu bearbeitenden Daten. Diese Operanden können manchmal zusätzliche Betriebinformation enthalten. Die Länge der Programmbefehle kann relativ lang oder relativ kurz sein, abhängig von der beteiligten Datenmenge. Die Operationscodes geben im allgemeinen die auszuführende Operation an. Wenn einmal die Länge des Operationscodes vorgegeben ist, ist es möglich, nur einen bestimmten festen Satz verschiedener Operationscodes und dazugehöriger Programmbefehle zu haben. Es werden jedoch nicht alle Operationscodes, die theoretisch mit einer bestimmten Anzahl von Bits ausgedrückt werden können, das heißt, Operationscodes innerhalb das festen Satzes, zum Kennzeichnen von Programmbefehlen verwendet, für die der Rechner Microprogramm-Hilfmittel oder -systemelemente aufweist. Im allgemeinen wird nur ein Teil oder eine Untermenge verwendet, und dadurch verschlechtert sich die Leistungsfähigkeit des Programms.
  • Ferner verursacht bei bekannten Rechnern der Speicher des Rechners die größten Hardware-Kosten. Der Schlüssel zur Hardware-Geschwindigkeit und minimalen Größe liegt daher in einem effizienten Gebrauch des Speichers. Rechner mit festen Befehlslängen erfordern-dieselbe Anzahl von Bits für jedes Befehlswort, unabhängig von der Einfachheit oder Komplexität des auszuführenden Befehls. Beispielsweise können viele Bits bei einem solchen Befehl verschwendet werden, der einfache Operationen spezifiziert, wohin unnötig viele Befehle für komplexe Operationen gebraucht werden, wenn das Leistungsvermögen eines Befehls durch seine Länge begrenzt ist. Es ist daher wünschenswert, einen Rechner mit einem Befehlssatz zu entwerfen, der alle Anwendungen höchst effizient bewerkstelligen kann.
  • Um die Leistungsfähigkeit von Rechnern im Vergleich zu der im stand der Technik eingesetzten Microprogrammierung zu erhöhen, wird ein Verfahren zum Optimieren von Übersetzern oder Compilern verwendet und realisiert, (1) um Programmiersprachen in Befehle umzuwandeln oder zu kompilieren, die so unbelastet wie Microbefehle in groben virtuellen Adreßräumen sind, und (2) um die Befehls- Zykluszeit 50 schnell zu machen, wie es die Technologie zuliebe. Rechner mit solchen optimierten Compilern weisen weniger Befehle auf als solche nach dem stand der Technik, und die wenigen Befehle, die sie haben, sind einfach und können im allgemeinen in einem Zyklus ausgeführt werden. Solche Rechner wurden daher Rechner mit vermindertem Befehlssatz (reduced instruction set computers; RISC) genannt. Befehle, die Teil des verminderten Befehlssatzes in RISC-Maschinen sind und die auf neue Weise eine erhöhte Leistungsfähigkeit schaffen, sind Gegenstand der Erfindung und im folgenden beschrieben.
  • Insbesondere während der Zeit, in der der Rechner ein Programm ausführt, wird ein großer Teil der Ausführungszeit innerhalb von Befehlsschleifen verbracht. Viele dieser Schleifen umfassen den Zugriff auf Feld-Elemente. Eine weitere Befehlart, die einen häufigen Zugriff innerhalb von Schleifen erfordert, ist der Zugriff auf den Stapelspeicher. In jedem Fall erfordern diese Befehlsarten eine Adressenmodifikation der einen oder anderen Art. Da es sich dabei um eine häufige und wiederholt ausgeführte Operation handelt, sollte die Adressenmodifikation effizient durchgeführt werden.
  • Bekannte Maschinen mit vermindertem Befehlssatz verwenden typischerweise einfache, primitive Befehle, um solche Schleifen zu realisieren. Diese primitiven Befehle können jedoch die Anzahl von Befehlen in einer Schleife und dadurch die Ausführungszeit erhöhen. Ein Mechanismus, der ermöglicht, daß Befehle automatisch Felder oder Datensätze entlangwandern und dadurch die Schleifen-Ausführungszeit minimiert, ist hoch wünschenswert.
  • Im Stand der Technik verwendeten die Rechner die Induktions- oder Laufvariable selbst als ein Index zum Installieren eines solchen Mechanismus. Diese Systemart funktioniert jedoch nur, wenn eine Feld-Schrittgröße gleich der Induktions-Schrittgröße ist. Obwohl diese Schwierigkeit durch eine Modifikation gelösten werden kann, bei der Compiler durch Ändern der Laufvariable optimiert werden, treten andere Schwierigkeiten auf, sobald mehr als ein Feld mit einer anderen Schrittgröße in der Schleife verwendet wird. Andere Ansätze zum automatischen Weiterschalten (Stepping) wurden in Auto-Inkrement- und Auto-Dekrement-Betriebsarten gefunden, bei denen ein Basisregister automatisch entweder vor oder nach einer Bezugnahme um eine feste Größe weitergeschaltet wird. In diesem Fall ist die feste Größe für den Schritt im allgemeinen die Größe des adressierten Elementes.
  • Erfindungsgemäß ist ein Rechnersystem vorgegeben, mit
  • A. einem Befehl, der
  • a. ein erstes, ein Basisregister spezifizierendes Feld
  • b. ein zweites, eine Verschiebung spezifizierendes Feld, und
  • c. ein drittes, eine Abänderung einer ausgewählten Adresse spezifizierendes Feld aufweist, und
  • B. einer Vorrichtung zum Durchführen von Operationen nach Maßgabe dieses Befehls,
  • das dadurch gekennzeichnet ist, daß das erste, zweite und das dritte Feld in einem einzigen Befehl zusammengefaßt sind, der für eine Operation innerhalb eines einzelnen Zyklus des Rechnersystems geeignet ist, und
  • die Verschiebung entweder den Wert eines um eine Datengröße verschobenen oder eines unverschobenen Index oder einer um die Datengröße verschobenen Verschiebung hat, wobei die Datengröße durch in diesen einzelnen Befehl eingebettete Felder bestimmt ist.
  • Ein Rechnersystem nach dem Oberbegriff des vorhergehenden Absatzes ist in Electro/80 Conference Record, Boston MA, Mai 1980, Vol. 5 Seite 1-10, "Architectural Issues on the Design of the Intel® 8086 microcomputer system" von A.C. Hartmann angegeben.
  • Die Erfindung betrifft auch ein Verfahren zum Betreiben des oben angegebenen Rechnersystems.
  • Im Sinne der RISC-Philosophie, bei der einfache Operationen eingesetzt werden, die innerhalb eines Maschinenzyklus von relativ einfacher Hardware ausgeführt werden können, ist bei der bevorzugten Ausführungsform des erfindungsgemäßen Rechnersystems nur eine Art einer Speicheradressierung zum Laden und Speichern von Befehlen realisiert. Bei dieser Speicheradressierung wird die Summierung des Wertes eines Basisregisters mit einer Verschiebung zum Bestimmen einer Speicheradresse eingesetzt. Bei der bevorzugten Ausgestaltung kann die Verschiebung in Form von Direktdaten oder als der Wert eines Indexregisters gegeben sein.
  • Bei einer bevorzugten Ausgestaltung wird nur ein Haupt- Operationscode für die Befehle zum Laden-und Speichern von Daten benötigt, unabhängig davon, ob die Verschiebung ein Indexregister-Wert ist oder in Form von Direktdaten vorliegt. Diese Ausführungsform mit einem einzelnen Haupt- OP-Code vereinfacht die Befehle und ermöglicht Flexibilität beim Laden und speichern von Befehlen und Ausführen von diesen Befehlen oder Operationen in einem einzelnen Zyklus. Bei dieser vorteilhaften Ausgestaltung sind die Codes an festen Stellen innerhalb des Befehls eingebaut, um eine direkte Steuerung zu ermöglichen. Im Gegensatz zum Stand der Technik ermöglicht diese Ausgestaltung eine Steuerung ohne weiter umfassende Decodierung.
  • Ein Beispiel der Flexibilität mit nur einem Haupt-OP-Code zum Laden und Speichern von Daten ist die automatische Adressenmodifikation, die zusammen mit der Lade- oder der Speicheroperation durchgeführt wird. Tatsächlich erfordert dieser einzelne Befehl zur automatischen Adressenmodifikation eine solche minimale Decodierung, daß die meisten Vorteile eines Microcode-Befehls erreicht werden.
  • Bei einer anderen Ausgestaltung, beispielsweise mit dem oben beschriebenen- einen Haupt-OP-Code sind Cache-Speicherhinweise in einem festen Feld in den Befehl eingebaut, um Informationen für einen Daten-Cache-Speicher zu liefern. Diese dadurch gegebene, optionale Information kann von einer Cache-Speicher-Steuerung im Cache-Speicher verwendet werden, um Cache-Speicher-Fehlzugriffe zu vermindern, die Speicher-Zirkulation zwischen dem Cache- Speicher und dem Hauptspeicher zu vermindern und zu bestimmen, ob die nächste Cache-Speicherzeile vorausgelesen werden soll. Kurz gesagt, werden diese Cache-Speicherhinweise von den Befehlen vorgesehen, um die Leistungsfähigkeit eines Cache-Speicher-Systems zu verbessern.
  • Im Zusammenhang mit der Erfindung wird ein neuer Ansatz gewählt, um das Problem der langen Schleifen-Ausführungszeit zu lösen. Gemäß dieses Ansatzes wird ein Verfahren zur automatischen Adressenmodifikation geschaffen. Dieses Verfahren ist mit dem Vorgang des Ladens oder Speicherns von Daten in einer Datenstruktur selbst verbunden und kann zum schrittweisen Durchlaufen (Stepping) durch viele Datenstrukturen verwendet werden. Die Schritt-Inkremente sind veränderbar, so daß die Inkremente für verschiedene Datenstrukturen unterschiedlich sind. Bei der bevorzugten Ausgestaltung der Erfindung enthalten alle Speicherbezugsbefehle entweder für das Laden oder für das Speichern von Daten ein Bit, das angibt, ob die Verschiebung ein Register oder ein Literal, also eine Konstante ist, und ein weiteres Bit, das angibt, ob das Basisregister mit der effektiven oder absoluten Adresse aktualisiert werden soll. Wenn dies Verschiebung ein kurzes Literal ist, gibt es ein weiteres Bit, das spezifiziert, ob die zum Zugreifen auf den Speicher verwendete Adresse das vorweg geänderte oder nachträglich geänderte Register ist; ansonsten wird der nachträglich geänderte Wert verwendet. Wenn die Verschiebung ein Register ist, gibt dieses Bit an, ob der Wert des Registers um die Größe der zu ladenden oder zu speichernden Daten verschoben werden soll oder nicht. Dieser Betrieb ermöglicht ein Weiterschalten der Adresse um entweder eine variable Verschiebung in einem Register, um eine Datengröße oder um beides.
  • Bei einer alternativen Ausgestaltung der Erfindung wird die Semantik einer Programmiersprache verwendet, um eine feste, grobe Verschiebung zum Modifizieren einer Adresse zu bewirken. Folglich gibt es auch eine Methode zum Laden oder speichern von Befehlen mit einer langen Verschiebung zur Modifizierung eines Basisregisters. Bei dieser Ausgestaltung ist die Vorweg- oder nachträgliche Modifikation eine Funktion des Vorzeichens der Verschiebung, welche eine Inkrement- oder Dekrement-Schrittrichtung bestimmt. Dieser neue Ansatz, eine Adressenmodifikation zu spezifizieren, verbraucht keine Verschiebungs-Bits. Daraus ergibt sich, daß das Verschiebungs-Feld in dem Befehl eine optimale Länge hat, bei der die meisten der Verschiebungs- Werte untergebracht werden können, ohne daß unbedingt zu einem Extraregister verzweigt werden müßte, welches Verschiebung-Größen enthält, wie beim Stand der Technik.
  • Bei diesen neuen Ausgestaltungen der Erfindung weist der definierte Befehlssatz sowohl absolute als auch variable Schrittgrößen auf, die unabhängig von der Größe der Einheit sind, auf welche zugegriffen wird. Das heißt, die Basisadresse kann entweder durch ein Indexregister oder einen vorzeichenbehafteten Literalwert modifiziert werden. Zusätzlich erlaubt der absolute Schrittmodus, daß das Weiterschalten (Stepping) entweder vor oder nach dem Zugriff geschieht. Die Flexibilität kann beim Anwachsen des Stapelspeichers in beide Richtungen genutzt werden. Da die Schrittgröße nicht an die Größe des Elementes, auf das zugegriffen wird, gebunden ist, kann dieses zum Durchgehen von Datensätzen verwendet werden, selbst wenn auf nur ein Feld des Datensatzes zugegriffen wird. Wenn um eine variable Größe weitergeschaltet wird können ferner sowohl größere Schrittgrößen, die durch ein kleines Literal spezifiziert werden können, als auch eine einfachere Verzweigung zu Offset-Zeigern erreicht werden. Zum Wählen der vorweg oder nachträglich modifizierten Adressen ist bei der bevorzugten Ausgestaltung der Erfindung nur ein zusätzlicher Multiplexer nötig.
  • In den Figuren zeigen:
  • Fig. 1 Befehlssätze nach der Erfindung,
  • Fig. 2 eine Ausgestaltung der Erfindung in Form einer Befehlssequenz für einen Lade- und Speichervorgang mit großer Verschiebung,
  • Fig. 3A-C spezifische Ladebeispiele der Befehlssequenz von Fig. 2; Fig. 3A zeigt LOAD WORD, Fig. 3B zeigt LOAD WORD MODIFY und Fig. 3C zeigt LOAD BYTE,
  • Fig. 4A-C spezifische speicherbeispiele der Befehlssequenz von Fig. 2; Fig. 4A zeigt STORE WORD,
  • Fig. 4B zeigt STORE WORD MODIFY und Fig. 4C zeigt STORE BYTE,
  • Fig. 5 eine Ausgestaltung der Erfindung in Form einer Befehlssequenz für indiziertes Laden,
  • Fig. 6A-B spezifische Beispiele der Befehlssequenz von
  • Fig. 5; Fig. 6A zeigt LOAD WORD INDEXED und
  • Fig. 6B zeigt LOAD BYTE INDEXED,
  • Fig. 7 eine alternative Ausgestaltung der Erfindung in Form einer Befehlssequenz für das Laden und speichern mit kurzer Verschiebung,
  • Fig. 8A-B spezifische Beispiele der Befehlssequenz von
  • Fig. 7; Fig. 8A zeigt LOAD WORD SHORT und Fig. 8B zeigt LOAD BYTE SHORT,
  • Fig. 9A-C spezifische Beispiele der Befehlssequenz von
  • Fig. 7; Fig. 9A zeigt STORE WORD SHORT, Fig. 9B zeigt STORE BYTE SHORT und Fig. 9C zeigt STORE BYTE SHORT,
  • Fig. 10 eine Vorrichtung zur Adressenmodifikation nach der Erfindung und
  • Fig. 11 das Format des Haupt-Operationscodes, welcher die Befehle von Fig. 5 und 7 darstellt.
  • Die Vorrichtung und das Verfahren nach der Erfindung sehen im wesentlichen einen Befehlssatz 110 vor, wie in Fig. 1 gezeigt, um Daten effizient und rasch zu laden und zu speichern. Jeder Befehl ist so aufgebaut, daß er innerhalb eines einzigen Zyklus des Rechnersystems ausgeführt werden kann. Beispiele solcher Befehlssätze sind in Fig. 2, 5 und 7 gezeigt. Beispiele der Befehle sind in den übrigen Figuren gezeigt.
  • Bei einem Befehlssatz für eine weite Verschiebung 210, wie in Fig. 2 gezeigt, ist in der Befehlsfolge ein Feld "d" 212 spezifiziert. Dieses "d"-Feld 212 definiert die Größe der Verschiebung, oder das Imkrement, um die sich ein Zeiger, beispielsweise in einem Register-Stapelspeicher, bewegt. Mit diesem Befehl kann auch eine Adresse modifiziert werden; diese Adressenmodifikation 112 kann beispielsweise durch ein weiteres Feld abgeändert werden, das in die Befehlsfolge 114 eingebaut ist; dieses Feld bestimmt, ob eine solche Modifikation ausgeführt werden soll, bevor die Daten gespeichert oder geladen 116, oder nachdem die Daten gespeichert oder geladen 118 werden. Das Feld entspricht dem Vorzeichen-Bit für das Verschiebungs-Wort 212. Beispiele des Befehlssatzes für die weite Verschiebung sind in Fig. 3A-C für das Laden und in Fig. 4A-C für das Speichern gezeigt. Da das Vorzeichen-Bit schon ein Teil der weiten Verschiebung ist, wird kein zusätzliches oder spezielles Bit benötigt, um diese Vor- oder Nach-Modifikations-Information zu liefern, so daß jedes verfügbare Bit in der Befehls-Zeichenkette (Befehls- String) zum Spezifizieren der Verschiebung verwendet werden kann. Das Endergebnis ist ein Verschiebungs-Spezifizierer, der die meisten benötigten Verschiebungswerte darstellen kann.
  • Bei einem Befehlssatz für indizierte Lade- oder Speichervorgänge 510 geben die Befehle das Laden von Daten mit einer möglichen Adressenmodifikation 120 frei. Wenn die Adressenmodifikation 120 durch ein "m"-Feld 520 spezifiziert ist, kann das Indexregister verschoben werden 122 oder unverschoben bleiben 124. Diese indizierte Verschiebung oder Nicht-Verschiebung 122, 124 wird durch ein "u"- Feld 522 bestimmt. Beispiele dieses Befehlssatzes 510 sind in Fig. 6A-6B gezeigt.
  • Fig. 7 zeigt einen Befehl 710 für einen Lade- oder Speichervorgang mit kleiner Verschiebung. Die Befehlsfolge 710 ist so definiert, daß ein Feld "m" 720 bestimmt, ob eine Adressenmodifikation durchgeführt werden soll. Wenn sie durchgeführt wird, bestimmt ein weiteres, in den Befehl eingebautes Feld 724, ob die Modifikation vor oder nach dem Laden oder Speichern durchgeführt wird. Dadurch wird ein flexibles Verfahren zum selbständigen Handhaben von Daten geschaffen. Beispiele für Befehle dieser Art sind in Fig. 8A-B für einen Ladevorgang mit kurzer Verschiebung und in Fig. 9A-10 für einen Speichervorgang mit kurzer Verschiebung gezeigt.
  • Zum Ausführen einiger dieser Befehle in Übereinstimmung mit der Erfindung müssen vorher bestimmte Vor-Funktionen ausgeführt werden, nämlich,
  • Speicher laden mem load (addr, low, high), und
  • Speicher speichern mem store (addr, low, high, data)
  • Diese Funktionen sind in den folgenden Absätzen erläutert.
  • 1. speicher-Ladeoperation "mem load (addr, low, high)":
  • a) Wenn die virtuelle Speicher-Umsetzung aktiv ist, d. h., wenn das D-Bit des Prozessor-Statuswortes (PSW) "1" ist, ist der durch "mem load" zu ladende Speicher der virtuelle Speicher mit einer Adresse die den Bereich des virtuellen Speichers vom niedrigen Bit "low" zum hohen Bit "high" über den Anfang des Bytes des virtuellen Speichers mit der Adresse "addr" hinaus umfaßt, wobei "addr" eine virtuelle 64-Bit-Adresse ist;
  • b) andernfalls ist der durch "mem load" zu ladende Speicher der reale Speicher mit einer Adresse, die den Bit-Bereich des realen Speichers vom niedrigen Bit "low" zum hohen Bit "high" umfaßt, und zwar über den Anfang des Bytes des realen Speichers hinaus, dessen Adresse die 32 niederwertigen Bits, d. h., vom 32. zum 63. Bit, der Speicher "addr" umfalt.
  • 2. Speicher-Speicheroperation "mem store (addr, low, high, data)": Wenn die virtuelle Speicher-Umsetzung eingeschaltet ist, d. h., wenn das D-Bit des Prozessor- Statuswortes (PSW) "1" ist, wird "data" dem virtuellen Speicher zugeordnet, dessen Adresse den Bit-Bereich des virtuellen Speichers vom niederwertigen Bit "low" zum hochwertigen Bit "high" über den Anfang des Bytes des realen Speichers mit der Adresse "addr" hinaus umfaßt, wobei "addr" eine virtuelle 64-Bit-Adresse ist, und
  • b) ansonsten wird "data" dem realen Speicher zugeordnet, denen Adresse den Bit-Bereich des realen Speichers vom niederwertigen Bit "low" zum hochwertigen Bit "high" umfaßt, über den Anfang des Bytes des realen Speichers hinaus, an dessen Adresse die 32 niederwertigen Bits, d. h., die Bits 32 bis 36, des Speichers "addr" aufweist.
  • Die für einen Befehl 210 in Fig. 1 und 2 gebildete, effektive Adresse ist "eff addr1 (b, d, s, w, m)" und wird wie folgt berechnet:
  • a) wenn d< 0 oder m = 0, dann soll der Wert von
  • "y", dessen "w" niederwertige Bits auf Null gesetzt sind, zurückgegeben und dem "offset", zugeordnet werden, wobei "y" der zu dem Wert von "d" addierte Wert des Universal-Registers "b" ist, wobei die Bits von "d" nach links mit Vorzeichen- Bits auf 32 Bit erweitert sind und das am weitesten rechts liegende Bit das Vorzeichen-Bit ist;
  • b) ansonsten wird der Wert von "y", dessen "w" niederwertige Bits auf Null gesetzt sind, zurückgegeben und "offset" zugeordnet, wobei "y" nur der Wert des Universal-Registers "b" ist;
  • wenn s = 0, dann wird "space" der Wert des Platz (Space)-Registers zugeordnet, dessen Adresse 4 plus die beiden hochwertigen Bits 0,1 des Universal-Registers "b" umfaßt;
  • d) ansonsten wird der Wert des Platz-Registers "s" "space" zugeordnet;
  • e) darauf werden "space" und "offset" verkettet und das Ergebnis "eff addr1" zugeordnet.
  • D. h., bei der bevorzugten Ausgestaltung ist die effektive Platznummer der Inhalt des Platz-Registers "s", wenn "s" nicht Null ist, oder der Inhalt des Platz-Registers dessen Nummer die Summe von 4 und den beiden hochwertigen Bits des Universal-Registers "b" ist, wenn "s" Null ist. Ferner liegt auch die 14-Bit-Byte-Verschiebung d in zweier-Kompliment-Schreibweise vor, wobei das Vorzeichen-Bit ganz rechts liegt.
  • Für solche Befehle, die nicht "lade ein Wort und modifiziere" (LOAD WORD MODIFY) und "speichere ein Wort und modifiziere" (STORE WORD MODIFY) sind, wird ein effektiver Offset "offset" aus der Summe des Inhalts des Universal- Registers "b" und der Vorzeichen-erweiterten Verschiebung "d" bestimmt, wobei die geeignete Anzahl von niederwertigen Bits ignoriert wird. Für Befehle der Art "lade ein Wort und modifiziere" und "speichere ein Wort und modifiziere", hängt der effektive Offset "offset" vom Vorzeichen der Verschiebung "d" ab. Wenn "d" negativ ist, wie durch sein Vorzeichen-Bit angegeben, entspricht der effektive Offset dem Vorzeichen-erweiterten Wert von "d", der zum Universal-Register "b" addiert wird, wobei eine geeignete Anzahl von niederwertigen Bits ignoriert werden. Dieser effektive Offset ist der im Universal-Register "b" gespeicherte Wert (Vor-Dekrement). Wenn "d" nicht negativ ist, ist der effektive Offset der ursprüngliche Inhalt des Universal-Registers "b", wobei eine geeignete Anzahl von niederwertigen Bits ignoriert wird. Die Summe aus dem Inhalt des Universal-Registers "b" und dem Vorzeichen behafteten Wert von "d" wird im Universal-Register "b" gespeichert (Nach-Inkrement).
  • Als ein Beispiel einer Realisierung der Erfindung werden Operationscodes 214 oder Op-Codes, für Lade- und Speicherbefehle 210 mit weiter Verschiebung verwendet. Diese Op- Codes 214 spezifizieren die bestimmte, auszuführende Datenübertragung; sie spezifizieren auch, ob eine Adressenmodifikation ausgeführt werden soll. Diese Op-Codes haben allgemein das in Fig. 2 gezeigte Format, nämlich,
  • op / b / t / s / d,
  • wobei
  • - op ein 6-Bit-Feld 214 ist, das den Operations-Code spezifiziert, z. B. Laden oder Speichern, Adressenmodifikation oder keine Adressenmodifikation und Datengröße (Wort, Halbwort oder Byte),
  • - b ein 5-Bit-Feld 216 ist, das das Quellen-Register identifiziert,
  • - t ein 5-Bit-Feld 218 ist, das das Ziel-Register identifiziert,
  • - s ein 2-Bit-Feld 220 ist, das ein Platz-Register spezifiziert und
  • - d ein 14-Bit-Feld 212 ist, das eine Verschiebung spezifiziert.
  • Ein erstes Beispiel ist ein Befehl zum Laden eines Wortes in ein Universal-Register
  • LDW d(s, b), t
  • und hat das spezifische, in Fig. 3A gezeigte Format, nämlich
  • 12 / b / t / s / d,
  • wobei 12 der 6-Bit-Op-Code 314 für den Befehl "lade Wort" oder LOAD WORD (LDW) ist.
  • Der Befehl LDW 310 berechnet am Anfang eine effektive Adresse "eff addr1" und lädt dann das zugeordnete Wort bei dieser Adresse in das Universal-Register "t". Diese Operation wird insbesondere wie folgt durchgeführt:
  • 1. Während des ersten Zyklus, T:
  • "eff addr1 (b, d, s, 2, 0)" wird "addr" zugeordnet und
  • 2. Während des zweiten Zyklus, T + 1:
  • "mem load (addr, 0,31)" wird dem Universal-Register "t" zugeordnet, wobei "eff addr1" und "mem load" oben beschrieben sind.
  • Ein zweites Beispiel ist der Befehl zum Laden eines Wortes in einem Universal-Register und darauf Durchführen einer Adressenmodifikation:
  • LDWM d (s, b), t
  • mit dem spezifischen, in Fig. 3B gezeigten Format, nämlich
  • 13 / b / t / s / d,
  • wobei 13 der 6-Bit-Op-Code 316 für den Befehl "lade Wort und modifiziere" LOAD WORD and MODIFY (LDWM) ist.
  • Dieser Befehl 311 berechnet eine effektive Adresse "eff addr1" und lädt das durch die Adresse bestimmte Wort in das Universal-Register "t". Der Inhalt des Universal- Registers "b" wird um den Absolutwert der Verschiebung "d" 318 entweder vor-dekrementiert oder nach-inkrementiert, abhängig vom Vorzeichen der Verschiebung "d" 318. Die Funktion des Befehls 311 ist wie folgt
  • 1. Während des ersten Zyklus, T:
  • a) "eff addr1 (b, d, s , 2, 1)" wird "addr" zugeordnet und
  • b) die Summe des Inhaltes des Universal-Registers "b" und des Wertes, der sich ergibt, wenn das niederwertige Bit von "d" 318 entfernt wird und der Rest auf der linken Seite mit Vorzeichen-Bits auf eine 32-Bit-Größe erweitert wird, wobei das entfernte Bit als das Vorzeichen-Bit genommen wird, wird dem Universal-Register
  • "b" zugeordnet.
  • 2. Während des zweiten Zyklus, T + 1:
  • "mem load (addr, 0, 31)" wird dem Universal-Register
  • "t" zugeordnet.
  • Als ein drittes Beispiel ist der Befehl zum Speichern eines Wortes vom Universal-Register angegeben
  • STW t, d (s, b)
  • mit dem spezifischen, in Fig. 4A gezeigten Format, nämlich
  • 1A / b / t / s / d,
  • wobei 1A der 6-Bit-Op-Code 412 für den Befehl "speichere Wort" oder STORE WORD (STW) 410 ist. Insbesondere berechnet der Befehl 410 zunächst eine effektive Adresse "eff addr1" und speichert den Inhalt des Universal-Registers "t" in dem zugeordneten Wort bei dieser Adresse. Bei Betrieb läuft der Befehl 410 wie folgt ab:
  • während des ersten Zyklus, T wird:
  • a) der Inhalt der effektiven Adresse "eff addr1 (b, d, s, 2, 0)" "addr" zugeordnet und
  • b) ein Speichervorgang, wie oben beschrieben, mit
  • "mem store (addr,0,31, GR[t]0]" durchgeführt, wobei GR[t] das Universal-Register "t" ist.
  • Eine alternative Ausgestaltung der Erfindung ist der Befehl für indiziertes Laden 510 in Fig. 5 und der Befehl für Laden und Speichern mit kurzen Verschiebungen 710 von Fig. 7. Das allgemeine Format eines indizierten Lade- Befehls ist in Fig. 5 gezeigt, nämlich
  • 03 / b / x / s / u / o / cc / e / m / t
  • und das für Laden und speichern mit kurzer Verschiebung ist in Fig. 7 gezeigt, nämlich
  • 03 / b / f / s / a / 1 / cc / e / m / f',
  • wobei
  • - 03 ein 6-Bit-Feld-Code 512, 712 zum Spezifizieren der momentanen Lade- oder Speicheroperation ist,
  • - b ein 5-Bit-Feld 514, 714 zum Identifizieren eines Quellen-Registers "b" ist,
  • - x ein 5-Bit-Feld 516 zum Identifizieren eines Quellen- Registers "x" ist,
  • - f ein 5-Bit-Feld 716 ist, das bei Ladebefehlen ein Vorzeichen behaftetes Direktfeld und bei Speicherbefehlen ein Quellen-Register identifiziert,
  • - s ein 2-Bit-Feld 518, 718 zum Identifizieren eines Platz-Registers "s" ist,
  • - u ein 1-Bit-Spezifizierer 522 ist, wobei eine "0" ein Index-Register angibt und eine "1" ein um die Datengröße verschobenes Index-Register angibt, d. h., der Index- Wert wird mit der Größe des zu ladenden Datenwortes multipliziert,
  • - a ein Vormodifizier- oder Nachmodifizier-Bit 724 ist, wobei immer dann, wenn das Modifikations-Bit 520, 720 m = 1 ist, "0" eine Modifikation nach der Datenbewegung und "1" eine Modifikation vor der Datenbewegung bezeichnet, - cc ein 2-Bit-Feld 526, 726 ist, das als Cache-Speicher- Steuer-Bits verwendet wird,
  • - e ein 4-Bit-Feld 528, 728 zum Spezifizieren einer Operationscode-Erweiterung ist,
  • - in ein Modifizierungs-Bit 520, 720 ist,
  • - t ein 5-Bit-Feld 530 ist, das bei Speicherbefehlen ein Quellen-Register "t" und bei Ladebefehlen ein Ziel- Register "t" kennzeichnet, und
  • - f' ein 5-Bit-Feld 730 ist, das bei Ladebefehlen ein Ziel-Register und bei Speicherbefehlen ein Direktfeld kennzeichnet.
  • Die Formate in Fig. 5 und 7 sind bis auffolgende Ausnahmen identisch: "x"/"f"-, "a"/"u"- und "0"/"1"-Paare. Sie haben einen gemeinsamen Op-Code von "03". Die "x" - und "f"-Felder können beide durch ein "F" repräsentiert werden, ein 5-Bit-Feld, das ein Direktdatum oder ein Register kennzeichnet. Ähnlich können die anderen Paare durch ein "U" -Feld und ein "L"-Feld dargestellt werden; diese Felder sind weiter unten beschrieben. Die übrigen Felder kennzeichnen zusammen mit diesen Feldern die verschiedenen Operationen innerhalb des Haupt-Operations-Codes. Das Ergebnis ist, wie in Fig. 11 gezeigt, ein Haupt-Operations-Code 1110, der die Befehle in beiden Fig. 5 und 7 verkörpert. Das "e"-Feld von Fig. 11 ist mit weiteren Einzelheiten beschrieben.
  • Das Format des in Fig. 11 gezeigten Haupt-Befehles ist hier wiedergegeben:
  • 03 / b / F / s / U / L / cc / D / E / S / m / T,
  • wobei
  • - F ein 5-Bit-Verschiebungs-Feld 1114 ist, das wie oben entweder "x" 516 oder "f" 716 darstellt,
  • - U ein 5-Bit-Feld 1116 ist, das wie oben entweder "u" 522 oder "a" 724 darstellt,
  • - L ein 1-Bit-Literal 1118 ist, wobei eine "1" die Verwendung eines Direkt-Datums als Verschiebung und eine "0" die Verwendung des Wertes eines Index-Registers als Verschiebung bezeichnet, - D ein 1-Bit-Feld 1120 ist, wobei eine "1" einen Speichervorgang und eine "0" einen Ladevorgang kennzeichnet, - E ein 1-Bit-Feld 1122 zum Kennzeichnen von speziellen Operationen ist, beispielsweise Speichern eines Bytes oder Speichern mehrerer Bytes,
  • - S ein 2-Bit-Feld 1124 zum Kennzeichnen einer Datengröße ist, d. h., "00" bedeutet keine Verschiebung oder Byte, "01" bedeutet Verschiebung um 1 oder Halbwort, "10" bedeutet Verschiebung um 1 oder Wort, und "11" bedeutet Verschiebung um 3 oder Doppelwort,
  • - T ein 5-Bit-Feld 1126 ist, das wie oben "t" 530 oder "f'" 730 darstellt, und
  • - "b", "s", "cc" und "m" wie oben definiert sind.
  • Bei diesem Format stellt die Verkettung 1112 der Felder "D", "E" und "S" das vorher beschriebene 4-Bit-Feld "e" 528, 728 für die code-Erweiterung dar.
  • Die Cache-Speicher-Steuer-Bits "cc" 526, 726 in dem Befehl nach der Erfindung schaffen einen besonderen Vorteil für Rechnersysteme mit einem Cache-Speicher. Dieses "cc"- Feld, das in den Befehl eingebaut ist, liefert Cache- Speicher-Hinweise für den Cache-Speicher. Diese Cache- Speicher-Hinweise sind Informationen, die zum Kennzeichnen der Datenstruktur, auf die durch den Datenlade- oder Datenspeicherbefehl zugegriffen wird, kodiert sind, beispielsweise STACK POP für Laden, STACK PUSH für Speichern, SEQUENTIAL READ für Laden und SEQUENTIAL WRITE für speichern. Diese optionalen Informationen können von einer Cache-Speicher-Steuereinrichtung verwendet werden, um Cache-Speicher-Fehlzugriffe zu vermindern, den Speicher- Austauschsverkehr zwischen dem Cache-Speicher und dem Hauptspeicher zu vermindern, zu bestimmen, ob die nächste Cache-Speicher-Zeile im voraus gelesen werden soll, und andere Befehle zu liefern, die die Leistungsfähigkeit des Cache-Speichers verbessern.
  • Wenn in einem indizierten Ladebefehl eine Adressenmodifikation spezifiziert ist, wird ein effektiver Offset "offset" als der Inhalt des Universal-Registers "b" in einem Nach-Modifizierungszustand definiert. Die Adressenmodifikation führt zum Ersetzen des Inhalts des Universal- Registers "b" durch die Summe aus dem Indexwert, möglicherweise um die Datengröße verschoben, und dem vorherigen Inhalt des Universal-Registers "b". Diese Operation ist durch die folgenden zwei Routinen gegeben:
  • 1. Für den Indexewert "ind val (x, sh, u)" wird die folgende Operation durchgeführt:
  • a) wenn u = 0, dann wird der Wert des Universal-Registers "x" "ind val" zugeordnet, b) ansonsten wird der Wert des Universal-Registers "x", um "sh" nach links verschoben, "ind val" zugeordnet.
  • 2. Zum Berechnen von "eff addr2 (b, s, x, m, u, sh)", einer effektiven Adresse, wird die folgende Operation durchgeführt:
  • a) wenn m = 1, dann wird der Wert des Universal-Registers "b", dessen "sh" niederwertigen Bits auf Null gesetzt sind, dem effektiven Offset "offset" zugeordnet, b) ansonsten wird die Summe des Wertes des Universal- Registers "b" und "ind val (x, sh, u)", wie oben definiert, dessen "sh" niederwertigen Bits auf Null gesetzt sind, dem effektiven Offset "offset" zugeordnet, und
  • c) wenn s = 0, dann wird der Wert des Platz-Registers, dessen Adresse den Wert der ersten zwei hochwertigen Bits "0" und "1" des Universal-Registers "b" plus 4
  • umfaßt, einem Platz-Register "space" zugeordnet, d) andernfalls wird der Inhalt des Platz-Registers "s" einem Platz-Register "space" zugeordnet, und
  • e) die Verknüpfung der Werte von "space" und "offset" wird der effektiven Adresse "eff addr2" zugeordnet.
  • Als ein erstes Beispiel ist der Befehl zum Laden eines Indexwortes 610 gegeben:
  • LDWX, u, m, cc x (s, b), t
  • der das in Fig. 6A gezeigten Format hat, nämlich
  • 03 / b / x / s / u / o / cc / 2 / m / t,
  • wobei 03 der Op-Code 612 für die Operation "Lade Indexwort" oder LOAD WORD INDEXED (LDWX) ist. Die Operation läuft wie folgt ab:
  • 1. Während des ersten Zyklus, T:
  • a) Die effektive Adresse "eff addr2 (b, s, x, m, u, 2)" wird einer Adresse "addr" zugeordnet und
  • b) der Wert des Universal-Registers "b" addiert zum Index- Wert "ind val (x, 2, u)" ersetzt den ursprünglichen Wert im Universal-Register "b".
  • 2. Während des zweiten Zyklus, T + 1:
  • der Inhalt des Lade-Speicher-Befehls "mem load (addr, 0,31)", wie oben beschrieben, wird dem Universal- Register "t" zugeordnet.
  • Ein zweites Beispiel ist der Befehl zum speichern eines kurzen Wortes (STORE WORD SHORT) 910
  • STWS, m, a, cc t, i (s, b)
  • und hat das in Fig. 9A gezeigte Format, nämlich
  • 03 / b / t / s / a / 1 / cc / A / m / i,
  • wobei die Felder so wie beim allgemeinen Format beschrieben sind, und es gilt:
  • 03 ist ein 6-Bit-Feld 912, das den Operations- Code für STORE WORD SHORT kennzeichnet, und A ist ein 4-Bit-Feld 914, das eine Operations- Code-Erweiterung kennzeichnet.
  • Dieser Befehl 910 berechnet eine effektive Adresse "eff addr3", und der Wert des Universal-Registers "t" wird in dem zugeordneten Word bei der Adresse gespeichert, insbesondere heißt das:
  • 1. Während des Zyklus T:
  • a) Die effektive Adresse "eff addr3 (b, i, s, a, m, 2)" wird analog zur vorherigen Berechnung für "eff addr2
  • (b, s, x, m, u, sh)" berechnet, und deren Wert wird einer Adresse "addr" zugeordnet, b) wenn das Modifikations-Bit 916 m = 1, d. h., wenn
  • "Modifizieren" spezifiziert ist, wird der Wert des Universal-Registers "b" zu "low sign ext(i)" addiert, welcher analog zu den vorherigen Beispielen berechnet wird, und die Summe wird dem Universal-Register "b" zugeordnet) d. h., der ursprüngliche Wert des Univer sal-Registers "b" wird durch die Summe ersetzt; und
  • 2. Während des zweiten Zyklus, T + 1,
  • wird die oben beschriebene Operation "mem store (addr,0,31,GR[t])" durchgeführt.
  • Bei allen oben angegebenen Beispielen, in einem Pipeline- Rechner-System, kann der erste Zyklus T eines nachfolgenden Lade- oder Speicherbefehls (LOAD, STORE) gleichzeitig mit dem zweiten Zyklus (T + 1) eines momentanen Lade- oder Speicherbefehls durchgeführt werden, so daß die effektive Ausführungszeit für einen Lade- oder Speicherbefehl ein Zyklus bleibt.
  • Fig. 10 zeigt eine Vorrichtung gemäß einer bevorzugten Ausführungsform zum Implementieren eines Lade- oder Speicherbefehls mit einem Code für eine Adressenmodifikation. Demgemäß werden Werte eines Basis-Registers "b" (nicht gezeigt) und eines Index-Registers "x" (nicht gezeigt) auf einen "b" Register-Bus 1012 bzw. einen Index-Register- Bus 1014 von einer Universal-Register-Datei 1010 gelesen. Der Index-Register-Bus 1014 ist mit einem 4-zu-1-Multiplexer 1016 verbunden; er ist ferner über ein Schiebe- Register oder als ein verschobener Wert 1018 mit dem Multiplexer 1016 verbunden. Ebenfalls mit dem Multiplexer 1016 verbunden sind Werte 1022, 1024 von einem Befehls- Register 1020. Diese Werte 1022, 1024 stellen weite und kurze Verschiebungen daß, die bei dem Lade- oder Speicherbefehl realisiert werden sollen. Der "b"-Wert auf dem "b"-Bus 1012 und der Ausgang 1026 des Multiplexers 1016 sind mit einer Arithmetisch-Logischen Einheit (ALU) 1028 verbunden, wobei die Erzeugung der Adressen abhängig von den beiden Eingängen 1012 und 1026 durchgeführt wird. Das Ergebnis 1013 von der ALU 1028 wird für die Adressenmodifikation genutzt, indem es über ein optionales Pipeline-Register 1032 auf einem Ergebnis-Bus 1034 zurück zur Universal-Register-Datei 1010 gekoppelt wird, wobei die erzeugte modifizierte Adresse dem Basis-Register (nicht gezeigt) zugeordnet wird. Die Register im Universal-Register 1010 werden über einen Adressen-Decoder 1036 adressiert, der auf Eingaben vom Befehls-Register 1020 anspricht. Der Ausgang 1030 der ALU 1028 ist ferner mit einem Cache-Speicher 1038 über einen 2-zu-2-Multiplexer 1040 und ein optionales Pipeline-Register 1042 verbunden. Die Eingänge des 2-zu-1-Multiplexers 1040 sind der "b"- Registerwert 1012 und die modifizierte Adresse 1030. Durch den Ausgang 1048 des 2-zu-1-Multiplexers 1040 adressierte Daten 1046 im Cache-Speicher 1038 und Daten 1050 von der Universal-Register-Datei 1010 werden in die Universal-Register-Datei 1010 bzw. in den Cache-Speicher 1038 geladen. Der 2-zu-1-Multiplexer 1040 spricht auf einen Vor- oder Nach-Modifikations-Spezifizierer an, und der 4-zu-1-Multiplexer 1016 spricht auf einen Verschiebungs-Spezifizierer an. Die in Fig. 10 gezeigten Hardware- Bauteile sind bei allen Rechnersystemen üblich; zum Realisieren des Befehls zum Laden und Speichern von Daten mit der Adressenmodifikation sind keine speziellen oder zusätzlichen Hardware-Bauteile nötig, um einen hocheffizienten und sehr einfach Ein-Zyklus-Betrieb zu Befehles zu ermöglichen.

Claims (9)

1. Rechnersystem mit
A. einem Befehl,der
a. ein erstes, ein Basisregister spezifizierendes Feld (b)
b. ein zweites, eine Verschiebung spezifizierendes Feld (d), und
c. ein drittes, eine Abänderung einer ausgewählten Adresse spezifizierendes Feld (m) aufweist, und
B. einer Vorrichtung zum Durchführen von Operationen nach Maßgabe dieses Befehles, dadurch gekennzeichnet, daß das erste, zweite und das dritte Feld in einem einzigen Befehl zusammengefaßt sind, der für eine Operation innerhalb eines einzelnen Zyklus des Rechnersystems geeignet ist, und die Verschiebung entweder den Wert eines um eine Datengröße verschobenen oder eines unverschobenen Index (u) oder einer um die Datengröße verschobenen Verschiebung hat, wobei die Datengröße durch in diesen einzelnen Befehl eingebettete Felder bestimmt ist.
2. System nach Anspruch 1, bei dem der Befehl ein viertes Feld (116,118) aufweist, das ebenfalls einen Teil des einzelnen Befehles bildet und die Abänderung einer ausgewählten Adresse vor oder nach einer ausgewählten Operation spezifiziert.
3. System nach Anspruch 2, bei dem das vierte Feld, das Vorzeichenbit des zweiten Feldes ist.
4. System nach Anspruch 3, bei dem das vierte Feld aus einem einzelnen Bit besteht.
5. System nach einem der Ansprüche 1 bis 4, bei dem das zweite Feld (d) ein Feld zum Spezifizieren von Direktdaten ist.
6. Verfahren zur Übertragung von Daten zwischen einem ersten und einem zweiten Speicher in einem Rechensystem, bei dem ein Befehl vorgesehen wird, der
a. ein erstes Feld (b) zum Spezifizieren eines Basisregisters
b. ein zweites Feld (d) zum Spezifizieren einer Verschiebung und
c. ein drittes Feld (m) zum spezifizieren einer Abänderung einer ausgewählten Adresse aufweist, und bei dem Operationen nach Maßgabe dieses Befehles durchgeführt werden, dadurch gekennzeichnet, daß das erste, das zweite und das dritte Feld in einem einzigen Befehl zusammengefaßt werden, der für eine Operation innerhalb eines einzelnen Zyklus des Rechnersystems geeignet ist, und die Verschiebung entweder den Wert eines um eine Datengröße verschobenen oder eines unverschobenen Index (u) oder einer um eine Datengröße verschobenen Verschiebung annimmt, wobei die Datengröße durch in dem einzelnen Befehl eingebettete Felder bestimmt wird.
7. Verfahren nach Anspruch 6, bei dem eine Basisadresse und eine Verschiebung eines Befehls innerhalb eines Zyklus des Rechnersystems lokalisiert werden, aus dem Befehl innerhalb dieses Zyklus des Rechnersystems ein ausgewähltes Verfahren unter einer Vielzahl von Verfahren identifiziert wird, um eine Adresse für den ersten Speicher zu bilden, aus einem Vorzeichenbit der Verschiebung bestimmt wird, wann die Basisadresse durch die Verschiebung erhöht werden wird,
nach Maßgabe des Befehls innerhalb dieses Zyklus des Rechnersystems die Adresse gebildet wird und Daten zwischen dem zweiten Speicher und der Adresse des zweiten Speichers innerhalb dieses Zyklus des Rechnersystems übertragen werden.
8. Verfahren nach Anspruch 6, bei dem eine Basisadresse und ein Indexregister von einem Befehl innerhalb eines Zyklus des Rechnersystems lokalisiert werden,
aus diesem Befehl innerhalb dieses Zyklus des Rechnersystems herausgefunden wird, ein wie großer Anteil des Inhalts des Indexregisters verschoben wird, der Inhalt des Indexsregisters nach Maßgabe des Befehles innerhalb dieses Zyklus des Rechnersystems verschoben wird,
aus dem Befehl innerhalb dieses Zyklus des Rechnersystems bestimmt wird, wann der Inhalt des Basisregisters um den Inhalt des verschobenen Indexregisters erhöht werden wird,
eine Adresse für den ersten Speicher nach Maßgabe des Befehles innerhalb dieses Zyklus des Rechnersystems gebildet wird, indem der Inhalt des Indexregisters zu der Basisadresse addiert wird, der Inhalt des Basisregisters innerhalb dieses Zyklus des Rechnersystems nach Maßgabe des Befehls erhöht wird und Daten zwischen dem zweiten Speicher und der Adresse des ersten Speichers innerhalb dieses Zyklus des Rechnersystems übertragen werden.
9. Verfahren nach Anspruch 6, bei dem eine Basisadresse, eine Verschiebung und eine Datengröße von einem Befehl innerhalb eines Zyklus des Rechnersystems ermittelt werden,
die Verschiebung um die Datengröße nach Maßgabe des Befehles innerhalb dieses Zyklus des Rechnersystems verschoben wird,
aus dem Befehl innerhalb dieses Zyklus des Rechnersystems festgestellt wird, wann das Basisregister um die verschobene Verschiebung erhöht wird,
eine Adresse für den ersten Speicher gebildet wird, indem die verschobene Verschiebung innerhalb dieses Zyklus des Rechnersystems zum Inhalt des Basisregisters addiert wird,
der Inhalt des Basisregisters nach Maßgabe des Befehls innerhalb dieses Zyklus des Rechnersystems erhöht wird und
die Daten zwischen dem zweiten Speicher und der Adresse des ersten Speichers innerhalb dieses Zyklus des Rechnersystems übertragen werden.
DE19863686984 1985-06-28 1986-06-12 Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz. Expired - Fee Related DE3686984T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US75081085A 1985-06-28 1985-06-28

Publications (2)

Publication Number Publication Date
DE3686984D1 DE3686984D1 (de) 1992-11-26
DE3686984T2 true DE3686984T2 (de) 1993-03-11

Family

ID=25019262

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19863686984 Expired - Fee Related DE3686984T2 (de) 1985-06-28 1986-06-12 Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.

Country Status (4)

Country Link
EP (1) EP0206653B1 (de)
JP (1) JPS623334A (de)
CA (1) CA1273435A (de)
DE (1) DE3686984T2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69315630T2 (de) * 1992-07-23 1998-07-16 Rockwell International Corp Datenzugriff in einem RISC-Digitalsignalprozessor
WO1997031310A1 (en) * 1996-02-23 1997-08-28 Advanced Micro Devices, Inc. A microprocessor configured to execute instructions which specify increment of a source operand
DE69839910D1 (de) * 1998-10-06 2008-10-02 Texas Instruments Inc Verfahren und Vorrichtung zur iterativen Befehlsausführung
US6990570B2 (en) 1998-10-06 2006-01-24 Texas Instruments Incorporated Processor with a computer repeat instruction
US7103754B2 (en) 2003-03-28 2006-09-05 International Business Machines Corporation Computer instructions for having extended signed displacement fields for finding instruction operands
US7356710B2 (en) * 2003-05-12 2008-04-08 International Business Machines Corporation Security message authentication control instruction
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US9241735B2 (en) 2003-12-05 2016-01-26 Onset Medical Corporation Expandable percutaneous sheath
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control

Also Published As

Publication number Publication date
EP0206653A3 (en) 1988-10-26
JPS623334A (ja) 1987-01-09
CA1273435A (en) 1990-08-28
DE3686984D1 (de) 1992-11-26
EP0206653B1 (de) 1992-10-21
EP0206653A2 (de) 1986-12-30

Similar Documents

Publication Publication Date Title
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE3485929T2 (de) Bedingungsregisterarchitektur fuer eine maschine mit primitivem befehlssatz.
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69729974T2 (de) Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung
DE3851746T2 (de) Sprungvorhersage.
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE10297581T5 (de) Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE3686984T2 (de) Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE3856139T2 (de) Mikroprozessor
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE3650006T2 (de) Verfahren und Mittel zum Transportieren von Bytes in einem Rechner mit reduziertem Befehlssatz.

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