DE69534113T2 - Kompression der Befehlswörter eines Rechners - Google Patents

Kompression der Befehlswörter eines Rechners Download PDF

Info

Publication number
DE69534113T2
DE69534113T2 DE69534113T DE69534113T DE69534113T2 DE 69534113 T2 DE69534113 T2 DE 69534113T2 DE 69534113 T DE69534113 T DE 69534113T DE 69534113 T DE69534113 T DE 69534113T DE 69534113 T2 DE69534113 T2 DE 69534113T2
Authority
DE
Germany
Prior art keywords
instruction
bus
instructions
command
value
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
DE69534113T
Other languages
English (en)
Other versions
DE69534113D1 (de
Inventor
Michael David Clifton May
Nathan Mackenzie St. Werburghs Sidwell
Andrew Craig Montpelier Sturges
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.)
STMicroelectronics Ltd Great Britain
Original Assignee
STMicroelectronics Ltd Great Britain
SGS Thomson Microelectronics Ltd
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 STMicroelectronics Ltd Great Britain, SGS Thomson Microelectronics Ltd filed Critical STMicroelectronics Ltd Great Britain
Application granted granted Critical
Publication of DE69534113D1 publication Critical patent/DE69534113D1/de
Publication of DE69534113T2 publication Critical patent/DE69534113T2/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

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

