DE112005003204T5 - Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock - Google Patents
Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock Download PDFInfo
- Publication number
- DE112005003204T5 DE112005003204T5 DE112005003204T DE112005003204T DE112005003204T5 DE 112005003204 T5 DE112005003204 T5 DE 112005003204T5 DE 112005003204 T DE112005003204 T DE 112005003204T DE 112005003204 T DE112005003204 T DE 112005003204T DE 112005003204 T5 DE112005003204 T5 DE 112005003204T5
- Authority
- DE
- Germany
- Prior art keywords
- pointer
- memory
- command
- location
- module
- 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.)
- Ceased
Links
- 238000000034 method Methods 0.000 title claims description 13
- 238000012545 processing Methods 0.000 claims description 22
- 239000004744 fabric Substances 0.000 claims description 9
- 238000012546 transfer Methods 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
Speichersteuerungssystem,
welches folgendes umfaßt:
ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern, wobei das Speicherbefehl-Speichersystem eine Mehrzahl von Orten umfaßt, die jeweils ein Befehlsspeicherfeld und ein Nächster-Ort-Feld aufweisen; und
eine Mehrzahl von Steuereinrichtungen, welche mit dem Speicherbefehl-Speichermodul gekoppelt sind, wobei jede der Mehrzahl von Steuereinrichtungen zu einem entsprechenden einer Mehrzahl von Speicherbänken gehört und jede der Steuereinrichtungen einen ersten Zeiger und einen zweiten Zeiger aufweist, wobei der erste Zeiger, der zweite Zeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für eine gegebene der Mehrzahl von Speicherbänken bereitstellen.
ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern, wobei das Speicherbefehl-Speichersystem eine Mehrzahl von Orten umfaßt, die jeweils ein Befehlsspeicherfeld und ein Nächster-Ort-Feld aufweisen; und
eine Mehrzahl von Steuereinrichtungen, welche mit dem Speicherbefehl-Speichermodul gekoppelt sind, wobei jede der Mehrzahl von Steuereinrichtungen zu einem entsprechenden einer Mehrzahl von Speicherbänken gehört und jede der Steuereinrichtungen einen ersten Zeiger und einen zweiten Zeiger aufweist, wobei der erste Zeiger, der zweite Zeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für eine gegebene der Mehrzahl von Speicherbänken bereitstellen.
Description
- KREUZVERWEIS AUF VERWANDTE ANMELDUNGEN
-
- Nicht zutreffend.
- ERKLÄRUNG BEZÜGLICH STAATLICH GEFÖRDERTER FORSCHUNG
-
- Nicht zutreffend.
- HINTERGRUND
- Wie auf dem Fachgebiet bekannt ist, können Netzwerkvorrichtungen, wie etwa Router und Switches, Netzwerkprozessoren umfassen, um das Empfangen und Senden von Daten zu ermöglichen. Bei bestimmten Netzwerkprozessoren, wie etwa den Mehrkern-, Einzelchip-Prozessoren vom Typ IXP-Network-Processor der Intel Corporation, werden Hochgeschwindigkeits-Warteschlangen- und FIFO(First-In-First-Out)-Strukturen durch eine Deskriptorstruktur unterstützt, welche Zeiger auf den Speicher verwendet. Die U.S. Patentanmeldung mit der Nr. US 2003/0140196 A1 offenbart beispielhafte Warteschlangensteuerungs-Datenstrukturen. Paketdeskriptoren, die durch Zeigerstrukturen adressieren werden, können beispielsweise 32 Bits oder weniger aufweisen.
- Wie auch im Gebiet bekannt ist, steigen Speicherkapazitätsanforderungen für Steuerspeicher stetig mit der Erhöhung der Anzahl von Warteschlangen, die von Netzwerksystemen unterstützt werden. Übliche SRAM(statischer Arbeitsspeicher)-Lösungen, wie etwa QDR(Quad-Datenrate)-Speichertechnologien, sind bezüglich der Speicherkapazität begrenzt. Wie bekannt ist, sind SRAM-Implementierungen teuer und verbrauchen ein hohes Maß an nutzbarer Fläche, verglichen mit DRAM(dynamischer Arbeitsspeicher)-Lösungen. Manche bekannten DRAM-Implementierungen, wie etwa RLDRAM(Verringerte-Latenzzeit-DRAM), weisen jedoch Speicher auf, der die Speicherbefehle für die unterschiedlichen Speicherbänke sortiert, um die Speicherbandbreitennutzung zu maximieren. Bestehende Speichersteuerungsdesigns verwenden eine separate FIFO für jede der Speicherbänke, was zu großen Mengen von Speichereinheiten, wie etwa FIFOs(First-In-First-Out), führt. Beispielsweise für 8 Bank-Designs werden 8 FIFOs verwendet, und für 16 Bank-Designs werden 16 FIFOs verwendet.
- Die
1 zeigt eine bankgestützte Speichersteuerung1 aus dem Stand der Technik, die eine Haupt-Befehls-FIFO2 umfaßt, um Befehle zu speichern, und ein Bank-Steuermodul4 umfaßt, um die Befehle, abhängig davon, welche der Speicherbänke5a –h den Befehl bearbeiten wird, zu sortieren. Eine Pin-Schnittstelle7 liegt zwischen den Speicherbänken5a –h und den FIFOs6a –h. Eine Kopf/Schwanz-Struktur8a –h für jede der FIFOs kann den Dateneingang und -ausgang von jeder der FIFOs6a –h steuern. Zusätzlich kann eine Vorgriffstruktur9a –h für jede der FIFOs6a –h die Datenübertragung zu der Pin-Schnittstelle7 erleichtern. - Bei dieser Anordnung ist eine Zahl von FIFOs nötig, die gleich der Anzahl von Speicherbänken ist, was ein relativ großes Maß an Chipfläche erfordert. Zusätzlich kann, wenn eine Bank-FIFO unterausgelastet ist, nicht benötigter Speicher nicht der FIFO abgegeben werden, die momentan aufgrund eines Übermaßes an Befehlen für eine bestimmte Speicherbank überbeansprucht ist. Wenn eine Bank-FIFO sich auffüllt, wird ein Gegendruck-Signal an das Haupt-Befehls-FIFO gesandt, welches seinerseits das gesamte System in Gegendruck versetzt, damit keine Befehle verloren gehen. Gegendruck-Signale verringern den Durchsatz und verschlechtern allgemein die Systemleistung. Des weiteren sind, da jedes der Speichermodule eine separate Voll-, Leer-, Kopfzeiger- und Schwanzzeiger-Struktur aufweist, acht Sätze dieser Strukturen für einen Acht-Bank-Speicher nötig usw.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die beispielhaften Ausführungen, die hier enthalten sind, werden besser durch die folgende detaillierte Beschreibung verstanden, zusammengenommen mit den beigefügten Zeichnungen, bei denen:
-
1 eine Implementierung einer Speichersteuerung aus dem Stand der Technik ist; -
2 ein Diagramm eines beispielhaften Systems ist, welches eine Netzwerkvorrichtung aufweist, die einen Netzwerkprozessor mit einer bankgestützten Speichersteuerung umfaßt; -
2A ein Diagramm eines beispielhaften Netzwerkprozessors mit Prozessorelementen ist, die eine bankgestützte Speichersteuerung unterstützen; -
3 ein Diagramm eines beispielhaften Prozessorelements (PE) ist, welches Mikrocode laufen läßt; -
4 ein Diagramm ist, welches eine beispielhafte Implementierung einer Speichersteuerung zeigt; -
5A –5D eine Abfolge von Speicherung und Verwendung von Befehlen bei einer Speichersteuerung zeigt; und -
6 eine schematische Abbildung einer beispielhaften Implementierung einer Speicherbank und einer Schnittstellenlogik ist. - DETAILLIERTE BESCHREIBUNG
- Die
2 zeigt eine beispielhafte Netzwerkvorrichtung2 , welche Netzwerkprozessoreinheiten (NPUs) umfaßt, die einen Assoziativspeicher mit einer verketteten Liste einer zu bearbeitenden Warteschlange aufweisen, um Speicherbefehle zu ordnen, wenn sie von der Datenquelle6 eingehende Pakete verarbeiten und die verarbeiteten Daten an eine Zielvorrichtung8 übertragen. Die Netzwerkvorrichtung2 kann beispielsweise einen Router, einen Switch und ähnliches umfassen. Die Datenquelle6 und die Zielvorrichtung8 können verschiedene Netzwerkvorrichtungen umfassen, die jetzt bekannt sind oder noch entwickelt werden und über einen Übertragungsweg, wie etwa einen optischen Weg mit einer OC-192(10 Gbps)-Übertragungsgeschwindigkeit, verbunden werden können. - Die dargestellte Netzwerkvorrichtung
2 kann Warteschlangen steuern und auf Speicher zugreifen, wie unten im Detail beschrieben ist. Die Vorrichtung2 umfaßt eine Gruppe von Leitungskarten LC1–LC4 („Blades"), die durch eine Switch-Fabric SF (z. B. eine Kreuzschienen- oder Geteilter-Speicher-Switch-Fabric) untereinander verbunden sind. Die Switch-Fabric SF kann beispielsweise CSIX (Common Switch Interface) oder anderen Schalttechnologien, wie etwa HyperTransport, Infiniband, PCI (Peripheral Component Interconnect), Packet-Over-SONET, RapidIO und/oder UTOPIA (Universal Test and Operation PHY Interface for ATM (Asynchronous Transfer Mode)) entsprechen. - Einzelne Leitungskarten (z. B. LC1) können eine oder mehrere Vorrichtungen PD1, PD2 der physischen Schicht (PHY) umfassen (z. B. optische, verdrahtete und drahtlose PHYs), welche die Übertragung über Netzwerkverbindungen abwickeln. Die PDs der PHYs übersetzen zwischen den physischen Signalen, die von den verschiedenen Netzwerkträgern übertragen werden, und den Bits (d. h. den „0"-en und „1"-en), die von digitalen Systemen verwendet werden. Die Leitungskarten LC können auch Framer-Vorrichtungen (z. B. Ethernet, Synchronous Optic Network (SONET), High-Level Data Link (HDLC) Framer oder andere „Level 2"-Vorrichtungen) FD1, FD2 umfassen, die Operationen auf Rahmen, wie etwa Fehlerdetektion und/oder -korrektur durchführen können. Die gezeigten Leitungskarten LC können auch einen oder mehrere Netzwerkprozessoren NP1, NP2 umfassen, die Paketverarbeitungs-Vorgänge für Pakete durchführen, die über die PHY(s) empfangen wurden, und die Pakete über die Switch-Fabric SF zu einer Leitungskarte LC zu leiten, welche eine Ausgabeschnittstelle bereitstellt, um das Paket weiterzuleiten. Potentiell kann/können der oder die Netzwerkprozessor/Netzwerkprozessoren NP Aufgaben vom „Lager 2" anstatt der Framer-Vorrichtung FD ausführen.
- Die
2A zeigt ein beispielhaftes System10 , welches einen Prozessor12 aufweist, der als ein Netzwerkprozessor vorgesehen sein kann. Der Prozessor12 ist mit einem oder mehreren I/O-Vorrichtungen gekoppelt, beispielsweise Netzwerkvorrichtungen14 und16 , sowie mit einem Speichersystem18 . Der Prozessor12 umfaßt eine Mehrzahl von Prozessoren („Processing Engines" oder „PEs")20 , jeder mit mehreren hardwaregesteuerten Ausführungs-Threads22 . In dem gezeigten Beispiel gibt es „n" Verarbeitungselemente20 , und jedes der Verarbeitungselemente20 ist in der Lage, eine Mehrzahl von Threads22 zu verarbeiten, wie unten ausführlicher beschrieben wird. In der beschriebenen Ausführung beträgt die maximale Zahl „N" von Threads, die von der Hardware unterstützt werden, acht. Jedes der Verarbeitungselemente20 ist mit den angrenzenden Verarbeitungselementen verbunden und kann mit diesen kommunizieren. - In einer Ausführung umfaßt der Prozessor
12 auch einen Mehrzweckprozessor24 , der dazu beiträgt, Mikrocode-Steuerung für die Verarbeitungselemente20 und andere Ressourcen des Prozessors12 zu laden, und andere rechnerartige Funktionen auszuführen, wie etwa die Handhabung von Protokollen und Ausnahmen. Bei Netzwerk-Verarbeitungsanwendungen kann der Prozessor24 auch Unterstützung für Netzwerk-Verarbeitungsaufgaben höherer Schichten bereitstellen, die nicht von den Verarbeitungselementen20 gehandhabt werden können. - Jedes der Verarbeitungselemente
20 arbeitet mit geteilten Ressourcen, die beispielsweise das Speichersystem18 , eine externe Busschnittstelle26 , eine I/O-Schnittstelle28 und Steuerungs- und Statusregister (CSRs)32 umfassen. Die I/O-Schnittstelle28 ist dafür verantwortlich, den Prozessor12 zu steuern und ihn an die I/O-Vorrichtungen14 ,16 anzuschließen. Das Speichersystem18 umfaßt einen dynamischen Arbeitsspeicher (DRAM)34 , auf den mittels einer DRAM-Steuerung36 zugegriffen wird, und einen statischen Arbeitsspeicher (SRAM)38 , auf den mittels einer SRAM-Steuerung40 zugegriffen wird. Obwohl nicht gezeigt, würde der Prozessor12 auch einen Festspeicher umfassen, um Boot-Vorgänge zu unterstützen. Die DRAM-Steuerung34 und SRAM-Steuerung36 werden üblicherweise zur Verarbeitung von großen Datenvolumen verwendet, z. B. zur Verarbeitung von Nutzlasten von Netzwerkpaketen bei Netzwerkanwendungen. Bei einer Netzwerkimplementierung werden die SRAM-Steuerung38 und die SRAM-Steuerung40 für Aufgaben mit niedriger Latenzzeit und schnellem Zugriff verwendet, z. B. für den Zugriff auf Nachschlagetabellen und so weiter. - Die Vorrichtungen
14 ,16 können alle Netzwerkvorrichtungen sein, die zur Übertragung und/oder dem Empfang von Netzwerkverkehrsdaten fähig sind, wie etwa Rahmenverarbeitung/MAC(Media Access Control)-Vorrichtung, z. B. zur Verbindung mit 10/100BaseT-Ethernet-, Gigabit-Ethernet-, ATM- oder anderen Arten von Netzwerken, oder Vorrichtungen zur Verbindung mit einer Switch-Fabric. Zum Beispiel kann in einer Anordnung die Netzwerkvorrichtung14 eine Ethernet-MAC-Vorrichtung sein (die mit einem Ethernet-Netzwerk verbunden ist, das nicht gezeigt ist), welche Daten zu dem Prozessor12 überträgt, und die Vorrichtung16 kann eine Switch-Fabric-Vorrichtung sein, welche verarbeitete Daten vom Prozessor12 zur Übertragung zu einer Switch-Fabric empfängt. - Zusätzlich kann jede der Netzwerkvorrichtungen
14 ,16 eine Mehrzahl von Ports umfassen, die von dem Prozessor12 bedient werden. Die I/O-Schnittstelle28 unterstützt demnach eine oder mehrere Arten von Schnittstellen, wie etwa eine Schnittstelle für Paket- und Zellen-Transfer zwischen einer PHY-Vorrichtung und einer Schicht eines höheren Protokolls (z. B. der Sicherungsschicht), oder eine Schnittstelle zwischen einer Verkehrssteuerung und einer Switch-Fabric für Asynchronous Transfer Mode (ATM), Internet-Protocol (IP), Ethernet und ähnliche Datenübertragungsanwendungen. Die I/O-Schnittstelle28 kann getrennte Empfangs- und Übertragungsblöcke umfassen, und diese können jeder für eine bestimmte Schnittstelle, die von dem Prozessor12 unterstützt wird, getrennt konfigurierbar sein. - Andere Vorrichtungen, wie etwa ein Hostrechner und/oder Bus-Peripheriegeräte (nicht gezeigt), die mit einer externen Bus-Steuerung, welche von der externen Busschnittstelle
26 gesteuert wird, gekoppelt werden können, können auch von dem Prozessor12 bedient werden. - Im allgemeinen kann der Prozessor
12 , als ein Netzwerkprozessor, an verschiedene Arten von Übertragungsvorrichtungen oder -schnittstellen, welche Daten empfangen/senden, ankoppeln. Der Prozessor12 , welcher als ein Netzwerkprozessor arbeitet, kann Informationseinheiten von einer Netzwerkvorrichtung, wie der Netzwerkvorrichtung14 , empfangen und diese Einheiten in einer parallelen Weise verarbeiten. Die Informationseinheit kann ein ganzes Netzwerkpaket (z. B. ein Ethernet-Paket) oder einen Teil eines solchen Pakets, z. B. eine Zelle, wie etwa eine Common-Switch-Interface(oder „CSIX")-Zelle oder eine ATM-Zelle oder ein ATM-Paketsegment, umfassen. Andere Einheiten werden auch in Betracht gezogen. - Jede der funktionalen Einheiten des Prozessors
12 ist an eine internen Busstruktur oder Zwischenverbindung42 gekoppelt. Speicherbusse44a ,44b koppeln die Speichersteuerungen36 bzw.37 mit den Speichereinheiten DRAM34 bzw. SRAM38 auf dem Speichersystem18 . Die I/O-Schnittstelle28 ist an die Vorrichtungen14 und16 über getrennte I/O-Buslinien46a bzw.46b gekoppelt. - Mit Bezug auf
3 wird ein beispielhaftes der Verarbeitungselemente20 gezeigt. Das Verarbeitungselement (PE)20 umfaßt eine Steuereinheit50 , die einen Steuerspeicher51 , Steuerlogik (oder Mikrosteuerungen)52 und eine Kontext-Zuweisungs-/Ereignislogik53 umfaßt. Der Steuerspeicher51 wird verwendet, um Mikrocode zu speichern. Der Mikrocode kann von dem Prozessor24 geladen werden. Die Funktionalität der PE-Threads22 wird daher durch den Mikrocode bestimmt, welcher über den Hauptprozessor24 für die Anwendung eines bestimmten Nutzers in den Steuerspeicher51 des Verarbeitungselements geladen wird. - Die Mikrosteuerung
52 umfaßt einen Befehlsdecoder und eine Programmzähl(PC)-Einheit für jeden der unterstützen Threads. Die Kontext-Zuweisungs-/Ereignislogik53 kann Nachrichten von jeder der geteilten Ressourcen, z. B. SRAM38 , DRAM34 oder dem Hauptprozessor24 und so weiter, empfangen. Diese Nachrichten stellen Information darüber bereit, ob eine angeforderte Funktion beendet wurde. - Die PEs
20 umfassen auch einen Ausführungs-Datenweg54 und eine Mehrzweckregister(GPR)-Dateieinheit56 , welche mit der Steuereinheit50 gekoppelt ist. Der Datenweg54 kann eine Anzahl von unterschiedlichen Datenwegelementen umfassen, z. B. eine ALU (arithmetische Logikeinheit), einen Multiplikator und einen Assoziativspeicher (CAM). - Die Register der GPR-Dateieinheit
56 (GPRs) werden in zwei getrennten Bänken, Bank A56a und Bank B56b bereitgestellt. Die GPRs werden ausschließlich unter Programmsteuerung gelesen und geschrieben. Die GPRs versorgen, wenn sie als eine Quelle in einer Anweisung verwendet werden, den Datenweg54 mit Operanden. Wenn sie als ein Zielort in einer Anweisung verwendet werden, werden sie mit dem Ergebnis des Datenwegs54 beschrieben. Die Anweisung setzt die Registernummer der spezifischen GPRs fest, die als eine Quelle oder ein Zielort ausgewählt werden. Opcode-Bits in der Anweisung, die von der Steuereinheit50 bereitgestellt werden, wählen aus, welches Datenweg-Element die Operation, die durch die Anweisung definiert ist, ausführen soll. - Das PE
20 umfaßt weiter eine Schreib-Übertragungsregisterdatei62 (Übertragung nach außen) und eine Lese-Übertragungsregisterdatei64 (Übertragung nach innen). Die Schreib-Übertragungsregister der Schreib-Übertragungsregisterdatei62 speichern Daten, die in eine Ressource, die zu dem Verarbeitungselement extern ist, geschrieben werden sollen. In der dargestellten Ausführung wird die Schreib-Übertragungsregisterdatei in getrennte Registerdateien für SRAM (SRAM-Schreib-Übertragungsregister62a ) und DRAM (DRAM-Schreib-Übertragungsregister62b ) partitioniert. Die Lese-Übertragungsregisterdatei64 wird verwendet, um Rückgabedaten von einer Ressource, die zu dem Verarbeitungselement20 extern ist, zu speichern. Wie die Schreib-Übertragungsregisterdatei ist die Lese-Übertragungsregisterdatei in getrennte Registerdateien für SRAM und DRAM, die Registerdateien64a bzw.64b , aufgeteilt. Die Übertragungsregisterdateien62 ,64 sind mit dem Datenweg54 sowie mit dem Steuerspeicher50 verbunden. Man beachte, daß die Architektur des Prozessors12 „Reflektor"-Anweisungen unterstützt, die es erlauben, daß jedes PE auf die Übertragungsregister jedes der anderen PEs zugreift. - Zudem ist in dem PE
20 ein lokaler Speicher66 vorgesehen. Der lokale Speicher66 wird von Registern68a („LM_Addr_1"),68b („LM_Addr_0") adressiert, die dem Datenweg54 Operanden zuführen, und empfängt Ergebnisse von dem Datenweg54 als ein Zielort. - Das PE
20 umfaßt auch lokale Steuer- und Zustandsregister (CSRs)70 , die mit den Übertragungsregistern gekoppelt sind, um lokale Zwischen-Thread- und globale Ereignis-Signalisierungsinformation sowie andere Steuer- und Zustandsinformation zu speichern. Andere Speicher- und Funktionseinheiten, beispielsweise ein eine Zyklische-Redundanzprüfungs(CRC)-Einheit (nicht gezeigt), können in dem Verarbeitungselement ebenfalls vorgesehen sein. - Andere Registerarten des PE
20 umfassen Nächster-Nachbar(NN)-Register74 , die mit dem Steuerspeicher50 und dem Ausführungsdatenweg54 gekoppelt sind, um Information zu speichern die von einem vorhergehenden Nachbar-PE („stromaufwärts gelegenes PE") in einer Pipeline-Verarbeitung über ein Nächster-Nachbar-Eingangssignal76a oder von derselben PE, wenn sie durch Informationen in den lokalen CSRs70 gesteuert wird, empfangen werden. Ein Nächster-Nachbar-Ausgangssignal76b an eine Nächster-Nachbar-PE („stromabwärts gelegene PE") in einer Verarbeitungspipeline kann unter der Steuerung der lokalen CSRs70 bereitgestellt werden. So kann ein Thread auf irgendeinem PE einem Thread auf dem nächsten PE über die Nächster-Nachbar-Signalisierung benachrichtigen. - Während erläuternde Hardware hier im Detail gezeigt und beschrieben wird, versteht es sich, daß die beispielhaften Ausführungen, die hier als ein Assoziativspeicher mit einer zu verarbeitenden Warteschleife als verketteten Liste zum Ordnen von Speicherbefehlen gezeigt und beschrieben sind, auf eine Vielzahl von Hardware, Prozessoren, Architekturen, Vorrichtungen, Entwicklungssysteme/werkzeuge und dergleichen anwendbar sind.
- Die
4 zeigt eine beispielhafte Speichersteuerung100 , die eine Haupt-Befehls-FIFO102 umfaßt, welche Befehle an ein Speicherbefehls-Speichermodul104 bereitstellt, um Befehle für eine Mehrzahl von Speicherbänken106a –h zu speichern. Für jede der Speicherbänke106a –h ist eine Steuereinrichtung108a –h, die einen Kopfzeiger und einen Schwanzzeiger umfassen kann, mit dem Befehlsspeichermodul104 gekoppelt. Für jede der Speicherbänke kann ein optionales Vorgriffmodul110a –h zwischen den Datenausgabeport des Befehlsspeichermoduls104 und die Pin-Schnittstellenlogik112 gekoppelt werden. Wie dem Fachmann bekannt ist, erleichtert das Vorgriffmodul110 Schreibbefehls-Gruppierung und Lesebefehls-Gruppierung, was zu einer optimalen Speicher-Betriebseffizienz führt. Das bedeutet, daß ein Übergang von einem Lese- zu einem Schreibbefehl und/oder umgekehrt Speicherzyklen verschwenden kann. - In einer beispielhaften Ausführung umfaßt jeder Ort in dem Befehlsspeichermodul
104 ein Befehlsspeicherfeld104a und ein Next-Feld104b , welches auf den nächsten Eintrag in einer verketteten Liste von Befehlen für eine gegebene Speicherbank zeigt. Das Befehlsspeichermodul104 umfaßt weiter ein Gültigkeitsflag104c , das einen Teil eines „Gültige-Bit-Arrays" bilden kann. Wenn der Eintrag einen gültigen Befehl aufweist oder der Kopfzeiger auf einen bestimmten Eintrag zeigt, wird sein zugehöriges Gültigkeitsflag104c gesetzt. Nachdem der Eintrag verwendet wurde, wird das Gültigkeitsflag104c zurückgesetzt und der Eintrag tritt in den Pool von verfügbaren Einträgen ein. - Die Steuereinrichtung
108 umfaßt einen Kopfzeiger109 und einen Schwanzzeiger111 . Anfang zeigen der Kopf- und der Schwanzzeiger109 ,111 auf denselben Ort, welcher der zugehörigen Speicherbank bei der Initialisierung zugewiesen ist. Wenn der Kopf- und der Schwanzzeiger auf denselben Ort zeigen, kann angenommen werden, daß das Befehlsspeichermodul104 keine Befehle für die zugehörige Speicherbank aufweist. Im allgemeinen steuert jede Steuereinrichtung108 zusammen mit dem Befehlsspeichermodul104 eine verkettete Liste von Befehlen für jede der Speicherbänke. - Wenn ein neuer Befehl für eine gegebene Speicherbank empfangen wird, wird ein freier Eintrag aus den Gültigkeitsflags
104c in dem Befehlsspeichermodul ermittelt. Der neue Befehl wird an dem Ort des Kopfzeigers geschrieben, und ein weiterer freier Eintragsort wird identifiziert und in das Next-Feld104b gesetzt. Der Schwanzzeiger111 wird aktualisiert, um auf den nächsten freien Eintragsort zu zeigen. Eine verkettete Liste von Befehlen kann mittels dieses Verfahrens hergestellt werden. - Wenn die Pin-Schnittstellenlogik
112 einen neuen Befehl von dem Befehlsspeichermodul104 erhält, wird der Schwanzzeiger111 verwendet, um den nächsten Befehl von dem Speicherpool zu lesen. Der Schwanzzeiger111 wird dann mit der Eintragszahl aktualisiert, die an dem Next-Zeigerort geschrieben ist, und das Gültigkeitsflag104c wird entsprechend dem verwendeten Eintrag zurückgesetzt. - Die
5A –C zeigen, zusammen mit der4 , eine beispielhafte Verarbeitungssequenz des Speicherns und der Verwendung von Befehlen in dem Befehlsspeichermodul (4 ), basierend auf dem Kopfzeiger109 , dem Schwanzzeiger111 und dem Next-Feld104b des Befehlsspeichermoduls. Es versteht sich, daß der Kopf- und der Schwanzzeiger109 ,111 eine verkettete Liste von Befehlen für eine bestimmte Speicherbank steuern, und daß ein Kopf- und ein Schwanzzeiger-Paar für jede der Speicherbänke existiert. - In der
5A weist das Modul104 keine Befehle für die Bank auf, die mit dem Kopf- und dem Schwanzzeiger109 ,111 verbunden ist, so daß diese auf denselben Ort, gezeigt als Ort5 , des Befehlsspeichermoduls104 zeigen. Man beachte, daß das Gültigkeitsflag104c15 für den Ort5 (15 ) gesetzt ist, da der Kopfzeiger109 auf diesen Ort zeigt. In der5B wird ein erster Befehl C1 von dem Haupt-Befehls-FIFO102 (4 ) in dem Befehlsfeld104a15 von Ort5 gespeichert. Als Teil der Befehlsspeicheroperation wird ein nächster Eintragsort, basierend auf den Gültigkeitsflags104c , identifiziert. In der dargestellten Ausführung wird der Ort7 als der nächste Eintragsort identifiziert, und diese Information wird in das Next-Feld104b15 von Ort5 geschrieben. Der Schwanzzeiger111 wird aktualisiert, um auf den Ort7 des Befehlsspeichermoduls zu zeigen, und das Gültigkeitsflag104c17 des Ortes7 wird gesetzt. - In
5C wird ein zweiter Befehl C2 von dem Haupt-Befehls-FIFO102 empfangen und in dem Ort7 gespeichert. Der nächste Eintragsort wird als Ort1 identifiziert, und diese Information wird in das Next-Feld von Ort7 geschrieben. Der Schwanzzeiger111 wird aktualisiert, um auf den Ort1 zu zeigen, und das Gültigkeitsflag dieses Ortes wird gesetzt. - In
5D wird der erste Befehl C1 von dem Befehlsspeichermodul104 an die Vorgriffsstruktur110 und die Pin-Schnittstelle112 gesendet. Der Ort5 , welcher den ersten Befehl C1 gespeichert hatte, wird leer, und das Gültigkeitsflag104c wird zurückgesetzt. Der Kopfzeiger109 wird aktualisiert, um auf den Ort7 zu zeigen, der den zweiten Befehl C2 aufweist, und so weiter für nachfolgend empfangene und verwendete Befehle für eine bestimmte Speicherbank. - Das es ein Befehlsspeichermodul
104 für eine Mehrzahl von Speicherbänken gibt, anstatt beispielsweise von 8 oder 16 Speichermodulen, wie sie in herkömmlichen Implementierungen verwendet werden, werden bedeutende Verbesserungen der Speichermodulnutzung erreicht. Zusätzlich können Speicherbank-FIFOs (verkettete Listen) wachsen oder schrumpfen, um die Anzahl von Gegendruck-Ereignissen zu verringern oder eliminieren. - Es versteht sich, daß eine große Vielfalt von Implementierungen von Speicherbänken möglich sind. Die
6 zeigt eine Ausführung einer Acht-Speicherbank-Konfiguration, die mit der Pin-Schnittstellenlogik112 von4 gekoppelt werden kann. Die Pin-Schnittstellenlogik112 maximiert den Zugang zu den Speicherbänken, indem sie verfolgt, welche Speicherbänke verfügbar sind, da ein Zugang zu einer gegebenen Speicherbank diese Bank für den nächsten Zyklus oder die nächsten mehreren Zyklen nicht verfügbar machen kann. Zugang zu den verschiedenen Speicherbänken sollte in der Zeit verteilt sein, um die Speicherzugangseffizienz zu maximieren. Zusätzlich versteht es sich, daß, während Kopf- und Schwanzzeiger in beispielhaften Ausführungen gezeigt werden, andere Zeigerstrukturen verwendet werden können, um die Anforderungen einer bestimmten Implementierung zu erfüllen. - Andere Ausführungen liegen innerhalb des Umfangs der folgenden Ansprüche.
- ZUSAMMENFASSUNG
- Ein Speicher-Steuersystem umfaßt ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern. Das System umfaßt eine Mehrzahl von Steuereinrichtungen, welche jeweils einen ersten und einen zweiten Zeiger umfassen, um, in Kombination mit einem Next-Feld in jedem Modulort, eine verkettete Liste von Befehlen für eine gegebene einer Mehrzahl von Speicherbänken bereitzustellen.
Claims (21)
- Speichersteuerungssystem, welches folgendes umfaßt: ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern, wobei das Speicherbefehl-Speichersystem eine Mehrzahl von Orten umfaßt, die jeweils ein Befehlsspeicherfeld und ein Nächster-Ort-Feld aufweisen; und eine Mehrzahl von Steuereinrichtungen, welche mit dem Speicherbefehl-Speichermodul gekoppelt sind, wobei jede der Mehrzahl von Steuereinrichtungen zu einem entsprechenden einer Mehrzahl von Speicherbänken gehört und jede der Steuereinrichtungen einen ersten Zeiger und einen zweiten Zeiger aufweist, wobei der erste Zeiger, der zweite Zeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für eine gegebene der Mehrzahl von Speicherbänken bereitstellen.
- System nach Anspruch 1, wobei der erste Zeiger auf einen nächsten Befehl zeigt, welcher verwendet werden soll, der zweite Zeiger auf einen auf einen nächsten Ort zeigt, in welchem ein Befehl gespeichert werden soll, und das Nächster-Ort-Feld einen Zeiger auf den nächsten Ort aufweist, auf den vom zweiten Zeiger gezeigt wird.
- System nach Anspruch 1, welches weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
- System nach Anspruch 1, wobei jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
- System nach Anspruch 4, bei dem das Gültigkeitsflag für einen ersten Ort, entsprechenden Ort, gesetzt wird, wenn dort ein Befehl gespeichert wird und/oder wenn der zweite Zeiger auf den Ort zeigt.
- System nach Anspruch 4, bei dem das Gültigkeitsflag verwendet wird, um einen nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul zu bestimmen.
- Netzwerkprozessoreinheit, welche folgendes umfaßt: ein Speichersteuerungssystem, umfassend ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern, wobei das Speicherbefehl-Speichermodul eine Mehrzahl von Orten umfaßt, welche jeweils ein Befehlsspeicherfeld und ein Nächster-Ort-Feld aufweisen; und eine Mehrzahl von Steuereinrichtungen, welche mit dem Speicherbefehl-Speichermodul gekoppelt sind, wobei jede der Mehrzahl von Steuereinrichtungen zu einem entsprechenden einer Mehrzahl von Speicherbänken gehört und jede der Steuereinrichtungen einen ersten Zeiger und einen zweiten Zeiger aufweist, wobei der erste Zeiger, der zweite Zeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für eine gegebene der Mehrzahl von Speicherbänken bereitstellen.
- Einheit nach Anspruch 7, wobei der erste Zeiger auf einen nächsten Befehl zeigt, welcher verwendet werden soll, der zweite Zeiger auf einen auf einen nächsten Ort zeigt, in welchem ein Befehl gespeichert werden soll, und das Nächster-Ort-Feld einen Zeiger auf den nächsten Ort aufweist, auf den vom zweiten Zeiger gezeigt wird.
- Einheit nach Anspruch 7, welche weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
- Einheit nach Anspruch 7, bei der jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
- Einheit nach Anspruch 7, bei der die Netzwerkprozessoreinheit mehrere Kerne aufweist, welche auf einem einzigen Chip ausgebildet sind.
- Netzwerk-Weiterleitungsvorrichtung, welche folgendes umfaßt: mindestens eine Leitungskarte, um Daten an Ports einer Switch-Fabric weiterzuleiten; wobei die mindestens eine Leitungskarte, welche eine Netzwerkprozessoreinheit mit Multithreading-Verarbeitungselementen umfaßt, welche konfiguriert ist, um Mikrocode auszuführen, wobei die Netzwerkprozessoreinheit folgendes umfaßt: ein Speichersteuerungssystem, umfassend ein Speicherbefehl-Speichermodul, um Befehle für eine Mehrzahl von Speicherbänken zu speichern, wobei das Speicherbefehl-Speichermodul eine Mehrzahl von Orten umfaßt, welche jeweils ein Befehlsspeicherfeld und ein Nächster-Ort-Feld aufweisen; und eine Mehrzahl von Steuereinrichtungen, welche mit dem Speicherbefehl-Speichermodul gekoppelt sind, wobei jede der Mehrzahl von Steuereinrichtungen zu einem entsprechenden einer Mehrzahl von Speicherbänken gehört und jede der Steuereinrichtungen einen ersten Zeiger und einen zweiten Zeiger aufweist, wobei der erste Zeiger, der zweite Zeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für eine gegebene der Mehrzahl von Speicherbänken bereitstellen.
- Vorrichtung nach Anspruch 12, wobei der erste Zeiger auf einen nächsten Befehl zeigt, welcher verwendet werden soll, der zweite Zeiger auf einen auf einen nächsten Ort zeigt, in welchem ein Befehl gespeichert werden soll, und das Nächster-Ort-Feld einen Zeiger auf den nächsten Ort aufweist, auf den vom zweiten Zeiger gezeigt wird.
- Vorrichtung nach Anspruch 12, welche weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
- Vorrichtung nach Anspruch 12, bei der jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
- Vorrichtung nach Anspruch 15, bei der das Gültigkeitsflag verwendet wird, um einen nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul zu bestimmen.
- Verfahren zum Speichern von Befehlen für eine Mehrzahl von Speicherbänken in einem Befehl-Speichermoduls, welches folgendes umfaßt: Empfangen eines ersten Befehls für eine erste der Mehrzahl von Speicherbänken; Speichern des ersten Befehls in einem Befehlsfeld von einem ersten Ort in dem Speicherbefehl-Speichermodul; Aktualisieren eines Schwanzzeigers eines Schwanzzeiger/Kopfzeiger-Paares auf einen nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul, wobei das Schwanzzeiger/Kopfzeiger-Paar zu dem ersten einer Mehrzahl von Speicherbänken gehört; und Speichern eines Zeigers auf den nächsten verfügbaren Ort in einem Nächster-Ort-Feld von dem ersten Ort des Speicherbefehl-Speichermoduls, wobei der Kopfzeiger, der Schwanzzeiger und das Nächster-Ort-Feld eine verkettete Liste von Befehlen für die erste der Mehrzahl von Speicherbänken bereitstellen.
- Verfahren nach Anspruch 17, welches weiter das Setzen eines Gültigkeitsflag für den nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul umfaßt.
- Verfahren nach Anspruch 18, bei dem ein Gültigkeitsflag für den ersten Ort gesetzt wird, und ein anderer verfügbarer Ort ermittelt wird, indem Gültigkeitsflags für Orte in dem Speicherbefehl-Speichermodul untersucht werden.
- Verfahren nach Anspruch 17, welches weiter das Übertragen des ersten Befehls von dem Speicherbefehl-Speichermodul und das Aktualisieren des Kopfzeigers umfaßt.
- Verfahren nach Anspruch 17, welches weiter das Aktualisieren weiterer Schwanzzeiger/Kopfzeiger-Paare umfaßt, wenn weitere Befehle für andere der Mehrzahl von Speicherbänken empfangen oder gesendet werden.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/018,023 US20060136681A1 (en) | 2004-12-21 | 2004-12-21 | Method and apparatus to support multiple memory banks with a memory block |
US11/018,023 | 2004-12-21 | ||
PCT/US2005/046297 WO2006069126A2 (en) | 2004-12-21 | 2005-12-20 | Method and apparatus to support multiple memory banks with a memory block |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112005003204T5 true DE112005003204T5 (de) | 2007-11-15 |
Family
ID=36388192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005003204T Ceased DE112005003204T5 (de) | 2004-12-21 | 2005-12-20 | Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock |
Country Status (4)
Country | Link |
---|---|
US (1) | US20060136681A1 (de) |
CN (1) | CN1809025A (de) |
DE (1) | DE112005003204T5 (de) |
WO (1) | WO2006069126A2 (de) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7185029B1 (en) * | 2003-06-27 | 2007-02-27 | Unisys Corporation | Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file |
US7467256B2 (en) * | 2004-12-28 | 2008-12-16 | Intel Corporation | Processor having content addressable memory for block-based queue structures |
US8762620B2 (en) | 2007-12-27 | 2014-06-24 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
EP2549384B1 (de) * | 2010-03-18 | 2018-01-03 | Fujitsu Limited | Multikernprozessorsystem, steuerungsverfahren für eine arbitrierungsschaltung und steuerprogramm für eine arbitrierungsschaltung |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9824772B2 (en) | 2012-12-26 | 2017-11-21 | Nvidia Corporation | Hardware chip select training for memory using read commands |
US9607714B2 (en) | 2012-12-26 | 2017-03-28 | Nvidia Corporation | Hardware command training for memory using write leveling mechanism |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9378169B2 (en) * | 2012-12-31 | 2016-06-28 | Nvidia Corporation | Method and system for changing bus direction in memory systems |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9218291B2 (en) | 2013-07-25 | 2015-12-22 | International Business Machines Corporation | Implementing selective cache injection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9471508B1 (en) * | 2015-04-09 | 2016-10-18 | International Business Machines Corporation | Maintaining command order of address translation cache misses and subsequent hits |
KR20210092467A (ko) * | 2020-01-16 | 2021-07-26 | 삼성전자주식회사 | 로컬 프로세서와 글로벌 프로세서를 포함하는 메모리 다이, 메모리 장치, 및 전자 장치 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526506A (en) * | 1970-12-28 | 1996-06-11 | Hyatt; Gilbert P. | Computer system having an improved memory architecture |
US5574876A (en) * | 1992-09-18 | 1996-11-12 | Hitachi, Ltd. | Processor system using synchronous dynamic memory |
US5701434A (en) * | 1995-03-16 | 1997-12-23 | Hitachi, Ltd. | Interleave memory controller with a common access queue |
US6393534B1 (en) * | 1999-09-27 | 2002-05-21 | Ati International Srl | Scheduler for avoiding bank conflicts in issuing concurrent requests to main memory |
US6611906B1 (en) * | 2000-04-30 | 2003-08-26 | Hewlett-Packard Development Company, L.P. | Self-organizing hardware processing entities that cooperate to execute requests |
US6772300B1 (en) * | 2000-08-30 | 2004-08-03 | Intel Corporation | Method and apparatus for managing out of order memory transactions |
US7257129B2 (en) * | 2000-11-22 | 2007-08-14 | Silicon Image | Memory architecture with multiple serial communications ports |
US6532185B2 (en) * | 2001-02-23 | 2003-03-11 | International Business Machines Corporation | Distribution of bank accesses in a multiple bank DRAM used as a data buffer |
US6961804B2 (en) * | 2001-07-20 | 2005-11-01 | International Business Machines Corporation | Flexible techniques for associating cache memories with processors and main memory |
US6785793B2 (en) * | 2001-09-27 | 2004-08-31 | Intel Corporation | Method and apparatus for memory access scheduling to reduce memory access latency |
US6925643B2 (en) * | 2002-10-11 | 2005-08-02 | Sandbridge Technologies, Inc. | Method and apparatus for thread-based memory access in a multithreaded processor |
US6996686B2 (en) * | 2002-12-23 | 2006-02-07 | Sun Microsystems, Inc. | Memory subsystem including memory modules having multiple banks |
-
2004
- 2004-12-21 US US11/018,023 patent/US20060136681A1/en not_active Abandoned
-
2005
- 2005-12-20 WO PCT/US2005/046297 patent/WO2006069126A2/en active Application Filing
- 2005-12-20 DE DE112005003204T patent/DE112005003204T5/de not_active Ceased
- 2005-12-21 CN CN200510121540.6A patent/CN1809025A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20060136681A1 (en) | 2006-06-22 |
WO2006069126A2 (en) | 2006-06-29 |
CN1809025A (zh) | 2006-07-26 |
WO2006069126A3 (en) | 2006-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112005003204T5 (de) | Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock | |
DE69133257T2 (de) | Vorrichtung und verfahren zur schnellen paketvermittlung | |
CN108809854B (zh) | 一种用于大流量网络处理的可重构芯片架构 | |
DE60030767T2 (de) | Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor | |
DE112013003733B4 (de) | Adaptive Paketumleitung, um angemessene, kostengünstige und/oder Energie-effiziente Dienstgüte im Netzwerk auf Chipvorrichtungen zu erreichen | |
DE60221030T2 (de) | Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern | |
DE69724355T2 (de) | Erweiterte symmetrische Multiprozessorarchitektur | |
DE112013007724B4 (de) | System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten | |
DE102019104394A1 (de) | Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE112013005044B4 (de) | Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast | |
DE60011797T2 (de) | Ausführung von mehreren fäden in einem parallelprozessor | |
DE60037065T2 (de) | Übertragungsteuerung mit Naben- und Torachitektur | |
DE60202926T2 (de) | Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen | |
DE60217221T2 (de) | Ein-Chip System zur Paketverarbeitung | |
DE102018004327A1 (de) | Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher | |
DE60203358T2 (de) | Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen | |
DE112005002364T5 (de) | Heterogene Prozessoren mit gemeinsamem Cache | |
DE102020133262A1 (de) | Arbeitslastscheduler für Speicherzuweisung | |
DE102018006797A1 (de) | Kohärente Speichereinrichtungen über PCIe | |
DE102014003790A1 (de) | Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung | |
DE102018127751A1 (de) | Einheitlicher Adressraum für mehrere Verbindungen | |
US20060143373A1 (en) | Processor having content addressable memory for block-based queue structures | |
DE112017003494T5 (de) | Mehrfach-core-software-forwarding | |
DE602004009574T2 (de) | System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |