-
QUERVERWEIS
AUF VERWANDTE ANMELDUNGEN
-
Diese
nicht vorläufige
US-Patentanmeldung beansprucht den Nutzen der vorläufigen US-Patentanmeldung
Nr. 60/231,421 mit der Bezeichnung „METHOD AND APPARATUS FOR
DISTRIBUTED DIRECT MEMORY ACCESS FOR SYSTEMS ON CHIP", die am 8. September
2000 von Ganapathy et al. eingereicht wurde, und die beide auf Intel
Corporation übertragen
worden sind
-
GEBIET DER
ERFINDUNG
-
Diese
Erfindung betrifft im allgemeinen direkte Speicherzugriffssteuerungen.
Insbesondere betrifft die Erfindung einen direkten Speicherzugriff
für ein
System auf einem Chip.
-
ALLGEMEINER
STAND DER TECHNIK
-
Innerhalb
eines Computersystems gibt es im allgemeinen drei Verfahren zum
Datentransfer zwischen einem Hauptspeicher oder den Registern einer
zentralen Verarbeitungseinheit (CPU) und Eingabe-/Ausgabe (I/O)-Vorrichtungen über einen
Systembus. Diese drei Verfahren sind die programmierte I/O, die
unterbrochen angetriebene I/O und der direkte Speicherzugriff (DMA).
Bei der programmierten I/O und der unterbrochen angetriebenen I/O
ist die CPU für
den Erhalt von Daten aus dem Hauptspeicher zum Transfer zu den I/O-Vorrichtungen
und für
den Erhalt von Daten aus den I/O-Vorrichtungen zum Transfer zu dem
Hauptspeicher über
den Systembus verantwortlich. Folglich erfordern die programmierte I/O
und die unterbrochen angetriebene I/O die direkte Einbeziehung der
CPU, welche sie einspannt und den Datentransfer derart verwaltet,
daß sie
ansonsten keine anderen wichtigeren Funktionen ausführen können.
-
Der
direkte Speicherzugriff (DMA) wurde eingeführt und erforderte eine zentralisierte
DMA-Steuerung, um die CPU-Mitwirkung bei dem Datentransfer abzuschwächen. Die
zentralisierte DMA-Steuerung ist gut bekannt. Die zentralisierte
DMA-Steuerung übernahm
im wesentlichen die Rolle der Übertragung
von Daten über
den Systembus zwischen dem Hauptspeicher und I/O-Vorrichtungen.
Bei DMA-Zugriffen wurde die CPU-Mitwirkung
auf das anfängliche
Aufbauen des DMA-Transfers und die Reinigung bei Vollendung des
DMA-Transfers reduziert. Während
der tatsächliche
DMA-Datentransfer durch
die DMA-Steuerung gesteuert wurde, konnte die CPU andere Berechnungen
oder Funktionen ausführen.
Folglich war der DMA-Datentransfer effizienter als die Verfahren
der programmierten I/O oder der unterbrochen angetriebenen I/O.
Um Kollisionen auf dem Systembus zu vermeiden, wurde die DMA-Steuerung in eine
zentralisierte DMA-Steuerung zentralisiert. Die zentralisierte DMA-Steuerung vermittelte zwischen
dem Systembus und den angeschlossenen I/O-Vorrichtungen und gestattete nur jeweils
einer gleichzeitig, Daten zwischen ihr und dem Hauptspeicher zu übertragen.
Wenn darüber
hinaus eine Vielzahl von I/O-Vorrichtungen
gewünscht
wurde, um einen DMA-Zugriff gleichzeitig auszuführen, mußte die zentralisierte DMA-Steuerung
ein bestimmtes Priorisierungsverfahren ausführen. Folglich kann die Steuerlogik
der zentralisierten DMA-Steuerung recht kompliziert sein, was zu
einer recht großen
Blockgröße der Schaltung
einer zentralisierten DMA-Steuerung führen kann.
-
Verbesserte
Halbleiterherstellungstechniken waren das Verkleinern der Merkmalsgrößen in integrierten
Schaltungen wie der Transistorkanallängen. Die kleineren Transistoren
ermöglichten
den Bau von komplizierteren integrierten Schaltungschips, so daß funktionelle
Systeme nun innerhalb eines einzigen integrierten Schaltungschips
gebildet werden können und
zufriedenstellende Leistungen hervorbringen. Diese funktionellen
Systeme, die im wesentlichen vollständige Systeme sind, werden
häufig
als ein System auf einem Chip (SOC) bezeichnet. In einem SOC kann
es viele funktionelle Blöcke
geben, die den Transfer von Daten zu oder aus einem Speicher erfordern.
Außerdem
ist es bei der Konstruktion eines SOCs oft wünschenswert, es flexibel zu
machen, so daß die
Anzahl funktioneller Blöcke
erweitert werden kann, um mehr Daten zu verwalten und/oder andere Typen
funktioneller Blöcke
hinzuzufügen.
Mit der Zunahme der Anzahl funktioneller Blöcke nehmen die potentiellen
Vermittlungsprobleme in einem SOC zu. Ein Nachteil der Benutzung
einer zentralisierten DMA-Steuerung ist in diesem Fall, daß die Steuerlogik
möglicherweise
neugestaltet werden muß,
um die Erweiterung bereitzustellen.
-
GB 2 195 038 A offenbart
ein Mehrprozessorsystem mit einer Vielzahl von Computermodulen, die
mit einem gemeinsamen Systembus verbunden sind. Jedes Computermodul
umfaßt
eine DMA-Steuerung, eine First-In-First-Out-Einheit und einen gemeinsamen
Speicher, um auf den Systembus zuzugreifen. Die First-In-First-Out-Einheit und der gemeinsame
Speicher sind mit dem Systembus durch Schnittstellenlogikeinheiten
verbunden, die eine Vermittlungslogik umfassen.
-
Der
Gegenstand der vorliegenden Erfindung wird durch ein System nach
Anspruch 1 und ein Verfahren nach Anspruch 5 definiert.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines Systems auf einem Chip der vorliegenden
Erfindung.
-
2 ist
ein detailliertes Blockdiagramm eines Sprachübermittlungspaket (VOP)-Systems auf einem
Chip der vorliegenden Erfindung.
-
3 ist
ein Blockdiagramm eines Beispiels eines Kernprozessors, der eine
direkte Speicherzugriffssteuerung (DMA) des Kerns aufweist, die
in 2 dargestellt ist.
-
4 ist
ein beispielhaftes Speicherabbildungsdiagramm des globalen Pufferspeichers,
der DMA-Daten aufweist, die DMA-Anfangs- und DMA-Endadreßstellen und eine DMA-Deskriptortabelle
aufweisen, welche die DMA-Daten beschreibt, die in dem globalen
Pufferspeicher gespeichert sind.
-
5 ist
ein Blockdiagramm einer seriellen DMA-Steuerung aus 2.
-
6A ist
ein beispielhafter serieller Datenstrom von Rahmen von Daten, die
durch den seriellen Mehrkanalanschluß aus 2 gesendet
oder empfangen werden.
-
6B ist
eine beispielhafte Neuabbildung von Rahmen von Daten für den seriellen
Mehrkanalanschluß,
die von dem TDM-Neuabbildungsspeicher aus 5 ausgeführt wird.
-
7 ist
ein Blockdiagramm einer DMA-Kernsteuerung aus 2.
-
8 ist
ein Blockdiagramm einer DMA-Hoststeuerung aus 2.
-
Ähnliche
Bezugzeichen und Bezeichnungen in den Zeichnungen zeigen ähnliche
Elemente an, welche eine ähnliche
Funktionalität
bereitstellen. Ein Buchstabe nach einem Bezugszeichen steht für ein Beispiel
eines Elements, das das Bezugszeichen aufweist.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORM
-
In
der folgenden ausführlichen
Beschreibung der vorliegenden Erfindung werden zahlreiche spezifische
Details dargestellt, um ein gründliches
Verständnis
der vorliegenden Erfindung bereitzustellen. Für den Fachmann wird es jedoch
offensichtlich sein, daß die
Erfindung ohne diese spezifischen Details in die Praxis umgesetzt
werden kann. An anderen Stellen sind gut bekannte Verfahren, Vorgehensweisen, Bestandteile
und Schaltungen nicht im Detail beschrieben worden, um die Aspekte
der vorliegenden Erfindung nicht unnötig zu verdunkeln.
-
Ein
Verfahren, eine Vorrichtung und ein System eines verteilten direkten
Speicherzugriffs (DMA) werden innerhalb eines Systems auf einem
Chip (SOC) bereitgestellt. DMA-Steuereinheiten werden auf funktionelle
Module verteilt, welche einen direkten Speicherzugriff auf einen
globalen Pufferspeicher wünschen.
Die DMA-Steuereinheiten
richten darüber,
welcher funktionelle Block auf den globalen Pufferspeicher Zugriff
hat. Die funktionellen Module sind mit einem Systembus verknüpft, über den
der direkte Speicherzugriff stattfindet. Der globale Pufferspeicher,
auf welchen der direkte Speicherzugriff gewünscht wird, ist mit dem Systembus
verbunden. Busvermittler werden benutzt, um zu vermitteln, welche
funktionellen Module auf den Systembus Zugriff haben, um den direkten
Speicherzugriff auszuführen. Sobald
ein funktionelles Modul von dem Busvermittler ausgewählt worden
ist, um auf den Systembus zuzugreifen, kann es eine DMA-Routine
mit dem globalen Pufferspeicher erstellen.
-
Mit
Bezug auf 1 ist ein Blockdiagramm eines
Systems auf einem Chip (SOC) dargestellt. Das System auf einem Chip
(SOC) 100 ist in einer Ausführungsform ein Sprachübermittlungspaket (VOP)-System,
das einen seriellen Vollduplex-Mehrkanalanschluß, um mit
einem Telefonnetzwerk über eine
Verbindung verbunden zu werden, und einen anderen Anschluß aufweist,
um mit einem Paketnetzwerk durch eine andere Verbindung verbunden zu
werden. Das Telefonnetzwerk ist in einer Ausführungsform ein PSTN-Telefonnetzwerk
mit einem seriellen TDM-Datenstrom.
-
Mit
Bezug auf 2 ist ein detailliertes Blockdiagramm
des Sprachübermittlungspaket-Systems
auf einem Chip (VOP-SOC) 100 dargestellt. Das Sprachübermittlungspaket-System
auf einem Chip 100 weist einen zentralen Systembus 200 auf, der
mit einem globalen Pufferspeicher 210 verbunden ist. Der
Systembus 200 ist ein standardgemäßer Systembus, der leitfähige Ablaufverfolgungen
oder Drähte
für Adreßsignale,
Datensignale und Steuersignale aufweist. Die Adreßleitungen
werden von dem Bus benutzt, um DMA-Übertragungen auszuführen. Der
Bus bündelt
gleichzeitig eine Anzahl von DMA-Transaktionen im Multiplexverfahren
und befaßt
sich jeweils nur mit einer Transaktion zu einem bestimmten Zeitpunkt.
Folglich wird für
diesen Transfer (Lesen oder Schreiben) ein Satz von Adreßleitungen
benötigt.
Die Adreß-
und Datenleitungen sind unterschiedlich. Die Busbreite des Systembusses 200 für die Datensignale
weist in einer Ausführungsform eine
Datensystembusbreite (DSBW) von vierundsechzig Bits auf. Eine vierundsechzig
Bit breite Datensystembusbreite ermöglicht Datenübertragungen von
hoher Bandbreite. Der Zugriff auf den zentralen Systembus 200 durch
die Funktionsmodule des Systems auf einem Chip 100 wird
durch den Busvermittler 201A-201N vermittelt, der mit dem
Systembus 200 verbunden ist, indem ein einheitliches programmierbares
Vermittlungsprotokoll benutzt wird. Der standardgemäße Systembus 200 und
das einheitliche Vermittlungsprotokoll, das von den Busvermittlern 201A-201N geliefert
wird, vereinfachen die Vermittlung des Systembusses 200.
Um auf den globalen Pufferspeicher 210 Zugriff zu bekommen,
müssen
die funktionellen Module des Systems auf einem Chip 100 zuerst
Zugriff auf den Systembus 200 durch die Busvermittler 201A-201N bekommen.
Ein Round-Robin-Vermittlungsschema auf dem Systembus 200 gewährleistet,
daß jede
der verteilten DMA-Hauptsteuerungen 203A-203N, 207 und 215 hin
und wieder Zugriff auf den Systembus 200 haben und auf
den globalen Speicher 210 zu diesem Zeitpunkt zugreifen
können.
-
Alle
Code-, Daten- und Zustandsinformationen für das VOP-SOC 100 werden
in dem globalen Pufferspeicher 210, der als ein zentraler
Aufbewahrungsort fungiert, gespeichert und davon gelesen. Folglich
ist es wichtig und wünschenswert,
Informationen in und aus dem globalen Pufferspeicher 210 über den
Systembus 200 effizient zu übertragen, indem ein System
mit einem verteilten direkten Speicherzugriff (DMA) der vorliegenden
Erfindung benutzt wird. Während
die Busvermittler auf den Systembus zugreifen, vermittelt das verteilte
DMA-System den Zugriff auf den globalen Pufferspeicher 210. Der
globale Speicher 210 ist ein den verteilten DMA-Hauptsteuerungen
in dem System auf einem Chip 100 untergeordnete Einheit
und weist eine untergeordnete DMA-Schnittstelle auf. Der globale
Pufferspeicher 210 antwortet auf die DMA-Transferanfrage über den
Systembus 200, der von den verteilten DMA-Steuerungen initiiert
wird. Das verteilte DMA-System ermöglicht, daß die funktionellen Module
ihre eigenen Adressen für
den globalen Pufferspeicher erzeugen, und vermeiden, daß bei jedem Zyklus
ständig
Befehle gesendet werden, um auf große Datenblöcke zuzugreifen. Während eines
DMAs wird ein Register eingerichtet, das ermöglicht, daß Adressen automatisch erzeugt
werden und auf eine Vielzahl von Datenblöcken oder Bytes sequentiell
zugegriffen wird. Die funktionellen Module des Systems auf einem
Chip 100, welche einen direkten Speicherzugriff auf den
globalen Pufferspeicher 210 wünschen, weisen einen oder mehrere
Signalkernprozessoren 202A-202N, einen seriellen Vollduplex-Mehrkanalanschluß 206 zum
Verbinden mit einem Telfonnetzwerk und einen Hostanschluß 214 zum
Verbinden mit einem Host und einem Paketnetzwerk auf. Der globale
Pufferspeicher 210 des SOCs 100 ist mit dem zentralen
Systembus 200 verbunden.
-
Die
Module des Systems auf einem Chip 100, welche einen direkten
Speicherzugriff zu dem globalen Pufferspeicher 210 wünschen,
weisen außer
der Mikrosteuerung 223 ihre eigenen direkten Speicherzugriffs
(DMA)-Steuerungen auf. Die Mikrosteuerung 223 ist mit dem
Systembus 200 durch eine Busschnittstelle 224 und
einen Busvermittler 201C verbunden. Die Mikrosteuerung 223 fungiert
als ein System- oder Betriebsleiter, der die Ablaufsteuerung von
Aufgaben und den Datenstrom aus dem seriellen Anschluß 206 und
dem Hostanschluß 214 dirigiert. Sie
erfordert keine DMA-Steuerung, sondern erzeugt Cachezeilen-Verlusteinheiten
für Befehle
und Daten, die zu dem globalen Speicher 210 geleitet werden. Die
Mikrosteuerung weist einen Datencache 227 und einen Befehlscache 223 auf,
der damit assoziiert ist, welche die Erzeugung von Cachezeilen-Verlusteinheiten
bewirken. Die Mikrosteuerung erstellt DMA-Deskriptoren und befiehlt den einzelnen
funktionellen Einheiten des SOCs 100, die DMA-Übertragungen
auszuführen.
Der Busvermittler 201C und die Busschnittstelle 224 kommunizieren
miteinander, damit die Mikrosteuerung auf den Systembus Zugriff
erhält.
Die Mikrosteuerung 223 stellt eine Auftragssteuerung bereit
und dirigiert die Datenübertragungen
in und aus dem globalen Pufferspeicher 210, der als ein Datenverkehrspolizist
fungiert. Die Mikrosteuerung 223 erstellt einen DMA durch
Schreiben einer DMA-Deskriptorliste bezüglich des DMA-Datentransfers
in den globalen Pufferspeicher. Sie kommuniziert dann mit der funktionellen
Einheit, um den DMA der Daten auszuführen, indem sie auf die Anfangsadresse
der DMA-Deskriptorliste zeigt. Die funktionelle Einheit liest die
DMA-Deskriptorliste und führt
den DMA der Daten aus. Die DMA-Deskriptorliste weist eine Anfangsadresse
für die
Daten und die Anzahl der zu übertragenden
Bytes auf. Die DMA-Deskriptorliste weist andere Informationen auf,
die nachstehend ausführlicher
beschrieben werden. Neben der Mikrosteuerung 223 können der
eine oder die mehreren Kernprozessoren 202A-202N insbesondere
für DMA-Kernübertragungen
auch DMA-Deskriptoren in dem globalen Speicher 210 bilden.
Zum Beispiel erstellt die Mikrosteuerung 223 einen DMA
mit einem der Kernprozessoren 202A-202N, um einen
Datenrahmen oder -block für
einen gegebenen Kommunikationskanal zu verarbeiten. Sie teilt dem
einen Kernprozessor die Anfangsadresse der Deskriptorliste in dem
globalen Pufferspeicher mit. Der eine Kernprozessor liest durch
jede Zeile in der Deskriptorliste und führt den DMA der Daten von dem
globalen Pufferspeicher in den lokalen Speicher des Kernprozessors aus.
-
Der
serielle Mehrkanalanschluß 206 ist
mit einer Vielzahl von Zeitmultiplex (TDM)-Vollduplex-Telekommunikationskanälen verbunden,
damit das VOP-SOC 100 die Vielzahl von Kommunikationskanälen unterstützen kann.
Der serielle Mehrkanalanschluß 206 fungiert
als ein Empfänger
und Sender für jeden
der Vielzahl von Kommunikationskanälen, die in einer Ordnung von
512 Kanälen
liegen. Daten, die von dem Telefonnetzwerk empfangen werden, werden
von dem seriellen Mehrkanalanschluß 206 in dem globalen
Pufferspeicher 210 gespeichert, um von den Kernprozessoren 202A-202N verarbeitet
zu werden. Daten, die nach der Verarbeitung von den Kernprozessoren 202A-202N zu
dem Telefonnetzwerk gesendet werden sollen, werden von dem seriellen
Mehrkanalanschluß 206 aus
dem globalen Pufferspeicher 210 abgerufen. Um auf den globalen
Pufferspeicher direkt zuzugreifen, weist der serielle Mehrkanalanschluß 206 eine
serielle DMA-Steuerung 207 auf, welche mit dem Busvermittler 201A verbunden
ist.
-
Der
Hostanschluß 214 ist
mit einem Host verbunden, um bei Einschalt- und Einrichtungsinformationen
hinsichtlich der Kommunikationskanäle, die er verarbeiten wird,
externe Daten zu empfangen. Außerdem
ist der Hostanschluß 214 mit
einem Paketnetzwerk verbunden, um Paketnutzlasten von Daten in Vollduplex
für Mehrkommunikationskanäle zu übermitteln.
Daten, die von dem Telefonnetzwerk empfangen werden, werden von
dem Hostanschluß 214 in
dem globalen Pufferspeicher 210 gespeichert, um von den
Kernprozessoren 202A-202N verarbeitet zu werden.
Daten, die nach der Verarbeitung durch die Kernprozessoren 202A-202N auf
das Paketnetzwerk gesendet werden sollen, werden von dem Hostanschluß 214 aus
dem globalen Pufferspeicher aufgerufen. Die Paketnutzlasten, die
von dem Hostanschluß 214 aus
dem globalen Pufferspeicher 214 übermittelt werden, werden nach
dem Empfang aus dem Paketnetzwerk in die Paketnutzlast-Daten depaketiert,
die durch den Hostanschluß empfangen
werden. Alternativ kann in dem VOP-SOC 100 ein Paketierer
oder Depaketierer enthalten sein, um ein Paketnetzwerk direkt zu
verknüpfen.
-
In
einer Ausführungsform
setzt der Hostanschluß 214 auch
die Protokolle eines Intel I960-kompatiblen
Hostanschlusses um. Der Hostanschluß 214 ist mit einem
Host wie einem Intel I960-Hostprozessor verbunden, um externe Informationen
zu empfangen, da sich der globale Pufferspeicher 210 innerhalb des
Systems auf einem Chip 100 befindet. Der Host stellt durch
den Hostanschluß 214 Informationen
hinsichtlich einer Hochfahrsequenz während des Hochfahrens des SOCs 100 sowie
Kanaleinrichtungsinformationen hinsichtlich der Kommunikationskanäle, welche
das SOC 100 unterstützen
soll, und sämtliche anderen
externen Informationen bereit, die ein Benutzer zum Laden in das
SOC 100 benötigt.
Der Hostanschluß 214 weist
in einer Ausführungsform
einen zweiunddreißig
Bit breiten parallelen Datenanschluß auf. Das heißt, die
Paketnutzlastdaten und anderen Informationen können mit Hilfe einer Datenwortbreite von
zweiunddreißig
Bit von einer externen Quelle in und aus dem Hostanschluß strömen. Der
Hostanschluß 214 wandelt
die 32-Bit-Daten auf dem externen Bus zur Übertragung über den Systembus 200 in 64-Bit-Daten
und die 64-Bit-Daten
aus dem Systembus 200 zur Übertragung aus dem Hostanschluß in 32-Bit-Daten
um.
-
Die
Kernprozessoren 202A-202N verarbeiten die empfangenen
TDM-Signale aus dem Telefonnetzwerk und können als Antwort TDM-Signale
zur Kommunikation zurück über das
Telefonnetzwerk erzeugen oder sie können Paketnutzlasten zur Kommunikation über das
Paketnetzwerk erzeugen. Paketnutzlasten, die aus dem Paketnetzwerk
empfangen werden, werden von den Kernprozessoren 202A-202N in
Paketnutzlasten zur Übertragung
zurück über das
Paketnetzwerk oder in TDM-Daten zur Kommunikation über das
Telefonnetzwerk verarbeitet. In jedem Fall werden die Daten, die
verarbeitet werden müssen,
zuerst in dem globalen Pufferspeicher 210 gespeichert.
Der eine oder die mehreren Kernprozessoren 202A-202N rufen
dann die Daten für
den gegebenen Kanal zur Verarbeitung auf. Nachdem die Verarbeitung
der Daten von dem einen oder den mehreren Kernprozessoren 202A-202N beendet ist,
werden sie in dem globalen Pufferspeicher 210 gespeichert.
Um auf den globalen Pufferspeicher direkt zuzugreifen, weisen der
eine oder die mehreren Kernprozessoren 202A-202N eine
oder mehrere DMA-Kernsteuerungen 203A-203N auf,
um auf die Daten in ihrem lokalen Speicher direkt zuzugreifen. Der
Code, der mit der funktionellen Verarbeitung des Kanals in Verbindung
steht, und die Zustandsinformationen zur vorherigen Verarbeitung
des Kanals und seine Datenproben werden auch in dem globalen Pufferspeicher 210 gespeichert
und durch DMA in den lokalen Speicher (Programmspeicher und Datenspeicher)
des einen oder der mehreren Kernprozessoren übertragen, welche die neuen
Datenproben verarbeiten werden.
-
Mit
Bezug auf 3 ist ein Blockdiagramm eines
Kernprozessors 202 dargestellt. Der Kernprozessor 202,
der in 3 dargestellt ist, steht für ein Beispiel des einen oder
der mehreren Kernprozessoren 202A-202N in 2.
Der Kernprozessor 202 weist eine DMA-Kernsteuerung 203,
einen digitalen Signalprozessor (DSP) 300, den Datenspeicher 302 und
einen Programmspeicher 304 auf, die wie in 3 dargestellt
miteinander verbunden sind. Speicherstellen in dem Datenspeicher 302 und
dem Programmspeicher 304 können in dualen Kanälen zur Verarbeitung
von zwei Kommunikationskanälen
zugewiesen werden. Das Zuweisen von Speicherstellen in zwei Kanäle auf diese
Weise wird manchmal als ein doppelt gepuffertes Speicherschema bezeichnet.
Das heißt,
der Datenspeicher 302 kann als über zwei Kanäle aufgeteilt
betrachtet werden, nämlich
als ein Speicher von Kanal-Eins-Daten 302A und Speicher
von Kanal-Zwei-Daten 302B. In ähnlicher Weise kann der Programmspeicher 304 als
in zwei Kanäle aufgeteilt
betrachtet werden, nämlich
den Programmspeicher von Kanal eins 304A und den Programmspeicher
von Kanal zwei 304B. Der Programmspeicher von Kanal eins 304A entspricht
dem Datenspeicher von Kanal eins 302A. Der Programmspeicher von
Kanal zwei 304B entspricht dem Datenspeicher von Kanal
zwei 302B.
-
Die
DMA-Kernsteuerung 203 und der DSP 300 springen
zwischen den Speicherkanälen,
auf welche jede zugreift, hin und her. Die DMA-Kernsteuerung 203 schreibt
Daten oder Codes in die Speicherstellen des Datenspeichers und Programmspeichers
entsprechend dem Kanal, der nicht verarbeitet wird. Während ein
Kanal von Speicherstellen von dem DSP 300 verarbeitet wird,
wird der andere Kanal von Speicherstellen durch DMA gelesen oder
aktualisiert. Zum Beispiel verarbeitet der DSP 300 die
Daten in Kanal eins 302A des Datenspeichers 302 mit Hilfe
des Codes, der in Kanal eins 304A des Programmspeichers 304B gespeichert
ist. Während
der DSP 300 Kanal eins verarbeitet, aktualisiert die DMA-Kernsteuerung 203 Kanal
zwei 302B des Programmspeichers 304B, um einen
nächsten
Kanal zu verarbeiten. Die DMA-Kernsteuerung 203 kann
auch Daten aus Kanal zwei lesen, nachdem die Verarbeitung vollendet
ist, und dann Kanal zwei 302B mit neuen Daten zur Verarbeitung
des nächsten
Kanals aktualisieren. Die DMA-Kernsteuerung 203 überträgt Codes
und Daten zwischen dem globalen Pufferspeicher 210 und
dem Datenspeicher 302 und dem Programmspeicher 304 mit
Hilfe des direkten Speicherzugriffs.
-
Der
Datentransfer zwischen dem Datenspeicher 302 und der DMA-Kernsteuerung 203 findet
mittels opportunistischer Lese- und Schreibvorgänge statt. Das heißt, Daten
werden bei jeder Gelegenheit zwischen einem Datenspeicher 302 des
einen oder der mehreren Kernprozessoren 200A-200N und
der DMA-Kernsteuerung 203 übertragen. Wenn ein Prozessor
keinen der Anschlüsse
des Datenspeichers 302 mit dualem Anschluß benutzt,
können
Daten in jeden der Anschlüsse
geschrieben oder aus jedem der Anschlüsse gelesen werden. Immer wenn
eine freie Speicherstelle(n) zum Schreiben von Daten in eine gerade
verarbeitete Bank verfügbar
ist, kann der DMA-Prozeß in
die freie Speicherstelle(n) schreiben. Nachdem eine Speicherstelle
Daten enthält,
deren Verarbeitung vollendet ist, kann der DMA-Prozeß aus der
Speicherstelle(n) in dem Datenspeicher 302, falls verfügbar, lesen.
Die Kernprozessoren 200A-200N haben eine höhere Priorität, um auf
Speicherbanken zuzugreifen, wobei der DMA-Steuerungszyklus opportunistische Lese-
und Schreibvorgänge
entwendet, um auf den Datenspeicher Zugriff zu bekommen. In ähnlicher
Weise findet der Codetransfer zwischen dem Programmspeicher 304 und
dem globalen Pufferspeicher 210 mittels opportunistischer
Lese- und Schreibvorgänge
statt.
-
Die
Befehle für
den DMA-Transfer zwischen einem Datenspeicher 302 und dem
globalen Pufferspeicher 210 weisen Starten, Anhalten, Fortfahren, Unterbrechen
und Wiederaufnehmen auf. In den DMA-Steuerungen 203 gibt
es DMA-Deskriptorregister. Einer oder mehrere dieser Befehle können in
die DMA-Deskriptorregister geschrieben werden, während der DMA im Gange ist,
und können
bewirken, daß die
angemessene Handlung ausgeführt
wird. Ein DMA-Transfer kann mit Hilfe des Befehls Anhalten oder
des Befehls Unterbrechen auch von einem Benutzer angehalten werden.
Nachdem ein DMA-Transfer angehalten ist, kann er mit Hilfe des Befehls
Fortfahren fortgesetzt werden. Nach dem Anhalten oder Unterbrechen
kann ein Benutzer einen anderen DMA-Transferprozeß beginnen. Nach dem Unterbrechen
kann ein unterbrochener DMA-Transfer
mit Hilfe des Befehls Wiederaufnehmen wiederaufgenommen werden.
Bei Vollendung des DMA-Prozesses wird ein Unterbrechungssignal rückgekoppelt,
um dem Host, der Mikrosteuerung oder dem Kernprozessor (DSP) anzuzeigen,
den Status der DMA-Steuerung zu überprüfen.
-
Die
Bitbreite der Wörter
von Daten, die in einem der Kanäle
des Datenspeichers 302 gespeichert sind, stimmt mit derjenigen
der Datensystembusbreite (DSBW) des Systembusses 200 überein.
Es ist wünschenswert,
daß die
Bitbreite der Wörter
von Codes, die in jedem der Kanäle
des Programmspeichers 304 gespeichert sind, mit derjenigen
der Befehlsbreite des DSPs 300 übereinstimmt. In einer Ausführungsform
ist die Breite von Datenwörtern,
die in einem der Kanäle
des Datenspeichers 302 gespeichert sind, vierundsechzig
Bits breit, während
die Breite von Programmcodewörtern,
die in einem der Kanäle
des Programmspeichers 304 gespeichert sind, vierzig Bits
breit ist. Folglich wandelt die DMA-Kernsteuerung 203 64
Programmcodebits, die aus dem globalen Pufferspeicher 210 empfangen werden,
in Wortbreiten von vierzig Bit um (das heißt, packt diese selektiv).
Die DMA-Steuerung stellt dem DSP jeweils 40 Bits bereit. Der FIFO,
der in der DMA-Kernsteuerung 203 enthalten ist, führt die 64-zu-40-Bit-Umwandlungen
aus. Alle fünf
Wörter von
vierundsechzig Codebits (insgesamt 320 Bits), die aus dem globalen
Pufferspeicher 210 gelesen werden, werden in acht Wörter von
vierzig Codebits (insgesamt 320 Bits) umgewandelt. Das heißt, die Bits
werden in ein Wort gepackt, das der kleinste gemeinsame Nenner zwischen
der Datensystembusbreite und der Wortbreite des Programmspeichers 304 ist.
-
Jede
der verteilten DMA-Steuerungen stellt dem globalen Pufferspeicher
beim Lesen eine Quellenadresse und dem globalen Pufferspeicher beim Schreiben
eine Zieladresse bereit. Die DMA-Kernsteuerung 203 erzeugt
ferner beim Schreiben darein eine Zieladresse für den Datenspeicher 302 und
den Programmspeicher 304 und beim Lesen daraus eine Quellenadresse.
Der Programmspeicher 304 ist 40-Bit-adressierbar und weist
eine Adreßwort
auf, das 40 Bit breit sein kann. Der Datenspeicher 302 ist 64-Bit-adressierbar
und weist eine Adreßwort
in den Speicher auf, das 64 Bit breit sein kann. Folglich stellt die
DMA-Kernsteuerung 203 sowohl
eine Quellen- als auch eine Zieladresse bereit, wenn DMA-Transfers zwischen
dem globalen Pufferspeicher 210 und dem Datenspeicher 302 oder
dem Programmspeicher 304 ausgeführt werden.
-
Mit
Bezug auf 4 ist ein Blockdiagramm einer
beispielhaften Speicherabbildung für den globalen Pufferspeicher 210 dargestellt.
Ein Datenwort oder -block wird in einem globalen Pufferspeicher
gespeichert und daraus gelesen, der eine Größe aufweist, die mit der Datensystembusbreite
(DSBW) übereinstimmt.
In einer Ausführungsform
betragen die Datensystembusbreite und die Breite von Datenwörtern in
adressierbaren Speicherstellen in dem globalen Pufferspeicher vierundsechzig
Bits. Das heißt,
wenn dem globalen Pufferspeicher eine Adresse bereitgestellt wird,
können
vierundsechzig Bits gleichzeitig herausgelesen oder gleichzeitig
hinein geschrieben werden. Der globale Pufferspeicher ist auf 64-Bit-Grenzen
mit einem Adreßwort
adressierbar, das 23 Bits breit ist.
-
In
der beispielhaften Speicherabbildung aus 4 weist
der globale Pufferspeicher 210 Daten zwischen einer ersten
Anfangsadresse B1 und einer ersten Endadresse E1 als einen Datensatz
auf, auf den durch einen direkten Speicherzugriff zugegriffen werden
kann (als DMAD 1 bezeichnet). DMAD 1 stehen zum Beispiel für Daten,
die von dem Hostanschluß oder
dem seriellen Mehrkanalanschluß empfangen
worden sind, oder Daten, die von einem der Kernprozessoren 200A-200N geschrieben
worden sind. Die beispielhafte Speicherabbildung aus 4 weist
auch Daten zwischen einer zweiten Anfangsadresse B2 und einer zweiten
Endadresse E2 als einen zweiten Satz von Daten auf, auf die durch
einen direkten Speicherzugriff direkt zugegriffen werden kann (als
DMAD 2 bezeichnet). Die beispielhafte Speicherabbildung aus 4 stellt
auch den globalen Pufferspeicher 210 dar, der Daten zwischen
einer dritten Anfangsadresse B3 und einer dritten Endadresse E3
als einen dritten Datensatz aufweist, auf den durch einen direkten
Speicherzugriff zugegriffen werden kann (als DMAD 3 bezeichnet).
-
Der
globale Pufferspeicher weist auch eine DMA-Deskriptortabelle 401 auf.
Die DMA-Deskriptortabelle 401 weist
eine oder mehrere deskriptive DMA-Listen 402A-402N mit
Informationen auf, die sich auf die Daten beziehen, auf die durch
direkten Speicherzugriff direkt zugegriffen werden kann und die
in dem globalen Pufferspeicher 210 gespeichert sind. Eine
oder mehrere deskriptive DMA-Listen werden von jeder der verteilten
DMA-Steuerungen benutzt, wenn Informationen durch DMA an den globalen
Pufferspeicher 210 übertragen
werden. Jede der deskriptiven DMA-Listen 402A-402N weist
Anfangszeiger bezüglich
Daten, Code, Status oder anderer Informationen in dem globalen Pufferspeicher
auf. Eine oder mehrere deskriptive DMA-Listen 402A-402N innerhalb
der deskriptiven DMA-Tabelle 401 zeigen auf die Daten DMAD
1, DMAD 2 und DMAD 3, die durch direkten Speicherzugriff zugänglich sind.
Nachdem die Daten, die durch direkten Speicherzugriff zugänglich sind,
nicht mehr gültig oder
brauchbar sind, werden die deskriptiven DMA-Listen annulliert oder
gelöscht.
-
In 4 weist
die DMA-Deskriptortabelle 401 eine beispielhafte deskriptive
DMA-Liste 402A auf,
die innerhalb des globalen Pufferspeichers 210 zum Verarbeiten
eines gegebenen Kanals gespeichert ist. Eine deskriptive DMa-Liste 402N kann
bereits von der seriellen DMA-Steuerung oder der DMA-Hoststeuerung
im Hinblick auf DMA-Informationen
aus ihren jeweiligen Anschlüssen
in dem globalen Pufferspeicher benutzt worden sein. Die deskriptive
DMA-Liste kann im Hinblick auf die DMA-Information aus dem globalen
Pufferspeicher in den lokalen Speicher, den Datenspeicher und Programmspeicher
von einem oder mehreren der Kernprozessoren 200A-200N benutzt
werden. In diesem Fall kann die deskriptive DMA-Liste eine Verknüpfung zu
der deskriptiven DMA-Liste 402N aufweisen.
-
4 zeigt
eine beispielhafte deskriptive DMA-Liste 402A zum Verarbeiten
eines Kanals. Die beispielhafte deskriptive DMA-Liste 402A weist
einen Sendeprogrammzeiger 410, eine Probentypbeschreibung 412,
einen Zustandsinformationszeiger 414, einen gemischten
Steuerzeiger 416, einen Anfangsdaten-Speicherzeiger 418 und
einen verknüpften
Listenzeiger 420 auf. Der Sendeprogrammzeiger 410 zeigt
auf eine Anfangsadresse für
einen Code, der zum Verarbeiten des gegebenen Kanals zu benutzen
ist. Die Probentypbeschreibung 412 beschreibt den Typ von
Datenproben auf dem seriellen Anschluß im Hinblick darauf, ob sie
4-Bit, 3-Bit, 16-Bit sind und ob sie komprimiert sind oder nicht,
und falls ja, welche Komprimierungsart benutzt wird. Der Zustandsinformationszeiger
zeigt auf die Daten in dem Speicher, falls vorhanden, des letzten
Berechnungszustands von Datenproben für den Kanal, der bei der derzeitigen
Berechnung benutzt werden kann. Der gemischte Steuerzeiger 416 zeigt
auf gemischte Steuerinformation bezüglich der Datenproben, dem Code,
Zustandsinformation oder anderer Information, auf die durch direkten
Speicherzugriff in oder aus dem globalen Pufferspeicher 210 zugegriffen
werden soll. Die Anfangsspeicherstelle 418 stellt die Anfangsadresse
der Daten bereit, auf die durch direkten Speicherzugriff zugegriffen
werden soll, und zeigt auf das erste Wort oder den ersten Datenblock
wie B1, B2 oder B3 der beispielhaften Speicherabbildung. Als Alternative
kann der verknüpfte
Listenzeiger 420 auf eine andere deskriptive Liste 420N für die Daten oder
andere Information zeigen 422, auf die durch direkten Speicherzugriff
aus oder zu dem globalen Pufferspeicher zugegriffen werden muß. Auf diese
Weise können
die DMA-Deskriptorlisten
miteinander verkettet werden.
-
Mit
Bezug auf 5 ist ein Blockdiagramm der
seriellen DMA-Steuerung 207 dargestellt. Die serielle DMA-Steuerung 207 weist
einen Empfangs-FIFO-Puffer 502, einen Sende-FIFO-Puffer 504,
ein Kanalregister 505, einen Datenzähler 506, ein Status-/Steuerregister 507,
eine Steuerlogik 508 und einen TDM-Neuabbildungsspeicher 510 auf.
Die Daten, die über
den seriellen Anschluß gesendet oder
empfangen werden, können
durch einen Kompressionsalgorithmus komprimiert werden. Falls die Daten
Sprachdaten sind, kann der Kompressionsalgorithmus eine Gesetz-A-Kompression
oder eine Gesetz-Mu-Kompression sein. Die Sprachdaten sind in ihrer
nicht komprimierten Form PCM oder durch Impulscode modulierte Daten.
Außerdem
werden die Daten auf dem seriellen Datenstrom in einem Zeitmultiplexverfahren
in Zeitschlitze für
jeden Kommunikationskanal aufgeteilt. Da der verteilte DMA der vorliegenden
Erfindung besonders geeignet ist, um Datenblöcke für gegebene Kanäle zu unterstützen, stellt der
serielle Anschluß eine
Verschachtelung und Entschachtelung von Daten aus dem seriellen
Datenstrom für
jeden Kanal bereit.
-
Die
serielle DMA-Steuerung 207 ist mit dem Systembus 200 durch
den Busvermittler 201A verbunden, um parallele Datenbits
zu empfangen und zu senden. Die serielle DMA-Steuerung 207 ist
mit dem Telefonnetzwerk verbunden, um einen seriellen Datenstrom
zu empfangen und zu senden. Die serielle DMA-Steuerung 207 weist
auch DMA-Steuersignale auf, um den direkten Speicherzugriff durch
den Systembus 200 anzufordern und zu steuern. Diese DMA-Steuersignale
weisen eine DMA-Anfrage (DMA REQ, DMA-Anerkennung (DMA ACK), Unterbrechungsanfrage
(INT) und ein Lese-/Schreib-Abtastsignal (R/W) auf, die durch den
Busvermittler 201A auf den Steuerleitungen des Systembusses 200 verbunden
sind. Die DMA-Steuersignale sind mit dem Steuerlogikblock 508 verbunden.
Der Steuerlogikblock 508 erzeugt die DMA REQ-, die INT-
und die R/W-Abtastsignale und empfängt das DMA-ACK-Signal. Der parallele
Datenanschluß der
seriellen Datensteuerung 207 ist mit dem Busvermittler 201A verbunden. Der
Empfangs-FIFO-Puffer 502, der Sende-FIFO-Puffer 504,
das Kanalregister, der Datenzähler 506 und
das Status-/Steuerregister 507 sind durch den parallelen
Datenanschluß der
seriellen DMA-Steuerung 207 mit dem Busvermittler 201A verbunden.
Der Empfangs-FIFO-Puffer 502 und der Sende-FIFO-Puffer 504 sind
in einer Ausführungsform
ein bis zwei Eingänge
(64-Bit) tief und stellen Burst-Schreibvorgänge und
-Lesevorgänge
mit dem TDM-Neuabbildungsspeicher 510 und dem globalen Pufferspeicher 210 bereit.
Der TDM-Neuabbildungsspeicher 510 der seriellen DMA-Steuerung 207 ist durch
den seriellen Mehrkanal-Datenanschluß mit dem Telefonnetzwerk verbunden,
um darauf einen seriellen Datenstrom zu senden und zu empfangen.
-
Der
TDM-Neuabbildungsspeicher 510 stellt eine Seriell-zu-Parallel-Umwandlung
bereit, wenn er einen seriellen Datenstrom aus dem Telefonnetzwerk empfängt. Der
TDM-Neuabbildungsspeicher 510 stellt eine Parallel-zu-Seriell-Umwandlung
bereit, wenn er einen seriellen Datenstrom zu dem Telefonnetzwerk
empfängt.
Der TDM-Neuabbildungsspeicher
verschachtelt Daten angemessen in Zeitschlitze des seriellen Datenstroms
zur Übertragung.
Der TDM-Neuabbildungsspeicher entschachtelt Daten angemessen aus
Zeitschlitzen des seriellen Datenstroms zu empfangenen Daten. Der
TDM-Neuabbildungsspeicher 510 bildet auch die angemessenen Daten
in Speicherstellen neu ab, so daß eine Vielzahl von seriellen
Kommunikationskanälen
unterstützt wird.
Das heißt,
der serielle Datenstrom wird bei Empfang serieller Daten in den
TDM-Neuabbildungsspeicher
gelesen, indem Daten aus Zeitschlitzen in angemessene Speicherstellen
entschachtelt werden, so daß ein
ganzer Datenrahmen für
einen gegebenen Kanal zum DMA in den globalen Pufferspeicher bereit
ist. Zum Senden serieller Daten wird ein ganzer Datenrahmen in dem
TDM-Neuabbildungsspeicher gespeichert, so daß Blöcke gleichzeitig herausgelesen
und in angemessene Zeitschlitze für einen gegebenen Kanal verschachtelt
werden können.
-
Das
Status-/Steuerregister 507 der seriellen DMA-Steuerung
stellt Statusinformation hinsichtlich des seriellen Anschlusses 206 und
der seriellen DMA-Steuerung bereit. Das Status-/Steuerregister 507 verwaltet
eine Anzahl von Flags, die ein volles Flag des Empfangs-FIFO-Puffers
und ein volles Flag des Sende-FIFO-Puffers aufweisen. Wenn das volle Flag
des Puffers festgelegt ist, können
keine weiteren Daten in dem jeweiligen Puffer gespeichert werden, bis
das Flag gelöscht
ist. Das Kanalregister 505 wird auf eine bestimmte Kanalanzahl
festgelegt, wenn ein spezifischer Status im Hinblick auf diesen
Kanal gewünscht
wird. Wenn eine Kanalanzahl von dem Kanalregister nicht ausgewählt wird,
wird ein allgemeiner Status bereitgestellt, wenn das Status-/Steuerregister 507 gelesen
wird. Wenn in das Status-/Steuerregister 507 geschrieben
wird, können
die Steuerung der seriellen DMA-Steuerung 207 und des seriellen Anschlusses 206 erstellt
oder aktualisiert werden. Der Datenzähler 506 zählt die
Bytezählung
in einem DMA-Transfer, um zu bestimmen, wann ein Transfer vollendet
ist. Der Zählungswert
des Datenzählers 506 ermöglicht auch
die Erzeugung von Adressen für den
globalen Pufferspeicher 210.
-
Mit
Bezug auf 6A und 6B ist
die Funktionalität
des TDM-Neuabbildungsspeichers 510 dargestellt. 6A zeigt
einen beispielhaften seriellen Datenstrom auf dem seriellen Anschluß des seriellen
Mehrkanalanschlusses 207. Der serielle Datenstrom auf dem
seriellen Anschluß wird
einem Zeitmultiplexverfahren (TDM) unterzogen. Die Kommunikationskanäle (CH1
bis CHN) werden bestimmten Zeitschlitzen zwischen Rahmensynchronisationsimpulsen
(FS) über
Rahmen 1 bis Rahmen M zugewiesen. Jeder Kanalzeitschlitz ist in
einer Ausführungsform
ein DSO-Datenbyte
von acht Datenbits. In einer alternativen Ausführungsform beträgt jeder
Kanalzeitschlitz 16 Datenbits. Die vorliegende Erfindung kann an
alternative Datenbits pro Zeitschlitz pro Kanal angepaßt werden.
-
6B stellt
eine beispielhafte Neuabbildung von Datenrahmen in Daten der jeweiligen
Kanäle
1 bis N oder umgekehrt dar. Die Daten von Kanal 1 über Rahmen
1 bis M sind zusammen angeordnet. Die Daten von Kanal 2 über Rahmen
1 bis M sind zusammen angeordnet, und so weiter und so fort, bis Kanal
N. Für
N Kommunikationskanäle
sind M Rahmen in dem TDM-Neuabbildungsspeicher gespeichert. Sobald
N DSO-Wörter
von Kanal-1-Daten in dem TDM-Neuabbilder gespeichert werden, kann
ein Rahmen von Kanal-1-Daten während
des Empfangs über
DMA in den globalen Pufferspeicher 210 geschrieben werden.
Der TDM-Neuabbildungsspeicher bildet die DSO-Wörter ab, die in den Rahmen
von Daten für
jeden Kanal empfangen werden. Sobald ein Datenrahmen in dem TDM-Neuabbildungsspeicher
für jeden
der N Kanäle
gespeichert ist, kann während
der Übertragung
ein Rahmen von seriellen TDM-Daten an das Telefonnetzwerk übertragen
werden. Der TDM-Neuabbildungsspeicher bildet den Datenrahmen für die N
Kanäle
in die DSO-Wörter
für jeden
Kanal ab.
-
Mit
Bezug auf 7 ist ein Blockdiagramm der
DMA-Kernsteuerung 203 dargestellt. Die DMA-Kernsteuerung 203 ist
ein Beispiel der einen oder mehreren DMA-Kernsteuerungen 203A-203N. Die
DMA-Kernsteuerung 203 weist einen Empfangs-FIFO-Puffer 702,
einen Sende-FIFO-Puffer 704, ein Status-/Steuerregister 705,
einen Datenzähler 706,
ein Warteschlangenregister/-zähler 707,
eine Steuerlogik 708, einen Decoder 711, ein Paar
Multiplexer 712-713 und einen Codierer 714 auf.
Die Steuerlogik 708 weist DMA-Steuersignale (DMA REQ PROC.,
DMA ACK PROC, INT PROC- und R/W PROC.), die auf der Prozessorseite
mit dem Datenspeicher 302 und dem Programmspeicher 304 für eine Verbindung
verbunden sind, und DMA-Steuersignale
(DMA REQ BUS, DMA ACK BUS, INT BUS und R/W BUS) auf einer Busseite
auf, die durch den Systembus mit dem globalen Pufferspeicher 210 für eine zweite
Verbindung verbunden sind. Der Empfangs-FIFO-Puffer 702,
Sende-FIFO-Puffer 704,
Status-/Steuerregister 705, Datenzähler 706, Warteschlangenregister/-zähler 707,
Decoder 711 und Codierer 714 der DMA-Kernsteuerung 203 sind
auf einer Seite mit dem Datenspeicher 302 und dem Programmspeicher 304 eines
Kernprozessors 200 verbunden. Der Empfangs-FIFO-Puffer 702,
Sende-FIFO-Puffer 704, Status-/Steuerregister 705, Datenzähler 706 und
Warteschlangenregister/-zähler 707 der
DMA-Kernsteuerung 203 sind
mit dem globalen Speicher 210 durch den einen oder die
mehreren Busvermittler 201A-201N und den Systembus 200 auf
der Busseite verbunden. Der Empfangs-FIFO-Puffer 702 und
der Sende-FIFO-Puffer 704 sind in einer Ausführungsform
vierundsechzig Bytes tief und stellen Burst-Lesevoränge und – Schreibvorgänge mit
dem globalen Pufferspeicher und dem Kernprozessor bereit.
-
Es
ist zu beachten, daß die
Breite von Datenwörtern,
die in einem der Kanäle
des Datenspeichers 302 gespeichert sind, in einer Ausführungsform
vierundsechzig Bits beträgt,
während
die Breite von Programmcodewörtern,
die in dem einen der Kanäle
des Programmspeichers 304 angeordnet sind, vierzig Bits
beträgt.
In diesem Fall wandelt die DMA-Kernsteuerung 203 64 Programmcodebits,
die aus dem globalen Pufferspeicher 210 empfangen werden,
in Wortbreiten von vierzig Bit um. Der Programmcode mit einer Breite
von 64 Bits wird in dem Empfangs-FIFO in acht 8-Bit-Bytes gespeichert.
Der Programmcode wird aus dem jeweiligen FIFO von einem Prozessor
gelesen, so daß fünf 8-Bit-Bytes
(das heißt,
40 Bits) von Code gleichzeitig herausgelesen und in den Programmspeicher 304 gelesen
werden. Als Alternative können
diese als fünf
64-Bit-Wörter (320
Bits) betrachtet werden, die aus dem Empfangs-FIFO gelesen werden.
-
Außerdem kann
die DMA-Kernsteuerung Daten, die von dem globalen Pufferspeicher
vor dem Schreiben in den Datenspeicher 304 empfangen werden,
dekomprimieren und kann Daten, die aus dem Datenspeicher 304 vor
dem Schreiben in den globalen Pufferspeicher 210 gelesen
werden, komprimieren. Der Multiplexer 712 wählt aus,
ob Information aus dem Empfangs-FIFO-Puffer 702 direkt
mit dem Datenspeicher und Programmspeicher verbunden wird oder mit
einem der zwei entschlüsselten Ausgaben
des Decoders 711 verbunden wird, der die Information entschlüsselt. Der
Multiplexer 712 ermöglicht
auch, daß Information
aus dem Datenzähler 706,
dem Status-/Steuerregister 705 und
dem Warteschlangenregister/-zähler 707 mit
dem Prozessor oder dem Datenspeicher und dem Programmspeicher verbunden
wird. Der Multiplexer 713 wählt aus, ob Information aus
dem Datenspeicher, dem Programmspeicher oder dem DSP direkt mit
dem Sende-FIFO-Puffer 702 verbunden wird oder ob eine oder
zwei verschlüsselte
Ausgaben des Codierers 714 verbunden werden, welche die
Information verschlüsseln.
In einer Ausführungsform
kann das komprimierte Format ein nichtlineares komprimiertes Gesetz-A-
o oder Gesetz-Mu-Format sein, während
das dekomprimierte Format linear ist oder durch Impulscode modulierte
Daten. Die Komprimierung und Dekomprimierung wird durch Festlegen
von Bits in dem Status-/Steuerregister 705 in
Antwort auf eine DMA-Deskriptorliste ausgewählt.
-
Durch
Verschlüsseln
(Komprimieren) und Entschlüsseln
(Dekomprimieren) von Daten innerhalb der DMA-Kernsteuerung können die
Daten aus dem seriellen Anschluß von
dem seriellen Anschluß über den
Systembus in dem globalen Pufferspeicher und dann in die DMA-Kernsteuerung
durch den Systembus komprimiert bleiben. Das Komprimierthalten der
Daten innerhalb des SOCs 100 so lange wie möglich stellt
eine erhöhte
Bandbreite für
den Datentransfer bereit.
-
Das
Status-/Steuerregister 705 der DMA-Kernsteuerung stellt
beim Lesen Statusinformation hinsichtlich des jeweiligen Kernprozessors 200 und
der DMA-Kernsteuerung
bereit. Das Status-/Steuerregister 705 verwaltet eine Anzahl
von Flags, die ein volles Flag des Empfangs-FIFO-Puffers und ein
volles Flag des Sende-FIFO-Puffers
aufweisen. Wenn das volle Flag des Puffers festgelegt ist, können keine
weiteren Daten in dem jeweiligen Puffer gespeichert werden, bis
das Flag gelöscht
ist. Wenn in das Status-/Steuerregister 705 geschrieben wird,
kann die Steuerung der DMA-Kernsteuerung 203 erstellt
oder aktualisiert werden. Der Datenzähler 706 zählt die
Bytezählung
in einem DMA-Transfer, um zu bestimmen, wann ein Transfer vollendet
ist. Der Zählungswert
des Datenzählers 706 ermöglicht auch
die Erzeugung von Adressen für
den globalen Pufferspeicher 210.
-
Bei
dem DMA von Daten zwischen dem globalen Pufferspeicher und Datenspeicher
oder Programmspeicher eines Kernprozessors benutzt jede der DMA-Kernsteuerungen
die gleiche DMA-Deskriptorliste, die für den DMA der Daten von de
Hostanschluß oder
seriellen Anschluß in
den globalen Pufferspeicher benutzt wurden. Eine zusätzliche DMA-Deskriptorliste
ist unnötig.
-
Mit
Bezug auf 8 ist der Hostanschluß 214 dargestellt,
der die DMA-Hoststeuerung 215 aufweist.
Die DMA-Hoststeuerung 215 weist einen Empfangs-FIFO-Puffer 802,
einen Sende-FIFO-Puffer 804, ein Status-/Steuerregister 805,
einen Datenzähler 806,
ein Warteschlangenregister/-zähler 807,
eine Steuerlogik 808, die eine Stromsteuerung bereitstellt, und
I/O-Anschlußregister
auf. Die Steuerlogik 808 weist eine Logik auf, um eine
Datenstromsteuerung bereitzustellen und DMA-Steuerstrukturen bereitzustellen.
Die DMA-Steuerstrukturen dienen der Handhabung von Warteschlangen.
Das Status-/Steuerregister 807 stellt einem externen Host
Zugriff auf Steuer- und Statusinformation und der internen Mikrosteuerung 223 Statusmitteilungs-
und Warteschlangenzählerinformationen
bereit. Der Empfangs-FIFO-Puffer 802 und der Sende-FIFO-Puffer 804 sind
in einer Ausführungsform
vierundsechzig Bytes tief. Der Empfangs-FIFO-Puffer 802 und
der Sende-FIFO-Puffer 804 stellen Burst-Schreibvorgänge und – Lesevorgänge zwischen
einem Hostprozessor und dem SOC 100 bereit. Der Hostanschluß 214 aus 8 weist
ferner I/O-Anschlußregister 810 auf, um
sich selektiv mit einem Hostprozessor zu verbinden. Die Steuerlogik 808 der
DMA-Steuerung 215 weist DMA-Steuersignale (DMA REQ BUS,
DMA ACK BUS, INT BUS und R/W BUS) auf der Busseite auf, die mit
dem globalen Pufferspeicher 210 durch den Vermittler 201 und
den Systembus 200 verbunden sind. Die Steuerlogik 808 weist
DMA-Steuersignale (DMA REQ HOST, DMA ACK HOST, INT HOST und R/W
HOST) auf der Hostseite auf, die mit dem Host verbunden sind. Der
Empfangs-FIFO 802, der Sende-FIFO 804, der Datenzähler 806,
das Status/Steuerregister 805 und Warteschlangenregister/-zähler 807 sind
auf einer Seite mit dem Busvermittler 201 verbunden. Der
Empfangs-FIFO 802, der Sende-FIFO 804 und der
Datenzähler 806 sind
auf einer gegenüberliegenden
Seite mit dem I/O-Puffer 810 verbunden. Auf diese Weise
können
parallele Daten von Paketnutzlasten zwischen dem Host und dem Systembus 200 in
und aus dem globalen Pufferspeicher 210 strömen.
-
Die
I/O-Anschlußregister 810 des
Hostanschlusses 214 stellen einen Punkt für einen
Hostprozessor bereit, um Daten zu schreiben und Daten zu lesen.
-
Das
Status-/Steuerregister 805 der DMA-Hoststeuerung stellt
beim Lesen Statusinformation hinsichtlich des Hostanschlusses 214 und
der DMA-Hoststeuerung bereit. Das Status-/Steuerregister 805 verwaltet
eine Anzahl von Flags, die ein volles Flag des Empfangs-FIFO-Puffers
und ein volles Flag des Sende-FIFO-Puffers aufweisen. Wenn das volle Flag
des Puffers festgelegt ist, können
keine weiteren Daten in dem jeweiligen Puffer gespeichert werden, bis
das Flag gelöscht
ist. Beim Schreiben in das Status-/Steuerregister 805 können die
Steuerung der DMA-Hoststeuerung 215 und des Hostanschlusses 214 erstellt
oder aktualisiert werden. Der Datenzähler 806 zählt die
Bytezählung
in einem DMA-Transfer, um zu bestimmen, wann ein Transfer vollendet
ist. Der Zählungswert
des Datenzählers 806 ermöglicht auch
die Erzeugung von Adressen für
den globalen Pufferspeicher 210.
-
Die
bevorzugten Ausführungsformen
der vorliegenden Erfindung sind somit beschrieben worden. Wie der
Durchschnittsfachmann erkennen wird, hat die vorliegende Erfindung
viele Vorteile. Ein Vorteil der vorliegenden Erfindung ist, daß die Bandbreite
für den
globalen Pufferspeicher aufgrund des breiten Systembusses, der Neuabbildung
serieller Daten und der Komprimierung/Dekomprimierung von fliegenden
Daten erhöht
wird. Ein anderer Vorteil der Erfindung ist, daß die Vermittlung durch Benutzen
gemeinsamer Normen für
die Busvermittlung vereinfacht und auf Grund der Verteilung der
Steuerungen mit direktem Speicherzugriff verbessert wird.
-
Wenngleich
die vorliegende Erfindung in einer bestimmten Ausführungsform
eines Sprachübermittlungspaket-Systems
auf einem Chip beschrieben worden ist, ist sie genauso auf andere
Systeme auf Chips anwendbar. Außerdem
kann die vorliegende Erfindung in Hardware, Software, Firmware oder
einer Kombination davon umgesetzt und in Systemen, Subsystemen,
Komponenten oder Subkomponenten davon benutzt werden. Bei der Softwareumsetzung sind
die Elemente der vorliegenden Erfindung im wesentlichen die Codesegmente,
um die notwenigen Aufgaben auszuführen. Die Programm- oder Codesegmente
können
in einem von einem Prozessor lesbaren Medium gespeichert oder von
einem Computerdatensignal gesendet werden, das in einer Trägerwelle über ein Übertragungsmedium
oder einer Kommunikationsverknüpfung
verkörpert
ist. Das "von einem
Prozessor lesbare Medium" kann
jedes beliebige Medium aufweisen, das Informationen speichern oder übertragen
kann. Beispiele des von einem Prozessor lesbaren Mediums weisen
eine elektronische Schaltung, eine Halbleiter-Speichervorrichtung,
einen ROM, einen Flashspeicher, einen löschbaren ROM (EROM), eine Diskette,
einen CD-ROM, eine optische Platte, eine Festplatte, ein faseroptisches Medium,
eine Radiofrequenz-(RF)-Verknüpfung usw. auf.
Das Computerdatensignal kann jedes beliebige Signal aufweisen, das über ein
Transmissionsmedium wie elektronische Netzwerkkanäle, Glasfasern, Luft,
Elektromagnetik, RF-Verknüpfungen
usw. verbreitet werden kann. Die Codesegmente können über Computernetzwerke wie das
Internet, Intranet usw. heruntergeladen werden. In jedem Fall soll
die vorliegende Erfindung durch solche Ausführungsformen nicht als einschränkend betrachtet
werden, sondern gemäß den nachfolgenden
Ansprüchen.