DE69906348T2 - Speicher mit vektorzugriff - Google Patents

Speicher mit vektorzugriff

Info

Publication number
DE69906348T2
DE69906348T2 DE69906348T DE69906348T DE69906348T2 DE 69906348 T2 DE69906348 T2 DE 69906348T2 DE 69906348 T DE69906348 T DE 69906348T DE 69906348 T DE69906348 T DE 69906348T DE 69906348 T2 DE69906348 T2 DE 69906348T2
Authority
DE
Germany
Prior art keywords
vector
memory
components
layers
modm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69906348T
Other languages
English (en)
Other versions
DE69906348D1 (de
Inventor
Alain Demeure
Didier Tomasini
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.)
Thales Underwater Systems SAS
Original Assignee
Thales Underwater Systems SAS
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 Thales Underwater Systems SAS filed Critical Thales Underwater Systems SAS
Publication of DE69906348D1 publication Critical patent/DE69906348D1/de
Application granted granted Critical
Publication of DE69906348T2 publication Critical patent/DE69906348T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Description

  • Die Erfindung betrifft das Gebiet der Parallelspeicher, die eine interessante Lösung darstellen, um die Speicherübertragungsgeschwindigkeit an die Verarbeitungsleistung anzupassen, die heutzutage in einer integrierten Schaltung verwirklicht werden kann. Ein Parallelspeicher ist ein Speicher, der in der Lage ist, in einem einzigen Zugriffszyklus mehrere Speicherfächer auszulesen oder zu beschreiben. Eine Maschine des SIMD-Typs gemäß der angelsächsischen Abkürzung für Single Instruction Multiple Data, die dem Fachmann bekannt ist, rechtfertigt auf natürliche Weise die Verwendung eines Parallelspeichers, auf den alle Elementarprozessoren zugreifen können, die am Aufbau dieser Maschine beteiligt sind. Ein solcher Speicher macht nämlich eine Funktion, die der Kommunikation zwischen den Elementarprozessoren dient, überflüssig, was die Funktionsweise stark vereinfacht und die Leistungsfähigkeit beträchtlich erhöht. Die SIMD-Maschinen werden hauptsächlich verwendet, um Verarbeitungen von Daten vorzunehmen, die in Tabellen organisiert sind, und insbesondere, um eine Signalverarbeitung auszuführen. Indem sie im selben Zyklus den gleichen Befehl ausführen, bewirken die Elementarprozessoren einer SIMD-Maschine einen Zugriff auf in einer Reihe aufgestellte und gleichmäßig beabstandete Komponenten innerhalb ein- und derselben Tabelle. Diese Komponenten können als einen Vektor bildend angesehen werden, was dazu führt, daß ein Speicher, der ermöglicht, auf eine Tabelle mit in einer Reihe aufgestellten und gleichmäßig beabstandeten Komponenten zuzugreifen, als "Vektorzugriffspeicher" bezeichnet wird. Es kann sich als notwendig erweisen, daß während der Verarbeitungen auf Vektoren zugegriffen werden muß, die eine beliebige Orientierung in bezug auf die Achsen ein- und derselben Tabelle besitzen oder die zumindest parallel zu irgendeiner Achse dieser Tabelle sind. Die Anzahl der Komponenten der Tabelle, die zwei aufeinanderfolgend betrachtete Komponenten in dem Vektor voneinander trennen, kann ebenfalls beliebig sein. Diese Bedingungen bewirken, daß ein Vektorzugriffspeicher nicht durch ein einfaches Nebeneinanderstellen von RAM-Speicherblöcken gebildet werden kann, wobei RAM die angelsächsische Abkürzung für Random Access Memory ist. Diese Bedingungen erfordern eine sorgfältige Wahl der Anzahl von Bänken sowie das Vorhandensein von Adressenrechnern, die den besonderen Regeln der Anordnung von Tabellen im Speicher folgen. Schließlich erfordern diese Bedingungen Funktionen zur Reorganisation der Komponenten des Vektors, die vor dem Schreiben oder nach dem Lesen in den Bänken wirksam werden.
  • In seinem Artikel "Interconnections for parallel memories to unscramble p- ordered vectors", veröffentlicht in den IEEE Transactions on Computers, Bd. C-23, Nr. 11, November 1974, stellt R. C. Swanson im Abschnitt II ein Modell eines SIMD-Rechners vor, der einen Parallelspeicher gebraucht. Er zeigt Beispiele für die Anordnung zweidimensionaler Tabellen in diesem Speicher, gibt die Definition p-geordneter Vektoren und weist auf den Flexibilitätsvorteil hin, der durch eine Anzahl von Speicherbänken, die gleich einer Primzahl ist, erbracht wird. In den folgenden Abschnitten des Artikels wird nur das Problem der Folgeverarbeitung eines Vektors zur Sprache gebracht: Sie schlagen nämlich Gitter vor, die ermöglichen, einen Vektor umzuordnen. Der Artikel von R. C. Swanson gibt keinen Hinweis darauf, wie ein Paralleispeicher zu verwirklichen ist: Die Berechnung der Adressen, die für die Bänke verwendet werden, wird nicht angesprochen, es ist lediglich eine Anordnung von Tabellen erwähnt, die auf zwei Dimensionen beschränkt sind; das vorgeschlagene Gitter erfordert, daß die Elemente des umgeordneten Vektors in Abhängigkeit von seiner anfänglichen p-Anordnung mehrere Leitweglenkungen erfahren.
  • Das Dokument DE-LEI LEE mit dem Titel "architecture of an array processor using a nonliriear skewing scheme", veröffentlicht in den IEEE transactions on computers, Bd. 41, Nr. 4,1, 1. April 1992 (1992-04-01); S. 499-505, XP000266864, beschreibt eine Maschinenarchitektur des Typs "non linear skewing", bei der die Zugriffe mit Hilfe von Zeilen, Spalten und Diagonalen verwirklicht werden.
  • SEZNEC u. a. offenbaren in dem Dokument mit dem Titel "Odd memory systems may be quite interesting", veröffentlicht in den Proceedings of the architecture, San Diego, 16.-19. Mai 1993, NR.SYMP.20, S. 341-350, Institute of electrical and electronics engineers, XP000399012, die Verwendung des chinesischen Theorems, um eine Anzahl von Speicherbänken zu erzeugen, die gleich einer Primzahl ist, und eine sehr einfache Abbildung (mapping) der Daten auf die Bänke zu ermöglichen.
  • Das unter dem Titel "Residue generator for an address mapping system for a memory with a prime number stride capability" im IBM technical disclosure bulletin, Bd. 30, Nr. 9, 1. Februar 1998 (1998-02-01), S. 226-229; XP000021699, veröffentlichte Dokument beschreibt einen Residuengenerator in einem mehrfach verschachtelten Speichersystem.
  • Um das gestellte Problem zu lösen, schlägt die Erfindung eine Verwirklichung eines Vektorzugriffspeichers vor. Dazu hat die Erfindung einen Speicher für tabellenartig organisierte Daten zum Gegenstand, dessen Struktur Zugriffe durch Vektoren mit N Komponenten ermöglicht und der anhand einer bestimmten Basis eines Residuum-Zahlensystems adressiert wird, wobei der Speicher in M Speicherbänke mit K Fächern organisiert ist, die jeweils im Bereich von 0 bis M-1 numeriert sind, und ein unidirektionales Gitter aufweist, das beim Zugriff eine Permutation der Vektorkomponenten verwirklicht, die darin besteht, entweder von einem n-geordneten Vektor zu einem 1-geordneten Vektor überzugehen oder von einem 1-geordneten Vektor zu einem n-geordneten Vektor überzugehen, dadurch gekennzeichnet, daß:
  • - jede Bank einen Adressenrechner für die lokale Adresse (k(i)) in der betrachteten Bank (m(i)) einer Komponente (i) des Zugriffsvektors umfaßt und daß das unidirektionale Gitter eine Translation der Komponenten des Zugriffsvektors um einen bestimmten Wert t verwirklicht,
  • - für die Berechnung in einer bestimmten Speicherbank (m(i)) der lokalen Adresse (k(i)) der Komponente eines Vektors, dessen Ursprung in einer mit m(0) numerierten Speicherbank gespeichert ist, der Adressenrechner der bestimmten Speicherbank (m(i)) nacheinander ausführt:
  • - Bestimmen des Wertes i der Komponente des Vektors, die er enthält, mittels der folgenden Relation:
  • i = [[m(i) + -[m(0)](modM)](modM) · [(Δm)]&supmin;¹(modM)](modM)
  • mit -[m(0)](modM) als Gegenteil von m(0) modulo M, das die folgende Relation erfüllt:
  • m(0) + [-m(0)] = 0(modM) und mit [(Δm)]&supmin;¹(modM) Inverses von Δm modulo M, das die folgende Relation verifiziert: Δm · [(Δm)]&supmin;¹ = 1(modM) und mit Δm Inkrement des Index, mit dem die Komponenten des Vektors in den Speicherbänken gespeichert sind,
  • - Berechnen der lokalen Adresse (k(i)), wenn i bekannt ist:
  • k(i) = [k(0) + i · [Δk](modK)](modK)
  • mit Δk Inkrement des Index, mit dem die Komponenten des Vektors in den Speicherfächern gespeichert sind, und k(0) Nummer des Speicherfachs, in dem der Ursprung des Vektors angeordnet ist, und daß das unidirektionale Gitter eine erste Gesamtheit aus zwei Schichten und in Reihe damit eine zweite Gesamtheit aus zwei Schichten umfaßt, wobei die erste Gesamtheit von Schichten so organisiert ist, daß der Abstand zwischen den aufeinanderfolgenden Komponenten eines am Eingang des Gitters vorhandenen Vektors um einen Wert p modifiziert wird, entweder um für die 1-geordneten Komponenten des Vektors eine p-Ordnung zu schaffen, wenn in den Speicher geschrieben wird, oder um für die p-geordneten Komponenten des Vektors eine 1-Ordnung zu schaffen, wenn aus dem Speicher gelesen wird, wobei die zweite Gesamtheit der Schichten so organisiert ist, daß die Komponenten des Vektors, der von der ersten Gesamtheit von Schichten ausgegeben wird, um einen bestimmten Translationswert t translatorisch verschoben werden, um entweder den Ursprung des Vektors neu einzustellen, wenn aus dem Speicher gelesen wird, oder um den Ursprung des Vektors zu verschieben, wenn in den Speicher geschrieben wird.
  • Ein Speicher gemäß der Erfindung ist in mehrere Bänke strukturiert. Das Management der Speicherplätze, wie es der Adressenrechner jeder Bank ermöglicht, die dem Gitter für die Permutation der Komponenten des Vektors zugeordnet ist, ist derart verwirklicht, daß die Zugriffe auf den Speicher optimiert werden, um seine Übertragungsgeschwindigkeit zu erhöhen. Das Gitter umfaßt eine Anzahl von Schichten und eine Anzahl von Betriebsarten pro Schicht, die in Abhängigkeit von einem Kompromiß zwischen Schnelligkeit und Einfachheit festgelegt sind. Schnelligkeit ist mit einer hohen Anzahl von Schichten unverträglich. Einfachheit verlangt eine geringe Anzahl von Betriebsarten.
  • Weitere Merkmale und Vorteile der Erfindung werden anhand der nachfolgenden Beschreibung deutlich, die sich auf die beigefügte Zeichnung bezieht. Es zeigen.
  • - Figure 1 die allgemeine Organisation der Datenpfade eines Speichers gemäß der Erfindung;
  • - Figure 2
  • - Figure 3 eine Zuordnung einer physischen Struktur zu einer funktionellen Struktur eines Speichers;
  • - Figure 4 die Adressierung der Speicherbänke;
  • - Figure 5 einen Berechnungsblock eines Adressenrechners;
  • - Figure 6 eine erste Gesamtheit von Schichten eines Gitters eines Speichers gemäß der Erfindung;
  • - Figure 7 eine zweite Gesamtheit von Schichten des Gitters;
  • - Figure 8 eine Zuordnungstabelle zwischen dem Beabstandungsschritt p und Betriebsarten der Schichten der ersten Gesamtheit von Schichten; und
  • - Figure 9 eine Zuordnungstabelle zwischen dem Translationswert t und Betriebsarten der Schichten der zweiten Gesamtheit von Schichten.
  • Im gesamten Dokument sind die Begriffe "modulo" und "mod" vollkommen synonym.
  • Fig. 1 zeigt in schematischer Weise die allgemeine Organisation der Datenpfade eines Speichers 1 gemäß der Erfindung, der mittels eines Adreßbusses 2 adressiert wird und mit einem Rechner 3 verbunden ist. Der Speicher 1 umfaßt einen Speicherblock 4, eine erste Verzweigung 5, ein Gitter 6 und ein zweite Verzweigung 7. Der Speicherblock 4 umfaßt M Speicherbänke 8, die mit 0 bis M - 1 bezeichnet sind. Die erste Verzweigung 5 hat zwei Eingangsdatenbusse D1 und D2 und einen Ausgangsdatenbus S1. Die erste Verzweigung 5 verbindet einen der beiden Eingangsdatenbusse, E1 oder E2, mit dem. Ausgangsdatenbus S1. Das Gitter 6 ist unidirektional. Es ist aus Gesamtheiten von Schichten gebildet.
  • Jede. Schicht arbeitet nach einer Betriebsart, die unter verschiedenen Betriebsarten festgelegt ist. Die zweite Verzweigung 7 hat einen Eingangsdatenbus E3 und zwei Ausgangsdatenbusse S2 und S3. Die zweite Verzweigung 7 verbindet den Eingangsdatenbus E3 mit einem der beiden Ausgangsdatenbusse, S2 oder S3. Der Rechner 3 umfaßt Q Elementarprozessoren 9, die mit 0 bis Q - 1 bezeichnet sind, einen Eingangsdatenbus und einen Ausgangsdatenbus.
  • Der Ausgangsdatenbus des Speicherblocks 4 ist an den Eingangsdatenbus E1 der ersten Verzweigung 5 angeschlossen.
  • Der Ausgangsdatenbus S1 der ersten Verzweigung 5 ist an den Eingangsdatenbus des Gitters 6 angeschlossen.
  • Der Ausgangsdatenbus des Gitters 6 ist an den Eingangsdatenbus E3 der zweiten Verzweigung 7 angeschlossen.
  • Der Ausgangsdatenbus S2 der zweiten Verzweigung 7 ist an den Eingangsdatenbus des Rechners 3 angeschlossen.
  • Der Ausgangsdatenbus S3 der zweiten Verzweigung 7 ist an den Eingangsdatenbus des Speicherblocks 4 angeschlossen.
  • Der Ausgangsdatenbus des Rechners 3 ist an den Eingangsdatenbus E2 der ersten Verzweigung 5 angeschlossen.
  • Physisch ist der Speicher aus M Bänken gebildet, wovon jede durch einen Index m mit 0 d m < M bezeichnet ist. Jede Bank ist aus K Speicherfächern gebildet, wovon jedes in seiner Bank durch einen Index k mit 0 d k < K bezeichnet ist. Die physische Struktur des Speichers entspricht folglich einer 2D-Tabelle, wobei 2D eine Abkürzung für zwei Dimensionen ist, die nachstehend MP genannt wird, da sie eine Dimension "Bank" der Größe M und eine Dimension "Fach" der Größe K aufweist und M · K Elemente enthält, wobei M · K außerdem die Gesamtkapazität des Speichers angibt. Ein Element dieser 2D-Tabelle ist durch zwei Indizes m, k bezeichnet. MP(m, k) sei ein solches Element.
  • Funktionell wird der Speicher als ein linearer Raum angesehen, d. h. als eine 1D = Tabelle, wobei 1D eine Abkürzung für eine Dimension ist und die Tabelle weiter unten MF mit M · K Elementen genannt wird, wovon jedes durch einen Index @L mit 0 d @L < M · K bezeichnet ist. MF(@L) sei ein solches Element:
  • Fig. 2 veranschaulicht die Verteilung längs der Diagonalen der Elemente von MF auf die Elemente von MP: MF(0) &rarr; MP(0,0), MF(1) &rarr; MP(1, 1), ..., MF(54) &rarr; MP(5, 6), MF(55) &rarr; MIP(6, 7).
  • Eine Diagonale wird jedesmal, wenn sie nach rechts bzw. nach oben austritt, in der Spalte der Tabelle MP, die sich am weitesten links befindet, eine Zeile höher bzw. in der untersten Zeile jedoch in einer Spalte, die sich am weitesten rechts befindet, wieder aufgenommen. Wenn M und K jeweils Primzahlen sind, so ist dem Fachmann bekannt,
  • - daß MF(M · K - 1) &rarr; MP(M - 1, K - 1); in dem Fall des angenommenen und in Fig. 2 dargestellten Beispiels entspricht diese Zuordnung (7 · 8 - 1) = MF(55) &rarr; MP(7 - 1, 8 - 1) = MP(6, 7), was tatsächlich der Fall ist,
  • - daß jedes Element von MP(m, k) einem und nur einem Element von MF zugeordnet ist: MF(@L) mit m = (@L)(modM) und k = (@L)(modK).
  • Anders ausgedrückt: Die Indizes m und k des Elements von MP, dem das Element von MF mit dem Index @L zugeordnet wird, entsprechen dem Ausdruck @L in einem Residuum-Zahlensystem, welches in der Abkürzung RNS für die entsprechende angelsächsische Bezeichnung "Residu Number System" notiert ist, dessen Basis (M, K) ist. Das Residuum-Zahlensystem RNS ist ein System, das dem Fachmann insbesondere aus dem Buch von Szabo und Tanaka "Residue Arithmetic and its Applications to Computer Technology", Mc GRAW-HILL BOOK COMPANY, 1967, bekannt ist. Eine Zahl x, in einem RNS mit einer Basis (X, Y) ausgedrückt, ist gleich dem modulo X erhaltenen Residuumwert, modulo Y erhaltenen Residuumwert. Beispielsweise ergibt 25 auf der Basis (7, 8) gleich 4,1, denn 25 modulo 7 ist 4 und 25 modulo 8 ist 1.
  • Der Speicher, welcher der Veranschaulichung von Fig. 2 entspricht, ist in einem RNS-System mit der Basis (7, 8) adressiert. Die maximale Anzahl von Elementen, die adressiert werden könnte, ist 7 · 8 = 56. Diese Elemente sind von 0 bis 55 numeriert. Um einen Vektor in den Speicher zu schreiben oder in diesem zu lesen, ist es erforderlich, die Adresse der Komponenten des Vektors zu kennen.
  • In einem Speicher gemäß der Erfindung umfaßt jede Speicherbank einen Adressenrechner 10, wie durch Fig. 3 veranschaulicht ist.
  • Der Speicher ermöglicht, daß in einem einzigen Taktzyklus M Komponenten eines Vektors im Zugriff gelesen oder geschrieben werden. Ein Vektor besitzt einen Ursprung, der durch die Indizes m(0) und k(0) festgelegt ist, so daß
  • m(0) = @L(0)(modM) und k(0) = @L(0)(modK) ist.
  • Die Komponenten des Vektors sind infolge einer solchen Verteilung, wie sie zuvor im Hinblick auf Fig. 2 beschrieben worden ist, regelmäßig verteilt, wobei sie den konstanten Indexinkrementen [ m](modM) uhd [ k](modK) in den Speicherbänken folgen. [ m] ist das Inkrement längs der Dimension Bank und [ k] ist das Inkrement längs der Dimension Fach. Es sei eine Komponente i des Vektors zu lesen oder zu schreiben; sie wird in dem Speicher anhand der Indizes m(i) und k(i) ausfindig gemacht, die derart beschaffen sind, daß
  • (1) m(i) = [m(0) + i · [ m](modM)](modM)
  • (2) k(i) = [k(0) + i · [ k](modK)](modK)
  • wobei m(i) der Nummer der Bank entspricht, in der sich die Komponente i des Vektors befindet, und k(i) der Nummer des Fachs der Bank m(i) entspricht, in dem sich diese Komponente i befindet. Beim Zugriff auf den Speicher nimmt jede Bank als Parameter die folgenden Werte entgegen:
  • - [m(0)](modM), k(0), k und [ m]&supmin;¹(modM) mit:
  • - [m(0)](modM) als Gegenteil von m(0) modulo M, das die Relation m(0) + [-m(0)] = 0 (modM) erfüllt;
  • [ m]&supmin;¹ (modM) als Inverses von m modulo M, das die Relation m · [ m]&supmin;¹ = 1(modM) erfüllt.
  • Der Adressenrechner der Bank m bestimmt den Wert i der Komponente, die sie enthält, indem er i aus der Relation (1) gewinnt:
  • (3) i = [[m(i) + -[m(0)](modM)](modM) · [(m)]&supmin;¹(modM)](modM)
  • Der Adressenrechner 10 umfaßt eine erste Additionseinrichtung 11 und eine erste Multiplikationseinrichtung 12. Die erste Additionseinrichtung 11 addiert die Nummer m(i) der Bank der Komponente i des Vektors mit dem Gegenteil, modulo M, der Nummer m(0) der Bank des Ursprungs des Vektors. Die Nummer m(i) der Bank der Komponente i hat einen Wert m, die Nummer m(0) der Bank des Ursprungs hat einen Wert 0. Das Ergebnis der Addition wird von der ersten Multiplikationseinrichtung 12 mit dem Inversen, modulo M, des Inkrements längs der Dimension Bank ( m) multipliziert. Das Ergebnis der Multiplikation ergibt den Wert i der in der Bank m enthaltenen Komponente des Vektors.
  • Wenn i bekannt ist und wenn der Parameter k, den die Bank von einem Block außerhalb des Speichers, beispielsweise von einem Compilerprogramm, empfängt, bekannt ist, berechnet der Adressenrechner das Produkt i · k (modK) mit Hilfe eines Berechnungsblocks 13. Ein Ausführungsbeispiel für einen Berechnungsblock 13 ist in Fig. 4 gezeigt. Er enthält keine Multiplikationseinrichtungen. Drei Berechnungsblöcke 15, 16 und 17 führen die Multiplikationen mit 2, 4 oder 8 ohne Multiplikationseinrichtung durch Verschieben um ein, zwei oder drei Bit nach links aus. Danach führen drei Additionseinrichtungen 18, 19 und 22 alle Multiplikationen von 0 bis 15 aus, während die Multiplikation mit 16 durch einen Test 23 von i über dem höchstwertigen Bit, gefolgt von einer Linksverschiebung um 4 Bit, gesondert erhalten wird. Die Auswahl des richtigen Wertes wird durch drei Multiplexer 20, 21, 25 getroffen, die durch den Wert von i gesteuert werden.
  • Die zwischen dem Speicher und dem Rechner ausgetauschten Daten sind in Form eines Vektors mit N Komponenten strukturiert.
  • Die in den M Speicherbänken gespeicherten Werte sind entsprechend einer Ordnung n geordnet und werden als n-geordnet bezeichnet.
  • Ein Vektor wird n-geordnet oder Vektor der Ordnung N genannt, wenn seine N Komponenten jeweils um einen Wert, der gleich n ist, regelmäßig beabstandet sind. Beispielsweise sind für einen 3-geordneten Vektor aus 8 Komponenten die Komponenten in der folgenden Reihenfolge angeordnet:
  • ; wobei jede Komponente durch ihre Nummer, die von 0 bis 7 variiert, bezeichnet ist. Der Ursprung 0 des Vektors ist in einer Bank angeordnet, die nicht zwangsläufig die Bank 0 ist. Die Gesamtheit der Komponenten des Vektors kann eine Verschiebung d erfahren haben. Unter diesen Umständen ist der Ursprung 0 des Vektors in der Bank d gespeichert. Wenn das vorhergehende Beispiel wieder aufgenommen wird, so sind, wenn eine Verschiebung von d = 2 betrachtet wird, die Komponenten des Vektors in dem Speicherblock in der folgenden Reihenfolge gespeichert:
  • Die von dem Rechner verarbeiteten Vektoren sind 1-geordnet, wobei die Komponente i eines Vektors von dem Elementarprozessor i verarbeitet wird. Insbesondere wird der Ursprung 0 des Vektors durch den Elementarprozessor 0 verarbeitet.
  • Wenn der Rechner einen Zugriff zum Lesen des Speichers vornimmt, stellt die erste Verzweigung eine Verbindung zwischen dem Eingangsdatenbus E1 und dem Ausgangsdatenbus S1 her und die zweite Verzweigung stellt eine Verbindung zwischen dem Eingangsdatenbus E3 und dem Ausgangsdatenbus, S2 her.
  • Wenn der Rechner einen Zugriff zum Schreiben in den Speicher vornimmt, stellt die erste Verzweigung eine Verbindung zwischen dem Eingangsdatenbus E2 und dem Ausgangsdatenbus S1 her und die zweite Verzweigung stellt eine Verbindung zwischen dem Eingangsdatenbus E3 und dem Ausgangsdatenbus S3 her.
  • Bei einem Zugriff zum Lesen des Speichers ist der Vektor am Eingang des Gitters n-geordnet, wobei seine Komponenten um einen Wert d verschoben sind, während der Vektor am Ausgang des Gitters 1-geordnet ist und keine Verschiebung aufweist.
  • Bei einem Zugriff zum Schreiben in den Speicher ist der Vektor am Eingang des Gitters 1-geordnet und weist keine Verschiebung auf, während der Vektor am Ausgang des Gitters n-geordnet ist und seine Komponenten um einen Wert d verschoben sind.
  • Um die Permutation und die Translation der Komponenten des Vektors auszuführen, ist das unidirektionale Gitter in zwei Gesamtheiten von Schichten strukturiert. Eine erste Gesamtheit von Schichten führt die Permutation der Komponenten des Vektors aus, um den n-geordneten Vektor in einen 1-geordneten Vektor zu transformieren oder um umgekehrt den 1-geordenten Vektor in einen n-geordneten Vektor zu transformieren. Jede Schicht umfaßt mehrere Betriebsarten. Der Wert p, der als Anordnungsschrittweite definiert ist, bestimmt die von der Schicht zu verwendende Betriebsart. Eine zweite Gesamtheit von Schichten führt die Translation der Komponenten des Vektors aus, um den Ursprung des Vektors auf den Elementarprozessor 0 einzustellen, falls der Speicher gelesen wird, oder um den Ursprung des Vektors zu verschieben, falls in den Speicher geschrieben wird.
  • Jede Schicht umfaßt mehrere Betriebsarten. Der Wert t, der als Translationswert definiert ist, bestimmt für jede Schicht die zu verwendende Betriebsart.
  • Die Fig. 5, 6, 7 und 8 geben ein Ausführungsbeispiel für das Gitter an.
  • Fig. 5 stellt in schematischer Weise die erste Gesamtheit von Schichten dar.
  • Fig. 6 stellt in schematischer Weise die zweite Gesamtheit von Schichten dar.
  • Fig. 7 gibt die zu verwendenden Betriebsarten in Abhängigkeit von der Anordnungsschrittweite p an.
  • Fig. 8 stellt die zu verwendenden Betriebsarten in Abhängigkeit vom Translationswert t dar.
  • Die besondere Ausführungsform des Gitters, die durch die Fig. 5 und 6 veranschaulicht ist, weist eine erste Gesamtheit 26, die sich aus den zwei Schichten 27 und 28 zusammensetzt, und eine zweite Gesamtheit 29, die sich aus den zwei Schichten 30 und 31 zusammensetzt, auf. Die erste Schicht 27 der ersten Gesamtheit 26 von Schichten weist fünf verschiedene Betriebsarten auf, die mit a, b, c, d und e bezeichnet sind. Die zweite Schicht 28 der ersten Gesamtheit 26 von Schichten weist fünf verschiedene Betriebsarten auf, die mit A, B, C, D und E bezeichnet sind. Die erste Schicht 30 und die zweite Schicht 31 der zweiten Gesamtheit 29 von Schichten weisen ebenfalls fünf Betriebsarten auf, die mit a, b, c, d, e bzw. A, B, C, D, E bezeichnet sind.
  • Die erste Tabelle, Fig. 7, ermöglicht, die Betriebsart jeder der beiden Schichten der ersten Gesamtheit zu bestimmen. Die zweite Tabelle, Fig. 8, ermöglicht, die Betriebsart jeder der beiden Schichten der zweiten Gesamtheit zu bestimmen.
  • Die Funktionsweise des Gitters ist nachfolgend dargestellt, wobei als Beispiel zuerst ein Schreiben in den Speicher eines Vektors betrachtet wird, der anfangs 1- geordnet ist und in Form eines 3-geordneten Vektors mit einer Verschiebung von 7 gespeichert wird, und danach ein Lesen eines Vektors, der 3-geordnet und um 7 verschoben ist, aus dem Speicher betrachtet wird.
  • In dem Fall, in dem in den Speicher geschrieben wird, erfolgt die Bestimmung des Wertes p der Beabstandung und des Wertes t der Verschiebung sofort. Der gespeicherte Vektor muß 3-geordnet sein, folglich ist p = 3. Die Komponenten des gespeicherten Vektors müssen um 7 verschoben sein, folglich ist t = 7. Die Werte p und t sind unmittelbar durch die Ordnung und die Verschiebung des Vektors gegeben.
  • Die Werte p der Beabstandung und. t der Translation ermöglichen, die Betriebsarten der Schichten des Gitters zu bestimmen.
  • Die Tabelle von Fig. 7 ermöglicht, für die erste Gesamtheit die Betriebsart der ersten Schicht, die Betriebsart p1 = b, und die Betriebsart der zweiten Schicht, die Betriebsart p2 = D zu bestimmen, wobei berücksichtigt wird, daß p = 3 ist.
  • Am Eingang des Gitters ist der Vektor 1-geordnet und seine Komponenten sind nicht verschoben. Die Komponenten eines Vektors treten am Eingang der ersten Schicht in der folgenden Reihenfolge auf:
  • Beim Durchlaufen der ersten Schicht werden die Komponenten des Vektors permutiert. Die Betriebsart der ersten Schicht ist durch den Buchstaben b bestimmt, welcher der ausgewählten Betriebsart p1 entspricht. Die Funktionsweise wird nachfolgend im Hinblick auf Fig. 5 im einzelnen dargestellt.
  • Die erste Komponente 0 erfährt keine Permutation. Auf der vertikalen Linie, die in dem Gitternetz der ersten Schicht von 0 ausgeht, erscheint nämlich kein Buchstabe für die Betriebsart. Die zweite Komponente 1 erfährt eine Permutation. Die vertikale Linie, die von 1 ausgeht, enthält nämlich den Buchstaben b, welcher der angenommenen Betriebsart p1 entspricht. Der Buchstabe b bestimmt die horizontale Linie, auf welcher die zweite Komponente ausgegeben wird, in diesem Fall die Linie 5. Die dritte Komponente 2 wird auf der horizontalen Linie 10 ausgegeben, die durch den Buchstaben b bestimmt ist, der auf der vertikalen Linie positioniert ist, die vom Eingang der dritten Komponente ausgeht. Und so weiter bis zur dreiundzwanzigsten Komponente 22, die auf der horizontalen Linie 18 ausgegeben wird.
  • Am Ausgang der ersten Schicht treten die Komponenten des Vektors in folgender Reihenfolge auf:
  • Am Eingang der zweiten Schicht treten die Komponenten des Vektors in der gleichen Reihenfolge auf, wie sie am Ausgang der ersten Schicht vorliegen, d. h.
  • Die zweite Schicht verwirklicht eine Permutation der an ihren Eingängen vorliegenden Komponenten des Vektors gemäß einer Funktionsweise, die derjenigen der ersten Schicht ähnlich ist. Die Betriebsart ist schichtspezifisch und in dem angenommenen Beispiel durch den Buchstaben D bestimmt, welcher der ausgewählten Betriebsart p2 entspricht. Die Funktionsweise wird nachfolgend im Hinblick auf Fig. 5 im einzelnen dargestellt.
  • Die erste Komponente 0 erfährt keine Permutation. Auf der horizontalen Linie, die in dem Gitternetz der zweiten Schicht von 0 ausgeht, erscheint nämlich kein Buchstabe für die Betriebsart. Die zweite Komponente 14 erfährt eine Permutation. Die horizontale Linie, die von 1 ausgeht, enthält nämlich den Buchstaben D, welcher der angenommenen Betriebsart p2 entspricht. Der Buchstabe D bestimmt die vertikale Linie, auf welcher die zweite Komponente ausgegeben wird, in diesem Fall die Linie 19. Die dritte Komponente 5 wird auf der vertikalen Linie 15 ausgegeben, die durch den Buchstaben D bestimmt ist, der auf der horizontalen Linie positioniert ist, die vom Eingang der dritten Komponente ausgeht. Und so weiter bis zur dreiundzwanzigsten Komponente 9, die auf der vertikalen Linie 4 ausgegeben wird.
  • Folglich treten die Komponenten des Vektors am Ausgang der zweiten Schicht in folgender Reihenfolge auf:
  • Nach der Permutation dieser Komponenten durch die erste Gesamtheit von Schichten sind die Komponenten des Vektors durch die zweite Gesamtheit, von Schichten verschoben worden. Die Tabelle von Fig. 8 ermöglicht, für die zweite Gesamtheit der Schichten die Betriebsart der ersten Schicht, die Betriebsart t1 = c, und die Betriebsart der zweiten Schicht, die Betriebsart t2 = B zu bestimmen, wobei berücksichtigt wird, daß t = 7 ist.
  • Am Eingang der ersten Schicht der zweiten Gesamtheit von Schichten des Gitters sind die Komponenten des Beispielvektors 3-geordnet. Die Komponenten des Vektors sind somit in folgender Reihenfolge:
  • Fig. 6 ermöglicht, die Ordnung der Komponenten des Vektors am Ausgang der ersten Schicht der zweiten Gesamtheit von Schichten und dann am Ausgang des Gitters, der dem Ausgang der zweiten Schicht der zweiten Gesamtheit von Schichten entspricht, zu bestimmen.
  • Die erste Schicht arbeitet gemäß der Betriebsart t1 gleich c. Die Funktionsweise ist nachfolgend im Hinblick auf die Fig. 6 im einzelnen dargestellt.
  • Die erste Komponente 0 erfährt eine Verschiebung von 2. Die vertikale Linie, die in dem Gitternetz der ersten Schicht von 0 ausgeht, enthält nämlich den Buchstaben c, welcher der angenommenen Betriebsart d1 entspricht. Der Buchstabe c bestimmt die horizontale Linie, auf welcher die erste Komponente 0 ausgegeben wird, in diesem Fall die Linie 2. Die zweite Komponente 8 erfährt die gleiche Verschiebung wie die erste Komponente 0. Das Gitternetz der ersten Schicht präsentiert nämlich jede Betriebsart d1, in dem angenommenen Beispiel c, längs einer Diagonale. Und so weiter bis die Diagonale, die den Buchstaben der Betriebsart d1 enthält, aus dem Gitternetz austritt. Für die folgende Komponente, in dem Beispiel die zweiundzwanzigste Komponente, nimmt die Diagonale wieder ihren Ausgang im Schnittpunkt der vertikalen Linie, die sich unterhalb dieser letzteren Komponente befindet, mit der horizontalen Linie, die dem Ausgang 0 der ersten Schicht entspricht. Die zweiundzwanzigste Komponente 7 wird folglich auf der Linie 0 ausgegeben. Und so weiter bis zur dreiundzwanzigsten Komponente 15, die auf der horizontalen Linie 1 ausgegeben wird.
  • Beim Verlassen der ersten Schicht treten die Komponenten des Vektors in folgender Reihenfolge auf:
  • Am Eingang der zweiten Schicht treten die Komponenten des Vektors in der gleichen Ordnung auf, wie sie am Ausgang der ersten Schicht vorliegen, d. h.
  • Die zweite Schicht verwirklicht eine Translation der an ihren Eingängen vorliegenden Komponenten des Vektors gemäß einer Funktionsweise, die derjenigen der ersten Schicht ähnlich ist. Die Betriebsart ist schichtspezifisch und in dem angegebenen Beispiel durch den Buchstaben B bestimmt, welcher der ausgewählten Betriebsart t2 entspricht. Die Funktionsweise ist nachfolgend im Hinblick auf Fig. 6 im einzelnen dargestellt.
  • Die erste Komponente 7 erfährt eine Verschiebung um 5. Die horizontale Linie, die in dem Gitternetz der zweiten Schicht von 0 ausgeht, enthält nämlich den Buchstaben B, welcher der angenommenen Betriebsart t2 entspricht. Der Buchstabe B bestimmt die vertikale Linie, auf welcher die erste Komponente 7 ausgegeben wird, in diesem Fall die Linie 5. Die zweite Komponente 15 erfährt die gleiche Verschiebung wie die erste Komponente. Das Gitternetz der zweiten Schicht präsentiert nämlich jede Betriebsart t2, in dem angenommenen Beispiel B, längs einer Diagonale. Und so weiter bis die Diagonale, die den Buchstaben der Betriebsart t2 enthält, aus dem Gitternetz austritt. Wenn die Diagonale über eine horizontale Linie des Gitternetzes austritt, dann wird sie weitergeführt, wobei sie vom Schnittpunkt der vertikalen Linie, der ersten rechts von dem Buchstaben der Betriebsart t2, der sich am weitesten rechts befindet, mit der horizontalen Linie, welche der Eingabe 0 entspricht, ausgeht. Wenn die Diagonale über eine vertikale Linie des Gitternetzes austritt, dann wird sie weitergeführt, wobei sie vom Schnittpunkt der horizontalen Linie, der ersten oberhalb des Buchstabens der Betriebsart t2 am weitesten rechts, mit der vertikalen Linie, die am Ausgang 0 entspricht, ausgeht. In dem angenommenen Beispiel tritt die Diagonale, die die Betriebsart t2 = B umfaßt, über eine vertikale Linie des Gitternetzes aus. Die achtzehnte Komponente 5 tritt auf der Linie 22 aus. Die Diagonale beginnt wieder im Schnittpunkt der horizontalen Linie 18, der ersten oberhalb der horizontalen Linie, die der achtzehnten Komponente entspricht, mit der vertikalen Linie, die am Ausgang 0 entspricht. Die neunzehnte Komponente 13 wird folglich auf der Linie 0 ausgegeben. Und so weiter bis zur dreiundzwanzigsten Komponente 22, die auf der vertikalen Linie 4 ausgegeben wird. Folglich treten die Komponenten des Vektors beim Verlassen der zweiten Schicht in folgender Reihenfolge auf:
  • Die Tabelle 1 des Anhangs 1 stellt die verschiedenen Formen zusammen, die von dem vorhergehenden Vektor im Laufe der Schichtendes Gitters angenommen werden. Der Ausgang der zweiten Schicht der zweiten Gesamtheit von Schichten entspricht dem Ausgang des Gitters. Es ist leicht festzustellen, daß der Ursprung 0 des Vektors in der Tat um einen Wert von 7 verschoben ist und daß die Komponenten des Vektors in der Tat 3-geordent sind, wobei sich die Komponente 1 am Ort 7 + 3 = 10, die Komponente 2 am Ort 10 + 3 = 13 befindet und so weiter modulo 23. Die Komponente 6 befindet sich folglich am Ort [7 + 3 · 6](mod23) 2.
  • Des weiteren entspricht das vorgesehene Beispiel einem Auslesen eines Vektors, dessen Komponenten 3-geordnet sind und dessen Ursprung in der Speicherbank 7 gespeichert ist, aus dem Speicher.
  • In dem Fall des Auslesens aus dem Speicher erfolgt die Bestimmung des Wertes p der Beabstandung und des Wertes t der Translation nicht sofort.
  • Der Wert p der Beabstandung wird erhalten, indem das Inverse, modulo der Anzahl N der Komponenten des Vektors, aus der Ordnung des gelesenen Vektors berechnet wird.
  • (4) p = Ordnung&supmin;¹(modN)
  • Im Fall des Beispiels ergibt die Relation (4):
  • p = 3&supmin;¹(mod23) = 8, da nämlich 3 · 8 = 24 = 1(mod23) ist.
  • Der Wert t der Translation wird durch Lösen der folgenden Gleichung erhalten:
  • (5) Ort(0) + Ordnung · t = 0(modN)
  • wobei Ort(0) der Wert des Ortes ist, welcher der Nummer der Bank entspricht, in der sich der Ursprung des gelesenen Vektors befindet,
  • Ordnung der Wert ist, dementsprechend die Komponenten des gelesenen Vektors angeordnet sind.
  • In dem Fall des gegebenen Beispiels ergibt die Auflösung der Gleichung (5):
  • t = 13, da nämlich 7 + 3 · 13 = 46 = 2 · 23 = 0(mod23).
  • Die Verwendung des Gitters ist völlig gleich, egal ob es sich um ein Schreiben eines Vektors handelt, der anfangs 1-geordnet ist, dessen Ursprung auf den Elementarprozessor 0 eingestellt ist und der in Form eines n-geordneten Vektors gespeichert werden soll, dessen Ursprung auf eine Bank m eingestellt ist, oder aber ob es sich um ein Lesen eines Vektors handelt, der anfangs n-geordnet ist, dessen Ursprung in einer Bank m gespeichert ist und der von den Elementarprozessoren in Form eines 1-geordneten Vektors verarbeitet werden soll, dessen Ursprung auf den Elementarprozessor 0 festgesetzt ist. Der Unterschied zwischen dem Schreiben und dem Lesen besteht in den verschiedenen Betriebsarten der Schichten des Gitters.
  • Wenn das Beispiel wieder aufgenommen wird, das zunächst einem Schreiben in den Speicher entspricht, sind folglich die Betriebsarten der Schichten des Gitters: Betriebsart p1 = b, Betriebsart p2 = D, Betriebsart t1 = c, Betriebsart t2 = B; während es danach einem Lesen in dem Speicher entspricht, wobei die verschiedenen Betriebsarten der Schichten des Gitters folgende sind: Betriebsart p1 = b, Betriebsart p2 = B, Betriebsart t1 = d und Betriebsart t2 = C. Diese letzteren Betriebsarten werden anhand der Tabelle der Fig. 7 bestimmt, wobei vorausgesetzt wird, daß p = 8 ist, sowie anhand der Tabelle der Fig. 8, wobei vorausgesetzt wird, daß t = 13 ist.
  • Die Nutzbarmachung der Fig. 5 und 6 ermöglicht, wenn die Betriebsarten der verschiedenen Schichten des Gitters bekannt sind, die verschiedenen Formen zu bestimmen, die von dem Vektor am Ausgang der verschiedenen Schichten angenommen werden. Die verschiedenen Formen des Vektors des Beispiels sind in der Tabelle 2 im Anhang 2 zusammengestellt.
  • Der Ausgang der zweiten Schicht der zweiten Gesamtheit von Schichten entspricht dem Ausgang des Gitters. Es ist also leicht festzustellen, daß sich der Ursprung 0 des Vektors am Ort 0 befindet und daß die Komponenten des Vektors 1- geordnet sind.
  • Nachfolgend ist ein weiteres Beispiel angegeben, um die gegebene Veranschaulichung im Fall eines Lesens im Speicher zu ergänzen. Der in dem Speicher gelesene Vektor ist 4-geordnet und hat einen am Ort 7 gespeicherten Ursprung.
  • Die Relation (4) ermöglicht, den Beabstandungswert p zu bestimmen:
  • p = 4&supmin;¹(mod23) d. h. p = 6, denn 4 · 6 = 24 = 1(mod23)
  • Die Relation (5) ermöglicht, den Wert t der Verschiebung zu bestimmen:
  • 7 + 4 · t = 0 (mod 23) d. h. t = 4, denn 7 + 4 · 4 = 23 = 0(mod23)
  • Die Tabelle der Fig. 7 ermöglicht, die Betriebsarten der ersten Gesamtheit von Schichten zu bestimmen: Betriebsart p1 = d und Betriebsart p2 = D, wobei vorausgesetzt wird, daß p = 6 ist.
  • Die Tabelle der Fig. 8 ermöglicht, die Betriebsarten der zweiten Gesamtheit von Schichten zu bestimmen: Betriebsart t1 = e und Betriebsart t2 = A, wobei vorausgesetzt wird, daß t = 4 ist.
  • Die Nutzbarmachung der Fig. 5 und 6 ermöglicht, wenn die Betriebsarten der verschiedenen Schichten des Gitters bekannt sind, die verschiedenen Formen zu bestimmen, die von dem Vektor am Ausgang der verschiedenen Schichten angenommen werden. Die verschiedenen Formen des Vektors des Beispiels sind in der Tabelle 3 des Anhangs 3 zusammengestellt. Der Ausgang der zweiten Schicht der zweiten Gesamtheit von Schichten entspricht dem Ausgang des Gitters. Es ist leicht festzustellen, daß sich der Ursprung 0 des Vektors am Ort 0 befindet und daß die Komponenten des Vektors 1-geordnet sind. Anhang A Tabelle 1 Anhang B Tabelle 2 Anhang C Tabelle 3

Claims (6)

1. Speicher für tabellenartig organisierte Daten, dessen Struktur Zugriffe durch Vektoren mit N Komponenten ermöglicht und der anhand einer bestimmten Basis eines Residuum-Zahlensystems adressiert wird, wobei der Speicher in M Speicherbänken (8) mit K Fächern organisiert ist, die jeweils im Bereich von 0 bis M - 1 numeriert sind, und ein unidirektionales Gitter (6) aufweist, das beim Zugriff eine Permutation der Vektorkomponenten verwirklicht, die darin besteht, entweder von einem n-geordneten Vektor zu einem 1-geordneten Vektor überzugehen oder von einem 1-geordneten Vektor zu einem n-geordneten Vektor überzugehen, dadurch gekennzeichnet, daß:
- jede Bank einen Adressenrechner (10) für die lokale Adresse (k(i)) einer Komponente (i) des Zugriffsvektors in der betrachteten Bank (m(i)) umfaßt und daß das unidirektionale Gitter (6) eine Translation der Komponenten des Zugriffsvektors um einen bestimmten Wert t verwirklicht,
- für die Berechnung der lokalen Adresse (k(i)) der Komponente eines Vektors in einer bestimmten Speicherbank (m(i)), wobei der Ursprung des Vektors in einer mit m(0) numerierten Speicherbank gespeichert ist, der Adressenrechner (10) der bestimmten Speicherbank (m(i)) nacheinander ausführt: Bestimmung des Wertes i der Komponente des Vektors, die er enthält, mittels der folgenden Relation:
i = [[m(i) + -[m(0)](modM)](modM) · [(&Delta;m)]&supmin;¹(modM)](modM)
wobei -[m(0)](modM) als Gegenteil von m(0) modulo M die folgende Relation erfüllt:
m(0) + [-m(0)] = 0 (modM) und wobei [(&Delta;m)]&supmin;¹(modM) als Kehrtwerte von &Delta;m modulo M die folgende Relation verifiziert: &Delta;m · [(&Delta;m)]&supmin;¹ = 1(modM), mit &Delta;m als Inkrement, mit dem die Komponenten des Vektors in den Speicherbänken gespeichert sind,
- Berechnen der lokalen Adresse (k(i)), wenn i bekannt ist:
k(i) = [k(0) + i · [&Delta;k](modK)](modK)
mit &Delta;k als Inkrement, mit dem die Komponenten des Vektors in den Speicherfächern gespeichert sind, und k(0) als Nummer des Speicherfachs, in dem der Ursprung des Vektors angeordnet ist, und daß
- das unidirektionale Gitter (6) eine erste Gesamtheit (26) aus zwei Schichten (27, 28) und in Reihe damit eine zweite Gesamtheit (29) aus zwei Schichten (30, 31) umfaßt, wobei die erste Gesamtheit (26) von Schichten so organisiert ist, daß der Abstand zwischen den aufeinanderfolgenden Komponenten eines am Eingang des Gitters vorhandenen Vektors um einen Wert p modifiziert wird, entweder um für die 1-geordneten Komponenten des Vektors eine p- Ordnung zu schaffen, wenn in den Speicher geschrieben wird, oder um für die p- geordneten Komponenten des Vektors eine 1-Ordnung zu schaffen, wenn aus dem Speicher gelesen wird, wobei die zweite Gesamtheit (29) der Schichten so organisiert ist, daß die Komponenten des Vektors, der von der ersten Gesamtheit von Schichten ausgegeben wird, um einen bestimmten Translationswert t translatorisch verschoben werden, um entweder den Ursprung des Vektors neu einzustellen, wenn aus dem Speicher gelesen wird, oder um den Ursprung des Vektors zu verschieben, wenn in den Speicher geschrieben wird.
2. Datenspeicher nach Anspruch 1, dadurch gekennzeichnet, daß er eine erste Verzweigung (5), die zwei Eingänge (E1, E2) und einen Ausgang (S1) umfaßt, und eine zweite Verzweigung (7), die einen Eingang (E3) und zwei Ausgänge (S2, S3) umfaßt, aufweist und daß diese Verzweigungen so organisiert sind, daß bei einem Zugriff zum Lesen aus dem Speicher (1) die erste Verzweigung (5) den Ausgang der Speicherbänke mit dem Eingang des unidirektionalen Gitters (6) koppelt und die zweite Verzweigung (7) den Ausgang des unidirektionalen Gitters (6) mit dem Ausgang des Speichers (1) koppelt, und daß bei einem Zugriff zum Schreiben in den Speicher (1) die erste Verzweigung (5) den Eingang des Speichers (1) mit dem Eingang des unidirektionalen Gitters (6) koppelt und die zweite Verzweigung (7) den Ausgang des unidirektionalen Gitters (6) mit dem Eingang der Speicherbänke (8) koppelt.
3. Datenspeicher nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß der Beabstandungswert p, der Translationswert t, das Indexinkrement &Delta;m, mit dem die Komponenten des Vektors in den Speicherbänken gespeichert sind, das Indexinkrement &Delta;k, mit dem die Komponenten des Vektors in den Speicherfächern gespeichert sind, die Nummer m(0) der Speicherbank, in der der Ursprung des Vektors angeordnet ist, und die Nummer k(0) des Speicherfachs, in dem der Ursprung des Vektors angeordnet ist, Daten sind, die zum Speicher bei jedem Lesezugriff und bei jedem Schreibzugriff auf den Speicher geliefert werden.
4. Datenspeicher nach irgendeinem der Ansprüche 1 und 3, dadurch gekennzeichnet, daß jede Schicht in einer bestimmten Betriebsart arbeitet, und zwar für die erste Gesamtheit von Schichten mit dem Beabstandungswert p und für die zweite Gesamtheit von Schichten mit dem Translationswert t.
5. Datenspeicher nach den Ansprüchen 1, 3 und 4, dadurch gekennzeichnet, daß die Anzahl von Schichten und die Anzahl von Betriebsarten parametrisierbar sind.
6. Datenspeicher nach Anspruch 5. dadurch gekennzeichnet, daß die zwei seriell angeordneten Schichten (27, 28) der ersten Gesamtheit (26) und die zwei seriell angeordneten Schichten (30, 31) der zweiten Gesamtheit jeweils fünf verschiedene Betriebsarten ((a, b, c, d, e), (A, B, C, D, E)) besitzen.
DE69906348T 1998-10-30 1999-10-22 Speicher mit vektorzugriff Expired - Fee Related DE69906348T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9813664A FR2785406B1 (fr) 1998-10-30 1998-10-30 Memoire a acces vectoriel
PCT/FR1999/002578 WO2000026790A1 (fr) 1998-10-30 1999-10-22 Memoire a acces vectoriel

Publications (2)

Publication Number Publication Date
DE69906348D1 DE69906348D1 (de) 2003-04-30
DE69906348T2 true DE69906348T2 (de) 2003-12-04

Family

ID=9532201

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69906348T Expired - Fee Related DE69906348T2 (de) 1998-10-30 1999-10-22 Speicher mit vektorzugriff

Country Status (6)

Country Link
US (1) US6704834B1 (de)
EP (1) EP1125205B1 (de)
JP (1) JP2002529814A (de)
DE (1) DE69906348T2 (de)
FR (1) FR2785406B1 (de)
WO (1) WO2000026790A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3532860B2 (ja) * 2001-01-22 2004-05-31 株式会社東芝 剰余系表現を利用した演算装置及び方法及びプログラム
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
DE602007011755D1 (de) * 2006-05-16 2011-02-17 Nxp Bv Speicherarchitektur
US8862827B2 (en) 2009-12-29 2014-10-14 International Business Machines Corporation Efficient multi-level software cache using SIMD vector permute functionality
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9898283B2 (en) * 2011-12-22 2018-02-20 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion
US20250209006A1 (en) * 2023-12-20 2025-06-26 Advanced Micro Devices, Inc. Prime factorization hash operation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2457521B1 (fr) 1979-05-23 1985-12-27 Thomson Csf Systeme multiprocesseur de traitement de signal
FR2535067A1 (fr) 1982-10-22 1984-04-27 Thomson Csf Dispositif numerique de formation de voies sonar
US5394553A (en) * 1991-06-12 1995-02-28 Lee Research, Inc. High performance array processor with nonlinear skewing of elements
FR2732787B1 (fr) 1995-04-07 1997-05-16 Thomson Csf Procede de saisie graphique d'application de traitement de signal
FR2748138B1 (fr) 1996-04-26 1998-07-10 Thomson Csf Procede de codage pour processeur de traitement de signal, et processeur pour la mise en oeuvre d'un tel procede

Also Published As

Publication number Publication date
WO2000026790A1 (fr) 2000-05-11
DE69906348D1 (de) 2003-04-30
EP1125205B1 (de) 2003-03-26
US6704834B1 (en) 2004-03-09
FR2785406B1 (fr) 2004-09-10
EP1125205A1 (de) 2001-08-22
FR2785406A1 (fr) 2000-05-05
JP2002529814A (ja) 2002-09-10

Similar Documents

Publication Publication Date Title
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE3856015T2 (de) Berechnungseinrichtung für Parallelprozessoren
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE69229464T2 (de) Quasi radix-16 prozessor und verfahren
DE69520974T2 (de) Eine integrierte Halbleiterschaltung
DE68927611T2 (de) Digitales neuronales Netwerk
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE3854035T2 (de) Nichtperiodisches Abbildungsverfahren zum verbesserten Zweierpotenzzugriff für ineinandergreifende Einrichtungen.
DE3586201T2 (de) Digitaler datenprozessor fuer matrix-vektor-multiplikation.
DE3688505T2 (de) Multiportspeichersystem.
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE68923763T2 (de) Anordnung von Datenzellen und Aufbau von Neuronennetzen, die eine solche Anordnung nutzen.
DE69129723T2 (de) Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor
DE112008002158T5 (de) Verfahren und System zur Multiplikation großer Zahlen
DE10393918T5 (de) Effiziente Multiplikation kleiner Matrizen durch Verwendung von SIMD-Registern
DE102021107093A1 (de) Speicherinterne rechenschaltung und verfahren
DE2936763A1 (de) Multiplikationsanordnung fuer dualzahlen in zweikomplementdarstellung
DE69117763T2 (de) Digitalprozessor zur betriebssimulation eines parallelrechnerfelds
DE69900306T2 (de) Koprozessor für moduläre Arithmetik mit einer schnellen Ausführung von nicht-modulären Operationen
DE69113465T2 (de) Paralleler prozessor für flüssigkeitsdynamik.
WO1992009040A1 (de) Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
DE69900142T2 (de) Verfahren zur Ausführung der modularen Multiplikation nach der Montgomery-Methode
DE2746355A1 (de) Einrichtung und verfahren zur wahlweisen multiplikation oder division zweier als binaerzahlen vorliegender operanden
DE69121732T2 (de) Bildsignalverarbeitungsschaltung

Legal Events

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