DE112020000748B4 - Adresserzeugung zur hochleistungsverarbeitung von vektoren - Google Patents

Adresserzeugung zur hochleistungsverarbeitung von vektoren Download PDF

Info

Publication number
DE112020000748B4
DE112020000748B4 DE112020000748.0T DE112020000748T DE112020000748B4 DE 112020000748 B4 DE112020000748 B4 DE 112020000748B4 DE 112020000748 T DE112020000748 T DE 112020000748T DE 112020000748 B4 DE112020000748 B4 DE 112020000748B4
Authority
DE
Germany
Prior art keywords
data vector
vector
binary data
memory
log
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.)
Active
Application number
DE112020000748.0T
Other languages
English (en)
Other versions
DE112020000748T5 (de
Inventor
Jan van Lunteren
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020000748T5 publication Critical patent/DE112020000748T5/de
Application granted granted Critical
Publication of DE112020000748B4 publication Critical patent/DE112020000748B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Abstract

Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei das Verfahren aufweistEmpfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors,Bestimmen von n Offsets, einen für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird durchAnwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse, was zu einem Z-Vektor führt,Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle, und Verschieben von Ergebnissen von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors, undBestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors durch Umstellen von Schreibdaten, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten, undparalleles Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit.

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die hierin beschriebenen beispielhaften Ausführungsformen betreffen allgemein einen effizienten Speicherzugriff und insbesondere ein Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist. Die beispielhaften Ausführungsformen betreffen ferner eine entsprechende Speicherzugriffseinheit zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, und ein Computerprogrammprodukt.
  • Technisches Gebiet
  • Viele Betriebslasten und eine moderne Datenverarbeitung beruhen auf grundlegenden Verarbeitungsschritten, die auf große Datenmengen identische Operationen anwenden, bei denen es sich um Abfolgen von Operationen handelt. Die Hauptschwierigkeit beim Realisieren einer hohen Leistung bei diesen Arbeitslasten besteht in der Regel darin, die Daten auf effizienteste Weise vom Speichersystem zu den Ausführungseinheiten und die Verarbeitungsergebnisse von den Ausführungseinheiten zurück in das Speichersystem zu bringen.
  • Die Verarbeitung, die bei vielen dieser Betriebslasten erforderlich ist, ist oftmals eine Kombination aus Multiplikation und Additionen bei entweder Gleitkomma- oder Ganzzahlwerten. Zum Beispiel beruht das Herzstück der Verarbeitung von Deep-Learning-Betriebslasten (sowohl Trainings- als auch Störeinflussbetriebslasten) auf dem Anwenden gewaltiger Mengen von Matrix-Multiplikationsoperationen an Eingangs- und/oder Trainingsdaten. Schablonencodes bilden das Herzstück vieler Modelle, die bei Anwendungen wie beispielsweise Wettervorhersage, Suche nach Öl und Gas und so weiter verwendet werden. Diese Schablonencodes aktualisieren iterativ Fehlerratenelemente gemäß einem feststehenden Muster, das als Schablone bezeichnet wird, normalerweise unter Einschließen einer bestimmten gewichteten Menge der Werte der benachbarten Elemente. Die FFT (Fast Fourier Transformation, schnelle Fourier-Transformation) ist einer der in Wissenschaft und Technik am weitesten verbreiteten Algorithmen und beruht auf dem Berechnen sehr großer Anzahlen von sogenannten Schmetterlingsberechnungen, die jeweils auf Multiplikationen und Additionen beruhen. Sowohl Schablonenberechnung als auch FFTs werden außerdem bei bestimmten Deep-Learning-Algorithmen (z.B. faltende neuronalen Netzen (convolutional neural networks, CNN)) verwendet.
  • Um eine hohe Leistung zu erzielen, sind die Ausführungseinheiten (die in der Regel eine Kombination aus Multiplikationseinheiten und Addierern einschließen) oftmals als Vektoreinheiten (SIMD-Einheiten) (SIMD = single instruction, multiple data) organisiert, die dieselben Operationen oder Kombinationen von Operationen viele Male parallel auf Eingangsdaten anwenden, die als Strom aus umfangreichen Datenvektoren bereitgestellt werden.
  • Das Abrufen eines Daten Vektors aus dem Speichersystem, das alle erforderlichen Operandenwerte für die Verarbeitungselemente beinhalten, die die Vektoreinheit bilden, ist oftmals wegen sogenannter Zweierpotenz-Schrittgrößen in den Adressabfolgen nicht einfach, die zum Lesen dieser Operandenwerte benötigt werden. Diese Art von Zugriffsmustern tritt zum Beispiel bei Betriebslasten auf, die auf Datenstrukturen zugreifen, die in einem linearen virtuellen oder physischen Adressraum durch Adressen mit einer Schrittweite von 1 (z. B. 0, 1, 2, 3 usw.), 8 (z. B. 0, 8, 16, 24 usw.) oder 256 (z. B. 0, 256, 512, 768, 1024 usw.) und so weiter zugeordnet sind.
  • Es liegen mehrere Offenbarungen vor, die ein Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit betreffen, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist.
  • Das Dokument US 9 705 532 B2 offenbart ein Verfahren und ein System für eine parallele Akkumulation von Informationsbits als Teil der Erzeugung von Paritätsprüfcodes geringer Dichte. Dadurch können aufeinanderfolgende Informationsbits mit Hilfe von Vektoroperationen akkumuliert werden, wobei die für Akkumulationen verwendete Paritätsadresse mit Hilfe des Zuordnens virtueller und privater Paritätsadressen kontinuierlich erfolgen können.
  • Das Dokument US 7 793 038 B2 offenbart das Zuordnen einer Adresse für einen Speicherzugriff in einem Speichersystem in eine Verknüpfungsadresse, die eine Speicherbankkennung und eine interne Adresse der Speicherbank beinhaltet. Die Adresse ist in einen ersten Abschnitt und in einem zweiten Abschnitt unterteilt. Darüber hinaus wird die Speicherbankkennung bestimmt, indem eine Nachschlageoperation in einer Nachschlagematrix durchgeführt wird.
  • Ein Nachteil bekannter Lösungen besteht jedoch nach wie vor in dem Problem, dass bei vielen Anwendungen Datenvektoren in einer Vielfalt von Arten aufgebaut werden müssen, die mehrere unterschiedliche Zweierpotenz-Schrittgrößen in den Adressabfolgen einschließen, die zum Zugreifen auf Datenvektorelemente verwendet werden. Zum Beispiel kann zu einem Zeitpunkt ein Datenvektor aus Datenelementen zusammengesetzt sein, die eine Adressabfolge betreffen, die eine Schrittgröße von 1 einschließen, zu anderen Zeitpunkten kann ein Datenvektor aus Datenelementen zusammengesetzt sein, die eine Adressabfolge betreffen, die eine Schrittgröße von 8 einschließen, und so weiter. Da dieselben Datenelemente in einer Vielfalt von Arten mit anderen Datenelementen verknüpft sein können, um Datenvektoren zu bilden, wird es viel schwieriger sicherzustellen, dass alle Datenelemente, die zum Bilden eines Datenvektors verwendet werden, in getrennten Bänken gespeichert werden, sodass alle Datenelemente, aus denen ein Datenvektor besteht, in einem Verfahrenszyklus der zugrundeliegenden Hardware parallel aus diesen Bänken gelesen werden können. Die hierin vorgeschlagenen Konzepte sind auf dieses Problem gerichtet.
  • Das Dokument US 2016 / 0 275 013 A1 betrifft eine Zuordnung einer Adresse für den Speicherzugriff in einem Speichersystem. Die Zuordnung kann in einer Kombination aus einem Speicherbankbezeichner und einer internen Speicherbankadresse erfolgen, die eine Adresse innerhalb der Speicherbank angibt. Daten können in einer Vielzahl von Speicherbänken in einer verschachtelten Weise gespeichert werden. Die Adresse ist in einen ersten Teil, einen zweiten Teil und einen dritten Teil unterteilt. Der Speicherbankbezeichner wird als Ausgabe einer Operation in einer Nachschlagematrix ermittelt, indem als erste Eingabe der erste Teil verwendet wird und als mindestens zwei weitere Eingaben für die Nachschlageoperation in der Nachschlagematrix die Ergebnisse von Paritätsfunktionen verwendet werden, die auf den zweiten und den dritten Teil angewendet werden. Die interne Adresse der Speicherbank wird auf der Grundlage des zweiten Teils und des dritten Teils der Adresse für die Speicherzugriffsadresse abgeleitet.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt kann ein Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit bereitgestellt werden, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist. Das Verfahren weist ein Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors und Bestimmen von n Offsets auf, einer für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet werden, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden.
  • Des Weiteren weist das Verfahren ein Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors durch Umstellen von Schreibdaten, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen (shuffling) von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten und ein paralleles Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit auf.
  • Gemäß einem weiteren Aspekt kann eine Speicherzugriffseinheit zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit bereitgestellt werden, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert sein kann. Die Speicherzugriffseinheit weist eine Empfangseinheit auf, die zum Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors ausgelegt ist, und ein erstes Bestimmungsmodul, das zum Bestimmen von n Offsets ausgelegt ist, einer für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet werden, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird, Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden und Schreibdaten umgestellt werden, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten.
  • Darüber hinaus weist die Speicherzugriffseinheit ein zweites Bestimmungsmodul auf, das zum Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors ausgelegt ist, und eine grundlegende Zugriffseinheit, die zum parallelen Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit ausgelegt ist.
  • Das vorgeschlagene Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, kann mehrere Vorteile und technische Auswirkungen bieten:
  • Es kann hauptsächlich ermöglichen, auch große oder lange Datenvektoren - insbesondere bei Matrixoperationen wie beispielsweise Multiplikationen und dergleichen - „in einem Zuge“ zu adressieren, d.h. grundsätzlich in einem Operationszyklus des Speichersystems. Dies kann möglich werden, da unter Umständen keine überlappende Adressierung erforderlich ist. Die Datenwerte unterschiedlicher Dimensionen in einem mehrdimensionalen Vektor sind unter Umständen immer über unterschiedliche Speicherbänke eines Speichersystems oder einer Speichereinheit verteilt. Somit wird durch Adressieren der unterschiedlichen Speicherbänke und innerhalb einer Speicherbank eines bestimmten Datenwertes einer Dimension des mehrdimensionalen Vektors die kürzeste mögliche Zugriffszeit auf alle Werte eines Vektors möglich.
  • Somit kann die Situation vermieden werden, bei der unter Umständen zwei oder mehr Zugriffe auf dieselbe Speicherbank erforderlich sind, um unterschiedliche Datenwerte unterschiedlicher Dimensionen desselben hyperdimensionalen Vektors zu adressieren. Dadurch können deutlich Betriebszyklen der Speichereinheit und somit des zugehörigen Datenverarbeitungssystems gespart werden. Daher kann durch das hier vorgeschlagene Konzept im Vergleich zu den dem Stand der Technik entsprechenden Techniken zum Zugreifen auf Datenvektoren in einem Speichersystem/einer Speichereinheit ein erheblicher Leistungsvorteil erreicht werden.
  • Das vorgeschlagene Konzept ermöglicht außerdem eine Art des Umstellens (shuffling) der Datenelemente des Vektors beim Schreiben auf die Speicherbänke sowie ein Zurück-Umstellen (back-shuffling) der Datenelemente beim Lesen der Daten des Vektors. Somit sind die Datenelemente des Vektors nach einem Schreib-Lese-Zyklus wieder so gut wie vor der Schreiboperation in die Speichereinheit/das Speichersystem sortiert.
  • Des Weiteren werden aufgrund aktueller Trends bei der Gestaltung von Computersystemen der Zugriff auf Daten im Speicher und die entsprechende Übertragung zu beherrschenden Faktoren, die sich bei vielen Anwendungen auf die Leistung auf der Systemebene auswirken. Durch Verbessern der Geschwindigkeit, mit der auf Datenvektoren im Speicher zugegriffen werden kann, die durch modernste Vektoreinheiten sehr effizient verarbeitet werden können, können die hierin beschriebenen Ausführungsformen beträchtlich dazu beitragen, die Leistung von Computersystemen bei einer Reihe von Betriebslasten wesentlich zu verbessern.
  • Im Folgenden werden zusätzliche Ausführungsformen des erfindungsgemäßen Konzepts beschrieben.
  • Gemäß einer bevorzugten Ausführungsform des Verfahrens können das Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse ein Auswählen aus der Startadresse - insbesondere der Adresse eines ersten Elements des Vektors in einem linearen Adressraum einer CPU - log2(n) Abschnitte und ein Y-Abschnitt mit einer Größe von log2(n) Bits, ein Bestimmen eines Paritätsbits für jeden der log2(n) Abschnitte, was zu einem Paritätsvektor X mit log2(n) Dimensionen - d.h. einer Gruppe einzelner Bits - führt, und ein Durchführen von Bitebenen-XODER-Operationen zwischen X und Y aufweisen, was zu einem Z-Vektor führt. Es kann erwähnt werden, dass dadurch die log2(n) Abschnitte und der Y-Abschnitt durch Adressmasken auswählbar sein können - insbesondere durch log2(n) + 1] durch Adressmasken. Einzelheiten der Umstellungsoperation (shuffling operation) werden in Verbindung mit der nachfolgenden Beschreibung der Figuren deutlicher.
  • Gemäß einer nützlichen Ausführungsform des Verfahrens kann das Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle außerdem ein Auswählen einer Zeile in der Zuordnungstabelle aufweisen, die log2(n) Einträge aufweist, indem der Z-Vektor - insbesondere dessen äquivalenter Binärwert - als Index in der Zuordnungstabelle verwendet wird und die Ergebnisse von Zuordnungstabellenzugriffen mit einem Abschnitt der Startadresse verknüpft - das auch als „Zusammenführen‟ bezeichnet werden kann - werden, um die n Offsets zu erhalten. Einzelheiten werden nachstehend im Kontext der Figuren erläutert.
  • Gemäß einer vorteilhaften Ausführungsform des Verfahrens kann das Verknüpfen aufweisen, dass log2(n) Bits, die sich an einem Bit-Offset log2(s) der Startadresse befinden, durch die bestimmten log2(n) Zuordnungstabelleneinträge ersetzt werden, was zu log2(n) Offsets führt. Dadurch kann jeder als Offset in einer jeweiligen der log2(n) Bänke verwendet werden. Dies kann eine einfache Bestimmung mit nur sehr begrenztem Aufwand ermöglichen.
  • Gemäß einer zusätzlich bevorzugten Ausführungsform des Verfahrens kann das Bestimmen der Abfolge von Abschnitten - ein Prozess, der auch als Umstellen (shuffling) bezeichnet werden kann - des binären Datenvektors in den n Speicherbänken ein Steuern von log2(n) aufeinanderfolgenden Multiplexerstufen aufweisen, von denen jede eine Mehrzahl von Multiplexern mit 2 Eingangsbits aufweist, um die Gesamtbreite des Datenvektors zu behandeln. Dies kann ein Positionieren einzelner Datenwerte eines mehrdimensionalen Vektors ermöglichen, sodass unter Umständen keine überlappenden Adressen erforderlich sind.
  • Insbesondere kann die erste Multiplexerstufe den höchstwertigen Teil des Datenvektors mit dem niedrigstwertigen Teil in dem Fall vertauschen, in dem das entsprechende Bit des Z-Vektors gleich eins ist. Die zweite Multiplexerstufe kann dieselbe Funktion parallel auf den unteren und oberen Teil des Datenvektors unter Steuerung des zweiten Bits des Z-Vektors anwenden und so weiter. Diese log2(n) Multiplexerstufen können verwendet werden, um die verschiedenen Datenelemente zu vertauschen, die an den korrekten Speicherstellen in die Speicherbänke geschrieben bzw. aus diesen gelesen werden.
  • Gemäß einer zulässigen Ausführungsform des Verfahrens kann es sich bei der Zugriffsoperation um eine Leseoperation handeln. Alternativ oder in Kombination kann es sich bei der Zugriffsoperation um eine Schreiboperation handeln. Somit sind auch Löschoperationen als Teil des erfindungsgemäßen Konzepts verwendbar. Somit können alle Operationen in einer Speichereinheit, einer Speichereinheit der einzelnen Speicherbänke, unter Verwendung des hierin vorgeschlagenen Konzepts durchgeführt werden. Ein Unterschied kann in der Abfolge der Adresserzeugung oder beim erneuten Umstellen (reshuffling) der identifizierten Datenelemente eines größeren - z.B. hyperdimensionalen - Vektors bestehen.
  • Gemäß einer praktischen Ausführungsform des Verfahrens können die ausgewählten log2(n) Abschnitte der Startadresse gleich groß sein. Dies kann gleichermaßen unter dem Konzept der Zweierpotenz-Schrittgröße durchgeführt werden.
  • Gemäß einer weiteren praktischen Ausführungsform des Verfahrens kann der binäre Datenvektor in gleich großen Abschnitten in der Mehrzahl der n Speicherbänke gespeichert sein. Folglich kann somit eine gleichmäßige Verteilung von Datenelementen erreicht werden.
  • Gemäß einer Ausführungsform des Verfahrens, bei der eine Schreiboperation in die Speicherbänke behandelt wird, können das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors (d.h. Abschnitt des Hauptkonzepts) und das Bestimmen einer Abfolge von Abschnitten (d.h. das Umstellen) vor der Schreiboperation des binären Datenvektors in die n Speicherbänke durchgeführt werden. Dies kann ein Speichern der Dimensionswerte des Vektors für eine schnelle Schreiboperation garantieren, die im Grunde genommen nur einen Schreibzyklus der Speichereinheit erfordert, und eine „gespiegelte“ Schreiboperation in Bezug auf die Daten ermöglichen.
  • Gemäß einer folgerichtigen Ausführungsform des Verfahrens können das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors (siehe das Hauptkonzept) vor der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden, und wobei das Bestimmen einer Abfolge von Abschnitten (d.h. das Umstellen) nach der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden kann. Dieser Schritt kann erforderlich sein, um die Datenwerte des großen oder hyperdimensionalen Vektors zurück in die ursprüngliche Abfolge zu bringen.
  • Des Weiteren können Ausführungsformen die Form eines zugehörigen Computerprogrammprodukts annehmen, das von einem durch einen Computer nutzbaren oder durch einen Computer lesbaren Medium aus zugänglich ist, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen System zur Ausführung von Anweisungen bereitstellt. Im Sinne der vorliegenden Beschreibung kann es sich bei einem durch einen Computer nutzbaren oder durch einen Computer lesbares Medium um eine beliebige Vorrichtung handeln, die Mittel zum Speichern, Weitergeben, Verbreiten oder Transportieren des Programms enthalten kann, das durch oder in Verbindung mit dem System, der Vorrichtung oder der Einheit zur Ausführung von Anweisungen verwendet werden kann.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
  • Es sollte beachtet werden, dass Ausführungsformen der Erfindung unter Bezugnahme auf unterschiedliche Patentschriftgegenstände beschrieben werden. Insbesondere wurden einige Ausführungsformen unter Bezugnahme auf Ansprüche zur Art des Verfahrens beschrieben, während andere Ausführungsformen unter Bezugnahme auf Ansprüche zur Art der Vorrichtung beschrieben werden. Ein Fachmann kann jedoch aus der vorstehenden und der nachfolgenden Beschreibung entnehmen, dass, sofern nicht anderweitig angegeben, außer beliebigen Kombinationen von Merkmalen, die zu einer Art von Patentschriftgegenstand gehören, auch beliebige Kombinationen zwischen Merkmalen, die zu anderen Patentschriftgegenständen gehören, insbesondere zwischen Merkmalen der Ansprüche zur Art des Verfahrens und Merkmalen der Ansprüche zur Art der Vorrichtung, als im vorliegenden Dokument offenbart anzusehen sind.
  • Die vorstehend definierten Aspekte und weitere Aspekte werden aus den hierin nachfolgend zu beschreibenden Beispielen deutlich und unter Bezugnahme auf die Beispiele von Ausführungsformen erläutert, auf die die Ausführungsformen jedoch nicht beschränkt sind.
  • Bevorzugte Ausführungsformen der Erfindung werden lediglich beispielhaft und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 zeigt ein Blockschema einer grundlegenden Ausführungsform des erfindungsgemäßen Verfahrens zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist.
    • 2 veranschaulicht ein kompliziertes Speicheradressierungsmodell, das bei typischen Matrixmodifikationen erforderlich ist.
    • 3 zeigt ein weiteres Anwendungsgebiet für das vorgeschlagene Konzept.
    • 4 zeigt eine Ausführungsform einer beispielhaften Zuordnung.
    • 5 zeigt ein Beispiel für eine Startadresse für einen Datenvektor, der 9 Bitelemente aufweist.
    • 6 zeigt eine Ausführungsform einer beispielhaften Zuordnungstabelle und einen nächsten Schritt beim Bestimmen der Offsets für die Speicherbänke in einer Speichereinheit.
    • 7 zeigt, wie ein Umstellen der Einträge in den Speicherbänken bestimmt werden kann.
    • 8 veranschaulicht beispielhaft 8 Bänke, die die Speichereinheit darstellen.
    • 9 zeigt als Beispiel eine Vektorstartadresse 256, Schrittgröße 1.
    • 10 zeigt als Beispiel eine Vektorstartadresse 3, Schrittgröße 8.
    • 11 zeigt ein realisierungsformnäheres Flussdiagramm eines Schreibprozesses gemäß dem vorgeschlagenen Grundkonzept.
    • 12 zeigt ein realisierungsformnäheres Flussdiagramm eines Schreibprozesses gemäß dem vorgeschlagenen Grundkonzept.
    • 13 zeigt ein Blockschema einer Speicherzugriffseinheit für einen binären Vektor in einer Speichereinheit, die eine Mehrzahl von Bänken aufweist.
    • 14 zeigt ein Blockschema eines Computersystems, in dem die Speicherzugriffseinheit verwendet werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Kontext dieser Beschreibung werden gegebenenfalls die folgenden Konventionen, Begriffe und/oder Ausdrücke verwendet:
  • Der Begriff „binärer Datenvektor‟ kann ein Feld mit Werten (z.B. Bitwerte, Ganzzahlwerte, Gleitkommawerte, ein Zeichenfeld oder dergleichen) bezeichnen, das als Wörter von Abfolgen von Bits in einem Speichersystem eines Computers adressiert werden soll. Bei derartigen Speichersystemen kann es sich in der Regel um den RAM (random access memory) handeln. Je nach der Wortlänge an einer bestimmten Adresse kann eine vorgegebene Anzahl von Bits in einem Wort des Speichersystems in der Speichereinheit (beide Formen können im gesamten Text als Synonyme verwendet werden) gespeichert sein.
  • Der Begriff „Speichereinheit‟ kann ein größeres Speichermodul eines Computersystems bezeichnen, das in eine Mehrzahl von Bänken unterteilt sein kann. Jede Bank kann eine vordefinierte Anzahl von Speicherzellen enthalten, die in einzeln adressierbaren Wörtern einer bestimmten Größe organisiert sind. Die Speicherbänke der Speichereinheitsbänke können einzeln adressierbar sein, und in jeder Speicherbank können einzelne Wörter adressiert werden.
  • Der Begriff„Speicherbänke‟ kann eine Gruppe von Speicherzellen bezeichnen, wobei die Mehrzahl eine größere Gruppe von Speicherzellen definiert, auf die über eine Bankadresse zugegriffen werden kann. Innerhalb jeder Bank kann eine Mehrzahl einzelner Speicherzellen, die als Wörter organisiert sind, einzeln adressiert werden. In der Regel weist eine Speichereinheit eine Mehrzahl von Speicherbänken auf.
  • Der Begriff Startadresse des binären Datenvektors' kann in der Regel die Adresse eines ersten (oder nullten) Elements eines langen binären Datenvektors bezeichnen.
  • Der Begriff „Zweierpotenz-Schrittgröße‟ kann eine Abfolge von Elementen bezeichnen, die durch 2n Elemente dazwischen getrennt sind. Wenn n = 0, können die folgenden Elemente adressiert werden: 0, 1, 2, 3, ..., da 2° = 1. Wenn n = 1, können die folgenden Elemente adressiert werden: 0, 2, 4, 6, ..., da 2n = 1, und so weiter.
  • Der Begriff „Z-Vektor‟ kann einen Vektor mit einer Größe von log2(n) Bits bezeichnen, der erhalten wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Adresse angewendet wird.
  • Der Begriff „Zuordnungstabelle‟ kann eine Tabelle bezeichnen, die so viele Spalten wie die Anzahl von Bänken aufweist, die in der Speichereinheit enthalten sind. Bei den Elementen in der Tabelle kann es sich um Ganzzahlwerte handeln, die von null bis zur Anzahl von Bänken minus 1 reichen.
  • Im Folgenden wird eine ausführliche Beschreibung der Figuren gegeben. Alle Anweisungen in den Figuren sind schematisch. Als Erstes ist ein Blockschema einer grundlegenden Ausführungsform des erfindungsgemäßen Verfahrens zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit angegeben, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist. Anschließend werden weitere Ausführungsformen sowie Ausführungsformen einer Speicherzugriffseinheit zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit beschrieben, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist.
  • 1 zeigt ein Blockschema einer Ausführungsform des erfindungsgemäßen Verfahrens zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist. - Als gedankliches Bezugsmodell für die folgenden Beispiele kann die Vorstellung dienen, dass der binäre Datenvektor 256 Bit lang ist und dass die Speichereinheit acht Bänke bei einer Breite von 32 Bits für jede Bank und einer Bankgröße von 64 Speicherstellen enthält.
  • Das Verfahren weist ein Empfangen, 102, einer Startadresse des binären Datenvektors - insbesondere einer Startadresse eines Arrays im Adressraum der CPU - und eine Zweierpotenz-Schrittgröße s für die Elemente des binären Datenvektors auf.
  • Das Verfahren weist außerdem ein Bestimmen, 104, von n Offsets, einer für jede der Speicherbänke, auf. Dadurch wird jeder der Offsets bestimmt, 106, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet werden, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird, 108, und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden, 110.
  • Darüber hinaus weist das Verfahren ein Bestimmen, 112, einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors und ein paralleles Zugreifen, 114, auf den binären Datenvektor in den n Speicherbänken der Speichereinheit auf - insbesondere in einem Operationszyklus oder gleichzeitig.
  • 2 veranschaulicht bei 200 ein kompliziertes Speicheradressierungsmodell, das bei typischen Matrixmodifikationen erforderlich ist. Die Figur zeigt ein einfaches Beispiel einer Matrixmultiplikation, bei der die Zeilen einer Matrix A elementweise mit den Spalten einer Matrix B angewendet werden. In dem Fall, in dem Elemente beider Matrizen in aufeinanderfolgende Adressspeicherstellen im linearen Adressraum geschrieben wären, würde auf jede Zeile in der Matrix A unter Verwendung einer Adressschrittgröße 1 und auf jede Spalte in der Matrix B unter Verwendung einer Adressschrittgröße zugegriffen werden, die gleich der Größe der Zeile ist. Da die letztgenannte Schrittgröße bei vielen Speichersystemen problematisch sein kann, wird in der Regel eine sogenannte Matrixtransponierungsoperation angewendet, die ein Umdrehen der Matrixwerte „über die Matrixdiagonale“ einschließt. Infolgedessen kann dann auf eine Spalte unter Verwendung eines Schrittgröße-1-Zugriffsmusters zugegriffen werden, um die resultierende Matrix C zu erzeugen. Dies erfolgt um den Preis, die gesamte Matrix lesen und neu schreiben zu müssen, was außerdem eine erhebliche Menge Speicherbandbreite und Zeit in Anspruch nehmen kann.
  • Ein weiteres Beispiel, das ein weiteres Anwendungsgebiet für das vorgeschlagene Konzept zeigt, ist bei 300 in 3 gezeigt. Es zeigt verschiedene Schablonen, die auf eine 2-D- oder 3-D-Struktur angewendet werden können. Aus den Veranschaulichungen ist ersichtlich, dass das Zugreifen auf alle Elemente, die durch eine einzige Schablone behandelt werden, zwei bzw. drei unterschiedliche Zweierpotenz-Schrittgrößen (für die 2-D- und die 3-D-Strukturen) einschließen würde.
  • Obwohl Zweierpotenz-Zugriffsmuster seit Langem untersucht werden, ist das Problem des ineffizienten Zugriffs noch nicht gelöst worden. Ein Problem besteht darin, dass diese Art des Zugriffs oftmals aufgrund der Organisation und der hervorragenden Adresszuordnung, die bei vielen Speichersystemen verwendeten werden, die oftmals unter Verwendung einer Zweierpotenz-Anzahl von Speicherbänken organisiert sind, zu einer verschlechterten Speicherleistung führt.
  • Bei speziellen Hochleistungs-Datenverarbeitungssystemen (HPC-Systemen) (HPC = high performance computing) können manchmal feststehende/hartverdrahtete Zuordnungen angewendet werden, die auf einem Durchführen einer Modulo-Operation an einer Primzahl oder ähnlichen Ansätzen beruhen, die spezifisch für eine bestimmte Betriebslast sind, da diese unter Umständen anders oder nicht programmierbar sind und daher nach wie vor in ungünstigeren/anormalen Fällen auftreten können. Der letztgenannte Mechanismus trägt außerdem zur Zugriffslatenz bei.
  • Vor dem Übergehen zur nächsten Figur sollten die folgenden Überlegungen zur Vektorverarbeitung und zum Vektorzugriff berücksichtigt werden:
  • Um parallel auf einen Datenvektor in n Bänken zuzugreifen (d.h., die Größe des Datenvektors ist gleich n * w, wobei w die Breite oder die Zugriffsfeinheit einer einzelnen Bank ist), müssen die korrekten Offsets für jede Bank erzeugt werden, was zu einer Gesamtzahl von n Offsets für jeden Datenvektor führt. Wenn zum Beispiel auf einen 8-Element-Datenvektor zugegriffen werden muss, der mit der Adressabfolge 0, 1, 2, 3, 4, 5, 6 und 7 (Schrittgröße 1) in Zusammenhang steht, die auf dem Zuordnungsbeispiel 400 in 4 beruht, muss auf die Speicherstellen an den folgenden Offsets in den 8 jeweiligen Speicherbänken zugegriffen werden: {0, 1, 2, 3, 4, 5, 6, 7}.
  • Die gezeigte Tabelle ist auf das vorstehend erwähnte Problem gerichtet, indem ein flexibles und programmierbares Adresszuordnungsmodell definiert wird, das perfekt zwischen den Zugriffsmustern mit einer Zweierpotenz-Schrittgröße-auf eine Datenstruktur verschachteln kann, die in einem Speichersystem gespeichert ist, das aus mehreren Speicherbänken besteht.
  • Dieses Zuordnungsmodell beruht auf einer kleinen 2-D-Nachschlagetabelle (nicht gezeigt), die durch zwei Werte indiziert wird, die aus der zuzuordnenden Adresse extrahiert wurden. Einer der beiden Indexwerte wird bestimmt, indem Paritätswerte ausgewählter Adressbits bitweise berechnet werden. Das zugrunde liegende Konzept muss jedoch nicht erläutert werden. Die Figur sollte lediglich zeigen, dass für ein perfektes Verschachteln mehrerer Zweierpotenz-Zugriffsmuster auch ein Umstellen der Abfolge von Speicherstellen erforderlich sein kann.
  • Die mit Schraffuren markierten „zugeordneten Adressen“ in 4 veranschaulichen, dass Datenvektoren mit einer Größe gleich der Anzahl von Speicherbänken (in dem Beispiel 8 Datenelemente), die mit ausgerichteten Adressabfolgen in Zusammenhang stehen, die eine Zweierpotenz-Schrittgröße einschließen, über alle Speicherbänke hinweg perfekt verschachtelt sind und auf diese somit als ein einziger Datenvektor zugegriffen werden kann (d.h. Lesen oder Schreiben), indem auf alle Speicherbänke parallel zugegriffen wird, wodurch genau ein Zugriff auf jede Bank erforderlich ist. Zum Beispiel kann in 4 parallel auf jeden Block ausgerichteter Adressen zugegriffen werden, der eine Schrittgröße 1 (z.B. Adressen 0, 1, 2, 3, 4, 5, 6, 7), eine Schrittgröße 2 (z.B. Adressen 0, 2, 4, 6, 8, 10, 12, 14), eine Schrittgröße 4 ((z.B. Adressen 0, 4, 8, 12, 16, 20, 24, 28), eine Schrittgröße 8 (z.B. Adressen 0, 8, 16, 24, 32, 40, 48, 56), eine Schrittgröße 16 (z.B. Adressen 0, 16, 32, 48, 64, 80, 96, 112), eine Schrittgröße 32 (z.B. Adressen 0, 32, 64, 96, 128, 160, 192, 224) einschließt, und so weiter. Kein erneuter Zugriff einer Bank ist erforderlich, da die Datenelemente, auf die zugegriffen werden soll, zwischen den Bänken gleichmäßig verteilt sind.
  • Im Falle einer Schreiboperation stellt Bank 0 das erste Element des Datenvektors (zugeordnete Adresse 0), Bank 1 das zweite (zugeordnete Adresse 1) bereit, und so weiter. In ähnlicher Weise werden im Falle einer Schreiboperation die Elemente des Datenvektors in sequenzieller Reihenfolge in die Bänke geschrieben. Wenn stattdessen auf einen 8-Element-Datenvektor zugegriffen wird, der mit der Adressabfolge 0, 2, 4, 6, 8, 10, 12 und 14 (Schrittgröße 2) in Zusammenhang steht, muss parallel auf die folgenden Offsets in den jeweiligen 8 Bänken zugegriffen werden: {0, 8, 2, 10, 4, 12, 6, 14}. In diesem Beispiel wird im Falle einer Leseoperation das erste Element des Datenvektors (zugeordnete Adresse 0) durch die Bank 0 bereitgestellt, das zweite Element (zugeordnete Adresse 2) wird durch die Bank 2 bereitgestellt, das fünfte Element (zugeordnete Adresse 8) wird durch die Bank 1 bereitgestellt und so weiter. Es wird klar sein, dass die Daten, die aus den Bänken gelesen werden, umgestellt werden müssen, um den gewünschten Datenvektor wiederherzustellen, der die Elemente in der Reihenfolge ihrer zugeordneten Adressen (0, 2, ..., 14) muss. Des Weiteren müssen beim Schreiben des Datenvektors die Elemente ebenfalls umgestellt werden, um jedes Element gemäß der Art und Weise korrekt zu schreiben, in der seine entsprechende Adresse in den Speicherbänken zugeordnet ist.
  • Je nach der Adressabfolge, die mit den Elementen des Datenvektors in Zusammenhang steht, kann ein Bereich unterschiedlicher Reihenfolgen bestehen, in denen die einzelnen Bank-Offsets erzeugt werden müssen und in denen die Lese- und Schreibdaten umgestellt werden müssen.
  • Ein Brute-Force-Ansatz würde verwendet werden, um die Adresse für jedes Element im Datenvektor unabhängig von den anderen Elementen zu erzeugen und es unabhängig einer Bankkennung und einem Bank-Offset zuzuordnen, was zu insgesamt n Adresserzeugungs- und Adresszuordnungsfunktionen führen würde. Die Ausgabe der Zuordnungsfunktionen (insbesondere die Bankkennungen) könnten dann verwendet werden, um zwei n-zu-n-Umstellungseinheiten (n-to-n shuffle units) zum Schreiben und Lesen der Datenvektoren zu steuern, was ermöglichen würde, die Elemente jedes Datenvektors in einer beliebigen möglichen Reihenfolge umzustellen.
  • Die Komplexität dieses Ansatzes nimmt jedoch sowohl in Bezug auf Leistung als auch auf Bereichskosten mit dem Wert von n schnell zu, was die Anwendung des Brute-Force-Ansatzes grundsätzlich auf kleine Werte von n beschränkt, zum Beispiel auf 4 oder 8.
  • Größere Datenvektoren sind jedoch sehr wichtig, da diese von ausschlaggebender Bedeutung sind, um die erforderliche Effizienz und Leistung bei der Berechnung zu erreichen. Dies wird durch die breiten Datenpfade noch verstärkt, die neuere Speichertechnologien bieten (z.B. HBM - high bandwidth memory).
  • Zu diesem Zweck werden die folgenden Innovationen behandelt:
    1. 1. auf Vektoren beruhende Offset-Erzeugung für einen ganzen Datenvektor, der alle Bänke parallel behandelt;
    2. 2. effizientes Umstellen der Datenelemente, um diese in die Speicherbänke zu schreiben;
    3. 3. effizientes Umstellen der Datenelemente, nachdem diese aus den Speicherbänken gelesen wurden;
    4. 4. Auswahl der Adressbits, die zum Berechnen eines jeden der Paritätsbits verwendet werden.
  • Bei der auf Vektoren beruhenden Offset-Erzeugung ist Folgendes zu beobachten: Bei einem beliebigen Datenvektor mit n Elementen, die mit einer ausgerichteten Adressabfolge mit einer beliebigen Zweierpotenz-Schrittgröße in Zusammenhang stehen, ist der Unterschied zwischen den n Adressen auf log2n benachbarte Bitpositionen in den Adressen beschränkt und behandelt alle n möglichen Werte dieser log2n Bitpositionen.
  • Wenn die Paritätsbits in einer bitverschachtelten Weise aus der Adresse extrahiert werden, werden die in eine beliebige ausgerichtete Adresssequenz mit einer Zweierpotenz-Schrittgröße eingeschlossenen n Adressen auf der Grundlage der Bankkennungen zugeordnet, die in einer einzelnen Zeile in der Nachschlagetabelle angegeben sind.
  • 5 zeigt ein Beispiel 500 für eine Startadresse ,a' 502 für einen Datenvektor, der 9 Bitelemente a0, a1, ..., a8 enthält. Die MSB (most significant bits, höchstwertigen Bits) werden als Vektor Y verwendet, der später benötigt wird und eine Größe von log2(n) (n = 8) hat. Die Bits a0, a1, ..., a5 sind mit Maskenvektoren mo, m1 und m2 ((log2(n) = 3) UNDverknüpft, woraus sich die log2(n) Vektoren 504 auf der rechten Seite der Figur ergeben. Es kann angemerkt werden, dass die Maskenvektoren m0, m1 und m2 an Positionen des Y-Abschnitts der Startadresse a 502 „0“ enthalten.
  • Für jeden der Vektoren 504 wird ein Paritätsbit berechnet, was zu X0, X1, X2 führt; dies kann auch als Anwenden von XODER-Funktionen interpretiert werden. X0, X1, X2 werden als Dimensionen eines X-Vektors behandelt. Danach wird eine Bitebenen-XODER-Funktion auf X und Y angewendet, was zu einem Vektor Z derselben Größe oder Dimension (log2(n)) führt.
  • Hierfür zeigt 6 bei 600 einen nächsten Schritt beim Bestimmen der Offsets für die Speicherbänke in der Speichereinheit.
  • Es kann angemerkt werden, dass die Zuordnungstabelle die Eigenschaft hat, dass der Wert, der im Zusammenhang mit einer bestimmten Kombination aus den X- und Y-Werten gespeichert ist, dem XODER-Produkt dieser X- und Y-Werte gleicht. Dies führt wiederum zu der folgenden Eigenschaft: Wenn eine Bankkennung i in Spalte j einer bestimmten Zeile auftritt, tritt die Bankkennung j in Spalte i dieser Zeile ebenfalls auf (diese Werte können als vertauscht bezeichnet werden).
  • Zum Beispiel weist die Zeile, die Y = 6 in der Zuordnungstabelle 602 entspricht, eine Bankkennung 7 in Spalte 1 auf (was X = 1 entspricht). Dieselbe Zeile weist nun eine Bankkennung 1 in Spalte 7 auf (X = 7). Diese beiden Speicherstellen werden als Paar „Vertauschung“-Speicherstellen bezeichnet. Wegen der vorstehend erwähnten Eigenschaft „Vertauschen“ können, wie nun veranschaulicht wird, die Bank-Offsets direkt aus der Nachschlagetabellenzeile entnommen werden, wenn die aus den n Adressen extrahierten Paritätswerte in derselben Reihenfolge wie die Werte der log2(n) benachbarten Bitpositionen vorliegen würden, an denen sich die n Adressen unterscheiden.
  • Das Binäräquivalent von Vektor Z wird als Zeilenindex zur Zuordnungstabelle 602 verwendet. Jeder Binärwert der Zeile der Zuordnungstabelle 602 wird an einer definierten Position verwendet und ersetzt log2(n) Bits der Startadresse. Dies ist im unteren Teil von 6 veranschaulicht. In der Adresse a (vergleiche 502/5; Abschnitt a0, a1, ..., a5) werden die bei Bit-Offset 3 beginnenden log2(n) Bits durch das Binäräquivalent eines jeweiligen Zeileneintrags ersetzt; „3“ ergibt z.B. 011 (binär), wie im unteren linken Teil von 6 zu sehen ist. Dieses Prinzip wird auf jedes Element in der ausgewählten Zeile der Zuordnungstabelle angewendet. Es kann angemerkt werden, dass aus Gründen der Verständlichkeit nur die ersten beiden und die achte Adresse/Zeileneintrag-Kombination gezeigt sind. An diesem Punkt wurden die Offset-Werte für die einzelnen Bänke bestimmt.
  • Es kann außerdem angemerkt werden, dass im Falle eines 8-Bit-Beispiels die Zuordnungstabelle - d.h. Nachschlagetabelle - nur 8 * 8 * 3 Bits = 24 Bytes erfordert. Ein Nachschlagen von Einträgen in einer derartigen winzigen Tabelle bildet nur eine vernachlässigbare Anforderung im Vergleich zu den enormen Vorteilen, die das vorgeschlagene Verfahren darstellt.
  • In einem nächsten Schritt - vergleiche 7 - muss ein Umstellen der Einträge in den Speicherbänken bestimmt werden. Hierzu wird ein erneuter Aufruf des Z-Vektors benötigt. Aufgrund der Tatsache, dass es sich bei Z um einen binären Vektor handelt, sind die Elemente des Z-Vektors entweder „0“ oder „1“. Somit ist die Vertauschung, die durch die Bits von Vektor Z gesteuert wird, wie folgt definiert: Bit = 1 bedeutet Vertauschung eines Paares von Einträgen in der Startadresse; Bit = 0 bedeutet „kein Vertauschen“.
  • Dies ist durch nach unten gerichtete Pfeile (keine Vertauschung) in 7 oder gekreuzte Pfeile (Vertauschen) gezeigt, was beginnend mit dem LSB (least significant Bit, niedrigstwertiges Bit) des Z-Vektors beginnend nacheinander in einer Abfolge von log2(n) Schritten angewendet wird, wie in 6 veranschaulicht.
  • Dies kann nun in einem Beispiel 800 von 8 Bänken veranschaulicht werden, die die Speichereinheit 802 in 8 darstellen. Zum Beispiel schließt eine Adressabfolge 64, 65, 66, 67, 68, 69, 70 und 71 (die eine Schrittgröße 1 einschließt) einen Y-Wert gleich 1 ein und wird daher gemäß der Zeile 1 (Y = 1) in der Zuordnungstabelle 804 zugeordnet: Adresse 64 (vergleiche 808) wird in Bank 1 zugeordnet (vergleiche 806), Adresse 65 in Bank 0, Adresse 66 in Bank 3, Adresse 67 in Bank 2, Adresse 68 in Bank 5, Adresse 69 in Bank 4, Adresse 70 in Bank 7 und Adresse 71 in Bank 6. Die jeweiligen Offsets gleichen den 6 niedrigstwertigen Adressbits, bei denen es sich handelt um: 0, 1, 2, 3, 4, 5, 6 und 7. Die log28 = 3 Bitpositionen, an denen sich diese acht Adressen unterscheiden (wie vorstehend erörtert), befinden sich an den Adressbitpositionen 0, 1 und 2, die ebenfalls den 3 niedrigstwertigen Bits der Bank-Offsets gleichen. Bei den vorhergehenden acht Offsets gleichen die Werte an diesen Bitpositionen 0, 1, 2,3, 4, 5, 6 und 7 (diese gleichen den Offset-Werten, da die anderen Offset-Bits in diesem Beispiel null betragen). Wegen der Art und Weise, in der die Nachschlagetabelleninhalte erzeugt werden, gleichen die Werte dieser sich unterscheidenden log2(n) Bitpositionen dem Wert der Paritätsbits.
  • Auf der Grundlage der vorstehend erwähnten Eigenschaft „Vertauschung“ der Nachschlagetabelleninhalte lässt sich ableiten, dass, wenn eine Adresse auf der Grundlage des entsprechenden Nachschlagetabellenelements einer bestimmten Bankkennung zugeordnet werden soll, die diesem Element entsprechende Vertauschungsspeicherstelle den Wert der Paritätsbits für diese Adresse enthält, die gleich dem Wert der sich unterscheidenden log2(n) Bitpositionen ist. Dies lässt darauf schließen, dass ein Offset-Vektor erzeugt werden kann, indem der Y-Wert für die erste Adresse in einer ausgerichteten Adressabfolge bestimmt wird und dann n Kopien des aus dieser ersten Adresse entnommenen Offsets erhalten werden (indem der niedrigstwertige Teil genommen wird, wie vorstehend beschrieben), indem die jeweiligen Zeilenwerte, die dem Y-Wert für die erste Adresse in der Abfolge entsprechen, an den sich unterscheidenden log2(n) Bitpositionen ersetzt werden.
  • Diese Eigenschaft gilt für eine beliebige ausgerichtete Abfolge von n Adressen, die eine beliebige Zweierpotenz-Schrittgröße einschließen. Sie ist nicht auf Zweierpotenz-Schrittgrößen beschränkt, bei denen die n sich unterscheidenden Bitpositionen - wie vorstehend erörtert - die Bits des X-Feldes in einer „ausgerichteten“ Weise behandeln (d.h. „Start“ bei Bitposition X0, gefolgt von Position X1 und so weiter). Dies liegt daran, dass die Werte beliebiger n aufeinanderfolgender Bitpositionen stets zum Indizieren unterschiedlicher Einträge in derselben Tabellenzeile führen.
  • Die beachtenswerte Folgerung besteht darin, dass auf der Grundlage dieser Eigenschaft die Werte der n Bank-Offsets direkt abgerufen werden können, indem die Werte aus der Zeile, die durch den aus der Adresse „a‟ abgeleiteten Y-Wert indiziert ist, gegen den Offset-Wert ausgetauscht werden, der aus der Adresse a an den n Bitpositionen abgeleitet wurde, die dem log2-Wert der Zweierpotenz-Schrittgröße entsprechen. Dies ist in dem Flussdiagramm in 11 dargestellt, das die Schritte zum effizienten Erzeugen der Offsets für alle Bänke zeigt, indem die folgenden Schritte angewendet werden: 1) nur die erste Adresse der Adressabfolge zuordnen, d.h. Parität berechnen, Y-Wert ableiten, Offset ableiten, 2) einen Tabellennachschlagevorgang entsprechend Y durchführen, 3) ein paralleles Verschieben und eine bitweise erfolgende ODER-Funktion durchführen, um die tatsächlichen Bank-Offsets zu erhalten.
  • Vor der Hinwendung zu den Flussdiagrammen sollen zwei zusätzliche Beispiele einer Zuordnung angegeben werden. 9 zeigt ein Beispiel 900 als Vektorstartadresse 256, Schrittgröße 1 (Adressen 256, 257, 258, ..., 263). Da 256 gleichbedeutend mit 100000000b ist, können der Y-, X- und Z-Vektor bestimmt werden als Y = 100b, X = 000b, Z = 100b, sodass Zeile 4 (100b) in der Zuordnungstabelle (vergleiche 602, 6) entspricht: 4 5 670 12 3. Somit lauten die Bank-Offsets: 4, 5, 6, 7, 0, 1, 2, 3 (jeweils, für Bank 0 bis 7). Das Datenvektor-Umstellen (data vector shuffling) bei Z = 100b setzt voraus, dass die ersten vier Einträge mit den zweiten vier Einträgen vertauscht werden.
  • 10 zeigt ein Beispiel 1000 als Vektorstartadresse 3, Schrittgröße 8 (somit Adressen 3, 11, 19, ..., 59). Wegen der Startadresse = 3 = 000000011b ergibt sich Y = 000b, X = 011b, Z = 011b. Zeile 3 (011b) in der Zuordnungstabelle 602 entspricht: 3 2 1 0 7 6 5 4. Daher können die Bank-Offsets bestimmt werden als: 27(011011b), 19(010011b), 11, 3, 59, 51, 43, 35 (jeweils, für Bank 0 - 7).
  • Der Abschnitt für das Datenvektor-Umstellen wird bestimmt durch: Z = 011b setzt voraus, dass jedes Paar benachbarter Einträge in einem ersten Schritt zuerst vertauscht wird, gefolgt durch das Vertauschen des ersten Blocks aus zwei Einträgen mit dem zweiten und des dritten Blocks aus zwei Einträgen mit dem vierten. Die Ergebnisse sind in 8 mit Stielmarkierungen neben den jeweiligen Bankeinträgen gezeigt.
  • 11 zeigt ein Flussdiagramm 1100 einer Erzeugung von Zugriffs-Offsets für einen Leseprozess in einer im Vergleich zu 1 realisierungsnäheren Form.
  • Kurz gesagt, Einzelheiten werden im Folgenden ebenfalls erläutert, der Ablauf von Aktionen geschieht wie folgt: Zuerst wird die Adresse „a‟ erhalten 1102. Danach werden die Parität, das Y-Feld und ein Anfangs-Offset für die Adresse „a‟ abgeleitet 1104. Ein Basis-Offset wird für alle Bänke erhalten 1106, indem auf der Grundlage des Y-Feldes (oder der Parität) auf eine Zeile in der Zuordnungstabelle zugegriffen wird. Als Nächstes wird der Basis-Offset für alle Bänke auf Bitpositionen verschoben 1108, die der Ziel-Zweierpotenz-Schrittgröße entsprechen. Schließlich wird der Anfangs-Offset zusammengeführt 1110, der für die Adresse „a‟ mit verschobenen Basis-Offsets bestimmt wurde, die aus der Zuordnungstabelle erhalten wurden, um Offsets für alle Speicherbänke zu erhalten.
  • Diese kompakte Flussdiagrammdarstellung wird in den folgenden Absätzen erneut erörtert:
  • Ein effizientes Umstellen der Datenvektorelemente, um diese in die Speicherbänke der Adressen in einer Adressabfolge zu schreiben, könnte in einer beliebigen Weise über n Speicherbänke hinweg zugeordnet werden, dann würde eine Gesamtmenge von n! Möglichkeiten bestehen, in denen die entsprechenden Schreibdaten umgestellt werden müssen, um jedes Datenelement in die korrekte Bank zu schreiben. Bei größeren Werten von n nimmt dies schnell zu und würde sehr große n-zu-n Umstellungseinheiten erfordern.
  • Bei den vorstehend erörterten Zuordnungsmodellen kann das Schieben jedoch wesentlich vereinfacht werden. Dies wird nun unter Verwendung der vorstehend erwähnten beispielhaften Zuordnungsmodelle veranschaulicht.
  • Im Folgenden wird angenommen, dass die Paritätswerte (d.h. X) und die Offset-Werte identisch geordnet sind. Dies ist der Fall, wenn das niedrigstwertige, sich unterscheidende Adressbit durch das niedrigstwertige (X)-Paritätsbit, das zweite, sich unterscheidende Adressbit durch das nächste Paritätsbit behandelt wird und so weiter. Wie diese Einschränkung bei Zugriffen mit zufälliger Zweierpotenz-Schrittgröße eingehalten werden kann, wird nachstehend in dem Absatz weiter beschrieben, in dem die Auswahl von Adress-/Paritätsbits behandelt wird.
  • Wegen der Art, in der die Zuordnungstabellen ausgelöst werden (Eigenschaft „Vertauschen“), wird das Umstellen ähnlich wie die Erzeugung des Offset-Vektors der Bank durch eine einzige Zeile in der Nachschlagetabelle bestimmt. Eine interessante Eigenschaft der Zuordnung ist aus der Zuordnungstabelle in 6 direkt ersichtlich: jede Zeile in der Zuordnungstabelle kann aus der ersten Zeile (die Y = 0 entspricht) abgeleitet werden, indem die Zeilenelemente in einer „ausgerichteten Weise“ vertauscht werden, wobei Blöcke verwendet werden, die k aufeinanderfolgende Zeilenelemente behandeln, wobei keine Zweierpotenz mit einem Wert im Bereich von 2 bis zur Zeilengröße n/2 ist.
  • Zum Beispiel kann in 6 die Y = 1 entsprechende Zeile aus der ersten Zeile abgeleitet werden, die Y = 0 entspricht, indem vier Blöcke mit jeweils 2 Elementen {0, 1}, {2, 3}, {4, 5}, {6, 7} identifiziert und alle Elemente in jedem Block vertauscht werden. Die nächste Zeile, die Y = 2 entspricht, kann abgeleitet werden, in dem zunächst zwei Blöcke mit jeweils 4 Elementen, {0, 1, 2, 3} und {4, 5, 6, 7}, abgeleitet werden und dann zwei Blöcke mit einer Größe von 2 Elementen in jedem dieser Blöcke, {0, 1} und {2, 3} bzw. {4, 5} und {6, 7}, identifiziert und jeder dieser beiden 2-Element-Blöcke innerhalb eines 4-Element-Blocks vertauscht wird. In 6 ist ersichtlich, dass alle verbleibenden Zeilen durch Vertauschen auf der Ebene von 4-Element-Blöcken oder auf der Ebene von 2-Element-Blöcken innerhalb eines 4-Element-Blocks oder durch Kombinationen aus beidem aus der ersten Zeile abgeleitet werden können.
  • Eine weitere wichtige Eigenschaft, die aus den Beispielen in den 6 und 8 ersichtlich ist, besteht darin, dass das höchstwertige Bit des Z-Vektors zum Bestimmen verwendet werden kann, ob Vertauschungsoperationen auf der Ebene der größten Blockgröße bei dieser Zuordnungstabelle durchgeführt werden müssen, der nächste Z-Vektor verwendet werden kann, um dies bei der Ebene der zweitgrößten Blockgröße zu bestimmen und so weiter.
  • Wegen der Eigenschaft „Vertauschung“ können die vorstehend erörterten Eigenschaften nun direkt zum Umstellen der Schreibdaten verwendet werden, indem dasselbe Blockvertauschungskonzept in der folgenden Weise verwendet wird: 1) der Z-Wert wird für die Startadresse einer Abfolge aus n Adressen bestimmt (wie vorstehend beschrieben), 2) wenn das höchstwertige Bit des Z-Wertes gesetzt ist, werden die n Schreibdatenelemente auf der Ebene der größten Blockgröße vertauscht, die n/2 beträgt, 3) wenn das nächstwertige Bit des Z-Wertes gesetzt ist, werden die n Schreibdatenelemente auf der Ebene der nächsten Blockgröße vertauscht, die n/4 beträgt, 4) und so weiter. Dies ist durch das Flussdiagramm in 12 veranschaulicht. Bei einem Speichersystem mit 4, 8 oder 16 Bänken bedeutet dies, dass nur 2, 3 bzw. 4 unterschiedliche 2-Wege-Umstellungsfunktionen (2-way shuffle functions) erforderlich sind, was im Vergleich zu einer vollen n-zu-n-Umstellungseinheit eine enorme Vereinfachung ist.
  • Infolgedessen und ebenfalls kurz gesagt, die Schreiboperation kann im Flussdiagramm 1200 von 12 zusammengefasst werden. Als Erstes wird die Adresse „a‟ erhalten 1202. Bei Schritt 1204 werden zur Parität und das Z-Feld abgeleitet. Als Nächstes werden rechte Datenelemente mit einer Feinheit von n/2 Blockgröße auf der Grundlage der Bitposition (log2(n))-1 des Z-Feldes umgestellt 1206. Bei Schritt 1208 geschieht erneut dasselbe, jedoch mit einer Feinheit von n/4 Blockgröße auf der Grundlage der Bitposition (log2(n))-2 des Z-Feldes und so weiter. Dieser Prozess wird wiederholt - angezeigt durch die Strichlinienpfeile - Antwortschritt 1210: Umstellen der rechten Datenelemente mit einer Feinheit der Blockgröße von 2 auf der Grundlage der Bitposition 0 des Z-Feldes.
  • Die wesentlichen Eigenschaften der neuen Umstellungsfunktion (shuffle function) sind:
    1. 1. Sie kann unter Verwendung von lediglich log2(n) Umstellungsfunktionen realisiert werden, wobei jeweils nur 2 Eingänge umgestellt werden (die jeweils höchstens n * w Multiplexer mit 2 Eingängen erfordern, wobei w die Breite jedes Datenelements ist).
    2. 2. Jede Umstellungsfunktion wird durch ein Bit des Z-Vektors oder der Paritätsfunktion gesteuert (die jeweils log2(n) Bits breit sind).
  • Wenn für jedes Schreibdatenelement einzelne Schreibaktivierungssignale verwendet werden, müssen diese Schreibaktivierungssignale in derselben Weise umgestellt werden, um das korrekte Schreibsignal bei jedem Schreibdatenelement anzuwenden.
  • 3. Effizientes Umstellen der Datenelemente, nachdem diese aus den Speicherbänken gelesen wurden: Wegen der „Vertauschung“-Eigenschaften der zuvor erörterten Zuordnungsmodelle kann dasselbe Umstellungskonzept (shuffle concept) zum Umstellen der Lesedaten verwendet werden, wie vorstehend bei den Schreibdaten beschrieben wurde.
  • Wenn Chipfläche oder FPGA-Ressourcen stark eingeschränkt sind, ist es außerdem möglich, einen Satz von log2(n) Umstellungseinheiten für Speicher-Ports zu verwenden, die entweder zum Lesen oder Großschreibung von Daten verwendet werden. Offensichtlich erfordert dies einen Eingangsmultiplexer vor den Umstellungsstufen (shuffle stages), um zwischen den Lese- oder Schreibdatenelementen auszuwählen, die umgestellt werden müssen.
  • 4. Auswahl der Adressbits, die zum Berechnen eines jeden der Paritätsbits verwendet werden:
    • Wie vorstehend angegeben, wird bei den Umstellungskonzepten für Schreib- und Lesedaten angenommen, dass die Paritätswerte (X) und die Offset-Werte identisch geordnet sind. Dies erfordert, dass das niedrigstwertige, sich unterscheidende Adressbit in einer ausgerichteten Adressabfolge durch das niedrigstwertige (X)-Paritätsbit, das zweite, sich unterscheidende Adressbit durch das nächste Paritätsbit behandelt wird und so weiter.
  • Ein Beispiel, für das dies nicht gilt, wäre eine Adressabfolge 0, 2, 4, 6, 8, 10, 12 und 14, die eine Schrittgröße von 2 einschließt, für das in 8 veranschaulichte Modell. In diesem Fall handelt es sich bei den log2(n) = log28 = 3 sich unterscheidenden Bitpositionen zwischen den acht Adressen um die Bitpositionen 1, 2 und 3. Da diese Bitpositionen nicht den X-Bitpositionen in derselben Reihenfolge entsprechen, sind die sich ergebenden X-Werte nicht in derselben Weise wie die Adressen geordnet: X = 0 für Adresse 0, X = 2 für Adresse 2, X = 4 für Adresse 4, X = 6 für Adresse 6, X = 1 für Adresse 8, X = 3 für Adresse 10, X = 5 für Adresse 12 und X = 7 für Adresse 14. Obwohl die Adressen über alle Speicherbänke hinweg ohne Konflikt perfekt verschachtelt sind, reichen die vorstehend erwähnten vereinfachten Umstellungsoperationen nicht aus.
  • Dies kann behoben werden durch entweder 1) Hinzufügen von zusätzlichen Umstellungsschichten (shuffle layers) oder durch 2) Anwenden einer anderen Auswahl der Adressbits, die zum Erzeugen des Paritätsvektors X verwendet werden. Die erste Option würde die Hinzufügung von (log2(n))-1 zusätzlichen Schichten erfordern, da (log2(n))-1 Arten vorliegen können, in denen die log2(n) sich unterscheidenden Bitpositionen in einer Adressabfolge mit einer Zweierpotenz-Schrittgröße nicht „mit“ der Art ausgerichtet sind, in der die X-Feldbits erzeugt werden. Bei dem Beispiel in 8 würden dies (log2(n)) - 1 = 1 zusätzliche Umstellungsschicht erfordern.
  • Die zweite Option würde darin bestehen, die Art zu ändern, in der die X-Bits aus der Adresse abgeleitet werden.
  • Bei dem vorstehend erwähnten Beispiel kann die Position der beiden X-Bits, X0 und X1, umgekehrt werden, um dieselben Ergebnisse zu erhalten. Alternativ können die X-Bits nur aus Adressbitpositionen abgeleitet werden, die mit Zweierpotenz-Schrittgrößen in Zusammenhang stehen, die relevant sind. Dadurch können dieselben Schreib- und Umstellungskonzepte von Lesedaten wie vorstehend erörtert verwendet werden. Diese Auswahl kann getroffen werden, indem der Maskenvektor entsprechend für jede X-Bitposition ausgewählt wird, die auf die Adresse angewendet wird, um die Adressbits auszuwählen, über die hinweg die Parität berechnet wird (ein maskiertes Adressbit liefert null, was die auf XODER beruhende Paritätsberechnung nicht verändert).
  • Außerdem müssen zu diesem Zweck alle anderen Adressbitpositionen, die nicht in Zusammenhang mit den sich unterscheidenden Bits in einer ausgerichteten Adressabfolge stehen, nicht Teil der Paritätsberechnung sein (ausgenommen beim tabellenlosen Ansatz: Alle Bits, die nicht Teil des Bank-Offsets sind, müssen durch die Paritätsberechnung behandelt werden).
  • Aus Gründen der Vollständigkeit zeigt 13 eine schematische Blockdarstellung der Speicherzugriffseinheit 1400 zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist. Die Speicherzugriffseinheit 1400 weist eine Empfangseinheit 1402 auf, die so gestaltet ist, dass eine Startadresse des binären Datenvektors und eine Zweierpotenz-Schrittgröße s für die Elemente des binären Datenvektors empfangen werden.
  • Die Speicherzugriffseinheit 1400 weist zusätzlich ein erstes Bestimmungsmodul 1404 auf, das zum Bestimmen von n Offsets ausgelegt ist, einer für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet werden, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden.
  • Die Speicherzugriffseinheit 1400 weist außerdem ein zweites Bestimmungsmodul 1406 auf, das zum Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors ausgelegt ist, und eine grundlegende Zugriffseinheit 1408, die zum parallelen Zugreifen auf den binären Datenvektor in den n Speicherbänken der Speichereinheit ausgelegt ist.
  • Ausführungsformen der Erfindung können unabhängig von der Plattform, die zum Speichern und/oder Ausführen von Programmcode geeignet ist, zusammen mit praktisch jeder Art von Computer realisiert werden. 14 zeigt als Beispiel ein Datenverarbeitungssystem 1500, das zum Ausführen von Programmcode im Zusammenhang mit dem vorgeschlagenen Verfahren geeignet ist, und/oder in dem die hierin vorgeschlagenen Adressierungsmodelle für Speichereinheiten realisiert werden können.
  • Das Datenverarbeitungssystem 1500 ist lediglich ein Beispiel eines geeigneten Computersystems, und es ist nicht beabsichtigt, eine beliebige Einschränkung hinsichtlich des Verwendungsumfangs oder der Funktionalität von hierin beschriebenen Ausführungsformen der Erfindung anzudeuten, unabhängig davon, ob das Computersystem 1500 realisierbar ist und/oder eine beliebige der hierin vorstehend dargelegten Funktionalitäten durchführen kann. Bei dem Computersystem 1500 liegen Komponenten vor, die in Verbindung mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystemumgebungen oder -konfigurationen betriebsfähig sind. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, -umgebungen und/oder - konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 1500 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, Thick-Clients, handgehaltene Einheiten oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen. Das Computersystem/der Server 1500 kann im allgemeinen Kontext von auf einem Computersystem - ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem 1500 ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 1500 kann in verteilten Cloud-Computing-Umgebungen praktisch realisiert sein, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, unter anderem auf Hauptspeichereinheiten.
  • Wie in der Figur gezeigt, ist der Computer/Server 1500 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/des Servers 1500 können, ohne auf diese beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 1502, ein Systemspeicher 1504 und ein Bus 1506 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 1504 mit dem Prozessor 1502 verbindet. Der Bus 1506 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder ein lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen ein ISA-Bus (ISA = Industry Standard Architecture), ein MCA-Bus (MCA = Micro Channel Architecture), der EISA-Bus (EISA = Enhanced ISA), ein lokaler VESA-Bus (VESA = Video Electronics Standards Association) und ein PCI-Bus (PCI = Peripheral Component Interconnects). Das Computersystem/der Server 1500 beinhaltet in der Regel eine Vielfalt von Medien, die durch Computersysteme gelesen werden können. Bei derartigen Medien kann es sich um beliebige verfügbarer Medien handeln, auf die das Computersystem/der Server 1500 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nicht-flüchtige Medien, Wechselmedien und nicht-wechselbare Medien.
  • Zu dem Systemspeicher 1504 können durch Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 1508 und/oder Cache 1510 gehören. Das Computersystem/der Server 1500 kann ferner andere wechselbare/nicht-wechselbare, flüchtige/nicht-flüchtige Computersystemspeichermedien beinhalten. Lediglich als Beispiel kann ein Speichersystem 1512 zum Lesen von einem und Schreiben auf ein nicht-wechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und in der Regel als „Festplatte‟ bezeichnet) bereitgestellt sein. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine wechselbare nicht-flüchtige Magnetplatte (z.B. eine „Diskette‟) und ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine wechselbare. nicht-flüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In derartigen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 1506 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben ist, kann der Speicher 1504 mindestens ein Programmprodukt beinhalten, das eine Gruppe (z.B. mindestens eines) von Programmmodulen enthält, die so konfiguriert sind, dass die Funktionen von Ausführungsformen der Erfindung ausgeführt werden.
  • Das Programm/Dienstprogramm, das eine Gruppe (mindestens eines) von Programmmodulen 1516 enthält, kann als Beispiel und nicht als Einschränkung im Speicher 1504 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes der Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine bestimmten Kombination davon kann bzw. können eine Realisierungsform einer Vernetzungsumgebung beinhalten. Die Programmmodule 1516 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus, wie hierin beschrieben.
  • Das Computersystem/der Server 1500 kann außerdem mit einer oder mehreren externen Einheiten 1518 Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 1520 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 1500 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 1500 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 1514 stattfinden. Darüber hinaus kann das Computersystem/der Server 1500 über einen Netzwerkadapter 1522 mit einem oder mehreren Netzwerken Daten austauschen, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), mit einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z.B. dem Internet). Wie abgebildet tauscht der Netzwerkadapter 1522 über den Bus 1506 Daten mit den anderen Komponenten des Computersystems/Servers 1500 aus. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 1500 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Festplattenlaufwerksanordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Darüber hinaus kann die Speicherzugriffseinheit 1400 zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, mit dem Bussystem 1506 verbunden sein.
  • Die vorliegende Erfindung kann als System, Verfahren und/oder Computerprogrammprodukt verkörpert sein. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem Medium kann es sich um ein elektrisches, ein magnetisches, ein optisches, ein elektromagnetisches System, ein Infrarot- oder ein Halbleitersystem eines Verbreitungsmediums handeln. Zu Beispielen eines computerlesbaren Mediums können ein Halbleiter- oder Festkörperspeicher, ein Magnetband, eine austauschbare Computerdiskette, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte und eine optische Platte gehören. Zu aktuellen Beispielen optischer Platten gehören Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), einer wiederbeschreibbaren Compact Disc (CR-R/W), einer DVD und einer Blue-ray-Disc.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, auf der Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen aufbewahrt und gespeichert sein können. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden handeln. Eine nicht erschöpfende Liste genauerer Beispiele des durch einen Computer lesbaren Speichermediums beinhaltet Folgendes: eine transportable Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen transportablen Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versatile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen oder beliebige geeignete Kombinationen des Vorstehenden. Ein durch einen Computer lesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale an sich handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder um elektrische Signale, die über ein Kabel übertragen werden.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein Drahtlosnetzwerk von einem durch einen Computer lesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungs-Einheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, Drahtlosübertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle bei jeder Datenverarbeitungs-/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembleranweisungen, ISA-Anweisungen (ISA = Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Daten zum Setzen von Zuständen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, zu denen eine objektorientierte Programmiersprache wie beispielsweise Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen gehören. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers' teilweise auf dem Computer des Benutzers als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt sein (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, vor Ort programmierbare Schaltungen (Field-Programmable Gate Arrays, FPGA) oder programmierbare logische Arrays (PLA) gehören, die durch einen Computer lesbaren Programmanweisungen ausführen, indem Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Aspekte der vorliegenden Erfindung durchgeführt werden.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch einen Computerprogrammanweisungen realisiert werden kann bzw. können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms bzw. der Flussdiagramme und/oder des Blockschemas bzw. der Blockschemata angegebenen Funktionen/Aktionen zu realisieren. Diese durch einen Computer lesbaren Programmanweisungen können ebenfalls in einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das durch einen Computer lesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die durch einen Computer lesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder auf einer anderen Einheit ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren bzw. realisiert.
  • Die Flussdiagramme und/oder Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata eine Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die im Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der Blockschemata und/oder Flussdiagrammveranschaulichungen sowie Kombinationen von Blöcken in den Blockschemata und/oder Flussdiagrammveranschaulichungen mit Hilfe zweckgebundener hardwaregestützter Systeme zum Ausführen der angegebenen Funktionen bzw. Aktionen oder mit Hilfe von Kombinationen aus zweckgebundener Hardware und zweckgebundenen Computeranweisungen realisiert werden kann bzw. können.
  • Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht Einschränkung der Erfindung gedacht. In dem hier verwendeten Sinne schließen die Einzahlformen „ein/eine“ und „der/die/das“ auch die Pluralformen ein, sofern im Kontext nicht ausdrücklich etwas anderes angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ bzw. „aufweisen, aufweisend“ bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (steps plus function elements) in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als erschöpfend gedacht oder auf die Erfindung in der offenbarten Form beschränkt. Für den Fachmann sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzbereich und Grundgedanken der Erfindung darstellen würden. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis für verschiedene Ausführungsformen mit verschiedenen Abänderungen für die betreffende betrachtete Verwendung zu ermöglichen.
  • Kurz gesagt, das erfindungsgemäße Konzept kann zusammengefasst werden als Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei das Verfahren ein Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors, Bestimmen von n Offsets, einer für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet werden, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden, und ein Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors und ein paralleles Zugreifen auf den binären Datenvektor in den n Speicherbänken der Speichereinheit aufweist.
  • Bei dem Verfahren kann das Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse ein Auswählen von log2(n) Abschnitten und eines Y-Abschnitts mit einer Größe von log2(n) Bits aus der Startadresse, ein Bestimmen eines Paritätsbits für jeden der log2(n) Abschnitte, was zu einem Paritätsvektor X mit log2(n) Dimensionen führt, und ein Durchführen von Bitebenen-XODER-Operationen zwischen X und Y aufweisen, was zu einem Z-Vektor führt.
  • Das Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle kann ein Auswählen einer Zeile in der Zuordnungstabelle aufweisen, die log2(n) Einträge aufweist, indem der Z-Vektor als Index in der Zuordnungstabelle verwendet wird und die Ergebnisse von Zuordnungstabellenzugriffen mit einem Abschnitt der Startadresse verknüpft werden, um die n Offsets zu erhalten.
  • Das Verknüpfen kann ein Ersetzen von log2(n) Bits, die sich am Bit-Offset log2(n) der Startadresse befinden, durch die bestimmten log2(n) Zuordnungstabelleneinträge aufweisen, was zu log2(n) Offsets führt, wobei jeder als Offset in einer jeweiligen der log2(n) Bänke verwendet wird.
  • Das Bestimmen der Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken kann ein Steuern von log2(n) aufeinanderfolgenden Multiplexerstufen aufweisen, von denen jede eine Mehrzahl von Multiplexern mit 2 Eingangsbits aufweisen kann, um die Gesamtbreite des Datenvektors zu behandeln.
  • Bei der Zugriffsoperation kann es sich um eine Schreiboperation handeln.
  • Bei der Zugriffsoperation kann es sich um eine Leseoperation handeln.
  • Die ausgewählten log2(n) Abschnitte der Startadresse können gleich groß sein.
  • Der binäre Datenvektor kann in gleich großen Abschnitten in der Mehrzahl der n Speicherbänke gespeichert sein.
  • Das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors und das Bestimmen einer Abfolge von Abschnitten können vor der Schreiboperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  • Das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors können vor der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden, und das Bestimmen einer Abfolge von Abschnitten kann nach der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  • Eine Speicherzugriffseinheit zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit weist eine Mehrzahl von n Speicherbänken auf, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei die Speicherzugriffseinheit eine Empfangseinheit aufweist, die zum Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für die Elemente des binären Datenvektors ausgelegt ist, wobei das erste Bestimmungsmodul zum Bestimmen von n Offsets ausgelegt ist, einer für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER R-Funktionen auf die Startadresse angewendet wird, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden, und ein zweites Bestimmungsmodul, das ausgelegt ist zum Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit vom äquivalenten Binärwert des Z-Vektors und eine grundlegende Zugriffseinheit, die zum parallelen Zugreifen auf den binären Datenvektor in den n Speicherbänken der Speichereinheit ausgelegt ist.
  • Das Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse durch das erste Bestimmungsmodul kann ein Auswählen von log2(n) Abschnitten und eines Y-Abschnitts mit einer Größe von log2(n) Bits aus der Startadresse ein Bestimmen eines Paritätsbits für jeden der log2(n) Abschnitte, was zu einem Paritätsvektor X mit log2(n) Dimensionen führt, und ein Durchführen von Bitebenen-XODER-Operationen zwischen X und Y aufweisen, was zu einem Z-Vektor führt.
  • Das Verwenden des Z-Vektors durch das erste Bestimmungsmodul zum Zugreifen auf eine Zuordnungstabelle durch das erste Bestimmungsmodul kann ein Auswählen einer Zeile in der Zuordnungstabelle aufweisen, die log2(n) Einträge aufweist, indem der Z-Vektor als Index in der Zuordnungstabelle verwendet wird und die Ergebnisse von Zuordnungstabellenzugriffen mit einem Abschnitt der Startadresse verknüpft werden, um die n Offsets zu erhalten.
  • Das Verknüpfen durch das erste Bestimmungsmodul kann außerdem ein Ersetzen von log2(n) Bits, die sich am Bit-Offset log2(n) der Startadresse befinden, durch die bestimmten log2(n) Zuordnungstabelleneinträge aufweisen, was zu log2(n) Offsets führt, wobei jeder als Offset in einer jeweiligen der log2(n) Bänke verwendet wird.
  • Das zweite Bestimmungsmodul kann außerdem ausgelegt sein zum: wenn die Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken bestimmt wird, Steuern von log2(n) aufeinanderfolgenden Multiplexerstufen, von denen jede eine Mehrzahl von Multiplexern mit 2 Eingangsbits aufweist, um die Gesamtbreite des Datenvektors zu behandeln.
  • Bei der Zugriffsoperation kann es sich um eine Schreiboperation handeln.
  • Bei der Zugriffsoperation kann es sich um eine Leseoperation handeln.
  • Die ausgewählten log2(n) Abschnitte der Startadresse können gleich groß sein.
  • Der binäre Datenvektor kann in gleich großen Abschnitten in der Mehrzahl der n Speicherbänke gespeichert sein.
  • Das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors und das Bestimmen einer Abfolge von Abschnitten können vor der Schreiboperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  • Das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors können vor der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden, und das Bestimmen einer Abfolge von Abschnitten kann nach der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  • Ein Computerprogrammprodukt, das auf einen Datenvektor in einer Speicherkomponente zugreift, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das darauf verkörperte Programmanweisungen enthält, wobei die Programmanweisungen durch ein oder mehrere Datenverarbeitungssysteme oder Steuereinheiten ausführbar sind, um das eine oder die mehreren Datenverarbeitungssysteme zu veranlassen, eine Startadresse des binären Datenvektors und eine Zweierpotenz-Schrittgröße s für die Elemente des binären Datenvektors zu empfangen, n Offsets zu bestimmen, einen für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird, indem eine Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse angewendet wird, was zu einem Z-Vektor führt, der Z-Vektor zum Zugreifen auf eine Zuordnungstabelle verwendet wird und Ergebnisse von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors verschoben werden und eine Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit vom äquivalenten Binärwert des Z-Vektors bestimmt wird und auf den binären Datenvektor in den n Speicherbänken der Speichereinheit parallel zugegriffen wird.

Claims (23)

  1. Verfahren zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei das Verfahren aufweist Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors, Bestimmen von n Offsets, einen für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird durch Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse, was zu einem Z-Vektor führt, Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle, und Verschieben von Ergebnissen von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors, und Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors durch Umstellen von Schreibdaten, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten, und paralleles Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit.
  2. Verfahren nach Anspruch 1, wobei das Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse aufweist Auswählen von log2(n) Abschnitten und eines Y-Abschnitts mit einer Größe von log2(n) Bits, Bestimmen eines Paritätsbits für jeden der log2(n) Abschnitte, was zu einem Paritätsvektor X mit log2(n) Dimensionen führt, und Durchführen von Bitebenen-XODER-Operationen zwischen X und Y, was zu einem Z-Vektor führt.
  3. Verfahren nach Anspruch 2, wobei das Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle außerdem aufweist Auswählen einer Zeile in der Zuordnungstabelle, die log2(s) Einträge aufweist, indem der Z-Vektor als Index in der Zuordnungstabelle verwendet wird, und Verknüpfen von Ergebnissen von Zuordnungstabellenzugriffen mit einem Abschnitt der Startadresse, um die n Offsets zu erhalten.
  4. Verfahren nach Anspruch 3, wobei das Verknüpfen aufweist Ersetzen von log2(n) Bits, die sich am Bit-Offset log2(n) der Startadresse befinden, durch die bestimmten log2(n) Zuordnungstabelleneinträge, was zu log2(n) Offsets führt, wobei jeder als Offset in einer jeweiligen der log2(n) Bänke verwendet wird.
  5. Verfahren nach Anspruch 1, wobei das Bestimmen der Abfolge von Abschnitten des binären Datenvektors in den Speicherbänken aufweist Steuern von log2(n) aufeinanderfolgenden Multiplexerstufen, von denen jede eine Mehrzahl von Multiplexern mit 2 Eingangsbits aufweist, um eine Gesamtbreite des Datenvektors zu behandeln.
  6. Verfahren nach Anspruch 1, wobei es sich beim Zugreifen auf den binären Datenvektor um eine Leseoperation handelt.
  7. Verfahren nach Anspruch 1, wobei es sich beim Zugreifen auf den binären Datenvektor um eine Schreiboperation handelt.
  8. Verfahren nach Anspruch 1, wobei die ausgewählten log2(n) Abschnitte der Startadresse gleich groß sind.
  9. Verfahren nach Anspruch 1, wobei der binäre Datenvektor in gleich großen Abschnitten in der Mehrzahl von n Speicherbänken gespeichert ist.
  10. Verfahren nach Anspruch 7, wobei das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors und das Bestimmen einer Abfolge von Abschnitten vor der Schreiboperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  11. Verfahren nach Anspruch 6, wobei das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors vor der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden und wobei das Bestimmen einer Abfolge von Abschnitten nach der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt wird.
  12. Speicherzugriffseinheit zum Zugreifen auf einen binären Datenvektor in einer Speichereinheit, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei die Speicherzugriffseinheit aufweist eine Empfangseinheit, die zum Empfangen einer Startadresse des binären Datenvektors und einer Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors ausgelegt ist, ein erstes Bestimmungsmodul, das zum Bestimmen von n Offsets, einen für jede der Speicherbänke, ausgelegt ist, wobei jeder der Offsets bestimmt wird durch Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse, was zu einem Z-Vektor führt, Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle, und Verschieben von Ergebnissen von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors, und Umstellen von Schreibdaten, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten; ein zweites Bestimmungsmodul, das zum Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors ausgelegt ist, und eine grundlegende Zugriffseinheit, die zum parallelen Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit ausgelegt ist.
  13. Speicherzugriffseinheit nach Anspruch 12, wobei das Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse durch das erste Bestimmungsmodul aufweist Auswählen von log2(n) Abschnitten und eines Y-Abschnitts mit einer Größe von log2(n) Bits, Bestimmen eines Paritätsbits für jeden der log2(n) Abschnitte, was zu einem Paritätsvektor X mit log2(n) Dimensionen führt, und Durchführen von Bitebenen-XODER-Operationen zwischen X und Y, was zu einem Z-Vektor führt.
  14. Speicherzugriffseinheit nach Anspruch 13, wobei das Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle durch das erste Bestimmungsmodul außerdem aufweist Auswählen einer Zeile in der Zuordnungstabelle, die log2(s) Einträge aufweist, indem der Z-Vektor als Index in der Zuordnungstabelle verwendet wird, und Verknüpfen der Ergebnisse von Zuordnungstabellenzugriffen mit einem Abschnitt der Startadresse, um die n Offsets zu erhalten.
  15. Speicherzugriffseinheit nach Anspruch 14, wobei das Verknüpfen des ersten Bestimmungsmoduls außerdem aufweist Ersetzen von log2(n) Bits, die sich am Bit-Offset log2(n) der Startadresse befinden, durch die bestimmten log2(n) Zuordnungstabelleneinträge, was zu log2(n) Offsets führt, wobei jeder als Offset in einer jeweiligen der log2(n) Bänke verwendet wird.
  16. Speicherzugriffseinheit nach Anspruch 12, wobei das zweite Bestimmungsmodul außerdem ausgelegt ist zum: wenn die Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken bestimmt wird, Steuern von log2(n) aufeinanderfolgenden Multiplexerstufen, von denen jede eine Mehrzahl von Multiplexern mit 2 Eingangsbits aufweist, um eine Gesamtbreite des Datenvektors zu behandeln.
  17. Speicherzugriffseinheit nach Anspruch 12, wobei es sich beim Zugreifen auf den binären Datenvektor um eine Leseoperation handelt.
  18. Speicherzugriffseinheit nach Anspruch 12, wobei es sich beim Zugreifen auf den binären Datenvektor um eine Schreiboperation handelt.
  19. Speicherzugriffseinheit nach Anspruch 12, wobei die ausgewählten log2(n) Abschnitte der Startadresse gleich groß sind.
  20. Speicherzugriffseinheit nach Anspruch 12, wobei der binäre Datenvektor in gleich großen Abschnitten in der Mehrzahl von n Speicherbänken gespeichert ist.
  21. Speicherzugriffseinheit nach Anspruch 18, wobei das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors und das Bestimmen einer Abfolge von Abschnitten vor der Schreiboperation des binären Datenvektors in die n Speicherbänke durchgeführt werden.
  22. Speicherzugriffseinheit nach Anspruch 17, wobei das Bereitstellen der Startadresse, das Bestimmen der Offsets und das Bestimmen einer Abfolge von Abschnitten des binären Datenvektors vor der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt werden und wobei das Bestimmen einer Abfolge von Abschnitten nach der Leseoperation des binären Datenvektors in die n Speicherbänke durchgeführt wird.
  23. Computerprogrammprodukt zum Zugreifen auf einen Datenvektor in einer Speicherkomponente, die eine Mehrzahl von n Speicherbänken aufweist, in denen der binäre Datenvektor in Abschnitten gespeichert ist, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das darauf verkörperte Programmanweisungen enthält, wobei die Programmanweisungen durch ein oder mehrere Datenverarbeitungssysteme oder Steuereinheiten ausführbar sind, um das eine oder die mehreren Datenverarbeitungssysteme zu veranlassen, eine Startadresse des binären Datenvektors und eine Zweierpotenz-Schrittgröße s für Elemente des binären Datenvektors zu empfangen, n Offsets zu bestimmen, einen für jede der Speicherbänke, wobei jeder der Offsets bestimmt wird durch Anwenden einer Mehrzahl von Bitebenen-XODER-Funktionen auf die Startadresse, was zu einem Z-Vektor führt, Verwenden des Z-Vektors zum Zugreifen auf eine Zuordnungstabelle, und Verschieben von Ergebnissen von Zuordnungstabellenzugriffen gemäß einer Zweierpotenz-Schrittgröße des binären Datenvektors, und Bestimmen einer Abfolge von Abschnitten des binären Datenvektors in den n Speicherbänken in Abhängigkeit von einem äquivalenten Binärwert des Z-Vektors durch Umstellen von Schreibdaten, um einen ersten Datenvektor des binären Datenvektors zu erhalten, und durch Umstellen von Lesedaten, um einen zweiten Datenvektor des binären Datenvektors zu erhalten, und paralleles Zugreifen auf die Abfolge der Abschnitte des binären Datenvektors in den n Speicherbänken der Speichereinheit.
DE112020000748.0T 2019-05-10 2020-05-01 Adresserzeugung zur hochleistungsverarbeitung von vektoren Active DE112020000748B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/408,575 2019-05-10
US16/408,575 US10996949B2 (en) 2019-05-10 2019-05-10 Address generation for high-performance vector processing
PCT/IB2020/054137 WO2020229933A1 (en) 2019-05-10 2020-05-01 Address generation for high-performance vector processing

Publications (2)

Publication Number Publication Date
DE112020000748T5 DE112020000748T5 (de) 2021-10-28
DE112020000748B4 true DE112020000748B4 (de) 2022-11-17

Family

ID=73045791

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000748.0T Active DE112020000748B4 (de) 2019-05-10 2020-05-01 Adresserzeugung zur hochleistungsverarbeitung von vektoren

Country Status (6)

Country Link
US (1) US10996949B2 (de)
JP (1) JP7386901B2 (de)
CN (1) CN113767371B (de)
DE (1) DE112020000748B4 (de)
GB (1) GB2598250B (de)
WO (1) WO2020229933A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636569B1 (en) * 2020-09-23 2023-04-25 Amazon Technologies, Inc. Matrix transpose hardware acceleration
CN115422098B (zh) * 2022-02-15 2023-08-29 摩尔线程智能科技(北京)有限责任公司 基于扩展页表的gpu访存自适应优化方法及装置
FR3133459B1 (fr) * 2022-03-11 2024-03-22 Commissariat Energie Atomique Générateur d’adresses pour un calculateur à architecture de type « instruction unique, données multiples »
CN116910770B (zh) * 2023-09-13 2023-12-19 中国海洋大学 一种基于密度的固件基址识别系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US20160275013A1 (en) 2015-03-18 2016-09-22 International Business Machines Corporation Programmable memory mapping scheme with interleave properties
US9705532B2 (en) 2013-03-15 2017-07-11 Arris Enterprises Llc Parallel low-density parity check (LDPC) accumulation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0769896B2 (ja) * 1988-11-07 1995-07-31 富士通株式会社 ベクトル処理システム
US5276902A (en) * 1988-11-07 1994-01-04 Fujitsu Limited Memory access system for vector data processed or to be processed by a vector processor
JP4240610B2 (ja) 1998-11-27 2009-03-18 株式会社日立製作所 計算機システム
US6604166B1 (en) 1998-12-30 2003-08-05 Silicon Automation Systems Limited Memory architecture for parallel data access along any given dimension of an n-dimensional rectangular data array
US6453380B1 (en) * 1999-01-23 2002-09-17 International Business Machines Corporation Address mapping for configurable memory system
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6430672B1 (en) 2000-07-17 2002-08-06 International Business Machines Corporation Method for performing address mapping using two lookup tables
EP1825433A4 (de) 2004-11-23 2010-01-06 Efficient Memory Technology Verfahren und vorrichtung von mehrfachabkürzungen einer verschachtelten adressierung paginierter speicher und intelligente speicherbänke dafür
US7398362B1 (en) * 2005-12-09 2008-07-08 Advanced Micro Devices, Inc. Programmable interleaving in multiple-bank memories
US8327057B1 (en) * 2007-04-16 2012-12-04 Juniper Networks, Inc. Ordering write bursts to memory
CN101645005A (zh) * 2008-08-06 2010-02-10 中国人民解放军信息工程大学 基于多维可变描述表的处理器结构与指令系统表示方法
US9262174B2 (en) * 2012-04-05 2016-02-16 Nvidia Corporation Dynamic bank mode addressing for memory access
US9268691B2 (en) * 2012-06-11 2016-02-23 Intel Corporation Fast mechanism for accessing 2n±1 interleaved memory system
CN104699465B (zh) 2015-03-26 2017-05-24 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US9705532B2 (en) 2013-03-15 2017-07-11 Arris Enterprises Llc Parallel low-density parity check (LDPC) accumulation
US20160275013A1 (en) 2015-03-18 2016-09-22 International Business Machines Corporation Programmable memory mapping scheme with interleave properties

Also Published As

Publication number Publication date
CN113767371B (zh) 2023-04-14
JP7386901B2 (ja) 2023-11-27
GB2598250B (en) 2022-07-06
GB202117077D0 (en) 2022-01-12
GB2598250A (en) 2022-02-23
CN113767371A (zh) 2021-12-07
WO2020229933A1 (en) 2020-11-19
DE112020000748T5 (de) 2021-10-28
US10996949B2 (en) 2021-05-04
JP2022531786A (ja) 2022-07-11
US20200356367A1 (en) 2020-11-12

Similar Documents

Publication Publication Date Title
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE69221356T2 (de) Flexible N-fach-Speicherverschachtelung
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE112017007826T5 (de) Simulieren von Quantenschaltungen
DE102015224026A1 (de) Indirektes Erfassen von Sampledaten zur Durchführung mehrfacher Faltungsoperationen in einem Parallelverarbeitungssystem
DE2324731A1 (de) Festzustandsspeicher fuer mehrdimensionalen zugriff
DE112020003066T5 (de) Transponierungsoperationen mit verarbeitungselementarray
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102020112826A1 (de) Verfahren zur effizienten durchführung von datenreduktionen in parallelverarbeitungseinheiten
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE112011105774T5 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE1549584B2 (de) Datenverarbeitungsanlage
DE112013006646T5 (de) Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE102020133878A1 (de) Technologien für spaltenbasierte datenlayouts für geclusterte datensysteme
DE2458331A1 (de) Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
DE102020102273A1 (de) Effizientes Matrixdatenformat anwendbar für künstliches neuronales Netzwerk
DE112020004266T5 (de) Kompressionsunterstützungsanweisungen
DE102019112186A1 (de) Doppelladebefehl
DE2004436C3 (de) Datenverarbeitungsanlage mit einer Einrichtung zur Umwandlung von Adressen für rotierende Speicher
DE69433016T2 (de) Speicheradressierung für ein massivparalleles verarbeitungsystem
DE2459476A1 (de) Schaltungsanordnung fuer nichtzyklische datenpermutationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final