(57)【要約】データ処理システム２は、データ値の少なくとも１つの条件付きロードを実施するベクトルロード命令の非投機的実行をサポートする。障害検出回路２６は、条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出するよう働く。条件付きロード抑制回路２８は、アーキテクチャ状態の望ましくない変化（望ましくない副作用）をもたらすおそれがある、所定の基準に一致する障害のない条件付きロードを検出し、抑制する。このような所定の基準の例は、条件付きロードが非メモリデバイスへのものであること、または、条件付きロードが停止デバッグ停止モードへの移行もしくはデバッグ例外のトリガなどの診断応答をトリガするであろうこと、である。
2018527657.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
ベクトルロード命令の非投機的実行に応答する、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施するためのベクトルロード回路と、
前記条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出するための障害検出回路と、
所定の基準に一致する障害のない条件付きロードを検出し抑制するための条件付きロード抑制回路と、
を備えた、装置。
【請求項２】
前記所定の基準が、前記データ値の前記ベクトルレジスタの前記要素への障害のないロードを超える前記装置の状態の変化をもたらす能力を表す、請求項１に記載の装置。
【請求項３】
前記ベクトルロード回路が、無条件のロードと複数の条件付きロードとを含む複数のロードを実施するように、前記ベクトルロード命令に応答する、請求項１及び２のいずれか一項に記載の装置。
【請求項４】
前記ベクトルロード回路が、複数の条件付きロードを実施するように、前記ベクトルロード命令に応答する、請求項１及び２のいずれか一項に記載の装置。
【請求項５】
前記無条件のロードが前記所定の基準を有するかどうかにかかわらず、前記無条件のロードが、メモリアドレスからデータ値をロードすることを許可されている、請求項３に記載の装置。
【請求項６】
前記所定の基準が、前記障害のない条件付きロードの前記メモリアドレスが１つ以上の非メモリデバイスと通信するために割り当てられていること、である、請求項１〜５のいずれか一項に記載の装置。
【請求項７】
診断動作を実施するための診断回路を備え、前記所定の基準が、前記障害のない条件付きロードの前記メモリアドレスが前記診断動作をトリガするように設定されたアドレスに一致すること、かつ、前記障害のない条件付きロードの抑制が前記診断動作のトリガを抑制すること、である、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
前記診断動作をトリガするように設定された前記アドレスが、診断ウォッチポイントアドレスである、請求項７に記載の装置。
【請求項９】
前記診断動作が、停止デバッグモードに入ることと、デバッグ例外をトリガすることと、のうちの１つである、請求項７及び８のいずれか一項に記載の装置。
【請求項１０】
前記条件付きロード抑制回路が、前記条件付きロード抑制回路による、前記診断動作をトリガする前記条件付きの障害のないロードの抑制を阻止するように、１つ以上のユーザがプログラム可能な診断オーバーライドフラグに応答する、請求項７、８、及び９のいずれか一項に記載の装置。
【請求項１１】
前記１つ以上のユーザがプログラム可能な診断オーバーライドフラグが、複数のウォッチポイントのそれぞれにあてはまるグローバルフラグと、それぞれの個別ウォッチポイントにあてはまる複数の個別フラグと、のうちの１つとして設定される、請求項１０に記載の装置。
【請求項１２】
データを処理するための装置であって、
ベクトルロード命令の非投機的実行に応答する、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施するためのベクトルロード手段と、
前記条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出するための障害検出手段と、
前記ベクトルロード手段と前記障害検出手段とに連結された、所定の基準に一致する障害のない条件付きロードを検出し抑制するための条件付きロード抑制手段と、
を備えた、装置。
【請求項１３】
データを処理する方法であって、
ベクトルロード命令の非投機的実行に応答して、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施することと、
前記条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出することと、
所定の基準に一致する障害のない条件付きロードを検出し抑制することと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より具体的には、本開示は、１つ以上の条件付きロード動作を実施するベクトルロード命令をサポートするデータ処理システムに関する。
【背景技術】
【０００２】
複数のベクトル要素をメモリからベクトルレジスタ内のそれぞれの要素にロードするベクトルロード命令をサポートするデータ処理システムを提供することが知られている。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
ベクトルロード命令の非投機的実行に応答する、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施するためのベクトルロード回路と、
その条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出するための障害検出回路と、
所定の基準に一致する障害のない条件付きロードを検出し抑制するための条件付きロード抑制回路と、
を備えた、装置、を提供する。
【０００４】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
ベクトルロード命令の非投機的実行に応答する、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施するためのベクトルロード手段と、
その条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出するための障害検出手段と、
そのベクトルロード手段とその障害検出手段とに連結された、所定の基準に一致する障害のない条件付きロードを検出し抑制するための条件付きロード抑制手段と、
を備えた、装置、を提供する。
【０００５】
本開示の少なくとも一部の実施形態は、データを処理する方法であって、
ベクトルロード命令の非投機的実行に応答して、メモリのメモリアドレス位置から読み出されるデータ値の、ベクトルレジスタの要素への、少なくとも１つの条件付きロードを実施することと、
その条件付きロードが、障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出することと、
所定の基準に一致する障害のない条件付きロードを検出し抑制することと、
を含む、方法、を提供する。
【０００６】
これより、添付図面を参照しながら、例としてのみ、例示的な実施形態を説明する。
【図面の簡単な説明】
【０００７】
【図１】障害検出回路及び条件付きロード抑制回路により制御されるベクトルロード命令をサポートするデータ処理システムを概略的に示す。
【図２】ベクトルロード命令を概略的に示す。
【図３】第１障害レジスタの形での述語値を概略的に示す。
【図４】障害または望ましくない副作用を有する条件付きロードの抑制を概略的に示すフロー図。
【発明を実施するための形態】
【０００８】
図１は、操作されるべきデータ値８とプロセッサ４の動作を制御するためのプログラム命令１０との両方を記憶するメインメモリ６に連結されたプロセッサ４を含むデータ処理システム２を概略的に示す。プロセッサ４には、システムのメモリアドレス空間内のメモリアドレスにマッピングされる非メモリデバイス１４との通信を提供するためのデバイスメモリ入出力ユニット１２も、連結されている。非メモリデバイス１４は、例えば、キーボード、ディスプレイ、センサ、アクチュエータなどのデバイスであり得る。
【０００９】
プログラム命令は、命令フェッチ回路１６によりメインメモリ６からフェッチされ、命令デコーダ回路１８に供給される。命令デコーダ回路１８は、デコードされた命令により指定される処理動作を実施するようにプロセッサ４の他の要素を制御する働きをする制御信号２０を生成する。プロセッサ４は、ベクトルレジスタ２２内に記憶され、ベクトル処理回路２４により実施されるベクトルオペランドに対するベクトル処理動作をサポートする。ベクトルオペランドは、所与のサイズの複数のベクトル要素を含む。プロセッサ４によりサポートされる命令には、メモリアドレスからフィードされたデータ値の少なくとも１つの条件付きロードを実施するために非投機的に実行され得るベクトルロード命令が含まれる。このようなベクトルロード命令は、ベクトルロード命令の実行が、プログラミングモデルに対して明示的であり、プログラマーに対して表され、プログラマーが観察可能なプロセッサのアーキテクチャ状態の変化を表すという意味で、非投機的に実行される。このような方法で非投機的に実行されるベクトルロード命令は、データ値の少なくとも１つの条件付きロードを実施する場合があり、すなわち、データ値のそのロードは、要素ロードのそれぞれの条件付き挙動を制御する条件に応じて、実施される場合もあり、実施されない場合もある。
【００１０】
ベクトルロード命令の一部をなすこのような条件付きロードが実施されるか否かの主要な確定は、条件付きロードが障害を発生させる条件付きロードであるか、それとも障害のない条件付きロードであるかを検出する働きをする障害検出回路２６の動作により提供される。メモリ障害は、いくつかの理由から発生し得る。このような理由の例には、メモリ管理ユニット（ＭＭＵ）内のパーミッションデータにより管理されるものなどのパーミッションの障害、及び／またはアドレス変換ルックアサイドアサイドバッファにより提供されるアドレス変換の障害がある。無条件のロードに関するメモリアクセス障害は、メモリ例外処理ルーチンの実行などのメモリ例外をトリガする。条件付きロードの場合、その条件付きロードによりロードされるデータ値は実際には必要とされない、例えば、少なくとも１つの条件付きロードを含むベクトルロード命令は実際には消費されることがないデータをフェッチしている場合があるため、このようなメモリ障害をトリガすることの性能上のペナルティは、正当化されない場合がある。障害を発生させる条件付きロードは、障害検出回路２６により抑制され、メモリ障害応答が必要にならないように、実施されないかもしれない。
【００１１】
プロセッサ４は、１つ以上の所定の基準に一致する障害のない条件付きロードを検出し抑制する働きをする条件付きロード抑制回路２８をさらに含む。このような障害のない条件付きロードは、障害検出回路２６により実施されたときに障害検出に合格するものであるが、それにもかかわらず、抑制するのが望ましい場合がある。障害のない条件付きロードを抑制する１つの理由は、障害のない条件付きロードによりロードされるデータ値は、実際にはそもそものプログラムフローにロードされる必要がない場合があるため、それらが、データ処理システム２の（プログラマーに見える）アーキテクチャ状態の望ましくない変化を不適切な様式でトリガし得るということである。したがって、障害検出回路２６は、障害のない条件付きロードを特定し、条件付きロード抑制回路２８は、所定の基準に一致するいかなるそのような障害のない条件付きロードも抑制する働きをする。それゆえに、ベクトルロード回路３０は、障害検出回路２６または条件付きロード抑制回路２８によるこのような条件付きロードの抑制を条件として、少なくとも１つの、データ値８のメインメモリ６からの条件付きロードを実施するベクトルロード命令を非投機的に実行するように制御される。述語第１障害レジスタ３２は、障害検出回路２６及び条件付きロード抑制回路２８により制御されるときにベクトルロード命令のどのロードが実施され、どのロードが実施されなかったのかを表す述語値を記憶する働きをする。
【００１２】
障害のない条件付きロードが抑制されるか否かを制御するための、条件付きロード抑制回路２８により検出される所定の基準は、様々な異なる形式をとり得る。このような所定の基準の１つの例示的な形式は、障害のない条件付きロードが、デバイスメモリ入出力ユニット１２を介して１つ以上の非メモリデバイス１４と通信するためにメモリアドレス空間内に割り当てられたアドレスへのものであること、である。非メモリデバイス１４からのロードは、本来のプログラムフローの一部として必要ではない場合がある条件付きロードに関して不適切である、データ処理システム２の状態についての望ましくない変化をトリガするおそれがある。一例として、プログラム実行のループは、ループの実行中に使用されることになると予想されるデータ値を先取りするために用いられているベクトルロード命令を使用して、追従される場合がある。しかしながら、このようなループは、それらのデータ値が必要とされる前に終了する場合があり、それゆえに、それらのデータ値の条件付きロードは、実際に追従されているプログラムフローに対して不適切な、データ処理システム２のアーキテクチャ状態の変化をトリガしてしまっている場合がある。
【００１３】
条件付きロード抑制回路２８により検出することができる所定の基準の別の例は、障害のない条件付きロードが、障害のない条件付きロードが実施される場合に診断動作をトリガするように診断回路３２によりウォッチポイントとして監視されているメモリアドレスへのものであること、である。このような診断動作としては、例えば、実行のデバッグ停止をトリガすること、または診断例外処理が開始されるように診断例外を実行すること、が挙げられる。これらの診断応答は両方とも、障害のない条件付きロードが追従されるべき本来のプログラムフローの一部ではない場合、不適切であり、それゆえに、このようなロードは、条件付きロード抑制回路２８により特定され抑制されてもよい。
【００１４】
診断回路３２は、監視されているウォッチポイントアドレスを記憶するレジスタを含む。ユーザがプログラム可能な診断オーバーライドフラグ（グローバルまたはウォッチポイント毎のいずれか）は、診断動作をトリガする障害のない条件付きロードの条件付きロード抑制回路２８による抑制を阻止するように、診断回路及び条件付きロード抑制回路２８を制御することができる。一部の状況下では、診断回路３２を使用して調査される必要があるシステムの挙動は、障害のない条件付きロードの実行に関連している場合があり、それゆえに、たとえこれらがその性質上条件付きであり、プログラマーによりそもそも記載されたプログラムフローの一部ではない場合があるとしても、これらは、診断動作を引き起こすことを許可されるべきである。メインメモリ６からのデータ値の少なくとも１つの条件付きロードを実施するためのベクトルロード命令の非投機的実行は、条件付きロードの結果をベクトルレジスタ２２内のベクトルの要素内に記憶する働きをし、それに応じて、データ処理システム２の状態に対して、アーキテクチャ上の、かつプログラム可能な目に見える変更を行い、すなわち、条件付きロードの宛先であるベクトルレジスタの内容は、実際はプログラムフローの一部として必要とされない／消費されない場合がある、条件付きでロードされたデータ値により更新される。
【００１５】
図２は、４つのベクトル要素ａ０、ａ１、ａ２、ａ３に関するベクトルロード命令を概略的に示す。第１のベクトル要素ａ０は、ベクトルロード命令が非投機的に実行されている場合、プログラムフローは、少なくともその第１のベクトル要素ａ０がロードされることを必要とする、という無条件のロードを受けるかもしれない。次に続く３つのベクトル要素は、障害検出回路２６及び条件付きロード抑制回路２８により抑制され得る種類の条件付きベクトルロードを受ける。ベクトル要素ａ０の無条件のロードは、障害応答をトリガするであろう、パーミッションフォールドなどの障害を引き起こす場合があり、このような障害応答は、追従されているプログラムフローの正規の部分であるため、発生することを許可されるべきであることが理解されるであろう。
【００１６】
図２に示されるように、ベクトルロードの一部をなす条件付きロードは、関連付けられた数字を有する。しかしながら、これらの数字は、特定の実装により物理レベルで実施されるロードの実際の順序を必ずしも適用せず、むしろ、これらは、プログラマーにより指定された初期の順序を表す。
【００１７】
図２は、第１のロードが無条件のロードであるベクトルロード命令を概略的に示す。ベクトルロード命令のロードの全てのロードが条件付きロードであるベクトルロード命令と共に本技術を利用することも可能である。
【００１８】
図３は、２つの状況における、ベクトルロード命令の非投機的実行に応答した、述語第１障害レジスタ３２の内容を概略的に示す。状況ａ）では、全てのベクトル要素のロードは、障害なしであり、抑制されず、それゆえに、全て実施される。これは、述語第１障害レジスタ３２内の４つのＴの値（Ｔ及びＦは、それぞれ、０及び１の予め定めるビット値、または他の方法により表すことができる）により表される。図３でｂ）として示される状況では、図２に示されるベクトル要素ａ２のロードは、障害をトリガし、それゆえに、実施されず、このことは、述語第１障害レジスタ内の対応する要素をＦに設定することにより表される。このことは、次いで、ベクトルロード命令内のより小さい数字が付された障害を発生させるロードの存在の結果として、述語第１障害レジスタ内の対応する要素をＦに設定することによって障害を発生させるとして同様にマークされる、より大きい数字が付されたベクトル要素のロードの当該ベクトルロード命令による実施を抑制する。
【００１９】
図４は、障害または望ましくない副作用のいずれかを有するベクトルロードにおける条件付きロードの抑制を概略的に示すフロー図である。処理は、ベクトルロード命令が受信されるまでステップ３４で待機する。そのベクトルロード命令が第１の無条件のロードを含む場合、それが実施されるべきか否か（例えば、それが障害なしかどうか）を決定するために別個の機構により対処される。次いで、ステップ３６は、検査のために第１の条件付きロードアドレスを選択する。図２に示されるベクトルロード命令の場合、これは、ベクトル要素ａ１へのロードのアドレスであろう。次いで、ステップ３８は、選択されたアドレスが障害を発生させるアドレスであるか否か、例えば、パーミッション検査に失敗するか否か、または変換に失敗するか否かを決定する。アドレスが障害を発生させるものである場合、処理は、そのアドレス／ロードが述語第１障害レジスタ３２（ロード前に別個の命令により全て真の値に初期化されている）内で障害ありとしてマークされ、より大きい数字が付された全ての後続のロードも障害ありとしてマークされる、ステップ４０に進む。次いで、処理は、終了する。図４の動作は条件付きロードがどのように検出され、障害ありとしてマークされ得るかを示すことが理解されるであろう。実際は、このような検出及びマーキングは、それらのロードが実行されるのと同時に実施されてもよい。
【００２０】
ステップ３８での決定が、選択されたロードアドレスは障害を発生させるものではない、というものである場合、処理は、ロードアドレスが非メモリデバイスにマッピングされているか否かについて決定がなされる（メモリアドレスがメモリがマッピングされた非メモリデバイスに対応するか否かについての照合）、ステップ４２に進む。ロードアドレスがそのような非メモリデバイスへのものである場合、処理は、再びステップ４０に移行する。ステップ４２での決定が、選択されたロードアドレスは非メモリデバイスへのものではない、というものである場合、処理は、選択されたロードアドレスは万一ロードが行われた場合ウォッチポイントをトリガするであろうか否かについて決定がなされる、ステップ４４に進む。選択されたロードアドレスがウォッチポイントをトリガするであろう場合、ステップ４６は、オーバーライドフラグがこのようなウォッチポイントに関して設定されるか否かを決定する。プログラム可能な診断オーバーライドフラグは、設定される全てのウォッチポイントに適用される単一のグローバルフラグによりグローバルに、またはそれぞれの個別ウォッチポイントに適用される個別フラグにより個別に、設定され得る。望む場合、オーバーライドフラグとそれぞれのウォッチポイントとの間の様々なマッピングを含む他の取り決めを提供することもできる。ステップ４６での決定が、トリガされるであろうウォッチポイントに関するオーバーライドフラグが設定されない、というものである場合、処理は、再びステップ４０に進む。
【００２１】
ステップ４４での決定が、ロードアドレスはウォッチポイントをトリガしないであろう、というものであるか、またはステップ４６での決定が、潜在的にトリガされるウォッチポイントに関してオーバーライドフラグが設定される、というものである場合、処理は、選択されたロードアドレスからベクトルレジスタの選択された要素へのベクトル要素のロードが実施される、ステップ４８に進む。次いで、ステップ５０は、ベクトルロード内の最後のロードアドレスが現在選択されているロードアドレスであるか否かを決定する。最後のロードアドレスが現在選択されているアドレスではない場合、ステップ５２が、次のロードアドレスを検査のために選択する働きをし、処理は、ステップ３８に戻る。現在選択されているアドレスが最後のロードアドレスである場合、処理は、終了する。
【００２２】
上述の例示的な実施形態は、所定の基準が、条件付きロードが非メモリデバイスへのものであること、または条件付きロードが停止デバッグモードへの移行またはデバッグ例外のトリガなどの診断動作をトリガすることになること、であるものである。条件付きロード抑制回路により検出される所定の基準は他の形式をとることができることが理解されるであろう。このような他の形式の所定の基準は、データ値のベクトルレジスタの要素への障害のないロードを超えるプロセッサの状態の変化をもたらすそのロードの能力を表してもよい。データ値のベクトルレジスタ内の要素への障害のないロードは、最終的に追従されるプログラムフローにより実際には必要とされない状態の変化をもたらす場合があるが、これは、データ値のそのようなベクトル要素への１つ以上の条件付きロードを実施するベクトルロード命令の非投機的実行の結果としてプログラミングモデル内で理解及び予期されているものである。
【００２３】
本明細書では特定の実施形態を説明してきたが、本発明はそれらに限定されないこと、及びそれらに対する多くの変更及び追加を本発明の範囲内で行うことができることが、理解されるであろう。例えば、以下の従属請求項の特徴の様々な組み合わせが独立請求項の特徴とで、本発明の範囲から逸脱することなしに行うことができる。
【図１】
2018527657.tif 000003
【図２】
2018527657.tif 000004
【図３】
2018527657.tif 000005
【図４】
2018527657.tif 000006
【国際調査報告】
2018527657.tif 000007
2018527657.tif 000008