DE69930893T2 - Digitaler Signalprozessor für Daten mit grosser Bitlänge - Google Patents

Digitaler Signalprozessor für Daten mit grosser Bitlänge Download PDF

Info

Publication number
DE69930893T2
DE69930893T2 DE69930893T DE69930893T DE69930893T2 DE 69930893 T2 DE69930893 T2 DE 69930893T2 DE 69930893 T DE69930893 T DE 69930893T DE 69930893 T DE69930893 T DE 69930893T DE 69930893 T2 DE69930893 T2 DE 69930893T2
Authority
DE
Germany
Prior art keywords
word
accumulator
data
register
multiplier
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
DE69930893T
Other languages
English (en)
Other versions
DE69930893D1 (de
Inventor
Alva Sherman Henderson
Francesco Plano Cavaliere
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
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69930893D1 publication Critical patent/DE69930893D1/de
Application granted granted Critical
Publication of DE69930893T2 publication Critical patent/DE69930893T2/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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • G06F7/5443Sum of products
    • 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/30018Bit or string instructions
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft das Gebiet der elektronischen Datenverarbeitung und insbesondere das Gebiet der Verarbeitung elektronischer Daten mit einer hohen Bitlänge, d.h. von Datenketten.
  • HINTERGRUND
  • Mikroprozessoren müssen häufig binäre Daten mit weiten Bitlängenbereichen manipulieren, beispielsweise Daten, die von einem einzigen Logikbit bis zu an hochgenauen Rechenoperationen beteiligten Daten, die eine Länge von mehr als 128 Bits aufweisen können, reichen.
  • Hardware-Rechen- und Logikeinheiten (ALUs) in Mikroprozessoren sind im Allgemeinen dafür entwickelt und ausgelegt, feste Bit- oder Wortlängen zu behandeln. Daher erfordern hochgenaue Rechenoperationen mehrere Programmschritte und mehrere Mikroprozessorzyklen. Diese Datenverarbeitungsbedingungen führen zu Programmen, die hinsichtlich der Ausführungszeit unwirksam sind, und sie führen zu einer Programmiercode-Unwirksamkeit, weil die Mikroprozessor-Hardware und der unterstützende Programmbefehlssatz nicht für das Bearbeiten von Daten mit einem weiten Bereich von Bitlängen, beispielsweise Daten, die durch sequenzielle Ketten von 16-Bit-Datenwörtern dargestellt sind, optimiert sind.
  • Für Befehle, wie Addition und Subtraktion, ergibt sich diese Unwirksamkeit aus einer Speicherverschwendung bei Speichervorgängen und Ladevorgängen des Speichers, sowie aus Zusatzaufwand bei der Programm- oder Softwareschleifensteuerung. Bei komplexeren Befehlen oder Operationen, wie einer Multiplikation, und Operationen, an denen Algorithmen mit erhöhter Genauigkeit beteiligt sind, ist das Ergebnis sogar noch unwirksamer. Zusätzlich muss der negative, der positive oder der Null-Zustand eines sich ergebenden Rechenwerts für Mehrwortberechnungen getrennt behandelt werden, wodurch sogar noch mehr Zeit und Programmcode erforderlich ist.
  • Der Akkumulator ist ein zentrales Register für alle Prozessoren, und er wird zum Zwischenspeichern der Ergebnisse der ALU in einem Digitalprozessor verwendet. Bei Entwürfen mit einem einzigen Datenbus und einem einzigen Datenspeicher, wie bei den meisten Mikroprozessoren für allgemeine Zwecke, stellt der Akkumulator einen Engpass für eine schnelle Verarbeitung dar. Der Akkumulator wird sowohl als eine Eingangsoperandenquelle als auch zum Zwischenspeichern des Ausgangsoperanden der ALU verwendet. Wenn daher unterschiedliche Datenwerte manipuliert werden, müssen die vorhergehenden Ergebnisse in einem anderen Register oder Speicher gespeichert werden, bevor die nächsten Daten verarbeitet werden. Häufig sind Daten im Akkumulator vorläufig, sie müssen jedoch zwischengespeichert werden, um Platz für eine Zwischenberechnung oder -operation zu schaffen, und zusätzliche Zyklen müssen verwendet werden, um den gespeicherten Wert vor der Fortsetzung abzurufen. Mehrere Zyklen einer unerwünschten Ausführungszeit müssen häufig verschwendet werden, um diese Anforderung zu erfüllen. Diese verschwendeten Zyklen sind für Ausführungszeit-sensitive Routinen, wie die Signalverarbeitung, kritisch, wobei das Einsparen von zwei Zyklen alle 8 Zyklen einer Erhöhung der Prozessorgeschwindigkeit um 33 % entspricht.
  • Ein weiteres Problem, das häufig bei gewöhnlichen Prozessoren auftritt, besteht darin, dass es das einzige Akkumulatorregister notwendig macht, dass der Akkumulator sowohl als Quelle für einen Eingangsoperanden als auch als Ziel für einen Ausgangsoperanden der ALU verwendet wird. Ein Beispiel ist die Addition, wobei ein Wort im Speicher zu einem Wort im Akkumulator addiert wird, wobei die Ergebnisse davon den ursprünglich im Akkumulator gespeicherten Eingangsoperanden überschreiben. Entwürfe mit zwei Akkumulatoren bieten einige Merkmale für nicht zerstörende Operationen, sie bieten jedoch nur für Operationen mit der Breite eines einzigen Worts Vorteile.
  • Es ist bekannt, dass frühere Mikroprozessoren die Fähigkeit aufwiesen, Ketten zu bearbeiten, beispielsweise durch Wiederholen eines gegebenen Befehls mit einer vorgegebenen Häufigkeit. Es ist auch bekannt, dass ein wiederholtes Addieren mit Übertrag zusammen mit einer nachträglichen Modifikation der Datenspeicheradresse eine Kettenoperation wirksam ausführt. Es ist auch bekannt, dass andere feste Hardware-Multiplizierer verwendet haben, um die Multiplikationen mit erhöhter Genauigkeit unter Verwendung eines Multiplizieren-in-Teilen-Algorithmus auszuführen, wobei dies sowohl komplex als auch unwirksam ist.
  • Wenn ein einziger Akkumulator vorhanden ist, muss der Akkumulator sowohl als Quelle für einen Eingangsoperanden der ALU als auch als Ziel für den Ausgangsoperanden der ALU verwendet werden. Die Addition ist ein Beispiel. In einer Additionssituation wird ein 16-Bit-Wort, das sich im Speicher befindet, zu einem 16-Bit-Wort addiert, das sich im Akkumulator befindet, und das Ergebnis wird dann über den Eingangsoperanden geschrieben, der ursprünglich im Akkumulator gespeichert war. Die Verwendung von zwei Akkumulatoren bietet in gewissem Maße eine nicht zerstörende Operation, diese Funktion wird jedoch nur bei Operationen mit der Länge eines einzigen Worts bereitgestellt.
  • Es bleibt auf dem Fachgebiet der Bedarf an einem verbesserten Mikroprozessor bestehen, dessen spezialisierte Hardware und dessen spezialisierter Befehlssatz das Problem des wirksamen, konsistenten und vereinheitlichten Bearbeitens langer Daten mit einer Länge von mehreren Wörtern adressieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß der vorliegenden Erfindung ist ein in den Ansprüchen dargelegter digitaler Signalprozessor vorgesehen. Wie anhand der nachstehend beschriebenen Ausführungsform verständlich wird, sind mehrere Hardware-Strukturen erforderlich. Ein Hardware-Kettenregister mit einem Zähler ist aufgenommen, um den Wiederholungszählwert und die Anzahl der Wörter in der Kette zu steuern. Eine Adressierungssteuerung ist aufgenommen, um das sequenzielle Erfassen von bis zu zwei Eingangsoperandenketten und einer Ausgangsoperandenkette zu steuern. Ein höherwertiges Produktregister war dem Teilsummeneingang des Hardware-Multiplizierers zugeleitet.
  • Die bevorzugte Ausführungsform sieht eine ALU mit der Länge eines einzigen Worts (31 in 1) vor, sie sieht das Konzept von Wortketten vor, und sie sieht zusätzlich die Möglichkeit des Spezifizierens von vier verschiedenen Speicherbereichen vor, die jeweils ein Paar von Kettenwerten speichern, wodurch die Nachteile früherer Mikroprozessoren überwunden werden.
  • Diese und andere Merkmale und Vorteile der innovativen Prozessor-Hardware werden Fachleuten beim Lesen der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen der Erfindung verständlich werden, wobei die Beschreibung auf die Zeichnung Bezug nimmt.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Die offenbarten Erfindungen werden mit Bezug auf die anliegende Zeichnung beschrieben, welche wichtige als Beispiel dienende Ausführungsformen der Erfindung zeigt und worauf in der Beschreibung verwiesen wird. Es zeigen:
  • 1 den Aufbau und die Anordnung eines Mikroprozessors gemäß der bevorzugten Ausführungsform,
  • 2 den Aufbau und die Anordnung der Recheneinheit aus 1 in größeren Einzelheiten,
  • 3 den Aufbau und die Anordnung der Datenspeicher-Adresseneinheit aus 1 in weiteren Einzelheiten,
  • 4 den Aufbau und die Anordnung der Programmzählereinheit aus 1 in weiteren Einzelheiten, und
  • 5 eine Ansicht, die im Wesentlichen 2 ähnelt, worin jedoch eine Datenkettenmanipulation dargestellt ist.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Um die Anforderungen der numerischen Verarbeitung sowohl auf dem Gebiet der Recheneinheit als auch auf dem DSP-Gebiet zu vereinbaren, weist der Prozessor eine Wortlänge von 16 Bits auf. Durch diese Wahl wird auch die Programmadressengrenze des Prozessors im Allgemeinen auf 64 K Wörter, die jeweils eine Länge von 16 Bits aufweisen, gelegt.
  • Hardwaremerkmale gemäß der gegenwärtig bevorzugten Ausführungsform weisen einen Hardware-Kettenregister/Zähler (18 in 1) auf, in dem die Wortlänge N gespeichert ist und der die Wiederholung von Kettenbefehlen entsprechend der Anzahl N der Wörter, die sich in der Datenkette befinden, steuert. Bei der Operation bewirken Kettenbefehle standardmäßig das Ansprechen dieses Kettenregisters/Zählers, um den Längenwert N der Wortkette zu bestimmen. Diese Standardbedingung kann überschrieben werden, indem einem Kettenbefehl ein Wiederholungsbefehl vorangestellt wird, der bewirkt, dass ein Kettenlängenwert an den folgenden Kettenbefehl übergeben wird.
  • Zweitens stellt eine Hardware-Akkumulatorregisterdatei (36 aus 1) einer ALU (31 in 1) eine Akkumulatorfunktion zur Verfügung. Diese Akkumulatorregisterdatei bietet einen Zwischenspeicher für einen Operanden und ein Ergebnis, welche beide durch eine Mehrwortkette dargestellt werden können. Diese Akkumulatorregisterdatei besteht aus zwei Hardware-Akkumulatoren (AC(0) bis AC(15) und AC(16) bis AC(31) aus 1), wobei jeder Hardware-Akkumulator eine Anzahl von beispielsweise 16 einzelnen Hardware-Registern zum Speichern von Ketten von Wortdaten aufweist. Daher können drei Operanden für Befehle manipuliert werden, wobei nur ein Takt oder Mikroprozessorzyklus je Wort, beispielsweise N Zyklen für drei Wortketten, die jeweils N Wörter lang sind, benötigt werden.
  • Drittens weist die Akkumulatorregisterdatei spezialisierte Hardware (70 aus 5) auf, um das sequenzielle Erfassen von bis zu zwei Eingangsdaten- Operandenketten und einer Ausgangsoperandenkette zu steuern. Die Akkumulatorregisterdateien können gemäß der bevorzugten Ausführungsform auf bis zu zwei Eingangsoperanden und einen Ausgangsoperanden zeigen oder den Zugriff darauf steuern.
  • Das heißt, dass zum Adressieren im Speicher abgelegter Operanden für die Verwendung bei der ALU-Operation eine Hardware-Adressensteuereinheit bereitgestellt ist und dass eine ähnliche Hardware-Funktion für die Akkumulatorregisterdatei bereitgestellt ist. Diese Hardware-Adressensteuereinheiten bewirken das selbständige Inkrementieren einer Adresse des ersten Worts oder des LSW-Worts einer Mehrwortkette, nachdem das LSW-Wort aus dem Speicher abgerufen wurde. Für einen indirekten Adressenverweis wird der indirekte Adressenwert, der in einem indirekten Register gespeichert ist (ACP in 5) kopiert, und diese Adressenkopie wird sequenziell inkrementiert, um die vollständige Wortkette zu lesen.
  • Es sei bemerkt, dass der anfängliche indirekte Verweis, der im indirekten Register gespeichert ist, nicht geändert wird. Dies führt dazu, dass ein permanenter Verweis für das LSW der Wortkette beibehalten wird, wobei dieser permanente Verweis verbleibt, bis er durch ein Programm, das vom Mikroprozessor ausgeführt wird, explizit geändert wird.
  • Als ein viertes Merkmal ist eine zusätzliche Hardware-ALU-Zustandslogik bereitgestellt, um den arithmetischen und logischen Zustand vereinheitlicht, d.h. unabhängig von der Bitlänge, zu behandeln.
  • Als ein fünftes Merkmal ist ein Hardware-Produkt-Hoch-Register (34 aus 5) dem Teilsummeneingang (71 aus 5) eines Hardware-Multiplizierers (30 aus 5) zugeführt, um eine konsistente Kettenmultiplizierfunktion zu ermöglichen.
  • Als ein sechstes Merkmal ist ein Hardware-Einzelzyklusmultiplizierer (30 aus 1) in den Prozessor aufgenommen, um zwei 16-Bit-Operanden anzunehmen und ein 32-Bit-Produkt zu erzeugen.
  • Dieser Einzelzyklusmultiplizierer ist aufgebaut und angeordnet, um einen 16-Bit-Multiplikatoroperanden mit einem Multiplikandenoperanden zu multiplizieren, der ein Wort einer Mehrwortkette aufweisen kann. Das sich ergebende Produkt weist eine Länge von einem zusätzlichen Wort auf, wenn es mit der Wortlänge der Eingangswortkette verglichen wird. Weil die Länge der Wortkette gewöhnlich vom Hardware-Kettenregister/Zähler angegeben wird, wird ein zusätzlicher Zyklus für alle dieser Kettenoperationen hinzugefügt.
  • Weil dieser Einzelzyklusmultiplizierer Operanden als entweder vorzeichenbehaftet oder nicht vorzeichenbehaftet interpretieren kann, werden alle Wortmultiplikatoren mit Ausnahme des letzten in den nicht vorzeichenbehafteten Modus gezwungen. Zusätzlich kann dieser Einzelzyklusmultiplizierer als ein Barrel-Shifter verwendet werden, um für das Barrel-Verschieben von Datenketten zu sorgen, die 0 bis 15 Bits aufweisen.
  • Um eine korrekte und vereinheitlichte arithmetische Extraktion und Zustandsextraktion in Bezug auf Einzeldatenwort-Operationen bereitzustellen, ist das ausgehende Übertragsbit mit dem eingehenden Übertragsbit der nächsten Wortberechnung verknüpft, und das Wortzustandsbit (gleich oder null) wird durch ein logisches UND verknüpft. Um Additionen und Subtraktionen korrekt auszuführen, spiegeln lange Kettenvergleiche auch den richtigen Zustand wider.
  • Die bevorzugten Ausführungsformen stellen einen umfassenderen und Codewirksameren Mikroprozessor zur Verwendung bei hochgenauen Berechnungen bereit. Der Aufbau und die Anordnung der bevorzugten Ausführungsform betrachten Daten für alle Multiplikationsoperationen, Verschiebeoperationen, Rechenoperationen und Logikoperationen in konsistenter Weise. Der Aufbau und die Anordnung gemäß dieser Ausführungsform haben sehr wenige Beschränkungen in Bezug auf die Anzahl der Bits, die zum Darstellen von Daten verwendet werden, und der Programmcode ist für das Bearbeiten von Datenlängen von 16 Bits bis zu Wortketten mit 512 Bits im Wesentlichen identisch. Die Programmcodes, die zum Ausführen einer Einzelwortoperation oder einer Wortkettenoperation erforderlich sind, sind im Allgemeinen identisch, und sie sind kompakt.
  • Insbesondere bietet der Hardware-Multiplizierer gemäß der bevorzugten Ausführungsform eine sehr wirksame und einfache Programmsteuerung von Multiplikationen von bis zu 256 × 256 Bits, um ein 512-Bit-Produkt bereitzustellen. Die Befehlsausführungszeit nimmt im Allgemeinen linear mit der Anzahl der Wörter zu, die sich in den Datenketten befinden, wobei nur geringe oder keine zusätzlichen Softwarekosten auftreten.
  • Die bevorzugte Ausführungsform stellt eine gepaarte 32-Wort-(16 Bits je Wort)-Akkumulatorregisterdatei (AC(0)–AC(31) aus 1) bereit, statt dass ein einzelner oder ein doppelter Akkumulator verwendet wird, wie es bei früheren Mikroprozessoren der Fall war. Zusätzlich sind in der Adressiereinheit (14 aus 1) des offenbarten Prozessors, der diese Akkumulatorregisterdatei adressiert, einzigartige Merkmale bereitgestellt.
  • Gemäß der bevorzugten Ausführungsform ist der Adressiermodus die indirekte Adressierung, d.h. ein Verfahren zum Adressieren, bei dem der Adressteil eines Befehls eine indirekte Adresse einer Speicherstelle enthält. Insbesondere verweist oder zeigt ein 2-Bit-Adresszeiger auf ein von vier 5-Bit-Adressregistern (49 in 5), so dass nur zwei reservierte indirekte Adressbits innerhalb eines Befehls erforderlich sind.
  • Zum Erweitern der Funktionsweise dieser Akkumulatorregisterdatei bewirken Schlüsselbefehle, wie Laden, Speichern, Addieren und Subtrahieren, das Vorinkrementieren oder Vordekrementieren eines entsprechenden 5-Bit-Adressregisters, wodurch die Manipulation der Adressierung von drei temporären Registern für jeden der vier Zustände eines 2-Bit-Adresszeigers ohne Zusatzaufwand bereitgestellt wird.
  • Die Akkumulatorregisterdatei ermöglicht auch die natürliche Akkumulationsspeicherung von Mehrwort-Datenketten. Das heißt, dass bis zu zweiunddreißig 16-Bit-Wörter in der Akkumulatorregisterdatei festgehalten werden können. Eine spezialisierte Adressiersteuerung (70 in 5) ist für die Datenoperation an einer Wortkette bereitgestellt, wobei ein Akkumulatoradressregister (49 in 5) auf das niedrigstwertige Wort (LSW) der Kette zeigt. Wenn ein Kettenbefehl vom Mikroprozessor ausgeführt wird, wird diese Adressreferenz kopiert und dann nachinkrementiert, um das nächste Datenwort in der Kette vorzubereiten. Auf diese Weise wird der Adressverweis auf das LSW der Kette im Akkumulatoradressregister aufrechterhalten, und dieser LSW-Adressverweis springt für anschließende Kettenoperationen, bei denen dieselbe Datenkette verwendet wird, auf den Beginn der Kette zurück.
  • Die Akkumulatorregisterdatei gewährleistet auch, dass nicht zerstörende Operationen programmiert werden können, ohne dass eine Speicherverschwendung auftritt. Dies wird durch paarweises Anordnen von Registern innerhalb der Akkumulatorregisterdatei (32 Register insgesamt mit 16 Registerpaaren) erreicht, um dadurch für jede Akkumulatoradresse einen gepaarten Zweiwortspeicher bereitzustellen. Beispielsweise werden insgesamt 32 Register und 16 Registerpaare bereitgestellt.
  • Wenn die Akkumulatorregisterdatei adressiert wird, weisen die meisten Befehle ein Register innerhalb des adressierten Registerpaars zu, so dass es als ein Ausgangsoperandenregister funktioniert, und sie weisen das andere Register innerhalb des adressierten Registerpaars zu, so dass es als ein Eingangsoperandenregister funktioniert. Diese Registerzuweisung durch den Befehl ermöglicht das Ausführen nicht zerstörender oder zerstörender Operationen sowohl an Daten mit einer einzigen Wortlänge als auch an Datenketten mit einer Länge von mehreren Wörtern, während gleichzeitig das Bereitstellen eines Zusatzaufwands von Null bedeutet, dass die Reihenfolge von Operationen in der Art einer Subtraktion kommutiert wird.
  • Ein anderer Vorteil der gepaarten 32-Wort-Akkumulatorregisterdatei gemäß dieser Ausführungsform ist die Fähigkeit zum Ausführen einer schnellen Kettentabellen-Nachschlageoperation, wobei es sich um eine Funktion handelt, die für Decodieralgorithmen, Feldmanipulationen und in Feldern angeordnete Entscheidungsbäume, wie Case-Anweisungen in der Programmiersprache C, sehr nützlich ist. Gewöhnlich machen Pipeline-Verzögerungen, die bei schnellen Mikroprozessoren auftreten, Tabellennachschlagebefehle umständlich, weil die Programm-Pipeline für jede Tabellennachschlageoperation gelöscht und dann wiederhergestellt werden muss.
  • Bei der spezialisierten Steuerung der Adressierung der Akkumulatorregisterdatei gemäß der gegenwärtig bevorzugten Ausführungsform ist es möglich, einen Tabellennachschlagevorgang an 16 verschiedenen Adressen auszuführen, wodurch eine Liste von 16 Datenwörtern durchschnittlich in einem Befehlszyklus je Wort-Nachschlagevorgang erreicht wird.
  • Gemäß der bevorzugten Ausführungsform wurde spezialisierte Hardware entwickelt, um eine Verarbeitung mit hoher Leistungsfähigkeit und erhöhter Genauigkeit bereitzustellen, während ein Prozessor mit einer festen Wortbreite verwendet wird. Diese Hardwarestrukturen werden nachstehend detailliert in diesem und den folgenden Abschnitten beschrieben.
  • Kettenbefehle verweisen in Bezug auf den Kettenlängenwert standardmäßig auf das Kettenregister. Dieser Standardwert kann überschrieben werden, indem ein Wiederholungsbefehl vorangestellt wird, der einen direkten Längenwert an den folgenden Kettenbefehl übergibt. Hierdurch wird in Bezug auf die Codewirksamkeit ein praktischer Vorteil erzielt, wenn mit zwei verschiedenen Kettenlängen in derselben Routine gearbeitet wird. Für den Standardverweisfall gibt es keinen Zusatzaufwand für das Unterstützen der Kettenlänge bei der Ausführung.
  • Die Akkumulatorregisterdatei ist erforderlich, um einen Zwischenspeicher für einen Operanden und ein Ergebnis bereitzustellen, welche beide durch eine Mehrwortkette von Datenwörtern dargestellt sind. Der Akkumulatorblock besteht tatsächlich aus zwei verschiedenen Akkumulatoren, die jeweils mehrere Register zum Speichern von Datenketten aufweisen. Diese Anordnung stellt eine wahre Dreioperandenmanipulation für manche Befehle bereit, die nur einen Taktzyklus je Wort benötigen (in Zyklen für 3 Ketten, wobei jeder n Wörter lang ist).
  • Das weiter oben in "Hintergrund und Zusammenfassung" beschriebene Konzept von Ketten ist nicht neu, und andere Prozessoren haben Mechanismen, um einen bestimmten Befehl eine vorgegebene Anzahl von Malen zu wiederholen. Ein wiederholtes Addieren mit Übertrag zusammen mit einer nachträglichen Modifikation der Datenspeicheradresse führt eine Kettenoperation wirksam aus. Die bevorzugte Ausführungsform ist umfassender und liefert einen sehr leistungsstarken Code für hochpräzise Berechnungen. Sie ist konsistent für alle Multiplikations-, Verschiebe-, Rechen- und logischen Operationen, wobei sie den korrekten Zustand für Datenbreiten von 16 Bits bis zu Ketten von 512 Bits bewahrt. Der Code für die Ausführung einer Einzeloperation oder einer Kettenoperation ist völlig gleich und kompakt. Die Hardware-Multipliziereroperation sorgt insbesondere für eine sehr effiziente und einfache Programmsteuerung von Multiplikationen von Produkten aus bis zu 256 × 256 Bits = 512 Bits. Dies bietet deutliche Vorteile gegenüber aktuellen Ausführungen, die die Kettenmultiplikation nicht angehen, weil viele keine Hardware-Multiplizierer aufweisen. Ferner verwenden viele bekannte Systeme einen unveränderlichen Hardware-Multiplizierer, um Multiplikationen mit erweiterter Präzision unter Verwendung eines "Multiplikation-in-Teilen"-Algorithmus auszuführen, der in Bezug auf den Code und die Ausführung kompliziert und ineffizient ist.
  • Wie aus 1 ersichtlich ist, umfasst ein Prozessor 10 gemäß der bevorzugten Ausführungsform eine Anzahl wichtiger Unterblöcke, einschließlich eines Programmdaten-Speicherblocks 11 und eines Daten-Speicherblocks 12. Die wichtigen Unterblöcke umfassen die oben erwähnte Recheneinheit oder CU 13 und die oben erwähnte Datenspeicher-Adressiereinheit oder DMAU 14, eine Programmzählereinheit (PCU) 15 und einen Befehlsdecodierer 16. Weitere Funktionen werden durch ein Wiederholungs- oder Ketten-Zählerregister 17, ein Zustandsregister 18, zwei Zeitgeber 19 und 20, eine Unterbrechungslogik 21 und eine Peripherie-Erweiterungsschnittstelle 22 bereitgestellt.
  • Ein 17-Bit-Datenbus (DB) 23 sorgt für eine Verbindung zwischen den funktionalen Blöcken innerhalb des Prozessors 10. Die meisten der Register in dem Prozessor 10 haben einen Lese- und Schreibzugriff auf DB 23. Die (nicht gezeigten) Bustreiber sind statische Vorrichtungen, um eine unnötige Leistungsaufnahme zu vermeiden und um für eine größtmögliche Logik-Durchlaufzeit zu sorgen. Die kleinstmögliche Befehlsperiode des Prozessors 10 beträgt bei einem vorgesehenen Prozessortakt von 10 MHz (nicht gezeigt) ungefähr 100 ns.
  • Der Datenspeicher 12 von 1 ist als eine Menge von parallelen 17-Bit-Wörtern organisiert. Die Anzahl der Wörter variiert entsprechend der Anwendung, für welche der Prozessor 10 eingesetzt wird, aber der Bereich von 256 bis 2048 Wörtern ist beispielhaft, wobei in 1 1152 Wörter angegeben sind. Jede Adresse 51, die von der DMAU 14 geliefert wird, bewirkt die Adressierung von 17 Bits Daten. Diese 17 Bits werden in Abhängigkeit von dem Befehl, der ausgeführt wird, auf verschiedene Weise verarbeitet. Bei den meisten Befehlen werden diese Daten als ein 16-Bit-Wort-Format interpretiert. Zwei Byte-Befehle, wie etwa LACB und SACB, bewirken, dass der Prozessor 10 Daten in einem 8-Bit-Wort-Format, das auch als Byteformat bezeichnet wird, liest oder schreibt. Dieser Byteformatmodus veranlasst die Prozessor-Hardware, entweder das höherwertige oder das niedrigerwertige Byte des adressierten 16-Bit-Worts zu lesen oder zu schreiben, wobei das abgerufene Byte auf dem DB 23 rechts ausgerichtet wird.
  • In einem Merkerdatenmodus verarbeitet ein Befehl nur das 17. Bit des abgerufenen Worts. Das 17. Bit wird bei allen Lesezugriffen auf den Datenspeicher 12 stets gelesen und dann in das MTAG-Bit des Zustandsregisters 18 von 1 geladen und liefert folglich die Kennzeichnung entweder für Wort- oder Bytedaten. Im Bytemodus ist zwei aufeinander folgenden Bytes die gleiche Kennzeichnung zugeordnet. Gekennzeichnete Daten werden von den Befehlen FIR, FIRK, COR und CORK verwendet, um einen Rundpuffer zu emulieren. Außerdem kann das MTAG-Bit des Zustandsregisters als eine Bedingung für Verzweigungs-/Aufruf-Befehle getestet werden oder es kann mit anderen Testbedingungen und anderen Merkern kombiniert werden, um neue Bedingungen zu erzeugen.
  • 2 zeigt die CU 13 von 1 genauer. Die CU 13 enthält einen 17-Bit × 17-Bit-Booths-Algorithmus-Multiplizierer 30 und eine 16-Bit-ALU 31.
  • Der Multiplizierer 30 wird von vier Systemregistern bedient, d.h. einem 16-Bit-Multiplikatorregister (MR) 32, einem 16-Bit-Nurschreib-Multiplikanden-Eingaberegister 33, einem 16-Bit-höherwertiges-Wort-Register (PH) 34, das die höchstwertigen 16 Bits einer 32-Bit-Multipliziererausgabe hält, einem Niedrigerwertiges-Wort-Ausgaberegister 25, das die niedrigstwertigen 16 Bits einer 32-Bit-Multiplizierer-Ausgabe enthält, und einem 4-Bit-Verschiebungswertregister (SV) 35.
  • Die 16-Bit-Ausgabe 50 der ALU 31 wird an einer 16-Bit-Position einer 32-Wort-Positionen-Akkumulatorregisterdatei 36 gespeichert. Die Akkumulatorregisterdatei 36 wird wirksam, um der ALU 31 einen 16-Bit-Operanden zu liefern (wobei dieser eine Operand eines der adressierten 32 Wörter in der Akkiumulatorregisterdatei oder im Versatz dazu ist), oder die Akkumulatorregisterdatei 36 wird wirksam, um der ALU 31 zwei 16-Bit-Operanden zu liefern (wobei diese zwei Operanden das adressierte Akkumulatorregisterdatei-Wort und sein Versatz sind).
  • Der Multiplizierer 30 führt eine 17-Bit × 17-Bit-Zweierkomplement-Multiplikation in einem einzigen Befehlszyklus des Prozessors 10 aus. Einer oder beide von dem Multiplikator und dem Multiplikanden können zwangsweise das 17. Bit auf einen positiven Wert gesetzt haben (d.h. ein vorzeichenbehafteter Operand), oder einer oder beide dieser Operanden kann bzw. können zwangsweise ein 17. Bit haben, dass einen Binärwert aufweist, der gleich dem Binärwert des 16. Bits ist (d.h. ein vorzeichenloser Operand).
  • Die niedrigstwertigen 16 Bits des resultierenden 32-Bit-Produkts werden während desselben Befehlszyklus zur ALU 31 multiplexiert, und dieses 16-Bit-Produkt wird in ein Wortregister AC(0)–AC(31), das sich in der Akkumulatorregisterdatei 36 befindet, geladen oder mit diesem arithmetisch kombiniert. Die höchstwertigen 16 Bits des 32-Bit-Produkts werden am Ende des Befehlszyklus in PH 34 zwischengespeichert.
  • Für Barrelshift-Befehle ist der Multiplikator ein 4-bis-l6-Bit-decodierter Wert, der das 4-Bit-SV 35 als Eingabe verwendet. Beispielsweise führt ein hexadezimaler Wert von 7H in dem 4-Bit-SV 35 zu dem binären Multiplikator 0000 0000 1000 0000, bewirkt folglich eine Linksverschiebung um 7 Bits zwischen dem 16-Bit-Multiplikanden und dem 32-Bit-Produkt.
  • Alle drei Register PH 34, MR 32 und SV 35 können vom Datenspeicher 12 der 1 geladen werden, und der Inhalt dieser Register kann im Speicher 12 gespeichert werden. Außerdem können zwischen einem Register AC(0)–AC(31) der Akkumulatorregisterdatei 36 und PH 34 Daten direkt ausgetauscht werden. Sowohl lange als auch kurze Konstanten können aus dem Programmspeicher 11 direkt in MR 32 geladen werden. Ein Wert eines Multiplikanden wird von dem DB 23 in einem Nurschreib-Multiplikanden-Register 33 zwischengespeichert, wobei dieser Multiplikandenwert weder gelesen noch in einen Speicher oder in Systemregister übertragen werden kann.
  • Die ALU 31 von 2 ist insofern das Kernstück der CU 13, als die ALU 31 der Ort in der CU 13 ist, an dem Daten arithmetisch addiert, subtrahiert oder verglichen werden. Außerdem können in der ALU 31 logische Operationen an Daten vorgenommen werden. Die Wortlänge der ALU 31 beträgt 16 Bits. Die meisten Arithmetik-/Logik-Befehle können jedoch auch eine Wortkette verarbeiten, die eine Anzahl von 16-Bit-Wörtern umfasst. Die Akkumulatorregisterdatei 36, die 32 16-Bit-Speicherregister AC(0)–AC(31) umfasst, verbessert die Leistungsfähigkeit der ALU 31 hinsichtlich einer minimalen Ausführungszeit und eines minimalen Programmsteuercodes.
  • Die ALU 31 hat zwei Eingänge 37, 38, die in 2 mit A und B bezeichnet sind. Der Eingang 37, A enthält einen ersten Multiplexer 39, während der Eingang 38, B einen zweiten Multiplexer 40 enthält.
  • Der Multiplexer 39 wählt eine von fünf Eingaben aus, d.h. er wählt zwischen einer Eingabe "alles Nullen" 41, einer Eingabe 42, die von PH 34 geliefert wird, einer Eingabe 43, die von DB 23 geliefert wird, einer Eingabe 44, die vom PL-Ausgang 25 des Multiplizierers 30 geliefert wird, oder einer Eingabe 45, die von dem Versatz-Ausgang 46 oder AA der Akkumulatorregisterdatei 36 geliefert wird, aus. Der Multiplexer 40 wählt zwischen der Eingabe "alles Nullen" 41 oder der Ausgabe AA 46, die von der Akkumulatorregisterdatei 36 geliefert wird, aus. Die Eingabe "alles Nullen" 41 ist für Transfer- und Unitaritätsoperationen erforderlich und dient außerdem als Standardwert, um die Leistungsaufnahme zu minimieren.
  • Die DB 23-Eingabe 43 in den Multiplexer 39 wird verwendet, um Speicherwerte aus dem Daten-RAM 12 und konstante Werte, wie etwa Programmspeicher-Operanden, an die ALU 31 zu übertragen. Die PH 34-Eingabe 42 und die PL 25-Eingabe 44 in den Multiplexer 39 dienen Multiplikations-Akkumulationsoperationen der ALU 31.
  • Die Akkumulatorregisterdatei 36 weist zwei Ausgänge 46, 47 auf, die in 2 auch mit AA und AB bezeichnet sind. Diese zwei Ausgänge 46, AA und 47, AB sind an die ALU 31 angeschlossen, um der ALU 31 einen Akkumulatorverweis und einen Versatz-Akkumulatorverweis zu liefern.
  • Von der ALU 31 unterstützte Operationen schließen die Arithmetikoperationen Addition, Subtraktion und Laden (zu null addieren), logische Operationen wie etwa UND, ODER, exklusives ODER, NICHT, Linksverschiebung, Rechtsverschiebung und Vergleichsoperationen, die einen Vergleich mit einer Konstanten oder mit Speicherwerten liefern, ein, wobei die Werte, die in der Akkumulatorregisterdatei 36 sind, nicht vernichtet werden.
  • Die Akkumulatorregisterdatei 36 besteht aus 32 Registern, die mit AC(0) bis AC(31) bezeichnet sind, wobei jedes Register ein 16-Bit-Register ist. Vier mit ACP(0) bis ACP(3) bezeichnete 5-Bit-Zeigerregister 49 sind für die Speicherung von Adresszeigern für die Akkumulatorregisterdatei 36 vorgesehen. Der gespeicherte Inhalt jedes ACP-Zeigerregisters 49 wird als ein direkter Verweis auf oder eine direkte Adresse eines der sechzehn AC-Register AC(0) bis AC(15) oder als ein indirekter Verweis auf eines der Versatz-AC-Register AC(16)–AC(31), das einen direkten Verweis hat, der um 16 versetzt ist, verwendet. Das heißt, das Register AC(0) hat ein versetztes Register bei der Adresse 16, der Versatz des Registers AC(1) ergibt die Registeradresse 17 usw. Da der Registerblock, der die Register AC(0) bis AC(31) enthält, zirkular ist, d.h. das Inkrementieren der Adresse 31 zur Adresse 32 die Adresse-0 ergibt, ergibt der Versatz der Register 16–31 jeweils die Register 0–15.
  • In Abhängigkeit vom Programmbefehl wird einer oder werden beide der Ausgänge 46, AA und 47, BB der Akkumulatorregisterdatei 36 verwendet. Einige Befehle beziehen sich nur auf den Ausgang 46, AA und können den Versatz-Ausgang 47, AB, der gleichzeitig mit dem Ausgang 46, AA abgerufen wird, nicht verwenden oder modifizieren. Andere Befehle bieten ein Auswahlfeld in dem Befehlswort, wofür ein Beispiel das Operationscode-Bit "oa" ist. Diese letzteren Befehle können die Spaltenadressierungsrichtung und folglich die Quelle oder die Reihenfolge der Ausgabe- und der Versatz-Ausgaberegister austauschen. Außerdem können einige Befehle steuern, dass die ALU-Ausgabe 50 entweder in ein Akkumulatorregister AC(0)–AC(15) oder in ihr Versatz-Akkumulatorregister AC(16)–AC(31) geschrieben wird.
  • Die Akkumulatorregisterdatei 36 sorgt für einen Arbeitsbereich, der die Notwendigkeit von vielen Zwischenspeicher-Ladeoperationen und – Speicheroperationen beseitigt. Außerdem enthält der Befehlssatz für den Prozessor 10 ein 2-Bit-Feld oder einen Bitschalter für alle Akkumulatorregisterdatei-Verweisbefehle, so dass ein direkter Verweis auf eines der vier Zeigerregister 49 erfolgen kann, wodurch die Speicherüberlastung, die häufig bei Ausführungen mit einem einzigen Akkumulatorregister auftritt, beseitigt wird.
  • Eine Adresse einer Akkumulatorregisterdatei 36 ist in einem der vier ACP-Zeigerregister 49 gespeichert, und ein direkter Verweis auf ein Zeigerregister ACP(0)–ACP(3) erfolgt in dem 2-Bit-"ap"-Feld aller auf den Akkumulator bezogenen Befehle. SAPn-Befehle speichern die Inhalte der ACP(n)-Register in den Speicher 12, wohingegen LAPn-Befehle aus dem Speicher 12 in das ACP(n)-Register laden. Ein AKACP-Befehl bzw. ein LKACP-Befehl addiert bzw. lädt 5-Bit-Konstanten zu dem aktuellen ACP-Wert.
  • Die ACP-Register 49 werden von einem 5-Bit-Prozessor (80 in 5) bedient, der für eine effiziente Aufeinanderfolge der Akkumulatoradressen bei sich wiederholenden Operationen sorgt, die mit langen Datenketten verbunden sind oder die mit Umadressierungsoperationen auf einer Liste von Daten verbunden sind. Zur Verarbeitung einer Mehrwort-Datenkette wird eine Adresse aus einem ACP-Register 49 kopiert, um das niedrigstwertige Wort in der Kette abzurufen. Diese kopierte Adresse wird dann wiederholt inkrementiert, um die übrigen Wörter in der Kette abzurufen. Dadurch wird die in diesem besonderen ACP-Register 49 gespeicherte Adresse unverändert gelassen, wobei der Wert in diesem ACP-Register noch immer auf den Ort des niedrigstwertigen Worts der Wortkette zeigt. Folglich ist dieses ACP-Register für eine Folgeoperation an dieser Wortkette bereit.
  • Der Prozessor 10 kann einen Wert in einem ACP-Register 49 um den Wert +1 oder um den Wert –1 vorweg ändern, bevor das ACP-Register bei einem Befehl mit Bezug auf einen Akkumulator durch die Akkumulatorregisterdatei 36 verwendet wird. Dies minimiert den Software-Aufwand bei der Handhabung einer Adresse der Akkumulatorregisterdatei 36, beispielsweise durch Vermeiden einer Software-Überlappungswirkung, die nachträgliche Änderungen verursacht.
  • 3 zeigt eine DMAU 14, die wirksam wird, um eine Adresse 51 an den Datenspeicher 12 zu liefern. Die DMAU 14 enthält eine zugeordnete ALU 52, die Additions-, Subtraktions- und Vergleichsfunktionen ausführt, drei spezielle Adressregister 53 (R5 INDEX), 54 (R6 SEITE) und 55 (R7 PGSTK) sowie fünf universelle Register 5660 (R0 bis R4). Die DMAU 14 erzeugt eine Adresse 51 parallel zur CU 13, wodurch für einen hohen Prozessor-Durchsatz gesorgt wird.
  • Die DMAU 14 kann den Datenspeicher 12 mittels fünf Adressierungsmodi adressieren, d.h. mittels eines direkten Adressierungsmodus, eines indirekten Adressierungsmodus, wobei eine nachträgliche Modifikation möglich ist, und dreier relativer Adressierungsmodi. Die drei relativen Modi sind (1) unmittelbarkurz mit Bezug auf R6-SEITE (R6-SEITE + 7-Bit (128 Bytes oder 64 Wörter)), (2) RS-INDEX mit Bezug auf die Registerbasis (indirektes Register + RS-INDEX), und (3) lang-zwischenstehend mit Bezug auf die Registerbasis (indirektes Register + 16-Bit Versatz).
  • Bei der Ausführung von Wortketten-Befehlen wird bei allen Adressierungsmodi mit Ausnahme der indirekten mit nachträglicher Modifikation eine temporäre Kopie der Adresse 51 verwendet, um das niedrigstwertige Wort der Wortkette abzurufen. Über der nächsten Sequenz der Befehlszyklen wird diese temporäre Adressenkopie selbsttätig inkrementiert, um die übrigen Wörter in der Wortkette abzurufen. Da diese sequenzielle Erhöhung der Adresse 51 temporär ist, bleiben alle Register 5560 unverändert und verweisen weiterhin auf das niedrigstwertige Wort im Speicher 12.
  • Kettenabrufe, die den indirekten Adressierungsmodus mit nachträglicher Modifikation verwenden, werden wirksam, um die modifizierte Adresse 51 für jeden Prozessorzyklus, an dem die Wortkette beteiligt ist, in ein indirektes Register zurückzuschreiben. Dies hat zur Folge, dass die Adresse in dem indirekten Register auf das Datenwort zeigt, dessen Adresse eins über dem höchstwertigen Wort in der Wortkette ist.
  • 4 zeigt die PCU 15, die wirksam wird, um die Adresse 61 für den Programmspeicher 11 von 1 zu erzeugen. Es ist eine 16-Bit-ALU 62 vorgesehen, um die Adressen 61 des ROMs 11 zu inkrementieren und zu laden.
  • Zwei Adressregister 63, PC und 64, DP werden wirksam, um die ROM-Programm-Adresse 61 in PC 63 zu speichern und eine Datenzeigeradresse in DP 64 zu speichern.
  • Der Inhalt von PC 63 wird bei Abrufen und Unterbrechungen in den Programmzähler-Stapel gerettet. Ein Programmzähler-Stapel umfasst ein (nicht gezeigtes) Hardware-Register, das sich am oberen Ende des Stapels befindet, gefolgt von einem Software-Stapel, der durch den Datenspeicher 12 geliefert wird, wobei das Register R7-PCSTK von 3 in dem indirekten Modus als Stapelzeiger verwendet wird. Folglich wird ein tiefer Stapel, der softwaremäßig definiert ist, mit geringem Ausführungsaufwand geschaffen.
  • Der Inhalt von DP 64 wird bei Nachschlagetabellen-Befehlen wie etwa LUAA und LUAM aus der Akkumulatorregisterdatei 36 geladen und beim Abruf von langkettigen Konstanten von PB 24 über DB 23 geladen. Der Inhalt von DP 64 kann in den Datenspeicher 12 gespeichert werden. In der PCU 15 ist eine Programmerfassungslogik 66 enthalten, um die Programmadressbereiche zu erfassen, die vor einem externen Zugriff geschützt werden sollen.
  • 5 ist im Großen und Ganzen 2 ähnlich, zeigt jedoch eine Datenkettenverarbeitung. Die Verarbeitung von Datenketten, d.h. die Verarbeitung von Daten als Liste oder Folge einer Anzahl von 16-Bit-Wörtern, ist eine wertvolle Gebrauchseignung des Mikroprozessors mit einem Aufbau und einer Anordnung wie weiter oben anhand 1 bis 4 beschrieben. Die Kettenverarbeitung von Daten umfasst alle arithmetischen Befehle, logische Befehle und Transferanweisungen. Kettenbefehle wirken auf eine Kette mit dem niedrigstwertigen Wort der Kette beginnend und mit dem höchstwertigen Wort der Kette endend ein. Siehe beispielsweise die Akkumulatorregisterdatei 36 von 5, wo von einer Kette mit 9 Wörtern ihr niedrigstwertiges Wort im Register AC(3) gespeichert ist, während ihr höchstwertiges Wort im Register AC(11) gespeichert ist.
  • Bis zu drei Operanden sind an Datenkettenoperationen beteiligt, beispielsweise zwei Eingangsoperanden und ein Ausgangsoperand. Der Prozessor 10 aus den 1 bis 4 ist in der Lage, drei verschiedene Speicherorte für jeden dieser drei Operanden zu adressieren.
  • Beispielsweise kann ein Multiplikand 72 unter Verwendung der DMAU 14 und ihrer ALU 81, um eine Adresse oder Zeigersteuerung 51 zu liefern, im Datenspeicher 12 adressiert werden. Der zweite eingehende Operand oder zweite Summand und der Ausgangsoperand von der ALU 31 können durch die in 5 gezeigte Akkumulatorzeigereinheit 70 und ihre ALU 80, die eine indirekte Adressierung verwendet und Zeiger-ACP-Register 49 enthält, adressiert werden. Der zweite eingehende Operand und der Ausgangsoperand können durch ACP 70 als Paar adressiert werden, d.h. als ein Akkumulatorregister AC(0)–AC(15) und sein gepaarter Versatz-Akkumulator AC(16)–AC(31), siehe beispielsweise das Registerpaar AC(13) und AC(29) von 5.
  • Die Kettenregisterzähler 17 von 1 werden genutzt, um die Länge einer Kette von 16-Bit-Wörtern als eine ganze Zahl zu speichern und zu steuern. Für Kettenbefehle oder -operationen inkrementieren DMAU 14 von 1 und ACP 70 von 5 selbsttätig die Kettenadressen für den Datenspeicher 12 und für die Akkumulatorregisterdatei 36, jeweils mit dem niedrigstwertigen Wort beginnend, um dadurch alle Wörter oder Werte, welche die zwei Wortketten enthalten, die im Speicher 12 und im Akkumulator 36 enthalten sind, sequenziell zu lesen. Kettenbefehle, die eine Kette mit N Wörtern verarbeiten, erfordern das Hinzufügen eines zusätzlichen Zykluszählers zu der Programmsequenz, um das N + 1-te Wort, das den Produkt-Austrag des Hardware-Multiplizierers 30 umfasst, zu akkumulieren oder zu übergeben.
  • Die ALU 31 und der Multiplizierer 30, die in 1, 2 und 5 gezeigt sind, sorgen für eine Steuerung, um die Verarbeitung der 16-Bit-Wort-Ketten anzupassen. Die ALU 31 schickt selbsttätig einen ausgehenden Übertrag ihrer 16. Stufe aus und benutzt ihn dann im nächsten Prozessorzyklus für die nächste signifikante Kettenwortoperation als eingehenden Übertrag in die ALU 31.
  • Außerdem wird eine "GLEICH-ZU"-Zustandsbedingung festgehalten und zu der nächsten signifikanten Wortoperation geschickt, um mit dem nächsten Wortzustand UND-verknüpft zu werden. Der Endzustand des Vorzeichenüberlaufs wird nicht eher festgehalten, als bis das letzte oder höchstwertige Wort verarbeitet ist.
  • Der Hardware-Multiplizierer 30 weist einen Anschluss 71 für ein anfängliches Teilprodukt auf. Zu Beginn jeder Multiplikationsoperation wird der Eingang 71 auf Null gesetzt. Bei dem zweiten bis N-ten Zyklus werden jedoch die höchstwertigen 16 Bits der letzten Wortmultiplikation zum Anschluss 71 geleitet. Dies ermöglicht ohne Software-Aufwand, dass N × 1-Wortmultiplikationen ein N + 1-Wortprodukt in N + 1 Befehlszyklen erzeugen.
  • Es wird nun ein Beispiel für die Funktionsweise der bevorzugten Ausführungsform anhand der mathematischen Operation (A)·(B) + (C) gegeben, wobei sich auf 5 bezogen wird. Bei dieser Operation umfasst der Term (B) einen 8-Wort-Ketten-Multiplikanden (128 Bits), der mit dem Term (A), einem 1-Wort-Multiplikator (16 Bit) multipliziert wird, wobei das sich ergebende Produkt (A)·(B) einem Term (C), einem Summanden, hinzugefügt wird, der eine 9-Wort-Kette (144 Bits) umfasst.
  • Gemäß der bevorzugten Ausführungsform sind die drei Datenterme (A), (B) und (C) in 5 folgendermaßen gespeichert: Der 8 Wörter umfassende Term (B), der Multiplikand, ist im Datenspeicher 12 gespeichert, wobei sein niedrigstwertiges Wort an der Speicheradresse MCND ist und sein höchstwertiges Wort an der Speicheradresse MCND + 7 ist, (2) der 9 Wörter umfassende Term (C), der Summand, ist in der Akkumulatorregisterdatei 36 in den Registern AC(03) bis AC(11) gespeichert, wobei auf die Adresse 03 seines niedrigstwertigen Worts durch den Inhalt von ACP(2) indirekt gezeigt wird, und (3) der ein Wort umfassende Term (A), der Multiplikator, ist im Multiplikatorregister 32 gespeichert. Außerdem wird in den Kettenregister 17 von 1 für den 8 Wörter umfassenden Term (B), den Multiplikanden, eine Kettenlänge von 8 gesetzt.
  • Die Befehlsmnemonik für diese mathematische Operation ist MPAL.A2S.MCND, worin zwei Wörter zum Codieren, ein Wort Operationscode und außerdem ein 1-Wort-MCND-Verweis enthalten sind.
  • Der Abschnitt MCND dieses Befehls spezifiziert, dass der Speicher 12 mit einem Multiplikatorregister 32 zu multiplizieren ist und dass das Produkt davon zu einem Wert zu addieren ist, auf den durch das Register ACP(2) gezeigt wird. Der Abschnitt A2S des Befehls gibt den Kettenbetriebszustand der Operation an und spezifiziert, dass das Register der Akkumulatorregisterdatei 36, auf das durch die Adresse gezeigt wird, die in dem Zeigerregister ACP(2) gespeichert ist, benutzt werden soll, um den 9 Wörter umfassenden Term (C), den Summanden, zu speichern und das Endergebnis der Operation (A)·(B) + (C) zu speichern. Der Abschnitt MCND des Befehls spezifiziert einen direkten Speicherverweis (Speicher 12) auf das niedrigstwertige Wort der 8-Wort-Kette des Terms (B).
  • Die Ausführung des oben angegebenen mnemonischen Codes findet in 9 Befehlszyklen statt, wobei ein zusätzlicher Zyklus für Multiplikations- oder Barrelshift-Operationen aktiv ist, um von einer N-Wort-Eingabekette eine N + 1-Wort-Ausgabekette zu erzeugen. Für Additionen, Transferoperationen und logische Operationen sind nur 8 Befehlszyklen erforderlich, um eine 8-Wort-Kette zu verarbeiten.
  • Wenn der Term (A), der Multiplikator, als MPR bestimmt wird, wenn der Term (B), der Multiplikand, als M7–M0 bestimmt wird, wobei sein höchstwertiges Wort M7 im Datenspeicher 12 an der Adresse MCND + 7 gespeichert ist, und wenn der Term (C), der Summand, als A8 – A0 bestimmt wird, wobei sein höchstwertiges Wort A8 in der Akkumulatorregisterdatei 36 unter der Adresse 11 gespeichert ist, dann kann die Ausführung dieser 9 Befehlszyklen dargestellt werden als: MPR × M7::M6::M5::M4::M3::M2::M1::M0 = P8::P7:: --- P1::P0, A8 – A0 = (P8 – P0) + (A8 + A0)
  • Die Aspekte des Aufbaus und der Anordnung, die in 5 gezeigt sind und Kettenoperationen des oben angegebenen Typs unterstützen, berücksichtigen, dass (1) der Akkumulator, der die Register AC(0–15) der Akkumulatorregisterdatei 36 umfasst, eine Dualport-Lese/Schreib-Konstruktion mit einem verzögerten Zeigerverweis ist, um der Befehlszyklusverzögerung durch die ALU 80 Rechnung zu tragen, (2) die Akkumulatorregister AC(0–15) und ihre entsprechenden Versatz-Akkumulatorregister AC(16–31) die Adressierung von zwei Operanden mit einem einzigen Zeigerregister ACP(0)–ACP(3) ermöglichen, wobei ein Akkumulatorregister und sein Versatzregister als Eingaberegister oder als Ausgaberegister oder sowohl als Eingaberegister und Ausgaberegister für die ALU-Operanden genutzt werden kann, und (3) das selbsttätige Inkrementieren der Zeigerregister ACP(0)–ACP(3), um nacheinander die Wörter einer Kette zu lesen, ein temporärer Vorgang ist, der die ACP-Register für einen korrekten zukünftigen Verweis auf das niedrigstwertige Wort der Kette bei zukünftigen Kettenoperationen unverändert lässt.
  • Die Fähigkeit der vorliegenden Ausführungsform, eine Kette mit einem erweiterten Vorzeichenwort zu erweitern, ermöglicht die softwaremäßige Implementierung sehr leistungsstarker N-Wort-Ketten × M-Wort-Ketten-Multiplikationen. Die Programmierung, die erforderlich ist, um diese neuartige Hardware und Architektur vorteilhaft zu nutzen, ist angesichts der obigen Offenlegung im Rahmen der Fähigkeiten eines Fachmanns auf dem Gebiet.
  • Die derzeit bevorzugte Ausführungsform entspricht dem MSP58P70 von Texas Instruments, Inc. Der MSP58P70 verfügt über einen leistungsstarken Befehlssatz. Die Befehle können ein Bit, ein Byte, ein Wort, oder eine Kette von Wörtern oder Bytes einzeln adressieren. Der Programmspeicher ist 17 Bit breit, wobei die gesamte 17-Bit-Breite für die Befehlssatzcodierung genutzt wird. Programme werden von einem internen Programmspeicher aus ausgeführt. Eine Ausführung aus einem externen Speicher heraus ist nicht möglicht. Sowohl der Programmspeicher als auch der Datenspeicher des MSP58P70 sind auf interne Blöcke beschränkt und können nicht extern erweitert werden. In der derzeit bevorzugten Ausführungsform ist der Programmspeicher einmalig programmierbarer (OTP-) ROM und auf 32 K 17-Bit-Wörter beschränkt, wovon 2 K für einen internen Testcode reserviert sind und nicht für Anwenderprogramme zugänglich sind. Außerdem ist der Datenspeicher in der bevorzugten Ausführungsform statischer RAM, der auf 1024 17-Bit-Wörter beschränkt ist, wovon 16 Bits ein arithmetischer Wert sind, während das 17. Bit als Merker oder Kennzeichnung verwendet wird.
  • Die folgende Befehlssatzbeschreibung ist aufgenommen, um zu erläutern, wie Befehle gemäß der gegenwärtig bevorzugten Ausführungsform im MSP58P70 codiert werden. Die Struktur dieser als Beispiel dienenden Befehle nutzt die beanspruchten Merkmale der bevorzugten Ausführungsformen aus, es liegt jedoch natürlich innerhalb der Fähigkeiten eines Durchschnittsfachmanns, andere Befehlssätze zu entwickeln, die die beanspruchten Merkmale ausnutzen.
  • Der Befehlssatz auf der Maschinenebene beim bevorzugten Prozessor ist in eine Anzahl von Klassen unterteilt. Die Klassen sind in erster Linie in dem Speicher zugeordnete Feldverweise, Hardware-Register und Steuerfelder unterteilt. Die folgenden Beschreibungen geben Klassencodier-Bitzuweisungen, den OP-Codewert innerhalb einer Klasse und abgekürzte Feldbeschreibungen an. Die folgende Tabelle definiert diese Feldabkürzungen:
    Figure 00250001
  • Speicher-/Akkumulatorverweisbefehle (Klasse I.)
  • Diese Befehlsklasse steuert die Ausführung zwischen dem Datenspeicher und dem Akkumulatorblock. Zusätzlich zum expliziten Operationscodefeld, das eine arithmetische Operation spezifiziert, steuert ein Acht-Bit-Speicherverweisfeld die Adressierung eines Eingangsoperanden, eines 4-Bit-Felds (Klasse 1a) oder eines 2-Bit-Felds (Klasse 1b) und wählt eine Akkumulatorstelle als den anderen Eingangsoperanden aus. Die Ergebnisse werden an die adressierte Akkumulatorstelle geschrieben (oder an den Versatz-Akkumulator, falls die Klasse 1a ist und acx-Bit = 1 ist). Zusätzlich kann jeder Befehl als eine Operation mit der Länge eines einzigen Worts oder als eine Kette behandelt werden, was von der Kettensteuerung abhängt, die in den Operationscode codiert ist (das s-Bit ist in die Klasse 1b eingesetzt, und das acc-Feld = 10 ist in die Klasse 1a eingesetzt).
  • Die Klasse 1a stellt die grundlegenden vier Befehle Laden, Speichern, Addieren und Subtrahieren zwischen dem Akkumulator und Speicherblöcken bereit. Entweder der Akkumulator oder der Versatz-Akkumulator (vom acx-Bit abhängig) kann mit dem SAC-Befehl gespeichert werden. Der LAC-Befehl kann, abhängig vom acx-Bit, entweder den Akkumulator oder den Versatz-Akkumulator laden. Der ADD- oder der SUB-Befehl addiert oder subtrahiert Speicher vom adressierten Akkumulatorregister und speichert die Ergebnisse entweder in das adressierte Akkumulatorregister (acx = 0) oder in das Versatz-Akkumulatorregister (acx = 1) zurück. Zwei der vier vom acc-Feld bereitgestellten Codes bewirken eine Vorinkrementierung oder Vordekrementierung des Akkumulatorregisterzeigers (ACP) vor der Ausführung. Diese Vorinkrementierung ist eine permanente Änderung des ACP, auf den verwiesen wird, und es wird dadurch die Verwendung des Akkumulatorblocks als ein effizienter Arbeitsplatz noch erweitert. Die Vorinkrementierung und die Vordekrementierung können nicht in Kombination mit dem Kettenmodus verwendet werden.
  • Einer der vier Codes des acc-Felds (acc = 11) bewirkt, dass der Befehl als ein Mehrzyklus-Kettenbefehl behandelt wird. Dies führt zu keiner permanenten Modifikation des ACP, worauf verwiesen wird. Es sei auf die Erörterung der Kettenoperation in Abschnitt 2.2.1 verwiesen.
  • Weil es bei Befehlen der Klasse 1b keinen Verweis auf den Versatz-Akkumulator gibt, sind die Ausführungsoperanden nur der Speicher und das Akkumulatorregister.
  • Alle anderen Steuermodi (Ketten-, Vorinkrementierung/Vordekrementierung- ACP-, Speicheradressierungsmodi usw.) sind für logische, Byte-, Multiplizier/Akkumulier- und Barrel-Shift-Befehle vorgesehen.
  • Beschreibung der Befehle der Klasse 1a – Akkumulator/Speicher
    Figure 00270001
  • Figure 00280001
  • Befehl der Klasse 1b – Akkumulator/Speicher
    Figure 00280002
  • Figure 00290001
  • Figure 00300001
  • Verweis auf Akkumulator/Konstanten (Klasse 2)
  • Diese Befehle bieten die Möglichkeit zum Verweisen auf im Programmspeicher gespeicherte kurze (8 Bits) oder lange (16 Bits oder n × 16-Bitkette) Konstanten und zum Ausführen arithmetischer und logischer Operationen zwischen Akkumulatorinhalten und diesen Konstanten. Weil RONCO ein Harvard-Prozessor ist, sind diese Befehle notwendig und von der allgemeinen Klasse der Speicherverweisbefehle verschieden. Die nachstehend angeführte Unterklasse 2a weist Verweise zwischen dem Akkumulator und kurzen 8-Bit-Konstanten auf. Diese Klasse hat den Vorteil, dass nur ein Befehlswort zum Codieren und ein Befehlszyklus zum Ausführen erforderlich sind, und sie ist besonders nützlich für das Steuern von Variablen, wie Schleifenzählern, Indizes usw. Die kurzen Konstanten bieten auch eine vollständige Fähigkeit für Byteoperationen in einem einzelnen Befehlswort.
  • Die Unterklasse 2b verweist auf den Akkumulator und auf lange Konstanten aus dem ROM (16 Bits für Nicht-Kettenkonstanten und n·16 Bits für Kettenkonstanten). Ein Befehl der Klasse 2b erfordert 2 Befehlswörter für das Codieren. Die Ausführung dieses Befehls besteht aus 2 Befehlszyklen, wenn die lange Konstante ein einzelnes Wort ist, und aus 2 + n Ausführungszyklen für n-Wort-Kettenkonstanten. Ein Hauptunterschied zwischen langen Konstanten (16 Bits) und langen Kettenkonstanten (n·16 Bits) besteht in dem Verweis, der auf die Konstanten im zweiten Wort des Zweiwort-Befehlsworts gemacht wird. Der Verweis auf einzelne 16-Bit-Ganzzahlkonstanten ist unmittelbar, d.h. der eigentliche Konstantenwert folgt dem Operationscode des ersten Worts im Speicher. Für Kettenkonstanten ist der zweite Wortverweis auf die Konstanten unmittelbar indirekt, was darauf hinweist, dass das zweite Wort die Adresse des niedrigstwertigen Worts der Kettenkonstante ist. Diese Definition ermöglicht es, dass alle langen Kettenkonstanten in einer Tabelle angeordnet werden, und sie ermöglicht es, dass der Verweis in der Maschinensprachenliste mit jenen kürzerer Konstanten konsistent ist.
  • Befehlsdefinitionen der Klasse 2a – kurze Konstanten
    Figure 00320001
  • Figure 00330001
  • Befehlsdefinitionen der Klasse 2b – lange Konstanten
    Figure 00330002
  • Figure 00340001
  • Akkumulatorreferenz (Klasse 3.)
  • Diese Befehle verweisen auf den Akkumulator und in manchen Fällen auf spezifische Register für Übertragungen. Manche Befehle verwenden einen einzigen Akkumulatoroperanden, und andere verwenden sowohl den Akkumulator als auch den Versatz-Akkumulator zum Ausführen von Operationen zwischen zwei Akkumulatorwerten. Das "oa"-Bit im Befehlswort kehrt den Sinn des adressierten Akkumulators und des adressierten Versatz-Akkumulators um. Falls oa = 1 ist, verwendet der Befehl im Allgemeinen den Versatz-Akkumulator als den Eingangsoperanden bei einzelnen Akkumulator-Operandenbefehlen und tauscht die arithmetische Reihenfolge (Subtrahieren, Vergleichen, Multiplizieren/Akkumulieren usw.) der beiden Operanden aus, wenn beide verwendet werden. Ausnahmen zu der Regel sind die Befehle NEG, NOT, MPACsL, MPACaL, BSACtL, MPACtL, BSACsL und BSACaL, welche die umgekehrte oa-Steuerung verwenden (oa = 1 → Akkumulator, oa = 0 → Versatz-Akkumulator). Das acx-Bit in dem Befehlswort legt fest, ob das Ziel des Ergebnisses der Akkumulator (acx = 0) oder der Versatz-Akkumulator (acx = 1) ist.
  • Zusätzlich zu grundlegenden Akkumulator-Rechenfunktionen beinhaltet diese Klasse auch einen Akkumulator-Nachschlagebefehl und mehrere Registerübertragungsbefehle zwischen dem Akkumulator und dem MR-, SV- oder PH-Register.
  • Wie bei allen Befehlen, auf die der Akkumulator verweist, sind eine Kettenoperation sowie eine Vormodifikation von einem von 4 Akkumulator-Zeigerregistern (ACP), auf die indirekt verwiesen wird, möglich.
  • Befehlsdefinitionen der Klasse 3 – Akkumulatorreferenz
    Figure 00350001
  • Figure 00360001
  • Figure 00370001
  • Figure 00380001
  • Figure 00390001
  • Figure 00400001
  • Diese Befehle weisen eine spezielle 1-Wort-Kettenoperation auf, wenn der Kettenmodus gewählt ist. Die Befehle ignorieren den Kettenzählwert, und sie werden nur einmal ausgeführt, sie behalten jedoch den Übertrag und den Vergleich mit der Nulloperation der vorhergehenden Rechenoperation bei, als ob die Ausführungssequenz des vorhergehenden Kettenbefehls und dieses Befehls ein Teil einer größeren Kettenoperation wäre.
  • Adressregister-/Speicherreferenz (Klasse 4)
  • Befehle der Klasse 4 werden an der Registerdatei ausgeführt, die in der Adresseneinheit (ADU) vorhanden ist. Wenngleich die letzten drei Register (R5-R7) eine spezielle Verwendung haben (INDEX, SEITE und PCSTK), gelten die Befehle der Klasse 4 gleichermaßen für alle Register. Die erste Unterklasse 4a stellt Übertragungen in den Speicher und aus dem Speicher bereit. Im indirekten Modus des Speicheradressenverweises kann jedes Hilfsregister als Adresse für das Laden und Speichern des Inhalts eines anderen dienen.
  • Befehle der Unterklasse 4b stellen einige grundlegende Rechenoperationen zwischen Hilfsregistern, auf die verwiesen wird, und kurzen 8-Bit-Konstanten aus dem Programmspeicher bereit. Diese Befehle sind aufgenommen, um wirksame Einzelzyklusbefehle für Schleifensteuerungs- und Softwareadressierungsroutinen bereitzustellen.
  • Die Unterklasse 4c stellt grundlegende Rechenoperationen zwischen Hilfsregistern, auf die verwiesen wird, und 16-Bit-Konstanten aus dem Programmspeicher bereit. Diese Befehle benötigen 2 Befehlszyklen für die Ausführung.
  • Es ist auch ein Vergleich mit dem INDEX für eine wirksame Schleifensteuerung bereitgestellt, wobei der endgültige Schleifenzählerwert nicht als null gewählt wird.
  • Befehlsdefinitionen der Klasse 4a – Rx/Speicher
    Figure 00410001
  • Befehlsdefinitionen der Klasse 4b – Rx/kurze Konstanten
    Figure 00420001
  • Befehlsdefinitionen der Klasse 4c – Rx/lange Konstante, verschiedenes
    Figure 00420002
  • Figure 00430001
  • Befehlsdefinitionen der Klasse 4d – Rx/lange Konstante, verschiedenes
    Figure 00430002
  • Speicherverweisbefehle (Klasse 5)
  • Befehle der Klasse 5 ermöglichen eine Übertragung in den Datenspeicher und alle Register (mit Ausnahme des Akkumulators und von Rx, welche von den Klassen 1 und 4 bereitgestellt werden) und aus diesen. Die Register, auf die sowohl für Lese- als auch für Schreiboperationen verwiesen wird, sind das Multiplikatorregister (MR), das höherwertige Produktregister (PH), das Verschiebungswertregister (SV), das Zustandsregister (ST), oberster Teil vom Stapel (TOS), das Kettenregister (STG) und die vier Akkumulatorzeigerregister (ACP(3–0)). Das Datenzeigerregister (DP) ist nur lesbar, weil sein Wert durch Nachschlagetabellenbefehle festgelegt wird. Der Wiederhole-N-Mal-Befehl (RPTN-Befehl) ist nur schreibend, weil wiederholte Befehle nicht unterbrochen werden können. RETI- und RETN-Befehle sind nur lesende Operationen zum Prüfen des Stapels, und sie sind in dieser Klasse, weil der Stapel speicherzugeordnet ist. In dieser Klasse sind auch 4-Merker-Befehle, die den Merkerspeicher modifizieren, und zwei Befehle, die den Speicher mit MR multiplizieren und Ergebnisse im PH-Register speichern, enthalten.
  • Befehlsdefinitionen der Klasse 5 – allgemeiner Speicherverweis
    Figure 00440001
  • Figure 00450001
  • Figure 00460001
  • Figure 00470001
  • Gemäß einer offenbarten Klasse innovativer Ausführungsformen ist vorgesehen: ein digitaler Signalprozessor mit: einem digitalen Multiplizierer mit mindestens einem Eingang und einem Ausgang, einem Multiplikatorregister zum Halten eines Multiplikandenworts, das geschaltet ist, um das Multiplikandenwort dem Eingang des Multiplizierers zuzuführen, einem Datenspeicher zum Halten eines ersten Wortkettenoperanden, der geschaltet ist, um den ersten Wortkettenoperanden dem Eingang des Multiplizierers zuzuführen, einer Rechen- und Logikeinheit mit einem Ausgang und einem Eingang, der an den Ausgang des Multiplizierers angeschlossen ist, einem Akkumulator zum Halten eines zweiten Wortkettenoperanden, der geschaltet ist, um den zweiten Wortkettenoperanden der Eingabeeinrichtung der Rechen- und Logikeinheit zuzuführen, wobei ein Eingang an den Ausgang der Rechen- und Logikeinheit angeschlossen ist, wobei der Datenspeicher die Anzahl N von digitalen Wörtern hält, wobei die N Wörter darin gespeichert sind und ein niedrigstwertiges Wort von diesen an einer Adressenstelle A gespeichert ist und ein höchstwertiges Wort von diesen an einer Adressenstelle A + N gespeichert ist und wobei der Akkumulator die Anzahl M digitaler Wörter hält, wobei die M Wörter darin gespeichert sind, wobei ein niedrigstwertiges Wort von diesen an einer Adressenstelle B gespeichert ist und ein höchstwertiges Wort von diesen an einer Adressenstelle B + M gespeichert ist.
  • Gemäß einer anderen offenbarten Klasse innovativer Ausführungsformen ist ein Prozessor vorgesehen, bei dem die Zählerschaltung aufweist: eine erste Speicherzugriffsschaltung, die eine Datenspeicheradresse, welche auf das niedrigstwertige Wort der ersten Wortkette zeigt, und einen Zähler, der die Anzahl N enthält, aufweist, wobei die erste Speicherzugriffsschaltung anfänglich betätigbar ist, um an der Adresse, die auf das niedrigstwertige Wort der ersten Wortkette zeigt, auf den Datenspeicher zuzugreifen, und anschließend an Adressen, die von der Adresse, die auf das niedrigstwertige Wort der ersten Wortkette zeigt, N Mal inkrementiert sind, sequenziell auf den Datenspeicher zuzugreifen, eine zweite Speicherzugriffsschaltung, die eine Akkumulatoradresse, welche auf das niedrigstwertige Wort der zweiten Wortkette zeigt, und eine Zählereinrichtung, die die Anzahl M enthält, aufweist, wobei die zweite Speicherzugriffsschaltung anfänglich betätigbar ist, um an der Adresse, die auf das niedrigstwertige Wort der zweiten Wortkette zeigt, auf den Akkumulator zuzugreifen, und anschließend an Adressen, die von der Adresse, die auf das niedrigstwertige Wort der zweiten Wortkette zeigt, M Mal inkrementiert sind, sequenziell auf den Akkumulator zuzugreifen.
  • Gemäß einer anderen offenbarten Klasse innovativer Ausführungsformen ist vorgesehen: ein Rechenprozessor mit: einem Multiplizierer mit einer Eingabeeinrichtung und einer Ausgabeeinrichtung, einem Multiplikatorregister zum Halten eines ersten Operanden, das geschaltet ist, um den ersten Operanden der Eingabeeinrichtung des Multiplizierers zuzuführen, einem Datenspeicher zum Halten eines ersten Wortkettenoperanden, der geschaltet ist, um den ersten Wortkettenoperanden der Eingabeeinrichtung des Multiplizierers zuzuführen, einer Rechen- und Logikeinheit mit einer Ausgabeeinrichtung und einer Eingabeeinrichtung, die an die Ausgabeeinrichtung des Multiplizierers angeschlossen ist, einem Akkumulator zum Halten eines zweiten Wortkettenoperanden, der geschaltet ist, um den zweiten Wortkettenoperanden der Eingabeeinrichtung der Rechen- und Logikeinheit zuzuführen, und einer Einrichtung, die die Ausgabeeinrichtung der Rechen- und Logikeinheit mit der Eingabeeinrichtung des Akkumulators verbindet.
  • Gemäß einer anderen offenbarten Klasse innovativer Ausführungsformen ist vorgesehen: ein Prozessor mit: einem Multiplizierer mit einem Eingang und einem Ausgang, einem Eingaberegister zum Halten eines Multiplikandenworts, das geschaltet ist, um den ersten Operanden dem Eingang des Multiplizierers zuzuführen, einem Speicher zum Halten eines ersten Wortkettenoperanden, der geschaltet ist, um den ersten Wortkettenoperanden dem Eingang des Multiplizierers zuzuführen, einer Rechen- und Logikeinheit mit einem Ausgang und einem Eingang, der an den Ausgang des Multiplizierers angeschlossen ist, und einem Akkumulator zum Halten eines zweiten Wortkettenoperanden, der geschaltet ist, um den zweiten Wortkettenoperanden dem Eingang der Rechen- und Logikeinheit zuzuführen, wobei der Ausgang der Rechen- und Logikeinheit wirkungsmäßig mit dem Eingang des Akkumulators verbunden ist, wobei aufeinander folgende zweite Wortkettenoperanden an aufeinander folgenden Stellen im Akkumulator gespeichert sind.

Claims (1)

  1. Digitaler Signalprozessor mit: einem digitalen Multiplizierer (30) zum Multiplizieren von Datenwörtern mit einer vorgegebenen Länge, um eine Produktausgabe zu erzeugen, einem Datenspeicher (12) zum Speichern einer ersten Anzahl N von Datenwörtern mit der vorgegebenen Länge, wobei die Datenwörter mit der ersten Anzahl eine erste Kette von Datenwörtern bilden, welche ein Wort mit einer Länge darstellen, die größer ist als die vorgegebene Länge, wobei die Datenwörter der ersten Anzahl in dem Speicher gespeichert werden, wobei das niedrigstwertige Datenwort von diesen an einer Adressenstelle A gespeichert wird und das höchstwertige Datenwort von diesen an einer Stelle A + N – 1 gespeichert wird, einer Adressierungsschaltungsanordnung (14) zum sequenziellen Wiederaufrufen der Datenwörter der ersten Kette als ein erster Wortkettenmultiplikand, der einem ersten Eingang des digitalen Multiplizierers (30) in N Zyklen zugeführt wird, einem höherwertigen Produktregister (34), das an einen höchstwertigen Ausgang des digitalen Multiplizierers (30) angeschlossen ist, um die höchstwertigen Bits der Produktausgabe zu speichern und die höchstwertigen Bits der Produktausgabe eines vorhergehenden Zyklus im zweiten Zyklus und in nachfolgenden Zyklen dem Multiplizierer zuzuführen, einem Multiplikatorregister (32) zum Halten eines Multiplikatorworts mit der vorgegebenen Länge, das angeschlossen ist, um das Multiplikatordatenwort einem zweiten Eingang des digitalen Multiplizierers (30) zuzuführen, einer Rechen- und Logikeinheit (31) mit der vorgegebenen Länge, mit einem ersten Eingang (A), der an den Produktausgang des digitalen Multiplizierers (30) angeschlossen ist, wobei die Rechen- und Logikeinheit die Produktausgabe als einen ersten Wortkettenoperanden empfängt, einem zweiten Eingang (B) und einem Ausgang (50), gekennzeichnet durch einen Akkumulator (36), der eine erste Anzahl M von Speicherstellen (AC0 bis AC15) für eine zweite Anzahl von Datenwörtern mit der vorgegebenen Länge aufweist, wobei die Datenwörter der zweiten Anzahl eine zweite Kette von Datenwörtern bilden, welche ein Wort mit einer Länge darstellen, die größer ist als die vorgegebene Länge, wobei die Datenwörter der zweiten Anzahl in dem Speicher gespeichert werden, wobei das niedrigstwertige Datenwort von diesen an einer Adressenstelle B gespeichert wird und das höchstwertige Datenwort von diesen an einer Stelle B + M – 1 gespeichert wird, wobei ein Ausgangsanschluss mit dem zweiten Eingang der Rechen- und Logikeinheit verbunden ist, um die Datenwörter der zweiten Kette als einen zweiten Wortkettenoperanden der Rechen- und Logikeinheit zuzuführen, und wobei ein Eingangsanschluss mit dem Ausgang der Rechen- und Logikeinheit verbunden ist, um den Ausgang der Rechen- und Logikeinheit in einer zweiten Anzahl von Speicherstellen (AC 16 bis AC31) für Wörter mit der vorgegebenen Länge als eine Wortkettenausgabe zu speichern, wobei die Speicherstellen der ersten Anzahl und der zweiten Anzahl gepaart sind, so dass sie mit einem einzigen Zeiger adressierbar sind, und eine Akkumulatoradressierungsschaltung (70) zum Erzeugen eines Zeigers zum sequenziellen Auswählen von Speicherstellen aus der ersten (AC0 bis AC 15) und zweiten (AC16 bis AC31) Anzahl von Speicherstellen innerhalb des Akkumulators (36) in aufeinander folgenden Operationszyklen, wobei in N + 1 Zyklen ein Akkumulationsergebnis des Produkts des Multiplikatorworts und des ersten Wortkettenmultiplikanden mit dem zweiten Wortkettenoperanden in der zweiten Anzahl von Speicherstellen des Akkumulators gespeichert wird.
DE69930893T 1998-06-25 1999-06-25 Digitaler Signalprozessor für Daten mit grosser Bitlänge Expired - Lifetime DE69930893T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US9067198P 1998-06-25 1998-06-25
US90671P 1998-06-25

Publications (2)

Publication Number Publication Date
DE69930893D1 DE69930893D1 (de) 2006-05-24
DE69930893T2 true DE69930893T2 (de) 2006-11-16

Family

ID=22223777

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69930893T Expired - Lifetime DE69930893T2 (de) 1998-06-25 1999-06-25 Digitaler Signalprozessor für Daten mit grosser Bitlänge

Country Status (3)

Country Link
EP (1) EP0967544B1 (de)
JP (1) JP2000039995A (de)
DE (1) DE69930893T2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
GB0023699D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Executing a combined instruction
US7426529B2 (en) 2002-06-06 2008-09-16 Infineon Technologies Ag Processor and method for a simultaneous execution of a calculation and a copying process
DE10225230B4 (de) * 2002-06-06 2004-10-21 Infineon Technologies Ag Prozessor und Verfahren zum gleichzeitigen Ausführen einer Berechnung und eines Kopiervorgangs
US20040015676A1 (en) * 2002-07-17 2004-01-22 Pierre-Yvan Liardet Sharing of a logic operator having a work register
JP2014182514A (ja) * 2013-03-18 2014-09-29 Nara Institute Of Schience And Technology 演算装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8304186A (nl) * 1983-12-06 1985-07-01 Philips Nv Geintegreerde processor voor het verwerken van woordsgewijze ontvangbare informatie.
DE4123186A1 (de) * 1990-07-13 1992-01-23 Aisuke Katayama Multiplikationseinrichtung vom typ fuer unterteilte produkte, die zum ausfuehren einer multiplikation numerischer werte mit vielen stellen bei hoher genauigkeit faehig ist
FR2718866B1 (fr) * 1994-04-19 1996-05-15 Sgs Thomson Microelectronics Dispositif de calcul arithmétique et logique et procédé de commande.
US5666300A (en) * 1994-12-22 1997-09-09 Motorola, Inc. Power reduction in a data processing system using pipeline registers and method therefor

Also Published As

Publication number Publication date
EP0967544A3 (de) 2001-02-14
DE69930893D1 (de) 2006-05-24
EP0967544B1 (de) 2006-04-19
EP0967544A2 (de) 1999-12-29
JP2000039995A (ja) 2000-02-08

Similar Documents

Publication Publication Date Title
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE2755273C2 (de)
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE4035405C2 (de)
DE3424962C2 (de)
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69729974T2 (de) Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung
DE2230102C2 (de) Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE2424931A1 (de) Datenverarbeitungsanlage, insbesondere mikroprogramm-datenverarbeitungseinheit mit parallelen befehlsstroemen fuer mehrere ebenen von subbefehlsvorraeten
DE19545179A1 (de) Vektorspeicheroperationen
DE19506435A1 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE2855722A1 (de) Einrichtung zur berechnung von produktsummen
DE102018005170A1 (de) Anweisungen für vektoroperationen mit konstanten werten
DE3114921A1 (de) Datenverarbeitungssystem
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge

Legal Events

Date Code Title Description
8364 No opposition during term of opposition