DE69817645T2 - Verfahren und Vorrichtung zur Verdichtung von Mikroprogrammschleifen - Google Patents

Verfahren und Vorrichtung zur Verdichtung von Mikroprogrammschleifen Download PDF

Info

Publication number
DE69817645T2
DE69817645T2 DE1998617645 DE69817645T DE69817645T2 DE 69817645 T2 DE69817645 T2 DE 69817645T2 DE 1998617645 DE1998617645 DE 1998617645 DE 69817645 T DE69817645 T DE 69817645T DE 69817645 T2 DE69817645 T2 DE 69817645T2
Authority
DE
Germany
Prior art keywords
microinstructions
register
fields
microinstruction
iteration
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
DE1998617645
Other languages
English (en)
Other versions
DE69817645D1 (de
Inventor
Eric Lenormand
Philippe Bonnot
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.)
Thales SA
Original Assignee
Thales SA
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 Thales SA filed Critical Thales SA
Publication of DE69817645D1 publication Critical patent/DE69817645D1/de
Application granted granted Critical
Publication of DE69817645T2 publication Critical patent/DE69817645T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Landscapes

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

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Verdichtung von Mikroprogrammschleifen mit langen Mikrobefehlen.
  • Sie ist insbesondere auf mikroprogrammierte Strukturen anwendbar, die in Form von Mikroschaltungen oder Mikrochips realisiert werden, welche unter dem Namen VLIW-Struktur bekannt sind (VLIW ist die Abkürzung des englischen Begriffs "Very Long Instruction Word").
  • In diesen Strukturen setzt sich das Format der Mikrobefehle, die sich mit jedem Taktzyklus erneuern, explizit aus Feldern zusammen, die spezifischen Ressourcen, wie zum Beispiel arithmetisch-logischen Einheiten oder Adressenberechnungseinheiten u. s. w., zugeordnet sind und je der Ausführung von besonderen Klassen von Elementaroperationen gewidmet sind.
  • Die langen Mikrobefehle sind sinnvoll, da sie Steuerungen der Ressourcen vereinfachen, denn der parallele Ablauf bei der Ausführung der verschiedenen Elementaroperationen durch die verschiedenen Ressourcen bei einer Programmierung oder dem Kompilieren der verschiedenen Mikrobefehle und nicht in Echtzeit bei ihrer Ausführung bestimmt wird, wie dies beispielsweise für die unter dem englischen Begriff "Reduced Instruction Set Computer" bekannten Strukturen der Fall ist. Dagegen können, wie beim allgemeinen Ablauf eines Mikroprogramms, nicht alle Ressourcen in jedem Zyklus zur gleichen Zeit angesteuert werden, und bestimmte Felder müssen von jeder Information freigehalten werden, was zu einer Erhöhung der erforderlichen Anzahl von Mikrobefehlen führt. Daraus ergibt sich ein wesentlicher Nachteil der VLIW-Strukturen, da sie zu Mikroprogrammen führen, die einen erheblichen Speicherraum beanspruchen, denn sie arbeiten oft in leeren Feldern, welche entweder von außen importiert oder im verdeckten Speicher des Mikrochips gespeichert werden müssen. Die VLIW-Strukturen werden insbesondere in sehr spezialisierten Bereichen eingesetzt, die von angepaßten Ressourcen Nutzen ziehen. Dies gilt beispielsweise für unter dem englischen Begriff "Digital Signal Processor" bekannten Signal-Verarbeitungsschaltungen, die arithmetische Operatoren mit Addierern, Multipizierern-Akkumulatoren, Schieberschaltungen und Einheiten zur Berechnung der Adressen von Operanden enthalten.
  • Für diese Anwendungsbereiche wird die Mehrheit der Rechenleistungen von Wiederholungen besonderer Operationssequenzen oder Iterationsfolgen gebildet, wobei jede Iteration aus Operationen zusammengesetzt ist, die für die Ausführung einer einzigen dieser Folgen notwendig sind. Ein Beispiel für die Iteration aus einer Folge von L Mikrobefehlen ist in 1a dargestellt. Unter Berücksichtigung der Reihenfolge, in der die Operationen einer Iteration ausgeführt werden müssen, und manchmal der Latenz bestimmter Elementaroperationen (zum Beispiel Pipeline-Multiplizierer) ist ein erheblicher Teil der Felder von Mikrobefehlen inaktiv. Um den Wirkungsgrad der Schaltung, wenn mehrere Iterationen auszuführen sind, zu verbessern, muß der Programmierer oder das Programmierwerkzeug das Mikroprogramm einer Iteration so organisieren, daß es sich selbst überlagern kann, indem eine neue Iteration nach jeder Ausführung einer bestimmten Anzahl P von Mikrobefehlen gestartet wird, wobei gilt P < L. Dies erreicht man üblicherweise, indem man die beiden folgenden Regeln anwendet:
    • 1. Eine Ressource (also ein Feld), die während eines Mikrobefehls x verwendet wird, darf nicht von Mikrobefehlen x + k·P aufgerufen werden, wobei k eine beliebige ganze Zahl ungleich null ist.
    • 2. Ein während eines Mikrobefehls x geladenes Register darf nicht als Eingang für eine Operation jenseits des Mikrobefehls x + P – 1 verwendet werden, da die Gefahr besteht, daß es durch den Ladebefehl der nächsten Iteration, also bei x + P, überschrieben wird.
  • 1b zeigt eine Realisierung dieses Prinzips anhand eines Beispiels der Ausführung eines Mikroprogramms, das aus sich nach jeweils vier Zyklen erneuernden Iterationen besteht und dessen Ausführung sich über zehn Zyklen erstreckt. Der maximale Wirkungsgrad ist erreicht, wenn mindestens eine der Ressourcen der Schaltung (also eines der Felder) in jedem Zyklus verwendet wird. In diesem Fall wird die relative Latenz Lr der Iteration durch die kleinste ganze Zahl bestimmt, die eindeutig größer als der Quotient (L – 1)/P ist. Bei dem dargestellten Zahlenbeispiel hat die relative Latenz den Wert 3. Die relative Latenz gibt insbesondere die maximale Anzahl von während eines gegebenen Taktzyklus bearbeiteten Iterationen an.
  • In der Praxis ist ein Mikroprogramm in einem Speicher festgehalten, und zwar ein vollständiger Mikrobefehl je Adresse. Eine Mikrofolgeschaltung liefert in jedem Zyklus die Adresse des Mikrobefehls, der im nächsten Zyklus ausgeführt werden soll. Wenn die Anzahl N von gewünschten Iterationen sehr groß ist, wird das Mikroprogramm in Form einer kompakten Schleife geschrieben, wie dies 2 zeigt. Die Verdichtungsoperation erfolgt entweder von Hand oder automatisch unter Rückgriff auf die bekannten Techniken des Kompilierens, wie sie beispielsweise in dem Aufsatz von M. LAM "Software Pipelining: An Effective Scheduling Technique for VLIW-Machines" beschrieben wird, der in Proc. on Programming Languages Design and Implementation, Juli 1988 veröffentlicht wurde. Im allgemeinen setzt sich das kompakte Mikroprogramm einer Schleife aus drei Teilen zusammen, nämlich
    • – einem als Schleifeneingang bezeichneten Teil, der aus einer Folge von Mikrobefehlen VLIW besteht und nur einmal ausgeführt wird,
    • – einem als "Körper" bezeichneten Teil, der (N – Lr + 1) mal ausgeführt wird,
    • – und einem als Schleifenausgang bezeichneten Teil, der nur einmal ausgeführt wird.
  • Diese Zerlegung in drei Teile ist erforderlich, weil während der ersten und der letzten Iteration bestimmte Mikrobefehlsfelder noch nicht oder nicht mehr aktiv sind. Mit dieser Methode beträgt die Länge des Mikroprogramms der Schleife etwa L + (Lr – 1)·P Mikrobefehle, also in diesem Beispiel 18 Mikrobefehle.
  • Ziel der Erfindung ist es, diese Länge auf P Mikrobefehle zu verringern, indem die Breite der Mikrobefehle geringfügig vergrößert wird.
  • Hierzu ist Gegenstand der Erfindung ein Verfahren zur Verdichtung und Ausführung von aufeinanderfolgenden Iterationen in Mikroprogrammschleifen mit einer bestimmten Anzahl L von langen Mikrobefehlen, die von mehreren gemäß einer bestimmten Anzahl N von Iterationen wiederholbaren Feldern gebildet werden, dadurch gekennzeichnet, daß es darin besteht,
    • – die Anzahl L von Mikrobefehlen in eine Anzahl Lr von Abschnitten aus P Mikrobefehlen zu unterteilen, wobei Lr die kleinste ganze Zahl ist, die eindeutig größer als der Quotient (L – 1)/P ist,
    • – jedem Feld von Mikrobefehlen ein Flaggenfeld hinzuzufügen, das einen Abschnitt identifiziert, in dem sich jeder Mikrobefehl befindet,
    • – in einem Programmspeicher Lr Abschnitte übereinanderzulegen, die erhalten wurden, um ein verdichtetes Mikroprogramm von nur P Mikrobefehlen zu erhalten,
    • – alle P Mikrobefehle der aufeinanderfolgenden Abschnitte zu identifizieren,
    • – und während der N Iterationen die Felder der Mikrobefehle auszuführen, deren Flagennummer einem aktiven Abschnitt entspricht.
  • Die Erfindung hat auch eine Vorrichtung zur Durchführung dieses Verfahrens zum Gegenstand.
  • Der wesentliche Vorteil der Erfindung liegt darin, daß sie eine Verringerung des für den Ablauf von Mikroprogrammen mit langen Mikrobefehlen erforderlichen Speicherraums erlaubt.
  • Andere Merkmale und Vorzüge werden nun anhand der beiliegenden Zeichnungen näher erläutert.
  • Die 1a, 1b und 2 zeigen Organisationsschemata des Speicherraums für die Ausführung von Mikrobefehlen nach dem Stand der Technik.
  • Die 3a und 3b zeigen ein Beispiel für die Verdichtung eines Mikroprogramms gemäß der Erfindung.
  • 4 zeigt eine erste Ausführungsform einer Vorrichtung für die Durchführung des erfindungsgemäßen Verfahrens.
  • 5 ist ein Beispiel für bei der Belegung der Rechenregister auftretende Schwierigkeiten.
  • 6 ist ein zweites Ausführungsbeispiel für eine Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens.
  • Bei der Durchführung des erfindungsgemäßen Verfahrens setzt sich jedes Mikroprogramm einer zu verdichtenden Iteration aus einer bestimmten Anzahl L von Mikrobefehlen zusammen, die in allen Zyklen wiederholt werden können wie dies im oben beschriebenen Beispiel. In jedem Feld Ai, Bi, ... eines Mikrobefehls i wird jedoch, wie 3a zeigt, ein Flaggenfeld PA, PB, ... aus zwei Bits hinzugefügt, das für die Nummer des Abschnitts repräsentativ ist, in dem sich jeder Mikrobefehl befindet. Der erste Abschnitt wird mit 0 und die nachfolgenden Abschnitte werden mit ganzen Zahlen in der natürlichen Reihenfolge bezeichnet. In 3a sind drei Abschnitte dargestellt: Der erste Abschnitt mit der Nummer 0 enthält einen ersten Mikrobefehl aus den Feldern A0, B0, einen zweiten Mikrobefehl aus den Feldern A1, B1, C1, einen dritten Mikrobefehl aus den Feldern A2, B2, C2 und einenm vierten Mikrobefehl alleine aus dem Feld D3. Die zugehörigen Flaggenfelder PA, PB, PC, PD haben alle den dezimalen Wert 0. Der zweite Abschnitt enthält vier Mikrobefehle mit den Feldern D4, D5, (D6, E6), E7 und die zugehörigen Flaggen PD und PE haben den Dezimalwert 1. Schließlich enthält der dritte Abschnitt nur einen Mikrobefehl mit einem einzigen Feld E9, dem eine Flagge des Werts 2 zugeordnet ist. Die Verdichtung aller Felder und der zugehörigen Flaggen erfolgt auf die in 3b gezeigte Art, indem die drei Abschnitte in einem gemeinsamen Abschnitt übereinander angeordnet werden.
  • Das Verfahren erlaubt es, für jede der Iterationen zuerst die in den Feldern mit den Flaggen des Werts 0 enthaltenen Mikrobefehlen auszuführen, dann die Felder mit den Flaggen des Werts 1 uns so weiter bis zu den Feldern, deren Flaggen den Wert Lr – 1 haben. Die Flaggen erlauben es auch, wie weiter unten erläutert wird, der Operation des sie begleitenden Felds einen mit der Iteration verknüpften Kontext hinzuzufügen.
  • Die Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens, die in 4 gezeigt ist, erlaubt es einerseits, alle P Mikrobefehle der aufeinanderfolgenden Abschnitte zu identifizieren und andrerseits während einer bestimmten Anzahl N von Iterationen die Felder auszuführen, deren Flagge einem aktiven Abschnitt entspricht. Diese Vorrichtung enthält einen Programmspeicher 1, eine Programm-Markiervorrichtung 2, einen Iterationszähler 3, der auch als Ticketzähler bezeichnet wird, ein Schieberegister 4, eine Lesevorrichtung 5 und ein Mikrobefehlsregister 6, wobei die Elemente 2, 3 und 4 je in einem gestrichelten Rahmen dargestellt sind. Der Programmspeicher 1 speichert die auszuführenden Mikroprogramme, deren nach dem erfindungsgemäßen Verfahren verdichtete Mikrobefehle durch die Programm-Markiervorrichtung 2 adressiert werden. Diese Vorrichtung kann in bekannter Weise aus einem Akkumulatorregister 7 bestehen, das ausgehend von einer in einem Adressenregister 8 enthal tenen Basisadresse geladen und dann bei jedem Durchlauf des Mikroprogramms zur Ausführung der Mikrobefehlsfelder der nächsten Adresse über eine Multiplexierschaltung 9 um eine Einheit inkrementiert wird.
  • Der Ticketzähler 3 enthält ein Akkumulatorregister 10, in das ursprünglich die Anzahl N von durchzuführenden Iterationen eingetragen wird und das dann bei jeden weiteren Iteration über eine Multiplexierschaltung 11 um eine Einheit dekrementiert wird. Bei jeder neuen Iteration wird der Inhalt des Akkumulatorregisters 10 an den Eingang des Schieberegisters 4 angelegt, das aus Lr – 1 Kippstufen in Reihe besteht, die mit RAD(1) bis RAD(Lr – 1) bezeichnet sind.
  • Die Lesevorrichtung 5 liegt zwischen dem Datenausgang des Speichers 1 und dem Mikrobefehlsregister 6. Sie enthält eine bestimmte Anzahl 111 bis 11n von Toren zur Validierung der aus dem Speicher 1 ausgelesenen Felder. Der Betrieb der Vorrichtung wird nachfolgend im Rahmen einer Realisierung einer Folge von Mikrobefehlen beschrieben, die eine Anzahl N von Iterationen einer Folge enthält, deren Mikroprogramm in der erfindungsgemäß verdichteten Form im Speicher 1 die Adressen Ad0 bis Ad0 + P – 1 belegt. Die Anzahl der in jeder Iteration ausführbaren Mikrobefehle beträgt L und die relative Latenz Lr gleicht der kleinsten ganzen Zahl, die größer als der Quotient (L – 1)·P ist. Außer den den Feldern zugeordneten Flaggen enthält jeder Mikrobefehl, wie in 4 angegeben, einen Indikator für das Ende der Schleife, bestehend beispielsweise aus einem Bit 1 an der Adresse Ad0 + P – 1. Dieses Bit hat ansonsten den Wert 0. Die Programm-Markiervorrichtung 2 schreitet im Rhythmus eines Basistakts H voran, der nicht dargestellt ist, und wird mit jedem Taktschlag um eine. Einheit inkrementiert. Die Programm-Markiervorrichtung 2 wird ursprünglich auf einen Initialisierungswert geladen, der sich an der Adresse Ad0 befindet.
  • Die Ausführung der Mikroprogrammschleife wird durch die Ticket-Zählvorrichtung 3 und das Schieberegister 4 gesteuert, das von den Lr – 1 Registern RAD(1) bis RAD(Lr – 1) gebildet wird.
  • Das Akkumulatorregister 10 wird auf einen Wert N gesetzt. So lange der Inhalt des Registers 10 ungleich null ist, wird der Wert 1 an den Eingang des Schieberegisters 4 angelegt. Man sagt dann, daß das Register 10 ein Ticket erzeugt. Mit "Ticket (0)" wird der Binärwert am Eingang des Schieberegisters bezeichnet und mit "Ticket (i)" wird der im Register RAD(i) enthaltene Binärwert bezeichnet. Wenn die Bedingung "ZURÜCK" validiert ist, wird jedes Ticket (i) in das Register RAD(i + 1) verschoben, wobei i von 0 bis Lr – 2 variiert.
  • Die Bedingung ZURÜCK wird von einem Indikator validiert, der am Ende des Mikrobefehls mitr Adresse Ad0 + P – 1 liegt, vorausgesetzt, daß der Gesamtwert der Ticketwerte (i) für i = 0 bis i = Lr – 2 nicht null ist, was der Information "LEER" in 4 entspricht.
  • Nach der Initialisierung, die darin besteht, gleichzeitig die Register 7 und 10 vorzuladen, wird ein Mikrobefehl in jedem Taktzyklus H ausgewählt. Wenn X der in der Flagge eines gegebenen Felds enthaltene Wert ist, wird dieses Feld durch den Ausgang des Tors 11 nicht validiert, wenn der entsprechende Ticketwert (x) null ist. Liegt dagegen der Ticketwert (x) von 1 vor, dann wird das Feld validiert und der darin enthaltene Befehl wird zur Ausführung an das Befehlsregister 6 übertragen. So werden alle Felder eines Mikrobefehls nach einer eventuellen Nicht-Validierung in das Mikrobefehlsregister 6 bei jedem Taktimpuls H geladen. Die Anzahl von zu verwendenden Registern RAD hängt von der maximal zulässigen relativen Latenz ab. In der Praxis kann die Anzahl von Registern RAD auf drei begrenzt werden. In diesem Fall hat die maximal zulässige Latenz Lr den Wert 4.
  • Die oben beschriebene Vorrichtung erlaubt die Ausführung von allen erforderlichen Operationen mit N Iteratio nen.
  • Jeder Iteration ist ein Ticket zugeordnet, das vom Akkumulatorregister 10 kommt, welcher sich über eine Dauer von Lr Perioden leert. Eine Periode ist als das Intervall von P Taktschlägen definiert, während dem die Mikrobefehle der Adresse Ad0 bis zur Adresse Ad0 + P – 1 nacheinander aus dem vom Register 7 adressierten Speicher 1 gelesen werden. Das Ticket wird aktiv, wenn es zu Beginn einer Periode im Tikketwert (0) erscheint. Während dieser Periode, oder genauer mit einem Taktschlag nach dem Laden in das Mikroregister, werden alle Felder mit einer Flagge 0 ausgeführt. Am Ende dieser Periode, deren letzter Zyklus durch die Bedingung ZURÜCK gekennzeichnet ist, verschiebt sich das Ticket und erscheint im Ticketwert (1) für eine neue Periode, in der die Felder mit der Flagge 1 in den P aufeinanderfolgenden Mikrobefehlen ausgeführt werden. Dieser Mechanismus dauert Lr Perioden, und die letzte Periode aus der Sicht der betreffenden Iteration ist diejenige, in der der Ticketwert (Lr – 1) sich auf die Felder mit der Flagge Lr – 1 bezieht.
  • Im Verlauf einer gegebenen Periode werden mehrere Iterationen durchgeführt, die je einem der Ticketwerte 0 bis Lr – 1 entsprechen. Die beschriebene Vorrichtung startet also N Iterationen, indem ein Ticket (0) bei jedem neuen Start nach jeweils P Taktschlägen H ausgesendet wird, wodurch alle Iterationen vollständig ausgeführt werden. Die Ausführung der letzten Iteration beginnt mit der (N – 1)-ten Periode und endet mit der (N – 1 + Lr – 1)-ten Periode, an deren Ende der Ticketwert Lr – 1, der letzte noch vorhandene Ticketwert, der ungleich null war, zu null wird, während dem der Indikator LEER den Wert 1 annimmt.
  • Eine andere Ausführungsform der Erfindung, die in 6 schematisch dargestellt ist und in der gleiche Elemente wie in 4 mit denselben Bezugszeichen versehen sind, nutzt den Umstand, daß die den Feldern der Mikrobefehle hinzugefügten Flaggen auch eine Angabe über den Kontext liefert, der jeder Iteration beigefügt ist, sodaß die für die verschiedenen Iterationen durchgeführten Operationen getrennt werden können, selbst wenn sie in einem gemeinsamen Taktzyklus ausgeführt werden. Diese Ausführungsvariante der Erfindung erlaubt es, die Schwierigkeiten zu verringern, die mit der Belegungsdauer der Register während der Schleifen eines Mikroprogramms einer Iteration verknüpft sind, um, wie das Beispiel gemäß 5 zeigt, eine Verfälschung der Inhalte bestimmter Register zu vermeiden. An diesem Beispiel kann man nämlich sehen, daß der Mikrobefehl n°1 das Register R2 lädt und daß der geladene Wert vom Mikrobefehl 5 erwartet wird, um als Operand bei der Addition in einem Register R5 mit den Inhalten der Register R2 und R3 zu dienen. Hinsichtlich der Belegung der Ressourcen kann dieses Mikroprogramm mit eine Periode P = 3 verdichtet werden, wobei die nächstfolgende Iteration in einer anderen Schreibweise gezeigt ist. Unter diesen Bedingungen ergibt sich jedoch, daß der Inhalt des Registers R2 durch einen neuen Eingangswert im Zyklus 4 verändert wird, ehe dieser Inhalt im Zyklus 5 verwendet wird. Um dieses Problem zu lösen, können verschiedene Techniken angewendet werden, wie zum Beispiel die, welche in dem Aufsatz von M. UGURDAG "A VLIW Architecture Based on Shifter Register Files" beschrieben werden, der beim 26e Symposium Annuel en Microarchitecture, Dezember 1993 veröffentlicht wurde. Ansonsten müßte der Programmierer die Wiederholperiode P erhöhen oder ein Datenrettungsfeld für das Registers R2 in einem Zwischenregister einführen. Die Erfindung schlägt vor, dieses Problem auf eine andere Weise zu lösen, indem nämlich die Gesamtheit der verfügbaren Register in Untereinheiten mit dem Namen "Seiten" unterteilt wird und indem verschiedene Registerseiten den aufeinanderfolgenden Iterationen zugewiesen werden. Die explizit in dem Mikrobefehl erwähnte Registernummer ist nicht mehr eine absolute Nummer, sondern die Nummer einer bestimmten Registerseite. Unter diesen Bedingungen kann das Laden des Registers R2 während der zweiten Iteration der 5 nicht mehr die Addieroperation stören, die das Register R2 der ersten Iteration verwendet, da alle Register mit der Bezeichnung R2 sich auf unterschiedlichen Seiten befinden. Da die Anzahl von Seiten größer als die relative Latenz Lr oder dieser gleich ist, kann der Programmierer so die Schwierigkeit der Belegungsdauer der Register ignorieren. Wenn also die Gesamtzahl von verfügbaren Registern NREG beträgt und TP und NP die Größe beziehungsweise die Anzahl von Seiten bezeichnen, wird die Wahl von TP und NP so bestimmt, daß die folgenden Bedingungen erfüllt werden:
    • NREG = TP·NP
    • NP ≥ Lr
    • – TP ≤ Anzahl von in einer Iteration aufgerufenen Registern.
  • Folgt man diesem Prinzip, dann ist ein Register x, das in einer Iteration k aufgerufen wird, in Wirklichkeit ein Register, dessen Nummer den Wert x + TP·kmodulo NP hat. Diese letztere Größe bezeichnet also die absolute Nummer des Registers, während x die relative Nummer des Registers ist.
  • In einer Realisierung dieses Verfahrens, die in 6 dargestellt ist, wurden zur Vereinfachung nur die Elemente dargestellt, die für die Verarbeitung eines einzigen Mikrobefehlsfelds mit einer relativen Registernummer benötigt werden. Aber es ist klar, daß diese Ausführungsform sich auch auf mehrere Felder des gleichen Mikrobefehls anwenden läßt. Im Vergleich zur 4 enthält die 6 zusätzlich einen Seitenzähler 12, der über eine Multiplexierschaltung 13 geladen wird und im gleichen Taktrhythmus H1 wie der Ticketzähler 3 fortschreitet.
  • Eine Addierschaltung 14 erlaubt es, die Flaggennummer d vom Inhalt des Seitenzählers 12 abzuziehen. Das Ergebnis CSEITE – d wird in einem Multiplizierer 15 mit dem Inhalt eines Registers multipliziert, der mit dem Wert der Größe TP der Seite geladen wird. Das Ergebnis TP·(CSEITE – d) wird an einen ersten Operandeneingang eines Addierers 16 angelegt, um zur Registernummer in dem Mikrobefehl hinzuaddiert zu werden. Zu Beginn jeder neuen Iteration k enthält der Seitenzähler 12 den Wert kmodulo NP. Aus der Sicht des Mikrobefehls wird ein Feld bezüglich der Iteration k, das eine Flagge des Werts d trägt, während der Periode aktiv, während der die Iteration k + d startet, das heißt, während der Inhalt des Seitenzählers 12 den Wert (k + d)modulo NP besitzt . Erwähnt dieses Zeld ein Register der relativen Nummer x, dann ist die gesuchte absolute Nummer x + TP·( CSEITE – d)modulo NP
  • Es sei bemerkt, daß die Realisierung der in 6 dargestellten Vorrichtung sehr preiswert ist, wenn TP und NP Potenzen von 2 sind.

Claims (4)

  1. Verfahren zur Verdichtung und Ausführung von aufeinanderfolgenden Iterationen in Mikroprogrammschleifen mit einer bestimmten Anzahl L von langen Mikrobefehlen, die von mehreren gemäß einer bestimmten Anzahl N von Iterationen wiederholbaren Feldern gebildet werden, dadurch gekennzeichnet, daß es darin besteht, – die Anzahl L von Mikrobefehlen in eine Anzahl Lr von Abschnitten aus P Mikrobefehlen zu unterteilen, wobei Lr die kleinste ganze Zahl ist, die eindeutig größer als der Quotient (L – 1)/P ist, – jedem Feld von Mikrobefehlen ein Flaggenfeld hinzuzufügen, das einen Abschnitt identifiziert, in dem sich jeder Mikrobefehl befindet, – in einem Programmspeicher (1) Lr Abschnitte übereinanderzulegen, die erhalten wurden, um ein verdichtetes Mikroprogramm von nur P Mikrobefehlen zu erhalten, – alle P Mikrobefehle der aufeinanderfolgenden Abschnitte zu identifizieren (1, 2, 4), – und während der N Iterationen die Felder der Mikrobefehle auszuführen (4, 5), deren Flagennummer einem aktiven Abschnitt entspricht.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß es darin besteht, die Felder der Mikrobefehle jeder der Iterationen auf Registerseiten zu verteilen (12, ..., 16), indem jeder Iteration eine Registerseitennummer zugewiesen wird.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß es darin besteht, die Anzahl von Seiten so zu bestimmen, daß diese Anzahl größer/gleich der Anzahl von Abschnitten Lr ist, und die Anzahl von Registern NREG zu bestimmen, die für die Ausführung der Mikrobefehle erforderlich sind, indem das Produkt (15) aus der Größe (TP) mit der Anzahl (NP) von Seiten gebildet wird, wobei die Größe (TP) durch die Anzahl von in einer Iteration aufgerufenen Registern bestimmt wird.
  4. Vorrichtung zur Durchführung des Verfahrens nach einem beliebigen der Ansprüche 1 und 2, dadurch gekennzeichnet, daß sie einen Programmspeicher (1) zur Speicherung der Mikrobefehle, eine Vorrichtung (2) zur Programm-Markierung, um die Mikrobefehle im Programmspeicher (1) zu adressieren, einen Iterationszähler (10), der an ein Schieberegister (4) angeschlossen ist, um nacheinander die Mikrobefehlsfelder abhängig von den zugeordneten Flaggennummern zu adressieren, eine Lesevorrichtung (5) für die in dem Programmspeicher (1) gespeicherten Mikrobefehlsfelder und ein Mikrobefehlsregister (6) enthält, das bei jeder Iteration für den Transfer der Felder der Mikrobefehle, die aus dem Programmspeicher (1) gelesen wurden, mit dem Mikrobefehlsregister (6) gekoppelt ist.
DE1998617645 1997-03-28 1998-03-24 Verfahren und Vorrichtung zur Verdichtung von Mikroprogrammschleifen Expired - Lifetime DE69817645T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9703839 1997-03-28
FR9703839A FR2761495B1 (fr) 1997-03-28 1997-03-28 Procede et dispositif de compactage de boucles de microprogrammes

Publications (2)

Publication Number Publication Date
DE69817645D1 DE69817645D1 (de) 2003-10-09
DE69817645T2 true DE69817645T2 (de) 2004-07-01

Family

ID=9505296

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1998617645 Expired - Lifetime DE69817645T2 (de) 1997-03-28 1998-03-24 Verfahren und Vorrichtung zur Verdichtung von Mikroprogrammschleifen

Country Status (3)

Country Link
EP (1) EP0867803B1 (de)
DE (1) DE69817645T2 (de)
FR (1) FR2761495B1 (de)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438669A (en) * 1991-11-20 1995-08-01 Hitachi, Ltd. Data processor with improved loop handling utilizing improved register allocation

Also Published As

Publication number Publication date
EP0867803B1 (de) 2003-09-03
FR2761495A1 (fr) 1998-10-02
DE69817645D1 (de) 2003-10-09
EP0867803A1 (de) 1998-09-30
FR2761495B1 (fr) 1999-06-11

