DE602005002691T2 - Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür. - Google Patents

Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür. Download PDF

Info

Publication number
DE602005002691T2
DE602005002691T2 DE602005002691T DE602005002691T DE602005002691T2 DE 602005002691 T2 DE602005002691 T2 DE 602005002691T2 DE 602005002691 T DE602005002691 T DE 602005002691T DE 602005002691 T DE602005002691 T DE 602005002691T DE 602005002691 T2 DE602005002691 T2 DE 602005002691T2
Authority
DE
Germany
Prior art keywords
dma controller
address
register
signal
bus
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
DE602005002691T
Other languages
English (en)
Other versions
DE602005002691D1 (de
Inventor
Jean Nicolai
Albert Martinez
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of DE602005002691D1 publication Critical patent/DE602005002691D1/de
Application granted granted Critical
Publication of DE602005002691T2 publication Critical patent/DE602005002691T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft auf Silizium integrierte Systeme oder SoCs (Englisch „System On Chip") mit mindestens einer Verarbeitungszentraleinheit oder CPU („Central Processing Unit"), mit der Programme ausgeführt werden können, einem Controller für den direkten Speicherzugriff oder DMA-Controller („Direct Memory Access"), einem Speicher und einer Speicherverwaltungseinheit oder MMU („Memory Management Unit").
  • Derartige SoCs kommen beispielsweise in elektronischen Geräten wie Allzweck-Computern, Decodern oder „Set-Top-Boxen", persönlichen digitalen Assistenten oder PDA („Personal Digital Assistant"), Mobiltelefonen, usw. zum Einsatz.
  • Insbesondere betrifft die vorliegende Erfindung die Programmierung des DMA-Controllers eines derartigen SoCs.
  • Im physikalischen Speicher ist jedem Anwendungsprogramm oder Benutzerprogramm Speicherraum unterschiedlicher Größe dynamisch zugeordnet. Dabei hat jedes Programm nur Zugriff zu einem Teil der Seiten des physikalischen Speichers. Diese Seiten bilden einen (ggf. nicht kontinuierlichen) Speicherraum, der am Speicherbus von physikalischen Adressen adressiert wird, jedoch dem Benutzerprogramm über einen (im Allgemeinen kontinuierlichen) benutzerprogrammspezifischen Adressraum, virtueller Adressraum genannt, bekannt ist. Die Verknüpfung zwischen den virtuellen Adressen im Adressraum und den physikalischen Speicheradressen liegt als Übersetzungstabelle, Seitentabelle genannt, vor, die vom Betriebssystem verwaltet wird und im Hauptspeicher gespeichert ist. Die letzten von der Tabellenladeeinheit der MMU errechneten Adressübersetzungen sind in einem spezifischen Pufferspeicher, einem so genannten TLB („Translation Lookaside Buffer"), gepuffert.
  • Bekannterweise umfasst jeder Eintrag („Entry" in englisch) des TLB, beispielsweise jede einer Übersetzung im TLB entsprechende Zeile, einen Adressraumidentifikator (oder ASID, englisch für „Adress Space IDentifier"), um die identischen virtuellen Adressen in den einzelnen Adressräumen zu unterscheiden. Jeder ASID ist jeweils eindeutig einem bestimmten Adressraum des Systems zugeordnet.
  • Der DMA-Controller führt zwischen dem SoC-internen Speicher und Instanzen wie peripheren Speichervorrichtungen (beispielsweise Platten) aufgrund von Informationen, die ihm bereitgestellt werden, Datenübertragungen durch. Diese Informationen umfassen die physikalische Quelladresse der Übertragung, die physikalische Zieladresse der Übertragung und schließlich die Größe des zu übertragenden Speicherbereichs.
  • Aus dem Stand der Technik ist ein Programm bekannt, das für eine auf dem SoC im Benutzermodus (auch Anwendungsmodus oder nicht-privilegierter Modus genannt) ausgeführte DMA-Übertragung eine Programmierung des DMA-Controllers erfordert und das dem Betriebssystem oder OS („Operating System") eine virtuelle Adresse liefert, bei der es sich um die virtuelle Adresse der Quelle der DMA-Übertragung oder des Ziels der DMA-Übertragung handelt. Das im privilegierten Modus (auch Supervisor-Modus oder Kernmodus genannt) laufende OS übersetzt dann die gelieferte virtuelle Adresse in eine entsprechende physikalische Adresse. Dafür müssen nacheinander die erhaltene physikalische Quelladresse der Übertragung im Quellregister, die Zieladresse im Zielregister und schließlich die Größe im Größenregister aus der virtuellen Adresse der Register heraus gespeichert werden. Das OS überwacht dann die Übertragung, die vom DMA-Controller auf der Basis der in seinen Registern abgelegten Informationen ausführt, und verständigt das Programm, das die Abfrage ausgelöst hat, über das Ergebnis der Übertragung.
  • Die verwendeten Speicherbefehle sind im Allgemeinen folgende: „STORE pa-src@dma_src_reg_adr", „STORE pa_dest@dma_dest_reg_adr" und „STORE size@dma_size_reg_adr", wobei „pa_src" der physikalischen Quelladresse, „pa_dest" der physikalischen Zieladresse, „size" der Größe des übertragenen Speicherbereichs, „dma_src_reg_adr", „dma_dest_reg_adr" und „dma_size_reg_adr" jeweils der virtuellen Adresse des Quellregisters, des Zielregisters und Größenregisters entsprechen. In natürlicher Sprache bedeutet der erste Befehl „Speichern der Daten der physikalischen Quelladresse „pa_src" im Quelladressregister des DMA-Controllers, dessen virtuelle Adresse „dma_src_reg_adr" lautet". Dieser Befehl liefert demnach ein Argument für die virtuelle Adresse „dma_src_reg_adr" und ein Datenargument „pa_src", das an der als Adressargument gelieferten Adresse gespeichert wird.
  • Bezieht man sich auf 1, in der ein SoC wie eingangs erwähnt dargestellt ist, läuft eine Programmierung des DMA-Controllers aus dem Stand der Technik wie folgt ab: die virtuelle Adresse „dma_src_reg_adr" wird von der CPU für die MMU an den Bus virtueller Adressen VA gelegt. Die MMU übersetzt sie in eine physikalische Adresse, überprüft die Zugriffsrechte zu dieser physikalischen Adresse und legt sie an den Bus der physikalischen Adressen PA, von dem sie über den allgemeinen Bus A, der mit einer Anordnung von Instanzen wie beispielsweise Platten-Controllern, dem physikalischen Speicher, usw. verbunden ist, insbesondere dem DMA-Controller zur Verfügung gestellt wird.
  • Parallel dazu wird die physikalische Quelladresse „pa_src" von der CPU auf den Datenbus DAT gelegt, von wo aus sie auf dem allgemeinen Datenbus D, der auch an alle Instanzen angeschlossen ist, zur Verfügung gestellt wird.
  • Die Art und Weise wie die Quelladresse auf den allgemeinen Datenbus D und die Adresse des Quellregisters auf den allgemeinen Adressbus A gelegt wird, ist von dem für die Verwaltung der Busse gewählten Protokoll abhängig. Je nach Busverwaltungsprotokoll wird die physikalische Adresse des Quellregisters beispielsweise auf den allgemeinen Adressbus A und quasi zur gleichen Zeit wie die physikalische Quelladresse „pa_src" auf den allgemeinen Datenbus D gelegt, oder die Adresse des Quellregisters wird einen Taktzyklus bevor die physikalische Quelladresse auf den allgemeinen Datenbus D gelegt wird auf den allgemeinen Adressbus A gelegt (bei einem Protokoll, bei dem die Adressen einen Taktzyklus vor den entsprechenden Daten gesetzt werden) oder die Adressen werden einerseits mit der steigenden Flanke und andererseits mit der fallenden Flanke, usw. gelegt.
  • Die Übersetzung wird von der MMU mittels einer bestimmten Übersetzungstabelle vorgenommen.
  • In letzter Zeit wurden mehrere Versuche unternommen, um den DMA-Controller direkt mit einem im Benutzermode laufenden Programm und nicht mehr mit der OS zu programmieren. Dies war insbesondere aufgrund des hohen Zeitaufwandes einer DMA-Controller-Programmierung im Verhältnis zur Dauer der eigentlichen Übertragung der Daten durch den DMA-Controller erforderlich.
  • Dabei beruht eine der Schwierigkeiten darauf, dass die Register des DMA-Controllers mit physikalischen Adressen programmiert werden müssen, während die Programme im Benutzermodus keinen Zugriff dazu haben und es auch nicht wünschenswert ist, insbesondere aus Sicherheitsgründen, dass sie Zugriff dazu haben.
  • Lösungen diesbezüglich werden in den Dokumenten „User-Level DMA without Operating System Kernel Modification", von Evangelos P. Markatos und Manolis G. H. Katevenis, Institute of Computer Science, Science an Technology Park of Crete, 1997 IEEE, „Protected User-Level DMA for the Shrimp Network Interface", von M. A. Blumrich et al., Proc of the 2nd International Symposium an High Performance Computer Architecture, Seite 154–165, February 1996 und "Integration of Message Passing and Shared Memory in the Stanford Flash Multi-Processor", von J. Neinlein et al., Proc. of the 6th International Conference an Architectural Support for Programming Languages and Operating Systems, Seite 38–50, 1994 vorgeschlagen.
  • Dabei führt das Benutzerprogramm einen im Befehlssatz der CPU bereits vorhandenen Allzweck-Speicherbefehl wie den bereits erwähnten „STORE"-Befehl aus, setzt jedoch als Adressargument die virtuelle Quell- bzw. Zieladresse, die es im DMA-Controller programmieren möchte, und nicht die Adresse des Registers des zu programmierenden DMA-Controllers. Dadurch wird die MMU dazu veranlasst, die gelieferte virtuelle Adresse, die eine Quell- bzw. eine Zieladresse ist, in eine entsprechende physikalische Adresse zu übersetzen. Mit dieser Technik kann zudem die MMU sicherstellen, dass das Benutzerprogramm auch wirklich ein Zugriffsrecht zu dieser Adresse hat.
  • Dabei waren zwei weitere Schwierigkeiten zu berücksichtigten. Erstens muss veranlasst werden, dass der DMA-Controller diese auf dem Adressenbus 1 befindliche physikalische Adresse übernimmt und als Daten in sein Quell- bzw. Zielregister schreibt. Außerdem muss es möglich sein, dass der Speicherbereich, dem die auf den entsprechenden Bus gestellte physikalische Adresse entspricht, den „STORE"-Befehl ignoriert, da er nicht für ihn bestimmt ist.
  • Das oben erwähnte Dokument bietet eine Lösung dieser Probleme an. Diese Lösung besteht darin, das höchstwertige Bit (MSB) der Quell- bzw. Zieladresse einer DMA-Übertragung auf 1 zu setzen, bevor sie der MMU zugeführt wird. Mit Hilfe seiner entsprechenden Zustandsmaschine erfasst der DMA-Controller als in einem seiner Register zu speichernde Daten somit jedes Wort, das ein MSB auf 1 enthält und auf dem Adressbus A vorhanden ist.
  • Bei dieser Lösung erfolgt demnach ein implizites, auf dem „STORE"-Speicherbefehl und dem Präfix 1 basierendes Adressieren (oder „Shadow Addressing").
  • Der Nachteil bei dieser Technik liegt darin, dass das System keinen Speicherbereich bzw. Peripheriegerät aufweisen darf, dessen Adresse mit 1 beginnt, wodurch der tatsächlich verfügbare adressierbare Speicherplatz durch zwei geteilt wird. Damit ist bei einem 32-Bit-System (4 GB) der tatsächlich adressierbare Speicherraum auf die Hälfte, d. h. auf 2^31 Bits (2 GB), reduziert, was sehr nachteilig ist.
  • Die vorliegende Erfindung hat die Aufgabe, diesen Nachteil des Standes der Technik zu beseitigen.
  • Zur Lösung der Aufgabe gibt die Erfindung nach einer ersten Ausgestaltung ein Verfahren zum Programmieren eines DMA-Controllers in einem Ein-Chip-System an. Dieses Ein-Chip-System umfasst eine Verarbeitungszentraleinheit und eine Speicherverwaltungseinheit, die gemäß einer bestimmten Übersetzungstabelle eine virtuelle Adresse in eine entsprechende physikalische Adresse übersetzen kann. Weiterhin umfasst sie einen DMA-Controller, der mit einem Adressbus und einem Datenbus verbunden ist, und eine Anordnung von Registern bestehend aus mindestens einem Quellregister, einem Zielregister und einem Größenregister. Das Ein-Chip-System umfasst ferner Einheiten, die mit dem Adressbus und dem Datenbus verbunden sind, wobei jede Einheit durch eine jeweilige physikalische Adresse identifiziert und durch Legen der physikalischen Adresse auf den Adressbus adressierbar ist.
  • Das Verfahren umfasst die folgenden Schritte, deren Durchführung von der Verarbeitungszentraleinheit als Antwort auf einen ersten dedizierten Befehl, der in einem Benutzerprogramm enthalten ist und eine virtuelle Adresse als Adressargument aufweist, gesteuert wird :
    • – die Speicherverwaltungseinheit übersetzt die virtuelle Adresse in die entsprechende physikalische Adresse; einerseits wird die entsprechende physikalische Adresse auf den Adressbus gesetzt und andererseits wird ein Signal mit einem ersten Wert an den DMA-Controller abgegeben, und ein Signal mit einem zweiten Wert, der sich von dem ersten Wert unterscheidet, wird über Steuerleitungen an die Einheiten abgegeben;
    • – wenn das an ihn abgegebene Signal den ersten Wert hat, wählt der DMA-Controller eines der Register, Quellregister oder Zielregister, aus und speichert die entsprechende physikalische Adresse, die er auf dem Adressbus liest in dem zuvor ausgewählten Register ab.
  • Nach einer zweiten Ausgestaltung gibt die Erfindung ein Ein-Chip-System an mit:
    • – einem DMA-Controller, der mit einem Adressbus und einem Datenbus verbunden ist und eine Anordnung von Registern mit einem Quellregister, einem Zielregister und einem Größenregister umfasst;
    • – Einheiten, die mit dem Adressbus und dem Datenbus verbunden sind, wobei jede Einheit von einer jeweiligen physikalischen Adresse identifiziert und durch Legen der physikalischen Adresse auf den Adressbus adressierbar ist;
    • – eine Verarbeitungszentraleinheit, die mit dem DMA-Controller und mit den Einheiten über jeweilige Steuersignalübertragungsmittel verbunden ist, wobei die Verarbeitungszentraleinheit als Antwort auf mindestens einen bestimmten ersten Befehl eines Benutzerpro gramms, das auf der Verarbeitungszentraleinheit ausgeführt wird, zum Programmieren des DMA-Controllers dient und ein Adressargument mit einer virtuellen Adresse enthält, der Speicherverwaltungseinheit die virtuelle Adresse liefern kann;
    • – eine Speicherverwaltungseinheit, die die virtuelle Adresse, die am Eingang anliegt, gemäß einer bestimmten Übersetzungstabelle in eine physikalische Adresse übersetzen kann.
  • Dieses Ein-Chip-System kann zudem als Antwort auf den Erhalt mindestens des ersten Befehls einerseits die physikalische Adresse auf den Adressbus legen und andererseits ein Signal mit einem ersten Wert an den DMA-Controller und ein Signal mit einem zweiten Wert, der sich vom ersten unterscheidet, über die jeweiligen Signalübertragungsmittel an die Einheiten senden.
  • Wenn das an ihn abgegebene Signal den ersten Wert hat, kann der DMA-Controller zudem eines der Register, Quellregister oder Zielregister, wählen und die an den Bus gelegte physikalische Adresse in dem zuvor gewählte Register abspeichern.
  • Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung, die nur zur Veranschaulichung dient und auf die angehängten Zeichnungen Bezug nimmt. Es zeigen:
  • 1 eine Darstellung eines Ein-Chip-Systems aus dem Stand der Technik;
  • 2 ein Ein-Chip-System nach einem Ausführungsbeispiel der Erfindung;
  • 3 die einzelnen auf den Datenbus BD und den Adressbus BA gelegten Elemente sowie die Levels der Leitungen f1 und f2 bei einer Programmierung eines DMA-Controllers in einem Ausführungsbeispiel der Erfindung.
  • Bei der nachfolgend beschriebenen Ausführungsform handelt es sich um ein Ein-Chip-System 1 mit einer N-Bit-Standardarchitektur, bei der eine virtuelle Adresse als Zahl dargestellt ist, die eine mit N Bit kodierte virtuelle Adresse bildet.
  • Im Folgenden wird eine 32-Bit-Architektur erläutert, die so ausgelegt ist, dass eine virtuelle Adresse als Zahl dargestellt ist, die eine Seitenadresse oder VPN (englisch „Virtual Page Number") bildet, die mit den 20 höchstwertigen Bits kodiert ist, gefolgt von einem Offset in der Seite, das mit den 12 niedrigstwertigen Bits kodiert ist. Die Erfindung kann dennoch bei jeder Art von Architektur eingesetzt werden.
  • Das in 2 dargestellte und einer Ausführungsform der Erfindung entsprechende Ein-Chip-System 1 umfasst eine Verarbeitungszentraleinheit oder CPU 2, auf der Benutzerprogramme ausgeführt werden.
  • Das Ein-Chip-System 1 umfasst ferner eine MMU 3, einen Steuerblock 4, einen Multiplexer/Demultiplexer 5, einen Multiplexer 5' und einen DMA-Controller 6.
  • Das Ein-Chip-System 1 umfasst außerdem zusätzliche Einheiten 8.
  • Der DMA-Controller 6 weist eine Anordnung 9 von Registern auf, die zur Programmierung einer DMA-Übertragung erforderlich sind. Die Anordnung 9 von Registern umfasst ein Größenregister, eine Quellregister 11, ein Zielregister 12 und ein Statusregister 13. Die Register 10, 11, 12 können jeweils die Größe, die physikalische Quelladresse und die physikalische Zieladresse der vorzunehmenden DMA-Übertragung speichern.
  • Der DMA-Controller 6 umfasst ferner eine Zustandsmaschine 14, die ein Register der Anordnung 9 auswählen und Informationen darin speichern kann. Die Zustandsmaschine 14 weist ein Atomaritätsregister 16 auf.
  • Ein allgemeiner Adressbus B1 verbindet die MMU 3, den DMA-Controller 6, die CPU 2 und die Einheiten 8 untereinander.
  • Genau so verbindet ein Datenbus BD die einzelnen Elemente untereinander.
  • Bei den Einheiten 8 handelt es sich um alle funktionellen Vorrichtungen außer dem DMA-Controller 6. Sie sind in der betreffenden Architektur jeweils durch eine physikalische Adresse identifiziert. Sie sind durch Legen ihrer physikalischen Adresse auf den Adressbus BA einzeln adressierbar. Zu diesen Vorrichtungen 8 gehören beispielsweise ein RAM-Speicher, Peripheriegeräte-Controller (Speicher o. ä.) oder Funktionsvorrichtungen (A/D-Wandler, usw.) mit den Bezugszeichen D1 ... Dn.
  • Das Ein-Chip-System 1 weist eine Steuerleitung 15 für die Übertragung eines Steuersignals über die CPU 2 auf. Die Leitung 15 ist zweiteilig und besteht aus einer Steuerleitung 15a und einer weiteren dedizierten Leitung 15b. Die Leitung 15a ist mit dem DMA-Controller 6 verbunden. Die Leitung 15b umfasst einen Umschalter und ist jeweils mit den Einheiten 8 verbunden.
  • Wird nun ein bestimmter logischer Wert S an der Leitung 15 angelegt, sendet die Leitung 15a ein Signal mit dem logischen Wert S an den DMA-Controller und ein Signal mit dem umgekehrt logischen Wert S an die Einheiten 8.
  • Bei dem beschriebenen Beispiel kann das an der Leitung 15a angelegte Signal in elektrischer Hinsicht einer positiven Spannung +V (HIGH) entsprechen. Das an der Leitung 15b angelegte Signal hat dann eine negative Spannung –V (LOW). Umgekehrt kann das an der Leitung 15a angelegte Signal einer negativen Spannung –V (LOW) entsprechen. Das an der Leitung 15b angelegte Signal hat dann eine positive Spannung +V (HIGH). Ein HIGH-Signal entspricht ungefähr einem logischen Wert 1, während ein LOW-Signal einem logischen Wert 0 entspricht.
  • Bei dem beschriebenen Ausführungsbeispiel können die Vorrichtungen 8 die auf den Adressbus BA und auf den Datenbus BD gelegten Elemente ignorieren, wenn das über die Leitung 15b an sie abgegebene Signal LOW ist.
  • Die MMU 3 übersetzt auf bekannte Weise eine virtuelle 32-Bit-Adresse, die am Eingang anliegt, einfach dadurch, dass sie jeweils nur die höchstwertigen Bits mit der Seite (hier die ersten 20 Bits), d. h. die VPN mit Hilfe einer vorbestimmten Tabelle T, die mittels eines ASID einen benutzerprogrammspezifischen virtuellen Adressraum definiert, in eine physikalische Seitennummer oder PPN (englisch „Physical Page Number") übersetzt. Die MMU 3 überprüft auch, ob die Anwendung, die die Übersetzung veranlasst hat, auch wirklich die entsprechenden Rechte besitzt.
  • Der Ausgang der MMU 3 ist an einen ersten Eingang des Multiplexers 5 und an einen ersten Eingang des Multiplexers 5' angeschlossen.
  • Ein Bus VA mit den virtuellen Adressen verbindet die CPU mit dem Eingang der MMU 3. Ein Datenbus DATA verbindet die CPU 2 mit dem zweiten Eingang des Multiplexers/Demultiplexers 5.
  • Zwei Leitungen f1, f2 verbinden außerdem die CPU 2 mit den jeweiligen Eingängen des Steuerblocks 4 und können von der CPU 2 jeweils HIGH oder LOW gesetzt werden.
  • Der Steuerblock 4 steuert den Multiplexer/Demultiplexer 5 und den Multiplexer 5' je nach dem Status der Leitungen f1 und f2. Ist die Leitung f1 auf HIGH, steuert er sie so, dass sie aus den an den Multiplexern anliegenden Elementen Ausgangselemente bildet, die bei dem Multiplexer/Demultiplexer 5 auf den Datenbus BD und bei dem Multiplexer 5' auf den Adressbus BA wie nachstehend beschrieben gelegt werden.
  • Ist die Leitung f2 auf HIGH, wird der Multiplexer/Demultiplexer 5 vom Steuerblock 4 so gesteuert, dass zwischen dem Datenbus BD und dem Datenbus DATA Durchgang besteht, damit die CPU 2 eine vom DMA-Controller auf den Datenbus BD gestellte Statusinformation lesen kann.
  • Die CPU 2 kann bei der Ausführung eines Befehls zur Programmierung einer DMA-Übertragung, im Folgenden und in den Figuren „SoreDMA (argVA; argD") genannt, wobei „argVA" einem Adressargument und „argD" einem Datenargument entspricht, das optional ist, das anliegende Adressargument an den Bus VA legen, das Datenargument an den Bus DATA legen, die Leitung f1 HIGH setzen und die Leitung 15 HIGH setzen. Ein derartiger Befehl wird ausgeführt, wenn er in einem Benutzerprogramm P anliegt.
  • Die MMU 3 übersetzt das anliegende Adressargument mittels der Tabelle T in eine entsprechende physikalische Adresse und gibt diese an den Multiplexer 5' weiter.
  • Die Tabelle T enthält auch den benutzerprogrammspezifischen ASID aus der am Eingang der MMU 3 anliegenden virtuellen Adresse. Die MMU 3 gibt diesen ASID, der das Benutzerprogramm P eindeutig identifiziert, an den Multiplexer/Demultiplexer 5 und an den Multiplexer 5' weiter. Im beschriebenen Beispiel ist dieser ASID mit 8 Bits kodiert.
  • Nachdem die Leitung f1 auf HIGH gesetzt wurde, kann der Steuerblock 4 den Multiplexer/Demultiplexer 5 so steuern, dass ein Wort, das in den 8 höchstwertigen Bits den ASID enthält, gefolgt von dem am Bus DATA anliegenden Datenargument, auf den Datenbus BD gelegt wird. Nachdem die Leitung f1 auf HIGH gesetzt wurde, kann der Steuerblock zudem den Multiplexer 5' so steuern, dass er die von der MMU 3 an den Multiplexer 5' gesendete physikalische Adresse auf den Adressbus BA stellt.
  • Das Legen auf die Busse BA und BD wird von dem Steuerblock 4 zu jeweiligen voneinander abhängigen Zeitpunkten (beispielsweise quasi gleichzeitig oder einen Taktzyklus vor dem anderen, usw.) und in Abhängigkeit vom Verwaltungsprotokoll der eingesetzten Busse gesteuert.
  • Die CPU 2 kann ferner bei der Ausführung in einem Benutzerprogramm P eines Befehls zur Programmierung einer DMA-Übertragung, im Folgenden und in den Figuren „LoadDMA (argVA) genannt, wobei „argVA" ein Adressargument ist, das anliegende Adressargument an den Bus VA legen, die Leitung f2 auf HIGH setzen und die Leitung 15 auf HIGH setzen.
  • Wie bereits erwähnt wird der benutzerprogrammspezifische, in der Tabelle T enthaltene ASID aus der an der MMU 3 am Bus VA anliegenden virtuellen Adresse an den Multiplexer 5' und an den Multiplexer/Demultiplexer 5 geliefert.
  • Nachdem die Leitung f2 auf HIGH gesetzt wurde, kann der Steuerblock 4 den Multiplexer 5' so steuern, dass er ein Wort, das in den 8 höchstwertigen Bit den ASID enthält, auf den Adressbus BA stellt.
  • Die CPU 2 kann die Leitung 15 immer dann auf LOW setzen, wenn die Befehle „StoreDMA" und LoadDMA" nicht ausgeführt werden sollen.
  • Im Folgenden wird nun die Funktionsweise der Zustandsmaschine 14 des DMA-Controllers 6 beschrieben.
  • Wenn die Zustandsmaschine 14 erfasst, dass das über die Leitung 15a an den DMA-Controller 6 gelieferte Signal HIGH ist, wählt sie in der Anordnung 9 mindestens eines der Größen-, Quell-, Ziel bzw. Statusregister 10, 11, 12, 13 aus und zwar in Abhängigkeit ihres Fortschrittszustandes nach einem geordneten Zustandszyklus C, und führt anschließend die das ausgewählte Register betreffenden Abspeicherungs- bzw. Extrahierungsvorgänge durch.
  • Der Zyklus C durchläuft die Zustände „Quelle", „Ziel", Größe und „Status" bevor er in den Ausgangszustand zurückkehrt.
  • Wenn die Zustandsmaschine 14 dabei am Anfang einer Programmierung des DMA-Controllers steht, befindet sie sich im Zustand „Quelle", in dem sie beim nächsten HIGH-Setzen der Leitung 15a das Quellregister 11 auswählen kann. Nachdem das Register 11 ausgewählt wurde, inkrementiert sie ihren Zeiger auf das Zielregister 12, sodass sie sich im Zustand „Ziel" befindet, in dem sie beim nächsten HIGH-Setzen der Leitung 15a das Zielregister 12 auswählen kann. Nachdem das Zielregister 12 ausgewählt wurde, inkrementiert sie ihren Zeiger auf das Größenregister und wählt das Größenregister 10 bei dem gleichen HIGH-Setzen wie demjenigen, mit dem das Zielregister 12 ausgewählt wurde, aus. Nachdem das Zielregister 10 ausgewählt wurde, inkrementiert sie ihren Zeiger auf das Statusregister 13 und befindet sich somit im Zustand „Status", in dem beim nächsten HIGH-Setzen der Leitung 15a das Statusregister 13 auswählen kann. Nachdem das Register 13 ausgewählt wurde, geht sie wieder auf das Quellregister und befindet sich dann wieder im Zustand „Quelle", in dem sie zur Programmierung der Register 10, 11, 12, 13 der Anordnung für eine weitere DMA-Übertragung bereit ist. Weitere Ausführungsformen der Zustandsmaschine und des DMA-Controllers werden weiter unten erläutert.
  • In dem beschriebenen Ausführungsbeispiel kann die Zustandsmaschine 14 nach 2, wenn die Leitung 15 auf HIGH ist und sie sich in einem anderen als dem Zustand „Status" befindet, in einem auf den Datenbus BD gestellten Wort die 8 höchstwertigen Bits erfassen, bevor sie einen Abspeichervorgang in das Speicherregister 10, das Zielregister 12 oder das Quellregister 11 vornimmt.
  • Befindet sich die Zustandsmaschine im Ausgangszustand, werden diese 8 Bits im Atomaritätsregister 16 abgelegt. Die Zustandsmaschine 14 geht dann auf das Quellregister 11, und die auf den Adressbus VA gestellten Elemente werden von der Zustandsmaschine im Quellregister 11 abgespeichert. Je nachdem ob das Abspeichern im Quellregister 11 erfolgreich war oder nicht, füllt die Zustandsmaschine 14 ein dem Speicherstatus der quellspezifischen Elemente zugeordnetes Feld CS aus, mit Angabe eines Codes „erfolgreich" oder „gescheitert".
  • Befindet sich die Zustandsmaschine 14 auf dem Zielregister 12, werden die 8 aus dem auf den Datenbus BD gestellten Wort extrahierten Bits mit den im Atomaritätsregister vorhandenen Bits verglichen.
  • Stimmen diese nicht überein, wird das Abspeichern im Zielregister 12 nicht vorgenommen, und die Zustandsmaschine 14 füllt zwei im Statusregister bestimmte Felder (Cd, Ct), die dem Status der Vorgänge des Abspeicherns der Zieladresse bzw. der Größenadresse zugeordnet sind, mit Angabe eines Codes „gescheitert" aus.
  • Stimmen sie überein, speichert die Zustandsmaschine 14 die auf den Adressbus BA im Zielregister 12 gestellten Elemente ab. Je nachdem ob die Abspeicherung erfolgreich war oder nicht, wird das Statusregister 13 unter Angabe, ob der Vorgang der Abspeicherung der Zieladresse erfolgreich war oder nicht, zurückgesetzt.
  • Die Statusmaschine 14 geht dann auf das Größenregister 10, und die auf die 8 Bits, die aus dem an den Bus BD gelegten Wort extrahiert wurden, folgenden Bits werden im Größenregister 10 abgespeichert. Die Zustandsmaschine 14 füllt dann das im Statusregister mit Ct bezeichnete Feld mit dem entsprechenden Code aus, je nachdem ob der Größenabspeichervorgang erfolgreich war oder nicht.
  • Wenn sie auf das Statusregister (Zustand „Status") zeigt, kann die Zustandsmaschine 14 die 8 aus dem auf den Adressbus BA gestellten Wort extrahierten Bits erfassen und sie mit den im Atomaritätsregister 16 vorhandenen Bits vergleichen. Stimmen sie nicht überein, füllt die Zustandsmaschine 14 ein im Statusregister 13 dem Statusvorgang zugeordnetes Feld Cst mit Angabe eines Codes „gescheitert" aus.
  • Daraufhin stellt sie unabhängig davon, ob die 8 Bits aus dem an den Bus BA gelegten Wort mit denjenigen im Atomaritätsregister 16 vorhandenen Bits übereinstimmen, den Inhalt des Statusregisters auf den Datenbus BD.
  • Damit kann ein Bericht über die zur Programmierung der DMA-Übertragung durchgeführten Vorgänge an die CPU 2 geschickt werden.
  • Weiterhin wird auf der CPU 2 ein Benutzerprogramm P zum Programmieren des DMA-Controllers 6 mittels einer virtuellen 32-Bit-Quelladresse VA_SRC, einer virtuellen 32-Bit-Zieladresse VA_DEST und einer zu übertragenden Speicherbereichsgröße t ausgeführt.
  • Dazu weist es eine Folge Seq von drei nacheinander ausgeführten Befehlen auf.
  • Die Befehlsfolge Seq umfasst die eingangs erwähnten Befehle „StoreDMA" und LoadDMA" mit den jeweiligen Argumenten:
    „StoreDMA VA-SRC (Befehl „S1"), dann
    "StoreDMA (VA_DEST; t)" (Befehl "S2") dann
    „LoadDMA VA_DEST (Befehl „L").
  • Bei der Ausführung von Befehl S1 „Store DMA VA_SRC" legt die CPU 2 das anliegende Adressargument „VA-SRC" an den Bus VA und setzt die Leitung f1 auf HIGH.
  • Die MMU 3 übersetzt das anliegende Adressargument VA_SRC gemäß Tabelle T, die auch den ASID des Benutzerprogramms P enthält, in eine physikalische Adresse PA_SRC und legt die physikalische Adresse PA_SRC an den Eingang des Multiplexers 5'. Die MMU 3 legt diesen ASID, der das Benutzerprogramm P identifiziert, von dem der Befehl „StoreDMA VA_SRC" ausgeht, am Eingang des Multiplexers 5' und des Multiplexers/Deplultiplexers 5 an.
  • Dabei wird der Multiplexer/Demultiplexer 5 von dem Steuerblock 4 so gesteuert, dass er ein Wort M1 mit 8 hochwertigen, mit dem ASID übereinstimmenden Bits, das von der MMU 3 an seinen Eingang gelegt wird, auf den Datenbus BD stellen kann. Da kein Datenargument mit dem Befehl S1 geliefert wurde, enthält das Wort M1 nur diese 8 Bit.
  • Parallel dazu wird einerseits der Multiplexer 5' von dem Steuerblock 4 so gesteuert, dass er die physikalische Adresse PA_SRC aus der von der MMU 3 durchgeführten Übersetzung auf den Adressbus BA stellen kann. Andererseits steuert die CPU2 2 das Setzen auf HIGH der Leitung 15 und damit das Setzen auf HIGH der Leitung 15a und das Setzen auf LOW der Leitung 15b.
  • Das Legen auf die Busse BA und BD und die jeweiligen Ebenen der Leitungen f1 und f2 sind in 3 dargestellt, die eine Tabelle zeigt, in der jede Zeile einem gemäß dem Ablauf der Folge Seq, dann der Folge Seq2 (Spalte „Befehle") auf der CPU 2 ausgeführten Befehl zum Programmieren des DMA-Controllers, und im Anschluss an die Ausführung des Befehls durch die CPU 2 den auf den Adressbus BA (Spalte „Adressbus BA) und den Datenbus BD (Spalte „Datenbus BD") gestellten Elementen und den Ebenen der Leitungen f1 und f2 entspricht.
  • Die Zustandsmaschine 14 des DMA-Controllers 6 ist in ihrem Ausgangszustand einer DMA-Übertragungsprogrammierung nach dem Zyklus C. Sie zeigt demnach auf das Quellregister 11. Wenn sie feststellt, dass die Leitung 15a auf HIGH ist, extrahiert sie die ersten 8 Bits des am Datenbus BD anliegenden Wortes M1 und speichert sie im Atomaritätsregister 16 ab. Ferner speichert sie die am Adressbus BA anliegende Adresse PA_SRC im Quellregister ab. Dann füllt sie das Feld C im Statusregister 13 aus und geht mit ihrem Zeiger auf das Zielregister 12 gemäß Zyklus C.
  • Bei der Ausführung von Befehl S2 „StoreDMA (VA_DEST; t)" legt die CPU 2 das anliegende Adressargument VA_DEST an den Bus VA, das Datenargument t auf den Datenbus DATA und setzt die Leitung f1 auf HIGH.
  • Die MMU 3 übersetzt das anliegende Adressargument VA_DEST gemäß der Tabelle T, die auch den ASID des Benutzerprogramms P enthält, in eine physikalische Adresse PA_DEST. Die MMU 3 legt diesen ASID an den Eingang des Multiplexers 5' und des Multiplexers/Deplultiplexers 5 an.
  • Dabei wird der Multiplexer/Demultiplexer 5 von dem Steuerblock 4 so gesteuert, dass er ein in 3 dargestelltes Wort M2 bestehend aus 8 hochwertigen, mit dem von der MMU 3 an seinen Eingang gelegten ASID übereinstimmenden Bits und der von dem Datenbus DATA am Eingang des Multiple xers/Demultiplexers 5 angelegten, ab dem 9. Bit kodierten Größe t, auf den Datenbus BD stellen kann.
  • Der Multiplexer 5' wird von dem Steuerblock 4 so gesteuert, dass er die physikalische Adresse PA_DEST, die aus der von der MMU 3 vorgenommenen Übersetzung hervorgeht, an den Adressbus BA stellt. Die CPU 2 steuert das Setzen auf HIGH der Leitung 15 und demnach das Setzen auf High der Leitung 15a und das Setzen auf LOW der Leitung 15b.
  • Die Zustandsmaschine 14 des DMA-Controllers 6 zeigt auf das Zielregister 12. Wenn sie feststellt, dass die Leitung 15a auf HIGH ist, extrahiert sie die ersten 8 Bits des am Datenbus BD anliegenden Wortes M2 und vergleicht sie mit den im Atomaritätsregister 16 abgespeicherten Bits.
  • Stimmen sie überein, speichert sie die am Adressbus BA anliegende Adresse PA_DEST im Zielregister 12 ab, füllt das Feld Cd im Statusregister 13 aus und geht mit ihrem Zeiger dem Zyklus C gemäß auf das Größenregister 10. Anschließend extrahiert sie die auf die ersten 8 Bits mit dem benutzerprogrammspezifischen ASID folgenden Bits aus dem Wort M2 und speichert sie im Größenregister 10 ab und füllt das Feld Ct im Statusregister 13 aus.
  • Stimmen sie nicht überein, erfolgt keine Abspeicherung im Zielregister 12 und Größenregister 10, und die Zustandsmaschine füllt die Felder Cd und Ct mit dem Code „gescheitert" aus.
  • Bei der Ausführung des letzten Befehls L („LoadDMA VA_DEST") der Folge Seq im Benutzergramm P, stellt die CPU 2 das anliegende Adressargument VA_DEST an den Bus VA und setzt die Leitung f2 auf HIGH.
  • Die MMU 3 übersetzt das anliegende Adressargument VA_DEST in eine physikalische Adresse PA_DEST und legt den entspre chenden ASID an den Eingang des Multiplexers 5' und des Multiplexers/Deplultiplexers 5 an.
  • Der Multiplexer 5' wird von dem Steuerblock 4 so gesteuert, dass er ein in 3 dargestelltes Wort M3 mit 8 hochwertigen Bits, die mit dem von der MMU 3 an seinen Eingang gelegten ASIDP übereinstimmen, auf den Adressbus BA stellen kann.
  • Der Multiplexer/Demultiplexer 5 wird von dem Steuerblock 4 so gesteuert, dass er den Durchgang zwischen dem Datenbus BD und Datenbus DATA freigibt, damit die CPU 2 den Status lesen kann, wenn er vom DMA-Controller 6 angelegt wird.
  • Parallel dazu steuert die CPU 2 das Setzen auf HIGH der Leitung 15 und demnach das Setzen auf HIGH der Leitung 15a und das Setzen auf LOW der Leitung 15b.
  • Die Zustandsmaschine 14 des DMA-Controllers 6 zeigt auf das Statusregister 13. Wenn sie feststellt, dass die Leitung 15a auf HIGH ist, extrahiert sie die ersten 8 Bits des am Datenbus BD anliegenden Wortes M3 und vergleicht sie mit den im Atomaritätsregister 16 abgespeicherten Bits.
  • Stimmen sie nicht überein, schreibt sie einen Code „gescheitert" in das Feld Cst des Statusregisters 13.
  • Dann wählt sie unabhängig davon, ob sie übereinstimmen oder nicht, das Statusregister 13 aus, legt dessen Inhalt auf den Datenbus BD und geht anschließend mit ihrem Zeiger auf die Ausgangsstellung des Zyklus C der Zustandsmaschine 14.
  • Die Verarbeitung der Folge Seq zur Programmierung des DMA-Controllers ist hiermit beendet.
  • Der DMA-Controller 6 weist nunmehr die Quelldaten, die Größendaten und die Zieldaten auf, die er zur Durchführung der Übertragung benötigt.
  • Durch die Einführung des neuen dedizierten Befehls „StoreDMA" ist es mit der Erfindung möglich, den DMA-Controller zu programmieren, ohne den Benutzerprogrammen Zugriff zu den physikalischen Adressen zu gestatten und ohne den Nachteil, dass viel adressierbarer Speicherraum verloren geht, wie das bei den Lösungen aus dem Stand der Technik der Fall ist, bei gleichzeitiger Kompatibilität mit einer CPU, einer MMU und einem 32-Bit-Standardspeicher.
  • Mit dem Befehl „LoadDMA" kann überprüft werden, ob die Programmierungsvorgänge richtig durchgeführt wurden.
  • Mit der Erfindung ist eine Änderung der MMU überflüssig, sodass die Verarbeitung der virtuellen Adressen, die an der MMU zur Übersetzung anliegen und keine Programmierung des DMA-Controllers betreffen (wenn die Leitungen f1 und f2 auf LOW stehen), nicht weiter beeinträchtigt wird.
  • Bei einer Programmierung des DMA-Controllers werden die Einheiten 8 (beispielsweise der RAM-Speicher) durch das Setzen der Leitung 15b auf LOW gesteuert, damit sie die am Adressbus BA anliegenden Elemente und die entsprechenden, auf dem Datenbus BD anliegenden Elemente nicht berücksichtigen. Wenn dann die Adresse einer Einheit 8 an den Adressbus (als Übertragungsquelle oder -ziel) angelegt wird, geht diese Einheit nicht davon aus, dass die am Datenbus BD angelegten Elemente für sie bestimmt sind. Umgekehrt werden die Leitung 15b auf HIGH und die Leitung 15a auf LOW gesetzt, wenn die Einheiten 8 angesprochen werden sollen.
  • Bei einer anderen Ausführungsform als derjenigen wie oben beschrieben wird die Größeninformation t dem DMA-Controller mittels eines spezifischen Befehls aus dem Stand der Tech nik wie „STORE t @dma_size_reg_adr" abgegeben, wobei „dma_size_reg_adr" die virtuelle Adresse des Größenregisters ist. In diesem Fall weist der Zyklus C der Zustandsmaschine des DMA keinen Größenzustand mehr auf, da das Größenregister direkt nach dem Erfassen durch den DMA-Controller der physikalischen Adresse des Größenregisters auf dem Adressbus BA ausgewählt wird.
  • Bei einer weiteren Ausführungsform kann das Ein-Chip-System 1 einen das Statusregister bezeichnenden Code XST auf den Adressbus BA (M3) stellen, wenn der empfangene Programmierbefehl „L" ist (Leitung f2 HIGH).
  • Der DMA-Controller kann dann, wenn die Leitung 15a auf HIGH ist, das Statusregister aus einem auf dem Adressbus BA anliegenden und den Code XST enthaltenden Wort auswählen. Da das Statusregister damit explizit in einem Wort auf dem Datenbus bezeichnet werden kann, wird der Zyklus der Zustandsmaschine nur dann in Anspruch genommen, wenn das auszuwählende Register nicht explizit bezeichnet ist. Der Zyklus hat in dem Fall, in dem ein Code für das Statusregister definiert wurde, nur 3 Zustände: einen Ausgangszustand „Quelle", einen Zustand „Ziel" und einen Zustand „Größe".
  • Bei einer weiteren Ausführungsform ist die Zustandsmaschine beispielsweise mit einem Zyklus mit 3 Zuständen wie oben erwähnt, in den Steuerblock integriert (sie steht dann nicht mehr im DMA-Controller). Der Zustand ändert sich zyklusgemäß im Laufe des Erhalts eines Befehls „StoreDMA" (Leitung f1 auf HIGH). Ein Code XS bzw. XDest, wird dann in das an den Datenbus BD angelegte Wort integriert, wenn die Leitung f1 auf HIGH ist. Wenn die Leitung f1 auf HIGH ist, wählt die Zustandsmaschine dann bei aktuellem Zykluszustand „Ziel", im Steuerblock den Code XD und bei aktuellem Zykluszustand „Quelle", den Code XS aus. Anschließend wird der ausgewählte Code im Anschluss an den ASID in das am Datenbus BD anliegende Wort eingefügt. Bei dieser Ausführungsform kann der DMA-Controller das je nach Code XS, XD oder XST in dem am Datenbus BD anliegenden Wort auszuwählende Register bestimmen (insbesondere, wenn der Code XD ist, wählt er das Zielregister aus, um die am Adressbus BA anliegende Adresse darin abzuspeichern, dann das Größenregister, um die ebenfalls in dem auf dem Datenbus anliegenden Wort enthaltene Größe darin abzuspeichern).
  • Durch die Verwendung von Identifikatoren (im vorliegenden Fall der ASID bezogen auf das Benutzerprogramm P, das den Befehl erzeugt hat) kann die Atomarität der am DMA-Controller aufeinander folgenden Befehle überprüft werden. Mit dieser Maßnahme kann festgestellt werden, ob ein Befehl von einem anderen Benutzerprogramm P' als dem Benutzerprogramm P ausgeht und vermieden werden, dass die Informationen mehrerer DMA-Übertragungen verwechselt werden. Handelt es sich bei dem DMA-Controller um einen Multichannel-DMA-Controller, d. h. der mehrere Anordnungen von Registern (wie die Register-Anordnung 9) parallel ansteuern kann, kann mit dem Identifikator außerdem das Größenregister, das Quellregister, das Zielregister bzw. das Statusregister in der dam Programm P zugeordneten Anordnung ausgewählt werden.
  • Bei einer weiteren Ausführungsform ist es möglich, die Identifikatoren der Benutzerprogramme, die eine DMA-Controller-Programmierung ausführen, in der Zustandsmaschine nicht zu berücksichtigen. Das Atomaritätsregister 16 ist dann überflüssig und es braucht kein Identifikator an den DMA-Controller übertragen zu werden. Weitere Maßnahmen sollen dann helfen, die Probleme der Nicht-Atomarität der Befehle zur DMA-Controller-Programmierung zu überwinden.
  • Bei einer weiteren Ausführungsform kann der Befehl „LoadDMA" zum Erfassen des Programmierstatus nach jedem Befehl „StoreDMA" verwendet werden.
  • Bei einer weiteren Ausführungsform ist das Adressargument des Befehls „LoadDMA" die virtuelle Quelladresse VA_SRC, die den gleichen ASID hat wie die virtuelle Adresse VA-DEST.
  • Bei einer weiteren Ausführungsform weist der Befehl „LoadDMA" kein Adressargument auf. Die Atomarität dieses Befehls mit den vorausgehenden Befehlen ist dann jedoch nicht gewährleistet.

Claims (16)

  1. Verfahren zum Programmieren eines DMA-Controllers in einem System auf Chip (1), das eine Zentralverarbeitungseinheit (2), eine Speicherverwaltungseinheit (3), die gemäß einer bestimmten Übersetzungstabelle (T) eine virtuelle Adresse in eine entsprechende physikalische Adresse umwandeln kann, einen DMA-Controller (6), der mit einem Adressbus (BA) und einem Datenbus (BD) verbunden ist, und eine Einheit (9) Register, die mindestens Quellenregister (11), ein Zielregister (12) sowie ein Größenregister (10) aufweist, und ferner Einheiten (8), die mit dem Adressbus (BA) und dem Datenbus (BD) verbunden sind, umfasst, wobei jede Einheit durch eine jeweilige physikalische Adresse identifiziert ist und durch Anlegen der physikalischen Adresse auf den Adressbus (BA) adressierbar ist, wobei das Verfahren die folgenden Umsetzungsschritte unter der Steuerung einer Verarbeitungszentraleinheit als Antwort auf eine erste dedizierte bestimmte Anweisung (S1, S2), die in einem Benutzerprogramm (P) enthalten ist und eine virtuelle Adresse (VA_SRC, VA_DEST) als Adressargument (argVA) aufweist, umfasst: – die Speicherverwaltungseinheit (3) übersetzt die virtuelle Adresse in die entsprechende physikalische Adresse (PA_SCR, PA_DEST), – ein Teil der entsprechenden physikalischen Adresse wird an den Adressbus (BA) angewandt, andererseits wird an den DMA-Controller ein Signal (15a) mit einem ersten Wert geliefert, und ein Signal (15b) mit einem zweiten, von dem ersten Wert unterschiedlichen Wert wird an die Einheiten über Steuerleitungen geliefert, – der DMA-Controller (6) wählt, wenn das Signal, das ihm geliefert wird, den ersten Wert hat, eines der Register Quellenregister oder Zielregister aus und speichert in das derart ausgewählte Register die entsprechende physikalische Adresse, die er auf dem Adressbus liest.
  2. Verfahren zum Programmieren eines DMA-Controllers nach Anspruch 1, bei dem die Einheiten (8), wenn das Signal, das ihnen geliefert wird, den zweiten Wert hat, die Informationen, die dabei an den Adressbus (BA) und an den Datenbus (BD) angelegt werden, ignorieren.
  3. Verfahren zum Programmieren eines DMA-Controllers nach Anspruch 1 oder Anspruch 2, bei dem: – als Antwort auf die erste Anweisung (S1, S2) ferner ein Identifikator (ASID) des Benutzerprogramms (P) bestimmt und ein erstes Wort (M1, M2), das den Identifikator enthält, gebildet und an den Datenbus (BD) angelegt wird, und – der Datencontroller (6), wenn das ihm gelieferte Signal den ersten Wert hat, das Register (11, 12) in Abhängigkeit von dem Identifikator auswählt.
  4. Verfahren zum Programmieren eines DMA-Controllers nach einem der vorhergehenden Ansprüche, bei dem: – die erste Anweisung (S1, S2) ferner ein Datenargument (argD) aufweist, das eine Größeninformation (t) anzeigt, und das erste an den Datenbus (BD) angelegte Wort (M2) ferner die Größeninformation enthält, und – wenn das an den DMA-Controller (6) gelieferte Signal den ersten Wert hat, der DMA-Controller ferner das Größenregister (10) auswählt, die Größe des ersten an den Datenbus angelegten Worts extrahiert und die so extrahierte Größe in das Größenregister speichert.
  5. Verfahren zum Programmieren eines DMA-Controllers nach einem der vorhergehenden Ansprüche, bei dem die Einheit (9) Register des DMA-Controllers (6) ferner ein Statusregister (13) aufweist und man als Antwort auf eine zweite dedizierte bestimmte Anweisung (L), die von der Zentralverarbeitungseinheit von einem Benutzerprogramms (P) empfangen wird, – einen Identifikator (ASID) des Benutzerprogramms (P) bestimmt und – man einerseits an den Adressbus (BA) ein zweites Wort (M3) anlegt, das den Identifikator enthält, und andererseits wird ein Signal, das den ersten Wert hat, an den DMA-Controller geliefert, und ein Signal, das den zweiten Wert hat wird an die Einheiten (8) über die Steuerleitungen geliefert, – nachdem der erste Wert, der von dem an den DMA-Controller (6) gelieferten Signal angenommen wird, identifiziert wurde, wählt der DMA-Controller das Statusregister aus und legt den Inhalt des Statusregisters (13) an den Datenbus (BD) an.
  6. Verfahren zum Programmieren eines DMA-Controllers nach einem der vorhergehenden Ansprüche, bei dem der DMA-Controller (6) eine Zuständemaschine (14) aufweist, wobei mindestens die Auswahl des Quellenregisters und die Auswahl des Zielregisters aus den Registern (10, 11, 12, 13) der Einheit (9) in Abhängigkeit von dem Fortschreiten der Zuständemaschine in einem geordneten Zuständezyklus (C) ausgeführt wird.
  7. Verfahren zum Programmieren eines DMA-Controllers nach Anspruch 3 oder Anspruch 5, bei dem der Identifikator des Benutzerprogramms (P) ein Adressierungsraumidentifikator (ASID) ist, der in der Tabelle (T) der Speicherverwaltungseinheit (3) für jedes Benutzerprogramm des Systems auf Chip (1) gespeichert ist und von der Speicherverwaltungseinheit geliefert wird, wenn sie einen Übersetzungsvorgang einer virtuellen Adresse (VA_SCR, VA_DEST) ausführt.
  8. Verfahren zum Programmieren eines DMA-Controllers nach einem der vorhergehenden Ansprüche, bei dem das an den DMA-Controller (6) gelieferte Signal (15a) zu dem an die Einheiten (8) gelieferten Signal (15b) umgekehrt logisch ist.
  9. System auf Chip (1) Folgendes umfassend: – einen DMA-Controller (6), der mit einem Adressbus (BA) und einem Datenbus (BD) verbunden ist und eine Einheit (9) Register aufweist, die ein Quellenregister (11), ein Zielregister (12) und ein Größenregister (10) umfassen, – Einheiten (8), die mit dem Adressbus (BA) und dem Datenbus (BD) verbunden sind, wobei jede Einheit von einer jeweiligen physikalischen Adresse identifiziert ist und durch Anlegen der physikalischen Adresse an den Adressbus (BA) adressierbar ist, – eine Verarbeitungszentraleinheit (2), die mit dem DMA-Controller und mit den Einheiten über jeweilige Steuersignalübertragungsmittel verbunden ist, wobei die Verarbeitungszentraleinheit als Antwort auf mindestens eine erste bestimmte Anweisung (S1, S2) eines Benutzerprogramms (P), das auf der Verarbeitungszentraleinheit ausgeführt wird, dem Programmieren des DMA-Controllers zugewiesen ist und ein Adressargument (argVA) enthält, das eine virtuelle Adresse anzeigt, der Speicherverwaltungseinheit die virtuelle Adresse liefern kann, – eine Speicherverwaltungseinheit (3), die die virtuelle Adresse (VA_SRC, VA_DEST), die am Eingang geliefert wird, gemäß einer bestimmten Übersetzungstabelle (T) in eine physikalische Adresse (PA_SRC, PA_DEST) umwandeln kann, dadurch gekennzeichnet, dass das System auf Chip (1) als Antwort auf den Empfang mindestens der ersten Anweisung einerseits die physikalische Adresse (PA_SRC, PA_DEST) an den Adressbus (BA) anlegen und andererseits ein Signal (15a), das einen ersten Wert hat, an den DMA-Controller liefern kann, und ein Signal (15b), das einen zweiten, von dem ersten Wert unterschiedlichen Wert hat, an die Einheiten über die jeweiligen Signalübertragungsmittel liefern kann, und dass der DMA-Controller, wenn das Signal, das ihm geliefert wird, den ersten Wert hat, ein Register aus dem Quellenregister (11) und dem Zielregister (12) auswählen und in dem so ausgewählten Register die physikalische Adresse, die an den Adressbus angelegt wird, auswählen kann.
  10. System auf Chip (1) nach Anspruch 9, bei dem die Einheiten (8), wenn ein Signal, das ihnen auf den Übertragungsmitteln, die sie mit der CPU verbinden, geliefert wird, den zweiten Wert hat, die an den Adressbus (BA) und an den Datenbus (BD) angelegten Informationen ignorieren kann.
  11. System auf Chip (1) nach Anspruch 9 oder Anspruch 10, das Mittel aufweist, um als Antwort auf die erste Anweisung (S1, S2) einen Identifikator (ASID) des Benutzerprogramms (P) zu bestimmen, wobei das System auf Chip ferner ein erstes Wort (M1, M2) bilden kann, das den Identifikator enthält, und das erste Wort an den Datenbus (BD) anlegen kann, und bei dem der DMA-Controller (6), wenn das Signal, das ihm geliefert wird, den ersten Wert hat, das Register in Abhängigkeit von dem Identifikator auswählen kann, der in dem ersten Wort, das an den Datenbus angelegt wird, gegenwärtig ist.
  12. System auf Chip (1) nach einem der Ansprüche 9 bis 11, bei dem die erste Anweisung (S2) ferner ein Datenargument (argD) aufweist, das eine Größeninformation (t) anzeigt, und das System auf Chip die Größe in das erste Wort (M2), das an den Datenbus (BD) angelegt wird, einschließen kann, und bei dem der DMA-Controller (6), wenn das ihm gelieferte Signal den ersten Wert hat, ferner das Größenregister (10) auswählen kann, um die Größe des ersten Worts, das an den Datenbus angelegt wird, zu extrahieren, und die so extrahierte Größe in dem Größenregister speichern kann.
  13. System auf Chip (1) nach einem der Ansprüche 9 bis 12, bei dem: – die Einheit (9) Register des DMA-Controllers (6) ferner ein Zustandsregister (13) aufweist, und – das System auf Chip als Antwort auf eine zweite dedizierte bestimmte Anweisung (L), die von der Verarbeitungszentraleinheit (2) von einem Benutzerprogramm (P) empfangen wird, einen Identifikator (ASID) des Benutzerprogramms bestimmen und einerseits an den Adressbus (BA) ein zweites Wort (M3) anlegen kann, das den Identifikator enthält, und andererseits über die Signalübertragungsmittel ein Signal, das den ersten Wert hat, an den DMA-Controller liefern kann, und ein Signal, das den zweiten Wert hat, an die Einheiten (8) liefern kann, und – der DMA-Controller wenn das gelieferte Signal den ersten Wert hat, das Zustandsregister auswählen und den Inhalt des Zustandsregisters an den Datenbus (BD) anlegen kann.
  14. System auf Chip (1) nach einem der Ansprüche 9 bis 13, bei dem der DMA-Controller (6) eine Zuständemaschine (14) aufweist, wobei die Zuständemaschine ein Register der Einheit (9) mindestens aus dem Quellenregister (11) und dem Zielregister in Abhängigkeit von dem Fortschreiten der Zuständemaschine in einem geordneten Zuständezyklus (C) auswählen kann.
  15. System auf Chip (1) nach Anspruch 11 oder Anspruch 13, bei dem der Identifikator des Benutzerprogramms (P) ein Adressierungsraumidentifikator (ASID) ist, der in der Tabelle (T) der Speicherverwaltungseinheit (3) für jedes Benutzerprogramm des Systems auf Chip gespeichert ist und von der Speicherverwaltungseinheit geliefert wird, wenn sie einen Übersetzungsvorgang auf einer virtuellen Adresse (VA_SRC, VA_DEST) ausführt.
  16. System auf Chip (1) nach einem der Ansprüche 9 bis 15, bei dem die Mittel zum Übertragen von Signalen an die Einheiten (8) ein Signal (15b) liefern können, das zu dem Signal (15a), das an den DMA-Controller (6) geliefert wird, umgekehrt logisch ist.
DE602005002691T 2004-07-21 2005-07-07 Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür. Active DE602005002691T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0408084 2004-07-21
FR0408084A FR2873466A1 (fr) 2004-07-21 2004-07-21 Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe

Publications (2)

Publication Number Publication Date
DE602005002691D1 DE602005002691D1 (de) 2007-11-15
DE602005002691T2 true DE602005002691T2 (de) 2008-07-03

Family

ID=34942470

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005002691T Active DE602005002691T2 (de) 2004-07-21 2005-07-07 Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.

Country Status (4)

Country Link
US (1) US7467239B2 (de)
EP (1) EP1619590B1 (de)
DE (1) DE602005002691T2 (de)
FR (1) FR2873466A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US20090265723A1 (en) * 2006-08-31 2009-10-22 Hisayasu Mochizuki Electronic device and control method of the same
US8479264B2 (en) * 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
US8904189B1 (en) 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US9996348B2 (en) 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
JP2016534479A (ja) 2013-09-12 2016-11-04 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. マルウェアのランタイム中の自動検出
AU2015279923B9 (en) 2014-06-24 2018-01-25 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
AU2015279920B2 (en) 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
WO2017218872A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
FR3070514B1 (fr) * 2017-08-30 2019-09-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Controleur d'acces direct en memoire, dispositif et procede de reception, stockage et traitement de donnees correspondants
US11200062B2 (en) 2019-08-26 2021-12-14 Apple Inc. History file for previous register mapping storage and last reference indication
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849875A (en) 1987-03-03 1989-07-18 Tandon Corporation Computer address modification system with optional DMA paging
EP0447145B1 (de) * 1990-03-12 2000-07-12 Hewlett-Packard Company Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US5890220A (en) 1991-02-05 1999-03-30 Hitachi, Ltd. Address conversion apparatus accessible to both I/O devices and processor and having a reduced number of index buffers
JPH05216809A (ja) * 1992-02-06 1993-08-27 Nec Corp Dma転送方式
US5887190A (en) 1995-05-15 1999-03-23 Nvidia Corporation System for determining from a command storing in a storage circuit an application program which has initiated the command to determine an input/output device address
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US5659798A (en) 1996-02-02 1997-08-19 Blumrich; Matthias Augustin Method and system for initiating and loading DMA controller registers by using user-level programs
US6202106B1 (en) * 1998-09-09 2001-03-13 Xilinx, Inc. Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller
EP1182564A3 (de) * 2000-08-21 2004-07-28 Texas Instruments France Lokaler Speicher mit Anzeigesbits zur Unterstützung von gleichzeitigem DMA- und CPU-Zugriff

Also Published As

Publication number Publication date
US20060026311A1 (en) 2006-02-02
EP1619590B1 (de) 2007-10-03
FR2873466A1 (fr) 2006-01-27
DE602005002691D1 (de) 2007-11-15
US7467239B2 (en) 2008-12-16
EP1619590A1 (de) 2006-01-25

Similar Documents

Publication Publication Date Title
DE602005002691T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE602005003987T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE102006024655B4 (de) Speicherkarte und Speichersteuereinheit
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE2350884C2 (de) Adreßumsetzungseinheit
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE3607889C2 (de)
DE1774296C2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE3909896C2 (de)
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112005001512T5 (de) Vorrichtung und Verfahren für den hochschnellen Zugriff auf einen flüchtigen Plattenlaufwerkspeicher unter Einsatz einer integrierten Direkt-Speicherzugriffs-Einrichtung
DE2617408A1 (de) Datenverarbeitungsgeraet
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE112019002336T5 (de) Speicherpoolzuordnung für ein mehrkern-system
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE2503738A1 (de) Speicheranordnung mit haupt- und pufferspeicher
WO2007017373A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
EP0500973A1 (de) Initialisierungsroutine im EEPROM
DE2134816A1 (de) Einrichtung zur adressenuebersetzung
DE112005003216T5 (de) System und Verfahren für Steuerregister, auf die über private Rechenoperationen zugegriffen wird
WO2011134762A1 (de) Coprozessor mit aufgabenablaufsteuerung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M