-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf eine Datentransfertechnik zum Transferieren von in einem Transferquellbereich gespeicherten Daten zu einem Transferzielbereich.
-
Stand der Technik
-
Unter Datentransfer-Techniken wird eine Technik bereitgestellt, welche als DMA(Speicherdirektzugriff)-Transfer bezeichnet wird.
-
In dem DMA-Transfer stellt eine CPU (Zentraleinheit) zuerst DMA-Informationen, wie eine Datentransferquell-Adresse, eine Datentransferziel-Adresse, eine für den Transfer notwendige Datentransfer-Größe in ein Register in einer DMA-Transfer-Steuereinrichtung ein. Dann, wenn die CPU an die DMA-Transfer-Steuereinrichtung den Beginn des Transfers anweist, führt die DMA-Transfer-Steuereinrichtung einen Transferprozess gemäß der in das Register eingestellten DMA-Informationen aus. Die DMA-Transfer-Steuereinrichtung erklärt an die CPU eine DMA-Transfer-Fertigstellungsunterbrechung, wenn der Transfer von Daten, welcher der in das Register eingestellten Transfer-Größe entspricht, fertiggestellt ist. Wenn die CPU die DMA-Transfer-Fertigstellungsunterbrechung feststellt, liest die CPU die Informationen in dem Register der DMA-Transfer-Steuereinrichtung, um ein Ergebnis oder einen Status des DMA-Transfers zu überprüfen.
-
Es ist nicht notwendig, eine Transfersteuerung durch die CPU während der Ausführung des Transferprozesses durch die DMA-Transfer-Steuereinrichtung auszuführen. Folglich kann der Datentransfer in dem DMA-Transfer mit größerer Geschwindigkeit ausgeführt werden als in einem Fall, wo der Datentransfer über die CPU durchgeführt wird. Weiterhin kann eine Last auf der CPU in dem DMA-Transfer reduziert werden.
-
Im Allgemeinen wird in dem DMA-Transfer ein Lesen von für jede eingestellte Größe (Einheitsbetrag) notwendigen Daten durchgeführt, und ein anschließendes Schreiben der Daten wird ausgeführt. Da eine Zeitvorgabe zum Starten des Schreibens nach Fertigstellung des Lesens ist, ist die Transfer-Effizienz in einem Transfer zu einem Gerät mit einer großen Latenzzeit nicht gut.
-
Es wird eine DMA-Transfer-Steuereinheit bereitgestellt, welche einen AXI(Advanced eXtensible Interface)-Bus verwendet.
-
Der AXI-Bus beinhaltet einen Nur-Lese-Bus und einen Nur-Schreib-Bus, so dass eine Datenerfassung von einem Datentransferquellbereich unter Verwendung des Nur-Lese-Busses und ein Datentransfer zu einem Datentransferzielbereich unter Verwendung des Nur-Schreib-Busses parallel ausgeführt werden kann.
-
Der AXI-Bus beinhaltet eine Burst-Transfer-Funktion. Die Burst-Transfer-Funktion ist eine Funktion, bei der eine Vielzahl von Einheitsbeträgen von gelesenen Daten durch eine einmalige Lese-Aufforderung erhalten werden kann, und eine Vielzahl von Einheitsbeträgen von Schreibungen durch eine einmalige Schreib-Aufforderung ausgeführt werden kann.
-
Die DMA-Transfer-Steuereinrichtung, die den AXI-Bus verwendet, kann einen Transfer mit hoher Geschwindigkeit unter Verwendung der Nur-Lese/Nur-Schreib-Busse und der Burst-Transfer-Funktion durchführen.
-
Zitatliste
-
Patentliteratur
-
- Patentdokument 1: JP H10-116245
- Patentdokument 2: JP 2008-83911
-
Zusammenfassung der Erfindung
-
Technisches Problem
-
Wenn ein Transferquellbereich und ein Transferzielbereich von Daten in dem DMA-Transfer miteinander überlappen, kann eine Datenzerstörung auftreten. Besonders wenn der Transfer unter Verwendung der Burst-Transfer-Funktion durchgeführt wird, ist es schwierig, eine Datenzerstörung zu verhindern.
-
Ein Ziel der vorliegenden Erfindung ist es, ein Auftreten von Datenzerstörung zu verhindern, wenn ein Transferquellbereich und ein Transferzielbereich von Daten miteinander überlappen. Insbesondere ist es ein Ziel der vorliegenden Erfindung, ein Auftreten von Datenzerstörung zu verhindern, sogar wenn der Transfer unter Verwendung einer Burst-Transfer-Funktion durchgeführt wird.
-
Lösung des Problems
-
Eine Datentransfereinrichtung gemäß der vorliegenden Erfindung ist eine Datentransfereinrichtung, die in einem Transferquellbereich gespeicherte Daten zu einem Transferzielbereich transferiert. Die Datentransfereinrichtung kann beinhalten:
eine Transferquell-Lesesteuereinheit, die einen Lesebefehl zum Lesen der in dem Transferquell-Bereich gespeicherten Daten ausgibt;
eine Puffer-Schreibsteuereinheit, die die Daten, welche durch den Lesebefehl gelesen worden sind, welcher von der Transferquell-Lesesteuereinheit ausgegeben worden ist, erhält, und die Daten in einen Ringpuffer schreibt;
eine Puffer-Lesesteuereinheit, welche die von der Puffer-Schreibsteuereinheit geschriebenen Daten aus dem Ringpuffer liest und die Daten zu dem Transferzielbereich überträgt;
eine Transferziel-Schreibsteuereinheit, die einen Schreibbefehl zum Schreiben der von der Puffer-Lesesteuereinheit zu dem Transferzielbereich übertragenen Daten in den Transferzielbereich ausgibt;
eine Schreibzyklus-Zähleinheit, die die Anzahl von Umläufen von der Puffer-Schreibsteuereinheit zählt;
eine Lesezyklus-Zähleinheit, die die Anzahl von Umläufen von der Puffer-Lesesteuereinheit zählt; und
eine datenzerstörungsfreie Steuereinheit die bestimmt, ob ein Schreiben der Daten in den Transferzielbereich erlaubt werden soll oder nicht basierend auf einem Größenverhältnis zwischen der von der Schreibzyklus-Zähleinheit gezählten Anzahl und der von der Lesezyklus-Zähleinheit gezählten Anzahl;
wobei die Puffer-Lesesteuereinheit die Daten von dem Ringpuffer liest, wenn die datenzerstörungsfreie Steuereinheit bestimmt, ein Schreiben zu erlauben; und
wobei, wenn die datenzerstörungsfreie Steuereinheit bestimmt, ein Schreiben zu erlauben, gibt die Transferziel-Schreibsteuereinheit den Schreibbefehl aus, um die von der Puffer-Lesesteuereinheit an den Transferzielbereich übertragenen Daten in den Transferzielbereich zu schreiben.
-
Vorteilhafte Effekte der Erfindung
-
Gemäß der Datentransfereinrichtung der vorliegenden Erfindung kann ein Auftreten von Datenzerstörung durch Abstimmen einer Zeitvorgabe zum Lesen von Daten von einem Pufferbereich verhindert werden.
-
Kurze Beschreibung der Zeichnungen
-
[1] ist eine erläuternde Darstellung, wenn eine Datenzerstörung auftritt.
-
[2] ist eine erläuternde Darstellung, wenn eine Datenzerstörung auftritt.
-
[3] ist eine Darstellung, welche Reihenfolgen erläutert, in welchen Datentransfers ausgeführt werden, wenn eine Burst-Transfer-Funktion verwendet wird.
-
[4] ist eine Darstellung, welche eine Konfiguration eines DMA-Transfersystems 10 gemäß eines ersten Ausführungsbeispiels zeigt.
-
[5] ist eine Darstellung, welche eine Konfiguration einer DMA-Transfer-Steuereinrichtung 100 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[6] ist eine Darstellung, welche eine Konfiguration einer datenzerstörungsfreien Steuereinheit 160 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[7] ist eine Darstellung, welche eine Konfiguration einer Puffer-Schreibzyklus-Zähleinheit 170 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[8] ist eine Darstellung, welche eine Konfiguration einer Pufferesezykluszähleinheit 180 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[9] ist ein Flussdiagramm, welches Arbeitsvorgänge der gesamten DMA-Transfer-Steuereinrichtung 100 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[10] ist ein Flussdiagramm, welches Arbeitsvorgänge einer Transferquell-Lesesteuereinheit 110 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[11] ist ein Flussdiagramm, welches Arbeitsvorgänge einer Puffer-Schreibsteuereinheit 120 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[12] ist ein Flussdiagramm, welches Arbeitsvorgänge einer Puffer-Lesesteuereinheit 140 zeigt.
-
[13] ist ein Flussdiagramm, welches Arbeitsvorgänge einer Transferziel-Schreibsteuereinheit 150 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[14] ist ein Flussdiagramm, welches Arbeitsvorgänge der datenzerstörungsfreien Steuereinheit 160 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[15] ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Schreibzyklus-Zähleinheit 170 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[16] ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Lesezyklus-Zähleinheit 180 gemäß dem ersten Ausführungsbeispiel zeigt.
-
[17] ist eine Darstellung (1-1), welche eine Änderung in Daten während eines DMA-Transfers zeigt.
-
[18] ist eine Darstellung (1-2), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[19] ist eine Darstellung (1-3), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[20] ist eine Darstellung (1-4), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[21] ist eine Darstellung (1-5), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[22] ist eine Darstellung (2-1), welche eine Änderung in Daten während des DMA-Transfers zeigt.
-
[23] ist eine Darstellung (2-2), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[24] ist eine Darstellung (2-3), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[25] ist eine Darstellung (2-4), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[26] ist eine Darstellung (2-5), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[27] ist eine Darstellung (3-1), welche eine Änderung in Daten während des DMA-Transfers zeigt.
-
[28] ist eine Darstellung (3-2), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[29] ist eine Darstellung (3-3), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[30] ist eine Darstellung (3-4), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[31] ist eine Darstellung (3-5), welche eine Änderung in den Daten während des DMA-Transfers zeigt.
-
[32] ist eine Darstellung, welche eine Konfiguration der datenzerstörungsfreien Steuereinheit 160 gemäß einem zweiten Ausführungsbeispiel zeigt.
-
[33] ist ein Flussdiagramm, welches Arbeitsvorgänge der gesamten DMA-Transfer-Steuereinrichtung 100 gemäß dem zweiten Ausführungsbeispiel zeigt.
-
Beschreibung von Ausführungsbeispielen
-
Erstes Ausführungsbeispiel
-
1 und 2 sind jeweils eine erläuternde Darstellung, wenn eine Datenzerstörung auftritt. Insbesondere ist 1 die erläuternde Darstellung, wenn ein Transferquellbereich und ein Transferzielbereich von Daten in einer Vorwärtsrichtung verschoben sind. 2 ist die erläuternde Darstellung, wenn ein Transferquellbereich und ein Transferzielbereich von Daten in einer Rückwärtsrichtung verschoben sind.
-
Basierend auf 1 erfolgt eine Beschreibung über einen Fall, in dem der Transferquellbereich und der Transferzielbereich der Daten in der Vorwärtsrichtung verschoben sind, während der Transferquellbereich und der Transferzielbereich der Daten teilweise miteinander überlappen. Wenn der Adresswert einer Start-Adresse für den Transferquellbereich kleiner ist als der Adresswert einer Start-Adresse für den Transferzielbereich, sind der Transferquellbereich und der Transferzielbereich in der Vorwärtsrichtung verschoben.
-
Bezugnehmend auf 1 sind der Transferquellbereich und der Transferzielbereich Bereiche in einem gleichen Gerät mit einem zwischen dem Transferquellbereich und dem Transferzielbereich überlappenden Bereich B. Weiterhin, bezugnehmend auf 1, ist der Adresswert einer Start-Adresse für einen Bereich A, welches die Start-Adresse für den Transferquellbereich ist, kleiner als der Adresswert einer Start-Adresse für den Bereich B, welches die Start-Adresse für den Transferzielbereich ist. Der Transferquellbereich und der Transferzielbereich sind daher in der Vorwärtsrichtung verschoben.
-
Wenn ein Datentransfer in diesem Fall fortlaufend in der ansteigenden Richtung (inkrementelle Richtung) von Adresswerten ausgeführt wird, werden Daten in dem Bereich A zuerst in den Bereich B geschrieben. Dann werden die Daten in dem Bereich B in einen Bereich C geschrieben. In diesem Fall, bevor die Daten in dem Bereich B in den Bereich C geschrieben werden, werden die Daten in dem Bereich A in den Bereich B geschrieben. Also werden ursprünglich in dem Bereich B gespeicherte Daten zerstört.
-
Dann wird der Datentransfer in diesem Fall fortlaufend in der absteigenden Richtung (dekrementelle Richtung) von Adresswerten ausgeführt. Dann werden die Daten im Bereich B zuerst in den Bereich C geschrieben. Die Daten in dem Bereich A werden anschließend in den Bereich B geschrieben. Folglich kann der Transfer ohne Zerstörung der Daten ausgeführt werden.
-
Basierend auf 2 erfolgt eine Beschreibung über einen Fall, wo der Transferquellbereich und der Transferzielbereich der Daten in der Rückwärtsrichtung verschoben sind, während der Transferquellbereich und der Transferzielbereich der Daten teilweise miteinander überlappen. Wenn der Adresswert einer Start-Adresse für den Transferquellbereich größer ist als der Adresswert einer Start-Adresse für den Transferzielbereich, sind der Transferquellbereich und der Transferzielbereich in der Rückwärtsrichtung verschoben.
-
Ebenfalls bezugnehmend auf 2 sind der Transferquellbereich und der Transferzielbereich Bereiche in dem gleichen Gerät mit dem Bereich B überlappend zwischen dem Transferquellbereich und dem Transferzielbereich wie in 1. Bezugnehmend auf 2 ist der Adresswert einer Start-Adresse für den Bereich B, welches die Start-Adresse für den Transferquellbereich ist, jedoch größer als der Adresswert einer Start-Adresse für den Bereich A, welches die Start-Adresse für den Transferzielbereich ist. Der Transferquellbereich und der Transferzielbereich sind daher in der Rückwärtsrichtung verschoben.
-
Wenn ein Datentransfer in diesem Fall fortlaufend in der absteigenden Richtung (dekrementelle Richtung) von Adresswerten ausgeführt wird, werden Daten im Bereich C zuerst in den Bereich B geschrieben. Dann werden die Daten in dem Bereich B in den Bereich A geschrieben. In diesem Fall, bevor die Daten in dem Bereich B in den Bereich A geschrieben werden, werden die Daten in dem Bereich C in den Bereich B geschrieben. Also werden ursprünglich in dem Bereich B gespeicherte Daten zerstört.
-
Dann wird der Datentransfer in diesem Fall fortlaufend in der aufsteigenden Richtung (inkrementelle Richtung) der Adresswerte ausgeführt. Dann werden die Daten im Bereich B zuerst in den Bereich A geschrieben. Die Daten in dem Bereich C werden anschließend in den Bereich B geschrieben. Folglich kann der Transfer ohne Zerstörung der Daten ausgeführt werden.
-
Kurz gesagt, wenn der Transferquellbereich und der Transferzielbereich in der Vorwärtsrichtung verschoben sind und der dekrementelle Transfer zum fortlaufenden Transferieren der Daten in der absteigenden Richtung der Adresswerte ausgeführt wird, tritt eine Datenzerstörung nicht auf. Andererseits, wenn der Transferquellbereich und der Transferzielbereich in der Rückwärtsrichtung verschoben sind und der inkrementelle Transfer zum fortlaufenden Transferieren der Daten in der aufsteigenden Richtung der Adresswerte ausgeführt wird, tritt eine Datenzerstörung nicht auf.
-
3 ist eine Darstellung, welche Reihenfolgen erläutert, in welchen Datentransfers ausgeführt werden, wenn eine Burst-Transfer-Funktion verwendet wird. 3 zeigt einen Fall, in dem die Datentransfers in der dekrementellen Richtung unter Verwendung der Burst-Transfer-Funktion ausgeführt werden.
-
In einem gewöhnlichen Datentransfer kann nur ein Einheitsbetrag von Daten durch eine einmalige Lese-/Schreib-Aufforderung transferiert werden. Im Gegenteil dazu, wenn die Burst-Transfer-Funktion verwendet wird, kann eine Vielzahl von Einheitsbeträgen von Daten durch eine einmalige Lese-/Schreib-Aufforderung transferiert werden.
-
Bezugnehmend auf 2 wird angenommen, dass acht Einheitsbeträge von Daten 1 bis 8 transferiert werden. Folglich werden in dem gewöhnlichen Datentransfer acht Lese-/Schreib-Aufforderungen gebraucht. Im Gegenteil dazu, wenn die Burst-Transfer-Funktion verwendet wird, kann der Transfer unter Verwendung des Doppelten an Lese-/Schreib-Aufforderungen ausgeführt werden. Ein Vier-Burst-Transfer wird hier angenommen, in dem vier Einheiten von Daten durch eine einmalige Lese-/Schreib-Aufforderung transferiert werden können.
-
Hier werden Burst-Lesebefehle (Transaktionen) in der dekrementellen Richtung und der inkrementellen Richtung ausgegeben. Jedoch können in jedem Burst-Lesebefehl spezifizierte Daten nur in der inkrementellen Richtung gelesen werden. Folglich, wie in 3 gezeigt, selbst wenn ein Vier-Burst-Lesebefehl zum Lesen der Daten 5 bis 8 zuerst ausgegeben wird und dann ein Vier-Burst-Lesebefehl zum Lesen der Daten 1 bis 4 als zweites ausgegeben wird in der dekrementellen Richtung, werden die Daten in der Reihenfolge der Daten 5, 6, 7, 8, 1, 2, 3 und 4 gelesen. Das heißt, die Daten können nicht in der Reihenfolge der Daten 8, 7, 6, 5, 4, 3, 2 und 1 gelesen werden.
-
Demzufolge, wenn ein Transferquellbereich und ein Transferzielbereich in der Vorwärtsrichtung verschoben sind und ein Datentransfer unter Verwendung der Burst-Transfer-Funktion ausgeführt wird, kann eine Datenzerstörung nicht verhindert werden, selbst wenn der dekrementelle Transfer benutzt wird.
-
Ebenfalls in dem Fall eines Burst-Schreibbefehls können Burst-Schreibbefehle auch in der inkrementellen Richtung sowie in der dekrementellen Richtung ausgegeben werden wie in dem Fall des Burst-Lesebefehls. Jedoch können in jedem Burst-Schreibbefehl spezifizierte Daten nur in der inkrementellen Richtung geschrieben werden.
-
4 ist eine Darstellung, welche eine Konfiguration eines DMA-Transfersystems 10 gemäß einem ersten Ausführungsbeispiel zeigt.
-
Das DMA-Transfersystem 10 beinhaltet eine DMA-Transfer-Steuereinrichtung 100 (Datentransfereinrichtung), eine CPU 200 und einen Speicher 300.
-
Die DMA-Transfer-Steuereinrichtung 100 ist eine Einrichtung, die auf den Speicher 300 zugreift und einen Datentransfer ausführt, gemäß DMA-Informationen, welche von einem Benutzer der CPU 200 oder ähnlichem in Registern eingestellt worden sind.
-
Die CPU 200 stellt die DMA-Informationen, wie eine Transferquelladresse, welche einen Transferquellbereich spezifiziert, eine Transferzieladresse, welche einen Transferzielbereich spezifiziert, eine Transfer-Größe, die die Größe von zu transferierenden Daten spezifiziert, und die Transferart (wie den inkrementellen Transfer oder den dekrementellen Transfer) in die Register der DMA-Transfer-Steuereinrichtung 100 ein und veranlasst die DMA-Transfer-Steuereinrichtung 100 den Transfer der Daten auszuführen. Es wird hier angenommen, dass die CPU 200 die DMA-Informationen einstellt. Eine andere Einrichtung oder ein anderes System als die CPU 200 kann die DMA-Informationen einstellen.
-
Der Speicher 300 ist eine Zielressource, die als der Transferquellbereich und der Transferzielbereich des Datentransfers dienen wird.
-
5 ist eine Darstellung, welche eine Konfiguration der DMA-Transfer-Steuereinrichtung 100 gemäß dem ersten Ausführungsbeispiel zeigt. Bezug nehmend auf 5 gibt eine durchgezogene Linie eine Datenleitung an, durch welche Daten fließen, und eine unterbrochene Linie gibt eine Steuerleitung an, durch welche ein Steuersignal fließt.
-
Die DMA-Transfer-Steuereinrichtung 100 beinhaltet eine Transferquell-Lesesteuereinheit 110, eine Puffer-Schreibsteuereinheit 120, einen internen Puffer 130 (Ringpuffer), eine Puffer-Lesesteuereinheit 140, eine Transferziel-Schreibsteuereinheit 150, eine datenzerstörungsfreie Steuereinheit 160, eine Puffer-Schreibzyklus-Zähleinheit 170 und eine Puffer-Lesezyklus-Zähleinheit 180.
-
Die Transferquell-Lesesteuereinheit 110 gibt an den Speicher 300 einen Transferquell-Lesebefehl zum Lesen der in dem Transferquellbereich des Speichers 300 gespeicherten Daten aus.
-
Der Transferquell-Lesebefehl ist eine Information, welche Informationen von einer Lese-Adresse, ein Lese-Adressen-wirksames Signal (oder ein Lese-Aufforderungssignal) und andere Signale (welche eine Burst-Größe und eine Burst-Länge anzeigen) sammelt.
-
Die Puffer-Schreibsteuereinheit 120 erhält die Daten, welche von der Transferquelle gelesen worden sind, gemäß dem Transferquell-Lesebefehl, welcher von der Transferquell-Lesesteuereinheit 110 ausgegeben worden ist, durch einen Nur-Lese-Bus.
-
Die Puffer-Schreibsteuereinheit 120 gibt die erhaltenen, von der Transferquelle gelesenen Daten an den internen Puffer 130 als Puffer-Schreibdaten aus und schreibt die Puffer-Schreibdaten an eine Position des internen Puffers 130, welche durch einen Puffer-Schreibzeiger spezifiziert ist. Der Puffer-Schreibzeiger ist eine Information, welche ein aktuelles Puffer-Schreibziel anzeigt.
-
Die Puffer-Schreibsteuereinheit 120 benachrichtigt die datenzerstörungsfreie Steuereinheit 160 über eine Position, wo ein Schreiben der Puffer-Schreibdaten fertiggestellt ist, als einen Puffer-Schreibfertigstellungszeiger. Mit anderen Worten ist der Puffer-Schreibfertigstellungszeiger eine Information, welche einen Fertigstellungsbereich anzeigt, wo eine Vorbereitung zum Lesen von dem internen Puffer 130 fertiggestellt worden ist.
-
Der interne Puffer 130 ist eine in der DMA-Transfer-Steuereinrichtung 100 enthaltene Ressource zur Speicherung der zu transferierenden Daten.
-
Die Puffer-Lesesteuereinheit 140 liest die Daten von einer durch einen Puffer-Lesezeiger spezifizierten Position des internen Puffers 130 als Puffer-Lesedaten. Der Puffer-Lesezeiger ist eine Information, welche ein aktuelles Puffer-Leseziel anzeigt.
-
Die Puffer-Lesesteuereinheit 140 gibt die gelesenen Puffer-Lesedaten an den Speicher 300 durch einen Nur-Schreib-Bus als Schreibdaten für ein Transferziel aus.
-
Die Puffer-Lesesteuereinheit 140 teilt der datenzerstörungsfreien Steuereinheit 160 den Puffer-Lesezeiger mit.
-
Die Transferziel-Schreibsteuereinheit 150 gibt einen Transferziel-Schreibbefehl an den Speicher 300 aus, um die Schreibdaten für das von der Puffer-Lesesteuereinheit 140 ausgegebene Transferziel in den Transferzielbereich zu schreiben.
-
Der Transferziel-Schreibbefehl ist eine Information, welche Informationen von einer Schreib-Adresse, ein Schreib-Adressen-wirksames Signal (oder ein Schreib-Aufforderungssignal), ein Schreibdaten-wirksames Signal und andere Signale (welche eine Burst-Größe, eine Burst-Länge und ein Strobe-Signal anzeigen) sammelt.
-
Die datenzerstörungsfreie Steuereinheit 160 teilt entsprechenden Steuereinheiten und entsprechenden Zähleinheiten die Transferart (inkrementeller Transfer oder dekrementeller Transfer), die von der CPU 200 eingestellt worden ist, mit. Die entsprechenden Steuereinheiten verweisen auf die Transferquell-Lesesteuereinheit 110, die Puffer-Schreibsteuereinheit 120, die Puffer-Lesesteuereinheit 140 und die Transferziel-Schreibsteuereinheit 150. Die entsprechenden Zähleinheiten verweisen auf die Puffer-Schreibzyklus-Zähleinheit 170 und die Puffer-Lesezyklus-Zähleinheit 180.
-
Im Fall des dekrementellen Transfers bestimmt die datenzerstörungsfreie Steuereinheit 160, ob eine Vorbereitung zum Lesen der Daten an der von dem Puffer-Lesezeiger angezeigten Position fertiggestellt worden ist oder nicht, basierend auf einem „Größenverhältnis zwischen der von der Puffer-Schreibzyklus-Zähleinheit 170 gezählten Anzahl von Umläufen (Puffer-Schreibzyklus-Zählwert) und der von der Puffer-Lesezyklus-Zähleinheit 180 gezählten Anzahl von Umläufen (Puffer-Lesezyklus-Zählwert)” und einem „Größenverhältnis zwischen dem Wert des Puffer-Schreibfertigstellungszeigers und dem Wert des Puffer-Lesezeigers”. Dann, wenn die datenzerstörungsfreie Steuereinheit 160 bestimmt, dass die Vorbereitung zum Lesen der Daten fertiggestellt worden ist, gibt die datenzerstörungsfreie Steuereinheit 160 eine Transferziel-schreibbar-Anweisung an die Puffer-Lesesteuereinheit 140 und die Transferziel-Schreibsteuereinheit 150 aus. Im Fall des inkrementellen Transfers gibt die datenzerstörungsfreie Steuereinheit 160 ständig die Transferziel-schreibbar-Anweisung aus, ungeachtet des Puffer-Schreibfertigstellungszeigers und des Puffer-Lesezeigers.
-
Bei Empfang der Transferziel-schreibbar-Anweisung von der datenzerstörungsfreien Steuereinheit 160 liest die Puffer-Lesesteuereinheit 140 die Daten von dem internen Puffer 130. Bei Empfang der Transferziel-schreibbar-Anweisung von der datenzerstörungsfreien Steuereinheit 160 gibt die Transferziel-Schreibsteuereinheit 150 den Transferziel-Schreibbefehl aus.
-
Die Puffer-Schreibzyklus-Zähleinheit 170 ist ein Zähler, der die Anzahl von Umläufen des Puffer-Schreibfertigstellungszeigers im Fall des dekrementellen Transfers zählt.
-
Die Puffer-Lesezyklus-Zähleinheit 180 ist ein Zähler, der die Anzahl von Umläufen des Puffer-Lesezeigers im Fall des dekrementellen Transfers zählt.
-
Der Nur-Lese-Bus ist ein Bus, der den Transferquell-Lesebefehl und die gelesenen Daten von der Transferquelle führt. Der Nur-Schreib-Bus ist ein Bus, der den Transferziel-Schreibbefehl und die Schreibdaten für das Transferziel führt. Der Nur-Lese-Bus und der Nur-Schreib-Bus sind nicht voneinander abhängig und können parallel betrieben werden.
-
6 ist eine Darstellung, welche eine Konfiguration der datenzerstörungsfreien Steuereinheit 160 gemäß dem ersten Ausführungsbeispiel zeigt.
-
Die datenzerstörungsfreie Steuereinheit 160 beinhaltet ein Transferart-Einstellregister 161, ein Puffer-Schreibfertigstellungszeiger-Einstellregister 162, ein Puffer-Lesezeiger-Einstellregister 163, eine erste Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 164, eine zweite Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 165, eine Umlaufanzahl-Übereinstimmungs-Bestimmungseinheit 166 und einen Selektor 167.
-
Die Transferart wird in dem Transferart-Einstellungsregister 161 durch die CPU 200 eingestellt. Die in das Transferart-Einstellregister 161 eingestellte Transferart wird von der datenzerstörungsfreien Steuereinheit 160 an jede Steuereinheit gemeldet.
-
Der Puffer-Schreibfertigstellungszeiger, welcher von der Puffer-Schreibsteuereinheit 120 mitgeteilt worden ist, wird in dem Puffer-Schreibfertigstellungszeiger-Einstellregister 162 eingestellt.
-
Der von der Puffer-Lesesteuereinheit 140 mitgeteilte Puffer-Lesezeiger wird in dem Puffer-Lesezeiger-Einstellregister 163 eingestellt.
-
Die erste Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 164 bestimmt, ob die Vorbereitung zum Lesen der Daten von dem internen Puffer 130 fertiggestellt ist oder nicht, basierend auf der Transferart, dem Puffer-Schreibfertigstellungszeiger und dem Puffer-Lesezeiger. Wenn die erste Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 164 bestimmt, dass die Vorbereitung zum Lesen der Daten fertiggestellt ist, bestimmt die erste Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit, dass eine Datenzerstörung nicht auftreten wird, und gibt dann eine Transferziel-schreibbar-Anweisung (Zeiger) an den Selektor 167 aus.
-
Die zweite Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 165 bestimmt, ob die Vorbereitung zum Lesen der Daten von dem internen Speicher 130 fertiggestellt ist oder nicht, basierend auf einem Puffer-Schreibzyklus-Zählwert, der von der Puffer-Schreibzyklus-Zähleinheit 170 erhalten worden ist, und einem Puffer-Lesezyklus-Zählwert, der von der Puffer-Lesezyklus-Zähleinheit 180 erhalten worden ist. Wenn die zweite Puffer-Vorbereitungsfertigstellungseinheit 165 bestimmt, dass die Vorbereitung zum Lesen der Daten fertiggestellt ist, bestimmt die zweite Puffer-Vorbereitungsfertigstellungseinheit 165, dass eine Datenzerstörung nicht auftreten wird und gibt dann eine Transferziel-schreibbar-Anweisung (Zähler) an den Selektor 167) aus.
-
Die Umlaufanzahl-Übereinstimmungs-Bestimmungseinheit 166 bestimmt, ob der Puffer-Schreibzyklus-Zählwert, welcher von der Puffer-Schreibzyklus-Zähleinheit 170 erhalten worden ist, und der Puffer-Lesezyklus-Zählwert, welcher von der Puffer-Lesezyklus-Zähleinheit 180 erhalten worden ist, übereinstimmen oder nicht.
-
Der Selektor 167 wählt eine der Transferziel-schreibbar-Anweisung (Zeiger), welche von der ersten Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 164 ausgegeben worden ist, und der Transferzielschreibbar-Anweisung (Zähler), welche von der zweiten Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit 165 ausgegeben worden ist, welche als die Transferziel-schreibbar-Anweisung auszugeben ist, basierend auf einem Bestimmungsergebnis der Umlaufanzahl-Übereinstimmungs-Bestimmungseinheit 166 aus. Der Selektor 167 gibt die gewählte Transferzielschreibbar-Anweisung an die Puffer-Lesesteuereinheit 140 und die Transferziel-Schreibsteuereinheit 150 aus.
-
7 ist eine Darstellung, welche eine Konfiguration der Puffer-Schreibzyklus-Zähleinheit 170 gemäß dem ersten Ausführungsbeispiel zeigt.
-
Die Puffer-Schreibzyklus-Zähleinheit 170 beinhaltet eine Umlauf-Erfassungseinheit 171 und eine Umlaufanzahl-Zähleinheit 172.
-
Im Fall des dekrementellen Transfers erfasst die Umlauf-Erfassungseinheit 171, ob der Puffer-Schreibfertigstellungszeiger umgelaufen ist oder nicht.
-
Wenn die Umlauf-Erfassungseinheit 171 einen Umlauferfasst, zählt die Umlaufanzahl-Zähleinheit 172 einen Puffer-Schreibzyklus-Zählwert um eins hoch. Dann gibt die Umlaufanzahl-Zähleinheit 172 den hochgezählten Puffer-Schreibzyklus-Zählwert an die datenzerstörungsfreie Steuereinheit 160 aus.
-
8 ist eine Darstellung, welche eine Konfiguration der Puffer-Lesezyklus-Zähleinheit 180 gemäß dem ersten Ausführungsbeispiel zeigt.
-
Die Puffer-Lesezyklus-Zähleinheit 180 beinhaltet eine Umlauf-Erfassungseinheit 181 und eine Umlaufanzahl-Zähleinheit 182.
-
Im Fall des dekrementellen Transfers erfasst die Umlauf-Erfassungseinheit 181, ob der Puffer-Lesezeiger umgelaufen ist oder nicht.
-
Wenn die Umlauf-Erfassungseinheit 181 einen Umlauf erfasst, zählt die Umlaufanzahl-Zähleinheit 182 einen Puffer-Lesezyklus-Zählwert um eins hoch. Dann gibt die Umlaufanzahl-Zähleinheit 182 den hochgezählten Puffer-Lesezyklus-Zählwert an die datenzerstörungsfreie Steuereinheit 160 aus.
-
Als nächstes erfolgt eine Beschreibung über Arbeitsvorgänge der DMA-Transfer-Steuereinrichtung 100.
-
9 ist ein Flussdiagramm, welches die Arbeitsvorgänge der gesamten DMA-Transfer-Steuereinrichtung 100 gemäß dem ersten Ausführungsbeispiel zeigt. Im Schritt S11 stellt die CPU 200 DMA-Informationen in die Register der DMA-Transfer-Steuereinrichtung 100 ein und startet die DMA-Transfer-Steuereinrichtung 100. Dann, in Schritt S12, teilt die datenzerstörungsfreie Steuereinheit 160 der DMA-Transfer-Steuereinrichtung 100 jeder Steuereinheit die Transferart (inkrementeller Transfer oder dekrementeller Transfer) mit, welche in das Register (Transferarteinstellregister) 161 eingestellt worden ist. Wenn der inkrementelle Transfer in das Register eingestellt worden ist, veranlasst die DMA-Transfer-Steuereinrichtung 100 den Vorgang zu Schritt S13 fortzufahren. Wenn der dekrementelle Transfer eingestellt worden ist, veranlasst die DMA-Transfer-Steuereinrichtung 100 den Vorgang zu Schritt S14 fortzufahren.
-
In Schritt S13 führt die DMA-Transfer-Steuereinrichtung 100 den inkrementellen Transfer in Bezug auf den Speicher 300 aus. Andererseits, in Schritt S14, führt die DMA-Transfer-Steuereinrichtung 100 den dekrementellen Transfer mit Bezug auf den Speicher 300 aus.
-
Dann, in Schritt S15, wenn es einen DMA-Transferstopp-Einfluss gibt, wie eine Fertigstellung des Transfers von Daten einer spezifizierten Datenlänge, stoppt die DMA-Transfer-Steuereinrichtung 100 den Transfervorgang.
-
10 ist ein Flussdiagramm, welches Arbeitsvorgänge der Transferquell-Lesesteuereinheit 110 gemäß dem ersten Ausführungsbeispiel zeigt. 10 zeigt die Arbeitsvorgänge der Transferquell-Lesesteuereinheit 110 in Schritt S13 oder S14 in 9.
-
In Schritt S21 bestimmt die Transferquell-Lesesteuereinheit 110, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll, basierend auf der von der datenzerstörungsfreien Steuereinheit 160 übertragenen Transferart. Wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Transferquell-Lesesteuereinheit 110 den Vorgang zu Schritt S22 fortzuschreiten. Wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die Transferquell-Lesesteuereinheit 110 den Vorgang zu Schritt S23 fortzuschreiten.
-
In Schritt S22 oder S23 erzeugt die Transferquell-Lesesteuereinheit 110 einen Burst-Lesebefehl als einen Transferquell-Lesebefehl. Der Burst-Lesebefehl ist ein Befehl zum fortlaufenden Lesen jedes Einheitsbetrages der Daten in einer aufsteigenden Reihenfolge von Adresswerten beginnend bei einer Lese-Startadresse, bis eine vorbestimmte Anzahl von Einheitsbeträgen der Daten erreicht wird, wie basierend auf 3 beschrieben ist.
-
In Schritt S24 im Anschluss an Schritt S22 oder S23 bestimmt die Transferquell-Lesesteuereinheit 110, ob ein Lese-Zugriff möglich ist oder nicht abhängig davon, ob ein freier Bereich zum Speichern der durch den Transferquell-Lesebefehl zu lesenden Daten in dem internen Puffer 130 vorhanden ist oder nicht. Wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der Lese-Zugriff möglich ist (JA in Schritt S24), veranlasst die Transferquell-Lesesteuereinheit 110 den Vorgang zu Schritt S25 fortzuschreiten. Auf der anderen Seite, wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der Lese-Zugriff unmöglich ist (NEIN in Schritt S24), führt die Transferquell-Lesesteuereinheit 110 den Vorgang zu Schritt S24 zurück. Dann, nach einem Ablauf einer vorbestimmten Zeitspanne, bestimmt die Transferquell-Lesesteuereinheit 110 wieder, ob der Lese-Zugriff möglich ist oder nicht.
-
In Schritt S25 gibt die Transferquell-Lesesteuereinheit 110 den erzeugten Transferquell-Lesebefehl an den Speicher 300 aus, um die Daten von einem Transferquellbereich zu lesen.
-
Dann, in Schritt S26, bestimmt die Transferquell-Lesesteuereinheit 110, ob der Lese-Zugriff auf den Speicher 300 beendet werden soll oder nicht, je nachdem, ob die Transferquell-Lesesteuereinheit 110 einen oder mehrere Transferquell-Lesebefehle zum Lesen der Daten, welche der Größe des Transfers entsprechen, an den Speicher 300 übertragen hat oder nicht. Wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der Lese-Zugriff beendet werden soll (JA in Schritt S26), beendet die Transferquell-Lesesteuereinheit 110 den Vorgang. Andererseits, wenn die Transferquell-Lesesteuereinheit 110 bestimmt, dass der Lese-Zugriff nicht beendet werden soll (NEIN in Schritt S26) führt die Transferquell-Lesesteuereinheit 110 den Vorgang zu Schritt S21 zurück.
-
In Schritt S22 erzeugt die Transferquell-Lesesteuereinheit 110 die Burst-Lesebefehle in der inkrementellen Richtung. Das heißt, die Transferquell-Lesesteuereinheit 110 erzeugt die Burst-Lesebefehle so, dass Adresswerte von Lese-Startadressen der Burst-Lesebefehle in der aufsteigenden Reihenfolge angeordnet sind.
-
Andererseits, in Schritt S23, erzeugt die Transferquell-Lesesteuereinheit 110 die Burst-Lesebefehle in der dekrementellen Richtung. Das heißt, die Transferquell-Lesesteuereinheit 110 erzeugt die Burst-Lesebefehle so, dass die Adresswerte der Lese-Startadressen der Burst-Lesebefehle in einer absteigenden Reihenfolge angeordnet sind.
-
11 ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Schreibsteuereinheit 120 gemäß dem ersten Ausführungsbeispiel zeigt. 11 zeigt die Arbeitsvorgänge der Puffer-Schreibsteuereinheit 120 in Schritt S13 oder S14 in 9.
-
In Schritt S31 bestimmt die Puffer-Schreibsteuereinheit 120, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll, basierend auf der Transferart, welche von der datenzerstörungsfreien Steuereinheit 160 übertragen worden ist. Wenn die Puffer-Schreibsteuereinheit 120 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Schreibsteuereinheit 120 den Vorgang zu Schritt S32 fortzuschreiten. Wenn die Puffer-Schreibsteuereinheit 120 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Schreibsteuereinheit 120 den Vorgang zu Schritt S33 fortzuschreiten.
-
In Schritt S32 oder S33 erzeugt die Puffer-Schreibsteuereinheit 120 einen Burst-Schreibbefehl, welcher einem Transferquell-Lesebefehl entspricht, als einen Puffer-Schreibbefehl. Dieser Puffer-Schreibbefehl ist ein Befehl zum fortlaufenden Schreiben der Daten in der aufsteigenden Reihenfolge von Adresswerten, beginnend bei einer Schreib-Startadresse unter Verwendung, als die Schreib-Startadresse, die Adresse des internen Puffers 130, welche mit der Lese-Startadresse des korrespondierenden Transferquell-Lesebefehls assoziiert ist.
-
In diesem Fall erhält die Puffer-Schreibsteuereinheit 120 von der Transferquell-Lesesteuereinheit 110 Informationen wie die Lese-Startadresse und die Anzahl von Einheitsbeträgen der durch den Transferquell-Lesebefehl zu lesenden Daten, welcher von der Transferquell-Lesesteuereinheit 110 ausgegeben werden soll, und erzeugt den Puffer-Schreibbefehl, welcher mit dem Transferquell-Lesebefehl korrespondiert. Alternativ kann die Puffer-Schreibsteuereinheit 120 die Lese-Startadresse und die Anzahl von Einheitsbeträgen der Daten, welche durch den Transferquell-Lesebefehl gelesen werden sollen, welcher von der Transferquell-Lesesteuereinheit 110 ausgegeben werden soll, mittels einer Logik bestimmen, welche ähnlich jener der Transferquell-Lesesteuereinheit 110 ist, und dadurch den Puffer-Schreibbefehl, welcher mit dem Transferquell-Lesebefehl korrespondiert, erzeugen.
-
In Schritt S33 stellt die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger in das Puffer-Schreibfertigstellungszeiger-Einstellregister 162 der datenzerstörungsfreien Steuereinheit 160 ein. Es wird angenommen, dass der Puffer-Schreibfertigstellungszeiger in diesem Fall einen Adresswert anzeigt, welcher durch Addieren eines Adresswertes, welcher mit der Größe der Daten korrespondiert, die durch diesen Schreibbefehl geschrieben werden sollen, zu einem Adresswert, der von dem Puffer-Schreibzeiger angezeigt wird, erhalten wird.
-
In Schritt S34 im Anschluss an die Schritte S32 oder S33 gibt die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibbefehl an den internen Puffer 130 aus. Mit dieser Anordnung schreibt die Puffer-Schreibsteuereinheit 120 die durch den einen Transferquell-Lesebefehl von dem Transferquellbereich gelesenen Daten in den internen Puffer 130.
-
Dann, in Schritt S35 bestimmt die Puffer-Schreibsteuereinheit 120, ob der Schreib-Zugriff auf den internen Puffer 130 beendet werden soll oder nicht, je nachdem, ob die Puffer-Schreibsteuereinheit 120 einen oder mehrere Puffer-Schreibbefehle zum Schreiben der mit der Größe des Transfers korrespondierenden Daten an den internen Puffer 130 übertragen hat oder nicht. Wenn die Puffer-Schreibsteuereinheit 120 bestimmt, dass der Schreib-Zugriff beendet werden soll (JA in Schritt S35), beendet die Puffer-Schreibsteuereinheit 120 den Vorgang. Wenn die Puffer-Schreibsteuereinheit 120 bestimmt, dass der Schreib-Zugriff nicht beendet werden soll (NEIN in Schritt S35), führt die Puffer-Schreibsteuereinheit 120 den Vorgang zu Schritt S31 zurück.
-
Wenn die Puffer-Schreibsteuereinheit 120 bestimmt, dass der Schreib-Zugriff beendet werden soll (JA in Schritt S35) in Schritt S35, stellt die Puffer-Schreibsteuereinheit 120 in das Puffer-Schreibfertigstellungszeiger-Einstellregister 162 die Schreib-Startadresse des Burst-Schreibbefehls ein, der am Ende ausgegeben worden ist, als den Puffer-Schreibfertigstellungszeiger. Dann beendet die Puffer-Schreibsteuereinheit 120 den Vorgang.
-
12 ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Lesesteuereinheit 140 zeigt. 12 zeigt Arbeitsvorgänge der Puffer-Lesesteuereinheit 140 im Schritt S13 oder S14 in 9.
-
In Schritt S41 bestimmt die Puffer-Lesesteuereinheit 140, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll oder nicht, basierend auf der von der datenzerstörungsfreien Steuereinheit 160 übertragenen Transferart. Wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Lesesteuereinheit 140 den Vorgang zu Schritt S42 fortzuschreiten. Wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Lesesteuereinheit 140 den Vorgang zu Schritt S43 fortzuschreiten.
-
In Schritt S42 oder S43 erzeugt die Puffer-Lesesteuereinheit 140 einen Burst-Lesebefehl, welcher mit einem Transferziel-Schreibbefehl korrespondiert, als einen Puffer-Lesebefehl. Dieser Puffer-Lesebefehl ist ein Befehl zum fortlaufenden Lesen der Daten in der aufsteigenden Reihenfolge der Adresswerte beginnend bei einer Start-Adresse unter Verwendung, als die Lese-Startadresse, der Adresse des internen Puffers 130, welche mit der Schreib-Startadresse des korrespondierenden Transferziel-Schreibbefehls assoziiert ist.
-
In diesem Fall erhält die Puffer-Lesesteuereinheit 140 von der Transferziel-Schreibsteuereinheit 140 Informationen wie die Schreib-Startadresse und die Anzahl von Einheitsbeträgen der Daten, welche durch den Transferziel-Schreibbefehl geschrieben werden sollen, der von der Transfer-Schreibsteuereinheit 150 ausgegeben werden soll, und erzeugt den Puffer-Lesebefehl, der mit dem Transferziel-Schreibbefehl korrespondiert. Alternativ kann die Puffer-Lesesteuereinheit 140 die Schreib-Startadresse und die Anzahl von Einheitsbeträgen der Daten, welche durch den Transferziel-Schreibbefehl geschrieben werden sollen, welcher von der Transfer-Schreibsteuereinheit 150 ausgegeben werden soll, mittels einer Logik, die ähnlich jener der Transferziel-Schreibsteuereinheit 150 ist, bestimmen und dadurch den Puffer-Lesebefehl, der mit dem Transferziel-Schreibbefehl korrespondiert, erzeugen.
-
In Schritt S42 oder S43 stellt die Puffer-Lesesteuereinheit 140 in das Puffer-Lesezeiger-Einstellregister 163 der datenzerstörungsfreien Steuereinheit 160 den Puffer-Lesezeiger ein, welcher die Lese-Startadresse des Puffer-Lesebefehls anzeigt, wenn der Puffer-Lesebefehl erzeugt wird.
-
In Schritt S44 im Anschluss an die Schritte S42 und S43 bestimmt die Puffer-Lesesteuereinheit 140, ob ein Lese-Zugriff möglich ist oder nicht. Die Puffer-Lesesteuereinheit 140 bestimmt, dass der Lese-Zugriff möglich ist, wenn (1) die durch den Transferziel-Schreibbefehl zu schreibenden Daten in dem internen Puffer 130 gespeichert sind und (2) eine Transferziel-schreibbar-Anweisung von der datenzerstörungsfreien Steuereinheit 160 erhalten worden ist. Wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der Lese-Zugriff möglich ist (JA in Schritt S44), veranlasst die Puffer-Lesesteuereinheit 140 den Vorgang zu Schritt S45 fortzuschreiten. Andererseits, wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der Lese-Zugriff unmöglich ist (NEIN in Schritt S44), führt die Puffer-Lesesteuereinheit 140 den Vorgang zu Schritt S44 zurück. Dann, nach einem Ablauf einer vorbestimmten Zeitspanne, bestimmt die Puffer-Lesesteuereinheit 140 wieder, ob der Lese-Zugriff möglich ist oder nicht.
-
In Schritt S45 gibt die Puffer-Lesesteuereinheit 140 den Puffer-Lesebefehl an den internen Puffer 130 aus. Mit dieser Anordnung liest die Puffer-Lesesteuereinheit 140 von dem internen Puffer 130 die durch einen Transferziel-Schreibbefehl in einen Transferzielbereich zu schreibenden Daten und überträgt die gelesenen Daten an den Speicher 300.
-
Dann, in Schritt S46, bestimmt die Puffer-Lesesteuereinheit 140, ob der Lese-Zugriff auf den internen Puffer 130 beendet werden soll oder nicht, je nachdem, ob die Puffer-Lesesteuereinheit 140 den einen oder mehrere Puffer-Lesebefehle zum Schreiben der mit der Größe des Transfers korrespondierenden Daten an den internen Puffer 130 übertragen hat oder nicht. Wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der Lese-Zugriff beendet werden soll (JA in Schritt S46), beendet die Puffer-Lesesteuereinheit 140 den Vorgang. Wenn die Puffer-Lesesteuereinheit 140 bestimmt, dass der Lese-Zugriff nicht beendet werden soll (NEIN in Schritt S46), führt die Puffer-Lesesteuereinheit 140 den Vorgang zu Schritt S41 zurück.
-
13 ist ein Flussdiagramm, welches Arbeitsvorgänge der Transferziel-Schreibsteuereinheit 150 gemäß dem ersten Ausführungsbeispiel zeigt. 13 zeigt die Arbeitsvorgänge der Transferziel-Schreibsteuereinheit 150 in Schritt S13 oder S14 in 9.
-
In Schritt S51 bestimmt die Transferziel-Schreibsteuereinheit 150, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll oder nicht, basierend auf der von der datenzerstörungsfreien Steuereinheit 160 übertragenen Transferart. Wenn die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Transferziel-Schreibsteuereinheit 150 den Vorgang zu Schritt S52 fortzuschreiten. Wenn die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der dekrementelle Transfer ausfgeführt werden soll, veranlasst die Transferziel-Schreibsteuereinheit 150 den Vorgang zu Schritt S53 fortzuschreiten.
-
In Schritten S52 und S53 erzeugt die Transferziel-Schreibsteuereinheit 150 einen Burst-Schreibbefehl als einen Transferziel-Schreibbefehl. Dieser Burst-Schreibbefehl ist ein Befehl zum fortlaufenden Schreiben jedes Einheitsbetrages der Daten in der aufsteigenden Reihenfolge von Adresswerten beginnend bei der Schreib-Startadresse, bis eine vorbestimmte Anzahl von Einheitsbeträgen der Daten erreicht wird, wie basierend auf 3 erklärt wird.
-
In Schritt S54 im Anschluss an die Schritte S52 und S53 bestimmt die Transferziel-Schreibsteuereinheit 150, ob ein Schreib-Zugriff möglich ist oder nicht mittels einer Bedingung, welche die gleiche ist wie die zum Bestimmen, durch die Puffer-Lesesteuereinheit 140, ob der Lese-Zugriff möglich ist oder nicht, verwendete Bedingung. Das heißt, die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der Schreib-Zugriff möglich ist, wenn (1) die durch den Transferziel-Schreibbefehl zu schreibenden Daten in dem internen Puffer 130 gespeichert sind und (2) die Transferziel-schreibbar-Anweisung von der datenzerstörungsfreien Steuereinheit 160 erhalten worden ist. Wenn die Transferziel-Schreibsteuereinheit bestimmt, dass der Schreib-Zugriff möglich ist (JA in Schritt S54), veranlasst die Transferziel-Schreibsteuereinheit 150 den Vorgang zu Schritt S55 fortzuschreiten. Andererseits, wenn die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der Schreib-Zugriff unmöglich ist (NEIN in Schritt S54), führt die Transferziel-Schreibsteuereinheit 150 den Vorgang zu Schritt S54 zurück. Dann, nach einem Ablauf einer vorbestimmten Zeitspanne, bestimmt die Transferziel-Schreibsteuereinheit erneut, ob der Schreib-Zugriff möglich ist oder nicht.
-
In Schritt S55 gibt die Transferziel-Schreibsteuereinheit 150 den erzeugten Transferziel-Schreibefehl an den Speicher 300 aus, um die Daten in den Transferzielbereich zu schreiben.
-
Dann, in Schritt S56, bestimmt die Transferziel-Schreibsteuereinheit 150, ob der Schreib-Zugriff auf den Speicher 300 beendet werden soll oder nicht, je nachdem, ob die Transferziel-Schreibsteuereinheit 150 den einen oder mehrere Transferziel-Schreibbefehle zum Schreiben der mit der Größe des Transfers korrespondierenden Daten an den Speicher 300 übertragen hat oder nicht. Wenn die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der Schreib-Zugriff beendet werden soll (JA in Schritt S56), beendet die Transferziel-Schreibsteuereinheit 150 den Vorgang. Andererseits, wenn die Transferziel-Schreibsteuereinheit 150 bestimmt, dass der Schreib-Zugriff nicht beendet werden soll (NEIN in Schritt S56), führt die Transferziel-Schreibsteuereinheit 150 den Vorgang zu Schritt S51 zurück, erzeugt einen anschließenden Transferziel-Schreibbefehl und überträgt an den Speicher 300 den erzeugten anschließenden Transferziel-Schreibbefehl, um die Daten zu schreiben.
-
In Schritt S52 erzeugt die Transferziel-Schreibsteuereinheit 150 die Burst-Schreibbefehle in der inkrementellen Richtung. Das heißt, die Transferziel-Schreibsteuereinheit 150 erzeugt die Burst-Schreibbefehle so, dass Adresswerte von Schreib-Startadressen der Burst-Schreibbefehle in der aufsteigenden Reihenfolge angeordnet sind.
-
Andererseits, in Schritt S53, erzeugt die Transferziel-Schreibsteuereinheit 150 die Burst-Schreibbefehle in der dekrementellen Richtung. Das heißt die Transferziel-Schreibsteuereinheit 150 erzeugt die Burst-Schreibbefehle so, dass die Adresswerte der Schreib-Startadressen der Burst-Schreibbefehle in der absteigenden Reihenfolge angeordnet sind.
-
14 ist ein Flussdiagramm, welches Arbeitsvorgänge der datenzerstörungsfreien Steuereinheit 160 gemäß dem ersten Ausführungsbeispiel zeigt. 14 zeigt die Arbeitsvorgänge der datenzerstörungsfreien Steuereinheit 160 in Schritt S13 oder S14 in 9.
-
In Schritt S61, bestimmt die datenzerstörungsfreie Steuereinheit 160, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll oder nicht, basierend auf der in dem Transferart-Einstellregister 161 eingestellten Transferart. Wenn die datenzerstörungsfreie Steuereinheit 160 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S62 fortzuschreiten. Wenn die datenzerstörungsfreie Steuereinheit bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S66 fortzuschreiten.
-
In Schritt S62 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob ein von der Puffer-Schreibzyklus-Zähleinheit 170 gezählter Puffer-Schreibzyklus-Zählwert größer ist als ein von der Puffer-Lesezyklus-Zähleinheit 180 gezählter Puffer-Lesezyklus-Zählwert oder nicht. Wenn bestimmt wird, dass der Puffer-Schreibzyklus-Zählwert nicht größer ist als der Puffer-Lesezyklus-Zählwert (NEIN in Schritt S62), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S63 fortzuschreiten. Wenn bestimmt wird, dass der Puffer-Schreibzyklus-Zählwert größer ist als der Puffer-Lesezyklus-Zählwert (JA in Schritt S62), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S66 fortzuschreiten.
-
In Schritt S63 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob der von der Puffer-Schreibzyklus-Zähleinheit 170 gezählte Puffer-Schreibzyklus-Zählwert kleiner ist als der von der Puffer-Lesezyklus-Zähleinheit 180 gezählte Puffer-Lesezyklus-Zählwert. Wenn bestimmt wird, dass der Puffer-Schreibzyklus-Zählwert nicht kleiner ist als der Puffer-Lesezyklus-Zählwert (NEIN in Schritt S63), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S64 fortzuschreiten. Wenn bestimmt wird, dass der Puffer-Schreibzyklus-Zählwert kleiner ist als der Puffer-Lesezyklus-Zählwert (JA in Schritt S63), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S65 fortzuschreiten.
-
In Schritt S64 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob der Adresswert, welcher von dem Puffer-Schreibfertigstellungszeiger angezeigt wird, welcher in dem Puffer-Schreibfertigstellungszeiger-Einstellregister 162 eingestellt ist, gleich oder kleiner als der Adresswert, welcher von dem Puffer-Lesezeiger angezeigt wird, welcher in dem Puffer-Lesezeiger-Einstellregister 163 eingestellt ist, ist oder nicht. Wenn bestimmt wird, dass der von dem Puffer-Schreibfertigstellungszeiger angezeigte Adresswert nicht gleich oder kleiner ist als der von dem Puffer-Lesezeiger angezeigte Adresswert (NEIN in Schritt S64), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S65 fortzuschreiten. Andererseits, wenn bestimmt wird, dass der von dem Puffer-Schreibfertigstellungszeiger angezeigte Adresswert gleich oder kleiner ist als der von dem Puffer-Lesezeiger angezeigte Adresswert (JA in Schritt S64), veranlasst die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S66 fortzuschreiten.
-
In Schritt S65 bestimmt die datenzerstörungsfreie Steuereinheit 160, dass eine Vorbereitung zum Lesen von dem Puffer nicht fertiggestellt worden ist, und die datenzerstörungsfreie Steuereinheit 160 überträgt daher nicht die Transferziel-schreibbar-Anweisung. Andererseits, in Schritt 566, bestimmt die datenzerstörungsfreie Steuereinheit 160, dass die Vorbereitung zum Lesen von dem Puffer fertiggestellt worden ist, und die datenzerstörungsfreie Steuereinheit 160 überträgt daher die Transferziel-schreibbar-Anweisung an die Puffer-Lesesteuereinheit 140 und die Transferziel-Schreibsteuereinheit 150.
-
In Schritt S67 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob der Vorgang beendet werden soll oder nicht, je nachdem, ob ein Transfer von mit der Größe des Transfers korrespondierenden Daten fertiggestellt worden ist oder nicht. Wenn die datenzerstörungsfreie Steuereinheit 160 bestimmt, dass der Vorgang beendet werden soll (JA in Schritt S67), beendet die datenzerstörungsfreie Steuereinheit 160 den Vorgang. Andererseits, wenn die datenzerstörungsfreie Steuereinheit 160 bestimmt, dass der Vorgang nicht beendet werden soll (NEIN in Schritt S67), führt die datenzerstörungsfreie Steuereinheit 160 den Vorgang zu Schritt S61 zurück und bestimmt dann erneut, ob die Vorbereitung zum Lesen von dem Puffer fertiggestellt worden ist oder nicht.
-
Das heißt, im Fall des inkrementellen Transfers, wird ständig bestimmt, dass die Vorbereitung zum Lesen von dem Puffer fertiggestellt worden ist.
-
Andererseits, im Fall des dekrementellen Transfers,
- (1) wenn gilt, dass „der Puffer-Schreibzyklus-Zählwert > der Puffer-Lesezyklus-Zählwert”, und
- (2) wenn gilt, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und dass „der von dem Puffer-Schreibfertigstellungszeiger angezeigte Adresswert ≤ dem von dem Puffer-Lesezeiger angezeigten Adresswert”,
wird bestimmt, dass die Vorbereitung zum Lesen von dem Puffer fertiggestellt worden ist.
-
15 ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Schreibzyklus-Zähleinheit 170 gemäß dem ersten Ausführungsbeispiel zeigt. 15 zeigt die Arbeitsvorgänge der Puffer-Schreibzyklus-Zähleinheit 170 in Schritt S13 oder S14 in 9.
-
In Schritt S71 bestimmt die Puffer-Schreibzyklus-Zähleinheit, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll oder nicht, basierend auf der von der datenzerstörungsfreien Steuereinheit 160 übertragenen Transferart. Wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang zu Schritt 572 fortzuschreiten. Wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang zu Schritt S74 fortzuschreiten.
-
In Schritt S72 bestimmt die Puffer-Schreibzyklus-Zähleinheit 170, ob der von der Puffer-Schreibsteuereinheit 120 erzeugte Puffer-Schreibfertigstellungszeiger umgelaufen ist oder nicht. Wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der Puffer-Schreibfertigstellungszeiger umgelaufen ist (JA in Schritt S72), veranlasst die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang zu Schritt S73 fortzuschreiten. Wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der Puffer-Schreibfertigstellungszeiger nicht umgelaufen ist (NEIN in Schritt S72) veranlasst die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang zu Schritt S74 fortzuschreiten.
-
In Schritt S73 zählt die Puffer-Schreibzyklus-Zähleinheit 170 den Zähler um +1 hoch.
-
In Schritt S74 bestimmt die Puffer-Schreibzyklus-Zähleinheit 170, ob der Vorgang beendet werden soll oder nicht, je nachdem, ob ein Transfer der mit der Größe des Transfers korrespondierenden Daten fertiggestellt worden ist oder nicht. Wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der Vorgang beendet werden soll (JA in Schritt S74), beendet die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang. Andererseits, wenn die Puffer-Schreibzyklus-Zähleinheit 170 bestimmt, dass der Vorgang nicht beendet werden soll (NEIN in Schritt S74), führt die Puffer-Schreibzyklus-Zähleinheit 170 den Vorgang zu Schritt S71 zurück und bestimmt erneut, ob der Zähler hochgezählt werden soll oder nicht.
-
16 ist ein Flussdiagramm, welches Arbeitsvorgänge der Puffer-Lesezyklus-Zähleinheit 180 gemäß dem ersten Ausführungsbeispiel zeigt. 16 zeigt die Arbeitsvorgänge der Puffer-Lesezyklus-Zähleinheit 180 in Schritt S13 oder S14 in 9.
-
In Schritt S81 bestimmt die Puffer-Lesezyklus-Zähleinheit 180, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll oder nicht, basierend auf der von der datenzerstörungsfreien Steuereinheit 160 übertragenen Transferart. Wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der dekrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Lesezyklus-Zähleinheit 180 den Vorgang zu Schritt S82 fortzuschreiten. Wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der inkrementelle Transfer ausgeführt werden soll, veranlasst die Puffer-Lesezyklus-Zähleinheit den Vorgang zu Schritt S84 fortzuschreiten.
-
In Schritt S82 bestimmt die Puffer-Lesezyklus-Zähleinheit 180, ob der von der Puffer-Lesesteuereinheit 140 erzeugte Puffer-Lesezeiger umgelaufen ist oder nicht. Wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der Puffer-Lesezeiger umgelaufen ist (JA in Schritt S82), veranlasst die Puffer-Lesezyklus-Zähleinheit 180 den Vorgang zu Schritt S83 fortzuschreiten. Wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der Puffer-Lesezeiger nicht umgelaufen ist (NEIN in Schritt S82), veranlasst die Puffer-Lesezyklus-Zähleinheit 180 den Vorgang zu Schritt S84 fortzuschreiten.
-
In Schritt S83 zählt die Puffer-Lesezyklus-Zähleinheit 180 den Zähler um +1 hoch.
-
In Schritt S84 bestimmt die Puffer-Lesezyklus-Zähleinheit 180, ob der Vorgang beendet werden soll oder nicht, je nachdem, ob ein Transfer der mit der Größe des Transfers korrespondierenden Daten fertiggestellt ist oder nicht. Wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der Vorgang beendet werden soll (JA in Schritt S84), beendet die Puffer-Lesezyklus-Zähleinheit 180 den Vorgang. Andererseits, wenn die Puffer-Lesezyklus-Zähleinheit 180 bestimmt, dass der Vorgang nicht beendet werden soll (NEIN in Schritt S84), führt die Puffer-Lesezyklus-Zähleinheit 180 den Vorgang zu Schritt S81 zurück und bestimmt erneut, ob der Zähler hochgezählt werden soll oder nicht.
-
Als nächstes werden spezifische Betriebsbeispiele der DMA-Transfer-Steuereinrichtung 100 beschrieben.
-
17 bis 21 sind jeweils eine Darstellung, welche eine Änderung in Daten während eines DMA-Transfers zeigen, wenn die Daten mit einer größeren Größe als der Größe des internen Puffers 130 DMA-transferiert worden sind, und der Puffer-Schreibfertigstellungszeiger umgelaufen ist. Das heißt, 17 bis 21 sind jeweils die Darstellung, welche die Änderung in den Daten zeigt, wenn „der Puffer-Schreibzyklus-Zählwert > der Puffer-Lesezyklus-Zählwert”.
-
In dem Beispiel in jeder der 17 bis 21 wird angenommen, dass die Größe des internen Puffers 130 64 Bytes ist, von denen zwei Bytes von jeder Zelle angegeben werden. Es wird auch angenommen, dass eine Transferquelle und ein Transferziel in jeder 17 bis 21 ein gleiches Gerät sind, und jede Zelle der Transferquelle und des Transferziels zwei Bytes angibt.
-
In dem Beispiel in jeder der 17 bis 21 werden die Daten in einem Bereich der Transferquelle, welche durch Adressen 00h bis 58h spezifiziert ist, zu einem Bereich des Transferziels, welcher durch Adressen 20h bis 78h spezifiziert ist, durch den dekrementellen Transfer transferiert. Die DMA-Transfer-Steuereinrichtung 100 gibt an die Transferquelle einen Lese-1(Vier-Burst-Lese)-Befehl, einen Lese-2(Vier-Burst-Lese)-Befehl und einen Lese-3(Vier-Burst-Lese)-Befehl in dieser angegebenen Reihenfolge aus.
-
Lese-Reihenfolgen, welche auf der rechten Seite der Transferquelle in jeder der 17 bis 21 gezeigt sind, geben Reihenfolgen an, in welcher die DMA-Transfer-Steuereinrichtung 100 die gelesenen Daten erhält. Die DMA-Transfer-Steuereinrichtung 100 erhält die gelesenen Daten in der Reihenfolge von R1 bis R12 und schreibt die gelesenen Daten in den internen Puffer 130 in der gleichen Reihenfolge. Schreib-Reihenfolgen, welche auf der rechten Seite des Transferziels in jeder der 17 bis 21 gezeigt sind, geben Reihenfolgen an, in welcher die DMA-Transfer-Steuereinrichtung 100 die Daten an das Transferziel ausgibt. Die DMA-Transfer-Steuereinrichtung 100 erhält die geschriebenen Daten von dem internen Puffer 130 in der Reihenfolge von W1 bis W12 und schreibt die Schreibdaten in das Transferziel in der gleichen Reihenfolge.
-
Der Puffer-Schreibfertigstellungszeiger in jeder der 17 bis 21 zeigt einen Bereich des internen Puffers 130 an, wo die Daten vorbereitet werden könnten, und der Puffer-Lesezeiger zeigt einen Bereich des internen Puffers 130 an, der gelesen werden soll. Der Puffer-Schreibzyklus-Zählwert gibt die Anzahl von Umläufen des Puffer-Schreibfertigstellungszeigers an, und der Puffer-Lesezyklus-Zählwert gibt die Anzahl von Umläufen des Puffer-Lesezeigers an. Jeder der Zeiger zählt mit +1 für jeden Umlauf hoch.
-
Als erstes, in Schritt S11, werden die folgenden Einstellungsinformationen in der DMA-Transfer-Steuereinrichtung 100 eingestellt:
Transferquelladresse: 00h
Transferzieladresse: 20h
Transfer-Größe: 96 Bytes
Transferart: dekrementeller Transfer
-
Als nächstes, in Schritt S12 wird der dekrementelle Transfer jeder Steuereinheit und jeder Zähleinheit von der datenzerstörungsfreien Steuereinheit 160 mitgeteilt. Dann schreitet der Vorgang zu Schritt S14 fort, wo der DMA-Transfer mittels des dekrementellen Transfers ausgeführt wird.
-
In einem Vorgang 1, welcher in 17 gezeigt ist, gibt die Transferquell-Lesesteuereinheit 110 den Lese-1(Vier-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 40h bis 58h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 einen Puffer-Schreib-1-Befehl, welcher mit dem Lese-1-Befehl korrespondiert, an den internen Puffer 130 aus, um die gelesenen Daten in einen Bereich des internen Puffers 130 bei Adressen 20h bis 38h zu schreiben. Wenn der durch den Puffer-Schreib-1-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 20h.
-
Die Puffer-Lesesteuereinheit 140 stellt den Puffer-Lesezeiger auf die Adresse 20h (gelesener Bereich der Daten, welche gemäß dem Schreib-1(vier Burst-Schreib)-Befehl, der an das Transferziel ausgegeben wird, ausgegeben werden soll) ein.
-
n einem in 18 gezeigten Vorgang 2 gibt die Transferquell-Lesesteuereinheit 110 den Lese-2(vier Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 20h bis 38h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 an den internen Puffer 130 einen Puffer-Schreib-2-Befehl, welcher dem Lese-2-Befehl entspricht aus, um die gelesenen Daten in einen Bereich des internen Speichers 130 bei Adressen 00h bis 18h zu schreiben. Wenn der von dem Puffer-Schreib-2-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 00h.
-
Parallel zum Lesen von der Transferquelle stellt die datenzerstörungsfreie Steuereinheit 160 fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert” und gibt dadurch eine Transferziel-schreibbar-Anweisung aus. Beim Feststellen der Transferziel-schreibbar-Anweisung gibt die Puffer-Lesesteuereinheit 140 einen Puffer-Lese-1-Befehl an den Bereich des internen Puffers 130 bei den Adressen 20h bis 38h aus, um die Daten zu lesen, welche in das Transferziel geschrieben werden sollen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-1(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 60h bis 78h aus.
-
In einem in 19 gezeigten Vorgang 3 gibt die Transferquell-Lesesteuereinheit 110 den Lese-3(Vier-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 00h bis 18h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 einen Puffer-Schreib-3-Befehl, der mit dem Schreib-3-Befehl korrespondiert, an den internen Puffer 130 aus, um die gelesenen Daten in den Bereich des internen Puffers 130 bei den Adressen 20h bis 38h zu schreiben. Wenn der durch den Puffer-Schreib-3-Befehl spezifizierte Vorgang abgeschlossen ist, wird der Puffer-Schreibfertigstellungszeiger auf die Adresse 20h aktualisiert. Dabei tritt ein Umlauf auf. Die Puffer-Schreibzyklus-Zähleinheit 170 erfasst den Umlauf des Puffer-Schreibfertigstellungszeigers und zählt dann den Puffer-Schreibzyklus-Zählwert um +1 hoch.
-
Die Puffer-Lesesteuereinheit 140 aktualisiert den Puffer-Lesezeiger auf die Adresse 00h, wenn der durch den Puffer-Lese-1-Befehl spezifizierte Vorgang abgeschlossen ist. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzykluszählwert > der Puffer-Lesezyklus-Zählwert”, bestimmt, dass eine Datenvorbereitung abgeschlossen ist und gibt dann eine Transferziel-schreibbar-Anweisung aus. Die Puffer-Lesesteuereinheit 140 gibt bei Erfassung der Transferziel-schreibbar-Anweisung einen Puffer-Lese-2-Befehl an den Bereich des internen Puffers 130 bei den Adressen 00h bis 18h aus. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-2(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 40h bis 58h aus.
-
In einem in 20 gezeigten Vorgang 4, wenn der durch den Puffer-Lese-2-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Lesesteuereinheit 140 den Puffer-Lesezeiger auf die Adresse 20h. Dabei tritt ein Umlauf auf. Die Puffer-Lesezyklus-Zähleinheit 180 erfasst den Umlauf und zählt dann den Puffer-Lesezyklus-Zählwert um +1 hoch. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert”, bestimmt, dass eine Datenvorbereitung abgeschlossen ist und gibt dann eine Transferziel-schreibbar-Anweisung aus. Die Puffer-Lesesteuereinheit 140 gibt bei Erfassung der Transferzielschreibbar-Anweisung einen Puffer-Lese-3-Befehl an den Bereich des internen Puffers 130 bei den Adressen 20h bis 38h aus. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-3(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 20h bis 38h aus.
-
In einem in 21 gezeigten Vorgang 5 wird das DMA-Transferergebnis gezeigt. Wie in dem Transferziel gezeigt ist, ist der Transfer der Daten abgeschlossen ohne ein Auftreten einer Zerstörung der Daten.
-
22 bis 26 zeigen jeweils eine Darstellung, welche eine Änderung in Daten während eines DMA-Transfers zeigt, wenn die Daten mit einer Größe größer als die Größe des internen Puffers 130 DMA transferiert worden sind und der Puffer-Lesezeiger früher umgelaufen ist. Das heißt, 22 bis 26 sind jeweils die Darstellung, welche die Änderung in den Daten zeigen, wenn „der Puffer-Schreibzyklus-Zählwert < der Puffer-Lesezyklus-Zählwert”.
-
In dem Beispiel in jeder der 22 bis 26 wird angenommen, dass die Größe des internen Puffers 130 64 Bytes ist, von denen zwei Bytes von jeder Zelle angegeben werden. Es wird auch angenommen, dass eine Transferquelle und ein Transferziel in jeder der 22 bis 26 ein gleiches Gerät sind, und jede Zelle der Transferquelle und des Transferziels zwei Bytes angeben.
-
In dem Beispiel in jeder der 22 bis 26 werden die Daten in einen Bereich der Transferquelle, welcher durch Adressen 08h bis 58h spezifiziert ist, zu einem Bereich des Transferziels, welcher durch Adressen 20h bis 70h spezifiziert ist, durch den dekrementellen Transfer transferiert. Die DMA-Transfer-Steuereinrichtung 100 gibt an die Transferquelle einen Lese-1(Vier-Burst-Lese)-Befehl, einen Lese-2(Vier-Burst-Lese)-Befehl und einen Lese-3 (Drei-Burst-Lese)-Befehl in dieser dargelegten Reihenfolge aus. Die DMA-Transfer-Steuereinrichtung 100 gibt an das Transferziel einen Schreib-1(Drei-Burst-Schreib)-Befehl, einen Schreib-2(Vier-Burst-Schreib)-Befehl und einen Schreib-3(Vier-Burst-Lese)-Befehl in dieser dargelegten Reihenfolge aus. Wenn die Adresse eines Leseziels und die Adresse eines Schreibziels sich jeweils über einen 32-Byte-Rand ausdehnen, wird ein Befehl für einen Burst-Transfer von drei Bursts oder weniger zum Runden ausgegeben.
-
Lese-Reihenfolgen, welche auf der rechten Seite der Transferquelle in jeder der 22 bis 26 gezeigt sind, geben Reihenfolgen an, in welchen die DMA-Transfer-Steuereinrichtung 100 die gelesenen Daten erhält. Die DMA-Transfer-Steuereinheit 100 erhält die gelesenen Daten in der Reihenfolge von R1 bis R11 und schreibt die gelesenen Daten in den internen Puffer 130 in der gleichen Reihenfolge. Schreib-Reihenfolgen, welche auf der rechten Seite des Transferziels in jeder 22 bis 26 gezeigt sind, geben Reihenfolgen an, in welchen die DMA-Transfer-Steuereinrichtung 100 die Daten an das Transferziel ausgibt. Die DMA-Transfer-Steuereinrichtung 100 erhält die Schreibdaten von dem internen Puffer 130 in der Reihenfolge von W1 bis W11 und schreibt die erhaltenen Schreibdaten in das Transferziel in der gleichen Reihenfolge. Der Puffer-Schreibfertigstellungszeiger in jeder 22 bis 26 gibt einen Bereich des internen Puffers an, wo die Daten vorbereitet werden könnten, und der Puffer-Lesezeiger gibt einen Bereich des internen Puffers 130 an, der gelesen werden soll. Der Puffer-Schreibzyklus-Zählwert gibt die Anzahl von Umläufen des Puffer-Schreibfertigstellungszeigers an, und der Puffer-Lesezyklus-Zählwert gibt die Anzahl von Umläufen des Puffer-Lesezeigers an. Jeder der Zeiger zählt um +1 für jeden Umlauf hoch.
-
Als erstes, in Schritt S11, werden die folgenden Einstellungsinformationen in der DMA-Transfer-Steuereinrichtung 100 eingestellt:
Transferquelladresse: 00h
Transferzieladresse: 20h
Transfer-Größe: 88 Bytes
Transferart: dekrementeller Transfer
-
Als nächstes, in Schritt S12, wird der dekrementelle Transfer jeder Steuereinheit und jeder Zähleinheit von der datenzerstörungsfreien Steuereinheit 160 mitgeteilt. Dann schreitet der Vorgang zu Schritt S14 fort, wo der DMA-Transfer durch den dekrementellen Transfer ausgeführt wird.
-
In einem in 22 gezeigten Vorgang 1 gibt die Transferquell-Lesesteuereinheit 110 den Lese-1(Vier-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 40h bis 58h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 einen Puffer-Schreib-1-Befehl, welcher mit dem Lese-1-Befehl korrespondiert, an den internen Puffer 130 aus, um die gelesenen Daten in den Bereich des internen Puffers bei den Adressen 20h bis 38h zu speichern. Wenn der durch den Puffer-Schreib-1-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 20h. Die Puffer-Schreibsteuereinheit 140 stellt den Puffer-Lesezeiger auf den gelesenen Bereich (bei der Adresse 28h) der Daten ein, welche gemäß dem Schreib-1(Drei-Burst-Schreib)-Befehl ausgegeben werden sollen, welcher an das Transferziel ausgegeben wird. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert” und gibt dadurch eine Transferziel-schreibbar-Anweisung aus. Bei Erfassung der Transferziel-schreibbar-Anweisung gibt die Puffer-Lesesteuereinheit 140 einen Puffer-Lese-1-Befehl an einen Bereich des internen Puffers 130 bei den Adressen 28h bis 38h aus, um die Daten zu lesen, welche in das Transferziel geschrieben werden sollen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-1(Drei-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 60h bis 70h aus.
-
In einem in 23 gezeigten Vorgang 2 gibt die Transferquell-Lesesteuereinheit 110 den Lese-2(Vier-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 20h bis 38h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 an den internen Puffer 130 einen Puffer-Schreib-2-Befehl, welcher mit dem Lese-2-Befehl korrespondiert, aus, um die gelesenen Daten in den Bereich des internen Puffers 130 bei den Adressen 00h bis 18h zu schreiben. Wenn der durch den Puffer-Schreib-2-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 00h.
-
Wenn der durch den Puffer-Lese-1-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Lesesteuereinheit 140 den Puffer-Lesezeiger auf die Adresse 08h. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert” und gibt dadurch eine Transferquelle-schreibbar-Anweisung aus. Bei Erfassung der Transferquelle-schreibbar-Anweisung gibt die Puffer-Lesesteuereinheit 140 einen Puffer-Lese-2-Befehl an einen Bereich des internen Puffers 130 bei den Adressen 08h bis 20h aus, um die Daten zu lesen, welche in das Transferziel geschrieben werden sollen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-2(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 40h bis 58h aus.
-
In einem in 24 gezeigten Vorgang 3 gibt die Transferquell-Lesesteuereinheit 110 den Lese-3(Drei-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 08h bis 18h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 einen Puffer-Schreib-3-Befehl, welcher mit dem Lese-3-Befehl korrespondiert, an den internen Puffer 130 aus, um die gelesenen Daten in den Bereich des internen Puffers bei den Adressen 28h bis 38h zu schreiben. Hier wird angenommen, dass der durch den Puffer-Schreib-3-Befehl spezifizierte Vorgang nicht abgeschlossen ist. Daher wird der Puffer-Schreibfertigstellungszeiger nicht aktualisiert.
-
Da der durch den Puffer-Lese-2-Befehl spezifizierte Vorgang nicht fertiggestellt worden ist, aktualisiert die Puffer-Lesesteuereinheit 140 den Puffer-Lesezeiger auf die Adresse 28h. Dabei tritt ein Umlauf auf. Die Puffer-Lesezyklus-Zähleinheit 180 erfasst den Umlauf und zählt dann den Puffer-Lesezyklus-Zählwert um +1 hoch. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert < der Puffer-Lesezyklus-Zählwert”, bestimmt, dass eine Datenvorbereitung nicht abgeschlossen ist und gibt daher eine Transferziel-schreibbar-Anweisung (erlaubt ein Schreiben in das Transferziel nicht) aus. Die Puffer-Lesesteuereinheit 140 erfasst keine Transferziel-schreibbar-Anweisung. Daher gibt die Puffer-Lesesteuereinheit 140 keinen anschließenden Puffer-Lesebefehl an den internen Puffer 130 aus. Gleichermaßen gibt die Transferziel-Schreibsteuereinheit 150 auch nicht den anschließenden Schreib-3(Vier-Burst-Schreib)-Befehl an das Transferziel aus.
-
In einem in 25 gezeigten Vorgang 4 ist ein durch den Puffer-Schreib-3-Befehl spezifizierter Vorgang abgeschlossen. Dann aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 28h. Dabei tritt ein Umlauf auf. Die Puffer-Schreibzyklus-Zähleinheit 170 erfasst den Umlauf des Puffer-Schreibfertigstellungszeigers und zählt dann den Puffer-Schreibzyklus-Zählwert um +1 hoch.
-
Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert”, bestimmt, dass die Datenvorbereitung abgeschlossen ist und gibt dann die Transferzielschreibbar-Anweisung aus. Die Puffer-Lesesteuereinheit 140 gibt bei Erfassung der Transferziel-schreibbar-Anweisung einen Puffer-Lese-3-Befehl an einen Bereich des internen Puffers 130 bei den Adressen 28h bis 00h aus, um die in das Transferziel zu schreibenden Daten zu lesen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-3(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 20h bis 38h aus.
-
In einem in 26 gezeigten Vorgang 5 ist das DMA-Transfer-Ergebnis gezeigt. Wie in dem Transferziel gezeigt, ist der Transfer der Daten abgeschlossen ohne ein Auftreten von Datenzerstörung.
-
27 bis 31 zeigen jeweils eine Darstellung, welche eine Änderung in Daten während eines DMA-Transfers zeigt, wenn die Daten von einer Größe kleiner als die Größe des internen Puffers 130 DMA-transferiert worden sind, und weder der Puffer-Schreibfertigstellungszeiger noch der Puffer-Lesezeiger umgelaufen sind. Das heißt, 27 bis 31 zeigen jeweils die Darstellung, welche die Änderung in den Daten zeigt, wenn „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert”. Zur Vereinfachung wird hier ein spezifisches Beispiel aufgezeigt, in dem weder der Puffer-Schreibfertigstellungszeiger noch der Puffer-Lesezeiger umgelaufen sind. Ein ähnlicher Effekt kann jedoch auch erhalten werden, sogar wenn die Anzahlen der Umläufe des Puffer-Schreibfertigstellungszeigers sowie des Puffer-Lesezeigers gleich sind.
-
In dem Beispiel in jeder der 27 bis 31 wird angenommen, dass die Größe des internen Puffers 130 64 Bytes beträgt, von denen zwei Bytes durch jede Zelle angegeben werden. Es wird auch angenommen, dass eine Transferquelle und ein Transferziel in jeder der 27 bis 31 ein gleiches Gerät sind, und jede Zelle der Transferquelle und des Transferziels zwei Bytes angibt.
-
In dem Beispiel in jeder der 27 bis 31 werden die Daten in einem Bereich der Transferquelle, welcher durch Adressen 00h bis 30h spezifiziert ist, zu einem Bereich des Transferziels, welcher durch Adressen 18h bis 48h spezifiziert ist, durch den dekrementellen Transfer transferiert. Die DMA-Transfer-Steuereinrichtung 100 gibt an die Transferquelle einen Lese-1(Drei-Burst-Lese)-Befehl und einen Lese-2(Vier-Burst-Lese)-Befehl in dieser angegebenen Reihenfolge aus. Die DMA-Transfer-Steuereinrichtung 100 gibt an das Transferziel einen Schreib-1(Vier-Burst-Schreib)-Befehl und einen Schreib-2(Drei-Burst-Schreib)-Befehl in dieser angegebenen Reihenfolge aus. Wenn die Adresse eines Leseziels und die Adresse eines Schreibziels jeweils einen 32-Byte-Rand übersteigen, wird ein Befehl zum Burst-Transfer von drei Bursts oder weniger zum Runden ausgegeben.
-
Lese-Reihenfolgen, welche auf der rechten Seite der Transferquelle in jeder der 27 bis 31 gezeigt sind, geben Reihenfolgen an, in welcher die DMA-Transfer-Steuereinrichtung 100 die gelesenen Daten erhält. Die DMA-Transfer-Steuereinrichtung 100 erhält die gelesenen Daten in der Reihenfolge von R1 bis R7 und schreibt die gelesenen Daten in den internen Puffer 130 in der gleichen Reihenfolge. Schreib-Reihenfolgen, welche auf der rechten Seite des Transferziels in jeder der 27 bis 31 gezeigt sind, geben Reihenfolgen an, in welcher die DMA-Transfer-Steuereinrichtung 100 die Daten an das Transferziel ausgeben. Die DMA-Transfer-Steuereinrichtung 100 erhält die geschriebenen Daten von dem internen Puffer 130 in der Reihenfolge von W1 bis W7 und schreibt die Daten in das Transferziel in der gleichen Reihenfolge.
-
Der Puffer-Schreibfertigstellungszeiger in jeder der 27 bis 31 gibt einen Bereich des internen Puffers 130 an, wo die Daten vorbereitet werden könnten, und der Puffer-Lesezeiger gibt einen Bereich des internen Puffers 130 an, der gelesen werden soll. Der Puffer-Schreibzyklus-Zähler gibt die Anzahl von Umläufen des Puffer-Schreibfertigstellungszeigers an, und der Puffer-Lesezyklus-Zähler gibt die Anzahl von Umläufen des Puffer-Lesezeigers an. Jeder der Zeiger zählt für jeden Umlauf um +1 hoch.
-
Zuerst werden in Schritt S11 die folgenden Einstellungsinformationen in der DMA-Transfer-Steuereinheit 100 eingestellt:
Transferquelladresse: 00h
Transferzieladresse: 30h
Transfer-Größe: 56 Bytes
Transferart: dekrementeller Transfer
-
Als nächstes wird in Schritt S12 jeder Steuereinheit und jeder Zähleinheit der dekrementelle Transfer von der datenzerstörungsfreien Steuereinheit 160 mitgeteilt. Dann schreitet der Vorgang zu Schritt S14 fort, wo der DMA-Transfer durch den dekrementellen Transfer ausgeführt wird.
-
In einem in 27 gezeigten Vorgang 1 gibt die Transferquell-Lesesteuereinheit 110 den Lese-1(Drei-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 20h bis 30h aus. Bei Empfang der gelesenen Daten von der Transferquelle gibt die Puffer-Schreibsteuereinheit 120 einen Puffer-Schreib-1-Befehl, welcher mit dem Lese-1-Befehl korrespondiert, an den internen Puffer 130 aus, um die gelesenen Daten in den Bereich des internen Puffers 130 bei den Adressen 28h bis 38h zu schreiben. Wenn der von dem Puffer-Schreib-1-Befehl spezifizierte Vorgang abgeschlossen ist, aktualisiert die Puffer-Schreib-Steuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 28h.
-
Die Puffer-Lesesteuereinheit 140 stellt den Puffer-Lesezeiger auf den gelesenen Bereich (bei der Adresse 20h) der Daten ein, welche gemäß dem Schreib-1(Vier-Burst-Schreib)-Befehl, der an das Transferziel ausgegeben wird, ausgegeben werden sollen.
-
In einem in 28 gezeigten Vorgang 2 gibt die Transferquell-Lesesteuereinheit 110 den Lese-2(Vier-Burst-Lese)-Befehl an den Bereich der Transferquelle bei den Adressen 00h bis 18h aus. Bei Empfang der gelesenen Daten von der Transferquelle, gibt die Puffer-Schreibsteuereinheit 120 an den internen Puffer 130 einen Puffer-Schreib-2-Befehl, welcher mit dem Lese-2-Befehl korrespondiert, aus, um die gelesenen Daten in den Bereich des internen Puffers 130 bei den Adressen 08h bis 20h zu schreiben. Hier wird angenommen, dass der durch den Puffer-Schreib-2-Befehl spezifizierte Vorgang nicht abgeschlossen ist und dass die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger nicht aktualisiert.
-
Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und der Puffer-Schreibfertigstellungszeigerwert > der Puffer-Lesezeigerwert”, bestimmt, dass eine Datenvorbereitung nicht abgeschlossen ist und gibt daher keine Transferziel-schreibbar-Anweisung aus. Da die Puffer-Lesesteuereinheit 140 die Transferziel-schreibbar-Anweisung nicht erfasst, gibt die Puffer-Lesesteuereinheit 140 keinen Puffer-Lese-1-Befehl aus. Gleichermaßen gibt die Transferziel-Schreibsteuereinheit 150 keinen Schreib-1-Befehl aus. In dem Zustand des Vorgangs 2 wird bestimmt, dass die Datenvorbereitung nicht fertiggestellt worden ist, weil ein Datenbetrag (welcher vier Bursts entspricht), der notwendig für den anschließenden Schreib-1-Befehl ist, vorhanden ist, aber die notwendigen Datentypen (Daten von 13 bis 28) nicht vorhanden sind.
-
In einem in 29 gezeigten Vorgang 3 ist der durch den Puffer-Schreib-2-Befehl spezifizierte Vorgang abgeschlossen. Dann aktualisiert die Puffer-Schreibsteuereinheit 120 den Puffer-Schreibfertigstellungszeiger auf die Adresse 08h.
-
Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert ≤ dem Puffer-Lesezeigerwert”, bestimmt, dass die Datenvorbereitung abgeschlossen ist und gibt dann die Transferzielschreibbar-Anweisung aus. Bei Erfassung der Transferziel-Anweisung gibt die Puffer-Lesesteuereinheit 140 den Puffer-Lese-1-Befehl an den Bereich des internen Puffers 130 bei den Adressen 20h bis 38h aus, um die in das Transferziel zu schreibenden Daten zu lesen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-1(Vier-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 30h bis 48h aus.
-
In einem in 30 gezeigten Vorgang 4 aktualisiert die Puffer-Lesesteuereinheit 140 den Puffer-Lesezeiger auf die Adresse 08h, wenn der durch den Puffer-Lese-1-Befehl spezifizierte Vorgang abgeschlossen ist. Die datenzerstörungsfreie Steuereinheit 160 stellt fest, dass „der Puffer-Schreibzyklus-Zählwert = dem Puffer-Lesezyklus-Zählwert” und „der Puffer-Schreibfertigstellungszeigerwert” ≤ dem Puffer-Lesezeigerwert”, bestimmt, dass die Datenvorbereitung abgeschlossen ist und gibt dann eine Transferzielschreibbar-Anweisung aus. Bei Erfassung der Transferziel-schreibbar-Anweisung gibt die Puffer-Lesesteuereinheit 140 einen Puffer-Lese-2-Befehl an einen Bereich des internen Puffers 130 bei den Adressen 08h bis 18h aus, um die in das Transferziel zu schreibenden Daten zu lesen. Die Transferziel-Schreibsteuereinheit 150 gibt den Schreib-2(Drei-Burst-Schreib)-Befehl an den Bereich des Transferziels bei den Adressen 18h bis 28h aus.
-
In einem in 31 gezeigten Vorgang 5 ist das DMA-Transfer-Ergebnis gezeigt. Wie in dem Transferziel gezeigt, ist der Transfer der Daten abgeschlossen ohne ein Auftreten von Datenzerstörung.
-
Zweites Ausführungsbeispiel
-
In dem ersten Ausführungsbeispiel spezifiziert die CPU 200, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll. Das heißt, es ist notwendig, von der CPU 200 zu bestimmen, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll.
-
In einem zweiten Ausführungsbeispiel erfolgt eine Beschreibung eines Verfahrens, bei dem die DMA-Transfer-Steuereinrichtung 100 geeignet bestimmt, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll gemäß einem Überlappungszustand zwischen einem Transferquellbereich und einem Transferzielbereich.
-
Die DMA-Transfer-Steuereinrichtung 100 gemäß dem zweiten Ausführungsbeispiel unterscheidet sich von der DMA-Transfer-Steuereinrichtung 100 nur in einer Konfiguration der datenzerstörungsfreien Steuereinheit 160.
-
32 ist eine Darstellung, welche die Konfiguration der datenzerstörungsfreien Steuereinheit 160 gemäß dem zweiten Ausführungsbeispiel zeigt. Die datenzerstörungsfreie Steuereinheit 160 gemäß dem zweiten Ausführungsbeispiel beinhaltet kein Transferart-Einstellregister 161, welche in der datenzerstörungsfreien Steuereinheit 160 gemäß dem ersten Ausführungsbeispiel enthalten ist. Anstelle des Transferart-Einstellregisters 160 beinhaltet die datenzerstörungsfreie Steuereinheit 160 gemäß dem zweiten Ausführungsbeispiel ein Datenzerstörungsfreie-Funktion-AN/AUS-Einstellregister 191, ein Transferquelladress-Einstellregister 192, ein Transferzieladress-Einstellregister 193, ein Transfer-Größe-Einstellregister 194 und eine Transferart-Bestimmungseinheit 195.
-
In dem Datenzerstörungsfreie-Funktion-AN/AUS-Einstellregister 191 wird eingestellt, ob eine datenzerstörungsfreie Funktion AN (wirksam) oder AUS (unwirksam) sein soll.
-
Eine Start-Adresse für den Transferquellbereich wird in dem Transferquelladress-Einstellregister 192 eingestellt. Eine Start-Adresse für den Transferzielbereich wird in dem Transferzieladress-Einstellregister 193 eingestellt. Die Größe der Transferdaten wird in das Transfer-Größe-Einstellregister 194 eingestellt.
-
Wenn die datenzerstörungsfreie Funktion in das Datemzerstörungsfreie-Funktion-AN/AUS-Einstellregister 191 auf AN eingestellt wird, bestimmt die Transferart-Bestimmungseinheit 195 die Transferart wie folgt und teilt jeder Steuereinheit die Transferart mit:
- (A) wenn der Transferquellbereich und der Transferzielbereich nicht miteinander überlappen, bestimmt die Transferart-Bestimmungseinheit 195, dass die Transferart der inkrementelle Transfer sein soll.
- (B) Wenn die Transferquelle und der Transferzielbereich miteinander überlappen, bestimmt die Transferart-Bestimmungseinheit 195, die Transferart gemäß der folgenden Kriterien (a) bis (c):
(a) Wenn der Transferquellbereich und der Transferzielbereich vollständig der gleiche Bereich sind, bestimmt die Transferart-Bestimmungseinheit 195, dass die Transferart der inkrementelle Transfer sein soll.
(b) Wenn der Adresswert der Adresse (Start-Adresse für den Transferquellbereich) der in das Transferquelladress-Einstellregister 192 eingestellt ist, kleiner ist als der Adresswert der Adresse (Start-Adresse für den Transferzielbereich), der in das Transferzieladress-Einstellregister 193 eingestellt ist, bestimmt die Transferart-Bestimmungseinheit 195, dass die Transferart der dekrementelle Transfer sein soll.
(c) Wenn der Adresswert der Adresse (Start-Adresse für den Transferquellbereich), welcher in das Transferquelladress-Einstellregister 192 eingestellt ist, größer ist als der Adresswert der Adresse (Start-Adresse für den Transferzielbereich), welcher in das Transferzieladress-Einstellregister 193 eingestellt ist, bestimmt die Transferart-Bestimmungseinheit 195, dass die Transferart der inkrementelle Transfer sein soll.
-
Andererseits, wenn die datenzerstörungsfreie Funktion in das Datenzerstörungsfreie-Funktion-AN/AUS-Einstellregister 191 auf AUS eingestellt wird, teilt die Transferart-Bestimmungseinheit 195 jeder Steuereinheit ständig den inkrementellen Transfer mit.
-
33 ist ein Flussdiagramm, welches Arbeitsvorgänge der gesamten DMA-Transfer-Steuereinrichtung 100 gemäß dem zweiten Ausführungsbeispiel zeigt.
-
Schritt S71 ist der gleiche wie S11 in 9. In diesem Schritt wird in das Register auch eingestellt, ob die datenzerstörungsfreie Funktion auf AN oder AUS eingestellt werden soll.
-
In Schritt S72 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob die Einstellung in das Register (Datenzerstörungsfreie-Funktion-AN/AUS-Einstellregister 191) auf AN oder AUS eingestellt werden soll. Wenn bestimmt wird, dass die Einstellung auf AN eingestellt werden soll, veranlasst die DMA-Steuereinrichtung 100 den Vorgang zu Schritt S73 fortzuschreiten. Wenn bestimmt wird, dass die Einstellung auf AUS eingestellt werden soll, teilt die DMA-Transfer-Steuereinrichtung 100 jeder Steuereinheit mit, dass die Transferart der inkrementelle Transfer ist und veranlasst den Vorgang zu Schritt S75 fortzuschreiten.
-
In Schritt S73 bestimmt die datenzerstörungsfreie Steuereinheit 160, ob der inkrementelle Transfer oder der dekrementelle Transfer ausgeführt werden soll. Wenn bestimmt wird, dass der dekrementelle Transfer ausgeführt werden soll, teilt die DMA-Transfer-Steuereinrichtung 100 jeder Steuereinheit den dekrementellen Transfer mit und veranlasst den Vorgang zu Schritt S74 fortzuschreiten. Andererseits, wenn bestimmt wird, dass der inkrementelle Transfer ausgeführt werden soll, teilt die DMA-Transfer-Steuereinrichtung 100 jeder Steuereinheit den inkrementellen Transfer mit und veranlasst den Vorgang zu Schritt S75 fortzuschreiten.
-
In Schritt S74 führt die DMA-Transfer-Steuereinrichtung 100 den dekrementellen Transfer mit Bezug auf den Speicher 300 aus. Andererseits, in Schritt S75, führt die DMA-Transfer-Steuereinrichtung den inkrementellen Transfer mit Bezug auf den Speicher 300 aus.
-
Dann in Schritt S76, wird der Transfervorgang angehalten, wenn es einen DMA-Transferstoppeinfluss gibt, wie eine Fertigstellung des Transfers von Daten mit einer durch die DMA-Transfer-Steuereinrichtung 100 spezifizierten Datenlänge.
-
Wie oben beschrieben kann der Datentransfer gemäß der DMA-Transfer-Steuereinrichtung 100 in dem zweiten Ausführungsbeispiel ausgeführt werden, nachdem die DMA-Transfer-Steuereinrichtung die geeignete Transferart bestimmt hat, wobei die Transferart nicht durch die CPU 200 spezifiziert wird.
-
In der obigen Beschreibung wird jede Steuereinheit durch beispielsweise einen Schaltkreis oder ähnliches gebildet. Daher kann eine Einheit” als ein „~-Schaltkreis” interpretiert werden.
-
Bezugszeichenliste
-
- 10
- DMA-Transfersystem
- 100
- DMA-Transfer-Steuereinrichtung
- 110
- Transferquell-Lesesteuereinheit
- 120
- Puffer-Schreibsteuereinheit
- 130
- interner Puffer
- 140
- Puffer-Lesesteuereinheit
- 150
- Transferziel-Schreibsteuereinheit
- 160
- datenzerstörungsfreie Steuereinheit
- 161
- Transferart-Einstellregister
- 162
- Puffer-Schreibfertigstellungszeiger-Einstellregister
- 163
- Puffer-Lesezeiger-Einstellregister
- 164
- erste Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit
- 165
- zweite Puffer-Vorbereitungsfertigstellungs-Bestimmungseinheit
- 166
- Umlaufanzahl-Übereinstimmungs-Bestimmungseinheit
- 167
- Selektor
- 170
- Puffer-Schreibzyklus-Zähleinheit
- 171
- Umlauf-Erfassungseinheit
- 172
- Umlaufanzahl-Zähleinheit
- 180
- Puffer-Lesezyklus-Zähleinheit
- 181
- Umlauf-Erfassungseinheit
- 182
- Umlaufanzahl-Zähleinheit
- 191
- Datenzerstörungsfreie-Funktion-AN/AUS-Einstellregister
- 192
- Transferquelladress-Einstellregister
- 193
- Transferzieladress-Einstellregister
- 194
- Transfer-Größe-Einstellregister
- 195
- Transferart-Bestimmungseinheit
- 200
- CPU
- 300
- Speicher