(57)【要約】  【課題】  ノイマン型コンピュータのＣＰＵは逐次処理であるので組合せ爆発を引き起こす組合せ比較演算は演算量が莫大になり、高性能のプロセッサを利用しても高速化が困難である。【解決手段】  １行、１列、それぞれｎ個、ｍ個、合計ｎ個＋ｍ個のデータを記憶できる２組のメモリ群と、その２組のメモリ群から網羅状に布線されたデータ線のクロスポイントにｎ×ｍ個の演算器を設け前記１行、１列２組のメモリから前記網羅状に布線されたデータ線に、前記１行ｎ、１列ｍ、それぞれのデータを並列に送出することにより、前記ｎ×ｍ個の演算器は前記送出されたデータを行列網羅組合せ的に読み込み、行列網羅組合せ的に並列比較演算し、その比較演算結果を出力する。【選択図】  図２
2018097317.tif 000002
【特許請求の範囲】
【請求項１】
１行、１列、それぞれｎ個、ｍ個、合計ｎ個＋ｍ個のデータを記憶できる２組のメモリ群と、その２組のメモリ群から網羅状に布線されたデータ線のクロスポイントにｎ×ｍ個の演算器を設け
前記１行、１列２組のメモリから前記網羅状に布線されたデータ線に、前記１行ｎ、１列ｍ、それぞれのデータを並列に送出することにより、前記ｎ×ｍ個の演算器は前記送出されたデータを行列網羅組合せ的に読み込み、行列網羅組合せ的に並列比較演算し、その比較演算結果を出力する手段を具備することを特徴とするデータ比較演算プロセッサ。
【請求項２】
前記網状に布線されたデータ線は多ビットデータ線で、前記演算器はＡＬＵ（Arithmetic and Logic Unit）で行列比較演算を並列に実行することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項３】
前記網状に布線されたデータ線は１ビットデータ線で、前記演算器は比較１ｂｉｔ演算器で行列比較演算を並列に実行することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項４】
前記比較１ｂｉｔ演算器は、前記１行ｎ個のデータと１列ｍ個のデータの
ア）一致もしくは類似を比較演算する
イ）大小、範囲を比較演算する
ウ）上記ア）、イ）のいずれかもしくは双方の比較演算結果に基づき共通であることを比較演算する
上記ア）、イ）、ウ）のいずれかもしくはその組合せの比較演算であることを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項５】
前記１行、１列２組のメモリ群は１バッチｎ×ｍの網羅組合せ演算に必要なデータのＫ倍の行列範囲の網羅組合せデータを記憶するメモリを具備し、前記ｎ×ｍ個の演算器は（Ｋ×ｎ）×（Ｋ×ｍ）の網羅組合せ演算を連続して実行する機能を具備することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項６】
前記ｎ個、ｍ個、のデータを外部から取り込み記憶する際、データの行列変換を行い前記１行、１列２組のメモリに記憶することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項７】
請求項１記載のアルゴリズムをＦＰＧＡに実装したことを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項８】
前記１行、１列、に加え１ページ、それぞれｎ個、ｍ個、o個、合計ｎ個＋ｍ個＋o個のデータを記憶できる３組のメモリ群と、その３組のメモリ群から網羅状に布線されたデータ線のクロスポイントにｎ×ｍ×o個の演算器を設けたことを特徴とする、請求項１記載のデータ比較演算プロセッサ。
【請求項９】
請求項１記載のデータ比較演算プロセッサを含んだ装置。
【請求項１０】
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列異なるデータを用いて前記並列比較演算を行い
ア）ｎ×ｍの網羅的な比較演算を行う
イ）１行、１列一方のデータを比較演算条件データとする
以上いずれかの比較演算を行うことを特徴とするデータ並列比較演算方法。
【請求項１１】
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列同一データを用いて前記並列比較演算を行い
ア）ｎ×ｎの網羅的な比較演算を行う
イ）１行、１列一方のデータを比較演算条件データとする
ウ）クラス分類演算を行う
以上いずれかの比較演算を行うことを特徴とするデータ並列比較演算方法。
【請求項１２】
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列のいずれか一方を検索インデックスデータとして、他の一方をマルチアクセス検索クエリデータとして、比較演算しマルチアクセス連想検索を実行することを特徴とするデータ並列比較演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，データ比較演算プロセッサ及びそれを用いた演算方法に関するものである。
【背景技術】
【０００２】
ノイマン型コンピュータでは、演算処理内容を記述したプログラムが主記憶部に記憶され、中央制御装置（ＣＰＵ）によって逐次処理方式で演算処理が実行される。今日の一般的なコンピュータシステムのほとんどが、このノイマン型である。【０００３】
ノイマン型コンピュータのＣＰＵは逐次処理であるので、例えばビッグデータの処理等、組合せ爆発を引き起こす可能性のある網羅的な比較演算や組合せ比較演算に対応するには構造上限界がある。高速化のため高性能のプロセッサや並列処理により高速化を図ることもされているが、高価である上に膨大な電力を消費するとことがある。【０００４】
このため、ビッグデータのデータマイニング等の組合せ的な検索演算に対応するためには、組合せ爆発が生じないような様々な工夫をソフトウエアアルゴリズム的に図ることが行われている。しかしながらこのようなソフトウエアの使用はスキルを要し、専門家以外利用することは困難である。【０００５】
このため、専らハードウエアにより、より簡易・安価な構成で、低電力で動作し、網羅的な比較演算を実行することができる演算器が求められているということがあった。【０００６】
本件特許の技術分野と関連する先行技術文献としては以下のものがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００３−５２４８３１号公報
【特許文献２】特願平４−１８５３０号公報
【特許文献３】特許第５９８１６６６号公報  特表２００３−５２４８３１（Ｐ２００３−５２４８３１Ａ）には、組み合わせ空間を探索するためのシステムおよび方法  は組合せ爆発を引き起こさないように組合せ空間を隅々まで探索する方法が開示されている。この発明は、ソフトウエアにより網羅的データ比較を実現するものである。
【０００８】
特願平４−１８５３０号は、並列データ処理装置及びマイクロプロセッサを開示するものであり、行列にデータ線を配し、その交点にデータ処理要素（マイクロプロセッサなど）を配列する構成であるが、データ処理要素間のデータ転送の高速性を図るものである。しかし、この構成は、データ処理要素側が行列データ線を選択しなければならない方式であるので、網羅的データ比較の高速化を図ると言う課題を解決することは出来ない。【０００９】
本願発明者による発明である特許第５９８１６６号は、情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法を開示するものである。しかしながら、網羅的な比較演算は出来ない。【００１０】
本願発明は、網羅組合せ演算の中でも最もニーズの多い比較演算に焦点をあて、行列比較演算にＳＩＭＤ型１ｂｉｔ演算器が利用できること、データの先読み効果、連想メモリ（ＣＡＭ）の概念の拡大など、従来型コンピューティングの延長線上では発想しえない新しいコンピューティングの概念を取り入れた新タイプのコンピューティング技術である。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以上述べたように、逐次処理型プロセッサであるＣＰＵやＧＰＵによる、網羅組合せ的な比較演算は計算コストが高く、最新のプロセッサ技術でも多大な時間が必要になる。【００１２】
インデックスなどのメタデータは、インデックスの使いすぎやメタデータの更新など様々な課題を抱えているばかりでなく、データマイニングなど繰返し最適解を見出すアドホック型の検索や探索に大きな障害となっている。したがって、ＳＮＳやＷＥＢサイト、大型クラウドサーバの検索エンジンの構築は超大手企業以外実現困難である。【００１３】
ビッグデータ社会でデータ量が大幅に増大しても旧態依然のコンピューティングでは効率的なＩｏＴ社会やＡＩ社会の実現は困難である。【００１４】
本発明では、現在のコンピュータアーキテクチャでは困難な網羅組合せ的な比較演算を超高速しかも低電力（電力性能を大幅に向上）にする１チッププロセッサの実現により、ＣＰＵやＧＰＵの負担と利用者の負担の双方を解決し、一般利用者がこれまで手に負えないような情報処理を可能にすることを目的とするものである。
【課題を解決するための手段】
【００１５】
請求項１に記載の発明は、
１行、１列、それぞれｎ個、ｍ個、合計ｎ個＋ｍ個のデータを記憶できる２組のメモリ群と、その２組のメモリ群から網羅状に布線されたデータ線のクロスポイントにｎ×ｍ個の演算器を設け
前記１行、１列２組のメモリから前記網羅状に布線されたデータ線に、前記１行ｎ、１列ｍ、それぞれのデータを並列に送出することにより、前記ｎ×ｍ個の演算器は前記送出されたデータを行列網羅組合せ的に読み込み、行列網羅組合せ的に並列比較演算し、その比較演算結果を出力する手段を具備することを特徴とする。【００１６】
請求項２では
前記網状に布線されたデータ線は多ビットデータ線で、前記演算器はＡＬＵ（Arithmetic and Logic Unit）で行列比較演算を並列に実行することを特徴とする。【００１７】
請求項３では
前記網状に布線されたデータ線は１ビットデータ線で、前記演算器は比較１ｂｉｔ演算器で行列比較演算を並列に実行することを特徴とする。【００１８】
請求項４では
前記比較１ｂｉｔ演算器は、前記１行ｎ個のデータと１列ｍ個のデータの
ア）一致もしくは類似を比較演算する
イ）大小、範囲を比較演算する
ウ）上記ア）、イ）のいずれかもしくは双方の比較演算結果に基づき共通であることを比較演算する
上記ア）、イ）、ウ）のいずれかもしくはその組合せの比較演算であることを特徴とする。【００１９】
請求項５では
前記１行、１列２組のメモリ群は１バッチｎ×ｍの網羅組合せ演算に必要なデータのＫ倍の行列範囲の網羅組合せデータを記憶するメモリを具備し、前記ｎ×ｍ個の演算器は（Ｋ×ｎ）×（Ｋ×ｍ）の網羅組合せ演算を連続して実行する機能を具備することを特徴とする。【００２０】
請求項６では
前記ｎ個、ｍ個、のデータを外部から取り込み記憶する際、データの行列変換を行い前記１行、１列２組のメモリに記憶することを特徴とする。【００２１】
請求項７では
請求項１記載のアルゴリズムをＦＰＧＡに実装したことを特徴とする。【００２２】
請求項８では
前記１行、１列、に加え１ページ、それぞれｎ個、ｍ個、o個、合計ｎ個＋ｍ個＋o個のデータを記憶できる３組のメモリ群と、その３組のメモリ群から網羅状に布線されたデータ線のクロスポイントにｎ×ｍ×o個の演算器を設けたことを特徴とする。【００２３】
請求項９では
請求項１記載のデータ比較演算プロセッサを含んだ装置。【００２４】
請求項１０では
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列異なるデータを用いて前記並列比較演算を行い
ア）ｎ×ｍの網羅的な比較演算を行う
イ）１行、１列一方のデータを比較演算条件データとする
以上いずれかの比較演算を行うことを特徴とする。【００２５】
請求項１１では
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列同一データを用いて前記並列比較演算を行い
ア）ｎ×ｎの網羅的な比較演算を行う
イ）１行、１列一方のデータを比較演算条件データとする
ウ）クラス分類演算を行う
以上いずれかの比較演算を行うことを特徴とする。【００２６】
請求項１２では
請求項１記載のデータ比較演算プロセッサを用いた演算であって、前記１行、１列のいずれか一方を検索インデックスデータとして、他の一方をマルチアクセス検索クエリデータとして、比較演算しマルチアクセス連想検索を実行することを特徴とする。【００２７】
なお、この発明の上記した以外の特徴は、以下に説明する発明の実施態様の項に記載されている。
【図面の簡単な説明】
【００２８】
【図１】図１は、データの検索や探索の概念図である。
【００２９】
【図２】図２は、データ比較演算プロセッサの構成図である。
【００３０】
【図３】図３は、データの比較の概念図である。
【００３１】
【図４】図４は、データ比較演算プロセッサの具体例である（実施例１）。
【００３２】
【図５】図５は、行列データ変換回路の一例である（実施例２）。
【００３３】
【図６】図６は、データ比較演算プロセッサの比較演算器の一例である（実施例３）。
【００３４】
【図７】図７は、１億×１億データの行列比較演算の実施例の一例である（実施例４）。
【発明を実施するための形態】
【００３５】
以下、この発明の裁量の実施形態を図面を参照して説明する。
１．本発明について
本発明は、発明者の、以下のような知見に基づいてなされたものである。
（１）現時点で最速のＣＰＵ
まず、現時点で最新最速のＣＰＵについて記載する。
【００３６】
汎用ＰＣに搭載されている最高速のＣＰＵ（汎用高速ＣＰＵ）はインテル社のＣｏｒｅ ｉ７  Ｂｒｏａｄｗｅｌｌ  １０コア、ＴＤＰ（最大電力）は１４０Wである。３．５ＧＨｚ（ターボ）で５６０ＧＦＬＯＰＳの浮動小数点演算を実行、すなわち１秒間に最大５６０Ｇ回の演算能力をもつ。しかし、これでは演算速度が低すぎる。
【００３７】
一方、スパコンなどの特別なコンピュータ向けに開発された最高速のＣＰＵ（専用高速ＣＰＵ）は同じくインテル社の、Ｘｅｏｎ Ｐｈｉ ７２９０  は７２コア、ＴＤＰ（最大電力）は２６０Ｗ。１．５ＧＨｚ（ベース）で３．４５６ＴＦＬＯＰＳ、１．７ＧＨｚ（ターボ）で３．９１７ＴＦＬＯＰＳの浮動小数点演算、すなわち１秒間に最大約４Ｔ回の演算能力を持つ。
【００３８】
しかし、このような専用高速ＣＰＵは性能差で汎用高速ＣＰＵと約７倍の性能があるが電力消費が大きく、搭載するメモリを含めＣＰＵの周辺回路は複雑になり冷却装置も大がかりなものとなるので容易に利用することはできない。
（２）最速のＧＰＵの性能について
現在最速のＧＰＵとしては、ＮＶＩＤＥＡ社のＧｅＦｏｒｃｅ ＧＴＸ ＴＩＴＡＮ  Ｚがある。このＧＰＵは、コア数５７６０個  ＴＤＰ３７５Ｗ  ７０５Ｍｈｚ  単精度８．１２ＴＦＬＯＰ、すなわち１秒間に最大約８Ｔ回の演算能力を持つ。
【００３９】
スパコン京は、約１２ＭＷの電力を消費し、１秒間に１京回の浮動小数点演算を実行する、すなわち１秒間に１京（１０１６ ）、１０Ｐ回の演算が可能である。
【００４０】
しかし、これらＧＰＵも、消費電力が非常に大きいということがある。
（３）本発明を評価するためのベンチマーク
コンピュータの性能は、ＣＰＵやＧＰＵの演算性能だけで決まるわけではなく、ＣＰＵやＧＰＵの演算に必要なデータを外部メモリからどれだけ高速にＣＰＵやＧＰＵに供給できるか、ＣＰＵやＧＰＵ内部に取り込まれたデータがキャッシュされキャッシュメモリの利用率がどの程度になるか、ＣＰＵやＧＰＵ内部のマルチコアがどれだけ遊びなく効率的に処理できるかなど、利用上のプログラムやＯＳ、コンパイラなどの様々な条件が加味されるため、使い方によってはＣＰＵやＧＰＵの理論性能の数％以下となっていることもしばしばである。
【００４１】
このようにコンピュータの演算性能はＣＰＵやＧＰＵ単独の性能で決まるわけではないもののコンピュータの性能はＣＰＵやＧＰＵの演算性能が鍵を握っている。
【００４２】
従って新コンピューティング技術の本発明と、従来型コンピューティングの性能を比較する上ではＣＰＵやＧＰＵの演算能力が唯一のベンチマークの指標である。
【００４３】
ただし、ＣＰＵは今後も進化し性能アップが見込まれる、本発明のアーキテクチャによる性能も現時点での半導体技術をもとにするもので、半導体製造技術の進化により本技術による半導体技術も比例して性能アップすることは言うまでもない。
（４）組み合わせ問題について
次に本願発明が対象とする組合せ問題について説明する。
【００４４】
コンピュータが直面する組み合わせ問題、組み合わせ爆発は大小様々存在する。ＮＰ困難問題として代表される巡回セールスマン問題などの順列組合せによる最適化問題は階乗的な爆発演算（大爆発）が発生するので、量子コンピュータなど新しいタイプのコンピュータの誕生が待ち望まれている。また、順列・組合せのような階乗的な演算（大爆発）にはならないものの複数データ同士の比較などの組合せ演算のニーズは枚挙にいとわない。
【００４５】
２組のデータの組合せの比較演算は、データ数とデータ数の積、最大の場合データ数の２乗となる、従ってビッグデータになると小爆発が起こり逐次処理型プロセッサの負担は極めて大きく、待ち時間など利用者に多大な負担を強いる結果となっている。
【００４６】
この発明では順列・組合せなどの階乗的な組合せ（大爆発）と、データとデータの演算や比較などの組合せ（小爆発）の演算を分離するために、網羅組合せと呼ぶものとしその比較演算を対象とする。
（５）データの検索や探索の概念
図１は、データの検索や探索の概念を示すものである。
【００４７】
図１のＡ例は、データＸ０〜Ｘｎ‐1のｎ個のデータを対象に、あるデータを検出する時の概念図である。
【００４８】
本例は特定のデータを見つけ出すためのキーや検索条件をクエリとして与えることによりデータの中から特定（目的の探し出したい）のデータＸｉを見つけ出す際の概念を示している。
【００４９】
一般的な検索や、全文検索、データベース検索などは皆このタイプの検索、探索方法である。
【００５０】
データ量が多くなり、検索条件が複雑化すると、検索コストが多大になるので、このように比較的単純な検索でも、インデックスなどを事前に準備し検索を行うのが一般的である。
【００５１】
インデックスは、検索にとって必要不可欠な利用技術であるが、様々な副作用（一例をあげればデータのメンテナンスなど）があるのでインデックスを不要にして高速化できることが理想であるもののノイマン型コンピュータの場合システムが肥大化する。
【００５２】
以上のＡ例は何を知りたいかが明確である場合の検索方法である。
【００５３】
大量のデータの中から特定のデータを並列演算で検出する連想メモリ（ＣＡＭ）は正にこのような検索タイプのデバイスであるが、検索条件が単一の条件か３値ＴＣＡＭ程度の検索条件となりフレキシブルな検索ができない、マルチマッチ処理が苦手、検索突入電流が大きく使いづらいなどの理由でインターネット通信ルータのＩＰ検索などユニークデータの検索に応用される程度である。
【００５４】
またビックデータの利用上の問題点の一つとして、未知のデータに対してどのような質問が最適な質問かそれが分からない、従って多くの場合、繰り返し、繰り返し網羅組合せ的な検索をせざるを得ない場合も少なくない。
【００５５】
またこのＡ例で示されるクエリは人工知能の分野では教師信号に相当するものである。
【００５６】
先に述べたように何を質問すべきかそれすら分からない未知のデータの場合など、逐次クエリを与えることなく（教師なし）必要な情報の検索や、クラス分けを自動的に実現する方法が求められている、この考えに関し後述する。
（６）データマイニングなどのデータ分析で利用される検索や探索
以降、データマイニングなどのデータ分析で利用される検索や探索について説明をする。
【００５７】
Ｂ例は、Ｘのｎ個データおよびＹのｍ個データ同士の中から、類似（一致含む）するものや共通するデータを網羅組合せ的に見つけ出す概念を示したものである。
【００５８】
一例をあげれば、Ｘは男性の嗜好品類（幾つかの好きな食べ物のデータなど）のデータ群で、Ｙは女性の嗜好品類（幾つかの好きな食べ物のデータなど）のデータ群でそれぞれの類似性や共通性を網羅組合せ的に探索する場合などである。
【００５９】
お互いが未知のデータであればデータ同士、（ｎ-１）×（ｍ-１）回の比較演算を繰り返す必要がある、通常ｎ≫１、ｍ≫１なので、以降ｎ×ｍ回の比較演算と表現する。
【００６０】
ｎやｍが大きいと組合せ爆発が起こる。
【００６１】
Ｃ例は、Ｘのｎ個のデータの中から、類似（一致含む）するものや共通するデータを見つけ出す様子を示したものである。
【００６２】
本図の場合、Ｘ０−Ｘ０、Ｘ１−Ｘ１・・・・Ｘn-1-Xn-1はそれぞれ同一データであるので共通を示す記号は表記していない、同一データ以外で類似するものや共通するものを見つけ出す様子を示したものである。
【００６３】
未知のデータであれば同じデータ同士、ｎ×ｎ回の比較演算を網羅組合せ的に繰り返す必要がある、詳細は後述する。
【００６４】
Ｄ例は、ｎ個のデータを、類似や共通するデータを分類する場合のイメージである、類似や共通するクラスがＮ個あれば、ｎ×Ｎ回の網羅組合せ比較演算を実行する必要がある。
【００６５】
データ分析などの分野で特に求められることは、未知のデータの場合、どのようなデータが含まれているか分からないので、教師データ（クエリ）を与えることや学習などの前処理をすることなく、高速で自動的にクラス分けする手段が求められている。
【００６６】
以上Ｂ例、Ｃ例、Ｄ例のような検索が連想メモリ（ＣＡＭ）のように１デバイスで、しかもより高機能に実現出来れば情報処理は大きく進化する。
【００６７】
（７）網羅組合せ的な比較演算の応用例
以下に網羅組合せ的な比較演算の応用例を挙げる。
【００６８】
遺伝子情報（ゲノム）の解明のために多大な人力と高性能のコンピュータをフルに活用し様々な知見を生み出してきたのは網羅的な検索の代表例である。
【００６９】
これまでに解明された遺伝子情報はごく一部のものであり、個別の遺伝子情報の解析による発がん性の予測などを一例とする網羅的な解析はこれから益々必要とされる。
【００７０】
また創薬を効率的に実現するために行われるＩＴ創薬の研究は、タンパク質の立体構造解析などの分野で網羅的なパターンマッチが必要とされスパコンや高性能ＣＰＵやＧＰＵが利用されている。
【００７１】
我々に身近な天気予報は、太陽の黒点、公転軌道や太陽との距離、自転による地軸の変動、その他地球自体の変動要因など、これらの多種多様な要因による大気の状況や海洋の状況で天候や気温、気圧、風向きなどが複雑に影響を及ぼすものであり、これらの解析を時系列的に行い明日の天候を予測するには、過去のデータと様々な条件による網羅的（組合せ的）な比較解析が不可欠であるが、組合せが多いと組合せ爆発が発生する。
【００７２】
また経済指標の代表的な株価は、企業の業績や、為替、政治、社会の動きなど多種多様な要因によって変動するものであり、これらの解析を時系列的に行い今後の株価を予測する場合には無限ともいえる網羅的（組合せ的）な比較解析が不可欠であるが、組合せが多いと組合せ爆発が発生する。
【００７３】
例えば、スーパーやコンビニが明日の仕入れを予測する場合、以上の季節や天候、そして経済の状況など極めて沢山の変動要因を条件として過去のデータを網羅的（組合せ的）に分析する必要がある。
【００７４】
おびただしいサイトやページ数のＳＮＳやＷＥＢの検索は、同一時間内に大量のアクセスが発生し限られた時間内にアクセス毎の検索結果を出力（リアルタイム処理）する必要がある。
【００７５】
例えば、世界８０億人の半分の４０億人が平均１０回程度特定の検索エンジンにアクセスすると１日当たり４０Ｇ回のアクセスが発生する。
【００７６】
このアクセス量は１秒当たり２６６Ｋ回のアクセス回数である。
【００７７】
このような超大量のマルチアクセスは、意識するかどうかに関わらず必然的に図１のＢ例同様網羅的（組合せ的）な検索になっている。
【００７８】
以上説明のとおり網羅的な比較演算のニーズは顕在化しているもの潜在化しているもの様々であるが、計算量が多大で極めて計算に時間が掛かり仮にデータがあっても特別な用途以外利用されていない。
【００７９】
また対象となるデータが巨大で、マルチアクセスが避けられないＷＥＢ検索システムなどは、極めて大規模なシステムにせざるを得ない。
【００８０】
組合せ的や網羅的な比較演算の一例として、さらに、比較的単純で身近な例を紹介する。
【００８１】
日本人１億人の中から同姓同名を探す処理を考える。
【００８２】
１億人の名前（姓と名）が全く未知の状態であり、どのような名前やその種類が不明な状態で、図１のＣ例のように総当たり的（網羅組合せ的）な比較演算を行う場合、その比較演算回数は１億（１００Ｍ＝１０の８乗）×１億（１００Ｍ＝１０の８乗）＝１京回（１０Ｐ＝１０の１６乗回）の比較演算が必要である。
【００８３】
このような比較演算を最新最速のＣＰＵで実行しても数万秒を必要とし、ハイレベルなスパコン京であっても数秒を必要とする。
【００８４】
さらに母数１億が１０億となればその比較演算回数は１００倍となり、最速のＣＰＵでも実時間では実現困難、手に負えない処理となる。
【００８５】
以上は組合せ比較演算の例であり、データが大きくなると、組合せが２乗指数的に大きくなり、組合せ爆発的比較演算回数が必要になり、データ分析分野の大きな障害となっている。
【００８６】
本発明は、発明者が、以上のような解決課題を知見したことに基づいてなされたものである。
２．本発明の一実施形態
以下、本発明の一実施形態について説明する。
【００８７】
図２は本発明の一実施形態に係るデータ比較演算プロセッサ１０１の構成例を示すものである。
【００８８】
データ比較演算プロセッサ１０１（以降単に本プロセッサ１０１と呼ぶ場合もある）には、外部メモリから転送されるデータをデータ入力１０２より行データ入力線１０３を通じて行０から行ｎ−１のｎ個の行データメモリに行データ１０４が入力され、また一方の列データ入力線１０８を通じて、列０から列ｍ−１のｍ個の列データメモリに列データ１０９が入力され、網羅組合せ的並列比較演算に必要なデータが記憶されている。
【００８９】
以上１行ｎ個並びに１列ｍ個、合計ｎ個＋ｍ個のそれぞれのメモリデータ１０４、並びに１０９からは、行データ演算データ線１０７並びに、列データ演算データ線１１２が網羅状に布線されており、その行列データ線の布線のクロスポイント（交点）には演算器１１３、もしくは比較演算器１１４が設置され、全ての演算器１１３、１１４は行列の双方のデータが並列に入力される構成となっており、ｎ×ｍ個の演算器１１３、１１４がｎ行、ｍ列のデータを網羅組合せ的に演算可能な構成となっている。
【００９０】
演算器１１３は一般的なＡＬＵでも、その他の演算器でも構わない、比較演算器１１４については後述する。
【００９１】
また演算器１１３、１１４は外部から入力指定される演算器条件１１６と、外部に演算結果の出力をするための演算結果出力１２０に繋がっている。
【００９２】
以上の構成とすることにより、１行と１列のデータを全並列組合せ的にＳＩＭＤ（single instruction multiple data）比較演算することが出来る。
【００９３】
演算器がＡＬＵ（Arithmetic and Logic Unit）であった場合、行データ演算データ線１０７並びに、列データ演算データ線１１２が多ｂｉｔデータ線となり、ＳＩＭＤ演算指定され比較論理演算を並列に実行しその比較演算結果を出力する構成となる。
【００９４】
網羅組合せ的な比較演算でニーズの多いのは、図１に示したようなビッグデータ分野でありデータ数が極めて大きい事である、従って多数の演算器を用いて網羅的に組合せ演算を行いたいが、先に述べた最先端ＧＰＵのコア数でも精々５７６０個であり、このようなＣＰＵやＧＰＵのようなＡＬＵ主体の演算器の場合、ビッグデータに対応できるようなコア数にすることは困難である。
【００９５】
本願発明者は、これまでメモリ内部に小型演算器を組み込み情報検索の高速化を図る研究と実用化を行って来た、ＳＯＰ（弊社登録商標）は主に画像認識などのデバイスで、ＤＢＰ（弊社登録商標）はデータベースなどの検索デバイスで、これまで様々な分野で商品化を行いこの技術の有効性を検証して来た。
【００９６】
以上の製品に共通する技術が超小型演算素子である１ｂｉｔ演算器である。
【００９７】
詳細は特願２０１３−２６４７６３号を参照されたい。
【００９８】
以降以上説明の行列比較演算を最も有効に利用できる応用例ならびに、集積度が高く、演算効率が高く、データの一致や類似を検索するのに都合のよい１ｂｉｔ演算器による比較演算器１１４を用いた組合せ並列比較演算方法を紹介する。
【００９９】
データを比較演算１５４する上で必要不可欠な演算は、一致１３２、不一致１３３、類似１３４、そして大小１３５、範囲１３６とその組合せで判定される共通１３７の演算である。
【０１００】
図３は、以上の要点をまとめたものであり、データの比較１３１の概念図である。
【０１０１】
本例では、ＭＳＢ（Most Significant Bit）からＬＳＢ（Least Significant Bit）まで８ｂｉｔのデータの一致、不一致、類似、そして大小、範囲とその組合せの例を、例Ａ、例Ｂ、例Ｃの３例ずつ示したものである。
【０１０２】
一致１３２の場合、列、行すべてのｂｉｔが一致している、不一致１３３の場合、８ｂｉｔデータ同士のどこかが不一致であれば、データ全体として不一致である。
【０１０３】
データ同士の値（距離）が近いことをもって類似１３４とする類似比較は、ＬＳＢ側の幾つかのｂｉｔを無視して比較することにより、実現することができる。
【０１０４】
ＢＣＤによるデータであれば、１０進数の下位の桁を無視するような比較が可能である。
【０１０５】
また、データ同士の大小１３５は、ＭＳＢ側に近い不一致のｂｉｔが行、列いずれかであることを判定することで実現できる。
【０１０６】
大小、２回の比較に合格したデータは範囲１３６比較に合格したことになる。
【０１０７】
以上を組合せして共通１３７の判定を下すこともできる。
【０１０８】
以上の内容は一例に過ぎない、コンピューティング全体の中でデータの比較演算は大きなウエイトを占めており特にビッグデータ解析に不可欠な演算である。
【０１０９】
図の下部に示すように、比較対象のフィールドデータが複数ある場合には、データを連結し、それぞれのフィールド毎に演算条件を設定して利用することが出来る。
【０１１０】
例えばデータベースのフィールドデータが、年齢、身長、体重、性別、既婚／未婚のような５種類のフィールドデータであった場合、年齢は７ｂｉｔ（１２８歳）、身長８ｂｉｔ（２５６ｃｍ）、体重８ｂｉｔ（２５６ｋｇ）、性別１ｂｉｔ（男／女）、１ｂｉｔ（既婚／未婚）、合計２５ｂｉｔに５つのフィールドデータを用意し１フィールド毎に演算条件を設定し１ｂｉｔ毎に２５回繰り返し比較演算１５４を行なえばよい、演算の詳細は後述する。
【０１１１】
以上の説明の、１ｂｉｔ毎の演算を１クロック演算、１単位のフィールドの演算を１フィールド演算、対象となるフィールドの演算を１バッチ演算と定義すると、この例はフィールドが５で、１バッチ演算が２５クロック演算となる。
【０１１２】
以上のことは、任意ｂｉｔ、任意フィールドからなるデータの比較１３１は一般の情報処理と同様に同一データ形式であれば行、列１ｂｉｔ毎個別に行列比較を繰り返すことにより、同一演算指定でＳＩＭＤ（single instruction multiple data）型演算が実現できる。
【０１１３】
つまりこの方法は、ＣＰＵやＧＰＵで１対のデータ同士を個別に比較するのではなく、１つの命令ですべての演算器が並列に比較処理を実行できることを意味しており、この方法は超並列比較演算を実現させるために好都合であり本願発明の根幹となるものである。
【０１１４】
またＡＬＵのようにデータ幅（オペランド幅）が３２ｂｉｔや６４ｂｉｔのような固定データ幅の演算器ではないのでメモリセルにデータを無駄なく割り付けできるのでメモリ効率と演算効率が高くなる。
【０１１５】
後述する極めて単純な構成の比較演算器１１４を超並列化してＬＳＩを実装することが出来ることを意味している。
【０１１６】
さらに特徴的なことはＣＰＵのキャッシュメモリのように大量のデータを事前に転送しておくことにより、極めて効率的な演算が可能になる、このことはこの演算器の性能を無駄にすることなく利用する上で極めて重要でありこの点については後述する。
３．実施例
【実施例１】
【０１１７】
図４は、以上説明の比較演算器１１４を用いたデータ比較演算プロセッサ１０１の構成をより具体的に説明するものである。【０１１８】
図に示す通り、１行ｎ個、１列ｍ個、のデータ１０４、１０９は、ｎ×ｍ個の比較演算器１１４に網羅組合せ的に接続されて並列比較演算が可能な構成になっている。【０１１９】
行方向のメモリデータ１０４は、後述するように行方向データとして行列変換され１メモリセル毎、ｎ個並列に、行データアドレス１０５でアクセス（選択）可能な構成になっており、アクセスされたアドレスのメモリセルのデータは、行データバッファ１０６に代入され、この行データバッファ１０６の出力は、行方向の比較演算器１１４の一致回路の行入力に並列に入力される。
つまり本例の場合行アドレス０をアクセスした場合、行０、列０並びに行０、列１の比較演算器１１４の行入力には「１」が代入される、また行１、列０、並びに行１、列１の比較演算器１１４の行入力には「０」が代入される。【０１２０】
図示はされていないが、ｎ行、ｍ列組合せ的に比較演算器１１４の行にデータが入力されることになる。【０１２１】
列方向も同様な構成であり、本例の場合、列アドレス０をアクセスすると、行０、列０ならびに行１、列０の比較演算器１１４の列入力に「１」が代入される。【０１２２】
また行０、列１並びに行１、列１の比較演算器１１４の列入力に「０」が代入される。【０１２３】
図示はされていないが、ｎ行、ｍ列組合せ的に比較演算器１１４の列にデータが入力されることになる。【０１２４】
本例の場合、行列各４ｂｉｔのデータ構成であるので、行列ともアドレス０からアドレス３までのデータを順次比較演算器１１４に送り込むことにより、比較演算器１１４は必要な行と列データの比較演算を実行することができる。【０１２５】
一致を求める演算の場合、行１、列１の比較演算器１１４は４ｂｉｔの行列データが本例の場合「０１０１」と同じであるので、演算結果出力１２０からマッチアドレス１１９を出力することになる。【０１２６】
以上の説明は４ｂｉｔデータ１組によるものであったが、年齢、性別、身長、体重など比較するデータが複数ありそのデータ幅が１ｂｉｔから６４ｂｉｔあるいはそれ以上任意のデータ幅のデータであっても任意組、行列データとして割り付けし利用することができる。【０１２７】
さらに後述するが、１バッチ分ｎ×ｍのデータを複数バッチ分データ入力しておき、複数バッチ連続的に比較演算を繰り返すことも可能である。【０１２８】
１ｂｉｔ毎の比較演算は一見非効率のような印象を与えるが、この方式の演算効果については後述する。【０１２９】
またこの回路に行列データの加算器を組み込み１ｂｉｔ毎に演算を行えば、加減算演算を実現することも可能である。【０１３０】
外部から行列データを取り込む際、本プロセッサ１０１のデータ入力１０２の直後に、データの行列変換回路を備えておくと、ＨＯＳＴ側でデータの行列変換を行う必要がなくなるので、システム全体が効率的となる。
【実施例２】
【０１３１】
図５は、行列データ変換回路の一例である。【０１３２】
図の下方に示されるようにメモリセル１４９は、それぞれのメモリセルのメモリセルアドレス選択線１４７が選択されることにより、メモリセルデータ線（ビット線）１４８からデータが出力される構成である。【０１３３】
本方式は、メモリセルに行列変換スイッチ１、行列変換スイッチ２を接続することにより、スイッチ１４５、１４６の切り替えにより、行列方向を変換するものである。【０１３４】
この構成では行列変換信号１４４によって、アドレス選択線１４１はデータ線（ビット線）１４２に切り替わる。【０１３５】
この変換回路を利用することにより、行配列で入力された例えば６４ｂｉｔ構成の外部データを列配列の６４ｂｉｔデータに変換することが出来る、この回路を２回路持てば連続的に外部のデータを本ＬＳＩに取り込みし、行データ１０４、列データ１０９とすることが出来る。【０１３６】
この変換回路に限定されるものではないが行列変換回路を内蔵しておくことによりＨＯＳＴ側の負担が軽減される。
【実施例３】
【０１３７】
図６は、データ比較演算プロセッサ１０１の比較演算器１１４の実施例である。【０１３８】
この比較演算器１１４は先の図４で説明の通り、行列一致回路１２１、１ｂｉｔ演算器１２２、演算結果出力１２０から構成されている。【０１３９】
行列一致判定回路１２１は、１ｂｉｔ毎に与えられる行と列のデータが一致か、不一致を比較する回路である。【０１４０】
論理積（ＡＮＤ）回路や、ＮＡＮＤ回路、論理和（ＯＲ）回路で構成されている。【０１４１】
１ｂｉｔ演算器１２２は論理回路とその選択回路、並びに演算結果部で構成され、図３で示した１ｂｉｔ毎の一致、不一致、類似、大小、範囲などの比較演算を行うものである。【０１４２】
行列一致判定回路１２１で判定されたデータと一時記憶レジスタに記憶されているデータを、演算条件に基づき論理積、論理和、排他論理並びに論理否定で演算し、所定の演算を行い勝ち抜いた一時記憶レジスタ１２７や、一致回数カウンタ１２８が、マッチアドレス１１９となるように構成されている。【０１４３】
例えば８ｂｉｔのデータであれば１ｂｉｔ毎に入力される行列データを指定された演算条件で最大８回実行することにより、行列データの一致、不一致、類似、大小比較の比較演算１５４を実現することができる。【０１４４】
また、年齢、性別、体重、身長など複数のデータの合格数を判定するような演算の場合一致回数カウンタを利用し所定値以上のカウント値になっているかどうかの判定を行うことも可能な構成である。【０１４５】
この比較演算器１１４には、回路規模が大きくなる加算器などの四則演算回路が不要となっていることが大きな特徴である。【０１４６】
本例では一例として任意ｂｉｔ数、任意フィールド数の演算を行うために、演算結果部には１ｂｉｔ毎のデータの行列一致判定結果を一時記憶するレジスタで任意ｂｉｔ数の判定を行い、データ列の一致回数を記憶する一致回数カウンタで任意フィールド数の判定が実現できるように構成されている。【０１４７】
演算結果出力器１２０は、優先順序判定回路１２９とマッチアドレス出力１３０から構成されている。【０１４８】
１回のバッチ演算の結果、複数の演算器がマッチした場合、上位の演算器から順番に当該アドレスのＸＹの座標（アドレス）を出力させるためのものであり、上位の演算器から優先的にマッチアドレス１１９の座標（アドレス）を演算結果として演算結果出力１２０を通じて外部に送出する構成である。
４．本実施形態のＡＳＩＣ
次に、本プロセッサ１０１の実際のＡＳＩＣの例を具体的に検討する。【０１４９】
本プロセッサ１０１を考える上で最低限必要なことは
１．対象になるデータの規模やデータの性格、組合せ並列演算で必要とする演算内容
２．演算器の構成、単位時間の演算回数
３．チップ内演算器の数（並列性）
４．外部メモリからのデータ転送能力（データ供給能力）
５．内部メモリ、キャッシュメモリの容量
６．演算結果データの出力能力
７．どこがボトルネックとなるか、総合演算性能は
８．ＬＳＩのピン数
９．消費電力や発熱は
以上の項目を総合的に判断する必要がある。【０１５０】
現在の半導体技術では１つのチップには１００億個以上のトランジスタが実装できる。【０１５１】
本プロセッサ１０１の回路構成は極めて単純であり、一つの比較演算器１１４と出力回路が１００ゲート、４００トランジスタ程度で実現できる。【０１５２】
チップに搭載するトランジスタの多くをこの比較演算器１１４に充てるとすると、例えば１６００万個（１６Ｍ個）の比較演算器１１４が、１６Ｍ×４００トランジスタ＝６４億トランジスタで実現可能である。【０１５３】
１６Ｍは行と列が４Ｋ×４Ｋに相当する、つまり１６００万個の比較演算器１１４（プロセッサ）が並列（同時）に比較演算することになる。【０１５４】
本プロセッサ１０１の消費電力を１０Ｗ以下、冷却用のファンが必要のない電力範囲に抑え、しかも汎用性が高く、高速な演算器の構成としたい。【０１５５】
システムクロックが１ＧＨｚを超えると大幅に消費電力が増加するのでシステムクロックは１ＧＨｚ（１ナノ秒クロック）またはそれ以下で検討する。【０１５６】
実際の実施例をもとに本プロセッサ１０１の基本構成をまとめるものとする。【０１５７】
図７は以上４Ｋ×４Ｋ比較演算器１１４を用いた本プロセッサ１０１で１億×１億データの行列比較演算の実施例を示したものである。【０１５８】
説明を簡単にするためにデータの母数を１億（１００Ｍ）とし、「井上克己」など漢字４文字データつまり４フィールドデータを、図１のＣ例のように行列同じデータとして利用し網羅組合せ的に日本人の同姓同名を検索するものとする。【０１５９】
この比較演算回路１１４は、１クロック演算を１ｂｉｔ毎に繰り返すことになるので、漢字データ、４文字＝４フィールド（１６ｂｉｔ×４＝６４ｂｉｔ）を１ナノ秒１クロック演算で６４回実行し比較演算、つまり１バッチ比較演算は６４ナノ秒である。【０１６０】
これが、４Ｋ×４Ｋ＝１６００万演算器全体の１バッチ比較演算空間１５２の演算時間である。【０１６１】
次に外部メモリから、本プロセッサ１０１にデータを転送するためのデータ入力時間について説明する。【０１６２】
一般的なＤＤＲメモリモジュールのデータ転送時間は１６ＧＢ／秒程度である。【０１６３】
仮に、行４Ｋ×６４ｂｉｔ（８Ｂ）のデータを１６ＧＢ／秒でデータ転送する時間は（４Ｋ×８Ｂ＝３２ＫＢ）／１６ＧＢ＝２マイクロ秒、列も同様２マイクロ秒である、これを１データ転送時間とする。【０１６４】
図７のＡ方式に示すように、１バッチ４Ｋ×４Ｋの比較演算空間で１００Ｍ×１００Ｍの組合せ的演算空間を演算する場合、ラスタ走査のように２５Ｋ×２５Ｋ＝６２５Ｍ回網羅的な比較演算を繰り返す必要がある。【０１６５】
例えば行の１データを固定にして、列のデータ切り替え２５Ｋ回の比較演算を行うので、データの転送回数は、（１＋２５Ｋ）×２５Ｋ≒６２５Ｍ回となり、組合せ的比較演算空間全体では、１データ転送時間の６２５Ｍ倍になるので２マイクロ秒×６２５Ｍ＝１，２５０秒となる。【０１６６】
以上のような本プロセッサ１０１の利用の仕方では、データ転送時間が先に示した、４Ｋ×４Ｋの１バッチ演算空間１５２の比較演算時間６４ナノ秒より極めて大きな値となり、この技術の有効性を損なう結果となる。
５．本実施形態の比較演算方法
以下にこの技術の効果を最大限に引き出す比較演算方法を図７のＢ方式に示す。【０１６７】
先の説明では、行列それぞれ４Ｋのデータ１バッチ分をその都度データ転送する場合を考えたが、例えば４Ｋの６４倍のデータ、つまり１行２５６Ｋ＋１列２５６Ｋの行列データを１バッチメモリ空間１５３として転送する場合の時間を考える。【０１６８】
１バッチメモリ空間１５３の行と列双方のデータ量は（４Ｋ＋４Ｋ）×８Ｂ×６４＝４ＭＢとなる。【０１６９】
従ってデータ転送時間は４ＭＢ／１６ＧＢ＝２５６マイクロ秒となる。【０１７０】
一方比較演算時間は、４Ｋ×４Ｋの１バッチ演算を６４ナノ秒で実現できるので、１バッチメモリ空間１５３の全体の演算は行列それぞれ２５６Ｋ／４Ｋ＝６４回、６４回×６４回＝４Ｋ回のラスタ走査のように比較演算を繰り返すことにより実現できる。【０１７１】
この場合、行列「６４×６４」の演算に必要なデータは行列「６４＋６４」のデータとして事前に受け取っており、本プロセッサ１０１は先に図４で説明した通りこのデータを連作的に利用することが出来るので、６４ナノ秒×４Ｋ回≒２５６マイクロ秒の演算時間で処理可能になる。【０１７２】
つまり、演算時間＝データ転送時間となりバランスした性能になるとともに、初回の演算を除き、演算中にデータ転送を独立し、所定単位のデータを転送することが出来るので、見かけ上データ転送時間は比較演算時間に隠れてしまい、比較演算時間の２５６マイクロ秒で２５６Ｋ×２５６Ｋの１バッチメモリ空間が処理可能になる。【０１７３】
以上のとおり、ＣＰＵのキャッシュメモリのように、事前に大量の行列データを転送しておいて、連続して演算を繰り返すことができるこの方法は、データ転送は４Ｋのデータ６４倍のデータの二組つまり６４＋６４の１２８回のデータを送るだけで良いのに対し、演算は６４×６４＝４０９６回（４Ｋ回）必要になるところがこの技術最大のポイントである。【０１７４】
データの転送時間はデータの量に比例するが、組合せ的な演算はデータ量の２乗に比例するのでデータ先送りとキャッシュメモリの価値を最大限に引き出すことができる。【０１７５】
この方式をデータ先読み効果と呼ぶ。【０１７６】
ちなみに先に示した４ＭＢのメモリを１セル当たり６トランジスタのＳＲＡＭで構成する場合、４Ｍ×８×６≒２億トランジスタ程である、必要に応じ更にメモリを増設することにより、より様々な演算効果が得ることができる。【０１７７】
２５６Ｋ×２５６Ｋの１バッチメモリ空間１５３をさらに４００回×４００回＝１６０Ｋ回繰り返すことで、１億（１０８ ）×１億（１０８ ）＝１京（１０１６ ）の空間全体の演算が完了することになり全網羅組合せ的演算空間１５１の演算時間は６２マイクロ秒×１６０Ｋ回≒４２秒となる。【０１７８】
後述するようにこの時間にはアイドル時間、比較演算指示時間や比較演算結果の出力時間が考慮されていないが、ひとまずこの数字を１億トータル処理時間と呼ぶものとする。【０１７９】
ＡＬＵのような多ｂｉｔ演算器を用いて１バッチの比較演算を高速化することも可能であるが、データ転送時間がボトルネックになるので、１バッチの比較演算を高速化しても無意味である。【０１８０】
組合せ的な演算が比較に限定される場合は本例の比較演算器１１４のように１ｂｉｔ毎の演算を繰返し実施し、データの転送時間と、演算時間のバランスをとれるようにするのが最善である。【０１８１】
また、ＡＬＵの場合、データ幅が固定になってしまい、メモリ効率や演算効率が悪くなるのに対し本方式は、１ｂｉｔ以上の任意データ幅に遊びがなく対応出来るので極めて効率的な並列演算が可能になる。【０１８２】
本プロセッサ１０１はＣＰＵやＧＰＵのようにプログラムを介在させて駆動させるものではないこと、各演算素子が完全同一のＳＩＭＤ型演算を行うので、それぞれの演算器の遊びやオバーヘッドタイムを完全排除することが出来るのでアイドルタイムを考慮する必要がない。
６．本実施形態の演算指示
本プロセッサ１０１の演算指示について説明する。【０１８３】
図３で説明の年齢／身長／体重のような複数フィールド行列データを比較する演算条件設定の一例を示す。【０１８４】
年齢データの（０〜６）を一致で行列比較する場合の個別演算式  （０〜６）行＝列
身長データの（７〜１４）を類似で行列比較とする場合の個別演算式  （７〜１４）行≒列
体重データの（１６〜２２）は大小で行列比較とする場合の個別演算式  （１６〜２２）行>列
性別データの（２３）を一致で行列比較する場合の個別演算式  （２３）行＝列
既婚データの（２４）を無視する場合の個別演算式  演算式不要
以上のように対象となるフィールドの個別フィールド演算式としてそれぞれの行列データの比較演算条件と比較演算記号を決定する。【０１８５】
割愛しているがデータ形式がバイナリデータかＢＣＤか、テキストデータであるか、さらに類似などの場合はどのデータを無視するのかなどさらに細かく条件を決める必要がある。【０１８６】
さらに以上の個別フィールド演算式の全体の比較演算を、[（０〜６）行＝列]×[（７〜１４）行≒列]×[（１６〜２２）行>列]×[（２３）行＝列]などのように比較演算式として外部から与え所定の行列比較が本プロセッサ１０１内部で実現されるよう、フィールド内データの個別フィールド演算は図６に示す比較演算器１１４の一時記憶レジスタで演算し、複数フィールド全体の演算は一致回数カウンタ１２８でカウント演算可能になるよう演算指定条件回路を構成すればよい。【０１８７】
個別フールド内の演算、複数フールド全体の演算とも、論理積、論理和、排他論理、論理否定、などの任意の論理の組み合わせが実現できることは言うまでもない。【０１８８】
通常本プロセッサ１０１に対する演算指示はＨＯＳＴ側のコンピュータから、ＰＣＩｅやローカルネットワークを通じて行われる。【０１８９】
以上のような極めて巨大な組合せ的な比較演算であっても比較演算条件は毎回同じ条件で実施するので、比較演算開始時に１回指定するだけでよく１ｂｉｔ毎の比較演算条件を仮に数十マイクロ秒〜数ミリ秒程度の比較演算指示時間が必要であってもトータル処理時間に対して無視することができる。
７．本実施形態の比較演算結果の出力
最後に本プロセッサ１０１の比較演算結果の出力について説明する、４Ｋ×４Ｋの１バッチ比較演算空間の中でマッチする行と列の演算器（マッチアドレス）が多いか少ないかは、トータル処理時間に大きく影響する。【０１９０】
本例では先に示した日本人の同姓同名を検出する際、マッチする確率と出力時間について考察するものとする。【０１９１】
日本人約１．２億人に対し同姓同名の種類は１３００万種類とされているので、一つの名前に平均１０のマッチ数（平均確率が１０）があることになる、１億×１億の組合せ的なマッチングで１０億回のマッチアドレスが検出されることになる。【０１９２】
このマッチアドレスデータに付随して、このマッチアドレスが１００Ｍ×１００Ｍの組合せ的な空間のどのエリアのものであるのかをエリア毎に最低１回エリアデータを出力する必要がある。【０１９３】
マッチアドレスデータを受け取るＨＯＳＴ側は、エリアデータと以上説明の４Ｋ×４Ｋのマッチアドレスで全空間内のどのマッチアドレスであるかを判定することができる。【０１９４】
この１０億回（１Ｇ回）のマッチアドレスを、１データ、行（Ｘ）列（Ｙ）それぞれ２Ｂ＝４Ｂデータを１クロック１ナノ秒で外部出力する場合の時間は、１Ｇ回×１ナノ秒＝１秒である。【０１９５】
このデータサイズは、１Ｇ×４Ｂは４ＧＢである。【０１９６】
平均確率がその１０倍になれば外部出力時間は１０秒であるがこの出力時間も比較演算と独立して実行できるので、数十倍程度の出現頻度であれば、先に示した１億トータル処理時間４２秒に影響はない。【０１９７】
次に出現頻度が頻発する場合について検討する。【０１９８】
例えば１億のデータの１つのデータ当りに平均１万回（１０Ｋ回）マッチ検出するなどの場合、外部出力時間に１０００秒もの時間が必要である。【０１９９】
同時にＨＯＳＴ側のコンピュータは１００Ｍ×１０Ｋ×４Ｂ＝４ＴＢものメモリ空間が必要になり、また抽出した４ＴＢのデータをＣＰＵによりさらに整理するための時間も必要になるので注意が必要である。【０２００】
このようなことからビッグデータ同士の組合せ的な検索は、大量のデータの中から、水や空気のようにどこにでもあるものを手当たり次第に探すのではなく、金やダイヤモンドを探し当てるように、限定された組合せを探し当てるものと割り切る必要がある。【０２０１】
以上の演算結果データに関することはＣＰＵによる通常の組合せ的な検索や探索で実行する場合でも全く同様であることは言うまでもない。【０２０２】
以上説明の本プロセッサ１０１の全体像を小さな町工場のイメージで示す。【０２０３】
この工場は工場内のあらゆる空間に隙間なく超多数の超小型高性能データ加工設備が備え付けられている。【０２０４】
２組のデータがトラックで工場の入口に搬入され、この超小型高性能データ加工設備にそれぞれのデータが入るやいなや超小型高性能データ加工設備の中で一斉にデータ比較演算加工が実施される。【０２０５】
超小型高性能データ加工設備は超高速でそのデータの加工は小爆発のように超高速で完了する。そしてその加工の結果製品となる（重要な）データのみが工場の出口から出力されトラック出荷される、これが超高速に繰り返し実行されるイメージである。
８．本発明の優位性のベンチマーク
以上の内容をもとにこの技術の優位性をベンチマークする。【０２０６】
ＣＰＵで本例の同姓同名を検出する場合、メモリを読み込み、比較を行い、一致しなければ次のメモリを読み込む、一致していれば所定の処理を実行するなど、平均４ステップで１回の比較演算ループを実行するとすれば、５６０Ｇ回／秒の演算が可能な汎用高速ＣＰＵで、（１億×１億回＝１京）／５６０Ｇ回は７１，４２８秒（約２００時間）であり、先に示した１億トータル処理時間４２秒と比較して、約１，７００倍の時間が必要である。【０２０７】
本方式の１億トータル処理時間４２秒は計画値ではあるものの適正に設計されたデバイスであれば理論値で稼働させることができる、ＣＰＵの場合には様々な要素がからみあうので理論値で稼働させることは困難であり、実際には３，０００倍以上の性能差が予想される。【０２０８】
さらに４Ｔ回の演算が可能な専用高速ＣＰＵが４ステップで１回の比較演算ループを実行する場合、１京回／１Ｔ回は１０，０００秒であり、１億トータル処理時間４２秒と比較して約２４０倍の時間が必要である。【０２０９】
実際には５００倍以上の性能差となることが予想される。【０２１０】
最速のＧＰＵの演算能力は専用高速ＣＰＵと比較して２倍程度であるので、最速のＧＰＵの演算能力と比較する場合でも２５０倍程度の性能差となることが予想される。【０２１１】
最後に、スパコン京は一秒間に１京回の演算ができるので、４ステップで１回の比較演算ループを実行した場合、４秒必要である。【０２１２】
スパコン京は８万個以上のＣＰＵを並列駆動させているので１２ＭＷもの電力を消費する。【０２１３】
一方の本プロセッサ１０１は１チップ１０Ｗにも満たないような電力で、スパコン京の約１／１０の比較演算能力をもち、電力性能で比較すれば1０万倍以上の優位性をもつ。【０２１４】
１つのチップで一般的なスパコンクラスの比較演算性能を持つことになる。【０２１５】
以上の性能を先に示した工場の例で示すと、この工場は小さな工場（本プロセッサ１０１＝半導体デバイス１個）であるものの巨大工場（スパコン）のように生産能力が高いこと、また使用する電力が極めて少ないこと、原料や製品の搬入搬出が船や飛行機など特殊な搬送設備でなく、一般的なトラック（汎用データ転送回路）で済むことである。【０２１６】
以上の性能の差は、いうまでもなく演算アーキテクチャの違いによるものである。【０２１７】
前述したようにＣＰＵやＧＰＵがデータ同士を連続的比較する場合にはメモリを読み込み、比較を行い、一致しなければ次のメモリを読み込む、一致すればメモリワークエリアにフラグ（ＦＧ）を立てるなど、１つのデータに数ステップの比較ループ演算が必要である。【０２１８】
本プロセッサ１０１の演算性能をＣＰＵやＧＰＵと同様デバイス性能で表現すると、６４ｂｉｔ幅のデータを１６Ｍ個のプロセッサが６４ナノ秒で１バッチ比較演算空間１５２を演算するので、デバイス性能に換算すれば２５６Ｔ回（０．２５Ｐ回）／秒の実比較演算性能に相当する。【０２１９】
ＣＰＵやＧＰＵは逐次処理型のプロセッサを改良したマルチコア、メニコアであるのに対し、本方式は最初から超並列化を目指し、比較演算に特化した組合せ的演算専用のプロセッサ１０１であることが最大の違いである。【０２２０】
比較演算は超並列処理が可能な１ｂｉｔ演算器でＳＩＭＤ処理可能であること、組合せ的な比較演算は与えるデータに対して演算回数がｎ×ｍ、最大２乗になること、この２つの相乗効果に着目したことがこの発明の最大のポイントである、仮に一方だけではこれだけの性能を引き出すことは困難である。
９．本発明の利用法
以下にこの技術の利用法について説明する。【０２２１】
これまでの説明は、８Ｂデータの１億×１億＝１京（１０１６ ）のデータ同士の組合せ的な演算であったが、データサイズや演算の条件が同様であれば、
様々なデータ量の組合せ的な演算が比例関係で求められる、たとえば
４．２秒では１０１５  の演算が可能（例えば１００万（１０６ ）×１０億(１０９ ）の組合せ的な演算）
４．２ミリ秒では１０１２  の演算が可能（例えば１００万（１０６ ）×１００万（１０６ ）の組合せ的な演算）
４．２マイクロ秒では１０９ の演算が可能（例えば１万（１０４ ）×１０万（１０５ ）の組合せ的な演算）が実行できる。【０２２２】
またデータの長さと、トータル処理時間も、比例関係であるので、データの長さが４倍であれば、演算時間は４倍になる。【０２２３】
この比較演算方式は、データ量の大きなものから、様々なデータ形式のもの、更に様々なデータ長のデータに利用出来る。【０２２４】
以上の説明はこの技術の性能の目安を示すものであり、当然のことながら演算条件が複雑になればなるほど圧倒的な比較演算性能で従来型の情報処理では実現不可能であった様々な情報処理への応用が考えられる。【０２２５】
先の同姓同名の検索は、フィールドデータの網羅的な比較は不要であったが、フィールドデータの網羅組合せ的な演算方法についてその概要を示す。【０２２６】
コンビニやスーパーの売り上げ集計データの中から例えば、「ビール×枝豆×豆腐」、「ワイン×チーズ×ピザ」、「日本酒×するめ×おでん」など、頻出する組合せを網羅的に検出するようなデータマイニングは最もニーズの多いデータマイニングであり様々な手法が提案されている。【０２２７】
近年研究が活発しているＭＥＥＴ演算はその代表例であるがデータが多くなるに従い計算量が合わせ爆発するので様々な制約条件を与えないと待ち時間が膨大になる、その他の手法による演算も大同小異である。【０２２８】
本発明による頻出組合せの場合には、それぞれの商品コード（同じデータ数）のフィールドデータを切り替えて網羅的に演算を実施すればよい。【０２２９】
以上の場合は３つのデータの場合であり、合計９回の組合せ比較演算１５４を行えば網羅組合せ的な比較演算が可能である。【０２３０】
４つのデータの場合、合計１６回の組合せ比較演算１５４を行えば網羅組合せ的な比較演算が可能である。【０２３１】
以上のようなフィールドデータの網羅的な組合せ比較演算は図６に示す一致回数カウンタ１２８周辺回路により自由に実現することができる。【０２３２】
以上の説明で、データフィールドの網羅組合せ的な比較演算と、データフィールドが固定のデータ間の網羅組合せ的な比較演算と、その双方の網羅組合せ演算が可能であることを示した。【０２３３】
以下にこの技術の代表的な応用例を示す。【０２３４】
先に示した同姓同名の抽出データはインデックスそのものである。【０２３５】
抽出された同姓同名のデータをそのままインデックスとして利用することが出来る、インデックスを作成するには複雑な専用技術が必要であったが、本プロセッサ１０１はインデックスの作成を容易にししかも超高速で、思い通りのインデックスを生成してくれる。【０２３６】
もちろん本例以外のデータのインデックスに利用できることは言うまでもない。【０２３７】
この技術はデータのフィルタとして利用することができる。【０２３８】
図１のＢ例のように使用し、仮にＸにフィルタの条件を設定（固定）しＹに対象となるデータを与えればフィルタリングされた結果を抽出することができる。【０２３９】
以上のようにビッグデータに最適な技術であることは言うまでもないが、マイクロ秒やミリ秒単位でも極めて大きなデータの処理が出来るので、リアルタイム処理にも応用が可能である。【０２４０】
リアルタイムの応用について考える。【０２４１】
ＳＮＳなどのビッグデータは、データキー（インデックス）とデータを紐づけしたＫＶＳ（Key Value Store）方式のデータ検索が盛んに利用されている。【０２４２】
本プロセッサ１０１の１行、１列のいずれか一方を検索インデックスデータとして、他の一方をマルチアクセス検索クエリデータとして、比較演算しマルチアクセス検索を実行することが出来る。【０２４３】
先に例示した、４×４Ｋの１バッチ比較演算空間１５２で２５６Ｋ×２５６Ｋの１バッチメモリ空間１５３をもつデバイスで、例えば１億のＫＶＳ方式のＳＮＳサイトの１インデックス当たり６４ｂｉｔのインデックスを検索する場合は、２５６マイクロ秒の１バッチメモリ空間１５３を縦列のみ４００回演算すればよいので、１億（インデックス件数）×２５６Ｋ（単位当たりの検索データ）の比較演算時間は約１００ミリ秒（０．１秒）となる。【０２４４】
比較演算時間が０．１秒であれば、通信時間のオーバヘッドを含めても極めて快適なＷＥＢ検索システムを提供することができる。【０２４５】
先に示したように、例えば世界８０億人の半分の４０億人が１日平均１０回程度特定のＳＮＳ検索エンジンにアクセスすると１日当たり４０Ｇ回のアクセスが発生し、このアクセス量は１秒当たり２６６Ｋ回のマルチアクセス回数に相当する。【０２４６】
従って上記の１００ミリ秒で２５６Ｋ（単位当たりの検索データ）の演算能力はマルチアクセスが１０倍ほどに集中した場合でも処理可能であることを意味している。【０２４７】
検索サイト数がＮ億（１００億）であれば、本プロセッサ１０１をＮ個（１００個）使用することで、超小型、超低電力で超高性能なＳＮＳ検索システムが完成する。【０２４８】
本例は便宜上先に説明の２５６Ｋ×２５６Ｋの組み合わせ演算によるものであったが、対象となるデータ数（ｎ）と単位時間当たりのアクセス数（ｍ）の関係から最適な組み合わせが可能な本プロセッサ１０１を設計することにより、より合理的な処理が出来ることは言うまでもない。【０２４９】
以上の応用として本プロセッサ１０１はデータを可変長にすることや、より複雑な検索条件を設定することが出来るので、図１のＢ例に示すように大量のデータに対してマルチアクセスが可能である。【０２５０】
従って本プロセッサ１０１は様々な検索機能を備えた高機能の連想メモリ（ＣＡＭ）として利用できることを意味している。【０２５１】
連想メモリ（ＣＡＭ）は検索用のインデックスを不要にし、複雑な情報処理を不要する反面、フレキシブルな検索条件による検索やマルチアクセスが苦手で現在は通信ルータのＩＰアドレス（ユニークデータ）の検出程度にしか利用されていない、本プロセッサ１０１は連想メモリ（ＣＡＭ）の応用を大幅に拡大する。【０２５２】
大量のデータに大量にアクセスされるクラウドサーバに最適である。【０２５３】
数値データの一致、類似、大小、範囲の比較ができるので、行列いずれかを、多数のフィルタ条件値と固定して設定しておき、その反対側に大量のデータを与え、マッチするものを検出する、このような演算は設備の故障診断や、株価の変動などのマイニング解析に最適である。【０２５４】
テキストデータのリアルタイム解析について考える。【０２５５】
欧米語はもとより日本語の網羅的な一致検出が高速で出来るので、大量のＳＮＳデータの中から頻出する言葉を検出し社会の関心や市場の関心をリアルタイムにマイニング検出する。【０２５６】
同姓同名の場合４文字データであったがデータ長は任意であるので、特許文献の検索やＷＥＢテキストデータの検索にも応用可能である、大量マルチアクセスが可能なのでシソーラス（同義語）検索にも最適である。【０２５７】
ＡＩ技術への関心が高まっている、ＡＩ技術の期待は様々であるが、コンピュータに明確な指示を与えることなく必要な情報を抽出することや選別することが目的と言っても過言でない。【０２５８】
一例をあげればＤｅｅｐ Ｌｅａｒｎｉｎｇは画像や音声の認識、自己相関マップ（ＳＯＭ）やサポートベクタマシン（ＳＶＭ）などのクラスタリングは最もニーズの多いＡＩ技術である。【０２５９】
先に説明の同姓同名の検索は、図１のＣ例のようなデータ検索であるが、見方を代えればＤ例のように特別なクエリ（教師データ）なしでクラス分けを自動的に実行したことと等価である、演算条件を変更するだけで様々なクラス分けを実行できるこの方法は従来の技術と比較して極めて単純（ソフトが不要）で、しかも超高速である、本プロセッサ１０１は正にこのような目的の情報処理を１チップで実現したものに他ならない、その応用はビックデータからリアルタイム処理まで無限であり、新しいタイプの人工知能と表現することもできる。【０２６０】
以下にこの技術の補足説明を行う。【０２６１】
補足説明１として、本例で説明の演算クロック１ナノ秒を５ナノ秒クロックとした場合について説明する。【０２６２】
演算速度が１／５になるので、１億トータル処理時間は４２秒×５≒２１０秒となるが消費電力を大幅に抑えることが可能になる。【０２６３】
補足説明２として、４Ｋ×４Ｋの演算器を１Ｋ×１Ｋの演算器とした場合について説明する。【０２６４】
演算回数が１６倍増えるので、１億トータル処理時間は４１．９秒×１６≒６７０秒となるが小型、低コストのチップを実現できる。【０２６５】
正方形にこだわることもなく１６Ｋ×１Ｋでも可能であるが４Ｋ×４Ｋに比べてメモリの全体容量が（１６＋１）／（４＋４）＝２．１２５倍に増加することに留意する必要がある。【０２６６】
補足説明３として、データ先読み効果について説明する。【０２６７】
ｎ＝ｍの場合効果が最大になる。【０２６８】
ｎ＝ｍとしてそれぞれのバッチ数をＫとする場合
演算時間は＝Ｋ２  ×１バッチ演算時間
データ転送時間＝（Ｋ＋Ｋ）×１データ転送時間
となるので、演算時間とデータ転送時間のバランス点は以下の式で求められる。【０２６９】
Ｋ２  ×１バッチ演算時間＝（Ｋ＋Ｋ）×１データ転送時間  
Ｋ＝２データ転送時間／１バッチ演算時間  がバランスの取れるバッチ数である。【０２７０】
先の例では、バッチ数Ｋ＝６４となり、全体で４ＭＢのメモリを搭載すると最も効率の良い多重バッチ処理の演算が可能になることはすでに説明の通りである。【０２７１】
演算時間や、データ転送時間に合わせてＫを選択すれば最適なＬＳＩが実現可能になる。【０２７２】
補足説明４として、小容量のＬＳＩを紹介する。【０２７３】
先に示した構成の本プロセッサ１０１は行列が４Ｋ×４Ｋで比較演算器１１４が１６Ｍ個と大容量のもので演算効率を高めるために多重バッチ処理を行う方式であった。【０２７４】
この方式のバランス点は多重バッチ処理の場合のデータ転送時間とその合計演算時間である。【０２７５】
本プロセッサ１０１は比較演算器１１４の数に関係なく１バッチ比較演算は６４ｎ秒と一定であるのでこの演算時間にバランスするデータ転送時間のデータ容量を求める。【０２７６】
この場合は単一バッチ処理の場合のデータ転送時間と演算時間である。【０２７７】
行列同数でこれまで説明の通信能力１６ＧＢ／秒であれば、５１２Ｂ＋５１２Ｂつまり１データが６４ｂｉｔの場合、行列それぞれ６４データで６４×６４＝４Ｋの比較演算器１１４を備えた本プロセッサ１０１が実現できる。【０２７８】
データ数が６４以下の場合、データ転送時間≪＝演算時間となるので演算効率が良い。【０２７９】
４Ｋ×４Ｋのプロセッサに比較すると性能は大幅に落ちるが小型低電力、低コストのプロセッサとなり電力当たりの性能は従来型プロセッサを大幅に上回る。【０２８０】
補足説明５として、比較演算結果の出力を高速にする場合には、演算結果をＦＩＦＯ（データの先入れ先出し方式など）形式変換して高速なシリアル通信インターフェース、例えばＰＣＩe接続することにより理論値１２８ＧＢ／秒のデータ通信が可能になる。【０２８１】
もちろん行列演算用データのデータ転送時間を高速化することも可能である。【０２８２】
これまでの説明では行列２次元であったが、行列にページの概念を含め、ｎ＋ｍ＋oのデータ転送と、ｎ×ｍ×oの演算器による３次元構成のプロセッサとすることも可能である。【０２８３】
以上のように目的や性能を勘案し最適なチップを設計すればよい、小型処理容量のものであればＦＰＧＡでも利用可能である。
【産業上の利用可能性】
【０２８４】
最近のコンピューティングはＣＰＵ内部に多くのキャッシュメモリを内蔵させ、そのキャッシュメモリを有効に利用することでシステム全体の効率改善を図ることが鍵になっているがこれまでのアーキテクチャの改良では自ら限界がある。【０２８５】
本発明はコンピューティングの範囲を比較演算と限定することにより従来技術をいたずらに引きずり廻すことなく、メモリとプロセッサが最も効率的な演算アーキテクチャを実現したものである。【０２８６】
現在データの比較演算は極一部の分野で利用させているに過ぎない、それは現在のコンピュータアーキテクチャでは計算量が多く多大な待ち時間が発生することやその時間を短縮するためのプログラム開発に大きな負担がかかるからである。【０２８７】
このプロセッサ技術が利用できることによる潜在ニーズを含めたニーズを取りまとめする。【０２８８】
網羅組合せ的な比較演算の顕在、潜在ニーズ
（１）組合せ問題
（ア）遺伝子のような大量のデータの中から特徴的なデータを探したい
（イ）大きなデータ集団から同姓同名のようなまれなデータを探したい
（ウ）名寄せ、重複などデータの仕分け、クラス分けを行いたい
（エ）大きなデータ集団同士を比較して同じまたは類似、共通するデータを高速に探したい
（オ）気象解析や株価解析のように多変数（多次元）データのデータマイニングを行いたい
（カ）通信ルータやＳＮＳやＷＥＢ検索などのように大量のデータに大量のアクセスが発生する場合でもリアルタイムにデータを探したい
（２）クエリが決められない
（ア）データマイニングなど、初期の段階では何を探したいかが分からない
（イ）碁や将棋のように選択肢が無数にあり、どれが最適クエリか不明である
（３）前処理や複雑な処理を不要にしたい
（ア）インデックスを作成するには多大な前処理が必要
（イ）ＡＩ手法の網羅的クラス分類やクラスタリングは前処理や学習が必要である
（ウ）複雑なソフトウエアアルゴリズムは専門家以外困難で一般ユーザは利用できない
以上のように網羅組合せ的な比較演算は様々な分野で大きな潜在需要が期待されＩＴ産業界のみならずあらゆる産業、パーソナルユーズまで幅広く利用できる。
【符号の説明】
【０２８９】
１０１…データ比較演算プロセッサ
１０２…データ入力
１０３…行データ入力線
１０４…行データ
１０５…行データアドレス
１０６…行データバッファ
１０７…行データ演算データ線
１０８…一方の列データ入力線
１０９…列データ
１１２…列データ演算データ線
１１３…演算器
１１４…比較演算器
１１４…Ｋ比較演算器
１１４…比較演算回路
１１６…演算器条件
１１９…マッチアドレス
１２０…演算結果出力
１２１…行列一致判定回路
１２２…演算器
１２７…一時記憶レジスタ
１２８…一致回数カウンタ
１２９…優先順序判定回路
１３０…マッチアドレス出力
１４１…アドレス選択線
１４２…データ線
１４５、１４６…スイッチ
１４７…メモリセルアドレス選択線
１４８…メモリセルデータ線
１４９…メモリセル
１５１…全網羅組合せ的演算空間
１５２…バッチ比較演算空間
１５３…バッチメモリ空間
【図１】
2018097317.tif 000003
【図２】
2018097317.tif 000004
【図３】
2018097317.tif 000005
【図４】
2018097317.tif 000006
【図５】
2018097317.tif 000007
【図６】
2018097317.tif 000008
【図７】
2018097317.tif 000009
【手続補正書】
【提出日】平成30年7月23日(2018.7.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ｎ個の行データメモリ及びｍ個の列データメモリに、合計ｎ個＋ｍ個のデータを記憶できるメモリ群と、前記ｎ個の行データメモリ及びｍ個の列データメモリから網羅状に布線されたデータ線のクロスポイントに合計ｎ×ｍ個の演算器を設け、
前記ｎ個の行データメモリ及びｍ個の列データメモリから前記網羅状に布線されたデータ線に、前記ｎ個＋ｍ個のデータを並列に送出することにより、前記ｎ×ｍ個の演算器は前記送出されたデータを行列網羅組合せ的に読み込み、行列網羅組合せ的に並列比較演算し、その比較演算結果を出力する手段を具備することを特徴とするデータ比較演算プロセッサ。
【請求項２】
前記網状に布線されたデータ線は多ビットデータ線で、前記演算器はＡＬＵ（Arithmetic and Logic Unit）で行列比較演算を並列に実行することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項３】
前記網状に布線されたデータ線は１ビットデータ線で、前記演算器は比較１ｂｉｔ演算器で行列比較演算を並列に実行することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項４】
前記メモリ群は１バッチｎ×ｍの網羅組合せ演算に必要なデータのＫ倍の行列範囲の網羅組合せデータを記憶するメモリを具備し、前記ｎ×ｍ個の演算器は（Ｋ×ｎ）×（Ｋ×ｍ）の網羅組合せ演算を連続して実行する機能を具備することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項５】
前記ｎ個＋ｍ個のデータを外部から取り込み記憶する際、データの行列変換を行い前記メモリ群に記憶することを特徴とする請求項１記載のデータ比較演算プロセッサ。
【請求項６】
ｎ個の行データメモリ及びｍ個の列データメモリに加え、ｏ個のページデータメモリを有し、合計ｎ個＋ｍ個＋o個のデータを記憶できるメモリ群と、前記ｎ個の行データメモリ、ｍ個の列データメモリ及びｏ個のページデータメモリから網羅状に布線されたデータ線のクロスポイントにｎ×ｍ×o個の演算器を設けたことを特徴とする、請求項１記載のデータ比較演算プロセッサ。
【請求項７】
請求項１記載のデータ比較演算プロセッサを含んだ装置。
【国際調査報告】
2018097317.tif 000010
2018097317.tif 000011