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 PDF

Info

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
Application number
DE112005003204T
Other languages
English (en)
Inventor
Sanjeev Shrewsbury Jain
Gilbert Framingham WOLRICH
Mark Uxbridge Rosenbluth
Debra Sudbury BERNSTEIN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112005003204T5 publication Critical patent/DE112005003204T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details 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.

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 Speichersteuerung 1 aus dem Stand der Technik, die eine Haupt-Befehls-FIFO 2 umfaßt, um Befehle zu speichern, und ein Bank-Steuermodul 4 umfaßt, um die Befehle, abhängig davon, welche der Speicherbänke 5a–h den Befehl bearbeiten wird, zu sortieren. Eine Pin-Schnittstelle 7 liegt zwischen den Speicherbänken 5a–h und den FIFOs 6a–h. Eine Kopf/Schwanz-Struktur 8a–h für jede der FIFOs kann den Dateneingang und -ausgang von jeder der FIFOs 6a–h steuern. Zusätzlich kann eine Vorgriffstruktur 9a–h für jede der FIFOs 6a–h die Datenübertragung zu der Pin-Schnittstelle 7 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;
  • 5A5D 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 Netzwerkvorrichtung 2, 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 Datenquelle 6 eingehende Pakete verarbeiten und die verarbeiteten Daten an eine Zielvorrichtung 8 übertragen. Die Netzwerkvorrichtung 2 kann beispielsweise einen Router, einen Switch und ähnliches umfassen. Die Datenquelle 6 und die Zielvorrichtung 8 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 Vorrichtung 2 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 System 10, welches einen Prozessor 12 aufweist, der als ein Netzwerkprozessor vorgesehen sein kann. Der Prozessor 12 ist mit einem oder mehreren I/O-Vorrichtungen gekoppelt, beispielsweise Netzwerkvorrichtungen 14 und 16, sowie mit einem Speichersystem 18. Der Prozessor 12 umfaßt eine Mehrzahl von Prozessoren („Processing Engines" oder „PEs") 20, jeder mit mehreren hardwaregesteuerten Ausführungs-Threads 22. In dem gezeigten Beispiel gibt es „n" Verarbeitungselemente 20, und jedes der Verarbeitungselemente 20 ist in der Lage, eine Mehrzahl von Threads 22 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 Verarbeitungselemente 20 ist mit den angrenzenden Verarbeitungselementen verbunden und kann mit diesen kommunizieren.
  • In einer Ausführung umfaßt der Prozessor 12 auch einen Mehrzweckprozessor 24, der dazu beiträgt, Mikrocode-Steuerung für die Verarbeitungselemente 20 und andere Ressourcen des Prozessors 12 zu laden, und andere rechnerartige Funktionen auszuführen, wie etwa die Handhabung von Protokollen und Ausnahmen. Bei Netzwerk-Verarbeitungsanwendungen kann der Prozessor 24 auch Unterstützung für Netzwerk-Verarbeitungsaufgaben höherer Schichten bereitstellen, die nicht von den Verarbeitungselementen 20 gehandhabt werden können.
  • Jedes der Verarbeitungselemente 20 arbeitet mit geteilten Ressourcen, die beispielsweise das Speichersystem 18, eine externe Busschnittstelle 26, eine I/O-Schnittstelle 28 und Steuerungs- und Statusregister (CSRs) 32 umfassen. Die I/O-Schnittstelle 28 ist dafür verantwortlich, den Prozessor 12 zu steuern und ihn an die I/O-Vorrichtungen 14, 16 anzuschließen. Das Speichersystem 18 umfaßt einen dynamischen Arbeitsspeicher (DRAM) 34, auf den mittels einer DRAM-Steuerung 36 zugegriffen wird, und einen statischen Arbeitsspeicher (SRAM) 38, auf den mittels einer SRAM-Steuerung 40 zugegriffen wird. Obwohl nicht gezeigt, würde der Prozessor 12 auch einen Festspeicher umfassen, um Boot-Vorgänge zu unterstützen. Die DRAM-Steuerung 34 und SRAM-Steuerung 36 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-Steuerung 38 und die SRAM-Steuerung 40 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 Netzwerkvorrichtung 14 eine Ethernet-MAC-Vorrichtung sein (die mit einem Ethernet-Netzwerk verbunden ist, das nicht gezeigt ist), welche Daten zu dem Prozessor 12 überträgt, und die Vorrichtung 16 kann eine Switch-Fabric-Vorrichtung sein, welche verarbeitete Daten vom Prozessor 12 zur Übertragung zu einer Switch-Fabric empfängt.
  • Zusätzlich kann jede der Netzwerkvorrichtungen 14, 16 eine Mehrzahl von Ports umfassen, die von dem Prozessor 12 bedient werden. Die I/O-Schnittstelle 28 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-Schnittstelle 28 kann getrennte Empfangs- und Übertragungsblöcke umfassen, und diese können jeder für eine bestimmte Schnittstelle, die von dem Prozessor 12 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 Prozessor 12 bedient werden.
  • Im allgemeinen kann der Prozessor 12, als ein Netzwerkprozessor, an verschiedene Arten von Übertragungsvorrichtungen oder -schnittstellen, welche Daten empfangen/senden, ankoppeln. Der Prozessor 12, welcher als ein Netzwerkprozessor arbeitet, kann Informationseinheiten von einer Netzwerkvorrichtung, wie der Netzwerkvorrichtung 14, 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 Zwischenverbindung 42 gekoppelt. Speicherbusse 44a, 44b koppeln die Speichersteuerungen 36 bzw. 37 mit den Speichereinheiten DRAM 34 bzw. SRAM 38 auf dem Speichersystem 18. Die I/O-Schnittstelle 28 ist an die Vorrichtungen 14 und 16 über getrennte I/O-Buslinien 46a bzw. 46b gekoppelt.
  • Mit Bezug auf 3 wird ein beispielhaftes der Verarbeitungselemente 20 gezeigt. Das Verarbeitungselement (PE) 20 umfaßt eine Steuereinheit 50, die einen Steuerspeicher 51, Steuerlogik (oder Mikrosteuerungen) 52 und eine Kontext-Zuweisungs-/Ereignislogik 53 umfaßt. Der Steuerspeicher 51 wird verwendet, um Mikrocode zu speichern. Der Mikrocode kann von dem Prozessor 24 geladen werden. Die Funktionalität der PE-Threads 22 wird daher durch den Mikrocode bestimmt, welcher über den Hauptprozessor 24 für die Anwendung eines bestimmten Nutzers in den Steuerspeicher 51 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-/Ereignislogik 53 kann Nachrichten von jeder der geteilten Ressourcen, z. B. SRAM 38, DRAM 34 oder dem Hauptprozessor 24 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-Datenweg 54 und eine Mehrzweckregister(GPR)-Dateieinheit 56, welche mit der Steuereinheit 50 gekoppelt ist. Der Datenweg 54 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 A 56a und Bank B 56b 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 Datenweg 54 mit Operanden. Wenn sie als ein Zielort in einer Anweisung verwendet werden, werden sie mit dem Ergebnis des Datenwegs 54 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 Steuereinheit 50 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-Übertragungsregisterdatei 62 (Übertragung nach außen) und eine Lese-Übertragungsregisterdatei 64 (Übertragung nach innen). Die Schreib-Übertragungsregister der Schreib-Übertragungsregisterdatei 62 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-Übertragungsregister 62a) und DRAM (DRAM-Schreib-Übertragungsregister 62b) partitioniert. Die Lese-Übertragungsregisterdatei 64 wird verwendet, um Rückgabedaten von einer Ressource, die zu dem Verarbeitungselement 20 extern ist, zu speichern. Wie die Schreib-Übertragungsregisterdatei ist die Lese-Übertragungsregisterdatei in getrennte Registerdateien für SRAM und DRAM, die Registerdateien 64a bzw. 64b, aufgeteilt. Die Übertragungsregisterdateien 62, 64 sind mit dem Datenweg 54 sowie mit dem Steuerspeicher 50 verbunden. Man beachte, daß die Architektur des Prozessors 12 „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 Speicher 66 vorgesehen. Der lokale Speicher 66 wird von Registern 68a („LM_Addr_1"), 68b („LM_Addr_0") adressiert, die dem Datenweg 54 Operanden zuführen, und empfängt Ergebnisse von dem Datenweg 54 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)-Register 74, die mit dem Steuerspeicher 50 und dem Ausführungsdatenweg 54 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-Eingangssignal 76a oder von derselben PE, wenn sie durch Informationen in den lokalen CSRs 70 gesteuert wird, empfangen werden. Ein Nächster-Nachbar-Ausgangssignal 76b an eine Nächster-Nachbar-PE („stromabwärts gelegene PE") in einer Verarbeitungspipeline kann unter der Steuerung der lokalen CSRs 70 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 Speichersteuerung 100, die eine Haupt-Befehls-FIFO 102 umfaßt, welche Befehle an ein Speicherbefehls-Speichermodul 104 bereitstellt, um Befehle für eine Mehrzahl von Speicherbänken 106a–h zu speichern. Für jede der Speicherbänke 106a–h ist eine Steuereinrichtung 108a–h, die einen Kopfzeiger und einen Schwanzzeiger umfassen kann, mit dem Befehlsspeichermodul 104 gekoppelt. Für jede der Speicherbänke kann ein optionales Vorgriffmodul 110a–h zwischen den Datenausgabeport des Befehlsspeichermoduls 104 und die Pin-Schnittstellenlogik 112 gekoppelt werden. Wie dem Fachmann bekannt ist, erleichtert das Vorgriffmodul 110 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 Befehlsspeicherfeld 104a und ein Next-Feld 104b, welches auf den nächsten Eintrag in einer verketteten Liste von Befehlen für eine gegebene Speicherbank zeigt. Das Befehlsspeichermodul 104 umfaßt weiter ein Gültigkeitsflag 104c, 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ültigkeitsflag 104c gesetzt. Nachdem der Eintrag verwendet wurde, wird das Gültigkeitsflag 104c zurückgesetzt und der Eintrag tritt in den Pool von verfügbaren Einträgen ein.
  • Die Steuereinrichtung 108 umfaßt einen Kopfzeiger 109 und einen Schwanzzeiger 111. Anfang zeigen der Kopf- und der Schwanzzeiger 109, 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 Befehlsspeichermodul 104 keine Befehle für die zugehörige Speicherbank aufweist. Im allgemeinen steuert jede Steuereinrichtung 108 zusammen mit dem Befehlsspeichermodul 104 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-Feld 104b gesetzt. Der Schwanzzeiger 111 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 Befehlsspeichermodul 104 erhält, wird der Schwanzzeiger 111 verwendet, um den nächsten Befehl von dem Speicherpool zu lesen. Der Schwanzzeiger 111 wird dann mit der Eintragszahl aktualisiert, die an dem Next-Zeigerort geschrieben ist, und das Gültigkeitsflag 104c wird entsprechend dem verwendeten Eintrag zurückgesetzt.
  • Die 5A–C zeigen, zusammen mit der 4, eine beispielhafte Verarbeitungssequenz des Speicherns und der Verwendung von Befehlen in dem Befehlsspeichermodul (4), basierend auf dem Kopfzeiger 109, dem Schwanzzeiger 111 und dem Next-Feld 104b des Befehlsspeichermoduls. Es versteht sich, daß der Kopf- und der Schwanzzeiger 109, 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 Modul 104 keine Befehle für die Bank auf, die mit dem Kopf- und dem Schwanzzeiger 109, 111 verbunden ist, so daß diese auf denselben Ort, gezeigt als Ort 5, des Befehlsspeichermoduls 104 zeigen. Man beachte, daß das Gültigkeitsflag 104c15 für den Ort 5 (15) gesetzt ist, da der Kopfzeiger 109 auf diesen Ort zeigt. In der 5B wird ein erster Befehl C1 von dem Haupt-Befehls-FIFO 102 (4) in dem Befehlsfeld 104a15 von Ort 5 gespeichert. Als Teil der Befehlsspeicheroperation wird ein nächster Eintragsort, basierend auf den Gültigkeitsflags 104c, identifiziert. In der dargestellten Ausführung wird der Ort 7 als der nächste Eintragsort identifiziert, und diese Information wird in das Next-Feld 104b15 von Ort 5 geschrieben. Der Schwanzzeiger 111 wird aktualisiert, um auf den Ort 7 des Befehlsspeichermoduls zu zeigen, und das Gültigkeitsflag 104c17 des Ortes 7 wird gesetzt.
  • In 5C wird ein zweiter Befehl C2 von dem Haupt-Befehls-FIFO 102 empfangen und in dem Ort 7 gespeichert. Der nächste Eintragsort wird als Ort 1 identifiziert, und diese Information wird in das Next-Feld von Ort 7 geschrieben. Der Schwanzzeiger 111 wird aktualisiert, um auf den Ort 1 zu zeigen, und das Gültigkeitsflag dieses Ortes wird gesetzt.
  • In 5D wird der erste Befehl C1 von dem Befehlsspeichermodul 104 an die Vorgriffsstruktur 110 und die Pin-Schnittstelle 112 gesendet. Der Ort 5, welcher den ersten Befehl C1 gespeichert hatte, wird leer, und das Gültigkeitsflag 104c wird zurückgesetzt. Der Kopfzeiger 109 wird aktualisiert, um auf den Ort 7 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-Schnittstellenlogik 112 von 4 gekoppelt werden kann. Die Pin-Schnittstellenlogik 112 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)

  1. 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.
  2. 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.
  3. System nach Anspruch 1, welches weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
  4. System nach Anspruch 1, wobei jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
  5. 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.
  6. System nach Anspruch 4, bei dem das Gültigkeitsflag verwendet wird, um einen nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul zu bestimmen.
  7. 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.
  8. 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.
  9. Einheit nach Anspruch 7, welche weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
  10. Einheit nach Anspruch 7, bei der jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
  11. Einheit nach Anspruch 7, bei der die Netzwerkprozessoreinheit mehrere Kerne aufweist, welche auf einem einzigen Chip ausgebildet sind.
  12. 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.
  13. 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.
  14. Vorrichtung nach Anspruch 12, welche weiter eine Haupt-Befehlsspeichervorrichtung umfaßt, um Befehle an das Speicherbefehl-Speichermodul zu liefern.
  15. Vorrichtung nach Anspruch 12, bei der jeder der Mehrzahl von Orten im Speicherbefehl-Speichermodul ein Gültigkeitsflag aufweist.
  16. Vorrichtung nach Anspruch 15, bei der das Gültigkeitsflag verwendet wird, um einen nächsten verfügbaren Ort in dem Speicherbefehl-Speichermodul zu bestimmen.
  17. 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.
  18. 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.
  19. 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.
  20. Verfahren nach Anspruch 17, welches weiter das Übertragen des ersten Befehls von dem Speicherbefehl-Speichermodul und das Aktualisieren des Kopfzeigers umfaßt.
  21. 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.
DE112005003204T 2004-12-21 2005-12-20 Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock Ceased DE112005003204T5 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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