IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特表2022-547863実行パイプ均衡をもたらす分散スケジューラ
<>
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図1
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図2
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図3
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図4
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図5
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図6
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図7
  • 特表-実行パイプ均衡をもたらす分散スケジューラ 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-16
(54)【発明の名称】実行パイプ均衡をもたらす分散スケジューラ
(51)【国際特許分類】
   G06F 9/38 20060101AFI20221109BHJP
   G06F 9/48 20060101ALI20221109BHJP
【FI】
G06F9/38 310X
G06F9/48 300C
G06F9/48 300G
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022514530
(86)(22)【出願日】2020-09-09
(85)【翻訳文提出日】2022-04-27
(86)【国際出願番号】 US2020049918
(87)【国際公開番号】W WO2021050530
(87)【国際公開日】2021-03-18
(31)【優先権主張番号】16/568,038
(32)【優先日】2019-09-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スネハ ヴィー. デサイ
(72)【発明者】
【氏名】マイケル エストリック
(72)【発明者】
【氏名】エリック スワンソン
(72)【発明者】
【氏名】アニルクマール ランガナゴウドラ
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013AA20
5B013DD01
(57)【要約】
プロセッサは、複数の実行パイプと、複数の実行パイプに結合された分散スケジューラと、を含む。分散スケジューラは、プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファする第1のキュー及び複数の第2のキューを含み、各第2のキューは、複数の実行パイプのうち対応する実行パイプの別のサブセットに対して第1のキューから割り当てられた命令動作をバッファする。分散スケジューラは、分散スケジューラにおける不均衡の少なくとも1つのインジケータが検出されたかどうかに基づいて、複数の割り当てモードの中から割り当てモードを選択し、分散スケジューラを、選択された割り当てモードに従って、第1のキューからの命令動作を複数の第2のキュー間で割り当てるように制御する、キューコントローラをさらに含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
命令動作をプロセッサの分散スケジューラの第1のキューにバッファすることと、
前記分散スケジューラにおける不均衡の少なくとも1つのインジケータが検出されたかどうかに基づいて、前記分散スケジューラの複数の割り当てモードの中から割り当てモードを選択することと、
選択された割り当てモードに従って、前記第1のキューの命令動作を複数の第2のキュー間で割り当てることと、
各第2のキューにおいて、前記第2のキューに関連する実行パイプによる実行のために、前記第2のキューにバッファされた命令動作を選択することと、を含む、
方法。
【請求項2】
前記複数の割り当てモードは、
命令動作が前記複数の第2のキュー間で実質的に等しく割り当てられるキュー優先割り当てモードと、
前記第2のキューに関連する前記実行パイプのパイプ占有率に基づいて、命令動作が前記複数の第2のキュー間で割り当てられるパイプ優先割り当てモードと、を含む、
請求項1の方法。
【請求項3】
前記不均衡の少なくとも1つのインジケータは、
前記第2のキューのうち少なくとも1つの第2のキューが第1の閾値を上回る現在の占有率を有することを表す第1のインジケータと、
2つの第2のキュー間の現在の占有率の差が第2の閾値を上回ることを表す第2のインジケータと、
のうち少なくとも1つを含む、
請求項2の方法。
【請求項4】
前記複数の割り当てモードの中から割り当てモードを選択することは、
前記第1のインジケータ及び前記第2のインジケータの何れも検出されないことに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータのうち少なくとも1つが検出されたことに応じて、前記パイプ優先割り当てモードを選択することと、を含む、
請求項3の方法。
【請求項5】
前記複数の割り当てモードの中から割り当てモードを選択することは、
前記第1のインジケータ及び前記第2のインジケータのうち何れかが検出されたことに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータの両方が検出されたことに応じて、前記パイプ優先割り当てモードを選択することと、を含む、
請求項3の方法。
【請求項6】
前記複数の割り当てモードは、命令動作のセットの各命令動作のコピーが前記複数の第2のキューの各々に割り当てられ、前記命令動作を実行可能な前記実行パイプのパイプ占有率の分析に基づいて、前記セットの各命令動作のコピーが何れかの第2のキュー以外の全ての第2のキューにおいて無効化される、投機的割り当てモードをさらに含む、
請求項2の方法。
【請求項7】
前記複数の割り当てモードの中から割り当てモードを選択することは、
対応する実行パイプによる実行のために命令動作が前記第2のキューから選択される現在のピックレートが閾値を下回ることに応じて、前記投機的割り当てモードを選択することを含む、
請求項6の方法。
【請求項8】
前記不均衡の少なくとも1つのインジケータは、
前記第2のキューのうち少なくとも1つの第2のキューが第1の閾値を上回る現在の占有率を有することを表す第1のインジケータと、
2つの第2のキュー間の現在の占有率の差が第2の閾値を上回ることを表す第2のインジケータと、
対応する実行パイプに割り当てられるために命令動作が前記第2のキューから選択される現在のピックレートが閾値を下回ることを表す第3のインジケータと、を含み、
前記複数の割り当てモードの中から割り当てモードを選択することは、
前記第1のインジケータ及び前記第2のインジケータのうち何れかが存在することに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータの両方が存在することに応じて、前記パイプ優先割り当てモードを選択することと、
前記第3のインジケータが存在することに応じて、前記投機的割り当てモードを選択することと、を含む、
請求項6の方法。
【請求項9】
前記投機的割り当てモードの間、前記セットの各命令動作は、事前に割り当てられた実行パイプを有し、前記事前に割り当てられた実行パイプに関連する前記第2のキューは、前記事前に割り当てられた実行パイプのパイプ占有率と別の第2のキューに関連する同じタイプの別の実行パイプのパイプ占有率との差が閾値を上回らない限り、前記命令動作の有効なコピーを保持する、
請求項6の方法。
【請求項10】
前記複数の割り当てモードは、命令動作の複数のセット毎に、前記セットの命令動作が、インターリーブパターンを使用して前記複数の第2のキュー間で割り当てられるキュー優先割り当てモードを含み、
所定のセットについて前記インターリーブパターンで最初の命令動作を受信する前記第2のキューは、固定された選択シーケンス又は疑似ランダムの何れかに従って選択される、
請求項1~9の何れかの方法。
【請求項11】
プロセッサであって、
複数の実行パイプと、
前記複数の実行パイプに結合された分散スケジューラと、を備え、
前記分散スケジューラは、
前記プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、
複数の第2のキューであって、各第2のキューは、前記複数の実行パイプのうち対応する実行パイプの別のサブセットに対して前記第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、
キューコントローラと、を含み、
前記キューコントローラは、
前記分散スケジューラにおける不均衡の少なくとも1つのインジケータが検出されたかどうかに基づいて、複数の割り当てモードの中から割り当てモードを選択することと、
前記分散スケジューラを、選択された割り当てモードに従って、前記第1のキューの命令動作を複数の第2のキュー間で割り当てるように制御することと、
を行うように構成されている、
プロセッサ。
【請求項12】
前記複数の割り当てモードは、
命令動作が前記複数の第2のキュー間で実質的に等しく割り当てられるキュー優先割り当てモードと、
前記第2のキューに関連する前記実行パイプのパイプ占有率に基づいて、命令動作が前記複数の第2のキュー間で割り当てられるパイプ優先割り当てモードと、を含む、
請求項11のプロセッサ。
【請求項13】
前記不均衡の少なくとも1つのインジケータは、
前記第2のキューのうち少なくとも1つの第2のキューが第1の閾値を上回る現在の占有率を有することを表す第1のインジケータと、
2つの第2のキュー間の現在の占有率の差が第2の閾値を上回ることを表す第2のインジケータと、
のうち少なくとも1つを含む、
請求項12のプロセッサ。
【請求項14】
前記キューコントローラは、
前記第1のインジケータ及び前記第2のインジケータの何れも検出されないことに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータのうち少なくとも1つが検出されたことに応じて、前記パイプ優先割り当てモードを選択することと、
によって、前記複数の割り当てモードの中から割り当てモードを選択するように構成されている、
請求項13のプロセッサ。
【請求項15】
前記キューコントローラは、
前記第1のインジケータ及び前記第2のインジケータのうち何れかが検出されたことに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータの両方が検出されたことに応じて、前記パイプ優先割り当てモードを選択することと、
によって、前記複数の割り当てモードの中から割り当てモードを選択するように構成されている、
請求項13のプロセッサ。
【請求項16】
前記複数の割り当てモードは、命令動作のセットの各命令動作のコピーが前記複数の第2のキューの各々に割り当てられ、前記命令動作を実行可能な前記実行パイプのパイプ占有率の分析に基づいて、前記セットの各命令動作のコピーが何れかの第2のキュー以外の全ての第2のキューにおいて無効化される、投機的割り当てモードをさらに含む、
請求項12~15の何れかのプロセッサ。
【請求項17】
前記キューコントローラは、
対応する実行パイプによる実行のために命令動作が前記第2のキューから選択される現在のピックレートが閾値を下回ることに応じて、前記投機的割り当てモードを選択することによって、前記複数の割り当てモードの中から割り当てモードを選択するように構成されている、
請求項16のプロセッサ。
【請求項18】
前記不均衡の少なくとも1つのインジケータは、
前記第2のキューのうち少なくとも1つの第2のキューが第1の閾値を上回る現在の占有率を有することを表す第1のインジケータと、
2つの第2のキュー間の現在の占有率の差が第2の閾値を上回ることを表す第2のインジケータと、
対応する実行パイプに割り当てられるために命令動作が前記第2のキューから選択される現在のピックレートが閾値を下回ることを表す第3のインジケータと、を含み、
前記キューコントローラは、
前記第1のインジケータ及び前記第2のインジケータのうち何れかが存在することに応じて、前記キュー優先割り当てモードを選択することと、
前記第1のインジケータ及び前記第2のインジケータの両方が存在することに応じて、前記パイプ優先割り当てモードを選択することと、
前記第3のインジケータが存在することに応じて、前記投機的割り当てモードを選択することと、
によって、前記複数の割り当てモードの中から割り当てモードを選択するように構成されている、
請求項16のプロセッサ。
【請求項19】
前記投機的割り当てモードの間、前記セットの各命令動作は、事前に割り当てられた実行パイプを有し、前記事前に割り当てられた実行パイプに関連する前記第2のキューは、前記事前に割り当てられた実行パイプのパイプ占有率と別の第2のキューに関連する同じタイプの別の実行パイプのパイプ占有率との差が閾値を上回らない限り、前記命令動作の有効なコピーを保持する、
請求項16のプロセッサ。
【請求項20】
前記複数の割り当てモードは、命令動作の複数のセット毎に、前記セットの命令動作が、インターリーブパターンを使用して前記複数の第2のキュー間で割り当てられるキュー優先割り当てモードを含み、
前記キューコントローラは、固定された選択シーケンス又は疑似ランダムの何れかに従って、所定のセットについて前記インターリーブパターンで最初の命令動作を受信する前記第2のキューを選択する、
請求項11のプロセッサ。
【請求項21】
プロセッサであって、
複数の実行パイプと、
前記複数の実行パイプに結合された分散スケジューラと、を備え、
前記分散スケジューラは、
前記プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、
複数の第2のキューであって、各第2のキューは、前記複数の実行パイプのうち対応する実行パイプの別のサブセットに対して前記第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、
キューコントローラと、を含み、
前記キューコントローラは、
前記第1のキューにおける命令動作のサブセットの命令動作毎に、
前記命令動作のコピーを前記第1のキューから各第2のキューに投機的に割り当てることと、
前記命令動作を実行可能な実行パイプの現在のパイプ占有率に基づいて、何れかの第2のキュー以外の全ての第2のキューにおいて前記命令動作のコピーを無効化することと、
を行うように構成されている、
プロセッサ。
【請求項22】
前記命令動作は、前記複数の実行パイプのうち所定の実行パイプに事前に割り当てられており、
前記キューコントローラは、
前記所定の実行パイプの現在のパイプ占有率が、前記命令動作を実行可能な他の実行パイプの現在のパイプ占有率の閾値内にあることに応じて、前記所定の実行パイプに関連する前記第2のキューにおける前記命令動作のコピーを前記命令動作の有効なコピーとして維持することと、
前記所定の実行パイプの現在のパイプ占有率が、異なる第2のキューに関連する前記実行パイプの現在のパイプ占有率を少なくとも閾値だけ上回ることに応じて、前記所定の実行パイプに関連する前記第2のキューにおける前記命令動作のコピーを無効化し、前記異なる第2のキューにおける前記命令動作のコピーを維持することと、
を行うように構成されている、
請求項21のプロセッサ。
【請求項23】
プロセッサであって、
複数の実行パイプと、
前記複数の実行パイプに結合された分散スケジューラと、を備え、
前記分散スケジューラは、
前記プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、
複数の第2のキューであって、各第2のキューは、前記複数の実行パイプのうち対応する実行パイプの別のサブセットに対して前記第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、
キューコントローラと、を含み、
前記キューコントローラは、
前記第1のキューからの命令動作のセットを、インターリーブパターンで前記複数の第2のキュー間で割り当てることと、
セット毎に、所定のシーケンス又は疑似ランダムの何れかに基づいて、前記インターリーブパターンで前記セットの最初の命令動作が割り当てられる前記第2のキューを選択することと、
を行うように構成されている、
プロセッサ。
【請求項24】
前記キューコントローラは、所定のシーケンスに基づいて、前記インターリービングパターンで前記セットの最初の命令動作が割り当てられる前記第2のキューを選択するように構成されており、前記所定のシーケンスは交互シーケンスである、
請求項23のプロセッサ。
【請求項25】
疑似乱数ジェネレータを備え、
前記キューコントローラは、前記疑似乱数ジェネレータの出力に基づいて疑似ランダムに、前記インターリーブパターンで前記セットの最初の命令動作が割り当てられる前記第2のキューを選択するように構成されている、
請求項23のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
分散スケジューラは、少なくとも2つのレベルのスケジューラキューを採用しており、第1のレベルは、ピック不可能(non-pickable)なスケジューラキューを有し、第2のレベルは、2つ以上のピック可能(pickable)スケジューラキューを有し、ピック可能スケジューラキューの各々は、複数の実行パイプの対応するサブセットについての命令動作を記憶するように動作する。ピック可能スケジューラキューは、命令動作がピック可能スケジューラキューに割り当てられる前に、命令パイプラインフロントエンドからの命令動作を一時的にバッファする役割を果たす。
【0002】
各々のピック可能スケジューラキューが実行パイプのそれ自身のサブセットを排他的に供給するので、異なるピック可能スケジューラキューの間、異なる実行パイプの間又はこれらの組み合わせにおいて、性能を抑制する不均衡(imbalance)の可能性がよく存在する。説明すると、プログラムが構築若しくはコンパイルされる特定の方法の結果として、又は、キュー割り当ての同時発生にもかかわらず、1つのピック可能スケジューラキューは、負荷動作に依存した動作等のように、各々がかなりの数のサイクルを必要とする多数の命令動作に負荷をかけることがあると共に、別のピック可能スケジューラキューは、そのような遅延を生じさせる動作を小さい割合で有することがある。別の例として、1つのピック可能スケジューラキューは、同様の実行パイプを有する別のピック可能スケジューラキューよりも、そのキューに関連する特定の実行パイプのみによって実行可能な動作を多く割り当てることができる。結果として、1つのピック可能スケジューラキューに関連する実行パイプが過剰に占有される一方で、他の同様の実行パイプが不必要にアイドルである。そのようなスキューされたキュー/パイプ占有率は、典型的には、サイクル毎にピックされる動作の数が少なくなると共に、実行パイプが十分に利用されないことにつながり、その何れかは、分散スケジューラを有する命令パイプラインを実装するプロセッサコアにおでの実行性能に悪影響を与える。
【発明の概要】
【発明が解決しようとする課題】
【0003】
1つの態様によれば、方法は、プロセッサの分散スケジューラの第1のキューにおいて命令動作をバッファすることと、分散スケジューラにおいて不均衡の少なくとも1つのインジケータが検出されるかどうかに基づいて、分散スケジューラの複数の割り当てモードの中から割り当てモードを選択することと、選択した割り当てモードに従って、第1のキューからの命令動作を複数の第2のキュー間で割り当てることと、各々の第2のキューにおいて、第2のキューに関連する実行パイプによる実行のために、第2のキューにバッファされた命令動作を選択することと、を含む。複数の割り当てモードは、命令動作が複数の第2のキュー間で実質的に均等に割り当てられるキュー優先割り当てモード(queue-first allocation mode)と、第2のキューに関連する実行パイプのパイプ占有率に基づいて、命令動作が複数の第2のキュー間で割り当てられるパイプ優先割り当てモード(pipe-first allocation mode)と、を含んでもよい。いくつかの実施形態では、不均衡の少なくとも1つのインジケータは、第2のキューのうち少なくとも1つが第1の閾値を超える現在の占有率を有することを表す第1のインジケータと、任意の2つの第2のキュー間の現在の占有率の差が第2の閾値を超えることを表す第2のインジケータと、のうち少なくとも1つを含む。よって、複数の割り当てモードの中から割り当てモードを選択することは、第1のインジケータ及び第2のインジケータが検出されないことに応じて、キュー優先割り当てモードを選択することと、第1のインジケータ及び第2のインジケータのうち少なくとも1つが検出されたことに応じて、パイプ優先割り当てモードを選択することと、を含んでもよい。代わりに、複数の割り当てモードの中から割り当てモードを選択することは、第1のインジケータ及び第2のインジケータのうち何れかが検出されたことに応じて、キュー優先割り当てモードを選択することと、第1のインジケータ及び第2のインジケータの両方が検出されたことに応じて、パイプ優先割り当てモードを選択することと、を含んでもよい。
【0004】
いくつかの実施形態では、複数の割り当てモードは、命令動作を実行可能な実行パイプのパイプ占有率の分析に基づいて、命令動作のセットの各命令動作のコピーが複数の第2のキューの各々に割り当てられ、その後、セットの各命令動作のコピーが、1つの第2のキュー以外の全ての第2のキューにおいて無効化される、投機的割り当てモードを更に含む。したがって、複数の割り当てモードの中から割り当てモードを選択することは、対応する実行パイプによる実行のために命令動作が第2のキューから選択される現在のピックレートが閾値を下回ることに応じて、投機的割り当てモードを選択することを含んでもよい。不均衡の少なくとも1つのインジケータは、第2のキューのうち少なくとも1つが第1の閾値を上回る現在の占有率を有することを表す第1のインジケータと、任意の2つの第2のキューの現在の占有率の差が第2の閾値を上回ることを表す第2のインジケータと、対応する実行パイプへの割り当てのために命令動作が第2のキューから選択される現在のピックレートが閾値を下回ることを表す第3のインジケータと、を含んでもよく、複数の割り当てモードの中から割り当てモードを選択することは、第1のインジケータ又は第2のインジケータが存在することに応じて、キュー優先割り当てモードを選択することと、第1のインジケータ及び第2のインジケータの両方が存在することに応じて、パイプ優先割り当てモードを選択することと、第3のインジケータが存在することに応じて、投機的割り当てモードを選択することと、を含む。投機的割り当てモードの間、セットの各命令動作は、事前に割り当てられた実行パイプを有してもよく、事前に割り当てられた実行パイプに関連する第2のキューは、事前に割り当てられた実行パイプのパイプ占有率と別の第2のキューに関連する同じタイプの別の実行パイプのパイプ占有率との差が閾値を上回らない限り、命令動作の有効なコピーを保持する。
【0005】
いくつかの実施形態では、複数の割り当てモードは、複数の命令動作のセット毎に、セットの命令動作がインターリーブパターンを使用して複数の第2のキュー間で割り当てられるキュー優先割り当てモードを含み、所定のセットについてインターリーブパターンにおける最初の命令動作を受信する第2のキューは、固定された選択シーケンス又は疑似ランダムの何れかに従って選択される。
【0006】
別の態様によれば、プロセッサは、上述した方法の実施形態を実行するように構成されている。いくつかの実施形態では、プロセッサは、複数の実行パイプと、複数の実行パイプに結合された分散スケジューラと、を含み、分散スケジューラは、プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、複数の第2のキューであって、各第2のキューは、複数の実行パイプのうち実行パイプの対応する別のサブセットに対して第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、キューコントローラと、を含み、キューコントローラは、分散スケジューラにおいて不均衡の少なくとも1つのインジケータが検出されるかどうかに基づいて、複数の割り当てモードの中から割り当てモードを選択し、選択された割り当てモードに従って、第1のキューからの命令動作を複数の第2のキュー間で割り当てるように分散スケジューラを制御する、ように構成されている。
【0007】
別の態様によれば、プロセッサは、複数の実行パイプと、複数の実行パイプに結合された分散スケジューラと、を含み、分散スケジューラは、プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、複数の第2のキューであって、各第2のキューは、複数の実行パイプのうち実行パイプの対応する別のサブセットに対して第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、キューコントローラと、を含み、キューコントローラは、第1のキューの命令動作のサブセットの命令動作毎に、第1のキューから各第2のキューに命令動作のコピーを投機的に割り当て、命令動作を実行可能な実行パイプの現在のパイプ占有率に基づいて、1つの第2のキュー以外の全ての第2のキューの命令動作のコピーを無効化する、ように構成されている。いくつかの実施形態では、命令動作は、複数の実行パイプのうち所定の実行パイプに事前に割り当てられており、キューコントローラは、所定の実行パイプの現在のパイプ占有率が、命令動作を実行可能な他の実行パイプの現在のパイプ占有率の閾値内にあることに応じて、所定の実行パイプに関連する第2のキューの命令動作のコピーを、命令動作の有効なコピーとして維持し、所定の実行パイプの現在のパイプ占有率が、異なる第2のキューに関連する実行パイプの現在のパイプ占有率を少なくとも閾値だけ上回ることに応じて、所定の実行パイプに関連する第2のキューの命令動作のコピーを無効化し、異なる第2のキューの命令動作のコピーを維持する、ように更に構成されている。
【0008】
更なる別の態様によれば、プロセッサは、複数の実行パイプと、複数の実行パイプに結合された分散スケジューラと、を含み、分散スケジューラは、プロセッサの命令パイプラインのフロントエンドからの命令動作をバッファするように構成された第1のキューと、複数の第2のキューであって、各第2のキューは、複数の実行パイプのうち実行パイプの対応する別のサブセットに対して第1のキューから割り当てられた命令動作をバッファするように構成されている、複数の第2のキューと、キューコントローラと、を含み、キューコントローラは、インターリーブパターンで第1のキューからの命令動作のセットを複数の第2のキュー間で割り当て、セット毎に、インターリーブパターンでセットの最初の命令動作が割り当てられる第2のキューを、所定のシーケンス又は疑似ランダムのうち何れかに基づいて選択する、ように構成されている。いくつかの実施形態では、キューコントローラは、所定のシーケンスに基づいて、インターリーブパターンでセットの最初の命令動作が割り当てられる第2のキューを選択するように更に構成されており、所定のシーケンスは、交互シーケンスである。プロセッサは、疑似乱数ジェネレータを更に含んでもよく、キューコントローラは、疑似乱数ジェネレータの出力に基づいて疑似ランダムに、インターリーブパターンでセットの最初の命令動作が割り当てられる第2のキューを選択するように更に構成されている。
【0009】
添付の図面を参照することにより、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなる。異なる図面で同一の符号が使用されている場合には、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【0010】
図1】いくつかの実施形態による、マルチモーダル分散スケジューラを実装するプロセッサを示すブロック図である。
図2】いくつかの実施形態による、図1のマルチモーダル分散スケジューラを更に詳細に示すブロック図である。
図3】いくつかの実施形態による、マルチモーダル分散スケジューラのキュー優先割り当てモードを示すフローチャートである。
図4】いくつかの実施形態による、図3の方法の例示的な実施形態を示す図である。
図5】いくつかの実施形態による、マルチモーダル分散スケジューラのパイプ優先割り当てモードを示すフローチャートである。
図6】いくつかの実施形態による、マルチモーダル分散スケジューラの投機的割り当てモードを示すフローチャートである。
図7】いくつかの実施形態による、図6の方法の例示的な実施形態を示す図である。
図8】いくつかの実施形態による、様々な不均衡インジケータに基づくマルチモーダル分散スケジューラの異なる割り当てモードの選択的な活性化のための方法を示すフローチャートである。
【発明を実施するための形態】
【0011】
図1図8は、命令動作実行スケジューリングのためのマルチモーダル分散スケジューラを採用したプロセシングシステムにおけるキュー不均衡及びパイプ不均衡を軽減する実施例の技術を例示する。少なくとも1つの実施形態では、分散スケジューラは、プロセッサの命令フロントエンドから命令動作を一時的にバッファするための非ピック可能スケジューラキューと、非ピック可能スケジューラキューから命令動作を受信するための2つ以上のピック可能スケジューラキューとを含み、ピック可能スケジューラキューの各々は、分散スケジューラによって供給される実行パイプのセットの関連する、別個のサブセットについての命令動作をバッファするように動作する。分散スケジューラは更に、分散スケジューラによってサポートされる複数の割り当てモードの選択割り当てモードに従って、非ピック可能スケジューラキューからピック可能スケジューラキューの間で命令動作を割り当てるよう分散スケジューラを構成するためのキューコントローラを含む。少なくとも1つの実施形態では、キューコントローラは、同一または類似の能力のピック可能スケジューラキューの間または実行パイプの間の不均衡の1つ以上のインジケータの存在または不存在に応答して実装されることになる割り当てモードを選択する。そのようなインジケータは、例えば、閾値を上回るキュー占有率、閾値を上回るパイプ占有率、閾値を上回る2つ以上のキューの占有率の間の差、閾値を上回る同一または類似のタイプの2つ以上の実行パイプのパイプ占有率の間の差、及び閾値を下回って降下する実行のために命令動作がピックされるレートなどを含む。
【0012】
いくつかの実施形態では、マルチモーダル分散スケジューラによってサポートされる複数の割り当てモードは、キュー優先割り当てモードを含み、キュー優先割り当てモードでは、所与の割り当てサイクル内にピック可能スケジューラキューに割り当てられることになる命令動作のサブセットが、インターリービングパターンを介してなど、ピック可能スケジューラキューの間で実質的に等しく割り当てられる。命令動作の衡平な分散を更に保証するために、いくつかの実施形態では、インターリービングパターンは、割り当てサイクルごとに異なるピック可能スケジューラキューにより開始し、線形フィードバックシフトレジスタ(LFSR)または他の疑似乱数ジェネレータの出力値を使用することによってなど、例えば、規定済みの、固定選択シーケンス(例えば、交互シーケンスもしくは「ピンポン」シーケンス)に従って、または疑似ランダムに、所与の割り当てサイクルの間にインターリービングパターンにおいて初期命令動作を受信するピック可能スケジューラキューが選択される。更に、いくつかの実施形態では、複数の割り当てモードはまた、パイプ優先割り当てモードを含み、パイプ優先割り当てモードでは、割り当てられることになる命令動作を実行するように適合された実行パイプの各々のパイプ占有率が考慮され、命令動作を実行するために選択された実行パイプ及び対応する関連するピック可能キューは、それらのパイプ占有率の比較及び評価に基づいている。
【0013】
いくつかの実施形態では、マルチモーダル分散スケジューラによってサポートされる複数の割り当てモードは、投機的割り当てモードを含み、投機的割り当てモードでは、所与の割り当てサイクルに対し、同一の命令動作のコピーが、非ピック可能スケジューラキューから複数のピック可能スケジューラキューの各々に投機的に割り当てられる。その後、キューコントローラは、命令動作を実行するための適切な実行パイプを選択し、よって、選択済み実行パイプと関連付けられたピック可能スケジューラキューにおいて有効であるとして命令動作のコピーを維持すると共に、他のピック可能スケジューラキューにおける命令動作のコピーを無効化する。
【0014】
図1は、いくつかの実施形態による、キュー及び実行パイプ均衡のためのマルチモーダル分散スケジューラ102を実装するプロセッサ100を示す図である。プロセッサ100は、命令フロントエンド104と、整数ユニット106及び浮動小数点/単一命令多重データ(SIMD)ユニット108等の命令実行ユニットと、キャッシュ/メモリインタフェースサブシステム110と、を含む。命令フロントエンド104は、命令ストリームの一部として命令をフェッチし、命令を1つ以上の命令動作(例えば、マイクロ演算又はuops)に復号し、次に、各命令動作を実行のために実行ユニット106,108の何れかにディスパッチするように動作する。命令動作を実行する際に、実行ユニットは、キャッシュ/メモリインタフェースサブシステム110において実装された1つ以上のキャッシュを頻繁に利用し、或いは、キャッシュ/メモリインタフェースサブシステム110のロード/ストアユニット(LSU)、メモリコントローラ又はI/Oコントローラ(図示省略)を介して、外部メモリ(例えば、ランダムアクセスメモリ、RAM)若しくは外部入力/出力(I/O)デバイスからのデータにアクセスし、又は、記憶のために外部メモリ若しくは外部I/Oデバイスにデータを提供する。
【0015】
プロセッサ100は、プロセッサ100の1つ以上の実行ユニットの各々においてマルチモーダル分散スケジューラ102を実装する。説明のために、マルチモーダル分散スケジューラ102が浮動小数点/SIMDユニット108に実装される実施形態が本明細書で説明される。しかしながら、他の実施形態では、プロセッサ100の整数ユニット106又は他の実行ユニットは、本明細書で提供されるガイドラインを使用して、浮動小数点/SIMDユニット108によって実装されるものに加えて又はその代わりに、マルチモーダル分散スケジューラを実装する。
【0016】
浮動小数点/SIMDユニット108は、リネームモジュール112と、物理レジスタファイル114と、図示された実施形態では6個の実行パイプ116-1~116-6等の複数の実行パイプ116と、マルチモーダル分散スケジューラ102と、を含む。リネームモジュール112は、設計されたレジスタ(architected registers)から物理レジスタファイル114内の物理レジスタにリネームすることを含む、命令フロントエンド104から受信した命令動作についての動作をリネームすることを実行し、リネームした命令動作を、実行パイプ116間でのバッファリング及び割り当てのためにマルチモーダル分散スケジューラ102に出力する。少なくとも1つの実施形態では、マルチモーダル分散スケジューラ102は、第1のスケジューラキュー118と、マルチプレクサ(mux)ネットワーク120と、図示した例では2つの第2のスケジューラキュー122-1,122-2及び対応するピッカ124-1,124-2等のように、第2のスケジューラキュー122毎の複数の第2のスケジューラキュー122及びピッカ124と、キューコントローラ126と、を含む。第2のスケジューラキュー122の各々は、複数の実行パイプ116の対応する別のサブセットについての命令動作をバッファする役割を果たす。例えば、例示した実施形態では、第2のスケジューラキュー122-1は、実行パイプ116-1,116-2,116-3から構成されるサブセットについての命令動作をバッファし、一方で、第2のスケジューラキュー122-2は、実行パイプ116-4,116-5,116-6から構成される別のサブセットについての命令動作をバッファする。
【0017】
マルチモーダル分散スケジューラ102は、2つのレベルのキューイング処理を実施し、それによって、第1のスケジューラキュー118は、命令動作を一時的にバッファし、次に、命令動作は、muxネットワーク120を介して複数の第2のスケジューラキュー122間に割り当てられる。次に、第2のスケジューラキュー122毎のピッカ124は、対応する第2のスケジューラキュー122に関連するサブセットの実行パイプへの割り当て又は他の割り当てのために、対応する第2のスケジューラキュー122にバッファされた命令動作をピックする。命令動作が直接実行のために第1のスケジューラキュー118からピック可能ではないので、第1のスケジューラキュー118は、本明細書において「ピック不可能スケジューラキュー118」又は「NSQ118」と呼ばれる。逆に、命令動作が実行のために第2のスケジューラキュー122からピック可能であるので、第2のスケジューラキュー122の各々は、「ピック可能スケジューラキュー122」又は「SQ122」と呼ばれる。
【0018】
少なくとも1つの実施形態では、マルチモーダル分散スケジューラ102は、複数の割り当てモードをサポートし、各々の割り当てモードは、所定の割り当てサイクル中に、NSQ118からSQ122に命令動作を割り当てる特定の処理を表す。各々の割り当てモードは、典型的には、現在又は予測された実行非効率性に対処し、よって、キュー制御126は、一実施形態では、選択された割り当てモードによって潜在的に対処される不均衡又は実行非効率の1つ以上のインジケータの存在又は不存在に基づいて、次の1つ以上の割り当てサイクルの間に実施される特定の割り当てモードを選択し、次に、選択された割り当てモードを実施するようにmuxネットワーク120及びピッカ124を構成する。マルチモーダル分散スケジューラ102によってサポートされる割り当てモードの例、及び、実装のために特定の割り当てモードを選択する例示的な処理は、以下に詳細に説明する。
【0019】
図2は、いくつかの実施形態による、マルチモーダル分散スケジューラ102の実施形態を更に詳細に示す図である。この例では、NSQ118は、複数のキューエントリ202を含み、各々のキューエントリ202は、命令フロントエンド104から受信した命令動作204を記憶することが可能である。NSQ118は、ファーストインファーストアウト(FIFO)キューとして動作し、複数の出力ポート206を含み、各々の出力ポートは、割り当てサイクル中に、対応するバッファ済み命令動作204をNSQ118から出力することが可能である。したがって、NSQ118は、割り当てサイクル毎にN個の命令動作を出力する機能を有し、Nは、出力ポート206の数を表す。SQ122-1,122-2の各々は、複数のキューエントリ208を含み、各々のキューエントリ208は、NSQ118から対応するSQ122に割り当てられた命令動作204をバッファすることが可能である。このため、各々のSQ122は、複数の入力ポート210を含み、その各々は、受信した命令動作を、受信側のSQ122の対応するキューエントリ208に書き込むことが可能である。少なくとも1つの実施形態では、全てのSQ122の入力ポート210の総数は、NSQ118の出力ポート206の数Nに等しい。よって、各々のSQ122がK個の入力ポート210を含む場合、N=K*Jであり、Jは、SQ122の数である。説明するために、例示した実施形態では、NSQ118は、6個の出力ポート206(N=6)を含み、SQ122-1,SQ122-2(J=2)の各々は、3個の入力ポート(K=3)を含む。よって、この実施形態では、所定の割り当てサイクル中に、最大で6個の(6)命令動作をNSQ118からSQ122-1,122-2に割り当てることが可能であり、SQ122-1,122-2の各々は、割り当てサイクル中に、最大で3個の(3)命令動作を受信することが可能である。
【0020】
muxネットワーク120は、特定の割り当てモードに基づいて、NSQ118からの命令動作204をSQ122-1,122-2間で割り当てるように動作する。この目的のために、muxネットワーク120は、NSQ118の出力ポートをSQ122-1,122-2の入力ポート210に接続する1つ以上のレベルのマルチプレクサを含み、その結果、各々の出力ポート206は、何れかの入力ポート210に接続可能である。キューコントローラ126は、NSQ118から割り当てられる各命令動作204を、関連する出力ポート206の間で、命令動作204が割り当てられているSQ122の対応する入力ポート210に向けるように、制御シグナリング212を介してmuxネットワーク120を制御するように動作する。
【0021】
SQ122-1,122-2の各々のキューエントリ208は、関連するピッカ124による実行のために命令動作204がピックされる前に、NSQ118から割り当てられた命令動作204をバッファしてもよい。例示した実施形態では、キューエントリ208は、実行される命令動作のタイプのオペコード又は他の識別子を記憶するためのオペコードフィールド214と、命令動作204の実行の間に使用されるソース若しくはディスティネーションレジスタについてのレジスタ識別子、又は、この実行の間に使用される即時値若しくは変位値を記憶するための1つ以上のオペランドフィールド216と、を含む、バッファ済み命令動作204に関連するいくつかのフィールドを含む。更に、以下に説明するように、いくつかの実施形態では、命令動作は、特定の実行パイプに事前に割り当てられ、よって、キューエントリ208は、対応する命令動作に事前に割り当てられた実行パイプの識別子を記憶するための割り当てフィールド218を含む。その上、命令動作の無効化及びフラッシングを促進するために、少なくとも1つの実施形態では、キューエントリ208は、対応する命令動作がそのSQ122に対して有効又は無効であるかどうかを示す有効(v)ビットを記憶するための有効フィールド220を含む。キューエントリ208は、いくつかの実施形態では、例えば、命令動作が実行のためにピックされる準備ができているかどうかを示すステータスフィールド、及び、命令動作と他の命令動作との間の依存性を識別する依存性フィールド等の追加のフィールド(図示省略)を含む。
【0022】
ピッカ124-1,124-2は、SQ122と関連付けられた選択済み実行パイプによる実行のために各々のSQ122から命令動作を選択又は「ピックする」ように動作する。この選択処理は、典型的には、そのポイントにおいて実行される所定の命令動作の可用性と共に、命令動作を実行する能力を有するSQ122と関連付けられた1つ以上の実行パイプ116の現在能力に基づいている。よって、ピッカ124は、実行パイプ116の対応するサブセットに割り当てられた、又は、他の方法で割り当てられた命令動作を追跡し、選択処理の一部として、実行パイプ116のサブセットの状態を追跡する。
【0023】
実行パイプ116-1~116-6の各々は、1つ以上の命令動作タイプを実行するロジック及び他の回路を含む。いくつかの実施形態では、各々の実行パイプは、浮動小数点乗算(FMUL)演算を実行するための実行パイプ、浮動小数点加算(FADD)演算を実行するための実行パイプ、及び、融合乗算-加算(FMU)演算を実行するための実行パイプ等の特殊化関数を有する。更に、いくつかの実施形態では、各々のSQ122がそれらと関連付けられた実行パイプの同一の構成を有する点で、実行パイプのSQ122及びそれらの関連するサブセットは、「対称的」である。すなわち、SQ122-1についての実行パイプ構成は、SQ122-2についての実行パイプ構成と同一であり、その結果、実行パイプ116-1(EX0)及び実行パイプ116-4(EX1)は、同一のタイプの実行パイプであり、実行パイプ116-2(EX2)及び実行パイプ116-5(EX3)は、同一のタイプの実行パイプであり、実行パイプ116-3(EX4)及び実行パイプ116-6(EX5)は、同一のタイプの実行パイプである。したがって、実行パイプEX0における実行に適切な命令動作204は、実行パイプペアEX2/EX3及びEX4/EX5についての同一の能力関係により、パイプEX1における実行にも適切であり、逆も同様である。
【0024】
キューコントローラ126は、割り当てコンポーネント222と、モード制御コンポーネント224と、キュー更新コンポーネント226と、キューステータスコンポーネント228と、パイプステータスコンポーネント230と、ピックレートコンポーネント232と、インタリーブ選択コンポーネント236と、を含む、様々なコンポーネントを含む。それらのコンポーネントの各々は、ハードウェアロジック及び関連する回路として、プログラム可能ロジック及び関連する回路として、対応する機能を表すソフトウェア命令を実行するプロセッサコアとして、又は、それらの組み合わせとして実装される。パイプステータスコンポーネント230は、実行パイプ116を監視して、実行パイプ116毎の現在のパイプ占有率を判定するように動作する。同様に、キューステータスコンポーネント228は、NSQ118及びSQ122を監視して、それらの現在のキュー占有率及び占有率変化のレート等を判定するように動作する。ピックレートコンポーネント232は、ピッカ124-1,124-2によって行われた命令動作ピックを監視し、ピッカ124-1,124-2についての現在のピックレート統計を判定するように動作する。キュー更新コンポーネント226は、以下に詳細に説明するように、分散スケジューラ102の動作に基づいて、SQ122-1,122-2のキューエントリ208及びNSQ118のキューエントリ202の様々なフィールドを更新するように動作する。インタリーブ選択コンポーネント236は、以下に説明するように、インタリーブ済み割り当てパターンにおいて命令動作を受信する初期SQ(最初のSQ)122を選択するように動作する。
【0025】
本明細書で説明するように、少なくとも1つの実施形態では、マルチモーダル分散スケジューラ102は、NSQ118とSQ122-1,122-2との間の命令動作割り当て処理の動的な適合を促進して、同一のタイプのSQ122-1,122-2間又は実行パイプ116間の不均衡に起因した性能劣化を軽減するように、複数の割り当てモードをサポートする。以下に説明するように、この複数の割り当てモードは、一実施形態では、キュー優先割り当てモード240を含み、キュー優先割り当てモード240では、命令動作がNSQ118からSQ122に最初に割り当てられ、次に、命令動作がそれらの各々のSQ122内にあると、命令動作についてのパイプ割り当てが続く。別の割り当てモードは、パイプ優先割り当てモード242を含み、パイプ優先割り当てモード242では、命令動作がNSQ118にバッファされる間に対応する実行パイプ116に最初に割り当てられ、次に、命令動作は、NSQ-SQ割り当てサイクルの間に割り当てられた実行パイプに関連するSQ122に割り当てられる。更なる別の例として、マルチモーダル分散スケジューラ102によってサポートされる複数の割り当てモードは、投機的割り当てモード244を含み、投機的割り当てモード244では、命令動作のサブセットの各々の命令動作のコピーは、同一の割り当てサイクル内にNSQ118からSQ122-1,122-2の各々に投機的に割り当てられ、次に、パイプ割り当てがその後完了すると共に、割り当てられた実行パイプに関連するSQ122における命令サイクルのコピーのみが維持されると共に、他のSQ122における他のコピーが無効化され、その後、フラッシュされる。それらの様々な割り当てモードは、図3図7を参照して以下に更に詳細に説明する。
【0026】
モード制御コンポーネント224は、ピックレートコンポーネント232からのピックレート統計、パイプステータスコンポーネント230からの現在のパイプ占有率、及び、キューステータスコンポーネント228からの現在のキュー占有率等のように、キューコントローラ126の他のコンポーネントによって提供される情報から判定されるように、SQ122間又は実行パイプ間の不均衡の1つ以上のインジケータの存在又は不存在を検出したことに応じて、1つ以上の割り当てサイクル間に実施する特定の割り当てモードを選択するように動作する。割り当てモードを選択する例示的な処理は、図8を参照して以下に説明する。割り当てコンポーネント222は、選択された割り当てモードに基づいて、並びに、様々なキュー及び実行パイプステータス情報に基づいて、NSQ118からSQ122の命令動作の割り当て(例えば、制御シグナリング212の構成を介した)及び実行パイプ116への命令動作の割り当てを制御するように動作する。
【0027】
図3は、いくつかの実施形態による、マルチモーダル分散スケジューラ102のキュー優先割り当てモード240についての命令動作割り当ての例示的な方法を示す図である。上述したように、キュー優先割り当てモード240は、キュー能力均衡の目的でNSQ118からSQ122-1,122-2への命令動作204の割り当てをもたらし、命令動作のパイプ割り当ては、命令動作がSQ122-1,122-2に割り当てられた後に生じる。各々のSQ122がK個の入力ポート210を有するように(図2の実施例ではK=3)、各々のSQ122は、所定の割り当てサイクル内に最大でK個の命令動作を受信する。よって、1つのとり得るアプローチは、割り当てサイクル中に、NSQ118における第1のK個の命令動作をSQ122-1に割り当て、NSQ118における次のK個の命令動作をSQ122-2に割り当てる。しかしながら、例えば、負荷動作、記憶動作、又は、完了するのに考慮可能なクロックサイクルを必要とする他の動作に依存した命令動作をK個の命令動作の1つのブロックが含むと共に、K個の命令動作の他のブロックがそのような命令動作をあまり有しない又は全く有しない場合に、このブロックスタイル割り当てアプローチは、不均衡につながることがある。これを軽減する1つのアプローチは、1つのSQ122が1つの命令動作を取得し、他のSQ122が次の命令動作を取得する等のように、割り当てサイクル中にSQ122間の命令の割り当てのためにインターリーブパターンを採用することである。このようにして、各々のSQ122は、1つの命令動作を順に取得し、次いで、現在の割り当てサイクルについて全ての命令動作が割り当てられるまで、全てのSQ122を通じてシーケンスが再度繰り返される。しかしながら、同一のSQ122が、割り当てサイクル毎のインターリーブパターンにおいて、命令動作を受信する最初のSQとして機能する場合、状況によっては、SQ122間の占有率が不均衡になることがある。例示すると、実行されるプログラムが、[ADD、MUL、ADD、MUL、ADD、MUL、ADD、MUL、ADD、MUL、ADD、MUL]等のように、加算と乗算を交互に実行する演算を有する場合、各々の割り当てサイクル内に同一のSQ122に第1の命令動作又は最初の命令動作を提供する2つのSQ122間の割り当てのインターリーブパターンは、6個のADD演算がそのSQ122に割り当てられ、6個のMUL演算(実行するのにADD演算よりも大幅に時間がかかる)が他のSQ122に割り当てられる。よって、そのような潜在的なキュー不均衡を回避するために、少なくとも1つの実施形態では、インターリーブパターンを使用するキュー優先割り当てモード240において、キューコントローラ126は、所定のサイクル内に割り当てられる命令動作のサブセットにおける第1の命令動作又は最初の命令動作を受信するSQ122を選択するための選択処理を実行し、この選択処理は、例えば、交互選択若しくはピンポン選択に基づいており、又は、疑似ランダムな選択に基づいている。割り当てサイクルの間で最初の受信SQ122を順次又は疑似ランダムに変更することによって、命令動作のストリームがSQ122とそれらの対応する実行パイプ116との間で不均衡な動作割り当てを結果としてもたらす確率は、典型的に、同一のSQ122が割り当てサイクル毎に最初の受信SQとして選択される実施形態と比較して低減する。
【0028】
よって、割り当てサイクルの開始に応じて、ブロック302において、インタリーブ選択コンポーネント236は、割り当てサイクルの間にNSQ118から割り当てられた最初の命令動作を受信するSQ122-1,122-2の何れかを選択する。すなわち、インタリーブ選択コンポーネント236は、インターリービングパターンにおいて「最初の」SQ122としてSQ122-1,122-2の何れかを選択する。一実施形態では、インタリーブ選択コンポーネント236は、2つのSQ122に対して1-2-1-2-1-2-1...シーケンス(すなわち、ピンポンシーケンス)若しくは1-1-2-2-1-1-2-2シーケンス、又は、3個のSQ122を利用した実施形態では、1-2-3-1-2-3-1-2-3-1....シーケンス若しくは1-2-3-2-3-1...シーケンス等のように、所定の固定選択シーケンスを利用する。他の実施形態では、インタリーブ選択コンポーネント236は、割り当てサイクル毎に疑似乱数を生成する線形フィードバックシフトレジスタ(LFSR)等の疑似乱数ジェネレータを実装し、次に、現在の割り当てサイクルの間に採用されるインターリーブパターンについての最初の受信SQ122を選択するために、疑似乱数ジェネレータによって出力された1つ以上のビットを使用する。選択された最初の受信SQ122により、ブロック304において、割り当てコンポーネント222は、出力ポート206及び入力ポート210を介して、選択された最初の受信SQ122により開始して、インターリーブパターンに従って、NSQ118からSQ122-1,122-2に命令動作のサブセットを分散させるように、muxネットワーク120を制御する。
【0029】
図4は、ピンポン型の最初の受信SQ選択シーケンスを使用して、インターリーブパターンにおいて2つのSQ122-1,122-2間でNSQ118からの6個の命令動作が割り当てられる実施形態における処理の一例を示す。最初に、NSQ118は、12個の命令動作(OP1~OP12)をバッファし、OP1は、最古の命令動作である(よって、最初に割り当てられる)。割り当てサイクル401の間に、6個の命令動作(OP1~OP6)のサブセットが割り当てられる。この割り当てサイクルの間、SQ122-1が最初の受信SQとして選択され、よって、インタリーブ割り当てパターンは、SQ122-1への動作OP1,OP3,OP5の割り当て、及び、SQ122-2への動作OP2,OP4,OP6の割り当てを結果としてもたらす。次の割り当てサイクル402の間、6個の命令動作OP7~OP12のサブセットが割り当てられることになり、この割り当てサイクルの間、SQ122-2は、ピンポン選択パターンを使用して最初の受信SQとして選択される。したがって、割り当てサイクル402の間、インタリーブ割り当てパターンは、命令動作OP7,OP9,OP11がSQ121-2に割り当てられ、OP8,OP10,OP12がSQ121-1に割り当てられることを結果としてもたらす。
【0030】
図5は、いくつかの実施形態による、マルチモーダル分散スケジューラ102のパイプ優先割り当てモード242についての命令動作割り当ての例示的な方法を示す図である。上述したキュー優先割り当てモード240は、割り当てサイクル内に出力ポート206の全てが利用されることを可能にし、よって、割り当てサイクル内にNSQ118からSQ122に割り当てられた命令動作の数を最大にする利点を有するが、欠点としては、命令動作のストリームにおける状況が、パイプ利用における不均衡を生じる可能性があることが挙げられる。例示すると、キュー優先割り当ては、他のSQ122と比較して1つのSQ122における不釣り合いな数のADD演算を結果としてもたらすと共に、他のSQ122では、不釣り合いな数のMUL演算で終わる可能性がある。そのようなシナリオでは、ADD演算に対して採用された第1のSQ122の実行パイプ116がバックアップ(backed up)される一方で、MUL演算に対して採用された第1のSQ122の実行パイプ116がアイドルになり、第2のSQ122については、そのADDタイプの実行パイプ116がアイドルになる一方で、そのMULタイプの実行パイプ116が過負荷になるという逆の状態が発生する可能性がある。パイプ優先割り当てモード242は、分散スケジューラ102における実行パイプ116の全てのパイプ占有率を評価し、次いで、現在の割り当てサイクルで割り当てられる命令動作のサブセットの各々の命令動作を、最低のパイプ占有率を有し、命令動作によって表されるタイプの動作を実行可能な実行パイプに割り当てることによって、このような不均衡を軽減する。
【0031】
よって、所定の割り当てサイクルの間、ブロック502において、モード制御コンポーネント224は、例えば、パイプステータスコンポーネント230によって維持されたメモリ、レジスタファイル又は他の記憶コンポーネントのパイプ占有率データにアクセスすることによって、分散スケジューラ102の実行パイプ116のセットの現在のパイプ占有率を評価する。概して、パイプ占有率データは、実行パイプ116の各々に現在割り当てられている命令動作の数を示し、よって、各々の実行パイプ116に既にコミットされた動作可能「ワーク(work)」の総数を表す。この情報により、ブロック504において、割り当てコンポーネント222は、現在の割り当てサイクル内に割り当てられるNSQ118における次の命令動作を選択し、選択された命令動作を実行可能な実行パイプ116を識別し、次に、選択された命令動作を、識別されたサブセット内で最低のパイプ占有率を有する実行パイプ116に割り当てる。この割り当ては、例えば、選択された命令動作を記憶するNSQ118のキューエントリ202の割り当てフィールドに対して、選択された実行パイプを識別する値を書き込むことによって行われる。命令動作が、SQ122への割り当てのために利用可能である場合(例えば、命令動作が、現在の割り当てサイクル内で割り当てられる命令動作のサブセットに含まれている場合)、ブロック506において、割り当てコンポーネント222は、事前に割り当てられた実行パイプ116を判別するために、命令動作を記憶するキューエントリ202の割り当てフィールドにアクセスし、命令動作を、NSQ118から、割り当てられた実行パイプ116に関連するSQ122のエントリ208にルーティングするように、muxネットワーク120を制御する。ブロック502,504,506の処理は、所定の割り当てサイクル内で割り当てられる命令動作のサブセットの命令動作毎に実行される。
【0032】
パイプ優先割り当てモード242においてパイプ占有率を重視することは、典型的には、分散スケジューラ102内のパイプ占有率の均衡を維持することにおいて効果的である。しかしながら、NSQ-SQ割り当てスループットが最大化されるキュー優先割り当てモード240とは異なり、NSQ118における命令動作のシーケンスが1つの特定のSQ122に割り当てられ、その結果、NSQ118の出力ポート206の総数と比較して、所定のSQ122における入力ポート210の数が少ないため、対応する割り当てサイクル内に割り当てられる命令動作の数が制限されるという状況が生じ得る。例示すると、図2のNSQ118における次の6個の命令動作がSQ122-2に関連する実行パイプ116に事前に割り当てられる場合、図2のSQ122-2が3個の入力ポート210のみ有するので、次の割り当てサイクルの間、可能な6個の総数のうち3個の命令動作のみ割り当てることが可能である。これに対して、キュー優先割り当てモード240は、同じ状況において(SQ122における十分な能力を想定して)6個の命令動作を割り当てるように、全ての6個の出力ポート206が利用されることを可能にする。図8を参照して以下に更に詳細に説明するように、マルチモーダル分散スケジューラ102は、SQ122間の不均衡又は実行パイプ116間の不均衡の様々なインジケータを検出したことに応じて、それらの割り当てモードを切り替えることによって、キュー優先割り当てモード240及びパイプ優先割り当てモード242の各々の利点を活用する。
【0033】
図6は、いくつかの実施形態による、マルチモーダル分散スケジューラ102によって提供される投機的割り当てモード244についての命令割り当て動作のための例示的な方法を示す図である。典型的には、分散スケジューラ102は、命令動作が1つのSQ122に割り当てられると、その命令動作を他のSQ122に移動することができないように設計及び製造される。したがって、分散スケジューラ102は、キュー優先割り当てモード240又はパイプ優先割り当てモード242の何れかを使用して、SQ122に対して既にコミットされた命令動作によって生じる不均衡を是正するためのリソースを殆ど有していない。しかしながら、実行パイプ116の現在ピックレートが十分に低く、SQ122のアンダーフローが著しいリスクでない場合、分散スケジューラ102は、投機的割り当てモード244を採用して、SQ122において命令動作間の均衡を提供することを可能にする方法で、命令動作をSQ122に割り当てる。
【0034】
投機的割り当てモード244における投機的割り当ての処理のために、ブロック602において、モード制御コンポーネント224は、例えば、上述したようにパイプ占有率データにアクセスすることによって、分散スケジューラ102の実行パイプ116のセットの現在のパイプ占有率を評価する。ブロック604において、割り当てコンポーネント222は、NSQ118内の割り当てられていない命令動作を識別し、そのタイプの命令動作を実行可能な実行パイプ116の現在パイプの占有率に基づいて、識別された命令動作を特定の実行パイプ116に事前に割り当てる。この事前割り当ては、例えば、NSQ118の命令動作を記憶するキューエントリ202の割り当てフィールドに対して、事前に割り当てられた実行パイプの識別子を記憶することによって反映される。この事前割り当て処理は、NSQ118内の任意の数の割り当てられていない命令動作に対して繰り返される。
【0035】
事前に割り当てられた命令動作がSQ122への割り当てのために利用可能である場合(例えば、現在の割り当てサイクル内で割り当てられる命令動作のサブセットに命令動作が含まれている場合)、単一のSQ122に命令動作を割り当てるのではなく、代わりにブロック606において、何れのSQ122が、命令動作に対して事前に割り当てられた命令パイプ116と関連するかに関わらず、割り当てコンポーネント222は、SQ122の各々に命令動作のコピーをルーティングする(例えば、命令動作のコピーをSQ122-1にルーティングし、別のコピーをSQ122-2にルーティングする)。この処理は、現在の割り当てサイクル中に割り当てられるサブセットの事前に割り当てられた命令動作毎に繰り返される。
【0036】
その後、ブロック608において、割り当てコンポーネント222は、SQ122において次に投機的に割り当てられた命令動作を順に選択し、事前に割り当てられた実行パイプ116、及び、他のSQ122に関連する同一又は類似のタイプの実行パイプ116の現在のパイプ占有率が不均衡であるかどうかを判別する。例示すると、SQ122-1に関連する実行パイプ116-2(EX2)に命令動作が事前に割り当てられている場合、実行パイプ116-2(EX2)のパイプ占有率は、SQ122-2に関連する実行パイプ116-5(EX3)の現在のパイプ占有率と比較される。この処理のために、事前に割り当てられた実行パイプ116と、他のSQ122における他の類似の実行パイプと、の間のパイプ占有率の不均衡は、例えば、事前に割り当てられた実行パイプ116のパイプ占有率が、他のSQ122の同一のタイプの実行パイプ116のパイプ占有率を少なくとも閾値だけ超えることによって示されてもよい。例えば、閾値が3個の動作に設定されていることを想定すると、事前に割り当てられた実行パイプ116がインフライトで8個の命令動作を有し、他の同一のタイプの実行パイプ116が6個の命令動作を有する場合、又は、他の同一のタイプの実行パイプ116が、インフライトで、事前に割り当てられた実行パイプ116よりも多くの命令動作を有する場合には、不均衡が想定されず、その一方で、事前に割り当てられた実行パイプ116がインフライトで12個の命令動作を有し、他の同一のタイプの実行パイプ116がインフライトで5個の命令動作を有する場合には、不均衡が検出される。
【0037】
ブロック608においてパイプ占有率の十分な不均衡が検出されない場合、ブロック610において、割り当てコンポーネント222は、事前に割り当てられた実行パイプ116に関連するSQ122における命令動作のコピーの有効ステータスを維持し、他のSQ122における命令動作のコピーを無効化するように、キュー更新コンポーネント226に指示する。すなわち、十分な不均衡が検出されない場合、キューコントローラ126は、事前に割り当てられた実行パイプ116に関連するSQ122における命令動作のコピーを維持することによって命令動作の事前割り当てを維持すると共に、他のSQ122における命令動作の全ての他のコピーを無効化する。少なくとも1つの実施形態では、無効化は、無効化される命令動作のコピーを記憶するキューエントリ208の有効フィールド220の有効ビットを消去することによって達成される。そうすることで、エントリ208は、異なる命令動作を記憶するためにエントリ208を利用可能にするように、命令動作の無効なコピーをフラッシュするために利用可能になる。
【0038】
そうではなく、ブロック608においてパイプ占有率の十分な不均衡が検出された場合、ブロック612において、割り当てコンポーネント222は、命令動作が最終的に割り当てられる適切な実行パイプ116を動的に選択するために、現在のパイプ占有率、命令動作を実行可能なタイプの実行パイプ116の各々に事前に割り当てられた後続の命令動作の数等の様々なパラメータを評価する。いくつかの状況では、選択された実行パイプ116は、命令動作が事前に割り当てられた実行パイプと同じである。他の状況では、同じ又は類似の能力の別の実行パイプ116は、命令動作のタイムリーな実行をもたらすように良好に配置されており、よって、命令動作の割り当ては、この別の実行パイプに切り替わる。何れの場合においても、割り当てコンポーネント222は、選択された実行パイプ116に関連するSQ122における命令動作のコピーの有効ステータスを維持し、他のSQ122における命令動作のコピーを無効化するように、キュー更新コンポーネント226に指示する。ブロック610,612について、2つよりも多いSQ122が実装される場合、命令動作の単一のコピーのみが有効として維持され(すなわち、命令動作に最終的に割り当てられる実行パイプに関連するSQ内のコピー)、他のSQ122における全ての他のコピーが無効化される。
【0039】
投機的割り当てモード244は、キューコントローラ126が、ピック不可能スケジューラキューレベルにおいて実行パイプ割り当てを必要とするのではなく、命令動作がピック可能スケジューラキューレベルに割り当てられた後まで各々の命令動作の最終割り当てを遅延させることによって、パイプ占有率をより細かく調整し、よって、改善したパイプ均衡及びパイプスループットを達成することを可能にする。この遅延は、キューコントローラ126が、命令動作が実行のためにピックされる時点により近い、互換性のある実行パイプ116のパイプ占有率を評価するための追加の時間を可能にし、よって、キューコントローラ126は、より正確な割り当て決定を行うことが可能である。しかしながら、投機的割り当てモード244は、NSQ118からSQ122に割り当てられた命令動作毎に2つの出力ポート206(割り当てられる命令動作のコピー毎に1つの出力ポート206)の使用を必要とし、よって、割り当てサイクル毎の命令動作の効果的な割り当てレートは、最大NSQ対SQ割り当てレートの2分の1に過ぎない。よって、図8を参照して以下に更に詳細に説明するように、投機的割り当てモード244によってもたらされる比較的遅い入力レートに起因するキューアンダーフローの可能性を低減又は除去するように、実行パイプ116の現在のピックレートが十分に低い場合には、投機的割り当てモード244がより効果的に実施される。
【0040】
図7は、3個の命令動作(OP1,OP2,OP3)のコピーがNSQ118から2つのSQ122-1,122-2の各々に投機的に割り当てられる実施形態における投機的割り当て処理の例を示す図である。事前割り当て処理の間(ブロック604)、OP1は、実行パイプ116-1(EX0)に事前に割り当てられ、OP2は、実行パイプ116-5(EX3)に事前に割り当てられ、OP3は、実行パイプ116-3(EX4)に事前に割り当てられる。ステージ701によって示すように、投機的割り当て処理の間(ブロック606)、命令動作OP1,OP2,OP3の各々のコピーは、SQ122-1及びSQ122-2の両方に割り当てられる。このポイントにおいて、それらの動作の有効性ステータスは、命令動作のそれらのコピーの有効性がこのポイントにおいて適切でないことを示すために、対応するキューエントリ208の有効フィールド(図2)において「X」でマーク付けされる。したがって、いくつかの実施形態では、コピーは、最初に有効状態に設定され、他の実施形態では、コピーは、最初に無効状態に設定される。
【0041】
ステージ702によって表されるように、最初の割り当ての後、割り当てコンポーネント222は、命令動作OP1を実行可能な実行パイプ116の現在のパイプ占有率を判別し、この例では、実行パイプ116-1(EX0)が10個の保留中の命令動作を有しており、実行パイプ116-4(EX1)が1つのみの保留中の命令動作を有していることを明らかにする。よって、パイプ占有率の差は、9個の動作である。この特定の例では、パイプ不均衡を示すための閾値は、6個の動作である。したがって、パイプ占有率の差がこの閾値を上回るので、パイプ不均衡をシグナリングすることになる。したがって、OP1がSQ122-1に関連する実行パイプ116-1(EX0)に事前に割り当てられているが、割り当てコンポーネント222は、識別されたパイプ不均衡に起因して、命令動作OP1を実行するのに最も適したSQ122及び対応する実行パイプを動的に選択するために、SQ122-1とSQ122-2との間のキュー占有率の差等の他の条件を考慮して、このパイプ占有率の不均衡を評価する。この例では、割り当てコンポーネント222は、実行パイプ116-4(EX1)に命令動作OP1を割り当てるべきと判別し、よって、SQ122-2に関連する実行パイプ116-4に命令動作OP1を再度割り当てる。したがって、ステージ703において表されるように、キュー更新コンポーネント226は、SQ122-1についての命令動作OP1の対応するコピーを記憶するSQ122-1のエントリ208の有効フィールドを消去する(例えば、「0」に設定)ことによって、及び、SQ122-2についての命令動作OP1の対応するコピーを記憶するSQ122-2のエントリ208の有効フィールドをアサートする(例えば、「1」に設定)ことによって、この最終割り当てをシグナリングする。
【0042】
次に、ステージ704によって表されるように、割り当てコンポーネント222は、命令動作OP2を実行可能な実行パイプ116の現在のパイプ占有率を判別し、この例では、実行パイプ116-2(EX2)が8個の保留中の命令動作を有しており、実行パイプ116-5(EX3)が3個の保留中の命令動作を有していることを明らかにする。事前に割り当てられた実行パイプ(EX3)の現在のパイプ占有率が、他のSQ122における代替実行パイプ(EX2)の現在のパイプ占有率よりも低いので、パイプ不均衡がシグナリングされない。したがって、OP2が、SQ122-2に関連する実行パイプ116-5(EX3)に事前に割り当てられているので、割り当てコンポーネント222は、この割り当てを最終割り当てとして維持する。よって、ステージ705によって表されるように、キュー更新コンポーネント226は、SQ122-1についての命令動作OP2の対応するコピーを記憶するSQ122-1のエントリ208の有効フィールドを消去することによって、及び、SQ122-2についての命令動作OP2の対応するコピーを記憶するSQ122-2のエントリ208の有効フィールドをアサートすることによって、この最終割り当てをシグナリングする。
【0043】
その後、ステージ706によって表されるように、割り当てコンポーネント222は、命令動作OP3を実行可能な実行パイプ116の現在のパイプ占有率を判別し、この例では、実行パイプ116-3(EX4)が9個の保留中の命令動作を有しており、実行パイプ116-5(EX3)が6個の保留中の命令動作を有していることを明らかにする。事前に割り当てられた実行パイプ(EX4)の現在のパイプ占有率が、他のSQ122における代替実行パイプ(EX5)の現在のパイプ占有率を6個の動作の閾値以上上回っていないので、パイプ不均衡がシグナリングされない。したがって、OP3が、SQ122-1に関連する実行パイプ116-3(EX4)に事前に割り当てられているので、割り当てコンポーネント222は、この割り当てを最終割り当てとして維持する。よって、ステージ707によって表されるように、キュー更新コンポーネント226は、SQ122-2についての命令動作OP3の対応するコピーを記憶するSQ122-2のエントリ208の有効フィールドを消去することによって、及び、SQ122-1についての命令動作OP3の対応するコピーを記憶するSQ122-1のエントリ208の有効フィールドをアサートすることによって、この最終割り当てをシグナリングする。
【0044】
図8は、いくつかの実施形態による、分散スケジューラ102についての割り当てモード選択のための例示的な方法800を示す図である。上述したように、キュー優先割り当てモード240、パイプ優先割り当てモード242、及び、投機的割り当てモード244の各々は、いくつかの状況では、不均衡を効果的に軽減するが、他の状況では、不均衡を助長する(又は、少なくとも実質的に是正しない)ことがある。したがって、方法800によって示すように、少なくとも1つの実施形態では、分散スケジューラ102は、実際の又は予想された不均衡の特定のインジケータに応じて、2つ以上の割り当てモード間を切り替えるように動作する。このようにして、分散スケジューラ102は、検出された不均衡に対処するために、又は、予想された不均衡を生じさせないために、特に適した割り当てモードを選択する。
【0045】
一実施形態では、方法800の反復は、ブロック802において、モード制御コンポーネント224が、パイプ不均衡、キュー不均衡、又は、両方の不均衡があるかどうかを判別するために、キューステータスコンポーネント228及びパイプステータスコンポーネント230の各々によって取得されたキューステータス情報及びパイプステータス情報を評価することによって開始する。例示すると、いくつかの実施形態では、同じ又は類似のタイプの2つの実行パイプ間のパイプ占有率の差が所定の閾値を上回るというインジケータが存在する場合、アクショナブルな不均衡がシグナリングされる。他の実施形態では、SQ122間のキュー占有率の差が所定の閾値を上回るというインジケータが存在する場合、アクショナブルな不均衡がシグナリングされる。更なる他の実施形態では、パイプ不均衡インジケータ及びキュー不均衡インジケータの両方が存在する場合にのみ、アクショナブルな不均衡がシグナリングされる。例示すると、いくつかの実施形態では、1つのSQ122のキュー占有率が他のSQ122のキュー占有率を少なくとも第1の閾値量だけ上回り、1つの実行パイプ116のパイプ占有率が同一のタイプの他の実行パイプ116のパイプ占有率を少なくとも第2の閾値量だけ上回る場合にのみ、分散スケジューラ102における不均衡がシグナリングされる。そうでなければ、この実施形態では、2つの閾値のうち何れかを上回ったとしても、不均衡がシグナリングされない。
【0046】
ブロック802においてキュー/パイプ不均衡の存在が検出された場合、ブロック804において、モード制御コンポーネント224は、割り当てモードが変更されるまで、後続の割り当てサイクルの間にパイプ優先割り当てモード242を実施するようにキューコントローラ126を構成する。そうではなく、ブロック802においてキュー/パイプ不均衡が存在しない見なされた場合、ブロック806において、モード制御コンポーネント224は、実行パイプ116の現在のピックレートを判定するようにピックレートコンポーネント232にクエリし、この平均ピックレートを所定の最小ピックレート閾値と比較する。一実施形態では、現在のピックレートは、スライドする時間ウインドウについての平均ピックレートを表し、平均は、例えば、スライドするウインドウ内の全ての実行パイプ116のピックレートの平均、スライドするウインドウ内の特定のタイプの実行パイプ116のピックレートの平均、及び、個々の実行パイプ116のピックレートの平均等である。平均ピックレートが十分でない場合(すなわち、この最小ピックレート閾値を上回らない場合)、ブロック808において、モード制御コンポーネント224は、平均ピックレートが所定の閾値を上回って上昇するまで、後続の割り当てサイクルの間の分散スケジューラ102における実施のために投機的割り当てモード244を選択し、所定の閾値は、分散スケジューラ102を投機的割り当てモード244に置くために使用されるのと同じ閾値又は異なる閾値である。一例として、サイクル毎に2.5個の動作の閾値ピックレートは、投機的割り当てモードに移行することをトリガするために使用され、一方で、サイクル毎に2.65個の動作の閾値ピックレートは、投機的割り当てモード244から出ることをトリガするために使用される。よって、平均ピックレートが十分である場合(すなわち、最小ピックレート閾値を上回る場合)、ブロック810において、モード制御コンポーネント224は、後続の割り当てサイクルの間の分散スケジューラ102による実施のためにキュー優先割り当てモード240を選択する。次に、方法800は、ブロック802に戻り、ブロック802において、モード制御コンポーネント224は、その間に生じたパイプ/キュー不均衡又はピックレート減少を検出するために、対応する監視/ポーリングサイクルにおいてキューステータスコンポーネント228及びパイプステータスコンポーネント230を監視又はポーリングする。
【0047】
方法800は、所定の分析サイクルの間に、パイプ/キュー不均衡が最初にチェックされ、次に、ピックレートが分析されるフローを表しているが、他の実施形態では、ピックレートが最初に分析され、十分であることが分かった場合に、パイプ/キュー不均衡が評価される。更に、少なくともいくつかの実施形態では、方法800によって表される割り当てモード選択処理は、ハードウェア状態機械として実装され、ハードウェア状態機械では、パイプ/キュー不均衡の存在は、キュー優先割り当てモード240からパイプ優先割り当てモード242へのモード変更をトリガし、不十分なピックレートの検出は、現在実施されているあらゆる割り当てモードから投機的割り当てモード244への変更をトリガする。
【0048】
いくつかの実施形態では、上記の装置及び技術は、図1図8を参照して上述したマルチモーダル分散スケジューラ102を実装するプロセッサ100等のように、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【0049】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0050】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0051】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0052】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】