DE69034059T2 - Arithmetisch-logische Einheit mit Akkumulator und parallelem Register - Google Patents

Arithmetisch-logische Einheit mit Akkumulator und parallelem Register Download PDF

Info

Publication number
DE69034059T2
DE69034059T2 DE1990634059 DE69034059T DE69034059T2 DE 69034059 T2 DE69034059 T2 DE 69034059T2 DE 1990634059 DE1990634059 DE 1990634059 DE 69034059 T DE69034059 T DE 69034059T DE 69034059 T2 DE69034059 T2 DE 69034059T2
Authority
DE
Germany
Prior art keywords
register
accumulator
data
bit
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE1990634059
Other languages
English (en)
Other versions
DE69034059D1 (de
Inventor
Peter N. Houston Ehlig
Frederic Boutaud
James F. Dallas Hollander
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/347,615 external-priority patent/US5142677A/en
Priority claimed from US07/347,596 external-priority patent/US5072418A/en
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69034059D1 publication Critical patent/DE69034059D1/de
Application granted granted Critical
Publication of DE69034059T2 publication Critical patent/DE69034059T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318536Scan chain arrangements, e.g. connections, test bus, analog signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318505Test of Modular systems, e.g. Wafers, MCM's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/2733Test interface between tester and unit under test

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)

