DE69920582T2 - Verfahren zum Multiplizieren von Zahlen in Mehrwortkettendarstellung - Google Patents

Verfahren zum Multiplizieren von Zahlen in Mehrwortkettendarstellung Download PDF

Info

Publication number
DE69920582T2
DE69920582T2 DE69920582T DE69920582T DE69920582T2 DE 69920582 T2 DE69920582 T2 DE 69920582T2 DE 69920582 T DE69920582 T DE 69920582T DE 69920582 T DE69920582 T DE 69920582T DE 69920582 T2 DE69920582 T2 DE 69920582T2
Authority
DE
Germany
Prior art keywords
bit
word
register
multiplier
data
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
DE69920582T
Other languages
English (en)
Other versions
DE69920582D1 (de
Inventor
Alva Sherman Henderson
Francesco Richardson 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 DE69920582D1 publication Critical patent/DE69920582D1/de
Application granted granted Critical
Publication of DE69920582T2 publication Critical patent/DE69920582T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48—Methods 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/52—Multiplying; Dividing
    • G06F7/523—Multiplying only
    • G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804—Details
    • G06F2207/3808—Details concerning the type of numbers or the way they are handled
    • G06F2207/3812—Devices capable of handling different types of numbers
    • G06F2207/3816—Accepting numbers of variable word length

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebiet der elektronischen Datenverarbeitung und insbesondere einen Mikroprozessor mit einem integrierten Multipliziererblock, der für eine "Ketten-" oder Mehrwort-Multiplikation geeignet ist.
  • HINTERGRUND
  • Mikroprozessoren sind oftmals erforderlich, um binäre Daten zu verarbeiten, die weite Bereiche von Bitlängen haben, beispielsweise Daten, die von einem einzigen logischen Bit bis zu hochpräzisen Arithmetikoperationen, die mit Daten einhergehen, deren Länge mehr als 128 Bits aufweisen kann, reichen.
  • Hardware-Arithmetik-Logik-Einheiten (ALUs) in Mikroprozessoren sind im Allgemeinen dafür entwickelt und ausgelegt, dass sie mit festen Operandenlängen umgehen. Dadurch erfordern hochpräzise Arithmetikoperationen mehrere Programmschritte und mehrere Prozessorzyklen. Diese Datenverarbeitungsbedingungen führen zu Programmen, die hinsichtlich der Ausführungszeit unzulänglich sind, da die Mikroprozessor-Hardware und der unterstützende Pogrammbefehlssatz nicht für die Verarbeitung von Daten, die einen weiten Bereich von Operandenlängen aufweisen, optimiert sind.
  • Diese Unzulänglichkeit ergibt sich größtenteils sowohl aus wiederholten Speicher- und Ladevorgängen als auch aus einem Softwareschleifen-Steueraufwand (Vergleiche, Verzweigungen usw.). Für komplizierte Operationen, wie etwa die Multiplikation, und für Operationen, die mit Algorithmen erweiterter Genauigkeit einhergehen, ist der Aufwand noch ausgeprägter. Außerdem müssen für Mehrwort-Berechnungen das Vorzeichen (negativ oder positiv) und der Nullzustand eines Arithmetikergebnisses gesondert behandelt werden, was noch mehr Prozessorzeit erfordert, um die Operation durchzuführen.
  • Digitale Signalprozessoren (DSPs) sind schnelle Mikroprozessoren, die dafür optimiert sind, eine große Anzahl von Arithmetikoperationen in einem kurzen Zeitraum auszuführen. Wie der Name andeutet, wurden DSPs entwickelt, um Echtzeitverarbeitungsalgorithmen (z. B. Filterung, Komprimierung, Verschlüsselung) an digitalen Signalen auszuführen. DSPs enthalten hinsichtlich der Leistungsfähigkeit optimierte Arithmetikstrukturen, die bei herkömmlichen Mikroprozessoren nicht zu finden sind. Von den Einrichtungen, die in DSPs integriert sind, um die Leistungsfähigkeit hinsichtlich der Verarbeitung von Zahlen zu verbessern, sind die zwei wichtigsten der Hardware-Multipliziererblock und das zyklische Ausgangsschieberegister, der Barrelshifter.
  • Wie die meisten Strukturen in einem DSP sind die Hardware-Multipliziererblöcke hochleistungsfähige, geschwindigkeitsoptimierte Strukturen. Leider benötigen DSP-Hardware-Multipliziererblöcke große Flächenanteile der Chipoberfläche für spezialisierte Signalverarbeitungsschaltungsanordnungen. Außerdem erfordert eine Größenzunahme des Multipliziererblocks im Allgemeinen damit einhergehend eine Größenzunahme eines CPU-Datenbusses und der Arithmetik-Logik-Einheiten (ALUs). Beispielsweise ergibt die Multiplikation von zwei 16-Bit-Zahlen ein 32-Bit-Ergebnis. Ein Multipliziererblock, der in der Lage ist, diese 16-Bit-Multiplikation auszuführen, würde im Allgemeinen 32-Bit-Datenbusse, – Arithmetik-Logik-Einheiten (ALUs) und Akkumulatorregister, die das Ergebnis aufnehmen, erfordern. Dies erhöht die Komplexität und folglich die Kosten eines Mikroprozessors um einiges. Außerdem ist es wünschenswert, besonders bei Anwendungen der Signalverarbeitung, Zahlen mit einer Länge von mehr als einem Wort multiplizieren zu können. Leider nehmen die Komplexität und die Größe des Multipliziererblocks schnell und schwer steuerbar zu, wenn die Größe seiner Operanden zunimmt.
  • Herkömmliche Mikroprozessoren enthalten oftmals keinen Hardware-Multiplikationsblock oder Barrelshifter, da die Größe und die Kosten dies vor allem im preisgünstigen Käufermarkt verhindern. In einem herkömmlichen einfachen Prozessor werden Zahlen durch wiederholtes Addieren in einem Mehrbitaddierer multipliziert, was eine verhältnismäßig langsame Verarbeitung darstellt. Eine typische Multiplikation, die in der Software ausgeführt wird, erfordert eine lange Folge von Verschiebungen und Additionen, die einen großen Anteil der Prozessorzeit erfordern. Vom Standpunkt der Geschwindigkeit aus wäre höchst wünschenswert, über die Leistungsfähigkeit und Funktionalität eines in einen preiswerten Mikroprozessor integrierten Hardware-Multipliziererblocks zu verfügen, jedoch verbieten normalerweise die Komplexität und der Platzbedarf der zugehörenden Hardware eine derartige Ausführung aus Kostengründen.
  • Ein Barrelshifter ist eine weitere geschwindigkeitsoptimierte DSP-Struktur, die für umfangreiche Berechnungen äußerst nützlich ist. Barrelshifter sind so beschaffen, dass sie eine Zahl während einer einzigen Operation um mehrere Bitpositionen verschieben. Obwohl ein Barrelshifter in Funktion und Aufbau einem Multipliziererblock ähnlich ist, ist er herkömmlich als eine völlig separate Struktur auf dem Chip verwirklicht. In der Binärarithmetik kommt eine Linksverschiebung um eine Bitposition einer Multiplikation mit zwei gleich. Eine Linksverschiebung um N Bits ist einer Multiplikation mit 2N äquivalent.
  • Herkömmliche einfache Prozessoren enthalten keine Barrelshifter, sondern führen eine zyklische Schiebeoperation durch eine Reihe von Verschiebungen um eine Position aus, wobei jede Verschiebung eine einzige Softwareoperation umfasst. Eine Barrelshift-Funktion ist in einem Prozessor höchst wünschenswert, jedoch nimmt die spezialisierte Schaltungsanordnung, die erforderlich ist, um diese Funktion auszuführen, zu viel Platz auf einem Chip ein, um in preiswerte Prozessoren integriert zu werden. Die Barrelshift-Funktion könnte von einem Multipliziererblock ausgeführt werden, wenn die Zahlen besonders codiert sind; wenn jedoch die Codierung softwaremäßig ausgeführt werden muss, vermindert der Aufwand deutlich jeden Zugewinn an Leistungsfähigkeit durch einen Hardware-Barrelshift.
  • Es ist bekannt, dass frühere Mikroprozessoren fähig waren, Ketten zu verarbeiten, beispielsweise indem ein bestimmter Befehl eine vorgeschriebene Anzahl von Malen wiederholt wurde. Es ist bekannt, dass eine wiederholte Addition mit Übertrag eine Kettenoperation ausführen wird, wobei die Datenspeicheradressen der Operanden und des Ergebnisses nach jeder Operation automatisch inkrementiert werden. Außerdem ist bekannt, dass andere unveränderliche Hardware-Multiplizierer verwendet haben, um Multiplikationen mit erweiterter Genauigkeit unter Verwendung eines Multipliziere-mit-Teilen-Algorithmus vorzunehmen, was eine komplizierte und relativ leistungsschwache Lösung darstellt.
  • Wie erwähnt worden ist, müssen Mikroprozessoren typisch mit Operanden mit verschiedenen, mitunter sehr verschiedenen Längen umgehen. Die Operandenlängen können zwischen einem einzigen logischen Bit und bis zu 512 Bits oder mehr variieren. Andererseits haben Arithmetik-Logik-Einheiten (ALUs) eine feste Breite. Wenn eine hochpräzise Arithmetik notwendig ist, die Operanden erfordert, die länger als die ALU sind, muss der Prozessor die Operation in mehreren Schritten ausführen. Die Programme werden hinsichtlich der Ausführungsdauer und des Programmierungscodes ineffizient, da die zu Grunde liegende Hardware und der unterstützende Befehlssatz nicht für die Verarbeitung von hochpräzisen Daten, die durch eine sequentielle Verkettung von Datenwörtern repräsentiert werden, optimiert sind.
  • Wenn eine Zahl, die eine Länge von einem Wort aufweist, mit einer Zahl, deren Länge größer als ein Wort ist, multipliziert werden muss (Kettenmultiplikation), kann das Verfahren selbst in Ausführungen, die einen Multipliziererblock enthalten, sehr schwerfällig werden. Eine derartige Multiplikation wird durch eine Reihe von Einzelwort-Teilmultiplikationen ausgeführt, wobei mit dem niedrigstwertigen Wort begonnen wird. Für jede Teilmultiplikation muss der Code den Prozessor anweisen, (1) die Einzelwort-Multiplikation (entweder hardware- oder softwaremäßig) auszuführen, (2) das niedrigstwertige Wort des Ergebnisses im Speicher zu speichern, (3) das höchstwertige Wort des Ergebnisses zu dem richtigen Operandenregister für die nächste Teilmultiplikation zu befördern, (4) zu prüfen, ob die Operandenkette vollständig ist, und wenn nicht, (5) an den Anfang der Schleife zurückzugehen, um das Verfahren noch einmal von vorn zu beginnen. Dieses Verfahren geht mit einem hohen Befehldecodierungs- und Datenver schiebungsaufwand einher, wodurch sich der Mehrwort-Multiplikationsvorgang erheblich verlangsamt.
  • Im US-Patent 5 657262 ist eine Recheneinrichtung für die Multiplikation von zwei Zahlen mit doppelter Genauigkeit mit einem Schieberegister und einem Multiplizierer beschrieben, die für eine Multiplikations- und Akkumulations-Operation ausgelegt sind.
  • Im Fachgebiet besteht weiterhin ein Bedarf an einem verbesserten Multiplizierer mit einer spezialisierten Architektur, um das Problem der Verarbeitung von langen, mehrere Wortlängen umfassenden Daten in einer effizienten, konsistenten und einheitlichen Weise anzugehen.
  • Gemäß der vorliegenden Erfindung wird ein Mikroprozessor geschaffen, wie er durch die Ansprüche definiert ist.
  • Diese Patentanmeldung offenbart einen Multipliziererblock, der von einer "Verkettungsvorrichtung" und einer integrierten Barrelshift-Schaltungsanordnung Gebrauch macht, um den Arithmetik-Durchsatz zu erhöhen, während gleichzeitig viele der Belastungen der DSP-Logik vermieden werden. Um die Aufnahme einer doppelt breiten (32 Bits) ALU und eines doppelt breiten Akkumulators zu vermeiden und dennoch das doppelt genaue Ergebnis (32 Bits) des Multiplizierers unterzubringen, wird das 32-Bit-Produkt des statischen Multipliziererblocks in zwei Teile geteilt. Die niedrigeren 16 Bits werden für eine unmittelbare Verwendung (Übergeben, Akkumulieren usw.) der ALU direkt zugeführt. Die höheren 16 Bits werden für eine spätere Verwendung in einem 16-Bit-Register zwischengespeichert (bekannt als Product High). Das Register für den höherwertigen Teil des Produkts kann für eine kontinuierliche Mehrwort-(Ketten-) Multiplikation direkt zu dem Multipliziererblock zurückübertragen werden. Diese Optimierung ist im völligen Einklang mit nur einem Datenspeicher und nur einem Datenbus, Ausführungen, wie sie in den meisten Mikroprozessoren anzutreffen sind, die zwei Zyklen benötigen, um zwei Multiplikationsoperatoren anzuordnen.
  • Diese Erfindung optimiert die Ausführung des Multipliziererblocks, um die Kosten zu minimieren und die Flexibilität zu erhöhen, so dass er in sehr preiswerte Mikroprozessoren und Einzelchip-Mikrocomputer integriert werden kann. Die Hauptfunktion des Multipliziererblocks ist die Ausführung einer Einzelzyklus-17-Bit × 17-Bit-Multiplikation, die ein 34-Bit-Produkt ergibt. In der bevorzugten Ausführungsform kann der Operand entweder als vorzeichenbehaftet oder als vorzeichenlos interpretiert werden. Der Multiplizierer ist fähig, eine Multiplikation eines Einzelwortes (16 Bits) mit einer N-Wort-Kette (bis zu 496 Bits) auszuführen, die ein 512-Bit-Ergebnis hervorbringt.
  • Außerdem kann der Multiplizierer eine universelle Barrelshift-Funktion aufweisen. Ein 4-Bit-Verschiebungswertregister mit einem 4-bis-16-Bit-Decodierer ermöglicht dem Multipliziererblock, eine 1 bis 16 Bits umfassende Barrelshift-Operation entweder an einem 16-Bit-Operanden oder an einem N·16-Bit-Ketten-Operanden durchzuführen. Die langkettige Barrelshift ist einmalig für Multipliziererblockfunktionen.
  • Die verhältnismäßig geringe Fläche, die infolge der Beseitigung spezieller DSP-Strukturen wie etwa einer Vorgriffslogik- und einer Fließbandverarbeitungs-Schaltungsanordnung für den Multipliziererblock und die Barrelshift-Schaltungsanordnung benötigt wird, ermöglicht dem Prozessor, einen großen Teil der Funktionalität und Leistungsfähigkeit eines digitalen Signalprozessors in ein preiswertes Erzeugnis zu integrieren.
  • Der in dieser Patentanmeldung offenbarte Multipliziererblock ist in einen preiswerten Mikroprozessor integriert, der sich für einen Einsatz in Handelsartikeln eignet. Der Mikroprozessor und sein spezieller Befehlssatz sorgen für eine leistungsfähige Datenverarbeitung von Datentypen, deren Länge von einem Bit bis zu 512 Bit reicht. Die bevorzugte Ausführungsform enthält spezielle Verbesserungen an Hardware-Strukturen und Befehlssatz, die Operationen an Daten mit einer mehrfachen Wortbreite in einer effizienten, konsistenten und einheitlichen Weise vereinfachen. Jedes Befehlswort, das Daten verarbeitet, weist einen reservierten Bitschalter auf, der bewirken wird, dass der auszuführende Befehl entwe der nur einmal (auf ein Einwort-Datum einwirkend) oder als eine wiederholte Ausführung desselben Befehls (auf eine Kette oder Liste von sequentiellen Daten einwirkend) ausgeführt wird.
  • Gemäß der bevorzugten Ausführungsform sind verschiedene Hardware-Strukturen erforderlich, um diese Definition eines Befehlssatzes mit erweiterter Genauigkeit zu unterstützen. Erstens wurde ein Hardware-Kettenregister mit einem Zähler hinzugefügt, um die Wiederholungszählung und die Anzahl der Wörter in der Kette zu steuern. Zweitens wurde eine Registerreihe implementiert, um die Akkumulationsfunktion für die ALU zu schaffen. Drittens war eine spezielle Adresssteuerung notwendig, um die sequentielle Gewinnung von bis zu zwei Eingangsoperanden-Ketten und einer Ausgangsoperandenkette zu steuern. Viertens wurde eine zusätzliche ALU-Zustandslogik einbezogen, um mit arithmetischen und logischen Zuständen unabhängig von der Datenbreite einheitlich umzugehen. Fünftens wurde das Register für den höherwertigen Teil des Produkts auf den Partialsummeneingang des Hardware-Multiplizierers gelegt, um eine konsistente Kettenmultiplikationsfunktion zu ermöglichen.
  • Die bevorzugte Ausführungsform schafft eine ALU mit einer Länge von einem Wort (31 in 1), liefert das Konzept von Wortketten und sorgt in der bevorzugten Ausführungsform dafür, dass vier verschiedene Speicherbereiche spezifiziert werden können, die jeweils ein Paar Kettenwerte speichern, wodurch die Nachteile von früheren Mikroprozessoren überwunden werden.
  • Die offenbarten Ausführungsformen gehen mit Daten in einer konsistenten Art und Weise um, wobei es sehr wenige Einschränkungen hinsichtlich der Anzahl der Bits gibt, die verwendet werden, um Daten darzustellen. Die Software-Befehle für die Verarbeitung entweder einzelner 16-Bit-Wörter oder erweiterter 512-Bit-Wortketten sind im Wesentlichen gleich. Die Ausführungszeit nimmt mit der Anzahl der Wörter in den Operanden bei geringem oder keinem Software-Aufwand linear zu. Der Code ist kompakt, logisch und leicht verständlich.
  • Diese und weitere Merkmale und Vorteile der neuartigen Prozessor-Hardware werden einem Fachmann auf dem Gebiet durch Heranziehen der folgenden ausführlichen Beschreibung bevorzugter Ausführungsformen der Erfindung, wobei die Beschreibung auf die Zeichnung Bezug nimmt, offensichtlich sein.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Die offenbarten Ausführungsformen der Erfindung werden anhand der beigefügten Zeichnung beschrieben, die wichtige beispielhafte Ausführungsformen der Erfindung zeigt, die durch die Bezugnahme Bestandteil der Beschreibung sind, wobei
  • 1 ein Schaltplan ist, der das offenbarte Multiplikationsschema zeigt;
  • 2 ein detaillierter Plan des 17 × 17-Multipliziererblocks ist;
  • 3 ein Blockdiagramm eines Mischsignal-Prozessors zeigt;
  • 4 einen Telephonanrufbeantworter zeigt, der diese Speicheranordnung verwendet;
  • 5 eine Darstellung ist, die im Großen und Ganzen 1 ähnlich ist, jedoch den Umgang mit Datenketten zeigt;
  • 6 den Aufbau und die Anordnung der Datenspeicher-Adressiereinheit von 1 genauer zeigt;
  • 7 den Aufbau und die Anordnung der Programmzählereinheit von 1 genauer zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Die neuartigen Lösungsansätze der vorliegenden Anmeldung werden mit besonderer Bezugnahme auf eine derzeit bevorzugte Ausführungsform beschrieben. Es sollte jedoch klar sein, dass diese Klasse von Ausführungsformen nur wenige Beispiele der vielen vorteilhaften Anwendungen der hier offenbarten neuartigen Lösungsansätze liefert. Im Allgemeinen beschränken Aussagen, die bei der Beschreibung der vorliegenden Ausführung getroffen werden, nicht zwangsläufig irgendwelche der verschiedenen Ausführungsformen der vorliegenden Erfindung. Außerdem können einige Aussagen auf einige neuartige Merkmale zutreffen, jedoch nicht auf andere.
  • Der Multipliziererblock gemäß einer bevorzugten Ausführungsform ist von allgemeinem Nutzen und findet eine besondere Gebrauchseignung bei solchen Anwendungen wie etwa schnellen Rechnern und mäßig schnellen digitalen Signalprozessorsystemen (DSP-Systemen). Der Prozessor, in den er integriert ist, kann mit vielen verschiedenen Speicherkonfigurationen und mit vielen verschiedenen Peripheriegeräten verwendet werden, um eine breite Vielfalt von anwendungsspezifischen Handelsartikeln zu schaffen.
  • Die hier offenbarte bevorzugte Ausführungsform des Ein-Zyklus-Multiplizierers ist so beschaffen und ausgelegt, dass sie einen 16-Bit-Multiplikator mit einem Multiplikanden multipliziert, der ein Wort aus einer Kette aus mehreren Wörtern umfassen kann. Das resultierende Produkt ist ein Wort länger als die eingegebene Wortkette.
  • Die Funktionsweise der Recheneinheit (CU), von welcher der Multiplizierer einen Hauptbestandteil darstellt, ist in 1 gezeigt. Die Recheneinheit ist aus einem 17-Bit × 17-Bit-Booths-Algorithmus-Multipliziererblock 30 und einer 16-Bit-Arithmetik-Logik-Einheit (ALU) gebildet. Der Multipliziererblock 30 wird von vier Systemregistern bedient: einem 16-Bit-Multiplikatorregister (MR) 32, einem 16-Bit-Nurschreib-Muliplikanten-Eingaberegister 33, einem 16-Bit-höherwertiges-Wort-Register (PH) 34, das die höchstwertigen 16 Bits einer 32-Bit-Multiplizierer-Ausgabe 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 bevorzugte Ausführungsform ist ein rein statischer 17-Bit × 17-Bit-Multipliziererblock, der eine 17-Bit × 17-Bit-Zweierkomplement-Multiplikation und eine Multiplikationsakkumulation in einem einzigen Befehlszyklus ausführt. Die Hardware-Anordnung umfasst neun 17-Bit-Addierer, die eine herkömmliche Booths-Algorithmus-Multiplikationsoperation ausführen. Das siebzehnte Bit ist erforderlich, um sowohl die vorzeichenbehaftete als auch die vorzeichenlose Interpretation der 16-Bit-Eingangsoperandendaten zu vereinfachen.
  • Einer oder beide, der Multiplikator und der Multiplikand, kann bzw. können zwangsweise das siebzehnte Bit auf einen positiven Wert gesetzt haben (d. h. ein vorzeichenbehafteter Operand), oder einer oder beide dieser Operanden können zwangsweise ein siebzehntes Bit haben, das einen Binärwert aufweist, der gleich dem Binärwert des sechzehnten Bits ist (d. h. ein vorzeichenloser Operand).
  • Die niedrigstwertigen 16 Bits des resultierenden 32-Bit-Produkts werden während desselben Befehlszyklus zu der ALU 31 multiplexiert, und dieses 16-Bit-Produkt wird in ein Wortregister AC(0)-AC(31), das sich in der Akkumulatorregisterreihe 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.
  • Der Multiplikand für den Multiplizierer 30, der aus dem Datenspeicher erhalten wird, ist ein Registerwort AC(0)-AC(15) vom Akkumulator 36 oder ein Versatzregisterwort AC(16)-AC(31). Der Multiplikator für den Multiplizierer 30 ist entweder vom 16-Bit-Register MR 32 oder vom 4-Bit-Register SV 35. MR 32 speichert diesen Multiplikator.
  • Die bevorzugte Ausführungsform ist in 2 genauer gezeigt. Jeder Block 202 ist ein Volladdierer und umcodierender Multiplexer. Die zwei Summanden sind umcodierte multiplexierte Werte von dem Multiplikanden-Bus (MCND) und der verschobenen vorhergehenden Partialsumme von dem Addiererausgang 204 darüber. Die umcodierten Eingaben 206, die die neun 17-Bit-Schnellübertrag-Addiererblöcke 208 steuern, kommen von der Multiplikatorquelle. Die anfängliche Partialsumme in dem ersten 17-Bit-Addiererblock 210 wird mit dem PH-Register bedingt verknüpft, um eine Kettenmultiplikation zu unterstützen. Die siebzehnte Leitung des Multiplikanden-Busses 212 ist entweder das erweiterte 16-te Bit von MCND oder 0, je nachdem, ob der Multiplizierer in der vorzeichenbehafteten oder in der vorzeichenlosen Multiplikationsbetriebsart ist. Die Addierer 202 verwenden eine Schnellübertragsweitergabe, wobei der Übertrag von dem Addierer auf der rechten Seite genommen wird und nach links weitergegeben wird. Die Bits PO bis P15 der Ausgabe (niedrigwertiger Teil des Produkts) gelangen in den Arithmetik-Logik-Einheit-Multiplexer 214. Die Bits P16 bis P31 gehen zur Verwendung in einer Kettenmultiplikation in das Register für den höherwertigen Teil des Produkts ein.
  • In der bevorzugten Ausführungsform wird das resultierende Produkt ein Wort länger als der Multiplikand sein. Da die Länge des Multiplikanden durch den Kettenregister-Zähler gesteuert wird, ist für alle Kettenmultiplikationen ein zusätzlicher Zyklus erforderlich. Folglich werden in der bevorzugten Ausführungsform, obwohl 16 × 16-Bit-Operationen keinen zusätzlichen Zyklus benötigen, Kettenmultiplikationen und Barrelshift-Operationen einen zusätzlichen Zyklus für die abschließende Akkumulation erfordern.
  • Wie weiter oben beschrieben ist, multipliziert die bevorzugte Ausführungsform zwei 17-Bit-zweierkomplementcodierte Zahlen, woraus sich ein Zweierkomplement-34-Bit-Produkt ergibt. Wenn die 16-Bit-Operanden als vorzeichenlos interpretiert werden sollen, werden sie einfach mit einem siebzehnten positiven Vorzeichenbit erweitert, die niedrigstwertigen 32 Bits des Produkts werden dann das korrekte vorzeichenlose Ergebnis angeben. Wenn die Daten als vorzeichenbehaftet interpretiert werden sollen, wird das siebzehnte Bit gleich dem sechzehnten Bit gesetzt (d. h. das Vorzeichenbit wird erweitert), so dass die niedrigstwertigen 32 Bits des Produkts das korrekte vorzeichenbehaftete Ergebnis enthalten werden.
  • Beide, der Multiplikator wie auch der Multiplikand, können unabhängig voneinander gezwungen werden, das siebzehnte Bit zwangsläufig auf einen positiven Wert (0) oder auf einem Wert, der dem höchstwertigen Bit des geladenen Operan den gleich ist (sechzehntes Bit), zu haben. Diese Auswahl ermöglicht sowohl eine vorzeichenbehaftete als auch eine vorzeichenlose Multiplikation. Die niedrigstwertigen 16 Bits des resultierenden Produkts werden während desselben Befehlszyklus zu der ALU multiplexiert und entweder in ein Akkumulatorregister geladen oder mit diesem arithmetisch kombiniert.
  • Da der Multiplizierer die Operanden entweder als vorzeichenbehaftet oder als vorzeichenlos interpretieren kann, erfordert eine Kettenmultiplikation, dass alle Wortmultiplikationen außer der letzten einer vorzeichenlosen Betriebsart unterworfen werden. Um für eine korrekte und einheitliche Arithmetik und Zustandsgewinnung in Bezug auf Einzeldatenwortoperationen zu sorgen, wird das Bit des ausgehenden Übertrags mit dem Bit des eingehenden Übertrags der nächsten Wortberechnung verknüpft, und das Wort-Zustandsbit (gleich oder null) wird logisch UND-verknüpft. Um Additionen und Subtraktionen korrekt vorzunehmen, spiegeln außerdem Vergleiche der langen Ketten den korrekten Zustand wider.
  • Während einer Kettenmultiplikation (Multiplikation eines mehrere Wörter umfassenden Operanden) werden die Inhalte des PH-Registers auf den Partialsummeneingang des ersten Addierers in dem Multipliziererblock zurückgeführt. In diesem Zustand ist der Multiplizierer vollständig dafür gerüstet, die Multiplikation des nächsten Wortes in der Kette auszuführen. Diese Ausführung ermöglicht, dass der Multipliziererblock eine Multiplikation von Operanden, die mehrere Wörter lang sind, mit einem Minimum an Ausführungszeitaufwand ausführt.
  • Zu Beginn jeder Multiplikation wird das Register für den höherwertigen Teil des Produkts (PH-Register) auf null gesetzt. Für den zweiten bis n-ten Zyklus werden die höchtwertigen 16 Bits der letzten Wortmultiplikation in das PH-Register geleitet. Dies ermöglicht ohne weiteren Software-Aufwand N × 1-Wortmultiplikationen, ein N + 1-Wortprodukt in N + 1 Befehlzyklen zu erzeugen. Durch die Erweiterung der Elementkette mit einem erweiterten Vorzeichenwort können sehr leistungsfähige N-Wortketten × M-Wortketten-Multiplikationen softwaremäßig implementiert werden.
  • In der bevorzugten Ausführungsform kann die Quelle des Multiplikanden entweder ein Datenspeicher, ein Akkumulator oder ein Akkumulator-Versatz sein. Die Quelle des Multiplikators kann entweder das 16-Bit-Multiplikatorregister (MR) für Multiplikationsoperationen oder das Schiebewertregister (SV-Register) für Barrelshift-Operationen sein. Bei allen Multiplikationsoperationen speichert das MR-Register den Multiplikator.
  • Alle drei Multiplikationsregister (PH, SV und MR) können vom Speicher geladen und in den Speicher gespeichert werden. Außerdem können Daten von einem Akkumulatorregister zu PH oder umgekehrt übertragen werden. Sowohl lange als auch kurze Konstanten können aus dem Programmspeicher direkt in das MR-Register geladen werden. Der Wert des Multiplikanden wird von dem internen Datenbus (DB) in einem Nurschreib-Register zwischengespeichert, wobei dieser Wert weder gelesen noch in einen Speicher noch in andere Systemregister übertragen werden kann.
  • Dieser Multiplizierer führt Barrelshift-Operationen während der Benutzung als integrierter 4-bis-16-Bit-Decodierer unter Verwendung des 4-Bit-Verschiebewertregisters (SV) als Eingang aus. Wenn beispielsweise ein Wert von 7 (binär 0111) in das SV-Register geladen ist, wird ein Multiplikator 0000 0000 1000 0000 (binär) in den Multipliziererblock geladen. Die Multipliziererblockausgabe wird dann den Wert des Multiplikanden, um 7 Bitpositionen nach links verschoben, widerspiegeln. Wenn das Zustandsbit FM (Multiplizierer-Verschiebungsbetriebsart) in dem Zustandsregister (STAT) auf eins gesetzt ist, wird der Multiplikator um ein Bit nach links verschoben, um einen Operanden mit 17 signifikanten Bits zu bilden. Diese Betriebsart ist enthalten, um eine Division durch 2 des Produkts zu vermeiden, wenn die eingegebenen Operanden als vorzeichenbehaftete Binärbrüche interpretiert werden.
  • Das weiter oben beschriebene Konzept von Ketten ist nicht neu, und andere Prozessoren haben Mechanismen, um einen bestimmten Befehl eine vorgegebene Anzahl von Malen zu wiederholen. Die bevorzugte Ausführungsform ist umfassender und liefert einen sehr leistungsstarken Code für hochpräzise Berechnun gen. Sie ist konsistent für alle Multiplikations- und Verschiebeoperationen, wobei sie den korrekten Zustand für Datenbreiten von einem Bit 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-Multiplizierer-Operation sorgt für eine sehr effiziente und einfache Ausführung 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. 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 kompliziert und viel weniger leistungsstark ist.
  • Dieser Multipliziererblock ist so beschaffen, dass er in einen preiswerten Mischsignal-Prozessor integriert werden kann. Die zu Grunde liegende Architektur des Prozessors, der die derzeit bevorzugte Ausführungsform verkörpert, enthält eine schnelle Recheneinheit (CU) und eine vollständig ausgebildete Datenspeicher-Adressiereinheit (DMAU). In der bevorzugten Ausführungsform verkörpert der Prozessor eine Harvard-Architektur (getrennte Daten- und Programmspeicherräume), die folglich einen parallelen Zugriff und einen maximalen rechnerischen Durchsatz ermöglicht. Um eine minimale Leistungsaufnahme zu erzielen, bilden statische Logikimplementierungen die funktionalen Blöcke des Prozessors, wobei die wichtigsten funktionalen Blöcke deaktiviert werden, wenn sie nicht gebraucht werden. Eine Anzahl interner Speicher verschiedener Größen und Typen kann mit aufgabenspezifischen Peripheriegeräten und einer Unterbrechungslogik kombiniert werden, um eine breite Vielfalt von aufgabenspezifischen Vorrichtungen zu schaffen, die jeweils eine andere Gebrauchseignung haben.
  • In der derzeit bevorzugten Ausführungsform, jedoch ohne Beschränkung auf diese, sind der Programmspeicher und der Datenspeicher auf interne Speicherblöcke eingeschränkt, die nicht durch die Verwendung eines externen Speichers erweitert werden können. Der Programmspeicher umfasst ROM, EPROM oder OTP, beispielsweise mit der Kapazität von 64 K 17-Bit-Wörtern. Der Datenspei cher ist RAM. Gemäß der Idee und dem Umfang der vorliegenden Anmeldung besitzen verschiedene Ausführungsformen verschiedene Kombinationen von Programm- und Datenspeichergrößen, wobei der Programmspeicher im Allgemeinen wenigstens 16 K 17-Bit-Wörter umfasst. Wenn ein Massendatenspeicher erforderlich ist, kann eine zusätzliche Datenspeicher-Peripherie-Schnittstelle vorgesehen werden.
  • Wie aus 3 ersichtlich ist, umfasst ein Prozessor 10, der einen Multipliziererblock gemäß der bevorzugten Ausführungsform enthält, 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 (CU) 13 und die oben erwähnte Datenspeicher-Adressiereinheit (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 Nachrichtenverbindung 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 3 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 3 1152 Wörter angegeben sind. Jede Adresse 51, die von der Datenspeicher-Adressiereinheit (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. Diese Byteformat-Betriebsart veranlasst die Prozessor-Hardware, entweder das höherwertige oder das niedrigerwertige Byte des adressierten 16-Bit-Wortes zu lesen oder zu schreiben, wobei das abgerufene Byte auf dem Datenbus 23 rechts ausgerichtet wird.
  • In einer Merkerdaten-Betriebsart verarbeitet ein Befehl nur das siebzehnte Bit des abgerufenen Wortes. Das siebzehnte Bit wird bei allen Lesezugriffen auf den Datenspeicher 12 stets gelesen und dann in das MTAG-Bit des Zustandsregisters 18 von 3 geladen und liefert folglich die Kennzeichnung entweder für Wort- oder Bytedaten. Bei der Byte-Betriebsart 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-Befel getestet werden oder es kann mit anderen Testbedingungen und anderen Merkern kombiniert werden, um neue Bedingungen zu erzeugen.
  • 1 zeigt die CU 13 von 3 genauer. Die CU 13 enthält einen 17-Bit × 17-Bit-Booths-Algorithmus-Multiplizierer 30 und eine 16-Bit-ALU 31.
  • Wie weiter oben erläutert worden ist, wird der Multiplizierer 30 von vier Systemregistern bedient, d. h. einem 16-Bit-Multiplikatorregister (MR) 32, einem 16-Bit-Nurschreib-Muliplikanten-Eingaberegister 33, einem 16-Bit-höherwertiges-Wort-Register (PH) 34, das die höchstwertigen 16 Bits einer 32-Bit-Multiplizierer-Ausgabe 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-Akkummulatorregisterreihe 36 gespeichert. Die Akkumulatorregisterreihe 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 Akkumulatorregisterreihe oder im Versatz dazu ist), oder die Akkumulatorregisterreihe 36 wird wirksam, um der ALU 31 zwei 16-Bit-Operanden zu liefern (wobei diese zwei Operanden das adressierte Akkumulatorregisterreihen-Wort und sein Versatz sind).
  • Wie weiter oben erörtert worden ist, führt der Multiplizierer 30 eine 17-Bit × 17-Bit-Zweierkomplement-Multiplikation in einem einzigen Befehlszyklus des Prozessors 10 aus. Einer oder beide der Multiplikationsoperanden und der Multiplikand können zwangsweise das siebzehnte Bit auf einen positiven Wert gesetzt haben (d. h. ein vorzeichenbehafteter Operand), oder einer oder beide dieser Operanden kann bzw. können zwangsweise ein siebzehntes Bit haben, dass einen Binärwert aufweist, der gleich dem Binärwert des sechzehnten 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 Akkumulatorregisterreihe 36 befindet, geladen oder mit diesem kombiniert. Die höchstwertigen 16 Bits des 32-Bit-Produkts werden am Ende des Befehlszyklus in PH 34 zwischengespeichert.
  • Der Multiplikand für den Multiplizierer 30, der aus dem Datenspeicher 12 von 3 erhalten wird, ist ein Registerwort AC(0)-AC(15) vom Akkumulator 36 oder ist sein Versatzregisterwort AC(16)-AC(31). Der Multiplikator für den Multiplizierer 30 ist entweder vom 16-Bit-MR 32 oder vom 4-Bit-SV 35. MR 32 speichert diesen Multiplikator.
  • Für Barrelshift-Befehle ist der Multiplikator ein 4-bis-16-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 3 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 Akkumulatorregisterreihe 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 Datenbus (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 1 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 Akkumulatorregisterreihe 36, die zweiunddreißig 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 1 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 Akkumulatorregisterreihe 36 geliefert wird, aus. Der Multiplexer 40 wählt zwischen der Eingabe "alles Nullen" 41 oder der Ausgabe AA 46, die von der Akkumulatorregisterreihe 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-Akkumulations-Operationen der ALU 31.
  • Die Akkumulatorregisterreihe 36 weist zwei Ausgänge 46, 47 auf, die in 1 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 eine Akkumlator-Referenz und eine Versatz-Akkumulator-Referenz 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 Akkumulatorregisterreihe 36 sind, nicht vernichtet werden.
  • Die bevorzugte Ausführungsform schafft eine gepaarte 32-Wort- (16 Bits pro Wort) Akkumulatorregisterreihe (AC(0)-AC(31) in 3), statt wie in früheren Ausführungen einen einfachen oder doppelten Akkumulator zu verwenden. Außerdem werden einmalige Merkmale in der Adressiereinheit (14 in 3) des offenbarten Prozessors geschaffen, die zur Wirkung kommen, um diese Akkumulatorregisterreihe zu adressieren.
  • Der Akkumulatorblock der Recheneinheit besteht aus 32 Akkumulatoren mit einer Größe von jeweils 16 Bit. Die 32 Register der Akkumulatorregisterreihe 36 sind mit AC(0) bis AC(31) bezeichnet, 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 Akkumlatorregisterreihe 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 Akkumulatorregisterreihe 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 Akkumulatorregisterreihe 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 Akkumulatorregisterreihen-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 Akkumulatorregisterreihe 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 bezo genen 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 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 Speicherort des niedrigstwertigen Wortes 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 Akkumulatorregisterreihe 36 verwendet wird. Dies minimiert den Software-Aufwand bei der Handhabung einer Adresse der Akkumulatorregisterreihe 36, beispielsweise durch Vermeiden einer Software-Überlappungswirkung, die nachträgliche Änderungen verursacht.
  • 6 zeigt eine Datenspeicher-Adressiereinheit (DMAU) 14, die wirksam wird, um eine Adresse 51 an den Datenspeicher 12 zu liefern. Die Datenspeicher-Adressiereinheit 14 enthält eine zugeordnete ALU 52, die Additions-, Subtraktions- und Vergleichfunktionen ausführt, drei spezielle Adressregister 53 (R5 INDEX), 54 (R6 SEITE) und 55 (R7 PGSTK) sowie fünf universelle Register 56-60 (R0 bis R4). Die Datenspeicher-Adressiereinheit 14 erzeugt eine Adresse 51 parallel zur Recheneinheit 13, wodurch für einen hohen Prozessor-Durchsatz gesorgt wird.
  • Die Datenspeicher-Adressiereinheit 14 kann den Datenspeicher 12 mittels fünf Adressierungsbetriebsarten adressieren, d. h. mittels einer direkten Adressierungsbetriebsart, einer indirekten Adressierungsbetriebsart, wobei eine nachträgliche Modifikation möglich ist, und dreier relativer Adressierungsbetriebsarten. Die drei relativen Betriebsarten sind (1) unmittelbar-kurz mit Bezug auf R6-SEITE (R6-SEITE + 7-Bit (128 Bytes oder 64 Wörter)), (2) R5-INDEX mit Bezug auf die Registerbasis (Indirektes Register + R5-INDEX), und (3) langzwischenzeitlich mit Bezug auf die Registerbasis (indirektes Register + 16-Bit-Versatz).
  • Bei der Ausführung von Wortketten-Befehlen wird bei allen Adressierungsbetriebsarten 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 sequentielle Erhöhung der Adresse 51 temporär ist, bleiben alle Register 55-60 unverändert und verweisen weiterhin auf das niedrigstwertige Wort im Speicher 12.
  • Kettenabrufe, die die indirekte Adressierungsbetriebsart 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.
  • 7 zeigt die Programmzählereinheit (PCU) 15, die wirksam wird, um die Adresse 61 für den Programmspeicher 11 von 3 zu erzeugen. Es ist eine 16-Bit-ALU 62 vorgesehen, um die Adressen 61 des ROM 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 6 in der indirekten Betriebsart 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 Nachschlagtabellen-Befehlen wie etwa LUAA und LUAM aus der Akkumulatorregisterreihe 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 Programmzählereinheit 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 1 ä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 Akkumulatorregisterreihe 36 von 5, wo von einer Kette mit neun Wörtern ihr niedrigstwertiges Wort im Register AC(3) gespeichert ist, während ihr höchstwertiges Wort im Register AC(11) gespeichert ist.
  • Nicht weniger als drei Operanden sind an Datenkettenoperationen beteiligt, beispielsweise zwei Eingangsoperanden und ein Ausgangoperand. Der Prozessor 10 von 3 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.
  • Außerdem werden die Kettenregisterzähler 17 von 3 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 3 und ACP 70 von 5 selbsttätig die Kettenadressen für den Datenspeicher 12 und für die Akkumulatorregisterreihe 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, sequentiell 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 sechzehnten 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ächstem Wortzustand UND- verknüpft zu werden. Der Endzustand des Vorzeichenüberlaufs wird nicht eher festgehalten, als 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-Wortmultikplikationen 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 acht 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 neun Wörter umfassende Term (C), der Summand, ist in der Akkumulatorregisterreihe 36 in den Registern AC(03) bis AC(11) gespeichert, wobei auf die Adresse 03 seines niedrigstwertigen Wortes 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 dem Kettenregister 17 von 3 für den acht 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 eine 1-Wort MCND-Referenz enthalten sind.
  • Der Abschnitt MOND 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 Akkumulatorregisterreihe 36, auf das durch die Adresse gezeigt wird, die in dem Zeigerregister ACP(2) gespeichert ist, benutzt werden soll, um den neun 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 neun 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 acht 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 Akkumulatorregisterreihe 36 unter der Adresse 11 gespeichert ist, dann kann die Ausführung dieser neun 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 Akkumulatorregisterreihe 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 siebzehn 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 sechzehn Bits ein arith metischer Wert sind, während das siebzehnte Bit als Merker oder Kennzeichnung verwendet wird.
  • Dieser Multiplizierer und der Mikroprozessor, in den er integriert ist, sind zur Verwendung in Konsumelektronik wie etwa Telephonanrufbeantwortern entwickelt worden. Ein Blockdiagramm eines Anrufbeantworters, der diese Erfindung verkörpert, ist in 4 gezeigt. In dieser Vorrichtung ist der Prozessor 402 mit einer Telephonleitungsschnittstelle 404, einem Mikrophon 406 und einem Lautsprecher 408 funktional verbunden. Der Mikroprozessor 402 empfängt und sendet Schalldaten mittels der Telephonleitungsschnittstelle 404 über die Telephonleitung 410. Der Mikroprozessor ist außerdem in der Lage, mittels des Lautsprechers 408 Schall in den Umgebungsbereich zu senden und mittels des Mikrophons 406 Schalldaten aus dem Umgebungsbereich zu empfangen.
  • Weitere Merkmale und Einzelheiten, die für eine Verwendung in alternativen Ausführungsformen der Erfindung, aber nicht notwendig für die praktische Umsetzung der hier offenbarten Ausführungsformen der vorliegenden Erfindung außerdem in Erwägung zu ziehen sind, sind in den folgenden gleichzeitig anhängigen Anmeldungen offenbart:
    US-Patent lfd. Nr. 60/090 668 – "Method for Insuring Security of Program Data in One-Time Programmable Memory";
    US-Patent lfd. Nr. 09/305 891 – "Variable Word Length Data Memory"; und
    US-Patent lfd. Nr. 60/090 671 – "Flexible Accumulator Register File for Use in High Performance Microprocessors".
  • All diese werden gemeinsam mit der vorliegenden Anmeldung gehalten und besitzen wirksame Einreichungsdaten, die gleichzeitig zum Datum der vorliegenden Anmeldung sind, und sind hiermit durch die Bezugnahme Bestandteil dieses Patents.
  • Wie ein Fachmann auf dem Gebiet erkennt, können die neuartigen Konzepte, die in der vorliegenden Anmeldung beschrieben sind, über einen enorm großen Anwendungsbereich modifiziert und variiert werden, und dementsprechend soll der Geltungsbereich des Gegenstandes nicht durch irgendeinen der gegebenen besonderen, beispielhaften Lösungsansätze eingeschränkt sein.
  • Außerdem sollte beachtet werden, dass mit der Zeit tendenziell eine wachsende Zahl von Funktionen in einem einzigen Chip vereint wird. Die offenbarten Ausführungsformen der vorliegenden Erfindung können selbst bei verschiedenen Zuordnungen von Funktionen zu Chips vorteilhaft sein, solange die oben beschriebenen Funktionsprinzipien des Betriebs noch eingehalten werden.
  • In weiteren Ausführungen könnten die Schnellübertrags-Addierer in der Multiplizierer-Anordnung durch übertragerhaltende Addierer ersetzt werden, so lange ein 32-Bit-Addierer-Endblock integriert ist, um zum Schluss die Überträge auszugeben.

Claims (4)

  1. Mikroprozessor, mit: einem Programmzähler (PC), der mit einem Befehlsdecodierer funktional verbunden ist; einer Arithmetik-Logik-Einheit (31) (ALU), die mit dem Befehlsdecodierer funktional verbunden ist, um Arithmetikoperationen auszuführen; und einem Multipliziererblock, der eine Anordnung von Addierern (30) besitzt, die mit der ALU funktional verbunden sind und miteinander verbunden sind, um eine Binärzahl mit Einzelwortlänge mit einer weiteren Zahl mit einer Länge von zwei oder mehr Wörtern zu multiplizieren, indem die Zahlen wortweise multipliziert werden; und dadurch gekennzeichnet, dass: die ALU 16 Bit besitzt und die Addierer 17 Bits besitzen und dass er ferner eine Anordnung aus gepaarten Akkumulatoren (AC0, AC16; AC1, AC17; ..., AC15, AC31), die mit der ALU funktional verbunden sind, umfasst.
  2. Mikroprozessor nach Anspruch 1, bei dem auf gespeicherten Inhalt eines Akkumulatorpaars durch einen einzigen Adresszähler (49) Bezug genommen wird.
  3. Mikroprozessor nach einem vorhergehenden Anspruch, der einen 4-Bit-nach-16-Bit-Decodierer umfasst, der eine Barrelshift-Funktion in dem Multipliziererblock erleichtert.
  4. Telephonanrufbeantworter, mit: einem Mikroprozessor nach einem vorhergehenden Anspruch; einer Schnittstelle, die mit einer Telephonleitung funktional verbunden ist, um Nachrichten zu empfangen und zu senden; einem Mikrophon, das mit dem Steuerabschnitt funktional verbunden ist, um Schall aufzunehmen, der in dem Anrufbeantworter gespeichert wird; und einem Lautsprecher, der mit dem Steuerabschnitt funktional verbunden ist, um Schall, der in dem Anrufbeantworter gespeichert ist, wiederzugeben.
DE69920582T 1998-06-25 1999-06-25 Verfahren zum Multiplizieren von Zahlen in Mehrwortkettendarstellung Expired - Lifetime DE69920582T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US9058998P 1998-06-25 1998-06-25
US90589P 1998-06-25

Publications (2)

Publication Number Publication Date
DE69920582D1 DE69920582D1 (de) 2004-11-04
DE69920582T2 true DE69920582T2 (de) 2005-09-08

Family

ID=22223449

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69920582T Expired - Lifetime DE69920582T2 (de) 1998-06-25 1999-06-25 Verfahren zum Multiplizieren von Zahlen in Mehrwortkettendarstellung

Country Status (3)

Country Link
EP (1) EP0967543B1 (de)
JP (1) JP2000035874A (de)
DE (1) DE69920582T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250139254A1 (en) * 2023-11-01 2025-05-01 International Business Machines Corporation Disassembling authorized code services to determine valid parameters and parameter values to generate input set

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2749647C1 (ru) * 2020-11-17 2021-06-16 Федеральное государственное бюджетное учреждение науки Институт космических исследований Российской академии наук Способ умножения чисел в позиционном коде

Family Cites Families (6)

* 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.
JPS6115233A (ja) * 1984-06-30 1986-01-23 Sony Corp 乗算器
KR950001055B1 (ko) * 1992-05-26 1995-02-08 삼성전자 주식회사 승산방법 및 회로
FR2718866B1 (fr) * 1994-04-19 1996-05-15 Sgs Thomson Microelectronics Dispositif de calcul arithmétique et logique et procédé de commande.
US5436860A (en) * 1994-05-26 1995-07-25 Motorola, Inc. Combined multiplier/shifter and method therefor
US5771186A (en) * 1995-06-07 1998-06-23 International Business Machines System and method for multiplying in a data processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250139254A1 (en) * 2023-11-01 2025-05-01 International Business Machines Corporation Disassembling authorized code services to determine valid parameters and parameter values to generate input set

Also Published As

Publication number Publication date
EP0967543A3 (de) 2001-03-07
JP2000035874A (ja) 2000-02-02
EP0967543B1 (de) 2004-09-29
EP0967543A2 (de) 1999-12-29
DE69920582D1 (de) 2004-11-04

Similar Documents

Publication Publication Date Title
DE3851746T2 (de) Sprungvorhersage.
DE4035405C2 (de)
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE2230102C2 (de) Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung
DE69502098T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE69503046T2 (de) Mehrfachbefehlssatzabbildung
DE68924380T2 (de) Vernichtung von Pipelineblasen in einem Rechnersystem.
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE3424962C2 (de)
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE3751540T2 (de) Verfahren und Vorrichtung zur Datenverarbeitung.
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE2715073C3 (de) Mikroprogrammierte Rechner-Steuervorrichtung
DE10297581T5 (de) Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor
DE69718485T2 (de) Registeraddressierung in einer datenverarbeitungsvorrichtung
DE19735871A1 (de) Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung
DE112006000340T5 (de) Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition