DE112012007102T5 - Speichersteuervorrichtung - Google Patents

Speichersteuervorrichtung Download PDF

Info

Publication number
DE112012007102T5
DE112012007102T5 DE112012007102.6T DE112012007102T DE112012007102T5 DE 112012007102 T5 DE112012007102 T5 DE 112012007102T5 DE 112012007102 T DE112012007102 T DE 112012007102T DE 112012007102 T5 DE112012007102 T5 DE 112012007102T5
Authority
DE
Germany
Prior art keywords
data
memory
read
address
cache
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.)
Granted
Application number
DE112012007102.6T
Other languages
English (en)
Other versions
DE112012007102B4 (de
Inventor
Hiroshi Atobe
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE112012007102T5 publication Critical patent/DE112012007102T5/de
Application granted granted Critical
Publication of DE112012007102B4 publication Critical patent/DE112012007102B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein interner Zwischenspeicher A 109 speichert Daten von einem Speicher 105 zwischen. Eine Speicheradresskonvertierungseinheit 106 empfängt als eine Eingabe eine Leseanfrage von einer Anfragequelle 101. Eine Trefferbestimmungseinheit 113 bestimmt, ob Daten einer von zwei oder mehreren ausgelesenen Kandidatenadressen, in denen von der Leseanfrage angefragte Nutzdaten und ein korrespondierender ECC gespeichert sind, zwischengespeichert wurden oder zwischengespeichert werden in dem internen Zwischenspeicher A 109 oder nicht. Wenn Daten einer der Adressen in dem internen Zwischenspeicher A 109 zwischengespeichert wurden oder zwischengespeichert werden, gibt eine Befehlsausgabe-Intervallsteuereinheit 114 an den Speicher 105 einen partiellen Lesebefehl aus, um anzuweisen, Daten von einer anderen Adresse, als der Adresse der Daten, die in dem internen Zwischenspeicher 109 zwischengespeichert wurden oder zwischengespeichert werden, aus den ausgelesenen Kandidatenadressen auszulesen, nachdem eine vorbestimmte Verzögerungszeit abgelaufen ist.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf eine Technik zum Verarbeiten einer Leseanfrage zum Anfragen, Nutzdaten von einem Speicher auszulesen.
  • Bisheriger Stand der Technik
  • Um die Verlässlichkeit eines Speichers zu verbessern, kann ein ECC (Error Correcting Code) oder ein Paritätsbit zu Nutzdaten hinzugefügt werden.
  • Normalerweise wird ein Speicherelement in einer Breitenrichtung (ein horizontaler ECC oder eine horizontale Parität) spezifisch für den hinzugefügten ECC oder Paritätsbit hinzugefügt.
  • Zum Beispiel kann ein Speicher mit einer speziellen x9-Bit-Konfiguration anstatt eines Speichers mit einer x8-Bit-Konfiguration verwendet werden. Jedoch ist es oft der Fall, dass ein Hinzufügen eines Speicherelements oder eine Verwendung eines speziellen Speichers einen Kostennachteil aufweist und zu Schwierigkeiten in einer Verfügbarkeit von Teilen führt.
  • Als eine der Lösungen kann ein vertikaler ECC oder eine vertikale Parität (soll nachstehend als der vertikale ECC beschrieben werden) verwendet werden, gemäß der der ECC in einer Tiefenrichtung anstatt der Breitenrichtung gespeichert wird, und somit die Notwendigkeit zum Erweitern des Speichers in der Breitenrichtung beseitigt werden.
  • Zum Beispiel nehme man an, dass der ECC gemäß eines vertikalen ECC-Verfahrens zu einer Speicherkonfiguration wie in 1 veranschaulicht hinzugefügt wird.
  • In 1 werden vier Nutzdatenstücke, wobei jedes eine Datenbreite von einem Byte aufweist, in einer Adresse gespeichert.
  • In der Speicherkonfiguration von 1, wenn ein Byte des ECC für jede vier Bytes von Nutzdaten gemäß dem vertikalen ECC hinzugefügt wird, resultiert dies in einer Anordnung von Daten, wie in 2 veranschaulicht ist.
  • Indem von sukzessiven Adressen in dem Speicher unter Verwendung des vertikalen ECCs gelesen wird, werden Daten von einem zweiten Lesen von dem Speicher (zweite Daten) auch in einem folgenden Lesen von einer nachfolgenden Adresse verwendet, wenn der ECC enthalten ist.
  • In einem Fall, in dem eine Anfragequelle von Leseanfragen die Nutzdaten in der Anordnung von Daten von 1 verwaltet, und der Speicher die Nutzdaten und den ECC in der Anordnung von Daten von 2 verwaltet, werden, wenn es eine Leseanfrage für die Daten von Adresse 0000h von 1 (D0 bis D3) gibt, die folgenden Datenlesungen durchgeführt.
  • Die Daten von Adresse 0000h (D0 bis D3) und dann die Daten von Adresse 0004h (ECC0 bis D6) von 2 werden von dem Speicher ausgelesen. Fehlerkorrektur wird unter Verwendung von ECC0 auf D0 bis D3, die ausgelesen wurden, durchgeführt, und fehlerkorrigierte D0 bis D3 werden an die Anfragequelle ausgegeben.
  • Weiterhin werden, wenn es eine Leseanfrage für die Daten einer Adresse 0004h von 1 (D4 bis D7) gibt, die folgenden Datenlesungen durchgeführt.
  • Die Daten von Adresse 0004h (ECC0 bis D6) und dann die Daten von Adresse 0008h (D7 bis D9) von 2 werden von dem Speicher ausgelesen. Fehlerkorrektur wird unter Verwendung von ECC1 auf D4 bis D7, die ausgelesen worden sind, durchgeführt, und fehlerkorrigierte D4 bis D7 werden an die Anfragequelle ausgegeben.
  • Wie oben beschrieben, müssen, wenn die zu lesenden Adressen aufeinanderfolgend sind, die zweiten Daten (in dem obigen Beispiel die Daten von Adresse 0004h von 2) zweimal von dem Speicher gelesen werden.
  • Jedoch ist es oft der Fall, dass ein Speicherzugriff einen Mehraufwand mit sich bringt (z. B. in DRAM (Dynamic Random Access Memory) erzeugt ein Arbeiten auf der gleichen Speicherbank einen Zeitraum einer Nichterreichbarkeit). Zweimaliges Lesen der zweiten Daten verursacht einen Leistungsverlust und ist daher ineffizient.
  • Elektrische Leistung wird bei jedem Speicherzugriff verbraucht, so dass ein zweimaliges Lesen der zweiten Daten in einem erhöhten Verbrauch elektrischer Leistung resultiert.
  • Als eine Technik für eine Datenübertragung, die ein Paritätsprüfungsergebnis einbezieht, gibt es eine Technik, in der eine Bussteuerung in aufeinanderfolgenden Zugriffen implementiert ist, so dass die nächste Leseanfrage nicht angenommen wird, bevor ein Paritätsprüfungsergebnis ausgegeben wird, und somit die Leseanfrage in Wartestellung bis zu einer Datenübertragung nach einer Paritätsprüfung setzt (z. B. Patentliteratur 1).
  • Zitatliste
  • Patentliteratur
    • Patentliteratur 1: JPH 5-233471 A
  • Zusammenfassung der Erfindung
  • Technisches Problem
  • Das Verfahren von Patentliteratur 1 weist ein Problem auf, welches ist, dass eine Vollendung einer einzelnen Transaktion von einer Leseanfrage zu einer Rückgabe von gelesenen Daten unbedingt gewährleistet werden kann, aber das Verfahren eine Datenübertragung zu einem Pipeline-Speicher nicht unterstützen kann.
  • Die vorliegende Erfindung ist vor dem Hintergrund der oben beschriebenen Umstände konzipiert. Die vorliegende Erfindung beabsichtigt hauptsächlich, ein überflüssiges Auslesen von Daten zu vermeiden, einen begrenzten Speicherbereich effizient zu nutzen und einen Verbrauch an elektrischer Leistung bei einem Speicherzugriff zu reduzieren, sogar, wenn ein Pipeline-Speicher verwendet wird.
  • Lösung des Problems
  • Eine Speichersteuervorrichtung gemäß der vorliegenden Erfindung ist eine Vorrichtung, die mit einem Pipeline-Verfahren eine Leseanfrage zum Anfragen, Nutzdaten von einem Speicher mit einer Vielzahl von Adressen, wobei jede Daten einer vorbestimmten Datenbreite speichert, auszulesen, verarbeitet, wobei in dem Speicher Fehlerkorrekturdaten für jede Nutzdaten der Datenbreite eingestellt werden, wobei Nutzdaten der Datenbreite und Fehlerkorrekturdaten, die miteinander korreliert sind, über zwei benachbarte Adressen gespeichert werden, und Daten in Adresseinheiten ausgelesen werden, und wobei die Speichersteuervorrichtung beinhaltet:
    einen Cache-Bereich, in dem Daten, die von dem Speicher ausgelesen worden sind, zwischengespeichert werden;
    eine Leseanfrageeingabeeinheit, die als eine Eingabe eine Leseanfrage zum Anfragen, Nutzdaten eines ganzzahligen Vielfachen der Datenbreite auszulesen, empfängt;
    eine Cache-Bestimmungseinheit, die bestimmt, ob Daten einer von zwei oder mehreren ausgelesenen Kandidatenadressen in dem Cache-Bereich zwischengespeichert worden sind oder zwischengespeichert werden oder nicht, wobei die zwei oder mehreren ausgelesenen Kandidatenadressen Adressen sind, in welchen angefragte Nutzdaten, welche Nutzdaten sind, die von der Leseanfrage angefragt werden, die als eine Eingabe von der Leseanfrageeingabeeinheit empfangen wird, und korrespondierende Fehlerkorrekturdaten, welche Korrekturdaten sind, die zur Fehlerkorrektur der angefragten Nutzdaten verwendet werden, gespeichert sind; und
    eine Befehlsausgabeeinheit, die, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten von einer der zwei oder mehreren ausgelesenen Kandidatenadressen im Cache-Bereich zwischengespeichert worden sind oder zwischengespeichert werden, an den Speicher einen partiellen Lesebefehl ausgibt, um anzuweisen, Daten von einer anderen Adresse als der Cache-Adresse auszulesen, nachdem eine vorbestimmte Verzögerungszeit von einem Zeitpunkt an abgelaufen ist, an dem der partielle Lesebefehl an den Speicher ausgegeben werden kann, wobei die Cache-Adresse eine Adresse der Daten, welche in dem Cache-Bereich zwischengespeichert worden sind oder zwischengespeichert werden, von den zwei oder mehreren ausgelesenen Kandidatenadressen ist.
  • Vorteilhafte Effekte der Erfindung
  • Gemäß der vorliegenden Erfindung wird ein partieller Lesebefehl, um anzuweisen, Daten von einer anderen Adresse als einer Cache-Adresse von ausgelesenen Kandidatenadressen auszulesen, an einen Speicher ausgegeben, nachdem eine vorbestimmte Verzögerungszeit von dem Zeitpunkt an abgelaufen ist, an dem der partielle Lesebefehl an den Speicher ausgegeben werden kann.
  • Durch Verwenden von Daten in einem Cache-Bereich als Daten der Cache-Adresse ist es möglich, ein überflüssiges Auslesen von Daten zu vermeiden, einen begrenzten Speicherbereich effizient zu nutzen und einen Verbrauch von elektrischer Leistung während eines Speicherzugriffs zu reduzieren.
  • Durch Ausgeben des partiellen Lesebefehls an den Speicher, nachdem die Verzögerungszeit abgelaufen ist, ist es möglich, eine Kollision zwischen einer Eingabe von Daten der Cache-Adresse von dem Cache-Bereich und einer Eingabe von Daten der anderen Adresse als der Cache-Adresse von dem Speicher zu vermeiden, sogar wenn ein Pipeline-Speicher verwendet wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Schema, das ein Beispiel einer Anordnung von Daten ohne einen ECC gemäß einem ersten Ausführungsbeispiel veranschaulicht;
  • 2 ist ein Schema, das ein Beispiel einer Anordnung von Daten mit einem vertikalen ECC, der gemäß dem ersten Ausführungsbeispiel hinzugefügt wird, veranschaulicht;
  • 3 ist ein Schema, das eine Speichersteuervorrichtung, eine Anfragequelle und einen Speicher gemäß dem ersten Ausführungsbeispiel veranschaulicht;
  • 4 ist ein Flussdiagramm, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem ersten Ausführungsbeispiel veranschaulicht;
  • 5 ist ein Schema, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem ersten Ausführungsbeispiel veranschaulicht;
  • 6 ist ein Schema, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem ersten Ausführungsbeispiel veranschaulicht;
  • 7 ist ein Schema, das eine Speichersteuervorrichtung, eine Anfragequelle und einen Speicher gemäß einem zweiten Ausführungsbeispiel veranschaulicht;
  • 8 ist ein Flussdiagramm, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem zweiten Ausführungsbeispiel veranschaulicht;
  • 9 ist ein Flussdiagramm, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem zweiten Ausführungsbeispiel veranschaulicht;
  • 10 ist ein Schema, das eine Speichersteuervorrichtung, eine Anfragequelle und einen Speicher gemäß einem dritten Ausführungsbeispiel veranschaulicht;
  • 11 ist ein Flussdiagramm, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem dritten Ausführungsbeispiel veranschaulicht;
  • 12 ist ein Zeittabellenschema, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem zweiten Ausführungsbeispiel veranschaulicht;
  • 13 ist ein Zeittabellenschema, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem zweiten Ausführungsbeispiel veranschaulicht; und
  • 14 ist ein Zeittabellenschema, das ein Beispiel der Arbeitsweise der Speichersteuervorrichtung gemäß dem dritten Ausführungsbeispiel veranschaulicht.
  • Beschreibung von Ausführungsbeispielen
  • In einem ersten Ausführungsbeispiel wird eine Speichersteuervorrichtung beschrieben, die einen Nicht-Pipeline-Speicher unterstützt. In einem zweiten Ausführungsbeispiel und einem dritten Ausführungsbeispiel werden Speichersteuervorrichtungen beschrieben, die einen Pipeline-Speicher unterstützen.
  • In der Speichersteuervorrichtung gemäß dem ersten Ausführungsbeispiel werden eine Letztmaliger-Wert-Halteeinheit und ein interner Zwischenspeicher eingesetzt, um ein überflüssiges Lesen von zweiten Daten zu vermeiden. In der Speichersteuervorrichtung gemäß dem zweiten und dritten Ausführungsbeispiel, die den Pipeline-Speicher unterstützen, werden ebenfalls eine Letztmaliger-Wert-Halteeinheit und ein interner Speicher eingesetzt, um ein überflüssiges Lesen von zweiten Daten zu vermeiden. Die Letztmaliger-Wert-Halteeinheit und der interne Zwischenspeicher in jeder Speichersteuervorrichtung werden in der gleichen Weise in dem ersten bis dritten Ausführungsbeispiel verwendet. Zur Erleichterung des Verständnisses wird daher die Arbeitsweise der Speichersteuervorrichtung, die ein Nicht-Pipeline-Verfahren einsetzt, in dem ersten Ausführungsbeispiel beschrieben.
  • Basierend auf der Arbeitsweise gemäß dem ersten Ausführungsbeispiel wird die für ein Pipeline-Verfahren einzigartige Arbeitsweise in dem zweiten und dritten Ausführungsbeispiel beschrieben.
  • Die Beziehung, welche dem ersten bis dritten Ausführungsbeispiel gemein ist, zwischen Adressen und Daten in einer Anfragequelle und auf dem Speicher wird beschrieben.
  • Zum Beispiel gibt es Daten (D0 bis D3f) mit einer Adressbreite und einer Datenbreite von 4 Bytes, wie in 1 veranschaulicht ist.
  • 2 veranschaulicht eine Speicheranordnung eines vertikalen ECC, wo ein Byte des ECC für jede 4 Bytes hinzugefügt wird.
  • In dieser Anordnung folgt Daten der ECC. Jedoch ist dies ein Beispiel, und es wird nur gefordert, dass der ECC so angeordnet ist, dass die Daten und der ECC in zwei benachbarten Linien platziert sind.
  • Zum Beispiel kann „EEC0” vor Nutzdaten „D0” platziert werden.
  • Daten, die der gleichen Adresse zugewiesen sind, sind erweiterbar. Zum Beispiel kann die Datenbreite derart erweitert werden, dass D0 bis D3, ECC0 und D4 bis D6 einer Adresse 0000h zugewiesen werden, und D7, ECC1, D8 bis Db, ECC2 und Dc der nächsten Adresse 0008h zugewiesen werden.
  • Dieser Fall ist zulässig, da einige der Nutzdaten und der ECC über zwei benachbarte Adressen miteinander korreliert bleiben.
  • Erstes Ausführungsbeispiel
  • 3 veranschaulicht eine Speichersteuervorrichtung 100, eine Anfragequelle 101 und einen Speicher 105 gemäß dem ersten Ausführungsbeispiel.
  • In 3 gibt die Anfragequelle 101 eine Lese-/Schreib-Anfrage an den Speicher 105 aus.
  • Die folgende Beschreibung wird sich nur auf einen Fall richten, in dem die Anfragequelle 101 eine Leseanfrage zum Anfragen, Nutzdaten von dem Speicher 105 auszulesen, ausgibt.
  • Die Anfragequelle 101 ist zum Beispiel eine CPU (Central Processing Unit).
  • Die Anfragequelle 101 erkennt eine Anordnung der Nutzdaten in z. B. in einem in 1 veranschaulichten Format.
  • In dem Speicher 105 sind die Nutzdaten und ein ECC, welcher Fehlerkorrekturdaten sind, z. B. in einem in 2 veranschaulichten Format angeordnet.
  • Daten werden von dem Speicher 105 in Adresseinheiten ausgelesen.
  • Der Speicher 105 ist ein Speicher, der von der Speichersteuervorrichtung 100 gesteuert wird.
  • Die Speichersteuervorrichtung 100 setzt sich aus einer Speicheradresskonvertierungseinheit 106, einem internen Speicher A 109, einer Internen-Zwischenspeicher-Verwaltungseinheit 107, einer Interner-Zwischenspeicher-Informationsspeichereinheit 106, einer Trefferbestimmungseinheit 113, einer Letztmaliger-Wert-Halteeinheit 104, einer Datenauswahleinheit 108, einer Datenabgleichseinheit 103 und einer ECC-Korrektureinheit 102 zusammen.
  • Jede Komponente der Speichersteuervorrichtung 100 ist Hardware, wie z. B. ein Element, ein Gerät und ein Schaltkreis.
  • Jede Komponente der Speichersteuervorrichtung 100 ist z. B. ein Halbleiterschaltkreis in einem Chipsatz.
  • Zum Beispiel können die Speicheradresskonvertierungseinheit 106, die Interner-Zwischenspeicher-Verwaltungseinheit 107, die Interner-Zwischenspeicher-Informationsspeichereinheit 112, die Datenauswahleinheit 108, die Datenabgleichseinheit 103 und die ECC-Korrektureinheit 102 unter Verwendung eines Programms implementiert sein.
  • Die Speicheradresskonvertierungseinheit 106 empfängt als eine Eingabe eine Leseanfrage von der Anfragequelle 101.
  • Die Speicheradresskonvertierungseinheit 106 konvertiert eine Adresse der eingegebenen Leseanfrage in eine Adresse auf dem Speicher 105, wo ein vertikaler ECC angeordnet ist. Zum Beispiel führt, wenn die Anfragequelle 101 eine Leseanfrage für die Daten von Adresse 0000h von 1 (D1 bis D3) ausgibt, die Speicheradresskonvertierungseinheit 106 eine Adresskonvertierung in die Daten von Adresse 0000h (D0 bis D3) und die Daten von Adresse 0004h (ECC0 bis D6) von 2 durch.
  • Die Adressen nach Adresskonvertierung durch die Speicheradresskonvertierungseinheit 106 werden mit ausgelesenen Kandidatenadressen (in dem obigen Beispiel sind Adresse 0000h und Adresse 0004h von 2 die ausgelesenen Kandidatenadressen) bezeichnet.
  • Die durch eine Leseanfrage von der Anfragequelle 101 angefragten Nutzdaten werden mit angefragten Nutzdaten bezeichnet (in dem obigen Beispiel sind D0 bis D3 die angefragten Nutzdaten).
  • Der FCC, der für eine Fehlerkorrektur der angefragten Nutzdaten verwendet wird, wird mit korrespondierenden Fehlerkorrekturdaten oder korrespondierendem FCC bezeichnet (in dem obigen Beispiel sind ECC0 die korrespondierenden Fehlerkorrekturdaten).
  • Weiter gibt die Speicheradresskonvertierungseinheit 106 an den Speicher 105 einen Lesebefehl aus, um ein Datenlesen anzuweisen, basierend auf einem Ergebnis einer Adresskonvertierung und einem Ergebnis einer Bestimmung durch die Trefferbestimmungseinheit 113.
  • In der vorliegenden Beschreibung werden Informationen, welche die Speicheradresskonvertierungseinheit 106 als eine Eingabe von der Anfragequelle 101 empfängt, mit einer Leseanfrage bezeichnet, und Informationen, welche die Speicheradresskonvertierungseinheit 106 an den Speicher 105 ausgibt, wird als ein Lesebefehl bezeichnet.
  • Wenn ein Treffer in der Trefferbestimmungseinheit 113 bestimmt wird, gibt die Speicheradresskonvertierungseinheit 106 einen partiellen Lesebefehl an den Speicher 105 aus.
  • Der partielle Lesebefehl ist ein Befehl, um anzuweisen Daten von einer anderen Adresse als einer Adresse, welche in dem internen Zwischenspeicher A 109 zwischengespeichert worden ist (soll als eine Cache-Adresse bezeichnet werden), von den ausgelesenen Kandidatenadressen auszulesen.
  • Wenn eine Verfehlung in der Trefferbestimmungseinheit 113 bestimmt wird, gibt die Speicheradresskonvertierungseinheit 106 einen Gesamtbereichslesebefehl an den Speicher 105 aus.
  • Der Gesamtbereichslesebefehl ist ein Befehl, um anzuweisen, Daten von dem gesamten Bereich der ausgelesenen Kandidatenadressen auszulesen.
  • Die Speicheradresskonvertierungseinheit 106 entspricht einem Beispiel einer Leseanfrageeingabeeinheit und einer Befehlsausgabeeinheit.
  • Der interne Zwischenspeicher A 109 speichert Daten, die von dem Speicher 105 durch einen vorhergehenden Lesebefehl gelesen werden.
  • Der interne Zwischenspeicher A 109 ist ein Beispiel eines Cache-Bereichs.
  • In 1 ist nur ein interner Zwischenspeicher veranschaulicht, aber eine Vielzahl von internen Zwischenspeichern kann angeordnet werden.
  • Die Interner-Zwischenspeicher-Verwaltungseinheit 107 verwaltet den internen Zwischenspeicher A 109.
  • Insbesondere wählt die Interner-Zwischenspeicher-Verwaltungseinheit 107 Daten aus, welche in dem internen Zwischenspeicher A 109 gespeichert werden sollen, von Daten, die von dem Speicher 105 gelesen werden, und speichert die ausgewählten Daten in dem internen Zwischenspeicher A 109.
  • Wenn Daten, die weder die angefragten Nutzdaten noch der korrespondierende ECC sind, in den Daten am Ende (sollen als Enddaten bezeichnet werden) der Daten enthalten sind, die von dem Speicher 105 in Erwiderung zu einem Lesebefehl ausgelesen werden, der durch die Speicheradresskonvertierungseinheit 106 ausgegeben wird, speichert die Interner-Zwischenspeicher-Verwaltungseinheit 107 diese Enddaten in dem internen Zwischenspeicher A 109. Zum Beispiel führt, wenn die Anfragequelle 101 eine Leseanfrage für die Daten von Adresse 0000h (D0 bis D3) von 1 ausgibt, die Speicheradresskonvertierungseinheit 106 eine Adresskonvertierung in die Daten von Adresse 0000h (D0 bis D3) und die Daten von Adresse 0004h (ECC0 bis D6) von 2 durch.
  • Falls die Daten von Adresse 0000h (D0 bis D3) nicht in dem internen Zwischenspeicher A 109 gespeichert sind, wird eine Verfehlung bestimmt und ein Gesamtbereichslesebefehl, um anzuweisen, die Daten von Adresse 0000h und die Daten von Adresse 0004h auszulesen, wird ausgegeben.
  • ECC0 bis D6 sind in den Enddaten (Adresse 0004h) enthalten, die von dem Speicher 105 in Erwiderung auf diesen Gesamtspeicherlesebefehl gelesen werden.
  • ECC0 ist der korrespondierende ECC, aber D4 bis D6 sind nicht die angefragten Nutzdaten.
  • Daher speichert die Interner-Zwischenspeicher-Verwaltungseinheit 107 die Daten von Adresse 0004h (ECC0 bis D6) in dem internen Zwischenspeicher A 109.
  • Wenn die Anfragequelle 101 eine Leseanfrage für die Daten von Adresse 001Ch von 1 (D1c bis D1f) ausgibt, führt die Speicheradresskonvertierungseinheit 106 eine Adresskonvertierung in die Daten von Adresse 0020h (D1a bis D1c) und die Daten von Adresse 0024h (D1d bis ECC7) von 2 durch.
  • Falls die Daten von Adresse 0020h (D1a bis D1c) nicht in dem internen Zwischenspeicher A 109 gespeichert sind, wird eine Verfehlung bestimmt und ein Gesamtbereichslesebefehl, um anzuweisen, die Daten von Adresse 0020h und die Daten von Adresse 0024h zu lesen, ausgegeben.
  • D1d bis ECC7 sind in den Enddaten (Adresse 0024h), die von dem Speicher 105 in Erwiderung auf diesen Gesamtbereichslesebefehl gelesen werden, enthalten.
  • D1d bis D1f sind die angefragten Nutzdaten, und ECC7 ist der korrespondierende ECC.
  • Daher speichert die Interner-Zwischenspeicher-Verwaltungseinheit 107 nicht die Daten von Adresse 0024h (D1d bis EDD7) in dem internen Zwischenspeicher A 109.
  • Die Interner-Zwischenspeicher-Verwaltungseinheit 107 entspricht einem Beispiel einer Cache-Verwaltungseinheit.
  • Die Trefferbestimmungseinheit 113 bestimmt, ob Daten eines Teils der ausgelesenen Kandidatenadressen, die durch die Speicheradresskonvertierungseinheit 106 erhalten werden, in dem internen Zwischenspeicher A 109 zwischengespeichert worden sind oder nicht.
  • Falls Daten eines Teils der ausgelesenen Kandidatenadressen in dem internen Zwischenspeicher A 109 gespeichert worden sind, wird ein Treffer bestimmt. Falls nicht zwischengespeichert, wird eine Verfehlung bestimmt.
  • Die Trefferbestimmungseinheit 113 berechnet eine sukzessive Adresse basierend auf einer „Interner-Zwischenspeicher-A-Adresse” und einer „Distanzinformation” in der Interner-Zwischenspeicher-Informations-speichereinheit 112, und bestimmt, ob die Daten in dem internen Zwischenspeicher A 109 zwischengespeichert sind oder nicht.
  • Falls ein Treffer bestimmt wird, gibt die Trefferbestimmungseinheit 113 ein Treffersignal an die Speicheradresskonvertierungseinheit 106 aus.
  • Die Trefferbestimmungseinheit 113 entspricht einem Beispiel einer Cache-Bestimmungseinheit.
  • Die Adresse (Adresse von 1), die durch eine Leseanfrage von der Anfragequelle 101 spezifiziert wird, wird in der „Interner-Zwischenspeicher-A-Adresse” in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 gespeichert.
  • Die Adresslänge der durch die Leseanfrage angefragten Adresse wird in der „Distanzinformation A” in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 gespeichert.
  • Wenn die Anfragequelle 101 eine Leseanfrage für Adresse 0000h von 1 ausgibt, wird „Adresse 0000h” in der „Interner-Zwischenspeicher-A-Adresse” gespeichert und „4 Bytes” wird in der „Distanzinformation A” gespeichert.
  • Wenn eine Vielzahl von internen Zwischenspeichern vorhanden ist, werden eine Adress- und eine Distanzinformation für jeden internen Zwischenspeicher gespeichert.
  • In 1 werden die „Interner-Zwischenspeicher-A-Adresse” und die „Distanzinformation A” separat verwaltet. Jedoch kann nur die „Interner-Zwischenspeicher-A-Adresse” eingesetzt werden.
  • In diesem Fall wird ein Wert, der durch Hinzufügen der Adresslänge zu der durch eine Leseanfrage spezifizierten Adresse erhalten wird, in der „Interner-Zwischenspeicher-A-Adresse” gespeichert. Das heißt, wenn die Anfragequelle 101 eine Leseanfrage für Adresse 0000h von 1 ausgibt, wird „0004h”, welche durch Hinzufügen von 4 Bytes zu Adresse 0000h erhalten wird, in der „Interner-Zwischenspeicher-A-Adresse” gespeichert.
  • Die letztmaliger-Wert-Halteeinheit 104 ist ein Register, das die gelesenen Daten des letzten Mals, die von dem Speicher 105 empfangen werden, oder die Daten in dem internen Zwischenspeicher 109 hält.
  • Die Datenauswahleinheit 108 wählt einen der gelesenen Daten, die von dem Speicher 105 empfangen werden, und der Daten in dem internen Zwischenspeicher A 109 aus und gibt die ausgewählten Daten an die Datenabgleichseinheit 103 aus.
  • Die Datenabgleichseinheit 103 erhält die angefragten Nutzdaten und den korrespondierenden ECC von den durch die Datenauswahleinheit 108 ausgewählten Daten und den Daten in der Letztmaliger-Wert-Halteeinheit 104 und gleicht die erhaltenen angefragten Nutzdaten und den korrespondierenden ECC derart ab, dass eine ECC-Korrektur durchgeführt werden kann.
  • Die Datenabgleichseinheit 103, die Letztmaliger-Wert-Halteeinheit 104 und die Datenauswahleinheit 108 werden kollektiv als eine Datenerfassungseinheit 111 bezeichnet.
  • Die ECC-Korrektureinheit 102 empfängt als eine Eingabe von der Datenabgleichseinheit 103 die angefragten Nutzdaten und den korrespondierenden ECC, die abgeglichen worden sind, führt eine ECC-Korrektur auf den angefragten Nutzdaten unter Verwendung des korrespondierenden ECC durch und gibt die ECC-korrigierten, angefragten Nutzdaten an die Anfragequelle 101 aus.
  • Ein Beispiel für die Arbeitsweise der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel wird nun mit Bezug auf 1 bis 5 beschrieben.
  • Die folgende Beschreibung wird auf einen Fall gerichtet, in dem 4 Bytes von Adresse 0000h von 1 (D0 bis D3) gelesen werden, und dann 4 Bytes von Adresse 0004h (D4 bis D7) gelesen werden.
  • Zunächst akzeptiert die Speicheradresskonvertierungseinheit 106 von der Anfragequelle 101 eine Leseanfrage, um 4 Bytes von Adresse 0000h (S201) zu lesen. Dann bestimmt die Trefferbestimmungseinheit 113, ob ein Treffer für die akzeptierte Leseanfrage in den in dem internen Zwischenspeicher 109 gespeicherten Daten gefunden werden kann (S301).
  • Insbesondere macht die Trefferbestimmungseinheit 113 eine Bestimmung durch Berechnen einer Cache-Adresse, basierend auf der „Interner-Zwischenspeicher-A-Adresse” und der „Distanzinformation A” in der internen Zwischenspeicherinformationseinheit 112. An diesem Punkt werden keine Daten in dem internen Zwischenspeicher A 109 gespeichert. Demgemäß ist ein Ergebnis der Bestimmung in S301 NEIN.
  • Dann berechnet die Speicheradresskonvertierungseinheit 106 einen Bereich (ausgelesene Kandidatenadressen), der die 4-Bytes-Daten (D0 bis D3) und den korrespondierenden ECC (ECC0) enthält, erzeugt einen Lesebefehl um anzuweisen, von dem berechneten Bereich zu lesen, und gibt den erzeugten Lesebefehl an den Speicher 105 aus (S202).
  • Mit Bezug zu 2 werden die oben beschriebenen Daten über Adresse 0000h und Adresse 0004h gespeichert. Demgemäß erzeugt die Speicheradresskonvertierungseinheit 106 einen Lesebefehl (Gesamtbereichslesebefehl), um anzuweisen, 8 Bytes von Adresse 0000h zu lesen. Die Speicheradresskonvertierungseinheit 106 gibt den erzeugten Lesebefehl an den Speicher 105 aus und gibt auch die Leseanfrage von der Anfragequelle 101 und den Lesebefehl an die Interner-Zwischenspeicher-Verwaltungseinheit 107 und die Datenauswahleinheit 108 aus.
  • Der Speicher 105 gibt die Daten von Adresse 0000h (D0 bis D3) zurück. In der Speichersteuervorrichtung 100 empfängt die Datenauswahleinheit 108 als eine Eingabe die Daten von Adresse 0000h (S203).
  • Die Datenauswahleinheit 108 benachrichtigt die Datenabgleichseinheit 103 und die Interner-Zwischenspeicher-Verwaltungseinheit 107, dass die gelesenen Daten eingegeben worden sind.
  • Bei Benachrichtigung von der Datenauswahleinheit 108 bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob die eingegebenen gelesenen Daten die Enddaten sind (S400).
  • Da die Daten von Adresse 0000h nicht die Enddaten sind, ist ein Ergebnis der Bestimmung in S401 NEIN.
  • Die Interner-Zwischenspeicher-Verwaltungseinheit 107 hat als eine Eingabe von der Speicheradresskonvertierungseinheit 106 den Lesebefehl und die Leseanfrage erhalten und erkennt die Anordnung von Daten von 1 und die Anordnung von Daten von 2. Somit kann die Interner-Zwischenspeicher-Verwaltungseinheit 107 bestimmen, dass die zuerst eingegebenen, gelesenen Daten (Daten von Adresse 0000h) nicht die Enddaten sind.
  • Da die eingegebenen Daten von Adresse 0000h nicht die Enddaten sind, werden die eingegebenen, gelesenen Daten nicht in dem internen Zwischenspeicher A 109 gehalten.
  • Dann bestimmt die Datenabgleichseinheit 103, ob ein Datenabgleich durchgeführt werden kann oder nicht (S305).
  • Das heißt, die Datenabgleichseinheit 103 bestimmt, ob die angefragten Nutzdaten, welche von der Anfragequelle 101 angefragt werden, und der korrespondierende ECC mit den Daten von dem Speicher 105 oder den Daten in dem internen Zwischenspeicher A 109 und den Daten in der Letztmaliger-Wert-Halteeinheit 104 erhalten werden kann.
  • An diesem Punkt sind die Daten von Adresse 0000h von dem Speicher 105 eingegeben worden, aber keine Daten sind in der Letztmaliger-Wert-Halteeinheit 104 gespeichert.
  • Da die angefragten Nutzdaten und der korrespondierende ECC nicht mit nur den Daten von Adresse 0000h erhalten werden können, wartet die Datenabgleichseinheit 103 auf die einzugebenden Daten von Adresse 0004h (NEIN in S305).
  • Zu dieser Zeit werden die gelesenen Daten (Adresse 0000h) als ein letztmaliger Wert in der Letztmaliger-Wert-Halteeinheit 104 von der Datenauswahleinheit 108 gespeichert.
  • Die Datenabgleichseinheit 103 hat als eine Eingabe von der Speicheradresskonvertierungseinheit 106 den Lesebefehl und die Leseanfrage erhalten und erkennt die Anordnung von Daten von 1 und die Anordnung von Daten von 2. Somit kann die Datenabgleichseinheit 103 bestimmen, ob ein Datenabgleich durchgeführt werden kann oder nicht.
  • Dann gibt der Speicher 105 die Daten von Adresse 0004h (ECC0 bis D6) zurück. In der Speichersteuervorrichtung 100 empfängt die Datenauswahleinheit 108 als eine Eingabe die Daten von Adresse 0004h (S203).
  • Die Datenauswahleinheit 108 benachrichtigt die Datenabgleichseinheit 103 und die Interner-Zwischenspeicher-Verwaltungseinheit 107, dass die gelesenen Daten eingegeben worden sind.
  • Bei Benachrichtigung von der Datenauswahleinheit 108 bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob die eingegebenen gelesenen Daten die Enddaten sind (S400).
  • Die Daten von Adresse 0004h sind die letzten Daten, welche von dem Speicher 105 in Erwiderung auf den Lesebefehl eingegeben werden, und sind somit die Enddaten (JA in S400).
  • Dann bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende andere Nutzdaten als die angefragten Nutzdaten und der korrespondierende ECC in den eingegebenen Daten von Adresse 0004h enthalten sind (S401).
  • Die angefragten Nutzdaten, welche von der Anfragequelle 101 angefragt werden, sind D0 bis D3 und der korrespondierende ECC ist EEC0.
  • D4 bis D6, welches nachfolgende Nutzdaten sind, sind in den Daten von Adresse 0004h enthalten.
  • Demgemäß ist ein Ergebnis einer Bestimmung in S401 JA.
  • Wie oben beschrieben, hat die Interner-Zwischenspeicher-Verwaltungseinheit 107 als eine Eingabe von der Speicheradresskonvertierungseinheit 106 die Leseanfrage erhalten und erkennt die Anordnung von Daten von 1 und die Anordnung von Daten von 2. Somit kann die Interner-Zwischenspeicher-Verwaltungseinheit 107 bestimmen, dass D4 bis D6 von Adresse 0004h nachfolgende Nutzdaten sind, welche weder die angefragten Nutzdaten noch der korrespondierende ECC sind.
  • Dann schreibt die Interner-Zwischenspeicher-Verwaltungseinheit 107 „0000h” in die „Interner-Zwischenspeicher-A-Adresse”, schreibt „4” der 4 Bytes, welche in der „Distanzinformation A” in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 gelesen werden, und speichert die Daten von Adresse 0004h (ECC0 bis D6) in den internen Zwischenspeicher A 109 (S402).
  • Dann bestimmt die Datenabgleichseinheit 103, ob ein Datenabgleich durchgeführt werden kann oder nicht (S305).
  • Das heißt, die Datenabgleichseinheit 103 bestimmt, ob die angefragten Nutzdaten, welche von der Anfragequelle 101 angefragt werden, und der korrespondierende ECC mit den Daten von dem Speicher 105 oder den Daten in dem internen Zwischenspeicher A 109 und den Daten in der Letztmaliger-Wert-Halteeinheit 104 bestimmt werden können.
  • An diesem Punkt sind die Daten von Adresse 0004h von dem Speicher 105 eingegeben worden und die Daten von Adresse 0000h sind in der Letztmaliger-Wert-Halteeinheit 104 als der letztmalige Wert gespeichert worden.
  • Da die angefragten Nutzdaten und der korrespondierende ECC mit den von dem Speicher 105 eingegeben Daten und den Daten in der Letztmaliger-Wert-Halteeinheit 104 erhalten werden können, ist ein Ergebnis einer Bestimmung in S305 „JA”.
  • Die Datenabgleichseinheit 103 empfängt als eine Eingabe die Daten von Adresse 0000h (D0 bis D3) von der Letztmaliger-Wert-Halteeinheit 104, erhält die Daten von Adresse 0004h (ECC0 bis D6) von der Datenauswahleinheit 108, extrahiert die angefragten Nutzdaten (D0 bis D3) und den korrespondierenden ECC (ECC0) und gleicht die extrahierten Daten ab (S205).
  • Dann erhält die ECC-Korrektureinheit 102 die abgeglichenen Daten (D0 bis D3) und ECC0 von der Datenabgleichseinheit 103, führt eine ECC-Korrektur auf den angefragten Nutzdaten D0 bis D3 unter Verwendung von ECC0 durch und gibt dann die angefragten Nutzdaten D0 bis D3 an die Anfragequelle 101 zurück (S206).
  • Die Gesamtheit der angefragten Nutzdaten ist nun zurückgegeben worden und somit ist der Vorgang abgeschlossen (S207).
  • Es wird ein Fall angenommen, in dem eine Leseanfrage 4 Bytes von Adresse 0004h zu lesen anschließend von der Anfragequelle 101 angenommen wird.
  • In diesem Fall, nachdem die Leseanfrage angenommen ist (S201), bestimmt die Trefferbestimmungseinheit 113, ob ein Treffer für die Nutzdaten, welche von der Leseanfrage angefragt werden, in den in dem internen Zwischenspeicher A 109 gespeicherten Daten gefunden werden kann (S301).
  • Das heißt, die Trefferbestimmungseinheit 113 bestimmt, ob die in S201 angenommene Leseanfrage eine Anfrage ist, um Daten einer nachfolgenden Adresse der in der „Interner-Zwischenspeicher-A-Adresse” in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 geschriebenen Adresse zu lesen.
  • In diesem Beispiel ist „Adresse 0000h” in die „Interner-Zwischenspeicher-A-Adresse” geschrieben, und „4” ist in die „Distanzinformation A” geschrieben. Ein Hinzufügen von 4 Bytes zu „Adresse 0000h” resultiert in „0004h”, was mit der Anfrage der Leseanfrage übereinstimmt. Demgemäß wird ein Treffer bestimmt und ein Ergebnis einer Bestimmung in S301 ist JA.
  • Die Speicheradresskonvertierungseinheit 106 berechnet einen Bereich (ausgelesene Kandidatenadressen), der die 4-Byte-Daten (D4 bis D7) und den korrespondierenden ECC (ECC1) enthält.
  • Mit Bezug auf 2 werden die oben beschriebenen Daten über Adresse 0004h und Adresse 0008h platziert. Somit erzeugt die Speicheradresskonvertierungseinheit 106 normalerweise einen Lesebefehl, um anzuweisen, 8 Bytes von Adresse 0004h zu lesen.
  • Jedoch, da die in dem internen Zwischenspeicher A 109 gespeicherten Daten von Adresse 0004h verwendet werden, erzeugt die Speicheradresskonvertierungseinheit 106 einen Lesebefehl (partieller Lesebefehl) um anzuweisen, 4 Bytes von 0000h zu lesen und gibt den erzeugten Lesebefehl an den Speicher 105 aus (S302).
  • Die Speicheradresskonvertierungseinheit 106 gibt den erzeugten Lesebefehl an den Speicher 105 aus und gibt die Leseanfrage von der Anfragequelle 101 und den Lesebefehl an die Interner-Zwischenspeicher-Verwaltungseinheit 107 und die Datenauswahleinheit 108 aus.
  • Da die Daten von Adresse 0004h, schon in dem internen Zwischenspeicher A gespeichert worden sind, überträgt die Interner-Zwischenspeicher-Verwaltungseinheit 107 die Daten in dem internen Zwischenspeicher A 109 an die Datenabgleichseinheit 103 durch die Datenauswahleinheit 108 (S303).
  • Die Datenabgleichseinheit 103 bestimmt, ob ein Datenabgleich durchgeführt werden kann oder nicht (S305).
  • Das heißt, die Datenabgleichseinheit 103 bestimmt, ob die angefragten Nutzdaten, die von der Anfragequelle 101 angefragt werden, und der korrespondierende ECC mit den Daten von dem Speicher 105 oder den Daten in dem internen Zwischenspeicher A 109 und den Daten in der Letztmaliger-Wert-Halteeinheit 104 erhalten werden können.
  • An diesem Punkt existieren die Daten von Adresse 0004h in dem internen Zwischenspeicher A 109, und die Daten von Adresse 0004h existieren auch in der Letztmaliger-Wert-Halteeinheit 104.
  • Da die angefragten Nutzdaten und der korrespondierende ECC nicht nur mit den Daten von Adresse 0004h erhalten werden können, wartet die Datenabgleichseinheit 103 auf die einzugebenden Daten von Adresse 0008h (NEIN in S305).
  • Zu dieser Zeit sind die Daten (Adresse 0004h) in dem internen Zwischenspeicher A 109 als der letztmalige Wert in der Letztmaliger-Wert-Halteeinheit 104 von der Datenauswahleinheit 108 gespeichert.
  • Dann gibt der Speicher 105 die Daten von Adresse 0008h (D7 bis D9) zurück. In der Speichersteuervorrichtung 100 empfängt die Datenauswahleinheit 108 als eine Eingabe die Daten von Adresse 0008h (S203).
  • Die Datenauswahleinheit 108 benachrichtigt die Datenabgleichseinheit 103 und die Interner-Zwischenspeicher-Verwaltungseinheit 107, dass die gelesenen Daten eingegeben worden sind.
  • Bei Benachrichtigung von der Datenauswahleinheit 108 bestimmt die Interner-Speicher-Verwaltungseinheit 107, ob die eingegebenen, gelesenen Daten die Enddaten sind (S400).
  • Die Daten von Adresse 0008h sind die letzten Daten, welche von dem Speicher 105 in Erwiderung auf den Lesebefehl eingegeben worden sind und sind somit die Enddaten (JA in S400).
  • Dann bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende andere Nutzdaten als die angefragten Nutzdaten und der korrespondierende ECC in den eingegebenen Daten von Adresse 0008h enthalten sind (S401). Die angefragten Nutzdaten, welche durch die Anfragequelle 101 angefragt werden, sind D4 bis D7, und der korrespondierende ECC ist EEC1.
  • D8 und D9, welche aufeinanderfolgende Nutzdaten sind, sind in den Daten von Adresse 0008h enthalten.
  • Demgemäß ist ein Ergebnis einer Bestimmung in S401 JA.
  • Dann schreibt die Interner-Zwischenspeicher-Verwaltungseinheit 107 „0004h” in die „Interner-Zwischenspeicher-A-Adresse”, und schreibt „4” des 4-Byte-Lesens in die „Distanzinformation A” in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 und speichert die Daten von Adresse 0008h (D7 bis D9) in dem internen Zwischenspeicher A 109 (S402).
  • Dann bestimmt die Datenabgleichseinheit 103, ob ein Datenabgleich durchgeführt werden kann oder nicht (S305).
  • Das heißt, die Datenabgleichseinheit 103 bestimmt, ob die angefragten Nutzdaten, welche durch die Anfragequelle 101 angefragt werden, und der korrespondierende ECC mit den Daten von dem Speicher 105 oder den Daten in dem internen Zwischenspeicher A 109 und den Daten in der Letztmaliger-Wert-Halteeinheit 104 erhalten werden können.
  • An diesem Punkt sind die Daten von Adresse 0008h von dem Speicher 105 eingegeben worden, und die Daten von Adresse 0004h sind in der Letztmaliger-Wert-Halteeinheit als der letztmalige Wert gespeichert worden.
  • Da die angefragten Nutzdaten und der korrespondierende ECC mit den von dem Speicher 105 eingegebenen Daten und den Daten in der Letztmaliger-Wert-Halteeinheit 104 erhalten werden können, ist ein Ergebnis einer Bestimmung in S305 JA.
  • Die Datenabgleichseinheit 103 empfängt als eine Eingabe von der Letztmaliger-Wert-Halteeinheit 104 die Daten von Adresse 0004h (ECC0 bis D6), erhält die Daten von Adresse 0008h (D7 bis D9) von der Datenauswahleinheit 108, extrahiert die angefragten Nutzdaten (D4 bis D7) und den korrespondierenden ECC (ECC1) und gleicht die extrahierten Daten ab (S205). Dann erhält die ECC-Korrektureinheit 102 die abgeglichenen Daten (D4 bis D7 und ECC1) von der Datenabgleichseinheit 103, führt eine ECC-Korrektur auf den angefragten Nutzdaten D4 bis D7 unter Verwendung von ECC1 durch und gibt dann die angefragten Nutzdaten D4 bis D7 an die Anfragequelle 101 zurück (S206).
  • Die Gesamtheit der angefragten Nutzdaten ist nun zurückgegeben worden, und daher ist der Vorgang abgeschlossen (S207).
  • 5 stellt eine spezifische Beschreibung der oben beschriebenen Speichersteuervorrichtung 100 bereit.
  • Wenn die Anfragequelle 101 eine Leseanfrage ausgibt, 4 Bytes von Adresse 0000h (1) (D0 bis D3) zu lesen, werden erste Daten A (D0 bis D3) von Adresse 0000h von 2 in dem Speicher 105 ausgelesen.
  • Da die ersten Daten A (D0 bis D3) nicht die Enddaten sind, werden diese nicht in dem internen Zwischenspeicher A 109 gehalten, aber werden in der Letztmaliger-Wert-Halteeinheit 104 als erste Daten B (D0 bis D3) gehalten.
  • Dann werden zweite Daten A (ECC0 bis D6) von Adresse 0004h von 2 in dem Speicher 105 ausgelesen.
  • Da die zweiten Daten A (ECC0 bis D6) die Enddaten sind, werden sie in dem internen Zwischenspeicher A als zweite Daten E (ECC0 bis D6) gehalten.
  • Die Datenabgleichseinheit 103 führt einen Datenabgleich mit den zweiten Daten A (ECC0 bis D6) von dem Speicher 105 und den ersten Daten B (D0 bis D3) in der Letztmaliger-Wert-Halteeinheit 104 durch und erzeugt somit erste Daten C (D0 bis ECC0).
  • Dann führt die ECC-Korrektureinheit 102 eine ECC-Korrektur auf den ersten Daten C (D0 bis ECC0) durch und gibt ECC-korrigierte erste Daten D (D0 bis D3) an die Anfragequelle 101 aus.
  • Die zweiten Daten A (ECC0 bis D6) werden in der Letztmaliger-Wert-Halteeinheit 104 als zweite Daten B (ECC0 bis D6) gehalten.
  • Angibt, 4 Bytes vonschließend, wenn die Anfragequelle 101 einen Lesebefehl aus Adresse 0004h (1) (D4 bis D7) zu lesen, existieren die zweiten Daten E (ECC0 bis D6) in dem internen Zwischenspeicher 109, und die zweiten Daten B (ECC0 bis D6) werden in der Letztmaliger-Wert-Halteeinheit 104 als der letztmalige Wert gehalten.
  • Da ein Datenabgleich mit den zweiten Daten E (ECC0 bis D6) in dem internen Zwischenspeicher A 109 und den zweiten Daten B (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 nicht durchgeführt werden kann, werden die zweiten Daten E (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 als der letztmalige Wert gehalten, und vierte Daten A (D7 bis D9) werden von Adresse 0008h von 2 in dem Speicher 105 ausgelesen.
  • Da die vierten Daten A (D7 bis D9) die Enddaten sind, werden sie in dem internen Zwischenspeicher A 109 als vierte Daten E (D7 bis D9) gehalten.
  • Die Datenabgleichseinheit 103 führt einen Datenabgleich mit den vierten Daten A (D7 bis D9) von dem Speicher 105 und den zweiten Daten E (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 durch und erzeugt somit zweite Daten C (D4 bis ECC1).
  • Dann führt die ECC-Korrektureinheit 102 eine ECC-Korrektur auf den zweiten Daten C (D4 bis ECC1) durch und gibt ECC-korrigierte zweite Daten D (D4 bis D7) an die Anfragequelle 101 aus.
  • Die vierten Daten A (D7 bis D9) werden in der Letztmaliger-Wert-Halteeinheit 104 als vierte Daten B (D7 bis D9) gehalten.
  • In Abwesenheit dieses Ausführungsbeispiels, wenn die Anfragequelle 101 einen Lesebefehl ausgibt, 4 Bytes von Adresse 0004h zu lesen, werden Daten ECC0 bis D6, wie als dritte Daten A (ECC0 bis D6) veranschaulicht, überflüssig ausgelesen.
  • Dagegen können gemäß diesem Ausführungsbeispiel die zweiten Daten E (ECC0 bis D6) in dem internen Zwischenspeicher A 109 verwendet werden, wobei die Notwendigkeit für ein überflüssiges Auslesen von dem Speicher 105 eliminiert wird.
  • Ein Beispiel der Arbeitsweise der Speichersteuervorrichtung 100, welche nur den internen Zwischenspeicher A 109 enthält, ist oben beschrieben worden.
  • Ein Beispiel der Arbeitsweise der Speichersteuervorrichtung 100, welche einen internen Zwischenspeicher B 1090 zusätzlich zu dem internen Zwischenspeicher A 109 enthält, wird nun beschrieben werden.
  • 6 veranschaulicht ein Beispiel der Arbeitsweise der Speichersteuervorrichtung 100, welche den internen Zwischenspeicher A 109 und den internen Zwischenspeicher B 1090 enthält.
  • 6 veranschaulicht ein Beispiel der Arbeitsweise der Anfragequelle 101 in einem Fall, in dem die Anfragequelle 101 eine Leseanfrage ausgibt, 4 Bytes von Adresse 0000h (1) (D0 bis D3) zu lesen, dann eine Leseanfrage ausgibt, 4 Bytes von Adresse 0014h (1) (D14 bis D17) zu lesen, und weiter eine Leseanfrage ausgibt, 4 Bytes von Adresse 0004h (D4 bis D7) zu lesen.
  • Es wird angenommen, dass zur Zeit der ersten Leseanfrage (Leseanfrage für Adresse 0000h), Daten ECC4 bis D16 (Adresse 0008h von 2), welche in Erwiderung auf eine der ersten Leseanfrage vorhergehenden Leseanfrage ausgelesen worden sind, in dem internen Zwischenspeicher B 1090 als dritte Daten E gehalten werden.
  • Auf der anderen Seite wird angenommen, dass zur Zeit der ersten Leseanfrage keine Daten in dem internen Zwischenspeicher A 109 gehalten werden.
  • Wenn die Anfragequelle 101 eine Leseanfrage ausgibt, 4 Bytes von Adresse 0000h (1) (D0 bis D3) zu lesen, werden erste Daten A (D0 bis D3) von Adresse 0000h von 2 in dem Speicher 105 ausgelesen.
  • Da die ersten Daten A (D0 bis D3) nicht die Enddaten sind, werden sie nicht in dem internen Zwischenspeicher A 109 gehalten, aber werden in der Letztmaliger-Wert-Halteeinheit 104 als erste Daten B (D0 bis D3) gehalten.
  • Dann werden zweite Daten A (ECC0 bis D6) von dem Speicher 105 ausgelesen.
  • Da die zweiten Daten A (ECC0 bis D6) die Enddaten sind, werden sie in dem internen Zwischenspeicher A 109 als zweite Daten E (ECC0 bis D6) gehalten.
  • Die Datenabgleichseinheit 106 führt einen Datenabgleich mit den zweiten Daten A (ECC0 bis D6) von dem Speicher 105 und den ersten Daten B (D0 bis D3) in der Letztmaliger-Wert-Halteeinheit 104 durch und erzeugt somit erste Daten C (D0 bis ECC0).
  • Dann führt die ECC-Korrektureinheit 102 eine ECC-Korrektur auf den ersten Daten C (D0 bis ECC0) durch und gibt ECC-korrigierte erste Daten D (D0 bis D3) an die Anfragequelle 101 aus.
  • Die zweiten Daten A (ECC0 bis D6) werden in der Letztmaliger-Wert-Halteeinheit 104 als zweite Daten B (ECC0 bis D6) gehalten.
  • Anschließend, wenn die Anfragequelle 101 eine Leseanfrage ausgibt, 4 Bytes von Adresse 0014h (1) (D14 bis D17) zu lesen, existieren die dritten Daten E (ECC4 bis D16) in dem internen Zwischenspeicher B 1090, und die zweiten Daten B (ECC0 bis D6) werden in der Letztmaliger-Wert-Halteeinheit 104 als der letztmalige Wert gehalten.
  • Da ein Datenabgleich mit den dritten Daten E (ECC4 bis D16) in dem internen Zwischenspeicher B 1090 und den zweiten Daten B (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 nicht durchgeführt werden kann, werden die dritten Daten E (ECC4 bis D16) in der letztmaliger Wert Halteeinheit 104 als dritte Daten B (ECC4 bis D16) (letztmaliger Wert) gehalten, und vierte Daten A (D17 bis D19) werden von Adresse 001ch von 2 in dem Speicher 105 ausgelesen.
  • Da die vierten Daten A (D17 bis D19) die Enddaten sind, werden sie in dem internen Zwischenspeicher A 109 als vierte Daten E (D17 bis D19) gehalten.
  • Die Datenabgleichseinheit 103 führt einen Datenabgleich mit den vierten Daten A (D17 bis D19) von dem Speicher 105 und den dritten Daten B (ECC4 bis D16) in der Letztmaliger-Wert-Halteeinheit 104 durch und erzeugt somit zweite Daten C (D14 bis ECC5).
  • Dann führt die ECC-Korrektureinheit 102 eine ECC-Korrektur auf den zweiten Daten C (D14 bis ECC5) durch und gibt ECC-korrigierte zweite Daten D (D14 bis D17) an die Anfragequelle 101 aus.
  • Die vierten Daten A (D17 bis D19) werden in der Letztmaliger-Wert-Halteeinheit 104 als vierte Daten B (D17 bis D19) gehalten.
  • Anschließend, wenn die Anfragequelle 101 eine Leseanfrage ausgibt, vier Bytes von Adresse 0004h (1) (D4 bis D7) zu lesen, existieren die zweiten Daten E (ECC0 bis D6) in dem internen Zwischenspeicher A 109, und die vierten Daten B (D17 bis D19) werden in der Letztmaliger-Wert-Halteeinheit 104 als der letztmalige Wert gehalten.
  • Da ein Datenabgleich mit den zweiten Daten E (ECC0 bis D6) in dem internen Zwischenspeicher A 109 und den vierten Daten B (D17 bis D19) in der Letztmaliger-Wert-Halteeinheit 104 nicht durchgeführt werden kann, werden die zweiten Daten E (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 als fünfte Daten B (ECC0 bis D6) (letztmaliger Wert) gehalten, und sechste Daten A (D7 bis D9 werden von Adresse 0008h von 2 in dem Speicher 105 ausgelesen.
  • Da die sechsten Daten A (D7 bis D9) die Enddaten sind, werden sie in dem internen Zwischenspeicher A 109 als sechste Daten E (D7 bis D9) gehalten.
  • Die Datenabgleichseinheit 103 führt einen Datenabgleich mit den sechsten Daten A (D7 bis D9) von dem Speicher 105 und den fünften Daten B (ECC0 bis D6) in der Letztmaliger-Wert-Halteeinheit 104 durch und erzeugt somit dritte Daten C (D4 bis ECC1).
  • Dann führt die ECC-Korrektureinheit 102 eine ECC-Korrektur auf den dritten Daten C (D4 bis ECC1) durch und gibt ECC-korrigierte dritte Daten D (D4 bis D7) an die Anfragequelle 101 aus.
  • Die sechsten Daten A (D7 bis D9) werden in der Letztmaliger-Wert-Halteeinheit 104 als sechste Daten B (D7 bis D9) gehalten.
  • Die Veranschaulichung der sechsten Daten B (D7 bis D9) wird weggelassen.
  • Die obige Beschreibung wurde auf ein Beispiel gerichtet, wo die Nutzdaten an die Anfragequelle 101 in Erwiderung auf Leseanfragen in Einheiten von 4 Bytes, wie z. B. 4 Bytes von Adresse 0000h und vier Bytes von Adresse 0004h zurückgegeben werden.
  • Die Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel ermöglicht es auch, mit Leseanfragen in Einheit eines ganzteiligen Vielfachens von 4 Bytes umzugehen.
  • Zum Beispiel ist die Speichersteuervorrichtung 100 in der Lage, Leseanfragen in Einheiten von 8 Bytes, wie z. B. 8 Bytes von Adresse 0000h und 8 Bytes von Adresse 0008h, zu verarbeiten.
  • In diesem Ausführungsbeispiel wurde das Beispiel beschrieben, wo zwei interne Zwischenspeicher, nämlich der interne Zwischenspeicher A 109 und der interne Zwischenspeicher B 1090, eingesetzt werden. Dass in diesem Ausführungsbeispiel beschriebene Verfahren kann auch einen Fall behandeln, wo drei oder mehrere interne Zwischenspeicher eingesetzt werden.
  • In diesem Ausführungsbeispiel
    wurde eine Speichersteuervorrichtung mit den folgenden Mitteln beschrieben:
    • (a) Mittel, um eine Anfrage von einer Anfragequelle in eine Anfrage für einen Speicher zu konvertieren, welcher eine Brücke für Daten bereitstellen;
    • (b) Mittel, um eine ECC-Fehlerkorrektur auf Daten durchzuführen;
    • (c) Mittel, um Daten, welche von dem Speicher, der einen vertikalen ECC einsetzt, empfangen werden, in Daten umzuordnen, welche für eine ECC-Fehlerkorrektur (separiert in Daten) und einen korrespondierenden ECC) geeignet sind;
    • (d) Mittel, um eine Adresse und eine Länge von der Anfragequelle in eine Adresse und eine Länge des Speichers, der den vertikalen ECC einsetzt, zu konvertieren;
    • (e) Mittel, um zuletzt empfangene Daten von dem Speicher zu halten:
    • (f) Mittel, um zuletzt empfangene Daten, welche Nutzdaten der nächsten Adresse beinhalten, zu halten;
    • (g) Mittel, um eine Adresse der Nutzdaten, welche gehalten werden, zu speichern, um die nächste Adresse zu bestimmen;
    • (h) Mittel, um eine Distanzinformation zu speichern, um die nächste Adresse zu bestimmen;
    • (i) Mittel zu bestimmen, ob ein an den Speicher auszugebender Lesebefehl die gehaltenen Nutzdaten wiederverwenden wird; und
    • (j) Mittel, um eine von Daten in einen internen Zwischenspeicher und gelesenen Daten, die von dem Speicher empfangen werden, auszuwählen.
  • Zweites Ausführungsbeispiel:
  • In dem ersten Ausführungsbeispiel wurde eine Nicht-Pipeline-Arbeitsweise durchgeführt, da zum Beispiel eine Leseanfrage von der Anfragequelle 101, 4 Bytes von Adresse 0004h (1) zu lesen, verarbeitet wird, nachdem 4 Bytes von der vorhergehenden Adresse 0000h (1) (JA in S207 von 4) gelesen worden sind.
  • In einer Pipeline-Arbeitsweise kann es eine Möglichkeit geben, dass zur Zeit, wenn die in dem internen Zwischenspeicher gehaltenen Daten wiederverwendet werden, die gelesenen Daten einer anderen Transaktion von dem Speicher zurückgegeben werden, was von einer Kollision zwischen den Daten in dem internen Zwischenspeicher und den Daten von dem Speicher resultiert. Falls eine Datenkollision auftritt, werden jedes der zwei Datenstücke verlorengehen.
  • An diesem Ausführungsbeispiel, wenn die Daten in dem internen Zwischenspeicher in der Pipeline-Arbeitsweise wiederverwendet werden, wird der Zeitpunkt, an dem die gelesenen Daten von dem Speicher 4 erhalten werden, verzögert, um ein Überlappen des Zeitpunkts, an dem die von dem Speicher empfangenen, gelesenen Daten an die Datenerfassungseinheit 111 ausgegeben werden, und dem Zeitpunkt, an dem die Daten von dem internen Zwischenspeicher an die Datenerfassungseinheit 111 ausgegeben werden, zu verhindern.
  • Auf diese Weise unterstützt die Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel den Pipeline-Speicher.
  • Die Speichersteuervorrichtung 100 gemäß dem Ausführungsbeispiel kann die Eigenschaften des Pipeline-Speichers effektiv nutzen, was zu einem erhöhten Speicherzugriffdurchsatz beiträgt.
  • 7 veranschaulicht ein Beispiel der Konfiguration der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel.
  • Verglichen mit der Konfiguration von 3, sind eine Befehlsausgabeintervallsteuereinheit 114 und ein FIFO Zwischenspeicher 110 in 7 hinzugefügt.
  • Wenn die Daten in dem internen Zwischenspeicher A verwendet werden, führt die Befehlsausgabe Intervallsteuereinheit 114 eine Steuerung durch, um die Ausgabe eines Lesebefehls an den Speicher 105 für eine Zeitdauer zu verzögern, welche zum Verwenden der Daten in dem internen Zwischenspeicher A 109 erforderlich ist.
  • Wenn ein Lesebefehl ausgegeben wird, werden gelesene Daten von dem Speicher 105 nach einem bestimmten Intervall (Leselatenzzeit) zurückgegeben. Somit ist es möglich, unter Verwendung der Befehlsausgabe Intervallsteuereinheit 114, um das Intervall zu steuern, indem Lesebefehle ausgegeben werden, Zeit zu sichern, um eine Verwendung der Daten in dem internen Zwischenspeicher A zu erlauben.
  • Eine Verzögerungszeit, während welcher die Befehlsausgabeintervallsteuereinheit 114 die Ausgabe eines Lesebefehls verzögert, ist z. B. eine Zeitdauer, die mit einer Lücke in einer Pipeline korrespondiert.
  • An diesem Ausführungsbespiel korrespondiert die Befehlsausgabeintervallsteuereinheit 114 auch mit einem Beispiel der Befehlsausgabeeinheit.
  • An diesem Ausführungsbeispiel speichert die Speicheradresskonvertierungseinheit 106 einen Lesebefehl an den Speicher 105 in dem FIFO-Zwischenspeicher 110.
  • Weiterhin speichert die Speicheradresskonvertierungseinheit 106 in dem FIFO-Zwischenspeicher 110 einen Interner-Zwischenspeicher-Dateneingabebefehl (der mit einem Cache-Dateneingabebefehl korrespondiert), um die Datenabgleichseinheit 103 anzuweisen, als eine Eingabe, die in dem internen Zwischenspeicher A 109 gehaltenen Daten zu empfangen, und einen Speicherdateneingabebefehl, um die Datenabgleichseinheit 103 anzuweisen, als eine Eingabe die Daten von dem Speicher 105 zu empfangen.
  • Der FIFO-Zwischenspeicher 110 speichert den Lesebefehl, den Interner-Zwischenspeicher-Dateneingabebefehl und den Speicherdateneingabebefehl.
  • Die Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel steuert den Pipeline-Speicher.
  • Das heißt, die Speichersteuervorrichtung 100 gemäß dem Ausführungsbeispiel nimmt die nächste Leseanfrage von der Anfragequelle 101 an und gibt einen Lesebefehl an den Speicher 105 aus, bevor die Gesamtheit der gelesenen Daten in Erwiderung auf eine angenommene Leseanfrage von der Anfragequelle 101 an die Anfragequelle 101 zurückgegeben worden ist.
  • Aus diesem Grund wird ein ausgegebener Lesebefehl in dem FIFO-Zwischenspeicher 110 gespeichert.
  • In diesem Ausführungsbeispiel aktualisiert die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „interner Zwischenspeicher-A-Adress”-Wert und der „Distanzinformation A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112, bevor die gelesenen Daten von dem Speicher 105 eingegeben werden.
  • Aus diesem Grund bestimmt die Trefferbestimmungseinheit 113 nicht nur, ob die Daten der auszulesenden Adresse in dem internen Zwischenspeicher A 109 zwischengespeichert worden sind oder nicht, sondern bestimmt auch, ob die Daten der auszulesenden Adresse in dem internen Zwischenspeicher A 109 gespeichert werden oder nicht, basierend auf dem „Interner-Zwischenspeicher-A-Adress”-Wert und dem „Distanzinformation A”-Wert.
  • Andere in 7 veranschaulichte Komponenten sind im Wesentlichen die gleichen wie jene, die in 3 veranschaulicht sind, und eine Beschreibung davon wird daher weggelassen.
  • Ein Beispiel der Arbeitsweise der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel wird nun mit Bezug zu 8 und 9 beschrieben.
  • S201, S301 und S202 sind im Wesentlichen die gleichen wie jene, die in dem ersten Ausführungsbeispiel beschrieben wurden, und daher wird eine Beschreibung hiervon weggelassen.
  • In diesem Ausführungsbeispiel erzeugt in S302 die Speicheradresskonvertierungseinheit 106 einen Lesebefehl (partieller Lesebefehl), um anzuweisen, Daten zu lesen, die nicht in dem internen Zwischenspeicher A 109 gehalten werden. In S506 gibt die Befehlsausgabeintervallsteuereinheit 114 den Lesebefehl (partieller Lesebefehl) an den Speicher 105 nach einem Zeitintervall aus, um eine Verwendung der Daten in dem internen Zwischenspeicher A 109 zu erlauben (Zeit zum Vermeiden einer Datenkollision).
  • Die Befehlsausgabe Intervallsteuereinheit 114 gibt den Lesebefehl an den Speicher 105 aus, nachdem eine vorbestimmte Verzögerungszeit von dem Zeitpunkt an abgelaufen ist, bei dem der Lesebefehl normalerweise ausgegeben wird, nachdem die Speicheradresskonvertierungseinheit 106 den Lesebefehl erzeugt hat.
  • Dann bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten (S505) enthalten sind oder nicht.
  • Das heißt, die Interner-Zwischenspeicher-Verwaltungseinheit 107 bestimmt, ob nachfolgende Nutzdaten in den Enddaten der Daten enthalten sind, welche von dem Speicher 105 in Erwiderung auf den in S202 oder S302 erzeugten Lesebefehl ausgelesen worden sind.
  • Dieser Vorgang ist im Wesentlichen der Gleiche, wie der Vorgang in S401 von 4.
  • Wie in dem Fall des ersten Ausführungsbeispiels hat die Interner-Zwischenspeicher-Verwaltungseinheit 107 als eine Eingabe von der Speicheradresskonvertierungseinheit 106 die Leseanfrage von der Anfragequelle 101 und den Lesebefehl an den Speicher 105 empfangen und erkennt die Anordnung von Daten von 1 und die Anordnung von Daten von 2. Somit kann die Interner-Zwischenspeicherverwaltungseinheit 107 bestimmen, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht, wie in S505.
  • Falls nachfolgende Nutzdaten in den Enddaten enthalten sind, (JA in S505) aktualisiert die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „Interner-Zwischenspeicher-A-Adress”-Wert und der „Distanzinformation A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 (S507).
  • Man beachte, dass die Daten in dem internen Zwischenspeicher A 109 zu diesem Zeitpunkt nicht aktualisiert werden.
  • In diesem Ausführungsbeispiel, da eine Arbeitsweise, welche den Pipeline-Speicher unterstützt, durchgeführt wird, werden der „Interner-Zwischenspeicher-A-Adress”-Wert und der „Distanzinformation A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 aktualisiert, bevor die gelesenen Daten von dem Speicher 105 eingegeben werden.
  • Dann speichert die Speicheradresskonvertierungseinheit 106 Befehle in den FIFO-Zwischenspeicher 110 (S501).
  • Insbesondere, als ein Gesamtbereichslesebefehl in S202 erzeugt worden ist, erzeugt die Speicheradresskonvertierungseinheit 106 einen Speicherdateneingabebefehl, um die Datenabgleichseinheit 103 anzuweisen, als eine Eingabe die Daten von dem Speicher 105 zu empfangen. Dann speichert die Speicheradresskonvertierungseinheit 106 den Gesamtbereich Lesebefehl, die Leseanfrage und den Speicherdateneingabebefehl in dem FIFO-Zwischenspeicher 110.
  • Falls ein partieller Lesebefehl in S302 erzeugt worden ist, erzeugt die Speicheradresskonvertierungseinheit 106 einen Interner-Zwischenspeicher-Dateneingabebefehl, um die Datenabgleichseinheit 103 anzuweisen, als eine Eingabe, die in dem internen Zwischenspeicher A 109 gehaltenen Daten zu empfangen, und einen Speicherdateneingabebefehl.
  • Dann speichert die Speicheradresskonvertierungseinheit 106 den partiellen Lesebefehl, die Leseanfrage, den Interner-Zwischenspeicher-Dateneingabebefehl und den Speicherdateneingabebefehl in dem FIFO-Zwischenspeicher 110.
  • Falls eine Leseanfrage von der Lesequelle 101 angenommen wird, bevor die ECC-korrigierten, angefragten Nutzdaten vollständig zurückgegeben worden sind, werden Befehle sukzessive in dem FIFO-Zwischenspeicher gespeichert.
  • Parallel zu dem Vorgang von 8 überprüft die Datenabgleichseinheit 103 periodisch, ob Befehle in dem FIFO-Zwischenspeicher 110 akkumuliert werden (S502). Falls ein Befehl in dem FIFO-Zwischenspeicher vorliegt (JA in S502) nimmt die Datenabgleichseinheit 103 den Befehl aus dem FIFO-Zwischenspeicher 110 heraus (S503).
  • Falls der herausgenommene Befehl ein interner Zwischenspeicherdateneingabebefehl ist, S504 JA, und eine Verarbeitung schreitet zu S303 fort.
  • Falls der herausgenommene Befehl ein Speicherdateneingabebefehl ist, ist S504 NEIN und eine Verarbeitung schreitet zu S203 fort.
  • Aus Gründen der Veranschaulichung zeigt 9 keinen Vorgang in einem Fall, wo der herausgenommene Befehl ein Lesebefehl oder eine Leseanfrage ist. Falls ein Lesebefehl oder eine Leseanfrage herausgenommen wird, hält die Datenabgleichseinheit 103 den herausgenommenen Lesebefehl oder Leseanfrage in einem vorbestimmten Speicherbereich und nimmt einen anderen Befehl von dem FIFO-Zwischenspeicher 110 heraus.
  • In S203 empfängt die Datenauswahleinheit 108 als eine Eingabe von dem Speicher 105 die gelesenen Daten und benachrichtigt die Interner-Zwischenspeicherverwaltungseinheit 107, dass die gelesenen Daten eingegeben worden sind.
  • Die Interner-Zwischenspeicher-Verwaltungseinheit 107 bestimmt, ob die eingegebenen, gelesenen Daten die Enddaten sind oder nicht (S400). Falls die gelesenen Daten die Enddaten sind, bestimmt die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht (S401).
  • Falls nachfolgende Nutzdaten in den Enddaten enthalten sind, aktualisiert die Interner-Zwischenspeicher-Verwaltungseinheit 107 die Daten in dem internen Zwischenspeicher A 109 (S402).
  • In S303 überträgt die Interner-Zwischenspeicher-Verwaltungseinheit 107 die Daten in dem internen Zwischenspeicher 109 an die Datenabgleichseinheit 103 durch die Datenauswahleinheit 108.
  • Die Datenabgleichseinheit 103 bestimmt, ob ein Datenabgleich durchgeführt werden kann oder nicht (S305). Falls ein Datenabgleich durchgeführt werden kann, extrahiert die Datenabgleichseinheit 103 die angefragten Nutzdaten und den korrespondierenden ECC und gleicht die extrahierten Daten ab (S205). Weiterhin erhält die ECC-Korrektureinheit 102 die abgeglichenen Daten von der Datenabgleichseinheit 103, führt eine ECC-Korrektur auf den angefragten Nutzdaten unter Verwendung der ECC-Daten durch und gibt dann die angefragten Nutzdaten an die Anfragequelle 101 zurück (S206). Der Vorgang ist abgeschlossen, wenn die Gesamtheit der angefragten Nutzdaten zurückgegeben worden ist (S207).
  • Die Arbeitsweise in jedem von S203, S400, S401, S402, S305, S205, S206 und S207 ist die gleiche wie jene, die im Hinblick auf 4 beschrieben wurde.
  • Mit Bezug auf 8, 9 und 12 wird nun die Arbeitsweise der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel konkreter beschrieben.
  • Die Arbeitsweise der Speichersteuervorrichtung 100 wird hier unter der Annahme eines Beispiels beschrieben, wo eine Leseanfrage, 4 Bytes von Adresse 0000h (1) zu lesen, von der Anfragequelle 101 als eine erste Leseanfrage angenommen wird, und bevor die angefragten Nutzdaten in Erwiderung auf die erste Leseanfrage zurückgegeben werden, eine Leseanfrage, 4 Bytes von Adresse 0004h (1) zu lesen, als eine zweite Leseanfrage angenommen wird.
  • T1 bis T11 von 12 repräsentieren Lücken in einem Pipeline-Vorgang.
  • Speicher CLK stellt eine Betriebsuhr der Anfragequelle 101, der Speichervorrichtung 100 und des Speichers 105 dar.
  • In 12 korrespondiert Befehl C1 zu C1 von 1, Befehl (C2) zu C2 von 7 und Befehl (C3) korrespondiert zu C3 von 7. In 12 stellt gelesene Daten (aus) die Ausgabe der angefragten Nutzdaten von der ECC-Korrektureinheit 102 an die Anfragequelle 101 dar.
  • In 12 stellt gelesene Daten (1) die Eingabe der gelesenen Daten von dem Speicher 105 dar. sRead-0000 stellt eine Leseanfrage von der Anfragequelle 101 dar und stellt die Leseanfrage, 4 Bytes von Adresse 0000h (1) zu lesen, dar. sRead-0004 stellt eine Leseanfrage von der Anfragequelle 101 dar und stellt die Leseanfrage, 4 Bytes von Adresse 0004h (1) zu lesen, dar. dRead-0000 stellt einen Lesebefehl an den Speicher 105 dar und stellt den Lesebefehl, 4 Bytes von Adresse 0000h (2) zu lesen dar.
  • dRead-0004 stellt einen Lesebefehl an den Speicher 105 dar und stellt den Lesebefehl, 4 Bytes von Adresse 0004h (2) zu lesen dar.
  • dRead-0008 stellt einen Lesebefehl an den Speicher 105 dar und stellt den Lesebefehl, 4 Bytes von Adresse 0008h (2) zu lesen dar.
  • In anderen Abschnitten als gelesene Daten (aus), stellt Data-0000 die Daten von Adresse 0000h (2) dar, die von dem Speicher 105 gelesen werden.
  • In anderen Abschnitten als gelesene Daten (aus), stellt Data-0004 die Daten von Adresse 0004h (2) dar, welche von dem Speicher 105 gelesen werden.
  • In anderen Abschnitten als gelesene Daten (aus) stellt Data-0008 die Daten von Adresse 0008h (2) dar, die von dem Speicher 105 gelesen werden.
  • In dem gelesene Daten(aus)-Abschnitt stellt Data-0000 die angefragten Nutzdaten von Adresse 0000h (1) dar, welche an die Anfragequelle 101 ausgegeben werden. In dem gelesene Daten(aus)-Abschnitt stellt Data-0004 die angefragten Nutzdaten von Adresse 0004h (1) dar, welche an die Anfragequelle 101 ausgegeben werden.
  • Zunächst nimmt die Speicheradresskonvertierungseinheit 106 von der Anfragequelle 101 eine Leseanfrage an, 4 Bytes von Adresse 0000h (1) (sRead-0000 von 12) zu lesen, an (S201).
  • Dann bestimmt die Trefferbestimmungseinheit 113, ob ein Treffer für die angenommene Leseanfrage in den in dem internen Zwischenspeicher A 109 gespeicherten Daten gebunden werden kann (S301).
  • An diesem Punkt sind keine Daten in dem internen Zwischenspeicher A 109 gespeichert. Demgemäß ist einem Ergebnis einer Bestimmung in S301 NEIN.
  • Dann erzeugt die Speicheradresskonvertierungseinheit 106 Lesebefehle, um anzuweisen, von Adresse 0000h (2) zu lesen und von Adresse 0004h (2) zu lesen (dRead-0000 und dRead-0004 von 12) und gibt die erzeugten Lesebefehle an den Speicher 105 aus (S202).
  • Dann überprüft die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht (S505). In diesem Fall sind nachfolgende Nutzdaten in den gelesenen Daten von Adresse 0004h (2) enthalten, so dass die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „Interner-Zwischenspeicher-A-Adress”-Wert und den „Distanzinformation A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 aktualisiert (S507).
  • Als ein Ergebnis wird „0000h” in die „Interner-Zwischenspeicher-A-Adresse”, wie in dem „Interner-Zwischenspeicher-A-Adress”-Abschnitt von 12 veranschaulicht ist, geschrieben und „4” wird in die „Distanzinformation A” geschrieben.
  • Die Speicheradresskonvertierungseinheit 106 speichert die Lesebefehle (dRead-0000 und dRead-0004 von 12), die Leseanfrage (sRead-0004 von 12) und den Speicherdateneingabebefehl in dem FIFO-Zwischenspeicher 110 (S501).
  • Man nehme hier an, dass die Speicheradresskonvertierungseinheit 106 von der Anfragequelle 101 eine Leseanfrage annimmt, 4 Bytes von Adresse 0004h (1) zu lesen (sRead-0004 von 12) (S201).
  • Wie oben beschrieben, wird in dem Vorgang von S507 „Adresse 0000h” in der „Interner-Zwischenspeicher-A-Adresse” geschrieben und in „4” wird in die „Distanzinformation A” in der Interner-Zwischenspeicher-Information Speichereinheit 112 geschrieben, und die Daten von Adresse 0004h (2) werden in dem internen Zwischenspeicher A 109 gespeichert. Demgemäß ist ein Ergebnis einer Bestimmung in S301 JA.
  • Daher erzeugt die Speicheradresskonvertierungseinheit 106 einen Lesebefehl, um anzuweisen, von Adresse 0008h (2) zu lesen (dRead-0008 in 12) (S302).
  • Dann gibt die Befehlsausgabe-Intervallsteuereinheit 114 den Lesebefehl (dRead-0008 von 12) an den Speicher 105 nach einem Zeitintervall 105 aus, um eine Verwendung von Daten in dem internen Zwischenspeicher A 109 zu erlauben (Zeit zum Vermeiden einer Datenkollision).
  • Von dem Zeitpunkt, bei dem die Leseanfrage (sRead-0004 von 12) von der Anfragequelle 101 eingegeben wird, kann der Lesebefehl (dRead-0008 von 12) an den Speicher 105 zu einem Zeitpunkt eines Referenzzeichens 1201 von 12 ausgegeben werden.
  • In diesem Ausführungsbeispiel gibt die Befehlsausgabe-Intervallsteuereinheit 114 jedoch den Lesebefehl (dRead-0008 von 12) an den Speicher 105 zum Zeitpunkt eines Referenz-Signals 1202 aus, nachdem der Ausgabezeitpunkt des Lesebefehls um eine Lücke von dem Zeitpunkt an, bei dem der Lesebefehl ausgegeben werden kann, verzögert wurde, aus.
  • Dann überprüft die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht (S505).
  • In diesem Fall sind nachfolgende Nutzdaten in den gelesenen Daten von Adresse 0008h (2) enthalten, so dass die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „Interner-Zwischenspeicher-A-Adress”-Wert und den „Distanz-Informationen-A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 aktualisiert (S507).
  • Als ein Ergebnis wird „Adresse 0004h” in die „Interner-Zwischenspeicher-A-Adresse” geschrieben, wie in dem „Interner-Zwischenspeicher-A-Adress”-Abschnitt von 12 veranschaulicht ist, und „4” wird in die „Distanzinformation A” geschrieben.
  • Die Speicher-Adress-Konvertierungseinheit 106 speichert den Lesebefehl (dRead-0008 von 12), die Leseanfrage (sRead-0004 von 12), den Speicherdateneingabebefehl und den Interner-Zwischenspeicher-Dateneingabebefehl in den FIFO-Zwischenspeicher 110 (S501).
  • Parallel zur oben beschriebenen Arbeitsweise nimmt die Datenabgleichseinheit 103 die obersten Lesebefehle (dRead-0000 und dRead-0004 von 12) und einen Dateneingabebefehl von dem FIFO-Zwischenspeicher 110 heraus (S502 und S503).
  • In diesem Fall, da der interne Zwischenspeicher A 109 nicht verwendet wird, ist S504 NEIN. Wie in 12 veranschaulicht wird, empfängt die Datenauswahleinheit 108 mit einer Eingabe von dem Speicher 105 die Daten von Adresse 0000h (2) (Data-0000 von 12) (S203).
  • Dann, da die eingegebenen Daten (Data-0000 von 12) nicht die Enddaten sind (NEIN in S400), werden sie nicht in dem internen Zwischenspeicher A 109 gespeichert.
  • Da ein Datenabgleich mit nur den eingegebenen Daten (Data-0000 von 12) nicht durchgeführt werden kann (NEIN in S305), wird eine Eingabe der nächsten Daten von dem Speicher 105 erwartet.
  • Zu dieser Zeit werden die Daten von Adresse 0000h (2) (Data-0000 von 12) in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • Dann empfängt die Datenauswahleinheit 108 als eine Eingabe von dem Speicher 105 die Daten von Adresse 0004h (2) (Data-0004 von 12) (S203).
  • Da die eingegebenen Daten (Data-0004 von 12) die Enddaten sind (JA in S400) und die nachfolgenden Nutzdaten enthalten (JA in S401) werden die eingegebenen Daten in dem internen Zwischenspeicher A 109 gespeichert.
  • Da ein Datenabgleich mit den eingegebenen Daten (Data-0004 von 12) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0000 von 12) durchgeführt werden kann (JA in S305), gleicht die Datenabgleichseinheit 103 die Daten ab, und die ECC-Korrektureinheit 102 führt eine ECC-Korrektur durch und gibt die ECC-korrigierten angefragten Nutzdaten (Data-0000 von 12) an die Anfragequelle 101 aus (S205 und S206).
  • Die Daten von Adresse 0004h (2) (Data-00004 von 12) werden in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • Die Datenabgleichseinheit 103 nimmt aus dem FIFO-Zwischenspeicher den nächsten Lesebefehl (dRead-0008 von 12), Interner-Zwischenspeicher-Dateneingabebefehl und Speicherdateneingabebefehl heraus (S502 und S503).
  • In diesem Fall, da der interne Zwischenspeicher A 109 verwendet wird, ist S504 JA und die Daten in dem internen Zwischenspeicher A 109 (Data-0004 von 12) werden an die Datenabgleichseinheit 103 ausgegeben (S303).
  • Da ein Datenabgleich mit den Daten von dem internen Zwischenspeicher A 109 (Data-0004 von 12) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0004 von 12) nicht durchgeführt werden kann (NEIN in S305) wird eine Eingabe der nächsten Daten von dem Speicher 105 erwartet.
  • Zu dieser Zeit werden die Daten von dem internen Zwischenspeicher A 109 (Data-00004 von 12) in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • Dann empfängt die Datenauswahleinheit 108 als eine Eingabe von dem Speicher 105 die Daten von Adresse 0008h (2) (Data-0008 von 12) (S203).
  • Falls dRead-0008 von der Befehlsausgabe-Intervallsteuereinheit 114 an den Speicher 105 zum Zeitpunkt des Referenz-Zeichens 1201 ausgegeben wird, wird Data-0008 von dem Speicher 105 zur Zeit eines Referenz-Zeichens 1203 eingegeben. Wie oben beschrieben, wird jedoch dRead-0008 zum Zeitpunkt des Referenz-Zeichens 1202 ausgegeben. Somit wird Data-0008 von dem Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1204 eingegeben.
  • Da die eingegebenen Daten (Data-0008 von 12) die Enddaten sind (JA in S400) und nachfolgende Nutzdaten enthalten (JA in S401), werden die eingegebenen Daten in dem internen Zwischenspeicher A 109 gespeichert.
  • Da ein Datenabgleich mit den eingegebenen Daten (Data-0008 von 12) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0004 von 12) durchgeführt werden kann (JA in S305), gleicht die Datenabgleichseinheit 103 die Daten ab, und die ECC-Korrektureinheit 102 führt eine ECC-Korrektur durch und gibt die ECC-korrigierten angefragten Nutzdaten (Data-0004 von 12) an die Anfragequelle 101 aus (S205 und S206).
  • Die Daten von Adresse 0008h (2) (Data-0004 von 12) werden in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • In dem Beispiel von 12, falls der Ausgabezeitpunkt von dRead-0008 nicht von der Befehlsausgabe-Intervallsteuereinheit 114 angepasst wird und dRead-0008 zum Zeitpunkt des Referenz-Zeichens 1201 ausgegeben wird, wird Data-0008 von dem Speicher 105 zum Zeitpunkt des Referenz-Zeichens 1203 eingegeben.
  • In diesem Fall wird Data-0008 in die Letztmaliger-Wert-Halteeinheit 104 zum Zeitpunkt eines Referenz-Zeichens 1206 eingegeben. Dies kollidiert mit dem Zeitpunkt, bei dem Data-0004 in dem internen Zwischenspeicher A 109 in die Letztmaliger-Wert-Halteeinheit 104 eingegeben wird, wie bei einem Referenz-Zeichen 1205 angezeigt wird.
  • Als ein Ergebnis werden entweder Data-0008 oder Data-0004 verloren.
  • Dagegen gibt gemäß diesem Ausführungsbeispiel die Befehlsausgabe-Intervallsteuereinheit 114 dann dRead-0008 zum Zeitpunkt des Referenz-Zeichens 1202 aus, so dass Data-0008 von dem Speicher 105 zum Zeitpunkt des Referenzzeichens 1204 eingegeben wird.
  • Als zum Zeitpunkt des Referenz-Zeichens 1204 angegeben, wird Data-0008 in die Letztmaliger-Wert-Halteeinheit 104 zum Zeitpunkt eines Referenz-Zeichens 1207 eingegeben und es tritt keine Datenkollision auf.
  • Mit Bezug zu 8, 9 und 13 wird nun ein Beispiel der Arbeitsweise der Speichersteuervorrichtung 100, die den internen Zwischenspeicher B 1090 zusätzlich zu dem internen Zwischenspeicher A 109 enthält, beschrieben.
  • Die Arbeitsweise der Speichersteuervorrichtung 100 wird hier unter der Annahme eines Beispiels beschrieben, wo eine Leseanfrage, 4 Bytes von Adresse 090h (1) zu lesen, von der Anfragequelle 101 als eine erste Leseanfrage angenommen wird, und bevor die angefragten Nutzdaten in Erwiderung auf die erste Leseanfrage zurückgegeben werden, eine Leseanfrage, 4 Bytes von Adresse 0014h (1) zu lesen, als eine zweite Leseanfrage angenommen wird.
  • Wie in „Interner-Zwischenspeicher-B-Adresse” und „Interner-Zwischenspeicher-B” von 13 veranschaulicht ist, wird angenommen, dass die Daten von der Adresse 0018h (2) (Data-0018 von 13) in dem internen Zwischenspeicher B 1090 durch eine vorhergehende Leseanfrage für Adresse 0010h (1) gespeichert worden sind.
  • In 13 ist Data-0018 mit Doppellinien dargestellt, um anzuzeigen, dass Data-0018 kontinuierlich in dem internen Zwischenspeicher B 1090 gehalten wird.
  • Zunächst nimmt die Speicheradresskonvertierungseinheit 106 von der Anfragequelle 101 eine Leseanfrage an, 4 Bytes von Adresse 0000h (1) zu lesen (sRead-0000 von 13) (S201). Dann bestimmt die Trefferbestimmungseinheit 113, ob ein Treffer für die angenommene Leseanfrage in den in dem internen Zwischenspeicher 109 oder dem internen Zwischenspeicher B 1090 gespeicherten Daten gefunden werden kann (S301). An diesem Punkt sind keine Daten in dem internen Zwischenspeicher A 109 gespeichert und die Daten in dem internen Zwischenspeicher B 1090 stimmen nicht mit der durch die Leseanfrage angefragten Adresse überein. Demgemäß ist ein Ergebnis einer Bestimmung in S301 NEIN.
  • Dann erzeugt die Speicheradresskonvertierungseinheit 106 Lesebefehle, um anzuweisen, von einer Adresse 0000h (2) zu lesen und von einer Adresse 0004h (2) zu lesen (dRead-0000 und dRead-0004 von 13) und gibt die erzeugten Lesebefehle an den Speicher 105 aus (S202).
  • Dann überprüft die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht (S505). In diesem Fall, da nachfolgende Nutzdaten in den gelesenen Daten von Adresse 0004h (2) enthalten sind, aktualisiert die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „Interner-Zwischenspeicher-A-Adress”-Wert und den „Distanzinformation-A”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 (S507).
  • Als ein Ergebnis wird „Adresse 0000h” in die „Interner-Zwischenspeicher-A-Adresse”, wie in dem „Interner-Zwischenspeicher-A-Adress”-Abschnitt von 13 veranschaulicht, geschrieben und „4” wird in die „Distanzinformation A” geschrieben.
  • Die Speicheradresskonvertierungseinheit 106 speichert die gelesenen Daten (dRead-0000 und dRead-0004 von 13) und den Speicherdateneingabebefehl in dem FIFO-Zwischenspeicher 110 (S501).
  • Man nehme hier an, dass die Speicheradresskonvertierungseinheit 106 von der Anfragequelle 101 eine Leseanfrage annimmt, 4 Bytes von Adresse 0014h (1) zu lesen (sRead-0014 von 13) (S201). Wie oben beschrieben, von den Daten von Adresse 0018h (2) und den Daten von Adresse 001Ch (2), die zu Adresse 0014h (1) korrespondieren, sind die Daten von 0018h (2) (Data-0018 von 13) in dem internen Zwischenspeicher B 1090 zwischengespeichert worden. Demgemäß wird S301 als JA bestimmt.
  • Daher erzeugt die Speicheradresskonvertierungseinheit 106 einen Lesebefehl, um anzuweisen, von Adresse 001Ch (2) zu lesen (dRead-001C von 13) (S302).
  • Dann gibt die Befehlsausgabe-Intervallsteuereinheit 114 den Lesebefehl (dRead-001C von 13) an den Speicher 105 nach einem Zeitintervall aus, um eine Verwendung der Daten in dem internen Zwischenspeicher B 1090 zu erlauben (Zeit zum Vermeiden einer Datenkollision).
  • Von dem Zeitpunkt an, bei dem die Leseanfrage (sRead-0014 von 13) von der Anfragequelle 101 eingegeben wird, wird der Lesebefehl (dRead-001C von 13) an den Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1301 ausgegeben.
  • In diesem Ausführungsbeispiel gibt jedoch die Befehlsausgabe-Intervallsteuereinheit 114 den Lesebefehl (dRead-001C von 13) an den Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1302 durch Verzögern des Ausgabezeitpunkts des Lesebefehls um eine Lücke von dem Zeitpunkt an, bei dem der Lesebefehl ausgegeben werden kann, aus.
  • Dann überprüft die Interner-Zwischenspeicher-Verwaltungseinheit 107, ob nachfolgende Nutzdaten in den Enddaten enthalten sind oder nicht (S505). In diesem Fall, da nachfolgende Nutzdaten in den gelesenen Daten von Adresse 001Ch (2) enthalten sind, aktualisiert die Interner-Zwischenspeicher-Verwaltungseinheit 107 den „Interner-Zwischenspeicher B-Adress”-Wert und den „Distanzinformation-B”-Wert in der Interner-Zwischenspeicher-Informationsspeichereinheit 112 (S507).
  • Als ein Ergebnis wird „Adresse 0014h” in die „Interner-Zwischenspeicher-B-Adresse” wie in dem „Interner-Zwischenspeicher-B-Adress”-Abschnitt von 13 veranschaulicht geschrieben, und „4” wird in die „Distanzinformation B” geschrieben.
  • Die Speicheradresskonvertierungseinheit 106 speichert die gelesenen Daten (dRead-001C von 13), die Leseanfrage (sRead-0014 von 13), den Speicherdateneingabebefehl und den Interner-Zwischenspeicher-Dateneingabebefehl in dem FIFO-Zwischenspeicher 110 (S501).
  • In diesem Beispiel weist der Interne-Zwischenspeicher-Dateneingabebefehl an, die Daten in den internen Zwischenspeicher B 1090 einzugeben.
  • Auf der anderen Seite, wenn die Daten in dem internen Zwischenspeicher A 109 verwendet werden, weist der interne Zwischenspeicherdateneingabebefehl an, die Daten in den internen Zwischenspeicher A 109 einzugeben.
  • Parallel zur oben beschriebenen Arbeitsweise nimmt die Datenabgleichseinheit 103 die obersten Lesebefehle (dRead-0000 und dRead-0004 von 13) und einen Speicherdateneingabebefehl aus dem FiFO-Zwischenspeicher 110 heraus (S502 und S503).
  • In diesem Fall, da der interne Zwischenspeicher A 109 nicht verwendet wird, ist S504 NEIN und die Datenauswahleinheit 108 empfängt als eine Eingabe von dem Speicher 105 die Daten von Adresse 0000h (2) (Data-0000 von 13), wie in 13 veranschaulicht ist.
  • Dann, da die eingegebenen Daten (Data-0000 von 13) nicht die Enddaten sind (NEIN in S400), werden sie nicht in dem internen Zwischenspeicher A 109 gespeichert.
  • Da ein Datenabgleich nicht mit nur den eingegebenen Daten (Data-0000 von 13) durchgeführt werden kann (NEIN in S305), wird eine Eingabe der nächsten Daten von dem Speicher 105 erwartet.
  • Zu dieser Zeit werden die Daten von Adresse 0000h (2) (Data-0000 von 13) in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • Dann empfängt die Datenauswahleinheit 108 als eine Eingabe von dem Speicher 105 die Daten von Adresse 0004h (2) (Data-0004h von 13) (S203).
  • Da die angegebenen Daten (Data-0004 von 13) die Enddaten sind (JA in S400) und nachfolgende Nutzdaten enthalten (JA in S401), werden die eingegebenen Daten in dem internen Zwischenspeicher A 109 gespeichert.
  • Da ein Datenabgleich mit den eingegebenen Daten (Data-0004 von 13) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0004 von 13) durchgeführt werden kann (JA in S305), gleicht die Datenabgleichseinheit 103 die Daten ab, und die ECC-Korrektureinheit 102 führt eine ECC-Korrektur durch und gibt die ECC-korrigierten angefragten Nutzdaten (Data-0000 von 13) an die Anfragequelle 101 aus (S205 und S206).
  • Die Daten von Adresse 0004h (2) (Data-0004 von 13) werden in der Letztmaliger-Werte-Halteeinheit 104 gehalten.
  • Die Datenabgleichseinheit 103 nimmt die nächsten gelesenen Daten (dRead-001C von 13), einen Interner-Zwischenspeicher-Dateneingabebefehl und einen Speicherdateneingabebefehl aus dem FIFO-Zwischenspeicher 110 heraus (S502 und S503).
  • In diesem Fall, da der interne Zwischenspeicher B 1090 verwendet wird, ist S504 JA, und die Daten in dem internen Zwischenspeicher B 1090 (Data-0018 von 13) werden an die Datenabgleichseinheit 103 ausgegeben (S303).
  • Da ein Datenabgleich mit den Daten von dem internen Zwischenspeicher B 1090 (Data-0018 in 13) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0004 von 13) nicht durchgeführt werden kann (NEIN in S305), wird eine Eingabe der nächsten Daten von dem Speicher 105 erwartet.
  • Zu dieser Zeit werden die Daten von dem internen Zwischenspeicher 109 (Data-0018 von 13) in der Letztmaliger-Wert-Halteeinheit 104 gehalten).
  • Dann empfängt die Datenauswahleinheit 108 als eine Eingabe von dem Speicher 105 die Daten von Adresse 001Ch (2) (Data-001C von 13) (S203).
  • Falls dRead-001C von der Befehlsausgabe-Intervallsteuereinheit 114 an den Speicher 105 zum Zeitpunkt des Referenz-Zeichens 1301 ausgegeben wird, wird Data-001C von dem Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1303 eingegeben. Wie oben beschrieben, wird jedoch, da dRead-001C zum Zeitpunkt des Referenz-Zeichens 1302 ausgegeben wird, Data-001C von dem Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1304 eingegeben.
  • Da die eingegebenen Daten (Data-001C von 13) die Enddaten sind (JA in S400) und nachfolgende Nutzdaten enthalten (JA in S401), werden die eingegebenen Daten in dem internen Zwischenspeicher B 1090 gespeichert.
  • Da ein Datenabgleich mit den eingegebenen Daten (Data-001C von 13) und den Daten in der Letztmaliger-Wert-Halteeinheit 104 (Data-0018 von 13) durchgeführt werden kann (JA in S305), gleicht die Datenabgleichseinheit 103 die Daten ab, und die ECC-Korrektureinheit 102 führt eine ECC-Korrektur durch und gibt die ECC-korrigierten angefragten Nutzdaten (Data-0014 von 13) an die Anfragequelle 101 aus (S205 und S206).
  • Die Daten von Adresse 001Ch (2) (Data-001C von 13) werden in der Letztmaliger-Wert-Halteeinheit 104 gehalten.
  • Es ist oben beschrieben worden, dass Daten einer Adresse (4-Bytes-Daten) in dem internen Zwischenspeicher A 109 und dem internen Zwischenspeicher B 1090 gespeichert werden. Daten von zwei oder mehreren Adressen können in dem internen Zwischenspeicher A 109 und im internen Zwischenspeicher B 1090 gespeichert werden.
  • In einem Fall, in dem ein Konvertieren einer Adresse in dem Format von 1, das durch eine Leseanfrage von der Anfragequelle 101 spezifiziert wird, in einer Adresse in dem Forma von 2 in drei oder mehreren ausgelesenen Kandidatenadressen resultiert, und die Daten der ersten zwei Adressen von den drei oder mehreren ausgelesenen Kandidatenadressen in dem internen Zwischenspeicher A 109 oder dem internen Zwischenspeicher B 1090 zwischengespeichert worden sind, erzeugt die Speicheradresse-Konvertierungseinheit 106 einen Lesebefehl (partieller Lesebefehl) um anzuweisen, die Daten von einer anderen Adresse oder Adressen als den ersten zwei Adressen, d. h. die Daten der dritten Adresse oder der dritten und späteren Adressen, zu lesen.
  • Es ist oben beschrieben worden, dass die Befehlsausgabe-Intervallsteuereinheit 114 einen partiellen Lesebefehl ausgibt, der von der Speicheradresskonvertierungseinheit 106 erzeugt worden ist, an den Speicher 105 durch Verzögern des Ausgabezeitpunkt des partiellen Lesebefehls um eine Lücke.
  • Dagegen kann eine Kollision zwischen den gelesenen Daten von dem Speicher 105 und den Daten von dem internen Zwischenspeicher A 109 durch Einrichten, dass die Speicherkonvertierungseinheit 106 einen partiellen Lesebefehl durch Verzögern des Erzeugungszeitpunkts um eine Lücke von dem regulären Erzeugungszeitpunkt erzeugt, verhindert werden.
  • Die Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel ist auch in der Lage, mit Leseanfragen in Einheiten eines ganzzahligen Vielfachens von 4 Bytes umzugehen, wie in dem Fall des ersten Ausführungsbeispiels.
  • Das in diesem Ausführungsbeispiel beschriebene Verfahren kann auch mit einem Fall umgehen, in dem drei oder mehr interne Zwischenspeicher eingesetzt werden.
  • In diesem Ausführungsbeispiel
    ist eine Speichersteuervorrichtung beschrieben worden, die einen Pipeline-Speicher unterstützt und die folgenden Mittel aufweist:
    • (a) Mittel, um eine an einen Speicher ausgegebene Anfrage zu speichern; und
    • (b) Mittel, um ein Befehlsausgabe-Intervall zu steuern, um ein Ausgeben des nächsten auszugebenden Befehls an den Speicher zu verzögern.
  • Drittes Ausführungsbeispiel:
  • In dem zweiten Ausführungsbeispiel, wenn die Daten in dem internen Zwischenspeicher A 109 verwendet werden, wird ein Ausgabeintervall von Lesebefehlen an den Speicher 105 bedingungslos verlängert. Jedoch, zur Zeit, wenn eine Leseanfrage von der Anfragequelle 101 angenommen wird, falls Zeit ist, eine Verwendung des internen Zwischenspeichers A 109 zu erlauben, das heißt, falls kein Auftreten einer Datenkollision erwartet wird, ist es nicht notwendig, das Ausgabeintervall von Lesebefehlen zu verlängern.
  • In diesem Ausführungsbeispiel wird ein Verfahren beschrieben, durch welches Lesebefehle ökonomisch ausgegeben werden, durch ein Steuern, das Befehlsausgabeintervall nur zu verlängern, wenn detektiert wird, dass nicht ausreichend Zeit ist, eine Verwendung des internen Zwischenspeichers A 109 zu erlauben.
  • 10 veranschaulicht ein Beispiel der Konfiguration der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel.
  • Verglichen mit 7 wird eine Ausgabeintervallbestimmungseinheit 115 in 10 hinzugefügt.
  • Die Ausgabeintervallbestimmungseinheit 115 bestimmt, ob es ein Ausgabeintervall einer vorbestimmten Dauer oder länger zwischen einem partiellen Lesebefehl, der gerade an den Speicher 105 ausgegeben werden soll, und einem Lesebefehl (ein Gesamtbereichslesebefehl oder ein partieller Lesebefehl), der unmittelbar vor diesem partiellen Lesebefehl ausgegeben wird, gibt.
  • Insbesondere bestimmt die Ausgabeintervallbestimmungseinheit 115, ob eine abgelaufene Zeit nach dem Ausgeben des letzten Lesebefehls (ein partieller Lesebefehl oder ein Gesamtbereichslesebefehl) das Ausgabeintervall (Verzögerungszeit), das in dem zweiten Ausführungsbeispiel beschrieben wurde, übersteigt.
  • Falls die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls das in dem zweiten Ausführungsbeispiel beschriebene Ausgabeintervall (Verzögerungszeit) übersteigt, gibt die Befehlsausgabe-Intervallsteuereinheit 114 den partiellen Lesebefehl an den Speicher 105 ohne ein Intervall aus. Die Ausgabeintervallbestimmungseinheit 115 hält die Zeit, bei welcher der letzte Lesebefehl ausgegeben wird, als eine Ausgabezeit der neuesten Lesung und der aktuellen Zeit, das in dem zweiten Ausführungsbeispiel beschriebene Ausgabeintervall (Verzögerungszeit) übersteigt.
  • In diesem Ausführungsbeispiel korrespondiert die Ausgabeintervallbestimmungseinheit 115 auch mit einem Beispiel der Befehlsausgabeeinheit.
  • Die Arbeitsweise der Speichersteuervorrichtung 100 gemäß diesem Ausführungsbeispiel wird nun mit Bezug auf 11 und 14 beschrieben.
  • Unterschiede von dem zweiten Ausführungsbeispiel werden nachstehend im Wesentlichen beschrieben.
  • Die Arbeitsweise der Speichersteuervorrichtung 100 wird nachstehend unter der Annahme eines Beispiels beschrieben, in dem eine Leseanfrage, 4 Bytes von Adresse 0000h (1) zu lesen, von der Anfragequelle 101 als eine erste Leseanfrage angenommen wird, und bevor die angefragten Nutzdaten in Erwiderung auf die erste Leseanfrage zurückgegeben werden, eine Leseanfrage, 4 Bytes von Adresse 0004h (1) zu lesen, als eine zweite Leseanfrage angenommen wird.
  • Zunächst empfängt die Speicheradresskonvertierungseinheit 106 als eine Eingabe eine Leseanfrage, um 4 Bytes von Adresse 0000h (1) zu lesen (sRead-0000 von 14) und erzeugt, wie in dem zweiten Ausführungsbeispiel beschrieben, einen Gesamtbereichslesebefehl, um 8 Bytes von Adresse 0000h (2) zu lesen. Die Befehlsausgabe-Intervallsteuereinheit 114 gibt diesen Gesamtbereichslesebefehl an den Speicher 105 aus (S201, S301 und S202).
  • Wenn der Lesebefehl ausgegeben wird, benachrichtigt die Befehlsausgabe-Intervallsteuereinheit 114 die Ausgabe-Intervallbestimmungseinheit 115 über die Ausgabe des Lesebefehls. Die Ausgabe-Intervallbestimmungseinheit 115 aktualisiert die Ausgabezeit der neuesten Lesung mit der Zeit, bei welcher die Ausgabe des Lesebefehls von der Befehlsausgabe-Intervallsteuereinheit 114 mitgeteilt wird (S602).
  • Der durchzuführende Vorgang von diesem Punkt an ist im Wesentlichen der Gleiche, wie der des zweiten Ausführungsbeispiels.
  • Dann empfängt die Speicheradresskonvertierungseinheit 106 als eine Eingabe eine Leseanfrage, um 4 Bytes von Adresse 0004h (1) zu lesen (sRead-0004 von 14) (S201).
  • Da die Daten in dem internen Zwischenspeicher A 109 hier verwendet werden können, wird ein Treffer bestimmt und S301 ist JA. Wie in dem Fall des zweiten Ausführungsbeispiels erzeugt die Speicheradresskonvertierungseinheit 106 einen partiellen Lesebefehl (dRead-0008 von 14) (S302).
  • Dann bestimmt die Ausgabeintervallbestimmungseinheit 115, ob die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls (dRead-0004 von 14), die Verzögerungszeit (in dem Beispiel von 04:14 Uhr, Zeit, die mit einer Lücke korrespondiert) übersteigt oder nicht (S601).
  • In dem Beispiel von 14 übersteigt die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls die Verzögerungszeit (JA in S601), so dass die Befehlsausgabe-Intervallsteuereinheit 114 den Lesebefehl (dRead-0008 von 14) an den Speicher 105 ohne ein Ausgabeintervall (ohne auf ein Ablaufen der Verzögerungszeit zu warten) ausgibt.
  • In dem zweiten Ausführungsbeispiel wird der Lesebefehl (dRead-0008) an den Speicher 105 zum Zeitpunkt eines Referenz-Zeichens 1402 ausgegeben. In diesem Ausführungsbeispiel wird der Lesebefehl (dRead-0008) an den Speicher 105 zu dem Zeitpunkt eines Referenz-Zeichens 1401 ausgegeben.
  • Als ein Ergebnis werden die gelesenen Daten (Data-0008) von dem Speicher 105 zu dem Zeitpunkt eines Referenz-Zeichens 1403 ausgegeben.
  • Auf der anderen Seite werden in dem zweiten Ausführungsbeispiel die gelesenen Daten (Data-0008) zu dem Zeitpunkt eines Referenz-Zeichens 1404 eingegeben.
  • Auf der anderen Seite, falls die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls nicht die Verzögerungszeit übersteigt (NEIN in S601), gibt die Befehlsausgabeintervall-Steuereinheit 114 den Lesebefehl (dRead-0008 in 14) an den Speicher 105 (S506) aus, nachdem die Verzögerungszeit von dem Zeitpunkt an, bei dem der Lesebefehl an den Speicher 105 ausgegeben werden kann, abgelaufen ist, wie in dem Fall des zweiten Ausführungsbeispiels. Der Vorgang von diesem Punkt an ist der gleiche, wie der in dem zweiten Ausführungsbeispiel und daher wird eine Beschreibung hiervon weggelassen.
  • Es ist oben beschrieben worden, dass, falls die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls nicht die Verzögerungszeit übersteigt, gibt die Befehlsausgabe-Intervallsteuereinheit den Lesebefehl an den Speicher 105 aus, nachdem die Verzögerungszeit von dem Zeitpunkt an, bei dem der Lesebefehl ausgegeben werden kann, abgelaufen ist.
  • Dagegen kann es eingerichtet werden, dass, falls die abgelaufene Zeit nach der Ausgabe des letzten Lesebefehls nicht die Verzögerungszeit übersteigt, die Befehlsausgabe-Intervallsteuereinheit 114 einen Zeitunterschied zwischen der Verzögerungszeit und der abgelaufenen Zeit nach der Ausgabe des letzten Lesebefehls berechnet und den Lesebefehl an den Speicher 105 ausgibt, nachdem die Zeitdifferenz von dem Zeitpunkt an, bei dem der Lesebefehl ausgegeben werden kann, abgelaufen ist.
  • In diesem Ausführungsbeispiel
    ist eine Speichersteuervorrichtung mit den folgenden Mitteln beschrieben worden, wobei ein Ausgeben eines Befehls nicht verzögert wird, falls genügend Zeit ist, um eine Wiederverwendung von Daten in einem internen Zwischenspeicher zu erlauben:
    • (a) Mittel, um zu bestimmen, ob ein Ausgabeintervall von einem Lesebefehl, der zuletzt ausgegeben wurde, eine Zeit übersteigt, um eine Wiederverwendung der Daten in dem internen Zwischenspeicher zu erlauben; und
    • (b) Mittel, um den Zeitpunkt des zuletzt ausgegebenen Lesebefehls zu erhalten.
  • Die Ausführungsbeispiele der vorliegenden Erfindung sind beschrieben worden. Zwei oder mehrere dieser Ausführungsbeispiele können in einer Kombination implementiert werden.
  • Alternativ kann eines dieser Ausführungsbeispiele teilweise implementiert werden.
  • Alternativ können zwei oder mehrere dieser Ausführungsbeispiele teilweise in einer Kombination implementiert werden.
  • Die vorliegende Erfindung ist nicht auf diese Ausführungsbeispiele beschränkt und diverse Modifikationen sind gegebenenfalls möglich.
  • Bezugszeichenliste
    • 100: Speichersteuervorrichtung, 101: Anfragequelle, 102: ECC-Korrektureinheit, 103: Datenabgleichseinheit, 104: Letztmaliger-Wert-Halteeinheit, 105: Speicher, 106: Speicheradress-Konvertierungseinheit, 107: Interner Zwischenspeicher-Verwaltungseinheit, 108: Datenauswahleinheit, 109: Interner Zwischenspeicher A, 110: FIFO-Zwischenspeicher, 111: Datenerfassungseinheit, 112: Interner-Zwischenspeicher-Informationsspeichereinheit, 113: Trefferbestimmungseinheit, 114: Befehlsausgabe-Intervallsteuereinheit, 115: Ausgabe-Intervallbestimmungseinheit, 1090: Interner Zwischenspeicher B.

Claims (15)

  1. Speichersteuervorrichtung, die mit einem Pipeline-Verfahren eine Leseanfrage verarbeitet zum Anfragen, Nutzdaten aus einem Speicher mit einer Vielzahl von Adressen, wobei jede Daten einer vorbestimmten Datenbreite speichert, auszulesen, wobei in dem Speicher Fehlerkorrekturdaten für jede Nutzdaten der Datenbreite eingestellt sind, wobei Nutzdaten der Datenbreite und Fehlerkorrekturdaten, welche miteinander korreliert sind, über zwei benachbarte Adressen gespeichert sind, und wobei Daten in Adresseinheiten ausgelesen werden, die Speichersteuervorrichtung umfassend: einen Cache-Bereich, in dem von dem Speicher ausgelesene Daten zwischengespeichert werden; eine Leseanfrageeingabeeinheit, welche als eine Eingabe eine Leseanfrage zum Anfragen, Nutzdaten eines ganzzahligen Vielfachen der Datenbreite auszulesen, empfängt; eine Cache-Bestimmungseinheit, die bestimmt, ob Daten zweier oder mehrerer ausgelesener Kandidatenadressen in dem Cache-Bereich zwischengespeichert worden sind oder zwischengespeichert werden oder nicht, wobei die zwei oder mehreren ausgelesenen Kandidatenadressen Adressen sind, in denen angefragte Nutzdaten, welche Nutzdaten sind, welche von der Leseanfrage angefragt werden, die von der Leseanfrageeingabeeinheit als eine Eingabe empfangen wird, und korrespondierende Fehlerkorrekturdaten, welche für eine Fehlerkorrektur der angefragten Nutzdaten verwendete Fehlerkorrekturdaten sind, gespeichert sind; und eine Befehlsausgabeeinheit, die, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen in dem Cache-Speicher zwischengespeichert worden sind oder zwischengespeichert werden, an den Speicher einen partiellen Lesebefehl ausgibt, um anzuweisen, Daten von einer anderen Adresse als einer Cache-Adresse auszulesen, nachdem eine vorbestimmte Verzögerungszeit von einem Zeitpunkt an abgelaufen ist, an dem der partielle Lesebefehl an den Speicher ausgegeben werden kann, wobei die Cache-Adresse eine Adresse der Daten, die in dem Cache-Speicher zwischengespeichert worden sind oder zwischengespeichert werden, von den zwei oder mehreren ausgelesenen Kandidatenadressen ist.
  2. Speichersteuervorrichtung gemäß Anspruch 1, wobei, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer führenden Adresse von den zwei oder mehreren ausgelesenen Kandidatenadressen und Daten von Null oder mehreren Adressen, die der führenden Adresse folgen, in dem Cache-Bereich zwischengespeichert worden sind oder zwischengespeichert werden, die Befehlsausgabeeinheit an den Speicher den partiellen Lesebefehl ausgibt, um anzuweisen, Daten einer anderen Adresse auszulesen als der Cache-Adresse, welche die führende Adresse einschließt.
  3. Speichersteuervorrichtung gemäß Anspruch 2, weiter umfassend: einen Fifo(First-In, First-Out)-Zwischenspeicher, in dem Befehle akkumuliert werden; und eine Datenerfassungseinheit, die als eine Eingabe einen Befehl von dem FiFo-Zwischenspeicher empfängt, und die angefragten Nutzdaten und die korrespondierenden Fehlerkorrekturdaten gemäß dem als eine Eingabe empfangenen Befehl erhält, wobei die Befehlsausgabeeinheit den partiellen Lesebefehl an den Speicher ausgibt, und in dem FiFo-Zwischenspeicher einen Cache-Dateneingabebefehl, um die Datenerfassungseinheit anzuweisen, die Daten der Cache-Adresse als eine Eingabe von dem Cache-Bereich zu empfangen, und einen Speicherdateneingabebefehl, um die Datenerfassungseinheit anzuweisen, die Daten der anderen Adresse als der Cache-Adresse von dem Speicher als eine Eingabe zu empfangen, speichert, und wobei die Datenerfassungseinheit als eine Eingabe von dem FiFo-Zwischenspeicher den Cache-Dateneingabebefehl und den Speicherdateneingabebefehl empfängt, und gemäß dem Cache-Dateneingabebefehl die Daten der Cache-Adresse als eine Eingabe von dem Cache-Bereich empfängt, und gemäß dem Speicherdateneingabebefehl die Daten der anderen Adresse als der Cache-Adresse, die in Erwiderung auf den partiellen Lesebefehl ausgelesen wird, als eine Eingabe von dem Speicher empfängt, und die angefragten Nutzdaten und die korrespondierenden Fehlerkorrekturdaten von den Daten der Cache-Adresse, die als eine Eingabe von dem Cache-Bereich empfangen werden, und den Daten der anderen Adresse als der Cache-Adresse, die als eine Eingabe von dem Speicher empfangen werden, erhält.
  4. Speichersteuervorrichtung gemäß Anspruch 3, wobei die Befehlsausgabeeinheit den partiellen Lesebefehl an den Speicher ausgibt, nachdem die Verzögerungszeit abgelaufen ist, um ein Auftreten einer Kollision in der Datenerfassungseinheit zwischen einer Eingabe der Daten der Cache-Adresse von dem Cache-Bereich und einer Eingabe der Daten der anderen Adresse als der Cache-Adresse von dem Speicher zu verhindern.
  5. Speichersteuervorrichtung gemäß einem der Ansprüche 1 bis 4, wobei, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen in dem Cache-Bereich nicht zwischengespeichert worden sind und nicht zwischengespeichert werden, die Befehlsausgabeeinheit an den Speicher einen Gesamtbereichslesebefehl ausgibt, um anzuweisen, Daten von einem gesamten Bereich der zwei oder mehreren ausgelesenen Kandidatenadressen auszulesen, ohne zu warten, dass die Verzögerungszeit abläuft.
  6. Speichersteuervorrichtung gemäß Anspruch 5, wobei, wenn sie den partiellen Lesebefehl an den Speicher ausgibt, die Befehlsausgabeeinheit bestimmt, ob eine abgelaufene Zeit von einem Zeitpunkt an, wenn einer von einem letzten Gesamtbereichslesebefehl und einem letzten partiellen Lesebefehl an den Speicher ausgegeben wird, die Verzögerungszeit übersteigt oder nicht, und wenn die abgelaufene Zeit von dem Zeitpunkt an, wenn einer des letzten Gesamtbereichslesebefehls und des letzten partiellen Lesebefehls an den Speicher ausgegeben wird, die Verzögerungszeit übersteigt, die Befehlsausgabeeinheit den partiellen Lesebefehl an den Speicher ausgibt, ohne zu warten, dass die Verzögerungszeit abläuft.
  7. Speichersteuervorrichtung gemäß Anspruch 6, wobei, wenn die abgelaufene Zeit von dem Zeitpunkt an, wenn einer des letzten Gesamtbereichslesebefehls und des letzten partiellen Lesebefehls an den Speicher ausgegeben wird, nicht die Verzögerungszeit übersteigt, eine Zeitdifferenz zwischen der Verzögerungszeit und der abgelaufenen Zeit von dem Zeitpunkt an, wenn einer des letzten Gesamtbereichslesebefehls und des letzten partiellen Lesebefehls an den Speicher ausgegeben wird, berechnet wird, und der partielle Lesebefehl an den Speicher ausgegeben wird, nachdem die Zeitdifferenz von dem Zeitpunkt an abgelaufen ist, an dem der partielle Lesebefehl an den Speicher ausgegeben werden kann.
  8. Speichersteuervorrichtung gemäß einem der Ansprüche 5 bis 7, weiter umfassend eine Cache-Verwaltungseinheit, die, wenn Daten, welche weder die angefragten Nutzdaten noch die korrespondierenden Fehlerkorrekturdaten sind, in Enddaten eingeschlossen sind, welche Daten an einem Ende sind, die von dem Speicher in Erwiderung auf einen des Gesamtbereichslesebefehls und des partiellen Lesebefehls, die von der Befehlsausgabeeinheit ausgegeben werden, ausgelesen werden, die Endedaten in dem Cache-Bereich speichert.
  9. Speichersteuereinrichtung gemäß einem der Ansprüche 1 bis 8, wobei die Befehlsausgabeeinheit eine Zeit, die zumindest zu einer Lücke in einem Pipeline-Prozess korrespondiert, als die Verzögerungszeit verwendet.
  10. Speichersteuervorrichtung gemäß einem der Ansprüche 1 bis 9, weiter umfassend: eine Vielzahl von Cache-Bereichen, wobei die Cache-Bestimmungseinheit bestimmt, ob Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen in einer der Vielzahl von Cache-Bereichen zwischengespeichert worden sind oder zwischengespeichert werden oder nicht.
  11. Speichersteuervorrichtung, die eine Leseanfrage zum Anfragen, Nutzdaten von einem Speicher mit einer Vielzahl von Adressen, wobei jede Daten einer vorbestimmten Datenbreite speichert, auszulesen, verarbeitet, wobei in dem Speicher Fehlerkorrekturdaten für jede Nutzdaten eingestellt sind, wobei Nutzdaten der Datenbreite und Fehlerkorrekturdaten, die miteinander korreliert sind, über zwei benachbarte Adressen gespeichert sind, und wobei Daten in Adresseinheiten ausgelesen werden, die Speichersteuervorrichtung umfassend: einen Cache-Bereich, in dem von dem Speicher ausgelesene Daten zwischengespeichert werden; eine Leseanfrageeingabeeinheit, die als eine Eingabe eine Leseanfrage zum Anfragen, Nutzdaten eines ganzzahligen Vielfachen der Datenbreite auszulesen, empfängt; eine Cache-Bestimmungseinheit, die bestimmt, ob Daten einer von zwei oder mehreren ausgelesenen Kandidatenadressen in dem Cache-Bereich zwischengespeichert worden sind oder nicht, wobei die zwei oder mehreren ausgelesenen Kandidatenadressen Adressen sind, in denen angefragte Nutzdaten, welche Nutzdaten sind, die von der Leseanfrage angefragt werden, die als eine Eingabe von der Leseanfrageeingabeeinheit empfangen wird, und korrespondierende Fehlerkorrekturdaten, welche Fehlerkorrekturdaten sind, die für eine Fehlerkorrektur der angefragten Nutzdaten verwendet werden, gespeichert sind; und eine Befehlsausgabeeinheit, die, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen in dem Cache-Bereich zwischengespeichert worden sind, an den Speicher einen partiellen Lesebefehl ausgibt, um anzuweisen, Daten von einer anderen Adresse als der Cache-Adresse auszulesen, welche eine Adresse der Daten, die in dem Cache-Bereich zwischengespeichert worden sind, von den zwei oder mehreren ausgelesenen Kandidatenadressen ist.
  12. Speichersteuervorrichtung gemäß Anspruch 11, wobei, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen nicht in dem Cache-Bereich zwischengespeichert worden sind, die Befehlsausgabeeinheit an den Speicher einen Gesamtbereichslesebefehl ausgibt, um anzuweisen, Daten von einem gesamten Bereich der zwei oder mehreren ausgelesenen Kandidatenadressen auszulesen.
  13. Speichersteuervorrichtung gemäß Anspruch 11 oder 12, weiter umfassend: eine Cache-Verwaltungseinheit, die, wenn Daten, welche weder die angefragten Nutzdaten noch die korrespondierenden Fehlerkorrekturdaten sind, in Endedaten enthalten sind, welche Daten an einem Ende sind, die von dem Speicher in Erwiderung auf einen des Gesamtbereichslesebefehls und des partiellen Lesebefehls, die von der Befehlsausgabeeinheit ausgegeben werden, ausgelesen werden, die Enddaten in dem Cache-Bereich speichert.
  14. Speichersteuervorrichtung gemäß einem der Ansprüche 11 bis 13, weiter umfassend: eine Vielzahl von Cache-Bereichen, wobei die Cash-Bestimmungseinheit bestimmt, ob Daten einer der zwei oder mehreren ausgelesenen Kandidatenadressen in einem der Vielzahl von Cache-Bereichen zwischengespeichert worden sind oder nicht.
  15. Speichersteuervorrichtung gemäß einem der Ansprüche 11 bis 14, wobei, wenn die Cache-Bestimmungseinheit bestimmt, dass Daten einer führenden Adresse von den zwei oder mehreren ausgelesenen Kandidatenadressen und Daten von null oder mehreren Adressen, die der führenden Adresse folgen, in dem Cache-Bereich zwischengespeichert worden sind, die Befehlsausgabeeinheit an den Speicher den partiellen Lesebefehl ausgibt, um anzuweisen, Daten einer anderen Adresse als der Cache-Adresse auszulesen, welche die führende Adresse einschließt, und wobei die Speichersteuervorrichtung weiter beinhaltet: eine Datenerfassungseinheit, die als eine Eingabe von dem Cache-Bereich die Daten der Cache-Adresse empfängt, als eine Eingabe von dem Speicher die Daten der anderen Adresse als der Cache-Adresse, die in Erwiderung auf den partiellen Lesebefehl ausgelesen werden, empfängt und die angefragten Nutzdaten und die korrespondierenden Fehlerkorrekturdaten von den Daten der Cache-Adresse, welche als eine Eingabe von dem Cache-Bereich empfangen werden, und den Daten der anderen Adresse als der Cache-Adresse, die als eine Eingabe von dem Speicher empfangen werden, empfängt.
