DE69031420T2 - Mikrokontroller zur schnellen Ausführung einer grossen Anzahl von Befehlen, die in Folgen von gleichartigen Befehlen zerlegbar sind - Google Patents

Mikrokontroller zur schnellen Ausführung einer grossen Anzahl von Befehlen, die in Folgen von gleichartigen Befehlen zerlegbar sind

Info

Publication number
DE69031420T2
DE69031420T2 DE69031420T DE69031420T DE69031420T2 DE 69031420 T2 DE69031420 T2 DE 69031420T2 DE 69031420 T DE69031420 T DE 69031420T DE 69031420 T DE69031420 T DE 69031420T DE 69031420 T2 DE69031420 T2 DE 69031420T2
Authority
DE
Germany
Prior art keywords
data
operands
processing
sequence
address
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
DE69031420T
Other languages
English (en)
Other versions
DE69031420D1 (de
Inventor
Jean-Pierre Bournas
Peter Klapproth
Jean-Jacques Quisquater
Dominique De Waleffe
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.)
NXP BV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Application granted granted Critical
Publication of DE69031420D1 publication Critical patent/DE69031420D1/de
Publication of DE69031420T2 publication Critical patent/DE69031420T2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf einen Mikrokontroller zur schnellen Ausführung einer großen Anzahl von in gleichartige Befehle zerlegbaren Befehlen mit:
  • - einer Zentraleinheit (CPU) zur Steuerung und Ausführung eines Datenverarbeitungsprogramms,
  • - einer Gesamtheit von Speichern mit wenigstens einem Programmspeicher zur Speicherung eines von der Zentraleinheit auszuführenden Programms und mit wenigstens einem Arbeitsspeicher des Lese/Schreibe-Typs zur Speicherung von zu verarbeitenden Daten und der späteren, aus dem Verarbeitungsprozeß hervorgehenden Ergebnisse, wobei der Arbeitsspeicher mit Adressen- und Datenports versehen ist,
  • - einem spezialisierten Verarbeitungsorgan, um Sequenzen von Operationen mit einer Vielzahl von Operanden durchzuführen, die seinem Eingang zugeführt werden, wobei unter den Operanden v Operanden variabel sind und k Operanden parametrischer Art sind, da sie während einer Sequenz von Operationen konstant beibehalten werden,
  • - einer zu dem spezialisierten Verarbeitungsorgan gehörenden Sequenzsteuerung, um den Ablauf einer Sequenz von Operationen zu bestimmen,
  • - einer zu dem spezialisierten Verarbeitungsorgan und der Sequenzsteuerung gehörenden "Zustand-und-Befehls"-Registereinheit und
  • - einer internen Busanordnung, um vor allem Adressen und Daten zwischen den betreffenden Elementen des Mikrokontrollers auszutauschen.
  • Im allgemeinen ist es recht einfach, mit einem Computer schnell eine große Menge von Daten zu verarbeiten, wenn es keine Beschränkungen bezüglich des Umfangs und damit der Leistung des für diese Aufgabe benutzten Computers gibt.
  • Man kann jedoch feststellen, daß sich ein großer Teil der momentanen Entwicklungen auf dem Gebiet der Informationsverarbeitung auf Systeme geringen Umfangs bezieht, die so weit wie möglich Anordnungen verwenden, in die vielfältige und relativ komplexe Funktionen integriert sind. Ein besonders bedeutendes Beispiel aus dem Gebiet der miniaturisierten und tragbaren Verarbeitungsvorrichtungen stellen die intelligenten Karten (auch "Chipkarten" genannt) dar, die sich für vielfältige Anwendungen eignen, beispielsweise: Austausch von Bankinformationen, Zugangskontrolle, Unterschriftennachweis, usw.
  • Aus Kostengründen und im Hinblick auf eine große öffentliche Verbreitung funktioniert eine intelligente Karte mit Hilfe einer einzelnen integrierten Halbleiteranordnung, deren interne Struktur im allgemeinen die Form eines Mikrokontrollers hat, der selbst allein die Funktionen von Programmsteuerung, Speicherung, Verarbeitung der dem Eingang der Karte zugeführten Daten und Ausgabe der verarbeiteten Daten an seinen Ausgängen übernimmt.
  • Wenn die durchzuführende Verarbeitung von Daten eine große Anzahl von gleichen und vor allem in Sequenzen von gleichartigen Operationen zerlegbaren Operationen mit Operanden reduzierten Formats (beispielsweise 8 Bit) umfaßt, ist es vorteilhaft, neben einer Zentraleinheit, die mehr für die eher globalen Steuerungsaufgaben vorbehalten ist, ein spezialisiertes Verarbeitungsorgan des Verschaltungslogik- Typs einzurichten, das geeignet ist, mit großer Geschwindigkeit eine bestimmte Art von arithmetischen und/oder logischen Operationen auszuführen, und zwar relativ autonom von der Zentraleinheit und wenigstens während der Dauer einer Sequenz von Operationen oder Serie von aufeinanderfolgenden einzelnen Verarbeitungszyklen.
  • Verschiedene Probleme im Zusammenhang mit dem Zugriffskonflikt bei einem gemeinsam genutzten Speicher sind in dem Dokument EP-A-0 320 041 (Alcatel und Bell Telephone) beschrieben worden. Dieses Dokument beschreibt vor allem eine Anordnung mit einer Zentraleinheit (PR) und einer Karte von Kommunikationsleitungen (LC), die gemeinsam auf einen gemeinsamen Speicher (RAM) zugreifen. Die bekannte Anordnung sieht auch eine interne Busanordnung vor, mit vor allem einen Datenbus, ausschließlich der Übertragung von Daten zwischen der Leitungskarte und dem Datenport des Speichers dient, sowie mit einem Datenbus-Multiplexer (MD) und einem Adreßbus-Multiplexer (MA). Allerdings gibt dieses Dokument aus dem Stand der Technik weder Details über die Art der Verarbeitungen, die von den auseinanderliegenden und über die Kommunikationsleitungen verbundenen Stationen durchgeführt werden, noch über deren Anpassung an eine Verarbeitung multisequentieller Art.
  • Da es sich um einen Mikrokontroller für den Einbau in eine intelligente Karte handelt, bemüht man sich vor allem darum, die durch technologische Integrationsgründe und Kostengründe bedingte geringe Speicherkapazität, die ebenfalls durch die zur Zeit realisierbare Technik begrenzte Taktgeschwindigkeit sowie das notwendigerweise reduzierte Format (beispielsweise 8 oder 16 Bit) der durch Operation verarbeiteten Daten mit der Ausführungsgeschwindigkeit der Verarbeitung in Einklang zu bringen. Für eine Verwendung in der Praxis darf die Dauer der Verarbeitung eine Grenze in der Größenordnung von einer Sekunde nicht überschreiten, was einer akzeptablen Wartezeit für den Benutzer entspricht.
  • Daher muß der Mikrokontroller so ausgeführt sein, daß er trotz der erheblichen Einschränkungen der eingesetzten Mittel, genauer gesagt dem Umfang der verwendeten Halbleiteranordnung, die größtmögliche Verarbeitungseffizienz aufweist.
  • Übrigens bedingt die Funktionsweise des in dem Dokument FR-A- 2 613 861 beschriebenen Dokuments notwendigerweise Wartezeiten für das spezialisierte Verarbeitungsorgan, vor allem für das erneute Laden von neuen zu verarbeitenden Daten durch die Zentraleinheit, sowie ebenfalls Wartezeiten für die Zentraleinheit, wenn für das Verarbeitungsorgan ein Zugriff auf den Arbeitsspeicher erforderlich ist und der Zentraleinheit der Zugriff auf die internen Adreß- und Datenbusse verweigert wird. Diese Wartezeiten führen zu einer sehr erheblichen Verlangsamung der Funktionsweise des bekannten Mikrokontrollers.
  • Aufgabe der Erfindung ist es vor allem, einen Mikrokontroller zu verschaffen, dessen Struktur es durch eine größere Unabhängigkeit zwischen der Zentraleinheit und dem Verarbeitungsorgan ermöglicht, die Wartezeiten dieser beiden so weit wie möglich zu vermeiden und dadurch die Verarbeitungsgeschwindigkeit beträchtlich zu erhöhen.
  • Der erfindungsgemäße Mikrokontroller ist daher entsprechend Anspruch 1 gekennzeichnet.
  • Im vorangegangenen wurde der Ausdruck "Operand parametrischer Art" verwendet, um ein Fragment oder Wort mit Arbeitsformat (beispielsweise mit 8 Bits) anzugeben, das aus einem Operandendatenelement viel größeren Formats extrahiert wird und ohne Veränderung während mehrerer aufeinanderfolgender und eine Sequenz von Operationen bildender Einzeloperationen verwendet wird, aber in der Lage ist, bei einer anderen Sequenz einen anderen Wert anzunehmen. In analoger Weise bezeichnet der Ausdruck "variabler Operand" ein Fragment mit Arbeitsformat, das aus einem Operand viel größeren Formats extrahiert wird, wobei aber die Position des Fragments in dem gesamten Operandendatenelement (und daher der Wert des extrahierten Wortes) im Laufe einer Sequenz von Operationen nacheinander variiert.
  • Der erfindungsgemäße Mikrokontroller hat den Vorteil, daß das spezialisierte Verarbeitungsorgan Zugriff auf den Arbeitsspeicher hat, ohne die Funktion der Zentraleinheit während einer Serie von eine Sequenz bildenden Operationen zu unterbrechen, und daß während dieser Zeitspanne die Zentraleinheit frei ist, um andere zusätzliche Aufgaben zu übernehmen und vor allem den Inhalt der Adreßzeiger-Register zu verändern, die sich oberhalb der Warteschlangen hinsichtlich der bei der nächsten Sequenz zu verarbeitenden Daten befinden. Das Verarbeitungsorgan verwendet seinerseits die Zeigerregister, die sich unterhalb der Warteschlangen befinden, wobei diese Register während einer Sequenz von Operationen automatisch durch die Sequenzsteuerung inkrementiert (oder dekrementiert) werden.
  • Dieser Vorteil bedeutet einen sehr erheblichen Zeitgewinn, da die Zentraleinheit ja das Laden eines Adreßzeigers innerhalb einer Zeit vornimmt, die achtmal länger ist als die, die einer Operation des Verarbeitungsorgans entspricht.
  • Da die Adresse der variablen Operanden von den Zeigerregistern unterhalb der Warteschlangen geliefert wird, ist es vorteilhaft, variable Operandendaten so in Warteschlangen aufzunehmen, daß die gleichzeitigen Übertragungen innerhalb der Datenwarteschlangen in einer einzigen Taktperiodendauer, die das Verarbeitungsorgan synchronisiert, durchgeführt werden.
  • Eine besonders vorteilhafte Ausführungsform der Erfindung, die auf den Fall anwendbar ist, wo die Zahl k von Operanden parametrischer Art größer 1 ist, ist dadurch gekennzeichnet, daß die Sequenzsteuerung und das Verarbeitungsorgan Mittel zur Sequenzierung in wiederholten Einzelzyklen und Speichermittel umfassen, die festlegen können, daß jeder der k Operanden parametrischer Art nacheinander von dem Verarbeitungsorgan während eines Einzelverarbeitungszyklus mit k Schrillen verwendet wird, wobei während dieses Einzelzyklus nur ein Ergebnisdatenelement in den Arbeitsspeicher zu schreiben ist.
  • Bei dieser Ausführungsform wird eine Sequenz von Operationen nun in eine Serie von aufeinanderfolgenden Einzelzyklen zerlegt, während derer mehrere aus einem vollständigen Operanden extrahierte Fragmente oder Wörter zyklisch berücksichtigt werden, beispielsweise die Operanden Pi, Pj, Pk; Pi, Pj, Pk; Pi... usw., wobei die Indizes i bis k den Rang des Wortes in dem vollständigen Operandendatenelement parametrischer Art repräsentieren. Die Abfolge von Operationen, die Pi, Pj, Pk verwenden, definiert einen Einzelzyklus von Operationen, die einen Satz von variablen Operanden verwenden. Beim folgenden Einzelzyklus werden andere variable Operanden verwendet, und so wird fortgefahren, bis alle vollständigen variablen Operandendaten komplett ausgeschöpft sind. Die Gesamtheit dieser aufeinanderfolgenden Einzelzyklen bildet dann das, was im vorangegangenen als Sequenz von Operationen bezeichnet wurde.
  • Wie im folgenden noch näher gezeigt werden soll, ermöglicht diese Disposition eine beträchtliche Beschleunigung des Verarbeitungsprozesses, und sie ist vorteilhafterweise mit Initialisierungsmitteln verbunden, die geeignet sind, zu Beginn jeder Serie von Einzelzyklen einen besonderen Initialisierungszyklus auszuführen, während dessen Dauer das Verarbeitungsorgan die Datenregister mit den k Operanden parametrischer Art aus einem Adreßzeigerregister lädt, das durch das Verarbeitungsorgan inkrementierbar ist.
  • Wenn man daher eine Anzahl k von Operanden parametrischer Art wählt, wobei k-1 = v (wobei v die Anzahl variabler Operanden ist), kann der lokale Bus während einer Sequenz von Operationen ohne Unterbrechung verwendet werden: Das Verarbeitungsorgan führt bei jedem Schritt eine Basisoperation aus, während derer diese v variablen Operanden nacheinander neu geladen werden und dann ein Ergebnisdatenelement eingeschrieben wird. Das ganze bildet einen Einzelzyklus von Operationen. Die Funktion des Verarbeitungsorgans ist dann optimal und beinhaltet keine Wartezeit während einer Sequenz, die aus aus einer Abfolge von Einzelzyklen von Operationen gebildet wird. Es ergibt sich auch keine Wartezeit vor dem Beginn der folgenden Sequenz, wenn die Zentraleinheit genügend Zeit hatte, unabhängig die Adreßzeiger bezüglich dieser nächsten Sequenz neu zu laden.
  • Andere besondere, nicht-einschränkende Ausführungsformen der Erfindung, Details und Vorteile werden anhand der Zeichnung im folgenden näher beschrieben. Es zeigen:
  • Figur 1 ein Blockschema der allgemeinen Struktur eines erfindungsgemäßen Mikrokontrollers,
  • Figur 2 in Form eines Blockschemas einen Teil des Mikrokontrollers aus Figur 1 sowie eine Abwandlung der Verschaltung dieses Teils in der allgemeinen Struktur,
  • Figur 3 im Detail einen anderen Teil des erfindungsgemäßen Mikrokontrollers und
  • Figur 4 die Struktur eines Mikrokontrollers entsprechend einer Ausführungsvariante der Erfindung.
  • Die allgemeine Struktur eines Mikrokontrollers nach dem ersten Ausführungsbeispiel der Erfindung ist in Figur 1 dargestellt. Dieser Mikrokontroller besteht aus einer Zentraleinheit (CPU) 10 zur Steuerung und Ausführung eines Datenverarbeitungsprogramms, wobei eine Gesamtheit von Speichern wenigstens einen Programmspeicher (ROM) 11 zur Speicherung eines von der Zentraleinheit 10 auszuführenden Programms und wenigstens einen Arbeitsspeicher (RAM) 12 des Lese/Schreibe- Typs zur Speicherung des zu verarbeitenden Daten sowie der späteren, aus dem Prozeß der Verarbeitung hervorgehenden Ergebnisse umfaßt. Der Arbeitsspeicher 12 ist mit einem Adreßport 120 und mit einem Datenport 121 versehen.
  • Der Mikrokontroller umfaßt außerdem ein spezialisiertes Verarbeitungsorgan 13, um Sequenzen von Operationen mit einer Vielzahl von Operanden OP[1...v] und OP'[1...k] auszuführen, die seinem Eingang zugeführt werden, eine zu dem Verarbeitungsorgan 13 gehörende Sequenzsteuerung 22, um den Ablauf einer Sequenz von Operationen zu bestimmen, und eine zu dem Verarbeitungsorgan gehörende "Zustand-und-Befehls"-Registereinheit 23.
  • Die Zentraleinheit 10 kommuniziert mittels einer internen Busanordnung mit den Hauptelementen des Mikrokontrollers. In Figur 1 sind ein Adreßbus 20 und ein Datenbus 21 dargestellt.
  • Der Übersichtlichkeit wegen ist der Befehlsbus in der Figur nicht dargestellt.
  • Der erfindungsgemäße Mikrokontroller umfaßt außerdem in Ergänzung zu dem Datenbus 21, der mit der Zentraleinheit verbunden und als als sogenannter erster Datenbus bezeichnet wird, einen lokalen Bus 25, der für die Übertragung von Daten zwischen dem Verarbeitungsorgan 13 und dem Datenport 121 des Arbeitsspeichers 12 reserviert und spezialisiert ist. Dieser lokale Bus 25 sowie der genannte erste Datenbus 21 können über einen Datenschaltmultiplexer 26 getrennt auf den genannten Port 121 des Arbeitsspeichers 12 zugreifen. Der Adreßport 120 des Arbeitsspeichers 12 ist mit dem Ausgang eines Adreßschaltmultiplexers 28 verbunden, dessen Eingänge mit dem Adreßbus 20 über mehrere Adreßzeigerregister 21-34, 41-44 verbunden sind. Wenigstens ein Teil dieser Adreßzeigerregister ist in seriellen Warteschlangen wie die Warteschlangen 31, 41; 32, 42 aufgebaut.
  • Wie bereits gezeigt, repräsentieren die Operanden OP[1...v] und OP'[1...k] Abschnitte mit reduzierten Format (Worte mit 8 oder 16 Bits) von großformatigen Operandendaten, da ein Mikrokontroller zu einem bestimmten Zeitpunkt ja nur Daten verarbeiten kann, die über die Datenbusse 21, 25 mit ihrem eigenen begrenzten Format transferierbar sind. Da der erfindungsgemäße Mikrokontroller dazu bestimmt ist, eine große Anzahl von in Sequenzen von gleichartigen Befehlen zerlegbaren Operationen zu verarbeiten und jede Serie von Einzeloperationen das bildet, was eine Sequenz von Operationen genannt wurde, kann man die durchzuführende Verarbeitung meist per Zyklus von Einzeloperationen organisieren, während derer ein (oder mehrere) Operand(en) OP[1...v] einen spezifischen Wert annimmt (annehmen), der bei jedem Schritt der Verarbeitung unterschiedlich ist, wohingegen ein (oder mehrere) Operand(en) OP'[1...k] während einer bestimmten Sequenz den gleichen Wert behält (behalten). Dies ist vor allem bei der Multiplikation zweier großer Zahlen der Fall, die betrachtet werden kann als eine Abfolge von Multiplikationen von Operanden des Multiplikanden - Variablen genannt, da sie nacheinander bei jedem Rechenschritt gewählt werden - mit Operanden des Multiplikatoren, wobei letzterer während dieser Serie von Operationen konstant gehalten wird und aus diesem Grunde als Operand parametrischer Art bezeichnet wird. In dem erfindungsgemäßen Mikrokontroller ist die Anzahl von Adreßzeiger-Warteschlangen 31, 41; 32, 42; ... wenigstens gleich v+ 1, wobei v der Anzahl variabler Operanden entspricht, zu der man eine Warteschlange 34, 44 addiert, die dazu bestimmt ist, die Adresse des Ergebnisses von jedem Zyklus von Operationen anzuzeigen. Es ist dann möglich, mittels der Zentraleinheit 10 die Adresse des Beginns der variablen Operanden und die Adresse des Beginns der zu schreibenden Ergebnisse in Voraussicht auf die nächste Verarbeitungssequenz laden zu lassen, wohingegen während der laufenden Sequenz die Register 41, 42, ...44 automatisch unter der Steuerung der Sequenzsteuerung inkrementiert (oder dekrementiert) werden. In der Figur ist der Inkrementierungsbefehl für die Register 41, 42, ...44 durch den Pfeil 36 symbolisiert. Am Ende einer Verarbeitungssequenz können die in den Kopfregistern 31, 32, 34 der Adreßzeiger-Warteschlangen enthaltenen Adreßwerte innerhalb eines einzigen Taktzyklus in die abwärts liegenden Register 41, 42, ...44 dieser Warteschlangen übertragen werden. Die Wartezeit, die dem erneuten Laden der Zeiger 31, 32, 34 durch die Zentraleinheit 10 entspricht, wird dann bedeutend verkürzt, da dieses Laden durchgeführt wird, während das Verarbeitungsorgan 13 dabei ist, die Daten einer Sequenz zu verarbeiten.
  • Das Vorhandensein des lokalen Busses 25 und des Datenschaltmultiplexers 26 ermöglicht es dem Verarbeitungsorgan 13, direkt auf den Arbeitsspeicher 12 zuzugreifen, während in der gleichen Zeit die Zentraleinheit 10 frei ist, um über den Datenbus 21 zu verfügen, beispielsweise um von dort Daten aus dem Programmspeicher 11 zu holen. Diese Disposition ermöglicht eine beträchtliche Steigerung der Verarbeitungseffizienz des erfindungsgemäßen Mikrokontrollers.
  • Bei einer vorteilhaften Ausführungsform der Erfindung versorgt der lokale Bus 25 das Verarbeitungsorgan 13 über mehrere Datenregister 51, 52...54, 55, 56, 57, 61, 62..., von denen wenigstens ein Teil als serielle Warteschlange 51, 61; 52, 62; ... eingerichtet ist, wobei die Anzahl dieser Warteschlangen wenigsten gleich v ist (wobei v die Anzahl variabler Operanden repräsentiert). Bei der in Figur 1 schematisch dargestellten Ausführungsform ist das Datenregister 58 zur Speicherung eines aus dem Verarbeitungsorgan 13 kommenden Teilergebnisses reserviert. Während der lokale Bus 25 für die Übertragung dieses Ergebnisses von dem Register 58 zu dem Arbeitsspeicher 12 belegt ist, können neue variable Operanden OP[1...v] innerhalb der Warteschlangen 51, 61; 52,62; ... zwecks Verwendung dieser neuen Operanden bei der der folgenden Operation übertragen werden. Wenn es erforderlich ist, die variablen Operanden OP[1...v] bei jedem Verarbeitungsschritt des Verarbeitungsorgans 13 zu verändern, muß man zusätzlich zu der Taktzykluszeit, die für das Schreiben des Ergebnisses reserviert ist, über v Zyklenzeiten des lokalen Busses 25 verfügen, um die v Datenregister 51, 52... neu zu laden.
  • Es sei darauf hingewiesen, daß sich der Prozeß der Datenverarbeitung die meiste Zeit so organisieren läßt, daß im Anschluß mehrerer Einzelverarbeitungsschritte nur ein einziges Ergebnis im Arbeitsspeicher gespeichert zu werden braucht. Dies ist vor allem bei dem typischen Beispiel der Multiplikation zweier großer Zahlen der Fall, wo die Zwischenergebnisse unmittelbar in den folgenden Verarbeitungsschritt wieder eingeführt werden. Verschiedene, in der Praxis wichtige Anwendungen können entsprechend dieser Verarbeitungsart organisiert werden.
  • Bei einer besonders vorteilhaften Ausführungsform der Erfindung ist der Mikrokontroller zur Verwendung einer Anzahl k von Operanden parametrischer Art größer 1 eingerichtet, die Sequenzsteuerung 22 umfaßt Mittel zur Sequenzsteuerung in wiederholten Einzelzyklen, und das Verarbeitungsorgan 13 umfaßt Schaltmittel, die festlegen können, daß jeder der k Operanden parametrischer Art nacheinander von dem Verarbeitungsorgan 13 im Laufe eines Einzelverarbeitungszyklus mit k Schritten verwendet wird, wobei während dieses Einzelzyklus nur ein Ergebnisdatenelement in den Arbeitsspeicher 12 geschrieben wird.
  • Einzelheiten der Funktionsweise können nun mit Hilfe eines ersten Beispiels beschrieben werden, bei dem davon ausgegangen wird, daß v = 2 und k = 3. Die Datenregister 54, 55, 56 werden zur Speicherung der Operanden parametrischer Art OP'[1], OP'[2], OP'[3] verwendet. Die in diesen Registern gespeicherten Daten werden nacheinander im Laufe eines Einzelverarbeitungszyklus mit einer Dauer von 3 Einzelschritten oder Taktzyklen verwendet. Während dieses Einzelzyklus mit 3 Schritten werden nacheinander die Operationen ausgeführt, die aus der Kombination von OP'[1] mit den variablen Operanden OP[1] und OP[2] bestehen, dann die Kombination des Operanden OP'[2] mit den variablen Operanden OP[1] und OP[2] und schließlich die Kombination des Operanden OP'[3] mit den variablen Operanden OP[1] und OP[2]. Im folgenden Einzelzyklus werden die variablen Operanden OP[1] und OP[2] erneuert, während die Operanden parametrischer Art OP'[1,2,3] während der eine Sequenz von Operationen bildenden Abfolge von Einzelzyklen beibehalten werden. Man stellt fest, daß es möglich ist, bei jedem Schritt den lokalen Bus 25 zu verwenden, d.h. zwei Schritte für das erneute Laden der Datenregister 51 und 52 und einen Schritt für das Laden des zuvor im Datenregister 58 gespeicherten Ergebnisdatenelements in den Arbeitsspeicher 12. Im Laufe dieser drei Einzelverarbeitungsschritte wurden drei verschiedene Verarbeitungen ausgeführt und die Zwischenergebnisse von zwei Verarbeitungsoperationen wieder durch später noch zu beschreibende eigene Mittel in das Verarbeitungsorgan 13 zurückgeführt.
  • Bei diesem Beispiel ist deutlich, daß das Laden der beiden Operanden in die beiden, sich oberhalb der Warteschlange befindenden Datenregister 51 und 52 aus Adreßzeigerregistern unterhalb der Warteschlangen 41 und 42 mit automatischer Inkrementierung (oder Dekrementierung) erfolgen kann, während die Adresse, die dem im Arbeitsspeicher 12 zu speichernden Ergebnisdatenelement entspricht, aus dem Zeigerregister 14 unterhalb der Warteschlange 34, 44 der Adreßzeiger erhalten wird. Die Sequenzsteuerung 22 ist mit geeigneten Mitteln versehen, um den Adreßschaltmultiplexer 28 so zu steuern, daß er die geeignete Adresse an den Adreßport 120 des Arbeitsspeichers im Laufe eines Einzelyzklus von Operationen übermittelt. Da das Verarbeitungsorgan 13 bei jedem Taktzyklusschritt des Busses 25 eine Verarbeitung ausführt, arbeitet es mit maximaler Effizienz. Selbstverständlich können andere Werte für die Anzahl variabler Operanden v und die Anzahl von Operanden parametrischer Art k verwendet werden, aber man wird schnell feststellen, daß die maximale Effizienz immer dann erreicht wird, wenn die Zahlen v und k in der Beziehung k-1 = v stehen.
  • Für das Laden der k Operanden parametrischer Art in die Register 54, 55, 56 zu Beginn jeder Sequenz von Operationen ist es vorteilhaft, in der Sequenzsteuerung 22 eigene Mittel einzurichten, um einen besonderen Initialisierungszyklus auszuführen, während dessen Dauer diese k Operanden aus einem Adreßzeigerregister 33 geladen werden, das unter Steuerung der Sequenzsteuerung 22 so inkrementiert wird, daß es in drei Taktzyklen die Werte dieser Operanden liefert, die im Arbeitsspeicher 12 an drei aufeinanderfolgenden Adressen gespeichert wurden. Da die k Operanden parametrischer Art, die im Laufe der nachfolgenden Sequenz verwendet werden sollen, an Adressen gespeichert wurden, die unmittelbar auf die Adressen der k Operanden im Laufe der Verwendung folgen, ist für das Zeigerregister 33 nur eine Inkrementierung erforderlich, damit es die nächste Adresse des betreffenden Operanden korrekt anzeigt, der zu Beginn der nachfolgenden Sequenz geladen werden soll.
  • Daher braucht die Zentraleinheit 12 nicht einzugreifen, um das Zeigerregister 33 neu zu laden, solange alle im Arbeitsspeicher 12 gespeicherten Operanden OP'[1...k] noch nicht genutzt worden sind.
  • Anhand eines zweiten Beispiels soll eine vorteilhafte Variante einer Ausführung der Erfindung beschrieben werden. Die Anzahl k von Operanden parametrischer Art wird auf vier festgelegt, während die Anzahl v von variablen Operanden weiterhin zwei beträgt. In Figur 1 ist mit unterbrochenen Linien ein zusätzliches Datenregister 59 dargestellt, das in diesem Fall erforderlich ist. Der Mikrokontroller ist also so eingerichtet, daß er einen Einzelverarbeitungszyklus mit vier Schritten ermöglicht, der vier Verarbeitungsoperationen ausführt, während derer der lokale Bus 25 zwei Zyklenzeiten lang für das erneute Laden der beiden variablen Operanden in die Register 51 und 52 und eine Zykluszeit für das Schreiben des im Register 58 enthaltenen Ergebnisses in den Arbeitsspeicher 12 belegt ist. Da der Einzelverarbeitungszyklus vier Schritte hat, gibt es eine Taktzykluszeit, in der der lokale Bus nicht belegt ist. Nichtsdestotrotz kann es bei bestimmten Anwendungen sehr vorteilhaft sein, einen Mikrokontroller einzurichten, der während bestimmter Verarbeitungssequenzen Verarbeitungen mit sechs Operanden (zwei variablen Operanden und vier Operanden parametrischer Art) ausführen kann, wohingegen während anderer Sequenzen die Anzahl verwendeter Operanden auf fünf reduziert wird (zwei variable Operanden und drei Operanden parametrischer Art), wobei dann die Funktion wie zuvor gezeigt optimal ist. Bei dieser Ausführungsvariante, sind die "Zustands-und-Befehls"-Registereinheit 23 und die Sequenzsteuerung 22 mit Sequenzsteuerungsmitteln versehen, die es ermöglichen, daß das Verarbeitungsorgan 13 für eine Serie von aufeinanderfolgenden Einzelzyklen entweder mit vier Operanden parametrischer Art und einem Einzelzyklus mit vier Schritten oder mit drei Operanden parametrischer Art und einem Einzelzyklus mit drei Schritten arbeitet, und all dies unter der Steuerung der Zentraleinheit 10.
  • Allgemeiner betrachtet ist der erfindungsgemäße Mikrokontroller so eingerichtet, daß er eine Anzahl von k Operanden parametrischer Art akzeptiert, so daß k-1 > v und daß er Steuerungsmittel umfaßt, die die Funktionsweise entweder in Einzelzyklen mit k Schritten oder mit p Operanden parametrischer Art und einem Einzelzyklus mit p Schritten ermöglichen, wobei die Anzahl p kleiner ist als k und wenigstens gleich v + 1.
  • Aus Gründen der Klarheit wurde hier bis jetzt angegeben, daß das Laden in die Adreßzeiger-Register 31-34 durch die Zentraleinheit 10 über den Kanal des Adreßbusses 20 erfolgt. In der Praxis kann es jedoch vorteilhaft sein, wenn diese betreffenden Adreßwerte zu den genannten Registern 31-34 übertragen werden, indem als Übertragungsweg der Datenbus 21 anstatt des Adreßbusses 20 verwendet wird. Bei dieser in Figur 1 nicht dargestellten Ausführungsvariante genügt es, die Gesamtheit der Adreßzeiger-Register 31-41 mit dem Datenbus 21 zu verbinden und trotzdem eine zusätzliche Zugriffsmöglichkeit für den Adreßbus 20 einzurichten, jedoch nur auf eines der Register 31 oder 32 oder 34, das durch einen zusätzlichen Multiplexer (nicht dargestellt) selektiert und für eine herkömmliche Lese- oder Schreiboperation im Arbeitsspeicher 12 durch die Zentraleinheit 10 reserviert wird.
  • Anhand der Figur 2 soll nun ein Beispiel für das Verarbeitungsorgan 13 beschrieben werden. Es sei darauf hingewiesen, daß ein solches Verarbeitungsorgan Gegenstand einer französischen Patentanmeldung Nr. 89 17456 (PHF89/624) ist, die von der Anmelderin gleichzeitig mit der vorliegenden Anmeldung eingereicht wurde, und zwar unter dem Titel "Organe de traitment arithmétique associer une unité centrale de microprocesseur", veröffentlicht unter der Nummer FR-A-2 656 706. Das Verarbeitungsorgan 13 hat die Eingänge 71 und 72, die mit den Datenregistern 61 und 62 in Verbindung stehen, in denen die variablen Operanden OP[1] und OP[2] gespeichert werden, und die Eingänge 74, 75, 76 und 77, die mit den Datenregistern 54, 55, 56, 57 (Figur 1) in Verbindung stehen, in denen die Operanden OP'[1], OP'[2] ... OP'[4] gespeichert werden. Die Eingänge 74 bis 75 sind einem Multiplexer 80 zugeführt, der die Umschaltung vornimmt, durch die zu einem Verarbeitungszeitpunkt unter der Steuerung der Sequenzsteuerung 22 einer der Operanden parametrischer Art OP'[1...k] selektiert wird, wobei diese Steuerung durch den Steuereingang 81 und Punktstrichlinien 82 symbolisiert ist. In Figur 2 wurde durch einen doppelten Steuerbefehl (Punktstrichlinien 82') symbolisiert, daß der Multiplexer 80 durch die Sequenzsteuerung nicht nur zur Wahl des Operanden parametrischer Art gesteuert wird, der zu einem gegebenen Zeitpunkt der Verarbeitung selektiert werden soll, sondern auch, damit der Einzelzyklus mit drei oder vier Operanden ausgeführt wird.
  • Bei dem in Figur 2 gezeigten Beispiel wurde das Verarbeitungsorgan 13 untersucht, um eine der folgenden allgemeinen Formel entsprechende Berechnung zu realisieren:
  • B = aX + A,
  • bei der:
  • B eine große Zahl ist und einem Ergebnis (im allgemeinen ein Zwischenergebnis) entspricht, dessen aufeinanderfolgende Teilwerte im Arbeitsspeicher 12 über das Register 58 gespeichert werden,
  • X eine große Zahl ist, deren aufeinanderfolgende Extrakte dem Dateneingang 72 zugeführt werden,
  • A eine große Zahl ist, deren aufeinanderfolgende Extrakte dem Dateneingang 71 zugeführt werden, und
  • a ein Operand parametrischer Art ist, dessen Extrakte OP'[1...k] den Eingängen 74 bis 77 zugeführt werden.
  • Um diese Art von Operation auszuführen, umfaßt das Verarbeitungsorgan im wesentlichen einen Multiplizierer 84 von 8x8 Bits, der am Ausgang 85 ein Ergebnis mit 16 Bits liefert, auf den ein erster Addierer 86 von 16+8 Bits folgt und auf den dann ein zweiter Addierer 87 von ebenfalls 16+8 Bits folgt. Die 16 Ausgangsbits des zweiten Addierers 87 werden am Ausgang 88 in einen den starken Wertigkeiten des Ergebnisses der zweiten Addition entsprechenden hohen Teil, und am Ausgang 89 in einen den schwachen Wertigkeiten dieser Addition entsprechenden niedrigen Teil aufgeteilt. Der hohe Teil des Ergebnisses am Ausgang 88 wird in einem Pufferspeicher 90 gespeichert. Dieser Wert wird normalerweise über einen Multiplexer 91 wieder an den Eingang 92 des zweiten Addierers 87 für den folgenden Rechenschritt zurückgeführt, wenn dieser Wert den entsprechenden Wertigkeitsrang erreicht hat. Bei jedem ersten Schritt eines Zyklus mit drei Schritten wird der Multiplexer 91 jedoch so umgeschaltet, daß er den am Ausgang 71 verfügbaren variablen Operanden aufnimmt und ihn zum Eingang 92 des zweiten Addierers 87 überträgt. Bei jedem ersten Zyklusschritt wird auch der niedrige Teil (8 Bits geringer Wertigkeit) am Ausgang 89 des zweiten Addierers 87 über den Datenausgang 94 in das Register 58 als Ergebnis dieses Zyklus von Operationen eingegeben. Schließlich wird noch im Laufe jedes ersten Zyklusschrittes das zuvor im Pufferregister 90 gespeicherte Datenelement über einen Multiplexer 96 an den Kopf einer Reihe von Pufferregistern 97, 98, 99 übertragen, um zum geeigneten Zeitpunkt, d.h. beim letzten Schritt desselben Zyklus, am Eingang des zweiten Addierers 87 verwendet zu werden.
  • Außerhalb der ersten Zyklusschritte wird der Multiplexer 96 so positioniert, daß das Register 97 das Datenelement niedriger Wertigkeit am Ausgang 89 des zweiten Addierers 87 empfängt. Danach werden die in jedem der Register 97, 98, 99 enthaltenen Daten in das Register übertragen, das ihm in diesem Stapel folgt. (Das im Register 99 enthaltene Datenelement wurde benutzt und ist eliminiert).
  • Auf diese Weise erhält man eine geeignete Rückführung der Zwischenberechnungsdaten zum Eingang 100 des ersten Addierers 86.
  • Es sei darauf hingewiesen, daß wenn das Verarbeitungsorgan 13 drei Operanden parametrischer Art bearbeiten soll (k = 3 und unbenutzer Eingang 74), die korrekte Rückführung der Zwischendaten mittels des Registerstapels 97-99 erreicht wird, wenn eines der Register, beispielsweise das Register 98, umgangen wird, was der Einfachheit halber in Figur 3 symbolisch durch eine Verbindung 981 dargestellt ist, auch wenn dieser Effekt in Wirklichkeit mittels eines Multiplexers (nicht dargestellt) erreicht wird.
  • Wie in Figur 2 durch Punktstrichlinien gezeigt, werden die Multiplexer 91 und 96 durch die Sequenzsteuerung 22 von einem Steuereingang 81 betätigt.
  • Am Ende einer Verbeitungssequenz, wenn die Daten der den Eingängen 71 und 72 zugeführten variablen Operanden ausgeschöpft sind, werden diese Eingänge auf null gesetzt (die Register 51 und 52 - Figur 1 - werden auf null gesetzt) und es wird gewartet, bis die in den Pufferregistern des Verarbeitungsorgans 13 gespeicherten Werte zurückgeführt und in Form von Ergebnissen am Ausgang 94 herausgenommen sind. Es sei darauf hingewiesen, daß die Zyklen einer solchen "Leerung" des Verarbeitungsorgans 13 den gleichen Sequenzgesetzen unterliegt wie die anderen Berechnungszyklen, die Operanden ungleich null bearbeiten.
  • Figur 2 zeigt auch eine Variante der Struktur des Mikrokontrollers aus Figur 1, der Speicherplätze im Arbeitsspeicher 12 einsparen soll und Anwendung findet, wenn die von dem Mikrokontroller durchzuführende Verarbeitung von Daten wenigstens eine Sequenz umfaßt, für die eine bestimmte Anzahl von Daten niedriger Wertigkeit im Laufe der folgenden Sequenz als Operanden parametrischer Art wiederverwendet werden soll. Dazu werden die Daten am Ausgang 94 des Verarbeitungsorgans in einem Datenregister 58 gespeichert, aber anders als in Figur 1 dargestellt, ist dieses Register 58 über einen Multiplexer 580 mit dem lokalen Bus 58 verbunden. Das Ergebnis kann auch in den den Pufferspeichern 581, 582 und 583 eingefügt werden. Die Register 581, 582 und 583 bilden eine Datenregister-Warteschlange mit (k-1) Positionen für die Ergebnisdaten, wobei der Multiplexer 580 bestimmt, ob diese Warteschlange verwendet wird oder nicht. Im Laufe einer Sequenz von Operationen werden die aufeinanderfolgenden Ergebnisse im Arbeitsspeicher 12 aus einem Datenregister 58 gespeichert, wobei der Multiplexer 580 in die Position für direkten Zugriff auf den lokalen Bus 25 geschaltet wird. Am Ende der Sequenz sind die 4 letzten Ergebniswörter höchster Wertigkeit ebenfalls in den Registern 58, 581, 582 und 583 gespeichert. Vor Beginn der Sequenz von folgenden Operationen wird dann der Multiplexer 580 an den Eingang geschaltet, der dem Ausgang der Warteschlange (Register 581, 582, 583) entspricht, und die vier letzten Ergebnisdaten können ohne Eingreifen der Zentraleinheit 10 über den lokalen Bus 25 nacheinander in die Datenregister 54, 55, 56, 57 (siehe Figur 1) übertragen werden.
  • Bei bestimmten Anwendungen ist es nicht erforderlich, die betreffenden vier Ergebniswörter hoher Wertigkeit im Arbeitsspeicher 12 zu speichern, so daß die Sequenz vier Zyklen früher unterbrochen wird und der Arbeitsspeicher um acht Byte reduziert werden kann. Daher werden die Anzahl auszuführender Zyklen und die Funktionsweise des Verarbeitungsorgans 13 durch die Sequenzsteuerung 13 aufgrund eines Steuerwortes festgelegt, das durch die Zentraleinheit 10 in ein Steuerregister geladen wird, das Teil der "Zustands-und-Befehls"-Registereinheit 23 ist, die nun beschrieben werden soll.
  • Figur 3 zeigt das Schema eines Beispiels für eine Zustands-und-Befehls- Registereinheit, wie sie in Figur 1 mit dem Bezugszeichen 23 angegeben ist. Die Verbindung mit dem ersten Datenbus 21 wird durch das Bezugszeichen 130 symbolisiert. Diese Verbindung ermöglicht es der Zentraleinheit 10, ein oberhalb befindliches Zykluszähler-Register 131 zu laden, das ein Abbild-Register 132 hat, dessen Wert mit dem Inhalt des Registers 131 initialisiert und dann unter Steuerung der Sequenzsteuerung 22 dekrementiert wird. Die Übertragungs- und Dekrementierungssteuerung ist durch die Punktstrichlinie 133 symbolisiert, die Teil der Verbindung mit der genannten Sequenzsteuerung ist, die in der Figur mit dem Bezugszeichen 140 angegeben ist. Die Zentraleinheit 10 kann außerdem noch über die Verbindung 130 drei sogenannte Begrenzungsregister 135 steuern, deren Inhalt in die Abbildregister 136 (in der Figur mit LIM A, LIM B und LIM C bezeichnet) übertragen werden kann. Die Übertragung von den Begrenzungsregistern 135 zu den Abbildregistern 136 erfolgt durch den aus der Sequenzsteuerung 22 über die Steuerverbindung 140 kommenden Steuerbefehl 137. Die Zustands-und-Befehls-Registereinheit 23 umfaßt außerdem noch ein Steuerregister 141 und sein Abbildregister 142, wobei die Übertragung durch die Sequenzsteuerung 22 gesteuert wird und durch die Verbindung 143 symbolisiert ist, sowie ein Statusregister 144, das über die Verbindung 130 mit dem ersten Bus 21 und über die Verbindung 145 mit dem Verarbeitungsorgan 13 verbunden ist.
  • Der Inhalt des Zykluszähler-Registers 132 wird mit dem Inhalt eines der Begrenzungsregister LIM A, LIM B, LIM C mittels eines Komparators 151 verglichen, und zwar über einen Multiplexer 150, der mittels eines Steuerbefehls 152 die Art der zu überwachenden Begrenzung selektiert. Mittels des Komparators 151 kann man daher die Funktionsweise des Verarbeitungsorgans 13 beeinflussen, um eine festgelegte Sequenz auszuführen. Das doppelte Steuerregister 141, 142 enthält die zur Funktionssteuerung des Verarbeitungsorgans 13 notwendigen Informationen, beispielsweise ein Bit für das Aktivieren des Verabeitungsorgans 13, ein Bit zur Anzeige, welche der Funktionsarten verwendet werden soll (die Anzahl beteiligter Operanden parametrischer Art), ein Bit zur Anzeige, ob die Operanden parametrischer Art aus dem Arbeitsspeicher 12 oder aus der Wareschlange der Register zur Speicherung der Ergebnisdaten (Register 58, 581, 582, 583) geladen werden sollen. Das Statusregister 144 komplettiert das Steuerregister 142, in dem man beispielsweise ein Bit reservieren kann, um anzuzeigen, daß das Verarbeitungsorgan eine Zyklusserie von Operationen beendet hat, ein Bit für das Vorhandensein eines Restes innerhalb der Ergebnisse im Laufe der Verarbeitung durch das Verarbeitungsorgan 13 und eventuell Bits, die für die Lese- oder Schreibdeaktivierungssteuerung für verschiedene Operanden sowie für die Rücksetzung auf null dieser Operanden in den entsprechenden Datenregistern reserviert sind.
  • Figur 4 zeigt eine schematische Ansicht einer anderen Ausführungsform des erfindungsgemäßen Mikrokontrollers. In dieser Figur tragen Elemente, die Elemente aus Figur 1 entsprechen, die gleichen Bezugszeichen. Außerdem sind in der Figur der besseren Übersichtlichkeit wegen die Sequenzsteuerung, die Zustands-und-Befehls- Registereinheit sowie die Steuerverbindungen zwischen den verschiedenen Elementen des Mikrokontrollers nicht dargestellt. Der Mikrokontroller aus Figur 4 unterscheidet sich von dem in Figur 1 dargestellten in erster Linie dadurch, daß die Adressen und Daten aus der Zentraleinheit mit Hilfe eines einzigen Busses 201 übertragen werden, in dem die Adressen und Daten zeitlich gemultiplext werden. Der Übersichtlichkeit wegen ist in der Figur die Gesamtheit der Datenregister zwischen dem lokalen Bus 25 und dem Verarbeitungsorgan 13 durch den Block 500 dargestellt worden. Diese darin enthaltenen Datenregister der Warteschlangen können im wesentlichen mit denen zuvor anhand der Figur 1 beschriebenen identisch sein.
  • Der Mikrokontroller aus Figur 4 unterscheidet sich von dem zuvor beschriebenen auch dadurch, daß er zwei Arbeitsspeicher verwendet, einen RAM- Speicher 12 und einen nicht-flüchtigen Speicher, beispielsweise ein EEPROM 220. Was den RAM-Speicher 12 betrifft, so ist sein Adreßport 120 mit dem internen Bus verbunden, der seinerseits mit der Zentraleinheit 10 auf die gleiche Weise verbunden ist, wie dies bereits für Figur 1 beschrieben wurde, d.h. über einen Adreßschaltmultiplexer 28 und eine Gesamtheit von Adreßzeigerregistern, in denen eine bestimmte Anzahl von Warteschlangen enthalten ist, wobei die Gesamtheit dieser Adreßzeigerregister durch den Block 400 symbolisiert wird. Die den EEPROM-Speicher 220 umgebende Architektur ist derjenigen, die den RAM-Speicher 12 umgibt, sehr ähnlich, d.h. daß sein Adreßport 221 über einen anderen Adreßschaltmultiplexer 228 mit dem Bus 201 und mit einer Gesamtheit von Adreßzeigerregistern 300 verbunden ist, die ebenfalls Warteschlangen enthalten. Die Gesamtheit von Adreßzeigern 300 ist weitgehend vergleichbar mit der Gesamtheit von Adreßzeigern 400, die mit dem RAM-Speicher 12 verbunden sind. Was den Datenport 222 des EEPROM-Speichers 220 betrifft, so kann dieser Port entweder mit dem internen Bus 201 (verbunden mit der Zentraleinheit 10) oder mit dem lokalen Bus 25 über einen Datenschaltmultiplexer 226 verbunden werden, der zu diesem EEPROM-Speicher 220 gehört. Da eine Schreiboperation in einem EEPROM-Speicher vergleichsweise langsam ist, sollte der Zugriff auf diesen Speicher durch das Verarbeitungsorgan 13 vorzugsweise ausschließlich für Leseoperationen reserviert werden, die ebenso schnell erfolgen wie eine im RAM-Speicher 12 ausgeführte Leseoperationen.
  • Die beispielhaft gegebene Beschreibung und vor allem die im Hinblick auf die Figur 2 gegebene Beschreibung des Verarbeitungsorgans 13 richten sich eher speziell auf eine Anwendung, bei der der Kern der Verarbeitung in eine Operation des Typs B = aX + B zerlegt werden kann. Trotzdem ist deutlich, daß der erfindungsgemäße Mikrokontroller in sehr viel allgemeinerer Weise verwendet werden kann, vor allem durch Abänderung des Aufbaus des Verarbeitungsorgans 13 und eine spezifische Optimierung für die gewünschten Verarbeitungsprobleme. Die Erfindung beschränkt sich daher nicht auf die im vorangegangenen beschriebenen Ausführungsbeispiele, und andere Abwandlungen und Ausführungsformen können konzipiert werden.

Claims (10)

1. Mikrokontroller zur schnellen Ausführung einer großen Anzahl von in gleichartige Befehle zerlegbaren Befehlen mit:
- einer Zentraleinheit (10) zur Steuerung und Ausführung eines Datenverarbeitungsprogramms,
- einer Gesamtheit von Speichern mit wenigstens einem Programmspeicher (11) zur Speicherung eines von der Zentraleinheit auszuführenden Programms und mit wenigstens einem Arbeitsspeicher (12) des Lese/Schreibe-Typs zur Speicherung von zu verarbeitenden Daten und der späteren, aus dem Verarbeitungsprozeß hervorgehenden Ergebnisse, wobei der Arbeitsspeicher mit Adressen- (120) und Datenports (121) versehen ist,
- einem spezialisierten Verarbeitungsorgan (13), um Sequenzen von Operationen mit einer Vielzahl von Operanden durchzuführen, die seinem Eingang zugeführt werden, wobei unter den Operanden v Operanden (OP[1...v]) variabel sind und k Operanden (OP'[1...k] parametrischer Art sind, da sie während einer Sequenz von Operationen konstant beibehalten werden,
- einer zu dem spezialisierten Verarbeitungsorgan (13) gehörenden Sequenzsteuerung (22), um den Ablauf einer Sequenz von Operationen zu bestimmen,
- einer zu dem spezialisierten Verarbeitungsorgan und der Sequenzsteuerung gehörenden Zustand-und-Befehls-Registereinheit (23) und
- einer internen Busanordnung, um Adressen und Daten auszutauschen, mit einem mit der Zentraleinheit (10) verbundenen ersten Bus (21), der wenigstens Daten befördert und einem spezialisierten Bus (25), der für die Übertragung von Daten zwischen dem Verarbeitungsorgan (13) und dem Datenport (121) des Arbeitsspeichers (12) reserviert ist, wobei jeder dieser beiden Busse auf den genannten Datenport des Arbeitsspeichers über einen Datenschaltmultiplexer (26) zugreift, der Adreßport (120) des Arbeitsspeichers (12) im Mikrokontroller durch den Ausgang eines Adreßschaltmultiplexers (28) gespeist wird, der an seinen Eingängen Adressen empfängt, die ausschließlich durch die Zentraleinheit (10) in eine Vielzahl von parallel angeordneten Adreßzeigerregistern (31, 32, 33, 34) geladen werden, wobei ein Teil von diesen letzteren oberhalb befindliche Register von seriellen Warteschlangen (31-41, 32-42, 34-44) bildet, wobei jedem dieser Zeigerregister dann ein Register unterhalb (41, 42, 44) zugeordnet ist, das durch eine Sequenzsteuerung (22) inkrementiert oder dekrementiert werden kann, wobei die Anzahl der genannten Warteschlangen wenigstens gleich v + 1 ist, entsprechend der Anzahl von v variablen Operanden plus eine Warteschlange für die Adresse eines in den Arbeitsspeicher zu schreibenden Operationsergebnisses,
während der spezialisierte lokale Bus (25) mit Eingängen des Verarbeitungsorgans (13) über eine Vielzahl von parallel angeordneten Datenregistern (51-58) gekoppelt ist, wobei ein Teil von diesen letzteren oberhalb befindliche Register von seriellen Warteschlangen (51-61, 52-56) bildet und die Anzahl der genannten Warteschlangen wenigstens gleich v ist.
2. Mikrokontroller nach Anspruch 1, bei dem die Anzahl k von Operanden parametrischer Art > 1 ist, dadurch gekennzeichnet, daß die Sequenzsteuerung (22) und das Verarbeitungsorgan (13) Mittel zur Sequenzierung in wiederholten Einzelzyklen und Speichermittel umfassen, die festlegen können, daß jeder der k Operanden parametrischer Art nacheinander von dem Verarbeitungsorgan während eines Einzelverarbeitungszyklus mit k Schritten verwendet wird, wobei während dieses Einzelzyklus nur ein Ergebnisdatenelement in den Arbeitsspeicher (12) zu schreiben ist.
3. Mikrokontroller nach Anspruch 2, dadurch gekennzeichnet, daß er Initialisierungsmittel enthält, die geeignet sind, zu Beginn jeder Serie von Einzelzyklen einen besonderen Initialisierungszyklus auszuführen, während dessen Dauer das Verarbeitungsorgan (13) die Datenregister (54-57) mit den k Operanden parametrischer Art aus einem Adreßzeigerregister (33) mit automatischer Inkrementierung lädt.
4. Mikrokontroller nach einem der Ansprüche 2 oder 3, dadurch gekennzeichnet, daß er eine Anzahl k von Operanden parametrischer Art verwendet, so daß k-1 = v wobei v die Anzahl der variablen Operanden ist.
5. Mikrokontroller nach einem der Ansprüche 2 oder 3, dadurch gekennzeichnet, daß er so eingerichtet ist, daß er eine Anzahl von k Operanden parametrischer Art akzeptiert, so daß k-1 > v und daß er Steuerungsmittel umfaßt, die die Funktionsweise während einer Verarbeitungssequenz unter Steuerung der Zentraleinheit (10) entweder mit k Operanden parametrischer Art und einem Einzelzyklus mit k Schritten oder mit p Operanden parametrischer Art und einem Einzelzyklus mit p Schritten ermöglichen, wobei die Anzahl p kleiner k und wenigstens gleich v + 1 ist.
6. Mikrokontroller nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, daß die Ergebnisdaten am Ausgang des Verarbeitungsorgans (13) zum lokalen Bus (25) über ein Datenregister (58) übertragen werden, das sich in Reihe mit einer Datenregisterwarteschlange (581, 582, 583) befindet, deren Anzahl von Positionen gleich k-1 ist, und daß die genannte Warteschlange mittels einer durch die Sequenzsteuerung (22) gesteuerten Umschaltung umgangen werden kann.
7. Mikrokontroller nach Anspruch 6, dadurch gekennzeichnet, daß die Initialisierungsmittel eingerichtet sind, um zu Beginn einer Sequenz von Operationen einen anderen besonderen Initialisierungszyklus zu liefern, während dessen Dauer das Verarbeitungsorgan die Datenregister (54-57) mit k Operanden parametrischer Art aus der am Ergebnisausgang eingerichteten Datenregister-Warteschlange (581, 582, 583) über den lokalen Bus (25) lädt.
8. Mikrokontroller nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Zentraleinheit (10), der Programmspeicher (11), der Adreßschaltmultiplexer (28) und der Datenschaltmultiplexer (26) Adressen und Daten mittels eines einzigen gemultiplexten Busses (201) übertragen.
9. Mikrokontroller nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die Adressen und Daten in einem einzigen Format mit 8 Bits übertragen werden.
10. Mikrokontroller nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß sich der Arbeitsspeicher aus einem Teil vom RAM-Speichertyp (12) und aus einem anderen Teil vom nicht-flüchtigen Typ (220) zusammensetzt, daß die Datenports (121, 222) dieser Teile entweder mit dem genannten ersten Datenbus (201) oder mit dem lokalen Bus mittels eines jedem dieser Speicherteile eigenen Datenschaltmultiplexers (26, 226) in Verbindung gebracht werden können und daß die Adreßports (120, 221) dieser Speicherteile durch einen jedem Speicherteil eigenen Adreßschaltmultiplexer (28, 228) hindurch aus dem Adreßbus (20) oder dem genannten ersten Datenbus (201) über eine Vielzahl von Adreßzeigerregistern (400,300) gespeist werden, die für jeden der genannten Speicherteile eine Anzahl von Warteschlangen enthalten, die wenigstens gleich v + 1 ist.
DE69031420T 1989-12-29 1990-12-18 Mikrokontroller zur schnellen Ausführung einer grossen Anzahl von Befehlen, die in Folgen von gleichartigen Befehlen zerlegbar sind Expired - Lifetime DE69031420T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR8917455A FR2656710A1 (fr) 1989-12-29 1989-12-29 Microcontroleur pour l'execution rapide d'un grand nombre d'operations decomposable en sequence d'operations de meme nature.

Publications (2)

Publication Number Publication Date
DE69031420D1 DE69031420D1 (de) 1997-10-16
DE69031420T2 true DE69031420T2 (de) 1998-03-19

Family

ID=9389152

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69031420T Expired - Lifetime DE69031420T2 (de) 1989-12-29 1990-12-18 Mikrokontroller zur schnellen Ausführung einer grossen Anzahl von Befehlen, die in Folgen von gleichartigen Befehlen zerlegbar sind

Country Status (5)

Country Link
US (1) US5163154A (de)
EP (1) EP0439855B1 (de)
JP (1) JP3184834B2 (de)
DE (1) DE69031420T2 (de)
FR (1) FR2656710A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5285403A (en) * 1989-12-29 1994-02-08 U.S. Philips Corporation Arithmetic processing module to be associated with a microprocessor central processing unit
JPH06230960A (ja) * 1993-01-29 1994-08-19 Mitsubishi Electric Corp データ処理回路
US5502664A (en) * 1993-03-25 1996-03-26 Yozan Inc. Filter device including SRAM and EEPROM devices
US5500810A (en) * 1993-04-28 1996-03-19 Yozan Inc. Filter device with memory test circuit
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
ATE189570T1 (de) * 1994-02-24 2000-02-15 Merdan Group Inc Verfahren und einrichtung zum aufbau einer kryptographischen verbindung zwischen elementen eines systems
US5787172A (en) * 1994-02-24 1998-07-28 The Merdan Group, Inc. Apparatus and method for establishing a cryptographic link between elements of a system
US5852665A (en) * 1995-04-13 1998-12-22 Fortress U & T Ltd. Internationally regulated system for one to one cryptographic communications with national sovereignty without key escrow
IL113375A (en) * 1995-04-13 1997-09-30 Fortress U & T Ltd Internationally regulated system for one to one cryptographic communications with national sovereignty without key escrow
DE19527188A1 (de) 1995-07-26 1997-01-30 Philips Patentverwaltung RDS-TMC-Rundfunkempfänger
DE19527185A1 (de) * 1995-07-26 1997-01-30 Philips Patentverwaltung RDS-TMC-Rundfunkempfänger
DE19527186A1 (de) * 1995-07-26 1997-01-30 Philips Patentverwaltung RDS-TMC-Rundfunkempfänger
DE19527183A1 (de) * 1995-07-26 1997-01-30 Philips Patentverwaltung RDS-TMC-Rundfunkempfänger
DE19527831A1 (de) * 1995-07-29 1997-01-30 Philips Patentverwaltung RDS-TMC-Rundfunkempfänger
US5859420A (en) * 1996-02-12 1999-01-12 Dew Engineering And Development Limited Optical imaging device
DE19630861A1 (de) * 1996-07-31 1998-02-05 Philips Patentverwaltung Datenverarbeitungseinrichtung mit einem Mikroprozessor und einer zusätzlichen Recheneinheit
US5845103A (en) * 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US5983292A (en) * 1997-10-15 1999-11-09 International Business Machines Corporation Message transport mechanisms and methods
JP4913955B2 (ja) * 2000-05-29 2012-04-11 株式会社ガイア・システム・ソリューション データ処理装置
US6587898B1 (en) * 2000-08-10 2003-07-01 Dell Products, L.P. Universal serial bus PC synchronization algorithm for peripheral devices
JP3571656B2 (ja) * 2001-01-31 2004-09-29 松下電器産業株式会社 ポインタレジスタ装置およびポインタ値の更新方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525776A (en) * 1980-06-02 1985-06-25 Bell Telephone Laboratories, Incorporated Arithmetic logic unit arranged for manipulating bits
US4608634A (en) * 1982-02-22 1986-08-26 Texas Instruments Incorporated Microcomputer with offset in store-accumulator operations
US4698753A (en) * 1982-11-09 1987-10-06 Texas Instruments Incorporated Multiprocessor interface device
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JPS61160176A (ja) * 1984-12-29 1986-07-19 Hitachi Ltd ベクトル処理装置
US4740894A (en) * 1985-09-27 1988-04-26 Schlumberger Systems And Services, Inc. Computing processor with memoryless function units each connected to different part of a multiported memory
US4839845A (en) * 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
GB8612453D0 (en) * 1986-05-22 1986-07-02 Inmos Ltd Multistage digital signal multiplication & addition
JPS63158657A (ja) * 1986-12-23 1988-07-01 Fanuc Ltd コ・プロセツサ制御方式
FR2613861B1 (fr) * 1987-04-10 1990-11-30 Pailles Jean Claude Procede et controleur pour cryptographier un message selon un algorithme a cle publique
JPS63259727A (ja) * 1987-04-17 1988-10-26 Hitachi Ltd コプロセツサのインタ−フエイス方式
BE1001383A7 (fr) * 1987-12-07 1989-10-17 Electronique Et Telecomm Bell Dispositif a acces multiples.
JP2690932B2 (ja) * 1988-03-18 1997-12-17 株式会社日立製作所 ディジタル信号処理プロセッサおよびディシタル信号処理プロセッサシステム
US5025407A (en) * 1989-07-28 1991-06-18 Texas Instruments Incorporated Graphics floating point coprocessor having matrix capabilities

Also Published As

Publication number Publication date
JPH04137041A (ja) 1992-05-12
DE69031420D1 (de) 1997-10-16
US5163154A (en) 1992-11-10
EP0439855B1 (de) 1997-09-10
FR2656710A1 (fr) 1991-07-05
EP0439855A1 (de) 1991-08-07
JP3184834B2 (ja) 2001-07-09

Similar Documents

Publication Publication Date Title
DE69031420T2 (de) Mikrokontroller zur schnellen Ausführung einer grossen Anzahl von Befehlen, die in Folgen von gleichartigen Befehlen zerlegbar sind
DE3586260T2 (de) Mikroprozessorsystem.
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2350884C2 (de) Adreßumsetzungseinheit
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE2953861C2 (de)
DE1524166B1 (de) Schaltungsanordnung zur Herstellung von Verbindungen zwischen mehreren unabhaengigen Teilen und einem gemeinsamen Teil einer Datenverarbeitungsanlage
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2515696A1 (de) Anordnung zum selektiven loeschen von teilen beziehungsweise zum ersatz von daten in einem cache-speicher
DE1929010B2 (de) Modular aufgebaute datenverarbeitungsanlage
DE2717658A1 (de) Anordnung zur ansteuerung eines mikroprogrammspeichers
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
DE2625113C2 (de) Speicherschutzeinrichtung
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE2926351A1 (de) Look-ahead-speicheradressen- steuereinrichtung
DE1237812B (de) Datenverarbeitungsgeraet mit mehreren Speichern
DE69034165T2 (de) Mikroprozessor mit einer Vielzahl von Buskonfigurationen
DE68903280T2 (de) Vektorschlange in computern mit vektorregister.
DE1285218B (de) Datenverarbeitungsanlage
DE3923872A1 (de) Schaltungsanordnung zum steuern des zugriffs auf einen speicher
DE2900460A1 (de) Warteschlangenstruktur
DE2610428A1 (de) Anordnung zur steuerung der zwischenspeicherung von zwischen zwei funktionseinheiten zu uebertragenden daten in einem pufferspeicher
DE19713178A1 (de) Schaltungsanordnung mit einem Prozessor und einem Datenspeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N

8320 Willingness to grant licences declared (paragraph 23)
8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL

8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN