DE102010044529B4 - Autonomes speicher-sub-system mit hardwarebeschleuniger - Google Patents
Autonomes speicher-sub-system mit hardwarebeschleuniger Download PDFInfo
- Publication number
- DE102010044529B4 DE102010044529B4 DE102010044529.0A DE102010044529A DE102010044529B4 DE 102010044529 B4 DE102010044529 B4 DE 102010044529B4 DE 102010044529 A DE102010044529 A DE 102010044529A DE 102010044529 B4 DE102010044529 B4 DE 102010044529B4
- Authority
- DE
- Germany
- Prior art keywords
- memory
- autonomous
- devices
- autonomous storage
- storage devices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 64
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 238000003491 array Methods 0.000 claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims description 12
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 241000700605 Viruses Species 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000001311 chemical methods and process Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction 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/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
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- 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
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
-
- 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/0653—Monitoring storage devices or 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
- 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
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/622—State-only directory, i.e. not recording identity of sharing or owning nodes
-
- 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/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- HINTERGRUND DER ERFINDUNG
- Ein Problem bei parallelen, verteilten Systemen ist es, wie Speicherressourcen bestimmt und verwaltet werden. Speicher ist typischerweise an einem Hostprozessor angebracht, der einen geteilten Bus verwendet, auf den geeignete Protokolle angewendet werden, um Kohärenz und Konsistenz zu ermöglichen. Bei diesem strategischen Speicher kann Steuerhardware auf dem Prozessorkern den Traffic bzw. Verkehr auf dem gemeinsamen Bus beobachten, kann dann Zwischenspeicherleitungen aktualisieren oder unwirksam machen, um die Operationen wiederzugeben, die von den anderen Prozessoren ausgeführt werden. Ein Vielknotenmultiprozessorsystem kann auch „Verzeichnis-basierte“-Kohärenztechniken verwenden, um es Prozessorknoten zu ermöglichen, Speichertraffic zu sehen, der zu Seiten oder Zwischenspeicherleitungen gehört, auf denen sie arbeiten. Diese Strategien behindern immer stärker die Leistung und Verbesserungen bei verteilten Systemen werden benötigen.
-
US 2007/0088703 A1 US 2005/0041031 A1 US 5 588 152 A zeigt ein Computersystem mit einer Mehrzahl von Knoten, die in einem Cluster miteinander verknüpft sind. Jeder Knoten umfasst eine Mehrzahl von Prozessor-Speicher-Elementen.US 5 754 948 A betrifft ein elektronisches System mit mehreren elektronischen Komponenten, die über Funkwellen im Millimeterbereich miteinander kommunizieren. - Es ist ein Ziel der vorliegenden Erfindung eine Speichereffizienz zu verbessern.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Gemäß eines Aspekts der Erfindung wird ein autonomes Speicher-Subsystem gemäß den Ansprüchen 1, 7 und 10 bereitgestellt. Weitere Aspekte und Ausführungsbeispiele sind in den abhängigen Ansprüchen, der folgenden Beschreibung und den Zeichnungen bereitgestellt.
- Figurenliste
- Der Gegenstand, der als die Erfindung betrachtet wird, ist insbesondere im Schlussbereich der Unterlagen aufgezeigt und eindeutig beansprucht. Die Erfindung kann allerdings sowohl hinsichtlich Organisation als auch Betriebsverfahren, zusammen mit Aufgaben, Merkmalen und Vorteilen davon am Besten unter Bezugnahme auf die folgende detaillierte Beschreibung verstanden werden, wenn sie zusammen mit Zeichnungen gelesen wird, in welchen:
-
1 eine Architektur veranschaulicht, die es einem Prozessor ermöglicht, mit mehreren autonomen Speichereinrichtungen zu kommunizieren, die in einem verteilten Subsystem in Übereinstimmung mit der vorliegenden Erfindung eingerichtet sind. -
2 eine vereinfachte Blockdarstellung der autonomen Speichereinrichtung ist, die das verteilte Subsystem ermöglicht; und -
3 ein Ausführungsbeispiel der autonomen Speichereinrichtung in Übereinstimmung mit der vorliegenden Erfindung veranschaulicht. - Es wird begrüßt werden, dass zur Vereinfachung und Klarheit der Veranschaulichung in den Figuren veranschaulichte Elemente nicht notwendigerweise maßstabsgetreu gezeichnet sind. Zum Beispiel können die Dimensionen von manchen der Elemente bezüglich anderer Elemente zur Klarheit überhöht dargestellt sein. Ferner wurden Bezugszeichen unter den Figuren wiederholt, wo es als geeignet erachtet wurde, um entsprechende oder analoge Elemente anzugeben.
- DETAILLIERTE BESCHREIBUNG
- In der folgenden detaillierten Beschreibung sind viele spezifische Details dargelegt, um ein gründliches Verständnis der Erfindung zu ermöglichen. Allerdings wird von dem Fachmann verstanden werden, dass die vorliegende Erfindung ohne diese spezifischen Details ausgeführt werden kann. An anderen Stellen sind wohlbekannte Verfahren, Prozeduren, Komponente und Schaltkreise nicht im Detail beschrieben, um nicht die vorliegende Erfindung zu verschleiern.
- Es kann Gebrauch von den Ausdrücken „gekoppelt“ und „verbunden“ zusammen mit deren Abwandlungen gemacht werden. Es sollte allerdings verstanden werden, dass diese Ausdrücke nicht als Synonyme füreinander gedacht sind. Stattdessen kann bei bestimmten Ausführungsbeispielen „verbunden“ verwendet werden, um anzugeben, dass zwei oder mehrere Elemente in direktem physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann verwendet werden, um anzugeben, dass zwei oder mehr Elemente entweder in direktem oder indirektem (mit anderen zwischen liegenden Elemente zwischen diesen) physikalischen und elektrischen Kontakt miteinander stehen und/oder, dass zwei oder mehr Elemente miteinander kooperieren oder interagieren (zum Beispiel in einer Ursache-Wirkung-Beziehung).
- Das in
1 veranschaulichte Ausführungsbeispiel zeigt eine Architektur, die es einem Prozessor und mehreren autonomen Speichereinrichtungen 102 ermöglicht, zur Kommunikation in einem verteilten Subsystem 10 in Übereinstimmung mit der vorliegenden Erfindung eingerichtet zu werden. Um eine Kommunikation zwischen einer großen Anzahl von Einrichtungen zu bewerkstelligen, wird jeder der autonomen Speichereinrichtungen 102 im verteilten Subsystem 10 ihre eigene Adresse zugeordnet. Dies gibt jeder autonomen Speichereinrichtung 102 die Fähigkeit, Nachrichten an andere Einrichtungen im Subsystem weiterzuleiten (engl. to route). Obwohl die Figur autonome Speichereinrichtungen in eine 3x3 Matrix veranschaulicht, kann das verteilte Subsystem 10 so eingerichtet sein, dass es eine viel größere Anzahl von Einrichtungen in dem Netzwerk aufweist. - Bei einem Ausführungsbeispiel kann das Adressschema absolut sein, bei dem jeder autonomen Speichereinrichtung 102 eine eindeutige statische Adresse zugeordnet wird, wie sie durch eine Route zu der autonomen Speichereinrichtung bestimmt wird; zum Beispiel kann die Speichereinrichtung als eine spezifiziert sein, die auf einem bestimmten Anschluss der Einrichtung vorhanden ist und elektrisch mit einem Anschluss der Grundeinrichtung verbunden ist. Bei einem alternativen Ausführungsbeispiel kann die Adresse der autonomen Speichereinrichtung dynamisch bestimmt werden, während sie innerhalb des Systems betrieben wird. Dadurch, dass es möglich ist, die Adresse dynamisch zu bestimmen, kann das Adressschema für die Zwecke der Optimierung während des Systembetriebs modifiziert werden.
- Bei der Systeminbetriebnahme kann das Netzwerk durch das Übertragen von Weiterleitungsinformationen (engl.: routing information) initialisiert werden, um zu ermöglichen, dass diese Zwischen-Einrichtungskommunikation bzw. Inter-Einrichtungskommunikation stattfindet. Alternativ kann sich das System selbst als autonome Speichereinrichtung 102 organisieren, wobei es eine Leitwegtabelle (engl.: routing table) unter Verwendung einer Abtasttechnik zum Bestimmen von Nachbarn bildet. Die Leitwegtabelle verfolgt die Einrichtung innerhalb des verteilten Subsystems 10 nach und kann Parameter speichern, wie beispielsweise die Latenzkosten, basierend auf einem Ort von irgendeiner Einrichtung, die mit einer anderen Einrichtung spricht.
- Die Nachricht, die auf dem Bus passiert, der die verteilten autonomen Speichereinrichtungen 102 verbindet, kann moduliert sein oder ein Standardnetzwerk sein. Ein solches Standardnetzwerk kann das Übertragungs-Steuer-Protokoll/Internetprotokoll (TCP/IP; engl.: transmission control protocol/internet protocol) sein, das zum Verifizeren der korrekten Übertragung von Daten von einer Einrichtung zur anderen verantwortlich ist. Das TCP/IP stellt auch eine Unterstützung zum Erkennen von Fehlern oder Datenverlust bereit, was die Neuübertragung auslöst, bis die Daten als korrekt übertragen und vollständig empfangen verifiziert sind. Ein anderer Typ von Netzwerk, den das verteilte Subsystem 10 verwenden kann, ist die InfiniBand-Architektur, die ein Gewebe erzeugt, um eine Kommunikation mit niedriger Latenz zu ermöglichen, Clustering mit hoher Bandbreite und Speichertraffic. Auch die Kommunikation unter den autonomen Speichereinrichtungen 102 kann Ethernet in einem rahmenbasierten Netzwerk verwenden.
- Die Figur zeigt, dass unterschiedliche Speicherarten an autonomen Speichereinrichtungen 102 angebracht sein können. Als ein Beispiel kann jeder Knoten dieses autonomen Speichers ein NAND, DRAM oder andere flüchtige/nicht flüchtige Kombinationen daraus für die „offline“-Speicherung sein oder ein Notizblockplatz angebracht haben. In der Figur ist auch ein Drahtlosarchitektur Ausführungsbeispiel veranschaulicht, das die Speichereinrichtungen 102 als mit einer Antenne zum Übertragen von Drahtlossignalen gekoppelt zeigt. Die Antennen können Nahfeldrahmenantennen sein, kapazitive Platten oder Dipolantennen, die es Funk ermöglichen, der zur Speichereinrichtung gehört, die Speichermatrizen zu programmieren und Algorithmen und Datenbanken durch Kommunikation unter Verwendung von Kommunikationssignalen über den Äther herunterzuladen. Eine Konfigurationsleitwegtabelle verfolgt die Speichereinrichtungen nach, um Kommunikationen zwischen Einrichtungen innerhalb des verteilten Subsystems 10 zu ermöglichen.
- Die Figur zeigt eine Drahtlosverbindung zwischen dem Steuerblock und den Dies (engl.: dies, auch Plättchen genannt), die als die autonomen Speichereinrichtungen 102 in dem Speichersubsystem gezeigt sind. Bei diesem Ausführungsbeispiel überwacht der Steuerblock Überlastung beim Traffic bzw. Verkehr an die verschiedenen Blöcke und reagiert darauf. Der Bustraffic ist ein Aspekt einer Ressource, die die Systemleistung beschränken kann. Um Leistungsbeschränkungen zu verringern, kann der Überwachungsblock Bereiche einer Datenbank an eine andere Die verschieben, um Suchen zu parallelisieren oder Rechenressourcen vollständig zu verwenden. Als solcher überwacht der Speicherblock beschränkte Ressourcen, um die Systemleistung zu optimieren, wobei der Bustraffic nur ein Beispiel einer Ressource ist, die durch Relozieren von Daten unter den Speichereinrichtungen 102 optimiert werden kann.
- Bei diesem Ausführungsbeispiel kann die Die-Zu-Die-Drahtloskommunikation Antennen verwenden, die physikalisch nur zum Kommunizieren mit anderen Dies angeordnet sind, die in demselben Stapel (engl.: stack) sind. Um eine Inter-Die-Drahtloskommunikation zu erreichen, kann jede der autonomen Speichereinrichtungen 102 eine Antenne an Eingabeanschlüssen, um Signale zu empfangen, und Antennen an Ausgabeanschlüssen, um Signale zu übertragen. Die Drahtloskommunikation kann den Bedarf an Bonddrähten minimieren.
-
2 zeigt eine vereinfachte Blockdarstellung der autonomen Speichereinrichtung 102, die die Rechnerknoten und Beschleunigungshardware enthält, um Berechnungen und Manipulationen der Inhalte, die innerhalb des Speichers gespeichert sind, bereitzustellen. Das verteilte Subsystem 10 weist mehrere autonome Speichereinrichtungen 102 auf, wobei jede Einrichtung Kommunikationen mit Nachbar-Die unter Verwendung von Inter-Die-Kommunikationsanschlüssen 204, 206, 208 und 210 handhabt. Diese Inter-Die-Kommunikationspfade ermöglichen eine autonome Kommunikation unter einem großen Pool an Die, wie beispielsweise mehrere tausend Die im verteilten Subsystem 10. - Die autonome Speichereinrichtung 102 weist sowohl ein Betriebssystem als auch Verarbeitungsfähigkeiten auf und ist sich der Bedeutung seiner Inhalte bewusst. Anders ausgedrückt ist sich die Einrichtung 102 der Details bewusst, wo bestimmte Datenbanktabellen angeordnet sind, die Felddefinitionen für jede dieser Tabellen und wie diese miteinander verlinkt sind. Durch Verwenden dieser Information kann die autonome Speichereinrichtung 102 unabhängig Daten in der gespeicherten Datenbank verarbeiten, um Ergebnisse zu erhalten, die an den Hostprozessor zurückgegeben werden können.
-
3 zeigt ein Ausführungsbeispiel von funktionalen Blöcken für die autonome Speichereinrichtung 102 in Übereinstimmung mit der vorliegenden Erfindung. Die autonome Speichereinrichtung weist eine intelligente Speicherverarbeitungsengine 302 auf, die Steuerfunktionen und Verabreitungsbeschleunigung 304 bereitstellt, um die Verwendung von Modellen zu ermöglichen, die Berechnungen und speicherintensive Operationen innerhalb des intelligenten Speichers mit berücksichtigen. Eine Mehrzwecksteuerengine 306 ist ein Mikrokontroller zum Empfangen von heruntergeladenen Endbenutzerfirmware oder Software zum Steuern anderer Speichereinrichtungen neben anderen Funktionen. Die Steuerengine 306 kann Instruktionen innerhalb des Pools autonomer Speicher initiieren und Information aus dem Pool extrahieren, die durch eine Hostschnittstelle 320 an eine Hoststeuerung weitergeleitet werden kann. Protokolle und Algorithmen ermöglichen eine Arbitrierung unter den Einrichtungen, dass Leitweginformation unter den Einrichtungen weitergeleitet wird und dass Algorithmen ablaufen können, um die Poolebene zu optimieren. - Ein Hardwarebeschleuniger 308 stellt eine intelligente Speicherverarbeitungsengine 304 mit Beschleunigungshardware für Berechnungen und Manipulationen der Inhalte, die innerhalb des Speichers 318 gespeichert sind, bereit. Der Hardwarebeschleuniger 308 ist in der Lage, Matrixoperationen, einfache Vergleiche mit Maskierbits, Speicherkopien und Bewegungen, usw. zu handhaben. Ein Codespeicherblock 310 speichert Code, der von einem Hostprozessor durch Hostschnittstelle 320 zur Verwendung durch die Mehrzwecksteuerengine 306 heruntergeladen wird. Ein Anwendungs-Programmier-Schnittstellen-(API; engl.: application programming interface)-Verwaltungsblock 312 führte die gespeicherten Routinen und Protokolle, die von Bibliotheken oder den Betriebssystemdiensten bereitgestellt werden, aus, um die Bildung von Anwendungen zu unterstützen. Die Software-API sind flexibel und machen von der Kenntnis der zugrunde liegenden Hardware Gebrauch, um optimale Leistung zu erreichen. Eine Konfigurationsleitweg-Tabelle 314 verfolgt die anderen Speichereinrichtungen innerhalb des verteilten Subsystems 10 nach. Die Konfiguration des verteilten Subsystems 10 kann dynamisch bestimmt werden und die Leitwegtabelle kann aktualisiert werden, während die autonome Speichereinrichtung 102 innerhalb des Systems betrieben wird.
- Es ist üblich, Datenstrukturen in einem flachen (engl.: flat) Speicherbereich zu speichern. Obwohl es eine endlose Anzahl von möglichen Datenstrukturen gibt, können einige übliche Strukturen, wie beispielsweise Matrizen und verlinkte Listen verwendet werden, um zu veranschaulichen, wie der autonome Speicher verwendet werden kann, um die Speicherfunktionalität zu erweitern. Die Matrizen decken ein breites Spektrum von Domänen einschließlich denjenigen ab, die sich aus einer breiten Anzahl von Problemen mit darunter liegenden 2D oder 3D Geometrien ergeben, wie beispielsweise strukturelle Konstruktion, numerische Strömungssimulation, Bauformverkleinerung, Halbleitereinrichtungen, Thermodynamik, Materialien, Akustik, Computergrafik/Vision, Robotik/Kinematik, neben anderen. Matrizen können Anwendungen abdecken, die typischerweise nicht eine derartige Geometrie haben, wie beispielsweise Schaltkreissimulation, ökonomische und Finanzmodellierung, theoretische und Quantenchemie, chemische Prozesssimulation, Mathematik und Statistik, Leistungsnetze und andere Netzwerke und Grafen.
- Beim Verarbeiten von Information, die in Matrizen gespeichert ist, werden alle oder ein Teil der Matrizen aus dem Speicher 318 gelesen und Berechnungen werden auf den Inhalten der Matrizen durch den Hardwarebeschleuniger 308 ausgeführt. Bei Stand der Technik Systemen werden große Bereiche der Matrizen aus dem Hauptspeicher empfangen und in Seiten eingeteilt, um in dem Prozessorzwischenspeicher gespeichert zu werden. Diese Matrizen schließen Berechnungen mit ein, die iterativ sind, und die die gesamte Matrizen mit einschließen können, so dass Stand der Technik Systeme nicht die gesamte Inhalte in dem Prozessorzwischenspeicher speichern können, die für die Verarbeitung benötigt werden.
- Allerdings kann die autonome Speichereinrichtung 102 die Effizienz beim Ausführen von Matrixalgorithmen signifikant verbessern. Die autonome Speichereinrichtung 102 kann die Matrizen unter Verwendung einer flachen Speicherabbildung (engl.: flat memory map) speichern und kann eine enge Kopplung des Speichers 318 und eingebettete Hardwarebeschleuniger 308 verwenden, um die Operationen an diesen Matrizen stark zu beschleunigen. Matrixberechnungen können weiter durch vernünftige Organisation der Matrizen innerhalb des verteilten Subsystems 10 verbessert werden, um Matrizenoperationen mit hoher Leistung zu bewerkstelligen. Als ein Beispiel können gemeinsam geteilte Operanten bei einer Operation entsprechend geplant werden, um vorteilhafterweise innerhalb derselben autonomen Speichereinrichtung 102 zu residieren, so dass die Vervollständigung dieser Operationen keine Kommunikation mit anderen Einrichtungen erfordert.
- Es ist üblich, verlinkte Listen in einer flachen Speicherabbildung zu erzeugen, um die Speicherung und Manipulation von geordneten Informationssätzen zu ermöglichen. Beim Durchlaufen einer verlinkten Liste ist es im Allgemeinen erforderlich, dass jede Aufzeichnung untersucht wird, um zu bestimmen, ob sie zu einem Muster passt oder um einfach einen Zeiger auf die nachfolgende Aufzeichnung zu erhalten. Durch Verwenden des verteilten Subsystems 10 ist es möglich, verlinkte Listen mit einem Minimum an Hostbustraffic zu parsen. Dann kann jede autonome Speichereinrichtung 102 jede Aufzeichnung untersuchen, um nach spezifischen Mustern zu sehen und einen Zeiger auf die nächste Aufzeichnung zu finden, bevor wiederholt wird. Sobald Ergebnisse gefunden sind, verwendet die autonome Speichereinrichtung 102 die Hostschnittstelle 320, um passende Ergebnisse an den Host zurückzugeben.
- Datenbanken umfassen gewöhnlicherweise große Datensätze, die in Gruppen von verlinkten Tabellen organisiert sind. Es werden Indexdateien erzeugt und gewartet und verwendet, um Suchen nach Informationen in diesen Tabellen zu beschleunigen. Bei Stand der Technik-Systemen sind manche Datenbanken größer als der nahe Speicher, der für den Prozessor verfügbar ist, der auf diesen Datenbanken arbeitet, und ein signifikanter Teil von Speicherzugriffen kann IO-Aufrufe mit langer Latenz haben, die die Systemleistung beschneiden.
- Im Gegensatz zu den Stand der Technik Systemen kann das verteilte Subsystem 10 eine große Anzahl von autonomen Speichereinrichtungen 102 haben, die eingerichtet sind, um miteinander und mit dem Hostprozessor zu kommunizieren. Die im verteilten Subsystem 10 gefundene Speicherdichte kann primär durch die Speicherkosten begrenzt sein. Ferner würden die meisten Operationen mit der auf demselben Die wie der Speicher 318 eingebettete Steuerengine 306 Bustraffic mit einschließen, der intern zu dem Speicher-Die ist, und beschränkten Traffic, der extern zu dem Speicher-Die ist. Angesichts der engen Kopplung einer Mehrzwecksteuerengine 306 und der hohen Dichte an Speicher 318 kann der Bandbreitenflaschenhals, der durch einen Prozessor verursacht wird, der auf einen externen Speicher zugreift, eliminiert werden. Eine Beschleunigungstechnik im Hardwarebeschleuniger 308 kann verwendet werden, um die Leistung des verteilten Subsystems 10 dramatisch zu vergrößern.
- Dadurch, dass das Subsystem 10 für den spezifischen Zweck der Manipulation von Speicherinhalt ausgeführt ist, kann ein endlicher Satz von nützlichen Hardwareprimitiven implementiert werden. Um eine Datenbank im verteilten Subsystem 10 zu implementieren, wird die Datenbank gesamt oder in Teilen an das Speichersubsystem zusammen mit Informationen darüber übertragen, wie die Datenbank organisiert ist. Es werden auch Algorithmen zur Verarbeitung von Information in der Datenbank heruntergeladen. Wenn der Initialisierungsprozess vervollständigt ist, erzeugt der Host Befehle auf sehr hoher Ebene an das verteilte Subsystem 10. Anstatt, dass spezifische Adresse gelesen und geschrieben werden, um eine Funktion auf höherer Ebene auszuführen, kann der Hostprozessor einen Befehl ausstellen, wie beispielsweise „parse Tabelle A, um alle Aufzeichnungen zu finden, die zu einem Muster passen, extrahiere Zeiger auf Tabelle B für jede dieser Aufzeichnungen, gebe Felder a, b, c aus Tabelle A und d und e aus Tabelle B zurück“. Alle Operationen laufen innerhalb des verteilten Subsystems 10 ab und eine kurze Liste von Ergebnissen wird an den Hostprozessor zurückgegeben.
- Autonomer Speicher hat einen tiefgreifenden Vorteil bei dem Fall, bei dem eine lineare Suche auf einer großen Datenbank ausgeführt wird. Als Beispiel kann, bei Verwendung von Parallelverarbeitung (engl.: pipelining) für eine autonome Speichereinrichtung 102 mit 1GB Speicherdichte mit 8 Bänken von 2M Seiten mit jeweils 64B, eine Seite mit einem Zielmuster verglichen werden, bei einer Taktrate von ungefähr 10 Nanosekunden pro Seite, was zu einer möglichen Suchzeit für die 1GB Die von ungefähr 20 Millisekunden führt. Während dies für sich selbst ein eindrucksvolles Ergebnis ist, ist der Nutzen, dass diese Lösung skalierbar ist und folglich die Suchzeit für zwei autonome Speichereinrichtung 102 mit jeweils 1GB Speicherdichte auch ungefähr 20 Millisekunden betragen würde, sowie die Suchzeit für einen Petabyte Speicher oder für jeden beliebig großen Pool an Speicher. Das Verwenden autonomer Speichereinrichtungen 102 in einem verteilten Subsystem zum Ausführen von linearen Suchen ist durch die Kosten für die Matrix von Speichereinrichtungen 102 zusammen mit thermischer Verwaltung und Leistungsbeschränkungen begrenzt.
- Systemadministrationfunktionen können auch von dem Vorteil autonomer Speichereinrichtungen 102 in einem verteilten Subsystem 10 Gebrauch machen. Zum Beispiel kann ein Datencenter einen Virusscan am verteilten Subsystem 10 durchführen und wenn ein Virus erkannt wird, kann das Datencenter für 20 Millisekunden „heruntergefahren werden“ (engl.: downed), wobei während dieser Zeit ein Such- und Zerstörungsalgorithmus auf jeden Bit ausgeführt wird, um den Zielvirus zu isolieren und jedes Auftreten von diesem zu unterbinden.
- Autonome Speichereinrichtungen 102 im verteilten Subsystem 10 stellen einen Vorteil gegenüber Stand der Technik-Systemen bereit, wenn die „Streu-/Sammel-”Operationen (engl.: „Scatter/Gather“ operations) ausgeführt werden. „Streu-/Sammel-"Operationen stellen eine Abfolge von Schreibvorgängen an unterschiedlichen Adressen bereit, die in einen einzelnen zusammengesetzten Befehl kompiliert sind, der von dem Speicher oder dem IO-Subsystem ausgeführt wird. Diese Operationen werden geparst und an mehrere Die im verteilten Subsystem 10 ausgesendet, wobei sie an diesem Punkt diese autonom ausgeführt werden. Der resultierende Status wird angesammelt und an den Host berichtet, wenn die gesamte Operation beendet ist.
- Autonome Speichereinrichtungen 102 im verteilten Subsystem 10 sind ideal für manche Anwendungsklassen, wie beispielsweise Bildverarbeitung. Diese Klassen sind gut geeignet für die parallele Berechnung, wo das Bild in viele kleinere Segmente unterteilt werden kann, welche relativ unabhängig verarbeitet werden. Nachdem Berechnungen an diesen kleinen Segmenten beendet wurden, können dann weitere Berechnungen an Gruppen dieser Segmente ausgeführt werden, um ein größeres Segment zu bilden, bis das Bild auf einer Ebene verarbeitet ist, die das gesamte Bild umfasst.
- Durch Verwenden autonomer Speichereinrichtungen 102 können viele oder alle dieser Berechnungen auf niedriger Ebene parallel auf einer Bankebene des autonomen Speichers durchgeführt werden. Berechnungen über Bankgrenzen hinweg, können innerhalb der einen Einrichtung vorgenommen werden und durch Verwenden von Inter-Die-Kommunikation können Berechnungen auf höherer Ebene auf der Subsystemebene durchgeführt werden.
- Andere parallele Berechnungsaufgaben folgen einem ähnlichen Modell und können Iteration zum Verfeinern der Genauigkeit der Ergebnisse mit einschließen oder die schrittweise Simulation durch die Zeit.
- Das verteilte Subsystem 10 stellt eine Interaktion über die erwarteten Lese- und Schreiboperationen hinaus bereit, die von den Speichereinrichtungen ermöglicht werden. Die autonome Speichereinrichtung 102 interagiert mit bestehender Computerinfrastruktur unter Verwendung von einer oder mehreren Schnittstellen, die Kommunikation sowohl mit dem Hostcomputer als auch mit dem Netzwerk erlauben. Aus der Hostcomputerperspektive kann die Interaktion eine Speicher- oder Blockschnittstelle sein, aber zu der autonomen Speichereinrichtung 102 wird eine flexible Schnittstelle bereitgestellt, auf der oben auf Software API gebildet werden können. Diese API können entsprechend skaliert sein, um entweder dem Hostsystem Funktionalität darzulegen oder einen Weg zum Weiterleiten der Anfrage unter anderen autonomen Speichereinrichtungen bereitzustellen.
- Die autonome Speichereinrichtungs-102-Schnittstelle zu anderen Einrichtungen im verteilten Subsystem 10 stellt einen Weg zur Weiterleitung von Nachrichten bereit, die einen Befehl in einer Liste von Parametern enthalten können. Die Parameter können tatsächliche Daten enthalten, Adressinformationen, die sich auf Daten in der Matrix bezieht und Objekterkennungen, die sich auf ein Objekt, das in der Matrix angeordnet ist, beziehen. Die Parameter können auch eine Adresse enthalten oder eine Objektidentifikation (Objekt-ID) zu dem Code oder sich auf diesen beziehen, der zum Betreiben auf einen gegebenen Datensatz benötigt wird. Der Code, der zur autonomen Speichereinrichtung 102 geleitet wird, kann zu dem Paradigma passen, das durch den OpenCL-Standard aufgebaut wird, beispielsweise MapProduce. Viele der bestehenden Cluster- und „Cloud-Computing“ Infrastrukturteile können innerhalb des verteilten Subsystems 10 wieder verwendet werden.
- Die Speichersteuerung oder eine autonome Speichereinrichtung 102 im verteilten Subsystem 10 kann eine Zustandsüberwachung ausführen, um Busaktivitäten aufgrund von Datenübertragungen zwischen den Speichereinrichtungen zu bestimmen. Basierend auf den Überwachungsergebnissen kann eine Neuzuteilung von Ressourcen dynamisch ausgeführt werden, um die Systemleistung zu verbessern. Zum Beispiel kann, nachdem der Traffic innerhalb des verteilten Subsystems 10 überwacht wurde, bestimmt werden, dass ein Traffic mit hoher Bandbreite im Allgemeinen zwischen zwei Speichereinrichtungen auftritt. Wenn diese Speichereinrichtungen keine benachbarten Einrichtungen sind, dann kann das Subsystem eine dieser Speichereinrichtungen wählen und die Inhalte der anderen Speichereinrichtungen relozieren, um einer einzelnen autonomen Speichereinrichtung 102 zu ermöglichen, die Verarbeitung bereitzustellen, die den Algorithmus beendet. Alternativ können die Speicherinhalte von relativ entfernten Einrichtungen neu an nahe Knoten verteilt werden, um den Bustraffic zu verringern.
- Ferner können Suchen des verteilten Subsystems 10 nach Nur-Lese-Inhalten einen Subsatz des Netzwerks veanlassen, konstant aktiv zu sein. In diesem Falle kann das Subsystem die Inhalte in diesem Bereich des Netzwerks replizieren, so dass viele autonome Speichereinrichtungen 102 Operationen auf dem Nur-Lese-Inhalt innerhalb des verteilten Subsystems ausführen können.
- Bisher sollte offensichtlich sein, dass das Ausführungsbeispiele der vorliegenden Erfindung vergrößerte Speichereffizienzen durch autonome Datenspeicherung ermöglichen. Durch Verbinden der autonomen Speichereinrichtung in einem verteilten Speichersubsystem kann ein Host eine Datenbank zu der autonomen Speichereinrichtung herunterladen. Die autonome Speichereinrichtung kann Befehle initiieren, um Bereiche der Datenbank an Nachbar-Die unter Verwendung einer Schnittstelle zu verteilen, um Inter-Die-Kommunikation innerhalb eines Pools von autonomen Speichern zu handhaben. Die autonome Speichereinrichtung kann dann Information aus dem Pool autonomer Speicher extrahieren, die durch die Hostschnittstelle an die Hoststeuerung geleitet wird.
- Während bestimmte Merkmale der Erfindung veranschaulicht und hierin beschrieben wurden, werden dem Fachmann viele Modifikationen, Substitutionen, Änderungen und Äquivalente einfallen. Es sollte daher verstanden werden, dass die beigefügten Ansprüche alle solche Modifikationen und Abänderungen abdecken sollen, so wie sie in den wahren Geist der Erfindung fallen.
Claims (13)
- Autonomes Speicher-Sub-System, umfassend: eine Steuerung mit einem Zustandsüberwachungsblock; und eine erste und zweite autonome Speichereinrichtung (102), die mit einem Bus mit Bustraffic verbunden sind, wobei jede der ersten und zweiten autonomen Speichereinrichtung (102) einen Speicher (318) und einen Hardwarebeschleuniger (308) umfasst, die miteinander gekoppelt sind, wobei der Hardwarebeschleuniger (308) konfiguriert ist, Inhalte zu berechnen und zu manipulieren, die in dem Speicher (318) gespeichert sind, sodass Operationen auf Matrizen des Speichers (318) beschleunigt sind, wobei der Zustandsüberwachungsblock den Bustraffic überwacht und basierend auf Überwachungsergebnissen Ressourcen neu zuteilt, um die Systemleistung dynamisch zu verbessern, wobei jede der ersten und zweiten autonomen Speichereinrichtung (102) vier Ausgabeanschlüsse zum Kommunizieren mit wenigstens vier Nachbarspeichereinrichtungen aufweist, und wobei jede der ersten und zweiten autonomen Speichereinrichtung (102) drahtlos mit den wenigstens vier Nachbarspeichereinrichtungen kommuniziert.
- Autonomes Speicher-Sub-System nach
Anspruch 1 , weiter aufweisend: eine dritte autonome Speichereinrichtung (102), die keine Nachbareinrichtung zu der ersten und zweiten autonomen Speichereinrichtung ist, wobei die Steuerung Inhalte der dritten autonomen Speichereinrichtung (102) auswählt, um sie an die erste und zweite autonome Speichereinrichtung (102) zu relozieren, die Nachbareinrichtungen sind. - Autonomes Speicher-Sub-System nach
Anspruch 2 , wobei innerhalb der ersten, zweiten und dritten autonomen Speichereinrichtung (102) verteilter Nur-Lese-Inhalte in der ersten und zweiten autonomen Speichereinrichtung (102) repliziert wird, um parallele Operationen auf dem Nur-Lese-Inhalt ohne Übernehmen von Bustraffic von der dritten autonomen Speichereinrichtung auszuführen. - Autonomes Speicher-Sub-System nach
Anspruch 1 , wobei die Steuerung wählt, Inhalte der zweiten autonomen Speichereinrichtung (102) an die erste autonome Speichereinrichtung (102) zu relozieren, um Bustraffic zwischen der ersten und zweiten autonomen Speichereinrichtung (102) zu verringern. - Autonomes Speicher-Sub-System nach
Anspruch 2 , wobei die erste, zweite und dritte autonome Speichereinrichtung (102) weiter einen Notizblockspeicheranschluss zum Koppeln eines externen Speichers aufweist. - Autonomes Speicher-Sub-System nach
Anspruch 5 , wobei der externe Speicher ein NAND-Speicher oder dynamischer Schreib-Lese-Speicher (DRAM) ist. - Autonomes Speicher-Sub-System, umfassend: eine Speichereinrichtung (102) in einer Matrix von Speichereinrichtungen (102), um Befehle zum Verteilen von Bereichen einer Datenbank an Nachbarspeichereinrichtungen zu initiieren, wobei jede Speichereinrichtung (102) der Matrix vier Ausgabeanschlüsse zum Kommunizieren mit wenigstens vier Nachbarspeichereinrichtungen aufweist, und wobei die Speichereinrichtung (102) drahtlos mit den wenigstens vier Nachbarspeichereinrichtungen kommuniziert; und einen Zustandsüberwachungsblock zum Überwachen von Bustraffic auf einem Bus in dem autonomen Speichersubsystem und zum Neuzuteilen von Speicherinhalten in der Matrix von Speichereinrichtungen (102) zum dynamischen Verringern von Bustraffic der Speichereinrichtung (102) an die Nachbarspeichereinrichtungen, wobei jede Speichereinrichtung der Matrix von Speichereinrichtungen einen Speicher (318) und einen Hardwarebeschleuniger (308) umfasst, die miteinander gekoppelt sind, und wobei der Hardwarebeschleuniger (308) konfiguriert ist, Inhalte zu berechnen und zu manipulieren, die in dem Speicher (318) gespeichert sind, sodass Operationen auf Matrizen des Speichers (318) beschleunigt sind.
- Autonomes Speicher-Sub-System nach
Anspruch 7 , wobei die Speichereinrichtung (102) weiter einen Notizblockspeicheranschluss zum Koppeln eines externen NAND-Speichers und dynamischen Schreib-Lese-Speichers (DRAM) aufweist. - Autonomes Speicher-Sub-System nach
Anspruch 7 , wobei Nur-Lese-Inhalt, der innerhalb des Speichersubsystems verteilt ist, in der Speichereinrichtung (102) und den Nachbarspeichereinrichtungen repliziert wird, um parallele Operationen auf dem Nur-Lese-Inhalt ohne die Übernahme von Bustraffic durch nicht benachbarte Speichereinrichtungen auszuführen. - Autonomes Speicher-Sub-System mit einer Matrix aus Speichereinrichtungen, wobei eine Speichereinrichtung (102) in der Matrix Befehle zum Verteilen von Bereichen einer Datenbank an Speichereinrichtungen (102) in der Matrix initiiert und eine Neuzuteilung von Speicherinhalt anordnet, um beschränkte Ressourcen dynamisch zu verwalten, wobei jede Speichereinrichtung der Matrix von Speichereinrichtungen einen Speicher (318) und einen Hardwarebeschleuniger (308) umfasst, die miteinander gekoppelt sind, und wobei der Hardwarebeschleuniger (308) konfiguriert ist, Inhalte zu berechnen und zu manipulieren, die in dem Speicher (318) gespeichert sind, sodass Operationen auf Matrizen des Speichers (318) beschleunigt sind, wobei die Speichereinrichtung (102) vier Ausgabeanschlüsse zum Kommunizieren mit wenigstens vier Nachbarspeichereinrichtungen aufweist, und wobei die Speichereinrichtung (102) drahtlos mit den wenigstens vier Nachbarspeichereinrichtungen kommuniziert.
- Autonomes Speicher-Sub-System nach
Anspruch 10 , wobei die beschränkten Ressourcen eine Busbandbreite aufweisen. - Autonomes Speicher-Sub-System nach
Anspruch 10 , wobei die Speicherinhalte von nicht Nachbareinrichtungen in der Matrix neu auf Nachbareinrichtungen umverteilt werden, um die beschränkten Ressourcen zu optimieren. - Autonomes Speicher-Sub-System nach
Anspruch 10 , wobei die Speichereinrichtung (102) einen Notizblockspeicheranschluss aufweist zum Koppeln eines externen Speichers aufweist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/557,856 US9015440B2 (en) | 2009-09-11 | 2009-09-11 | Autonomous memory subsystem architecture |
US12/557,856 | 2009-09-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102010044529A1 DE102010044529A1 (de) | 2011-03-24 |
DE102010044529B4 true DE102010044529B4 (de) | 2023-04-27 |
Family
ID=43603668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102010044529.0A Active DE102010044529B4 (de) | 2009-09-11 | 2010-09-07 | Autonomes speicher-sub-system mit hardwarebeschleuniger |
Country Status (5)
Country | Link |
---|---|
US (2) | US9015440B2 (de) |
JP (1) | JP5826471B2 (de) |
KR (1) | KR101747966B1 (de) |
CN (1) | CN102024011B (de) |
DE (1) | DE102010044529B4 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779057B2 (en) | 2009-09-11 | 2017-10-03 | Micron Technology, Inc. | Autonomous memory architecture |
US9015440B2 (en) | 2009-09-11 | 2015-04-21 | Micron Technology, Inc. | Autonomous memory subsystem architecture |
US10089043B2 (en) * | 2013-03-15 | 2018-10-02 | Micron Technology, Inc. | Apparatus and methods for a distributed memory system including memory nodes |
EP2784704A1 (de) * | 2013-03-26 | 2014-10-01 | Fujitsu Limited | Numerische Strömungssimulationen mit mehreren Komponenten |
US10003675B2 (en) * | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
US9246840B2 (en) | 2013-12-13 | 2016-01-26 | International Business Machines Corporation | Dynamically move heterogeneous cloud resources based on workload analysis |
US9495238B2 (en) | 2013-12-13 | 2016-11-15 | International Business Machines Corporation | Fractional reserve high availability using cloud command interception |
US10296263B2 (en) | 2014-04-30 | 2019-05-21 | International Business Machines Corporation | Dispersed bloom filter for determining presence of an object |
US9612882B2 (en) * | 2014-04-30 | 2017-04-04 | International Business Machines Corporation | Retrieving multi-generational stored data in a dispersed storage network |
KR101714412B1 (ko) | 2016-12-28 | 2017-03-09 | 주식회사 티맥스클라우드 | 클라우드 환경에서 데이터베이스 시스템을 구성하는 방법 및 장치 |
US11138044B2 (en) * | 2018-09-26 | 2021-10-05 | Micron Technology, Inc. | Memory pooling between selected memory resources |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5588152A (en) | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5754948A (en) | 1995-12-29 | 1998-05-19 | University Of North Carolina At Charlotte | Millimeter-wave wireless interconnection of electronic components |
US20050041031A1 (en) | 2003-08-18 | 2005-02-24 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US20070088703A1 (en) | 2005-10-17 | 2007-04-19 | Microsoft Corporation | Peer-to-peer auction based data distribution |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5105425A (en) * | 1989-12-29 | 1992-04-14 | Westinghouse Electric Corp. | Adaptive or fault tolerant full wafer nonvolatile memory |
JP2579419B2 (ja) * | 1992-05-22 | 1997-02-05 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセッサ・メモリ・システム |
US6101620A (en) * | 1995-04-18 | 2000-08-08 | Neomagic Corp. | Testable interleaved dual-DRAM architecture for a video memory controller with split internal/external memory |
JPH1132356A (ja) * | 1997-07-11 | 1999-02-02 | Fujitsu Ltd | マルチプロセッサシステム |
JPH11232180A (ja) * | 1998-02-10 | 1999-08-27 | Hitachi Ltd | データ処理装置 |
US20020009119A1 (en) * | 2000-02-11 | 2002-01-24 | Matthew William T. | Environmental heat stress monitor |
US20020124137A1 (en) * | 2001-01-29 | 2002-09-05 | Ulrich Thomas R. | Enhancing disk array performance via variable parity based load balancing |
US6526491B2 (en) | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US7356568B2 (en) * | 2002-12-12 | 2008-04-08 | International Business Machines Corporation | Method, processing unit and data processing system for microprocessor communication in a multi-processor system |
US7978682B2 (en) * | 2005-05-09 | 2011-07-12 | At&T Intellectual Property I, Lp | Methods, systems, and computer-readable media for optimizing the communication of data packets in a data network |
US20070005922A1 (en) * | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US8275949B2 (en) * | 2005-12-13 | 2012-09-25 | International Business Machines Corporation | System support storage and computer system |
US7756898B2 (en) * | 2006-03-31 | 2010-07-13 | Isilon Systems, Inc. | Systems and methods for notifying listeners of events |
US8601155B2 (en) * | 2006-08-16 | 2013-12-03 | Oracle America, Inc. | Telemetry stream performance analysis and optimization |
US8407399B2 (en) * | 2008-10-29 | 2013-03-26 | Sandisk Il Ltd. | Method and apparatus for enforcing a flash memory caching policy |
US8942113B2 (en) * | 2009-05-07 | 2015-01-27 | Verizon Patent And Licensing Inc. | System and method for dynamically adjusting routing metrics based on power consumption |
US9015440B2 (en) | 2009-09-11 | 2015-04-21 | Micron Technology, Inc. | Autonomous memory subsystem architecture |
-
2009
- 2009-09-11 US US12/557,856 patent/US9015440B2/en active Active
-
2010
- 2010-07-08 CN CN201010226463.1A patent/CN102024011B/zh active Active
- 2010-07-16 KR KR1020100068824A patent/KR101747966B1/ko active IP Right Grant
- 2010-08-02 JP JP2010183449A patent/JP5826471B2/ja active Active
- 2010-09-07 DE DE102010044529.0A patent/DE102010044529B4/de active Active
-
2015
- 2015-03-31 US US14/675,172 patent/US9612750B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5588152A (en) | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5754948A (en) | 1995-12-29 | 1998-05-19 | University Of North Carolina At Charlotte | Millimeter-wave wireless interconnection of electronic components |
US20050041031A1 (en) | 2003-08-18 | 2005-02-24 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US20070088703A1 (en) | 2005-10-17 | 2007-04-19 | Microsoft Corporation | Peer-to-peer auction based data distribution |
Also Published As
Publication number | Publication date |
---|---|
JP2011060278A (ja) | 2011-03-24 |
US20150205530A1 (en) | 2015-07-23 |
CN102024011A (zh) | 2011-04-20 |
DE102010044529A1 (de) | 2011-03-24 |
US9015440B2 (en) | 2015-04-21 |
KR101747966B1 (ko) | 2017-06-15 |
CN102024011B (zh) | 2016-05-04 |
US9612750B2 (en) | 2017-04-04 |
JP5826471B2 (ja) | 2015-12-02 |
US20110066796A1 (en) | 2011-03-17 |
KR20110028212A (ko) | 2011-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102010044529B4 (de) | Autonomes speicher-sub-system mit hardwarebeschleuniger | |
DE102010044531B4 (de) | Autonome Speicherarchitektur | |
DE112011101321B4 (de) | Abfragen von Leistungsdaten auf einem parallelenComputersystem, das Rechenknoten aufweist | |
DE102018006894A1 (de) | Technologien zum Auslagern von Beschleunigungsaufgaben-Ablaufplanungsoperationen an Beschleunigerschlitten | |
DE112018004251T5 (de) | Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich | |
DE102020132764A1 (de) | Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive | |
DE112011101469T5 (de) | Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem | |
DE102020133269A1 (de) | Konfigurieren von Parametern von Zielsubsystemen von nichtflüchtigem Speicher für die Arbeitslast-Anforderungs-Servicequalität | |
DE112020001937T5 (de) | Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung | |
DE102013209643B4 (de) | Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens | |
DE102017213160B4 (de) | Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung | |
DE112014002754T5 (de) | Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus | |
DE112013000904T5 (de) | Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird | |
DE102019102883A1 (de) | Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern | |
DE102011075023A1 (de) | Indexierter Registerzugriff für einen Speicherbaustein | |
DE102020103521A1 (de) | Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation | |
DE102021127324A1 (de) | Planung von aufträgen auf grafischen verarbeitungseinheiten | |
DE112021001470T5 (de) | Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie | |
DE112012004926T5 (de) | Gemeinsame Speichernutzung durch Prozessoren | |
DE102018005759A1 (de) | Verbinden von beschleunigerressourcen unter verwendung einesswitches | |
DE102008016180A1 (de) | Darlegen von Systemtopologie für die Ausführungsumgebung | |
DE112011100854B4 (de) | Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren | |
DE102022130788A1 (de) | Verfahren, einrichtungen und herstellungsartikel zur erzeugung von befehlslisten zur auslagerung an beschleunigerschaltungsanordnung | |
DE102021107227A1 (de) | System und Verfahren zur effizienten Verarbeitung des Cache-Kohärenzprotokolls | |
DE102013202023A1 (de) | Verarbeitung unerwarteter Nachrichten an einem Datenverarbeitungsknoten eines Parallelcomputers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: NUMONYX B.V., ROLLE, CH |
|
8181 | Inventor (new situation) |
Inventor name: LEINWANDER, MARK, FOLSOM, CALIF., US Inventor name: HULBERT, JARED, SPRINGS, CALIF., US Inventor name: EILERT, SEAN, PENRYN, CALIF., US |
|
R081 | Change of applicant/patentee |
Owner name: MICRON TECHNOLOGY, INC., BOISE, US Free format text: FORMER OWNERS: EILERT, SEAN, PENRYN, CALIF., US; HULBERT, JARED, SHINGLE SPRINGS, CALIF., US; LEINWANDER, MARK, FOLSOM, CALIF., US Effective date: 20110414 Owner name: MICRON TECHNOLOGY, INC., BOISE, US Free format text: FORMER OWNER: SEAN EILERT,JARED HULBERT,MARK LEINWANDER, , US Effective date: 20110414 |
|
R016 | Response to examination communication | ||
R082 | Change of representative |
Representative=s name: SAMSON & PARTNER, PATENTANWAELTE, DE Representative=s name: SAMSON & PARTNER, PATENTANWAELTE, 80538 MUENCHEN, |
|
R081 | Change of applicant/patentee |
Owner name: MICRON TECHNOLOGY, INC., BOISE, US Free format text: FORMER OWNER: NUMONYX B.V., ROLLE, CH Effective date: 20120521 |
|
R082 | Change of representative |
Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE Effective date: 20120521 Representative=s name: SAMSON & PARTNER, PATENTANWAELTE, DE Effective date: 20120521 |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |