JP6956043B2 - Arithmetic logic unit and search method - Google Patents

Arithmetic logic unit and search method Download PDF

Info

Publication number
JP6956043B2
JP6956043B2 JP2018096450A JP2018096450A JP6956043B2 JP 6956043 B2 JP6956043 B2 JP 6956043B2 JP 2018096450 A JP2018096450 A JP 2018096450A JP 2018096450 A JP2018096450 A JP 2018096450A JP 6956043 B2 JP6956043 B2 JP 6956043B2
Authority
JP
Japan
Prior art keywords
graph
unit
information
divided
search
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
JP2018096450A
Other languages
Japanese (ja)
Other versions
JP2019200724A (en
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan Corp
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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2018096450A priority Critical patent/JP6956043B2/en
Publication of JP2019200724A publication Critical patent/JP2019200724A/en
Application granted granted Critical
Publication of JP6956043B2 publication Critical patent/JP6956043B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、演算装置、および検索方法に関する。 The present invention relates to an arithmetic unit and a search method.

従来、種々の情報を検索する技術が知られている。このような技術の一例として、検索対象となる情報(以下、「検索対象情報」と記載する。)が配置された多次元空間内を複数の領域に分割し、クエリ情報と類似する情報をクエリ情報と対応する領域から検索する技術が知られている。 Conventionally, techniques for retrieving various types of information are known. As an example of such a technique, the multidimensional space in which the information to be searched (hereinafter referred to as "search target information") is arranged is divided into a plurality of areas, and information similar to the query information is queried. A technique for searching from an area corresponding to information is known.

特開平10−124528号公報Japanese Unexamined Patent Publication No. 10-124528

“グラフ分割と固有値問題”,川本 達郎, 日本神経回路学会誌 Vol.21,No.4(2014),162−169<インターネット>https://www.jstage.jst.go.jp/article/jnns/21/4/21_162/_pdf(平成30年5月1日検索)"Graph division and eigenvalue problem", Tatsuro Kawamoto, Journal of Japanese Neural Network Society Vol. 21, No. 4 (2014), 162-169 <Internet> https://www.jstage.jst.go.jp/article/jnns/21/4/21_162/_pdf (Searched on May 1, 2018) “ページング方式”<インターネット>http://mt-net.vis.ne.jp/ADFE_mail/0126.htm(平成30年5月1日検索)"Paging method" <Internet> http://mt-net.vis.ne.jp/ADFE_mail/0126.htm (Searched on May 1, 2018) “FPGAのしくみと開発に使うソフトとハード”,丹下 昌彦<インターネット>http://toragi.cqpub.co.jp/Portals/0/backnumber/2009/03/p096-097.pdf(平成30年5月1日検索)"How FPGA works and software and hardware used for development", Masahiko Tange <Internet> http://toragi.cqpub.co.jp/Portals/0/backnumber/2009/03/p096-097.pdf (May 2018) Search on the 1st of the month)

しかしながら、上述した技術では、検索処理における効率を改善する余地がある。 However, in the above-mentioned technique, there is room for improving the efficiency in the search process.

例えば、グラフ構造を有する検索対象情報のうち、クエリ情報と概念が類似する検索対象情報を検索する近傍検索の技術が知られている。このような近傍検索においても、検索対象とする検索対象情報を限定することで、検索の効率を図ることができると考えられる。しかしながら、上述した技術では、単純に多次元空間を複数の領域に分割しているに過ぎないため、グラフ構造を適切に分割することが難しい。このため、必ずしも検索処理における効率を改善することができない場合がある。 For example, there is known a neighborhood search technique for searching search target information having a similar concept to query information among search target information having a graph structure. Even in such a neighborhood search, it is considered that the efficiency of the search can be improved by limiting the search target information to be searched. However, in the above-mentioned technique, it is difficult to appropriately divide the graph structure because the multidimensional space is simply divided into a plurality of regions. Therefore, it may not always be possible to improve the efficiency of the search process.

本願は、上記に鑑みてなされたものであって、検索処理の効率を改善することを目的とする。 The present application has been made in view of the above, and an object of the present application is to improve the efficiency of search processing.

本願に係る演算装置は、クエリ情報を受付ける受付部と、主記憶装置に設定された複数のページであって、検索対象情報のグラフを近傍検索の範囲として推定された領域ごとに分割した分割グラフが登録されたページのうち、前記クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する特定部と、前記特定部により特定されたページ情報が示すページから、前記分割グラフを読み出す読出部と、前記読出部により読み出された分割グラフを用いて、前記クエリ情報と類似する情報を検索する検索部とを有することを特徴とする。 The arithmetic unit according to the present application is a reception unit that receives query information and a plurality of pages set in the main storage device, and is a divided graph in which a graph of search target information is divided into areas estimated as a range of neighborhood search. Among the pages in which is registered, the divided graph is obtained from a specific part that specifies the page information indicating the page in which the divided graph corresponding to the query information is registered and the page indicated by the page information specified by the specific part. It is characterized by having a reading unit to be read and a search unit for searching information similar to the query information by using the divided graph read by the reading unit.

実施形態の一態様によれば、検索処理の効率を改善することができる。 According to one aspect of the embodiment, the efficiency of the search process can be improved.

図1は、演算装置が実行する検索処理の一例について説明する図である。FIG. 1 is a diagram illustrating an example of a search process executed by an arithmetic unit. 図2は、実施形態に係る分割グラフの情報の一例を示す図である。FIG. 2 is a diagram showing an example of information on the divided graph according to the embodiment. 図3は、実施形態に係る検索対象データベースに登録される情報の一例を示す図である。FIG. 3 is a diagram showing an example of information registered in the search target database according to the embodiment. 図4は、ページテーブルに登録される情報の一例を示す図である。FIG. 4 is a diagram showing an example of information registered in the page table. 図5は、実施形態に係る判定処理の流れの一例を説明するフローチャートである。FIG. 5 is a flowchart illustrating an example of the flow of the determination process according to the embodiment.

以下に、本願に係る演算装置、および検索方法を実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る演算装置、および検索方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。 Hereinafter, the arithmetic unit according to the present application and the embodiment for carrying out the search method (hereinafter, referred to as “the embodiment”) will be described in detail with reference to the drawings. The arithmetic unit and the search method according to the present application are not limited by this embodiment. Further, in each of the following embodiments, the same parts are designated by the same reference numerals, and duplicate description is omitted.

[実施形態]
〔1.演算装置の一例〕
まず、図1を用いて、演算装置が実行する検索処理の一例について説明する。なお、以下の説明では、近傍検索によりクエリ情報と類似する情報を検索する処理の一例について説明する。より具体的には、以下の説明では、検索対象情報と対応するノードを、検索対象情報同士の類似性に応じて接続したグラフを用いて、近傍検索を実行する処理の一例について説明する。
[Embodiment]
[1. Example of arithmetic unit]
First, an example of the search process executed by the arithmetic unit will be described with reference to FIG. In the following description, an example of a process of searching for information similar to query information by neighborhood search will be described. More specifically, in the following description, an example of a process of executing a neighborhood search will be described using a graph in which nodes corresponding to the search target information are connected according to the similarity between the search target information.

図1は、実施形態に係る演算装置が有する機能構成の一例を示す図である。図1では、演算装置100は、以下に説明する検索処理を実行する演算装置である。ここで、演算装置100は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂うPLD(Programmable Logic Device)である。より具体的には、演算装置100は、FPGA(Field-Programmable Gate Array)により実現される。また、演算装置100は、外部装置OAおよび主記憶装置200と接続されている。 FIG. 1 is a diagram showing an example of a functional configuration of the arithmetic unit according to the embodiment. In FIG. 1, the arithmetic unit 100 is an arithmetic unit that executes the search process described below. Here, the arithmetic unit 100 is an integrated circuit in which a user can define or change an internal logic circuit after manufacturing, and is a so-called PLD (Programmable Logic Device). More specifically, the arithmetic unit 100 is realized by an FPGA (Field-Programmable Gate Array). Further, the arithmetic unit 100 is connected to the external device OA and the main storage device 200.

主記憶装置200は、各種データを記憶する記憶装置であり、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。 The main storage device 200 is a storage device that stores various types of data, and is realized by, for example, a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory).

ここで、主記憶装置200には、ページと呼ばれる複数の記憶領域が設定されており、ページ単位でデータの読出しおよび書込みが行われる。例えば、主記憶装置200には、ページm1〜ページm4が設定されており、各ページm1〜m4には、それぞれ、近傍検索に用いるグラフを分割した分割グラフG1〜G4が登録されている。また、主記憶装置200には、分割グラフG1〜G4とは別に、検索対象情報が登録される検索対象データベース201が保持されている。 Here, a plurality of storage areas called pages are set in the main storage device 200, and data is read and written in page units. For example, pages m1 to m4 are set in the main storage device 200, and divided graphs G1 to G4, which are divided graphs used for neighborhood search, are registered in each of the pages m1 to m4. Further, the main storage device 200 holds a search target database 201 in which search target information is registered, in addition to the divided graphs G1 to G4.

例えば、図2は、実施形態に係る分割グラフの情報の一例を示す図である。図2に示すように、分割グラフG1には、「ノードID」、「データID」、「エッジ情報」および「接続先」といった項目が含まれている。ここで、「ノードID」とは、分割グラフに含まれるノードを識別するための識別子である。また、「データID」とは、対応付けられた「ノードID」が示すノードと対応する検索対象情報を識別する識別子である。また、エッジ情報とは、ノード同士を接続するエッジを識別する識別子である。また、「接続先」とは、対応付けられた「ノードID」が示すノードとエッジにより接続された他のノードのノードIDである。 For example, FIG. 2 is a diagram showing an example of information on the divided graph according to the embodiment. As shown in FIG. 2, the division graph G1 includes items such as "node ID", "data ID", "edge information", and "connection destination". Here, the "node ID" is an identifier for identifying a node included in the divided graph. Further, the "data ID" is an identifier that identifies the search target information corresponding to the node indicated by the associated "node ID". Further, the edge information is an identifier that identifies an edge that connects the nodes. Further, the "connection destination" is a node ID of another node connected by an edge to the node indicated by the associated "node ID".

例えば、図2に示す例では、ノードID「N1」、データID「D1」、エッジ情報「E12」および接続先「N2」といった情報が対応付けて登録されている。このような情報は、ノードID「N1」が示すノードが、検索対象情報のうちデータID「D1」が示す検索対象情報と対応するノードであり、エッジ情報「E12」が示すエッジにより、接続先「N2」が示すノード、すなわち、ノードID「N2」が示すノードと接続されている旨を示す。 For example, in the example shown in FIG. 2, information such as the node ID “N1”, the data ID “D1”, the edge information “E12”, and the connection destination “N2” are registered in association with each other. In such information, the node indicated by the node ID "N1" is a node corresponding to the search target information indicated by the data ID "D1" among the search target information, and the connection destination is provided by the edge indicated by the edge information "E12". Indicates that the node indicated by "N2", that is, the node indicated by the node ID "N2" is connected.

また、図3は、実施形態に係る検索対象データベースに登録される情報の一例を示す図である。図3に示すように、検索対象データベース201には、「データID」および「検索対象情報」が対応付けて登録されている。ここで、「検索対象情報」とは、検索対象情報のデータである。なお、図3に示す例では、検索対象情報として「データ#1」といった概念的な値を記載したが、実際には、検索対象となる情報の各種データが登録される。 Further, FIG. 3 is a diagram showing an example of information registered in the search target database according to the embodiment. As shown in FIG. 3, the "data ID" and the "search target information" are registered in association with each other in the search target database 201. Here, the "search target information" is data of the search target information. In the example shown in FIG. 3, a conceptual value such as "data # 1" is described as the search target information, but in reality, various data of the search target information are registered.

例えば、図3に示す例では、データID「D1」および検索対象情報「データ#1」が対応付けて登録されている。このような情報は、データID「D1」が示す検索対象情報が、「データ#1」である旨を示す。 For example, in the example shown in FIG. 3, the data ID “D1” and the search target information “data # 1” are registered in association with each other. Such information indicates that the search target information indicated by the data ID "D1" is "data # 1".

図1に戻り、説明を続ける。例えば、演算装置100は、プロセッサ110、入出力装置120、メモリコントローラ130、記憶部140およびFPGA150を有する。プロセッサ110は、演算装置100が有するプロセッサであり、例えば、ARMアーキテクチャやPOWERアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。そして、プロセッサ110は、FPGA150と連携することで、各種の演算処理を実行する。 Returning to FIG. 1, the explanation will be continued. For example, the arithmetic unit 100 includes a processor 110, an input / output device 120, a memory controller 130, a storage unit 140, and an FPGA 150. The processor 110 is a processor included in the arithmetic unit 100, and is, for example, a processor or a microprocessor that employs an ARM architecture or a POWER architecture. Then, the processor 110 executes various arithmetic processes in cooperation with the FPGA 150.

例えば、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。プロセッサコア111は、論理演算や四則演算を実現する所謂コアであり、ALU(Arithmetic Logic Unit)から構成される算術論理演算装置により実現される。キャッシュメモリ112は、プロセッサ110が有する補助記憶装置である。より具体的には、キャッシュメモリ112は、主記憶装置200よりもプロセッサコア111が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。 For example, the processor 110 has a processor core 111 and a cache memory 112. The processor core 111 is a so-called core that realizes logical operations and four rules operations, and is realized by an arithmetic logic unit composed of an ALU (Arithmetic Logic Unit). The cache memory 112 is an auxiliary storage device included in the processor 110. More specifically, the cache memory 112 is a storage device that can be accessed by the processor core 111 at a higher speed than the main storage device 200, and is a so-called cache memory.

入出力装置120は、演算装置100と外部装置OAとの間の通信を中継する装置であり、所謂I/O(Input Output)装置である。例えば、入出力装置120は、USB(Universal Serial Bus)、イーサーネット、SD(Secure Digital)、UART(Universal Asynchronous Receiver/Transmitter)、SPI(Serial Peripheral Interface)、I2C、GPIO(General-purpose input/output)等、各種の通信規格に沿って外部装置OAとの間の通信を制御する各種の入出力装置により実現される。 The input / output device 120 is a device that relays communication between the arithmetic unit 100 and the external device OA, and is a so-called I / O (Input Output) device. For example, the input / output device 120 includes USB (Universal Serial Bus), Ethernet, SD (Secure Digital), UART (Universal Asynchronous Receiver / Transmitter), SPI (Serial Peripheral Interface), I2C, GPIO (General-purpose input / output). ) Etc., which is realized by various input / output devices that control communication with the external device OA according to various communication standards.

