JP5110162B2 - 検索装置および検索方法 - Google Patents

検索装置および検索方法 Download PDF

Info

Publication number
JP5110162B2
JP5110162B2 JP2010518850A JP2010518850A JP5110162B2 JP 5110162 B2 JP5110162 B2 JP 5110162B2 JP 2010518850 A JP2010518850 A JP 2010518850A JP 2010518850 A JP2010518850 A JP 2010518850A JP 5110162 B2 JP5110162 B2 JP 5110162B2
Authority
JP
Japan
Prior art keywords
search
record
core
collation
buffer
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.)
Expired - Fee Related
Application number
JP2010518850A
Other languages
English (en)
Other versions
JPWO2010001464A1 (ja
Inventor
毅 ▲葛▼
真一郎 多湖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2010001464A1 publication Critical patent/JPWO2010001464A1/ja
Application granted granted Critical
Publication of JP5110162B2 publication Critical patent/JP5110162B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

この出願は、検索装置および検索方法に関し、特に、オートマトン処理技術を適用して与えられた入力文字列であるテキストから任意の文字列であるパターンを検索する検索装置および検索方法に関する。
近年、さまざまな分野で情報量が爆発的に増加している。そして、分野によっては、情報量がギガバイトオーダーからテラバイトオーダーになって、その莫大なデータから所望のデータを短時間で取り出すことが困難となって来ている。
与えられたテキストから任意の種類のパターンを検索するパターンマッチングは、ワープロソフトやデータベースの検索など様々な分野で応用されている。
すなわち、近年、XMLデータベースをはじめとするパターン照合(検索)処理が必要なアプリケーションの需要が増加傾向にあり、その高速化のためにパターン照合を行うオートマトン照合装置(検索コア)をプロセッサに搭載する手法が提案されている。
そして、従来、このような照合装置を複数有するプロセッサシステムにおいては、1枚の照合すべきテキストを如何にして高速に照合するかが検討されている。
具体的に、従来、照合装置を複数有するプロセッサシステムを使用して、複数文字を一度に照合する方法が提案されている。
さらに、従来、照合装置を複数有するプロセッサシステムを使用して並列処理を実行するために、照合テキストを分割する方法も提案されている。
特開2005−242672号公報 特許第2865831号公報
従来、照合装置を複数有するプロセッサシステムを使用してテキストの照合を行うものが提案されている。
しかしながら、例えば、データベースがはじめから複数のXMLテキスト群により構成されたXMLデータベースシステムの照合(検索)処理において、はじめからパターン照合を行うと各XMLテキスト間で並列性が高いため、照合装置の搭載数を増やすなどして照合処理を容易に並列処理して高速化することができる。しかしながら、その照合結果を用いたCPUによる後処理の比重は大きくなる。
また、照合処理とCPUの後処理とを並列動作させる場合、そのオーバーヘッドを減らすためのデータの受け渡し方法および制御方式が、検索(照合)システム全体の高速化を実現するのに重要となる。
さらに、各照合結果のテキスト単位の順序関係を保持してCPUで後処理を行う仕組みも必要となる。例えば、XMLデータベースシステムにおける検索において、もし、XMLテキストのCPU処理順序がXMLデータベースで管理されている順序と毎回異なると、検索結果が毎回違った順番に表示され、ユーザにとって使いにくいシステムとなってしまう。
そのため、並列動作により順不同に照合完了した照合結果から、レコード順に後処理可能となった段階で並列に処理するための効率的な仕組みも必要となる。
本出願は、上述した従来および関連技術における課題に鑑み、各照合装置(検索コア)とCPU処理の並列動作のオーバーヘッドを減らしてデータの受け渡しを行いシステムの高速化を行うことが可能な検索装置および検索方法の提供を目的とする。
第1の実施形態によれば、CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置が提供される。前記CPUは、入力された検索式に従ってオートマトンを作成し、前記スケジューラは、処理対象テキストを、順番付けしたレコード単位で前記各検索コアに分配する。さらに、前記各検索コアは、前記分配された各レコードをそれぞれ並列的にオートマトン照合し、前記CPUは、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価する。
第2の実施形態によれば、CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置を使用した検索方法が提供される。前記CPUが、入力された検索式に従ってオートマトンを作成し、前記スケジューラが、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配する。さらに、前記各検索コアが、前記分配された各レコードをそれぞれ並列的に照合処理し、前記CPUが、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価する。
第3の実施形態によれば、CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えたコンピュータに、前記CPUに、入力された検索式に従ってオートマトンを作成させる手順と、前記スケジューラに、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配させる手順と、前記各検索コアに、前記分配された各レコードをそれぞれ並列的に照合処理させる手順と、前記CPUに、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価させる手順と、を実行させる検索プログラムが提供される。
各実施形態によれば、各照合装置とCPU処理の並列動作のオーバーヘッドを減らしてデータの受け渡しを行いシステムの高速化を行うことが可能な検索装置および検索方法を提供することができる。
まず、検索装置および検索方法の実施例を詳述する前に、従来技術およびその問題点を、図面を参照して説明する。
図1Aおよび図1Bはオートマトンによるキーワード検索アルゴリズムの一例であるシグマ(Sigma)アルゴリズムを説明するための図である。なお、図1Aおよび図1Bは、検索対象の文書から"blue","green","red"および"yellow"のキーワードが存在するか否かを検索する例を示している。
まず、図1Aに示されるように、各キーワード条件に対応したオートマトンを作成する。具体的に、"0"で示す根から、各キーワードの先頭文字"b"、"g"、"r"、"y"に遷移し、さらに、各キーワード列の文字に遷移するオートマトンを作成する。
各キーワード列の最後の文字まで一致すれば、そのキーワード列が検索されたことになる。ここで、例えば、"green"のキーワード列には、"re"が含まれており、その後に"d"があれば"red"と一致するので、図1Aに示されるように、"green"の途中から"red"の"d"に遷移する経路が存在する。
検索は、根から始まり、オートマトン内のキーワードがあれば順次遷移し、キーワードと関係のない文字が読み込まれたら根に戻る。
例えば、図1Bに示されるように、"black"を含む文書が入力されると、"blue"の先頭の"b"に遷移し、さらに次の"l"に遷移するが、次が"a"であるため根に戻る。
このように、文書内にオートマトンのキーワード列があれば、各キーワード列の最後まで到達してヒット(Hit)情報が出力され、キーワード列が存在することが判明する。ここで、オートマトン検索において、各キーワード列の何番目の文字にあるかをノードまたは「状態」で表す。例えば、根が状態1で、"blue"の"b"にいれば状態2で、"u"にいれば状態4と称する。
図2は検索装置の一例を概略的に説明するための図であり、決定性有限オートマトンを用いた検索装置を説明するためのものである。
図2に示されるように、ディスク装置などに格納された検索対象文書11が流し込まれると、そこから順に文字バイトコード12が取り出される。以下の説明では、文字バイトコード12が8ビットで、256エントリを形成するものとする。
レジスタに保持された現在の状態(現在の状態を示すデータ)13と、文字バイトコード12とを合わせたインデックスを、検索キーワードオートマトンを形成するメモリ15の入力アドレス14とする。
入力アドレス14が入力されたメモリ15は出力データ16を出力するが、この出力データには、次の状態17およびヒット情報(ヒット値)が含まれる。そして、次の状態17は、現在の状態13に置き換わることになる。
図3は従来の検索装置における検索シーケンスの一例を概略的に示す図であり、図4は従来の検索方法による処理順を概略的に示す図である。
図3に示されるように、従来の検索装置における検索シーケンスは、例えば、検索式が入力される(30)と、オートマトンが作成され(31)、そのオートマトンを使用してレコードの照合(32a,32b,…)および論理式評価(33a,33b,…)が繰り返される。
ここで、オートマトンの作成31,レコードの照合32a,32b,…および論理式評価33a,33b,…は、全てCPU(処理装置)で処理される。
さらに、図4に示されるように、従来の検索方法による処理順は、オートマトンを使用したレコードの照合→照合結果→論理式評価→検索結果をレコード順に行わなければならない。
すなわち、従来の検索方法による処理順は、レコードaの照合(1)を行った後、レコードaの評価(2)を行い、さらに、レコードbの照合(3)を行った後、レコードbの評価(4)を行い、そして、レコードcの照合(5)を行った後、レコードcの評価(6)を行っていた。そして、検索結果は、レコード順に維持する必要があった。
従来の検索装置および検索方法では、各照合装置とCPU処理の並列動作のオーバーヘッドが多くなってシステム動作が遅くなり、或いは、検索結果をレコード順に維持しなければならなかった。
以下、検索装置および検索方法の実施例を、添付図面を参照して詳述するが、その前に、一例として、XMLデータベース検索用アクセラレータ(AC)について説明する。
検索用データベースソフトウエアは、例えば、IAサーバでは対応困難な大規模XMLデータベースを必要とするユーザ向けに、高性能プロセッサを搭載した専用サーバマシンに移植され、この専用サーバ向けプロセッサとしては、XMLレコード照合処理を行うアクセラレータ(AC)を搭載して処理の高速化の図るようになっている。
まず、本実施形態の検索装置(プロセッサシステム)に適用されるアクセラレータ(スケジューラSDおよび検索コア(照合装置)SD)の概要を説明する。すなわち、アクセラレータの概要、ブロック構成および動作を述べ、さらに、各モジュールの役割を説明する。
本実施形態の検索装置は、例えば、XMLデータベースにおける文字列の検索を行うものであり、そのデータベースをユーザから与えられた検索式にマッチするデータを検索する処理である。
使用されている検索アルゴリズムでは、例えば、与えられた検索式に対応するオートマトンを作成し、XMLデータの管理単位であるレコードをそのオートマトンの入力にして流し込むことで照合を行うようになっている。
本実施形態の検索装置における検索処理は大きくレコード照合と論理式評価の2つに分けられる。アクセラレータは、このうちのレコード照合処理を担当する。
図5は本実施形態の検索装置における検索シーケンスの一例を概略的に示す図である。
図5と前述した図3との比較から明らかなように、本実施形態の検索装置における検索シーケンスでは、レコード照合32a,32b,…と論理式評価33a,33b,…を全てCPUで処理するのではなく、スケジューラSDおよび複数のオートマトン処理装置(例えば、4個の検索コア)SCを有するアクセラレータACにより処理する。
すなわち、スケジューラSDは、レコード分配34a,34b,…を行い、また、検索コアSDは、オートマトンの登録35およびレコード照合32を行う。このように、アクセラレータACとしてスケジューラSDおよび複数の検索コアSCを搭載することにより、レコード照合自体を並列処理して高速化し、さらに、論理式評価と並列に動作させるようになっている。
図6は本実施形態の検索方法による処理順を概略的に示す図である。
図6と前述した図4との比較から明らかなように、まず、参照符号61において、アクセラレータACの4個の検索コアSCによりレコードの照合を4つ並列的に処理(1)する。また、参照符号62において、レコード順を保持する配列と照合結果を保持するバッファという構成にすることで、照合順のレコード維持から開放し、並列処理を実現する。なお、参照符号63のように、論理式評価は、CPUによりXMLレコードの順に逐次処理する必要がある。
図7は検索装置の一実施例の要部を示すブロック図である。
図7に示されるように、メインメモリに格納されているXMLデータの各レコード(XMLデータベースはレコードと呼ばれる単位で保持されている)を各検索コアSCが自立的にメインメモリにアクセスして読み出して照合を行い、照合結果であるヒット情報をCPUから高速にアクセスできるL2キャッシュまたはワークメモリ(WorkRAM)に置かれる共有データに書き込む。
CPUとアクセラレータACで共有される制御データは、大きく2つの配列に分かれる。その1つは、レコード情報(レコードの先頭ポインタなど)を保持するレコードソート配列で、他の1つは、照合結果を保持するイベントバッファ配列である。
スケジューラ(スケジューラ回路)SDは、各検索コアSCから通知される空状況をモニタして、空いた検索コアにレコード情報を渡し、照合を指示する。CPUはヒット情報を用いてアクセラレータACと並列に論理式評価を行う。
図8は検索装置の他の実施例の要部を示すブロック図である。
図8に示す実施例は、上述した図7の構成を2つ設けたもので、これを1つのチップとして構成するようになっている。
図8に示されるように、本実施例では、1つの半導体チップ(LSI)CHIPが、図7に示すCPU,アクセラレータACおよびL2キャッシュを2組有している。すなわち、半導体チップCHIPは、2つのCPUシステムPSを備え、各CPUシステムPSは、CPUコア、スケジューラSDおよび複数の(図では4個の)検索コアSCを有するアクセラレータACおよびL2キャッシュ(または、Work RAM)を備えている。
なお、図7および図8の構成は、単なる例であり、例えば、1つの半導体チップCHIPが、CPUと8個の検索コアSCおよびスケジューラSDを有するアクセラレータACとを2組、或いは、4組等有するように構成してもよい。
図9は各実施例が適用される検索サーバの一例を概略的に示す図であり、また、図10は図9の検索サーバを含む検索システムの全体構成を概略的に示す図である。図9および図10において、参照符号SSは検索サーバ、RSはラックシステム、PBはプロセッサボックス、PMはプロセッサモジュール、PSはプロセッサシステム(検索装置)を示している。
図9では、検索サーバSSは、1つのラックシステムRSで構成されており、そのラックシステムRSは、複数個(例えば、15個)のプロセッサボックスPBを備え、さらに、各プロセッサボックスPBは、それぞれ複数枚(例えば、28枚)のプロセッサモジュールPMを備えて構成されている。
また、各プロセッサモジュールPMは、それぞれ3つの半導体チップCHIPと3つのメインメモリを備え、さらに、各半導体チップCHIPは、各々が1つのCPUと,4つの検索コアSCおよびスケジューラSDを有するアクセラレータACで構成される2つのプロセッサシステムPSを備えて構成されている。
ここで、照合処理は、例えば、各プロセッサシステムPSに設けられた各検索コアSCにより各レコード単位でランダム(アウトオブオーダ)に実行することができるが、論理式評価は、例えば、CPUによりXMLデータのレコード順に行うことになる。
なお、各検索コアSCには、例えば、それぞれ高速アクセスが可能なキャシュメモリ(一時キャッシュ)が内蔵されており、このキャッシュメモリに対してオートマトンを作成して格納するようになっている。
図10に示されるように、データ管理部は、ディレクタサーバDSおよびストレージサーバSTRで構成され、また、検索処理部は、検索サーバSSで構成される。検索サーバSSは、例えば、LAN等のネットワークNETを介してディレクタサーバDSに繋がれ、例えば、そのディレクタサーバDSに繋がれたXMLのような構造化文書のデータが格納されたストレージサーバSTRにおける文書データを処理する。
このように、例えば、図9に示す検索サーバでは、2つのCPUコア×(システムのチップ数)個のプロセッサがXMLデータに含まれる全てのレコードをプロセッサ個数に分割してそれぞれ担当して別々に検索処理を行う。
具体的に、例えば、CPUが合計256個、レコードがレコードIDの0000からFFFFまである場合、レコードIDの0000〜00FF,0100〜01FF,…というように256個に分割し、各プロセッサがそれぞれ担当することになる。
また、図10に示す検索システムにおいて、システムが起動されると、ストレージSTRに格納されているXMLデータベースは、ディレクタサーバDSにより分割され、検索サーバSSの各プロセッサ(CPU)に分配されて対応するメモリ上に格納される。
検索が始まると、まず、検索式が検索サーバSSに送られて検索サーバSSがオートマトンを作成し、各アクセラレータACに格納される。そして、各CPUは、自分の担当するXMLデータベースの断片をアクセラレータACに流して照合する。
なお、図9および図10に示す検索装置および検索システムは単なる例であり、適用されるシステムの規模や要求される検索性能等に応じて様々に変化され得るのはいうまでもない。例えば、より大規模なシステムでは、検索サーバSSを複数台のラックシステムRSで構成し、また、複数台のディレクタサーバDSにより管理を行うといった構成にすることも可能である。
図11はレコードIDからレコードを特定する処理を説明するための図であり、XMLデータのデータ構造を示すものである。
図11に示されるように、各レコードは、XMLデータテーブルXDT、レコードインデックステーブルRITおよびメモリデータ情報MDIと呼ばれる構造体により管理される。
まず、XMLデータテーブルXDTには、XMLデータ全体の情報が収められており、レコードインデックステーブルRITへのポインタが含まれている。
レコードインデックステーブルRITは、メモリデータ情報MDIへのポインタ配列となっており、レコードIDの上位2バイトにより要素が識別される。
メモリデータ情報MDIは、各レコードのレコード情報をメンバに持つ構造体配列であり、レコードIDの下位2バイトにより要素が識別される。なお、レコード情報には、アクセラレータACで照合を行う単位となるレコードへのポインタが含まれている。
なお、図6を参照して述べたように、照合処理は各レコード単位でランダム(アウトオブオーダ)に実行可能であるが、論理式評価はこのXMLデータのレコード順に行う必要がある。
図12は各モジュールの役割を説明するための図である。
図12に示されるように、モジュールは、大きくソフトとハードに分類される。さらに、ソフトは、アプリ(アプリケーションプログラム)およびドライバに分類され、また、ハードは、スケジューラSDおよび検索コアSCに分類される。
アプリ(Sigma Evaluation:シグマ評価)は、論理式評価を行い、バッファフルを検出したら、シグマバッファフルを呼ぶ。
ドライバは、シグマ検索(Sigma Search)およびシグマバッファフル(Sigma Buffer Full)に分類される。シグマ検索は、XMLのインデックスを参照して、レコードへのポインタをインオーダで取り出し、ソート配列に登録する。適当なタイミング(ポーリング)でバッファ状態を見て、論理式評価関数を起動する。また、論理式評価関数が終了したら、そこまでのソート配列エントリをフラッシュする。そして、適当なタイミング(論理式評価関数が終了したら評価終了レコード個数をカウントし、閾値を設けて起動など)でレコード情報をソート配列に補充する。
シグマバッファフルは、論理式評価がイベントバッファ終端に到達したら、呼ばれる。そして、イベントバッファフラッシュを行って、現在論理式評価中のレコードの照合結果が終了または次のイベントバッファがフルになるまで待って、終了する。
スケジューラSDは、アイドル状態の検索コアSCがあれば、ソート配列に登録された照合未開始の先頭のレコード情報(ポインタなど)を検索コアSCに分配して、検索開始を指示する。
検索コアSCは、レコード情報が与えられたら、メモリからレコードの文字列を読み込んで照合を行う。ヒットしたらイベントバッファに書き込む。イベントバッファを跨ぐなどがあった場合は、バッファ状態フラグを適切に変更する。そして、照合が終了したら、スケジューラSDにアイドル状態を通知して停止する。イベントバッファフルなどがあったらストールして、イベントバッファがフラッシュされるのを待つ。
次に、アクセラレータACのドライバソフトウエアとアプリケーションの関係について説明する。
図13は各API関数と呼び出し手続きを説明するための図であり、アプリケーション、API関数、ドライバ(アクセラレータライブラリ138)およびアクセラレータACの関係を示している。
図13に示されるように、まず、検索式が与えられると、アプリケーション側で対応するオートマトンを作成(131)する。さらに、シグマロックハンドル(Sigma Alloc Handle)関数およびシグマコンフィグ(Sigma Config)関数を呼んで、アクセラレータACの初期設定(作業域取得132および環境設定133)を行う。なお、シグマコンフィグ関数は、システム起動時のみとしてもよい。
そして、シグマ登録(Sigma Registration)関数を呼んで作成したオートマトンをアクセラレータACに登録(134)する。さらに、シグマ検索(Sigma Search)関数を呼んで検索処理の本体を開始(照合実行を起動:135)する。このシグマ検索関数で検索の全体が実行され、アプリケーションは終了を待つ。
最後に,シグマフリーハンドル(Sigma Free Handle)関数を呼んで一連の検索処理が終了(作業域を解放136)する。なお、シグマ検索関数は、レコードの照合をアクセラレータACに指示し、論理式評価の準備ができたレコードを、シグマ評価(Sigma Evaluation)関数を呼んで論理式評価(137)を行う。また、シグマバッファフル(Sigma Buffer Full)関数は、照合結果を保持するイベントバッファが切り替わる際に呼ばれる。
次に、本アクセラレータACの制御方式について説明する。
はじめに、制御データであるレコードソート配列とイベントバッファ配列について、詳細を述べる。さらに、アクセラレータの各動作について、主な動作である検索動作(Sigma Search関数に対応)について述べ、全体制御の遷移概要について述べる。そして、残りのオートマトン登録動作(Sigma Registration関数に対応)および環境設定動作(Sigma Config関数に対応)について述べる。
図14は制御データの詳細なデータ構造を示す図である。
まず、図14に示されるように、制御データは、各レコードの情報を管理するレコードソート配列と、検索コアによる照合結果を書き込むイベントバッファ配列との2つに大きく分かれている。
レコードソート配列の各行には、XMLデータの各レコードがXMLデータのインデックス順に格納され、照合と論理式評価が終了したレコードの行から解放され、そして、行が終端まで使用されたら循環して先頭に戻って使用される。
ここで、各項目は、次の意味を有する。
・照合状態フラグ:そのレコードの検索コアによる照合状態が記録され、論理式評価可能の判定、および、バッファフラッシュ時の論理式評価再開可能の判定に使用される。なお、フラグの意味は、次の通りである。
0:照合未終了かつ照合がイベントバッファを跨いでいない。
1:照合が1つでもイベントバッファを跨いだ。
2:照合が終了した。
・検索コア番号:そのレコードを照合し、または、照合した検索コアの番号で、バッファフラッシュ時に使用される。
・*レコード:XMLデータのレコードの先頭アドレスへのポインタで、照合開始時に検索コアに渡されて使用される。なお、以下において、「*」はアドレスを示している。
・有効フラグ:その行が使用されているかどうかのフラグで、スケジューラがその行を自分のバッファ内に持ってきたときに有効かどうかのチェックに使用される。
0:未使用。
1:使用。
・レコードID(Record ID):論理式評価で使用され、本発明の制御には直接関与しない。
・*イベントバッファ:照合結果が格納されているイベントバッファ領域へのポインタで、論理式評価で使用される。
なお、「*登録top」および「*登録bottom」の2つのポインタ変数は、現在使用されている行の先頭アドレスおよび終端アドレスを指し示し、ドライバ関数シグマ検索(Sigma Search)により保持される。次検索topポインタ変数は、現在登録されているレコードの中でまだ照合開始していない行の先頭アドレスを示し、スケジューラ内レジスタに保持されている。
イベントバッファ配列には、検索コアによる照合結果が書き込まれる。なお、図14は、検索コアが4個(検索コア0,1,2,3:SC)で、各検索コアに割り当てられた領域がイベントバッファ4枚(A,B,C,D)の場合を示している。
各イベントバッファの終端エントリには、次イベントバッファ(例えば、AならばB、BならばC、…)へのポインタが予め書き込まれている。そして、例えば、図14における検索コア0のイベントバッファに示されるように、検索コアおよび論理式評価関数(Sigma Evaluation:シグマ評価)が、それぞれ自分で次のバッファに移行できるようになっている。
図14において、荒い点線RETは、論理式評価で現在参照する最後のエントリの位置を示し、また、細かい点線WETは、照合コアで現在照合結果を書き込んでいる最後のエントリWETを示す。さらに、太線NRは、そのレコードがまだ照合終了していないことを示す。なお、バッファ枚数は、実際には2枚を想定している。
この他に制御に必要なデータとしてバッファ距離がある。これは、検索コアと論理式評価で現在使用されているイベントバッファ間の距離を示し、例えば、図14の検索コア0では『4』が書き込まれている。このデータは、検索コア内部のレジスタに格納されており、検索コアがイベントバッファを跨ぐごとに『1』を加え(+1)また、イベントバッファがフラッシュされるごとに『1』を引く(−1)。
上記のデータは、検索コアの動作のみでなくバッファフラッシュ時の動作判定にドライバ(CPU側)からも参照されるため、そのコピーがスケジューラ(SD)に置かれたマップIOレジスタにもコピーされる(或いは、検索コアのバッファ距離レジスタがメモリマップ上に置かれる)。
図15は共有データの構造(制御データの配置)を説明するための図である。
図15に示されるように、レコードソート配列およびイベントバッファ配列は、L2キャッシュまたはワークRAM(WorkRAM)領域に置かれる。
バッファ距離のオリジナルは、検索コア(SC)内部に置かれ、バッファ距離のコピーは、スケジューラ(SD)に置かれる。次照合topは、スケジューラ内部におかれる。また、図15では、後で検索動作を説明するためのスケジューラと検索コアSC内にあるレジスタも描かれている。
ここで、スケジューラは、次の意味を持っている。
・アイドル(idle)フラグ:各検索コアの状態を示す。
0:アイドル状態。
1:ビジー状態。
・*次検索top:次に照合するレコード情報が格納されているソート配列のエントリアドレスを指すレジスタ。
・レコード情報バッファ:レコードソート配列のエントリを一時的に格納するバッファであり、検索コアの個数分だけある。*次照合topからバッファ数分だけ持ってくるが、もし、ソート配列の有効フラグが『0』であれば破棄して、*次照合topは適当なサイクル後に再度読み込む。
・バッファ距離コピー:検索コアのバッファ距離のコピーを置く。
・フラッシュ完了フラグ:イベントバッファフラッシュの待ち合わせに使う。
・*登録bottomコピー:*登録bottom変数のコピーを保持する。スケジューラがレコード情報をバッファリングする際に、次照合topが追い越さないために使用する。
また、検索コアは、次の意味を持っている。
・文字バッファ:照合するレコードを一時的に格納する数十バイト程度のバッファで、検索コアは、ここから1文字ずつ使用し、オートマトンを遷移させて照合する。
・*イベントバッファ:各照合コアがレコード照合のヒット情報を書き込む先のイベントバッファへのポインタである。
・バッファ距離:論理式評価と照合の同期に使うもので、その検索コアのイベントバッファにおける現在の論理式評価読み出し位置と照合結果書き込み位置のバッファ枚数単位の距離である。なお、初期値は『0』で、書き込みは検索コアのみが行う。照合結果書き込み時に現在のバッファ終端に到達したタイミングで『1』を加え(+1)また、イベントバッファフラッシュを指示されると『1』を引く(−1)。
図16および図17は、各データの書き込みおよび読み出しの関係を説明するための図である。
図16に示されるように、まず、各データの書き込みに関して、シグマ検索(Sigma Search)からレコードソート配列への書き込みが多いが、これは、シグマ検索でXMLデータインデックスを参照してレコード情報を取り出し、ソート配列に格納するためである。検索コアからのレコードソート配列への書き込みは、レコード照合開始時に決まるレコードの管理情報であり、また、検索コアからイベントバッファ配列への書き込みは、照合ヒット情報である。
また、読み出しに関して、シグマ検索はソート配列の状態フラグを見るが、これは、シグマ評価(Sigma Evaluation)起動可能判定のためである。シグマ評価は、論理式評価開始に必要となるレコード管理情報をソート配列から読み出し、論理式評価のためのヒット情報をイベントバッファから読み出す。
シグマバッファフル(Sigma Buffer Full)は、バッファフル時の制御に必要となる情報(レコードID、および、*イベントバッファ)をソート配列から読み込む。スケジューラは、検索コアが照合を開始するための情報(*レコード)をソート配列から取り出す。
次に、本アクセラレータの主な処理である検索動作(シグマ検索関数が呼ばれてから終了するまで)について述べる。
まず、イベントバッファの制御(イベントバッファの読み書きの同期方法)について説明する。
図16および図17に示されるように、イベントバッファは、照合結果が格納されるバッファであり、照合ヒット時には検索コアから直接イベントバッファに書き込まれ、論理式評価関数で読み出されて使用される。
イベントバッファは、検索コアごとに領域が割り当てられており、その領域を2枚以上のイベントバッファに分割して使用する。なお、領域は有限であるから、いずれバッファをフラッシュして再利用する必要がある。このフラッシュには、シグマバッファフル関数を使用して同期を取るようになっている。
ここで、必要な条件判定は、次の通りである。
A) シグマ評価関数の起動可能条件判定。
B) シグマバッファフル関数の終了可能条件判定(シグマ評価の再開)。
C) 検索コアの照合結果を書き込み、未追い越し判定。
なお、イベントバッファを跨いだ情報だけではうまくいかない例としては、照合がイベントバッファを跨いだ情報と、そのレコードの照合が終了した情報の2つがないとうまくいかない。例えば、バッファ距離のみしかなくてそれが2以上だと、次バッファの論理式評価継続可とした場合に、イベントバッファを2つ跨いで終了するようなレコード(イベントバッファを2枚半程度使うレコード)が照合終了し、その検索コアでは、そのレコードの照合以降はアイドル状態になっているとすると、デッドロックしてしまう。
そこで、本実施例の制御方法では、上記の処理を行うときに、前述した状態フラグ(制御データ)とバッファ距離(検索コア内レジスタ、および、IOレジスタへのコピー)を使用する。
ここで、各変数の操作ルールを説明する。
まず、バッファ距離に関しては、次の通りである。
・照合がバッファ終端に到達したら、『1』を加える(+1)
・シグマバッファフルから通知を受けたら、『1』を引く(−1)。
また、状態フラグに関しては、次の通りである。
・初期状態は『0』
・照合がイベントバッファを跨いだら『1』とする
・照合が終了したら『2』とする
ここで、必要な条件判定方法は、次の通りである。
A) シグマ評価関数の起動可能条件判定。
・ソート配列の先頭からレコード状態フラグが『0』以外なら可。
B) シグマバッファフル関数の終了可能条件判定(シグマ評価の再開)。
・バッファ距離が『2』以上であれば可(フラッシュ完了前)。
・バッファ距離が『1』以上であれば可(フラッシュ完了後)。
・レコード状態フラグが『2』であれば可。
C) 検索コアの照合結果を書き込み、未追い越し判定。
・バッファ距離がイベントバッファ枚数(図16の例では4)未満なら可。
次に、検索動作の2つの例を用いて説明する。なお、その1つの動作は、イベントバッファフラッシュが起きていない通常時の例であり、他の1つは、イベントバッファがフラッシュされる場合の例である。
図18A〜図18Cはスケジューラの動作を説明するための図であり、検索動作時の時間経過による動作を示すものである。
図18A〜図18Cにおいて、図中の上部にあるブロック(CPU,L2キャッシュ(または、Work RAM),アクセラレータ,メモリ)は、ハードウエアのカテゴリを示し、それらの中にある小さなブロックが動作実体を示す。なお、説明を簡略化するために、図18A〜図18Cでは、2つの検索コアSC(検索コア0および1)の構成を示し、また、レコードは、A,B,C,…の順になっているものとする。
すなわち、条件は、検索コアが2個、および、レコード順がA,B,C,…で、状況概要は、レコードB照合が終了しても、レコードA照合未終了のため評価待ち、並びに、レコードC照合が終了しても、レコードD照合未終了のため評価待ちとする。
次に、図18A〜図18C中の左側に示す(1)〜(6)の各時間範囲における各動作実体の動作について説明する。
時間範囲 (1) において
・シグマ検索(Sigma Search):シグマ検索関数が開始すると、メモリにあるXMLデータのレコードインデックスを参照して行き、レコード情報を取り出してソート配列のエントリ個数分を取り込む。登録top,bottomポインタを適切に変更する。なお、この段階では、登録topは1つ目のエントリ、登録bottomは一番下のエントリを指す。そして、登録bottomをスケジューラのマップIOレジスタの登録bottomにコピーする。
・シグマ評価(Sigma Evaluation):存在していない。
・スケジューラ:アイドルモードである。
・検索コア:アイドルモードである。
時間範囲 (2) において
・シグマ検索:スケジューラを検索モードに変更し、論理式評価待ちを開始する。登録topポインタが指すソート配列エントリ(レコードAのレコード情報が格納されている)のレコード状態フラグをポーリングする。この時点では、フラグが『0』であるためなにもしない。
・シグマ評価:存在していない。
・スケジューラ:検索モードに移行し、照合topレジスタが示すソート配列エントリから2つのレコード情報を、自回路内のレコード情報バッファ(検索コアの個数分ある)に格納する。照合topレジスタを『+2』する(ポインタを2エントリ先に進める)。
さらに、各検索コアのアイドルフラグを見て、検索コア0および1がアイドル状態であるため、レコード情報(レコードへのポインタ、および、ソート配列エントリへのポインタ)を渡して照合開始を指示してアイドルフラグをビジー状態にセットする。そして、再度上記と同様にして、レコード情報を自回路内にバッファリングする。
次に、再度、アイドルフラグレジスタをモニタして、次レコードの分配可能を検索コアと待ち合わせる。この時点ではビジー状態なので、アイドル状態になるのを待つことになる。
・検索コア:各検索コア0および1は、スケジューラから渡されたレコードへのポインタから照合を開始する。まず、渡された*ソート配列が指すエントリの検索コア番号と*イベントバッファに対して、それぞれ自分のコア番号と自回路内にある*イベントバッファレジスタの内容を書き込む。さらに、メモリから*レコードから連続する数十バイト(文字バッファのサイズ)のデータ(文字バッファサイズの文字列)を自回路内の文字バッファに取り込む。
そして、文字バッファから1文字ずつ用いて、自コア内に予め格納されているオートマトンを遷移させる。もし、オートマトンがヒット状態であれば、自コア内の*イベントバッファレジスタが指すイベントバッファエントリにヒット情報を書き込んで、*イベントバッファレジスタを『+1』する。ヒットするごとに同様に処理する。なお、ヒット時の書き込みモードによっては、上書き、或いは、書き込まないなどの動作をすることもある。
ここで、文字バッファが空になる前に次の数十バイトを同様に取り込み、検索コアがストールしないようにする。いずれレコードの終端に到着するが、これはレコード文字列を見ることにより検索コアが自分で判別する。
終端に到着したらスケジューラにアイドル状態を通知し(スケジューラのアイドルフラグにアイドル状態を書きこみ)、同時に、ソート配列のレコード状態フラグを『2』(レコード照合終了)にする。この時点では、検索コア0および1のどちらもまだ照合終了していないので、レコードの読み込みとオートマトン遷移を続ける。
時間範囲 (3) において
・シグマ検索:(2)のポーリングを続けている。この時点で、レコードBは照合を終了しているが、先頭レコードAがまだ照合未終了のためポーリングを続ける。
・シグマ評価:存在していない。
・スケジューラ:検索コアのアイドルフラグを毎サイクル見ている。暫くすると検索コア1のアイドルフラグが『0(アイドル状態)』となるので、検索コアに3つ目のレコードCのレコード情報を渡して照合を指示する。さらに、(2)と同様に、検索コア1のアイドルフラグを『1(ビジー状態)』にして、1レコード分のレコード情報をソート配列から再度バッファリングする。
・検索コア:検索コア0および1は、文字列読み込みとオートマトン遷移を続け、ヒットがあればイベントバッファに書き込む。暫くすると、検索コア1は照合終了するのでスケジューラのアイドルフラグを『0』(アイドル状態)に変更し、スケジューラから渡された*ソート配列が指すエントリのレコード状態フラグに『2』を書き込む。
時間範囲 (4) において
・シグマ検索:(2)のポーリングを続けている。この時点でレコードAのレコード状態フラグが『2』となったので、論理式評価が可能。次のエントリのフラグも見て行き、2番目のエントリまでが論理式評価可能なので、レコードAとレコードBを論理式評価するようにシグマ評価を起動する(レコードAのソート配列エントリのアドレスと評価可能レコード数2を引数として渡す)。
・シグマ評価:レコードAとレコードBを論理式評価し、ソート配列の*イベントバッファを用いてイベントバッファから照合結果を読んで論理式評価する。レコードID(Record ID)は処理に使用されるが、本アクセラレータには関係しない。この時点では、論理式評価は終了していない。
・スケジューラ:(3)と同様の動作となる。ここでは検索コア0のレコードAが照合終了するので、次のレコードDを検索コア0に分配し照合を指示する。(3)と同様に、次レコードの分配を待つ。
・検索コア:(3)と同様の動作となる。検索コア0は次レコードDが割り当てられて照合を開始し、また、検索コア1はレコードCの照合を継続する。
時間範囲 (5) において
・シグマ検索:なにもしない。
・シグマ評価:論理式評価を継続する。
・スケジューラ:(3)と同様の動作となる。ここでは検索コア0のレコードDが照合終了するので、次のレコードEを検索コア0に分配し照合を指示する。(3)と同様に、次レコードの分配を待つ。
・検索コア:(3)と同様の動作となる。検索コア0は次レコードEが割り当てられて照合を開始し、また、検索コア1はレコードCの照合を継続する。
時間範囲 (6) において
・シグマ検索:シグマ評価から処理が戻る。ソート配列のレコードAおよびレコードBが格納されていたエントリは不要となったので、(1)と同様にして、XMLデータインデックスを参照して、続きの2つの新しいレコード情報をソート配列に格納する。検索topを『+2』、検索bottomを『+2』する(配列最終要素の次は先頭に循環する)。
検索bottomをスケジューラのマップレジスタにコピーする。再度、論理式評価可能待ちでレコードCの状態フラグをポーリングするが、『2』であるので、この時点で直ぐに論理式評価が可能となる。(4)と同様にして、レコードCおよびDを指定して、シグマ評価を起動する。
・シグマ評価:レコードAおよびBの論理式評価を継続して終了する。その後、再度呼び出され、レコードCおよびDの論理式評価を開始する。
・スケジューラ:(3)と同様の動作となる。ここでは検索コア1のレコードCが照合終了するので、次のレコードFを検索コア1に分配して照合を指示する。(3)と同様に、次レコードの分配を待つ。
・検索コア:(3)と同様の動作となる。検索コア1は次レコードFが割り当てられて照合を開始し、また、検索コア0はレコードEの照合を継続する。
ここで、図18A〜図18Cにおけるシグマ検索の点線で囲まれた部分SSR、並びに、スケジューラの点線で囲まれた部分SDRが繰り返される。このように、照合については、レコード順に関係なく先行するレコードが終了していなくても、検索コアが空くと直ぐに次のレコードが開始される(矢印LB参照)。しかしながら、論理式評価は、レコード順に待ち合わせる(矢印LR参照)必要がある。この制御を,ソート配列で行うようになっている。
また、図18A〜図18Cに示す実施例では、論理式評価の可能か否かの判定に用いる情報(*登録topの状態フラグ)の待ち合わせにポーリングを用いた場合を説明したが、ハードウエアの割り込みも可能なようにすることもできるのはいうまでもない。
図19A〜図19Cはイベントバッファ制御の課題を説明するための図であり、イベントバッファが4枚の場合を示している。すなわち、イベントバッファは有限であるため、レコードバッファの照合終了を示すフラグだけでは制御することができない。なお、図19A〜図19Cにおいて、参照符号SPは照合結果始点、EPは照合結果終点、WPは照合結果書き込み位置、そして、RPは照合結果読み出し位置を示している。
まず、問題がない場合は、図19Aに示されるように、照合結果が1枚のバッファ内に全て収まっている場合である。
次に、問題がある第1の場合としては、図19Bに示されるように、照合結果が全てのイベントバッファより大きい場合であり、論理式評価がはじまらず、詰まってしまうことになる。
さらに、問題がある第2の場合としては、図19Cに示されるように、書き込みが読み出しを追い抜いてしまう場合であり、照合と論理式評価の同期を取ることが必要となる。
図20A〜図20Cは各データの書き込みおよび読み出しの関係を説明するための図であり、各バッファ単位で論理式評価を開始してフラッシュを管理する様子を示している。
まず、図19Bに示す照合結果が全てノイベントバッファより大きい場合(問題がある第1の場合)には、図20AのPP1に示されるように、照合がイベントバッファの終端に到達した情報を照合情報フラグに付加し、到着時点で論理式評価可能と判定する。
次に、図19Cに示す書き込みが読み出しを追い抜いてしまう場合(問題がある第2の場合)には、図20BのPP2に示されるように、照合と論理式評価の距離を保持するレジスタを追加し、照合の追い抜きをバッファ単位で防止する。
さらに、図20CのPP3に示されるように、論理式評価がイベントバッファ終端に到着したら、そのバッファをフラッシュするようにしてもよい。
なお、或る検索コアに対して割り当てられたレコード照合結果(論理式評価)を記録したイベントバッファ(ローカルメモリ:例えば、L2キャシュメモリ)の終端EPには、その次のイベントバッファ(記憶領域)の先頭へのポインタ(SP’)が記載されている。
図21はイベントバッファ制御用情報を説明するための図であり、前述した図15に対応するものである。
図21に示されるように、論理式評価と照合の同期に使うバッファ距離は、スケジューラSDにおけるバッファ距離レジスタPQ1に格納され、イベントバッファフラッシュの待ち合わせに使うフラッシュ完了フラグは、スケジューラSDにおけるフラッシュ完了フラグPQ2に格納される。
また、各検索コアSC(検索コア0〜3)のアイドル状態(空いている状態)は、スケジューラSDに設けられたレジスタPQ3に保持され、スケジューラSDが空いている検索コアを判断できるようになっている。
なお、共有データにおける複数のレコードを管理する管理情報は、スケジューラSDに設けられたバッファPQ4に一時的に保持されるようになっている。
さらに、照合状態フラグは、レコードの検索コアによる照合状態が記録され、論理式評価可能の判定およびバッファフラッシュ時の論理式評価再開可能の判定に使用されるもので、例えば、L2キャッシュのPQ5に格納される。なお、検索コア番号は、レコードを照合し、または、照合した検索コアの番号でバッファフラッシュ時に使用されるもので、例えば、L2キャッシュのPQ6に格納される。
図22A〜図22Cはイベントバッファフラッシュ時の動作例を説明するための図であり、イベントバッファフラッシュ時の時間経過による動作を示すものである。
図18A〜図18Cを参照して述べた例では、イベントバッファサイズが無限にあるケースを想定して説明した。しかしながら、実際には、イベントバッファサイズは有限であるため、イベントバッファを2枚以上に分割して切り替えながら使うことになる。ここでは、その場合の例を説明する。
なお、説明を簡略化するために、図22A〜図22Cでは、検索コアが1個でイベントバッファが2枚の構成を示し、また、あるレコードAの照合結果のサイズが合計2枚以上のイベントバッファサイズとなる場合を示す。
すなわち、条件は、検索コアが1個、および、イベントバッファが2枚で、状況概要は、レコードAの照合がバッファ跨いだので即評価可能であり、1度目のバッファフラッシュ時は、レコードAの照合が2つ目のバッファ跨いだので即終了可能であり、そして、2度目バッファフラッシュ時は、レコードA照合が3つ目のバッファ跨いでいないので待ち合わせとする。
次に、図22A〜図22C中の左側に示す(1)〜(7)の各時間範囲における各動作実体の動作について説明する。
時間範囲 (1) において
・シグマ検索:レコードAの論理式評価可能を、レコードAの状態フラグをポーリングして待っている。この段階では、ポーリング中である。
・シグマ評価:存在していない。
・シグマバッファフル:存在していない。
・スケジューラ:次レコードBの分配可能を、検索コアのアイドル(idle)フラグを見ることで待つ。この段階では、『1』(ビジー状態)を示したままであるため待ち続けることになる。
・検索コア:レコードAの照合中であり、通常時と同様に、メモリからレコード文字列を持ってきてオートマトンを遷移する。そして、ヒットしたらイベントバッファにヒット情報を書き込む。ヒット情報を書き込んでいるうちに、書き込み先のアドレスが1枚目のイベントバッファの終端に到着したら、ソート配列の状態フラグに『1』を書き込む(イベントバッファ跨ぎを通知する)。そして、バッファ距離レジスタを『+1』する。
時間範囲 (2) において
・シグマ検索:状態フラグをポーリングすると、状態フラグが『1』となっているので、レコードAを論理式評価するように、シグマ評価を呼び出す。
・シグマ評価:渡されたレコードAを、通常時と同様に、論理式評価を開始する。このとき、イベントバッファからヒット情報を参照する。
・シグマバッファフル:存在していない。
・スケジューラ:(1)と同じで、変化なし。
・検索コア:2枚目のイベントバッファにヒット情報を書き出す。他は、(1)と同じである。
時間範囲 (3) において
・シグマ検索:シグマ評価の終了を待つ。
・シグマ評価:(2)の論理式評価を継続中である。
・シグマバッファフル:存在していない。
・スケジューラ:(2)と同じ。変化なし。
・検索コア:(1)と同様にヒット情報を書き込んでいるうちに、書き込み先のアドレスが1枚目のイベントバッファの終端に到着。今回は既に状態フラグを『1』にしてあるので、特に外部に通知はしない。バッファ距離レジスタを『+1』する。このときバッファ距離レジスタ=2で、イベントバッファ枚数(2枚)未満でないので、1枚目のイベントバッファが論理式評価で消費されて終わっていないためストールする。
時間範囲 (4) において
・シグマ検索:(3)と同じくシグマ評価の終了を待つ。
・シグマ評価:論理式評価中に参照するイベントバッファのヒット情報の内容がバッファ終端を示している(イベントバッファの終端には、終端を示すビットパターンと次イベントバッファへのポインタが予め書き込まれている)ため、シグマバッファフルを呼び出す。引数にはこのレコードのソート配列エントリへのポインタを渡す。しばらくすると、シグマバッファフルが終了し、次イベントバッファの先頭から論理式評価を再開する。
・シグマバッファフル:渡されたソート配列エントリへのポインタから、検索コア番号を割り出す。そして対応するフラッシュ完了フラグが『0』であるか否かを確認する。『0』なのでフラグに『1』を書き込み、バッファ距離コピーを獲得しておく。
また、検索コア番号をスケジューラに渡し、その検索コアのイベントバッファフラッシュを指示する。(この例では、検索コアが1つしかないため検索コア番号を指定する必要はないが、一般のケースでは必要となる。)
次に、先に獲得しておいたバッファ距離コピー(IOレジスタ)が2以上、または、状態フラグが『2』であるか否かを判定する。バッファ距離コピーが『2』なのですぐに関数が終了可能である。論理式評価再開可能の待ち合わせを行う。
・スケジューラ:フラッシュ指示と検索コア番号0が与えられたので、対応する検索コア0にフラッシュ指示する。
・検索コア:ストール中にフラッシュ指示命令が与えられたので、バッファ距離レジスタを『−1』し、その内容をスケジューラのバッファ距離レジスタのコピーに上書きする。そして、フラッシュ完了フラグを『0』にする。さらに、バッファ距離が『1』となったので照合を再開する。
時間範囲 (5) において
・シグマ検索:(4)と同じくシグマバッファフルの終了を待つ。
・シグマ評価:(4)と同様にイベントバッファ終端に到着したので、再度シグマバッファフルを呼び出す。その後は、シグマバッファフルの終了を待つ。
・シグマバッファフル:スケジューラへの指示までは(4)と同じ。もしこの時点でフラッシュ完了フラグが『1』なら待ち合わせる(1回前のフラッシュ。この場合は関係ない)。次に、予め保持しておいたバッファ距離が『1』なので、フラッシュ完了フラグとバッファ距離をポーリングして待ち合わせ。(フラッシュ完了フラグ=0かつ(バッファ距離≧1または状態フラグ=2))となるのを待つ。
・スケジューラ:(4)と同様にフラッシュを指示する。
・検索コア:(4)と同様に、フラッシュし、照合を継続する。
時間範囲 (6) において
・シグマ検索:(5)と同じく、シグマ評価の終了を待つ。
・シグマ評価:シグマバッファフルの終了を待つ。しばらくすると、シグマバッファフルが終了し、次イベントバッファの先頭から論理式評価を再開する。
・シグマバッファフル:(5)に引き続きポーリングを行い、しばらくすると、バッファ距離=1であるが、状態フラグ=2となるので終了する。
・スケジューラ:次レコードの分配を待ち、検索コア0からアイドル状態が通知されるので次のレコードBを分配する。レコード情報バッファを再度充填して、また次レコードの分配待ち状態になる。
・検索コア:レコード照合が終了し、それをソート配列とスケジューラに通知する。次のレコードBが渡されて、照合を開始する。
時間範囲 (7) において
・シグマ検索:(6)に引き続き、シグマ評価の終了を待つ。しばらくすると終了するので、空いたソート配列のエントリに続きのレコード情報を充填し、論理式評価可能を待つ。この時点では、レコードBが照合終了していないので待つことになる。
・シグマ評価:論理式評価が終了し、関数が終了する。
・シグマバッファフル:存在していない。
・スケジューラ:(6)に引き続き次レコードの分配を待つ。
・検索コア:(6)に引き続きレコードBを照合する。
以上、実施例における動作を説明してきたが、次に、各関数の検索動作を、フローチャートを参照して説明する。
図23はAPI関数と呼び出し手続きをフローチャートと関連付けて説明するための図である。図23において、左側部の図は、図5に示す検索シーケンスを書き換えたものに相当し、また、中央の図は、各API関数と呼び出し手続きを説明するために使用した図13と同様のものである。
図23に示されるように、本実施例が対象とする動作は、検索シーケンスにおけるレコード照合処理,照合結果処理,論理式評価処理および検索結果処理に対応する検索動作である。ここで、検索動作(図23中で太線で囲んだ部分)において、照合実行起動135は、図24に示すシグマ検索処理に対応し、論理式評価137は、図27に示すシグマ評価処理に対応し、そして、アクセラレータライブラリ138内のバッファフル処理139は、図28に示すシグマバッファフル処理に対応する。
以下、各フローチャートを参照して、シグマ検索処理,シグマ評価処理およびシグマバッファフル処理を説明する。
図24はシグマ検索処理の一例を示すフローチャートである。ここで、シグマ検索(Sigma Search)処理は、メインルーチンであり、検索動作をはじめるための処理(関数)である。
シグマ検索処理を介しすると、まず、ステップST1において、はじめにXMLインデックスを参照して(なめて)、ソート配列にレコード情報を格納し、ステップST2に進む。
ステップST2では、アクセラレータを照合モードに変更し、ステップST3に進んで、ポーリングを行う。ここで、ポーリングでは、次評価レコードエントリの状態フラグをポーリングする。
さらに、論理式評価可能となったら、ステップST4において、シグマ評価(Sigma Evaluation)の引数を決定し、ステップST5に進んでシグマ評価を呼ぶ。ここで、渡すレコードの個数に下限や上限を設けてもよい。
次に、ステップST6に進んで、シグマ評価の終了を待ち、さらに、ステップST7に進おいて、シグマ評価が終了したら、渡したレコード情報が格納されているソート配列のエントリに新しいレコード情報を充填してステップST8に進む。
ステップST8では、XMLデータのXMLインデックスが終端になったかどうかを判定する。ステップST8において、XMLデータのXMLインデックスが終端になっていないと判定されると、ステップST3に戻って同様の処理を繰り返す。
一方、ステップST8において、XMLデータのXMLインデックスが終端になったと判定されると、ステップST9に進んで、アクセラレータにアイドル状態への移行条件を通知してステップST10に進む。
ステップST10では、論理式評価が終了したかどうかを判定し、論理式評価が終了したと判定すると関数を終了し、そうでなければステップST3のポーリングに戻り、同様の処理を繰り返す。
図25は図24のシグマ評価を1エントリごとに待ち合わせる場合を示すフローチャートであり、図26は図24のシグマ評価を複数エントリごとに待ち合わせる場合を示すフローチャートである。
図25に示されるように、図24のシグマ評価を1エントリごとに待ち合わせる場合、まず、ステップST21において、ソート配列の全エントリに対して、レコード順(レコードの順番付けの順)にレコード管理情報を格納し、次に、ステップST22に進んで、アクセラレータを起動する。
さらに、ステップST23に進んで、ソート配列の先頭エントリの照合完了を待ち合わせて、ステップST24に進む。ステップST24では、先頭エントリのレコードの論理式評価を実行して、ステップST25に進む。
ステップST25では、ソート配列に1レコード分のレコード管理情報を充填し、先頭エントリを1つ進める。
そして、ステップST26に進んで、データベースの全レコード処理が終了したかどうかを判定し、終了していないと判定されれば、ステップST23に戻って同様の処理を繰り返し、データベースの全レコード処理が終了したと判定されると処理を終了する。
図26に示されるように、図24のシグマ評価を複数エントリごとに待ち合わせる場合、まず、ステップST31において、ソート配列の全エントリに対して、レコード順にレコード管理情報を格納し、次に、ステップST32に進んでアクセラレータを起動する。
さらに、ステップST33に進んで、ソート配列の先頭エントリの照合完了を待ち合わせて、ステップST34に進む。ステップST34では、先頭エントリからレコード順に連続して照合が終了した複数のレコードの論理式評価をレコード順に実行して、ステップST35に進む。
ステップST35では、ソート配列に論理式評価を行ったレコード数と同じ数だけレコード管理情報を充填し、先頭エントリを処理した数だけ進める。
そして、ステップST36に進んで、データベースの全レコード処理が終了したかどうかを判定し、終了していないと判定されれば、ステップST33に戻って同様の処理を繰り返し、データベースの全レコード処理が終了したと判定されると処理を終了する。
図27はシグマ評価処理の一例を示すフローチャートである。ここで、シグマ評価(Sigma Evaluation)は、論理式評価を行うための関数であり、シグマ検索で論理式評価可能と判断されたら呼び出される。
図27に示されるように、依頼された先頭レコードのソート配列エントリアドレスとそこからのレコード個数が渡されると、まず、ステップST41において、a=(レコードソート構造体配列の現在のレコードのイベントバッファのアドレス)、b=1として、ステップST42に進む。ステップST42において、ソート配列からレコードIDを取得し、通常動作のステップST5(通常動作のループ)に進む。すなわち、先頭レコードを現在のレコードとして論理式評価を開始し、イベントバッファから各エントリを読んで評価する。
ステップST5は、ステップST51〜ST54で構成され、ま、ステップST51において、aが示す先の照合結果を読んで論理式評価を実行する。
次に、ステップST52に進んで、a++とし、さらに、ステップST53に進んで、(aが示す先のエントリ)==(レコード結果の終端エントリ)かどうかを判定する。
ステップST53において、(aが示す先のエントリ)==(レコード結果の終端エントリ)であると判定されると、レコード終了時ループ(ステップST6)のステップST61に進み、逆に、(aが示す先のエントリ)==(レコード結果の終端エントリ)ではないと判定されると、ステップST54に進む。
ステップST61では、b==(渡されたレコード個数)かどうかを判定し、b==(渡されたレコード個数)ではないと判定されると、ステップST62で、a=(次レコード照合結果の先頭アドレス)、b++として、ステップST42に戻り同様の処理を繰り返す。そして、ステップST61において、b==(渡されたレコード個数)であると判定されると処理を終了する。
すなわち、もし、現在のレコードが終了したら、次レコードをセットして通常動作に戻り、現在のレコードが終了しなければ終了する。
ステップST54では、(aが示す先のエントリ)==(イベントバッファ終端のエントリ)かどうかを判定し、(aが示す先のエントリ)==(イベントバッファ終端のエントリ)であると判定されると、バッファフル時のステップST7におけるステップST71に進んで、シグマバッファフルを起動して、ステップST72に進む。
そして、ステップST72において、a=(次イベントバッファの先頭エントリのアドレス)としてステップST51に戻り、また、ステップST54で、*a==イベントバッファ終端のエントリではないと判定された場合もステップST51に戻り、同様の処理を繰り返す。
すなわち、イベントバッファ終端に到達したらシグマバッファフルを呼び出して帰ってくるのを待ち、また、通常動作に戻る。
図28シグマバッファフル処理の一例を示すフローチャートである。ここで、シグマバッファフル(Sigma Buffer Full)は、イベントバッファの切り替わりを司る関数であり、対応する検索コアのイベントバッファのフラッシュを指示し、そして、シグマ評価でイベントバッファ終端に達したら呼び出される。
図28に示されるように、まず、ステップST81において、渡されたソート配列要素に対応する検索コア番号を検索し、ステップST82に進む。すなわち、フラッシュするイベントバッファのソート配列エントリのアドレスが引数として渡されるが、そのアドレスからソート配列を参照して検索コア番号を獲得する。
ステップST82では、フラッシュ完了フラグ=1かどうかを判定し、フラッシュ完了フラグ=1ではないと判定されるまで処理を続け、フラッシュ完了フラグ=1ではないと判定されると、ステップST83に進む。
ステップST83において、フラッシュ完了フラグ=1として、ステップST84に進み、バッファ距離コピーを獲得する。すなわち、その検索コアに対する前回のフラッシュ指示との待ち合わせを行い、フラッシュ指示が可能であればその時点でスケジューラのIOレジスタであるバッファ距離コピーを獲得しておく。
さらに、ステップST85に進んで、スケジューラにバッファフラシュ指示と検索コア番号の通知を行って、ステップST86に進む。
ステップST86では、バッファ距離コピー≧2、または、状態フラグ=2かどうかを判定し、バッファ距離コピー≧2ではなく、且つ、状態フラグ=2ではないと判定されると、ポーリングを行うステップST9に進み、バッファ距離コピー≧2、または、状態フラグ=2であると判定されると、処理を終了する。
すなわち、先に獲得しておいたバッファ距離コピーの値とソート配列の状態フラグから終了可能かどうかを判定する。なお、終了すると論理式評価が再開される。
そして、ステップST9においてはステップST91〜ST93において、フラッシュ完了フラグをポーリングし、次に状態フラグとバッファ距離コピーをポーリングして可能状態を待ち合わせる。
すなわち、ステップST91では、フラッシュ完了フラグ=0かどうかを判定し、フラッシュ完了フラグ=0であると判定されるまで処理を続け、フラッシュ完了フラグ=0であると判定されると、ステップST92に進み、バッファ距離コピーを再度獲得して、ステップST93に進む。
ステップST93では、バッファ距離≧1、または、状態フラグ=2であるかどうかを判定し、バッファ距離コピー≧2ではなく、且つ、状態フラグ=2ではないと判定されると、ステップST92に戻って、同様の処理を繰り返し、バッファ距離≧1、または、状態フラグ=2であると判定されると、処理を終了する。
上述した各実施例では、主としてオートマトン処理を行う検索装置および検索方法を説明したが、一般的な並列処理システムであって、その入力データおよび中間データに特徴があり、その特徴のあるデータの処理に対して所定のルールに従って処理する検索装置および検索方法に対しても適用することが可能である。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置であって、
前記CPUは、入力された検索式に従ってオートマトンを作成し、
前記スケジューラは、処理対象テキストを、順番付けしたレコード単位で前記各検索コアに分配し、
前記各検索コアは、前記分配された各レコードをそれぞれ並列的にオートマトン照合し、
前記CPUは、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価することを特徴とする検索装置。
(付記2)
付記1に記載の検索装置において、
前記処理対象テキストの前記各レコード、および、前記各レコードの前記照合結果は、それぞれのデータサイズに規則性を持たないことを特徴とする検索装置。
(付記3)
付記1または2に記載の検索装置において、さらに、
前記CPUおよび前記検索コアの共有データを格納するローカルメモリを備え、
該共有データは、前記複数のレコードの照合結果を格納する照合結果情報と、複数のレコードを管理する管理情報とを有し、
前記各レコードの前記順番付けは、前記管理情報として前記ローカルメモリに保持されることを特徴とする検索装置。
(付記4)
付記3に記載の検索装置において、
前記照合結果情報は、前記各検索コアに対して前記ローカルメモリの2枚以上の記憶領域に分割して割り当てて管理されることを特徴とする検索装置。
(付記5)
付記4に記載の検索装置において、
前記各検索コアに対して割り当てられた前記記憶領域の終端には、次の記憶領域の先頭へのポインタが記載されていることを特徴とする検索装置。
(付記6)
付記3に記載の検索装置において、
前記管理情報は、配列またはリスト構造により照合すべきテキスト群の順番を保持することを特徴とする検索装置。
(付記7)
付記3〜6のいずれか1項に記載の検索装置において、
前記スケジューラは、前記管理情報を読んで空いている前記検索コアに前記順番付けの順で前記管理データを分配して照合を指示し、検索コアはランダムに照合完了することを特徴とする検索装置。
(付記8)
付記7に記載の検索装置において、
前記スケジューラは、前記空いている前記検索コアを判断するための情報を保持するレジスタを備えることを特徴とする検索装置。
(付記9)
付記7または8に記載の検索装置において、
前記スケジューラは、前記管理情報を一時的に保持するバッファを備えることを特徴とする検索装置。
(付記10)
付記1〜9のいずれか1項に記載の検索装置において、
前記処理対象テキストは、構造化文書であり、
前記各検索コアは、前記構造化文書のデータから所定の文字列を検索することを特徴とする検索装置。
(付記11)
付記10に記載の検索装置において、
前記構造化文書は、XML文書であることを特徴とする検索装置。
(付記12)
付記1〜11のいずれか1項に記載の検索装置を複数結合したことを特徴とする半導体チップ。
(付記13)
付記12に記載の半導体チップにおいて、該半導体チップは付記1〜8のいずれか1項に記載の検索装置を2個備えたことを特徴とする半導体チップ。
(付記14)
付記12または13に記載の半導体チップを複数結合し、
該各半導体チップに対してそれぞれ設けた複数のメモリを備えることを特徴とするプロセッサモジュール。
(付記15)
付記14に記載のプロセッサモジュールを複数結合すると共に、前記各検索コアがアクセス可能な主記憶装置を備えることを特徴とする検索サーバ。
(付記16)
付記15に記載の検索サーバと、
検索対象のデータが格納されたストレージサーバと、
前記検索サーバおよび前記ストレージサーバを管理するディレクタサーバと、を備える検索システム。
(付記17)
CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置を使用した検索方法であって、
前記CPUが、入力された検索式に従ってオートマトンを作成し、
前記スケジューラが、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配し、
前記各検索コアが、前記分配された各レコードをそれぞれ並列的に照合処理し、
前記CPUが、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価することを特徴とする検索方法。
(付記18)
付記17に記載の検索方法において、
前記処理対象テキストの前記各レコード、および、前記各レコードの前記照合結果は、それぞれのデータサイズに規則性を持たないことを特徴とする検索方法。
(付記19)
付記17または18に記載の検索方法において、
前記スケジューラは、前記CPUおよび前記検索コアの共有データにおける複数のレコードを管理する管理情報を読んで空いている前記検索コアに前記順番付けの順で前記管理データを分配して照合を指示し、検索コアはランダムに照合完了することを特徴とする検索方法。
(付記20)
CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えたコンピュータに、
前記CPUに、入力された検索式に従ってオートマトンを作成させる手順と、
前記スケジューラに、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配させる手順と、
前記各検索コアに、前記分配された各レコードをそれぞれ並列的に照合処理させる手順と、
前記CPUに、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価させる手順と、を実行させる検索プログラム。
オートマトンによるキーワード検索アルゴリズムの一例であるシグマアルゴリズムを説明する図(その1)である。 オートマトンによるキーワード検索アルゴリズムの一例であるシグマアルゴリズムを説明する図(その2)である。 検索装置の一例を概略的に説明するための図である。 従来の検索装置における検索シーケンスの一例を概略的に示す図である。 従来の検索方法による処理順を概略的に示す図である。 本実施形態の検索装置における検索シーケンスの一例を概略的に示す図である。 本実施形態の検索方法による処理順を概略的に示す図である。 検索装置の一実施例の要部を示すブロック図である。 検索装置の他の実施例の要部を示すブロック図である。 各実施例が適用される検索サーバの一例を概略的に示す図である。 図9の検索サーバを含む検索システムの全体構成を概略的に示す図である。 レコードIDからレコードを特定する処理を説明するための図である。 各モジュールの役割を説明するための図である。 各API関数と呼び出し手続きを説明するための図である。 制御データの詳細なデータ構造を示す図である。 共有データの構造を説明するための図である。 各データの書き込みおよび読み出しの関係を説明するための図(その1)である。 各データの書き込みおよび読み出しの関係を説明するための図(その2)である。 スケジューラの動作を説明するための図(その1)である。 スケジューラの動作を説明するための図(その2)である。 スケジューラの動作を説明するための図(その3)である。 イベントバッファ制御の課題を説明するための図(その1)である。 イベントバッファ制御の課題を説明するための図(その2)である。 イベントバッファ制御の課題を説明するための図(その3)である。 各データの書き込みおよび読み出しの関係を説明するための図(その1)である。 各データの書き込みおよび読み出しの関係を説明するための図(その2)である。 各データの書き込みおよび読み出しの関係を説明するための図(その3)である。 イベントバッファ制御用情報を説明するための図である。 イベントバッファフラッシュ時の動作例を説明するための図(その1)である。 イベントバッファフラッシュ時の動作例を説明するための図(その2)である。 イベントバッファフラッシュ時の動作例を説明するための図(その3)である。 API関数と呼び出し手続きをフローチャートと関連付けて説明するための図である。 シグマ検索処理の一例を示すフローチャートである。 図24のシグマ評価を1エントリごとに待ち合わせる場合を示すフローチャートである。 図24のシグマ評価を複数エントリごとに待ち合わせる場合を示すフローチャートである。 シグマ評価処理の一例を示すフローチャートである。 シグマバッファフル処理の一例を示すフローチャートである。
11 検索対象文書
12 入力文字
13 現在の状態
14 入力アドレス
15 メモリ
16 出力データ
17 次の状態
AC アクセラレータ
CHIP 半導体チップ
DS ディレクタサーバ
MEM メモリコントローラ
NET ネットワーク
PB プロセッサボックス
PM プロセッサモジュール
PS プロセッサシステム(検索装置)
RS ラックシステム
SC 検索コア(照合装置)
SD スケジューラ
SS サーチサーバ
STR ストレージ

Claims (8)

  1. CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置であって、
    前記CPUは、入力された検索式に従ってオートマトンを作成し、
    前記スケジューラは、処理対象テキストを、順番付けしたレコード単位で前記各検索コアに分配し、
    前記各検索コアは、前記分配された各レコードをそれぞれ並列的にオートマトン照合し、
    前記CPUは、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価することを特徴とする検索装置。
  2. 請求項1に記載の検索装置において、さらに、
    前記CPUおよび前記検索コアの共有データを格納するローカルメモリを備え、
    該共有データは、前記複数のレコードの照合結果を格納する照合結果情報と、複数のレコードを管理する管理情報とを有し、
    前記各レコードの前記順番付けは、前記管理情報として前記ローカルメモリに保持されることを特徴とする検索装置。
  3. 請求項2に記載の検索装置において、
    前記照合結果情報は、前記各検索コアに対して前記ローカルメモリの2枚以上の記憶領域に分割して割り当てて管理されることを特徴とする検索装置。
  4. 請求項2または3に記載の検索装置において、
    前記スケジューラは、前記管理情報を読んで空いている前記検索コアに前記順番付けの順で前記管理データを分配して照合を指示し、検索コアはランダムに照合完了することを特徴とする検索装置。
  5. 請求項1〜4のいずれか1項に記載の検索装置において、
    前記処理対象テキストは、構造化文書であり、
    前記各検索コアは、前記構造化文書のデータから所定の文字列を検索することを特徴とする検索装置。
  6. CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えた検索装置を使用した検索方法であって、
    前記CPUが、入力された検索式に従ってオートマトンを作成し、
    前記スケジューラが、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配し、
    前記各検索コアが、前記分配された各レコードをそれぞれ並列的に照合処理し、
    前記CPUが、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価することを特徴とする検索方法。
  7. 請求項6に記載の検索方法において、
    前記スケジューラは、前記CPUおよび前記検索コアの共有データにおける複数のレコードを管理する管理情報を読んで空いている前記検索コアに前記順番付けの順で前記管理データを分配して照合を指示し、検索コアはランダムに照合完了することを特徴とする検索方法。
  8. CPUと、複数の検索コアおよびスケジューラを有するアクセラレータと、を備えたコンピュータに、
    前記CPUに、入力された検索式に従ってオートマトンを作成させる手順と、
    前記スケジューラに、処理対象テキストを順番付けされたレコード単位で前記各検索コアに分配させる手順と、
    前記各検索コアに、前記分配された各レコードをそれぞれ並列的に照合処理させる手順と、
    前記CPUに、前記各レコード単位の照合結果を該各レコードの前記順番付けの順で論理式評価させる手順と、を実行させる検索プログラム。
JP2010518850A 2008-07-01 2008-07-01 検索装置および検索方法 Expired - Fee Related JP5110162B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/061913 WO2010001464A1 (ja) 2008-07-01 2008-07-01 検索装置および検索方法

Publications (2)

Publication Number Publication Date
JPWO2010001464A1 JPWO2010001464A1 (ja) 2011-12-15
JP5110162B2 true JP5110162B2 (ja) 2012-12-26

Family

ID=41465580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010518850A Expired - Fee Related JP5110162B2 (ja) 2008-07-01 2008-07-01 検索装置および検索方法

Country Status (4)

Country Link
US (1) US8423499B2 (ja)
JP (1) JP5110162B2 (ja)
CN (1) CN102084357B (ja)
WO (1) WO2010001464A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5195408B2 (ja) * 2008-12-25 2013-05-08 富士通セミコンダクター株式会社 マルチコアシステム
US10698953B2 (en) * 2009-10-30 2020-06-30 Oracle International Corporation Efficient XML tree indexing structure over XML content
CN103064841A (zh) * 2011-10-20 2013-04-24 北京中搜网络技术股份有限公司 检索装置和检索方法
WO2014163072A1 (ja) * 2013-04-01 2014-10-09 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
CN103699418B (zh) * 2013-12-27 2016-08-24 飞天诚信科技股份有限公司 一种检索外部sd卡的方法及装置
WO2017109911A1 (ja) * 2015-12-24 2017-06-29 株式会社日立製作所 ホストにとってデータ転送量が不明な検索リクエストを処理する検索処理システム及び方法
CN110827108B (zh) * 2018-08-13 2023-05-26 阿里巴巴集团控股有限公司 信息搜索方法、搜索请求控制方法及系统
KR20210149327A (ko) 2020-06-02 2021-12-09 에스케이하이닉스 주식회사 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템
CN114070657B (zh) * 2020-08-03 2025-05-30 华为技术有限公司 芯片
US11640380B2 (en) 2021-03-10 2023-05-02 Oracle International Corporation Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS
CN113468047B (zh) * 2021-06-17 2022-05-17 天津大学 基于启发式规则的并发式自适应随机测试方法
CN116521969B (zh) * 2023-02-28 2023-12-29 华为云计算技术有限公司 一种数据检索方法、服务端、系统及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696124A (ja) * 1992-09-11 1994-04-08 Sumitomo Metal Ind Ltd 情報検索装置
WO2004084095A1 (ja) * 2003-03-18 2004-09-30 Fujitsu Limited 情報検索システム
JP2005242672A (ja) * 2004-02-26 2005-09-08 Nippon Telegr & Teleph Corp <Ntt> パターンマッチング装置および方法ならびにプログラム
JP2006228254A (ja) * 2006-05-08 2006-08-31 Hitachi Ltd データベース管理システムおよび問合せの処理方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4550436A (en) * 1983-07-26 1985-10-29 At&T Bell Laboratories Parallel text matching methods and apparatus
US4876643A (en) * 1987-06-24 1989-10-24 Kabushiki Kaisha Toshiba Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests
US5452451A (en) * 1989-06-15 1995-09-19 Hitachi, Ltd. System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions
JP2865831B2 (ja) 1990-08-31 1999-03-08 株式会社日立製作所 並列ストリング・サーチ装置
JP3564999B2 (ja) * 1998-03-17 2004-09-15 松下電器産業株式会社 情報検索装置
EP1402254A1 (en) * 2001-05-04 2004-03-31 Paracel, Inc. Method and apparatus for high-speed approximate sub-string searches
US20050165765A1 (en) * 2003-03-18 2005-07-28 Fujitsu Limited Information search system, information search method, information search apparatus, and recording medium to which information search program, is recorded and which can be read by computer
JP4111064B2 (ja) 2003-04-21 2008-07-02 コクヨ株式会社 部材の取付構造
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US8010481B2 (en) * 2006-03-07 2011-08-30 The Regents Of The University Of California Pattern matching technique for high throughput network processing
US7996348B2 (en) * 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
US7827190B2 (en) * 2006-12-08 2010-11-02 Pandya Ashish A Complex symbol evaluation for programmable intelligent search memory
US9021582B2 (en) * 2007-04-24 2015-04-28 Juniper Networks, Inc. Parallelized pattern matching using non-deterministic finite automata
CN101187937A (zh) * 2007-10-30 2008-05-28 北京航空航天大学 网格环境下模式复用的异构数据库访问和集成方法
US9164945B2 (en) * 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696124A (ja) * 1992-09-11 1994-04-08 Sumitomo Metal Ind Ltd 情報検索装置
WO2004084095A1 (ja) * 2003-03-18 2004-09-30 Fujitsu Limited 情報検索システム
JP2005242672A (ja) * 2004-02-26 2005-09-08 Nippon Telegr & Teleph Corp <Ntt> パターンマッチング装置および方法ならびにプログラム
JP2006228254A (ja) * 2006-05-08 2006-08-31 Hitachi Ltd データベース管理システムおよび問合せの処理方法

Also Published As

Publication number Publication date
US8423499B2 (en) 2013-04-16
JPWO2010001464A1 (ja) 2011-12-15
CN102084357B (zh) 2014-06-04
US20110093429A1 (en) 2011-04-21
CN102084357A (zh) 2011-06-01
WO2010001464A1 (ja) 2010-01-07

Similar Documents

Publication Publication Date Title
JP5110162B2 (ja) 検索装置および検索方法
CN100530082C (zh) 具有用于不同线程的非对称硬件多线程支持的装置
US8713335B2 (en) Parallel processing computer systems with reduced power consumption and methods for providing the same
Xie et al. Three-dimensional integrated circuit design
CN101861571B (zh) 用于修改存储器存取次序的系统、设备及方法
US9619430B2 (en) Active non-volatile memory post-processing
US11893281B2 (en) Execution condition embedded in a command or a request to storage device
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
US7243200B2 (en) Establishing command order in an out of order DMA command queue
JP2000284995A (ja) データ処理装置及び記録媒体
CN110874271A (zh) 一种海量建筑图斑特征快速计算方法及系统
CN1908890A (zh) 用于使用记录板机制处理加载锁定指令的方法和装置
CN113590332A (zh) 内存管理方法、装置及内存分配器
CN113282407A (zh) 基于持久性内存的用户层异步io方法与系统
CN113568908B (zh) 一种键值请求并行调度方法及系统
US8930680B2 (en) Sync-ID for multiple concurrent sync dependencies in an out-of-order store queue
US9170962B2 (en) Dynamic designation of retirement order in out-of-order store queue
CN109656868B (zh) 一种cpu与gpu之间的内存数据转移方法
WO2005041066A1 (ja) 分散メモリ型情報処理システム
CN1333344C (zh) 减轻片上系统软件负载的方法
CN120297246A (zh) 表文件合并方法、数据库实例、设备、介质和程序产品
JP4297744B2 (ja) Lsi内部論理設計システム
CN120803967A (zh) 地址管理的命令处理方法、装置、电子设备及存储介质
CN121901119A (zh) 用于通用图形处理器的访存请求处理方法和装置
CN118819749A (zh) 任务窃取方法、装置、芯片及计算机设备

Legal Events

Date Code Title Description
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: 20120911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120924

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees