DE69838966T2 - Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen - Google Patents

Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen Download PDF

Info

Publication number
DE69838966T2
DE69838966T2 DE69838966T DE69838966T DE69838966T2 DE 69838966 T2 DE69838966 T2 DE 69838966T2 DE 69838966 T DE69838966 T DE 69838966T DE 69838966 T DE69838966 T DE 69838966T DE 69838966 T2 DE69838966 T2 DE 69838966T2
Authority
DE
Germany
Prior art keywords
field
instruction
code
constant
bits
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 - Lifetime
Application number
DE69838966T
Other languages
English (en)
Other versions
DE69838966D1 (de
Inventor
Shuichi Takarazuka-shi Takayama
Nobuo Osaka-shi Osaka-fu Higaki
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=15685098&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69838966(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE69838966D1 publication Critical patent/DE69838966D1/de
Publication of DE69838966T2 publication Critical patent/DE69838966T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

  • Hintergrund der Erfindung
  • (1) Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf einen Prozessor mit einer VLIW(Very Long Instruction Word)-Architektur und im Besonderen auf einen Prozessor, der Befehle mit vergleichsweise kurzer Wortlänge und hoher Codeeffizienz ausführt.
  • (2) Beschreibung des Standes der Technik
  • Mit der steigenden Nachfrage nach Multimediageräten und der Miniaturisierung elektronischer Schaltkreise in den letzten Jahren gab es einen wachsenden Bedarf an Mikroprozessoren, die multimediale Daten, wie Audio- und Bilddaten, mit hoher Geschwindigkeit verarbeiten. Eine Art von Prozessoren, die in der Lage sind, diese Bedürfnisse zu erfüllen, sind Prozessoren, die eine VLIW-Architektur verwenden; diese werden nachfolgend als VLIW-Prozessoren bezeichnet.
  • VLIW-Prozessoren umfassen eine Anzahl interner Operationseinheiten und sind so in der Lage, gleichzeitig eine Anzahl Operationen in einem VLIW parallel auszuführen. Solche VLIWs werden durch einen Compiler erzeugt, der untersucht, bis zu welchem Ausmaß Parallelverarbeitung auf Quellcode-Level möglich ist und der den Programmablauf durchführt. Für „Embedded"-Mikroprozessoren, die in Konsumergeräten verwendet werden, ist es jedoch wichtig, die Codegröße von Programmen niedrig zu halten, sodass 256-Bit-VLIWs, die mit ihrem hohen Auftreten von No-Operation-Befehlen (im Folgenden als „NOP-Befehle" bezeichnet) und der sich daraus ergebenden schlechten Codeeffizienz weit entfernt vom Ideal sind.
  • Ein Beispiel eines VLIW-Prozessors, der Befehle mit relativ kurzer Wortlänge ausführt, zeigt die offengelegte japanische Patentanmeldung H09-26878 . Diese Ausführung zeigt ein Datenverarbeitungsgerät, das ein VLIW-Prozessor ist, um 32-Bit-Befehle auszuführen, die gleichzeitig maximal zwei Operationen beeinhalten.
  • Die 1A und 1B zeigen das Befehlsformat des spezifizierten Verfahrens, wobei 1A das Befehlsformat zur gleichzeitigen Kennzeichnung von zwei Operationen und 1B das Befehlsformat zur Kennzeichnung nur einer Operation zeigt. Diese Technik zielt darauf ab, die Codeeffizienz durch Einfügen eines 2-Bit-Wertes in das Formatfeld 410 zu verbessern, welches für jeden Befehl die Anzahl der Operationen und die Reihenfolge der Ausführung angibt.
  • Die Angabe eines Maximums von zwei Operationen durch einen einzigen 32-Bit-Befehl erreicht jedoch nicht einen genügenden Parallelisierungsgrad. Es tritt auch das Problem der Verminderung der Codeeffizienz der Befehle auf, wenn eine Operation unter Verwendung einer Konstanten durchgeführt wird, die die gegebene Wortlänge überschreitet. Als Beispiel werden, wenn eine 32-Bit-Konstante in obere 16-Bit und in untere 16-Bit aufgeteilt wird, sodass sie in Registern gesetzt werden kann, zwei 32-Bit-Befehle erforderlich, nur um eine Operation anzuzeigen, die diese Konstante verwendet.
  • Zusammenfassung der Erfindung
  • Aufgabe der vorliegenden Erfindung ist es, einem VLIW-Prozessor zur Verfügung zu stellen, um Befehle mit vergleichsweise kurzer Wortlänge auszuführen, die eine Struktur aufweisen, wobei die Überalles-Codeeffizienz vergleichsweise unbeeinflusst bleibt, auch dann, wenn Konstanten mit vergleichsweise langer Wortlänge verarbeitet werden.
  • In Anbetracht der festgestellten Probleme ist es bevorzugtes Ziel der vorliegenden Erfindung einen VLIW-Prozessoren zur Verfügung zu stellen, der Befehle mit vergleichsweise kurzer Wortlänge ausführt, die aber einen hohen Grad der Parallelisierung und eine höchst effiziente Codestruktur aufweisen, sodass mehrere Operationen gleichzeitig angegeben werden können. Als ein Beispiel können drei oder mehr Operationen durch einen einzigen 32-Bit-Befehl angegeben werden.
  • Die Erfindung stellt einen VLIW-Prozessor gemäß Anspruch 1 bereit. Ein Prozessor mit in den Merkmalen des Oberbegriffs von Anspruch 1 ist in EP-A-0426393 offengelegt.
  • In einer möglichen Ausgestaltung kann das erste Operationsfeld nur den Einfach-Operationscode und das zweite Operationsfeld nur die Kombination aus einem Operationscode und mindestens einem Operand, der in einer Operation verwendet wird, die die durch das zweite Operationsfeld angegeben ist, enthalten.
  • Auf diese Weise kann, weil mindestens eine Operation in dem Befehl durch bloßes Einfügen eines Operationscodes ohne explizite Angabe eines Operanden angegeben werden kann, die Wortlänge der Befehle reduziert werden. Als Ergebnis erhält man ein VLIW-Prozessor, der Befehle von vergleichsweise kurzer Wortlänge ausführt, der aber eine höchst effiziente Codestruktur aufweist, sodass mehrere Operationen gleichzeitig angegeben werden können.
  • Hierbei kann die Anzahl der Bits, die durch den Operationscode in dem ersten Operationsfeld belegt werden, gleich einer Anzahl von Bits sein, die durch den Operationscode in dem zweiten Operationsfeld belegt werden.
  • Als Ergebnis sind alle Operationscodes, die in einem Befehl enthalten sind, aus der gleichen Anzahl von Bits zusammengesetzt, was die Komponenten, wie die Decoder-Schaltkreise, vereinfacht.
  • Hierbei kann der Befehl drei Operationsfelder enthalten, wobei das dritte Operationsfeld der drei Operationsfelder die gleiche Anzahl von Bits umfassen kann wie das zweite Operationsfeld und eine Kombination von einem Operationscode und wenigstens einem Operanden enthalten kann; der VLIW-Prozessor umfasst dabei: eine dritte Decodiereinheit, die, wenn ein Operationscode in dem dritten Operationsfeld vorliegt, den Operationscode in dem dritten Operationsfeld decodiert; und eine dritte Ausführungseinheit, um eine Operation, die durch den Operationscode in dem dritten Operationsfeld angegeben ist, mit Daten, die durch die Operanden in dem dritten Operationsfeld angegeben sind, gemäß dem Decodierergebnis der dritten Decodiereinheit auszuführen.
  • Als Ergebnis erhält man einen VLIW-Prozessor mit einem hohen Parallelisierungsgrad, wobei drei Operationen gleichzeitig durchgeführt werden können.
  • Hierbei kann die erste Ausführungseinheit eine Ablaufsteuerung eines Programms kontrollieren, das den Befehl enthält.
  • Als Ergebnis können Sprungoperationen, die normalerweise keine große Anzahl von Bits erfordern, einem kurzen Operationsfeld zugewiesen werden. Das bedeutet, dass ein Befehlssatz mit hoher Codeeffizienz definiert werden kann.
  • Hierbei kann die zweite Ausführungseinheit die Übertragung der Daten steuern, die durch die Operanden angegeben werden, die in dem zweiten Operationsfeld enthalten sind, die dritte Ausführungseinheit führt die arithmetisch-logischen Operationen mit den Daten aus, die durch die Operanden bestimmt sind, die in dem dritten Operationsfeld enthalten sind.
  • Als Ergebnis kann die Datenübertragung zu und von einem externen Speicher durch eine einzige Operation in einem Befehl angegeben werden, sodass der Operanden-Zugriffs-Schaltkreis, mit dem der VLIW Prozessor ausgestattet sein soll, vereinfacht werden kann.
  • Mit dem angegebenen Aufbau in Anspruch 1 kann, wenn es notwendig ist bedeutungslose Codes in einem Operationsfeld eines Befehls unterzubringen, eine Konstante, die von verschiedenen Operationen verwendet wird, statt dessen eingefügt werden, sodass ein VLIW-Prozessor zur Ausführung von Befehlen realisiert werden kann, die trotz einer kurzen Wortlänge eine hohe Codeeffizienz aufweisen.
  • Hier enthält der Befehl auch ein Formatfeld, das einen Formatcode enthält, der angibt, ob sich nur eine Konstante in dem ersten Operationsfeld befindet und ob sich nur eine Konstante in dem zweiten Operationsfeld befindet, wobei der VLIW-Prozessor weiterhin umfasst: eine Format-Decodiereinheit zur Decodierung des Formatcodes; und eine Konstanten-Speichereinheit zum Extrahieren der Konstanten aus dem Befehl und zum Speichern der extrahierten Konstanten, wenn ein Decodierergebnis der Format-Decodiereinheit zeigt, dass nur eine Konstante in mindestens einem von dem ersten Operationsfeld und dem zweiten Operationsfeld vorliegt.
  • Demzufolge können Konstanten, die in einem Operationsfeld untergebracht sind, in einer Konstanten-Speichereinheit gespeichert werden, um von einer Operation in einem späteren Befehl verwendet zu werden, sodass eine Verminderung der Codeeffizienz vermieden werden kann, sogar dann, wenn bei Verwendung von Befehlen mit vergleichsweise kurzer Wortlänge Konstanten mit einer vergleichsweisen langen Wortlänge verarbeitet werden.
  • Hierbei können das Formatfeld, das erste Operationsfeld, der Operationscode in dem zweiten Operationsfeld, jeder Operand in dem zweiten Operationsfeld, der Operationscode in dem dritten Operationsfeld und jeder Operand in dem dritten Operationsfeld jeweils n Bits in dem Befehl belegen.
  • Mit dem angegebenen Aufbau weisen alle Felder, die einen Befehl bilden, die gleiche Anzahl von Bits auf, was ermöglicht, die internen Schaltkreise des VLIW-Prozessors zu vereinfachen.
  • Dabei kann der VLIW-Prozessor umfassen: eine Ladeeinheit zum Laden des L-Bit-Befehls, der n Operationsfelder umfasst; und n Operationseinheiten, von denen jede mit einem anderen der n Operationsfelder in dem geladenen Befehl verbunden ist und jede unabhängig eine Operation in dem verbundenen Operationsfeld parallel zu den anderen ausführt; der VLIW-Prozessor ist dadurch charakterisiert, dass die n Operationsfelder nicht alle die gleiche Größe aufweisen und dadurch, dass L kein ganzzahliges Vielfaches von n ist.
  • In dem angegebenen Aufbau besteht keine Notwendigkeit, dass alle Operationsfelder eines Befehls die gleiche Wortlänge aufweisen, wodurch es möglich ist, Befehle mit hoher Codeeffizienz zu spezifizieren. Demzufolge erhält man einen VLIW-Prozessor, der Befehle mit vergleichsweise kurzer Wortlänge ausführt, der aber eine höchst effiziente Codestruktur aufweist, sodass mehrere Operationen gleichzeitig angegeben werden können.
  • Vorliegend kann n gleich drei und L gleich 32 sein.
  • Der angegebene Aufbau verwirklicht einen VLIW-Prozessor mit einem hohen Parallelisierungsgrad, wobei drei Operationen, die in einem einzigen 32-Bit-Befehl spezifiziert sind, gleichzeitig ausgeführt werden können.
  • Vorliegend kann die Anzahl von Operanden, die in mindestens einem der n Operationsfelder enthalten sind, verschieden sein gegenüber einer Anzahl von Operanden in einem anderen der n Operationsfelder.
  • In dem angegebenen Aufbau besteht keine Notwendigkeit, dass jedes Operationsfeld eines Befehls die gleiche Anzahl von Operanden aufweist, sodass Befehlsformate mit einem hohen Grad an Codeeffizienz spezifiziert werden können.
  • Hierbei können die n Operationsfelder mindestens ein Operationsfeld enthalten, welches nur aus einem Operationscode besteht und mindestens ein Operationsfeld, das aus einem Operationscode und mindestens einem Operanden besteht.
  • In dem angegebenen Aufbau ist die Wortlänge eines Befehls kürzer als in dem Fall, wo jedes Operationsfeld eines Befehls eine Kombination aus einem Operationscode und Operanden enthält, sodass ein VLIW-Prozessor verwirklicht werden kann, der Befehle ausführt, die einen höchst effizienten Code Aufbau aufweisen.
  • Wie oben beschrieben, verwirklicht die vorliegende Erfindung einen VLIW-Prozessor, der Befehle von vergleichsweise kurzer Wortlänge ausführt, der aber eine höchst effiziente Codestruktur aufweist, die es erlaubt, mehrere Operationen durch einen einzigen Befehl zu spezifizieren. Dieses Ergebnis ist besonders beachtlich für „Embedded"-Prozessoren, die Multimediadaten verarbeiten.
  • Kurze Beschreibung der Zeichnungen
  • Diese und andere Aufgaben, Vorteile und Merkmale der Erfindung werden in Verbindung mit den begleitenden Zeichnungen aus der folgenden Beschreibung ersichtlich, wobei die Zeichnungen eine besondere Ausgestaltung der Erfindung darlegen. Die Zeichnungen:
  • 1A und 1B zeigen Befehlsformate, die in dem Stand der Technik verwendet werden, wobei 1A ein Befehlsformat zeigt, bei dem zwei Operationen angegeben sind und 1B ein Befehlsformat zeigt, wo nur eine Operation angegeben ist;
  • 2 zeigt die Feldstruktur eines Befehls, der durch den Prozessor der vorliegenden Erfindung ausgeführt wird;
  • Die 2B bis 2D zeigen 16 Ausführungen eines Befehlsformats, wobei 2B 3-fach-Operations-Befehle, 2C 2-fach-Operations-Befehle und 2D Einfach-Operations-Befehle zeigt;
  • 3 ist eine Tabelle, die besondere Operationen zeigt, die durch die drei Ausführungen des Befehlscodes „cc", „op1" und „op2" angegeben sind, die in den 2B bis 2D verwendet werden;
  • 4 ist ein Blockdiagramm, das den Hardware-Aufbau des vorliegenden Prozessors zeigt;
  • 5 ist ein Blockdiagramm, das den detaillierten Aufbau des Konstantenregisters 36 des vorliegenden Prozessors und die Peripherie-Schaltkreise zeigt;
  • Die 6A bis 6D sind Darstellungen verschiedener Verfahren zur Speicherung einer Konstanten durch die Konstantenregister-Kontrolleinheit 32, gezeigt in 5, wobei 6A den Fall zeigt, wenn der Formatcode „0" oder „1" ist, 6B zeigt den Fall, wenn der Formatcode „4" ist, 6C zeigt den Fall, in dem der Formatcode „5" ist und 6 zeigt den Fall, wenn der Formatcode „2", „3" oder „A" ist;
  • 7 ist ein Blockdiagramm, das den detaillierten Aufbau der PC-Einheit 33 des vorliegenden Prozessors zeigt;
  • 8 ist ein Flussdiagramm, das den Ablauf einer Prozedur zeigt, die eine 32-Bit-Konstante verarbeitet;
  • 9 zeigt ein Beispiel eines Programms, das der vorliegende Prozessor aufweist, um die Prozedur, die in 8 gezeigt ist, auszuführen;
  • 10 ist ein Zeitdiagramm, das die Arbeitsweise des vorliegenden Prozessors zeigt, wenn er das Programm in 9 ausführt;
  • 11 ist ein Beispiel eines Programms, das der vorliegende Prozessor aufweist, um die Prozedur auszuführen, die eine 16-Bit-Konstante verarbeitet;
  • 12A zeigt die Felddefinition von Befehlen, die von einem Standardprozessor ausgeführt werden;
  • 12B zeigt das Befehlsformat der Befehle aus 12A;
  • 13 zeigt ein Beispiel eines Programms, das ein Standardprozessor aufweist, um die gleiche Prozedur wie in dem Programm in 9 auszuführen;
  • 14 zeigt ein Beispiel eines Programms, das ein Standardprozessor aufweist, um die gleiche Prozedur wie in dem Programm in 11 auszuführen;
  • die 15A bis 15D zeigen Modifikationen der Befehlsstruktur, die durch den VLIW-Prozessor der vorliegenden Erfindung ausgeführt werden; und
  • 16 zeigt eine Modifikation des Hardware-Aufbaus des vorliegenden Prozessors, um die Ausführung der Befehle, die in 15A angezeigt sind, zu ermöglichen.
  • Beschreibung der bevorzugten Ausgestaltung
  • Eine Ausgestaltung des Prozessors der vorliegenden Erfindung ist im Folgenden mit Bezug auf die Zeichnungen beschrieben. In dieser Ausgestaltung bezeichnet der Ausdruck "Befehl" einen Codesatz, der durch den vorliegenden Prozessor parallel decodiert und ausgeführt wird, der Ausdruck "Operation" bezieht sich auf einen Verarbeitungsschritt, wie eine arithmetische Operationen, eine logische Operation, eine Übertragung oder eine Verzweigung, der durch den vorliegenden Prozessors parallel ausgeführt wird sowie auf einen Code, der jeden Prozessschritt kennzeichnet.
  • Befehlsformat
  • Zuerst soll die Struktur der Befehle, die durch den vorliegenden Prozessor decodiert und ausgeführt werden, beschrieben werden. Der vorliegende Prozessor ist ein VLIW-Prozessor, der Befehle mit einer festen Wortlänge von 32 Bits decodiert und ausführt.
  • 2A zeigt die Feldstruktur eines Befehls 50, der von dem vorliegenden Prozessor ausgeführt werden soll. Die 2B bis 2D zeigen derweil 16 Befehlsformate. Von diesen geben die Befehlsformate in 2B drei Operationen, die Befehlsformate in 2C zwei Operationen und die Befehlsformate in 2D eine Einfach-Operation an.
  • Der Befehl 50 hat eine feste Wortlänge von 32 Bits und setzt sich zusammen aus 8 physikalischen 4-Bit-Feldern, in der Reihenfolge anfangen von dem MSB (Most Significant Bit) als P0.0 Feld 51, P1.0 Feld 52, ..., P3.2 Feld 58 in 2A. Von diesen wird der Bereich von dem P2.0 Feld 53 bis zu dem P2.2 Feld 55 erstes Operationsfeld 59 genannt, während der Bereich von dem P3.0 Feld 56 bis zu dem P3.2 Feld 58 zweites Operationsfeld 60 genannt wird.
  • In den 2B bis 2D, verweist die Beschriftung „const" auf eine Konstante und in Abhängigkeit der Operation, in welcher diese verwendet wird, kann diese eine numerische Konstante oder eine Zeichen-Konstante sein, wie beispielsweise eine direkte, absolute Adresse oder ein Versatz. Die Beschriftung „op" repräsentiert einem Operationscode, der einem Operationstyp angibt, während die Beschriftung „Rs" das Register repräsentiert, das als Quelloperand verwendet wird, „Rd" das Register repräsentiert, welches als Zieloperand verwendet wird und „cc" einen Operationscode repräsentiert, der eine Sprungoperation angibt, die den gespeicherten Wert eines speziellen 32-Bit-Registers verwendet (das Konstanten-Register 36, gezeigt in 4), der in dem vorliegenden Prozessor als absolute oder eine relative Adresse (Versatz) eines Sprungziels bereitgestellt wird.
  • Der numerische Wert, der unmittelbar hinter den oben beschriebenen Codes angegeben ist, zeigt die Werte, die in einer Operation entweder des ersten Operationsfeldes 59 oder des zweiten Operationsfeldes 60 verwendet werden. Als Beispiel für das Befehlsformat mit dem Formatcode „6" werden die 4-Bit-Konstante „const1" in dem P1.0 Feld 52 und die 4-Bit-Konstante „const1", die sich in dem P2.1 Feld 54 befindet, zu einer 8-Bit-Konstanten kombiniert, die den Quelloperand entsprechend dem Operationscode „op1" des ersten Operationsfeld 59 darstellt.
  • Die Konstante "const", die nicht mit einer angefügten Nummer versehen ist, stellt eine Konstante dar, die in dem vorliegenden Prozessor in dem speziellen 32-Bit-Register zu speichern ist (das Konstanten-Register 36, gezeigt in 4). Als ein Beispiel des Befehlsformats mit dem Formatcode "0" bedeutet die 4-Bit-Konstante "const", die sich in dem P1.0 Feld 52 befindet, die Konstante, die in dem Konstanten-Register 36 zu speichern ist, welches implizit angegeben ist.
  • 3 zeigt besondere Beispiele der Operationen, die durch die drei Arten des Operationscodes "cc", "op1" und "op2", gezeigt in den 2B bis 2D, angegeben werden können. Diese Operationen werden weiter unten im Detail beschrieben.
  • Der 4-Bit-Operationscode "cc" gibt einen der 16 Arten von Sprungbefehlen an. Jeder Sprungbefehl ist als Sprungbedingung und als Sprungformat festgelegt. Beispiele von Sprungbedingungen beinhalten "gleich (,eq')", "ungleich (,neq')" und "größer als (,gt')". Das Sprungformat kann ein Format sein, wo der gespeicherte Wert des Konstanten-Registers 36 als absolute Adresse des Sprungziels dient (bezeichnet dadurch, dass kein "i" dem Befehls-Mnemonic angehängt ist) oder ein Format, in dem der gespeicherte Wert des Konstanten-Registers 36 als relative Adresse dient, bezeichnet durch ein an den Befehls-Mnemonic angehängtes "i"). Als Beispiel gibt der Operationscode "eq" eine Operation wieder, die zu einem Ziel verzweigt, dass durch absolute Adressierung angegeben ist, wenn ein vorhergehender Vergleich ergibt, dass die verglichenen Werte gleich sind, während der Operationscode "eqi" eine Operation wiedergibt, die mittels relativer Adressierung zu einem Ziel verzweigt, wenn ein vorhergehende Vergleich ergibt, dass die verglichenen Werte gleich sind.
  • Der 4-Bit-Operand "op1" kann verwendet werden, um eine arithmetisch-logische Operation anzugeben, wie beispielsweise "add" (Addition), "sub" (Subtraktion), "mul" (Multiplikation), "and" (logisches UND) oder "or" (logisches ODER) oder eine Operation, die eine Inter-Register Übertragung ist, wie beispielsweise "mov" (Übertragung von Wort (32-Bit)-Daten), "movh" (Übertragung von Halbwort-Daten) oder "movb" (Übertragung von einem Datenbyte).
  • Der 4-Bit-Operand "op2" kann verwendet werden, um irgendeine der arithmetischlogischen Operationen oder Inter-Register-Übertragungen anzugeben, die durch den Operand "op1" bezeichnet werden können, kann aber auch verwendet werden, um eine Register-Speicher-Übertragungsoperation anzugeben, wie "ld" (Laden eines Datenwortes von dem Speicher in ein Register) oder "st" (Speicherung eines Datenwortes vom Register in den Speicher).
  • Die kennzeichnenden Merkmale der Felder 51, 52, 59 und 60, gezeigt in 2A werden im Folgenden beschrieben.
  • Das P0.0 Feld 51 enthält einen 4-Bit-Formatcode, der das Format des Befehls 50 bestimmt. Genauer gesagt, bestimmt dieses P0.0 Feld 51 einen der 16 Befehlsformate, die in den 2B bis 2D gezeigt sind.
  • Das P1.0 Feld 52 ist ein Feld, das eine Konstante oder einen Operationscode für eine Sprungoperation enthält. Wenn sich eine Konstante in dem P1.0 Feld 52 befindet (wie beispielsweise in den Befehlen mit den Befehlscodes "0", "1" und "4" bis "9"), gibt es Fälle, in denen die Konstante in dem Konstanten-Register 36 zu speichern ist (so wie in den Befehlen mit dem Formatcodes "0", "1", "4" und "5"), und Fälle, in denen die Konstante einen Teil des Operanden des ersten Operationsfeldes 59 oder des zweiten Operationsfeldes 60 bildet (so wie in den Befehlen mit den Formatcodes "5", "7", "8", "9" und "B"). Wenn die Konstante in dem P1.0 Feld 52 in dem Konstanten-Register 36 zu speichern ist, gibt es Fälle, wo nur eine 4-Bit-Konstante gespeichert wird (wie beispielsweise in den Befehlen mit dem Formatcodes "0" und "1"), und Fälle, in denen diese Konstante zusammen mit einer 12-Bit-Konstanten gespeichert wird, die sich entweder in dem ersten Operationsfeld 59 oder dem zweiten Operationsfeld 60 befindet (wie beispielsweise in den Befehlen mit den Formatcodes "4" und "5").
  • Wenn der Operationscode "cc" zur Verzweigung in dem P1.0 Feld 52 aufgeführt ist (wie in den Befehlen mit den Formatcodes "2", "3" und "A"), bezeichnet dies eine Sprungoperation, die als absolute Adresse oder relative Adresse (Versatz) eines Sprungziels den gespeicherten Wert des Konstanten-Registers 36 verwendet.
  • Das erste Operationsfeld 59 enthält entweder eine Konstante oder eine Kombination von (a) einem Operationscode, um eine Operation anzugeben (wie zum Beispiel eine arithmetisch-logische Operation oder eine Inter-Register-Übertragung, die keine Datenübertragung zwischen dem vorliegenden Prozessor und der Peripherie (Speicher) einbezieht und (b) Quell- und Ziel-Operanden für die Operation.
  • Das zweite Operationsfeld 60 kann den gleichen Inhalt wie das erste oben beschriebene Operationsfeld 59 aufweisen, aber kann auch alternativ eine Kombination von (a) einem Operationscode zur Angabe einer Operation (wie beispielsweise eine Speicher-Register-Übertragung) enthalten, die einen Datentransfer zwischen dem vorliegenden Prozessor und der Peripherie einbezieht und (b) Operanden für die Operation.
  • Die oben beschriebene Zuordnung verschiedener Operations-Typen zu bestimmten Feldern beruht auf den Voraussetzungen für den vorliegenden von Neumann-Prozessor-Typ, wobei es nicht notwendig ist, dass zwei oder mehrere Sprungoperationen gleichzeitig verarbeitet werden und dass nur ein Eingangs-/Ausgangs-Port (die Operanden-Zugriffseinheit 40 in 4) zur Übertragung der Operanden zwischen dem vorliegenden Prozessor und der Peripherie (Speicher) bereitgestellt wird.
  • Die in den 2B bis 2D gezeigten Befehlsformate weisen folgende kennzeichnenden Merkmale auf.
  • Zunächst kann mit Blick auf die Konstante "const" festgestellt werden, dass es die folgenden drei Befehlsarten zur Speicherung einer Konstanten in dem Konstanten-Register 36 gibt.
    • (1) Wenn der Formatcode "0" oder "1" ist: In diesen Befehlen wird die 4-Bit-Konstante, die sich in dem P1.0 Feld 52 befindet, in dem Konstanten-Register 36 gespeichert.
    • (2) Wenn der Formatcode "4" ist: In diesen Befehl wird eine 16-Bit-Konstante, die sich in dem P1.0 Feld 52 bis P2.2 Feld 55 befindet, in dem Konstanten-Register 36 gespeichert.
    • (3) Wenn der Formatcode "5" ist: In diesem Befehl wird eine 16-Bit-Konstante, die sich in den Formatfeldern P1.0 Feld 52 und dem P3.0 Feld 56 bis P3.2 Feld 58 befindet, in dem Konstanten-Register 36 gespeichert.
  • Zweitens können für den vorliegenden Prozessor maximal drei Operationen durch einen einzigen Befehl angegeben werden, wobei in diesem Fall, wie aus dem 3-fach-Operationsformat in 2B ersichtlich ist, eine der folgenden Kombinationen von Operationstypen verwendet werden kann.
    • (1) Eine Operation, die eine 4-Bit-Konstante in dem Konstanten-Register 36 und zwei Standardoperationen bestimmt (wenn der Formatcode "0" oder "1" ist).
    • (2) Eine Operation, die eine Verzweigung ausführt unter Verwendung des Wertesatzes, der in dem Konstanten-Register 36 als eine absolute oder relative Adresse steht und unter Verwendung von zwei Standardoperationen (wenn der Formatcode "2" oder "3" ist).
  • Wie oben beschrieben, weisen die Befehle des vorliegenden Prozessors eine höchst effiziente Feldstruktur auf, die es ermöglicht, ein Maximum von drei Operationen durch einen einzigen 32-Bit-Befehl gleichzeitig anzugeben.
  • Hardware Aufbau des Prozessors
  • Im Folgenden wird der Hardware-Aufbau des vorliegenden Prozessors beschrieben. 4 ist ein Blockdiagramm, das den Hardware-Aufbau des Prozessors der vorliegenden Erfindung zeigt. Wie oben beschrieben, ist dieser Prozessor ein VLIW-Prozessor, der maximal drei Operationen parallel ausführen kann. Der Aufbau dieses Prozessors kann grob in ein Befehls-Register 10, eine Decodiereinheit 20 und eine Ausführungseinheit 30 aufgeteilt werden.
  • Das Befehlsregister 10 ist ein 32-Bit-Register, das einen Befehl speichert, der von der Befehlsladeeinheit 39 gesendet worden ist.
  • Die Decodier-Einheit 20 decodiert den in dem Befehlsregister 10 aufgenommenen Befehl und liefert in Übereinstimmung mit dem Decodierergebnis über Steuerleitungen eine Ausgabe an die Ausführungseinheit 30. Diese Decodiereinheit 20 kann selber näherungsweise in den Format-Decoder 21 und den Befehls-Decoder 22 aufgeteilt werden.
  • Der Befehls-Decoder 22 setzt sich zusammen aus einem Sprung-Decoder 23, der den "cc"-Operationscode, der in dem P1.0 Feld 12 bereitgehalten wird, decodiert und die PC-Einheit 33 entsprechend steuert, einem ersten Operations-Decoder 24, der den Operationscode decodiert, der in dem P2.0 Feld 13 bereitgehalten wird, und die erste Operationseinheit 37 entsprechend steuert und einem zweiten Operations-Decoder 25, der den Operationscode, der in dem P3.0 Feld 16 bereitgehalten wird, decodiert und die zweite Operationseinheit 38 und die Operanden-Zugriffseinheit 40 entsprechend steuert.
  • Der Format-Decoder 21 decodiert den von dem P0.0 Feld 11 aufgenommenen 4-Bit-Formatcode, um das Befehlsformat des Befehls zu identifizieren, der in dem Befehls-Register 10 als einer von 16 möglichen Befehlsformaten, gezeigt in 2B bis 2D, aufgenommen ist. In Übereinstimmung mit dem Decodierergebnis erlaubt oder verbietet der Format-Decoder 21 Decodieroperationen durch den Sprung-Decoder 23, den ersten Operations-Decoder 24 und den zweiten Operations-Decoder 25 und aktiviert die Register-Steuereinheit 32 der Ausführungseinheit 30.
  • Der Format-Decoder 21, der Sprung-Decoder 23, der erste Operations-Decoder 24 und der zweite Operations-Decoder 25 decodieren grundsätzlich eine Operation in einem Zyklus und senden Steuersignale an die Ausführungseinheit 30. Hierbei stellt die 28-Bit-Steuersignalverbindung 26, die das Befehls-Register 10 mit der Ausführungseinheit 30 verbindet, einen Bus dar, um die Konstanten und Operanden, die sich in dem Befehls-Register 10 befinden, zu der Ausführungseinheit 30 zu übertragen.
  • Die Ausführungseinheit 30 arbeitet entsprechend dem Decodier-Ergebnis der Decodier-Einheit 20 und stellt einen Schaltkreis dar, der in der Lage ist, maximal drei Operationen parallel auszuführen. Die Ausführungseinheit 30 setzt sich zusammen aus einer Ausführungs-Steuereinheit 31, einer PC-Einheit 33, einem Registersatz 34, einer ersten Operationseinheit 37, einer zweiten Operationseinheit 38, einer Befehlsladeeinheit 39 und einer Operanden-Zugriffseinheit 40. Von diesen Komponenten werden die Ausführungseinheit 30, der Aufbau der Register-Steuereinheit 32, die PC-Einheit 33 und das Konstanten-Register 36 detaillierter in anderen Zeichnungen dargestellt.
  • Die Ausführungs-Steuereinheit 31 bezieht sich im Allgemeinen auf die Steuerungskreise und die Verschaltung zur Steuerung der Komponenten, nummeriert mit 33 bis 40 in der Ausführungseinheit 30 entsprechend dem Decodier-Ergebnis der Decodier-Einheit 20. Diese Ausführungs-Steuereinheit 31 umfasst die Komponenten, die normalerweise in einem Prozessor bereitgestellt werden, wie etwa Schaltkreise zur Takt-Steuerung, Steuerung der Operations-Zulassung/Abweisung, Status-Management und Unterbrechungs-Kontrolle sowie die Konstanten-Register-Steuerungseinheit 32, die eine kennzeichnende Komponente des vorliegenden Prozessors ist. Die Konstanten-Register-Steuereinheit 32 führt die Steuerung derart aus, dass eine 4- oder eine 16-Bit-Konstante "const", die in dem Befehlsregister 10 aufgenommenen ist, in dem Konstanten-Register 36 basierend auf Angaben des Format-Decoders 21 gespeichert wird.
  • Die PC(Program Counter)-Einheit arbeitet unter Kontrolle des Sprung-Decoders 23 und leitet aus einem externen Speicher (nicht dargestellt) die Adresse des nächsten Befehls, der zu decodieren und auszuführen ist, an die Befehls-Ladeeinheit 39 weiter.
  • Die Befehls-Ladeeinheit 39 liest einen Befehlsblock von dem externen Speicher (nicht dargestellt) mittels eines 32-Bit-IA(Instruction Address)-Busses und eines 32 Bit-ID(Instruction Data)-Busses. Die Befehls-Ladeeinheit 39 speichert den gelesenen Befehlsblock in einem internen Befehlszwischenspeicher und liefert den Befehl, der der Adresse entspricht, die durch die PC-Einheit 33 ausgegeben wurde, an das Befehlsregister 10.
  • Der Registersatz 34 setzt sich aus 15 32-Bit allgemeinen Registern 35 und einem 32-Bit-Konstanten-Register 36 zusammen. In Übereinstimmung mit dem Decodier-Ergebnis des ersten Operations-Decoders 24 und des zweiten Operations-Decoders 25 werden die Werte, die in diesen 16 Registern 35 und 36 gespeichert sind, in die erste Operationseinheit 37 und die zweite Operationseinheit 38 übertragen, wo eine Operation ausgeführt wird oder alternativ die Werte durchlaufen dürfen, bevor sie zu dem Registersatz 34 oder der Operanden-Zugriffseinheit 40 geschickt werden. Hierbei kann zusätzlich zu der Verwendung in den Operationen, die durch die erste Operationseinheit 37 und die zweite Operationseinheit 38 ausgeführt werden, der Wert, der in dem Konstanten-Register 36 gespeichert ist, auch zu der PC-Einheit 33 übertragen werden, wo er benutzt wird, um eine effektive Adresse zu erzeugen, die als Sprungziel verwendet wird.
  • Die erste Operationseinheit 37 umfasst intern eine ALU (Arithmetic Logic Unit), um arithmetisch-logische Operationen mit zwei 32-Bit-Datensätzen auszuführen und einen Multiplizierer, um Multiplikationen mit zwei 32-Bit-Datensätzen auszuführen. Diese erste Operationseinheit 37 ist in der Lage, unter der Kontrolle des ersten Operations-Decoders 24 zwei Arten von Operationen auszuführen (nämlich arithmetisch-logische Operationen und Inter-Register-Übertragungsoperationen).
  • Die zweite Operationseinheit 38 umfasst intern eine ALU, um in der gleichen Weise wie die erste Operationseinheit 37, arithmetisch-logische Operationen mit zwei 32-Bit-Datensätzen auszuführen und einen Multiplizierer, um Multiplikationen mit zwei 32-Bit-Datensätzen auszuführen. Diese zweite Operationseinheit 38 ist in der Lage, unter der Kontrolle des zweiten Operations-Decoders 25 zwei Arten von Operationen auszuführen (nämlich arithmetisch-logische Operationen und Inter-Register-Übertragungsoperationen).
  • Die Operanden-Zugriffseinheit 40 arbeitet unter Kontrolle des zweiten Operations-Decoders 25 und stellt einen Schaltkreis dar, der Operanden zwischen dem Registersatz 34 und dem externen Speicher (nicht dargestellt) überträgt. Die Operanden-Zugriffseinheit 40 umfasst intern einen Puffer zur Speicherung der Operanden und der Operanden-Adressen. Wenn, wie in einem speziellen Beispiel, der Operationscode "Id" in dem P3.0 Feld 16 des Befehls-Registers 10 auftritt, wird ein Datenwort, das sich in dem externen Speicher befindet, mittels der Operanden-Zugriffseinheit 40 in eines der Register des Registersatzes 34 geladen. Wenn der Operationscode "st" vorliegt, wird indessen der gespeicherte Wert eines der Register in dem Registersatz 34 in dem externen Speicher gespeichert.
  • Die PC-Einheit 33, der Registersatz 34, die erste Operationseinheit 37, die zweite Operationseinheit 38 und die Operanden-Zugriffseinheit 40 sind mit internen Bussen, wie in 4 gezeigt, verbunden (der L1 Bus, der R1 Bus, der L2 Bus, der R2 Bus, der D1 Bus und der D2 Bus). Hierbei sind in der L1 Bus und der L2 Bus jeweils mit einem entsprechenden der zwei Eingangs-Ports der ersten Operationseinheit 37 verbunden, der 12 Bus und der R2 Bus sind jeder mit einem entsprechenden der zwei Eingangs-Ports der zweiten Operationseinheit 38 verbunden und der D1 Bus und der D2 Bus sind jeweils mit einem Ausgangs-Port der ersten Operationseinheit 37 und der zweiten Operationseinheit 38 verbunden.
  • Detaillierter Aufbau des Konstanten-Registers 36 und seiner Peripherie
  • Das Folgende ist eine detaillierte Beschreibung des Aufbaus des Konstanten-Registers 36 und seiner peripheren Schaltkreise.
  • 5 ist ein Blockdiagramm, das den detaillierten Aufbau des Konstanten-Registers 36 und seiner peripheren Schaltkreise zeigt. Anzumerken sei hier, dass der feste Wert ("0") 27 in den Zeichnungen sich auf eine feste Verschaltung von vier Signalpfaden bezieht, die die Konstante "0" führen.
  • Die Konstanten-Register-Kontrolleinheit 32 setzt sich zusammen aus fünf 3-fach-Eingangs-Wählschaltern 32a bis 32e und drei 4-fach-Eingangs-Wählschaltem 32f bis 32h, während sich das Konstanten-Register 36 aus acht 4-Bit-Registern 36a bis 36h zusammensetzt. Hier entspricht jeder Satz von Eingangs- und Ausgangsdaten 4-bit-parallelen Daten.
  • In Übereinstimmung mit den Steuersignalen des Format-Decoders 21 und des Befehls-Decoders 22 steuert die Konstanten-Register-Steuereinheit 32 die acht Eingangs-Wählschalter 32a bis 32h, sodass eine Konstante in dem Befehls-Register 10 oder Nullwerte in dem Konstanten-Register 36 entsprechend einer der vier unten angegebenen Speicherverfahren gespeichert wird.
  • Die 6A bis 6D zeigen vier mögliche Speicherverfahren in der vorliegenden Ausführungsform.
  • 6A zeigt ein Speicherverfahren, wenn der Format-Decoder 21 erkennt, dass der gespeicherte Wert in dem P0.0 Feld 11 "0" oder "1" ist. Dieses entspricht dem Fall, wenn nur eine 4-Bit-Konstante, die sich in dem P1.0 Feld 12 befindet, in dem Konstanten-Register 36 gespeichert wird. Genauer gesagt, werden in die Daten, die in dem Konstanten-Register 36 gespeichert sind, aufwärts (nach links in 6A) in 4-Bit-Einheiten verschoben und die 4-Bit-Konstante, die in dem P1.0 Feld 12 des Befehls-Registers 10 gespeichert ist, wird in dem niederwertigsten 4-Bit-Register 36h des Konstanten-Registers 36 gespeichert.
  • 6B zeigt ein Speichenverfahren, wenn der Format-Decoder 21 erkennt, dass ein in dem P0.0 Feld 11 gespeicherter Wert gleich "4" ist. Dies entspricht dem Fall, wenn eine 16-Bit-Konstante, die sich zwischen dem P1.0 Feld 12 und dem P2.2 Feld 15 befindet, in dem Konstanten-Register 36 gespeichert wird. Genauer gesagt, werden die Daten, die in den unteren 16-Bits 36e bis 36h des Konstanten-Registers 36 gespeichert sind, in die oberen 16-Bits 36a bis 36d verschoben und die 16-Bit-Konstante, die sich zwischen dem P1.0 Feld 12 und dem P2.2 Feld 15 des Befehls-Registers 10 befindet, wird in den niederwertigsten 16 Bits 36e bis 36h des Konstanten-Registers 36 gespeichert.
  • 6C zeigt ein Speichenverfahren, wenn der Format-Decoder 21 erkennt, dass der in dem P0.0 Feld 11 gespeicherter Wert gleich "5" ist. Dies entspricht dem Fall, wenn eine 16-Bit-Konstante, die sich in dem P1.0 Feld 12 und zwischen dem P3.0 Feld 16 und dem P3.2 Feld 18 befindet, in dem Konstanten-Register 36 gespeichert wird. Genauer gesagt, werden in die Daten, die in den unteren 16 Bits 36e bis 36h des Konstanten-Registers 36 gespeichert sind, in die oberen 16 Bits 36a bis 36d verschoben und die 16-Bit-Konstante, die sich in dem P1.0 Feld 12 und zwischen dem P3.0 Feld 16 und dem P3.2 Feld 18 des Befehls-Registers 10 befindet, wird in den niederwertigsten 16 Bits 36e bis 36h des Konstanten-Registers 36 gespeichert.
  • 6D zeigt ein Speicherverfahren, wenn der Format-Decoder 21 erkennt, dass der in dem P0.0 Feld 11 gespeicherter Wert gleich "2", "3", oder "A" ist, oder wenn der Befehls-Decoder 22 erkennt, dass das Konstanten-Register (R15) durch mindestens eines der Felder P2.1 Feld 14, P2.2 Feld 15, P3.1 Feld 17 und P3.2 Feld 18 angegeben ist. Dieses entspricht dem Fall, wenn der Wert, der in dem Konstanten-Register 36 gespeichert ist, komplett auf null zurückgesetzt wird (was bedeutet, dass das Konstanten-Register 36 gelöscht wird), nachdem der gespeicherte Wert des Konstanten-Registers 36 von mindestens einer Sprungoperation aus dem P1.0 Feld 12, einer Operation aus dem ersten Operationsfeld 59 oder einer Operation aus dem zweiten Operationsfeld 60 verwendet wurde. Genauer gesagt, wird unmittelbar nachdem der gespeicherte Wert des Konstanten-Registers 36 in die PC-Einheit 33, die erste Operationseinheit 37 oder die zweite Operationseinheit 38 ausgelesen wurde, eine 32-Bit-Konstante mit dem Wert "0" in das Konstanten-Register 36 geschrieben.
  • Hierbei wird der Wert in dem Konstanten-Register 36 gelöscht, nachdem er verwendet wurde, um sicherzustellen, dass immer in dem Konstanten-Register 36 ein Wert mit einer Null-Ergänzung gespeichert ist. Eine Null-Ergänzung bezieht sich hier auf das Einfügen von Nullen, das durchgeführt wird, wenn die effektive Anzahl der Bits eines Wertes unterhalb einer vorbestimmten Anzahl von Bits ist, wobei Nullwerte in höherwertige Bit-Positionen eingefügt werden, sodass der Wert die vorbestimmte Anzahl von Bits annimmt.
  • Wie oben beschrieben, wird, wenn der Wert in dem P0.0 Feld 11 des Befehls-Registers 10 gleich "0", "1", "4" oder "5" ist, die Konstante, die bereits in dem Konstanten-Register 36 gespeichert ist, verschoben und ein neuer Wert wird gespeichert. Daher wird, nachdem der in dem Konstanten-Register 36 gespeicherte Wert ausgelesen und verwendet wurde, dieser gespeicherte Wert gelöscht. Auf diese Weise ist das Konstanten-Register 36 in der Lage, nacheinanderfolgend Konstanten aufzuaddieren bis sein gespeicherter Inhalt das nächste Mal verwendet wird.
  • Detaillierter Aufbau der PC-Einheit 33
  • Das Folgende ist eine detaillierte Beschreibung des Aufbaus der PC-Einheit 33.
  • 7 ist ein Blockdiagramm, das den Aufbau der PC-Einheit 33 im Detail zeigt. Wie in 7 gezeigt, setzt sich die PC-Einheit 33 zusammen aus einem festen Wert ("4") 33a, das heißt eine Verschaltung, die dauerhaft die Konstante "4" führt, ein 2-fach Eingangs-Wählschalter 33b, ein Addierer 33c, ein PC (Program Counter) 33d zur Speicherung einer Adresse des nächsten zu decodierenden und auszuführenden Befehls und einem 4-fach-Eingangs-Wählschalter 33e.
  • In der PC-Einheit 33 arbeiten die Wählschalter 33b und 33e gemäß dem Steuersignal von der Decodier-Einheit 20, sodass der Wählschalter 33e eine der folgenden drei Typen von Werten an die Befehlsladeeinheit 33 als die effektive Adresse ausgibt.
  • 1. Ein Wert, bei dem "4" zu dem Inhalt von dem PC 33d addiert wird
  • Dies entspricht dem Fall, dass keine Verzweigung ausgeführt wird und ein nächster Befehl der Reihe nach ausgeführt werden soll, was bedeutet, dass das Decodier-Ergebnis für einen momentanen Befehl derart aussieht, dass keine Sprungoperationen angegeben ist. Der Grund, warum "4" addiert wird, ist, dass die Länge eines Befehls 4 Byte beträgt, was 32 Bit bedeutet.
  • 2. Ein Wert, bei dem der Inhalt des Konstanten-Registers 36 zu dem Inhalt des PC 33d addiert wird
  • Dies entspricht dem Fall, dass der Inhalt des Konstanten-Registers 36 als relative Adresse zur Verzweigung verwendet wird, beispielsweise, wenn das Decodier-Ergebnis des Sprung-Decoders 23 derart ist, dass das P1.0 Feld 12 einen Sprung zu einer relativen Adresse angibt.
  • 3. Ein gegebener Wert als der Inhalt des Konstanten-Registers 36
  • Dieses entspricht dem Fall, dass der Inhalt des Konstanten-Registers 36 als absolute Adresse zur Verzweigung verwendet wird, beispielsweise, wenn das Decodier-Ergebnis des Sprung-Decoders 23 derart ist, dass das P1.0 Feld 12 eine absolute Adresse angibt Wie oben beschrieben, umfasst die PC-Einheit 33 einen besonderen Addierer 33c und ist derart aufgebaut, dass sie direkt den durch das Konstanten-Register 36 gespeicherten Wert verwendet, sodass eine Steuerung der Sprungausführung mit dem gespeicherten Wert des Konstanten-Registers als relative Adresse ausgeführt werden kann oder als eine absolute Adresse parallel mit und unabhängig von den Operationen, die durch die erste Operationseinheit 37 und die zweite Operationseinheit 38 ausgeführt werden.
  • Arbeitsweise des Prozessors
  • Das Folgende ist eine Beschreibung der Arbeitsweise des vorliegenden Prozessors bei Decodierung und Ausführung besonderer Operationen.
  • 8 ist ein Flussdiagramm, das ein Beispiel einer Prozedur zeigt, die eine 32-Bit-Konstante verarbeitet. Zuerst wird der Unterschied zwischen den gespeicherten Werten in dem Register R0 und R1 festgestellt (Schritt S80) und das Ergebnis wird mit dem gespeicherten Wert von R2 multipliziert (Schritt S81). Die 32-Bit-Konstante "0x87654321" (entspricht dem Wert "87654321" hexadezimal) wird dann zu diesem Ergebnis hinzuaddiert (Schritte S82, S83) und schließlich wird das Register R0 gelöscht (Schritt S84).
  • 9 zeigt ein Beispiel eines Programms, dass der Prozessor bei der in 8 gezeigten Prozedur ausführt. Das Programm besteht aus den drei Befehlen 71 bis 73. In 9 entspricht eine Zeile einem Befehl und der Inhalt jedes Befehls ist durch Mnemonics dargestellt, die sich in getrennten Feldern jedes Befehls befinden. In 9 wird der Wert jeder Konstanten hexadezimal ausgedrückt. Daher zeigt die Beschriftung "fmtn(n = 0 – F)" den Formatcode "n", wohingegen die Beschriftung "Rn(n = 0 – 15)" den gespeicherten Wert in einem der Register in dem Registersatz 34 zeigt. Von diesen bezieht sich "R15" auf das Konstanten-Register 36.
  • 10 ist ein Zeitdiagramm, das die Arbeitsweise des vorliegenden Prozessors zeigt, wenn er das in 9 gezeigte Programm ausführt. Diese 10 zeigt die Taktzyklen, den Inhalt der allgemeinen Register R0–R3 und des Registers R15 sowie die Daten, die auf den vier Bussen L1, R1, L2 und R2 fließen.
  • Das Folgende ist mit Bezug auf die 9 und 10 eine Erklärung der Arbeitsweise des vorliegenden Prozessors für jeden der Befehle 71 bis 73.
  • Befehl 71
  • Nachdem der Befehl 71 in das Befehlsregister 10 geladen worden ist, führt der vorliegende Prozessor die in den Taktzyklen t0 bis t1 in 10 gezeigten Operationen aus. Der Format-Decoder 21 entscheidet aus dem Wert "fmt4" des P0.0 Feldes 11 in dem Befehlsregister 10, dass der momentane Befehl ein 2-fach-Operations-Befehl mit dem Formatcode "4" ist, und steuert die Ausführungseinheit 30, sodass die unten beschriebenen zwei Operationen parallel ausgeführt werden.
  • 1. Erste Operation
  • Die Konstanten-Register-Steuereinheit 32 steuert ihre acht internen Wählschalter 32a bis 32h so, dass die 16-Bit-Konstante (0x8765), die sich zwischen dem P1.0 Feld 12 und dem P2.2 Feld 15 befindet, gemäß dem Speicherverfahren in 6B in den unteren 16 Bit des Konstanten-Registers 36 gespeichert wird. Entsprechend ändert sich der Inhalt des Registers R15 von "0x00000000" auf "0x00008765", wie in den Taktzyklen t0 bis t1 in 10 gezeigt wird.
  • 2. Zweite Operation
  • Die zweite Operationseinheit 38 erhält als Eingang den gespeicherten Wert "0x33333333" des allgemeinen Registers R0 und den gespeicherten Wert "0x22222222" des allgemeinen Registers R1 und speichert, nachdem sie letzteren von dem ersteren subtrahiert hat, das Ergebnis in dem allgemeinen Register R0. Als Ergebnis ändert sich der gespeicherte Inhalt des allgemeinen Registers R0 von dem Wert "0x33333333" auf den Wert "0x111111111" in den Taktzyklen t0 bis t1, wie in 10 gezeigt.
  • Befehl 72
  • Danach, nachdem der Befehl 72 in das Befehlsregister 10 geladen worden ist, arbeitet der vorliegende Prozessor wie in den Taktzyklen t1 bis t2 in 10 gezeigt. Der Format-Decoder 21 entscheidet auf Grund des Wertes "fmt4" des P0.0 Feldes 11 in dem Befehlsregister 10, dass der vorliegende Befehl ein 2-fach-Operations-Befehl mit dem Formatcode "4" ist und steuert die Ausführungseinheit 30 so, dass die beiden unten beschriebenen Operationen parallel ausgeführt werden.
  • 1. Erste Operation
  • Die Konstanten-Register-Steuereinheit 32 steuert ihre acht internen Wählschalter 32a bis 32h so, dass die 16-Bit-Konstante ("0x4321"), die sich zwischen den P1.0 Feld 12 und dem P2.2 Feld 15 befindet, in den unteren 16 Bits des Konstanten-Registers 36 gemäß dem in 6B gezeigten Speicherverfahren gespeichert wird. Entsprechend ändert sich der Inhalt des Registers R15 von "0x00008765" nach "0x87654321", wie in den Taktzyklen t1 bis t2 in 10 gezeigt.
  • 2. Zweite Operation
  • Die zweite Operationseinheit 38 erhält als Eingang den gespeicherten Wert "0x00000004" des allgemeinen Registers R2 und den gespeicherten Wert "0x11111111" des allgemeinen Registers R0 und multipliziert beide miteinander, bevor das Ergebnis in dem allgemeinen Register R0 gespeichert wird. Als Ergebnis ändert sich der gespeicherte Inhalt des allgemeinen Registers R0 von dem Wert "0x11111111" in den Wert "0x44444444" in den Taktzyklen t1 bis t2, wie in 10 gezeigt.
  • Befehl 73
  • Danach, nachdem der Befehl 73 in das Befehlsregister 10 geladen worden ist, arbeitet der vorliegende Prozessor wie in den Taktzyklen t2 bis t3 in 10 gezeigt. Der Format-Decoder 21 entscheidet auf Grund des Wertes "fmt7" des P0.0 Feldes 11 in dem Befehlsregister 10, dass der vorliegende Befehl ein 2-fach-Operations-Befehl mit dem Formatcode "7" ist und steuert die Ausführungseinheit 30 so, dass die beiden unten beschriebenen Operationen parallel ausgeführt werden.
  • 1. Erste Operationen
  • Die erste Operationseinheit 37 erhält als Eingang den gespeicherten Wert "0x87654321" des allgemeinen Registers R15 und den gespeicherten Wert "0x44444444" des allgemeinen Registers R0 und addiert beide, bevor das Ergebnis in dem allgemeinen Register R0 gespeichert wird. Als Ergebnis ändert sich der gespeicherte Inhalt des allgemeinen Registers R0 von dem Wert "0x44444444" in den Wert "0xCBA98765" in den Taktzyklen t2 bis t3, wie in 10 gezeigt.
  • 2. Zweite Operation
  • Die zweite Operationseinheit 38 empfängt als Eingang die 8-Bit-Konstante ("0x00"), die sich in dem P1.0 Feld 12 und dem P3.1 Feld 17 befindet und lässt die Konstante passieren, sodass sie in dem allgemeinen Register R3 gespeichert wird. Als Ergebnis ändert sich der Inhalt des allgemeinen Registers R3 von dem zuvor gespeicherten Wert "0xFEDCBA98" nach "0x00000000", wie in den Taktzyklen t2 bis t3 in 10 gezeigt. Wie oben für den vorliegenden Prozessor beschrieben, ist die 32-Bit-Konstante "0x87654321" in zwei Teile aufgetrennt, die in den zwei Befehlen 71 und 72 angeordnet sind, wobei diese Teile nacheinanderfolgend in dem Konstanten-Register 36 durch Verschieben seines gespeicherten Wertes gespeichert werden. Diese gespeicherte Konstante wird dann entsprechend dem dritten Befehl verwendet, dem Befehl 73. Auf diese Weise kann die in dem Flussdiagramm der 8 gezeigte Prozedur durch die drei Befehle 71 bis 73 ausgeführt werden.
  • Das Folgende ist eine Erklärung der Arbeitsweise des vorliegenden Prozessors, der ein unterschiedliches Programm verwendet, das 16-Bit-Konstanten verarbeitet.
  • 11 zeigt ein Beispiel eines Programms, das eine 16-Bit-Konstante verarbeitet. Dieses Programm setzt sich aus fünf Befehlen 74 bis 78 zusammen.
  • Die Arbeitsweise des vorliegenden Prozessors ist für jeden Befehl 74 bis 78 wie unten beschriebenen.
  • Befehl 74
  • Wenn der Befehl 74 in das Befehlsregister 10 geladen worden ist, entscheidet der Format Decoder auf Grund des Wertes "fmt0" des P0.0 Feldes 11 in dem Befehls-Register 10, dass der vorliegende Befehl ein 3-fach-Operations-Befehl mit dem Formatcode "0" ist, und steuert die Ausführungseinheit 30 so, dass die drei Operationen, die unten beschrieben werden, parallel ausgeführt werden.
  • 1. Erste Operation
  • Die Konstanten-Register-Steuereinheit 32 steuert ihre acht internen Wählschalter 32a bis 32h so, dass die 4-Bit-Konstante ("0x8"), die sich in dem P1.0 Feld 12 befindet, in den untersten vier Bits des Konstanten-Registers 36 entsprechend dem in 6A gezeigten Speicherverfahren gespeichert wird.
  • 2. Zweite Operation
  • Die erste Operationseinheit 37 empfängt als Eingang den gespeicherten Wert des allgemeinen Registers R6 und lässt diesen Wert passieren, sodass er in dem allgemeinen Register R1 gespeichert wird.
  • 3. Dritte Operation
  • Auf die gleiche Weise empfängt die zweite Operationseinheit 38 als Eingang den gespeicherten Wert des allgemeinen Registers R7 und lässt in diesen Wert passieren, sodass er in dem allgemeinen Register R2 gespeichert wird.
  • Befehl 75
  • Wenn der Befehl 75 in das Befehlsregister 10 geladen wurde, entscheidet der Format-Decoder 21 auf Grund des Wertes "fmt0" des P0.0 Feldes 11 in dem Befehls-Register 10, dass der vorliegende Befehl ein 3-fach-Operations-Befehl mit dem Formatcode "0" ist und steuert die Ausführungseinheit 30 so, dass die unten beschriebenen drei Operationen parallel ausgeführt werden.
  • 1. Erste Operation
  • Die Konstanten-Register-Steuereinheit 32 steuert ihre acht internen Wählschalter 32a bis 32h so, dass die 4-Bit-Konstante ("0x7"), die sich in dem P1.0 Feld 12 befindet, in den untersten vier Bits des Konstanten-Registers 36 entsprechend dem in 6A gezeigten Speicherverfahren gespeichert wird. Nach dieser Operation wird die Konstante "0x87" in den untersten acht Bits des Konstanten-Registers 36 gesetzt.
  • 2. Zweite Operation
  • Die erste Operationseinheit 37 empfängt als Eingang den gespeicherten Wert des allgemeinen Registers R0 und des allgemeinen Registers R1 und addiert diese beiden Werte. Die erste Operationseinheit 37 speichert das Additionsergebnis in dem allgemeinen Register R1.
  • 3. Dritte Operation
  • In der gleichen Weise empfängt die zweite Operationseinheit 38 als Eingang den gespeicherten Wert des allgemeinen Registers R0 und des allgemeinen Registers R2 und addiert diese beiden Werte. Die zweite Operationseinheit 38 speichert das Additionsergebnis in dem allgemeinen Register R2.
  • Befehle 76, 77
  • Die Befehle 76 und 77 werden in der gleichen Weise wie oben beschrieben ausgeführt und als ein Ergebnis wird die Konstante "0x8765" in den unteren 16 Bit des Konstanten-Registers 36 gespeichert.
  • Befehl 78
  • Wenn der Befehl 78 in das Befehlsregister 10 geladen worden ist, arbeitet der vorliegende Prozessor in der gleichen Weise wie wenn er den Befehl 73 verarbeitet. Wie oben für den vorliegenden Prozessor beschrieben, ist die 16-Bit-Konstante "0x8765" in vier Teile aufgetrennt, die in den Befehlen 74 bis 77 angeordnet sind, wobei diese Teile aufeinanderfolgend in dem Konstanten-Register 36 durch Verschieben seines gespeicherten Wertes gespeichert werden. Diese gespeicherte Konstante wird dann entsprechend des fünften Befehls, dem Befehl 78, verwendet.
  • Vergleich mit einem Standardprozessor
  • Das Folgende ist eine Beschreibung des Verarbeitungsablaufs, der von einem Standardprozessor für ein Programm mit dem gleichen Inhalt wie in den 9 und 10 gezeigt, ausgeführt wird, und ein Vergleich mit der Verarbeitung in der vorliegenden Erfindung. Hier bezieht sich der Ausdruck "Standardprozessor" auf einen Prozessor, der Befehle ausführt, deren Wortlänge auf 32 Bit festgelegt ist und damit die gleiche wie für den vorliegenden Prozessors ist, nur, dass Konstruktionsmerkmale fehlen, wie beispielsweise das Konstanten-Register 36 und die Konstanten-Register-Steuereinheit 32, um die Konstanten aufzuaddieren, die auf die Befehle aufgeteilt sind.
  • 12A zeigt die Felddefinition der Befehle, die von einem Standardprozessor ausgeführt werden, wohingegen 12B das Format der Befehle zeigt. Hierbei wird unterstellt, dass der Standardprozessor drei Typen von 2-fach-Operations-Befehlen, die Befehle 101 bis 103, und einen Typ eines Einfach-Operations-Befehls, den Befehl 104 ausführen kann.
  • 13 zeigt ein Beispiel eines Programms, das von einem Standardprozessor ausgeführt werden soll. Dieses Programm hat den gleichen zu verarbeitenden Inhalt wie das in 9 gezeigte Programm, das heißt, die gleiche Prozedur, wie in dem Flussdiagramm in 8.
  • Wie man durch Vergleich der 13 und 9 erkennt, umfasst das Programm für den Standardprozessor zwei Befehle mehr als das Programm für den Prozessor der vorliegenden Erfindung.
  • Der Grund, warum die "NOP-Codes" in die Befehle 105 und 106 eingefügt sind, ist, dass der Befehl 106 das Operationsergebnis des Befehls 105 verwendet, sodass diese Befehle nicht parallel ausgeführt werden können. Daher ist der Grund, warum die Konstante "0x87654321" in obere 16-Bit und untere 16-Bit aufgeteilt ist, die in dem Konstanten-Register 36 gesetzt werden (Befehle 107 und 108), der, dass es nicht möglich ist, eine 32-Bit-Konstante und einen Operations-Code für einen "Setting"-Befehl in einen einzigen 32-Bit-Befehl einzupassen.
  • 14 zeigt auch ein Beispiel eines Programms für einen Standardprozessor. Dieses Programm hat denselben zu verarbeitenden Inhalt wie das in 11 gezeigte Programm. Wie durch Vergleich der 14 und 11 zu erkennen ist, umfasst das Programm für den Standardprozessor einen Befehl mehr als das Programm für den Prozessor der vorliegenden Erfindung.
  • Wie oben beschrieben, weisen die Befehle, die von dem Prozessor der vorliegenden Erfindung ausgeführt werden, eine höchst effiziente Feldstruktur auf, wobei maximal drei Operationen mit vergleichsweiser kurzer Wortlänge von 32 Bit angegeben werden können. Demgemäß können mit dem Prozessor der vorliegenden Erfindung eine 16-Bit-oder eine 32-Bit-Konstante, die über eine Mehrzahl von Befehlen aufgeteilt ist, in dem Konstanten-Register 36 aufaddiert werden, um diese Konstante in ihrer ursprünglichen Form wieder herzustellen und dann für eine Sprungoperation oder eine arithmetisch-logische Operationen verwenden zu können. Demgemäß kann, wenn ein kleiner Bereich in dem Befehl verfügbar ist, dieser Bereich effizient dazu verwendet werden, den Teil einer Konstanten dort anzuordnen, sodass der Codeumfang des Programms im Vergleich zu der Verarbeitung auf einem Standardprozessor reduziert werden kann.
  • Modifikation
  • Die 15A bis 15D zeigen Befehlsformate eines VLIW-Prozessors, die Modifikationen der vorliegenden Erfindung sind. In diesen Figuren stellt das kleinste Intervall, abgegrenzt durch die vertikalen Linien, ein Bit dar und die Beschriftung "fmt" zeigt das Formatfeld.
  • Der in 15A gezeigte Befehl besteht aus einem 5-Bit-Formatfeld, einem 7-Bit-Operationsfeld und zwei 10-Bit-Operationsfeldern. Der in 15B gezeigte Befehl besteht unterdessen aus einem 2-Bit-Formatfeld, einem 4-Bit-Operationsfeld und zwei 13-Bit-Operationsfeldem. Der in 15C gezeigte Befehl besteht aus einem 3-Bit-Formatfeld, einem 3-Bit-Operationsfeld und zwei 13-Bit-Operationsfeldern. Schließlich besteht der in 15D gezeigte Befehl aus einem 4-Bit-Formatfeld, einem 2-Bit-Operationsfeld und zwei 13-Bit-Operationsfeldem.
  • Diese vier Arten der Befehle haben folgende Ähnlichkeiten mit dem Befehl 50 in der oben beschriebenen und in 2A gezeigt Ausführungsform.
    • i. Die Befehls-Wortlänge ist auf 32 Bits festgelegt.
    • ii. Jeder Befehl hat ein Formatfeld und drei Operationsfelder.
    • iii. Die drei Operationsfelder haben nicht die gleiche Struktur, das heißt, zwei der Operationsfelder haben die gleiche Struktur, wohingegen das verbleibende Operationsfeld kurz ist.
  • Demzufolge weisen diese vier Befehlstypen die gleichen Kennzeichen wie der Befehl 50, der in der oben angegebenen Ausführungsform beschrieben ist, auf.
    • i. Die Befehle haben eine Feldstruktur, wobei maximal drei Operationen trotz der vergleichsweise kurzen 32-Bit Wortlänge angegeben werden können.
    • ii. Ein kleines Operationsfeld, das ideal ist, um kurze Befehle einzufügen, wie beispielsweise Sprungbefehle, die nicht zwei Operanden erfordern, wird bereitgestellt, sodass die Codeeffizienz der Befehle hoch ist.
    • iii. Ein Formatfeld wird bereitgestellt, sodass durch die Angabe, dass eine Konstante oder ein Teil einer Konstanten in einem Operationsfeld vorliegt, in dem normalerweise eine NOP- Befehl vorgesehen ist, der Codeumfang eines Programms reduziert werden kann.
  • Auf der anderen Seite weisen die oben beschriebenen vier Befehlsarten auch folgende Kennzeichen auf, die sich von denen des in der obigen Ausführungsform beschriebenen Befehls 50 unterscheiden. Der in 15A gezeigte Befehl besitzt die Vorteile eines erweiterten Formatfeldes, das heißt, eine größere Anzahl von Befehlstypen kann definiert werden und der Befehl ist in der Lage mindestens einen Operand in jedem der drei Operationsfelder bereitzustellen. Die in 15B bis 15D gezeigten Befehle besitzen unterdessen den Vorteil von zwei erweiterten Operationscodes ("op2" und "op3"), sodass eine größere Auswahl an Operationen definiert werden kann.
  • 16 ist ein Blockdiagramm, das den Aufbau eines VLIW-Prozessors der vorliegenden Erfindung zur Ausführung des in 15A gezeigten Befehls darstellt. Wie durch Vergleich dieses Aufbaus mit dem Aufbau in 4 ersichtlich ist, ist der grundsätzliche Aufbau des Prozessors der gleiche, obwohl es einige Unterschiede hinsichtlich der Verbindungen zwischen den Befehlsregistern 10, 110 und den Decodier-Einheiten 20, 120 gibt. Auf diese Weise können VLIW-Prozessoren zur Ausführung der modifizierten, in den 15A bis 15D gezeigten Befehle realisiert werden, indem nur Teiländerungen an dem VLIW-Prozessor in der oben angegebenen Ausführungsform durchgeführt werden.
  • Der Prozessor der vorliegenden Erfindung wurde an Hand der oben angegebenen Ausführungsform erläutert, obgleich es klar ist, dass mehrere weitere Modifikationen möglich sind. Vier weitere Beispiele von diesen werden unten angeführt.
    • (1) Die Ausführungsform und die oben angegebene Modifikation der vorliegenden Erfindung behandeln alle den Fall, bei dem die Befehlswortlänge 32 Bit ist und wo maximal drei Operationen angegeben werden, obgleich die vorliegende Erfindung nicht auf diese Anzahlen begrenzt ist. Als ein Beispiel kann der in 2A gezeigte Befehl ferner einen weiteren 4-Bit-Operationscode und einen weiteren 4-Bit-Operanden umfassen, wobei die gesamte Wortlänge des Befehls 40 Bits ist. Auf diese Weise wird es möglich, Befehle mit hoher Codeeffizienz zu definieren, wobei ein Maximum von vier Operationen durch einen einzigen Befehl mit einer vergleichsweise kurzen Wortlänge von 40 Bit ausgeführt werden kann.
    • (2) Der Befehl 50 in der oben angegebenen Ausführungsform enthält nur ein Feld (das P1.0 Feld 52), das einen impliziten Operanden verwendet (den gespeicherten Wert des Konstanten-Registers 36), obgleich die vorliegende Erfindung nicht darauf beschränkt werden muss, und daher zwei oder mehr derartige Felder aufweisen kann. Diese können durch geeignete Definition eines neuen Befehlsformats verarbeitet werden.
    • (3) In der oben angegebenen Ausführungsform ist ein Beispiel angegeben, dass eine numerische Konstante verarbeitet, obwohl es für die Erfindung natürlich gleichermaßen möglich ist, eine Zeichenkonstante zu verarbeiten. Dieses ist möglich, weil eine lange Zeichenkonstante, die über eine Mehrzahl von Befehlen aufgeteilt ist, durch aufeinanderfolgendes Speichern verschiedener Teile der Zeichenkonstante in dem Konstanten-Register 36 akkumuliert werden kann.
    • (4) Wie an Hand der in den 2B bis 2D der obigen Ausführungsform angegebenen Befehlsformaten ersichtlich ist, kann nur eine 4-Bit- oder eine 16-Bit-Konstante in dem Konstanten-Register in der oben angegebenen Ausführungsform durch einen einzigen Befehl gespeichert werden, obgleich dies keine Einschränkung für die vorliegende Erfindung ist. Als Beispiel ist es gleichermaßen möglich, ein Befehlsformat zu definieren, durch das eine 12-Bit-oder eine 28-Bit-Konstante in dem Konstanten-Register 36 durch einen einzigen Befehl gespeichert werden kann. Um dieses auszuführen, ist es nur erforderlich, das Verbindungsschema der peripheren Schaltkreise des Konstanten-Registers 36 zu ändern.
  • Obwohl die vorliegende Erfindung vollständig durch die Beispiele mit Bezug auf die begleitenden Zeichnungen beschrieben wurde, soll bemerkt werden, dass verschiedene Änderungen und Modifikationen für den Fachmann offensichtlich sind. Daher, soweit nicht derartige Änderungen und Modifikationen aus dem Blickwinkel der vorliegenden Erfindung herausführen, sollten sie so ausgelegt werden, dass sie durch die Erfindung umfasst sind.

Claims (22)

  1. Ein VLIW-Prozessor, der einen Befehl (50) decodiert und ausführt, welcher mindestens zwei Operationsfelder (52, 59) aufweist, umfassend: erste Decodiermittel (23), welche, wenn ein Operationscode in einem ersten Operationsfeld vorliegt, den Operationscode in dem ersten Operationsfeld decodieren; erste Ausführungsmittel (30, 31), um gemäß dem Decodierergebnis der ersten Decodiermittel eine Operation auszuführen, die durch den Operationscode in dem ersten Operationsfeld (52) angegeben ist; zweite Decodiermittel (24), welche, wenn ein Operationscode in einem zweiten Operationsfeld vorliegt, den Operationscode in dem zweiten Operationsfeld decodieren, und zweite Ausführungsmittel (30, 37), um gemäß dem Decodierergebnis der zweiten Decodiermittel eine Operation, die durch den Operationscode in dem zweiten Operationsfeld (59) angegeben ist, mit Daten auszuführen, die durch die Operanden in dem zweiten Operationsfeld angegeben sind, dadurch gekennzeichnet, dass das erste Operationsfeld (52) nur einen von (i) einem Einfach-Operationscode zum Bestimmen eines Operations-Typs und (ii) eine Konstante enthalten kann und das zweite Operationsfeld (59) eine von (i) einer Kombination aus einem Operationscode und mindestens einem Operand, der in einer Operation verwendet wird, die in dem zweiten Operationsfeld angegeben ist, und (ii) eine Konstante enthält.
  2. Der VLIW-Prozessor in Anspruch 1, wobei der Befehl auch ein Formatfeld (51) umfasst, das einen Formatcode enthält, der angibt, ob sich nur eine Konstante in dem ersten Operationsfeld befindet und ob sich nur eine Konstante in dem zweiten Operationsfeld befindet, der VLIW-Prozessor umfasst weiterhin: Format-Decodiermittel (21) zur Decodierung des Formatcodes; und Konstanten-Speichermittel (32, 36), um die Konstante in dem Befehl zu extrahieren und die extrahierte Konstante zu speichern, wenn ein Decodierergebnis der Format-Decodiermittel zeigt, dass nur eine Konstante in mindestens einem von dem ersten Operationsfeld und von dem zweiten Operationsfeld vorliegt.
  3. Der VLIW-Prozessor in Anspruch 2, wobei eine Anzahl der Bits, die von dem ersten Operationsfeld (52) in dem Befehl umfasst sind, kleiner ist, als die Anzahl der Bits, die von dem zweiten Operationsfeld (59) umfasst sind.
  4. Der VLIW-Prozessor in Anspruch 3, wobei eine Anzahl von Bits, die durch den Operationscode in dem ersten Operationsfeld (52) belegt sind, gleich der Anzahl von Bits ist, die durch den Operationscode in dem zweiten Operationsfeld (59) belegt sind.
  5. Der VLIW-Prozessor in Anspruch 4, wobei in der Befehl drei Operationsfelder enthält, wobei ein drittes Operationsfeld (60) in den drei Operationsfeldern die gleiche Anzahl von Bits umfasst wie das zweite Operationsfeld und eine Kombination aus einem Operationscode und mindestens einem Operand enthält, und der VLIW-Prozessor weiterhin umfasst: dritte Decodiermittel (25), die, wenn ein Operationscode in dem dritten Operationsfeld vorliegt, den Operationscode in dem dritten Operationsfeld (60) decodieren; und dritte Ausführungsmittel (30, 38) um mit Daten, die durch Operanden in dem dritten Operationsfeld angegeben sind, gemäß dem Decodierergebnis der dritten Decodiermittel (25) eine Operation auszuführen, die durch den Operationscode in dem dritten Operationsfeld angegeben ist.
  6. Der VLIW-Prozessor in Anspruch 5, wobei die ersten Ausführungsmittel (30, 31) eine Ablaufsteuerung eines Programms kontrollieren, das den Befehl enthält.
  7. Der VLIW-Prozessor in Anspruch 6, wobei die zweiten Ausführungsmittel (30, 37) die Übertragung der Daten steuern, die durch die Operanden angegeben werden, die in dem zweiten Operationsfeld (59) enthalten sind, und die dritten Ausführungsmittel (30, 38) eine arithmetisch-logische Operation mit den Daten ausführen, die durch die Operanden angegeben sind, die in dem dritten Operationsfeld (60) angegeben sind.
  8. Der Prozessor in Anspruch 7, wobei das Formatfeld (51), das erste Operationsfeld (52), der Operationscode in dem zweiten Operationsfeld (59), jeder Operand in dem zweiten Operationsfeld (59), der Operationscode in dem dritten Operationsfeld (60) und jeder Operand in dem dritten Operationsfeld (60) jeweils n Bits in dem Befehl belegen.
  9. Der VLIW-Prozessor in Anspruch 8, wobei der Befehl 32 Bits lang ist und n gleich vier ist.
  10. Der VLIW-Prozessor in Anspruch 1, wobei das erste Operationsfeld (52) nur den Einfach-Operationscode enthalten kann, und das zweite Operationsfeld (59) nur die Kombination aus einem Operationscode und mindestens einem Operand enthalten kann, der in einer Operation verwendet wird, die durch das zweite Operationsfeld (59) angegeben ist.
  11. Der VLIW-Prozessor in Anspruch 10, wobei eine Anzahl von Bits, die durch das erste Operationsfeld (52) in dem Befehl umfasst sind, kleiner ist als die Anzahl der Bits, die durch das zweite Operationsfeld (59) umfasst sind.
  12. Der VLIW-Prozessor in Anspruch 11, wobei eine Anzahl von Bits, die durch den Operationscode in dem ersten Operationsfeld (52) belegt sind, gleich ist der Anzahl von Bits, die durch den Operationscode in dem zweiten Operationsfeld (59) belegt sind.
  13. Der VLIW-Prozessor in Anspruch 12, wobei der Befehl drei Operationsfelder enthält, wobei ein drittes Operationsfeld (60) in den drei Operationsfeldern die gleiche Anzahl von Bits umfasst wie das zweite Operationsfeld (59) und eine Kombination aus einem Operationscode und mindestens einem Operanden enthält, und der VLIW-Prozessor weiterhin umfasst: dritte Decodiermittel (25), welche, wenn ein Operationscode in dem dritten Operationsfeld (60) vorliegt, den Operationscode in dem dritten Operationsfeld decodieren; und dritte Ausführungsmittel (30, 38), um gemäß dem Decodierergebnis der dritten Decodiermittel (25) eine Operation, die durch den Operationscode in dem dritten Operationsfeld angegeben ist, mit Daten auszuführen, die durch die Operanden in dem dritten Operationsfeld (60) angegeben sind.
  14. Der VLIW-Prozessor in Anspruch 13, wobei die ersten Ausführungsmittel (30, 31) eine Ablaufsteuerung eines Programms kontrollieren, das den Befehl enthält.
  15. Der VLIW-Prozessor in Anspruch 14, wobei die zweiten Ausführungsmittel (30, 37) die Übertragung der Daten steuern, die durch die Operanden angegeben werden, die in dem zweiten Operationsfeld (59) enthalten sind, und die dritten Ausführungsmittel (30, 38) eine arithmetisch-logische Operation mit den Daten ausführen, die durch die Operanden angegeben sind, die in dem dritten Operationsfeld (60) enthalten sind.
  16. Der VLIW-Prozessor in Anspruch 10, der einen ersten Befehl decodiert und ausführt, welcher mindestens drei Operationsfelder aufweist, wobei ein erstes Operationsfeld (52) in dem ersten Befehl einen Operationscode zur Kontrolle einer Ablaufsteuerung eines Programms umfasst, welches den Befehl enthält, ein zweites Operationsfeld (59) einen Operationscode zur Steuerung der Datenübertragung enthält, und eine drittes Operationsfeld (60) einen Operations Code zur Steuerung der arithmetisch-logischen Operationen mit Daten enthält, die ersten Decodiermittel (23) den Operationscode in dem ersten Operationsfeld des ersten Befehls decodieren, die ersten Ausführungsmittel (30, 31) weiter die Ablaufsteuerung des Programms kontrollieren, wie gemäß dem Decodierergebnis der ersten Decodiermittel (23) durch den Operationscode in dem ersten Operationsfeld des ersten Befehls angegeben ist, die zweiten Decodiermittel (24) weiter den Operationscode in dem zweiten Operationsfeld (59) des ersten Befehls in decodieren, die zweiten Ausführungsmittel (38) weiter gemäß dem Decodierergebnis der zweiten Decodiermittel die Datenübertragung steuern, die durch den Operationscode in dem zweiten Operationsfeld des ersten Befehls angegeben ist, der VLIW-Prozessor Ressort umfasst weiterhin: dritte Decodiermittel zur Decodierung des Operationscodes in dem dritten Operationsfeld des ersten Befehls; und dritte Ausführungsmittel zur Ausführung der arithmetisch-logischen Operationen, die durch den Operationscode in dem dritten Operationsfeld des ersten Befehls gemäß dem Decodierergebnis der dritten Decodiermittel angegeben sind.
  17. Der VLIW-Prozessor in Anspruch 16, wobei eine Anzahl von Bits, die von dem ersten Operationsfeld des ersten Befehls umfasst sind, kleiner ist als eine Anzahl der Bits, die von dem zweiten Operationsfeld in dem ersten Befehl umfasst sind und die Anzahl der Bits, die von dem dritten Operationsfeld des ersten Befehls umfasst sind.
  18. Der VLIW-Prozessor in Anspruch 17, wobei eine Anzahl von Bits, die durch den Operationscode in dem ersten Operationsfeld des ersten Befehls belegt sind, gleich ist einer Anzahl von Bits, die durch den Operationscode in dem zweiten Operationsfeld des ersten Befehls belegt sind und einer Anzahl von Bits, die durch den Operationscode in dem dritten Operationsfeld des ersten Befehls belegt sind.
  19. Der VLIW-Prozessor in Anspruch 17, wobei das zweite Operationsfeld des ersten Befehls eine gleiche Anzahl von Bits umfasst wie das dritte Operationsfeld des ersten Befehls.
  20. Der VLIW-Prozessor in Anspruch 17, wobei der erste Befehl 32 Bits lang ist.
  21. Der VLIW-Prozessor in Anspruch 1, der einen ersten Befehl decodiert und ausführt, der mindestens drei Operationsfelder und ein Formatfeld aufweist, wobei ein erstes Operationsfeld (52) in dem ersten Befehl nur einen von (i) einem Operationscode zum Kontrollieren der Ablaufsteuerung eines Programms enthalten kann, das den Befehl umfasst und (ii) eine Konstante, ein zweites Operationsfeld (59) einen von einem Operationscode zur Steuerung einer Übertragung von Daten und (ii) eine Konstante enthält, und ein drittes Operationsfeld (60) einen von (i) einem Operationscode zur Steuerung einer arithmetisch-logischen Operation mit Daten und (ii) eine Konstante enthält, das Formatfeld einen Formatcode enthält, der angibt, ob sich eine Konstante in dem ersten Operationsfeld befindet, ob sich eine Konstante in dem zweiten Operationsfeld befindet und ob sich eine Konstante in dem dritten Operationsfeld befindet, die ersten Decodiermittel (23) weiter den Operationscode in dem ersten Operationsfeld des ersten Befehls decodieren, die ersten Ausführungsmittel (30, 31) weiter die Ablaufsteuerung des Programms kontrollieren, wie gemäß dem Decodierergebnis der ersten Decodiermittel durch den den Operationscode in dem ersten Operationsfeld des ersten Befehls angegeben ist, die zweiten Decodiermittel (24) weiter den Operationscode in dem zweiten Operationsfeld des ersten Befehls decodieren, die zweiten Ausführungsmittel (30, 37) weiter gemäß dem Decodierergebnis der zweiten Decodiermittel die Datenübertragung steuern, die durch den Operationscode in dem zweiten Operationsfeld des ersten Befehls angegeben ist, der VLIW-Prozessor umfasst weiterhin: dritte Decodiermittel (25) zur Decodierung des Operationscodes in den dritten Operationsfeld des ersten Befehls; und dritte Ausführungsmittel (30, 38) zur Ausführung der arithmetisch-logischen Operation, die in Übereinstimmung mit dem Decodierergebnis der dritten Decodiermittel durch den Operationscode in dem dritten Operationsfeld des ersten Befehls angegeben ist.
  22. Der VLIW-Prozessor in Anspruch 21, wobei er der erste Befehl 32 Bits lang ist.
DE69838966T 1997-06-16 1998-06-15 Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen Expired - Lifetime DE69838966T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP15904897 1997-06-16
JP15904897A JP3790607B2 (ja) 1997-06-16 1997-06-16 Vliwプロセッサ

Publications (2)

Publication Number Publication Date
DE69838966D1 DE69838966D1 (de) 2008-02-21
DE69838966T2 true DE69838966T2 (de) 2008-12-24

Family

ID=15685098

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838966T Expired - Lifetime DE69838966T2 (de) 1997-06-16 1998-06-15 Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen

Country Status (10)

Country Link
US (7) US6085306A (de)
EP (4) EP2138933A1 (de)
JP (1) JP3790607B2 (de)
KR (1) KR100534967B1 (de)
CN (2) CN1178145C (de)
DE (1) DE69838966T2 (de)
IL (1) IL124904A (de)
MY (2) MY116751A (de)
SG (3) SG91248A1 (de)
TW (1) TW490636B (de)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
EP0953898A3 (de) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. Prozessor zur Ausführung von Befehlen aus dem Speicher mittels eines Programmzählers und Kompiler, Assembler, Programmverbinder und Fehlerbeseitiger für einen solchen Prozessor
JP2001034471A (ja) 1999-07-19 2001-02-09 Mitsubishi Electric Corp Vliw方式プロセッサ
EP1215569B1 (de) * 1999-08-30 2010-04-28 IP Flex Inc. Daten-prozessor
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US20030023830A1 (en) * 2001-07-25 2003-01-30 Hogenauer Eugene B. Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
CN100343798C (zh) * 2002-08-05 2007-10-17 Nxp股份有限公司 用于处理vliw指令的处理器和方法
JP2005535974A (ja) 2002-08-16 2005-11-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 超長命令語プロセッサにおける可変長命令の処理を可能にさせる装置、方法およびコンパイラ
EP1546869B1 (de) 2002-09-24 2013-04-03 Silicon Hive B.V. Vorrichtung, verfahren und compiler zum ermöglichen der verarbeitung von ladedirektbefehlen in einem prozessor mit sehr langem befehlswort
EP1554649A2 (de) * 2002-10-11 2005-07-20 Koninklijke Philips Electronics N.V. Datenverarbeitungsvorrichtungs-adressenbereichsabhängige parallelisierung von anweisungen
US8211338B2 (en) 2003-07-01 2012-07-03 Transitions Optical, Inc Photochromic compounds
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7146491B2 (en) * 2004-10-26 2006-12-05 Arm Limited Apparatus and method for generating constant values
KR100636596B1 (ko) 2004-11-25 2006-10-23 한국전자통신연구원 고에너지 효율 병렬 처리 데이터 패스 구조
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7849466B2 (en) * 2005-07-12 2010-12-07 Qualcomm Incorporated Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
JP4916151B2 (ja) * 2005-09-29 2012-04-11 ルネサスエレクトロニクス株式会社 並列演算装置
US8131978B2 (en) * 2006-06-15 2012-03-06 Nec Corporation Restoring plural instructions for same cycle execution from partial instructions and combined supplementing portions generated for compact storage
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US20100004542A1 (en) 2008-07-03 2010-01-07 Texas Instruments Incorporated System and method for ultrasound color doppler imaging
US8418268B2 (en) * 2009-12-04 2013-04-16 Global Trademarks, Llc Garment having support
US9678754B2 (en) 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
US8228109B2 (en) 2010-06-28 2012-07-24 Freescale Semiconductor, Inc. Transmission gate circuitry for high voltage terminal
US8804764B2 (en) 2010-12-21 2014-08-12 International Business Machines Corporation Data path for data extraction from streaming data
US20120198213A1 (en) * 2011-01-31 2012-08-02 International Business Machines Corporation Packet handler including plurality of parallel action machines
JP5813484B2 (ja) * 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
EP3193645B1 (de) * 2014-10-23 2020-01-01 Talon Technologies Inc. Verfahren zum bilden einer taschenbeutel für kleidung und kleidung mit einer taschenbeutel
CN106160717B (zh) 2015-04-03 2020-08-18 恩智浦美国有限公司 传输门电路
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5000000A (en) * 1988-08-31 1991-03-19 University Of Florida Ethanol production by Escherichia coli strains co-expressing Zymomonas PDC and ADH genes
US5615349A (en) 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
DE4040382C2 (de) * 1989-12-15 1999-03-11 Hitachi Ltd Integrierte Halbleiterschaltungsanordnung mit niederer Leistungsaufnahme und Verfahren zu ihrem Betrieb
JPH04143819A (ja) * 1989-12-15 1992-05-18 Hitachi Ltd 消費電力制御方法、半導体集積回路装置およびマイクロプロセツサ
DE69132675T2 (de) * 1990-04-06 2002-06-13 Nec Corp Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
JP3186095B2 (ja) 1991-07-05 2001-07-11 日本電気株式会社 演算処理装置
JPH0527970A (ja) * 1991-07-18 1993-02-05 Seikosha Co Ltd 演算装置
JP2848727B2 (ja) 1991-11-18 1999-01-20 株式会社東芝 並列演算処理装置
EP0855647A1 (de) * 1992-01-06 1998-07-29 Hitachi, Ltd. Rechner zur parallelen Durchführung von Datenabholung und Datenvorgriff
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5371864A (en) * 1992-04-09 1994-12-06 International Business Machines Corporation Apparatus for concurrent multiple instruction decode in variable length instruction set computer
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
US6002880A (en) * 1992-12-29 1999-12-14 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
US5384722A (en) * 1993-03-10 1995-01-24 Intel Corporation Apparatus and method for determining the Manhattan distance between two points
JP2636136B2 (ja) 1993-04-27 1997-07-30 工業技術院長 演算処理装置及び演算処理方法
EP0950946B1 (de) 1993-11-05 2001-08-16 Intergraph Corporation Superskalare Rechnerarchitektur mit Softwarescheduling
JP3199205B2 (ja) * 1993-11-19 2001-08-13 株式会社日立製作所 並列演算装置
GB9412435D0 (en) * 1994-06-21 1994-08-10 Inmos Ltd Computer instruction addressing
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
KR100325658B1 (ko) * 1995-03-17 2002-08-08 가부시끼가이샤 히다치 세이사꾸쇼 프로세서
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5848288A (en) 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures
US5884323A (en) * 1995-10-13 1999-03-16 3Com Corporation Extendible method and apparatus for synchronizing files on two different computer systems
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5826054A (en) 1996-05-15 1998-10-20 Philips Electronics North America Corporation Compressed Instruction format for use in a VLIW processor
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US5852741A (en) 1996-05-15 1998-12-22 Philips Electronics North America Corporation VLIW processor which processes compressed instruction format
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
JPH10232779A (ja) 1997-01-24 1998-09-02 Texas Instr Inc <Ti> 命令並列処理方法及び装置
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
JP3578883B2 (ja) * 1997-01-31 2004-10-20 三菱電機株式会社 データ処理装置
US5881307A (en) * 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
US6256709B1 (en) * 1997-06-26 2001-07-03 Sun Microsystems, Inc. Method for storing data in two-way set associative odd and even banks of a cache memory
JP3414209B2 (ja) * 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
JP3892118B2 (ja) * 1997-07-31 2007-03-14 高砂香料工業株式会社 2,2’−ビス(ジアリールホスフィノ)−6,6’−ビス(トリフルオロメチル)−1,1’−ビフェニル、これを配位子とする遷移金属錯体および光学活性な3−ヒドロキシ酪酸エステル誘導体あるいはβ−ブチロラクトンの製造方法
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP3541669B2 (ja) 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
US6275927B2 (en) * 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes
US6058306A (en) * 1998-11-02 2000-05-02 Hughes Electronics Corporation Compensation of dynamic doppler frequency of large range in satellite communication systems
US6314509B1 (en) * 1998-12-03 2001-11-06 Sun Microsystems, Inc. Efficient method for fetching instructions having a non-power of two size
JP3841967B2 (ja) * 1999-01-19 2006-11-08 株式会社ルネサステクノロジ マイクロプロセッサ
US7000000B1 (en) * 1999-01-25 2006-02-14 E. I. Du Pont De Nemours And Company Polysaccharide fibers
US6116806A (en) * 1999-02-17 2000-09-12 Chang; Chin Pao Connection tightness and swing angle adjustable pivot
US6405301B1 (en) * 1999-06-15 2002-06-11 U.S. Philips Corporation Parallel data processing
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
JP4502532B2 (ja) * 2001-02-23 2010-07-14 株式会社ルネサステクノロジ データ処理装置

Also Published As

Publication number Publication date
SG111062A1 (en) 2005-05-30
CN100339824C (zh) 2007-09-26
EP0886210A3 (de) 2001-09-05
US6085306A (en) 2000-07-04
IL124904A (en) 2002-07-25
EP2138933A1 (de) 2009-12-30
JP3790607B2 (ja) 2006-06-28
CN1208197A (zh) 1999-02-17
US6397319B1 (en) 2002-05-28
US8250340B2 (en) 2012-08-21
US20100169614A1 (en) 2010-07-01
CN1178145C (zh) 2004-12-01
JPH117387A (ja) 1999-01-12
CN1523495A (zh) 2004-08-25
SG91248A1 (en) 2002-09-17
EP1734440B1 (de) 2014-02-12
EP1734440A2 (de) 2006-12-20
US7533243B2 (en) 2009-05-12
MY116751A (en) 2004-03-31
EP0886210A2 (de) 1998-12-23
US20120272044A1 (en) 2012-10-25
US20020144084A1 (en) 2002-10-03
US8019971B2 (en) 2011-09-13
EP2138932A1 (de) 2009-12-30
US20090193226A1 (en) 2009-07-30
MY135426A (en) 2008-04-30
KR100534967B1 (ko) 2006-03-23
DE69838966D1 (de) 2008-02-21
EP0886210B1 (de) 2008-01-09
TW490636B (en) 2002-06-11
EP2138932B1 (de) 2012-02-29
IL124904A0 (en) 1999-01-26
KR19990007023A (ko) 1999-01-25
EP1734440A3 (de) 2007-01-17
SG111061A1 (en) 2005-05-30
US6834336B2 (en) 2004-12-21
US20020129223A1 (en) 2002-09-12

Similar Documents

Publication Publication Date Title
DE69838966T2 (de) Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen
DE19815865B4 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
DE2113890C2 (de) Zentrale Verarbeitungseinrichtung für Datenverarbeitungsanlagen
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE2755273C2 (de)
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60132585T2 (de) Vorrichtung und verfahren zum ausgeben der gruppierung von befehlen in einem vliw-prozessor
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2411963A1 (de) Datenverarbeitungsanlage
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE2935906C2 (de) Mikroprozessor
DE2517276A1 (de) Datenverarbeitungssystem
DE1774296A1 (de) Steuereinheit fuer elektronische Digitalrechner
EP1116128A2 (de) Verfahren zum konfigurieren eines konfigurierbaren hardware-blocks
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE69816775T2 (de) Vorrichtung zur datenverarbeitung mit stapelstruktur
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen
DE2349253C3 (de) Rechnersystem
CH632349A5 (de) Einrichtung zur mikrobefehlssteuerung.
EP1407348B1 (de) Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller
DE69726403T2 (de) Eliminierung des &#39;&#39;read crossbar&#39;&#39; in einem vliw-prozessor
DE102008012807B4 (de) Verfahren zur gemeinsamen Nutzung von Registern in einem Prozessor und Prozessor

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: PANASONIC CORP., KADOMA, OSAKA, JP