Description

  • Die Erfindung betrifft komprimierte Befehle für ein Computersystem und Verfahren zur Verwendung eines Computersystems mit komprimierten Befehlen.
  • Die Art und Weise, in der Computerbefehle codiert werden, ist wichtig, da sie die Bitlänge von Befehlen und dadurch die Codedichte sowie die Geschwindigkeit der Decodierung der Befehle während einer Ausführungssequenz für die Befehle beeinflusst. Sie beeinflusst auch die zum Abrufen der Befehle erforderliche Speicherzugriffszeit.
  • Übliche Operationen von einem Prozessor in einem Computersystem erfordern die Identifikation von einer oder mehreren Datenquellen, um eine Eingabe in den Prozessor zu bilden, sowie ein Ziel zum Empfangen des Ergebnisses des Betriebs des Prozessors. Herkömmliche Computer mit verringertem Befehlssatz (RISC-Vorrichtungen) haben Befehle verwendet, die alle eine gemeinsame Bitlänge und ein gemeinsames Format aufweisen, die sowohl die vom Prozessor auszuführende Operation als auch die Identifikation von zwei Datenquellen zur Verwendung bei der Operation sowie ein Ziel für das Ergebnis der Operation definieren. Solche Befehle wurden verwendet, um Daten zu verarbeiten, die in adressierbaren Speicherstellen wie z. B. Registern oder einem Speicher zu finden sind. Solche Befehle mit derselben Größe haben gewöhnlich eine geringe Veränderung im Format und vereinfachen folglich die Decodieroperation. Wenn jedoch ein Prozessor in einem Pipelinebetrieb verwendet wird, um eine Abfolge von Befehlen auszuführen, kann es erforderlich sein, eine Vielzahl von aktiven Datenelementen zu halten, die für anschließende Befehle zugänglich sind, und dies erfordert, dass eine ausreichende Anzahl von adressierbaren Stellen durch einen Befehl identifiziert wird, was ihm eine Grenze für die Kürze der Befehle, die verwendet werden kann, auferlegt. Ferner kann eine Anzahl von Befehlen nicht notwendigerweise den vollen Bereich von Registeradressen erfordern, die von einem einzelnen Befehl bearbeitet werden können, und folglich können die Befehle mit fester Länge die Bitlänge eines Befehls unnötig erhöhen. Dies bedeutet, dass die zum Halten einer Befehlssequenz erforderliche Speicherkapazität sowie die zum Erhalten einer Sequenz von Befehlen erforderliche Speicherzugriffszeit unnötig erhöht werden können.
  • Andere Systeme mit komplexen Befehlen sind bekannt (CISC-Vorrichtungen). Lange Befehle haben die Möglichkeit zum Identifizieren der Adressen von mehr Datenspeichern bereitgestellt, die zum Halten von aktiven Daten während der Pipelineverarbeitung einer Befehlssequenz verwendet werden. Solche langen Befehle haben jedoch eine höhere Zugriffszeit beim Erhalten der Befehle vom Speicher erfordert und können eine umfangreichere Decodierung mit sich bringen, die mehr Operationszyklen benötigt, um eine Decodierung jedes Befehls zu erreichen.
  • Es wird auf EP-A-0380849 Bezug genommen, das die Vorverarbeitung von impliziten Spezifikatoren in einem Pipelineprozessor betrifft. Ein Befehlsdecodierer erzeugt implizite Spezifikatoren für bestimmte vordefinierte Befehle und eine Operandenverarbeitungseinheit vorverarbeitet die meisten impliziten Spezifikatoren in derselben Weise wie ausdrückliche Operandenspezifikatoren. Die Verwendung von impliziten Spezifikatoren verringert die Anzahl von Bytes, die für einen Befehl erforderlich sind. In diesem Fall wird ein impliziter Spezifikator im Funktionsoperationscode des Befehls codiert oder aus diesem impliziert und wird auf gewisse vorbestimmte Arten eines Befehls wie z. B. einen "PUSH"-Befehl eingeschränkt.
  • Es wird auch auf EP-A-0073424 Bezug genommen, das die Ausführung von Befehlen mit variabler Länge betrifft. In diesem Fall kann ein Operandenspezifikator gemeinsam genutzt werden, indem ein Stopbitkennzeichen in einem Befehl hinzugefügt wird. Das Stopbitkennzeichen ermöglicht, dass ein spezifizierter Operand wiederholt verwendet wird, bis die Anzahl von Operanden, die vom Operationscode eines speziellen Befehls ermittelt wird, erreicht ist.
  • Es ist eine Aufgabe der Erfindung, eine allgemeinere Anwendung für implizite Spezifikatoren zu schaffen.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Computersystem mit einer logischen Schaltung geschaffen, die angeordnet ist, um auf einen Befehlssatz zu antworten, der aufweist, mehrere Befehle mit unterschiedlicher Bitlänge, wobei jeder der mehreren Befehle auf einem grundlegenden nicht komprimierten Format von verschiedener Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern, jedes von einer jeweiligen vorbestimmten Bitlänge, basiert, wobei die logische Schaltung einen Ausgang zur Verfügung stellt, wodurch das Computersystem auf einen Befehl des Befehlssatzes antwortet, der ein ausgewähltes der Befehlsfelder, das einen Wert enthält, weglässt, wobei der Befehl Steuerbits ent hält, wobei die Steuerbits eine Länge des Befehls anzeigen, und welches Befehlsfeld weggelassen wird, wodurch die Bitlänge des Befehls komprimiert wird, wobei die logische Schaltung eine Speicherschaltung und eine Auswählschaltung aufweist, wobei die Speicherschaltung eine Information hält, die einen impliziten Speicherplatz benennt, und wobei die Auswählschaltung betreibbar ist, um die Information in Reaktion auf die Steuerbits auszuwählen und die Information als den Wert zuzuführen.
  • Das Weglassen irgendeines ausgewählten Feldes benennt einen impliziten Speicherplatz, der keine Adressendaten im Befehl erfordert, und die logische Schaltung ist angeordnet, um auf den impliziten Speicherplatz als Reaktion auf das Weglassen des oder jedes weggelassenen Feldes zuzugreifen. Vorzugsweise umfasst der implizite Speicherplatz einen ersten First-in-first-out-Datenspeicher, der angeordnet ist, um gleichzeitig mehrere Datenwerte zu halten. In dieser Weise können mehrere aktive Datenwerte während der Operation der Abfolge von Befehlen gehalten werden, ohne die Anzahl von Adressenbits, die in jedem Befehl vorgesehen sind, zu erhöhen.
  • Üblicherweise sehen die Befehlsfelder in dem Format mit vorbestimmter Bitlänge Angaben von zwei Datenquellenstellen und einer Datenzielstelle vor, wodurch die Datenquelle zur Verwendung bei der Ausführung des Befehls und das Ziel eines Ergebnisses der Ausführung des Befehls angegeben werden.
  • Jeder Befehl kann eine Bitlänge gleich einer ganzzahligen Anzahl von Bytes aufweisen und jedes Feld kann eine Bitlänge aufweisen, die geringer als ein Byte ist.
  • Die vorliegende Erfindung schafft auch ein Verfahren zum Erzeugen von Befehlen zur Verwendung bei dem Betrieb eines Computersystems, wobei das Computersystem ausgebildet ist, um Befehle auszuführen, die von einem Befehlssatz ausgewählt sind, der mehrere Befehle aufweist, wobei jeder der mehreren Befehle auf einem grundlegenden unkomprimierten Format einer vorbestimmten Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern basiert, wobei das Verfahren die Schritte aufweist: Befehle werden eingegeben, wobei zumindest einige Befehle durch Weglassen von zumindest einem Befehlsfeld, das einen Wert enthält, komprimiert werden und die Steuerbits enthalten, um eine komprimierte Länge und welches Feld weggelassen ist, anzuzeigen; die Steuerbits werden decodiert und in Reaktion darauf: Informationen werden zugeführt, die dem Computersys tem einen impliziten Speicherplatz benennen, um den Wert des weggelassenen Feldes zu ersetzen.
  • Die folgenden beschriebenen Ausführungsformen der vorliegenden Erfindung stellen ein Computersystem mit einem kompakten Befehl bereit, welcher den Bedarf für redundante Bitstellen vermeidet und eine einfache Decodierung von Befehlen ermöglicht. Das Computersystem verwendet Befehle mit variabler Länge, von welchen einige komprimiert werden, um redundante Bitstellen zu vermeiden, wobei das System die komprimierten Befehle zur Verwendung durch einen Prozessor im Computersystem erweitern kann.
  • Eine Ausführungsform der vorliegenden Erfindung wird nun beispielhaft und mit Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
  • 1 das Format eines Befehls des Standes der Technik zeigt,
  • 2 eine Vielzahl von Befehlsformaten zur Verwendung gemäß der vorliegenden Erfindung zeigt,
  • 3 ein Blockdiagramm eines erfindungsgemäßen Computersystems ist,
  • 4 mehr Einzelheiten eines Teils der in 3 gezeigten Befehlsabrufeinrichtung zeigt,
  • 5 mehr Einzelheiten der in 3 gezeigten Befehlserweiterungseinheit zeigt,
  • 6 die Pipeeinheit von 3 genauer zeigt, und
  • 7 eine modifizierte Anordnung für die Schaltung von 5 zeigt.
  • 1 zeigt ein Befehlsformat für ein herkömmliches RISC-Prozessorsystem, bei dem alle Befehle eine feste Länge und im Allgemeinen ein ähnliches Format von Bitstellen im Befehl aufweisen. Das gezeigte Beispiel besteht aus einem einzelnen Befehl 11, der in diesem Beispiel 4 Bytes lang ist, wobei jedes Byte 8 Bits lang ist. Das erste Byte 12 definiert den Operationscode, der die vom Prozessor auszuführende spezielle Operation definiert, wenn dieser Befehl ausgeführt wird. Das zweite Byte 13 sieht die Adresse des Ziels für das Ergebnis der Ausführung dieses Befehls vor. Die Bytes 14 und 15 benennen die Adressen der ersten bzw. der zweiten bei der Ausführung des Befehls zu verwendenden Datenquelle. Typischerweise benennen die Bytes 13, 14 und 15 alle Registeradressen. Solche Befehle sind einfach zu decodieren und vermeiden dadurch unnötige Decodierzeit. Viele Operanden in Befehlen dieser Art sind jedoch die Adressen von temporären Registern. Verschiedene Vorschläge wurden gemacht, um die Anzahl von Adressen zu begrenzen, die für temporäre Register erforderlich sind, einschließlich beispielsweise der Verwendung eines Akkumulators mit einem Feld in jedem Befehl, das festlegt, ob ein Operand einen Akkumulator oder ein explizites Register identifiziert oder nicht. Dies kann zu Befehlen mit fester Länge der in 1 gezeigten Art mit einer Anzahl von redundanten Bitstellen führen. Dies führt insofern zur Verringerung der Codedichte, als die Bitstellen, die zum Halten einer Befehlssequenz erforderlich sind, unnötig erhöht werden, wodurch mehr Speicherplatz eingenommen wird und mehr Speicherzugriffszeit beim Erhalten der Befehle zur Verwendung durch den Prozessor beansprucht wird.
  • Die vorliegende Erfindung verwendet einen Befehlssatz, der Befehle mit variabler Länge bereitstellt. Im beschriebenen bevorzugten Beispiel ist eine Vielfalt von Formaten eines Befehls zur Verwendung durch einen einzelnen Prozessor in 2 gezeigt. Dieses spezielle Beispiel verwendet mehrere auswählbare Befehle mit unterschiedlicher Bitlänge, wobei jeder auf einem Format mit vorbestimmter Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern jeweils mit einer jeweiligen vorbestimmten Bitlänge basiert, wobei einige der Befehle ein ausgewähltes der Felder weglassen und einen Identifikator mit geringerer Bitlänge als das weggelassene Feld umfassen, um anzugeben, welches Feld weggelassen ist, wodurch die Bitlänge des Befehls komprimiert wird und die Verwendung von redundanten Bitstellen in den Befehlen vermieden wird. In diesem gezeigten speziellen Beispiel basieren die Befehle auf einem 32-Bit-Format, das in 4 Bytes 20, 21, 22 und 23 mit jeweils 8 Bits unterteilt ist. Dieses Format wird mit Bezug auf das in 2 gezeigte Format 12 beschrieben, da dieses das grundlegende unkomprimierte Format darstellt. Das erste Byte 20 weist die ersten zwei Bitstellen auf, die einem Längenindikator 24 zugeordnet sind. Die nächsten 6 Bits bilden das Feld 1, das ein Operationscodeindikator 25 ist, der die spezielle Operation angibt, die der Prozessor als Reaktion auf die Ausführung des Befehls ausführen soll. Das erste Feld im Befehlsformat ist für alle Befehle an den gleichen Bitstellen vorgesehen und gibt immer den Operationscode an.
  • Im zweiten Byte 21 bilden die ersten zwei Bitstellen einen Indikator 26, der die Art des Befehls angibt. Diese zwei Bits 26 zusammengenommen mit dem Befehlsbitlängenindikator 24 sehen eine Angabe dessen vor, welche Felder im Befehl vorliegen und welche weggelassen wurden. Die nächsten 6 Bits des zweiten Bytes 21 bilden ein zweites Feld 27. Im dritten Byte 22 definieren die ersten 6 Bits ein drittes Feld 28. Die letzten zwei Bits 29 und 30 können in Abhängigkeit von der Art von Befehl Erweiterungen des Operationscodeindikators oder des Indikators für die Art von Befehl oder einen Teil einer Konstante vorsehen. Im vierten Byte 23 bilden die letzten 6 Bits das vierte Feld 31. Die ersten zwei Bits 32 des letzten Bytes 23 können einen Teil von konstanten Werten oder Erweiterungen des Operationscodeindikators bilden. 2 zeigt 15 verschiedene Formate, die alle auf dem im Format 12 von 2 gezeigten Format mit vier Feldern basieren können. Jedes der auswählbaren Formate umfasst jedes des zweiten, des dritten oder des vierten Feldes entweder vollständig oder lässt es vollständig weg. Der Artindikator 26 (und das Erweiterungsbit 30) in Kombination mit dem Längenindikator 24 stellt eine Angabe dessen bereit, welche Felder weggelassen wurden. Sie können auch eine Angabe der Bezeichnung von Daten in einem enthaltenen Feld bereitstellen, wodurch ein Register oder ein konstanter Wert angegeben wird. Zusätzlich dazu, dass die Kompression der Bitlänge jedes Befehls ermöglicht wird, um redundante Bits zu vermeiden, ermöglicht dieses Beispiel die Identifikation eines impliziten Datenspeicherplatzes, der keine explizite Adressierung erfordert. Das verwendete Basisformat der Befehle ist am besten durch Bezugnahme auf das Format 12 in 2 dargestellt. Der Längenindikator 24 gibt an, dass es sich um einen 32 Bit langen Befehl handelt. Der Operationscode 25 definiert die auszuführende Operation. Der Artindikator 26 gibt an, dass im Fall eines 32 Bit langen Befehls das zweite Feld 27 die Adresse eines Zielregisters identifiziert, das dritte Feld 28 die Adresse eines zweiten Quellenregisters identifiziert und das vierte Feld 31 die Adresse eines ersten Quellenregisters identifiziert. Die letzten zwei Bits des dritten Bytes 22 und die ersten zwei Bits des Bytes 23 sehen in diesem Fall die Möglichkeit für eine Erweiterung 32 des Operationscodes 25 vor. Für einige Befehle ist es nicht erforderlich, zwei Quellenadressen und eine Zieladresse zu identifizieren, und in solchen Fällen können ein oder mehrere des zweiten, des dritten oder des vierten Feldes weggelassen werden, um die Bitlänge des Befehls zu komprimieren und redundante Bitstellen zu vermeiden. Ferner umfasst das beschriebene Beispiel die Verwendung eines impliziten Datenspeichers zum Halten von aktiven Daten während einer Programmausführungssequenz, wobei der Datenspeicher keine explizite Adressierung erfordert. In diesem Beispiel ist der implizite Speicher durch einen First-in-first-out-Datenspeicher vorgesehen, der angeordnet ist, um gleichzeitig mehrere Datenwerte zu halten, und in diesem Beispiel wird ein solcher Datenspeicher als Pipe bezeichnet. Die Pipe kann als Ziel oder als erste oder zweite Quelle von Daten oder irgendeine Kombination von ihnen zur Verwendung bei der Ausführung der Programmsequenz verwendet werden. Wenn die Pipe für irgendeine der Adressen des Ziels, der Quelle 1 oder Quelle 2 verwendet werden soll, dann ist kein Eintrag im entsprechenden zweiten, dritten oder vierten Feld des in 2 gezeigten Befehlsformats erforderlich. Im Fall des Formats 1 gibt der Befehlslängenindikator 24 an, dass der Befehl nur 1 Byte lang ist, und folglich fehlen die Felder 2, 3 und 4, wodurch angegeben wird, dass die implizite Pipe für sowohl Quellen- als auch Zieladressen verwendet werden soll. Im Fall der Formate 2, 3, 4 und 5 gibt der Bitlängenindikator an, dass der Befehl nun 2 Bytes lang ist, und der Artindikator 26 unterscheidet zwischen den Formaten 2, 3, 4 und 5. Im Format 2 gibt das Feld 2 eine Zieladresse an. Im Format 3 gibt das Feld 3 eine zweite Quellenadresse an und im Format 4 gibt das Feld 4 die erste Quellenadresse an. In jedem der Formate 2, 3 und 4 ist es selbstverständlich, dass die implizite Pipe die weggelassenen Adressen ersetzt. Bei der Erweiterung nimmt jedes der Formate 1 bis 4 die Form von Format 12 an. Das Format 5 zeigt eine Situation, in der der Artindikator zeigt, dass das Feld 4 einen konstanten Wert anstatt einer ersten Quellenadresse bereitstellt. Das Format 5 wird auf das Format 13 erweitert. Die Formate 6 bis 11 weisen jeweils einen Längenindikator 24 auf, der angibt, dass die Befehle 3 Bytes lang sind, und die Artindikatoren 26 zusammen mit der letzten Bitstelle 30 geben die Wertigkeit der enthaltenen Felder sowie eine Angabe des weggelassenen Feldes an. In jedem Fall wird die implizite Pipe anstelle irgendeiner weggelassenen Adresse verwendet. Die Formate 6, 7 und 8 werden auf das Format 12 erweitert. Die Formate 9 und 10 werden auf das Format- 13 erweitert. Das Format 11 wird auf das Format 15 erweitert. Im Fall der Formate 12 bis 15 gibt der Längenindikator an, dass der Befehl eine Länge von 4 Bytes aufweist. Im Fall der Formate 13, 14 und 15 lässt der Befehl eine oder mehrere explizite Adressen weg und die Bitstellen werden durch Konstanten 33 oder 34 oder 35 ersetzt. Bei der Erweiterung wird die implizite Pipeadresse für jedes fehlende Feld vorgesehen. In der anschließenden Beschreibung wird der von den Bits 10–15 gelieferte Bitwert als Arg 1 bezeichnet, der Bitwert der Bits 16–21 ist Arg 2 und der Bitwert der Bits 26–31 ist Arg 3. Acht Beispiele von Befehlen mit 1, 2 oder 3 Argumenten sind in der folgenden Tabelle dargestellt, die auch die Quellen- und Zieladressen, die durch jeden dieser Befehle angegeben sind, sowie die Bytelänge und das Format entsprechend 2 zeigt.
  • TABELLE A
    Figure 00080001
  • Daher ist zu sehen, dass in den in 2 gezeigten komprimierten Befehlsformaten der Artindikator 26, der, wenn es geeignet ist, die Erweiterung 30 umfasst, eine Bitlänge aufweist, die wesentlich geringer ist als die weggelassenen Felder 2, 3 und 4. Die Verwendung von vorbestimmten Feldpositionen mit jeweils vorbestimmter Bitlänge stellt Einfachheit und dadurch Geschwindigkeit bei der Decodierung bereit. Jeder Befehl wird auf eine minimale Bitlänge komprimiert, um die Information anzugeben, die für die Ausführung des Befehls notwendig ist. Folglich werden Speicherplatz zum Speichern einer Befehlssequenz und Zugriffszeit zum Übertragen von Befehlen vom Speicher zum Prozessor minimiert. Jede Befehlsabrufoperation vom Speicher lädt eine feste Anzahl von Bytes in den Prozessor und im Fall von komprimierten Befehlen kann das gesamte vom Speicher abgerufene Bytepaket einen Teil eines anschließenden Befehls umfassen, der vom nächsten Befehl ungenutzte Bitstellen belegt.
  • Die Pipeadresse kann als explizite Adresse in einem enthaltenen Feld gegeben werden, falls erwünscht.
  • Ein Computersystem zur Verwendung bei der Ausführung von Befehlen der in 2 gezeigten Art ist in 3 dargestellt. Diese zeigt eine Prozessorschaltung 40, die mit einem Speicher 41 gekoppelt ist, der in diesem Beispiel einen herkömmlichen RAM umfasst. Der Prozessor 40 umfasst einen Adressenbus 42, einen Datenbus 43 sowie Lese- und Schreibsteuerungen 44 bzw. 45, die alle mit dem Speicher 41 gekoppelt sind. Der Speicher 41 ist angeordnet, um ein Pro gramm mit Sequenzen von Befehlen an verschiedenen adressierbaren Stellen zu halten. Jeder Befehl entspricht einem der bereits mit Bezug auf 2 beschriebenen Formate. Der Speicher 41 kann auch Daten halten. Der Prozessor 40 umfasst eine Steuerlogik 50 sowie ein ALU 51. Der Datenbus 43 überträgt Datenwerte zum und vom Speicher 41. Der Adressenbus 42 überträgt Speicheradressenwerte für Lese- oder Schreiboperationen. Jede adressierbare Stelle im Speicher 41 hält 4 Datenbytes. Die niedrigstwertigen 2 Bits des Adressenbusses 42 werden bei der Feststellung, auf welche Speicherstelle zuzugreifen ist, ignoriert. Das ALU 51 ist mit einem Bus 52 der Quelle 1 und einem Bus 53 der Quelle 2 verbunden. Diese bilden Eingaben in das ALU 51 und irgendeine resultierende Ausgabe wird auf einem Ergebnisbus 54 geliefert. Lese- und Schreibleitungen 44 und 45 bilden Ausgaben aus der Steuerschaltung 50. Wenn die Leseleitung 44 aktiviert wird, liefert der Speicher 41 den Wert, der an der durch den Adressenbus 42 identifizierten Stelle gespeichert ist, zum Datenbus 43. Wenn die Schreibleitung 45 aktiviert wird, speichert der Speicher 41 den Wert auf dem Datenbus 43 an dem durch den Adressenbus 42 identifizierten Speicherplatz.
  • Das ALU 51 empfängt eine Befehlseingabe 261 von der Steuereinheit 50, um festzustellen, welche Operation das ALU durchführen soll. Das ALU liefert eine Bedingungsausgabe 56 zur Steuereinheit 50, um die Bedingung der ALU-Operation anzugeben.
  • Der Prozessor 40 umfasst eine Befehlsabrufeinheit 60, die angeordnet ist, um 4 Bytes auf einmal aus dem Speicher 41 abzurufen und eine 4-Byte-Ausgabe 61 zu einem Befehlsregister 62 zu liefern, wo die Ausgabe 61 auf den Beginn eines Befehls ausgerichtet wird. Das Befehlsregister 62 ist angeordnet, um mehrere separate Ausgaben, die jeweils die Felder und Steuerbits eines Befehls darstellen, zu einer Erweiterungsschaltung 63 zu liefern, die angeordnet ist, um eine vollständig erweiterte Ausgabe für jeden Befehl zu liefern. In Abhängigkeit vom Operationscode des Befehls bewirkt die Steuereinheit 50, dass Quellenwerte an einen oder beide Quellenbusse 52 und 53 entweder von der Registerdatei 170 oder von der Pipe 171 oder vom Konstantenregister 167 angelegt werden. Das Ergebnis einer ALU-Operation wird dann vom Ergebnisbus 54 in eine ausgewählte Stelle entweder der Registerdatei 170 oder der Pipe 171 in Abhängigkeit von dem vom Befehl angegebenen Ziel geschrieben. Das ALU 51 wird auch für Zwischenstufen der Befehlsausführung verwendet und das Ergebnis kann in den Befehlszeiger 230, das temporäre Register 240, die Abrufeinrichtung 60 oder den Schreibpuffer 252 geschrieben werden.
  • Die Konstruktion und Operation der Befehlsabrufeinrichtung 60 wird zuerst beschrieben. Die Einheit ist in 4 genauer gezeigt und weist einen Eingangsdatenbus 64 auf, der mit dem Datenbus 43 verbunden ist. Die Abrufeinrichtung 60 umfasst einen Abrufzeiger 65, der einen 32-Bit-Zwischenspeicher umfasst, der die nächste Adresse im Speicher enthält, von der ein 32-Bit-Wort gelesen werden soll. Wenn ein Wert aus dem Speicher gelesen wird, wird der Zwischenspeicher 65 um 4 Bytes auf eine neue Zeigeradresse erhöht. Ein Wert 4 wird von der Einheit 105 erzeugt, die den Wert 4 zu einem Addierer 106 liefert, der den Zeigerwert vom Bus 103 empfängt und zu diesem 4 addiert. Das Gesamte wird dann über den Multiplexer 92 zum Zwischenspeicher 65 gesandt, um den Zeiger zu aktualisieren. Es ist selbstverständlich, dass ein ausgerichteter Befehl einer ist, dessen Position des Bit 0 am Beginn eines neuen 32-Bit-Worts liegt. Aufgrund der Verwendung von Befehlen mit variabler Länge beginnen jedoch einige Befehle auf einem Teilweg durch ein Wort im Speicher. Die Abrufeinrichtung 60 ist angeordnet, um komprimierte Befehle aus dem Speicher zu lesen und sie korrekt auszurichten und sie dann auf dem Bus 61 aus einem Abrufpuffer 66 zum Befehlsregister 62 auszugeben. Die 4-Byte-Worte, die auf dem Bus 64 eingegeben werden, laufen durch einen Ladeschieber 67 über mehrere parallele Multiplexer 68 zum Abrufpufter 66. Der Abrufpuffer kann bis zu 7 Bytes von Befehlen halten, was ausreicht, um den schlimmsten Fall der Befehlsfehlausrichtung zu halten. Ein 4-Byte-Befehl könnte 1 Byte in einem 32-Bit-Speicherwort beginnen, so dass das Wort 3 Bytes des Befehls enthält, und ein anschließendes Wort von 4 Bytes muss gelesen werden, um das 4. Byte zu erhalten, das zum Vollenden des Befehls erforderlich ist. In dieser Weise müssen 7 Bytes im Puffer 66 gehalten werden. Sobald ein Befehl im Puffer 66 ausgerichtet ist, werden vier Bytes auf den Leitungen 70, 71, 72 und 73 ausgegeben, die das Byte 0, Byte 1, Byte 2 und Byte 3 darstellen. In Abhängigkeit von der Länge des Befehls, kann es sein, dass der Befehlspuffer 62 nicht Signale bearbeitet, die von allen vier Leitungen 7073 stammen, sondern in allen Fällen Ausgaben auf diesen Leitungen geliefert werden. Das Byte 0 gibt auf der Leitung 70 die Länge des Befehls an, der ausgegeben wird, und diese wird über einen Längenindikator 74 zugeführt, um der Abrufeinheit 60 anzugeben, wie viele Bytes im Puffer 66 nun entfernt werden können. Ein Bytezähler 75 hält jederzeit einen Zählwert der Anzahl von Bytes im Puffer 66 und das von der Einheit 74 gewonnene Längensignal wird über einen Multiplexer 76 zu einem Längensubtrahierer 77 geleitet, der Eingaben vom Multiplexer 76 und vom Bytezähler 75 empfängt, um die Anzahl von gültigen Bytes zu berechnen, die im Puffer 66 verbleiben. Eine Ausgabe 78 vom Subtrahierer 77 wird über einen Multiplexer 79 geliefert, um die Eingabe im Bytezähler 75 zu aktualisieren.
  • Die Ausgabe aus dem Multiplexer 76 bildet eine Eingabe 80 in einen Gewinnungsschieber 81, der verwendet wird, um im Puffer 66 diejenigen restlichen Bytes zu verlagern, die für die Verwendung beim nächsten Befehl, der auf dem Bus 61 zum Befehlsregister 62 geliefert werden soll, erforderlich sind. Der Gewinnungsschieber 81 empfängt Eingaben 82 von jeder der Leitungen 71, 72, 73 sowie von den Stellen des Bytes 4, Bytes 5 und Bytes 6 des Puffers 66. In Abhängigkeit vom Mengensignal 80 werden die im Abrufpufter 66 gehaltenen Werte durch den Gewinnungsschieber 81 verlagert und auf den Leitungen 83 an die Multiplexer 68 ausgegeben. In dieser Weise werden die Bytes, die noch im Abrufpuffer erforderlich sind, in den Abrufpuffer 66 an neuen Stellen verlagert, die mit dem Byte 0 beginnen. Die im Byte 0, 1 und 2 des Puffers 66 gehaltenen Werte werden auch auf den Leitungen 85 zum Ladeschieber 67 zurückgeführt. Der Ladeschieber empfängt auch ein Mengensignal 86, das vom Bytezähler 75 gewonnen wird, um die Bytestellen innerhalb des Abrufpuffers 66 anzugeben, in die neue Bytes, die vom Speicher auf dem Datenbus 64 gelesen werden, geladen werden sollen. In Abhängigkeit vom Mengensignal 86 werden vier neue Bytes vom Speicher auf dem Bus 64 eingegeben und zu den geeigneten Multiplexern 68 in Kombination mit beliebigen Signalen auf den Leitungen 85 zugeführt, welche Bytewerte geben, die von einer vorherigen Operation des Abrufpuffers 66 gehalten werden sollen, so dass die Multiplexer 68 durch ein Zwischenspeichersignal 90 betrieben werden können, um die Kombination von gehaltenen Bytes auf irgendeiner der Leitungen 85 zusammen mit neuen Bytes, die vom Speicher gelesen werden, in den Puffer 66 zu laden, so dass sie aufeinanderfolgende Byteposi tionen im Abrufpuffer 66 belegen, die mit dem Byte 0 beginnen. Das Zwischenspeichersignal 90 wird auch zum Multiplexer 79 zugeführt, um den Bytezähler 75 mit vier zu aktualisieren. Der Wert 4 wird von der Einheit 105 einem Addierer 108 zugeführt, der 5 zum Bytezählwert addiert, der vom Bytezähler 75 eingespeist wird, und die Gesamtsumme dem Bytezähler 75 zuführt.
  • Normalerweise veranlasst der Abrufzeiger 65, dass die Abrufeinrichtung 60 Befehle von aufeinanderfolgenden Wortstellen innerhalb des Speichers erhält. Einige Programme enthalten jedoch Sprungbefehle, die erfordern, dass der Mechanismus das Abrufen von Befehlen von einer neuen Stelle im Speicher beginnt. Aus diesem Grund wird eine Starteingabe 91 geliefert, die über den Multiplexer 92 dem Abrufzeiger 65 zugeführt werden kann. Die oberen 30 Adressenbits der Startadresse auf der Leitung 91 werden dem Zeiger zugeführt, da diese 30 Bits immer den Beginn eines neuen Byteworts im Speicher adressieren. Die unteren zwei Bits des Abrufzeigers 65 werden immer auf Null gesetzt. Die unteren 2 Bits, die nur eine Teilposition innerhalb eines 32-Bit-Worts angeben, werden in einem 2-Bit-Zwischenspeicher 93 gespeichert. Der im Zwischenspeicher 93 gehaltene Wert wird in einem Vergleicher 94 geprüft, um eine Ungleichheit mit Null festzustellen und dadurch zu entscheiden, ob die neue Speicheradresse am Beginn einer 32-Bit-Grenze oder auf einem Teilweg durch ein Wort beginnt oder nicht. Im Fall, dass sie auf einem Teilweg durch ein Wort beginnt, wird ein Signal vom Vergleicher 94 zum UND-Gatter 95 geliefert, um anzuzeigen, wenn eine zweite Eingabe in das UND-Gatter 95 von einem Vergleicher 104 angibt, dass die Anzahl von Bytes im Puffer 66 nicht Null ist, dass eine gewisse Einstellung des Inhalts des Abrufpuffers erforderlich ist. Eine Einstellausgabe 96 wird zur Steuereinheit 50 geliefert, die angibt, dass der Befehl nicht korrekt ausgerichtet ist, und um ihn auszurichten, wird ein Leerbefehllesevorgang unter Verwendung eines Nächster-Signals 97 von der Steuereinheit 50 ausgeführt. Das Signal 97 wird über ein ODER-Gatter 98 zugeführt, um eine neue Zwischenspeicheroperation für den Abrufpuffer 66 zu bewirken, die, wie vorstehend beschrieben, die Entfernung von einem oder mehreren Bytes aus dem Abrufpuffer 66 und die Verlagerung um eine Menge, die durch die Eingabe 80 in den Gewinnungsschieber 81 festgelegt wird, bewirkt, wobei die Menge vom Zwei-Bit-Zwischenspeicher 93 gewonnen wird, welche über den Multiplexer 76 durch die Ausgabe des UND-Gatters 95 geleitet wird.
  • Es ist zu erkennen, dass die Nächster-Eingabe 97 auch von der Steuereinheit 50 gewonnen wird, um die Abrufeinheit zu informieren, dass der aktuelle Befehl aus dem Abrufpuffer 66 gelesen wurde und folglich dieser Befehl aus dem Abrufpufter 66 entfernt werden kann, wie vorstehend beschrieben. Eine Zwischenspeichereingabe 100 wird von der Steuereinheit 50 gewonnen, die ein flankenempfindliches Signal ist, um der Abrufeinrichtung zu befehlen, den Wert auf dem Datenbus 64 im Puffer 66 zu speichern. Ein Beginnsignal 102 ist ein weiteres flankenempfindliches Signal, das verwendet wird, um die Abrufeinrichtung zu informieren, das Abrufen eines neuen Worts von einer neuen Adresse zu beginnen, die am Startsignaleingang 91 als Reaktion auf einen Sprungbefehl übergeben wird. Es ist zu erkennen, dass die Adressenausgabe 103 immer auf eine 32-Bit-Grenze am Beginn eines Worts im Speicher zeigt. Der Bytezähler 75 ist mit dem Zählwertvergleicher 106 verbunden, um ein Signal zum UND-Gatter 95 zu liefern, vorausgesetzt, dass der Bytezählwert nicht 0 ist. Der Längensubtrahierer 77 ist angeordnet, um eine Mehr-Ausgabe 107 zu liefern, sobald der Abrufpufter einen unzureichenden Inhalt aufweist, um den nächsten Befehl zu erzeugen. Dieses Signal 107 wird zur Steuereinheit 50 geliefert, um die Abrufeinrichtung zu veranlassen, einen Speicherlesevorgang unter Verwendung des Zwischenspeichersignals 100 durchzuführen, bevor der nächste Befehl aus der Abrufeinrichtung gelesen werden kann. Der Zählwert des Bytezählers 75 wird verringert, sobald ein Befehl aus dem Abrufpuffer 66 entfernt wird, und wird erhöht, sobald ein neuer Wert aus dem Speicher gelesen wird. Wenn die Abrufeinrichtung von einer neuen Befehlssequenz unter Verwendung der Starteingabe 91 beginnt, wird das Beginnsignal auf der Leitung 102 verwendet, um den Zählwert im Zähler 75 zu löschen, und wird über ein ODER-Gatter 109 verwendet, um neue Zeigerwerte im Abrufzeiger 65 zwischenzuspeichern. Ein Ein-Bit-Zwischenspeicher 110 wird verwendet, um den 2-Bit-Zwischenspeicher 93 zu löschen, nachdem der erste Befehl von einer neuen Startadresse im Puffer 66 ausgerichtet wurde.
  • Es ist selbstverständlich, dass die drei Eingangssignale Nächster 97, Zwischenspeicherung 100 und Beginn 102, die von der Steuereinheit 50 gewonnen werden, gewöhnlich nicht aktiviert werden, bis eine gewisse Operation der Abrufeinrichtung erforderlich ist. Die vier Arten einer Operation, die sie durchführen kann, sind folgende. Sie kann Befehle auf dem Ausgangsbus 61 für das Befehlsregister 62 erzeugen. Sie führt dies durch, wenn ein korrekt ausgerichteter Befehl im Abrufpufter 66 gehalten wird und das Mehr-Signal 107 und das Einstellsignal 96 nicht aktiviert sind. Die Abrufeinrichtung kann eine Leseoperation von Speicherplätzen durchführen. Normalerweise werden 32-Bit-Speicherplätze nacheinander gelesen, sobald der Abrufpuffer 66 nicht genügend Daten enthält. Die Adresse, für die Daten gelesen werden, wird durch die Ausgabe des Abrufzeigers 65 auf dem Bus 103 angegeben. Dies wird durchgeführt, wenn das Mehr-Signal 107 aktiviert ist und das Einstellsignal 96 nicht aktiviert ist. Das Zwischenspeichersignal 100 wird aktiviert, um die Multiplexer 68 so zu setzen, dass sie Ausgaben aus dem Ladeschieber 67 auswählen. Sobald Daten vom Bus 64 eingegeben sind, wird das Zwischenspeichersignal 100 deaktiviert, um den Wert im Abrufpuffer 66 zu speichern.
  • Die Abrufeinrichtung kann verwendet werden, um eine neue Befehlssequenz zu initialisieren. In diesem Fall wird der Bytezählwert 75 gelöscht und eine neue Adresse im Speicher wird im Abrufzeiger 65 und im 2-Bit-Puffer 93 zwischengespeichert. Diese Initialisierung ist nach einem Programmsprungbefehl erforderlich. Sie wird durch Aktivieren und dann Deaktivieren des Beginn-Signals 102 durchgeführt. Ferner kann die Abrufeinrichtung verwendet werden, um den ersten Befehl in einer neuen Befehlssequenz auszurichten. Wenn eine neue Befehlssequenz nicht an einer 32-Bit-Wortgrenze im Speicher beginnt, dann wird das Einstellsignal 96 aktiviert und die Ausrichtungsoperation beinhaltet das Aktivieren und dann Deaktivieren des Nächster-Signals 97, um einen Leerlesevorgang des Abrufpuffers 66 durchzuführen und dadurch den ersten Befehl der neuen Sequenz auszurichten.
  • Wie in 3 gezeigt, liefert der Ausgangsbus 61 der Abrufeinheit 60 ein 32-Bit-Signal, das in das Befehlsregister 62 eingespeist wird, und der 32-Bit-Wert wird durch ein Eingangssignal 112 zwischengespeichert, das von der Steuereinheit 50 zur gleichen Zeit wie das Nächster-Signal 97 gewonnen wird, welches in die Abrufeinrichtung 60 eingespeist wurde. Das 32-Bit-Signal im Register 62 ist angeordnet, um sieben Ausgangssignale 120, 121, 122, 123, 124, 125 und 126 zu liefern. Die Art dieser Ausgangssignale wird mit Bezug auf 2 beschrieben. Das Signal 120 stellt die Bits 0 und 1 entsprechend dem Längenindikator in 2 dar. Das Signal 121 wird von den Bits 2 bis 7 abgeleitet und stellt das Feld 1 dar, das den Operationscode enthält. Das Ausgangssignal 122 stellt die Bits 8 und 9 dar, die den Artindikator 26, der in 2 gezeigt ist, bilden. Das Ausgangssignal 123 ist Arg 1, das die Bitpositionen 10 bis 15 darstellt. Das Ausgangssignal 124 ist Arg 2, das die Bitpositionen 16 bis 21 darstellt. Das Ausgangssignal 125 stellt die Bitpositionen 22 bis 25 dar und wird als PAD bezeichnet und stellt eine Arterweiterung, einen Teil des Operationscodes oder einen Teil eines konstanten Werts dar. Das Ausgangssignal 126 stellt Arg 3 dar und stellt die Bitpositionen 26 bis 31 dar. Es wäre daher zu sehen, dass das Ausgangssignal 121 das Feld 1 in 2 darstellt und immer den Operationscode angibt. Die Felder 2, 3 und 4, die in 2 angegeben sind, werden entweder durch Arg 1, Arg 2 oder Arg 3 in Abhängigkeit von der Länge des Befehls dargestellt. Jedes der Ausgangssignale 120126 wird in eine Befehlserweiterungseinheit 63 eingespeist, die angeordnet ist, um den vollen Befehl aus der zu dieser gelieferten komprimierten Form zu rekonstruieren. Die Längenangabeausgabe 120 wird auch in eine Längenfreigabeeinheit 127 eingespeist, die mit dem Bus 52 für die Quelle 1 verbunden ist.
  • Die Konstruktion und Operation der Erweiterungseinheit 63 wird mit Bezug auf 5 beschrieben. Eine Einheit 130 ist vorgesehen, um den vollständigen Operationscode zu konstruieren. Die Einheit 130 empfängt die Operationscodeeingabe 121 und ist auch mit der PAD-Eingabe 125 verbunden, da das PAD-Signal in einigen Formaten eine Operationscodeerweiterung umfassen kann. Die Längeneingabe 120 und die Arteingabe 122 sind beide mit der Einheit 130 verbunden, um festzustellen, ob die Einheit 130 irgendein Signal von der PAD-Eingabe 125 bei der Konstruktion des Operationscodes beinhaltet. Der vollständig konstruierte Operationscode wird dann auf der Leitung 131 ausgegeben, die zur Steuereinheit 50 geführt ist, um die vom Prozessor ausgeführte Operation zu steuern. Eine Leitwegeinheit 132 ist angeordnet, um jede der Eingaben 123126 Arg 1, Arg 2 und Arg 3 zu empfangen. Der Leitwegsucher 132 empfängt auch Eingaben von den Längen- und Artsignalen 120, 122, um festzustellen, welche der Eingaben 123, 124 und 126 Ausgaben des Ziels oder der Quelle 1 oder Quelle 2 darstellen. Der Leitwegsucher 132 empfängt auch das PAD-Signal 125, da dieses in einigen Formaten eine ART-Erweiterung enthält. Der Leitwegsucher 132 weist eine erste Ausgabe 140 entsprechend einer Zieladresse und eine zweite Ausgabe 141 entsprechend einer Adresse der Quelle 2 und eine dritte Ausgabe 142 entsprechend einer Adresse der Quelle 1 auf. Die Längen- und die Arteingabe 120 und 122 und die PAD-Eingabe 125, die dem Leitwegsucher 132 zugeführt werden, ermöglichen, dass der Leitwegsucher die korrekten Eingangssignale 123 bis 126 oder die jeweiligen Ausgaben 140 und 142 ausgibt, und diese werden in jeweilige Multiplexer 143, 144 und 145 eingespeist. Die Multiplexer empfangen jeweils eine alternative Adresse, die die Pipeadresse angibt, die durch eine Pipeadressierungseinheit 146 bestimmt wird. Die Operation der Multiplexer 143145 wird durch eine Freigabeeinheit 147 mit Eingaben vom Längen- und Artindikator 120 und 122 und PAD 125 gesteuert. Diese Eingangssignale legen fest, ob irgendwelche der Felder im komprimierten Befehl fehlen oder nicht, und sie ersetzt irgendein fehlendes Feld durch die implizite Pipeadresse 146. In dieser Weise geben die Ausgangssignale 150, 151 und 152 von der Erweiterungseinheit eine geeignete Zieladresse, die Adresse der Quelle 1 und Quelle 2 an, wobei die Pipeadresse für irgendeine implizite Adresse geliefert wird, die im komprimierten Befehl nicht explizit gegeben ist. In dem Fall, dass der Befehl einen konstanten Wert umfasst, wie in den Formaten von 2 angegeben ist, können dann irgendwelche von Arg 1, Arg 2 und Arg 3 sowie PAD verwendet werden, um die Konstante in Abhängigkeit vom Längen- und Artindikator 120 und 122 zu konstruieren. Diese werden in eine Konstantenkonstruktionseinrichtung 163 eingespeist. Wenn die Eingangssig nale 120 und 122 angeben, dass eine Konstante konstruiert werden soll, werden die Eingaben 123 bis 125 nach Bedarf kombiniert, um einen konstanten Wert am Ausgang 164 auszugeben. Der Längen- und der Artindikator 120 und 122 werden auch in eine Indikatoreinheit 165 eingespeist, um ein Signal 166 auszugeben, das angibt, dass eine Konstante vorliegt. Das Signal 166 wird in die Steuereinheit 50 eingespeist und der konstante Wert wird auf einer Leitung 164 in ein Konstantenregister 167 eingespeist. Wenn das PAD-Signal 125 eine ART-Erweiterung enthält, legt ihr Wert nicht fest, ob eine Konstante codiert ist, wie in 2 gezeigt.
  • Der Prozessor umfasst eine Registerdatei 170, die einen Satz von adressierbaren Registern hält. Außerdem wird die implizite Datenspeicherstelle von der Pipe 171 geliefert, die einen First-in-first-out-Datenspeicher für mehrere Datenwerte vorsieht. Die Registerdatei 170 weist eine Zeigerschaltung 173 auf, die mit dem Bus 54 verbunden ist, um zu ermöglichen, dass Datenwerte in die Registerdatei geschrieben werden. Ebenso weist die Pipe 171 eine Auswählschaltung 174 auf, um zu ermöglichen, dass Datenwerte vom Ergebnisbus 54 in eine gewünschte Stelle in der Pipe 171 geschrieben werden. Sowohl die Zeigerschaltung 173 als auch die Auswählschaltung 174 sind angeordnet, um ein Zwischenspeichersignal 186 von der Steuereinheit 50 zu empfangen, wenn es erforderlich ist, Daten in eine Speicherstelle zu schreiben. Ebenso sind sowohl der Zeiger 173 als auch der Selektor 174 mit dem Ausgang 150 der Befehlserweiterungseinheit 63 verbunden, so dass der geeignete Speicher als Ziel für Daten verwendet wird, wenn es so durch die Ausgabe eines erweiterten Befehls aus der Erweiterungseinheit 63 angegeben wird. Um zu ermöglichen, dass Daten von der Registerdatei 170 auf die Quellenbusse gelesen werden, ist ein Ausgabeselektor 175 vorgesehen, der durch die Leitung 176 mit dem Bus 52 der Quelle 1 und durch eine Verbindung 177 mit dem Bus 53 der Quelle 2 verbunden ist. Das korrekte Register zur Verwendung in einer Leseoperation wird durch die Adressen der Quelle 1 oder Quelle 2, die von der Erweiterungseinheit 63 geliefert werden, festgelegt. Die Leitung 151 sieht eine direkte Verbindung der Adresse der Quelle 2 mit sowohl dem Ausgabeauswählschaltung 175 der Registerdatei 170 als auch mit einer Ausgabeauswählschaltung 179 der Pipe 171 vor. Die Adresse der Quelle 1, die auf der Leitung 152 aus der Erweiterungseinheit 63 ausgegeben wird, läuft durch einen Multiplexer 180, dessen Ausgang mit beiden Selektoren 175 und 179 verbunden ist. Der Multiplexer 180 besitzt auch eine Eingabe von der Zielleitung 150 von der Erweiterungseinheit 63, so dass die Zieladresse anstelle einer Identifikation der Quelle 1 geliefert werden kann. Der Selektor 175 weist eine erste Freigabeeingabe 182 auf, um eine Leseoperation auf den Bus der Quelle 1 freizugeben. Das Freigabesignal 182 wird von der Steuereinheit 50 über ein UND-Gatter 185 gewonnen. Eine zweite Freigabeeingabe 186 ist angeordnet, um eine Leseoperation auf den zweiten Quellenbus 53 freizugeben, und wird direkt von der Steuereinheit 50 gewonnen. Die Freigabeeingaben 182 und 186 werden ebenso zum Ausgabeselektor 179 der Pipe 171 geliefert.
  • Die Konstruktion und Operation der Registerdatei 170 ist herkömmlich.
  • Die Konstruktion und Operation der Pipe 171 wird mit Bezug auf 6 genauer beschrieben. Die Pipe 171 umfasst mehrere separat auswählbare Datenspeicher 190, die angeordnet sind, um N Datenwerte zu halten. Der Ergebnisbus 54 ist mit jedem der Datenspeicher 190 verbunden und der Zielselektor 174 ist mit jedem Dateneingang verbunden, um festzustellen, welcher Datenspeicher eine Eingabe vom Ergebnisbus 54 annehmen kann. Ebenso ist jeder Datenspeicher 190 mit zwei separaten Ausgabeselektoren 191 und 192 verbunden. Die zwei Ausgabeselektoren sind ähnlich und sind jeweils mit jeder Datenspeicherstelle verbunden und können irgendeine der Datenstellen mit dem jeweiligen Bus 52 der Quelle 1 oder dem Bus 53 der Quelle 2 verbinden. Wenn in die Pipe geschrieben wird, wird das Zielsignal 150 in die Pipe eingegeben, wo die Zieladresse in einer Vergleichseinheit 194 mit einer festgelegten Adresse für die Pipe verglichen wird, um sicherzustellen, dass der Befehl die Verwendung der Pipe als Ziel erfordert. Es ist selbstverständlich, dass das Zielsignal auch in den Eingabeselektor für die Registerdatei 170 eingespeist wird, jedoch von der Registerdatei 170 ignoriert wird, wenn keine Übereinstimmung festgestellt wird. Vorausgesetzt, dass eine Übereinstimmung von der Einheit 194 festgestellt wird, wird eine Eingabe zum UND-Gatter 195 geliefert, das auch angeordnet ist, um die Zwischenspeichersignaleinheit 184 von der Steuereinheit 50 zu empfangen, so dass das relevante Ziel nur ausgewählt wird, wenn ebenso das korrekte Zwischenspeichersignal aktiviert wird. Der Selektor 174 arbeitet in einer zyklischen Weise, um Daten in aufeinanderfolgende Datenstellen der Pipe 171 zu schreiben. Ein Eingangszeiger 196 enthält immer die Adresse in der Pipe 171 des nächsten einzuschreibenden Eintrags. Diese Adresse wird auf der Leitung 197 in den Selektor 174 eingegeben, um die erforderliche Adresse für die nächste Schreiboperation auszuwählen. Das Signal 197 wird auch einem Addierer 198 mit als weiterer Eingabe einem Signal von einer Add-1-Einheit 200 zugeführt. Die Ausgabe des Addierers wird zur Zeigerschaltung 196 zurückgeführt, die ein Zwischenspeichersignal vom UND- Gatter 195 empfängt, um die Zeigeradresse nach jeder neuen Zwischenspeicheroperation um Eins vorzuschieben, um Daten in die Pipe 171 zu schreiben. Wenn ein Wert in die Pipe geschrieben werden soll, wird das Zwischenspeichersignal 184 anfänglich aktiviert. Die Ausgabe des UND-Gatters 195 wird einer Zwischenspeicherschaltung 201 in der Pipe 171 zugeführt. Wenn das Zwischenspeichersignal 184 deaktiviert wird, wird der Wert des Ergebnisbusses 54 an der ausgewählten Stelle der Pipe 171 gespeichert und die Adresse des nächsten zu schreibenden Eintrags wird im Zeiger 196 gespeichert.
  • Während einer Leseoperation werden die Adressen der Quelle 1 und Quelle 2 auf den Leitungen 151 und 183 in die Registerdatei 170 und in die Pipe 171 eingespeist. Wenn die benannte Pipeadresse keiner Adresse in der Registerdatei 170 entspricht, werden Lesevorgänge von der Pipe von der Registerdatei 170 ignoriert. Die eingegebenen Adressen werden in der Pipe 171 mit benannten Adressen der Pipe in weiteren Vergleichseinheiten 205 ähnlich der Vergleichseinheit 194 verglichen. Die Ausgabe jeder Vergleichseinheit 205 wird einem UND-Gatter 206 zugeführt, das die jeweilige Freigabeeingabe 182 oder 186 empfängt. Im Fall der Schaltung der Quelle 1 bildet die Ausgabe des UND-Gatters 206 ein Freigabesignal 207 für den Selektor 190 der Quelle 1 sowie eine Eingabe in ein ODER-Gatter 209 und ein UND-Gatter 210. Eine Ausgangszeigerschaltung 211 ist angeordnet, um ein Fertig-Signal 212 von der Steuereinheit 50 zu empfangen. Der Zeiger 211 hält die Adresse der Stelle 190 in der Pipe 171, von welcher der nächste Eintrag gelesen werden soll. Die Ausgabe 215 aus dem Zeiger wird einem ersten Addierer 216 und einem zweiten Addierer 217 zugeführt. Der Addierer 216 ermöglicht, dass ein Wert von 1 zum Signal addiert wird und einem Multiplexer 218 unter der Steuerung eines Ausgangssignals aus dem ODER-Gatter 209 zugeführt wird. Der andere Addierer 217 ist angeordnet, um einen Wert von 2 zum Signal auf der Leitung 215 zu addieren, und liefert eine Ausgabe 220, die ein Inkrement von 2 zum Ausgangssignal 215 ist, für die Zeigerschaltung 211. Ein Multiplexer 221, der durch eine Ausgabe aus dem UND-Gatter 210 gesteuert wird, steuert die Eingabe 223 in die Zeigerschaltung 211, so dass der Zeiger entweder eine Eingabe von der Leitung 220, die ein Inkrement von 2 ist, an der zu lesenden Stelle oder alternativ eine Ausgabe vom Multiplexer 218 empfängt. Die Ausgabe des Multiplexers 218 kann entweder das Ausgangssignal 215 selbst mit einem Nullinkrement oder alternativ ein Inkrement von 1, das durch den Addierer 216 bewirkt wird, sein. Um bei der Operation einen Lesevorgang von der Pipe 171 zu bewirken, wird die Ausgabe 52 der Quelle 1 zum Zugriff festgelegt, bevor die Ausgabe 53 der Quelle 2 aktiv sein sollte. Aus diesem Grund wird der Ausgangszeigerwert 215 direkt in den Ausgabeselektor 192 eingespeist, um die zu lesende Pipestelle auszuwählen, wenn geeignete Signale an den Eingängen 182 und 183 empfangen werden. Das Signal auf der Leitung 207 legt fest, ob eine Leseoperation am Bus 52 der Quelle 1 durchgeführt werden soll, und dieses Signal wird auch einem Multiplexer 220 zugeführt, um entweder das Ausgangssignal 215 vom Zeiger 211 oder alternativ das Inkrement von 1, das vom Addierer 216 erzeugt wird, auszuwählen, um die Stellenauswahl vorzusehen, die auf der Leitung 221 in die Auswählschaltung 191 eingegeben wird. In dieser Weise kann eine Leseoperation auf dem Quellenbus 53 durchgeführt werden, wenn geeignete Eingangssignale an den Eingängen 186 und 151 geliefert werden. Der Selektor 191 gibt von der Stelle aus, die durch die Leitung 215 vom Zeiger 211 angegeben wird, wenn keine Leseoperation auf den Bus 52 der Quelle 1 durchgeführt wurde. Wenn jedoch das Signal auf der Leitung 207 eine Leseoperation auf den Bus 52 der Quelle 1 bewirkt hatte, dann wird der Multiplexer 220 betrieben, um die Stelle, von der die Leseoperation durch den Selektor 191 auf den Bus 53 der Quelle 2 bewirkt wird, um 1 zu inkrementieren. Das Ausgangssignal vom UND-Gatter 206, das verwendet wird, um eine Leseoperation auf den Bus der Quelle 2 zu veranlassen, wird auch dem ODER-Gatter 209 zugeführt, um den Multiplexer 218 und das UND-Gatter 210 zu steuern, um den Multiplexer 221 beim Vorschieben der durch den Zeiger 211 angegebenen Stelle für die nächste Leseoperation zu steuern. Wenn keine Leseoperation stattgefunden hat, wird das Ausgangssignal 215 vom Zeiger 211 durch die Multiplexer 218 und 221 ohne Änderung der Stelle zurückgeführt. Wenn ein Lesevorgang auf nur einen Quellenbus stattgefunden hat, dann wird die Ausgabe des Addierers 216 durch die Multiplexer 218 und 221 geleitet, um die Zeigerstelle um 1 vorzuschieben. Wenn eine Leseoperation auf beide Quellenbusse 52 und 53 stattgefunden hat, dann wird die durch den Zeiger 211 identifizierte Stelle unter Verwendung der Ausgabe des Addierers 217, die auf der Leitung 220 durch den Multiplexer zugeführt wird, um 2 vorgeschoben.
  • Zusätzlich zur bereits beschriebenen Schaltung umfasst der Prozessor von 3 ein Befehlszeigerregister 230, das die Adresse des nächsten sequentiellen Befehls hält. Es wird nicht verwendet, um Befehle aus dem Speicher abzurufen, da dies von der bereits beschriebenen Abrufschaltung 60 ausgeführt wird. Das Befehlszeigerregister 230 ist mit dem Ergebnisbus 54 verbunden und kann verwendet werden, um eine Befehlsadresse zwischenzuspeichern, wenn ein Zwischenspeichersignal 231 von der Steuereinheit 50 eingegeben wird. Wenn ein Freigabesignal 232 von der Steuereinheit 50 geliefert wird, wird der Wert im Register 230 ebenso auf den Bus 53 der Quelle 2 ausgegeben.
  • Ein temporäres Register 240 hält eine Zwischenadresse zur Verwendung beim Zugreifen auf den Speicher. Es kann eine Adresse vom Ergebnisbus 54 speichern, wenn ein Zwischenspeichersignal 241 von der Steuereinheit 50 geliefert wird. Der Wert im temporären Register 240 wird einem Adressenmultiplexer 242 zugeführt, der auf dem Adressenbus 42, der zum Speicher 41 führt, entweder die Adresse 103, die aus der Befehlsabrufeinrichtung ausgegeben wird, oder die Adresse, die vom temporären Speicher 240 gewonnen wird, liefert.
  • Das Konstantenregister 167 kann verwendet werden, um einen konstanten Wert zu halten, der auf der Leitung 164 von der Erweiterung eines Befehls ausgegeben wird; und dieser Wert kann auf dem Bus 52 der Quelle 1 zugeführt werden, wenn ein Freigabesignal 245 von einem UND-Gatter 246 gewonnen wird, das angeordnet ist, um das Freigabesignal 247 der Quelle 1 von der Steuereinheit 50 zu empfangen. Sowohl das UND-Gatter 185 als auch das UND-Gatter 246 empfangen zusätzlich zum Freigabesignal 247 eine Eingabe von einem ODER-Gatter 248. Diese steuern, ob das KONSTANTEN-Register 167 oder der von der Registerdatei 170 oder von der Pipe 171 gewonnene Wert zum Bus 52 der Quelle 1 gesandt wird. Das ODER-Gatter 248 empfängt eine Eingabe von der Leitung 166, die angibt, dass eine Konstante im erweiterten Befehl vorhanden ist, und eine zweite Eingabe 249, die aus der Steuereinheit 50 ausgegeben wird, um den Multiplexer 180 zu steuern, um das Zielfeld als Adresse der Quelle 1 zu verwenden. Dies ermöglicht in Abhängigkeit von einem Operationscode eines Befehls, dass einige Befehle das Zielfeld verwenden, um einen anderen Quellenoperanden festzulegen.
  • Das Längenregister 127 hält eine Angabe der Länge des aktuellen Befehls und dies kann auf den Bus 52 der Quelle 1 getrieben werden, wenn ein Freigabesignal 250 von der Steuereinheit 50 eingegeben wird. Dies kann verwendet werden, um den Befehlszeigerwert einzustellen, der im Register 230 gehalten wird.
  • Der Adressenmultiplexer 242 wird durch ein Abrufsteuersignal 251 von der Steuereinheit 50 gesteuert, so dass der Speicher von der Abrufeinrichtung 60 oder vom Wert im temporären Register 240 adressiert wird.
  • Ein Schreibpuffer 252 wird durch ein Freigabesignal 253 von der Steuereinheit 50 gesteuert, um den Wert auf dem Ergebnisbus 54 auf den Datenbus 43 zu bringen, wenn das Signal 253 aktiviert wird. Ebenso wird ein Lesepuffer 254 durch ein Lesesteuersignal 255, das von der Steuereinheit 50 gewonnen wird, gesteuert, so dass der Wert auf dem Datenbus 43 auf den Bus 52 der Quelle 1 gebracht werden kann, wenn das Signal 255 aktiviert wird. Die Zwischenspeichereingabe 100 für die Abrufeinrichtung 60 wird vom UND-Gatter 260 gewonnen, dessen Eingangssignale 251 und 255 von der Steuereinheit stammen, die beide aktiviert werden, wenn ein Lesevorgang vom Speicher erforderlich ist, um ein weiteres Befehlswort aus dem Speicher abzurufen.
  • Bei der Verwendung werden alle Steuerausgaben aus der Steuereinheit 50 anfänglich deaktiviert. Wenn die Mehr-Ausgabe 107 von der Abrufeinrichtung 60 angibt, dass ein weiteres Befehlswort vom Speicher 41 erforderlich ist, dann wird eine Leseoperation ausgeführt, um ein weiteres Wort in die Abrufeinrichtung 60 zu laden. Wenn der Prozessor zu einer neuen Befehlssequenz gesprungen ist, dann wird eine Einstellausgabe 96 geliefert, um anzugeben, ob eine Ausrichtung erforderlich ist. Wenn eine Ausrichtung erforderlich ist, kann ein weiterer Speicherlesevorgang für ein Befehlswort erforderlich sein. Das Bewegungssignal 107 gibt an, ob dies erforderlich ist. Nach der Ausrichtung wird ein Befehl in das Befehlsregister 62 geladen, dann durch die Einheit 63 erweitert und eine geeignete Quelle oder konstante Werte werden auf den Bussen 52 oder 53 der Quelle 1 oder Quelle 2 geliefert und eine entsprechende Operation von dem ALU 51 unter einem Befehlssignal 261 von der Steuereinheit 50 ausgeführt.
  • Der Prozessor kann Rechenbefehle ausführen. In diesem Fall können die Befehle zwei Quellenwerte nehmen, die von der Pipe 171, der Registerdatei 170 oder vom Konstantenregister 167 stammen können. Diese werden durch die Ausgangssignale von der Erweiterungseinheit 63 festgelegt. Das ALU 51 erzeugt ein Ergebnis, das dem Ergebnisbus 54 zugeführt wird und in der Pipe 171 oder der Registerdatei 170 gespeichert wird, wie durch das Zielsignal festgelegt, das von der Erweiterungseinheit 63 gewonnen wird. Einige Operationen weisen nur einen einzelnen Quellenoperanden auf und in diesem Fall wird der Wert auf dem Bus 53 der Quelle 2 ignoriert und das Freigabesignal auf der Leitung 186 wird nicht aktiviert.
  • Der Prozessor kann auch Speicherbefehle ausführen, die einen 32-Bit-Wert aus dem Speicher lesen oder in diesen schreiben. Die Adresse zum Zugriff auf den Speicher wird durch Addieren von zwei Quellenwerten, die von der Quelle 2 oder Quelle 1 festgelegt werden, oder Konstantensignalen von der Erweiterungseinheit 63 berechnet. Der Wert auf dem Ergebnisbus 54 wird im temporären Register 240 durch das Signal 241 gespeichert. Die Stelle kann durch Speichern des Ergebnisses in der Registerdatei 170 oder in der Pipe 171 gelesen werden. Alternativ kann in die Stelle geschrieben werden, indem von der Pipe 171 oder Registerdatei 170 gelesen wird, wie durch das Zielsignal 150 festgelegt, das auf der Leitung 183 durch den Multiplexer 180 geleitet wird. Sowohl zum Lesen als auch Schreiben wird der Bus 52 der Quelle 1 durch das korrekte Befehlssignal 261 durch das ALU 51 zum Ergebnisbus 54 geleitet.
  • Bei der Ausführung eines Sprungbefehls kann der Prozessor den Befehlszeiger ändern, der im Register 230 gehalten wird, so dass ein anderer Teil des Programms ausgeführt wird. Bei einem unbedingten Sprung ändert der Befehl immer den Befehlszeiger im Register 230 auf einen neuen Wert. Für einen bedingten Sprung wird eine Bedingung festgelegt, damit der Befehlszeiger aktualisiert wird. Wenn die Bedingung nicht erfüllt ist, dann wird der Befehlszeiger auf einen Punkt im nächsten sequentiellen Befehl wie normal aktualisiert. Prozeduraufrufe können als unbedingte Sprünge durchgeführt werden, die die Adresse des nächsten sequentiellen Befehls in der Registerdatei 170 oder in der Pipe 171 speichern.
  • Ein Befehlssatz, der im beschriebenen Beispiel verwendet werden kann, ist folgendermaßen:
  • TABELLE B
    Figure 00230001
  • Den Operanden werden Beschreibungsnamen gegeben. Einige Befehle weisen weniger als drei Operanden auf und sie weisen folglich Leerstellen für die weggelassenen auf. Es ist selbstverständlich, dass ein spezieller Wert diesen weggelassenen Operanden gegeben wird, der ermöglicht, dass sie für die Weglassung im komprimierten Befehl wählbar sind. Das unkomprimierte Befehlsformat, das für einen Befehl ausgewählt wird (Formate 12 bis 15) hängt von den vom Programmierer ausgewählten Operanden ab. Der Bewegungsbefehl könnte beispielsweise ein Register oder die Pipe für den Ergebnisoperanden und einen Register-, Pipe- oder konstanten Wert für den Wertoperanden auswählen. Wenn der Wert keine Konstante ist, dann kann das Format 12 verwendet werden. Die Ergebnisadresse wird im Feld 2 gehalten, ein spezieller Wert für das Feld 3 wird eingefüllt und die Wertadresse wird in das Feld 4 gesetzt. Wenn der Wertoperand eine Konstante ist, dann könnten die Formate 13 und 14 in Abhängigkeit von der Länge der Konstante verwendet werden. Wenn der Wertoperand eine Konstante ist und der Ergebnisoperand die Pipe ist, dann kann das Format 15 zusätzlich zu den Formaten 13 und 14 verwendet werden. Sobald ein unkomprimiertes Format gewählt wurde, kann es komprimiert werden, wie 2 gestattet. Eine ähnliche Strategie kann für die anderen Befehle verwendet werden.
  • Die vom Operanden 2 und Operanden 3 festgelegten Werte werden an den Bus 53 der Quelle 2 bzw. den Bus 52 der Quelle 1 angelegt. Der Befehl führt dann seine Funktion durch. Schließlich wird der Ergebnisbus 54 an der durch den Ergebnisoperanden festgelegten Stelle gespeichert, wenn einer vorhanden ist.
  • Die Bedeutung dieser Befehle ist folgendermaßen:
    • Bewegen Der Wert auf dem Bus 52 der Quelle 1 wird in den Ergebnisbus 54 kopiert.
    • Addieren Der Wert auf dem Bus 52 der Quelle 1 wird zum Wert auf dem Bus 53 der Quelle 2 addiert und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Subtrahieren Der Wert auf dem Bus 53 der Quelle 2 wird vom Wert auf dem Bus 54 der Quelle 1 subtrahiert und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Multiplizieren Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 multipliziert und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Dividieren Der Wert auf dem Bus 52 der Quelle 1 wird durch den Wert auf dem Bus 53 der Quelle 2 dividiert und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Vektor laden Der Wert auf dem Bus 53 der Quelle 2 wird zum skalierten Wert auf dem Bus 52 der Quelle 1 addiert und das Ergebnis wird an den Ergebnisbus 54 angelegt. Dieser wird im temporären Register 240 gespeichert. Eine Spei cherleseoperation findet dann statt und der Spaicherwert wird an den Bus 53 der Quelle 1 angelegt. Das ALU 51 leitet diesen Wert unverändert zum Ergebnisbus 54 weiter.
    • Vektor speichern Der Wert auf dem Bus 53 der Quelle 2 wird zum skalierten Wert auf dem Bus 52 der Quelle 1 addiert und das Ergebnis wird an den Ergebnisbus 54 angelegt. Dieser wird im temporären Register 240 gespeichert. Der vom Operanden 1 adressierte Wert wird an den Bus 52 der Quelle 1 angelegt und das ALU 51 leitet diesen Wert unverändert zum Ergebnisbus 54 weiter. Eine Speicherschreiboperation findet dann statt, die den Wert auf dem Ergebnisbus 54 im Speicher speichert.
    • Springen Der Befehlszeiger 230 wird an den Bus 53 der Quelle 2 angelegt. Wenn der Operand 3 eine Konstante ist, wird das ALU 51 gesetzt, um eine Addition durchzuführen, ansonsten wird es gesetzt, um den Wert der Quelle 1 unverändert weiterzuleiten. Der Ergebnisbus 54 hält nun den Sprungzielwert. Dieser wird in die Abrufeinrichtung 60 geschrieben, der befohlen wird, das Abrufen einer neuen Sequenz von Befehlen zu beginnen.
    • Springen nicht Null Der vom Operanden 1 adressierte Wert wird an den Bus 52 der Quelle 1 angelegt und das Bedingungssignal 56 vom ALU 51 wird geprüft, um festzustellen, ob der Wert der Quelle 1 Null ist. Wenn er Null ist, dann wird keine weitere Handlung unternommen und der nächste sequentielle Befehl wird ausgeführt. Wenn der Wert nicht Null ist, dann finden dieselben Handlungen wie beim Sprungbefehl statt.
    • Aufrufen Der Befehlszeiger 230 wird an den Bus 53 der Quelle 2 angelegt und das ALU 51 gesetzt, um diesen zum Ergebnisbus 54 durchzuleiten. Der Ergebnisbuswert 54 wird an der Stelle gespeichert, die von der Adresse des Operanden 1 festgelegt wird. Anschließend finden dieselben Handlungen wie beim Sprungbefehl statt.
    • Gleich Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 verglichen. Ein Wert von 1 wird an den Ergebnisbus 54 angelegt, wenn sie gleich sind, ansonsten wird ein Wert von 0 an den Ergebnisbus 54 angelegt.
    • Größer als Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 verglichen. Ein Wert von 1 wird an den Ergebnisbus 54 angelegt, wenn die Quelle 2 größer ist als die Quelle 1, ansonsten wird ein Wert von 0 an den Ergebnisbus 54 angelegt.
    • Und Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 einer logischen Und-Verknüpfung unterzogen und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Oder Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 einer logischen Oder-Verknüpfung unterzogen und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Exklusiv-Oder Der Wert auf dem Bus 52 der Quelle 1 wird mit dem Wert auf dem Bus 53 der Quelle 2 einer logischen Exklusiv-Oder-Verknüpfung unterzogen und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Nach links schieben Der Wert auf dem Bus 52 der Quelle 1 wird um den Wert auf dem Bus 53 der Quelle 2 nach links (in Richtung des höchstwertigen Endes) verschoben und das Ergebnis wird an den Ergebnisbus 54 angelegt.
    • Nach rechts schieben Der Wert auf dem Bus 52 der Quelle 1 wird um den Wert auf dem Bus 53 der Quelle 2 nach rechts (in Richtung des niedrigstwertigen Endes) verschoben und das Ergebnis wird an den Ergebnisbus 54 angelegt.
  • Es ist zu sehen, dass die gemäß diesem Beispiel verwendeten Befehle so komprimiert werden, dass sie eine Länge von 1, 2, 3 oder 4 Bytes aufweisen können. Die Verwendung dieser komprimierten Befehle schafft eine größere Codedichte und der Vergleich mit einem Befehlssatz des Standes der Technik der in 1 gezeigten Art ist aus den folgenden Beispielen zu sehen, in denen die Überschrift "Herkömmlich" Befehle der in 1 gezeigten Art betrifft, und "Dieses Beispiel" das vorstehend beschriebene Beispiel betrifft. Ein (*) wird verwendet, um das Weglassen einer Adresse in einem ausgewählten Feld des Befehls zu bezeichnen, wodurch die Verwendung der impliziten Pipe 171 angegeben wird.
  • Einzelne Addition von Registern
  • Wenn die gewünschte Operation R3 = R2 + R1ist, wobei R1, R2 und R3 Registeradressen sind, die Stellen in der Registerdatei 170 bedeuten.
  • Herkömmlich
  • Ein einzelner Befehl führt die Operation durch.
  • Figure 00270001
  • Dieses Beispiel
  • Ein einzelner Befehl führt die Operation durch.
  • Figure 00270002
  • Da alle Operanden geliefert werden müssen, wird dies in vier Bytes codiert.
  • Einzelne Addition von impliziter Stelle
  • Wenn die gewünschte Operation zwei Werte addieren soll, die implizit festgelegt sind, und das Ergebnis in einer impliziten Stelle speichern soll.
  • Herkömmlich
  • Es gibt keine Bedeutung für diese Operation.
  • Dieses Beispiel
  • Ein einzelner Befehl führt die Operation durch.
  • Figure 00280001
  • Da keiner von Operanden geliefert werden muss, wird dies in einem Byte codiert.
  • Vektoraddition
  • Wenn die gewünschte Operation Ra[Ri] = Ra[Ri] + Rb[Ri]ist, wobei die Register Ra und Rb die Basisadressen von zwei Matrizes halten und das Register Ri einen Index zur Verwendung hält.
  • Herkömmlich
  • Vier Befehle sind erforderlich, unter Verwendung von 16 Bytes.
  • Figure 00280002
  • Dieses Beispiel
  • Vier Befehle sind erforderlich, jedoch einige der Operanden können weggelassen werden, und somit sind nur zehn Bytes erforderlich.
  • Figure 00290001
  • Gleichungsauswertung
  • Wenn die gewünschte Operation Ra = (Ra + Rb) × (Rc + Rd)ist, wobei Ra, Rb, Rc und Rd Registerstellen sind.
  • Herkömmlich
  • Drei Befehle, die in 12 Bytes und unter Verwendung von zwei temporären Registern codiert werden, sind erforderlich.
  • Figure 00290002
  • Dieses Beispiel
  • Drei Befehle sind erforderlich, aber da einige Operanden weggelassen werden können, sind 8 Bytes erforderlich.
  • Figure 00290003
  • Auswertung einer verschachtelten Gleichung
  • Wenn die gewünschte Operation Ra = (Ra + Rb) × (Rc – Rd) Re = (Re + Rf)/(Rg – Rh)ist.
  • Herkömmlich
  • Sechs Befehle und vier temporäre Register sind erforderlich. Dies benötigt 24 Bytes zur Codierung.
  • Figure 00300001
  • Dieses Beispiel
  • Sechs Befehle sind erforderlich, aber die vier temporären Werte können in der Pipe gehalten werden, so dass nur 16 Bytes erforderlich sind, um die Sequenz zu codieren.
  • Figure 00310001
  • Iterierte Vektorverschachtelung
  • Wenn die gewünschte Operation Ra [Ri] = (Ra[Ri] + Rb[Ri]) × (Rc[Ri] – Rd[Ri]) R[e]Ri = (Re[Ri] + Rf[Ri])/(Rg[Ri] – Rh[Ri])ist, wobei die Register Ra bis Rh die Basisadresse von 8 Matrizes mit der Größe von 1000 Einträgen halten und das Register Ri einen Index im Bereich von 0 bis 999 enthält.
  • Herkömmlich
  • 21 Befehle sind erforderlich, wobei 14 temporäre Register in 84 Bytes codiert werden.
  • Figure 00320001
  • Dieses Beispiel
  • 21 Befehle sind erforderlich, aber aufgrund der Befehlskomprimierung können diese nur in 56 Bytes codiert werden.
  • Figure 00330001
  • Die Erfindung ist nicht auf die Einzelheiten der vorangehenden Beispiele begrenzt. 7 stellt eine alternative Anordnung zum Ersatz von 5 und 6 dar. Bei dieser Alternative ist die Erweiterungseinheit 63 angeordnet, um Quellen- und Zieladressen zu liefern, die zyklisch sind, so dass sie auf einer First-in-first-out-Basis arbeiten und einige der Registerdateistellen anstelle der Pipe 171 verwenden können. Ähnliche Komponenten in 7 wie die bereits in 5 und 6 beschriebenen wurden mit denselben Bezugszeichen markiert und ihre Funktion wird nicht wiederholt. In diesem Fall sind der Eingangszeiger 196 und der Ausgangszeiger 211 Zwischenspeicher, die eine Zahl zwischen N und einschließlich N + M – 1 halten können. Diese sind die Registernummern in der Registerdatei 170, die als kreis förmiger Puffer verwendet werden kann, um die Anforderung für die separate Pipe 171 zu ersetzen. In dieser Weise können die Quellen- und die Zielselektoren an der Registerdatei 170 einige der Register in einer normal adressierten Weise auswählen und auf andere Register wird auf der Basis eines zyklischen kreisförmigen Puffers zugegriffen. Die Ausgaben 140, 141 und 145 vom Leitwegsucher 132 werden jeweils zu den Multiplexern 266, 267 und 268 geliefert. Der Multiplexer 268 ist angeordnet, um das Ausgangssignal 152 der Quelle 1 zu liefern. Der Multiplexer 267 liefert das Ausgangssignal für die Quelle 2 und der Multiplexer 266 liefert ein Ausgangssignal zu einem weiteren Multiplexer 270, der als seine Ausgabe die Zieladresse aufweist. Jedes der Ausgangssignale 140, 141 und 145 wird zu einer ähnlichen Vergleicherschaltung 271 zugeführt, die die Registernummern für jeden Operanden vom Leitwegsucher 132 vergleicht und ein Signal aktiviert, wenn sie der speziellen Registernummer, die die Pipe bezeichnet, entspricht. Diese spezielle Registernummer ist als irgendeines der M Register definiert, die den kreisförmigen Puffer bilden, da auf diese nicht direkt zugegriffen werden muss. Die Ausgabe der Vergleicher 271 wird jeweils einem ODER-Gatter 272 mit als zweitem Eingang einem Signal von der impliziten Freigabeschaltung 147, zugeführt. Der Multiplexer 268 besitzt eine zweite Eingabe vom Ausgangszeiger 211. Der Multiplexer 267 besitzt eine zweite Eingabe von einem Multiplexer 274, der angeordnet ist, um entweder die Ausgabe des Zeigers 211 oder ein Inkrement von 1 zu diesem Zeigerwert zu empfangen. Ebenso empfängt der Multiplexer 266 eine Eingabe von einem Multiplexer 275, der eine Ausgabe aus dem Multiplexer 274 oder ein Inkrement von 1 für diesen Wert empfängt.
  • Die Eingangsadresse in den Zeiger 211 wird von einem Multiplexer 276 gewonnen, der als seine Eingaben entweder die Ausgabe des Multiplexers 275 oder ein Inkrement von 1 für diesen Ausgangswert aufweist. Die ODER-Gatter 272 sind angeordnet, um eine erste Ausgabe zu einem jeweiligen UND-Gatter 280 zu liefern, das angeordnet ist, um eine zweite Eingabe von einer Schaltung 281 für verwendete Operanden zu empfangen. Der verwendete Operand 281 empfängt Eingaben des Operationscodesignals 131 sowie die Längen- und Artsignale 120 und 122. Die Ausgaben aus der Schaltung 281 geben an, welcher der drei Operanden Quellen sind und welcher das Ziel ist. Ihre Ausgaben werden den UND-Gattern 280 zugeführt, um eine geeignete Auswahl der Multiplexer 268, 267 und 266 zu ermöglichen. Eine weitere Ausgabe 283 aus der Schaltung 281 für verwendete Operanden wird einem weiteren UND-Gatter 284 zugeführt, das eine zweite Eingabe vom ODER-Gatter 272 empfängt. Diese steuert den Multiplexer 270, um zu ermöglichen, dass die Zielausgabe entweder vom Eingangszeiger 196 oder vom Multiplexer 266 gewonnen wird. Es ist zu sehen, dass jede der Einheiten zum Addieren von Eins eine Modulo-Addition der Eingangssignale durchführt, so dass, wenn ihnen der Wert N + M – 1 übergeben wird, das Ergebnis N ist. Das Fertig-Signal 212 steuert die Zwischenspeicherung des Ausgangszeigers 211 und des Eingangszeigers 196, um diese Zeiger zu aktualisieren, wenn die Ausführung eines Befehls beendet ist. Das UND-Gatter 193 ermöglicht nur die Aktualisierung des Eingangszeigers 196, wenn ein Wert aus der Pipe gelesen wurde, wie durch das UND-Gatter 284 angegeben. In dieser Weise können ausgewählte Register in der Registerdatei als kreisförmiger Puffer verwendet werden, um als First-in-firstout-Mehrfachwert-Datenspeicher zu wirken, und unter Verwendung der impliziten Freigabeschaltung 147 kann dies durchgeführt werden, selbst wenn die Längenund Artsignale 120 und 122 angeben, dass eine Quellen- oder Zieladresse im komprimierten Befehl weggelassen ist.
  • In den mit Bezug auf 2 beschriebenen Beispielen wird angenommen, dass irgendein weggelassenes Feld die implizite Speicherung darstellt, die von der Pipe 171 bereitgestellt wird. In dieser Weise wird, wenn der komprimierte Befehl erweitert wird, das weggelassene Feld durch einen Wert ersetzt, der die Adresse der Pipe 171 darstellt.

