-
HINTERGRUND
-
Technisches Gebiet
-
Die vorliegende Offenbarung bezieht sich auf eine Ablagespeichervorrichtung und insbesondere auf eine Ablagespeichervorrichtung unter Verwendung einer Compute Express Link(CXL)-Schnittstelle.
-
Diskussion der verwandten Technik
-
Moderne Ablagespeichervorrichtungen sind in der Lage, größere Mengen an Daten zu speichern und mit höheren Geschwindigkeiten zu operieren.
-
Hostvorrichtungen, wie z. B. zentrale Verarbeitungseinheiten (CPU) und Grafikverarbeitungseinheiten (GPU), sind jedoch meist mit Halbleiterkomponenten, wie z. B. Speichervorrichtungen, über Datenbusse verbunden, die gemäß Peripheral Component Interconnect Express(PCIe)-Protokollen operieren. Datenbusse wie PCIe haben eine relativ geringe Bandbreite und lange Verzögerungen, und bei Halbleitervorrichtungen, die auf diese Weise angeordnet sind, können häufig Probleme in Bezug auf Kohärenz und gemeinsame Nutzung von Speicher auftreten.
-
KURZFASSUNG
-
Eine intelligente Ablagespeichervorrichtung enthält eine intelligente Schnittstelle, die mit einer Hostvorrichtung verbunden ist, eine Beschleunigerschaltung, die mit der intelligenten Schnittstelle über einen Datenbus verbunden ist, der einem Compute Express Link (CXL).cache-Protokoll und einem CXL.mem-Protokoll entspricht, und die konfiguriert ist, eine Beschleunigungsberechnung als Antwort auf einen Berechnungsbefehl der Hostvorrichtung auszuführen, und eine Ablagespeichersteuerung, die mit der intelligenten Schnittstelle über einen Datenbus verbunden ist, der dem CXL.io-Protokoll entspricht, und die konfiguriert ist, eine Datenzugriffsoperation für eine Ablagespeichervorrichtung als Antwort auf einen Zugriffsbefehl der Hostvorrichtung zu steuern. Die Beschleunigerschaltung ist für die Ablagespeichervorrichtung über einen internen Bus, der direkt mit der Ablagespeichersteuerung verbunden ist, direkt zugreifbar.
-
Eine intelligente Ablagespeichervorrichtung enthält eine intelligente Schnittstelle, die mit einer Hostvorrichtung verbunden ist, eine Speichersteuerungsschaltung, die mit der intelligenten Schnittstelle über einen Datenbus verbunden ist, der einem CXL.cache-Protokoll und einem CXL.mem-Protokoll entspricht, und konfiguriert ist, eine erste Zugriffsoperation für eine Speichervorrichtung zu steuern. Eine Ablagespeichersteuerung ist über einen Datenbus, der einem CXL.io-Protokoll entspricht, mit der intelligenten Schnittstelle verbunden und konfiguriert, eine zweite Zugriffsoperation für eine Ablagespeichervorrichtung zu steuern. Die intelligente Schnittstelle enthält eine interne Verbindung, die den Datenbus, der dem CXL.mem-Protokoll und dem CXL.io-Protokoll entspricht, direkt verbindet, um auf die Speichersteuerung und die Ablagespeichersteuerung direkt zuzugreifen.
-
Eine intelligente Ablagespeichervorrichtung enthält eine intelligente Schnittstelle, die mit einer Hostvorrichtung verbunden ist. Eine Beschleunigerschaltung ist mit der intelligenten Schnittstelle über einen Datenbus verbunden, der einem CXL.cache-Protokoll und einem CXL.mem-Protokoll entspricht, und die konfiguriert ist, als Antwort auf einen Berechnungsbefehl der Hostvorrichtung eine Beschleunigungsberechnung auszuführen. Eine Ablagespeichersteuerung ist über einen Datenbus, der einem CXL.io-Protokoll entspricht, mit der intelligenten Schnittstelle verbunden und konfiguriert, eine Datenzugriffsoperation für eine Ablagespeichervorrichtung als Antwort auf einen Datenzugriffsbefehl der Hostvorrichtung zu steuern. Eine Beschleunigerspeichersteuerungsschaltung ist über den Datenbus, der dem CXL.cache-Protokoll und dem CXL.mem-Protokoll entspricht, mit der intelligenten Schnittstelle verbunden und konfiguriert, eine zweite Zugriffsoperation für eine Beschleunigerspeichervorrichtung zu steuern. Die Ablagespeichersteuerung ist für die Beschleunigerschaltung und die Beschleunigerspeichersteuerungsschaltung direkt zugreifbar.
-
Ein Verfahren zum Operieren einer intelligenten Ablagespeichervorrichtung enthält Empfangen eines Befehls von einer Hostvorrichtung, Senden des Befehls an eine Beschleunigerschaltung über eine Compute Express Link (CXL)-Schnittstelle, Anfordern eines Datenzugriffs von einer Ablagespeichersteuerung durch die Beschleunigerschaltung über einen internen Bus gemäß Berechnungsinformation, die durch Dekodieren des Befehls extrahiert wird, Zugreifen auf Daten von einer Ablagespeichervorrichtung durch die Ablagespeichersteuerung gemäß der Anforderung und Empfangen eines Datenzugriffsergebnisses, das von der Ablagespeichervorrichtung empfangen wird, durch die Beschleunigerschaltung, um eine Beschleunigungsberechnung basierend auf dem Befehl auszuführen.
-
Figurenliste
-
Die obigen und andere Aspekte und Merkmale der vorliegenden Offenbarung werden durch die detaillierte Beschreibung verschiedener Ausführungsformen davon unter Bezugnahme auf die beigefügten Zeichnungen deutlicher, in denen:
- 1 ein Blockdiagramm ist, das eine intelligente Ablagespeichervorrichtung gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
- 2 ein Blockdiagramm ist, das die intelligente Ablagespeichervorrichtung von 1 veranschaulicht;
- 3 ein Blockdiagramm ist, das die Beschleunigerschaltung von 2 veranschaulicht;
- 4 ein Blockdiagramm ist, das die Ablagespeichersteuerung von 2 veranschaulicht;
- 5 und 6 Flussdiagramme sind, die ein Verfahren zum Operieren der intelligenten Ablagespeichervorrichtung von 2 veranschaulichen;
- 7 ein Blockdiagramm ist, das die intelligente Ablagespeichervorrichtung von 1 veranschaulicht;
- 8 ein Blockdiagramm ist, das die intelligente Schnittstelle von 1 veranschaulicht; und
- 9 bis 11 Flussdiagramme sind, die ein Verfahren zum Operieren der intelligenten Ablagespeichervorrichtung von 7 veranschaulichen.
-
DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Nachfolgend werden Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
1 ist ein Blockdiagramm, das eine intelligente Ablagespeichervorrichtung gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
-
In einigen Ausführungsformen kann eine Hostvorrichtung 10 einer zentralen Verarbeitungseinheit (CPU), einer Grafikverarbeitungseinheit (GPU), einer neuronalen Verarbeitungseinheit (NPU), einem Field-Programmable Gate Array (FPGA), einem Prozessor, einem Mikroprozessor, einem Anwendungsprozessor (AP) oder dergleichen entsprechen. Gemäß einigen Ausführungsformen kann die Hostvorrichtung 10 als Ein-Chip-System (SoC) implementiert sein. Bei der Hostvorrichtung 10 kann es sich beispielsweise um ein mobiles System wie ein tragbares Kommunikationsendgerät (Mobiltelefon), ein Smartphone, einen Tablet-Computer, eine tragbare Vorrichtung, eine Vorrichtung für das Gesundheitswesen, eine Vorrichtung für das Internet der Dinge (IoT), einen Personalcomputer, einen Laptop/Notebook-Computer, einen Server, einen Mediaplayer oder eine Kfz-Vorrichtung wie ein Satellitennavigationssystem handeln. Darüber hinaus kann die Hostvorrichtung 10 eine Kommunikationsvorrichtung enthalten, die so konfiguriert ist, dass sie Signale zwischen anderen Vorrichtungen außerhalb der Hostvorrichtung 10 gemäß verschiedenen Kommunikationsprotokollen sendet und empfängt. Die Kommunikationsvorrichtung ist eine Vorrichtung, die die Hostvorrichtung 10 mit einer drahtgebundenen oder drahtlosen Verbindung verbindet, und kann beispielsweise eine Antenne, einen Sendeempfänger und/oder ein Modem enthalten. Die Hostvorrichtung 10 kann z. B. mit einem Ethernet-Netzwerk verbunden sein oder über die Kommunikationsvorrichtung mit einem drahtlosen Netzwerk verbunden werden.
-
Die Hostvorrichtung 10 kann einen Host-Prozessor 11 und einen Host-Speicher 12 enthalten. Der Host-Prozessor 11 kann die gesamte Operation der Hostvorrichtung 10 steuern, und der Host-Speicher 12 ist ein Arbeitsspeicher und kann Befehle, Programme, Daten oder Ähnliches speichern, die für die Operation des Host-Prozessors 11 notwendig sind.
-
Bei einer intelligenten Ablagespeichervorrichtung 1000 kann es sich gemäß Ausführungsformen der vorliegenden Offenbarung um ein Datenzentrum oder eine mit künstlicher Intelligenz operierende Datenvorrichtung handeln. Bei der intelligenten Ablagespeichervorrichtung 1000 kann es sich um eine Halbleitervorrichtung handeln, die in der Lage ist, Prozesse auszuführen und Daten zu speichern, wie beispielsweise Processingin-Memory (PIM) oder Computing-in-Memory (CIM).
-
Die intelligente Ablagespeichervorrichtung 1000 kann eine intelligente Schnittstelle 100, eine Beschleunigerschaltung 200, eine Ablagespeichersteuerung 300 und eine Speichersteuerung 400 enthalten. Die intelligente Ablagespeichervorrichtung 1000 kann gemäß einigen Ausführungsformen die intelligente Schnittstelle 100, die Beschleunigerschaltung 200 und die Ablagespeichersteuerung 300 enthalten, oder sie kann gemäß einigen Ausführungsformen die intelligente Schnittstelle 100, die Ablagespeichersteuerung 300 und die Speichersteuerung enthalten, oder sie kann gemäß einigen Ausführungsformen die intelligente Schnittstelle 100, die Beschleunigerschaltung 200, die Ablagespeichersteuerung 300 und die Speichersteuerung enthalten.
-
Bei der in 1 dargestellten intelligenten Ablagespeichervorrichtung 1000 handelt es sich um eine Halbleitervorrichtung, die gemäß einigen Ausführungsformen eine Compute Express Link(CXL)-Schnittstelle verwendet. Die intelligente Schnittstelle 100 verwendet die CXL-Schnittstelle gemäß einigen Ausführungsformen.
-
Bei der CXL-Schnittstelle handelt es sich um einen Standard für die Verbindung von Computervorrichtungen und um eine Schnittstelle, die den Overhead und die Wartezeit der Hostvorrichtung und der intelligenten Ablagespeichervorrichtung 1000 reduzieren und die gemeinsame Nutzung des Speicherplatzes des Host-Speichers und der Ablagespeichervorrichtung in einer heterogenen Computerumgebung ermöglichen kann, in der die Hostvorrichtung 10 und die intelligente Ablagespeichervorrichtung 1000 zusammenarbeiten. Zum Beispiel kommunizieren die Hostvorrichtung 10 und das Ein-Chip-System, die GPU, die komplexe Berechnungen ausführt, und ein Beschleunigungsmodul, wie ein Field-Programmable Gate Array (FPGA), direkt miteinander und teilen sich den Speicher. Die intelligente Ablagespeichervorrichtung 1000 der vorliegenden Spezifikation basiert auf dem CXL-Standard.
-
Die Hostvorrichtung 10 kann mit mindestens einer der Beschleunigerschaltungen 200, der Ablagespeichersteuerung 300 oder der Speichersteuerung 400 über die intelligente Schnittstelle 100 verbunden werden, um die gesamte Operation der intelligenten Ablagespeichervorrichtung 1000 zu steuern.
-
Die intelligente Schnittstelle 100 ist so konfiguriert, dass sie CXL-Unterprotokolle wie CXL.io, CXL.cache-Protokoll und CXL.mem verwendet. Das CXL.io-Protokoll ist eine PCIe-Transaktionsschicht, die im System für die Erkennung von Vorrichtungen, die Verwaltung von Unterbrechungen, das Bereitstellen von Zugriffen durch Register, die Verarbeitung von Initialisierungen, die Verarbeitung von Signalfehlern oder Ähnliches verwendet wird. Das CXL.cache-Protokoll kann verwendet werden, wenn die Beschleunigerschaltung 200 auf den Host-Speicher 12 der Hostvorrichtung zugreift. Das CXL.mem-Protokoll kann verwendet werden, wenn die Hostvorrichtung 10 auf einen Beschleunigerspeicher 290 der Beschleunigerschaltung 200 (siehe 2) oder die mit der Speichersteuerung 400 verbundene Speichervorrichtung 490 (siehe 7) zugreift.
-
Die Beschleunigerschaltung 200 kann eine Beschleunigungsberechnung gemäß einem Berechnungsbefehl der Hostvorrichtung 10 ausführen. Gemäß einigen Ausführungsformen kann die Beschleunigerschaltung 200 eine Verarbeitungseinheit für ein neuronales Netzwerk, ein KI-Beschleuniger, eine CPU, eine Grafikverarbeitungseinheit (GPU), eine digitale Signalverarbeitungseinheit (DSP), eine neuronale Verarbeitungseinheit (NPU), ein Coprozessor oder ein anderer geeigneter Prozessor sein.
-
Die Ablagespeichersteuerung 300 kann mit mindestens einer Ablagespeichervorrichtung 390 verbunden sein, um eine Operation der Ablagespeichervorrichtung 390 zu steuern. Beispielsweise kann eine Zugriffsoperation wie das Lesen oder Löschen von in der Ablagespeichervorrichtung 390 gespeicherten Daten oder das Schreiben von Daten enthalten sein. Die mindestens eine Ablagespeichervorrichtung 390 kann eine nichtflüchtige Speichervorrichtung (z.B. eine NAND-Speichervorrichtung) oder eine andere geeignete Form von Speicher enthalten.
-
Die Speichersteuerung 400 kann mit mindestens einer Speichervorrichtung 490 verbunden sein (siehe 7), um eine Operation der Speichervorrichtung 490 zu steuern. So kann beispielsweise eine Zugriffsoperation wie das Lesen oder Löschen von in der Speichervorrichtung 490 gespeicherten Daten oder das Schreiben von Daten enthalten sein.
-
Gemäß einigen Ausführungsformen können mindestens eine Ablagespeichervorrichtung 390, die mit der Ablagespeichersteuerung 300 verbunden ist, und mindestens eine Speichervorrichtung 490, die mit der Speichersteuerung 400 verbunden ist, in der intelligenten Ablagespeichervorrichtung 1000 enthalten sein, eingebettet sein oder lösbar implementiert sein. Eine detaillierte Beschreibung wird im Folgenden bereitgestellt.
-
Die Speichersteuerung 400 kann die Datenkohärenz zwischen der Speichervorrichtung 490 und dem Host-Speicher 12 der Hostvorrichtung 10 mit einer sehr hohen Bandbreite über die Hostvorrichtung 10 und die CXL-Schnittstelle halten. Beispielsweise kann die Hostvorrichtung 10 den in der intelligenten Ablagespeichervorrichtung 1000 enthaltenen Speicher als Arbeitsspeicher einer Hostvorrichtung 10 verwenden, die die Cachekohärenz unterstützt, und kann auf Daten über den Speicher oder einen Befehl zum Laden/Speichern des Speichers zugreifen. Die Datenkohärenz kann zum Beispiel durch Kohärenzverarbeitung gemäß dem MESI-Protokoll ausgeführt werden. Das MESI-Protokoll kann einen Inter-Memory-Zustand zwischen der Speichervorrichtung und der Hostvorrichtung definieren, einschließlich eines ungültigen Zustands, eines gemeinsam genutzten Zustands, eines modifizierten Zustands und eines exklusiven Zustands, und kann die Kohärenzoperation gemäß dem definierten Zustand ausführen.
-
Bei der Durchführung des Datenzugriffs unter der Beschleunigerschaltung 200, der Ablagespeichersteuerung 300 und der Speichersteuerung 400 kann die intelligente Ablagespeichervorrichtung 1000 einen direkten Zugriff über eine interne Verbindung zwischen der Beschleunigerschaltung 200 und der Ablagespeichersteuerung 300 oder zwischen der Ablagespeichersteuerung 300 und der Speichersteuerung 400 ohne den Eingriff der Hostvorrichtung 10 ausführen.
-
2 ist ein Blockdiagramm, das die intelligente Ablagespeichervorrichtung von 1 gemäß einigen Ausführungsformen zeigt. 3 ist ein Blockdiagramm, das die Beschleunigerschaltung von 2 gemäß einigen Ausführungsformen veranschaulicht, und 4 ist ein Blockdiagramm, das die Ablagespeichersteuerung von 2 gemäß einigen Ausführungsformen veranschaulicht.
-
Gemäß einigen Ausführungsformen (2 bis 4) kann die Beschleunigerschaltung 200 über das CXL.cache-Protokoll und das CXL.mem-Protokoll der intelligenten Schnittstelle 100 mit der Hostvorrichtung 10 verbunden sein. Die Beschleunigerschaltung 200 kann einen Befehl (A.CMD) und Berechnungsdaten (A.cache/mem) an die Hostvorrichtung 10 senden und von dieser empfangen, und je nach dem Subjekt, das die Daten sendet, kann sie Daten durch Auswählen des CXL.cache-Protokolls oder des CXL.mem-Protokolls senden und empfangen.
-
Wie hierin beschrieben, kann die Bezugnahme auf die verschiedenen CXL-Unterprotokolle verwendet werden, um sich auf einen Datenbus zu beziehen, der dem jeweiligen CXL-Unterprotokoll entspricht. Wenn also gesagt wird, dass die Beschleunigerschaltung 200 über das CXL.cache-Protokoll und das CXL.mem-Protokoll mit der Hostvorrichtung 10 verbunden ist, kann dies so verstanden werden, dass die Beschleunigerschaltung 200 mit der Hostvorrichtung 10 über einen Datenbus verbunden ist, der gemäß den CXL.cache- und CXL.mem-Unterprotokollen des CXL-Protokolls operiert.
-
Die Beschleunigerschaltung 200 kann mindestens einen Beschleunigerspeicher 290 enthalten. Der Beschleunigerspeicher 290 der Beschleunigerschaltung 200 kann der Beschleunigerschaltung 200 vorbehalten sein, was so zu verstehen ist, dass der Speicher 290 nur durch die Beschleunigerschaltung 200 zugreifbar ist und von keiner anderen, von der Beschleunigerschaltung 200 unabhängigen Vorrichtung zugreifbar ist. Somit ist der Beschleunigerspeicher kein gemeinsam genutzter Speicher. Der Beschleunigerspeicher 290 kann gemäß verschiedenen Ausführungsformen ein nichtflüchtiger Speicher oder ein flüchtiger Speicher sein. Der Beschleunigerspeicher 290 als Arbeitsspeicher kann gemäß einigen Ausführungsformen ein flüchtiger Speicher wie dynamischer RAM (DRAM), statischer RAM (SRAM) oder synchroner dynamischer RAM (SDRAM) sein oder gemäß einigen Ausführungsformen mindestens einer der nichtflüchtigen Speicher sein.
-
Der Beschleunigerspeicher 290 kann gemäß verschiedenen Ausführungsformen durch Einbettung in die Beschleunigerschaltung 200 implementiert sein, er kann elektrisch verbunden sein, indem er außerhalb der Beschleunigerschaltung 200 angeordnet wird, oder er kann als lösbar/entfernbarer Speicher in die Beschleunigerschaltung 200 implementiert werden.
-
Gemäß einigen Ausführungsformen kann die Ablagespeichersteuerung 300 mit der Hostvorrichtung 10 über das CXL.io-Protokoll der intelligenten Schnittstelle 100 verbunden sein. Die Hostvorrichtung 10 und die Ablagespeichersteuerung 300 können eine Datenzugriffsanforderung (S.CMD) und Daten (S.Data) über das CXL.io-Protokoll der intelligenten Schnittstelle 100 senden und empfangen.
-
Die Ablagespeichersteuerung 300 kann mindestens eine Ablagespeichervorrichtung 390 enthalten. Bei der Ablagespeichervorrichtung 390 kann es sich um eine nichtflüchtige Speichervorrichtung handeln, und der nichtflüchtige Speicher kann beispielsweise einen Flash-Speicher (z. B. NAND-Flash oder NOR-Flash oder Ähnliches), eine Festplatte oder ein Solid-State-Laufwerk (SSD) oder eine andere Ablagespeichertechnologie enthalten.
-
Die Ablagespeichervorrichtung 390 kann unter der Steuerung der Ablagespeichersteuerung 300 Lösch-, Schreib- oder Leseoperationen o. ä. von Daten ausführen. Zu diesem Zweck empfängt die Ablagespeichervorrichtung 390 einen Befehl CMD und eine Adresse ADDR von der Ablagespeichersteuerung 300 über eine Eingangs-/Ausgangsleitung und sendet und empfängt Daten DATA für eine Programmoperation oder eine Leseoperation an die Ablagespeichersteuerung 300 und von dieser. Darüber hinaus kann die Ablagespeichervorrichtung 390 über die Steuerleitung ein Steuersignal CTRL empfangen, und die Ablagespeichervorrichtung 390 kann von der Ablagespeichersteuerung 300 Leistung PWR empfangen.
-
Gemäß einigen Ausführungsformen können die Beschleunigerschaltung 200 und die Ablagespeichersteuerung 300 über einen internen Bus Ipath1 miteinander verbunden sein. Die Beschleunigerschaltung 200 kann über den internen Bus Ipath1 direkt auf die Ablagespeichersteuerung 300 zugreifen. Zum Beispiel kann die Beschleunigerschaltung 200 direkt den Zugriff auf die Daten der Ablagespeichervorrichtung 390 anfordern, ohne dass die Hostvorrichtung 10 eingreift.
-
Wie in 3 dargestellt, kann die Beschleunigerschaltung 200 eine Befehlsdekodierschaltung 210, eine Kohärenz-Engine 220 (die auch als Kohärenz-Engine bezeichnet werden kann), eine DMA-Engine 230 (direkter Speicherzugriff), eine Beschleunigerspeichersteuerung 240 und ein Berechnungsmodul 250 gemäß einigen Ausführungsformen enthalten, und die jeweiligen Komponenten können über einen Beschleunigersystembus 201 elektrisch miteinander verbunden sein. Wie hier verwendet, kann sich der Ausdruck „Engine“ auf eine logische Schaltung beziehen, die Befehle ausführt, um eine bestimmte Funktion auszuführen.
-
Wird ein Befehl, z. B. ein Berechnungsbefehl von der Hostvorrichtung 10 empfangen, dekodiert die Befehlsdekodierschaltung 210 den empfangenen Berechnungsbefehl, um Berechnungsinformation zu extrahieren. Die Berechnungsinformation kann z. B. einen Berechnungstyp, eine Adresse der zu berechnenden Daten oder Ähnliches enthalten.
-
Die Kohärenz-Engine 220 hält die Kohärenz zwischen den im Beschleunigerspeicher 290 der Beschleunigerschaltung 200 gespeicherten Daten und den Daten im Speicher 12 der Hostvorrichtung 10 aufrecht. Beispielsweise wird eine Kohärenzverarbeitung ausgeführt, so dass die Hostvorrichtung 10 die im Beschleunigerspeicher 290 der Beschleunigerschaltung 200 gespeicherten Daten als Host-Attached-Speicher verwendet. Wenn beispielsweise neue Berechnungsdaten im Beschleunigerspeicher 290 gespeichert werden, kann die Kohärenz-Engine 220 eine Kohärenzverarbeitung über das CXL.cache-Protokoll ausführen, um die Berechnungsdaten auch im Speicher 12 der Hostvorrichtung auf die gleiche Weise zu speichern. In ähnlicher Weise kann die Hostvorrichtung 10 eine Kohärenzverarbeitung zur gemeinsamen Nutzung von Daten im Speicher 12 der Hostvorrichtung mit dem Beschleunigerspeicher 290 über das CXL.mem-Protokoll ausführen.
-
Die DMA-Engine 230 kann mit dem internen Bus Ipath1 verbunden werden und kann direkt auf die Ablagespeichersteuerung 300 zugreifen. Wenn gemäß der Anforderung des Berechnungsmoduls 250 oder der Hostvorrichtung 10 Daten in die Ablagespeichervorrichtung 390 geschrieben oder aus dieser gelesen werden müssen, kann die DMA-Engine 230 den Datenzugriff auf die Ablagespeichersteuerung 300 anfordern.
-
Die Beschleunigerspeichersteuerung 240 kann eine Operation des Beschleunigerspeichers 290 steuern. Beispielsweise kann die Steuerung so ausgeführt werden, dass im Beschleunigerspeicher 290 gespeicherte Berechnungsdaten gelesen oder gelöscht werden oder neue Berechnungsdaten geschrieben werden.
-
Das Berechnungsmodul 250 kann eine Beschleunigungsberechnung gemäß dem dekodierten Berechnungsbefehl ausführen. Die Beschleunigungsberechnung kann gemäß einigen Ausführungsformen Signalverarbeitung und Bildsignalverarbeitung sowie Berechnungsverarbeitung basierend auf verschiedenen Arten von Netzwerken enthalten, wie z. B. neuronale Verarbeitung, z. B. Faltungsneuronales Netzwerk (CNN), Region mit Faltungsneuronalem Netzwerk (R-CNN), Region Proposal Network (RPN), rekurrentes neuronales Netzwerk (RNN), stapelbasiertes tiefes neuronales Netzwerk (S-DNN), dynamisches neuronales Netzwerk im Zustandsraum (S-SDNN), Dekonvolutionsnetzwerk, tiefes Glaubensnetzwerk (DBN), eingeschränkte Boltzmann-Maschine (RBM), vollständiges Faltungsnetzwerk, Netzwerk mit langem Kurzzeitspeicher (LSTM), Klassifizierungsnetzwerk oder dergleichen.
-
Wie in 4 dargestellt, kann die Ablagespeichersteuerung 300 gemäß einigen Ausführungsformen einen Planer bzw. Scheduler 310, eine Steuereinheit 320, einen internen Speicher 330 und eine nichtflüchtige Speichersteuerung 340 enthalten, und die jeweiligen Komponenten können über einen internen Systembus 301 elektrisch miteinander verbunden sein.
-
Der Planer 310 kann sowohl mit dem internen Bus Ipath1 als auch mit der intelligenten Schnittstelle 100 verbunden sein und kann den Operationsablauf gemäß einer voreingestellten Richtlinie planen, wenn er eine Zugriffsanforderung von der Hostvorrichtung 10 und eine Zugriffsanforderung von der Beschleunigerschaltung 200 erhält. Die voreingestellte Richtlinie kann gemäß einigen Ausführungsformen darin bestehen, einer Zugriffsanforderung von der Beschleunigerschaltung 200 Vorrang vor einer Zugriffsanforderung von der Hostvorrichtung 10 zu geben. Alternativ dazu kann die dringende Anforderung der Hostvorrichtung 10 vor anderen Anforderungen, die bereits getätigt wurden, vorrangig verarbeitet werden.
-
Die Steuereinheit 320 kann die Gesamtoperation der Ablagespeichersteuerung 300 steuern und beispielsweise Datenzugriffsoperationen wie das Schreiben, Lesen oder Löschen von Daten in der Ablagespeichervorrichtung 390 und die interne Operation der Ablagespeichervorrichtung 390 oder Ähnliches ausführen.
-
Der interne Speicher 330 kann ein Arbeitsspeicher der Ablagespeichersteuerung 300 sein und kann Operationsdaten speichern, die erzeugt werden, während die Ablagespeichersteuerung 300 gesteuert wird.
-
Die nichtflüchtige Speichersteuerung 340 kann mindestens eine nichtflüchtige Speichervorrichtung 390 steuern, die mit der Ablagespeichersteuerung 300 verbunden ist.
-
5 und 6 sind Flussdiagramme, die ein Operationsverfahren der intelligenten Ablagespeichervorrichtung von 2 veranschaulichen.
-
Bezugnehmend auf 5 sendet die Hostvorrichtung 10 zunächst einen Befehl an die intelligente Ablagespeichervorrichtung 1000 (Schritt S10). Die intelligente Schnittstelle 100 der intelligenten Ablagespeichervorrichtung 1000 prüft, für welche Komponente der Befehl bestimmt ist, und wählt und sendet ein Protokoll der entsprechenden Komponente (Schritt S11). Wenn zum Beispiel die Hostvorrichtung 10 einen Berechnungsbefehl sendet, verbindet sich die intelligente Schnittstelle 100 über ein Protokoll (CXL.cache-Protokoll oder CXL.mem-Protokoll) mit der Beschleunigerschaltung 200.
-
Die Beschleunigerschaltung 200 extrahiert Berechnungsinformation durch die Dekodierung eines empfangenen Berechnungsbefehls CMD1 (Schritt S12). Die Berechnungsinformation kann z. B. einen Berechnungstyp, eine Adresse der für die Berechnung erforderlichen Daten oder Ähnliches enthalten. Gemäß einigen Ausführungsformen kann der Berechnungsbefehl mindestens eine Operation enthalten, die durch die Beschleunigerschaltung 200 auszuführen ist. In der nachstehend beschriebenen Ausführungsform wird davon ausgegangen, dass der Berechnungsbefehl CMD1 einen Fall anzeigt, in dem die Beschleunigungsberechnung basierend auf Daten der Ablagespeichervorrichtung 390 ausgeführt wird.
-
Die Beschleunigerschaltung 200 sendet eine Datenzugriffsanforderung an die Ablagespeichersteuerung 300 (Schritt S13). In diesem Fall kann die Zugriffsanforderung direkt an die Ablagespeichersteuerung 300 über den internen Bus Ipath1 ohne Eingriff der Hostvorrichtung 10 angefordert werden.
-
Beim Empfang der Zugriffsanforderung von der Beschleunigerschaltung 200 (Schritt S14) führt die Ablagespeichersteuerung 300 eine Operation gemäß der Zugriffsanforderung auf der Ablagespeichervorrichtung 390 in einer gemäß einer voreingestellten Richtlinie bestimmten Operationsreihenfolge durch (Schritt S15). Beispielsweise plant die Ablagespeichersteuerung 300 eine Mehrzahl von Zugriffsanforderungen gemäß einer voreingestellten Richtlinie über einen Planer, um eine Operation-Reihenfolge zu bestimmen. Die Steuereinheit 320 und die nichtflüchtige Speichersteuerung 340 führen eine Zugriffsoperation auf die nichtflüchtige Speichervorrichtung 390 gemäß einer durch den Planer 310 bestimmten Reihenfolge aus.
-
Die Ablagespeichersteuerung 300 sendet das Leistungsergebnis des Zugriffs an die Beschleunigerschaltung 200 (Schritt S16). Im Falle einer Anforderung zum Lesen von Daten werden beispielsweise die gelesenen Daten (im Folgenden „erste Daten“) zurückgegeben, und im Falle einer Anforderung zum Schreiben oder Löschen von Daten wird der Leistungsabschluss zurückgegeben.
-
Beim Empfangen eines Leistungsergebnisses, z. B. der gelesenen ersten Daten (Schritt S17), führt die Beschleunigerschaltung 200 eine Kohärenzverarbeitung mit der Hostvorrichtung 10 aus, um die Daten im Beschleunigerspeicher 290 zu speichern (Schritt S18). Zu diesem Zeitpunkt kann die Kohärenzverarbeitung über das CXL.cache-Protokoll ausgeführt werden. Die Kohärenzverarbeitung kann durch die kohärenzbezogene Komponente auf der Seite der Hostvorrichtung 10 und der Kohärenz-Engine 220 durchgeführt werden, und nachdem die Kohärenz-Engine 220 den Abschluss der Kohärenzverarbeitung von der Hostvorrichtung 10 bestätigt hat, können die ersten Daten durch die Beschleunigerspeichersteuerung 240 im Beschleunigerspeicher 290 gespeichert werden (Schritt S19).
-
Die Beschleunigerschaltung 200 liest die im Beschleunigerspeicher 290 gespeicherten ersten Daten als eine nachfolgende Operation und führt eine Berechnung aus (Schritt S20). In diesem Fall kann die Berechnung auf der Art der Berechnung basieren, die in der Berechnungsinformation enthalten ist. Die Beschleunigerschaltung 200 führt eine Kohärenzverarbeitung mit der Hostvorrichtung 10 durch, um die zweiten Daten, die durch das Ausführen der Berechnung erzeugt wurden, im Beschleunigerspeicher 290 zu speichern (Schritt S21). Zu diesem Zeitpunkt kann die Kohärenzverarbeitung über das CXL.cache-Protokoll ausgeführt werden. Wenn die Kohärenz-Engine 220 den Abschluss der Kohärenzverarbeitung von der Hostvorrichtung 10 bestätigt, speichert die Beschleunigerspeichersteuerung 240 die zweiten Daten in dem Beschleunigerspeicher 290 (Schritt S22).
-
Wenn alle von einer oder mehreren Operationen gemäß dem Berechnungsbefehl CMD1 abgeschlossen sind, sendet die Beschleunigerschaltung 200 über die intelligente Schnittstelle 100 eine Abschlussnachricht an die Hostvorrichtung 10 (Schritt S23). In diesem Fall kann die Abschlussnachricht die zweiten Daten oder einen Wert enthalten, der basierend auf den zweiten Daten festgelegt wurde. Die Abschlussnachricht wird daraufhin durch die Hostvorrichtung 10 empfangen (Schritt S25).
-
Die oben beschriebene Ausführungsform geht von einem Fall aus, in dem eine Beschleunigungsberechnung unter Verwendung von in der Ablagespeichervorrichtung 390 gespeicherten Daten ausgeführt wird, aber die Ausführungsform der vorliegenden Offenbarung ist darauf nicht beschränkt, und die Beschleunigungsberechnung kann basierend auf dem Beschleunigerspeicher 290 oder den initialen Daten des Speichers 12 der Hostvorrichtung ausgeführt werden. In diesem Fall kann die gemeinsame Nutzung des Ergebnisses der Beschleunigungsberechnung mit der Hostvorrichtung 10 wie in den Schritten S19 bis S25 ausgeführt werden, aber die Schritte S13 bis S17 werden möglicherweise nicht ausgeführt, abhängig von der Position der zu lesenden initialen Daten.
-
Unterdessen prüft die intelligente Ablagespeichervorrichtung 1000 gemäß 6, wenn die Hostvorrichtung 10 einen Befehl CMD2 sendet (Schritt S30), welche Komponente an der intelligenten Schnittstelle 100 zum Ziel hat, und wählt und sendet das Protokoll der entsprechenden Komponente (Schritt S31). Wenn zum Beispiel die Hostvorrichtung 10 einen Datenzugriff anfordert, verbindet sich die intelligente Schnittstelle 100 mit der Ablagespeichersteuerung 300 über das CXL.io-Protokoll.
-
Wenn die Ablagespeichersteuerung 300 den Befehl CMD2 von der Hostvorrichtung 10 empfängt, bestimmt der Planer 310 einen Operationsablauf gemäß einer voreingestellten Richtlinie. Die Steuereinheit 320 und die nichtflüchtige Speichersteuerung 340 führen eine Datenzugriffsoperation gemäß einer vom Planer 310 bestimmten Reihenfolge aus (Schritt S32).
-
Die Ablagespeichersteuerung 300 sendet das Leistungsergebnis des Schrittes S32 an die Hostvorrichtung 10 (Schritt S33). Wenn es sich bei dem Befehl CMD2 beispielsweise um eine Anforderung zum Lesen von Daten handelt, werden die gelesenen Daten an die Hostvorrichtung 10 gesendet, und wenn es sich um eine Anforderung zum Schreiben oder Löschen von Daten handelt, wird der Leistungsabschluss an die Hostvorrichtung 10 gesendet. Die Hostvorrichtung 10 empfängt das Leistungsergebnis über die Ablagespeichersteuerung 300 und das CXL.io-Protokoll (Schritt S34).
-
7 ist ein Blockdiagramm, das die intelligente Ablagespeichervorrichtung von 1 gemäß einigen Ausführungsformen zeigt. 8 ist ein Blockdiagramm, das die intelligente Schnittstelle von 1 gemäß einigen Ausführungsformen zeigt.
-
Unter Bezugnahme auf 7 und 8 kann die intelligente Ablagespeichervorrichtung 1000 ein von der Hostvorrichtung 10 empfangenes Signal in ein Signal des CXL.mem-Protokolls, des CXL.io-Protokolls oder des CXL.cache-Protokolls in der intelligenten Schnittstelle 100 umwandeln und das Signal an jede der Komponenten 200, 300 und 400 senden.
-
Die intelligente Schnittstelle 100 kann eine Mehrzahl von Schichten enthalten, um mit der Hostvorrichtung 10 zu kommunizieren. Jede Schicht kann das gesendete und empfangene elektrische Signal basierend auf einer voreingestellten Definition interpretieren und das Signal in ein Signal zum Operieren jeder der Komponenten (z. B. 200, 300 und 400) in der intelligenten Ablagespeichervorrichtung 1000 umwandeln.
-
Die intelligente Schnittstelle 100 kann eine physikalische Schicht 110, einen Arbiter 120, eine Verbindungsschicht 130 und eine Transaktionsschicht 140 enthalten, und jede Konfiguration soll basierend auf dem CXL-Schnittstellenstandard funktionieren. Darüber hinaus kann die intelligente Schnittstelle 100 ferner verschiedene andere Schichten für die Kommunikation enthalten.
-
Die physikalische Schicht 110 interpretiert ein elektrisches Signal, das an die Hostvorrichtung 10 gesendet (TX) oder von der Hostvorrichtung 10 empfangen wird (RX). Der Arbiter 120 kann multiplexen, um zu entscheiden, welches Unterprotokoll verwendet wird, um das von der physikalischen Schicht 110 ausgegebene Signal zu senden. Beispielsweise wird es für die Beschleunigerschaltung 200 an eine CXL.cache- oder CXL.mem-Verbindungsschicht 131 ausgegeben, und für die Speichervorrichtung 490, die Ablagespeichervorrichtung 390 oder eine heterogene Vorrichtung unter Verwendung einer PCI-Schnittstelle wird es an eine CXL.io-Verbindungsschicht 132 oder eine PCIe-Verbindungsschicht 133 ausgegeben.
-
Die Transaktionsschicht 140 empfängt ein Signal, das über die CXL.cache- oder CXL.mem-Verbindungsschicht 131, die CXL.io-Verbindungsschicht 132 oder die PCIe-Verbindungsschicht 133 durch die Transaktionsschichten 141, 142 und 143, die jedem Protokoll entsprechen, gesendet wird, und erzeugt eine Ausgabe.
-
Die intelligente Schnittstelle 100 umfasst eine interne Verbindung Ipath2, die das CXL.mem-Protokoll und das CXL.io-Protokoll direkt miteinander verbindet, und die interne Verbindung Ipath2 verbindet den Datenzugriff zwischen der Speichersteuerung 400 und der Ablagespeichersteuerung 300 direkt miteinander. Gemäß einigen Ausführungsformen können die CXL.cache- oder CXL.mem-Verbindungsschicht 131 und die CXL.io-Verbindungsschicht 132 über einen internen Verbindungsbus IPath2 direkt miteinander verbunden sein.
-
Gemäß einigen Ausführungsformen kann die Ablagespeichersteuerung 300 mit der Hostvorrichtung 10 über das CXL.io-Protokoll der intelligenten Schnittstelle 100 verbunden sein.
-
Beispielsweise kann die Speichersteuerung 400 über das CXL.mem-Protokoll oder das CXL.io-Protokoll verbunden sein, und die Ablagespeichersteuerung 300 kann über das CXL.io-Protokoll verbunden sein.
-
Gemäß einigen Ausführungsformen kann die intelligente Ablagespeichervorrichtung 1000 ferner einen Router 500, einen Speicherprotokoll-Handler 700 und einen Ablagespeicherprotokoll-Handler 600 für einen effizienteren Datenzugriff unter den Komponenten 200, 300 und 400 enthalten.
-
Der Router 500 kann mit der CXL.io Transaktionsschicht 142 verbunden sein und kann ein von der Transaktionsschicht empfangenes Signal an die Speichersteuerung 400 oder die Ablagespeichersteuerung 300 weiterleiten. Der Router 500 kann gemäß einigen Ausführungsformen innerhalb der intelligenten Schnittstelle 100 angeordnet sein und gemäß einigen Ausführungsformen in Bezug auf jede der intelligenten Schnittstelle 100, der Ablagespeichersteuerung 300 und der Speichersteuerung 400 getrennt angeordnet und implementiert sein.
-
Der Speicherprotokoll-Handler 700 kann zwischen die CXL.mem-Transaktionsschicht 141 und den Router 500 und die Speichersteuerung 400 geschaltet werden, kann eine Datenzugriffsanforderung für die Speichervorrichtung 490 empfangen und an die Speichersteuerung 400 übergeben und kann ein Ergebnis der Anforderung von der Speichersteuerung 400 an die Transaktionsschicht 141 oder den Router 500 zurücksenden. Der Speicherprotokoll-Handler 700 kann gemäß einigen Ausführungsformen innerhalb der intelligenten Schnittstelle 100 angeordnet sein, kann gemäß einigen Ausführungsformen separat angeordnet und in Bezug auf die Speichersteuerung 400 implementiert sein und kann gemäß einigen Ausführungsformen innerhalb der Speichersteuerung 400 angeordnet sein.
-
Der Ablagespeicherprotokoll-Handler 600 kann zwischen dem Router 500 und der Ablagespeichersteuerung 300 verbunden sein, kann eine Zugriffsanforderung für die Ablagespeichervorrichtung 390 empfangen und an die Ablagespeichersteuerung 300 weiterleiten und kann das Ergebnis der Anforderung an die Transaktionsschicht 142 zurücksenden. Der Ablagespeicherprotokoll-Handler 600 kann gemäß einigen Ausführungsformen innerhalb der intelligenten Schnittstelle 100 angeordnet sein, kann gemäß einigen Ausführungsformen separat angeordnet und in Bezug auf die Ablagespeichersteuerung 300 implementiert sein und kann gemäß einigen Ausführungsformen innerhalb der Ablagespeichersteuerung 300 angeordnet sein.
-
Wenn ein Datenzugriffsbefehl von dem Router 500 empfangen wird, parst der Ablagespeicherprotokoll-Handler 600 den Zugriffsbefehl, um die Adresse der angeforderten Daten zu prüfen. In diesem Fall kann der Zugriffsbefehl einen Operationstyp, eine Adresse von Daten oder Daten enthalten.
-
Wenn die Adresse der durch den Zugriffsbefehl geparsten Daten die Adresse der Ablagespeichervorrichtung 390 ist, übergibt der Ablagespeicherprotokoll-Handler 600 den Zugriffsbefehl an die Ablagespeichersteuerung 300.
-
Wenn die Adresse der durch den Zugriffsbefehl analysierten Daten die Speichervorrichtung 490 ist, übergibt der Ablagespeicherprotokoll-Handler 600 den Zugriffsbefehl an den Speicherprotokoll-Handler 700 über die interne Verbindung Ipath2. Die Speichersteuerung 400 kann basierend auf einem über den Speicherprotokoll-Handler 700 übergebenen Zugriffsbefehl eine Datenzugriffsoperation für die Speichervorrichtung 490 ausführen und den Ablagespeicherprotokoll-Handler 600 über das Leistungsergebnis informieren. Wenn die dem geparsten Zugriffsbefehl entsprechende Operation abgeschlossen ist, kann der Ablagespeicherprotokoll-Handler 600 die Hostvorrichtung 10 über die intelligente Schnittstelle 100 über den Leistungsabschluss benachrichtigen.
-
Die Beschreibungen der Ablagespeichersteuerung 300 und der nichtflüchtigen Speichervorrichtung 390 überlappen diejenigen von 2, und daher kann in dem Maße, in dem Beschreibungen verschiedener Elemente weggelassen werden, davon ausgegangen werden, dass diese Elemente mindestens den entsprechenden Elementen entsprechen, die an anderer Stelle in der vorliegenden Offenbarung beschrieben sind.
-
Die Speichersteuerung 400 kann eine Operation der Speichervorrichtung 490 steuern. Beispielsweise kann die Steuerung so ausgeführt werden, dass in der Speichervorrichtung 490 gespeicherte Berechnungsdaten gelesen oder gelöscht oder neue Berechnungsdaten geschrieben werden können.
-
Die Speichervorrichtung 490 kann gemäß einigen Ausführungsformen ein flüchtiger Speicher wie dynamischer RAM (DRAM), statischer RAM (SRAM) oder synchroner dynamischer RAM (SDRAM) sein, oder sie kann gemäß einigen Ausführungsformen mindestens einer der nichtflüchtigen Speicher sein. Ein nichtflüchtiger Speicher kann beispielsweise als mindestens einer der folgenden implementiert sein: einmalig programmierbarer ROM (OTPROM), programmierbarer ROM (PROM), löschbarer und programmierbarer ROM (EPROM), elektrisch löschbarer und programmierbarer ROM (EEPROM), Masken-ROM, Flash-ROM, Flash-Speicher (z. B. NAND-Flash oder NOR-Flash oder Ähnliches), eine Festplatte oder ein Solid-State-Laufwerk (SSD). Alternativ kann er in einer Form wie einer Speicherkarte (z. B. Compact Flash (CF), Secure Digital (SD), Micro Secure Digital (Micro-SD)), Mini Secure Digital (Mini-SD), Extreme Digital (xD), Multi-Media-Card (MMC) o. Ä.) oder einem externen Speicher (z. B. USB-Speicher), der mit einem USB-Anschluss verbunden werden kann, implementiert werden.
-
Die Speichervorrichtung 490 kann z. B. ein Arbeitsspeicher der intelligenten Ablagespeichervorrichtung 1000 sein. Die Speichervorrichtung 490 kann gemäß dem Zweck der Datenspeicherung in Form eines eingebetteten Speichers oder in Form eines Wechselspeichers implementiert sein. Beispielsweise können Daten für die Steuerung der intelligenten Ablagespeichervorrichtung 1000 in einem in die intelligente Ablagespeichervorrichtung 1000 eingebetteten Speicher gespeichert werden, und Daten für eine erweiterte Funktion der intelligenten Ablagespeichervorrichtung 1000 können in einem in die intelligente Ablagespeichervorrichtung 1000 entfernbaren Speicher gespeichert werden.
-
9 bis 11 sind Flussdiagramme, die ein Operationsverfahren der intelligenten Ablagespeichervorrichtung von 7 veranschaulichen.
-
Bezugnehmend auf 9, wenn die Hostvorrichtung 10 einen Befehl sendet (Schritt S 100), prüft die intelligente Schnittstelle 100 ein Protokoll basierend auf einem Ziel, an das der Befehl gesendet werden soll (Schritt S101).
-
Wenn der Befehl für die Ablagespeichervorrichtung 390 bestimmt ist, wird das CXL.io-Protokoll ausgewählt (Ja in Schritt S102), und der Ablagespeicherprotokoll-Handler parst den Befehl (Schritt S110). Der Ablagespeicherprotokoll-Handler 600 prüft die Adressinformation der anzufordernden Daten von dem geparsten Befehl (Schritt S111), und wenn die Adressinformation (Speicher-ID) zur Ablagespeichervorrichtung 390 gehört, wird der Datenzugriffsbefehl CMD1 an die Ablagespeichersteuerung 300 gesendet.
-
Die Ablagespeichersteuerung 300 liest die erste Information basierend auf der Adressinformation (Schritt S113) auf der Grundlage des Datenzugriffsbefehls CMD1 (Schritt S 112) und sendet die Daten an den Ablagespeicherprotokoll-Handler 600.
-
Andererseits benachrichtigt der Ablagespeicherprotokoll-Handler 600, wenn basierend auf dem geparsten Befehl keine zusätzliche Operation ausgeführt werden muss (Schritt S114), die Hostvorrichtung 10 über den Leistungsabschluss, indem er eine Abschlussnachricht sendet (Schritt S 119), die von der Hostvorrichtung 10 empfangen wird (Schritt S120).
-
Wenn es andererseits notwendig ist, die ersten Daten basierend auf dem geparsten Befehl in die Speichervorrichtung 490 zu schreiben (Schritt S114 in 9), übergibt der Ablagespeicherprotokoll-Handler 600 den Datenzugriffsbefehl CMD2 und die ersten Daten über die interne Verbindung IPath2 an den Speicherprotokoll-Handler 700. Der Speicherprotokoll-Handler 700 empfängt den Datenzugriffsbefehl CMD2 und die ersten Daten (Schritt S115) und fordert den Datenzugriff auf die Speichervorrichtung 490 von der Speichersteuerung 400 an (Schritt S116).
-
Die Speichersteuerung 400 schreibt die zweiten Daten in die Speichervorrichtung 490 (Schritt S117) und sendet die Nachricht über den Abschluss des Datenzugriffs an den Speicherprotokoll-Handler 700. Der Speicherprotokoll-Handler 700 benachrichtigt den Ablagespeicherprotokoll-Handler 600 über den Leistungsabschluss (Schritt S118), und der Ablagespeicherprotokoll-Handler 600 benachrichtigt schließlich die Hostvorrichtung 10 über den Leistungsabschluss (Schritt S120).
-
Andererseits empfängt die Ablagespeichersteuerung 300, wie in 10 dargestellt, den Datenzugriffsbefehl CMD2 von dem Ablagespeicherprotokoll-Handler 600 (S130) und erzeugt eine Anforderung von Daten (Schritt S131). Wenn es erforderlich ist, die dritten Daten von der Speichervorrichtung 490 basierend auf dem geparsten Befehl zu lesen (Schritt S114 in 10), übergibt der Ablagespeicherprotokoll-Handler 600 den Datenzugriffsbefehl CMD3 an den Speicherprotokoll-Handler 700 über die interne Verbindung IPath2. Der Speicherprotokoll-Handler 700 empfängt den Datenzugriffsbefehl CMD3 (Schritt S133) und fordert den Datenzugriff auf die Speichervorrichtung 490 von der Speichersteuerung 400 an (Schritt S134).
-
Die Speichersteuerung 400 liest die dritten Daten von der Speichervorrichtung 490 (Schritt S135). Gemäß einigen Ausführungsformen schreibt die Ablagespeichersteuerung 300 die über die interne Verbindung Ipath2 empfangenen dritten Daten in die Ablagespeichervorrichtung 390 (Schritt S136) und sendet eine Abschlussnachricht an den Speicherprotokoll-Handler 700 (Schritt S137). Der Ablagespeicherprotokoll-Handler 600 benachrichtigt schließlich die Hostvorrichtung 10 über den Leistungsabschluss (Schritt S138).
-
In 11 wird, wenn das von der intelligenten Schnittstelle 100 geprüfte Protokoll das CXL.mem-Protokoll ist (Schritt S102), der von der Hostvorrichtung 10 gesendete Befehl CMD an den Speicherprotokoll-Handler 700 gesendet (Schritt S140). Der Speicherprotokoll-Handler 700 übergibt eine Zugriffsanforderung gemäß einem Befehl CMD4 an die Speichersteuerung 400 (Schritt S141), und die Speichersteuerung 400 führt eine der Anforderung entsprechende Operation für die Speichervorrichtung 490 durch (Schritt S142) und teilt dann dem Speicherprotokoll-Handler 700 das Leistungsergebnis mit. Der Speicherprotokoll-Handler 700 übergibt das Leistungsergebnis an die Hostvorrichtung 10 (Schritt S143), und die Hostvorrichtung 10 empfängt das Leistungsergebnis (Schritt S144).
-
Die oben beschriebene intelligente Ablagespeichervorrichtung 1000 kann es der Hostvorrichtung 10 ermöglichen, mindestens zwei Komponenten unter den Komponenten der intelligenten Ablagespeichervorrichtung 1000, z. B. eine Beschleunigerschaltung, eine Ablagespeichervorrichtung und eine Speichervorrichtung, als eine separate Vorrichtung oder eine einzige Vorrichtung über eine einzige intelligente Schnittstelle zu betrachten. Dementsprechend kann der Latenz-Overhead, bei dem die Hostvorrichtung 10 eingreifen muss, um Daten zu übergeben, reduziert werden, und da die physische Verbindung zwischen den Komponenten bereitgestellt wird, kann der Software-Overhead zum Halten der Datenkohärenz reduziert werden.