-
Diese
Erfindung bezieht sich im Allgemeinen auf Mikroprozessoren und insbesondere
auf Verbesserungen in Direktspeicherzugriff-Schaltungen, Systemen
und Verfahren der Herstellung.
-
Mikroprozessoren
sind Mehrzweck-Prozessoren, die hohe Befehlsdurchsätze bereitstellen,
um die in ihnen ablaufende Software auszuführen, wobei sie, abhängig von
den speziellen beteiligten Software-Anwendungen, einen weiten Bereich
von Verarbeitungsanforderungen besitzen können. Einem Prozessor ist oft
ein Direktspeicherzugriff-Controller (DMA-Controller) zugeordnet,
um die Last des Übertragens
der Blöcke
der Daten von einem Speicher oder einem Peripherie-Betriebsmittel
zu einem anderen zu übernehmen
und dadurch die Leistung des Prozessors zu verbessern.
-
Es
sind viele verschiedene Typen von Prozessoren bekannt, von denen
die Mikroprozessoren nur ein Beispiel sind. Digitale Signalprozessoren
(DSPs) werden z. B. weit und breit verwendet, insbesondere für spezifische
Anwendungen, wie z. B. mobile Verarbeitungsanwendungen. Die DSPs
sind typischerweise konfiguriert, um die Leistung der betroffenen
Anwendungen zu optimieren, wobei sie spezialisiertere Ausführungseinheiten
und Befehlssätze
verwenden, um dies zu erreichen. Insbesondere, aber nicht ausschließlich in
Anwendungen, wie z. B. der mobilen Telekommunikation, ist es erwünscht, ständig zunehmende
DSP-Leistung bereitzustellen, während
die Leistungsaufnahme so niedrig wie möglich gehalten wird.
-
Die
vorliegende Erfindung offenbart Verbesserungen in der Leistung der
Prozessoren, wie z. B., aber nicht ausschließlich, digitaler Signalprozessoren.
-
Die
europäische
Patentanmeldung, Veröffentlichungs-Nr.
0486145, offenbart einen Mehrkanal-Direktspeicherzugriff-Controller
(Mehrkanal-DMA-Controller) für
Datenverarbeitungssysteme. Die Register und die Betriebsmittel,
die für
die Pipeline-Kommunikation der Daten und der Steuersignale bezüglich mehrerer
Kanäle verwendet
werden, werden adaptiv bezüglich
eines einzelnen Kanals geteilt, wenn bezüglich dieses Kanals eine Befehlsverkettung
erforderlich ist.
-
Gemäß einem
ersten Aspekt der Erfindung wird ein digitales System mit einem
Mehrkanal-Direktspeicherzugriff-Controller (Mehrkanal-DMA-Controller)
geschaffen, wobei der DMA-Controller mehrere Kanalschaltungen, wovon
jede wenigstens einen Kanaladressen-Ausgangsknoten, um eine Kanaladresse
bereitzustellen, und wenigstens einen Anforderungsausgang besitzt,
und mehrere Port-Schaltungen umfasst, wovon jede mehrere Kanaladressen-Eingangsknoten
besitzt, die mit einem entsprechenden Kanaladressen-Ausgangsknoten
der mehreren Kanalschaltungen verbunden sind, wobei jede Port-Schaltung
der mehreren Port-Schaltungen einen Speicheradressen-Ausgangsknoten
besitzt, um für
ein entsprechendes zugeordnetes Speicherbetriebsmittel eine Speicheradresse
bereitzustellen, die von den mehreren Adresseneingangsknoten ausgewählt ist.
In der Erfindung weist jeder Port ferner eine Ablaufsteuerschaltung
auf, die mit den Anforderungsausgängen der mehreren Kanalschaltungen
verbunden ist. Die Ablaufsteuerschaltung ist so betreibbar, dass
sie die nächste
Anforderung auswählt,
die durch den Port bedient wird, derart, dass die mehreren Port-Schaltungen so betreibbar
sind, dass sie gleichzeitig auf die entsprechenden zugeordneten
Speicherbetriebsmittel zugreifen. Jede Port-Schaltung umfasst ferner
eine Port-Steuerschaltung, die einen Kanalschnittstellenknoten,
der mit der entsprechenden Ablaufsteuerschaltung verbunden ist,
um eine ausgewählte
Kanaladresse zu empfangen, und einen Speicherschnittstellenknoten,
um die Speicheradresse und ein Protokoll für den Zugriff auf das entsprechende
zugeordnete Speicherbetriebsmittel bereitzustellen, besitzt, derart,
dass alle der mehreren Port-Steuerschaltungen gleiche Kanalschnittstellenknoten
besitzen.
-
Die
vorliegende Anmeldung offenbart ferner eine Ausführungsform der Erfindung, in
der jede Kanalschaltung einen FIFO-Puffer umfasst und bei dem wenigstens
eine der Port-Schaltungen so betreibbar ist, dass sie eine Burst-Übertragung
von Daten zwischen dem FIFO-Puffer einer ausgewählten Kanalschaltung und der
Speicherschaltung, die der wenigstens einen Port-Schaltung zugeordnet
ist, ausführt.
-
Die
vorliegende Anmeldung offenbart noch weiter eine Ausführungsform
der Erfindung, in der jede Kanalschaltung ferner eine Leseadressenschaltung
und eine gesonderte Schreibkanal-Adressenschaltung aufweist. Es
gibt einen gesonderten Bus, der zwischen jede Leseadressenschaltung
und die entsprechenden Kanaladressen-Eingangsknoten der mehreren
Port-Schaltungen geschaltet ist, und einen gesonderten Bus, der zwischen
jede Schreibadressenschaltung und die entsprechenden Kanaladressen-Eingangsknoten
der mehreren Port-Schaltungen geschaltet ist.
-
Die
anderen Ausführungsformen
des ersten Aspekts der Erfindung sind in den beigefügten Ansprüchen dargelegt.
-
Gemäß einem
zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Betreiben eines digitalen Systems, wie es oben angegeben worden
ist, geschaffen, das einen Mikroprozessor umfasst, wobei der Mikroprozessor
mit einer Mehrkanal-Direktspeicherzugriff-Schaltung verbunden ist,
die mehrere Kanalschaltungen und mehrere Port-Schaltungen besitzt,
wovon jede mit einem Speicherbetriebsmittel verbunden ist, um Datenwörter zu übertragen.
In den Kanalschaltungen werden mehrere anstehende Übertragungsanforderungen
mit Übertragungsadressen
gleichzeitig erzeugt. Die anstehenden Übertragungsanforderungen und die Übertragungsadressen
werden für
jede der mehreren Port-Schaltungen bereitgestellt. Der Betriebsablauf jedes
Ports wird durch Auswählen
einer Übertragungsanforderung
und eines Kanals aus den anstehenden Übertragungsanforderungen individuell
gesteuert. Zwischen jedem Port und dem ausgewählten Kanal wird eine Datenübertragung
derart ausgeführt,
dass alle der mehreren Ports ein angefordertes Datenwort im selben Taktzyklus übertragen.
-
Besondere
Ausführungsformen
gemäß der Erfindung
werden nun unter Bezugnahme auf die beigefügte Zeichnung lediglich beispielhaft
beschrieben, worin:
-
1 ein
Blockschaltplan eines digitalen Systems ist;
-
2 ein
ausführlicherer
Blockschaltplan einer Megazelle aus 1 ist;
-
3 ein ausführlicher Blockschaltplan des
DMA-Controllers nach 2 ist;
-
4 ein
Blockschaltplan eines Abschnitts des DMA-Controllers ist, der die
parallele Busstruktur veranschaulicht;
-
5 eine
graphische Darstellung der Aktivität ist, die ein Beispiel einer
Konfiguration für
den DMA-Controller veranschaulicht;
-
6 ein
Blockschaltplan ist, der die an der Ablaufsteuerung jedes Kanals
des DMA-Controllers beteiligten Betriebsmittel veranschaulicht;
-
7 eine
schematische Darstellung des Zeitablaufs ist, die eine Round-Robin-Ablaufsteuerung
im DMA-Controller veranschaulicht;
-
8 ein
DMA-Freigabe/Sperr-Steuerregister veranschaulicht;
-
9 ein
DMA-Kanalsteuerregister veranschaulicht;
-
10 ein
zusätzliches
DMA-Kanalregister veranschaulicht;
-
11 ein
DMA-Kanalzustandsregister veranschaulicht;
-
12 ein
DMA-Hauptdatenseitenregister veranschaulicht;
-
13 ein
DMA-Quelladressenregister veranschaulicht;
-
14 ein
DMA-Zieladressenregister veranschaulicht;
-
15 ein
DMA-Elementzählerstandregister
veranschaulicht;
-
16 ein
DMA-Rahmenzählerstandregister
veranschaulicht;
-
17 ein
DMA-Elementindexregister veranschaulicht;
-
18 ein
DMA-Elementrahmenindexadressenregister veranschaulicht;
-
19 ein
Ablaufplan ist, der den Betrieb des DMA-Controllers veranschaulicht;
-
20 ein
Blockschaltplan einer Adressenpipeline des DMA-Controllers ist;
-
21 ein Blockschaltplan einer Verschachtelungseinrichtungs-/Port-Pipeline
des DMA-Controllers ist;
-
22 ein
Ablaufplan ist, die eine Übertragung
von sechs Wörtern
vom SARAM-Port zum RHEA-Port veranschaulicht;
-
23 eine
schematische Darstellung einer integrierten Schaltung ist, die das
digitale System nach 1 enthält; und
-
24 eine
beispielhafte Implementierung eines Beispiels einer derartigen integrierten
Schaltung in einer Mobiltelekommunikationsvorrichtung, wie z. B.
einem Mobiltelephon, veranschaulicht.
-
Entsprechende
Zahlen und Symbole in den verschiedenen Figuren und Tabellen beziehen
sich auf entsprechende Teile, wenn nichts anderes angegeben ist.
Gleiche Bezugszeichen werden verwendet, um gleiche Teile zu bezeichnen,
in denen sich die Figuren auf das digitale System nach 1 und
den DMA-Controller nach 2 beziehen, wenn nichts anderes
angegeben ist.
-
Obwohl
die Ausführungsformen
der vorliegenden Erfindung spezielle Anwendung in digitalen Signalprozessoren
(DSPs) finden, die z. B. in einer anwendungsspezifischen integrierten
Schaltung (ASIC) implementiert sind, können sie außerdem in anderen Formen von
Prozessoren Anwendung finden. Eine ASIC kann eine oder mehrere Megazellen
enthalten, wovon jede kundenspezifische funktionale Schaltungen
enthält,
die mit den durch eine Entwicklungsbibliothek bereitgestellten im
Voraus konstruierten funktionalen Schaltungen kombiniert sind.
-
1 ist
ein Blockschaltplan eines digitalen Systems, das eine Ausführungsform
der vorliegenden Erfindung enthält.
Die Megazelle 100 enthält
eine CPU, einen DMA-Controller und Speicherschaltungen, wobei sie
später
ausführlich
beschrieben wird. Der Host-Prozessor 110 ist über eine
verbesserte Host-Port-Schnittstelle
(EHPI) 112 mit der Megazelle 100 verbunden. Die
EHPI 112 stellt die Multiplexierung des Host-Adressen- und
Daten-Busses 111 bereit, um die durch die Megazelle 100 bereitgestellte
Host-Port-Schnittstelle 115 anzupassen. Durch den Host-Prozessor 110 oder
die CPU innerhalb der Megazelle 100 kann auf den Speicher 122,
die Mehrzweck-Peripherievorrichtungen 132 und die dedizierten
Peripherievorrichtungen 134 zugegriffen werden. Die Steuer-Schaltungsanordnung 170 stellt
die Taktsignale für
die Schaltungsanordnung innerhalb der Megazelle 100 bereit.
Die MCU 110 enthält
ihre eigene Zeitgeber-Schaltungsanordnung, was erfordert, dass die
Zugriffe durch die im MCU 110 auf die durch die Megazelle 100 gesteuerten
Betriebsmittel mit der Zeitbasis der Megazelle 100 synchronisiert
werden müssen.
-
Der
JTAG-Prüf-Port 160 enthält Hardware-Erweiterungen
für fortgeschrittene
Fehlersuchmerkmale. Diese unterstützen die Entwicklung des Anwendungssystems
(Software und die Hardware) des Anwenders, das nur die JTAG-Schnittstelle,
einen Prüf-Zugriffs-Port
und die durch den IEEE-1149.1-Standard definierte Grenz-Abtast-Architektur
mit erweiterten Betriebsart-Verbesserungen verwendet, wie im US-Patent
5.828.824 beschrieben ist. Die Emulations-Schaltungsanordnung 150 stellt
die Fehlersuchprogrammsteuerung und die Ausführungsverfolgerungseinrichtungen
bereit.
-
2 ist
ein ausführlicher
Blockschaltplan der Megazelle 100. Die CPU 200 ist
ein digitaler Signalprozessor (DSP). Die CPU 200 greift über die
Speicherschnittstellenschaltung 202 auf die Speicherschaltungen 220, 222 und 224 zu.
Die CPU 200 greift über
die externe Speicherschnittstelle (EMIF) 120 auf den externen Speicher
zu. Die CPU 200 greift über
die RHEA-Brücke 230 zum
RHEA-Bus 130 auf die anderen Betriebsmittel zu. DMA-Controller 210 kann
ein Mehrkanal-DMA-Controller
mit gesonderten Kanal- und Port-Controllern sein, wobei jeder Port
eine lokale Ablaufsteuerschaltungsanordnung besitzt. Der DMA 210 kann
programmiert sein, um die Daten zwischen verschiedenen Quellen und
Zielen innerhalb des digitalen Systems 10, wie z. B. dem Einzelzugriffs-RAM 220,
dem Doppelzugriffs-RAM 222, dem externen Speicher 122 über die
externe Speicherschnittstelle 120 und den Peripherievorrichtungen
auf dem Betriebsmittelbus (RHEA) 130 über die RHEA-Brücke 230,
zu übertragen.
Die MCU 110 kann außerdem über die
Host-Port-Schnittstelle (HPI) 115, die mit dem DMA-Controller 210 verbunden
ist, auf diese Betriebsmittel zugreifen. Der Weg zwischen dem HPI-Port
und dem Speicher ist ein DMA-Kanal.
-
Die
Speicherschaltung 220 ist ein 128 k × 16-Einzelzugriffs-RAM (SARAM),
der sechzehn 32-kByte-Module umfasst. Der DMA 210 kann
durch einen 16-Bit-DMA-Bus
auf den SARAM zugreifen. Der DMA-Buszugriff (R/W) kann in der SAM-Betriebsart
(Gemeinschaftszugriff-Betriebsart) oder HOM-Betriebsart (Nur-Host-Betriebsart)
erfolgen. Ein Zugriff durch die MCU 110 in der HOM-Betriebsart
umgeht die Synchronisationsschaltungsanordnung innerhalb des DMA 210,
die die MCU-Taktung mit der Taktung der Megazelle 100 synchronisiert.
Das Prioritätsschema
zwischen der CPU 200 und dem DMA 210 ist programmierbar.
Die Prioritätsschaltungsanordnung
ist im SARAM implementiert, wohingegen sich das Steuerregister im DMA-IO-Raum
befindet, der über
den RHEA-Buszweig 130a zugänglich ist.
-
Die
Speicherschaltung 222 ist ein 32 k × 16-Doppelzugriffs-RAM (DARAM),
der vier 16-kByte-Module umfasst. Die CPU 200 kann in einem
Zyklus zwei Zugriffe auf ein DARAM-Speichermodul ausführen; z.
B. einen Einzel-Lesevorgang und einen Einzel-Schreibvorgang oder
einen langen Lesevorgang und einen langen Schreibvorgang, einen
Doppel-Lesevorgang und einen Einzel-Schreibvorgang usw. Die den
verschiedenen Zugriffen zugeordneten Prioritäten werden durch den DARAM
bearbeitet. Das Prioritätsschema
zwischen der CPU und dem DMA ist programmierbar. Die Prioritätsschaltungsanordnung
ist im DARAM implementiert, wohingegen sich das Steuerregister im
DMA-IO-Raum befindet, der über
den RHEA-Bus zugänglich
ist.
-
Alternative
Ausführungsformen
der Schaltungen und Systeme, die hierin offenbart sind, können andere
Konfigurationen des Speichers und der Peripherievorrichtungen besitzen.
-
2 zeigt
nur diejenigen Abschnitte der Megazelle 100, die für ein Verständnis einer
speziellen Ausführungsform
der vorliegenden Erfindung relevant sind. Die Einzelheiten der allgemeinen
Konstruktionen für DSPs
sind wohlbekannt, wobei sie leicht anderswo gefunden werden können. US-Patent
5.072.418, erteilt an Frederick Boutaud u. a., beschreibt z. B.
einen DSP ausführlich.
US-Patent 5.329.471,
erteilt an Gary Swoboda u. a., beschreibt ausführlich, wie ein DSP zu prüfen und
zu emulieren ist. Die Einzelheiten der Abschnitte des DMA-Controllers 210,
die für
eine Ausführungsform
der vorliegenden Erfindung relevant sind, sind im Folgenden ausreichend
ausführlich
erklärt,
um einem Durchschnittsfachmann auf dem Gebiet der Mikroprozessoren zu
ermöglichen,
die Erfindung auszuführen
und zu verwenden.
-
Die
Tabelle 1 fasst mehrere der überall
in diesem Dokument verwendeten Akronyme zusammen.
-
-
Tabelle
1 – Glossar
der Begriffe
-
Der
DMA-Controller 210 überträgt die Daten
zwischen den Punkten im Speicherraum ohne Eingriff durch die CPU.
Der DMA erlaubt, dass die Bewegungen der Daten zum und vom internen
Speicher, externen Speicher und zu und von den Peripherievorrichtungen
im Hintergrund der CPU-Operation geschehen. Der DMA besitzt sechs
unabhängige
programmierbare Kanäle,
die sechs verschiedene Kontexte für den DMA-Betrieb erlauben,
die in der Zeitvielfachzugriff-Betriebsart (TDM-Betriebsart) ausgeführt werden.
-
Die
DMA-Architektur ist um Ports und Kanäle organisiert. In 2 besitzt
jedes Betriebsmittel, auf das der DMA zugreifen kann, seinen eigenen
Port: den SARAM-Port 212a, den DARAM-Port 212b,
den EMIF-Port 212c und den RHEA-Port 212d. Der
HPI-Port 214 ist ein Spezialfall, der später erörtert wird.
Ein Port kann Lese- und Schreibzugriffe auf das Betriebsmittel,
mit dem er verbunden ist, durch einen dedizierten Bus ausführen.
-
Dieser
DMA-Controller deckt den Bedarf an einem Fluss mit hoher Rate und
an Mehrkanal-Anwendungen, wie z. B. der Basisstationen drahtloser
Telephone oder des Datenverkehrs eines Zellenhandapparats.
-
3 ist ein ausführlicher Blockschaltplan des
DMA-Controllers nach 2. Ein Kanal enthält einen Quell-Port,
einen FIFO und einen Ziel-Port. Gemäß einer Ausführungsform
der vorliegenden Erfindung können der
Quell-Port und der Ziel-Port
jedes Kanals dynamisch programmierbar sein. In der vorliegenden
Ausführungsform
sind sechs Kanäle
verfügbar,
obwohl andere Ausführungsformen eine
alternative Anzahl von Kanälen
aufweisen können.
Sechs Kanal-Controller 310–315 steuern die sechs
Kanäle.
Alle sechs Kanäle
werden über
die entsprechenden Port-Multiplexer 330–333 in jenem Port
multiplexiert. Jede Kanalsteuerung besitzt einen entsprechenden
FIFO(n). Die FIFOs werden nicht durch die Kanäle geteilt; jeder Kanal besitzt
seinen eigenen FIFO. Dies erlaubt mehr Unabhängigkeit zwischen den Übertragungen.
Eine DMA-Übertragung
im Kanal (n) wird in zwei Schritten ausgeführt: der Quell-Port führt einen
Lesezugriff auf ein Quell-Betriebsmittel aus, erhält die Daten
und setzt sie in den FIFO des Kanals (n); sobald sich die Daten
im FIFO befinden, wird der Ziel-Port aktiviert, wobei er einen Schreibzugriff
auf das Ziel-Betriebsmittel ausführt,
um die Daten zu schreiben. Jeder Kanal-Controller enthält eine
gesonderte Leseadresseneinheit RAU(0–5) und eine gesonderte Schreibadresseneinheit
WAU(0–5).
-
Alle
Ports arbeiten parallel. In dieser Ausführungsform sind vier Ports
mit den vier Datenspeicher-Betriebsmitteln verbunden, deshalb können im
selben Taktzyklus vier gleichzeitige Lese-/Schreibzugriffe ausgeführt werden.
Um diese Zugriffsrate zu unterstützen,
werden die Adressenberechnung und die Verschachtelung in einer Pipeline
verarbeitet. Die maximale Übertragungsrate
für diese
Ausführungsform
mit vier Ports beträgt
zwei Wörter
(zwei Lesevorgänge
und zwei Schreibvorgänge)
pro CPU-Zyklus. Dies wird erreicht, wenn die Quellen und die Ziele
unabhängig
sind. Eine alternative Ausführungsform
kann eine größere Anzahl
von Ports mit einer entsprechend höheren maximalen Übertragungsrate
aufweisen.
-
Ein
Leseadressenbus RA enthält
sieben einzelne Busse, um eine Kanalleseadresse von jeder Leseadresseneinheit
RAU(0–5)
und vom HPI-Port zu jedem Port-Eingangs-Multiplexer 330–333 parallel
zu befördern.
Ein Schreibadressenbus WA enthält
sieben einzelne Busse, um eine Kanalschreibadresse von jeder Schreibadresseneinheit
WAU(0–5)
und vom HPI-Port zu jedem Port-Eingangs-Multiplexer 330–333 parallel
zu befördern.
Gleichermaßen
enthält
ein Datenausgangsbus DO sieben einzelne Busse, um einen Datenausgangswert
von jedem FIFO(0–5)
und vom HPI-Port zu jedem Port-Eingangs-Multiplexer 330–333 parallel
zu befördern.
-
Ein
Dateneingangsbus DI enthält
vier einzelne Busse, um einen Dateneingangswert von jedem Port zu
jedem FIFO(0–5)
und zum HPI-Port parallel zu befördern.
-
Ein
DMA-Port sendet eine Anforderung an seinen zugeordneten Speicher,
um ein Datenelement in diesem Speicher zu lesen oder zu schreiben.
Eine Übertragung
von einem Wort besteht aus einer Leseanforderung an einem Quell-Port
i, gefolgt von einer Schreibanforderung an einen Ziel-Port j (i
kann gleich j sein). Eine Anforderung ist durch ihren Typ (r für Lesen,
w für Schreiben)
und den Kanal, zu dem sie gehört,
definiert.
-
Beispiel:
ri ist eine Leseanforderung im Kanal i,
wj ist eine Schreibanforderung im Kanal
j.
-
Jeder
Port besitzt seine eigene Verschachtelungseinrichtung 350–353,
um die Kanalmultiplexierung im zugeordneten Port zu steuern. Die
Verschachtelungseinrichtung empfängt
die Lese- und Schreibanforderungen von jedem Kanal, berechnet, was
die nächste
Anforderung ist, die bedient werden muss, und löst eine Port-Steuerungs-Zustandsmaschine
aus, um diese Anforderung zu bedienen.
-
Der
DMA-Controller 210 besitzt verteilte Anforderungs-Zuordnungseinrichtungen 340–343,
die jeweils dem Port zugeordnet sind. Es kann bis zu dreizehn Anforderungen
umgeben, die in irgendeinem gegebenen Taktzyklus anstehend sind:
sechs Leseanforderungen, sechs Schreibanforderungen und eine HPI-Anforderung.
Um die Komplexität
der Verschachtelungseinrichtung zu verringern, kann in der vorliegenden
Ausführungsform
eine Verschachtelungseinrichtung ein Maximum von fünf gleichzeitigen
Anforderungen gleichzeitig verschachteln. Die Anforderungs-Zuordnungseinrichtungen 340–343 tasten
die DMA-Konfiguration und die anstehenden Anforderungssignale auf
dem Anforderungsbus 345 ab und wählen ein Maximum von fünf Anforderungssignalen
aus, um sie an jede Verschachtelungseinrichtung für die Verarbeitung
zu senden. In einer alternativen Ausführungsform können die
Zuordnungseinrichtungen 340–343 in einer einzelnen
Zuordnungseinrichtungs-Schaltung zusammen gruppiert sein. In einer
weite ren Ausführungsform
kann eine komplexere Verschachtelungseinrichtung alle durch alle
Kanäle
bereitgestellten Anforderungen direkt empfangen und ihren Betriebsablauf
steuern.
-
Jeder
Port besitzt einen zugeordneten Port-Steuerblock 360–363.
Diese Blöcke
sind für
das Einleiten der Lese-/Schreibzugriffe auf die Speicher und Peripherievorrichtungen
verantwortlich. Sie implementieren das Transaktions-Zugriffsprotokoll
zwischen den Speichern oder Peripherievorrichtungen und dem DMA.
Diese Protokolle sind für
SARAM und DARAM die gleichen. Das RHEA-Busprotokoll und das EMIF-Protokoll
sind verschieden. Folglich ist jeder Port auf den Typ des Betriebsmittels
maßgeschneidert,
mit dem er verbunden ist.
-
Jeder
Kanal-Controller besitzt einen zugeordneten Prioritätsblock
PRIO(0–5).
Die Funktion dieses Blocks ist, ein im DMA verfügbares Prioritätsschema
mit drei Ebenen zu implementieren: die hohe Priorität für die HPI,
die hohe Priorität
für die
Kanäle
und die niedrige Priorität
für die
Kanäle.
-
Jeder
Kanal-Controller besitzt einen zugeordneten Ereignissynchronisationsblock
EVENT(0–5).
Jeder Ereignissynchronisationsblock wartet auf Ereignisse, die eine Übertragung
in seinem Kanal auslösen.
Jeder Block sucht außerdem
nach Ereignisabfällen.
-
Die
Kanal-FIFOs besitzen in dieser Ausführungsform jeder acht Stufen.
Die FIFO empfangen die von einem Quell-Port zu einem Ziel-Port übertragenen
Daten. Sie erlauben die Pipeline-Verarbeitung der DMA-Übertragungen
und die Burst-Übertragung
zu/von den externen Speichern. In allen Kanälen sind Bursts aus acht Datenwörtern möglich.
-
Der
Unterbrechungsgenerator 370 erzeugt die Unterbrechungen
für die
CPU entsprechend der DMA-Konfiguration und dem DMA-Zustand. Jeder
Kanal besitzt sein eigenes zugeordnetes Unterbrechungssignal dma_nirq(5-0).
-
Die
RHEA-Schnittstelle 380 schließt den RHEA-Bus 130a von
der RHEA-Brücke an.
Die RHEA-Schnittstelle 380 wird nur für CPU-Lesevorgänge und -Schreibvorgänge in die
DMA-Konfigurationsregister verwendet. Die DMA-Zugriffe auf die RHEA-Peripherievorrichtungen
werden durch den RHEA-Port, nicht durch die RHEA-Schnittstelle ausgeführt.
-
Die
Deskriptor-Blöcke
CFG(0–5)
werden verwendet, um den Zustand der DMA-Übertragungen zu steuern und
zu überwachen.
Es gibt einen Deskriptor-Block
pro Kanal. Sie werden über
die RHEA-Schnittstelle 380 gelesen/geschrieben.
-
Der
HPI-Port 214 erlaubt direkte Übertragungen zwischen dem HOST
und dem Speicher. Dieser Weg unterstützt die HOM- und SAM-Betriebsart.
In der HOM-Betriebsart werden die DMA-Register umgangen. Das Umschalten
von SAM zu HOM erfordert, dass der DMA-HOST-Kanal vor dem Umschalten
leer ist.
-
4 ist
ein Blockschaltplan eines Abschnitts eines DMA-Controllers 400,
der die parallele Busstruktur veranschaulicht. Der DMA-Controller 400 repräsentiert
den DMA-Controller 210, er ist jedoch vereinfacht, um die
parallele Busstruktur deutlicher zu veranschaulichen. Für die Klarheit
sind nur drei Kanal-Controller 410–412 und
zwei Ports 450–451 veranschaulicht.
Die Busse CP(0–2)
vom Kanal zum Port repräsentieren
die parallelen Busse, die im Leseadressenbus RA, im Schreibadressenbus
WA und im Datenausgangsbus DO nach 3 enthalten
sind. In dieser Figur ist für
die Klarheit nur der Leseadressenbus RA gezeigt. Gleichermaßen repräsentieren
die Busse PC(0–1)
vom Port zum Kanal die parallelen Busse, die im Dateneingangsbus DI
enthalten sind. Die Ablaufsteuerschaltungsanordnung 420 innerhalb
des Ports 450 enthält
eine Anforderungszuordnungseinrichtungs-Schaltungsanordnung, eine
Verschachtelungseinrichtungs-Schaltungsanordnung
und eine Multiplexerschaltungsanordnung und wählt einen der Busse CP(0–2) vom
Kanal zum Port aus, der in jedem Taktzyklus mit dem Port-Controller 460 zu
verbinden ist, um eine Adresse für
eine in jedem Taktzyklus ausgeführte
Transaktion bereitzustellen. Gleichermaßen enthält die Ablaufsteuerschaltungsanordnung 421 innerhalb
des Ports 451 eine Anforderungszuordnungseinrichtungs-Schaltungsanordnung,
eine Verschachtelungseinrichtungs- Schaltungsanordnung und eine Multiplexerschaltungsanordnung
und wählt
einen der Busse CP(0–2)
vom Kanal zum Port aus, der in jedem Taktzyklus mit dem Port-Controller 461 zu
verbinden ist, um eine Adresse für
eine in jedem Taktzyklus ausgeführte
Transaktion bereitzustellen. Vorteilhaft arbeitet jede Ablaufsteuereinrichtung 420–421 parallel,
wobei die Quell/Ziel-Adressenwörter über die
durch CP0–CP2 repräsentierten
parallelen Busse zu jeder Ablaufsteuereinrichtung parallel übertragen
werden. Vorteilhaft werden die Eingangs/Ausgangs-Datenwörter außerdem zu/von
jedem Port-Controller 460–461 parallel übertragen.
-
Die
CPU 403 stellt die Konfigurationsinformationen über den
Bus 404 dem DMA-Controller 400 bereit. Der erste
Port 460 ist mit dem Betriebsmittel 401 verbunden,
während
der zweite Port 461 mit einem zweiten Betriebsmittel 402 verbunden
ist. Der Port-Controller 460 ist maßgeschneidert, um ein durch
das Betriebsmittel 401 benötigtes Zugriffsprotokoll bereitzustellen,
während
der Port-Controller 461 maßgeschneidert
ist, um ein durch das Betriebsmittel 402 benötigtes Zugriffsprotokoll
bereitzustellen.
-
Eine
Kanalschnittstelle 470 innerhalb des Port-Controllers 460 empfängt die
ausgewählte
Kanaladresse und die Datensignale von der Ablaufsteuerschaltungsanordnung 420.
Die Kanalschnittstelle 471 innerhalb des Port-Controllers 461 empfängt die
ausgewählte
Kanaladresse und die Datensignale von der Ablaufsteuerschaltungsanordnung 421.
Die Speicherschnittstelle 472 innerhalb des Port-Controllers 460 schafft
eine Verbindung zum Speicherbetriebsmittel 401, um Adressen
und Daten zu übertragen.
Die Speicherschnittstelle 472 innerhalb des Port-Controllers 460 schafft
eine Verbindung zum Speicherbetriebsmittel 401, um Adressen und
Daten zu übertragen.
Die Kanalschnittstellen 470–471 in allen Ports
im DMA-Controller sollten völlig
gleich sein, während
die Speicherschnittstellen 472–473 maßgeschneidert
sein sollten, damit sie dem Übertragungsprotokoll
des zugeordneten Speicherbetriebsmittels entsprechen.
-
In
einer alternativen Ausführungsform
können
die Port-Controller 460–461 maßgeschneidert
sein, um ein von einem anderen Typ des Betriebsmittels benötigtes Zugriffsprotokoll
bereitzustellen. Vorteilhaft kann die Kanal- und Ab laufsteuer-Schaltungsanordnung
innerhalb des Kanal-Controller-Abschnitts 400a des DMA-Controllers 400 mit
verschiedenen Versionen der maßgeschneiderten
Port-Controller in Wechselwirkung treten, ohne modifiziert zu werden.
-
In 2 erlaubt
der DMA-Controller 210 acht Typen der Übertragungsbetriebsart für den internen Speicher,
den externen Speicher und die Peripherievorrichtungen durch jeden
Kanal, während
die EHPI vier Typen der Übertragungen
erlaubt, wie in der Tabelle 2 zusammengefasst ist. Die Datenübertragung
von Peripherievorrichtung zu Peripherievorrichtung, wie z. B. von
der Empfangsseite eines seriellen Ports zur Sendeseite eines weiteren
seriellen Ports, wird durch den DMA nicht direkt unterstützt. Der
Speicher muss als ein vorübergehender
Puffer verwendet werden, um die DMA-Übertragungen von Peripherievorrichtung
zu Peripherievorrichtung zu implementieren.
-
Tabelle
2 – Zusammenfassung
der Übertragungsbetriebsarten
-
Die
in der Tabelle 3 zusammengefassten Kanal-Deskriptoren werden verwendet,
um eine Übertragung im
Kanal i zu konfigurieren.
-
Tabelle
3 – Die
Kanal-Deskriptoren
-
Die
Tabelle 4 veranschaulicht eine Beispielkonfiguration der sechs Kanäle der vorliegenden
Ausführungsform,
die außerdem
in 5 veranschaulicht ist. In 5 ist jeder
Kanal durch die mit C(0–5)
beschrifteten Kästen
gezeigt; jeder Port ist durch die mit P(0–3) beschrifteten Kreise gezeigt
und jedes Betriebsmittel ist durch die mit M(0–3) beschriften Kästen gezeigt.
-
Tabelle
4 – Beispiel-DMA-Konfiguration
-
Vorteilhaft
gibt es keine Einschränkungen
in der DMA-Konfiguration. Ein Kanal kann an einem Port eine Schleife
bilden, wobei in diesem Fall derselbe Port die Quelle und das Ziel
für eine Übertragung
ist, was eine Kopie eines Datenblocks von einer Adresse zu einer
weiteren Adresse im selben Speicher erlaubt, z. B.: channel[i].src
= channel[i].dst. Irgendeine Anzahl von Kanälen kann zum selben Port zeitmultiplexiert
werden, z. B.: channel[0].src = channel[1].scr = channel[2].scr.
Alle Kanäle
können
eine Schleife zum selben Port bilden, z. B.: channel[i].src = channel[i].dst
= channel[j].src = channel[j].dst, für alle i ∈ {0, 1, 2, 3, 4, 5}, für alle j ∈ {0, 1,
2, 3, 4, 5}, i ≠ j.
-
Vorteilhaft
erlaubt diese Ausführungsform
des DMA-Controllers, dass zwei Übertragungen
völlig
parallel erfolgen, falls sie verschiedene Ports einschließen, z.
B.: channel[i].src = 0, channel[i].dst = 1, für i ∈ {0, 1, 2, 3, 4, 5}, channel[j].src
= 2, channel[j].dst = 3, für
j ∈ {0,
1, 2, 3, 4, 5}, i ≠ j.
-
Die Ablaufsteuerung
-
Um
die oben beschriebene Flexibilität
zu schaffen, besitzt jeder Port seine eigene Ablaufsteuerschaltungsanordnung.
Wenn mehrere Kanäle
Zugriff auf einen DMA-Port erlangen wollen, senden sie Anforderungen
an diesen Port. Der Port muss berechnen, welche Anforderung gleich
bedient wird, was hierin als Ablaufsteuerung bezeichnet wird.
-
Die
Anzahl der Anforderungen, deren Betriebsablauf ein Port steuern
muss, hängt
von der DMA-Konfiguration ab, wie sie durch die CPU für eine gegebene
Anwendung programmiert ist. Der Round-Robin-Dienst wird verwendet,
um sicherzustellen, dass alle auf den Dienst wartenden Anforderungen
bedient werden. Die Ablaufsteuerung ist unabhängig vom Betriebsmittel, mit
dem der Port verbunden ist; deshalb wird der gleiche Ablaufsteueralgorithmus
für alle
Ports verwendet. Wie "der
Betriebsablauf einer Anforderung wird gesteuert" hierin verwendet wird, bedeutet, dass
die Port-Ablaufsteuereinrichtung berechnet hat, welche Anforderung (unter
allen Anforderungen, die diesen Port benötigen) beim nächsten Taktzyklus
gleich bedient wird. "Eine
Anforderung wird quittiert" bedeutet,
dass ein Speicher ein Quittungssignal sendet, nachdem er eine Anforderung von
dem Port empfangen hat, mit dem er verbunden ist.
-
6 ist
ein Blockschaltplan, der die an der Ablaufsteuerung jedes Kanals
des DMA-Controllers beteiligten Betriebsmittel veranschaulicht.
Jeder Kanal besitzt zwei Zähler,
um den Zustand seines FIFO zu überwachen.
Ein FIFO_write_counter 610 des channel[i] zählt die
Anzahl der Schreibvorgänge,
die gleich im FIFO 600 ausgeführt werden. Er wird jedesmal
inkrementiert, wenn der Betriebsablauf einer Leseanforderung ri im Quell-Port 630 des Kanals i
gesteuert wird. Der FIFO_write_counter wird jedesmal dekrementiert,
wenn am Ziel-Port 632 des Kanals i eine Anforderung wi quittiert wird (d. h. jedesmal, wenn Daten
des Kanals i in den Zielspeicher 642 geschrieben werden).
Der Rücksetzwert
die ses Zählers
ist null. Der Kanal i erzeugt eine Schreibanforderung an einen Port
p, wenn es wenigstens ein Datenelement im FIFO des Kanals i gibt.
-
Ein
FIFO_read_counter 620 des channel[i] zählt die Anzahl der Datenelemente,
die im FIFO 600 gelesen werden können. Er wird jedesmal inkrementiert,
wenn am Quell-Port 630 des Kanals i eine Leseanforderung
ri quittiert wird (d. h. jedesmal, wenn
ein Datenelement aus dem Quellspeicher 640 gelesen wird).
Der FIFO_read_counter 620 des channel[i] wird jedesmal
dekrementiert, wenn der Betriebsablauf einer Schreibanforderung
wi am Ziel-Port 630 des Kanals
i gesteuert wird. Der Rücksetzwert
dieses Zählers
ist null. Der Kanal i erzeugt eine Leseanforderung an einen Port
p, wenn es wenigstens eine Stelle gibt, um die im FIFO 600 des Kanals
i gelesenen Daten zu speichern.
-
Eine
Schreibanforderung an den Ziel-Port kann nur auftreten, falls für den channel[i] FIFO_read_counter > 0 gilt, d. h., nur
nachdem eine Leseanforderung im Quell-Port bedient worden ist.
-
Die
Ablaufsteuereinrichtung tastet alle Register der Kanal-Deskriptoren
(Quelldeskriptor 650, Zieldeskriptor 652 und Freigabedeskriptor 654)
und die FIFO-Zähler
(FIFO_write_counter 610 und FIFO_read_counter 620)
ab, um festzustellen, ob Anforderungen warten, um bedient zu werden.
Jeder möglichen
Anforderung wird eine Anforderungskennung gegeben, d. h.: Leseanforderungs-Kennung des channel(i)
= i·2,
wobei i ∈ {0,
1, 2, 3, 4, 5} gilt, Schreibanforderungs-Kennung des channel(i)
= i·2
+ 1.
-
Die
Gesamtzahl der möglichen
aktiven Kanalanforderungen im DMA beträgt zweimal die Anzahl der Kanäle, weil
eine Schreib- und eine Leseanforderung in jedem Kanal möglich sind.
Außerdem
wird eine Anforderung vom HPI-Port als eine DMA-Kanalanforderung
behandelt. Falls es eine wartende Anforderung gibt, wird sie bedient.
Falls es mehrere wartende Anforderungen gibt, werden sie in einem
Round-Robin-Schema bedient: falls die Anforderung r die aktuelle
bediente Anforderung ist, ist die nächste bediente Anforderung:
request
(r + 1) mod REQUEST_NUMBER, falls diese Anforderung vorhanden ist
else
request (r + 2) mod REQUEST_NUMBER, falls diese Anforderung vorhanden
ist
else request (r + 3) mod REQUEST_NUMBER, falls diese Anforderung
vorhanden ist
...
else request (r + REQUEST_NUMBER) mod
REQUEST_NUMBER, falls diese Anforderung vorhanden ist
else
none
-
7 ist
eine schematische Darstellung des Zeitablaufs, die eine Round-Robin-Ablaufsteuerung
im DMA-Controller veranschaulicht. Eine bei 710 angegebene
Menge von Anforderungen wird in der bei 720 angegebenen
Reihenfolge bedient.
-
Der
Ablaufsteuerungsalgorithmus ist in der Tabelle 6 unter Verwendung
des Pseudo-Codes mit den in der Tabelle 5 definierten Begriffen
ausführlicher
beschrieben.
-
-
Tabelle
5 – Die
im Ablaufsteueralgorithmus verwendeten Begriffe
-
Tabelle
6 – Der
Ablaufsteueralgorithmus
-
Diese
Berechnung der Ablaufsteuerung wird in jedem der DMA-Ports in einem
Taktzyklus ausgeführt. Dieser
Algorithmus ist generisch, wobei er für alle DMA-Ports der gleiche
ist. Das einzige von jedem der Betriebsmittel benötigte Signal
ist ein Quittungssignal. Wenn das Betriebsmittel kein Quittungssignal
besitzt, dann wird eine bekannte vorhersagbare Reaktionszeit verwendet.
Es gibt keine direkte Kommunikation zwischen den Quell- und Ziel-Ports:
beide sehen nur die FIFO-Überwachungszähler. Folglich
passt sich die Ziel-Übertragungsrate
selbst der Quell-Leserate an. Der Ablaufsteuerungsalgorithmus arbeitet
mit jeder Anzahl von Kanälen;
die einzige Einschränkung
ist die Zeitdauer (Taktperiode), die verfügbar ist, um next_request zu
berechnen, und das für
zusätzliche
Transistoren verfügbare
Flächenbudget,
weil ein neuer Kanal einen neuen FIFO und eine neue Menge von Deskriptoren
hinzufügt.
-
Während des
Betriebs kann ein gegebener Port leicht spezialisiert werden, um
nur einen Kanal oder eine Teilmenge der Kanäle abzuwickeln, indem die unerwünschten
Kanäle
am gegebenen Port unter Verwendung des Freigabe-Deskriptor-Registers
gesperrt werden. In einer weiteren Ausführungsform kann ein gegebener
Port leicht spezialisiert werden, um nur einen Kanal oder eine Teilmenge
der Kanäle
abzuwickeln, indem die unerwünschten
Kanäle
am gegebenen Port permanent gesperrt werden.
-
Nun
werden die verschiedenen Steuerregister ausführlicher beschrieben. Die DMA-Steuerregister sind
in einem 64-KW-Peripherieraum der Megazelle 100 speicherkonform.
Alternative Ausführungsformen können die
Steuerregister in anderen Speicheradressenräumen unterbringen, oder es
kann z. B. direkt auf die Register zugegriffen werden. 8 veranschaulicht
ein einzelnes globales DMA-Kanal-Freigabe/Sperr-Steuerregister.
Die Tabelle 7 listet eine Menge von Steuerregister auf, die dem
DMA-Kanal zugeordnet sind.
-
Tabelle
7 – Die
jedem Kanal zugeordneten Steuerregister
-
In 8 ist
das DMA-Freigabe/Sperr-Steuerregister (DMEDC) ein 16-Bit-Lese-/Schreibregister.
Es enthält
die DMA-Übertragungsprioritäts- und
-Übertragungsfreigabe-Steuerung
für jeden
DMA-Kanal. Ein Feld für
das DMA-Freigabe/Sperr-Steuerbit (DE[5:0]) spezifiziert die DMA-Freigabe-/Sperrsteuerung
für jeden
Kanal (0 = gesperrt, 1 = freigegeben). Die DE[5:0]-Felder werden
beim Rücksetzen
auf null gesetzt.
-
Ein
Feld für
die Kanalpriorität
PRIO[5:0] definiert die Priorität
jedes Kanals: PRIO[i] = 0 gibt an, dass der Kanal i eine niedrige
Priorität
besitzt; PRIO[i] = 1 gibt an, dass der Kanal i eine hohe Priorität besitzt.
Ein Feld für
die HPI-Priorität
HPI[1:0] definiert die Priorität
des Host-Ports in Bezug auf die DMA-Kanäle. Wenn EHPI[1:0] = 10 oder
11 gilt, besitzt HPI die HÖCHSTE
Priorität
gegenüber
allen DMA-Kanälen,
wobei nur er auf den RAM auf dem Chip zugreifen kann. Die anderen
DMA-Kanäle
können
nicht auf den RAM auf dem Chip zugreifen. Wenn HPI[1:0] = 01 gilt,
ist die HPI in den TDM-Fluss des DMA-Kanals integriert und wird
als ein Kanal mit HOHER Priorität
behandelt. Wenn HPI[1:0] = 00 gilt, ist die HPI in den TDM-Fluss
des DMA-Kanals integriert und wird als ein Kanal mit NIEDRIGER Priorität behandelt.
Beim Rücksetzen
gilt HPI[1:0] = 11.
-
Die Übertragungen
aller Kanäle
werden in einer Round-Robin-Weise zeitmultiplexiert. In einer gegebenen
Round-Robin-Warteschlange wird jeder Kanal zum nächsten Kanal geschaltet, nachdem
sein Lesevorgang ausgelöst
worden ist. Die Kanäle
mit niedriger Priorität
sind solange anstehend, wie die Kanäle mit hoher Priorität ausgelöst werden
müssen.
Die Kanäle
mit niedriger Priorität
werden in einer Round-Robin-Weise ausgelöst, wenn die ereignissynchronisierten
Kanäle
mit hoher Priorität
auf Ereignisse warten und die nicht synchronisierten Kanäle mit hoher
Priorität
abgeschlossen sind.
-
In 8 spezifiziert
das Prioritätsbit
der CPU/DMA-Busse die Priorität
der CPU 200 in Bezug auf den DMA-Controller 210,
wenn beide auf dasselbe Speicherbetriebsmittel zugreifen. Wenn CPU/DMA
= 1 gilt, besitzen die Busse der CPU 200 Priorität gegenüber den
Bussen des DMA 210 für
alle internen und externen Speicherzugriffe. Wenn CPU/DMA = 0 gilt,
besitzen die Busse des DMA 210 Priorität gegenüber den Bussen der CPU 200 für alle internen
und externen Speicherzugriffe.
-
Ein
FREE-Bit steuert eine Freilauf-Betriebsart. Falls FREE = 1 gilt,
wird der Freilauf in der Situation ausgewählt, wenn z. B. in einer Fehlersucheinrichtung
einem Unterbrechungspunkt begegnet wird.
-
9 veranschaulicht
ein Kanalsteuerregister, wie es in der Tabelle 7 aufgelistet ist.
Das DMA-Kanalsteuerregister DMCCRn ist ein 16-Bit-Lese-/Schreibregister,
das den DMA-Betrieb seines zugeordneten Kanals steuert. Ein Feld
für die
DMA-Wort/Burst-Übertragungsbetriebsart
(WDBRT[1:0]) definiert die Elementgröße der Übertragung, wie in der Tabelle
8 angegeben ist.
-
Tabelle
8 – Die Übertragungsbetriebsart
-
Wenn
die 32-Bit-Wort- oder Burst-Übertragungsbetriebsart
freigegeben ist, werden zwei aufeinanderfolgende DMA-Übertragungen
ausgeführt,
wobei die DMA-Zustandsmaschine außerdem auf sie achtgeben wird.
Ungeachtet der Indexbetriebsart erzeugt die DMA-Adresseneinheit
die Adresse für
das höchstwertige Wort
(MSW) mit dem effektiven Adressenwert und die Adresse für das niedrigstwertige
Wort (LSW) durch das Invertieren des LSB der effektiven Adresse.
-
Die
Bits des Feldes für
die Übertragungsindex-Betriebsart
für die
Quelle (SIND[1:0]) und des Feldes für die Übertragungsbetriebsart für das Ziel
(DIND[1:0]) spezifizieren die Indexbetriebsart für die Adressierung, wie in
der Tabelle 9 angegeben ist. Die SIND- u. DIND-Bits werden beim
Rücksetzen
auf null gesetzt.
-
Tabelle
9 – Die Übertragungsindex-Betriebsart
-
Ein
Feld für
die DMA-Übertragungs-Quellraumauswahl
(SRC[1:0]) spezifiziert die Raumauswahl für die Quelladresse der Übertragung.
Ein Feld für
die DMA-Übertragungs-Zielraumauswahl
(DST[1:0]) spezifiziert die Raumauswahl für die Zieladresse der Übertragung,
wie in der Tabelle 10 angegeben ist. Eine weitere Ausführungsform
kann andere Betriebsmittel für
die Quelle/das Ziel besitzen.
-
Tabelle
10 – Die
Auswahl des Übertragungsraums
-
Ein
Rahmensynchronisationsbit steuert die Rahmensynchronisation. Wenn
FS = 0 gilt, ist die Rahmensynchronisation gesperrt, wobei die Elementsynchronisations-Betriebsart
freigegeben ist. Jede Elementübertragung
wartet, dass das ausgewählte
Ereignis auftritt, bevor fortgefahren wird. Wenn FS = 1 gilt, ist
die Rahmensynchronisation freigegeben. Jede Rahmenübertragung
wartet, dass das ausgewählte
Ereignis auftritt, bevor fortgefahren wird. Es ist nur ein Ereignis
notwendig, um die ganze Rahmenübertragung
(alle Rahmenelemente) zu synchronisieren.
-
Die
Elementsynchronisations-Betriebsart erfordert ein Ereignis pro Elementübertragung
(ein Element kann ein 16-Bit-Wort oder ein 32-Bit-Wort, ein Burst
aus 4·16
Bits oder 8·16
Bits sein, abhängig
von der gewählten
Elementgröße). In
einer Übertragung
in der 32-Bit-Betriebsart erfordert der DMA-Controller z. B. nur eine
Ereigniseingabe für
die aufeinanderfolgenden zwei 16-Bit-Wort-Übertragungen.
-
Die
Rahmensynchronisations-Betriebsart erfordert ein Ereignis, um die
ganze Rahmenübertragung auszulösen, was
der Übertragung
aller Rahmenelemente entspricht. Falls ein Kanal nicht ereignissynchronisiert
ist, wird eine Übertragung
in dem Kanal begonnen, wenn er in dem Round-Robin-Schema an der
Reihe ist.
-
Die
Bits des Synchronisationssteuerbit-Feldes (DSYN[4:0]) spezifizieren
das Ereignis, das die DMA-Übertragung
für den
entsprechenden DMA-Kanal einleiten kann. Das 5-Bit-Feld DSYN[4:0]
erlaubt viele Synchronisationsoptionen. Die Megazelle 100 besitzt
sechs externe Unterbrechungen, zwei Zeitgeberunterbrechungen und
vier Eingangsereignisse für
jede der drei Peripherievorrichtungen. Andere Ausführungsformen
können
verschiedene Ereignissynchronisationsoptionen besitzen. Das DSYN[4:0]-Feld
wird beim Rücksetzen
auf null gesetzt. Wenn es null ist, ist keine Ereignissynchronisation
vorgesehen.
-
10 veranschaulicht
das DMA-Kanalsteuerregister 2 (DMCCR2), das ein Lese-/Schreibregister
ist, das die Steuerung für
die Auslösung
der Unterbrechung für
den Kanal vom DMA zur CPU 200 bereitstellt. Eine DMA-Kanalunterbre chung
zur CPU kann ausgelöst
werden, wenn: ein Übertragungsblock
abgeschlossen ist UND/ODER ein Rahmen abgeschlossen ist UND/ODER
die 1. Hälfte
eines Rahmens abgeschlossen ist UND/ODER wenigstens letzte Rahmen
eines Blocks beginnt UND/ODER eine Synchronisation eines abgefallenen
Ereignisses aufgetreten ist. Jede Kombination aus diesen fünf verschiedenen
Bedingungen kann gewählt
werden, um die DMA-Kanalunterbrechung zur CPU auszulösen.
-
Das
AUTOINIT-Bit spezifiziert die automatische Initialisierungsbetriebsart,
die der DMA nach dem Abschluss einer Blockübertragung selbst automatisch
erneut initialisieren kann. Jeder Kanalkontext ist durch eine Menge
aktiver Register und eine Menge von Initialisierungs-/Neulade-Registern
definiert. Nur die Initialisierungs-/Neulade-Register sind für den Benutzer
sichtbar. Die aktiven Register werden nicht in den IO-Speicherraum
abgebildet. Beim Beginn einer Blockübertragung wird die Menge der
Initialisierungs-/Neulade-Register automatisch in die Menge der
aktiven Register kopiert, wobei die Übertragung beginnt. Am Ende
eines Blocks werden, wenn Auto-init = 0 gilt, dann die Kanalübertragungen
angehalten. Wenn Auto-init = 1 gilt, dann wird die Menge der Initialisierungs-/Neulade-Register
des Kanals zur Menge der aktiven Register des Kanals kopiert, wobei
der nächste Übertragungsblock
mit den durch diese neue Menge definierten Einstellungen begonnen
wird.
-
Für den kontinuierlichen
Betrieb kann die CPU 200 die Initialisierungs-/Neulade-Register ändern, während ein
aktueller Block ausgeführt
wird. Ein nächster
Block wird mit dem neuen Kontext übertragen, aber ohne den DMA
anzuhalten. Für
den sich wiederholenden Betrieb modifiziert die CPU 200 die
Initialisierungs-/Neulade-Register nicht. Derselbe Kontext wird
immer erneut verwendet. Durch Vorgabe wird die Menge der Initialisierungs-/Neulade-Register
zur Menge der aktiven Register initialisiert. In der vorliegenden
Ausführungsform benötigt ein
Neuladen vier Zyklen für
ein Neuladen während
des kontinuierlichen Betriebs.
-
In 10 wird
ein Kanalzustand-Löschbit
(CLEAR STATUS) verwendet, um die Kanalzustandsbits (im DMSTAT-Register)
zu löschen.
DMSTAT ist ein Nur- Lese-Register,
wobei es nur durch dieses Bit zurückgesetzt werden kann. CLEAR
STATUS kehrt automatisch zu null zurück, sobald DMSTAT gelöscht ist.
-
11 veranschaulicht
das DMA-Kanalzustandsregister (DMSTAT). Das DMSTAT ist ein Leseregister,
das den Status in der Auslösung
der Unterbrechung für
den Kanal vom DMA zur CPU bereitstellt. Das SYNC STATUS-Bit gibt
an, dass die Kanalsynchronisation empfangen worden ist.
-
Es
sind mehrere Zustandsbits verfügbar,
um die CPU über
signifikante Ereignisse oder potentielle Probleme im Betrieb des
DMA-Kanals zu informieren. Diese Zustände stehen in den 'STAT'-Bitfeldern des DMA-Zustandsregisters.
Derartige Ereignisse können
verwendet werden, um die Unterbrechung vom DMA zur CPU für den entsprechenden
Kanal auszulösen,
indem das Unterbrechungsfreigabe-Bitfeld 'IE' im DMCCR2-Register
gesetzt wird. Ein Zustandsbit wird nur aktualisiert, wenn sein entsprechendes
IE-Bit gesetzt wird. Das logische ODER aller freigegebenen Bedingungen
(mit Ausnahme von Zeitablauf) bildet das DMA-Kanalunterbrechungsignal
für die
CPU. Falls das Zeitablauf-IE-Bit gesetzt ist und ein Zeitablauf/Busfehler
auftritt, wird ein Zeitablauf/Busfehler-Signal an die CPU gesendet.
-
Nachdem
ein Statusbit gelesen worden ist, muss es dann durch die CPU gelöscht werden.
Das Löschen
wird ausgeführt,
indem 1 in das CLEAR STATUS-Bit
des DMCCR2n-Registers geschrieben wird. Die Tabelle 11 besitzt eine
Beschreibung jedes verfügbaren
Status/jeder verfügbaren
Bedingung.
-
Tabelle
11 – Die
Zustandsbits
-
12 veranschaulicht
ein DMA-Hauptdatenseitenregister DMMDPn. Der Adressenraum der CPU 200 ist
mit 23-Bit-Wörtern
adressierbar. Für
den Speicherzugriff wird eine Adresse in eine Hauptdatenseite, die die
7 MSB der 23-Bit-Adresse
aufweist, und in eine Adresse in der Seite, die die 16 LSB der 23-Bit-Adresse aufweist,
aufgeteilt.
-
Das
MDP_SRC wird für
den Speicherzugriff als die Übertragungsquelle
verwendet. Das MDP_DST wird für
den Speicherzugriff als das Übertragungsziel
verwendet. Dieses Register wird beim Rücksetzen nicht initialisiert.
Dieses Re gister kann während
einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMMDPn in sein Schattenregister bewegt.
-
13 veranschaulicht
ein DMA-Quelladressenregister DMSRCn. Das DMSRCn ist ein 16-Bit-Lese/Schreib-Register,
das die Quelladresse für
die nächste
DMA-Übertragung
enthält.
Dieses Register wird beim Rücksetzen
nicht initialisiert. Dieses Register kann während einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMSRCn in sein Schattenregister bewegt.
Falls die Quelle der interne oder externe Speicher ist, wird diese
16-Bit-Adresse mit den 7 Bits vom MDP_SRC verkettet, die im DMMDPn
gespeichert sind.
-
14 veranschaulicht
ein DMA-Zieladressenregister DMDSTn. Das DMDSTn ist ein 16-Bit-Lese/Schreib-Register,
das die Zieladresse für
die nächste
DMA-Übertragung
enthält.
Dieses Register wird beim Rücksetzen
nicht initialisiert. Dieses Register kann während einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMDSTn in sein Schattenregister bewegt.
Falls das Ziel der interne oder externe Speicher ist, wird diese
16-Bit-Adresse mit den 7 Bits vom MDP_DST verkettet, die im DMMDPn
gespeichert sind.
-
Wenn
der Quell- und/oder Zielraum der Speicher ist, sind mehrere Adressenerzeugungsschemata
vorhanden: die konstante Adressierung, das spätere Inkrementieren, das einzeln
indexierte spätere
Inkrementieren (Elementindex) und das mehrfach indexierte spätere Inkrementieren
(Elementindex u. Rahmenindex).
-
Die
kreisförmige
Adressierung ist implizit, wenn für den Kanal die automatische
Initialisierungsbetriebsart gewählt
ist. Für
das einzeln indexierte spätere
Inkrementieren ist pro Kanal ein Elementindexregister verfügbar und
kann für
das indexierte spätere
Inkrementieren des aktuellen Kanals verwendet werden. Für das mehrfach
indexierte spätere
Inkrementieren ist außer
dem Elementindexregister ein Rahmenindexregister pro Kanal verfügbar. Dies
erlaubt die flexible Sortierung von Mehrfachrahmen-Übertragungen.
-
15 veranschaulicht
ein DMA-Elementzählerstandregister
DMECn. Das DMA-Elementzählerstandregister
ist ein 16-Bit-Lese/Schreib-Register, das die Anzahl der Elemente
pro Rahmen im Kanalübertragungsblock
enthält.
Dieses 16-Bit-Register erlaubt die Spezifikation des vorzeichenlosen
16-Bit-Zählwertes. Die
Anzahl der zu übertragenen
Elemente kann zwischen 1 und 65535 festgelegt werden. Dieses Register
wird beim Rücksetzen
nicht initialisiert. Dieses Register kann während einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMECn in sein Schattenregister bewegt.
-
16 veranschaulicht
ein DMA-Rahmenzählerstandregister
DMFCn. Das DMA-Kanalrahmenzählerstandregister
ist ein 16-Bit-Lese/Schreib-Register, das die Gesamtzahl der Rahmen
enthält.
Der Rahmenzählerstand
kann von 1 bis 65535 gesetzt werden. Dieses Register wird beim Rücksetzen
nicht initialisiert. Dieses Register kann während einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMFCn in sein Schattenregister bewegt.
-
17 veranschaulicht
ein DMA-Elementindexregister DMEIDXn. Das DMA-Elementindexadressenregister
ist ein 16-Bit-Lese/Schreib-Register. Die Werte des Indexregisters
werden als der Elementindex für
Aktualisierungen der Quell-/Zieladressen verwendet. Die Werte im
DMEIDXn werden als ein vorzeichenbehafteter 16-Bit-Wert betrachtet.
Der Indexbereich reicht von –32768
bis 32767. Das DMEIDXn wird beim Rücksetzen nicht initialisiert.
Dieses Register kann während
einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMEIDX in sein Schattenregister bewegt.
-
18 veranschaulicht
ein DMA-Elementrahmenindexadressenregister DMFIDXn. Das DMA-Rahmenindexregister
ist ein 16-Bit-Lese/Schreib-Register.
-
Die
Werte des Rahmenindexregisters werden als der Rahmenindex für Aktualisierungen
der Quell-/Zieladressen verwendet. Die Werte im DMFRI0/1 werden
als ein vorzeichenbehafteter 16-Bit-Wert betrachtet. Der Indexbereich
reicht von –32768
bis 32767. Das DMFIDXn wird beim Rücksetzen nicht initialisiert. Dieses
Register kann während
einer DMA-Übertragung
geschrieben werden. Wenn das Ende des Blocks erreicht wird, falls
autoinit gesetzt ist, wird das DMFIDX in sein Schattenregister bewegt.
-
Die Ports
-
In 2 sind
die Ports 212(a-d) jeder mit einem spezifischen Speicherbetriebsmittel
verbunden. Jeder Port ist maßgeschneidert,
um die Wechselwirkungen mit dem Betriebsmittel zu unterstützen, mit
dem er verbunden ist. Die folgenden Abschnitte beschreiben die verschiedenen
Ports ausführlicher.
-
Der
RHEA-Port 212d wickelt das Kommunikationsprotokoll zwischen
dem DMA-Controller 210 und der RHEA-Brücke 230 ab. Das Protokoll
wird durch eine Zustandsmaschine angesteuert. Diese Zustandsmaschine
ist in der Tabelle 12 beschrieben.
-
Tabelle
12 – die
endliche Zustandsmaschine für
den Rhea-Port
-
Wenn
ein Abrechnen (Busfehler/Zeitablauf, even_drop oder Ungültigmachen
eines Kanals) auftritt, geht die Zustandsmaschine in den Abbruchzustand,
um das req-Signal inaktiv zu machen. Die RHEA-Brücke sendet ihr bus_error-Signal
immer mit einem bereit.
-
Der
SARAM-Port 212a und der DARAM-Port 212b wickeln
das Kommunikationsprotokoll zwischen dem DMA und der SARAM-Umlaufeinrichtung 220 bzw.
der DARAM-Umlaufeinrichtung 230 ab. Die Umlaufeinrichtung
enthält
die Speicherschaltungsanordnung und die Zugriffs/Steuer-Schaltungsanordnung,
um auf die Speicherschaltungsanordnung zuzugreifen. Diese Umlaufeinrichtungen
besitzen das gleiche Zugriffsprotokoll. Wenn die HPI 214 ein
hohes Prioritätsniveau
besitzt, besitzen die HPI-Anforderungen Priorität gegenüber den Anforderungen der Verschachtelungseinrichtung 350/351;
deshalb werden die Anforderungen der Verschachtelungseinrichtung
nur berücksichtigt,
falls es keine HPI-Anforderungen
mit hoher Priorität
ergibt. Das Protokoll für
jeden Port wird durch eine Zustandsmaschine angesteuert. Diese Zustandsmaschinen
sind in der Tabelle 13 beschrieben.
-
-
Tabelle
13 – Die
SARAM-, DARAM-Zustandsmaschine
-
Wenn
ein Abbrechen (Zeitablauf, event_drop oder Ungültigmachen eines Kanals) auftritt,
geht die Zustandsmaschine in den anfänglichen Wartezustand, um das
req-Signal inaktiv zu machen. Um die Zeitablauf-Ereignisse zu überwachen,
wird jedesmal, wenn eine neue Anforderung gesendet wird, ein Zähler gestartet.
Falls der Wert dieses Zählers
einen Schwellenwert erreicht, wird ein Zeitablauf signalisiert;
die aktuelle Anforderung wird abgebrochen und alle Kanalübertragungen
werden angehalten.
-
Der
EMIF-Port 212c wickelt das Kommunikationsprotokoll zwischen
dem DMA-Controller 210 und der externen Speicherschnittstelle 120 ab.
Er empfängt
die Anforderungen von der EMIF-Verschachtelungseinrichtung 352.
Die Burst-Zugriffe
werden im gleichen Schema wie für
die Wortzugriffe ausgeführt.
Alle Adressen werden ausgegeben, selbst wenn nur die erste benötigt wird.
Der einzige Unterschied ist der Wert des Burst-Codes. Das Protokoll
wird durch eine Zustandsmaschine angesteuert. Diese Zustandsmaschine
ist in der Tabelle 14 beschrieben.
-
-
Tabelle
14 – Die
endliche Zustandsmaschine des EMIF-Ports
-
Die
Zustandsmaschine des EMIF-Ports besitzt 7 Zustände:
- wait
- Warten auf eine Anforderung,
- req1
- Senden der ersten
Anforderung,
- req2
- Senden der zweiten
Anforderung,
- wait2
- Warten auf die Bereit-Begrenzung
für die
erste Anforderung,
- wait1
- Warten auf die Bereit-Begrenzung
für die
zweite Anforderung,
- abort2
- Abrechen der ersten
Anforderung,
- abort1
- Abrechen der zweiten
Anforderung. Im abort1-Zustand kann weder bereit noch Abbrechen
aktiv sein, weil abort1 nur vom abort2-Zustand erreicht wird, wenn
keine Anforderung gesendet wird.
-
In
alternativen Ausführungsformen
können
andere Typen der Speicherbetriebsmittel durch andere Ports aufgenommen
werden, die maßgeschneidert
sind, um die Protokollanforderungen des zugeordneten Speicherbetriebsmittels
zu erfüllen.
Vorteilhaft stellt jeder maßgeschneiderte
Port den DMA-Kanal-Controllern, wie z. B. 310–315,
dieselbe Schnittstelle bereit, sodass die Kanal-Controller mit diesen
anderen maßgeschneiderten
Ports kommunizieren können,
ohne modifiziert zu werden.
-
Die DMA-Pipeline
-
Der
DMA enthält
zwei gleichzeitige Pipelines: eine Adressenpipeline und eine Verschachtelungseinrichtungs-Pipeline.
In diesen Pipelines sind einige Stufen für einen Kanal allein, während einige
zwischen den Kanälen
geteilt werden. Die Verschachtelungseinrichtungs-Pipeline besteht
aus zwei Mengen von Stufen: die Lesestufen (Präfix R) und die Schreibstufen
(Präfix
W). Eine Ein-Wort-Übertragung
geht durch alle Stufen: die Lesestufen für die Leseanforderung und die
Schreibstufen für
die Schreibanforderung.
-
19 ist
ein Ablaufplan, der den Betrieb des DMA-Controllers beschreibt und
die verschiedenen Stufen der Pipeline bezeichnet. Die Tabelle 15
beschreibt die Stufen.
-
-
Tabelle
15 – Die
Stufen der DMA-Pipeline
-
Ein
Quell-Datenwort wird in der Stufe R_ACK vom bestimmten Quellspeicher
abgerufen. Das Quell-Datenwort wird in der Stufe W_ACK vom ausgewählten Zielspeicher
angenommen. Das Quell-Datenwort wird im Kanal-FIFO zwischen diesen
zwei Stufen gespeichert.
-
Jede
Adressenpipeline besteht aus fünf
Stufen für
die Leseadresse und fünf
Stufen für
die Schreibadresse. Diese Anzahl der Adressenstufen ist ausgewählt, damit
sie der Anzahl der Stufen in der Verschachtelungseinrichtungs-Pipeline
entspricht. Jede Adressenrohrstufe stimmt mit einer Stufe des Verschachtelungseinrichtungs-Rohrs überein.
Die Latenzzeit jeder DMA-Controller-Pipeline beträgt unter
der Voraussetzung, dass es keine Speicherwartezustände gibt,
einen Zyklus; d. h., es wird ein Datenwort in jedem Zyklus übertragen.
Die Verzögerung
beträgt
unter der Voraussetzung, dass es keine Speicherwartezustände gibt,
neun Zyklen. Eine Übertragung
benötigt
neun Zyklen. Während
es in der DMA-Pipeline
für jede
vollständige Übertragung
von einer Quelle zu einem Ziel zehn Stufen gibt, sind jedoch nur
neun Taktzyklen notwendig, um die Pipeline vollständig zu
durchqueren. Die erste Adresse einer Übertragung wird nicht berechnet,
sondern direkt unter Umgehung der Adressenstufe A0 in die Adressenstufe
A1 geladen.
-
Einige
der Pipelinestufen sind für
jeden Kanal allein (eine Stufe pro Kanal); die anderen werden zwischen
den Kanälen
multiplexiert. Die alleinigen Stufen der Verschachtelungseinrichtung
sind R_RDY und W_RDY; die alleinigen Adressenstufen sind R_A0, R_A1,
R_A2, W_A0, W_A1, W_A2. Die geteilten Stufen der Verschachtelungseinrichtung
sind: R_INTER, R_REQ, R_ACK, W_INTER, W_REQ, W_ACK; die geteilten Adressenstufen
sind: R_Aout, W_Aout.
-
In 19 zeigt
dieser Ablaufplan die Teilung der Pipelinestufen und den Datenfluss
für eine DMA-Übertragung 1900 im
Kanal 0 vom SARAM-Port 1901 zum RHEA-Port 1902.
In der R_RDY-Stufe 1920 werden die active_read- und read_ready-Signale
für den
Kanal 0 aktiviert. In der W_RDY-Stufe 1922 werden die active_write-
und write_read-Signale für
den Kanal 0 aktiviert.
-
Der
Block 1910, 1910a repräsentiert die Schreibadresseneinheit
0, während
der Block 1911 die Leseadresseneinheit 0 repräsentiert.
Der Block 1914 repräsentiert
die Verschachtelungseinrichtungs-Schaltungsanordnung für den SARAM-Port, während der
Block 1915 die Port-Controller-Schaltungsanordnung für den SARAM-Port
repräsentiert.
Der Block 1916 repräsentiert
die Verschachtelungseinrichtungs-Schaltungsanordnung für den RHEA-Port,
während
der Block 1917 die Port-Controller-Schaltungsanordnung
für den RHEA-Port
repräsentiert.
-
Die
Stufen R_INTER, R_REQ, R_ACK im SARAM-Port verwenden die gleiche
Logik wie die Stufen W_INTER, W_REQ, W_ACK des SARAM-Ports, wenn
er ein Ziel ist. Diese Stufen befinden sich in der SARAM-Verschachte lungseinrichtung
und im SARAM-Port. Die (nicht gezeigten) Multiplexer empfangenen
die read_ready-, read_active-, write_ready- und write_active-Signale
von jeden Kanal.
-
20 ist
ein Blockschaltplan einer Adressenpipeline des DMA-Controllers des
digitalen Systems 10. Dieses Rohr besitzt sowohl für die Lese-
als auch die Schreibadressen und für alle Kanäle die gleiche Struktur. Die
Stufen A0, A1, A2 und A3 bilden 12-mal im DMA eine Instanz (6 Kanäle, die
Lese- und Schreibanforderungen für
jeden Kanal). Die Stufe Aout ist in jedem DMA-Port vorhanden.
-
Die
Kanaladressenausgabe der Stufe A3 wird an jeden DMA-Port gesendet.
Der Multiplexer 2010 empfängt die Lesekanal-Adressenbusse 2011 von
allen Kanälen,
während
der Multiplexer 2012 die Schreibkanal-Adressenbusse 2013 von
allen Kanälen
empfängt.
Diese Multiplexer repräsentieren
einen Abschnitt der Multiplexer 330–333 in 3. Die Multiplexierung wird entsprechend
der in der Stufe REQ der entsprechenden Verschachtelungseinrichtungs-Rohrstufe
verarbeiteten Anforderung ausgeführt.
-
21 ist ein Blockschaltplan einer Verschachtelungseinrichtung/Port-Pipeline
des DMA-Controllers des digitalen Systems 10. Der Block 2100 enthält zwei
Verschachtelungseinrichtungs-Stufen RDY und INTER. Der Block 2110 enthält die zwei
Port-Stufen REQ und ACK. Die Multiplexer 2120a und 2120b empfangen
die Signale 2122a–c
von den Konfigurationsregistern, den FIFO-Zustandszählern, einer
Ereignis-Zustandsmaschine und der HPI und stellen sie der Bereit- und Aktiv-Schaltungsanordnung 2123 bereit,
um die Bereit- bzw. Aktiv-Signale von allen Adresseneinheiten zu
bilden. Die Bereit- und Aktiv-Signale werden der endlichen Verschachtelungseinrichtungs-Zustandsmaschine 2124 bereitgestellt,
die die Anforderung auswählt,
die durch den zugeordneten Port als Nächstes verarbeitet wird. Die
Verschachtelungseinrichtungs-Anforderungstabellen 2126a und 2126b speichern
den anstehenden Operationstyp bzw. Kanal. Eine ausgewählte Anforderung
zusammen mit dem Typ der Operation (Lesen, Schreiben) und der ausgewählte Kanal
werden jeweils auf den Signalleitungen 2128a–c der REQ-Stufe der Port-Steuerschaltungsanordnung 2110 bereitgestellt.
Gleichzeitig wird von der Verschachtelungseinrichtungs-Steuerschaltungsanordnung 2117 ein
Anforderungssignal zu dem Multiplexer 2010 oder 2012 gesendet,
um die geeignete Kanaladresse in Reaktion auf die Übertragung,
deren Betriebsablauf durch die Verschachtelungseinrichtung gesteuert
wird, auszuwählen.
Die ausgewählte
Adresse wird dann von der A_out-Stufe zu dem Speicherbetriebsmittel
gesendet, das dem Port zugeordnet ist. Ein Bereitsignal 2130 wird
dann durch den zugeordneten Speicher oder die zugeordnete RHEA-Brücke aktiviert,
um anzuzeigen, dass ein angefordertes Datenwort gelesen worden ist
und verfügbar
ist oder geschrieben worden ist.
-
22 ist
ein Ablaufplan, der eine Übertragung
von sechs Wörtern
vom SARAM-Port zum RHEA-Port veranschaulicht, die für eine typische Übertragung
zwischen irgendeinem Paar von Ports im digitalen System 10 repräsentativ
ist, wie z. B. in 19 veranschaulicht ist. In dieser
Figur bedeutet für
den Kanal-FIFO-Schreibzählerbefehl
w_com "+" inkrementieren,
während "–" dekrementieren bedeutet. Das Signal nw_cnt
gibt den nächsten
Zustand des Kanal-FIFO-Schreibzählers an.
Gleichermaßen
bedeutet für
den Kanal-FIFO-Lesezählerbefehl
r_com "+" inkrementieren,
während "–" dekrementieren bedeutet. Das Signal nr_cnt
gibt den nächsten
Zustand des Kanal-FIFO-Lesezählers
an.
-
Tabelle
16 – Die
Schreibweise für
Fig. 22
-
In 22 ist
die Übertragung
von sechs Wörtern
vom SARAM zu RHEA in einem als a bezeichneten Kanal veranschaulicht.
-
Die
Pipeline beginnt zum Zeitpunkt t0 mit dem Laden der anfänglichen
Adressen in den r_a1- und w_a2-Registern und des anfänglichen
Werts der Wort-, Element- und Rahmenzähler (Stufe r_a0, w_a0). Aus diesen
Werten werden die end_element-, end_block- und end_frame-Signale
berechnet. Wenn end_block nicht erreicht wird, geht read_ready (r_rdy-Stufe)
zu 1 über,
was erlaubt, dass die erste Anforderung a0 zum Zeitpunkt t2 verschachtelt
wird (r_inter-Stufe) und zum Zeitpunkt t3 ausgegeben wird (r_req-Stufe).
-
Gleichzeitig
breiten sich die Schreibadressen in der Schreibadressenpipeline
aus. Da sich immer noch keine Daten im FIFO befinden, bleibt write_ready
bei 0 (w_rdy-Stufe), wobei keine Anforderungen des Kanals a in der
Stufe w_inter verschachtelt werden. Dies erzeugt ein Stehenbleiben
der Verschachtelungseinrichtung für die Schreibadressenpipeline,
um die Ausbreitung der Schreibadressen anzuhalten.
-
Die
Daten werden zum Zeitpunkt t5 aus dem Speicher gelesenen und in
den FIFO geschrieben. Sobald zum Zeitpunkt t4 der nächste Zustand
des FIFO_read_counter 1 ist, geht zum Zeitpunkt t5 write_ready hoch,
wobei zum Zeitpunkt t6 die Verschachtelung der Schreibanforderungen
des Kanals a beginnt.
-
Wenn
zum Zeitpunkt t4 in der Stufe r_a0 die letzte Leseadresse des Sechs-Wort-Blocks erreicht
wird, wird zum Zeitpunkt t5 end_block signalisiert (Stufe r_a0).
Dies bewirkt, dass zum Zeitpunkt t7 read_ready tief geht (Stufe
r_rdy), wobei das Senden der Leseanforderungen bei t8 abgeschlossen
wird.
-
Sobald
das letzte zu schreibende Datenwort vom FIFO übertragen worden ist, geht
zum Zeitpunkt t11 der FIFO-Lesezähler
auf 0. Dies und das durch die w_a0-Stufe signalisierte end_block bewirken,
dass zum Zeitpunkt t11 das write_ready-Signal deaktiviert wird. Die letzte
verschachtelte Schreibanforderung a6 wird abgebrochen, wobei die
Sechs-Wort-Übertragung
zum Zeitpunkt t13 abgeschlossen ist.
-
Wenn
eine Anforderung in einem Kanal gesendet wird, müssen die FIFO-Zustandszähler dieses
Kanals aktualisiert werden. Dies wird durch den Verschachtelungs-Steuerblock 2127 ausgeführt, der
den FIFO_write_counter-Inkrementierungsbefehl (read_req_sent, w_com
+) und den FIFO_read_counter-Dekrementierungsbefehl (write_req_sent,
r_com –)
zum richtigen Kanal sendet.
-
Der
aktuelle Kanal in der INTER-Stufe wird mit jedem möglichen
Kanal verglichen. Ein Aktualisierungsbefehl wird nur in dem Kanal
gesendet, der dem aktuellen Kanal entspricht. Falls die Operation
ein Lesevorgang ist und falls es eine Verschachtelungseinrichtungs-Anforderung
in der aktuellen Stufe (irq = 1) gibt, wird das richtige read_req_sent
aktiviert. Falls die Operation ein Schreibvorgang ist und falls
es eine Verschachtelungseinrichtungs-Anforderung in der aktuellen
Stufe (irq = 1) gibt, wird das richtige write_req_sent aktiviert.
-
Ein
Stehenbleiben der Verschachtelungseinrichtung wird an alle Adressen-,
Ende-der-Übertragung- und
Ende-des-Elements-Pipelines in allen Kanälen gesendet, die gegenwärtig in
der INTER-Stufe nicht aktiv sind. Ein Signal write_inter_stall wird
an den Schreibabschnitt dieser Rohre gesendet, während ein Signal read_inter_stall
an den Leseabschnitt gesendet wird. Jedes Rohr empfängt diese
Befehle gleichzeitig von den vier Ports. Ein Rohr bleibt nur stehen,
falls die vier Befehle, die es empfängt, alle aktiv sind.
-
Wenn
in einem Kanal eine Anforderung quittiert wird, müssen die
FIFO-Zustandszähler
dieses Kanals aktualisiert werden. Dies wird durch den Quittungssteuerblock 2132 ausgeführt.
-
23 ist
eine schematische Darstellung einer integrierten Schaltung 40,
die den Prozessor 100 enthält. Wie gezeigt ist, enthält die integrierte
Schaltung mehrere Kontakte für
den Oberflächeneinbau.
Die integrierte Schaltung könnte
jedoch andere Konfigurationen enthalten, z. B. mehrere Anschlussstifte
auf einer unteren Oberfläche
der Schaltung für
den Einbau in einen steckkraftfreien Sockel oder in der Tat irgendeine
andere geeignete Konfiguration.
-
24 veranschaulicht
eine beispielhafte Implementierung eines Beispiels einer derartigen
integrierten Schaltung in einer Mobiltelekommunikationsvorrichtung,
wie z. B. einem Mobiltelephon, mit einer integrierten Tastatur 12 und
einer integrierten Anzeige 14. Wie in 24 gezeigt
ist, ist das in der integrierten Schaltung 40 enthaltene
digitale System 10 mit der Tastatur 12, wo es
geeignet ist über
einen (nicht gezeigten) Tastaturadapter, mit der Anzeige 14,
wo es geeignet ist über
einen (nicht gezeigten) Anzeigeadapter, und mit der Hochfrequenz-Schaltungsanordnung
(HF-Schaltungsanordnung) 16 verbunden. Die HF-Schaltungsanordnung 16 ist
mit einer Antenne 18 verbunden.
-
In 4 können in
einer alternativen Ausführungsform
die Ports maßgeschneidert
sein, um ein durch einen anderen Typ des Betriebsmittels benötigtes Zugriffsprotokoll
bereitzustellen. Vorteilhaft kann die Kanal- und Ablaufsteuerungs-Schaltungsanordnung
mit verschiedenen Versionen der maßgeschneiderten Ports in Wechselwirkung
treten, ohne modifiziert werden, weil die Kanalschnittstelle an
der Port-Steuerschaltung für alle
Ports die gleiche ist. Eine Entwicklungsbibliothek kann mit einer
Entwicklungszelle vorgesehen sein, die für den DMA-Kanal-Controller 400a repräsentativ
ist, die parametrisiert ist, sodass die Anzahl der Kanäle, die in
einer gegebenen ASIC-Entwicklung eine Instanz bilden soll, spezifiziert
werden kann. Die Entwicklungsbibliothek kann mit Entwicklungszellen
für verschiedene
Port-Controller versehen sein, wovon jeder eine Standard-Kanalschnittstelle
bereitstellen, die mit der Schnittstelle 470 kompatibel
ist, und die verschiedene Speicherschnittstellen besitzen. Andere
Port-Controller-Zellen
können
maßgeschneidert
werden, damit sie den Protokollanforderungen eines anderen Typs
des Speicherbetriebsmittels entsprechen. Die DMA-Kanal-Controller-Zelle
muss nicht modifiziert werden, um sie an die maßgeschneiderten Port-Controller
anzuschließen, weil
die Kanalschnittstellen alle kompatibel sind.
-
Die
Fertigung des digitalen Systems 10 umfasst mehrere Schritte
des Implantierens verschiedener Mengen von Störstellen in ein Halbleitersubstrat
und des Diffundierens der Störstellen
in ausgewählte
Tiefen innerhalb des Substrats, um Transistorvorrichtungen auszubilden.
Es werden Masken ausgebildet, um die An ordnung der Störstellen
zu steuern. Es werden mehrere Schichten leitenden Materials und
isolierenden Materials abgeschieden und geätzt, um die verschiedenen Vorrichtungen
zu verbinden. Diese Schritte werden in einer Reinraumumgebung ausgeführt.
-
Ein
signifikanter Teil der Kosten, um die Datenverarbeitungsvorrichtung
zu erzeugen, umfasst das Prüfen.
Die einzelnen Vorrichtungen werden in einen Betriebszustand vorgespannt
und mit einer Sonde auf die elementare betriebsfähige Funktionalität untersucht,
während
sie in einer Wafer-Form vorliegen. Der Wafer wird dann in einzelne
Chips getrennt, die als bloße
Chips oder eingekapselt verkauft werden können. Nach der Einkapselung
werden die fertiggestellten Teile in einen Betriebszustand vorgespannt
und auf betriebsfähige Funktionalität geprüft.
-
Das
digitale System 10 enthält
Hardware-Erweiterungen für
fortschrittliche Fehlersuche-Merkmale. Diese unterstützen die
Entwicklung eines Anwendungssystems. Weil diese Fähigkeiten
Teil des Kerns der CPU 200 selbst sind, sind sie unter
Verwendung nur der JTAG-Schnittstelle mit den Erweiterungen einer
erweiterten Betriebsart verfügbar.
Sie stellen einen einfachen, preiswerten und geschwindigkeitsunabhängigen Zugriff
auf den Kern für
die hochentwickelte Fehlersuche und die wirtschaftliche Systementwicklung
bereit, ohne die teuere Verdrahtung und den Zugriff auf die Prozessor-Anschlussstifte,
die durch herkömmliche
Emulatorsysteme erforderlich sind, und das Eindringen in Systembetriebsmittel
zu erfordern.
-
Folglich
wird ein digitales System mit einem Mehrkanal-DMA-Controller geschaffen,
um Daten zwischen verschiedenen Betriebsmitteln zu übertragen.
Für die
Leseadressen, Schreibadressen und Datenausgaben von jedem Kanal
zu jedem Port sind parallele Busse vom Kanal zum Port vorgesehen.
Für die
Dateneingaben von jedem Port in jeden Kanal sind parallele Busse
vom Port zum Kanal vorgesehen. Die Ablaufsteuerschaltungsanordnung
enthält
die Anforderungszuordnungseinrichtungs-Schaltungsanordnung, die
Verschachtelungseinrichtungs-Schaltungsanordnung und die Multiplexer-Schaltungsanordnung
und wählt
in jedem Taktzyklus einen der Busse vom Kanal zum Port aus, der
mit einem zugeordneten Port-Controller zu verbinden ist, um eine
Adresse für
eine in jedem Taktzyklus ausgeführte
Transaktion bereitzustellen. Die Ablaufsteuereinrichtungen arbeiten
parallel, wobei die Quell/Ziel-Kanaladressenwörter über die parallelen Busse vom
Kanal zum Port zu jeder Ablaufsteuereinrichtung parallel übertragen
werden. Die Eingangs/Ausgangs-Datenwörter werden außerdem zu/von
jedem Port parallel übertragen.
Jeder Port ist maßgeschneidert,
um ein durch sein zugeordnetes Betriebsmittel benötigtes Zugriffsprotokoll
bereitzustellen.
-
Die
Leistung wird durch die Bereitstellung mehrerer parallele Busse
optimiert, sodass alle Ports im selben Taktzyklus Daten von einem
zugeordneten Speicherbetriebsmittel lesen oder in es schreiben können. Eine neue Übertragungsadresse,
die entweder eine Leseadresse oder eine Schreibadresse sein kann,
kann in jedem Taktzyklus zu jedem Port gesendet werden, sodass alle
Ports gesonderte Ströme
der Daten parallel übertragen
können.
-
Die
Ports können
in verschiedenen Ausführungsformen
maßgeschneidert
sein, um ein durch einen anderen Typ des Betriebsmittels benötigtes Zugriffsprotokoll
bereitzustellen. Die Kanal- und Ablaufsteuerungs-Schaltungsanordnung
innerhalb eines Unterabschnitts des DMA-Controllers kann mit verschiedenen Versionen
der maßgeschneiderten
Ports in Wechselwirkung treten, ohne modifiziert zu werden.
-
Die
Begriffe "angelegt", "verbunden" und "Verbindung" bedeuten, wie sie
hierin verwendet werden, elektrisch verbunden, einschließlich des
Falls, in dem sich zusätzliche
Elemente im elektrischen Verbindungsweg befinden können. "Zugeordnet" bedeutet eine Steuerbeziehung,
wie z. B. ein Speicherbetriebsmittel, das durch einen zugeordneten
Port gesteuert wird.
-
Während die
Erfindung unter Bezugnahme auf veranschaulichende Ausführungsformen
beschrieben worden ist, ist nicht beabsichtigt, dass diese Beschreibung
in einem einschränkenden
Sinn ausgelegt wird.