JP2012529096A - ベクトル命令を取り扱うためのデータ処理装置および方法 - Google Patents

ベクトル命令を取り扱うためのデータ処理装置および方法 Download PDF

Info

Publication number
JP2012529096A
JP2012529096A JP2012513670A JP2012513670A JP2012529096A JP 2012529096 A JP2012529096 A JP 2012529096A JP 2012513670 A JP2012513670 A JP 2012513670A JP 2012513670 A JP2012513670 A JP 2012513670A JP 2012529096 A JP2012529096 A JP 2012529096A
Authority
JP
Japan
Prior art keywords
skip
vector
instruction
lanes
indicator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012513670A
Other languages
English (en)
Other versions
JP5512803B2 (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 JP2012529096A publication Critical patent/JP2012529096A/ja
Application granted granted Critical
Publication of JP5512803B2 publication Critical patent/JP5512803B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

ベクトル命令を取り扱うために提供されるデータ処理装置および方法。前記データ処理装置は、データ要素を保存するように配置された複数のレジスタを備えるレジスタデータ保存部を有する。その後、ベクトル処理ユニットを用いて一連のベクトル命令を実行する。前記ベクトル処理ユニットは、複数の並列処理レーンを有し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存部にアクセスして、前記レジスタデータ保存部からのデータ要素の読み出しおよび前記レジスタデータ保存部へのデータ要素の書き込みを行う。スキップインジケーション保存部は、前記並列処理レーンそれぞれに対するスキップインジケータを保持する。前記ベクトル処理ユニットは、ベクトルスキップ命令に応答して、前記スキップインジケーション保存部内において、決定された1つ以上のレーンに対して前記スキップインジケータを設定する更新作業を行う。前記ベクトル処理ユニットは、ベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外する。これにより、ベクトル命令によって指定された作業を(当該作業を指定しているベクトル命令を何ら変更する必要無く)前記並列処理レーンそれぞれにおいて条件付きで実行することが可能になる。

Description

本発明は、ベクトル命令を取り扱うためのデータ処理装置および方法に関する。
ベクトル処理は、データ処理システムにおいてますます普及度を増している処理技術である。このようなベクトル処理作業を行うためにベクトル処理ユニットが開発されており、複数のデータ要素に対する同時作業が可能となっている。ベクトル処理ユニットの利用により、複数のレーンの並列処理が可能となり、これにより、これらの並列処理対象レーンにデータ要素が入力されると、これらの並列処理対象レーン内においてデータ処理作業を並列実行することができる。そのため、(典型的には、各反復時において異なる入力データ要素を用いた)データ処理作業の実行を逐次的に複数回行うことが必要となるスカラー処理技術と比較して、遂行面における有意な恩恵が実現される。
US2007/0250681において、このようなベクトル処理ユニットについての記載がある。同文献中に記載のシステムにおいて、ベクトル処理ユニットは、ホストプロセッサによって要求されるベクトル処理作業を行うコプロセッサの形態をとる。ベクトル処理ユニットをコプロセッサとして提供する別のアプローチとして、標準プロセッサの基本アーキテクチャを拡大適用することが可能である。このような拡大適用は、標準プロセッサのコア処理要素部分を複製し、これらのユニットにおける複数のデータ要素の同時処理を可能とする特殊命令を付加することにより、行われる。
ベクトル処理の利用による恩恵を受けることが可能な、多くの種類のデータ処理作業がある。例えば、コンピュータグラフィックスハードウェアおよびビデオゲームコンソールの場合、高遂行グラフィックス処理機能を提供するために、アーキテクチャ面においてベクトルプロセッサに大きく依存している。
ベクトル処理ユニットによる処理対象となるデータ要素は典型的には、データ要素のベクトルとして配列され、各ベクトルは複数のデータ要素を含む。ベクトル中の各データ要素は、異なるレーンの並列処理のための入力データ要素を形成する。
上述したベクトル処理アプローチの場合、入力ベクトル中の全データ要素に対して特定のデータ処理作業を行う必要がある場合には、遂行面における極めて有意な恩恵が享受可能であるが、並列処理の多様なレーン内との条件下において特定の作業の遂行を得ることが望ましい状況があり得る。このようなアプローチによれば、入力データ要素のベクトルはそのままベクトル処理ユニットに提供されるものの、特定のベクトル命令によって指定された作業は必ずしも全ての並列処理レーン内において行う必要が無い場合がある。
しかし、入力データ要素に対して実行されるべきベクトル作業を定義するベクトル命令内においてこのような条件付けを符号化するのは複雑な作業であるため、当該命令のサイズの有意な増加につながる。そのため、このような条件付けが必要な場合、ベクトル処理ユニットを利用する代わりに一連のスカラー作業をスカラー処理ユニット内において行うことで、作業遂行が必要とされるデータ要素のサブセットに対して前記必要な作業が行われる場合が往々にしてある。
しかし、このような場合、遂行に有意な影響が出るため、各並列処理レーン内において条件付き実行が必要な場合においても、ベクトル処理ユニットの利用によって得られる遂行恩恵を実現することが望ましい。
第1の局面から見て、本発明は、データ処理装置を提供する。前記データ処理装置は、データ要素を保存するように配置された複数のレジスタを有するレジスタデータ保存部と、一連のベクトル命令を実行するベクトル処理ユニットであって、前記ベクトル処理ユニットは、複数の並列処理レーンを有し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存部にアクセスして、前記レジスタデータ保存部からのデータ要素の読み出しおよび前記レジスタデータ保存部へのデータ要素の書き込みを行う、ベクトル処理ユニットと、前記並列処理レーンそれぞれについてスキップインジケータを維持するためのスキップインジケーション保存部とを含む。前記ベクトル処理ユニットは、前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記スキップインジケーション保存部内において、前記複数のレーンのうち決定された1つ以上のレーンに対して前記スキップインジケータを設定する更新作業を行う。前記ベクトル処理ユニットは、前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外する。
本発明によれば、前記並列処理レーンそれぞれに対して、スキップインジケータが維持される。その後、ベクトルスキップ命令が用いられる。前記ベクトルスキップ命令が前記ベクトル処理ユニットによって実行されると、更新作業が行われ、その結果、決定された1つ以上の並列処理レーンに対するスキップインジケータが設定される。
ベクトル作業命令の実行時、前記ベクトル処理ユニットは、前記並列処理レーンそれぞれに対する前記スキップインジケータを参照し、関連付けられたスキップインジケータが設定されている任意のレーンを前記ベクトル作業命令によって指定された前記作業の遂行から除外するように、構成される。
そのため、前記並列処理レーンそれぞれに対するこのようなスキップインジケータの利用と、前記ベクトルスキップ命令を用いたスキップインジケータの設定とにより、ベクトル作業命令そのものを変更する必要無く、各並列処理レーン内においてベクトル作業命令の条件付き実行を行うことが可能になる。その結果、前記ベクトル処理ユニットの利用増加を達成することが可能となる。なぜならば、上記構成が無い場合には逐次的に行わなければならなかった作業を、1つ以上の並列処理レーンを当該作業の遂行から選択的に除外する能力を有する前記ベクトル処理ユニットを用いて並列処理することが可能となるからである。
一実施形態において、前記ベクトルスキップ命令が実行されると、当該レーンに対するスキップインジケータが既に設定されているか否かに関係無く、全レーンに対して前記更新作業が行われ得る。一実施形態において、前記ベクトルスキップ命令の実行時において、前記ベクトル処理ユニットは、当該ベクトルスキップ命令の実行時において既に設定されている任意のスキップインジケータを前記更新作業から除外する。よって、本実施形態において、当該ベクトルスキップ命令の実行時において既に設定されている任意のスキップインジケータが前記更新作業から除外され、これにより、前記ベクトルスキップ命令そのものの適用を、条件付きにすることができる。
前記スキップインジケータは、多様な形態をとり得る。しかし、一実施形態において、各スキップインジケータは、スキップカウント値を含む。前記スキップカウント値が非ゼロ値を有する場合、前記スキップカウント値は設定されているとみなされる。前記スキップカウント値がゼロ値を有する場合、前記スキップカウント値は設定されていないとみなされる。このような実施形態において、前記ベクトル処理ユニットは、前記ベクトルスキップ命令に応答して、前記決定された1つ以上のレーンに対する前記スキップカウント値を所定の非ゼロ値に設定し、前記一連内の各ベクトル命令について、前記ベクトル命令の実行時において前記スキップカウント値が設定された場合、前記ベクトル処理ユニットは、前記ベクトル命令によって指定された作業を行う代わりに前記スキップカウント値をデクリメントするように、構成される。その結果、前記スキップカウント値が初期に設定されている所定の非ゼロ値に応じて、後続するスキップすべきベクトル命令の数を変更することができる。さらに、未だ設定されていないスキップインジケータについてベクトルスキップ命令そのもののみを実行する実施形態において、個々のスキップカウント値は時間と共に多様な値をとり得るため、個々のスキップカウント値が上記したデクリメントプロセスによって消去される時点は異なることが理解される。その結果、前記ベクトルスキップ命令のネスティングが可能になり、これにより、ベクトル作業命令そのものに対していかなる変更を行うことなく、複雑な一連の条件付き作業を前記ベクトル処理ユニット内において実行することが可能になる。その代わりに、任意の特定のベクトル作業の対象とすべき並列処理レーンを、関連付けられたベクトル作業命令の実行時における多様なスキップカウント値の状態によって決定する。
一実施形態において、前記スキップカウント値はシングルビット値であり得、これにより、単一の後続するベクトル命令のみをスキップすることが可能になるが、別の実施形態において、マルチビットスキップカウント値も用いられ得る。マルチビットスキップカウント値を用いることにより、スキップ機能の複雑なネスティングが達成可能となる。
ベクトルスキップ命令によってスキップカウント値が設定される所定の非ゼロ値は、固定され得る。しかし、一実施形態において、前記所定の非ゼロ値は、ベクトルスキップ命令のオペランドとして指定される。
先述したように、各実行されるベクトル命令について、当該命令の実行時にスキップカウント値が設定された場合、当該ベクトル命令によって指定された作業を実行する代わりに、前記スキップカウント値をデクリメントする。一実施形態において、上記をベクトル作業命令のみだけではなく前記ベクトルスキップ命令そのものに対しても適用する。
一実施形態において、前記ベクトルスキップ命令の実行時において、更新作業は、前記スキップ命令の実行時において、設定されていないスキップインジケータ(すなわち、ゼロ値であるもの)のみについて実行される。1つのこのような実施形態において、前記ベクトルスキップ命令が実行されると、関連スキップインジケータが設定されるだけであり、「設定されたばかりの」スキップインジケータについて、前記ベクトルスキップ命令の実行によって行われるアクションは他に何も無い。しかし、別の実施形態において、前記ベクトルスキップ命令は、設定されたスキップカウント値が前記実行されているベクトルスキップ命令よりも前に設定されたものであるかまたは前記ベクトルスキップ命令の実行に起因して設定されたばかりであるかに関係無く、前記設定されたスキップカウント値全てをデクリメントするように構成され得る。このような実施形態において、前記ベクトルスキップ命令に続く少なくとも1つの命令が確実にスキップされるように、前記所定の非ゼロ値は典型的には少なくとも2であることが理解される。
前記ベクトルスキップ命令を介して設定されるスキップカウント値として前記スキップインジケータを構成し、各後続するベクトル命令の実行時において前記スキップカウント値がゼロに戻るまで前記スキップカウント値をデクリメントする方法の別の方法として、一実施形態において、前記設定されたスキップインジケータを消去せよとのベクトルスキップ終了命令を前記ベクトル処理ユニットが実行するまで、各スキップインジケータは設定状態で保持される。特定のサイズのスキップインジケーション保存部が有れば、前記スキップインジケーション保存部内のスキップカウント値を介して指定する代わりに、このようなアプローチを用いて、特定されたレーン内のより長い一連の命令をスキップすることが可能になる。
前記設定されたスキップインジケータを消去せよとのスキップ終了命令を前記ベクトル処理ユニットが実行するまで前記スキップインジケータが設定状態で保持される実施形態において、前記設定されたスキップインジケータは、シングルビット値として具現化可能である。前記スキップインジケータの設定後、実行時において各後続するベクトル命令に遭遇した場合、前記スキップインジケータが設定されているレーン内においてはアクションはとられず、よって、これらの後続するベクトル命令によって指定された作業は前記レーン内では実行されない。スキップ終了命令に遭遇した場合、前記スキップインジケータは消去され、これにより、後続する命令が前記レーン内において実行されることとなる。さらなる実施形態において、前記スキップインジケータにマルチビット値を付与することができ、スキップ終了命令が出た場合にのみ、前記マルチビット値がデクリメントされる。その結果、スキップ終了命令の特定のインスタンスに起因して特定のレーンに対するスキップインジケータを消去することができる(前記スキップ値がゼロにデクリメントされるため)ようなネスティングが可能となり、他のものについては、前記デクリメントステップにおいて前記スキップインジケータが設定された状態のままとする(前記デクリメントにおいて、前記カウント値が非ゼロのままであるため)。
一実施形態において、各後続して実行されるベクトル命令の発生時にデクリメントされるスキップカウント値の形態のスキップインジケータと、スキップ終了命令実行時まで設定状態のままであるスキップインジケータとの双方を組み合わせて用いることができる。本明細書中、以下、区別が必要な場合、後者の種類のスキップ終了命令実行時まで設定状態のままであるスキップインジケータを「長スキップ」インジケータと呼び、前者の種類のスキップインジケータを「短スキップ」インジケータと呼ぶ。詳細には、一実施形態において、短スキップカウント値に加えて、前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対する長スキップインジケータをさらに維持する。その後、さらなるベクトルスキップ命令が提供され、前記さらなるベクトルスキップ命令が前記ベクトル処理ユニットによって実行されると、前記決定された1つ以上のレーンそれぞれに対する長スキップインジケータが前記レーンに対するスキップカウント値の代わりに設定され、前記長スキップインジケータは、各ベクトル命令の実行時において設定状態のまま保持される。
上述したように、前記長スキップインジケータはシングルビット値であり得、この場合、前記ベクトル処理ユニットは、スキップ終了命令に応答して、各設定された長スキップインジケータを消去する。あるいは、各長スキップインジケータは、長スキップカウント値を含む。前記長スキップカウント値が非ゼロ値を有する場合、前記長スキップカウント値は設定されているとみなされる。前記長スキップカウント値がゼロ値を有する場合、前記長スキップカウント値は設定されていないとみなされる。前記さらなるベクトルスキップ命令に応答して、前記ベクトル処理ユニットは、前記決定された1つ以上のレーンそれぞれに対する長スキップカウント値をインクリメントさせ、前記ベクトル処理ユニットは、ベクトルスキップ終了命令に応答して、各設定された長スキップカウント値をデクリメントする。
よって、このような実施形態において、前記短スキップカウント値が設定された後、各ベクトル命令の発生時においてデクリメントされるのに対し、前記長スキップカウント値はスキップ終了命令のみによってデクリメントされ、他の種類のベクトル命令が発生しても、長スキップカウント値のデクリメントは行われない。
前記スキップインジケーション保存部は、多様な様態によって構成可能である。一実施形態において、前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対する短スキップインジケータを保存する第1のレジスタと、前記並列処理レーンそれぞれに対する長スキップインジケータを保存する第2のレジスタとを含み得る。
しかし、別の実施形態において、前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対するスキップインジケータを保存する単一のレジスタを含み得、その場合、前記スキップインジケータは、各レーンについて当該スキップインジケータが短スキップインジケータであるのかまたは長スキップインジケータであるかについて特定するように、符号化される。詳細には、一実施形態において、各スキップインジケータは、前記ベクトル処理ユニットにより、設定された短スキップカウント値を特定する第1の複数の非ゼロ値のうち任意の値に設定可能であり、設定された長スキップインジケータを特定するように、前記第1の複数の非ゼロ値に含まれない少なくとも1つの所定の非ゼロ値に設定可能である。特定の例として、前記スキップインジケーション保存部が各スキップインジケータに対して4つのビット値を提供する状況を考える。この状況において、少なくとも値「1111」は、設定された長スキップインジケータを特定するために保存しておくことができる。1つの特定の実施形態において、値1111および値1110双方を設定された長スキップインジケータを指定するために保存しておき、これにより、1〜13の短スキップカウント値を指定することができる。よって、このような実施形態において、13個の後続するベクトル命令よりも長いスキップが必要な場合、短スキップインジケータではなく、長スキップインジケータを使用することが必要になる。
一実施形態において、前記ベクトルスキップ命令は、スキップインジケータオペランドとして、決定された1つ以上のレーンについて短スキップインジケータが設定されるべき所定の非ゼロ値を指定する。長スキップインジケータの設定に用いられるさらなるベクトルスキップ命令は、前記ベクトルスキップ命令とは全く別の命令であり得るが、一実施形態においては、前記ベクトルスキップ命令およびさらなるベクトルスキップ命令双方が同一形態をとる。しかし、前記さらなるベクトルスキップ命令がスキップインジケータオペランドとしてヌル値を指定することで、前記さらなるベクトルスキップ命令と、前記ベクトルスキップ命令とを区別することが可能になる。
ベクトルスキップ命令実行時においてスキップインジケータを設定すべきレーンを前記ベクトル処理ユニットが決定することができる方法は、多数存在する。一実施形態において、前記ベクトルスキップ命令は、スキップインジケータを設定すべき前記決定された1つ以上のレーンを直接指定する。よって、一例として、特定の形態のベクトルスキップ命令により、全ての奇数レーンのスキップインジケータを設定すべきと指定することができ、別の形態のベクトルスキップ命令により、全ての偶数レーンのスキップインジケータを設定すべきと指定することができ、あるいは、より一般的には、ベクトルスキップ命令により、スキップインジケータを設定すべきレーンを特定する特定形態のビットマスクを特定することができる。
しかし、別の実施形態において、前記ベクトルスキップ命令は、スキップインジケータを設定すべきレーンを直接特定する代わりに、前記ベクトルスキップ命令に応答して、前記ベクトル処理ユニットが、1つ以上の所定の条件が満たされているかを各レーンについて評価し、前記評価に基づいて、スキップインジケータを設定すべきと決定された1つ以上のレーンを特定する。
一実施形態において、スキップインジケータを設定すべきレーンは、前記1つ以上の所定の条件が満たされたレーンである。しかし、別の実施形態において、スキップインジケータを設定すべきレーンを、1つ以上の所定の条件が満たされないレーンとして選択することも可能であることが理解される。
前記ベクトルスキップ命令実行時において、前記1つ以上の所定の条件が満たされているかについて前記ベクトル処理ユニットに評価させる方法は多数存在する。一実施形態において、前記ベクトル処理ユニットは、前記ベクトルスキップ命令の実行時において、前記所定の条件が満たされているかを確認するための必要な試験を行い得る。しかし、別の実施形態において、前記データ処理装置は、条件コード保存部をさらに含む。前記条件コード保存部は、前記並列処理レーンそれぞれについて、少なくとも1つの条件コードを保存する。前記ベクトル処理ユニットは、前記少なくとも1つの条件コードが設定されているかを確認することにより、前記1つ以上の所定の条件が満たされているかを各レーンについて評価するように、構成される。条件コードは、データ処理システム内において一般的に用いられており、多様な命令(例えば、比較命令)を用いて、プログラム実行時における特定の条件が評価されており、その結果に応じて条件コードが設定される。条件コードのいくつかの例として、equal(EQ)、not equal(NE)、greater than(GT)、less than(LT)コードなどがある。複数の並列処理レーンを用いたベクトル処理ユニットの場合、これらの条件コードを前記並列処理レーンそれぞれについて指定することができる。このような実施形態において、前記ベクトルスキップ命令は、関連レーンについてのスキップインジケータの設定をトリガするために設定することが必要な1つ以上の条件コードを指定し得る。一例として、前記ベクトルスキップ命令は、「greater than」条件コードが設定されているレーンに対してスキップインジケータを設定すべきと指定し得る。
スキップインジケータが設定されているレーンについて、ベクトル命令によって指定されている作業の遂行から当該レーンを除外することを可能にする方法が多数存在する。一実施形態において、前記作業を実行するために前記レーン内において行われる実際の計算は、発端時に回避することができる。しかし、別の実施形態においては、これらの計算は前記レーン内において実際に行われるが、その結果得られた値はその後捨象され、これにより、当該システムの残り部分が関与する限り、当該作業の遂行から当該レーンが実質的に除外される。制御的観点から見ると、当該レーン内における計算の発生を実際に回避するよりも、スキップインジケータ値に基づいて結果を選択的に捨象するアプローチを実行する方がより簡単である。
ベクトル処理ユニットがアクセスできるようデータ要素を保存するレジスタデータ保存部は、多様な様態をとり得る。しかし、一実施形態において、前記レジスタデータ保存部は、複数のベクトルレジスタを含むベクトルレジスタバンクを含む。各ベクトルレジスタは、前記ベクトル処理ユニット内の異なる並列処理レーンへ提供されるべき複数のデータ要素を保存する。一実施形態において、単一のベクトルレジスタが、前記ベクトル処理ユニット内の各並列処理レーンに提供されるべき1つのデータ要素に対する十分なデータ要素を保存し得る。
一実施形態において、前記ベクトル処理ユニットおよび関連付けられたレジスタデータ保存部は、別個の専用ベクトルプロセッサとして形成され得る。このようなプロセッサを例えばより大型のシステム内のコプロセッサとして用いることで、ホストプロセッサの代わりにベクトル処理作業を行うことが可能になる。別の実施形態において、前記ベクトル処理ユニットは、プロセッサ内のベクトル処理分岐部を形成し得、1つ以上の異なる分岐部内のスカラー作業も支援する。よって、このような実施形態において、前記データ処理装置は、スカラー処理ユニットと、前記スカラー処理ユニットと関連付けられたスカラーレジスタバンクとをさらに含み得る。一実施形態において、前記スカラー処理ユニットおよびベクトル処理ユニットは、別個の命令フェッチおよび命令復号化ユニットを有し得るが、別の実施形態において、前記命令フェッチおよび命令復号化ユニットは、前記スカラー処理ユニットおよび前記ベクトル処理ユニット間において共有される。
一実施形態において、前記ベクトル処理ユニットはパイプライン型処理ユニットであり、複数のベクトル命令を任意のタイミングで同時に処理することができる。
並列処理レーンそれぞれに対するスキップインジケータを維持するスキップインジケーション保存部は、多様な様態で実行可能である。例えば、スキップインジケーション保存部は、レジスタデータ保存部内のレジスタのうちの1つにより、提供され得る。しかし、別の実施形態において、スキップインジケーション保存部は、ベクトル処理ユニット内における内部保存部によって形成され、1つの特定の実施形態において、前記スキップインジケーション保存部は、パイプライン型ベクトル処理ユニットの実行段と関連付けられた内部状態レジスタにより、提供される。
第2の局面から見れば、本発明は、データ処理装置内のベクトル命令を取り扱う方法を提供する。前記データ処理装置は、データ要素を保存するように配置された複数のレジスタを有するレジスタデータ保存部と、一連のベクトル命令を実行するベクトル処理ユニットであって、前記ベクトル処理ユニットは、複数の並列処理レーンを有し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存部にアクセスして、前記レジスタデータ保存部からのデータ要素の読み出しおよび前記レジスタデータ保存部へのデータ要素の書き込みを行う、ベクトル処理ユニットとを含む。前記方法は、前記並列処理レーンそれぞれに対するスキップインジケータをスキップインジケーション保存部内に保持するステップと前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記複数のレーンのうち決定された1つ以上のレーンに対する前記スキップインジケータを前記スキップインジケーション保存部内に設定する更新作業を行うステップと、前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外するステップとを含む。
第3の局面から見て、本発明は、コンピュータプログラム製品を提供する。前記コンピュータプログラム製品は、コンピュータによって読み出し可能な命令を含む。前記コンピュータによって読み出し可能な命令がコンピュータ上において実行されると、前記コンピュータは、本発明の第2の局面による、ベクトル命令を取り扱う方法を行う。
第4の局面から見て、本発明は、データ処理装置を提供する。前記データ処理装置は、データ要素を保存する複数のレジスタ手段を有するレジスタデータ保存手段と、一連のベクトル命令を実行するベクトル処理手段であって、前記ベクトル処理手段は、複数の並列処理レーンを提供し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存手段にアクセスして、前記レジスタデータ保存手段からのデータ要素の読み出しおよび前記レジスタデータ保存手段へのデータ要素の書き込みを行う、ベクトル処理手段と、前記並列処理レーンそれぞれに対するスキップインジケータを保持するスキップインジケーション保存手段とを含む。前記ベクトル処理手段は、前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記複数のレーンのうち決定された1つ以上のレーンに対する前記スキップインジケータを前記スキップインジケーション保存手段内において設定する更新作業を行う。前記ベクトル処理手段は、前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外する。
本発明について、添付図面中に示すような実施形態を参照しつつ、ひとえに例示目的のためにさらに説明する。
実施形態によるプロセッサの少なくとも一部を示す模式図である。 実施形態によるプロセッサの模式図である。 実施形態によるベクトルレジスタバンクの模式図である。 実施形態による方法を示すフローチャートである。 一実施形態による図2のベクトル実行経路の実行段内に設けられた要素をより詳細に示す。 一実施形態によるベクトル命令の実行を模式的に示すフロー図である。 一実施形態による、ベクトル命令実行時において各レーン内において行われる処理をより詳細に示すフロー図である。 異なる実施形態に従って用いられる、異なるフォーマットのスキップカウンターレジスタの模式図である。 異なる実施形態に従って用いられる、異なるフォーマットのスキップカウンターレジスタの模式図である。 異なる実施形態に従って用いられる、異なるフォーマットのスキップカウンターレジスタの模式図である。 一実施形態による、図8Cのスキップカウンターレジスタを用いた場合に利用することが可能な複合符号化を示す表である。 一実施形態による、スキップカウンターの使用の模式図である。
図1は、実施形態によるプロセッサ100の少なくとも一部の模式図である。プロセッサ100は、専用ベクトル処理ユニット(ベクトル実行ユニットとも呼ばれる)102を含む。専用ベクトル処理ユニット102に対し、復号化されたベクトル命令からの制御信号が供給される。プロセッサ100は好適にはパイプライン型プロセッサであり、専用ベクトル実行ユニット102は、演算論理作業104、データメモリアクセス106、およびレジスタライトバック108のための段を含み得る。専用ベクトル実行ユニット102と関連付けられた状態で、ベクトルレジスタバンク110が設けられる。ベクトルレジスタバンク110は、第1の数であるk個のベクトルレジスタを含む。前記第1の数k個のベクトルレジスタはそれぞれ、第2の数であるl個のデータ要素を含む。各データ要素は、例えば図3に示すように、第3の数であるmビットを有する。前記ベクトル処理ユニットは、複数の並列処理レーンを含む。一実施形態において、1つ以上の入力ベクトルレジスタを指定するベクトル命令が実行されると、各レーンは、各指定された入力ベクトルレジスタからデータ要素のうちの1つを受信する。よって、本実施形態において、図3中に模式的に示すように、前記ベクトルレジスタそれぞれを、l個の並列処理レーンに対する前記データ要素を保存するものとしてみなすことができる。
復号化されたベクトル命令からの制御信号を受信すると、専用ベクトル実行ユニット102は、レジスタバンク110から必要な値を読み出し、前記復号化されたベクトル命令が前記パイプラインを通じて実行されると、前記ライトバック段は、任意の新規レジスタ値を書き込み対象として前記レジスタバンクに供給する。いくつかの実施形態において、転送経路も設けることにより、1つの作業からの結果値を(レジスタバンク110から再度読み出す必要無く)入力として後続作業に直接フィードバックすることが可能になる。
後でより詳細に説明するように、スキップ命令の受信および実行時において、専用ベクトル実行ユニット102は、並列処理レーンそれぞれと関連付けられたスキップインジケータ(例えば、スキップカウンター)を制御する。前記スキップインジケータの値は、前記スキップ命令に続く1つ以上の後続するベクトル命令によって指定された作業を対応する並列処理レーン内において行うべきか否かを示す。
上記したように、前記スキップインジケータは、一実施形態において、スキップカウンターを含む。前記スキップカウンターには、前記スキップ命令実行時において、値が割り当てられる。詳細には、スキップカウンターは、前記関連付けられたレーン内において1つ以上の後続ベクトル命令をスキップすべきと指定する場合には非ゼロ値に設定され、ゼロ値である場合には設定されていないとみなされ、これにより、前記関連付けられたレーン内においてスキップを行うべきではないことを示す。よって、このような実施形態において、前記スキップカウンターがゼロである場合にのみ、当該レーン上において後続ベクトル命令の作業が行われる。一実施形態において、非ゼロ値のスキップカウンターを用いて、関連付けられた作業を当該レーン上において行うべきではない後続命令の数を示し、前記スキップ命令後に各ベクトル命令が実行されると、設定されたスキップカウンターを有する各レーンについて、前記ベクトル実行ユニットは、当該レーン内において前記作業を行うのではなく、関連スキップカウンターをデクリメントする。前記指示された命令数を超えた場合、前記スキップカウンターはゼロ値に戻り、さらなる後続命令を前記レーン上に行うことが可能となる。
特定の非ゼロ値に設定されたスキップカウンターを用い、各後続するベクトル命令の実行後にデクリメントする様態と別の様態として、前記スキップインジケータをスキップ命令によって設定し、スキップ終了命令が実行されるまで設定状態のまま保持する様態もある。一実施形態において、前記スキップ終了命令の実行により、任意の設定されたスキップインジケータが消去され、これにより、関連付けられたレーン内において任意の後続命令の作業が行われる。あるいは、スキップカウンターをインクリメントするようにスキップ命令を構成し、スキップカウンターをデクリメントするようにスキップ終了命令を構成することも可能であり、これにより、スキップ命令および関連付けられたスキップ終了命令の複合ネスティングが可能となる。
スキップカウンターは、多様な様態において実行可能である。例えば、消去(非スキップ)値としてゼロを用いる以外にも、他の表現が可能である。一実施形態において、前記スキップカウンターは、各レーンについて4ビットフィールドであるが、他のビット数も各スキップカウンターに割り当て可能である。
後でより詳細に説明するように、一実施形態において、双方のスキップインジケータが、各後続するベクトル命令の実行によってデクリメントされるスキップカウンター(本明細書中、短スキップインジケータと呼ぶ)と、スキップ終了命令実行時まで設定された状態のまま保持されるスキップインジケータ(本明細書中、長スキップインジケータと呼ぶ)との形態をとり得る。
ベクトル処理ユニット102の実行段104は、多様な演算論理作業(例えば、AND、OR、XOR、およびNOT)、シフト作業(例えば、LSR、LSL、ASR、およびROT、加算、減算、および乗算作業)、ならびに最小作業および最大作業(すなわち、各レーン内における最小値および最大値の発見)を行うように、構成可能である。各レーン上において独立して行われるこれらの作業に加えて、レーン間作業(すなわち、レーン間のデータをスワップまたはコピーする作業)が可能である。このようにして、前記レーンのうち任意のものの上でのこれらの作業のうち任意のものを除外することが、スキップ命令の利用により選択的に可能となる。
図2は、一実施形態によるプロセッサ200の模式図である。プロセッサ200は、全般的実行ユニット202(本明細書中全般的実行経路とも呼ぶ)と、全般的実行ユニット202と関連付けられた全般的レジスタバンク204とを有する。プロセッサ200は、図1を参照して示した配置構成と同様に、ベクトル実行ユニット206(本明細書中、ベクトル実行経路とも呼ぶ)と、関連付けられたベクトルレジスタバンク208とをさらに有する。前記プロセッサは、命令フェッチおよび命令復号化ユニットも含む。前記命令フェッチおよび命令復号化ユニットは、全般的実行ユニット202および前記ベクトル実行ユニット206に共通する。一実施形態において、前記命令フェッチおよび命令復号化ユニットは、命令フェッチ段210を含む。命令フェッチ段210は、(例えば、プログラムカウンター値をプログラムメモリ(例えば、命令キャッシュ)に送って次の命令を読み出すことにより)命令をフェッチするように、構成される。前記命令フェッチおよび命令復号化ユニットは、一実施形態において、命令復号段212をさらに含む。命令復号段212は、命令ビットから制御信号を実行のために生成するように、構成される。命令復号段212はまた、ベクトル命令と全般的命令とを区別するようにも構成され、全般的命令の場合には制御信号は全般的実行ユニット202に提供され、ベクトル命令の場合には制御信号はベクトル実行ユニット206に提供される。これらの制御信号は、「復号化された命令」としてみなすことができる。ベクトルスキップ命令の場合、適切な制御信号がベクトル実行ユニット206に提供され、ここで、図1を参照して概要を上述したようにスキップ命令が実行される。
図3は、実施形態によるベクトルレジスタバンク300の模式図である。ベクトルレジスタバンク300は、第1の数であるk個のベクトルレジスタを含む。各ベクトルレジスタは、第2の数であるl個のデータ要素(各データ要素は、l個の並列処理レーンそれぞれに対応する)を含む。ここで、各データ要素は、第3の数であるm個のビットを含む(すなわち、各レジスタは、l×mビットを含む)。一実施形態によれば、128ビットの16個のベクトルレジスタが、それぞれ16ビットの8個のデータ要素に分割される(すなわち、k=16、l=8、m=16)。k、lおよびmを他の値にすることももちろん可能である。
図4は、実施形態による方法を示すフローチャートである。ベクトルスキップ命令(すなわち、命令フェッチ)が受信されると、前記命令はベクトル命令として特定され、ベクトルスキップ命令復号化ステップ400において復号化され、上述したように、実行のための制御信号が、スキップ命令実行ステップ402における実行対象としてその後ベクトル実行ユニット206に提供される。
ベクトルスキップ命令実行時にスキップインジケータが設定されるべきレーンをベクトル実行ユニット206が決定する方法は多数存在する。一実施形態において、前記ベクトルスキップ命令は、スキップインジケータを設定すべき1つ以上のレーンを直接指定する。よって、一例として、特定の形態のベクトルスキップ命令により、全奇数レーンのスキップインジケータを設定すべきと指定することができ、別の形態のベクトルスキップ命令により、全偶数レーンのスキップインジケータを設定すべきと指定することができる。あるいは、より一般的には、前記ベクトルスキップ命令により、スキップインジケータを設定すべきレーンを指定する特定形態のビットマスクを指定することもできる。
しかし、別の実施形態において、スキップインジケータを指定すべきレーンをベクトルスキップ命令により直接指定する代わりに、ベクトルスキップ命令に応答して、ベクトル実行ユニット206が、1つ以上の所定の条件が満たされたかを各レーンについて評価し、前記評価に応じて、スキップインジケータを設定すべき1つ以上のレーンを指定する。
その後、上記アプローチのうちいずれかを用いるかと関係無く、スキップインジケータを設定すべきと決定された各レーンについて、当該レーンに対するスキップインジケータをスキップインジケータ設定ステップ404において設定し、これにより、当該レーンについては、作業ディセーブルステップ406において当該レーンのスキップインジケータに基づいて1つ以上の後続ベクトル命令の作業がディセーブルされる。
図5は、一実施形態による、ベクトル実行経路206の実行段220内に設けられた特定の要素の模式図である。内部状態レジスタ500は、実行段220が必要な作業を実行する際に必要とするデータ要素を保存するために、用いられる。よって、1つ以上のベクトルレジスタをソースオペランドとして指定するベクトル作業命令に対して、これらのベクトルレジスタからの前記必要なデータ要素が内部状態レジスタ500内に保存され、これにより、ALU回路502が当該命令によって指定された演算論理作業を行う際にアクセスできるようにする。
さらに、内部状態レジスタ500は、スキップカウンターレジスタ506として用いられる1つ以上のレジスタを含む。これら1つ以上のレジスタは、並列処理レーンそれぞれに対するスキップカウント値を保持するために用いられる。ベクトルスキップ命令が実行されると、対応する制御信号が命令復号段212から実行段220へと送られ、ここで、スキップカウンター更新回路504は、スキップカウンターレジスタ(単数または複数)506内において前記スキップカウンターのうち1つ以上を設定する更新作業を上記した技術を用いて行う。典型的には、関連付けられたスキップカウンターが既に非ゼロである任意のレーンに対しては、前記更新作業を省略する。よって、前記更新作業による影響を受けるのは、スキップカウンター値が現在ゼロとなっているレーンに対してのスキップカウンター値だけである。これにより、ベクトルスキップ命令のネスティングが可能となり、ベクトル作業命令そのものを一切変更する必要無く、複雑な一連の条件付き作業を前記ベクトル処理ユニット内において行うことが可能となる。その代わりに、任意の特定のベクトル作業の対象となる並列処理レーンを、関連付けられたベクトル作業命令の実行時における多様なスキップカウント値の状態によって決定する。
各レーンに対してスキップインジケータが設けられた実施形態におけるベクトル作業命令の実行は、以下の疑似コードによって示すことができる。この疑似コードは、8個の並列処理レーン(レーン0〜7)があると仮定している。

VOP:
FOR I=0:7 DO IN PARALLEL
IF SKIP_COUNTER[I]==0 THEN
EXECUTE OP ON LANE I
ELSE
SKIP_COUNTER[I]=SKIP_COUNTER[I] − 1
END IF
END FOR
ここで、skip_counter[I]は、レーンIに対するスキップカウンターを指す。上記疑似コードから分かるように、前記作業は、スキップカウンターがゼロである任意のレーンに適用されるが、非ゼロスキップカウンターを有するレーンに対しては前記作業は行われず、その代わりに、スキップカウント値が1だけデクリメントされる。
ベクトルスキップ命令(すなわち、スキップカウンターを設定し得る命令)に遭遇した場合は必ず、通常の命令の場合と同様に、スキップカウンター消去(すなわち、ゼロ)を有するレーンのみが影響を受ける。このようなレーンそれぞれに対して、スキップ命令と関連付けられた条件が当該レーン上において試験され、この条件が満たされた場合、当該レーンに対するスキップカウンターを、スキップすべき命令の数に設定する。これは典型的には、スキップ命令のオペランドとして指定され、よって、引数「new_skip_value」として送られる。各後続する実行されるベクトル命令に対して、スキップカウンターが非ゼロであるレーンのスキップカウンター値が1だけ低減される。上記実施形態のベクトルスキップ命令は、以下の疑似コードによって表すことができる。

VSCC:
FOR I=0:7 DO IN PARALLEL
IF SKIP_COUNTER[I]==0 THEN
IF CC ON LANE I THEN
SKIP_COUNTER[I]=NEW_SKIP_VALUE
END IF
ELSE
SKIP_COUNTER[I]=SKIP_COUNTER[I]−1
END IF
END FOR
ここで、条件コードCCは、例えばeq=equal、ne=not equal、gt=greater than、ge=greater or equal than、lt=less than、le=less or equal thanのうちのいずれかであり得る。
多数の命令をスキップするが、スキップカウンターフィールドによって規定された特定の値(例えば、4ビットカウンターに対して15)までしかスキップカウンターがカウントすることができない構造を用いると好適である場合がある。しかし、一実施形態において、スキップ機能を終了させよとのベクトルスキップ終了命令に遭遇した場合にのみ終了する長スキップを符号化する可能性がある。これは、長スキップインジケータの保存のために全く別個のスキップカウンターレジスタを設けるか、または、レーン毎に特殊長スキップコードとして1つ以上の特定の値(例えば、14および15)の単一のスキップカウンターを保存した後、上述した疑似コード作業を変更することにより、達成することが可能である。詳細には、VOP(全般的ベクトル命令)、VSCC(ベクトルスキップ命令)およびVEND(ベクトルスキップ終了命令)に対する適切な疑似コード作業は、以下である。

VOP:
FOR I=0:7 DO IN PARALLEL
IF SKIP_COUNTER[I]==0 THEN
EXECUTE OP ON LANE I
ELSE IF (SKIP_COUNTER[I]<14)
SKIP_COUNTER[I]=SKIP_COUNTER[I]−1
END IF
END FOR


VSCC:
FOR I=0:7 DO IN PARALLEL
IF SKIP_COUNTER[I]==0 THEN
IF CC ON LANE I THEN
IF LONG_SKIP THEN
SKIP_COUNTER[I]= 15
ELSE
SKIP_COUNTER[I]=NEW_SKIP_VALUE
END IF
END IF
ELSE
IF LONG_SKIP OR SKIP_COUNTER[I]<14 THEN
SKIP_COUNTER[I]=SKIP_COUNTER[I]−1
END IF
END IF
END FOR


VEND:
FOR I=0:7 DO IN PARALLEL
IF SKIP_COUNTER[I]>=14 THEN
SKIP_COUNTER[I]=(SKIPCOUNTER[I]+1) MOD 16
ELSE IF SKIP_COUNTER[I]>0 THEN
SKIP_COUNTER[I]=SKIP_COUNTER[I]−1
END IF
END FOR
よって、上記例において、全般的ベクトル命令VOPに対する疑似コードは全般的に上述したようなものであるが、スキップカウント値が14未満である場合、スキップカウンターは、非ゼロスキップカウンターを有するレーンのみに対してデクリメントされることが分かる。よって、スキップカウント値が14または15である場合、関連付けられたレーン内において作業は実行されず、スキップカウンターのデクリメントも行われない。
ベクトルスキップ命令VSCCを検討した後、ゼロスキップカウント値を有する各レーンについて、当該レーンの条件コードが満たされた場合、スキップカウント値を更新する方法は2通りある。すなわち、ベクトルスキップ命令が(典型的には当該命令のスキップインジケータオペランドをヌル値に設定することにより)長スキップを符号化する場合、スキップカウンターを15に設定し、本実施形態における15という値は、1つの長スキップを符号化する。そうではない場合、スキップカウンターをスキップ値に設定する(このスキップ値は典型的には、ベクトルスキップ命令のスキップインジケータオペランドにより、指定される)。
VSCC命令のスキップカウンターデクリメント機能を考慮して、ベクトルスキップ命令実行時において(すなわち、スキップカウンターが短スキップを符号化したときに)任意の特定のレーンに対するスキップカウンターが14未満である場合、スキップカウンターをデクリメントする。さらに、任意の特定のレーンに対するスキップカウンターが14未満ではない場合であっても、ベクトルスキップ命令が長スキップを符号化した場合、前記スキップカウンターはやはりデクリメントされる。この後者のデクリメント作業により、2つの長スキップのネスティングが可能となり、第1の長スキップ命令によってスキップカウンターを15(1つの長スキップを意味する)に設定し、第2のネストされた長スキップ命令により、第1の長スキップ命令によって既に影響を受けているレーンに対してスキップカウンターを14(2つの長スキップを意味する)に低減する。よって、このデクリメント作業により、上記符号化に起因する長スキップ数の有効インクリメント数が実際に特定される。
ベクトルスキップ終了命令VENDについて、各レーンについて、スキップカウンターが14以上であるか(すなわち、当該レーンのスキップカウンターが長スキップを符号化するか)についてと、前記スキップカウンターが記載のように変更されているかとについて、試験を行う。その結果、長スキップカウントの有効デクリメントが得られ、本実施形態の符号化によれば、14という値が2つの長スキップを示し、15という値が1つの長スキップを示す。詳細には、現在のスキップカウント値が14である場合、前記値を15に増加し、現在のスキップカウント値が15である場合、前記インクリメントのmod16特性により、前記値をゼロにリセットする。スキップカウンターが14以上ではなくかつゼロよりも大きい場合、VEND命令が発生しても、他の任意のベクトル命令の場合と同様に、スキップカウンターが1だけデクリメントされるだけである。
図6は、本発明の実施形態に従ってベクトル命令を処理する様態を示すフロー図である。ステップ600において、ベクトル命令の受信を待機し、ベクトル命令の受信後(すなわち、ベクトル命令が命令フェッチ段210によってフェッチされた後)、このフェッチは、ステップ605において命令復号段212によって制御信号に復号化され、その後、これらの制御信号はベクトル実行経路206に送られる。ブロック610に示すように、その結果、特定の一連のステップが前記並列処理レーンそれぞれにおいて並列に行われる。この処理をステップ615、620および625によって示す。これら一連のステップが前記各レーンにおいて並列に行われた後、ボックス630に示すように、並列処理ステップが終了し、プロセスはステップ600に戻って、次のベクトル命令の実行を待機する。
一実施形態による、各レーンにおいてステップ615、620および625を実行するために行われる処理を図7中に模式的に示す。プロセスはステップ700から開始し、ステップ705において、当該レーンの短スキップカウント値(すなわち、短スキップインジケータ)がゼロであるかを決定する。前記スキップカウント値が非ゼロである場合、プロセスはステップ710へと分岐し、ステップ710において、当該レーンのスキップカウント値をデクリメントする。その後、プロセスはステップ760へと進み、ステップ760においてプロセスが終了し、これ以上のさらなる処理は不要となる。
ステップ705において、短スキップカウント値のみが非ゼロであるかについて評価される点は、留意に値する。いくつかの実施形態において、短スキップカウント値のみが利用されるが、いくつかの実施形態において、長スキップカウント値も利用される。その場合、さらなるステップ715、720および725が必要となる。詳細には、ステップ705における短スキップカウント値の分析の後、ステップ715において、当該レーンの長スキップカウント値がゼロであるかを決定する。先述したように、短スキップカウント値および長スキップカウント値は、別個のスキップレジスタ内に保存してもよいし、あるいは、一実施形態において、1つ以上のスキップカウント値を長スキップカウント値として保存することにより、単一のレジスタ内に符号化することも可能である。長スキップカウント値がゼロではない場合、ステップ720において、実行されている命令がベクトルスキップ終了命令であるかについて決定する。実行されている命令がベクトルスキップ終了命令である場合、当該レーンの長スキップカウント値をステップ725においてデクリメントし、その後、プロセスはステップ760において終了する。上記記載から、14というスキップカウント値が2個の長スキップを示す実施形態において、15というスキップカウント値は1個の長スキップを示し、0というスキップカウント値がゼロ個の長スキップを示し、ステップ725におけるデクリメントにより、スキップカウント値が(14から15へまたは15から0へ)実際にインクリメントされることが理解される。
前記命令がベクトルスキップ終了命令ではない場合、ステップ727において、前記命令が長ベクトルスキップ命令であるか(すなわち、長スキップを符号化するベクトルスキップ命令であるか)について決定する。前記命令が長ベクトルスキップ命令である場合、当該レーンの長スキップカウントをステップ728においてインクリメントする。上記記載から、14というスキップカウント値が2個の長スキップを示し、15というスキップカウント値が1個の長スキップを示す実施形態において、ステップ728におけるインクリメントにより、スキップカウント値が15から14に実際にデクリメントされることが理解される。よって、ステップ727および728を介して、任意の長ベクトルスキップ命令により、非ゼロ長スキップカウントを有する任意のレーンの長スキップカウントが1だけ無条件にインクリメントされる。なぜならば、これらの長スキップカウントは、前記長ベクトルスキップ命令の対応するベクトルスキップ終了命令により1だけデクリメントされるからである。
ステップ727において前記命令が長ベクトルスキップ命令ではないと決定された場合、アクションは不要となり、プロセスがステップ760において終了となるだけである。
当該レーンに対する短スキップカウント値および任意の長スキップカウント値がどちらともゼロである場合、プロセスはステップ730へと進む。ステップ730において、現在の命令がベクトルスキップ命令であるかについて決定する。現在の命令がベクトルスキップ命令ではない場合、前記命令によって指定された必要な作業をステップ735において行い、その後、プロセスはステップ760において終了する。その結果、当該レーンのスキップカウント値(短および長双方が用いられている場合、短および長の両方)が設定されていない場合(すなわち、ゼロである場合)、任意のベクトル作業命令によって指定された作業のみが当該レーンにおいて行われることが分かる。
ステップ730において現在の命令がベクトルスキップ命令であると決定された場合、ステップ740において、当該レーンについての条件コードが満たされているかについて決定する。一例として、前記ベクトルスキップ命令は、当該レーンについてベクトル処理ユニットが保持している特定の条件コードが設定されている場合にのみ、スキップインジケータを設定すべきであると指定し得る。前記条件コードが満たされていない場合、さらなるアクションは不要となり、プロセスはステップ760において終了する。しかし、前記条件コードが満たされている場合、プロセスはステップ745へと進む。
ステップ745において、範囲オペランドが前記ベクトルスキップ命令によって指定されているかについて決定する(本明細書中、この範囲オペランドもスキップインジケータオペランドと呼ぶ)。このような範囲オペランドが指定されている場合、これは、前記ベクトルスキップ命令が短スキップカウンターを設定することを意図していることを示しているため、その場合、プロセスはステップ750へと進む。ステップ750において、当該レーンに対する短スキップカウントを前記指定された範囲オペランドに設定する。その後、プロセスはステップ760において終了する。しかし、ステップ745においてヌル範囲オペランドが指定されていると決定された場合、これは、前記ベクトルスキップ命令が当該レーンについて長スキップカウンターを設定することを意図していることを意味するため、プロセスはステップ755へと分岐する。ステップ755において、当該レーンの長スキップカウント値をインクリメントする。その後、プロセスはステップ760において終了する。上記記載から、15というスキップカウント値が1個の長スキップを示し、0というスキップカウント値がゼロの長スキップを示す実施形態において、ステップ755におけるインクリメントにより、前記15というスキップカウント値が設定され、これにより、1個の長スキップが指定されることが理解される。
スキップカウンターレジスタ506の構成方法は多数存在する。一実施形態において、短スキップカウンターのみが用いられ、図8Aに示すように、各レーンについて短スキップカウント値を保存する、単一のスキップカウンターレジスタ800を設けることができる。一実施形態において、各スキップカウント値は4ビットであるため、8個の並列処理レーンが存在する例において、スキップカウンターレジスタは32ビットレジスタである。
別の実施形態において、長スキップカウント値を各並列処理レーンに対して設けてもよく、長スキップカウント値を別個のレジスタ内において符号化することができる。そのため、図8Bに示すように、第1のレジスタ805を用いて、各レーンについてのスキップカウント値(すなわち、短スキップインジケータ)を保存することができ、第2のレジスタ810を用いて、各レーンについての長カウント値(すなわち、長スキップインジケータ)を保存することができる。
特定の実施形態において、長スキップインジケータのみを用い、短スキップカウント値は用いない構成も可能であることも理解される。この例において、単一のレジスタ(例えば、図8Aのレジスタ800)を設けることができる。この場合、各レーンについての長スキップカウント値をレジスタにより提供する。この例示的実施形態において、ベクトルスキップ命令は長スキップカウント値を設定し、ベクトルスキップ終了命令が発生した場合にのみ、これらの値がデクリメントされる。その後、長スキップカウント値がゼロである任意のレーンに対して標準ベクトル命令が実行され、長スキップカウント値が設定されている(すなわち、非ゼロである)任意のレーンについては、標準ベクトル命令は無視される。
図8Cに示すように、短スキップカウント値および長スキップカウント値の両方を用いる実施形態においては、単一のスキップカウンターレジスタ815を用いて、各レーンについてスキップカウント値を符号化することが可能である。このような実施形態において、特定のスキップカウント値を用いることにより、任意の長スキップカウント値を符号化することが可能である。1つの特定の例において、図9の表中に模式的に示すように、14および15という値を長スキップカウントに対して保存する。
図9に示すように、各並列処理レーンについて、スキップカウント値、0〜15という複合符号化値のうちいずれかに設定することができる。0という値は、短スキップカウンターまたは長スキップカウンターのいずれも設定されていないことを示す。よって、図7を参照して、スキップカウンターがゼロの複合符号化である任意のレーンについては、ステップ705および715の結果が「はい」になる。1〜13の値は、設定された短スキップカウントを指定するための複合符号化として設定され得る。各後続するベクトル命令が実行されると、前記値が最終的に0になるまで、(前記ベクトル命令によって指定された作業が行われる代わりに)当該レーンについての設定された短スキップ値がデクリメントされる。前記値が最終的に0になった時点において、後続するベクトル命令が当該レーンにおいて実行される。よって、図7の例を鑑みて、ステップ705の評価時において前記複合符号化の値が1〜13である場合、プロセスはステップ710へと分岐する。ステップ710において、前記短スキップカウント値がデクリメントされる。
図9に示すように、14および15という複合符号化値が長スキップカウントに対して保存されているため、特定のレーンについての複合符号化が14または15である場合、ステップ705の結果は「はい」となり、ステップ715の後の処理は無くなる。ステップ720においてVEND命令が実行されている場合、長スキップカウントがデクリメントされる。図9に示すように、これは、現在の複合符号化が14である場合(これは、2という長スキップカウントを指定する)、前記複合符号化は15に設定され(これは、1という長スキップカウントを指定する)、現在の複合符号化が15である場合、前記複合符号化は0にクリアされることを意味する。
図10は、4つの並列処理レーンが設けられている例における、短スキップカウンターの利用の模式図である。この例において、VMUL命令(乗算命令)の実行時において、レーン1および3のスキップカウント値はゼロであり、レーン0および2のスキップカウント値はそれぞれ2および4であると仮定する。すなわち、前記乗算命令は、レーン1および3のみにおいて行われる。レーン0および2内の関連コンポーネントは一実施形態において前記乗算作業の実行に晒され得るが、宛先レジスタvaの更新はレーン0または2のいずれにおいても行われない。すなわち、データ要素vaおよびvaは不変のままであり、データ要素vaおよびvaは、前記乗算作業の結果を反映するように更新される。
その後、レーン0および2について、前記スキップカウンターをデクリメントすることで、前記乗算命令の実行後、レーン1および3のスキップカウンターをゼロのままとし、レーン0および2のスキップカウンターをここでそれぞれ1および3とする。図10は極めて単純な例を反復しているだけであり、これは典型的には、さらに多くのレーンが存在する場合を示す。さらに、前記ベクトルスキップ命令を必要に応じてネストすることで、複雑な一連の命令を多様なレーン内において条件付きで実行することが可能になる。
以下は、ネストされた一連のベクトルスキップ命令を用いて実行可能な一連の命令の一例である。詳細には、この例において、入力ベクトルv0、v1およびv2を用いて、3つの値の中央値を各レーン内において計算する。その結果をベクトルv3として出力する。よって、これらの命令の実行を通じて、各レーンについて、前記入力レジスタ内の同一レーンについての3つの値の中央値が出力される。
vmov v3、v2//各レーンについて、v2をv3にコピーする。ここで、中央値はv2内の値であると「推定」する(そうではない場合、中央値は以下によって上書きされる)
vsgt v0、v1、4//各レーンについて、v0およびv1を比較し、v0>v1である場合、スキップ値を4に設定する
vsgt v1、v2、1//ここで、v0<=v1であると分かる(各レーンについて、v1およびv2を比較し、v1>v2である場合、スキップ値を1に設定する)
vmov v3、v1//ここで、v1<=v2であると分かり、中央値はv1である
vsgt v2、v0、1//ここで、v0<=v1であると分かり(各レーンについて、v2およびv0を比較し、v2>v0である場合、スキップ値を1に設定する)
vmov v3、v0//ここで、v2<=v0であると分かり、中央値はv0である
vsle v0、v1、4//各レーンについてv0およびv1を比較し、v0<=v1である場合、スキップ値を4に設定する
vsle v1、v2、1//ここで、v0>v1であると分かり(各レーンについて、v1およびv2を比較し、v1<=v2である場合、スキップ値を1に設定する)
vmov v3、v1//ここで、v1>v2であると分かり、中央値はv1である
vsle v2、v0、1//ここで、v0>v1であると分かり、(各レーンについて、v2およびv0を比較し、v2<=v0である場合、スキップ値を1に設定する)
vmov v3、v0//ここで、v2>v0であると分かり、中央値はv0である
前記一連のベクトルスキップ命令(vsgtおよびvsle)を通じて、複雑な試験ツリーを各レーンにおいて独立的に行うことで、各レーン内における中央値データ要素値を発見することができる。第1の移動命令の後は、後続する移動命令は全て、前記移動命令に遭遇したときの当該レーンのスキップカウンター値に応じて、各レーン内において条件付きで行われることが理解される。
上記の実施形態の記載から、このような実施形態により、ベクトル処理ユニット内におけるベクトル作業を取り扱うための特に柔軟かつ効率的な方法が得られることが理解される。詳細には、ベクトル処理ユニットによって提供された各並列処理レーン内においてベクトル作業を(当該ベクトル作業を指定するベクトル命令を変更する必要無く)条件付きで実行することが可能である。その代わりに、ベクトルスキップ命令を用いて、並列処理レーンそれぞれについてスキップインジケータを設定し、スキップインジケータが設定されていないレーン内のみにおいて、後続するベクトル命令を実行する。スキップインジケータがスキップカウンターの形態をとる実施形態において、スキップ命令をネストすることで、複雑な一連の条件付き作業を、各並列処理レーンにおいて独立して行うことが可能になる。その結果、ベクトル処理ユニットの利用増加を達成することが可能になる。なぜならば、上記構成が無い場合は逐次的に行う必要があった作業を、ベクトル処理ユニットを用いて並列処理することが可能になり、また、1つ以上の並列処理レーンを当該作業の遂行から選択的に除外することが可能となるからである。
上記の技術は、上記した命令を含む一連のネーティブ命令を実行するハードウェアによって実行可能であるが、別の実施形態において、このような命令は仮想マシン環境においても実行可能であり、その場合、これらの命令は仮想マシンにとってネーティブであるが、前記仮想マシンは、異なる一連のネーティブ命令を有するハードウェア上において実行するソフトウェアにより、実行されることが理解される。このような仮想マシン環境により、一連の命令全体をエミュレートする完全仮想マシン環境が得られるが、あるいは、一部の命令(例えば、いくつかの命令(例えば、本技術の命令))のみをハードウェアによって捕捉し、部分仮想マシンによってエミュレートしてもよい。
より詳細には、上記したベクトルスキップ、ベクトル作業およびベクトルスキップ終了命令は、全体的仮想マシンまたは部分的仮想マシンに対するネーティブ命令として実行可能であり、仮想マシンは、前記マシンの基盤であるハードウェアプラットフォームと共に機能することで、上記したベクトル処理を提供することができる。
本明細書中、特定の実施形態について記載してきたが、本発明はこれに限定されず、これらの実施形態に対する多くの改変および追加が本発明の範囲内において可能であることが理解される。例えば、本発明の範囲から逸脱することなく、以下の従属請求項の機能の多様な組み合わせを独立請求項の機能と組み合わせることが可能である。
200 プロセッサ
202 全般的実行ユニット
204 全般的レジスタバンク
206 ベクトル実行ユニット
208 ベクトルレジスタバンク
210 命令フェッチ段
212 命令復号段

Claims (23)

  1. データ処理装置であって、
    データ要素を保存するように配置された複数のレジスタを有するレジスタデータ保存部と、
    一連のベクトル命令を実行するベクトル処理ユニットであって、前記ベクトル処理ユニットは、複数の並列処理レーンを有し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存部にアクセスして、前記レジスタデータ保存部からのデータ要素の読み出しおよび前記レジスタデータ保存部へのデータ要素の書き込みを行う、ベクトル処理ユニットと、
    前記並列処理レーンそれぞれについてスキップインジケータを維持するためのスキップインジケーション保存部と、
    を含み、
    前記ベクトル処理ユニットは、前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記スキップインジケーション保存部内において、前記複数のレーンのうち決定された1つ以上のレーンに対して前記スキップインジケータを設定する更新作業を行い、
    前記ベクトル処理ユニットは、前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外する、
    データ処理装置。
  2. 前記ベクトル処理ユニットは、前記ベクトルスキップ命令の実行時に、前記ベクトルスキップ命令の実行時において既に設定されている任意のスキップインジケータを前記更新作業から除外する、請求項1に記載のデータ処理装置。
  3. 各前記スキップインジケータはスキップカウント値を含み、前記スキップカウント値が非ゼロ値を有する場合、前記スキップカウント値は設定されているとみなされ、前記スキップカウント値がゼロ値を有する場合、前記スキップカウント値は設定されていないとみなされ、
    前記ベクトル処理ユニットは、前記ベクトルスキップ命令に応答して、前記決定された1つ以上のレーンに対する前記スキップカウント値を所定の非ゼロ値に設定し、
    前記一連内の各ベクトル命令について、前記ベクトル命令の実行時において前記スキップカウント値が設定された場合、前記ベクトル処理ユニットは、前記ベクトル命令によって指定された作業を行う代わりに前記スキップカウント値をデクリメントするように、構成される、
    請求項1または請求項2に記載のデータ処理装置。
  4. 前記所定の非ゼロ値は、前記ベクトルスキップ命令のオペランドとして指定される、請求項3に記載のデータ処理装置。
  5. 前記ベクトルスキップ命令の実行時において、前記ベクトル処理ユニットは、全ての設定されたスキップカウント値をデクリメントするように、構成される、請求項3または請求項4に記載のデータ処理装置。
  6. 前記設定されたスキップインジケータを消去せよとのベクトルスキップ終了命令を前記ベクトル処理ユニットが実行するまで、各設定されたスキップインジケータは設定されたままである、請求項1または請求項2に記載のデータ処理装置。
  7. 前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対する長スキップインジケータをさらに保持し、
    さらなるベクトルスキップ命令が提供され、前記さらなるベクトルスキップ命令が前記ベクトル処理ユニットによって実行されると、前記決定された1つ以上のレーンそれぞれの前記スキップカウント値の代わりに、前記決定された1つ以上のレーンそれぞれの長スキップインジケータが設定され、
    各ベクトル命令の実行時において、前記長スキップインジケータは設定されたままである、
    請求項3〜5のうちいずれかに記載のデータ処理装置。
  8. 前記ベクトル処理ユニットは、ベクトルスキップ終了命令に応答して、各設定された長スキップインジケータを消去する、
    請求項7に記載のデータ処理装置。
  9. 各長スキップインジケータは長スキップカウント値を含み、前記長スキップカウント値が非ゼロ値を有する場合、前記長スキップカウント値は設定されているとみなされ、前記長スキップカウント値がゼロ値を有する場合、前記長スキップカウント値は設定されていないとみなされ、
    前記さらなるベクトルスキップ命令に応答して、前記ベクトル処理ユニットは、前記決定された1つ以上のレーンそれぞれの長スキップカウント値をインクリメントさせ、
    前記ベクトル処理ユニットは、ベクトルスキップ終了命令に応答して、各設定された長スキップカウント値をデクリメントする、
    請求項7に記載のデータ処理装置。
  10. 前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対する前記スキップインジケータを保存する第1のレジスタと、前記並列処理レーンそれぞれに対する長スキップインジケータを保存する第2のレジスタとを含む、
    請求項7〜9のうちいずれかに記載のデータ処理装置。
  11. 前記スキップインジケーション保存部は、前記並列処理レーンそれぞれに対するスキップインジケータを保存するレジスタを含み、各スキップインジケータは、前記ベクトル処理ユニットにより、設定されたスキップカウント値を特定する第1の複数の非ゼロ値のうち任意の値に設定可能であり、設定された長スキップインジケータを特定するように、前記第1の複数の非ゼロ値に含まれない少なくとも1つの所定の非ゼロ値に設定可能である
    請求項7〜9のうちいずれかに記載のデータ処理装置。
  12. 前記ベクトルスキップ命令は、スキップインジケータオペランドとして、前記決定された1つ以上のレーンについて前記スキップインジケータが設定されるべき前記所定の非ゼロ値を指定し、前記さらなるベクトルスキップ命令は、前記スキップインジケータオペランドとしてヌル値を指定することで、前記さらなるベクトルスキップ命令と、前記ベクトルスキップ命令とを区別することが可能になる、請求項7〜11のうちいずれかに記載のデータ処理装置。
  13. 前記ベクトルスキップ命令は、スキップインジケータを設定すべき前記決定された1つ以上のレーンを直接指定する、請求項1〜12のうちいずれかに記載のデータ処理装置。
  14. 前記ベクトルスキップ命令に応答して、前記ベクトル処理ユニットは、1つ以上の所定の条件が満たされたかを各レーンについて評価し、前記評価に基づいて、スキップインジケータを設定すべき前記決定された1つ以上のレーンを指定する、請求項1〜12のうちいずれかに記載のデータ処理装置。
  15. 前記決定された1つ以上のレーンは、前記1つ以上の所定の条件が満たされたレーンである、請求項14に記載のデータ処理装置。
  16. 前記並列処理レーンそれぞれに対する少なくとも1つの条件コードを保存する条件コード保存部、
    をさらに含み、
    前記ベクトル処理ユニットは、前記少なくとも1つの条件コードが設定されているかを確認することにより、前記1つ以上の所定の条件が満たされたかを各レーンについて評価するように、構成される、
    請求項14または15に記載のデータ処理装置。
  17. 前記作業の遂行から除外された任意のレーンについて、前記レーン内において前記作業が行われるが、前記レーンにおける前記作業の遂行によって得られた結果値は捨象される、請求項1〜16のうちいずれかに記載のデータ処理装置。
  18. 前記レジスタデータ保存部は、複数のベクトルレジスタを含むベクトルレジスタバンクを含み、各ベクトルレジスタは、前記ベクトル処理ユニット内の異なる並列処理レーンに提供されるべき複数のデータ要素を保存する、
    請求項1〜17のうちいずれかに記載のデータ処理装置。
  19. スカラー処理ユニットと、
    前記スカラー処理ユニットと関連付けられたスカラーレジスタバンクと、
    前記スカラー処理ユニットと前記ベクトル処理ユニットとの間で共有される命令フェッチおよび命令復号化ユニットと、
    をさらに含む、請求項1〜18のうちいずれかに記載のデータ処理装置。
  20. 前記ベクトル処理ユニットはパイプライン型処理ユニットであり、複数のベクトル命令を任意のタイミングで同時に処理することができる、請求項1〜19のうちいずれかに記載のデータ処理装置。
  21. データ処理装置内のベクトル命令を取り扱う方法であって、前記データ処理装置は、データ要素を保存するように配置された複数のレジスタを有するレジスタデータ保存部と、一連のベクトル命令を実行するベクトル処理ユニットであって、前記ベクトル処理ユニットは、複数の並列処理レーンを有し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存部にアクセスして、前記レジスタデータ保存部からのデータ要素の読み出しおよび前記レジスタデータ保存部へのデータ要素の書き込みを行う、ベクトル処理ユニットとを含み、前記方法は、
    前記並列処理レーンそれぞれに対するスキップインジケータをスキップインジケーション保存部内に保持するステップと、
    前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記複数のレーンのうち決定された1つ以上のレーンに対する前記スキップインジケータを前記スキップインジケーション保存部内に設定する更新作業を行うステップと、
    前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外するステップと、
    を含む、方法。
  22. コンピュータで読み出し可能な命令を含むコンピュータプログラム製品であって、前記コンピュータで読み出し可能な命令がコンピュータ上において実行されると、前記コンピュータは、請求項21に記載のベクトル命令を取り扱う方法を行う、コンピュータプログラム製品。
  23. データ処理装置であって、
    データ要素を保存する複数のレジスタ手段を有するレジスタデータ保存手段と、
    一連のベクトル命令を実行するベクトル処理手段であって、前記ベクトル処理手段は、複数の並列処理レーンを提供し、かつ、前記一連のベクトル命令の実行時において前記レジスタデータ保存手段にアクセスして、前記レジスタデータ保存手段からのデータ要素の読み出しおよび前記レジスタデータ保存手段へのデータ要素の書き込みを行う、ベクトル処理手段と、
    前記並列処理レーンそれぞれに対するスキップインジケータを保持するスキップインジケーション保存手段と、
    を含み、
    前記ベクトル処理手段は、前記一連のベクトル命令内のベクトルスキップ命令に応答して、前記複数のレーンのうち決定された1つ以上のレーンに対する前記スキップインジケータを前記スキップインジケーション保存手段内において設定する更新作業を行い、
    前記ベクトル処理手段は、前記一連のベクトル命令内のベクトル作業命令に応答して、前記複数の並列処理レーンに対してデータ要素入力を並列に行う作業を実行するが、前記作業において、関連付けられたスキップインジケータが設定されている任意のレーンは前記作業の遂行から除外する、
    データ処理装置。
JP2012513670A 2009-06-05 2010-05-28 ベクトル命令を取り扱うためのデータ処理装置および方法 Active JP5512803B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0909756.9 2009-06-05
GB0909756.9A GB2470782B (en) 2009-06-05 2009-06-05 A data processing apparatus and method for handling vector instructions
PCT/GB2010/001067 WO2010139941A1 (en) 2009-06-05 2010-05-28 A data processing apparatus and method for handling vector instructions

Publications (2)

Publication Number Publication Date
JP2012529096A true JP2012529096A (ja) 2012-11-15
JP5512803B2 JP5512803B2 (ja) 2014-06-04

Family

ID=40937010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012513670A Active JP5512803B2 (ja) 2009-06-05 2010-05-28 ベクトル命令を取り扱うためのデータ処理装置および方法

Country Status (5)

Country Link
US (1) US8661225B2 (ja)
JP (1) JP5512803B2 (ja)
CN (1) CN102804135B (ja)
GB (1) GB2470782B (ja)
WO (1) WO2010139941A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862932B2 (en) * 2008-08-15 2014-10-14 Apple Inc. Read XF instruction for processing vectors
US8938642B2 (en) * 2008-08-15 2015-01-20 Apple Inc. Confirm instruction for processing vectors
US8271832B2 (en) * 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US9009528B2 (en) * 2008-08-15 2015-04-14 Apple Inc. Scalar readXF instruction for processing vectors
US8489865B1 (en) * 2010-04-15 2013-07-16 Lockheed Martin Corporation Device, system, and method for single thread command chaining instructions from multiple processor elements
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN107220029B (zh) * 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
US9557993B2 (en) * 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
GB2519107B (en) * 2013-10-09 2020-05-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing speculative vector access operations
US9830153B2 (en) * 2014-06-20 2017-11-28 Netronome Systems, Inc. Skip instruction to skip a number of instructions on a predicate
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US9910826B2 (en) * 2015-03-27 2018-03-06 International Business Machines Corporation SIMD implementation of stencil codes
GB2548601B (en) * 2016-03-23 2019-02-13 Advanced Risc Mach Ltd Processing vector instructions
GB2548600B (en) * 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
CN107315575B (zh) * 2016-04-26 2020-07-31 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法
US10838720B2 (en) * 2016-09-23 2020-11-17 Intel Corporation Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
US11409692B2 (en) * 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
GB2580068B (en) 2018-12-20 2021-02-24 Advanced Risc Mach Ltd Generating a vector predicate summary
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11507374B2 (en) 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11340904B2 (en) 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
GB2613178B (en) * 2021-11-25 2024-01-10 Advanced Risc Mach Ltd Techniques for controlling vector processing operations
CN114840255B (zh) * 2022-07-04 2022-09-27 飞腾信息技术有限公司 处理数据的方法、装置及设备可读存储介质
CN115951936B (zh) * 2023-01-17 2023-05-26 上海燧原科技有限公司 向量化编译程序的芯片适配方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
JP2007526571A (ja) * 2004-03-02 2007-09-13 イマジネイション テクノロジーズ リミテッド Simdデバイスにおける制御フロー管理のための方法及び装置
US20080114975A1 (en) * 2006-11-10 2008-05-15 Hsueh-Bing Yen Method and processing system for nested flow control utilizing predicate register and branch register

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6059469A (ja) * 1983-09-09 1985-04-05 Nec Corp ベクトル処理装置
JPS6266377A (ja) * 1985-09-19 1987-03-25 Fujitsu Ltd マスクパタ−ン生成方式
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
JP2826490B2 (ja) * 1995-09-27 1998-11-18 甲府日本電気株式会社 ベクトルデータ処理装置
US5799163A (en) * 1997-03-04 1998-08-25 Samsung Electronics Co., Ltd. Opportunistic operand forwarding to minimize register file read ports
DE01988453T1 (de) 2000-11-28 2004-04-22 Chipwrights Design, Inc., Newton Abwickeln einer konditionalen verarbeitung in einer prozessorarchitektur mit einem befehl und mehreren datenwegen
WO2002084451A2 (en) * 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
TWI289789B (en) * 2002-05-24 2007-11-11 Nxp Bv A scalar/vector processor and processing system
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
US20070250681A1 (en) * 2006-04-10 2007-10-25 International Business Machines Corporation Independent programmable operation sequence processor for vector processing
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
JP2009086870A (ja) * 2007-09-28 2009-04-23 Nec Computertechno Ltd ベクトル処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
JP2007526571A (ja) * 2004-03-02 2007-09-13 イマジネイション テクノロジーズ リミテッド Simdデバイスにおける制御フロー管理のための方法及び装置
US20080114975A1 (en) * 2006-11-10 2008-05-15 Hsueh-Bing Yen Method and processing system for nested flow control utilizing predicate register and branch register

Also Published As

Publication number Publication date
CN102804135A (zh) 2012-11-28
WO2010139941A1 (en) 2010-12-09
US20100312988A1 (en) 2010-12-09
US8661225B2 (en) 2014-02-25
CN102804135B (zh) 2015-07-22
GB2470782A (en) 2010-12-08
GB2470782B (en) 2014-10-22
JP5512803B2 (ja) 2014-06-04
GB0909756D0 (en) 2009-07-22

Similar Documents

Publication Publication Date Title
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP6843113B2 (ja) メモリと複数のベクトルレジスタ間の複数のデータ構造を転送する装置および方法
JP5356531B2 (ja) シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能
JP3842474B2 (ja) データ処理装置
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
KR102256188B1 (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
KR20180066146A (ko) 벡터 데이터 전송 명령어
US9965275B2 (en) Element size increasing instruction
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP5947879B2 (ja) マスクレジスタを用いてジャンプを行うシステム、装置、および方法
TWI740851B (zh) 用於向量負載指示之資料處理設備、方法及電腦程式
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
JP2016536665A (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
US7162620B2 (en) Methods and apparatus for multi-processing execution of computer instructions
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
JP4444305B2 (ja) 半導体装置
JP3835764B2 (ja) プロセッサおよび記録媒体
US20140365751A1 (en) Operand generation in at least one processing pipeline
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JP5013966B2 (ja) 演算処理装置
WO2007048988A1 (en) A data processing apparatus and method for handling procedure call instructions
JP2005107666A (ja) データ処理装置
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140128

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: 20140224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140326

R150 Certificate of patent or registration of utility model

Ref document number: 5512803

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250