DE69838701T2 - Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit - Google Patents

Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit Download PDF

Info

Publication number
DE69838701T2
DE69838701T2 DE69838701T DE69838701T DE69838701T2 DE 69838701 T2 DE69838701 T2 DE 69838701T2 DE 69838701 T DE69838701 T DE 69838701T DE 69838701 T DE69838701 T DE 69838701T DE 69838701 T2 DE69838701 T2 DE 69838701T2
Authority
DE
Germany
Prior art keywords
data
registers
address
register
processing unit
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
DE69838701T
Other languages
English (en)
Other versions
DE69838701D1 (de
Inventor
Rod G. Mountain View Fleck
Roger D. Sunnyvale Arnold
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Application granted granted Critical
Publication of DE69838701D1 publication Critical patent/DE69838701D1/de
Publication of DE69838701T2 publication Critical patent/DE69838701T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf eine Verarbeitungseinheit und insbesondere auf eine zentrale Verarbeitungseinheit (CPU) wie etwa einen Mikrocontroller. Mikrocontroller sind auf dem Gebiet allgemein bekannt, und es ist eine große Vielfalt von derartigen Vorrichtungen verfügbar, von Einsteigervorrichtungen (z. B. einem 4/8-Bit-Controller) bis zu professionellen Vorrichtungen (z. B. einem 32-Bit-Controller). Professionelle Controller werden in nahezu jeder Art von elektronischen Vorrichtungen, wie etwa Laserdruckern und Festplatten, oder zur Steuerung jeder Art von Prozessen verwendet, beispielsweise in Kraftfahrzeugen usw.
  • Mit der Lösung komplexerer Aufgaben, steigt die Nachfrage nach sehr schnellen professionellen Controllern. Insbesondere sind derartige Vorrichtungen zum Steuern von Echtzeitanwendungen erforderlich. Bei derartigen Anwendungen ist es notwendig, dass sehr schnell auf externe Ereignisse reagiert wird. Wenn ein derartiges Ereignis eintritt, muss der Inhalt von wenigstens einem bestimmten Satz von Registern gewechselt werden. Wenn dieser Kontextwechsel schneller ist, ist die Reaktionszeit des Steuerungssystems besser.
  • EP-A-0 745 933 (IBM) vom 4. Dezember 1996 (2996-12-04) offenbart eine Mehr-Port-Registerdatei zur Verwendung mit einem sehr langen Anweisungswort (VLIW) und mit N-Weg-Superskalar-Prozessoren. Die Registerdatei umfasst eine ausgewählte Anzahl von Kopien eines universelle Register bildenden Blocks. Der Block umfasst zwei verschachtelte Teilbänke von Registern (ungeradzahligen und geradzahligen Registern), von denen jedes eine Anzahl n von Schreib-Ports und eine Anzahl m von Lese-Ports aufweist. Die Teilbänke sind durch Schreib-Ports verschachtelt und besitzen nicht verschachtelte Lese-Ports.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Daher ist es eine Aufgabe der vorliegenden Erfindung, eine Verarbeitungseinheit zu schaffen, die die Fähigkeit zum sehr schnellen Lese-/Schreibzugriff auf Adressen- und Datenregister in einer CPU hat.
  • Diese Aufgabe wird mittels einer Datenverarbeitungseinheit nach Anspruch 1 gelöst, die einen Satz von Datenregistern und einen Satz von Adressenregistern besitzt. Jedes Register hat eine Breite von n Bit. Außerdem sind vorgesehen: Adressenlade- und -Speicherpuffer, die den Adressenregistern zugeordnet sind, Datenlade- und -Speicherpuffer, die den Datenregistern zugeordnet sind, und ein Bus mit mehreren Busleitungen, die mit den Speicherpuffern verbunden sind. Mit dem Bus ist eine Datenspeichereinheit verbunden. Die Datenregister sind in einer solchen Weise angeordnet, dass wenigstens n Datenregister mit entsprechenden Busleitungen parallelgeschaltet sind, wobei n größer als 1 ist, und die Adressenregister sind in einer solchen Weise angeordnet, dass wenigstens m Adressenregister mit entsprechenden Busleitungen parallelgeschaltet sind, wobei m größer als 1 ist. Dadurch kann auf wenigstens vier Register parallel zugegriffen werden.
  • Wenn beispielsweise 4 Datenregister und 4 Adressenregister gleichzeitig geladen oder gespeichert werden können, muss ein 32-Bit-Mikrocontroller-Bus 256 Bit breit sein. Der Vorteil einer derartigen Anordnung besteht darin, dass ein Kontextwechsel sehr schnell ausgeführt werden kann, da 8 Register in nur 2 entsprechenden Zyklen gespeichert und geladen werden. Dies ermöglicht eine sehr kurze Reaktionszeit auf externe Ereignisse. Außerdem ist die Verarbeitungsgeschwindigkeit gesteigert, da Befehle implementiert sein können, die eine parallele Verarbeitung vorsehen. Das bedeutet, dass zur gleichen Zeit mehr als ein Register geladen oder gespeichert werden kann.
  • Damit Lese- und Schreibprozeduren an Mehrfachregistern ermöglicht werden, ist jedes Register mit mehrfachen unidirektionalen und/oder mehrfachen bidirektionalen Ports versehen, die die Register mit einer Speichereinheit und/oder mit einer Adressenarithmetik-Pipeline oder einer Ganzzahlen-Pipeline oder irgendeiner anderen Verarbeitungseinheit verbinden. Die Register können in unterschiedliche Sätze von Registern aufgeteilt sein, beispielsweise in geradzahlige und ungeradzahlige Register. Dadurch ist eine optimierte Anordnung der entsprechenden Register möglich, während die Zugänglichkeit zu den Registern beibehalten wird. Jede der oben erwähnten Leitungen kann separat ausgewählt werden, und die Leitungen sind mit ungeradzahligen oder geradzahligen Speicheradressen verbunden.
  • Es ist eine breite Vielfalt von Implementierungen möglich. Entweder kommunizieren sämtliche Registerzellen über einen mehrere Wörter breiten Bus, wobei jede Registerzelle mehrere Lese-/Schreibleitungen aufweist, die mit jeweiligen Wortleitungen des mehrere Wörter breiten Busses verbunden sind, oder unterschiedliche Sätze von Registern verbinden mit entsprechenden Wortleitungen des mehrere Wörter breiten Busses, der mit dem Speicher verbindet. Multiplexer und Synchronisationseinheiten können jedes Register mit jedem Adressenort im Speicher verbinden.
  • Weiterhin ist eine Einheit vorgesehen, die eine Null- und eine Vorzeichen-Erweiterung für Byte- und Halbwort-Ladeanweisungen abwickelt. Die Adressenregister können über einen Adressenweiterleitungspuffer mit einer Adressenarithmetikeinheit oder irgendeiner anderen Verarbeitungseinheit verbunden sein, und die Datenregister können über einen entsprechenden Datenweiterleitungspuffer mit einer Multiplikations-Akkumulatoreinheit (MAC) und/oder einer Ganzzahlenausführungseinheit oder irgendeiner anderen Verarbeitungseinheit verbunden sein.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt einen funktionellen Blockschaltplan einer Registerdatei in Übereinstimmung mit der vorliegenden Erfindung;
  • 2A zeigt eine Datenlade- und -Speicherpuffereinheit;
  • 2B zeigt eine Adressenlade- und -Speicherpuffereinheit;
  • 2C zeigt eine Datenregisterdatei-Einheit;
  • 2D zeigt eine Adressenregisterdatei-Einheit;
  • 2E zeigt eine Datenweiterleitungseinheit;
  • 2F zeigt eine Adressenweiterleitungseinheit;
  • 3 zeigt detaillierter eine Adressenregisterzelle; und
  • 4 zeigt detaillierter eine Datenregisterzelle.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • 1 zeigt einen Überblick über die universelle Registerdatei eines 32-Bit-Mikrocontrollers in Übereinstimmung mit der vorliegenden Erfindung. In dieser Zeichnung ist nur eine Ebene dargestellt, die ein einziges Bit jedes Registers zeigt. Die universelle Registerdatei 1 weist eine Adressenregisterdatei 2 und eine Datenregisterdatei 3 auf, die mehrere Adressen- und Datenregister 4, 7 mit einer vorgegebenen Bitbreite sowie Puffer 5, 6, 8, 9 enthalten. Bei der bevorzugten Ausführungsform beträgt die Registerbitbreite 32 Bits, und die Anzahl von Registern ist 16. Diese Bitbreite kann irgendeine Bitgröße in Übereinstimmung mit der Spezifikation der entsprechenden Mikrocontroller-, Mikroprozessor- oder Daten handhabungseinheit sein.
  • Die Adressenregister 4 sind über einen Bus 13 einerseits mit einer Adressenweiterleitungseinheit 5 und andererseits mit einem Adressenlade- und -Speicherpuffer 6 verbunden. Außerdem enthält die Datenregisterdatei 1 mehrere Datenregister 7, beispielsweise 16 Datenregister mit einer Bitbreite von 32 Bits. Es ist ein zweiter Bus 14 vorgesehen, der die Datenregister 7 einerseits mit Datenlade- und -Speicherpuffern 9 und andererseits mit einer Datenweiterleitungseinheit 8 verbindet. Die universelle Registerdatei 1 ist einerseits über einen dritten Bus 15 mit einer Datenspeichereinheit 10 und andererseits mit zusätzlichen Bussen 16, 17 verbunden. Der Bus 16 verbindet die Adressenweiterleitungspuffer 5 und Teile der Datenweiterleitungspuffer 8 mit einer Einheit 12, die beispielsweise eine Adressenarithmetikeinheit und eine Anweisungseinholungseinheit (IFU) aufweist. Der Bus 17 verbindet die Datenweiterleitungspuffer 8 mit einer Einheit 11, die beispielsweise eine Multiplikations-Akkumulator-(MAC-) und eine Ganzzahlen-Ausführungseinheit aufweist.
  • 2A bis 2F zeigen detaillierter die Elemente der universellen Registerdatei 1. In diesem Schaltplan ist von jedem der Register d0, ..., d15, a0, ..., a15 nur ein Bit gezeigt. Die anderen 31 Bit der Register d0, ..., d15, a0, ..., a15 sind parallel angeordnet. In 2A bis 2F stellen gleiche Bezugszeichen durchgehend gleiche Elemente dar.
  • 2D zeigt Register in einer Adressenregisterdatei. Zur besseren Übersicht sind in 2D die Register a2 bis a13 nicht gezeigt. Jedes Adressenregister a0, ..., a15 der Adressenregisterdatei 4 hat zwei unidirektionale Ausgänge zum Lesen und drei bidirektionale I/O-Ports. Mit dem ersten bidirektionalen I/O-Port sämtlicher Adressenregister a0, ..., a15 ist eine interne Busleitung 40 verbunden, und mit den entsprechenden zwei Ausgängen sämtlicher Adressenregister a0, a15 sind zwei Leitungen 41 und 42 verbunden. Außerdem sind mit entsprechenden I/O-Ports sämtlicher geradzahliger Adressenregister a0, a2, a4, ..., a14 zwei interne Busleitungen 44 und 46 verbunden. Mit den I/O-Ports sämtlicher ungeradzahliger Adressenregister a1, a3, a5, ..., a15 sind zwei weitere Leitungen 43 und 45 verbunden.
  • 2A zeigt im Detail den Adressenlade- und -Speicherpuffer 6 von 1. Busleitungen 43 bis 46 verbinden mit den entsprechenden Eingängen von Speicherpuffern 101 bis 104. Die Ausgänge der Speicherpuffer 101 bis 104 sind über Treiber 106 bis 109 mit Speicherbusleitungen 119 bis 122 verbunden. Sämtliche Treiber sind Tristate-Treiber, die mit einem Steuereingang zur selektiven Aktivierung mittels einer (nicht gezeigten) Steuereinheit versehen sind. Zwei Blöcke 100 und 105 bezeichnen 4 Ladepuffer, die einerseits mit den Speicherbusleitungen 119 bis 122 und andererseits über Treiber 110 bis 113 mit den internen Busleitungen 43 bis 46 verbunden sind. Zusätzlich sind die Ausgänge der Ladepuffer 105 über Puffer 115 und 116 mit den internen Busleitungen 43 und 44 verbunden.
  • 2E zeigt im Detail die Adressenweiterleitungseinheit 5 von 1. Busleitungen 40, 41 und 42 sind über Treiber 500, 501 bzw. 502 mit Adressenweiterleitungsausgangs-Busleitungen 524, 525 bzw. 526 verbunden. Zwei Speicherbusleitungen 121 und 122 sind jeweils mit dem Eingang von drei Treibern 503, 504, 505 bzw. 506, 507, 508 verbunden. Die Ausgänge der Treiber 503 und 506 verbinden mit der Busleitung 526, die Ausgänge der Treiber 504 und 507 mit der Busleitung 525 und die Ausgänge der Treiber 505 und 508 mit der Busleitung 524. Interne Busleitungen 43 und 44 sind mit den Ausgängen von zwei Treibern 518 bzw. 519 verbunden. Die Eingänge der Treiber 518 und 519 sind mit dem Ausgang eines Zurückschreibpuffers 515 verbunden, dessen Eingang mit einer Adressenweiterleitungsbus-Eingangsleitung 523 verbunden ist. Es sind zwei weitere Treiber 516 und 517 vorgesehen, deren Ausgänge mit der internen Busleitung 40 verbunden sind. Der Eingang des Treibers 517 ist mit dem Ausgang des Puffers 515 verbunden. Der Ein gang des Treibers 516 ist mit dem Ausgang des Puffers 514 verbunden, dessen Eingang mit der Adressenweiterleitungsbus-Eingangsleitung 522 verbunden ist. Die Busleitungen 45 und 46 sind außerdem über bidirektionale Treiber 520 bzw. 521 mit Busleitungen 522 bzw. 523 verbunden. Das Signal auf der Busleitung 523 wird außerdem den Eingängen von drei Treibern 509, 510 bzw. 511 zugeführt, deren Ausgänge mit den Busleitungen 524, 525 bzw. 526 verbunden sind. Das Signal auf der Busleitung 522 wird außerdem den Eingängen von zwei Treibern 512 und 513 zugeführt, deren Ausgänge mit den Busleitungen 524 bzw. 525 verbunden sind. Wiederum sind sämtliche Treiber Tristate-Treiber, die mit einem Steuereingang zur Auswahl mittels einer (nicht gezeigten) Steuereinheit versehen sind. Die drei Einheiten 4, 5 und 6 gemäß 1 zeigen den Weg der Adressensignale in die und aus der Adressenregisterdatei an, wobei die Busleitungen 119 bis 122 gemäß 2A mit der Speichereinheit 10 und die Busleitungen 522 bis 524 mit der Adressenarithmetik-Pipeline und der Anweisungsweiterleitungseinheit 12 verbinden.
  • 2C zeigt Datenregister in einer Datenregisterdatei. Wiederum sind in 2C zur besseren Übersicht die Register d2 bis d13 nicht gezeigt. Jedes Datenregister d0, ..., d15 der Datenregisterdatei 5 hat drei unidirektionale Ausgänge zum Lesen sowie zwei bidirektionale I/O-Ports. Zwei Leitungen 72 und 73 sind jeweils mit den ersten zwei Ausgängen sämtlicher Datenregister d0, ..., d15 verbunden. Außerdem ist eine interne Busleitung 71 mit entsprechenden Ausgängen sämtlicher geradzahliger Datenregister d0, d2, d4, ..., d14 verbunden, während eine interne Busleitung 70 mit entsprechenden Ausgängen sämtlicher ungeradzahliger Register d1, d3, ..., d15 verbunden ist. Zwei weitere Leitungen 74 und 76 sind mit den I/O-Ports sämtlicher ungeradzahliger Adressenregister d1, d3, d5, ..., d15 verbunden. Schließlich sind zwei weitere Leitungen 75 und 77 mit den I/O-Ports sämtlicher geradzahliger Adressenregister d0, d2, d4, ..., d14 verbunden.
  • 2B zeigt den Datenlade- und -Speicherpuffer 9 von 1. Interne Busleitungen 74 bis 77 sind mit den Eingängen von vier entsprechenden Speicherpuffern 909 bis 912 verbunden. Der Ausgang des Speicherpuffers 909 ist über einen Treiber 916 mit einer Speicherbusleitung 921 verbunden, und der Ausgang des Speicherpuffers 910 ist über einen Treiber 917 mit einer Speicherbusleitung 920 verbunden. Die Ausgänge der Puffer 911 und 912 sind mit zwei Eingangsanschlüssen einer Maskierungseinheit 915 verbunden. Die Maskierungseinheit 915 ist mit zwei Eingangs- und zwei Ausgangsanschlüssen versehen. Die zwei Ausgangsanschlüsse der Maskierungseinheit 915 sind über Treiber 918 bzw. 919 mit zwei Speicherbusleitungen 922 bzw. 923 verbunden. Zwei Blöcke 908 und 913 stellen vier Ladepuffer dar. Der Block 913 ist mit zwei Eingangsanschlüssen versehen, die mit zwei internen Busleitungen 900 bzw. 901 sowie über einen Synchronisierungsblock 914 mit den Speicherbusleitungen 922 bzw. 923 verbunden sind. Der Synchronisierungsblock 914 ist mit zwei Eingängen versehen, die mit den Eingängen der Maskierungseinheit 915 bzw. mit den Ausgängen des Speicherpuffers 913 verbunden sind. Außerdem ist ein Ausgang des Ladepuffers 913 über Treiber 904 bzw. 906 mit den internen Busleitungen 74 bzw. 76 verbunden. Der andere Ausgang des Ladepuffers 913 ist über Treiber 905 und 907 mit den internen Busleitungen 75 und 77 verbunden. Der zweite Ladepuffer 908 ist auf seiner Eingangsseite mit den Speicherbusleitungen 920 bzw. 921 sowie an seiner Ausgangsseite über Treiber 902 bzw. 903 mit den internen Busleitungen 74 und 75 verbunden. Wiederum sind sämtliche Treiber Tristate-Treiber, die mit einem Steuereingang für die Auswahl mittels einer (nicht gezeigten) Steuereinheit versehen sind.
  • 2F zeigt im Detail die Datenweiterleitungseinheit 8 von 1. Interne Busleitungen 70 bis 73 sind über Treiber 807 bis 810 mit den Datenweiterleitungsbusleitungen 802 bis 805 verbunden. Eine zusätzliche Datenweiterleitungsbusleitung 806 ist mit Ausgangsanschlüssen von Treibern 827 und 828 verbunden, deren Eingangsanschlüsse mit Busleitungen 802 bzw. 803 verbunden sind. Die Busleitung 806 ist gemäß 1 Teil des Busses 16, der mit der Adressenarithmetik-Pipeline und der Anweisungsweiterleitungseinheit 12 verbunden ist. Die Busleitung 900 ist mit den Eingängen von drei Treibern 811, 812 und 813 verbunden, deren Ausgänge mit den Busleitungen 805, 804 bzw. 802 verbunden sind. Die Busleitung 901 ist mit den Eingängen von drei Treibern 814, 815 und 816 verbunden, deren Ausgänge mit den Busleitungen 805, 804 bzw. 803 verbunden sind. Es sind zwei weitere Datenweiterleitungsbusleitungen 800 und 801 vorgesehen, die mit den Eingangsanschlüssen von zwei Zurückschreibpuffern 829 bzw. 830 verbunden sind. Die Ausgangsanschlüsse der Puffer 829 und 830 sind über Treiber 832 bzw. 834 mit den Busleitungen 74 bzw. 75 verbunden. Außerdem ist der Ausgang des Puffers 830 über einen Treiber 833 mit der Busleitung 74 verbunden. Die Busleitung 800 ist über einen Treiber 835 mit der Busleitung 76 verbunden, und außerdem ist die Busleitung 801 über Treiber 836 und 837 mit den Busleitungen 76 bzw. 77 verbunden. Außerdem ist die Busleitung 806 über Treiber 840 und 841 mit den Busleitungen 76 bzw. 77 verbunden. Außerdem ist die Busleitung 806 mit dem Eingangsanschluss eines weiteren Zurückschreibpuffers 831 verbunden, dessen Ausgang über Treiber 838 und 839 mit den Busleitungen 76 bzw. 77 verbunden ist. Außerdem ist die Busleitung 806 über entsprechende Treiber 817 bis 820 mit den Busleitungen 802 bis 805 verbunden. Schließlich ist die Busleitung 800 über entsprechende Treiber 821 bis 823 mit den Busleitungen 805, 804 bzw. 802 verbunden, und die Busleitung 801 ist über entsprechende Treiber 824 bis 826 mit den Busleitungen 803 bis 805 verbunden. Wiederum sind sämtliche Treiber Tristeste-Treiber, die mit einem Steuereingang zur Auswahl mittels einer (nicht gezeigten) Steuereinheit versehen sind. Die Speicherbusleitungen 119 bis 122 gemäß 2A sowie 920 bis 923 gemäß 2B bilden den Speicherbus 15 von 1. Die Busleitungen 522 bis 526 gemäß 2E sowie 806 bilden den Bus 16, und die Busleitungen 800 bis 805 bilden den Bus 17 von 1.
  • 3 zeigt eine Ausführungsform einer Adressenregisterzelle. 3 zeigt Bezugszeichen, die sich auf das Adressenregister a0 gemäß 2D beziehen. Vorzugsweise haben sämtliche Register a0, ..., a15 die gleiche Struktur. Der Registerkern wird durch zwei Invertierer 400 und 401 gebildet. Diese Invertierer 400 und 401 bilden eine statische Speicherzelle, sodass der Ausgang jedes Invertierers mit dem Eingang des anderen Invertierers verbunden ist. Der Eingang des Invertierers 400 und der Ausgang des Invertierers 401 sind über den Ladeweg von Feldeffekttransistoren 402, 403 und 406 mit den Busleitungen 40, 44 und 46 verbunden. Jeder der Feldeffekttransistoren 402, 403 und 406 bildet ein Übertragungsgatter. Der Ausgang des Invertierers 400 und der Eingang des Invertierers 401 sind mit den Eingängen von fünf steuerbaren Tristate-Treibern 404, 405, 407, 408 und 409 verbunden. Der Ausgang des Treibers 404 ist mit der Busleitung 40, der Ausgang des Treibers 405 mit der Busleitung 44 und der Ausgang des Treibers 407 mit der Busleitung 46 verbunden. Der Ausgang des Treibers 408 verbindet mit der Busleitung 41 und der Ausgang des Treibers 409 mit der Busleitung 42.
  • 4 zeigt eine Ausführungsform einer Datenregisterzelle. 4 zeigt abermals Bezugszeichen, die sich auf das Datenregister d0 gemäß 2C beziehen. Vorzugsweise haben sämtliche Register d0, ..., d15 die gleiche Struktur. Der Registerkern wird durch zwei Invertierer 700 und 701 gebildet. Diese Invertierer 700 und 701 bilden eine statische Speicherzelle, sodass der Ausgang jedes Invertierers mit dem Eingang des anderen Invertierers verbunden ist. Der Eingang des Invertierers 700 und der Ausgang des Invertierers 701 sind über den Ladeweg von Feldeffekttransistoren 702 und 703 mit den Busleitungen 75 und 77 verbunden. Der Ausgang des Invertierers 700 und der Eingang des Invertierers 701 sind mit den Eingängen von fünf steuerbaren Tristate-Treibern 704, 705, 706, 707 und 708 verbunden. Der Ausgang des Treibers 704 ist mit der Busleitung 75 und der Ausgang des Treibers 705 mit der Busleitung 77 verbunden. Der Ausgang des Treibers 706 verbindet mit der Busleitung 71, der Ausgang des Treibers 707 mit der Busleitung 72 und der Ausgang des Treibers 708 mit der Busleitung 73.
  • Sämtliche anderen Register a1, ..., a15 und d1, ..., d15 sind mit den entsprechenden Busleitungen verbunden, wie in 2C und 2D gezeigt ist. Die Übertragungsgatter 402, 403, 406, 702 und 703 (siehe 3 und 4) sowie die Tristate-Treiber 404, 407, 408, 409, 704, 705, 706, 707 und 708 sind über entsprechende Auswahleingangsanschlüsse steuerbar. Die (nicht gezeigte) Steuerschaltung erzeugt die entsprechenden Steuersignale, um den Betrieb dieser Elemente zusammen mit den anderen steuerbaren Treibern in der universellen Registerdatei 1 (siehe 1) zu steuern. Für Schreibvorgänge kann immer nur eines der Übertragungsgatter eines Registers aktiviert sein, während für irgendeinen Lesevorgang mehrere Tristate-Treiber parallel aktiv sein können.
  • Die universellen Register handhaben sämtliche Daten, die durch eine Datenhandhabungseinheit wie etwa einen Mikrocontroller/Mikrocomputer verarbeitet werden. Daher sind sie Teil des Kerns eines Mikroprozessors/Mikrocontrollers, und die Art und Weise, in der sie die Daten handhaben, hat großen Einfluss auf die resultierende Geschwindigkeit einer derartigen Datenhandhabungseinheit. Die universelle Registerdatei 1 (siehe 1) liefert am häufigsten benötigte Operanden an die Ganzzahlen- sowie die Lade- und Speicher-Pipelines in den Einheiten 11, 12. Die Lade- und Speicheranwiesungen in der Architektur des Anweisungssatzes stellen den Zugriff auf den Datenspeicher 10 bereit, in dem sich eine Mehrheit von Operanden befindet, bevor sie in die Registerdatei 1 eingebracht werden. Wie in 1 gezeigt, ist der funktionelle Blockschaltplan für die Registerdatei unterteilt in eine Adressenregisterdatei 2 und eine Datenregisterdatei 3. Der Datenfluss durch die Registerdateien hängt von der jeweiligen Anweisung ab, die von der Datenhandhabungseinheit abgearbeitet wird.
  • In Übereinstimmung mit der Erfindung sind der Daten- und der Adressenregisterblock 4 bzw. 7 in zwei separaten Blöcken angeordnet. Die Datenregister im Block 7 sind in einer ersten Matrix angeordnet, die c1 Spalten und r1 Zeilen hat, und die Adressenregister im Block 4 sind in einer zweiten Matrix angeordnet, die c2 Spalten und r2 Zeilen hat. Bei der bevorzugten Ausführungsform sind beide Matrices gleich, wobei 2 Spalten und 8 Zeilen vorgesehen sind. Dennoch sind bei dieser Ausführungsform 4 Datenregister im Block 4 sowie 4 Adressenregister im Block 7 parallel angeordnet, sodass über bidirektionale Ports auf Seiten der Speicherschnittstelle gleichzeitig auf 8 Register, 4 geradzahlige und 4 ungeradzahlige Register, zugegriffen werden kann. Daher benötigt bei diesem Beispiel der Bus 15, der einerseits mit der Datenspeichereinheit und andererseits mit den nachfolgend beschriebenen Datenverarbeitungseinheiten eine Schnittstelle bildet, eine Breite von 256 Bits.
  • Auf Seiten der Verarbeitungseinheit bildet die Adressenregisterdatei 4 über den Bus 16 mit jeder Verarbeitungseinheit eine Schnittstelle. Der Bus 16 stellt bei dieser Ausführungsform 6 Busleitungen bereit, wodurch 5 Busleitungen 522, ..., 526 (siehe 2E) mit der Adressenregisterdatei verbinden. Die Datenregisterdatei 7 bildet über den Bus 17 mit jeder Verarbeitungseinheit eine Schnittstelle. Der Bus 17 stellt bei dieser Ausführungsform 6 Busleitungen bereit. Bei dieser Ausführungsform hat, gemäß 3 und 4, jede Registerzelle 5 Ports, wodurch zwei bidirektionale Ports entweder geradzahligen oder ungeradzahligen Registern zugewiesen sind. Daher kann bei dieser Ausführungsform gleichzeitig auf 7 Datenregister und 5 Adressenregister zugegriffen werden, und diese Register können jeder Verarbeitungseinheit Daten zuführen, wobei auf manche Register nur über den Lese-Port zugegriffen werden kann.
  • Abhängig vom Betriebssystem, mit dem der Mikrocontroller betrieben wird, führt diese Anordnung in einem einzigen Zyklus zu einem Zugriff auf mehrere universelle Register des Kerns. In Übereinstimmung mit der Erfindung sind m und n ganze Zahlen größer als 1, sodass gleichzeitig auf mindestens 4 Register zugegriffen werden kann. Eine Aufteilung der Zuweisung mancher Ports zu geradzahligen und ungeradzahligen Registersätzen kann diese Anzahl verdoppeln. Ein Kontextwechsel in einem Echtzeit-Betriebssystem kann es erforderlich machen, dass 8 Datenregister und 8 Adressenregister gewechselt werden müssen. Bei der bevorzugten Ausführungsform könnte dies in nur 2 Zyklen ausgeführt werden, da 8 Register gleichzeitig zugänglich sind. Wenn für einen Kontextwechsel nur 4 Register gewechselt werden müssen, kann dies in einem einzigen Zyklus ausgeführt werden.
  • In Übereinstimmung mit der Erfindung ist jedes Register mit mehreren unidirektionalen und mehreren bidirektionalen Ports versehen. Dies ermöglicht es, dass gleichzeitig auf mehr Register zugegriffen werden kann und dass auch eine breite Vielfalt von unterschiedlichen Anweisungen in einem Minimum an Zeit ausgeführt werden kann. Dies erfolgt in paralleler Weise, wie nachfolgend beschrieben wird. Diese unidirektionalen und bidirektionalen Ports können mit dem Bus, der mit dem Datenspeicher verbunden ist, einzeln verbunden sein. Dies ermöglicht einen gleichzeitigen Zugriff auf so viele Register, wie Ports vorgesehen sind; oder die Register sind in geradzahlige und ungeradzahlige Registersätze aufgeteilt, die mit geradzahligen und mit ungeradzahligen Busleitungen verbunden sind. Bei der Ausführungsform gemäß 2A und 2B sind die Speicherbusleitungen 119 und 121 sowie die Speicherbusleitungen 920 und 922 mit ungeradzahligen Registern in der Adressen- und der Datenregisterdatei verbunden. Die Busleitungen 120 und 122 sowie 921 und 923 sind mit entsprechenden geradzahligen Registern verbunden. Daher werden nur zwei Ports von jedem Register dazu verwendet, mit 4 Registern von jeder Registerdatei 4 und 7 gleichzeitig eine Schnittstelle zu bilden. Auf Seiten der Datenverarbeitung kann der interne Bus zusätzliche Busleitungen aufweisen, die mit unidirektionalen und bidirektionalen Ports der Register verbinden. Bei dieser Ausführungsform sind dies die Busleitungen 802, ..., 806 und 524, ..., 526 (siehe 2F und 2E). Eine Aufteilung zwischen geradzahligen und ungeradzahligen Registern ist für diese Busleitungen optional. Es kann sogar auf mehr Register auf Seiten der Verarbeitungseinheit gleichzeitig zugegriffen werden, wie oben beschrieben ist.
  • Die bidirektionale 256-Bit-Busschnittstelle auf Seiten des Datenspeichers der Registerdatei 1 unterstützt die Übertragung von Operanden zwischen dem Datenspeicher 10 und der Registerdatei 1. Dieser Bus 15 könnte auch 128 Bit breit sein oder könnte, abhängig von der oben beschriebenen Struktur der Register, pro Zyklus 128 Bit des 256-Bit-Busses verwenden. Die Konstruktion dieses Busses kann von der Leistung oder von Problemen abhängen, die mit dem Rauschen zusammenhängen. Im Wesentlichen muss dieser Bus einen parallelen Zugriff auf wenigstens 4 Register unterstützen.
  • Die Konstruktion in Übereinstimmung mit der Erfindung ermöglicht Byte-, Halbwort-, Wort- und Doppelwort-Übertragungen in einem einzigen Zyklus. Der Kontext-Sicherungs- oder -Wiederherstellungsvorgang ermöglicht die Übertragung von 16 Wörtern in zwei Zyklen, wie oben erwähnt (oder in vier Zyklen auf einem 128-Bit-Bus). Jedoch ist die Registerdatei 1 in der Lage, den gesamten Kontext (32 Wörter) in 4 Zyklen (oder in acht Zyklen auf einem 128-Bit-Bus) zu sichern oder wiederherzustellen. Im Allgemeinen unterstützt die Registerdatei 1 Wort-, Doppelwort- und Vierfach-Doppelwort-Zugriffe. Die Datenlenkung für Byte-, Halbwort- und nicht synchronisierte Zugriffe wird in den Adressenlade- und -Speicherpuffern 6, in den Datenlade- und -Speicherpuffern 9 und/oder im DMU-Modul 10 abgewickelt.
  • Die universelle Registerdatei 1 dieser Ausführungsform enthält zweiunddreißig 32-Bit-Register, die in Übereinstimmung mit dem Prinzip der vorliegenden Erfindung gleichmäßig aufge teilt sind, um eine parallele Operation an Ganzzahlen sowie Lade- und Speicheranweisungen zu erleichtern, wie oben beschrieben. Der Datenabschnitt von Registern, die Datenoperanden an die Ganzzahlen-Pipeline liefern, befinden sich im Datenregisterdatei-Block (DGPR) 7. Der DGPR 7 enthält sechzehn 32-Bit-Datenregister. Der Adressenabschnitt von Registern, die Adressenoperanden an die Lade- und Speicher-Pipeline liefern, befinden sich im Adressenregisterdatei-Block (AGPR) 4. Der AGPR 4 enthält sechzehn 32-Bit-Adressenregister. Die Anweisung liefert gewöhnlich die Registeradressen für Lese- und Schreibzugriffe. Die Lese- und Schreib-Adressenzeiger werden in der Anweisungseinholungsstufe aus der Anweisung abgeleitet und in der Decodierungsstufe abgelegt. Die Adresse in den Lesezeigern wird decodiert, damit in der Decodierungsstufe die Registeroperanden gelesen werden. Die Adresse in den Schreibzeigern wird in der Zurückschreibstufe abgelegt. Die Entscheidung für eine Operandenweiterleitung wird in der Decodierungsstufe getroffen, um kritische Wege in der Anweisungseinholungsstufe zu minimieren.
  • Kontextanweisungen mit einer inbegriffenen Adressensequenz greifen auf eine Gruppe von Registern in jeder Registerdatei 2, 3 gleichzeitig zu. Beispielsweise wird während einer Kontextübertragung auf Adressenregister a0, a1, a4 und a5 während des ersten Zyklus gemeinsam zugegriffen, und auf Adressenregister a2, a3, a6 und a7 wird während des nächsten Zyklus gemeinsam zugegriffen.
  • Bei dieser Ausführungsform schreibt die MAC-Anweisung die Anzahl von Lese- und Schreib-Ports in der Datenregisterdatei 7 vor, die mit der Ganzzahlen-Pipeline in der Einheit 11 eine Schnittstelle bilden. Außerdem schreibt der Kontextzugriff die Anforderung einer Anzahl von bidirektionalen I/O-Ports in der Datenregisterdatei 7 vor, die mit der DMU 10 eine Schnittstelle bilden. Die Struktur eines einzigen Registers wurde mit Bezug auf 3 und 4 erläutert. Wegen der Notwendigkeit einer parallelen Ausführung von Ganzzahlen- sowie La de- und Speicheranweisungen sind Ports in der Datenregisterdatei 7 vorgesehen, um ausschließlich mit der Ganzzahlen-Pipeline der Einheit 11 und der DMU 10 eine Schnittstelle zu bilden. Die Lese- und Schreib-Ports in der DGPR 7 ermöglichen eine parallele Ausführung von Multiplikations- und Ladeanweisungen oder von Multiplikations- und Speicheranweisungen. Die Multiplikationsanweisung in dieser Ausführungsform erfordert beispielsweise vier 32-Bit-Lese-Ports, die durch Busleitungen 802 bis 805 (siehe 2F) repräsentiert werden, und zwei 32-Bit-Schreib-Ports, die durch Busleitungen 800 und 801 repräsentiert werden. Der Kontextzugriff benötigt vier bidirektionale 32-Bit-Ports, die durch Busleitungen 920 bis 923 (siehe 2B) repräsentiert werden, sowie interne Busse 900 und 901, die von den Lese-Ports getrennt sind, die der Ganzzahlen-Pipeline in der Einheit 11 zugeordnet sind. Die Lade- und Speicheranweisungen könnten zwei von vier Kontextports und internen Bussen 74 bis 77 gemeinsam nutzen (siehe 2B), die als Lade- und Speicher-Ports bzw. -Busse bezeichnet werden könnten. Die restlichen zwei internen Kontextbusse, die als Zurückschreibbusse bezeichnet werden könnten, könnten von der Ganzzahlen-Pipeline für den Zurückschreibvorgang gemeinsam genutzt werden.
  • Viele Adressenarithmetikanweisungen erfordern zwei 32-Bit-Lese-Ports und einen 32-Bit-Schreib-Port in der Adressenregisterdatei 4, um mit der Adressenarithmetik-Pipeline in der Einheit 12 eine Schnittstelle zu bilden. Bei dieser Ausführungsform schreibt der Kontextzugriff die Anzahl von bidirektionalen I/O-Ports in der Adressenregisterdatei 4 vor, die mit der DMU 10 eine Schnittstelle bilden. Bei der bevorzugten Ausführungsform benötigt der Kontextzugriff vier bidirektionale 32-Bit-Ports, die durch Busleitungen 119 bis 122 (siehe 2A) repräsentiert werden, und interne Busse, die von den Lese-Ports getrennt sind, die der Adressenarithmetik-Pipeline zugeordnet sind. Mit anderen Worten: Für jedes Register, auf das parallel zugegriffen werden kann, muss ein Lese-/Schreib-Port vorgesehen sein. Die Anzahl von Ports hängt daher von der Breite des Busses oder von der Anzahl an Wörtern ab, die auf diesem Bus parallel übertragen werden können. Die Lade- und Speicheranweisungen könnten zwei von vier Kontextports und zwei von vier internen Bussen gemeinsam nutzen, die als Lade- und Speicher-Ports bzw. -Busse bezeichnet werden könnten. Die restlichen zwei internen Kontextbusse, die als Zurückschreibbusse bezeichnet werden könnten, könnten durch die Adressenarithmetik-Pipeline für den Zurückschreibvorgang gemeinsam genutzt werden. Ein hierfür vorgesehener bidirektionaler 32-Bit-Part, der durch Busleitungen 800 (siehe 2F) repräsentiert wird, wickelt Übertragungen zwischen der Anweisungseinholungseinheit und den Registern mit spezieller Funktion der Einheit 12 und der Adressenregisterdatei 4 ab. Kontext- und Stapelzeiger nutzen den Zurückschreibbus gemeinsam, um mit der universellen Datei 1 eine Schnittstelle zu bilden.
  • Wegen der Einschränkung bei der Anzahl von Lese- und Schreib-Ports, die in der Registerdatei 1 verfügbar sind, nutzen Anweisungen, die sowohl Daten- als auch Adressenregister betreffen, nur bestehende Ports gemeinsam. Im Ergebnis müssen bei dieser Ausführungsform viele Adressenarithmetikoperationen, wenn sie parallel mit Ganzzahlenanweisungen ausgegeben werden, im momentanen Zyklus ggf. abgebrochen und im nachfolgenden Zyklus wieder eingeführt werden. Ein hierfür vorgesehener bidirektionaler 32-Bit-Port 806 (siehe 2F) in der Registerdatei löst das Problem der Datenübertragung zwischen Daten- und Adressenregisterdateien. Der Datenoperand aus einem Lese-Port in der Datenregisterdatei 7 wird über den bidirektionalen Port zu einem Lese-Port in der Adressenregisterdatei 4 gelenkt. Das Ergebnis aus der Adressenarithmetik-Pipeline wird für den Zurückschreibvorgang über den Schreib-Port in der Adressenregisterdatei 4 und den bidirektionalen Port zu den Lade- und Speicherbussen in der Datenregisterdatei 7 gelenkt.
  • Es wird ein Lese-Modifizier-Schreibvorgang durchgeführt, um während eines Kontext-Sicherungs- oder -Wiederherstellungsvorgangs auf das Verbindungswort aus dem Datenspeicher zuzugreifen. Um auf das Verbindungswort zuzugreifen, verwendet der Kontextsicherungsvorgang einen Zeiger. Während des Kontextsicherungsvorgangs wird (a) das Verbindungswort in das Zeigerregister geladen, werden (b) die Inhalte aus dem Zeigerregister an einem Verbindungswort-Adressenort gespeichert (wie von den alten Zeigerinhalten angezeigt) und nimmt (c) das Zeigerregister die alten Zeigerinhalte an. Um auf das Verbindungswort zuzugreifen, verwendet der Kontextwiederherstellungsvorgang das Zeigerregister. Während des Kontextwiederherstellungsvorgangs wird (a) das Verbindungswort in das Zeigerregister geladen, werden (b) die Inhalte aus dem Zeigerregister an einem Verbindungswort-Adressenort gespeichert (wie von den alten Zeigerinhalten angezeigt) und nimmt (c) das Zeigerregister die alten Zeigerinhalte an.
  • Die Registerdatei 1 bildet auf einer Seite eine Schnittstelle mit der DMU 10 und verbindet auf der anderen Seite direkt mit der Adressenarithmetik-Pipeline IFU 12 sowie mit der MAC und den Ganzzahlen-Pipelines 11. Die Steuersignale für den Zugriff auf die Registerdatei werden aus den Anweisungen abgeleitet. Zur besseren Übersicht sind diese Leitungen in 2A bis 2F nicht gezeigt. Die Adressenregister 4 werden in der ersten Phase des Decodierungszyklus (oder, für einen Speicheroperanden, des Ausführungszyklus) gelesen und in der ersten Phase des Zurückschreibzyklus geschrieben, um zu vermeiden, dass ein Zurückschreibergebnis weitergeleitet werden muss. Wenn beispielsweise die nächste + 1 Anweisung das Ergebnis der momentanen Anweisung benötigt (die nächste ist in der Mitte), dann wird der Operand direkt aus den Adressenregistern 4 gelesen. Die Datenregister 7 werden in der zweiten Phase des Decodierungszyklus (oder, für Speicheroperanden, des Ausführungszyklus) gelesen und in der zweiten Phase des Zurückschreibzyklus geschrieben. Ein Zugreifen auf Adressen- und Datenregister in abwechselnden Phasen verringert den Spitzenwert der Leistung. Die Datenregisterdatei 3 besteht aus den folgenden Blöcken: universellen Datenregistern 7, Datenlade- und Speicherpuffern 9 und Datenweiterleitungspuffern 8. Die Adressenregisterdatei 2 besteht aus den folgenden Blöcken: universellen Adressenregistern 4, Adressenlade- und Speicherpuffern 6 und einer Adressenweiterleitungseinheit 5.
  • Der Datenregisterdatei-Block 3 enthält bei der bevorzugten Ausführungsform 16 Datenregister d0, ..., d15. Die grundlegende Datenregisterzelle in der Datenregisterdatei 7 besitzt drei Lese-Ports 71, 72, 73 (siehe 2F) sowie zwei bidirektionale Ports 75 und 77. Zwei Lese-Ports 72 und 73 verbinden mit sämtlichen sechzehn Registern d0, ..., d15, wobei sie einen Zugriff auf jedes dieser Register d0, ..., d15 ermöglichen. Jedoch sind die Lese-Ports 70, 71 entweder mit geradzahligen oder mit ungeradzahligen Registern verbunden, sodass auf geradzahlige Register d0, d2, ..., d14 über den geradzahligen Port 71 und auf ungeradzahlige Register d1, d3, ..., d15 über den ungeradzahligen Port 70 zugegriffen wird. Die MAC- und andere Anweisungen benötigen einen dritten Leseoperanden. Die MAC-Anweisung erfordert einen 64-Bit-Akkumulator-Operanden, der keine weitere Lenkung benötigt, da er bereits mit der geradzahligen Adressenbegrenzung synchronisiert ist. Doch wenn der dritte Operand in 32-Bit-Daten besteht, wie bei manchen speziellen Anweisungen, abhängig von der Registeradresse, dann kann der Operand am geradzahligen oder am ungeradzahligen Lese-Port 71 bzw. 70 erscheinen, der eine weitere Lenkung in die Ganzzahlen-Pipeline benötigt. Die Operandenlenkung für die spezielle Anweisung könnte in der Ganzzahlen-Pipeline in ihren eigenen Eingangsmultiplexern abgewickelt werden, was die Notwendigkeit vermeidet, die Steuersignale an die Registerdatei 1 zu senden. Dies schließt einen weiteren Lese-Port in der Datenregisterdateizelle aus.
  • Jeder bidirektionale Port 75, 77, 74, 76 in der Registerzelle ist entweder mit geradzahligen oder mit ungeradzahligen Registern verbunden, sodass auf geradzahlige Register d0, d2, ..., d14 über einen geradzahligen Port 75, 77 und auf unge radzahlige Register d1, d3, ..., d15 über einen ungeradzahligen Port 74, 76 zugegriffen wird. Dies schließt zusätzliche bidirektionale Ports in der Datenregisterzelle aus. Jedoch muss das Datenergebnis, entweder in der Datenspeichereinheit 10 für Lade- und Speicheranweisungen oder in der Datenweiterleitungseinheit 8 für Ganzzahlenanweisungen, synchronisiert werden oder von außen auf geeignete Busse gelenkt werden.
  • Wenn Ganzzahlen-, Lade- und Speicheranweisungen der Reihe nach ausgeführt werden, dann werden die Datenlade- und -Speicher-Busse 76 und 77 sowie die Datenzurückschreibbusse 74 und 75 innerhalb der Datenregisterdatei 3 entsprechend durch Ganzzahlen- und Speicheranweisungen besetzt. Die Datenlade- und Ziel-Registerzeiger bleiben in den Ladepuffern, bis jeder der Busse 74 bis 77 verfügbar gemacht wird. Inzwischen liefern die Ladepuffer die Daten immer dann, wenn der Lesezeiger und der Zielzeiger in den Ladepuffern übereinstimmen.
  • Für eine Ganzzahlen- mit nachfolgender Lade-Anweisungssequenz besetzen die Ladedaten die Datenlade- und -Speicher-Busleitungen 76, 77, während das Zurückschreib-Ergebnis einer Ganzzahlenanweisung die Datenzurückschreib-Busleitungen 74, 75 besetzt. Doch für eine Lade- mit nachfolgender Speicheranweisungssequenz besetzen die Ladedaten, anstatt Datenlade- und -Speicher-Busleitungen 76, 77 zu verwenden, die Datenzurückschreib-Busleitungen 74, 75, während die Speicherdaten die Datenlade- und -Speicher-Busleitungen 76, 77 besetzen.
  • Der Adressenregisterdatei-Block 2 enthält 16 Adressenregister. Die grundlegende Registerzelle im Register besitzt zwei Lese-Ports 41, 42 (siehe 2E) sowie drei bidirektionale Ports 40, 43, 44 oder 40, 45, 46. Jedoch verbinden sowohl die Lese-Ports 41, 42 als auch ein bidirektionaler Port 40 mit sämtlichen sechzehn Registern a0, ..., a15. Adressenarithmetikanweisungen benötigen nur zwei Lese-Ports und einen Schreib-Port, da sie die Zurückschreib-Busse gemeinsam nut zen. Die Lade- und die Speicheranweisungen verwenden die Lade- und die Speicher-Ports. Der dritte bidirektionale Port ist Schleifen- und Sprunganweisungen zugeordnet. Wie üblich, muss das Adressergebnis, entweder in der Datenspeichereinheit 10 für Lade- und Speicheranweisungen oder in der Adressenweiterleitungseinheit 5 für Adressenarithmetikanweisungen, synchronisiert werden oder nach außen gelenkt werden, damit auf geradzahlige und auf ungeradzahlige bidirektionale Ports zugegriffen werden kann.
  • Die Datenweiterleitungseinheit 8 leitet die Lade- oder die Ganzzahlen-Ergebnisse in der Ausführungsstufe der momentanen Anweisung an die Lese-Ports in der Decodierungsstufe der nächsten Anweisung weiter, um die von den Daten abhängige Latenzzeit zu minimieren. Die Adressenweiterleitungseinheit 5 leitet die Lade- oder Adressenarithmetik-Ergebnisse in der Ausführungsstufe der momentanen Anweisung an die Lese-Ports in der Decodierungsstufe der nächsten Anweisung weiter, um die von der Adresse abhängige Latenzzeit zu minimieren. Die Registerinhalte werden auch dann noch in der Decodierungsstufe für die nächste Anweisung gelesen, wenn die momentane Anweisung neueste Daten enthält. Die Inhalte aus dem Register werden verworfen, wenn die momentane Anweisung ein neuestes Datenergebnis hat. Wenn in der Anweisungseinholungsstufe eine Weiterleitungserfassung für die nächste Anweisung ausgeführt werden kann, könnte das Lesen von Registern für jene Operanden vermieden werden, deren Adresse oder Daten aus den Ergebnissen der momentanen Anweisung in der Ausführungsstufe erhalten werden müssen, sodass Leistung in der Registerdatei 1 gespart wird.
  • Die Ganzzahlenanweisung könnte mit einer nachfolgenden Lade- und Speicher- oder einer Adressenarithmetik-Anweisung parallel ausgeführt werden. Jedoch blockiert bei dieser Ausführungsform die Anweisung in der Adressenarithmetik-Pipeline für einen Zyklus, wenn das Ergebnis der Ganzzahlenanweisung an die Adressenarithmetik-Pipeline weitergeleitet werden muss. Die Ergebnisweiterleitung aus der Adressenarithmetik-Pipeline zur Ganzzahlen-Pipeline muss die Ganzzahlen-Pipeline nicht blockieren, da die Adressenarithmetik, das Laden oder das Speichern mit nachfolgenden Ganzzahlenanweisungen niemals parallel ausgeführt werden. Ein bidirektionaler 32-Bit-Bus liefert Datenübertragungen zwischen der Datenweiterleitungseinheit 8 und der Adressenweiterleitungseinheit 5. Ein spezieller Weiterleitungsweg ermöglicht eine parallele Ausführung einer Ganzzahlenanweisung mit nachfolgenden Speicheranweisungen. Das Ergebnis aus der Ganzzahlen-Pipeline in der Ausführungsstufe wird direkt an die Speicherpuffer weitergeleitet.
  • Der Zurückschreibvorgang für Ganzzahlenanweisungen erfolgt über Zurückschreibpuffer 829, 830, 831 (siehe 2F) in der Datenweiterleitungseinheit 8. Die Zurückschreibvorgänge für Adressenarithmetik-, Schleifen- und manche Sprunganweisungen erfolgen über Zurückschreibpuffer 515 (siehe 2E) in der Adressenweiterleitungseinheit 5.
  • Die Lade- und Speicherpuffer-Blöcke 6 und 9 sind funktionell identisch, abgesehen vom Maskierungsblock 915 (siehe 2B) im Datenlade- und -Speicherpuffer 9. Der Datenlade- und -Speicherpuffer 9 sowie der Adressenlade- und -Speicherpuffer 6 bilden für Kontext-Lade- und -Speicher-Vorgänge eine Schnittstelle mit der DMU 10. Der Datenlade- und -Speicherpuffer 9 stellt eine Schnittstelle zwischen der Datenregisterdatei 7 und der DMU 10 bereit. Der Adressenlade- und -Speicherpuffer 6 stellt eine Schnittstelle zwischen der Adressenregisterdatei 2 und der DMU 10 bereit. Obwohl der Datenwegschaltplan von 2A bis 2F die Konfiguration für das Bit 0 zeigt, gilt die gleiche Konfiguration für sämtliche Bit im Schaltplan.
  • Einfache Lade- und Kontextlade-Anweisungen verwenden für einen Zurückschreibvorgang die Ladepuffer 100, 105 (siehe 2A) sowie 908 und 913 (LDB). Diese Ladepuffer 100, 105, 908 und 913 sind sowohl in der Datenweiterleitungseinheit 5 als auch in der Adressenweiterleitungseinheit 8 von den Zurückschreibpuffern getrennt. Eine Kontextladeanweisung verwendet sämtliche vier Ladepuffer 100, 105, 908 und 913 zum Bereitstellen von zwei Doppelwörtern während eines Kontextzurückschreibvorgangs. Die unterschiedlichen Ladeanweisungen für Doppelwörter verwenden zwei Ladepuffer zum Bereitstellen eines Doppelworts während eines Zurückschreibvorgangs. Die anderen Ladeanweisungen und ähnliche Anweisungen verwenden einen geradzahligen oder einen ungeradzahligen Ladepuffer der Puffer 100, 105, 908 und 913 zum Bereitstellen eines Worts für einen Zurückschreibvorgang.
  • Der Synchronisationsteilblock 914 im Datenlade- und -Speicherpuffer 9 wickelt eine Null- und eine Vorzeichenerweiterung für Byte- und Halbwort-Ladeanweisungen ab. Jedoch wickelt die DMU 10 das Entpacken von Ladedaten und die Datenlenkung für nicht synchronisierte Byte-, Halbwort-, Wort- und Doppelwort-Ladevorgänge im Lade- und Speicherwechsler ab.
  • Einfache Speicher- und Kontextspeicher-Anweisungen verwenden für einen Speichervorgang die Speicherpuffer (STB) 101, ..., 104; 909, ..., 912. Eine Kontextspeicheranweisung verwendet sämtliche vier Speicherpuffer 101, ..., 104; 909, ..., 912 zum Bereitstellen von zwei Doppelwörtern während eines Kontextspeichervorgangs. Die Doppelwortspeicheranweisungen verwenden zwei Speicherpuffer zum Bereitstellen eines Doppelworts während eines Speichervorgangs. Die anderen Speicheranweisungen und ähnliche Anweisungen verwenden einen geradzahligen oder einen ungeradzahligen Speicherpuffer 102, 104, 910, 912; 101, 103, 909, 911 zum Bereitstellen eines Worts für einen Speichervorgang. Jedoch wickelt die DMU 10 das Packen von Speicherdaten und die Datenlenkung für nicht synchronisierte Byte-, Halbwort-, Wort- und Doppelwort-Speichervorgänge im Lade- und Speicherwechsler ab.
  • Die Austauschanweisung für Wörter erfordert ein Register, dessen Inhalte gegen Datenspeicherinhalte ausgetauscht werden können, was als ein einziger Zyklus eines Lese-Modifizier-Schreib-Vorgangs angesehen werden könnte. Die Lade- und Speicherpuffer 6 und 9 wickeln den Austauschvorgang ab. Die Austauschanweisung für Wörter führt parallel eine Ladeanweisung für Wörter und eine Speicheranweisung für Wörter aus. Die Ladedaten aus dem Datenspeicher gelangen in die Ladepuffer 908 und 913, und die Speicherdaten aus der Registerdatei gelangen in der Ausführungsstufe in die Speicherpuffer 909, ..., 912. Die Speicherdaten gehen zu dem Datenspeicher 10, und die Ladedaten gelangen in der Zurückschreibphase in die Datenregisterdatei 7. Die (nicht gezeigte) periphere Schnittstelle und ein interner Speicher behandeln die Austauschanweisungen als zwei separate Vorgänge.
  • Für eine spezielle Lade- und Maskierungsanweisung ist ein Lese-Modifizier-Schreib-Vorgang in einem einzigen Zyklus erforderlich, und diese Anweisung führt bis auf einige geringfügige Abweichungen Vorgänge ähnlich wie die oben erwähnte Austauschanweisung aus. Die Lade- und Maskierungsanweisung verwendet zum Ausführen eines Maskierungsvorgangs die Maskierungseinheit 915. Der Ladevorgang liest den Datenspeicher aus und aktualisiert die Ladepuffer 908 und 913, aktualisiert jedoch nicht die Register d0, ..., d15. Der Speichervorgang liest aus den Registern d0, ..., d15 ein Doppelwort aus und speichert nur ein einziges Wort in den Datenspeicher 10 ein. Die Daten aus dem Datenspeicher 10 gelangen in die Ladepuffer 908 und 913, und die Speicherdaten aus der Registerdatei 7 gelangen in der Ausführungsstufe in die Speicherpuffer. Die Maskierungseinheit 915 verwendet das höherwertige Wort aus den Speicherpuffern 911 und 912, um das niederwertige Wort mit dem Ausgang aus den Ladepuffern 908 und 913 zu vereinigen. Die Speicherdaten gehen in der Zurückschreibphase zu dem Datenspeicher 10. Zwischen der Datenspeichereinheit 10 und der universellen Registerdatei kann optional ein Cache-Speicher vorgesehen sein, um den Zugriff auf die im Speicher gespeicherten Daten zu verbessern.

Claims (14)

  1. Datenverarbeitungseinheit (1), die enthält: einen Satz (3) von Datenregistern (d0, d1, ..., d15) und einen Satz von Adressenregistern (a0, a1, ..., a15), wobei jedes Register eine Breite von n Bit hat und wobei jeder Satz von Daten- bzw. Adressenregistern geradzahlige bzw. ungeradzahlige Daten- und Adressenregister enthält, erste Adressenlade- (100, 105) und Adressenspeicherpuffer (102, 104), die den geradzahligen Adressenregistern (a0, a1, ..., a14) zugeordnet sind, und zweite Adressenlade- (100, 105) und Adressenspeicherpuffer (101, 103), die den ungeradzahligen Adressenregistern (a1, a3, ..., a15) zugeordnet sind, erste Datenlade- (908, 913) und Datenspeicherpuffer (910, 912), die den geradzahligen Datenregistern (d0, d1, ..., d14) zugeordnet sind, und zweite Datenlade- (908, 913) und Datenspeicherpuffer (909, 911), die den ungeradzahligen Datenregistern (d1, d3, ..., d15) zugeordnet sind, einen Bus, der mehrere Busleitungen (4346, 7477) besitzt, eine Breite von 4n Bit aufweist und mit den ersten bzw. zweiten Lade- und Speicherpuffern (100, 105, 908, 913, 101104, 909912) verbunden ist, eine Datenspeichereinheit (10), die mit dem Bus verbunden ist, wobei 2n-Bit-Datenwörter und 2n-Bit-Adresswörter von oder zu dem Speicher (10) zu oder von einem der geradzahligen Datenregister (d0, d2, ..., d14), einem der ungeradzahligen Datenregister (d1, d3, d15), einem der geradzahligen Adressenregister (a0, a2, ..., a14) und einem der ungeradzahligen Adressenregister (a1, a3, ..., a15) parallel übertragen werden können.
  2. Datenverarbeitungseinheit (1) nach Anspruch 1, wobei jedes Register mehrere Ports besitzt und wenigstens eine der Busleitungen (4346, 7477) mit einem der Ports jedes Registers parallelgeschaltet ist.
  3. Datenverarbeitungseinheit (1) nach Anspruch 2, wobei jedes Register eine Speicherzelle (400, 401, 700, 701), die einen Eingangsanschluss und einen Ausgangsanschluss besitzt, und mehrere Tristate-Puffer (404, 405, 407, 408, 409, 704708) mit Eingängen und Ausgängen enthält, wobei der Ausgangsanschluss mit den Eingängen der mehreren Tristate-Puffer (404, 405, 407, 408, 409, 704708) verbunden ist.
  4. Datenverarbeitungseinheit (1) nach Anspruch 3, wobei jedes Register ferner mehrere Übertragungsgatter (402, 403, 406, 702, 703) aufweist, wobei der Eingangsanschluss der Speicherzelle (400, 401, 700, 701) mit den Ausgängen der mehreren Übertragungsgatter (402, 403, 406, 702, 703) verbunden ist.
  5. Datenverarbeitungseinheit (1) nach Anspruch 1, die ferner eine Adressenweiterleitungseinheit (5), die den Adressenregistern (a0, a1, ..., a15) zugeordnet ist, und eine Verarbeitungseinheit (12), die mit der Adressenweiterleitungseinheit (5) verbunden ist, enthält.
  6. Datenverarbeitungseinheit nach Anspruch 5, wobei jedes Adressenregister (a0, a1, ..., a15) mehrere Ports besitzt, die Adressenweiterleitungseinheit (5) mehrere Anschlüsse besitzt und wenigstens einer der Anschlüsse mit einem der Ports von wenigstens einem der Adressenregister (a0, a1, ..., a15) verbunden ist.
  7. Datenverarbeitungseinheit (1) nach Anspruch 6, wobei jedes Register (a0, a1, ..., a15) eine Speicherzelle (400, 401) mit einem Eingangsanschluss und einem Ausgangsanschluss und mehrere Tristate-Puffer (404, 405, 407, 408, 409) mit Eingängen und Ausgängen enthält, wobei der Ausgangsanschluss mit den Eingängen der mehreren Tristate-Puffer (404, 405, 407, 408, 409) verbunden ist.
  8. Datenverarbeitungseinheit (1) nach Anspruch 7, wobei jedes Register (a0, a1, ..., a15) ferner mehrere Übertragungsgatter (402, 403, 406) aufweist, wobei der Eingangsanschluss der Speicherzelle (400, 401) mit den Ausgängen der mehreren Übertragungsgatter (402, 403, 406) verbunden ist.
  9. Datenverarbeitungseinheit (1) nach Anspruch 1, die ferner einen Datenweiterleitungspuffer (8), der den Datenregistern (d0, d1, ..., d15) zugeordnet ist, und eine Verarbeitungseinheit (11), die mit dem Datenweiterleitungspuffer (8) verbunden ist, enthält.
  10. Datenverarbeitungseinheit (1) nach Anspruch 9, wobei jedes Datenregister (d0, d1, ..., d15) mehrere Ports besitzt, die Datenweiterleitungseinheit mehrere Anschlüsse besitzt und wenigstens einer der Anschlüsse mit einem der Ports von wenigstens einem der Datenregister (d0, d1, ..., d15) verbunden ist.
  11. Datenverarbeitungseinheit (1) nach Anspruch 10, wobei jedes Register (d0, d1, ..., d15) eine Speicherzelle (700, 701) mit einem Eingangsanschluss und einem Ausgangsanschluss und mehrere Tristate-Puffer (704, 708) mit Eingängen und Ausgängen enthält, wobei der Ausgangsanschluss mit den Eingängen der mehreren Tristate-Puffer (704708) verbunden ist.
  12. Datenverarbeitungseinheit (1) nach Anspruch 11, wobei jedes Register (d0, d1, ..., d15) ferner mehrere Übertragungsgatter (702, 703) enthält, wobei der Ein gangsanschluss der Speicherzelle (700, 701) mit den Ausgängen der mehreren Übertragungsgatter (702, 703) verbunden ist.
  13. Datenverarbeitungseinheit (1) nach Anspruch 1, wobei eine Synchronisationseinheit (914) vorgesehen ist, die geradzahlige oder ungeradzahlige Register mit geradzahligen oder ungeradzahligen Adressen des Speichers über den Bus verbindet.
  14. Datenverarbeitungseinheit (1) nach Anspruch 1, wobei eine Maskierungseinheit (915) vorgesehen ist, die mit wenigstens einem Port wenigstens eines der Register verbunden ist.
DE69838701T 1997-09-12 1998-09-11 Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit Expired - Lifetime DE69838701T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/928,428 US6041387A (en) 1997-09-12 1997-09-12 Apparatus for read/write-access to registers having register file architecture in a central processing unit
US928428 1997-09-12

Publications (2)

Publication Number Publication Date
DE69838701D1 DE69838701D1 (de) 2007-12-27
DE69838701T2 true DE69838701T2 (de) 2008-10-30

Family

ID=25456221

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838701T Expired - Lifetime DE69838701T2 (de) 1997-09-12 1998-09-11 Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit

Country Status (5)

Country Link
US (1) US6041387A (de)
EP (1) EP0902360B1 (de)
JP (1) JPH11154089A (de)
KR (1) KR19990029748A (de)
DE (1) DE69838701T2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567910B2 (en) * 1998-02-13 2003-05-20 Texas Instruments Incorporated Digital signal processing unit with emulation circuitry and debug interrupt enable register indicating serviceable time-critical interrupts during real-time emulation mode
US6256725B1 (en) * 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
EP1050800A1 (de) 1999-05-03 2000-11-08 STMicroelectronics SA Pipelineausführungseinheit
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
US6732255B1 (en) * 1999-09-15 2004-05-04 Koninklijke Philips Electronics N.V. Can microcontroller that permits concurrent access to different segments of a common memory by both the processor core and the DMA engine thereof
US6766440B1 (en) * 2000-02-18 2004-07-20 Texas Instruments Incorporated Microprocessor with conditional cross path stall to minimize CPU cycle time length
US7383419B2 (en) * 2002-05-24 2008-06-03 Nxp B.V. Address generation unit for a processor
US7443737B2 (en) 2004-03-11 2008-10-28 International Business Machines Corporation Register file
US20060200649A1 (en) * 2005-02-17 2006-09-07 Texas Instruments Incorporated Data alignment and sign extension in a processor
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9697318B2 (en) * 2015-10-08 2017-07-04 Altera Corporation State visibility and manipulation in integrated circuits
CN111857823A (zh) * 2020-07-15 2020-10-30 北京百度网讯科技有限公司 用于写回指令执行结果的装置和方法、处理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4313162A (en) * 1979-12-14 1982-01-26 Burroughs Corporation I/O Subsystem using data link processors
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US4811296A (en) * 1987-05-15 1989-03-07 Analog Devices, Inc. Multi-port register file with flow-through of data
EP0473805A1 (de) * 1990-09-03 1992-03-11 International Business Machines Corporation Computersystem mit verbesserter Leistung
JP2861560B2 (ja) * 1991-12-25 1999-02-24 松下電器産業株式会社 データ処理装置
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
US5644780A (en) * 1995-06-02 1997-07-01 International Business Machines Corporation Multiple port high speed register file with interleaved write ports for use with very long instruction word (vlin) and n-way superscaler processors

Also Published As

Publication number Publication date
EP0902360A2 (de) 1999-03-17
DE69838701D1 (de) 2007-12-27
KR19990029748A (ko) 1999-04-26
JPH11154089A (ja) 1999-06-08
EP0902360A3 (de) 2002-09-04
US6041387A (en) 2000-03-21
EP0902360B1 (de) 2007-11-14

Similar Documents

Publication Publication Date Title
DE3588009T2 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung.
DE69231500T2 (de) Ein-Chip-Mikrorechner
DE3685913T2 (de) Vektorenverarbeitung.
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69230057T2 (de) Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE2755273C2 (de)
DE69429226T2 (de) Absendung von Befehlen an mehrere Verarbeitungseinheiten
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69838701T2 (de) Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit
EP0010185B1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
DE3855300T2 (de) Schnittstellenschaltung zur Datenübertragung zwischen Prozessor und Ein-/Ausgabevorrichtung
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE2533737A1 (de) Datenprozessor
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE3650642T2 (de) Speichermittel mit Mehrwortauslesen und Schreiben
WO2007017373A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
EP0325677A2 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
EP0477595A2 (de) Cachespeichereinrichtung mit m Busanschlüssen
DE4022365C2 (de) Datenübertragungssystem
DE3545937A1 (de) Mikroprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition