IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

<>
  • 特許-範囲検査 図1
  • 特許-範囲検査 図2
  • 特許-範囲検査 図3
  • 特許-範囲検査 図4A
  • 特許-範囲検査 図4B
  • 特許-範囲検査 図4C
  • 特許-範囲検査 図5
  • 特許-範囲検査 図6
  • 特許-範囲検査 図7
  • 特許-範囲検査 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-20
(45)【発行日】2022-09-29
(54)【発明の名称】範囲検査
(51)【国際特許分類】
   G06F 12/02 20060101AFI20220921BHJP
   G06F 12/14 20060101ALI20220921BHJP
   G06F 7/02 20060101ALI20220921BHJP
【FI】
G06F12/02 510B
G06F12/14 510D
G06F7/02
【請求項の数】 22
(21)【出願番号】P 2019568395
(86)(22)【出願日】2018-06-15
(65)【公表番号】
(43)【公表日】2020-08-13
(86)【国際出願番号】 GB2018051661
(87)【国際公開番号】W WO2018234760
(87)【国際公開日】2018-12-27
【審査請求日】2021-06-08
(31)【優先権主張番号】15/626,454
(32)【優先日】2017-06-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】アラルラジ、ダニエル
(72)【発明者】
【氏名】バーンズ、グレイム ピーター
(72)【発明者】
【氏名】アイゼン、リー エバン
(72)【発明者】
【氏名】ゴーマン、ゲイリー アラン
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2017/093708(WO,A1)
【文献】特表2018-536238(JP,A)
【文献】国際公開第2017/081438(WO,A1)
【文献】特表2018-538610(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/14
G06F 7/02
(57)【特許請求の範囲】
【請求項1】
0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、
前記下限及び前記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶する記憶回路であり、前記下限及び前記上限の最上位m-q-eビットが前記値の最上位m-q-eビットに等しい記憶回路と、
圧縮形式の前記下限及び前記上限に調整を行う調整回路と、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行う境界比較回路と、
を備えるデータ処理装置。
【請求項2】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出される、
請求項1に記載のデータ処理装置。
【請求項3】
前記境界比較回路が、前記値、前記下限及び前記上限の(q+1)ビットで境界ラッピングを使用して前記判定を行う、
請求項1に記載のデータ処理装置。
【請求項4】
前記調整回路が、前記指数に基づいて前記値を右シフトし、次いで最下位qビットを取ることによって前記値の仮数を決定するように構成される、
請求項1に記載のデータ処理装置。
【請求項5】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの2q+e以内であるかどうかの判定に応じて前記調整のうちの1つ又は複数を行うように構成される、
請求項4に記載のデータ処理装置。
【請求項6】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの2q+e以内であるように前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも1つをインクリメント又はデクリメントするように構成される、
請求項4に記載のデータ処理装置。
【請求項7】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも1つを2q+eだけインクリメント又はデクリメントするように構成される、
請求項6に記載のデータ処理装置。
【請求項8】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数が全て互いの2q+e以内であるように前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも1つをインクリメントするように構成される、
請求項4に記載のデータ処理装置。
【請求項9】
前記調整回路が、前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも1つに連結を行うことによって前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数のうちの少なくとも1つをインクリメントするように構成される、
請求項6に記載のデータ処理装置。
【請求項10】
前記連結が最上位桁における値「1」の連結であり、そのため前記連結が、2q+eを加算することと同等である、
請求項9に記載のデータ処理装置。
【請求項11】
前記判定が、前記下限の前記仮数より小さい代表値で始まる2q+eの連続値のウィンドウに対して前記下限の前記仮数、前記上限の前記仮数及び前記値の前記仮数の相対位置を評価することによってなされる、
請求項5に記載のデータ処理装置。
【請求項12】
前記代表値が前記下限の前記仮数から212を減算したものに等しい、
請求項11に記載のデータ処理装置。
【請求項13】
前記調整回路が、前記値の前記仮数が前記代表値より小さいことに応じて前記値の前記仮数の最上位ビットに「1」を連結するように構成される、
請求項11に記載のデータ処理装置。
【請求項14】
前記調整回路が、前記上限の前記仮数が前記代表値より小さいことに応じて前記上限の前記仮数の最上位ビットに「1」を連結するように構成される、
請求項11に記載のデータ処理装置。
【請求項15】
前記調整回路が、前記下限の前記仮数が前記代表値より小さいことに応じて前記下限の前記仮数の最上位ビットに「1」を連結するように構成される、
請求項11に記載のデータ処理装置。
【請求項16】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出され、
前記調整回路が、前記ベース及び前記オフセットを合算する前記最下位(e-1)ビットが桁上げを生成することに応じて前記値の前記仮数を1だけインクリメントするように構成される、
請求項4に記載のデータ処理装置。
【請求項17】
前記境界比較回路が、
1つ又は複数のエッジ・ケース条件に応じて前記値が前記境界から外れることを示すエッジ・ケース回路と、
前記調整が行われた後に前記値の前記仮数が前記下限の前記仮数より小さい又は前記上限の前記仮数より大きいことに基づいて前記値が前記境界内に収まるかどうかを示す仮数比較回路と、
を備える、
請求項1に記載のデータ処理装置。
【請求項18】
前記記憶回路が、ベースを記憶するように構成され、
前記値が、前記ベース及びオフセットを合算することによって導出され、
前記エッジ・ケース条件が、前記オフセットの最上位(m-e-q)ビットが少なくとも1つの「1」及び少なくとも1つの「0」を含むという条件を含む、
請求項17に記載のデータ処理装置。
【請求項19】
前記データ処理装置が2つ以下のプロセッサ・サイクルで動作する、
請求項1に記載のデータ処理装置。
【請求項20】
前記値、前記下限及び前記上限がメモリにおけるアドレスへのポインタである、
請求項1に記載のデータ処理装置。
【請求項21】
0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、
前記下限及び前記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶することであり、前記下限及び前記上限の最上位m-q-eビットが前記値の最上位m-q-eビットに等しい、記憶することと、
圧縮形式の前記下限及び前記上限に調整を行うことと、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行うことと、を含む方法。
【請求項22】
0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うための方法をデータ処理装置に実行させるプログラムであって、前記方法は、
前記下限及び前記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶することであり、前記下限及び前記上限の最上位m-q-eビットが前記値の最上位m-q-eビットに等しい、記憶することと、
圧縮形式の前記下限及び前記上限に調整を行うことと、
前記圧縮形式の前記下限及び前記上限を使用して前記値に対して前記判定を行うことと、
を含むプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、範囲検査に関する。単に例として、本開示は、メモリ範囲検査に関連するものであり得る。
【背景技術】
【0002】
しばしば、1つの値が下限及び上限によって定められる境界内にあるかどうかを判定することが望ましい。例えば、メモリ・システムでは、メモリは幾つかの領域へ分割されることができ、異なるプロセスが特定のメモリ領域を「所有する」。安全性のために、しばしば、非所有プロセスが別のプロセスによって所有されるよりメモリ領域にアクセスするのを防止することが望ましい。これを行うため、メモリにアクセスする試みは、同アクセスが現在実行中のプロセスに属するメモリ・アクセス領域内であるかどうかを検査するために、範囲検査されるべきである。メモリ・システムが大きくなるにつれて、メモリ・アドレスのサイズも増える。これは、したがって、アクセスされることになるメモリ位置だけでなく、メモリ領域の下限及びメモリ領域の上限も表現するために必要とされるビット数を増加させる。これは次いで、回路サイズ及びしたがって電力消費を増加させる。更には、そのような多数のビットを比較することで時間がかかるようになる。したがって、より少ない時間で且つ理想的にはより小さな回路を使用してそのような判定を行うことが望ましいであろう。
【発明の概要】
【課題を解決するための手段】
【0003】
第1の実例構成から見ると、0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、上記下限及び上記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶する記憶回路であり、上記下限及び上記上限の最上位m-q-eビットが上記値の最上位m-q-eビットに等しい記憶回路と、圧縮形式の上記下限及び上記上限に調整を行う調整回路と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行う境界比較回路とを備えるデータ処理装置が提供される。
【0004】
第2の実例構成から見ると、0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、上記下限及び上記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶することであり、上記下限及び上記上限の最上位m-q-eビットが上記値の最上位m-q-eビットに等しい、記憶することと、圧縮形式の上記下限及び上記上限に調整を行うことと、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行うこととを含む方法が提供される。
【0005】
第3の実例構成から見ると、0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置を動作させる方法であって、上記下限及び上記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶するための手段であり、上記下限及び上記上限の最上位m-q-eビットが上記値の最上位m-q-eビットに等しい、手段と、圧縮形式の上記下限及び上記上限に調整を行うための手段と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行うための手段とを含む方法が提供される。
【0006】
本発明は、添付図面に例示されたその実施例を参照して、単に例として更に記載される。
【図面の簡単な説明】
【0007】
図1】一実施例に従ってデータ処理装置を例示する図である。
図2】一実施例に従ってファット・ポインタの実例を例示する図である。
図3】上仮数(upperm)と下仮数(lowerm)とベース/ポインタ仮数(ptrm)との間の関係を示す図である。
図4A】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
図4B】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
図4C】仮数間の異なる関係、及び調整回路がどのようにこれらの関係を補償するかの詳細を示す図である。
図5】一実施例に従って仮数を修正する解決実例を示す図である。
図6】一実施例に従って本技術を行うための実例回路の概略図である。
図7】一実施例に従って境界比較回路に提供される前の仮数値を調整する際の調整回路の挙動を例示するフローチャートである。
図8】実例実施例に従ってデータ処理装置を動作させる方法を例示するフローチャートである。
【発明を実施するための形態】
【0008】
添付の図を参照しつつ実施例について述べる前に、実施例の以下の説明が提供される。
【0009】
1つの実例構成に従って、0と2との間の下限及び0と2との間の上限によって定められる境界内に値が収まるかどうかの判定を行うデータ処理装置であって、上記下限及び上記上限の各々をq<mビットの仮数及び共有指数eとして圧縮形式で記憶する記憶回路であり、上記下限及び上記上限の最上位m-q-eビットが上記値の最上位m-q-eビットに等しい記憶回路と、圧縮形式の上記下限及び上記上限に調整を行う調整回路と、上記圧縮形式の上記下限及び上記上限を使用して上記値に上記判定を行う境界比較回路とを備えるデータ処理装置が提供される。
【0010】
上記に従って、下限及び上限の各々は圧縮形式で記憶される。このように、下限及び上限は、qビット(ここでqはmより小さい)から構成される仮数として表現される。下限及び上限は指数eも共有し、それはゼロ以上の整数である。結果的に、下限は2が乗算された下限に対する仮数の値と一致し、そして上限は2が乗算された上限の仮数と一致する。各場合、2による乗算を行った後に、ポインタの上位の(m-q-e)ビットが加えられて、サイズm(例えば64)の完全な上限及び下限を生成する。これは、例えば、下限及び上限の各々が20ビットの仮数として表現される並びに下限及び上限の各々が単一の5ビット指数を共有するのを可能にする。対照的に、典型的な64ビット・システムでは、上限及び下限の各々は64ビットの記憶域を各々必要としてもよく、合計128ビットとなる。調整回路は、圧縮形式である間に下限及び上限に調整を行う。調整の結果は次いで、下限及び上限によって定められる境界内に値が収まるかどうかの判定を行う境界比較回路に渡される。この判定は、下限又は上限を展開又は拡大することなく行われる。結果的に、判定を行う回路は、他のシステムより迅速に且つ潜在的に少ない部品を使用して(それによって電力消費を削減して)動作することができる。
【0011】
一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出される。結果的に、値はベース及びオフセットから構成されてもよい。各々同じベース番号から始まる幾つかの異なる比較を行うために、オフセットは幾つかの繰返しを通じて変化され得る。オフセットが負であり得ることに留意されたい。この場合、値はそれでも、ベース及びオフセットを合算することによって導出されてもよい。しかしながら、当業者は、これがベースからオフセットを減算することと数学的に同じであることを認識するであろう。一部の実施例において、記憶回路はオフセットも記憶し得る。オフセットはベースとは別に記憶されてもよい。例えば、1つのレジスタがベースを記憶し得、そして別のレジスタがオフセットを記憶し得る。
【0012】
一部の実施例において、上記境界比較回路は、上記値、上記下限及び上記上限の(q+1)ビットで境界ラッピング(boundary wrapping)を使用して上記判定を行う。境界ラッピングは、値のウィンドウが考慮される技術である。比較されることになる値の各々がそのウィンドウ内に収まるとすれば、たとえ値自体がそれらの値を構成するビットの全集合の部分集合だけを使用するウィンドウへ投入されても、それらの値間の相対比較を行うことが可能である。値の1つ又は複数がウィンドウから外れれば、値は、それらがその相対順序を維持しつつ全てウィンドウ内に収まるように調整されることができる。このように、必ずしもそれらの値を構成するビットの全集合を考慮することなく値の各々を比較し、それでも境界チェックの正しい評価をもたらすことが可能である。
【0013】
一部の実施例において、上記調整回路は、上記指数に基づいて上記値を右シフトし、次いで最下位qビットを取ることによって上記値の仮数を決定するように構成される。調整回路は、第1に指数に基づいて値を右シフトすることによって値の仮数を決定する。これをしてから、ライトシフトの結果からの最下位qビットが仮数として取られる。それに応じて、値の仮数は下限及び上限の仮数と同じビット数を有することになる。一部の実施例において、指数に等しい回数右シフトすることによって、初めに値の仮数が生成される。結果的に、調整回路によって発生される値の仮数は下限及び上限の仮数と整列していることになる。
【0014】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの2q+e以内であるかどうかの判定に応じて上記調整のうちの1つ又は複数を行うように構成される。調整は、したがって、下限の仮数、上限の仮数及び値の仮数のうちの最小のものが値2q+eに加算されると下限の仮数、上限の仮数及び値の仮数のうちの最大のものより大きいかどうかに依存してもよい。言い換えれば、下限の仮数、上限の仮数及び値の仮数の各々を含むサイズ2q+eのウィンドウが存在する。
【0015】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの2q+e以内であるように上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも1つをインクリメント又はデクリメントするように構成される。調整回路によって行われる調整は、下限の仮数、上限の仮数及び値の仮数のいずれかをインクリメント又はデクリメントすることを伴ってもよい。一旦調整が行われると、下限の仮数、上限の仮数及び値の仮数の各々はサイズ2q+eのウィンドウ内に収まることになる。
【0016】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも1つを2q+eだけインクリメント又はデクリメントするように構成される。調整回路が下限の仮数、上限の仮数及び値の仮数のいずれかをインクリメント又はデクリメントする値は2q+eに等しくてもよい。一部の実施例において、インクリメント又はデクリメントが発生する値は、調整回路によって実施される調整の全てに対して同じであるであろう。
【0017】
一部の実施例において、上記調整回路は、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数が全て互いの2q+e以内であるように上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも1つをインクリメントするように構成される。結果的に、そのような実施例において、下限の仮数、上限の仮数及び値の仮数をサイズ2q+eのウィンドウ内に至らせるために調整回路によって行われる唯一の調整はインクリメント演算である。言い換えれば、これらの仮数のいずれもデクリメントされない。用語インクリメントが数学的加算演算が行われることを要求する必要はなく、特に、一部の実施例において、上記調整回路が、上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも1つに連結を行うことによって上記下限の上記仮数、上記上限の上記仮数及び上記値の上記仮数のうちの少なくとも1つをインクリメントするように構成されることに留意されたい。このように、連結演算を行うことによって効果的な加算が行われる。連結演算は、演算を行うために複雑な加算回路の使用を必要とすることがある厳密な加算演算より容易に且つ/又は迅速に行われてもよい。それに応じて、厳密な加算演算よりむしろ連結演算を行うことによって、調整回路によって行われる調整は、より迅速に進行してもよく、より少ない回路を使用してもよく、そしてより低い電力消費を呈してもよい。
【0018】
一部の実施例において、上記連結は最上位桁における値「1」の連結であり、そのため上記連結は2q+eを加算することと同等である。
【0019】
一部の実施例において、上記判定は、上記下限の上記仮数より小さい代表値で始まる2q+eの連続値のウィンドウを考えることによってなされる。下限、値及び上限(又はそれらの値の仮数)の相対位置を評価するために使用されてもよい上述したウィンドウは、代表値によって定義されてもよい。代表値は、それが下限の仮数より小さいように設定される。例えば、一部の実施例において、上記代表値は上記下限の上記仮数から212を減算したものに等しい。
【0020】
一部の実施例において、上記調整回路は、上記値の上記仮数が上記代表値より小さいことに応じて上記値の上記仮数の最上位ビットに「1」を連結するように構成される。調整回路によって行われる調整は、したがって、値の仮数の最上位ビットに「1」を連結することを伴ってもよい。「1」の連結は、値の仮数に値2q+eを加算する効果を有する。これは、値の仮数が同じ2q+eウィンドウ内に収まるようにそれを調整するために使用されることができる。
【0021】
一部の実施例において、上記調整回路は、上記上限の上記仮数が上記代表値より小さいことに応じて上記上限の上記仮数の最上位ビットに「1」を連結するように構成される。再び、最上位ビットへの「1」の連結は、上限に2q+eの値を加算することと同等である。結果的に、上限は、それがサイズ2q+eの同じウィンドウ内に収まるように調整されることができる。
【0022】
一部の実施例において、上記調整回路は、上記下限の上記仮数が上記代表値より小さいことに応じて上記下限の上記仮数の最上位ビットに「1」を連結するように構成される。再度、下限の仮数の最上位ビットへの「1」の連結は、下限の仮数に値2q+eを加算することと実際上同じであり、それによって下限の仮数をサイズ2q+eの同じウィンドウ内へ至らせる。
【0023】
一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出され、上記調整回路は、上記ベース及び上記オフセットを合算する上記最下位(e-1)ビットが桁上げを生成することに応じて上記値の上記仮数を1だけインクリメントするように構成される。値を生成するためにベース及びオフセットが合算されるとき(又は値の仮数を生成するためにベースの仮数及びオフセットの仮数を合算するとき)、加算は桁上げが発生する結果となることがある。これを補償するために、値の仮数は1だけインクリメントされる。
【0024】
一部の実施例において、上記境界比較回路は、1つ又は複数のエッジ・ケース条件に応じて上記値が上記境界から外れることを示すエッジ・ケース回路と、上記調整が行われた後に上記値の上記仮数が上記下限の上記仮数より小さい又は上記上限の上記仮数より大きいことに基づいて上記値が上記境界内に収まるかどうかを示す仮数比較回路とを備える。エッジ・ケース回路は、下限及び上限との値の分析又は比較中に発生するエッジ・ケース数を表すために使用されてもよい。それに応じて、エッジ・ケース回路は、たとえ仮数比較回路が値が境界内に収まることを示しても、値が境界から外れることを示す(及び逆も同じ)ために使用されてもよい。
【0025】
そのようなエッジ・ケース条件がどんなことでよいかの幾つかの実例がある。しかしながら、一部の実施例において、上記記憶回路は、ベースを記憶するように構成され、上記値は、上記ベース及びオフセットを合算することによって導出され、上記エッジ・ケース条件は、上記オフセットの最上位(m-e-q)ビットが少なくとも1つの「1」及び少なくとも1つの「0」を含むという条件を含む。オフセットの最上位(m-e-q)ビットが少なくとも1つの「1」及び少なくとも1つの「0」を含む状況は、オフセットによりオフセットとベースの和がウィンドウサイズを超えるであろう状況を表す。それに応じて、オフセットは、境界条件が破られるように十分に大きい。
【0026】
一部の実施例において、上記データ処理装置は2つ以下のプロセッサ・サイクルで動作する。
【0027】
一部の実施例において、上記値、上記下限及び上記上限はメモリにおけるアドレスへのポインタである。例えば、データ処理装置はメモリ・アクセス装置の一部を形成してもよく、そして境界は、アクセスが許可されるメモリ域を表してもよい。例えば、アクセスは現在実行中のプロセスに基づいて制限されてもよい。このように、ベース及びオフセット値の和を検査して、下限及び上限によって定められる境界内に結果が収まることを保証することによって、プロセスがその許容域外のメモリ位置にアクセスしようと試みていないことを保証することが可能である。
【0028】
特定の実施例がここで図を参照しつつ記載されることになる。
【0029】
図1は、一実施例に従ってデータ処理装置100を例示する。データ処理装置100は、検査が行われることになる数を記憶するための記憶回路110を含む。本実施例において、整数は64ビット数として表現される。オフセットにベースを加算することの結果として生成される値は、それが下限及び上限によって定められる境界内に収まるかどうかを判定するために検査される。しかしながら、これらの数の各々を64ビット数として表現及び比較するよりむしろ、数の一部が、64ビットより少なく使用して、圧縮形式で提供及び比較される。オフセットがゼロであり得、その場合システムが上下限によって定められる境界内に所与のベース値が収まると判定することに留意されたい。
【0030】
特に、記憶回路110は、下限のq(20)ビット仮数を記憶するための下限記憶回路120及び上限のq(20)ビット仮数を記憶するための上限記憶回路130を備える。上限及び下限の各々は6ビット指数eを共有し、それは指数記憶回路160に記憶される。ベース及びオフセットは、それぞれベース記憶回路140及びオフセット記憶回路150に完全m(64)ビット数として各々記憶される。したがって、全64ビットが記憶される場合より、下限及び上限を記憶するために必要とされるビットが少ないことが認識されるであろう。上限は{ value[63:n],upper[19:0],0...0 }、例えば値の上位の63-nビット、上限のqビット及びeのゼロの連結に等しい。同様に、下限は{ value[63:n],lower[19:0],0...0 }、例えば値の上位の63-nビット、下限のqビット及びeのゼロの連結に等しい。このように、下限と上限との間の最大の表現可能な差は2q+eである。データ処理デバイス100は、値をこの形式で記憶し、そしてこの圧縮フォーマットの数を使用して境界検査を判定するために様々な技術を使用する。結果として、演算又は記憶される必要があるビットがより少なく、より低い記憶要件及びより速い比較となる。実際上、上下限はポインタによってアンカされる。上下限は、したがって、それらがポインタの上位のビットを共有する2(q+e)区間内に収まる。このように、上下限に対する厳密な値は直接表現されないが、代わりにポインタ値から上位のビットを使用することによって導出される。
【0031】
調整回路170は、境界比較回路180に修正値を渡す前に必要に応じて記憶値の1つ又は複数に調整を行う。調整回路170は、したがって、少数の下限及び上限の完全64ビット値だけが比較されているという事実に補償を提供する。境界比較回路180は、下限及び上限によって定められる境界内に値が収まるかどうかを判定するために調整値を取る。境界比較回路180は3つの部品から構成される。仮数比較回路190は、境界検査の結果を判定するために、ベース、オフセット(存在すれば)、上限及び下限(調整回路170によって調整されたような仮数を比較するために使用される。エッジ・ケース比較回路200は、仮数比較回路190が間違った結果を生成するかもしれない1つ又は複数のエッジ・ケース・シナリオを考慮する。
【0032】
図2は、レジスタ・ファイルに記憶され得るファット・ポインタ210の実例を例示する。ファット・ポインタ210は、メモリ保護を実施するために使用されてもよい。特に、メモリは幾つかの領域へ分割され得、異なるプロセスが各メモリ領域への異なるアクセス・レベルを有する。このように、機密又は安全なデータが、そのデータと関連するプロセスに制限されることができる。これは、悪意のあるソフトウェアがシステムに有害な影響を有するのを妨げるためにも使用されることができる。ファット・ポインタ210は幾つかの異なるデータ・フィールドから構成される。これらは許可データ・フィールド220を含み、それはメモリ保護方式を実装するために使用されてもよい。上記のように、下限は、下限仮数240を取り、そしてそれを指数値230に基づく回数左シフトする(ゼロで埋める)ことによって形成される。下限の上位のビットはベース(ポインタ)値260から複製され、それはアクセスされることが望まれるメモリ・アドレスを示す。同様に、上限は、上限仮数250を使用して類似の方法で形成される。ファット・ポインタ210は、要求されるメモリ位置にアクセスするために使用され、そしてそれが特定のメモリ領域内に収まることを保証するために検査されることができる。オフセット値は、アクセスされることになるメモリ・アドレスを計算するために使用されることができるが、レジスタ・ファイルにおける別のレジスタに記憶される。レジスタ・ファイルは16から32+エントリまでどこでも記憶することができる。
【0033】
既に説明したように、下限と上限との間の最大の表現可能な差は2q+eである。これは、仮数にqビットあり、そして仮数の各々が指数値eに従ってシフトされるからである。
【0034】
図3は、上仮数(upperm)と下仮数(lowerm)とベース/ポインタ仮数(ptrm)との間の関係を図示する。ベース/ポインタ仮数は式:
ptrm=(Pointer>>exp)[q:0]
によって決定される。
【0035】
既に説明したように、下限と上限との間の最大の表現可能な差は2q+eであるが、その理由は、これが、アクセスされているビット(mビットよりむしろq+eビット)の部分集合を調べることによって表現されることができる最大の範囲であるからである。限度又はベース/ポインタ値の1つがこの範囲から外れれば、それは小さく現れ得る。例えば、サイズ2q+eのウィンドウが値0で始まり、下限が10の値を有する状況を考える。この場合、上限は値2q+e+1を有し得る。q=8及びe=0の実例値に対して、2q+e+1=257=(100000001)の上限は10=(1010)の下限より厳密に大きい。しかしながら、我々が上限の最初の8ビット(q+e)だけしか調べることができなければ、下限はそれでも(00001010)として現れることになるが、上限は(00000001)=1として、すなわち小さく現れることになる。この状況を扱うために、我々は境界ラッピングを行う。特に、我々は代表点(repm)を取る。本実施例において、代表点は、下限を取って212を減算することによって得られる。しかしながら、他の実施例は他の値を考えるであろう。これは次いでサイズ2q+eのウィンドウの始まりを定める。代表点に対する異なる値の関係に応じて、調整がなされて(例えば調整回路170によって)、そうであるべきより小さく現れる数を補償することができる。
【0036】
図4A、4B及び4Cは、3つの異なる状況を図示し、調整回路170がどのようにこれらの状況を補償するかを詳説する。特に、3つの異なる調整がなされることができ、各々異なる条件を持つ。特に:
ptrm≧repmであれば、lowermに2q+eを加算する
lowerm≧repmであれば、lowermに2q+eを減算する
ptrm≧repmであれば、uppermに2q+eを加算する
upperm≧repmであれば、uppermに2q+eを減算する
【0037】
図4Aにおいて、ベース/ポインタは2q+e境界を横切らない。それに応じて、全体調整はなされる必要がない。特に、単純な目視から、ptrm≧repm、lowerm≧repm、ptrm≧repm且つupperm≧repmであることが明らかである。それに応じて、条件の全てが満たされ、全体としては、仮数のいずれにも調整はなされない。
【0038】
図4Bにおいて、ベース/ポインタは2q+e境界を横切る。特に、ptrmがほんの僅かに2q+e境界より上にあることに留意されたい。それに応じて、その圧縮形式で、ptrmは、ptrm<repm、しかしlowerm≧repmであるように小さな値を有することになる。論理的に、ポインタが実際に下限より小さくなることができないので、そこでlowermを2q+eだけデクリメントすることによって境界調整がなされなければならない。一方、ptrm<repm且つupperm<repmであるので、uppermには調整はなされない。
【0039】
図4Cにおいて、ベース/ポインタは再び2q+e境界を横切る。この場合、ベース/ポインタが2q+e境界の1つのまさしくその最上部にあることに留意されたい。それに応じて、その圧縮形式で、ptrmは非常に大きな値を有することになる。この場合、ptrm≧repm且つlowerm≧repmであるので、lowermには調整はなされない。一方、ptrm≧repm、しかしupperm<repm。論理的に、ポインタが実際に上限より大きくなることができないので、そこで境界調整がなされなければならない。したがって、全体効果はuppermを2q+eだけインクリメントすることである。
【0040】
インクリメント及びデクリメント両方の代替として、加算だけを行うことが可能である。特に、仮数の1つをデクリメントするよりむしろ、単にその他の仮数の両方をインクリメントすることができる。結果的に、上記の規則は:
ptrm<repmであれば、ptrmを2q+eだけインクリメントする
upperm<repmであれば、uppermを2q+eだけインクリメントする
lowerm<repmであれば、lowermを2q+eだけインクリメントする
に応用されることができる。
【0041】
更なる改良として、実際に加算を行うよりむしろ、より簡単な解法は単に仮数値の前に「1」を連結することである。仮数値が長さqビットであるので且つ仮数と関連する指数がeであるので、仮数値の前に「1」を連結することは2q+eを加算することと同等である。
【0042】
上記説明したように仮数値を調整してから、境界チェックが満たされるかどうかを判定することが、調整値を比較する簡単な方式である。第1に、オフセット仮数値がベース/ポインタ仮数値のそれに類似の方法で計算される:
offsetm=(Offset>>exp)[q:0]
【0043】
オフセット仮数値及びベース/ポインタ仮数値は次いで合算される。結果は次いで、下限仮数及び上限仮数によって定められる境界と比較される。この判定は仮数比較回路190によってなされ、それはチェックの結果を返す。結果が肯定的であれば、ポインタ+オフセットによって定められるアドレスが上下限によって定められる境界内に収まることになるので、アクセスは許容可能である。
【0044】
2つのエッジ・ケースが存在し、その1つは調整回路170によって扱われることができ、そして1つはエッジ・ケース比較回路200によって扱われることができる。
【0045】
第1に、オフセット値(offset_hi)の高位ビット(ビット[63:q+e])の全てでなく少なくとも1つが1(high_offset_bits_fail)であれば、チェックは失敗するはずである。これは、それらのビットの一部が1であれば、オフセットが2q+eビットより多くポインタ値を移動させようと試みることになるからである。これが境界の最大の表現可能なサイズであるので、そのようなオフセットは本質的に境界外にポインタを移動させることになる。高位ビットの全てが1であれば、オフセットが負であることに留意されたい。これは許容されて、境界外にポインタを移動させる必要はない。このチェックはエッジ・ケース比較回路によって行われることができる。
【0046】
第2に、オフセット値(offset_lo)の低位ビット(ビット[e-1:0])が桁上げ(low_carry)を伴えば、境界チェックを行う前にptrmが1だけインクリメントされなければならない。これは調整回路170によって行われることができる。
【0047】
図5は、解決実例を図示する。上仮数及び下仮数はそれぞれ(0x10000)16及び(0xFF000)16である。ポインタ仮数は上記した式を使用して決定されて、値(0xFFF00)16を生成する。同様に、代表点は、ベース仮数から212を減算することによって生成されて、(0xFE000)16を与える。これらの数から、値上限が明らかに2q+eの異なる境界内に収まり、したがって仮数値に2q+eを加算することによって調整されなければならないことが直ちに明らかになるであろう。
【0048】
図6は、一実施例に従って本技術を行うための実例回路を概略的に図示する。これは単一の21ビット加算器270を必要とする。対照的に、値と比較する限度を完全に拡大することを伴う技術は、64ビット・バレル・シフタ及び加算器を必要とするであろう。結果的に、本技術は他の技術より効率的に実装されることができる。
【0049】
図7は、一実施例に従って境界比較回路180に提供される前に仮数値を調整する際の調整回路170の挙動を例示するフローチャート280を図示する。ステップ290において、upperm及びlowermが受け取られる。ステップ300において、ptrmが既に述べたようにポインタ値から発生される。ステップ310で、ptrm<repmかどうかが判定される。そうであれば、ステップ320で、ptrmの前に「1」が連結される。いずれのイベントにおいてもステップ330で、upperm<repmかどうかが判定される。そうであれば、ステップ340で、limitmの前に「1」が連結される。いずれのイベントにおいても、ステップ350で、lowerm<repmかどうかが判定される。そうであれば、ステップ360で、basemに「1」が連結される。
【0050】
図8は、一実施例に従ってデータ処理装置を動作させる方法を例示するフローチャート370を例示する。ステップ380で、下限及び上限が圧縮形式で記憶される。この記憶はレジスタで起こり得る、又は例えば、命令の一部として記憶され得る。圧縮形式は、例えば、仮数及び指数の使用を伴い得る。次いで、ステップ390で、圧縮形式のそれらの値に調整が行われる。例えば、これは、仮数値を調整することを伴い得る。最後に、ステップ400で、調整値が境界チェックを行うために使用される。境界チェックは、下限及び上限によって定められる境界内に値が収まるかどうかを判定する同等な効果を有する。しかしながら、境界条件の判定は、上限及び下限を展開することなく達成される。
【0051】
それに応じて、本技術は、圧縮形式で表現される限度を使用して境界検査を行うことを可能にすることを証明された。有利には、これは、回路面積が削減されることができ、且つ境界が完全な非圧縮形式で表現される状況と比較して、行われることになる演算の数及び複雑さが低減されることができることを意味する。
【0052】
本出願において、単語「…するように構成される」は、装置の要素が定められた動作を実施することができる構成を有することを意味するために使用される。この文脈では、「構成」はハードウェア又はソフトウェアの相互接続の配列又は方式を意味する。例えば、装置は定められた動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが機能を行うようにプログラムされてもよい。「するように構成される」は、装置要素が定められた動作を提供するためにいかなる形であれ変更される必要があることを意味しない。
【0053】
本発明の例示的な実施例が添付図面を参照しつつ本明細書に詳細に記載されたが、本発明がそれらの厳密な実施例に限定されないこと、並びに添付の請求項によって定められる本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加及び修正が本発明に遂行されることができることが理解されるはずである。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴との従属請求項の特徴の様々な組合せがなされ得る。
図1
図2
図3
図4A
図4B
図4C
図5
図6
図7
図8