(57)【要約】  データ処理システム２は、処理回路１８と、プログラム命令をデコードし、プロセッサ回路を制御するためのデコーダ回路１４とを含む。デコーダ回路は、例外レベル状態の階層のうちの選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存命令に応答して、現在選択されている例外レベル状態に関連付けられたベクトル被演算子ビットサイズの制限値と、階層内で最上層の例外レベル状態により近い例外レベル状態に関して設定された任意のプログラマブルな限界値と、実装限界と、により支配されるベクトル被演算子ビットサイズで処理を遂行するように処理回路を制御する。
2018521421.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理回路と、
プログラム命令をデコードして、前記処理動作を遂行するように前記処理回路を制御するための制御信号を生成するためのデコーダ回路であって、前記処理動作が、少なくとも１つのベクトル被演算子を使用するベクトル処理動作を含む、デコーダ回路と、を備え、
前記デコーダ回路が、前記選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理回路を制御する、装置。
【請求項２】
前記ベクトル被演算子ビットサイズが、前記選択された例外レベル状態の前記限界値により許容される最大値であって、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態に関して設定された任意のプログラマブルな限界値によっても許容される、最大値、を有する、請求項１に記載の装置。
【請求項３】
前記デコーダ回路が、許容ベクトル被演算子ビットサイズクエリ命令に応答して、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態に関して設定された任意のプログラマブルな限界値により支配される許容ベクトル被演算子ビットサイズ指示値を返す、請求項１および２のいずれか一項に記載の装置。
【請求項４】
前記階層内の対応する例外レベル状態に関連付けられた前記ベクトル被演算子ビットサイズのそれぞれのプログラマブルな限界値を記憶する複数の例外レベル構成レジスタを備えた、請求項１、２、および３のいずれか一項に記載の装置。
【請求項５】
前記最下層の例外レベル状態を除く前記階層内の各例外レベル状態のためのそれぞれの例外レベル構成レジスタを備えた、請求項４に記載の装置。
【請求項６】
前記処理回路が、前記選択された例外状態の例外レベル構成レジスタと、前記選択された例外レベル状態よりも前記階層内で前記最下層の例外レベル状態により近い例外レベル状態の任意の例外レベル構成レジスタとにアクセスすることが許容されている、請求項４および５のいずれか一項に記載の装置。
【請求項７】
前記処理回路が、前記処理回路が前記最下層の例外レベル状態にあるとき、前記許容ベクトル被演算子ビットサイズクエリ命令を使用して前記許容ベクトル被演算子ビットサイズをクエリすることを阻止される、請求項３に記載の装置。
【請求項８】
前記処理回路が、最大で実装限界のベクトル被演算子ビットサイズを有するベクトル被演算子を記憶するためのベクトル被演算子レジスタ回路を含み、前記プログラマブルな限界値が、前記実装限界のベクトル被演算子ビットサイズ以下のベクトル被演算子ビットサイズを使用して前記ベクトル被演算子ビットサイズ依存命令を遂行するように前記処理回路を制御する、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
前記ベクトル被演算子が、汎用ベクトル被演算子と、ベクトルプログラム命令の実行を制御するための述語値を指定するベクトル述語被演算子とのうちの１つである、請求項１〜８のいずれか一項に記載の装置。
【請求項１０】
前記処理回路が、前記装置によりサポートされていないベクトル被演算子ビットサイズに対応するようにプログラマブルな限界値を設定しようとする試みに応答して、前記プログラマブルな限界値を前記装置によりサポートされている次に低いベクトル被演算子ビットサイズに設定する、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記処理回路が、ベクトル被演算子ビットサイズの増大に応答して、前記選択された例外レベル状態の変更と少なくとも１つの前記プログラマブルな限界値の変更とのうちの少なくとも１つの際に、前記ベクトル被演算子の新たにアクセス可能になった部分内に、ゼロの値または前記新たにアクセス可能になった部分が最後にアクセス可能であったときに前記新たにアクセス可能になった部分内に保持されていた値に等しい値のうちの１つを提供する、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
前記許容ベクトル被演算子ビットサイズクエリ命令が、システムレジスタ読み出し命令である、請求項３に記載の装置。
【請求項１３】
データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理手段と、
プログラム命令をデコードして、前記処理動作を遂行するように前記処理手段を制御するための制御信号を生成するためのデコーダ手段であって、前記処理動作が、少なくとも１つのベクトル被演算子を使用する１つ以上のベクトル処理動作を含む、デコーダ手段と、を備え、
前記デコーダ手段が、前記選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理手段を制御する、装置。
【請求項１４】
データを処理する方法であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理回路により処理動作を遂行することと、
プログラム命令をデコードして、前記処理動作を遂行するように前記処理回路を制御するための制御信号を生成することであって、前記処理動作が、少なくとも１つのベクトル被演算子を使用するベクトル処理動作を含む、生成することと、を含み、
前記選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子サイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理回路を制御する、方法。
【請求項１５】
請求項１〜１２のいずれか一項に記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するための、非一時的な記憶媒体上に記憶されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より具体的には、本開示は、ベクトル処理動作をサポートするデータ処理システムに関する。
【背景技術】
【０００２】
あるベクトル被演算子ビットサイズを有し、複数のベクトル要素を含む少なくとも１つのベクトル被演算子を使用するベクトル処理動作をサポートするデータ処理システムを提供することが知られている。典型的に、ベクトル被演算子ビットサイズは、データ処理システムのアーキテクチャの一部として定義される。例えば、アーキテクチャは、ベクトル被演算子ビットサイズが２５６ビット、５１２ビット、１０２４ビットなどの何らかの特定の固定値になることを定義する。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理回路と、
プログラム命令をデコードして、該処理動作を遂行するように該処理回路を制御するための制御信号を生成するためのデコーダ回路であって、該処理動作が、少なくとも１つのベクトル被演算子を使用するベクトル処理動作を含む、デコーダ回路と、を備え、
該デコーダ回路が、該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように該処理回路を制御する、装置、を提供する。
【０００４】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理手段と、
プログラム命令をデコードして、処理動作を遂行するように該処理手段を制御するための制御信号を生成するためのデコーダ手段であって、該処理動作が、少なくとも１つのベクトル被演算子を使用する１つ以上のベクトル処理動作を含む、デコーダ手段と、を備え、
該デコーダ手段が、該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように該処理手段を制御する、装置、を提供する。
【０００５】
本開示の少なくとも一部の実施形態は、データを処理する方法であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理回路により処理動作を遂行することと、
プログラム命令をデコードして、該処理動作を遂行するように該処理回路を制御するための制御信号を生成することであって、該処理動作が、少なくとも１つのベクトル被演算子を使用するベクトル処理動作を含む、生成することと、を含み、
該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも１つのプログラマブルなベクトル被演算子サイズ限界値とに依拠してベクトル処理動作を遂行するように該処理回路を制御する、方法、を提供する。
【０００６】
これより、添付図面を参照しながら、例示的な実施形態を単に例として説明する。
【図面の簡単な説明】
【０００７】
【図１】ベクトル被演算子を使用したベクトル処理をサポートするデータ処理システムを概略的に例示する。
【図２】汎用ベクトル被演算子の形の例示的なベクトル被演算子およびベクトル述語被演算子を概略的に例示する。
【図３】複数の例外レベル状態とそれぞれの例外レベル状態に関連付けられたベクトル被演算子ビットサイズを制御するためのプログラマブルな限界値とを有するシステム内のベクトル被演算子ビットサイズ依存命令と許容ベクトル被演算子ビットサイズクエリ命令の挙動の具体的な例を概略的に例示する。
【図４】Ｎ個の例外レベル状態を有するシステムの挙動を例示する、図３の一般化されたバージョンである。
【図５】プログラマブルな限界値を記憶するために使用され、許容ベクトル被演算子ビットサイズクエリ命令による文脈依存型読み出しがそこから行われ得る、システム構成レジスタを概略的に例示する。
【図６Ａ】文脈依存型ベクトル被演算子ビットサイズ依存命令および文脈依存型許容ベクトル被演算子サイズクエリ命令の挙動をそれぞれ概略的に例示する流れ図である。
【図６Ｂ】文脈依存型ベクトル被演算子ビットサイズ依存命令および文脈依存型許容ベクトル被演算子サイズクエリ命令の挙動をそれぞれ概略的に例示する流れ図である。
【図７】プログラマブルな限界値を書き込むときの挙動を概略的に例示する流れ図である。
【図８】ベクトル被演算子サイズが増大されるときの挙動を概略的に例示する。
【図９】仮想マシン実装を概略的に例示する。
【発明を実施するための形態】
【０００８】
図１は、プロセッサ４およびメモリ６を含むデータ処理システム２を概略的に例示し、メモリ６は、データ８およびプログラム命令１０を記憶する。プロセッサ４は、プログラム命令１０をメモリ６からフェッチし、これらをデコーダ回路１４に渡す命令フェッチ回路１２を含み、プログラム命令１０は、デコーダ回路１４においてデコードされて、プロセッサ４の動作を制御する制御信号１６を生成する。より具体的には、制御信号１６は、デコードされたプログラム命令により指定される処理動作を遂行するように処理回路１８を制御する。処理回路１８は、あるベクトル被演算子ビットサイズを有し、複数のベクトル要素を含むベクトル被演算子を記憶するためのベクトルレジスタ回路２０に連結されている。システム構成レジスタ２２もまた、処理回路１８に連結されている。システム構成レジスタ２２は、ベクトル処理命令のために使用されるベクトル被演算子ビットサイズおよびプログラマブルな限界値（ＰＬＶ）によるベクトル被演算子ビットサイズの制約などの、ソフトウェア制御下で処理回路１８によりプログラムされ得、処理回路１８の挙動を構成する働きをする構成値を記憶する働きをする。
【０００９】
図２は、ベクトル被演算子の２つの例示的な形態を概略的に例示する。第１の例示的なベクトル被演算子２４は、ベクトルプログラム命令（例えば、ベクトル算術命令、ベクトル論理命令など）を実行するときにソース被演算子または宛先被演算子として使用され得るものなどの、汎用ベクトル被演算子である。この例では、汎用ベクトル被演算子２４は、５１２ビットのベクトル被演算子ビットサイズを有するとして、かつそれぞれ６４ビットのベクトル要素ビットサイズを有する８個のベクトル要素を含むとして例示されている。ベクトル要素は、ａ０〜ａ７として表示されている。
【００１０】
図２はまた、ベクトル被演算子の別の例示的な形態、すなわちベクトル述語被演算子２６を例示する。これは、汎用ベクトル被演算子２４に対して遂行されているベクトル処理動作に関連付けられたベクトル述語被演算子であってもよい。ベクトル述語被演算子２６は、複数の述語値ｐ０〜ｐ７を含み、複数の述語値ｐ０〜ｐ７は、関連付けられたベクトルプログラム命令の実行を、そのベクトルプログラム命令により操作されるベクトル被演算子内の対応するベクトル要素に関して制御する。一例として、述語値は、汎用ベクトル被演算子内のそれぞれのベクトル要素に関連付けられたベクトル処理をスイッチオンまたはスイッチオフし得る。例示した例では、ベクトル述語被演算子は、６４ビットを有し、各述語値は、長さ８ビットである。
【００１１】
図１のデータ処理システム２は、ベクトル被演算子２４、２６を記憶するために使用されるベクトルレジスタ回路２２の特定の実装により実装される。実務上、本開示のプロセッサアーキテクチャを使用する異なる物理実装は、異なる実装限界の最大ビットサイズを有するベクトル被演算子を提供し得る。高速処理スピードを目指した複雑な実装は、１０２４ビットなどの大きいビットサイズを有するベクトル被演算子を提供してもよい。逆に、動作中の低い方のエネルギー消費を提供することを目指したプロセッサの実装は、１２８ビットなどのより小さい最大ベクトル被演算子ビットサイズをサポートしてもよい。データ処理システム２のプロセッサアーキテクチャ上で実行されるように書かれたソフトウェアは、いかなる修正も必要とすることなしに（または著しい修正を必要とすることなしに）、そのソフトウェアを実行するために使用されている特定のプロセッサ４の実装限界のベクトル被演算子ビットサイズに依拠して使用することができることが望ましい。さらに、特定のソフトウェアは、特定のベクトル被演算子ビットサイズで動くことが試験／検証されている場合があり、ソフトウェア自体が、そのソフトウェアの実行において使用されるベクトル被演算子ビットサイズを実装の最大ベクトル被演算子ビットサイズとは異なるように（それ未満になるように）制約することを希望する場合がある。複数の例外レベル状態（例えば、特権レベル）を利用するシステム内では、高い方の特権レベルにあるソフトウェアが低い方の例外レベル状態で実行されているソフトウェアにより使用されるベクトル被演算子ビットサイズを制約することができることが望ましい場合がある。例えば、最大で所与の最大ベクトル被演算子ビットサイズまで正確に動作すると検証されているオペレーティングシステムは、そのオペレーティングシステムの下で実行されているアプリケーションプログラムが、オペレーティングシステムが検証されている最大ベクトル被演算子ビットサイズを超えないように制約することを希望する場合がある。
【００１２】
図３は、プロセッサ４の特定の実装に関して、異なる例外レベル状態に関連付けられたプログラマブルな限界値を概略的に例示する。この実装では、実装限界の最大被演算子ビットサイズは、５１２である。プロセッサ４は、４つの異なる例外レベル状態、すなわちＥＬ０、ＥＬ１、ＥＬ２、およびＥＬ３における実行をサポートする。これらの例外レベル状態は、最下層の例外レベル状態ＥＬ０〜最上層の例外レベル状態ＥＬ３にわたる例外レベル状態の階層内に配置されている。最下層の例外レベル状態以外の例外レベル状態のそれぞれは、それに関連付けられたプログラマブルな限界値（ＰＬＶｘ）を有する。他の例示的な実施形態（図示せず）では、最下層の例外レベル状態ＥＬ０もまた、それに関連付けられたプログラマブルな限界値（ＰＬＶ０）を有し得る。これらのプログラマブルな限界値は、例外レベル状態のそれぞれと関連付けられたベクトル被演算子ビットサイズを示す。図３の例では、例外レベル状態ＥＬ１は、３８４ビットのプログラマブルな限界値を有し、例外レベル状態ＥＬ２は、２５６ビットのプログラマブルな限界値を有し、例外レベルＥＬ３は、５１２ビットのプログラマブルな限界レベルを有する。これらのプログラマブルな限界値は、当該の例外レベル状態および当該の例外レベル状態より下の全ての例外レベル状態で実行されているベクトルプログラム命令を実行するために使用されるべき最大ベクトル被演算子ビットサイズを示す。したがって、ある例外レベル状態に関連付けられたプログラマブルな限界値は、それ自身の例外レベルで実行されているプログラム命令のベクトル被演算子サイズに対して限界を課し、さらに例外レベル状態の階層内の低い方の例外レベルで実行されているプログラム命令に対してこの限界を課す。一例として、例外レベル状態ＥＬ２で実行されているハイパーバイザーは、２５６の最大ベクトル被演算子ビットサイズをサポートし得、この限界は、例外レベルＥＬ１で実行されているオペレーティングシステムソフトウェアおよび例外レベルＥＬ０で実行されているアプリケーションソフトウェアに対して課されることになる。たとえソフトウェアのこれらの他のインスタンス自体、例えば例外レベル状態ＥＬ１にあるオペレーティングシステムは、それら自身のプログラマブルな限界値により指定されるより大きいベクトル被演算子ビットサイズを使用することができるとしてでもある。
【００１３】
ベクトル被演算子ビットサイズ依存命令が実行されるとき、用いられるベクトル被演算子ビットサイズは、現在選択されている例外レベル状態の限界値と、現在選択されている選択レベル状態（これ自体は、プログラマブルであってもよく、プログラマブルでなくてもよい）よりも階層内で最上層の例外レベル状態により近い例外レベル状態に関して設定されている任意の（全ての）プログラマブルな限界値とにより支配されるベクトル被演算子ビットサイズで処理を遂行するように制御され（かつ処理回路１８により使用され）る。（この例示的な実施形態における）最下層の例外レベル状態は、関連付けられたプログラマブルな限界値を有さないが、最下層の例外レベル状態よりも階層の最上層により近い他の例外レベル状態のうちの全てのプログラマブルな限界値に服する。ベクトルプログラム命令は、通常、実行されているベクトル被演算子ビットサイズ依存命令に関して許容されている最大値を有するベクトル被演算子ビットサイズを使用することになる。これは、増大したレベルの並列動作を提供する。
【００１４】
特定の例外レベル状態で実行されているソフトウェアは、最上層の例外レベル状態により近い例外レベル状態の制約のゆえに、そのソフトウェアが潜在的に使用できる最大ベクトル被演算子ビットサイズを決定する必要がある場合がある。これを達成するために、デコーダ回路１４および処理回路１８は、許容被演算子ビットサイズクエリ命令をサポートしている。この許容ベクトル被演算子ビットサイズクエリ命令は、処理回路１８が許容ベクトル被演算子ビットサイズクエリ命令を実行する選択された例外レベル状態よりも階層内で最上層の例外レベル状態により近い例外レベル状態により制約されるベクトル被演算子ビットサイズ指示値を返す働きをする。したがって、図３の例では、アプリケーションプログラムにより使用される最下層の例外レベル状態に対応する例外レベル状態ＥＬ０で実行される許容ベクトル被演算子ビットサイズクエリ命令は、たとえ（この例示的な実施形態における）例外レベル状態ＥＬ０が関連付けられた限界値を有さず、例外レベルＥＬ１で実行されているオペレーティングシステムに関連付けられた限界値が３８４という高い方の値であるとしても、例外レベル状態ＥＬ２の２５６のプログラマブルな限界値により制約される２５６の許容ベクトル被演算子ビットサイズ指示値を返すことになる。返される許容ベクトル被演算子ビットサイズ指示値は、高い方の例外レベル状態に関連付けられたプログラマブルな限界値に依拠するが、許容ベクトル被演算子ビットサイズクエリ命令自体が実行される選択された例外状態に関連付けられたいずれのプログラマブルな限界値にも依拠しない。図３の例では、例外レベル状態ＥＬ２自体に関連付けられたプログラマブルな限界値は２５６であるが、例外レベル状態ＥＬ２における許容ベクトル被演算子ビットサイズクエリ命令の実行は、５１２の許容ベクトル被演算子ビットサイズ指示値を返す。これが、例外レベル状態ＥＬ３に関連付けられたプログラマブルな限界値であるからである。許容ベクトル被演算子ビットサイズクエリ命令は、特定の例外レベル状態で実行されているソフトウェアが、そのソフトウェア自身のプログラマブルな限界値を設定するため、またはそのソフトウェアの挙動の何らかの他の側面を修正するためなどに、そのソフトウェアが使用し得る最大ベクトル被演算子ビットサイズを決定することを可能にする。
【００１５】
図４は、図３で与えた具体的な例の一般化されたバージョンである。この一般化されたバージョンでは、Ｎ個の例外レベルが存在する。所与の例外レベルでベクトル被演算子ビットサイズ依存命令のために使用されるベクトル被演算子ビットサイズは、さらにその例外レベル状態自体のプログラマブルな限界値ならびに階層内で最上層の例外レベル状態により近い他のプログラマブルな限界値により示される最小数として決定される。（この例示的な実施形態における）例外レベルＥＬ０の場合、これ自体は、プログラマブルな限界値を有さず、それゆえに、そのベクトル被演算子ビットサイズは、階層内の高い方の例外レベル状態の全てのプログラマブルな限界値により示される最小数として決定される。最上層の例外レベル状態ＥＬ（Ｎ−１）は、それ自身のプログラマブルな限界値ＰＬＶ（ｎ−１）により指定される、そのベクトル被演算子ビットサイズ依存命令のために使用されるベクトル被演算子ビットサイズを有する。
【００１６】
図４の一般化された例の場合に返されるベクトル被演算子ビットサイズ指示値の場合、これは、許容ベクトル被演算子ビットサイズクエリ命令自体が実行される例外レベル状態と比較して、階層内の高い方の例外レベル状態に関連付けられた全てのプログラマブルな限界値により示される最小数により与えられる。最上層の例外レベル状態の場合、返される許容ベクトル被演算子ビットサイズ指示値は、プロセッサ４（およびベクトルレジスタ回路２０）の特定の実装の実装限界のベクトル被演算子ビットサイズである。
【００１７】
図５は、上述の挙動を制御するために使用され得るシステムレジスタ２２の形態の例を概略的に例示する。これらのシステムレジスタ２２は、複数の例外レベル構成レジスタＺＣＲ＿ＥＬｘと共に識別レジスタＺＩＤＲ＿ＥＬ１を含む。デコーダ回路１４は、許容ベクトル被演算子ビットサイズクエリ命令および現在の例外レベル状態に応答して（それにより、命令を文脈依存型にして）、識別レジスタＺＩＤＲ＿ＥＬ１を読み出す。このようなレジスタ読み出しから返される値は、上述したように図３および４に関して決定される許容ベクトル被演算子ビットサイズ指示値である。特に、許容ベクトル被演算子ビットサイズクエリ命令の実行は、プログラマーには識別システムレジスタを読み出すことのように見え得るものの、実務上、結果は、複数の例外レベル構成レジスタＺＣＲ＿ＥＬｘおよび実装限界の最大被演算子ビットサイズを含む他のソースから引き出され得る。プログラムモデルでは、ベクトル被演算子ビットサイズクエリ命令の実行の効果は、識別レジスタＺＩＤＲ＿ＥＬ１の最下位ビットを返すことである。これは、上述の最大許容ベクトル被演算子ビットサイズ指示値に対応する値を有する。例外レベル構成レジスタＺＣＲ＿ＥＬｘのうちのいずれにこの戻り値が依存するかは、許容ベクトル被演算子ビットサイズクエリ命令が実行される例外レベル状態により制御される。最下層の例外レベル状態で実行されるとき、読み出し識別レジスタＺＩＤＲ＿ＥＬ１に対する試みは、値を返さない場合があり、命令は、次いで、その代わりとして未定義の命令として扱われて、未定義命令例外をトリガする場合がある。最下層レベルの例外レベル状態以外のそれぞれの例外レベル状態に関連付けられた例外レベル構成レジスタＺＣＲ＿ＥＬｘは、これらの例外レベル構成レジスタに対する書き込みにより設定されるプログラマブルな限界値ＰＬＶｘを記憶するために使用される。所与の例外レベル状態で実行される例外レベル構成レジスタＺＣＲ＿ＥＬｘに対するシステムレジスタ読み出しまたは書き込み命令は、それ自身の例外レベル状態と、例外レベル状態の階層内の任意の低い方の（最下層の例外レベル状態により近い）例外レベル状態との例外レベル構成レジスタを読み出しまたは書き込むことを許容されている。高い方の例外レベル状態の例外レベル構成レジスタＺＣＲ＿ＥＬｘを読み出しまたは書き込む試みは、未定義命令挙動という結果をもたらす。
【００１８】
この例示的な実施形態では、プログラマブルな限界値は、４ビット値であってもよく、１だけインクリメントし、１２８で乗算することによりベクトル被演算子ビットサイズを表示するために使用される。プログラマブルな限界値とプログラマブルな限界値が指定するベクトル被演算子ビットサイズとの間の他のマッピング、例えばベクトル被演算子サイズを２の累乗として指定することも用いられ得ることは、明らかであろう。
【００１９】
図６Ａは、文脈依存型ベクトル被演算子ビットサイズ依存命令の実行を概略的に例示する流れ図であるである。ステップ２８では、処理は、ベクトル被演算子ビットサイズ依存命令がデコーダ１４により受信されるまで待機する。次いで、ステップ３０では、デコーダ１４は、現在選択されている例外レベル状態のプログラマブルな限界値および全ての高い方の例外レベル状態のプログラマブルな限界値を読み出すように処理回路１８およびプロセッサ内の他の要素を制御するための制御信号１６を生成する。ステップ３２は、これらの読み出し値のうちの最小数を決定する。ステップ３４は、ステップ３２で決定された最小値をベクトル被演算子ビットサイズとして使用するベクトル被演算子ビットサイズ依存命令により指定される処理（算術演算、論理演算、または何らかの他の演算など）を遂行する。
【００２０】
図６Ｂは、文脈依存型許容ベクトル被演算子ビットサイズクエリ命令の動作を概略的に例示する流れ図である。ステップ３６では、処理は、許容ベクトル被演算子ビットサイズクエリ命令がデコーダ回路１４により受信されるまで待機する。この許容ベクトル被演算子ビットサイズクエリ命令は、例えば、識別レジスタＺＩＤＲ＿ＥＬ１の読み出しであってもよい。このような命令が受信されると、処理は、ステップ３８に進み、全ての高い方の例外レベル状態に関して設定されたプログラマブルな限界値（および適切な場合には、実装限界の最大ベクトル被演算子ビットサイズ）の読み出しが行われる。ステップ４０は、ステップ３８からの読み出し値のうちの最小数を決定する。ステップ４２は、読み出し値のうちの最小数を最大許容ベクトル被演算子ビットサイズ（許容ベクトル被演算子ビットサイズ指示値）として返す。次いで、処理は、終了する。
【００２１】
図７は、プログラマブルな限界値ＰＬＶをシステム構成レジスタ２２のうちの１つに書き込むときのプロセッサ４の挙動を概略的に例示する流れ図である。所与の例外レベル状態に関して設定され得るプログラマブルな限界値は、高い方の例外レベル状態に関して設定されたプログラマブルな限界値により制限され、プロセッサ４の特定の実装の制約によっても制限される。例えば、プロセッサ４の特定の実装は、５１２、２５６、および１２８のベクトル被演算子ビットサイズをサポートすることができるが、３８４のベクトル被演算子ビットサイズをサポートすることはできない。それゆえに、例外レベル構成レジスタＺＣＲ＿ＥＬｘのうちの１つに対するシステムレジスタ書き込み命令が３８４のベクトル被演算子ビットサイズに対応するプログラマブルな限界値を定義しようとしている場合、これは、例外レベル状態の階層内の高い方のプログラマブルな限界値により許容され得るが、プロセッサ４のハードウェア実装により許容されない。この場合、例外レベル構成レジスタＺＣＲ＿ＥＬｘ内に記憶されたプログラマブルな限界値は、システムレジスタ書き込み命令に応答して、ハードウェアによりサポートされているｚ低いベクトル被演算子ビットサイズに丸められる。したがって、上述の例において、３８４に対応するプログラマブルな限界値の書き込みの試みは、高い方の例外レベル状態のプログラマブルな限界値により許容され得るが、ハードウェア実装により許容されず、それゆえに、記憶されている値は、サポートされている次に低いベクトル被演算子サイズ、すなわち２５６に丸められる。異なるプログラマブルな限界値を例外レベル構成レジスタに書き込むことを試み、次いで記憶された値を読み出すことにより、特定の例外レベル状態で実行されているソフトウェアは、高い方の例外レベル状態にあるソフトウェアにより設定されたプログラマブルな限界とハードウェア実装により設定された限界との両方の結果として、どのベクトル被演算子ビットサイズがサポートされており、どのベクトル被演算子ビットサイズがサポートされていないのかを決定し得る。
【００２２】
図７のステップ４４では、処理は、例外レベル構成レジスタＺＣＲ＿ＥＬｘへの命令書き込みがデコーダ１４により受信されるまで待機する。ステップ４６は、書き込まれている指定されたプログラマブルな限界値がハードウェアによりサポートされているものかどうかを決定する。書き込まれた値が高い方の例外レベル状態のプログラマブルな限界値と決して相反しないように、追加のチェック（図示せず）が遂行される。
【００２３】
ステップ４４でデコードされた命令により書き込まれているプログラマブルな限界値がハードウェア（およびソフトウェアにより制御される構成）によりサポートされている場合、ステップ４８は、指定されたプログラマブルな限界値を当該の状態構成レジスタに書き込む働きをする。書き込まれるプログラマブルな限界値が、ステップ４６により、ハードウェアによりサポートされていないと決定される場合、処理は、ステップ５０を経て進み、丸められたプログラマブルな限界値が、その代わりとして、当該のハードウェア実装によりサポートされている次に低い値に丸められて、状態構成値に書き込まれる。
【００２４】
図８は、ベクトル被演算子ビットサイズが増大されるときの処理システムの挙動を概略的に例示する。プログラマブルな限界値の使用により、ソフトウェアは、使用中にベクトル被演算子ビットサイズを動的に変更し得ることが理解されるであろう。このような変更は、システムに対して著しい動作上の影響を有する場合があり、このことは、最下層の例外レベル状態がそれ自身のベクトル被演算子ビットサイズを制御することが許容されない１つの理由であり、これにより、典型的にこの最下層の例外レベル状態で実行されるアプリケーションプログラムが望ましくない挙動を引き起こすのを回避する。
【００２５】
（プログラマブルな限界値の変更、またはより大きいベクトル被演算子ビットサイズの使用を許容する例外レベル状態における動作への例外レベル状態の変更に対する応答などに対して、）ベクトル被演算子ビットサイズが増大されるとき、ベクトル被演算子の新たにアクセス可能になった部分５２が、ベクトル処理命令により使用可能になる。処理システム２の確定的挙動を提供するのを助けるために、処理システム２は、このようなベクトル被演算子ビットサイズの増大に対して、ベクトル被演算子の新たにアクセス可能になった部分内の値をゼロにすることにより、あるいは新たにアクセス可能になった部分内の値が、新たにアクセス可能になった部分が最後に使用可能であったときに有していた状態で必ず保持されているようにすることにより、応答する。
【００２６】
図９は、使用され得る仮想マシン実装を例示する。上述の実施形態は、本発明を、当該技法をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して実装しているものの、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートするホストオペレーティングシステム５２０を動かすホストプロセッサ５３０上で動く。典型的に、妥当な速度で実行される仮想マシン実装を提供するには大型の強力なプロセッサが必要とされるが、このようなアプローチは、別のプロセッサのネイティブコードを互換性または再利用のために動かしたいというニーズが存在するときなど、特定の状況下において正当化され得る。仮想マシンプログラム５１０は、仮想マシンプログラム５１０により具現化されているデバイスである現実のハードウェアにより提供されるであろうアプリケーションプログラミングインターフェースと同じアプリケーションプログラミングインターフェースを、アプリケーションプログラム５００に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンプログラム５１０を使用してプログラム命令と仮想マシンハードウェアとの相互作用を具現化するアプリケーションプログラム５００内から実行することができる。
【００２７】
本明細書では添付図面を参照しながら本発明の例示的な実施形態を詳細に説明してきたものの、本発明は厳密なそれらの実施形態には限定されないこと、ならびにそれらの実施形態に対する様々な変更、追加、および修正が、添付請求項により定義される本発明の範囲および趣旨から逸脱することなしに、当業者により行われ得ることが理解されるべきである。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなしに、独立請求項の特徴と様々に組み合わせることができる。
【図１】
2018521421.tif 000003
【図２】
2018521421.tif 000004
【図３】
2018521421.tif 000005
【図４】
2018521421.tif 000006
【図５】
2018521421.tif 000007
【図６Ａ】
2018521421.tif 000008
【図６Ｂ】
2018521421.tif 000009
【図７】
2018521421.tif 000010
【図８】
2018521421.tif 000011
【図９】
2018521421.tif 000012
【国際調査報告】
2018521421.tif 000013
2018521421.tif 000014