JP7245817B2 - データ処理装置における連続値の照合 - Google Patents

データ処理装置における連続値の照合 Download PDF

Info

Publication number
JP7245817B2
JP7245817B2 JP2020503876A JP2020503876A JP7245817B2 JP 7245817 B2 JP7245817 B2 JP 7245817B2 JP 2020503876 A JP2020503876 A JP 2020503876A JP 2020503876 A JP2020503876 A JP 2020503876A JP 7245817 B2 JP7245817 B2 JP 7245817B2
Authority
JP
Japan
Prior art keywords
comparison
input
elements
vector
match
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020503876A
Other languages
English (en)
Other versions
JP2020530151A (ja
Inventor
マルティネス ビセンテ、アレハンドロ
ギャレット ボー、ジェシー
エヨール、ムボウ
ヘイズ、ティモシー
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2020530151A publication Critical patent/JP2020530151A/ja
Application granted granted Critical
Publication of JP7245817B2 publication Critical patent/JP7245817B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)
  • Circuits Of Receivers In General (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本開示は、データ処理装置に関する。より具体的には、所与の一連の値のための検索の実行に関する。
データ処理装置は、それに、部分文字列と呼ばれる場合がある一連の事前画定された値が所与の入力データに存在するか否かを判定することをその一部が要求する、多種多様なデータ処理演算を実行する場合がある。このような機能を実装するために要求されるデータ処理回路の複雑性は、大きい入力データ項目に対して負担になる場合がある。
Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63
一例においては、装置が提供され、装置は、命令をデコードするための命令デコーダ回路と、入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、データ処理回路とを備え、命令デコーダ回路が、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、データ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
別の例においては、装置を操作する方法を提供し、方法は、命令をデコードするステップと、入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置のデータ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するステップとを含む。
別の例においては、装置が提供され、装置は、命令をデコードするための手段と、データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するための手段であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、手段と、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置における比較するための手段に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するための手段とを備える。
別の例においては、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムが提供され、コンピュータプログラムが、命令をデコードするための命令デコードプログラムロジックと、入力データベクトル構造の1つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、入力データベクトル構造が、入力データベクトル構造におけるそれぞれの位置において複数のセグメントを含む、データ処理プログラムロジックとを備え、命令デコードプログラムロジックが、入力データベクトル構造のセグメント及び参照データ項目構造を指定する文字列照合命令に応答して、データ処理プログラムロジックにおける比較プログラムロジックに、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目構造の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
本技術は、添付の図面に図示されるようなその実施形態を参照して、単なる例として更に説明される。
一例による装置を概略的に図示する。 一例による装置を概略的に図示する。 一例による照合判定回路による照合判定プロセス中に実行される比較演算を図示する。 一例における、所与のオフセット値及び所与の要求される数に対応する比較演算を図示する。 一例における、オーバーフローフラグが隣接する比較回路にオーバーフロー比較演算を実行させるために設定される比較演算を図示する。 一例における、隣接する比較回路によって実行されるオーバーフロー比較演算を図示する。 一例における、複数の入力要素のうちの何れが連続する入力要素の要求されるセットを含むかを示すために使用される入力述語ベクトルを図示する。 比較回路を備える一例におけるデータ処理回路を図示し、オーバーフローフラグが設定され、隣接する比較回路に伝播することができる。 一例における、照合判定プロセスを実行する場合に行われる一連のステップを示すフロー図を図示する。 一実施形態における、シミュレータの実装を提供するシステムの構成要素を概略的に図示する。 「照合セグメント」命令を実装するために使用される幾つかの実施形態における装置に存在する比較回路を図示するが(それ自体は本技術の主題ではない)、比較回路はまた、本技術の文字列照合命令を実装するために使用される。
少なくとも幾つかの例は装置を提供し、装置は、命令をデコードするための命令デコーダ回路と、入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、データ処理回路とを備え、命令デコーダ回路が、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、データ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成する。
提供されるデータ処理装置は、一連の事前画定された値が入力ベクトルに存在するか否かを判定することができる。各々が特定の値を含む、複数の入力要素で構成される入力ベクトルは、様々な文脈においてデータ処理装置によって取り扱われてもよい。そして、この結果、入力ベクトルがデータ値の文字列である場合には、入力データベクトルの要素に対する比較演算が、シーケンス(部分文字列)における値が入力データ(文字列)の連続する入力要素において見つけられるか否かを判定されることができるように実行される。このような比較演算を支援するために、本技術は、命令デコーダ回路からの制御信号に応答して、入力ベクトルのセグメントにおける入力要素の値を参照データ項目におけるそれぞれの参照要素の値と比較するデータ処理回路を提供する。参照データ項目が要素の特定の数を含むことに限定されないことが理解されよう。
本技術は、このようなデータ処理装置を提供する場合に直面する実際的な問題が、要求される比較演算の実行に関連する回路の複雑性が大きくなるほど、特に、要求される回路の提供が実用的でなくなる程度までに、入力要素と参照要素との間で実行される必要がある比較の順列の数の増加に起因して、入力データ項目が大きくなることであると認識する。この文脈においては、本技術は、入力ベクトルのセグメントにおける連続する入力要素の要求されるセットの各々が参照データ項目(検索キー)の連続する参照要素におけるそれぞれの値に照合するか否かを判定するために、データ処理回路(命令デコーダ回路によって生成される制御信号によって制御される)を提供する。連続する入力要素のこの要求されるセットは、以下でより詳細に議論されるように、様々に画定されてもよいが、一般的に、このアプローチは、回路が実際に提供されることができ、要求される比較演算が実行されることができることを提供する。特に、部分文字列の検索を実行する効率は、それぞれの参照要素を使用してセグメント化されたベースにおける比較を実装することによって向上する。
幾つかの例においては、比較回路は、制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の要求されるセットは、その比較演算のためのセグメントにおけるそれぞれの候補オフセットにおいて開始し、複数の比較演算の候補オフセット値はセグメントに及ぶ。言い換えれば、候補オフセットは、比較演算を実行するためのセグメントにおけるオフセットを指し示すために、照合判定プロセスによって実行される各比較演算のために判定される。比較演算は、入力ベクトルのセグメントの全てのオフセットに対応する各候補オフセット値のために実行される。このように、比較値は、各比較演算によって決定され、所与の候補オフセット値に対応する。比較演算のオフセットは、それぞれの参照要素と比較されるセグメントにおける入力要素のセットの位置を示す。複数の候補オフセット(候補オフセット値)の各々のために比較演算を実行することによって、セグメントにおいて見つけられる入力要素の範囲内の部分文字列の各可能性のある位置のために比較値を判定することが可能である。加えて、照合判定プロセスの各比較演算が入力ベクトルの所与のセグメントにおける入力要素のみにおいて実行されるので、データ処理装置の複雑性は、大きい入力ベクトルのためにも制御されることができる。このように、入力ベクトルにおける部分文字列の全ての可能性のある位置が検索されて、データ処理回路の複雑性をまだ管理する一方で部分文字列の検索の精度を向上させる。
幾つかの例においては、連続する入力要素の要求されるセットの要素の数は、参照データ項目における参照要素の数からそれぞれの比較演算のそれぞれの候補オフセットを引いたものに等しい。入力ベクトルにおける部分文字列(参照データ項目)を検索する場合に、部分文字列の長さは、セグメントの長さより長くてもよい。この状況においては、部分文字列が入力ベクトルにおいて見つけられる場合には、それは、少なくとも2つのセグメントに亘って位置する。加えて、参照データ項目の第1の参照要素がセグメントにおいて見つけられてもよいが、参照データ項目のサイズは、セグメントのサイズと第1の参照要素が見つけられるオフセット値との間の差より大きくてもよい。この状況においては、部分文字列はまた、少なくとも2つのセグメントに亘って位置する。このように、参照データ項目のサイズ及びオフセット値に基づいて、連続する入力要素の要求される数を判定するための必要性がある場合がある。この文脈においては、本技術は、連続する入力要素の要求されるセットが参照データ項目のサイズからそれぞれの比較演算の候補オフセット値を引いたものであると決定されてもよいことを提案し、これは、比較演算が、セグメントの残りの入力要素(それぞれの候補オフセット位置以降のセグメントの入力要素)が対応する参照要素に対して比較される照合であるか否かを判定することを可能にする。このように、部分文字列が複数のセグメントに亘って位置する場合であっても、文字列は、入力ベクトルにおいて見つけられることができる。言い換えれば、セグメントに対する比較の制限は(潜在的なハードウェアの複雑性を管理するために)、検索されることができる部分文字列の長さを制限する必要はない。
幾つかの例においては、比較回路は、設定される比較値に応答して、候補オフセット値に照合するように検出されたオフセット値を設定し、検出されたオフセット値は、比較演算によって連続する入力要素の第1の入力要素として識別されたベース入力要素を指し示す。各比較演算のために、関連付けられたオフセット値は、比較演算を始めるためのセグメントにおけるオフセットを指し示すために使用される。オフセット値は、それぞれの参照要素と比較するためのセグメントにおける第1の入力要素を指し示す。比較値は、それぞれの比較演算中に、連続する入力要素の要求される数がセグメントにおいて見つけられたことを指し示す。このように、その比較演算のために使用されるオフセット値(候補オフセット値)は、連続する入力要素の第1の入力要素のセグメントにおける位置を指し示す。
連続する入力要素の要求されるセットが見つけられる比較演算によって使用される候補オフセット値に照合するように検出されたオフセット値を設定することによって、可能性のある部分文字列の照合のベース入力要素に対応する入力要素(検索される部分文字列の第1の入力要素)を識別することが可能である。連続する入力要素のベース入力要素を識別することが、部分文字列の全ての入力参照要素が入力ベクトルにおいて見つけられることをまだ要求しないが、連続する入力要素の要求されるセットが見つけられただけであることに留意される必要がある。実際には、部分文字列全体が見つけられたか否かを判定するために、入力ベクトルの他のセグメントにおいて複数のカウント演算を実行することが必要であってもよい。検出されたオフセット値を設定することによって、入力ベクトルの更なるセグメントが最初に処理されることが要求される場合であっても、部分文字列の位置は見つけられることができる。
幾つかの例においては、照合判定プロセスは、セグメントのための照合ベクトルを判定することを含み、各比較演算の比較値は、照合ベクトルにおけるそれぞれの照合要素の値を設定するために使用され、各それぞれの照合要素は、比較値を判定した比較演算のそれぞれの候補オフセットに対応する照合ベクトルにおける位置を有する。この結果、幾つかの例においては、照合判定プロセスは、連続する入力要素の要求されるセットとそれらのそれぞれの参照要素との間の照合を識別するために、それぞれの比較演算によって何れかの候補オフセットが使用されるかを判定する。この照合ベクトルは、データ処理回路によって実行される更なる処理、例えば、オーバーフロー比較演算によって使用されてもよい。これは、入力ベクトルがセグメントに区画化される場合であっても、入力ベクトルにおける部分文字列の可能性のある位置が見つけられることができることを意味する。このように、部分文字列の位置が確実に判定されることを妨げることなく、ハードウェアの複雑性が管理可能に制限されることができる。
幾つかの例においては、データ処理回路は、制御信号に応答して、各々が複数のセグメントの中からそれぞれのセグメントにために実行される、複数の照合判定プロセスを実行する複数の比較回路を更に備える。入力ベクトルは、複数のセグメントに区分され、各セグメントは、複数の入力要素を含む。各照合判定プロセスは、所与のセグメントを使用して実行され、連続する入力要素の要求されるセットにおける入力要素の各々が参照データ項目におけるそれぞれの要素に照合する値を有するか否かを判定することによって実行される。複数の比較回路がデータ処理回路内に構成され、各々が入力ベクトルからのそれぞれのセグメントを使用して照合判定プロセスを実行する。これは、入力ベクトルがセグメントにおいて並列に効率的に処理されることができることを意味する。入力ベクトルをセグメント化するこのアプローチは、照合判定プロセスがハードウェアの複雑性を管理可能なレベルに制限することによって実際に実装されることを可能にする。
幾つかの例においては、各照合判定プロセスは、それぞれのセグメントのためのそれぞれの照合ベクトルを判定することを含み、各比較演算の比較値は、照合ベクトルにおける照合要素の値を設定するために使用され、各それぞれの照合要素は、比較値を判定した比較演算のそれぞれの候補オフセットに対応するそれぞれの照合ベクトルにおける位置を有する。照合ベクトルは、各々が比較値に照合するように設定される値を含む、複数の照合要素で構成される。従って、各照合要素における照合値は、連続する入力要素の要求されるセットのベース入力要素が照合要素のそれぞれの位置に照合するオフセットにおいて識別されるか否かを指し示す。このアプローチは、判定されたオフセット値が照合ベクトルにおける設定された照合値を有する照合要素の位置から暗示的に判定されることができることを意味する。よって、照合要素の照合値を、それぞれの比較値を判定した比較演算のオフセット値を指し示す位置で設定することによって、大幅な追加のハードウェアを要求することなしに、ベース入力要素が効率的に識別されることができる。
幾つかの例においては、複数の比較回路の比較回路は、満たされるオーバーフロー条件に応答して、複数の比較回路の隣接する比較回路によって使用されるためのオーバーフローフラグを伝播し、オーバーフロー条件は、比較値が設定され、連続する入力要素の要求されるセットにおける要素の数が参照データ項目における参照要素の数より少ない場合に満たされる。入力データ項目がセグメントにグループ化されるので、参照データ項目が複数のセグメントに亘って位置してもよい場合がある。このように、本技術は、1つの比較回路から隣接する比較回路にインジケータを伝播して、参照データ項目の一部(連続する入力要素の要求されるセット)のみが比較回路のセグメントにおいて見つけられたことを指し示すことを提案する。これは、隣接する回路が、参照データ項目の残りの部分(又は残りの部分の一部)が後続のセグメントにあるか否かを確実に判定することを可能にする。
従って、オーバーフロー条件が満たされる場合には、オーバーフローフラグは隣接する比較回路に伝播される。参照データ項目における参照要素の数が所与の比較演算のための参照要素の要求されるセットより多い場合、そして、ベース要素が所与の比較演算において識別される場合には、参照データ項目の少なくとも残りの部分は後続のセグメントに位置する。このように、比較演算は、オーバーフローフラグを生成し、所与の比較演算の判定されたオフセット値を参照して連続する入力要素の要求されるセットを判定するために隣接する比較回路に指し示す。これは、検索されるサブセットを、各々が入力ベクトルのそれぞれのセグメントに対応する、複数の連続する入力要素の要求されるセットに分離することによって、長いサブセットが入力ベクトルにおいて効率的に識別されることができることを意味する。
幾つかの例においては、オーバーフローフラグが設定される場合には、隣接する比較回路は、設定されたオーバーフローフラグに応答して、比較回路の照合判定プロセスによって判定された照合ベクトルに基づいて連続する入力要素の要求されるオーバーフローのセットを判定するために、オーバーフロー比較演算をまた実行する。照合決定プロセスによって判定された照合ベクトルは、部分文字列の可能性のある照合のベース入力要素を指し示す。照合ベクトルにおける照合要素の位置が検出されたオフセット値を指し示すので、照合ベクトルは、参照データ項目の残りの部分のそれぞれの参照要素に照合するために要求される隣接する比較回路によって使用されるセグメントの入力要素の数(連続する入力要素の要求されるオーバーフローのセット)を判定するために(参照データ項目の既知の長さに加えて)使用されることができる。(隣接する比較回路に伝播されたオーバーフローフラグが設定される場合には)隣接する比較回路におけるセグメントのための比較演算に加えて、オーバーフロー比較演算が実行されることができることが理解されよう。連続する入力要素の要求されるオーバーフローのセットを使用してオーバーフロー比較演算を実行することによって、所与のセグメントのための比較演算の実行に加えて、参照データ項目の残りの部分が検索されることができるので、入力ベクトルにおける長いサブセットを確実に検索することが可能である。
幾つかの例においては、連続する入力要素の要求されるセットは、各々が比較演算によって使用される入力要素に対応する、複数の入力述語要素を含む入力述語ベクトルによって示され、複数の入力述語要素は、複数の入力要素の何れが連続する入力要素を含むかを示す。照合判定プロセスにおける複数の比較演算の各比較演算のための、連続する入力要素の要求されるセットは異なる。比較回路は、複数の比較器を備えてもよく、各比較器は、入力要素の値を対応する参照要素の値と比較する。複数の入力述語フラグを含む提案される入力述語ベクトルは、比較器の何れが設定される必要があるかを示すように提供されてもよい。よって、連続する入力要素の要求されるセットの各入力要素をそれらのそれぞれの参照要素と比較するために要求されるこれらの比較器のみをアクティブにすることが可能である。このように、実行する必要があるこれらの比較のみを実行することが可能になり、冗長な処理の量が削減されるので、照合判定プロセスを実行する場合に比較回路の電力消費は低減されることができる。
幾つかの例においては、装置を操作する方法が提供され、方法は、命令をデコードするステップと、入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、入力データベクトルが、入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、装置のデータ処理回路における比較回路に、比較演算を実行させて、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるように制御信号を生成するステップとを含む。
少なくとも幾つかの例は、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムを提供し、コンピュータプログラムが、命令をデコードするための命令デコードプログラムロジックと、入力データベクトル構造に命令によって指定されたベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、入力データベクトル構造が、入力データベクトル構造におけるそれぞれの位置において複数の入力データベ項目構造を含む、データ処理プログラムロジックとを備え、命令デコードプログラムロジックが、入力データ項目構造を指定するカウント命令に応答して、カウント演算を実行して、参照データ項目構造の参照要素における参照値に照合する値を有する入力データ項目構造のサブセットの入力要素の数を示すカウント値を判定するようにデータ処理プログラムロジックを制御するために制御信号を生成する。
少なくとも幾つかの例は、上記の例の何れかによるコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体を提供する。
次に、幾つかの特定の実施形態が、図面を参照して説明される。
図1は、本技術の様々な例を具現化してもよいデータ処理装置100を概略的に図示する。装置は、それが実行する一連の命令に応答して、データ項目にデータ処理演算を実行するデータ処理回路102を備える。これらの命令は、データ処理装置100がアクセスするメモリ104から取り出され、当業者にはよく知られている方法で、フェッチ回路105がこの目的のために提供される。更に、フェッチ回路105によって取り出された命令は、処理回路102、並びにレジスタのセット103及びロード/ストアユニット106の配置及び演算の様々な態様を制御するように構成される制御信号を生成する命令デコーダ回路101に渡される。一般的に、データ処理回路102は、パイプライン方式で構成されてもよいが、その詳細は本技術には関係しない。図1が表す一般的な配置は当業者に知られており、その更なる詳細な説明は、単に簡潔さの目的のために本明細書では省略される。図1に見られることができるように、レジスタ103はそれぞれ、処理回路が、指定されたレジスタ内の指定されたデータ要素にデータ処理演算を適用することができ、又は指定されたレジスタ内の指定されたグループのデータ要素(「ベクトル」)にデータ処理演算を適用することができるように、複数のデータ要素のための記憶装置を備える。特に、図示されたデータ処理装置は、レジスタ103に保持される入力ベクトルのセグメントに関する比較演算の実行に関係し、幾つかの特定の実施形態を参照して以下でより詳細に更に説明される。命令の実行においてデータ処理回路102によって要求されるデータ値、及びそれらのデータ処理命令の結果として生成されたデータ値が、ロード/ストアユニット106によってメモリ104に書き込まれ、メモリ104から読み取られる。また、一般的に、図1におけるメモリ104は、典型的には、処理回路が後に実行する一連の事前画定された命令(「プログラム」)の一部として、本技術の命令が格納されることができるコンピュータ可読記憶媒体の例として見られることができることに留意されたい。しかし、処理回路は、RAM、ROMのような種々の異なるソースからネットワークインターフェイス等を介して、このようなプログラムにアクセスしてもよい。本開示は、処理回路102が実行することができる様々な新規な命令を説明し、以下の図は、これらの命令の性質、これらの命令の実行を支援するためのデータ処理回路の変形、等を更に説明する。
図2は、一実施形態におけるデータ処理装置200の構成要素の幾つかの更なる詳細を概略的に図示する。比較回路204を備える図2のデータ処理回路201が示される。図示されるように、データ処理回路はレジスタファイル203にアクセスし、命令デコード回路202によって生成された制御信号に起因してこのアクセスは生じる。図1に関連して上記で説明されたように、一連の命令は、フェッチ回路206によってメモリ207から取り出され、命令デコーダ回路202に渡されるが、データ処理装置によってそのデータ処理演算の実行のために要求されるデータ値は、ロード/ストアユニット208によってメモリ207から取り出され、レジスタファイル203に渡される。命令デコーダ回路202は、文字列照合命令に応答して、その一部が後にロード/ストアユニット208によって指定されたメモリアドレスに書き戻される、レジスタファイル203に保持されたデータ値の内容を使用して、データ処理回路201にデータ処理演算を実行させるように、適切な制御信号を生成する。この処理のより詳細は、次の図を参照して説明される。
図3は、一実施形態におけるデータ処理回路201の照合判定回路301を概略的に図示する。照合判定回路301は、複数の比較演算を実行する。これらの演算を支援するために提供された比較回路204は、本質的に比較器のマトリックスを備え(この例については図3における中央の4×4のグリッドに対応する16個の比較器である)、各々がその行に提供される1つの入力(すなわち、参照データ項目要素の1つ)及びその列に提供される別の入力(すなわち、入力データ項目要素の1つ)を取得して、入力データ項目要素の何れかと参照データ項目要素の何れかとの間の比較が行われることができる。入力データ項目と参照データ項目との両方が、レジスタのセット302におけるレジスタの内容の一部(各々が文字列照合命令において指定される)によって提供され、示されるように、例えば、フリップ・フロップの列に各々、一時的に保持されて、比較器はそれぞれ、比較のためにそれらのそれぞれの一対の入力値を受け取ることができる。
図3から、図示された入力ベクトルを保持するレジスタがセグメントにグループ化されて示されることに留意されたい。これらのセグメントは、比較回路204の「幅」、すなわち、この例においては4つの要素に対応する。このように、明確さのために、図3は1つのセグメントに対応する比較回路のみを図示することが理解されるべきであり、実際には、このような比較回路は、ベクトルの全幅が検索されることができるように、各セグメントのために装置に存在する。この1つのセグメントにおける各比較演算の結果は、照合ベクトル303に指し示される。照合ベクトルを生成するために、比較回路における比較器はそれぞれ、各入力要素に含まれる入力値をそれぞれの参照要素における参照値と比較するように構成される。各比較器は、所与の比較結果が入力値とそのそれぞれの参照値との間の照合であるか否かを示す論理値を判定するように構成された論理ゲートのセットを備える。示される例を参照すると、照合判定プロセスの一部として実行される複数の比較演算の中からの第1の比較演算である比較演算が実行される。簡単に言えば、このセグメントにおいて、比較回路は、部分文字列「halo」が文字列「halo」において見つけられるか否かを判定する。丸で囲まれた値によって示される比較演算は、入力データ項目の第1の入力要素及び後続の各入力要素が連続する入力要素の要求される数を含むことを指し示す「0」の候補「オフセット値」を有する。このように、図に示されるように、連続する入力要素の「要求される数」は「4」である。この比較演算においてなされた個々の比較(個々の入力要素とそのそれぞれの参照要素との間の比較)(これらは「連続する入力要素に照合する」というラベルが付いた円で囲まれた値で指し示される)はそれぞれ、結果「1」との照合を示す。他の比較がまた実行され、この場合においては、全ての結果が全て「0」である。しかし、丸で囲まれた比較演算のために、連続する入力要素の要求されるセット(「h」、「a」、「l」、及び「o」)の中からの各入力要素が、参照データ項目のそれぞれの参照要素と比較される。この例においては、参照データ項目が、「0」のオフセット値に対応する位置において始まる入力データ項目において見つけられる。このように、示されるように、比較演算は、各入力要素とそのそれぞれの参照要素との間の照合を指し示す。従って、比較回路に関して、照合ベクトルの生成のために、照合条件が満たされる場合に要求されるものは、設定される「0」の候補オフセット値に対応する照合ベクトル303における照合要素の値(「見つけられたスタート」というラベルが付く)であることが理解されるべきである。これは、個々の比較器間の対角線経路間の接続によって提供される(その一例は、図3における丸で囲まれた4つの比較器の結果のセットによって与えられる)。勿論、この16個の比較器のセットにおける他の可能性のある対角線経路はより短く、2つの3-比較器経路、2つの2-比較器経路、及び2つの1-比較器経路がある。ANDゲートが、対角線における全ての要素が見つけられる場合に、(照合ベクトルの対応する要素を投入するために)設定値が生成されるように、各対角線経路における比較器を接続する。言い換えれば、各対角線は、本明細書で使用される用語における「比較演算」を表す。また、そして、参照データ項目が入力データ項目内(すなわち、この比較回路が対応するこのセグメント内)の何れかで始まる場合に、示される円で囲まれたもの及びその右下のものを含む対角線のみが、参照データ項目の少なくとも一部を見つけることができることに留意されたい。しかし、以下で議論されるように、参照データ項目の後半部分(すなわち、「halo」の例においては、これは「alo」、「lo」、又は「o」である)が、このセグメントにおいて、先のセグメントにおける前半部分と共に、見つけられることができる。よって、一般的に、全ての比較器が実際にアクティブであり、このように、図3に示される比較器の結果の4×4のマトリックス全体が与えられる。照合ベクトルは、ベクトルレジスタ302の意味における「ベクトル」ではなく、単に、例えば、フリップ-フロップのセットに一時的に保持される、照合判定回路における内部生成アレイにすぎないことに留意すべきであり、それによって、それは、シーケンスのスタートを(見つかった場合には)識別し、これを更に通知する。
また、参照データ項目の全ての要素が現在のセグメントにおいて見つけられるので、オーバーフローフラグが設定されないことに留意されたい(図5に対して比較)。
更に留意する点として、(文字列照合命令だけでなく)他のタイプの命令に応答する装置においては、比較器の同じセットが、他のタイプの比較又は他のタイプの処理演算を実行するために使用されてもよい。このハードウェアの再利用は、装置がより小さいフットプリントを有し、又は別の方法で戴置することを可能にし、所与のフットプリントが、より広い範囲のデータ処理を支援することができる。例えば、図11に対して後に説明されるように、装置は、セグメントにおいてカウント演算を実行するために、比較器間に追加の論理ゲートを備える比較器の同じセットを使用する「照合セグメント」命令に更に応答してもよい。
図4は、一実施形態におけるデータ処理回路201の照合判定回路301を概略的に図示する。照合判定回路301はまた、複数の比較演算(すなわち、それぞれの比較の対角線のセット)を実行する。図4は図3に類似するが(実際には、異なる入力であるが、全く同じ回路を表してもよい)、図4の例においては(図3とは対照的に)参照データ項目(「cat」)が3つのみの要素の長さであることが認識される。このように、全ての入力データ項目要素(4)とこの回路が取り扱うことができる全ての参照データ項目要素(4)との間において、全ての可能性のある比較(16)がなされる必要はなく、この目的のために、プログラマに、要求されない比較器(すなわち、比較器の4行目)を一時的に無効にさせることができる、入力述語ベクトル(図7を参照)を使用するための可能性を提供してもよい。図4の例においては、セグメントが示されるように入力値[fact]を有する4つの入力要素のセットを含み、参照データ項目が参照値[cat]を有する3つの参照要素を含むことに留意されたい。言い換えれば、簡単に言えば、このセグメントにおいては、比較回路が、部分文字列「cat」が文字列「fact」において見つけられるか否かを判定する。図3を参照して先に説明されたように比較が実行されるが、この場合には、部分文字列「cat」を見つける比較演算は、「1」の候補オフセット値を有する。言い換えれば、これは、実際には、部分文字列「cat」の全体が入力データ項目において見つけられることができる、実行される比較演算の第2のセットである(すなわち、オフセット0において開始するか、又はオフセット1において開始するか)。勿論、第1の列(「0」の候補オフセット値)においては、入力データ項目の第1(インデックス0)の要素にある「f」では、参照要素の何れにも照合するものは見つけられない。しかし、入力要素のインデックス「1」において始まる比較演算は、この例においては部分文字列を見つけるものである。「要求される数」は、参照データ項目の長さ及び候補オフセット値を参照して判定される。このように、入力データ項目のインデックス1において始まる比較のために、参照データ項目の長さは、候補オフセット値以上のインデックスを有する入力要素の数に等しく(すなわち、3)、「要求される数」は「3」である。よって、示されるように、連続する入力要素の要求されるセットの各入力要素は、そのそれぞれの参照要素に照合し、「1」の候補オフセット値に対応する照合ベクトル303における照合要素の値が設定される。照合が見つけられた比較演算によって使用される候補オフセット値は、「オフセット値」(検出されたオフセット値)に設定され、照合ベクトルの対応するインデックスにおける照合ベクトル要素の値がそれに応じて設定される。
図5は、照合判定回路301を図示し、図5は、図3と同様であり(実際には、異なる入力であるが、全く同じ回路を表してもよい)、それは、一例による照合判定プロセスにおいて複数の比較演算を実行する。特に、参照データ項目は再び4つの参照要素を有するが、図示された比較回路に対応する(レジスタ302においてアクセスされる)セグメントは、参照データ項目(「halo」)の一部のみ(最初の2つの文字「ha」)を含むことに留意されたい。照合判定プロセスは、各々が候補オフセット値に対応する複数の比較演算を実行する。図5は、「2」の候補オフセット値が使用される比較演算を強調する。参照データ項目の長さが候補オフセットより高次のインデックスを有するインデックスの要素の残りの数より大きいので、入力要素の中からの連続する入力要素の要求されるセットは、「2」(候補オフセットに対応する)のインデックスを有する入力要素及び最後の入力要素(「3」のインデックスを有する)によって境界付けられる。このように、強調された比較における連続する参照要素の要求される数は2である。示されるように、「2」のオフセット値から開始する場合には、入力要素の要求されるセット(すなわち、最初の2文字)がセグメントにおいて見つけられる。よって、オフセット値に等しいインデックスを有する照合要素が設定され、その上、参照データ項目の一部のみが現在のセグメントにおいて見つけられるので、オーバーフローフラグが設定される。そして、このフラグが隣接する比較回路に伝播され、幾つかの例においては、オフセット値(検出されたオフセット値)が、隣接する回路に加えて伝播される。重要なことにも、部分文字列の検出は、このような例においては、このセグメントの結果に基づいて通知されるだけでなく、次に説明されるように、次のセグメントにおいて部分文字列の残りが見つけられる(又は少なくとも継続される)ことを要求する。
図6は、一例によって、照合判定プロセスのオーバーフロー比較演算がまた実行される照合判定回路301における比較回路204の別のセットを図示する。オーバーフローフラグが先の(すなわち、図示されるように左側に位置する)比較回路から伝播される場合に、オーバーフロー比較演算が関連する。オーバーフロー比較演算は、検索される参照データ項目の全てより少ないもの(少なくとも第1の参照要素を省略する)に対応する比較の対角線の実行である。従って、図6の例においては、これらは、比較器のセットの半分である左上の三角形の対角線である。これらの比較は、常に実行されてもよく、要求されない場合には省略されることができる(しかし、これは、不要な場合にそれらをオフに切り換えるための追加の回路、及び最初のトリガー信号(すなわち、先のセグメントからのオーバーフロー信号)を要求し、そして、これはまた、このセグメントの比較が先のセグメントの比較がそれらの結果を生成した単位で実行されることができないので、タイミングに影響を及ぼす)。参照データ項目の残りの部分の少なくとも一部が後続のセグメントにおけるそれぞれの入力要素に照合するか否かを判定するために、オーバーフロー比較演算が実行される。後続のセグメントは、入力ベクトルにおける次のセグメントであり、レジスタ302においてアクセスされる。図6に図示されるように、丸で囲まれた比較演算(「0」の候補オフセット値での比較演算、また、「要求される数」が参照項目の長さより小さい場合)は、参照データ項目の要求される後半部分を見つける。要求される数は、図5における照合を判定した比較演算の検出されたオフセット値に基づいて判定される(図5に示されるように、前の照合判定プロセスの照合ベクトルによって指し示されるように)。特に、参照データ項目の残りの部分がセグメントのサイズよりも小さいので、要求される数は、参照データ項目の長さから前に検出されたオフセット値を引いたものに等しい(つまり、図に示されるように「2」に等しい)。従って、連続する入力要素の要求されるセットは、オーバーフロー比較回路によって使用されるセグメントにおける第1及び第2の入力要素によって境界付けられる。このように、オーバーフロー比較演算は、第1及び第2の入力要素における値を参照データ項目のそれらのそれぞれの参照要素における値と比較し、これらの参照要素は、この例においては「2」によってオフセットされ、第1のデータ入力項目が「l」で、第2のデータ入力項目が「o」である必要があることを意味する。示されるように、連続する入力要素の要求されるセット[lo]は、実際には対応する参照要素に照合し、それ故に、オーバーフロー比較演算によって使用される「0」のオフセット値に等しいインデックスを有する照合要素が設定される。前のセグメントのオーバーフローフラグが設定される場合には、設定された照合要素は異なる意味、つまり、部分文字列がこのセグメントにおいて継続されたことの確認としての意味を有することに留意されたい。そして、比較回路は、完全なサブセット(参照データ項目)が、ベース入力要素を識別した照合判定プロセス(この場合には、前の照合判定プロセス)のための照合ベクトルにおける照合要素のインデックスによって指し示される位置で、入力ベクトルにおいて見つけられたことを判定することが可能である。
図7は、一例による入力述語ベクトルによって制御される比較器のグリッドを図示する。入力述語ベクトルは、比較回路204における比較器のマトリックスに対して何れの比較器をアクティブにするかを指し示すために使用されることができる。例えば、参照データ項目(検索されるキー/部分文字列)の長さがセグメントサイズより短い場合、比較器の一部は無効にされることができる。比較回路204は、各々が所与の入力要素とそれぞれの基準要素との間の比較に対応する複数の比較器を備える。このように、4のセグメントサイズ及び4の可能性のある参照データ項目サイズを含む図示される例においては、4×4のグリッドで構成された16個の比較器のグリッドがある。図7に示される入力述語ベクトにおける入力述語フラグはそれぞれ、示されるように、所与の行における比較器に対応し、比較器の所与の行は、各入力要素の値を所与の参照データ項目要素と比較する。例えば、図7においては、入力述語ベクトルの下位2ビットのみが設定され、これは、参照データ項目の最初の2つの要素のみがアクティブである(すなわち、検索される)ことを意味する。言い換えれば、この例においては、見つけられる必要がある全てが「ha」である。入力述語ベクトルにおける上位2ビットが設定されない場合、比較器の上位2行は無効にされる。最後に、部分文字列「ha」は、実際には、セグメントにおける第3及び第4の位置のための丸で囲まれた比較演算において見つけられ、それ故(上記で説明されたように)、第3の位置での照合ベクトルにおける照合要素が設定される。
図8は、別の比較回路に隣接する比較回路に入力されるオーバーフローフラグの使用を図示する。特に、レジスタ802と、複数の比較回路801-1、801-2、801-3、及び801-4とを備えるデータ処理回路102が図示される。この結果、これらの4つの比較回路は、所与のセグメントにおける検索のための比較器を提供し、共に、4つのセグメントを含むベクトルの全幅に亘る検索が実行されることを可能にする。オーバーフローフラグの伝播は、検索されるシーケンスが少なくとも1つのセグメントの境界を横切ることを可能にする。示されるように、比較回路801-1から801-2に伝播されたオーバーフローフラグは設定されないが、比較回路801-2から801-3に伝播されたオーバーフローフラグは設定される。参照データ項目が入力ベクトルにおいて見つけられたが2つのセグメントに亘って位置する、図6及び図7に示される例においては、オーバーフローフラグが設定され、第1の比較回路801-2から、図7を参照して上記で説明されたようなオーバーフロー比較演算を実行する、隣接する比較回路801-3に伝播される。
図9は、一例によって装置を操作する方法を示すフロー図を図示する。プロセスはステップ900において始まる。ステップ901において参照データ項目がロードされる。ステップ902において次の(第1の反復における第1の)入力データ項目がロードされる。ステップ903において次の(第1の反復における第1の)オフセット値を選択することによってプロセスが継続する。ステップ904において、少なくとも1つの入力要素の中から連続する入力要素の要求される数がそれぞれ、少なくとも1つの参照要素の連続する参照要素におけるそれぞれの値に等しい値を有するか否かを示す比較値を判定するために比較演算が実行される。ステップ905は、比較値の値を有するように、照合ベクトルの対応する照合要素を設定する。ステップ906は、候補オフセット値が最後のオフセット値であるか否かを判定する。そうでない場合には、ステップ906における条件が満たされるまで、ステップ903~905が繰り返される。ステップ906における条件が満たされる場合には、ステップ907において、照合ベクトルが出力される。ステップ908において、入力データ項目(セグメント)が最後の入力データ項目であるか否かが判定される。そうでない場合には、ステップ908における条件(これは最後のオフセット値であった)が満たされるまで、ステップ902~907が繰り返される。比較演算を最も簡単に説明するために、フロー図はこれらを順次ステップとして列挙するが(内部ループにおけるステップ904の各実行反復において)、比較回路の例の上記の説明から、比較器のマトリックス(例えば、議論された例においては4×4)が提供される場合には、これらの反復が典型的には並列に実行され、従って、所与の入力データ項目(すなわち、セグメントの内容)のための全ての比較演算が同時に実行されることが理解されることに留意されたい。同様に、入力データ項目(すなわち、セグメントの比較)を最も簡単に説明するために、フロー図はこれらを順次ステップとして列挙するが(外部ループのステップ902を通る各実行反復において)比較回路の例の上記の説明から、比較回路のセット(例えば、議論された例においては4つの並列)が提供される場合には、これらの回路が典型的には並列に演算し、従って、命令によって参照されるベクトルの各入力データ項目(すなわち、セグメントの内容)が同時に実行されることが理解されることに留意されたい。そして、最後に、ステップ908における条件が満たされた場合には、方法はステップ909において終了する。
図10は、使用されてもよいシミュレータの実装を図示する。先に説明された実施形態は、関連する技術を支援する特定の処理ハードウェアを操作するための装置及び方法に関する本発明を実装するが、コンピュータプログラムの使用を介して実装される本明細書で説明される実施形態に従って、命令実行環境を提供することがまた可能である。このようなコンピュータプログラムは、それらがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、多くの場合、シミュレータと呼ばれる。多種のシミュレータのコンピュータプログラムには、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータが含まれる。典型的には、シミュレータの実装は、任意にホストオペレーティングシステム720を実行し、シミュレータプログラム710を支援する、ホストプロセッサ730において実行してもよい。幾つかの構成においては、ハードウェアと提供された命令実行環境との間に複数のシミュレーション層があってもよく、及び/又は同じホストプロセッサにおいて提供される複数の個別の命令実行環境があってもよい。歴史的に、合理的な速度で実行するシミュレータの実装を提供するために強力なプロセッサが要求されるが、このようなアプローチが、互換性又は再利用の理由のために、別のプロセッサにネイティブのコードを実行させる要望がある場合のように、特定の状況においては正当化される場合がある。例えば、シミュレータの実装は、ホストプロセッサハードウェアによって支援されない追加的な機能を命令実行環境に提供してもよく、又は典型的には様々なハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、非特許文献1において与えられる。
特定のハードウェアの構成又は機能を参照して実施形態が前に説明された範囲内で、シミュレートされた実施形態において、同等の機能が、適切なソフトウェアの構成又は機能によって提供されてもよい。例えば、特定の回路が、コンピュータプログラムロジックとしてシミュレートされた実施形態において実装されてもよい。同様に、レジスタ又はキャッシュのようなメモリハードウェアが、ソフトウェアデータストラクチャとしてシミュレートされた実施形態において実装されてもよい。前に説明された実施形態において参照された1つ以上のハードウェア要素がホストハードウェア(例えば、ホストプロセッサ730)に存在する構成においては、幾つかのシミュレートされた実施形態が、適切な場合にはホストハードウェアを利用してもよい。
シミュレータプログラム710は、コンピュータ可読記憶媒体(非一時的媒体であってもよい)に格納されてもよく、プログラムインターフェース(命令実行環境)を、シミュレータプログラム710によってモデル化されるハードウェアアーキテクチャのアプリケーションプログラムインターフェイスと同じであるターゲットコード700(図2に示されるアプリケーション、オペレーティングシステム、及びハイパーバイザーを含んでもよい)に提供する。この結果、上記で説明された文字列照合命令を含むターゲットコード700のプログラム命令は、上記で説明された装置2のハードウェアの機能を実際には有しないホストコンピュータ730がこれらの機能をエミュレートすることができるように、シミュレータプログラム710を使用して命令実行環境内から実行されてもよい。
図11は、上記の様々な例(すなわち、「比較回路」における4×4のマトリックス)において説明されたような16個の比較器の同じセットを図示するが、これらの比較器がまた装置における別の使用に対して置かれる。示される例においては、これは、装置のためにまた画定される「照合セグメント」(別名MATCHMSEG)命令に応答するそれらの使用に対応する。このMATCHSEG命令は、各比較回路の幅に照合するようにセグメントに再び細区画された入力ベクトルを含むソースレジスタを指定し、各々が参照データ項目における対応する参照値が何回そのセグメントの要素の何れかにおいて見つけられるかを示す、カウント値のセットの各セグメントのための判定をなす。よって、図11に示される中央の4×4のマトリックスの値は、図3を参照して(最初に)説明されたものと比較器の同じセットに対応し、比較器間に追加的な接続が提供される。上記で議論された例(図3で開始する)とは異なり、比較器の水平実行のためのこれらの接続は(図11に示される配向において)、ラベル付きの「カウントデータ項目」の各要素における合計カウント値を与えるために、各比較のために見つけられた照合を合計する。図11の例に示されるように、セグメントは、入力値のセット[4 2 2 0]を含み、参照データ項目は、4つの参照値のセット[0 1 2 3]を含む。カウント演算は、参照データ項目のそれぞれの参照要素における各参照値のために実行される。このように、第1の参照値「0」のために、1つの照合が見つけられ(インデックスが0のセグメント要素において)、そして、結果のカウント値は1である。参照値「1」の第2の参照要素については、「1」の値を有するセグメントの入力要素がないので、その参照要素のためのカウント値はゼロである。これはまた、参照値「3」を有する最終の参照要素のための場合である。しかし、「2」の入力値を有するサブセットにおける入力要素の2つのインスタンスがあるので、値「2」を有する第3の参照要素に対応するカウント値は2のカウント値を有する。よって、各カウント値は、それぞれの参照値に照合する入力値を含むセグメントにおける入力要素の数を指し示す。本技術による比較演算を支援するために提供される比較回路(図2における項目204)は、MATCHSEG命令に応答して実行されるこれらのカウント演算を追加的に支援し、この命令に応答して生成された制御信号によって、比較器の出力から得られたカウント値が出力され、本技術の文字列照合命令に応答して生成された制御信号によって、照合ベクトルが、検索される参照データ項目の照合が見つけられたか否かを(又はその場所を)指し示すように使用される。このように、所与の命令に応答して命令デコーダ回路によって生成された制御信号は、場合により特に、命令デコーダ回路に供給される命令に依存して、部分文字列の比較演算又はカウント演算の何れかを実行するように比較回路204を配置するように動作可能である。
簡単に全体を要約すると、入力ベクトル内の所与の一連の値に照合するように比較演算を実行するための装置及び装置を操作する方法が提供される。命令デコーダ回路は、入力ベクトルのセグメントを指定する文字列照合命令に応答して、データ処理回路を制御して比較演算を実行するように制御信号を生成する。比較演算は、セグメントの連続する入力要素の要求されるセットの各入力要素が参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を判定する。複数の比較演算が、入力ベクトルのセグメントに対応する照合ベクトルを判定して入力ベクトルにおける部分文字列のスタート位置を指し示すために実行されてもよい。
本出願においては、「・・・に配置され(configured to・・・)」という用語は、装置の要素が画定された演算を実行することができる配置を有することを意味するために使用される。この文脈において、「配置(configuration)」とは、ハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置が、画定された演算を提供する専用のハードウェアを有してもよく、或いはプロセッサ又は他の処理装置が、機能を実行するようにプログラムされてもよい。「配置され(configured to)」は、装置の要素が画定された演算を提供するために任意の方法で変更される必要があることを意味しない。
添付の図面を参照して例示的な実施形態が本明細書において詳細に説明されたが、本発明はこれらの正確な実施形態に限定されず、これらに様々な変更、追加、及び改変が、添付の特許請求の範囲によって画定されるような本発明の範囲及び精神から逸脱することなく当業者によってもたらされることができることを理解されたい。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴との従属請求項の特徴の様々な組合せがなされることができる。

Claims (12)

  1. 命令をデコードするための命令デコーダ回路と、
    入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理回路であって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含み、比較回路を備えるデータ処理回路と
    を備える装置であって、
    前記命令デコーダ回路は、前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、制御信号を生成し
    記比較回路前記制御信号に応答して、比較演算を実行して、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定し、
    前記比較回路は、前記制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の前記要求されるセットは、その比較演算のための前記セグメントにおけるそれぞれの候補オフセットにおいて開始し、前記複数の比較演算の候補オフセット値は、前記セグメントの全ての可能なオフセットを含み、
    連続する入力要素の前記要求されるセットの要素の数は、前記参照データ項目における参照要素の数からそれぞれの比較演算の前記それぞれの候補オフセットを引いたものに等しい、装置。
  2. 前記比較回路は、設定される前記比較値に応答して、候補オフセット値に照合するように検出されたオフセット値を設定し、前記検出されたオフセット値は、前記比較演算によって前記連続する入力要素の第1の入力要素として識別されたベース入力要素を指し示す、請求項に記載の装置。
  3. 前記照合判定プロセスは、前記セグメントのための照合ベクトルを判定することを含み、各比較演算の前記比較値は、前記照合ベクトルにおけるそれぞれの照合要素の前記値を設定するために使用され、
    各それぞれの照合要素は、前記比較値を判定した前記比較演算の前記それぞれの候補オフセットに対応する前記照合ベクトルにおける位置を有する、請求項1又は2に記載の装置。
  4. 前記データ処理回路は、前記制御信号に応答して、各々が前記複数のセグメントの中からそれぞれのセグメントにために実行される、複数の照合判定プロセスを実行する複数の比較回路を更に備える、請求項の何れか一項に記載の装置。
  5. 各照合判定プロセスは、前記それぞれのセグメントのためのそれぞれの照合ベクトルを判定することを含み、各比較演算の前記比較値は、前記照合ベクトルにおける照合要素の前記値を設定するために使用され、
    各それぞれの照合要素は、前記比較値を判定した前記比較演算の前記それぞれの候補オフセットに対応する前記それぞれの照合ベクトルにおける位置を有する、請求項に記載の装置。
  6. 複数の比較回路の前記比較回路は、満たされるオーバーフロー条件に応答して、前記複数の比較回路の隣接する比較回路によって使用されるためのオーバーフローフラグを伝播し、
    前記オーバーフロー条件は、前記比較値が設定され、連続する入力要素の前記要求されるセットにおける要素の数が前記参照データ項目における参照要素の数より少ない場合に満たされる、請求項に記載の装置。
  7. 前記オーバーフローフラグが設定される場合には、前記隣接する比較回路は、前記設定されたオーバーフローフラグに応答して、前記比較回路の前記照合判定プロセスによって判定される前記照合ベクトルに基づいて連続する入力要素の要求されるオーバーフローのセットを判定するために、オーバーフロー比較演算をまた実行する、請求項に記載の装置。
  8. 連続する入力要素の前記要求されるセットは、各々が前記比較演算によって使用される参照要素に対応する、複数の入力述語要素を含む入力述語ベクトルによって指し示され、
    前記複数の入力述語要素は、前記参照データ項目の何れの要素が前記連続する参照要素を含むかを指し示す、請求項1~の何れか一項に記載の装置。
  9. 装置を操作する方法であって、
    命令をデコードするステップと、
    入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するステップであって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含む、ステップと、
    前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、制御信号を生成するステップと、
    前記装置のデータ処理回路における比較回路に、比較演算を実行させて、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定させるステップと
    を含み、
    前記比較回路は、前記制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の前記要求されるセットは、その比較演算のための前記セグメントにおけるそれぞれの候補オフセットにおいて開始し、前記複数の比較演算の候補オフセット値は、前記セグメントの全ての可能なオフセットを含み、
    連続する入力要素の前記要求されるセットの要素の数は、前記参照データ項目における参照要素の数からそれぞれの比較演算の前記それぞれの候補オフセットを引いたものに等しい、方法。
  10. 装置であって、
    命令をデコードするための手段と、
    入力データベクトルの1つ以上のセグメントにベクトル処理演算を選択的に適用するための手段であって、前記入力データベクトルは、前記入力データベクトルにおけるそれぞれの位置において複数のセグメントを含み、比較するための手段を備える、ベクトル処理演算を選択的に適用するための手段と、
    前記入力データベクトルのセグメント及び参照データ項目を指定する文字列照合命令に応答して、制御信号を生成するための手段と
    を備え、
    記比較するための手段前記制御信号に応答して、比較演算を実行て、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定し、
    前記比較するための手段は、前記制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の前記要求されるセットは、その比較演算のための前記セグメントにおけるそれぞれの候補オフセットにおいて開始し、前記複数の比較演算の候補オフセット値は、前記セグメントの全ての可能なオフセットを含み、
    連続する入力要素の前記要求されるセットの要素の数は、前記参照データ項目における参照要素の数からそれぞれの比較演算の前記それぞれの候補オフセットを引いたものに等しい、装置。
  11. 命令をデコードするための命令デコードプログラムロジックと、
    入力データベクトル構造の1つ以上のセグメントにベクトル処理演算を選択的に適用するためのデータ処理プログラムロジックであって、前記入力データベクトル構造は、前記入力データベクトル構造におけるそれぞれの位置において複数のセグメントを含み、比較プログラムロジックを備えるデータ処理プログラムロジックと
    を備える、命令実行環境を提供するためのホストデータ処理装置を制御するためのコンピュータプログラムであって、
    前記命令デコードプログラムロジックは、前記入力データベクトル構造のセグメント及び参照データ項目構造を指定する文字列照合命令に応答して、制御信号を生成し、
    記比較プログラムロジック前記制御信号に応答して、比較演算を実行て、前記セグメントの連続する入力要素の要求されるセットの各入力要素が前記参照データ項目構造の連続する参照要素におけるそれぞれの値に照合する値を有するか否かを示す比較値を設定し、
    前記比較プログラムロジックは、前記制御信号に更に応答して、複数の比較演算を含む照合判定プロセスを実行し、各比較演算のための連続する入力要素の前記要求されるセットは、その比較演算のための前記セグメントにおけるそれぞれの候補オフセットにおいて開始し、前記複数の比較演算の候補オフセット値は、前記セグメントの全ての可能なオフセットを含み、
    連続する入力要素の前記要求されるセットの要素の数は、前記参照データ項目構造における参照要素の数からそれぞれの比較演算の前記それぞれの候補オフセットを引いたものに等しい、コンピュータプログラム。
  12. 請求項1に記載のコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体。
JP2020503876A 2017-08-01 2018-07-05 データ処理装置における連続値の照合 Active JP7245817B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/665,715 2017-08-01
US15/665,715 US10678506B2 (en) 2017-08-01 2017-08-01 Matching consecutive values in a data processing apparatus
PCT/GB2018/051897 WO2019025752A1 (en) 2017-08-01 2018-07-05 MATCHING CONSECUTIVE VALUES IN A DATA PROCESSING APPARATUS

Publications (2)

Publication Number Publication Date
JP2020530151A JP2020530151A (ja) 2020-10-15
JP7245817B2 true JP7245817B2 (ja) 2023-03-24

Family

ID=63077892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020503876A Active JP7245817B2 (ja) 2017-08-01 2018-07-05 データ処理装置における連続値の照合

Country Status (8)

Country Link
US (1) US10678506B2 (ja)
EP (1) EP3662361B1 (ja)
JP (1) JP7245817B2 (ja)
KR (1) KR102594770B1 (ja)
CN (1) CN110998512B (ja)
IL (1) IL272136B (ja)
TW (1) TWI782060B (ja)
WO (1) WO2019025752A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817297B2 (en) * 2019-03-30 2020-10-27 Intel Corporation Method and apparatus for vector-matrix comparison
US20240111541A1 (en) * 2022-09-30 2024-04-04 Texas Instruments Incorporated Reducing Overhead In Processor Array Searching

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003524317A (ja) 1999-06-30 2003-08-12 アプティテュード アクウィジション コーポレイション ネットワークにおけるトラフィックを監視する方法および装置
JP2010504594A (ja) 2006-09-22 2010-02-12 インテル コーポレイション 文字列を処理するための命令及び論理回路

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4307377A (en) * 1979-11-09 1981-12-22 Bell Telephone Laboratories, Incorporated Vector coding of computer graphics material
CA1175575A (en) * 1981-12-07 1984-10-02 Michael S. Pelley Programmable controller with multiple functions
US4991134A (en) * 1988-03-30 1991-02-05 International Business Machines Corporation Concurrent sorting apparatus and method using FIFO stacks
DE4334294C1 (de) * 1993-10-08 1995-04-20 Ibm Prozessor für Zeichenketten variabler Länge
US5608662A (en) * 1995-01-12 1997-03-04 Television Computer, Inc. Packet filter engine
US6708268B1 (en) * 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set
US6789116B1 (en) * 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
GB0210604D0 (en) * 2002-05-09 2002-06-19 Ibm Method and arrangement for data compression
US8762694B1 (en) * 2003-02-19 2014-06-24 Intel Corporation Programmable event-driven yield mechanism
US20050086234A1 (en) * 2003-10-15 2005-04-21 Sierra Wireless, Inc., A Canadian Corporation Incremental search of keyword strings
US7574742B2 (en) * 2004-11-15 2009-08-11 Industrial Technology Research Institute System and method of string matching for uniform data classification
US7636703B2 (en) * 2006-05-02 2009-12-22 Exegy Incorporated Method and apparatus for approximate pattern matching
US7908457B2 (en) * 2008-05-05 2011-03-15 International Business Machines Corporation Retaining an association between a virtual address based buffer and a user space application that owns the buffer
US9804839B2 (en) 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US9424031B2 (en) * 2013-03-13 2016-08-23 Intel Corporation Techniques for enabling bit-parallel wide string matching with a SIMD register
US9323865B2 (en) * 2013-12-24 2016-04-26 TCL Research America Inc. Content alignment method and system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003524317A (ja) 1999-06-30 2003-08-12 アプティテュード アクウィジション コーポレイション ネットワークにおけるトラフィックを監視する方法および装置
JP2010504594A (ja) 2006-09-22 2010-02-12 インテル コーポレイション 文字列を処理するための命令及び論理回路

Also Published As

Publication number Publication date
CN110998512A (zh) 2020-04-10
IL272136A (en) 2020-03-31
KR102594770B1 (ko) 2023-10-27
EP3662361A1 (en) 2020-06-10
US20190042190A1 (en) 2019-02-07
IL272136B (en) 2022-08-01
CN110998512B (zh) 2023-12-22
JP2020530151A (ja) 2020-10-15
WO2019025752A1 (en) 2019-02-07
TWI782060B (zh) 2022-11-01
KR20200030582A (ko) 2020-03-20
US10678506B2 (en) 2020-06-09
TW201911081A (zh) 2019-03-16
EP3662361B1 (en) 2022-03-23

Similar Documents

Publication Publication Date Title
KR102584035B1 (ko) 스플라이스 동작을 수행하는 장치 및 방법
CN110945477B (zh) 数据处理设备中的数据项中的计数元素
TWI785064B (zh) 用於測試向量元素內部的位元值的設備、方法、電腦程式及電腦可讀儲存媒體
JP7245817B2 (ja) データ処理装置における連続値の照合
US11550574B2 (en) Generating a vector predicate summary
JP7377208B2 (ja) データ処理
US11321051B2 (en) Statistical mode determination
CN114995820A (zh) 代码翻译方法、装置、设备、存储介质和程序产品
WO2023199015A1 (en) Technique for handling data elements stored in an array storage
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
JP2020201659A (ja) 演算装置、演算方法、および演算プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230313

R150 Certificate of patent or registration of utility model

Ref document number: 7245817

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150