Description

  • Diese Erfindung bezieht sich auf Datenverarbeitungsvorrichtungen, auf elektronische Verarbeitungs- und Steuerungssysteme und auf Verfahren ihrer Herstellung und ihres Betriebs.
  • HINTERGRUND DER ERFINDUNG
  • Eine Mikroprozessorvorrichtung ist eine zentrale Verarbeitungseinheit oder CPU für einen Digitalprozessor, die üblicherweise in einer einzelnen integrierten Halbleiterschaltung oder in einem "Chip" enthalten ist, der mit der MOS/LSI-Technik hergestellt wird, wie sie in dem US-Patent Nr. 3.757.306, erteilt an Gary W. Boone und übertragen auf Texas Instruments Incorporated, gezeigt ist. Das Patent an Boone zeigt eine Einchip-8-Bit-CPU mit einer parallelen ALU, mit Registern für Daten und Adressen, mit einem Befehlsregister und mit einem Steuerdecodierer, die sämtlich unter Verwendung der Von-Neumann-Architektur verbunden sind und einen bidirektionalen, parallelen Bus für Daten, Adressen und Befehle verwenden. Das US-Patent Nr. 4.074.351, erteilt an Gary W. Boone und Michael J. Cochran, überrragen auf Texas Instruments Incorporated, zeigt eine in der Harvard-Architektur konstruierte Einchip-"Mikrocomputer"-Vorrichtung, die eine parallele 4-Bit-ALU und ihre Steuerschaltungsanordnung mit einem auf dem Chip befindlichen ROM für die Programmspeicherung und einem auf dem Chip befindlichen RAM für die Datenspeicherung enthält. Der Begriff Mikroprozessor bezieht sich üblicherweise auf eine Vorrichtung, die für die Programm- und Datenspeicherung einen externen Speicher verwendet, während sich der Begriff Mikrocomputer auf eine Vorrichtung mit auf dem Chip befindlichem ROM und RAM für die Programm- und Datenspeicherung bezieht. In der Beschreibung der vorliegenden Erfindung wird der Begriff "Mikrocomputer" in der Weise verwendet, daß er beide Arten von Vorrichtungen umfaßt, während der Begriff "Mikroprozessor" in erster Linie zur Bezugnahme auf Mikrocomputer ohne auf dem Chip befindlichen ROM verwendet wird. Da die Begriffe auf dem Gebiet häufig austauschbar verwendet werden, ist jedoch selbstverständlich, daß die Verwendung eines dieser beiden Begriffe in dieser Beschreibung bezüglich der Merkmale dieser Erfindung nicht als einschränkend betrachtet werden sollte.
  • Moderne Mikrocomputer können in zwei allgemeine Klassen, und zwar Universal-Mikroprozessoren und Spezial-Mikrocomputer/Mikroprozessoren, gruppiert werden. Universal-Mikroprozessoren wie etwa der von Motorola, Inc., hergestellte M68020 sind so beschaffen, daß sie von dem Anwender zum Ausführen irgendeiner Aufgabe aus einem weiten Bereich von Aufgaben programmiert werden können, und werden somit häufig als die Zentraleinheit in Geräten wie etwa Personal Computern verwendet. Während solche Universal-Mikroprozessoren eine gute Leistung für einen weiten Bereich von Arithmetik- und Logikfunktionen haben, sind sie natürlich nicht spezifisch für irgendeine besondere dieser Funktionen bestimmt oder an diese angepaßt. Spezial-Mikrocomputer sind im Gegensatz dazu dafür bestimmt, eine Leistungsverbesserung für spezifische vorgegebene Arithmetik- und Logikfunktionen, für die der Anwender den Mikrocomputer verwenden möchte, zu schaffen. Durch Kenntnis der primären Funktion des Mikrocomputers kann der Konstrukteur den Mikrocomputer in der Weise konstruieren, daß die Leistung der spezifischen Funktion des Spezial-Mikrocomputers die Leistung der gleichen Funktion des Universal-Mikroprozessors unabhängig von dem durch den Anwender erzeugten Programm bedeutend übersteigt.
  • Eine solche Funktion, die von einem Spezial-Mikrocomputer mit einer bedeutend verbesserten Geschwindigkeit ausgeführt werden kann, ist die digitale Signalverarbeitung, genauer die für die Verwirklichung von Digitalfiltern und für die Ausführung schneller Fourier-Transformationen erforderlichen Berechnungen. Da solche Berechnungen zu einem hohen Grad aus sich wiederholenden Operationen wie etwa der Ganzzahlmultiplikation, der Mehrbitverschiebung und der kombinierten Multiplikation und Addition bestehen, kann ein Spezial-Mikrocomputer konstruiert werden, der an diese sich wiederholenden Funktionen speziell angepaßt ist. Ein solcher Spezial-Mikrocomputer ist in dem US-Patent Nr. 4.577.282, übertragen auf Texas Instruments Incorporated, beschrieben. Die spezifische Konstruktion eines Mikrocomputers für diese Berechnungen hat zu einer hinreichenden Leistungssteigerung gegenüber Universal-Mikroprozessoren geführt, um die Verwendung solcher Spezial-Mikrocomputer in Echtzeitanwendungen wie etwa der Sprach- und Bildverarbeitung zu ermöglichen.
  • Wegen ihres rechenintensiven Wesens sind digitale Signalverarbeitungsanwendungen auch recht intensiv in Bezug auf Speicherzugriffsoperationen. Dementsprechend ist die Gesamtleistung des Mikrocomputers beim Ausführen einer digitalen Signalverarbeitungsfunktion nicht nur durch die Anzahl der pro Zeiteinheit ausgeführten spezifischen Berechnungen, sondern auch durch die Geschwindigkeit, mit der der Mikrocomputer Daten aus dem Systemspeicher auslesen und in diesem speichern kann, bestimmt. Frühere Spezial-Mikrocomputer, wie etwa der in der US-A-4 577 282 beschriebene Mikrocomputer, haben modifizierte Versionen einer Harvard-Architektur verwendet, so daß der Zugriff auf den Datenspeicher unabhängig von und gleichzeitig mit dem Zugriff auf den Programmspeicher erfolgen kann. Natürlich hat eine solche Architektur eine zusätzliche Leistungssteigerung geschaffen.
  • Die wachsenden Anforderungen der Technik und des Marktes machen noch weitere Struktur- und Prozeßverbesserungen der Verarbeitungsvorrichtungen, Anwendungssysteme und Betriebs- und Herstellungsverfahren wünschenswert.
  • US-A-4 467 444 offenbart einen Mikroprozessor mit einer Dreieingangs-Arithmetik-Logik-Einheit. Jeder Eingang besitzt einen Multiplexer, um die Daten für diesen Eingang auszuwählen. Der erste wählt zwischen einem 32-Wort-RAM, dem Akkumulator und einem Zwischenspeicher zum Empfangen von Daten von einem externen Datenbus; der zweite wählt zwischen dem RAM, dem Befehlsbus und dem Akkumulator; und der dritte wählt zwischen dem RAM, dem Akkumulator und dem Zwischenspeicher. Das Ausgangssignal der Arithmetik-Logik-Einheit kann an den RAM, an den Akkumulator oder an den Ausgang des externen Datenbusses gesendet werden.
  • US-A-4 396 979 offenbart einen Mikroprozessor mit einer Zweieingangs-Arithmetik-Logik-Einheit. Jeder Eingang besitzt einen Multiplexer, um die Daten für diesen Eingang auszuwählen. Der erste wählt zwischen einer Registerdatei (die vier Register enthält), einem Zähler und einem Busregister. Der zweite wählt zwischen diesen dreien und außerdem dem Programmzähler. Das Ausgangssignal der Arithmetik-Logik-Einheit kann über einen Schieber übergeben werden und daraufhin an den Zähler, an die Registerdatei oder an das Busregister gesendet werden. Außerdem kann es über einen Informationsbus an den externen Speicher gesendet werden. Die Daten von dem externen Speicher können über den Informationsbus an das Busregister übertragen werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß der vorliegenden Erfindung wird eine Datenverarbeitungsvorrichtung geschaffen, mit:
    • A. einer Arithmetik-Logik-Einheit, die Ausgangsleitungen, die Ausgangssignale transportieren, und zwei Gruppen von Eingangsleitungen, die Eingangssignale transportieren, besitzt;
    • B. einem Akkumulator, der Eingangsleitungen, die Eingangssignale transportieren und wahlweise mit den Ausgangsleitungen der Arithmetik-Logik-Einheit verbunden sind, sowie Ausgangsleitungen, die Ausgangssignale transportieren und wahlweise mit einer Gruppe von Eingangsleitungen der Arithmetik-Logik-Einheit verbunden sind, besitzt; und
    • C. einem parallelen Register, das Ausgangsleitungen besitzt, die Ausgangssignale transportieren und wahlweise mit der anderen Gruppe von Eingangsleitungen der Arithmetik-Logik-Einheit verbunden sind; dadurch gekennzeichnet, daß die Vorrichtung ferner eine direkte bidirektionale Verbindung zwischen dem Akkumulator und dem parallelen Register umfaßt, um die Inhalte des Akkumulators an das parallele Register zu übertragen und um die Inhalte des parallelen Registers an den Akkumulator zu übertragen.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Die für die Erfindung für charakteristisch gehaltenen neuen Merkmale sind in den beigefügten Ansprüchen dargestellt. Die zweckmäßigen Ausführungen der Erfindung sowie weitere ihrer Merkmale und Vorteile können am besten mit Bezug auf die folgende ausführliche Beschreibung verstanden werden, wenn diese in Verbindung mit der beigefügten Zeichnung gelesen wird, worin:
  • 1A und 1B zwei Hälften eines Blockschaltplans einer verbesserten Mikrocomputervorrichtung mit einer auf einem einzigen Halbleiterchip gebildeten CPU oder Zentraleinheit sind;
  • 2 ein Blockschaltplan eines verbesserten industriellen Prozesses und eines Schutzsteuersystems ist;
  • 3 eine teilweise als Prinzipdiagramm und teilweise als Blockschaltplan ausgeführte Darstellung eines verbesserten Kraftfahrzeugsystems ist;
  • 4 ein Blockschaltplan eines verbesserten Motorsteuersystems ist;
  • 5 ein Blockschaltplan eines weiteren verbesserten Motorsteuersystems ist;
  • 6 ein Blockschaltplan eines nochmals weiteren verbesserten Motorsteuersystemsist;
  • 7 ein Blockschaltplan eines verbesserten Robotersteuersystems ist;
  • 8 ein Blockschaltplan eines verbesserten Satelliten-Telekommunikationssystems ist;
  • 9 ein Blockschaltplan eines verbesserten Echokompensatorsystems für das System nach 8 ist;
  • 10 ein Blockschaltplan eines verbesserten Modemsenders ist;
  • 11 ein Blockschaltplan ist, der in gleicher Weise die Hardwareblöcke wie die Prozeßblöcke für den verbesserten Modemsender nach 10 darstellt;
  • 12 ein Blockschaltplan ist, der in gleicher Weise die Hardwareblöcke wie die Prozeßblöcke für einen verbesserten Modemempfänger darstellt;
  • 13 ein Blockschaltplan eines verbesserten Systems mit einem Host-Computer und mit einem für PCM-Kommunikationen (Pulscode-Modulations-Kommunikationen) angeschlossenen digitalen Signalprozessor ist;
  • 14 ein Blockschaltplan eines verbesserten Videobild-Darstellungssystems mit einer Verarbeitung mehrdimensionaler Matrizen ist;
  • 15 ein Blockschaltplan ist, der in gleicher Weise die Hardwareblöcke wie die Prozeßblöcke für die verbesserte Graphik-, Bild- und Videoverarbeitung darstellt;
  • 16 ein Blockschaltplan eines Systems für die verbesserte Graphik-, Bild- und Videoverarbeitung ist;
  • 17 ein Blockschaltplan eines verbesserten automatischen Spracherkennungssystems ist;
  • 18 ein Blockschaltplan eines verbesserten Vocoder-Modem-Systems mit Verschlüsselung ist;
  • 19 eine Reihe von sieben Darstellungen eines elektronischen Registers, das Informationsbits hält, ist und die Bitmanipulationsoperationen einer Verbesserung der parallelen Logikeinheit nach 1B zeigt;
  • 20 ein Blockschaltplan eines verbesserten Systems für die digitale Signalverarbeitung mit einer hohen Abtastrate ist;
  • 21 ein Blockschaltplan einer Architektur für eine verbesserte Datenverarbeitungsvorrichtung mit der CPU aus den 1A und 1B ist;
  • 22 ein Stromlaufplan einer Schaltung für die organisationsaufwandfreie Unterbrechungskontextumschaltung ist;
  • 23 ein Stromlaufplan einer alternativen Schaltung für die organisationsaufwandfreie Unterbrechungskontextumschaltung ist;
  • 24 ein Stromlaufplan einer weiteren alternativen Schaltung für die organisationsaufwandfreie Unterbrechungskontextumschaltung ist;
  • 25 ein Ablaufplan eines Verfahrens zum Betreiben der Schaltung nach 24 ist;
  • 26 ein Prozeßablaufplan ist, der die Befehle für das automatische Berechnen eines Maximums oder eines Minimums in der Datenverarbeitungsvorrichtung nach den 1A und 1B zeigt.
  • Wo im Kontext nicht anders angegeben, beziehen sich entsprechende Bezugszeichen und weitere Symbole auf die entsprechenden Teile in den verschiedenen Figuren der Zeichnung.
  • AUSFÜHRLICHE BESCHREIBUNG ZWECKMÄSSIGER AUSFÜHRUNGEN
  • Eine Architekturübersicht beschreibt zunächst eine zweckmäßige Ausführung der digitalen Signalverarbeitungsvorrichtung 11.
  • Die bevorzugte Ausführung der digitalen Signalverarbeitungsvorrichtung 11 nach den 1A und 1B implementiert eine Harvard-Architektur, die für eine Hochgeschwindigkeitsausführung durch Unterhalten zweier getrennter Speicherbusstrukturen, einer Programm- und einer Datenspeicherbusstruktur, die Verarbeitungsleistung maximiert. Es werden Befehle zur Schaffung von Datenübertragungen zwischen den zwei Räumen aufgenommen.
  • Die Vorrichtung 11 verfügt über eine Programmadressierungsschaltung 13 und über eine elektronische Berechnungsschaltung 15 mit einem Prozessor. Die Berechnungsschaltung 15 führt unter Verwendung einer 32 Bit-ALU 21 und eines Akkumulators 23 eine Zweierkomplement-Arithmetik aus. Die ALU 21 ist eine Universal-Arithmetik-Logik-Einheit, die unter Verwendung von aus einem Datenspeicher 25 nach 1B entnommenen oder aus Sofortbefehlen abgeleiteten 16 Bit-Wörtern oder unter Verwendung des 32 Bit-Ergebnisses eines Multi plizierers 27 arbeitet. Zusätzlich zur Ausführung der Arithmetikbefehle kann die ALU 21 Boolesche Operationen ausführen. Der Akkumulator 23 speichert die Ausgangsgröße von der ALU 21 und stellt über den Pfad 29 eine zweite Eingangsgröße in die ALU 21 bereit. Der Akkumulator 23 hat zur Veranschaulichung eine Länge von 32 Bits und ist in ein höherwertiges Wort (die Bits 31 bis 16) und in ein niederwertiges Wort (die Bits 15 bis 0) unterteilt. Es werden Befehle zum Speichern der höherwertigen und niederwertigen Akkumulatorwörter in dem Datenspeicher 25 bereitgestellt. Für die schnelle, temporäre Speicherung des Akkumulators 23 gibt es einen 32 Bit-Akkumulatorpuffer ACCB 31.
  • Zusätzlich zu der Haupt-ALU 21 gibt es in 1B eine Peripherie-Logikeinheit (PLU) 41, die Logikoperationen an Speicherbereichen bereitstellt, ohne den Inhalt des Akkumulator 23 zu beeinflussen. Die PLU 41 schafft eine umfassende Bitmanipulationsfähigkeit für Hochgeschwindigkeits-Steuerzwecke und vereinfacht das Setzen, Löschen und Prüfen von Bits im Zusammenhang mit Steuer- und Zustandsregisteroperationen.
  • Der Multiplizierer 27 aus 1A führt eine 16 × 16 Bit-Zweierkomp ement-Multiplikation mit einem 32 Bit-Ergebnis in einem einzigen Befehlszyklus aus. Der Multiplizierer besteht aus drei Elementen: einem temporären TREGO-Register 49, einem Produktregister PREG 51 und der Multiplizierermatrix 53. Das 16 Bit-TREGO-Register 49 speichert temporär den Multiplikanden; das PREG-Register 51 speichert das 32 Bit-Produkt. Die Multiplikatorwerte kommen entweder aus dem Datenspeicher 25, bei Verwendung der MAC/MACD-Befehle aus einem Programmspeicher 61, oder sie werden sofort aus dem MPYK-Befehlswort (Sofortmultiplikations-Befehlswort) abgeleitet.
  • Der Programmspeicher 61 ist an den Adressierungseingängen an einen Programmadressenbus 101A angeschlossen. Der Speicher 61 ist an seinem Lese/Schreib-Eingang/Ausgang an einen Programmdatenbus 101D angeschlossen. Der schnelle auf dem Chip befindliche Multiplizierer 27 ermöglicht, daß die Vorrichtung 11 die Grund-DSP-Operationen wie etwa die Faltung, die Korrelation und die Filterung effizient ausführt.
  • Ein Prozessorskalierungsschieber 65 besitzt einen über einen Multiplexer (MUX) 73 an einen Datenbus 111D angeschlossenen 16 Bit-Eingang und einen über einen Multiplexer 77 an die ALU 21 angeschlossenen 32 Bit-Ausgang. Wie durch einen Befehl programmiert oder in einem Schiebezählungsregister (TREG1) 81 definiert ist, erzeugt der Skalierungsschieber 65 eine Linksverschiebung der Eingangsdaten von 0 bis 16 Bits. Die LSBs (niedrigstwertigsten Bits) der Ausgangsgröße werden mit Nullen gefüllt, während die MSBs (die höchstwertigen Bits) in Abhängigkeit von dem Zustand des Vorzeichenerweiterungs-Modusbits SXM des Zustandsregisters ST1 in einem Registersatz 85 aus 1B entweder mit Nullen gefüllt oder vorzeichenerweitert werden können. Zusätzliche Schiebefähigkeiten ermöglichen, daß der Prozessor 11 eine numerische Skalierung, eine Bitextraktion, eine erweiterte Arithmetik und eine Überlaufverhinderung ausführt.
  • Zum Speichern des Inhalts eines Programmzählers 93 während Unterbrechungen und Unterprogrammaufrufen werden bis zu acht Ebenen eines Hardware-Stapels 91 bereitgestellt. Bei einer Kontextänderung wird der Programmzähler 93 über einen MUX 95 wahlweise vom Programmadressenbus 101A oder vom Programmdatenbus 101D geladen. Der PC 93 wird auf den Adressenbus 101A geschrieben oder auf den Stapel 91 geschoben. Bei Unterbrechungen werden bestimmte strategische Register (der Akkumulator 23, das Produktregister 51, TREGO 49, TREG1, TREG2 und im Register 113: ST0, ST1, PMST, ARCR, INDX und CMPR) auf einen Stapel der Tiefe eins geschoben und bei der Unterbrechungsrückkehr abgehoben; somit wird eine organisationsaufwandfreie Unter brechungskontextumschaltung geschaffen. Die zum Sichern des Inhalts dieser Register wirksamen Unterbrechungen sind maskierbar.
  • Das in den 1A und 1B gezeigte Funktionsblockdiagramm skizziert die Hauptblöcke und Datenpfade in dem Prozessor. Weitere Einzelheiten der Funktionsblöcke werden nachfolgend geliefert. Wegen der Definitionen der in den 1A und 1B verwendeten Symbole wird auf Tabelle A-1, die interne Hardware-Zusammenfassung, verwiesen.
  • Die Prozessorarchitektur ist um zwei Hauptbusse (Paare) gebaut: den Programmbus 101A und 101D und den Datenbus 111A und 111D. Der Programmbus überträgt den Befehlscode und die Sofortoperanden aus dem Programmspeicher an den Programmdatenbus 101D. Die Adressen für den Programmspeicher 61 werden auf dem Programmadressenbus 101A geliefert. Der Datenbus umfaßt den Datenadressenbus 111A und den Datenbus 111D. Der letztere Bus 111D verbindet verschiedene Elemente wie etwa die Zentral-Arithmetik-Logik-Einheit (CALU) 15 und eine Hilfsregisterdatei 115 und die Register 85 mit dem Datenspeicher 25. Für Multiplikations/Akkumulations-Operationen können die Programm- und Datenbusse 101 und 111 in einem einzigen Zyklus zusammen Daten aus dem auf dem Chip befindlichen Datenspeicher 25 und aus dem internen oder externen Programmspeicher 61 an den Multiplizierer 27 übertragen. Der Datenspeicher 25 und die Register 85 werden über den Datenadressenbus 111A adressiert. An den Datenadressenbus 111A ist ein Kernregister-Adressendecodierer 121 zum Adressieren der Register 85 und aller anderen adressierbaren CPU-Kernregister angeschlossen.
  • Der Prozessor 13, 15 besitzt einen hohen Grad von Parallelität; z. B. werden Arithmetikoperationen vorteilhaft während des Bearbeitens der Daten durch die CALU 15 in einer Hilfsregister-Arithmetikeinheit (ARAU) 123 realisiert. Eine solche Parallelität führt zu einem leistungsfähigen Satz von Arithmetik-Logik- und Bitmanipulationsoperationen, die alle in einem einzigen Maschinenzyklus ausgeführt werden können.
  • Die prozessorinterne Hardware umfaßt Hardware für die Einzyklus-16 × 16 Bit-Multiplikation, für die Datenverschiebung und für die Adressenmanipulation.
  • Die Tabelle A-1 bietet eine Zusammenfassung der internen Hardware. Diese zusammenfassende Tabelle, die die internen Verarbeitungselemente, die Register und die Busse umfaßt, ist in jeder Funktionsgruppe alphabetisch geordnet.
  • Tabelle A-1 Interne Hardware
    Figure 00120001
  • Figure 00130001
  • Figure 00140001
  • Figure 00150001
  • Figure 00160001
  • Figure 00170001
  • Tabelle A-2 Auf den Speicher abgebildete Register
    Figure 00180001
  • Figure 00190001
  • Der Prozessor 13, 15 adressiert insgesamt 64 K Wörter des Datenspeichers 25. Der Datenspeicher 25 wird in den 96 K-Datenspeicherraum abgebildet, während der auf dem Chip befindliche Programmspeicher in einen 64 K-Programmspeicherraum abgebildet wird.
  • Der 16 Bit-Datenadressenbus 111A adressiert den Datenspeicher 25 auf eine der folgenden zwei Arten:
    • 1) mittels eines Direktadressenbusses (DAB) unter Verwendung des direkten Adressierungsmodus (z. B. ADD 010h), oder
    • 2) mittels eines Hilfsregisterdatei-Busses (AFB) unter Verwendung des indirekten Adressierungsmodus (z. B. ADD*).
    • 3) Operanden werden außerdem durch den Inhalt des Programmzählers in einem Sofortadressierungsmodus adressiert.
  • In dem Direktadressierungsmodus zeigt ein 9 Bit-Datenspeicher-Seitenzeiger (DP) 125 auf eine von 512 (128 Wörter-) Seiten. Ein MUX 126 wählt auf einen Befehl entweder den Bus 101D oder den Bus 111D für den DP-Zeigerregisterabschnitt 125. Die von dem Programmdatenbus 101D durch sieben LSBs 127 des Befehls spezifizierte Datenspeicheradresse (dma) zeigt auf das gewünschte Wort in der Seite. Die Adresse auf dem DAB wird durch Verketten des 9 Bit-DP mit der 7 Bit-dma gebildet. Ein MUX 129 liefert auf Befehl wahlweise entweder die Ausgangsgröße der ARAU 123 oder die verkettete (DP, dma) Ausgangsgröße an den Datenadressenbus 111A.
  • In dem indirekten Adressierungsmodus adressiert das momentan in den Registern 115 gewählte 16 Bit-Hilfsregister AR(ARP) über den AFB den Datenspeicher. Während das gewählte Hilfsregister die Datenspeicheradresse liefert und die Daten von der CALU 15 manipuliert werden, kann der Inhalt des Hilfsregisters durch die ARAU 123 manipuliert werden.
  • Die Datenspeicher-Adressenabbildung kann durch Seitenwechsel in zusätzlichen 32 K Wörtern über die globale Speicherschnittstelle über den 64 K-Wort Adressenbereich des 16 Bit-Adressenbusses hinaus erweitert werden. Durch Laden des GREG-Registers mit dem richtigen Wert kann dem lokalen Datenspeicher beginnend bei der höchsten Adresse und abwärts fortschreitend zusätzlicher Speicher überlagert werden. Dieser zusätzliche Speicher unterscheidet sich von dem lokalen Speicher dadurch, daß das BR-Pin aktiv tief ist.
  • Wenn ein Sofortoperand verwendet wird, ist er entweder in dem Befehlswort selbst oder, im Fall der 16 Bit-Sofortoperanden, in dem Wort, das dem Befehlswort folgt, enthalten.
  • Für die indirekte Adressierung des Datenspeichers 25 oder für die temporäre Datenspeicherung werden acht Hilfsregister (AR0–AR7) in den Hilfsregistern 115 verwendet. Die indirekte Hilfsregisteradressierung erlaubt, die Datenspeicheradresse eines Befehlsoperanden in einem der Hilfsregister anzuordnen. Auf diese Register zeigt ein Dreibit-Hilfsregisterzeiger (ARP) 141, der mit einem jeweils mit AR0 bis AR7 bezeichneten Wert von 0 bis 7 geladen wird. Die Eingänge eines MUX 144 sind mit dem Datenbus 111D und mit dem Programmdatenbus 101D verbunden. Der MUX 144 wird durch einen Befehl zum Erhalten eines Werts für den ARP 141 von einem der zwei Busse 111D und 101D betrieben. Die Hilfsregister 115 und der ARP 141 können entweder aus dem Datenspeicher 25, aus dem Akkumulator 23, aus dem Produktregister 51 oder durch einen in dem Befehl definierten Sofortoperanden geladen werden. Die Inhalte dieser Register können außerdem im Datenspeicher 25 gespeichert oder als Eingangsgrößen in die Haupt-CPU verwendet werden.
  • Die Hilfsregisterdatei (AR0–AR7) 115 ist an die in 1B gezeigte Hilfsregister-Arithmetikeinheit (ARAU) 123 angeschlossen. Die ARAU 123 kann das momentane Hilfsregister in den Registern 115 während des Adressierens des Datenspeicherbereichs selbstindizieren. Es kann ein Indizieren mit entweder +/–1 oder mit dem Inhalt eines Indexregisters 143 oder AR0 ausgeführt werden. Als Ergebnis erfordert das Zugreifen auf Informationstabellen durch Zeilen oder Spalten für die Adressenmanipulation nicht die Zentral-Arithmetik-Logik-Einheit (CALU) 15, wobei diese für andere Operationen entlastet wird.
  • Das Indexregister 143 oder die acht LSBs eines Befehlsregisters IR werden über einen MUX 145 wahlweise mit einem der Eingänge der ARAU 123 verbunden. Der andere Eingang der ARAU 123 wird durch einen MUX 147 von dem momentanen Hilfsregister AR (auf das der ARP zeigt) gespeist.
  • Wie oben beschrieben ist, enthält die Zentral-Arithmetik-Logik-Einheit (CALU) 15 einen 16 Bit Vorskalierungs-Skalierungschieber 65, einen 16 × 16 Bit-Parallelmultiplizierer 27, eine 32 Bit Arithmetik-Logik-Einheit (ALU) 21, einen 32 Bit-Akkumulator (ACC) 23 und zusätzliche Schieber 169 und 181 an den Ausgängen sowohl des Akkumulators 23 als auch des Multiplizierers 27. Dieser Abschnitt beschreibt die Komponenten der CALU und ihre Funktionen.
  • Bei der Verwirklichung eines typischen ALU-Befehls finden die folgenden Schritte statt:
    • 1) Auf dem Datenbus werden Daten von dem RAM 25 abgerufen.
    • 2) Die Daten werden durch den Skalierungsschieber 65 und durch die ALU 21 geleitet, wo die Arithmetik ausgeführt wird, und
    • 3) das Ergebnis wird in den Akkumulator 23 verschoben.
  • Eine Eingangsgröße in die ALU 21 wird von dem Akkumulator 23 bereitgestellt, während die andere Eingangsgröße von dem Produktregister (PREG) 51 des Multiplizierers 27, einem Produktregisterpuffer (BPR) 185, dem Akkumulatorpuffer (ACCB) 31 oder von den Skalierungsschiebern 65 und 181, die aus dem Datenspeicher 25 oder aus dem Akkumulator 23 geladen werden, gewählt wird.
  • Vorteilhaft besitzt der Skalierungsschieber 65 einen über den MUX 73 an den Datenbus 111D angeschlossenen 16 Bit-Eingang und einen über den MUX 77 an die ALU 21 angeschlossenen 32 Bit-Ausgang. Der Skalierungsschieber-Vorskalierer 65 erzeugt an den Eingangsdaten eine durch Laden eines COUNT-Registers 199 programmierte Linksverschiebung von 0 bis 16 Bits. Die Schiebezählung wird durch eine in das Befehlswort eingebettete Konstante oder durch einen Wert in dem Register TREG1 spezifiziert. Die LSBs der Ausgangsgröße des Vorskalierers 65 werden mit Nullen gefüllt, während die MSBs in Abhängigkeit von dem in dem SXM-Bit (Vorzeichenerweiterungs-Modusbit) des Zustandsregisters ST1 programmierten Zustand entweder mit Nullen gefüllt oder vorzeichenerweitert werden können.
  • Der gleiche Schieber 65 besitzt einen weiteren Eingangspfad von dem Akkumulator 23 über den MUX 73. Bei Verwendung dieses Pfads wirkt der Schieber 65 als ein 0 bis 16 Bit-Rechtsschieber. Dies ermöglicht, den Inhalt des ACC in einem einzigen Zyklus 0 bis 16 Bits nach rechts zu schieben. Die herausgescho benen Bits gehen verloren, während die hereingeschobenen Bits in Abhängigkeit von dem Wert des SXM-Zustandsbits entweder Nullen oder Kopien des ursprünglichen Vorzeichenbits sind.
  • Die verschiedenen Schieber 65, 169 und 181 ermöglichen das numerische Skalieren, die Bitextraktion, die Arithmetik mit erweiterter Genauigkeit und die Überlaufverhinderung.
  • Die 32 Bit-ALU 21 und der Akkumulator 23 realisieren einen weiten Bereich von Arithmetik- und Logikfunktionen, wobei in der bevorzugten Ausführung die Mehrzahl von ihnen in einem einzigen Taktzyklus ausgeführt wird. Sobald in der ALU 21 eine Operation ausgeführt ist, wird das Ergebnis in den Akkumulator 23 übertragen, wo zusätzliche Operationen wie etwa das Schieben stattfinden können. Daten, die in die ALU eingegeben werden, können durch den Skalierungsschieber 181 skaliert werden.
  • Die ALU 21 ist eine Universal-Arithmetikeinheit, die aus dem Daten-RAM genommene oder aus Sofortbefehlen abgeleitete 16 Bit-Wörter bearbeitet. Zusätzlich zu den üblichen Arithmetikbefehlen kann die ALU selbst Boolesche Operationen ausführen. Wie oben erwähnt wurde, wird eine Eingangsgröße in die ALU von dem Akkumulator 23 bereitgestellt, während die andere Eingangsgröße wahlweise von dem MUX 77 gespeist wird. Der MUX 77 wählt den Akkumulatorpuffer (ACCB) 31 oder zweitens die (aus dem Daten-RAM oder aus dem ACC gelesene) Ausgangsgröße des Skalierungsschiebers 65 oder drittens die Ausgangsgröße des Produktskalierers 169. Der Produktskalierer 169 wird von einem MUX 191 gespeist. Der MUX 191 wählt für den Skalierer 169 entweder das Produktregister PREG 51 oder den Produktregisterpuffer 185.
  • Der 32 Bit-Akkumulator 23 ist für die Speicherung in dem Datenspeicher 25 über den Datenbus 111D in zwei 16 Bit-Segmente gespalten. Der Schieber 181 am Ausgang des Akkumulators erzeugt eine Linksverschiebung von 0 bis 7 Stellen. Diese Verschiebung wird ausgeführt, während die Daten für die Speicherung an den Datenbus 111D übertragen werden. Der Inhalt des Akkumulator 23 bleibt ungeändert. Wenn der Nachskalierungsschieber 181 auf das hohe Wort (die Bits 16–31) des Akkumulators 23 angewendet wird, gehen die MSBs verloren, während die LSBs mit von dem tiefen Wort (den Bits 0–15) hereingeschobenen Bits gefüllt werden. Wenn der Nachskalierungsschieber 181 auf das tiefe Wort angewendet wird, werden die LSBs mit Nullen gefüllt.
  • Für Anwendungen, die einen weiten dynamischen Bereich benötigen, werden Gleitkommaoperationen bereitgestellt. Der NORM- (Normierungs-) Befehl wird verwendet, um in dem Akkumulator 21 enthaltene Festkommazahlen durch Ausführen von Linksverschiebungen zu normieren. Die vier Bits des temporären Registers TREG1 81 definieren für die LACT/ADDT/SUBT-Befehle (Lade/Addiere zu/Subtrahiere-Befehle aus dem Akkumulator mit einer durch TREG1 spezifizierten Verschiebung) eine Variablenverschiebung durch den Skalierungsschieber 65. Diese Befehle können bei der Gleitkommaarithmetik genutzt werden, wo eine Zahl denormiert, d. h. eine Gleitkomma-Festkomma-Umsetzung ausgeführt werden muß. Sie können außerdem in Anwendungen wie etwa der Ausführung einer in ein Filter führenden automatischen Verstärkungsregelung (AGC) genutzt werden. Der BITT-Befehl (Bitprüfbefehl) stellt das Prüfen eines einzelnen Bits eines Worts im Datenspeicher auf der Grundlage des in den vier LSBs eines temporären Registers TREG2 195 enthaltenen Werts bereit.
  • Die Register TREG1 und TREG2 werden vom Datenbus 111D gespeist. Ein MUX 197 wählt Werte aus TREG1, TREG2 oder vom Programmdatenbus 101D und speist einen von ihnen in ein COUNT-Register 199. Um den Betrag der Verschiebung zu bestimmen, ist das COUNT-Register 199 an den Skalierungsschieber 65 angeschlossen.
  • Die Einzyklus-Rechtsverschiebung des Akkumulators 23 um 0 bis 16 Bits ermöglicht ein wirksames Ausrichten des Akkumulators für eine mehrfachgenaue Arithmetik. Gepaart mit den temporären 32 Bit-Puffern ACCB in dem Akkumulator und BPR in dem Produktregister verbessert dies die Effektivität der CALU in der mehrfachgenauen Arithmetik. Das Akkumulatorpuffer-Register (ACCB) schafft einen temporären Speicherraum für ein schnelles Sichern des Akkumula tors. Das ACCB kann außerdem als ein Eingang in die ALU verwendet werden. ACC und ACCB können ineinander gespeichert werden. Der Inhalt des ACCB kann von der ALU mit dem ACC vergleichen werden, wobei der größere/kleinere Wert zur Verwendung bei Mustererkennungsalgorithmen in dem ACCB (oder sowohl im ACC als auch im ACCB) gespeichert wird. Zum Beispiel kann der maximale oder minimale Wert in einer Zahlen-Zeichenkette vorteilhaft durch Vergleichen des Inhalts des ACCB und des ACC gefunden werden, wobei das Minimum oder Maximum, wenn die Bedingung erfüllt ist, in eines der beiden Register gegeben wird. Der Produktregisterpuffer (BPR) schafft einen temporären Speicherraum für ein schnelles Sichern des Produktregisters. Außerdem kann der in dem BPR gespeicherte Wert zu dem Akkumulator addiert oder von diesem subtrahiert werden, wobei die Verschiebung für den bereitgestellten Schieber 169 spezifiziert wird.
  • Die Systemsteuerung wird durch den Programmzähler 93, den Hardwarestapel 91, die PC-bezogene Hardware, das externe Rücksetzsignal RS-, die Unterbrechungen an eine Unterbrechungssteuerung 231, die Zustandsregister und die Wiederholungszähler geschaffen. Die folgenden Abschnitte beschreiben die Funktion jeder dieser Komponenten bei der Systemsteuerung und beim Pipeline-Betrieb.
  • Der Prozessor besitzt einen 16 Bit-Programmzähler (PC) 93, während ein Hardwarestapel 91 der Tiefe acht die Speicherung des PC schafft. Der Programmzähler 93 adressiert beim Abrufen von Befehlen den internen und den externen Programmspeicher 61. Der Stapel 91 wird während Unterbrechungen und Unterprogrammen verwendet.
  • Der Programmzähler 93 adressiert über den Programmadressenbus (PAB) 101A den entweder auf dem Chip oder außerhalb des Chips befindlichen Programmspeicher 61. Über den PAB wird ein Befehl im Programmspeicher 61 adressiert und für eine Decodierer-PLA 221 über den Programmdatenbus 101D in das Befehlsregister (IR) geladen. Wenn das IR geladen ist, ist der PC 93 zum Starten des nächsten Befehlsabrufzyklus bereit. Die Decodierer-PLA (programmierbare Logikanordnung des Decodierers) 221 besitzt zahlreiche Ausgänge zum Steuern der MUXs und aller Prozessorelemente zum Ausführen der Befehle in dem Prozessorbefehlssatz. Zum Beispiel speist die Decodierer-PLA 221 Befehlssignale in einen Pipeline-Controller 225, der ebenfalls verschiedene Ausgänge zum Realisieren der Pipeline-Verarbeitungsoperationen besitzt, so daß die Prozessorelemente zeitlich synchronisiert werden. Die Ausgänge des Pipeline-Controllers 225 umfassen außerdem CALL, RET (RETURN), IAQ (Unterbrechungserfassung) und IACK (Unterbrechungsquittung).
  • Der Datenspeicher 25 wird von dem Programmzähler 93 während eines BLKD-Befehls, der Datenblöcke aus einem Abschnitt des Datenspeichers in einen anderen verschiebt, adressiert. Der Inhalt des Akkumulators 23 kann in den PC 93 geladen werden, um "berechnete GOTO"-Operationen zu realisieren. Dies kann unter Verwendung des BACC- (Verzweigung zur Adresse im Akkumulator) oder CALA- (indirekter Unterprogrammaufruf) Befehls erreicht werden.
  • Um einen neuen Abrufzyklus zu starten, wird der PC 93 entweder mit PC + 1 oder (für Befehle wie etwa Verzweigungen, Aufrufe oder Unterbrechungen) mit einer Verzweigungsadresse geladen. Im Fall besonderer bedingter Verzweigungen, in denen die Verzweigung nicht genommen wird, wird der PC nach der Stelle der Sofortverzweigung nochmals inkrementiert. Zusätzlich zu den bedingten Verzweigungen besitzt der Prozessor ein vollständiges Komplement bedingter Aufrufe und Rückkehren.
  • Der Prozessor 13, 15 arbeitet mit einer Pipeline der Tiefe vier.
  • Die Peripherie-Logikeinheit (PLU) 41 nach 1B wird zum direkten Setzen, Löschen, Umschalten oder Prüfen mehrerer Bits in einem Steuer/Zustands-Register oder in irgendeinem Datenspeicherbereich verwendet. Die PLU schafft einen direkten Logikoperationspfad zu Datenspeicherwerten, ohne den Inhalt des Akkumulators oder des Produktregisters zu beeinflussen. Sie wird zum Setzen oder zum Löschen mehrerer Steuerbits in einem Register oder zum Prüfen mehrerer Bits in einem Merkerregister verwendet.
  • Die PLU 41 arbeitet in der Weise, daß sie über den Datenbus 111D einen Operanden aus dem Speicherraum abruft, während sie den zweiten über einen MUX 225 entweder aus einem langen Sofortwert auf dem Programmbus 101D oder aus dem DBMR (dynamischen Bitmanipulationsregister) 223 abruft. Zuvor wird das DBMR von dem Datenbus 111D geladen. Dann führt die PLU an den zwei Operanden ihre durch den Befehl definierte Logikoperation aus. Schließlich wird das Ergebnis über den Datenbus 111D in den gleichen Speicherbereich, aus dem der erste Operand abgerufen wurde, geschrieben.
  • Die PLU ermöglicht die direkte Manipulation von Bits in irgendeinem Bereich im Datenspeicherraum. Diese direkte Bitmanipulation erfolgt durch UND-, ODER-, XOR-Verknüpfungen oder durch das Laden eines 16 Bit langen Sofortwerts in einen Datenbereich. Um z. B. das CBCR (Zirkulärpuffer-Steuerregister) für die Verwendung von AR1 für den Zirkulärpuffer 1 und von AR2 für den Zirkulärpuffer 2 zu initialisieren, die Zirkulärpuffer aber nicht freizugeben, wird:
    SPLK 021h, CBCR Speichere langen Peripheriesofortwert ausgeführt. Um die Zirkulärpuffer 1 und 2 später freizugeben, wird:
    OPLK 088h, CBCR Setze Bit 7 und Bit 3 in CBCR ausgeführt.
  • Das Prüfen auf einzelne Bits in einem spezifischen Register oder Datenwort erfolgt dennoch über den BIT-Befehl, wobei jedoch ein Datenwort mit dem CPLK-Befehl (Vergleiche langen Peripheriesofortwert) gegenüber einem besonderen Muster geprüft werden kann. Falls der Datenwert mit dem langen Sofortwert übereinstimmt, wird das TC-Bit auf eins gesetzt. Falls das Ergebnis irgendeines PLU-Befehls null ist, wird das TC-Bit gesetzt.
  • Die Bit-Setz-, -Lösch- und -Umschaltfunktionen können ebenfalls mit einem dynamischen 16 Bit-Register-DBMR-Wert anstelle des langen Sofortwerts ausgeführt werden. Dies erfolgt mit den folgenden drei Befehlen: XPL (XOR-verknüpfe DBMR-Register zu Daten); OPL (ODER-verknüpfe DBMR-Register zu Daten); und APL (UND-verknüpfe DBMR-Register zu Daten).
  • Der Prozessor verfügt über sechzehn extern maskierbare Anwenderunterbrechungen (INT16–INT1), die für externe Vorrichtungen, die den Prozessor unterbrechen, verfügbar sind. Interne Unterbrechungen werden von dem seriellen Port (RINT und XINT), von dem Zeitgeber (TINT), von den Paritätsprüfern (PNTL und PNTH) und von dem Software-Unterbrechungsbefehl (TRAP-Befehl bzw. Nichtprogrammierter-Programmsprung-Befehl) erzeugt. Die Unterbrechungen sind priorisiert, wobei das Rücksetzen (RS-) die höchste Priorität und der INT15 die niedrigste Priorität hat.
  • Ein Unterbrechungssteuerblock 231 speist den Programmdatenbus 101D. Die Tabelle A-5 zeigt alle Vektorbereiche und Prioritäten für alle internen und externen Unterbrechungen. Der für die Software-Unterbrechungen verwendete TRAP-Befehl ist nicht priorisiert, sondern ist hier aufgenommen, da er seinen eigenen Vektorbereich besitzt. Jede Unterbrechungsadresse ist durch zwei Stellen räumlich getrennt, so daß an diesen Bereichen Verzweigungsbefehle untergebracht werden können.
  • Tabelle A-5 Unterbrechungsbereiche und Prioritäten
    Figure 00290001
  • Figure 00300001
  • In 1B ist zwischen dem Datenbus 111D und dem Programmdatenbus 101D ein Bus-Schnittstellenmodul BIM 241 angeschlossen. Auf Befehl ermöglicht das BIM 241 Datenübertragungen zwischen den Bussen 101D und 111D und erhöht die Flexibilität der Architektur des Systems entweder im Vergleich zur klassischen Harvard-Architektur oder zur Von-Neumann-Architektur.
  • Als nächstes werden erfindungsgemäße Systeme mit durch die Verbesserungen des Prozessors 13, 15 ermöglichten Verarbeitungsanordnungen und Komponentenschaltungsanordnungen diskutiert. Bei digitalen Universal-Signalverarbeitungsanwendungen führen diese Systeme vorteilhaft eine Faltung, eine Korrelation, Hilbert-Transformationen, schnelle Fourier-Transformationen, eine adaptive Filterung, eine Fenstertechnik und eine Signalformerzeugung aus. Weitere Anwendungen, die in einigen Fällen die gerade aufgelisteten allgemeinen Algorithmen umfassen, sind Sprachkommunikationssysteme, die Sprach-Vocodierung, die Spracherkennung, die Sprecherüberprüfung, die Sprachverbesserung, die Sprachsynthese und Text-Sprache-Umsetzungssysteme.
  • Das Instrumentarium gemäß der Erfindung schafft verbesserte Spektrumanalysatoren, Funktionsgeneratoren, Musteranpassungssysteme, seismische Verarbeitungssysteme, Transientenanalysesysteme, Digitalfilter und Phasenregelschleifen für Anwendungen, in denen die Erfindung geeignet verwendet werden kann.
  • Kraftfahrzeugsteuerungen und -systeme gemäß der Erfindung schaffen eine geeignete Motorsteuerung, Schwingungsanalyse, Antiblockier-Bremssteuerung, adaptive Geschwindigkeitssteuerung, Sprachbefehle und eine Kraftfahrzeug-Übersetzungssteuerung.
  • Auf dem Gebiet der Marine, des Flugwesens und des Militärs werden erfindungsgemäße Systeme geschaffen und verbessert, um gemäß der Erfindung Satelliten-Navigationssysteme, prozessorgestützte Navigationssysteme, Radarzielverfolgungssysteme, Plattform-Stabilisierungssysteme, Systeme für die Fernlenkung von Flugkörpern, Sicherheits-Kommunikationssysteme, Radarverarbeitungssysteme und weitere Verarbeitungssysteme zu schaffen.
  • Weitere Systeme gemäß der Erfindung umfassen Computerplatten-Antriebsmotor-Controller, Drucker, Plotter, Controller für optische Plattenspeicher, servomechanische Steuersysteme, Roboter-Steuersysteme, Laserdruckersteuerungen und Motorsteuerungen allgemein. Einige dieser Steuersysteme wie Robotersteuerungen, Automontagevorrichtungen und Qualitätsprüfungs-Ausrüstungen, industrielle Antriebe, numerische Controller, computergestützte Elektrowerkzeuge, Sicherheitszugangssysteme und Kraftstromnetz-Überwachungseinrichtungen sind in der Industrieumgebung anwendbar.
  • Gemäß den hier offenbarten Lehren und Prinzipien betrachtete Telekommunikationsanwendungen umfassen Echokompensatoren, ADPCM-Codeumsetzer, digitale PBXs, Leitungsverstärker, Kanalmultiplexer, Modems, lernfähige Entzerrer, DTMF-Codierer und DTMF-Decodierer, Datenverschlüsselungsvorrichtungen, Digitalfunk, Mobilfunk, Faxmaschinen, Lautsprecher-Telephone, digitale Sprachinterpolationssysteme (DSI-Systeme), Paketvermittlungssysteme, Videokonferenzsysteme und Breitspektrum-Kommunikationssysteme.
  • Auf dem Gebiet der graphischen Bilddarstellung umfassen weitere Erfindungen auf der Grundlage der hier offenbarten Prinzipien und Vorrichtungen und Systeme optische Zeichenerkennungsvorrichtungen, 3D-Rotationsvorrichtungen, Roboter-Sehsysteme, Bildübertragungs- und -komprimierungsvorrichtungen, Mustererkennungssysteme, Bildverbesserungsausrüstungen, homomorphe Verarbeitungssysteme, Workstations und Animationssysteme und digitale Abbildungssysteme.
  • Weiter betrachtete medizinische Erfindungen gemäß der vorliegenden Erfindung umfassen z. B. Hörhilfen, Patientenüberwachungsvorrichtungen, Ultraschallausrüstungen, Diagnosehilfsmittel, Automatikprothesen und Fötus-Überwachungseinrichtungen. Konsumgüter gemäß der Erfindung umfassen hochauflösende Fernsehsysteme wie etwa hochauflösende Fernsehempfänger und in Studios und Fernsehstationen verwendete Übertragungsausrüstungen. Verbrauchererfindungen umfassen weiter Musik-Synthesizer, Festkörper-Antwortmaschinen, Radar-Auswerteschaltungen, Elektrowerkzeuge sowie Spielzeuge und Spiele.
  • Es wird hervorgehoben, daß die Systemaspekte der hier betrachteten Erfindung Vorteile der verbesserten Systemarchitektur, Systemleistung, Systemzuverlässigkeit und Wirtschaftlichkeit schaffen.
  • Zum Beispiel umfaßt in 2 ein erfindungsgemäßer industrieller Prozeß und ein Schutzsteuersystem 300 gemäß der Erfindung industrielle Sensoren 301 und 303 zum Abtasten für eine besondere Industrieumgebung relevanter physikalischer Variablen. Die Signale von den Sensoren 301 und 303 werden an eine Signalprozessorvorrichtung 11 nach den 1A und 1B mit der Verbesserung der PLU (parallelen Logikeinheit) 41 nach 1B geliefert. Eine Schnittstelle 305 umfaßt die Registerbereiche A, B, C, D, E, F, G und H und (nicht gezeigte) Treiber. Die Registerbereiche sind über die Treiber und über die jeweiligen Leitungen 307 mit einer von einem Motor 311 angetriebenen industriellen Prozeßvorrichtung, mit einer von dem Relais 313 angesteuerten Vorrichtung und mit verschiedenen Ventilen einschließlich eines Magnetventils 315 verbunden.
  • In dem industriellen Prozeß und in der Schutzsteuerumgebung arbeiten verschiedene technologische und wirtschaftliche Betrachtungen im Widerspruch zueinander. Falls die Geschwindigkeit oder der Durchsatz des industriellen Prozesses hoch sein soll, wird die Verarbeitungskapazität der Vorrichtung 11 zum Interpretieren der Bedeutung der von den Sensoren 301 und 303 abgetasteten relativ schnellen, in Echtzeit auftretenden Änderungen stark belastet. Andererseits müssen die Steuerfunktionen, die zum Reagieren auf die von den Sensoren 301 und 303 abgetasteten Bedingungen der wahren Welt erforderlich sind, auch schnell ausgeführt werden. Wenn die Vorrichtung 11 in einem einzelnen Halbleiterchip hergestellt wird, löst das Hinzufügen der PLU 41 die widersprechenden Anforderungen an die Vorrichtung 11 vorteilhaft mit vernachlässigbaren zusätzlichen Kosten. Auf diese Weise werden die industrielle Verarbeitungsrate, die Geschwindigkeit der Schutzsteuerung und die Präzision der Steuerung beträchtlich verbessert.
  • In 3 enthält ein erfindungsgemäßes Kraftfahrzeug 321 ein Fahrgestell 323, an dem Räder und Achsen, ein Motor 325, eine Federung 327 und Bremsen 329 angebracht sind. Eine Kraftfahrzeugkarosserie 331 definiert einen Fahrgastraum, der relativ zu dem Fahrgestell 323 vorteilhaft mit einer Federung ausgestattet ist.
  • Eine aktive Federung 335 erweitert das Feder-Stoßdämpfer-Federungsverfahren und wird über eine Schnittstelle 341 mit Stellen für die Bits A, B, C, D, E, F, G, H, I, J, K, L, M und N gesteuert. Ein Parallelrechenprozessor 343 verwendet Recheneinheiten des in den 1A und 1B offenbarten Typs und enthält wenigstens eine an den Datenbus 351D und an den Programmdatenbus 361D angeschlossene parallele Logikeinheit 41. Zu den zahlreichen Sensoren gehören die Sensoren 371, 373 und 375, die die Funktion der Federung 335, des Motorbetriebs bzw. des Antiblockierbremsens überwachen.
  • Ein Motorsteuersystem 381 ist an mehrere Stellen der Schnittstelle 341 angeschlossen. Außerdem ist ein Antiblockier-Bremssteuersystem 383 an weitere Bits der Schnittstelle 341 angeschlossen. Zahlreiche Betrachtungen der Zuverlässigkeit, der Sicherheit, des Fahrgastkomforts und der Wirtschaftlichkeit von Kraftfahrzeugen stellen starke Anforderungen an herkömmliche Kraftfahrzeugsysteme.
  • In der Erfindung nach 3 wird das Kraftfahrzeug 321 aufgrund der äußerst flexiblen Parallelität und der Steuerungsvorteile der Erfindung auf irgendeinem oder auf allen diesen Gebieten verbessert.
  • Die in den Systemen der 2 und 3 und in weiteren hier beschriebenen Systemen verwendeten Vorrichtungen wie etwa die Vorrichtung 11 richten sich nicht nur auf Probleme einer erhöhten Leistung der Vorrichtung, sondern lösen außer dem Probleme von industriellen Systemen, die die Gesamtsystemleistung und die Kosten des Anwenders bestimmen.
  • Eine Vorrichtung 11 gemäß der zweckmäßigen Ausführung führt einen Befehl in 50 Nanosekunden aus, wobei weitere Verbesserungen der Halbleiterherstellung noch höhere Befehlsraten möglich machen. Der auf dem Chip befindliche Programmspeicher beruht auf RAM und erleichtert das Boot-Laden eines Programms aus dem preisgünstigen externen Speicher. Andere Versionen beruhen wegen einer weiteren Kostenreduzierung zweckmäßig auf ROM.
  • Ein erfindungsgemäßes digital gesteuertes Motorsystem 400 nach 4 umfaßt einen digitalen Controller 401 mit einer Vorrichtung 11 nach den 1A und 1B. Der digitale Controller 401 liefert eine Ausgangsgröße u(n) an ein Halteglied nullter Ordnung ZOH 403. Das ZOH 403 liefert in einer Systemumgebung einer industriellen Maschinerie, in Heimanwendungen, in militärischen Ausrüstungen oder in der Umgebung eines anderen Anwendungssystems eine Steuerausgangsgröße u(t) an einen Gleichstrom-Servomotor 405. In 4 ist der Anschluß des Motors 405 an ein Plattenlaufwerk 406 gezeigt.
  • Die Betriebsantwort des Servomotors 405 auf die Eingangsgröße u(t) wird als y(t) bezeichnet. Ein Sensor 407 ist ein Wandler für die Motor-Ausgangsgröße y(t) und speist einen Abtaster 409, der seinerseits eine abgetastete digitalisierte Ausgangsgröße y(t) an einen Subtrahierer 411 liefert. Der Abtaster 409 signalisiert außerdem dem digitalen Controller 401 über eine Unterbrechungsleitung INT-. Extern wird als eine weitere Eingangsgröße in den Subtrahierer 411 eine Bezugs-Eingangsgröße r(n) von einer menschlichen oder automatischen Fernsteuerung geliefert. Um die Schleife zu schließen, wird dann eine Fehlerdifferenz e(n) in den digitalen Controller 401 gespeist. Die Vorrichtung 11 stattet den Controller 401 mit einer hohen Schleifenbandbreite und mit einer mehrfachen Funktionalität für die Verarbeitung und Steuerung anderer Elemente neben den Servomotoren wie in 2 aus. Die organisationsaufwandfreie Unterbrechungskontextumschaltung in der Vorrichtung 11 erhöht zusätzlich die Bandbreite und schafft eine attraktive Alternative zur Abrufarchitektur.
  • In 5 führt ein Mehrvariablen-Zustandscontroller 421 unter Verwendung des Prozessors der Vorrichtung 11 fortgeschrittene Algorithmen aus. Der Zustandscontroller 421 empfängt eine Bezugseingangsgröße r(n) und liefert an einen Motor 423 eine Ausgangsgröße u(n). An den Zustandscontroller 421 werden mehrere elektrische Variablen (die Position x1, die Geschwindigkeit x2, der Strom x3 und das Drehmoment x4) rückgekoppelt. Irgendeine oder mehrere der vier Variablen x1–x4 werden (z. B. in einer Linearkombination) für verschiedene Betriebszwecke geeignet gesteuert. Das System kann Anwendungen mit einer geregelten Geschwindigkeit oder mit einem geregelten Drehmoment betreiben und kann Schrittmotoren und Umkehrmotoren ansteuern.
  • In 6 wird der Betrieb eines Motors 431 mit einem Abtaster 433 gefühlt und abgetastet. Ein Prozessor 435 mit einer Vorrichtung 11 wird durch einen Abtaster 433 unterbrechungsgesteuert. Wie in Verbindung mit den 1A und 1B beschrieben ist, werden die durch die Einheit 433 bestimmten Geschwindigkeitsinformationen an den Prozessor 435 verbessert rückgekoppelt. Die Software im Programmspeicher 61 nach 1A wird als ein Abschätzungsalgorithmenprozeß 437 ausgeführt. Der Prozeß 437 erzeugt Geschwindigkeits-, Positions- und Strominformationen für den Zustandscontrollerprozeß 439 des Prozessors 435. Eine digitale Ausgangsgröße u(n) wird als Ausgangsgröße von dem Zustandscontroller 439 an ein Halteglied nullter Ordnung 441 geliefert, das seinerseits den Motor 431 ansteuert.
  • Der Motor ist zweckmäßig ein Gleichstrom-Stromrichtermotor mit dem Kern, den Spulen und dem Rotor im Block 431 zugeordneten Halbleiterelektronikschaltern. Die Drehgeber, die optische und die Hall-Effekt-Rotorpositionsabtastung und die Abtastung der Gegen-EMK (gegenelektromotorischen Kraft) der Position von den Windungen sind in den Systemen der 46 untergebracht.
  • In 7 besitzt das Robotersteuerungssystem 451 einen motorgetriebenen Greifmechanismus 453 am Ende eines Roboterarms 455. Der Roboterarm 455 ist mit Drehachsen 457.1, 457.2, 457.3 und 457.4 konstruiert. An dem Arm 455 sind an den Gelenkknoten 459.1, 459.2, 459.3 und 459.4 Sensoren und hochansprechende, genau steuerbare Motoren angebracht.
  • Für eine genaue Positionierung und Verwendung des Roboterarmmechanismus 455 ist die Bereitstellung zahlreicher solcher Motoren und Sensoren wünschenswert. Die zahlreichen Sensoren und Motoren stellen jedoch widersprechende Anforderungen an das System als Ganzes und an einen Controller 461. Der Controller 461 löst diese Systemanforderungen durch Einbeziehung der Vorrichtung 11 nach den 1A und 1B und der unterbrechungsgesteuerten Architektur des Systems 451. Der Controller 461 kommuniziert mit einer E/A-Schnittstelle 463, die durch die parallele Logikeinheit 41 für den Roboterarm 455 eine Analog-Digital- und Digital-Analog-Umsetzung sowie eine Bitmanipulation schafft. Die Schnittstelle 463 empfängt Positions- und Druckantworten von den dem Roboterarm 455 und dem Greifmechanismus 453 zugeordneten Navigationsmotoren 467 und Sensoren. Außerdem liefert die Schnittstelle 463 über die Regelverstärker 465 Steuerbefehle an die jeweiligen Motoren 467 des Roboterarms 455.
  • Der Controller 461 besitzt einen Assoziativspeicher 467 mit statischem RAM (SRAM) und mit einem programmierbaren Nur-Lese-Speicher (PROM). Dem Controller 471 sind die langsameren Peripherieeinrichtungen 469 zugeordnet, wobei diese wirksam durch die seitengrenzensensitive Wartezustandsmerkmale des Controllers 461 versorgt werden. Außerdem spricht der Controller 461 auf Befehle höherer Ordnung an, die eine auf die Sicherheitssteuervorrichtung 475 ansprechende Systemmanager-CPU 473 an ihn liefert. Der Systemmanager 473 kommuniziert mit dem Controller 461 über die E/A-Einrichtung und über die RS 232-Treiber 475.
  • Das digitale Steuersystem gemäß der Erfindung macht zuvor nicht verfügbare Leistungsvorteile der Präzision, der Geschwindigkeit und der Wirtschaftlichkeit der Steuerung möglich. Um ein weiteres Beispiel zu geben, enthalten Plattenantriebe Informationsspeicherplatten, die von Spindelmotoreinheiten mit einer hohen Geschwindigkeit gedreht werden. Zusätzliche, Stellantrieb genannte Steue rungen richten die Lese- und Schreibkopfelemente relativ zu den Informationsspeicherplatten aus.
  • Die bevorzugte Ausführung kann selbst eine Einchiplösung sowohl für die Stellantriebssteuerung als auch für die Spindelmotorsteuerung sowie für die Systemverarbeitungs- und Diagnoseoperationen schaffen. Es werden anspruchsvolle Funktionen untergebracht, ohne den Controller 461 unangemessen hoch zu belasten. Um mechanische Resonanzen auszulöschen, kann in dem Controller 461 ein digitales Sperrfilter realisiert werden. Ein Zustandsschätzer kann die Geschwindigkeit und den Strom abschätzen. Ein Kalman-Filter reduziert das Sensorrauschen. Eine adaptive Steuerung kompensiert Temperaturschwankungen und mechanische Schwankungen. Die Vorrichtung 11 schafft außerdem eine auf dem Chip befindliche PWM-Pulsbreitenmodulations-Ausgangsgröße für die Geschwindigkeitssteuerung des Spindelmotors. Ähnliche Funktionen lassen sich leicht in Bandlaufwerken, Druckern, Plottern und optischen Plattensystemen unterbringen. Die erfindungsgemäßen Digitalsteuerungen schaffen eine höhere Geschwindigkeit, eine genauere Geschwindigkeitssteuerung und einen schnelleren Datenzugriff in der E/A-Technik allgemein zu vergleichbaren Kosten, wobei sie somit den Stand der Technik vorantreiben.
  • In Raketenleitsystemen schaffen die verbesserten Betriebsmöglichkeiten der Erfindung eine genauere Leitung der Raketensysteme, wobei die zum Erreichen der Einsatzziele erforderliche Anzahl der teuren Raketen reduziert wird. Abgesehen davon kann eine entsprechende Leistung mit weniger Prozessorchips erhalten werden, wodurch das Gewicht reduziert wird und zusätzliche Merkmale und Nutzlasterhöhungen ermöglicht werden können.
  • In 8 besitzt ein Satelliten-Telekommunikationssystem gemäß der Erfindung erste Stationen 501 und 503, die über einen Satellitenübertragungspfad mit einer Verzögerung von 250 Millisekunden kommunizieren. Ein Ferntelephon 505 und ein Nahtelephon 507 sind über die Gabeln 509 und 511 jeweils mit Erdstationen 501 und 503 verbunden. Die Gabeln 509 und 511 werden im Verhältnis zu den jeweiligen Erdstationen 501 und 503 um acht Millisekunden verzögert. Um ausreichende Telekommunikationen zwischen dem Ferntelephon 505 und dem Nahtelephon 507 zu schaffen, ist dementsprechend eine Echokompensation erforderlich. Darüber hinaus ist die Fähigkeit des gleichzeitigen Bedienens zahlreicher Telephongesprächsschaltungen erforderlich. Dies stellt eine äußerste Verarbeitungsbelastung für die Telekommunikationsanlage dar.
  • Um die Übertragung der Kommunikationsschaltung zu verbessern, ist in 9 jeder Gabel wie etwa 511 ein Echokompensator 515 der bevorzugten Ausführung zugeordnet. Die Vorrichtung 11 führt nicht nur Echokompensationsalgorithmen mit einer hohen Geschwindigkeit aus, sondern bedient auch wirtschaftlich mehrere Satellitenkommunikationsschaltungen pro Chip.
  • Eine weitere Systemausführung ist ein verbessertes Modem. In 10 enthält ein Prozeßdiagramm der Operationen in der als ein Modemsender programmierten Vorrichtung 11 einen Schritt 525 des Verwürfelns, auf den ein Schritt 527 des Codierens folgt, der für die Interpolationsverfahren 529 bzw. 531 Quadratur-Digitalsignale I[nTb] und Q[nTb] schafft. Die Digitalmodulator-Berechnungen 533 und 535 multiplizieren die interpolierten Quadratursignale mit vorgespeicherten Konstanten aus dem Nur-Lese-Speicher (ROM), die trigonometrische Kosinusbzw. Sinuswerte bereitstellen. Die modulierten Signale werden dann in einem Summationsschritt 537 summiert. Ein an die Vorrichtung 11 angeschlossener D/A-Umsetzer setzt die modulierten Signale in einem Schritt 539 aus der digitalen in die analoge Form um. Dann wird in der Modemübertragung die Verstärkungsregelung durch einen Faktor G1 ausgeführt und an eine DAA gesendet.
  • In 11 empfängt ein Modemempfänger unter Verwendung einer weiteren Vorrichtung 11 analoge Kommunikationssignale von der DAA. Ein Analog-Digital-Umsetzer A/D 521 digitalisiert die Informationen unter Verwendung der Vorrichtung 11 für einen digitalen Signalprozessor. Hohe Geschwindigkeiten oder die Digitalumsetzung stellen eine starke Belastung für die Eingangsverarbeitung früherer Prozessoren dar. Zweckmäßig schafft der DSP 11 eine organisationsaufwandfreie Unterbrechungskontextumschaltung für eine äußerst effiziente Bedienung der Unterbrechungen von den Digitalisierelementen wie etwa von dem A/D 521 und besitzt gleichzeitig eine leistungsfähige digitale Signalverarbeitungs-Recheneinrichtung für die Ausführung der Modemalgorithmen. Die Ausgangsgröße der Vorrichtung 11 wird an einen universellen synchronen/asynchronen Empfänger/Sender (USART) 523 geliefert, der eine Ausgangsgröße D[nT] liefert.
  • In 12 umfaßt ein Prozeßdiagramm des Modemempfangs durch das System nach 11 eine automatische Verstärkungsregelung mit einem Faktor G2 beim Empfang von der DAA, die ein Signal s(t) für die Analog-Digital-Umsetzung mit einer Abtastrate fs liefert. Das digitalisierte Signal ist s[nTs], wobei es für die digitale Verarbeitung mit durch digitale Filterstufen BPF1 und BPF2 realisierten ersten und zweiten Bandpaßfiltern bereitgestellt wird, worauf die anwenderbezogene automatische Verstärkungsregelung folgt. Ein Demodulationsalgorithmus erzeugt zwei demodulierte Signale I'[nTs] und Q'[nTs]. Diese zwei für die Trägerrückgewinnung verwendeten Signale I' und Q' werden an den Demodulationsalgorithmus rückgekoppelt. Außerdem werden I' und Q' an einen Entscheidungsalgorithmus geliefert und als Antwort auf die Taktrückgewinnung betrieben. Auf den Entscheidungsalgorithmus folgt ein Decodierprozeß 551. Auf das Decodieren 551 folgt ein Entwürfelungs-Algorithmus 555, der eine intensive Bitmanipulation durch die PLU 41 zum Rückgewinnen des Eingangssignals d[nT] umfaßt.
  • Wie in 12 gezeigt ist, werden die zahlreichen Schritte des Modemempfangsalgorithmus aufgrund der von der PLU 41 geschaffenen intensiven numerischen Rechenfähigkeiten und der Bitmanipulation vorteilhaft mit einer einzigen digitalen Signalprozessorvorrichtung 11 erreicht.
  • In 13 arbeitet die Computervorrichtung 561, die die Vorrichtung 11 enthält, über eine Schnittstelle 565 mit einem Host-Computer 563 zusammen. Der externe Speicher 567 mit einer hohen Kapazität ist mit einer Schnittstelle 569 an den Computer 561 angeschlossen. Vorteilhaft unterstützt der Computer 561 über die Peripherie-Zwischenspeicher 571 und 573 eine Zweiweg-Pulscodemodulations-Kommunikation (Zweiweg-PCM-Kommunikation). Der Zwischenspeicher 571 ist an einen Seriell-Parallel-Umsetzer 575 für den Empfang der PCM-Kom munikationen von der externen Vorrichtung 577 gekoppelt. Der Computer 561 kommuniziert über den Zwischenspeicher 573 und über eine Parallel-Seriell-Einheit 579, um einen seriellen PCM-Datenstrom an die externe Vorrichtung 577 zu liefern.
  • In 14 enthält ein Videobild-Darstellungssystem 601 eine Vorrichtung 11, die durch den ROM 603 und durch den RAM 605 unterstützt wird. Die Datenerfassungssensoren 607.1 bis 607.n speisen Eingangsgrößen in einen Umsetzer 609, der dann umfangreiche digitale Daten an die Vorrichtung 11 liefert. In der 14 sind die ALU 21, der Akkumulator 23, die Multiplizierermatrix 53, das Produktregister 51 hervorgehoben und ist eine Adressierungseinheit mit der ARAU 123 gezeigt. Ein Steuerelement 615 stellt allgemein die Decodierer-PLA 221 und den Pipeline-Controller 225 aus 1A dar. Auf dem Chip befindliche (nicht gezeigte) E/A-Peripheriegeräte kommunizieren mit einem Bus 617, der ein Ausgangssignal mit einer außergewöhnlich hohen Qualität an eine Videoanzeigeeinheit 619 liefert. Außerdem wird für die Vorrichtung 11 eine Überwachungseingangs- und -ausgangs-E/A-Einrichtung 621 bereitgestellt.
  • Infolge der fortgeschrittenen Adressierungsfähigkeiten in der Vorrichtung 11 kann die Steuerung 615 auf Befehl in der Weise betrieben werden, daß das Produkt aus dem Produktregister 51 direkt in die Adressierungsschaltung 123 übertragen und irgendwelche Speicherbereiche während der Übertragung umgangen werden. Um die Speicherumgehungsübertragungen dazwischen über den Datenbus 111D unabhängig von den Pfeilrichtungen zu den Registern in diesen Figuren auszuführen, wird wegen der Speicherabbildung vorteilhaft auf irgendein Paar der Computer-Kern-Register der 1A und 1B zugegriffen. Da die Multiplikationsfähigkeiten der Vorrichtung 11 bei der Adressierungsfunktion verwendet werden, stellt die Schaltungsanordnung eine Matrix in dem elektronischen Speicher 605 dar, wobei die Matrix Einträge besitzt, auf die in dem Speicher mit einer Dimensionalität von wenigstens drei zugegriffen werden kann. Die Videoanzeige 619 zeigt die aus der Verarbeitung der mehrdimensionalen Matrix durch die Vorrichtung 11 resultierende Ausgangsgröße an. Natürlich ist selbstverständlich, daß der Speicher 605 an und für sich nicht notwendig mehrdimensional ist, sondern daß die Adressierung mit der Vorrichtung 11 schnell ausgeführt wird, so daß auf die Informationen bei Bedarf so zugegriffen werden kann, als könnte auf sie durch Variablen, die jeweils die mehreren Matrixdimensionen darstellen, direkt zugegriffen werden. Zum Beispiel kann eine dreidimensionale kubische Matrix mit den Adressendimensionen A1, A2 und A3 geeignet gemäß der Gleichung N2 × A3 + N × A2 + A1 adressiert werden. In einer zweidimensionalen Matrix ist eine einfache wiederholte Addition gemäß einer Indexzählung vom Register 199 aus 1A für Adressierungszwecke ausreichend. Um jedoch die dritte und höhere Dimensionen zu versorgen, wird der Prozeß durch Einführen der Produktfähigkeiten des Multiplizierers 53 beträchtlich beschleunigt.
  • Die 15 bzw. 16 zeigen funktionsorientierte und Hardwareblock-orientierte Diagramme von Videoverarbeitungssystemen gemäß der Erfindung. Anwendungen für diese erfindungsgemäßen Systeme schaffen neue Workstations, Computerschnittstellen, Fernseherzeugnisse und hochauflösende Fernsehprodukte (HDTV-Produkte).
  • In 15 schafft ein Host-Computer 631 einen Dateneingang in die numerische Verarbeitung durch die Vorrichtung 11. Auf die Videopixel-Verarbeitungsoperationen 633 folgen die Speichersteueroperationen 635. Die CRT-Steuerfunktionen 637 für die Videoanzeige werden mit der numerischen Verarbeitung 639, mit der Pixelverarbeitung 633 und mit der Speichersteuerung 635 koordiniert. Die Ausgangsgröße von den Operationen der Speichersteuerung 635 wird an den Bildpufferspeicher 641 und dann an ein Schieberegister 643 geliefert. Der Bildpufferspeicher und das Schieberegister 641 und 643 werden geeignet durch eine Vorrichtung TMS 4161 von Texas Instruments realisiert. Ein weiteres Schieberegister 645 liefert Videoinformationen von dem Schieberegister 643 an eine Farbpalette 647. Die Farbpalette 647 steuert eine durch die CRT-Steuerung 637 gesteuerte Anzeige 649 an. Die Farbpalette 647 ist zweckmäßig ein TMS 34070.
  • In 16 liefert der Host 631 Signale an eine erste, als ein DSP-Mikroprozessor 653 arbeitende Vorrichtung 11. Der DSP 653 wird durch den Speicher 651 unterstützt, der PROM-, EPROM- und statischen SRAM-Speicher umfaßt. Die Steuerungs-, Adressen- und Dateninformationen werden durch Zweiweg-Kommunikationspfade zwischen dem DSP 653 und einer zweiten Vorrichtung 11, die als ein GSP (Graphiksignalprozessor) 655 arbeitet, geliefert. Der GSP 655 steuert sowohl die Farbpalette 647 als auch die Anzeigeschnittstelle 657 an. Die Schnittstelle 657 wird weiter von der Farbpalette 647 angesteuert. Die Anzeige-CRT 659 wird von einer Anzeigeschnittstelle 657 angesteuert. Es ist selbstverständlich, daß die Vorrichtungen 11 und das System nach 16 im allgemeinen bei einer entsprechenden, für die geforderten Funktionen geeigneten Taktrate betrieben werden. Um für besondere Anwendungen benötigte Verarbeitungsgeschwindigkeiten zu unterstützen, wird die Vorrichtung 11 in Mikrometerniveau- und Submikrometerniveau-Ausführungen hergestellt. Es wird davon ausgegangen, daß die Anforderungen hochauflösender Fernsehgeräte an eine erhöhte Verarbeitungsleistung nicht nur durch die Verwendung höherer Taktraten, sondern auch durch Konstruktionsverbesserungen der hier offenbarten Schaltungsanordnung erfüllt werden.
  • In 17 besitzt ein automatisches Spracherkennungssystem gemäß der Erfindung ein Mikrophon 701, dessen Ausgangsgröße von einer Abtast-Halte-Schaltung (S/H-Schaltung) 703 abgetastet und dann mit einer A/D-Schaltung 705 digital umgesetzt wird. Ein unterbrechungsgesteuerter schneller Fourier-Transformationsprozessor 707 setzt die abgetastete Zeitbereichs-Eingangsgröße von dem Mikrophon 701 unter Verwendung der Vorrichtung 11 in eine für ein Frequenzspektrum des Schalls repräsentative digitale Ausgangsgröße um. Wie zuvor diskutiert wurde, ist dieser Prozessor 707 teilweise infolge des organisationsaufwandfreien Unterbrechungskontextumschaltungs-Merkmals, teilweise infolge der bedingten Befehle und der in den Speicheradressenraum abgebildeten Hilfsadressenregister sehr effizient.
  • Der Prozessor 707 stellt jedes Spektrum für einen Spracherkennungs-DSP 709 bereit, die eine weitere Vorrichtung 11 enthält. Der Erkennungs-DSP 709 führt irgendeinen jetzt geeignet bekannten oder später entwickelten Spracherkennungs algorithmus aus. Zum Beispiel werden in einem Schablonenanpassungsalgorithmus zahlreiche Berechnungen mit Multiplikationen, Additionen und Maximum- oder Minimumbestimmungen ausgeführt. Aufgrund ihrer seriellen Maximum/Minimum-Funktionsarchitektur ist die Vorrichtung 11 für die rasche Ausführung solcher Algorithmen ideal geeignet. Der Erkennungs-DSP 709 liefert eine Ausgangsgröße an einen Systembus 711. Der ROM 713 und der RAM 715 unterstützen das System wirksam wegen der von dem Erkennungs-DSP 709 bereitgestellten Software-Wartezustände an den Seitengrenzen. Die Ausgangsgröße von einem auf den Spracherkennungs-DSP 709 ansprechenden Sprachsynthesizer 717 wird an einen Lautsprecher oder an einen anderen geeigneten Wandler 719 geliefert.
  • Die System-E/A-Einrichtung 721 lädt auf Dokumentherstellungsvorrichtungen 723 wie etwa auf Drucker, Bänder, Festplatten und dergleichen herunter. Eine Video-Katodenstrahlröhren-Anzeige (Video-CRT-Anzeige) 725 wird, wie in Verbindung mit den 15 und 16 beschrieben ist, von dem Bus 711 gespeist. Wie in den 15 und 16 beschrieben ist, stellt eine Tastatur 727 eine gelegentliche menschliche Kontrolleingabe an den Bus 711 bereit. In industriellen und anderen Prozeßsteuerungsanwendungen der Spracherkennung ist eine Steuerschnittstelle 729 mit einer weiteren Vorrichtung 11 an den Bus 711 angeschlossen und liefert in Übereinstimmung mit der Bitmanipulation und mit den obigen Prinzipien und der obigen Beschreibung der 2, 3, 4, 5, 6 und 7 ihrerseits Ausgangsgrößen für Motoren, Ventile und andere Servomechanismus-Elemente 731.
  • In Digitalfilter-Hörhilfen auf der Grundlage der Spracherkennung wird die umgewandelte Sprache von dem Erkennungs-DSP 709 mit einem D/A-Umsetzer 735 aus der digitalen in die analoge Form umgesetzt und durch einen Lautsprecher 737 ausgegeben. Die gleiche Kette der Blöcke 701, 703, 705, 707, 709, 735, 737 kann auch in Telekommunikationen für die Entzerrung, Filterung und Bandbreitenkompression auf der Grundlage der Spracherkennung angewendet werden.
  • In fortgeschrittenen Spracherkennungssystemen führt ein lexikalischer Zugriffsprozessor 739 an aus der Ausgangsgröße der Spracherkennung DSP 709 abgeleiteten Darstellungen phonetischer Elemente symbolische Manipulationen aus und formuliert gemäß irgendeinem geeigneten lexikalischen Zugriffsalgorithmus Silben, Wörter und Sätze.
  • Ein Top-Down-Prozessor 741 führt einen Top-Down-Verarbeitungsalgorithmus auf der Grundlage des Prinzips, daß in einigen Fällen eine Auflösung der Mehrdeutigkeiten in der Sprache über die in der akustischen Eingangsgröße enthaltenen Informationen hinausgeht, aus. Dementsprechend werden nichtakustische Sensoren wie etwa ein optischer Sensor 743 und ein Drucksensor 745 in ein Eingabesystem 747 gespeist, das dann den Mustererkennungsgenerator 749 unterbrechungssteuert. Der Prozessor 749 speist direkt den Systembus 711 und greift außerdem für eine verbesserte Spracherkennung, für eine verbesserte Mustererkennung und für Anwendungen der künstlichen Intelligenz auf den Top-Down-Prozessor 741 zu.
  • Die Vorrichtung 11 verbessert wesentlich die Fähigkeiten der Verarbeitung der Spracherkennungsvorrichtung nach 17 auf jeder Ebene, z. B. der Blöcke 707, 709, 717, 721, 725, 729, 739, 741, 747 und 749.
  • 18 zeigt ein Vocoder-Modemsystem mit einer Verschlüsselung für sichere Kommunikationen. Ein Telephon 771 kommuniziert in einem sicheren Modus über eine Telephonleitung 773. An das Telephon 771 ist ein DSP-Mikrocomputer 773 angeschlossen, um serielle Daten an einen Block 775 zu liefern. Der Block 775 führt in einem Abschnitt 777 Digitalisierungs-Vocoder-Funktionen und im Block 781 die Verschlüsselungsverarbeitung aus. Die Modemalgorithmenverarbeitung in den Blöcken 779 und 783 ist oben in Verbindung mit den 10 und 12 beschrieben. Der Block 783 liefert serielle Daten an die A/D-D/A-Einheit 785 und empfängt serielle Daten von ihr. Die Einheit 785 schafft eine analoge Kommunikation zur DAA 787. Die wesentlich verbesserten Verarbeitungsmerkmale der Vorrichtung 11 nach den 1A und 1B machen eine Reduzierung der Anzahl der im Block 775 erforderlichen Chips möglich, so daß in Vorrichtungen gemäß 18 eine Kostenreduzierung ermöglicht wird. In einigen Ausführungen werden durch die bemerkenswerte Verarbeitungsleistung der Vorrichtung 11 leicht fortgeschrittenere Verschlüsselungsverfahren ausgeführt. Dementsprechend wird die Vorrichtung 11 in 18 entweder zum Verbessern der Funktionalität jedes Funktionsblocks oder zur Schaffung einer vergleichbaren Funktionalität mit weniger Chips und somit mit geringeren Gesamtproduktkosten verwendet.
  • In der Anwenderdokumentation des TMS 320C1x und in der Anwenderdokumentation des TMS 320C2x und in der Anwenderdokumentation des TMS 320 der dritten Generation, die hier alle durch Literaturhinweis eingefügt sind, sind drei Texas Instruments-DSPs beschrieben. Außerdem sind hier die gleichzeitig auf den Anmelder übertragenen US-Patente 4.577.282 und 4.713.748 durch Literaturhinweis eingefügt.
  • 19 zeigt die Operationen der parallelen Logikeinheit 41 nach 1B. Die parallele Logikeinheit (PLU) ermöglicht, daß die CPU logische Operationen direkt auf in dem Speicher gespeicherten Werten ausführt, ohne irgendeines der Register wie etwa den Akkumulator in der Berechnungseinheit 15 zu beeinflussen. Die logischen Operationen umfassen das Setzen, das Löschen oder das Umschalten irgendeiner Anzahl von Bits in einem einzigen Befehl. In der bevorzugten Ausführung führt die PLU einen Lese-Modifiziere-Schreib-Befehl in zwei Befehlszyklen aus. Genauer greift die PLU 41 auf einen Speicherbereich im entweder auf dem Chip oder außerhalb des Chips befindlichen RAM 25 zu, führt in ihm eine Bitmanipulationsoperation aus und gibt dann das Ergebnis an den Bereich im RAM, aus dem die Daten erhalten wurden, zurück. Der Akkumulator wird in allen diesen Operationen nicht beeinflußt. Das Produktregister wird nicht beeinflußt. Der Akkumulatorpuffer und der Produktregisterpuffer ACCB und BPR werden nicht beeinflußt. Dementsprechend werden durch die Schaffung dieser wichtigen parallelen Logikeinheit PLU 41 zeitaufwendige Operationen, die die Berechnungseinheit 15 wesentlich verlangsamen würden, vermieden. Baulich ist die PLU von ihren Eingängen zu ihren Ausgängen eine Geradeauslogik, die durch die Decodierer-PLA 221 gesteuert wird, der zum Ausführen der unten gezeigten Befehle besondere Gatter in der Logik der PLU 41 freigibt und sperrt.
    APL,K Und-verknüpfe das DBMR oder eine Konstante mit dem Datenspeicherwert
    CPL,K Vergleiche DBMR oder eine Konstante mit dem Datenspeicherwert
    OPL,K Oder-verknüpfe DBMR oder eine Konstante mit dem Datenspeicherwert
    SPLK,K Speichere eine lange Sofortgröße in dem Datenspeicherbereich
    XPL,K XOR-verknüpfe DBMR oder eine Konstante mit dem Datenspeicherwert
  • Die Bitmanipulation umfaßt die Operationen des: 1) Setzens eines Bits; 2) Löschens eines Bits; 3) Umschaltens eines Bits; und 4) Prüfens eines Bits und des dementsprechenden Verzweigens. Außerdem unterstützt die PLU diese Bitmanipulationsoperationen, ohne den Inhalt irgendeines der CPU-Register oder der Zustandsbits zu beeinflussen. Außerdem führt die PLU Logikoperationen an Datenspeicherbereichen mit langen Sofortwerten aus.
  • 19, Teil A zeigt einen Speicherbereich mit einer beliebigen Anzahl von Bits X. In Teil B ermöglicht der SPLK-Befehl, irgendeine Anzahl von Bits in einem Speicherwort in irgendeinen Speicherbereich zu schreiben. In Teil C ermöglicht der OPL-Befehl, irgendeine Anzahl von Bits in einem Speicherwort auf Eins zu setzen, ohne die anderen Bits in dem Wort zu beeinflussen. In Teil D ermöglicht der APL-Befehl, irgendeine Anzahl von Bits in einem Speicherwort zu löschen oder auf Null zu setzen, ohne die anderen Bits in dem Wort zu beeinflussen. In Teil E ermöglicht der XPL-Befehl, irgendeine Anzahl von Bits in einem Speicherwort umzuschalten, ohne die anderen Bits in dem Wort zu beeinflussen. In Teil F vergleicht der CPL-Befehl ein gegebenes Wort (z. B. ein 16 Bit-Wort) mit dem Inhalt eines adressierten Speicherbereichs, ohne den adressierten Speicherbereich zu modifizieren. Die Vergleichsfunktion kann außerdem als ein nicht zerstörendes Exklusiv-ODER (XOR) für einen Vergleich in einem besonderen Spei cherbereich angesehen werden. Falls der Vergleich angibt, daß das gegebene Wort gleich dem adressierten Speicherwort ist, wird ein TC-Bit auf eins gesetzt. Das TC-Bit ist das Bit 11 des ST1-Registers in den Registern 85 aus 1B. Durch den BIT- und den BITT-Befehl wird eine Prüfung eines einzelnen Bits ausgeführt.
  • Konstruktiv bedeutet das Vorhandensein der PLU-Befehle, daß die Decodierer-PLA 221 aus 1A und die Logik der PLU 41 eine spezifische Schaltungsanordnung beinhalten. Wenn die verschiedenen PLU-Befehle in das Befehlsregister (IR) geladen werden, werden sie von der Decodierer-PLA 221 in Signale zum Freigeben und zum Sperren von Gattern in der Logik der PLU 41 so decodiert, daß die von den Befehlen angewiesenen Operationen tatsächlich ausgeführt werden.
  • Um die dynamische Anordnung von Bitmustern zu unterstützen, führen die Befehle grundlegende Bitoperationen auf einem Speicherwort mit Bezug auf den Registerwert in dem dynamischen Bitmanipulationsregister DBMR 223 anstelle der Verwendung eines langen Sofortwerts aus. Das DBMR ist auf den Speicher abgebildet, was konstruktiv bedeutet, daß eine Decodier-Schaltungsanordnung 121 vorhanden ist (1B), die das Adressieren des DBMR 223 von dem Datenadressenbus 111A ermöglicht. Um anzugeben, daß der Befehl auf einen langen Sofortwert anstelle des DMBR wirkt, wird an den Befehl (z. B. APLK) ein Suffix K angehängt. Die Abwesenheit des Suffix (z. B. APL) gibt an, daß der Befehl auf das DBMR wirkt. Die Auswahl des DBMR wird durch den MUX 225 aus 1B bewirkt, dessen Auswahl-Eingang von der Decodierer-PLA 221 gesteuert wird, wobei der Zeitablauf der Pipeline von dem Pipeline-Controller 225 gesteuert wird.
  • Ein langer Sofortwert ist ein Wert, der als Teil eines Befehls von dem Programmdatenbus kommt. "Sofortwert" bedeutet, daß der Wert von dem Programmdatenbus kommt. "Langer Sofortwert" bedeutet, daß ein Wert mit der vollen Breite eines Worts geliefert wird.
  • Ein langer Sofortwert wird häufig aus dem Nur-Lese-Speicher (ROM) erhalten und kann somit nicht geändert werden. Wenn aber erwünscht ist, daß die logische Operation in einer Befehlsfolge geändert werden kann, wird für diesen Zweck das dynamische Bitmanipulations-Bitregister bereitgestellt.
  • Die PLU 41 ermöglicht eine parallele Bitmanipulation in irgendeinem Bereich im Datenspeicherraum. Dies gestattet eine sehr hocheffiziente Bitmanipulation, die an die intensiven Bitmanipulationsanforderungen des Steuerfelds angepaßt ist. Neben weiteren Anwendungen kann die Bitmanipulation der Erfindung leicht auf die Kraftfahrzeugsteuerung wie etwa auf die Motorsteuerung, auf die Federungssteuerung, auf die Antiblockier-Bremsung und auf die Prozeßsteuerung angewendet werden. Die Bitmanipulationen können ein Relais ein- und ausschalten, indem ein Bit ein oder aus gesetzt wird, sie können einen Motor einschalten, einen Motor beschleunigen, Magnetspulen schließen und ein Signal verstärken, indem sie eine Verstärkungsstufe zu einem Motor in einer Servoschaltung durchschreiten. Komplizierte, für fortgeschrittene Mikrosteuerungsanwendungen erforderliche arithmetische Operationen werden in der Vorrichtung 11 ausgeführt, ohne mit Bitmanipulationsoperationen in Konkurrenz zu stehen.
  • Weitere Anwendungen der Bitmanipulation umfassen das Verwürfeln in Modems. Falls bestimmte Bitmuster in dem Modem häufig genug keine Frequenzoder Phasenänderungen liefern, ist es in Phasenregelschleifen und Modemempfängern schwer oder unmöglich, einen Träger zu behalten. Um zu erzwingen, daß sich die Bits häufig genug ändern, werden die Bitmuster verwürfelt. Auf diese Weise werden der Baud-Takt und die Trägerfrequenz-Phasenregelschleife in dem Modem in der Weise konfiguriert, daß sich in jedem Digitalfilter ausreichend Energie, aber keine überschüssige Energie befindet. Das Verwürfeln umfaßt XOR-Operationen an einem seriellen Bitstrom. Die PLU 41 führt diese Operation äußerst effizient aus. Da die anderen CPU-Register der Vorrichtung 11 von den PLU-Operationen nicht betroffen sind, brauchen diese Register, wenn die PLU mit dem Ausführen ihrer Befehle beginnt, nicht gesichert zu werden. Im Fall der Verwürfelungsoperation sind die in Datenmustern XOR-verknüpften Bits eine Funktion anderer Bits, so daß die tatsächliche Ausführung der in irgendeiner gegebenen Baud-Periode erforderlichen XORs mehr als eine Operation dauert. Bei der parallelen Logikeinheit können diese Operationen gleichzeitig mit den Rechenoperationen ausgeführt werden, ohne daß die Register-Betriebsmittel genutzt werden müßten.
  • Wie somit beschrieben wurde, wirkt die PLU zusammen mit dem Befehlsdecodierer 221 als ein Beispiel einer Logikschaltung, die für das Empfangen der Befehle an den Programmbus angeschlossen ist und die für das Ausführen der Logikoperationen in Übereinstimmung mit wenigstens einem Befehl an den Datenbus angeschlossen ist. Die Logikoperationen beeinflussen wenigstens einen der von der elektronischen Berechnungseinheit unabhängigen Datenspeicherbereiche, ohne den Akkumulator zu beeinflussen. In einigen Befehlen umfassen die Logikoperationen eine Operation des Setzens, Löschens oder Umschaltens eines besonderen Bits auf Eins in einem Datenwort an einem ausgewählten Datenspeicherbereich, ohne die anderen Bits in dem Datenwort an dem ausgewählten Datenspeicherbereich zu beeinflussen.
  • Mit dem DBMR 223 wird eine weitere Verbesserung der Logikschaltung geschaffen, so daß die PLU 41 einen ersten, für das Empfangen von Daten von dem Datenbus angeschlossenen Eingang, einen Ausgang für das Senden von Daten an den Datenbus und einen zweiten Eingang, der wahlweise für das Empfangen eines Wort entweder von dem Datenbus oder von dem Programmbus betrieben werden kann, besitzt. Der Multiplexer 225 wirkt als ein wahlweise betreibbares Element. Zum Beispiel kann in dem DBMR der Inhalt irgendeines adressierbaren Registers oder Speicherbereichs gespeichert werden. Wenn der MUX 275 das DBMR auswählt, sendet die PLU an den Datenbus 111D den Inhalt eines durch eine Logikoperation auf der Grundlage des DBMR wie etwa durch Setzen, Löschen oder Umschalten modifizierten Worts von dem Datenbus 111D. Wenn der MUX 225 den Programmdatenbus 101D wählt, wird eine lange Sofortkonstante, auf der die Logikoperation beruhen soll, gewählt.
  • Es wird nun zu dem Gegenstand des Unterbrechungsmanagements und der Kontextumschaltung übergegangen. 20 zeigt ein System mit einer DSP-Vorrichtung 11 mit vier Schnittstellen 801, 803, 805 und 807. Ein Analogsignal von einem Sensor oder von einem Wandler wird von einem A/D-Umsetzer 809 in die digitale Form umgesetzt und über die Schnittstelle 801 an den DSP 11 geliefert. Wenn jede Umsetzung abgeschlossen ist, wird ein Unterbrechungssignal INT1-von dem Analog-Digital-Umsetzer 809 an den DSP 11 geliefert. Der DSP 11 wird über die Schnittstelle 803 von dem internen SRAM 811, von dem ROM und dem EPROM 813 und von dem externen Speicher 815 unterstützt. Die Ausgangsgröße des DSPs 11 wird für Ausgabe- und Steuerzwecke über die Schnittstelle 807 an einen Digital-Analog-Umsetzer 817 geliefert. An einen Unterbrechungseingang INT2- des DSP 11 ist ein optionaler Host-Computer 819 angeschlossen, wobei dieser über die Schnittstelle 805 Daten kommuniziert. Andere unterbrechungsbasierte Systeme sind in den 4, 6, 11, 14 und 17 gezeigt.
  • Es werden nun Operationen der Vorrichtung 11 bei einer Unterbrechung oder bei einer anderen Kontextänderung diskutiert. Mit Bezug auf die 1A und 1B wird angemerkt, daß mehrere Register mit einem Rechteck im Hintergrund gezeichnet sind. Es sind dies die Register TREG2 195, TREG1 81, TREGO 49, BPR 185, PREG 51, ACC 23, ACCB 31, INDX 143, ARCR 159, ST0, ST1 und PMST. Diesen Registern sind hier Gegenregister genannte Register zugeordnet. Jedesmal, wenn eine Unterbrechung oder eine andere Kontextänderung stattfindet, werden alle obenerwähnten Register automatisch auf einen Stapel der Tiefe eins geschoben. Bei einer Rückkehr von der Unterbrechung oder bei einer Rückkehr von der Kontextänderung werden die gleichen Register durch Abheben des Stapels der Tiefe eins automatisch wiederhergestellt.
  • Vorteilhaft werden die Unterbrechungsdienstroutinen bei der Kontextsicherung oder Kontextumschaltung ohne zeitlichen Organisationsaufwand behandelt. Die auf diese Weise gesicherten Register werden als "strategische Register" bezeichnet. Dies sind die Register, die in einer Unterbrechungs-Dienstroutine und bevorzugt vor der Verwendung irgendeines anderen Registers an ihrer Stelle verwendet würden.
  • Falls zum Schutz der zahlreichen strategischen Register eine registerweise Kontextsicherung in den Speicher ausgeführt würde, würden viele Befehlszyklen verbraucht. Weiterhin hängt die relative Frequenz, mit der diese Kontextsicherungsoperationen stattfinden, von der Anwendung ab. In einigen Anwendungen mit Abtastraten von 100 KHz in 20 ist die Frequenz der Unterbrechungen sehr hoch, wobei die Zyklen des Unterbrechungskontextsicherungs-Organisationsaufwands ohne die organisationsaufwandlose Verbesserung wesentlich sein könnten. Durch die Schaffung des organisationsaufwandlosen Kontextumschaltungsmerkmals der bevorzugten Ausführung kann die Unterbrechungs-Dienstroutinen-Zykluszählung bei Erhalten der gleichen Funktionalität auf weniger als die Hälfte reduziert werden. Vorteilhaft werden in Mehrkanalanwendungen eines DSPs oder zum Verarbeiten eines einzelnen Kanals mit einer sehr hohen Abtastrate wie etwa 50 KHz oder mehr größenordnungsmäßig mehr als 100.000 Abtastungen pro Sekunde ausgeführt. Das eben Gesagte gilt auch für Unterprogrammaufrufe, Funktionsaufrufe und andere Kontextumschaltungen.
  • Wenn eine Unterbrechung stattfindet, werden die Zustandsregister automatisch auf den Stapel der Tiefe eins geschoben. Zur Unterstützung dieses Merkmals gibt es einen zusätzlichen Befehl, Rückkehr von der Unterbrechung (RETI), der die Stapel automatisch abhebt, um den Zustand der Hauptroutine wiederherzustellen. Außerdem besitzt die bevorzugte Ausführung einen zusätzlichen Rückkehrbefehl (RETE), der automatisch ein globales Unterbrechungsfreigabebit setzt, das somit Unterbrechungen während des Abhebens des Zustandsstapels ermöglicht. Ein als verzögerte Rückkehr mit Freigabe (RETED) konstruierter Befehl schützt die drei der Rückkehr folgenden Befehle davor, selbst unterbrochen zu werden.
  • Die bevorzugte Ausführung besitzt ein in den Speicherraum abgebildetes Unterbrechungsmerkerregister (IFR-Register). Der Anwender kann das IFR durch einen Softwareabruf lesen, um aktive Unterbrechungen zu bestimmen, wobei er Unterbrechungen durch Schreiben in das IFR löschen kann.
  • Als nächstes werden einige Anwendungen angemerkt, in denen die organisationsaufwandfreie Kontextumschaltung für besonders vorteilhaft gehalten wird. Verbesserte Plattenlaufwerke werden damit schneller gemacht und passen sich mit einer höheren Beschleunigung und Verzögerung und mit einer schnelleren Leseausrichtungs-Nachstellung an eine höhere Informationsdichte an. In Robotern kann der Prozessor mehr Rückkopplungspunkte bedienen. In Modems wird infolge der Software-Abfrage der Unterbrechungen eine geringere Bitfehlerrate ermöglicht. Vocoder werden bei der Codierung mit einer höheren Genauigkeit und mit weniger Bitfehlern hergestellt. Raketenleitsysteme verfügen über eine genauere Steuerung und benötigen weniger Prozessoren. Digitale Mobiltelephone werden ähnlich verbessert.
  • Das Merkmal der organisationsaufwandfreien Kontextsicherung sichert, wenn eine Unterbrechung genommen wird, alle strategischen CPU-Register und stellt sie bei der Rückkehr von der Dienstroutine wieder her, ohne daß dies irgendeinen Maschinenzyklen-Organisationsaufwand erfordert. Dies entlastet die Unterbrechungsdienstroutine, indem alle CPU-Betriebsmittel verwendet werden, ohne den unterbrochenen Code zu beeinflussen.
  • 21 zeigt einen Blockschaltplan der Vorrichtung 11, in der der Gegenstand der 1A und 1B als der CPU-Block 13, 15 in 21 gezeigt ist. Ein Satz von Registern ist aus dem CPU-Block herausgebrochen gezeigt, wobei dies die strategischen Register sind, die, wie oben beschrieben, einen Stapel der Tiefe eins besitzen.
  • 21 kann bei der Diskussion der Gesamtsystemarchitektur des Halbleiterchips genutzt werden. Im Programmspeicherraum liegt eine Menge von Unterbrechungs-Traps und Vektorbereichen 821. Wenn eine Unterbrechungsroutine im Programmspeicher 61 der 1A und 21 ausgeführt werden soll, bewirkt die Unterbrechungssteuerlogik 231 aus 21, daß der Programmzähler 93 aus 1A mit dem richtigen Vektor in den Unterbrechungsbereichen 821 geladen wird, um zu der richtigen Unterbrechungsdienstroutine zu verzweigen. Zwei Kernregister IFR und IMR sind ein Unterbrechungsmerkerregister bzw. ein Unterbrechungsmaskenregister. Das Unterbrechungsmerkerregister liefert eine Angabe darüber, welche spezifischen Unterbrechungen aktiv sind. Das Unterbrechungsmaskenregister ist ein Satz von Bits, durch den Unterbrechungen für die CPU gesperrt werden können, indem diese maskiert werden. Falls es z. B. unter den Unterbrechungen INT2-, INT1- und INT0- eine aktive Unterbrechung gibt, gibt es ein entsprechendes Bit in dem IFR, das auf eine "1" gesetzt ist. Der Merker wird gelöscht, indem ein Unterbrechungs-Trap genommen wird, durch den er automatisch gelöscht wird. Andernfalls wird die Unterbrechung gelöscht, indem eine ODER-Verknüpfung mit einer Eins in dem jeweiligen Unterbrechungsmerkerregister, das die Unterbrechung löscht, genommen wird. Außerdem können alle aktiven Unterbrechungsmerker gleichzeitig gelöscht werden.
  • In 21 sind die Programm- und Datenbusse 101 und 111 graphisch verbunden und schließen in peripheren Ports 831 und 833 ab. Der periphere Port 833 schafft eine parallele Schnittstelle. Der Port 831 schafft eine Schnittstelle zu dem TI-Bus und serielle Ports für die Vorrichtung 11.
  • Die 22, 23 und 24 zeigen drei alternative Schaltungen zum Ausführen der organisationsaufwandfreien Unterbrechungskontextumschaltung. Es ist selbstverständlich, daß alle strategischen Register gleichzeitig parallel kontextumgeschaltet werden und daß die Darstellung aller Register durch einzelne Flipflops somit ein graphisches Verfahren ist.
  • In den 22 und 23 stellen das obere Register und das untere Register die Vordergrund- und Hintergrund-Rechtecke jedes strategischen Registers aus den 1A und 1B dar. 24 zeigt den Parallelismus explizit.
  • In 22 wird der Daten-D-Eingang eines Hauptregisters 851 wahlweise von einem MUX 853 geliefert. Der MUX 853 verbindet wahlweise den D-Eingang des Registers 851 entweder mit den parallelen Datenleitungen A oder mit den parallelen Datenleitungen B. Die Leitungen B sind an den Q-Ausgang eines Gegenregisters 855 angeschlossen. Das Hauptregister 851 besitzt einen Satz von Q-Ausgangsleitungen, die jeweils an die entsprechenden D-Eingänge des Gegenregisters 855 angeschlossen sind.
  • In einem erklärenden Beispiel stellt der durch einen Pfeil gekennzeichnete Eingang für die Leitung A das Ergebnis von Berechnungen durch die ALU 21 dar, während der Akkumulator 23 die Register 851 und 855 umfaßt. Der als Akkumu lator 23 interpretierte Ausgang des Hauptregisters 851 aus 22 wird z. B. an den Nachskalierer 181 aus 1A angelegt. Es ist jedoch selbstverständlich, daß das Register 851 sooft wiederholt ist, wie es entsprechend jedem strategischen Register, für das in 1A und 1B Doppelrechtecke angegeben sind, erforderlich ist.
  • In 22 besitzt jedes der Register 851 und 855 einen Ausgangsfreigabe-Anschlußpunkt (OE-Anschlußpunkt). Ein ODER-Gatter 857 liefert eine Takteingabe des Hauptregisters 851. Das ODER-Gatter 857 besitzt Eingänge für CPU WRITE und für RETE. RETE speist außerdem einen Auswahleingang des MUXs 853 und außerdem den OE-Ausgangsfreigabe-Anschlußpunkt des Gegenregisters 855. Der OE-Anschlußpunkt des Hauptregisters 851 ist an den Ausgang eines ODER-Gatters 859 angeschlossen, dessen Eingänge an die Unterbrechungsquittung IACK und an CPU READ angeschlossen sind. Wie durch die Punkte angegeben ist, taktet IACK außerdem das Gegenregister 855 und alle anderen Gegenregister.
  • Im Betrieb wählt der MUX 853 in Abwesenheit einer Rückkehr von der Unterbrechung (RETE tief) eine Eingangsleitung A für das Hauptregister 851. Beim Auftreten von CPU WRITE taktet das Hauptregister 851 den Eingang von dem CPU-Kern in seinen D-Eingang. Wenn an dem ODER-Gatter 859 ein CPU READ auftritt und OE aktiviert, greift die CPU auf den Inhalt des Registers 851 zu.
  • Wenn eine Unterbrechung auftritt und von der Vorrichtung 11 quittiert wird (IACK), wird der Ausgang Q des Registers 851 freigegeben und das Gegenregister 855 getaktet, während die Q-Ausgangsgröße des Hauptregisters in dem Register 855 gespeichert wird. Während des Ausführens der Unterbrechungsdienstroutine werden die Eingangsleitungen A weiter durch CPU WRITE in das Hauptregister 851 getaktet. Wenn die Unterbrechung abgeschlossen ist, wird RETE tief, wobei der MUX 853 auf die Auswahlleitungen B und auf die Aktivierungsleitung OE des Gegenregisters 855 geschaltet wird. Außerdem taktet RETE das Register 851 über das ODER-Gatter 857, um die Übertragung abzuschließen und die Hauptroutineninformationen in dem Hauptregister 851 wiederherzustellen. Dann wird RETE beim Abschluß der Rückkehr von der Unterbrechung tief, wobei das Hauptregister 851 über den MUX 853 wieder mit den Eingangsleitungen A verbunden wird. Auf diese Weise wird die organisationsaufwandfreie Kontextumschaltung abgeschlossen.
  • 22 zeigt somit an einen elektronischen Prozessor angeschlossene erste und zweite Register. Die Register nehmen an einem Verarbeitungskontext (z. B. an einer Unterbrechung oder an einem Unterprogramm) teil, während sie Informationen von einem anderen Bearbeitungskontext bis zu einer Rückkehr dahin behalten. Der MUX 853 und die Gatter 857 und 859 schaffen ein Beispiel einer an die ersten und zweiten Register angeschlossenen Kontextumschaltschaltung, die in der Weise arbeitet, daß sie in Abhängigkeit von dem Verarbeitungkontext wahlweise Eingangs- und Ausgangsoperationen der Register zu und von dem elektronischen Prozessor steuert. Der elektronische Prozessor wie etwa der Kern der CPU 13, 15 aus den 1A und 1B spricht auf ein Kontextsignal wie etwa auf eine Unterbrechung INT- an und kann in dem durch das Kontextsignal identifizierten alternativen Verarbeitungskontext betrieben werden.
  • 23 zeigt einen Bankumschaltzugang zur organisationsaufwandfreien Kontextumschaltung. Die D-Eingänge eines Hauptregisters 861 und eines Gegenregisters 863 sind an einen Demultiplexer DMUX 865 angeschlossen. Die Q-Ausgänge der Register 861 und 863 sind an jeweilige Eingänge eines MUX 867 angeschlossen. Der Eingang von dem CPU-Kern ist an den DMUX 865 angeschlossen. Der Ausgang zurück zu dem CPU-Kern wird vom MUX 867 bereitgestellt. Die beiden Auswahlleitungen von den MUXs 865 und 867 sind an eine Leitung angeschlossen, die aktiv wird, wenn eine Unterbrechungsdienstroutine ISR im Gange ist.
  • Auf diese Weise ist in einer Hauptroutine nur das Register 861 in Betrieb. Während der Unterbrechungsdienstroutine wird das Register 863 betrieben, während das Register 861 den Inhalt, zu dem die Operationen zurückkehren sollen, hält. Ein Paar UND-Gatter 871 und 873 wirkt außerdem in der Weise, daß es die Register 861 und 863 aktiviert und deaktiviert. Ein CPU WRITE bezeichnet einen Eingang jedes UND-Gatters 871 und 873. Die Ausgänge der UND-Gatter 871 und 873 sind an die Takteingänge der Register 863 bzw. 861 angeschlossen. In einer Hauptroutine mit ISR tief wird das Register 873 bezeichnet, wobei CPU WRITE das Register 861 taktet. Das UND-Gatter 871 wird in der Hauptroutine gesperrt. Wenn ISR während der Unterbrechung hoch ist, taktet CPU WRITE das Register 863 über das bezeichnete UND-Gatter 871, wobei das UND-Gatter 873 gesperrt ist.
  • In 24 sind beide D-Eingänge der zwei Register 881 und 883 in der Weise angeschlossen, daß sie die Informationen von dem Prozessor (z. B. der ALU 21) gleichzeitig empfangen. Um den Parallelismus dieses Kontextumschaltbefehls zu zeigen, sind die Register in dem Diagramm explizit wiederholt, so daß die ALU 21 z. B. beide D-Eingänge der Register 881 und 883 speist, wobei die Register 881 und 883 anschaulich als Akkumulator ACC 23 wirken. Dementsprechend speist der Multiplizierer 53 z. B. das P-Register 51 einschließlich der Register 891 und 893. (Das Register 893 ist nicht mit dem BPR 185 aus 1A zu verwechseln.) Die Eingänge eines MUX 895 sind jeweils an die Q-Ausgänge der Register 881 und 883 angeschlossen. Die Eingänge eines MUX 897 sind jeweils an die Q-Ausgänge der Register 891 und 893 angeschlossen. Die Takteingänge der Register 881 und 891 sind parallel an einen A-Ausgang eines elektronischen Umkehrschalters 901 angeschlossen. Die Takteingänge der Register 883 und 893 sind parallel an einen B-Ausgang des Umkehrschalters 901 angeschlossen. Wenn die Unterbrechungsdienstroutine im Gange ist, reagiert die Unterbrechungshardware 903 auf die Unterbrechungsquittung IACK, um einen tief aktiven Ausgang ISRzu erzeugen. Die Unterbrechungshardware 903 steuert den Umschalter-T-Eingang eines Flipflops 905. Ein Q-Ausgang des Flipflops 905 ist sowohl an einen Auswahleingang des Schalters 901 als auch an den Auswahleingang beider MUXs 895 und 897 sowie an die MUXs für alle strategischen Register angeschlossen.
  • Eine CPU WRITE-Leitung ist an einen X-Eingang des Schalters 901 und an einen Eingang eines UND-Gatters 907 angeschlossen. Der tief aktive Ausgang ISR- der Unterbrechungshardware 903 ist an einen zweiten Eingang des UND-Gatters 907 angeschlossen, dessen Ausgang an einen Y-Eingang des Schalters 901 angeschlossen ist.
  • Im Betrieb initialisiert ein hohes Rücksetzen den Setzeingang des Flipflops 905, was den Q-Ausgang hoch zieht und bewirkt, daß der MUX 895 das Register 881 auswählt. Außerdem wird dabei bewirkt, daß der Schalter 901 X mit A und Y mit B verbindet. In einer Hauptroutine ist ISR- inaktiv hoch, wodurch das UND-Gatter 907 bezeichnet wird. Dementsprechend taktet die Aktivität auf der CPU WRITE-Leitung in einer Hauptroutine alle Register 881, 883, 891 und 893. Zum Beispiel bedeutet dies, daß Informationen von der ALU 21 in beide Register 881 und 883 gleichzeitig getaktet werden und daß die Informationen von dem Multiplizierer 53 in beide Register 891 und 893 gleichzeitig getaktet werden.
  • Bei einer Kontextänderung, für die die Unterbrechungsdienstroutine ein Beispiel ist, wird dann ISR- tief und sperrt das UND-Gatter 907. Für die Zwecke der Unterbrechungsroutine taktet die nachfolgende CPU WRITE-Aktivität weiter die Register 881 und 891, setzt aber mit dem Takten der Register 883 und 893 aus, wobei sie den Inhalt der Hauptroutine durch die Inaktivität in diesen zwei letzteren Registern speichert. Somit findet eine Kontextumschaltung mit keinerlei zeitlichem Organisationsaufwand statt. Bei einer Rückkehr zu dem ursprünglichen Kontext wie etwa zu der Hauptroutine wird ISR erneut hoch, wodurch das UND-Gatter 907 freigegeben wird. Der Tief-Hoch-Übergang schaltet das Flipflop 905 um, was eine Änderung des Zustands der MUXs 895 und 897 bewirkt und automatisch die Register 883 und 893 auswählt. Dies führt wiederum eine automatische organisationsaufwandfreie Kontextumschaltung aus. Da das Flipflop 905 umgeschaltet wird, ändert der Schalter 901 den Zustand, um X mit B und Y mit A zu verbinden. Dann taktet die Aktivität beim CPU-Schreiben beide Flipflops gleichzeitig, wobei die Register 883 und 893 aktive Register sind. Eine weitere Unterbrechung (ISR- tief) sperrt die Register 881 und 891, während die Register 883 und 893 aktiv bleiben. Somit gibt es in 24 kein Hauptregister oder Ge genregister, wobei die Registerpaare statt dessen diese Funktionen alternativ gemeinsam nutzen.
  • Auf diese Weise schafft 24 eine Schaltschaltung, die die Arithmetik-Logik-Schaltung bis zum Auftreten des Unterbrechungssignals mit beiden von zwei Registern verbindet. Als Antwort auf das Unterbrechungssignal sperrt die Schaltschaltung temporär das Speichern weiterer Informationen von der Arithmetik-Logik-Einheit durch ein Register. Anders ausgedrückt, kann diese Kontextumschaltschaltung wie die der 22 und 23 in der Weise betrieben werden, daß sie wahlweise die ersten und zweiten Register taktet. Im Gegensatz zu den Schaltungen der 22 und 23 besitzt die Schaltung nach 24 erste und zweite Register, deren Eingänge beide in der Weise angeschlossen sind, daß sie die Informationen von dem Prozessor gleichzeitig empfangen. Wie bereits diskutiert wurde, besitzt der Prozessor einen Programmzähler, wobei er an diese Register in der Weise angeschlossen ist, daß er eine erste Routine und eine zweite Routine ausführt, die eine Unstetigkeit des Programmzählers mit sich bringen.
  • In den 2224 ist einem Registersatz gültig ein Stapel zugeordnet, wobei der Prozessor bei einer Aufgabenänderung zu der zweiten Routine in der Weise betrieben wird, daß er die Inhalte der mehreren Register auf den Stapel schiebt. Ähnlich hebt der Prozessor bei der Rückkehr von der Unterbrechung den Stapel ab, um eine im wesentlichen gleichzeitige Wiederaufnahme der ersten Routine zu ermöglichen. Die zweite Routine kann eine Unterbrechungsdienstroutine, eine Software-Trap, ein Unterprogramm, ein Verfahren, eine Funktion oder irgendeine andere kontextändernde Routine sein.
  • In 25 initialisiert ein Verfahren zum Betreiben der Schaltung nach 24 in einem Schritt 911 den Q-Ausgang des Flipflops 905. Die Operationen werden in einem Schritt 913 fortgeführt, um den Ausgang der MUXs 895 und 897 auf der Grundlage des Zustands des Q-Ausgangs des Flipflops 905 zu betreiben. Dann bestimmt ein Entscheidungsschritt 915, ob der Inhalt z. B. als Antwort auf das Signal ISR- umgeschaltet werden soll. Falls das nicht der Fall ist, takten die Operationen in einem Schritt 917 alle Register 881, 883, 891 und 893 und schleifen zu Schritt 913 zurück, von wo die Operationen bis zum Stattfinden einer Kontextumschaltung in Schritt 915 unbeschränkt fortgeführt werden. In einem solchen Fall führt eine Verzweigung von Schritt 915 zu einem Schritt 919, um nur die wahlweise von den MUXs (z. B. 895 und 897) ausgewählten Register zu takten. Wenn eine Rückkehr stattfindet, wird Q an dem Flipflop 905 umgeschaltet, von wo die Operationen zu Schritt 913 zurückgeschleift und wie beschrieben unbeschränkt fortgeführt werden.
  • 26 ist ein Prozeßablaufplan zum Beschreiben des Betriebs der zwei Befehle CRGT und CRLT. Diese zwei Befehle umfassen eine schnelle Größer-als- und Kleiner-als-Berechnung, die bei wiederholtem Gebrauch leicht Maxima und Minima berechnet. Die Operationen beginnen mit einem Start 981 und werden fortgeführt, um zu bestimmen, ob der CRGT- oder der CRLT-Befehl vorhanden ist. Wenn das der Fall ist, gehen die Operationen weiter zu einem Schritt 985, um die ALU 21 in dem Akkumulator 23 in 1A zu speichern. In Schritt 987 wählt dann die ALU über den MUX 77 aus 1A den Inhalt des ACCB 31. In einem Schritt 989 wird die ALU gleichzeitig aktiv betrieben, um durch Subtraktion den Inhalt des Akkumulators 23 mit dem ACCB 31 zu vergleichen, um z. B. das Vorzeichen der arithmetischen Differenz zu erhalten. In Schritt 991 wird in Abhängigkeit von dem Befehl CRGT oder CRLT der größere bzw. der kleinere Wert in Abhängigkeit von dem Zustand des Vergleichs entweder durch Speichern des ACC 23 in den ACCB 31 oder durch Weglassen des Speicherns an den ACCB 31 geliefert. Hat z. B. der ACC 23 einen größeren Wert als der ACCB 31 und lautet der Befehl CRGT, wird der ACC in dem ACCB gespeichert, während dies andernfalls nicht der Fall ist. Falls der ACC 23 einen kleineren Wert als der ACCB hat und der Befehl CRLT ist, wird der ACC in dem ACCB gespeichert. In einigen Ausführungen schreibt eine Übertragung den ACCB in den ACC, wenn der ACCB den gewünschten Wert bereits hält. Nachfolgend bestimmt ein Test 993, ob eine Reihe von Werten abgeschlossen ist. Falls das nicht der Fall ist, werden die Operationen zu Schritt 983 zurückgeschleift. Falls die Reihe in Schritt 993 abgeschlossen ist, verzweigen die Operationen zu einem Schritt 995, um den berechneten Maximal- oder Minimalwert der Reihe zu speichern.
  • Die Kapazität für das schnelle Berechnen des Maximums einer Reihe von Zahlen ist besonders nützlich in einem automatischen Verstärkungsregelungssystem, in dem ein Multiplikator oder Verstärkungsfaktor auf einem Maximalwert beruht, um die Verstärkung eines Eingangssignals so zu erhöhen oder zu verringern, daß es wirksamer verarbeitet werden kann. Solche automatischen Verstärkungsregelungen werden in Radioempfängern, Tonverstärkern, Modems und außerdem in Steuersystemen, die Algorithmen wie etwa den PID-Algorithmus verwenden, eingesetzt. Das PID ist ein Proportional-Integral- und Differential-Rückkopplungssteuersystem. Eine nochmals weitere Anwendung gibt es in der Mustererkennung. Zum Beispiel werden in einem Sprach- oder Erkennungssystem feste Treffer der Erkennung durch Vergleich vorgespeicherter Sprachmuster mit ankommenden Daten durch Betrachten eines Maximums in einem Schablonenvergleichsprozeß bestimmt. Außerdem analysiert die Kantenerfassung bei der Bildverarbeitung mit einem Prozessor die Helligkeits- und Farbintensitäten. Wenn die Intensitäten wachsen und dann plötzlich fallen, wird ein Maximum erfaßt, das für die Zwecke der Bildverarbeitung eine Kante bezeichnet.
  • Auf diese Weise werden eine Arithmetik-Logik-Einheit, ein Befehlsdecodierer, ein Akkumulator und ein Hilfsregister verbunden. Das Hilfsregister ist an die Arithmetik-Logik-Einheit so angeschlossen, daß die Arithmetik-Logik-Einheit einen ersten arithmetischen Wert an den Akkumulator liefert und dann an das Register als Anwort auf einen Befehl von dem Befehlsdecodierer den kleineren oder größeren Wert des Inhalts des Zusatzregisters und des Inhalts des Akkumulators liefert. Die wiederholte Ausführung des Befehls bei einer Reihe während der Zeit an den Akkumulator gelieferter arithmetischer Werte liefert an das Register einen Minimal- oder Maximalwert in der Reihe der arithmetischen Werte.
  • In vielen Echtzeitsystemen ist es von kritischer Bedeutung, ein Maximum oder Minimum mit so wenig Maschinenzyklen an Organisationsaufwand wie möglich zu finden. Das Problem verkompliziert sich, wenn temporäre Ergebnisse des Algorithmus in Akkumulatoren gespeichert werden, die mehr Bits als die Wortbreite eines Datenspeicherbereichs, in dem das momentane Minimum oder Maximum gespeichert werden könnte, haben. Es verkompliziert sich außerdem durch Prozessoren mit einem starken Pipeline-Betrieb, wenn das Prüfen von Bedingungen eine Verzweigung erfordert. Beide Fälle verwenden zusätzliche Maschinenzyklen. Weitere Maschinenzyklen können beim Einrichten der Adressen in Datenübertragungsoperationen verbraucht werden.
  • In der bevorzugten Ausführung hat die Schaltung jedoch den ACCB 31 als ein paralleles Register der gleichen Bitbreite wie der Akkumulator ACC 23. Wenn die Minimum- oder Maximumfunktion ausgeführt wird, vergleicht der Prozessor die neuesten Werte in dem Akkumulator mit dem Wert in dem parallelen Register ACCB und schreibt den Akkumulatorwert, wenn er in Abhängigkeit von dem Befehl kleiner als das Minimum oder größer als das Maximum ist, in das parallele Register oder umgekehrt. Dies alles wird bei einem einzigen Befehlswort in einem einzigen Maschinenzyklus ausgeführt, wobei somit sowohl Coderaum als auch Programmausführungszeit gespart wird. Außerdem sind dabei keine Speicheradressierungsoperationen erforderlich und werden keine weiteren Register in der ALU beeinflußt.
  • Während diese Erfindung mit Bezug auf erläuternde Ausführungen beschrieben wurde, soll diese Beschreibung nicht als einschränkend ausgelegt werden. Verschiedene Modifikationen der erläuternden Ausführungen sowie weitere Ausführungen der Erfindung gehen für den Fachmann auf dem Gebiet unter Bezug auf diese Beschreibung hervor.

Claims (2)

  1. Datenverarbeitungsvorrichtung, mit: A. einer Arithmetik-Logik-Einheit (21), die Ausgangsleitungen, die Ausgangssignale transportieren, und zwei Gruppen von Eingangsleitungen, die Eingangssignale transportieren, besitzt; B. einem Akkumulator (23), der Eingangsleitungen, die Eingangssignale transportieren und wahlweise mit den Ausgangsleitungen der Arithmetik-Logik-Einheit verbunden sind, sowie Ausgangsleitungen, die Ausgangssignale transportieren und wahlweise mit einer Gruppe von Eingangsleitungen der Arithmetik-Logik-Einheit verbunden sind, besitzt; und C. einem parallelen Register (31), das Ausgangsleitungen besitzt, die Ausgangssignale transportieren und wahlweise mit der anderen Gruppe von Eingangsleitungen der Arithmetik-Logik-Einheit verbunden sind; dadurch gekennzeichnet, daß die Vorrichtung ferner eine direkte bidirektionale Verbindung zwischen dem Akkumulator und dem parallelen Register umfaßt, um die Inhalte des Akkumulators an das parallele Register zu übertragen und um die Inhalte des parallelen Registers an den Akkumulator zu übertragen.
  2. Datenverarbeitungsvorrichtung nach Anspruch 1, bei der die von den Ausgangsleitungen der Arithmetik-Logik-Einheit transportierten Ausgangssignale, die von den beiden Gruppen von Eingangsleitungen der Arithmetik-Logik-Einheit transportierten Eingangssignale, die von den Eingangsleitungen des Akkumulators transportierten Eingangssignale, die von den Ausgangsleitungen des Akkumulators transportierten Ausgangssignale und die von den Ausgangsleitungen des parallelen Registers transportierten Ausgangssignale alle die gleiche bestimmte Bitbreite besitzen.
DE1990634059 1989-05-04 1990-05-01 Arithmetisch-logische Einheit mit Akkumulator und parallelem Register Expired - Lifetime DE69034059T2 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US34760589A 1989-05-04 1989-05-04
US347596 1989-05-04
US347615 1989-05-04
US07/347,615 US5142677A (en) 1989-05-04 1989-05-04 Context switching devices, systems and methods
US07/347,596 US5072418A (en) 1989-05-04 1989-05-04 Series maxium/minimum function computing devices, systems and methods
US347605 1989-05-04

Publications (2)

Publication Number Publication Date
DE69034059D1 DE69034059D1 (de) 2003-05-22
DE69034059T2 true DE69034059T2 (de) 2004-05-06

Family

ID=27407784

Family Applications (4)

Application Number Title Priority Date Filing Date
DE1990633997 Expired - Fee Related DE69033997T2 (de) 1989-05-04 1990-05-01 Datenverarbeitungssystem mit Kontextumschaltungsfähigkeit
DE1990632964 Expired - Fee Related DE69032964T2 (de) 1989-05-04 1990-05-01 Kontextumschaltungssystem
DE1990634059 Expired - Lifetime DE69034059T2 (de) 1989-05-04 1990-05-01 Arithmetisch-logische Einheit mit Akkumulator und parallelem Register
DE1990634028 Expired - Lifetime DE69034028T2 (de) 1989-05-04 1990-05-01 Verfahren und System zur Bestimmung von Min/Max Werten

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE1990633997 Expired - Fee Related DE69033997T2 (de) 1989-05-04 1990-05-01 Datenverarbeitungssystem mit Kontextumschaltungsfähigkeit
DE1990632964 Expired - Fee Related DE69032964T2 (de) 1989-05-04 1990-05-01 Kontextumschaltungssystem

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE1990634028 Expired - Lifetime DE69034028T2 (de) 1989-05-04 1990-05-01 Verfahren und System zur Bestimmung von Min/Max Werten

Country Status (3)

Country Link
EP (4) EP0884674B1 (de)
JP (3) JP3173777B2 (de)
DE (4) DE69033997T2 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825770A (en) * 1996-06-06 1998-10-20 Northern Telecom Limited Multiple algorithm processing on a plurality of digital signal streams via context switching
US5909188A (en) * 1997-02-24 1999-06-01 Rosemont Inc. Process control transmitter with adaptive analog-to-digital converter
SE9803632D0 (sv) * 1998-10-22 1998-10-22 Ericsson Telefon Ab L M A processor
GB0307822D0 (en) * 2002-12-12 2003-05-07 Advanced Risc Mach Ltd Processing activity masking in a data processing system
US7979684B2 (en) * 2006-08-07 2011-07-12 Qualcomm Incorporated Method and context switch device for implementing design-for-testability functionality of latch-based register files
KR102549438B1 (ko) * 2016-09-27 2023-06-29 삼성전자주식회사 순차 회로, 이를 포함하는 스캔 체인 회로 및 집적 회로
WO2019129389A1 (en) * 2017-12-26 2019-07-04 Silicon Mobility Sas Flexible logic unit adapted for real-time task switching
CN112602054A (zh) 2018-08-31 2021-04-02 弗莱克斯-罗技克斯技术公司 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
KR20210054632A (ko) 2019-11-05 2021-05-14 삼성디스플레이 주식회사 전자 장치
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
WO2022020164A1 (en) 2020-07-22 2022-01-27 Flex Logix Technologies, Inc. Mac processing pipelines having programmable granularity, and methods of operating same

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3221309A (en) * 1961-08-10 1965-11-30 Scam Instr Corp Priority interrupt monitoring system
GB1426273A (en) * 1973-04-13 1976-02-25 Int Computers Ltd Data processing
FR2250449A5 (en) * 1973-10-31 1975-05-30 Honeywell Bull Soc Ind Protection system for data processor interruption - has double memory bank with each bank divided into two parts
JPS50120743A (de) * 1974-03-08 1975-09-22
US4218739A (en) * 1976-10-28 1980-08-19 Honeywell Information Systems Inc. Data processing interrupt apparatus having selective suppression control
US4091445A (en) * 1977-01-18 1978-05-23 Honeywell Information Systems Inc. Program switching monitor
JPS5935451B2 (ja) * 1977-12-23 1984-08-29 富士通株式会社 汎用レジスタ・アクセス方式
US4287560A (en) * 1979-06-27 1981-09-01 Burroughs Corporation Dual mode microprocessor system
JPS5616248A (en) * 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
JPS5641577A (en) * 1979-09-11 1981-04-18 Nec Corp Stack register circuit
US4396979A (en) * 1980-05-30 1983-08-02 Fairchild Camera & Instrument Corporation Microprocessor with improved arithmetic logic unit data path
US4467444A (en) * 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
US4434461A (en) * 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
US4403225A (en) * 1982-05-24 1983-09-06 Honeywell, Inc. Multistylus recording system
JPS58225443A (ja) * 1982-06-25 1983-12-27 Nec Corp 高速デ−タ処理装置
US4689739A (en) * 1983-03-28 1987-08-25 Xerox Corporation Method for providing priority interrupts in an electrophotographic machine
US4597053A (en) * 1983-07-01 1986-06-24 Codex Corporation Two-pass multiplier/accumulator circuit
JPS61122747A (ja) * 1984-11-14 1986-06-10 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ処理装置
JPS6352241A (ja) * 1986-08-22 1988-03-05 Hitachi Ltd マイクロプロセツサ
EP0306891A3 (de) * 1987-09-11 1992-04-01 National Semiconductor Corporation Pipeline-Sklavenprotokoll für eine CPU-Gleitkommaeinheiten-Gruppe hoher Leistung