メモリコントローラ130は、演算装置100による主記憶装置200へのメモリアクセスを制御する。より具体的には、メモリコントローラ130は、ページング方式により主記憶装置200に格納されたデータの読み出しや書込みを行う。 The memory controller 130 controls the memory access to the main storage device 200 by the arithmetic unit 100. More specifically, the memory controller 130 reads or writes data stored in the main storage device 200 by a paging method.

記憶部140は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。記憶部140は、ページテーブル141を有する。ページテーブル141には、仮想アドレスと物理アドレスとが対応付けて登録されている。 The storage unit 140 is realized by a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory). The storage unit 140 has a page table 141. In the page table 141, the virtual address and the physical address are registered in association with each other.

例えば、図4は、ページテーブルに登録される情報の一例を示す図である。図4に示すように、ページテーブル141には、「仮想ページ番号」と「物理ページ番号」とが対応付けて登録されている。ここで、「仮想ページ番号」とは、プロセッサコア111が各種演算処理の対象となるデータが登録された記憶領域を指定する際に用いる仮想アドレスである。また、「物理ページ番号」とは、主記憶装置200が有する記憶領域を示す物理アドレスである。 For example, FIG. 4 is a diagram showing an example of information registered in the page table. As shown in FIG. 4, in the page table 141, the "virtual page number" and the "physical page number" are registered in association with each other. Here, the "virtual page number" is a virtual address used by the processor core 111 when designating a storage area in which data to be subjected to various arithmetic processes are registered. The "physical page number" is a physical address indicating a storage area of the main storage device 200.

例えば、図4に示す例では、仮想ページ番号「ページs1」と物理ページ番号「ページm1」が対応付けて登録されている。このような情報は、例えば、プロセッサコア111が「ページs1」を用いて指定する情報が、主記憶装置200が有する記憶領域のうち、「ページm1」によって指定される領域に格納されている旨を示す。なお、ページテーブル141は、例えば、各仮想ページ番号が示す記憶領域を用いて演算処理を実行するアプリケーションの識別子が登録されていてもよい。 For example, in the example shown in FIG. 4, the virtual page number “page s1” and the physical page number “page m1” are registered in association with each other. Such information means that, for example, the information designated by the processor core 111 using "page s1" is stored in the area designated by "page m1" in the storage area of the main storage device 200. Is shown. In the page table 141, for example, the identifier of the application that executes the arithmetic processing using the storage area indicated by each virtual page number may be registered.

図1に戻り、説明を続ける。例えば、図1に示す構成を有する場合、プロセッサコア111は、キャッシュメモリ112にアクセスし、演算対象となるデータの取得を試行する。そして、プロセッサコア111は、データがキャッシュメモリ112に格納されていない場合(すなわち、キャッシュミス)は、メモリコントローラ130に対して、演算対象となるデータが格納されている記憶領域のアドレスを通知する。より具体的には、プロセッサコア111は、演算処理に用いる仮想アドレスをメモリコントローラ130に通知する。 Returning to FIG. 1, the explanation will be continued. For example, when the configuration shown in FIG. 1 is provided, the processor core 111 accesses the cache memory 112 and attempts to acquire data to be calculated. Then, when the data is not stored in the cache memory 112 (that is, a cache miss), the processor core 111 notifies the memory controller 130 of the address of the storage area in which the data to be calculated is stored. .. More specifically, the processor core 111 notifies the memory controller 130 of the virtual address used for the arithmetic processing.

このような場合、メモリコントローラ130は、仮想アドレスと、主記憶装置200が有する記憶領域のうち仮想アドレスと対応する情報が格納された記憶領域を示す物理アドレスとを対応付けたページテーブル141を参照し、アクセス対象となる物理アドレスを特定する。そして、メモリコントローラ130は、主記憶装置200が有する記憶領域のうち、特定した物理アドレスが示す記憶領域に格納されたデータを読出す。その後、メモリコントローラ130は、読み出したデータと仮想アドレスとを対応付けてキャッシュメモリ112に登録する。 In such a case, the memory controller 130 refers to the page table 141 in which the virtual address is associated with the physical address indicating the storage area in which the information corresponding to the virtual address is stored in the storage area of the main storage device 200. Then, specify the physical address to be accessed. Then, the memory controller 130 reads out the data stored in the storage area indicated by the specified physical address in the storage area of the main storage device 200. After that, the memory controller 130 associates the read data with the virtual address and registers it in the cache memory 112.

また、メモリコントローラ130は、キャッシュメモリ112に登録されたデータを主記憶装置200に書き戻す場合(ライトバック)は、ページテーブルを参照し、書き戻しの対象となる情報と対応付けられた仮想アドレスと対応する物理アドレスを特定する。そして、メモリコントローラ130は、主記憶装置200の記憶領域のうち、特定した物理アドレスが示す記憶領域に書き戻しの対象となる情報を格納する。 When the memory controller 130 writes back the data registered in the cache memory 112 to the main storage device 200 (writeback), the memory controller 130 refers to the page table and associates the virtual address with the information to be written back. And identify the corresponding physical address. Then, the memory controller 130 stores the information to be written back in the storage area indicated by the specified physical address in the storage area of the main storage device 200.

FPGA150は、外部装置OAからの指示に従って、回路構成を変更可能な演算装置である。例えば、FPGA150は、デジタル回路要素とアナログ回路要素とを含む。例えば、FPGA150には、プログラム可能な論理コンポーネントである複数の論理ブロックを有し、論理ブロック間が再構成可能な配線により相互接続されている。そして、FPGA150は、外部装置OAから受付けたハードウェア記述言語(HDL:Hardware Description language)により、論理コンポーネント間の配線の接続を変更することで、各種の処理をハードウェアにより実現することができる。 The FPGA 150 is an arithmetic unit whose circuit configuration can be changed according to an instruction from the external device OA. For example, the FPGA 150 includes digital circuit elements and analog circuit elements. For example, the FPGA 150 has a plurality of logical blocks that are programmable logical components, and the logical blocks are interconnected by reconfigurable wiring. Then, the FPGA 150 can realize various processes by hardware by changing the connection of the wiring between the logical components by the hardware description language (HDL) received from the external device OA.

ここで、FPGA150は、外部装置OAから受付けたHDLに従って回路を構成することで、以下の機能構成を有する。そして、FPGA150は、以下の機能構成を用いることで、外部装置OAから受付けたクエリ情報と類似する情報を検索対象情報の中から検索する処理を実行する。より具体的には、FPGA150は、以下の機能構成を用いることで、効率的な近傍検索の実行を実現する。 Here, the FPGA 150 has the following functional configuration by configuring the circuit according to the HDL received from the external device OA. Then, the FPGA 150 executes a process of searching the search target information for information similar to the query information received from the external device OA by using the following functional configuration. More specifically, the FPGA 150 realizes efficient neighborhood search execution by using the following functional configuration.

例えば、FPGA150は、分割部161、生成部162、受付部163、特定部164、および検索制御部165を有する。 For example, the FPGA 150 has a division unit 161, a generation unit 162, a reception unit 163, a specific unit 164, and a search control unit 165.

分割部161は、グラフラプラシアンに基づいて、検索対象情報のグラフを複数の分割グラフに分割する。より具体的には、分割部161は、検索対象情報のグラフを、近傍検索の範囲として推定された領域ごとに分割した分割グラフに分割する。 The division unit 161 divides the graph of the search target information into a plurality of division graphs based on the graph Laplacian. More specifically, the division unit 161 divides the graph of the search target information into a division graph divided for each area estimated as the range of the neighborhood search.

例えば、分割部161は、入出力装置120を介して、検索処理の対象となる検索対象情報を受付ける。このような場合、分割部161は、受付けた検索対象情報を検索対象データベース201に登録する。なお、検索対象データベース201は、外部装置OAから入出力装置120およびメモリコントローラ130を介して直接主記憶装置200に登録されてもよい。 For example, the division unit 161 receives the search target information to be the target of the search process via the input / output device 120. In such a case, the division unit 161 registers the received search target information in the search target database 201. The search target database 201 may be directly registered in the main storage device 200 from the external device OA via the input / output device 120 and the memory controller 130.

また、分割部161は、検索対象情報と対応する複数のノードを、検索対象情報の類似性に応じてエッジにより連結されたグラフを外部装置OAから受付ける。すなわち、分割部161は、検索対象情報の類似性を示すグラフを受付ける。なお、このようなグラフは、例えば、近似k最近傍グラフ等、近傍検索に用いるグラフを生成する任意のグラフ生成技術により生成されたものであってよい。 Further, the division unit 161 receives a graph in which a plurality of nodes corresponding to the search target information are connected by edges according to the similarity of the search target information from the external device OA. That is, the division unit 161 accepts a graph showing the similarity of the search target information. It should be noted that such a graph may be generated by an arbitrary graph generation technique for generating a graph used for neighborhood search, such as an approximate k-nearest neighbor graph.

このような場合、分割部161は、グラフを複数のグラフに分割する。より具体的には、分割部161は、受付けたグラフを用いた近傍検索が行われる際に、近傍検索の対象となりうる範囲を推定し、推定した範囲ごとにグラフを分割した分割グラフを生成する。 In such a case, the division unit 161 divides the graph into a plurality of graphs. More specifically, the division unit 161 estimates the range that can be the target of the neighborhood search when the neighborhood search using the accepted graph is performed, and generates a division graph in which the graph is divided for each estimated range. ..

例えば、近傍検索に用いられるグラフは、各ノード間が、各ノードと対応する検索対象情報同士の類似性に応じて連結されている。このため、類似する複数の検索対象情報と対応する複数のノード間は、エッジにより接続されやすいと考えられる。一方、適切にグラフの分割を行うため、分割グラフ感のエッジの数がなるべく小さくなり、かつ、各分割グラフの大きさ(ノードの数)がなるべく等しくなるように、グラフを複数の分割グラフに分割するための様々な手法が提案されている。このようにグラフを複数の分割グラフに分割した場合は、相互に類似する検索対象情報が同じ分割グラフに含まれやすくなると考えられる。すると、分割グラフは、近傍検索を行う際の検索範囲となる検索対象情報を示すと考えられる。 For example, in the graph used for the neighborhood search, each node is connected according to the similarity between the search target information corresponding to each node. Therefore, it is considered that a plurality of similar search target information and a plurality of corresponding nodes are easily connected by an edge. On the other hand, in order to divide the graph appropriately, the graph is divided into a plurality of divided graphs so that the number of edges of the divided graph feeling is as small as possible and the size (number of nodes) of each divided graph is as equal as possible. Various methods for dividing have been proposed. When the graph is divided into a plurality of divided graphs in this way, it is considered that search target information similar to each other is likely to be included in the same divided graph. Then, the divided graph is considered to show the search target information that is the search range when the neighborhood search is performed.

そこで、分割部161は、グラフを複数のグラフに分割する。例えば、分割部161は、グラフ全体を示す隣接行列を生成し、生成した隣接行列に基づいたグラフラプラシアンを設定する。そして、分割部161は、グラフラプラシアンを用いて検索対象情報のグラフを、推定される検索範囲ごとに分割した分割グラフを生成する(ステップS1)。例えば、分割部161は、RatioCutと呼ばれる評価関数や、Ncut(normalized-cut)と呼ばれる評価関数を最小化するように、グラフを複数の分割グラフに分割する。すなわち、分割部161は、スペクトラルクラスタリングと呼ばれる手法により、グラフを分割する。 Therefore, the division unit 161 divides the graph into a plurality of graphs. For example, the division unit 161 generates an adjacency matrix showing the entire graph, and sets a graph Laplacian based on the generated adjacency matrix. Then, the division unit 161 generates a division graph in which the graph of the search target information is divided for each estimated search range using the graph Laplacian (step S1). For example, the division unit 161 divides the graph into a plurality of division graphs so as to minimize the evaluation function called RioCut and the evaluation function called Ncut (normalized-cut). That is, the division unit 161 divides the graph by a method called spectral clustering.

例えば、分割部161は、上述した非特許文献1に開示された手法を用いて、グラフを複数の分割グラフに分割する。より具体的な例を挙げると、分割部161は、グラフを、分割グラフG1〜G4の4つに分割する。この結果、分割部161は、あるクエリ情報を取得した際に、クエリ情報と類似するか否かを判断すべき検索対象情報の範囲を示す分割グラフを生成することができる。すなわち、分割部161は、近傍検索の範囲を示す分割グラフを生成することができる。 For example, the division unit 161 divides the graph into a plurality of division graphs by using the method disclosed in Non-Patent Document 1 described above. To give a more specific example, the division unit 161 divides the graph into four division graphs G1 to G4. As a result, when a certain query information is acquired, the division unit 161 can generate a division graph showing a range of search target information for which it is necessary to determine whether or not it is similar to the query information. That is, the division unit 161 can generate a division graph showing the range of the neighborhood search.

生成部162は、各分割グラフが登録された主記憶装置の物理ページ番号と、検索処理に用いる仮想ページ番号とを対応付けたページテーブル141を生成する。例えば、生成部162は、検索処理を実行するアプリケーションが利用する記憶領域として、各分割グラフを登録するための記憶領域を設定するようにメモリコントローラ130に指示する。このような場合、メモリコントローラ130は、ページテーブル141を参照し、他のアプリケーションによって使用されていない仮想ページ番号と物理ページ番号とを特定し、特定した仮想ページ番号と物理ページ番号とを対応付けてページテーブル141に登録する。 The generation unit 162 generates a page table 141 in which the physical page number of the main storage device in which each divided graph is registered and the virtual page number used for the search process are associated with each other. For example, the generation unit 162 instructs the memory controller 130 to set a storage area for registering each divided graph as a storage area used by the application that executes the search process. In such a case, the memory controller 130 refers to the page table 141, identifies the virtual page number and the physical page number that are not used by other applications, and associates the specified virtual page number with the physical page number. And register it in the page table 141.

また、生成部162は、メモリコントローラ130から割り当てられた仮想ページ番号を用いて、分割グラフを主記憶装置200に登録する。例えば、生成部162は、割り当てられた仮想ページ番号と分割グラフのデータとをメモリコントローラ130に提供し、仮想ページ番号と対応する物理ページ番号が示す記憶領域に、分割グラフのデータを登録させる。例えば、生成部162は、分割グラフG1を物理ページ番号が「ページm1」となる記憶領域に登録させ、分割グラフG2を物理ページ番号が「ページm2」となる記憶領域に登録させ、分割グラフG3を物理ページ番号が「ページm3」となる記憶領域に登録させ、分割グラフG4を物理ページ番号が「ページm4」となる記憶領域に登録させる。 Further, the generation unit 162 registers the division graph in the main storage device 200 by using the virtual page number assigned from the memory controller 130. For example, the generation unit 162 provides the allocated virtual page number and the data of the divided graph to the memory controller 130, and registers the data of the divided graph in the storage area indicated by the physical page number corresponding to the virtual page number. For example, the generation unit 162 registers the divided graph G1 in the storage area where the physical page number is "page m1", registers the divided graph G2 in the storage area where the physical page number is "page m2", and registers the divided graph G3 in the storage area where the physical page number is "page m2". Is registered in the storage area where the physical page number is "page m3", and the divided graph G4 is registered in the storage area where the physical page number is "page m4".

なお、生成部162は、1つのページに1つの分割グラフのデータを登録する必要はない。例えば、生成部162は、1つの分割グラフのデータのデータ長によっては、1つの分割グラフのデータを複数のページに登録してもよい。このような処理の結果、生成部162は、各分割グラフが登録された主記憶装置200の記憶領域を示す物理アドレスと、各分割グラフが登録された主記憶装置200の記憶領域を示す際にプロセッサコア111が用いる仮想アドレスとを対応付けたページテーブル141を作成することができる。 The generation unit 162 does not need to register the data of one divided graph on one page. For example, the generation unit 162 may register the data of one division graph on a plurality of pages depending on the data length of the data of one division graph. As a result of such processing, when the generation unit 162 indicates the physical address indicating the storage area of the main storage device 200 in which each division graph is registered and the storage area of the main storage device 200 in which each division graph is registered, the generation unit 162 indicates. A page table 141 associated with the virtual address used by the processor core 111 can be created.

そして、FPGA150は、分割グラフを用いた近傍検索を実行する。例えば、受付部163は、クエリ情報を受付ける。より具体的には、受付部163は、入出力装置120を介して、外部装置OAからクエリ情報を受付ける。このような場合、受付部163は、クエリ情報を特定部164に提供する。 Then, the FPGA 150 executes a neighborhood search using the divided graph. For example, the reception unit 163 receives the query information. More specifically, the reception unit 163 receives the query information from the external device OA via the input / output device 120. In such a case, the reception unit 163 provides the query information to the specific unit 164.

特定部164は、主記憶装置に設定された複数のページであって、検索対象情報のグラフを近傍検索の範囲として推定された領域ごとに分割した分割グラフが登録されたページのうち、クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する。すなわち、特定部164は、グラフラプラシアンに基づいて分割された分割グラフが登録されたページのうち、クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する。例えば、特定部164は、ページ情報として、クエリ情報と対応する分割グラフが登録されたページの仮想ページ番号を特定する。 The specific unit 164 is a plurality of pages set in the main storage device, and among the pages in which the divided graph in which the graph of the search target information is divided into the areas estimated as the range of the neighborhood search is registered, the query information. Identify the page information indicating the page in which the corresponding split graph is registered. That is, the specifying unit 164 specifies the page information indicating the page in which the divided graph corresponding to the query information is registered, among the pages in which the divided graph divided based on the graph Laplacian is registered. For example, the identification unit 164 specifies the virtual page number of the page in which the division graph corresponding to the query information is registered as the page information.

例えば、FPGA150においては、論理ブロックとして、FPGA150の入出力を制御する入出力ブロックと各種の演算処理を実行するロジックセルとが含まれる。このようなロジックセルは、LUT(Look Up Table)とレジスタとにより構成されており、入力されたデータを、LUTに基づいて変換したデータを出力する(例えば、非特許文献3参照)。そこで、FPGA150は、ロジックセルが有するLUTを書換えることで、入力されたクエリ情報と対応する分割グラフが登録されたページの仮想ページ番号を特定する。より具体的には、FPGA150は、クエリ情報のデータ列を入力した際に、検索すべき範囲の分割グラフが登録された仮想ページ番号を出力するように、LUTを書換えることで、特定部164を実現する。 For example, in the FPGA 150, the logic block includes an input / output block that controls the input / output of the FPGA 150 and a logic cell that executes various arithmetic processes. Such a logic cell is composed of a LUT (Look Up Table) and a register, and outputs data obtained by converting the input data based on the LUT (see, for example, Non-Patent Document 3). Therefore, the FPGA 150 specifies the virtual page number of the page in which the input query information and the corresponding divided graph are registered by rewriting the LUT of the logic cell. More specifically, the FPGA 150 rewrites the LUT so as to output the virtual page number in which the divided graph of the range to be searched is registered when the data string of the query information is input, so that the specific unit 164 To realize.

例えば、生成部162は、分割グラフごとに、その分割グラフを用いて近傍検索を行うクエリ情報(以下、「対応クエリ情報」と記載する。)の範囲を特定する。例えば、生成部162は、に含まれるノードと対応する検索対象情報の範囲を、対応クエリ情報の範囲としてもよい。また、生成部162は、分割グラフに含まれるノードからルートノードとなるノードを選択し、選択したノードと対応する検索対象情報との類似度が所定の範囲に収まる対応クエリ情報の範囲を特定してもよい。 For example, the generation unit 162 specifies the range of query information (hereinafter, referred to as “corresponding query information”) for performing a neighborhood search using the divided graph for each divided graph. For example, the generation unit 162 may set the range of the search target information corresponding to the node included in the node to the range of the corresponding query information. Further, the generation unit 162 selects a node to be the root node from the nodes included in the divided graph, and specifies the range of the corresponding query information in which the similarity between the selected node and the corresponding search target information falls within a predetermined range. You may.

そして、生成部162は、ある分割グラフの対応クエリ情報の範囲が入力された際に、その分割グラフが登録された記憶領域の仮想ページ番号を出力するLUTを生成する。すなわち、生成部162は、クエリ情報のデータを、そのクエリ情報と類似する検索対象情報と対応するノードを含む分割グラフが登録された記憶領域を示す仮想ページ番号へとデコードするためのLUTを生成する。そして、生成部162は、特定部164として動作するロジックセルに設定する。このような処理の結果、特定部164は、入力されたクエリ情報と対応する分割グラフの仮想ページ番号を特定することができる。 Then, when the range of the corresponding query information of a certain divided graph is input, the generation unit 162 generates a LUT that outputs the virtual page number of the storage area in which the divided graph is registered. That is, the generation unit 162 generates a LUT for decoding the query information data into a virtual page number indicating a storage area in which a divided graph including a search target information similar to the query information and a corresponding node is registered. do. Then, the generation unit 162 is set in the logic cell that operates as the specific unit 164. As a result of such processing, the identification unit 164 can specify the virtual page number of the divided graph corresponding to the input query information.

続いて、検索制御部165は、プロセッサコア111を検索処理を実行する検索部として動作させることで、クエリ情報と類似する検索対象情報を検索させる。例えば、検索制御部165は、特定部164により特定された仮想ページ番号をプロセッサコア111に提供し、仮想ページ番号が示す記憶領域に登録された分割グラフを読み出させる。そして、検索制御部165は、分割グラフを用いて、クエリ情報と類似する検索対象情報をプロセッサコア111に検索させる。 Subsequently, the search control unit 165 operates the processor core 111 as a search unit for executing the search process to search for search target information similar to the query information. For example, the search control unit 165 provides the processor core 111 with the virtual page number specified by the specific unit 164, and causes the processor core 111 to read the divided graph registered in the storage area indicated by the virtual page number. Then, the search control unit 165 causes the processor core 111 to search for search target information similar to the query information by using the divided graph.

例えば、検索制御部165は、特定部164により特定された仮想ページ番号をプロセッサコア111に提供する。このような場合、プロセッサコア111は、仮想ページ番号をメモリコントローラ130に提供する。すると、メモリコントローラ130は、仮想ページ番号と対応付けられた物理ページ番号をページテーブル141から特定し、特定した物理ページ番号が示す記憶領域に登録された分割グラフを読み出す。そして、メモリコントローラ130は、読み出した分割グラフをキャッシュメモリ112に登録する。 For example, the search control unit 165 provides the processor core 111 with the virtual page number specified by the specific unit 164. In such a case, the processor core 111 provides the virtual page number to the memory controller 130. Then, the memory controller 130 specifies the physical page number associated with the virtual page number from the page table 141, and reads out the divided graph registered in the storage area indicated by the specified physical page number. Then, the memory controller 130 registers the read division graph in the cache memory 112.

また、検索制御部165は、クエリ情報をプロセッサコア111に提供する。なお、検索制御部165は、クエリ情報をキャッシュメモリ112を介してプロセッサコア111に提供してもよい。このような場合、プロセッサコア111は、キャッシュメモリ112から分割グラフを読出し、読み出した分割グラフに含まれるノードと対応する検索対象情報のデータを検索対象データベース201から読み出す。そして、プロセッサコア111は、読み出したデータのうち、クエリ情報と類似するデータを特定し、特定したデータを、入出力装置120を介して、外部装置OAへと送信する。 Further, the search control unit 165 provides the query information to the processor core 111. The search control unit 165 may provide the query information to the processor core 111 via the cache memory 112. In such a case, the processor core 111 reads the division graph from the cache memory 112, and reads the data of the search target information corresponding to the node included in the read division graph from the search target database 201. Then, the processor core 111 identifies data similar to the query information among the read data, and transmits the identified data to the external device OA via the input / output device 120.

このように、演算装置100は、プログラムにより実行する処理を設定可能な第1演算装置であるFPGA150と、所定の命令セットを実行する第2演算装置であるプロセッサ110とを有する。そして、FPGA150は、受付部163および特定部164として動作し、プロセッサ110は、検索処理を実行する検索部として動作する。ここで、FPGA150は、検索対象情報の類似性を示すグラフを、近傍検索の範囲として推定されうる複数の分割グラフに分割し、分割グラフをそれぞれ個別のページに登録する。そして、FPGA150は、クエリ情報と対応する分割グラフを特定し、特定した分割グラフが登録されたページの情報を読み出す。 As described above, the arithmetic unit 100 includes an FPGA 150 which is a first arithmetic unit capable of setting a process to be executed by a program, and a processor 110 which is a second arithmetic unit which executes a predetermined instruction set. Then, the FPGA 150 operates as a reception unit 163 and a specific unit 164, and the processor 110 operates as a search unit that executes a search process. Here, the FPGA 150 divides the graph showing the similarity of the search target information into a plurality of divided graphs that can be estimated as the range of the neighborhood search, and registers the divided graphs on individual pages. Then, the FPGA 150 identifies the division graph corresponding to the query information, and reads out the information of the page in which the specified division graph is registered.

このような処理の結果、演算装置100は、全検索対象情報のうち、検索範囲とすべきであると推定される検索対象情報を示す分割グラフを用いて、近傍検索を実行することができる。この結果、演算装置100は、検索処理を効率化することができる。 As a result of such processing, the arithmetic unit 100 can execute the neighborhood search by using the divided graph showing the search target information estimated to be the search range among all the search target information. As a result, the arithmetic unit 100 can improve the efficiency of the search process.

〔2.演算装置が実行する処理の流れの一例〕
次に、図5を用いて、演算装置100が実行する演算処理の流れの一例について説明する。図5は、実施形態に係る判定処理の流れの一例を説明するフローチャートである。まず、演算装置100は、検索対象情報のグラフを取得する(ステップS101)。このような場合、演算装置100は、近傍検索の範囲を推定し、推定した領域ごとに分割した分割グラフを生成する(ステップS102)。そして、演算装置100は、主記憶装置200の各ページに分割グラフを登録する(ステップS103)。
[2. An example of the flow of processing executed by the arithmetic unit]
Next, an example of the flow of arithmetic processing executed by the arithmetic unit 100 will be described with reference to FIG. FIG. 5 is a flowchart illustrating an example of the flow of the determination process according to the embodiment. First, the arithmetic unit 100 acquires a graph of search target information (step S101). In such a case, the arithmetic unit 100 estimates the range of the neighborhood search and generates a divided graph divided for each estimated area (step S102). Then, the arithmetic unit 100 registers the divided graph on each page of the main storage device 200 (step S103).

また、演算装置100は、主記憶装置200の物理ページ番号と、演算処理に用いる仮想ページ番号とを対応付けたページテーブル141を生成する(ステップS104)。そして、演算装置100は、クエリ情報を受付けたか否かを判定し(ステップS105)、受付けていない場合は(ステップS105:No)、クエリ情報を受付けるまで待機する。また、演算装置100は、クエリ情報を受付けた場合は(ステップS105:Yes)、クエリ情報に対応する分割グラフを特定する(ステップS106)。例えば、演算装置100は、各分割グラフが登録された記憶領域を示す仮想ページ番号と、各分割グラフが示す検索対象情報を検索の対象とすべきクエリ情報の範囲とを対応付けたLUTを用いて、クエリ情報から、対応する仮想ページ番号を特定する。 Further, the arithmetic unit 100 generates a page table 141 in which the physical page number of the main storage device 200 and the virtual page number used for the arithmetic processing are associated with each other (step S104). Then, the arithmetic unit 100 determines whether or not the query information has been accepted (step S105), and if not (step S105: No), waits until the query information is accepted. Further, when the arithmetic unit 100 receives the query information (step S105: Yes), the arithmetic unit 100 specifies the divided graph corresponding to the query information (step S106). For example, the arithmetic unit 100 uses a LUT that associates a virtual page number indicating a storage area in which each divided graph is registered with a range of query information in which the search target information indicated by each divided graph is to be searched. Then, the corresponding virtual page number is specified from the query information.

また、演算装置100は、ページテーブルを用いて、対応する分割グラフを読み出す(ステップS107)。そして、演算装置100は、読み出した分割グラフをプロセッサのキャッシュメモリに登録し(ステップS108)、近傍検索処理を実行して(ステップS109)、処理を終了する。 Further, the arithmetic unit 100 reads out the corresponding divided graph using the page table (step S107). Then, the arithmetic unit 100 registers the read division graph in the cache memory of the processor (step S108), executes the neighborhood search process (step S109), and ends the process.

〔3.変形例〕
上記では、演算装置10による検索処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、演算装置10が実行する検索処理のバリエーションについて説明する。
[3. Modification example]
In the above, an example of the search process by the arithmetic unit 10 has been described. However, the embodiment is not limited to this. Hereinafter, variations of the search process executed by the arithmetic unit 10 will be described.

〔3−1.装置構成〕
上述した例では、FPGA150を含む演算装置100により実行される検索処理の一例について記載した。しかしながら、実施形態は、これに限定されるものではない。例えば、上述した検索処理は、FPGA150以外にも、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって実現されてもよい。また、上述した検索処理は、ASIC(Application Specific Integrated Circuit)等の集積回路により実現されてもよい。
[3-1. Device configuration〕
In the above-mentioned example, an example of the search process executed by the arithmetic unit 100 including the FPGA 150 has been described. However, the embodiment is not limited to this. For example, the above-mentioned search process may be realized by a processor such as a CPU (Central Processing Unit) or an MPU (Micro Processing Unit) in addition to the FPGA 150. Further, the above-mentioned search process may be realized by an integrated circuit such as an ASIC (Application Specific Integrated Circuit).

すなわち、上述した検索処理は、プログラム可能な論理回路を有さない演算処理装置であって、ページング方式を用いる各種の演算処理装置により実現されてもよい。このような演算処理装置は、例えば、検索対象情報の類似性を示すグラフを、検索対象として推定されうる範囲ごとに分割したグラフを生成し、生成したグラフをそれぞれ個別のページに登録する。このような処理の結果、演算処理装置は、検索対象とする範囲を適切に限定するとともに、検索対象とする範囲の特定を高速化することができる。 That is, the above-mentioned search process is an arithmetic processing unit that does not have a programmable logic circuit, and may be realized by various arithmetic processing units that use a paging method. Such an arithmetic processing unit generates, for example, a graph showing the similarity of search target information by dividing it into a range that can be estimated as a search target, and registers the generated graphs on individual pages. As a result of such processing, the arithmetic processing unit can appropriately limit the range to be searched and speed up the identification of the range to be searched.

また、演算装置100は、分割部161を有さず、グラフの分割を行わずともよい。例えば、演算装置100は、グラフラプラシアン等を用いて分割が行われた分割グラフを外部装置OAから受付けた場合、受付けた分割グラフを主記憶装置200の各ページに登録し、このような分割グラフを用いた検索を行ってもよい。 Further, the arithmetic unit 100 does not have the division unit 161 and may not divide the graph. For example, when the arithmetic unit 100 receives a divided graph that has been divided using a graph Laplacian or the like from the external device OA, the arithmetic unit 100 registers the received divided graph in each page of the main storage device 200, and such a divided graph. You may perform a search using.

〔3−2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
[3-2. others〕
Further, among the processes described in the above-described embodiment, all or a part of the processes described as being automatically performed can be manually performed, or the processes described as being manually performed can be performed. All or part of it can be done automatically by a known method. In addition, the processing procedure, specific name, and information including various data and parameters shown in the above text and drawings can be arbitrarily changed unless otherwise specified. For example, the various information shown in each figure is not limited to the illustrated information.

また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。 Further, each component of each of the illustrated devices is a functional concept, and does not necessarily have to be physically configured as shown in the figure. That is, the specific form of distribution / integration of each device is not limited to the one shown in the figure, and all or part of the device is functionally or physically dispersed / physically distributed in any unit according to various loads and usage conditions. Can be integrated and configured.

また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。 In addition, the above-described embodiments can be appropriately combined as long as the processing contents do not contradict each other.

〔4.効果〕
上述したように、演算装置100は、クエリ情報を受付けると、主記憶装置200に設定された複数のページであって、検索対象情報のグラフを近傍検索の範囲として推定された領域ごとに分割した分割グラフが登録されたページのうち、クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する。そして、演算装置100は、特定されたページ情報が示すページに登録された分割グラフを用いて、クエリ情報と類似する情報を検索する。このため、演算装置100は、検索処理における効率を改善することができる。
[4. effect〕
As described above, when the arithmetic unit 100 receives the query information, the arithmetic unit 100 divides the graph of the search target information into a plurality of pages set in the main storage device 200 for each area estimated as the range of the neighborhood search. Among the pages in which the split graph is registered, the page information indicating the page in which the split graph corresponding to the query information is registered is specified. Then, the arithmetic unit 100 searches for information similar to the query information by using the divided graph registered on the page indicated by the specified page information. Therefore, the arithmetic unit 100 can improve the efficiency in the search process.

また、演算装置100は、グラフラプラシアンに基づいて分割された分割グラフが登録されたページのうち、クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する。このため、演算装置100は、クエリ情報との比較対象として適切な検索対象情報の範囲を示す分割グラフを用いて、検索処理を実行することができる。 Further, the arithmetic unit 100 specifies the page information indicating the page in which the division graph corresponding to the query information is registered, among the pages in which the division graph divided based on the graph Laplacian is registered. Therefore, the arithmetic unit 100 can execute the search process by using the divided graph showing the range of the search target information suitable as the comparison target with the query information.

また、演算装置100は、プログラムにより実行する処理を設定可能な第1演算装置であるFPGA150と、所定の命令セットを実行する第2演算装置であるプロセッサ110とを有し、第1演算装置は、受付部163と、特定部164として動作し、第2演算装置は、検索処理を実行する検索部として動作する。このため、演算装置100は、検索処理における効率を改善することができる。 Further, the arithmetic unit 100 includes an FPGA 150, which is a first arithmetic unit capable of setting a process to be executed by a program, and a processor 110, which is a second arithmetic unit that executes a predetermined instruction set. , The reception unit 163 and the specific unit 164, and the second arithmetic unit operates as a search unit that executes a search process. Therefore, the arithmetic unit 100 can improve the efficiency in the search process.

また、演算装置100は、グラフラプラシアンに基づいて、検索対象情報のグラフを複数の分割グラフに分割する。また、演算装置100は、分割された各分割グラフが登録された主記憶装置200の物理ページ番号と、検索処理に用いる仮想ページ番号とを対応付けたページテーブル141を生成する。そして、演算装置100は、クエリ情報と対応する分割グラフが登録されたページの仮想ページ番号を特定し、ページテーブル141を用いて、特定された仮想ページ番号と対応付けられた物理ページ番号を特定し、特定した物理ページ番号が示すページから読み出した分割グラフを用いて、クエリ情報と類似する情報を検索する。このため、演算装置100は、検索処理における効率を改善することができる。 Further, the arithmetic unit 100 divides the graph of the search target information into a plurality of divided graphs based on the graph Laplacian. Further, the arithmetic unit 100 generates a page table 141 in which the physical page number of the main storage device 200 in which each divided graph is registered and the virtual page number used for the search process are associated with each other. Then, the arithmetic unit 100 specifies the virtual page number of the page in which the division graph corresponding to the query information is registered, and uses the page table 141 to specify the physical page number associated with the specified virtual page number. Then, information similar to the query information is searched for using the divided graph read from the page indicated by the specified physical page number. Therefore, the arithmetic unit 100 can improve the efficiency in the search process.

以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。 Although some of the embodiments of the present application have been described in detail with reference to the drawings, these are examples, and various modifications are made based on the knowledge of those skilled in the art, including the embodiments described in the disclosure column of the invention. It is possible to practice the present invention in other improved forms.

また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。 Further, the above-mentioned "section, module, unit" can be read as "means" or "circuit". For example, the generation unit can be read as a generation means or a generation circuit.

100 演算装置
110 プロセッサ
111 プロセッサコア
112 キャッシュメモリ
120 入出力装置
130 メモリコントローラ
140 記憶部
141 ページテーブル
150 FPGA
161 分割部
162 生成部
163 受付部
164 特定部
165 検索制御部
200 主記憶装置
201 検索対象データベース
G1〜G4 分割グラフ
OA 外部装置
100 Arithmetic logic unit 110 Processor 111 Processor core 112 Cache memory 120 Input / output device 130 Memory controller 140 Storage unit 141 Page table 150 FPGA
161 Division unit 162 Generation unit 163 Reception unit 164 Specific unit 165 Search control unit 200 Main storage device 201 Search target database G1 to G4 Divided graph OA External device

Claims (5)

クエリ情報を受付ける受付部と、
主記憶装置に設定された複数のページであって、検索対象情報のグラフを近傍検索の範囲として推定された領域ごとに分割した分割グラフが登録されたページのうち、前記クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する特定部と、
前記特定部により特定されたページ情報が示すページに登録された前記分割グラフを用いて、前記クエリ情報と類似する情報を検索する検索部と
を有することを特徴とする演算装置。
The reception department that accepts query information and
Of the pages in which the divided graphs are registered, which are a plurality of pages set in the main memory and the graph of the search target information is divided for each area estimated as the range of the neighborhood search, the divided pages corresponding to the query information. A specific part that identifies the page information indicating the page where the graph is registered,
An arithmetic unit including a search unit that searches for information similar to the query information by using the divided graph registered on the page indicated by the page information specified by the specific unit.
前記特定部は、グラフラプラシアンに基づいて分割された分割グラフが登録されたページのうち、前記クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する
ことを特徴とする請求項1に記載の演算装置。
The specific unit is characterized in that, among the pages in which the divided graph divided based on the graph Laplacian is registered, the page information indicating the page in which the divided graph corresponding to the query information is registered is specified. The arithmetic unit according to 1.
前記演算装置は、プログラムにより実行する処理を設定可能な第1演算装置と、所定の命令セットを実行する第2演算装置とを有し、
前記第1演算装置は、前記受付部と、前記特定部として動作し、
前記第2演算装置は、前記検索部として動作する
ことを特徴とする請求項1または2に記載の演算装置。
The arithmetic unit includes a first arithmetic unit that can set a process to be executed by a program and a second arithmetic unit that executes a predetermined instruction set.
The first arithmetic unit operates as the reception unit and the specific unit, and operates as the reception unit.
The arithmetic unit according to claim 1 or 2, wherein the second arithmetic unit operates as the search unit.
グラフラプラシアンに基づいて、前記検索対象情報のグラフを複数の分割グラフに分割する分割部と、
前記分割部により分割された各分割グラフが登録された前記主記憶装置の物理ページ番号と、前記検索部が検索処理に用いる仮想ページ番号とを対応付けたページテーブルを生成する生成部と
を有し、
前記特定部は、前記ページ情報として、前記クエリ情報と対応する分割グラフが登録されたページの仮想ページ番号を特定し、
前記検索部は、前記ページテーブルを用いて、前記特定部により特定された仮想ページ番号と対応付けられた物理ページ番号を特定し、特定した物理ページ番号が示すページから読み出した前記分割グラフを用いて、前記クエリ情報と類似する情報を検索する
ことを特徴とする請求項1〜3のうちいずれか1つに記載の演算装置。
A division unit that divides the graph of the search target information into a plurality of division graphs based on the graph Laplacian, and
It has a generation unit that generates a page table in which the physical page number of the main storage device in which each division graph divided by the division unit is registered and the virtual page number used by the search unit for search processing are associated with each other. death,
The specific unit specifies the virtual page number of the page in which the division graph corresponding to the query information is registered as the page information.
The search unit uses the page table to specify the physical page number associated with the virtual page number specified by the specific unit, and uses the divided graph read from the page indicated by the specified physical page number. The arithmetic unit according to any one of claims 1 to 3, further comprising searching for information similar to the query information.
演算装置が実行する検索方法であって、
クエリ情報を受付ける受付工程と、
主記憶装置に設定された複数のページであって、検索対象情報のグラフを近傍検索の範囲として推定された領域ごとに分割した分割グラフが登録されたページのうち、前記クエリ情報と対応する分割グラフが登録されたページを示すページ情報を特定する特定工程と、
前記特定工程により特定されたページ情報が示すページに登録された前記分割グラフを用いて、前記クエリ情報と類似する情報を検索する検索工程と
を含むことを特徴とする検索方法。
It is a search method executed by the arithmetic unit.
The reception process for accepting query information and
Of the pages in which the divided graphs are registered, which are a plurality of pages set in the main memory and the graph of the search target information is divided for each area estimated as the range of the neighborhood search, the divided pages corresponding to the query information. A specific process to identify page information indicating the page where the graph is registered, and
A search method comprising a search step of searching for information similar to the query information by using the divided graph registered on the page indicated by the page information specified by the specific step.
JP2018096450A 2018-05-18 2018-05-18 Arithmetic logic unit and search method Active JP6956043B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018096450A JP6956043B2 (en) 2018-05-18 2018-05-18 Arithmetic logic unit and search method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018096450A JP6956043B2 (en) 2018-05-18 2018-05-18 Arithmetic logic unit and search method

Publications (2)

Publication Number Publication Date
JP2019200724A JP2019200724A (en) 2019-11-21
JP6956043B2 true JP6956043B2 (en) 2021-10-27

Family

ID=68612296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018096450A Active JP6956043B2 (en) 2018-05-18 2018-05-18 Arithmetic logic unit and search method

Country Status (1)

Country Link
JP (1) JP6956043B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7203137B2 (en) * 2021-03-18 2023-01-12 ヤフー株式会社 Information processing device, information processing method, and information processing program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5407169B2 (en) * 2008-04-11 2014-02-05 富士通株式会社 Clustering program, search program, clustering method, search method, clustering device, and search device
CN102693246B (en) * 2011-03-22 2015-03-11 日电(中国)有限公司 Method and system for obtaining information from dataset
JP6523799B2 (en) * 2015-06-05 2019-06-05 株式会社日立システムズ Information analysis system, information analysis method

Also Published As

Publication number Publication date
JP2019200724A (en) 2019-11-21

Similar Documents

Publication Publication Date Title
US11157592B2 (en) Hardware implementation of convolutional layer of deep neural network
JP5763783B2 (en) Method and apparatus for compiling regular expressions
Moussalli et al. Fast and flexible conversion of geohash codes to and from latitude/longitude coordinates
JP2010055608A (en) Method for caching internet search result, storage medium and system
US8631378B2 (en) Implementing enhanced clock tree distributions to decouple across N-level hierarchical entities
JP6956043B2 (en) Arithmetic logic unit and search method
CN114416310A (en) Multiprocessor load balancing method, computing device and storage medium
US10049164B2 (en) Multidimensional-range search apparatus and multidimensional-range search method
JP6977565B2 (en) Search result output program, search result output device and search result output method
JP6705764B2 (en) Generation device, generation method, and generation program
WO2020133391A1 (en) Systems and methods for efficiently scanning a database using hardware acceleration
WO2015172718A1 (en) Method and apparatus for multiple accesses in memory and storage system
JP2021022370A (en) Method executed by computing device, apparatus, device and computer-readable storage medium
US7363397B2 (en) System and method for DMA controller with multi-dimensional line-walking functionality
JP2000330835A (en) Storage device and data storage structure
JP7278716B2 (en) Adjustment device, adjustment method and adjustment program
JP6305644B2 (en) Architecture generation apparatus and architecture generation program
US20230229592A1 (en) Processing work items in processing logic
US20240037037A1 (en) Software Assisted Hardware Offloading Cache Using FPGA
US20230280980A1 (en) Find first function
WO2014061305A1 (en) Entry insertion device, method, and program
Trinh et al. A novel algorithmic Data-Collision SDRAM-based TCAM architecture on FPGA
US20210365370A1 (en) Memory for storing data blocks
JP6266183B2 (en) Circuit design support device and circuit design support program
JP2019204433A (en) Calculation system and calculation method

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20191101

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20191108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210827

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: 20210914

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211004

R150 Certificate of patent or registration of utility model

Ref document number: 6956043

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350