JP5372929B2 - Multi-core processor with hierarchical microcode store - Google Patents
Multi-core processor with hierarchical microcode store Download PDFInfo
- Publication number
- JP5372929B2 JP5372929B2 JP2010517025A JP2010517025A JP5372929B2 JP 5372929 B2 JP5372929 B2 JP 5372929B2 JP 2010517025 A JP2010517025 A JP 2010517025A JP 2010517025 A JP2010517025 A JP 2010517025A JP 5372929 B2 JP5372929 B2 JP 5372929B2
- Authority
- JP
- Japan
- Prior art keywords
- microcode
- entry
- given
- unit
- processor
- 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.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 16
- 230000015654 memory Effects 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 14
- 230000035945 sensitivity Effects 0.000 claims description 11
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 47
- 230000006870 function Effects 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 13
- 239000000872 buffer Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 101100498823 Caenorhabditis elegans ddr-2 gene Proteins 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000002269 spontaneous effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
本発明は、プロセッサに関し、より詳細には、マルチプロセッサコアを含むプロセッサ内でのマイクロコード実装に関する。 The present invention relates to processors, and more particularly to microcode implementation within a processor that includes a multiprocessor core.
プロセッサの実装の進歩に伴い、プロセッサ内の個々のプロセッサコアを複製することにより、プロセッサの性能を高める試みがますます広まってきている。このようなコアは、粗粒度並列処理を増大しながら独立した命令実行が可能であってもよく、この粗粒度並列処理は、細粒度並列処理または実行の頻度を上げるなど、性能を上げるための別の方法によって要求されることもあるものよりも抵抗コストおよび低デザイン複雑性で、アプリケーションの実行に利用可能である。 As processor implementation progresses, attempts to increase processor performance by duplicating individual processor cores within the processor are becoming increasingly popular. Such a core may be capable of independent instruction execution while increasing coarse-grained parallelism, and this coarse-grained parallelism is intended to improve performance, such as increasing the frequency of fine-grained parallelism or execution. It can be used to run applications with lower cost of resistance and lower design complexity than might otherwise be required.
しかしながら、マルチコアプロセッサの実装には、実装自体に設計上の問題がいくつかある。マイクロコードルーチンのストレージリソースのようなある特定のプロセッサコアリソースが、クリティカルタイミングパスに含まれてもよいため、所与のコアへリソースが近接すると、所与のコアの動作周波数に直接影響を及ぼすことがある。このため、このようなストレージリソースの単一インスタンスを複数のコア間で共有すると、共有インスタンスへの待ち時間が長くなり、コアの性能低下を招いてしまいかねない。しかしながら、各コアがリソースの独自のインスタンスを含むようなストレージリソースを複製すると、設計エリア、電力、および/または他の設計性能指数の面でコストがかかることにもなる。 However, the implementation of a multi-core processor has some design issues in the implementation itself. Certain processor core resources, such as microcode routine storage resources, may be included in the critical timing path, so the proximity of a resource to a given core directly affects the operating frequency of a given core Sometimes. For this reason, if a single instance of such a storage resource is shared among a plurality of cores, the waiting time for the shared instance becomes long, which may lead to a decrease in core performance. However, duplicating storage resources such that each core contains its own instance of the resource can also be costly in terms of design area, power, and / or other design figure of merit.
階層マイクロコードストアを有するマルチコアプロセッサのさまざまな実施形態が開示される。1つの実施形態によれば、プロセッサは、プログラマビジブル命令セットアーキテクチャ(ISA:instruction set architecture)に従って規定された命令を独立して実行するように構成された複数のプロセッサコアを含んでもよい。プロセッサコアの各々は、マイクロコードエントリを格納するように構成されたローカルマイクロコードユニットをそれぞれ含んでもよい。また、プロセッサは、プロセッサコアの各々によってアクセス可能であり、マイクロコードエントリを格納するように構成されたリモートマイクロコードストアを含むリモートマイクロコードユニットを含んでもよい。プロセッサコアの任意のコアが、所与のプロセッサコアによって実行される1つ以上の演算を含む特定のマイクロコードエントリに対応する所与のマイクロコードエントリポイントを発生し、所与のプロセッサコアのそれぞれのローカルマイクロコードユニット内に特定のマイクロコードエントリが格納されているかを決定するように構成されてもよい。特定のマイクロコードエントリが、それぞれのローカルマイクロコードユニット内に格納されていないということの決定に応答して、所のコアは、リモートマイクロコードユニットに特定のマイクロコードエントリの要求を伝えてもよい。 Various embodiments of a multi-core processor having a hierarchical microcode store are disclosed. According to one embodiment, the processor may include a plurality of processor cores that are configured to independently execute instructions defined in accordance with a programmable instruction set architecture (ISA). Each of the processor cores may each include a local microcode unit configured to store a microcode entry. The processor may also include a remote microcode unit including a remote microcode store that is accessible by each of the processor cores and configured to store microcode entries. Any core of the processor core generates a given microcode entry point corresponding to a particular microcode entry that includes one or more operations performed by the given processor core, and each of the given processor core May be configured to determine whether a particular microcode entry is stored in the local microcode unit. In response to determining that a particular microcode entry is not stored in each local microcode unit, the given core may communicate a request for the particular microcode entry to the remote microcode unit. .
本発明はさまざまな修正例および別の形態が可能なものであるが、その具体的な実施形態は、例示的に図面に示され、本明細書に詳細に記載される。しかしながら、図面および詳細な記載は、本発明を開示された特定の形態に限定することを意図したものではなく、むしろ本発明は、添付の特許請求の範囲によって規定されているような本発明の趣旨および範囲内にあるすべての変更、等価物、および代替物を包含するということを理解されたい。 While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and are herein described in detail. However, the drawings and detailed description are not intended to limit the invention to the particular form disclosed, but rather, the invention is intended to be as defined by the appended claims. It should be understood that all modifications, equivalents, and alternatives within the spirit and scope are encompassed.
プロセッサコアの概要
図1に、プロセッサコア100の1つの実施形態が示されている。一般的にいえば、コア100は、コア100に直接的または間接的に連結されたシステムメモリに格納されてもよい。命令を実行するように構成されてもよい。このような命令は、特定の命令セットアーキテクチャ(ISA)に従って規定されるものであってもよい。例えば、コア100は、x86 ISA系を実装するように構成されてもよいが、他の実施形態において、コア100は、異なるISAまたはISAの組み合わせを実装してもよい。
Overview of Processor Core FIG. 1 illustrates one embodiment of a
例示した実施形態において、コア100は、命令フェッチユニット(IFU:instruction fetch unit)120に連結された命令キャッシュ(IC:instruction cache)110を含んでもよい。IFU120は、分岐予測ユニット(BPU:branch prediction unit)130および命令デコードユニット140に連結されてもよい。デコードユニット140は、複数の整数演算実行クラスタ150a〜bおよび浮動小数点ユニット(FPU: floating point unit)160に演算を与えるように連結されてもよい。クラスタ150a〜bの各々は、複数の整数演算実行ユニット154a〜bのそれぞれに連結されたクラスタスケジューラ152a〜bをそれぞれ含んでもよい。さまざまな実施形態において、コア100は、クラスタ150a〜b内のいずれか、または共有してデータキャッシュ(図示せず)を含んでもよい。例示した実施形態において、FPU160は、FPスケジューラ162から演算を受けるように連結されてもよい。クラスタ150a〜b、FPU160、および命令キャッシュ110は、コアインタフェースユニット170にさらに連結されてもよく、さらに、コアインタフェースユニット170は、L2キャッシュ180およびコア100の外部にあるシステムインタフェースユニット(SIU:system interface unit)(図2に示し、以下に記載)に連結されてもよい。図1は、さまざまなユニット間でのある特定の命令およびデータフローパスを反映させたものであるが、図1に詳細には示されていないデータまたは命令フローのさらなるパスまたは方向が与えられてもよいことに留意されたい。また、例えば、クラスタ150、FPU160、およびL2キャッシュ180のインスタンスの数の変更、およびこのようなユニット間での相互の関わりの変更を採用したコア100のさらなる構成も可能である。
In the illustrated embodiment, the
以下にさらに詳細に記載するように、コア100は、ココの実行スレッドからの命令を同時に実行しうるマルチスレッド実行用に構成されてもよい。さまざまな実施形態において、同時実行を行うためにさまざまな数のスレッドがサポートされてもよく、異なる数のクラスタ150およびFPU160が設けられてもよいことを考慮されたい。さらに、特殊メディアプロセッサまたは他のタイプのアクセラレータを含む他の共有ユニットまたはマルチスレッドユニットが追加されてもよい。
As described in further detail below, the
命令キャッシュ110は、命令がフェッチされ、デコードされ、および実行するために発行される前に命令を格納するように構成されてもよい。さまざまな実施形態において、命令キャッシュ110は、任意の適切なサイズおよび/または連想度のダイレクトマップ方式、セットアソシアティブ方式、またはフルアソシアティブ方式のキャッシュとして構成されてもよい。命令キャッシュ110は、物理アドレッシング、仮想アドレッシング、またはそれら2つの組み合わせが行われたものであってもよい。いくつかの実施形態において、命令キャッシュ110はまた、命令フェッチアドレスの仮想/物理変換をキャッシュするように構成されたトランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)ロジックを含んでもよいが、TLBおよびトランスレーションロジックが、コア100内の他の場所にも含まれてもよい。
The
命令キャッシュ110への命令フェッチアクセスは、IFU120によって調整されてもよい。例えば、IFU120は、さまざまな実行スレッドの現在のプログラムカウンタ状態をトラッキングし、さらなる実行命令を取り出すために命令キャッシュ110へのフェッチを発行してもよい。命令キャッシュミスの場合、命令キャッシュ110またはIFU120のいずれかが、L2キャッシュ180から命令データの取り出しを調整してもよい。いくつかの実施形態において、IFU120はまた、メモリレイテンシの効果を軽減するために、予測された使用の前に他のレベルのメモリ階層からの命令のプリフェッチを調整してもよい。例えば、命令プリフェッチがうまくいくと、必要なときに命令キャッシュ110に存在する命令の可能性を高めることがあるため、メモリ階層の可能性のある複数のレベルでキャッシュミスのレイテンシ効果が回避される。
Instruction fetch access to the
さまざまなタイプの分岐(例えば、条件または無条件ジャンプ、コール/リターン命令など)が、特定のスレッドの実行フローを変更することもある。分岐予測ユニット130は、一般に、IFU120によって使用するための将来的なフェッチアドレスを予測するように構成されてもよい。いくつかの実施形態において、BPU130は、分岐命令に関する情報を格納するように構成された任意の適切な構造を含んでもよい。例えば、いくつかの実施形態において、BPU130は、条件分岐の結果を予測するように構成された1つ以上の異なるタイプの予測変数(例えば、ローカル、グローバル、またはハイブリッド予測変数)を含んでもよい。
Various types of branches (eg, conditional or unconditional jumps, call / return instructions, etc.) may change the execution flow of a particular thread.
フェッチングの結果、IFU120は、フェッチパケットと呼ばれることもある命令バイトシーケンスを生成するように構成されてもよい。フェッチパケットの長さは、任意の適切なバイト数であってもよい。いくつかの実施形態において、特に、可変長命令を実装するISAの場合、所与のフェッチパケット内に整列された可変数の有効命令が存在し、いくつかのインスタンスにおいて、命令が異なるフェッチパケットに及ぶこともある。一般的に言えば、デコードユニット140は、クラスタ150またはFPU160による実行に適した演算に命令をデコードまたは変換し、このような実行演算を送るために、フェッチパケット内に命令の境界を特定するように構成されてもよい。
As a result of fetching, the IFU 120 may be configured to generate an instruction byte sequence, sometimes referred to as a fetch packet. The length of the fetch packet may be any suitable number of bytes. In some embodiments, particularly for ISAs that implement variable length instructions, there are a variable number of valid instructions aligned within a given fetch packet, and in some instances, instructions in different fetch packets Sometimes. Generally speaking, decode
1つの実施形態において、DEC140は、最初に、1つ以上のフェッチパケットから抽出したバイトの所与のウィンドウ内に可能な命令の長さを決定するように構成されてもよい。例えば、x86互換ISAの場合、DEC140は、所与のフェッチパケット内の各バイト位置で始まる有効なプリフィックス、オペコード、「mod/rm」および「SIB]バイトの有効シーケンスを識別するように構成されてもよい。さらに、DEC140内のピックロジックが、1つの実施形態において、ウィンドウ内の複数の有効な命令の境界を特定するように構成されてもよい。1つの実施形態において、複数のフェッチパケットおよび命令境界を特定する複数の命令ポインタ群が、DEC140内のキューに入れられてもよい。
In one embodiment,
次に、フェットパケットストレージからDEC140内のいくつかの命令デコーダの1つに命令が向けられてもよい。1つの実施形態において、DEC140は、実行サイクルごとにディスパッチされる命令と同程度に多くの独立した命令デコーダを設けるように構成されてもよいが、他の構成も可能であり考慮される。コア100がマイクロコード化命令をサポートする実施形態において、各命令デコーダは、所与の命令がマイクロコード化されているか否かを決定するように構成されてもよく、マイクロコード化されていれば、命令を演算シーケンスに変換するためのマイクロコードエンジンの演算を呼び出してもよい。あるいは、命令デコーダは、クラスタ150またはFPU160による実行に適した1つの演算(または、いくつかの実施形態において、場合によっては、複数の演算)に命令を変換してもよい。結果的に得られる演算は、マイクロオペレーション、マイクロOP、またはμOPと呼ばれることもあり、実行のディスパッチを待機するために1つ以上のキュー内に格納されてもよい。いくつかの実施形態において、マイクロコード演算および非マイクロコード(または「ファーストパス」)演算が、別々のキューに格納されてもよい。コア100内でのマイクロコード実装の実施形態に関するさらなる詳細は、以下にさらに詳細に記載される。
Next, an instruction may be directed from the Fett packet storage to one of several instruction decoders in the
DEC140内のディスパッチロジックが、ディスパッチパーセルのアセンブルを試みるために、実行リソースおよびディスパッチルールの状態と組み合わせて、ディスパッチ待機中のキューに入れられた演算の状態を調べるように構成されてもよい。例えば、DEC140は、ディスパッチキューに入っている演算の利用可能性、クラスタ150および/またはFPU160内でキューに入れられ実行待機中の演算数、およびディスパッチされる演算に適用してもよい任意のリソース制約を考慮に入れてもよい。1つの実施形態において、DEC140は、所与の実行サイクル中、クラスタ150またはFPU160の一方に演算のパーセルをディスパッチするように構成されてもよい。
The dispatch logic in
1つの実施形態において、DEC140は、所与の実行サイクル中、1つのみのスレッドに対して演算をデコードおよびディスパッチするように構成されてもよい。しかしながら、IFU120およびDEC140は、同じスレッドで同時に動作する必要ないことに留意されたい。命令のフェッチおよびデコード中に使用するためのさまざまなタイプのスレッドスイッチングの方法が考えられる。例えば、IFU120およびDEC140は、ラウンドロビン式にNサイクルごとに処理するための異なるスレッドを選択するように構成されてもよい(ここで、Nはわずか1であってもよい)。他の形態では、演算中に起こるダイナミック条件によってスレッドスイッチングが影響されることもある。
In one embodiment, the
一般的に言えば、クラスタ150は、整数演算および論理演算を実装し、ロード/ストア演算を実行するように構成されてもよい。1つの実施形態において、クラスタ150a〜bの各々が、それぞれのスレッドに対する演算の実行のためのものであってもよい。各クラスタ150は、それ自体のスケジューラ152を含んでもよく、このスケジューラ152は、クラスタにすでにディスパッチされた演算を実行するための発行を管理するように構成されてもよい。各クラスタ150は、整数物理レジスタファイルのコピーおよび完了ロジック(例えば、演算の完了および退去を管理するためのリオーダバッファまたは他の構造)をさらに含んでもよい。 Generally speaking, cluster 150 may be configured to implement integer and logical operations and perform load / store operations. In one embodiment, each of the clusters 150a-b may be for performing operations on a respective thread. Each cluster 150 may include its own scheduler 152, which may be configured to manage issues for performing operations already dispatched to the cluster. Each cluster 150 may further include a copy of the integer physical register file and completion logic (eg, a reorder buffer or other structure for managing the completion and exit of operations).
各クラスタ150内において、実行ユニット154が、さまざまな異なるタイプの演算の同時実行をサポートしてもよい。例えば、1つの実施形態において、実行ユニット154は、同時ロード/ストアアドレス発生(AGU:address generation)演算および演算/論理(ALU:arithmetic/logic)をサポートしてもよい。実行ユニット154は、整数乗算および除算などの追加の演算をサポートしてもよいが、さまざまな実施形態において、クラスタ150は、このような追加の演算とともに他のALU/AGU演算のスループットおよび同時並行性にスケジューリング制約を実装してもよい。さまざまな実施形態において、クラスタ150は、命令キャッシュ110とは異なるように体系化されてもよいデータキャッシュを含み、または共有してもよい。
Within each cluster 150, an execution unit 154 may support simultaneous execution of a variety of different types of operations. For example, in one embodiment, execution unit 154 may support simultaneous load / store address generation (AGU) operations and arithmetic / logic (ALU). Execution unit 154 may support additional operations such as integer multiplication and division, but in various embodiments, cluster 150, along with such additional operations, throughput and concurrent of other ALU / AGU operations. Scheduling constraints may be implemented. In various embodiments, the cluster 150 may include or share a data cache that may be organized differently than the
FPU160は、クラスタスケジューラ152のように、FP実行ユニット164内で実行の演算を受信し、キューに入れ、発行するように構成されてもよいFPスケジューラ162を含んでもよい。FPU160はまた、浮動小数点オペランドを管理するように構成された浮動小数点物理レジスタファイルを含んでもよい。FP実行ユニット164は、ISAによって規定されてもよいようなさまざまなタイプの浮動小数点演算を実装するように構成されてもよい。さまざまな実施形態において、FPU160は、ある異なるタイプの浮動小数点演算の同時実行をサポートしてもよく、異なる精度(例えば、64ビットオペランド、128ビットオペランドなど)をサポートしてもよい。さまざまな実施形態において、FPU160は、データキャッシュを含んでもよく、または他のユニットに位置するデータキャッシュにアクセスするように構成されてもよい。
The FPU 160 may include an
命令キャッシュ110およびデータキャッシュ156は、コアインタフェースユニット170を介してL2キャッシュ180にアクセスするように構成されてもよい。1つの実施形態において、CIU170は、システム内のコア100と他のコア100との間、外部システムメモリ、周辺機器などへ汎用インタフェースを与えてもよい。典型的に、L2キャッシュ180の容量は、第1レベル命令およびデータキャッシュより実質的に大きい。
The
いくつかの実施形態において、コア100は、インオーダー演算をサポートしてもよい。他の実施形態において、コア100は、ロードおよびストア演算を含む演算のアウトオブオーダー実行をサポートしてもよい。すなわち、クラスタ150およびFPU160内の演算の実行順序は、演算が対応する命令の最初のプログラム順序とは異なるものであってもよい。このような緩和演算の順序付けにより、実行リソースのより効率的なスケジューリングが行われてもよく、これにより、全体的な実行性能を高められうる。
In some embodiments, the
さらに、コア100は、種々の制御およびデータ投機技術を実装してもよい。上述したように、コア100は、スレッドの実行制御フローが進む方向の予測を試みるために、さまざまな分岐予測および投機プリフェッチ技術を実装してもよい。このような制御投機技術は、一般に、命令が使用可能であるか、または(例えば、分岐誤り予測により)誤り投機が起こったかが確実にわかる前に、一貫した命令フローを与えるように試みてもよい。制御誤り投機が生じれば、コア100は、誤り投機パスに沿って演算およびデータを廃棄し、実行制御を正確なパスに再方向付けするように構成されてもよい。例えば、1つの実施形態において、クラスタ150は、条件分岐命令を実行し、分岐結果が予測結果と一致するかを決定するように構成されてもよい。一致しなければ、クラスタ150は、正確なパスに沿ったフェッチを始めるように、IFU120に再方向付けられるように構成されてもよい。
Furthermore, the
別に、コア100は、データ値が正確であるかが分かる前に、さらなる実行において使用するためのデータ値を提供するように試みるさまざまなデータ投機技術を実装してもよい。このようなデータを投機的に使用することによって、データ使用前にデータの有効性に関するあらゆる条件を評価するのに必要なタイミング制約が緩和されて、コア演算の高速化が可能となる。
Alternatively,
さまざまな実施形態において、プロセッサの実装は、他の構造とともに単一のモノリシック集積回路チップの一部として作製されたコア100の多重インスタンスを含んでもよい。図2に、プロセッサの1つのこのような実施形態を示す。図示するように、プロセッサ200は、4つのコアインスタンス100a〜dを含み、これらのインスタンスの各々は、上述したように構成されてもよい。例示した実施形態において、コア100の各々は、システムインタフェースユニット(SIU)210を介して、L3キャッシュ220およびメモリコントローラ/周辺インタフェースユニット(MCU:memory controller/peripheral interface unit)230へ連結されてもよい。1つの実施形態において、L3キャッシュ220は、コア100のL2キャッシュ180と比較的遅いシステムメモリ240との間の中間キャッシュとして動作する任意の適切な体系を用いて実装された統一キャッシュとして構成されてもよい。
In various embodiments, a processor implementation may include multiple instances of the
MCU230は、プロセッサ200をシステムメモリ240と直接連係するように構成されてもよい。例えば、MCU230は、デュアルデータレート同期型ダイナミックRAM(DDR SDRAM:Dual Data Rate Synchronous Dynamic RAM)、DDR−2 SDRAM、完全バッファ型デュアルインラインメモリモジュール(FB−DIMM:Fully Buffered Dual Inline Memory Module)、またはシステムメモリ240を実装するのに使用されてもよい別の適切なタイプのメモリなど、1つ以上の異なるタイプのランダムアクセスメモリ(RAM)をサポートするのに必要な信号を発生させるように構成されてもよい。システムメモリ240は、プロセッサ200のさまざまなコア100によって演算されてもよい命令およびデータを格納するように構成されてもよい、システムメモリ240のコンテンツは、上述したキャッシュのさまざまなものによってキャッシュされてもよい。
さらに、MCU230は、プロセッサ200への他のタイプのインタフェースをサポートしてもよい。例えば、MCU230は、別のグラフィックスプロセッサ、グラフィックスメモリ、および/または他のコンポーネントを含んでもよいプロセッサ200をグラフィックス処理サブシステムと連係するように使用されてもよいアクセラレーテッド/アドバンストグラフィックスポート(AGP: Accelerated/ Advanced Graphics Port)インタフェースのバージョンなど、専用のグラフィックスプロセッサを実装してもよい。MCU230はまた、1つ以上のタイプの周辺インタフェース、例えば、PCI−Expressバス標準のバージョンを実装するように構成されてもよく、これを介して、プロセッサ200は、ストレージデバイス、グラフィックスデバイス、ネットワーキングデバイスなどの周辺機器と連係をとってもよい。いくつかの実施形態において、プロセッサ200の外部の二次バスブリッジ(例えば、「サウスブリッジ」)が、他のタイプのバスまたは相互接続を介してプロセッサ200を他の周辺デバイスへ連結するように使用されてもよい。メモリコントローラおよび周辺インタフェース機能は、MCU230を介してプロセッサ200内で一体化されて示されているが、他の実施形態において、これらの機能は、従来の「ノースブリッジ」配置を介してプロセッサ200の外部へ実装されてもよいことに留意されたい。例えば、MCU230のさまざまな機能は、プロセッサ200内に集積化されてもよいものとは別のチップセットを介して実装されてもよい。
Further, the
ローカルおよびリモートマイクロユニット
上述したように、いくつかの実施形態において、コア100は、マイクロコード化演算をサポートしてもよい。一般的に言えば、マイクロコードは、所与のコア100によって実行される個々の演算が、例えば、IFU120によって与えられてもよいような命令フローの一般的なプログラマブルビジブルパスから分離された制御およびデータストアからのものであり、プロセッサ実装技術を包含してもよい。一例として、x86 ISAなどの所与のISAが、複雑性が著しい命令および他の所定のプロセッサ挙動(例えば、リセット機能、割り込み/トラップ/例外機能など)を含んでもよい。レジスタオペランドを伴う単純なシフトまたはローテート命令が、実行ユニット154によって直接実行可能な単一の演算として実装するのに非常に単純でありうる。例えば、キャリーフラッグを通してオペランドを回転させるローテート命令が、実行ユニット154内で実行可能な異なる演算の組み合わせとしてより容易に実装されてもよい。ある種の複雑な制御転送命令、制御レジスタなどのシステムレジスタを修正する命令、仮想メモリを伴う命令、優先または保護モデルのコンテンツ内で実行する命令などのさらにより複雑な命令が、命令実行が調整されるプロセッサ状態(例えば、優先状態)のテストなど、追加の演算を伴うものであってもよい。
Local and Remote Microunits As described above, in some embodiments,
ISA内のいくつかの命令は、個々の対応する演算に直接マッピングしてもよい。いくつかの実施形態において、ISAのこれらの複雑な命令が、実行ユニット154内で実行可能な単一の演算に直接マッピングしない場合、所与の複雑な命令を、実行するためにディスパッチされてもよいより単純な演算シーケンスに変換するために、マイクロコードが使用されてもよい。マイクロコードに利用可能な演算セットは、一般に、直接実行可能なISA命令に対応する演算を含んでもよい。しかしながら、いくつかの実施形態において、マイクロコード演算は、プログラマビジブルでない実行ユニット154によって実行可能な演算を含んでもよい。さらに、実装ISA内の特定の命令に対応しないアーキテクチャが規定されたプロセッサイベントに応答して、実行可能な演算シーケンスを発生するために、マイクロコードが使用されてもよい。例えば、リセットマイクロコードルーチンは、ソフトウェアまたはハードウェアリセットイベントの後に、一貫した演算状態にコア100を配置するように構成された演算シーケンスを含んでもよい(例えば、キャッシュの初期化、特定のアーキテクチャおよび非アーキテクチャレジスタへの特定の値の格納、所定のアドレスから始めさせる命令フェッチなど)。いくつかの実施形態において、マイクロコードはまた、コア100の非アーキテクチャ機能を実行するルーチンを発生するために使用されてもよい(すなわち、一般に、機能は、またはセル100の通常演算中にプログラマによってビジブルでも、アクセス可能でもない)。例えば、製品の製造、フィールド分析、パワーオンセルフテスティング、または他の適切なアプリケーションのために、命令マイクロコード使用するためのハードウェアテストまたはデバッグルーチングを実装するように、マイクロコードが使用されてもよい。
Some instructions in the ISA may map directly to individual corresponding operations. In some embodiments, if these complex instructions of the ISA do not map directly to a single operation that can be executed within the execution unit 154, a given complex instruction may be dispatched for execution. Microcode may be used to convert to a better and simpler sequence of operations. The set of operations available for microcode may generally include operations corresponding to directly executable ISA instructions. However, in some embodiments, microcode operations may include operations that can be performed by an execution unit 154 that is not programmer-visible. Further, microcode may be used to generate an executable sequence of operations in response to a processor event that defines an architecture that does not correspond to a particular instruction in the implementation ISA. For example, the reset microcode routine may include an operation sequence configured to place the
マイクロコードルーチンは、典型的に、読み出し専用メモリ(ROM)、または以下にさらに詳細に記載するような、ランダムアクセスメモリ(RAM)のような書き込み可能なメモリなどの任意の適切なタイプの制御ストア内に格納されてもよい。図3に、マイクロコード制御ストアの1つの例示的な体系が示されている。例示した実施形態において、マイクロコード制御ストア300は、複数のエントリ310を含み、エントリの各々は、多数の演算フィールド320およびシーケンス制御フィールド330を含む。1つの実施形態において、エントリ310の各々は、マイクロコードアドレス空間内のそれぞれのエントリポイントに対応してもよい。例えば、12ビットマイクロコードアドレス空間は、4,096(4K)もの別個のエントリポイント値を許容してもよい。いくつかの実施形態において、マイクロコードアドレス空間が、例えば、密度の低いエントリポイントアドレッシングが採用される場合など、実際のエントリ310より可能なエントリポイント値が多く存在するように構成されてもよいことに留意されたい。
The microcode routine is typically any suitable type of control store such as read only memory (ROM) or writable memory such as random access memory (RAM), as described in more detail below. May be stored within. In FIG. 3, one exemplary scheme of a microcode control store is shown. In the illustrated embodiment, the
1つの実施形態において、エントリ310の各演算フィールド320は、実行ユニット154の1つによって実行可能な単一の演算を符号化する情報を格納するように構成されてもよい。例えば、演算フィールド320は、実行される演算のタイプを識別するように構成されたオプコードビットと、レジスタまたは既値データなどの演算によって使用されるオペランドソースを識別するように構成されたオペランドビットを含んでもよい。いくつかの実施形態において、演算フィールド320内のオペランド符号化は、マイクロコードエントリ310が実行されることに応答して、マイクロ命令(例えば、IFU120によってフェッチされるプログラマビジブルISA命令)からオペランドから取られるべきであることを規定してもよい。いくつかの実施形態において、演算フィールド320の異なるフィールドが、クラスタ150内の実行ユニット154のそれぞれに対応してもよい。このようにして、例えば、実行ユニット154が、2つのALUおよび2つのAGUを含めば、演算フィールド320の2つは、ALUに対応してもよく、2つは、AGUに対応してもよい。すなわち、所与のエントリ310の各演算フィールド320は、クラスタのそれぞれの発行スロットに対応してもよく、したがって、所与のエントリ310全体が、ユニットとしてクラスタ150にディスパッチされてもよい。所与のエントリ310内の1つの演算が、同じエントリ内の別の演算に依存性を有してもよい場合もあるのに対して、エントリ310内の各演算が、他のものから独立したものであってもよい場合もある。他の実施形態において、マイクロコードエントリ310内の演算フィールド320に対して発行スロット制限がない場合もあることに留意されたい。例えば、1つのこのような実施形態において、任意のフィールド320から任意の実行ユニットへ演算が発行されてもよい。
In one embodiment, each
シーケンス制御フィールド330が、マイクロコードルーチンのシーケンシング挙動を統制するように構成されてもよい。例えば、シーケンス制御フィールド330が、ルーチンの出口点(すなわち、特定のルーチンが終了するエントリ310)を示すように構成されてもよく、または異なるエントリポイントへの条件または無条件分岐またはジャンプなどのマイクロコードフロー制御の非連続な変化を示してもよい。いくつかの実施形態において、マイクロコードシーケンス制御は、所与のエントリ310に関係するシーケンス制御フィールド330が、異なる連続した先行エントリ310に実際に関連付けられるようにパイプラインで送られてもよい。例えば、マイクロコードエントリ310のフェッチと、エントリ310に関連付けられたシーケンス制御フィールド330の実行との間に1または2サイクル遅延またはバブルを有する実施形態において、エントリポイントNでエントリ310の挙動に影響するシーケンス制御フィールド330が、エントリポイントN−1またはN−2のそれぞれでエントリ310に関連して格納されてもよい。
The sequence control field 330 may be configured to govern the sequencing behavior of the microcode routine. For example, the sequence control field 330 may be configured to indicate the exit point of the routine (ie, the
いくつかの実施形態において、命令デコードユニット140は、マイクロコードエントリ310のアクセシングおよびシーケンシングに関連する機能を含んでもよい。例えば、DEC140は、マイクロコード実行が必要とされる命令および他のプロセッサイベントを検出し、マイクロコードストアからエントリ310をそれに応じて要求するように構成されてもよい。いくつかの実施形態において、DEC140は、例えば、命令オプコードをマイクロコードアドレスの空間内のエントリポイント値へマッピングすることによって、マイクロコードが必要である命令または他のイベントに依存したエントリポイントを計算するように構成されてもよい。次に、DEC140は、DEC140内に含まれ、またはコア100内の別個の機能ユニットとして与えられてもよいマイクロコードユニットに計算されたエントリポイントをサブミットしてもよく、その結果として、実行用の1つ以上のマイクロコードエントリ310に示す演算を取り出しディスパッチしてもよい。マイクロコードエントリポイントはまた、命令デコード以外のイベントに応答して発生してもよい。例えば、エントリポイントは、例外または割り込みの検出に応答して、実行クラスタまたは他のユニットによって発生してもよい。
In some embodiments,
複数のコア100を含むプロセッサ200の実施形態において、特に考慮すべであろう点はマイクロコード実装である。典型的に、各コア100は、同一のマイクロコードコンテンツを参照することになる(例えば、エントリ310内に反映されている場合のような。すなわち、いくつかの実施形態において、各コア100は、同じISAを実装してもよく、実行するコア100に関係なく、コードは、一般に、同じ機能挙動と実行するように予測されてもよい。それに応じて、コア100は、プロセッサ200の実施形態に対して規定されたマイクロコードエントリ310のすべてを含むマイクロコードストアの単一の共通インスタンスを共有するように構成されてもよい。しかしながら、すべてのコア100によって共有される単一のROM構造など、単一の制御ストアインスタンスを実装することで、制御ストアからデータを要求したコア100へ進むようにマイクロコードデータが要求される距離が長くなることで、マイクロコードを伴う演算を実行するのに要求される全体的な待ち時間が長くなりうる。これは、つまり、コア100の実行性能の低下を招きうる。
In embodiments of the processor 200 that include
さらに、複数のコア100の間で単一の制御ストアを供給することで、複数のコア100が共有制御ストアに同時アクセスすることを試みれば、リソースの競合問題が生じうる。制御ストアによってサポートされる同時アクセス数が増えると(例えば、リードバスの数、エントリポイントデコードロジックの量などを上げることで)、制御ストアの複雑性およびコストが上がるとともに、タイミング性能が低下することもある一方で、同時アクセス要求をシリアル化することで、各コアがサービスの順番を待機するさい、コア100が受けるマイクロコードアクセスの待ち時間が長くなりうる。
Furthermore, if a plurality of
対照的に、マイクロコード制御ストアのインスタンスは、各コア100がマイクロコードの完全なコピーを含むように複製されてもよい。このような複製により、単一の制御ストアインスタンスを共有するコア100の場合に関して、上述したルーティング、待ち時間、リソース競合の問題が改善されうる。例えば、各複製インスタンスは、それぞれのコア100に比較的近接して配置されることで、全体的なルーティング距離が短縮される。しかしながら、このようにして制御ストアを全体的に複製すると、コア100の各々の設計エリアおよび複雑性が増し、設計および製造コスト、さらには、プロセッサ200の電力消費が上がりかねない。
In contrast, an instance of a microcode control store may be replicated so that each core 100 contains a complete copy of the microcode. Such duplication may improve the routing, latency, and resource contention problems described above for the
いくつかの実施形態において、プロセッサ200は、複製と共有の両方の態様を含む階層マイクロコード制御ストアのアプローチを採用するように構成されてもよい。図4に示すように、1つの実施形態において、プロセッサ200の複数のコア100a〜dの各々は、ローカルマイクロコードユニット400a〜d(または簡潔に、ローカルユニット400a〜d)のそれぞれのインスタンスを含み、システムインタフェースユニット210を介して、共有リモートマイクロコードユニット410(または簡潔に、リモートユニット410)にアクセスするように構成されてもよい。明確にするために省いているが、図2に示すプロセッサ200の他の要素は、図4の実施形態に含まれてもよいことに留意されたい。さらに、さまざまな実施形態において、コア100の数およびコアに含まれるそれぞれのローカルマイクロコードユニット400は変動してもよい。いくつかの実施形態において、ローカルユニット400は、それぞれのコア100の他のユニット内に含まれてもよい。例えば、ローカルユニット400は、DEC140内に実装されてもよい。例示した実施形態において、コア100の1つずつにそれぞれ、ローカルマイクロコードユニット440が含まれているが、いくつかの実施形態では、コア100のうちの複数のコアにしか、ローカルマイクロコードユニット400がそれぞれ含まれていないものも考えられる。すなわち、すべてのコア100が、ローカルユニット400に対して同一に構成されることが要求されるわけではないが、いくつかの実施形態において、同一の構成が要求される場合もある。
In some embodiments, the processor 200 may be configured to employ a hierarchical microcode control store approach that includes both replication and sharing aspects. As shown in FIG. 4, in one embodiment, each of the plurality of
一般的にいえば、ローカルマイクロコードユニット400の各インスタンスは、コア100の演算がより高い性能感度になるように決定されたマイクロコードルーチンを格納するように構成されてもよく、一方で、マイクロコードユニット410は、性能感度が低くなるように決定されたマイクロコードルーチンを格納するように構成されてもよい。例えば、所与のマイクロコードルーチンは、性能感度のしきい値要求を満たせば、ローカルユニット400内のストレージ用に選択されてもよく、満たさなければ、リモートユニット410内のストレージ用に割り当てられてもよい。
Generally speaking, each instance of the local microcode unit 400 may be configured to store a microcode routine that is determined so that the operation of the
さまざまな実施形態において、所与のマイクロコードルーチンの性能感度は、異なる基準を用いて決定されてもよい。例えば、マイクロコードルーチンの長さは、性能感度の基準として使用されてもよいことにより、しきい値長さ以下の所与の長さのルーチン(例えば、単一のエントリ310からなるルーチン)は、ローカルユニット400内に含まれるが、しきい値長さより長いルーチンは、リモートユニット410内に含まれる。場合によっては、ルーチンの実行待ち行列が、長さの代用として使用されてもよい。他の形態において、ルーチン実行の頻度が選択基準として使用されてもよいため、少なくともしきい値頻度または確率で実行されるルーチン(例えば、予測されたプログラミング仕事量のシミュレーションにより予測可能なものなど)が、ローカルユニット400内に含まれ、実行の頻度または確率がより低いルーチンが、リモートユニット410内に含まれる。他の実施形態において、所与のルーチンの格納場所を決定するさいに、場合によっては、他の基準とともに、実行頻度/確率とルーチンの長さの両方が考慮されてもよい。例えば、リセットマイクロコードルーチンが非常に長く、頻繁に実行されないこともあるため、リモートマイクロコードユニット410内に含まれる可能性のある候補である。別の場合では、仮想メモリページミスを取り扱うマイクロコードルーチンは、リセットルーチンより実行頻度が高いこともある。しかしながら、ページミスルーチンは、ページミスにより、待ち時間の長い多数のメモリアクセスを行う可能性が高いこともある。このように、ページミスルーチンにアクセスする待ち時間は、ルーチンを実行する待ち時間により劣ることもあるため、リモートマイクロコードユニット410内に含まれる候補になりうる。一般的にいえば、しきい値要求に対して、所与のマイクロコードルーチンの性能感度は、上記要因(例えば、実行の長さ、待ち時間、頻度)または他の関連する要因の1つ以上の任意の適切な関数であってもよい。
In various embodiments, the performance sensitivity of a given microcode routine may be determined using different criteria. For example, the length of a microcode routine may be used as a measure of performance sensitivity so that a routine of a given length that is less than or equal to the threshold length (eg, a routine consisting of a single entry 310) Routines included in the local unit 400 but longer than the threshold length are included in the
図5に、ローカルマイクロコードユニット400のインスタンスの1つの実施形態を示す。例示した実施形態において、ローカルユニット400は、制御ストア500と、シーケンサ510とを含む。一般的に言えば、制御ストア500は、ローカルユニット400内に含まれるように選択されたマイクロコードルーチンに対応する複数のマイクロコードエントリ310を格納するように構成されたマイクロコード制御ストア300のインスタンスの一例であってもよい。1つの実施形態において、制御ストア500は、任意の適切な体系により構成されたROMを含んでもよい。例えば、制御ストア500は、単一の大きなROMバンクとして、エントリ310のフィールドに従って分離された複数のバンクとして、または別の適切な方法で体系化されてもよい。一般的に言えば、ROMは、入力としてインデックス値(例えば、エントリポイント)を受け取り、それに反応して、供給された入力値に対応する出力値(例えば、エントリ310)を出力するように構成された任意のタイプのアドレス指定可能なデータ構造を参照してもよい。このようなデータ構造は、メモリアレイおよびゲートアレイ、または他の適切なロジックデバイスの配置を含んでもよい。いくつかの実施形態において、制御ストア500は、ROMに追加して、またはROMの代わりに、RAMまたは不揮発性メモリなど書き込み可能なメモリ要素を含んでもよい。
FIG. 5 illustrates one embodiment of an instance of the local microcode unit 400. In the illustrated embodiment, the local unit 400 includes a
シーケンサ510は、1つの実施形態において、DEC140から受け取ったマイクロコード要求およびエントリ310に含まれるシーケンス制御情報に従って、制御ストア500にアクセスするように構成されてもよい。DEC140からの特定のマイクロコードエントリポイントを受け取ると、それに応答して、シーケンサ510は、特定のエントリポイントに対応するエントリ310を取り出すために制御ストア500にアクセスするように構成されてもよい。次に、取り出したエントリ310内に指定された演算が、ディスパッチおよび実行のためにDECI140に戻されてもよい。さらに、シーケンサ510は、先行して取り出したエントリ310に連続して続く別のエントリ310を取り出すかどうかを決定するために、不連続のエントリポイント(例えば、シーケンス制御フィールド330において指定されたエントリポイント)に位置する別のエントリ310を取り出すために、マイクロコードエントリ310の取り出しを終了させるために、または何らかの他の所定のアクションをとるために、取り出したエントリ310のシーケンス制御フィールド330を評価するように構成されてもよい。いくつかの実施形態において、マイクロコードエントリ310は、実行ユニット154内、あるいは、コア100内の他の場所で予測および/または実行されてもよい分岐演算を含んでもよい。いくつかのこのような実施形態において、シーケンサ510は、予測または実行された分岐演算から生じるマイクロコードシーケンス制御の変化に応答するように構成されてもよい。例えば、このような分岐演算は、現在のエントリポイントから分岐演算によって指定されたエントリポイントへマイクロコードの取り出しをシーケンサ510に再度方向付けるようにさせてもよい。
The
いくつかの実施形態において、ローカルマイクロコードユニット400の各々は、マイクロコードエントリポイントの同じセットをそれぞれの制御ストア500にマッピングするように構成されることで、コア100の各々が、ローカルエントリポイントと同じエントリポイントにアクセスするようにしてもよい。いくつかの実施形態において、制御ストア500の各インスタンスは、プロセッサ200のさまざまなコア100内の互いのインスタンスと同じコンテンツを有してもよいが、他の実施形態において、各制御ストア500のコンテンツは他のものとまったく同一のものである必要はないことが考えられる。例えば、製造欠陥により、パッチ技術によって、または所与の制御ストア500以外の場所に格納されたエントリ310を参照することによって修正可能であってもよい制御ストア500のインスタンス間で機能差が生じることもある。
In some embodiments, each of the local microcode units 400 is configured to map the same set of microcode entry points to a
図6は、リモートマイクロコードユニット410の1つの実施形態を示す。例示した実施形態において、リモートユニット410は、SIU210を介してまたは任意の他の適切なタイプのインタフェースを介してコア100と通信するように構成されてもよいリモートマイクロコードユニットインタフェース610を含む。インタフェース610は、要求キュー620および送信キュー630に連結されてもよい。要求キュー620は、制御ストア内に格納されたマイクロコードエントリに対する要求をリモート制御ストア640に搬送するように構成されてもよい。例示した実施形態において、リモート制御ストア640は、任意の数のマイクロコードROMバンク650a〜nを含んでもよく、任意に、マイクロコードパッチRAM660を含んでもよい。いくつかの実施形態において、要求キュー620はまた、任意のダイナミックマイクロコードRAMアレイ670にマイクロコード要求を伝えるように搬送するように構成されてもよい。送信キュー630は、リモート制御ストア640から、およびいくつかの実施形態において、これらの要求コア100へ送信するためのダイナミックマイクロコードRAMアレイ670から取り出されたエントリをキューに入れるように構成されてもよい。
FIG. 6 shows one embodiment of the
図4に関して上述したように、リモートユニット410は、コア100の代わりにさまざまなマイクロコードルーチンを格納するように構成されてもよい。このようなルーチンは、例えば、長く、実行頻度が低く、またはローカルユニット400内に含まれるために選択されたルーチンよりもプロセッサ性能へ影響する可能性が低いと考えられるルーチンを含んでもよい。一般的に言えば、リモートユニット410は、コア100の異なるコアからさまざまなマイクロコードエントリポイントの要求を受け取るように構成されてもよく、1つ以上の対応するエントリとともに各要求に応答してもよい。リモートマイクロコードユニットインタフェース610の構成およびコア100とリモートユニット410との間に採用されたインタフェースプロトコルに応じて、複数のコア100からのマイクロコード要求は、同時並列または直列に受け取られてもよい。
As described above with respect to FIG. 4, the
リモート制御ストア640は、リモートユニット410内に含まれるように選択されたマイクロコードルーチンに対応する多数のマイクロコードエントリ310を格納するように構成されたマイクロコード制御ストア300の例示的なインスタンスであってもよい。いくつかの実施形態において、リモート制御ストア640内に格納されたエントリ310のフォーマットは、ローカルユニット400の制御ストア500内に格納されたエントリ310のものに類似したものであってもよい。例示した実施形態において、任意の適切な分割または体系化に応じて、多数のマイクロコードROMバンク650にわたってエントリ310が分配されてもよい。他の実施形態において、ブランク650の数は変動してもよいことに留意されたい。また、制御ストア500と同様に、いくつかの実施形態において、リモート制御ストア640は、メモリアレイ以外に書き込み可能メモリおよび/またはデータストレージ要素を含んでもよいことが考えられる。
Remote control store 640 is an exemplary instance of
一般に、リモートマイクロコードユニットインタフェース610、要求キュー620、および送信キュー630が、コア100から取り出したマイクロコード要求の処理を管理するように一括して構成されてもよい。要求キュー620は、入力マイクロコード要求を格納するように構成されてもよく、これらの要求は、1つの実施形態において、リモート制御ストア640内で処理可能になるまで、エントリポイントおよび要求コア100の表示を最小限含んでもよい。同様に、送信キュー630は、エントリ410がそれらの要求コア100に送信可能になるまで、リモート制御ストア640から、またはいくつかの実施形態において、ダイナミックマイクロコードRAMアレイ670から取り出されたエントリ310を格納するように構成されてもよい。1つの実施形態において、リモートマイクロコードユニットインタフェース610は、要求キュー620および送信キュー630の管理を含み、コア100からの要求の受信およびコア100への結果的に得られるエントリの送信を制御するように構成されてもよい。インタフェース610はまた、例えば、シーケンス制御または調停スキームに応じて処理するための特定の要求を選択し、要求処理中に取り出されたエントリの送信キュー630内のストレージを調整するために、要求キュー620に格納された個々の要求の処理を調整するように構成されたロジックを含んでもよい。他の実施形態において、要求キュー620からの処理するための要求の選択および送信キュー630内の結果の格納は、インタフェース610の外部のロジックによって実行されてもよい。
In general, the remote
リモートユニット410の多数の異なる要求管理構成が可能であり考慮される。1つの実施形態において、リモートユニット410は、シーケンス機能を省略してもよい。このような実施形態において、リモートマイクロコードユニットインタフェース610は、所与のコア100が受け取りを望む各特定のエントリポイントに対応する所与のコア100から要求を受け取るように構成されてもよい。このように、例えば、所与のローカルユニット400のシーケンサ510が、リモートユニット410内に格納された所与のルーチンに対して、どのエントリポイントを取り出す必要があるかを決定し、制御ストア500にアクセスするために使用されたものと同様の方法でそれらのエントリポイントに向けられた要求を発生するように構成されてもよい。
Many different requirement management configurations of the
リモートユニット410からシーケンス機能を省略すると、デザインが単純化されうるが、コア100とリモートユニット410との間の要求トラフィックおよび処理の待ち時間が長くなる可能性もある。他の実施形態において、リモートユニット410は、さまざまな程度の自発シーケンスをサポートするものであってもよい。例えば、1つの実施形態において、受け取ったマイクロコード要求は、開始エントリポイントおよび終了エントリポイントまたは取り出されるエントリ数を指定してもよい。このような実施形態において、リモートユニット410は、開始エンドポイントから始まり、引き続き連続して、終了エントリポイントまたは取り出されるエントリ数に達するまで、受け取った要求に対応する複数のエントリ310を取り出すように構成されてもよい。このようにして取り出された複数のエントリ310は、取り出された順序で要求コア100に戻されてもよい。
Omitting the sequencing function from the
別の実施形態において、リモートユニット410は、より高度なシーケンス機能をサポートしてもよい。例えば、リモートユニット410は、シーケンサ510に機能面で類似したシーケンサを含むように構成されてもよい。このようなシーケンサは、シーケンサ510によってサポートされたシーケンス制御フィールド330の一部またはすべての値をサポートするように構成されてもよい。あるいは、1つの実施形態において、リモートユニット410内に格納されたエントリ310が、シーケンス制御フィールド330とは別個の追加のシーケンス制御フィールドを含むように構成されることで、リモートユニット410内のシーケンス機能によって追加のシーケンス制御フィールドが処理されてもよく、一方で、シーケンス制御フィールド330は、特定のローカルユニット400内のシーケンサ510によって処理されてもよい。このような実施形態において、複数のエントリルーチンを順序付けるタスクは、リモートユニット410およびローカルユニット400の間で適切に分割されてもよい。
In another embodiment, the
リモートユニット410が、多数の異なるコア100によって共有されてもよいため、リモートユニット410は、どのマイクロコード要求が供されるかを選択するとき、さまざまな異なるタイプの調停またはスケジューリング方式を採用するように構成されてもよい。例えば、リモートユニット410は、ラウンドロビン式に、最も古い要求を最初に選択することによって、または任意の他の適切な選択方式を使用することによって、処理するための要求キュー620から要求を選択するように構成されてもよい。リモートユニット410が要求の順序をサポートするいくつかの実施形態において、他のコア100からの要求を除外して、特定のコア100からの単一の要求により多数のエントリ310を取り出すことも可能である。それに応じて、いくつかの実施形態において、このような要求は、ある特定の数のエントリ310が、異なる要求を供することができるように取り出された後に中断されてもよい。他の形態において、次に供する要求を選択するためのフェアネスアルゴリズムが、コア100の代わりに供された最新の要求だけではなく、これらの要求の持続時間も考慮してもよい。いくつかの実施形態において、2つい上のマイクロコード要求が同時に取り出されてもよいように、リモート制御ストア640がマルチポート式に構成されてもよいことに留意されたい。例えば、リモート制御ストア640は、マルチポート式のメモリセルを使用して実装されてもよい。他の形態において、異なるバンク650をターゲットにする複数の要求が同時に取り出されてもよいように、より小さなシングルポート式のメモリセルがバンク式に採用されてもよい。いくつかのバンク型の実施形態において、同一のバンク650をターゲットにする複数の要求がシリアル化されてもよい。
Because the
マイクロコード実装を複数のローカルマイクロコードユニット400および共有リモートマイクロコードユニット410に階層的に分割すると、プロセッサ200のタイミングおよび電力消費が改善されうる。例えば、ローカルマイクロコードユニット400は、典型的に、リモートマイクロコードユニット410より面積が小さい場合があるため、ローカルマイクロコードユニット400は、各ローカルマイクロコードユニット400がリモートマイクロコードユニット410と同程度に大きい場合より高い頻度で演算できる。同様に、マイクロコードユニットが小さいと、典型的に、大きなものより電力消費量が少ない。いくつかの実施形態において、ローカルマイクロコードユニット400とは別にリモートマイクロコードユニット410を実装すると、リモートマイクロコードユニット410は、コア100によってアクセスされないときに電力を落とすことができる(例えば、ゲーティングクロックによって、またはリモートユニット410への電力グリッドの無効化によって)。これにより、プロセッサ200の全電力消費量を下げうる。
Dividing the microcode implementation hierarchically into multiple local microcode units 400 and shared
図7に、個々のコア100および共有リモートマイクロコードユニット410内にローカルマイクロコードユニット400を含むプロセッサの実施形態において、マイクロコードエントリ310を取り出す方法の1つの実施形態を示す。例示した実施形態において、演算は、マイクロコードエントリポイントが所与のコア100内で発生するブロック700から始まる。1つの実施形態において、DEC140は、例えば、命令のさまざまな部分をデコードし、命令がマイクロコードに対応していることを決定し、デコードされた命令から対応するエントリポイントを発生させることによって、IFU120から受け取った命令に対応するマイクロコードエントリポイントを発生するように構成されてもよい。上述したように、いくつかの実施形態において、リセットイベント、割り込み、トラップ、例外、フォールト、非階層マイクロコードルーチン(例えば、テストやデバッグルーチン)を呼び出すために要求、またはマイクロコードの実行を伴う他のタイプのイベントなど、命令の実行以外のプロセッサのイベントに対して、DEC140またはコア100内の別のユニットによって、エントリポイントが発生されてもよい。
FIG. 7 illustrates one embodiment of a method for retrieving a
次に、発生したエントリポイントが、所与のコア100内のローカルマイクロコードユニット400に位置するか、またはリモートマイクロコードユニット410内に位置するエントリ310に対応するかが判定される(ブロック702)。1つの実施形態において、エントリ310を包含するマイクロコードアドレス空間は、1つ以上のアドレス空間部分が、ローカルマイクロコードユニット400内のエントリ310に対応するが、1つ以上の他の別個のアドレス空間部分が、リモートマイクロコードユニット410内のエントリ310に対応するように分割されてもよい。例えば、1つの実施形態が、4,096個のエントリ310を包含する12ビットマイクロコードアドレス空間をサポートしてもよく、そのうちの1,024個は、ローカルマイクロコードユニット400内に位置し、残りはリモート格納されてもよい。この例において、16進歩のエントリポイント値0x000から0x3FFが、ローカルユニット400内のエントリ310に対応してもよく、エントリポイント値0x400から0xFFFが、リモートユニット410内のエントリに対応してもよい。マイクロコードアドレス空間の不連続部分がさまざまなユニットに割り当てられたマッピングなど、他のマッピングも可能である。また、いくつかの実施形態において、エントリポイントがローカルであるかリモートであるかの決定は、エントリポイントが特定のアドレス範囲にあるかどうか以外の表示に依存してもよい。例えば、ローカル/リモート表示が、その命令に対するエントリポイントとは別のDEC140によって命令からデコードされてもよい。さまざまな実施形態において、エントリポイントがローカルであるか、またはリモートであるかの判定は、DEC140などのコア100内のデコードロジックによって、シーケンサ510などのローカルマイクロコードユニット400によって、またはコア100内の他のロジックによって実行されてもよい。
Next, it is determined whether the generated entry point is located in the local microcode unit 400 in a given
発生したエントリポイントが、ローカルユニット400内に位置するエントリ310に対応すれば、エントリは、ローカルユニットから取り出される(ブロック704)。例えば、マイクロコード要求の表示とともにエントリポイントを取り出すと、ローカルユニット400内のシーケンサ510は、対応するエントリ310を取り出すために制御ストア500にアクセスするように構成されてもよい。
If the entry point that occurred corresponds to an
発生したエントリポイントが、リモートユニット410内に位置するエントリ310に対応すれば、リモートユニットに要求が搬送されてもよい(ブロック706)。例えば、DEC140またはローカルユニット400のいずれかは、宛先としてリモートユニット410を指定するシステムインタフェースユニット210を介して要求を搬送することによって、リモートユニット410に要求を開始してもよい。次に、リモートユニット410は、指定のエントリ310を受け取り(ブロック708)、所与のコア100にエントリを戻してもよい(ブロック710)。例えば、リモートマイクロコードユニットインタフェース610は、SIU210から要求を受け取り、それを要求キュー620に入れてもよい。選択されると、要求は、指定のエントリ310をリモート制御ストア640から取り出すように処理されてもよく、その結果は、送信キュー630内に配置されてもよい。引き続き、インタフェース610は、送信キュー630からエントリ310を選択し、そのエントリをSIU210を介して所与のコア100に搬送してもよい。
If the entry point that occurred corresponds to an
エントリ310がローカルユニット400またはリモートユニット410のいずれかから取り出されると、その演算が実行するためにディスパッチされてもよい(ブロック712)。例えば、DEC140は、実行ユニット154によって引き続き実行するためのクラスタ150の1つ内のスケジューラ152に、エントリ310内で指定されたような演算をディスパッチしてもよい。いくつかの実施形態において、エントリ310内に指定された演算のさらなるデコードは、例えば、DEC140によってディスパッチされる前に実行されてもよい。
Once the
いくつかの実施形態において、取り出されたマイクロコードエントリ310によって指定された演算は、実行するためにディスパッチされている前に格納され、またはキューに入れられてもよい。例えば、DEC140は、デコーダまたはマイクロコード取り出しプロセスから演算のディスパッチを切り離すことができるキューを実装してもよく、これにより、DEC140またはその上流で生じることがあるストールの性能影響が低減されうる。いくつかの実施形態において、リモートマイクロコードユニット410から取り出されたマイクロコードエントリ310に指定された演算は、コア100が受け取ると、このような演算キューまたはストレージ内に直接挿入されてもよく、取り出されたエントリ310は、コア100内に格納され、または保持されなくてもよい。しかしながら、他の実施形態において、取り出されたリモート格納エントリ310は、ある一定の時間、コア100内に保持されてもよく、これは、リモートユニット410から再度取り出されるのを待機することなく再利用することができる。例えば、ローカルマイクロコードユニット400は、リモートユニット410から取り出されたエントリ310が、受け取られると書き込まれてもよい書き込み可能なストレージを含んでもよい。1つの実施形態において、このようなストレージは、1つまたは鵜複数のバッファまたはレジスタを含んでもよく、エントリ310は、後続して取り出されたエントリ310によって追いやられるまで格納されてもよい。
In some embodiments, the operation specified by the retrieved
別の実施形態において、ローカルユニット400は、例えば、制御ストア500の一環として実装されたマイクロコードキャッシュを含んでもよい。このようなキャッシュは、複数の取り出されたエントリ310を格納するように構成されてもよく、ダクレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式などの任意の適切な構成を用いて体系化されてもよい。使用頻度が最も低い方針か、または長時間未使用の方針などの任意の適切な置き換え方針に従って、キャッシュの立ち退きが実行されてもよい。このような実施形態の1つの変形例において、取り出されたエントリ310は、専用マイクロコードキャッシュ内ではなく命令キャッシュ110内に格納されてもよい。リモート格納された取り出されたエントリ310が、コア100内にキャッシュされるか、または格納されてもよい実施形態において、キャッシュまたは他のローカルストレージは、所与のエントリ310に対する要求の発生より前か、または発生と同時のいずれかで、所与のリモート格納されたエントリ310の存在をチェックしてもよい。所望のエントリ310が、ローカルキャッシュまたは他のローカルストレージ内ですでに利用可能であれば、リモートユニット410への要求は発生されなくてもよく、またはすでに顕著であれば、キャンセルされてもよい。マイクロコードキャッシュは、コア100のローカルであり、所与のコア100を実行する特定の命令ストリームに基づいて割り当てられたダイナミックマイクロコードストアを与えるように構成されてもよい。リモートマイクロコードユニット410の待ち時間は、典型的に、所与のローカルマイクロコードユニット400より長いことがあるため、マイクロコードキャッシュは、シーケンスが生じたときに、リモートマイクロコードユニット410への高頻度アクセスを要求することもありうる低頻度命令シーケンスに関する性能問題を軽減しうる。
In another embodiment, the local unit 400 may include a microcode cache implemented as part of the
図4のような実施形態において、単一のリモートマイクロコードユニット410が、多数のコア100によって共有されてもよいが、他の実施形態において、リモートマイクロコードユニット410が複製されてもよいことに留意されたい。例えば、リモートマイクロコードユニット410のいくつかのインスタンスが、全コア100より少ない数のコアで共有されてもよい。他の形態では、リモートマイクロコードユニット410の完全複製が、各コア100内に含まれてもよい。このような実施形態において、リモートマイクロコードユニット410の複製によって要求される増大した面積は、ルーティングおよび/またはタイミングの複雑性が低減されることにより相殺されてもよい。例えば、リモートマイクロコードユニット410の複製は、コア100からリモートマイクロコードまでの平均距離を短くし、それに応じて、リモートマイクロコードアクセスの待ち時間を短縮してもよい。
In an embodiment such as FIG. 4, a single
多数のプロセッサ実装において、マイクロコードは、プロセッサ実装中に静的であることが多く、例えば、制御ストアによって要求される面積を最小限に抑えるために、読み出し専用制御ストア内に実装されてもよい。しかしながら、いくつかの実施形態において、例えば、欠陥を修正したり、機能を追加したりするために、マイクロコードが修正されてもよい技術を提供することが有用な場合もある。図6に示すように、いくつかの実施形態において、リモートマイクロコードユニット410は、書き込み可能な制御ストアを提供するように構成された追加の特徴を含んでもよい。
In many processor implementations, microcode is often static during the processor implementation and may be implemented, for example, in a read-only control store to minimize the area required by the control store. . However, in some embodiments, it may be useful to provide a technique in which the microcode may be modified, for example, to correct a defect or add functionality. As shown in FIG. 6, in some embodiments, the
任意のマイクロコードパッチRAM660は、特定のエントリポイントが、マイクロコードROMバンク650から、パッチRAM660内の対応する書き込み可能なエントリ310へマッピングされてもよい機能を与えるように構成されてもよい。1つの実施形態において、パッチRAM660は、多数のエントリ310を実装するように構成された書き込み可能なストレージリソースを含んでもよい。いくつかの実施形態において、パッチRAM660は、ROMバンク650の1つと同じ数のエントリ310を含んでもよいが、他の実施形態において、エントリ数は増減してもよい。パッチRAM660はまた、各エントリ310が割り当て可能なエントリポイントに対応するようにリソースを与えてもよい。リモート制御ストア640が、各々がパッチRAM660と同じ数のエントリを有する多数のROMバンク650を含む実施形態において、パッチRAM660の所与のエントリ310が、ROMバンク650の任意の1つにある対応するエントリ310にマッピングしてもよい。パッチRAM660内の追加のビットセットが、任意の所与の時間で所与のパッチRAMエントリがどのバンクに対応するかを指定してもよい。例えば、ある実施形態は、4つのROMバンク650および1つのパッチRAMバンク660を含んでもよく、各々が1000個のエントリを有する。パッチRAM660内の追加のビットが、各所与のエントリ310に対して、所与のエントリが任意の4つのROMバンクのいずれにマッピングされるかを指定してもよい。他の実施形態において、パッチRAM660の各エントリは、プログラム可能な対応するエントリポイントを有してもよい。
The optional
バンク650の1つのバンク内に所与のエントリ310を発送するために、1つの実施形態において、どのバンク650が発送されるか、またはパッチRAMエントリに関連付けられた特定のエントリポイント値を示すいずれかの情報とともに、パッチRAM660の対応するエントリ内に、所与のエントリに対して所望の発送された値が格納されてもよい。引き続き、特定のエントリポイントにアクセスするための要求が、リモート制御ストア640によって受け取られると、パッチRAM660は、要求されたエントリポイントが発送されたかを決定するために調べられてもよい。例えば、リモート制御ストア640は、特定のエントリポイントがマッピングする特定のバンク650を決定し、次に、パッチRAM660内の対応するエントリ310の制御ビットを調べて、パッチRAM660内に格納されたエントリ310が、特定のバンク650内に格納されたエントリ310の代わりに選択されるべきであるかを決定するように構成されてもよい。あるいは、特定のエントリポイントは、特定のエントリポイントがパッチRAM660のエントリにヒットまたはマッチするかどうかを決定するために、アソシアティブ方式にパッチRAM660内のプログラミングされたエントリポイントに対して比較されてもよい。リモートマイクロコードユニット410の任意の特徴として、パッチRAM660が示されているが、いくつかの実施形態において、ローカルマイクロコードユニット400はまた、上述したものと同様の方法で制御ストア500内のパッチRAM特徴をサポートしてもよいことに留意されたい。
To route a given
パッチRAM660は、個々のマイクロコードエントリポイントのパッチングを容易に与えてもよい。しかしながら、いくつかの実施形態において、多くのエントリポイントを包含するルーチン全体を書き換えるか、または新しいルーチンで既存のマイクロコードを増大することが望ましいこともある。それに応じて、1つの実施形態において、リモートマイクロコードユニット410は、任意のダイナミックマイクロコードRAMアレイ670を含んでもよい。一般的に言えば、マイクロコードRAMアレイ670は、任意の適切な書き込み可能または不揮発性のストレージアレイ技術に従って実装されてもよく、リモート制御ストア640およびローカル制御ストア500内に格納されたものに追加して、多数のエントリ310を格納するように構成されてもよい。1つの実施形態において、マイクロコードRAMアレイ670のエントリ310に関連付けられたマイクロコードアドレス空間の部分は、リモート制御ストア640およびローカル制御ストア500内のエントリ310に関連付けられたマイクロコードアドレス空間の部分から別個のものであってもよく、それによって、リモートマイクロコードユニット410によって受け取られるマイクロコードアクセス要求は、要求されたエントリポイントに従って、リモート制御ストア640か、またはマイクロコードRAMアレイ670のいずれかに向けられてもよい。
他の実施形態において、マイクロコードRAMアレイ670内のあるエントリ310は、リモート制御ストア640にもマッピングするエントリポイントをシャドウイングまたはオーバーライドするように構成されてもよい。例えば、マイクロコードRAMアレイ670が、パッチRAM660に対して上述したものに類似したプログラム可能なエントリポイント制御ビットまたはレジスタを含んでもよい。このような実施形態において、対応するエントリ310が、マイクロコードRAMアレイ670内に規定されたかどうかを確認するために、リモートマイクロコードユニット410にマッピングする特定のエントリポイントがチェックされてもよい。確認できれば、リモート制御ストア640内の任意の対応するエントリ310は無視されてもよい。ある程度のシーケンシングをサポートするリモートマイクロコードユニット410のいくつかの実施形態において、エントリポイントが、マイクロコードRAMアレイ670に、例えば、複数エントリのマイクロコードルーチンの開始時に最初にマッピングされると、後続の連続的な参照が、マイクロコードRAMアレイ670に割り当てられたマイクロコードアドレス空間の一部分内に留まってもよい。これにより、リモート制御ストア640をさらに参照することなく、ルーチンの残りがRAMアレイ670から実行することが可能となりうる。
In other embodiments, an
上記実施形態は、ローカルマイクロコードユニット400およびリモートマイクロコードユニット410を含む2段階の階層に関して記載してきたが、他の実施形態において、マイクロコードは、さらなる段階の階層を用いて、プロセッサ200内、またはシステム内のプロセッサ200の複数のインスタンスにわたって分配されてもよいことに留意されたい。
Although the above embodiments have been described with reference to a two-level hierarchy that includes a local microcode unit 400 and a
いくつかの実施形態において、プロセッサ200は、他のコンポーネントとともにコンピュータシステム内に実装されてもよい。図8に、このようなシステムの1つの実施形態を示す。例示した実施形態において、コンピュータシステム800は、いくつかの処理ノード812A、812B、812C、および812Dを含む。各処理ノードは、各処理ノード812A〜812D内のそれぞれに含まれたメモリコントローラ816A〜816Dを介して、それぞれのメモリ814A〜814Dに連結される。さらに、処理ノード812A〜812Dは、処理ノード812A〜812D間で通信するために使用されるインタフェースロジックを含む。例えば、処理ノード812Aha,処理ノード812Bと通信するためのインタフェースロジックAと、処理ノード812Cと通信するためのインタフェースロジック818Bと、さらなる別の処理ノード(図示せず)と通信するための第3のインタフェースロジック818Cとを含む。同様に、処理ノード812Bは、インタフェースロジック818D、818E、および818Fを含み、処理ノード812Cは、インタフェースロジック818G、818H、および818Iとを含み、処理ノード812Dは、インタフェースロジック818J、818K、および818Lを含む。処理ノード812Dは、インタフェースロジック818Lを介して複数の入力/出力デバイス(例えば、デイジーチェーン構成のデバイス820A〜820B)と通信するように連結される。他の処理ノードが、同様の方法で他のI/Oデバイスと通信してもよい。
In some embodiments, the processor 200 may be implemented in a computer system along with other components. FIG. 8 illustrates one embodiment of such a system. In the illustrated embodiment,
処理ノード812A〜812Dは、処理間のノード通信用のパケットベースリンクを実装するように構成されてもよい。例示した実施形態において、リンクは、単方向ラインのセットとして実装される(例えば、ライン824Aは、処理ノード812Aから処理ノード812Bへパケットを送信するように使用され、ライン824Bは、処理ノード812Bから処理ノード812Aへパケットを送信するように使用される)。ライン824C〜824Hの他のセットは、図8に示すように、他の処理ノード間でパケットを送信するように使用される。一般に、ライン824の各セットは、1つ以上のデータライン、データラインに対応する1つ以上のクロックライン、および搬送されるパケットのタイプを示す1つ以上の制御ラインを含んでもよい。リンクは、処理ノード間で通信するためのキャッシュコヒーレント式か、または処理ノードとI/Oデバイス間で通信するための非コヒーレント式で動作されてもよい(または周辺機器相互接続(PCI:Peripheral Component Interconnect)バスまたは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バスなどの従来の構造のバスブリッジとI/Oバス)。さらに、リンクは、図示したようなI/Oデバイス間でデイジーチェーン構造を用いて非コヒーレント式に動作されてもよい。1つの処理ノードから別のものへ送信されるパケットが、1つ以上の中間ノードを通過してもよいことに留意されたい。例えば、処理ノード812Aから処理ノード812Dによって送信されるパケットは、図8に示すように、処理ノード812Bまたは処理ノード812Cのいずれかを通過してもよい。任意の適切なルーティングアルゴリズムが使用されてもよい。コンピュータシステム800の他の実施形態が、図8に示す実施形態より多いか、または少ない処理ノード数を含んでもよい。また、コンピュータシステム800の他の実施形態は、上述したようなパケットベースのプロトコルを採用した単方向バスではなく、適切なインタフェースプロトコルを採用した双方向バスをしようして実装されてもよい。
Processing nodes 812A-812D may be configured to implement a packet-based link for node communication between processes. In the illustrated embodiment, the links are implemented as a set of unidirectional lines (eg,
一般に、パケットは、ノード間のライン824に1以上のビット時間として送信されてもよい。ビット時間は、対応するクロックラインでのクロック信号の立ち上がりまたは立下り縁であってもよい。パケットは、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシーを維持するためのプローブパケット、およびプローブおよびコマンドへの応答からの応答パケットを含んでもよい。 In general, a packet may be sent on line 824 between nodes as one or more bit times. The bit time may be the rising or falling edge of the clock signal on the corresponding clock line. The packets may include command packets for initiating transactions, probe packets for maintaining cache coherency, and response packets from responses to probes and commands.
処理ノード812A〜812Dは、メモリコントローラおよびインタフェースロジックの他にも、1つ以上のプロセッサを含んでもよい。広義に言えば、処理ノードは、少なくとも1つのプロセッサを備え、任意に、必要に応じてメモリおよび他のロジックと通信するためのメモリコントローラを含んでもよい。より詳細に言えば、各処理ノード812A〜812Dは、図2に示すように、プロセッサ200の1つ以上のコピーを備えてもよい(例えば、図1および図3〜図7に示すさまざまな構造的および演算の詳細を含む)。1つ以上のプロセッサは、処理ノードまたは処理ノードの形成においてチップマルチプロセッシング(CMP:chip multiprocessing)またはチップマルチスレッド(CMT:chip
multithreaded)集積回路を備えてもよく、または、処理ノードは、任意の他の所望の内部構造を有してもよい。いくつかの実施形態において、処理ノード812のメモリコントローラおよび/または周辺インタフェースロジックが、図2に示すように、プロセッサ200内に直接集積化されてもよい。例えば、メモリコントローラ816のインスタンスが、プロセッサ200内のメモリコントローラ/周辺インタフェース230に対応してもよい。
In addition to the memory controller and interface logic, the processing nodes 812A-812D may include one or more processors. Broadly speaking, the processing node comprises at least one processor and may optionally include a memory controller for communicating with memory and other logic as required. More specifically, each processing node 812A-812D may comprise one or more copies of the processor 200 as shown in FIG. 2 (eg, various structures shown in FIGS. 1 and 3-7). And details of operations). One or more processors may be chip multiprocessing (CMP) or chip multithread (CMT) in forming a processing node or processing node.
multithreaded) integrated circuit, or the processing node may have any other desired internal structure. In some embodiments, the memory controller and / or peripheral interface logic of the processing node 812 may be integrated directly into the processor 200, as shown in FIG. For example, an instance of the memory controller 816 may correspond to the memory controller /
メモリ814A〜814Dは、任意の適切なメモリデバイスを備えてもよい。例えば、メモリ814A〜814Dは、1つ以上のRAMBUS DRAM(RDRAM)、同期DRAM(SDRAM)、DDR SDRAM、スタティックRAMなどを備えてもよい。コンピュータシステム800のアドレス空間は、メモリ814A〜814Dの間で分割されてもよい。各処理ノード812A〜812Dは、どのメモリ814A〜814Dに対して、ひいては、特定のアドレスに対するメモリ要求がルーティングされるべきであるどの処理ノード812A〜812に対して、どのアドレスがマッピングされるかを決定するために使用されたメモリマップを含んでもよい。1つの実施形態において、コンピュータシステム800内のアドレスのコヒーレンシーポイントは、アドレスに対応するバイトを格納するメモリに連結されたメモリコントローラ816A〜816Dである。言い換えれば、メモリコントローラ816A〜816Dは、対応するメモリ814A〜814Dへの各メモリアクセスがキャッシュコヒーレント式に生じるようにする役割のものであってもよい。メモリコントローラ816A〜816Dは、メモリ814A〜814Dへのインタフェースとなるための制御回路を備えてもよい。さらに、メモリコントローラ816A〜816Dは、メモリ要求をキューに入れるための要求キューを含んでもよい。
Memories 814A-814D may comprise any suitable memory device. For example, the memories 814A-814D may include one or more RAMBUS DRAM (RDRAM), synchronous DRAM (SDRAM), DDR SDRAM, static RAM, and the like. The address space of
一般に、インタフェースロジック818A〜818Lは、リンクからパケットを受け取り、リンク上を送信されるパケットをバッファリングするための種々のバッファを備えてもよい。上述したように、いくつかの実施形態において、インタフェースロジック818は、プロセッサ200内、例えば、メモリコントローラ/周辺インタフェース230内、または集積メモリコントローラとは別個の別々のインタフェース内で集積化されてもよい。コンピュータシステム800は、パケットを送信するための任意の適切なフロー制御機構を採用してもよい。例えば、1つの実施形態において、各インタフェースロジック818は、インタフェースロジックが接続されるリンクの他端部にあるレシーバ内にあるバッファのタイプ別の数を格納する。インタフェースロジックは、受信するインタフェースロジックにパケットを格納する空きのバッファがない限り、パケットを送信しない。パケットを前方にルーティングすることで受信バッファに空きができると、受信側のインタフェースロジックは送信側のインタフェースロジックにバッファが空いたことを示すメッセージを送信する。このような機構を、「クーポンベース」システムと呼ぶこともある。
In general, interface logic 818A-818L may include various buffers for receiving packets from the link and buffering packets transmitted over the link. As described above, in some embodiments, interface logic 818 may be integrated within processor 200, eg, within memory controller /
I/Oデバイス820A〜820Bは、適切な任意のI/Oデバイスでよい。例えば、I/Oデバイス820A〜820Bは、そのデバイスが連結されてもよい別のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインタフェースカード、またはモデム)を含む。さらに、I/Oデバイス820A〜820Bは、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カード、サウンドカード、およびGPIBなどの様々なデータ取得カードまたはフィールドバスインタフェースカードを含んでもよい。さらに、カードとして実装された任意のI/Oデバイスはまた、システム800の主要回路基板上の回路、プロセッサ200内、および/または処理ノードで実行されるソフトウェアで回路として実装されてもよい。本明細書において、「I/Oデバイス」という用語、および「周辺デバイス」という用語は、同義に用いられていることに留意されたい。
I /
さらに、1つ以上のI/O相互接続および/またはメモリへのブリッジへのプロセッサの1つ以上のインタフェースを含む、従来のパーソナルコンピュータ(PC)構造に1つ以上のプロセッサ200が実装されてもよい。例えば、プロセッサ200は、ノースブリッジ・サウスブリッジ階層内に実装されるように構成されてもよい。このような実施形態において、ノースブリッジ(プロセッサ200に連結されるか、または集積されてもよい)は、システムメモリ、グラフィックデバイスインタフェース、および/または他のシステムデバイスへの高帯域接続を与えるように構成されてもよく、一方で、サウスブリッジは、さまざまなタイプの周辺バス(例えば、ユニバーサルシリアルバス(USB:Universal Serial Bus)、PCI、ISAなど)を介して他の周辺機器への低帯域域接続を与えてもよい。 Further, one or more processors 200 may be implemented in a conventional personal computer (PC) structure that includes one or more I / O interconnects and / or one or more interfaces of the processor to a bridge to memory. Good. For example, the processor 200 may be configured to be implemented in a North Bridge / South Bridge hierarchy. In such embodiments, the north bridge (which may be coupled to or integrated with the processor 200) provides a high bandwidth connection to system memory, graphics device interfaces, and / or other system devices. While the south bridge may be configured, the low bandwidth to other peripherals via various types of peripheral buses (eg Universal Serial Bus (USB), PCI, ISA, etc.) A connection may be given.
上記に実施形態を非常に詳細に記載してきたが、当業者が上記開示を十分に理解すれば、多数の変更例および修正例が明らであろう。添付の特許請求の範囲は、そのような変更例および修正例のすべてを包含するように解釈されることを意図したものである。 Although embodiments have been described in great detail above, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. The appended claims are intended to be construed to include all such variations and modifications.
本発明は、一般に、マイクロプロセッサの分野に適用可能でありうる。 The present invention may be generally applicable to the field of microprocessors.
Claims (9)
前記プロセッサコア(100)の各々によってアクセス可能であり、マイクロコードエントリを格納するように構成されたリモートマイクロコードストア(640)と、所与のプロセッサコアが別のマイクロコードエントリ(310)を別々に要求することなく、前記所与のプロセッサコアへの前記別のマイクロコードエントリを取り出すか否かを決定するために、取り出したエントリ(310)のシーケンス制御フィールド(330)を評価するように構成されたシーケンサとを含むリモートマイクロコードユニット(410)と、を備えるプロセッサ(200)であって、
前記複数のプロセッサコア(100)の各々が、マイクロコードエントリを格納するように構成されたローカルマイクロコードユニット(400)を含み、
前記ローカルマイクロコードユニット(400)内に格納されたマイクロコードエントリに対応するマイクロコードルーチンの各々が、性能感度しきい値要求を満たすのに対して、前記リモートマイクロコードユニット(410)内に格納されたマイクロコードエントリに対応する少なくともいくつかのマイクロコードルーチンの各々が、前記性能感度しきい値要求を満たさず、
前記プロセッサコア(100)の任意の所与のコアが、
前記所与のプロセッサコア(100)によって実行される1つ以上の演算を含む特定のマイクロコードエントリに対応する所与のマイクロコードエントリポイントを発生し、
前記所与のプロセッサコア(100)の前記それぞれのローカルマイクロコードユニット(400)内に、前記特定のマイクロコードエントリが格納されたかを決定し、
前記特定のマイクロコードエントリが、前記それぞれのローカルマイクロコードユニット(400)内に格納されていないという決定に応答して、前記リモートマイクロコードユニット(410)に前記特定のマイクロコードエントリの要求を搬送するようにさらに構成される、プロセッサ。 A plurality of processor cores (100) each configured to independently execute instructions defined in accordance with a Programmable Instruction Set Architecture (ISA);
A remote microcode store (640) that is accessible by each of the processor cores (100) and configured to store microcode entries, and a given processor core separates another microcode entry (310). Configured to evaluate the sequence control field (330) of the retrieved entry (310) to determine whether to retrieve the another microcode entry for the given processor core without requesting A processor (200) comprising: a remote microcode unit (410) including a programmed sequencer;
Each of the plurality of processor cores (100) includes a local microcode unit (400) configured to store a microcode entry;
Wherein each of the local microcode unit (400) corresponding to Luma Lee black code routine in the microcode entry stored in the respect meet the performance sensitivity threshold requirements, the remote microcode unit (410) in Each of at least some of the microcode routines corresponding to the microcode entry stored in the table does not meet the performance sensitivity threshold requirement;
Any given core of the processor core (100) is
Generating a given microcode entry point corresponding to a particular microcode entry containing one or more operations to be performed by the given processor core (100);
Determining whether the particular microcode entry is stored in the respective local microcode unit (400) of the given processor core (100);
In response to a determination that the specific microcode entry is not stored in the respective local microcode unit (400), conveys the request for the specific microcode entry to the remote microcode unit (410) A processor further configured to.
請求項1から7のいずれか一項に記載のプロセッサとを備え、前記プロセッサが前記システムメモリに連結される、システム。 System memory,
A system comprising: a processor according to claim 1, wherein the processor is coupled to the system memory.
所与のマイクロコードルーチンが、性能感度しきい値要求を満たしていないという決定に応答して、前記複数のプロセッサコア(100)の外部のリモートマイクロコードユニット(410)内にある前記所与のマイクロコードルーチンに対応する1つ以上のマイクロコードエントリを格納し、
前記複数のプロセッサコア(100)の所与のコアが、前記所与のプロセッサコア(100)によって実行される1つ以上の演算を含む特定のマイクロコードエントリに対応する所与のマイクロコードエントリポイントを発生し、前記複数のプロセッサコア(100)の各々が、プログラマビジブル命令セットアーキテクチャ(ISA)に従って規定された命令を独立して実行するように各々が構成され、マイクロコードエントリを格納するように構成されたローカルマイクロコードユニット(400)を各々が含み、
前記所与のプロセッサコア(100)が、前記特定のマイクロコードエントリが、前記所与のプロセッサコア(100)の前記それぞれのローカルマイクロコードユニット(400)内に格納されているかを決定し、
前記特定のマイクロコードエントリが前記それぞれのローカルマイクロコードユニット(400)内に格納されていないという決定に応答して、前記所与のプロセッサコア(100)が、前記特定のマイクロコードエントリの要求をリモートマイクロコードユニット(410)へ搬送し、前記リモートマイクロコードユニット(410)が、前記プロセッサコア(100)の各々によってアクセス可能であり、マイクロコードエントリを格納するように構成されたリモートマイクロコードストア(640)と、所与のプロセッサコアが別のマイクロコードエントリ(310)を別々に要求することなく、前記所与のプロセッサコアへの前記別のマイクロコードエントリを取り出すか否かを決定するために、取り出したエントリ(310)のシーケンス制御フィールド(330)を評価するように構成されたシーケンサとを含む、方法。 In response to the determination that a given microcode routine meets the performance sensitivity threshold requirement, the given microcode routine includes the given microcode routine in each local microcode unit (400) included in the plurality of processor cores (100). Store one or more microcode entries corresponding to microcode routines;
In response to a determination that a given microcode routine does not meet performance sensitivity threshold requirements, the given microcode routine is in a remote microcode unit (410) external to the plurality of processor cores (100). Store one or more microcode entries corresponding to microcode routines;
A given microcode entry point corresponding to a particular microcode entry in which a given core of the plurality of processor cores (100) includes one or more operations performed by the given processor core (100) Each of the plurality of processor cores (100) is configured to independently execute instructions defined in accordance with a Programmable Instruction Set Architecture (ISA) to store microcode entries. Each includes a configured local microcode unit (400),
The given processor core (100) determines whether the particular microcode entry is stored in the respective local microcode unit (400) of the given processor core (100);
In response to a determination that the particular microcode entry is not stored in the respective local microcode unit (400), the given processor core (100) makes a request for the particular microcode entry. A remote microcode store that is configured to store a microcode entry that is transported to a remote microcode unit (410), wherein the remote microcode unit (410) is accessible by each of the processor cores (100) (640) and to determine whether the given processor core should fetch the other microcode entry for the given processor core without requesting another microcode entry (310) separately. To the entry (310) And a sequencer configured to evaluate the cans control field (330), method.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/779,642 US7743232B2 (en) | 2007-07-18 | 2007-07-18 | Multiple-core processor with hierarchical microcode store |
US11/779,642 | 2007-07-18 | ||
PCT/US2008/008802 WO2009011913A1 (en) | 2007-07-18 | 2008-07-18 | Multiple-core processor with hierarchical microcode store |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010533920A JP2010533920A (en) | 2010-10-28 |
JP5372929B2 true JP5372929B2 (en) | 2013-12-18 |
Family
ID=39744974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010517025A Active JP5372929B2 (en) | 2007-07-18 | 2008-07-18 | Multi-core processor with hierarchical microcode store |
Country Status (7)
Country | Link |
---|---|
US (1) | US7743232B2 (en) |
EP (1) | EP2171574B1 (en) |
JP (1) | JP5372929B2 (en) |
KR (1) | KR101493017B1 (en) |
CN (1) | CN101855614A (en) |
TW (1) | TWI433032B (en) |
WO (1) | WO2009011913A1 (en) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7971104B2 (en) * | 2006-10-24 | 2011-06-28 | Shlomi Dolev | Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations |
CN101802230B (en) * | 2007-07-19 | 2012-10-17 | 塔塔钢铁艾默伊登有限责任公司 | A strip of steel having a variable thickness in length direction |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
FR2938943B1 (en) * | 2008-11-21 | 2010-11-12 | Thales Sa | MULTIPROCESSOR SYSTEM. |
US8281110B2 (en) * | 2009-07-15 | 2012-10-02 | Via Technologies, Inc. | Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8504807B2 (en) | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
US20110296096A1 (en) * | 2010-05-28 | 2011-12-01 | Xiang Zou | Method And Apparatus For Virtualized Microcode Sequencing |
CN102446087B (en) * | 2010-10-12 | 2014-02-26 | 无锡江南计算技术研究所 | Instruction prefetching method and device |
US8990602B2 (en) * | 2010-12-21 | 2015-03-24 | Intel Corporation | Apparatus, method, and system for early deep sleep state exit of a processing element |
US20120166777A1 (en) * | 2010-12-22 | 2012-06-28 | Advanced Micro Devices, Inc. | Method and apparatus for switching threads |
WO2013081744A1 (en) * | 2011-11-30 | 2013-06-06 | Axis Semiconductor, Inc. | Herarchical multi-core processor and method of programming for efficient data processing |
US9448879B2 (en) * | 2011-12-22 | 2016-09-20 | Intel Corporation | Apparatus and method for implement a multi-level memory hierarchy |
WO2013101146A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Using reduced instruction set cores |
US9983953B2 (en) * | 2012-12-20 | 2018-05-29 | Intel Corporation | Multiple computer system processing write data outside of checkpointing |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) * | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9542193B2 (en) | 2012-12-28 | 2017-01-10 | Intel Corporation | Memory address collision detection of ordered parallel threads with bloom filters |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
GB2518613A (en) | 2013-09-25 | 2015-04-01 | Ibm | Multiple core processing with high throughput atomic memory operations |
US9372696B2 (en) * | 2013-10-18 | 2016-06-21 | Via Technologies, Inc. | Microprocessor with compressed and uncompressed microcode memories |
CN107436842A (en) * | 2016-05-25 | 2017-12-05 | 中兴通讯股份有限公司 | A kind of microcode adjustment method and veneer |
KR101940382B1 (en) * | 2016-12-21 | 2019-04-11 | 연세대학교 산학협력단 | Prefetching method and apparatus for pages |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
US10637685B2 (en) | 2017-03-29 | 2020-04-28 | Fungible, Inc. | Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups |
CN110710139A (en) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | Non-blocking full mesh data center network with optical displacers |
US10565112B2 (en) | 2017-04-10 | 2020-02-18 | Fungible, Inc. | Relay consistent memory management in a multiple processor system |
US10452586B2 (en) | 2017-04-17 | 2019-10-22 | Intel Corporation | Avoid thread switching in cache management |
EP3625940A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for compute nodes and storage nodes |
CN110892380B (en) | 2017-07-10 | 2023-08-11 | 芬基波尔有限责任公司 | Data processing unit for stream processing |
WO2019068010A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | Network access node virtual fabrics configured dynamically over an underlay network |
WO2019068017A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
CN108153559A (en) * | 2017-12-08 | 2018-06-12 | 芯海科技(深圳)股份有限公司 | Framework is reconfigured quickly in a kind of MCU work real-time that do not influence |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10365860B1 (en) | 2018-03-08 | 2019-07-30 | quadric.io, Inc. | Machine perception and dense algorithm integrated circuit |
US10997115B2 (en) | 2018-03-28 | 2021-05-04 | quadric.io, Inc. | Systems and methods for implementing a machine perception and dense algorithm integrated circuit and enabling a flowing propagation of data within the integrated circuit |
US11467838B2 (en) | 2018-05-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Fastpath microcode sequencer |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
US11016763B2 (en) | 2019-03-08 | 2021-05-25 | Advanced Micro Devices, Inc. | Implementing a micro-operation cache with compaction |
US20220100519A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Processor with multiple fetch and decode pipelines |
TWI783310B (en) * | 2020-11-26 | 2022-11-11 | 華邦電子股份有限公司 | Counting method and counting device |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1464570A (en) | 1974-11-27 | 1977-02-16 | Ibm | Microprogramme control units |
US4455604A (en) | 1981-05-22 | 1984-06-19 | Data General Corporation | Digital data processing system having addressing means for translating operands into descriptors identifying data, plural multilevel microcode control means, and ability to execute a plurality of internal language dialects |
US4498132A (en) | 1981-05-22 | 1985-02-05 | Data General Corporation | Data processing system using object-based information and a protection scheme for determining access rights to such information and using multilevel microcode techniques |
JPS58182758A (en) | 1982-04-20 | 1983-10-25 | Toshiba Corp | Arithmetic controller |
IT1151683B (en) | 1982-07-06 | 1986-12-24 | Honeywell Inf Systems | ASYNCHRONOUS BUS MULTIPROCESSOR SYSTEM WITH LOADING OF MICRO INSTRUCTIONS FROM WORK MEMORY |
US4901235A (en) | 1983-10-28 | 1990-02-13 | Data General Corporation | Data processing system having unique multilevel microcode architecture |
US4670835A (en) | 1984-10-19 | 1987-06-02 | Honeywell Information Systems Inc. | Distributed control store word architecture |
US5036453A (en) * | 1985-12-12 | 1991-07-30 | Texas Instruments Incorporated | Master/slave sequencing processor |
JP2753755B2 (en) * | 1990-02-09 | 1998-05-20 | 富士通株式会社 | Control memory allocation device |
US5386547A (en) * | 1992-01-21 | 1995-01-31 | Digital Equipment Corporation | System and method for exclusive two-level caching |
EP0596144A1 (en) * | 1992-10-07 | 1994-05-11 | International Business Machines Corporation | Hierarchical memory system for microcode and means for correcting errors in the microcode |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
JPH07311752A (en) | 1994-05-11 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | Decentralized data processing system and initial program loading method |
JP3177117B2 (en) | 1994-05-11 | 2001-06-18 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | Method and apparatus for updating control codes in multiple nodes |
US5796972A (en) | 1997-01-14 | 1998-08-18 | Unisys Corporation | Method and apparatus for performing microcode paging during instruction execution in an instruction processor |
US6141740A (en) | 1997-03-03 | 2000-10-31 | Advanced Micro Devices, Inc. | Apparatus and method for microcode patching for generating a next address |
US5845102A (en) * | 1997-03-03 | 1998-12-01 | Advanced Micro Devices, Inc. | Determining microcode entry points and prefix bytes using a parallel logic technique |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
US7415703B2 (en) | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US7095342B1 (en) | 2005-03-31 | 2006-08-22 | Intel Corporation | Compressing microcode |
US20070083735A1 (en) * | 2005-08-29 | 2007-04-12 | Glew Andrew F | Hierarchical processor |
-
2007
- 2007-07-18 US US11/779,642 patent/US7743232B2/en active Active
-
2008
- 2008-07-15 TW TW097126723A patent/TWI433032B/en active
- 2008-07-18 CN CN200880102847A patent/CN101855614A/en active Pending
- 2008-07-18 KR KR1020107003615A patent/KR101493017B1/en active IP Right Grant
- 2008-07-18 WO PCT/US2008/008802 patent/WO2009011913A1/en active Application Filing
- 2008-07-18 JP JP2010517025A patent/JP5372929B2/en active Active
- 2008-07-18 EP EP08794577.0A patent/EP2171574B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR101493017B1 (en) | 2015-02-12 |
TW200912738A (en) | 2009-03-16 |
US20090024836A1 (en) | 2009-01-22 |
KR20100063024A (en) | 2010-06-10 |
CN101855614A (en) | 2010-10-06 |
EP2171574B1 (en) | 2016-02-10 |
JP2010533920A (en) | 2010-10-28 |
US7743232B2 (en) | 2010-06-22 |
WO2009011913A1 (en) | 2009-01-22 |
EP2171574A1 (en) | 2010-04-07 |
TWI433032B (en) | 2014-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5372929B2 (en) | Multi-core processor with hierarchical microcode store | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
US10303609B2 (en) | Independent tuning of multiple hardware prefetchers | |
US7219185B2 (en) | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache | |
US10095623B2 (en) | Hardware apparatuses and methods to control access to a multiple bank data cache | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
US20180365022A1 (en) | Dynamic offlining and onlining of processor cores | |
US10896141B2 (en) | Gather-scatter cache architecture having plurality of tag and data banks and arbiter for single program multiple data (SPMD) processor | |
CN111752616A (en) | System, apparatus and method for symbolic memory address generation | |
EP4020189A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
US10437590B2 (en) | Inter-cluster communication of live-in register values | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
US11907712B2 (en) | Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline | |
US10261909B2 (en) | Speculative cache modification | |
US11775336B2 (en) | Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US20200233772A1 (en) | Device, system and method for identifying a source of latency in pipeline circuitry | |
US20210200538A1 (en) | Dual write micro-op queue | |
TW202213088A (en) | System, apparatus and methods for register hardening via a micro-operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100714 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20100902 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110715 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121219 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130319 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130327 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130522 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130820 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130911 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130918 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5372929 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |