DE60008139T2 - Cachespeicheranordnung für einen digitalen signalprozessor - Google Patents

Cachespeicheranordnung für einen digitalen signalprozessor Download PDF

Info

Publication number
DE60008139T2
DE60008139T2 DE2000608139 DE60008139T DE60008139T2 DE 60008139 T2 DE60008139 T2 DE 60008139T2 DE 2000608139 DE2000608139 DE 2000608139 DE 60008139 T DE60008139 T DE 60008139T DE 60008139 T2 DE60008139 T2 DE 60008139T2
Authority
DE
Germany
Prior art keywords
processor
memory
cache
bus
dsp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE2000608139
Other languages
English (en)
Other versions
DE60008139D1 (de
Inventor
D. Paul KRIVACEK
Joern Soerensen
Frederic Boutaud
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
Analog Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc filed Critical Analog Devices Inc
Publication of DE60008139D1 publication Critical patent/DE60008139D1/de
Application granted granted Critical
Publication of DE60008139T2 publication Critical patent/DE60008139T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W74/00Wireless channel access
    • H04W74/04Scheduled access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

  • Hintergrund
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein kleine digitale Signalprozessorsysteme, wie beispielsweise Funktelefone. Die Erfindung betrifft genauer gesagt Systeme, bei welchen ein digitaler Signalprozessor ein Softwareprogramm oder eine Sequenz von Schritten ausführt, die von Zeit zu Zeit geändert, modifiziert oder erweitert werden können.
  • 2. Zugehöriger Stand der Technik
  • Eine Kommunikationseinrichtung, wie beispielsweise Funktelefone, führt eine Vielfalt von Signal- und Datenverarbeitungsfunktionen durch. Bei älteren Systemen verarbeitete ein digitaler Signalprozessor (DSP) digitalisierte Audiosignale und steuerte eine Mikroprozessor-Steuereinheit (MCU) allgemeine Susyemoperationen, einschließlich eines Kommunikationsaufbaus und -abbaus für eine einzelne Einrichtungseinheit (z. B. ein Telefon). Der DSP und die MCU der einfachsten herkömmlichen Systeme kommunizieren miteinander über einen gemeinsam genutzten Einzelport- und Mehrfachport-Speicher, Steuersignale, etc. Jedoch sind zusätzliche Merkmale und Steueroptionen möglich, wenn zugelassen ist, dass der DSP und die MCU miteinander beispielsweise über einen gemeinsam genutzten Speicher kommunizieren. Obwohl Systeme, bei welchen der DSP und die MCU nicht miteinander kommunizieren, möglich sind, hat die Entwicklung von zellularen Kommunikationen dahingehend, dass sie eine Unterstützung für digitale Datenkommunikationen sowie Audiokommunikationen enthalten, zu einer größeren Notwendigkeit dafür geführt, dass der DSP und die MCU miteinander kommunizieren.
  • Kommunikationsstandards haben sich ebenso weiterentwickelt und entwickeln sich immer noch. Standards werden oft derart entworfen, dass sie erweiterbar sind, oder neue Merkmale sind klug entwickelt, um mit einem existierenden Standard abwärts kompatibel zu sein, so dass die neuen Merkmale auf dem Gebiet ohne die Notwendigkeit eingesetzt werden können, jedes Stück einer Einrichtung zu ersetzen, die es auf dem Gebiet bereits gibt. Um sich einer solchen Entwicklung anzupassen, gibt es einen großen Druck, sich weg von einem Nurlesespeicher (ROM) zu bewegen, der in einer Software oder einer Firmware resident ist, um auf dem DSP oder der MCU auszuführen. Ein Modifizieren eines ROM, der in einer Software oder einer Firmware resident ist, ist deshalb schwierig, weil auf einen ROM allgemein nicht geschrieben werden kann, außer einmal zur Zeit der Herstellung.
  • Letztlich haben die oben beschriebenen Drücke zu der Entwicklung von integrierten Schaltkreisen geführt, die einen DSP, eine MCU, einen ROM und einen RAM enthalten. Der monetäre und größenmäßige Aufwand eines Hinzufügens eines RAM zu integrierten Schaltkreissystemen haben den DSP und die MCU gezwungen, einen RAM gemeinsam zu nutzen, wann immer es möglich ist. Zum Ermöglichen bzw. Erleichtern einer Kommunikation zwischen dem DSP und der MCU und zum Vermeiden der Verschwendung von jeglichem Speicherplatz, was, wie es angegeben ist, an höchster Stelle steht, nutzen sie einen RAM gemeinsam. Eine Systemsoftware wird in einen RAM geladen, um eine Flexibilität und die Fähigkeit zum Rekonfigurieren von Systemen um konform zu sich entwickelnden Kommunikationsstandards zu bleiben, zu maximieren. Jedoch dann, wenn ein Speicher gemeinsam genutzt wird, wie beispielsweise unter Verwendung der in 1 dargestellten Architektur, wird die Speicherzugriffsbandbreite ein ernsthaftes Problem.
  • WO 98 30948 A (3COM CORP) 16. Juli 1998 (1998-07-16) offenbart ein Mehrprozessor-Datenverarbeitungssystem, das einen digitaler Signalprozessor (DSP), einen Hostprozessor, ein erstes gemeinsam genutztes Betriebsmittel, das mit beiden Prozessoren verbunden ist (RAM), und einen Cache-Speicher, der mit dem DSP und mit dem ersten gemeinsam genutzten Betriebsmittel verbunden ist, aufweist, wodurch Information von dem ersten gemeinsam genutzten Betriebsmittel zum DSP sowohl direkt (über eine Busschnittstelleneinheit 216) als auch über den Cache (der die Information speichern kann, die von dem ersten gemeinsam genutzten Betriebsmittel kommt) transferiert werden kann. Sie offenbart weiterhin eine Cache-Speichersteuerung (220), die Programmanweisungen von dem ersten gemeinsam genutzten Betriebsmittel in den Cache-Speicher lädt.
  • Zusammenfassung der Erfindung
  • Es ist eine allgemeine Aufgabe der vorliegenden Erfindung, ein verbessertes Cache-Speichersystem zu schaffen, und zwar insbesondere, jedoch nicht ausschließlich, für einen Kommunikationsprozessor, wie beispielsweise einen digitalen Signalprozessor (DSP).
  • Gemäß der Erfindung, wie sie im Anspruch 1 aufgezeigt ist, weist ein Digitalsignalverarbeitungssystem einen digitalen Signalprozessor (DSP) auf, der eine Echtzeitverarbeitung von digitalen Audiosignalen durchführt, einen modifizierten nichtflüchtigen Programmspeicherungsspeicher, der über einen Bus mit dem DSP verbunden ist, und ein Cache-Speichersystem, das mit dem DSP und mit dem modifizierbaren nichtflüchtigen Programmspeicherungsspeicher verbunden ist, wobei das Cache-Speichersystem eine Programmspeichermanagementeinheit hat, die Anweisungen von dem modifizierbaren nichtflüchtigen Programmspeicherungsspeicher lädt.
  • Kurze Beschreibung der Zeichnungen
  • In den Zeichnungen, in welchen gleiche Bezugszeichen gleiche Elemente anzeigen, gilt folgendes:
  • 1 ist ein schematisches Blockdiagramm einer herkömmlichen Busarchitektur einschließlich eines gemeinsam genutzten Speichers;
  • 2 ist ein vereinfachtes schematisches Blockdiagramm einer beispielhaften Busarchitektur, die Aspekte der vorliegenden Erfindung verkörpert;
  • 3 ist ein detaillierteres Blockdiagramm der Busarchitektur der 2;
  • 4 ist ein Blockdiagramm eines Teils des Systems der 2 und 3, der das Cache-System zeigt;
  • 5 ist eine Programmspeicherabbildung;
  • 6 ist ein detaillierteres Blockdiagramm des Systems der 5;
  • 7 ist eine Speicherüberlagerungsabbildung;
  • 8 ist eine physikalische Speicherabbildung; und
  • 9 ist ein Zustandsdiagramm der PMMU des Systems der 4 und 6.
  • Detaillierte Beschreibung
  • Die vorliegende Erfindung wird beim Lesen der folgenden detaillierten Beschreibung von einigen beispielhaften Ausführungsbeispielen von ihr besser verstanden werden.
  • Wenn in der folgenden Diskussion ein Bus angegeben ist, ist eine Gruppe von Signalpfaden gemeint, die die funktionellen Einheiten der Schaltung, des Systems oder der Vorrichtung, welche diskutiert werden, verbinden. Ein Bus kann eine Adressierungskomponente und eine Datenträgerkomponente enthalten, die jeweils manchmal inviduell Bus genannt werden. Am allgemeinsten sind Busse derart konfiguriert, dass sie zwei oder mehrere parallele Signalpfade haben, die Daten- und Adresseninformation mit einer Breite von mehreren Bits tragen, obwohl auch serielle Busse bekannt sind.
  • 2 zeigt eine Vorrichtung 200, die beispielsweise als integrierter Schaltkreis implementiert ist. Die Vorrichtung enthält ein digitales Signalprozessor-(DSP-)Untersystem 201 und ein Mikrosteuereinheits-(MCU-)Untersystem 202. Innerhalb des DSP-Untersystems 201 ist ein lokaler Bus (der nicht gezeigt ist), an welchen ein Prozessor angeschlossen ist. Ein Bus 203 sorgt für eine externe (zum DSP-Untersystem 201) Verbindung zu dem DSP-Untersystem 201 für andere Elemente der Vorrichtung 200. Der Bus 203 kann auch der lokale Bus innerhalb des DSP-Untersystems 201 sein. Gleichermaßen enthält das MCU-Untersystem 202 einen lokalen Bus, nämlich den MCU-Bus 204, der für eine externe (zum MCU-Untersystem 202) Verbindung des MCU-Untersystems 202 zu anderen Elementen der Vorrichtung 200 sorgt. Jedes der Untersysteme 201 und 202, die bislang diskutiert sind, enthält einen Prozessor, um dadurch der Vorrichtung 200 mehrere Prozessoren zur Verfügung zu stellen. Zum Verbessern der Leistungsfä higkeit jedes Prozessors ist ihm ein eigenes Untersystem (201, 202) zusammen mit seinem eigenen lokalen Bus (jeweils 203, 204) zugeteilt worden. Dies wird detaillierter nachfolgend diskutiert werden. Wie es oben angegeben ist, enthalten das DSP-Untersystem 201 und das MCU-Untersystem 202 einen DSP (der nachfolgend diskutiert ist) bzw. eine MCU (die nachfolgend diskutiert ist). Jedes von dem DSP und der MCU ist ein Bus-Master, was bedeutet, dass jedes nach einem Zugriff über seinen jeweiligen lokalen Bus zu anderen Elementen der Vorrichtung 200 fragen kann. Jedes kann auch mehrere interne Busse enthalten, wenn Entwurfsanforderungen durch eine solche Struktur besser erfüllt werden.
  • Die Vorrichtung 200 enthält weiterhin drei andere Busse 205, 206 und 207, an welche verschiedene zusätzliche Elemente angeschlossen sind. Die anderen Elemente der Vorrichtung 200 sind Bus-Slaves, die auf Anfragen für einen Zugriff von den Bus-Mastern reagieren. Ein Speicher, wie beispielsweise ein statischer Direktzugriffsspeicher (SRAM), der als gemeinsam genutzter Systemspeicher verwendet werden kann, ist an den Bus 205 angeschlossen. Verschiedene periphere Vorrichtungen, durch welche die Vorrichtung 200 ihre nötigen Funktionen durchführen kann, sind in einem peripheren Untersystem 209 enthalten, das an einen peripheren Bus 206 angeschlossen ist. Schließlich sind externe Vorrichtung 210, wie beispielsweise ein Flash-ROM, an einen externen Bus 207 angeschlossen. Die Aufteilung von Funktionen unter den verschiedenen Vorrichtungen und Bussen, die oben angegeben sind, wird vorzugsweise durch den Entwickler für irgendwelche bestimmten Zwecke optimiert. Bei dem gegenwärtig beschriebenen Ausführungsbeispiel sind verschiedene Optimierungsauswahlen durchgeführt worden, um die Vorrichtung 200 geeignet zur Verwendung als das Kernstück von drahtlosen Funkkommunikationsvorrichtungen geeignet zu machen, wie beispielsweise ein Telefon für ein globales System für Funkkommunikationen (GSM), ein Telefon, das ein anderes Kommunikationsprotokoll unterstützt, wie beispielsweise einen Codemultiplexzugriff (CDMA), oder Vorrichtungen, die das drahtlose Anwendungsprotokoll (WAP) unterstützen.
  • Die oben beschriebenen Busse 203, 204, 205, 206 und 207 sind über ein Buszuteilungsmodul (BAM) 211 verbunden, das ein Untersystem für einen direkten Speicherzugriff (DMA) (nicht gezeigt) enthält. Die Konfiguration und die Operation des BAM 211 wird nachfolgend detaillierter beschrieben. Diese Konfiguration und diese Operation bestimmen, welche Busse miteinander kommunizieren können und zu welchen Zeiten. Die Entwicklung und die Operation des BAM 211 ist optimiert, um eine konfigurierbare minimale Zugriffsbandbreite durch das DSP-Untersystem 201 und das MCU-Untersystem 202 zu irgendeinem der erforderlichen anderen Systemelemente zu garantieren und um zu verhindern, dass ein Untersystem 201, 202 sich von dem anderen Untersystem 201, 202 ausschließt.
  • Beim illustrativen Ausführungsbeispiel der Vorrichtung 200 verwenden alle Bus-Master, einschließlich des DSP-Untersystems 201 und des MCU-Untersystems 202, einen gemeinsamen vereinheitlichten Adressenraum. Eine Anzahl von wichtigen Vorteilen kann durch Verwenden eines vereinheitlichten Adressenraums erhalten werden. Beispielsweise können das DSP-Untersystem 201 und das MCU-Untersystem 202 Daten oder einen Code im SRAM 208 lediglich durch führen eines Zeigers zu den Daten oder zu dem Code, die auszutauschen sind, austauschen, indem der Zeiger zu einer global bekannten Stelle geschrieben wird. Gemäß einem weiteren Vorteil eines vereinheitlichten Adressenraums wird die für eine Adressendecodierung im BAM 211 erforderliche Logik stark vereinfacht, weil dieselbe Decodierung ungeachtet dessen erforderlich ist, welcher Bus-Master oder Bus-Slave bei einer bestimmten Transaktion beteiligt ist. Gemäß einem weiteren Vorteil des vereinheitlichten Adressenraums wird ein sehr symmetrisches System erreicht. Da sowohl der DSP als auch die MCU denselben Adressenraum verwenden, kann ein Code einfacher von einer Vorrichtung zur anderen portiert werden. Daher kann der Entwickler einen Code zwischen dem DSP und der MCU besser aufteilen, was Probleme eines kritischen Pfads und ein Überladen eines Prozessors vermeidet.
  • Das illustrative Ausführungsbeispiel wird nun detaillierter in Zusammenhang mit 3 beschrieben. Zuerst wird das DSP-Untersystem 201 beschrieben.
  • Bei dem Kernstück des DSP-Untersystems 201 ist ein DSP-Kern 301 Analog Devices 218X. Andere Typen vom DSP-Kern 301 könnten verwendet werden, einschließlich denjenigen, die als Teil einer MCU oder anderen Vorrichtungen implementiert sind, die DSP-Fähigkeiten implementieren, und zwar in Hardware oder in Software. Ebenso sind im DSP-Untersystem 201 ein Speichermanagementsystem 302 einschließlich einer Steuerung zum Herunterladen, einer Cache- und Arbeitsspeichersteuerung und eines Cache-Speichers und von DSP-spezifischen Peripherien, einschließlich eines Viterbi-Coprozessors 303 und einer allgemeinen bzw. erzeugenden Verschlüsselungsmaschine 304. Die Funktionalität von solchen DSP-spezifischen Peripherien könnte in der DSP oder einer externen Hardware und/oder Software implementiert sein.
  • Merklich nicht vorhanden vom DSP-Untersystem 201 ist ein interner Nurlesespeicher (ROM). Statt dessen wird ein DSP-Code dynamisch in den DSP-Cache-Speicher 305 heruntergeladen oder in einen Cache gespeichert. Durch Verwenden eines Cache-Speichers 305 erfolgt das Herunterladen eines DSP-Codes für den Anwender transparent. Durch Verwenden herkömmlicher Cache-Techniken muss nicht alles von dem DSP-Code, was für eine bestimmte Funktion erforderlich ist, wie beispielsweise einen Sprachcodierer, zu irgendeinem bestimmten Zeitpunkt heruntergeladen werden. Vielmehr müssen nur diejenigen Fragmente bzw. Bruchteile, die sofort zur Verwendung durch den DSP nötig sind, heruntergeladen werden, was darin resultiert, dass weniger Speicher innerhalb des DSP-Untersystems 201 erforderlich ist. Obwohl die vorangehende Diskussion demonstriert, dass das DSP-Untersystem 201 keinen internen ROM erfordert, könnte einer enthalten sein, wenn es erwünscht ist, ohne vom Sinngehalt der Erfindung abzuweichen.
  • Ein DSP-Code kann in den Cache von entweder einem internen Systemspeicher 208 oder von einem externen Speicher, wie beispielsweise einen Flash-ROM, der als externe Vorrichtung 210 an den Bus 207 angeschlossen ist, geladen werden. Ein Ziehen eines Vorteils einer solchen Flexibilität minimiert Konflikte zwischen dem DSP-Untersystem 201 und dem MCU-Untersystem 202 in Bezug auf einen Speicherzugriff. Ein kritischer Code sollte dort platziert werden, wo der minimale Zusatz und die minimale Latenz während einer aktuellen Systemoperation auferlegt sein werden.
  • Für maximale Flexibilität in Bezug auf eine softwaremäßige Aufteilung kann auf alle Bussysteme 204, 205, 206 und 207 durch das DSP-Untersystem 201 über den DSP-Bus 203 und das BAM 211 zugegriffen werden.
  • Das DSP-Untersystem 201 hat auch einen internen statischen RAM 305, der für einen Code verwendet werden kann, der kritische Zeitgabeanforderungen hat, und für Daten. Der interne statische RAM 305 des DSP 301 ist für das MCU- Untersystem 202 auch über ein Speicherzugriffsschnittstellen-(MAI-)Modul 306 zugreifbar, das an den peripheren Bus 206 angeschlossen ist.
  • Das MCU-Untersystem 202 enthält einen MCU-Kern 307 ARM7TDM1 (von ARM Ltd. aus dem Vereinigten Königreich) oder einen anderen geeigneten MCU-Zugriff. Das MCU-Untersystem 202 enthält weiterhin Takterzeugungsschaltungen 308 und einen kleinen ROM 309, der einen Ureingabe- bzw. Urlade-Code zum Laden von extern gespeicherter Software enthält.
  • Der Speicher 208 des illustrativen Ausführungsbeispiels ist ein interner statischer RAM (SRAM) zum Speichern von Daten und einem Code. Auf ihn ist sowohl durch das DSP-Untersystem 201 als auch das MCU-Untersystem 202 über ihre jeweiligen Busse 203 und 204 zugreifbar, wenn er über das BAM 211 an den Speicherbus 205 angeschlossen ist. Ein zeitkritischer MCU-Untersystemcode kann in diesem Speicher platziert werden, um ihn von dem zeitkritischen Code für das DSP-Untersystem zu trennen. Ein weniger zeitkritischer DSP-Code kann auch im statischen RAM 208 gespeichert werden.
  • Das periphere Untersystem 209 enthält eine allgemeine Unterbrechungssteuerung 310, einen allgemeinen Zeitgeber 311, ein allgemeines serielles Port 312, ein Eingabe/Ausgabe-(GPIO-)Port für allgemeine Zwecke 313 und ein GSM-I/O-System 314. Die allgemeine Unterbrechungssteuerung 310 sammelt alle durch das System empfangenen Unterbrechungen, gruppiert sie in softwaremäßig konfigurierbaren Gruppen und ordnet sie einem Prioritätspegel zu. Somit wird ein vollständig programmierbares Unterbrechungs-Prioritätsschema implementiert. Beim illustrativen Ausführungsbeispiel existieren auch drei unabhängige Unterbrechungssteuerungen (nicht gezeigt), und zwar eine für jeweils das DSP-Untersystem 201, das MCU-Untersystem 202 und intern zum BAM 211. Das allgemeine Zeitgebermodul 311 ist ein vollständig softwaremäßig konfigurierbares Zeitgebermodul, das zum Beibehalten einer Systemzeitgabe verwendet wird. Das Zeitgebermodul kann Unterbrechungen erzeugen und externe Verbindungen zur Vorrichtung 200 einstellen oder löschen. Das allgemeine serielle Port 312 ist ein vollständig softwaremäßig programmierbarer Sequencer bzw. eine Ablaufsteuerung mit spezifischer Hardware zum Implementieren von Standards für serielle Ports. Das allgemeine serielle Port 312 kann zum Dienen der meisten bekannten seriellen Standards programmiert werden. Somit kann jeder Anwender der Vor richtung 200 eindeutige hardwarespezifische serielle Schnittstellen erzeugen, ohne irgendeine der internen Strukturen der Vorrichtung 200 zu modifizieren. Die Funktionalität der GPIO 313 lässt verschiedene externe Verbindungen zur Vorrichtung 200 zu, um für irgendwelche bestimmten eindeutigen hardware- oder softwarespezifischen Schnittstellenanforderungen verwendet zu werden.
  • Der externe Bus 207 stellt eine Hochgeschwindigkeitsverbindung zur Vorrichtung 200 zur Verfügung, welche Verbindung zum Verbinden von Elementen, wie beispielsweise eines Flash-ROM, geeignet ist, welche eine parallele Schnittstelle erfordern.
  • Wie es oben beschrieben ist, sind alle Busse 203, 204, 205, 206 und 207 über das Buszuteilungsmodul (BAM) 211 miteinander verbunden. Das Buszuteilungsmodul enthält drei Zuteilungseinheiten 314, 315 und 316 und ein Direktspeicherzugriffs-(DMA)-Untersystem mit einem DMA-Bus 317 und einer DMA-Steuerung 318, die nachfolgend beschrieben sind. Wie es nachfolgend beschrieben werden wird, ist das BAM 211 teilweise dadurch, dass man eine separate Zuteilungseinheit für einen jeweiligen Slave-Bus hat, derart aufgebaut und angeordnet, um ein Blockieren zu vermeiden, wenn mehrere Bus-Master jeweils nach einem Zugriff auf Betriebsmittelfragen, die an die unterschiedlichen Slave-Busse angeschlossen sind.
  • Die drei Buszuteilungseinheiten 314, 315 und 316 entsprechen jeweils einem der drei Hauptsystembusse, nämlich dem Speicherbus 205, dem peripheren Bus 206 bzw. dem externen Bus 207. Die drei Zuteilungseinheiten 314, 315 und 316 sind strukturell identisch (die Zuteilungsverfahren können unterschiedlich sein), sind aber jeweils für ihren eigenen Bus 205, 206 und 207 bestimmt.
  • Eine Zuteilungseinheit 314 verbindet selektiv den Speicherbus 205 mit einem von dem DSP-Bus 203, dem MCU-Bus 204, dem DMA-Bus (nachfolgend diskutiert) oder dem DSP-Cache.
  • Eine zweite Zuteilungseinheit 315 verbindet selektiv den peripheren Bus 206 mit einem von dem DSP-Bus 203, dem MCU-Bus 204 und dem DMA-Bus (nachfolgend diskutiert).
  • Eine dritte Zuteilungseinheit 316 verbindet selektiv den externen Bus 207 mit einem von dem DSP-Bus 203, dem MCU-Bus 204, dem DMA-Bus (nachfolgend diskutiert) und dem DSP-Cache.
  • Es sollte offensichtlich sein, dass die in 3 dargestellte Struktur nicht blockierend ist, wie es nun diskutiert wird. Bus-Master, z. B. der DSP-Kern 301 und die MCU 307, sind jeweils mit ihrem eigenen Bus verbunden. Eine lokale Kommunikation durch einen Bus-Master auf seinem eigenen Bus ist vollständig unabhängig von einer lokalen Kommunikation durch einen anderen Bus-Master auf seinem eigenen Bus. Betriebsmittel, d. h. Bus-Slaves, sind auf mehrere Slave-Busse verteilt, wie z. B. die Busse 205, 206, 207. Wenn ein Bus-Master nach einem Zugriff auf ein Betriebsmittel an einem Slave-Bus fragt und ein weiterer Bus-Master nach einem Zugriff zu einem anderen Betriebsmittel an einem weiteren Slave-Bus fragt, erfolgt keine Blockierung, weil unabhängige Zuteilungseinheiten die separaten Anfragen behandeln. Somit kann der Entwickler den Entwurf durch Separieren von gemeinsam genutzten Betriebsmitteln demgemäß optimieren, welcher Bus-Master der primäre Nutzer des Betriebsmittels ist. Andere nicht blockierende Strukturen sind möglich, die beispielsweise ein Mehrfach-Port verwenden, und eine nicht blockierende parallele Schaltstruktur kann verwendet werden.
  • Die Trennung von gemeinsam genutzten Betriebsmitteln kann wie folgt durchgeführt werden. Wenn der DSP-Kern 301 ein erstes Betriebsmittel mehr als die MCU 307 verwendet, aber die MCU 307 ein zweites Betriebsmittel mehr als den DSP-Kern 301 verwendet, dann sollten das erste und das zweite Betriebsmittel an unterschiedlichen Slave-Bussen angebracht sein.
  • Jede Zuteilungseinheit 314, 315, 316 gewährt einen Zugriff auf ihren Bus 205, 206, 207 gemäß dem nachfolgend beschriebenen Verfahren. Ein Auswahlsignal für einen aktiven Bus von einem Requester zu der Zuteilungseinheit 314, 315, 316 zeigt eine Anfrage nach einem Zugriff und einer Zuteilung an. Die Zuteilungseinheit 314, 315, 316 bringt entweder ein Wartesignal zum Verzögern einer Zugriffs zurück oder gewährt den Zugriff. Wenn das Bus-Auswahlsignal eines durch einen Requester gewährten Zugriffs inaktiv wird, zeigt es der Zuteilungseinheit an, dass der nächste Zuteilungszyklus beginnen kann.
  • Zum Maximieren der Leistungsfähigkeit der Vorrichtung 200 kann der DSP-Cachezugriff in einem Blockmode durchgeführt werden, in welchem (beispielsweise) bis zu 12 Worten gleichzeitig gelesen werden. Bei dem illustrativen Ausführungsbeispiel sind Worte 16 Bits lang, jedoch können andere Längen verwendet werden, wie es durch bestimmte Busentwürfe erforderlich ist, wie es im Stand der Technik bekannt ist. Somit kann ein vollständiger Vorteil aus der Bandbreite gezogen werden, die durch beispielsweise einen Flash-ROM zur Verfügung gestellt ist, der als externe Vorrichtung 210 an den externen Bus 207 angeschlossen ist.
  • Das DMA-Untersystem des Buszuteilungsmoduls enthält einen DMA-Bus 317 und eine Mehrkanal-DMA-Steuerung 318. Bei dem illustrativen Ausführungsbeispiel wird eine 16-Kanal-DMA-Steuerung 318 verwendet. Die DMA-Steuerung 318 ist ein Bus-Master, wie der DSP-Kern 301 und die MCU 307. Der DMA-Bus 317 verbindet die drei Zuteilungseinheiten 314, 315, 316, so dass ein DMA zwischen Vorrichtungen durchgeführt werden kann, die mit irgendeinem der drei Busse verbunden sind, nämlich dem Speicherbus 205, dem peripheren Bus 206 und dem externen Bus 207. Daten oder ein Code können von irgendeiner Adressenstelle auf einem der drei Busse 205, 206 und 207 zu irgendeiner Adressemstelle auf einem anderen der drei Busse 205, 206 und 207 transferiert werden. Die DMA-Steuerung 318 enthält ein Wort eines Übertragungsspeichers, der der Speicher ist, der zum Durchführen des oben angegebenen Transfers verwendet wird und nachfolgend detailliert beschrieben wird. Die DMA-Steuerung 318 enthält auch einen anderen Speicher, der zu Zwecken verwendet wird, die im Stand der Technik bekannt sind. Andere Speichergrößen könnten verwendet werden, wenn es für einen bestimmten Zweck erwünscht ist. Die DMA-Steuerung 318 liest in einem Wort von einer Quellenstelle während eines ersten Speicherzyklus, schreibt dann das Wort aus zu einer Zielortstelle während eines zweiten nachfolgenden Speicherzyklus.
  • Die DMA-Steuerung 318 regiert die Operation des DMA-Busses 317. Die DMA-Steuerung 318 behandelt Datenübertragungen für sowohl unterbrechungsangetriebene I/O-Vorrichtungen als auch für Speichervorrichtungen. Die DMA-Steuerung 318 enthält separate Vollduplex-Kanäle mit identischer Funktionalität. Jeder Kanal ist durch entweder das MCU-Untersystem 202 oder das DSP-Untersystem 201 über den peripheren Bus 206 gesteuert und konfiguriert. Nach dem die DMA-Steuerung 318 eine programmierbare Anzahl von Adressenstellen überträgt, teilt sie der Unterbrechungssteuerung 310 eine Unterbrechung zu.
  • Die DMA-Steuerung 318 kann die folgenden Aufgaben durchführen, was dem System eine zusätzliche Funktionalität gibt. Ein RAM-Puffer kann zwischen einer I/O-Vorrichtung und beispielsweise dem MCU-Untersystem 202 erzeugt werden. Somit kann die Anzahl von Unterbrechungen, die zum Handhaben von I/O-Daten erforderlich sind, reduziert werden. In einem solchen Fall überträgt die DMA-Steuerung einen Block einer vorbestimmten oder programmierbaren Anzahl von Worten von Daten zwischen einem Speichermodul, wie beispielsweise dem SRAM 208, und der I/O-Peripherie innerhalb des Peripherie-Untersystems 209. Die DMA-Steuerung kann einen Block von Daten, wie beispielsweise eine Tabelle oder ein Programm, von einem Flash-ROM unter den externen Vorrichtungen 210 zu dem internen DSP-Untersystem-Datenspeicher, Programmspeicher oder Cache bewegen. Schließlich kann die DMA-Steuerung das Kopieren von irgendwelchen großen Speicherblöcken von einer Stelle zu einer anderen im System bewirken, wie es erforderlich sein kann.
  • Die DSP-Cachesteuerung oder Programmspeichermanagementeinheit (PMMU) managt das DSP-Anweisungsspeichersystem mit einer Softwareunterstützung, so dass eine begrenzte Menge an bestimmtem DSP-RAM eine ausreichende DSP-Leistungsfähigkeit zulassen wird. Die Zeit, die dabei verbraucht wird, darauf zu warten, dass ein Speicher vom externen FLASH oder vom System-SRAM ein Holen durchführt, sollte minimiert werden. Gleichzeitig sollte die PMMU die Komplexität der Softwareunterstützung und die Menge an Softwarezusatz begrenzen, um ein Herunterladen und eine erneute Lokalisierung eines Codes zu handhaben.
  • Die DSP-Programmspeicherabbildung ist in 5 gezeigt. Der DSP hat einen erweiterten Adressenbereich und eindeutige Beschränkungen bezüglich der Stelle von Daten in einem Programmspeicher.
  • Der Adressenbereich ist durch Verwenden eines PMOVLAY-Registers erweitert worden. Dieses Register kann von 0 bis 1023 eingestellt werden, was den DSP-Anweisungsadressenbereich effektiv auf 512 K Worte expandiert bzw. erweitert. Es ist zu beachten, dass der Wert von PMOVLAY keine Wirkung auf Datenzugriffe in den oberen 8 K hat. Die Zugriffe werden auf einen externen 8 K-Speicherraum abgebildet. Die unteren 8 K des Speicherraums enthalten einen internen RAM, der für sowohl einen Code als auch Daten verwendet werden kann. Dieser Teil des Speichers ist wie in den herkömmlichen DSP-Fällen immer vorhanden.
  • Es sollte beachtet werden, dass, obwohl das PMOVLAY-Register in der Tat 10 Bits hat, die PMMU nur 7 von ihnen verwendet. PMOVLAY[5:0] wählt eine der verfügbaren 64 Seiten aus. PMOVLAY[6] ist ein Steuerbit, das einen Betriebsmode ermöglicht, der "Direkte Ausführung" genannt wird. Dieser wird in den folgenden Abschnitten detaillierter erklärt werden.
  • Die PMMU/Cache-Einheit wird in den Überlagerungsabschnitt des PM-Raums abgebildet. Alles Holen von Anweisungen zu den oberen 8 K des normalen 14-Bit-Adressenraums des DSP wird zusammen mit dem 6-Bit-Wert des PMOVLAY-Registers zu der PMMU gesendet. Dies ergibt effektiv einen 19-Bit-(512 K)-Adressenraum für einen Code. Ein direkt abgebildeter Cache wird dazu verwendet, zu bestimmen, welcher Code gegenwärtig im 2 K-Cache-Speicher resident ist.
  • Die PMMU ist an dem internen Anweisungsbus (IBUS) und dem internen Adres-senbus (PMABUS) des DSP angeordnet (siehe 6). Dies stellt sicher, dass ein Holen von Anweisungen nicht den externen Bus anbindet und die Leistungsfähigkeit weiter reduziert. Steuerregister und der Tag-Speicher werden in den I/O-Raum des DSP einer Speicherabbildung unterzogen, und zwar in einem Null-Wartezustandsbereich. Die PMMU hat einen Zugriff auf die Schnittstelle außerhalb des Chips (über EBUS), und den System-RAM (über RBUS) über die EBUS- und RBUS-Zuteilungseinheiten, wie es in 6 gezeigt ist. Auf diese Busse wird durch die Herunterladesteuerung der PMMU zugegriffen, oder beim Ausführen direkt vom FLASH oder vom System-RAM. Der ARM-Mikroprozessor, eine zentralisierte SysDMA-Steuerung, und der erweitere I/O-Bus des DSP (DSPBUS) haben auch einen Zugriff auf diese Busse. Siehe der Erklärung halber 6.
  • Schließlich kann die PMMU auch einen Code zu dem internen Programm des DSP-Kerns und den Datenspeichern über das Kern-IDMA-Port herunterladen. Diese Schnittstelle wird mit der MAI-Peripherie gemeinsam genutzt, welche am PBUS angeordnet ist.
  • Die PMMU managt diesen Coderaum durch Bestimmen, wo die angefragte Anweisung zu finden ist, und entweder durch Zurückbringen der Anweisung in einem einzigen Zyklus oder durch Anzeigen zum Kern, dass ein Cache-Nichttreffer aufgetreten ist, und durch Holen des angefragten Codeblocks. Ein 4 K-direkt abgebildeter Cache bedeckt alle Codes, die in den Seiten 1–63 angeordnet sind. Die Seite 0 ist eine spezielle Seite, wo der Cache-Speicher physikalisch resident ist. Siehe 7.
  • Beim Arbeiten im Cachemode sollte die Seite 0 NICHT VERWENDET WERDEN. Ein Zugreifen auf den Cache in einer Überlagerung 0 wird in unbekannten Ergebnissen resultieren, da irgendein Teil des Codes zu dieser Zeit im Cache resident sein kann.
  • Eine Überlagerung 0 wird zum Unterstützen eines dynamischen TTP-Herunterladeschemas oder einfacher Anwendungen, wo eine Gesamtheit von 12 K eines PM-Raums ausreichend ist, verwendet. Bei beiden dieser Schemen wird der Cache einfach ein fester Speicher, und das Speichermodell ist einfach 12 K eines festen PM-RAM. Der Tag-Speicher ist gesperrt und Nichttreffer ist immer deaktiviert.
  • PMMU RAM kann durch ein DMA-Merkmal mit einem Null-Zusatz heruntergeladen werden. Dies ist eindeutig von einem internen PM-Speicher, der eine Zyklus-Stehloperation. Der PMMU RAM ist auch diesbezüglich eindeutig, dass er keine PM-Daten erhalten kann. Ein Versuchen eines Zugriffs auf Daten von einer Adresse oberhalb von 0x2000 resultiert ungeachtet der PMOVERLAY-Einstellung in einem externen Speicherzyklus.
  • Der gesamte virtuelle 512 K-Coderaum hat eine entsprechende physikalische Speicherstelle in entweder dem FLASH oder dem Systemspeicher. Eine erzwungene Aufteilung hat die oberen 8 Seiten in den System-RAM abgebildet und Überlagerungen 1–55 zum FLASH abgebildet. Eine Überlagerung 0 (nachfolgend nicht gezeigt) und die untersten 8 K des PM-Speichers haben keine direkte Abbildung zu einer bestimmten Quellenstelle, da die Quellenadresse des zu herunterladenden Codes programmierbar ist.
  • Die PMMU kann eine Anfrage zum Verlangsamen eines Speichers über die PMMU-Herunterladesteuerschnittstelle initiieren. Diese Anfrage erfolgt über den PMMUBUS. Diese Anfragen, die von zwei primären Quellen kommen können, haben die folgende Priorität und Aktion:
    (1) Cache-Nichttreffer Holen von 8 Anweisungen – verzögert den Prozessor
    (2) SW-Herunterladung Laden von Nx8 Anweisungen – transparent zum DSP
  • Ein Cache-Nichttreffer ist von höchster Priorität, weil der DSP effektiv an dieser Stelle verzögert ist. Obwohl er zum Reagieren auf Unterbrechungen fähig ist, ist der DSP effektiv im Leerzustand. Ein Cache-Nichttreffer resultiert darin, dass 8 Anweisungen vom externen Speicher geholt und in den Cache geschrieben werden, bevor eine Ausführung wieder anfängt. Das Herunterladen von Software hat zwei Zwecke. Einer besteht einfach im Laden eines Codes oder Daten in den RAM, bevor eine Ausführung beginnt, und der zweite besteht im Unterstützen eines dynamischen Herunterlademodes, wo ein Code oder Daten während eines Betriebs geladen werden, um entweder die Cache-Nichttrefferrate (was ein Vorladen eines Caches bedeutet) zu reduzieren, oder in einem kleinen Speichersystem effizient auszuführen (was ein dynamisches TTP-Herunterladen bedeutet).
  • Die PMMU DMA-Steuerung wird geeignet mit jeder dieser 2 Anfragen mit der oben aufgelisteten Priorität fertig. Insoweit der Anwender betroffen ist, gibt es einige Dinge zu merken. Die der PMMU zugeteilte Bandbreite wird stark durch den aktuellen Systemzustand sowie durch programmierbare Merkmale, wie beispielsweise Zuteilungseinheits-Einstellungen, beeinflusst. Herunterladungen sind eine geringere Priorität zum EBUS zugeteilt und sind oft von einer großen Anzahl von Worten und somit werden sie durch eine MCU- und DMA-Steuerungsaktivität stärker beeinflusst.
  • Ein Herunterladen von Software ist der einzige Typ eines Herunterladens unter eine vollständigen softwaremäßigen Steuerung und verdient somit eine spezielle Aufmerksamkeit. Die Herunterladesteuerung ist verantwortlich zum Herunterladen zu sowohl einem internen festen RAM als auch einem PMMU RAM, was sowohl einen direkt abgebildeten Cache als auch Teile einer Überlagerung 0 enthält, und stellt eine konsistente Schnittstelle zur Verfügung, um dies durchzuführen. Jedoch ist der aktuelle Mechanismus zum Beenden des Herunterladens völlig anders. Herunterladungen zu festen Speichern finden tatsächlich über das Kern-IDMA-Port statt und sind somit eine Zyklusstehloperation, was in einem Verlust von einem DSP-Zyklus pro heruntergeladener Anweisung resultiert. Daten können auch zu einem festen PM und DM über diese IDMA-Schnittstelle heruntergeladen werden. Herunterladungen zu einem PMMU RAM, die keinen Zyklus stehlen und zu einer Systemleistungsfähigkeit transparent sind, finden über eine spezielle Schnittstelle zu dem PMMU RAM statt. Daten können nicht zu diesem Speicher heruntergeladen werden.
  • Der Prozess zum Initiieren eines Herunterladens ist wie folgt:
    • 1. Das DWNLDDONE-Bit (Herunterladen-Durchgeführt-Bit) von PMMSR muss geprüft werden, um sicherzustellen, dass keine anderen Herunterladungen von Software gerade durchgeführt werden. Ein Versuchen zum Initiieren eines neuen SW-Herunterladens, während eines gerade durchgeführt wird, ist ein Fehler, der in BADDWLDINT resultieren wird, was erzeugt wird, und im Einstellen eines Bits für einen Zustand eines schlechten Herunterladens. Diese neue Anfrage wird ignoriert werden.
    • 2. Wenn das Herunterladen zu einem festen RAM oder zu einer Überlagerung 0 ist, dann muss eine Quellenadresse zur Verfügung gestellt werden, bevor das Schreiben zu PMMDWLD2 darunter ist. Diese 32-Bit-Adresse wird zu Anwendungsregistern DWLDSRC1 und DWLDSRC2 geschrieben. Die Quellenadresse wird als Byte-Adresse im Systemraum spezifiziert. Wenn das Herunterladen zu einem Cache erfolgt, wird das DWLDSRC-Register nicht verwendet, da die Quelle aus der Zielortadresse berechnet wird.
    • 3. Als Nächstes wird PMMDWLD1 mit der Zielort-Blockadresse geschrieben. Für Herunterladungen zu einem Cache ist dies eine virtuelle Codeadresse/8(codeaddr[19.3]). Für Herunterladungen zu einem festen Speicher ist dies ein 10-Bit-Wert (0000-1FFF, um 3 nach rechts verschoben), und für Herunterladungen zu PMOVLAY0 ist dies ein 9-Bit-Wert (0000-FFF, um 3 nach rechts verschoben).
    • 4. Als Nächstes wird PMMDWLD2 mit Herunterladetyp (der einen Zielort bestimmt), einer Herunterlade-Blockgröße (2 oder 4 Worte) und Wortzahl (8-8048 in Vielfachen von 8) geschrieben. Dieses Schreiben zu DWLD2 initiiert den Transfer, so dass in der Reihenfolge Vorsorge getroffen werden muss, in welcher die Register beschrieben werden. Herunterladetyp bzw. DwldType wählt den Zielort wie folgt aus:
      Figure 00170001
  • Die Herunterlade-Blockgröße kann zum Helfen beim Abstimmen der externen Busausnutzung verwendet werden. Eine kleinere Blockgröße wird in einer reduzierten garantierten DSP-Bandbreite resultieren, wenn sie mehr zuzuteilen haben wird, wird aber diese Bandbreite für andere zur Verwendung freihalten.
  • Auf eine Beendigung des gesamten Herunterladens hin wird DWLDDONEINT erzeugt werden und wird im Statusregister angezeigt werden. Dies wird zulassen, dass die SW (Software) die Beendigung des Herunterladens überwacht und eine geeignete Aktion unternehmen, wie beispielsweise das nächstes Herunterladen planen. Dies könnte in einer dynamischen Herunterladeumgebung den Herunterlade-Kernel zum Bestimmen der nächsten Aufgabe aufrufen. DWLDDONEINT wird durch entweder Initiieren eines neuen Herunterladens oder durch Schreiben einer 0 zu dem Bit im Steuerregister gelöscht.
  • SW-Herunterladungen können auf zwei Arten beendet oder angehalten werden: einmal durch SW und ein anderes Mal durch HW. Das SW-Verfahren erfolgt durch Schreiben zu dem Abbruchs-Bit des PMMSCR-Steuerregisters. Dies bricht das Herunterladen bei der nächsten Stelle ab. Dies ist zur Verwendung in dem Fall beabsichtigt, in welchem eine Verzweigung veranlasst hat, dass das Herunterladen keinen Nutzen hat, oder in Kontextschaltern. Im letzteren Fall muss DW die aktuelle Adresse des Herunterladens lesen und den PMMU-Status absichern, so dass das Herunterladen ab seiner aktuellen Stelle neu gestartet werden kann, wenn ein Kontext wiedergewonnen wird. Das Hardware-Verfahren hat dasselbe Ergebnis. Eine primäre Eingabe BREAK (Abbruch) veranlasst, dass die Herunterladesteuerung das aktuelle Herunterladen abbricht. Dies zur Verwendung für eine DSP-Emulation beabsichtigt, wo das Herunterladen abgebrochen werden sollte, wenn der DSP eine Abbruchstelle getroffen hat.
  • SW-Herunterladungen haben einen potentiellen Fehlerzustand, der dann resultiert, wenn die auszuführende Anweisung noch nicht heruntergeladen worden ist. dies wird für unterschiedliche Bereiche eines Speichers unterschiedlich gehandhabt. Ein Cache-Speicher hat einen eingebauten Schutzmechanismus, da dies einfach in einem Cache-Nichttreffer resultieren wird. Das SW-Herunterladen wird vorgeleert werden, und der Cache-Block wird geladen werden. Auf eine Beendigung davon wird das SW-Herunterladen fortfahren, wo es nach einem neuen Erlangen des E/R BUS losgelassen ist. Die Herunterladesteuerungs-HW prüft den Tag von Cache-Blöcken, um geladen zu werden, um sicherzustellen, dass es nicht versucht, einen Block zu laden, der bereits im Cache vorhanden ist. Dies ist insbesondere in dem oben beschriebenen Fall nützlich, da es zulässt, das Herunterladen wieder zu bekommen, bevor der Code ausgeführt wird, und zwar so schnell wie möglich. Ein Herunterladen zu einem internen Speicher und PMOVLAZ 0 haben keinen HW-Schutz oder eine Erfassung. Es ist dem Herunterlade-Kernel eines Anwenders überlassen, sicherzustellen, dass alle nötigen Teile der SW vor einem Ausführen eines Codes verfügbar sind.
  • Die Herunterladesteuerung ist entwickelt, um die Latenz von Cache-Nichttreffern zu minimieren und Herunterladungen in einer minimalen Menge an Zeit zu beenden. Die Herunterladesteuerung arbeitet vollständig in DSPCLK. Die später beschriebene ER-Busschnittstelle ist verantwortlich für die Synchronisation der Busschnittstelle zurück zum DSPCLK. Die Herunterladesteuerung arbeitet auch an Worten und innerhalb des DSP-Adressenraums. Die Umwandlung von 16-Bit-Daten in 24-Bit-Worte und die Quellenadressenumsetzung in eine Systemraumadresse wird auch in der Busschnittstelle gehandhabt. Dies vereinfacht die Entwicklung einer Herunterladesteuerung.
  • Das Basiszustandsdiagramm ist in 9 gezeigt. Die Mehrheit der Zustände ist auf ein Herunterladen bezogen, und insbesondere auf ein Herunterladen zu einem Cache. Die Zustandsmaschine kann auf andere Arten optimiert werden, die im Stand der Technik bekannt sind. Die Herunterladeabbruchübergänge sind nicht gezeigt.
  • Die Herunterladesteuerung unterstützt zwei Kanäle und kann von einem Herunterladen zu einem Cache-Nichttreffer umschalten, und dann zurück zu dem Herunterladen, wo von ihm abgelassen ist. Cache-Nichttreffer enden immer, wenn sie einmal gestartet sind. Der Herunterladekanal hat 3 Grund-Herunterlademoden: zum Cache, zu PMOLVAY 0 und zu einem festen Speicher. Die Grundoperation der Zustandsmaschine ist (1) Warten auf einen Cache-Nichttreffer oder eine Herunterladeanfrage, (2) Anfragen, dass die Busschnittstelle ein Herunterladen initiiert, (3) Warten auf DSPACK, (4) Bewegen eines Worts vom Puffer zum Zielort, und (5) Wiederholen, bis alle angefragten Transfers bzw. Übertragungen beendet sind.
  • Diese Operation wird durch Herunterladungen weiter kompliziert, die in Anfragen einer Größe BlkSz, ein Herunterladen zu einem Cache, der erfordert, dass die Tags gelesen und modifiziert werden, Kanaländerungen und den direkten Ausführungsmode, der im nächsten Abschnitt beschrieben ist, aufgeteilt sind. Ein Herunterladen zum Cache ist besonders raffiniert, da wir nicht Cache-Blöcke herunterladen möchten, die bereits resident sind, und dieses Herunterladen zu einem Cache erfordert eine sorgfältige Steuerung der Tags, so dass ungültige Anweisungen nicht ausgeführt werden.
  • Es ist möglich, einen Cache-Ersatz nach einem Cache-Nichttreffer zu sperren. Dieser Mode einer Ausführung wird "Direkte Ausführung" genannt, da der Code direkt vom FLASH oder System-RAM nahezu bei einer viel niedrigeren Rate laufen gelassen wird. Der vom Speicher geholte Code wird einfach eher direkt zu dem IBUS getrieben, als zurück in den Cache geschrieben. In diesem Mode sind Nichttreffer eher auf einer Anweisung-für-Anweisung-Basis als auf einer Blockbasis, d. h. nachdem eine Anweisung geholt ist, wird sie ausgeführt.
  • Dieser Mode kann auf zwei Arten ermöglicht werden. Die erste erfolgt durch Steuerregisterbits, nämlich ExeFLASH oder ExeSRAM. Dies ermöglicht eine direkte Ausführung getrennt für einen Code, der jeweils im FLASH und SysRAM resident ist. Die zweite erfolgt durch PMOVLAY[6]. Ein Einstellen von PMOVLAY[6] = 1 gibt diesen Mode für den aktuellen Seitenwert frei. Beispielswei se kann die SW PMOVLAY = 66 einstellen, um eine Überlagerung 2 direkt ausführen.
  • Die Cache-HW bzw. Cache-Hardware ist in diesem Mode noch aktiv. Wenn der Anwender wünscht, die gesamte Cachefunktionalität vollständig zu sperren, sollte statt dessen PMOVLAY 0 verwendet werden. Dieser Mode beeinflusst dann nur die Herunterladesteuerung und ihre Reaktion auf einen Cache-Nichttreffer. Bei einem Cache-Nichttreffer stellt die PMMU eher als dass sie die Anweisung in einen Cache-Speicher schreibt, sie direkt dem auszuführenden Kern zur Verfügung und kehrt dann zu ihrem LEER-Zustand zurück. Nachdem der Kern die einzelne Anweisung ausführt, wird er sehr wahrscheinlich die nächste Anweisung anfragen, die auch ein Cache-Nichttreffer sein wird (da die Tags in diesem Mode niemals modifiziert werden), und derselbe Prozess wiederholt sich. Der einzige Unterschied kann darin bestehen, dass ein einziges 16-Bit-Holen ein Wort beenden kann, da ein Zusatz-Byte von dem vorherigen Holen möglichenrweise verwendet werden kann.
  • Dieser Mode ist dafür beabsichtigt, dem Anwender zu erlauben, Teile seines Codes direkt von der Speicherquelle laufen zu lassen, eher als dass er ihn zuerst in einem Cache laden muss, wo er irgendetwas anderes überschreiben werden muss. Dies ist am nützlichsten für Teile des Codes, die ohne Schleifen linear sind, da dieser Typ von Codestrom nicht gut für einen Cache geeignet ist. Es wird erwartet, dass dieser Mode unter einer SW-Steuerung im Fluge bzw. im Vorübergehen bzw. sehr schnell passiert, und würde in dem Code selbst für einen bestimmten Abschnitt des Codes ermöglicht werden. Dieser Mode macht auch Sinn zum einfachen Ermöglichen von diesem auf einem RBUS, so dass der gesamte SRAM-Code direkt vom SRAM ausgeführt wird und nicht im Cache gespeichert wird. Eine schließliche Verwendung besteht in einem Austestverfahren. Ein Ändern von PMOVLAY[6] zu 1 veranlasst, dass der Code extern ausgeführt wird, wo er beobachtet werden kann.
  • Obwohl es zuerst erscheint, dass ein Ausführen eines geradlinigen Codes direkt oder von einem Cache dieselbe Menge an Zeit dauern sollte, ist der Mode für ein direktes Ausführen tatsächlich langsamer. Dies ist aufgrund der Tatsache so, dass jede gelesene Anweisung eine neue Speicheranfrage erfordert, und somit viel mehr Gewährungen des externen Busses durch die Zuteilungseinheiten.
  • Die vorliegende Erfindung ist nun in Zusammenhang mit einer Anzahl von ihren spezifischen Ausführungsbeispielen beschrieben worden. Jedoch sollten nun zahlreiche Modifikationen, von denen gedacht wird, dass sie in den Schutzumfang der vorliegenden Erfindung fallen, Fachleuten auf dem Gebiet offensichtlich sein. Daher ist beabsichtigt, dass der Schutzumfang der vorliegenden Erfindung nur durch den Schutzumfang der hierzu beigefügten Ansprüche beschränkt ist.

Claims (15)

  1. Mehrfachprozessor-Datenverarbeitungssystem, das folgendes aufweist: einen ersten Prozessor (301), einen zweiten Prozessor (307), ein erstes gemeinsam genutztes Betriebsmittel (208), das betriebsmäßig mit dem ersten und dem zweiten Prozessor verbunden ist; einen Cachespeicher (305), der betriebsmäßig mit dem ersten Prozessor und mit dem ersten gemeinsam genutzten Betriebsmittel verbunden ist, wodurch Information vom ersten gemeinsam genutzten Betriebsmittel zum ersten Prozessor sowohl direkt als auch über den Cachespeicher transferiert bzw. übertragen werden kann; und gekennzeichnet durch: eine Cachespeicher-Steuerung (302), die auf eine Ausführung einer Softwareanweisung reagiert, um ein dynamisches Herunterladen durchzuführen, um Anweisungen vor einem Auftreten eines Cache-Nichttreffers, was unerwartet ein Holen von Anweisungen zum Laden in den Cachespeicher nötig macht, in den Cachespeicher vorzuladen.
  2. System nach Anspruch 1, das weiterhin folgendes aufweist: eine Entscheidungseinheit (314), die betreibbar ist, um eine Verbindung zwischen dem ersten gemeinsam genutzten Betriebsmittel (208) und dem ersten und dem zweiten Prozessor (301, 307) zu bewirken, wobei die Entscheidungseinheit einen jeweiligen der Prozessoren auswählt, welchem ein Zugriff zu dem ersten gemeinsam genutzten Betriebsmittel zu gewähren ist, so dass jeder von dem ersten und dem zweiten Prozessor eine verfügbare maximal mögliche Bandbreite ohne ein Blockieren hat.
  3. System nach Anspruch 1, das weiterhin folgendes aufweist: ein zweites gemeinsam genutztes Betriebsmittel (210), das betriebsmäßig mit dem ersten und dem zweiten Prozessor (301, 307) verbunden ist, wobei das erste und das zweite Betriebsmittel (208, 210) unterschiedliche Zugriffszykluszeiten haben.
  4. System nach Anspruch 1, das weiterhin folgendes aufweist: eine Sequenz von Softwareanweisungen, die auf dem ersten Prozessor (301) laufen, welche Anweisungen zur Cachespeichersteuerung (302) zum Vorladen des Cachespeichers (305) mit Information vom gemeinsam genutzten Betriebsmittel, bevor der Cache-Nichttreffer auftritt, enthalten.
  5. System nach Anspruch 1, wobei der erste Prozessor (301) und der zweite Prozessor (307) auf Betriebsmittel jeweils mit unterschiedlichen maximalen Geschwindigkeiten zugreifen.
  6. System nach Anspruch 5, wobei die maximale Geschwindigkeit, mit welcher der erste Prozessor (301) auf Betriebsmittel zugreift, größer als eine maximale Zugriffsgeschwindigkeit des gemeinsam genutzten Betriebsmittels ist.
  7. System nach Anspruch 1, das weiterhin folgendes aufweist: ein zweites gemeinsam genutztes Betriebsmittel (210), das mit dem ersten und dem zweiten Prozessor (301, 307) verbunden ist, wobei der Cachespeicher (305) auch mit dem zweiten gemeinsam genutzten Betriebsmittel (210) verbunden ist, wodurch Information vom zweiten genutzten Betriebsmittel zum ersten Prozessor sowohl direkt als auch über den Cachespeicher transferiert werden kann.
  8. System nach Anspruch 7, wobei das erste und das zweite gemeinsam genutzte Betriebsmittel (208, 210) zum Adressieren von separaten Räumen eines Mehrfachbit-Adressenraums abgebildet sind.
  9. System nach Anspruch 1, das weiterhin folgendes aufweist: einen ersten maschinenspezifischen Prozessorbus, der mit dem ersten Prozessor (301) verbunden ist, einen zweiten maschinenspezifischen Prozessorbus, der mit dem zweiten Prozessor (307) verbunden ist, wobei der erste und der zweite maschinenspezifische Prozessorbus betriebsmäßig über eine Entscheidungseinheit (314) mit einem Speicherbus, dem mit dem Speicherbus verbundenen ersten gemeinsam genutzten Betriebsmittel (208), verbunden ist; und den Cachespeicher (305), der über die Entscheidungseinheit mit dem Speicherbus verbunden ist.
  10. System nach Anspruch 9, wobei die Entscheidungseinheit (314) betreibbar ist, um dem ersten und dem zweiten Datenprozessor (301, 307) eine Bandbreite auf dem Speicherbus programmierbar zuzuteilen.
  11. System nach Anspruch 9, das weiterhin folgendes aufweist: eine Speichersteuerung (318), die mit dem Speicherbus verbunden ist, wobei die Speichersteuerung betreibbar ist, um mehrere unterschiedliche Speichertypen zu steuern, die unterschiedliche Längen von Wartezuständen erfordern, wobei die Speichersteuerung Wartezustände mit programmierbarer Länge hat.
  12. System nach Anspruch 9, wobei der Cachespeicher (305) ein direkt abgebildeter Typ ist.
  13. System nach Anspruch 9, das weiterhin gekennzeichnet ist durch: einen lokalen Speicherbus, über welchen der Cachespeicher (305) mit dem ersten Datenprozessor (301) verbunden ist; und einen lokalen Speicher, der mit dem ersten Datenprozessor über den lokalen Speicherbus verbunden ist.
  14. System nach Anspruch 13, wobei der lokale Speicher ein Programmspeicher ist, aus welchem der erste Datenprozessor (301) Anweisungen zur Ausführung holt.
  15. System nach Anspruch 9, wobei der Cachespeicher (305) vom gemeinsam genutzten Speicher (208) dynamisch geladen wird.
DE2000608139 1999-11-05 2000-11-06 Cachespeicheranordnung für einen digitalen signalprozessor Expired - Lifetime DE60008139T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16381699P 1999-11-05 1999-11-05
US163816P 1999-11-05
PCT/US2000/030454 WO2001035246A2 (en) 1999-11-05 2000-11-06 Cache memory system and method for a digital signal processor

Publications (2)

Publication Number Publication Date
DE60008139D1 DE60008139D1 (de) 2004-03-11
DE60008139T2 true DE60008139T2 (de) 2004-11-18

Family

ID=22591705

Family Applications (3)

Application Number Title Priority Date Filing Date
DE60017775T Expired - Lifetime DE60017775T2 (de) 1999-11-05 2000-11-03 Architektur und system von einem generischen und seriellen port
DE60027748T Expired - Lifetime DE60027748T2 (de) 1999-11-05 2000-11-03 Busarchitektur und verteiltes busarbitrierungsverfahren für einen kommunikationsprozessor
DE2000608139 Expired - Lifetime DE60008139T2 (de) 1999-11-05 2000-11-06 Cachespeicheranordnung für einen digitalen signalprozessor

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE60017775T Expired - Lifetime DE60017775T2 (de) 1999-11-05 2000-11-03 Architektur und system von einem generischen und seriellen port
DE60027748T Expired - Lifetime DE60027748T2 (de) 1999-11-05 2000-11-03 Busarchitektur und verteiltes busarbitrierungsverfahren für einen kommunikationsprozessor

Country Status (5)

Country Link
EP (3) EP1226493B1 (de)
CN (3) CN100353349C (de)
AU (3) AU1458501A (de)
DE (3) DE60017775T2 (de)
WO (3) WO2001035210A2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60239347D1 (de) * 2001-08-29 2011-04-14 Mediatek Inc Hochgeschwindigkeitsablaufverfolung eines computerprogramms
GB0122401D0 (en) * 2001-09-17 2001-11-07 Ttp Communications Ltd Interfacing processors with external memory
GB2388929B (en) * 2002-05-23 2005-05-18 Advanced Risc Mach Ltd Handling of a multi-access instruction in a data processing apparatus
KR100532416B1 (ko) * 2003-01-18 2005-11-30 삼성전자주식회사 다중 소스의 다중 채널로의 할당 방법 및 시스템
KR100463205B1 (ko) * 2003-02-13 2004-12-23 삼성전자주식회사 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
US20050154928A1 (en) * 2004-01-08 2005-07-14 International Business Machines Corporation Remote power-on functionality in a partitioned environment
CN1661576B (zh) * 2004-02-25 2010-04-28 中国科学院计算技术研究所 Soc架构下的高速总线动态变频装置和处理器核接口
US7957428B2 (en) * 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
CN100389413C (zh) * 2004-09-15 2008-05-21 北京中星微电子有限公司 串行通信总线外部设备接口
CN100388251C (zh) * 2004-12-24 2008-05-14 刘龙威 外部数据存储设备共享切换电路及其应用系统
US7348799B2 (en) * 2005-01-11 2008-03-25 Hewlett-Packard Development Company, L.P. System and method for generating a trigger signal
US7428603B2 (en) 2005-06-30 2008-09-23 Sigmatel, Inc. System and method for communicating with memory devices via plurality of state machines and a DMA controller
JP4747896B2 (ja) * 2006-03-17 2011-08-17 ソニー株式会社 情報処理装置および方法、並びにプログラム
US7930576B2 (en) * 2007-04-10 2011-04-19 Standard Microsystems Corporation Sharing non-sharable devices between an embedded controller and a processor in a computer system
CN101840385B (zh) * 2009-03-19 2012-07-18 承景科技股份有限公司 数据存取系统
CN102654853B (zh) * 2011-03-04 2015-03-04 上海华虹集成电路有限责任公司 一种采用两个微处理器的Nandflash控制器
CN102662911A (zh) * 2012-03-19 2012-09-12 中国科学院上海技术物理研究所 一种板级重构红外信号处理机的控制方法
US9129072B2 (en) 2012-10-15 2015-09-08 Qualcomm Incorporated Virtual GPIO
US9946675B2 (en) * 2013-03-13 2018-04-17 Atieva, Inc. Fault-tolerant loop for a communication bus
CN104216857B (zh) * 2013-05-31 2017-09-22 英业达科技有限公司 多工切换装置及其切换方法
FR3026869B1 (fr) * 2014-10-07 2016-10-28 Sagem Defense Securite Systeme embarque sur puce a haute surete de fonctionnement
US9450582B2 (en) 2015-02-03 2016-09-20 Freescale Semiconductor, Inc. Programmable buffer system
CN116401184A (zh) * 2016-01-22 2023-07-07 索尼互动娱乐股份有限公司 模拟向后兼容的传统总线行为
GB2553338B (en) * 2016-09-02 2019-11-20 Advanced Risc Mach Ltd Serial communication control
CN106980577B (zh) * 2017-03-20 2020-04-28 华为机器有限公司 输入输出处理方法、装置及终端
US10558604B2 (en) * 2017-12-20 2020-02-11 Qualcomm Incorporated Communication interface transaction security
CN109725250B (zh) * 2019-01-04 2021-07-13 珠海亿智电子科技有限公司 一种片上系统芯片模拟电路的测试系统及测试方法
CN111045980A (zh) * 2019-12-24 2020-04-21 广东嘉泰智能技术有限公司 一种多核处理器
CN114297105B (zh) * 2021-12-29 2024-04-05 合肥市芯海电子科技有限公司 一种直接存储器访问的嵌入式控制电路、芯片和电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630267A (en) * 1983-12-23 1986-12-16 International Business Machines Corporation Programmable timing and synchronization circuit for a TDMA communications controller
US4831520A (en) * 1987-02-24 1989-05-16 Digital Equipment Corporation Bus interface circuit for digital data processor
DE69030640T2 (de) * 1989-11-03 1997-11-06 Compaq Computer Corp Multiprozessorarbitrierung in für Einzelprozessor bestimmten Arbitrierungsschemas
EP0665502B1 (de) * 1994-01-27 2002-06-12 Sun Microsystems, Inc. Asynchrone serielle kommunickationsschaltung
US5628030A (en) * 1994-03-24 1997-05-06 Multi-Tech Systems, Inc. Virtual modem driver apparatus and method
US5598542A (en) * 1994-08-08 1997-01-28 International Business Machines Corporation Method and apparatus for bus arbitration in a multiple bus information handling system using time slot assignment values
WO1996041268A1 (en) * 1995-06-07 1996-12-19 Ast Research, Inc. Reducing cumulative time delay in synchronizing transfer of data between two mutually asynchronous buses
US5809091A (en) * 1996-06-04 1998-09-15 Ericsson, Inc. Timing signal generator for digital communication system
US5805844A (en) * 1996-10-07 1998-09-08 Gustin; Jay W. Control circuit for an interface between a PCI bus and a module bus
US5987568A (en) * 1997-01-10 1999-11-16 3Com Corporation Apparatus and method for operably connecting a processor cache and a cache controller to a digital signal processor
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher
US5974486A (en) * 1997-08-12 1999-10-26 Atmel Corporation Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint
GB9724030D0 (en) * 1997-11-13 1998-01-14 Advanced Telecommunications Mo Peripheral servicing
EP0924623A3 (de) * 1997-12-22 2000-07-05 Compaq Computer Corporation Rechnersystem mit Arbitrierungsvorrichtung, die mehrere Bus-Master befähigt, auf einen Grafikbus zuzugreifen

Also Published As

Publication number Publication date
WO2001035234A9 (en) 2002-05-30
CN1387645A (zh) 2002-12-25
DE60027748T2 (de) 2007-04-05
CN1399743A (zh) 2003-02-26
WO2001035234A1 (en) 2001-05-17
EP1236122B1 (de) 2004-02-04
AU1458501A (en) 2001-06-06
CN1387646A (zh) 2002-12-25
AU1458801A (en) 2001-06-06
EP1236122A2 (de) 2002-09-04
WO2001035246A2 (en) 2001-05-17
CN100336046C (zh) 2007-09-05
DE60008139D1 (de) 2004-03-11
EP1226505B1 (de) 2005-01-26
CN1279472C (zh) 2006-10-11
WO2001035210A3 (en) 2002-01-17
DE60017775T2 (de) 2006-01-12
EP1226493B1 (de) 2006-05-03
AU1465001A (en) 2001-06-06
EP1226493A2 (de) 2002-07-31
DE60017775D1 (de) 2005-03-03
DE60027748D1 (de) 2006-06-08
WO2001035210A2 (en) 2001-05-17
EP1226505A1 (de) 2002-07-31
WO2001035246A3 (en) 2002-07-11
CN100353349C (zh) 2007-12-05

Similar Documents

Publication Publication Date Title
DE60008139T2 (de) Cachespeicheranordnung für einen digitalen signalprozessor
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69935852T2 (de) Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
US6738845B1 (en) Bus architecture and shared bus arbitration method for a communication device
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE19983026B4 (de) Brücke zwischen zwei Bussen mit einem Puffer mit einer einstellbaren Mindestspeicherraummenge für ein Akzeptieren einer Schreibanforderung und Verfahren hierzu
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE19847642C2 (de) PCI-PCI-Brücke
DE602004012563T2 (de) Mehrfädiges DMA
DE69634624T2 (de) Vorrichtung zur Ereignisverwaltung
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE60132424T2 (de) Taktschutz für gemeinsame Komponenten einer Multiprozessor-DSP Vorrichtung
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE10234990B4 (de) Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE102005037219A1 (de) Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Verarbeitungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: MEDIATEK INC., HSINCHU, TW