(57)【要約】      （修正有）【課題】ＳＩＭＤ型（単一命令／複数データ）並列演算の効率を最大にして集積度を上げ、演算コアを１００％駆動することを可能にすることにより演算速度を高速にして、電力消費を大幅に軽減し、任意の並列度と演算時間を実現すると共に、半導体ＡＳＩＣならびにＦＰＧＡにも容易に実装できるＳＩＭＤ型並列演算アルゴリズムを提供する。【解決手段】多数のメモリセル１０４からなるメモリセル群２０２とＮ個の演算器１０９とで構成される演算装置２０３であって、メモリセル群２０２のメモリセル１０４をアクセスするためのアドレス線１０２により、１つのデータが２個以上のメモリセル１０４で構成されるデータをＮ組一括アクセスして読み出してＮ個の演算器１０９の演算入力に並列に入力し、Ｎ個の演算器の演算出力のＮ組の演算結果データを、Ｎ組の前記メモリセル１０９に一括書き込みする。【選択図】図２
2018156119.tif 000002
【特許請求の範囲】
【請求項１】
多数のメモリセルからなるメモリセル群とＮ個の演算器とで構成される演算装置であって
前記メモリセル群の前記メモリセルをアクセスするためのアドレス線は、１つのデータが２個以上のメモリセルで構成されるデータをＮ組一括アクセス可能な複数データアクセス手段を備え
前記一括アクセスされたアドレス線のＮ組のデータを一括読み出し、前記Ｎ個の演算器の演算入力に並列に入力する手段と
前記Ｎ個の演算器の演算出力のＮ組の演算結果データを、前記一括アクセスされたアドレス線の前記Ｎ組の前記メモリセルに一括書き込みする手段と
を具備することを特徴とするＳＩＭＤ型並列演算装置。
【請求項２】
前記演算器は
（１）四則演算
（２）浮動小数点演算
（３）比較演算
（４）論理演算
（５）シフト演算
（６）以上を組み合わせた多段演算
以上（１）から（６）のいずれかの演算を実行する演算器であることを特徴とする請求項１記載のＳＩＭＤ型並列演算装置。
【請求項３】
前記演算器の一部ならびに演算器の入力ビットの一部にマスクを掛け、演算器の一部ならびに演算器１０９の入力ビットの一部の入力に演算の影響をなくす演算手段を備えたことを特徴とする請求項１記載のＳＩＭＤ型並列演算装置。
【請求項４】
前記演算器の前記演算結果を外部出力する手段を備えたことを特徴とする請求項１記載のＳＩＭＤ型並列演算装置。
【請求項５】
前記演算器の前記Ｎ個の演算器の演算入力に外部からのデータを入力する手段を備えたことを特徴とする請求項１記載のＳＩＭＤ型並列演算装置。
【請求項６】
請求項１記載の前記並列演算装置は１つの半導体チップ内に構成されたことを特徴とするＳＩＭＤ型並列演算半導体チップ。
【請求項７】
ＣＰＵや他のＬＳＩと組み合わせされ１つの半導体チップ内に構成されたことを特徴とするＳＩＭＤ型並列演算半導体チップ。
【請求項８】
請求項１記載の前記並列演算装置はＦＰＧＡに実装されたことを特徴とするＳＩＭＤ型並列演算半導体チップ。
【請求項９】
前記メモリセル群と前記演算器が分割され、前記メモリセルが独立したチップであることを特徴とする請求項５ならびに請求項６、７記載のＳＩＭＤ型並列演算半導体のメモリチップ。
【請求項１０】
前記メモリセル群と前記演算器が分割され、前記演算器が独立したチップであることを特徴とする請求項５ならびに請求項６、７記載のＳＩＭＤ型並列演算半導体の演算チップ。
【請求項１１】
請求項６、７、８記載の半導体チップを複数用意し並列演算させることを特徴とするＳＩＭＤ型並列演算方法。
【請求項１２】
複数の請求項９記載のメモリチップと１つの請求項１０記載の演算チップを組合せ並列演算させることを特徴とするＳＩＭＤ型並列演算方法。
【請求項１３】
１つの請求項９記載のメモリチップと複数の請求項１０記載の演算チップを組合せ並列演算させることを特徴とするＳＩＭＤ型並列演算方法。
【請求項１４】
複数のアドレスのデータを合成して１つのデータとして並列演算することを特徴とするＳＩＭＤ型並列演算方法。
【請求項１５】
請求項１から請求項１０記載の
（１）ＳＩＭＤ型並列演算装置
（２）ＳＩＭＤ型並列演算半導体チップ
（３）ＳＩＭＤ型並列演算半導体のメモリチップ
（４）ＳＩＭＤ型並列演算半導体の演算チップ。
以上（１）から（４）のいずれかを含んだシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＳＩＭＤ型並列演算装置、ＳＩＭＤ型並列演算半導体チップ、ＳＩＭＤ型並列演算方法、ＳＩＭＤ型並列演算装置や半導体チップを含んだ装置に関する。
【背景技術】
【０００２】
本願発明の目的を明確にするためにＣＰＵやＧＰＵの課題を示す。
図１は、特徴データ照合の例である。
データベースには、特徴１から特徴Ｎまでの８ビット（０〜２５５）のデータが対象Ａから対象Ｚまで登録されており、このデータベースに照合する問い合わせ照合データが与えられ、本図の下部には互いの特徴データ同士の差を求め、その差の合計（差和演算）を求め、その最も小さいものが最も類似した対象であるとして、対象Ｃが類似照合結果として判定される様子が示されている。
【０００３】
照合対象が国際空港の入出国のテロリストや犯罪者顔の照合であれば、対象Ａから対象Ｚの顏（人）の数は１００万（１Ｍ）人にものぼり顏の特徴の種類を１０００（１Ｋ）とした場合、１Ｋ＊１Ｍ＝１Ｇ回の差和演算を繰り返す必要がある。
１つのＣＰＵで１回当たりの差和演算１１９を１０ｎ秒とした場合、１０秒もの時間が掛りとてもリアルタイムで利用することは出来ない。
【０００４】
また照合対象が手書き文字の照合であれば対象Ａから対象Ｚの文字の数が日本語の場合３０００（３Ｋ）文字でその特徴を２５６種類とした場合、２５６＊３Ｋ＝７６８Ｋ回の差和演算１１９を繰り返す必要がある。
【０００５】
先ほど同様１回当たりの差和演算を１０ｎ秒とした場合、７．６８ｍ秒の時間が必要になり一秒間では約１３０文字しか読み取れない、原稿用紙１枚分の文字を読み取るのに３秒近くの時間が必要になる。
【０００６】
以上はこの発明の意図や目的を説明するのに都合のよい類似度を評価するための差和演算１１９の例で説明を行ったが積和演算１２０やその他の行列演算（ベクトル演算）も同様であり、その応用は指紋、静脈などの生体認証や印鑑の照合など枚挙に暇がない。
また膨大なデータを扱う気象や流体の分子の動きなどのシミュレーションにも行列演算は欠かすことが出来ない。
行列データの演算のような大量のデータの繰り返し演算は一般的なＣＰＵにとって極めてつらい処理である。
ＣＰＵは情報処理のあらゆる処理をこなす汎用プロセッサであるが、逐次処理が基本となるので繰り返し演算が頻発するような情報処理では様々な課題が残されている。
【０００７】
ＣＰＵのこのような課題を軽減するために利用されるＧＰＵは１つのチップに大量の演算コアを抱え並列処理をすることでこれらの問題を解決しようとするものである。
ＧＰＵは大量の演算処理が必要な画像処理を高速で実現することを目的として誕生したが基本的にはＣＰＵと同様な情報処理アーキテクチャを踏襲している。
【０００８】
最近ではＧＰＧＰＵとして画像処理以外、タンパク質の構造解析や流体解析や振動解析など大量な行列ベクトル計算が必要な情報処理に利用されている。
ＧＰＵはＳＩＭＤ型情報処理で利用される場合が大半であるがＣＰＵと同様な情報処理アーキテクチャを踏襲しているので、多数の独立した演算器とその演算器毎に専用のメモリを有しそれぞれの演算器はそれぞれのプログラムとデータに基づき独立して演算を行う構成である。
【０００９】
以上のようにそれぞれの演算器が独立して動作する構成であるので、例えば演算器ではプログラムを解読するための回路、演算タスクを制御するための回路や、メモリのアドレスデコーダさらには演算コアを動かすためのメモリなどそれぞれ独立して、それぞれの回路を持つ必要があり回路やメモリが重複する結果になっている。
【００１０】
またそれぞれが独立して動作する構造であるため、通常はＣＰＵの支配下でＧＰＵのＯＳを起動し常にＧＰＵの演算器の負荷が適切で均等に動作できるようソフトウエアでコントロールするもののプログラムの並列化は難しく各演算コアに均等に処理を与えることは困難であり、演算コアの遊びが生じてしまう、折角沢山の演算コアがあっても多くの演算コアが遊んでいては意味がない。
【００１１】
またＧＰＵは演算コアが数千個など多くなると例えば３００ワットを超えるような大電力を消費し発熱も大きくなり携帯機器やロボットなどの頭脳として利用することが出来ない。
【００１２】
半導体微細化技術の限界も間近にせまり従来型アーキテクチャでは性能アップが期待出来なくなる時代がまもなくやってくるが、様々な分野で演算性能向上と省電力化に対する期待が高まっている。
【００１３】
最近話題になっている人工知能技術の１つであるニューラルネットワークにおいてもシステムの規模が極めて大きくなり、開発を進めるにも実用化するために大きな障害になっている。
一例を挙げればニューラルネットワークは最適な動作を得るために様々な条件を与え学習を繰り返す必要があるが大規模なネットワークになると例えば１万６０００個のＣＰＵを使用しても学習時間が数日から１週間程度もかかることがネット情報で公開されている。
【００１４】
言うまでもなく１回の学習で最適な動作を得ることは困難であり、繰り返し、繰り返し最適な動作が得られるようチューニングを行わなくてはならない。
このように莫大なハードウエア資源を利用しても多大な学習時間が掛かることがこの技術の成長の妨げになっている。
【００１５】
後述するがニューラルネットワークは大量の積和演算１２０を実行する必要がある、大掛かりなシステムとすることなく演算性能を上げ、小型省電力、低発熱の装置が実現し、しかも学習時間が短縮できれば、この技術の進化は大幅に加速する。
【００１６】
以上のようにシステムを大規模にすることなく効率がよい並列処理の要求が高まっている。
【００１７】
この発明の特徴はＳＩＭＤ型（単一命令／複数データ）並列演算処理を行う上で共通化できるところは共通化して無駄な回路や機能を取り除くことにより、集積度を向上し、電力消費や発熱を最小限に抑え、しかもＳＩＭＤ型の並列演算処理の効果が最も高い並列演算装置や並列半導体演算チップを提供するものである。
【００１８】
ＧＰＵの演算能力を高めるためにはメモリアクセス方法を最適化することが不可欠でありそのために様々な手法が取り入られている、しかしながらＧＰＵはＳＩＭＤ型演算を基本としているのでＧＰＵを大幅にスリム化して集積度が高め、しかも演算器の演算効率を高めれば高速化が可能になることは自明のことである。
【００１９】
本願発明者はこれまでメモリ型コンピューティングによるメモリ型プロセッサはノイマン型コンピュータの様々の課題を解決出来ることを提案、これまで様々な特許を出願し実用化を進めている、以下に代表的な特許文献を示す。
【００２０】
特許第４５８８１１４号、情報絞込み検出機能を備えたメモリは、画像や音声のパターンマッチを超高速で実現するメモリ型プロセッサである。
従来のソフトウエアパターンマッチに比較して数万倍以上高速であることが実証されている。
【００２１】
特願２０１３−２６４７６３は情報検索機能を備えたメモリは、データベースのレコードを超高速で検索するメモリ型プロセッサである。
従来のソフトウエアによる検索に比較して数万倍以上高速であることが実証されており、この技術が本願発明のきっかけとなっている。
【００２２】
他者の発明による特願２００８−１２３４７９  ＳＩＭＤ及びそのためのメモリアレイ構造、はＳＩＭＤ型プロセッサとメモリで構成されるものであるがデータの衝突回避を目的とするものであり目的も手法も全く別のものである。
【００２３】
特願２０１１−０２３０３７  並列データ処理装置、はＳＩＭＤアレイを備え、ブロックごとの演算を独立して行うものであるが手法は全く別のものである。
【００２４】
詳細は明らかではないが、マイクロン社のオートマトン演算チップでは２５６行×４９５１２列のＤＲＡＭアレイを並列に読み出し超高速なオートマトン演算を実現した事例がネット上に公開されているが本発明の目的とは異なるもので、他の先願発明からも本願発明のようにメモリのアドレス線を直接ドライブするようなＳＩＭＤ型演算方式は見受けられない。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特許第４５８８１１４号
【特許文献３】特願２０１３−２６４７６３
【特許文献４】特願２００８−１２３４７９
【特許文献５】特願２０１１−０２３０３７
【発明の概要】
【発明が解決しようとする課題】
【００２６】
ＧＰＵなどの従来型ＳＩＭＤ型並列演算は、独立した演算コアとそのメモリで構成されるため回路規模が大きくなり集積度が上がらない、またＣＰＵならびにＧＰＵのＯＳを介してのＧＰＵ駆動の準備処理やメモリへのデータ転送、それに伴うＧＰＵ内部の演算器の割り当てやタスク割り当て制御や管理などのオーバヘッドや、演算器そのものの遊びによって演算速度が犠牲になり、消費電力が大きくなりがちである。
【００２７】
本願発明ではＳＩＭＤ型並列演算の効率を最大にして集積度を向上し、ハードウエア限界の演算速度を実現可能にするばかりでなく、適正な演算速度と適正な電力消費を選択可能な構成とし、複数利用することにより任意の並列度と演算時間を実現すると共に、半導体ＡＳＩＣならびにＦＰＧＡにも容易に実装できるＳＩＭＤ型並列演算アルゴリズムを提供する。
【課題を解決するための手段】
【００２８】
請求項１では
多数のメモリセルからなるメモリセル群とＮ個の演算器とで構成される演算装置であって
前記メモリセル群の前記メモリセルをアクセスするためのアドレス線は、１つのデータが２個以上のメモリセルで構成されるデータをＮ組一括アクセス可能な複数データアクセス手段を備え
前記一括アクセスされたアドレス線のＮ組のデータを一括読み出し、前記Ｎ個の演算器の演算入力に並列に入力する手段と
前記Ｎ個の演算器の演算出力のＮ組の演算結果データを、前記一括アクセスされたアドレス線の前記Ｎ組の前記メモリセルに一括書き込みする手段と
を具備することを特徴とする。
【００２９】
請求項２では
前記演算器は
（１）四則演算
（２）浮動小数点演算
（３）比較演算
（４）論理演算
（５）シフト演算
（６）以上を組み合わせた多段演算
以上（１）から（６）のいずれかの演算を実行する演算器であることを特徴とする。
【００３０】
請求項３では
前記演算器の一部ならびに演算器の一部の入力ビットにマスクを掛け、演算器の一部ならびに演算器１０９の入力ビットの一部の入力に演算の影響をなくす演算手段を備えたことを特徴とする。
【００３１】
請求項４では
前記演算器の前記演算結果を外部出力する手段を備えたことを特徴とする。
【００３２】
請求項５では
前記演算器の前記Ｎ個の演算器の演算入力に外部からのデータを並列に入力する手段を備えたことを特徴とする。
【００３３】
請求項６では
請求項１記載の前記並列演算装置は１つの半導体チップ内に構成されたことを特徴とする。
【００３４】
請求項７では
ＣＰＵやＧＰＵなど他のＬＳＩと組み合わせされ１つの半導体チップ内に構成されたことを特徴とする。
【００３５】
請求項８では
請求項１記載の前記並列演算装置はＦＰＧＡに実装されたたことを特徴とする。
【００３６】
請求項９では
前記メモリセル群と前記演算器が分割され、前記メモリセルが独立したチップであることを特徴とする。
【００３７】
請求項１０では
前記メモリセル群と前記演算器が分割され、前記演算器が独立したチップであることを特徴とする。
【００３８】
請求項１１では
請求項６、７、８記載の半導体チップを複数用意し並列演算させることを特徴とする。
【００３９】
請求項１２では
複数の請求項９記載のメモリチップと１つの請求項１０記載の演算チップを組合せ並列演算させることを特徴とする。
【００４０】
請求項１３では
１つの請求項９記載のメモリチップと複数の請求項１０記載の演算チップを組合せ並列演算させることを特徴とする。
【００４１】
請求項１４では
複数のアドレスのデータを合成して１つのデータとして並列演算することを特徴とする。
【００４２】
請求項１５では
請求項１から請求項１０記載の
（１）ＳＩＭＤ型並列演算装置
（２）ＳＩＭＤ型並列演算半導体チップ
（３）ＳＩＭＤ型並列演算半導体のメモリチップ
（４）ＳＩＭＤ型並列演算半導体の演算チップ。
以上（１）から（４）のいずれかを含んだシステム。
【図面の簡単な説明】
【００４３】
【図１】図１は、データの照合（特徴データの照合）の例である。（実施例２）
【図２】図２は、並列演算装置もしくは半導体並列演算チップの全体構成例である。
【図３】図３は、並列演算装置もしくは半導体並列演算チップの詳細構成例である。（実施例１）
【図４】図４は、ニューラルネットワークの構成例である。（実施例３）
【図５】図５は、ニューラルネットワークのユニット例である。
【発明を実施するための形態】
【００４４】
図２は、並列演算装置ならびに並列演算半導体チップ２０１の全体構成図である。
本図はメモリや演算機能の細かな回路構成は割愛し、本願発明の概念のみを説明するためのものであり、図の上段部分はメモリ部２０２となっており、図の下段部分は演算部２０３になっている。
【００４５】
後述するがメモリセルの種類も演算器の種類も任意であり、複数のＬＳＩの組み合わせで装置を構成するも、１つの半導体チップに実装することも、その他の機能を盛り込んだ半導体チップとすることも自由である。
【００４６】
この並列演算装置または並列演算半導体チップ２０１は演算グループ１から演算グループＮまでＮ個の演算グループが完全並列演算可能な構成になっている。
【００４７】
メモリ１０３は複数のメモリセル１０４で構成されるデータがＮグループとも１つのアドレス１０１でアクセス可能なように１本のアドレス線１０２に接続されており、任意のアドレス１０１が選択（アクセス）可能な構成になっている。
【００４８】
本例のアドレスＸからアドレスＸ＋ｎは１つのデータが９＋９ビット、アドレスＹからアドレスＹ＋ｍは１７＋１７ビットのメモリセル１０４となっており演算器１０９の演算入力データＡ１２３側もしくは演算入力データＢ１２４側の一方もしくは双方の入力に加えられる構成になっている。
【００４９】
メモリセルの割付は必要なデータ幅や符号、桁上げなどを考慮し決めればよい、言うまでもなくデータ幅は演算の精度に影響する。
またメモリセル１０４は演算入力データＡ１２３側、Ｂ１２４側いずれか一方とすることも可能である。
アドレスの数も任意であり、演算グループの数も任意である。
様々なデータ幅のアドレスを持たせることも、様々な演算を混載させることも任意である。
【００５０】
演算部２０３の各ビット線（データ線）１０５には、メモリセル群のデータを読み出し演算器１０９の演算入力データ１２３側、１２４側にデータを代入するか、演算器１０９の演算結果１１０をメモリセル群に書き込みをするか、を切り替えるためのＲ／Ｗ切替スイッチ１０６が付いている。
【００５１】
演算器１０９は演算グループ毎にＮ個一列に配列されこの演算器１０９の入力には、アドレスを指定しアクセスされたメモリセル１０４のビット線（データ線）１０５を通じ読み出されたＮ個のデータと、必ずしも外部からの入力データを必要とするものではないが、本例では外部からの入力データ１２５（本例では９ビット）が演算器１０９の演算入力データＡ１２３側に入力可能な構成になっている。
【００５２】
外部からの入力データを利用せず、メモリセルに記憶されたデータ同志のみでバッチ処理演算することも可能である。
【００５３】
演算器１０９の演算結果１１０は入出力インターフェース１１３に接続され、演算結果を例えばＰＣＩ−eなど任意の出力形態で演算出力１０８として出力することが出来る。
またメモリ記憶データ１０８は入出力インターフェース１１３から、メモリセル１０４に記憶するデータを外部から入力することが出来る。
【００５４】
先に示した通りこの演算結果１１０はビット線（データ線）１０５を通じて指定しアクセスしたアドレスのメモリ１０３に書き込みすることが可能である。
一例に過ぎないが例えば符号付き８ビットデータ同士の乗算であれば桁上げが発生するので、図に示すアドレスＹからアドレスＹ＋ｍの１７ビットのデータ幅で構成されるアドレスに書き込みすればよい。
【００５５】
従って本例の場合はメモリ部のＮ個のデータと外部から与えられるＮ個の入力データをＮデータ並列に直接ＳＩＭＤ演算しその演算結果を出力もしくはメモリに記憶することが出来る構成である。
【実施例１】
【００５６】
図３は、１演算グループの詳細を示すものである。
本図は、並列接続された演算グループ１から演算グループＮの中の１つのグループのメモリ１０３と演算器１０９、入力データ１２５、ならびに入出力インターフェース１１３の詳細を示すものである。
メモリセル１０４はアドレスＸからアドレスＸ＋ｎまでは８ビットデータ＋符号１ビットの合計９ビットデータで構成されており、またアドレスＹからアドレスＹ＋ｍは８ビットデータが２組み＋符号１ビット合計１７ビットデータで構成されている。
【００５７】
先に示したとおり、データの長さやそのデータの割り付けは任意である。
また本例では、演算器１０９の演算入力データＡ１２３側、演算入力データＢ１２４側の双方にメモリセル１０４が取り付けられており、両方のデータを読み出すか、一方のみのメモリセルを読み出すか、反対に両方のデータに書き込むか、一方のみのメモリセルに書き込むか任意の選択が出来る構成である。
【００５８】
以上のような処理は演算器１０９の一部ならびに演算器１０９の入力ビットの一部、さらに演算出力の一部にマスクを掛け、演算器１０９の一部ならびに演算器１０９の一部の入力の演算の影響をなくすように演算条件を与えることも、演算結果の一部を無視（マスク）してメモリセルに記憶するようにすることも自由な構成である。
【００５９】
利用するデータの種類や長さなどこのメモリセルの配列と利用方法は任意に定めることが出来る。
【００６０】
Ｒ／Ｗ切替スイッチ１０６がＲ（読み出し）の場合、アクセスされたアドレスのメモリセル１０４からのデータはビット線（データ線）１０５を通じて演算器１０９に入力される。
またＲ／Ｗ切替スイッチ１０６がＷ（書き込み）の場合、演算器１０９の演算結果をアクセスされたアドレスのメモリセル１０４に書き込みすることが可能である。
【００６１】
外部から入力される入力データ１２５（本例では９ビット）は先に示したメモリセルの読み出しビット線と論理和ゲートを通じて、演算器１０９の演算入力データＡ１２３側の入力に加えられる構成である。
この入力データ１２５は演算器１から演算器Ｎまで共通（並列）に与えられる。
【００６２】
本例では、外部から与えられる入力データ１２５が全演算器共通に与えられる場合を示したが、それぞれの演算器１０９毎に異なったデータを入力することも可能である。
【００６３】
演算器１０９を多段接続することも可能でその場合、毎回の演算結果１１０をメモリに一時記憶させる必要がなくなるので演算が極めて効率的でありその分高速化が図れる、詳細は後述する。
【００６４】
このようなＳＩＭＤ型並列回路の特徴は、独立したメモリと独立した演算器で実現されるＧＰＵなどの回路と比較して、
（１）メモリ部については演算器毎のプログラム記憶用のメモリが不要になり演算データ記憶用のメモリだけでよい、またアドレス選択回路（アドレスデコーダ含む）が１組で済む。
（２）演算部に関しては演算器毎のプログラム解読器回路、各演算器の演算タスク制御や管理などの回路などが不要になる。
など共通部分回路を大幅に省くことができる、従って集積度が上がり経済性も高くなる。
【００６５】
さらに特徴的なことは、アドレス線１０２をアクセスすることが直接ＳＩＭＤ型並列演算を実行することになるので、役割を与えたすべての演算グループを一瞬たりとも遊ばせることなく極めて効率的で高速な演算をさせることが可能になる。
【００６６】
一般的な演算ではメモリからのデータの読み出しと、そのデータに基づく演算の最低２サイクルが必要である。
この方法では１サイクルとすることができる、つまりメモリレイテンシと演算レイテンシをバランスさせれば最高速の演算が可能になる。
一般的にはメモリレイテンシの方が大きいので例えばメモリを演算器内部のレジスタや高速キャッシュメモリのようなメモリを直接ドライブする構成にすれば現在の半導体技術の極限的な超高速並列演算が可能になる。
【００６７】
従って通常のＧＰＵの場合のように各演算器の稼働率を気にすることなく、並列演算の性能がＣＰＵやＧＰＵのＯＳの性能やプログラマの熟練度に左右されることなく、いつも高速で確実な演算結果を生み出すことが可能になる。
【実施例２】
【００６８】
図１で示した手書き文字照合を本願発明の並列演算装置もしくは並列演算半導体チップ２０１で実現する場合を説明する。
日常的に利用される日本語は３０００文字程度であるので演算グループＮを３０００（３Ｋ）とし本例の場合１文字あたりの特徴を２５６種類として、メモリならびに演算器は３０００組（グループ）用意されているものとする。
【００６９】
この手書き文字の特徴データは符号なしの８ビットデータ（０〜２５５）であるので、図２で示すアドレスＸからアドレスＸ＋２５５まで符号なしで１文字を１演算グループとして演算入力データＢ１２４側に順番に登録（書き込み）する。
以上でデータベースならびに演算の準備が完了する。
【００７０】
以上の状態で、照合データの特徴１と、データベースの特徴１の差を求める場合、先ずはＲ／Ｗ切替スイッチ１０６をＲ、つまり読み出しモードにしておき、演算器１から演算器Ｎには外部演算条件１１４入力から減算指令を与えておく。
【００７１】
照合の際、照合データは入力データ１２５の入力７から入力０に並列（同時）に与えられ、演算グループ１から演算グループＮの演算器の演算入力データＡ１２３側に並列（同時）に与えられる。
【００７２】
特徴１のデータベースが記憶されているアドレスＸをアクセスし読み出し、演算入力データＢ１２４側に入力することにより、ＡＢ双方の演算データが演算器１から演算器Ｎの入力に並列（同時）に加えられることになる。
【００７３】
以上の入力ならびに減算演算条件で演算を実施すると３Ｋ全演算器１０９の出力には特徴１の差分のデータが並列（同時）出力される。
【００７４】
次にＲ／Ｗ切替スイッチ１０６をＷ、つまり書き込みモードとし、アドレスＹをアクセスし以上の演算結果をメモリセルの演算入力データＢ１２４側に一時記憶する。
【００７５】
同様にデータベースの特徴２の差を求める場合、Ｒ／Ｗ切替スイッチ１０６をＲにし、演算器１から演算器Ｎには減算指令を与え、演算入力データＡ１２３側には外部からの照合データの特徴２データを与え、演算入力データＢ１２４側には特徴２のデータベースが記憶されているアドレスＸ＋１をアクセスし読み出すことにより、ＡＢ双方の演算データが演算器１から演算器Ｎに並列に加えられる。
【００７６】
以上の入力ならびに演算条件で演算を実施することにより全演算器１０９の出力には差分のデータが並列に出力される。
Ｒ／Ｗ切替スイッチ１０６をＷにし、この演算結果をアドレスＹの演算入力データＡ１２３側に並列に一時記憶する。
【００７７】
次にＲ／Ｗ切替スイッチ１０６をＷにし、演算器１０９の演算条件を加算として、先に一時記憶されたアドレスＹを読み出し演算器１０９に入力すると、二つの差が加算され特徴１と特徴２の差和演算１１９が並列に実施される。
【００７８】
この演算結果を再びアドレスＹの演算入力データＢ１２４側に並列に一時記憶する、アドレスＹの演算入力データＢ１２４側は累積された差和演算結果である。
以上を特徴２５６まで繰り返すことにより、３０００文字の差和演算１１９が完成する。
【００７９】
本例は演算器が１グループ１段の構成であるが差の演算器と和の演算器の双方を用意し多段接続した構成の場合、特徴差分データを毎回アドレスＹに一時記憶させる必要がなくなるのでさらに効率のよい演算が可能になる。
【００８０】
本方式はハードウエア限界速度まで性能を上げることが可能であるが、一例として以上の特徴１つの差和演算時間が１ｎ秒であれば２５６特徴の合計照合演算時間は２５６ｎ秒であり１０ｎ秒であれば２．５６μ秒である、１０ｎ秒であっても先に示した１つのＣＰＵによる処理より確実に３Ｋ倍高速になる。
通常の場合、実際に処理を実行して見ないと、どの程度のスループットが出るか分からない場合が多いがこの方式は常に実力値通りの演算速度を約束する。
【００８１】
この差和演算１１９結果を例えばＰＣＩ−ｅなどのインターフェースで出力しその結果を通常のＣＰＵ等によって最小値を求めればよい。
【実施例３】
【００８２】
以下に最近話題になっているニューロネットワークへの応用について示す。
ニューロネットワークは様々な形式があるが、一番基本的な内容で本願発明に関連する要点のみを示す。
【００８３】
図４はニューラルネットワークの構成例である。
図に示すように、一般的なニューロネットワークは多数のニューロユニットで構成される入力層、中間層、出力層のなど幾つかの層からなり、一つの層の出力が次段の層の入力となるように配線されたネットワークからなる。
ニューロネットワークを構成するユニットの数は様々であるが、本例では仮に入力層、中間層、出力層それぞれが１０００（１Ｋ）で合計３０００（３Ｋ）であった場合で説明する。
【００８４】
図５は、ニューロネットワークを構成する中間層の１ユニットの概念図である。
中間層の１ユニットには入力層から１Ｋの入力が並列に与えられ、その並列入力の演算結果が集計され１つの出力として出力されることになる。
このユニットは１Ｋの入力層の入力ニューロユニットよりのアナログ出力データを受けると、入力１から入力ｎ（本例の場合１Ｋ）毎に設定された結合荷重データと、アナログ入力データの値を乗算し全ての入力データと結合荷重データの積和演算１２０を実行し、全ての積和演算終了後、閾値の演算やシグモイド関数など所定の演算を行いその結果を出力することになる。
【００８５】
この処理で一番負担の多い処理は言うまでもなく１０００（１Ｋ）個のニューロユニットがそれぞれ１０００（１Ｋ）回繰り返し合計１００万（１Ｍ）回の積和演算１２０を行う必要がありニューラルネットワーク演算時間の大半を占めることになる。
同じような積和演算処理を出力層のニューラルユニットでも行う必要がありネットワーク全体では合計２００万（２Ｍ）回の演算をする必要がある。
【００８６】
以上の説明は入力層から中間層、中間層から出力層に向かうニューラルネットワークの一般的な動作である正伝播の例を示したものである。
この正伝播の演算時間の場合、仮に１つのＣＰＵが１０ｎ秒で積和演算した場合、１０ｎ秒＊２Ｍ回＝２０ｍ秒であり、特段問題になる数字ではない。
【００８７】
ニューラルネットワークはネットワークに適切な学習を行うことによりネットワークから所定の演算結果を得ようとするものである。
通常この学習は出力層から中間層、中間層から入力層へのバックプロパゲーションと呼ばれる逆伝播演算を繰り返し、学習の都度の評価関数の誤差のレベルが所定の値以下となるまで学習を繰り返す必要がある。
【００８８】
例えば手書き文字などの場合、例えば「あ」を学習する場合、例えば１００人が書いた手書き文字を読み取り、誰の文字でも「あ」の出力が出るまで繰り返し学習させ、先の結合荷重データや閾値が最適になるまで繰り返し、学習のための逆伝播演算を行う必要がある。
【００８９】
この演算は通常１文字当たり数千回繰り返しする必要があり、文字数３０００回同じ処理を繰り返す必要があるので最低でも１０Ｍ回（１０００万回）程度の学習が必要である。
【００９０】
逆伝播演算の細部は割愛するが、これらの逆伝播演算もユニット１つ１つの積和演算の繰り返しであり本例のようなニューラルネットワークでは先に説明の２Ｍ回の積和演算を１０Ｍ回逆伝播学習させた場合の積和演算回数は２０Ｔ回もの演算となる。
仮にＣＰＵ１個で１回の積和演算を１０ｎ秒で連続的に実行しても２０Ｔ回演算を繰り返すと、積和演算だけでも２００、０００秒、５５．５時間かかる計算になり、その時間が待ち時間となる。
【００９１】
以上のような学習が１回で完了することは希であり、学習結果を見ながら先に示した結合荷重や閾値をチューニングする必要がある。
以上がニューラルネットワーク技術最大の問題であり、画像認識などのように１層当たりのネットワークユニットが１万個を超えるようになると、ＧＰＵを使って如何に演算時間を短縮できるかが鍵になる。
然しながら従来型のＧＰＵで高速化を狙うと発熱が大きくシステムが大型化して大電力を浪費することになる。
【００９２】
現在市場に出ているＦＰＧＡは千個以上の演算器とＳＲＡＭを標準装備しているものも少なくなく、これらの演算器とメモリを組合せすることによりＦＰＧＡでも容易に本願発明を実現することができる、一般的なＦＰＧＡであれば数ワットから十数ワット程度であるので低電力で並列度高いチップが容易に実現できる。
【００９３】
例えばFPGA１チップに３Ｋの並列演算器を実装し１回の積和演算１２０を１０ｎ秒とした場合先ほどの学習時間の積和演算にかかる時間は、１／３K、つまり６６秒に短縮される。
言うまでもなくこれを複数利用することによりさらに超並列で超高速して低電力消費のシステムが実現できる。
【００９４】
回路構成を自由に修正可能なＦＰＧＡによる本願発明はニューラルネットワークの場合のように試行錯誤で最適な回路を探し出す場合に最適である。
【００９５】
本発明により半導体チップ化した場合、ＦＰＧＡに比較して１桁程度演算時間を短縮することができる、ＧＰＵなどの従来型のＳＩＭＤ回路の無駄な回路がなくなるのでメモリや演算器の並列度を上げることが出来る。
またＧＰＵの各コアを駆動するため前処理などのオーバヘッドも不要になり、演算コアの遊びも解消できるのでハードウエア限界性能を求めることができる。
従ってこの技術はスリムで超高速なＳＩＭＤ専用新型ＧＰＵとなる。
【００９６】
以下にこの技術の注意点や応用を記す。
【００９７】
この技術の特徴はアドレス線のドライブ能力が重要である。
また演算グループを幾つかにバンク分けして微小時間ずらしてデータを読み書きすることにより大量のメモリセルドライブや演算器の突入電流を制限することができる。
クロック周波数の切替により１演算時間を１ｎ秒から１０ｎ秒など自由にコントロールして演算性能が優先か消費電力が優先かにより任意の演算時間を選択するようなことも可能になるので、チップ当たりや１W当たりの演算能力が大きな演算器を実現させることが可能になる。
以上のことは、半導体微細化技術の限界が間近にせまり、従来型アーキテクチャでは性能アップが期待できなくなる近未来極めて大きな価値を生み出す。
【００９８】
これまで演算器１０９の演算は実数の四則演算１１５を中心に説明してきたが、浮動小数点演算１２７とすることや、一致や大小、範囲などの比較演算１１６、ＡＮＤ、ＯＲ、ＮＯＴなどの論理演算１１７、演算器内部や互いの演算器に跨ったデータのシフト演算、以上を多段組み合わせしたＳＩＭＤ演算に共通に利用できる。
【００９９】
一例であるが浮動小数点演算の場合演算器１０９の性能に合わせメモリセルのデータ割り付けを行えばよい。
【０１００】
データ長の長いロングデータの場合、複数のメモリアドレスのデータを繰り返し読みこみ、所定回数読み込んだデータを一つのロングデータとして演算することも可能である。
【０１０１】
本願発明のメモリセル１０４はＳＲＡＭメモリやＤＲＡＭメモリ、ＦＬＡＳＨメモリはもとより、今後市場に出回る抵抗型メモリや磁気メモリなど全てのメモリセル共通に利用可能である。
演算性能や演算コストを考え様々なメモリや様々なメモリをアドレス毎に混載することも可能である。
【０１０２】
メモリ部２０２と演算部２０３を独立分離し、独立分離された装置や半導体チップを組合せ利用するとメモリ資源や演算器資源を無駄なく効率的に利用することが可能である。
【符号の説明】
【０１０３】
１０１  アドレス
１０２  アドレス線                                                                                
１０３  メモリ                                                                           
１０４  メモリセル                                                                                
１０５  ビット線（データ線）                                                                     
１０６  Ｒ／Ｗ切替スイッチ                                                                                
１０７  演算入力                                                                      
１０８  演算出力＆メモリ記憶データ                                                         
１０９  演算器                                                                         
１１０  演算結果                                                          
１１１  演算結果レジスタ                                                                       
１１２  論理和（ＯＲ）ゲート                                                         
１１３  入出力インターフェース                                                                           
１１４  演算条件                                                                      
１１５  四則演算                                                                      
１１６  比較演算                                                                      
１１７  論理演算                                                                      
１１９  差和演算                                                                      
１２０  積和演算                                               
１２３  演算入力データＡ                                                                                  
１２４  演算入力データＢ                          
１２５  入力データ                                                                               
１２６  符号                                                                                       
１２７  浮動小数点演算
２０１  並列演算装置ならびに並列演算半導体チップ
２０２  メモリ部
２０３  演算部
【産業上の利用可能性】
【０１０４】
この発明によるＳＩＭＤ型並列演算器は応用範囲が広く、並列演算集積度を高め、一般的な演算スピードから超高速な演算スピードまで自由な設定が可能になり、演算性能優先か消費電流優先かシステムに合わせて最適な利用環境を提供することができる。
ＦＰＧＡでも容易に実現できるので一般的なデータ演算はもとより携帯機器の認証機能やロボットの頭脳に最適であり、多くのＧＰＵニーズをこの技術に置き換えることができる。
【図１】
2018156119.tif 000003
【図２】
2018156119.tif 000004
【図３】
2018156119.tif 000005
【図４】
2018156119.tif 000006
【図５】
2018156119.tif 000007
【手続補正書】
【提出日】平成27年7月29日(2015.7.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
最近ではＧＰＧＰＵとして画像処理以外、タンパク質の構造解析や流体解析や振動解析など大量な行列ベクトル計算が必要な情報処理に利用されている。
ＧＰＵはＳＩＭＤ型情報処理で利用される場合が大半であるがＣＰＵと同様な情報処理アーキテクチャを踏襲しているので、多数の独立した演算器または演算グループとその演算器毎に専用のメモリを有しそれぞれの演算器はそれぞれのプログラムとデータに基づき独立して演算を行う構成である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
以上のようにそれぞれの演算器または演算グループが独立して動作する構成であるので、例えば演算器ではプログラムを解読するための回路、演算タスクを制御するための回路や、メモリのアドレスデコーダさらには演算コアを動かすためのメモリなどそれぞれ独立して、それぞれの回路を持つ必要があり回路やメモリが重複する結果になっている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
ＧＰＵなどの従来型ＳＩＭＤ型並列演算は、独立した演算コアまたは演算グループとそのメモリで構成されるため回路規模が大きくなり集積度が上がらない、またＣＰＵならびにＧＰＵのＯＳを介してのＧＰＵ駆動の準備処理やメモリへのデータ転送、それに伴うＧＰＵ内部の演算器の割り当てやタスク割り当て制御や管理などのオーバヘッドや、演算器そのものの遊びによって演算速度が犠牲になり、消費電力が大きくなりがちである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
本発明により半導体チップ化した場合、ＦＰＧＡに比較して１桁程度演算時間を短縮することができる、ＧＰＵなどの従来型のＳＩＭＤ回路の無駄な回路がなくなるのでメモリや演算器の並列度を上げることが出来る。
またＧＰＵの各演算コアや演算グループを駆動するため前処理などのオーバヘッドも不要になり、演算コアの遊びも解消できるのでハードウエア限界性能を求めることができる。
従ってこの技術はスリムで超高速なＳＩＭＤ専用新型ＧＰＵとなる。