特許第6796717号(P6796717)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特許6796717-分岐ターゲットバッファの圧縮 図000002
  • 特許6796717-分岐ターゲットバッファの圧縮 図000003
  • 特許6796717-分岐ターゲットバッファの圧縮 図000004
  • 特許6796717-分岐ターゲットバッファの圧縮 図000005
  • 特許6796717-分岐ターゲットバッファの圧縮 図000006
  • 特許6796717-分岐ターゲットバッファの圧縮 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6796717
(24)【登録日】2020年11月18日
(45)【発行日】2020年12月9日
(54)【発明の名称】分岐ターゲットバッファの圧縮
(51)【国際特許分類】
   G06F 9/38 20060101AFI20201130BHJP
【FI】
   G06F9/38 330B
【請求項の数】20
【全頁数】18
(21)【出願番号】特願2019-532918(P2019-532918)
(86)(22)【出願日】2016年9月13日
(65)【公表番号】特表2019-526873(P2019-526873A)
(43)【公表日】2019年9月19日
(86)【国際出願番号】US2016051527
(87)【国際公開番号】WO2018044333
(87)【国際公開日】20180308
【審査請求日】2019年8月29日
(31)【優先権主張番号】15/252,164
(32)【優先日】2016年8月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スティーブン アール. ハヴリール
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2013−004101(JP,A)
【文献】 米国特許出願公開第2012/0324209(US,A1)
【文献】 特表2008−535063(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
分岐ターゲットバッファデータを操作する方法であって、
ルックアップタグを圧縮分岐ターゲットバッファ及び非圧縮分岐ターゲットバッファに提供することであって、前記非圧縮分岐ターゲットバッファは、2つ以上の分岐に関するデータを含むエントリを記憶するように構成されており、前記圧縮分岐ターゲットバッファは、単一の分岐のみに関するデータをそれぞれ含むエントリを記憶するように構成されている、ことと、
前記ルックアップタグに基づいて、前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファの一方又は両方から分岐ターゲットバッファエントリを識別することと、
分岐を予測するために、前記分岐ターゲットバッファエントリに対応するデータを分岐予測ロジックに出力することと、を含む、
方法。
【請求項2】
前記ルックアップタグは、分岐予測のために検査されたキャッシュラインのキャッシュラインアドレスに関連する値を含み、
前記非圧縮分岐ターゲットバッファは、同じキャッシュラインアドレスを共有する分岐に関するエントリを記憶するように構成されている、
請求項1の方法。
【請求項3】
前記圧縮分岐ターゲットバッファは、1つ以上の属性が圧縮されているエントリを記憶するように構成されており、
前記非圧縮分岐ターゲットバッファは、属性が圧縮されていないエントリを記憶するように構成されている、
請求項1の方法。
【請求項4】
前記非圧縮分岐ターゲットバッファのエントリは、第1属性フィールドに対する第1属性値を含み、
前記圧縮分岐ターゲットバッファのエントリは、前記第1属性フィールドに対する属性値を含まず、
前記圧縮分岐ターゲットバッファの全てのエントリは、前記第1属性フィールドに対して同じ値を有する、
請求項1の方法。
【請求項5】
前記非圧縮分岐ターゲットバッファのエントリについての第1属性フィールドは、エントリがキャッシュライン内で最後に予測された分岐である分岐に関するデータを含むかどうかを示すラストインキャッシュラインフィールドを含み、
前記圧縮分岐ターゲットバッファの全てのエントリは、キャッシュライン内で最後に予測された分岐である分岐に関するデータを記憶するが、前記ラストインキャッシュラインフィールドを含まないように構成されている、
請求項1の方法。
【請求項6】
前記分岐ターゲットバッファエントリを識別することは、
前記圧縮分岐ターゲットバッファ又は前記非圧縮分岐ターゲットバッファ内の複数の分岐ターゲットバッファエントリが前記ルックアップタグとタグを共有していることを検出することを含み、
前記方法は、出力のために、前記複数の分岐ターゲットバッファエントリのうち1つを選択することをさらに含む、
請求項1の方法。
【請求項7】
前記1つ以上の分岐ターゲットバッファエントリのうち1つが選択される第1サイクルに続く処理サイクルにおいて、出力のために、前記複数の分岐ターゲットバッファエントリのうち第2分岐ターゲットバッファエントリを選択することをさらに含む、
請求項6の方法。
【請求項8】
単一の分岐のみに関するデータをそれぞれ含むエントリを記憶するように構成された圧縮分岐ターゲットバッファと、
2つ以上の分岐に関するデータを含むエントリを記憶するように構成された非圧縮分岐ターゲットバッファと、を備え、
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファの両方は、
提供されたルックアップタグに基づいて、1つ以上の分岐ターゲットバッファエントリを識別することと、
分岐を予測するために、識別された前記1つ以上の分岐ターゲットバッファエントリに対応するデータを予測ロジックに出力することと、
を行うように構成されている、
分岐予測ユニット。
【請求項9】
前記ルックアップタグは、分岐予測のために検査されたキャッシュラインのキャッシュラインアドレスに関連する値を含み、
前記非圧縮分岐ターゲットバッファは、同じキャッシュラインアドレスを共有する分岐に関するエントリを記憶するように構成されている、
請求項8の分岐予測ユニット。
【請求項10】
前記圧縮分岐ターゲットバッファは、1つ以上の属性が圧縮されているエントリを記憶するように構成されており、
前記非圧縮分岐ターゲットバッファは、属性が圧縮されていないエントリを記憶するように構成されている、
請求項8の分岐予測ユニット。
【請求項11】
前記非圧縮分岐ターゲットバッファのエントリは、第1属性フィールドに対する第1属性値を含み、
前記圧縮分岐ターゲットバッファのエントリは、前記第1属性フィールドに対する属性値を含まず、
前記圧縮分岐ターゲットバッファの全てのエントリは、前記第1属性フィールドに対して同じ値を有する、
請求項8の分岐予測ユニット。
【請求項12】
前記非圧縮分岐ターゲットバッファのエントリについての第1属性フィールドは、エントリがキャッシュライン内で最後に予測された分岐である分岐に関するデータを含むかどうかを示すラストインキャッシュラインフィールドを含み、
前記圧縮分岐ターゲットバッファの全てのエントリは、キャッシュライン内で最後に予測された分岐である分岐に関するデータを記憶するが、前記ラストインキャッシュラインフィールドを含まないように構成されている、
請求項8の分岐予測ユニット。
【請求項13】
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファは、前記圧縮分岐ターゲットバッファ又は前記非圧縮分岐ターゲットバッファ内の複数の分岐ターゲットバッファエントリが前記ルックアップタグとタグを共有していることを検出することによって、前記1つ以上の分岐ターゲットバッファエントリを識別することを行うように構成されており、
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファは、出力のために、前記複数の分岐ターゲットバッファエントリのうち1つを選択するように構成されている、
請求項8の分岐予測ユニット。
【請求項14】
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファは、前記1つ以上の分岐ターゲットバッファエントリのうち1つが選択される第1サイクルに続く処理サイクルにおいて、出力のために、前記複数の分岐ターゲットバッファエントリのうち第2分岐ターゲットバッファエントリを選択することをさらに行うように構成されている、
請求項13の分岐予測ユニット。
【請求項15】
分岐予測結果を出力するように構成された分岐予測ユニットと、
前記分岐予測結果に基づいて、実行するための命令を出力するように構成された命令フェッチユニットと、
前記命令フェッチユニットから出力された命令を実行するように構成された命令実行パイプラインと、を備え、
前記分岐予測ユニットは、
単一の分岐のみに関するデータをそれぞれ含むエントリを記憶するように構成された圧縮分岐ターゲットバッファと、
2つ以上の分岐に関するデータを含むエントリを記憶するように構成された非圧縮分岐ターゲットバッファと、を備え、
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファの両方は、
提供されたルックアップタグに基づいて、1つ以上の分岐ターゲットバッファエントリを識別することと、
分岐を予測するために、識別された前記1つ以上の分岐ターゲットバッファエントリに対応するデータを予測ロジックに出力することと、
を行うように構成されている、
プロセッサ。
【請求項16】
前記ルックアップタグは、分岐予測のために検査されたキャッシュラインのキャッシュラインアドレスに関連する値を含み、
前記非圧縮分岐ターゲットバッファは、同じキャッシュラインアドレスを共有する分岐に関するエントリを記憶するように構成されている、
請求項15のプロセッサ。
【請求項17】
前記圧縮分岐ターゲットバッファは、1つ以上の属性が圧縮されているエントリを記憶するように構成されており、
前記非圧縮分岐ターゲットバッファは、属性が圧縮されていないエントリを記憶するように構成されている、
請求項15のプロセッサ。
【請求項18】
前記非圧縮分岐ターゲットバッファのエントリは、第1属性フィールドに対する第1属性値を含み、
前記圧縮分岐ターゲットバッファのエントリは、前記第1属性フィールドに対する属性値を含まず、
前記圧縮分岐ターゲットバッファの全てのエントリは、前記第1属性フィールドに対して同じ値を有する、
請求項15のプロセッサ。
【請求項19】
前記非圧縮分岐ターゲットバッファのエントリについての第1属性フィールドは、エントリがキャッシュライン内で最後に予測された分岐である分岐に関するデータを含むかどうかを示すラストインキャッシュラインフィールドを含み、
前記圧縮分岐ターゲットバッファの全てのエントリは、キャッシュライン内で最後に予測された分岐である分岐に関するデータを記憶するが、前記ラストインキャッシュラインフィールドを含まないように構成されている、
請求項15のプロセッサ。
【請求項20】
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファは、前記圧縮分岐ターゲットバッファ又は前記非圧縮分岐ターゲットバッファ内の複数の分岐ターゲットバッファエントリが前記ルックアップタグとタグを共有していることを検出することによって、前記1つ以上の分岐ターゲットバッファエントリを識別することを行うように構成されており、
前記圧縮分岐ターゲットバッファ及び前記非圧縮分岐ターゲットバッファは、出力のために、前記複数の分岐ターゲットバッファエントリのうち1つを選択するように構成されている、
請求項15のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2016年8月30日に出願された米国特許出願第15/252,164号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
【背景技術】
【0002】
マイクロプロセッサでは、命令は、分岐が発生するまで順次実行するためにフェッチされる。分岐は、命令がフェッチされるアドレスの変更を生じさせ、命令フェッチスループットの遅延に関連する場合がある。例えば、分岐が成立するかどうかを判別すると共に分岐先を判別するために当該分岐の評価を要する場合がある。しかしながら、分岐が実際に命令実行パイプラインに入るまで当該分岐を評価することができない。分岐の遅延は、分岐がフェッチされる時間と、その分岐の結果を判別し、これにより何れの命令が次にフェッチされる必要があるかを判別するために分岐を評価する時間と、の間の差に関連している。
【0003】
分岐予測は、命令アドレス及び分岐評価履歴に基づいて分岐命令の存在及び結果を予測することによって、この遅延を軽減するのに役立つ。分岐予測技術は、分岐条件付き判別(例えば、成立する又は成立しない)のグローバル履歴及び最新のプログラムカウンタ値を使用して、分岐が存在するかどうか及び分岐が成立するかどうかの予測を行う。分岐ターゲットバッファは、プログラムカウンタアドレスを分岐ターゲットと関連付ける情報を記憶する。分岐ターゲットバッファ内にエントリが存在することは、当該エントリに関連するプログラムカウンタに分岐が存在することを暗黙的に示している。分岐予測子は、分岐予測判別を行うために、グローバル履歴及び分岐ターゲットバッファデータを使用することができる。分岐命令に関連する遅延のために、効率的な分岐予測及び好適に設計された分岐予測ロジックが、マイクロプロセッサ設計において重要である。
【0004】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【0005】
図1】1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。
図2図1のプロセッサ内に配置された命令実行パイプラインのブロック図である。
図3】例示的な分岐予測ユニットを示すブロック図である。
図4】一例による、非圧縮分岐ターゲットバッファ及び圧縮分岐ターゲットバッファの両方のエントリを示す図である。
図5】一例による、圧縮分岐ターゲットバッファ及び非圧縮分岐ターゲットバッファを使用して分岐ターゲット予測データを取得する方法のフロー図である。
図6】一例による、非圧縮分岐ターゲットバッファ及び圧縮分岐ターゲットバッファを更新する方法のフロー図である。
【発明を実施するための形態】
【0006】
圧縮分岐ターゲットバッファは、非圧縮分岐ターゲットバッファと共に分岐予測ユニットに含まれる。サイクル毎に最大2つの分岐命令の予測をサポートするために、非圧縮分岐ターゲットバッファは、最大2つの分岐予測に関するデータをそれぞれ記憶するエントリを含む。圧縮分岐ターゲットバッファは、単一の分岐命令を非圧縮分岐ターゲットバッファに記憶することが当該バッファ内のスペースを無駄にするような状況のために、単一の分岐命令のみに関するデータを記憶するエントリを含む。2つの分岐に関する予測データが、単一のエントリに共に記憶されるために共通する特定の機能(キャッシュラインアドレス等)を有する必要があるという事実に起因して、非圧縮分岐ターゲットバッファ内のスペースが無駄になる。ある分岐が他の分岐とかかる機能を共有していない場合、当該分岐は、非圧縮分岐ターゲットバッファ内に独自のエントリを必要とする。代わりに、その分岐は、圧縮分岐ターゲットバッファに記憶される。
【0007】
図1は、本開示の態様が実施される例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。デバイス100は、図1に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【0008】
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサを含み、各プロセッサコアはCPU又はGPUである。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
【0009】
ストレージデバイス106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。
【0010】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合であっても同様に動作することに留意されたい。
【0011】
図2は、図1のプロセッサ102内に配置された命令実行パイプライン200のブロック図である。命令実行パイプライン200は、データをメモリに出力し、命令実行パイプライン200内の要素(例えば、レジスタファイル218内のレジスタ等)の状態を変更する命令をメモリから取り出して実行する。
【0012】
命令実行パイプライン200は、命令キャッシュ202を介してシステムメモリ(メモリ104等)から命令をフェッチするように構成された命令フェッチユニット204と、フェッチされた命令をデコードするように構成されたデコーダ208と、命令を処理するための計算を実行するように構成された機能ユニット216と、データキャッシュ220を介してシステムメモリからデータをロードし、システムメモリにデータを記憶するように構成されたロード/ストアユニット214と、命令に対する作業データを記憶するレジスタを含むレジスタファイル218と、を含む。リオーダ(reorder)バッファ210は、現在インフライトの命令を追跡し、インフライトの間にアウトオブオーダの実行を許容するにも関わらず命令のインオーダリタイアメントを保証する。「インフライト」命令は、リオーダバッファ210によって受信されたが、プロセッサのアーキテクチャの状態にコミットされた結果(例えば、レジスタファイルに書き込まれた結果等)を未だ有していない命令を指す。予約ステーション212は、インフライト命令を維持し、命令オペランドを追跡する。全てのオペランドが特定の命令の実行のために準備されている場合に、予約ステーション212は、命令を、実行するために機能ユニット216又はロード/ストアユニット214に送信する。完了した命令は、リオーダバッファ210へのリタイアメント(退避)のためにマークされ、リオーダバッファキュー210の先頭にある場合にリタイアされる。リタイアメントは、命令の結果をプロセッサのアーキテクチャの状態にコミットする動作を指す。例えば、加算命令によって、加算結果をレジスタに書き込むことと、ロード命令によって、ロードされた値をレジスタに書き込むことと、又は、分岐命令によって、命令フローを新たな位置にジャンプさせることと、の全ては、命令のリタイアメントの例である。
【0013】
命令実行パイプライン200の様々な要素は、共通データバス222を介して通信する。例えば、機能ユニット216及びロード/ストアユニット214は、依存命令の実行のために予約ステーション212によって読み出され得る結果であって、実行が終了したインフライト命令の最終的な処理結果としてリオーダバッファ210によって読み出され得る結果を、共通データバス222に書き込む。また、ロード/ストアユニット214は、共通データバス222からデータを読み出す。例えば、ロード/ストアユニット214は、完了した命令の結果を共通データバス222から読み出し、ストア命令に対して、当該結果を、データキャッシュ220を介してメモリに書き込む。
【0014】
通常、命令フェッチユニット204は、メモリ内の命令をシーケンシャルフェッチする。シーケンシャル制御フローは、命令パイプライン200に非シーケンシャルアドレスから命令をフェッチさせる分岐命令によって中断されることがある。分岐命令は、条件付きであってもよく、特定の条件が満たされる場合にのみ分岐を生じさせてもよいし、条件付きでなくてもよく、ターゲットを直接又は間接的に指定してもよい。直接的なターゲットは、命令バイト自体の定数によって指定され、間接的なターゲットは、何等かの計算によって指定される。直接的な分岐及び間接的な分岐は、条件付きであってもよいし、条件付きでなくてもよい。
【0015】
命令のシーケンシャルフェッチは、命令実行パイプライン200にとって比較的単純である。命令フェッチユニット204は、実行のために連続して記憶された命令の大部分をシーケンシャルフェッチする。しかしながら、分岐命令は、いくつかの理由でかかるフェッチを中断することがある。より具体的には、分岐命令のタイプに応じて、命令デコーダ208が、命令が実際には分岐命令であると判別することと、機能ユニット216が、分岐命令のターゲットを計算することと、機能ユニット216が、分岐命令の条件を評価することと、のうち何れか又は全てが分岐命令の実行に関して行われてもよい。命令フェッチユニット204による実行のために分岐命令がフェッチ及び発行されるときと、分岐命令が命令実行パイプライン200によって実際に実行されるときと、の間に遅延が存在するので、命令フェッチユニット204は、分岐予測ユニット206を含む。
【0016】
分岐予測ユニット206は、フェッチされる命令のアドレスに基づいて分岐条件付き予測(例えば、成立する又は成立しない)及び分岐ターゲット予測を生成する。分岐予測ユニット206は、様々な既知の技術の何れかを介して維持及び操作された分岐条件付き履歴と、命令プログラムカウンタを分岐ターゲットアドレスと相関させる分岐ターゲット履歴と、を使用することができる。分岐予測ユニット206は、予測された分岐を検出し、予測された分岐の予測されたターゲットアドレスを識別し、ターゲットパスが成立したと予測すると、予測されたターゲットアドレスからの命令のフェッチを命令フェッチユニット204に開始させる。したがって、分岐予測ユニット206は、分岐命令の結果として生じる遅延を減らすのに役立つ。
【0017】
分岐は、分岐予測ユニット206によって予測されるが、このような予測は不正確である可能性がある。したがって、分岐命令は、依然として、実行のために残りの命令実行パイプライン200に送信される。分岐予測が正確であると判別されると、プロセッサ命令フローは修正されない。しかしながら、分岐予測が不正確(予測ミス)であると判別されると、命令実行パイプライン状態をリセットすることと、分岐予測ユニット206によって記憶された分岐予測データを修正することと、を含む是正措置がもたらされる。
【0018】
より具体的には、命令実行パイプライン200が分岐命令を実行し、その結果を分岐予測と比較することによって、予測ミスが検出される。命令実行パイプライン200は、分岐が予測ミスであるという判別を行うと、プログラムカウンタを含むプロセッサ状態を修正し、この修正されたプログラムカウンタに基づいて命令のフェッチを開始する。プロセッサ状態を修正することは、予測ミスの分岐命令に関連する制御フローパスからのインフライト命令をフラッシュすることと、予測ミスの制御フローパスに関連する命令を把握するために他のパイプライン状態データを元に戻すことと、を含む場合があり、性能が大幅に低下する可能性がある。このため、正確な分岐予測は、全体的な処理性能を向上させる。
【0019】
図3は、例示的な分岐予測ユニット206を示すブロック図である。図示するように、分岐予測ユニット206は、条件付き予測器304と、非圧縮分岐ターゲットバッファ(BTB)310と、圧縮BTB312と、グローバル履歴メモリ308と、予測器306と、を含む。圧縮BTB312及び非圧縮BTB310は、共にBTB302を含む。
【0020】
分岐予測ユニット206のユニットは、協働して、検査中の分岐命令の結果を予測し、予測された分岐結果に基づいて、命令フェッチのために予測されたアドレスを命令フェッチユニット204に提供する。予測器306から出力された予測情報は、次の命令をフェッチするための予測アドレスと、条件付き分岐が成立するか否かを表す予測条件付き判別と、を含む。予測器306は、更なる予測のために、アドレス及び条件付き判別を、グローバル履歴メモリ308と、条件付き予測器304と、非圧縮BTB310と、圧縮BTB312と、に提供する。グローバル履歴308は、予測情報に基づいて分岐予測履歴の内部記憶を更新し、グローバル履歴値を条件付き予測器304に出力する。また、条件付き予測器304は、条件付き予測を提供するために、予測された次のアドレスを予測器306から受信する。条件付き予測器304は、任意の既知の技術に従って条件付き予測を提供してもよい。一例では、条件付き予測器304は、BTB312内のエントリに基づいて、特定の命令が分岐命令であると予測されることを識別し、グローバル履歴メモリ308からグローバル分岐履歴ビット値を取得し、予測アルゴリズムに基づいてグローバル分岐履歴ビット値のビットを処理し、処理されたビットに基づいて予測結果を取得する。また、予測された次のアドレスは、命令ストリーム内の分岐命令の識別及びこれらの分岐命令の予測されたターゲットアドレスの判別のために、非圧縮BTB310及び圧縮BTB312にも並列に提供される。
【0021】
非圧縮BTB310は、高い予測スループットをサポートするために、サイクル毎に最大2つの分岐のルックアップを可能にする。この機能は、最大2つの分岐についてのデータを、非圧縮BTB310の各エントリに含めることによって実現される。より具体的には、非圧縮BTB310内のエントリは、命令キャッシュラインアドレスによってタグ付けされる。よって、単一の提供された命令キャッシュラインアドレスに対するヒットは、最大2つの予測された分岐ターゲット及び分岐命令であると予測された2つの命令がサイクル毎に提供されることを可能にする。しかしながら、非圧縮BTB310内の単一のエントリが、2つ以上の予測された分岐命令についてのデータを記憶することができない状況が存在する場合がある。例えば、キャッシュラインが1つの分岐命令のみを含む場合、(キャッシュラインアドレスによってタグ付けされた)BTBエントリは、1つの分岐命令についてのデータのみを含むことができる。このような状況では、第2の予測された分岐命令に対応するエントリ内の追加のスペースが無駄になる。
【0022】
したがって、圧縮BTB312も含まれる。圧縮BTB312は、単一の分岐予測ターゲットのみについてのデータサイズのエントリを含む。したがって、圧縮BTB312内のエントリは、非圧縮BTB310内のエントリ全体を満たすのに十分な分岐ターゲット予測データが特定のキャッシュラインに対して存在しない場合に使用されてもよい。圧縮BTB312内のエントリは、非圧縮BTB310と同様に、分岐予測が実行されているキャッシュラインのキャッシュラインアドレスを使用してルックアップされる。
【0023】
非圧縮BTB310に記憶されることになる分岐属性データの1つ以上の項目を圧縮することによって、圧縮BTB312内のエントリにおける追加のスペースを節約することができる。いくつかの例では、この圧縮は、特定の属性についての「一般的な場合(common case)」の値を想定することによって達成される。一般的な場合と一致しない全ての分岐命令を圧縮BTB312内に記憶することができず、圧縮BTB312内の対応するエントリを有する全ての分岐命令は、一般的な場合の値を有すると想定される。また、圧縮は、特定の数のビットを必要とする値を、より少ないビットを必要とする他の値に置き換えることによって、又は、2つ以上の独立した属性フィールドを、2つ以上の独立した属性フィールドの共通の組み合わせを示す共有フィールドに変換することによって、より複雑な方法で実現することができる。ここで、共有フィールドは、独立した属性フィールドよりも少ないビットを有する。「一般的」とみなされる属性値のみを圧縮BTB312に記憶することが許可され、一般的でない(非一般的な)属性値を有する分岐の分岐予測データは、非圧縮BTB310に記憶される。単一の圧縮BTB312のみが示されているが、分岐予測ユニット206は、代替的に、それぞれ異なる圧縮スキームを有する複数の圧縮BTBを含んでもよい。例えば、1つの圧縮BTB内のエントリの属性は、1つの特定の値を有すると想定することができ、別の圧縮BTB内のエントリの属性は、異なる特定の値を有すると想定することができる。圧縮スキームは、他の点で異なっていてもよい。
【0024】
「非一般的な属性値」を有するために圧縮することができないエントリに加えて、他のタイプの1つのエントリを圧縮BTB312に記憶することができない。より具体的には、いくつかの分岐ターゲットバッファエントリは、「ラージ(large)」分岐ターゲットバッファエントリとみなされる。ラージエントリは、短縮されたターゲットアドレスではなく、完全な長さのターゲットアドレスを含むエントリである。より具体的には、分岐命令は、通常、分岐命令自体のアドレスに比較的近いターゲットを有する。したがって、分岐命令のターゲットは、フルアドレスサイズよりも少ないビット数で分岐ターゲットバッファに記憶することができる。しかしながら、分岐命令が分岐命令のアドレスから十分に離れたターゲットを有する場合、分岐ターゲットバッファは、より多数のアドレスビットを記憶する必要がある。記憶に必要なビット数が多いので、このようなタイプの分岐命令は、非圧縮BTB310に記憶され、圧縮BTB312に記憶することができない。
【0025】
圧縮BTB312及び非圧縮BTB310は、分岐予測の目的で現在検査されているキャッシュラインのキャッシュラインアドレスによってインデックスされたキャッシュとして具現化することができる。一例では、圧縮BTB312及び非圧縮BTB310は、nウェイのアソシアティブキャッシュを形成し、nウェイの第1の番号は、圧縮BTB312を含み、nウェイの別の番号は、非圧縮BTB310を含む。よって、キャッシュラインアドレスをタグとして提供し、更なる処理のために非圧縮BTB312又は圧縮BTB310の何れかから一致するエントリを識別することによって、非圧縮BTB310及び圧縮BTB312上で並行してルックアップを実行することができる。所定のタグに対して複数のエントリが存在する場合、競合するルックアップは、分岐予測のために単一のエントリからのデータの選択及び出力をもたらす。最新のすっくアップの全ての分岐が成立しないと予測される場合、残りのデータを取得するために、次のサイクルで同じキャッシュラインがルックアップされる。このシーケンシャルルックアップは、所定のキャッシュラインに対して更なるエントリが存在しなくなるまで、別のキャッシュラインへの分岐が発生すると予測されるまで、又は、PC若しくは予測されたPCが何らかの理由で変更するまで続く。
【0026】
図4は、一例による、非圧縮BTB310及び圧縮BTB312の両方のエントリを示す図である。シングル分岐(圧縮)BTBエントリ402と、ダブル分岐(非圧縮)BTBエントリ404と、シングル分岐ラージターゲット(非圧縮)BTBエントリ406と、が示されている。
【0027】
シングル分岐(圧縮)BTBエントリ402は、タグと、圧縮属性と、タイプと、オフセットと、ターゲットと、を含む。タグは、分岐命令が見つかったキャッシュラインのアドレスである。圧縮属性は、圧縮属性値を含む。上述したように、属性データを省略することによっていくつかの属性を圧縮することができるので、圧縮BTB312内の何れかのエントリについての対応する属性は、その属性について特定の値を有すると想定される。属性に対応するビット数を減らし、特定の属性値を有する予測された分岐に対応する分岐予測データを圧縮BTB312に記憶するのを可能にすることのみによって、他の属性を圧縮することができる。2つの属性フィールドを、2つの異なる属性に対する値の特定の組み合わせに対応する値を有する共有属性フィールドに組み合わせることによって、更に他の属性を圧縮することができる。
【0028】
タイプフィールドは、分岐のタイプを記憶する。タイプフィールドのいくつかの例は、分岐が非条件付きジャンプ、条件付きジャンプ、間接呼び出し、呼び出し、リターン、又は、間接ジャンプであることの指標を含む。
【0029】
オフセットフィールドは、分岐命令が見つかったキャッシュライン内の位置を示す。ターゲットフィールドは、分岐命令の予測されたターゲットアドレスを示す。上記のように、ターゲットフィールドは、分岐が通常近くにターゲットを有しているので、ターゲットのフルアドレスよりも短くてもよい。実際に、圧縮BTB312内の全てのエントリは、このような短縮されたターゲットを記憶する。エントリが、短くないターゲットフィールド(すなわち、「ラージターゲット」である)を必要とする場合、当該エントリは、ラージターゲットBTBエントリ406として非圧縮BTB310に記憶される。
【0030】
ダブル分岐BTBエントリ404は、2つの分岐についてのデータを含む。ダブル分岐BTBエントリ404には1つのタグのみが存在するので、これらの2つの分岐は、両方とも同じキャッシュライン内で見つかることに留意されたい。また、ダブル分岐BTBエントリ404内のデータは、非圧縮方式で記憶される。より具体的には、各属性のデータは明示的に記憶され、タイプフィールドは圧縮されず、圧縮BTB312内で圧縮される他のデータは圧縮されない。また、ダブル分岐BTBエントリ404は、2つの記憶された分岐ターゲット毎に1つのタイプフィールド及び1つのオフセットフィールドを含む。
【0031】
よって、圧縮BTB312内のエントリから省略されるビットが含まれ、圧縮される値が非圧縮方式で記憶され、共有フィールドが個々のフィールドに分割される。圧縮BTB312内で圧縮又は共有することができるタイプフィールドは、ダブル分岐BTBエントリ404では圧縮されていない。
【0032】
ラージターゲットBTBエントリ406は、シングル分岐ターゲットについてのタグと、属性と、タイプフィールドと、シングルラージターゲットフィールドと、を全て非圧縮方式で記憶する。ラージターゲットBTBエントリ406は、ラージターゲットBTBエントリ406が、1つの分岐のみについてのデータを含み、ターゲット値がダブル分岐BTBエントリ404内のターゲットフィールドよりも大きく、多くのビットを含むことを除いて、ダブル分岐BTBエントリ404と同様である。
【0033】
いくつかの例示的な属性圧縮について説明する。これらの圧縮のいくつかが、「属性」フィールドに加えて「タイプ」フィールドを含んでもよいことに留意されたい。圧縮することができる属性の一例は、ラストインキャッシュラインフィールド(LICフィールド)である。このフィールドは、特定のエントリが、特定のキャッシュライン内の最後の分岐である分岐についてのデータを記憶しているかどうかを示している。このフィールドの目的は、特定のBTBエントリを取得した後に、次のサイクルで分岐についての特定のキャッシュラインをスキャンし続けるかどうか、又は、当該特定のキャッシュラインに更なる分岐が残っていないことを理由に、次のサイクルで次のキャッシュラインに進むかどうかを分岐予測ユニット206に知らせるのを可能にすることである。
【0034】
一般的な場合では、特定のキャッシュラインに多数の分岐があることは稀であることから、LICフィールドの値は、特定の分岐がキャッシュラインの最後の分岐であることを示している。よって、圧縮BTB内のエントリは、キャッシュライン内の最後の分岐命令であるという、この一般的な場合であると想定される。BTBエントリがラストインキャッシュライン分岐を含まない場合、当該BTBエントリは、非圧縮BTBエントリとして非圧縮BTB310に記憶される必要がある。しかしながら、エントリがラストインキャッシュライン分岐である分岐を含み、そうでなければ当該エントリを圧縮BTB312に記憶することができる場合、圧縮BTB312に対してこのようなエントリが生成され、LICフィールドには値が含まれない。圧縮BTB312内の全てのエントリは、ラストインキャッシュライン分岐を包むと想定される。(「ラストインキャッシュライン」という用語は、キャッシュライン内の最後に予測された分岐を意味することに留意されたい)。
【0035】
別の例示的な圧縮技術は、有効フィールドを圧縮し、タイプフィールド内の特定の値を使用して無効エントリを示すことである。分岐のタイプを示すタイプフィールドは、複数の値のうち1つの値を有することができる。特定の分岐タイプは、レアであるとみなされる。圧縮BTB312では、1つのレアタイプを示す代わりに、1つのレアタイプの値を有するタイプフィールドが、当該エントリが無効であることを代わりに示す。レアタイプを有する分岐を、圧縮BTB312に記憶することができず、代わりに、非圧縮BTB310に記憶する必要がある。
【0036】
よって、有効フィールドは、圧縮BTBエントリ内で完全に省略されてもよい。より具体的には、非圧縮BTBエントリでは、有効フィールドは、予測された分岐データの1つのセットのみが有効であるかどうか、両方のセットが有効であるかどうか、エントリがラージターゲット分岐に対するものであるかどうか、又は、エントリ全体が無効であるかどうかを示すことができる。圧縮BTBエントリが2つの分岐についてのデータを記憶することができず、ラージターゲット分岐についてのデータも記憶することができないので、これらのエントリタイプの「有効フィールド」の符号化は不要である。圧縮BTBエントリに対して行う必要がある唯一の差は、有効と無効との間である。上記のように、無効エントリは、特定のタイプフィールド符号化によって示される。よって、無効フィールドを示さないタイプフィールド符号化は、エントリが有効であることを示す。このため、圧縮BTBエントリに対して別の有効フィールドが必要とされない。有効フィールド符号化は、上述した共有フィールド圧縮の一例であり、タイプフィールド及び有効フィールドが単一の共有タイプ/有効フィールドに圧縮されることに留意されたい。
【0037】
圧縮可能なフィールドの別の例は、スレッド間共有フィールドである。非圧縮BTB310では、スレッド間共有フィールドは、特定のエントリが命令実行パイプライン200内で実行中の2つのスレッド間で共有されていることを示すために使用される。実行中、実行パイプライン200は、異なるスレッドからの命令を処理し、当該命令(分岐を含む)が何れのスレッドに属しているかを追跡してもよい。共有実行モードでは、2つのスレッドが協働して、同じ命令セットを実行することができる。分岐予測ユニット206では、共有実行モードで実行している2つのスレッドがBTBエントリを共有し、これにより、エントリが2つのスレッドについて重複しない。共有実行が一般的ではないので、スレッド間共有フィールドが圧縮BTB312内で圧縮されてもよい。よって、圧縮BTB312内のエントリに対して共有ビットが記憶されない。代わりに、圧縮BTB312内の全てのエントリは、非共有であると想定される。共有分岐のエントリは、非圧縮BTB310に記憶される。
【0038】
上記の圧縮は一例に過ぎない。本明細書で説明する技術の異なる実装形態は、他の属性を圧縮してもよいし、及び/又は、上記の属性を異なる方法で圧縮してもよい。
【0039】
データを圧縮BTB312に書き込むために、属性ビットを圧縮又は除去するロジックが分岐予測ユニット206に含まれる。同様に、圧縮BTB312からデータを読み出すために、属性ビットを復元又は圧縮解除するロジックが分岐予測ユニット206に含まれる。
【0040】
タグがキャッシュラインアドレスであると説明したが、これは、タグのフォーマットの一例に過ぎない。タグは、キャッシュラインアドレスの一部のみを含んでもよいし、データがBTBに記憶される予測された分岐のキャッシュラインアドレスに関連するか関連しない他の何等かの値であってもよい。
【0041】
図5は、一例による、圧縮及び非圧縮分岐ターゲットバッファを使用して分岐ターゲット予測データを取得する方法500のフロー図である。図1図4に関して示されたシステムに関して説明したが、技術的に実行可能な順序で方法を実行するように構成された任意のシステムが本開示の範囲内にあることを理解されたい。
【0042】
図示するように、方法500は、ステップ502において開始し、予測器306は、ルックアップのために次のアドレスを識別する。この次のアドレスは、分岐予測を検査するために次のキャッシュラインのキャッシュラインアドレスを含む。予測器306は、前の分岐予測演算に基づいて、このキャッシュラインアドレスを識別する。例えば、予測器306が、分岐が成立したと以前に予測し、当該分岐についての予測されたターゲットアドレスを取得した場合、予測器306は、分岐ターゲットのキャッシュラインに対応するキャッシュラインを提供する。予測器306が、分岐が成立していないと以前に予測していた場合、予測器306は、予測のために検査される次の順次キャッシュラインのアドレスを提供する。圧縮BTB312及び非圧縮BTB310内の単一のキャッシュラインについて複数のヒットがあるために、現在のキャッシュラインが依然として予測について検査されている場合、予測器306は、現在のキャッシュラインのアドレスを提供する。
【0043】
ステップ504において、非圧縮BTB310及び圧縮BTB312は、予測器306からキャッシュラインアドレスを受信する。キャッシュラインアドレスは、圧縮BTB312及び非圧縮BTB310内のエントリをルックアップするためのタグとして機能する。ステップ506において、非圧縮BTB310及び圧縮BTB312は、タグと一致するエントリを識別し、更なる処理のために当該エントリを予測器306に提供する。上述したように、非圧縮BTB310及び圧縮BTB312は、非圧縮BTB310及び圧縮BTB312によって共に構成されるnウェイアソシアティブキャッシュの異なるウェイに対応する。よって、タグを、同じサイクルにおいて、非圧縮BTB310及び圧縮BTB312の両方に並列して提供することができる。ヒットが発生しない場合、非圧縮BTB310も圧縮BTB312もルックアップされているキャッシュラインに対する予測された一致を示さない。単一のヒットが圧縮BTB312又は非圧縮BTB310の何れかで発生した場合、ヒットが発生したBTBは、予測された分岐データを、予測のために予測器306に提供する。複数のヒットが発生した場合、圧縮BTB312又は非圧縮BTB310は、データを、予測のために単一のエントリから予測器306に提供する。ステップ508に関して以下に説明するように、この状況では、圧縮BTB312及び非圧縮BTB310は、そのキャッシュラインの分岐予測データが依然として存在しているので、次のサイクルで同じキャッシュラインアドレスで別のルックアップを実行する。一例では、圧縮BTB312及び非圧縮BTB310は、予測データが未だ予測器306に提供されていない現在のキャッシュライン内の「最も早い」(すなわち、最も低いPC)エントリに対応するエントリを選択する。
【0044】
ステップ508において、圧縮BTB312及び非圧縮BTB310は、同じキャッシュラインアドレスに対応する追加のエントリが存在するかどうかを判別する。追加のこのようなエントリが存在する場合、方法500は、ステップ504に戻り、同じタグが、同じキャッシュラインアドレスの追加のエントリをルックアップするために再度提供される。このような追加のエントリが存在しない場合、方法500は、ステップ502に戻り、予測器306は、予測のために別のキャッシュラインアドレスを取得する。
【0045】
BTBをルックアップするためにキャッシュラインアドレスをタグとして提供することは一例に過ぎず、他のタグタイプを使用することができる。例えば、タグは、代わりに、キャッシュラインアドレスの一部のみを含んでもよいし、キャッシュラインアドレス又はその一部から導出された何等かの値を含んでもよいし、データがBTBに記憶された予測された分岐のキャッシュラインアドレスに関連する又は関連しない何等かの値であってもよい。
【0046】
図6は、一例による、非圧縮BTB310及び圧縮BTB312を更新する方法600のフロー図である。図1図4に関して示されたシステムに関して説明したが、技術的に実行可能な順序で方法を実行するように構成された任意のシステムが本開示の範囲内にあることを理解されたい。
【0047】
図示するように、方法600は、ステップ602において開始し、分岐予測ユニット206は、非圧縮BTB310、圧縮BTB312、又は、これらの両方に対する変更が実行されると判別する。分岐予測ユニット206は、分岐予測ミスが発生したことを検出すると、このような判別をする。分岐予測ミスは、誤った方向(例えば、成立/不成立の判別が誤って予測されている)、誤ったターゲット(BTBに記憶されたターゲットアドレスが誤っている)、誤ったタイプの分岐予測(予測された分岐タイプが誤っている)、又は、分岐ではない(分岐として予測された命令が分岐でないことが判明した)場合がある。命令実行パイプライン200は、分岐命令を実行し、実行された分岐命令の結果を以前に発生した分岐予測と比較することによって、分岐予測ミスを検出する。予測と実行の違いは、分岐予測ミスが発生したことを意味する。命令実行パイプライン200は、予測ミスに関する情報を分岐予測ユニット206に提供して、将来の分岐予測の精度が向上するようにその内部状態を修正する。
【0048】
ステップ604において、圧縮BTB312、非圧縮BTB310、又は、これらの両方が変更されるという指示を受信したことに応じて、分岐予測ユニット206は、変更される1つ以上のエントリを識別する。変更は、特定の分岐命令に関するデータの削除、分岐命令に関するデータの変更、又は、分岐命令に関するデータの追加を含むことができる。また、分岐予測ユニット206は、キャッシュラインアドレスに基づいて、同じキャッシュラインについて他の分岐予測データが既に存在しているかどうかに基づいて、及び、分岐予測データを圧縮することができるかどうかに基づいて、圧縮BTB312又は非圧縮BTB310内のエントリを識別する。削除及び変更のために、分岐予測ユニット206は、問題の分岐のキャッシュラインアドレス及び問題の分岐の当該キャッシュラインのオフセットと一致するタグを有するエントリを識別する。
【0049】
分岐データを削除する場合、分岐予測ユニット206は、分岐命令のアドレスに基づいて、既存のBTBエントリを、無効又は変更されるエントリとして識別する。
【0050】
分岐データを変更する場合、分岐予測ユニット206は、分岐命令のアドレスに基づいて既存のエントリを識別し、エントリを圧縮できなくする変更等の理由や他の理由のために、変更されたエントリを圧縮BTB312と非圧縮BTB310との間で移動する必要があるかどうかに応じて、他のエントリを識別することができる。
【0051】
ステップ606において、分岐予測ユニット206は、要求された変更に対応するために、1つ以上の識別されたエントリを変更する。変更が圧縮BTB312又は非圧縮BTB310から分岐に関するデータを削除することを要求する場合、分岐予測ユニット206は、BTBエントリ全体を削除する。
【0052】
変更が特定のエントリ内に記憶された特定の分岐に関するデータを変更することを必要とする場合、分岐予測ユニット206は、変更されたエントリを圧縮することができるかどうかにおける変更に起因して、変更されたエントリが、圧縮BTB312から非圧縮BTB310に移動されるかどうかを判別する。例えば、変更される場合に、圧縮されたエントリを圧縮することができない場合、分岐予測ユニット206は、エントリを、圧縮BTB312から非圧縮BTB310に移動させる。このような変更が行われない場合、分岐予測ユニット206は、エントリ内のデータを単に規定通りに変更する。このような変更が行われた場合、分岐予測ユニット206は、対応するデータを移動させ、元のエントリを無効にし、新たなエントリを宛先に書き込む。
【0053】
変更が、圧縮BTB312又は非圧縮BTB310に以前に記憶されていない分岐に関するデータを追加することを必要とする場合、分岐予測ユニット206は、分岐に関するデータを、他の分岐に関するデータと共にダブル分岐BTBエントリ404に記憶することができるかどうかを判別する。追加される分岐に関するデータを他の分岐に関するデータと共に記憶することができる場合であって、他の分岐が圧縮BTB312に記憶される場合、分岐予測ユニット206は、他の分岐に関するシングル分岐BTBエントリ402を無効にし、両方の分岐に関するデータを記憶する新たなダブル分岐BTBエントリ404を生成する。分岐がキャッシュラインアドレスを共有し、分岐がラージターゲットBTBエントリ406を必要としない場合、2つの分岐に関するデータが共に記憶されてもよい。
【0054】
追加される分岐に関するデータを他の分岐に関するデータと共に記憶することができないが、圧縮することができる場合、分岐予測ユニット206は、新たなシングル分岐BTBエントリ402を圧縮BTB312内に生成し、新たな分岐に関するデータを当該エントリに記憶する。追加される分岐に関するデータを他の分岐に関するデータと共に記憶することができず、圧縮することもできない場合、分岐予測ユニット206は、新たなエントリを非圧縮BTB310内に生成し、新たな分岐に関するデータを当該新たなエントリに記憶する。データの属性が、図3及び図4に関して上述したように分岐の「一般的な場合」と一致する場合、及び、データがラージターゲットBTBエントリ406を必要としない場合に、当該データを圧縮することができる。
【0055】
本明細書で説明した技術は、コンピュータプロセッサにおける分岐予測動作を改善する。より具体的には、並行して検索することができる圧縮及び非圧縮BTBを提供することによって、未使用の分岐データスペースに関連するスペースを大きく無駄にすることなく、サイクル毎の最大2つの分岐についての予測データを取得することができる。
【0056】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【0057】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0058】
本明細書で提供された方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。
図1
図2
図3
図4
図5
図6