Also Published As

Publication number Publication date
DE69032964T2 (de) 1999-07-01
DE69034059D1 (de) 2003-05-22
EP0405726A2 (de) 1991-01-02
JPH1196020A (ja) 1999-04-09
DE69033997T2 (de) 2003-04-30
DE69034028D1 (de) 2003-01-23
DE69032964D1 (de) 1999-04-08
DE69034028T2 (de) 2003-10-09
EP0884673A2 (de) 1998-12-16
JPH1196021A (ja) 1999-04-09
JPH0363826A (ja) 1991-03-19
EP0884674B1 (de) 2003-04-16
EP0892344A3 (de) 1999-02-10
EP0884673A3 (de) 1999-07-14
EP0884674A3 (de) 1999-07-28
EP0892344A2 (de) 1999-01-20
EP0892344B1 (de) 2002-08-21
EP0884673B1 (de) 2002-12-11
EP0884674A2 (de) 1998-12-16
JP3173777B2 (ja) 2001-06-04
DE69033997D1 (de) 2002-09-26
EP0405726A3 (en) 1993-08-25
EP0405726B1 (de) 1999-03-03

Similar Documents

Publication Publication Date Title
DE69034059T2 (de) Arithmetisch-logische Einheit mit Akkumulator und parallelem Register
DE2521289C2 (de) Datenverarbeitungsanordnung mit Datenfeld-Hilfsprozessor
US6134578A (en) Data processing device and method of operation with context switching
DE69832985T2 (de) Multiplizier-Akkumulatorschaltungen
US6247111B1 (en) System with wait state register
US5072418A (en) Series maxium/minimum function computing devices, systems and methods
DE19983632B4 (de) Emulation eines Befehlssatzes bei einem Befehlssatzarchitekturübergang
EP0086601B1 (de) Multiprocessorsystem mit gegenseitig ausschliessender Steuerfunktion
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
US5586275A (en) Devices and systems with parallel logic unit operable on data memory locations, and methods
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE19983870B4 (de) Berechnung impliziter Datentypbits für Simd-Operationen
US20050278512A1 (en) Context switching devices, systems and methods
DE4430195A1 (de) Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken
DE60016543T2 (de) Verfahren und Vorrichtung zur Ausführung von Kode-Haltepunkt-Befehlen in einem Prozessor
DE19746054A1 (de) Verfahren und Vorrichtung zum Ausführen einer Einzelbefehlsoperation mit doppelter Genauigkeit
JPH08320804A (ja) クロックドメインにおける試験インターフェースの分散制御を備えるエミュレーション装置、システムおよび方法
DE60008689T2 (de) Arithmetische einheit mit, und verfahren zur das nach wahl verspäten von einem multiplikationsresultat
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor
EP0273070B1 (de) Einrichtung und Verfahren zur Erweiterung des Befehlssatzes und der Funktionen eines Rechners
JPH0397035A (ja) 記憶手段構成方式
DE112021006877T5 (de) System mit mehreren stapeln in einem prozessor ohne effektiven adressgenerator
DE3149404A1 (de) Datensteuereinrichtung fuer ein dialoggeraet zur graphischen aufzeichnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition