DE69824032T2 - Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten - Google Patents

Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten Download PDF

Info

Publication number
DE69824032T2
DE69824032T2 DE69824032T DE69824032T DE69824032T2 DE 69824032 T2 DE69824032 T2 DE 69824032T2 DE 69824032 T DE69824032 T DE 69824032T DE 69824032 T DE69824032 T DE 69824032T DE 69824032 T2 DE69824032 T2 DE 69824032T2
Authority
DE
Germany
Prior art keywords
register
operand
address
field
register file
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
DE69824032T
Other languages
English (en)
Other versions
DE69824032D1 (de
Inventor
Nitin Agrawal
Sunil Nanda
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.)
S3 Graphics Co Ltd
Original Assignee
S3 Graphics 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
Application filed by S3 Graphics Co Ltd filed Critical S3 Graphics Co Ltd
Application granted granted Critical
Publication of DE69824032D1 publication Critical patent/DE69824032D1/de
Publication of DE69824032T2 publication Critical patent/DE69824032T2/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
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • 1. Gebiet der Erfindung
  • Die Erfindung betrifft im allgemeinen Mikroprozessoren und insbesondere einen Prozessor zum Durchführen von Medien-Operationen. Insbesondere betrifft die Erfindung einen Prozessor mit einer modifizierten Harvard-Speicherarchitektur, der Streaming-ALU-Operationen durchführt.
  • 2. Beschreibung des Stands der Technik
  • Es besteht ein allgemeines Interesse daran, die Geschwindigkeit von Computerprozessoren zu erhöhen. Ein besonders großes Interesse besteht insbesondere auf dem Gebiet der Medienverarbeitung, einschließlich digitaler Signalverarbeitung (DSP), graphische Verarbeitung, Audioverarbeitung und Videoverarbeitung. Auf diesem Gebiet verarbeitet ein typischer Algorithmus eine große Anzahl von Elementen, wobei jedes Element nur einmal verwendet wird. Beispielsweise verarbeitet eine typische DSP-Filterschleife eine große Anzahl verschiedener Eingangs-Abtastwerte und wendet verschiedene Operanden eines großen Koeffizientenfeldes auf jeden Eingangs-Abtastwert an. Daher ist für einen typischen Operationszyklus in einer solchen Verarbeitungsumgebung folgendes notwendig: 1) Ermitteln der Adressen des Abtastwertes und des Koeffizienten; 2) Holen des Abtastwerts und des Koeffizienten aus dem Speicher; 3) Anwenden einer Operation auf den Abtastwert sowie auf den Koeffizienten und 4) Speichern des Ergebnisses der Operation.
  • Um den Anforderungen der Medienverarbeitung gerecht zu werden, wurden verschiedene Techniken eingesetzt, um entweder die Taktgeschwindigkeit des Prozessors zu erhöhen, oder um die Effizienz der von dem Prozessor durchgeführten Befehlsverarbeitung zu verbessern. Eine dieser Techniken ist die Computer-Architektur mit reduziertem Befehlssatz (reduced instruction set computer, RISC). Eine RISC-Architektur verwendet ein Design mit geringer Komplexität, das vorsieht, einen kleinen Satz einfacher Befehle zu bedienen, um eine hohe Geschwindigkeit und eine hohe Leistungsfähigkeit zu erreichen. Ferner verwendet eine RISC-Architektur innerhalb des Befehlsformats Befehle mit fester Länge mit sehr wenigen Befehls formaten und mit festen Positionen für bestimmte Operandenfelder, wie Registerindizes. Diese Architektur ermöglicht Befehlsdecodierer und Steuerlogik mit geringer Komplexität, wobei diese geringere Komplexität in eine erhöhte Leistungsfähigkeit anderer Teile des Prozessors umgesetzt werden kann.
  • Eine andere Art und Weise, die Komplexität in einen RISC-basierten Prozessor zu verringern, ist das Entkoppeln der Funktionen der arithmetisch logischen Einheit (ALU) von dem Bewegen der Operanden zwischen der Registerdatei und dem Speicher. Dieses Entkoppeln führt zu einer Lade-/Speicherarchitektur, in der Speicherzugriffe nur durch explizites Laden und Speichern gestattet sind. Daher führt diese Lade-/Speicherarchitektur zu einer Erweiterung der Codegröße, da ein Befehl jeden Speicherzugriff explizit aufrufen muß. Um die oben erörterten DSP-Schritte durchzuführen, muß der RISC-Prozessor daher für eine einzige Iteration einer DSP-Filterschleife zweimal laden und speichern.
  • In der Veröffentlichung "Utilising low level parallelism in general purpose code: the HARP project" von Adams, R. G. et al., Microprocessing and Microprogramming, Band 29, Nr. 3 vom Oktober 1990, wird auf den Seiten 137–149 ein RISC-Prozessor beschrieben, der verschiedene ALUs und eine boolsche Einheit verwendet, um arithmetische und logische Operationen durchzuführen. Die Einheiten arbeiten parallel, wobei von dem Befehl Operanden von verschiedenen Allzweck-Registern sowie ein Direktwert verwendet werden. Das Befehlsformat umfaßt ein Datenziel und zwei Datenquellen.
  • Im Gegensatz zu RISC-Prozessoren haben Computerprozessoren mit einem komplexen Befehlssatz (complex instruction set computer processors, CISC) Befehle, die simultane Speicherzugriffe auf zwei verschiedene Speicherorte zulassen. Durch die Verwendung dieser Befehle kann ein Programmierer in einem einzigen Befehlszyklus sowohl einen Eingangs-Abtastwert als auch einen Koeffizienten abrufen. Ferner sind bei solchen Prozessoren simultane ALU-Operationen möglich. Somit ist die zur Durchführung einer DSP-Filterschleife notwendige Anzahl von Befehlen reduziert.
  • Um diese funktionelle Parallelität zu erreichen, haben CISC-Prozessoren im allgemeinen komplexe Befehls-Decodierschemata, in denen verschiedene Operanden implizit für die Befehle stehen, wobei der Lade-/Speichermechanismus mit der Codierung der ALU-Operation gekoppelt ist. Dementsprechend erlauben nur wenige Befehle paralleles Laden bzw. Spei chern. Sogar diese Operationen sind zudem hinsichtlich der Ein-/Ausgabe auf Kombinationen kleiner Registerdateien begrenzt und unterstützen nur eine begrenzte Untermenge paralleler ALU-Operationen. Ferner erfordern solche Prozessoren komplexere Befehlsdecodierer und haben daher geringere Taktraten.
  • Eine weitere Technik zum Erhöhen der Prozessoreffizienz ist die superskalare Befehls-Ablaufsteuerung (superscalar instruction scheduling). Prozessoren, die superskalare Befehls-Ablaufsteuerungen unterstützen, extrahieren Parallelitäten dynamisch auf dem Befehlsniveau ausgehend von dem Befehlsstream und gruppieren dann Lade- und Speicheroperationen mit den ALU-Operationen. Auf diese Weise können die Befehle parallele Funktionseinheiten in dem Prozessor verwenden. Jedoch sind solche Prozessoren hinsichtlich des Designs und der Größe sehr komplex.
  • Ein weiterer Ansatz zum Erhöhen der Prozessoreffizienz ist das Format mit sehr langem Befehlswort (very long instruction word, VLIW). Das VLIW-Format codiert auf dem Befehlsniveau explizit Parallelitäten in ein sehr langes Befehlswort. Das VLIW hat typischerweise Felder für häufig durchgeführte Operationen, beispielsweise ALU-Operationen und Speicherzugriffe. Bei der Verwendung von VLIWs können die für eine DSP-Filterschleife verwendeten Befehle in ein einziges Befehlswort zusammengefaßt werden. Ferner ermöglicht das VLIW-Format die Verwendung von Decodierern mit geringer Komplexität und bietet die Voraussetzungen für eine hohe Leistungsfähigkeit, indem die Verwendung mehrerer funktioneller Einheiten innerhalb des Prozessors parallelisiert ist.
  • Jedoch setzt das VLIW-Format im wesentlichen voraus, daß die in dem Instruktionsstream vorliegenden Parallelitäten bestimmt werden, wenn das Programm kompiliert wird. Diese Voraussetzung führt zu einem extrem komplexen Programmiermodell, weshalb das Programm schwierig zu kompilieren ist. Daher werden die Vorteile, die sich durch die Verarbeitungseffizienz mittels der Verwendung des VLIW-Formats ergeben, durch Schwierigkeiten während des Kompilierens beschnitten.
  • ABRISS DER ERFINDUNG
  • Die oben beschriebenen Probleme werden durch einen neuen Prozessor und ein Verfahren für Datenstreaming gelöst, die gemäß der vorliegenden Erfindung aufgebaut sind. Der Prozessor hat vorzugsweise eine modifizierte Harvard-Speicherarchitektur mit ersten und zweiten adressierbaren Speichern, einer Adreßregisterdatei mit einer ersten und einer zweiten Gruppe von Adreßregistersätzen, erste und zweite Adreßerzeugungseinheiten, die mit der jeweiligen ersten und zweiten Gruppe von Adreßregistersätzen gekoppelt sind, erste und zweite Stream-Register, eine Allzweckregister-Datei-(Allzweckregister – general purpose register, GPR) und eine arithmetisch-logische Einheit (ALU).
  • Die Adreßregisterdatei umfaßt vorzugsweise acht Registersätze, die in jeweils zwei Gruppen von vier Registern unterteilt sind. Jedes Register umfaßt ein Basis-Register, ein Schritt-Register und eine Modulo-Register. Die ersten und zweiten Gruppen von Adreßregistersätzen adressieren den jeweiligen ersten und zweiten adressierbaren Speicher. Wenn ein Speicherzugriff auf einen Adreßregistersatz durchgeführt wird, werden Inhalte dieses Adreßregistersatzes als Adresse an den entsprechenden adressierbaren Speicher gesendet. Die jeweiligen ersten und zweiten Adreßerzeugungseinheiten aktualisieren gemäß einem von sechs Adressiermodi die Inhalte der gewählten Adreßregistersätze in der ersten und zweiten Gruppe.
  • Der erste und der zweite adressierbare Speicher geben in Reaktion auf das Empfangen einer Adresse eines Adreßregistersatzes Daten aus. Diese Daten werden in den jeweiligen ersten und zweiten Stream-Registern gespeichert. Die GPR-Registerdatei enthält 32 GPRs. Die ALU nimmt zwei Operanden als Eingaben an, wobei der erste entweder von dem ersten Stream-Register oder einem GPR stammt und der zweite entweder von dem zweiten Stream-Register oder einem GPR stammt. Die Ausgaben der ALU können in dem ersten oder zweiten adressierbaren Speicher oder in einem GPR gespeichert werden.
  • Der Prozessor führt Streambefehle aus. Ein Streambefehl führt drei Aktionen parallel aus: 1) er führt eine spezifizierte ALU-Operation bezüglich der Operanden in dem Stream-Register oder in den GPRs durch und speichert das Ergebnis in einem GPR oder in einem Speicher; 2) er aktualisiert die Stream-Register, indem Adressen von der Adreßregisterdatei verwendet werden, um neue Werte zu laden, und 3) er aktualisiert die Adressen in der Adreßregisterdatei.
  • Um diese drei Aktionen durchzuführen, codiert ein Streambefehl ein Operanden-Auswahlfeld und drei Operandenfelder. Das Operanden-Auswahlfeld wählt die Operanden für die ALU-Operation aus und spezifiziert, ob das Ergebnis im ersten oder in dem zweiten adressierbaren Speicher oder in einem GPR gespeichert wird. Die ersten und zweiten Operandenfelder spezifizieren Operanden, die von einer ALU-Operation verwendet werden, welche durch einen darauffolgenden Streambefehl ausgeführt wird. Der erste Operand kann entweder einen Registersatz in der ersten Gruppe innerhalb der Adreßregisterdatei und einen Adressiermodus, oder ein GPR spezifizieren. In gleicher Weise kann der zweite Operand entweder einen Registersatz in der zweiten Gruppe und einen Adressiermodus, oder ein GPR spezifizieren. Es sind fünf Bits notwendig, um entweder einen Registersatz und einen Adressiermodus oder ein bestimmtes GPR zu wählen. Dementsprechend sind die Bits zum Adressieren eines GPRs genauso positioniert, wie die Bits, welche zum Auswählen eines Registersatzes und eines Adreßmodus vorgesehen sind.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das eine Harvard-Speicherarchitektur nach dem Stand der Technik in der Übersicht darstellt;
  • 2 ist ein Blockdiagramm, das die funktionellen Komponenten eines Prozessors in der Übersicht darstellt, der Datenstreaming unterstützt;
  • 3 ist ein Blockdiagramm, das eine Adreßregisterdatei in der Übersicht darstellt;
  • 4 ist eine Liste, die ein Befehlswort-Format darstellt, welches von dem Prozessor von 2 verwendet wird; und
  • 5 ist ein Zeitverlaufdiagramm, das die von dem Prozessor von 2 durchgeführten Schritte darstellt, wenn dieser einen Streambefehl ausführt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGEN
  • Die 1 zeigt eine Darstellung einer Harvard-Speicherarchitektur 100 nach dem Stand der Technik in der Übersicht. Bei der Harvard-Achitektur ist die Prozessorkern-Logik 110 über zwei unabhängige Busgruppen X, Y mit zwei unabhängigen Speicherbänken 112, 114 verbunden. Der Prozessorkern 110 ist mit einem X-Speicher 112 über einen X-Bus gekoppelt, der einen Adreßbus 116 und einen Datenbus 118 aufweist. Ferner ist der Prozessorkern 110 über einen Y-Bus mit einem Y-Speicher 114 gekoppelt, der einen Adreßbus 120 und einen Datenbus 122 aufweist. Üblicherweise werden in einer Harvard-Architektur Daten in einer Speicherbank gehalten, während Befehle in der anderen gehalten werden. Dementsprechend wird eine Architektur, bei der Daten in zwei Speicherbänken und Befehle in einer dritten gehalten werden, "modifizierte Harvard-Architektur" genannt.
  • Ein Vorteil der modifizierten Harvard-Architektur ist, daß zwei Speicherzugriffe in einem einzigen Befehlszyklus ausgeführt werden können. Dieser Vorteil wird erzielt, wenn ein Prozessor mit dieser Architektur Medien-Operationen durchführt. Bei solchen Operationen arbeitet der Prozessor typischerweise auf zwei Datenfeldern, nämlich auf einem Koeffizientenfeld und auf einem Abtastdatenfeld. Wenn die Felder in verschiedenen Speichern gespeichert sind, dann kann der Prozessor durch einen einzigen Befehlszyklus auf zwei Datenfelder zugreifen.
  • Die 2 ist ein Blockdiagramm, das bestimmte funktionelle Komponenten eines Prozessors 200 in der Übersicht darstellt, der gemäß einer Ausführung der vorliegenden Erfindung konstruiert wurde. Es sind ein Befehlsspeicher 210, ein Befehlsdecodierer 214, X- und Y-Adreßregisterdateien 216 und eine Allzweck-Register-(general purpose register)-Datei 218 dargestellt. Ferner sind zwei X- und Y-Adreßerzeugungseinheiten (address generation units, AGUs), eine Lade-/Speichereinheit 222, ein X-Speicher 224X und ein Y-Speicher 224Y dargestellt. Ferner zeigt die 2 X- und Y-Stream-Register 226, X- und Y-Multiplexer (MUXs) 228, eine arithmetisch-logische Einheit (arithmetic logic unit ALU) 230 und einen GPR-Multiplexer (GPR-MUX) 232.
  • Der Befehlsspeicher 210 ist mit dem Befehlsdecodierer 214 gekoppelt und hält Befehle für das von dem Prozessor 200 auszuführende Programm. Der Befehlsspeicher 210 empfängt von dem Befehlsdecodierer 214 einen Programmzähler, der einen Befehl in dem Speicher 210 identifiziert. Der identifizierte Befehl wird aus Befehlsspeicher 210 an den Befehlsdecodierer 214 übertragen.
  • Der Befehlsdecodierer 214 ist mit dem Befehlsspeicher 210, den X- und Y-Adreßregisterdateien 216 und der GPR-Datei 218 gekoppelt. Ferner ist der Befehlsdecodierer 214 über Steuerleitungen (in der 2 als gestrichelte Linien dargestellt) mit den X- und Y-Adreßregisterdateien 216, der Lade-/Speichereinheit 222, den X- und Y-Multiplexern 228, der ALU 230 und dem GPR-Multiplexer 232 gekoppelt. Der Befehlsdecodierer decodiert Be fehle, die der Befehlsspeicher 210 empfängt, und steuert abhängig davon den Betrieb des Prozessors 200. Zum Zwecke dieser Betrachtung wird angenommen, daß der empfangene Befehl ein Streaming-ALU-Befehl ist. Wie im weiteren detailliert beschrieben ist, spezifiziert der Streaming-ALU-Befehl drei Operanden: zwei Quellen und ein Ziel. Die Quellenoperanden werden aus den X- und Y-Stream-Registern 226 und der GPR-Datei 218 ausgewählt. Der Zieloperand wird entweder aus dem X- oder Y-Speicher 224 oder aus der GPR-Datei 218 ausgewählt. Während der Befehl decodiert wird, sendet der Befehlsdecodierer 214 einen ersten Index von dem ersten Operanden an die X-Adreßregisterdatei 216X, einen zweiten Index von dem zweiten Operanden an die Y-Adreßregisterdatei 216Y und alle drei Operanden an die GPR-Datei 218. Ferner sendet der Befehlsdecodierer 214 Steuersignale, welche Befehls-Adreßmodi angeben, an die AGUs 220, und Signale, welche angeben, ob der GPR-Multiplexer 232 in die GPR-Datei 218 schreiben wird, an die GPR-Datei 218.
  • Die X- und Y-Adreßregisterdateien 216 empfangen die jeweiligen X- und Y-Indizes von dem Befehlsdecodierer 214. Ferner sind die X- und Y-Adreßregisterdateien 216 jeweils mit den entsprechenden AGUs 220 und mit der Lade-/Speichereinheit 222 gekoppelt. Die 3 zeigt eine detailliertere Ansicht der Adreßregisterdatei 216. Die Adreßregisterdatei 216 hat acht Adreßregistersätze A0–A7, die in zwei Gruppen von vier Registersätzen A0–A3, A4–A7 unterteilt sind. Die erste Gruppe von vier Registersätzen bildet die X-Registerdatei 216X, während die zweite Gruppe von vier Registersätzen die Y-Registerdatei 216Y bildet. Jeder Adreßregistersatz, wobei der Registersatz A0 beispielhaft ist, hat ein Basis-Register B0 mit 32 Bit, ein Schritt-Register S0 mit 16 Bit und ein Modulo-Register M0 mit 16 Bit. Da nur vier Registersätze in jeder Gruppe A0–A3, A4–A7 sind, ist lediglich ein Index mit zwei Bit notwendig, um einen bestimmten Registersatz aus einer Gruppe auszuwählen. Die jeweiligen X- und Y-Indizes, die von dem Befehlsdecodierer 214 empfangen werden, wählen ein Register in den X- und Y-Adreßregisterdateien 216. Die Inhalte der ausgewählten X- und Y-Adreßregistern 216 werden an die entsprechenden AGUs 220 gesendet, und die Inhalte der ausgewählten X- und Y-Basis-Register 216 werden an die Lade-/Speichereinheit 222 gesendet.
  • Die X- und Y-AGUs 220 empfangen die entsprechenden Inhalte der X- und Y-Adreßregister und die Adreßmodus-Steuersignale von dem Befehlsdecodierer 214, wobei deren Ausgang mit den Eingängen der X- und Y-Adreßregisterdateien 216 gekoppelt ist. Die AGUs 220 modifizieren im nachhinein (post-modify) die gewählten Basis-Register B0, abhängig von dem Adreßmodus, dem Schritt-(S0)-Register und dem Modulo-(M0)-Register, in Reaktion auf den Empfang von Adreßregisterinhalten. Die von den AGUs 220 unterstützten Modi umfassen: 1) automatisches Dekrementieren im nachhinein (auto post decrement); 2) automatisches Inkrementieren im nachhinein (auto post increment); 3) schrittweises Dekrementieren im nachhinein (step post decrement); 4) schrittweises Inkrementieren im nachhinein (step post increment); 5) Basismodus (base) (keine Änderung); und 6) Bit-invertierter (bit reversed)-Modus. In den Modi 1) und 2) wird das Basis-Register B0 gemäß den Inhalten eines Benutzer-Prozessor-Statusregisters (nicht gezeigt) modifiziert. In den Modi 3 und 4 wird das Basis-Register B0 gemäß den Inhalten des Schritt-Registers S0 entweder inkrementiert oder dekrementiert. In den Modi des Dekrementierens/Inkrementierens im nachhinein (post decrement/increment modes), den Modi 1 bis 4, qualifiziert der Modulo-Wert in dem Modulo-Register M0 die Adreßberechnung, um Umlaufpuffern eine Adressierung bereitzustellen. Da es sechs Adreßmodi gibt, werden drei Bits benötigt, um einen bestimmten Modus auszuwählen.
  • Die jeweiligen X- und Y-Adreßregisterdateien 216 senden zudem die Inhalte der ausgewählten Basis-Register an die Lade-/Speichereinheit 222. Die Lade-/Speichereinheit 222 ist mit den X- und Y-Adreßregisterdateien 216, den X- und Y-Stream-Registern 226, der ALU 230, dem GPR-Multiplexer 232 und der GPR-Datei 218 gekoppelt und empfängt Steuersignale von dem Befehlsdecodierer 214. Ferner ist die Lade-/Speichereinheit 222 bidirektional mit den X- und Y-Speichern 224 gekoppelt. Die Kopplungen 223 zwischen den Lade-/Speichereinheiten 222 und den Speichern 224 umfassen jeweils getrennte Adreß- und Datenbusse, wie diejenigen, welche in 1 gezeigt sind, und bilden daher eine modifizierte Harvard-Architektur.
  • Die Lade-/Speichereinheit 222 lädt Daten von adressierbaren Speicherorten innerhalb des Prozessors 200, einschließlich der X- und Y-Speicher 224 und speichert Daten in diesen Speicherorten. Für Stream-Zugriffe lädt die Lade-/Speichereinheit 222 Daten von den X- und Y-Speichern 224 in die jeweiligen X- und Y-Stream-Register 228. Für normale Zugriffe lädt die Lade-/Speichereinheit 222 Daten über den GPR-Multiplexer 232 von den Speichern in die GPR-Datei 218. Die Lade-/Speichereinheit 222 speichert Eingangsdaten, die von der ALU 230 empfangen werden, in dem X- oder Y-Speicher 224, falls dies von einem Streaming-Befehl spezifiziert ist. Die Lade-/Speichereinheit 222 speichert ferner in Reaktion auf einen expliziten Speicherbefehl Daten im Speicher, die von der GPR-Datei 218 empfangen werden.
  • Die X-Registerdatei 216X kann nur Adressen in dem X-Speicher 216X referenzieren, während die Y-Registerdatei 216Y nur Adressen innerhalb des Y-Speichers 216Y referenzieren kann. Daher muß die Lade-/Speichereinheit 222 nicht ermitteln, auf welchen Speicher 224 sich eine von der Adreßregisterdatei 216 empfangene Adresse bezieht. Für Zugriffe ohne Streaming (non-streaming accesses) identifiziert die Adresse, welche von der Lade-/Speichereinheit 222 empfangen wurde, explizit denjenigen Speicher, auf den sich die Adresse bezieht.
  • Die X- und Y-Speicher 224 sind mit der Lade-/Speichereinheit 222 gekoppelt und sind adressierbare Speicher. In Reaktion auf das Empfangen einer Speicheradresse und von Steuersignalen von der Lade-/Speichereinheit 222 speichern die Speicher entweder eine Eingabe in der referenzierten Speicheradresse oder geben die Inhalte der referenzierten Speicheradresse aus.
  • Die X- und Y-Stream-Register 226 empfangen Eingaben von der Lade-/Speichereinheit 222, geben Werte an die X- und Y-Multiplexer 228 aus und haben eine Breite von mindestens 32 Bits. Die X- und Y-Stream-Register 226 speichern die Daten, welche von der Lade-/Speichereinheit 222 von den jeweiligen X- und Y-Speichern 224 geholt wurden, wenn Befehle der ALU 230 mit Streaming ausgeführt werden.
  • Die GPR-Datei 218 weist Eingänge auf, die mit dem Befehlsdecodierer 214 und dem GPR-Multiplexer 232 gekoppelt sind, und hat Ausgänge, die mit den X- und Y-Multiplexern 228 und der Lade-/Speichereinheit 222 gekoppelt sind. Innerhalb der GPR-Datei 218 sind 32 GPRs vorgesehen, und jeder GPR hat eine Breite von mindestens 32 Bits. Die GPRs 218 halten Allzweckdaten, die von dem Prozessor 200 verwendet werden. Dementsprechend können in Reaktion auf explizite Lade- und Speicherbefehle die Inhalte der GPRs innerhalb der Datei 218 über die Lade-/Speichereinheit 222 von dem Speicher geladen und in diesem Speicher gespeichert werden.
  • Wenn ein Streamingbefehl decodiert wird, sendet der Befehlsdecodierer 214 drei in dem Streambefehl vorliegende Operandenfelder an die GPR-Datei 218. Die ersten zwei Operanden spezifizieren die Quellen für die Streaming-Operation der ALU 230. Da die Datei 218 32 GPRs aufweist, spezifizieren Indizes mit fünf Bit in jedem der ersten zwei Operandenfelder bestimmte GPRs innerhalb der GPR-Datei 218. Die Inhalte des GPRs, welche von dem ersten Operanden spezifiziert werden, werden an den Multiplexer 228X gesendet, welcher dem X-Register 226X entspricht, und die Inhalte des GPRs, welche von dem zweiten Operanden spezifiziert werden, werden an den Multiplexer 228Y gesendet, welcher dem Y-Register 226Y entspricht. Der dritte Operand spezifiziert zusammen mit dem im weiteren beschriebenen Operanden-Auswahlfeld das Ziel des Ergebnisses der Operation der ALU 230. Wenn dieses Ziel ein GPR ist, dann empfängt die GPR-Datei 218 von der ALU 230 das Ergebnis über den GPR-Multiplexer 232 und speichert dieses in dem GPR, welches durch den dritten Operanden spezifiziert ist.
  • Die X- und Y-Multiplexer 228 empfangen die jeweiligen Inhalte der X- und Y-Stream-Register 226 sowie die Inhalte der spezifizierten ersten und zweiten GPRs. Die Ausgaben des Multiplexers 228 werden an die ALU 230 weitergegeben. Jeder Multiplexer empfängt Steuersignale von dem Befehlsdecoder 214, die spezifizieren, welche Eingabe der Multiplexer an die ALU 230 ausgibt.
  • Die ALU 230 empfängt Eingaben von den Multiplexern 228, empfängt Steuersignale von dem Befehlsdecodierer 214 und weist einen Ausgang auf, der mit der Lade-/Speichereinheit 222 und dem GPR-Multiplexer 232 gekoppelt ist. Die ALU 230 führt arithmetische Operationen mit ihren Eingaben aus und erzeugt eine Ausgabe. Der durchgeführte Operationstyp wird durch die Steuersignale spezifiziert, die von dem Befehlsdecodierer 214 empfangen werden.
  • Der GPR-Multiplexer 232 weist einen Eingang auf, der mit dem Ausgang der ALU 230 gekoppelt ist, sowie einen Eingang, der mit einem Ausgang der Lade-/Speichereinheit 222 gekoppelt ist, empfängt Steuersignale von dem Befehlsdecodierer 214 und hat einen Ausgang, der mit der GPR-Datei 218 gekoppelt ist. Wenn der GPR-Multiplexer 232 derartig von dem Befehlsdecodierer 214 angesteuert wird, gibt dieser eine empfangene Eingabe an die GPR-Datei 218 aus.
  • Die 4 zeigt das Codieren von Befehlen für einen ALU-Befehl mit Streaming, der von denjenigem Typ ist, welcher von dem Befehlsdecodierer 214 decodiert wurde. Wie sich aus der 4 ergibt, sind acht Befehl-Codierungsformate vorgesehen, wobei jedes Befehl-Codierungsformat durch einen Code mit drei Buchstaben identifiziert wird, der die Operanden für dieses Format spezifiziert. Die drei Buchstaben spezifizieren die jeweilige Quelle des ersten Operanden, die Quelle des zweiten Operanden und das Ziel für die Ergebnisse der Opera tion der ALU 230. Beim Auftreten an erster oder zweiter Stelle spezifiziert der Buchstabe "X" das Stream-Register 226X, der Buchstabe "Y" das Y-Stream-Register 226Y und der Buchstabe "R" ein GPR. Beim Auftreten an der dritten Stelle spezifiziert der dritte Buchstabe "X" den X-Speicher 224X, der Buchstabe "Y" den Y-Speicher 224Y und der Buchstabe "R" ein GPR. Wird beispielsweise ein Befehlsformat 414 mit "XYR" gekennzeichnet, gibt dies an, daß die Quelloperanden von den jeweiligen X- und Y-Stream-Registern 226 kommen, und daß das Ziel ein GPR ist.
  • Das Befehlsformat 400 ist vorzugsweise 32 Bit lang. Die Bits 14–10, die mit "A" gekennzeichnet sind, identifizieren den ersten Operanden, die Bits 9–5, welche mit "B" gekennzeichnet sind, identifizieren den zweiten Operanden, und die Bits 20–16, die mit "C" gekennzeichnet sind, identifizieren den dritten Operanden. Die Op6-Bits 2–0, die mit "D" gekennzeichnet sind, spezifizieren den Codiertyp (der Operanden), der von dem Befehlsformat verwendet wird. Die Op1-6-Bits 27–21, 15 und 4–3, die mit "E" gekennzeichnet sind, enthalten Operationscodes (opcodes) für das Befehlsformat. Schließlich identifizieren die COND-Bits 31–28, welche mit "F" gekennzeichnet sind, die Bedingungen, unter denen der Befehl ausgeführt werden wird.
  • Das Feld D ist ein Operanden-Auswahlfeld mit drei Bit, das spezifiziert, von wo der erste und der zweite Operand der ALU gelesen werden, und wohin das Ergebnis der ALU-Operation gespeichert wird (Operand 3). Die Tabelle 1 gibt die möglichen Operandenkombinationen an, den entsprechenden Wert des Feldes D (Op6) und das entsprechende Bezugszeichen in 4.
  • Tabelle 1
    Figure 00110001
  • Der erste Operand wird entweder aus einem GPR oder aus einem X-Stream-Register 226X ausgewählt. Im Gegensatz dazu wird der zweite Operand entweder aus dem GPR oder aus dem Y-Stream-Register 226Y ausgewählt. Der dritte Operand kann in dem X-Speicher 224X, dem Y-Speicher 224Y oder in einem GPR gespeichert werden.
  • Die Felder A, B und C spezifizieren den jeweiligen ersten, zweiten und dritten Operanden. Der erste Operand A und der zweite Operand B werden verwendet, um die Eingaben an die ALU 230 (das Stream-Register 226 und die GPR-Datei 218) für die Verwendung durch eine darauffolgende Operation der ALU 230 zu aktualisieren. Die durch den ersten und zweiten Operanden spezifizierten Werte überschreiben diejenigen Werte, welche davor in den Stream-Registern 226 gehalten wurden. Wie oben bemerkt, gibt der dritte Operand an, wo das Ergebnis der aktuellen Operation der ALU 230 zu speichern ist.
  • Da in der GPR-Datei 218 32 GPRs vorliegen, ist jedes der Operandenfelder A, B und C fünf Bit breit. Da in jeder der X- und Y-Adreßregisterdateien 216 nur vier Registersätze vorliegen, und da der erste Operand A nur Registersätze aus der X-Registerdatei 216X und der zweite Operand B nur Registersätze aus dem Y-Register 216Y auswählen kann, ist lediglich eine Codierung mit 2 Bits innerhalb des ersten Operandenfelds A und des zweiten Operandenfelds B erforderlich, um einen bestimmten Registersatz innerhalb der Adreß-Registerdatei 216 auszuwählen. Ferner ist eine Codierung mit drei Bits notwendig, um unter den möglichen Adreßmodi auszuwählen. Die Tabelle 2 ist eine Aufstellung der möglichen Adreßmodi und der zugehörigen Adreßmodusbits.
  • Tabelle 2
    Figure 00120001
  • In den Operandenfeldern A, B und C werden die fünf Bits, welche zum Auswählen eines GPR verwendet werden, mit dem Zwei-Bit-Teilfeld des Adreßregisterindexes und dem Drei-Bit-Teilfeld des Adressiermodus überlappt. Daher ist nur ein einzelnes Feld mit fünf Bit A, B, C für jeden der drei Operanden notwendig. Ist beispielsweise das Befehlsformat 410 für einen RRR-Befehl, sind dementsprechend alle drei Operanden als Feld mit fünf Bit A, B, C dargestellt. Im Gegensatz hierzu ist das Befehlsformat 418 ein RYX-Befehl und die Felder mit fünf Bit für den zweiten Operanden B und den dritten Operanden C sind in Teilfelder unterteilt mit drei bzw. zwei Bits dargestellt.
  • Wenn ein Programmierer ein GPR als einen der Quelloperanden verwenden möchte, verwendet der Programmierer das Operandenfeld mit fünf Bit, um das GPR zu spezifizieren. Wenn der Programmierer das X-Stream-Register 226X als ersten Operanden verwenden möchte, nimmt der Programmierer für den Registersatz den Zwei-Bit-Index sowie drei Bits, die den Adreßmodus in dem ersten Operandenfeld A spezifizieren. Der Programmierer kann in gleicher Weise das Y-Stream-Register 226Y als zweiten Operanden verwenden. Wenn die Adreßmodus-Bits auf 000 gesetzt sind, wird der Wert in den X- oder Y-Stream-Registern 226 verwendet, ohne eine Speicherabfrage auszulösen oder das Adreßregister 216 zu aktualisieren.
  • Die Operandenfelder E bezeichnen die Berechnung, die von dem Prozessor ausgeführt wird. Das COND-Feld F beschreibt die Bedingungen (conditions), die geprüft werden müssen, bevor die Berechnung ausgeführt wird.
  • Die 5 ist ein Zeitverlaufsdiagramm, das die von dem Prozessor 200 durchgeführten Schritte darstellt, wenn dieser einen wie in 4 dargestellten Streambefehl ausführt. In der 5 ist die Zeit in der Richtung aufgetragen, die durch Pfeil 500 auf der linken Seite der Figur angegeben ist und die Rechtecke auf der rechten Seite zeigen die Reihenfolge, in der die angegebenen Schritte von den funktionellen Einheiten des Prozessors 200 ausgeführt werden. Da die funktionellen Einheiten des Prozessors 200 parallel arbeiten, ist 5 nicht so zu verstehen, daß die zeitlich nebeneinandergefügten Schritte gleichzeitig auftreten, sondern soll lediglich die ungefähre Reihenfolge angeben, in der die Schritte ausgeführt werden.
  • Als erstes wird ein Streambefehl, wie der in 4 dargestellt, von dem Befehlsdecodierer 214 empfangen, T0. Als nächstes, T1, sendet der Befehlsdecodierer 214 die Indexbits des ersten und zweiten Operanden an die jeweilige X- und Y-Adreßregisterdatei 216. Zur gleichen Zeit, T1, sendet der Befehlsdecodierer 214 alle drei Operanden an die GPR-Datei 218.
  • Zudem decodiert der Befehlsdecodierer das Up6-Feld, um die Operanden für die aktuelle Operation der ALU 230 sowie den Ort zu ermitteln, an dem das Ergebnis gespeichert werden soll. Der folgende Pseudocode erklärt das von dem Decodierer 214 durchgeführte Befehlsdecodieren, wenn das Op6-Feld decodiert wird.
  • Figure 00140001
  • Sobald das Op6-Feld decodiert ist, liest die ALU 230 die gewählten Eingaben von dem Befehlsdecodierer 214.
  • Als nächstes, T2, geben die Adreßregisterdateien 216 die Inhalte der gewählten Register an die Lade-/Speichereinheit 222 weiter und veranlassen, daß die entsprechenden Werte in die X- und Y-Stream-Register 226 geladen werden. Zudem aktualisieren die AGUs 220 die von den Indexbits gewählten Adreßregister. Zur gleichen Zeit wird die von dem decodierten Befehl angegebene Operation der ALU 230 bezüglich der davor gelesenen Operanden durchgeführt.
  • Als nächstes wird das Ergebnis der fertiggestellten Operation der ALU 230 an dem Ort gespeichert, der von dem Op6-Feld und dem dritten Operanden angegeben ist, wie es der folgende Pseudocode darstellt:
  • Figure 00150001
  • Somit führt eine Streamoperation drei Aufgaben gleichzeitig aus:
    • 1) führt die spezifizierte Operation der ALU 230 bezüglich der Operanden der X- und Y-Stream-Register 226 oder der GPR-Datei 218 durch und speichert das Ergebnis;
    • 2) aktualisiert die Operanden für die ALU 230, indem die Daten in den X- und Y-Stream-Registern 226 aktualisiert werden und stellt die Inhalte der zwei GPRs von der GPR-Datei für den X- und Y-Multiplexer 228 bereit; und
    • 3) berechnet die Adressen für die zwei nächsten Speicherreferenzen, indem die AGUs 220 verwendet werden, und speichert die Adressen in der Adreßregisterdatei.
  • Als Beispiel soll eine Streaming-Implementierung des "ADD"-Befehls betrachtet werden, der das Format "ADD Quelle 1 Quelle 2 Ergebnis" verwendet. Ein ADD-Befehl mit Streaming, der das X-Stream-Register 226X und das Y-Stream-Register 226Y als Quelloperanden verwendet, der das Ergebnis der ADD-Operation in einem GPR in der GPR-Datei 218 speichert, und ferner die Quelloperanden im nachhinein dekrementiert, wird als "add [x++] [y++] GPR" bezeichnet, wobei "x" und "y" sich auf die jeweiligen Register innerhalb der X- und Y-Adreßregisterdatei 216 bezieht und "GPR" sich auf ein Register innerhalb der GPR-Datei 218 bezieht. Dieser ADD-Befehl entspricht dem Befehlsformat 414.
  • Wenn dieser Befehl von dem Prozessor 200 ausgeführt wird, werden von der ALU 230 die Daten in dem X-Stream-Register 218X zu den Daten in dem Y-Stream-Register 228Y addiert. Das Ergebnis dieser Addieroperation wird in dem identifizierten GPR gespeichert. Ferner wird eine Abfrage des X-Speichers 224X bezüglich der Daten gestartet, welche durch [x] adressiert werden, und diese werden in dem X-Stream-Register 226X gespeichert. In gleicher Weise wird eine Abfrage des Y-Speichers 224Y bezüglich der Daten gestartet, welche von [y] adressiert werden, und diese werden in dem Y-Stream-Register 226Y gespeichert. Schließlich werden die Basis-Register der [x]- und [y]-Register innerhalb der Adreßregisterdatei 216 aktualisiert. Wenn der ADD-Befehl mit Streaming mit "add X [y++] GPR" bezeichnet worden wäre, dann wäre die Speicherabfrage des X-Speichers 224X und das Aktualisieren des [x]-Registers nicht durchgeführt worden, da die Inhalte des X-Stream-Registers 226 wieder verwendet worden wären.
  • In einem weiteren Beispiel wird ein Befehl angenommen, der mit "add [x++] GPR [y++]" bezeichnet wird. Wenn der Prozessor 200 diesen Befehl ausführt, werden die Daten in dem X-Stream-Register 226X zu den Daten in dem identifizierten GPR addiert und das Ergebnis der Addieroperation wird an dem Ort innerhalb des Y-Speichers 224Y gespeichert, der durch [y] identifiziert ist. Zudem wird eine Abfrage des X-Speichers 224X bezüglich Daten ausgelöst, die durch [x] identifiziert werden. Die abgefragten Daten werden in dem X-Stream-Register 226X gespeichert. Schließlich werden die Basis-Register der [x]- und [y]-Register innerhalb der Adreßregisterdatei aktualisiert.

Claims (20)

  1. Verfahren zum Ausführen eines Befehls mit einem ersten, einem zweiten und einem dritten Operandenfeld (A, B, C), einem Operanden-Spezifikationsfeld (D), und zum Spezifizieren einer logischen Operation, mit folgenden Verfahrensschritten: Ausführen der spezifizierten logischen Operation mit einem ersten Wert, der ausgewählt wird aus einem ersten Register (226X) und einer Ausgabe einer ersten Allzweck-Registerdatei (218), und mit einem zweiten Wert, der ausgewählt wird aus einem zweiten Register (226Y) und einer Ausgabe einer zweiten Allzweck-Registerdatei (218), um ein Ergebnis zu erzeugen, wobei das Operanden-Spezifikationsfeld (D) spezifiziert, woher der erste und der zweite Wert ausgewählt werden sollen; Speichern des Ergebnisses der logischen Operation an einer Stelle, welche durch den dritten Operanden (C) und das Operanden-Spezifikationsfeld (D) identifiziert wird; Aktualisieren eines Wertes in dem ersten Register (226X) gestützt auf das erste Operandenfeld (A) und eine Adreßregisterdatei (216) vor einer nachfolgenden Operation; und Aktualisieren eines Wertes in dem zweiten Register (226Y) gestützt auf das zweite Operandenfeld (B) und die Adreßregisterdatei (216) vor einer nachfolgenden Operation.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Aktualisierens eines Wertes in dem ersten Register (226X) die folgenden Unterschritte umfaßt: Liefern eines ersten Index in dem ersten Operandenfeld (A) an die Adreßregisterdatei (216); und Auswählen eines ersten Adreßregisters (226) in der Adreßregisterdatei (216), welche eine Adresse entsprechend dem ersten Index enthält.
  3. Verfahren nach Anspruch 2, mit den weiteren Verfahrensschritten: Wiedergewinnen eines Wertes, der durch die Adresse spezifiziert wird, aus einem adressierbaren Speicher (224); Aktualisieren der Adresse nach Maßgabe eines Adressierungsmodus, der durch das erste Operandenfeld spezifiziert wird.
  4. Verfahren nach Anspruch 3, mit dem weiteren Schritt des Speicherns des wiedergewonnenen Wertes in dem ersten Register.
  5. Verfahren nach Anspruch 1, wobei die durch den dritten Operanden und das Operanden-Spezifikationsfeld identifizierte Stelle ein Register in der Registerdatei umfaßt.
  6. Verfahren nach Anspruch 1, wobei die von dem dritten Operanden und dem Operanden-Spezifikationsfeld identifizierte Stelle einen adressierbaren Speicher umfaßt.
  7. Verfahren nach Anspruch 1, wobei die logische Operation eine arithmetische Logikoperation ist.
  8. Verfahren nach Anspruch 1, wobei das erste und das zweite Operandenfeld jeweils einen ersten bzw. einen zweiten Adressiermodus spezifizieren und die Schritte des Aktualisierens jeweils die Werte in dem ersten und in dem zweiten Register nach Maßgabe des ersten und des zweiten Adressiermodus aktualisieren.
  9. Verfahren nach Anspruch 1, wobei das erste und das zweite Register Stream-Register umfassen.
  10. Prozessor zum Verarbeiten eines Befehls, wobei der Prozessor eine Adreßregisterdatei (216) und eine Allzweck-Registerdatei (218) umfaßt und in Kommunikation mit einem ersten (224X) und einem zweiten (224Y) Speicher ist, und eine Logikoperationseinheit (230) erste und zweite Eingaben annimmt, wobei der Befehl umfaßt: ein Operationsfeld, welches eine Logikoperation spezifiziert, die mit der ersten und der zweiten Eingabe ausgeführt werden soll; ein erstes Feld (A), das einen ersten Operanden spezifiziert, wobei der erste Operand abhängig von einem ersten Operanden-Spezifikationsfeld ausgewählt wird aus der Adreßregisterdatei (216) oder der Allzweck-Registerdatei (218) und die erste Eingabe der Logikoperationseinheit aktualisieren kann; ein zweites Feld (B), das einen zweiten Operanden spezifiziert, wobei der zweite Operand abhängig von einem zweiten Operanden-Spezifikationsfeld ausgewählt wird aus der Adreßregisterdatei (216) oder der Allzweck-Registerdatei (218) und die zweite Eingabe der Logikoperationseinheit aktualisieren kann; und ein drittes Feld (C), welches einen dritten Operanden spezifiziert, der angibt, wo ein Ergebnis der Logikoperation gespeichert werden soll, wobei der dritte Operand ausgewählt wird aus der Allzweck-Registerdatei (218) und dem ersten und dem zweiten Speicher (224X, Y).
  11. Prozessor nach Anspruch 10, wobei die Adreßregisterdatei aus einem ersten (216X) und einem zweiten (216Y) Adreßregistersatz gebildet wird, und wobei das erste Feld ein erstes Register in dem ersten Adreßregistersatz und das zweite Feld ein zweites Register in dem zweiten Adreßregistersatz spezifiziert.
  12. Prozessor nach Anspruch 10, wobei das erste und das zweite Feld jeweils mehrere Bits umfassen und wobei das Auswählen eines bestimmten Allzweck-Registers in der Allzweck-Registerdatei dieselben Bits wie das Auswählen eines Adreßregisters in der Adreßregisterdatei und einen Adressiermodus verwendet.
  13. Prozessor nach Anspruch 10, mit den weiteren Merkmalen: ein viertes Feld, welches die Auswahl des ersten, des zweiten und des dritten Operanden spezifiziert; wobei das erste und das zweite Feld jeweils einen ersten bzw. einen zweiten Adressiermodus spezifizieren, wenn das vierte Feld spezifiziert, daß der erste und der zweite Operand aus der Adreßregisterdatei ausgewählt werden.
  14. Prozessor nach Anspruch 13, wobei die Spezifikation in dem ersten und dem zweiten Feld der Adreßregisterdatei und der Adressiermodus von der Spezifikation der Allzweck-Registerdatei überlagert werden.
  15. Prozessor nach Anspruch 10 zum Ausführen des Befehls und einer Operandenkombination, welche Eingangsregister und einen Ausgangsregister oder Speicher spezifiziert, mit folgenden Merkmalen: eine Adreßregisterdatei (216) mit einer ersten (216X) und einer zweiten (216Y) Gruppe von Registersätzen, wobei der erste Operand (A) einen ersten Registersatz in der ersten Gruppe (216X) und einen ersten Adressiermodus spezifiziert, der zweite Operand (B) einen zweiten Registersatz in der zweiten Gruppe (216Y) und einen zweiten Adressiermodus spezifiziert, und der erste und der zweite Registersatz und der Adressiermodus jeweils die erste bzw. zweite Eingabe der Logikeinheit (230) aktualisieren; und eine Allzweck-Registerdatei (218) mit mehreren Allzweck-Registern, wobei der erste (A) und der zweite (B) Operand jeweils ein erstes bzw. ein zweites Allzweck-Register in der Allzweck-Registerdatei (218) spezifizieren und das erste und das zweite Allzweck-Register jeweils die erste bzw. die zweite Eingabe der Logikeinheit (230) aktualisieren, wobei die erste und die zweite von der Logikeinheit (230) angenommene Eingabe von der Operandenkombination bestimmt werden und eine Ausgabe erzeugen, wobei die Ausgabe in einer Stelle gespeichert wird, welche von dem dritten Operanden (C) und der Operandenkombination spezifiziert wird.
  16. Prozessor nach Anspruch 15, wobei jeder Registersatz in der Adreßregisterdatei folgendes umfaßt: ein Basis-Register (B0–B7); ein Schritt-Register (S0–S7); und ein Modulo-Register (M0–M7); wobei das Schritt- und das Modulo-Register dazu verwendet werden, das Basis-Register nach Maßgabe des spezifizierten Adressiermodus zu modifizieren.
  17. Prozessor nach Anspruch 16, mit den weiteren Merkmalen: eine Adreßerzeugungseinheit zum Modifizieren des Basis-Registers nach Maßgabe des spezifizierten Adressiermodus, des Schritt-Registers und des Modulo-Registers.
  18. Prozessor nach Anspruch 15, mit den weiteren Merkmalen: ein erster und ein zweiter Speicher, wobei der erste Registersatz in der ersten Gruppe eine erste Stelle in dem ersten Speicher spezifiziert und der zweite Registersatz in der zweiten Gruppe eine zweite Stelle in dem zweiten Speicher spezifiziert.
  19. Prozessor nach Anspruch 18, wobei die erste und die zweite Eingabe der Logikeinheit jeweils umfassen: ein erstes und ein zweites Stream-Register, wobei das erste Stream-Register einen ersten Wert aus der ersten Stelle in dem Speicher hält und das zweite Stream-Register einen zweiten Wert aus der zweiten Stelle in dem Speicher hält.
  20. Prozessor nach Anspruch 19, mit den weiteren Merkmalen: eine Lade/Speicher-Einheit, die zwischen dem ersten und dem zweiten Speicher und dem ersten und dem zweiten Stream-Register angeordnet ist, wobei die Lade-/Speicher-Einheit den ersten und den zweiten Wert von dem ersten und dem zweiten Speicher an das erste und das zweite Stream-Register überträgt.
DE69824032T 1997-11-07 1998-11-06 Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten Expired - Lifetime DE69824032T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US966904 1997-11-07
US08/966,904 US5958038A (en) 1997-11-07 1997-11-07 Computer processor with two addressable memories and two stream registers and method of data streaming of ALU operation
PCT/US1998/023628 WO1999024901A1 (en) 1997-11-07 1998-11-06 Computer processor and method for data streaming

Publications (2)

Publication Number Publication Date
DE69824032D1 DE69824032D1 (de) 2004-06-24
DE69824032T2 true DE69824032T2 (de) 2005-05-12

Family

ID=25512033

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69824032T Expired - Lifetime DE69824032T2 (de) 1997-11-07 1998-11-06 Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten

Country Status (7)

Country Link
US (1) US5958038A (de)
EP (1) EP1027641B1 (de)
JP (1) JP3866513B2 (de)
AU (1) AU1310899A (de)
CA (1) CA2284772C (de)
DE (1) DE69824032T2 (de)
WO (1) WO1999024901A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2773234B1 (fr) * 1997-12-31 2003-07-25 Sgs Thomson Microelectronics Memoire a double acces pour processeur de signal numerique
US6212604B1 (en) 1998-12-03 2001-04-03 Sun Microsystems, Inc. Shared instruction cache for multiple processors
US7254231B1 (en) * 1999-10-14 2007-08-07 Ati International Srl Encryption/decryption instruction set enhancement
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US6834337B1 (en) 2000-09-29 2004-12-21 International Business Machines Corporation System and method for enabling multiple signed independent data elements per register
US6906978B2 (en) * 2002-03-19 2005-06-14 Intel Corporation Flexible integrated memory
US7533232B2 (en) * 2003-11-19 2009-05-12 Intel Corporation Accessing data from different memory locations in the same cycle
JP3760999B2 (ja) * 2004-06-15 2006-03-29 セイコーエプソン株式会社 情報処理装置、マイクロコンピュータ及び電子機器
US20080177980A1 (en) * 2007-01-24 2008-07-24 Daniel Citron Instruction set architecture with overlapping fields
JP5708210B2 (ja) * 2010-06-17 2015-04-30 富士通株式会社 プロセッサ
WO2012158699A1 (en) * 2011-05-16 2012-11-22 Romark Laboratories, L.C. Use of thiazolide compounds for the prevention and treatment of viral diseases, cancer and diseases caused by intracellular infections
US10022189B2 (en) 2013-12-16 2018-07-17 Stryker Sustainability Solutions, Inc. Apparatus and method for cleaning an instrument
US20160313995A1 (en) * 2015-04-24 2016-10-27 Optimum Semiconductor Technologies, Inc. Computer processor with indirect only branching
US10713174B2 (en) * 2016-12-20 2020-07-14 Texas Instruments Incorporated Streaming engine with early and late address and loop count registers to track architectural state
US12112163B2 (en) * 2021-12-03 2024-10-08 Taiwan Semiconductor Manufacturing Company, Ltd. Memory interface

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2407520B1 (fr) * 1977-10-25 1989-05-12 Digital Equipment Corp Unite de traitement centrale pour l'execution d'instructions avec un specificateur d'operande special
EP0476722B1 (de) * 1985-04-08 1997-02-26 Hitachi, Ltd. Datenverarbeitungssystem
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
JP3532975B2 (ja) * 1993-09-27 2004-05-31 株式会社ルネサステクノロジ マイクロコンピュータおよびそれを用いて命令を実行する方法
US5805913A (en) * 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5692207A (en) * 1994-12-14 1997-11-25 International Business Machines Corporation Digital signal processing system with dual memory structures for performing simplex operations in parallel

Also Published As

Publication number Publication date
JP3866513B2 (ja) 2007-01-10
CA2284772A1 (en) 1999-05-20
EP1027641A1 (de) 2000-08-16
AU1310899A (en) 1999-05-31
WO1999024901A1 (en) 1999-05-20
US5958038A (en) 1999-09-28
DE69824032D1 (de) 2004-06-24
EP1027641B1 (de) 2004-05-19
CA2284772C (en) 2011-11-01
JP2001523022A (ja) 2001-11-20
EP1027641A4 (de) 2002-09-04

Similar Documents

Publication Publication Date Title
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE69030905T2 (de) Mikroprozessor mit Pipeline-Predecodereinheit und -Hauptdecodereinheit
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE69502098T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69503046T2 (de) Mehrfachbefehlssatzabbildung
DE69524570T2 (de) Verfahren und Vorrichtung zur Verbesserung der Systemleistung in einem Datenverarbeitungssystem
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE3851746T2 (de) Sprungvorhersage.
DE3685913T2 (de) Vektorenverarbeitung.
DE69230057T2 (de) Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE69707486T2 (de) Architektur eines integrierten bausteins zur digitalen signalverarbeitung
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE68928727T2 (de) Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE3751540T2 (de) Verfahren und Vorrichtung zur Datenverarbeitung.
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1027641

Country of ref document: EP

Representative=s name: KAHLER, KAECK & MOLLEKOPF, DE