DE102016013579A1 - Speicherungs-Prozessorarray für wissenschaftliche Berechnungen - Google Patents

Speicherungs-Prozessorarray für wissenschaftliche Berechnungen Download PDF

Info

Publication number
DE102016013579A1
DE102016013579A1 DE102016013579.4A DE102016013579A DE102016013579A1 DE 102016013579 A1 DE102016013579 A1 DE 102016013579A1 DE 102016013579 A DE102016013579 A DE 102016013579A DE 102016013579 A1 DE102016013579 A1 DE 102016013579A1
Authority
DE
Germany
Prior art keywords
storage processing
processing units
subarray
network
unit
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.)
Pending
Application number
DE102016013579.4A
Other languages
English (en)
Inventor
Arup DE
Kiran Kumar Gunnam
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.)
Sandisk Technologies Inc NDGesD Staates Us
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102016013579A1 publication Critical patent/DE102016013579A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

Die hier offenbarten Ausführungsformen umfassen ein Verbindungsnetzwerk, das dafür ausgelegt ist, Datenkommunikation zwischen Speicherungs-Verarbeitungseinheiten bereitzustellen. Das offenbarte Verbindungsnetzwerk kann besonders effektiv sein, wenn die Speicherungs-Verarbeitungseinheiten dafür ausgelegt sind, lokal wissenschaftliche Berechnungen auszuführen. Das offenbarte Verbindungsnetzwerk kann lokalisierte Datenkommunikation mit hohem Durchsatz und niedriger Latenz zwischen Speicherungs-Verarbeitungseinheiten ohne Überlastung des Hostsystems ermöglichen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Vorrichtungen, Systeme und Verfahren zum Bereitstellen eines Speicherungs-Prozessorarrays für wissenschaftliche Berechnungen.
  • STAND DER TECHNIK
  • Halbleiterlaufwerke können nichtflüchtigen Halbleiterspeicher umfassen, wie etwa Flash-Speicher. Flash-Speicher kann eine verbesserte Form von EEPROM (Electrically-Erasable Programmable Read-Only Memory) umfassen. Traditionelle EEPROM-Vorrichtungen können nur eine Speicherstelle (z. B. eine Speicherzelle) auf einmal löschen oder schreiben. Im Gegensatz dazu erlaubt Flash-Speicher das Löschen oder Schreiben mehrerer Speicherstellen in einer Programmieroperation. Flash-Speicher kann somit verglichen mit traditionellem EEPROM mit einer höheren Geschwindigkeit arbeiten.
  • Halbleiterspeicher hat gegenüber anderen Speicherungsvorrichtungen eine Anzahl von Vorteilen. Zum Beispiel bietet er im Allgemeinen schnellere Lesezugriffszeiten und bessere Stoßfestigkeit als eine Festplatte (HDD). Im Gegensatz zu dynamischen Direktzugriffsspeicher (DRAM) ist Halbleiterspeicher im Allgemeinen nicht flüchtig, was bedeutet, dass in Flash-Speicher gespeicherte Daten nicht verlorengehen, wenn die Stromversorgung des Speichers entfernt wird. Diese Vorteile und andere können die zunehmende Beliebtheit von Flash-Speicher für Speicherungsanwendungen in Vorrichtungen wie Speicherkarten, USB-Flash-Laufwerken, Mobiltelefonen, Digitalkameras, Massenspeichervorrichtungen, MP3-Playern und dergleichen erklären.
  • KURZFASSUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen Vorrichtungen, Systeme und Verfahren zum Bereitstellen eines Speicherungs-Prozessorarrays für wissenschaftliche Berechnungen.
  • Einige Aüsführungsformen der vorliegenden Offenbarung umfassen ein Halbleitervorrichtungssystem. Das Halbleitervorrichtungssystem umfasst mehrere Speicherungs-Verarbeitungseinheiten, die als zweidimensionales Array angeordnet sind, wobei jede der mehreren Speicherungs-Verarbeitungseinheiten eine rechnerische Einheit und ein nichtflüchtiges Speichermodul umfasst. Das Halbleitervorrichtungssystem umfasst auch ein Verbindungsnetzwerk mit mehreren Einheits-Netzwerk-Modulen, wobei das Verbindungsnetzwerk dafür ausgelegt ist, Datenkommunikation zwischen den mehreren Speicherungs-Verarbeitungseinheiten bereitzustellen. Die mehreren Speicherungs-Verarbeitungseinheiten sind in mehrere Subarrays von Speicherungs-Verarbeitungseinheiten gruppiert, und Speicherungs-Verarbeitungseinheiten in einem ersten Subarray der mehreren Subarrays sind unter Verwendung eines ersten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt.
  • Bei einigen Ausführungsformen sind Speicherungs-Verarbeitungseinheiten in einem zweiten Subarray der mehreren Subarrays unter Verwendung eines zweiten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt.
  • Bei einigen Ausführungsformen sind die mehreren Subarrays, einschließlich des ersten Subarrays und des zweiten Subarrays, unter Verwendung eines dritten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt, um dadurch eine hierarchische Verbindung von Speicherungs-Verarbeitungseinheiten zu bilden.
  • Bei einigen Ausführungsformen weist jedes der Einheits-Netzwerk-Module eine erste Art von Verbindungstopologie auf.
  • Bei einigen Ausführungsformen umfasst die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie.
  • Bei einigen Ausführungsformen umfasst die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie.
  • Bei einigen Ausführungsformen weist das erste der mehreren Einheits-Netzwerk-Module eine erste Art von Verbindungstopologie und das zweite der mehreren Einheits-Netzwerk-Module eine zweite Art von Verbindungstopologie auf.
  • Bei einigen Ausführungsformen ist das erste Subarray diagonal von dem zweiten Subarray angeordnet und das dritte der mehreren Einheits-Netzwerk-Module umfasst eine Diagonalverbindung, die dafür ausgelegt ist, das erste Subarray und das zweite Subarray direkt zu verbinden.
  • Bei einigen Ausführungsformen ist die Diagonalverbindung dafür ausgelegt, einen Kommunikationsverteiler des ersten Subarrays und einen Kommunikationsverteiler des zweiten Subarrays direkt zu verbinden.
  • Bei einigen Ausführungsformen sind die mehreren Speichungs-Verarbeitungseinheiten auf einer Leiterplatte angeordnet und das Verbindungsnetzwerk umfasst einer elektrischen Leiter auf der Leiterplatte.
  • Bei einigen Ausführungsformen umfasst das Halbleitervorrichtungssystem ferner einen Speichercontroller, der dafür ausgelegt ist, Datentransfer zwischen den mehreren Speicherungs-Verarbeitungseinheiten über das Verbindungsnetzwerk einzuteilen.
  • Bei einigen Ausführungsformen ist der Speichercontroller ferner ausgelegt zum Laden mehrerer Blöcke entsprechend einer zweidimensionalen Matrix auf die mehreren Subarrays, Triggern der mehreren Subarrays, lokal eine Transponierungsoperation zur Berechnung einen Transponierung der mehreren Blöcke auszuführen, und Triggern von zwei der Subarrays, die Transponierung von in den beiden Subarrays gespeicherten Blöcken über das Verbindungsnetzwerk auszutauschen.
  • Bei einigen Ausführungsformen ist der Speichercontroller ausgelegt zum Bestimmen einer Route in dem Verbindungsnetzwerk, über die die zwei Subarrays die Transponierung der Blöcke austauschen.
  • Bei einigen Ausführungsformen ist die rechnerische Einheit in den mehreren Speicherungs-Verarbeitungseinheiten dafür ausgelegt, wissenschaftliche Berechnung durchzuführen.
  • Bei einigen Ausführungsformen umfasst eines der mehreren Einheits-Netzwerk-Module ein L-Diagonalen-Typ-1-Einheits-Netzwerk-Modul.
  • Bei einigen Ausführungsformen umfasst eines der mehreren Einheits-Netzwerk-Module ein L-Diagonalen-Typ-2-Einheits-Netzwerk-Modul.
  • Bei einigen Ausführungsformen umfasst eines der mehreren Einheits-Netzwerk-Module ein L-Diagonalen-Typ-3-Einheits-Netzwerk-Modul.
  • Bei einigen Ausführungsformen umfasst eines der mehreren Einheits-Netzwerk-Module ein L-Diagonalen-Typ-4-Einheits-Netzwerk-Modul.
  • Bei einigen Ausführungsformen umfasst eines der mehreren Einheits-Netzwerk-Module ein Vollmascheneinheits-Netzwerk-Modul.
  • Einige Ausführungsformen der vorliegenden Offenbarung umfassen ein System. Das System kann ein Halbleitervorrichtungssystem gemäß einigen Ausführungsformen und eine Hostvorrichtung in Datenkommunikation mit dem Halbleitervorrichtungssystem umfassen, wobei die Hostvorrichtung dafür ausgelegt ist, Daten zu dem Halbleitervorrichtungssystem zur Verarbeitung durch die rechnerische Einheit in den mehreren Speicherungs-Verarbeitungseinheiten zu senden.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Verschiedene Aufgaben, Merkmale und Vorteile des offenbarten Gegenstands werden mit Bezugnahme auf die folgende ausführliche Beschreibung des offenbarten Gegenstands bei Betrachtung in Verbindung mit den folgenden Zeichnungen, in denen gleiche Bezugszahlen gleiche Elemente identifizieren, besser verständlich. Die beigefügten Figuren sind schematisch und sind nicht maßstabsgetreu gezeichnet. Der Klarheit halber ist nicht jede Komponente in jeder Figur gekennzeichnet. Und es ist auch nicht jede Komponente jeder Ausführungsform des offenbarten Gegenstands gezeigt, wenn die Darstellung nicht notwendig ist, um es Durchschnittsfachleuten zu ermöglichen, den offenbarten Gegenstand zu verstehen.
  • 1 zeigt ein beispielhaftes Datenverarbeitungssystem mit einem Hostsystem und einem Speicherungssystem gemäß einigen Ausführungsformen.
  • 2 zeigt eine zweidimensionale Anordnung der mehreren Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 3 zeigt eine Ringtopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen.
  • 4 zeigt eine modifizierte Ringtopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen.
  • 5A5B zeigen den Vorteil der zusätzlichen Kante bei einer Matrixtransponierungsoperation gemäß einigen Ausführungsformen.
  • 6 zeigt die Vollmaschentopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen.
  • 7A7D zeigen vier L-Diagonalentopologien eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen.
  • 8 zeigt mehrere Subarrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 9 zeigt mehrere Subarrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 10 zeigt ein hierarchisches modifiziertes Ringnetzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 11 zeigt ein hierarchisches Maschennetzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 12 zeigt ein hierarchisches Netzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 13 zeigt eine Blocktransponierungsoperation unter Verwendung des Arrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • 14A14C zeigen die Blocktransponierungsoperation von 13 für eine bestimmte Eingangsmatrix.
  • 15 zeigt ein hierarchisches Netzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten hinsichtlich der Systeme und Verfahren des offenbarten Gegenstands und der Umgebung, in der solche Systeme und Verfahren arbeiten können, usw. dargelegt, um ein umfassendes Verständnis des offenbarten Gegenstands zu gewährleisten. Für Fachleute ist jedoch erkennbar, dass der offenbarte Gegenstand ohne solche spezifischen Einzelheiten praktiziert werden kann und dass bestimmte Merkmale, die in der Technik wohlbekannt sind, nicht im Detail beschrieben sind, um eine Verkomplizierung des offenbarten Gegenstands zu vermeiden. Zusätzlich versteht sich, dass die nachfolgend angegebenen Beispiele beispielhaft sind und dass in Betracht gezogen wird, dass es andere Systeme und Verfahren gibt, die im Schutzumfang des offenbarten Gegenstands liegen.
  • In einem traditionellen Rechen- und Speicherungsmodell umfasst ein Datenverarbeitungssystem ein Hostsystem und ein Speicherungssystem. In diesem Modell ist das Hostsystem dafür ausgelegt, Berechnungen auszuführen, und das Speicherungssystem ist dafür ausgelegt, durch das Hostsystem zu verarbeitende Informationen zu speichern. In einigen Fällen kann das Hostsystem den Speicherungsbetrieb des Speicherungssystems koordinieren, aber die Verarbeitungsfähigkeiten des Hostsystems sind oft vom Speicherungssystem getrennt.
  • Es ist manchmal wünschenswert, bestimmte rechnerische Operationen vom Hostsystem auf das Speicherungssystem abzuladen. Zum Beispiel kann es bei datenintensiven Anwendungen wünschenswert sein, das Speicherungssystem mit Berechnungsfähigkeiten zu ergänzen, so dass datenintensive Berechnungen lokal im Speicherungssystem ausgeführt werden können. Auf diese Weise kann das Hostsystem von den rechnerischen Anforderungen entlastet werden und die Anforderungen bezüglich Eingabe/Ausgabe (E/A) des Systems als Ganzes können auch reduziert werden.
  • Obwohl die Anforderungen bezüglich Eingabe/Ausgabe (E/A) des Systems als Ganzes reduziert werden können, kann weiterhin ein signifikanter Bedarf an Datenkommunikation bestehen. Oftmals kann ein Speicherungssystem mehrere Speicherungs-Verarbeitungseinheiten umfassen, und die Speicherungs-Verarbeitungseinheiten können miteinander kommunizieren müssen, um bestimmte Berechnungen abzuschließen, die vom Hostsystem abgeladen werden. Diese Kommunikation könnte entweder mittels des Hostsystems oder mittels des Peer-to-Peer-Kommunikationsbusses, zum Beispiel des PCIe-Busses (Peripheral Component Interconnect Express) durchgeführt werden. Leider führt jeder dieser Ansätze schnell zu Sättigung des Hostsystems und/oder des Peer-to-Peer-Kommunikationsbusses. Die Datenkommunikation auf einem Peer-to-Peer-Kommunikationsbus ist aufgrund der Bandbreitenbeschränkungen bezüglich des Peer-to-Peer-Kommunikationsbusses besonders ungeeignet.
  • Einige Ausführungsformen der vorliegenden Offenbarung behandeln die Datenkommunikation zwischen Speicherungs-Verarbeitungseinheiten in einem Speicherungssystem. Insbesondere umfassen offenbarte Ausführungsformen ein Verbindungsnetzwerk, das dafür ausgelegt ist, Datenkommunikation zwischen Speicherungs-Verarbeitungseinheiten bereitzustellen. Das offenbarte Verbindungsnetzwerk kann besonders effektiv sein, wenn die Speicherungs-Verarbeitungseinheiten dafür ausgelegt sind, lokal wissenschaftliche Berechnungen durchzuführen. Das offenbarte Verbindungsnetzwerk kann lokalisierte Datenkommunikation mit hohem Durchsatz und niedriger Latenz zwischen Speicherungs-Verarbeitungseinheiten ohne Überlastung des Hostsystems ermöglichen.
  • Auf hoher Ebene erlaubt das offenbarte Verbindungsnetzwerk Speicherungs-Verarbeitungseinheiten, miteinander zu kommunizieren, ohne Vermittlung durch eine Zwischenvorrichtung, wie etwa ein Hostsystem. Da die Speicherungs-Verarbeitungseinheiten lokal in dem Speicherungssystem miteinander kommunizieren können, kann die Kommunikation zwischen den Speicherungs-Verarbeitungseinheiten mit hohem Durchsatz und/oder geringer Latenz erreicht werden.
  • Bei einigen Ausführungsformen kann das offenbarte Verbindungsnetzwerk Speicherungs-Verarbeitungseinheiten mit einer begrenzten Menge von Verbindungen verbinden. Wenn zum Beispiel ein Speichersystem vier Speicherungs-Verarbeitungseinheiten umfasst, die in einer 2×2-Matrix angeordnet sind, kann das offenbarte Verbindungsnetzwerk so ausgelegt werden, dass eine der Speicherungs-Verarbeitungseinheiten als Kommunikationsverteiler wirkt, um dadurch die Kommunikation zwischen den Speicherungs-Verarbeitungseinheiten zu zentralisieren.
  • Bei einigen Ausführungsformen kann das Verbindungsnetzwerk mehrere Einheits-Netzwerk-Module umfassen. Jedes Einheits-Netzwerk-Modul kann dafür ausgelegt werden, eine Teilmenge von Speicherungs-Verarbeitungseinheiten zu verbinden. In einigen Fällen können Teilmengen von Speicherungs-Verarbeitungseinheiten auf hierarchische Weise miteinander gekoppelt werden, um dadurch eine hierarchische Verbindung von Einheits-Netzwerk-Modulen zu bilden.
  • 1 zeigt ein beispielhaftes Datenverarbeitungssystem mit einem Hostsystem und einem Speicherungssystem gemäß einigen Ausführungsformen. Das Datenverarbeitungssystem 100 kann ein Hostsystem 102 und ein Speicherungssystem 104 umfassen, wobei das Speicherungssystem 104 einen Speichercontroller 106, mehrere Speicherungs-Verarbeitungseinheiten 108a108d und ein Verbindungsnetzwerk 114 zwischen den mehreren Speicherungs-Verarbeitungseinheiten 108a108d umfasst.
  • Das Hostsystem 102 kann ein Computersystem umfassen, das ein Speicherungssystem 104 für Datenlese- und Datenschreiboperationen verwendet und auf dieses zugreift. Ein solches Hostsystem 102 kann Anwendungen wie Datenbanken, Dateisysteme und Webdienste ausführen. Das Hostsystem 102 kann eine Host-CPU, eine Hostspeichervorrichtung und eine Anwendungsprogrammierschnittstelle (API) von Speicherungs-Verarbeitungseinheiten und/oder einen Vorrichtungstreiber umfassen. Bei einigen Ausführungsformen kann sich das Hostsystem 102 physisch mit dem Speicherungssystem 104 colokalisiert (z. B. physisch nahe diesem) befinden. Bei solchen Ausführungsformen kann das Hostsystem 102 dafür ausgelegt sein, über einen Bus mit dem Speicherungssystem 104 zu kommunizieren. Der Bus kann zum Beispiel PCI, PCI-Express, PCI-X, InfiniBand, HyperTransport, eine SCSI PCI-E Karte, eine SATA PCI-E Karte, eine iSCSI-Adapterkarte und eine Fibre-Channel-PCI-E-Karte umfassen. Bei anderen Ausführungsformen kann das Hostsystem 102 physisch von dem Speicherungssystem 104 getrennt sein. Bei solchen Ausführungsformen kann das Hostsystem 102 über ein Kommunikationsnetzwerk mit dem Speicherungssystem 104 kommunizieren. Das Netzwerk kann das Internet, ein lokales Netzwerk (LAN), ein Paketdatennetzwerk, ein Legacy-Netzwerk oder eine beliebige Art von Netzwerk mit der Fähigkeit zur Bereitstellung von Datenkommunikation zwischen dem Hostsystem 102 und dem Speicherungssystem 104 umfassen.
  • Bei einigen Ausführungsformen kann der Speichercontroller 106 in Hardware implementiert sein. Die Hardware kann Logikschaltungen und/oder Speicher zum Auswählen von Zielspeicherblöcken und zum Ausräumen von Daten aus den ausgewählten Zielspeicherblöcken zur Unterbringung neuer Daten umfassen. Bei einigen Ausführungsformen kann die Hardware für den Speichercontroller 106 unter Verwendung einer Hardwarebeschreibungssprache implementiert werden, darunter Verilog, VHDL (VHSIC hardware description language) und BlueSpecTM (Bluespec Inc., Framingham, Massachusetts) und unter Verwendung von Logiksynthesewerkzeugen synthetisiert sein, darunter Design Compiler® (Synopsis Inc., Mountain View, Kalifornien), Encounter RTL Compiler (Cadence Design Systems Inc., San Jose, Kalifornien), RealTime Designer (Oasys Design Systems, Inc., Santa Clara, Kalifornien) und BooleDozer (International Business Machine, Endicott, New York).
  • Bei einigen Ausführungsformen kann ein Speichercontroller 106 als Firmware implementiert sein. Die Firmware kann einen Speicherplatz zum Unterhalten einer Abnutzungszähltabelle und einer Abnutzungszählabbildung vergeben und kann ferner Anweisungen umfassen, die betreibbar sind, um einen Speicherblock für eine Müllabfuhroperation zu identifizieren.
  • Bei einigen Ausführungsformen kann der Speichercontroller 106 in Software unter Verwendung von Speicher implementiert werden, wie etwa eines nichttransitorischen computerlesbaren Mediums, eines programmierbaren Festwertspeichers (PROM) oder von Flash-Speicher. Die Software kann auf einem Prozessor laufen, der sich in dem Speichercontroller 106 befinden kann. Der Prozessor kann dazu ausgelegt sein, Anweisungen oder Computercode auszuführen, die bzw. der in einem in dem Speichercontroller 106 realisierten nichttransitorischen computerlesbaren Medium realisiert sein können bzw. kann.
  • Bei einigen Ausführungsformen kann jede Speicherungs-Verarbeitungseinheit 108 eine nichtflüchtige Speicher- bzw. NVM-Speicherungseinheit 110 zum Unterhalten von Daten und einen Beschleuniger 112 für Berechnungen umfassen.
  • Bei einigen Ausführungsformen kann eine NVM-Speicherungseinheit 110 mehrere Speicherblöcke zum Unterhalten von Daten umfassen. Jeder der Speicherblöcke kann eine feste Größe aufweisen. Zum Beispiel kann ein Speicherblock 128 KB lang sein. Jeder Speicherblock kann in mehrere Seiten aufgeteilt sein. Jede Seite im Speicherblock kann eine feste Größe aufweisen. Zum Beispiel kann eine Seite 4 KB lang sein.
  • Bei einigen Ausführungsformen kann der Beschleuniger 112 dafür ausgelegt sein, spezialisierte Operationen, wie etwa wissenschaftliche Berechnungen, auszuführen. Zum Beispiel kann der Beschleuniger 112 dafür ausgelegt sein, eine schnelle Fouriertransformation, einen Schlüsselwertspeicher, Such- und Sortier- und/oder Matrixberechnungen auszuführen.
  • Bei einigen Ausführungsformen kann der Beschleuniger 112 in Hardware implementiert sein. Die Hardware für den Beschleuniger 112 kann unter Verwendung einer Hardwarebeschreibungssprache implementiert werden, darunter Verilog, VHDL (VHSIC hardware description language) und BlueSpecTM (Bluespec Inc., Framingham, Massachusetts), und kann unter Verwendung von Logiksynthesewerkzeugen synthetisiert sein, darunter Design Compiler® (Synopsis Inc., Mountain View, Kalifornien), Encounter RTL Compiler (Cadence Design Systems Inc., San Jose, Kalifornien), RealTime Designer (Oasys Design Systems, Inc., Santa Clara, Kalifornien) und BooleDozer (International Business Machine, Endicott, New York).
  • Bei einigen Ausführungsformen kann das Verbindungsnetzwerk 114 dafür ausgelegt sein, Kommunikation zwischen den mehreren Speicherungs-Verarbeitungseinheiten 108 bereitzustellen. Das Verbindungsnetzwerk 114 kann in Hardware implementiert werden, um Daten zu senden und zu empfangen. Das Verbindungsnetzwerk 114 kann dafür ausgelegt sein, Kommunikation in einem oder mehreren von vielfältigen Medien bereitzustellen, wie etwa einem optischen Medium, einem elektrischen Medium, einem magnetischen Medium und/oder beliebigen anderen Arten von Medien, die Kommunikation zwischen den mehreren Speicherungs-Verarbeitungseinheiten 108 ermöglichen. Das Verbindungsnetzwerk 114 kann dafür ausgelegt sein, Kommunikation in einer Anzahl von Kommunikationsprotokollen bereitzustellen. Bei einigen Ausführungsformen kann das Verbindungsnetzwerk 114 eine PCI-Schnittstelle, eine PCIe-Schnittstelle, eine SATA-Schnittstelle (Serial AT Attachment) und/oder eine Sammelschiene-Schnittstelle (Serial Attached SCSI) bzw. SAS umfassen.
  • Bei einigen Ausführungsformen können die mehreren Speicherungs-Verarbeitungseinheiten 108 als ein zweidimensionales Array ausgelegt sein. 2 zeigt eine zweidimensionale Anordnung der mehreren Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. Die mehreren Speicherungs-Verarbeitungseinheiten sind als ein zweidimensionales Array angeordnet, das auch als Matrixanordnung bezeichnet wird. In dieser Darstellung gibt es 16 Speicherungs-Verarbeitungseinheiten. Die Speicherungs-Verarbeitungseinheiten können deshalb als eine 4×4-Matrix angeordnet werden. Bei einigen Ausführungsformen können die Speicherungs-Verarbeitungseinheiten auf einer Leiterplatte, wie etwa einer gedruckten Leiterplatte (PCB), angeordnet werden und das Verbindungsnetzwerk 114 kann elektrische Leiter auf der Leiterplatte umfassen.
  • Bei einigen Ausführungsformen können eine oder mehrere der Speicherungs-Verarbeitungseinheiten 108 unter Verwendung eines zweidimensionalen Index referenziert werden. Zum Beispiel kann die obere linke Speicherungs-Verarbeitungseinheit als SPU0,0, die untere rechte Speicherungs-Verarbeitungseinheit als SPU3,3 und die Speicherungs-Verarbeitungseinheit in der i-ten Zeile und j-ten Spalte als SPUi,j bezeichnet werden.
  • Bei einigen Ausführungsformen kann eine der mehreren Speicherungs-Verarbeitungseinheiten 108, die auch als Quellen-Speicherungs-Verarbeitungseinheit bezeichnet wird, über das Verbindungsnetzwerk 114 Daten zu einer Ziel-Speicherungs-Verarbeitungseinheit senden. Wenn das Verbindungsnetzwerk 114 die Quellen-Speicherungs-Verarbeitungseinheit direkt mit der Ziel-Speicherungs-Verarbeitungseinheit koppelt, kann die Quellen-Speicherungs-Verarbeitungseinheit Daten direkt über das Verbindungsnetzwerk 114 zu der Ziel-Speicherungs-Verarbeitungseinheit senden. Wenn das Verbindungsnetzwerk 114 die Quellen-Speicherungs-Verarbeitungseinheit nicht direkt mit der Ziel-Speicherungs-Verarbeitungseinheit koppelt, kann die Quellen-Speicherungs-Verarbeitungseinheit Daten unter Verwendung verschiedener Datenroutingtechniken zu der Ziel-Speicherungs-Verarbeitungseinheit senden. Zum Beispiel kann die Quellen-Speicherungs-Verarbeitungseinheit Daten unter Verwendung einer minimalen Distanz in dem Verbindungsnetzwerk 114 zu der Ziel-Speicherungs-Verarbeitungseinheit senden. Bei einigen Ausführungsformen kann der Speichercontroller 106 das Routing von Daten im Verbindungsnetzwerk 114 zentral einteilen. Bei anderen Ausführungsformen können mehrere Speicherungs-Verarbeitungseinheiten das Routing von Daten im Verbindungsnetzwerk 114 auf verteilte Weise einteilen.
  • Bei einigen Ausführungsformen kann das Verbindungsnetzwerk 114 mehrere Einheits-Netzwerk-Module umfassen. Jedes Einheits-Netzwerk-Modul kann dafür ausgelegt sein, eine Teilmenge von Speicherungs-Verarbeitungseinheiten in dem zweidimensionalen Array zu verbinden. Zum Beispiel kann ein Einheits-Netzwerk-Modul dafür ausgelegt sein, eine Teilmenge von Speicherungs-Verarbeitungseinheiten (z. B. SPU0,0, SPU0,1, SPU1,0, SPU1,1) zu koppeln, die als zweidimensionales Array angeordnet sind. Die Teilmenge von Speicherungs-Verarbeitungseinheiten, die als ein zweidimensionales Array angeordnet sind, können auch als Subarray von Speicherungs-Verarbeitungseinheiten bezeichnet werden.
  • Bei einigen Ausführungsformen kann ein Einheits-Netzwerk-Modul Schnittstellenverbindungen umfassen, die in einer von mehreren Verbindungstopologien angeordnet sind. Die dem Einheits-Netzwerkmodul zugeordnete Verbindungstopologie kann die Art des Einheits-Netzwerk-Moduls bestimmen. Die mehreren Verbindungstopologien können zum Beispiel eine Ringtopologie, eine modifizierte Ringtopologie, eine Vollmaschentopologie, eine L-Diagonal-Topologie Typ 1, eine L-Diagonal-Topologie Typ 2, eine L-Diagonal-Topologie Typ 3 und eine L-Diagonal-Topologie Typ 4 umfassen. Diese Topologien sind gemäß einigen Ausführungsformen in 3, 4, 6 und 7 dargestellt. Jedes
  • Bei einigen Ausführungsformen kann ein Subarray von Speicherungs-Verarbeitungseinheiten hierarchisch mit anderen Subarrays von Speicherungs-Verarbeitungseinheiten verbunden werden. Zum Beispiel können in 2 die 16 Speicherungs-Verarbeitungseinheiten zu vier Subarrays von Speicherungs-Verarbeitungseinheiten gruppiert werden. Das erste Subarray umfasst SPU0,0, SPU0,1, SPU1,0, SPU1,1; das zweite Subarray umfasst SPU0,2, SPU0,3, SPU1,2, SPU1,2; das dritte Subarray umfasst SPU2,0, SPU2,1, SPU3,0, SPU3,1; und das vierte Subarray umfasst SPU2,2, SPU2,3, SPU3,2, SPU3,3. Diese Subarrays von Speicherungs-Verarbeitungseinheiten können unter Verwendung einer der oben beschriebenen Verbindungstopologien miteinander gekoppelt werden, um dadurch hierarchische Verbindungen zwischen Speicherungs-Verarbeitungseinheiten bereitzustellen. Bei einigen Ausführungsformen kann jedes Subarray von Speicherungs-Verarbeitungseinheiten dieselbe Art von Einheits-Netzwerk-Modul verwenden. Bei anderen Ausführungsformen verwendet mindestens ein Subarray von Speicherungs-Verarbeitungseinheiten eine andere Art von Einheits-Netzwerk-Modul.
  • 3 zeigt eine Ringtopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. 3 zeigt vier Speicherungs-Verarbeitungseinheiten 302308, als ein zweidimensionales Array angeordnet. Das Einheits-Netzwerk-Modul umfasst vier Kanten 310316. Das in 3 abgebildete Einheits-Netzwerk-Modul wird als eine Ringtopologie aufweisend bezeichnet, weil das Einheits-Netzwerk-Modul die Speicherungs-Verarbeitungseinheiten in einem Ring verbindet. Jede Kante des Einheits-Netzwerk-Moduls gibt an, dass eine direkte Verbindung zwischen zwei Speicherungs-Verarbeitungseinheiten (SPU), die durch die Kante verbunden werden, besteht. Zum Beispiel sind SPU A 302 und SPU B 304 über die Verbindungskante 310 direkt miteinander verbunden. Wenn zwei SPU direkt verbunden sind, können die zwei SPU über die Verbindungskante, die die zwei SPU verbindet, Daten direkt zueinander senden. Zum Beispiel können SPU A 302 und SPU B 304 über die Verbindungskante 310 Daten direkt zueinander senden. Wenn zwei SPU nicht direkt verbunden sind, können die zwei SPU Daten über eine andere SPU zueinander senden. Zum Beispiel kann SPU A 302 entweder über SPU C 306 oder über SPU B 304 Daten zu SPU D 308 senden.
  • 4 zeigt eine modifizierte Ringtopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. Die modifizierte Ringtopologie ist der in 3 dargestellten Ringtopologie ähnlich, aber die modifizierte Ringtopologie weist eine zusätzliche diagonale Kante 402 auf.
  • Diese zusätzliche Kante 402 kann Datenkommunikation zwischen SPU B 304 und SPU C 306 erleichtern, was für bestimmte Arten von wissenschaftlicher Berechnung nützlich sein kann. Zum Beispiel kann die zusätzliche Kante 402 für eine Matrixtransponierungsoperation nützlich sein. 5A5B zeigen den Vorteil der zusätzlichen Kante 402 bei einer Matrixtransponierungsoperation gemäß einigen Ausführungsformen. 5A zeigt eine Zwei-Mal-Zwei-Matrix
    Figure DE102016013579A1_0002
    und 5B zeigt die Transponierung dieser Matrix
    Figure DE102016013579A1_0003
    Wenn Werte der Matrix P in getrennten SPU gespeichert sind (z. B. 1 in SPU0,0, 2 in SPU0,1, 5 in SPU1,0 und 6 in SPU1,1 gespeichert ist), muss die Transponierungsoperation den Ort der Werte 2 und 5 durch Umwechseln von in SPU0,1 und SPU1,0 gespeicherten Werten umordnen. In diesem Fall können, wenn SPU0,0, SPU0,1, SPU1,0, SPU1,1 unter Verwendung eines Einheits-Netzwerk-Moduls, das eine modifizierte Ringtopologie aufweist, verbunden sind, SPU0,1 und SPU1,0 die Werte direkt durch Senden von Daten zueinander über die Kante 402 umwechseln. Dies veranschaulicht, dass das Einheits-Netzwerk-Modul mit einer modifizierten Ringtopologie für eine Matrixtransponierungsoperation nützlich sein kann.
  • 6 zeigt eine Vollmaschentopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. Die Vollmaschentopologie ist der in 4 dargestellten modifizierten Ringtopologie sehr ähnlich, aber die Vollmaschentopologie weist eine zusätzliche diagonale Kante 602 auf. Diese zusätzliche Kante 602 kann Datenkommunikation zwischen SPU A 302 und SPU D 308 erleichtern, was für bestimmte Arten von wissenschaftlichen Operationen nützlich sein kann. Die zusätzliche Kante 602 kann zu zusätzlichen Grundflächenkosten auf der Leiterplatte führen, kann aber die Verarbeitungsleistung und die Anwendbarkeit des SPU-Arrays verbessern, weil das SPU-Array die zusätzliche Flexibilität hat, schnell Daten zwischen SPU A 302 und SPU D 308 zu transferieren. Ein Einheits-Netzwerk-Modul mit Vollmaschentopologie kann besonders für schnelle Fouriertransformation (FFT), einen Schlüsselwertspeicher, Such- und Sortier- und/oder Matrixberechnungen nützlich sein.
  • Abhängig von den konkreten interessierenden Anwendungen können auch andere Topologien eines Einheits-Netzwerk-Moduls nützlich sein. 7A7D zeigen vier L-Diagonal-Topologien eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. Die in 7A dargestellte Topologie wird als L-Diagonal-Topologie Typ 1 bezeichnet; die in 7B dargestellte Topologie wird als L-Diagonal-Topologie Typ 2 bezeichnet; die in 7C dargestellte Topologie wird als L-Diagonal-Topologie Typ 3 bezeichnet; und die in 7D dargestellte Topologie wird als L-Diagonal-Topologie Typ 4 bezeichnet.
  • Die L-Diagonal-Topologie umfasst im Allgemeinen eine diagonale Kante und zwei Kanten um den Rand herum, um eine L-Form zu bilden. Zum Beispiel umfasst die in 7A gezeigte L-Diagonal-Topologie Typ 1 eine umgekehrte diagonale Kante 602 und zwei Kanten 310, 312, die mit SPU A 302 gekoppelt sind. Auf diese Weise kann SPU A 302 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in 7B gezeigte L-Diagnoal-Topologie Typ 2 eine diagonale Kante 402 und zwei Kanten 310, 316, die mit SPU B 304 gekoppelt sind. Auf diese Weise kann SPU B 304 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in 7C gezeigte L-Diagnoal-Topologie Typ 3 eine diagonale Kante 402 und zwei Kanten 312, 314, die mit SPU C 306 gekoppelt sind. Auf diese Weise kann SPU C 306 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in 7D gezeigte L-Diagnoal-Topologie Typ 4 eine umgekehrte diagonale Kante 602 und zwei Kanten 314, 316, die mit SPU D 308 gekoppelt sind. Auf diese Weise kann SPU D 308 als Kommunikationsverteiler zwischen den vier Speicherungs-Verarbeitungseinheiten dienen.
  • Wenn das Speichersystem eine große Anzahl von Speicherungs-Verarbeitungseinheiten aufweist, kann das Verbinden der Speicherungs-Verarbeitungseinheiten unter Verwendung von Topologien wie oben beschrieben komplex und kostspielig sein. Ferner können einige der oben beschriebenen Topologien nicht ohne Weiteres auf größere zweidimensionale Arrays von Speicherungs-Verarbeitungseinheiten erweitert werden. Zum Beispiel kann die Ringtopologie nicht ohne Weiteres auf ein 4×4-Array von Speicherungs-Verarbeitungseinheiten erweitert werden, weil vier Speicherungs-Verarbeitungseinheiten in der Mitte des 4×4-Arrays von Speicherungs-Verarbeitungseinheiten Verbindungen zu anderen Speicherungs-Verarbeitungseinheiten fehlen würden.
  • Dieses Problem lässt sich behandeln, indem man Speicherungs-Verarbeitungseinheiten unter Verwendung eines Einheits-Netzwerk-Moduls auf hierarchische Weise verbindet.
  • Bei einigen Ausführungsformen kann ein zweidimensionales Array von Speicherungs-Verarbeitungseinheiten in mehrere Subarrays von Speicherungs-Verarbeitungseinheiten zerlegt werden, und die Speicherungs-Verarbeitungseinheiten im selben Subarray können unter Verwendung eines Einheits-Netzwerk-Moduls miteinander gekoppelt werden. 8 zeigt mehrere Subarrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. Jedes Subarray 802808 ist durch die gestrichelte Umschließung gezeigt – jedes Subarray 802808 weist vier Speicherungs-Verarbeitungseinheiten auf. Die Speicherungs-Verarbeitungseinheiten im Subarray sind unter Verwendung der in 7A gezeigten L-Diagonal-Topologie Typ 1 miteinander gekoppelt.
  • Bei einigen Ausführungsformen kann jedes Subarray dieselbe Art von Einheits-Netzwerk-Modul verwenden. Zum Beispiel verwendet in 8 jedes Subarray die identische Art von Einheits-Netzwerk-Modul: die in 7A gezeigte L-Diagonal-Topologie Typ 1.
  • Bei anderen Ausführungsformen können ein oder mehrere Subarrays verschiedene Arten von Einheits-Netzwerk-Modulen verwenden. 9 zeigt mehrere Subarrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. In 9 verwenden ein oder mehrere der Subarrays 902908 verschiedene Arten von Einheits-Netzwerk-Modulen. Zum Beispiel verwendet das obere linke Subarray 902 ein Einheits-Netzwerk-Modul mit einer modifizierten Ringtopologie, und das untere rechte Subarray 908 verwendet ein Einheits-Netzwerk-Modul mit einer L-Diagonal-Topologie Typ 2. Wenn ein erstes der Subarrays für eine erste Anwendung (z. B. FFT-Berechnung) und ein zweites der Subarrays für eine zweite Anwendung (z. B. Matrixtransponierungsoperation) verwendet wird, kann auf diese Weise dann das Einheits-Netzwerk-Modul für das erste und das zweite unabhängig konfiguriert werden, um die Leistungsfähigkeit für jeweilige Anwendungen zu verbessern.
  • Bei einigen Ausführungsformen können die Subarrays unter Verwendung einer oder mehrerer der oben offenbarten Topologien miteinander verbunden werden, um dadurch ein hierarchisches Verbindungsnetzwerk von Speicherungs-Verarbeitungseinheiten zu bilden. 10 zeigt ein hierarchisches modifiziertes Ringnetzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. In 10 verwendet jedes Subarray 10021008 ein Einheits-Netzwerk-Modul mit einer modifizierten Ringtopologie. Die Subarrays 10021008 sind ihrerseits unter Verwendung derselben modifizierten Ringtopologie miteinander verbunden, wie durch die die gestrichelten Einschließungen verbindenden dicken Pfeile gezeigt. Auf diese Weise kann ein hierarchisches modifiziertes Ringnetzwerk von SPU gebildet werden. Dieses hierarchische modifizierte Ringnetzwerk von Speicherungs-Verarbeitungseinheiten kann als hierarchisches modifiziertes Ringnetzwerk(HMRN)-4 bezeichnet werden, weil es vier modifizierte Einheits-Ringnetzwerk-Verbindungen gibt, die hierarchisch verbunden sind.
  • Bei einigen Ausführungsformen kann das Routing der Schnittstelle über die Subarrays von Speicherungs-Verarbeitungseinheiten hinweg auf der Basis der Menge an in SPU verfügbarem Pufferspeicher bestimmt werden. Zum Beispiel stellt die Schnittstelle 1010 direkte Kommunikation zwischen dem ersten Subarray 1002 und dem zweiten Subarray 1004 bereit. 10 zeigt, dass die Schnittstelle 1010 mit SPU0,1 des ersten Subarrays 1002 und SPU0,2 des zweiten Subarrays 1004 verbunden ist. Bei einigen Ausführungsformen kann die Schnittstelle 1010 jedoch abhängig von der Menge an in SPU0,1, SPU0,2, SPU1,1 und SPU1,2 verfügbarem Pufferspeicher mit SPU1,1 des ersten Subarrays 1002 und/oder SPU1,2 des zweiten Subarrays 1002 verbunden werden. Wenn zum Beispiel SPU1,1 verglichen mit SPU0,1 mehr Pufferspeicher verfügbar hat, kann die Schnittstelle 1010 mit SPU1,1 verbunden werden. Ähnlich kann, wenn SPU1,2 verglichen mit SPU0,2 mehr Pufferspeicher verfügbar hat, die Schnittstelle 1010 mit SPU1,2 verbunden werden. Deshalb gibt es vier Arten, die Schnittstelle 1010 zwischen dem Subarray 1002 und dem zweiten Subarray 1004 bereitzustellen. Dies gilt ähnlich für die Schnittstellen zwischen dem zweiten Subarray 1004 und dem dritten Subarray 1006; dem dritten Subarray 1006 und dem vierten Subarray 1008; und dem vierten Subarray 1008 und dem ersten Subarray 1002.
  • In einigen Fällen kann das hierarchische Verbindungsnetzwerk rekursiv gebildet werden. Zum Beispiel können vier HMRN-4 zur Konstruktion von HMRN-16 verwendet werden, wobei die vier HMRN-4 unter Verwendung einer modifizierten Ringnetzwerkverbindung der Einheit verbunden werden. Ähnlich können vier HMRN-16 zur Konstruktion von HMRN-64 verwendet werden, wobei vier HMRN-16 unter Verwendung einer modifizierten Ringnetzwerkverbindung der Einheit verbunden werden. Als Verallgemeinerung können vier HMRN-N/4 zur Konstruktion von HMRN-N verwendet werden, wobei die vier HMRN-N/4 unter Verwendung einer modifizierten Ringnetzwerkverbindung der Einheit verbunden werden.
  • 11 zeigt ein hierarchisches Maschennetzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. In 11 verwendet jedes Subarray 11021108 ein Einheits-Netzwerk-Modul mit Vollmaschentopologie. Die Subarrays 11021108 sind ihrerseits unter Verwendung derselben Vollmaschentopologie miteinander verbunden, wie durch die dicken Pfeile gezeigt, die die gestrichelten Einschließungen verbinden. Auf diese Weise kann ein hierarchisches Vollmaschennetzwerk von Speicherungs-Verarbeitungseinheiten gebildet werden. Das in 11 gezeigte Vollmaschennetzwerk kann als das hierarchische Vollmaschennetzwerk(HFMN)-4 bezeichnet werden.
  • Bei einigen Ausführungsformen kann das Routing der Schnittstelle über die Subarrays von Speicherungs-Verarbeitungseinheiten hinweg auf der Basis der Menge an in SPU verfügbarem Pufferspeicher bestimmt werden. Zum Beispiel stellt die Schnittstelle 1110 direkte Kommunikation zwischen dem ersten Subarray 1102 und dem zweiten Subarray 1104 bereit. 11 zeigt, dass die Schnittstelle 1110 mit SPU0,1 des ersten Subarrays 1102 und SPU0,2 des zweiten Subarrays 1104 verbunden ist. Bei einigen Ausführungsformen kann die Schnittstelle 1110 jedoch mit SPU1,1 des ersten Subarrays 1102 und/oder SPU1,2 des zweiten Subarrays 1102 verbunden sein, abhängig von der Menge an in SPU0,1, SPU0,2, SPU1,1 und SPU1,2 verfügbarem Pufferspeicher. Wenn zum Beispiel SPU1,1 verglichen mit SPU0,1 mehr Pufferspeicher verfügbar hat, kann die Schnittstelle 1110 mit SPU1,1 verbunden werden. Ähnlich kann wenn SPU1,2 verglichen mit SPU0,2 mehr Pufferspeicher verfügbar hat, die Schnittstelle 1110 mit SPU1,2 verbunden werden. Deshalb gibt es vier verschiedene Weisen der Bereitstellung der Schnittstelle 1110 zwischen dem ersten Subarray 1102 und dem zweiten Subarray 1104. Dies gilt ähnlich für die Schnittstellen zwischen dem zweiten Subarray 1104 und dem dritten Subarray 1106; dem dritten Subarray 1106 und dem vierten Subarray 1108; und dem vierten Subarray 1108 und dem ersten Subarray 1102.
  • In einigen Fällen kann das hierarchische Vollmaschennetzwerk rekursiv gebildet werden. Zum Beispiel können vier HFMN-4 zur Konstruktion von HFMN-16 verwendet werden, wobei die vier HFMN-4 unter Verwendung einer Vollmaschen-Netzwerkverbindung der Einheit verbunden werden. Ähnlich können vier HFMN-16 zur Konstruktion von HFMN-64 verwendet werden, wobei vier HFMN-16 unter Verwendung einer Vollmaschen-Netzwerkverbindung der Einheit verbunden werden. Als Verallgemeinerung können vier HFMN-N/4 zur Konstruktion von HFMN-N verwendet werden, wobei die vier HFMN-N/4 unter Verwendung einer Vollmaschen-Netzwerkverbindung der Einheit verbunden werden.
  • Bei einigen Ausführungsformen kann das hierarchische Verbindungsnetzwerk von Speicherungs-Verarbeitungseinheiten zwei oder mehr Arten von Einheits-Netzwerk-Modulen verwenden. Wenn ein erstes Subarray von Speicherungs-Verarbeitungseinheiten mit einem zweiten Subarray von Speicherungs-Verarbeitungseinheiten über eine Schnittstelle verbunden wird, kann die Schnittstelle den Kommunikationsverteiler des ersten Subarrays und den Kommunikationsverteiler des zweiten Subarrays verbinden. Wenn zum Beispiel das erste Subarray ein Einheits-Netzwerk-Modul vom L-Diagonal-Typ 1 (wie in 7A gezeigt) umfasst und das erste Subarray ein Einheits-Netzwerk-Modul vom L-Diagonal-Typ 2 (wie in 7B gezeigt) umfasst, kann die Schnittstelle, die das erste Subarray und das zweite Subarray verbindet, SPU A 302 des ersten Subarrays und SPU B 304 des zweiten Subarrays verbinden.
  • Bei einigen Ausführungsformen können die Arten von Einheits-Netzwerk-Modulen, die in dem hierarchischen Verbindungsnetzwerk verwendet werden, von der konkreten Anwendung abhängen. Man betrachte zum Beispiel eine Matrix-Blocktransponierungsoperation. Man nehme an, dass eine Matrix X Blockmatrizen A, B, C und D wie folgt umfasst:
    Figure DE102016013579A1_0004
    Dann kann die Transponierung von X, die als XT definiert ist, folgendermaßen berechnet werden:
    Figure DE102016013579A1_0005
    Dies zeigt, dass AT und DT an derselben Position bleiben, aber BT und CT die Positionen gewechselt haben.
  • Dieses Merkmal einer Matrix-Blocktransponierungsoperation kann durch das Array von Speicherungs-Verarbeitungseinheiten wirksam eingesetzt werden. 12 zeigt ein hierarchisches Netzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. Das Netzwerk in 12 verwendet drei Arten von Einheits-Netzwerk-Modulen; die L-Diagonal-Topologie Typ 1, die L-Diagonal-Topologie Typ 2 und die L-Diagonal-Topologie Typ 3, und nur zwei dieser Einheits-Netzwerk-Module sind unter Verwendung einer einzigen Diagonalverbindung 1210, wie durch einen dicken Pfeil gezeigt, verbunden.
  • Bei einigen Ausführungsformen kann das in 12 gezeigte Array von Speicherungs-Verarbeitungseinheiten nützlich sein, um eine Matrix-Blocktransponierungsoperation für Matrizen auszuführen, die eine Größe von mehr als 4×4 aufweisen. 13 zeigt die Blocktransponierungsoperation 1300 unter Verwendung des Arrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen.
  • In Schritt 1302 kann der Speichercontroller 106 die Speicherungs-Verarbeitungseinheiten mit der Eingangsmatrix X beladen. Man nehme an, dass die Eingangsmatrix X 4×4 ist, aufgeteilt in vier 2×2-Matrizen. Jede 2×2-Matrix wird auf eines der Subarrays 1202, 1204, 1206, 1208 geladen. Die dem Subarray 1202 entsprechende 2×2-Matrix kann als A bezeichnet werden; die dem Subarray 1204 entsprechende 2×2-Matrix kann als B bezeichnet werden; die dem Subarray 1206 entsprechende 2×2-Matrix kann als C bezeichnet werden; und die dem Subarray 1208 entsprechende 2×2-Matrix kann als D bezeichnet werden. Ein Beispiel für die Eingangsmatrix X und die Konfiguration, in der die Eingangsmatrix X auf das Array von Speicherungs-Verarbeitungseinheiten geladen wird, ist in 14A gezeigt.
  • In Schritt 1304 kann jedes der Subarrays lokal unter Verwendung des Einheits-Netzwerk-Moduls und/oder des Beschleunigers in den jeweiligen Speicherungs-Verarbeitungseinheiten lokal eine Transponierungsoperation ausführen. Nach dieser lokalen blockweisen Transponierungsoperation kann die dem Subarray 1202 entsprechende 2×2-Matrix AT unterhalten; die dem Subarray 1204 entsprechende 2×2-Matrix kann BT unterhalten; die dem Subarray 1206 entsprechende 2×2-Matrix kann CT unterhalten; und die dem Subarray 1204 entsprechende 2×2-Matrix kann DT unterhalten. Das Ergebnis der lokalen blockweisen Transponierungsoperation ist in 14B gezeigt. Die fetten Zahlen in 14B geben die Elemente der Matrix X an, deren Orte mittels der lokalen blockweisen Transponierungsoperation umgewechselt wurden.
  • In Schritt 1306 können das Subarray 1204 und das Subarray 1206 die transponierten Blockmatrizen BT und CT umwechseln, um die Matrixtransponierungsoperation abzuschließen. Da SPU1,2 und SPU2,1 den Verteiler des Subarrays 1204 bzw. des Subarrays 1206 bilden, kann die Diagonalverbindung 1210 zwischen dem Subarray 1204 und dem Subarray 1206 effizient Daten zwischen dem Subarray 1204 und dem Subarray 1206 transferieren. Nach Schritt 1306 kann das Array von SPU die Transponierung der Eingangsmatrix X unterhalten:
    Figure DE102016013579A1_0006
    Das Ergebnis von Schritt 1306 an den in 14B gezeigten Daten ist in 14C gezeigt. Die fetten Zahlen in 14C geben die Elemente der Matrix X an, deren Orte mittels Schritt 1306 umgewechselt wurden.
  • Bei einigen Ausführungsformen können die in 13 dargestellten Operationen iterativ ausgeführt werden, um eine Transponierungsoperation einer größeren Matrix auszuführen, zum Beispiel einer 8×8-Matrix, einer 16×16-Matrix und einer beliebigen Matrix mit der Größe 2N × 2N, wobei N eine ganze Zahl ist.
  • 15 zeigt ein hierarchisches Netzwerk von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. Das Netzwerk in 15 verwendet drei Arten von Einheits-Netzwerk-Modulen: die L-Diagonal-Topologie Typ 1, die L-Diagonal-Topologie Typ 2 und die L-Diagonal-Topologie Typ 3, und diese Einheits-Netzwerkmodule sind unter Verwendung einer Vollmaschentopologie, wie durch dicke Pfeile gezeigt, verbunden. Das Array von Speicherungs-Verarbeitungseinheiten in 15 kann auch zum Ausführen einer Matrix-Blocktransponierungsoperation gemäß dem in 13 dargestellten Prozess verwendet werden.
  • Wenn hier ein Verfahren erwähnt wird, das zwei oder mehr definierte Schritte umfasst, können die definierten Schritte in einer beliebigen Reihenfolge oder gleichzeitig ausgeführt werden (außer wenn es der Kontext anderweitig angäbe), und das Verfahren kann einen oder mehrere andere Schritte umfassen, die vor beliebigen der definierten Schritte, zwischen zwei der definierten Schritte oder nach allen definierten Schritten ausgeführt werden (außer wenn es der Kontext anderweitig angäbe).
  • Für Fachleute ist erkennbar, dass verschiedene hier beschriebene Veranschaulichungen als elektronische Hardware, Computersoftware, Firmware oder Kombinationen von zwei oder mehr von elektronischer Hardware, Computersoftware und Firmware implementiert werden können. Um diese Austauschbarkeit von Hardware, Software und/oder Firmware zu veranschaulichen, wurden oben allgemein im Hinblick auf ihre Funktionalität verschiedene beispielhafte Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen beschrieben. Ob solche Funktionalität als Hardware, Software, Firmware oder eine Kombination implementiert wird, richtet sich nach der konkreten Anwendung und Entwicklungsbeschränkungen, die dem Gesamtsystem auferlegt werden. Fachleute können die beschriebene Funktionalität für jede konkrete Anwendung auf unterschiedliche Weisen implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet (zum Beispiel in einer anderen Reihenfolge angeordnet oder auf eine andere Weise aufgeteilt) werden, ohne den Schutzumfang der vorliegenden Technologie zu verlassen. Eine Implementierung des offenbarten Gegenstands kann auf zentralisierte Weise in einem Computersystem oder auf verteilte Weise realisiert werden, wobei verschiedene Elemente über mehrere miteinander verbundene Computersysteme verteilt sind. Jede beliebige Art von Computersystem oder andere Vorrichtung, die zum Ausführen der hier beschriebenen Verfahren ausgelegt ist, ist für die Ausführung der hier beschriebenen Funktionen geeignet.
  • Eine typische Kombination von Hardware und Software könnte ein Vielzweck-Computersystem mit einem Computerprogramm sein, das, wenn es geladen und ausgeführt wird, das Computersystem so steuert, dass es die hier beschriebenen Verfahren ausführt. Der offenbarte Gegenstand kann auch in einem Computerprogrammprodukt eingebettet sein, das alle Merkmale umfasst, die die Implementierung der hier beschriebenen Verfahren und Systeme ermöglichen, und das, wenn es in ein Computersystem geladen ist, diese Verfahren ausführen kann.
  • Computerprogramm oder Anwendung bedeutet im vorliegenden Kontext einen beliebigen Ausdruck in einer beliebigen Sprache, einem beliebigen Code oder einer beliebigen Mutation einer Menge von Anweisungen, die dafür bestimmt ist, zu bewirken, dass ein System, das eine Informationsverarbeitungsfähigkeit aufweist, eine bestimmte Funktion entweder direkt ausführt oder nach einem oder beidem von Folgendem: a) Umsetzung in eine andere Sprache, einen anderen Code oder eine andere Mutation; b) Reproduktion in einer anderen materiellen Form. Insbesondere können die hier beschriebenen Systeme und Verfahren auch in anderen spezifischen Formen realisiert werden, ohne vom Wesen oder den wesentlichen Attributen davon abzuweichen, und dementsprechend sollte man sich auf die folgenden Ansprüche beziehen, statt auf die obige Beschreibung, um den Schutzumfang der Systeme und Verfahren zu bestimmen.
  • Die vorliegende Offenbarung wurde im Detail mit spezifischer Erwähnung dieser dargestellten Ausführungsformen beschrieben. Es ist jedoch ersichtlich, dass innerhalb des Wesens und Schutzumfangs der Offenbarung, sowie sie in der obigen Beschreibung beschrieben wird, verschiedene Modifikationen und Änderungen vorgenommen werden können und diese Modifikationen und Änderungen als Äquivalente und Teil der vorliegenden Offenbarung zu betrachten sind.

Claims (20)

  1. Halbleitervorrichtungssystem, umfassend: mehrere Speicherungs-Verarbeitungseinheiten, die als zweidimensionales Array angeordnet sind, wobei jede der mehreren Speicherungs-Verarbeitungseinheiten eine rechnerische Einheit und ein nichtflüchtiges Speichermodul umfasst; und ein Verbindungsnetzwerk, das mehrere Einheits-Netzwerk-Module umfasst, wobei das Verbindungsnetzwerk dafür ausgelegt ist, Datenkommunikation zwischen den mehreren Speicherungs-Verarbeitungseinheiten bereitzustellen; wobei die mehreren Speicherungs-Verarbeitungseinheiten zu mehreren Subarrays von Speicherungs-Verarbeitungseinheiten gruppiert werden; und wobei die Speicherungs-Verarbeitungseinheiten in einem ersten Subarray der mehreren Subarrays unter Verwendung eines ersten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt sind.
  2. System nach Anspruch 1, wobei Speicherungs-Verarbeitungseinheiten in einem zweiten Subarray der mehreren Subarrays unter Verwendung eines zweiten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt sind.
  3. System nach Anspruch 2, wobei die mehreren Subarrays, einschließlich des ersten Subarrays und des zweiten Subarrays, unter Verwendung eines dritten der mehreren Einheits-Netzwerk-Module miteinander gekoppelt sind, um dadurch eine hierarchische Verbindung von Speicherungs-Verarbeitungseinheiten zu bilden.
  4. System nach Anspruch 3, wobei jedes der Einheits-Netzwerk-Module eine erste Art von Verbindungstopologie aufweist.
  5. System nach Anspruch 4, wobei die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie umfasst.
  6. System nach Anspruch 4, wobei die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie umfasst.
  7. System nach Anspruch 3, wobei das erste der mehreren Einheits-Netzwerk-Module eine erste Art von Verbindungstopologie aufweist und das zweite der mehreren Einheits-Netzwerk-Module eine zweite Art von Verbindungstopologie aufweist.
  8. System nach Anspruch 3, wobei das erste Subarray diagonal von dem zweiten Subarray angeordnet ist und das dritte der mehreren Einheits-Netzwerk-Module eine diagonale Verbindung aufweist, die dafür ausgelegt ist, das erste Subarray und das zweite Subarray direkt zu verbinden.
  9. System nach Anspruch 8, wobei die diagonale Verbindung dafür ausgelegt ist, einen Kommunikationsverteiler des ersten Subarrays und einen Kommunikationsverteiler des zweiten Subarrays direkt zu verbinden.
  10. System nach Anspruch 1, wobei die mehreren Speicherungs-Verarbeitungseinheiten auf einer Leiterplatte angeordnet sind und das Verbindungsnetzwerk einen elektrischen Leiter auf der Leiterplatte umfasst.
  11. System nach Anspruch 1, das ferner einen Speichercontroller umfasst, der dafür ausgelegt ist, Datentransfer zwischen den mehreren Speicherungs-Verarbeitungseinheiten über das Verbindungsnetzwerk einzuteilen.
  12. System nach Anspruch 11, wobei der Speichercontroller ferner ausgelegt ist zum: Laden mehrerer Blöcke entsprechend einer zweidimensionalen Matrix auf die mehreren Subarrays; Triggern der mehreren Subarrays, lokal eine Transponierungsoperation auszuführen, um eine Transponierung der mehreren Blöcke zu berechnen; und Triggern zweier der Subarrays, die Transponierung von in den beiden Subarrays gespeicherten Blöcken über das Verbindungsnetzwerk auszutauschen.
  13. System nach Anspruch 12, wobei der Speichercontroller dafür ausgelegt ist, eine Route in dem Verbindungsnetzwerk zu bestimmen, über die die zwei der Subarrays die Transponierung von Blöcken austauschen.
  14. System nach Anspruch 1, wobei die rechnerische Einheit in den mehreren Speicherungs-Verarbeitungseinheiten dafür ausgelegt ist, wissenschaftliche Berechnung durchzuführen.
  15. System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 1 umfasst.
  16. System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 2 umfasst.
  17. System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 3 umfasst.
  18. System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 4 umfasst.
  19. System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Vollmaschen-Einheits-Netzwerk-Modul umfasst.
  20. System, umfassend: das Halbleitervorrichtungssystem nach Anspruch 1; und eine Hostvorrichtung in Datenkommunikation mit dem Halbleitervorrichtungssystem, wobei die Hostvorrichtung ausgelegt ist zum Senden von Daten zu dem Halbleitervorrichtungssystem zur Verarbeitung durch die rechnerische Einheit in den mehreren Speicherungs-Verarbeitungseinheiten.
DE102016013579.4A 2015-11-13 2016-11-14 Speicherungs-Prozessorarray für wissenschaftliche Berechnungen Pending DE102016013579A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/941,198 US10108377B2 (en) 2015-11-13 2015-11-13 Storage processing unit arrays and methods of use
US14/941,198 2015-11-13

Publications (1)

Publication Number Publication Date
DE102016013579A1 true DE102016013579A1 (de) 2017-05-18

Family

ID=58640376

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016013579.4A Pending DE102016013579A1 (de) 2015-11-13 2016-11-14 Speicherungs-Prozessorarray für wissenschaftliche Berechnungen

Country Status (5)

Country Link
US (1) US10108377B2 (de)
JP (1) JP2017117439A (de)
KR (1) KR101914833B1 (de)
CN (1) CN107015762B (de)
DE (1) DE102016013579A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10057334B2 (en) * 2016-11-14 2018-08-21 Futurewei Technologies, Inc. Quad full mesh and dimension driven network architecture

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401161B2 (en) 2000-12-18 2008-07-15 Sun Microsystems, Inc. High performance storage array interconnection fabric using multiple independent paths
US6718428B2 (en) * 2000-12-18 2004-04-06 Sun Microsystems, Inc. Storage array interconnection fabric using a torus topology
US6711068B2 (en) * 2002-06-28 2004-03-23 Motorola, Inc. Balanced load memory and method of operation
US20040236891A1 (en) 2003-04-28 2004-11-25 International Business Machines Corporation Processor book for building large scalable processor systems
US7486619B2 (en) * 2004-03-04 2009-02-03 International Business Machines Corporation Multidimensional switch network
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
CN100449522C (zh) * 2007-07-12 2009-01-07 浙江大学 基于多fpga的矩阵乘法并行计算系统
US8397011B2 (en) 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
US8285919B2 (en) 2008-05-27 2012-10-09 Initio Corporation SSD with improved bad block management
US10236032B2 (en) 2008-09-18 2019-03-19 Novachips Canada Inc. Mass data storage system with non-volatile memory modules
KR101491484B1 (ko) 2010-06-18 2015-02-10 엘에스아이 코포레이션 스케일러블 스토리지 디바이스들
US9606863B2 (en) * 2010-10-25 2017-03-28 SMART High Reliability Solutions, LLC Fabric-based solid state drive architecture
US10037272B2 (en) 2012-08-08 2018-07-31 Avalanche Technology, Inc. Storage system employing MRAM and array of solid state disks with integrated switch
US9026719B2 (en) 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
US9258191B2 (en) * 2012-12-13 2016-02-09 Microsoft Technology Licensing, Llc Direct network having plural distributed connections to each resource
JP5985403B2 (ja) * 2013-01-10 2016-09-06 株式会社東芝 ストレージ装置
JP5996497B2 (ja) 2013-08-22 2016-09-21 株式会社東芝 ストレージ装置
US8850108B1 (en) * 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9661552B2 (en) * 2014-11-06 2017-05-23 Facebook, Inc. Association in line-of-sight communication networks
KR101564712B1 (ko) 2015-04-01 2015-11-02 인하대학교 산학협력단 Scst를 이용한 총 플래시 어레이 스토리지 가상화 방법

