(57)【特許請求の範囲】
【請求項１】
ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するように構成された処理回路であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理回路と、
前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように構成された推論制御回路であって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御回路とを備え、
前記処理回路が、推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するように構成され、
前記推論制御回路が、前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するようにさらに構成され、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減がデータ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件であり、
前記推論制御回路が前記推論削減条件の検出にさらに応答して前記推論幅表示を削減する、データ処理装置。
【請求項２】
前記進行表示が、前記推論的ベクトル演算の実行中に前記処理回路内で発生するスループットに影響を及ぼすイベントを示す、請求項１に記載のデータ処理装置。
【請求項３】
前記進行表示が、前記推論的ベクトル演算の実行中に前記処理回路内で発生するエネルギー消費に影響を及ぼすイベントを示す、請求項１又は請求項２に記載のデータ処理装置。
【請求項４】
前記マイクロアーキテクチャ上のイベントが、キャッシュ・ミスのイベント及びトランスレーション・ルックアサイド・バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）・ミスのイベントの少なくとも一方を備える、請求項１から３までのいずれかに記載のデータ処理装置。
【請求項５】
前記推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドの最初のベクトル要素をさらに識別する、請求項１から４までのいずれかに記載のデータ処理装置。
【請求項６】
前記推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の前記個数を、前記最初のベクトル要素から開始するシーケンシャルなベクトル要素の指定された個数であると識別する、請求項５に記載のデータ処理装置。
【請求項７】
前記処理回路が、命令のベクトル・ループを実行するように構成され、前記ベクトル・ループが、ベクトル演算の前記シーケンスを定義する命令と、ベクトル演算の前記シーケンスの実行に続く、前記ベクトル・ループ内のコミット・ポイントで実行される少なくとも１つの評価命令とを含み、前記少なくとも１つの評価命令の実行により、必要なベクトル幅が決定され、
前記推論制御回路が、前記必要なベクトル幅の決定に応答して、前記推論幅表示の現在の値を参照してベクトル演算の前記シーケンスの実行が推論過剰に至ったか推論不足に至ったかについて決定し、前記推論不足のイベントでは、リピート・フラグを設定して命令の前記ベクトル・ループのさらなる反復を実行させる、請求項１から６までのいずれかに記載のデータ処理装置。
【請求項８】
命令の前記ベクトル・ループのさらなる反復が行われると、前記推論制御回路が、命令の前記ベクトル・ループの先行反復中に処理されたベクトル要素の個数を考慮して変更した初期値に前記推論幅表示を初期化するように構成される、請求項７に記載のデータ処理装置。
【請求項９】
前記ベクトル・ループが、前記コミット・ポイント後に実行される１つ又は複数の非推論的命令を含み、前記推論制御回路が、前記１つ又は複数の非推論的命令によって定義された前記非推論的演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、マスク値を設定するようにさらに構成される、請求項７又は請求項８に記載のデータ処理装置。
【請求項１０】
前記処理回路によるアクセス用に前記ベクトル・オペランドを記憶するように構成されたベクトル・レジスタ・バンクをさらに含み、
前記処理回路が、前記ベクトル・レジスタ・バンクとキャッシュ・ストレージの少なくとも１つのレベルを含むメモリ・システムとの間でベクトル・オペランドを移動させるためにベクトル・アクセス演算を実行するように構成されたデータ・アクセス回路を含み、
前記データ・アクセス回路が、前記ベクトル・アクセス演算の実行中に発生するキャッシュ・ミスに関する情報を前記進行表示として発するように構成される、請求項１から９までのいずれかに記載のデータ処理装置。
【請求項１１】
前記ベクトル・アクセス演算の実行中に前記データ・アクセス回路によって参照されるトランスレーション・ルックアサイド・バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）をさらに備え、前記データ・アクセス回路が、前記ベクトル・アクセス演算の実行中に発生するＴＬＢミスに関係する情報を前記進行表示として発するようにさらに構成される、請求項１０に記載のデータ処理装置。
【請求項１２】
前記処理回路が、前記推論幅表示の前記削減に応答して、前記推論幅表示を削減させる前記推論削減条件の検出に至る進行表示をもつ前記ベクトル演算から始まる前記シーケンスで発生する選択されたベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する、請求項１から１１までのいずれかに記載のデータ処理装置。
【請求項１３】
前記処理回路が、前記推論幅表示の前記削減にさらに応答して、前記推論幅表示を削減させる前記推論削減条件の検出に至る進行表示をもつ前記ベクトル演算前の前記シーケンスで発生する非完結ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する、請求項１２に記載のデータ処理装置。
【請求項１４】
前記推論幅表示の削減に応答して前記処理回路の１つ又は複数のコンポーネント内の電力消費を削減するように構成された制御回路をさらに備える、請求項１から１３までのいずれかに記載のデータ処理装置。
【請求項１５】
前記制御回路が、前記１つ又は複数のコンポーネント内の電力消費を削減するために、クロック・ゲーティング及びパワー・ゲーティングのうちの少なくとも１つを利用する、請求項１４に記載のデータ処理装置。
【請求項１６】
前記推論幅表示がそれに初期化される前記初期値及び前記推論削減基準の少なくとも１つが、前記データ処理装置によって実行される命令によって指定される、請求項１から１５までのいずれかに記載のデータ処理装置。
【請求項１７】
前記推論幅表示がそれに初期化される前記初期値及び前記推論削減基準の少なくとも１つが、あらかじめ定められる、請求項１から１５までのいずれかに記載のデータ処理装置。
【請求項１８】
前記処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に、コミット・ポイントで使用された推論幅値に関する履歴データを維持するように構成された予測回路をさらに備え、
前記予測回路が、前記処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、前記履歴データを参照して、推論的ベクトル演算の前記現在のシーケンスの実行に先立って前記推論幅表示がそれに設定されるべき前記初期値を決定するように構成される、請求項１から１５までのいずれかに記載のデータ処理装置。
【請求項１９】
前記処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に使用される推論削減基準に関する履歴データを維持するように構成された予測回路をさらに備え、
前記予測回路が、前記処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、前記履歴データを参照して、推論的ベクトル演算の前記現在のシーケンスの実行用に使用される前記推論削減基準を決定するように構成される、請求項１から１５までのいずれかに記載のデータ処理装置。
【請求項２０】
前記推論制御回路が、推論的演算のモードをトリガする推論開始命令の実行に応答し、前記処理回路が、前記推論的演算モード中に実行される命令に応答して、前記推論的ベクトル演算を実行するように構成される、請求項１から１９までのいずれかに記載のデータ処理装置。
【請求項２１】
前記推論制御回路が、前記推論的演算モードを終結するコミット命令の実行に応答する、請求項２０に記載のデータ処理装置。
【請求項２２】
前記推論制御回路が、それぞれのベクトル・オペランドの少なくとも１つのベクトル要素が前記推論的ベクトル演算を受けるべきであることを示す前記推論幅表示を変更するために前記推論削減条件に応答する、請求項１から２１までのいずれかに記載のデータ処理装置。
【請求項２３】
前記推論削減基準が、前記推論制御回路によって維持される性能許容情報を含み、
前記推論制御回路が、推論的ベクトル演算の前記シーケンスの実行中に生成される前記進行表示を考慮した前記性能許容情報を調整するように構成され、
前記推論制御回路が、前記性能許容情報がトリガ・ポイントに達した場合に前記推論削減条件を検出するように構成される、請求項１から２２までのいずれかに記載のデータ処理装置。
【請求項２４】
前記推論制御回路が、前記推論幅表示が削減されるべき量を決定するとき前記性能許容情報を参照する、請求項２３に記載のデータ処理装置。
【請求項２５】
前記推論削減条件の検出時に前記推論幅表示が削減されるべき量があらかじめ定められている、請求項１から２４までのいずれかに記載のデータ処理装置。
【請求項２６】
データ処理装置における推論的ベクトル演算の実行を制御する方法であって、
ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するステップであって、それぞれのベクトル・オペランドが、複数のベクトル要素を含む、実行するステップと、
前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するステップあって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、維持するステップと、
推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するステップと、
前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するステップであって、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減が前記データ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件である、検出するステップと、
前記推論削減条件の検出時に、前記推論幅表示を削減するステップとを含む、方法。
【請求項２７】
請求項１から２５のいずれか一項に記載のデータ処理装置に対応するプログラム命令用に仮想マシン実行環境を実現するためにコンピュータを制御するためのコンピュータ・プログラムを非一時的に記憶するコンピュータ・プログラム製品
【請求項２８】
ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するための処理手段であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理手段と、
前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するための推論制御手段であって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御手段とを備え、
前記処理手段が、推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するためものであり、
前記推論制御手段が、前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するためものであり、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減が前記データ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件であり、
前記推論制御手段が、前記推論幅表示を削減することによって前記推論削減条件の検出に応答するためものである、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法に関する。
【背景技術】
【０００２】
データ処理装置の実行を改善するための１つの知られた技術は、ベクトル演算の実行をサポートするための回路を設けることである。ベクトル演算は、少なくとも１つのベクトル・オペランドに対して実行され、それぞれのベクトル・オペランドが、複数のベクトル要素を含む。次いで、ベクトル演算の実行は、ベクトル・オペランド内の種々のベクトル要素にわたって演算を繰り返して適用することを伴う。
【０００３】
ベクトル演算の実行をサポートする典型的なデータ処理システムでは、ベクトル・レジスタ・バンクが、ベクトル・オペランドを記憶するために設けられる。したがって、例として、ベクトル・レジスタ・バンク内のそれぞれのベクトル・レジスタは、複数のベクトル要素を含むベクトル・オペランドを記憶することができる。
【０００４】
高性能の実装において、ベクトル処理回路（ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）処理回路としばしば呼ばれる）を設けることも知られており、これにより、ベクトル・オペランド内の種々のベクトル要素に必要な演算を並行して実行することができる。代替の実施例では、スカラ処理回路が、ベクトル演算を実装するためにいまだ使用され得るが、この例では、ベクトル演算が、スカラ処理回路を通じて演算の反復実行によって実行され、それぞれの反復は、ベクトル・オペランドの別個のベクトル要素に対して作用する。
【０００５】
ベクトル演算の使用を通じて、相当する一連のスカラ演算の実行と比較されるとき、実行の有意な利点が実現され得る。
【０００６】
ベクトル処理の実行の利点を得ようとするとき、一連のスカラ演算を相当する一連のベクトル演算に置き換えるために、一連のスカラ演算をベクトル化しようとすることが知られている。例えば、一連のスカラ命令を含むループに対して、一連のスカラ命令を相当する一連のベクトル命令に置き換えることによってそのループをベクトル化することが可能になり、ベクトル・オペランドが、ベクトル要素として、元のスカラ・ループの別個の反復に関する要素を含むことができる。
【０００７】
しかしながら、こうした手法は、元のスカラ・ループを通じて必要な反復の回数があらかじめ定められているときはよく機能することができるが、反復の回数があらかじめ定められてないときはこうしたループのベクトル化がより困難となる。特に、反復の回数があらかじめ定められてないので、どのくらいの個数のベクトル要素がそれぞれのベクトル・オペランドに必要かをあらかじめ定めることができない。
【０００８】
上記のタイプのいくつかの状況では、推論的ベクトル処理を実行することが可能であり、ベクトル要素の必要な個数に関して推論が実行され、必要なベクトル要素の正確な個数が定められた後に是正措置がとられる。
【０００９】
Ｋ  Ａｓａｎｏｖｉｃによる「Ｖｅｃｔｏｒ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒｓ」という名称の博士論文１１６〜１２１頁、バークレー、１９８８年では、ベクトル・オペランドの幅全体にわたる推論を実行すること、加えて推論中に発生したアーキテクチャ上のイベント（例えばページ・フォルト）を追跡することについて検討している。こうしたアーキテクチャ上のイベントが例外をトリガすることにより、例外ルーチンが、例外を解決するためにオペレーティング・システムによって実行される。提案された手法は、こうしたアーキテクチャ上のイベントが検出された、ベクトル幅内のそれぞれのベクトル要素位置の記録を保持する。後に、必要なベクトル要素位置のセットが既知であるコミット・ポイントに達したとき、それぞれの必要なベクトル要素位置が、このアーキテクチャ上のイベントの記録に対して比較される。必要なベクトル要素位置に関連するいずれかのアーキテクチャ上のイベントが、ベクトル処理回路がベクトル演算を正確に実行することを妨げるので、コミット・ポイントでいずれかのこうした例外の延期がトリガされる。必要なベクトル要素位置のセットのいずれもアーキテクチャ上のイベントに関連しない場合、ベクトル長及びマスクが更新され、アーキテクチャ上のイベントの記録がクリアされる。
【００１０】
上記のプロセスにより、コミット・ポイントでアーキテクチャ上のイベントをマスク・アウトすることによって正確な演算を確実にしながら、推論的ベクトル処理を実行することが可能になる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Ｋ  Ａｓａｎｏｖｉｃ、「Ｖｅｃｔｏｒ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒｓ」、博士論文１１６〜１２１頁、バークレー、１９８８年
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記の手法は、推論的ベクトル処理演算を実行しながら正確な演算を確実にすることができるが、推論的ベクトル処理を実行する利点に影響を及ぼし得る他の要因はある。先に述べたように、推論がなされる時点で、必要な反復の回数が既知ではなく、したがって、これらの演算が必要でなかったと判明した後にだけ、装置の性能特性（例えばスループット又はエネルギー消費）に不利な影響を及ぼし得る一定の演算を実行する可能性がある。したがって、装置の性能特性へのこうした推論的ベクトル処理の影響を管理しながら推論的ベクトル演算を実行するための機構を提供することが望まれることになる。
【課題を解決するための手段】
【００１３】
第１の態様から見ると、本発明は、データ処理装置を提供し、そのデータ処理装置が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するように構成された処理回路であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理回路と、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように構成された推論制御回路であって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御回路とを備え、前記処理回路が、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するように構成され、推論制御回路が、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するようにさらに構成され、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて、推論幅表示の削減がデータ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件であり、推論制御回路が、前記推論削減条件の検出にさらに応答して、推論幅表示を削減する。
【００１４】
現在の推論幅がデータ処理装置の選択された性能特性（例えばスループット又はエネルギー消費）に有意に不利な影響を与えると思われる状況を決定するために、推論的ベクトル演算のシーケンスの実行中に進行表示を生成するように処理回路を構成することによって、これにより、推論制御回路が推論削減基準（これは、固定された基準でよく、又は推論制御回路によるアクセス用に記憶された基準でもよく、再構成もされ得る）に対してこれらの進行表示を評価することができる。こうした状況を検出すると同時に、次いで、推論的制御回路が、推論幅表示を削減するように構成されて、それによって、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を削減する。
【００１５】
進行表示は、典型的に、推論的ベクトル演算の実行が性能特性に不利に影響を及ぼしているいずれかのベクトル要素位置を、推論制御回路が識別することを可能にするように構成される。例えば、それぞれの進行表示は、進行表示が関係するベクトル要素位置を具体的に識別することができる。
【００１６】
単に例として、推論的ベクトル・ロード演算の実行中に要素位置ｘでメモリからロードされる特定のベクトル要素が、システムのキャッシュ階層内の一定のキャッシュ・レベルでキャッシュ・ミスになったことを、進行表示が識別する場合、推論削減基準は、こうしたキャッシュ・ミス・イベントに関連した予想されるレイテンシを識別することができ、又は、こうしたイベントの発生が推論削減条件を示すものであると直接識別することができる。推論的ベクトル処理は、依然として現在指定されている推論幅で正確に実行され続けることができるが、これは、キャッシュ・ミスによって導かれるレイテンシに因り、実行に有意な影響を及ぼす可能性があり、また、要素位置ｘまたそれより高位の要素位置を除外するようにこのポイントで推論幅を削減することによって、このレイテンシは回避され得る。その後、ベクトル演算のシーケンスは、要望に応じて、省略されたベクトル要素に対してベクトル演算を実行しようとするために繰り返され、これは、ベクトル演算のシーケンスが繰り返される時点に因り、同じレイテンシの問題は起こらない（例えば、必要なデータ要素がキャッシュ中に存在し、したがってキャッシュ・ミスが起こらないとしてもよい）とすることができる。
【００１７】
したがって、本発明の使用を通じて、特定の推論幅での推論的ベクトル演算の実行が、選択された性能特性に過度の不利な影響を及ぼす状況を回避しようとすることによって、推論的ベクトル演算を実行しながら、データ処理装置の少なくとも１つの性能特性が改善され得る。
【００１８】
進行表示は、種々の形式をとり得る。一実施例では、進行表示が、推論的ベクトル演算の実行中に処理回路内で発生するスループットに影響を及ぼすイベントを示す。或いは又は加えて、進行表示が、推論的ベクトル演算の実行中に処理回路内で発生するエネルギー消費に影響を及ぼすイベントを示すことができる。一実施例では、進行表示によって示される影響を及ぼすイベントは、性能特性に否定的な影響を及ぼすイベントであるが、一実施例では、影響を及ぼすイベントは、予想より迅速に実行される又はエネルギー消費が少ない特定の演算などの、性能特性に肯定的な影響を及ぼすイベントも識別することができる。
【００１９】
進行表示の生成をトリガするイベントは、種々の形式をとり得る。一実施例では、進行表示の少なくともいくつかが、推論的ベクトル演算の実行中に処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される。
【００２０】
プロセッサの特徴、コンポーネント又は挙動は、それが、実行の品質にだけ影響を及ぼし（例えば、プロセッサがプログラムを作動させるための時間又はエネルギーを多かれ少なかれ使用する）、実行の適正さ（例えば、それが命令セット・アーキテクチャを正確に実行するかどうか）に影響を及ぼさない場合、「マイクロアーキテクチャ上の」ものと考えることができる。例えば、現代のプロセッサは、分岐を加速するために分岐予測器を、メモリの読出しを加速するためにキャッシュを、メモリの書込みを加速するためにライト・バッファを、ページ・テーブル・ルックアップを加速するためにトランスレーション・ルックアサイド・バッファを、命令のシーケンスの実行を加速するためにパイプラインを使用する。これらの特徴は、それらがプログラムの最終結果に影響を及ぼさないで実行を加速するので、全てマイクロアーキテクチャ上の特徴であると考えることができる。
【００２１】
これは、実行の適正さに影響を及ぼす、プロセッサの特徴、コンポーネント又は挙動と対比され、こうした特徴、コンポーネント又は挙動は「アーキテクチャ上の」ものと考えるべきである。例えば、現代のプロセッサは、仮想メモリを実装するためにページ・テーブル及びページ・フォルト例外を、コンテキスト・スイッチをサポートするために割込みを、「０で割る」などの算術エラー条件に対処するために算術例外を使用する。アーキテクチャ上の特徴、コンポーネント又は挙動は、典型的に、例えば追加命令を実行させることによってプログラム例外に影響を及ぼすアーキテクチャ上のイベントを生じさせる。対照的に、マイクロアーキテクチャ上の特徴、コンポーネント又は挙動は、マイクロアーキテクチャの挙動に影響を及ぼすが、アーキテクチャ上のレベルではいずれの影響も与えない、マイクロアーキテクチャ上のイベントを生じさせる。これらにより、例えば、他の場合よりわずかに遅くプログラムが作動するが、プログラムの実行には影響を及ぼさない。
【００２２】
推論幅表示は、種々の形式をとることができる。例えば、推論幅表示は、マスク、又は、開始要素位置及び／又は終了要素位置などの特定の要素位置を識別する１つ若しくは複数のレジスタの内容によって指定され得る。一実施例では、推論幅表示が、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示すだけでなく、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドの最初のベクトル要素をさらに識別する。
【００２３】
推論的ベクトル演算を受けるベクトル要素の個数は、一連の隣接したベクトル要素位置を占める必要はないが、一実施例では、推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を、前記最初のベクトル要素から開始するシーケンシャルなベクトル要素の指定された個数であると識別する。
【００２４】
一実施例では、処理回路が、命令のベクトル・ループを実行するように構成され、ベクトル・ループが、ベクトル演算の前記シーケンスを定義する命令と、ベクトル演算の前記シーケンスの実行に続く、ベクトル・ループ内のコミット・ポイントで実行される少なくとも１つの評価命令とを含み、前記少なくとも１つの評価命令の実行により、必要なベクトル幅が決定される。さらに、推論制御回路は、必要なベクトル幅の決定に応答して、推論幅表示の現在の値を参照してベクトル演算の前記シーケンスの実行が推論過剰に至ったか推論不足に至ったかについて決定し、前記推論不足のイベントでは、リピート・フラグを設定して、命令の前記ベクトル・ループのさらなる反復を実行させる。したがって、推論幅は、推論的ベクトル演算の実行中に要望に応じて変更され、推論的ベクトル演算のシーケンスのその後の反復は、必要なベクトル要素の全てに対してベクトル演算が最終的に実行されることを確実にするように、随時実行され得る。
【００２５】
一実施例では、命令のベクトル・ループのさらなる反復が行われると、推論制御回路が、命令のベクトル・ループの先行反復中に処理されたベクトル要素の個数を考慮して変更した初期値に推論幅表示を初期化するように構成される。
【００２６】
一実施例では、ベクトル・ループが、コミット・ポイント後に実行される１つ又は複数の非推論的命令を含み、推論制御回路が、前記１つ又は複数の非推論的命令によって定義された非推論的演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、マスク値を設定するようにさらに構成される。一実施例では、推論不足のイベントで、このマスクが、コミット・ポイントに存在する推論幅の値を識別するように設定されるが、推論過剰のイベントでは、マスクは、コミット・ポイントで決定された必要なベクトル幅を識別するように設定される。
【００２７】
一実施例では、データ処理装置が、処理回路によるアクセス用にベクトル・オペランドを記憶するように構成されたベクトル・レジスタ・バンクを含み、処理回路が、ベクトル・レジスタ・バンクとキャッシュ・ストレージの少なくとも１つのレベルを含むメモリ・システムとの間でベクトル・オペランドを移動させるためにベクトル・アクセス演算を実行するように構成されたデータ・アクセス回路を含む。こうした一実施例では、データ・アクセス回路が、ベクトル・アクセス演算の実行中に発生するキャッシュ・ミスに関する情報を進行表示として発するように構成され得る。こうしたキャッシュ・ミスは、有意なレイテンシを生じさせる可能性があり、したがって推論幅を削減するかどうかを決定するときに有用な情報をもたらすことができる。
【００２８】
一実施例では、データ処理装置が、ベクトル・アクセス演算の実行中にデータ・アクセス回路によって参照されるトランスレーション・ルックアサイド・バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）をさらに備え、データ・アクセス回路が、ベクトル・アクセス演算の実行中に発生するＴＬＢミスに関係する情報を進行表示として発するようにさらに構成される。そのイベントではＴＬＢ内のストレージ用の必要なページ・テーブル情報をメモリから取得するために「ページ・テーブル・ウォーク」プロセスを実行することを必要としてもよく、したがって、ＴＬＢミスの指示が、推論幅を削減するかどうかを決定するとき有用な情報をもたらすこともできるので、ＴＬＢミスが、有意なレイテンシを生じさせることもできる。
【００２９】
進行表示の上記の２つの例は、データ・アクセス回路のアクティビティに関するが、これは、処理回路の他のコンポーネントが、推論制御回路に進行表示を与えるように構成もされ得ることが理解されよう。実行される推論的ベクトル演算が、システム内のこれらの他のコンポーネントに性能的な影響を及ぼす可能性があるので、実際には、推論的ベクトル演算を実行している処理回路によって発される進行表示に加えて、進行表示は、システム内の他のコンポーネント、例えばスカラ演算を実行するように構成されたスカラ回路によって発されてもよい。例えば、推論的ループが多数の演算（ベクトルでもスカラでも）を含む場合、非常に多い推論幅の分が削減されるならば、これらの演算を繰り返す必要がある。実行されるスカラ演算及びベクトル演算の個数を追跡すると、この潜在的な繰返しコストが推論幅を削減する決定に影響を与えることができる。
【００３０】
一実施例では、データ処理回路が、推論幅表示の削減に応答して、推論幅表示を削減させる推論削減条件の検出に至る進行表示をもつベクトル演算から始まる前記シーケンスで発生する選択されたベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する。特定の一実施例では、選択されたベクトル演算が、その進行表示により推論幅削減となるようなベクトル演算と、シーケンスのその後の全てのベクトル演算とを含む。
【００３１】
さらに、一実施例では、推論幅表示を削減させる推論削減条件の検出に至る進行表示をもつベクトル演算前のシーケンスで発生する非完結ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数をさらに変更するように、この手法が拡張され得る。したがって、これにより、推論幅表示が削減される時点でいまだ進行中である、以前に発されたベクトル演算を受けるベクトル要素の個数の遡及的トリミングが可能となる。したがって、これにより、これらの以前に発された推論的ベクトル演算を完結させる際に別に消費され得るエネルギー消費を削減することができる。
【００３２】
一実施例では、データ処理装置が、推論幅表示の削減に応答して、処理回路の１つ又は複数のコンポーネント内の電力消費を削減するように構成された制御回路をさらに備える。これは、種々の方式で達成され得るが、一実施例では、制御回路が、前記１つ又は複数のコンポーネント内の電力消費を削減するために、クロック・ゲーティング及びパワー・ゲーティングのうちの少なくとも１つを利用する。したがって、クロック・ゲーティング機構が使用される場合、処理回路内の一定のコンポーネントは、修正した推論幅の外側の目下の要素位置で推論的ベクトル演算を実行する際に、コンポーネントのクロック信号を、その電力消費を回避するために取り除くことができる。いくつかの状況では、その代わりにパワー・ゲーティングが、関連するコンポーネントから電源を取り外すために使用され得る。一実施例では、制御回路が、現在の推論幅の指示を継続して受信するように構成されてよく、或いは、推論幅が変化したとき単に指示を受信するように構成されてもよい。
【００３３】
推論幅表示用の初期値及び推論削減基準が、指定され得るいくつかの方式がある。例えば、一実施例では、推論幅表示がそれに初期化される初期値及び推論削減基準の少なくとも１つが、データ処理装置によって実行される命令によって指定される。命令は、処理回路によって実行される命令のうちの１つとすることができ、又は実際に推論制御回路によって実行される特定の命令、例えば推論を開始する命令とすることができる。一代替実施例では、推論幅表示がそれに初期化される初期値及び推論削減基準の少なくとも１つが、あらかじめ定められる。
【００３４】
さらなる実施例では、データ処理装置が、処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に、コミット・ポイントで使用された推論幅値に関する履歴データを維持するように構成された予測回路をさらに備えることができる。このとき予測回路は、処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、履歴データを参照して、推論的ベクトル演算の現在のシーケンスの実行に先立って推論幅表示がそれに設定されるべき初期値を決定するように構成され得る。或いは又は加えて、予測回路が、推論的ベクトル演算の以前のシーケンス用に使用された推論削減基準に関する履歴データを維持し、次いで、履歴データを参照して、推論的ベクトル演算の現在のシーケンス用に使用される推論削減基準を決定することができる。
【００３５】
推論的ベクトル演算のシーケンスは、種々の方式で識別され得る。例えば、命令セットが、一定のベクトル命令の非推論的バージョンと推論的バージョンとを含むことができ、その結果、特定の命令は、推論的であると明確に識別され得る。或いは、データ処理装置が、推論的演算モードを開始し、終了するように構成され、推論的演算モード内で遭遇する全ての命令は、推論的に実行され得る。こうした推論的演算モードがサポートされた一実施例では、推論制御回路が、前記推論的演算モードをトリガする推論開始命令の実行に応答し、処理回路は、前記推論的演算モード中に実行される命令に応答して、推論的ベクトル演算を実行するように構成される。
【００３６】
こうした一実施例では、推論制御回路が、推論的演算モードを終結するコミット命令の実行にさらに応答する。
【００３７】
一実施例では、推論制御回路が、それぞれのベクトル・オペランドの少なくとも１つのベクトル要素が推論的ベクトル演算を受けるべきであることを示す推論幅表示を変更するために、推論削減条件に応答する。推論幅表示の下限をおくことによって、こうしたそれぞれのベクトル・オペランドの少なくとも１つのベクトル要素が処理され、これにより、常に先に進むことが確実になる。推論幅表示が単一のベクトル要素を識別するとき、これは、事実上、推論が全く実行されていないという状況となる。
【００３８】
推論削減基準は、それを満たすならば推論削減条件の存在を示す１つ又は複数の基準を直接指定することができ、或いは又は加えて、推論削減基準は、推論制御回路によって維持される性能許容情報を含むことができ、推論制御回路が、推論的ベクトル演算のシーケンスの実行中に生成される進行表示を考慮した性能許容情報を調整するように構成される。こうした一実施例では、性能許容情報は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかという可能なスラック（ｓｌａｃｋ、あそび）の指標を与えるものと考えることができ、次いでそのスラック指標が、受信した進行表示に依存して調整され得る。一実施例では、進行表示が、選択された性能特性に否定的な影響を及ぼすイベントのみを示すことができ、したがって、スラック指標は、一方向にだけ調整される。ただし、一代替実施例では、進行表示が、否定的な影響を及ぼすイベントと肯定的な影響を及ぼすイベントとの双方を示すことができ、こうした実施例では、スラック指標が、双方向に調整され得る。ただし、性能許容情報（スラック指標）は調整され、性能許容情報がトリガ・ポイントに達した場合、次いで推論制御回路は、推論削減条件を検出するように構成され得る。
【００３９】
一実施例では、推論制御回路は、推論幅表示が削減されるべき量を決定するとき性能許容情報を参照する。これにより、推論幅削減の量が、性能許容を超過する限度を考慮して動的に管理され得る。
【００４０】
或いは、推論削減条件の検出時に推論幅表示が削減されるべき量が、あらかじめ定められていてもよい。これは、推論幅が削減されるべき分の要素位置のプリセット数を識別することによってあらかじめ定められてよく、又は、推論幅をどのように調整するかについて決定するとき、使用される特定のルールを識別することによってあらかじめ定められてもよい。
【００４１】
第２の態様から見ると、本発明は、推論的ベクトル演算の実行を制御する方法を提供し、その方法が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するステップであって、それぞれのベクトル・オペランドが、複数のベクトル要素を含む、実行するステップと、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するステップあって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、維持するステップと、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するステップと、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するステップであって、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて推論幅表示の削減がデータ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件である、検出するステップと、前記推論削減条件の検出時に、推論幅表示を削減するステップとを含む。
【００４２】
第３の態様から見ると、本発明は、本発明の第１の態様によるデータ処理装置に対応するプログラム命令用に仮想マシン実行環境を実現するためにコンピュータを制御するためのコンピュータ・プログラムを非一時的に記憶するコンピュータ・プログラム製品を提供する。
【００４３】
第４の態様から見ると、本発明は、データ処理装置を提供し、そのデータ処理装置が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するための処理手段であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理手段と、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するための推論制御手段であって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御手段とを備え、前記処理手段が、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するためのものであり、推論制御手段が、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するためのものであり、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて推論幅表示の削減がデータ処理装置の少なくとも１つの性能特性を改善すると予想されることを示す条件であり、推論制御手段が、推論幅表示を削減することによって前記推論削減条件の検出に応答するためのものである。
【００４４】
本発明について、単に例として、添付の図面に示すその実施例を参照してさらに説明する。
【図面の簡単な説明】
【００４５】
【図１】一実施例による、データ処理装置のブロック図である。
【図２Ａ】一実施例による、図１の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。
【図２Ｂ】一実施例による、図１の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。
【図２Ｃ】一実施例による、図１の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。
【図３】説明した実施例の技術を使用してベクトル化され得るスカラ命令のループを概略的に示す図である。
【図４】一実施例による、図３のスカラ・ループをベクトル化するために使用されるベクトル命令のシーケンスを概略的に示す図である。
【図５】一実施例による、図３のスカラ・ループをベクトル化するために使用されるベクトル命令のシーケンスを概略的に示す図である。
【図６】推論的ベクトル演算のシーケンスの実施中に、一実施例によれば、推論幅がどのように削減されるかについて概略的に示す流れ図である。
【図７】一実施例による、推論を開始するとき実施されるステップを示す流れ図である。
【図８】一実施例による、コミット・プロセス中に担うステップを示す流れ図である。
【図９】一実施例による、ベクトル演算のシーケンスの実施中に条件終了ステージで実施されるステップを示す流れ図である。
【図１０Ａ】いくつかの実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。
【図１０Ｂ】いくつかの実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。
【図１１Ａ】さらなる実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。
【図１１Ｂ】さらなる実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。
【図１２Ａ】説明した実施例の技術を使用しない推論的ベクトル演算の実行（図１２Ａ）と比較したときの、説明した実施例の技術を使用したとき実現され得る実行（図１２Ｂ）の違いを概略的に示す図である。
【図１２Ｂ】説明した実施例の技術を使用しない推論的ベクトル演算の実行（図１２Ａ）と比較したときの、説明した実施例の技術を使用したとき実現され得る実行（図１２Ｂ）の違いを概略的に示す図である。
【図１３】一実施例による、削減基準がスラック指標の形式で性能許容情報を含む実施例で、推論幅がどのように調整され得るかについて示す流れ図である。
【図１４Ａ】２つの実施例による、スラック指標が、図１３の手法を採用するとき、どのように変化するかについて概略的に示す図である。
【図１４Ｂ】２つの実施例による、スラック指標が、図１３の手法を採用するとき、どのように変化するかについて概略的に示す図である。
【図１５】一実施例による、データ処理装置の仮想マシンの実装を概略的に示す図である。
【発明を実施するための形態】
【００４６】
図１に、一実施例による、データ処理装置５の一部を示す。これはベクトル処理部のみを示しており、ベクトル命令とスカラ命令の両方がデコードされ実行され得るような、スカラ処理回路、スカラ・ロード／記憶ユニット及びスカラ・レジスタ・バンクを設けることもできる。
【００４７】
実行される命令を保持する命令キュー１０が設けられ、これらの命令は、命令をデコードし、また図１の装置内の適切な回路に制御信号を送信するように構成されたデコード回路２０にルーティングされる。特に、一般的なベクトル処理命令の場合、デコード回路２０が、ベクトル処理回路３０内の関連するベクトル処理ユニット３５に制御信号を発し、次いで、ベクトル処理回路３０が、ベクトル・レジスタ・バンク４０内に記憶された１つ又は複数のベクトル・ソース・オペランドを参照して必要なベクトル処理演算を実行する。典型的には、これらの演算の結果は、１つ又は複数のベクトル宛先オペランドとして、ベクトル・レジスタ・バンク４０に再記憶もされ得る。図１に概略的に示すように、ベクトル処理ユニットは、例えば、１つ又は複数の算術論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）など、種々の形式をとることができる。
【００４８】
いずれのベクトル・データ・アクセス命令の場合も、これらの命令をデコードすると、制御信号がベクトル処理回路３０内のベクトル・ロード／記憶ユニット５０に発され、ベクトル処理回路３０は、１つ又は複数のデータ・オペランドを、ベクトル・レジスタ・バンク４０とキャッシュ／メモリ（このキャッシュ／メモリは本明細書ではメモリ・システムとも呼ばれる）との間でどちらの向きにも移動させるように構成される。解説のために示すと、メモリ・システムは、ベクトル・レジスタ・バンクと主メモリ７６との間に位置する、レベル１キャッシュ７２、レベル２キャッシュ７４、及び潜在的なさらなるキャッシュ・レベルからなる階層的キャッシュ構造を含むことができる。
【００４９】
ベクトル・データ・アクセス命令がベクトル・ロード命令である場合、ロード／記憶ユニット５０は、メモリ・システムから少なくとも１つのベクトル・オペランドを、べクトル・レジスタ・バンク４０にロードする。同様に、ベクトル・データ・アクセス命令がベクトル記憶命令である場合、ロード／記憶ユニット５０は、べクトル・レジスタ・バンク４０から少なくとも１つのベクトル・オペランドを、メモリ・システムにロードする。
【００５０】
説明した実施例によれば、処理回路３０は、推論的ベクトル演算のシーケンスを実行するように構成され、推論制御回路６０が、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように設けられ得る。特に、推論制御回路が、いくつかの制御レジスタ６５を有し、一実施例では、これらの制御レジスタのステートが、いつ推論的演算が実行されるかを識別し、現在の推論幅も識別し、制御情報は経路８２を通してベクトル処理回路３０に渡される。
【００５１】
図１に示す実施例では、命令キュー１０に記憶された命令のシーケンスが、推論開始命令を含み、これは、デコード回路２０によってデコードされると、制御信号が推論制御回路６０に発されて演算の推論モードを開始する。特に、一実施例では、推論制御回路６０は、こうした制御信号に応答して、推論モードが目下アクティブであると識別するために推論フラグを制御レジスタ６５内に設定する。次いでこの情報は、経路８２を介してベクトル回路３０にルーティングされ、次いで、デコード回路２０から受信した制御信号に従ってベクトル処理回路３０によって実行されるその後のいずれの演算も、演算の推論モードが終了するその時まで、推論的方式で実行される。一実施例では、デコード回路２０によってデコードされると、これにより、制御信号が推論制御回路６０に送信されて、制御回路が推論フラグをクリアするようなコミット命令を介して、推論モードが、終了する。
【００５２】
説明した実施例では、演算の特定の推論モードが設けられるが、演算の特定の推論モードは必須要件ではない。その代わりに、一代替実施例では、命令セット中の命令の少なくともサブセットの推論的バージョンと非推論的バージョン両方が設けられてもよく、その結果シーケンス内の個別の命令が推論的に実行され得る。
【００５３】
ベクトル処理回路３０によって実行されるいずれの推論的演算の場合も、推論幅表示は、これらの推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、推論制御回路６０内の制御レジスタ６５から経路８２を通して渡される。推論が開始されるとき、推論幅表示は、初期値に初期化され、この初期値は、例えば一実施例では、オペランドのベクトル幅全体とすることができる。したがって、単に例として、ベクトル・オペランドが１６ベクトル要素を含む場合、推論幅表示の初期値は、１６にセットされ得る。
【００５４】
推論的ベクトル演算の実行中に、処理回路３０が、経路８０を通して推論制御回路６０に進行表示を発するように構成される。進行表示は、ベクトル処理回路によって実行される種々の演算の進行についての情報を与える。進行表示は、種々の方式で発され得るが、一実施例では、ベクトル処理回路内のいくつかのイベントにより、進行表示が出力される。一実施例では、これらの進行表示が、スループットに影響を及ぼすイベント及び／又はエネルギー消費に影響を及ぼすイベントを示す。一実施例では、これらのイベントは、スループット又はエネルギー消費に否定的な影響を及ぼすタイプのイベントである。ただし、一代替実施例では、図１３を参照して後に説明するように、これらのイベントは、スループット又はエネルギー消費に肯定的な影響を及ぼすイベントも含むことができる。
【００５５】
こうした進行表示を生じさせるタイプのイベントは、種々の形式をとり得るが、一実施例では、このイベントが、推論的ベクトル演算の実行中に処理回路３０内で発生するマイクロアーキテクチャ上のイベントである。先に検討したようにこうしたマイクロアーキテクチャ上のイベントは、例えば、処理回路が、実行される命令を含むプログラムを作動させるとき、多かれ少なかれ時間又はエネルギーを使用することによって、実行の品質にだけ影響を及ぼすが、実行の正確性は影響を受けない。したがって、マイクロアーキテクチャ上のイベントの存在はそれ自体、変更される回路の演算についてのいずれの要件も提示しない。ただし、以下でより詳細に説明するように、説明した実施例によれば、推論幅の削減が行われずに演算が継続するのに比べて、こうした推論幅の削減がデータ処理装置の少なくとも１つの性能特性をおそらく改善するという状況を決定するために、推論制御回路が進行表示を使用する。
【００５６】
特に、推論制御回路６０は、固定され得る、或いは、例えば命令ストリーム内の命令の実行を介して構成することができる、削減基準７０にアクセスすることができる。削減基準が指定され得るいくつかの方式がある。例えば、推論削減基準が、進行表示を介して報告される一定のイベントに関連した予想されるレイテンシ及び／又はエネルギー消費を識別し、推論制御回路６０が、経時的に受信するイベントに関係するレイテンシ及び／又はエネルギー消費を記録し、一定のトリガ・ポイントに達したときに推論削減条件を検出することができる。或いは、イベントが起きたときに推論削減条件の存在を示す一定のイベントを、削減基準７０が直接識別する。
【００５７】
推論削減条件を検出すると同時に、経路８０を通して受信した削減基準７０に対する進行表示の分析を通じて、推論制御回路６０が、推論幅を削減するように構成され、そのポイントで、制御レジスタ６５の内容が、削減された推論幅を識別するように更新されて、新たな推論幅が経路８２を通してベクトル処理回路３０に転送される。これにより、ベクトル処理回路３０が、進行中のベクトル処理演算を受けるベクトル要素の個数を削減する。特に、少なくとも、推論幅削減に至る進行表示を作成した演算の後で実行されるベクトル演算は、典型的に、削減されたいくつかのベクトル要素に実行される。一実施例では、推論幅削減が行われるような進行表示を生じさせた演算が、いまだ進行中と仮定すれば、そのとき、削減された推論幅は、その演算にも適用され得る。さらに、一実施例では、図１０Ｂを参照して後に説明するように、推論幅削減は、削減が行われる時点でいまだ進行中のいずれのベクトル演算にも、たとえこれらの演算が、推論幅が削減されるような進行表示を生じさせた演算に先立って発されたとしても、影響を及ぼし得る。
【００５８】
現在の推論幅をもつ継続中の演算が、スループット又はエネルギー消費などの性能特性におそらく不利な影響を及ぼす状況を検出する進行表示を使用することによって、そのとき推論制御回路が、その影響を回避するようにするために推論幅を削減することができる。次いで、その推論幅削減の結果として推論的演算から除外されたいずれのベクトル要素も、必要なベクトル要素幅が削減される推論幅より大きいとその後に決定される場合、推論的ベクトル演算のその後の反復の対象となり得る。
【００５９】
推論幅が削減されるときベクトル処理回路３０のエネルギー消費を削減するために、クロック／パワー・ゲーティング回路９２が、任意選択で設けられ、経路９０を介して現在の推論幅の指示を受信するように構成され得る。現在の推論幅情報に基づいて、クロック／パワー・ゲーティング回路が、ベクトル処理回路３０内の種々のコンポーネントに供給されるクロック又は電力を変化させることができる。例えば、推論幅の削減の結果として、処理回路内の一定のコンポーネントが、１つ又は複数のクロック・サイクル用にいずれの演算も実行する必要がないと判断される場合、これらのコンポーネントによって消費される電力を削減するために、クロック信号がこれらのコンポーネントから取り除かれ得る。これらのコンポーネントが、より長い期間必要でない場合、装置が動的電圧スケーリング技術をサポートする状況で、これらのコンポーネント用の電圧源を取り除く又は削減することによって、これらのコンポーネントを低電力モードのオペレーションにおくことが適切となり得る。
【００６０】
ベクトル処理回路内のコンポーネントのいずれも、経路８０を通して進行表示を作成するように構成され得る。ただし、おそらくスループットに不利な影響を及ぼすイベントを考えると、これらのイベントは、ベクトル・ロード／記憶ユニット（ＬＳＵ）５０を使用してロード又は記憶演算を実行するときに起こるキャッシュ・ミスに関連することが多い。特に、ＬＳＵが、ベクトル・ロード又は記憶演算を実行するときに、特定のベクトル要素位置に関連するレベル１キャッシュ７２かレベル２キャッシュ７４内のキャッシュ・ミスを検出する場合、これは、経路８０を通して進行表示を送信して、どのキャッシュ・レベルでそのミスが検出されたか、またキャッシュ・ミスが発生する要素位置を識別することができる。次いで、推論制御回路は、削除基準７０に関連して、推論幅を削減するかどうかを決定するために、その情報を使用することができる。削除基準は、例えば、いずれかのレベル２キャッシュ・ミス（これは典型的に有意なレイテンシを受ける）により、推論幅がレベル２キャッシュ・ミスを生じさせるベクトル要素位置を除外するために削減されることになるはずであるということを、識別することができる。或いは、削減基準７０は、別個の要素位置向けの別個の基準を有効に提供することができる。例えば、ベクトル内の要素位置が増加するにつれて、推論の程度はより大きくなることを示し、したがって、高位の要素位置に関連するキャッシュ・ミスにより、直ちに推論幅が削減され得るが、より低位の要素位置に関連するキャッシュ・ミスにより、推論幅が削減される必要はない。
【００６１】
データ処理システムは、メモリにアクセスするとき仮想アドレスを使用することが多く、ＴＬＢストレージ５５が、これらの仮想アドレスをメモリ・システムにアクセスするための物理アドレスに変換するために使用される。より良好に理解するように、ＴＬＢストレージ５５は、特定の仮想アドレスを識別するいくつかのエントリ、それぞれの仮想アドレスを物理アドレスに変換するために使用される情報、及び、アドレスがメモリのキャッシュ可能エリア又はバッファ可能エリアに関するかどうかなどの一定の許可属性情報も有する。したがって、ＬＳＵは、仮想アドレスをＴＬＢストレージに発し、その仮想アドレス用のＴＬＢストレージ内でヒットが検出される場合、必要な物理アドレス及び許可属性情報は、直ちにＬＳＵに返され得る。ただし、ミスのイベントでは、ＴＬＢストレージが、典型的に、必要な情報を含むページ・テーブルをメモリ・システムから取得するためにページ・テーブル・ウォーク・プロセスを実行して、仮想アドレスが物理アドレスに翻訳され、また関連する許可属性を与えることを可能にする必要がある。そのプロセス中、ＴＬＢストレージ５５は、必要なページ・テーブル情報を取得するために、必要に応じて、レベル１キャッシュ７２及びメモリ階層のより低いレベルに随時アクセスする。そのプロセス中にキャッシュ・ミスが発生するイベントでは、これは、経路８０を通る進行表示として推論制御回路に再度報告され、推論幅を削減するかどうか決定するために、推論制御回路によって使用され得る。
【００６２】
一実施例では、推論幅表示がそれに初期化される初期値と推論削減基準との両方があらかじめ定められ得る。ただし、別法では、それらが、データ処理装置によって実行される命令の少なくとも１つによって指定され得る。例えば、推論開始命令が、制御レジスタ６５内に設定される初期推論幅を識別することができる。これは、推論的ベクトル演算の実行中に、推論幅を削減するかどうか評価するとき、推論制御回路６０によって使用される一定の推論削減基準も識別することができる。別の選択肢として、推論的ベクトル演算の以前のシーケンス用に使用された推論幅値及び／又は推論削減基準に関する履歴データを維持するために使用される推論予測回路８５を、提供することができる。推論幅値に関しては、履歴データが、推論的ベクトル演算の以前のシーケンスの実行中にコミット・ポイントに存在する最終推論幅値を識別することができる。次いで、予想回路は、推論を開始する命令に関連するプログラム・カウンタ値を受信し、それに基づいて、推論幅表示用に使用される初期値を決定するために、そのプログラム・カウンタ値から開始される推論的ベクトル演算の以前のいずれのシーケンスも考慮して履歴データを参照し、また、必要ならば、使用される推論削減基準を決定するように構成され得る。履歴データは、推論予測回路８５にアクセス可能な履歴ストレージ８７内に記憶される。
【００６３】
図１に、進行表示が、ベクトル処理回路３０によって発されるときのみを示すが、代替実施例では、推論制御回路６０が、システム内のどこかから、例えばスカラ処理回路から、進行表示を受信することもできる。
【００６４】
制御レジスタ６５は、種々の形式をとることができ、図２Ａに、制御レジスタ内に記憶され得るいくつかのパラメータを示す。最初に、推論幅値１００が維持され、一実施例では、これが、１から１６までの値をとり、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数が、１ベクトル要素から１６ベクトル要素（一実施例では１６ベクトル要素が、ベクトル・オペランドの全幅を表す）まで変化し得ることを示すことができる。
【００６５】
一実施例では、制御レジスタ６５が、推論がオンであるかないかについて示すように設定される推論フラグ１０５を含むこともできる。推論がオフであるとき、ベクトル演算はいずれも推論的に実行されない。ただし、推論がオンになると、ベクトル演算が推論的に実行される。
【００６６】
推論幅１００は、種々の方式で指定され得る。ただし、一実施例では、制御レジスタ６５が、第１の要素位置レジスタ１１０と推論幅レジスタ１５５との両方を含む。第１の要素位置レジスタ１１０は、ベクトル処理演算を受ける最初のベクトル要素位置を識別し、そのとき推論幅レジスタ１１５が、最終ベクトル要素位置を識別し、次いでベクトル・オペランド１２０内の推論幅が、これらの２つのレジスタの内容間の差によって示される。
【００６７】
ベクトル演算のシーケンスの第１の反復中、これは、第１の要素位置レジスタがベクトル１２０内の最初のベクトル要素を指す事例でもよく、推論幅レジスタ１１５は、例えば最後のベクトル要素を指し、したがってベクトル幅全体を指定することができる。ベクトル演算の実行中、推論幅レジスタの内容が、削減された推論幅を識別するように削減され得る。コミット・ポイントに達する時点で、推論幅が、コミット・ポイントで決定されたベクトル要素の必要な個数より少なく削減された場合、ベクトル演算のその後の反復が実行される可能性があり、このとき、第１の要素位置レジスタ１１０は、推論的ベクトル演算の以前の反復を介して処理されなかった第１の必要なベクトル要素を識別するように設定される。次いで、推論幅レジスタ１１５は、その後の反復用に必要な推論幅を識別するように設定される。
【００６８】
図２Ｂの例では、２つの別々のレジスタが維持されるが、一代替実施例では、マスク・レジスタ１３０が推論幅表示を識別するために設けられ得る。特に、マスクは、ベクトル・オペランド１２０内のそれぞれの要素位置ごとのビットを含むことができ、これらのビットが、推論幅を識別するために０又は１に設定される。一実施例では、推論幅が、マスク内に含まれる一連の論理値１によって指定され、そのマスクの内容は、演算の実行中に、一定のこれらの論理値１が、削減された推論幅を識別するために論理値０に変換されることによって、推論幅が削減されるように更新される。代替実施例では、マスク内の論理値１及び論理値０に基づいて意味するものは、逆にすることもできることが理解されよう。
【００６９】
図３に、先に説明した実施例を使用してベクトル化され得るスカラ・ループを概略的に示す。スカラ命令のこのループは、一連の命令を含み、そのうちのいくつかが、ループを終了するかどうかについて決定するために実行される条件テストに先立って発生し、またそのうちのいくつかは、その条件テストの後に発生する。示される例示的なシーケンスでは、ループが、３つの完結した反復２００、２０５、２１０を通過し、次いで、条件テストは、ループが第４の反復２１５の途中のポイント２２０で終了するべきと示すように評価される。条件テストは、必要な反復回数が既知ではないような事例が多く、したがって、この例では、ループが第４の反復の途中で終結するが、他の例では、より多くの反復が実行されるまで終結しない可能性があり、又は実際には先に終結する可能性もある。
【００７０】
こうしたスカラ・ループをベクトル化するために推論的ベクトル演算を実行するとき、それぞれのスカラ命令は、ベクトル命令に置き換えられ、指定されたベクトル・オペランドが、複数のベクトル要素を含み、それぞれのベクトル要素が異なる反復に関係する。どの反復でスカラ・ループが終了するかについては分からないので、ベクトル要素の特定の個数を有するベクトル・オペランドを指定することによって、ループをベクトル化することはできない。その代わりに、図４に示すように、条件テストに先立って発生するスカラ命令に相当するベクトル命令の場合、推論幅が、必要なベクトル要素の個数に関して推論するために使用される。先に検討したように、一実施例では、この推論幅が、最初に１６などの選択された値に設定され、したがって、これらのベクトル命令のそれぞれの例示的な実行は、最初に、相当するスカラ命令１６回（すなわち、１６の別々の反復のそれぞれにつき１回）の実行を再現する。現在の推論幅が、生成されると推論削減条件が検出されるような進行表示を生じさせる場合、先に説明したように、それぞれのベクトル・オペランドからの少なくとも１つのベクトル要素が処理され続けることを確実にしながら、推論幅は削減される。
【００７１】
条件テストが、その後評価されるとき、どのくらい多くのべクトル要素が必要とされるかについて決定され得る。例えば、相当するスカラ・ループが第３の反復で終了し、したがって、必要な推論幅は３となると評価することができる。推論幅がいまだ３より大きいと仮定すると、そのとき必要なベクトル要素の全ては、処理されているであろう。ただし、現在の推論幅が条件テストによって示される反復回数より少ない場合、必要なベクトル要素の残りを処理するために、ベクトル演算のシーケンスの少なくとも１つのさらなる反復をその後実行することが必要となる。
【００７２】
コミット・ポイントに続いて、次いで残りのベクトル命令が非推論的に実行される。ただし、条件テスト分析中に識別された幅を考慮して、マスクは、ベクトル要素の必要な個数だけが処理されることを確実にするように設定され得る（又は、それが必要な幅より少なかった場合、現在の推論幅に相当する個数、したがってさらなる反復が必要となる）。次いでこのプロセスは、条件に応じて終了する。特に、条件テストが、必要なデータの全てが書き込まれたことを示す場合、プロセスは終了するが、そうでない場合、プロセスが少なくともさらに１回繰り返される。
【００７３】
図５に、特定の推論及びコミット命令が使用される状況の場合のベクトル・ループを示す。推論命令は、推論をオンにし、したがって推論フラグ１０５を設定するために使用される。その後、推論幅１００がそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために使用されて、一連の命令が推論的に実行される。先に検討したように、推論幅は、推論削減条件の検出に依存してベクトル演算の実行中に削減され得る。その後、１つ又は複数の命令が、コミットするのに適切な幅を決定するために実行され、その後、別々のコミット命令が実行されると推論がオフとなる。これに続いて、一連の非推論的命令が、実行され、先に検討したように、マスク又は長さの値が、コミット・ポイントに先立ってなされた決定を適切に考慮してベクトル要素幅を設定するために、これらの命令に関連して使用され得る。次いで、ループが繰り返されるべきか、終了するべきかを決定するために、分岐命令が使用され得る。
【００７４】
図６は、一実施例に従って実行された推論幅削減プロセスを示す流れ図である。ステップ３００で、推論制御回路が、進行表示の受信を待機し、ステップ３００で進行表示が受信されなかったと判断され、また、ステップ３０５で、例えば推論フラグが制御レジスタ６５内にいまだアサート中なので、推論が終結されなかった場合、このプロセスは、進行表示が受信されるまでステップ３００で待機する。推論が終結される場合、プロセスは、ステップ３０５から３１０まで進み、終了する。
【００７５】
進行表示の受信と同時に、ステップ３１５で、推論制御回路６０が、推論削減基準７０を参照して進行表示を分析し、その後、ステップ３２０で、推論削減条件が検出されたかどうか判断する。されなかった場合、プロセスはステップ３００に戻る。ただし、推論削減条件が検出される場合、ステップ３２５で、推論制御回路が、必要な推論削減の程度を決定する。これが、既定の量であると、推論制御回路がその既定の量の分の推論幅を削減することができ、又は代わりに、最も有意な要素位置が、進行表示を生じさせる識別された要素位置の１つ左になるように新たな推論幅を設定するなど、適用されるルールの観点からあらかじめ定められて、それによって、改定された推論幅からその識別された要素位置を除外することができる。
【００７６】
一代替実施例では、推論削減の程度が、推論削減基準それ自体を考慮して決定され得る。こうした手法の一例について、図１３を参照して後に説明するが、削減基準は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかで利用可能なスラックの指示を与えるスラック値を維持し、推論幅削減の量が、スラックが超過する限度を考慮して動的に管理される。
【００７７】
ステップ３２５での推論削減の程度の決定に続いて、ステップ３３０で推論幅が削減され、その後、プロセスがステップ３００に戻る。以前に検討したように、一旦、推論幅が削減されると、この情報が、経路８２を通してベクトル処理回路３０に渡されて、いずれかの未処理の推論演算の実行中に処理されるベクトル要素の個数が削減される。
【００７８】
図７は、推論を開始するときに実行されるプロセスを示す流れ図である。推論は、種々の方式で開始され得るが、一実施例では、明示的推論開始命令が提供され、この命令が、デコード回路２０によってデコードされると、適切な制御信号が推論制御回路６０に発される。ステップ３４０で、適切な制御レジスタ６５を設定することによって、初期推論幅が決定され、設定される。以前に検討したように、初期推論幅は、あらかじめ定められてよく、デコード回路から転送される制御情報内で識別されてもよく、又は、実際に初期推論幅が、推論予測回路８５によって与えられてもよい。ステップ３４０に続いて、ステップ３４５で、推論モードは、装置が明示的推論ノードを使用しているかしていないかに応じて任意選択でオンにされる。
【００７９】
図８は、図５のベクトル・ループ内の一連の推論的演算が一旦実行されると、またいずれかの非推論演算の実行に先立って、実行さるたコミット・プロセスを示す流れ図である。１つ又は複数の命令が、図８に示すステップを実行するために実行され得る。ステップ３５０で、条件テストが、必要なベクトル幅、すなわち処理されるベクトル要素の必要な個数を決定するために実行される。その後、ステップ３５５で、現在の推論幅が読み出され、次いでステップ３６０で、現在の推論幅が、必要なベクトル幅と比較される。
【００８０】
次いでステップ３６５で、推論ベクトル演算が推論不足に至ったかどうかを判断する。これは、推論幅が、コミット・ポイントに達した時点で必要なベクトル幅より少ないポイントまで削減された場合の事例である。そうでない場合、現在の推論幅が必要なベクトル幅より大きい場合、プロセスは推論過剰となる。
【００８１】
推論過剰のイベントでは、プロセスが、ステップ３８５に進み、リピート・フラグがクリアされて、これ以上のベクトル・ループの反復は必要ないことを示す。その後ステップ３９０で、必要なベクトル幅を識別するために非推論的命令用にマスクが設定される。これにより、ベクトル・ループがさらなる反復の必要なく相当のスカラ・ループをベクトル化することができる。
【００８２】
ただし、推論不足のイベントでは、次いでステップ３７０で、ベクトル・ループのその後の反復を呼び出すために、リピート・フラグが設定される。その後、ステップ３７５で、現在の推論幅を識別するために非推論命令用にマスクが設定される。したがって、一旦、現在のベクトル・ループが完結すると、推論的ベクトル演算と非推論的演算との両方が、同一の個数のベクトル要素を処理したことになる。次いで、必要なベクトル幅内の残りのベクトル要素を処理するために、ベクトル・ループが１つ又は複数回繰り返され得る。
【００８３】
ステップ３７５又は３９０に続いて、特定の推論モードが使用される実施例では、次いでステップ３８０で、推論モードがオフにされる。これにより、ベクトル・ループ内の後続の命令が非推論的に実行されることが確実になる。
【００８４】
図９に、一連の推論的命令及び非推論的命令の実行に続く、図５に示すような分岐命令によって典型的に実行される条件終了プロセスを示す。ステップ４００で、リピート・フラグが設定されているかどうかを決定する。設定されている場合、次いでステップ４０５で、プロセスが、ベクトル・ループの始まりの推論開始ポイントに戻るが、そうでない場合、ステップ４１０で、プロセスが終了する。
【００８５】
図１０Ａは、推論幅が削減されるとき、推論的ベクトル演算の処理がどのように変化するかについて概略的に示す図である。最初に、推論命令が実行されて推論モードをオンにし、指定された量、この例では１６ベクトル要素に推論幅を設定する。図の例では、ベクトル処理回路内のコンポーネントが、単一サイクル中にそれぞれのソース・オペランドから２つのベクトル要素を処理することができることを前提とし、したがって、４２０のベクトル演算ＶＯＰ１を実行するコンポーネントは、必要な演算の全てを完結するために８サイクルかかる。
【００８６】
示す例では、ＶＯＰ１とＶＯＰ２（この例のＶＯＰ２はベクトル・ロードである）との間にデータ依存性があることを前提とし、その結果ＶＯＰ２の実行は、ＶＯＰ１の実行が始まった後に１サイクルが始まる。
【００８７】
この例に示すように、ＬＳＵ５０がベクトル・ロードを処理しているとき、図１０Ａの参照番号４３０によって示すように、ベクトル要素９（すなわち、要素位置１０のベクトル要素）に関連するマイクロアーキテクチャ上のイベントを検出し、進行表示を発して、イベント及び要素位置を識別する。こうしたマイクロアーキテクチャ上のイベントは、例えばベクトル要素９をロードしようとするときに発生するキャッシュ・ミスとすることができ、この例では、削減基準７０に対してその進行表示を評価するとき、推論制御回路６０が９つの要素の幅に推論幅を削減すると決定することを前提とし、それによって、ベクトル要素９（先に述べたように要素位置１０）を除外する。ベクトル演算ＶＯＰ３は、進行表示を発し関連する推論幅を削減することに先立って処理され始めているベクトル演算の一例を示すが、これは、推論幅が削減される時点で、いまだ進行中である。４３５のＶＯＰ３内の×印によって示すように、ＶＯＰ３実行コンポーネントは、推論幅の削減に応答して、要素位置１０又はそれより高位のベクトル要素のいずれの処理も除去するように構成され得る。図１を参照して先に検討したように、クロック・ゲーティング及び／又はパワー・ゲーティング技術は、削減される推論幅に基づいて、ＶＯＰ３実行コンポーネントのエネルギー消費を削減するために使用され得る。
【００８８】
ベクトル演算ＶＯＰ４は、この例では参照番号４４０で示すように、推論幅削減がなされた後でのみ開始されるベクトル演算を示し、（これ以上の推論幅削減を受けない）アウトセットで、ベクトル演算が最初の９ベクトル要素に関して実行される必要があることが分かる。
【００８９】
図１０Ａに示す例では、４４０のベクトル演算ＶＯＰ４が、別のベクトル・ロード演算であり、また、そのベクトル・ロードが、初期ベクトル・ロードＶＯＰ２が完結するまで実行し始めることができないことを前提とする。
【００９０】
図１０Ｂは、推論幅の調整が、今後のベクトル演算にだけでなく先行するベクトル演算にも影響を及ぼす一代替実施例を示す。特に、参照番号４５０で示すように、推論幅が削減されるとき、これにより、ＶＯＰ２実行コンポーネント（すなわち、推論削減を生じさせたベクトル演算）が１つ又は複数のその後の反復の処理も終結し、この事例では２つの反復が最後の４ベクトル要素に関係する。
【００９１】
加えて、一実施例では、プロセスが、ＶＯＰ２より以前のものでも、発されたベクトル演算のオペレーションを遡及的に削除するために使用され得る。示されるこの例では、参照番号４４５で示すように、ＶＯＰ１の最終反復は、削減される推論幅に基づいても終結される。重ねて、クロック及びパワー・ゲーティング技術は、これらの演算を実行するコンポーネントのエネルギー消費を削減するために使用され得る。コンポーネントが、他の演算をより迅速に処理するように利用できるので、実現され得る別の利点は性能を増大することである。例えば、ＶＯＰ４を考えると、ＬＳＵ５０は、ＶＯＰ２の実行を２サイクル速く終結し、したがって、ＶＯＰ４は、図１０Ａの例と比較すると、図１０Ｂの例では２サイクル速く開始することができる。
【００９２】
図１１Ａ及び図１１Ｂは、推論削減が、その後の演算の実行の変更をどのようにトリガするかについてのさらなる例を示す。この例では、ＶＯＰ１及びＶＯＰ２を実行するコンポーネントが、それぞれの反復のそれぞれのソース・ベクトル・オペランドからの８ベクトル要素を処理することができることを前提とし、したがって、元々指定されている１６ベクトル要素は、２サイクルで処理され得る。推論削減トリガが、４６０のＶＯＰ１を実行するときポイント４６５で発生する場合、特に、推論削減を生じさせた要素位置４６５以上の要素位置を処理するこれらのコンポーネントの場合、これは、ＶＯＰ２を処理する一定のコンポーネントをクロック・ゲーティング（又は実際にパワー・ゲーティング）する（参照番号４７５に示す）ために使用され得る。ただし、クロック・ゲーティングされる推論削減を生じさせた位置以上の要素位置の全てに対する必須要件はなく、図１１Ｂに示すように、一代替実施例では、参照番号４８０で示すように、より高位の要素位置のサブセットのみがクロック・ゲーティングされ得る。図１４を参照して後に検討するように、これは、例えば、推論幅が、ベクトル要素位置４６５及びそれより高位を除外するために遡って削除されるのではなく、実際に２つ分だけ削除されるべきであるという削減基準を、推論制御回路６０が参照して決定することに起因する。
【００９３】
図１２Ａに、レベル２のキャッシュ・ミスなどのマイクロアーキテクチャ上のイベントが、推論的ベクトル演算を実施するとき、有意なレイテンシをどのように導くことができるかについて示す。この例では、推論的命令が、ポイント５００で実行されて、初期推論幅を１６と設定する。次いで、ベクトル・ロード命令５１０が、実行されるが、この例では、ベクトル要素６（すなわちベクトル要素位置７のデータ要素）をロードしようとするときレベル２キャッシュ・ミスが起こる。これにより、この例では、ベクトル・ロード演算がベクトル要素６及び残りのベクトル要素をロードすることが可能となる前に、２００サイクルのレイテンシが導かれる。これは、後続の２つのベクトル演算５１５のＶＯＰ１と５２０のＶＯＰ２との間のデータ依存性に因り、これらの種々のベクトル演算に連鎖的影響を与える。次いで、ポイント５２５でさらなるサイクルが消費され、コミット・プロセスが実行されるとき、推論幅はこのポイントではまだ１６である。明らかなように、これにより、必要なベクトル演算を実行するために総計は２１２サイクルとなり、これは、平均で１ベクトル要素につき１３．２５サイクルである。
【００９４】
対照的に、図１２Ｂに、説明した実施例の適応する推論幅の手法が使用される状況を示す。ステップ５００で、推論幅は再び１６に初期設定されるが、レベル２キャッシュ・ミスがベクトル・ロード演算５３０のデータ要素６（要素位置７）に関して検出されるとき、これにより、推論制御回路６０が、（削減基準に対して進行表示を評価し、すべき削減を決定するのにかかる時間に因り）短時間の遅れの後、動的に推論幅を６に削減する。削減された推論幅の結果として、５３５のＶＯＰ１と５４０のＶＯＰ２は、最初の６つの要素位置を処理するだけであり、したがって、現在の推論幅６に基づいて、ＶＯＰ２の最初の６つの要素が実行されると直ちに、コミット・プロセスが、ポイント５２５で実行され得る。結果として、プロセスは、６要素を処理するのに７サイクルかかり、これは、平均で１ベクトル要素につき１．１６７サイクルである。
【００９５】
コミット・ポイントで必要な推論幅が６以下と決定されると仮定すると、そのときベクトル・ループのこれ以上の反復は必要なく、プロセスは完結する。そうではなく必要な推論幅が６より大きいと決定される場合、残りの要素を処理するために、ベクトル・ループの１つ又は複数のさらなる反復が実行される必要がある。それにもかかわらず、このことにより、その後の反復が実行されるまで、ベクトル要素６に関して発生するレベル２キャッシュ・ミスはもはやなくなり、したがってその後の反復がはるかに効率的に進行する可能性が高いので、性能に有意な向上をなお生じさせ得る。
【００９６】
推論削減基準は、それを満たすならば推論削減条件の存在を示す１つ又は複数の基準を直接指定することができるが、或いは又は加えて、推論制御回路によって維持され、推論的ベクトル演算のシーケンスの実行中に生成される進行表示を考慮して調整される性能許容情報を、推論削減基準が含むことができる。図１３は、こうした一実施例による、推論削減プロセスの実行を示す流れ図であり、性能許容情報は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかで利用可能なスラックの指示を与えるスラック指標の形式をとる。
【００９７】
ステップ６００で、推論幅が、推論の開始時の初期値に設定され、ステップ６０５で、パラメータ「スラック」が、いくつかの指定されたバジェット値に設定される。この値は、推論を開始する命令によって与えられてよく、プリセットとすることができ、又は他の方式、例えばこうした予測回路を組み込む実施例で推論予測回路８５から与えられてもよい。
【００９８】
ステップ６１０で、進行表示が受信されたかどうか判断され、受信されていない場合は、ステップ６１５で推論が終結されたかどうかが判断される。終結された場合、ステップ６２０でプロセスが終了するが、そうでない場合、プロセスがステップ６１０に戻る。
【００９９】
進行表示が受信されると、その進行表示が、性能特性に否定的な影響を示すか肯定的な影響を示すか判断される。特に任意選択の一実施例では、処理回路３０が、性能特性に否定的な影響を及ぼすイベントに関する進行表示だけでなく、例えば一定の演算が予想より迅速に実行されたことを示すような、肯定的な影響を及ぼす一定のイベントに関する進行表示も与えることができる。肯定的な進行表示のイベントでは、次いでステップ６３０で、進行表示によって示される量の分スラック値が増大され、その後プロセスがステップ６１０に戻る。
【０１００】
対照的に、ステップ６２５で検出される否定的な進行表示のイベントでは、ステップ６３５でパラメータ「コスト」が評価され、これがその否定的な指示に関連する性能コストを示す。その後、スラック値が、現在のスラック値からコスト値を減じることによって調整される。次いでステップ６５５で、スラック値が目下、否定的であるかどうかが判断され、そうでない場合、プロセスがステップ６１０に戻る。
【０１０１】
ステップ６５５で、スラック値が否定的であると判断される場合、内部パラメータ（ＳＷ）が、現在の推論幅から現在のスラック値の関数として決定された値を減じることによって設定される。この関数は、種々の方式で設定され得るが、一例では、これにより、スラック値がより否定的である推論幅からより大きな量が差し引かれる。
【０１０２】
ステップ６６５で、パラメータＳＷが１より小さいかどうかが検出される。小さい場合は、プロセスがステップ６７５に進む前に、ステップ６７０でＳＷが１に等しく設定されるが、そうでない場合は、プロセスが、ステップ６６５から直接ステップ６７５に進む。ステップ６６５、６７０の目的は、ベクトル・ループの現在の反復がいくつかの肯定的な進行を常に作り出すことを確実にするために、内部パラメータＳＷが、決して１より小さく削減されないことを確実にすることである。特に、ステップ６８５で、推論幅が、ＳＷに等しく設定され、したがって、ステップ６１０に戻るプロセスに先立って１以上の値に設定される。
【０１０３】
ステップ６７５及び６８０は任意選択であり、ステップ６７５で、内部パラメータ「削減」が現在の推論幅（すなわち、ステップ６８５での調整前の推論幅）から内部パラメータＳＷを減じることによって決定される。その後、ステップ６８０で、スラック値が、決定された「削減」値だけ増大される。次いでステップ６８５で、推論幅が削減される。任意選択のステップ６７５、６８０を使用すると、したがって、推論幅が削減されるときは必ず、スラック値が、推論幅が削減される量に依存して肯定的に調整されることが分かる。
【０１０４】
図１４Ａ及び１４Ｂに、スラック値が、図１３のプロセスを実行するときにどのように変化し得るかを概略的に示す。図１４Ａの例では、任意選択のステップ６３０が実行されることを前提とする。傾斜６８７で示すように、スラック値は、経路８０を通して受信されたいくつかの肯定的な指示に続いて最初増大する。否定的な指示により、スラック値の第１の降下が生じ、次いで、第２の否定的な指示により、スラック値がポイント６８８で否定的な値に降下する。このポイントで、推論幅が削減され、スラック値は、削減の量だけ肯定的に調整される。傾斜６８９に示されるように肯定的な進行表示が継続すると、スラック値はさらに増大するが、２つの否定的な進行表示の後再び、スラック値がポイント６９０で否定的に戻る。これにより、推論幅が再び削減され、任意選択でスラック値が、推論幅の削減に基づいて増大される。次いで、肯定的な進行表示により、スラック値が直線６９１に続く。
【０１０５】
一実施例では、スラック値が肯定的な指示の受信と同時に肯定的に調整される量は、推論幅に依存する。特に、推論幅がより大きくなるにつれて、肯定的な指示の総合的影響が大きくなり、したがって、傾斜６８７の傾きは、傾斜６８９より大きく、同様に傾斜６８９の傾きは、傾斜６９１より大きい。
【０１０６】
図１４Ａでは、任意選択のステップ６７５、６８０が実行されないことを前提とし、したがって、スラック値は推論幅の削減を補うために肯定的な方向では調整されない。ただし、一代替実施例では、ステップ６７５及び６８０が実行されることになり、結果としてポイント６８８、６９０で、後続の傾斜６８９、６９１に先立ってスラック値の肯定的なジャンプがあることになる。スラック値の肯定的なジャンプは、ステップ６６０で適用されるスラック値の関数、したがって推論幅の削減が行われる限度に依存するので、スラック値が再び肯定的な値をとる又はとらない可能性がある。
【０１０７】
図１４Ｂに、いずれの肯定的な進行表示も受信せず、したがってスラック値が初期バジェット値で開始され、次いで、否定的な指示が受信されるごとに段階的に減少する一例を示す。スラック値が否定的になった後スラック値の降下があるたびに、推論幅が削減される。
【０１０８】
図１５に、使用され得る仮想マシンの実装を示す。先に説明した実施例は、当該の技術をサポートする特定の処理ハードウェアを操作するための装置及び方法の観点から、本発明を実行するが、いわゆるハードウェア・デバイスの仮想マシンの実装を提供することも可能である。これらの仮想マシンの実装は、典型的に仮想マシン・プログラム７１０をサポートするホスト・オペレーティング・システム７２０を作動させるホスト・プロセッサ７３０上で作動する。相応な速さで実行する仮想マシンの実装を実現するには非常に強力なプロセッサを必要とすることが多いが、こうした手法は、互換性又は再利用の理由で、別のプロセッサ由来のコードを作動させたいときなど、一定の環境では理にかなったものとされ得る。仮想マシン・プログラム７１０は、こうしたリアル・ハードウェア・デバイスによるプログラムの実行によってもたらされるはずのものと同じ結果をもたらすような、アプリケーション・プログラム（又はオペレーティング・システム）７００を実行する能力をもつ。したがって、上記で説明した推論的ベクトル命令を含むプログラム命令が、仮想マシン・プログラム７１０を使用して、アプリケーション・プログラム７００内から実行され得る。
【０１０９】
上記で説明した技術の使用を通じて、データ処理装置の少なくとも１つの性能特性（スループット又はエネルギー消費など）は、特定の推論幅の推論的ベクトル演算の実行がその選択された実行特性に過度に不利な影響を及ぼす状況を回避しようとすることによって、推論的ベクトル演算を実行しながら改善され得る。こうした手法によって、推論幅は、必要としなくてもよい時間消費又はエネルギー不足作業を回避しようとするために、動的に調整され、したがって時間及びエネルギーを節約することができる。進行を保証するために、一実施例では、推論幅は、決して１要素より少なく削減されない。
【０１１０】
特定の実施例について本明細書で説明したが、本発明はそれに限定せず、本発明の範囲内でこれに多くの改変及び追加を加えることができることを理解されたい。例えば、本発明の範囲から逸脱することなく独立請求項の特徴を用いて、以降の従属の特許請求の範囲の特徴の種々の組合せがなされ得る。
【図１】
0006546584.tif 000002
【図２Ａ】
0006546584.tif 000003
【図２Ｂ】
0006546584.tif 000004
【図２Ｃ】
0006546584.tif 000005
【図３】
0006546584.tif 000006
【図４】
0006546584.tif 000007
【図５】
0006546584.tif 000008
【図６】
0006546584.tif 000009
【図７】
0006546584.tif 000010
【図８】
0006546584.tif 000011
【図９】
0006546584.tif 000012
【図１０Ａ】
0006546584.tif 000013
【図１０Ｂ】
0006546584.tif 000014
【図１１Ａ】
0006546584.tif 000015
【図１１Ｂ】
0006546584.tif 000016
【図１２Ａ】
0006546584.tif 000017
【図１２Ｂ】
0006546584.tif 000018
【図１３】
0006546584.tif 000019
【図１４Ａ】
0006546584.tif 000020
【図１４Ｂ】
0006546584.tif 000021
【図１５】
0006546584.tif 000022