(57)【要約】  ０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うために、データ処理装置が提供される。本装置は、下限及び上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶する記憶回路を含む。上記下限及び上記上限の最上位ｍ−ｑ−ｅビットが上記値の最上位ｍ−ｑ−ｅビットに等しい。調整回路が圧縮形式の下限及び上限に調整を行い、そして境界比較回路が圧縮形式の下限及び上限を使用して値に対して判定を行う。【特許請求の範囲】
【請求項１】
０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、
前記下限及び前記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶する記憶回路であり、前記下限及び前記上限の最上位ｍ−ｑ−ｅビットが前記値の最上位ｍ−ｑ−ｅビットに等しい記憶回路と、
圧縮形式の前記下限及び前記上限に調整を行う調整回路と、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行う境界比較回路と、
を備えるデータ処理装置。
【請求項２】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出される、
請求項１に記載のデータ処理装置。
【請求項３】
前記境界比較回路が、前記値、前記下限及び前記上限の（ｑ＋１）ビットで境界ラッピングを使用して前記判定を行う、
請求項１に記載のデータ処理装置。
【請求項４】
前記調整回路が、前記指数に基づいて前記値を右シフトし、次いで最下位ｑビットを取ることによって前記値の仮数を決定するように構成される、
請求項１に記載のデータ処理装置。
【請求項５】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの２ｑ＋ｅ以内であるかどうかの判定に応じて前記調整のうちの１つ又は複数を行うように構成される、
請求項４に記載のデータ処理装置。
【請求項６】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの２ｑ＋ｅ以内であるように前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも１つをインクリメント又はデクリメントするように構成される、
請求項４に記載のデータ処理装置。
【請求項７】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも１つを２ｑ＋ｅだけインクリメント又はデクリメントするように構成される、
請求項６に記載のデータ処理装置。
【請求項８】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの２ｑ＋ｅ以内であるように前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも１つをインクリメントするように構成される、
請求項４に記載のデータ処理装置。
【請求項９】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも１つに連結を行うことによって前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも１つをインクリメントするように構成される、
請求項６に記載のデータ処理装置。
【請求項１０】
前記連結が最上位桁における値「１」の連結であり、そのため前記連結が、２ｑ＋ｅを加算することと同等である、
請求項９に記載のデータ処理装置。
【請求項１１】
前記判定が、前記下限の前記仮数より小さい代表値で始まる２ｑ＋ｅの連続値のウィンドウを考えることによってなされる、
請求項５に記載のデータ処理装置。
【請求項１２】
前記代表値が前記下限の前記仮数から２１２を減算したものに等しい、
請求項１１に記載のデータ処理装置。
【請求項１３】
前記調整回路が、前記値の前記仮数が前記代表値より小さいことに応じて前記値の前記仮数の最上位ビットに「１」を連結するように構成される、
請求項１１に記載のデータ処理装置。
【請求項１４】
前記調整回路が、前記上限の前記仮数が前記代表値より小さいことに応じて前記上限の前記仮数の最上位ビットに「１」を連結するように構成される、
請求項１１に記載のデータ処理装置。
【請求項１５】
前記調整回路が、前記下限の前記仮数が前記代表値より小さいことに応じて前記下限の前記仮数の最上位ビットに「１」を連結するように構成される、
請求項１１に記載のデータ処理装置。
【請求項１６】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出され、
前記調整回路が、前記ベース及び前記オフセットを合算する前記最下位（ｅ−１）ビットが桁上げを生成することに応じて前記値の前記仮数を１だけインクリメントするように構成される、
請求項４に記載のデータ処理装置。
【請求項１７】
前記境界比較回路が、
１つ又は複数のエッジ・ケース条件に応じて前記値が前記境界から外れることを示すエッジ・ケース回路と、
前記調整が行われた後に前記値の前記仮数が前記下限の前記仮数より小さい又は前記上限の前記仮数より大きいことに基づいて前記値が前記境界内に収まるかどうかを示す仮数比較回路と、
を備える、
請求項１に記載のデータ処理装置。
【請求項１８】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出され、
前記エッジ・ケース条件が、前記オフセットの最上位（ｍ−ｅ−ｑ）ビットが少なくとも１つの「１」及び少なくとも１つの「０」を含むという条件を含む、
請求項１７に記載のデータ処理装置。
【請求項１９】
前記データ処理装置が２つ以下のプロセッサ・サイクルで動作する、
請求項１に記載のデータ処理装置。
【請求項２０】
前記値、前記下限及び前記上限がメモリにおけるアドレスへのポインタである、
請求項１に記載のデータ処理装置。
【請求項２１】
０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、
前記下限及び前記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶することであり、前記下限及び前記上限の最上位ｍ−ｑ−ｅビットが前記値の最上位ｍ−ｑ−ｅビットに等しい、記憶することと、
圧縮形式の前記下限及び前記上限に調整を行うことと、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行うことと、を含む方法。
【請求項２２】
０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、
前記下限及び前記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶するための手段であり、前記下限及び前記上限の最上位ｍ−ｑ−ｅビットが前記値の最上位ｍ−ｑ−ｅビットに等しい、手段と、
圧縮形式の前記下限及び前記上限に調整を行うための手段と、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行うための手段と、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、範囲検査に関する。単に例として、本開示は、メモリ範囲検査に関連するものであり得る。
【背景技術】
【０００２】
しばしば、１つの値が下限及び上限によって定められる境界内にあるかどうかを判定することが望ましい。例えば、メモリ・システムでは、メモリは幾つかの領域へ分割されることができ、異なるプロセスが特定のメモリ領域を「所有する」。安全性のために、しばしば、非所有プロセスが別のプロセスによって所有されるよりメモリ領域にアクセスするのを防止することが望ましい。これを行うため、メモリにアクセスする試みは、同アクセスが現在実行中のプロセスに属するメモリ・アクセス領域内であるかどうかを検査するために、範囲検査されるべきである。メモリ・システムが大きくなるにつれて、メモリ・アドレスのサイズも増える。これは、したがって、アクセスされることになるメモリ位置だけでなく、メモリ領域の下限及びメモリ領域の上限も表現するために必要とされるビット数を増加させる。これは次いで、回路サイズ及びしたがって電力消費を増加させる。更には、そのような多数のビットを比較することで時間がかかるようになる。したがって、より少ない時間で且つ理想的にはより小さな回路を使用してそのような判定を行うことが望ましいであろう。
【発明の概要】
【課題を解決するための手段】
【０００３】
第１の実例構成から見ると、０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、上記下限及び上記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶する記憶回路であり、上記下限及び上記上限の最上位ｍ−ｑ−ｅビットが上記値の最上位ｍ−ｑ−ｅビットに等しい記憶回路と、圧縮形式の上記下限及び上記上限に調整を行う調整回路と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行う境界比較回路とを備えるデータ処理装置が提供される。
【０００４】
第２の実例構成から見ると、０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、上記下限及び上記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶することであり、上記下限及び上記上限の最上位ｍ−ｑ−ｅビットが上記値の最上位ｍ−ｑ−ｅビットに等しい、記憶することと、圧縮形式の上記下限及び上記上限に調整を行うことと、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行うこととを含む方法が提供される。
【０００５】
第３の実例構成から見ると、０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、上記下限及び上記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶するための手段であり、上記下限及び上記上限の最上位ｍ−ｑ−ｅビットが上記値の最上位ｍ−ｑ−ｅビットに等しい、手段と、圧縮形式の上記下限及び上記上限に調整を行うための手段と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行うための手段とを含む方法が提供される。
【０００６】
本発明は、添付図面に例示されたその実施例を参照して、単に例として更に記載される。
【図面の簡単な説明】
【０００７】
【図１】一実施例に従ってデータ処理装置を例示する図である。
【図２】一実施例に従ってファット・ポインタの実例を例示する図である。
【図３】上仮数（ｕｐｐｅｒｍ）と下仮数（ｌｏｗｅｒｍ）とベース／ポインタ仮数（ｐｔｒｍ）との間の関係を示す図である。
【図４Ａ】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
【図４Ｂ】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
【図４Ｃ】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
【図５】一実施例に従って仮数を修正する解決実例を示す図である。
【図６】一実施例に従って本技術を行うための実例回路の概略図である。
【図７】一実施例に従って境界比較回路に提供される前の仮数値を調整する際の調整回路の挙動を例示するフローチャートである。
【図８】実例実施例に従ってデータ処理装置を動作させる方法を例示するフローチャートである。
【発明を実施するための形態】
【０００８】
添付の図を参照しつつ実施例について述べる前に、実施例の以下の説明が提供される。
【０００９】
１つの実例構成に従って、０と２ｍとの間の下限及び０と２ｍとの間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、上記下限及び上記上限の各々をｑ＜ｍビットの仮数及び共有指数ｅとして圧縮形式で記憶する記憶回路であり、上記下限及び上記上限の最上位ｍ−ｑ−ｅビットが上記値の最上位ｍ−ｑ−ｅビットに等しい記憶回路と、圧縮形式の上記下限及び上記上限に調整を行う調整回路と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行う境界比較回路とを備えるデータ処理装置が提供される。
【００１０】
上記に従って、下限及び上限の各々は圧縮形式で記憶される。このように、下限及び上限は、ｑビット（ここでｑはｍより小さい）から構成される仮数として表現される。下限及び上限は指数ｅも共有し、それはゼロ以上の整数である。結果的に、下限は２ｅが乗算された下限に対する仮数の値と一致し、そして上限は２ｅが乗算された上限の仮数と一致する。各場合、２ｅによる乗算を行った後に、ポインタの上位の（ｍ−ｑ−ｅ）ビットが加えられて、サイズｍ（例えば６４）の完全な上限及び下限を生成する。これは、例えば、下限及び上限の各々が２０ビットの仮数として表現される並びに下限及び上限の各々が単一の５ビット指数を共有するのを可能にする。対照的に、典型的な６４ビット・システムでは、上限及び下限の各々は６４ビットの記憶域を各々必要としてもよく、合計１２８ビットとなる。調整回路は、圧縮形式である間に下限及び上限に調整を行う。調整の結果は次いで、下限及び上限によって定められる境界内に値が収まるかどうかの判定を行う境界比較回路に渡される。この判定は、下限又は上限を展開又は拡大することなく行われる。結果的に、判定を行う回路は、他のシステムより迅速に且つ潜在的に少ない部品を使用して（それによって電力消費を削減して）動作することができる。
【００１１】
一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出される。結果的に、値はベース及びオフセットから構成されてもよい。各々同じベース番号から始まる幾つかの異なる比較を行うために、オフセットは幾つかの繰返しを通じて変化され得る。オフセットが負であり得ることに留意されたい。この場合、値はそれでも、ベース及びオフセットを合算することによって導出されてもよい。しかしながら、当業者は、これがベースからオフセットを減算することと数学的に同じであることを認識するであろう。一部の実施例において、記憶回路はオフセットも記憶し得る。オフセットはベースとは別に記憶されてもよい。例えば、１つのレジスタがベースを記憶し得、そして別のレジスタがオフセットを記憶し得る。
【００１２】
一部の実施例において、上記境界比較回路は、上記値、上記下限及び上記上限の（ｑ＋１）ビットで境界ラッピング（boundary wrapping)を使用して上記判定を行う。境界ラッピングは、値のウィンドウが考慮される技術である。比較されることになる値の各々がそのウィンドウ内に収まるとすれば、たとえ値自体がそれらの値を構成するビットの全集合の部分集合だけを使用するウィンドウへ投入されても、それらの値間の相対比較を行うことが可能である。値の１つ又は複数がウィンドウから外れれば、値は、それらがその相対順序を維持しつつ全てウィンドウ内に収まるように調整されることができる。このように、必ずしもそれらの値を構成するビットの全集合を考慮することなく値の各々を比較し、それでも境界チェックの正しい評価をもたらすことが可能である。
【００１３】
一部の実施例において、上記調整回路は、上記指数に基づいて上記値を右シフトし、次いで最下位ｑビットを取ることによって上記値の仮数を決定するように構成される。調整回路は、第１に指数に基づいて値を右シフトすることによって値の仮数を決定する。これをしてから、ライトシフトの結果からの最下位ｑビットが仮数として取られる。それに応じて、値の仮数は下限及び上限の仮数と同じビット数を有することになる。一部の実施例において、指数に等しい回数右シフトすることによって、初めに値の仮数が生成される。結果的に、調整回路によって発生される値の仮数は下限及び上限の仮数と整列していることになる。
【００１４】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの２ｑ＋ｅ以内であるかどうかの判定に応じて上記調整のうちの１つ又は複数を行うように構成される。調整は、したがって、下限の仮数、上限の仮数及び値の仮数のうちの最小のものが値２ｑ＋ｅに加算されると下限の仮数、上限の仮数及び値の仮数のうちの最大のものより大きいかどうかに依存してもよい。言い換えれば、下限の仮数、上限の仮数及び値の仮数の各々を含むサイズ２ｑ＋ｅのウィンドウが存在する。
【００１５】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの２ｑ＋ｅ以内であるように上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも１つをインクリメント又はデクリメントするように構成される。調整回路によって行われる調整は、下限の仮数、上限の仮数及び値の仮数のいずれかをインクリメント又はデクリメントすることを伴ってもよい。一旦調整が行われると、下限の仮数、上限の仮数及び値の仮数の各々はサイズ２ｑ＋ｅのウィンドウ内に収まることになる。
【００１６】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも１つを２ｑ＋ｅだけインクリメント又はデクリメントするように構成される。調整回路が下限の仮数、上限の仮数及び値の仮数のいずれかをインクリメント又はデクリメントする値は２ｑ＋ｅに等しくてもよい。一部の実施例において、インクリメント又はデクリメントが発生する値は、調整回路によって実施される調整の全てに対して同じであるであろう。
【００１７】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの２ｑ＋ｅ以内であるように上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも１つをインクリメントするように構成される。結果的に、そのような実施例において、下限の仮数、上限の仮数及び値の仮数をサイズ２ｑ＋ｅのウィンドウ内に至らせるために調整回路によって行われる唯一の調整はインクリメント演算である。言い換えれば、これらの仮数のいずれもデクリメントされない。用語インクリメントが数学的加算演算が行われることを要求する必要はなく、特に、一部の実施例において、上記調整回路が、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも１つに連結を行うことによって上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも１つをインクリメントするように構成されることに留意されたい。このように、連結演算を行うことによって効果的な加算が行われる。連結演算は、演算を行うために複雑な加算回路の使用を必要とすることがある厳密な加算演算より容易に且つ／又は迅速に行われてもよい。それに応じて、厳密な加算演算よりむしろ連結演算を行うことによって、調整回路によって行われる調整は、より迅速に進行してもよく、より少ない回路を使用してもよく、そしてより低い電力消費を呈してもよい。
【００１８】
一部の実施例において、上記連結は最上位桁における値「１」の連結であり、そのため上記連結は２ｑ＋ｅを加算することと同等である。
【００１９】
一部の実施例において、上記判定は、上記下限の上記仮数より小さい代表値で始まる２ｑ＋ｅの連続値のウィンドウを考えることによってなされる。下限、値及び上限（又はそれらの値の仮数）の相対位置を評価するために使用されてもよい上述したウィンドウは、代表値によって定義されてもよい。代表値は、それが下限の仮数より小さいように設定される。例えば、一部の実施例において、上記代表値は上記下限の上記仮数から２１２を減算したものに等しい。
【００２０】
一部の実施例において、上記調整回路は、上記値の上記仮数が上記代表値より小さいことに応じて上記値の上記仮数の最上位ビットに「１」を連結するように構成される。調整回路によって行われる調整は、したがって、値の仮数の最上位ビットに「１」を連結することを伴ってもよい。「１」の連結は、値の仮数に値２ｑ＋ｅを加算する効果を有する。これは、値の仮数が同じ２ｑ＋ｅウィンドウ内に収まるようにそれを調整するために使用されることができる。
【００２１】
一部の実施例において、上記調整回路は、上記上限の上記仮数が上記代表値より小さいことに応じて上記上限の上記仮数の最上位ビットに「１」を連結するように構成される。再び、最上位ビットへの「１」の連結は、上限に２ｑ＋ｅの値を加算することと同等である。結果的に、上限は、それがサイズ２ｑ＋ｅの同じウィンドウ内に収まるように調整されることができる。
【００２２】
一部の実施例において、上記調整回路は、上記下限の上記仮数が上記代表値より小さいことに応じて上記下限の上記仮数の最上位ビットに「１」を連結するように構成される。再度、下限の仮数の最上位ビットへの「１」の連結は、下限の仮数に値２ｑ＋ｅを加算することと実際上同じであり、それによって下限の仮数をサイズ２ｑ＋ｅの同じウィンドウ内へ至らせる。
【００２３】
一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出され、上記調整回路は、上記ベース及び上記オフセットを合算する上記最下位（ｅ−１）ビットが桁上げを生成することに応じて上記値の上記仮数を１だけインクリメントするように構成される。値を生成するためにベース及びオフセットが合算されるとき（又は値の仮数を生成するためにベースの仮数及びオフセットの仮数を合算するとき）、加算は桁上げが発生する結果となることがある。これを補償するために、値の仮数は１だけインクリメントされる。
【００２４】
一部の実施例において、上記境界比較回路は、１つ又は複数のエッジ・ケース条件に応じて上記値が上記境界から外れることを示すエッジ・ケース回路と、上記調整が行われた後に上記値の上記仮数が上記下限の上記仮数より小さい又は上記上限の上記仮数より大きいことに基づいて上記値が上記境界内に収まるかどうかを示す仮数比較回路とを備える。エッジ・ケース回路は、下限及び上限との値の分析又は比較中に発生するエッジ・ケース数を表すために使用されてもよい。それに応じて、エッジ・ケース回路は、たとえ仮数比較回路が値が境界内に収まることを示しても、値が境界から外れることを示す（及び逆も同じ）ために使用されてもよい。
【００２５】
そのようなエッジ・ケース条件がどんなことでよいかの幾つかの実例がある。しかしながら、一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出され、上記エッジ・ケース条件は、上記オフセットの最上位（ｍ−ｅ−ｑ）ビットが少なくとも１つの「１」及び少なくとも１つの「０」を含むという条件を含む。オフセットの最上位（ｍ−ｅ−ｑ）ビットが少なくとも１つの「１」及び少なくとも１つの「０」を含む状況は、オフセットによりオフセットとベースの和がウィンドウサイズを超えるであろう状況を表す。それに応じて、オフセットは、境界条件が破られるように十分に大きい。
【００２６】
一部の実施例において、上記データ処理装置は２つ以下のプロセッサ・サイクルで動作する。
【００２７】
一部の実施例において、上記値、上記下限及び上記上限はメモリにおけるアドレスへのポインタである。例えば、データ処理装置はメモリ・アクセス装置の一部を形成してもよく、そして境界は、アクセスが許可されるメモリ域を表してもよい。例えば、アクセスは現在実行中のプロセスに基づいて制限されてもよい。このように、ベース及びオフセット値の和を検査して、下限及び上限によって定められる境界内に結果が収まることを保証することによって、プロセスがその許容域外のメモリ位置にアクセスしようと試みていないことを保証することが可能である。
【００２８】
特定の実施例がここで図を参照しつつ記載されることになる。
【００２９】
図１は、一実施例に従ってデータ処理装置１００を例示する。データ処理装置１００は、検査が行われることになる数を記憶するための記憶回路１１０を含む。本実施例において、整数は６４ビット数として表現される。オフセットにベースを加算することの結果として生成される値は、それが下限及び上限によって定められる境界内に収まるかどうかを判定するために検査される。しかしながら、これらの数の各々を６４ビット数として表現及び比較するよりむしろ、数の一部が、６４ビットより少なく使用して、圧縮形式で提供及び比較される。オフセットがゼロであり得、その場合システムが上下限によって定められる境界内に所与のベース値が収まると判定することに留意されたい。
【００３０】
特に、記憶回路１１０は、下限のｑ（２０）ビット仮数を記憶するための下限記憶回路１２０及び上限のｑ（２０）ビット仮数を記憶するための上限記憶回路１３０を備える。上限及び下限の各々は６ビット指数ｅを共有し、それは指数記憶回路１６０に記憶される。ベース及びオフセットは、それぞれベース記憶回路１４０及びオフセット記憶回路１５０に完全ｍ（６４）ビット数として各々記憶される。したがって、全６４ビットが記憶される場合より、下限及び上限を記憶するために必要とされるビットが少ないことが認識されるであろう。上限は｛  ｖａｌｕｅ［６３：ｎ］，ｕｐｐｅｒ［１９：０］，０...０  ｝、例えば値の上位の６３−ｎビット、上限のｑビット及びｅのゼロの連結に等しい。同様に、下限は｛  ｖａｌｕｅ［６３：ｎ］，ｌｏｗｅｒ［１９：０］，０...０  ｝、例えば値の上位の６３−ｎビット、下限のｑビット及びｅのゼロの連結に等しい。このように、下限と上限との間の最大の表現可能な差は２ｑ＋ｅである。データ処理デバイス１００は、値をこの形式で記憶し、そしてこの圧縮フォーマットの数を使用して境界検査を判定するために様々な技術を使用する。結果として、演算又は記憶される必要があるビットがより少なく、より低い記憶要件及びより速い比較となる。実際上、上下限はポインタによってアンカされる。上下限は、したがって、それらがポインタの上位のビットを共有する２（ｑ＋ｅ）区間内に収まる。このように、上下限に対する厳密な値は直接表現されないが、代わりにポインタ値から上位のビットを使用することによって導出される。
【００３１】
調整回路１７０は、境界比較回路１８０に修正値を渡す前に必要に応じて記憶値の１つ又は複数に調整を行う。調整回路１７０は、したがって、少数の下限及び上限の完全６４ビット値だけが比較されているという事実に補償を提供する。境界比較回路１８０は、下限及び上限によって定められる境界内に値が収まるかどうかを判定するために調整値を取る。境界比較回路１８０は３つの部品から構成される。仮数比較回路１９０は、境界検査の結果を判定するために、ベース、オフセット（存在すれば）、上限及び下限（調整回路１７０によって調整されたような仮数を比較するために使用される。エッジ・ケース比較回路２００は、仮数比較回路１９０が間違った結果を生成するかもしれない１つ又は複数のエッジ・ケース・シナリオを考慮する。
【００３２】
図２は、レジスタ・ファイルに記憶され得るファット・ポインタ２１０の実例を例示する。ファット・ポインタ２１０は、メモリ保護を実施するために使用されてもよい。特に、メモリは幾つかの領域へ分割され得、異なるプロセスが各メモリ領域への異なるアクセス・レベルを有する。このように、機密又は安全なデータが、そのデータと関連するプロセスに制限されることができる。これは、悪意のあるソフトウェアがシステムに有害な影響を有するのを妨げるためにも使用されることができる。ファット・ポインタ２１０は幾つかの異なるデータ・フィールドから構成される。これらは許可データ・フィールド２２０を含み、それはメモリ保護方式を実装するために使用されてもよい。上記のように、下限は、下限仮数２４０を取り、そしてそれを指数値２３０に基づく回数左シフトする（ゼロで埋める）ことによって形成される。下限の上位のビットはベース（ポインタ）値２６０から複製され、それはアクセスされることが望まれるメモリ・アドレスを示す。同様に、上限は、上限仮数２５０を使用して類似の方法で形成される。ファット・ポインタ２１０は、要求されるメモリ位置にアクセスするために使用され、そしてそれが特定のメモリ領域内に収まることを保証するために検査されることができる。オフセット値は、アクセスされることになるメモリ・アドレスを計算するために使用されることができるが、レジスタ・ファイルにおける別のレジスタに記憶される。レジスタ・ファイルは１６から３２＋エントリまでどこでも記憶することができる。
【００３３】
既に説明したように、下限と上限との間の最大の表現可能な差は２ｑ＋ｅである。これは、仮数にｑビットあり、そして仮数の各々が指数値ｅに従ってシフトされるからである。
【００３４】
図３は、上仮数（ｕｐｐｅｒｍ）と下仮数（ｌｏｗｅｒｍ）とベース／ポインタ仮数（ｐｔｒｍ）との間の関係を図示する。ベース／ポインタ仮数は式：
ｐｔｒｍ＝（Ｐｏｉｎｔｅｒ＞＞ｅｘｐ）［ｑ：０］
によって決定される。
【００３５】
既に説明したように、下限と上限との間の最大の表現可能な差は２ｑ＋ｅであるが、その理由は、これが、アクセスされているビット（ｍビットよりむしろｑ＋ｅビット）の部分集合を調べることによって表現されることができる最大の範囲であるからである。限度又はベース／ポインタ値の１つがこの範囲から外れれば、それは小さく現れ得る。例えば、サイズ２ｑ＋ｅのウィンドウが値０で始まり、下限が１０の値を有する状況を考える。この場合、上限は値２ｑ＋ｅ＋１を有し得る。ｑ＝８及びｅ＝０の実例値に対して、２ｑ＋ｅ＋１＝２５７＝（１０００００００１）２の上限は１０＝（１０１０）２の下限より厳密に大きい。しかしながら、我々が上限の最初の８ビット（ｑ＋ｅ）だけしか調べることができなければ、下限はそれでも（００００１０１０）２として現れることになるが、上限は（０００００００１）２＝１として、すなわち小さく現れることになる。この状況を扱うために、我々は境界ラッピングを行う。特に、我々は代表点（ｒｅｐｍ）を取る。本実施例において、代表点は、下限を取って２１２を減算することによって得られる。しかしながら、他の実施例は他の値を考えるであろう。これは次いでサイズ２ｑ＋ｅのウィンドウの始まりを定める。代表点に対する異なる値の関係に応じて、調整がなされて（例えば調整回路１７０によって）、そうであるべきより小さく現れる数を補償することができる。
【００３６】
図４Ａ、４Ｂ及び４Ｃは、３つの異なる状況を図示し、調整回路１７０がどのようにこれらの状況を補償するかを詳説する。特に、３つの異なる調整がなされることができ、各々異なる条件を持つ。特に：
ｐｔｒｍ≧ｒｅｐｍであれば、ｌｏｗｅｒｍに２ｑ＋ｅを加算する
ｌｏｗｅｒｍ≧ｒｅｐｍであれば、ｌｏｗｅｒｍに２ｑ＋ｅを減算する
ｐｔｒｍ≧ｒｅｐｍであれば、ｕｐｐｅｒｍに２ｑ＋ｅを加算する
ｕｐｐｅｒｍ≧ｒｅｐｍであれば、ｕｐｐｅｒｍに２ｑ＋ｅを減算する
【００３７】
図４Ａにおいて、ベース／ポインタは２ｑ＋ｅ境界を横切らない。それに応じて、全体調整はなされる必要がない。特に、単純な目視から、ｐｔｒｍ≧ｒｅｐｍ、ｌｏｗｅｒｍ≧ｒｅｐｍ、ｐｔｒｍ≧ｒｅｐｍ且つｕｐｐｅｒｍ≧ｒｅｐｍであることが明らかである。それに応じて、条件の全てが満たされ、全体としては、仮数のいずれにも調整はなされない。
【００３８】
図４Ｂにおいて、ベース／ポインタは２ｑ＋ｅ境界を横切る。特に、ｐｔｒｍがほんの僅かに２ｑ＋ｅ境界より上にあることに留意されたい。それに応じて、その圧縮形式で、ｐｔｒｍは、ｐｔｒｍ＜ｒｅｐｍ、しかしｌｏｗｅｒｍ≧ｒｅｐｍであるように小さな値を有することになる。論理的に、ポインタが実際に下限より小さくなることができないので、そこでｌｏｗｅｒｍを２ｑ＋ｅだけデクリメントすることによって境界調整がなされなければならない。一方、ｐｔｒｍ＜ｒｅｐｍ且つｕｐｐｅｒｍ＜ｒｅｐｍであるので、ｕｐｐｅｒｍには調整はなされない。
【００３９】
図４Ｃにおいて、ベース／ポインタは再び２ｑ＋ｅ境界を横切る。この場合、ベース／ポインタが２ｑ＋ｅ境界の１つのまさしくその最上部にあることに留意されたい。それに応じて、その圧縮形式で、ｐｔｒｍは非常に大きな値を有することになる。この場合、ｐｔｒｍ≧ｒｅｐｍ且つｌｏｗｅｒｍ≧ｒｅｐｍであるので、ｌｏｗｅｒｍには調整はなされない。一方、ｐｔｒｍ≧ｒｅｐｍ、しかしｕｐｐｅｒｍ＜ｒｅｐｍ。論理的に、ポインタが実際に上限より大きくなることができないので、そこで境界調整がなされなければならない。したがって、全体効果はｕｐｐｅｒｍを２ｑ＋ｅだけインクリメントすることである。
【００４０】
インクリメント及びデクリメント両方の代替として、加算だけを行うことが可能である。特に、仮数の１つをデクリメントするよりむしろ、単にその他の仮数の両方をインクリメントすることができる。結果的に、上記の規則は：
ｐｔｒｍ＜ｒｅｐｍであれば、ｐｔｒｍを２ｑ＋ｅだけインクリメントする
ｕｐｐｅｒｍ＜ｒｅｐｍであれば、ｕｐｐｅｒｍを２ｑ＋ｅだけインクリメントする
ｌｏｗｅｒｍ＜ｒｅｐｍであれば、ｌｏｗｅｒｍを２ｑ＋ｅだけインクリメントする
に応用されることができる。
【００４１】
更なる改良として、実際に加算を行うよりむしろ、より簡単な解法は単に仮数値の前に「１」を連結することである。仮数値が長さｑビットであるので且つ仮数と関連する指数がｅであるので、仮数値の前に「１」を連結することは２ｑ＋ｅを加算することと同等である。
【００４２】
上記説明したように仮数値を調整してから、境界チェックが満たされるかどうかを判定することが、調整値を比較する簡単な方式である。第１に、オフセット仮数値がベース／ポインタ仮数値のそれに類似の方法で計算される：
ｏｆｆｓｅｔｍ＝（Ｏｆｆｓｅｔ＞＞ｅｘｐ）［ｑ：０］
【００４３】
オフセット仮数値及びベース／ポインタ仮数値は次いで合算される。結果は次いで、下限仮数及び上限仮数によって定められる境界と比較される。この判定は仮数比較回路１９０によってなされ、それはチェックの結果を返す。結果が肯定的であれば、ポインタ＋オフセットによって定められるアドレスが上下限によって定められる境界内に収まることになるので、アクセスは許容可能である。
【００４４】
２つのエッジ・ケースが存在し、その１つは調整回路１７０によって扱われることができ、そして１つはエッジ・ケース比較回路２００によって扱われることができる。
【００４５】
第１に、オフセット値（ｏｆｆｓｅｔ＿ｈｉ）の高位ビット（ビット［６３：ｑ＋ｅ］）の全てでなく少なくとも１つが１（ｈｉｇｈ＿ｏｆｆｓｅｔ＿ｂｉｔｓ＿ｆａｉｌ）であれば、チェックは失敗するはずである。これは、それらのビットの一部が１であれば、オフセットが２ｑ＋ｅビットより多くポインタ値を移動させようと試みることになるからである。これが境界の最大の表現可能なサイズであるので、そのようなオフセットは本質的に境界外にポインタを移動させることになる。高位ビットの全てが１であれば、オフセットが負であることに留意されたい。これは許容されて、境界外にポインタを移動させる必要はない。このチェックはエッジ・ケース比較回路によって行われることができる。
【００４６】
第２に、オフセット値（ｏｆｆｓｅｔ＿ｌｏ）の低位ビット（ビット［ｅ−１：０］）が桁上げ（ｌｏｗ＿ｃａｒｒｙ）を伴えば、境界チェックを行う前にｐｔｒｍが１だけインクリメントされなければならない。これは調整回路１７０によって行われることができる。
【００４７】
図５は、解決実例を図示する。上仮数及び下仮数はそれぞれ（０ｘ１００００）１６及び（０ｘＦＦ０００）１６である。ポインタ仮数は上記した式を使用して決定されて、値（０ｘＦＦＦ００）１６を生成する。同様に、代表点は、ベース仮数から２１２を減算することによって生成されて、（０ｘＦＥ０００）１６を与える。これらの数から、値上限が明らかに２ｑ＋ｅの異なる境界内に収まり、したがって仮数値に２ｑ＋ｅを加算することによって調整されなければならないことが直ちに明らかになるであろう。
【００４８】
図６は、一実施例に従って本技術を行うための実例回路を概略的に図示する。これは単一の２１ビット加算器２７０を必要とする。対照的に、値と比較する限度を完全に拡大することを伴う技術は、６４ビット・バレル・シフタ及び加算器を必要とするであろう。結果的に、本技術は他の技術より効率的に実装されることができる。
【００４９】
図７は、一実施例に従って境界比較回路１８０に提供される前に仮数値を調整する際の調整回路１７０の挙動を例示するフローチャート２８０を図示する。ステップ２９０において、ｕｐｐｅｒｍ及びｌｏｗｅｒｍが受け取られる。ステップ３００において、ｐｔｒｍが既に述べたようにポインタ値から発生される。ステップ３１０で、ｐｔｒｍ＜ｒｅｐｍかどうかが判定される。そうであれば、ステップ３２０で、ｐｔｒｍの前に「１」が連結される。いずれのイベントにおいてもステップ３３０で、ｕｐｐｅｒｍ＜ｒｅｐｍかどうかが判定される。そうであれば、ステップ３４０で、ｌｉｍｉｔｍの前に「１」が連結される。いずれのイベントにおいても、ステップ３５０で、ｌｏｗｅｒｍ＜ｒｅｐｍかどうかが判定される。そうであれば、ステップ３６０で、ｂａｓｅｍに「１」が連結される。
【００５０】
図８は、一実施例に従ってデータ処理装置を動作させる方法を例示するフローチャート３７０を例示する。ステップ３８０で、下限及び上限が圧縮形式で記憶される。この記憶はレジスタで起こり得る、又は例えば、命令の一部として記憶され得る。圧縮形式は、例えば、仮数及び指数の使用を伴い得る。次いで、ステップ３９０で、圧縮形式のそれらの値に調整が行われる。例えば、これは、仮数値を調整することを伴い得る。最後に、ステップ４００で、調整値が境界チェックを行うために使用される。境界チェックは、下限及び上限によって定められる境界内に値が収まるかどうかを判定する同等な効果を有する。しかしながら、境界条件の判定は、上限及び下限を展開することなく達成される。
【００５１】
それに応じて、本技術は、圧縮形式で表現される限度を使用して境界検査を行うことを可能にすることを証明された。有利には、これは、回路面積が削減されることができ、且つ境界が完全な非圧縮形式で表現される状況と比較して、行われることになる演算の数及び複雑さが低減されることができることを意味する。
【００５２】
本出願において、単語「…するように構成される」は、装置の要素が定められた動作を実施することができる構成を有することを意味するために使用される。この文脈では、「構成」はハードウェア又はソフトウェアの相互接続の配列又は方式を意味する。例えば、装置は定められた動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが機能を行うようにプログラムされてもよい。「するように構成される」は、装置要素が定められた動作を提供するためにいかなる形であれ変更される必要があることを意味しない。
【００５３】
本発明の例示的な実施例が添付図面を参照しつつ本明細書に詳細に記載されたが、本発明がそれらの厳密な実施例に限定されないこと、並びに添付の請求項によって定められる本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加及び修正が本発明に遂行されることができることが理解されるはずである。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴との従属請求項の特徴の様々な組合せがなされ得る。
【図１】
2020524333.tif 000002
【図２】
2020524333.tif 000003
【図３】
2020524333.tif 000004
【図４Ａ】
2020524333.tif 000005
【図４Ｂ】
2020524333.tif 000006
【図４Ｃ】
2020524333.tif 000007
【図５】
2020524333.tif 000008
【図６】
2020524333.tif 000009
【図７】
2020524333.tif 000010
【図８】
2020524333.tif 000011
【国際調査報告】
2020524333.tif 000012
2020524333.tif 000013
2020524333.tif 000014