DE3906327A1 - Vektorregisterblock und verfahren zur zugriffsverwaltung - Google Patents

Vektorregisterblock und verfahren zur zugriffsverwaltung

Info

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
Application number
DE3906327A
Other languages
English (en)
Inventor
Glen S Miranker
Steve Johnson
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.)
KUBOTA PACIFIC COMPUTER INC., SANTA CLARA, CALIF.,
Original Assignee
Ardent Computer Corp
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 Ardent Computer Corp filed Critical Ardent Computer Corp
Publication of DE3906327A1 publication Critical patent/DE3906327A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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
    • 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/30101Special purpose 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving 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:
(1) * X[I +1] @
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.
DE3906327A 1988-03-01 1989-02-28 Vektorregisterblock und verfahren zur zugriffsverwaltung Withdrawn DE3906327A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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.-