DE69923539T2 - Ein Mehrport-Speicher - Google Patents

Ein Mehrport-Speicher Download PDF

Info

Publication number
DE69923539T2
DE69923539T2 DE69923539T DE69923539T DE69923539T2 DE 69923539 T2 DE69923539 T2 DE 69923539T2 DE 69923539 T DE69923539 T DE 69923539T DE 69923539 T DE69923539 T DE 69923539T DE 69923539 T2 DE69923539 T2 DE 69923539T2
Authority
DE
Germany
Prior art keywords
read
memory
instruction
instructions
mode
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 - Fee Related
Application number
DE69923539T
Other languages
English (en)
Other versions
DE69923539D1 (de
Inventor
Laurent Wojcieszak
Sonia Ferrante
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics 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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of DE69923539D1 publication Critical patent/DE69923539D1/de
Application granted granted Critical
Publication of DE69923539T2 publication Critical patent/DE69923539T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3802Instruction prefetching
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Speicherfeld zur Verwendung in einem Computersystem
  • In einem Computersystem werden Instruktionen typischerweise aus einem Programmspeicher geholt, decodiert und an eine Ausführungseinheit geleitet, wo sie ausgeführt werden, um das in dem Programmspeicher gespeicherte Programm auszuführen. Gemäß eines neuartigen Designs eines Computersystems, das durch die Anmelder entwickelt wurde, werden eine Anzahl von verschiedenen Instruktionsmodi unterstützt. Um diese Modi zu unterstützen werden Daten in einem Speicherfeld gespeichert, das es erlaubt, dass Daten gleichzeitig als eine Zeile von 8n Bits geschrieben werden, aber selektiv in Folgen von 2n Bits ausgelesen werden. Somit gibt es gemäß der beschriebenen Ausführungsform einen Eingangsdatenanschluss zum Schreiben von 128 Bits und vier Ausgangsdatenanschlüsse mit jeweils 32 Bits zum Auslesen. Somit werden Zeilen von 128 Bit Länge gleichzeitig nacheinander geschrieben, während es möglich ist, verschiedene Anzahlen von 32 Bit-Abfolgen abhängig von dem Instruktionsmodus des Gerätes auszulesen.
  • Gemäß einem ersten Instruktionsmodus wird eine Sequenz von 2n Bits während jedes Maschinenzyklus ausgelesen, um ein Paar von n-Bit-Instruktionen der Dekodiereinheit zu leiten (hierin als GP16-Modus bezeichnet).
  • Gemäß einem zweiten Instruktionsmodus werden zwei Abfolgen von 2n Bits während jedes Maschinenzyklus ausgelesen, um zwei 2n Bit-Instruktionen der Dekodiereinheit bereitzustellen (hierin als GP32-Modus bezeichnet).
  • Gemäß einem dritten Instruktionsmodus werden vier Abfolgen von 2n Bits während jedes Maschinenzyklus ausgelesen, um gleichzeitig vier Instruktionen von jeweils 2n Bits der Dekodiereinheit bereitzustellen (hierin als VLIW-Modus (VLIW: sehr langes Instruktionswort) bezeichnet). Es ist eine Funktion des VLIW-Modus, dass diese vier Instruktionen eine in dem Speicherfeld gespeicherte Zeile darstellen.
  • Die Erfinder haben ein Speicherfeld entwickelt, das diese Instruktionsmodi in einer einfachen Weise unterstützt.
  • Gemäß der vorliegenden Erfindung ist ein Speicherfeld zum Speichern von Instruktionen in einem Prozessor vorgesehen, umfassend:
    eine erste Gruppe von Speicherzellen, die jeweils einen Schreibeingang und einen einzelnen Leseausgang aufweisen;
    eine zweite und eine dritte Gruppe von Speicherzellen, die jeweils einen Schreibeingang und lediglich zwei Leseeingänge aufweisen; und
    eine vierte Gruppe von Speicherzellen, die jeweils einen Schreibeingang und lediglich drei Leseausgänge aufweisen, wobei alle Schreibeingänge gemeinsam durch eine einzige Schreibadresse adressierbar sind und wobei die Leseausgänge individuell anhand eines Lesezeigers auswählbar sind.
  • In der beschriebenen Ausführungsform umfasst das Speicherfeld vier Ausgangsanschlüsse, wobei der erste Ausgangsanschluss so geschaltet ist, dass er Daten von einer der ersten bis vierten Gruppe empfängt, wobei der zweite Ausgangsanschluss geschaltet ist, um Daten lediglich von der zweiten oder vierten Gruppe zu empfangen, und der dritte und vierte Ausgangsanschluss geschaltet sind, um Daten nur von der dritten bzw. vierten Gruppe zu empfangen.
  • Das Speicherfeld kann einen Leseschaltkreis zum Lesen von Instruktionen aus dem Speicherfeld abhängig von einem Instruktionsmodus des Prozessors umfassen. Somit liest der Leseschaltkreis gemäß dem ersten Instruktionsmodus nacheinander aus der ersten bis dritten Gruppe während aufeinander folgenden Maschinenzyklen aus, um während jedes Maschinenzyklus ein Instruktionspaar an den ersten Ausgangsanschluss anzulegen.
  • In dem zweiten Instruktionsmodus liest der Leseschaltkreis die erste und zweite Gruppe während eines ersten Maschinenzyklus und die dritte und vierte Gruppe während eines nächsten Maschinenzyklus aus, um zwei Instruktionen an dem ersten bzw. zweiten Ausgangsanschluss während jedes Maschinenzyklus bereitzustellen.
  • Gemäß dem dritten Instruktionsmodus liest der Leseschaltkreis alle vier Gruppen während jedes Maschinenzyklus ausliest, um jeweils vier VLIW-Instruktionen jeweils an dem ersten bis vierten Anschluss bereitzustellen.
  • Indem der Aufbau des oben beschriebenen Speicherfeldes sorgfältig vorgesehen wird, um die drei Instruktionsmodi zu unterstützen, war es möglich, den Verdrahtungsaufwand der Festverdrahtung erheblich zu reduzieren, weil nicht alle Gruppen von Speicherzellen mit jedem Ausgangsanschluss verbunden werden müssen. D.h., es entfällt die Notwendigkeit, dass jede Speicherzelle vier Leseanschlüsse aufweist, was normalerweise der Fall wäre, wenn die Speicherzelle an vier Ausgangsanschlüsse angeschlossen würde. Das Reduzieren der Anzahl der Ausleseanschlüsse für jede Zelle macht die Verdrahtung einfacher und spart Siliziumfläche.
  • Zusätzlich kann der Leseschaltkreis vereinfacht werden und durch eine Anzahl von reduzierten Eingangs-Multiplexer-Gatter zur Verfügung gestellt werden, wie es in der nachfolgenden Beschreibung dargestellt ist.
  • Für ein besseres Verständnis der vorliegenden Erfindung und um zu zeigen, wie diese ausgeführt werden kann, wird diese nun beispielhaft mit Hilfe der beigefügten Zeichnungen erläutert, in denen:
  • 1 ein Blockdiagramm einer Vorladeeinheit zeigt;
  • 2 die verschiedenen Instruktionsmodi des Prozessors darstellt;
  • 3 die Organisation eines Vorladepuffers darstellt;
  • 4 ein schematisches Diagramm zeigt, das die Betriebsweise des Vorladepuffers darstellt;
  • 5 eine vereinfachte Darstellung zeigt, die die Kommunikationspfade für eine Instruktionszeile in dem Speicher darstellt; und
  • die 6a bis 6c verschiedene Typen von Speicherzellen darstellen, um die Kommunikationspfade zu implementieren.
  • 1 zeigt ein Blockdiagramm einer Vorladeeinheit 2 für einen Prozessor, wobei die Vorladeeinheit 2 einen Vorladepuffer 4 mit zugeordneten Steuerbits 6 und einen Steuerschaltkreis umfasst, der eine Vorladeeinrichtung 8 und eine Zuordnungseinrichtung 10 aufweist. Die Vorladeeinrichtung 8 ist mit einem Programmspeicher 12 verbunden und dient dazu, Speicherzugriffe auf den Programmspeicher 12 mit Hilfe von Speicherzugriffsteuersignalen 14a, 14b zu starten. Die Adresse in dem Speicher, bezüglich der ein Vorladen gestartet wird, wird in einem Vorladeprogrammzähler 16 in der Vorladeeinrichtung 8 gespeichert. Die Steuerung des Vorladeprogrammzählers wird hierin nicht beschrieben, man kann jedoch annehmen, dass das Vorladen aus dem Speicher gemäß einer Abfolge von Instruktionen, die durch den Prozessor ausgeführt werden, gestartet wird. D.h., der Vorladeprogrammzähler kann jedes Mal, wenn eine Abfolge von benachbarten Instruktionen geladen wird, erhöht werden oder gemäß Verzweigungen, Traps, Interrupts usw. geändert werden. Abhängig von einem Speichervorladevorgang, der durch die Vorladeeinrichtung gestartet wird, werden Instruktionsworte aus dem Programmspeicher 12 an den Vorladepuffer 4 geliefert, wie durch den Dateneingabepfad 18 dargestellt ist.
  • Die Zuordnungseinrichtung 10 steuert das Auslesen von Instruktionen aus dem Vorladepuffer an einen Dekodierer 20 entlang des Datenausgabepfades 22. Um dies auszuführen, sendet und empfängt die Zuordnungseinrichtung Vorladezuordnungs (PFAL)/Dekodiersteuersignale 24a, 24b. Die Zuordnungseinrichtung 10 weist einen Zuordnungsprogrammzähler 26 auf, der verfolgt, wie viele Instruktionen an den Dekodierer 20 bei jedem Maschinenzyklus abgesetzt wurden und eine Zustandsmaschine 28, die einen Lesezeiger RP erzeugt, um den Vorladepuffer auf eine Weise zu steuern, die nachfolgend ausführlicher beschrieben wird.
  • Instruktionen in dem Programmspeicher 12 können eine Länge von 16 Bit oder 32 Bit aufweisen. Der Vorladepuffer unterstützt drei verschiedene Instruktionsmodi, die nachfolgend mit Bezug auf 2 beschrieben werden. Der Instruktionsmodus wird in einem Prozessstatusregister (PSR) 3 gespeichert und kann geändert werden. Wechselsignale chmd1, chmd2 werden durch den Dekodierer 20 abhängig von einem Wechsel des Instruktionsmodus abgesetzt.
  • Gemäß einem ersten Instruktionsmodus wird während jedes Maschinenzyklus ein Paar von 16-Bit-Instruktionen an den Dekodierer 20 von dem Vorladepuffer 4 geliefert. Dieses Paar wird als slot0, slot1 in Bitsequenzen w0, w1 usw. bezeichnet. Dies wird hierin als GP16-Modus bezeichnet.
  • Gemäß einem zweiten Instruktionsmodus werden zwei Instruktionen mit jeweils einer Länge von 32 Bit an den Dekodierer von dem Vorladepuffer in jedem Maschinenzyklus, z.B. w0, w1 im Zyklus 0 geliefert. Dieser Modus wird hierin als GP32-Modus bezeichnet.
  • Gemäß einem dritten Instruktionsmodus werden vier Instruktionen w0, w1, w2, w3 von jeweils 32 Bits Länge in jedem Maschinenzyklus an den Dekodierer geliefert. Dies wird hierin als VLIW bezeichnet.
  • In allen Modi ruft jede Vorladeoperation, die durch den Programmspeicher 12 gestartet wird, ein Instruktionswort von 128 Bit Länge ab. Somit umfasst das Instruktionswort in dem GP16-Modus acht 16-Bit-Instruktionen, die paarweise als slot0, slot1 für jeden Maschinenzyklus zusammengestellt sind. In dem GP32 und VLIW-Modus umfasst das Instruktionswort vier 32-Bit-Instruktionen.
  • Die Organisation des Vorladepuffers 4 ist in 3 dargestellt. Es kann angenommen werden, dass der Vorladepuffer 4 aufeinander folgende Leitungen L0 bis L3 mit jeweils einer Kapazität von 128 Bit aufweist. Es gibt einen einzelnen Schreibanschluss WPO mit einer Breite von 128 Bit, der Daten aus dem Programmspeicher über den Dateneingangspfad 18 und ein Eingangs-Latch FF-in empfängt und diese in die ausgewählte Zeile, gesteuert von einem Schreibzeiger WP[3:0], schreibt. Jede Zeile umfasst vier Speicherorte mit jeweils einer Kapazität von 32 Bits, von denen zur Verdeutlichung jeder diagrammartig als zwei 16-Bit-Abschnitte dargestellt ist. Die Speicherorte sind mit F0 bis F15 bezeichnet. Jede Zeile in 3 wird hierin als eine Gruppe von Speicherorten bezeichnet und weist die Kapazität einer 128-Bit-Zeile aus dem Speicher auf. Dies ermöglicht das Ausführen von bis zu vier aufeinander folgenden Speicherzugriffen, sogar wenn das erste Instruktionswort nicht empfangen wurde oder durch den Prozessor ausgeführt wurde. Während das Instruktionswort in den Speicherorten F0 bis F3 dekodiert wird und nachfolgend ausgeführt wird, kann das Vorladen aus dem Speicher in die Speicherorte F4 bis F7, F8 bis F11 und F12 bis F15 fortgesetzt werden, bis der Puffer gefüllt ist. Wenn das Vorladen aus einem Speicher in die letzte Gruppe F12 bis F15 durchgeführt worden ist, ist es wahrscheinlicher, dass die erste Gruppe F0 bis F3 vollständig in den Dekodierer ausgelesen wurde und ist somit bereit, ein nachfolgendes Instruktionswort aus dem Speicher zu empfangen. Die Anzahl von Zyklen, die notwendig sind ein Instruktionswort zu dekodieren, variiert in jeder Gruppe abhängig von dem Instruktionsmodus der Maschine auf eine Weise, die nachfolgend ausführlicher beschrieben wird. Nichtsdestotrotz ist mindestens ein Zyklus zum Auslesen und Dekodieren notwendig und somit versteckt die Verwendung des Vorladepuffers eine Speicherlatenz.
  • Um einen Zyklus einzusparen, wenn der Vorladepuffer leer ist oder nach einer Verzweigung geleert wird, können Daten den Vorladepuffer mit Hilfe eines Umgehungsschaltkreises BS umgehen. Wie nachfolgend ausführlicher beschrieben wird, ist der Umgehungsschaltkreis als eine Mehrzahl von Multiplexern (MUX0 bis MUX3) in 4 implementiert.
  • 4 zeigt ein ausführlicheres Diagramm des Vorladepuffers und des zugeordneten Leseschaltkreises. Die Speicherorte F0 bis F15 sind zum Zweck der Darstellung vertikal ausgerichtet dargestellt.
  • Die oben in 1 beschriebenen Steuerbits 6 enthalten Leer-Merker EF1 bis EF4, die anzeigen, wenn eine vollständige 128-Bit-Zeile der Speicherorte leer ist, so dass ein nachfolgendes Vorladen aus dem Speicher gestartet werden kann. Wenn ein Vorladen aus dem Speicher durchgeführt wird und Daten in dem Vorladepuffer empfangen wurden, wird der Leer-Merker gelöscht, um anzuzeigen, dass diese Speicherorte nun gefüllt sind.
  • Nun wird das Auslesen des Vorladepuffers mit Bezug auf das schematische Diagramm der 4 beschrieben. Der Vorladepuffer umfasst vier Leseanschlüsse RP1, RP2, RP3 und RP4. Diese Leseanschlüsse sind jeweils in der Lage, ausgewählte Speicherorte F0 bis F15 mit einem 32-Bit-Ausgang pf-buf-out1, 2, 3 oder 4 zu verbinden. Jedoch sind die Leseanschlüsse nicht identisch. Der erste Leseanschluss RP1 weist 16 Eingänge auf, von denen jeder mit einer entsprechendem Speicherort F0 bis F15 verbunden ist und von denen jeder mit dem Ausgang pf-buf-out1 verbunden werden kann. Der zweite Leseanschluss RP2 weist 8 Eingänge auf, die jeweils mit Speicherorten F1, F3, F5, F7, F9, F11, F13, F15 verbunden sind, um die Inhalte dieser Speicherorte selektiv mit dem Ausgang pf-buf-out2 zu verbinden.
  • Der dritte Leseanschluss RP3 weist vier Eingänge auf, die mit den Speicherorten F2, F6, F10 und F14 verbunden sind, um selektiv die Inhalte dieser Speicherorte mit dem Ausgang pf-buf-out3 zu verbinden. Der vierte Leseanschluss RP4 weist auch vier Eingänge auf, die mit den Speicherorten F3, F7, F11 und F15 verbunden sind, um selektiv die Inhalte dieser Speicherorte mit dem Ausgang pf-buf-out4 zu verbinden.
  • Die Leseanschlüsse RP1 bis RP4 werden durch den Lesezeiger RP von der Zuordnungseinrichtung 10 abhängig von dem Instruktionsmodus der Maschine und der entsprechenden Anzahl der Maschinenzyklen, die zum Dekodieren jedes Instruktionswortes notwendig sind, gesteuert.
  • Alternativ ist bei Instruktionen, die direkt aus dem Speicher über den Dateneingabepfad 18 geliefert werden, die Steuerung der Instruktionen, die an den Dekodierer abhängig von dem Instruktionsmodus und dem Maschinenzyklus geliefert werden, zusätzlich über Multiplexer MUX0, MUX1, MUX2 und MUX3 steuerbar. Diese empfangen an ihren Eingängen entsprechende Bits des 128-Bit-Dateneingabepfades 18, um eine Bitfolge von 32-Bit an jeden Multiplexer in jedem Maschinenzyklus bereitzustellen, wie nachfolgend beschrieben wird.
  • Die Auswahl, welche Instruktionen innerhalb des Instruktionswortes an den Dekodierer 20 geliefert werden, wird abhängig von dem Instruktionsmodus durchgeführt, wie nachfolgend beschrieben wird. In 3 werden die Symbole w0 bis w3 für verschiedene Eingangsleitungen der Multiplexer MUX0 bis MUX3 verwendet, um verschiedene Bitfolgen mit 32 Bit wie bei 4 darzustellen. Die Definition jeder Bitfolge von 32 Bit hängt von dem Instruktionsmodus ab, jedoch sind die Bits des Dateneingabepfades immer als w0 [0:31], w1 [32:63], w2 [64:95], w3 [96:127] bezeichnet. Die Eingänge der Multiplexer sind individuell so bezeichnet, dass man zwischen ihnen unterscheiden kann. D.h., in dem GP16-Modus wird die erste Bitfolge w0 in dem ersten Dekodierzyklus, Zyklus 0, an den Dekodierer 20 geliefert. Dies stellt ein Paar von 16-Bit-Instruktionen, slot0, slot1 (w0) für die gleichzeitige Dekodierung durch den Dekoder 20 zur Verfügung. Im nächsten Zyklus, Zyklus 1, wird die Bitfolge w1 bereitgestellt, die das nächste Paar der 16-Bit-Instruktionen slot0, slot1 (w1) zum Dekodieren bereitstellt. Bei dem GP16-Modus sind der Leseanschluss RP1 und der Multiplexer MUX0 lediglich Ausleseeinrichtungen, die verwendet werden, und die Steuerung des Wortes, das an den Dekodierer bereitgestellt wird, wird durch den Multiplexer MUX0 unter der Steuerung des Signals mux-ctrl0 und dem Lesezeiger RP durchgeführt. Wenn das Signal mux-ctrl0 den Leseanschlussausgang pf-buf-out1 auswählt, wählt der Lesezeiger die Eingänge F0 bis F3 über vier aufeinander folgende Zyklen, Zyklus 0 bis Zyklus 3, aus, um aufeinander folgend w0 bis w4 auszulesen. Wenn der Speicherort F3 ausgelesen wurde, setzt der Leseanschlusszähler den Leseanschluss RP1 so zurück, dass er aus den Speicherorten F4 bis F7 über die nächsten vier Zyklen ausliest. Wenn der Puffer nicht verwendet wird, wird das erste Instruktionspaar w0 durch den Multiplexer MUX0 ausgelesen. Das findet in Zyklus 0 statt, wenn der Eingang M00 des Multiplexers MUX0 ausgewählt ist. In der Zwischenzeit wird die 128-Bit-Zeile in die erste Position des Vorladepuffers geladen und der Lesezeiger zeigt auf die nächste Position, die durch den Dekodierer ausgelesen werden soll. Daher wird im Zyklus 1 das nächste Instruktionspaar w1 durch den Multiplexer MUX0 ausgelesen, indem pf-buf-out1 ausgewählt wird.
  • In dem GP32-Modus werden in den ersten Maschinenzyklus die ersten 2 Instruktionen w0, w1 an den Dekodierer 20 bereitgestellt. In dem nachfolgenden Zyklus, Zyklus 1, werden die nächsten zwei Instruktionen w2, w3 an den Dekodierer bereitgestellt. Dieser verwendet die Leseanschlüsse RP1 und RP2 und die Multiplexer MUX0 und MUX1. Wenn das Signal mux-ctrl0 auf pf-buf-out1 eingestellt ist und mux-ctrl1 auf pf-buf-out2, wird der Lesezeiger RP für RP1 auf F0 und auf F1 für RP2 im Zyklus 0 eingestellt. In dem Zyklus 1 wird er auf F2 bzw. F3 geändert. Die Instruktionen werden dann über die nächsten zwei Zyklen von der nächsten Gruppe der Speicherorte F4 bis F7 ausgelesen, indem die Einstellungen der Leseanschlüsse RP1 und RP2 abhängig von dem Lesezeiger RP geändert werden. Alternativ wird der erste Eingang M10 des Multiplexers MUX1 beim Lesen von dem Dateneingangspfad 18 in dem ersten Zyklus eingestellt, um w1 (Bits 31 bis 62) auszulesen, und der erste Eingang M00 des Multiplexers MUX0 wird eingestellt, um w0 (Bits 0 bis 31) auszulesen. Somit werden die Instruktionen w0 und w1 dem Dekodierer 20 in dem Zyklus 0 bereitgestellt. In der Zwischenzeit wird die 128-Bit-Zeile in den Vorladepuffer geladen, so dass in dem nachfolgenden Zyklus, Zyklus 1, w2 und w3 aus dem Puffer gelesen werden, in dem pf-buf-out1 und pf-buf-out2 ausgewählt werden.
  • In dem VLIW-Modus werden vier 32-Bit-Instruktionen w0 bis w3 (slot0 bis slot3) gleichzeitig dem Dekodierer 20 in jedem Maschinenzyklus, z.B. Zyklus 0, bereitgestellt. Die Multiplexer MUX2 und MUX3 werden entsprechend den Steuersignalen mux-ctrl2 bzw. mux-ctrl3 eingestellt, um zu ermöglichen, dass die Instruktionsworte w2 und w3 entweder von dem Puffer oder über den Dateneingangspfad 18 ausgelesen werden. Die Einstellungen von RP1 und RP2, MUX0 und MUX3 sind entsprechend wie in dem GP32-Modus. Jedoch wird angemerkt, dass die Instruktionsworte w2 und w3, die in dem GP32-Modus verbleiben würden, in dem nachfolgenden Zyklus, z.B. Zyklus 1 in dem VLIW-Modus nun ausgelesen wurden. Daher kann der Lesezeiger RP sofort zur nächsten Gruppe der Speicherorte F4 bis F7 springen, um das nachfolgende VLIW-Instruktionswort, das die nächsten vier Instruktionen enthält, auszulesen.
  • Daten werden von den Multiplexern MUX0 bis MUX3 an die entsprechenden Ausgangs-Flip-Flops FF0 bis FF3 über eine Gruppe von Steuergatter, die als GC1, GC2 und GS0 bis GS3 bezeichnet sind, geleitet. Die Steuergatter GC1, GC2 reagieren auf Modusänderungssignale chmd1 bzw. chmd2, die der Vorladeeinheit anzeigen, dass der Instruktionsmodus, in dem die Maschine betrieben wird, sich geändert hat. Die Steuergatter GS0 bis GS3 hängen von den entsprechenden Stoppsignalen stop[0] bis stop[3] ab, um zu verhindern, dass neue Daten an den Dekodierern von dem Ausgangs-Flip-Flop eintreffen. Dies ermöglicht es effektiv, den Dekodierer anzuhalten. Bei einem Stop werden die Ausgänge der Flip-Flops zu dem Eingang ihrer zugeordneten Steuerschalter zurückgeführt, um eine unnötige Operation des nachfolgenden Dekodierers zu vermeiden.
  • Die Betriebsweise der Vorladeeinheit in Abhängigkeit zu den Modusänderungssignalen chmd1 und chmd2 wird nun beschrieben. Das Ausgangs-Flip-Flop FF0 ist mit einem einzelnen 32-Bit-Dekodierer und mit zwei 16-Bit-Dekodierern verbunden. Wenn die Maschine sich in dem GP16-Modus befindet, werden die Ausgänge der zwei 16-Bit-Dekodierer für das Instruktionspaar, das dem Flip-Flop FF0 bereitgestellt wird, ausgewählt. Wenn die Maschine sich in dem GP32-Modus befindet, wird der Ausgang des 32-Bit-Dekodierers ausgewählt. Die verbleibenden Flip-Flops FF1 bis FF3 werden jeweils mit dem entsprechenden 32-Bit-Dekodierer verbunden.
  • Ein erstes Modusänderungssignal chmd1 signalisiert einen Wechsel des Maschineninstruktionsmodus von GP32 zu GP16. Wenn die Maschine in dem GP32-Modus betrieben wurde, betrachtet man die Situation zu Ende des Zyklus 0 mit Bezug auf 2. Die Instruktionen w0 und w1 sind über die Flip-Flops FF0 und FF1 an die entsprechenden 32-Bit-Dekodierer des Dekodierers 20 angelegt worden. Jedoch impliziert nun die Änderung des Instruktionsmodus, dass die 32-Bit-Abfolge, die zuvor als zweite Instruktion w1 im Zyklus 0 des GP32-Modus betrachtet wurde, tatsächlich ein Paar von 16-Bit-Instruktionen, die im Zyklus 1 des GP16-Modus angegeben ist, enthält. Somit muss der Ausgang des 32-Bit-Dekodierer, der mit dem Flip-Flop FF1 verbunden ist, ignoriert werden, und die 32-Bit-Abfolge w1 muss erneut an die zwei 16-Bit-Dekodierer, die mit dem Ausgangs-Flip-Flop F0 verbunden sind, angelegt werden. Dies wird durch die Rückführungsleitung 42 von dem Ausgang des Flip-Flop FF1 zum Eingang des Steuergatters CG1 erreicht.
  • Umgekehrt gibt das Steuersignal chmd2 einen Wechsel des Instruktionsmodus von GP16 zu GP32 an. Man betrachtet nun wieder das Ende des Zyklus 0 mit Bezug auf 2. Das Instruktionspaar, das mit w0 bezeichnet ist, wurde gerade in dem GP16-Modus dekodiert und die Erwartung ist, dass die Maschine nun auf das nächste Instruktionspaar w1 wartet. Jedoch stellt das Wort w1 in dem GP32-Modus eine einzelne Instruktion dar und das Modusänderungssignal chmd2 ermöglicht es, direkt über das Steuergatter GC2 zu dem Ausgangs-Flip-Flop FF1 angelegt zu werden, so dass es direkt an den Eingang des zugeordneten 32-Bit-Dekodierers angelegt werden kann, der mit dem Ausgang des Flip-Flop FF1 verbunden ist. Dies ermöglicht es, dass die Instruktion w1 als eine einzelne 32-Bit-Instruktion dekodiert wird. In dem nächsten Zyklus können die Instruktionen w2 und w3 normal übertragen werden, wie durch Zyklus 1 in dem GP32-Modus in 2 angegeben ist.
  • Aus dem oben Beschriebenen wird klar, dass die Anzahl der Zyklen, die notwendig sind, um alle vier Speicherorte in einer Gruppe auszulesen, von dem Instruktionsmodus abhängt. D.h., in dem GP16-Modus werden vier Zyklen benötigt, in dem GP32-Modus zwei Zyklen und in dem VLIW-Modus ein Zyklus. Wenn alle Speicherorte F0 bis F3 in der ersten Gruppe ausgelesen wurden, wird der erste Leer-Merker EF1 auf den Zustand „gelöscht" gelöscht.
  • Die Zuordnungseinrichtung steuert die Einstellung und das Löschen der Leer-Merker mit Hilfe einer Information von dem Lesezeiger. Die Zuordnungseinrichtung detektiert, wenn der Lesezeiger von einer Zeile (128 Bits) zur nächsten übergeht. Wenn dies erfolgt, wird der Leer-Merker, das der soeben ausgelesenen Seite entspricht, gesetzt.
  • Der Zustand eines Leer-Merkers, das gelöscht worden ist, wird durch die Vorladeeinheit 8 entlang der Zeile 48 detektiert und ein Vorladen auf eine nächste Vorladeadresse wird in dem Vorladeprogrammzähler 16 gestartet. Somit wird die nächste Instruktionszeile aus dem Speicher vorgeladen und der Schreibzeiger WP wird gesetzt, um in die Speicherorte F0 bis F3 zu schreiben. In der Zwischenzeit hat sich der Lesezeiger zur zweiten Gruppe F4 bis F7 geändert, um Instruktionen dieser Gruppe auszulesen und zu dekodieren. Wenn diese Speicherorte leer sind, wird der Leer-Merker EF2 gelöscht, ein nächstes Vorladen aus dem Speicher durch die Vorladeeinheit 8 gestartet und der Lesezeiger bewegt sich zur Gruppe F8 bis F11. Wie man sehen kann, maskiert der Vorladepuffer eine Latenz der Vorladevorgänge aus den Speichern von zumindest drei Zyklen in dem VLIW-Modus und eine größere Anzahl von Zyklen in dem GP32- und GP16-Modus. Signale werden von dem Dekodierer entlang der Leitung 24b an die Zuordnungseinrichtung 10 geliefert, die angeben, in welchem Modus der Dekodierer arbeitet, so dass die Zuordnungseinrichtung den Zuordnungs-Programmzähler 26 entsprechend anpassen kann und die nächste zu dekodierende Instruktion verfolgen kann, so dass der Lesezeiger RP korrekt durch die Zustandsmaschine 28 angesteuert werden kann.
  • Zum Zweck des Beschreibens einer optimierten Implementation des Vorladepuffers wird nun 5 beschrieben. 5 zeigt eine sehr vereinfachte schematische Version, die für jede Bitfolge w0 bis w3 in einer Speicherzeile von 128 Bits die notwendigen Verbindungen über die Multiplexer MUX0 bis MUX4 an die Ausgangseinrichtungen FF0 bis FF4 darstellt. In 5 sei bemerkt, dass die Ausgangseinrichtungen als port0 bis port3 bezeichnet sind. 5 kann am besten in Verbindung mit 2 verstanden werden. D.h., in dem GP16-Modus kann es notwendig sein, jeden der Bitfolgen zu 32 Bit w0 bis w3 über den ersten Multiplexer MUX0 mit port0 zu verbinden. In dem GP32-Modus kann es notwendig sein, die Bitfolgen w0, w2 mit dem ersten Multiplexer MUX0 und die Bitfolgen w1, w3 mit dem zweiten Multiplexer MUX1 zu verbinden. In dem VLIW-Modus kann jede Bitfolge w0 bis w3 direkt mit seinem zugeordneten Multiplexer MUX0 bis MUX3 verbunden werden. Weiterhin ist es niemals notwendig, die Bitfolge w0 an einen anderen Multiplexer weiterzuleiten als MUX0.
  • Tabelle 1
    Figure 00160001
  • Um 5 zusammenzufassen zeigt die Tabelle 1 wie die vier Bitfolgen in der Speicherzeile mit den Ausgangsanschlüssen abhängig von dem Instruktionsmodus der Maschine verbunden werden. Durch diese Merkmale haben die Erfinder realisiert, dass es möglich ist, die Implementation der Speicherzellen in den Pufferspeicherorten F0 bis F15 abhängig von einer Bitfolge in der Speicherzeile, die die Pufferspeicherorte speichern sollen, erheblich zu vereinfachen. Es ist aus 3 offensichtlich, dass die erste Bitfolge w0 in den Pufferspeicherorten F0, F4, F8 oder F12 gespeichert wird. Die Bitfolge w1 wird in den Speicherorten F1, F5, F9 oder F13 gespeichert. Die Bitfolge w2 wird in den Speicherorten F2, F6, F10 oder F14 gespeichert. Die Bitfolge w3 wird in den Speicherorten F3, F7, F11 oder F15 gespeichert.
  • 6a zeigt eine Speicherzelle MC1, die zum Speichern der ersten Bitfolge w0 geeignet ist. Sie weist einen einzelnen Schreibanschluss d, der zum Empfangen eines Schreibaktivierungssignals wen0 ausgelegt ist, und einen einzelnen Leseanschluss q0, der zum Empfangen eines Leseaktivierungssignals ren0 ausgelegt ist, sowie einen Lesezeigereingang iren0 auf. Die Speicherorte F0, F4, F8 und F12 umfassen 32 solcher Zellen zum Anlegen des 32-Bit-Wortes an den ersten Multiplexer MUX0.
  • Die 6b zeigt den Aufbau einer Speicherzelle MC2, der für die Speicherorte F1, F2, F5, F6, F9, F10, F13 und F14 verwendet werden kann. Die Speicherzelle weist einen einzelnen Schreibeingang d auf, der zum Empfangen eines Schreibaktivierungssignals wen0 ausgelegt ist. Die Speicherzelle MC2 weist zwei Leseausgänge q0, q1 auf, die jeweils eine Ausgabe bereitstellen, die von den Leseaktivierungssignalen ren0, ren1 und der Auswahl des Lesezeigers an den Eingängen iren0, iren1 abhängen. Eine solche Speicherzelle, die an den Speicherorten verwendet wird, ermöglicht es, dass die Bitfolgen w1, w2 selektiv an MUX0 und MUX1 (im Falle von w1) und MUX0, MUX2 (im Falle von w2) geschrieben werden.
  • Schließlich zeigt 6c eine Speicherzelle MC3, die für F3, F7, F11 und F15 geeignet ist. Die Speicherzelle MC3 weist einen einzelnen Schreibeingang d auf, der für ein Schreibaktivierungssignal wen0 ausgelegt ist. Sie weist drei Leseausgänge q0, q1 und q2, die jeweils eine Ausgabe aufweisen, die von den Leseaktivierungssignalen ren0, ren1, ren2 und den Lesezeigerauswahlen an den Eingängen iren0, iren1, iren2 abhängen. Durch die Verwendung dieser Speicherzellen kann die Bitfolge w3 selektiv mit MUX0, MUX1 und MUX3 abhängig von der benötigen Lesezeigerauswahl verbunden werden.
  • Mit dem oben beschriebenen Aufbau werden lediglich acht Leseanschlüsse pro Seite in dem Speicher anstelle von 16 benötigt. Dies bedeutet eine kleinere Speicherfeldanordnung und reduziert die Verdrahtungskomplexität. Weiterhin können die Multiplexer MUX0 bis MUX3 vereinfacht werden, so dass es möglich ist, anstelle von vier 5:1-Multiplexern, ein 5:1-Multiplexer MUX0, ein 3:1-Multiplexer, MUX1, und zwei 2:1-Multiplexer, MUX2, MUX3 zu verwenden. Somit reduziert dies die Siliziumfläche, die notwendig ist, den Schaltkreis und die Verdrahtungskomplexität zu implementieren.

Claims (8)

  1. Speicherfeld zum Speichern von Instruktionen in einem Prozessor umfassend: eine erste Gruppe von Speicherzellen (0, 4, 8, 12) die jeweils einen Schreibeingang und einen einzelnen Leseausgang aufweisen; eine zweite (1, 5, 9, 13) und eine dritte Gruppe (2, 6, 10, 14) von Speicherzellen, die jeweils einen Schreibeingang und lediglich zwei Leseeingänge aufweisen; und eine vierte Gruppe (3, 7, 11, 15) von Speicherzellen, die jeweils einen Schreibeingang und lediglich drei Leseausgänge aufweisen, wobei alle Schreibeingänge gemeinsam durch eine einzige Schreibadresse adressierbar sind und wobei die Leseausgänge individuell abhängig von einem Lesezeiger RP auswählbar sind.
  2. Speicherfeld nach Anspruch 1, das vier Ausgangsanschlüsse aufweist, und wobei der erste Ausgangsanschluss (RP1) so geschaltet ist, um Daten von einer der ersten bis vierten Gruppe zu empfangen, wobei der zweite Ausgangsanschluss (RP2) geschaltet ist, um Daten lediglich von der zweiten oder vierten Gruppe zu empfangen, und der dritte (RP3) und vierte Ausgangsanschluss (RP4) geschaltet sind, um Daten nur von der dritten bzw. vierten Gruppe zu empfangen.
  3. Speicherfeld nach Anspruch 1, das einen Leseschaltkreis zum Lesen von Instruktionen aus dem Speicherfeld abhängig von einem Instruktionsmodus des Prozessors umfasst, wobei der Instruktionsmodus die Gruppen steuert, die während eines Maschinenzyklus gelesen werden.
  4. Speicherfeld nach Anspruch 2 oder 3, wobei der Leseschaltkreis abhängig von einem ersten Instruktionsmodus nacheinander die erste bis dritte Gruppe während aufeinander folgenden Maschinenzyklen aufliest, um eine Instruktionspaar an dem ersten Ausgangsanschluss während jedes Maschinenzyklus bereitzustellen.
  5. Speicherfeld nach Anspruch 2 oder 3, wobei der Leseschaltkreis abhängig von einem zweiten Instruktionsmodus die erste und zweite Gruppe während eines ersten Maschinenzyklus und die dritte und vierte Gruppe während eines nächsten Maschinenzyklus ausliest, um zwei Instruktionen an dem ersten bzw. zweiten Ausgangsanschluss während jedes Maschinenzyklus bereitzustellen.
  6. Speicherfeld nach Anspruch 2 oder 3, wobei der Leseschaltkreis abhängig von einem dritten Instruktionsmodus alle vier Gruppen während jedes Maschinenzyklus ausliest, um jeweils vier Instruktionen an dem ersten bis vierten Anschluss bereitzustellen.
  7. Speicherfeld nach einem der vorangehenden Ansprüche, das als ein Prefetch-Puffer verwendet wird.
  8. Speicherfeld nach einem der vorangehenden Ansprüche, das als ein Programmspeicher verwendet wird.
DE69923539T 1999-05-03 1999-05-03 Ein Mehrport-Speicher Expired - Fee Related DE69923539T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP99410050A EP1050885B1 (de) 1999-05-03 1999-05-03 Ein Mehrport-Speicher

Publications (2)

Publication Number Publication Date
DE69923539D1 DE69923539D1 (de) 2005-03-10
DE69923539T2 true DE69923539T2 (de) 2006-02-16

Family

ID=8242253

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69923539T Expired - Fee Related DE69923539T2 (de) 1999-05-03 1999-05-03 Ein Mehrport-Speicher

Country Status (3)

Country Link
US (1) US6718452B1 (de)
EP (1) EP1050885B1 (de)
DE (1) DE69923539T2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158695A1 (en) 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
US7139878B2 (en) * 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4751671A (en) * 1983-02-14 1988-06-14 Prime Computer, Inc. Size configurable data storage system
US4847759A (en) * 1985-03-18 1989-07-11 International Business Machines Corp. Register selection mechanism and organization of an instruction prefetch buffer
US4817051A (en) * 1987-07-02 1989-03-28 Fairchild Semiconductor Corporation Expandable multi-port random access memory
US5134711A (en) * 1988-05-13 1992-07-28 At&T Bell Laboratories Computer with intelligent memory system
WO1992008230A1 (en) * 1990-10-26 1992-05-14 Micron Technology, Inc. High-speed, five-port register file having simultaneous read and write capability and high tolerance to clock skew
US5726584A (en) * 1996-03-18 1998-03-10 Xilinx, Inc. Virtual high density programmable integrated circuit having addressable shared memory cells
US5742557A (en) * 1996-06-20 1998-04-21 Northern Telecom Limited Multi-port random access memory
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
JP2888206B2 (ja) * 1996-08-30 1999-05-10 日本電気株式会社 データ処理装置
EP0869430B1 (de) * 1997-04-02 2005-11-30 Matsushita Electric Industrial Co., Ltd. FIFO-Speicher
KR100307626B1 (ko) * 1998-08-31 2001-11-30 윤종용 디램과버퍼메모리를갖는메모리로직복합집적회로장치

Also Published As

Publication number Publication date
EP1050885B1 (de) 2005-02-02
DE69923539D1 (de) 2005-03-10
EP1050885A1 (de) 2000-11-08
US6718452B1 (en) 2004-04-06

Similar Documents

Publication Publication Date Title
DE19882486B4 (de) Synchroner, nicht-flüchtiger Seitenmodus-Speicher
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
DE19882933B4 (de) Flash-Speicher-Unterteilung für Lese-während-Schreiboperationen
DE3686436T2 (de) Speichersystem mit hoher leistung.
DE69433124T2 (de) Befehlsspeicher mit assoziativem Kreuzschienenschalter
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2829668A1 (de) Kanaldatenpufferspeicher
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
DE2714805A1 (de) Datenverarbeitungssystem
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE2355993A1 (de) Datenverarbeitungseinheit einschliesslich mikroprogramm-steuereinrichtung
DE3015875A1 (de) Speicherzugriffssystem und verfahren fuer einen zugriff zu einem digitalen speichersystem
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE2062228A1 (de) Datenverarbeitungssystem mit gleich zeitigem Zugriff auf mehrere Speicher stellen
DE68927202T2 (de) Paralleler Prozessor
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
DE2926351A1 (de) Look-ahead-speicheradressen- steuereinrichtung
DE3209046A1 (de) Verfahren zur steuerung von terminals
EP0325677A2 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE69923539T2 (de) Ein Mehrport-Speicher
DE69025782T2 (de) Registerbankschaltung
DE1774421B1 (de) Mehrprogramm datenverarbeitungsanlage
DE602004012923T2 (de) Wortweise programmierbarer Flash-Speicher
DE68925771T2 (de) Emulatorsystem für eine Anzeige
DE69433033T2 (de) Zeitverschachtelte leseschreiboperationen in einem hochgeschwindigkeitsrasterpuffersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee