DE112010005609T5 - Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung - Google Patents

Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung Download PDF

Info

Publication number
DE112010005609T5
DE112010005609T5 DE112010005609T DE112010005609T DE112010005609T5 DE 112010005609 T5 DE112010005609 T5 DE 112010005609T5 DE 112010005609 T DE112010005609 T DE 112010005609T DE 112010005609 T DE112010005609 T DE 112010005609T DE 112010005609 T5 DE112010005609 T5 DE 112010005609T5
Authority
DE
Germany
Prior art keywords
buffer
write
write data
request
buffers
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
DE112010005609T
Other languages
English (en)
Inventor
David F. Heinrich
Theodore F. Emerson
Hung Q. Le
Robert L. Noonan
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE112010005609T5 publication Critical patent/DE112010005609T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • 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
    • 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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

Eine Speichersteuerung, die ein oder mehrere Tore enthält, die mit einer Pufferauswahllogik und einer Mehrzahl von Puffer gekoppelt sind. Jeder Puffer ist konfiguriert, um Schreibdaten zu speichern, die einer Schreibanforderung zugeordnet sind, und jeder Puffer ist auch mit der Pufferauswahllogik gekoppelt. Die Pufferauswahllogik ist konfiguriert, um Schreibdaten zu speichern, die einer Schreibanforderung von zumindest einem der Tore in einem der Puffer zugeordnet sind, basierend auf einer Priorität der Puffer für jedes der Tore.

Description

  • Querverweis auf verwandte Anwendungen
  • Diese Anmeldung beansprucht die Priorität der Provisional-Patentanmeldung mit der Seriennummer 61/349,584, eingereicht am 28. Mai 2010 mit dem Titel „Storing Data in any of a Plurality of Buffers in a Memory Controller”.
  • Hintergrund
  • Eine Speichersteuerung verwaltet den Datenfluss der auf einen physikalischen Speicher geschrieben und von demselben gelesen wird. Eine „Leseanforderung” ist eine Anforderung, Daten von dem Speicher zu lesen und kann eine Adresse in dem Speicher aufweisen, von der zu lesen ist und einen Identifizierer der Vorrichtung, die von dem Speicher lesen möchte. Eine „Schreibanforderung” ist eine Anforderung, Daten in den Speicher zu schreiben und kann die Daten, die zu schreiben sind, die Adresse in dem Speicher, an die die Daten zu schreiben sind und einen Identifizierer der Vorrichtung, die in den Speicher schreiben möchte, umfassen. Leseanforderungen und Schreibanforderungen von einer bestimmten Vorrichtung dringen durch ein Tor in die Speichersteuerung ein. Eine Mehrtor-Speichersteuerung ist eine Speichersteuerung, die in der Lage ist, Leseanforderungen und Schreibanforderungen von mehr als einer Vorrichtung zu bedienen, wobei jede Vorrichtung einem bestimmten Tor der Speichersteuerung zugewiesen ist.
  • Viele unterschiedliche Vorrichtungen erfordern Zugriff auf physikalischen Speicher aus verschiedenen Gründen (z. B. Speichern von Zeigern, Daten). Um Kosten zu reduzieren, können diese Vorrichtungen einen einzigen physikalischen Speicher gemeinschaftlich verwenden, was zu vielen Speicheranforderungen für die gleiche Ressource führen kann. Nicht alle Speicheranforderungen können gleichzeitig erfüllt werden, daher werden Schreibpuffer verwendet, um anstehende Schreibdaten zu halten, während andere Schreibdaten in den Speicher geschrieben werden. Jedes Tor hat einen zweckgebundenen Schreibpuffer, der es ermöglicht, dass Schreibanforderungen, die in ein Tor kommen, absorbiert werden, ohne die zugeordneten Schreibdaten sofort in den Speicher schreiben zu müssen.
  • Häufig hat ein Tor einer Speichersteuerung eine geringe Nachfrage nach Speicherzugriff während ein anderes Tor eine hohe Nachfrage nach Speicherzugriff hat, somit wird ein Puffer nicht so häufig verwendet wie ein anderer Puffer.
  • Kurze Beschreibung der Zeichnungen
  • Für eine detaillierte Beschreibung der Ausführungsbeispiele der Erfindung wird nachfolgend auf die beiliegenden Zeichnungen Bezug genommen.
  • 1 zeigt ein Systemblockdiagramm gemäß verschiedenen Ausführungsbeispielen;
  • 2a, 2b, 2c, 2d, 2e und 2f zeigen beispielhafte Tor-Puffer-Diagramme gemäß verschiedenen Ausführungsbeispielen;
  • 3a und 3b zeigen beispielhafte Speicherdiagramme gemäß verschiedenen Ausführungsbeispielen;
  • 4a zeigt ein Verfahrensflussdiagramm gemäß verschiedenen Ausführungsbeispielen; und
  • 4b zeigt ein weiteres Verfahrensflussdiagramm gemäß verschiedenen Ausführungsbeispielen.
  • Notation und Nomenklatur
  • Bestimmte Begriffe werden in der gesamten folgenden Beschreibung und in Ansprüchen verwendet, um bestimmte Systemkomponenten zu bezeichnen. Wie es für einen Fachmann auf diesem Gebiet klar ist, können Computerfirmen eine Komponente unterschiedlich bezeichnen. Dieses Dokument beabsichtigt nicht, zwischen Komponenten zu unterscheiden, die sich nur vom Namen, aber nicht der Funktion her unterscheiden. In der folgenden Erörterung und in den Ansprüchen werden die Begriffe „umfassen” und „aufweisen” auf offene Weise verwendet, und sollten somit bedeuten „aufweisen, aber nicht begrenzt auf...”. Außerdem soll der Begriff „koppeln” oder „koppelt” entweder eine indirekte, direkte, optische oder drahtlose elektrische Verbindung bedeuten. Falls somit eine erste Vorrichtung mit einer zweiten Vorrichtung koppelt, kann diese Verbindung durch eine direkte elektrische Verbindung, durch eine indirekte elektrische Verbindung über andere Vorrichtungen und Verbindungen, durch eine optische elektrische Verbindung oder durch eine drahtlose elektrische Verbindung sein.
  • Detaillierte Beschreibung
  • Die folgende Erörterung bezieht sich auf verschiedene Ausführungsbeispiele der Erfindung. Obwohl eines oder mehrere dieser Ausführungsbeispiele bevorzugt werden können, sollten die offenbarten Ausführungsbeispiele nicht so interpretiert oder anderweitig verwendet werden, dass dieselben den Schutzbereich der Offenbarung einschließlich der Ansprüche begrenzen. Außerdem ist es für einen Fachmann auf diesem Gebiet klar, dass die folgende Beschreibung breite Anwendung findet und die Erörterung jedes Ausführungsbeispiels nur beispielhaft sein soll für dieses Ausführungsbeispiel und nicht den Schutzbereich der Offenbarung einschließlich der Ansprüche auf dieses Ausführungsbeispiel begrenzt.
  • Gemäß verschiedenen Ausführungsbeispielen zeigt 1 eine Speichersteuerung 100, die Tore 102 aufweist, die mit einer Pufferauswahllogik 104 und einer Pufferentscheidungslogik 108 gekoppelt sind. Jedes Tor 102 empfängt Leseanforderungen und Schreibanforderungen von einer Vorrichtung (z. B. einem Prozessor, einem Eingabe/Ausgabegerät, einem Videogerät). Zusätzlich weist die Speichersteuerung 100 Puffer 106 auf, die mit sowohl der Pufferauswahllogik 104 als auch der Pufferentscheidungslogik 108 gekoppelt sind. Die Puffer 106 sind konfiguriert, um Schreibdaten, die einer Schreibanforderung zugeordnet sind, vorübergehend zu speichern, bevor solche Daten in den Speicher geschrieben werden. Bei beispielhaften Ausführungsbeispielen sind die Puffer 106 die Größe einer Cachezeile (z. B. 32 Byte) und jeder speichert Schreibdaten für mehrere Adressen eines Speichers 110. Schreibanforderungen werden von dem Tor 102 zu der Pufferauswahllogik 104 geleitet, während Leseanforderungen von dem Tor 102 zu der Pufferentscheidungslogik 108 geleitet werden. Jedes Tor 102 kann der Pufferauswahllogik 104 während eines bestimmten Zyklus eine Schreibanforderung präsentieren, und somit können der Pufferauswahllogik 104 während eines bestimmten Zyklus mehrere Schreibanforderungen präsentiert werden. Außerdem ist die Pufferentscheidungslogik 108 mit dem Speicher 110 (z. B. Cache) gekoppelt.
  • Die Pufferauswahllogik 104 empfängt Schreibanforderungen von den Toren 102 während eines bestimmten Zyklus und ist sich des Status jedes Puffers 106 bewusst. Beispielsweise ist sich die Pufferauswahllogik 104 des Ursprungstors von Schreibdaten in einem Puffer 106, der Adresse in dem Speicher 110, der die Schreibdaten in dem Puffer 106 entsprechen, und des Adressbereichs (d. h. Cachezeile), der in dem Puffer 106 dargestellt ist, bewusst. Bei einem beispielhaften Ausführungsbeispiel speichern die Puffer 106 32 Byte Schreibdaten und eine Adresse in einem Speicher speichert 2 Byte Daten; somit speichern die Puffer 106 jeweils 16 sequentielle Adressen, die eine Cachezeile bilden. Die Pufferauswahllogik 104 ordnet auch jedes Tor 102 einem eindeutigen Puffer zu, für den das bestimmte Tor höchste Priorität erhält. Beispielsweise erhält Tor_0 die höchste Priorität für Puffer_0, und Tor_7 erhält die höchste Priorität für Puffer_7. Bei einem beispielhaften Ausführungsbeispiel erhält Tor_0 zunehmend niedrigere Prioritäten, wenn sich die Pufferzahl erhöht (z. B. Puffer_9 ist der Puffer niedrigster Priorität für Tor_0); Tor_7 ist ähnlich, die Puffer springen jedoch zurück (z. B. 7, 8, 9, 0, 1, 2, 3, 4, 5, 6), und somit ist der Puffer_6 der Puffer niedrigster Priorität für Tor_7. Als Folge dieses beispielhaften Schemas ist jedes Tor 102 auf jeder Prioritätsebene nur einem Puffer 106 zugeordnet.
  • Bei einem weiteren beispielhaften Schema ändert sich die Zuordnungspriorität jedes Puffers 106 jedes Mal, wenn Schreibdaten in dem Puffer 106 gespeichert werden. Beispielsweise gibt Puffer_0 Tor_0 anfangs höchste Priorität, aber nachdem die Schreibdaten von Tor_0 in den Speicher 110 geschrieben wurden, gibt der Puffer_0 Tor_1 höchste Priorität usw. Folglich gibt jeder Puffer 106 jedem Tor 102 eine gleichmäßiger verteilte Priorität. Gemäß verschiedenen Ausführungsbeispielen kann das Prioritätsschema fest codiert sein in der Schaltungsanordnung der Pufferauswahllogik 104, während bei anderen Ausführungsbeispielen das Prioritätsschema programmierbar sein kann.
  • Gemäß verschiedenen Ausführungsbeispielen empfängt die Pufferentscheidungslogik eine Schreibanforderung von einem oder mehreren Toren 102 während eines bestimmten Zyklus. Ansprechend auf das Empfangen einer Schreibanforderung sendet die Pufferauswahllogik 104 eine Anforderung an alle Puffer 106, um die Verfügbarkeit der Puffer 106 zu bestimmen. 2a–f zeigen darstellende Tor-Puffer-Diagramme 200250. Beispielsweise empfängt die Pufferauswahllogik 104 in 2a Schreibanforderungen von Tor_0, Tor_1 und Tor_2 (gezeigt als fettgedruckte Kästchen). Es wird angenommen, dass Puffer_0 und Puffer_2 nicht verfügbar sind und alle anderen Puffer (d. h. 1 und 3–9) verfügbar sind (verfügbare Puffer sind als fettgedruckte Kästchen gezeigt). Ein Puffer 106 kann nicht verfügbar sein, falls der Puffer 106 Schreibdaten enthält, die nicht in den Speicher geschrieben wurden, und stellt somit die einzige verfügbare Instanz solcher Schreibdaten dar und kann nicht überschrieben werden. Für jede Schreibanforderung sendet die Pufferauswahllogik 104 eine Anforderung an alle Puffer 106, gezeigt durch die Pfeile in 2a.
  • Falls ein Puffer 106 verfügbar ist, sendet der Puffer 106 eine Bestätigung zurück an die Pufferauswahllogik 104 für die Anforderung, die von dem Tor höchster Priorität des Puffers stammt, was bewirkt, dass die Pufferentscheidungslogik die Schreibanforderung gewährt, die von dem Tor höchster Priorität jedes verfügbaren Puffers stammt. Somit empfängt die Pufferauswahllogik 104 eine Bestätigung von Puffer_1 für Tor_1, gezeigt durch den Pfeil in 2b von Puffer_1 zu Tor_1, da Tor_1 das Tor 102 höchster Priorität für den Puffer_1 ist. Die Pufferauswahllogik 104 empfängt auch eine Bestätigung von jedem Puffer_3–9 für Tor_2, gezeigt durch die anderen Pfeile in 2b, da Tor_2 für jeden dieser Puffer eine höhere Priorität hat als Tor_1 oder Tor_0. Bei diesem beispielhaften Ausführungsbeispiel hat Tor_2 eine höhere Priorität über diese Puffer, da dieselben „näher” sind zu Tor_2 als Tor_0 (z. B. Puffer_3 ist zweiter in der Priorität des Tors_2, während Puffer_3 dritter in der Priorität ist von Tor_1 und vierter in der Priorität von Tor_0 usw.). An diesem Punkt hat die Pufferauswahllogik 104 von keinem Puffer 106 eine Bestätigung empfangen für die Schreibanforderung von Tor_0, da es für jeden verfügbaren Puffer ein Tor höherer Priorität gibt (d. h. Tor_1 oder Tor_2).
  • Um das obige Beispiel fortzuführen, gewährt die Pufferauswahllogik 104 für jedes Tor, das eine Bestätigung von den Puffer 106 empfängt, die Schreibanforderung, und schreibt die Schreibdaten, die der Schreibanforderung zugeordnet sind, in den Puffer 106 mit höchster Priorität dieses Tors. Somit werden die Schreibdaten von Tor_1 in Puffer_1 gespeichert und die Schreibdaten von Tor_2 werden in Puffer_3 gespeichert, gezeigt durch die Pfeile in 2c. Obwohl Puffer_4–9 auch ihre Verfügbarkeit für die Schreibanforderung von Tor_2 bestätigen, sind diese Puffer niedriger in der Priorität von Tor_2 als Puffer_3, der zweiter ist. Wie es oben erläutert wurde, hat die Pufferauswahllogik 104 von keinem Puffer 106 eine Bestätigung empfangen für die Schreibanforderung von Tor_0, und somit wurde die Schreibanforderung von Tor_0 noch nicht gewährt, und die Schreibdaten, die der Schreibanforderung von Tor_0 zugeordnet sind, wurden noch nicht in einem Puffer 106 gespeichert.
  • In dem folgenden Zyklus empfängt die Pufferauswahllogik 104 erneut eine Schreibanforderung von Tor_0. Bei einigen Ausführungsbeispielen bestätigt Tor_0 seine Schreibanforderung erneut während des folgenden Zyklus; alternativ behält Tor_0 seine Schreibanforderung bei und muss die Schreibanforderung während des folgenden Zyklus nicht speziell deaktivieren und neu versuchen. 2d zeigt ein darstellendes Tor-Puffer-Diagramm 230. Tor_1 und Tor_2 sind nicht mehr fettgedruckt, da Schreibdaten, die ihrer Schreibanforderungen zugeordnet waren, durch die Pufferauswahllogik 104 in Puffer_1 bzw. Puffer_3 gespeichert wurden. Puffer_1 und Puffer_3 sind nicht mehr fettgedruckt, da dieselben die Schreibdaten enthalten, die den Schreibanforderungen von Tor_1 und Tor_2 von dem vorhergehenden Zyklus zugeordnet sind und nicht mehr zum Speichern von zusätzlichen Schreibdaten verfügbar sind.
  • Ansprechend auf das Empfangen von Schreibanforderung von Tor_0, sendet die Pufferauswahllogik 104 wie oben eine Anforderung an alle Puffer 106, die Verfügbarkeit der Puffer 106 zu bestimmen, wie es durch die Pfeile in 2d gezeigt ist. Falls ein Puffer 106 verfügbar ist, sendet der Puffer 106 wie oben eine Bestätigung zurück an die Pufferauswahllogik 104 für die Anforderung, die von dem Tor höchster Priorität des Puffers stammt. Somit empfängt die Pufferauswahllogik 104 eine Bestätigung von jedem Puffer_4–9 für Tor_0, gezeigt durch die Pfeile in 2e, da Tor_0 das verbleibende Tor höchster Priorität für jeden dieser Puffer ist. Für jedes Tor, das eine Bestätigung von den Puffer 106 empfängt (an diesem Punkt nur Tor_0), gewährt die Pufferauswahllogik 104 die Schreibanforderung und speichert die Schreibdaten, die der Schreibanforderung zugeordnet sind, von dem Tor_0 in Puffer_4, gezeigt durch den Pfeil in 2f, da Puffer_4 der Puffer höchster Priorität für Tor_0 ist, der die Schreibanforderung von Tor_0 gewährt hat. Obwohl Puffer_5–9 ebenfalls ihre Verfügbarkeit für die Schreibanforderung von Tor_0 bestätigt haben, sind diese Puffer in der Priorität von Tor_0 niedriger als Puffer_4. Ferner wird bei einem alternativen Ausführungsbeispiel die Schreibanforderung von Tor_0 unter Verwendung des oben beschriebenen Schemas gehandhabt, aber während des gleichen Zyklus wie die Schreibanforderungen von Tor_1 und Tor_2.
  • Die Pufferauswahllogik 104 ist als eine zentralisierte Logikeinheit beschrieben, die Schreibanforderungen von den Toren 102 empfängt, eine Anforderung an die Puffer 106 sendet, um die Verfügbarkeit der Puffer 106 zu bestimmen, Bestätigungen der Verfügbarkeit von den Puffer 106 empfängt und Schreibdaten, die den Schreibanforderungen von den Toren 102 zugeordnet sind, in dem geeigneten Puffer 106 speichert. Ein Fachmann auf diesem Gebiet würde jedoch verstehen, dass eine solche Logikimplementierung auf dezentralisierte Weise existieren könnte. Beispielsweise könnten die Tore 102 direkt mit den Puffer 106 kommunizieren. Die Anforderungen von den Toren 102, Pufferverfügbarkeit zu bestimmen, können Informationen aufweisen wie zum Beispiel die Adressen, die den Schreibdaten der Schreibanforderung zugeordnet sind, und andere Informationen, die notwendig sind, um zu bestimmen, ob ein Puffer 106 verfügbar ist. Die Puffer 106 sind konfiguriert, um solche Anforderungen von den Toren 102 zu empfangen und zu bestimmen, ob sie die Anforderung bestätigen. Wie oben bestätigt jeder Puffer 106, falls verfügbar, nur die Anforderung, die von dem Tor höchster Priorität 102 des Puffers 106 stammt. Dann speichert jedes Tor 102, das eine Bestätigung von einem oder mehreren Puffer 106 empfängt, die Schreibdaten, die seiner Schreibanforderung zugeordnet sind, in dem Puffer 106 höchster Priorität, der seine Anforderung bestätigt hat.
  • In der Praxis kann es selten vorkommen, dass während eines bestimmten Zyklus alle Puffer nicht verfügbar sind, dies gilt insbesondere, wenn die Speichersteuerung mit einer größeren Anzahl von Puffern 106 als Toren 102 entworfen ist. Somit können in einem Großteil der Fälle die Schreibdaten, die einer ankommenden Schreibanforderung zugeordnet sind, in einem Puffer 106 gespeichert werden, ohne darauf warten zu müssen, dass die Schreibdaten eines Puffers an den Speicher 110 gesendet werden. Falls alle Puffer für die ankommende Schreibanforderung nicht verfügbar sind, dann muss die Schreibanforderung auf den nächsten Zyklus warten, um zu versuchen, auf einen der Puffer 106 zuzugreifen. Faktoren zum Bestimmen der Verfügbarkeit von Puffer werden nachfolgend näher erläutert.
  • Gemäß verschiedenen Ausführungsbeispielen ist ein Puffer 106 verfügbar, falls derselbe leer ist oder vorher in den Speicher 110 geschrieben wurde, was bestätigt werden kann durch Prüfen eines Besetzt-Bits, das dem Puffer 106 zugeordnet ist. Das Besetzt-Bit für jeden Puffer 106 wird verwendet, um anzuzeigen, dass der Puffer 106 bereits Schreibdaten enthält, so dass das ursprünglich gewährte Tor 102 weiter in diesen Puffer 106 schreiben kann. Falls das Besetzt-Bit deaktiviert ist, ist der Puffer 106 leer. Das Besetzt-Bit ist deaktiviert, wenn die Inhalte eines Puffers 106 zu einem Speicher 110 übertragen werden.
  • Gemäß verschiedenen Ausführungsbeispielen ist die Pufferauswahllogik 104 konfiguriert, um Schreibdaten, die einer aktuellen Schreibanforderung zugeordnet sind, und Schreibdaten, die einer vorhergehenden Schreibanforderung zugeordnet sind, die in einem Puffer 106 gespeichert ist, zu mischen, falls die Daten der aktuellen Schreibanforderungen der gleichen Cachezeile zugeordnet sind wie die Schreibdaten, die in dem Puffer 106 gespeichert sind. Falls die Bedingungen zum Mischen von Schreibdaten, die einer aktuellen Schreibanforderung zugeordnet sind, und Schreibdaten, die einer vorhergehenden Schreibanforderung zugeordnet sind, die in einem Puffer 106 gespeichert ist, erfüllt sind, ist dieser Puffer 106 für diese bestimmte Schreibanforderung verfügbar.
  • 3a zeigt ein darstellendes Diagramm des Mischprozesses 300. Falls beispielsweise ein Puffer 106 32 Byte groß ist und eine Adresse 2 Byte im Speicher darstellt, dann weist der Puffer 106 16 Adressenplätze auf (z. B. Adressen 0–15). Falls die vorhergehende Schreibanforderung das Schreiben der Daten „A”–„D” jeweils in die Adressen 4–7 umfasste, dann werden „A”–„D” in Stellen 4–7 des Puffer_0 gespeichert. Die aktuelle Schreibanforderung 302 enthält Schreibdaten „E”–„I” jeweils für Adressen 9–13 (d. h. Adressen in der gleichen Cachezeile wie die vorhergehende Schreibanforderung), die Inhalte des Puffers 106 müssen weder in den Speicher 110 geschrieben werden noch muss die aktuelle Schreibanforderung ihren eigenen Puffer erhalten. Die resultierenden Inhalte 304 des Puffers 106 umfassen Daten für Adressen 4–7 von der vorhergehenden Schreibanforderung und Daten für Adressen 9–13 von der aktuellen Schreibanforderung 302.
  • Da nur die aktuellsten Daten, die in eine Adresse geschrieben werden, für eine nachfolgende Leseanforderung von Bedeutung sind, können alternativ Schreibdaten an überlappende Adressen in einer Cachezeile ebenfalls gemischt werden. 3b zeigt ein weiteres darstellendes Diagramm des Mischprozessors 310. Falls beispielsweise die vorhergehende Schreibanforderung das Schreiben von Daten „A”–„D” jeweils in Adressen 4–7 umfasste, dann werden „A”–„D” in Stellen 4–7 eines Puffers 106 gespeichert. Die aktuelle Schreibanforderung 312 enthält Schreibdaten „J”–„O” jeweils für Adressen 6–11. Die resultierenden Inhalte 314 des Puffers 106 umfassen Daten für Adressen 4–5 von der vorhergehenden Schreibanforderung und Daten für Adressen 6–11 von der aktuellen Schreibanforderung 312. Adressen 6–7 der vorhergehenden Schreibdaten wurden überschrieben.
  • Der Puffer 106 erscheint jedoch für andere Tore nach wie vor als nicht verfügbar, da das Mischen nicht bewirkt hat, dass die Schreibdaten, die in dem Puffer 106 gespeichert sind, in den Speicher 110 geschrieben werden, und somit ist das Besetzt-Bit des Puffers 106 aktiviert. Als Folge ist der Puffer 106 nicht verfügbar, falls die ankommende Schreibanforderung für eine andere Adresse oder Gruppe von Adressen ist als die Adressen der Cachezeile, die durch Schreibdaten dargestellt wird, die in dem Puffer 106 gespeichert sind (d. h. andere Adressen als 0–15) und das Besetzt-Bit des Puffers 106 bleibt aktiviert.
  • Gemäß verschiedenen Ausführungsbeispielen wird das Besetzt-Bit deaktiviert, wenn die Schreibdaten, die in einem Puffer 106 gespeichert werden, in einen Speicher 110 geschrieben werden. Die Pufferentscheidungslogik 108 empfängt Leseanforderungen von den Toren 102 während eines gegebenen Lesezyklus und ist sich des Status jedes Puffers 106 bewusst. Beispielsweise ist sich die Pufferentscheidungslogik 108 des Ursprungstors von Schreibdaten in einem Puffer 106 bewusst, und der Adresse in dem Speicher 110, der die Schreibdaten in einem Puffer 106 entsprechen. Unter Verwendung dieser Informationen bestimmt die Pufferentscheidungslogik 108, wann die Inhalte eines Puffers 106 in den Speicher 110 geschrieben werden. In einigen Fällen kann die Pufferentscheidungslogik 108 bestimmen, dass während eines gegebenen Zyklus die Inhalte von mehr als einem Puffer 106 in den Speicher 110 geschrieben werden sollten. Abhängig von der Größe des Busses in den Speicher 110 können jedoch bei einigen Ausführungsbeispielen die Inhalte von nur einem Puffer 106 pro Zyklus in den Speicher 110 geschrieben werden, somit bestimmt die Pufferentscheidungslogik 108, von welchem Puffer 106 die Inhalte in den Speicher 110 geschrieben werden.
  • Basierend auf dem Auftreten unterschiedlicher Ereignisse bestimmt die Pufferentscheidungslogik 108, die Inhalte eines Puffers 106 in den Speicher 110 zu schreiben. Ein Schreib/Schreibkohärenztreffer tritt auf, wenn eine Schreibanforderung von einem anderen Tor 102 stammt und der gleichen Cachezeile entspricht wie Schreibdaten von einem Tor 102, gespeichert in einem Puffer 106. Falls beispielsweise Schreibdaten, die einer Schreibanforderung von Tor_1 zugeordnet sind, Adressen 0–15 entsprechen, und Tor_0 Schreibdaten in einem Puffer 106 gespeichert hat, der Adressen 0–15 entspricht (d. h. der gleichen Cachezeile, der die Schreibanforderung von Tor_1 entspricht), gab es einen Schreib/Schreibkohärenztreffer. Bei einem beispielhaften Ausführungsbeispiel bewirkt ein Schreib/Schreibkohäherenztreffer, dass die Pufferentscheidungslogik 108 die Inhalte des Puffers 106, der Schreibdaten speichert, die der früheren Schreibanforderung zugeordnet sind, in den Speicher 110 schreibt und das Besetzt-Bit für diesen Puffer 106 deaktiviert. Wenn somit eine Schreibanforderung an die gleiche Cachezeile von einem anderen Tor 102 stammt, können Schreibdaten, die der Schreibanforderung zugeordnet sind, in einem Puffer 106 gespeichert werden, falls einer verfügbar ist, und die Inhalte des Puffers 106, der Schreibdaten speichert, die der früheren Schreibanforderung zugeordnet sind, werden in den Speicher 110 geschrieben. Dies trägt dazu bei, sicherzustellen, dass ankommende Schreibanforderungen nicht darauf warten müssen, dass sich der Puffer 106 höchster Priorität des Tores leert, bevor dieselben in einem Puffer 106 gespeichert werden können, während auch sichergestellt wird, dass ein Tor nicht zu viele Puffer 106 verbraucht als Folge von sequentiellen Schreibanforderungen an unterschiedlichen Cachezeilen in dem Speicher 110. Bei einem alternativen Ausführungsbeispiel wird ein tieferer Schreib/Schreibkohärenztreffer-Schwellenwert gesetzt (d. h. der zweite Schreib/Schreibkohärenztreffer oder eine dritte Schreibanforderung an eine andere Cachezeile statt des ersten Kohärenztreffers bewirkt, dass der Puffer, der Schreibdaten enthält, die der frühesten Schreibanforderung zugeordnet sind, in den Speicher 110 geschrieben wird).
  • Die Pufferentscheidungslogik 108 bestimmt auch, die Inhalte eines Puffers 106 zu schreiben, falls ein Lese/Schreibkohärenztreffer auftritt. Ein Lese/Schreibkohärenztreffer tritt auf, wenn eine Leseanforderung für die gleiche Cachezeile ist wie in einem Puffer 106 gespeichert. Falls die Leseanforderung bedient wurde, bevor die Inhalte des Puffers 106 an den Speicher 110 gesendet wurden, würde die Leseanforderung auf nicht korrekte Daten von dem Speicher 110 zugreifen; somit müssen die Schreibdaten in dem Puffer 106 an den Speicher 110 gesendet werden, bevor die Leseanforderung bedient wird, so dass die Leseanforderung von der „korrekten” Version des Speichers 110 liest (d. h. so dass der Speicher 110 die Daten enthält, die als letztes in die Cachezeile geschrieben wurden). Bei einem alternativen Ausführungsbeispiel sendet die Pufferentscheidungslogik 108 die angeforderten Schreibdaten von dem Puffer 106 direkt an das Tor 102 zurück, ansprechend auf eine Leseanforderung für eine bestimmte Adresse oder Adressen, vorausgesetzt, dass der Puffer 106 alle Schreibdaten enthält, die durch die Leseanforderung angefordert werden. Dies vermeidet, dass die Schreibdaten zuerst an den Speicher 110 gesendet werden müssen und dann nachfolgend die Schreibdaten von dem Speicher 110 gelesen werden müssen. Falls jedoch der Puffer 106 nicht alle Schreibdaten enthält, die durch die Leseanforderung angefordert werden, müssen die Schreibdaten in dem Puffer 106 zuerst in den Speicher 110 geschrieben werden.
  • Falls außerdem kein Lese/Schreibkohärenztreffer auftritt, bedient die Pufferentscheidungslogik 108 die Leseanforderung ohne irgendeinen der Puffer 106 in den Speicher 110 zu schreiben. In solch einer Situation vermeidet die Leseanforderung das Warten darauf, dass Daten in den Speicher geschrieben werden, bevor dieselbe auf den Speicher 110 zugreift und alle Schreibdaten in den Puffer 106 bleiben in den Puffer 106 und bleiben gültig.
  • Gemäß verschiedenen Ausführungsbeispielen ist die Pufferentscheidungslogik 108 konfiguriert, um ein Gültigkeitsbit zu überwachen, das jedem Puffer 106 zugeordnet ist. Das Gültigkeitsbit eines Puffers 106 wird aktiviert, falls bestimmt wird, dass der Schreibpuffer in den Speicher geschrieben werden muss, beispielsweise aus den oben gegebenen Gründen. Die Aktivierung des Gültigkeitsbits des Puffers 106 zeigt der Pufferentscheidungslogik 108 an, dass der Puffer in der Entscheidung für den Speicher 110 teilnehmen muss. Nachdem die Schreibdaten des Puffers 106 in den Speicher 110 geschrieben werden, wird das Gültigkeitsbit deaktiviert.
  • Zusätzlich behält der Puffer 106 ein Statusbit bei für jedes Byte in der Cachezeile (d. h. zwei Statusbits pro Adresse in dem Fall einer 2-Byte-Adressgröße). Das Statusbit zeigt an, ob ein bestimmtes Byte in der Cachezeile gültige Daten enthält, die nicht in den Speicher 110 geschrieben wurden. Auf diese Weise werden nur Bytes, die in der Cachezeile modifiziert wurden, tatsächlich zurückgeschrieben in den Speicher 110, wenn bestimmt wird, dass ein Puffer 106 in den Speicher 110 geschrieben werden muss. Die erste Schreibanforderung an einen leeren Puffer 106 wird bewirken, dass das Statusbit für jedes Byte aktiviert wird, das in den Puffer 106 geschrieben wird.
  • Mit erneuter Bezugnahme auf 3a werden die Statusbits für Adressen 4–7 (d. h. die Adressen, die gültige Daten enthalten, die noch nicht in dem Speicher 110 geschrieben wurden) aktiviert. Die Statusbits für Adressen 0–3 und 8–15 werden deaktiviert, da diese Adressen ungültige Daten enthalten oder vorher in den Speicher 110 geschrieben wurden.
  • Eine nachfolgende Schreibanforderung, die in einen Puffer 106 gemischt wird, aktualisiert die zugehörigen Statusbits, so dass, wenn die Schreibdaten des Puffers 106 schließlich in den Speicher 110 geschrieben werden, die Statusbits, die den gültigen Adressen zugeordnet sind, aktiviert werden. Beispielsweise zeigen die resultierenden Inhalte 304 des Puffers 106, dass die Statusbits für Adressen 4–7 und 9–13 aktiviert werden, da diese Adressen gültige Daten enthalten, die nicht in dem Speicher 110 geschrieben wurden. Die Statusbits für Adressen 0–3, 8 und 14–15 werden deaktiviert, da diese Adressen ungültige Daten enthalten oder vorher in den Speicher 110 geschrieben wurden. Nachdem die Schreibdaten des Puffers 106 in den Speicher 110 geschrieben wurden, werden alles Statusbits deaktiviert.
  • Die Pufferentscheidungslogik 108 deaktiviert auch das Besetzt-Bit für einen Puffer 106 nach dem Schreiben der Inhalte dieses Puffers 106 in den Speicher 110. Falls jedoch die angeforderten Schreibdaten direkt zu dem Tor 102 zurückgesendet werden, deaktiviert die Pufferentscheidungslogik 108 das Besetzt-Bit nicht, da eine weitere Leseanforderung auf dieselbe Cachezeile zugreifen kann und die Inhalte des Puffers 106 nicht in den Speicher 110 geschrieben wurden, somit ist der Puffer 106 nicht leer.
  • Die obige Erörterung adressiert die Szenarien, bei denen nur ein Tor 102 eine Schreib/Schreib-Kohärenztreffer oder einen Lese/Schreib-Kohärenztreffer erzeugt. Ein Fachmann auf diesem Gebiet würde jedoch erkennen, dass aufgrund der Beschaffenheit von Mehrtorspeichersteuerungen mehr als ein Tor 102 in einem gegebenen Zyklus einen Kohärenztreffer erzeugen könnte. Gemäß verschiedenen Ausführungsbeispielen bestimmt die Pufferentscheidungslogik 108 somit welches Tor 102 in dem gegebenen Zyklus auf den Speicher 110 zugreift. Dies könnte auf einer Priorität des Tors 102 basieren, wo Tor_0 die höchste Priorität hat und Tor_7 die niedrigste Priorität hat, oder jedes andere geeignete Verfahren um zwischen konkurrierenden Toren 102 zu entscheiden.
  • 4a zeigt ein Verfahren 400 gemäß verschiedenen Ausführungsbeispielen. Das Verfahren beginnt mit dem Empfangen einer oder mehrerer Schreibanforderungen von einem oder mehreren Tore 102 (Block 402). Bei einem beispielhaften Ausführungsbeispiel empfängt die Pufferauswahllogik 104 die eine oder die mehreren Schreibanforderungen. Wie oben erörtert, kann jedoch die Pufferauswahllogik 104 auf dezentralisierte Weise implementiert sein, wo ein Tor 102 eine Schreibanforderung an jeden Puffer 106 sendet und somit jeder Puffer 106 eine oder mehrere Schreibanforderungen empfängt.
  • Das Verfahren 400 fährt fort mit dem Gewähren der Schreibanforderung, die von dem Tor höchster Priorität 102 jedes Puffers 106 stammt (Block 404). Falls ein Puffer 106 verfügbar ist, sendet der Puffer 106 eine Bestätigung zurück an die Pufferauswahllogik 104 für die Anforderung, die von dem Tor höchster Priorität des Puffers stammt, was bewirkt, dass die Pufferauswahllogik die Schreibanforderung gewährt, die von dem Tor höchster Priorität jedes verfügbaren Puffers stammt. Wie es beispielsweise oben mit Bezugnahme auf 2a und 2b erörtert ist, bestätigt jeder Puffer_3–9 die Schreibanforderung von Tor_2 anstatt Tor_0, da bei diesem beispielhaften Schema Tor_2 für jeden dieser Puffer ein Tor höherer Priorität ist. Außerdem ist Tor_1 das Tor höchster Priorität für den Puffer_1, und somit bestätigt der Puffer_1 die Schreibanforderungen von Tor_1. Durch Implementieren der Pufferauswahllogik 104 auf eine dezentralisierte Weise bestätigt jedoch jeder verfügbare Puffers 106 die Schreibanforderung von dem Tor höchster Priorität 102 des Puffers direkt an dieses Tor 102.
  • Für jedes Tor 102, dessen Schreibanforderung gewährt wurde, fährt das Verfahren 400 fort mit dem Speichern der Schreibdaten, die der Schreibanforderung zugeordnet sind, in dem Puffer 106 höchster Priorität des Tors, der die Schreibanforderung des Tors 102 gewährt hat (Block 406). Beispielsweise werden Schreibdaten, die der Schreibanforderung von Tor_1 zugeordnet sind, in Puffer_1 gespeichert, da Puffer_1 der Puffer höchster Priorität ist, der die Schreibanforderung von Tor_1 bestätigt hat. Gleichartig dazu werden Schreibdaten, die der Schreibanforderung von Tor_2 zugeordnet sind, in Puffer_3 gespeichert, da Puffer_3 der Puffer höchster Priorität ist, der die Schreibanforderung von Tor_2 bestätigt hat. Gemäß verschiedenen Ausführungsbeispielen speichert die Pufferauswahllogik 104 die Schreibdaten in dem Puffer 106 höchster Priorität für ein Tor 102. Alternativ ist die Pufferauswahllogik 104 auf dezentralisierte Weise implementiert und ein Tor 102 speichert, auf das Empfangen einer oder mehrerer Gewährungen von den Puffer 106 hin, die Schreibdaten, die der Schreibanforderung von diesem Tor 102 zugeordnet sind, in dem Puffer höchster Priorität 106, der die Schreibanforderungen des Tors 102 gewährt hat.
  • Falls es ein oder mehrere Tore 102 gibt, deren Schreibanforderungen nicht gewährt wurden (Entscheidungsblock 408), kehrt das Verfahren 400 zurück zu Block 402. Falls alle Schreibanforderungen von den Toren 102 gewährt wurden (Entscheidungsblock 408) endet das Verfahren 400. Wie oben kann die Pufferauswahllogik 104 bestimmen, ob es Schreibanforderungen gibt, die nicht gewährt wurden. Alternativ aktiviert ein Tor 102, deren Schreibanforderung nicht gewährt wurde, erneut die Schreibanforderung an jeden Puffer 106 während des nächsten Zyklus, und das Verfahren 400 schreitet auf dezentralisierte Weise fort, wie es oben beschrieben ist.
  • 4b zeigt ein Verfahren 410 zum Mischen von Schreibdaten einer aktuellen Schreibanforderung mit Schreibdaten, die bereits in einem Puffer 106 gespeichert sind. Das Verfahren 410 ist eine weitere Erläuterung des Gewährungsschrittes von Block 404 und des Speicherschrittes von Block 406 des Verfahrens 400. Das Verfahren 410 beginnt mit einem Bestimmen, ob die Schreibdaten, die einer aktuellen Schreibanforderung zugeordnet sind, einer Adresse zugeordnet sind, die in einer Cachezeile von Schreibdaten enthalten sind, die in einem Puffer 106 gespeichert sind (Block 412). Wie oben erläutert, enthält ein Puffer 106 beispielsweise 16 Adressenplätze. Falls die Adresse der Schreibdaten, die der aktuellen Schreibanforderung zugeordnet sind, in der Cachezeile enthalten ist (d. h. 16 Adressenplätze eines Puffers 106) (Entscheidungsblock 414), dann führt das Verfahren 410 fort, zu bestimmen, dass der Puffer 106 für die aktuelle Schreibanforderung verfügbar ist (Block 416). Falls jedoch die Adresse der Schreibdaten, die der aktuellen Schreibanforderung zugeordnet sind, nicht in der Cachezeile eines Puffers 106 enthalten ist (Entscheidungsblock 414), dann endet das Verfahren 410. Ein Fachmann auf dem Gebiet würde es verstehen, dass der Puffer 106 nach wie vor verfügbar sein könnte für die aktuelle Schreibanforderung, falls beispielsweise das Besetzt-Bit des Puffers 106 deaktiviert ist oder wird.
  • Falls der Puffer 106 für die aktuelle Schreibanforderung verfügbar ist, fährt das Verfahren 410 damit fort, die Schreibdaten der vorhergehenden Schreibanforderung und die Schreibdaten, die der aktuellen Schreibanforderung zugeordnet sind, zu mischen, wodurch resultierende Schreibdaten erzeugt werden (Block 418). Falls mit erneuter Bezugnahme auf 3a beispielsweise die vorhergehende Schreibanforderung das Schreiben von Daten „A”–„D” jeweils an die Adressen 4–7 umfasste, dann werden „A”–„D” an Stellen 4–7 von Puffer_0 gespeichert. Die aktuelle Schreibanforderung 302 enthält Schreibdaten ”E”–”I” jeweils für Adressen 9–13 (d. h. Adressen in der gleichen Cachezeile wie die vorhergehende Schreibanforderung), die Inhalte von Puffer_0 müssen nicht in den Speicher 110 geschrieben werden und auch die aktuelle Schreibanforderung muss nicht ihren eigenen Puffer erhalten. Die resultierenden Inhalte 304 von Puffer_0 umfassen Daten für Adressen 4–7 von der vorhergehenden Schreibanforderung und Daten für Adressen 9–13 von der aktuellen Schreibanforderung 302.
  • Da nur die aktuellsten Daten, die geschrieben wurden, für eine nachfolgende Leseanforderung von Bedeutung sind, können Schreibdaten alternativ an überlappende Adressen innerhalb einer Cachezeile ebenfalls gemischt werden. Falls beispielsweise mit erneuter Bezugnahme auf 3b die vorhergehende Schreibanforderung das Schreiben von Daten „A”–„D” jeweils an die Adressen 4–7 umfasste, dann werden „A”–„D” an Stellen 4–7 von Puffer_0 gespeichert. Die aktuelle Schreibanforderung 312 enthält Schreibdaten „J”–„O” jeweils für Adressen 6–11. Die resultierenden Inhalte 314 von Puffer_0 umfassen Daten zu Adressen 4–5 von der vorhergehenden Schreibanforderung und Daten für Adressen 6–11 von der aktuellen Schreibanforderung 312. Adressen 6–7 der vorhergehenden Schreibdaten wurden überschrieben.
  • Das Verfahren 410 fährt fort mit dem Speichern der resultierenden Schreibdaten (304 oder 314 von oben) in den Puffer 106 (Puffer_0 in diesem Fall) der vorhergehenden Schreibanforderung (Block 420) und das Verfahren 410 endet.
  • Die obige Erörterung soll darstellend sein für die Prinzipien und verschiedenen Ausführungsbeispiele der vorliegenden Erfindung. Zahlreiche Variationen und Modifikationen werden offensichtlich für Fachleute auf diesem Gebiet, sobald die obige Offenbarung vollständig klar ist. Obwohl Adressen in dem Speicher als zwei Byte groß beschrieben sind, könnten die Adressen kleiner oder größer sein (z. B. Ein-Byte-Adressen, Vier-Byte-Adressen). Die folgenden Ansprüche sollen so interpretiert werden, dass dieselben alle solche Variationen und Modifikationen umfassen.

Claims (15)

  1. Eine Speichersteuerung, die folgende Merkmale aufweist: ein oder mehrere Tore, die mit einer Pufferauswahllogik gekoppelt sind; und eine Mehrzahl von Puffer, wobei jeder Puffer konfiguriert ist, um Schreibdaten zu speichern, die einer Schreibanforderung zugeordnet sind, und jeder Puffer mit der Pufferauswahllogik gekoppelt ist; wobei die Pufferauswahllogik konfiguriert ist, um Schreibdaten, die einer Schreibanforderung von zumindest einem der Tore zugeordnet sind, in jedem der Puffer zu speichern, basierend auf einer Priorität der Puffer für jedes der Tore.
  2. Die Speichersteuerung gemäß Anspruch 1, bei der die Pufferauswahllogik konfiguriert ist zum: Empfangen einer Schreibanforderung von einem oder mehreren Toren; Gewähren, für jeden verfügbaren Puffer, der Schreibanforderung, die von dem Tor höchster Priorität des Puffers stammt; und Speichern, für jedes Tor dessen Schreibanforderung gewährt wurde, der Schreibdaten, die der Schreibanforderung zugeordnet sind, in dem Puffer höchster Priorität des Tors, der die Schreibanforderung des Tors gewährt hat; wobei die Pufferauswahllogik ferner konfiguriert ist, um die obigen Schritte zu wiederholen, falls die Pufferauswahllogik die Schreibanforderung von einem oder mehreren Toren nicht gewährt.
  3. Die Speichersteuerung gemäß Anspruch 2, bei der einer der Puffer verfügbar ist, falls der Puffer leer ist.
  4. Die Speichersteuerung gemäß Anspruch 2, bei der: Schreibdaten, die einer vorhergehenden Schreibanforderung zugeordnet sind, in einem Puffer gespeichert werden, wobei die Schreibdaten einer oder mehreren Adressen in einer Cachezeile zugeordnet sind; Schreibdaten, die der Schreibanforderung zugeordnet sind, einer Adresse zugeordnet sind; und die Pufferauswahllogik konfiguriert ist, um zu bestimmen, dass der Puffer für die Schreibanforderung verfügbar ist, falls die Adresse der Schreibdaten, die der Schreibanforderung zugeordnet sind, in der Cachezeile ist.
  5. Die Speichersteuerung gemäß Anspruch 4, bei der die Pufferauswahllogik ferner konfiguriert ist, um die Schreibdaten, die der vorhergehenden Schreibanordnung zugeordnet sind, und die Schreibdaten, die der Schreibanforderung zugeordnet sind, zu mischen, und die resultierenden Schreibdaten in dem Puffer zu speichern, der die Schreibdaten enthält, die der vorhergehenden Schreibanforderung zugeordnet sind.
  6. Die Speichersteuerung gemäß Anspruch 1 oder Anspruch 2, die ferner eine Pufferentscheidungslogik aufweist, die mit der Mehrzahl von Puffer gekoppelt ist, wobei die Pufferentscheidungslogik konfiguriert ist zum: Empfangen einer Leseanforderung von einem Tor; Bestimmen, ob die Leseanforderung Schreibdaten trifft, die in einem der Puffer gespeichert sind; Senden der Inhalte des Puffers, der die Schreibdaten enthält, die die Leseanforderung trifft, an einen Speicher.
  7. Die Speichersteuerung gemäß Anspruch 1 oder Anspruch 2, die ferner eine Pufferauswahllogik aufweist, die mit der Mehrzahl von Puffer gekoppelt ist, wobei die Pufferauswahllogik konfiguriert ist zum: Empfangen einer Leseanforderung von einem Tor; Bestimmen, ob die Leseanforderung Schreibdaten trifft, die in einem der Puffer gespeichert sind; Zurücksenden der Schreibdaten, die die Leseanforderung trifft, an das Tor.
  8. Die Speichersteuerung gemäß Anspruch 1 oder Anspruch 2, die ferner eine Pufferauswahllogik aufweist, die mit der Mehrzahl von Puffer gekoppelt ist, wobei die Pufferauswahllogik konfiguriert ist zum: Empfangen einer Schreibanforderung von einem Tor; Bestimmen, ob die Schreibanforderung Schreibdaten trifft, die in einem der Puffer gespeichert sind; Senden der Inhalte des Puffers, der die Schreibdaten enthält, die die Schreibanforderung trifft, an einen Speicher.
  9. Ein Verfahren, das folgende Schritte aufweist: Empfangen einer oder mehrerer Schreibanforderungen von einem oder mehreren Toren; Gewähren, für jeden verfügbaren Puffer einer Mehrzahl von Puffer, der Schreibanforderung von dem Tor höchster Priorität des Puffers; Speichern, für jedes Tor, dessen Anforderung gewährt wird, der Schreibdaten, die der Schreibanforderung zugeordnet sind, in dem Puffer höchster Priorität des Tors, der die Schreibanforderung des Tors gewährt hat; Wiederholen der obigen Schritte des Empfangens, Gewähren und Speicherns, falls die Schreibanforderungen von einem oder mehreren Toren nicht gewährt werden; wobei die Schreibanforderungen Schreibdaten aufweisen, die einer oder mehreren Adressen zugeordnet sind, die in einer Cachezeile enthalten sind.
  10. Das Verfahren gemäß Anspruch 9, das ferner das Bestimmen aufweist, dass einer der Puffer verfügbar ist, falls der Puffer leer ist.
  11. Das Verfahren gemäß Anspruch 9, das ferner folgende Schritte aufweist: Bestimmen, ob die Schreibdaten, die einer aktuellen Schreibanforderung zugeordnet sind, einer Adresse zugeordnet sind, die in der Cachezeile von Schreibdaten enthalten ist, die in einem Puffer gespeichert sind; Bestimmen, dass der Puffer für die aktuelle Schreibanforderung verfügbar ist, falls die Schreibdaten, die der aktuellen Schreibanforderung zugeordnet sind, der Adresse zugeordnet sind, die in der Cachezeile enthalten ist.
  12. Das Verfahren gemäß Anspruch 11, das ferner folgende Schritte aufweist: Mischen, als Folge dessen, dass die aktuelle Schreibanforderung einer Adresse zugeordnet ist, die in der Cachezeile enthalten ist, der Schreibdaten, die der vorhergehenden Schreibanforderung zugeordnet sind, und der Schreibdaten, die der aktuellen Schreibanforderung zugeordnet sind, wodurch resultierende Schreibdaten erzeugt werden; und Speichern der resultierenden Schreibdaten in dem Puffer, der die Schreibdaten enthält, die der vorhergehenden Schreibanforderung zugeordnet sind.
  13. Das Verfahren gemäß Anspruch 9, das ferner folgende Schritte aufweist: Empfangen einer Leseanforderung von einem Tor; Bestimmen, ob die Leseanforderung Schreibdaten trifft, die in einem der Puffer gespeichert sind; Senden, als eine Folge dessen, dass die Leseanforderung Schreibdaten in einem der Puffer trifft, der Inhalte dieses Puffers an einen Speicher.
  14. Das Verfahren gemäß Anspruch 9, der ferner folgende Schritte aufweist: Empfangen einer Leseanforderung von einem Tor; Bestimmen, ob die Leseanforderung Schreibdaten trifft, die in einem der Puffer gespeichert sind; Zurücksenden, als eine Folge dessen, dass die Leseanforderung Schreibdaten trifft, der Schreibdaten an das Tor.
  15. Das Verfahren gemäß Anspruch 9, das ferner folgende Schritte aufweist: Bestimmen, ob eine der Schreibanforderungen Schreibdaten trifft, die in einem der Puffer gespeichert sind; Senden, als eine Folge dessen, dass die Schreibanforderung Schreibdaten in einem der Puffer trifft, der Inhalte dieses Puffers an einen Speicher.
DE112010005609T 2010-05-28 2010-06-22 Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung Ceased DE112010005609T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34958410P 2010-05-28 2010-05-28
US61/349,584 2010-05-28
PCT/US2010/039477 WO2011149482A1 (en) 2010-05-28 2010-06-22 Storing data in any of a plurality of buffers in a memory controller

Publications (1)

Publication Number Publication Date
DE112010005609T5 true DE112010005609T5 (de) 2013-03-21

Family

ID=45004234

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010005609T Ceased DE112010005609T5 (de) 2010-05-28 2010-06-22 Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung

Country Status (5)

Country Link
US (1) US9213545B2 (de)
CN (1) CN102918515B (de)
DE (1) DE112010005609T5 (de)
GB (1) GB2493654A (de)
WO (1) WO2011149482A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307089B1 (en) * 2011-08-29 2012-11-06 Ariel Inventions, Llc System and method for storing broadcast content in a cloud-based computing environment
US9940247B2 (en) * 2012-06-26 2018-04-10 Advanced Micro Devices, Inc. Concurrent access to cache dirty bits
US9003158B2 (en) 2012-10-19 2015-04-07 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US9009411B2 (en) * 2012-11-20 2015-04-14 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US9158725B2 (en) 2012-11-20 2015-10-13 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US10083035B2 (en) * 2013-07-15 2018-09-25 Texas Instruments Incorporated Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization
US9218282B2 (en) * 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
CN106533976B (zh) * 2016-11-07 2019-12-06 深圳怡化电脑股份有限公司 一种数据包处理方法及装置
CN109213691B (zh) * 2017-06-30 2023-09-01 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546543A (en) * 1993-03-26 1996-08-13 Digital Equipment Corporation Method for assigning priority to receive and transmit requests in response to occupancy of receive and transmit buffers when transmission and reception are in progress
GB2277816B (en) * 1993-05-04 1997-09-03 Motorola Inc Data communication system
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6256716B1 (en) * 1998-12-10 2001-07-03 Sun Microsystems, Inc. Apparatus, system and method for reducing bus contention during consecutive read-write operations
US6587930B1 (en) * 1999-09-23 2003-07-01 International Business Machines Corporation Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US6401175B1 (en) * 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US6622218B2 (en) * 2000-06-10 2003-09-16 Hewlett-Packard Development Company, Lp. Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6681292B2 (en) 2001-08-27 2004-01-20 Intel Corporation Distributed read and write caching implementation for optimized input/output applications
US20030158985A1 (en) * 2002-02-15 2003-08-21 Edward Fried Systems and methods for fair arbitration between multiple request signals
US7206904B2 (en) * 2002-03-20 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for buffering multiple requests from multiple devices to a memory
US7107415B2 (en) 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7167947B2 (en) * 2004-03-15 2007-01-23 Intel Corporation Memory post-write page closing apparatus and method
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7353301B2 (en) 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US7630272B2 (en) * 2007-02-19 2009-12-08 Freescale Semiconductor, Inc. Multiple port memory with prioritized world line driver and method thereof
KR101297563B1 (ko) * 2007-11-15 2013-08-19 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
US8706900B2 (en) * 2008-07-10 2014-04-22 Juniper Networks, Inc. Dynamic storage resources

Also Published As

Publication number Publication date
CN102918515B (zh) 2015-10-14
GB2493654A (en) 2013-02-13
US9213545B2 (en) 2015-12-15
WO2011149482A1 (en) 2011-12-01
CN102918515A (zh) 2013-02-06
GB201218061D0 (en) 2012-11-21
US20130046933A1 (en) 2013-02-21

Similar Documents

Publication Publication Date Title
DE112010005609T5 (de) Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE112006003358B4 (de) Verteilung von Speicherzugriffsanforderungen
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE102008021348A1 (de) Halbleiterspeicher, Speicherzugriffs-Steuersystem und Datenlese-Verfahren
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112005002355T5 (de) Vorrichtung zum Abrufen von Daten in einem Prozessor-Cachespeicher
DE102006036837A1 (de) Datenspeicherverwaltungsverfahren und -system
DE19882975B4 (de) Zugreifen auf eine Nachrichtenaustauscheinheit von einem sekundären Bus aus
DE60009817T2 (de) Gemeinsamen Speicher verteilende Multiprozessorvorrichtung
DE60029167T2 (de) Arbiter und Arbitrierungsverfahren
DE69629331T2 (de) System und Verfahren zur Bereitstellung einer flexiblen Speicherhierarchie
DE112006001542T5 (de) Verfahren, Vorrichtung und System für posted write Buffer für Speicher mit unidirektionaler Vollduplex-Schnittstelle
DE102006009034B3 (de) Verfahren zum Betreiben eines Bussystems sowie Halbleiter-Bauelement, insbesondere Mikroprozessor- bzw. Mikrocontroller
DE102004062211B4 (de) CAN-Kommunikationsmodul
DE3247083A1 (de) Mehrprozessorsystem
EP1308846B1 (de) Datenübertragungseinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

R082 Change of representative

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final