Also Published As

Publication number Publication date
US20170139606A1 (en) 2017-05-18
CN107015762B (zh) 2020-01-07
US10108377B2 (en) 2018-10-23
JP2017117439A (ja) 2017-06-29
CN107015762A (zh) 2017-08-04
KR20170058294A (ko) 2017-05-26
KR101914833B1 (ko) 2018-11-02

Similar Documents

Publication Publication Date Title
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
DE102016211642B4 (de) Patch-speichersystem
DE69132495T2 (de) Verteilter Verarbeitungsspeicher
DE102015109124B4 (de) Cache-Wegvorhersage
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE69229464T2 (de) Quasi radix-16 prozessor und verfahren
DE202017106562U1 (de) Vektorverarbeitungseinheit
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE102015224026A1 (de) Indirektes Erfassen von Sampledaten zur Durchführung mehrfacher Faltungsoperationen in einem Parallelverarbeitungssystem
DE102013106154A1 (de) Speichersystem und Ein-Chip-System mit linearer Adress-Remapping-Logik
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102020113949A1 (de) Interconnect von Fabric-Die zu Fabric-Die für modularisierte integrierte Schaltungsvorrichtungen
DE102010044531A1 (de) Autonome Speicherarchitektur
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE69734551T2 (de) Verfahren und Gerät zur Erzeugung von Paritätsblöcken
DE112021001470T5 (de) Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie
DE102020133878A1 (de) Technologien für spaltenbasierte datenlayouts für geclusterte datensysteme
DE102020133667A1 (de) Technologien zum Durchführen von Spaltenleseoperationen an geclusterten Daten in einer DIMM-Architektur
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE102019117475A1 (de) Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CALIF., US

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CALIF., US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US