DE112012007102.6T 2012-11-05 2012-11-05 Speichersteuervorrichtung Active DE112012007102B4 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/078628 WO2014068789A1 (ja) 2012-11-05 2012-11-05 メモリ制御装置

Publications (2)

Publication Number Publication Date
DE112012007102T5 true DE112012007102T5 (de) 2015-07-16
DE112012007102B4 DE112012007102B4 (de) 2022-04-28

Family

ID=50626752

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012007102.6T Active DE112012007102B4 (de) 2012-11-05 2012-11-05 Speichersteuervorrichtung

Country Status (6)

Country Link
US (1) US9715427B2 (de)
JP (1) JP5797342B2 (de)
CN (1) CN104769558B (de)
DE (1) DE112012007102B4 (de)
TW (1) TWI475383B (de)
WO (1) WO2014068789A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326142B (zh) * 2015-06-17 2019-05-21 群联电子股份有限公司 缓冲存储器存取方法、存储器控制器与存储器存储装置
WO2017131648A1 (en) * 2016-01-27 2017-08-03 Hewlett Packard Enterprise Development Lp Adaptive request management
US10713750B2 (en) * 2017-04-01 2020-07-14 Intel Corporation Cache replacement mechanism
CN111881068A (zh) * 2020-06-30 2020-11-03 北京思朗科技有限责任公司 多入口的全相联的高速缓冲存储器及数据管理方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03132852A (ja) * 1989-10-19 1991-06-06 Pfu Ltd バス非同期制御方式
JPH0588987A (ja) 1991-09-25 1993-04-09 Hitachi Ltd バツフア記憶装置
JPH05233471A (ja) 1992-02-21 1993-09-10 Toshiba Corp マイクロプロセッサ及びそれを使用したデータ処理装置
JPH0773114A (ja) 1993-09-01 1995-03-17 Nec Corp 宇宙用デジタル計算機のメモリ制御回路
JPH07146825A (ja) 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JPH1040165A (ja) * 1996-07-22 1998-02-13 Oki Data:Kk データ読み出し方法およびリードバッファ
JPH1198462A (ja) 1997-09-19 1999-04-09 Hitachi Ltd データ再生装置
US6748486B2 (en) * 2001-01-04 2004-06-08 International Business Machines Corporation Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2004038705A (ja) 2002-07-05 2004-02-05 Toshiba Corp メモリ制御装置およびメモリアクセス方法
JP2006185162A (ja) * 2004-12-27 2006-07-13 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びその制御方法
US8214600B2 (en) 2005-02-10 2012-07-03 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domains
US20080034132A1 (en) 2006-08-01 2008-02-07 Nec Electronics Corporation Memory interface for controlling burst memory access, and method for controlling the same
JP2008059565A (ja) 2006-08-01 2008-03-13 Nec Electronics Corp バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
EP2159704B1 (de) 2007-06-20 2013-06-26 Fujitsu Limited Cache-speichersteuereinrichtung und pipeline-steuerverfahren
JP5380102B2 (ja) * 2009-02-16 2014-01-08 株式会社東芝 マイクロプロセッサ
KR101459200B1 (ko) 2010-02-09 2014-11-07 미쓰비시덴키 가부시키가이샤 전송 제어장치, 메모리 제어장치, 및 상기 전송 제어장치를 구비한 plc
JP2012137944A (ja) * 2010-12-27 2012-07-19 Mitsubishi Electric Corp メモリアクセス装置
TWI467579B (zh) * 2011-01-14 2015-01-01 Mstar Semiconductor Inc 電子裝置及其記憶體控制方法以及相關電腦可讀取儲存媒體
US9465691B2 (en) 2012-06-28 2016-10-11 Mitsubishi Electric Corporation Read request processing apparatus

