JP6546584B2 - 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 - Google Patents

推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 Download PDF

Info

Publication number
JP6546584B2
JP6546584B2 JP2016519799A JP2016519799A JP6546584B2 JP 6546584 B2 JP6546584 B2 JP 6546584B2 JP 2016519799 A JP2016519799 A JP 2016519799A JP 2016519799 A JP2016519799 A JP 2016519799A JP 6546584 B2 JP6546584 B2 JP 6546584B2
Authority
JP
Japan
Prior art keywords
vector
inference
speculative
width
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016519799A
Other languages
English (en)
Other versions
JP2016536665A (ja
Inventor
リード、アラステア、デイヴィッド
カーショウ、ダニエル
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2016536665A publication Critical patent/JP2016536665A/ja
Application granted granted Critical
Publication of JP6546584B2 publication Critical patent/JP6546584B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • G06F9/38873Iterative single instructions for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法に関する。
データ処理装置の実行を改善するための1つの知られた技術は、ベクトル演算の実行をサポートするための回路を設けることである。ベクトル演算は、少なくとも1つのベクトル・オペランドに対して実行され、それぞれのベクトル・オペランドが、複数のベクトル要素を含む。次いで、ベクトル演算の実行は、ベクトル・オペランド内の種々のベクトル要素にわたって演算を繰り返して適用することを伴う。
ベクトル演算の実行をサポートする典型的なデータ処理システムでは、ベクトル・レジスタ・バンクが、ベクトル・オペランドを記憶するために設けられる。したがって、例として、ベクトル・レジスタ・バンク内のそれぞれのベクトル・レジスタは、複数のベクトル要素を含むベクトル・オペランドを記憶することができる。
高性能の実装において、ベクトル処理回路(SIMD(Single Instruction Multiple Data)処理回路としばしば呼ばれる)を設けることも知られており、これにより、ベクトル・オペランド内の種々のベクトル要素に必要な演算を並行して実行することができる。代替の実施例では、スカラ処理回路が、ベクトル演算を実装するためにいまだ使用され得るが、この例では、ベクトル演算が、スカラ処理回路を通じて演算の反復実行によって実行され、それぞれの反復は、ベクトル・オペランドの別個のベクトル要素に対して作用する。
ベクトル演算の使用を通じて、相当する一連のスカラ演算の実行と比較されるとき、実行の有意な利点が実現され得る。
ベクトル処理の実行の利点を得ようとするとき、一連のスカラ演算を相当する一連のベクトル演算に置き換えるために、一連のスカラ演算をベクトル化しようとすることが知られている。例えば、一連のスカラ命令を含むループに対して、一連のスカラ命令を相当する一連のベクトル命令に置き換えることによってそのループをベクトル化することが可能になり、ベクトル・オペランドが、ベクトル要素として、元のスカラ・ループの別個の反復に関する要素を含むことができる。
しかしながら、こうした手法は、元のスカラ・ループを通じて必要な反復の回数があらかじめ定められているときはよく機能することができるが、反復の回数があらかじめ定められてないときはこうしたループのベクトル化がより困難となる。特に、反復の回数があらかじめ定められてないので、どのくらいの個数のベクトル要素がそれぞれのベクトル・オペランドに必要かをあらかじめ定めることができない。
上記のタイプのいくつかの状況では、推論的ベクトル処理を実行することが可能であり、ベクトル要素の必要な個数に関して推論が実行され、必要なベクトル要素の正確な個数が定められた後に是正措置がとられる。
K Asanovicによる「Vector Microprocessors」という名称の博士論文116〜121頁、バークレー、1988年では、ベクトル・オペランドの幅全体にわたる推論を実行すること、加えて推論中に発生したアーキテクチャ上のイベント(例えばページ・フォルト)を追跡することについて検討している。こうしたアーキテクチャ上のイベントが例外をトリガすることにより、例外ルーチンが、例外を解決するためにオペレーティング・システムによって実行される。提案された手法は、こうしたアーキテクチャ上のイベントが検出された、ベクトル幅内のそれぞれのベクトル要素位置の記録を保持する。後に、必要なベクトル要素位置のセットが既知であるコミット・ポイントに達したとき、それぞれの必要なベクトル要素位置が、このアーキテクチャ上のイベントの記録に対して比較される。必要なベクトル要素位置に関連するいずれかのアーキテクチャ上のイベントが、ベクトル処理回路がベクトル演算を正確に実行することを妨げるので、コミット・ポイントでいずれかのこうした例外の延期がトリガされる。必要なベクトル要素位置のセットのいずれもアーキテクチャ上のイベントに関連しない場合、ベクトル長及びマスクが更新され、アーキテクチャ上のイベントの記録がクリアされる。
上記のプロセスにより、コミット・ポイントでアーキテクチャ上のイベントをマスク・アウトすることによって正確な演算を確実にしながら、推論的ベクトル処理を実行することが可能になる。
K Asanovic、「Vector Microprocessors」、博士論文116〜121頁、バークレー、1988年
しかしながら、上記の手法は、推論的ベクトル処理演算を実行しながら正確な演算を確実にすることができるが、推論的ベクトル処理を実行する利点に影響を及ぼし得る他の要因はある。先に述べたように、推論がなされる時点で、必要な反復の回数が既知ではなく、したがって、これらの演算が必要でなかったと判明した後にだけ、装置の性能特性(例えばスループット又はエネルギー消費)に不利な影響を及ぼし得る一定の演算を実行する可能性がある。したがって、装置の性能特性へのこうした推論的ベクトル処理の影響を管理しながら推論的ベクトル演算を実行するための機構を提供することが望まれることになる。
第1の態様から見ると、本発明は、データ処理装置を提供し、そのデータ処理装置が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するように構成された処理回路であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理回路と、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように構成された推論制御回路であって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御回路とを備え、前記処理回路が、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するように構成され、推論制御回路が、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するようにさらに構成され、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて、推論幅表示の削減がデータ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件であり、推論制御回路が、前記推論削減条件の検出にさらに応答して、推論幅表示を削減する。
現在の推論幅がデータ処理装置の選択された性能特性(例えばスループット又はエネルギー消費)に有意に不利な影響を与えると思われる状況を決定するために、推論的ベクトル演算のシーケンスの実行中に進行表示を生成するように処理回路を構成することによって、これにより、推論制御回路が推論削減基準(これは、固定された基準でよく、又は推論制御回路によるアクセス用に記憶された基準でもよく、再構成もされ得る)に対してこれらの進行表示を評価することができる。こうした状況を検出すると同時に、次いで、推論的制御回路が、推論幅表示を削減するように構成されて、それによって、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を削減する。
進行表示は、典型的に、推論的ベクトル演算の実行が性能特性に不利に影響を及ぼしているいずれかのベクトル要素位置を、推論制御回路が識別することを可能にするように構成される。例えば、それぞれの進行表示は、進行表示が関係するベクトル要素位置を具体的に識別することができる。
単に例として、推論的ベクトル・ロード演算の実行中に要素位置xでメモリからロードされる特定のベクトル要素が、システムのキャッシュ階層内の一定のキャッシュ・レベルでキャッシュ・ミスになったことを、進行表示が識別する場合、推論削減基準は、こうしたキャッシュ・ミス・イベントに関連した予想されるレイテンシを識別することができ、又は、こうしたイベントの発生が推論削減条件を示すものであると直接識別することができる。推論的ベクトル処理は、依然として現在指定されている推論幅で正確に実行され続けることができるが、これは、キャッシュ・ミスによって導かれるレイテンシに因り、実行に有意な影響を及ぼす可能性があり、また、要素位置xまたそれより高位の要素位置を除外するようにこのポイントで推論幅を削減することによって、このレイテンシは回避され得る。その後、ベクトル演算のシーケンスは、要望に応じて、省略されたベクトル要素に対してベクトル演算を実行しようとするために繰り返され、これは、ベクトル演算のシーケンスが繰り返される時点に因り、同じレイテンシの問題は起こらない(例えば、必要なデータ要素がキャッシュ中に存在し、したがってキャッシュ・ミスが起こらないとしてもよい)とすることができる。
したがって、本発明の使用を通じて、特定の推論幅での推論的ベクトル演算の実行が、選択された性能特性に過度の不利な影響を及ぼす状況を回避しようとすることによって、推論的ベクトル演算を実行しながら、データ処理装置の少なくとも1つの性能特性が改善され得る。
進行表示は、種々の形式をとり得る。一実施例では、進行表示が、推論的ベクトル演算の実行中に処理回路内で発生するスループットに影響を及ぼすイベントを示す。或いは又は加えて、進行表示が、推論的ベクトル演算の実行中に処理回路内で発生するエネルギー消費に影響を及ぼすイベントを示すことができる。一実施例では、進行表示によって示される影響を及ぼすイベントは、性能特性に否定的な影響を及ぼすイベントであるが、一実施例では、影響を及ぼすイベントは、予想より迅速に実行される又はエネルギー消費が少ない特定の演算などの、性能特性に肯定的な影響を及ぼすイベントも識別することができる。
進行表示の生成をトリガするイベントは、種々の形式をとり得る。一実施例では、進行表示の少なくともいくつかが、推論的ベクトル演算の実行中に処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される。
プロセッサの特徴、コンポーネント又は挙動は、それが、実行の品質にだけ影響を及ぼし(例えば、プロセッサがプログラムを作動させるための時間又はエネルギーを多かれ少なかれ使用する)、実行の適正さ(例えば、それが命令セット・アーキテクチャを正確に実行するかどうか)に影響を及ぼさない場合、「マイクロアーキテクチャ上の」ものと考えることができる。例えば、現代のプロセッサは、分岐を加速するために分岐予測器を、メモリの読出しを加速するためにキャッシュを、メモリの書込みを加速するためにライト・バッファを、ページ・テーブル・ルックアップを加速するためにトランスレーション・ルックアサイド・バッファを、命令のシーケンスの実行を加速するためにパイプラインを使用する。これらの特徴は、それらがプログラムの最終結果に影響を及ぼさないで実行を加速するので、全てマイクロアーキテクチャ上の特徴であると考えることができる。
これは、実行の適正さに影響を及ぼす、プロセッサの特徴、コンポーネント又は挙動と対比され、こうした特徴、コンポーネント又は挙動は「アーキテクチャ上の」ものと考えるべきである。例えば、現代のプロセッサは、仮想メモリを実装するためにページ・テーブル及びページ・フォルト例外を、コンテキスト・スイッチをサポートするために割込みを、「0で割る」などの算術エラー条件に対処するために算術例外を使用する。アーキテクチャ上の特徴、コンポーネント又は挙動は、典型的に、例えば追加命令を実行させることによってプログラム例外に影響を及ぼすアーキテクチャ上のイベントを生じさせる。対照的に、マイクロアーキテクチャ上の特徴、コンポーネント又は挙動は、マイクロアーキテクチャの挙動に影響を及ぼすが、アーキテクチャ上のレベルではいずれの影響も与えない、マイクロアーキテクチャ上のイベントを生じさせる。これらにより、例えば、他の場合よりわずかに遅くプログラムが作動するが、プログラムの実行には影響を及ぼさない。
推論幅表示は、種々の形式をとることができる。例えば、推論幅表示は、マスク、又は、開始要素位置及び/又は終了要素位置などの特定の要素位置を識別する1つ若しくは複数のレジスタの内容によって指定され得る。一実施例では、推論幅表示が、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示すだけでなく、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドの最初のベクトル要素をさらに識別する。
推論的ベクトル演算を受けるベクトル要素の個数は、一連の隣接したベクトル要素位置を占める必要はないが、一実施例では、推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を、前記最初のベクトル要素から開始するシーケンシャルなベクトル要素の指定された個数であると識別する。
一実施例では、処理回路が、命令のベクトル・ループを実行するように構成され、ベクトル・ループが、ベクトル演算の前記シーケンスを定義する命令と、ベクトル演算の前記シーケンスの実行に続く、ベクトル・ループ内のコミット・ポイントで実行される少なくとも1つの評価命令とを含み、前記少なくとも1つの評価命令の実行により、必要なベクトル幅が決定される。さらに、推論制御回路は、必要なベクトル幅の決定に応答して、推論幅表示の現在の値を参照してベクトル演算の前記シーケンスの実行が推論過剰に至ったか推論不足に至ったかについて決定し、前記推論不足のイベントでは、リピート・フラグを設定して、命令の前記ベクトル・ループのさらなる反復を実行させる。したがって、推論幅は、推論的ベクトル演算の実行中に要望に応じて変更され、推論的ベクトル演算のシーケンスのその後の反復は、必要なベクトル要素の全てに対してベクトル演算が最終的に実行されることを確実にするように、随時実行され得る。
一実施例では、命令のベクトル・ループのさらなる反復が行われると、推論制御回路が、命令のベクトル・ループの先行反復中に処理されたベクトル要素の個数を考慮して変更した初期値に推論幅表示を初期化するように構成される。
一実施例では、ベクトル・ループが、コミット・ポイント後に実行される1つ又は複数の非推論的命令を含み、推論制御回路が、前記1つ又は複数の非推論的命令によって定義された非推論的演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、マスク値を設定するようにさらに構成される。一実施例では、推論不足のイベントで、このマスクが、コミット・ポイントに存在する推論幅の値を識別するように設定されるが、推論過剰のイベントでは、マスクは、コミット・ポイントで決定された必要なベクトル幅を識別するように設定される。
一実施例では、データ処理装置が、処理回路によるアクセス用にベクトル・オペランドを記憶するように構成されたベクトル・レジスタ・バンクを含み、処理回路が、ベクトル・レジスタ・バンクとキャッシュ・ストレージの少なくとも1つのレベルを含むメモリ・システムとの間でベクトル・オペランドを移動させるためにベクトル・アクセス演算を実行するように構成されたデータ・アクセス回路を含む。こうした一実施例では、データ・アクセス回路が、ベクトル・アクセス演算の実行中に発生するキャッシュ・ミスに関する情報を進行表示として発するように構成され得る。こうしたキャッシュ・ミスは、有意なレイテンシを生じさせる可能性があり、したがって推論幅を削減するかどうかを決定するときに有用な情報をもたらすことができる。
一実施例では、データ処理装置が、ベクトル・アクセス演算の実行中にデータ・アクセス回路によって参照されるトランスレーション・ルックアサイド・バッファ(translation lookaside buffer:TLB)をさらに備え、データ・アクセス回路が、ベクトル・アクセス演算の実行中に発生するTLBミスに関係する情報を進行表示として発するようにさらに構成される。そのイベントではTLB内のストレージ用の必要なページ・テーブル情報をメモリから取得するために「ページ・テーブル・ウォーク」プロセスを実行することを必要としてもよく、したがって、TLBミスの指示が、推論幅を削減するかどうかを決定するとき有用な情報をもたらすこともできるので、TLBミスが、有意なレイテンシを生じさせることもできる。
進行表示の上記の2つの例は、データ・アクセス回路のアクティビティに関するが、これは、処理回路の他のコンポーネントが、推論制御回路に進行表示を与えるように構成もされ得ることが理解されよう。実行される推論的ベクトル演算が、システム内のこれらの他のコンポーネントに性能的な影響を及ぼす可能性があるので、実際には、推論的ベクトル演算を実行している処理回路によって発される進行表示に加えて、進行表示は、システム内の他のコンポーネント、例えばスカラ演算を実行するように構成されたスカラ回路によって発されてもよい。例えば、推論的ループが多数の演算(ベクトルでもスカラでも)を含む場合、非常に多い推論幅の分が削減されるならば、これらの演算を繰り返す必要がある。実行されるスカラ演算及びベクトル演算の個数を追跡すると、この潜在的な繰返しコストが推論幅を削減する決定に影響を与えることができる。
一実施例では、データ処理回路が、推論幅表示の削減に応答して、推論幅表示を削減させる推論削減条件の検出に至る進行表示をもつベクトル演算から始まる前記シーケンスで発生する選択されたベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する。特定の一実施例では、選択されたベクトル演算が、その進行表示により推論幅削減となるようなベクトル演算と、シーケンスのその後の全てのベクトル演算とを含む。
さらに、一実施例では、推論幅表示を削減させる推論削減条件の検出に至る進行表示をもつベクトル演算前のシーケンスで発生する非完結ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数をさらに変更するように、この手法が拡張され得る。したがって、これにより、推論幅表示が削減される時点でいまだ進行中である、以前に発されたベクトル演算を受けるベクトル要素の個数の遡及的トリミングが可能となる。したがって、これにより、これらの以前に発された推論的ベクトル演算を完結させる際に別に消費され得るエネルギー消費を削減することができる。
一実施例では、データ処理装置が、推論幅表示の削減に応答して、処理回路の1つ又は複数のコンポーネント内の電力消費を削減するように構成された制御回路をさらに備える。これは、種々の方式で達成され得るが、一実施例では、制御回路が、前記1つ又は複数のコンポーネント内の電力消費を削減するために、クロック・ゲーティング及びパワー・ゲーティングのうちの少なくとも1つを利用する。したがって、クロック・ゲーティング機構が使用される場合、処理回路内の一定のコンポーネントは、修正した推論幅の外側の目下の要素位置で推論的ベクトル演算を実行する際に、コンポーネントのクロック信号を、その電力消費を回避するために取り除くことができる。いくつかの状況では、その代わりにパワー・ゲーティングが、関連するコンポーネントから電源を取り外すために使用され得る。一実施例では、制御回路が、現在の推論幅の指示を継続して受信するように構成されてよく、或いは、推論幅が変化したとき単に指示を受信するように構成されてもよい。
推論幅表示用の初期値及び推論削減基準が、指定され得るいくつかの方式がある。例えば、一実施例では、推論幅表示がそれに初期化される初期値及び推論削減基準の少なくとも1つが、データ処理装置によって実行される命令によって指定される。命令は、処理回路によって実行される命令のうちの1つとすることができ、又は実際に推論制御回路によって実行される特定の命令、例えば推論を開始する命令とすることができる。一代替実施例では、推論幅表示がそれに初期化される初期値及び推論削減基準の少なくとも1つが、あらかじめ定められる。
さらなる実施例では、データ処理装置が、処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に、コミット・ポイントで使用された推論幅値に関する履歴データを維持するように構成された予測回路をさらに備えることができる。このとき予測回路は、処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、履歴データを参照して、推論的ベクトル演算の現在のシーケンスの実行に先立って推論幅表示がそれに設定されるべき初期値を決定するように構成され得る。或いは又は加えて、予測回路が、推論的ベクトル演算の以前のシーケンス用に使用された推論削減基準に関する履歴データを維持し、次いで、履歴データを参照して、推論的ベクトル演算の現在のシーケンス用に使用される推論削減基準を決定することができる。
推論的ベクトル演算のシーケンスは、種々の方式で識別され得る。例えば、命令セットが、一定のベクトル命令の非推論的バージョンと推論的バージョンとを含むことができ、その結果、特定の命令は、推論的であると明確に識別され得る。或いは、データ処理装置が、推論的演算モードを開始し、終了するように構成され、推論的演算モード内で遭遇する全ての命令は、推論的に実行され得る。こうした推論的演算モードがサポートされた一実施例では、推論制御回路が、前記推論的演算モードをトリガする推論開始命令の実行に応答し、処理回路は、前記推論的演算モード中に実行される命令に応答して、推論的ベクトル演算を実行するように構成される。
こうした一実施例では、推論制御回路が、推論的演算モードを終結するコミット命令の実行にさらに応答する。
一実施例では、推論制御回路が、それぞれのベクトル・オペランドの少なくとも1つのベクトル要素が推論的ベクトル演算を受けるべきであることを示す推論幅表示を変更するために、推論削減条件に応答する。推論幅表示の下限をおくことによって、こうしたそれぞれのベクトル・オペランドの少なくとも1つのベクトル要素が処理され、これにより、常に先に進むことが確実になる。推論幅表示が単一のベクトル要素を識別するとき、これは、事実上、推論が全く実行されていないという状況となる。
推論削減基準は、それを満たすならば推論削減条件の存在を示す1つ又は複数の基準を直接指定することができ、或いは又は加えて、推論削減基準は、推論制御回路によって維持される性能許容情報を含むことができ、推論制御回路が、推論的ベクトル演算のシーケンスの実行中に生成される進行表示を考慮した性能許容情報を調整するように構成される。こうした一実施例では、性能許容情報は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかという可能なスラック(slack、あそび)の指標を与えるものと考えることができ、次いでそのスラック指標が、受信した進行表示に依存して調整され得る。一実施例では、進行表示が、選択された性能特性に否定的な影響を及ぼすイベントのみを示すことができ、したがって、スラック指標は、一方向にだけ調整される。ただし、一代替実施例では、進行表示が、否定的な影響を及ぼすイベントと肯定的な影響を及ぼすイベントとの双方を示すことができ、こうした実施例では、スラック指標が、双方向に調整され得る。ただし、性能許容情報(スラック指標)は調整され、性能許容情報がトリガ・ポイントに達した場合、次いで推論制御回路は、推論削減条件を検出するように構成され得る。
一実施例では、推論制御回路は、推論幅表示が削減されるべき量を決定するとき性能許容情報を参照する。これにより、推論幅削減の量が、性能許容を超過する限度を考慮して動的に管理され得る。
或いは、推論削減条件の検出時に推論幅表示が削減されるべき量が、あらかじめ定められていてもよい。これは、推論幅が削減されるべき分の要素位置のプリセット数を識別することによってあらかじめ定められてよく、又は、推論幅をどのように調整するかについて決定するとき、使用される特定のルールを識別することによってあらかじめ定められてもよい。
第2の態様から見ると、本発明は、推論的ベクトル演算の実行を制御する方法を提供し、その方法が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するステップであって、それぞれのベクトル・オペランドが、複数のベクトル要素を含む、実行するステップと、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するステップあって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、維持するステップと、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するステップと、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するステップであって、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて推論幅表示の削減がデータ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件である、検出するステップと、前記推論削減条件の検出時に、推論幅表示を削減するステップとを含む。
第3の態様から見ると、本発明は、本発明の第1の態様によるデータ処理装置に対応するプログラム命令用に仮想マシン実行環境を実現するためにコンピュータを制御するためのコンピュータ・プログラムを非一時的に記憶するコンピュータ・プログラム製品を提供する。
第4の態様から見ると、本発明は、データ処理装置を提供し、そのデータ処理装置が、ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するための処理手段であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理手段と、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するための推論制御手段であって、推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御手段とを備え、前記処理手段が、推論的ベクトル演算の前記シーケンスの実行中に進行表示を生成するためのものであり、推論制御手段が、進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するためのものであり、推論削減条件が、推論幅表示を削減せずに演算が継続するのに比べて推論幅表示の削減がデータ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件であり、推論制御手段が、推論幅表示を削減することによって前記推論削減条件の検出に応答するためのものである。
本発明について、単に例として、添付の図面に示すその実施例を参照してさらに説明する。
一実施例による、データ処理装置のブロック図である。 一実施例による、図1の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。 一実施例による、図1の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。 一実施例による、図1の推論制御回路内に設けられた種々の制御レジスタを概略的に示す図である。 説明した実施例の技術を使用してベクトル化され得るスカラ命令のループを概略的に示す図である。 一実施例による、図3のスカラ・ループをベクトル化するために使用されるベクトル命令のシーケンスを概略的に示す図である。 一実施例による、図3のスカラ・ループをベクトル化するために使用されるベクトル命令のシーケンスを概略的に示す図である。 推論的ベクトル演算のシーケンスの実施中に、一実施例によれば、推論幅がどのように削減されるかについて概略的に示す流れ図である。 一実施例による、推論を開始するとき実施されるステップを示す流れ図である。 一実施例による、コミット・プロセス中に担うステップを示す流れ図である。 一実施例による、ベクトル演算のシーケンスの実施中に条件終了ステージで実施されるステップを示す流れ図である。 いくつかの実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。 いくつかの実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。 さらなる実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。 さらなる実施例による、保留中の推論的ベクトル演算の動作が、推論幅の削減に続いてどのように変更され得るかについて概略的に示す図である。 説明した実施例の技術を使用しない推論的ベクトル演算の実行(図12A)と比較したときの、説明した実施例の技術を使用したとき実現され得る実行(図12B)の違いを概略的に示す図である。 説明した実施例の技術を使用しない推論的ベクトル演算の実行(図12A)と比較したときの、説明した実施例の技術を使用したとき実現され得る実行(図12B)の違いを概略的に示す図である。 一実施例による、削減基準がスラック指標の形式で性能許容情報を含む実施例で、推論幅がどのように調整され得るかについて示す流れ図である。 2つの実施例による、スラック指標が、図13の手法を採用するとき、どのように変化するかについて概略的に示す図である。 2つの実施例による、スラック指標が、図13の手法を採用するとき、どのように変化するかについて概略的に示す図である。 一実施例による、データ処理装置の仮想マシンの実装を概略的に示す図である。
図1に、一実施例による、データ処理装置5の一部を示す。これはベクトル処理部のみを示しており、ベクトル命令とスカラ命令の両方がデコードされ実行され得るような、スカラ処理回路、スカラ・ロード/記憶ユニット及びスカラ・レジスタ・バンクを設けることもできる。
実行される命令を保持する命令キュー10が設けられ、これらの命令は、命令をデコードし、また図1の装置内の適切な回路に制御信号を送信するように構成されたデコード回路20にルーティングされる。特に、一般的なベクトル処理命令の場合、デコード回路20が、ベクトル処理回路30内の関連するベクトル処理ユニット35に制御信号を発し、次いで、ベクトル処理回路30が、ベクトル・レジスタ・バンク40内に記憶された1つ又は複数のベクトル・ソース・オペランドを参照して必要なベクトル処理演算を実行する。典型的には、これらの演算の結果は、1つ又は複数のベクトル宛先オペランドとして、ベクトル・レジスタ・バンク40に再記憶もされ得る。図1に概略的に示すように、ベクトル処理ユニットは、例えば、1つ又は複数の算術論理ユニット(ALU)、浮動小数点ユニット(FPU)など、種々の形式をとることができる。
いずれのベクトル・データ・アクセス命令の場合も、これらの命令をデコードすると、制御信号がベクトル処理回路30内のベクトル・ロード/記憶ユニット50に発され、ベクトル処理回路30は、1つ又は複数のデータ・オペランドを、ベクトル・レジスタ・バンク40とキャッシュ/メモリ(このキャッシュ/メモリは本明細書ではメモリ・システムとも呼ばれる)との間でどちらの向きにも移動させるように構成される。解説のために示すと、メモリ・システムは、ベクトル・レジスタ・バンクと主メモリ76との間に位置する、レベル1キャッシュ72、レベル2キャッシュ74、及び潜在的なさらなるキャッシュ・レベルからなる階層的キャッシュ構造を含むことができる。
ベクトル・データ・アクセス命令がベクトル・ロード命令である場合、ロード/記憶ユニット50は、メモリ・システムから少なくとも1つのベクトル・オペランドを、べクトル・レジスタ・バンク40にロードする。同様に、ベクトル・データ・アクセス命令がベクトル記憶命令である場合、ロード/記憶ユニット50は、べクトル・レジスタ・バンク40から少なくとも1つのベクトル・オペランドを、メモリ・システムにロードする。
説明した実施例によれば、処理回路30は、推論的ベクトル演算のシーケンスを実行するように構成され、推論制御回路60が、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように設けられ得る。特に、推論制御回路が、いくつかの制御レジスタ65を有し、一実施例では、これらの制御レジスタのステートが、いつ推論的演算が実行されるかを識別し、現在の推論幅も識別し、制御情報は経路82を通してベクトル処理回路30に渡される。
図1に示す実施例では、命令キュー10に記憶された命令のシーケンスが、推論開始命令を含み、これは、デコード回路20によってデコードされると、制御信号が推論制御回路60に発されて演算の推論モードを開始する。特に、一実施例では、推論制御回路60は、こうした制御信号に応答して、推論モードが目下アクティブであると識別するために推論フラグを制御レジスタ65内に設定する。次いでこの情報は、経路82を介してベクトル回路30にルーティングされ、次いで、デコード回路20から受信した制御信号に従ってベクトル処理回路30によって実行されるその後のいずれの演算も、演算の推論モードが終了するその時まで、推論的方式で実行される。一実施例では、デコード回路20によってデコードされると、これにより、制御信号が推論制御回路60に送信されて、制御回路が推論フラグをクリアするようなコミット命令を介して、推論モードが、終了する。
説明した実施例では、演算の特定の推論モードが設けられるが、演算の特定の推論モードは必須要件ではない。その代わりに、一代替実施例では、命令セット中の命令の少なくともサブセットの推論的バージョンと非推論的バージョン両方が設けられてもよく、その結果シーケンス内の個別の命令が推論的に実行され得る。
ベクトル処理回路30によって実行されるいずれの推論的演算の場合も、推論幅表示は、これらの推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、推論制御回路60内の制御レジスタ65から経路82を通して渡される。推論が開始されるとき、推論幅表示は、初期値に初期化され、この初期値は、例えば一実施例では、オペランドのベクトル幅全体とすることができる。したがって、単に例として、ベクトル・オペランドが16ベクトル要素を含む場合、推論幅表示の初期値は、16にセットされ得る。
推論的ベクトル演算の実行中に、処理回路30が、経路80を通して推論制御回路60に進行表示を発するように構成される。進行表示は、ベクトル処理回路によって実行される種々の演算の進行についての情報を与える。進行表示は、種々の方式で発され得るが、一実施例では、ベクトル処理回路内のいくつかのイベントにより、進行表示が出力される。一実施例では、これらの進行表示が、スループットに影響を及ぼすイベント及び/又はエネルギー消費に影響を及ぼすイベントを示す。一実施例では、これらのイベントは、スループット又はエネルギー消費に否定的な影響を及ぼすタイプのイベントである。ただし、一代替実施例では、図13を参照して後に説明するように、これらのイベントは、スループット又はエネルギー消費に肯定的な影響を及ぼすイベントも含むことができる。
こうした進行表示を生じさせるタイプのイベントは、種々の形式をとり得るが、一実施例では、このイベントが、推論的ベクトル演算の実行中に処理回路30内で発生するマイクロアーキテクチャ上のイベントである。先に検討したようにこうしたマイクロアーキテクチャ上のイベントは、例えば、処理回路が、実行される命令を含むプログラムを作動させるとき、多かれ少なかれ時間又はエネルギーを使用することによって、実行の品質にだけ影響を及ぼすが、実行の正確性は影響を受けない。したがって、マイクロアーキテクチャ上のイベントの存在はそれ自体、変更される回路の演算についてのいずれの要件も提示しない。ただし、以下でより詳細に説明するように、説明した実施例によれば、推論幅の削減が行われずに演算が継続するのに比べて、こうした推論幅の削減がデータ処理装置の少なくとも1つの性能特性をおそらく改善するという状況を決定するために、推論制御回路が進行表示を使用する。
特に、推論制御回路60は、固定され得る、或いは、例えば命令ストリーム内の命令の実行を介して構成することができる、削減基準70にアクセスすることができる。削減基準が指定され得るいくつかの方式がある。例えば、推論削減基準が、進行表示を介して報告される一定のイベントに関連した予想されるレイテンシ及び/又はエネルギー消費を識別し、推論制御回路60が、経時的に受信するイベントに関係するレイテンシ及び/又はエネルギー消費を記録し、一定のトリガ・ポイントに達したときに推論削減条件を検出することができる。或いは、イベントが起きたときに推論削減条件の存在を示す一定のイベントを、削減基準70が直接識別する。
推論削減条件を検出すると同時に、経路80を通して受信した削減基準70に対する進行表示の分析を通じて、推論制御回路60が、推論幅を削減するように構成され、そのポイントで、制御レジスタ65の内容が、削減された推論幅を識別するように更新されて、新たな推論幅が経路82を通してベクトル処理回路30に転送される。これにより、ベクトル処理回路30が、進行中のベクトル処理演算を受けるベクトル要素の個数を削減する。特に、少なくとも、推論幅削減に至る進行表示を作成した演算の後で実行されるベクトル演算は、典型的に、削減されたいくつかのベクトル要素に実行される。一実施例では、推論幅削減が行われるような進行表示を生じさせた演算が、いまだ進行中と仮定すれば、そのとき、削減された推論幅は、その演算にも適用され得る。さらに、一実施例では、図10Bを参照して後に説明するように、推論幅削減は、削減が行われる時点でいまだ進行中のいずれのベクトル演算にも、たとえこれらの演算が、推論幅が削減されるような進行表示を生じさせた演算に先立って発されたとしても、影響を及ぼし得る。
現在の推論幅をもつ継続中の演算が、スループット又はエネルギー消費などの性能特性におそらく不利な影響を及ぼす状況を検出する進行表示を使用することによって、そのとき推論制御回路が、その影響を回避するようにするために推論幅を削減することができる。次いで、その推論幅削減の結果として推論的演算から除外されたいずれのベクトル要素も、必要なベクトル要素幅が削減される推論幅より大きいとその後に決定される場合、推論的ベクトル演算のその後の反復の対象となり得る。
推論幅が削減されるときベクトル処理回路30のエネルギー消費を削減するために、クロック/パワー・ゲーティング回路92が、任意選択で設けられ、経路90を介して現在の推論幅の指示を受信するように構成され得る。現在の推論幅情報に基づいて、クロック/パワー・ゲーティング回路が、ベクトル処理回路30内の種々のコンポーネントに供給されるクロック又は電力を変化させることができる。例えば、推論幅の削減の結果として、処理回路内の一定のコンポーネントが、1つ又は複数のクロック・サイクル用にいずれの演算も実行する必要がないと判断される場合、これらのコンポーネントによって消費される電力を削減するために、クロック信号がこれらのコンポーネントから取り除かれ得る。これらのコンポーネントが、より長い期間必要でない場合、装置が動的電圧スケーリング技術をサポートする状況で、これらのコンポーネント用の電圧源を取り除く又は削減することによって、これらのコンポーネントを低電力モードのオペレーションにおくことが適切となり得る。
ベクトル処理回路内のコンポーネントのいずれも、経路80を通して進行表示を作成するように構成され得る。ただし、おそらくスループットに不利な影響を及ぼすイベントを考えると、これらのイベントは、ベクトル・ロード/記憶ユニット(LSU)50を使用してロード又は記憶演算を実行するときに起こるキャッシュ・ミスに関連することが多い。特に、LSUが、ベクトル・ロード又は記憶演算を実行するときに、特定のベクトル要素位置に関連するレベル1キャッシュ72かレベル2キャッシュ74内のキャッシュ・ミスを検出する場合、これは、経路80を通して進行表示を送信して、どのキャッシュ・レベルでそのミスが検出されたか、またキャッシュ・ミスが発生する要素位置を識別することができる。次いで、推論制御回路は、削除基準70に関連して、推論幅を削減するかどうかを決定するために、その情報を使用することができる。削除基準は、例えば、いずれかのレベル2キャッシュ・ミス(これは典型的に有意なレイテンシを受ける)により、推論幅がレベル2キャッシュ・ミスを生じさせるベクトル要素位置を除外するために削減されることになるはずであるということを、識別することができる。或いは、削減基準70は、別個の要素位置向けの別個の基準を有効に提供することができる。例えば、ベクトル内の要素位置が増加するにつれて、推論の程度はより大きくなることを示し、したがって、高位の要素位置に関連するキャッシュ・ミスにより、直ちに推論幅が削減され得るが、より低位の要素位置に関連するキャッシュ・ミスにより、推論幅が削減される必要はない。
データ処理システムは、メモリにアクセスするとき仮想アドレスを使用することが多く、TLBストレージ55が、これらの仮想アドレスをメモリ・システムにアクセスするための物理アドレスに変換するために使用される。より良好に理解するように、TLBストレージ55は、特定の仮想アドレスを識別するいくつかのエントリ、それぞれの仮想アドレスを物理アドレスに変換するために使用される情報、及び、アドレスがメモリのキャッシュ可能エリア又はバッファ可能エリアに関するかどうかなどの一定の許可属性情報も有する。したがって、LSUは、仮想アドレスをTLBストレージに発し、その仮想アドレス用のTLBストレージ内でヒットが検出される場合、必要な物理アドレス及び許可属性情報は、直ちにLSUに返され得る。ただし、ミスのイベントでは、TLBストレージが、典型的に、必要な情報を含むページ・テーブルをメモリ・システムから取得するためにページ・テーブル・ウォーク・プロセスを実行して、仮想アドレスが物理アドレスに翻訳され、また関連する許可属性を与えることを可能にする必要がある。そのプロセス中、TLBストレージ55は、必要なページ・テーブル情報を取得するために、必要に応じて、レベル1キャッシュ72及びメモリ階層のより低いレベルに随時アクセスする。そのプロセス中にキャッシュ・ミスが発生するイベントでは、これは、経路80を通る進行表示として推論制御回路に再度報告され、推論幅を削減するかどうか決定するために、推論制御回路によって使用され得る。
一実施例では、推論幅表示がそれに初期化される初期値と推論削減基準との両方があらかじめ定められ得る。ただし、別法では、それらが、データ処理装置によって実行される命令の少なくとも1つによって指定され得る。例えば、推論開始命令が、制御レジスタ65内に設定される初期推論幅を識別することができる。これは、推論的ベクトル演算の実行中に、推論幅を削減するかどうか評価するとき、推論制御回路60によって使用される一定の推論削減基準も識別することができる。別の選択肢として、推論的ベクトル演算の以前のシーケンス用に使用された推論幅値及び/又は推論削減基準に関する履歴データを維持するために使用される推論予測回路85を、提供することができる。推論幅値に関しては、履歴データが、推論的ベクトル演算の以前のシーケンスの実行中にコミット・ポイントに存在する最終推論幅値を識別することができる。次いで、予想回路は、推論を開始する命令に関連するプログラム・カウンタ値を受信し、それに基づいて、推論幅表示用に使用される初期値を決定するために、そのプログラム・カウンタ値から開始される推論的ベクトル演算の以前のいずれのシーケンスも考慮して履歴データを参照し、また、必要ならば、使用される推論削減基準を決定するように構成され得る。履歴データは、推論予測回路85にアクセス可能な履歴ストレージ87内に記憶される。
図1に、進行表示が、ベクトル処理回路30によって発されるときのみを示すが、代替実施例では、推論制御回路60が、システム内のどこかから、例えばスカラ処理回路から、進行表示を受信することもできる。
制御レジスタ65は、種々の形式をとることができ、図2Aに、制御レジスタ内に記憶され得るいくつかのパラメータを示す。最初に、推論幅値100が維持され、一実施例では、これが、1から16までの値をとり、推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数が、1ベクトル要素から16ベクトル要素(一実施例では16ベクトル要素が、ベクトル・オペランドの全幅を表す)まで変化し得ることを示すことができる。
一実施例では、制御レジスタ65が、推論がオンであるかないかについて示すように設定される推論フラグ105を含むこともできる。推論がオフであるとき、ベクトル演算はいずれも推論的に実行されない。ただし、推論がオンになると、ベクトル演算が推論的に実行される。
推論幅100は、種々の方式で指定され得る。ただし、一実施例では、制御レジスタ65が、第1の要素位置レジスタ110と推論幅レジスタ155との両方を含む。第1の要素位置レジスタ110は、ベクトル処理演算を受ける最初のベクトル要素位置を識別し、そのとき推論幅レジスタ115が、最終ベクトル要素位置を識別し、次いでベクトル・オペランド120内の推論幅が、これらの2つのレジスタの内容間の差によって示される。
ベクトル演算のシーケンスの第1の反復中、これは、第1の要素位置レジスタがベクトル120内の最初のベクトル要素を指す事例でもよく、推論幅レジスタ115は、例えば最後のベクトル要素を指し、したがってベクトル幅全体を指定することができる。ベクトル演算の実行中、推論幅レジスタの内容が、削減された推論幅を識別するように削減され得る。コミット・ポイントに達する時点で、推論幅が、コミット・ポイントで決定されたベクトル要素の必要な個数より少なく削減された場合、ベクトル演算のその後の反復が実行される可能性があり、このとき、第1の要素位置レジスタ110は、推論的ベクトル演算の以前の反復を介して処理されなかった第1の必要なベクトル要素を識別するように設定される。次いで、推論幅レジスタ115は、その後の反復用に必要な推論幅を識別するように設定される。
図2Bの例では、2つの別々のレジスタが維持されるが、一代替実施例では、マスク・レジスタ130が推論幅表示を識別するために設けられ得る。特に、マスクは、ベクトル・オペランド120内のそれぞれの要素位置ごとのビットを含むことができ、これらのビットが、推論幅を識別するために0又は1に設定される。一実施例では、推論幅が、マスク内に含まれる一連の論理値1によって指定され、そのマスクの内容は、演算の実行中に、一定のこれらの論理値1が、削減された推論幅を識別するために論理値0に変換されることによって、推論幅が削減されるように更新される。代替実施例では、マスク内の論理値1及び論理値0に基づいて意味するものは、逆にすることもできることが理解されよう。
図3に、先に説明した実施例を使用してベクトル化され得るスカラ・ループを概略的に示す。スカラ命令のこのループは、一連の命令を含み、そのうちのいくつかが、ループを終了するかどうかについて決定するために実行される条件テストに先立って発生し、またそのうちのいくつかは、その条件テストの後に発生する。示される例示的なシーケンスでは、ループが、3つの完結した反復200、205、210を通過し、次いで、条件テストは、ループが第4の反復215の途中のポイント220で終了するべきと示すように評価される。条件テストは、必要な反復回数が既知ではないような事例が多く、したがって、この例では、ループが第4の反復の途中で終結するが、他の例では、より多くの反復が実行されるまで終結しない可能性があり、又は実際には先に終結する可能性もある。
こうしたスカラ・ループをベクトル化するために推論的ベクトル演算を実行するとき、それぞれのスカラ命令は、ベクトル命令に置き換えられ、指定されたベクトル・オペランドが、複数のベクトル要素を含み、それぞれのベクトル要素が異なる反復に関係する。どの反復でスカラ・ループが終了するかについては分からないので、ベクトル要素の特定の個数を有するベクトル・オペランドを指定することによって、ループをベクトル化することはできない。その代わりに、図4に示すように、条件テストに先立って発生するスカラ命令に相当するベクトル命令の場合、推論幅が、必要なベクトル要素の個数に関して推論するために使用される。先に検討したように、一実施例では、この推論幅が、最初に16などの選択された値に設定され、したがって、これらのベクトル命令のそれぞれの例示的な実行は、最初に、相当するスカラ命令16回(すなわち、16の別々の反復のそれぞれにつき1回)の実行を再現する。現在の推論幅が、生成されると推論削減条件が検出されるような進行表示を生じさせる場合、先に説明したように、それぞれのベクトル・オペランドからの少なくとも1つのベクトル要素が処理され続けることを確実にしながら、推論幅は削減される。
条件テストが、その後評価されるとき、どのくらい多くのべクトル要素が必要とされるかについて決定され得る。例えば、相当するスカラ・ループが第3の反復で終了し、したがって、必要な推論幅は3となると評価することができる。推論幅がいまだ3より大きいと仮定すると、そのとき必要なベクトル要素の全ては、処理されているであろう。ただし、現在の推論幅が条件テストによって示される反復回数より少ない場合、必要なベクトル要素の残りを処理するために、ベクトル演算のシーケンスの少なくとも1つのさらなる反復をその後実行することが必要となる。
コミット・ポイントに続いて、次いで残りのベクトル命令が非推論的に実行される。ただし、条件テスト分析中に識別された幅を考慮して、マスクは、ベクトル要素の必要な個数だけが処理されることを確実にするように設定され得る(又は、それが必要な幅より少なかった場合、現在の推論幅に相当する個数、したがってさらなる反復が必要となる)。次いでこのプロセスは、条件に応じて終了する。特に、条件テストが、必要なデータの全てが書き込まれたことを示す場合、プロセスは終了するが、そうでない場合、プロセスが少なくともさらに1回繰り返される。
図5に、特定の推論及びコミット命令が使用される状況の場合のベクトル・ループを示す。推論命令は、推論をオンにし、したがって推論フラグ105を設定するために使用される。その後、推論幅100がそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために使用されて、一連の命令が推論的に実行される。先に検討したように、推論幅は、推論削減条件の検出に依存してベクトル演算の実行中に削減され得る。その後、1つ又は複数の命令が、コミットするのに適切な幅を決定するために実行され、その後、別々のコミット命令が実行されると推論がオフとなる。これに続いて、一連の非推論的命令が、実行され、先に検討したように、マスク又は長さの値が、コミット・ポイントに先立ってなされた決定を適切に考慮してベクトル要素幅を設定するために、これらの命令に関連して使用され得る。次いで、ループが繰り返されるべきか、終了するべきかを決定するために、分岐命令が使用され得る。
図6は、一実施例に従って実行された推論幅削減プロセスを示す流れ図である。ステップ300で、推論制御回路が、進行表示の受信を待機し、ステップ300で進行表示が受信されなかったと判断され、また、ステップ305で、例えば推論フラグが制御レジスタ65内にいまだアサート中なので、推論が終結されなかった場合、このプロセスは、進行表示が受信されるまでステップ300で待機する。推論が終結される場合、プロセスは、ステップ305から310まで進み、終了する。
進行表示の受信と同時に、ステップ315で、推論制御回路60が、推論削減基準70を参照して進行表示を分析し、その後、ステップ320で、推論削減条件が検出されたかどうか判断する。されなかった場合、プロセスはステップ300に戻る。ただし、推論削減条件が検出される場合、ステップ325で、推論制御回路が、必要な推論削減の程度を決定する。これが、既定の量であると、推論制御回路がその既定の量の分の推論幅を削減することができ、又は代わりに、最も有意な要素位置が、進行表示を生じさせる識別された要素位置の1つ左になるように新たな推論幅を設定するなど、適用されるルールの観点からあらかじめ定められて、それによって、改定された推論幅からその識別された要素位置を除外することができる。
一代替実施例では、推論削減の程度が、推論削減基準それ自体を考慮して決定され得る。こうした手法の一例について、図13を参照して後に説明するが、削減基準は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかで利用可能なスラックの指示を与えるスラック値を維持し、推論幅削減の量が、スラックが超過する限度を考慮して動的に管理される。
ステップ325での推論削減の程度の決定に続いて、ステップ330で推論幅が削減され、その後、プロセスがステップ300に戻る。以前に検討したように、一旦、推論幅が削減されると、この情報が、経路82を通してベクトル処理回路30に渡されて、いずれかの未処理の推論演算の実行中に処理されるベクトル要素の個数が削減される。
図7は、推論を開始するときに実行されるプロセスを示す流れ図である。推論は、種々の方式で開始され得るが、一実施例では、明示的推論開始命令が提供され、この命令が、デコード回路20によってデコードされると、適切な制御信号が推論制御回路60に発される。ステップ340で、適切な制御レジスタ65を設定することによって、初期推論幅が決定され、設定される。以前に検討したように、初期推論幅は、あらかじめ定められてよく、デコード回路から転送される制御情報内で識別されてもよく、又は、実際に初期推論幅が、推論予測回路85によって与えられてもよい。ステップ340に続いて、ステップ345で、推論モードは、装置が明示的推論ノードを使用しているかしていないかに応じて任意選択でオンにされる。
図8は、図5のベクトル・ループ内の一連の推論的演算が一旦実行されると、またいずれかの非推論演算の実行に先立って、実行さるたコミット・プロセスを示す流れ図である。1つ又は複数の命令が、図8に示すステップを実行するために実行され得る。ステップ350で、条件テストが、必要なベクトル幅、すなわち処理されるベクトル要素の必要な個数を決定するために実行される。その後、ステップ355で、現在の推論幅が読み出され、次いでステップ360で、現在の推論幅が、必要なベクトル幅と比較される。
次いでステップ365で、推論ベクトル演算が推論不足に至ったかどうかを判断する。これは、推論幅が、コミット・ポイントに達した時点で必要なベクトル幅より少ないポイントまで削減された場合の事例である。そうでない場合、現在の推論幅が必要なベクトル幅より大きい場合、プロセスは推論過剰となる。
推論過剰のイベントでは、プロセスが、ステップ385に進み、リピート・フラグがクリアされて、これ以上のベクトル・ループの反復は必要ないことを示す。その後ステップ390で、必要なベクトル幅を識別するために非推論的命令用にマスクが設定される。これにより、ベクトル・ループがさらなる反復の必要なく相当のスカラ・ループをベクトル化することができる。
ただし、推論不足のイベントでは、次いでステップ370で、ベクトル・ループのその後の反復を呼び出すために、リピート・フラグが設定される。その後、ステップ375で、現在の推論幅を識別するために非推論命令用にマスクが設定される。したがって、一旦、現在のベクトル・ループが完結すると、推論的ベクトル演算と非推論的演算との両方が、同一の個数のベクトル要素を処理したことになる。次いで、必要なベクトル幅内の残りのベクトル要素を処理するために、ベクトル・ループが1つ又は複数回繰り返され得る。
ステップ375又は390に続いて、特定の推論モードが使用される実施例では、次いでステップ380で、推論モードがオフにされる。これにより、ベクトル・ループ内の後続の命令が非推論的に実行されることが確実になる。
図9に、一連の推論的命令及び非推論的命令の実行に続く、図5に示すような分岐命令によって典型的に実行される条件終了プロセスを示す。ステップ400で、リピート・フラグが設定されているかどうかを決定する。設定されている場合、次いでステップ405で、プロセスが、ベクトル・ループの始まりの推論開始ポイントに戻るが、そうでない場合、ステップ410で、プロセスが終了する。
図10Aは、推論幅が削減されるとき、推論的ベクトル演算の処理がどのように変化するかについて概略的に示す図である。最初に、推論命令が実行されて推論モードをオンにし、指定された量、この例では16ベクトル要素に推論幅を設定する。図の例では、ベクトル処理回路内のコンポーネントが、単一サイクル中にそれぞれのソース・オペランドから2つのベクトル要素を処理することができることを前提とし、したがって、420のベクトル演算VOP1を実行するコンポーネントは、必要な演算の全てを完結するために8サイクルかかる。
示す例では、VOP1とVOP2(この例のVOP2はベクトル・ロードである)との間にデータ依存性があることを前提とし、その結果VOP2の実行は、VOP1の実行が始まった後に1サイクルが始まる。
この例に示すように、LSU50がベクトル・ロードを処理しているとき、図10Aの参照番号430によって示すように、ベクトル要素9(すなわち、要素位置10のベクトル要素)に関連するマイクロアーキテクチャ上のイベントを検出し、進行表示を発して、イベント及び要素位置を識別する。こうしたマイクロアーキテクチャ上のイベントは、例えばベクトル要素9をロードしようとするときに発生するキャッシュ・ミスとすることができ、この例では、削減基準70に対してその進行表示を評価するとき、推論制御回路60が9つの要素の幅に推論幅を削減すると決定することを前提とし、それによって、ベクトル要素9(先に述べたように要素位置10)を除外する。ベクトル演算VOP3は、進行表示を発し関連する推論幅を削減することに先立って処理され始めているベクトル演算の一例を示すが、これは、推論幅が削減される時点で、いまだ進行中である。435のVOP3内の×印によって示すように、VOP3実行コンポーネントは、推論幅の削減に応答して、要素位置10又はそれより高位のベクトル要素のいずれの処理も除去するように構成され得る。図1を参照して先に検討したように、クロック・ゲーティング及び/又はパワー・ゲーティング技術は、削減される推論幅に基づいて、VOP3実行コンポーネントのエネルギー消費を削減するために使用され得る。
ベクトル演算VOP4は、この例では参照番号440で示すように、推論幅削減がなされた後でのみ開始されるベクトル演算を示し、(これ以上の推論幅削減を受けない)アウトセットで、ベクトル演算が最初の9ベクトル要素に関して実行される必要があることが分かる。
図10Aに示す例では、440のベクトル演算VOP4が、別のベクトル・ロード演算であり、また、そのベクトル・ロードが、初期ベクトル・ロードVOP2が完結するまで実行し始めることができないことを前提とする。
図10Bは、推論幅の調整が、今後のベクトル演算にだけでなく先行するベクトル演算にも影響を及ぼす一代替実施例を示す。特に、参照番号450で示すように、推論幅が削減されるとき、これにより、VOP2実行コンポーネント(すなわち、推論削減を生じさせたベクトル演算)が1つ又は複数のその後の反復の処理も終結し、この事例では2つの反復が最後の4ベクトル要素に関係する。
加えて、一実施例では、プロセスが、VOP2より以前のものでも、発されたベクトル演算のオペレーションを遡及的に削除するために使用され得る。示されるこの例では、参照番号445で示すように、VOP1の最終反復は、削減される推論幅に基づいても終結される。重ねて、クロック及びパワー・ゲーティング技術は、これらの演算を実行するコンポーネントのエネルギー消費を削減するために使用され得る。コンポーネントが、他の演算をより迅速に処理するように利用できるので、実現され得る別の利点は性能を増大することである。例えば、VOP4を考えると、LSU50は、VOP2の実行を2サイクル速く終結し、したがって、VOP4は、図10Aの例と比較すると、図10Bの例では2サイクル速く開始することができる。
図11A及び図11Bは、推論削減が、その後の演算の実行の変更をどのようにトリガするかについてのさらなる例を示す。この例では、VOP1及びVOP2を実行するコンポーネントが、それぞれの反復のそれぞれのソース・ベクトル・オペランドからの8ベクトル要素を処理することができることを前提とし、したがって、元々指定されている16ベクトル要素は、2サイクルで処理され得る。推論削減トリガが、460のVOP1を実行するときポイント465で発生する場合、特に、推論削減を生じさせた要素位置465以上の要素位置を処理するこれらのコンポーネントの場合、これは、VOP2を処理する一定のコンポーネントをクロック・ゲーティング(又は実際にパワー・ゲーティング)する(参照番号475に示す)ために使用され得る。ただし、クロック・ゲーティングされる推論削減を生じさせた位置以上の要素位置の全てに対する必須要件はなく、図11Bに示すように、一代替実施例では、参照番号480で示すように、より高位の要素位置のサブセットのみがクロック・ゲーティングされ得る。図14を参照して後に検討するように、これは、例えば、推論幅が、ベクトル要素位置465及びそれより高位を除外するために遡って削除されるのではなく、実際に2つ分だけ削除されるべきであるという削減基準を、推論制御回路60が参照して決定することに起因する。
図12Aに、レベル2のキャッシュ・ミスなどのマイクロアーキテクチャ上のイベントが、推論的ベクトル演算を実施するとき、有意なレイテンシをどのように導くことができるかについて示す。この例では、推論的命令が、ポイント500で実行されて、初期推論幅を16と設定する。次いで、ベクトル・ロード命令510が、実行されるが、この例では、ベクトル要素6(すなわちベクトル要素位置7のデータ要素)をロードしようとするときレベル2キャッシュ・ミスが起こる。これにより、この例では、ベクトル・ロード演算がベクトル要素6及び残りのベクトル要素をロードすることが可能となる前に、200サイクルのレイテンシが導かれる。これは、後続の2つのベクトル演算515のVOP1と520のVOP2との間のデータ依存性に因り、これらの種々のベクトル演算に連鎖的影響を与える。次いで、ポイント525でさらなるサイクルが消費され、コミット・プロセスが実行されるとき、推論幅はこのポイントではまだ16である。明らかなように、これにより、必要なベクトル演算を実行するために総計は212サイクルとなり、これは、平均で1ベクトル要素につき13.25サイクルである。
対照的に、図12Bに、説明した実施例の適応する推論幅の手法が使用される状況を示す。ステップ500で、推論幅は再び16に初期設定されるが、レベル2キャッシュ・ミスがベクトル・ロード演算530のデータ要素6(要素位置7)に関して検出されるとき、これにより、推論制御回路60が、(削減基準に対して進行表示を評価し、すべき削減を決定するのにかかる時間に因り)短時間の遅れの後、動的に推論幅を6に削減する。削減された推論幅の結果として、535のVOP1と540のVOP2は、最初の6つの要素位置を処理するだけであり、したがって、現在の推論幅6に基づいて、VOP2の最初の6つの要素が実行されると直ちに、コミット・プロセスが、ポイント525で実行され得る。結果として、プロセスは、6要素を処理するのに7サイクルかかり、これは、平均で1ベクトル要素につき1.167サイクルである。
コミット・ポイントで必要な推論幅が6以下と決定されると仮定すると、そのときベクトル・ループのこれ以上の反復は必要なく、プロセスは完結する。そうではなく必要な推論幅が6より大きいと決定される場合、残りの要素を処理するために、ベクトル・ループの1つ又は複数のさらなる反復が実行される必要がある。それにもかかわらず、このことにより、その後の反復が実行されるまで、ベクトル要素6に関して発生するレベル2キャッシュ・ミスはもはやなくなり、したがってその後の反復がはるかに効率的に進行する可能性が高いので、性能に有意な向上をなお生じさせ得る。
推論削減基準は、それを満たすならば推論削減条件の存在を示す1つ又は複数の基準を直接指定することができるが、或いは又は加えて、推論制御回路によって維持され、推論的ベクトル演算のシーケンスの実行中に生成される進行表示を考慮して調整される性能許容情報を、推論削減基準が含むことができる。図13は、こうした一実施例による、推論削減プロセスの実行を示す流れ図であり、性能許容情報は、性能特性が推論的ベクトル演算の処理中にどのように影響を受けるかで利用可能なスラックの指示を与えるスラック指標の形式をとる。
ステップ600で、推論幅が、推論の開始時の初期値に設定され、ステップ605で、パラメータ「スラック」が、いくつかの指定されたバジェット値に設定される。この値は、推論を開始する命令によって与えられてよく、プリセットとすることができ、又は他の方式、例えばこうした予測回路を組み込む実施例で推論予測回路85から与えられてもよい。
ステップ610で、進行表示が受信されたかどうか判断され、受信されていない場合は、ステップ615で推論が終結されたかどうかが判断される。終結された場合、ステップ620でプロセスが終了するが、そうでない場合、プロセスがステップ610に戻る。
進行表示が受信されると、その進行表示が、性能特性に否定的な影響を示すか肯定的な影響を示すか判断される。特に任意選択の一実施例では、処理回路30が、性能特性に否定的な影響を及ぼすイベントに関する進行表示だけでなく、例えば一定の演算が予想より迅速に実行されたことを示すような、肯定的な影響を及ぼす一定のイベントに関する進行表示も与えることができる。肯定的な進行表示のイベントでは、次いでステップ630で、進行表示によって示される量の分スラック値が増大され、その後プロセスがステップ610に戻る。
対照的に、ステップ625で検出される否定的な進行表示のイベントでは、ステップ635でパラメータ「コスト」が評価され、これがその否定的な指示に関連する性能コストを示す。その後、スラック値が、現在のスラック値からコスト値を減じることによって調整される。次いでステップ655で、スラック値が目下、否定的であるかどうかが判断され、そうでない場合、プロセスがステップ610に戻る。
ステップ655で、スラック値が否定的であると判断される場合、内部パラメータ(SW)が、現在の推論幅から現在のスラック値の関数として決定された値を減じることによって設定される。この関数は、種々の方式で設定され得るが、一例では、これにより、スラック値がより否定的である推論幅からより大きな量が差し引かれる。
ステップ665で、パラメータSWが1より小さいかどうかが検出される。小さい場合は、プロセスがステップ675に進む前に、ステップ670でSWが1に等しく設定されるが、そうでない場合は、プロセスが、ステップ665から直接ステップ675に進む。ステップ665、670の目的は、ベクトル・ループの現在の反復がいくつかの肯定的な進行を常に作り出すことを確実にするために、内部パラメータSWが、決して1より小さく削減されないことを確実にすることである。特に、ステップ685で、推論幅が、SWに等しく設定され、したがって、ステップ610に戻るプロセスに先立って1以上の値に設定される。
ステップ675及び680は任意選択であり、ステップ675で、内部パラメータ「削減」が現在の推論幅(すなわち、ステップ685での調整前の推論幅)から内部パラメータSWを減じることによって決定される。その後、ステップ680で、スラック値が、決定された「削減」値だけ増大される。次いでステップ685で、推論幅が削減される。任意選択のステップ675、680を使用すると、したがって、推論幅が削減されるときは必ず、スラック値が、推論幅が削減される量に依存して肯定的に調整されることが分かる。
図14A及び14Bに、スラック値が、図13のプロセスを実行するときにどのように変化し得るかを概略的に示す。図14Aの例では、任意選択のステップ630が実行されることを前提とする。傾斜687で示すように、スラック値は、経路80を通して受信されたいくつかの肯定的な指示に続いて最初増大する。否定的な指示により、スラック値の第1の降下が生じ、次いで、第2の否定的な指示により、スラック値がポイント688で否定的な値に降下する。このポイントで、推論幅が削減され、スラック値は、削減の量だけ肯定的に調整される。傾斜689に示されるように肯定的な進行表示が継続すると、スラック値はさらに増大するが、2つの否定的な進行表示の後再び、スラック値がポイント690で否定的に戻る。これにより、推論幅が再び削減され、任意選択でスラック値が、推論幅の削減に基づいて増大される。次いで、肯定的な進行表示により、スラック値が直線691に続く。
一実施例では、スラック値が肯定的な指示の受信と同時に肯定的に調整される量は、推論幅に依存する。特に、推論幅がより大きくなるにつれて、肯定的な指示の総合的影響が大きくなり、したがって、傾斜687の傾きは、傾斜689より大きく、同様に傾斜689の傾きは、傾斜691より大きい。
図14Aでは、任意選択のステップ675、680が実行されないことを前提とし、したがって、スラック値は推論幅の削減を補うために肯定的な方向では調整されない。ただし、一代替実施例では、ステップ675及び680が実行されることになり、結果としてポイント688、690で、後続の傾斜689、691に先立ってスラック値の肯定的なジャンプがあることになる。スラック値の肯定的なジャンプは、ステップ660で適用されるスラック値の関数、したがって推論幅の削減が行われる限度に依存するので、スラック値が再び肯定的な値をとる又はとらない可能性がある。
図14Bに、いずれの肯定的な進行表示も受信せず、したがってスラック値が初期バジェット値で開始され、次いで、否定的な指示が受信されるごとに段階的に減少する一例を示す。スラック値が否定的になった後スラック値の降下があるたびに、推論幅が削減される。
図15に、使用され得る仮想マシンの実装を示す。先に説明した実施例は、当該の技術をサポートする特定の処理ハードウェアを操作するための装置及び方法の観点から、本発明を実行するが、いわゆるハードウェア・デバイスの仮想マシンの実装を提供することも可能である。これらの仮想マシンの実装は、典型的に仮想マシン・プログラム710をサポートするホスト・オペレーティング・システム720を作動させるホスト・プロセッサ730上で作動する。相応な速さで実行する仮想マシンの実装を実現するには非常に強力なプロセッサを必要とすることが多いが、こうした手法は、互換性又は再利用の理由で、別のプロセッサ由来のコードを作動させたいときなど、一定の環境では理にかなったものとされ得る。仮想マシン・プログラム710は、こうしたリアル・ハードウェア・デバイスによるプログラムの実行によってもたらされるはずのものと同じ結果をもたらすような、アプリケーション・プログラム(又はオペレーティング・システム)700を実行する能力をもつ。したがって、上記で説明した推論的ベクトル命令を含むプログラム命令が、仮想マシン・プログラム710を使用して、アプリケーション・プログラム700内から実行され得る。
上記で説明した技術の使用を通じて、データ処理装置の少なくとも1つの性能特性(スループット又はエネルギー消費など)は、特定の推論幅の推論的ベクトル演算の実行がその選択された実行特性に過度に不利な影響を及ぼす状況を回避しようとすることによって、推論的ベクトル演算を実行しながら改善され得る。こうした手法によって、推論幅は、必要としなくてもよい時間消費又はエネルギー不足作業を回避しようとするために、動的に調整され、したがって時間及びエネルギーを節約することができる。進行を保証するために、一実施例では、推論幅は、決して1要素より少なく削減されない。
特定の実施例について本明細書で説明したが、本発明はそれに限定せず、本発明の範囲内でこれに多くの改変及び追加を加えることができることを理解されたい。例えば、本発明の範囲から逸脱することなく独立請求項の特徴を用いて、以降の従属の特許請求の範囲の特徴の種々の組合せがなされ得る。

Claims (28)

  1. ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するように構成された処理回路であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理回路と、
    前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するように構成された推論制御回路であって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御回路とを備え、
    前記処理回路が、推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するように構成され、
    前記推論制御回路が、前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するようにさらに構成され、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減がデータ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件であり、
    前記推論制御回路が前記推論削減条件の検出にさらに応答して前記推論幅表示を削減する、データ処理装置。
  2. 前記進行表示が、前記推論的ベクトル演算の実行中に前記処理回路内で発生するスループットに影響を及ぼすイベントを示す、請求項1に記載のデータ処理装置。
  3. 前記進行表示が、前記推論的ベクトル演算の実行中に前記処理回路内で発生するエネルギー消費に影響を及ぼすイベントを示す、請求項1又は請求項2に記載のデータ処理装置。
  4. 前記マイクロアーキテクチャ上のイベントが、キャッシュ・ミスのイベント及びトランスレーション・ルックアサイド・バッファ(translation lookaside buffer:TLB)・ミスのイベントの少なくとも一方を備える、請求項1から3までのいずれかに記載のデータ処理装置。
  5. 前記推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドの最初のベクトル要素をさらに識別する、請求項1から4までのいずれかに記載のデータ処理装置。
  6. 前記推論幅表示が、前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の前記個数を、前記最初のベクトル要素から開始するシーケンシャルなベクトル要素の指定された個数であると識別する、請求項5に記載のデータ処理装置。
  7. 前記処理回路が、命令のベクトル・ループを実行するように構成され、前記ベクトル・ループが、ベクトル演算の前記シーケンスを定義する命令と、ベクトル演算の前記シーケンスの実行に続く、前記ベクトル・ループ内のコミット・ポイントで実行される少なくとも1つの評価命令とを含み、前記少なくとも1つの評価命令の実行により、必要なベクトル幅が決定され、
    前記推論制御回路が、前記必要なベクトル幅の決定に応答して、前記推論幅表示の現在の値を参照してベクトル演算の前記シーケンスの実行が推論過剰に至ったか推論不足に至ったかについて決定し、前記推論不足のイベントでは、リピート・フラグを設定して命令の前記ベクトル・ループのさらなる反復を実行させる、請求項1から6までのいずれかに記載のデータ処理装置。
  8. 命令の前記ベクトル・ループのさらなる反復が行われると、前記推論制御回路が、命令の前記ベクトル・ループの先行反復中に処理されたベクトル要素の個数を考慮して変更した初期値に前記推論幅表示を初期化するように構成される、請求項7に記載のデータ処理装置。
  9. 前記ベクトル・ループが、前記コミット・ポイント後に実行される1つ又は複数の非推論的命令を含み、前記推論制御回路が、前記1つ又は複数の非推論的命令によって定義された前記非推論的演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を識別するために、マスク値を設定するようにさらに構成される、請求項7又は請求項8に記載のデータ処理装置。
  10. 前記処理回路によるアクセス用に前記ベクトル・オペランドを記憶するように構成されたベクトル・レジスタ・バンクをさらに含み、
    前記処理回路が、前記ベクトル・レジスタ・バンクとキャッシュ・ストレージの少なくとも1つのレベルを含むメモリ・システムとの間でベクトル・オペランドを移動させるためにベクトル・アクセス演算を実行するように構成されたデータ・アクセス回路を含み、
    前記データ・アクセス回路が、前記ベクトル・アクセス演算の実行中に発生するキャッシュ・ミスに関する情報を前記進行表示として発するように構成される、請求項1から9までのいずれかに記載のデータ処理装置。
  11. 前記ベクトル・アクセス演算の実行中に前記データ・アクセス回路によって参照されるトランスレーション・ルックアサイド・バッファ(translation lookaside buffer:TLB)をさらに備え、前記データ・アクセス回路が、前記ベクトル・アクセス演算の実行中に発生するTLBミスに関係する情報を前記進行表示として発するようにさらに構成される、請求項10に記載のデータ処理装置。
  12. 前記処理回路が、前記推論幅表示の前記削減に応答して、前記推論幅表示を削減させる前記推論削減条件の検出に至る進行表示をもつ前記ベクトル演算から始まる前記シーケンスで発生する選択されたベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する、請求項1から11までのいずれかに記載のデータ処理装置。
  13. 前記処理回路が、前記推論幅表示の前記削減にさらに応答して、前記推論幅表示を削減させる前記推論削減条件の検出に至る進行表示をもつ前記ベクトル演算前の前記シーケンスで発生する非完結ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を変更する、請求項12に記載のデータ処理装置。
  14. 前記推論幅表示の削減に応答して前記処理回路の1つ又は複数のコンポーネント内の電力消費を削減するように構成された制御回路をさらに備える、請求項1から13までのいずれかに記載のデータ処理装置。
  15. 前記制御回路が、前記1つ又は複数のコンポーネント内の電力消費を削減するために、クロック・ゲーティング及びパワー・ゲーティングのうちの少なくとも1つを利用する、請求項14に記載のデータ処理装置。
  16. 前記推論幅表示がそれに初期化される前記初期値及び前記推論削減基準の少なくとも1つが、前記データ処理装置によって実行される命令によって指定される、請求項1から15までのいずれかに記載のデータ処理装置。
  17. 前記推論幅表示がそれに初期化される前記初期値及び前記推論削減基準の少なくとも1つが、あらかじめ定められる、請求項1から15までのいずれかに記載のデータ処理装置。
  18. 前記処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に、コミット・ポイントで使用された推論幅値に関する履歴データを維持するように構成された予測回路をさらに備え、
    前記予測回路が、前記処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、前記履歴データを参照して、推論的ベクトル演算の前記現在のシーケンスの実行に先立って前記推論幅表示がそれに設定されるべき前記初期値を決定するように構成される、請求項1から15までのいずれかに記載のデータ処理装置。
  19. 前記処理回路によって以前に実行された推論的ベクトル演算のシーケンス用に使用される推論削減基準に関する履歴データを維持するように構成された予測回路をさらに備え、
    前記予測回路が、前記処理回路によって実行される推論的ベクトル演算の現在のシーケンス用に、前記履歴データを参照して、推論的ベクトル演算の前記現在のシーケンスの実行用に使用される前記推論削減基準を決定するように構成される、請求項1から15までのいずれかに記載のデータ処理装置。
  20. 前記推論制御回路が、推論的演算のモードをトリガする推論開始命令の実行に応答し、前記処理回路が、前記推論的演算モード中に実行される命令に応答して、前記推論的ベクトル演算を実行するように構成される、請求項1から19までのいずれかに記載のデータ処理装置。
  21. 前記推論制御回路が、前記推論的演算モードを終結するコミット命令の実行に応答する、請求項20に記載のデータ処理装置。
  22. 前記推論制御回路が、それぞれのベクトル・オペランドの少なくとも1つのベクトル要素が前記推論的ベクトル演算を受けるべきであることを示す前記推論幅表示を変更するために前記推論削減条件に応答する、請求項1から21までのいずれかに記載のデータ処理装置。
  23. 前記推論削減基準が、前記推論制御回路によって維持される性能許容情報を含み、
    前記推論制御回路が、推論的ベクトル演算の前記シーケンスの実行中に生成される前記進行表示を考慮した前記性能許容情報を調整するように構成され、
    前記推論制御回路が、前記性能許容情報がトリガ・ポイントに達した場合に前記推論削減条件を検出するように構成される、請求項1から22までのいずれかに記載のデータ処理装置。
  24. 前記推論制御回路が、前記推論幅表示が削減されるべき量を決定するとき前記性能許容情報を参照する、請求項23に記載のデータ処理装置。
  25. 前記推論削減条件の検出時に前記推論幅表示が削減されるべき量があらかじめ定められている、請求項1から24までのいずれかに記載のデータ処理装置。
  26. データ処理装置における推論的ベクトル演算の実行を制御する方法であって、
    ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するステップであって、それぞれのベクトル・オペランドが、複数のベクトル要素を含む、実行するステップと、
    前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するステップあって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、維持するステップと、
    推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するステップと、
    前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するステップであって、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減が前記データ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件である、検出するステップと、
    前記推論削減条件の検出時に、前記推論幅表示を削減するステップとを含む、方法。
  27. 請求項1から25のいずれか一項に記載のデータ処理装置に対応するプログラム命令用に仮想マシン実行環境を実現するためにコンピュータを制御するためのコンピュータ・プログラムを非一時的に記憶するコンピュータ・プログラム製品
  28. ベクトル・オペランドに対して推論的ベクトル演算のシーケンスを実行するための処理手段であって、それぞれのベクトル・オペランドが複数のベクトル要素を含む、処理手段と、
    前記推論的ベクトル演算を受けるそれぞれのベクトル・オペランドのベクトル要素の個数を示す推論幅表示を維持するための推論制御手段であって、前記推論幅表示が、推論的ベクトル演算の前記シーケンスの実行に先立って初期値に初期化される、推論制御手段とを備え、
    前記処理手段が、推論的ベクトル演算の前記シーケンスの実行中に、前記推論的ベクトル演算の実行中に前記処理回路内で発生するマイクロアーキテクチャ上のイベントに応答して発される進行表示であって、それぞれのマイクロアーキテクチャ上のイベントが例外をトリガすることなく発生するイベントである、進行表示を生成するためものであり、
    前記推論制御手段が、前記進行表示及び推論削減基準を参照して、推論削減条件の存在を検出するためものであり、前記推論削減条件が、前記推論幅表示を削減せずに演算が継続するのに比べて、前記推論幅表示の前記削減が前記データ処理装置の少なくとも1つの性能特性を改善すると予想されることを示す条件であり、
    前記推論制御手段が、前記推論幅表示を削減することによって前記推論削減条件の検出に応答するためものである、データ処理装置。
JP2016519799A 2013-10-09 2014-08-14 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 Active JP6546584B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1317876.9A GB2519108A (en) 2013-10-09 2013-10-09 A data processing apparatus and method for controlling performance of speculative vector operations
GB1317876.9 2013-10-09
PCT/GB2014/052508 WO2015052485A1 (en) 2013-10-09 2014-08-14 A data processing apparatus and method for controlling performance of speculative vector operations

Publications (2)

Publication Number Publication Date
JP2016536665A JP2016536665A (ja) 2016-11-24
JP6546584B2 true JP6546584B2 (ja) 2019-07-17

Family

ID=49630436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016519799A Active JP6546584B2 (ja) 2013-10-09 2014-08-14 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法

Country Status (9)

Country Link
US (1) US10261789B2 (ja)
EP (1) EP3039532B1 (ja)
JP (1) JP6546584B2 (ja)
KR (1) KR102271992B1 (ja)
CN (1) CN105612494B (ja)
GB (1) GB2519108A (ja)
IL (1) IL244408B (ja)
TW (1) TWI649693B (ja)
WO (1) WO2015052485A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
CN111651206B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
CN107315568B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
US10108581B1 (en) * 2017-04-03 2018-10-23 Google Llc Vector reduction processor
US11372804B2 (en) * 2018-05-16 2022-06-28 Qualcomm Incorporated System and method of loading and replication of sub-vector values
GB2580426B (en) * 2019-01-11 2021-06-30 Advanced Risc Mach Ltd Controlling use of data determined by a resolve-pending speculative operation

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US6915395B1 (en) * 2000-05-03 2005-07-05 Sun Microsystems, Inc. Active address content addressable memory
WO2002084451A2 (en) 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
US20040123081A1 (en) * 2002-12-20 2004-06-24 Allan Knies Mechanism to increase performance of control speculation
US20040215941A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Method and system to handle register window fill and spill
US7149946B2 (en) 2003-06-13 2006-12-12 Microsoft Corporation Systems and methods for enhanced stored data verification utilizing pageable pool memory
US7149851B1 (en) 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
US7500087B2 (en) 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7961636B1 (en) * 2004-05-27 2011-06-14 Cisco Technology, Inc. Vectorized software packet forwarding
US20060259737A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
US7739456B1 (en) 2007-03-06 2010-06-15 Oracle America, Inc. Method and apparatus for supporting very large transactions
US8019977B2 (en) 2007-05-14 2011-09-13 Apple Inc. Generating predicate values during vector processing
US8060728B2 (en) 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US8019976B2 (en) 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8739141B2 (en) 2008-05-19 2014-05-27 Oracle America, Inc. Parallelizing non-countable loops with hardware transactional memory
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching
JP5279046B2 (ja) * 2008-10-14 2013-09-04 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
US8572341B2 (en) 2009-09-15 2013-10-29 International Business Machines Corporation Overflow handling of speculative store buffers
JP5491113B2 (ja) * 2009-09-18 2014-05-14 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、ベクトル処理方法、およびプログラム
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
US8887171B2 (en) 2009-12-28 2014-11-11 Intel Corporation Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
TWI636362B (zh) 2011-06-24 2018-09-21 林正浩 高性能快取方法和裝置
WO2013095608A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for vectorization with speculation support
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9501276B2 (en) 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops

Also Published As

Publication number Publication date
EP3039532B1 (en) 2020-11-11
GB2519108A (en) 2015-04-15
IL244408B (en) 2020-03-31
US10261789B2 (en) 2019-04-16
EP3039532A1 (en) 2016-07-06
IL244408A0 (en) 2016-04-21
TW201514850A (zh) 2015-04-16
CN105612494B (zh) 2019-07-12
KR102271992B1 (ko) 2021-07-05
US20150100755A1 (en) 2015-04-09
KR20160065145A (ko) 2016-06-08
WO2015052485A1 (en) 2015-04-16
GB201317876D0 (en) 2013-11-20
JP2016536665A (ja) 2016-11-24
CN105612494A (zh) 2016-05-25
TWI649693B (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
JP6546584B2 (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
JP3790039B2 (ja) 分岐予測調整方法
US7711935B2 (en) Universal branch identifier for invalidation of speculative instructions
US9176737B2 (en) Controlling the execution of adjacent instructions that are dependent upon a same data condition
JP6942298B2 (ja) ベクトル演算命令の例外条件処理
JP7397858B2 (ja) フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御
CN108780396A (zh) 程序循环控制
US20100095151A1 (en) Processor Apparatus for Executing Instructions with Local Slack Prediction of Instructions and Processing Method Therefor
CN108780397B (zh) 程序循环控制
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
KR20130112009A (ko) 벡터 분할 루프들의 성능 향상
TW201349111A (zh) 抑制零述詞分支錯誤預測之分支錯誤預測行為
CN108885549A (zh) 分支指令
US9311094B2 (en) Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US9122485B2 (en) Predicting a result of a dependency-checking instruction when processing vector instructions
US9098295B2 (en) Predicting a result for an actual instruction when processing vector instructions
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
JP7510253B2 (ja) 分岐予測器
JP2002014868A (ja) メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
JP2021515929A (ja) データ処理
KR20220113410A (ko) 페치 그룹들의 시퀀스들에 대한 분기 예측 유닛에의 액세스 제어
TWI569207B (zh) 微處理器、微處理器的運作方法、及改善微處理器效能的方法
JP2023540036A (ja) 分岐予測リダイレクトのための代替パス

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190621

R150 Certificate of patent or registration of utility model

Ref document number: 6546584

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250