PatentDe  


Dokumentenidentifikation DE60217884T2 08.11.2007
EP-Veröffentlichungsnummer 0001430405
Titel VERFAHREN UND APPARAT FÜR VERTEILTEN DIREKTSPEICHERZUGRIFF IN EINEM SYSTEM AUF EINEM CHIP
Anmelder Intel Corp., Santa Clara, Calif., US
Erfinder GANAPATHY, Kumar, Palo Alto, CA 94306, US;
KANAPATHIPPILLAI, Ruban, Pleasanton, CA 94588, US;
SHAH, Saurin, Sunnyvale, CA 95086, US;
MOUSSA, George, Sunnyvale, CA 94086, US;
PHILHOWER, F., Earle, Union City, CA 94587, US;
SHAH, Ruchir, Mountain View, CA 94040, US
Vertreter BOEHMERT & BOEHMERT, 28209 Bremen
DE-Aktenzeichen 60217884
Vertragsstaaten AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, IE, IT, LI, LU, MC, NL, PT, SE, SK, TR
Sprache des Dokument EN
EP-Anmeldetag 30.08.2002
EP-Aktenzeichen 027574896
WO-Anmeldetag 30.08.2002
PCT-Aktenzeichen PCT/US02/27642
WO-Veröffentlichungsnummer 2003023625
WO-Veröffentlichungsdatum 20.03.2003
EP-Offenlegungsdatum 23.06.2004
EP date of grant 24.01.2007
Veröffentlichungstag im Patentblatt 08.11.2007
IPC-Hauptklasse G06F 13/28(2006.01)A, F, I, 20051017, B, H, EP

Beschreibung[de]
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.


Anspruch[de]
System, umfassend:

einen Systembus (200);

mehrere Busvermittler (201A-201N), die mit dem Systembus (200) verbunden sind; und

mehrere funktionelle Module, die mit den mehreren Busvermittlern (201A-201N) verbunden sind, wobei jedes der mehreren funktionellen Module eine direkte Speicherzugriff (DMA)-Steuerung (203A-203N, 207, 215) aufweist, dadurch gekennzeichnet, daß jede DMA-Steuerung (203A-203N, 207, 215) mit einem Busvermittler der mehreren Busvermittler (201A-201N) verbunden ist, wobei die DMA-Steuerung (203A-203N, 207, 215) einen direkten Speicherzugriff auf einen globalen Pufferspeicher (210) bereitstellt, der direkt mit dem Systembus (200) verbunden ist, und dadurch, daß das System auf einem Chip (100) angeordnet ist.
System auf einem Chip (100) nach Anspruch 1, wobei die mehreren Busvermittler (201A-201N) einen Zugriff auf den Systembus (200) durch die mehreren funktionellen Module aushandeln. System auf einem Chip (100) nach Anspruch 1 oder 2, ferner umfassend:

eine Mikrosteuerung (223), die mit dem Systembus (200) verbunden ist.
System auf einem Chip (100) nach Anspruch 1, wobei das System auf einem Chip ein Sprachübermittlungspaket-System auf einem Chip ist; und

die mehreren funktionellen Module Folgendes aufweisen

einen oder mehrere Signalprozessoren (202A-202N), um Daten von mehreren Kommunikationskanälen zu verarbeiten, wobei der eine oder die mehreren Prozessoren (202A-202N) direkt auf den globalen Pufferspeicher (210) zugreifen, um Daten zur Verarbeitung zu lesen und Daten nach der Verarbeitung zu schreiben,

einen Hostanschluß (214), um sich mit einem Paketnetzwerk zu verbinden und Paketnutzlasten mit dem Paketnetzwerk zu senden und zu empfangen und auf den globalen Pufferspeicher (210) durch direkten Speicherzugriff zuzugreifen, um Daten aus dem globalen Pufferspeicher (210) zu lesen und darein zu schreiben, und

einen seriellen Mehrkanalanschluß (206), um sich mit einem Telefonnetzwerk zu verbinden und Daten mit dem Telefonnetzwerk zu senden und zu empfangen und auf den globalen Pufferspeicher (210) durch direkten Speicherzugriff zuzugreifen, um Daten aus dem globalen Pufferspeicher (210) zu lesen und darein zu schreiben.
Verfahren eines verteilten direkten Speicherzugriffs auf einen globalen Pufferspeicher (210), wobei das Verfahren Folgendes umfaßt:

Bereitstellen mehrerer funktioneller Einheiten, die jeweils eine direkte Speicherzugriffssteuerung (203A-203N, 207, 215) aufweisen;

Anfordern des Zugriffs auf einen Systembus (200) von mindestens einer der mehreren funktionellen Einheiten, um auf den globalen Pufferspeicher (210), der direkt mit dem Systembus verbunden ist, durch direkten Speicherzugriff zuzugreifen;

Vermitteln des Zugriffs auf den Systembus (200) durch mindestens eine der mehreren funktionellen Einheiten;

Erhalten des Zugriffs auf den Systembus (200) durch eine der mehreren funktionellen Einheiten; und

Erstellen einer direkten Speicherzugriffsverbindung durch die eine der mehreren funktionellen Einheiten mit dem globalen Pufferspeicher (210) und Lesen von Daten aus oder Schreiben von Daten in Speicherstellen in dem globalen Pufferspeicher.
Verfahren nach Anspruch 5, ferner umfassend Erneutes Abbilden eines seriellen Datenstroms in einen parallelen Datenstrom vor dem direkten Zugreifen auf den globalen Pufferspeicher (210) durch mindestens eine der mehreren funktionellen Einheiten. Verfahren nach Anspruch 5, ferner umfassend Erneutes Abbilden eines parallelen Datenstroms in einen seriellen Datenstrom nach dem direkten Zugreifen auf den globalen Pufferspeicher (210) durch die eine der mehreren funktionellen Einheiten. Verfahren nach einem der Ansprüche 5 bis 7, wobei die Schritte in einem System auf einem Chip (100) ausgeführt werden. Verfahren nach Anspruch 8, wobei das System auf einem Chip (100) ein Sprachübermittlungs-Paketsystem ist, das mit einem Paketnetzwerk auf einem Ende und einem Telefonnetzwerk auf einem entgegengesetzten Ende verknüpft ist.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com