[go: up one dir, main page]

DE102015203202B4 - Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen - Google Patents

Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen Download PDF

Info

Publication number
DE102015203202B4
DE102015203202B4 DE102015203202.7A DE102015203202A DE102015203202B4 DE 102015203202 B4 DE102015203202 B4 DE 102015203202B4 DE 102015203202 A DE102015203202 A DE 102015203202A DE 102015203202 B4 DE102015203202 B4 DE 102015203202B4
Authority
DE
Germany
Prior art keywords
data
memory area
memory
read
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102015203202.7A
Other languages
English (en)
Other versions
DE102015203202A1 (de
Inventor
Qamrul Hasan
Shinsuke Okada
Kiyomatsu SHOUJI
Yuichi Ise
Kai Dieffenbach
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.)
Infineon Technologies LLC
Original Assignee
Infineon Technologies LLC
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 Infineon Technologies LLC filed Critical Infineon Technologies LLC
Publication of DE102015203202A1 publication Critical patent/DE102015203202A1/de
Application granted granted Critical
Publication of DE102015203202B4 publication Critical patent/DE102015203202B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

Computerimplementiertes Verfahren zum Zugreifen auf Daten, das umfasst:Empfangen zweier oder mehrerer Anforderungen bezüglich Daten, die über mindestens einen ersten Speicherbereich (Ma0) und einen zweiten Speicherbereich (Ma1) eines Speichers (108) gespeichert sind, wobei die zwei oder mehreren Anforderungen bezüglich Daten von einer CPU oder einem Host (104) empfangen werden;als Reaktion auf die Feststellung, dass der mindestens eine erste Speicherbereich (Ma0) und eine zweite Speicherbereich (Ma1) aneinander angrenzen,Zusammenführen der empfangenen zwei oder mehr Anforderungen bezüglich Daten zu einer einzelnen Anforderung bezüglich Daten über mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1), und Aktualisieren einer Leselänge, die der einzelnen Anforderung zugeordnet ist, so dass die aktualisierte Leselänge mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1) umfasst;Durchführen (408) eines Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) des Speichers (108) durch mindestens einen Prozessor (106);Durchführen (416) eines kontinuierlichen Lesens von Daten in dem zweiten Speicherbereich (Ma1) des Speichers (108) durch den mindestens einen Prozessor (106) als Reaktion auf die einzige Anforderung und unter Verwendung der aktualisierten Leselänge, wobei der zweite Speicherbereich (Ma1) an den ersten Speicherbereich (Ma0) angrenzt, wobei das kontinuierliche Lesen an einer ersten Grenze des zweiten Speicherbereiches (Ma2) beginnt und nach dem Lesen einer Endadresse des Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) automatisch durchgeführt wird; undSteuern eines Zeitpunkts für die Durchführung des Wrapped-Lesens und eines Zeitpunkts für die Durchführung des kontinuierlichen Lesens unter Verwendung einer Zustandsmaschine (118), die mit dem mindestens einen Prozessor (106) gekoppelt ist.

Description

  • HINTERGRUND
  • Kommerzielle Datenbanksysteme beruhen auf Caching-Techniken zum Verbessern der Leistung. Caches werden häufig implementiert, um einen Speicher zu unterstützen, auf den schnell zugegriffen werden kann, wie z. B. Schreib-/Lesespeicher (random access memory - RAM), im Gegensatz zu einer Speichereinrichtung, bei der der Zugriff länger dauert, wie z. B. einer plattenbasierten Speichereinrichtung. In Caches werden typischerweise häufig verwendete Daten gespeichert und wird die Zeit verringert, die ein Datenbanksystem benötigt, um auf eine Datenseite zuzugreifen. Die Erfindung betrifft das auf ein Wrapped-Lesen folgende kontinuierliche Lesen (im Englischen auch bezeichnet als „wrapped-to-continuous read“) von Daten aus verschiedenen Speicherbereichen.
  • Generell initiiert ein Speichercontroller-Zugriff auf nichtflüchtige Speichervorrichtungen Lese- oder Schreiboperationen durch Aktivierung eines Chipauswahlsignals pro Lese- oder Schreib-Transaktionsanforderung von einem Bus-Master. Die Datensegmente, die aus dem Speicher zu lesen sind und verwendet werden, um eine oder mehrere Cachelines des Cache zu füllen, können über mehr als einen Speicherbereich des Speichers gespeichert werden, was typischerweise das Ausgeben von separaten Lesebefehlen für jedes Datensegment, das in eine zugeordnete Cacheline zu schreiben ist, erforderlich macht. Durch den Bedarf an mehreren an den Speicher zu stellenden Leseanforderungen werden die Latenz und Speicherzugriffszeit erhöht.
  • Weiterhin sind die Offenberungen der US 2005 / 0 268 027 A1 , der US 2012 / 0 230 106 A1 und der US 2015 / 0 046 773 A1 gegebenenfalls hilfreich für das Verständnis der vorliegenden Erfindung. Hierbei betrifft die US 2005 / 0 268 027 A1 einen Datenprozessor, der den Busdurchsatz oder den Datendurchsatz eines externen Speichers verbessert, wenn es häufige kontinuierliche Lesevorgänge mit einer kleineren Datengröße als die Datenbusbreite des externen Speichers gibt. Der Datenprozessor enthält eine Speichersteuereinheit, die in der Lage ist, als Reaktion auf einen Takt einen externen Speicher zu steuern, der mehrere Bänke hat, die einzeln unabhängig steuerbar sind, mehrere Busse, die mit der Speichersteuereinheit verbunden sind, und Schaltungsmodule, die in der Lage sind, Speicherzugriffe zu befehlen, die in Übereinstimmung mit jedem der Busse vorgesehen sind. Die Speichersteuereinheit enthält Bank-Caches, die jeweils den Bänken des externen Speichers entsprechen. Dadurch erhöht der Datenprozessor den Busdurchsatz oder den Datendurchsatz des externen Speichers, da der Datenprozessor die aus dem externen Speicher ausgelesenen Daten vorübergehend in den Bank-Caches speichert und die gespeicherten Daten verwendet, ohne sie ungültig zu machen, wenn ein kontinuierliches Datenlesen mit einer kleineren Datengröße als die Datenbusbreite des externen Speichers durchgeführt wird.
  • Die US 2012 / 0 230 106 A1 offenbart eine Halbleiterspeichervorrichtung mit einem Speicherfeld, das zwei Speicherbänke hat, auf die gleichzeitig zugegriffen werden kann. Eine Wordleitungsauswahlschaltung wählt die Wordleitung entsprechend der Zeilenadressinformation aus, und ein Controller steuert die Wordleitungsauswahlschaltung entsprechend dem empfangenen Befehl. Die Steuerung führt die erste Leseoperation der Wordleitungsauswahlschaltung als Reaktion auf einen ersten Lesebefehl durch und führt die zweite Leseoperation der Wordleitungsauswahlschaltung als Reaktion auf einen zweiten Lesebefehl durch. Der erste Lesevorgang wählt die n-te Wordleitung einer der Speicherbänke aus und wählt die (n+1)-te oder (n-1)-te Wordleitung der anderen Speicherbank aus. Der zweite Lesevorgang wählt die n-te Wordleitung einer der Speicherbänke aus und wählt die n-te Wordleitung der anderen Speicherbank aus.
  • Die US 2015 / 0 046 773 A1 offenbart eine Umgriffsburstlese-Bestimmungseinheit, die bestimmt, ob eine Leseanforderung eine Anforderung für ein Umgriffslesen ist oder nicht. Wenn die Leseanforderung die Anforderung des Umgriffslesens ist, zieht eine Speicheradressen-Umwandlungseinheit mehrere Adressen, die eine Adresse enthalten, in der von der Leseanforderung angeforderte Nutzdaten gespeichert sind, heraus und bezeichnet eine Auslesereihenfolge für Daten von den mehreren herausgezogenen Adressen. Wenn die Leseanforderung die Anforderung für das Umgriffslesen ist, nimmt eine Halteeinheit für erste Daten erste Daten, die von einer Adresse ausgelesen sind, für die eine vorderste Position in der Auslesereihenfolge unter den mehreren Adressen bezeichnet ist, auf und speichert die ersten Daten. Wenn die Leseanforderung die Anforderung für das Umgriffslesen ist, nimmt eine Datenausrichtungseinheit letzte Daten, die von einer Adresse gelesen wurden, für die eine Endposition in der Auslesereihenfolge bezeichnet wurde, auf und zieht Nutzdaten und einen ECC, die miteinander korreliert sind, aus den ersten und den letzten Daten heraus.
  • ZUSAMMENFASSENDER ÜBERBLICK
  • Hier sind System-, Verfahrens- und/oder Computerprogrammprodukt-Ausführungsformen und/oder Kombinationen und Teilkombinationen daraus zum Zugreifen auf Daten aus einer Vielzahl von Speichervorrichtungen vorgesehen. In diesem Sinne betrifft die vorliegende Erfindung ein Computerimplementiertes Verfahren zum Zugreifen auf Daten gemäß Anspruch 1, ein System gemäß Anspruch 7 sowie eine gegenständliche computerlesbare Vorrichtung mit in dieser gespeicherten Anweisungen gemäß Anspruch 13. Vorteilhafte Ausführungsformen können Merkmale abhängiger Ansprüche aufweisen.
  • Weitere Merkmale und Vorteile der Erfindung sowie die Struktur und Operation der verschiedenen Ausführungsformen der Erfindung werden nachstehend mit Bezug auf die beiliegenden Zeichnungen genauer beschrieben. Es sei darauf hingewiesen, dass die Erfindung nicht auf die hier beschriebenen spezifischen Ausführungsformen beschränkt ist. Solche Ausführungsformen werden hier nur zu Veranschaulichungszwecken dargelegt. Weitere Ausführungsformen werden für Fachleute auf dem (den) relevanten Sachgebiet(en) anhand der hier enthaltenen Lehren offensichtlich.
  • Figurenliste
  • Die beiliegenden Zeichnungen sind hierin integriert und bilden Teil der Patentschrift.
    • 1 zeigt ein Blockschaltbild eines Speichersystems, das verschiedene Komponenten eines Speichercontrollers aufweist, gemäß einem Ausführungsbeispiel.
    • 2A zeigt ein Lesen von Daten des Speichers.
    • 2B zeigt ein Lesen von Daten des Speichers, gemäß einem Ausführungsbeispiel.
    • 3A und 3B zeigen ein Lesen von Daten über eine Vielzahl von Speicherbereichen, gemäß Ausführungsbeispielen.
    • 4 zeigt ein Beispiel eines Ablaufdiagramms zum Lesen von Daten aus einer Vielzahl von Speichervorrichtungen, ge- mäß einer Ausführungsform.
    • 5 zeigt ein beispielhaftes Computersystem zum Implementieren von verschiedenen Ausführungsformen.
  • In den Zeichnungen bezeichnen gleiche Bezugszeichen generell identische oder im Wesentlichen gleiche Elemente. Des Weiteren bezeichnen die am weitesten links stehende(n) Ziffer(n) eines Bezugszeichens generell die Zeichnung, in der das Bezugszeichen zum ersten Mal genannt wird.
  • DETAILLIERTE BESCHREIBUNG
  • Es sei darauf hingewiesen, dass die verschiedenen hier beschriebenen Ausführungsformen und die dazugehörigen Figuren beispielhaft dargelegt sind. Somit wird durch eine Bezugnahme auf bestimmte Speicheradressen, Anzahl von Cachelines und Markierungen, die die verschiedenen Komponenten oder erzeugten Signale aufweisen, der Umfang oder Geist der Erfindung nicht eingeschränkt, wie für einen Fachmann auf dem Sachgebiet offensichtlich ist.
  • 1 zeigt ein Blockschaltbild eines beispielhaften Speichersystems 100 gemäß einer Ausführungsform, das einen Speichercontroller 102 aufweist, der Signale zwischen einem Host-CTRL-Block 104 und einer Vielzahl von Speichervorrichtungen 108 empfängt und sendet. Der Host-CTRL-Block 104 kann bei einigen Ausführungsformen ferner Teil des Speichercontrollers 102 sein. Der Host-CTRL-Block 104 weist elektrische Schaltungen und/oder Komponenten auf, die in der Lage sind, eine oder mehrere Anforderungen bezüglich eines Zugriffs auf eine Vielzahl von Speichervorrichtungen 108 über den Host-Bus von einer (nicht gezeigten) Host-CPU zu empfangen. Bei einer weiteren Ausführungsform kann der Host-CTRL-Block 104 von einem Cachespeicher-Controller eine oder mehrere Anforderungen bezüglich eines Zugriffs auf Daten empfangen, mit denen Teile eines Cache gefüllt werden. Der Datenzugriff kann eine oder mehrere Leseanforderungen zum Abrufen von Daten, die in einer oder mehreren der Vielzahl von Speichervorrichtungen gespeichert sind, umfassen, oder der Datenzugriff kann eine oder mehrere Schreibanforderungen zum Speichern von Daten in eine oder mehrere der Vielzahl von Speichervorrichtungen umfassen. Bei einem weiteren Beispiel kann der Zugriff ein Löschen von Daten, die in einer oder mehreren der Vielzahl von Speichervorrichtungen gespeichert sind, umfassen. Der Host-CTRL-Block 104 empfängt die eine oder mehreren Datenanforderungen und liefert ein oder mehrere Datensignale zu dem Speichercontroller 102.
  • Die Datensignale, die zu dem Speichercontroller 102 geliefert werden, können ein wrap_size-Signal, das die Bytegröße der Speicher-Cachelines, auf die zuzugreifen ist, angibt. Zum Beispiel kann die Bytegröße entweder 32 oder 64 Bytes betragen, ohne darauf beschränkt zu sein. Die Datensignale umfassen ferner ein adr_dat-Signal, das die Adressen für die Daten, auf die zuzugreifen ist, aufweist. Das adr_dat-Signal kann Daten aufweisen, die einer Startadresse für die Daten, auf die zuzugreifen ist, und einer Länge der Daten zugehörig sind. Wenn die Anforderung von der CPU eine Schreibanforderung ist, weisen die Datensignale, die zu dem Speichercontroller 102 gesendet werden, ferner ein wdat_dat-Signal auf, das die Daten umfasst, die in den Speicher zu schreiben sind.
  • Der Speichercontroller 102 empfängt bei einer Ausführungsform die verschiedenen Datensignale, die von dem Host-CTRL-Block 104 geliefert werden, und steuert auf angemessene Weise den Zugriff auf die Vielzahl von Speichervorrichtungen 108 über einen Speicherprozessor 106. Der Speichercontroller 102 kann einen Dekodierer 110, eine Zustandsmaschine 118, einen TX-Zähler 114, einen RX-Zähler 116, einen RX-FIFO 120, einen TX-FIFO 122 und einen Prozessor 106 aufweisen. Bei einer Ausführungsform weist der Speichercontroller 102 ein Zusammenführungs-Detektier-Modul 112 auf.
  • Der Dekodierer 110 kann elektrische Schaltungen und/oder Komponenten aufweisen, die in der Lage sind, zweckdienliche Speicher-Adressen- und Längen-Signale sowie rw-Signale zu erzeugen, die anzeigen, ob ein Lesen von Daten oder ein Schreiben von Daten erfolgt. Der Dekodierer 110 kann ferner in der Lage sein, ein Typ-Signal zu erzeugen, das anzeigt, ob das Lesen von Daten eines Speicherbereichs in der Vielzahl von Speichervorrichtungen 108 ein Wrapped-Lesen oder ein kontinuierliches Lesen sein soll. Die Unterschiede zwischen Wrapped-Lesen und kontinuierlichem Lesen werden später mit Bezug auf 2 und 3 genauer beschrieben.
  • Die Zustandsmaschine 118 kann elektrische Schaltungen und/oder Komponenten aufweisen, die in der Lage sind, einen Zugriff von der Vielzahl von Speichervorrichtungen 108 zu dem CPU-Host zu übertragen und den Zeitpunkt, zu dem Daten aus der Vielzahl von Speichervorrichtungen 108 gelesen oder in diese geschrieben werden, zu steuern. Zum Beispiel kann die Zustandsmaschine 118 ein rd_start-Signal zum Beginnen eines Datenlesevorgangs aus der Vielzahl von Speichervorrichtungen 108 oder ein wr_start-Signal zum Beginnen eines Datenschreibvorgangs in die Vielzahl von Speichervorrichtungen 108 erzeugen. Die Zustandsmaschine 118 kann ferner ein adr_rd_en-Signal zurücksenden, wenn sämtliche der angeforderten Daten gelesen (oder geschrieben) worden sind.
  • Der TX-Zähler 114 und der RX-Zähler 116 können elektrische Schaltungen und/oder Komponenten aufweisen, die in der Lage sind, die Länge von Daten, welche in einen vorgegebenen Speicherbereich der Vielzahl von Speichervorrichtungen 108 zu schreiben oder aus diesem zu lesen sind, rückwärtszuzählen. Zum Beispiel kann der TX-Zähler 114 ein tx_end-Signal erzeugen, wenn die gezählte Länge der Daten, die in einen vorgegebenen Speicherbereich zu schreiben sind, null erreicht. Bei einem weiteren Beispiel kann der RX-Zähler 116 ein rx_end-Signal erzeugen, wenn die gezählte Länge der Daten, die aus einem vorgegebenen Speicherbereich zu lesen sind, null erreicht. Des Weiteren kann der RX-Zähler 116 ferner ein rx_en-Signal empfangen, das anzeigt, wann aus dem vorgegebenen Speicherbereich des Speichers gelesen wird.
  • Der RX-FIFO 120 und der TX-FIFO 122 können elektrische Schaltungen und/oder Komponenten aufweisen, die in der Lage sind, Daten zu puffern, welche zwischen der Vielzahl von Speichervorrichtungen 108 und dem Host-CTRL-Block 104 transportiert werden. Zum Beispiel kann der RX-FIFO 120 Daten (dq_in) empfangen, die aus der Vielzahl von Speichervorrichtungen 108 zu lesen sind, und einen temporären Puffer der Daten vor dem Senden an den Host-CTRL-Block 104 als rxfifo_dout bereitstellen. Auf im Wesentlichen gleiche Weise kann der TX-FIFO 122 zu schreibende Daten (wdat_dat) von dem Host-CTRL-Block 104 empfangen und einen temporären Puffer der Daten vor dem Senden an den Prozessor 106 als dq_out bereitstellen. Bei einem Beispiel bewirkt das Puffern der Daten eine Verzögerung beim Senden der Daten oder verändert eine Signalcharakteristik der Daten.
  • Der Prozessor 106 kann derart ausgelegt sein, dass er zumindest die verschiedenen Komponenten des Speichercontrollers 102 steuert. Zum Beispiel empfängt der Prozessor 106 verschiedenen Signale, die aus den Komponenten des Speichercontrollers 102 ausgegeben werden, und kommuniziert wiederum über einen Speicherbus mit der Vielzahl von Speichervorrichtungen 108. Der Prozessor 106 kann ferner derart ausgelegt sein, dass er Daten, die aus der Vielzahl von Speichervorrichtungen gelesen werden, als dq_in liefert. Bei einer Ausführungsform führt der Prozessor 106 bestimmte Busprotokolle zwischen der Vielzahl von Speichervorrichtungen 108 und dem Speichercontroller 102 aus.
  • Bei einer Ausführungsform weist das Zusammenführungs-Detektier-Modul 112 elektrische Schaltungen und/oder Komponenten auf, die in der Lage sind zu bestimmen, wann über eine Vielzahl von Speicherbereichen, die aneinander angrenzen, auf Daten zugegriffen wird. Das Zusammenführungs-Detektier-Modul 112 kann adr_dat aus den empfangenen einen oder mehreren Leseanforderungen verwenden, um zu bestimmen, ob die angeforderten Daten über Speicherbereiche mit aneinander angrenzenden Adressen in der Vielzahl von Speichervorrichtungen 108 vorhanden sind. Bei einem Beispiel aktiviert dann, wenn die Daten, auf die zuzugreifen ist, an zwei Speicheradressen, die aneinander angrenzen, vorhanden sind, das Zusammenführungs-Detektier-Modul 112 das Zusammenführungs-Signal bei Beendigung des Lesens von Daten aus einem ersten Speicherbereich. Die Aktivierung des Zusammenführungs-Signals bewirkt, dass der RX-Zähler 116 mit der Länge des zweiten Speicherbereichs aktualisiert wird, und die Leseoperation geht in dem zweiten Speicherbereich weiter. Mehrere aneinander angrenzende Speicherbereiche der Vielzahl von Speichervorrichtungen 108 können auf diese Weise gelesen werden. Bei einer Ausführungsform erfolgt dieser Vorgang des Lesens von Daten zwischen einer Vielzahl von aneinander angrenzenden Speicherbereichen, ohne dass es erforderlich ist, dass der Speichercontroller 102 mehrere Leseanforderungen bezüglich der Daten durchführt. Zum Beispiel werden zwar mehrere Leseanforderungen aus dem Host-CTRL-Block 104 von dem Speichercontroller 102 empfangen, um über mehrere Speicherbereiche auf Daten zuzugreifen, das Zusammenführungs-Detektier-Modul 112 ist jedoch derart ausgelegt, dass es diese mehreren Leseanforderungen zu einer einzelnen Leseanforderung bezüglich der Daten, die von den Komponenten des Speichercontrollers 102 ausgeführt wird, zusammenführt. Durch ein Verringern der Anzahl von Leseanforderungen wird die Latenz beim Zugreifen auf die Daten in der Vielzahl von Speichervorrichtungen 108 verringert. Bei einem weiteren Beispiel ist das Zusammenführungs-Detektier-Modul 112 derart ausgelegt, dass es die mehreren Leseanforderungen zu zwei Leseanforderungen zusammenführt: eine Leseanforderung zum Lesen eines ersten Speicherbereichs unter Anwendung eines Wrapped-Lesens und die weitere Leseanforderung zum Lesen jedes weiteren angrenzenden Speicherbereichs unter Anwendung eines kontinuierlichen Lesens. Die Unterschiede zwischen Wrapped-Lesen und kontinuierlichem Lesen werden nachstehend mit Bezug auf 2 und 3 genauer beschrieben.
  • 2A zeigt ein Verfahren zum Lesen von Daten über mehr als einen Speicherbereich. Jeder Speicherbereich kann durch eine Wrap-Grenze 201 abgetrennt sein. Bei einer Ausführungsform enthält jeder Speicherbereich Daten, die in eine zugeordnete Cacheline eines Speichercache zu schreiben sind. Bei diesem Beispiel beginnen die Daten, auf die zuzugreifen ist, bei Adresse C in einem ersten Speicherbereich MAO und erstrecken sich bis zu Adresse 16 in einem zweiten Speicherbereich MA1 (die Adressen sind im Hexadezimalformat angegeben). Wenn Daten von der Adresse C von MAO zu der Adresse 16 von MA1 gelesen werden, wird beginnend bei der Adresse C auf die Daten zugegriffen (im Anschluss an eine Verzögerung aufgrund des Empfangens der Anforderung zum Lesen der Daten) und vorwärts weitergelesen, bis eine Wrap-Grenze 201b erreicht ist. Jede Wrap-Grenze 201a-c kann einen Anfang oder ein Ende eines vorgegebenen Speicherbereichs bilden. Ferner kann die Wrap-Grenze 201b sowohl als Ende eines ersten Speicherbereichs (MAO) als auch als Anfang eines angrenzenden zweiten Speicherbereichs (MA1) dienen. Jeder der schwarzen Punkte kann den Anfang eines neuen Zugriffs auf Lesedaten darstellen. Der Beginn eines Lesens von Daten irgendwo in einem Speicherbereich ist als unausgerichtetes Lesen bekannt, während gerichtetes Lesen an einer Wrap-Grenze beginnt.
  • Sobald die Wrap-Grenze 201b erreicht ist, werden Daten beginnend an der Wrap-Grenze 201a von MAO gelesen. Dies ist als Wrapped-Lesen von Daten bekannt. Sobald das Wrapped-Lesen von MAO beendet ist, wird ein Chipauswahlsignal deaktiviert und muss neu aktiviert werden, um ein Lesen in dem nächsten Speicherbereich MA1 beginnend an der Wrap-Grenze 201b zu starten. Dieser Prozess zusammen mit anderen Operationen, die von dem Speichercontroller durchgeführt werden, um das Lesen von Daten in dem nächsten Speicherbereich MA1 zu initialisieren, bewirkt eine Verzögerung, wie in 2A gezeigt ist. Sobald die Adresse zum Lesen der Daten korrekt initialisiert worden ist, werden Daten in MA1 beginnend an der Wrap-Grenze 201b und weiter zu der Wrap-Grenze 201c gelesen. Jede Leseoperation von MAO und MA1 wird als Wrapped-Lesen angesehen, wobei das Wrapped-Lesen von MAO unausgerichtet ist und das Wrapped-Lesen von MA1 ausgerichtet ist.
  • 2B zeigt ein Verfahren zum Lesen von Daten über mehr als einen Speicherbereich gemäß einer Ausführungsform. Die Daten, auf die zuzugreifen ist, beginnen bei Adresse C in dem Speicherbereich MAO und erstrecken sich zu der Adresse 16 in dem Speicherbereich MA1. Jeder Speicherbereich MAO und MA1 kann 32 Bytes oder 64 Bytes Daten aufweisen. Andere Datengrößen sind ebenfalls möglich. Bei einer Ausführungsform enthält jeder Speicherbereich Daten, die in eine zugeordnete Cacheline eines Cache geschrieben werden.
  • Bei einer Ausführungsform erfolgt ein Wrapped-Lesen beginnend bei der Adresse C von MAO und geht zurück zu der Wrap-Grenze 201a, wenn die Wrap-Grenze 201b erreicht ist. Wenn dann sämtliche Daten von MAO gelesen sind, werden die Daten beginnend bei der Wrap-Grenze 201b und kontinuierlich weiter zu der Wrap-Grenze 201c automatisch gelesen. Auf diese Weise werden sämtliche Daten von MAO bei einem kontinuierlichen Lesen beginnend an seiner Wrap-Grenze 201b und endend an seiner Wrap-Grenze 201c gelesen. Die Daten werden bei einer Ausführungsform zwischen den beiden Speicherbereichen MAO und MA1 ohne die in 2A gezeigte Verzögerung gelesen.
  • Gemäß 1 kann das Zusammenführungs-Detektier-Modul 112 detektieren, dass die Daten, auf die zuzugreifen ist, über zwei aneinander angrenzende Speicherbereiche (MAO und MA1 von 2B) liegen. Bei einem Beispiel führt das Zusammenführungs-Detektier-Modul 12 die zwei empfangenen Leseanforderungen (bezüglich Daten von MAO und MA1) zu einer einzelnen Leseanforderung zusammen. Die einzelne Leseanforderung aktualisiert bei einer Ausführungsform die Länge der zu lesenden Daten, damit diese sich über beide Speicherbereiche erstrecken, wobei es nicht erforderlich ist, dass zwei separate Leseoperationen von dem Speichercontroller 102 durchgeführt werden. Somit gibt es im Wesentlichen keine Verzögerung zwischen dem Lesen von Daten aus MAO und dem Lesen von Daten aus MA1, wie in 2B gezeigt ist. Bei einem Beispiel wartet das Zusammenführungs-Detektier-Modul 112 nicht, bis sämtliche Daten aus MAO gelesen sind, um die eine oder die mehreren Leseanforderungen in eine einzelne Leseanforderung bezüglich Daten über MAO und MA1 zusammenzuführen.
  • Das kontinuierliche Lesen von Daten kann sich bei einer Ausführungsform zu mehr als einem Speicherbereich über MAO hinaus erstrecken. 3A und 3B zeigen Beispiele, bei denen bei einigen Ausführungsformen Daten über drei Speicherbereiche zu lesen sind. In 3A ist immer noch eine Verzögerung zwischen dem Lesen von Daten von MAO und MA1 gezeigt, es gibt jedoch bei einer Ausführungsform keine Verzögerung zwischen dem Lesen der Daten von weiteren angrenzenden Speicherbereichen (z. B. MA1 zu Speicherbereich MA2). Das in 3A dargestellte Szenario kann eintreten, wenn das Zusammenführungs-Detektier-Modul 112 verwendet wird, um mehrere Leseanforderungen zu zwei Leseanforderungen zusammenzuführen, und zwar eine für den ersten Speicherbereich MAO und die andere zum Lesen von weiteren benachbarten Speicherbereichen. Dies kann mit besonderen Speicherstrukturen durchgeführt werden, die nach dem Durchführen eines Wrapped-Lesens des aktuellen Speicherbereichs nicht mit dem Lesen in dem nächsten Speicherbereich beginnen können. 3B zeigt ein Szenario, bei dem bei einer Ausführungsform ein Speicher verwendet wird, der in der Lage ist, im Anschluss an ein Wrapped-Lesen eines vorgegebenen Speicherbereichs unverzüglich und automatisch an der nächsten Wrap-Grenze zu lesen.
  • Sowohl in 3A als auch 3B beginnen die Daten, auf die zuzugreifen ist, bei der Adresse C des Speicherbereichs MAO und erstrecken sich zu der Adresse 2A des Speicherbereichs MA2. Ein Wrapped-Lesen erfolgt in MAO beginnend bei der Adresse C und geht zurück zu einer Wrap-Grenze 301b. Sobald das Wrapped-Lesen beendet ist und zu der Adresse B zurückgekehrt ist, beginnt bei einer Ausführungsform ein kontinuierliches Lesen des nächsten angrenzenden Speicherbereichs MA1 an der Wrap-Grenze 301b. Das kontinuierliche Lesen beginnt nach einer Verzögerung und einer neuen Zugriffsanforderung, wie in 3A gezeigt ist, beginnt jedoch fast sofort, wie in 3B gezeigt ist. Da bei einer Ausführungsform die Daten, auf die zuzugreifen ist, über MA1 hinausgehen, geht dasselbe kontinuierliche Lesen ebenfalls über eine Wrap-Grenze 301c hinaus, und es erfolgt ein Lesen der Daten von MA2.
  • Gemäß 1 kann das Zusammenführungs-Detektier-Modul 112 detektieren, wann ein kontinuierliches Lesen über mehrere aneinander angrenzende Speicherbereiche nach dem Wrapped-Lesen des ersten Speicherbereichs erforderlich ist. Bei einem weiteren Beispiel detektiert das Zusammenführungs-Detektier-Modul 112, wann nach dem Empfangen der mehreren Lesebefehle und vor dem Lesen von Daten aus den Speicherbereichen mehrere Lesebefehle für aneinander angrenzende Speicherbereiche zu einem oder zwei Lesebefehlen zusammengeführt werden können. Bei einer Ausführungsform führt das Zusammenführungs-Detektier-Modul 112 die empfangenen Lesebefehle zu einem einzelnen Lesebefehl zusammen, der das Wrapped-Lesen des ersten Speicherbereichs durchführt, gefolgt von dem kontinuierlichen Lesen des einen oder der mehreren angrenzenden Speicherbereiche (wie in 3B dargestellt ist). Bei einer weiteren Ausführungsform führt das Zusammenführungs-Detektier-Modul 112 die empfangenen Lesebefehle zu einem ersten Lesebefehl zum Durchführen eines Wrapped-Lesens der ersten Cacheline und einem zweiten Lesebefehl zum Durchführen des kontinuierlichen Lesens des einen oder der mehreren aneinander angrenzenden Speicherbereiche zusammen (wie in 3A dargestellt ist).
  • 4 zeigt ein beispielhaftes Verfahren 400 zum Lesen von Daten über eine Vielzahl von Speicherbereichen gemäß einer Ausführungsform. Bei einem Beispiel können die verschiedenen Schritte des Verfahrens 400 von den Komponenten durchgeführt werden, die in dem Speichercontroller 102 von 1 dargestellt sind. Es versteht sich, dass andere Schritte außer den dargestellten ebenfalls durchgeführt werden können.
  • In Block 402 befindet sich der Speichercontroller im Ruhezustand und wartet auf einen Befehl.
  • In Block 404 prüft der Speichercontroller, ob eine oder mehrere Leseanforderungen bezüglich Daten empfangen worden sind. Wenn dies nicht der Fall ist, wird zum Warten auf einen Befehl in Block 402 weitergegangen. Wenn eine oder mehrere Leseanforderungen empfangen werden, geht das Verfahren 400 zu Block 406 weiter. Bei einem Beispiel betrifft jede empfangene Leseanforderung ein Wrapped-Lesen eines vorgegebenen Speicherbereichs.
  • In Block 406 wird ein Chipauswahl- (chip select - CS-) Signal aktiviert und werden Daten zum Lesen aus einer Vielzahl von Speichervorrichtungen 108 vorbereitet. Diese Vorbereitung kann das Aktivieren von verschiedenen Signalen in dem Speichercontroller 102 umfassen, wie zuvor mit Bezug auf 1 beschrieben worden ist. Bei einer Ausführungsform kann das Zusammenführungs-Detektier-Modul 112 in dem Speichercontroller 102 die eine oder mehreren Anforderungen bezüglich Daten entweder zu einer einzelnen Anforderung bezüglich Daten oder zwei Anforderungen bezüglich Daten zusammenführen, wenn die angeforderten Daten über aneinander angrenzende Speicherbereiche in der Vielzahl von Speichervorrichtungen 108 liegen.
  • In Block 408 wird bei einer Ausführungsform ein Wrapped-Lesen von Daten in einem ersten Speicherbereich durchgeführt. Das Wrapped-Lesen kann an einer ersten Speicheradresse der Daten, auf die zuzugreifen ist, beginnen. Das Wrapped-Lesen kann dann zu einer zweiten Wrap-Grenze des ersten Speicherbereichs weitergehen, und das Lesen aus einer ersten Wrap-Grenze des ersten Speicherbereichs kann fortgeführt werden.
  • Bei Block 410 erfolgt bei einer Ausführungsform eine Entscheidung in Abhängigkeit davon, ob Daten weiter aus einem angrenzenden Speicherbereich zu lesen sind. Das Bestimmen kann durch das Zusammenführungs-Detektier-Modul 112 nach dem Durchführen des Wrapped Lesens erfolgen, das in Block 408 beschrieben ist, oder das Bestimmen kann durch das Zusammenführungs-Detektier-Modul 112 nach dem Empfangen der einen oder mehreren Leseanforderungen erfolgen, das in Block 404 beschrieben ist. Wenn der nächste zu lesende Speicherbereich kein angrenzender ist, dann geht das Verfahren 400 zu Block 412 weiter, wo das Chipauswahl-(CS-) Signal deaktiviert wird. Das Verfahren 400 kehrt dann in einen Ruhezustand in Block 402 zurück, um auf eine weitere Leseanforderung zu warten.
  • Wenn jedoch bei einer Ausführungsform der nächste zu lesende Speicherbereich ein angrenzender ist, wie in Block 410 bestimmt wird, dann geht das Verfahren 400 zu Bock 414 weiter. In Block 414 wird eine Länge des nächsten Speicherbereichs, auf den zuzugreifen ist, zum Beispiel von einem Zähler aktualisiert. Bei einer Ausführungsform bezeichnet die Länge jedes Bit von Daten, auf die zuzugreifen ist, in dem nächsten Speicherbereich, da sämtliche Daten in dem nächsten Speicherbereich gelesen werden. Die Länge kann auch aktualisiert werden, um die Daten von mehr als einem angrenzenden Speicherbereich, der zu lesen ist, zu integrieren. Wenn zum Beispiel Leseanforderungen für drei weitere Speicherbereiche, die aneinander angrenzen, empfangen werden, dann kann die Länge einmal aktualisiert werden, um das Lesen aller drei Speicherbereiche zu integrieren. Bei einer weiteren Ausführungsform wird nach dem Lesen eines aktuellen Speicherbereichs die Länge für den nächsten zu lesenden Speicherbereich aktualisiert.
  • In Block 416 wird bei einer Ausführungsform ein kontinuierliches Lesen des nächsten Speicherbereichs durchgeführt. Das kontinuierliche Lesen kann an einer ersten Wrap-Grenze des Speicherbereichs, auf den zugegriffen wird, beginnen und an einer zweiten Wrap-Grenze des Speicherbereichs, auf den zugegriffen wird, enden. Das kontinuierliche Lesen kann ein ausgerichtetes Lesen der Daten in dem Speicherbereich sein. Bei einer Ausführungsform wird beim kontinuierlichen Lesen auf den gesamten Speicherbereich zugegriffen, selbst wenn die angeforderten Daten an einer Adresse in dem Speicherbereich enden. Sobald der Speicherbereich gelesen ist, kehrt bei einer Ausführungsform das Verfahren 400 zu Block 410 zurück, um zu bestimmen, ob die angeforderten Daten in weiteren angrenzenden Speicherbereichen liegen.
  • Bei einer weiteren Ausführungsform werden beim kontinuierlichen Lesen in Block 416 sämtliche angrenzenden Speicherbereiche, die die angeforderten Daten halten, und nicht nur ein Speicherbereich auf einmal gelesen. In dieser Situation gibt es nach dem Lesen sämtlicher angrenzenden Speicherbereiche keine weiteren aufeinanderfolgenden Speicherbereiche, auf die zugegriffen wird, und das Verfahren 400 geht zu Block 412 weiter.
  • Beispielhaftes Computersystem
  • Es können verschiedene Ausführungsformen implementiert werden, bei denen zum Beispiel ein oder mehrere bekannte Computersysteme, wie z. B. das in 5 gezeigte Computersystem 500, verwendet werden. Das Computersystem 500 kann jeder bekannte Computer sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen, wie z. B. Computer, die von International Business Machines, Apple, Sun, HP, Dell, Sony, Toshiba etc. erhältlich sind.
  • Das Computersystem 500 weist einen oder mehrere Prozessoren (die auch als zentrale Verarbeitungseinheiten oder CPUs bezeichnet werden), wie z. B. einen Prozessor 504, auf. Der Prozessor 504 ist mit einer Kommunikationsinfrastruktur oder -bus 506 verbunden.
  • Ein oder mehrere Prozessoren 504 können jeweils eine Grafikverarbeitungseinheit (graphics processing unit - GPU) sein. Bei einer Ausführungsform ist eine GPU ein Prozessor, der eine spezialisierte elektronische Schaltung ist, welche derart ausgelegt ist, dass sie mathematisch intensive Anwendungen auf elektronischen Vorrichtungen schnell verarbeitet. Die GPU kann eine hochparallele Struktur aufweisen, die für eine parallele Verarbeitung von großen Datenblöcken, wie z. B. mathematisch intensive Daten, die Computergrafikanwendungen, Bildern und Videos gemeinsam sind, effizient ist.
  • Das Computersystem 500 weist ferner Benutzer-Eingangs-/Ausgangs-Vorrichtung(en) 503 auf, wie z. B. Monitore, Tastaturen, Zeigervorrichtungen etc., die über Benutzer-Eingangs-/Ausgangs-Schnittstelle(n) 502 mit der Kommunikationsinfrastruktur 506 kommunizieren.
  • Das Computersystem 500 weist ferner einen Haupt- oder Primärspeicher 508 auf, wie z. B. einen Schreib-/Lesespeicher (RAM). Der Hauptspeicher 508 kann ferner eine oder mehrere Cache-Ebenen aufweisen. In dem Hauptspeicher 508 sind eine Steuerlogik (d. h. Computersoftware) und/oder Daten gespeichert.
  • Das Computersystem 500 kann ferner eine oder mehrere sekundäre Speichervorrichtungen oder Speicher 510 aufweisen. Der Sekundärspeicher 510 kann zum Beispiel ein Festplattenlaufwerk 512 und/oder eine Wechselspeichervorrichtung oder -laufwerk 514 umfassen. Das Wechselspeicherlaufwerk 514 kann ein Floppy-Disk-Laufwerk, ein Magnetbandlaufwerk, ein Kompaktdiskettenlaufwerk, eine Vorrichtung zur optischen Speicherung, eine Bandsicherungsvorrichtung und/oder jede andere Speichervorrichtung/-laufwerk sein.
  • Das Wechselspeicherlaufwerk 514 kann mit einer Wechselspeichereinheit 518 interagieren. Die Wechselspeichereinheit 518 weist eine computerverwendbare oder -lesbare Speichervorrichtung auf, in der eine Computersoftware (Steuerlogik) und/oder Daten gespeichert sind. Die Wechselspeichereinheit 518 kann eine Floppy Disk, ein Magnetband, eine Kompaktdiskette, DVD, Diskette zur optischen Speicherung und/oder jede andere Computer-Datenspeichervorrichtung sein. Das Wechselspeicherlaufwerk 514 liest aus und/oder schreibt auf bekannte Weise in die Wechselspeichereinheit 518.
  • Bei einem Ausführungsbeispiel kann der Sekundärspeicher 510 andere Einrichtungen, Mittel oder andere Vorgehensweisen zum Ermöglichen eines Zugriffs auf Computerprogramme und/oder andere Anweisungen und/oder Daten durch das Computersystem 500 aufweisen. Solche Einrichtungen, Mittel oder anderen Vorgehensweisen können zum Beispiel eine Wechselspeichereinheit 522 und eine Schnittstelle 520 aufweisen. Beispiele für die Wechselspeichereinheit 522 und die Schnittstelle 520 können ein Programm-Steckmodul und eine Steckmodul-Schnittstelle (wie z. B. diejenige, die in Videospielvorrichtungen verwendet wird), einen Wechselspeicherchip (wie z. B. EPROM oder PROM) und eine dazugehörige Buchse, einen Speicherstick und USB-Port, eine Speicherkarte und einen dazugehörigen Speicherkartenschlitz und/oder jede andere Wechselspeichereinheit und dazugehörige Schnittstelle umfassen.
  • Das Computersystem 500 kann ferner eine Kommunikations- oder Netzschnittstelle 524 aufweisen. Die Kommunikationsschnittstelle 524 ermöglicht es dem Computersystem 500, mit jeder Kombination aus entfernten Vorrichtungen, entfernten Netzen, entfernten Entitäten etc. (die einzeln oder kollektiv mit dem Bezugszeichen 528 bezeichnet sind) zu kommunizieren und interagieren. Zum Beispiel kann es die Kommunikationsschnittstelle 524 dem Computersystem 500 ermöglichen, über einen Kommunikationsweg 526, der drahtlos und/oder verdrahtet sein kann und der jede Kombination aus LANs, WANs, dem Internet etc. aufweisen kann, mit den entfernten Vorrichtungen 528 zu kommunizieren. Die Steuerlogik und/oder Datenkönnen über den Kommunikationsweg 526 zu und aus dem Computersystem 500 gesendet werden.
  • Bei einer Ausführungsform wird eine reale Herstelleinrichtung oder -artikel, die/der ein reales computerverwendbares oder -lesbares Medium aufweist, auf dem eine Steuerlogik (Software) gespeichert ist, hier ebenfalls als Computerprogrammprodukt oder Programmspeichervorrichtung bezeichnet. Dies umfasst, ist jedoch nicht beschränkt auf das Computersystem 500, den Hauptspeicher 508, Sekundärspeicher 510 und die Wechselspeichereinheiten 518 und 522 sowie reale Herstellartikel, die jede Kombination aus dem Vorhergehenden enthalten. Eine solche Steuerlogik bewirkt bei Ausführung durch eine oder mehrere Datenverarbeitungsvorrichtungen (wie z. B. das Computersystem 500), dass solche Datenverarbeitungsvorrichtungen wie hier beschrieben arbeiten.
  • Auf der Basis der in dieser Offenbarung enthaltenen Lehren ist es für Fachleute auf dem (den) relevanten Sachgebiet(en) offensichtlich, wie die Erfindung unter Verwendung von anderen Datenverarbeitungsvorrichtungen, Computersystemen und/oder Computerarchitekturen als den in 5 gezeigten herzustellen und zu verwenden ist. Insbesondere können Ausführungsformen mit anderen Software-, Hardware- und/oder Betriebssystem-Implementierungen als den hier beschriebenen arbeiten.

Claims (13)

  1. Computerimplementiertes Verfahren zum Zugreifen auf Daten, das umfasst: Empfangen zweier oder mehrerer Anforderungen bezüglich Daten, die über mindestens einen ersten Speicherbereich (Ma0) und einen zweiten Speicherbereich (Ma1) eines Speichers (108) gespeichert sind, wobei die zwei oder mehreren Anforderungen bezüglich Daten von einer CPU oder einem Host (104) empfangen werden; als Reaktion auf die Feststellung, dass der mindestens eine erste Speicherbereich (Ma0) und eine zweite Speicherbereich (Ma1) aneinander angrenzen, Zusammenführen der empfangenen zwei oder mehr Anforderungen bezüglich Daten zu einer einzelnen Anforderung bezüglich Daten über mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1), und Aktualisieren einer Leselänge, die der einzelnen Anforderung zugeordnet ist, so dass die aktualisierte Leselänge mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1) umfasst; Durchführen (408) eines Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) des Speichers (108) durch mindestens einen Prozessor (106); Durchführen (416) eines kontinuierlichen Lesens von Daten in dem zweiten Speicherbereich (Ma1) des Speichers (108) durch den mindestens einen Prozessor (106) als Reaktion auf die einzige Anforderung und unter Verwendung der aktualisierten Leselänge, wobei der zweite Speicherbereich (Ma1) an den ersten Speicherbereich (Ma0) angrenzt, wobei das kontinuierliche Lesen an einer ersten Grenze des zweiten Speicherbereiches (Ma2) beginnt und nach dem Lesen einer Endadresse des Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) automatisch durchgeführt wird; und Steuern eines Zeitpunkts für die Durchführung des Wrapped-Lesens und eines Zeitpunkts für die Durchführung des kontinuierlichen Lesens unter Verwendung einer Zustandsmaschine (118), die mit dem mindestens einen Prozessor (106) gekoppelt ist.
  2. Computerimplementiertes Verfahren nach Anspruch 1, das ferner umfasst: Fortführen des kontinuierlichen Lesens von Daten in einem oder mehreren weiteren angrenzenden Speicherbereichen des Speichers (108), wobei das kontinuierliche Lesen in einem der einen oder mehreren weiteren angrenzenden Speicherbereiche nach dem kontinuierlichen Lesen von Daten in einem vorangehenden angrenzenden Speicherbereich automatisch erfolgt.
  3. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, das ferner umfasst: Bestimmen, ob die angeforderten Daten über eine Vielzahl von aneinander angrenzenden Speicherbereichen des Speichers (108) gespeichert sind.
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, bei dem das Empfangen das Empfangen von zwei oder mehreren Anforderungen bezüglich Daten von einem Cachespeicher- Controller umfasst.
  5. Computerimplementiertes Verfahren nach Anspruch 4, das ferner ein Senden zumindest der angeforderten Daten durch den mindestens einen Prozessor (106) zu dem Cachespeicher-Controller umfasst.
  6. Computerimplementiertes Verfahren nach Anspruch 5, bei dem die Daten in dem ersten Speicherbereich (Ma0) in eine erste Cacheline eines Cache, das dem Cachespeicher-Controller zugeordnet ist, geschrieben werden und die Daten in dem zweiten Speicherbereich (Ma1) in eine zweite Cacheline eines Cache geschrieben werden.
  7. System (100), das aufweist: eine Vielzahl von Speichervorrichtungen (108); einen Speichercontroller (102), umfassend einen Dekodierer (110), der derart ausgelegt ist, dass er: zwei oder mehrere Anforderungen bezüglich Daten, die über mindestens einen ersten Speicherbereich (Ma0) und einen zweiten Speicherbereich (Ma1) der Vielzahl von Speichervorrichtungen (108) gespeichert sind, empfängt, wobei die zwei oder mehreren Anforderungen bezüglich Daten von einer CPU oder einem Host (104) empfangen werden; ein Zusammenführungs-Detektier-Modul (112), um festzustellen, dass der mindestens eine erste Speicherbereich (Ma0) und eine zweite Speicherbereich (Ma1) aneinander angrenzen, und als Reaktion darauf die empfangenen zwei oder mehr Anforderungen bezüglich Daten zu einer einzelnen Anforderung bezüglich Daten über mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1) zusammenzuführen, und um eine Leselänge, die der einzelnen Anforderung zugeordnet ist, zu aktualisieren, so dass die aktualisierte Leselänge mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1) umfasst, einen Prozessor (106), der dazu konfiguriert ist, ein Wrapped-Lesen von Daten in dem ersten Speicherbereich (Ma0) durchzuführen, und als Reaktion auf die einzelne Anforderung und unter Verwendung der aktualisierten Leselänge ein kontinuierliches Lesen von Daten in dem zweiten Speicherbereich (Ma1) durchzuführen, wobei das kontinuierliche Lesen an einer ersten Grenze des zweiten Speicherbereichs (Ma1) beginnt, wobei nach dem Lesen einer Endadresse des Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) der Prozessor (106) automatisch das kontinuierliche Lesen von Daten an der ersten Grenze des zweiten Speicherbereichs (Ma1) beginnt.
  8. System (100) nach Anspruch 7, bei dem der Prozessor (106) ferner derart ausgelegt ist, dass er ein kontinuierliches Lesen von Daten in einem oder mehreren weiteren angrenzenden Speicherbereichen durchführt.
  9. System (100) nach Anspruch 7 oder 8, bei dem der Speichercontroller (102) derart ausgelegt ist, dass er die zwei oder mehreren Anforderungen bezüglich Daten von einem Cachespeicher-Controller empfängt.
  10. System (100) nach Anspruch 9, bei dem der Speichercontroller (102) ferner derart ausgelegt ist, dass er zumindest die angeforderten Daten zu dem Cachespeicher-Controller sendet.
  11. System (100) nach Anspruch 10, bei dem der Cachespeicher-Controller derart ausgelegt ist, dass er Daten in dem ersten Speicherbereich (Ma0) in eine erste Cacheline eines Cache schreibt und Daten in dem zweiten Speicherbereich (Ma1) in eine zweite Cacheline des Cache schreibt.
  12. System (100) nach Anspruch 7, bei dem der Speichercontroller (102) ferner einen Zähler (114) aufweist, der derart ausgelegt ist, dass er eine Länge der Leselänge rückwärtszählt.
  13. Gegenständliche computerlesbare Vorrichtung mit in dieser gespeicherten Anweisungen, die dann, wenn sie von mindestens einer Rechnervorrichtung ausgeführt werden, bewirken, dass die mindestens eine Rechnervorrichtung Operationen durchführt, die umfassen: Empfangen (404) zweier oder mehrerer Anforderungen bezüglich Daten, die über mindestens einen ersten Speicherbereich (Ma0) und einen zweiten Speicherbereich (Ma1) eines Speichers (108) gespeichert sind, wobei die zwei oder mehreren Anforderungen bezüglich Daten von einer CPU oder einem Host empfangen werden; Zusammenführen der empfangenen zwei oder mehr Anforderungen bezüglich Daten zu einer einzelnen Anforderung bezüglich Daten über mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1), und Aktualisieren einer Leselänge, so dass die aktualisierte Leselänge mindestens den ersten Speicherbereich (Ma0) und den zweiten Speicherbereich (Ma1) umfasst; Basierend auf der einzelnen Anforderung, Durchführen (408) eines Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) des Speichers (108); und Durchführen (416) eines kontinuierlichen Lesens von Daten in dem zweiten Speicherbereich (Ma1) des Speichers (108) unter Verwendung der aktualisierten Leselänge, wobei der zweite Speicherbereich (Ma1) an den ersten Speicherbereich (Ma0) angrenzt, wobei das kontinuierliche Lesen an einer ersten Grenze des zweiten Speicherbereiches (Ma1) beginnt und nach dem Lesen einer Endadresse des Wrapped-Lesens von Daten in dem ersten Speicherbereich (Ma0) automatisch durchgeführt wird, und Steuern eines Zeitpunkts für die Durchführung des Wrapped-Lesens und eines Zeitpunkts für die Durchführung des kontinuierlichen Lesens unter Verwendung einer Zustandsmaschine (118).
DE102015203202.7A 2014-02-24 2015-02-23 Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen Active DE102015203202B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/188,048 US9792049B2 (en) 2014-02-24 2014-02-24 Memory subsystem with wrapped-to-continuous read
US14/188,048 2014-02-24

Publications (2)

Publication Number Publication Date
DE102015203202A1 DE102015203202A1 (de) 2015-08-27
DE102015203202B4 true DE102015203202B4 (de) 2023-04-06

Family

ID=52821917

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015203202.7A Active DE102015203202B4 (de) 2014-02-24 2015-02-23 Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen

Country Status (7)

Country Link
US (2) US9792049B2 (de)
JP (1) JP6523707B2 (de)
KR (1) KR102180975B1 (de)
CN (1) CN104866432A (de)
DE (1) DE102015203202B4 (de)
GB (1) GB2525713B (de)
TW (1) TWI655642B (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150093004A (ko) * 2014-02-06 2015-08-17 삼성전자주식회사 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법
CN106716383B (zh) 2014-09-15 2021-01-22 爱德斯托科技有限公司 存储器装置和控制存储器装置的方法、存储器系统
US10761778B2 (en) * 2018-10-31 2020-09-01 International Business Machines Corporation Aggregation of read requests requesting common data objects into a common read operation in a data storage system for improving throughput
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
US11249913B2 (en) * 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands
US11886369B1 (en) * 2023-09-14 2024-01-30 Qualcomm Incorporated Apparatus and methods for burst communications within die architectures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268027A1 (en) 2004-05-28 2005-12-01 Renesas Technology Corp. Data processor
US20120230106A1 (en) 2011-03-09 2012-09-13 Masaru Yano Semiconductor memory devices, reading program and method for memory devices
US20150046773A1 (en) 2012-06-28 2015-02-12 Mitsubishi Electric Corporation Read request processing apparatus

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425062B1 (en) * 1999-09-14 2002-07-23 Intel Corporation Controlling burst sequence in synchronous memories
WO2001037098A1 (fr) * 1999-11-16 2001-05-25 Hitachi, Ltd Dispositif et systeme informatique
US6477082B2 (en) * 2000-12-29 2002-11-05 Micron Technology, Inc. Burst access memory with zero wait states
US6779074B2 (en) * 2001-07-13 2004-08-17 Micron Technology, Inc. Memory device having different burst order addressing for read and write operations
ITMI20041910A1 (it) * 2004-10-08 2005-01-08 Atmel Corp Architettura di decodifica a colonne migliorata per memorie flash
JP2006172240A (ja) * 2004-12-17 2006-06-29 Nec Corp データ処理システム及びそのメモリ制御方法
US7376762B2 (en) * 2005-10-31 2008-05-20 Sigmatel, Inc. Systems and methods for direct memory access
JP2008059565A (ja) * 2006-08-01 2008-03-13 Nec Electronics Corp バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268027A1 (en) 2004-05-28 2005-12-01 Renesas Technology Corp. Data processor
US20120230106A1 (en) 2011-03-09 2012-09-13 Masaru Yano Semiconductor memory devices, reading program and method for memory devices
US20150046773A1 (en) 2012-06-28 2015-02-12 Mitsubishi Electric Corporation Read request processing apparatus

Also Published As

Publication number Publication date
US20150242129A1 (en) 2015-08-27
JP6523707B2 (ja) 2019-06-05
US20180081564A1 (en) 2018-03-22
TWI655642B (zh) 2019-04-01
DE102015203202A1 (de) 2015-08-27
CN104866432A (zh) 2015-08-26
US9792049B2 (en) 2017-10-17
TW201535412A (zh) 2015-09-16
KR102180975B1 (ko) 2020-11-19
KR20150100565A (ko) 2015-09-02
GB2525713B (en) 2016-08-10
US10331359B2 (en) 2019-06-25
GB2525713A (en) 2015-11-04
GB201502853D0 (en) 2015-04-08
JP2015158910A (ja) 2015-09-03

Similar Documents

Publication Publication Date Title
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
DE102015203202B4 (de) Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen
DE3909896C2 (de)
DE102018105943B4 (de) Datenspeichersystem und Verfahren zur kontextbewussten dynamischen Befehlsplanung für ein Datenspeichersystem
DE69807101T2 (de) Segmentiertes dma mit xor-puffer für speicheruntersysteme
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE69215538T2 (de) Verfahren zur verbesserung von partiellen streifenschreib-operationen einer speicherplattenanordnung
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE10147592A1 (de) System und Verfahren zum Vorsehen geichzeitiger Zeilen- und Spaltenbefehle
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102018119881B4 (de) Verwaltung einer DRAM-Bankaktivierung
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE102021123716A1 (de) Speicher-Controller, System umfassend denselben und Betriebsverfahren einer Speichervorrichtung
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102019111133A1 (de) Speichereinrichtung, die eine Menge von kommunizierten Daten abhängig von einer Aussetzhäufigkeit einer Operation drosselt
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE102012107577A1 (de) Multiport-Speicherelement sowie Halbleitervorrichtung und System mit demselben
DE102024127197A1 (de) Asynchrone freigabeoperationen in einem multiprozessorsystem
DE69033416T2 (de) Hauptspeicherkarten mit Einzelbit-Setz- und Rücksetz-Funktion

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MURGITROYD & COMPANY, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INFINEON TECHNOLOGIES LLC, SAN JOSE, US

Free format text: FORMER OWNER: CYPRESS SEMICONDUCTOR CORP. (N.D.GES.D.STAATES DELAWARE), SAN JOSE, CALIF., US

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102015017465

Country of ref document: DE

R020 Patent grant now final
R082 Change of representative