Claims (8)

  1. Computersystem mit einer logischen Schaltung (63), die angeordnet ist, um auf einen Befehlssatz zu antworten, der aufweist, mehrere Befehle (11) mit unterschiedlicher Bitlänge, wobei jeder der mehreren Befehle auf einem grundlegenden nicht komprimierten Format von verschiedener Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern (12, 13, 14, 15), jedes von einer jeweiligen vorbestimmten Bitlänge, basiert, wobei die logische Schaltung einen Ausgang zur Verfügung stellt, wodurch das Computersystem auf einen Befehl des Befehlssatzes antwortet, der ein ausgewähltes der Befehlsfelder, das einen Wert enthält, weglässt, wobei der Befehl Steuerbits (24, 26) enthält, die eine Länge des Befehls anzeigen, und welches Befehlsfeld weggelassen wird, wodurch die Bitlänge des Befehls komprimiert wird, wobei die logische Schaltung eine Speichersclialtung (146) und eine Auswählschaltung (143, 144, 145) aufweist, wobei die Speicherschaltung Informationen hält, die einen impliziten Speicherplatz (171) benennt, und wobei die Auswählschaltung betreibbar ist, um die Information in Reaktion auf die Steuerbits auszuwählen und um die Information als den Wert zuzuführen.
  2. Computersystem nach Anspruch 1, wobei die Wertigkeit eines enthaltenen Feldes durch die Steuerbits bestimmt wird.
  3. Computersystem nach Anspruch 1 oder 2, in welchem der implizite Speicherplatz. einen First-in-first-out-Datenspeicher (171) aufweist, der angeordnet ist, um gleichzeitig mehrere Datenwerte zu halten.
  4. Computersystem nach einem der voranstehenden Ansprüche, wobei jeder Befehl eine Bitlänge hat, die gleich einer integralen Anzahl von Bytes ist und wobei jedes Feld eine Bitlänge kleiner als ein Byte hat.
  5. Computersystem nach Anspruch 4, wobei das Format einer vorbestimten Bitlänge vier Bytes lang ist.
  6. Computersystem nach einem der Ansprüche 1 bis 5, wobei ausgewählte Befehle mehrere der Felder weglassen und die Steuerbits eine Anzeige von jedem weggelassenen Feld zur Verfügung stellen.
  7. Verfahren zur Erzeugung von Befehlen zur Verwendung bei dem Betrieb eines Computersystems, wobei das Computersystem ausgebildet ist, um Befehle (11) auszuführen, die von einem Befehlssatz ausgewählt sind, der mehrere Befehle aufweist, wobei jeder der mehreren Befehle auf einem grundlegenden unkomprimierten Format einer vorbestimmten Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern (12, 13, 14, 15) basiert, wobei das Verfahren die Schritte aufweist: Befehle werden eingegeben, wobei zumindest einige Befehle durch Weglassen von zumindest einem Befehlsfeld, das einen Wert enthält, komprimiert werden und die Steuerbits, (24, 26) enthalten, um eine komprimierte Länge und welches Feld weggelassen ist, anzuzeigen; die Steuerbits werden dekodiert und in Reaktion darauf: Informationen werden zugeführt, die dem Computersystem einen impliziten Speicherplatz (171) benennen, um den Wert des weggelassenen Feldes zu ersetzen.
  8. Computerprogrammabfolge, die in einem Speicher (41) gespeichert ist, wobei die Programmabfolge aufweist, mehrere Befehle von variabler Länge, die aus einem Befehlssatz ausgewählt sind, wobei jeder der mehreren Befehle auf einem grundlegenden unkomprimierten Format von einer vorbestimmten Bitlänge und einer vorbestimmten Abfolge von Befehlsfeldern basiert, wobei die Programmabfolge in einem Computersystem ausführbar ist, welches gemäß dem Verfahren nach Anspruch 7 arbeitet.
