(57)【要約】      （修正有）【課題】並列演算の回路スペースを削減し、消費電力を削減するメモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法を提供する。【解決手段】データテーブルの下段に設けられた１ｂｉｔ演算器１０５は、選択指定１１０されたアドレス１０４の記憶セル１０２のｂｉｔセルのデータ毎に対し、論理記憶１１６、論理積１１２、論理和１１３、論理否定（ＮＯＴ）１１４、排他論理和１１５、全加算２１１、その他のオプション機能、ならびにその組合せの演算器が指定した演算条件１１１で全レコード並列に演算が実行できる構成となっている。またこの１ｂｉｔ演算器１０５の演算結果を出力するため優先順出力回路（プライオリティアドレスエンコーダ出力回路）２１４などの演算結果出力１０６機能が備えられている。【選択図】図２
2018139017.tif 000002
【特許請求の範囲】
【請求項１】
外部入力機能から入力されるデータを記憶可能な多数ｂｉｔのメモリセルと、前記メモリセルのデータを１ｂｉｔ毎に読み込み演算を実行し、その演算結果を１ｂｉｔ毎に前記メモリセルに書き込み可能とする演算機能と、を１レコードとし
前記レコードを多数並列に配列し、全レコードの前記多数ｂｉｔのそれぞれの前記メモリセルを並列にアドレス選択可能にすると共に、演算条件を並列に指定する演算条件指定機能と、
前記レコードの前記演算結果を外部に出力する外部出力機能と、
を具備することを特徴とするメモリ型プロセッサ。
【請求項２】
前記演算機能は、
（４）論理積演算
（５）論理和演算と
（６）論理否定演算
（４）排他論理和演算
（５）半加算演算
（６）全加算演算
（７）演算記憶
（８）以上（１）から（７）の組み合わせ
以上の何れかの演算を実行することを特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項３】
前記外部入力機能は、
外部からの前記演算対象のデータを行列変換し前記演算対象のデータを書き込みする機能を具備すること特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項４】
前記外部出力機能は、
（５）前記レコードの番地を優先順序順に出力
（６）前記レコードを幾つかに分割して、分割したレコード毎に優先順序順に出力
（７）何れかの前記レコードに演算結果があるか否かを出力
（８）前記全レコードを並列に出力
（５）以上（１）から（４）の組み合わせの出力
以上の何れかの出力機能を具備することを特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項５】
前記演算対象のデータを他の前記レコードへ転送する機能を具備することを特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項６】
ＣＰＵならびにその他の機能の回路に組み込みされたことを特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項７】
ＦＰＧＡで実装したことを特徴とする、請求項１記載のメモリ型プロセッサ。
【請求項８】
請求項１記載のメモリ型プロセッサを含んだ装置。
【請求項９】
請求項１記載のメモリ型プロセッサの使用方法で
このメモリに前記演算対象のデータと、演算結果を一時退避するためのワークエリアデータと、の双方を前記アドレスに割り付けし、双方のデータを用いて１ｂｉｔ演算機能を繰り返すことで任意のデータ幅のデータの、
（１）前記演算対象のデータの全レコード並列インデックス検索演算
（２）前記演算対象のデータの全レコード並列比較（一致、大小、範囲、最大・最小）演算
（３）前記演算対象のデータの全レコード並列カウント（アップ、ダウン）演算
（４）前記演算対象のデータの全レコード並列加減算演算
（５）前記演算対象のデータの全レコード並列乗除算演算
（６）前記演算対象のデータの全レコード並列平文の暗号化と、暗号文の平文復号演算
（７）前記演算対象のデータの全レコード並列行列変換演算
（８）前記演算対象のデータの全レコード並列データ作成演算
（９）以上の組みわせ演算
以上の何れかの演算をすることを特徴とする、メモリ型プロセッサの使用方法。
【請求項１０】
請求項１記載のメモリ型プロセッサの使用方法で
前記演算結果に勝ち残りの前記レコードがあるかないかを判定し、その判定結果をもとに演算条件式を与えることを特徴とする、メモリ型プロセッサの使用方法。
【請求項１１】
請求項１記載のメモリ型プロセッサの使用方法で
前記多数配列されたレコードの中から複数レコードのメモリセルのデータを一組のデータと割り付けして使用することを特徴とする、メモリ型プロセッサの使用方法。
【請求項１２】
前記メモリ型プロセッサを
（１）直列、並列、もしくは直並列に接続
（２）階層的接続
以上の何れか、もしくは双方の接続で使用することを特徴とする、メモリ型プロセッサの使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法に関する。
【背景技術】
【０００２】
現在のコンピュータはＣＰＵやＧＰＵなど逐次処理型プロセッサが情報処理の全てをこなすものであるので、ＣＰＵはＣＰＵが得意な処理も苦手な処理も一手に引き受けざるを得ない。
ビックデータの活用を本質的に考える上で、あらためて現在のノイマン型コンピュータの２つの大きな課題を明らかにしておく必要がある。
【０００３】
第１の課題はノイマンバスボトルネックである。
ＣＰＵやＧＰＵにとってメモリ上のデータは裏返しになったトランプのような存在であり、一枚一枚（１アドレス、１アドレス）ごとにめくって（アクセス）して情報を探す以外にない。
ＣＰＵやＧＰＵがメモリ上の情報を逐次検索し特定の情報を見つけ出すような情報処理を行った場合、極めて多くの情報処理量となり待ち時間が多くなる。
情報探し処理は、メモリ上の情報を何度も繰り返しアクセスする必要があるので他の情報処理に比較してバスボトルネックの影響が大きい。
これがノイマン型コンピュータの宿命、情報探しバスボトルネックである。
【０００４】
従って、特定の情報を見つけ出すような情報処理をする場合ＣＰＵやＧＰＵの負担、情報処理の負担を軽減するために様々な利用技術（ソフトウエアアルゴリズム）を考案し利用する以外方法はない。
情報を探し出すために利用される代表的なアルゴリズムとして、ハッシュテーブル、インデックス、木構造、バイナリサーチ、クラスタリング、これらの組合せなど無数に存在する。
これらのアルゴリズムはアルゴリズム毎にメタデータ（構造化データ）を必要とする。
これらの利用技術（ソフトウエアアルゴリズムとメタデータ）は、ＣＰＵの負担、情報処理の回数を軽減する手段、宿命を持って生まれたＣＰＵやＧＰＵを活かすための利用技術に他ならない。
【０００５】
つまり以上のようなアルゴリズムは、いずれもメモリ上のどこにどのような情報があるのかを事前に整理し、ＣＰＵが情報を探しやすいよう見出しやそのルートを作成、小さい順から順序よくデータを並べるなどの方法である。
この様なアルゴリズムによって検索時のＣＰＵやＧＰＵの負担は解消されるものの、前処理や後処理で複雑な情報処理を余儀なくされている、例えばデータの修正、挿入や削除に代表されるように情報データが修正、追加または削除される度に利用するアルゴリズムで作成されたメタデータの配列の並べ替えや、順番の変更など、これらのアルゴリズムのための前処理や後処理の情報処理が必要になっている。
【０００６】
以上の様なソフトウエアアルゴリズムとメタデータは、データベースの種類や規模によって適切なものを幾つか選択し最適化システムを構築する必要があるので、情報の検索、照合、認証など情報を探す処理を含む情報処理は知識と経験を持った専門家以外は手が出せないという大きな問題を抱えている。
【０００７】
第２の課題はＣＰＵやＧＰＵの演算器である。
ＣＰＵやＧＰＵの心臓部であるＡＬＵ（Arithmetic and Logic Unit）は四則（算術）演算とブール代数に基づく論理（ブール）演算の双方を演算するための機能を持っている、ＡＬＵは一定のデータの幅（たとえば３２bit,や６４ｂｉｔを）並列に演算する必要があるので、１ユニットの回路規模が大きくならざるを得ない。
従って並列度を上げるとチップサイズが大きくなり、消費電力も膨大になる。
微細化技術の限界が間近に近づいている現在に至ってもこの問題の解決策は見出されていない。
【０００８】
本発明は一般のメモリに極めて少量（省スペース）の回路を組み込むだけで、メモリ内で目的の情報を探し出す処理や、比較演算、カウント演算、四則演算など多様な演算を高速に実現する、１ユニットの回路規模が極めて小さい並列演算素子を備えた新しい考え方の情報処理メモリ、つまりメモリ型のプロセッサを実現することが目的である。
【０００９】
本願発明者による発明の特許第４５８８１１４号  情報絞り込み検出機能を備えたメモリはパターンマッチなど論理積演算が得意なメモリである。
またPCT/ＪＰ２０１３／０５９２６０号  集合演算機能を備えたメモリは以上の情報絞り込み検出機能を備えたメモリの概念を拡大発展させて、論理積演算、論理和演算、論理否定演算などを自由に行うことができるメモリである。
【００１０】
特願平１０−２３２５３１、演算機能付きメモリは図に示されているようにブロック単位に演算回路を設けチップ効率の向上を目指すものである。
【００１１】
特願昭６３−１２８８４９、学習型文字検索装置と同装置の制御方式は、テキストデータの検索を実現するものであり、本願特許の情報処理と似た構成であるが、情報処理の内容はテキストのインデックス検索（あり／なし）のみに限定されており、本願発明のように、データ値の様々な演算を伴う高度で多目的な情報処理を目的としたものではない。
また学習型文字検索装置と同装置の制御方式文献の図２に示されるように演算器はＡＬＵを用いたものであり、本例のようにＡＬＵを単純に並べただけの構成では並列度が上がらず、発明の効果で記述されるように「パーソナルユーズでかなりの効果が期待できる程度」となっているものと推定出来る。
重要なことは並列度の向上と、演算内容の高度化と、相反する課題を克服することである。
【００１２】
また本願発明者による発明の特願特願２０１３−２６４７６３、情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法は演算回路が具体的に示されていなかった、また演算の内容もインデックス検索やデータ値の一致や範囲の検索に限定されたものであった。
本願発明では単に検索など情報を探す処理にとどまることなく多様なデータの演算を超並列で実現するに最も相応しい演算回路を用いたメモリ型プロセッサを提供することである。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第４５８８１１４号
【特許文献２】PCT/ＪＰ２０１３／０５９２６０
【特許文献３】特願平１０−２３２５３１
【特許文献４】特願２０１３−２６４７６３
【特許文献５】特願昭６３−１２８８４９
【発明の概要】
【発明が解決しようとする課題】
【００１４】
この発明は、ノイマンバスボトルネックの影響が一番問題になる情報の検索や照合などの課題を抜本的に解消するとともに、並列演算に適した演算器、とその使い方を提案することで、これまでのＣＰＵやＧＰＵなど逐次処理型プロセッサが中心になった情報処理の課題の多くを抜本的に解消しようとするものである。
つまり、大量のデータの演算をＣＰＵやＧＰＵのみに任せるのではなく、メモリ内で実現可能な演算はメモリに演算させることにより、ＣＰＵやＧＰＵの負担が大きく、複雑で、専門家以外手が出せない情報処理を簡素化すると共に、消費電力を削減出来る、ビッグデータ社会の情報処理に最適な全く新しい情報処理の考え方に基づく情報演算機能をもったメモリ素子を実現することである。
【００１５】
具体的にはメモリセルとのコンビネーションで多様な情報処理が可能な１ｂｉｔ演算器（論理演算器と四則演算器）で並列演算の回路スペースを削減し、消費電力を削減する。
【課題を解決するための手段】
【００１６】
請求項１では
外部入力機能から入力されるデータを記憶可能な多数ｂｉｔのメモリセルと、前記メモリセルのデータを１ｂｉｔセル毎に読み込み演算を実行し、その演算結果を１ｂｉｔ毎に前記メモリセルに書き込み可能とする１ｂｉｔ演算機能と、を１レコードとし
前記レコードを多数並列に配列し、全レコードの前記多数ｂｉｔのそれぞれの前記メモリセルを並列にアドレス選択可能にすると共に、演算条件を並列に指定する演算条件指定機能と、
前記レコードの前記演算結果を外部に出力する外部出力機能と、
を具備することを特徴とする。
【００１７】
請求項２では
前記１ｂｉｔ演算機能は、
（１）論理積演算
（２）論理和演算と
（３）論理否定演算
（４）排他論理和演算
（５）半加算演算
（６）全加算演算
（７）演算記憶
（８）以上（１）から（７）の組み合わせ
以上の何れかの演算を実行することを特徴とする。
【００１８】
請求項３では
前記外部入力機能は、
外部からの前記演算対象のデータを行列変換し前記演算対象のデータを書き込みする機能を具備すること特徴とする。
【００１９】
請求項４では
前記外部出力機能は、
（１）前記レコードの番地を優先順序順に出力
（２）前記レコードを幾つかに分割して、分割したレコード毎に優先順序順に出力
（３）何れかの前記レコードに演算結果があるか否かを出力
（４）前記全レコードを並列に出力
（５）以上（１）から（４）の組み合わせの出力
以上の何れかの出力機能を具備することを特徴とする。
【００２０】
請求項５では
前記演算対象のデータを他の前記レコードへ転送する機能を具備することを特徴とする。
【００２１】
請求項６では
ＣＰＵならびにその他の機能の回路に組み込みされたことを特徴とする。
【００２２】
請求項７では
ＦＰＧＡで実装したことを特徴とする。
【００２３】
請求項８では
請求項１記載のメモリ型プロセッサを含んだ装置。
【００２４】
請求項９では
請求項１記載のメモリ型プロセッサの使用方法で
このメモリに前記演算対象のデータと、演算結果を一時退避するためのワークエリアデータと、の双方を前記アドレスに割り付けし、双方のデータを用いて１ｂｉｔ演算機能を繰り返すことで任意のデータ幅のデータの、
（１）前記演算対象のデータの全レコード並列インデックス検索演算
（２）前記演算対象のデータの全レコード並列比較（一致、大小、範囲、最大・最小）演算
（３）前記演算対象のデータの全レコード並列カウント（アップ、ダウン）演算
（４）前記演算対象のデータの全レコード並列加減算演算
（５）前記演算対象のデータの全レコード並列乗除算演算
（６）前記演算対象のデータの全レコード並列平文の暗号化と、暗号文の平文復号演算
（７）前記演算対象のデータの全レコード並列行列変換演算
（８）前記演算対象のデータの全レコード並列データ作成演算
（９）以上の組みわせ演算
以上の何れかの演算をすることを特徴とする。
【００２５】
請求項１０では
請求項１記載のメモリ型プロセッサの使用方法で
前記演算結果に勝ち残りの前記レコードがあるかないかを判定し、その判定結果をもとに演算条件式を与えることを特徴とする。
【００２６】
請求項１１では
請求項１記載のメモリ型プロセッサの使用方法で
前記多数配列されたレコードの中から複数レコードのメモリセルのデータを一組のデータと割り付けして使用することを特徴とする。
【００２７】
請求項１２では
前記メモリ型プロセッサを
（１）直列、並列、もしくは直並列に接続
（２）階層的接続
以上の何れか、もしくは双方の接続で使用することを特徴とする。
【図面の簡単な説明】
【００２８】
【図１】図１は、一般メモリの構成例である。
【図２】図２は、メモリ型プロセッサの構成例である。
【図３】図３は、メモリ型プロセッサの１ｂｉｔ論理（ブール）演算器の回路構成（例）である。（実施例１）
【図４】図４は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのインデックス検索演算方法（例）の説明図である。（実施例２）
【図５】図５は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータ比較演算式（例）の説明図である。
【図６】図６は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータ一致比較演算（一致検索）方法（例）の説明図である。（実施例３）
【図７】図７は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータ大小比較演算（以上、未満検索）方法（例）の説明図である。（実施例４）
【図８】図８は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの最大・最小比較演算（最大・最小検索）方法（例）の説明図である。（実施例５）
【図９】図９は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータカウント演算方法のアドレス割り付け（例）の説明図である。
【図１０】図１０は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの加算カウント演算方法（例）の説明図である。（実施例６）
【図１１】図１１は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの減算カウント演算方法（例）の説明図である。（実施例７）
【図１２】図１２は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの全加算演算方法（例）の説明図である。（実施例８）
【図１３】図１３は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの乗算演算方法（例）の説明図である。（実施例９）
【図１４】図１４は、メモリ型プロセッサの１ｂｉｔ四則演算器の回路構成（例）である。（実施例１０）
【図１５】図１５は、メモリ型プロセッサによる多ビット並列四則演算方法（例）の説明図である。（実施例１１）
【図１６】図１６は、メモリ型プロセッサのデータシフト機能を備えた演算器の回路構成（例）である。（実施例１２）
【図１７】図１７は、メモリ型プロセッサによるデータの行列変換方法（例）の説明図（１）である。（実施例１３）
【図１８】図１８は、メモリ型プロセッサによるデータの行列変換方法（例）の説明図（２）である。
【図１９】図１９は、メモリ型プロセッサの直並列接続の例である。
【図２０】図２０は、メモリ型プロセッサの階層接続の例である。
【図２１】図２１は、メモリ型プロセッサによる特徴データベースの例Ａである。（実施例１４）
【図２２】図２２は、メモリ型プロセッサによる特徴データベースの例Ｂである。（実施例１５）
【図２３】図２３は、メモリ型プロセッサによる並列データ作成方法（例）の説明図である。（実施例１６）
【発明を実施するための形態】
【００２９】
図１は、一般メモリの構成図である。
図１のメモリ１００はアドレスデコーダやデータバスなどの機能回路は省略されており、このメモリに自由に情報データが書き込み読み出し可能な構成で、１ワードがｎ ｂｉｔの幅１０３で、Ｎのアドレス１０４を持つ、Ｎ×ｎ ｂｉｔセルからなる記憶セル１０２からなり立っており、一般的にはアドレスデコーダなどの手段で外部から１からＮまでのアドレスを選択指定可能になっている。
現在のＣＰＵによる情報処理は、メモリ１００のデータ幅１０３が８ｂｉｔ、１６ｂｉｔ、３２ｂｉｔなど一定のデータ幅で、情報データの検索の場合アドレス数が１Ｍアドレスや１Ｇアドレスなど与えられたメモリのアドレス空間をＣＰＵが順次アドレスをアクセスしデータを読み込み逐次処理を行って行くものである。
この発明の情報処理は以上の一般のメモリ構造やデータベーステーブル構造のデータの幅とアドレスの概念を逆転させる考えでなり立っており、また１ｂｉｔ単位の並列演算を基本とするものである。
【００３０】
図２は、メモリ型プロセッサの構成例であり、外部入力機能から入力されるデータを記憶可能な多数ｂｉｔのメモリセルと、前記メモリセルのデータを１ｂｉｔセル毎に読み込み演算を実行し、その演算結果を１ｂｉｔ毎に前記メモリセルに書き込み可能とする１ｂｉｔ演算機能と、を１レコードとし前記レコードを多数並列に配列し、全レコードの前記多数ｂｉｔのそれぞれの前記メモリセルを並列にアドレス選択可能にすると共に、演算条件を並列に指定する演算条件指定機能と、前記レコードの前記演算結果を外部に出力する外部出力機能と、を具備することを特徴とするメモリ型プロセッサである、以下に詳細を説明する。
【００３１】
図１同様図２においてもアドレスデコーダやデータバスなどの機能回路は省略されており、このメモリ型プロセッサ１０１の記憶セル１０２に自由に情報データが書き込み読み出し可能な構成になっている。
【００３２】
通常のメモリの１ワードｎ ｂｉｔの幅１０３は、本メモリ型プロセッサ１０１の場合データベースのレコード数（ｎ）に相当し、１レコードのデータが縦列に配列され、アドレス１０４のＮは１レコードのフィールドデータ長に相当する構造と考えると理解しやすい。
つまり、このメモリ型プロセッサ１０１のメモリ部（データベース部）は、１レコードがＮｂｉｔのフィールデータ長でｎレコードのデータテーブルとなっている。
【００３３】
データテーブルの下段に設けられた１ｂｉｔ演算器１０５は、選択指定１１０されたアドレス１０４の記憶セル１０２のｂｉｔセルのデータ毎に対し、論理記憶１１６、論理積１１２、論理和１１３、論理否定（ＮＯＴ）１１４、排他論理和１１５、全加算２１１、その他のオプション機能、ならびにその組合せの演算器が指定した演算条件１１１で全レコード並列に演算が実行できる構成となっている。
詳細は後述する。
【００３４】
またこの１ｂｉｔ演算器１０５の演算結果を出力するため優先順出力回路（プライオリティアドレスエンコーダ出力回路）２１４などの演算結果出力１０６機能が備えられている。
後述するがこのメモリの大半はメモリセルそのものであり、そのごく一部のみが１ｂｉｔ演算器１０５ならびに演算結果出力１０６機能であるので、一般メモリに省スペースでこれらの機能を組み込みすることが可能でありデータベースに最適な大容量のメモリとすることが出来る。
【００３５】
詳しくは後述するが１ｂｉｔ演算機能１０５は大きく分けて、１ｂｉｔ論理（ブール）演算機能１２３、ならびに１ｂｉｔ四則（数値）演算機能１２４の二種類がある。
論理演算は、結果が真か偽か、０か１の１ｂｉｔでよいのに対し、四則演算は、演算結果と桁上げの２ｂｉｔが必要である。
最初に１ｂｉｔ論理（ブール）演算機能１２３について説明を行う。
【実施例１】
【００３６】
図３はメモリ型プロセッサの１ｂｉｔ論理（ブール）演算機能の回路構成の例であり、メモリ型プロセッサ１０１のアドレス１０４によって選択された１ｂｉｔのメモリ記憶セル１０２のデータを演算する１ｂｉｔ論理（ブール）演算器１２３の回路と演算の内容を説明する。
【００３７】
本例ではスイッチ２０１を１のポジションに切り替えると、１ｂｉｔの論理（ブール）演算１２３が実現出来る構成となっている。
図に示す通り、回路構成は論理積１１２、論理和１１３、排他論理和１１５、論理否定１１４、フリップフロップ（ＦＦ）２０２、選択回路２０３で構成される極めて単純な構成である。
排他論理和１１５は、論理積１１２、論理和１１３、論理否定１１４の組合せで演算できるので、必ずしも必要ではないが、後述する四則演算など利用頻度が高い場合には組み込んでおくとよい。
【００３８】
また排他論理和１１５は暗号化に利用することができる。
平文データを暗号化する場合、暗号データとの排他論理和演算を行うことにより平文データは暗号化され、暗号化された暗号文データは、暗号データと排他論理和１１５演算することにより平文化可能であることは周知のことである。
従ってこの１ｂｉｔブール演算器１０５の排他論理和１１５は、大量の平文データを超高速に暗号化、復号化することができる。
【００３９】
この回路はアドレス１０４により選択されたメモリ記憶セル１０２からの１ｂｉｔのデータは、選択回路２０３で正論理、または負論理（論理否定１１４）が選択可能になっている。
同様にフリップフロップ２０２の結果出力２０５も正論理、または負論理（論理否定１１４）が選択可能な構成となっている。
【００４０】
以下に演算可能な内容を説明する。
第１にメモリから読み出された正論理もしくは負論理のデータをメモリデータ２０４として、フリップフロップ２０２へ直接代入（記憶させる）することが出来る。
第２に演算結果であるフリップフロップ２０２の正論理もしくは負論理の結果出力２０５を、再度フリップフロップ２０２へ直接代入（記憶させる）することが出来る。
【００４１】
第３に正論理もしくは負論理のメモリデータ２０４と演算結果１０７であるフリップフロップ２０２の正論理もしくは負論理の結果出力２０５を、論理積１１２．論理和１１３、排他論理和１１５のいずれかの演算を実行し、その結果をフリップフロップ２０２へ代入（記憶させる）することが出来る。
以上の演算を全レコード並列に指定できる構成、演算条件指定機能１１１になっている。
【００４２】
また、この１ｂｉｔ論理（ブール）演算結果は、スイッチ２０１を３のポジションにすることによって、アドレス１０４により選択された記憶セル１０２に記憶することが出来る構成である。
【００４３】
１ｂｉｔ論理演算結果は、通常勝ち残りレコードとなりレコード数が大幅に絞り込まれるのでプライオリティアドレスエンコーダ出力回路などの演算結果出力１０６機能から１レコード毎に、レコードの番地を外部に出力する方式とすると、メモリ型プロセッサ１０１チップの出力ピンのピン数を最小限のものとすることが出来る。
詳細は後述する。
【００４４】
背景技術で述べた通りＡＬＵ２１０は、たとえば３２ｂｉｔデータ２組を一括して演算する必要があるので１ユニットの回路の規模が大規模にならざるを得ないが、この構成の１ｂｉｔ論理（ブール）演算器１０５は１ユニットの回路規模が１５０トランジスタ程度、演算結果出力１０６を含めても数百トランジスタ程度で実現できるので、並列処理の演算ユニットとして最適である。
後述する、１ｂｉｔ四則（数値）演算機能１２４も極めて省スペースな演算回路である。
【００４５】
以上の省スペースな演算機能でも超高速でしかも多様な演算が実現出来ることを順次以下に紹介する。
【実施例２】
【００４６】
図４は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのインデックス検索演算方法の例である。
インデックス検索演算はインターネット検索、特許検索、全文検索など様々な用途がある。
通常文字列情報は、キーワードだけの検索とキーワードと演算式のその双方を条件指定する方法の２通りがある。
【００４７】
本例では特許文献の検索のように例えば「情報処理」、「情報検索」、「ＣＰＵ」などのキーインデックスと論理積,１１２、論理和１１３、論理否定１１４の演算を可能にした検索で、キーとなる語彙と演算式の双方を与えることにより、レコードの絞り込みが行われ、これらのキーワードと論理演算条件に合致する文献（レコード）があるかないか、あればどの文献（レコード）にあるかを判定するインデックス検索を対象とする。
【００４８】
以下にこのメモリ型プロセッサ１０１を用いて文献検索などインデックス検索演算に利用した例を説明する。
【００４９】
本例の場合、１からＮまでのアドレスには、「情報処理」、「情報検索」、「特許」、「ＣＰＵ」などの語彙をインデックスとして割り付けし、１レコードを１文献に対応させる。
つまり１つの文献中に、「情報処理」、「情報検索」、「特許」、「ＣＰＵ」などの文字が１つでもあれば、対応するメモリセル（フィールド）に「１」を書き込んで、文献毎に登録をしておく。
（「０」は省略されている、以降同様）。
【００５０】
従って本例の場合、Ｎ個の語彙（インデックス）と、ｎ冊の文献（ｎレコード）がデータベースとして登録されていることになる。
【００５１】
本例ではアドレス１８が「情報処理」、アドレス５が「情報検索」、アドレス２４が「特許」、アドレス１０が「ＣＰＵ」としてインデックス語彙（キー語彙）が割り付けられており、演算条件は（「情報処理」＋「情報検索」の語彙を含む）＊（「特許」の語彙を含まない文献）＊（「ＣＰＵ」の語彙を含む文献）とする場合で説明する。
【００５２】
図４の下段に以上のキーワード検索の演算方法が示されている。
アドレス１８の「情報処理」とアドレス５の「情報検索」の論理和（ＯＲ）演算の結果、双方の語彙が含まれる文献のレコードは３、４、５、１３、１４、１６、１９、２１、２５である。
次に、アドレス２４の「特許」の語彙が含まれない文献は論理否定演算の結果、４、８．１１、１６、２２、２５である。
先ほどの演算結果、文献レコード３、４、５、１３、１４、１６、１９、２１、２５と、この論理否定（NOT）演算結果の論理積（ＡＮＤ）演算を行った結果の勝ち残り文献は４、１６、２５となる。
【００５３】
最後にアドレス１０の「ＣＰＵ」を含む文献レコード３、７、９、１２、１５、１６、２２と直前の勝ち残り文献との論理積（ＡＮＤ）演算を行うことにより最終勝ち残り文献１０７はレコード１６になっている。
【００５４】
１つのレジスタで構成される１ｂｉｔ演算器で様々な演算を実施する場合、（  ）内の演算の結果など中間の演算結果を一時退避して記憶する必要がある場合、例えばアドレスＮをテンポラリな一時バッファー２０７として利用することにより実現することが可能になる。
【００５５】
つまり、文献１６は（「情報処理」＋「情報検索」いずれかの語彙を含む文献）＊（特許の語彙を含まない文献）＊（ＣＰＵの語彙を含む文献）である。
以上の結果を、プライオリティアドレスエンコーダ出力回路などの演算結果出力１０６から順次読み出せばよい。
【００５６】
ＣＰＵやＧＰＵは、このメモリ型プロセッサ１０１にアドレス選択指定１１０と、演算条件指定１１１を行うだけで、全メモリ空間の情報を全く探しまわることなしに、目的の情報をこのメモリ型プロセッサ１０１から検出することが可能になる。
【００５７】
以上の説明は文献検索演算の例であったが、レコードをＵＲＬに置き換えすればインターネット検索用のデータベースに利用可能である。
【００５８】
以上の文献検索は、全てが１ｂｉｔからなるデータ有り無しのインデックスデータであったが、データが値で記憶（登録）されたデータの情報処理について説明する。
【００５９】
図５は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータ比較演算式の例の説明図である。
「/」の記号は論理否定１１４演算、「＊」は論理積１１２演算、「＋」は論理和１１３演算を表している。
本例は２進数、４ｂｉｔの場合のデータの比較演算つまり、一致、大小、範囲演算を行う場合の演算式を示したものである。
図示するように、１０進数は２進数に変換され、何れの場合も、ＭＳＢである「８」からＬＳＢ
である「１」まで割り付けされた「８」、「４」、「２」、「１」の各ｂｉｔのアドレス１０４を、比較する演算条件に適合するように選択し、論理否定１１４、論理積１１２、論理和１１３することで、一致、以上、未満のデータを検出することが可能であることを示している。
本表を参考にすれば演算条件を以下や範囲にすることも、多数ｂｉｔデータの比較の演算条件式も容易に記述することができる。
【００６０】
先にも説明したが、これらの演算を実施する上で、中間の演算結果を一時退避して記憶する必要がある場合、例えばアドレスＮをテンポラリな一時演算バッファー２０７として利用する。
このことは以下の何れの演算にも応用することが出来る。
【実施例３】
【００６１】
図６は、メモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器によるデータ一致比較演算方法の例である。
本例は１ｂｉｔ論理（ブール）演算機能を備えたメモリによる２進数、８ｂｉｔのデータ一致演算の例である。
【００６２】
例えば、アドレス１０を最上位ｂｉｔ（MＳＢ）「１２８」としてアドレス１７を最下位ｂｉｔ（LＳＢ）「１」とする８ｂｉｔのデータをフィールドに割りつけた場合を考える。
８ｂｉｔのデータであるので、２５６通りのデータを記憶することが可能であり、アドレス１０からアドレス１７の８つのアドレスを適切に選択することにより、２５６通りのデータの中から完全一致のデータを検出してそのレコードの番地を出力することが可能になる。
【００６３】
例えば、１０進データ値「１０」＝２進数「００００１０１０」を完全一致で探す場合、アドレス１０を最上位ｂｉｔ（MＳＢ）「１２８」としてアドレス１７を最下位ｂｉｔ（LＳＢ）「１」まで８回演算し「００００１０１０」であるデータを検出すればよい。
【００６４】
図の下方に示す通り、本例では、ＭＳＢのアドレス１０から「１２８」、「６４」、「３２」、「１６」、「８」、「４」、「２」、「１」の順に演算を行っている。
この際、２進数「００００１０１０」の「０」の桁の場合は論理否定、「１」の桁の場合は正論理で、８回の論理積演算（勝ち抜き演算）を繰り返し勝ち残った１３および２５の２つのレコードが１０進データ値「１０」になっている。
以上のような１ｂｉｔ演算を繰り返すことにより任意の値のデータ値を検出することが出来る。
【実施例４】
【００６５】
図７は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサのデータ大小比較演算方法の例である。
これまでの説明は、１０進データ値「１０」の完全一致を求めるものであったが、１０進データ値「１０」以上を探す場合、図に示す通りＭＳＢのアドレス１０からアドレス１３まで４回アドレスの論理和を取ることにより１０進データ値が「１６」以上のレコードをまとめて検出することが出来る。
【００６６】
更に下位４ｂｉｔのアドレスの１５と１６の論理和と、アドレス１４を論理積演算することにより１０進データ値「１０」以上「１６」未満を求め、先ほどの１０進データ値が「１６」以上のレコードと論理和をとることにより、１０進データ値「１０」以上のデータ値のレコードを検出することが出来る。
更に図に示す通り１０進データ「１０」以上のデータ値のレコードを否定すれば「１０」未満つまり「９」以下のレコードが検出される。
【００６７】
その他のデータ値や範囲検索も以上と同様な１ｂｉｔ演算を繰り返し行えばよい。
以上の演算は桁数以内の演算ステップ数で全レコードを並列に処理する結果になっている、データ値が１６ｂｉｔであれば以上の２倍、３２ｂｉｔになれば４倍になるだけで完全一致から範囲検索演算を実現することが出来る。
また、データ幅を８ｂｉｔから９ｂｉｔや１０ｂｉｔに増やす場合でも、極めて単純であり、必ずしもアドレスが連続されている必要もなくデータ幅を１ｂｉｔ増やし１７ｂｉｔや３３ｂｉｔにすることも違和感なく実現出来る。
【００６８】
つまりこのメモリ型プロセッサは、ある／なしの１ｂｉｔデータから２５６ｂｉｔ幅など、任意のデータ幅のデータをレコード内のフィールドデータとして割付することができる。
例えば個人情報などの場合、「氏名」、「住所」、「勤務先」、「生年月日」、「身長」、「体重」、「性別」など、データ幅は様々であり、必要最低限のデータ幅を割付し、必要なデータｂｉｔだけ演算させ、無駄なｂｉｔは演算させないように出来ることも特徴の１つである。
詳細は後述する。
【実施例５】
【００６９】
図８は、メモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器による最大・最小比較演算方法の例である。
アドレスＸにはＭＳＢ「１２８」、アドレスＸ＋７にはＬＳＢ「１」、の８ｂｉｔのデータが割り付けされており、それぞれのレコードには比較するデータ、１０進数「６９、１０９、２１、１４、５、１０５、５〜３４」が書き込まれている。
【００７０】
このような、データの中から、最大値を探すためには、いずれかのレコードにデータがあるのか無いのかの演算結果を利用して、その判定結果に基づき演算条件式を設定するとよい。
以下にその手順を示す。
【００７１】
最初にＭＳＢの「１２８」のアドレスを選択しその演算結果を判定する。
その結果どのレコードにもデータが無いので、「/１２８」の演算を行う。（省略することもできる）
次に「/１２８」＊「６４」の演算を行い、何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」の演算を行う。
その結果何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」＊「１６」の演算を行う。
その結果どのレコードにもデータが無いので、「/１２８」＊「６４」＊「３２」＊「/１６」の演算を行う。
その結果何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」＊「/１６」＊「８」の演算を行う。
その結果何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」＊「/１６」＊「８」＊「４」の演算を行う。
その結果何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」＊「/１６」＊「８」＊「４」＊「２」の演算を行う。
その結果どのレコードにもデータが無いので、「/１２８」＊「６４」＊「３２」＊「/１６」＊「８」＊「４」＊「/２」の演算を行う。
その結果何れかのレコードにデータがあるので、「/１２８」＊「６４」＊「３２」＊「/１６」＊「８」＊「４」＊「/２」＊「１」の演算を行う。
その結果勝ち残ったレコードが最大値であり、その値は、６４＋８＋４＋１＝１０９であることが分かる。
この８ｂｉｔの最大値検出演算は合計４８ステップである。
【００７２】
次に最小を求めるには、図に示す通り最大とは反対に、それぞれのデータの補数データが勝ち残りするよう繰り返し演算することに求めることが可能である。
本例では、２つのレコードに最小値である５が検出されている。
【００７３】
以上のように最大・最小演算は勝ち残りの演算結果を判定して、そのあり／なしの判定結果をもとに条件設定を行うものである。
【００７４】
このような演算はＣＰＵの条件判定演算と同様に様々な演算に応用が出来る。
従って、演算結果出力は、それぞれのレコードの番地を出力するだけでなく、何れかのレコードに勝ち残りｂｉｔがあるかないかのみを判定できる出力を設けると効率的な条件判定演算が可能になる。
【００７５】
これまで主にデータを探すための演算について説明を行ったが、以下にその他の演算例を紹介する。
【００７６】
図９は、メモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器によるデータカウント演算方法のアドレス割り付けの例である。
本例は２進数、４ｂｉｔデータの加減算カウントをを行う場合の、アドレスの割り付けの例を示したものである。
アドレスＸからアドレスＸ＋３はカウントデータ２０６、「８」、「４」、「２」、「１」の各ｂｉｔの記憶エリア、アドレスＸ＋４はテンポラリな一時バッファー２０７、アドレスＸ＋５からアドレスＸ＋８は「８」、「４」、「２」、「１」の各ｂｉｔのカウント演算に必要なキャリーデータ２０８（またはボローデータ２０９）の各ｂｉｔに割り付けした構成を示すものである。
【実施例６】
【００７７】
図１０はメモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器による加算カウント演算方法の例である。
本例は、レコードデータの加算カウントの例を示すものであり、２進数、４ｂｉｔデータの加算カウントを実行するためのアドレス、レコードの割り付けの例を示している。
【００７８】
図の上段の初期状態に示す通り、「８」、「４」、「２」、「１」の４ｂｉｔデータはアドレスＸからアドレスＸ＋３番地までカウントデータが割り付けられ、本例の場合、左側のレコードより初期値として、「０、８、１、１５、７、３、５、〜１０」のカウントデータが書き込まれている。
１ｂｉｔ論理演算器の演算結果（勝ち残り）が左側のレコードより「０、１、０、１、１、１、０〜１」であることが示されており、現在のカウントデータに１ｂｉｔ演算器（FF）の演算結果（勝ち残り）を加算し、演算結果「０、９、１、０、８、４、５、〜１１」を求める場合の考え方を示す。
【００７９】
１ｂｉｔ論理（ブール）演算を繰り返し加算処理を行う場合、加算結果の桁上げ（Carry）アドレスと１ｂｉｔ演算器結果を一時記憶するバッファアドレスをワークエリアとして利用することによりカウンタ機能を実現することが出来る。
本例ではアドレスＸ＋４を１ｂｉｔ演算器バッファー２０７、アドレスＸ＋５〜アドレスＸ＋８を各ｂｉｔのキャリーデータ２０８としている。
初期状態ではこれらのアドレスはクリアし、オール「０」状態としておく。
アドレス割り付けはこれに限定されるものではない。
【００８０】
以下に以上割り付けされた、カンターデータ２０６ならびにワークアドレスを利用して加算カウントを行う場合の例を示す。
【００８１】
図の上から順番に、初期状態、「１」のｂｉｔ演算、「２」のｂｉｔ演算、「４」のｂｉｔ演算、「８」のｂｉｔ演算、演算結果が示されている。
【００８２】
ステップ１で１ｂｉｔ論理演算器の内容を１ｂｉｔ演算器バッファー２０７、アドレスＸ＋４に退避させておく。
１ｂｉｔ演算器（FF）の内容は変化しない。
ステップ２でカウントデータの「１」のｂｉｔ、アドレスＸ＋３の内容を代入し、１ｂｉｔ演算器（FF）の演算結果と論理積１０５演算させる、演算結果データは「１」のｂｉｔのキャリーデータ２０８である。
ステップ３でこのキャリーデータ２０８をアドレスＸ＋８に代入する。
ステップ４で１ｂｉｔ論理演算器バッファー２０７である、アドレスＸ＋４から、初期状態（加算値）の１ｂｉｔ演算器のデータを代入する。
ステップ５で代入された加算値と、カウントデータ２０６の「１」の桁、アドレスＸ＋３を代入し排他論理和演算を行う、この演算結果は、「１」の桁の演算結果となる。
ステップ６で、アドレスＸ＋３にこの結果を「１」の新データとして書き込み、「１」のｂｉｔ演算が完了する。
【００８３】
以降同様にステップ７からステップ２４まで、「２」のｂｉｔ演算、「４」のｂｉｔ演算、「８」のｂｉｔ演算を繰り返し、「２」、「４」、「８」の桁のデータを書き換える。
【００８４】
図の最下段にはカウンタデータが更新され「０、９、１、０、８、４、５、〜１１」となっていることが示されており、１ｂｉｔ論理（ブール）演算により加算カウントが正常に実現されていることが示されている。
【００８５】
４ｂｉｔデータの場合、以上の２４ステップであるが、８ｂｉｔデータの場合はその倍の４８ステップであり、１６ｂｉｔデータであれば９６ステップ必要である。
【００８６】
以上のように１ｂｉｔ演算は一見非効率的であるように思えるが、数千、数万、１００万レコードというように超並列が出来る場合、その演算効率は極めて高く高速である。
【００８７】
以上のカウント演算は、何らかの演算処理の後に連続して活用すると極めて効率的である。
例えば、インターネットの検索回数をカウントする検索ランキングのようにレコードデータの検索演算の完了後、ヒットしたレコードの検索ランキングカウンタをそれぞれ１カウントアップするように利用すれば、メモリ内で自動的にカウンターを更新できるので誠に好都合である。
これ等のカウンタの値は、大小比較や範囲比較、最大・最小の対象となるレコードを高速に読み出すことが可能であることは言うまでもない。
以上のような検索ランキングに限らず顏認識や静脈認証などの複数の特徴の識別結果の多数決判定など各種データの多数決演算、クラス決定演算など様々な利用が可能である。
【実施例７】
【００８８】
図１１は、メモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器による減算カウント演算の例である。
以上説明の加算と減算の違いは、キャリーをボローに変えて補数演算させることである。
キャリーデータ２０８をボローデータ２０９に置き換えアドレス割り付けする。
ボローデータは対象データを論理否定１１４する補数演算で加算同様に実現できることは周知の事である。
従ってステップ２、８、１４、２０の論理積演算の際、「１」、「２」、「４」、「８」の論理否定データで演算することにより実現される。
その結果は「０、７、１、１４、８、２、５、〜９」であり、１ｂｉｔ論理（ブール）演算により目的の減算カウント演算が正しく実現出来ていることが示されている。
【００８９】
以上の例は４ｂｉｔの例を示したものであるが、さらに多数の桁の演算は、必要桁数を繰り返し演算すれば良い。
【実施例８】
【００９０】
図１２は、メモリ型プロセッサの、１ｂｉｔ論理（ブール）演算器による全加算演算の例である。
図の上段は２進数４桁の全加算演算の真理値表を表すものである。
各桁とも入力Ａ、入力Ｂ、入力Ｃｉ（キャリー）の３入力の全加算演算を行い、その演算出力ＳならびにキャリーＣo出力の真理値表である。
【００９１】
１桁目の場合、入力Ａ「１」、入力Ｂ「１」、入力Ｃｉ「１」の３入力の全加算演算を行いその結果、出力Ｓ「１」、出力Ｃo「１」が出力される、通常１桁目にＣｉは入力されない。
２桁目は入Ａ「２」、入力Ｂ「２」、入力Ｃｉ「２」の３入力の全加算演算を行いその結果、出力Ｓ「２」、出力Ｃo「２」が出力される、この入力Ｃi「２」は一桁目の出力Ｃo「１」である。
従って２桁目は、８通りの組合せが存在する。
３桁目、４桁目も２桁目と同様な演算となる。
【００９２】
従って、１ｂｉｔ論理（ブール）演算器により全加算を行う場合には、入力の３値が「０」、「１」の何れの状態であるかの８通り（１桁目は４通りでもよい）の判定演算を行い、その結果を一時記憶し、その結果から真理値表にもとづき出力Ｓならびに出力Ｃｏを求めれば良い。
図の下段には、以上の考え方を基に、入力Ａ、入力Ｂ、それぞれ４ｂｉｔ同士の全加算演算を実行する場合のアドレスの割付が示されている。
アドレスＸからアドレスＸ＋３はＡ「８」からＡ「１」、アドレスＸ＋４からアドレスＸ＋７はＢ「８」からB「１」のデータが記憶されている。
アドレスＸ＋８からアドレスＸ＋１１は演算結果の出力Ｓの演算結果を記憶するエリアである。
アドレスＸ＋１２は、MSB「８」桁のキャリーの記憶エリアである。
アドレスＸ＋１３からアドレスＸ＋２０は入力Ａ、入力Ｂ、入力Ｃｉの３つの入力が８通りのどの状態であるかどうかを判定しその結果を一時記憶するエリアである。
図に示すようにＡＢＣｉ判定１から８まで、アドレスＸ＋１３には「/Ａ」＊「/Ｂ」＊「/Ｃi」つまり３値とも「０」、アドレスＸ＋２０には「Ａ」＊「Ｂ」＊「Ｃi」つまり３値とも「１」、のように３値の全ての組合せ８通りの演算を行い、その結果を所定のアドレスに記憶する。
【００９３】
ＡＢＣｉ判定１から８までのこの８つの判定結果で「１」となっているのは、１レコード当たり、アドレスＸ＋１３からアドレスＸ＋２０までの１アドレスのみである。
従って、先に示した全加算演算の真理値表に従い、以上のＡＢＣｉ判定の２、３、５、そして８の何れかに「１」がある場合、出力Ｓを「１」にしてそれ以外は「０」にするための論理和１１３演算を行い、その結果をアドレスＸ＋２１に一時記憶するとともに、出力Ｓの桁ごとの演算結果はアドレスＸ＋８からアドレスＸ＋１１の何れかに記憶する。
【００９４】
次に、ＡＢＣｉ判定の４、６、７、そして８のいずれかに「１」がある場合、Ｃo出力を「１」にしてそれ以外は「０」にするための論理和演算１１３を行いその結果をアドレスＸ＋２２に記憶する。
つまり、８つの組合せどれかを判定するための８×３＝２４ステップの判定演算と演算結果ＳならびにＣ（キャリー）判定するための８ステップの判定演算、合計３２ステップの演算を実行すればよい。
以上が１桁分の演算であり、４ｂｉｔの場合これを４回つまり１２８ステップ繰り返えせば良い。
８ｂｉｔの場合は２５６ステップ繰り返えせば良い。
【００９５】
以上は、加算の例であるが、減算はキャリーデータをボローデータに変換し補数演算を行えば実現できることは周知のことであり、ここでは省略する。
【実施例９】
【００９６】
図１３は、１ｂｉｔ論理（ブール）演算器によるメモリ型プロセッサの乗算演算方法（例）説明図である。
被乗数に対し、乗数の各桁毎に演算した結果を各桁毎に１ｂｉｔ毎にシフトしその結果の各桁を加算することにより乗算演算が実現できることが知られている。
【００９７】
例えば１０進数被乗数「１１」×乗数「１４」＝「１５４」
２進数被乗数「１０１１」×乗数「１１１０」を乗算演算する場合、
乗数１桁目の演算は「１０１１」×「０」＝「００００」、演算結果シフト０  「００００００００」
乗数２桁目の演算は「１０１１」×「１」＝「１０１１」、演算結果シフト１  「０００１０１１０」
乗数３桁目の演算は「１０１１」×「１」＝「１０１１」、演算結果シフト２  「００１０１１００」
乗数４桁目の演算は「１０１１」×「１」＝「１０１１」、演算結果シフト３  「０１０１１０００」
以上４回の全ての演算を加算 ＝「１００１１０１０」
この演算内容をメモリ型プロセッサ１０１の、１ｂｉｔ論理（ブール）演算器による乗算演算で実施する場合の手順を２桁目演算結果Ｓ３の所まで示したものである。
【００９８】
アドレスＸからアドレスＸ＋３には４ｂｉｔの被乗数データＡが記憶されている、アドレスＸ＋４からアドレスＸ＋７には、４ｂｉｔの被乗数データＢが記憶されている。
アドレスＸ＋８からアドレスＸ＋１５には乗数１桁目の演算結果を各桁毎に一時記憶するエリアである。
アドレスＸ＋１６からアドレスＸ＋３９には乗数２桁目から４桁目の演算結果を各桁毎に一時記憶するエリアである。
被乗数Ａ、乗数Ｂそれぞれの桁の演算を行い、各エリアの記憶データを１ｂｉｔずつずらして演算結果を記憶する。
この演算はキャリーデータ２０８が出ないので合計１６ステップの単純な処理である。
【００９９】
以上の４桁の演算結果を、先に示した全加算演算し、その結果をアドレスＸ＋４０からアドレスＸ＋４７に最終結果として記憶する。
この演算はキャリーデータ２０８が出るので少し複雑になるが先に示した全加算演算の手法により演算すればよい。
合計１０５６ステップで４桁の乗算が実現出来る。
【０１００】
除算の場合は、被除数Ａの上位の桁から除数Ｂで割り切れる桁まで演算を繰り返せばよいことが知られている、１ｂｉｔ論理（ブール）演算機能１２３のこの手法で乗除演算が出来る。
ここまでの説明は、半加算器、全加算器などの四則（数値）演算器を用いることなく、ブール演算素子のみで、様々な四則演算を含む様々な演算を実行することが可能になることを示したものである。
通常これまで説明して来た演算手法は繰り返し演算の手間（時間）がかかり意味のないことのように考えれれるが超並列演算が実現できること、ＣＰＵやＧＰＵの力を借りることなくメモリ内部で演算を完結出来ることを考慮すれば大きな意義をもつ。
【０１０１】
以下に、四則（数値）演算を多用するような情報処理の場合、数値演算特有のキャリーデータ２０８ならびにボローデータ２０９の処理の負担を軽減する方法を紹介する。
【実施例１０】
【０１０２】
図１４は、メモリ型プロセッサの、四則（数値）演算１２４を効率的に実現出来るようするために考えられた回路である。
本例ではスイッチ２０１を２に切り替えると、１ｂｉｔの四則（数値）演算１２４が実現出来るような構成となっている。
メモリからの１ｂｉｔ毎のデータは、２つの半加算器２１０と論理和１１３で構成される全加算器２１１の、Ａ、B、Ｃｉの３つの各入力のデータを順次記憶する３つのフリップフロップ２０２とその何れかを指定する論理積１１２ゲートで選択指定され、全加算器２１１に加えられるように構成されている。
【０１０３】
さらにその結果全加算器２１１のＳ出力、ならびにＣ出力は一旦２つのフリップフロップ２０２に順次記憶され、ＯＵＴ Ｓ選択入力もしくはＯＵＴ Ｃ選択入力で選択指定された出力が、スイッチ２０１を通じてメモリ１００の記憶セル１０２に記憶されるように構成されている。
以上のように構成することで１桁の四則演算を５ステップで実現できる、演算器が完成する。
以上の構成は加算器で記載されているが、減算器、そして乗除演算に利用することが可能であることはこれまでの説明の通りである。
【０１０４】
以上の１ｂｉｔの四則（数値）演算１２４は、四則演算が多用される情報処理には最適である。
さらにこの四則（数値）演算器の性能を最大限に発揮できる多ビットデータの演算方法ならびにデータシフト回路を紹介する。
【実施例１１】
【０１０５】
図１５は、メモリ型プロセッサの、多ビットデータ並列四則演算方法の例である。
これまでの演算方法は全て１つのレコード内で完結され実行されるものであたが、この演算方法は複数のレコードを１つのレコード群として演算をするものである。
つまりレコード群を一つのデータとするもので、レコードの幅（データ長）は任意である。
本例の場合レコードＹからレコードＹ＋８の９つのレコードを１つのレコード群とし１つのデータとなるように割り付けされており、その割り付けは、レコードＹ＋８をＬＳＢとして、レコードＹ＋１をＭＳＢとする８ｂｉｔデータ、レコードＹは四則演算結果で出力される桁上げ出力になっている。
また、アドレスＸは演算入力データＡｉ、アドレスＸ＋１は演算入力データＢｉ、アドレスＸ＋２は演算出力データＣｏ、アドレスＸ＋３は演算出力データＳｏが割り付けされている。
【０１０６】
図の下段部の演算部には、メモリからのデータ、メモリへのデータを一時記憶する一時記憶器と、四則演算を実施する四則演算器がそれぞれ並列に配列されている。
【０１０７】
これまで説明の１ｂｉｔ四則（算術）演算器１２４は、１つのレコード内で完結される演算であったが、この多ｂｉｔ演算器１０３は、データを他のレコードに横送りする機能つまりLSBからＭＳＢ各ｂｉｔのキャリーデータ２０８であるキャリーＣｏ出力を上位のキャリーＣｉ入力に入力する接続が付加された構成である。
この接続は、データの幅分必要であり、どのレコードからどのレコードまでを接続する、または接続しないなどレコード毎に任意に指定可能な構成にすることもできる。
【０１０８】
この構成とすることにより、メモリのアドレスＸならびにアドレスＸ＋１から並列に代入されたＡｉ、Ｂｉの入力データは一時記憶器に記憶され、その一時記憶器の出力が四則演算器の入力に接続されているので、ＬＳＢからＭＳＢ各レコードの四則演算器は、各レコード並列に演算を実行してその結果の演算出力Ｓｏならびにキャリー出力Ｃｏを、一時記憶器に出力しその結果をメモリのアドレスＹ＋２並びにアドレスＹ＋３に演算結果として記憶させることができる。
【０１０９】
この演算方法は詳しくは後述するがこれまでの何れの演算方法に比較して極めて効率的で高速であるが、この四則演算器に、例えば乗算器やキャリー先読み機能などのオプション機能を設けることによりさらに高速な演算が実現できる。
キャリー先読み回路はデータ幅が広くなると回路構成が大きくなるので、演算のデータ幅を８ｂｉｔや１６ｂｉｔ幅程度に抑え、データ幅の広い演算はキャリーを含んだ演算を繰り返し行うこととすれば省スペースで高速な演算回路を実現することができる。
【０１１０】
これまでの手法では、例えば１ｂｉｔ論理（ブール）演算器で８ｂｉｔの加算演算をする場合には２５６ステップ、１ｂｉｔ四則演算器の場合には４０ステップ程度の演算が必要であったが、この演算の場合、データ幅に関わらず合計５ステップ程度の演算で四則演算が実現できるのでこれまでの演算方法に比較して極めて効率的である。
この桁上げ演算方法は、これまで説明した、カウンタ演算、加減乗除演算の全てに応用できることは言うまでもない。
【０１１１】
この演算方法は、四則演算で不可欠なキャリーデータ２０８やボローデータ２０９のレコード間データ転送をデータの横送り機能により実現したものである、言うまでもなくこの手法は１組のレコード群のデータに制限されるものではなく多数のレコード群で使用することができる。
並列度が上がるほどその効果が大きくなるので、レコード全体に利用することも可能である。
【０１１２】
本方式の場合、入力データ（Ａ、Ｂ）には符号をつけることが出来る、また演算結果は、例えば乗算の場合など最大となるデータ幅と、キャリー、ボロー、符号を考慮したデータ幅（レコード幅）を考慮した割り付けをするとよい。
【０１１３】
以上の説明の通りこの１ｂｉｔ演算機能（論理演算、四則演算）は、行ならびに列の双方向の演算が出来るので通常のＡＬＵにない大きな特徴があり、データベースを行方向で演算するデータ、列方向で演算するデータなど適切に使い分けすることにより、最適な演算方法を選択することが出来る。
以下に、行方向、列方向のデータ変換や、様々な演算を行う上で不可欠なデータシフト機能を説明する。
【実施例１２】
【０１１４】
図１６はデータシフト機能を備えたメモリ型プロセッサの回路構成例である。
図に示すようにアドレス毎の記憶セル１０２にレコードデータ２１５が記憶されている。
このレコード毎に１ｂｉｔ演算器１０５が接続されている。
これまでの説明では１ｂｉｔ演算器１０５のレジスタはフリップフロップ２０２であった、この場合同一レコード内のデータは１ｂｉｔ毎に自由に移動し演算させることが出来るが、レコード間にまたがりデータを移動し演算することは出来なかった。
【０１１５】
図に示すように、これまで説明のフリップフロップ２０２をシフトレジスタ２１２として、外部からクロック信号２１６を与え、フリップフロップ結果出力２０５（この場合シフトレジスタ出力）と、クロック信号２１６を隣のレコードのシフトレジスタの入力に接続することによりレコード間のデータ移動（シフト転送）が可能になる。
【０１１６】
以上のような、データのレコード間のシフト転送が可能になると、これまでの演算機能をさらに高度で高速なものにすることが可能なる。
【０１１７】
通常のシフトレジスタは１クロックで１レコード分のデータシフトしか実現出来ないが、１クロックで８レコードや１６レコード早送りするようなシフトレジスタ構成とすることも可能である。
以上説明の多ｂｉｔ演算器１０３ならびにシフトレジスタ２１２は、演算対象のデータを他のレコードへ転送する機能の一つであり、この機能によりメモリ型プロセッサの性能は大きく拡大する。
【実施例１３】
【０１１８】
図１７、図１８はメモリ型プロセッサによるデータの行列変換の例をし示すものである。
先に述べた通り、１ｂｉｔ演算機能を備えたメモリ型プロセッサは行ならびに列の双方向の演算が出来る特徴がある。
以上の特徴を上手く利用するために、先に説明のシフト機能を利用して演算データを行列変換するための手法を紹介する。
【０１１９】
図１７では行列変換をする上での前処理演算のステップが示されている。
アドレス１からアドレス４には行列変換の対象になるデータが書き込まれている。
このデータはレコード５から８、レコード９から１２、レコード１３から１６の４ｂｉｔで１組みとなる４ｂｉｔデータ幅のデータである。
【０１２０】
同上レコードのアドレス５からに８には、演算補助データであるマスクデータが書き込まれている。
【０１２１】
アドレスＸにはアドレス１とアドレス５の論理積演算結果が代入されている。
アドレスＸ＋１にはアドレス１とアドレス６の論理積演算結果が代入されている。
アドレスＸ＋２にはアドレス１とアドレス７の論理演積算結果が代入されている。
アドレスＸ＋３にはアドレス１とアドレス８の論理積演算結果が代入されている。
【０１２２】
アドレスＸの論理積演算結果はシフトされていない。
アドレスＸ＋１の論理積演算結果は−１シフト（左に１シフト）されている。
アドレスＸ＋２の論理積演算結果は−２シフト（左に２シフト）されている。
アドレスＸ＋３の論理積演算結果は−３シフト（左に３シフト）されている。
以上でアドレス１のデータに関わる前処理演算が完了する。
【０１２３】
全く同様に
アドレス２のデータに関わる演算が、アドレスＸ＋４からアドレスＸ＋７で行われている。
アドレス３のデータに関わる演算が、アドレスＸ＋８からアドレスＸ＋１１で行われている。
アドレス４のデータに関わる演算が、アドレスＸ＋１２からアドレスＸ＋１５で行われている。
以上が行列変換をする上での前処理演算である。
【０１２４】
図１８では、以上の前処理演算結果を行列変換するステップが示されている。
アドレス１のデータの前処理演算結果であるアドレスＸからアドレスＸ＋３は全てシフトされない。
アドレス２のデータの前処理演算結果であるアドレスＸ＋４からアドレスＸ＋７は全て＋１シフト（右に１）さてれいる。
アドレス３のデータの前処理演算結果であるアドレスＸ＋８からアドレスＸ＋１１は全て＋２シフト（右に２）さてれいる。
アドレス４のデータの前処理演算結果であるアドレスＸ＋１２からアドレスＸ＋１５は全て＋３シフト（右に３）さてれいる。
【０１２５】
アドレスＸ＋１６には、アドレスＸ、アドレスＸ＋４、アドレスＸ＋８、アドレスＸ＋１２の論理和演算が代入されている。
アドレスＸ＋１７には、アドレスＸ＋１、アドレスＸ＋５、アドレスＸ＋９、アドレスＸ＋１３の論理和演算が代入されている。
アドレスＸ＋１８には、アドレスＸ＋２、アドレスＸ＋６、アドレスＸ＋１０、アドレスＸ＋１４の論理和演算が代入されている。
アドレスＸ＋１９には、アドレスＸ＋３、アドレスＸ＋７、アドレスＸ＋１１、アドレスＸ＋１５の論理和演算が代入されている。
【０１２６】
以上の演算結果であるアドレスＸ＋１６からアドレスＸ＋１９のレコード５から８、レコード９から１２、レコード１３から１６の４ｂｉｔデータ幅のデータはアドレス１からアドレス４のデーが行列変換されたものである。
【０１２７】
本例では４ｂｉｔデータであったが、８ｂｉｔでも１６ｂｉｔでもさらに大きなデータでも可能である。
繰り返し演算の回数は増えるが、並列演算が出来ることを考えれば効果的な行列変換であることはこれまで説明の通りである。
【０１２８】
本例では、アドレス５からアドレス８を行列演算する上で必要な前処理演算を補助データを利用し、シフトレジスタ機能で行列変換を行ったものである。
本メモリ型プロセッサは、以上のような補助データを活用することより、活用方法が大幅に拡大する。
【０１２９】
次にこのメモリ型プロセッサ１０１のデータ入力機能について説明する。
この技術の最大の検討課題は、レコードデータの記憶方法である。
比較的簡単に実現できる方法として、このメモリ型プロセッサ１０１に目的のデータを書き込みする場合、１ｂｉｔ演算器のフリップフロップ２０２を通じて外部からのデータを、書き込み、読み出しすることが出来る。
【０１３０】
この場合原則的に１ｂｉｔ毎の書き込みとなり、このメモリ型プロセッサ１０１は通常のデータベースのデータを縦横反転した配列となるため、例えば通常のメモリに記憶されているレコードデータ６４ｂｉｔ＊６４ｂｉｔなどの配列データを、このメモリ１０１の入力から転送した後、メモリ型プロセッサ１０１内部で行列変換し、指定した書き込み先のレコードの６４個のフリップフロップ２０２のみが有効（他のレコードのメモリセルに影響を与えない）になるように回路構成し、書き込み先のアドレス毎に６４回データを記憶させることで外部データを記憶させることが出来る。
つまり６４ｂｉｔ幅のデータを６４回アドレス毎に順次書き込めば良い。
この場合１レコード分のデータの変更でも６４レコード幅を対象にして上書きする。
【０１３１】
次にこのメモリ型プロセッサ１０１の出力機能について説明する。
レコード幅が比較的少数であれば、演算結果を並列に出力することも可能である。
然しながら、レコード数が数千以上になった場合、このメモリのチップに出力ピンを引き出すことは現実出来でない。
従ってレコード数が大きい場合は優先順出力回路（プライオリテイエンコ−ダ）１２４により演算結果のレコードの番地を１レコード毎に出力すると良い。
優先順出力回路（プライオリテイエンコ−ダ）１２４は演算結果が絞込みされている場合には好都合である。
沢山のレコードが検索される事を勘案して、プライオリティアドレスエンコーダ出力回路などの演算結果出力１０６をいくつかのブロックに分割して、ブロック単位で読み出し出来るように構成すれば、分割したブロック分、レコードの番地出力を高速にすることが可能になる。
また先に述べたように、勝ち残りレコードがあるかないかを判断する出力があると、条件判断が多い処理に効率的である。
言うまでもなく、チップから出力ピンを引き出せる範囲で、主要なレコードの演算結果を並列に出力しても構わない。
【０１３２】
これまで様々な回路構成を紹介してきたが１ｂｉｔ演算器の最小構成は１ユニット（１レコード）は回路を単一機能に限定すれば数百トランジスタ程度から標準的な回路構成でも１０００（１Ｋ）個程度のトランジスタ回路規模で実現できる。
【０１３３】
以上のことを前提に本発明を半導体で実現する場合を考えてみる、
現時点の半導体微細化技術では１チップ上に１００億個のトランジスタが実装出来るレベルにあり、１チップのＤＲＡＭのメモリ容量は８Ｇｂｉｔ程度である。
将来はその１桁程度、１０００億個のトランジスタが実装出来る見通しである。
【０１３４】
しかしながら、ムーアの法則による微細化技術も間近に限界を迎えており、それ以降の集積度の向上は３次元実装など他の手法に転換する以外にないとされている。
これまでムーアの法則に従ってＡＬＵを使ったマルチコアーやメニーコアの並列度が向上してきたが、ムーアの法則が限界に達すれば並列度の向上は望めない。
しかしながら本発明による演算器はこれまで説明の通り極めて単純な回路構成であるので標準的な機能の場合１０００（１K）トランジスタ程度である。
【０１３５】
従って１万ユニット（レコード）では１０Ｍトランジスタ、１０万ユニットでは１００M（１億）トランジスタ程度、１００万ユニット（１Ｍレコード）では１０億トランジスタ程度である。
従って１Ｍレコードの場合でも、現時点で１チップに搭載可能な１００億個のトランジスタの１０％を占める程度である。
微細化の限界時点では１％を占める程度で済むので、その省スペース性は特筆される。
【０１３６】
また、１Ｍのレコードなど幅の広いアドレスをアクセスする場合、レコードを幾つかのバンクに分散させて、微小時間アクセス時間を遅延させて演算するなどの回路構成とすることにより突入電流を最小限に抑え省電力で演算可能なチップにすることができる。
また未使用のレコードを演算対象外として、省電力を図ることも可能である。
【０１３７】
積層化技術が進むＦＬＡＳＨメモリの場合現時点での１チップ当りのメモリ容量は１Ｔｂｉｔ程度である。
従って、縦横１Ｍ（１００万）ｂｉｔの不揮発性の１ｂｉｔ演算機能を備えたメモリ型プロセッサ１０１が実現される。
ＳＲＡＭの場合、ＤＲＡＭやＦＬＡＳＨメモリなどのように集積度は上がらないもの、高速な演算が期待できる、また半導体開発コストが比較的低コストで実現可能である。
【０１３８】
以上のＤＲＡＭ、ＦＬＡＳＨ、ＳＲＡＭ、以外最近は不揮発、省電力が期待される磁気記憶型のメモリセルも盛んに研究されておりこの様なメモリにも共通に利用可能である、本メモリはチップのごく一部に論理演算機能を加えるのみであるので極めて大容量で超高速で簡便な情報処理が出来ることである。
【０１３９】
このメモリはインメモリデータベースでしかもＣＰＵに演算を頼らない自己完結型演算機能を持たせたメモリがメモリ型プロセッサである。
メモリ型プロセッサは必ずしも大きなデータを対象とするものでなく、小さなデータでも繰り返し演算する必要がある情報処理に最適であるので、ＦＰＧＡにもこのメモリ型プロセッサ１０１のアルゴリズムを容易に実装することが出来る。
多様なケースが存在する多ビット演算器１２２などはＦＰＧＡであればフレキシブルに利用することが出来るようになる。
このメモリ型プロセッサとＣＰＵを一体化したデバイス構成や、ＣＰＵのキャッシュメモリにも有効である。
【０１４０】
図１９は、メモリ型プロセッサの、直並列接続の例である。
このメモリ１０１は完全に独立したメモリとして、縦方向（アドレス方向）にも横方向（データ幅方向）に拡張することが出来るので、システムの拡張が極めて単純でありシステムに永続性を持たせることが出来る。
全文検索であれば、アドレスは数十万にも上る、しかしながら個人情報であれば一人当たり数Ｋから数拾Ｋのアドレスがあれば十分である。
【０１４１】
通常、全く配列の定義やインデックスのないメモリの中から１つのＣＰＵが、特定の情報を見つけ出す場合には、例えば１０ｎ秒平均でメモリをアクセスし照合するだけでも、１Ｍアドレスの場合１０ｍ秒程度、１Ｇの場合１０秒、１Ｔの場合１０，０００秒（３時間程度）の時間が必要になる。
ＣＰＵを並列に使用し分散処理理すれば、原則的にＣＰＵの数に比例して処理時間を削減することが出来る。
しかしながら１ＴＢを超えるようなインメモリ型のデータベースをリアルタイム（例えば１秒以内）で検索演算やデータマイニングするのは困難とされている。
【０１４２】
本メモリ型プロセッサ１０１の場合どのように直並列されていて、例えば１０ＴＢのデータであっても全メモリの並列処理が可能で、アドレス選択１１０と演算条件指定１１１を数回から数十回、数百回繰り返すだけで良い。
【０１４３】
記憶素子によりアクセススピードは様々であるが例えば一回の論理演算のスピードを１０ｎ秒とすると、1ｍ秒あれば、１００、０００回の演算を実現することが出来る、完全並列処理が出来るのでどのようなサイズのビッグデータであっても、そのサイズの関わりなく数百ｎ秒からマイクロ秒、1ｍ秒程度で目的のレコードを探し当てることが出来る。
つまりビックデータほど効果が著しいことがこの技術の最大の特徴と言える。
この発明のメモリ構造とデータの縦横関係を逆転する考え方は、情報処理の回数を大幅に削減し、処理時間を大幅に削減する事を如実に示している。
【０１４４】
このことは様々な仮定に基づき検索を繰り返す必要があるビッグデータのデータマイニングや総当たり的な演算が必要なデータの照合処理に極めて効果的である、詳細は後述する。
【０１４５】
図２０はメモリ型プロセッサの、階層化接続の例である。
図の例では図の最上段に示すメモリ型プロセッサ１０１をマスタとしてそのそれぞれの、レコードに対応させて、レコード毎に更に詳細なデータを格納したサブのメモリ型プロセッサ１０１を検索できるように構成してものである、特にビッグデータであればこのような階層化データベースを利用することによりどのような規模のデータベースであっても対応可能になる。
【実施例１４】
【０１４６】
図２１はメモリ型プロセッサによる特徴データベースＡの例である。
全てのレコードと全てのフィールドデータの総当り的な演算や大量の組合せ演算を必要とするような照合演算はこのメモリの特徴を最も効果的に利用することができる。
本例は構成のイメージを示すだけの極めて小さなデータテーブルであるが、４ｂｉｔデータの特徴ＡからＥまで５種類の特徴データがレコードデータ２１５としてアドレス１からアドレス２０までデータベース化され記憶されている。
【０１４７】
比較される照合データ２１３の特徴ＡからＥまで５種類のデータと、このデータベースとの照合を行い、一致した特徴の数、近似する特徴の数、さらにはデータベースと照合データとの差を演算してその結果を累計するなどの様々な演算を行った照合結果をアドレス２１以下に記憶しその結果を判定するようアドレスの割り付けがなされた構成である。
特徴データのデータ幅を個別に増減することも、特徴の数を大幅に増やすことも自由である。
【実施例１５】
【０１４８】
図２２はメモリ型プロセッサによる特徴データベースＢの例である。
本例のデータベースも先に説明のものと同様のものであるが、先に示した、多ｂｉｔ四則演算方式を使った８ｂｉｔデータの特徴データベースである。
【０１４９】
本例の場合、メモリ型プロセッサのアドレス２０まで特徴データＡから特徴データＴまでの８ｂｉｔ特徴データが、１２レコード群毎に書き込みされている。
外部から与えられた、特徴照合データ毎にデータベースを並列（本例では１２レコード群）に照合することになる。
この方式は、先に述べた特徴データベースＡより遥かに高速な演算が可能である。
【０１５０】
本例ではアドレス２１にその照合データを代入し、対象となる特徴と照合を繰り返し行くことになるが、この時、アドレス２１の８ｂｉｔデータは全く同じデータを並列数分（本例では１２組）書き込みする必要がある。
レコード群が大きく（並列度が大きく）なると照合データの転送時間が問題になる。
このような場合、以下に示す方法を利用すると、極めて高速な照合データを得ることができる。
【実施例１６】
【０１５１】
図２３はメモリ型プロセッサによる並列データ作成の例である。
図に示すように、
アドレスＸからアドレスＸ＋３には４ｂｉｔ幅の補助データ
アドレスＸ＋４からアドレスＸ＋１１には８ｂｉｔ幅の補助データ
アドレスＸ＋１２からアドレスＸ＋２７には１６ｂｉｔ幅の補助データ
が事前に書き込みされている。
【０１５２】
これらの補助データが事前に用意されていると、
例えば
アドレスＸ＋２８は、４ｂｉｔデータのアドレスＸ、アドレスＸ＋２の論理和演算されたデータである。
アドレスＸ＋２９は、８ｂｉｔデータのアドレスＸ＋６、アドレスＸ＋９、アドレスＸ＋１１の論理和演算されたデータである。
アドレスＸ＋３０は、１６ｂｉｔデータのアドレスＸ＋１２、からアドレスＸ＋２７の論理和演算されたデータである。
さらにアドレスＸ＋３１は、アドレスＸ＋２８、アドレスＸ＋２９、アドレスＸ＋３０の論理和演算されたデータである。
【０１５３】
特定のレコードの特定のアドレスの記憶セルを「０」もしくは「１」にする場合やデータ同士を重ね合わせする際にも補助データは有効である。
以上のような補助データを事前に用意しておくことにより、任意のデータ幅の任意のデータを並列に（高速に）得ることができる。
以上は補助データ活用の一例であり補助データはメモリ型プロセッサの能力を大幅に拡大する。
【０１５４】
一例であるが、顏を照合するためのデータは１人当たり１ＫＢ程度とされている。
１，０００人分のデータであれば１ＭＢｙｔｅであるので通常のパソコン程度でもリアルタイム処理はそれほど困難ではない、しかしながら１００万人分のデータとなれば１ＧＢｙｔｅとなり通常のパソコンでは困難でＣＰＵやＧＰＵを多数用いた専用のシステムが必要である。
まして日本全体の場合は、その１００倍の１００ＧＢｙｔｅ、世界中の人の顔をリアルタイムで処理させようとすると、さらにその１００倍の１０ＴＢｙｔｅと、膨大なシステムとなるため、ＣＰＵやＧＰＵの情報処理では現実的ではなくなる。
この発明を使えば、この発明のメモリ型プロセッサ１０１を沢山用意すればよいだけである。
先に示した、１ＴｂｉｔのＦＬＡＳＨメモリが、８０個あれば全人類の顏照合のデータベースが完成する。
近未来に誕生する１０ＴｂｉｔのＦＬＡＳＨメモリであればわずか８個で全人類の顏照合のデータベースが完成する。
演算内容により異なるが多くの場合数十マイクロ秒程度で照合判定演算を可能にし、先に述べた通り、レコード件が例えば１００万レコードでも１００億レコードでも同一時間であることが最大の特徴である。
発熱も少なく、複雑な周辺回路も不要になるので、システムを大幅に小型化し、省電力にすることが出来る。
【０１５５】
以上は特徴データの照合演算であったが、特徴データを、データのカテゴリー、データのクラス、データのエリア、など様々なものにあてはめればそのた応用は無限である。
個人情報であれば、「氏名」、「住所」、「勤務先」、「生年月日」、「身長」、「体重」、「性別」など、様々なデータ幅のデータをデータカテゴリーとして割付すればよい。
これらの個人情報は情報探しの様々なインデックスを用意する必要がなく、データの登録が完了すれば直ちに演算開始することができる。
いくらＣＰＵやＧＰＵの性能が向上してもこのようなインデックスが不要な情報処理環境を得ることは出来ない。
この技術の大きな特徴である、詳細は後述する。
【０１５６】
従ってレコードの件数が多いほどその効果は顕著で、先に述べた人類全体７０億人の顏データの照合のみならず、指紋データの照合、声紋認証、文字認識データの特徴照合などあらゆる用途に最適である。
【０１５７】
この技術は、組合せ情報処理が極めて多い人工知能の一部に組み込むことによりその性能を大幅に向上することになる。
人工知能で利用される学習機能は、サンプルになる情報を多数読み込みこみ期待する答えがでるまで学習させる必要があるが、学習する情報の規模やクラスが大きくなると極めて大きな時間が掛る。
この技術を使えば、大規模な知識情報であっても複雑な情報処理が解消されるので学習時間を短縮し、認識能力を大幅に向上することが出来る。
また、様々な条件が複雑に絡み合う気象情報などの解析やデータマイニングに最適である。
【０１５８】
以降この技術で得られる様々な効果について説明をする。
このメモリ型プロセッサ１０１を利用してデータベースを構築するには、レコード、とフィールドデータのアドレスの割り付けのみで、後は演算条件指定１１１するだけで利用することが出来る。
従ってこのメモリ型プロセッサ１０１のアプリケションインターフェースを準備することにより、従来一般的である検索アルゴリズム、例えばＳＱＬ等のデータベースに組み込み利用することができる。
【０１５９】
ＣＰＵを用いた情報探しは、ＣＰＵの負担を軽減するために様々な利用上のテクニックが存在する。
バイナリサーチはその典型的な例である。
このアルゴリズムは情報データの検索回数を極めて少なくすることが出来る技術として情報処理の定番技術であるが、メモリ上のデータテーブルにデータ値を書き込む際、例えば小さいデータから大きいデータ順に並べておくような事前準備が必要でありデータが増えたり、減ったりするたびに、メモリ上のデータを並べ変えする（データメンテナンス）必要がある。
【０１６０】
つまり、このアルゴリズムにより、ＣＰＵが特定のデータ値を探す時の負担は短縮されるが、その前の事前処理、データメンテナンスに掛る負担はけして少なくない。
以上はバイナリサーチの例であるが、ハッシュテーブルやＢ木構造（インデックス）などその他のアルゴリズムも全く同様である。
【０１６１】
本発明を利用すると、以上のようなアルゴリズムを使用する必要がなくなるので、事前準備やメンテナンスなどの情報処理は全く不要となるので、レコードのどこか、アドレスのどこかを指定して、データを登録するか抹消するだけであり煩わしい配列の変更、データの並べ替えなどのデータメンテナンスは一切不要である。
【０１６２】
この事は従来のＣＰＵやＧＰＵのみの情報処理に比較して格段に情報処理の構成が簡素化し平易化することを示している。
これまで紹介してきた様々な情報処理は情報処理の中心的な処理であるので、情報処理に携わる多くの利用者（技術者）の負担を大幅に軽減する結果となる。
【０１６３】
また、本メモリ型プロセッサ１０１をコントロールし情報処理の全体をコントロールするＣＰＵは高速である必要がなくなるので情報処理に関わる電力を大幅に削減することが可能になる。
したがって情報処理に携わる利用者の負担とＣＰＵやＧＰＵならびに周辺回路の負担を同時に大幅軽減する結果となる。
【０１６４】
現在の情報処理は、メモリ１００のデータ幅が３２ｂｉｔ、６４ｂｉｔ、１２８ｂｉｔなど一定のデータ幅でＣＰＵが順次アドレスをアクセスしデータを読み込み逐次情報処理を行って行くものである。
データ幅（バス幅）が広い程、情報処理の効率は高いが、デバイスの入出力ピン数が増えること、デバイスを実装するプリント基板の配線負担が多いことなどデータのバス幅の拡大には限界がある。
【０１６５】
また、個人データベースなどの場合、年齢は７ｂｉｔデータ（最大１２７）、性別は１ｂｉｔなどデータ幅が少なくてもよいデータもデータ幅の広い演算器を利用するので無駄なｂｉｔの処理も多く存在することになる。
この発明のメモリ型プロセッサ１０１は、１ｂｉｔ以上任意のデータ幅で、行方向、列方向、任意のデータ幅の並列演算可能であるので全く無駄ｂｉｔがない情報処理が可能である。
【０１６６】
本願発明者はこれまで様々なメモリ型デバイスの研究行ってきた、特許第４５８８１１４号  情報絞り込み検出機能を備えたメモリはパターンマッチなど論理積演算が得意なメモリである。
またPCT/ＪＰ２０１３／０５９２６０号  集合演算機能を備えたメモリは以上の情報絞り込み検出機能を備えたメモリの概念を拡大発展させて、論理積演算、論理和演算、論理否定演算などを自由に行うことができるメモリ型デバイスである。
メモリ型デバイスの特徴は、情報処理の容量が大きくても少なくても常に一定の処理時間であることが大きな特徴であるので、情報処理容量が大きいほどその効果が大きくなる。
【０１６７】
情報処理容量が比較的小さいＦＰＧＡを用いたデモ機でも従来の情報処理に比較して数万倍以上の能力があることを検証済みであり、情報処理容量の大きなＡＳＩＣのチップを創れば数百万倍高速化できることが検証されている。
【０１６８】
また本願発明者による発明の特願特願２０１３−２６４７６３、情報検索機能を備えたメモリ、でＦＰＧＡによる文献検索システムを開発した結果、通常のソフト処理では７６ｍ秒程度掛かる検索時間が、２０７ｎ秒と３７万倍も高速に実現できることが実証されている。
以上の内容は「データ検索を１００万倍高速にする技術」として、学会、展示会やマスコミを通じて広く公開されており実用化製品を開発中である。
【０１６９】
この発明では以上の実績をもとに、メモリ型デバイスの様々な特徴を最大限に引き出すことが可能な演算回路と様々な使用方法を提供し、以下のような広範囲な情報処理が可能であることを示したものである。
１．インデックス演算・・・・・・献検索、データベース検索
２．データの比較（一致、大小、範囲、最大・最小）・・・・・・データベース検索
３．演算結果判定・・・・・条件演算
４．加算、減算カウンタ・・・・・演算結果の累計
５．加算器、減算器・・・・・データ同志の加減算
６．暗号処理・・・・・・平文の暗号化、暗号文の復号
７．行列変換
８．データの作成
９．以上の組み合わせ演算
【０１７０】
この技術の特徴は、豊富なメモリ資源をデータエリアやワークエリアとして利用することにより、極めて単純な回路構成のブール演算素子（論理演算素子）による１ｂｉｔ論理（ブール）演算器のみでも、多彩な演算を可能であることを具体的に示したものである。
また数値演算の利用頻度が多い場合には、１ｂｉｔの四則（算術）演算素子を追加して組み込むことにより効率的な数値演算処理が出来ることを具体的に示したものである。
さらにレコード間のデータ転送機能を持たせることにより、複数のレコードをまとめてレコード群としてデータ演算することや行列変換することが可能になるなど、さらに効果的で高速な演算が出来ることを具体的に示したものである。
【０１７１】
論理積（ＡＮＤ）、論理和（ＯＲ）、論理積（ＮＯＴ）さらに、排他論理和（ＸＯＲ）とこれらを組合せした加算器などの演算素子が、情報処理（コンピュータ）の基本であることは周知の事実であり、その利用方法や応用方法は様々な文献やインターネット上で幅広く紹介されている。
その典型的な素子がＡＬＵであり、通常８ｂｉｔ以上の多ビット演算器１２２であるＡＬＵ２１７を用いたＣＰＵやＧＰＵが我々の生活や産業の隅々で利用されている。
当然のことながら１ｂｉｔ演算器で全ての演算を行うことは、以上紹介した通り、繰り返し演算の手間がかかるため研究されることも紹介されることも利用されたこともない。
【０１７２】
しかしながらこれまで説明をしてきた           １ｂｉｔ演算器によるメモリ型プロセッサ演算の要点をまとめると以下の通りである。
１．  １ｂｉｔ演算器による演算は一見非効率的であるが超並列演算をすると極めて高速な演算となる、また行列双方向の演算が可能である。
２．  データ量（レコード数）が大きくても小さくても何時も一定の演算時間である、従ってビックデータに最適である。
３．  ＣＰＵやＧＰＵの負担が軽減され、情報処理装置の電力を削減する。
４．  複雑な情報処理アルゴリズムとそのメタデータを考える必要がなくなるので開発者の負担が軽減される
５．  インデックスなどのメタデータが不要になるので、事前準備やメタデータのデータメンテナンスが不要になる。
６．  基データをメモリに記憶させるだけですぐに演算が可能になる。
【０１７３】
本願発明で紹介の演算手法は超並列演算によって以上のような様々なメリットをもつ１ｂｉｔ演算器の実力を知るもの以外生み出すことが出来ない。
本願特許で紹介した演算手法は本願発明者が独自に考案し体系化させたものであるが、行と列が反転された情報処理の手法を全く白紙に近い状態から今回の出願に至るまでとりまとめまとめるには多くの忍耐と時間が必要であった。
【０１７４】
紹介した演算手法は情報処理で頻繁に利用される代表的な演算手法とこれに最適な演算器を示したものであり、更に様々なオプション機能を付けることも、反対に必要最低限に限定して利用することも自由である。
演算手法やその応用はＣＰＵ同様無数に存在する。
【０１７５】
これらの演算手法を標準的なライブラリとしておくことにより利用者はハードウエアを意識することなく、一般のソフトウエアに組み込み利用することができるようになる。
【０１７６】
この発明は、ビッグデータ社会のコンピュータのあるべき姿を追い求めて、ＣＰＵやＧＰＵのみの情報処理のコンピュータ技術の課題の多くを解決し、ＣＰＵやＧＰＵの弱点を補完するメモリ型プロセッサである。
【産業上の利用可能性】
【０１７７】
この発明によるメモリ型プロセッサは、一般データデータベースはもとより、超大型データベース、超大型並列演算処理、各種認証、照合処理などの装置はもとより人工知能の装置の一部の機能として幅広く利用することが出来る。
またこの技術は情報処理開発に携わる技術者の負担を軽減し、しかも情報処理の電力を大幅に抑制することが出来るのでＩＴ機器の環境問題の解消に大きな意義をもつ。
将来に渡っては、多ｂｉｔで省スペースな超並列演算素子や、ＸＹ２軸双方向アドレスアクセス、２軸双方向レコード並列演算可能な素子の実現などより高度な情報処理機能を持ったメモリ型プロセッサとしての発展が期待できる。
【符号の説明】
【０１７８】
１００  メモリ
１０１  メモリ型プロセッサ
１０２  記憶セル
１０３  ワード幅（レコード数）
１０４  アドレス
１０５  １ｂｉｔ演算器（演算機能）
１０６  演算結果出力
１０７  演算結果
１１０  アドレス選択
１１１  演算条件指定機能
１１２  論理積
１１３  論理和
１１４  論理否定
１１５  排他論理和
１１６  論理記憶  
１２２  多ｂｉｔ演算器（演算機能）
１２３  1ｂｉｔ論理（ブール）演算器（演算機能）
１２４  １ｂｉｔ四則（算術）演算器（演算機能）
２０１  スイッチ
２０２  フリップフロップ（ＦＦ）
２０３  選択回路
２０４  メモリデータ
２０５  フリップフロップ結果出力
２０６  カウントデータ
２０７  １ｂｉｔ演算器バッファー
２０８  キャリーデータ
２０９  ボローデータ
２１０  半加算器
２１１  全加算器
２１２  シフトレジスタ
２１３  照合データ
２１４  優先順出力回路（プライオリテイエンコーダ出力）
２１５  レコードデータ
２１６  クロック信号
２１７  ＡＬＵ
【図１】
2018139017.tif 000003
【図２】
2018139017.tif 000004
【図３】
2018139017.tif 000005
【図４】
2018139017.tif 000006
【図５】
2018139017.tif 000007
【図６】
2018139017.tif 000008
【図７】
2018139017.tif 000009
【図８】
2018139017.tif 000010
【図９】
2018139017.tif 000011
【図１０】
2018139017.tif 000012
【図１１】
2018139017.tif 000013
【図１２】
2018139017.tif 000014
【図１３】
2018139017.tif 000015
【図１４】
2018139017.tif 000016
【図１５】
2018139017.tif 000017
【図１６】
2018139017.tif 000018
【図１７】
2018139017.tif 000019
【図１８】
2018139017.tif 000020
【図１９】
2018139017.tif 000021
【図２０】
2018139017.tif 000022
【図２１】
2018139017.tif 000023
【図２２】
2018139017.tif 000024
【図２３】
2018139017.tif 000025