-
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.