DE102013017179B4 - DMA-Integritätsprüfungseinheit - Google Patents

DMA-Integritätsprüfungseinheit Download PDF

Info

Publication number
DE102013017179B4
DE102013017179B4 DE102013017179.2A DE102013017179A DE102013017179B4 DE 102013017179 B4 DE102013017179 B4 DE 102013017179B4 DE 102013017179 A DE102013017179 A DE 102013017179A DE 102013017179 B4 DE102013017179 B4 DE 102013017179B4
Authority
DE
Germany
Prior art keywords
data
error detection
transaction control
detection code
dma
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013017179.2A
Other languages
English (en)
Other versions
DE102013017179A1 (de
Inventor
Simon Brewerton
Simon Cottam
Frank Hellwig
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102013017179A1 publication Critical patent/DE102013017179A1/de
Application granted granted Critical
Publication of DE102013017179B4 publication Critical patent/DE102013017179B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Abstract

DMA-Controller (Direct Memory Access, direkter Speicherzugriff), der Folgendes aufweist: einen Satz von Transaktionssteuerungsregistern, die so konfiguriert sind, dass sie eine Folge von Transaktionssteuerungssätzen empfangen, die gemeinsam eine von dem DMA-Controller zu verarbeitende Datenübertragung beschreiben; einen Bus-Controller, der so konfiguriert ist, dass er den Speicher liest und in diesen schreibt, während der DMA-Controller einen ersten Transaktionssteuerungssatz ausführt, um einen Teil der in der Folge von Transaktionssteuerungssätzen beschriebenen Datenübertragung zu bewerkstelligen; und eine Integritätsprüfungseinheit, die so konfiguriert ist, dass sie auf der Grundlage von Daten, die tatsächlich von dem DMA-Controller während der Ausführung des ersten Transaktionssteuerungssatzes übertragen wurden, einen Ist-Fehlererkennungscode bestimmt, und die des Weiteren so konfiguriert ist, dass sie selektiv einen Fehler meldet, je nachdem, ob der Ist-Fehlererkennungscode derselbe ist wie ein in einem zweiten Transaktionssteuerungssatz von der Folge von Transaktionssteuerungssätzen enthaltener Soll-Fehlererkennungscode, wobei der Ist-Fehlererkennungscode einen Ist-Daten-Fehlererkennungscode umfaßt, der über die übertragenen Daten berechnet wird.

Description

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

Claims (4)

  1. DMA-Controller (Direct Memory Access, direkter Speicherzugriff), der Folgendes aufweist: einen Satz von Transaktionssteuerungsregistern, die so konfiguriert sind, dass sie eine Folge von Transaktionssteuerungssätzen empfangen, die gemeinsam eine von dem DMA-Controller zu verarbeitende Datenübertragung beschreiben; einen Bus-Controller, der so konfiguriert ist, dass er den Speicher liest und in diesen schreibt, während der DMA-Controller einen ersten Transaktionssteuerungssatz ausführt, um einen Teil der in der Folge von Transaktionssteuerungssätzen beschriebenen Datenübertragung zu bewerkstelligen; und eine Integritätsprüfungseinheit, die so konfiguriert ist, dass sie auf der Grundlage von Daten, die tatsächlich von dem DMA-Controller während der Ausführung des ersten Transaktionssteuerungssatzes übertragen wurden, einen Ist-Fehlererkennungscode bestimmt, und die des Weiteren so konfiguriert ist, dass sie selektiv einen Fehler meldet, je nachdem, ob der Ist-Fehlererkennungscode derselbe ist wie ein in einem zweiten Transaktionssteuerungssatz von der Folge von Transaktionssteuerungssätzen enthaltener Soll-Fehlererkennungscode, wobei der Ist-Fehlererkennungscode einen Ist-Daten-Fehlererkennungscode umfaßt, der über die übertragenen Daten berechnet wird.
  2. DMA-Controller nach Anspruch 1, wobei der erste Transaktionssteuerungssatz auf eine verknüpfte Liste zeigt, die in dem Speicher gespeichert ist.
  3. DMA-Controller nach Anspruch 2, wobei die verknüpfte Liste Folgendes aufweist: 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.
  4. DMA-Controller nach Anspruch 1, wobei es sich bei dem Ist-Fehlererkennungscode um einen Ist-Datenfehler-Erkennungscode handelt, der auf einem oder mehreren Datenwerten basiert, die während der Ausführung des ersten Transaktionssteuerungssatzes übertragen werden.
DE102013017179.2A 2012-10-15 2013-10-15 DMA-Integritätsprüfungseinheit Active DE102013017179B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/651,775 US8996926B2 (en) 2012-10-15 2012-10-15 DMA integrity checker
US13/651,775 2012-10-15

Publications (2)

Publication Number Publication Date
DE102013017179A1 DE102013017179A1 (de) 2014-04-17
DE102013017179B4 true DE102013017179B4 (de) 2015-06-11

Family

ID=50383322

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013017179.2A Active DE102013017179B4 (de) 2012-10-15 2013-10-15 DMA-Integritätsprüfungseinheit

Country Status (2)

Country Link
US (1) US8996926B2 (de)
DE (1) DE102013017179B4 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9501436B1 (en) * 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10191871B2 (en) 2017-06-20 2019-01-29 Infineon Technologies Ag Safe double buffering using DMA safe linked lists
US10833703B2 (en) * 2017-12-13 2020-11-10 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP7125602B2 (ja) * 2018-08-01 2022-08-25 富士通株式会社 データ処理装置および診断方法
CN111913898A (zh) * 2019-05-10 2020-11-10 恩智浦美国有限公司 使用端点的pcie根复合体消息中断产生方法
CN114385529A (zh) * 2020-10-16 2022-04-22 瑞昱半导体股份有限公司 直接记忆体存取控制器、使用其之电子装置以及操作其的方法
CN113342721B (zh) * 2021-07-06 2022-09-23 无锡众星微系统技术有限公司 存储控制器dma设计方法
CN116701264B (zh) * 2023-08-02 2024-02-23 广东匠芯创科技有限公司 Dma控制系统的控制方法及dma控制系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271536A1 (en) * 2008-04-24 2009-10-29 Atmel Corporation Descriptor integrity checking in a dma controller

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
US7003702B2 (en) * 2002-03-18 2006-02-21 Emc Corporation End-to-end checksumming for read operations
US6874054B2 (en) * 2002-12-19 2005-03-29 Emulex Design & Manufacturing Corporation Direct memory access controller system with message-based programming
US7389364B2 (en) * 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US20050289253A1 (en) * 2004-06-24 2005-12-29 Edirisooriya Samantha J Apparatus and method for a multi-function direct memory access core
US7496695B2 (en) * 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US20080147908A1 (en) * 2006-12-13 2008-06-19 Microchip Technology Incorporated Direct Memory Access Controller with Error Check
US8069279B2 (en) * 2007-03-05 2011-11-29 Apple Inc. Data flow control within and between DMA channels

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271536A1 (en) * 2008-04-24 2009-10-29 Atmel Corporation Descriptor integrity checking in a dma controller

Also Published As

Publication number Publication date
US8996926B2 (en) 2015-03-31
US20140108869A1 (en) 2014-04-17
DE102013017179A1 (de) 2014-04-17

Similar Documents

Publication Publication Date Title
DE102013017179B4 (de) DMA-Integritätsprüfungseinheit
DE102018112790A1 (de) Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen
DE2806024C2 (de)
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE102012214324A1 (de) Datenüberprüfung mithilfe eines Prüfsummen-Sidefile
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
EP1817658A2 (de) Speichersystem mit sektorbuffern
DE102016108733B4 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
DE102013113262B4 (de) Auslöser-Leitwegeinheit
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE112013001213T5 (de) Datentransfereinrichtung, Datentransferverfahren und Datentransferprogramm
DE112012002796T5 (de) Übertragen von in virtuellen Datenträgern organisierten deduplizierten Daten in einen Zielsatz von physischen Medien
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode
DE102018124836A1 (de) Neuartiger speicherbaustein
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE2336020B2 (de) Adressen-berechnungsschaltung fuer paritaetsfehler-korrekturprogramme
DE102006054169A1 (de) Verfahren für eine Zentralisierung einer Prozessabfolgeüberprüfung
DE102005054587A1 (de) Programmgesteuerte Einheit und Verfahren zum Betreiben derselbigen
DE102017119065A1 (de) Aktualisieren eines Speichers
EP1915686B1 (de) Verfahren und vorrichtung zur festlegung eines startzustandes bei einem rechnersystem mit wenigstens zwei ausführungseinheiten durch markieren von registern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative