-
DMA-Controller (Direct Memory Access, direkter Speicherzugriff) erlauben es bestimmten Hardware-Subsystemen innerhalb eines Computersystems, einigermaßen unabhängig von einer zentralen Mikroprozessoreinheit auf den Systemspeicher zuzugreifen. Zur Veranschaulichung einer allgemeinen DMA-Funktionalität sei das Beispiel von 1 in Betracht gezogen, welches ein digitales System 100 mit einem Mikroprozessor 102, einem Speicher 104, einem DMA-Controller 106 und einem Eingabe/Ausgabeblock 108 veranschaulicht, die alle mittels eines Systembusses 110 betriebsfähig gekoppelt sind. Ohne den DMA-Controller 106 ist der Mikroprozessor 102 typischerweise für die gesamte Dauer von Lese- oder Schreibvorgängen während der Übertragung vollständig beschäftigt, wenn es erforderlich ist, dass der Mikroprozessor 102 große Datenmengen in den Speicher 104 überträgt oder wenn es erforderlich ist, dass er Daten in den E/A-Block 108 oder in eine andere System-Peripherieeinheit schreibt oder daraus liest. Mit dem DMA-Controller 106 jedoch programmiert der Mikroprozessor 102 den DMA-Controller 106 so, dass er die Datenübertragung handhabt, und nach dem Programmieren des DMA-Controllers 106 kann sich der Mikroprozessor 102 anderen Aufgaben widmen. Nachdem er programmiert worden ist, überträgt der DMA-Controller 106 die Daten auf einigermaßen autonome Weise und sichert eine Unterbrechungsanforderung (IRQ) zu, um den Mikroprozessor 102 zu benachrichtigen, dass die Datenübertragung abgeschlossen ist. Auf diese Weise kann der Mikroprozessor 102 große Datenübertragungen an den DMA-Controller 106 auslagern und seine eigenen Ressourcen für besser geeignete Aufgaben einsetzen. Folglich können DMA-Controller zu jedem Zeitpunkt hilfreich sein, wenn ein Mikroprozessor damit kämpft, Daten effizient zu übertragen, wobei der Mikroprozessor nützliche Aufgaben verrichten muss, während er auf eine relativ langsame E/A-Datenübertragung wartet, oder in anderen geeigneten Fällen.
-
Während DMAs die Effizienz von Datenübertragungen für digitale Verarbeitungssysteme verbessern können, weisen DMAs auch das Potenzial auf, Unheil auf diesen Systemen anzurichten, wenn sich in dem Speicher Bits befinden, die beschädigt sind und auf die der DMA einwirkt.
-
In der Druckschrift
US 2009/0271536 A1 ist ein DMA-Controller beschrieben, bei dem vor der Ausführung eines Deskriptors eine Checksumme berechnet wird.
-
Die Checksumme wird von einer Checksummen-Einheit berechnet, und beruht auf in die Checksummen-Einheit geladenen Adressdaten.
-
Die Erfindung hat zur Aufgabe, einen neuartigen DMA-Controller bereitzustellen, bei dem insbesondere die Integrität der von dem DMA-Controller übertragenen Daten verbessert werden soll.
-
Die Erfindung erreicht dieses Ziel durch den Gegenstand des Anspruchs 1.
-
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
-
Vorteilhaft zeigt der erste Transaktionssteuerungssatz auf eine verknüpfte Liste, die in dem Speicher gespeichert ist.
-
Vorteilhaft weist die verknüpfte Liste Folgendes auf:
eine erste Verknüpfungsstruktur, die, beginnend bei einer ersten Basisadresse, in dem Speicher gespeichert ist, wobei die erste Verknüpfungsstruktur Folgendes aufweist: eine erste Quelladresse von ersten zu übertragenden Quelldaten, eine erste Zieladresse, an welche die ersten Quelldaten übertragen werden sollen, und eine Verknüpfungsadresse, die auf eine zweite Verknüpfungsstruktur zeigt; und
die zweite Verknüpfungsstruktur, die, beginnend bei einer zweiten Basisadresse, in dem Speicher gespeichert ist, wobei die zweite Verknüpfungsstruktur Folgendes aufweist: eine zweite Quelladresse von zweiten zu übertragenden Quelldaten und eine zweite Zieladresse, an welche die zweiten Quelldaten übertragen werden sollen.
-
Vorteilhaft handelt es sich bei dem Ist-Fehlererkennungscode um einen Ist-Datenfehler-Erkennungscode, der auf einem oder mehreren Datenwerten basiert, die während der Ausführung des ersten Transaktionssteuerungssatzes übertragen werden.
-
Vorteilhaft handelt es sich bei dem Ist-Fehlererkennungscode um einen Ist-Adressfehler-Erkennungscode, der auf wenigstens einem der folgenden Elemente basiert: einer in dem ersten Transaktionssteuerungssatz angegebenen Quelladresse, von welcher der DMA-Controller Daten liest, oder einer in dem ersten Transaktionssteuerungssatz angegebenen Zieladresse, in welche der DMA-Controller Daten geschrieben hat.
-
Vorteilhaft weist die Integritätsprüfungseinheit ferner Folgendes auf:
einen Mechanismus zum Bereitstellen eines Soll-Adressfehler-Erkennungscodes, wobei der Soll-Adressfehler-Erkennungscode auf einem Satz von Adressen basiert, von denen erwartet wird, dass der DMA-Controller während der Datenübertragung auf sie zugreift.
-
Vorteilhaft ist der DMA-Controller so konfiguriert, dass er bestimmt, ob der Soll-Adressfehler-Erkennungscode mit dem Ist-Adressfehler-Erkennungscode übereinstimmt.
-
Vorteilhaft ist die Integritätsprüfungseinheit des Weiteren so konfiguriert, dass sie den zweiten Transaktionssteuerungssatz selektiv verzögert oder anhält, je nachdem, ob für den ersten Transaktionssteuerungssatz der Soll-Adressfehler-Erkennungscode mit dem Fehlererkennungscode für die Adresse, auf die zugegriffen wurde, übereinstimmt.
-
Vorteilhaft weist die Integritätsprüfungseinheit Folgendes auf:
einen Mechanismus zum Bereitstellen eines Soll-Datenfehler-Erkennungscodes, wobei der Soll-Datenfehler-Erkennungscode auf einem Satz von Daten basiert, von denen erwartet wird, dass während der Datenübertragung auf sie zugegriffen wird; und
Logik zum Berechnen eines Fehlererkennungscodes für die Daten, auf die zugegriffen wurde, basierend auf den Daten in der Datenübertragung, die tatsächlich von dem DMA übertragen wurden.
-
Gemäß einem Aspekt wird ein System bereitgestellt, das Folgendes aufweist:
einen Speicher, der so konfiguriert ist, dass er eine Folge von Transaktionssteuerungssätzen speichert, die zu übertragende Daten beschreiben;
einen über eine Bus-Struktur mit dem Speicher gekoppelten Mikrocontroller, wobei der Mikrocontroller so konfiguriert ist, dass er auf die Folge von Transaktionssteuerungssätzen zugreift und die jeweiligen Soll-Fehlererkennungscodes für aufeinanderfolgende Transaktionssteuerungssätze in der Folge bestimmt; und
einen DMA-Controller (Direct Memory Access, direkter Speicherzugriff), um in Übereinstimmung mit der Folge von Transaktionssteuerungssätzen tatsächlich Daten über die Bus-Struktur in den Speicher zu übertragen, wobei der DMA-Controller eine Integritätsprüfungseinheit aufweist, um selektiv einen Fehler zu melden, je nachdem, ob die jeweiligen Soll-Fehlererkennungscodes dieselben sind wie von dem DMA bestimmte Ist-Fehlererkennungscodes, wenn der DMA die Daten tatsächlich in Übereinstimmung mit der Folge von Transaktionssteuerungssätzen überträgt.
-
Vorteilhaft ist der DMA-Controller so konfiguriert, dass er bei Abschluss einer erfolgreichen Datenübertragung, wie durch die Folge von Transaktionssteuerungssätzen angegeben, nachfolgende Anweisungen abwartet, die einer weiteren Datenübertragung entsprechen, ohne eine Unterbrechung zuzusichern.
-
Vorteilhaft ist der DMA-Controller so konfiguriert, dass er eine Unterbrechung zusichert, wenn der Fehler gemeldet wird.
-
Vorteilhaft weist die Folge von Transaktionssteuerungssätzen eine als verknüpfte Liste vorliegende Datenstruktur auf, die Folgendes aufweist:
eine erste Verknüpfung, die, beginnend bei einer ersten Basisadresse, in dem Speicher gespeichert ist, wobei die erste Verknüpfung eine erste Quelladresse von ersten zu übertragenden Quelldaten und eine erste Zieladresse, an welche die ersten Quelldaten übertragen werden sollen, aufweist; und
eine zweite Verknüpfung, die, beginnend bei einer zweiten Basisadresse, in dem Speicher gespeichert ist, wobei die zweite Verknüpfung eine zweite Quelladresse von zweiten zu übertragenden Quelldaten und eine zweite Zieladresse, an welche die zweiten Quelldaten übertragen werden sollen, aufweist.
-
Vorteilhaft ist die Integritätsprüfungseinheit so konfiguriert, dass sie auf der Grundlage eines ersten Zeigers in der ersten Verknüpfung einen ersten Fehlererkennungscode bestimmt, und so konfiguriert, dass sie auf der Grundlage eines zweiten Zeigers in der zweiten Verknüpfung einen zweiten Fehlererkennungscode bestimmt.
-
Vorteilhaft hängt der zweite Fehlererkennungscode von dem ersten Zeiger ab.
-
Vorteilhaft hält der DMA-Controller die Datenübertragung selektiv an, je nachdem, ob die Ist-Fehlererkennungscodes jeweils mit den Soll-Fehlererkennungscodes übereinstimmen.
-
Vorteilhaft setzt der DMA-Controller bei dem Abschluss der Datenübertragung ein Statusregister, ohne eine Unterbrechung zu melden, solange die Ist-Fehlererkennungscodes mit den Soll-Fehlererkennungscodes übereinstimmen.
-
Vorteilhaft meldet der DMA-Controller selektiv eine Unterbrechung, wenn die Ist-Fehlererkennungscodes sich von den Soll-Fehlererkennungscodes unterscheiden.
-
Gemäß einem Aspekt wird ein Verfahren bereitgestellt, das Folgendes umfasst:
Zugreifen auf einen ersten, in dem Speicher, beginnend bei einer ersten Basisadresse, gespeicherten Transaktionssteuerungssatz, wobei der erste Transaktionssteuerungssatz eine erste Quelladresse von ersten zu übertragenden Quelldaten und eine erste Zieladresse, an welche die ersten Quelldaten übertragen werden sollen, aufweist; und
Zugreifen auf einen zweiten, in dem Speicher, beginnend bei einer zweiten Basisadresse, die in dem Speicher nicht an den ersten Transaktionssteuerungssatz anschließt, gespeicherten Transaktionssteuerungssatz, wobei der zweite Transaktionssteuerungssatz eine zweite Quelladresse von zweiten zu übertragenden Quelldaten und eine zweite Zieladresse, an welche die zweiten Quelldaten übertragen werden sollen, aufweist;
Bestimmen eines ersten Ist-Fehlererkennungscodes auf der Grundlage des ersten Transaktionssteuerungssatzes oder der ersten Quelldaten; und
Bestimmen eines zweiten Ist-Fehlererkennungscodes auf der Grundlage des zweiten Transaktionssteuerungssatzes oder der zweiten Quelldaten, wobei die zweite Ist-Fehlererkennung von dem ersten Transaktionssteuerungssatz oder den ersten Quelldaten abhängt.
-
Vorteilhaft umfasst das Verfahren ferner Folgendes:
Selektives Melden einer Unterbrechung, wenn der erste oder der zweite Ist-Fehlererkennungscode sich von dem ersten bzw. dem zweiten Soll-Fehlererkennungscode unterscheidet.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Blockdiagramm eines digitalen Systems, das einen DMA-Controller (Direct Memory Access, direkter Speicherzugriff) verwendet.
-
2 zeigt ein Blockdiagramm eines digitalen Systems, das einen DMA-Controller verwendet, der eine Integritätsprüfungseinheit in Übereinstimmung mit einigen Ausführungsformen aufweist.
-
3A bis 3D veranschaulichen gemeinsam ein Beispiel, bei dem ein DMA-Controller in Übereinstimmung mit einigen Ausführungsformen eine Datenübertragung mit Integritätsprüfung durchführt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Beschreibung in dem vorliegenden Dokument erfolgt unter Bezugnahme auf die Zeichnungen, wobei sich gleiche Bezugszeichen im Allgemeinen durchgehend auf gleiche Elemente beziehen und wobei die verschiedenen Strukturen nicht notwendigerweise maßstabsgerecht gezeichnet sind. In der folgenden Beschreibung sind zum Zwecke der Erläuterung zahlreiche spezifische Details dargelegt, um das Verständnis zu erleichtern. Für einen Durchschnittsfachmann auf diesem Gebiet ist es jedoch offensichtlich, dass einer oder mehrere in dem vorliegenden Dokument beschriebene Aspekte auch mit einem geringeren Genauigkeitsgrad dieser spezifischen Details praktisch ausgeführt werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in dem Blockdiagramm gezeigt, um das Verständnis zu erleichtern.
-
Wie oben erwähnt, können bei Nicht-Vorhandensein angemessener Schutzmaßnahmen DMA-Controller in digitalen Systemen Unheil anrichten, wenn sie unbeabsichtigt auf beschädigte Daten einwirken, die in dem Speicher gespeichert sind. Um diesem Umstand abzuhelfen und außerdem die Menge an Ressourcen zu begrenzen, die der Mikroprozessor zum Verwalten des DMA verwenden muss, sieht die vorliegende Offenbarung verbesserte Techniken zur DMA-Integritätsprüfung vor. Bei diesen Techniken zur Integritätsprüfung kann ein DMA-Controller mit einer Folge von Transaktionssteuerungssätzen (die zum Beispiel auf Deskriptoren und/oder Verknüpfungen in dem Speicher zeigen) zusammen mit entsprechenden Soll-Fehlererkennungs-Codierungsinformationen programmiert werden. Wenn er Daten wie von einem ersten Transaktionssteuerungssatz angegeben überträgt, aktualisiert der DMA-Controller inkrementell einen Ist-Fehlererkennungscode mit jeder einzelnen Verschiebungstransaktion, die während der Ausführung des ersten Transaktionssteuerungssatzes (TCS) eingeschlossen ist. Wenn der DMA nach dem Abschluss der von dem ersten TCS angegebenen Verschiebungsfolge autonom fortfahren soll, wird ein zweiter TCS benötigt, und zu dem Zeitpunkt des Ladens des zweiten TCS wird der Ist-Fehlererkennungscode (der über vorhergehende Transaktionen angesammelt wurde) gegen einen Soll-Fehlererkennungscode, der in dem zweiten TCS enthalten ist, geprüft. Solange der Ist-Fehlererkennungscode derselbe ist wie der Soll-Fehlererkennungscode, kann der DMA-Controller mit der Verarbeitung der zweiten TCS-Übertragung fortfahren, ohne eine Unterbrechung zu melden und ohne Verwaltung von dem Mikroprozessor 202 zu benötigen. Folglich überprüfen die in dem vorliegenden Dokument offenbarten Techniken zur DMA-Integritätsprüfung, dass ein zuvor ausgeführter TCS (zum Beispiel der erste TCS) das DMA-System nach der Ausführung des vorherigen TCS in einem Soll-Zustand hinterlassen hat (um jegliche Fehler während der Ausführung zu erkennen). Durch das Bereitstellen dieser verbesserten Integritätsprüfung ist der DMA-Controller zuverlässiger und er kann vertrauensvoll autonomer betrieben werden, wodurch der Mikroprozessor für andere Aufgaben frei wird.
-
Vorteilhafterweise kann der Begriff „Fehlererkennungscode” (EDC, Error Detection Code), auf den in dem vorliegenden Dokument Bezug genommen wird, verwendet werden, um einen Datenfehler zu erkennen, der in Bits, Datenwörtern oder anderen Datengrößen vorliegt. Fehlererkennungscodes können unter anderem zyklische Redundanzprüfungen, Paritätsbits und Hash-Werte umfassen, sind aber nicht auf diese beschränkt. In einigen Fällen kann ein Fehlererkennungscode als Fehlerkorrekturcode implementiert sein, wobei die Informationen in dem Fehlerkorrekturcode nicht nur erkennen, ob ein Fehler vorliegt, sondern auch dazu beitragen, den Fehler zu korrigieren.
-
2 zeigt ein Beispiel eines digitalen Systems 200, das einen DMA-Controller in Übereinstimmung mit einigen Ausführungsformen verwendet. Das System 200 weist einen Mikroprozessor 202, einen Speicher 204, einen DMA-Controller 206 und ein Eingabe/Ausgabemodul 208 auf, die alle mittels eines Systembusses 210 betriebsfähig gekoppelt sind. Ein Unterbrechungs-Controller 212, der Unterbrechungen von mehreren jeweiligen Peripherieeinheiten empfängt und ihnen Prioritäten zuweist, kann ebenfalls in einigen Implementierungen vorhanden sein. Alternativ kann der DMA seine eigene Trigger-Einheit und seinen eigenen Arbiter aufweisen, anstatt eine Unterbrechung als Trigger zu nutzen.
-
Der DMA-Controller 206 weist ein Integritätsprüfungsmodul 214, einen Bus-Controller 216 und TCS-Register 218 (Transaction Control Set, Transaktionssteuerungssatz) auf. Wie aus diesem Dokument noch im Detail offensichtlich wird, kann eine DMA-Operation beginnen, wenn der Mikroprozessor 202 einen ersten Transaktionssteuerungssatz (TCS) in TCS-Register 218 lädt. Dieser erste TCS gibt eine Quelladresse, eine Zieladresse, eine Größe und Steuerinformationen für einen oder mehrere innerhalb des Speichers 204 zu übertragende Datenblöcke an.
-
Nachdem der TCS in die TCS-Register 218 geschrieben worden ist, führt der Bus-Controller 216 dann die mittels des ersten TCS angegebene Datenübertragung aus, zum Beispiel, indem er einen oder mehrere Quelldatenblöcke (zum Beispiel Quelldatenblock 232) an einen oder mehrere entsprechende Zieladressblöcke (zum Beispiel Zieldatenblock 236) überträgt. Während jedes Datenwort in den Speicher 204 übertragen wird, berechnet das Integritätsprüfungsmodul 214 einen Ist-Fehlererkennungscode. Dieser Ist-Fehlererkennungscode kann die Form eines Ist-Adressfehler-Erkennungscodes annehmen (gespeichert in dem Ist-Adress-EDC-Register 229), der auf den Speicheradressen basiert, auf die tatsächlich von dem DMA-Controller zugegriffen wird, während der erste Transaktionssteuerungssatz ausgeführt wird. Der Ist-Fehlererkennungscode kann auch die Form eines Ist-Datenfehler-Erkennungscodes annehmen (gespeichert in dem Ist-Daten-EDC-Register 231), der auf den Daten basiert, die tatsächlich von dem DMA-Controller 206 übertragen werden, während der erste Transaktionssteuerungssatz ausgeführt wird.
-
Nachdem Daten des ersten TCS übertragen worden sind, kann eine Logik 227 diese(n) in 229/231 gespeicherten Ist-Fehlererkennungscode(s) mit dem bzw. den entsprechenden in 228/230 gespeicherten Soll-Fehlererkennungscode(s) vergleichen. Der bzw. die in 228/230 gespeicherte(n) Soll-Fehlererkennungscode(s) wird bzw. werden häufig von dem DMA-Controller aus einem zweiten TCS gelesen. Zum Beispiel kann der zweite TCS in der Reihenfolge der Transaktionssteuerungssätze auf den ersten TCS folgen. Wenn der bzw. die in 229/231 gespeicherte(n) Ist-Fehlererkennungscode(s) von dem bzw. den Soll-Fehlererkennungscode(s) in 228/230 abweicht bzw. abweichen, hält der DMA-Controller 206 die Datenübertragungen an und meldet einen Fehler (zum Beispiel eine Unterbrechung (IRQ)), um den Schaden an den in dem Speicher 204 gespeicherten Daten zu begrenzen. Wenn kein Fehler erkannt wird, setzt der DMA den Vorgang mit einer weiteren Datenübertragung fort, die mittels des nächsten TCS in der Reihenfolge angegeben wird, ohne eine Unterbrechung zu melden, sodass der Mikroprozessor 202 seinen Betrieb mit anderen Aufgaben ununterbrochen fortsetzen kann. Somit trägt der DMA-Controller durch Vergleichen des Ist- und des Soll-Fehlercodes und durch Einrichten angemessener Schutzmaßnahmen dazu bei sicherzustellen, dass Daten korrekt verschoben wurden.
-
Vorteilhafterweise können in 231 gespeicherte Ist-Datenfehler-Erkennungscodes unabhängig von den in 229 gespeicherten Ist-Quell-/Zieladress-Fehlererkennungscodes berechnet werden. Somit können einige Implementierungen nur Datenfehler-Erkennungscodes nutzen, während andere Implementierungen nur Fehlererkennungscode nutzen können, die über Quell- und Zieladressen berechnet werden. Noch andere Implementierungen können sowohl Datenfehler-Erkennungscodes nutzen als auch Fehlererkennungscodes, die über Quell- und Zieladressen berechnet werden.
-
Bei einigen Anwendungen, wie zum Beispiel in 2 gezeigt, sind die Quelldaten über eine Anzahl von nicht aufeinanderfolgenden Blöcken über den physischen Speicher 204 „verstreut”. Zum Beispiel beginnt in 2 ein erster Datenblock 232, der eine erste Datengröße aufweist, an einer ersten Basisadresse (Quelladr. 1), wobei aufeinanderfolgende Bytes des ersten Datenblocks in aufeinanderfolgend inkrementierten Adressen ausgehend von der ersten Basisadresse gespeichert werden, bis alle Daten bis zu der ersten Datengröße gespeichert sind. Ein zweiter Datenblock 234, der eine zweite Datengröße aufweist, kann, beginnend an einer zweiten Basisadresse (Quelladr. 2), die im Hinblick auf die Adressen des ersten Datenblocks 232 nicht fortlaufend ist, in dem physischen Speicher 204 gespeichert werden. Eine beliebige Anzahl weiterer Datenblöcke kann ebenfalls auf diese Weise gespeichert werden. Zieladressen, zu denen die Quelldatenblöcke verschoben bzw. kopiert werden sollen, können ebenfalls auf ähnliche Weise über den physischen Speicher 204 verstreut sein. Zum Beispiel handelt es sich in 2 bei dem ersten Zielblock 236 um denjenigen, wohin der erste Quelldatenblock 232 verschoben werden soll, und bei dem zweiten Zielblock 238 um denjenigen, wohin der zweite Quelldatenblock 234 verschoben werden soll.
-
Unter Bezugnahme auf 2 besteht auch eine Möglichkeit, den DMA-Controller so zu konfigurieren, dass er Adressen auslässt oder sogar die Adressen in einem Quell- und/oder Zielblock (232, 236) nicht ändert. Zum Beispiel kann der DMA so eingestellt werden, dass er zu einem Zeitpunkt ein einzelnes Byte aus einer konstanten Quelladresse (wie beispielsweise einem seriellen Kanalempfangsregister) liest und die Daten auf ein 8-Bit-, 16-Bit-, 32-Bit- oder 64-Bit-Inkrement der Zieladresse in einen Zielpuffer schreibt. Auf diese Weise kann der DMA Daten in Puffern erweitern, zusammenziehen und/oder verschachteln, während er sie verschiebt, um sie für eine weitere Verarbeitung besser geeignet zu machen (beispielsweise für eine FFT-Filterung, wofür spezifische Datenausrichtungen benötigt werden).
-
Ein Beispiel für die Funktionalität des DMA-Controllers wird nun unter Bezugnahme auf 3A bis 3D genauer beschrieben. Wie bei den zuvor beschriebenen Systemen weist das System 300 in 3A bis 3D einen Mikroprozessor 302, einen Speicher 304 und einen DMA-Controller 306 auf, die mittels eines Systembusses betriebsfähig gekoppelt sind.
-
3A stellt ein veranschaulichendes Beispiel bereit, bei dem der Prozessor 302 3 Kilobyte Quelldaten, die über drei nicht aufeinanderfolgende Speicherblöcke (308, 310, 312) verstreut sind, an drei nicht aufeinanderfolgende Zielblöcke (314, 316, 318) übertragen möchte. Obwohl bei diesem Beispiel drei Blöcke mit nicht aufeinanderfolgenden Quelldaten, von denen jeder eine Größe von einem Kilobyte aufweist, an drei gleich große Zieladressen übertragen werden, versteht es sich, dass jede beliebige Anzahl von Datenblöcken und Datenblöcke jeder beliebigen Größe verwendet werden können. Die Blöcke können dieselbe Größe aufweisen, oder sie können unterschiedliche Größen aufweisen. Des Weiteren können die Quelldaten und/oder die Zieldaten bei einigen Implementierungen in einem fortlaufenden Block angeordnet sein, anstatt wie veranschaulicht nicht aufeinander zu folgen.
-
Um diese gewünschte Datenübertragung zu bewirken, baut der Mikroprozessor 302 eine verknüpfte Liste von Verknüpfungsstrukturen (320, 322, 324) in dem Speicher 304 auf. Die Verknüpfungsstrukturen 320, 322, 324 weisen DMA-Steuerinformationen und Zeiger auf die jeweiligen, über den Speicher verteilten Datenblöcke auf. Zum Beispiel weist die Verknüpfungsstruktur 1 (320) ein Quelladressenfeld 326 auf, das auf eine Basisadresse des ersten Quelldatenblocks 308 zeigt, und sie weist auch ein Zieladressenfeld 328 auf, das auf die Basisadresse des ersten Zielblocks 314 zeigt. Die Verknüpfungsstruktur 1 320 weist außerdem ein Steuerfeld 330 auf, welches die Größe des Quelldatenblocks 308 angibt. Das Steuerfeld 330 gibt außerdem an, dass es sich bei der Verknüpfungsstruktur 1 um eine Verknüpfung handelt, die von einer anderen Verknüpfung gefolgt wird (hier Verknüpfungsstruktur 2 322), während das Verknüpfungsfeld 332 eine Basisadresse/einen Zeiger für diese andere Verknüpfung (hier Basisadresse der Verknüpfungsstruktur 2 322) bereitstellt. Da die verknüpften Strukturen in diesem Beispiel als Transaktionssteuerungssätze fungieren, können die Verknüpfungsstrukturen, wenn sie als Kollektiv betrachtet werden, in einer fortlaufenden DMA-Operation Quelldaten „sammeln”, die über nicht aufeinanderfolgende Speicheradressen verstreut sind, und/oder Daten über nicht aufeinanderfolgende Zieladressen „verstreuen”.
-
Unter Bezugnahme auf 3B schreibt der Prozessor 302 den ersten Transaktionssteuerungssatz 320 in die TCS-Register 218 in dem DMA-Controller 306 (siehe Linie 334), um die gewünschte Datenübertragung zu bewirken. Genauer gesagt schreibt der Prozessor 302 eine Basisadresse des ersten Datenblocks 308 in das Quellregister 220, er schreibt eine Zieladresse einer Basisadresse des ersten Zielblocks 314 in das Zielregister 222 und er schreibt eine Größe des ersten Datenblocks 308 in das Zählregister 224. Der Mikroprozessor schreibt außerdem ein oder mehrere Steuer-Bit(s) in das Steuerungsregister 226, um anzugeben, ob der TCS1 320 eine Verknüpfung darstellt, die von einem anderen Transaktionssteuerungssatz gefolgt wird.
-
Der DMA-Controller, der durch seinen Bus-Controller 216 agiert, verschiebt oder kopiert dann den ersten Quelldatenblock 308 in den ersten Zielblock 314 (siehe Linie 336). Typischerweise verschiebt der DMA die Daten wortweise, wobei sein Zählwert 224 um ein Wort inkrementiert wird, und sein Quell- und sein Zieladressenregister 220, 222 jeweils um ein Wort inkrementiert wird, wenn die einzelnen Wörter übertragen werden, bis die angegebene Datengröße übertragen worden ist. Der DMA kann einen Ist-Adressfehler-Erkennungscode für die Basisquellen- und die Basiszieladresse berechnen und speichert diesen Ist-Adressen-EDC in dem Ist-Adressen-EDC-Register 229. Der DMA kann außerdem einen Ist-Daten-EDC über die übertragenen Daten berechnen, zum Beispiel durch wortweises Aktualisieren des Ist-Daten-EDC 231 oder durch Berechnen des EDC-Codes für größere Datenblöcke.
-
In 3C greift sich der DMA die zweite TCS2-Verknüpfung 322, deren Basisadresse in dem Verknüpfungsfeld 332 von TSC1 320 enthalten war, ohne dass hierzu Führung durch den Mikroprozessor 302 erforderlich ist. Da die zweite Verknüpfungsstruktur 322 Soll-Fehlerprüfcodes aufweist, welche die erste Verknüpfungsstruktur 320 betreffen, vergleicht der DMA beim Greifen der zweiten Verknüpfungsstruktur 322 die Soll-Fehlerprüfcodes mit den in 229/231 gespeicherten Ist-Fehlerprüfcodes (die auf dem Verarbeiten der ersten Verknüpfungsstruktur 320 basierten). Wenn der DMA einen Fehler in den EDCs erkennt, kann er eine Unterbrechung melden, andernfalls kann er die Datenübertragung fortsetzen. Unter der Annahme, dass keine Fehler erkannt werden, decodiert die Logik 227 in dem DMA-Controller die verbleibenden Felder in der TCS2-Verknüpfung 322 und überträgt auf der Grundlage dieser Felder 1 KB Daten von dem zweiten Quelldatenblock 310 zu dem zweiten Zielblock 316 (siehe Linie 338). Die Logik 227 aktualisiert dann den Ist-Adress-EDC unter Verwendung der Quell-/Zieladresse in TCS2 322 und/oder über die übertragenen Daten für TCS2 322 und aktualisiert 229/231. Der Ist-EDC ist eine „laufende Summe”, wobei der Ist-EDC aus TCS1 in 3B berechnet wird, und somit hängen die Ist-EDC-Werte in 229/231 in 3C von den in 3B übertragenen Adressen und/oder Daten ab.
-
In 3D greift sich der DMA die dritte TCS3-Verknüpfung 324, deren Basisadresse in dem Verknüpfungsfeld 340 von TSC2 322 enthalten war, ohne dass hierzu Führung durch den Mikroprozessor 302 erforderlich ist. Da die dritte Verknüpfungsstruktur 324 Soll-Fehlerprüfcodes aufweist, welche die zweite Verknüpfungsstruktur 322 betreffen, vergleicht der DMA beim Greifen der dritten Verknüpfungsstruktur 324 die Soll-Fehlerprüfcodes mit den in 229/231 gespeicherten Ist-Fehlerprüfcodes (die auf dem Verarbeiten der zweiten Verknüpfungsstruktur 322 basierten). Die Logik 227 decodiert die Felder in der TCS3-Verknüpfung 324 und überträgt auf der Grundlage dieser Felder 1 KB Daten von Quelle3 312 zu Ziel3 318 (siehe Linie 342). Die Logik 227 berechnet dann den Ist-EDC für die Quell-/Zieladresse in TCS3 322 und/oder über die übertragenen Daten für TCS3. Dieser EDC ist eine „laufende Summe” mit dem aus TCS2 in 3C berechneten EDC (und eigentlich dem in 3B berechneten EDC von TCS1). Das Steuerfeld 344 in TCS3 gibt an, dass TCS3 324 das Ende der Kette von Verknüpfungen ist, und so kann der DMA seine Statusregister entsprechend so einstellen, dass diese von dem Mikroprozessor zu einem passenden Zeitpunkt abgefragt werden. Wenn Fehler erkannt werden, kann der DMA eine Unterbrechung melden. Während eine Vielzahl von verschiedenen Ausführungsformen unter Bezugnahme auf die Figuren beschrieben wurden, ist die vorliegende Erfindung nicht auf diese Ausführungsformen beschränkt, da eine Vielzahl von Änderungen daran vorgenommen werden können, ohne dass von dem Schutzumfang der vorliegenden Erfindung abgewichen wird. Einige Beispiele für solche Änderungen werden nachfolgend beschrieben. Bei einigen Implementierungen sind die Datenblöcke aufgrund der Zuordnung zwischen virtuellen Speicheradressen, die von Anwendungen verwendet werden, und physischen Speicheradressen, die von dem Betriebssystem verwendet werden, über den physischen Speicher verstreut. Alternativ können die Datenblöcke über statische, vorbestimmte Positionen in dem Speicher verstreut sein (zum Beispiel in Flash-Speicher oder ROM, das zum Speichern von Boot-Code verwendet wird). Obwohl des Weiteren einige oben beschriebene Ausführungsformen auf verknüpften Listen basieren, ist die Beschreibung in keiner Weise auf verknüpfte Listen beschränkt. Andere stapelbasierte oder kreisförmige Anordnungen von TCS-Deskriptoren in dem Speicher sind ebenfalls möglich.
-
Somit versteht es sich, dass einige Ausführungsformen einen DMA-Controller (Direct Memory Access, direkter Speicherzugriff) betreffen. Der DMA-Controller weist einen Satz von Transaktionssteuerungsregistern auf, um einen Transaktionssteuerungssatz zu empfangen, der eine von dem DMA als verknüpfte Liste zu verarbeitende Datenübertragung beschreibt. Ein Bus-Controller liest und schreibt in den Speicher, um die in dem Transaktionssteuerungssatz beschriebene Datenübertragung zu bewerkstelligen. Eine Integritätsprüfungseinheit bestimmt auf der Grundlage von Informationen in aufeinanderfolgenden Verknüpfungen der verknüpften Liste einen Ist-Fehlererkennungscode und meldet selektiv einen Fehler, je nachdem, ob der Ist-Fehlererkennungscode derselbe ist wie ein Soll-Fehlererkennungscode.
-
Eine weitere Ausführungsformen betrifft ein System. Das System weist einen Speicher auf, um eine als verknüpfte Liste vorliegende Datenstruktur zu speichern, die zu übertragende Daten beschreibt. Ein Mikrocontroller ist über eine Bus-Struktur mit dem Speicher gekoppelt und so konfiguriert, dass er auf die als verknüpfte Liste vorliegende Datenstruktur zugreift und die jeweiligen Soll-Fehlererkennungscodes für aufeinanderfolgende Verknüpfungen in der als verknüpfte Liste vorliegende Datenstruktur bestimmt. Ein DMA-Controller (Direct Memory Access, direkter Speicherzugriff) überträgt in Übereinstimmung mit der als verknüpfte Liste vorliegenden Datenstruktur tatsächlich Daten über die Bus-Struktur in den Speicher. Der DMA-Controller weist eine Integritätsprüfungseinheit auf, um selektiv einen Fehler zu melden, je nachdem, ob die jeweiligen Soll-Fehlererkennungscodes dieselben sind wie von dem DMA bestimmte Ist-Fehlererkennungscodes, wenn der DMA die Daten tatsächlich in Übereinstimmung mit der als verknüpfte Liste vorliegenden Datenstruktur überträgt.
-
Eine noch weitere Ausführungsform betrifft ein Verfahren. Bei diesem Verfahren wird ein erster Transaktionssteuerungssatz, beginnend an einer ersten Basisadresse, in dem Speicher gespeichert. Der erste Transaktionssteuerungssatz weist eine erste Quelladresse von ersten zu übertragenden Quelldaten und eine erste Zieladresse, an welche die ersten Quelldaten übertragen werden sollen, auf. Es wird auch auf einen zweiten Transaktionssteuerungssatz zugegriffen, der in dem Speicher, beginnend an einer zweiten Basisadresse, die in dem Speicher nicht fortlaufend an den ersten Transaktionssteuerungssatz anschließt, gespeichert ist. Der zweite Transaktionssteuerungssatz weist eine zweite Quelladresse von zweiten zu übertragenden Quelldaten und eine zweite Zieladresse, an welche die zweiten Quelldaten übertragen werden sollen, auf. Ein erster Fehlererkennungscode wird auf der Grundlage des ersten Transaktionssteuerungssatzes oder der ersten Quelldaten bestimmt. Ein zweiter Fehlererkennungscode wird auf der Grundlage des zweiten Transaktionssteuerungssatzes oder der zweiten Quelldaten bestimmt. Die zweite Fehlererkennung hängt von dem ersten Transaktionssteuerungssatz oder den ersten Quelldaten ab.
-
Es versteht sich, dass in der Beschreibung von in dem vorliegenden Dokument enthaltenen Ausführungsformen jegliche direkte Verbindung oder Kopplung zwischen Funktionsblöcken, Vorrichtungen, Komponenten, Schaltungselementen oder anderen physischen oder funktionalen Einheiten, die in den Zeichnungen gezeigt oder in dem vorliegenden Dokument beschrieben sind, auch durch eine indirekte Verbindung oder Kopplung, das heißt eine Verbindung oder Kopplung, die eines oder mehrere dazwischen liegende Elemente umfasst, implementiert sein kann. Des Weiteren versteht es sich, dass in den Zeichnungen gezeigte Funktionsblöcke oder Einheiten bei einigen Ausführungsformen als getrennte Schaltungen implementiert sein können, aber bei anderen Ausführungsformen auch vollständig oder teilweise in einer gemeinsamen Schaltung oder in einer gemeinsamen integrierten Schaltung implementiert sein können, oder in einigen Fällen auch gemeinsam durch entsprechendes Programmieren eines Prozessors implementiert sein können.
-
Es sei angemerkt, dass die Zeichnungen dazu vorgesehen sind, eine Veranschaulichung einiger Aspekte und Merkmale von Ausführungsformen der vorliegenden Erfindung zu liefern, und nur als schematisch anzusehen sind. Insbesondere sind die in den Zeichnungen gezeigten Elemente nicht notwendigerweise maßstäblich zueinander dargestellt, und die Platzierung von verschiedenen Elementen in den Zeichnungen wurde gewählt, um ein klares Verständnis der jeweiligen Ausführungsform zu liefern, und sie ist nicht so auszulegen, als sei sie notwendigerweise eine Darstellung der tatsächlichen relativen Position der verschiedenen gezeigten Komponenten und Elemente zueinander. Die in dem vorliegenden Dokument beschriebenen Merkmale der verschiedenen Ausführungsformen können miteinander kombiniert werden. Andererseits soll das Beschreiben einer Ausführungsform mit einer Vielzahl von Merkmalen nicht so ausgelegt werden, als ob es angeben würde, dass alle diese Merkmale notwendig sind, um die vorliegende Erfindung praktisch auszuführen, da andere Ausführungsformen weniger Merkmale und/oder alternative Merkmale aufweisen können.