-
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:
-
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.