DE19882363B4 - Prozessor mit einem Umgehungsnetzwerk und mehreren Ports - Google Patents

Prozessor mit einem Umgehungsnetzwerk und mehreren Ports Download PDF

Info

Publication number
DE19882363B4
DE19882363B4 DE19882363T DE19882363T DE19882363B4 DE 19882363 B4 DE19882363 B4 DE 19882363B4 DE 19882363 T DE19882363 T DE 19882363T DE 19882363 T DE19882363 T DE 19882363T DE 19882363 B4 DE19882363 B4 DE 19882363B4
Authority
DE
Germany
Prior art keywords
data
register
bypass
address
source
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
DE19882363T
Other languages
English (en)
Other versions
DE19882363T1 (de
Inventor
Steve M. Forest Grove Curtis
Robert J. Portland Murray
Helen Portland Opie
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE19882363T1 publication Critical patent/DE19882363T1/de
Application granted granted Critical
Publication of DE19882363B4 publication Critical patent/DE19882363B4/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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30018Bit or string instructions
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Prozessor (80) mit
wenigstens einer Datenelemente verarbeitenden Ausführungseinheit (ALU0, ALU1, 86) mit die Datenelemente empfangenden Quellen-Ports (88, 90, 92, 94, 96, 98), und
einem mit den Quellen-Ports gekoppelten Umgehungsnetzwerk (110; 250), wobei das Umgehungsnetzwerk (110; 250) aufweist:
einen Multi-Port-Umgehungscache-Speicher (130, 180, 204) mit Datenregistern (D1, D2, D3, D4; ... D12) zum Speichern von aus der wenigstens einen Ausführungseinheit (ALU0, ALU1, 86) ausgegebenen Datenelementen und mit Lese-Ports (R1-1, ... R6-4), wobei jeder Lese-Port mit einem zugehörigen Datenregister gekoppelt ist, und dann, wenn er aktiviert wird, das Datenelement aus dem zugehörigen Datenregister auf eine mit einem zugehörigen Quellen-Port (88, 90, 92, 94, 96, 98) einer Ausführungseinheit gekoppelte Gruppe von Leitern (170; 170-1, ... 170-6) ausgibt, wobei jedes Datenelement in demselben Datenregister gespeichert bleibt, bis es aus dem Umgehungscache-Speicher entfernt wird; und
ein inhaltsadressierbares Speicher-Array (128, 178, 202; 254), das Zieladressen von in zugeordneten Datenregistern des Umgehungscache-Speichers (130,...

Description

  • Die vorliegende Erfindung bezieht sich auf einen Prozessor mit einem Umgehungsnetzwerk zum Liefern von Datenelementen an Ausführungseinheiten.
  • Bei einem superskalierten Mikroprozessor werden Datenelemente in einem Registersatz (Registerdatei) gespeichert, um zur Verwendung durch Ausführungseinheiten, welche Pipelines zugeordnete sind, verfügbar zu sein. Es kann vier oder mehr Taktzyklen beanspruchen, bis ein von einer Ausführungseinheit erzeugtes Datenelement in den Registersatz geschrieben und dann aus dem Registersatz gelesen worden ist, um für die gleiche oder eine andere Ausführungseinheit verfügbar zu sein. Die Verzögerung bei der Verfügbarkeit der Daten wird als Latenz bezeichnet. Jedoch kann es sein, daß die gleiche oder eine andere Ausführungseinheit das Datenelement benötigt, bevor es verfügbar ist, möglicherweise sogar bei dem unmittelbar nachfolgenden Zyklus. Sofern das erforderliche Datenelement nicht verfügbar ist, kann es sein, daß die Ausführungseinheit untätig ist oder auf andere Weise ineffektiv genutzt wird, während sie auf das Datenelement wartet. Das Problem wird durch eine ansteigende Anzahl von Pipelinestufen zusammen mit erhöhten Taktfrequenzen und Größen interner Speicher verschlimmert.
  • Als Teillösung des Problems wurden Umgehungsnetzwerke benutzt, um Datenelemente für mehrere Taktzyklen zu halten. Die Inhalte des Umgehungsnetzwerks sind für die Ausführungseinheit unmittelbarer verfügbar als die Inhalte des Registersatzes, wodurch das Warten der Ausführungseinheit verringert wird. Ein bekanntes einstufiges (d.h. einen Zwischenspeicher pro Ausführungseinheit enthaltendes) Umgehungsnetzwerk ist in EP 0 543 415 A2 beschrieben. Gemäß 1 enthält eine andere bekannte Umgehungseinheit 10 ein Array von Schieberegister-Daten-Latches DL1, DL2, DL3 und DL4, die Datenelemente von einer Ausführungseinheit empfangen. Es gibt zugehörige Schieberegister-Adreß-Latches AL1, AL2, AL3 und AL4. Jedem Datenelement wird eine Adresse in dem Registersatz zugewiesen. Die Adresse in dem Adreß-Latch AL1 ist die den Daten in dem Daten-Latch DL1 zugewiesene Adresse. In gleicher Weise sind die Adressen in den Adreß-Latches AL2, AL3 und AL4 die den Daten in den Daten-Latches DL2, DL3 bzw. DL4 zugewiesenen Adressen. Die Adressen in den Adreß-Latches AL1, AL2, AL3 und AL4 werden als Zieladressen bezeichnet.
  • Unmittelbar bevor ein Datenelement in das Daten-Latch DL1 geschrieben wird, werden die Daten in dem DL3 in das DL4, die Daten in dem DL2 in das DL3 und die Daten in dem DL1 in das DL2 geschoben. In gleicher Weise wird die Adresse in dem AL3 in das AL4, die Adresse in dem AL2 in das AL3 und die Adresse in dem AL1 in das AL2 geschoben. Die den in das DL1 geschriebenen Daten zugewiesene Adresse wird in das AL1 geschrieben. Das Verschieben (von AL3 zu AL4, AL2 zu AL3 und AL1 zu AL2) kann bei jedem Taktzyklus auftreten.
  • Die Datenelemente in den Daten-Latch-Speichern DL1, DL2, DL3 und DL4 werden über jeweils eine Leitung bzw. Leitergruppe 16, 18, 20 und 22 an die Eingänge eines Multiplexers (MUX) 14 angelegt. Es ist klar, daß jeder der Leiter 16, 18, 20 und 22 zahlreiche parallele Leiter aufweist. Das spezielle Datenelement, das von dem MUX 14 über den Ausgang und Leiter 26 weitergeleitet wird, wird von dem Zustand der Signale auf den Leitern 30, 32, 34 und 36 bestimmt. Der Zustand der Signale auf den Leitern 30, 32, 34 und 36 wird von Komparatoren 40, 42, 44 und 46 gesteuert.
  • Es sei beispielsweise angenommen, daß ein Datenelement X im Datenlatch DL2 enthalten ist, und daß den Daten X eine Adresse 000110 zugewiesen ist. Entsprechend wird 000110 in dem Adreß-Latch AL2 gespeichert. Da jedem Datenelement eine unterschiedliche Adresse in dem Registersatz zugewiesen ist, enthalten die Adreß-Latch-Speicher AL1, AL3 und AL4 nicht 000110. Wenn der Mikroprozessor-Einplaner (-Scheduler) feststellt, daß die Daten X über die Leiter 26 zur Verfügung gestellt werden sollen, wird der Wert 000110 als Quellenadresse auf einen Leiter 48 geschrieben. Der Wert 000110 wird zu jedem der Komparatoren 40, 42, 44 und 46 weitergeleitet, wo er mit der jeweiligen Adresse in den Adreß-Latch-Speichern AL1, AL2, AL3 und AL4 verglichen wird. Da der Inhalt des Adreß-Latch AL2 mit dem Wert auf dem Leiter 48 übereinstimmt, wird ein Signal auf dem Leiter 32 angelegt, während die Signale auf den Leitern 30, 34 und 36 weggenommen bleiben. Dementsprechend leitet der MUX 14 die Daten X aus dem Daten-Latch DL2 auf den Leitern 18 zu den Leitern 26 weiter.
  • Es gibt jedoch signifikante Probleme bei der Verwendung von bekannten Umgehungseinheiten, wie beispielsweise der Umgehungseinheit 10. Zunächst werden mit jedem Taktzyklus Daten und Adressen verschoben. Über die Zeit verbraucht dies eine beträchtliche Energiemenge.
  • Zweitens benötigen derartige Umgehungseinheiten eine relativ große Menge an Fläche (real estate) des Mikroprozessors. Die Einfächerung (fan-in) an dem MUX 14 ist wenigstens so groß wie das Produkt der Anzahl von Daten-Latches und der Anzahl von Bits pro Datenelement. Üblicherweise ist die Anzahl von Daten-Latch-Speichern in einer Umgehungseinheit wenigstens gleich der Anzahl von Zyklen der Schreib-Lese-Latenz. Darüber hinaus hält die Umgehungseinheit 10 Datenelemente für nur eine einzige Ausführungseinheit. Die Gesamtfläche erhöht sich mit der Anzahl von Ausführungseinheiten.
  • Es ist Aufgabe der Erfindung, den Energieverbrauch eines Prozessors zu senken, aber noch die Ausführungseinheiten mit einem direkten Zugriff auf die Datenelemente zu versorgen.
  • Diese Aufgabe wird erfindungsgemäß durch einen Prozessor mit den Merkmalen des Anspruchs 1 gelöst.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die Erfindung läßt sich vollständiger aus der unten angegebenen detaillierten Beschreibung und aus den begleitenden Zeichnungen von Ausführungsbeispielen der Erfindung verstehen, welche jedoch nicht in einem die Erfindung auf die beschriebenen speziellen Ausführungsbeispiele einschränkenden Sinne verstanden werden sollen, sondern nur der Erläuterung und dem besseren Verständnis dienen.
  • 1 ist ein schematisches Blockschaltbild einer bekannten Umgehungseinheit.
  • 2 ist ein schematisches Blockschaltbild, das die Verbindungen zwischen einem Umgehungsnetzwerk gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung und einem Registersatz, einer Einplanereinheit und Ausführungseinheiten in einem Mikroprozessor zeigt.
  • 3 ist ein Blockschaltbild eines Abschnitts des Umgehungsnetzwerks gemäß 2.
  • 4 ist eine graphische Darstellung bestimmter Register in dem Registersatz und dem Umgehungsnetzwerk gemäß 2.
  • 5 ist ein detailliertes Blockschaltbild der Komparatoren und Abschnitte des Umgehungscache gemäß 3.
  • 6 ist ein Blockschaltbild eines vollständigeren Abschnitts des Umgehungsnetzwerks gemäß 2.
  • 7 ist ein Blockschaltbild eines alternativen Ausführungsbeispiels eines Umgehungsnetzwerks.
  • Die vorliegende Erfindung bezieht sich auf ein Umgehungsnetzwerk (Bypass-Netzwerk) mit einem oder mehreren Umgehungscaches mit mehreren Ports (Multi-Port-Bypass-Cache). In der folgenden Beschreibung werden zahlreiche spezielle Details angegeben, die ein bevorzugt veranschaulichtes Ausführungsbeispiel der Erfindung betreffen. Es ist jedoch klar, daß die Erfindung auch ohne diese und mit abweichenden speziellen Details implementiert und ausgeführt werden kann.
  • Gemäß 2 enthält ein Mikroprozessor 80 einen Registersatz 84, der Register zum Halten von Daten zur Verwendung durch Ausführungseinheiten enthält. Eine arithmetisch-logische Einheit (ALU) 0 und eine ALU 1 sind Beispiele von Ausführungseinheiten. Eine Ausführungseinheit 86 kann eine ALU oder irgendeine andere Art einer Ausführungseinheit sein. Der Registersatz 84 kann beispielsweise 64 Register von jeweils 38 Bits enthalten. Die 38 Bits können 32 Bits Daten und 6 Flag-Bits halten. Zur Vereinfachung können die gesamten 38 Bits als Daten bezeichnet werden. Der Begriff Daten wird in der vorliegenden Beschreibung in einem breiten Sinne verwendet. Da 26 = 64 ist, können 6 Bits jedes der 64 Register eindeutig identifizieren. Die Ausführungseinheit ALU 0 empfängt Daten aus den Quellen-Ports 88 und 90. Die Ausführungseinheit ALU 1 empfängt Daten aus den Quellen-Ports 92 und 94. Die Ausführungseinheit 86 empfängt Daten aus den Quellen-Ports 96 und 98. Dementsprechend gibt es sechs Quellen-Ports bei dem veranschaulichten Ausführungsbeispiel. Aus der Perspektive einer Einplanereinheit (Scheduler-Einheit) 120 ist jeder der Ausführungseinheiten ALU 0, ALU 1 und 86 ein Abfertigungsport zugeordnet.
  • Die Ausführungseinheiten ALU 0, ALU 1 und 86 enthalten Ausgänge, die mit den Leitern 114, 116 bzw. 118 verbunden sind, auf welchen die Ergebnisse der Operationen zur Verfügung gestellt werden. Ein Umgehungsnetzwerk 110 ist ein einfaches und kompaktes Umgehungsnetzwerk, das relativ wenig Energie verbraucht und einen direkten Zugriff auf Daten für mehrere Ausführungseinheiten zur Verfügung stellt. Das Umgehungsnetzwerk 110 hält die Ergebnisse (die ebenfalls als Daten bezeichnet werden), die von den Ausführungseinheiten ALU 0, ALU 1 und 86 auf den Leitern 114, 116 und 118 zur Verfügung gestellt werden. Bei einem bevorzugten Ausführungsbeispiel kann ein Datenelement in einem Taktzyklus vom Ausgang einer Ausführungseinheit in ein Register im Umgehungsnetzwerk 110 gespeichert und aus dem Register im Umgehungsnetzwerk 110 derselben oder einer anderen Ausführungseinheit verfügbar gemacht werden. (Eine Verzögerung der Lesestufe gegenüber dem Beginn der Schreibstufe kann verwendet werden, um dies in einem Taktzyklus auszuführen.) Die Daten, die in dem Umgehungsnetzwerk 110 gespeichert werden, können außerdem in den Registersatz 84 gespeichert werden, obwohl dies einen oder mehrere zusätzliche Taktzyklen benötigt, um die Speicherung der Daten in dem Registersatz 84 abzuschließen.
  • Die Einplanereinheit 120 weist an, welche Datenelemente aus dem Registersatz 84 und/oder dem Umgehungsnetzwerk 110 zu einem vorgegebenen Zeitpunkt den Ausführungseinheiten ALU 0, ALU 1 und 86 zur Verfügung gestellt werden sollen. Datenelemente aus dem Registersatz 84 werden über die Leiter 104, den Quellen-Ports 88, 90, 92, 94, 96 und 98 zur Verfügung gestellt (sofern dies durch zugehörige Multiplexer ausgewählt wird). Die Leiter 104 können gleichzeitig sechs Datenelemente von N Bit Breite führen. Die Einplanereinheit 120 stellt Quellenadressen über die Leiter 124 dem Registersatz 84 und dem Umgehungsnetzwerk 110 zur Verfügung. Die Einplanereinheit 120 stellt sechs Quellenadressen pro Zyklus, jeweils eine für jeden Quellen-Port 88, 90, 92, 94, 96 und 98 zur Verfügung. Die Einplanereinheit 120 stellt darüber hinaus drei Zieladressen pro Zyklus über die Leiter 126 dem Umgehungsnetzwerk 110 zur Verfügung. Das Umgehungsnetzwerk 110 leitet die Zieladressen über die Leiter 146 an den Registersatz 84 weiter.
  • Die Leiter 134 und 136 stellen Steuersignale an den Registersatz 84 bzw. das Umgehungsnetzwerk 110 zur Verfügung. Die die Steuersignale und die implementierenden Schaltungen betreffenden Details werden nicht angegeben, weil sie den Fachleuten gut bekannt sind und weil, sofern sie zur Verfügung gestellt würden, sie die Zeichnungen erheblich verwirren und die Erfindung verdunkeln. Darüber hinaus gibt es nicht nur einen Weg, derartige Steuersignale und Schaltungen zu implementieren. Ferner sind verschiedene andere interne Signale und implementierende Schaltungen, wie beispielsweise Lese- und Schreibschaltungen, aus den gleichen Gründen nicht veranschaulicht. Für alle in dieser Offenbarung beschriebenen oder veranschaulichten Strukturen können beliebige von verschiedenen gut bekannten Einrichtungen des Entwurfs und der Herstellung benutzt werden.
  • Gemäß den 26 werden die Quellen- und Zieladressen wie folgt benutzt. Jedem Register in dem Registersatz 84 wird eine Adresse zugewiesen (z.B. 0–63). Wenn ein Datenelement in den Registersatz 84 geschrieben werden soll, weist der Einplaner 120 ein spezielles Register für das hineinzuschreibende Datenelement zu. Aus einer anderen Perspektive betrachtet, weist der Einplaner 120 eine Adresse für das Datenelement zu. Wenn das Datenelement außerdem in das Umgehungsnetzwerk 10 geschrieben wird, wird die gleiche Adresse den Daten in sowohl dem Registersatz 84 als auch dem Umgehungsnetzwerk 110 zugewiesen. (In einigen Fällen können Daten aus einer Ausführungseinheit erzeugt und ihnen eine Adresse zugewiesen werden, kurz bevor oder nachdem sie in der Ausführungseinheit erzeugt werden.) 4 veranschaulicht Register in dem Registersatz 84, die 6-Bit-Binäradressen und zugehörige Dezimalwerte einschließen. Repräsentative Daten X1, X2, X3, X4, X5, X6 und X7 (die jeweils 38 Bits breit sein können) sind in ausgewählten Registern des Registersatzes 84 gespeichert. Beispielsweise wird ein Datenelement X4 in das Register 011110 (dezimal 30) und ein Datenelement X6 in das Register 110000 (dezimal 48) geschrieben. Aus einer anderen Perspektive betrachtet, wird den Daten X4 die Adresse 011110 und den Daten X6 die Adresse 110000 zugewiesen.
  • Gemäß den 2 und 6 enthält das Umgehungsnetzwerk 110 ein inhaltsadressierbares Speicherarray (CAM) 128, einen assoziativen Umgehungscache 130 mit mehreren Ports und eine umlaufende Schreibzeigereinheit 132. Wie es in 6 gezeigt ist, enthält das Umgehungsnetzwerk 110 außerdem CAMs 178 und 202, welche gleich dem CAM 128 sind; Mehr-Port-Umgehungscache-Speicher 180 und 204, welche gleich dem Umgehungscache 130 sind; und umlaufende Schreibzeigereinheiten 182 und 206, welche gleich der umlaufenden Schreibzeigereinheit 132 sind. Der CAM 128 enthält die Register A1, A2, A3 und A4, der CAM 178 die Adreßregister A5, A6, A7 und A8 und der CAM 202 die Adreßregister A9, A10, A11 und A12. Der Umgehungscache 130 umfaßt die Datenregister D1, D2, D3 und D4, der Umgehungscache 180 die Datenregister D5, D6, D7 und D8 und der Umgehungscache 204 die Datenregister D9, D10, D11 und D12. Der CAM 128 und der Umgehungscache 130 bilden einen vollständig assoziativen Cache. Der CAM 178 und der Umgehungscache bilden einen vollständig assoziativen Cache. Der CAM 202 und der Umgehungscache 204 bilden einen vollständig assoziativen Cache.
  • Gemäß den 2, 3 und 6 werden Datenelemente aus den Leitungen 114 in die Datenregister D1, D2, D3 und D4 geschrieben. Die Adreßregister A1, A2, A3 und A4 halten 6-Bit-Zieladressen aus den Leitern 126, die den in den Datenregistern D1, D2, D3 bzw. D4 gespeicherten Daten entsprechen. Für jedes gegebene Datenelement auf den Leitern 114 hängt das jeweilige Datenregister D1, D2, D3 und D4, in welches die Daten geschrieben werden, und das spezielle Adreßregister A1, A2, A3 und A4, in welches die zugehörige Zieladresse geschrieben wird, von der Position eines Schreibzeigers in der umlaufenden Schreibzeigereinheit 132 ab.
  • Die umlaufende Schreibzeigereinheit 132 enthält die Register P1, P2, P3 und P4, welche vier Positionen darstellen, die einen Schreibzeiger halten können. Der Schreibzeiger befindet sich an einer der vier Positionen. Nach jedem Schreiben wird der Schreibzeiger zu dem nächsten Register weitergeschoben. Wenn beispielsweise der Schreibzeiger sich im Register P3 befindet, wird nach einem Schreiben der Schreibzeiger zum Register P4 geschoben. Nach dem nächsten Schreiben wird der Schreibzeiger in das Register P1 geschoben usw. Die Leiter 138A und 138B werden aktiviert, wenn der Schreibzeiger sich im Register P1 befindet. Die Leiter 140A und 140B werden aktiviert, wenn sich der Schreibzeiger im Register P2 befindet. Die Leiter 142A und 142B werden aktiviert, wenn sich der Schreibzeiger im Register P3 befindet. Die Leiter 144A und 144B werden aktiviert, wenn sich der Schreibzeiger im Register P4 befindet.
  • 4 veranschaulicht die Beziehungen zwischen den Zieladressen des Registersatzes 84 und den Daten in dem Registersatz 84 und den Zieladressen und Daten im Umgehungsnetzwerk 110. Gemäß den 3 und 4 wird den Daten X4 die Zieladresse 011110 zugewiesen. Dementsprechend werden die Daten X4 an der Adresse 011110 in dem Registersatz 84 gespeichert. Zu dem Zeitpunkt, zu dem die Daten X4 in den Umgehungscache 130 geschrieben werden sollen, zeigt der Schreibzeiger der umlaufenden Schreibzeigereinheit 132 auf das Adreßregister A1 und das Datenregister D1. Entsprechend wird 011110 in das Adreßregister A1 geschrieben, und die Daten X4 werden in das Datenregister D1 geschrieben. Bei dem nächsten Schreibzyklus wird die Adresse 110000 in das Adreßregister A2 und die Daten X6 werden in das Datenregister D2 geschrieben. In dem Registersatz 84 sind die Daten X6 im Register 110000 gespeichert. Man beachte, daß in Abhängigkeit von den Umständen aufgrund der Zeitverzögerung es sein kann, daß 4 keine zeitliche Momentaufnahme darstellt.
  • Gemäß 6 werden die Daten aus der Ausführungseinheit ALU 1 auf den Leitern 116 den Datenregistern D5, D6, D7 und D8 und dem Registersatz 84 zur Verfügung gestellt. Zugehörige Zieladressen werden über die Leiter 126 den Adreßregistern A5, A6, A7 und A8 zur Verfügung gestellt. Jedoch hängt das spezielle Adreßregister und das spezielle Datenregister, in welches die Zieladresse und das Datenelement geschrieben werden, von der Position eines Schreibzeigers in der umlaufenden Schreibzeigereinheit 182 zum Zeitpunkt des Schreibens ab.
  • Daten aus der Ausführungseinheit 86 werden auf den Leitern 118 den Datenregistern D9, D10, D11 und D12 und dem Registersatz 84 zur Verfügung gestellt. Zugehörige Zieladressen werden über die Leiter 126 den Adreßregistern A9, A10, A11 und A12 zur Verfügung gestellt. Jedoch hängen das spezielle Adreßregister und das spezielle Datenregister, in welche eine Zieladresse und das Datenelement geschrieben werden, von der Position eines Schreibzeigers in der umlaufenden Schreibzeigereinheit 206 zum Zeitpunkt des Schreibens ab.
  • Adressen bleiben in den Adreßregistern und Daten bleiben in den Datenregistern in dem Umgehungsnetzwerk 110, bis sie überschrieben werden. Bei dem Ausführungsbeispiel gemäß den 3 und 6 werden die Daten bei jedem vierten Schreiben überschrieben. Wenn es fünf Adreßregister pro CAM, fünf Zeigerpositionen pro umlaufender Schreibzeigereinheit und fünf Datenregister in jedem Umgehungscache gäbe, würden eine Adresse und ein Datenelement nach jeweils fünf Schreiboperationen überschrieben werden.
  • Bei dem Ausführungsbeispiel gemäß den 2 bis 6 wird die Position eines Schreibzeigers anstelle der Adressen in den Adreßregistern und der Daten in den Datenregistern verschoben. Beispielsweise bleibt eine im Adreßregister A1 gespeicherte Adresse in dem Adreßregister A1, bis sie überschrieben wird sobald der Schreibzeiger nach vier Schreiboperationen zur Position P1 zurückkehrt. Der kumulative Effekt des Nicht-Verschiebens schafft eine signifikante Reduktion der Takt-Belastung und des Stromverbrauchs.
  • Gemäß den 3 und 5 empfangen die Komparatoren 160, 162, 164 und 166 des CAM 128 jeweils sechs Quellenadressen auf sechs Gruppen von Leitern (d.h. den Leitern 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6) der Leiter 124. Vier Komparatoren im CAM 178 und vier Komparatoren im CAM 202 empfangen ebenfalls die gleichen sechs Quellenadressen auf den Leitern 124. Der Komparator kann statisch oder dynamisch sein. Es kann bis zu sechs unterschiedlichen Quellenadressen auf den Leitern 124 in einer beliebigen Kombination geben. Zwei oder mehr Gruppen von Leitern könnten die gleiche Quellenadresse leiten. Beispielsweise könnten die Leiter 124-1 und die Leiter 124-3 jeweils die Quellenadresse 011110 führen. In einem solchen Fall gibt es dann weniger als sechs unterschiedliche Quellenadressen auf den Leitern 124.
  • Die Komparatoren 160, 162, 164 und 166 empfangen außerdem die Zieladressen aus den Adreßregistern A1, A2, A3 bzw. A4. Wie es in 5 dargestellt ist, empfängt der Komparator 160 die sechs Quellenadressen auf den Leitungen 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6. Der Komparator 162 empfängt ebenfalls die gleichen sechs Quellenadressen auf den Leitern 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6. (Komparator 160 kann als sechs Komparatoren angesehen werden). Die Zieladressen werden den Komparatoren 160 und 162 aus den Registern A1 und A2 über die Leiter 168 bzw. 176 zur Verfügung gestellt. Wenn eine Quellenadresse auf einem der Leiter 124 mit der Zieladresse im Adreßregister A1 übereinstimmt, wird ein Signal (welches als ein Zeiger bezeichnet werden kann) an einem zugehörigen der Ausgänge 210-1, 210-2, 210-3, 210-4, 210-5 und 210-6, welche die Ausgänge 210 des Komparators 160 bilden, angelegt. Die Ausgänge 210-1, 210-2, 210-3, 210-4, 210-5 und 210-6 sind mit den Leitern 150-1, 150-2, 150-3, 150-4, 150-5 bzw. 150-6 verbunden, welche die Leiter 150 bilden. Wenn beispielsweise die Quellenadresse auf den Leitern 124-1 011110 ist, so stimmt sie mit dem Inhalt des Adreßregisters A1 (siehe 4) überein, und es wird ein Signal vom Ausgang 210-1 auf den Leitern 150-1 angelegt. In gleicher Weise wird dann, wenn die Quellenadresse auf den Leitern 124-3 011110 ist, diese also ebenfalls mit den Inhalten des Adreßregisters A1 übereinstimmt, ein Signal vom Ausgang 210-3 auf dem Leiter 150-3 angelegt. Die anderen Komparatoren sind von der gleichen Art wie der Komparator 160. Beispielsweise weist der Komparator 162 die Ausgänge 212 auf. Wenn die Leiter 124-5 die Quellenadresse 110000 aufweisen, dann wird ein Signal aus dem Ausgang 212-5 auf den Leitern 152-5 angelegt, weil das Adreßregister A2 110000 enthält. Signale auf den einzelnen der Leiter 154 und 156 werden angelegt, wenn es eine Übereinstimmung in den Komparatoren 164 bzw. 166 gibt.
  • Die umlaufenden Schreibzeiger 132, 182 und 206 erzeugen vollständig dekodierte Schreibadressen. Die Komparatoren in den CAMs 128, 178 und 202 erzeugen vollständig dekodierte Leseadressen.
  • 5 veranschaulicht Details der Cache-Abschnitte 172 und 174 des Umgehungscache 130 gemäß 3. Wie es in 5 veranschaulicht ist, enthält ein Cache-Abschnitt 172 Lese-Ports R1-1, R2-1, R3-1, R4-1, R5-1 und R6-1. Der Lese-Port R1-1 wird aktiviert (d.h. leitet Daten aus dem Datenregister D1 zu den Leitern 170-1 weiter), wenn ein Signal auf dem Leiter 150-1 angelegt wird. Der Lese-Port R2-1 wird aktiviert, wenn ein Signal auf dem Leiter 150-2 angelegt wird, usw. Ein Cache-Abschnitt 174 enthält die Lese-Ports R1-2, R2-2, R3-2, R4-2, R5-2 und R6-2. Der Lese-Port R1-2 wird aktiviert, wenn ein Signal auf dem Leiter 152-1 angelegt wird. Der Lese-Port R2-2 wird aktiviert, wenn ein Signal auf dem Leiter 152-2 angelegt wird, usw. Es gibt einen Satz von sechs Lese-Ports R1, R2, R3, R4, R5 und R6 für jedes der zwölf Datenregister D1-D12. Die Leseports R1-1 und R1-2 sind zwei Beispiele der zwölf Lese-Ports R1. Die Lese-Ports R2-1 und R2-2 sind zwei Beispiele der zwölf Lese-Ports R2. Es gibt folglich 72 Lese-Ports bei dem Beispiel gemäß den 2 bis 6.
  • Sofern er aktiviert ist, leitet ein Lese-Port Daten aus dem Datenregister zu einem Leiter der Gruppen von Leitern 170 weiter. Beispielsweise enthalten die Gruppen von Leitern 170 die Leiter 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 (die jeweils N Bits breit sind, wobei N gleich 38 sein kann). Wenn beispielsweise der Lese-Port R1-1 aktiviert wird, werden die Daten im Datenregister D1 zu den Leitern 170-1 weitergeleitet. Wenn der Lese-Port R3-1 aktiviert wird, werden die Daten in dem Register D1 auch zu den Leitern 170-3 weitergeleitet. Es gibt jeweils einen Lese-Port zwischen jedem Datenregister und jedem Quell-Port. Entsprechend gibt es sechs Lese-Ports (R1, R2, R3, R4, R5 und R6) zwischen jedem Datenregister (z.B. D1, D2, ... D12) und einem der Quellen-Ports 88, 90, 92, 94, 96 und 98.
  • Es gibt sechs Gruppen von zwölf Lese-Ports, die in einer verdrahteten ODER-Verknüpfung mit einer jeweiligen von sechs Gruppen von Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 verbunden sind. Einer der zwölf Lese-Ports von jeder der sechs Gruppen wird zwischen einem der zwölf Datenregister und einer der Gruppen von Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 eingekoppelt. Beispielsweise wird eine erste Gruppe von zwölf Lese-Ports R1 (einschließlich R1-1 und R1-2, die in 5 gezeigt sind) mit den Leitern 170-1 in einer verdrahteten ODER-Anordnung verbunden. Eine zweite Gruppe von zwölf Lese-Ports R2 (einschließlich R2-1, R2-2, die in 5 gezeigt sind) sind mit den Leitern 170-2 in einer verdrahteten ODER-Anordnung verbunden. In gleicher Weise sind eine dritte, vierte, fünfte und sechste Gruppe von zwölf Lese-Ports mit den Leitern 170-3, 170-4, 170-5 bzw. 170-6 in verdrahteten ODER-Anordnungen verbunden. Da jedem Datenelement eine einzigartige Zieladresse zugewiesen ist, gibt es jeweils nicht mehr als ein Adreßregister A1-A12 mit der gleichen Zieladresse. Entsprechend ist nicht mehr als einer der zwölf Lese-Ports in einer Gruppe zu einem Zeitpunkt aktiviert. Es gibt folglich keine Konflikte auf irgendwelchen der Leiter 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6. Daten aus einem beliebigen Datenregister D1-D12 können an einen beliebigen der sechs Quellen-Ports 8898 angelegt werden.
  • Gemäß den 2, 5 und 6 sind die MUXs 186, 188, 190, 192, 194 und 196 zwischen den Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 (welche die Leiter 170 bilden) und den Quellen-Ports 88, 90, 92, 94, 96 bzw. 98 angeordnet. Die Leiter 104 umfassen sechs Gruppen von Leitern, um sechs N Bit breite Datensignale zu führen. Die MUXs 186196 leiten entweder das Datensignal aus einer der Gruppen von Leitern 104 oder aus einer der Gruppen von Leitern 170 weiter. Wenn es eine Übereinstimmung zwischen der Quellenadresse einer speziellen Gruppe von Leitern 124 und einer in einem Adreßregister in einem CAM gespeicherten Zieladresse gibt, leitet der zugehörige MUX der MUXs 186-196 die Daten aus dem zugehörigen Datenregister über den zugehörigen Leiter 170 weiter. Anderenfalls leitet der MUX die Daten aus der zugehörigen Gruppe von Leitern der Leiter 104 aus dem Registersatz 84 weiter. Wenn beispielsweise die Quellenadresse auf den Leitern 124-2 nicht mit irgendeiner der Zieladressen in den Adreßregistern A1-A12 übereinstimmt, leitet MUX 188 die Daten aus den zugehörigen Leitern der Leiter 104 statt aus den Leitern 170-2 weiter.
  • Die folgende Übersicht faßt die Beziehungen zwischen den Leitern 170, den Quellen-Ports, MUXs und Ausführungseinheiten zusammen.
  • Figure 00140001
  • Im folgenden werden zusätzliche Informationen gegeben, die das oben genannte Ausführungsbeispiel gemäß den 26 sowie alternative Ausführungsbeispiele der Erfindung betreffen. In jedem Fall sind es die Ansprüche, die den Umfang der Erfindung bestimmen, und nicht die hier angegebenen speziellen Details.
  • Die Begrenzungen der Kästen in den Figuren dienen der Veranschaulichung. Ein Bauelement muß keine derartigen definierten Begrenzungen aufweisen. Die relative Größe der veranschaulichten Komponenten dient der Erleichterung der Veranschaulichung und suggeriert nicht tatsächliche Größenverhältnisse.
  • Es ist nicht erforderlich, daß jede Ausführungseinheit Daten der gleichen Bitbreite verarbeitet. Beispielsweise kann eine Ausführungseinheit an 32-Bit-Daten operieren, während eine andere Ausführungseinheit an 64-Bit-Daten oder 128-Bit-Daten arbeitet. Die Daten können von der Ausführungseinheit in Stufen addiert oder gespeichert und in der vollen Breite bearbeitet werden. Es braucht nicht die gleiche Anzahl von Lese-Ports für jedes Datenregister zu geben.
  • Die CAMs und Umgehungscaches können eine beliebige Tiefe (d.h. Anzahl der Adreßregister und Datenregister) aufweisen. Dementsprechend ist die Anzahl der Adreßregister und der Datenregister nicht auf vier beschränkt, wie es in dem Ausführungsbeispiel gemäß den 3 und 6 veranschaulicht ist. Die Anzahl der Adreßregister und Datenregister ist vorzugsweise wenigstens so groß wie die Latenz (die Anzahl der Stufen in der Schleife oder der Zyklen, die umgangen werden sollen). Auf diese Weise werden Daten nicht überschrieben, bevor sie benötigt werden. Die Adreß- und Datenregister sind vorzugsweise Zellen eines Speichers mit wahlfreiem Zugriff (RAM). Darüber hinaus kann es mehr oder weniger als drei Ausführungseinheiten geben.
  • In einem Mikroprozessor gibt es selbstverständlich zahlreiche Komponenten, die nicht in den Figuren veranschaulicht oder hier beschrieben worden sind. Die vorliegende Erfindung ist jedoch nicht auf die Verwendung in einem Mikroprozessor eingeschränkt, sondern sie kann auch in anderen Computern, wie beispielsweise einem Mikrocontroller oder einer speziellen Hardware, die keine Software oder Firmware verwendet, benutzt werden. Die Erfindung kann ggf. in Verbindung mit einer Außerder-Reihe-Ausführung und einer Registerumbenennung verwendet werden.
  • Die vorliegende Erfindung erfordert nicht die Verwendung eines rotierenden Schreibzeigers. Statt dessen kann eine andere Schreibzeigereinheit verwendet werden. Verschiedene Zuweisungsvorgehensweisen können verwendet werden. Beispielsweise kann eine Jüngst-benutzt-Vorgehensweise (LRU; least recently used) oder eine Pseudo-LRU-Vorgehensweise verwendet werden. Daten können auch für längere Zeit als die Latenzdauer gehalten werden.
  • 7 veranschaulicht ein Umgehungsnetzwerk 250, welches gegenüber dem Umgehungsnetzwerk 110 ein alternatives Ausführungsbeispiel eines Umgehungsnetzwerks darstellt. Gemäß 7 enthält das Umgehungsnetzwerk 250 einen CAM 254, der Adreßregister A1-A12 enthält, und einen Umgehungscache 256, der Datenregister D1-D12 enthält. Die Datenregister D1-D12 können Daten aus irgendeiner der Ausführungseinheiten ALU 0, ALU 1 und 86 über die Leiter 262, 264 und 266 empfangen. Daten werden darüber hinaus auf den Leitern 270 dem Registersatz 84 zur Verfügung gestellt. Zugehörige Zieladressen werden den Adreßregistern A1-A12 über die Leiter 126 zur Verfügung gestellt. Das spezielle Datenregister und das spezielle Adreßregister, in die ein bestimmtes Datenelement und eine zugehörige Zieladresse geschrieben werden, werden durch die Position eines Schreibzeigers in einer umlaufenden Schreibzeigereinheit 258 kontrolliert. Im Umgehungsnetzwerk 110 werden die Daten aus der Ausführungseinheit ALU 0 nur zu den Datenregistern D1-D4 geschrieben. In gleicher Weise werden die Daten aus der Ausführungseinheit ALU 1 nur zu den Datenregistern D5-D9 geschrieben, etc. Im Gegensatz dazu können im Umgehungsnetzwerk 250 die Daten von irgendeiner der Ausführungseinheiten ALU 0, ALU 1 und 86 zu irgendeinem der Datenregister D1-D12 geschrieben werden. Zugehörige Adressen werden zu irgendeinem der Adreßregister geschrieben. Aus den Datenregistern D1-D12 gelesene Daten werden über die Leiter 274 den Ausführungseinheiten ALU 0, ALU 1 und 86 zur Verfügung gestellt. Das Umgehungsnetzwerk 250 kann irgendeine von verschiedenen Zuweisungsvorgehensweisen (z.B. LRU oder Pseudo-LRU, um nur zwei zu benennen) verwenden.
  • Im Unterschied zu 6 und 7 könnte ein einzelner CAM und ein einzelner Umgehungscache in Verbindung mit einer einzigen Ausführungseinheit verwendet werden.
  • Vorzugsweise werden die Zieladressen synchron in ein Adreßregister in jeden der CAMs 128, 178 und 202, die Daten synchron in ein Datenregister in jeden der Umgehungscaches 130, 180 und 204 geschrieben und die Daten synchron aus den Datenregistern in jedem der Umgehungscaches 130, 180 und 204 gelesen. Beispielsweise kann der Zeitpunkt, zu welchem Daten in ein Datenregister des Umgehungscaches 230 geschrieben werden, synchron zu dem Zeitpunkt sein, zu welchem zu dem Umgehungscache 180 geschrieben wird. Alternativ kann das Schreiben und Lesen asynchron sein. Beispielsweise kann der Zeitpunkt, zu welchem Daten in ein Datenregister des Umgehungscache 130 geschrieben oder aus einem solchen Datenregister gelesen werden, unabhängig von dem Zeitpunkt sein, zu dem Daten in ein Datenregister des Umgehungscache 180 geschrieben oder aus ihm gelesen werden.
  • Obwohl es stark bevorzugt wird, daß ein Umgehungsnetzwerk in der Lage ist, innerhalb eines einzigen Taktzyklus ein Datenelement in ein Register zu schreiben und das Datenelement aus dem Register zu lesen, damit es für eine beliebige Ausführungseinheit verfügbar ist, ist dies nicht bei jedem Ausführungsbeispiel der Erfindung erforderlich.
  • Es kann eine Zwischenstruktur (wie beispielsweise einen Puffer) oder Signale geben, die sich zwischen zwei veranschaulichten Strukturen befinden. Außerdem können einige Leiter nicht durchgehend sein, wie dies veranschaulicht ist, sondern statt dessen durch Zwischenstrukturen unterbrochen sein.
  • Die Zieladresse kann dem Registersatz 84 direkt aus der Einplanereinheit 120 statt aus dem Umgehungsnetzwerk 110 oder 250 zur Verfügung gestellt werden. Die sechs Gruppen der N Bit breiten Daten können auf einen einzigen N Bit breiten Satz von Leitern gemultiplext werden, bevor sie das Umgehungsnetzwerk 110 verlassen. Obwohl eine parallele Leitung der Daten bevorzugt wird, könnte diese in einem speziellen Fall durch eine serielle Leitung ersetzt werden.
  • Rotierende Schreibzeiger 132, 182 und 206 sind nicht erforderlich, um vollständig dekodierte Schreibadressen zu erzeugen. Die Komparatoren in den CAMs 128, 178 und 202 sind nicht erforderlich, um vollständig dekodierte Leseadressen zu erzeugen. Die Umgehungscaches 130, 180 und 204 müssen nicht vollständig assoziativ sein.
  • Die Ausgänge der Komparatoren 160, 162 etc. können Signalempfangsleiter (wie in 5) oder Mehrfachleiter aufweisen. D.h., es könnte mehr als einen Leiter zwischen jedem Ausgang und jedem Lese-Port geben. Der Komparator 160 besteht vorzugsweise, aber nicht notwendigerweise, aus sechs Komparatoren (um sechs Quellen-Ports zu vergleichen).
  • Der Begriff "verbunden" und darauf bezogene Begriffe werden in einem funktionellen Sinn verwendet und sind nicht notwendigerweise auf eine direkte Verbindung eingeschränkt. Beispielsweise sind die Datenregister mit Quellen-Ports verbunden, obwohl sie dies indirekt über Leiter und MUXs sind.
  • Sofern in der Beschreibung ausgesagt wird, daß eine Komponente enthalten sein "kann", "könnte" oder "bevorzugt" wird, so bedeutet dies, daß die spezielle Komponente nicht zwangsläufig enthalten sein muß.

Claims (9)

  1. Prozessor (80) mit wenigstens einer Datenelemente verarbeitenden Ausführungseinheit (ALU0, ALU1, 86) mit die Datenelemente empfangenden Quellen-Ports (88, 90, 92, 94, 96, 98), und einem mit den Quellen-Ports gekoppelten Umgehungsnetzwerk (110; 250), wobei das Umgehungsnetzwerk (110; 250) aufweist: einen Multi-Port-Umgehungscache-Speicher (130, 180, 204) mit Datenregistern (D1, D2, D3, D4; ... D12) zum Speichern von aus der wenigstens einen Ausführungseinheit (ALU0, ALU1, 86) ausgegebenen Datenelementen und mit Lese-Ports (R1-1, ... R6-4), wobei jeder Lese-Port mit einem zugehörigen Datenregister gekoppelt ist, und dann, wenn er aktiviert wird, das Datenelement aus dem zugehörigen Datenregister auf eine mit einem zugehörigen Quellen-Port (88, 90, 92, 94, 96, 98) einer Ausführungseinheit gekoppelte Gruppe von Leitern (170; 170-1, ... 170-6) ausgibt, wobei jedes Datenelement in demselben Datenregister gespeichert bleibt, bis es aus dem Umgehungscache-Speicher entfernt wird; und ein inhaltsadressierbares Speicher-Array (128, 178, 202; 254), das Zieladressen von in zugeordneten Datenregistern des Umgehungscache-Speichers (130, 180, 204) gespeicherten Datenelementen speichert und Quellenadressen von an ausgewählte Quellen-Ports der Ausführungseinheiten zu liefernden, gewünschten Datenelementen empfängt und mit den Zieladressen vergleicht und bei Übereinstimmung einer Quellenadresse mit einer Zieladresse an den Umgehungscache-Speicher (130, 180, 204) ein Aktivierungssignal (auf 150, 152, 154, 156) an denjenigen Lese-Port (R1-1, ... R6-4) liefert, der einerseits mit dem der Zieladresse zugeordneten Datenregister (D1 ... D12) und andererseits mit der mit dem ausgewählten Quellen-Port gekoppelten Gruppe von Leitern (170-1 ... 170-6) gekoppelt ist.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß zwischen jeder Gruppe von Leitern (170-1, ... 170-6) und dem zugehörigen Quellen-Port einer Ausführungseinheit ein Multiplexer (186196) eingekoppelt ist, wobei ein Eingang des Multiplexers mit der Gruppe von Leitern (170) und ein anderer Eingang mit einem Registersatz (84) zum Speichern der Datenelemente gekoppelt ist.
  3. Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß das Umgehungsnetzwerk (110) mehrere Multi-Port-Umgehungscache-Speicher (130, 180, 204) aufweist, wobei jeweils ein Umgehungscache-Speicher die Datenelemente aus einer Ausführungseinheit speichert, aber die Datenelemente an jede der mehreren Ausführungseinheiten liefern kann.
  4. Prozessor nach einem der Ansprüche 1 bis 3, gekennzeichnet durch eine Schreibzeigereinheit, die einen Zeiger auf ein auszuwählendes Datenregister erzeugt, in welches ein von einer Ausführungseinheit ausgegebenes Datenelement eingeschrieben werden soll.
  5. Prozessor nach Anspruch 4, dadurch gekennzeichnet, daß die Schreibzeigereinheit einen umlaufenden Schreibzeiger derart erzeugt, daß nacheinander reihum auf sämtliche Datenregister verwiesen wird.
  6. Prozessor nach Anspruch 4 oder 5, dadurch gekennzeichnet, daß die Schreibzeigereinheit gleichzeitig einen Zeiger auf ein zugeordnetes Adreßregister des inhaltsadressierbaren Speicher-Arrays erzeugt, in das die dem einzuschreibenden Datenelement zugeordnete Zieladresse geschrieben wird.
  7. Prozessor nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß eine Einplanereinheit mit dem Umgehung netzwerk gekoppelt ist, die die Zieladressen und Quellenadressen an das inhaltsadressierbare Speicher-Array liefert.
  8. Prozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß das inhaltsadressierbare Speicher-Array Adreßregister (A1, ... A12) zum Speichern der Zieladressen und Komparatoren (160, 162) zum Vergleichen der Zieladressen mit den Quellenadressen aufweist, wobei die Ausgänge der Komparatoren mit den Lese-Ports (R1-1, ... R6-6) eines zugeordneten Datenregisters (D1, ... D12) gekoppelt sind.
  9. Prozessor nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß das Umgehungsnetzwerk so ausgebildet ist, daß in einem Taktzyklus Datenelemente in die Datenregister geschrieben und dieselben und/oder andere Datenelemente aus den Datenregister gelesen und den Quellen-Ports zur Verfügung gestellt werden können.
DE19882363T 1997-05-02 1998-04-30 Prozessor mit einem Umgehungsnetzwerk und mehreren Ports Expired - Fee Related DE19882363B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/850,686 US6000016A (en) 1997-05-02 1997-05-02 Multiported bypass cache in a bypass network
US08/850,686 1997-05-02
PCT/US1998/008892 WO1998050860A1 (en) 1997-05-02 1998-04-30 Multiported bypass cache

Publications (2)

Publication Number Publication Date
DE19882363T1 DE19882363T1 (de) 2000-04-13
DE19882363B4 true DE19882363B4 (de) 2007-02-01

Family

ID=25308845

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19882363T Expired - Fee Related DE19882363B4 (de) 1997-05-02 1998-04-30 Prozessor mit einem Umgehungsnetzwerk und mehreren Ports

Country Status (7)

Country Link
US (1) US6000016A (de)
KR (1) KR100338423B1 (de)
AU (1) AU7174498A (de)
DE (1) DE19882363B4 (de)
GB (1) GB2339314B (de)
HK (1) HK1025168A1 (de)
WO (1) WO1998050860A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382736B2 (en) 1999-01-12 2008-06-03 Mcdata Corporation Method for scoring queued frames for selective transmission through a switch
JP2001222463A (ja) * 2000-02-10 2001-08-17 Hitachi Ltd メモリ装置
US7543077B1 (en) * 2000-09-19 2009-06-02 Stragent, Llc Ternary content addressable memory embedded in a central processing unit
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7002980B1 (en) * 2000-12-19 2006-02-21 Chiaro Networks, Ltd. System and method for router queue and congestion management
KR100370140B1 (ko) * 2000-12-30 2003-01-30 주식회사 하이닉스반도체 메모리 소자에서의 x16의 동작을 x4 및 x8동작으로 전환하는 방법
US6438017B1 (en) * 2001-01-09 2002-08-20 Hewlett-Packard Company Read/write eight-slot CAM with interleaving
US6934816B2 (en) * 2001-08-07 2005-08-23 Integrated Device Technology, Inc. Integrated circuit memory devices having asynchronous flow-through capability
US7093083B1 (en) 2001-12-18 2006-08-15 Integrated Device Technology, Inc. Integrated circuit memory devices having asynchronous flow-through capability
US7649885B1 (en) 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20040059874A1 (en) * 2002-09-24 2004-03-25 Intel Corporation High throughput modular pipelined memory array
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7096345B1 (en) * 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
GB2426084A (en) * 2005-05-13 2006-11-15 Agilent Technologies Inc Updating data in a dual port memory
US7681017B2 (en) * 2005-11-01 2010-03-16 Lsi Corporation Pseudo pipeline and pseudo pipelined SDRAM controller
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US7774583B1 (en) * 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US8155011B2 (en) 2007-01-11 2012-04-10 Foundry Networks, Llc Techniques for using dual memory structures for processing failure detection protocol packets
GB0702573D0 (en) * 2007-02-09 2007-03-21 Texas Instruments Ltd Data transfer circuit
GB0702571D0 (en) * 2007-02-09 2007-03-21 Texas Instruments Ltd Data transfer circuit
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8271859B2 (en) * 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
US20090249035A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Multi-cycle register file bypass
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US9170638B2 (en) * 2010-12-16 2015-10-27 Advanced Micro Devices, Inc. Method and apparatus for providing early bypass detection to reduce power consumption while reading register files of a processor
US9223965B2 (en) 2013-12-10 2015-12-29 International Business Machines Corporation Secure generation and management of a virtual card on a mobile device
US9235692B2 (en) 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US9251330B2 (en) 2014-04-09 2016-02-02 International Business Machines Corporation Secure management of a smart card
US10475026B2 (en) 2014-05-16 2019-11-12 International Business Machines Corporation Secure management of transactions using a smart/virtual card
CN108009976A (zh) * 2016-10-27 2018-05-08 超威半导体公司 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0543415A2 (de) * 1991-11-20 1993-05-26 Fujitsu Limited Verfahren zum Registerlesekontrolle in Datenverarbeitungsvorrichtung

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
JP3018038B2 (ja) * 1990-01-18 2000-03-13 三菱電機株式会社 キャッシュを有するデータ処理装置
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
JPH04275628A (ja) * 1991-03-01 1992-10-01 Mitsubishi Electric Corp 演算処理装置
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
US5454094A (en) * 1993-06-24 1995-09-26 Hal Computer Systems, Inc. Method and apparatus for detecting multiple matches in a content addressable memory
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
JPH0756815A (ja) * 1993-07-28 1995-03-03 Internatl Business Mach Corp <Ibm> キャッシュ動作方法及びキャッシュ
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0543415A2 (de) * 1991-11-20 1993-05-26 Fujitsu Limited Verfahren zum Registerlesekontrolle in Datenverarbeitungsvorrichtung

Also Published As

Publication number Publication date
GB9925870D0 (en) 1999-12-29
KR100338423B1 (ko) 2002-05-27
KR20010012167A (ko) 2001-02-15
WO1998050860A1 (en) 1998-11-12
DE19882363T1 (de) 2000-04-13
US6000016A (en) 1999-12-07
AU7174498A (en) 1998-11-27
HK1025168A1 (en) 2000-11-03
GB2339314A (en) 2000-01-19
GB2339314B (en) 2001-11-14

Similar Documents

Publication Publication Date Title
DE19882363B4 (de) Prozessor mit einem Umgehungsnetzwerk und mehreren Ports
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69834739T2 (de) Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren
DE3424962C2 (de)
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE69229763T2 (de) Speicherzugriffsvorrichtung
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE2755273C2 (de)
DE4010119C2 (de) Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor
DE3338345C2 (de)
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE69333319T2 (de) Datenverarbeitungssystem mit synchronem, dynamischem Speicher in integrierter Schaltkreistechnik
DE2117936A1 (de) Mikroprogrammgesteuerte Zentraleinheit eines elektronischen Datenverarbeitungssystems
EP0010186B1 (de) Vorrichtung zum Bearbeiten bezeichneter Hinweise
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE3587176T2 (de) Verfahren und einrichtung zum mischen/sortieren von daten.
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE3786633T2 (de) Zweiunddreissig-Bit-Bitscheibe.
DE3501903A1 (de) Im pipelinebetrieb arbeitende datenverarbeitungseinrichtung
DE68903280T2 (de) Vektorschlange in computern mit vektorregister.
DE19628039B4 (de) Speicheradressen-Steuerschaltung
DE69132584T2 (de) Speicherzugriffsystem und Verfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8607 Notification of search results after publication
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee