DE3906327A1 - Vektorregisterblock und verfahren zur zugriffsverwaltung - Google Patents
Vektorregisterblock und verfahren zur zugriffsverwaltungInfo
- Publication number
- DE3906327A1 DE3906327A1 DE3906327A DE3906327A DE3906327A1 DE 3906327 A1 DE3906327 A1 DE 3906327A1 DE 3906327 A DE3906327 A DE 3906327A DE 3906327 A DE3906327 A DE 3906327A DE 3906327 A1 DE3906327 A1 DE 3906327A1
- Authority
- DE
- Germany
- Prior art keywords
- vector
- vector register
- register block
- computer
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Description
Die vorliegende Erfindung bezieht sich auf einen Vektorregisterblock
für Vektorrechner-Computersysteme und auf Verfahren
zu dessen Zugriffsverwaltung.
Typischerweise wird ein Vektorregisterblock in einem Vektorrechner-
Computersystem benutzt, um Vektoren zum Rechnen abzuspeichern.
In solch einem System können dann Operationen auf
einem Vektor zur Zeit durchgeführt werden. Eine Operation wie
ADD VREG1, VREG2, VREG3, z. B., in einem Vektorrechnersystem
würde bewirken, daß das erste Element in Vektorregister 1 zu
dem ersten Element von Vektorregister 2 addiert und das Ergebnis
im ersten Element von Vektorregister 3 gespeichert würde.
Ebenso würde das zweite Element von Vektorregister 1 zu dem
zweiten Element von Vektorregister 2 addiert und das Ergebnis
würde im zweiten Element von Vektorregister 3 gespeichert.
Jedes Element von Vektorregister 1 und Vektorregister 2 wird
entsprechend bearbeitet und im korrespondierenden Element von
Vektorregister 3 abgespeichert.
Um die Verarbeitungsgeschwindigkeit in solchen Computersystemen
zu erhöhen, werden häufig Speicher mit mehreren Ein-
oder Ausgängen (im folgenden als Multiport-Speicher bezeichnet)
beim Aufbau des Vektorregisterblocks verwendet. Solche
Multiport-Speicher bieten den Vorteil, daß während eines einzigen
Speicherzyklus' an mehreren Speicherstellen gelesen oder
geschrieben werden kann. Solche Multiport-Speicher bringen
jedoch auch einige Nachteile mit sich, u. a. z. B., daß sie
typischerweise kostspieliger in Konstruktion, Bau und Verkauf
sind, als Speicher mit nur einem Anschluß (Einzelport-Speicher),
daß sie weniger leicht erhältlich sind, als Einzelport-
Speicher und daß sie typischerweise langsamer als Einzelport-
Speicher sind.
Daher ist es Aufgabe der vorliegenden Erfindung, einen Vektorregisterblock
für ein Vektorrechner-Computersystem zu schaffen,
das Einzelport-Speicherzellen verwendet und gleichzeitig
die Geschwindigkeitsvorteile von Multiport-Speichern bietet.
Bekannte Vektorrechnersysteme benutzen typischerweise Vektorregisterblocks
von etwas begrenzter Größe. Ein typisches
CRAY-Computersystem, z. B., das von Cray Research of Minneapolis,
Minnesota, hergestellt wird, hat vielleicht acht Vektorregister,
jedes mit einer Tiefe von 64 Elementen für insgesamt
512 Elemente. Andere bekannte Systeme verwenden typischerweise
zwischen zwei- und viermal soviel Vektorregisterraum. Normalerweise
wird die Vergrößerung des Vektorregisterraums durch
Vergrößerung der Tiefe (d. h. auf eine Tiefe von 128 oder 256)
jedes Vektorregisters erzielt. Die Erfindung soll daher weiterhin
den verfügbaren Vektorregisterraum erweitern und eine
erhöhte Flexibilität in Nutzung und Habung dieses Raums
ermöglichen.
Weiterhin soll die vorliegende Erfindung eine Flexibilität der
Programmierung ermöglichen, die die Ausführung von Anweisungen,
die auf einem Vektor operieren, und Berechnungen, die
Zugriff zu einem Vektor an willkürlicher Stelle erfordern,
erlaubt. Beispiele solcher Rechnungsabläufe ergeben sich bei
Rekursions- und/oder Summationsrechnungen.
Die Erfindung beschreibt einen Vektorregisterblock und ein
Verfahren zur Verwaltung des Zugriffs auf den Vektorregisterblock.
Dabei wird die Verwendung von statischen Direktzugriffsspeichern
(SRAMs) offenbart, die in einer Vielzahl von
Banken organisiert sind und zur Simulation von Multiport-Speichern
bei wenigstens zweifacher Systemtaktgeschwindigkeit
arbeiten. Durch die Verwendung von SRAMs beim Aufbau eines
Vektorregisterblocks ergeben sich eine Reihe der erindungsgemäßen
Merkmale.
Die Verwendung von SRAMs erlaubt die Konfiguration eines Computersystems
mit einem relativ großen Anteil an Vektorregisterblockraum.
Dieser Raum kann in eine Vielzahl von Kontextbereichen
aufgeteilt werden, jeder Kontextbereich für die
Unterstützung eines gesonderten Verarbeitungsvorganges. Die
Verwendung solcher Kontextbereiche vermeidet, daß im Vektorregister
zusammenhängende Information auf die Platte ausgelagert
werden muß, wenn zwischen Verarbeitungsvorgängen gewechselt
wird. Die vorliegende Erfindung offenbart die Verwendung eines
Systembasisregisters, eines Benutzerbasisregisters und eines
Systembegrenzungsregisters für die Unterstützung der Nutzung
einer Vielzahl von Kontextbereichen. Die vorliegende Erfindung
offenbart weiterhin ein Adressierungsverfahren zur Adressierung
der Kontextbereiche, das die wahlweise Adressierbarkeit
einzelner Elemente oder Zellen in einem Vektor erlaubt.
Im folgenden wird die Erfindung anhand der beigefügten Zeichnung
näher beschrieben. In der Zeichnung zeigen:
Fig. 1 ein Blockdiagramm, das die erfindungsgemäßen
Speicherbanken darstellt;
Fig. 2 ein Blockdiagramm, das ein erfindungsgemäßes
Verfahren zur Aufteilung der Speicherbanken
in eine Vielzahl von Vektorregistern darstellt;
Fig. 3 ein Blockdiagramm, das ein erfindungsgemäßes
Verfahren zur Aufteilung der Speicherbanken
in eine Vielzahl von Kontextbereichen darstellt;
Fig. 4 ein Blockdiagramm, das die erfindungsgemäße
Verwendung von Systembasis-, Benutzerbasis-
und Systembegrenzungsregistern darstellt;
Fig. 5 ein Blockdiagramm, das die erfindungsgemäße
Verwendung von Systembasis-, Benutzerbasis-
und Systembegrenzungsregistern und von zwischen
Unterprogramm gemeinsam verwendeten
Variablen beschreibt;
Fig. 6 ein Blockdiagramm, das einen erfindungsgemäßen
Operandendeskriptor darstellt.
In der nachfolgenden Beschreibung des Vektorregisterblocks
sind zahlreiche spezielle Details angeführt, wie besondere
Bitzahlen, Dimensionen, etc., um ein tiefgreifendes Verständnis
der vorliegenden Erfindung zu ermöglichen. Es sei jedoch
darauf hingewiesen, daß der Fachmann die vorliegende Erfindung
auch ohne diese speziellen Details realisieren kann. An anderen
Stellen sind bekannte Schaltungen, Strukturen und Techniken
nicht im Detail gezeigt, um die vorliegende Erfindung
damit nicht unnötig zu belasten.
Die vorliegende Erfindung offenbart die Anordnung eines Vektorregisterblocks
in einem Vektorrechner-Computersystem in
einer Vielzahl von Direktzugriffsspeicher(RAM)-Banken. Im
vorliegenden Zusammenhang bezieht sich der Terminus "Bank" auf
eine unabhängig zykelbare Speicherzusammenstellung; d. h., daß
jede aus der Vielzahl von Banken während desselben Taktzyklus′
unabhängig adressierbar ist.
Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung
wird genauer unter Bezugnahme auf Fig. 1 beschrieben. Das
bevorzugte Ausführungsbeispiel verwendet vier Speicherbanken,
101, 102, 103 und 104 für seinen Vektorregisterblock. Jede
Bank 101, 102, 103 und 104 umfaßt acht 2048 × 8 statische
Direktzugriffsspeicher (SRAMs), die so angeordnet sind, daß
eine Bank sich aus 2048 64-Bit-Elementen zusammensetzt.
Die vorliegende Erfindung erzielt das logische Äquivalent
eines 8-Port-Speichers durch Kombination zweier Techniken.
Zunächst bewirkt die Anordnung der Speicher in vier Banken,
oder die Zusammenfassung von unabhängig zykelbaren Speichern,
das Äquivalent eines 4-Port-Speichers (d. h. ein Schreibbefehl
an Banken 0 und 1 kann im gleichen Taktzyklus wie ein Lesebefehl
von Banken 2 und 3 durchgeführt werden). Zweitens verwendet
die vorliegende Erfindung SRAMs mit wenigstens doppelt so
schnellen Zugriffszeiten wie die Systemtaktgeschwindigkeit,
was tatsächlich zwei Zugriffe auf jede Bank während eines
gegebenen Systemtaktzyklus' erlaubt. Im bevorzugten Ausführungsbeispiel
läuft der Systemtakt mit 120 Nanosekunden (ns),
was die Verwendung von SRAMs mit Zugriffszeiten von höchstens
60 ns erforderlich macht. Bevorzugt werden SRAMs mit Zugriffszeiten
von 35 ns oder schneller verwendet. Daher kann jede der
vier Banken während eines gegebenen Taktzyklus' zweimal zugegriffen
werden, was logisch einen 8-Port-Speicher ergibt.
Es sei darauf hingewiesen, daß diese Verfahren einzeln oder in
Kombination verwendet werden können, um die Aufgabe eines
Multiport-Speichers zu lösen. Es sei ferner darauf hingewiesen,
daß andere Anzahlen von Banken, andere Speichergrößen
oder andere Speichergeschwindigkeiten verwendet werden können,
die mehr als zwei Zugriffe pro Systemtakt gestatten, ohne daß
der Rahmen der vorliegenden Erfindung verlassen würde.
Die erfindungsgemäße Verwendung von Vektorregisterblocks aus
SRAMs bietet unter anderem die Vorteile, daß SRAMs relativ
preisgünstig sind, von verschiedenen Händlern erhältlich sind
und daß die gegenwärtige SRAM-Technologie relativ hohe Geschwindigkeiten
erlaubt. Diese Vorteile und andere Faktoren
ermöglichen es, einen größeren Vektorregisterblock als in
anderen bekannten Vektorrechnersystemen zu verwenden.
Die vorliegende Erfindung offenbart mehrere erfinderische
Techniken und Merkmale zur Verwaltung und Verwendung des Vektorregisterblocks.
Ein Merkmal der vorliegenden Erfindung ist es, daß jede aus
der Vielzahl von Banken in eine Vielzahl von Vektorregistern
aufgeteilt werden kann. Bezugnehmend auf Fig. 2 kann z. B.
jede der Banken 201, 202, 203 und 204 in eine Vielzahl von
Vektorregistern wie Vektorregistern 210, 211, 212 und 213 aufgeteilt
werden. In dem speziellen in Fig. 2 dargestellten
Beispiel ist jede Bank mit 2048 Elementen in 64 Vektorregister
mit je 32 Elementen aufgeteilt.
Die Banken 301, 302, 303 und 304 können de fakto in jede Zahl
n von Vektorregistern bis zu einer maximalen Zahl p, wobei p
die Zahl der Elemente in einer Bank ist, aufgeteilt werden.
Jedes Vektorregister hat p/n Elemente. Die konkreten Werte für
p und n können von Fall zu Fall vereinbart werden, abhängig
von den Vorteilen bzw. Nachteilen einer großen Zahl von Vektorregistern
einerseits und demgegenüber Vektorregistern mit
einer großen Zahl von Elementen (d. h. großer Tiefe) andererseits.
Die jeweilige Vereinbarung kann durch apparative Gegebenheiten
(hardware) oder software-Verfahren getroffen werden.
Nach der vorliegenden Erfindung kann ein Vektorregister bei
jedem beliebigen Element in einer Bank beginnen. Das konkrete
Verfahren zur Adressierung von Elementen wird detaillierter
mit Referenz auf Fig. 6 beschrieben.
Im bevorzugten Ausführungsbeispiel wird auf ein konkretes
Vektorregister unter Zuhilfenahme einer Banknummer und eines
Offsets Bezug genommen. VR0(0) kann sich z. B. auf das erste
Vektorregister in Bank 0, VR0(32) auf das zweite Vektorregister
in Bank 0, wo die Vektorregister 32 Elemente lang sind,
VR0(64) auf das dritte Vektorregister in Bank 0 beziehen,
etc.
Als eine Alternative kann auf ein Vektorregister unter Zuhilfenahme
einer Banknummer und einer Vektornummer Bezug genommen
werden. VR0,0 könnte sich z. B. auf ein Vektorregister in Bank 0,
Nr. 0 beziehen. Das System wäre dann für die Übersetzung
der Vektornummer (d. h. 0) in einen Offset zuständig. VR0,1
könnte sich auf das zweite Vektorregister in Bank 0 beziehen.
Sodann wäre das System für die Übersetzung der Vektornummer
(d. h. 1) in einen Offset zuständig. Wenn beispielsweise jedes
Vektorregister 32 Elemente breit sein soll, würde das System
die Vektornummer 1 in Offset 32 übersetzen.
Als eine dritte Alternative könnte auf die Vektorregister
allein mit einer Vektorregisternummer Bezug genommen werden.
In dem Fall könnte das System für die Übersetzung der Vektornummer
in Bank und Offset zuständig sein. VR0 würde z. B. übersetzt
in Bank 0, Offset 0, VR1 in Bank 1, Offset 0, VR2 in
Bank 2, Offset 0, VR3 in Bank 3, Offset0, VR4 in Bank 0,
Offset 32, usw..
Jede dieser Alternativen bietet Vorteile bzw. Nachteile bezüglich
der Portabilität von Programmcodes gegenüber der Geschwindigkeit,
mit der die Vektornummern übertragen werden.
Wie bereits erörtert, ist bei der Erfindung ein vergleichbar
großer Anteil an Vektorregisterraum verfügbar. Es ist grundsätzlich
nicht notwendig, für einen einzelnen Prozeß den gesamten
Vektorregisterraum verfügbar zu haben. Unter einem
weiteren erfinderischen Gesichtspunkt der vorliegenden Erfindung
kann daher der Vektorregisterraum in eine Vielzahl von
Verarbeitungs-Kontextbereiche aufgeteilt werden. Das System
kann dann eine Vielzahl von Verarbeitungsvorgängen durchführen,
ohne daß Daten, die für die Verarbeitung zusammenhängen,
von dem Vektorregisterblock auf ein anderes Speichermedium,
wie z. B. eine Platte, ausgelagert werden müßten, wenn zwischen
den Prozessen gewechselt wird.
Es wird Bezug genommen auf Fig. 3. Dort ist ein Ausführungsbeispiel
beschrieben, bei dem die Banken 301, 302, 303 und 304
mit je 2048 Elementen in acht Kontextbereiche 310 bis 317 mit
einer Länge von 256 Elementen in jeder Bank aufgeteilt werden.
Im weiteren wird Bezug genommen auf Fig. 4. Während des Ablaufs
eines Verarbeitungsvorgangs unterhält das System ein
Basisregister, genannt SBASE 410. SBASE 410 enthält den Offset
des laufenden Kontextbereiches ab dem Bankanfang (d. h. von
Element 0 an). Wenn z. B. der laufende Kontext Kontextbereich
312 in Fig. 3 ist, enthält SBASE 410 den Wert 512. Durch
Benutzung von SBASE 410 kann das System zwischen dem laufenden
Verarbeitungsvorgang und einem Verarbeitungsvorgang mit zusammenhängenden
Daten in einem anderen Kontextbereich durch Änderung
des Werts von SBASE hin- und herschalten. Wenn ein Verarbeitungsvorgang
abläuft, wird der Wert von SBASE 410 zum Offset-
Wert einer Vektorspeicherfrequenz zugezählt.
Das SBASE-Register wird ferner dazu verwendet sicherzustellen,
daß Benutzerprozesse sich nicht auf Offsets unter dem zugewiesen
Kontextbereich beziehen. Außerdem erlaubt die Verwendung
des SBASE-Registers, daß ein Vorgang unabhängig von dem konkreten
Kontextbereich, dem er zugewiesen ist, geschrieben
wird. Ein Vorgang kann so geschrieben werden, daß er abläuft,
als würde er immer im ersten Kontext 310 laufen.
Es sei darauf hingewiesen, daß der Vektorregisterblock in jede
beliebige Zahl von Kontextbereichen n zwischen 1 und p aufgeteilt
werden kann, wobei p die Anzahl von Elementen in einer
Bank bedeutet. Die Anzahl von Elementen pro Kontextbereich ist
gleich p/n. Die konkrete Zahl n kann durch eine Anzahl von
Faktoren bestimmt werden. Es sei weiterhin darauf hingewiesen,
daß es möglich ist, die Größe der Kontextbereiche so zu variieren,
daß sie nicht gleich groß sind. Dadurch ist es möglich,
einen kleineren Kontextbereich für einen relativ kleinen Verarbeitungsvorgang
und einen größeren Kontextbereich für einen
relativ großen Verarbeitungsvorgang zu verwenden.
Die vorliegende Erfindung verwendet weiterhin ein zweites
Register, SLIMIT 411, um das letzte beziehbare Element des
laufenden Kontextbereiches anzuzeigen. SLIMIT 411 wird verwendet
um sicherzustellen, daß ein Vorgang nicht versucht, ein
Element an einem höheren Offset als einem Offset in seinem
Kontextbereich anzusprechen. Jede Bezugnahme auf ein Element
im Vektorregisterblock wird mit SLIMIT 411 verglichen. Wenn
die Referenz für ein Element mit einem Offset größer SLIMIT 411
angegeben ist, wird sie unterbunden, und es wird eine
Fehlerbedingung angezeigt.
Die vorliegende Erfindung verwendet weiterhin ein drittes
Register, UBASE 412, welches einem konkreten Prozeß erlaubt,
seinen eigenen Kontextraum weiter aufzuteilen. Typischerweise
kann das Betriebssystem für die Handhabung der SBASE- und
SLIMIT-Register verantwortlich sein, während ein Benutzervorgang
Einfluß auf das UBASE-Register nehmen kann. Bei einem
Verarbeitungsvorgang können z. B. zusammenhängende Daten für
einzelne Unterprogramme an festen Offsets von einem gegebenen
Wert für UBASE 412 lokalisiert sein. Der Benutzer setzt UBASE 412,
wenn er das Unterprogramm zum vorgegebenen Wert für UBASE 412
ausführt. Das Unterprogramm kann dann auf Elemente im
Vektorregisterblock Bezug nehmen, indem es den Offsetwert von
UBASE 412 ausgibt. Das System berechnet den aktuellen Offset
im Vektorregisterblock, indem es rechnet: (SBASE 410) + (UBASE 412) +
(gegebener Offset).
Mit Referenz auf Fig. 5 wird ein Verfahren zur gemeinsamen
Teilung oder Verwendung (sharing) von Kontextdaten und Unterprogrammen
dargelegt. Ein Verarbeitungsvorgang kann seine
Kontextdaten irgendwo innerhalb der Grenzen von SBASE 510 und
SLIMIT 511 lokalisieren. Der Prozeß kann sein UBASE-Register
anfangs auf Stelle 520 setzen, um sich beim Lauf eines ersten
Unterprogramms auf Bereich 530 zu beziehen. Um Bezug zu nehmen
auf Bereich 531, kann der Prozeß das UBASE-Register an die
Stelle 521 versetzten. Der Bereich 540 enthält gemeinsam verwendete
Variablen oder andere gemeinsam geteilte Kontextinformationen,
auf die von beiden Unterprogrammen Bezug genommen
werden kann.
Eine zweite Verwendung des UBASE-Registers ist es, mit Hilfe
eines Adreßfeldes von begrenzter Länge die Adressierung des
ganzen Systembasisbereichs (durch SBASE und SLIMIT begrenzter
Bereich) zu ermöglichen. Es sei beispielsweise angenommen, daß
der Systembasisbereich 512 Elemente lang ist und daß eine
Achtbitadresse für die Adressierung innerhalb dieses Bereichs
verwendet wird. Um Elemente mit relativen Offsets zwischen 0
und 255 von SBASE aus zu adressieren, wird UBASE auf 0 gesetzt.
Für die Adressierung von Elementen mit relativem Offset
von SBASE zwischen 256 und 511, wird UBASE auf 256 gesetzt,
und die Elemente werden als (0 bis 255) + UBASE (d. h. 256 bis
511) adressiert.
Unter Referenz auf Fig. 6 wird nun ein Operandendeskriptor 600
für Anweisungen beim bevorzugten Ausführungsbeispiel beschrieben.
Bei dem bevorzugten Ausführungsbeispiel können Anweisungen
drei Operanden enthalten; Vektorregister x (VR x ), 601 (a)
und 601 (b), Vektorregister y (VR y ), 602 (a) und 602 (b) und
Vektorregister z (VR z ), 603 (a) und 603 (b). Ein Vektorregister
kann adressiert werden durch Ausgabe einer Banknummer in
Bits 9 und 8 des Vektorregister-Operanden und eines Offsetwerts
in Bits 7 bis 0.
Bei dem bevorzugten Ausführungsbeispiel werden Bits 9 bis 5
jedes Vektorregister-Operanden in der Hälfte höherer Ordnung
des Wortes 610 plaziert. Indem Bits 9 bis 5 der Adresse verwendet
werden, kann jede der vier Banken des bevorzugten Ausführungsbeispiels
mit Bits 9 und 8 adressiert werden, und es
können Offsets innerhalb der Banken in Vielfachen von 32
adressiert werden. Ein Wert von 00001₂, z. B., in Bits 9 bis
5 eines Vektorregister-Operanden nähme Referenz auf Bank 0,
Offset 32. Ein Wert 11010₂ nähme Referenz auf Bank 3, Offset 64.
Die Werte von SBASE und UBASE werden, wie vorher erörtert,
zu den Offsets addiert.
Das Splitten der Vektorregisteradresse erlaubt, daß statt
einer 32-Bitkonstanten eine 16-Bitkonstante Referenz auf ein
Vektorregister nehmen kann. Es sei darauf hingewiesen, daß die
speziell verwirklichten Adreßbitorganisation modifiziert werden
kann, ohne daß vom Rahmen der vorliegenden Erfindung abgewichen
werden müßte.
Beim bevorzugten Ausführungsbeispiel kann eine unmittelbare
Konstante von 16 Bits oder weniger als Teil einer Anweisung
gespeichert werden. Indem nur die höhere Hälfte eines Wortes
verwendet wird, um Operandeninformation zu speichern, ist die
Erfindung in der Lage, die Operandeninformation in der Anweisung
zu speichern. Dieses Verfahren spart Verarbeitungszeit,
da keine von der Anweisung getrennte Operandeninformation
zurückgebracht werden muß.
Wenn eine Zelle eines Vektorregisters direkt adressiert werden
soll oder wenn ein Vektorregister zur Speicherung von Skalarvariablen
verwendet werden soll, liefert die untere Hälfte des
Operandenwortes 611 den Rest der Offsetadresseninformation in
Bits 4 bis 0 des Offsets. Ebenfalls ist es erforderlich, Bits
4 bis 0 des Offsets zu verwenden, um das Überlappen von Daten
für Unterprogramme zu gestatten, wie vorher im Zusammenhang
mit Fig. 5 beschrieben.
Die Adressierbarkeit auf Zellenniveau gestattet, Konvolutions-
und Rekursionsrechnungen durchzuführen. Unter Ausnutzung der
Adressierbarkeit auf Zellenniveau kann z. B. eine Konvolutionsrechnung
wie:
DO I | |||
= 1,32 | |||
Y(I) | = W | + W (2) * X[I +2] | |
+ W (3) * X[I +3] | |||
END |
berechnet werden. Ferner werden bei dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung alle Operationen,
einschließlich Operationen an einzelnen Elementen eines Vektors,
in einer mit sequentieller Bearbeitung konsistenten
Weise durchgeführt. Dies erlaubt in Kombination mit der Adressierbarkeit
auf Zellniveau, daß Rekursionen wie die Fibonacci-Reihe
direkt berechnet werden können.
Claims (22)
1. Vektorregisterblock für ein Vektorrechner-Computersystem,
dadurch gekennzeichnet,
daß eine erste (101, 201, 301) und eine zweite (102, 202, 302)
Bank von Speicherschaltungen vorgesehen sind, wobei die zweite
Bank von Speicherschaltungen unabhängig von der ersten zykelbar
ist.
2. Vektorregisterblock nach Anspruch 1, dadurch gekennzeichnet,
daß die erste Bank (101, 102) von Speicherschaltungen
statische Direktzugriffsspeicher (RAMs) umfaßt.
3. Vektorregisterblock nach Anspruch 2, dadurch gekennzeichnet,
daß die erste Bank von Speicherschaltungen acht 2048mal
8 statische Direktzugriffsspeicher umfaßt.
4. Vektorregisterblock nach einem der Ansprüche 1 bis 3,
dadurch gekennzeichnet, daß ferner eine dritte Bank (103, 203,
303) von Speichern vorgesehen ist, die unbabhängig von der
ersten (101, 201, 301) und der zweiten (102, 202, 302) Bank
von Speichern zykelbar ist, und daß eine vierte Bank (104,
204, 304) von Speicherschaltungen vorgesehen ist, die unabhängig
von der ersten, der zweiten und der dritten Bank von Speicherschaltungen
zykelbar ist.
5. Vektorregisterblock nach einem der Ansprüche 1 bis 4,
dadurch gekennzeichnet, daß jede der Speicherschaltungen 2mal
pro Systemtaktzyklus zugreifbar ist.
6. Vektorregisterblock nach Anspruch 5, dadurch gekennzeichnet,
daß die Systemtaktzykluszeit annähernd 120 ns beträgt und
auf die Speicherschaltung in höchstens annähernd 60 ns zugegriffen
werden kann.
7. Vektorregisterblock nach Anspruch 5, dadurch gekennzeichnet,
daß die Systemtaktzykluszeit annähernd 120 ns beträgt und
auf die Speicherschaltungen in wenigstens annähernd 35 ns
zugegriffen werden kann.
8. Vektorrechner-Computersystem mit einem Vektorregisterblock,
insbesondere nach einem der Ansprüche 1 bis 7, gekennzeichnet
durch einen Systemtakt mit einer Zykluszeit n und
eine Vielzahl von Speicherschaltungen, die eine Zugriffszeit
von wenigstens annähernd n/p haben, wobei p wenigstens 2 beträgt.
9. Vektorrechner-Computersystem nach Anspruch 8, dadurch
gekennzeichnet, daß n annähernd 120 ns und p höchstens annähernd
60 ns beträgt.
10. Vektorrechner-Computersystem, insbesondere nach einem der
Ansprüche 8 oder 9, dadurch gekennzeichnet, daß ein Vektorregisterblock
und ferner ein Systembasisregister (SBASE 410) zur
Speicherung eines Systembasiswerts vorgesehen sind, wobei für
die Adressierung des Vektorregisterblocks der Systembasiswert
zu einem Offsetwert addiert wird.
11. Vektorrechner-Computersystem nach einem der Ansprüche 8
bis 10, dadurch gekennzeichnet, daß ferner ein Begrenzungsregister
(SLIMIT 411) zur Speicherung eines Begrenzungswerts
vorgesehen ist, wobei der Begrenzungswert mit der Summe aus
Systembasiswert und Offset verglichen wird und eine Fehlerbedingung
angezeigt wird, wenn diese Summe größer als der Begrenzungswert
ist.
12. Vektorrechner-Computersystem nach einem der Ansprüche 8
bis 11, dadurch gekennzeichnet, daß ferner ein Benutzerbasisregister
(UBASE 412) zur Speicherung eines Benutzerbasiswerts
vorgesehen ist, wobei der Benutzerbasiswert bei der Adressierung
des Vektorregisterblocks zu dem Offsetwert und dem Systembasiswert
addiert wird.
13. Vektorrechner-Computersystem nach einem der Ansprüche 8
bis 12, dadurch gekennzeichnet, daß der Systembasiswert geändert
wird, wenn das Vektorrechner-Computersystem die aktiven
Prozesse wechselt.
14. Verfahren zur Adressierung eines Vektorregisterblocks in
einem Vektorrechner-Computersystem, insbesondere nach einem
der Ansprüche 1 bis 13, mit einem Vektorregisterblock und
einem Systembasisregler (SBASE 410) zur Speicherung eines
Systembasiswertes, dadurch gekennzeichnet, daß aus einem Offsetwert
und dem Systembasiswert eine Summe gebildet wird; der
Vektorregisterblock bei dieser Summe adressiert wird; das
Vektorrechner-Computersystem den aktiven Prozeß wechselt; und
infolge des Prozeßwechsels der Wert des Systembasisregisters
geändert wird.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß
ein in einem Benutzerbasisregister (UBASE 412) gespeicherter
Benutzerbasiswert vor Adressierung des Vektorregisterblocks zu
der Summe addiert wird.
16. Verfahren nach Anspruch 14 oder 15, dadurch gekennzeichnet,
daß ferner die Summe mit einem Begrenzungswert, der in
einem Begrenzungsregister (SLIMIT 411) gespeichert ist, verglichen
wird und vor der Adressierung des Vektorregisterblocks
eine Fehlerbedingung erzeugt wird, wenn die Summe größer als
der Grenzwert ist.
17. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß
in Antwort auf die Änderung des Prozesses der Begrenzungswert
geändert wird.
18. Verfahren zur Aufteilung eines Vektorregisterblocks,
insbesondere nach einem der Ansprüche 1 bis 13, in einem Vektorrechner-
Computersystem mit einem Vektorregisterblock, der
adressierbare Elemente enthält, dadurch gekennzeichnet, daß
- a) ein Wert n bestimmt wird, der die gewünschte Anzahl von Vektorregistern angibt; und
- b) der Vektorregisterblock logisch in eine Vielzahl von Vektorregistern aufgeteilt wird, wobei jedes der Vektorregister eine Tiefe von p/n-Elementen hat.
19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß p
2048 ist.
20. Verfahren zur Speicherung von Operanden in einem Vektorrechner-
Computersystem mit einem Vektorregisterblock, insbesondere
nach einem der Ansprüche 1 bis 19, wobei das Vektorrechner-
Computersystem über Anweisungen verfügt, die eine
Vielzahl von Operanden erfordern und wobei die Operanden
Adressen innerhalb des Vektorregisterblocks umfassen, dadurch
gekennzeichnet, daß in der ersten Hälfte eines Wortes eine
erste Vielzahl von Bits der Adresse für jeden der Operanden
gespeichert wird und daß in der zweiten Hälfte des Wortes eine
zweite Vielzahl von Bits der Adresse jedes Operanden gespeichert
wird.
21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß
die erste Vielzahl von Bits die Bits 9 bis 5 der Adresse jedes
Operanden umfaßt.
22. Verfahren nach Anspruch 20 oder 21, dadurch gekennzeichnet,
daß die zweite Vielzahl von Bits die Bits 4 bis 0 der
Adresse jedes der Operanden umfaßt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16273888A | 1988-03-01 | 1988-03-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3906327A1 true DE3906327A1 (de) | 1989-09-14 |
Family
ID=22586943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3906327A Withdrawn DE3906327A1 (de) | 1988-03-01 | 1989-02-28 | Vektorregisterblock und verfahren zur zugriffsverwaltung |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPH0210467A (de) |
KR (1) | KR890015129A (de) |
DE (1) | DE3906327A1 (de) |
FR (1) | FR2628237A1 (de) |
GB (1) | GB2216307B (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2883784B2 (ja) * | 1993-04-27 | 1999-04-19 | 株式会社東芝 | マイクロコンピュータ |
US6128641A (en) * | 1997-09-12 | 2000-10-03 | Siemens Aktiengesellschaft | Data processing unit with hardware assisted context switching capability |
US6378065B1 (en) * | 1998-04-27 | 2002-04-23 | Infineon Technologies North America Corp. | Apparatus with context switching capability |
US6189094B1 (en) | 1998-05-27 | 2001-02-13 | Arm Limited | Recirculating register file |
WO1999061997A1 (en) * | 1998-05-27 | 1999-12-02 | Arm Limited | Recirculating register file |
US6577316B2 (en) * | 1998-07-17 | 2003-06-10 | 3Dlabs, Inc., Ltd | Wide instruction word graphics processor |
US7318090B1 (en) * | 1999-10-20 | 2008-01-08 | Sony Corporation | Method for utilizing concurrent context switching to support isochronous processes |
US6446181B1 (en) * | 2000-03-31 | 2002-09-03 | Intel Corporation | System having a configurable cache/SRAM memory |
JP2004302647A (ja) * | 2003-03-28 | 2004-10-28 | Seiko Epson Corp | ベクトルプロセッサおよびレジスタのアドレス指定方法 |
JP5491113B2 (ja) * | 2009-09-18 | 2014-05-14 | エヌイーシーコンピュータテクノ株式会社 | ベクトル処理装置、ベクトル処理方法、およびプログラム |
US20160026607A1 (en) * | 2014-07-25 | 2016-01-28 | Qualcomm Incorporated | Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media |
US10360034B2 (en) | 2017-04-18 | 2019-07-23 | Samsung Electronics Co., Ltd. | System and method for maintaining data in a low-power structure |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4325116A (en) * | 1979-08-21 | 1982-04-13 | International Business Machines Corporation | Parallel storage access by multiprocessors |
JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS618785A (ja) * | 1984-06-21 | 1986-01-16 | Fujitsu Ltd | 記憶装置アクセス制御方式 |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
DE3687739T2 (de) * | 1985-12-02 | 1993-08-19 | Ibm | Speicheranordnung mit mehrfachem lese-schreibzugriff. |
JPS63898A (ja) * | 1986-06-19 | 1988-01-05 | Fujitsu Ltd | 半導体記憶装置 |
EP0261751A3 (de) * | 1986-09-25 | 1990-07-18 | Tektronix, Inc. | Simultanes Speicherzugriffssystem |
-
1989
- 1989-02-22 GB GB8903962A patent/GB2216307B/en not_active Expired - Fee Related
- 1989-02-28 FR FR8902569A patent/FR2628237A1/fr not_active Withdrawn
- 1989-02-28 DE DE3906327A patent/DE3906327A1/de not_active Withdrawn
- 1989-03-01 JP JP1049762A patent/JPH0210467A/ja active Pending
- 1989-03-02 KR KR1019890002567A patent/KR890015129A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
FR2628237A1 (fr) | 1989-09-08 |
JPH0210467A (ja) | 1990-01-16 |
GB2216307B (en) | 1992-08-26 |
KR890015129A (ko) | 1989-10-28 |
GB2216307A (en) | 1989-10-04 |
GB8903962D0 (en) | 1989-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3438869C2 (de) | ||
DE2410491C2 (de) | ||
DE1146290B (de) | Elektronisches Datenverarbeitungssystem | |
DE2302074A1 (de) | Speicherschutzanordnung in einem multiprozessorsystem | |
DE3932675A1 (de) | Virtuelles maschinensystem | |
DE1901343A1 (de) | Datenverarbeitungsanlage mit mehreren Verarbeitungseinheiten und an diese angeschlossenen Speichereinheiten | |
DE3906327A1 (de) | Vektorregisterblock und verfahren zur zugriffsverwaltung | |
DE69732793T2 (de) | Acht-bit-mikrokontroller mit risc-architektur | |
DE2062228A1 (de) | Datenverarbeitungssystem mit gleich zeitigem Zugriff auf mehrere Speicher stellen | |
DE1499739C3 (de) | Datenspeicher zur gleichzeitigen Entnahme mehrerer Wörter | |
DE1774870A1 (de) | Verfahren und Anordnung zur Adressierung von Informationen in einer Datenverarbeitungsanlage | |
DE1524898C3 (de) | Datenspeicher mit direktem mehrdimensionalen Zugriff zur gleichzeitigen Entnahme mehrerer Wörter | |
DE2117581B2 (de) | Einrichtung zur Adressenprüfung | |
EP0052669B1 (de) | Mehrfach adressierbarer hochintegrierter Halbleiterspeicher | |
EP0009625B1 (de) | Datentransferschalter mit assoziativer Adressauswahl in einem virtuellen Speicher | |
DE1574502B2 (de) | Assoziativspeicher | |
DE2403039A1 (de) | Verfahren zur adressenerweiterung einer elektronischen digitalrechenanlage | |
DE19924288A1 (de) | Integrierter Speicher | |
DE3333862C2 (de) | ||
DE3341339C2 (de) | Befehlsfolgegenerator | |
DE3236524A1 (de) | Byteweise adressierbare speicheranordnung fuer befehle und daten mit variabler laenge | |
DE2342101C2 (de) | Schaltung zum bereichsweisen Adressieren der Register in der Befehlsbank und Datenbank des Hauptspeichers einer Rechenanlage | |
EP0314079B1 (de) | Schaltungsanordnung für Verarbeitungseinheiten einer Zentraleinheit mit einer Reihe von Mehrzweckregistern | |
DE3007381A1 (de) | Verfahren und system zum verarbeiten von videodaten | |
DE2406830C3 (de) | Einrichtung zur Programmvorgabe für die numerische Steuerung einer Werkzeugmaschine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee | ||
8127 | New person/name/address of the applicant |
Owner name: KUBOTA PACIFIC COMPUTER INC., SANTA CLARA, CALIF., |
|
8128 | New person/name/address of the agent |
Representative=s name: SOLF, A., DR.-ING., 8000 MUENCHEN ZAPF, C., DIPL.- |