DE69534113T 1994-06-21 1995-05-26 Kompression der Befehlswörter eines Rechners Expired - Fee Related DE69534113T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9412434 1994-06-21
GB9412434A GB9412434D0 (en) 1994-06-21 1994-06-21 Computer instruction compression

Publications (2)

Publication Number Publication Date
DE69534113D1 DE69534113D1 (de) 2005-05-04
DE69534113T2 true DE69534113T2 (de) 2006-01-26

Family

ID=10757077

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69534113T Expired - Fee Related DE69534113T2 (de) 1994-06-21 1995-05-26 Kompression der Befehlswörter eines Rechners

Country Status (5)

Country Link
US (1) US6564314B1 (de)
EP (1) EP0689128B1 (de)
JP (1) JP2992223B2 (de)
DE (1) DE69534113T2 (de)
GB (1) GB9412434D0 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6618506B1 (en) * 1997-09-23 2003-09-09 International Business Machines Corporation Method and apparatus for improved compression and decompression
JP3123047B2 (ja) 1998-10-02 2001-01-09 日本電気株式会社 マイクロプロセッサ
US6338132B1 (en) * 1998-12-30 2002-01-08 Intel Corporation System and method for storing immediate data
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6865664B2 (en) * 2000-12-13 2005-03-08 Conexant Systems, Inc. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US7278137B1 (en) 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
EP1470476A4 (de) * 2002-01-31 2007-05-30 Arc Int Konfigurierbarer datenprozessor mit mehrlängen-anweisungssatz architektur
ITMI20022003A1 (it) * 2002-09-20 2004-03-21 Atmel Corp Apparecchio e metodo per la decompressione dinamica di programmi.
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409066B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
ES2257152B1 (es) * 2004-05-31 2007-07-01 Laboratorios Almirall S.A. Combinaciones que comprenden agentes antimuscarinicos y agonistas beta-adrenergicos.
US9557994B2 (en) * 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US8504849B2 (en) * 2004-12-21 2013-08-06 Sandisk Technologies Inc. Method for versatile content control
US20070168292A1 (en) * 2004-12-21 2007-07-19 Fabrice Jogand-Coulomb Memory system with versatile content control
US8051052B2 (en) * 2004-12-21 2011-11-01 Sandisk Technologies Inc. Method for creating control structure for versatile content control
US8601283B2 (en) * 2004-12-21 2013-12-03 Sandisk Technologies Inc. Method for versatile content control with partitioning
US7743409B2 (en) * 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
US20080010449A1 (en) * 2006-07-07 2008-01-10 Michael Holtzman Content Control System Using Certificate Chains
US8613103B2 (en) * 2006-07-07 2013-12-17 Sandisk Technologies Inc. Content control method using versatile control structure
US8245031B2 (en) * 2006-07-07 2012-08-14 Sandisk Technologies Inc. Content control method using certificate revocation lists
US8140843B2 (en) * 2006-07-07 2012-03-20 Sandisk Technologies Inc. Content control method using certificate chains
US8266711B2 (en) * 2006-07-07 2012-09-11 Sandisk Technologies Inc. Method for controlling information supplied from memory device
US8639939B2 (en) * 2006-07-07 2014-01-28 Sandisk Technologies Inc. Control method using identity objects
US20100138652A1 (en) * 2006-07-07 2010-06-03 Rotem Sela Content control method using certificate revocation lists
US20080165232A1 (en) * 2007-01-10 2008-07-10 Kenneth Yuen Ink cartridge
US9104618B2 (en) * 2008-12-18 2015-08-11 Sandisk Technologies Inc. Managing access to an address range in a storage device
WO2010084379A1 (en) * 2009-01-21 2010-07-29 Freescale Semiconductor, Inc. Microprocessor architecture and method of instruction decoding
CN102741817B (zh) * 2009-09-04 2015-12-16 英特尔公司 方法和装置和记录载体
US8793469B2 (en) * 2010-12-17 2014-07-29 Intel Corporation Programmable logic array and read-only memory area reduction using context-sensitive logic for data space manipulation
JP4862100B1 (ja) * 2011-03-25 2012-01-25 好一 北岸 中央演算処理装置及びマイクロコンピュータ
US9436474B2 (en) * 2012-07-27 2016-09-06 Microsoft Technology Licensing, Llc Lock free streaming of executable code data
GB2556886B (en) 2016-11-23 2019-05-15 Imagination Tech Ltd Encoding and decoding variable length instructions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3275989A (en) * 1961-10-02 1966-09-27 Burroughs Corp Control for digital computers
US3626374A (en) * 1970-02-10 1971-12-07 Bell Telephone Labor Inc High-speed data-directed information processing system characterized by a plural-module byte-organized memory unit
CA1114518A (en) * 1977-10-25 1981-12-15 William D. Strecker Central processor unit for executing instructions with a special operand specifier
US4530050A (en) * 1981-08-26 1985-07-16 Hitachi, Ltd. Central processing unit for executing instructions of variable length having end information for operand specifiers
US5434568A (en) * 1985-01-10 1995-07-18 Moll; Edward W. Data compression by removing repetition and unnecessary information
EP0461257B1 (de) * 1989-01-17 1997-04-23 Fujitsu Limited Ablaufsteuerung zur decodierung von befehlen variabler länge für ein mikroprozessor
US5142633A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Preprocessing implied specifiers in a pipelined processor
JP2970821B2 (ja) * 1991-08-21 1999-11-02 松下電器産業株式会社 データ処理装置
JPH05324314A (ja) * 1992-05-20 1993-12-07 Hitachi Ltd データ処理装置
US5463746A (en) * 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US5420923A (en) * 1993-02-16 1995-05-30 Scientific-Atlanta, Inc. Addressed messaging in a cable television system

Also Published As

Publication number Publication date
US6564314B1 (en) 2003-05-13
EP0689128B1 (de) 2005-03-30
JPH0816391A (ja) 1996-01-19
JP2992223B2 (ja) 1999-12-20
EP0689128A1 (de) 1995-12-27
DE69534113D1 (de) 2005-05-04
GB9412434D0 (en) 1994-08-10

Similar Documents

Publication Publication Date Title
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69635881T2 (de) VLIW-Befehlsprozessor mit variabler Wortlänge
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE3210816C2 (de)
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE3851746T2 (de) Sprungvorhersage.
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE2630323C3 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem HilfsSpeicher und einer Vorausschaulogik
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
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
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen
DE68925397T2 (de) Pipelineprozessor
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
DE2714805A1 (de) Datenverarbeitungssystem
DE3043653A1 (de) Datenverarbeitungsanlage
DE19824289C2 (de) Pipelineverarbeitungsmaschine
DE2926351A1 (de) Look-ahead-speicheradressen- steuereinrichtung

Legal Events

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