Similar Documents

Publication Publication Date Title
DE3750625T2 (de) Datenverarbeitungssystem mit zwei Ausführungseinheiten.
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE1549476C3 (de) Anordnung zur Ausführung von Divisionen
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE3750951T2 (de) Verfahren zur Kodeerzeugung für Rechner mit beschränktem Befehlssatz.
DE1942005B2 (de) Datenverarbeitungsanlage zur aufnahme und abgabe von digitalen daten und zur ausfuehrung von operationen an den daten
DE1934365B2 (de) Umschaltanordnung fuer eine multiprogramm-datenverarbeitungsanlage
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
CH644461A5 (de) Digitale multipliziereinrichtung.
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE3507584C2 (de)
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE69500410T2 (de) Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren
DE2830334C2 (de)
DE69918033T2 (de) Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung
DE69029608T2 (de) Digitale Signalprozessorvorrichtung
DE19746054B4 (de) Verfahren und Vorrichtung zum Ausführen einer Operation mit doppelter Genauigkeit
DE2725614C2 (de)
DE2835110A1 (de) Schneller echtzeit-rechneremulator
DE3686984T2 (de) Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.
DE69817645T2 (de) Verfahren und Vorrichtung zur Verdichtung von Mikroprogrammschleifen
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor
DE10303053A1 (de) Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge

Legal Events

Date Code Title Description
8364 No opposition during term of opposition