Also Published As

Publication number Publication date
WO2014068789A1 (ja) 2014-05-08
US20150186208A1 (en) 2015-07-02
JP5797342B2 (ja) 2015-10-21
JPWO2014068789A1 (ja) 2016-09-08
CN104769558B (zh) 2017-07-21
TWI475383B (zh) 2015-03-01
US9715427B2 (en) 2017-07-25
DE112012007102B4 (de) 2022-04-28
CN104769558A (zh) 2015-07-08
TW201418980A (zh) 2014-05-16

Similar Documents

Publication Publication Date Title
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE19983687B4 (de) Verarbeitung geordneter Datenanforderungen an einen Speicher
DE10085385B3 (de) Vierfach gepumpte Bus-Architektur und Protokoll
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112012007102T5 (de) Speichersteuervorrichtung
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE102009047200A1 (de) Ein Komprimierungs-Zustandsbit-Zwischenspeicher und Zusatzspeicher
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102018110012A1 (de) Speichervorrichtung, die in der Lage ist Jobs ohne Eingreifen eines Prozessors zu verwalten
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
DE112012001808T5 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE102008021348A1 (de) Halbleiterspeicher, Speicherzugriffs-Steuersystem und Datenlese-Verfahren
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE102020108530A1 (de) Leistungsfähige inline-ecc-architektur für eine dram-steuerung
DE69629331T2 (de) System und Verfahren zur Bereitstellung einer flexiblen Speicherhierarchie
US9015424B2 (en) Write transaction management within a memory interconnect
DE112012006587T5 (de) Leseanforderungs-Verarbeitungsvorrichtung
DE602004007903T2 (de) Datenverarbeitungsvorrichtung von Online-Transaktionsdaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012040000

Ipc: G06F0012080000

R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final