DE69325207T2 - Prozessor zur Verarbeitung zeitdiskreter Signale - Google Patents
Prozessor zur Verarbeitung zeitdiskreter SignaleInfo
- Publication number
- DE69325207T2 DE69325207T2 DE69325207T DE69325207T DE69325207T2 DE 69325207 T2 DE69325207 T2 DE 69325207T2 DE 69325207 T DE69325207 T DE 69325207T DE 69325207 T DE69325207 T DE 69325207T DE 69325207 T2 DE69325207 T2 DE 69325207T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- index
- microcode
- base
- addresses
- 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 - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 36
- 238000000034 method Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 238000007792 addition Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- LMDZBCPBFSXMTL-UHFFFAOYSA-N 1-ethyl-3-(3-dimethylaminopropyl)carbodiimide Chemical compound CCN=C=NCCCN(C)C LMDZBCPBFSXMTL-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 208000034530 PLAA-associated neurodevelopmental disease Diseases 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/261—Microinstruction address formation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die Erfindung betrifft einen zeitdiskreten Signalprozessor mit einem Signaleingang zum Empfangen eines Signaleinheitenstroms, Adreßerzeugungsmitteln zum Erzeugen eines zugeordneten Zyklus von Mikrocodeadressen MA(i) (i = 1, ...) im Gleichschritt mit dem Empfang jeder einzelnen Signaleinheit für einen Mikrocodespeicher zum Steuern von Bearbeitungsschaltungen zum Bearbeiten der Signaleinheit.
- Ein derartiger zeitdiskreter Signalprozessor ist aus einem Artikel mit dem Titel "CGE: Automatic Generation of Controllers in the Cathedral II Silicon Computer" von J. Zegers et al. bekannt, veröffentlicht in den Protokollen der European Design Automation Conference 1990 (EDAC 90) S. 617 ... 621.
- Ein zeitdiskreter Signalprozessor bearbeitet einen Strom diskreter Signaleinheiten. Normalerweise sind die Signaleinheiten digital, können aber auch in anderer Form erscheinen, z. B. als Analogladungen in Kondensatoren, die zeitdiskrete Signale eines Signals darstellen. Jede Signaleinheit erfährt mehrere Bearbeitungsschritte. Beispielsweise erfordert eine typische zeitdiskrete Signalbearbeitungsfunktion wie Filterung Bearbeitungsschritte wie Speicherung von Daten aus den Signaleinheiten, späteres Wiederauffinden, Multiplikation mit verschiedenen Filterkoeffizienten und Summierung der Produkte.
- Zum Durchführen der Bearbeitungsschritte enthalten die Bearbeitungsschaltungen eine Kombination von Funktionseinheiten, die aus derartigen Bauteilen wie z. B. Signalbussen, ALU-Einheiten, Multiplizierern, Speichern, Registern, Durchlaufgattern, usw. gewählt werden.
- Für viele Anwendungen ist die Höchstprozessorgeschwindigkeit der Bearbeitungsschrittdurchführung viel höher als die Geschwindigkeit, mit der Signaleinheiten ankommen. Das bedeuet, daß es möglich ist, einen Zyklus vieler aufeinander folgender Bearbeitungsschritte für jede ankommende Signaleinheit durchzuführen, wobei Teile des Bearbeitungskreises zwischen mehreren Bearbeitungsschritten im Zeitmultiplexverfahren zu betreiben. Zum Durchführen des erforderlichen Zyklus von Bearbeitungsschritten muß eine Aufeinderfolge digitaler Steuersignale an diese Funktionseinheiten gelegt werden, beispielsweise zum Öffnen oder Schließen von Durchlaufgattern, zum Programmieren der Funktion einer ALU-Einheit oder zum Wiederauffinden eines spezifischen Filterkoeffizienten.
- Im bekannten zeitdiskreten Signalprozessor werden die digitalen Steuersignale, die an jeweiligen Zeitpunkten im Zyklus erforderlich sind, als Mikrocodes an jeweiligen Stellen eines Mikrocodespeichers gespeichert. Durch Eingeben der Adresse eines Mikrocodes in diesen Speicher, wird der Mikrocode daraus wieder aufgefunden. Dieser Mikrocode gelangt dann als Steuersignal an die Funktionseinheiten. Also führt ein Adreßzyklus an den Mikrocodespeicher zum Ausführen einer Signalbearbeitungsfunktion unter der Steuerung eines Zyklus von Steuersignalen.
- Nach dem Stand der Technik werden die auszugebenden Mikrocodes an aufeinander folgenden Stellen gespeichert. In diesem Fall kann der Adreßzyklus mit Hilfe eines Inkrementzählers erzeugt werden. Dies bewerkstelligt jedoch keine datenabhängige Befehlsausführung. Zum Aufnehmen von Datenabhängigkeit wird zumindest an einigen Abzweigpunkten im Zyklus die folgende Adresse nicht durch Inkrementieren, sondern durch Abzweigen, beispielsweise mit einem bedingten Sprung im Mikrocode-Adreßwert.
- Zum Abzweigen enthält der bekannte diskrete Signalprozessor Abzweiglogik für jeden Abzweigpunkt. Diese Abzweiglogik empfängt Signaldaten, bestimmt daraus, ob eine Abzweigung erfolgen soll, und wählt die folgende Adresse. Das Problem mit der Abzweiglogik ist, daß sie einen großen Schaltungsaufbau erfordert, da sie für alle Abzweigpunkte Mikroadressen für alle Abzweigziele speichern muß. Infolge dieser Komplexität verlangsamt sich außerdem die Abzweiglogik.
- U.a. liegt der Erfindung die Aufgabe zugrunde, einen zeitdiskreten Signalprozessor zu schaffen, in dem für die Adreßwahl ein kleinerer Schaltungsaufbau erforderlich ist.
- Zur Lösung dieser Aufgabe ist der erfindungsgemäße zeitdiskrete Signalprozessor dadurch gekennzeichnet, daß die Adreßerzeugungsmittel folgende Mittel enthalten:
- - Basisadreßreproduktionsmittel zum Reproduzieren einer Standardfolge aufeinander folgender Basisadressen BA(i) (i = 1 ... N) in jedem Zyklus, und diese Mittel sind zum Eingeben der Basisadressen BA(i) in
- - Mikrocodewählmittel zum Wählen einer zugeordneten Mikrocodeadresse MA(i) aus einer Liste von mit der Basisadresse BA(i) bezeichneten Mikroadressen im Schritt mit jeder Basisadresse angeordnet.
- Auf diese Weise ist der Prozessor reaktionsfähig auf Signaldaten, d. h. direkt auf Daten in den Signaleinheiten oder auf Daten, die in den Bearbeitungsschaltungen abhängig von den Signaleinheiten erzeugt werden.
- Dem erfindungsgemäßen Signalprozessor liegt die Erkenntnis zugrunde, daß bei der zeitdiskreten Signalbearbeitung die meisten Abzweige nicht zum Starten alternativer Sequenzen von mehr als einer Adresse dienen. Die praktische Funktion von Abzweigungen liegt eher in der Wahl aus alternativen Mikrocodeadressen unabhängig für jeden Schritt des Prozeßzyklus: Üblicherweise gibt es keine Korrelation zwischen den für aufeinander folgende Schritte ausgeführten Selektionen.
- Erfindungsgemäß wird diese Erkenntnis durch das Einführen einer Basisadresse als Hilfe zur Mikrocodeadresse verwendet. Die Basisadresse stellt die Stufe des erreichten Bearbeitungszyklus und die Mikrocodeadresse den ausgewählten Befehl für diese Stufe dar. Die Reproduktion der Basisadressen und der Hinweis aus der Liste erfolgt unter Verwendung der Basisadresse. Daher erfordert die Wahl von Mikrocodeadressen keinerlei Kenntnis von den Mikrocodeadressen, die in früheren Stufen im Zyklus gewählt wurden. Für jede Basisadresse ist nur ein Wählkreis zum Wählen einer folgenden Mikrocodeadresse erforderlich. Vergleichsweise waren nach dem Stand der Technik getrennte Wählkreise für jede alternative "Quellen-"Mikrocodeadresse vor der folgenden zu wählenden Mikrocodeadresse erforderlich.
- Ein Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors ist dadurch gekennzeichnet, daß die Mikrocodewählmittel folgende Mittel enthalten:
- - Indexwählmittel zum Wählen eines zugeordneten Indexes IA(i) unter der Steuerung der Signaldaten, und
- - Indexaddiermittel zum Addieren der Basisadresse BA(i) und des gewählten zugeordneten Indexes IA(i), wobei ein Summierausgang des Indexaddiermittels zum Eingeben der Mikrocodeadressen MA(i) = BA(i)+IA(i) in den Mikrocodespeicher angeordnet ist.
- Die Verwendung von Indizes bietet eine leicht implementierbare Weise zum Wählen aus der Liste. Das hier für das Indexaddiermittel benutzte Wort "addieren" ist in weitem Sinne zu verstehen. Neben herkömmlicher arithmetischer Addierung sind andere explizit eingeschlossene Addierformen beispielsweise Aneinanderstellung von Basisadreßbits und Indexbits sowie ausschließliche ODER-Operationen zwischen Basisadreßbits und Indexbits.
- Ein Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors ist dadurch gekennzeichnet, daß die Indexwählmittel zum Wählen des zugeordneten Indexes IA(i) = F(Daten, BA(i)) unter Mitsteuerung ihrer Basisadresse BA(i) angeordnet sind. Also ändert sich im Schritt mit den Basisadressen durch den Zyklus die Weise der Bestimmung des Indexes aus den Daten. Eine beispielhafte Implementierung davon ist die Verwendung mehrerer Indexbestimmungsschaltungen, die je eine andere Signaldatenabhängigkeit bieten. Die Ausgänge dieser Schaltungen gehen auf einen Multiplexer, der unter der Steuerung der Basisadresse einen Ausgang wählt.
- Ein weiteres Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors ist dadurch gekennzeichnet, daß er Klassenidentifikationsmittel enthält, die zum Erzeugen eines zugeordneten Klassensignals CL(BA(i)) bei jeder reproduzierten Basisadresse Ba(i) angeordnet ist, und eine Klasse identifiziert, zu der die Basisadresse gehört, wobei das Klassensignal die Mitsteuerung IA)I) = F(Daten,CL(BA(i)) bestimmt. Gefunden wurde, daß beim Signalverarbeiten Basisadressen BA(X), BA(Y) in verschiedenen Stufen X, Y des Zyklus gegenseitig gleiche Beziehungen zwischen dem Index und Daten verwenden können: F(Daten,BA(X) = F(Daten,BA(Y))(für alle Daten). In diesem Ausführungsbeispiel wird dies zum weiteren Reduzieren des Schaltungsaufbaus in den Indexaddiermitteln angewandt. Die Basisadressen werden in Äquivalenzklassen von Basisadressen gruppiert. Für die Basisadressen in einer Klasse gibt es gegenseitig gleiche Beziehungen zwischen Index und Daten. Die Klassenidentifikationsmittel dienen zum Signalisieren der Klasse CL(BA(i), zu der die Basisadresse gehört. Die Schaltungen zum Herstellen der geeigneten Beziehung zwischen Index und Daten können in der Klasse gemeinsam benutzt werden. Ein Beispiel der Wiederverwendung bezieht sich auf die Basisadressen mit nur einer entsprechenden Mikrocodeadresse (d. h. wobei nur ein einfacher Index möglich ist). In diesem Fall kann ein fester Index, vorzugsweise Null, verwendet werden. Weiterentwickelte Beispiele der Wiederverwendung enthalten Fälle, bei denen die Abhängigkeit einen oder mehrere Indizes erzeugen kann.
- Eine Ausführung des erfindungsgemäßen Signalprozessors ist dadurch gekennzeichnet, daß darin alle Basisadressen von einer Anzahl von Basis-Bits und alle Indizes von einer Anzahl von Index-Bits digital dargestellt werden, wobei die Zahl der Index-Bits kleiner ist als die Anzahl der Basis-Bits. Die Indizes werden normalerweise aus höchstens wenigen Alternativen (maximal typisch 4 bzw. 8) gewählt. Dies ist brauchbar durch Aufstellen der von verschiedenen Indizes zu erzeugenden Mikrocodes an benachbarten Stellen derart, daß nur Indizes geringer Größe hinzugefügt zu werden brauchen. Hierdurch erfordert die Darstellung der Indizes weniger Bits als die ganze Mikrocodeadresse. Da nur Indizes mit der Zahl der Index-Bits von den Indexaddiermitteln erzeugt zu werden brauchen, können die Indexaddiermittel gedrängter ausgeführt und schneller als die Abzweiglogik gemacht werden, die die vollständige Adresse speichern muß.
- Wenn die Standardsequenz Basisadressen mit gleichmäßigem Zwischenraum enthält, läßt sie sich einfach durch Inkrementieren jeder Basisadresse um einen festen Betrag bei jeder Bestimmung einer Folgebasisadresse reproduzieren. Im Allgemeinen ist die Zahl der verschiedenen möglichen Indizes ungleich für alle Basisadressen, was bedeutet, daß für Basisadressen mit geringeren Zahlen verschiedener möglicher Indizes adressierbare Stellen im Mikrocodespeicher unbenutzt gelassen werden müssen.
- Ein Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors ist dadurch gekennzeichnet, daß die Basisadreßreproduktionsmittel einen Kettenspeicher und eine Rückkopplung von einem Ausgang des Kettenspeichers nach einem Kettenadreßeingang enthält, wobei jede Basisadresse ihre mögliche Folge- Basisadresse wählt. Auf diese Weise können die aufeinander folgenden Basisadressen aus jeder möglichen Sequenz gewählt werden. Insbesondere gibt es keine Beschränkungen zu gleich weit auseinander liegenden Sequenzen, und werden unbenutzte Mikrocodespeicherstellen vermieden. Die Basisadressen selbst können zum Adressieren des Kettenspeichers direkt oder über die Indexaddiermittel zurückgekoppelt werden.
- Beim herkömmlichen Addieren kann Übertrag erfolgen. Dies vergrößert die Verzögerung zwischen der Ankunft von Signaldaten und der Erzeugung der Mikrocodeadresse, insbesondere wenn Übertrag über eine große Bitzahl auftritt. Zum Verringern dieser Verzögerung ist es vorteilhaft, die Basisadressen derart zu wählen, daß bei der Addierung nur eine geringe Anzahl oder sogar gar keine Übertragungsoperationen erforderlich sind. Dies ist beispielsweise erzielbar, wenn zunächst bestimmt wird, welche zu addierenden Bits des Indexes in einer besonderen Phase des Zyklus nicht Null sein können (in Beantwortung möglicher Signaldaten). Anschließend wird die zugeordnete Basisadresse für diese besondere Zyklusphase derart gewählt, daß ihre Bits gleich Null sind, wenn ihr Gegenstück im Index nicht Null sein kann.
- Ein Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors ist dadurch gekennzeichnet, daß die Indexaddiermittel eine Addierschaltung mit beschränktem Übertrag enthalten. Wenn die Basisadressen zum Vermeiden von Übertrag zwischen bestimmten Bits in der Adresse gewählt werden, läßt sich die Übertragsschaltung auf nur diejenigen Bits beschränken, zwischen denen Übertrag erfolgt. Im äußersten Fall, wenn Übertrag ganz vermieden wird, kann ein übertragsfreier Addierer verwendet werden. Dies ergibt einen einfacheren und schnelleren Addierer.
- Der Signalprozessor kann auch durch Minimisieren des Schaltungsaufbaus zwischen dem Punkt, in dem Daten verfügbar werden, und den Addiermitteln schneller gemacht werden. Ein weiteres Ausführungsbeispiel des erfindungsgemäßen zeitdiskreten Signalprozessors macht dies möglich, da er Seriell-ein/Parallel-aus-Schieberegistermittel mit einem Schiebeeingang enthält, der eine feste vorprogrammierte Kopplung mit den Bearbeitungsschaltungen zum seriellen Empfangen bearbeiteter Signale hat, wobei die Schieberegistermittel einen mit den Indexaddiermitteln gekoppelten parallelen Ausgang enthalten. Dies macht das bearbeitete Signal aus einer Anzahl von Zuständen zum Bestimmen des Indexes direkt verfügbar. Die Struktur der Indexaddiermittel können daher einfach gehalten werden, und löst keine unzulässigen Signalverzögerungen aus.
- Diese und weitere vorteilhafte Merkmale des zeitdiskreten Signalprozessors werden nachstehend anhand der Zeichnung näher erläutert. Es zeigen
- Fig. 1 eine bekannte Architektur eines zeitdiskreten Signalprozessors,
- Fig. 2 ein Zustandsdiagramm für eine Signalbearbeitungsoperation,
- Fig. 3 Adreßerzeugungsmittel für einen Signalprozessor nach einem Ausführungsbeispiel nach der Erfindung,
- Fig. 4 ein Ausführungsbeispiel einer Schaltung zum Erzeugen datenabhängiger Indizes,
- Fig. 5 ein weiteres Zustandsdiagramm,
- Fig. 6 Adreßerzeugungsmittel für einen Signalprozessor nach einem weiteren erfindungsgemäßen Ausführungsbeispiel,
- Fig. 7 ein weiteres Zustandsdiagramm.
- In Fig. 1 ist die Gesamtarchitektur eines bekannten Signalprozessors dargestellt. Dieser Prozessor hat einen Eingang 1 und enthält Bearbeitungsschaltungen 2 zum Bearbeiten des am Eingang empfangenen Signals. Die genaue Art der Bearbeitungsschal tungen 2 unterscheidet sich zwischen verschiedenen Signalprozessoren. Sie ist von der Art der Operation, die der Prozessor durchführen soll, von seiner erforderlichen Geschwindigkeit, Genauigkeit und von den Kosten abhängig. Anhand eines ganz einfachen Beispiels sind die Bearbeitungsschaltungen in Fig. 1 mit einem Bus 15, einem Direktzugriffspeicher 16, einem Festwertspeicher 17, einer Addierschaltung 18 und mehreren Registern 19a, 19b, 19c, 19d dargestellt. In der Praxis können die Signalbearbeitungsschaltungen eine Anzahl derartiger Busse und Kreise sowie andere Schaltungen wie ALU-Einheiten, Multiplexer, Multiplizierer, usw. enthalten.
- Der Zustand der Bearbeitungsschaltungen 2 kann unter Verwendung von Binärsteuersignalen programmiert werden. Im Beispiel enthalten die Steuersignale die Adresse A1 zum Direktzugriffspeicher 16, ein Schreib/Lese- und Freigabesignal R/W, E1. Ähnlich braucht der Festwertspeicher eine Adresse A2 und ein Ausgangsifeigabesignal E2. Die Register 19a, 19b, 19c und 19d brauchen die Signale La, Lb, Lc und Ld zum Verriegeln von Daten und die Signale Ea, Eb, Ec und Ed zum Freigeben der Ausgabe gespeicherter Daten.
- In vielen Signalprozessoranwendungen, wie z. B. bei Audiosignalbearbeitung, können die Signalbearbeitungsschaltungen 2 sich mit Steuersignalen messen, die mit einer viel höheren Geschwindigkeit (über 30 MHz) sich ändern als die Abtastgeschwindigkeit (unter 50 kHz), bei der neue Signaleinheiten beim Eingang 1 ankommen. Dies gilt nach wie vor, wenn jede ankommende Signaleinheit mehrere Abtastungen enthält, beispielsweise aufeinander folgende Bytes zur Bildung eines einzigen Signaldatenworts, aufeinander folgende Rechts- und Linkskanal- Stereoabtastungen, oder Rahmen mit Transformationskoeffizienten einer Signaldehnung. Der Geschwindigkeitsunterschied macht die Verwendung eines Zyklus von Steuersignalen für jede ankommende Signaleinheit möglich. Auf diese Weise ist jeder Teil der Bearbeitungsschaltungen steuerbar, um in mehreren verschiedenen Operationen in verschiedenen Phasen eines Zyklus zu dienen. Mit anderen Worten kann ein derartiger Teil zwischen derartigen verschiedenen Operationen gemeinsam benutzt werden.
- Der Zyklus von Steuersignalen wird unter Verwendung eines Sequenzers 4 und eines Mikrocodespeichers 3 erzeugt, der beispielsweise als ROM (Festwertspeicher) implementiert werden kann. Der Sequenzer 4 erzeugt eine Sequenz von Mikrocodeadressen, die an einen Adreßeingang des Mikrocodespeichers ROM 3 gelangt. In Beantwortung dazu gibt der Mikrocodespeicher ROM 3 Mikrocodes aus, die die Steuersignale für die Bearbeitungsschaltungen bilden. Diese Steuersignale werden über in Fig. 1 nicht dargestellte Verbindungen in die verschiedenen Teile der Bearbeitungsschaltungen eingegeben. Normalerweise ist der Ausgang des Mikrocodespeichers ROM 3 viel größer als seine Adreßeingänge. In einem typischen Beispiel ist der letztgenannte um 8 Bits breit und der Speicher 100 Bits oder mehr.
- In vielen Signalbearbeitungsoperationen wird die Sequenz der vom Sequenzer 4 erzeugten Adressen abhängig von den Signaldaten im Prozessor erzeugt. Eine bekannte Weise der Implementierung ist in Fig. 1 dargestellt. Hier enthält der Sequenzer 4 eine Programmrechenverriegelung 10, die die Mikrocodeadresse an den Mikrocodespeicher ROM 3 ausgehen läßt. Die Programmrechenverriegelung 10 wird unter der Steuerung eines (nicht dargestellten) Taktgebers periodisch aktualisiert. Die folgende Adresse wird normalerweise durch Inkrementieren des Inhalts der Programmrechenverriegelung unter Verwendung einer Inkrementiereinrichtung 11 bestimmt, die eine inkrementierte Ausführung der Programmrechenverriegelung 10 über einen Multiplexer 12 an ihren Eingang ausgehen läßt.
- Bei einigen Werten des Befehlszählerstandes schaltet der Multiplexer 12 jedoch um, um den folgenden Befehlszählerstand aus der Abzweiglogik 13 zu versorgen. Die Abzweiglogik 13 enthält Steuereingänge zum Empfangen von Daten aus den Bearbeitungsschaltungen. Unter der Steuerung dieser Daten bestimmt sie, ob eine Abweichung von der Inkrementierung erforderlich ist, und meldet dies beim Multiplexer 12. Wenn dies der Fall ist, erzeugt sie auch die folgende Adresse. Auf diese Weise kann eine alternative Sequenz von Adressen eingeleitet werden, die sich danach unter der Steuerung der Inkrementiereinrichtung fortsetzen kann.
- Nach obiger Beschreibung arbeitet die Abzweiglogik 13 parallel zu den Bearbeitungsschaltungen: Die Adresse kann direkt nach jedem Befehl abzweigen. Mit anderen Worten es gibt keine getrennten Abzweigbefehle, mit denen der Signalprozessor sich ausschließlich dem Abzweigen widmet. Dies ist in Signalprozessoren herkömmlich und sorgt für eine hohe Operationsgeschwindigkeit.
- Wenn es viele Abweichungen vom Inkrementieren gibt, ist die Abzweiglogik ganz kompliziert. Das ist die Folge davon, daß sie für jede Mikrocodeadresse auswerten müssen, unter welchen Bedingungen Abweichen vom normalen Inkrementieren erfolgen muß, und die abweichenden Adressen speichern. Durch diese Komplexität verursacht die Abzweiglogik eine Verzögerung in der Geschwindigkeit, mit der der Sequenzer auf Signaldaten ansprechen kann.
- Signalbearbeitungsoperationen.
- Als Beispiel einer Signalbearbeitungsoperation diene eine Rekursivteilung. Hier werden aufeinander folgende Reste Rn aus dem Zähler N durch Subtraktion aufeinander folgender verschobener Ausführungen des Nenners D gebildet. Subtraktion ist abhängig von der Bedingung, ob die verschobene Ausführung des Nenners den Rest überschreitet:
- R&sub0; = N
- Rn+1 = Rn-D*2-n oder Rn+1 = Rn
- Ähnliche Signalabhängigkeiten treten auf, wenn Vervielfachung von zwei Multiplikanden M&sub1;, M&sub2; durch Summierung implementiert wird:
- S&sub0; = N
- Sn+1 = Sn+M&sub1;*2n oder Sn+1 = Sn
- Die Wahl im "oder" ist vom n-ten Bit des zweiten Multiplikanden M&sub2; abhängig.
- Die alternativen Zuordnungen, beispielsweise zu Rn+1, werden auf herkömmliche Weise durch Anbringen alternativer Mikrocodegruppen implementiert, eine zum Berechnen und Zuordnen Rn-D*2-n und eine, die die Zuordnung von Rn durchführt. Die Sequenz von Mikrocodeadressen wird dabei zum Adressieren einer dieser Gruppen angepaßt, abhängig davon ob die Bedingung auftritt (beispielsweise Nenner überschreitet Rest). Eine herkömmliche Weise zum Erhalten dieses Ergebnisses ist das Einstellen des Befehlszählerstands auf eine alternative Adresse (d. h. zum Durchführen einer sog. Abzweigung), wenn diese Bedingung eintritt, wonach der Programmzähler die auf diese alternative Adresse folgenden Adressen reproduziert.
- Signalprozessoren führen mehrere Bearbeitungsoperationen (Vervielfachungen, Addierungen, Teilungen, usw.) parallel aus, mehr oder weniger unabhängig voneinander. Die Mikrocodes werden Steuersignale zum parallelen Steuern all dieser Operationen enthalten. Infolgedessen können mehrere Bedingungsabzweigungen oben erwähnter Art in der Mikrocodesequenz kurz nacheinander oder sogar gleichzeitig auftreten, selbst obgleich sie aus unabhängigen Operationen herrühren. Das entstandene Abzweigmuster kann sehr komplex sein und erfordert viele Schaltungen zum Implementieren.
- Jedoch wurde gefunden, daß in vielen Signalbearbeitungsoperationen die Abweichung von der normalen Mikrocodeadreßsequenz durch Abzweigen nur die Dauer einer einzige Adresse hat. Daher ist keine echte Abzweigung zu einer beharrenden alternativen Adreßsequenz erforderlich, sondern nur ein einziger Seitenschritt oder eine Alternative der Standardsequenz. In der obigen Beschreibung genügen beispielsweise Alternative für einen einfachen Befehl, der D*2-n oder 0 als Subtraktand wählt. (Es kann sich herausstellen, daß Bearbeitungszeit verschwendet wird, wenn D*2-n berechnet wird, wenn nur 0 wirklich benutzt wird. Jedoch muß ein Signalprozessor Echtzeitoperationen durchführen, d. h. Operationen, die ungeachtet des Signalwerts die gleiche Zeit in Anspruch nehmen. Also wäre es nicht möglich, die ersparte Zeit durch Nichtberechnen von D*2-n in einem Signalprozessor zu benutzen).
- Diese Seitenschrittstruktur ist in Fig. 2 dargestellt. Hierin ist ein Zustandsdiagramm für eine typische Signalbearbeitungsoperation dargestellt. Jeder Knotenpunkt 20, 21a 21b, 21c, 22a, 22b, 22c, 23a 23b, 23c, 23d, 24, 25 symbolisiert einen Mikrocodeadreßausgang zum Erhalten eines spezifischen Mikrocodes und also das Erhalten eines spezifischen Zustands der Bearbeitungsschaltungen. Jede der alternativen Adressen (z. B. 21a, 21b, 21c) in einem Block (z. B. 21) stellt eine alternative Operation dar, wie z. B. die Wahl von 0 oder D*2-n zum Subtrahieren im Teilungsbeispiel. Der Zeitablauf während der Bearbeitung wird von links nach rechts symbolisiert: In einem ersten Zeitschlitz wird eine erste Adresse 20 erzeugt. In einem zweiten Zeitschlitz wird eine von drei Adressen 21a, 21b, 21c erzeugt. Gleichermaßen wird in einem dritten und einem vierten Zeitschlitz eine von drei 22a, 22b, 22c bzw. 23a, 23b, 23c, 23d Adressen erzeugt. In einem fünften und einem sechsten Zeitschlitz ist nur eine Adresse 24, 25 möglich.
- Da die Seitenschritte nur einen Befehl lang sind, ist die in jedem Zeitschritt getroffene Wahl unabhnängig von der in ihrem Vorgänger. Die Unabhängigkeit vom Vorgänger wird mit den von den Blöcken 21, 22, 23 ausgehenden Pfeilspitzen symbolisiert, die von einem einfachen Ausgang ausgehen, d. h. von einem Ausgang, der für die verschiedenen alternativen Adressen in dem gerade verlassenen Block undiskriminiert ist. Es sei bemerkt, daß der Ausgang selbst nicht einer zusätzlichen Mikrocodeadresse entspricht: Die Mikrocodeadresse (21a, 21b oder 21c) aus dem Zeitschlitz 21 folgt direkt der des Zeitschlitzes 22 (Mikrocodeadresse 23a, 23b, 23c).
- Der erfindungsgemäße zeitdiskrete Signalprozessor bedient sich der Struktur des Zustandsdiagramms (Fig. 2) unter Verwendung einer Architektur, in der die Mikrocodeadressen in jedem Block 22, 23, 24 durch die Verwendung einer für den Block spezifischen Basisadresse und unter Verwendung von Signaldaten zum Wählen einer Adresse aus der Liste der Mikrocodeadresse im Block 22, 23, 24 erhalten werden. Jede Basisadresse selbst wird zum Bestimmen ihres Nachfolgers benutzt, der daher unabhängig ist vom momentan vom Block gewählten Mikrocode.
- In Fig. 3 sind erfindungsgemäße Adreßerzeugungsmittel 4 dargestellt. Sie enthalten Basisadreßreproduktionsmittel 30 und Mikrocodewählmittel 31. Die Basisadreßreproduktionsmittel 30 enthalten die Programmzählverriegelung 10 und folgende Basisadreßerzeugungsmittel 34. Im Normalbetrieb wird die Programmzählverriegelung 10 auf eine Standard-Anfangsadresse beim Beginn jedes Zyklus durch in der Figur nicht dargestellten Einleitungsmittel eingeleitet. Danach folgt der Inhalt der Programmzählverriegelung 10 einer Standardsequenz von Basisadressen durch Übernehmen der folgenden Basisadresse aus den Folgeadreßerzeugungsmitteln 34. Dies erfolgt unter der Steuerung eines (in der Figur nicht dargestellten) Taktsignals.
- Die Mikrocodewählmittel 31 enthalten einen Eingang 41, der Signaldaten aus den Bearbeitungsschaltungen 2 empfangen. Diese Signaldaten steuern die Wahl der Mikrocodeadresse aus einer von der Basisadresse definierten Liste.
- In einem erfindungsgemäßen Ausführungsbeispiel werden die Signaldaten in die Indexbestimmungsmittel 32 eingegeben, die einen Index IA abhängig von den Signaldaten IA = F(Daten) bestimmen und diesen Index als ersten Operanden in die Indexaddiermittel 33 eingeben. Die Basisadressen werden als zweiter Operand in die Indexaddiermittel 33 eingeführt. Auf diese Weise wird jede Basisadresse BA auf einer Adreßleitung 45 einem zugeordneten Index zugegeben. Die Summe bildet die Mikroadresse MA = BA+IA und auf einer Mikroadreßleitung 49 in den Mikrocodespeicher ROM 3 (über ein Mikrocodeadreßregister 35) eingeführt.
- Der Index IA wird abhängig von den Signaldaten bestimmt. In vielen Fällen ändert sich die Weise der Abhängigkeit des Indexes von den Signaldaten durch den Befehlszyklus. Zum Implementieren wird in Fig. 3 die Art der Abhängigkeit von der Basisadresse spezifiziert, die in die Indexbestimmungsmittel 32 zum Ändern der Datenabhängigkeit des Indexes IA = F(Daten,BA) eingegeben werden.
- In Fig. 4 ist ein Ausführungsbeispiel einer Schaltung zum Implementieren dieser Datenabhängigkeit dargestellt. In diesem Ausführungsbeispiel enthalten die Indexbestimmungsmittel 32 jeweilige Indexbestimmungskreise 46a, 46b, 46c ... (je einer für eine Basisadresse). Jeder Kreis 46a, 46b, 46c ist mit denen der Datenleitungen 41 gekoppelt, die er zum Bestimmen des Indexes benötigt und je einen Dreibitindex erzeugt (wobei die Zahl 3 nur beispielsweise benutzt wird), gekoppelt mit einem Multiplexer 43. Der Multiplexer 43 wählt die Bits eines dieser Indizes und verkoppelt ihn mit dem Addierer 33. Die Indexbestimmungsmittel 46a, 46b ... können als jede Logikschaltung mit der gewünschten Beantwortung implementiert werden. Eine ganz einfache Implementierung ist ein ROM- Speicher zum Speichern einer Tabelle von Indizes, wobei die Daten an die Adreßeingänge gelegt werden.
- Beispielsweise wird für die Basisadresse entsprechend dem Block 21 in Fig. 2 der Indexbestimmungskreis 46a zum Erzeugen eines der drei Indizes (mit einem spezifizierten Verfahren der Bestimmung des Indexes aus den Signaldaten) spezifiziert, die den drei alternativen Zuständen im Block 21 entsprechen. Ähnlich gibt es für den Block 22 einen Indexbestimmungskreis 46b, der drei mögliche Indexwerte erzeugen kann. Für den Block 23 können vier Indexwerte erzeugt und für 24 und 25 nur einer erzeugt werden (jeder Block hat dabei sein eigenes spezifiziertes Verfahren der Bestimmung des Indexes aus den Signaldaten).
- Im Ausführungsbeispiel nach der Figur erfährt der Multiplexer 43 direkt die Steuerung der Basisadresse auf den Adreßleitungen 45 und wahlweise unter der Steuerung eines Klassensignals auf einer Klassensignalleitung 48 (Erläuterung weiter unten). Wenn das Klassensignal nicht benutzt wird, braucht der Multiplexer einen Indexeingang für jede Basisadresse.
- Jedoch wurde gefunden, daß für viele verschiedenen Basisadressen die Indexbestimmungsschaltungen gegenseitig angeglichen werden können. Dies kann beispielsweise der Fall sein, wenn diese verschiedenen Basisadressen die Durchführung gleicher Bearbeitungsoperationen leiten. Dementsprechend können jeweilige Klassen von Basisadressen dadurch definiert werden, daß die Basisadressen in jeder betreffenden Klasse gleiche Indexbestimmungsschaltungen erfordern.
- Dies ist durch Eingeben der Basisadresse 45 in den Multiplexer 43 über einen Klassenidentifikationskreis anwendbar, der die Basisadresse 45 empfängt und ein Klassensignal erzeugt, das die Zugehörigkeit der Basisadresse zu einer Klasse identifiziert.
- Dieses Klassensignal steuert den Multiplexer 43. Indexbestimmungskreise 46a, 46b und Verbindungen mit dem Multiplexer 43 werden dabei nur für jeweilige Basisadreßklassen benötigt.
- Ein Beispiel einer Klasse ist die Klasse aller Adressen, für die nur ein Index (normalerweise gleich Null) ungeachtet der Daten spezifiziert ist. Ein anderes Beispiel erscheint, wenn gleiche datenabhängige Operationen in verschiedenen Teilen des Zyklus durchzuführen sind. Anwendung von Klassenwahl macht es möglich, eine Verbindung eines Indexbestimmungskreises zum Multiplexer 48 in diesen verschiedenen Teilen des Bearbeitungszyklus zu verwenden.
- In der Praxis wurde gefunden, daß üblicherweise nur wenig Klassen mehr als eine Basisadresse enthalten, wobei die bemerkenswertesten darunter die Klasse ist, für die der einzige Index Null ist. Wenn es nur wenige Klassen mit mehr als einer Basisadresse gibt, wurde es als vorteilhafter empfunden, wenn die Folgebasisadreßerzeugungsmittel 34 auch einen Teil des Klassenidentifizierungssignals erzeugen, und diesen Teil in einen Klassensignalspeicher gleichzeitig mit der Speicherung der Folgebasisadresse in der Programmzählverriegelung 10 einschreiben. In diesem Fall wird der Optionseingang 48 zum Multiplexer zum Ausgeben des gespeicherten Teils verwendet. Der Wert des gespeicherten Teils meldet dem Multiplexer, welche Klasse benutzt wird, ungeachtet der Basisadresse. Nur für einen außergewöhnlichen Wert des gespeicherten Teils, der verwendet wird, wenn eine Klasse nur eine Adresse enthält, meldet der gespeicherte Teil dem Multiplexer, die Basisadresse 45 zu verwenden, um die Wahl des Indexes zu steuern.
- Selbstverständlich ist die Verwendung mehrfacher Indexbestimmungskreise 46a, 46b, gekoppelt mit einem Multiplexer 43, nur ein Beispiel einer Implementierung für die Indexbestimmungsmittel 32. Alternative umfassen Mehrfachschaltungen 46a, 46b, die selbst einen Teil oder die ganze Basisadresse oder das ganze Klassensignal empfangen, und ihre Antwort auf die Daten ändern unter der Steuerung dieses Teils oder der ganzen Basisadresse bzw. des Klassensignals.
- Für jede alternative Mikrocodeadresse wird ein entsprechender Mikrocode in den Mikrocodespeicher ROM 3 eingeschrieben. Nachstehend ist ein Beispiel eines Speicherplans für das Zustandsdiagramm nach Fig. 2 dargestellt.
- Hier zeigt die erste Zeile die Adresse im Mikrocodespeicher ROM 3. Die zweite Zeile zeigt eine Referenz zu den Adressen nach Fig. 2. Zum Erzeugen des Zustandsdiagramms nach Fig. 2 können die Basisadreßerzeugungsmittel die folgende Sequenz von Basisadressen reproduzieren:
- Die Indexbestimmungsmittel formen Indizes, die aus folgenden Gruppen aufeinanderfolgend gewählt wurden:
- (die obere Zeile zeigt die Basisadresse, die untere Zeile die von dieser Basisadresse spezifizierte Indexdomäne).
- Im Beispiel sind die Basisadressen aufeinanderfolgend gewählt: Die erste Basisadresse ist 1, die zweite Basisadresse ist die erste Adresse nach den Mikrocodeadressen, die durch Addierung eines Indexes zur ersten Basisadresse erzeugbar sind, d. h. bei 2. Auf gleiche Weise ist die dritte Basisadresse die erste nach den Mikrocodeadressen, die durch Addierung eines Indexes zur zweiten Basisadresse erzeugbar sind, d. h. bei 5. Selbstverständlich läßt sich dieser Wählplan ändern: Wenn der Bereich von Indizes anders gewählt wird, beispielsweise beim Start über Null, müssen die Basisadressen dementsprechend verschoben werden. Weder ist es imperativ, die Werte der Basisadressen in der Erscheinungsfolge im Standardzyklus anzuordnen.
- Die Sequenz von Basisadressen ist reproduzierbar unter Verwendung einer Basisadresse ROM mit Hilfe der Folgebasisadreßerzeugungsmittel 34. Dieser ROM 34 speichert die Basisadressen der Sequenz (1, 2, 5, 8, 12, 13), an je einer Stelle mit der Adresse des Vorgängers.
- Folgende Tabelle zeigt den Inhalt dieses ROMs 34 zum Implementieren des Zustandsdiagramms nach Fig. 2. Die obere Zeile zeigt die Adresse einer Stelle, die untere Zeile ihren Inhalt.
- Wenn der ROM direkt mit den Basisadressen adressiert wird, werden nur die mit einem Sternchen"*" markierten Stellen gebraucht. Dies ist die Lage für die in Fig. 3 dargestellte Architektur. In einer alternativen Architektur (in Fig. 3 nicht dargestellt) können die Mikrocodeadressen (d. h. der Ausgang des Addierers 33) statt der Basisadressen zum Adressieren des Folgebasisadreßerzeugungs-ROMs 34 eingeführt werden. In diesem Fall müssen alle in der Tabelle gezeigten Stellen ausgefüllt werden, und die Programmzählverriegelung 10 kann ausgelassen werden. Mikrocodeadressen aus der Liste einer einzigen Basisadresse entsprechende Stellen enthalten alle dieselbe Folgebasisadresse. Die Verwendung von Mikrocodeadressen bietet den Vorteil, daß der die Folgebasisadresse erzeugende ROM 34 die Decodierungslogik für den Mikrocodespeicher ROM 3 verwenden kann.
- Ein zusätzlicher Vorteil ist, daß in Ausnahmefällen auch Verwendung alternativer Sequenzen gehandhabt werden kann: Dies ist in Fig. 5 veranschaulicht. Diese Figur zeigt ein Zustandsdiagramm gleich dem nach Fig. 2, jedoch mit drei alternativen Adreßsequenzen gleicher Dauer, von denen nur eine in jedem Zyklus ausgeführt wird. Derartige Alternativen können einer Sequenz 50 nachfolgen, die für jeden Zyklus Standard ist, und beispielsweise vom Typ nach Fig. 2 sein kann. Die drei Abzweige 51a, 51b, 51c nach Fig. 5 stellen Alternative dar. Der Wahl einer Alternative folgt die Durchführung einer entsprechenden Sequenz von drei alternativen Sequenzen, die mittels Sequenzen von Blöcken (52a, 53a, 54a), (52b, 53b, 54b) oder (52c, 53c, 54c) dargestellt werden. Jeder Block entspricht einer besonderen Basisadresse, zu der Indizes wiederum addiert werden können, um eine der Adressen im Block zum Bilden einer Mikrocodeadresse zu wählen.
- Die Abzweige werden durch Adressierung einer Folgebasisadreß-ROM 34 unter Verwendung von Mikrocodeadressen eingeführt, wobei alternative Folgebasisadressen an Adressen entsprechend verschiedener Indizes gespeichert.
- Nachstehende Tabelle zeigt einen Inhalt des Folgeadreß-ROMs, der das Zustandsdiagramm nach Fig. 5 verwirklicht.
- Die obere Zeile enthält die Adresse der Stelle, die untere Zeile enthält die Folgeadresse, d. h. den Inhalt der Stelle. Die Stellen 2, 3 und 4 entsprechen den ersten Zuständen 52a, 52b und 52c der drei Abzweige 51a, 51b, 51c. Diese Zustände werden mit einer gemeinsamen Adresse (aus der Stelle 1) durch Addieren eines der Indizes (0,1,2) adressiert. Es sei bemerkt, daß diese Stellen 2, 3, 4, im Gegensatz zum Geschehen in Fig. 4, verschiedene Folgebasisadressen enthalten. Dies bewirkt, daß die Basisadressen alternativen Sequenzen (2, 5, 7, 14), (2, 10, 11, 14) oder (2, 12, 13, 14) folgen abhängig davon, welche Mikrocodeadresse in den ersten Zuständen (52a, 52b oder 52c) erzeugt wurde, als die Basisadresse 2 war.
- In jedem Schritt jeder alternativen Sequenz können nach Bedarf alternative Mikrocodes durch Addieren eines Indexes zur Basisadresse gewählt werden.
- Im erfindungsgemäßen Signalprozessor definiert jede Basisadresse eine zugeordnete Liste von Mikrocodeadressen, die unter Verwendung des Indexes unterschieden werden. Davon ausgehend, daß die für die Bearbeitungsfunktion benötigten Mikrocodes vom Signalprozessor durchgeführt werden, wird die Größe jeder Liste vorgeschrieben. Jedoch ist die Wahl der Basisadressen und der Indizes noch frei. Auch die Wahl des Addierungstyps (arithmetisch, bitweise logisch) ist noch frei. Diese freien Wahlvorgänge sind verwendbar zum Anpassen des Addierers 33, der Basisadressen und der Indizes aneinander, um den Schaltungsaufbau für den Addierer zu minimisieren und seine Geschwindigkeit zu erhöhen.
- Im Allgemeinen ist es vorteilhaft, wenn die Indizes mit möglichst wenig Bits dargestellt werden. Der Grund dazu ist die größere Komplexität der Indexbestimmungsmittel im Verhältnis zur Zahl der Indexbits. Die Zahl der Indexbits muß mindestens so groß sein, wie zum Zählen der Mikrocodes in der größten Liste erforderlich ist. Diese Zahl der Indexbits wird außerdem genügen, wenn die Indizes derart gewählt werden, daß sie wenigstens für die größten Listen ununterbrochen von Null auf einen Höchstwert verlaufen [0, 1, 2 ... max.].
- Im geradlinigsten Entwurf wird ein Binär-Volladdierer benutzt. In diesem Fall können mit Indizes von 0 auf einen Höchstwert die Basisadressen an jeweiligen Adressen angeordnet werden, die um die Länge ihrer jeweiligen Listen auseinanderliegen. Dieser Plan kann Übertrag zwischen den Bits der Adressen erfordern, wodurch weitere Verzögerung zwischen dem Eintreffen des Indexwertes und der anschließenden Ausgabe der Summe entsteht. Diese Verzögerung liegt im Weg von den Signaldaten zur Mikrocodeadresse. Dies beeinflußt die Geschwindigkeit, mit der die Mikrocodeadressen auf die Signaldaten ansprechen können, und dabei die Gesamtgeschwindigkeit des Signalprozessors.
- Die Verzögerung wird durch die Wahl der zu reproduzierenden Basisadressen derart reduziert, daß von vornherein gewährleistet ist, daß nur wenig Übertrag oder gar kein Übertrag durch Addierung erfolgt. Eine Weise zum Vermeiden von Übertrag ist die Gewährleistung, daß wenigstens jene Bits der Basisadresse, die vom Addiervorgang eines Indexes beeinflußt werden, in der Basisadresse gleich Null sind. Wenn beispielsweise die möglichen Indizes in einer Liste 0, 1 und 2 sind (3-Bit- Binärdarstellung 000, 001 und 010), wird Übertrag vermieden, wenn die Basisadresse dieser Liste auf 00 endet.
- Dies läßt sich insgesamt durch den folgenden beispielhaften Algorithmus zum Zuordnen der Basisadressen erreichen. Zunächst wird für jede Liste im Zyklus die Zahl der unbedeutsamsten Bits bestimmt, die von einem in der Binärdarstellung der Indizes abweichen. Anschließend werden den Listen, die die größte der Zahl derartiger Bits erfordern, wie z. B. N, in gleichem Abstand voneinander liegende Basisadressen mit je einer Binärdarstellung zugeordnet, in der die N unbedeutsamsten Bits gleich Null sind. Danach werden aufeinanderfolgenden Listen, die aufeinanderfolgend weniger derartiger Bits erfordern, Basisadressen zugeordnet, immer mit geeigneten unbedeutsamsten Bits, die Null sind. Die späteren zugeordneten Adressen werden zugeordnet und füllen von früheren Zuordnungen zurückgelassene Lücken im Adreßraum aus, wenn ihre Listen in diesen Lücken passen, und werden sonst hinter den früher zugeordneten Adressen zugeordnet. Diese später zugeordneten Adressen werden möglicherweise in gleichen Abständen angeordnet.
- Beispielsweise sei von der Verwendung von fünf Listen von 6, 5, 2, 2 und 1 Indizes ausgegangen. Die 6 und 5 langen Listen erfordern die meisten Indexbits (3). Daher werden zunächst die Adressen 0 und 8 (Adressen mit 3 Nullen in den unbedeutsamsten Bits der Binärdarstellung) als Basisadressen für die 6 bzw. 5 langen Listen. Das bedeutet, daß die Mikrocodeadressen 0 bis 5 und 8 bis 12 belegt sind, und daß die Mikrocodeadressen 6, 7, 13 und höher immer noch frei sind. Die um 2 langen Listen erhalten die Basisadresse 6 und 14 (Adressen mit 2 Nullen in den Bits niedrigster Wertigkeit der Binärdarstellung). Hierdurch werden die Mikrocodeadressen 6, 7 und 14, 15 belegt, und bleiben 13, 16 und darüber frei. Schließlich erhält die um einen Index lange Liste die Adresse 13 als Basisadresse.
- Es sind viele Abweichungen von diesem Zuordnungsplan möglich. Beispielsweise können die Indexwerte dadurch angepaßt werden, daß nicht ausschließlich benachbarte Indexwerte verwendet werden. Auf diese Weise kann eine Lücke geschaffen werden, in die eine andere Liste eingepaßt werden kann, um eine wirksamere Zuordnung zu erhalten.
- Auf diese oder eine ähnliche Weise wird gewährleistet, daß die Addierung des Indexes zur Basisadresse keinen Übertrag auslöst. Ohne Übertrag genügt es, eine einfache Struktur für den Addierer 33 zu verwenden, beispielsweise unter Verwendung eines bitweise arbeitenden ODER-Gatters zwischen den Bits des Indexes und der Basisadresse. Offensichtlich andere logische Operationen lassen sich stattdessen verwenden, vorausgesetzt es wird ein geeigneter Zuordnungsalgorithmus verwendet (z. B. bitweise arbeitende AND-Gatter, wobei die Basisadressen auf logische "Einsen" statt "Nullen" enden; oder Exklusiv-ODER-Gatter). Außerdem hat die Wertigkeit der Bits in den Basisadressen (d. h. die Energie von 2, der sie entsprechen), da es keinen Übertrag gibt, eine rein logische Bedeutung, und brauchen beispielsweise in der Ordnung von Adressen im Mikrocode-ROM 3 nicht reflektiert zu werden.
- In Fig. 6 ist ein weiteres Ausführungsbeispiel der Adreßerzeugungsmittel dargestellt, das mehrere zusätzliche Eigenschaften hat. Zunächst werden die Signaldaten aus den Bearbeitungsschaltungen in einem Seriell-ein/Parallel-aus-Schieberegister 75 empfangen. Dieses Register 75 verschiebt Daten unter der Steuerung des (nicht dargestellten) Taktgebers, der auch die Aktualisierung der Programmzählverriegelung 10 steuert. Hierdurch werden die in aufeinander folgenden Zuständen der Bearbeitungsschaltungen erzeugten Daten in das Register 75 eingegeben und parallel zu den Indexbestimmungsmitteln 32 vorgeführt. Auf diese Weise kann der Index abhängig von Signaldaten aus einem oder mehreren Zuständen vor einem aktuellen Zustand der Bearbeitungsschaltungen bestimmt werden, wie dies im Schieberegister 75 verfügbar gemacht ist. Die für das Schieberegister 75 gewählte Länge und daher die Anzahl der Taktzyklen, bevor Daten durch das Schieberegister 75 geschoben werden, ist abhängig vom Typ des durchzuführenden Bearbeitungsprogramms.
- Selbstverständlich braucht das Schieberegister 75 nicht auf die Annahme eines einzigen Bits aus jedem Zustand beschränkt zu werden: Es kann auch eine größere Breite als eins haben, d. h. es kann mehrere Eingänge haben zum parallelen Aufnehmen einer Anzahl verschiedener Datensignale und zum Eingeben dieser Datensignale in einem einfachen Taktzyklus in das Register 75. Während das Verschieben der Daten in das Register 75 hinein, können diese Signale auch parallel an die Indexbestimmungsmittel 32 gelegt werden.
- Eine alternative Verwendung des Schieberegisters ist die Verwendung von Speicherzellen, in die Signaldatenwörter gegenseitig unabhängig eingeschrieben werden können. In diesem Fall enthält der Signalprozessor Übertragungswege zwischen den Bearbeitungsschaltungen zu den Speicherzellen und den Schaltungen zum Wählen, in welche Speicherzelle ein besonderes Signaldatenwort eingeschrieben wird. Lesen der Speicherzellen ist gleich dem Lesen des Schieberegisters. Diese Architektur wird weniger Speicherzellen als ein Schieberegister erfordern. Jedoch werden die steuerbaren Teile eine weitere Verzögerung zwischen dem Eintreffen der Datensignale aus den Bearbeitungsschaltungen und der Erzeugung von Indizes in Abhängigkeit davon einführen. Diese Verzögerung ist kritisch für die Reaktionsgeschwindigkeit des Prozessors.
- In der Schieberegisterarchitektur nach Fig. 6 wird diese Verzögerung minimisiert, da die Bearbeitungsschaltungen 2 direkt mit dem Eingang des Schieberegisters 75 gekoppelt sind. Insbesondere gibt es am Eingang keine Schaltungen für die programmierbare Wahl von Signalen, da dies zusätzlich Verzögerungen einführen würde. Der Eingang selbst kann direkt als einer der parallelen Ausgänge verwendet werden.
- Eine weitere Eigenschaft nach Fig. 6 bezieht sich auf die Wahl des folgenden Werts des Programmzählstandes, der nicht ausschließlich von den Folgebasisadreßerzeugungsmitteln 34 gesteuert wird. Stattdessen erfolgt die Wahl über einen Multiplexer 71. Die Adreßerzeugungsmittel enthalten weiter noch bedingte Startmittel 70. Abhängig von den Signaldaten und unter der Steuerung der Basisadresse können diese Startmittel eine Startadresse erzeugen und den Multiplexer derart steuern, daß er diese Startadresse in die Programmzählverriegelung 10 statt der Folgebasisadresse eingibt.
- Dies ist nützlich zum Einleiten der Programmzählverriegelung oder zum Implementieren von Programmschleifen, wie in Fig. 7 veranschaulicht. Diese Figur zeigt ein Zustandsdiagramm mit einer Schleife. Hier ist die Basisadreßsequenz derart, daß sie sich mehrmals wiederholt. Dies geschieht durch Laden der dem Schleifenzustand 80 entsprechenden Basisadresse in die Programmzählverriegelung 10. Diese Basisadresse wird vom bedingten Startmittel erzeugt.
- Es wird klar sein, daß die zusätzliche Eigenschaft nach Fig. 6 (die Verwendung eines Schieberegisters zum Übertragen von Signaldaten auf die Indexbestimmungsmittel, die Wahl der Folgebasisadressen unter Verwendung eines Multiplexers und ggf. das bedingte Startmittel) getrennt oder kombiniert (wie in Fig. 6 dargestellt) anwendbar ist.
- Aus der obigen Beschreibung wird es klar sein, daß durch die Verwendung von Mikrocodewählmittel eine Standard-Adreßsequenz zum Steuern einer signaldatenabhängigen Mikrocodesequenz anwendbar ist. Zum Signalbearbeiten wird der Gebrauch einer Standardsequenz die für die Bestimmung von Mikrocodeadressen erforderliche Schaltungsmenge wesentlich reduzieren.
- Es wird klar sein, daß die Ausführungsbeispiele der Erfindung aus der Zeichnung und die Beschreibung nicht als Einschränkung der Erfindung zu betrachten sind. Beispielsweise kann, obgleich ein Mikrocode-ROM 3 behandelt wurde, diese Schaltung gegen jede Schaltung ausgetauscht werden, die in Beantwortung eines Adreßeingangs einen vorprogrammierten Ausgang erzeugt: Seine Funktion kann beispielsweise unter Verwendung eines programmierbaren Logikfeldes oder eines programmierbaren Festwertspeichers durchgeführt werden. Es kann sogar ein Direktzugriffspeicher benutzt werden, insbesondere wenn der Signalprozessor wiederprogrammierbar sein soll. Gleichartige gewählte Entwürfe sind offen für die Indexbestimmungsmittel 32, für die Folgebasisadreßbestimmungsmittel 34 und für die bedingte Startmittel 70. In den meisten Signalprozessoren, insbesondere für Kundenausrüstung, wird jedoch die Funktion des Signalprozessors in der Entwurfsphase festgesetzt, und es können zweckbedingte Schaltungen wie ROM und PLA sowie Schieberegister 75 mit zweckbedingter Länge und Breite verwendet werden.
- Für die meisten Zwecke werden die von den Bearbeitungsschaltungen bearbeiteten Signale durch Digitalsignale dargestellt, die je eine für die erforderliche Operation geeignete Bitzahl enthalten. Es wird klar sein, daß die Erfindung, die sich vorerst auf die Steuerschaltungen und nicht auf die Bearbeitungsschaltungen selbst bezieht, ebenfalls einsetzbar ist, wenn analoge zeitdiskrete Bearbeitungsschaltungen (die beispielsweise abgetastete Signale als Ladungen zu Kapazitäten speichern) mit Analog/Digitalwandlung zwischen den Bearbeitungsschaltungen und den Indexbestimmungsmitteln zum Steuern der letztgenannten verwendet werden.
Claims (10)
1. Zeitdiskreter Signalprozessor mit
- einem Signaleingang (1) zum Empfangen eines Signaleinheitenstroms,
- Adreßerzeugungsmitteln (4) zum Erzeugen eines zugeordneten Zyklus von
Mikrocodeadressen MA(i) (i = 1, ...) im Schritt mit dem Empfang jeder einzelnen Signaleinheit für
- einen Mikrocodespeicher (3) zum Steuern von Bearbeitungsschaltungen (2) zum
Bearbeiten der Signaleinheit,
dadurch gekennzeichnet, daß die Adreßerzeugungsmittel folgende Mittel enthalten:
Basisadreßreproduktionsmittel (30) zum Reproduzieren einer Standardfolge aufeinander
folgender Basisadressen BA(i) (i = 1 ... N) (45) in jedem Zyklus, und diese Mittel sind zum
Eingeben der Basisadressen BA(i) in
Mikrocodewählmittel (31) zum Wählen einer zugeordneten Mikrocodeadresse MA(i) (47)
aus einer Liste von mit der Basisadresse BA(i) bezeichneten Mikroadressen im Schritt mit
jeder Basisadresse.
2. Zeitdiskreter Signalprozessor nach Anspruch 1, dadurch gekennzeichnet,
daß die Mikrocodewählmittel folgende Mittel enthalten:
- Indexwählmittel (32) zum Wählen eines zugeordneten Indexes IA(i) unter der
Steuerung der Signaldaten, und
- Indexaddiermittel (33) zum Addieren der Basisadresse BA(i) und des gewählten
zugeordneten Indexes IA(i), wobei ein Summierausgang des Indexaddiermittels zum
Eingeben der Mikrocodeadressen MA(i) = BA(i)+IA(i) in den Mikrocodespeicher
angeordnet ist.
3. Zeitdiskreter Signalprozessor nach Anspruch 2, dadurch gekennzeichnet,
daß die Indexwählmittel zum Wählen des zugeordneten Indexes IA(i) = F(Daten,BA(i))
unter Mitsteuerung von ihrer Basisadresse BA(i) angeordnet sind.
4. Zeitdiskreter Signalprozessor nach Anspruch 3, dadurch gekennzeichnet, er
Klassenidentifikationsmittel enthält, die zum Erzeugen eines zugeordneten Klassensignals
CL(BA(i) (48) zu jeder reproduzierten Basisadresse BA(i) angeordnet ist, wobei dieses
Klassensignal eine Klasse identifiziert, zu der die Basisadresse gehört und die Mitsteuerung
IA(i) = F(Daten,CL(BA(i)) bestimmt.
5. Zeitdiskreter Signalprozess nach einem der Ansprüche 2 bis 4, dadurch
gekennzeichnet, daß in ihm alle Basisadressen von einer Basis-Bitzahl digital dargestellt
werden, wobei alle Indizes von einer Index-Bitzahl dargestellt werden und die Index-
Bitzahl kleiner ist als die Basis-Bitzahl.
6. Zeitdiskreter Signalprozessor nach einem oder mehreren der Ansprüche 1
bis 5, dadurch gekennzeichnet, daß die Basisadreßreproduktionsmittel einen Kettenspeicher
(34) und eine Rückkopplung von einem Ausgang des Kettenspeichers nach einem
Kettenadreßeingang enthält, wobei jede Basisadresse ihre mögliche Folge-Basisadresse
wählt.
7. Zeitdiskreter Signalprozessor nach einem oder mehreren der Ansprüche 2
bis 6, dadurch gekennzeichnet, daß die Indexaddiermittel einen Addierkreis (33) mit
beschränktem Übertrag enthalten.
8. Zeitdiskreter Signalprozessor nach einem oder mehreren der Ansprüche 2
bis 7, dadurch gekennzeichnet, daß die Indexaddiermittel einen Addierkreis (33) enthalten,
der ein übertragsfreier Addierkreis ist.
9. Zeitdiskreter Signalprozessor nach einem oder mehreren der vorangehenden
Ansprüche, dadurch gekennzeichnet, daß er Seriell-ein/Parallel-aus-Schieberegistermittel
(75) mit einem Schiebeeingang enthält, der eine feste vorprogrammierte Kopplung mit den
Bearbeitungsschaltungen zum seriellen Empfangen bearbeiteter Signale hat, wobei die
Schieberegistermittel einen mit den Indexaddiermitteln gekoppelten parallelen Ausgang
enthalten.
10. Zeitdiskreter Signalprozessor nach Anspruch 6, dadurch gekennzeichnet,
daß die Rückkopplung zum Einspeisen der Mikrocodeadressen BA(i)+IA(i) in den
Kettenadreßeingang angeordnet ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP92201738 | 1992-06-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69325207D1 DE69325207D1 (de) | 1999-07-15 |
DE69325207T2 true DE69325207T2 (de) | 1999-12-09 |
Family
ID=8210687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69325207T Expired - Fee Related DE69325207T2 (de) | 1992-06-15 | 1993-06-08 | Prozessor zur Verarbeitung zeitdiskreter Signale |
Country Status (4)
Country | Link |
---|---|
US (1) | US5584000A (de) |
JP (1) | JP3478849B2 (de) |
KR (1) | KR100281153B1 (de) |
DE (1) | DE69325207T2 (de) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860151A (en) * | 1995-12-07 | 1999-01-12 | Wisconsin Alumni Research Foundation | Data cache fast address calculation system and method |
KR19990064928A (ko) * | 1999-05-21 | 1999-08-05 | 신이균 | 함수적 핵자기공명 영상시스템을 위한 고속 영상처리 방법 |
DE102005046702B4 (de) * | 2005-09-29 | 2009-09-03 | Infineon Technologies Ag | Verfahren und Prozessor zum Klassifizieren von Datenpaketeinheiten |
EP4092674B1 (de) * | 2021-05-19 | 2024-08-07 | Commissariat à l'Energie Atomique et aux Energies Alternatives | Programmierschaltung für einen nichtflüchtigen speicher und programmierverfahren von nichtflüchtigen speichervorrichtungen |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3634883A (en) * | 1969-11-12 | 1972-01-11 | Honeywell Inc | Microinstruction address modification and branch system |
BE758027R (fr) * | 1970-02-16 | 1971-04-26 | Burroughs Corp | Circuit de manipulation d'adresses pour un calculateur |
FR122199A (de) * | 1973-12-17 | |||
US3949378A (en) * | 1974-12-09 | 1976-04-06 | The United States Of America As Represented By The Secretary Of The Navy | Computer memory addressing employing base and index registers |
US4047247A (en) * | 1976-04-07 | 1977-09-06 | Honeywell Information Systems Inc. | Address formation in a microprogrammed data processing system |
US4240139A (en) * | 1977-09-22 | 1980-12-16 | Tokyo Shibaura Denki Kabushiki Kaisha | Address generating system |
US4155120A (en) * | 1977-12-01 | 1979-05-15 | Burroughs Corporation | Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution |
US4179737A (en) * | 1977-12-23 | 1979-12-18 | Burroughs Corporation | Means and methods for providing greater speed and flexibility of microinstruction sequencing |
US4285049A (en) * | 1978-10-11 | 1981-08-18 | Operating Systems, Inc. | Apparatus and method for selecting finite success states by indexing |
FR2472781B1 (fr) * | 1979-12-27 | 1986-02-21 | Cii Honeywell Bull | Dispositif de gestion de microinstructions enregistrees dans une memoire d'une unite de traitement de l'information |
US4521858A (en) * | 1980-05-20 | 1985-06-04 | Technology Marketing, Inc. | Flexible addressing and sequencing system for operand memory and control store using dedicated micro-address registers loaded solely from alu |
JPS58144272A (ja) * | 1982-02-19 | 1983-08-27 | Sony Corp | デイジタル信号処理装置 |
US4531200A (en) * | 1982-12-02 | 1985-07-23 | International Business Machines Corporation | Indexed-indirect addressing using prefix codes |
US4935867A (en) * | 1986-03-04 | 1990-06-19 | Advanced Micro Devices, Inc. | Signal processor memory management unit with indirect addressing using selectable offsets and modulo values for indexed address calculations |
US5058007A (en) * | 1987-11-05 | 1991-10-15 | Raytheon Company | Next microinstruction generator in a microprogram control unit |
SE465393B (sv) * | 1990-01-16 | 1991-09-02 | Ericsson Telefon Ab L M | Adressprocessor foer en signalprocessor |
US5377335A (en) * | 1991-08-30 | 1994-12-27 | Unisys Corporation | Multiple alternate path pipelined microsequencer and method for controlling a computer |
-
1993
- 1993-06-08 DE DE69325207T patent/DE69325207T2/de not_active Expired - Fee Related
- 1993-06-15 JP JP14376193A patent/JP3478849B2/ja not_active Expired - Fee Related
- 1993-06-15 KR KR1019930010847A patent/KR100281153B1/ko not_active Expired - Fee Related
-
1995
- 1995-05-22 US US08/445,988 patent/US5584000A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69325207D1 (de) | 1999-07-15 |
KR940000956A (ko) | 1994-01-10 |
US5584000A (en) | 1996-12-10 |
JP3478849B2 (ja) | 2003-12-15 |
KR100281153B1 (ko) | 2001-02-01 |
JPH0667875A (ja) | 1994-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2158378C2 (de) | Digitales Filter | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE3485792T2 (de) | Digitale signalverarbeitungseinrichtungen. | |
DE3786594T3 (de) | Speicherverwaltungseinheit für Digitalsignalprozessor. | |
DE2321112C2 (de) | Signalverarbeitungsanlage | |
DE3303488C2 (de) | Digitales Signalverarbeitungssystem | |
DE3882772T2 (de) | Vektorprozessor angepasst zum Sortieren von Vektordaten. | |
DE69314824T2 (de) | Neuronaler Prozessor mit verteilten synaptischen Zellen | |
DE2839726A1 (de) | Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system | |
DE1928202B2 (de) | Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen | |
DE69324730T2 (de) | Multiplizier-Akkumulator | |
DE3752280T2 (de) | Mustergenerator | |
DE3400723C2 (de) | ||
DE1282337B (de) | Programmgesteuerte elektronische Rechenanlage | |
DE2556617C2 (de) | Schiebe- und Rotierschaltung | |
DE69029796T2 (de) | Adressierprozessor für einen Signalprozessor | |
DE3507584C2 (de) | ||
DE2506671C3 (de) | Binärdaten-Handhabungsnetzwerk | |
DE69521464T2 (de) | Paralleler Prozessor | |
DE69032358T2 (de) | Datenverarbeitungssystem für Audiosignale | |
DE69325207T2 (de) | Prozessor zur Verarbeitung zeitdiskreter Signale | |
DE69031361T2 (de) | Taktsignalgeneratorsystem | |
DE69926576T2 (de) | Betriebsmittelteilung in einem digitalen filter | |
DE68903280T2 (de) | Vektorschlange in computern mit vektorregister. | |
DE69527253T2 (de) | Signalverarbeitungsvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |