DE102016013579A1 - Speicherungs-Prozessorarray für wissenschaftliche Berechnungen - Google Patents
Speicherungs-Prozessorarray für wissenschaftliche Berechnungen Download PDFInfo
- 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
Links
- 238000004364 calculation method Methods 0.000 title abstract description 10
- 238000012545 processing Methods 0.000 claims abstract description 138
- 238000004891 communication Methods 0.000 claims abstract description 39
- 239000011159 matrix material Substances 0.000 claims description 40
- 230000017105 transposition Effects 0.000 claims description 20
- 239000004065 semiconductor Substances 0.000 claims description 15
- 238000003491 array Methods 0.000 claims description 12
- 238000012546 transfer Methods 0.000 claims description 4
- 239000004020 conductor Substances 0.000 claims description 3
- 238000000034 method Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000035772 mutation Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-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
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. -
5A –5B 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. -
7A –7D 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. -
14A –14C zeigen die Blocktransponierungsoperation von13 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 Datenverarbeitungssystem100 kann ein Hostsystem102 und ein Speicherungssystem104 umfassen, wobei das Speicherungssystem104 einen Speichercontroller106 , mehrere Speicherungs-Verarbeitungseinheiten108a –108d und ein Verbindungsnetzwerk114 zwischen den mehreren Speicherungs-Verarbeitungseinheiten108a –108d umfasst. - Das Hostsystem
102 kann ein Computersystem umfassen, das ein Speicherungssystem104 für Datenlese- und Datenschreiboperationen verwendet und auf dieses zugreift. Ein solches Hostsystem102 kann Anwendungen wie Datenbanken, Dateisysteme und Webdienste ausführen. Das Hostsystem102 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 Hostsystem102 physisch mit dem Speicherungssystem104 colokalisiert (z. B. physisch nahe diesem) befinden. Bei solchen Ausführungsformen kann das Hostsystem102 dafür ausgelegt sein, über einen Bus mit dem Speicherungssystem104 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 Hostsystem102 physisch von dem Speicherungssystem104 getrennt sein. Bei solchen Ausführungsformen kann das Hostsystem102 über ein Kommunikationsnetzwerk mit dem Speicherungssystem104 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 Hostsystem102 und dem Speicherungssystem104 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 Speichercontroller106 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 Speichercontroller106 befinden kann. Der Prozessor kann dazu ausgelegt sein, Anweisungen oder Computercode auszuführen, die bzw. der in einem in dem Speichercontroller106 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-Speicherungseinheit110 zum Unterhalten von Daten und einen Beschleuniger112 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 Beschleuniger112 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 Beschleuniger112 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-Verarbeitungseinheiten108 bereitzustellen. Das Verbindungsnetzwerk114 kann in Hardware implementiert werden, um Daten zu senden und zu empfangen. Das Verbindungsnetzwerk114 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-Verarbeitungseinheiten108 ermöglichen. Das Verbindungsnetzwerk114 kann dafür ausgelegt sein, Kommunikation in einer Anzahl von Kommunikationsprotokollen bereitzustellen. Bei einigen Ausführungsformen kann das Verbindungsnetzwerk114 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 Verbindungsnetzwerk114 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 Verbindungsnetzwerk114 Daten zu einer Ziel-Speicherungs-Verarbeitungseinheit senden. Wenn das Verbindungsnetzwerk114 die Quellen-Speicherungs-Verarbeitungseinheit direkt mit der Ziel-Speicherungs-Verarbeitungseinheit koppelt, kann die Quellen-Speicherungs-Verarbeitungseinheit Daten direkt über das Verbindungsnetzwerk114 zu der Ziel-Speicherungs-Verarbeitungseinheit senden. Wenn das Verbindungsnetzwerk114 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 Verbindungsnetzwerk114 zu der Ziel-Speicherungs-Verarbeitungseinheit senden. Bei einigen Ausführungsformen kann der Speichercontroller106 das Routing von Daten im Verbindungsnetzwerk114 zentral einteilen. Bei anderen Ausführungsformen können mehrere Speicherungs-Verarbeitungseinheiten das Routing von Daten im Verbindungsnetzwerk114 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 und7 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-Verarbeitungseinheiten302 –308 , als ein zweidimensionales Array angeordnet. Das Einheits-Netzwerk-Modul umfasst vier Kanten310 –316 . Das in3 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 A302 und SPU B304 über die Verbindungskante310 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 A302 und SPU B304 über die Verbindungskante310 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 A302 entweder über SPU C306 oder über SPU B304 Daten zu SPU D308 senden. -
4 zeigt eine modifizierte Ringtopologie eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. Die modifizierte Ringtopologie ist der in3 dargestellten Ringtopologie ähnlich, aber die modifizierte Ringtopologie weist eine zusätzliche diagonale Kante402 auf. - Diese zusätzliche Kante
402 kann Datenkommunikation zwischen SPU B304 und SPU C306 erleichtern, was für bestimmte Arten von wissenschaftlicher Berechnung nützlich sein kann. Zum Beispiel kann die zusätzliche Kante402 für eine Matrixtransponierungsoperation nützlich sein.5A –5B zeigen den Vorteil der zusätzlichen Kante402 bei einer Matrixtransponierungsoperation gemäß einigen Ausführungsformen.5A zeigt eine Zwei-Mal-Zwei-Matrixund5B zeigt die Transponierung dieser MatrixWenn 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 Kante402 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 in4 dargestellten modifizierten Ringtopologie sehr ähnlich, aber die Vollmaschentopologie weist eine zusätzliche diagonale Kante602 auf. Diese zusätzliche Kante602 kann Datenkommunikation zwischen SPU A302 und SPU D308 erleichtern, was für bestimmte Arten von wissenschaftlichen Operationen nützlich sein kann. Die zusätzliche Kante602 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 A302 und SPU D308 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.
7A –7D zeigen vier L-Diagonal-Topologien eines Einheits-Netzwerk-Moduls gemäß einigen Ausführungsformen. Die in7A dargestellte Topologie wird als L-Diagonal-Topologie Typ 1 bezeichnet; die in7B dargestellte Topologie wird als L-Diagonal-Topologie Typ 2 bezeichnet; die in7C dargestellte Topologie wird als L-Diagonal-Topologie Typ 3 bezeichnet; und die in7D 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 Kante602 und zwei Kanten310 ,312 , die mit SPU A302 gekoppelt sind. Auf diese Weise kann SPU A302 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in7B gezeigte L-Diagnoal-Topologie Typ 2 eine diagonale Kante402 und zwei Kanten310 ,316 , die mit SPU B304 gekoppelt sind. Auf diese Weise kann SPU B304 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in7C gezeigte L-Diagnoal-Topologie Typ 3 eine diagonale Kante402 und zwei Kanten312 ,314 , die mit SPU C306 gekoppelt sind. Auf diese Weise kann SPU C306 als Kommunikationsverteiler zwischen den vier SPU dienen. Als ein anderes Beispiel umfasst die in7D gezeigte L-Diagnoal-Topologie Typ 4 eine umgekehrte diagonale Kante602 und zwei Kanten314 ,316 , die mit SPU D308 gekoppelt sind. Auf diese Weise kann SPU D308 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 Subarray802 –808 ist durch die gestrichelte Umschließung gezeigt – jedes Subarray802 –808 weist vier Speicherungs-Verarbeitungseinheiten auf. Die Speicherungs-Verarbeitungseinheiten im Subarray sind unter Verwendung der in7A 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 in7A 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. In9 verwenden ein oder mehrere der Subarrays902 –908 verschiedene Arten von Einheits-Netzwerk-Modulen. Zum Beispiel verwendet das obere linke Subarray902 ein Einheits-Netzwerk-Modul mit einer modifizierten Ringtopologie, und das untere rechte Subarray908 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. In10 verwendet jedes Subarray1002 –1008 ein Einheits-Netzwerk-Modul mit einer modifizierten Ringtopologie. Die Subarrays1002 –1008 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 Subarray1002 und dem zweiten Subarray1004 bereit.10 zeigt, dass die Schnittstelle1010 mit SPU0,1 des ersten Subarrays1002 und SPU0,2 des zweiten Subarrays1004 verbunden ist. Bei einigen Ausführungsformen kann die Schnittstelle1010 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 Subarrays1002 und/oder SPU1,2 des zweiten Subarrays1002 verbunden werden. Wenn zum Beispiel SPU1,1 verglichen mit SPU0,1 mehr Pufferspeicher verfügbar hat, kann die Schnittstelle1010 mit SPU1,1 verbunden werden. Ähnlich kann, wenn SPU1,2 verglichen mit SPU0,2 mehr Pufferspeicher verfügbar hat, die Schnittstelle1010 mit SPU1,2 verbunden werden. Deshalb gibt es vier Arten, die Schnittstelle1010 zwischen dem Subarray1002 und dem zweiten Subarray1004 bereitzustellen. Dies gilt ähnlich für die Schnittstellen zwischen dem zweiten Subarray1004 und dem dritten Subarray1006 ; dem dritten Subarray1006 und dem vierten Subarray1008 ; und dem vierten Subarray1008 und dem ersten Subarray1002 . - 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. In11 verwendet jedes Subarray1102 –1108 ein Einheits-Netzwerk-Modul mit Vollmaschentopologie. Die Subarrays1102 –1108 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 in11 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 Subarray1102 und dem zweiten Subarray1104 bereit.11 zeigt, dass die Schnittstelle1110 mit SPU0,1 des ersten Subarrays1102 und SPU0,2 des zweiten Subarrays1104 verbunden ist. Bei einigen Ausführungsformen kann die Schnittstelle1110 jedoch mit SPU1,1 des ersten Subarrays1102 und/oder SPU1,2 des zweiten Subarrays1102 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 Schnittstelle1110 mit SPU1,1 verbunden werden. Ähnlich kann wenn SPU1,2 verglichen mit SPU0,2 mehr Pufferspeicher verfügbar hat, die Schnittstelle1110 mit SPU1,2 verbunden werden. Deshalb gibt es vier verschiedene Weisen der Bereitstellung der Schnittstelle1110 zwischen dem ersten Subarray1102 und dem zweiten Subarray1104 . Dies gilt ähnlich für die Schnittstellen zwischen dem zweiten Subarray1104 und dem dritten Subarray1106 ; dem dritten Subarray1106 und dem vierten Subarray1108 ; und dem vierten Subarray1108 und dem ersten Subarray1102 . - 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 in7B gezeigt) umfasst, kann die Schnittstelle, die das erste Subarray und das zweite Subarray verbindet, SPU A302 des ersten Subarrays und SPU B304 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: Dann kann die Transponierung von X, die als XT definiert ist, folgendermaßen berechnet werden: 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 in12 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 Diagonalverbindung1210 , 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 Blocktransponierungsoperation1300 unter Verwendung des Arrays von Speicherungs-Verarbeitungseinheiten gemäß einigen Ausführungsformen. - In Schritt
1302 kann der Speichercontroller106 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 Subarrays1202 ,1204 ,1206 ,1208 geladen. Die dem Subarray1202 entsprechende 2×2-Matrix kann als A bezeichnet werden; die dem Subarray1204 entsprechende 2×2-Matrix kann als B bezeichnet werden; die dem Subarray1206 entsprechende 2×2-Matrix kann als C bezeichnet werden; und die dem Subarray1208 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 in14A 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 Subarray1202 entsprechende 2×2-Matrix AT unterhalten; die dem Subarray1204 entsprechende 2×2-Matrix kann BT unterhalten; die dem Subarray1206 entsprechende 2×2-Matrix kann CT unterhalten; und die dem Subarray1204 entsprechende 2×2-Matrix kann DT unterhalten. Das Ergebnis der lokalen blockweisen Transponierungsoperation ist in14B gezeigt. Die fetten Zahlen in14B geben die Elemente der Matrix X an, deren Orte mittels der lokalen blockweisen Transponierungsoperation umgewechselt wurden. - In Schritt
1306 können das Subarray1204 und das Subarray1206 die transponierten Blockmatrizen BT und CT umwechseln, um die Matrixtransponierungsoperation abzuschließen. Da SPU1,2 und SPU2,1 den Verteiler des Subarrays1204 bzw. des Subarrays1206 bilden, kann die Diagonalverbindung1210 zwischen dem Subarray1204 und dem Subarray1206 effizient Daten zwischen dem Subarray1204 und dem Subarray1206 transferieren. Nach Schritt1306 kann das Array von SPU die Transponierung der Eingangsmatrix X unterhalten: Das Ergebnis von Schritt1306 an den in14B gezeigten Daten ist in14C gezeigt. Die fetten Zahlen in14C geben die Elemente der Matrix X an, deren Orte mittels Schritt1306 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 in15 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 in15 kann auch zum Ausführen einer Matrix-Blocktransponierungsoperation gemäß dem in13 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)
- 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.
- 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.
- 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.
- System nach Anspruch 3, wobei jedes der Einheits-Netzwerk-Module eine erste Art von Verbindungstopologie aufweist.
- System nach Anspruch 4, wobei die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie umfasst.
- System nach Anspruch 4, wobei die erste Art von Verbindungstopologie eine modifizierte Ringnetzwerktopologie umfasst.
- 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.
- 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.
- 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.
- System nach Anspruch 1, wobei die mehreren Speicherungs-Verarbeitungseinheiten auf einer Leiterplatte angeordnet sind und das Verbindungsnetzwerk einen elektrischen Leiter auf der Leiterplatte umfasst.
- System nach Anspruch 1, das ferner einen Speichercontroller umfasst, der dafür ausgelegt ist, Datentransfer zwischen den mehreren Speicherungs-Verarbeitungseinheiten über das Verbindungsnetzwerk einzuteilen.
- 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.
- 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.
- System nach Anspruch 1, wobei die rechnerische Einheit in den mehreren Speicherungs-Verarbeitungseinheiten dafür ausgelegt ist, wissenschaftliche Berechnung durchzuführen.
- System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 1 umfasst.
- System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 2 umfasst.
- System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 3 umfasst.
- System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Netzwerkmodul des L-Diagonal-Typs 4 umfasst.
- System nach Anspruch 1, wobei eines der mehreren Einheits-Netzwerk-Module ein Vollmaschen-Einheits-Netzwerk-Modul umfasst.
- 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.
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)
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)
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를 이용한 총 플래시 어레이 스토리지 가상화 방법 |
-
2015
- 2015-11-13 US US14/941,198 patent/US10108377B2/en active Active
-
2016
- 2016-11-14 DE DE102016013579.4A patent/DE102016013579A1/de active Pending
- 2016-11-14 JP JP2016221697A patent/JP2017117439A/ja not_active Ceased
- 2016-11-14 CN CN201611001935.7A patent/CN107015762B/zh active Active
- 2016-11-14 KR KR1020160151214A patent/KR101914833B1/ko active IP Right Grant
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 |