(57)【要約】  入力ベクトル内の所与の一連の値を照合させるために比較演算を実行するための装置及び装置を操作する方法が提供される。命令デコーダ回路が、入力ベクトルのセグメントを指定する文字列照合命令に応答して、データ処理回路を、比較演算を実行するように制御するために制御信号を生成する。比較演算は、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を判定する。複数の比較演算が、入力ベクトルのセグメントに対応する照合ベクトルを判定して、入力ベクトルにおける部分文字列のスタート位置を指し示すために実行されてもよい。シミュレータの仮想マシンの実装と同様に、文字列一致命令が提供される。
2020530151.tif 000002
【特許請求の範囲】
【請求項１】
命令をデコードするための命令デコーダ回路と、
入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、データ処理回路と
を備える装置であって、
前記命令デコーダ回路は、前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、前記データ処理回路における比較回路に、
比較演算を実行させ、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させる
ように制御信号を生成する、装置。
【請求項２】
前記比較回路は、前記制御信号に更に応答して、
複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の前記要求されるセットは、その比較演算のための前記セグメントにおけるそれぞれの候補オフセットにおいて開始し、前記複数の比較演算の候補オフセット値は前記セグメントに及ぶ、請求項１に記載の装置。
【請求項３】
連続する入力要素の前記要求されるセットの要素の数は、前記参照データ項目における参照要素の数からそれぞれの比較演算の前記それぞれの候補オフセットを引いたものに等しい、請求項２に記載の装置。
【請求項４】
前記比較回路は、設定される前記比較値に応答して、候補オフセット値に照合するように検出されたオフセット値を設定し、前記検出されたオフセット値は、前記比較演算によって前記連続する入力要素の第１の入力要素として識別されたベース入力要素を指し示す、請求項２又は３に記載の装置。
【請求項５】
前記照合判定プロセスは、前記セグメントのための照合ベクトルを判定することを含み、各比較演算の前記比較値は、前記照合ベクトルにおけるそれぞれの照合要素の前記値を設定するために使用され、
各それぞれの照合要素は、前記比較値を判定した前記比較演算の前記それぞれの候補オフセットに対応する前記照合ベクトルにおける位置を有する、請求項２〜４の何れか一項に記載の装置。
【請求項６】
前記データ処理回路は、前記制御信号に応答して、各々が前記複数のセグメントの中からそれぞれのセグメントにために実行される、複数の照合判定プロセスを実行する複数の比較回路を更に備える、請求項２〜５の何れか一項に記載の装置。
【請求項７】
各照合判定プロセスは、前記それぞれのセグメントのためのそれぞれの照合ベクトルを判定することを含み、各比較演算の前記比較値は、前記照合ベクトルにおける照合要素の前記値を設定するために使用され、
各それぞれの照合要素は、前記比較値を判定した前記比較演算の前記それぞれの候補オフセットに対応する前記それぞれの照合ベクトルにおける位置を有する、請求項６に記載の装置。
【請求項８】
複数の比較回路の前記比較回路は、満たされるオーバーフロー条件に応答して、前記複数の比較回路の隣接する比較回路によって使用されるためのオーバーフローフラグを伝播し、
前記オーバーフロー条件は、前記比較値が設定され、連続する入力要素の前記要求されるセットにおける要素の数が前記参照データ項目における参照要素の数より少ない場合に満たされる、請求項６又は７に記載の装置。
【請求項９】
前記オーバーフローフラグが設定される場合には、前記隣接する比較回路は、前記設定されたオーバーフローフラグに応答して、前記比較回路の前記照合判定プロセスによって判定される前記照合ベクトルに基づいて連続する入力要素の要求されるオーバーフローのセットを判定するために、オーバーフロー比較演算をまた実行する、請求項８に記載の装置。
【請求項１０】
連続する入力要素の前記要求されるセットは、各々が前記比較演算によって使用される入力要素に対応する、複数の入力述語要素を含む入力述語ベクトルによって指し示され、
前記複数の入力述語要素は、前記複数の入力要素の何れが前記連続する入力要素を含むかを指し示す、請求項１〜９の何れか一項に記載の装置。
【請求項１１】
装置を操作する方法であって、
命令をデコードするステップと、
入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、
前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、前記装置のデータ処理回路における比較回路に、
比較演算を実行させて、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させる
ように制御信号を生成するステップと
を含む方法。
【請求項１２】
装置であって、
命令をデコードするための手段と、
入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するための手段であって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、手段と、
前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、前記装置における比較するための手段に、
比較演算を実行させて、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させる
ように制御信号を生成するための手段と
を備える装置。
【請求項１３】
命令をデコードするための命令デコードプログラムロジックと、
入力データベクトル構造の１つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、前記入力データベクトル構造は、前記入力データベクトル構造におけるそれぞれの位置において複数のセグメントを含む、データ処理プログラムロジックと
を備える、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムであって、
前記命令デコードプログラムロジックは、前記入力データベクトル構造のセグメント及び参照データ項目構造を指定する文字列照合命令に応答して、前記データ処理プログラムロジックにおける比較プログラムロジックに、
比較演算を実行させて、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目構造の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させる
ように制御信号を生成する、コンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理装置に関する。より具体的には、所与の一連の値のための検索の実行に関する。
【背景技術】
【０００２】
データ処理装置は、それに、部分文字列と呼ばれる場合がある一連の事前画定された値が所与の入力データに存在するか否かを判定することをその一部が要求する、多種多様なデータ処理演算を実行する場合がある。このような機能を実装するために要求されるデータ処理回路の複雑性は、大きい入力データ項目に対して負担になる場合がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Some Efficient Architecture Simulation Techniques”, Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63
【発明の概要】
【課題を解決するための手段】
【０００４】
一例においては、装置が提供され、装置は、命令をデコードするための命令デコーダ回路と、入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、データ処理回路とを備え、命令デコーダ回路が、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、データ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
【０００５】
別の例においては、装置を操作する方法を提供し、方法は、命令をデコードするステップと、入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置のデータ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するステップとを含む。
【０００６】
別の例においては、装置が提供され、装置は、命令をデコードするための手段と、データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するための手段であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、手段と、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置における比較するための手段に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するための手段とを備える。
【０００７】
別の例においては、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムが提供され、コンピュータプログラムが、命令をデコードするための命令デコードプログラムロジックと、入力データベクトル構造の１つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、入力データベクトル構造が、入力データベクトル構造におけるそれぞれの位置において複数のセグメントを含む、データ処理プログラムロジックとを備え、命令デコードプログラムロジックが、入力データベクトル構造のセグメント及び参照データ項目構造を指定する文字列照合命令に応答して、データ処理プログラムロジックにおける比較プログラムロジックに、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目構造の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
【０００８】
本技術は、添付の図面に図示されるようなその実施形態を参照して、単なる例として更に説明される。
【図面の簡単な説明】
【０００９】
【図１】一例による装置を概略的に図示する。
【図２】一例による装置を概略的に図示する。
【図３】一例による照合判定回路による照合判定プロセス中に実行される比較演算を図示する。
【図４】一例における、所与のオフセット値及び所与の要求される数に対応する比較演算を図示する。
【図５】一例における、オーバーフローフラグが隣接する比較回路にオーバーフロー比較演算を実行させるために設定される比較演算を図示する。
【図６】一例における、隣接する比較回路によって実行されるオーバーフロー比較演算を図示する。
【図７】一例における、複数の入力要素のうちの何れが連続する入力要素の要求されるセットを含むかを示すために使用される入力述語ベクトルを図示する。
【図８】比較回路を備える一例におけるデータ処理回路を図示し、オーバーフローフラグが設定され、隣接する比較回路に伝播することができる。
【図９】一例における、照合判定プロセスを実行する場合に行われる一連のステップを示すフロー図を図示する。
【図１０】一実施形態における、シミュレータの実装を提供するシステムの構成要素を概略的に図示する。
【図１１】「照合セグメント」命令を実装するために使用される幾つかの実施形態における装置に存在する比較回路を図示するが（それ自体は本技術の主題ではない）、比較回路はまた、本技術の文字列照合命令を実装するために使用される。
【発明を実施するための形態】
【００１０】
少なくとも幾つかの例は装置を提供し、装置は、命令をデコードするための命令デコーダ回路と、入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、データ処理回路とを備え、命令デコーダ回路が、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、データ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
【００１１】
提供されるデータ処理装置は、一連の事前画定された値が入力ベクトルに存在するか否かを判定することができる。各々が特定の値を含む、複数の入力要素で構成される入力ベクトルは、様々な文脈においてデータ処理装置によって取り扱われてもよい。そして、この結果、入力ベクトルがデータ値の文字列である場合には、入力データベクトルの要素に対する比較演算が、シーケンス（部分文字列）における値が入力データ（文字列）の連続する入力要素において見つけられるか否かを判定されることができるように実行される。このような比較演算を支援するために、本技術は、命令デコーダ回路からの制御信号に応答して、入力ベクトルのセグメントにおける入力要素の値を参照データ項目におけるそれぞれの参照要素の値と比較するデータ処理回路を提供する。参照データ項目が要素の特定の数を含むことに限定されないことが理解されよう。
【００１２】
本技術は、このようなデータ処理装置を提供する場合に直面する実際的な問題が、要求される比較演算の実行に関連する回路の複雑性が大きくなるほど、特に、要求される回路の提供が実用的でなくなる程度までに、入力要素と参照要素との間で実行される必要がある比較の順列の数の増加に起因して、入力データ項目が大きくなることであると認識する。この文脈においては、本技術は、入力ベクトルのセグメントにおける連続する入力要素の要求されるセットの各々が参照データ項目（検索キー）の連続する参照要素におけるそれぞれの値に照合するか否かを判定するために、データ処理回路（命令デコーダ回路によって生成される制御信号によって制御される）を提供する。連続する入力要素のこの要求されるセットは、以下でより詳細に議論されるように、様々に画定されてもよいが、一般的に、このアプローチは、回路が実際に提供されることができ、要求される比較演算が実行されることができることを提供する。特に、部分文字列の検索を実行する効率は、それぞれの参照要素を使用してセグメント化されたベースにおける比較を実装することによって向上する。
【００１３】
幾つかの例においては、比較回路は、制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の要求されるセットは、その比較演算のためのセグメントにおけるそれぞれの候補オフセットにおいて開始し、複数の比較演算の候補オフセット値はセグメントに及ぶ。言い換えれば、候補オフセットは、比較演算を実行するためのセグメントにおけるオフセットを指し示すために、照合判定プロセスによって実行される各比較演算のために判定される。比較演算は、入力ベクトルのセグメントの全てのオフセットに対応する各候補オフセット値のために実行される。このように、比較値は、各比較演算によって決定され、所与の候補オフセット値に対応する。比較演算のオフセットは、それぞれの参照要素と比較されるセグメントにおける入力要素のセットの位置を示す。複数の候補オフセット（候補オフセット値）の各々のために比較演算を実行することによって、セグメントにおいて見つけられる入力要素の範囲内の部分文字列の各可能性のある位置のために比較値を判定することが可能である。加えて、照合判定プロセスの各比較演算が入力ベクトルの所与のセグメントにおける入力要素のみにおいて実行されるので、データ処理装置の複雑性は、大きい入力ベクトルのためにも制御されることができる。このように、入力ベクトルにおける部分文字列の全ての可能性のある位置が検索されて、データ処理回路の複雑性をまだ管理する一方で部分文字列の検索の精度を向上させる。
【００１４】
幾つかの例においては、連続する入力要素の要求されるセットの要素の数は、参照データ項目における参照要素の数からそれぞれの比較演算のそれぞれの候補オフセットを引いたものに等しい。入力ベクトルにおける部分文字列（参照データ項目）を検索する場合に、部分文字列の長さは、セグメントの長さより長くてもよい。この状況においては、部分文字列が入力ベクトルにおいて見つけられる場合には、それは、少なくとも２つのセグメントに亘って位置する。加えて、参照データ項目の第１の参照要素がセグメントにおいて見つけられてもよいが、参照データ項目のサイズは、セグメントのサイズと第１の参照要素が見つけられるオフセット値との間の差より大きくてもよい。この状況においては、部分文字列はまた、少なくとも２つのセグメントに亘って位置する。このように、参照データ項目のサイズ及びオフセット値に基づいて、連続する入力要素の要求される数を判定するための必要性がある場合がある。この文脈においては、本技術は、連続する入力要素の要求されるセットが参照データ項目のサイズからそれぞれの比較演算の候補オフセット値を引いたものであると決定されてもよいことを提案し、これは、比較演算が、セグメントの残りの入力要素（それぞれの候補オフセット位置以降のセグメントの入力要素）が対応する参照要素に対して比較される照合であるか否かを判定することを可能にする。このように、部分文字列が複数のセグメントに亘って位置する場合であっても、文字列は、入力ベクトルにおいて見つけられることができる。言い換えれば、セグメントに対する比較の制限は（潜在的なハードウェアの複雑性を管理するために）、検索されることができる部分文字列の長さを制限する必要はない。
【００１５】
幾つかの例においては、比較回路は、設定される比較値に応答して、候補オフセット値に照合するように検出されたオフセット値を設定し、検出されたオフセット値は、比較演算によって連続する入力要素の第１の入力要素として識別されたベース入力要素を指し示す。各比較演算のために、関連付けられたオフセット値は、比較演算を始めるためのセグメントにおけるオフセットを指し示すために使用される。オフセット値は、それぞれの参照要素と比較するためのセグメントにおける第１の入力要素を指し示す。比較値は、それぞれの比較演算中に、連続する入力要素の要求される数がセグメントにおいて見つけられたことを指し示す。このように、その比較演算のために使用されるオフセット値（候補オフセット値）は、連続する入力要素の第１の入力要素のセグメントにおける位置を指し示す。
【００１６】
連続する入力要素の要求されるセットが見つけられる比較演算によって使用される候補オフセット値に照合するように検出されたオフセット値を設定することによって、可能性のある部分文字列の照合のベース入力要素に対応する入力要素（検索される部分文字列の第１の入力要素）を識別することが可能である。連続する入力要素のベース入力要素を識別することが、部分文字列の全ての入力参照要素が入力ベクトルにおいて見つけられることをまだ要求しないが、連続する入力要素の要求されるセットが見つけられただけであることに留意される必要がある。実際には、部分文字列全体が見つけられたか否かを判定するために、入力ベクトルの他のセグメントにおいて複数のカウント演算を実行することが必要であってもよい。検出されたオフセット値を設定することによって、入力ベクトルの更なるセグメントが最初に処理されることが要求される場合であっても、部分文字列の位置は見つけられることができる。
【００１７】
幾つかの例においては、照合判定プロセスは、セグメントのための照合ベクトルを判定することを含み、各比較演算の比較値は、照合ベクトルにおけるそれぞれの照合要素の値を設定するために使用され、各それぞれの照合要素は、比較値を判定した比較演算のそれぞれの候補オフセットに対応する照合ベクトルにおける位置を有する。この結果、幾つかの例においては、照合判定プロセスは、連続する入力要素の要求されるセットとそれらのそれぞれの参照要素との間の照合を識別するために、それぞれの比較演算によって何れかの候補オフセットが使用されるかを判定する。この照合ベクトルは、データ処理回路によって実行される更なる処理、例えば、オーバーフロー比較演算によって使用されてもよい。これは、入力ベクトルがセグメントに区画化される場合であっても、入力ベクトルにおける部分文字列の可能性のある位置が見つけられることができることを意味する。このように、部分文字列の位置が確実に判定されることを妨げることなく、ハードウェアの複雑性が管理可能に制限されることができる。
【００１８】
幾つかの例においては、データ処理回路は、制御信号に応答して、各々が複数のセグメントの中からそれぞれのセグメントにために実行される、複数の照合判定プロセスを実行する複数の比較回路を更に備える。入力ベクトルは、複数のセグメントに区分され、各セグメントは、複数の入力要素を含む。各照合判定プロセスは、所与のセグメントを使用して実行され、連続する入力要素の要求されるセットにおける入力要素の各々が参照データ項目におけるそれぞれの要素に照合する値を有するか否かを判定することによって実行される。複数の比較回路がデータ処理回路内に構成され、各々が入力ベクトルからのそれぞれのセグメントを使用して照合判定プロセスを実行する。これは、入力ベクトルがセグメントにおいて並列に効率的に処理されることができることを意味する。入力ベクトルをセグメント化するこのアプローチは、照合判定プロセスがハードウェアの複雑性を管理可能なレベルに制限することによって実際に実装されることを可能にする。
【００１９】
幾つかの例においては、各照合判定プロセスは、それぞれのセグメントのためのそれぞれの照合ベクトルを判定することを含み、各比較演算の比較値は、照合ベクトルにおける照合要素の値を設定するために使用され、各それぞれの照合要素は、比較値を判定した比較演算のそれぞれの候補オフセットに対応するそれぞれの照合ベクトルにおける位置を有する。照合ベクトルは、各々が比較値に照合するように設定される値を含む、複数の照合要素で構成される。従って、各照合要素における照合値は、連続する入力要素の要求されるセットのベース入力要素が照合要素のそれぞれの位置に照合するオフセットにおいて識別されるか否かを指し示す。このアプローチは、判定されたオフセット値が照合ベクトルにおける設定された照合値を有する照合要素の位置から暗示的に判定されることができることを意味する。よって、照合要素の照合値を、それぞれの比較値を判定した比較演算のオフセット値を指し示す位置で設定することによって、大幅な追加のハードウェアを要求することなしに、ベース入力要素が効率的に識別されることができる。
【００２０】
幾つかの例においては、複数の比較回路の比較回路は、満たされるオーバーフロー条件に応答して、複数の比較回路の隣接する比較回路によって使用されるためのオーバーフローフラグを伝播し、オーバーフロー条件は、比較値が設定され、連続する入力要素の要求されるセットにおける要素の数が参照データ項目における参照要素の数より少ない場合に満たされる。入力データ項目がセグメントにグループ化されるので、参照データ項目が複数のセグメントに亘って位置してもよい場合がある。このように、本技術は、１つの比較回路から隣接する比較回路にインジケータを伝播して、参照データ項目の一部（連続する入力要素の要求されるセット）のみが比較回路のセグメントにおいて見つけられたことを指し示すことを提案する。これは、隣接する回路が、参照データ項目の残りの部分（又は残りの部分の一部）が後続のセグメントにあるか否かを確実に判定することを可能にする。
【００２１】
従って、オーバーフロー条件が満たされる場合には、オーバーフローフラグは隣接する比較回路に伝播される。参照データ項目における参照要素の数が所与の比較演算のための参照要素の要求されるセットより多い場合、そして、ベース要素が所与の比較演算において識別される場合には、参照データ項目の少なくとも残りの部分は後続のセグメントに位置する。このように、比較演算は、オーバーフローフラグを生成し、所与の比較演算の判定されたオフセット値を参照して連続する入力要素の要求されるセットを判定するために隣接する比較回路に指し示す。これは、検索されるサブセットを、各々が入力ベクトルのそれぞれのセグメントに対応する、複数の連続する入力要素の要求されるセットに分離することによって、長いサブセットが入力ベクトルにおいて効率的に識別されることができることを意味する。
【００２２】
幾つかの例においては、オーバーフローフラグが設定される場合には、隣接する比較回路は、設定されたオーバーフローフラグに応答して、比較回路の照合判定プロセスによって判定された照合ベクトルに基づいて連続する入力要素の要求されるオーバーフローのセットを判定するために、オーバーフロー比較演算をまた実行する。照合決定プロセスによって判定された照合ベクトルは、部分文字列の可能性のある照合のベース入力要素を指し示す。照合ベクトルにおける照合要素の位置が検出されたオフセット値を指し示すので、照合ベクトルは、参照データ項目の残りの部分のそれぞれの参照要素に照合するために要求される隣接する比較回路によって使用されるセグメントの入力要素の数（連続する入力要素の要求されるオーバーフローのセット）を判定するために（参照データ項目の既知の長さに加えて）使用されることができる。（隣接する比較回路に伝播されたオーバーフローフラグが設定される場合には）隣接する比較回路におけるセグメントのための比較演算に加えて、オーバーフロー比較演算が実行されることができることが理解されよう。連続する入力要素の要求されるオーバーフローのセットを使用してオーバーフロー比較演算を実行することによって、所与のセグメントのための比較演算の実行に加えて、参照データ項目の残りの部分が検索されることができるので、入力ベクトルにおける長いサブセットを確実に検索することが可能である。
【００２３】
幾つかの例においては、連続する入力要素の要求されるセットは、各々が比較演算によって使用される入力要素に対応する、複数の入力述語要素を含む入力述語ベクトルによって示され、複数の入力述語要素は、複数の入力要素の何れが連続する入力要素を含むかを示す。照合判定プロセスにおける複数の比較演算の各比較演算のための、連続する入力要素の要求されるセットは異なる。比較回路は、複数の比較器を備えてもよく、各比較器は、入力要素の値を対応する参照要素の値と比較する。複数の入力述語フラグを含む提案される入力述語ベクトルは、比較器の何れが設定される必要があるかを示すように提供されてもよい。よって、連続する入力要素の要求されるセットの各入力要素をそれらのそれぞれの参照要素と比較するために要求されるこれらの比較器のみをアクティブにすることが可能である。このように、実行する必要があるこれらの比較のみを実行することが可能になり、冗長な処理の量が削減されるので、照合判定プロセスを実行する場合に比較回路の電力消費は低減されることができる。
【００２４】
幾つかの例においては、装置を操作する方法が提供され、方法は、命令をデコードするステップと、入力データベクトルの１つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置のデータ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するステップとを含む。
【００２５】
少なくとも幾つかの例は、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムを提供し、コンピュータプログラムが、命令をデコードするための命令デコードプログラムロジックと、入力データベクトル構造に命令によって指定されたベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、入力データベクトル構造が、入力データベクトル構造におけるそれぞれの位置において複数の入力データベ項目構造を含む、データ処理プログラムロジックとを備え、命令デコードプログラムロジックが、入力データ項目構造を指定するカウント命令に応答して、カウント演算を実行して、参照データ項目構造の参照要素における参照値に照合する値を有する入力データ項目構造のサブセットの入力要素の数を示すカウント値を判定するようにデータ処理プログラムロジックを制御するために制御信号を生成する。
【００２６】
少なくとも幾つかの例は、上記の例の何れかによるコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体を提供する。
【００２７】
次に、幾つかの特定の実施形態が、図面を参照して説明される。
【００２８】
図１は、本技術の様々な例を具現化してもよいデータ処理装置１００を概略的に図示する。装置は、それが実行する一連の命令に応答して、データ項目にデータ処理演算を実行するデータ処理回路１０２を備える。これらの命令は、データ処理装置１００がアクセスするメモリ１０４から取り出され、当業者にはよく知られている方法で、フェッチ回路１０５がこの目的のために提供される。更に、フェッチ回路１０５によって取り出された命令は、処理回路１０２、並びにレジスタのセット１０３及びロード／ストアユニット１０６の配置及び演算の様々な態様を制御するように構成される制御信号を生成する命令デコーダ回路１０１に渡される。一般的に、データ処理回路１０２は、パイプライン方式で構成されてもよいが、その詳細は本技術には関係しない。図１が表す一般的な配置は当業者に知られており、その更なる詳細な説明は、単に簡潔さの目的のために本明細書では省略される。図１に見られることができるように、レジスタ１０３はそれぞれ、処理回路が、指定されたレジスタ内の指定されたデータ要素にデータ処理演算を適用することができ、又は指定されたレジスタ内の指定されたグループのデータ要素（「ベクトル」）にデータ処理演算を適用することができるように、複数のデータ要素のための記憶装置を備える。特に、図示されたデータ処理装置は、レジスタ１０３に保持される入力ベクトルのセグメントに関する比較演算の実行に関係し、幾つかの特定の実施形態を参照して以下でより詳細に更に説明される。命令の実行においてデータ処理回路１０２によって要求されるデータ値、及びそれらのデータ処理命令の結果として生成されたデータ値が、ロード／ストアユニット１０６によってメモリ１０４に書き込まれ、メモリ１０４から読み取られる。また、一般的に、図１におけるメモリ１０４は、典型的には、処理回路が後に実行する一連の事前画定された命令（「プログラム」）の一部として、本技術の命令が格納されることができるコンピュータ可読記憶媒体の例として見られることができることに留意されたい。しかし、処理回路は、ＲＡＭ、ＲＯＭのような種々の異なるソースからネットワークインターフェイス等を介して、このようなプログラムにアクセスしてもよい。本開示は、処理回路１０２が実行することができる様々な新規な命令を説明し、以下の図は、これらの命令の性質、これらの命令の実行を支援するためのデータ処理回路の変形、等を更に説明する。
【００２９】
図２は、一実施形態におけるデータ処理装置２００の構成要素の幾つかの更なる詳細を概略的に図示する。比較回路２０４を備える図２のデータ処理回路２０１が示される。図示されるように、データ処理回路はレジスタファイル２０３にアクセスし、命令デコード回路２０２によって生成された制御信号に起因してこのアクセスは生じる。図１に関連して上記で説明されたように、一連の命令は、フェッチ回路２０６によってメモリ２０７から取り出され、命令デコーダ回路２０２に渡されるが、データ処理装置によってそのデータ処理演算の実行のために要求されるデータ値は、ロード／ストアユニット２０８によってメモリ２０７から取り出され、レジスタファイル２０３に渡される。命令デコーダ回路２０２は、文字列照合命令に応答して、その一部が後にロード／ストアユニット２０８によって指定されたメモリアドレスに書き戻される、レジスタファイル２０３に保持されたデータ値の内容を使用して、データ処理回路２０１にデータ処理演算を実行させるように、適切な制御信号を生成する。この処理のより詳細は、次の図を参照して説明される。
【００３０】
図３は、一実施形態におけるデータ処理回路２０１の照合判定回路３０１を概略的に図示する。照合判定回路３０１は、複数の比較演算を実行する。これらの演算を支援するために提供された比較回路２０４は、本質的に比較器のマトリックスを備え（この例については図３における中央の４×４のグリッドに対応する１６個の比較器である）、各々がその行に提供される１つの入力（すなわち、参照データ項目要素の１つ）及びその列に提供される別の入力（すなわち、入力データ項目要素の１つ）を取得して、入力データ項目要素の何れかと参照データ項目要素の何れかとの間の比較が行われることができる。入力データ項目と参照データ項目との両方が、レジスタのセット３０２におけるレジスタの内容の一部（各々が文字列照合命令において指定される）によって提供され、示されるように、例えば、フリップ・フロップの列に各々、一時的に保持されて、比較器はそれぞれ、比較のためにそれらのそれぞれの一対の入力値を受け取ることができる。
【００３１】
図３から、図示された入力ベクトルを保持するレジスタがセグメントにグループ化されて示されることに留意されたい。これらのセグメントは、比較回路２０４の「幅」、すなわち、この例においては４つの要素に対応する。このように、明確さのために、図３は１つのセグメントに対応する比較回路のみを図示することが理解されるべきであり、実際には、このような比較回路は、ベクトルの全幅が検索されることができるように、各セグメントのために装置に存在する。この１つのセグメントにおける各比較演算の結果は、照合ベクトル３０３に指し示される。照合ベクトルを生成するために、比較回路における比較器はそれぞれ、各入力要素に含まれる入力値をそれぞれの参照要素における参照値と比較するように構成される。各比較器は、所与の比較結果が入力値とそのそれぞれの参照値との間の照合であるか否かを示す論理値を判定するように構成された論理ゲートのセットを備える。示される例を参照すると、照合判定プロセスの一部として実行される複数の比較演算の中からの第１の比較演算である比較演算が実行される。簡単に言えば、このセグメントにおいて、比較回路は、部分文字列「ｈａｌｏ」が文字列「ｈａｌｏ」において見つけられるか否かを判定する。丸で囲まれた値によって示される比較演算は、入力データ項目の第１の入力要素及び後続の各入力要素が連続する入力要素の要求される数を含むことを指し示す「０」の候補「オフセット値」を有する。このように、図に示されるように、連続する入力要素の「要求される数」は「４」である。この比較演算においてなされた個々の比較（個々の入力要素とそのそれぞれの参照要素との間の比較）（これらは「連続する入力要素に照合する」というラベルが付いた円で囲まれた値で指し示される）はそれぞれ、結果「１」との照合を示す。他の比較がまた実行され、この場合においては、全ての結果が全て「０」である。しかし、丸で囲まれた比較演算のために、連続する入力要素の要求されるセット（「ｈ」、「ａ」、「ｌ」、及び「ｏ」）の中からの各入力要素が、参照データ項目のそれぞれの参照要素と比較される。この例においては、参照データ項目が、「０」のオフセット値に対応する位置において始まる入力データ項目において見つけられる。このように、示されるように、比較演算は、各入力要素とそのそれぞれの参照要素との間の照合を指し示す。従って、比較回路に関して、照合ベクトルの生成のために、照合条件が満たされる場合に要求されるものは、設定される「０」の候補オフセット値に対応する照合ベクトル３０３における照合要素の値（「見つけられたスタート」というラベルが付く）であることが理解されるべきである。これは、個々の比較器間の対角線経路間の接続によって提供される（その一例は、図３における丸で囲まれた４つの比較器の結果のセットによって与えられる）。勿論、この１６個の比較器のセットにおける他の可能性のある対角線経路はより短く、２つの３−比較器経路、２つの２−比較器経路、及び２つの１−比較器経路がある。ＡＮＤゲートが、対角線における全ての要素が見つけられる場合に、（照合ベクトルの対応する要素を投入するために）設定値が生成されるように、各対角線経路における比較器を接続する。言い換えれば、各対角線は、本明細書で使用される用語における「比較演算」を表す。また、そして、参照データ項目が入力データ項目内（すなわち、この比較回路が対応するこのセグメント内）の何れかで始まる場合に、示される円で囲まれたもの及びその右下のものを含む対角線のみが、参照データ項目の少なくとも一部を見つけることができることに留意されたい。しかし、以下で議論されるように、参照データ項目の後半部分（すなわち、「ｈａｌｏ」の例においては、これは「ａｌｏ」、「ｌｏ」、又は「ｏ」である）が、このセグメントにおいて、先のセグメントにおける前半部分と共に、見つけられることができる。よって、一般的に、全ての比較器が実際にアクティブであり、このように、図３に示される比較器の結果の４×４のマトリックス全体が与えられる。照合ベクトルは、ベクトルレジスタ３０２の意味における「ベクトル」ではなく、単に、例えば、フリップ−フロップのセットに一時的に保持される、照合判定回路における内部生成アレイにすぎないことに留意すべきであり、それによって、それは、シーケンスのスタートを（見つかった場合には）識別し、これを更に通知する。
また、参照データ項目の全ての要素が現在のセグメントにおいて見つけられるので、オーバーフローフラグが設定されないことに留意されたい（図５に対して比較）。
【００３２】
更に留意する点として、（文字列照合命令だけでなく）他のタイプの命令に応答する装置においては、比較器の同じセットが、他のタイプの比較又は他のタイプの処理演算を実行するために使用されてもよい。このハードウェアの再利用は、装置がより小さいフットプリントを有し、又は別の方法で戴置することを可能にし、所与のフットプリントが、より広い範囲のデータ処理を支援することができる。例えば、図１１に対して後に説明されるように、装置は、セグメントにおいてカウント演算を実行するために、比較器間に追加の論理ゲートを備える比較器の同じセットを使用する「照合セグメント」命令に更に応答してもよい。
【００３３】
図４は、一実施形態におけるデータ処理回路２０１の照合判定回路３０１を概略的に図示する。照合判定回路３０１はまた、複数の比較演算（すなわち、それぞれの比較の対角線のセット）を実行する。図４は図３に類似するが（実際には、異なる入力であるが、全く同じ回路を表してもよい）、図４の例においては（図３とは対照的に）参照データ項目（「ｃａｔ」）が３つのみの要素の長さであることが認識される。このように、全ての入力データ項目要素（４）とこの回路が取り扱うことができる全ての参照データ項目要素（４）との間において、全ての可能性のある比較（１６）がなされる必要はなく、この目的のために、プログラマに、要求されない比較器（すなわち、比較器の４行目）を一時的に無効にさせることができる、入力述語ベクトル（図７を参照）を使用するための可能性を提供してもよい。図４の例においては、セグメントが示されるように入力値［ｆａｃｔ］を有する４つの入力要素のセットを含み、参照データ項目が参照値［ｃａｔ］を有する３つの参照要素を含むことに留意されたい。言い換えれば、簡単に言えば、このセグメントにおいては、比較回路が、部分文字列「ｃａｔ」が文字列「ｆａｃｔ」において見つけられるか否かを判定する。図３を参照して先に説明されたように比較が実行されるが、この場合には、部分文字列「ｃａｔ」を見つける比較演算は、「１」の候補オフセット値を有する。言い換えれば、これは、実際には、部分文字列「ｃａｔ」の全体が入力データ項目において見つけられることができる、実行される比較演算の第２のセットである（すなわち、オフセット０において開始するか、又はオフセット１において開始するか）。勿論、第１の列（「０」の候補オフセット値）においては、入力データ項目の第１（インデックス０）の要素にある「ｆ」では、参照要素の何れにも照合するものは見つけられない。しかし、入力要素のインデックス「１」において始まる比較演算は、この例においては部分文字列を見つけるものである。「要求される数」は、参照データ項目の長さ及び候補オフセット値を参照して判定される。このように、入力データ項目のインデックス１において始まる比較のために、参照データ項目の長さは、候補オフセット値以上のインデックスを有する入力要素の数に等しく（すなわち、３）、「要求される数」は「３」である。よって、示されるように、連続する入力要素の要求されるセットの各入力要素は、そのそれぞれの参照要素に照合し、「１」の候補オフセット値に対応する照合ベクトル３０３における照合要素の値が設定される。照合が見つけられた比較演算によって使用される候補オフセット値は、「オフセット値」（検出されたオフセット値）に設定され、照合ベクトルの対応するインデックスにおける照合ベクトル要素の値がそれに応じて設定される。
【００３４】
図５は、照合判定回路３０１を図示し、図５は、図３と同様であり（実際には、異なる入力であるが、全く同じ回路を表してもよい）、それは、一例による照合判定プロセスにおいて複数の比較演算を実行する。特に、参照データ項目は再び４つの参照要素を有するが、図示された比較回路に対応する（レジスタ３０２においてアクセスされる）セグメントは、参照データ項目（「ｈａｌｏ」）の一部のみ（最初の２つの文字「ｈａ」）を含むことに留意されたい。照合判定プロセスは、各々が候補オフセット値に対応する複数の比較演算を実行する。図５は、「２」の候補オフセット値が使用される比較演算を強調する。参照データ項目の長さが候補オフセットより高次のインデックスを有するインデックスの要素の残りの数より大きいので、入力要素の中からの連続する入力要素の要求されるセットは、「２」（候補オフセットに対応する）のインデックスを有する入力要素及び最後の入力要素（「３」のインデックスを有する）によって境界付けられる。このように、強調された比較における連続する参照要素の要求される数は２である。示されるように、「２」のオフセット値から開始する場合には、入力要素の要求されるセット（すなわち、最初の２文字）がセグメントにおいて見つけられる。よって、オフセット値に等しいインデックスを有する照合要素が設定され、その上、参照データ項目の一部のみが現在のセグメントにおいて見つけられるので、オーバーフローフラグが設定される。そして、このフラグが隣接する比較回路に伝播され、幾つかの例においては、オフセット値（検出されたオフセット値）が、隣接する回路に加えて伝播される。重要なことにも、部分文字列の検出は、このような例においては、このセグメントの結果に基づいて通知されるだけでなく、次に説明されるように、次のセグメントにおいて部分文字列の残りが見つけられる（又は少なくとも継続される）ことを要求する。
【００３５】
図６は、一例によって、照合判定プロセスのオーバーフロー比較演算がまた実行される照合判定回路３０１における比較回路２０４の別のセットを図示する。オーバーフローフラグが先の（すなわち、図示されるように左側に位置する）比較回路から伝播される場合に、オーバーフロー比較演算が関連する。オーバーフロー比較演算は、検索される参照データ項目の全てより少ないもの（少なくとも第１の参照要素を省略する）に対応する比較の対角線の実行である。従って、図６の例においては、これらは、比較器のセットの半分である左上の三角形の対角線である。これらの比較は、常に実行されてもよく、要求されない場合には省略されることができる（しかし、これは、不要な場合にそれらをオフに切り換えるための追加の回路、及び最初のトリガー信号（すなわち、先のセグメントからのオーバーフロー信号）を要求し、そして、これはまた、このセグメントの比較が先のセグメントの比較がそれらの結果を生成した単位で実行されることができないので、タイミングに影響を及ぼす）。参照データ項目の残りの部分の少なくとも一部が後続のセグメントにおけるそれぞれの入力要素に照合するか否かを判定するために、オーバーフロー比較演算が実行される。後続のセグメントは、入力ベクトルにおける次のセグメントであり、レジスタ３０２においてアクセスされる。図６に図示されるように、丸で囲まれた比較演算（「０」の候補オフセット値での比較演算、また、「要求される数」が参照項目の長さより小さい場合）は、参照データ項目の要求される後半部分を見つける。要求される数は、図５における照合を判定した比較演算の検出されたオフセット値に基づいて判定される（図５に示されるように、前の照合判定プロセスの照合ベクトルによって指し示されるように）。特に、参照データ項目の残りの部分がセグメントのサイズよりも小さいので、要求される数は、参照データ項目の長さから前に検出されたオフセット値を引いたものに等しい（つまり、図に示されるように「２」に等しい）。従って、連続する入力要素の要求されるセットは、オーバーフロー比較回路によって使用されるセグメントにおける第１及び第２の入力要素によって境界付けられる。このように、オーバーフロー比較演算は、第１及び第２の入力要素における値を参照データ項目のそれらのそれぞれの参照要素における値と比較し、これらの参照要素は、この例においては「２」によってオフセットされ、第１のデータ入力項目が「ｌ」で、第２のデータ入力項目が「ｏ」である必要があることを意味する。示されるように、連続する入力要素の要求されるセット［ｌｏ］は、実際には対応する参照要素に照合し、それ故に、オーバーフロー比較演算によって使用される「０」のオフセット値に等しいインデックスを有する照合要素が設定される。前のセグメントのオーバーフローフラグが設定される場合には、設定された照合要素は異なる意味、つまり、部分文字列がこのセグメントにおいて継続されたことの確認としての意味を有することに留意されたい。そして、比較回路は、完全なサブセット（参照データ項目）が、ベース入力要素を識別した照合判定プロセス（この場合には、前の照合判定プロセス）のための照合ベクトルにおける照合要素のインデックスによって指し示される位置で、入力ベクトルにおいて見つけられたことを判定することが可能である。
【００３６】
図７は、一例による入力述語ベクトルによって制御される比較器のグリッドを図示する。入力述語ベクトルは、比較回路２０４における比較器のマトリックスに対して何れの比較器をアクティブにするかを指し示すために使用されることができる。例えば、参照データ項目（検索されるキー／部分文字列）の長さがセグメントサイズより短い場合、比較器の一部は無効にされることができる。比較回路２０４は、各々が所与の入力要素とそれぞれの基準要素との間の比較に対応する複数の比較器を備える。このように、４のセグメントサイズ及び４の可能性のある参照データ項目サイズを含む図示される例においては、４×４のグリッドで構成された１６個の比較器のグリッドがある。図７に示される入力述語ベクトにおける入力述語フラグはそれぞれ、示されるように、所与の行における比較器に対応し、比較器の所与の行は、各入力要素の値を所与の参照データ項目要素と比較する。例えば、図７においては、入力述語ベクトルの下位２ビットのみが設定され、これは、参照データ項目の最初の２つの要素のみがアクティブである（すなわち、検索される）ことを意味する。言い換えれば、この例においては、見つけられる必要がある全てが「ｈａ」である。入力述語ベクトルにおける上位２ビットが設定されない場合、比較器の上位２行は無効にされる。最後に、部分文字列「ｈａ」は、実際には、セグメントにおける第３及び第４の位置のための丸で囲まれた比較演算において見つけられ、それ故（上記で説明されたように）、第３の位置での照合ベクトルにおける照合要素が設定される。
【００３７】
図８は、別の比較回路に隣接する比較回路に入力されるオーバーフローフラグの使用を図示する。特に、レジスタ８０２と、複数の比較回路８０１−１、８０１−２、８０１−３、及び８０１−４とを備えるデータ処理回路１０２が図示される。この結果、これらの４つの比較回路は、所与のセグメントにおける検索のための比較器を提供し、共に、４つのセグメントを含むベクトルの全幅に亘る検索が実行されることを可能にする。オーバーフローフラグの伝播は、検索されるシーケンスが少なくとも１つのセグメントの境界を横切ることを可能にする。示されるように、比較回路８０１−１から８０１−２に伝播されたオーバーフローフラグは設定されないが、比較回路８０１−２から８０１−３に伝播されたオーバーフローフラグは設定される。参照データ項目が入力ベクトルにおいて見つけられたが２つのセグメントに亘って位置する、図６及び図７に示される例においては、オーバーフローフラグが設定され、第１の比較回路８０１−２から、図７を参照して上記で説明されたようなオーバーフロー比較演算を実行する、隣接する比較回路８０１−３に伝播される。
【００３８】
図９は、一例によって装置を操作する方法を示すフロー図を図示する。プロセスはステップ９００において始まる。ステップ９０１において参照データ項目がロードされる。ステップ９０２において次の（第１の反復における第１の）入力データ項目がロードされる。ステップ９０３において次の（第１の反復における第１の）オフセット値を選択することによってプロセスが継続する。ステップ９０４において、少なくとも１つの入力要素の中から連続する入力要素の要求される数がそれぞれ、少なくとも１つの参照要素の連続する参照要素におけるそれぞれの値に等しい値を有するか否かを示す比較値を判定するために比較演算が実行される。ステップ９０５は、比較値の値を有するように、照合ベクトルの対応する照合要素を設定する。ステップ９０６は、候補オフセット値が最後のオフセット値であるか否かを判定する。そうでない場合には、ステップ９０６における条件が満たされるまで、ステップ９０３〜９０５が繰り返される。ステップ９０６における条件が満たされる場合には、ステップ９０７において、照合ベクトルが出力される。ステップ９０８において、入力データ項目（セグメント）が最後の入力データ項目であるか否かが判定される。そうでない場合には、ステップ９０８における条件（これは最後のオフセット値であった）が満たされるまで、ステップ９０２〜９０７が繰り返される。比較演算を最も簡単に説明するために、フロー図はこれらを順次ステップとして列挙するが（内部ループにおけるステップ９０４の各実行反復において）、比較回路の例の上記の説明から、比較器のマトリックス（例えば、議論された例においては４×４）が提供される場合には、これらの反復が典型的には並列に実行され、従って、所与の入力データ項目（すなわち、セグメントの内容）のための全ての比較演算が同時に実行されることが理解されることに留意されたい。同様に、入力データ項目（すなわち、セグメントの比較）を最も簡単に説明するために、フロー図はこれらを順次ステップとして列挙するが（外部ループのステップ９０２を通る各実行反復において）比較回路の例の上記の説明から、比較回路のセット（例えば、議論された例においては４つの並列）が提供される場合には、これらの回路が典型的には並列に演算し、従って、命令によって参照されるベクトルの各入力データ項目（すなわち、セグメントの内容）が同時に実行されることが理解されることに留意されたい。そして、最後に、ステップ９０８における条件が満たされた場合には、方法はステップ９０９において終了する。
【００３９】
図１０は、使用されてもよいシミュレータの実装を図示する。先に説明された実施形態は、関連する技術を支援する特定の処理ハードウェアを操作するための装置及び方法に関する本発明を実装するが、コンピュータプログラムの使用を介して実装される本明細書で説明される実施形態に従って、命令実行環境を提供することがまた可能である。このようなコンピュータプログラムは、それらがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、多くの場合、シミュレータと呼ばれる。多種のシミュレータのコンピュータプログラムには、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータが含まれる。典型的には、シミュレータの実装は、任意にホストオペレーティングシステム７２０を実行し、シミュレータプログラム７１０を支援する、ホストプロセッサ７３０において実行してもよい。幾つかの構成においては、ハードウェアと提供された命令実行環境との間に複数のシミュレーション層があってもよく、及び／又は同じホストプロセッサにおいて提供される複数の個別の命令実行環境があってもよい。歴史的に、合理的な速度で実行するシミュレータの実装を提供するために強力なプロセッサが要求されるが、このようなアプローチが、互換性又は再利用の理由のために、別のプロセッサにネイティブのコードを実行させる要望がある場合のように、特定の状況においては正当化される場合がある。例えば、シミュレータの実装は、ホストプロセッサハードウェアによって支援されない追加的な機能を命令実行環境に提供してもよく、又は典型的には様々なハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、非特許文献１において与えられる。
【００４０】
特定のハードウェアの構成又は機能を参照して実施形態が前に説明された範囲内で、シミュレートされた実施形態において、同等の機能が、適切なソフトウェアの構成又は機能によって提供されてもよい。例えば、特定の回路が、コンピュータプログラムロジックとしてシミュレートされた実施形態において実装されてもよい。同様に、レジスタ又はキャッシュのようなメモリハードウェアが、ソフトウェアデータストラクチャとしてシミュレートされた実施形態において実装されてもよい。前に説明された実施形態において参照された１つ以上のハードウェア要素がホストハードウェア（例えば、ホストプロセッサ７３０）に存在する構成においては、幾つかのシミュレートされた実施形態が、適切な場合にはホストハードウェアを利用してもよい。
【００４１】
シミュレータプログラム７１０は、コンピュータ可読記憶媒体（非一時的媒体であってもよい）に格納されてもよく、プログラムインターフェース（命令実行環境）を、シミュレータプログラム７１０によってモデル化されるハードウェアアーキテクチャのアプリケーションプログラムインターフェイスと同じであるターゲットコード７００（図２に示されるアプリケーション、オペレーティングシステム、及びハイパーバイザーを含んでもよい）に提供する。この結果、上記で説明された文字列照合命令を含むターゲットコード７００のプログラム命令は、上記で説明された装置２のハードウェアの機能を実際には有しないホストコンピュータ７３０がこれらの機能をエミュレートすることができるように、シミュレータプログラム７１０を使用して命令実行環境内から実行されてもよい。
【００４２】
図１１は、上記の様々な例（すなわち、「比較回路」における４×４のマトリックス）において説明されたような１６個の比較器の同じセットを図示するが、これらの比較器がまた装置における別の使用に対して置かれる。示される例においては、これは、装置のためにまた画定される「照合セグメント」（別名ＭＡＴＣＨＭＳＥＧ）命令に応答するそれらの使用に対応する。このＭＡＴＣＨＳＥＧ命令は、各比較回路の幅に照合するようにセグメントに再び細区画された入力ベクトルを含むソースレジスタを指定し、各々が参照データ項目における対応する参照値が何回そのセグメントの要素の何れかにおいて見つけられるかを示す、カウント値のセットの各セグメントのための判定をなす。よって、図１１に示される中央の４×４のマトリックスの値は、図３を参照して（最初に）説明されたものと比較器の同じセットに対応し、比較器間に追加的な接続が提供される。上記で議論された例（図３で開始する）とは異なり、比較器の水平実行のためのこれらの接続は（図１１に示される配向において）、ラベル付きの「カウントデータ項目」の各要素における合計カウント値を与えるために、各比較のために見つけられた照合を合計する。図１１の例に示されるように、セグメントは、入力値のセット［４  ２  ２  ０］を含み、参照データ項目は、４つの参照値のセット［０  １  ２  ３］を含む。カウント演算は、参照データ項目のそれぞれの参照要素における各参照値のために実行される。このように、第１の参照値「０」のために、１つの照合が見つけられ（インデックスが０のセグメント要素において）、そして、結果のカウント値は１である。参照値「１」の第２の参照要素については、「１」の値を有するセグメントの入力要素がないので、その参照要素のためのカウント値はゼロである。これはまた、参照値「３」を有する最終の参照要素のための場合である。しかし、「２」の入力値を有するサブセットにおける入力要素の２つのインスタンスがあるので、値「２」を有する第３の参照要素に対応するカウント値は２のカウント値を有する。よって、各カウント値は、それぞれの参照値に照合する入力値を含むセグメントにおける入力要素の数を指し示す。本技術による比較演算を支援するために提供される比較回路（図２における項目２０４）は、ＭＡＴＣＨＳＥＧ命令に応答して実行されるこれらのカウント演算を追加的に支援し、この命令に応答して生成された制御信号によって、比較器の出力から得られたカウント値が出力され、本技術の文字列照合命令に応答して生成された制御信号によって、照合ベクトルが、検索される参照データ項目の照合が見つけられたか否かを（又はその場所を）指し示すように使用される。このように、所与の命令に応答して命令デコーダ回路によって生成された制御信号は、場合により特に、命令デコーダ回路に供給される命令に依存して、部分文字列の比較演算又はカウント演算の何れかを実行するように比較回路２０４を配置するように動作可能である。
【００４３】
簡単に全体を要約すると、入力ベクトル内の所与の一連の値に照合するように比較演算を実行するための装置及び装置を操作する方法が提供される。命令デコーダ回路は、入力ベクトルのセグメントを指定する文字列照合命令に応答して、データ処理回路を制御して比較演算を実行するように制御信号を生成する。比較演算は、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を判定する。複数の比較演算が、入力ベクトルのセグメントに対応する照合ベクトルを判定して入力ベクトルにおける部分文字列のスタート位置を指し示すために実行されてもよい。
【００４４】
本出願においては、「・・・に配置され（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ・・・）」という用語は、装置の要素が画定された演算を実行することができる配置を有することを意味するために使用される。この文脈において、「配置（ｃｏｎｆｉｇｕｒａｔｉｏｎ）」とは、ハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置が、画定された演算を提供する専用のハードウェアを有してもよく、或いはプロセッサ又は他の処理装置が、機能を実行するようにプログラムされてもよい。「配置され（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」は、装置の要素が画定された演算を提供するために任意の方法で変更される必要があることを意味しない。
【００４５】
添付の図面を参照して例示的な実施形態が本明細書において詳細に説明されたが、本発明はこれらの正確な実施形態に限定されず、これらに様々な変更、追加、及び改変が、添付の特許請求の範囲によって画定されるような本発明の範囲及び精神から逸脱することなく当業者によってもたらされることができることを理解されたい。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴との従属請求項の特徴の様々な組合せがなされることができる。
【図１】
2020530151.tif 000003
【図２】
2020530151.tif 000004
【図３】
2020530151.tif 000005
【図４】
2020530151.tif 000006
【図５】
2020530151.tif 000007
【図６】
2020530151.tif 000008
【図７】
2020530151.tif 000009
【図８】
2020530151.tif 000010
【図９】
2020530151.tif 000011
【図１０】
2020530151.tif 000012
【図１１】
2020530151.tif 000013
【国際調査報告】
2020530151.tif 000014
2020530151.tif 000015