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
Links
- 238000000034 method Methods 0.000 title claims description 16
- 238000012986 modification Methods 0.000 claims description 35
- 230000004048 modification Effects 0.000 claims description 31
- 238000006073 displacement reaction Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006698 induction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 208000036920 Stüve-Wiedemann syndrome 1 Diseases 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand 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.
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)
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 |
-
1986
- 1986-06-12 EP EP19860304493 patent/EP0206653B1/de not_active Expired
- 1986-06-12 DE DE19863686984 patent/DE3686984T2/de not_active Expired - Fee Related
- 1986-06-20 JP JP61144654A patent/JPS623334A/ja active Pending
- 1986-06-27 CA CA000512684A patent/CA1273435A/en not_active Expired
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 |