JP2015191660A - 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 - Google Patents
動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 Download PDFInfo
- Publication number
- JP2015191660A JP2015191660A JP2015010321A JP2015010321A JP2015191660A JP 2015191660 A JP2015191660 A JP 2015191660A JP 2015010321 A JP2015010321 A JP 2015010321A JP 2015010321 A JP2015010321 A JP 2015010321A JP 2015191660 A JP2015191660 A JP 2015191660A
- Authority
- JP
- Japan
- Prior art keywords
- syllables
- order
- dependencies
- pipeline
- instruction
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 16
- 230000015654 memory Effects 0.000 claims abstract description 84
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000005192 partition Methods 0.000 claims description 38
- 239000000872 buffer Substances 0.000 claims description 11
- 238000007667 floating Methods 0.000 claims description 10
- 230000000694 effects Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 21
- 238000005457 optimization Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 8
- 230000009467 reduction Effects 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000008092 positive effect Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000013065 commercial product Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/46—Multiprogramming arrangements
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)
- Devices For Executing Special Programs (AREA)
Abstract
Description
図1Aは、発明の実施形態に係る典型的なインオーダパイプラインおよび典型的なレジスタリネーミングアウトオブオーダ発行/実行パイプラインを示すブロック図である。図1Bは、発明の実施形態に係るインオーダアーキテクチャコアの典型的な実施形態およびプロセッサ内に含まれる典型的なレジスタリネーミングアウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。 図1A及び図1B内の実線のボックスはインオーダパイプラインおよびインオーダコアを示すとともに、破線のボックスの任意の追加は、レジスタリネーミングアウトオブオーダ発行/実行パイプラインおよびコアを示す。インオーダの態様がアウトオブオーダの態様のサブセットであるとすると、アウトオブオーダの態様が記載されるであろう。
動的アウトオブオーダプロセッサパイプライン
発明の一実施形態は、数々の方法で、既存のアウトオブオーダおよびインオーダVLIWプロセッサ実装の制限に取り組む動的アウトオブオーダパイプラインの最適化された実装を含む。ハードウェアの改善は、特別に規定された(例えば、プライベート)命令セットアーキテクチャ(ISA)特徴およびISA(図7参照)の最適化コンパイラ708またはバイナリトランスレータ(例えば、コンバータ712)であってよいコデザインソフトウェアオプティマイザの助けを借りて実現される。意味深いことに、新しい最適化ハードウェアパイプラインは、ハードウェアにおける動的アウトオブオーダ実行の基本原理のすべてを維持および増進する。発明の実施形態が可能にする1つの使いの価値ある特徴は、ワイド発行アウトオブオーダプロセッサの設計に対して十分に改善されたハードウェアの拡張性である。
インオーダプロセッサのフロントエンドにおけるそれらと同様の動的フロントエンドハードウェア最適化。
アウトオブオーダエンジン割り当て、スケジューラセットアップ、およびリタイアメントユニットの簡素化およびサイズの低減、アウトオブオーダパイプラインのダウンストリーム。
アウトオブオーダパイプラインのセグメントをより並列に作ることで、割り当てパイプラインにおける幾つかの重要なステージ間の依存性の除去および幾つかのパイプラインステージの低減。
アウトオブオーダプロセッサのより広い動的動作周波数/電圧範囲を可能にする幾つかの重要なパイプラインステージに対するレイテンシの低減。
パイプラインに沿った多くのハードウェア構造の区切られた設計、および従来の複数のアウトオブオーダプロセッサにおいて実現可能または実際的なものを越えたそれらのリード/ライトポートの低減。
アウトオブオーダパイプラインの幾つかのステージでの大きなクロスバー(多重化)構造の除去、およびデータパスおよび制御バスの一部におけるより高い並列、より緩いパーティション化構成。
従来のアウトオブオーダ設計と比較して、所与のサイズの高価なアウトオブオーダのハードウェア構造(例えば、リザベーションステーション、バッファなど)の改善された利用。
ハードウェア/ソフトウェアがコデザインされたプロセッサのアーキテクチャを規定するための伝統的なパラダイムは、ソフトウェアコードオプティマイザを用いたコデザインの複数の方法は、現代の主流のアウトオブオーダパイプラインから、構成および/またはILPの利己的な利用の原理において劇的に異ならなければならないハードウェアにおける幾つかの新しい命令レベルの並列処理(ILP)のコンセプトを可能にする特別に規定された複数のISA特徴を通じて適用されることを想定する。しかし、先の複数の試みは、従来のハードウェアのみの複数のアウトオブオーダパイプラインと比較すると、性能および/または効率性において競争に耐えられなかった。
VLIWフロントエンドおよびリタイアメント/コミットユニットを用いるISA最適化アウトオブオーダパイプライン
ISA最適化ハードウェアレジスタリネーミング
ISA最適化スケジューラセットアップロジックおよびパイプライン
ISA最適化命令キャンセルセットアップロジックおよびパイプライン
スケジューラセットアップおよびキャンセルセットアップロジックの組み合わせ
スケジューラウェイクアップおよびキャンセルロジック組み合わせ
遅延ハードウェアレジスタリネーミング
命令の非投機的早期ディスパッチ
最適化アウトオブオーダパイプラインの完全にパーティション化された構成
パーティション化命令割り当てユニット
最適化アウトオブオーダパイプラインにおける割り当て(書き込み)ポートの低減
最適化パイプラインにおけるアウトオブオーダエンジンのアウトオブオーダ割り当て
最適化アウトオブオーダパイプラインのハードウェア強化型のVLIWコードのスケジュール
ISA最適化命令リタイアメントユニット
アウトオブオーダパイプラインのISA最適化クラスタ化構成
図8に示されるように、一実施形態では、最適化アウトオブオーダパイプラインに対するプライベートISAは、RISC型の固定長命令フォーマット800である。特に、ロード・ストアISAは、各固定長命令が、3アドレスのレジスタ/オペコード/オペランドフォーマット801(例えば、dst、src1、src2)および明示的な命令型情報802(例えば、メモリ、ALU、コントロール)を含むように、採用されてよい。さらに、各命令は、セットされると、明示的にプライベートISAにおいて用いられる複数の超長命令語(VLIW)の複数の境界をマークするストップビット803を含む。
発明の一実施形態において採用される複数のハードウェア最適化は、以下で、従来のアウトオブオーダパイプライン実装と比較される。最適化アウトオブオーダパイプラインの高レベル構造は、図10Aおよび図10Bに従来のアウトオブオーダパイプラインと並んで与えられる。2つのパイプラインの間の1つの違いは、最適化パイプラインが、従来のパイプラインにおける複数のインオーダスーパースカラフロントエンドユニット1001および複数のインオーダスーパースカラリタイアメントユニット1003に代えて、それぞれ、複数のインオーダVLIWフロントエンドユニット1011および複数のリタイアメント/コミットユニット1013を用いることである。一実施形態では、最適化アウトオブオーダパイプラインの複数のユニットは、クロックサイクルあたり1つのVLIWで動作する。
図11Aは、図11B内の最適化アウトオブオーダパイプライン、VLIWにおける対応するエンティティと並べて、従来のアウトオブオーダプロセッサにおける複数のマイクロ命令(μop)のスーパースカラ割り当てラインの例を示す。
図12Bに示されるように、従来のアウトオブオーダパイプラインと同様に、ここに記載の最適化パイプラインは、ハードウェアレジスタリネーミングユニット1213に依存し、プライベートISAの複数の論理レジスタオペランドを、マイクロアーキテクチャにおいて利用できる多くの物理レジスタにマップする。レジスタリネーミングの1つの目的は、偽W−A−RおよびW−A−Wレジスタ依存性を除去し、それにより、実行中のコードにおける利用可能な並列処理のレベルを増大することである。
最適化アウトオブオーダパイプラインがその割り当てセグメントにおいて可能にする次の改善は、データフロースケジューラのセットアップロジックに関連する。図13Aおよび図13Bは、従来のパイプライン(図13A)および最適化アウトオブオーダパイプライン(図13B)における割り当ておよびセットアップロジックの比較を提供する。特に、図13Aは、レジスタリネーミングロジック1301、スケジューラセットアップロジック1302、およびスケジューラロジック1303、同様にキャンセルセットアップロジック1304およびキャンセルロジック1305の連続配置を示す。図13Bは、レジスタリネーミングロジック1311、スケジューラセットアップロジック1312、およびキャンセルセットアップロジック1314、同様にスケジューラロジック1313およびキャンセルロジック1315に対する改善された並列配置を示す。
多くの現代のアウトオブオーダパイプラインは、ロードの実行に対して統計的に最も頻発するケースであるデータキャッシュ内でロードがヒットすると想定して、複数のロードオペレーションに依存する命令の投機的なディスパッチングを実装する。この最適化は、コンシューマの複数のオペレーションが、それらが非投機的にディスパッチされる場合よりも早くロードされたデータを受信することができるようにする。稀な場合では、ロードがデータキャッシュ内でミスすると、すべての投機的にディスパッチ依存のオペレーションが、アウトオブオーダパイプラインにおいて選択的にキャンセルされなければならない。ミスされたロードがより低いレベルのプロセッサのメモリ階層からデータを提供すると、複数のオペレーションは、後に、アウトオブオーダエンジンにより、非投機的に再ディスパッチ(再プレイ)される。
キャンセルセットアップロジック1314の全体的な最適化は、それを、スケジューラセットアップロジック1312を有する最適化アウトオブオーダパイプラインにおいて、シラブルの複数のオペランドの複数の論理レジスタ識別子によりアドレス可能な(インデキシングされる)単一テーブルに組み合わされることができるようにする。組み合わせは、さらに、命令キャンセル情報に含まれる複数のロードへの複数の間接的依存性に適用されるように、すべての間接的データフロー依存性が、常に、直接的データフロー依存性の前に除去されるという一般的事実に基づく。
さらに、命令キャンセル情報は、ここで、従来の複数のアウトオブオーダパイプラインのように、別個のハードウェア構造より、複数の命令に対する複数の真のデータフロー(R−A−W)依存性情報とともに、データフロースケジューラ1313のウェイクアップロジック上に保たれることができる。最適化は、さらに、命令キャンセル情報に含まれる複数のロードへの複数の間接的依存性に適用されるように、すべての間接的データフロー依存性が、常に、直接的データフロー依存性の前に除去されるという一般的事実に基づく。
割り当てパイプラインの実装の別の最適化は、上述のスケジューラ1312−1313およびキャンセルセットアップロジック1314の複数の改善が、アウトオブオーダパイプラインにおけるレジスタリネーミングステージの重要度を除去するという事実に基づく。
現代の複数のアウトオブオーダプロセッサは、それらのパイプラインのスケジューラセットアップおよび複数の命令スケジューリングステージと並行して実行される複数の割り当て命令の早期ディスパッチを実装してよい。複数の命令の早期ディスパッチは、特に分岐予測ミスのリカバリの後または命令キャッシュミスの後の多くの割り当て命令は、実際に、それらの割り当て時間でディスパッチされる準備ができているので、プロセッサの性能を改善する。しかし、命令の準備に関する情報は、この早期のステージでの従来のパイプラインでは利用できない。その結果、パイプラインは、あらゆる割り当て命令はその割り当て時間にて準備できるものと想定することにより、投機的に早期ディスパッチをする。
アウトオブオーダパイプラインの最適化ハードウェア実装における別の重要な改善は、VLIW(例えば、ALU、メモリ、制御などのような)における異なるタイプの複数の命令(複数のシラブル)の間のISA規定の厳格な相対順序の利己的な利用に、および複数のメモリオペレーションを除く、VLIW内の複数のシラブルの間の特定のプログラム順序の複数の関係が定義されないことに基づく。
最適化アウトオブオーダパイプラインの完全にパーティション化された構成の結果である別のハードウェア実装の改善は、命令割り当てユニット1502の実装に関連する。命令割り当てユニット1502は、アウトオブオーダパイプラインの複数の割り当てステージの間、機能し、またパーティション化され、それにより、そのパーティションのそれぞれは、正確に、最適化パイプラインの1つのパーティションを提供し、それを、クロックサイクルあたり1以下のパーティションタイプの命令(例えば、ALUまたはメモリなど)のみに割り当てる。パーティション化された割り当てユニット1502は、ハードウェアの複雑性および全体的な領域を減らし、それに加えて、より広範なアウトオブオーダプロセッサの設計のさらにより良い拡張性を有する。
一実施形態では、プライベートISAは、VLIWにおいて許容される特定のタイプの命令の最大数を制限してよい。複数の制限は、最適化アウトオブオーダパイプラインにおける複数の割り当てハードウェアユニット(上述のような)および幾つかの関連するハードウェア構造の追加の低減および簡素化のために用いられてよい。
一実施形態では、複数のハードウェアリソースのより良い利用は、アウトオブオーダエンジンのアウトオブオーダ割り当ての結果のように、最適化アウトオブオーダパイプラインにおいて実現される。アウトオブオーダ割り当ての効果は、当然に、dBTオプティマイザに対する必要条件から得られ、複数のVLIWに配置されている複数のシラブルで複数のプライベートISA制限に従う。具体的には、VLIWにおける複数のシラブルの間の真のデータフロー(R−A−W)および/または偽出力(W−A−W)依存性は存在できない。dBTオプティマイザは、それらを複数のプライベートRISCシラブルに翻訳した後、ただしそれらを複数のVLIWにグループ化する前に、例えば複数のIA入力命令の適当な再順序により、複数の制限を満たす。静的コード再順序の結果として、複数のコンシューマ(依存)命令は、それらのプロデューサ命令に対して続くVLIW(複数可)に配置され、最適化アウトオブオーダパイプラインにおける複数のコンシューマ命令は、それらのプロデューサの割り当ての時間に対して次の複数のクロックサイクルの1つにおいてのみ、アウトオブオーダエンジンに割り当てられる。
最適化アウトオブオーダパイプラインに対してdBTソフトウェアオプティマイザにより実行される複数のVLIWへのコード前スケジューリングを考えると、従来のインオーダVLIWパイプラインの複数のプロセッサの同様のVLIWコードスケジュールに対するVLIWコードスケジュールをもたらす幾つかの重要な複数の改善を指摘することは重要である。従来のインオーダVLIWパイプラインでは、各VLIWは、フェッチ、デコード、割り当て(またはバックエンドパイプラインへの転送)、ディスパッチング、およびリタイア/コミットのアトミックユニットである。すなわち、インオーダパイプラインの対応する複数のステージは、VLIWの全体、すなわちその複数のシラブルのすべてに同時に従う。
一実施形態では、最適化アウトオブオーダパイプラインのリタイア/コミット領域1013に配置されるリタイアメントユニットは、複数の命令を、最大でクロックサイクルあたり1VLIWのVLIW粒度(dBTオプティマイザにより静的に前規定される)で厳密にリタイアする。対照的に、従来のアウトオブオーダパイプラインは、ハードウェア内で、リタイアメントに対して複数のμopのスーパースカラグループ(「ライン」)を動的に選択し、選択の間、起こり得る懸案の中断および/または例外、および複数のμopのリタイヤリングストリームの「ライン」における元の複数のマクロ命令(ISA)の間の複数の境界を考慮しなければならない。
最適化アウトオブオーダパイプラインの一実施形態は、プライベートISAの複数の特徴およびdBTオプティマイザソフトウェアのサポートを介して、クラスタ化されたアウトオブオーダの複数のマイクロアーキテクチャの効率的な実装を可能にする。複数のクラスタ化マイクロアーキテクチャは、他のモノリシックであり大きな複数のハードウェア構造および複数のリソースをより小さい複数の部分(複数のクラスタ)に分割し、それにより、複数の部分のそれぞれがより低いレイテンシを有し、対応するモノリシックなハードウェア構造より高いクロック周波数で実行することができるので、それらの物理的実装はより簡素になり、ハードウェアの拡張性が改善される。
最適化アウトオブオーダパイプラインの複数の実施形態は、多くの知られた、または「クラシック」な、既存のバイナリコード(例えば、IA)の複数のdBT最適化の効率的な複数の実装を可能にする。そのような最適化の例は、これらに限定されるものではないが、投機的なループ不変コード移動、投機的なレジスタ値のスピルおよびフィルコードの最適化(レジスタプロモーションとしても知られる)、投機的な制御フローの最適化(唯一のパス条件付きおよび/または間接分岐、IF変換、コード矯正へのバイアスの除去)等を含む。加えて、現代のアウトオブオーダプロセッサにおいて利用できる多くのハードウェアのみのアウトオブオーダパイプライン最適化は、「そのまま」実装、または最適化アウトオブオーダパイプラインにおいてコデザインされたハードウェア/ソフトウェアとしてそれらを実装することにより簡素化および強化されることもできる。そのような最適化の例は、これらに限定されるものではないが、命令統合、移動命令の除去、ゼロイディオム命令の除去、初期の物理レジスタの再利用、投機的ロックの省略等を含む。
Claims (25)
- メモリからプログラム順序で複数の超長命令語(複数のVLIW)をフェッチする命令フェッチユニットであり、前記複数のVLIWのそれぞれは、縮小命令セットコンピュータ(RISC)命令の複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性を削除する順序で、前記複数のVLIWにグループ化される前記複数のシラブルを含む、命令フェッチユニットと、
プログラム順序で前記複数のVLIWをデコードし、デコードされた各VLIWの前記複数のシラブルを並行して出力するデコードユニットと、
他の複数のシラブルと並行して前記複数のシラブルのうちの少なくとも幾つかを実行するアウトオブオーダ実行エンジンと、を備え、
前記複数のシラブルのうちの少なくとも幾つかは、それらが前記デコードユニットから受信される前記順序と異なる順番で実行され、前記アウトオブオーダ実行エンジンは、複数のオペレーションを実行する際に、前記複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性のチェックをしない1または複数の処理ステージを有する、
装置。 - 前記アウトオブオーダ実行エンジンは、マルチプレクサおよび複数の論理レジスタオペランドコンパレータの少なくとも一方を用いないで、複数の論理レジスタオペランドを読み取るための読み取りフェーズを実装するレジスタリネーミングロジックを含む、請求項1に記載の装置。
- 前記アウトオブオーダ実行エンジンは、さらに、複数の機能ユニットによる実行のための前記複数のシラブルのスケジューリングに先立って複数のシラブルの間の複数の依存性を評価するスケジューラセットアップロジックを含み、前記スケジューラセットアップロジックは、前記レジスタリネーミングロジックの前記読み取りフェーズと並行して実行される、請求項2に記載の装置。
- 前記スケジューラセットアップロジックは、さらに、特定のディスパッチされた複数のシラブルの複数の効果をキャンセルするのに前記アウトオブオーダ実行エンジンにより利用可能なキャンセルセットアップロジックと並行して各シラブル上で動作する、請求項3に記載の装置。
- プログラムコードを高級プログラミング言語またはパブリック命令セットアーキテクチャ(パブリックISA)フォーマットから前記複数のVLIWおよび複数のシラブルを含むプライベートISAフォーマットに翻訳するトランスレータをさらに備える、請求項1から4のいずれか一項に記載の装置。
- 前記トランスレータは、最適化コンパイラまたは動的バイナリトランスレータを含むバイナリトランスレータを含む、請求項5に記載の装置。
- 前記トランスレータは、メモリから順番にフェッチされる複数のVLIWのそれぞれに含まれる前記複数のシラブルが複数のデータフローの依存性および複数の偽出力の依存性を有さないように、前記プライベートISAフォーマットに翻訳する際に複数のデータフローの依存性および複数の偽出力の依存性を取り除く、請求項6に記載の装置。
- 前記複数のデータフローの依存性は、複数のリードアフタライト(「R−A−W」)依存性を含み、前記複数の偽出力の依存性は、複数のライトアフタライト(「W−A−W」)依存性を含む、請求項7に記載の装置。
- 前記トランスレータは、VLIW内で複数の偽のアンチデータフロー依存性を受け入れる、請求項8に記載の装置。
- 前記複数の偽のアンチデータフロー依存性は、ライトアフタリード(「W−A−R」)依存性を含む、請求項9に記載の装置。
- 前記複数のシラブルは、1または複数の制御シラブル、1または複数の浮動小数点ベクトルシラブル、1または複数のメモリシラブル、および1または複数の整数ALUシラブルの任意の組み合わせを含む複数のタイプであり、各シラブルは、対応タイプのRISC命令により表される、請求項1から10のいずれか一項に記載の装置。
- 前記複数のシラブルのタイプは、VLIWにおけるシラブルの許可された相対位置として規定される、請求項11に記載の装置。
- 前記アウトオブオーダ実行エンジンは、複数のシラブルの非投機的早期ディスパッチを実行するディスパッチロジックを含む、請求項1から12のいずれか一項に記載の装置。
- 前記アウトオブオーダ実行エンジンは、Nのパーティションを有するレジスタリネーム/割り当てユニットおよびNのパーティションを有するスケジューラユニットを含んで、完全に仕切られる、請求項1から13のいずれか一項に記載の装置。
- 前記Nのパーティションは、物理的に配置されて、複数の命令のうちの複数の特定のタイプを処理する、請求項14に記載の装置。
- 前記スケジューラユニット内の第1パーティションは、第1タイプの実行ユニットに関連し、前記スケジューラユニット内の第2パーティションは、第2タイプの実行ユニットに関連する、請求項15に記載の装置。
- 前記レジスタリネーム/割り当てユニットおよび前記スケジューラユニットの仕切りは、前記アウトオブオーダ実行エンジンおよびそのロードおよび複数のバッファのストアを含むメモリオーダリングバッファの少なくとも一方のライトポートの数を減らす、請求項14から16のいずれか一項に記載の装置。
- 前記パブリックISAは、インテルアーキテクチャ(IA)を含む、請求項5に記載の装置。
- プログラムコードをパブリック命令セットアーキテクチャ(ISA)フォーマットから複数の超長命令語(複数のVLIW)を含むプライベートISAフォーマットに翻訳するトランスレータであり、前記複数のVLIWのそれぞれは、複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性を削除する順序で、前記複数のVLIWにグループ化される前記複数のシラブルを含む、トランスレータと、
他の複数のシラブルと並行して前記複数のシラブルのうちの少なくとも幾つかを実行するアウトオブオーダ実行エンジンと、を備え、
前記複数のシラブルのうちの少なくとも幾つかは、それらが前記アウトオブオーダ実行エンジンにより受信される前記順序と異なる順番で実行され、前記アウトオブオーダ実行エンジンは、前記複数のシラブルを処理する際に、前記複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性のチェックをしない1または複数の処理ステージを有する、
装置。 - 前記1または複数の処理ステージのうちの少なくとも1つは、マルチプレクサまたは複数の論理レジスタオペランドコンパレータを用いないで、複数のシラブルの複数の物理レジスタオペランドを読み取るための読み取りフェーズを実装するレジスタリネーミングロジックを含む、請求項19に記載の装置。
- 前記アウトオブオーダ実行エンジンは、さらに、複数の実行ユニットによる実行のための前記複数のシラブルのスケジューリングに先立って複数のシラブルの間の複数のデータフローの依存性を評価するスケジューラセットアップロジックを含み、前記スケジューラセットアップロジックは、前記レジスタリネーミングロジックの前記読み取りフェーズと並行して実行される、請求項20に記載の装置。
- 前記スケジューラセットアップロジックは、さらに、特定のディスパッチされた複数のシラブルの複数の効果をキャンセルするのに前記アウトオブオーダ実行エンジンにより利用可能なキャンセルセットアップロジックと並行して各シラブル上で動作する、請求項21に記載の装置。
- 前記トランスレータは、最適化コンパイラまたはバイナリトランスレータを含む、請求項19から22のいずれか一項に記載の装置。
- 前記複数のデータフローの依存性は、複数のリードアフタライト(「R−A−W」)依存性を含み、前記複数の偽出力の依存性は、複数のライトアフタライト(「W−A−W」)依存性を含む、請求項19から23のいずれか一項に記載の装置。
- プログラムコードをパブリック命令セットアーキテクチャ(ISA)フォーマットから複数の超長命令語(複数のVLIW)を含むプライベートISAフォーマットに翻訳する段階であり、前記複数のVLIWのそれぞれは、複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性を削除する順序で、前記複数のVLIWにグループ化される前記複数のシラブルを含む、段階と、
他の複数のシラブルと並行して前記複数のシラブルのうちの少なくとも幾つかをアウトオブオーダ実行エンジンにより実行する段階と、を備え、
前記複数のシラブルのうちの少なくとも幾つかは、それらが前記アウトオブオーダ実行エンジンにより受信される前記順序と異なる順番で実行され、前記アウトオブオーダ実行エンジンは、前記複数のシラブルを処理する際に、前記複数のシラブルの間の複数のデータフローの依存性および複数の偽出力の依存性のチェックをしない1または複数の処理ステージを有する、
方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/228,690 US9612840B2 (en) | 2014-03-28 | 2014-03-28 | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
US14/228,690 | 2014-03-28 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016221057A Division JP2017027636A (ja) | 2014-03-28 | 2016-11-11 | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015191660A true JP2015191660A (ja) | 2015-11-02 |
JP6043374B2 JP6043374B2 (ja) | 2016-12-14 |
Family
ID=52630858
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015010321A Expired - Fee Related JP6043374B2 (ja) | 2014-03-28 | 2015-01-22 | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 |
JP2016221057A Ceased JP2017027636A (ja) | 2014-03-28 | 2016-11-11 | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016221057A Ceased JP2017027636A (ja) | 2014-03-28 | 2016-11-11 | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9612840B2 (ja) |
JP (2) | JP6043374B2 (ja) |
KR (1) | KR101754462B1 (ja) |
CN (1) | CN104951281B (ja) |
DE (1) | DE102015002383A1 (ja) |
GB (1) | GB2524619B (ja) |
TW (1) | TWI599949B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019169082A (ja) * | 2018-03-26 | 2019-10-03 | 日本電気株式会社 | プロセッサコア、命令制御方法、プログラム |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436476B2 (en) * | 2013-03-15 | 2016-09-06 | Soft Machines Inc. | Method and apparatus for sorting elements in hardware structures |
US9612840B2 (en) * | 2014-03-28 | 2017-04-04 | Intel Corporation | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
US11561792B2 (en) * | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
KR102276718B1 (ko) * | 2015-11-25 | 2021-07-13 | 삼성전자주식회사 | Vliw 인터페이스 장치 및 제어 방법 |
US20170177542A1 (en) * | 2015-12-16 | 2017-06-22 | Cognitive Systems Corp. | Operating a VLIW Processor in a Wireless Sensor Device |
US11106467B2 (en) * | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
US10552152B2 (en) * | 2016-05-27 | 2020-02-04 | Arm Limited | Method and apparatus for scheduling in a non-uniform compute device |
CN106066434B (zh) * | 2016-05-31 | 2018-10-19 | 国网河北省电力公司电力科学研究院 | 一种电能表自动化检定流水线健康程度评价方法 |
US10445100B2 (en) | 2016-06-09 | 2019-10-15 | International Business Machines Corporation | Broadcasting messages between execution slices for issued instructions indicating when execution results are ready |
US10331454B2 (en) * | 2016-09-29 | 2019-06-25 | Intel Corporation | System and method for load balancing in out-of-order clustered decoding |
CN107977305B (zh) * | 2016-10-24 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 用于检测应用的方法和装置 |
CN106681812B (zh) * | 2016-12-14 | 2020-09-29 | 西北工业大学 | 一种分区调度方法 |
US10318433B2 (en) * | 2016-12-20 | 2019-06-11 | Texas Instruments Incorporated | Streaming engine with multi dimensional circular addressing selectable at each dimension |
US10489204B2 (en) | 2017-01-31 | 2019-11-26 | Samsung Electronics Co., Ltd. | Flexible in-order and out-of-order resource allocation |
US10672175B2 (en) * | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10719325B2 (en) * | 2017-11-07 | 2020-07-21 | Qualcomm Incorporated | System and method of VLIW instruction processing using reduced-width VLIW processor |
US11188337B2 (en) * | 2018-09-28 | 2021-11-30 | The Florida State University Research Foundation, Inc. | Micro-architecture designs and methods for eager execution and fetching of instructions |
KR101996842B1 (ko) * | 2018-12-26 | 2019-07-08 | (주)자람테크놀로지 | 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 |
CN109918134B (zh) * | 2019-03-06 | 2023-05-30 | 湖南科技大学 | 用于vliw基本块调度的组合启发式指令选择优化方法 |
US10956168B2 (en) * | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Post completion execution in an out-of-order processor design |
US10733016B1 (en) * | 2019-04-26 | 2020-08-04 | Google Llc | Optimizing hardware FIFO instructions |
US11392378B2 (en) * | 2019-07-25 | 2022-07-19 | Arm Limited | Executing a set of load operations for a gather-load instruction and controlling handling of another instruction that depends on completion of the gather-load instruction |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
CN111857832B (zh) * | 2020-07-15 | 2023-10-20 | 国家电网有限公司能源互联网技术研究院 | 一种超长指令插入判断方法及系统 |
CN111857823A (zh) * | 2020-07-15 | 2020-10-30 | 北京百度网讯科技有限公司 | 用于写回指令执行结果的装置和方法、处理装置 |
CN112286456B (zh) * | 2020-10-27 | 2022-03-08 | 清华大学 | 存储方法及装置 |
WO2022094964A1 (zh) * | 2020-11-06 | 2022-05-12 | 华为技术有限公司 | 处理指令的方法以及图计算装置 |
CN112463723A (zh) * | 2020-12-17 | 2021-03-09 | 王志平 | 一种微内核阵列的实现方法 |
US20220206793A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor |
US11593110B2 (en) | 2021-01-07 | 2023-02-28 | Texas Instruments Incorporated | Instruction packing scheme for VLIW CPU architecture |
US11775307B2 (en) * | 2021-09-24 | 2023-10-03 | Apple Inc. | Systems and methods for synchronizing data processing in a cellular modem |
CN114925018B (zh) * | 2022-07-22 | 2022-10-21 | 中科声龙科技发展(北京)有限公司 | 片上交叉开关系统及芯片 |
CN118550587A (zh) * | 2024-07-29 | 2024-08-27 | 上海芯联芯智能科技有限公司 | 一种指令编译方法及一种指令处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081884A (en) * | 1998-01-05 | 2000-06-27 | Advanced Micro Devices, Inc. | Embedding two different instruction sets within a single long instruction word using predecode bits |
JP2001306324A (ja) * | 2000-03-30 | 2001-11-02 | Agere Systems Guardian Corp | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US6253309B1 (en) * | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6539471B2 (en) | 1998-12-23 | 2003-03-25 | Intel Corporation | Method and apparatus for pre-processing instructions for a processor |
US6484255B1 (en) * | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US6738893B1 (en) | 2000-04-25 | 2004-05-18 | Transmeta Corporation | Method and apparatus for scheduling to reduce space and increase speed of microprocessor operations |
US6895494B1 (en) | 2000-06-26 | 2005-05-17 | Texas Instruments Incorporated | Sub-pipelined and pipelined execution in a VLIW |
US20020178360A1 (en) * | 2001-02-25 | 2002-11-28 | Storymail, Inc. | System and method for communicating a secure unidirectional response message |
AU2002243655A1 (en) | 2001-01-25 | 2002-08-06 | Improv Systems, Inc. | Compiler for multiple processor and distributed memory architectures |
US6950926B1 (en) | 2001-03-02 | 2005-09-27 | Advanced Micro Devices, Inc. | Use of a neutral instruction as a dependency indicator for a set of instructions |
US20040268098A1 (en) * | 2003-06-30 | 2004-12-30 | Yoav Almog | Exploiting parallelism across VLIW traces |
US7617496B2 (en) * | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
US7752426B2 (en) * | 2004-08-30 | 2010-07-06 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for branch prediction and other processor improvements |
US7412591B2 (en) * | 2005-06-18 | 2008-08-12 | Industrial Technology Research Institute | Apparatus and method for switchable conditional execution in a VLIW processor |
US20070083736A1 (en) | 2005-10-06 | 2007-04-12 | Aravindh Baktha | Instruction packer for digital signal processor |
US8181003B2 (en) * | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
US20110307688A1 (en) * | 2010-06-10 | 2011-12-15 | Carnegie Mellon University | Synthesis system for pipelined digital circuits |
US9612840B2 (en) * | 2014-03-28 | 2017-04-04 | Intel Corporation | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
-
2014
- 2014-03-28 US US14/228,690 patent/US9612840B2/en not_active Expired - Fee Related
-
2015
- 2015-01-20 GB GB1500942.6A patent/GB2524619B/en active Active
- 2015-01-22 JP JP2015010321A patent/JP6043374B2/ja not_active Expired - Fee Related
- 2015-02-16 TW TW104105377A patent/TWI599949B/zh not_active IP Right Cessation
- 2015-02-25 KR KR1020150026821A patent/KR101754462B1/ko active IP Right Grant
- 2015-02-25 DE DE102015002383.7A patent/DE102015002383A1/de active Pending
- 2015-02-28 CN CN201510091809.4A patent/CN104951281B/zh active Active
-
2016
- 2016-11-11 JP JP2016221057A patent/JP2017027636A/ja not_active Ceased
-
2017
- 2017-04-03 US US15/477,374 patent/US10338927B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081884A (en) * | 1998-01-05 | 2000-06-27 | Advanced Micro Devices, Inc. | Embedding two different instruction sets within a single long instruction word using predecode bits |
JP2001306324A (ja) * | 2000-03-30 | 2001-11-02 | Agere Systems Guardian Corp | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 |
Non-Patent Citations (1)
Title |
---|
JPN6016016460; 中森 章: TECH I マイクロプロセッサ・アーキテクチャ入門 Vol.20 第20巻, 20040401, 第60頁右欄第27行-第62頁左欄第28行, CQ出版株式会社 増田 久喜 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019169082A (ja) * | 2018-03-26 | 2019-10-03 | 日本電気株式会社 | プロセッサコア、命令制御方法、プログラム |
JP7102840B2 (ja) | 2018-03-26 | 2022-07-20 | 日本電気株式会社 | プロセッサコア、命令制御方法、プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN104951281B (zh) | 2018-08-24 |
DE102015002383A1 (de) | 2015-10-01 |
JP2017027636A (ja) | 2017-02-02 |
GB201500942D0 (en) | 2015-03-04 |
US9612840B2 (en) | 2017-04-04 |
GB2524619B (en) | 2017-04-19 |
US20150277916A1 (en) | 2015-10-01 |
GB2524619A (en) | 2015-09-30 |
TW201602906A (zh) | 2016-01-16 |
JP6043374B2 (ja) | 2016-12-14 |
US10338927B2 (en) | 2019-07-02 |
US20170300334A1 (en) | 2017-10-19 |
KR101754462B1 (ko) | 2017-07-05 |
KR20150112774A (ko) | 2015-10-07 |
CN104951281A (zh) | 2015-09-30 |
TWI599949B (zh) | 2017-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6043374B2 (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
EP3449359B1 (en) | Out-of-order block-based processors and instruction schedulers | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
US20230106990A1 (en) | Executing multiple programs simultaneously on a processor core | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
WO2017223006A1 (en) | Load-store queue for multiple processor cores | |
EP3350684A1 (en) | Segmented instruction block | |
US9904553B2 (en) | Method and apparatus for implementing dynamic portbinding within a reservation station | |
US20130339711A1 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
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 | |
EP3746883B1 (en) | Processor having multiple execution lanes and coupling of wide memory interface via writeback circuit | |
US11126438B2 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
EP4202664B1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
CN114489808A (zh) | 高置信度多分支偏移预测器 | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 | |
Mohammadi | Energy-Efficient Coarse-Grain Out-of-Order Execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160510 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160804 |
|
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: 20160913 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20161012 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161111 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6043374 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |