WO2017010524A1 - Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。 - Google Patents

Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。 Download PDF

Info

Publication number
WO2017010524A1
WO2017010524A1 PCT/JP2016/070723 JP2016070723W WO2017010524A1 WO 2017010524 A1 WO2017010524 A1 WO 2017010524A1 JP 2016070723 W JP2016070723 W JP 2016070723W WO 2017010524 A1 WO2017010524 A1 WO 2017010524A1
Authority
WO
WIPO (PCT)
Prior art keywords
arithmetic
data
calculation
input
memory cell
Prior art date
Application number
PCT/JP2016/070723
Other languages
English (en)
French (fr)
Inventor
井上 克己
Original Assignee
井上 克己
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 井上 克己 filed Critical 井上 克己
Publication of WO2017010524A1 publication Critical patent/WO2017010524A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

GPUの各演算コアは独立して演算が出来るよう回路構成されている。そのため、SIMD演算をGPUで実現する場合の回路効率が悪く、集積度も上がりにくく、プログラムの良し悪しで演算コアの遊びも発生する。また発熱の問題も多い。本願のSIMD型並列演算装置では、Nグループに共通するアドレス線を用いる。Nグループのメモリセルグループのそれぞれにおける、アドレス線で指定されるメモリセルに対して、全グループ一括アクセス(並列アクセス)を行う。以上の構成により、並列演算の効率を最大にして集積度を上げることができる。また、演算コアを100%駆動することを可能し、演算速度を高速にできる。加えて、電力消費を大幅に軽減することや、任意の並列度を実現することができる。さらに、半導体ASICが容易に実現できる。上記のSIMD型並列演算装置はFPGAにも容易に実装できる。

Description

SIMD型並列演算装置、SIMD型並列演算半導体チップ、SIMD型並列演算方法、SIMD型並列演算装置や半導体チップを含んだ装置。
 本発明はSIMD(Single Instruction/Multiple Data 単一命令/複数データ)型並列演算装置、SIMD型並列演算半導体チップ、SIMD型並列演算方法、SIMD型並列演算装置や半導体チップを含んだ装置に関する。
 本願発明の目的を明確にするためにCPUやGPUの課題を示す。図1は、特徴データ照合の例である。データベースには、特徴1から特徴Nまでの8ビット(0~255)のデータが対象Aから対象Zまで登録されており、このデータベースに照合する問い合わせ照合データが与えられ、本図の下部には互いの特徴データ同士の差を求め、その差の合計(差和演算)を求め、その最も小さいものが最も類似した対象であるとして、対象Cが類似照合結果として判定される様子が示されている。
 照合対象が国際空港の入出国のテロリストや犯罪者顔の照合であれば、対象Aから対象Zの顏(人)の数は100万(1M)人にものぼり顏の特徴の種類を1000(1K)とした場合、1K*1M=1G回の差和演算を繰り返す必要がある。1つのCPUで1回当たりの差和演算を10n秒とした場合、10秒もの時間が掛りとてもリアルタイムで利用することは出来ない。
 また照合対象が手書き文字の照合であれば対象Aから対象Zの文字の数が日本語の場合3000(3K)文字でその特徴を256種類とした場合、256*3K=768K回の差和演算を繰り返す必要がある。
 先ほど同様1回当たりの差和演算を10n秒とした場合、7.68m秒の時間が必要になり一秒間では約130文字しか読み取れない、原稿用紙1枚分の文字を読み取るのに3秒近くの時間が必要になる。
 以上はこの発明の意図や目的を説明するのに都合のよい類似度を評価するための差和演算の例で説明を行ったが積和演算やその他の行列演算(ベクトル演算)も同様であり、その応用は指紋、静脈などの生体認証や印鑑の照合など枚挙に暇がない。また膨大なデータを扱う気象や流体の分子の動きなどのシミュレーションにも行列演算は欠かすことが出来ない。行列データの演算のような大量のデータの繰り返し演算は一般的なCPUにとって極めてつらい処理である。CPUは情報処理のあらゆる処理をこなす汎用プロセッサであるが、逐次処理が基本となるので繰り返し演算が頻発するような情報処理では様々な課題が残されている。
 CPUのこのような課題を軽減するために利用されるGPUは1つのチップに大量の演算コアを抱え並列処理をすることでこれらの問題を解決しようとするものである。GPUは大量の演算処理が必要な画像処理を高速で実現することを目的として誕生したが基本的にはCPUと同様な情報処理アーキテクチャを踏襲している。
 最近ではGPUとして画像処理以外、タンパク質の構造解析や流体解析や振動解析など大量な行列ベクトル計算が必要な情報処理に利用されている。GPUはSIMD型情報処理で利用される場合が大半であるがCPUと同様な情報処理アーキテクチャを踏襲しているので、多数の独立した演算器または演算グループとその演算器毎に専用のメモリを有しそれぞれの演算器はそれぞれのプログラムとデータに基づき独立して演算を行う構成である。
 以上のようにそれぞれの演算器または演算グループが独立して動作する構成であるので、例えば演算器ではプログラムを解読するための回路、演算タスクを制御するための回路や、メモリのアドレスデコーダさらには演算コアを動かすためのメモリなどそれぞれ独立して、それぞれの回路を持つ必要があり回路やメモリが重複する結果になっている。
 またそれぞれが独立して動作する構造であるため、通常はCPUの支配下でGPUのOSを起動し常にGPUの演算器の負荷が適切で均等に動作できるようソフトウエアでコントロールするもののプログラムの並列化は難しく各演算コアに均等に処理を与えることは困難であり、演算コアの遊びが生じてしまう、折角沢山の演算コアがあっても多くの演算コアが遊んでいては意味がない。
 またGPUは演算コアが数千個など多くなると例えば300ワットを超えるような大電力を消費し発熱も大きくなり携帯機器やロボットなどの頭脳として利用することが出来ない。
 半導体微細化技術の限界も間近にせまり従来型アーキテクチャでは性能アップが期待出来なくなる時代がまもなくやってくるが、様々な分野で演算性能向上と省電力化に対する期待が高まっている。
 最近話題になっている人工知能技術の1つであるニューラルネットワークにおいてもシステムの規模が極めて大きくなり、開発を進めるにも実用化するために大きな障害になっている。一例を挙げればニューラルネットワークは最適な動作を得るために様々な条件を与え学習を繰り返す必要があるが大規模なネットワークになると例えば1万6000個のCPUを使用しても学習時間が数日から1週間程度もかかることがネット情報で公開されている。
 言うまでもなく1回の学習で最適な動作を得ることは困難であり、繰り返し、繰り返し最適な動作が得られるようチューニングを行わなくてはならない。このように莫大なハードウエア資源を利用しても多大な学習時間が掛かることがこの技術の成長の妨げになっている。
 後述するがニューラルネットワークは大量の積和演算を実行する必要がある、大掛かりなシステムとすることなく演算性能を上げ、小型省電力、低発熱の装置が実現し、しかも学習時間が短縮できれば、この技術の進化は大幅に加速する。
 以上のようにシステムを大規模にすることなく効率がよい並列処理の要求が高まっている。
 例えば、GPUの演算能力を高めるためにはメモリアクセス方法を最適化することが不可欠でありそのために様々な手法が取り入られている、しかしながらGPUはSIMD型演算を基本としているのでGPUを大幅にスリム化して集積度が高め、しかも演算器の演算効率を高めれば高速化が可能になることは自明のことである。
 本願発明者はこれまでメモリ型コンピューティングによるメモリ型プロセッサはノイマン型コンピュータの様々の課題を解決出来ることを提案、これまで様々な特許出願を行い実用化を進めている、以下に代表的な特許文献等を示す。
 特許第4588114号、情報絞込み検出機能を備えたメモリは、画像や音声のパターンマッチを超高速で実現するメモリ型プロセッサである。従来のソフトウエアパターンマッチに比較して数万倍以上高速であることが実証されている。
 WO2015/098707は情報検索機能を備えたメモリは、データベースのレコードを超高速で検索するメモリ型プロセッサである。従来のソフトウエアによる検索に比較して数万倍以上高速であることが実証されており、この技術が本願発明のきっかけとなっている。
 他者の発明による特開2008-123479 SIMD及びそのためのメモリアレイ構造、はSIMD型プロセッサとメモリで構成されるものであるがデータの衝突回避を目的とするものであり目的も手法も全く別のものである。
 特開2012-161867 並列データ処理装置、はSIMDアレイを備え、ブロックごとの演算を独立して行うものであるが手法は全く別のものである。
 詳細は明らかではないが、マイクロン社のオートマトン演算チップでは256行×49512列のDRAMアレイを並列に読み出し超高速なオートマトン演算を実現した事例がネット上に公開されているが本発明の目的とは異なるもので、他の先願発明からも本願発明のようにメモリのアドレス線を直接ドライブするようなSIMD型演算方式は見受けられない。
特許第4588114号 WO2015/098707 特開2008-123479 特開2012-161867
 GPUなどの従来型SIMD型並列演算は、独立した演算コアまたは演算グループとそのメモリで構成されるため回路規模が大きくなり集積度が上がらない、またCPUならびにGPUのOSを介してのGPU駆動の準備処理やメモリへのデータ転送、それに伴うGPU内部の演算器の割り当てやタスク割り当て制御や管理などのオーバヘッドや、演算器そのものの遊びによって演算速度が犠牲になり、消費電力が大きくなりがちである。
 本願発明ではSIMD型並列演算の効率を最大にして集積度を向上し、ハードウエア限界の演算速度を実現可能にするばかりでなく、適正な演算速度と適正な電力消費を選択可能な構成とし、複数利用することにより任意の並列度と演算時間を実現すると共に、半導体ASICならびにFPGAにも容易に実装できるSIMD型並列演算装置を提供する。
 この発明の第1の主要な観点によれば、SIMD型並列演算装置であって、1グループがnアドレス分のメモリセル群から構成されてなる、合計Nグループのメモリセルグループであって、前記メモリセル群は複数のメモリセルを有するものである、前記メモリセルグループと、各グループの前記メモリセル群グループに対応するように接続されたN個の演算器であって、入力されたデータに所定の演算条件を適用して当該演算条件に従った演算結果データを出力するものである、演算器と、各メモリセル群に格納されたデータにアクセスするために、特定のアドレスの各メモリセル群を全グループ一括アクセス可能な前記n個のアドレス線を有するデータアクセス手段と、前記アドレス線により一括アクセスされた各グループのメモリセル群からデータを一括で読み出し、前記N個の演算器の演算入力に並列に入力するデータ入力手段と、前記N個の演算器から演算出力されたN組の演算結果データを、上記と同じ若しくは異なるアドレス線により一括アクセスされたNグループのメモリセル群に一括で書き込みする手段と、前記メモリセル群のデータを呼び出すアドレスを外部より選択入力するアドレス入力手段と、前記演算器の演算条件を外部より入力する演算条件入力手段と、このSIMD演算装置による演算結果を選択的に外部に出力する演算結果出力手段と、を有することを特徴とするSIMD型並列演算装置が提供される。
 この発明の第2の主要な観点によれば、前記演算器は(1)四則演算、(2)浮動小数点演算、(3)比較演算、(4)論理演算、(5)シフト演算、(6)以上を組み合わせた多段演算、以上(1)から(6)のいずれかの演算を実行する演算器である。
 この発明の第3の主要な観点によれば、前記演算器の一部ならびに演算器の入力ビットの一部にマスクを掛け、演算器の一部ならびに演算器の入力ビットの一部の入力に演算の影響をなくす演算手段を備えていてもよい。
 この発明の第4の主要な観点によれば、前記並列演算装置は1つの半導体チップ内に構成されたSIMD型並列演算半導体チップとしてもよい。
 この発明の第5の主要な観点によれば、前記並列演算装置をCPUや他のLSIと組み合わせされ1つの半導体チップ内に構成してもよい。
 この発明の第6の主要な観点によれば、前記並列演算装置をFPGAに実装したSIMD型並列演算半導体チップとして構成してもよい。
 この発明の第7の主要な観点によれば、以上に記載した様なSIMD型並列演算装置とSIMD型並列演算半導体チップのいずれかもしくは双方を含んだシステムとしてもよい。
 この発明の第8の主要な観点によれば、SIMD型並列演算方法であって、1グループがnアドレス分のメモリセル群から構成されてなる、合計Nグループのメモリセルグループであって、前記メモリセル群は複数のメモリセルを有するものである前記メモリセルグループと、各グループの前記メモリセルに対応するようにN個の演算器とが接続され、各メモリセル群に格納されたデータにアクセスするために、特定のアドレスの各メモリセル群を全グループ一括アクセス可能な前記n個のアドレス線を有しており、前記アドレス線により一括アクセスされた各グループのメモリセル群からデータを一括で読み出し、前記N個の演算器の演算入力に並列に入力し、前記N個の演算器から演算出力されたN組の演算結果データを、上記と同じ若しくは異なるアドレス線により一括アクセスされたNグループのメモリセル群に一括で書き込みを行い、前記メモリセル群のアドレスを外部より入力し、前記演算器の演算条件を外部より入力し、入力されたデータに所定の演算条件を適用して当該演算条件に従った演算結果データを選択的に外部に出力する出力する、SIMD型並列演算方法が提供される。
 この発明の第9の主要な観点によれば、SIMD型並列演算方法において、前記演算器の一部ならびに演算器の入力ビットの一部にマスクを掛け、演算器の一部ならびに演算器の入力ビットの一部の入力に演算の影響をなくすようにしてもよい。
 さらにこの発明の第10の主要な観点によれば、複数のアドレスのデータを合成して1つのデータとして並列演算するようにしてもよい。
図1は、データの照合(特徴データの照合)の例である。(実施例2) 図2は、並列演算装置もしくは半導体並列演算チップの全体構成例である。 図3は、本発明の実施例1に係る並列演算装置もしくは半導体並列演算チップの詳細構成例である。 図4は、本発明の実施例3に係るニューラルネットワークの構成例である。 図5は、ニューラルネットワークのユニット例である。
 図2は、本発明の並列演算装置の一実施例にかかる並列演算半導体チップ201の全体構成図である。本図はメモリや演算機能の細かな回路構成の図示及び説明は割愛し、本願発明の概念のみを説明するためのものであり、図の上段部分はメモリ部202となっており、図の下段部分は演算部203になっている。
 後述するがメモリセルの種類も演算器の種類も任意であり、複数のLSIの組み合わせで装置を構成することも、1つの半導体チップに実装することも、その他の機能を盛り込んだ半導体チップとすることも自由である。
 この並列演算装置としての並列演算半導体チップ201は演算グループ1から演算グループNまでN個の演算グループが完全並列演算可能な構成になっている。
 メモリ103は複数のメモリセルで構成されるメモリセル群104に格納されたデータに対してNグループとも1つのアドレス101でアクセス可能なようにN個のメモリセル群104が1本のアドレス線102に接続されており、任意のアドレス101が選択(アクセス)可能な構成になっている。
 本例のアドレスXからアドレスX+nは1つのデータが9+9ビットのメモリセル群104、アドレスYからアドレスY+mは17+17ビットのメモリセル群104となっており、それらメモリ群に格納されたデータは、グループ毎に演算器109の演算入力データA123側もしくは演算入力データB124側の一方もしくは双方の入力に加えられる構成になっている。
 メモリセル群の割り当てや、サイズ、データの割付は必要なデータ幅や符号、桁上げなどを考慮し決めればよい、言うまでもなくデータ幅は演算の精度に影響する。またメモリセル104は演算入力データA123側、B124側いずれか一方とすることも可能である。アドレスの数も任意であり、演算グループの数も任意である。様々なデータ幅のアドレスを持たせることも、様々な演算を混載させることも任意である。
 演算部203の各ビット線(データ線)105には、メモリセル群のデータを読み出し演算器109の演算入力データ123側、124側にデータを代入するか、演算器109の演算結果110をメモリセル群に書き込みをするか、を切り替えるためのR/W切替スイッチ106が付いている。
 演算器109は演算グループ毎にN個一列に配列されこの演算器109の入力には、アドレスを指定しアクセスされたメモリセル104のビット線(データ線)105を通じ読み出されたN個のデータと、必ずしも外部からの入力データを必要とするものではないが、本例では外部からの入力データ125(本例では9ビット)が演算器109の演算入力データA123側に入力可能な構成になっている。
 外部からの入力データを利用せず、メモリセルに記憶されたデータ同志のみでバッチ処理演算することも可能である。
 演算器109の演算結果110は入出力インターフェース113に接続され、演算結果を例えばPCI-eなど任意の出力形態で演算出力108として出力することが出来る。またメモリ記憶データ108は入出力インターフェース113から、メモリセル104に記憶するデータを外部から入力することが出来る。
 先に示した通りこの演算結果110はビット線(データ線)105を通じて指定しアクセスしたアドレスのメモリ103に書き込みすることが可能である。一例に過ぎないが例えば符号付き8ビットデータ同士の乗算であれば桁上げが発生するので、図2に示すアドレスYからアドレスY+mの17ビットのデータ幅で構成されるアドレスに書き込みすればよい。
 従って本例の場合はメモリ部のN個のデータと外部から与えられるN個の入力データをNデータ並列に直接SIMD演算しその演算結果を出力もしくはメモリに記憶することが出来る構成である。
 図3は、1演算グループの詳細を示すものである。本図は、並列接続された演算グループ1から演算グループNの中の1つのグループのメモリ103と演算器109、入力データ125、ならびに入出力インターフェース113の詳細を示すものである。メモリセル104はアドレスXからアドレスX+nまでは8ビットデータ+符号1ビットの合計9ビットデータで構成されており、またアドレスYからアドレスY+mは8ビットデータが2組み+符号1ビット合計17ビットデータで構成されている。
 先に示したとおり、データの長さやそのデータの割り付けは任意である。また本例では、演算器109の演算入力データA123側、演算入力データB124側の双方にメモリセル104が取り付けられており、両方のデータを読み出すか、一方のみのメモリセルを読み出すか、反対に両方のデータに書き込むか、一方のみのメモリセルに書き込むか任意の選択が出来る構成である。
 以上のような処理は演算器109の一部ならびに演算器109の入力ビットの一部、さらに演算出力の一部にマスクを掛け、演算器109の一部ならびに演算器109の一部の入力の演算の影響をなくすように演算条件を与えることも、演算結果の一部を無視(マスク)してメモリセルに記憶するようにすることも自由な構成である。
 利用するデータの種類や長さなどこのメモリセルの配列と利用方法は任意に定めることが出来る。
 R/W切替スイッチ106がR(読み出し)の場合、アクセスされたアドレスのメモリセル104からのデータはビット線(データ線)105を通じて演算器109に入力される。またR/W切替スイッチ106がW(書き込み)の場合、演算器109の演算結果をアクセスされたアドレスのメモリセル104に書き込みすることが可能である。
 外部から入力される入力データ125(本例では9ビット)は先に示したメモリセルの読み出しビット線と論理和ゲート112を通じて、演算器109の演算入力データA123側の入力に加えられる構成である。この入力データ125は演算器1から演算器Nまで共通(並列)に与えられる。
 本例では、外部から与えられる入力データ125が全演算器共通に与えられる場合を示したが、それぞれの演算器109毎に異なったデータを入力することも可能である。
 演算器109を多段接続することも可能でその場合、毎回の演算結果110をメモリに一時記憶させる必要がなくなるので演算が極めて効率的でありその分高速化が図れる、詳細は後述する。
 このようなSIMD型並列回路の特徴は、独立したメモリと独立した演算器で実現されるGPUなどの回路と比較して、
(1)メモリ部については演算器毎のプログラム記憶用のメモリが不要になり演算データ記憶用のメモリだけでよい、またアドレス選択回路(アドレスデコーダ含む)が1組で済む。 
(2)演算部に関しては演算器毎のプログラム解読器回路、各演算器の演算タスク制御や管理などの回路などが不要になるなど共通部分回路を大幅に省くことができる、従って集積度が上がり経済性も高くなる。
 さらに特徴的なことは、アドレス線102をアクセスすることが直接SIMD型並列演算を実行することになるので、役割を与えたすべての演算グループを一瞬たりとも遊ばせることなく極めて効率的で高速な演算をさせることが可能になる。
 一般的な演算ではメモリからのデータの読み出しと、そのデータに基づく演算の最低2サイクルが必要である。この方法では1サイクルとすることができる、つまりメモリレイテンシと演算レイテンシをバランスさせれば最高速の演算が可能になる。一般的にはメモリレイテンシの方が大きいので例えばメモリを演算器内部のレジスタや高速キャッシュメモリのようなメモリを直接ドライブする構成にすれば現在の半導体技術の極限的な超高速並列演算が可能になる。
 従って通常のGPUの場合のように各演算器の稼働率を考慮することなく、並列演算の性能がCPUやGPUのOSの性能やプログラマの熟練度に左右されることなく、いつも高速で確実な演算結果を生み出すことが可能になる。
 冒頭の背景技術の項で説明した手書き文字照合を本願発明の並列演算装置もしくは並列演算半導体チップ201で実現する場合を説明する。日常的に利用される日本語は3000文字程度であるので演算グループNを3000(3K)とし本例の場合1文字あたりの特徴を256種類として、メモリならびに演算器は3000組(グループ)用意されているものとする。
 この手書き文字の特徴データは符号なしの8ビットデータ(0~255)であるので、図2で示すアドレスXからアドレスX+255まで符号なしで1文字を1演算グループとして演算入力データB124側に順番に登録(書き込み)する。以上でデータベースならびに演算の準備が完了する。
 以上の状態で、照合データの特徴1と、データベースの特徴1の差を求める場合、先ずはR/W切替スイッチ106をR、つまり読み出しモードにしておき、演算グループ1から演算グループNの演算器109には外部演算条件114入力から減算指令を与えておく。
 照合の際、照合データは入力データ125の入力7から入力0に並列(同時)に与えられ、演算グループ1から演算グループNの演算器109の演算入力データA123側に並列(同時)に与えられる。
 特徴1のデータベースが記憶されているアドレスXをアクセスし読み出し、演算入力データB124側に入力することにより、AB双方の演算データが演算グループ1から演算グループNの演算器109の入力に並列(同時)に加えられることになる。
 以上の入力ならびに減算演算条件で演算を実施すると3K全演算器109の出力には特徴1の差分のデータが並列(同時)出力される。
 次にR/W切替スイッチ106をW、つまり書き込みモードとし、アドレスYをアクセスし以上の演算結果をメモリセルの演算入力データB124側に一時記憶する。
 同様にデータベースの特徴2の差を求める場合、R/W切替スイッチ106をRにし、演算グループ1から演算グループNの演算器109には減算指令を与え、演算入力データA123側には外部からの照合データの特徴2データを与え、演算入力データB124側には特徴2のデータベースが記憶されているアドレスX+1をアクセスし読み出すことにより、AB双方の演算データが演算グループ1から演算グループNの演算器109に並列に加えられる。
 以上の入力ならびに演算条件で演算を実施することにより全演算器109の出力には差分のデータが並列に出力される。R/W切替スイッチ106をWにし、この演算結果をアドレスYの演算入力データA123側に並列に一時記憶する。
 次にR/W切替スイッチ106をRにし、演算器109の演算条件を加算として、先に一時記憶されたアドレスYを読み出し演算器109に入力すると、二つの差が加算され特徴1と特徴2の差和演算が並列に実施される。
 この演算結果を再びアドレスYの演算入力データB124側に並列に一時記憶する、アドレスYの演算入力データB124側は累積された差和演算結果である。以上を特徴256まで繰り返すことにより、3000文字の差和演算が完成する。
 本例は演算器が1グループ1段の構成であるが差の演算器と和の演算器の双方を用意し多段接続した構成の場合、特徴差分データを毎回アドレスYに一時記憶させる必要がなくなるのでさらに効率のよい演算が可能になる。
 本方式はハードウエア限界速度まで性能を上げることが可能であるが、一例として以上の特徴1つの差和演算時間が1n秒であれば256特徴の合計照合演算時間は256n秒であり10n秒であれば2.56μ秒である、10n秒であっても先に示した1つのCPUによる処理より確実に3K倍高速になる。通常の場合、実際に処理を実行して見ないと、どの程度のスループットが出るか分からない場合が多いがこの方式は常に実力値通りの演算速度を約束する。
 この差和演算結果を例えばPCI-eなどのインターフェースで出力しその結果を通常のCPU等によって最小値を求めればよい。
 以下に最近話題になっているニューロネットワークへの応用について示す。ニューロネットワークは様々な形式があるが、一番基本的な内容で本願発明に関連する要点のみを示す。
 図4はニューラルネットワークの構成例である。図に示すように、一般的なニューロネットワークは多数のニューロユニットで構成される入力層、中間層、出力層のなど幾つかの層からなり、一つの層の出力が次段の層の入力となるように配線されたネットワークからなる。ニューロネットワークを構成するユニットの数は様々であるが、本例では仮に入力層、中間層、出力層それぞれが1000(1K)で合計3000(3K)であった場合で説明する。
 図5は、ニューロネットワークを構成する中間層の1ユニットの概念図である。中間層の1ユニットには入力層から1Kの入力が並列に与えられ、その並列入力の演算結果が集計され1つの出力として出力されることになる。このユニットは1Kの入力層の入力ニューロユニットよりのアナログ出力データを受けると、入力1から入力n(本例の場合1K)毎に設定された結合荷重データと、アナログ入力データの値を乗算し全ての入力データと結合荷重データの積和演算を実行し、全ての積和演算終了後、閾値の演算やシグモイド関数など所定の演算を行いその結果を出力することになる。
 この処理で一番負担の多い処理は言うまでもなく1000(1K)個のニューロユニットがそれぞれ1000(1K)回繰り返し合計100万(1M)回の積和演算を行う必要がありニューラルネットワーク演算時間の大半を占めることになる。同じような積和演算処理を出力層のニューラルユニットでも行う必要がありネットワーク全体では合計200万(2M)回の演算をする必要がある。
 以上の説明は入力層から中間層、中間層から出力層に向かうニューラルネットワークの一般的な動作である正伝播の例を示したものである。この正伝播の演算時間の場合、仮に1つのCPUが10n秒で積和演算した場合、10n秒*2M回=20m秒であり、特段問題になる数字ではない。
 ニューラルネットワークはネットワークに適切な学習を行うことによりネットワークから所定の演算結果を得ようとするものである。通常この学習は出力層から中間層、中間層から入力層へのバックプロパゲーションと呼ばれる逆伝播演算を繰り返し、学習の都度の評価関数の誤差のレベルが所定の値以下となるまで学習を繰り返す必要がある。
 例えば手書き文字などの場合、例えば「あ」を学習する場合、例えば100人が書いた手書き文字を読み取り、誰の文字でも「あ」の出力が出るまで繰り返し学習させ、先の結合荷重データや閾値が最適になるまで繰り返し、学習のための逆伝播演算を行う必要がある。
 この演算は通常1文字当たり数千回繰り返しする必要があり、文字数3000回同じ処理を繰り返す必要があるので最低でも10M回(1000万回)程度の学習が必要である。
 逆伝播演算の細部は割愛するが、これらの逆伝播演算もユニット1つ1つの積和演算の繰り返しであり本例のようなニューラルネットワークでは先に説明の2M回の積和演算を10M回逆伝播学習させた場合の積和演算回数は20T回もの演算となる。仮にCPU1個で1回の積和演算を10n秒で連続的に実行しても20T回演算を繰り返すと、積和演算だけでも200、000秒、55.5時間かかる計算になり、その時間が待ち時間となる。
 以上のような学習が1回で完了することは希であり、学習結果を見ながら先に示した結合荷重や閾値をチューニングする必要がある。以上がニューラルネットワーク技術最大の問題であり、画像認識などのように1層当たりのネットワークユニットが1万個を超えるようになると、GPUを使って如何に演算時間を短縮できるかが鍵になる。然しながら従来型のGPUで高速化を狙うと発熱が大きくシステムが大型化して大電力を浪費することになる。
 現在市場に出ているFPGAは千個以上の演算器とSRAMを標準装備しているものも少なくなく、これらの演算器とメモリを組合せすることによりFPGAでも容易に本願発明を実現することができる、一般的なFPGAであれば数ワットから十数ワット程度であるので低電力で並列度高いチップが容易に実現できる。
例えばFPGA1チップに3Kの並列演算器を実装し1回の積和演算を10n秒とした場合先ほどの学習時間の積和演算にかかる時間は、1/3K、つまり66秒に短縮される。言うまでもなくこれを複数利用することによりさらに超並列で超高速して低電力消費のシステムが実現できる。
 回路構成を自由に修正可能なFPGAによる本願発明はニューラルネットワークの場合のように試行錯誤で最適な回路を探し出す場合に最適である。
 本発明により半導体チップ化した場合、FPGAに比較して1桁程度演算時間を短縮することができる、GPUなどの従来型のSIMD回路の無駄な回路がなくなるのでメモリや演算器の並列度を上げることが出来る。またGPUの各コアや演算グループを駆動するため前処理などのオーバヘッドも不要になり、演算コアの遊びも解消できるのでハードウエア限界性能を求めることができる。従ってこの技術はスリムで超高速なSIMD専用新型GPUとなる。
 以下にこの技術の注意点や応用を記す。
 この技術の特徴はアドレス線のドライブ能力が重要である。また演算グループを幾つかにバンク分けして微小時間ずらしてデータを読み書きすることにより大量のメモリセルドライブや演算器の突入電流を制限することができる。クロック周波数の切替により1演算時間を1n秒から10n秒など自由にコントロールして演算性能が優先か消費電力が優先かにより任意の演算時間を選択するようなことも可能になるので、チップ当たりや1W当たりの演算能力が大きな演算器を実現させることが可能になる。以上のことは、半導体微細化技術の限界が間近にせまり、従来型アーキテクチャでは性能アップが期待できなくなる近未来極めて大きな価値を生み出す。
 これまで演算器109の演算は実数の四則演算115を中心に説明してきたが、浮動小数点演算とすることや、一致や大小、範囲などの比較演算116、AND、OR、NOTなどの論理演算117、演算器内部や互いの演算器に跨ったデータのシフト演算、以上を多段組み合わせしたSIMD演算に共通に利用できる。
 一例であるが浮動小数点演算の場合演算器109の性能に合わせメモリセルのデータ割り付けを行えばよい。
 データ長の長いロングデータの場合、複数のメモリアドレスのデータを繰り返し読みこみ、所定回数読み込んだデータを一つのロングデータとして演算することも可能である。
 本願発明のメモリセル104はSRAMメモリやDRAMメモリ、FLASHメモリはもとより、今後市場に出回る抵抗型メモリや磁気メモリなど全てのメモリセル共通に利用可能である。演算性能や演算コストを考え様々なメモリや様々なメモリをアドレス毎に混載することも可能である。
 メモリ部202と演算部203を独立分離し、独立分離された装置や半導体チップを組合せ利用するとメモリ資源や演算器資源を無駄なく効率的に利用することが可能である。
 この発明によるSIMD型並列演算器は応用範囲が広く、並列演算集積度を高め、一般的な演算スピードから超高速な演算スピードまで自由な設定が可能になり、演算性能優先か消費電流優先かシステムに合わせて最適な利用環境を提供することができる。FPGAでも容易に実現できるので一般的なデータ演算はもとより携帯機器の認証機能やロボットの頭脳に最適であり、多くのGPUニーズをこの技術に置き換えることができる。従って産業上の利用可能性を具備する。
 101 アドレス
 102 アドレス線
 103 メモリ
 104 メモリセル
 105 ビット線(データ線)
 106 R/W切替スイッチ
 107 演算入力
 108 演算出力およびメモリ記憶データ
 109 演算器
 110 演算結果
 111 演算結果レジスタ
 112 論理和(OR)ゲート
 113 入出力インターフェース
 114 演算条件
 123 演算入力データA
 124 演算入力データB
 125 入力データ
 126 符号
 202 メモリ部
 203 演算部

Claims (10)

  1. SIMD型並列演算装置であって、
     1グループがnアドレス分のメモリセル群から構成されてなる、合計Nグループのメモリセルグループであって、前記メモリセル群は複数のメモリセルを有するものである、前記メモリセルグループと、
     各グループの前記メモリセル群に対応するように接続されたN個の演算器であって、入力されたデータに所定の演算条件を適用して当該演算条件に従った演算結果データを出力するものである、演算器と、
     各メモリセル群に格納されたデータにアクセスするために、特定のアドレスの各メモリセル群を全グループ一括アクセス可能な前記n個のアドレス線を有するデータアクセス手段と、
     前記アドレス線により一括アクセスされた各グループのメモリセル群からデータを一括で読み出し、前記N個の演算器の演算入力に並列に入力するデータ入力手段と、
     前記N個の演算器から演算出力されたN組の演算結果データを、上記と同じ若しくは異なるアドレス線により一括アクセスされたNグループのメモリセル群に一括で書き込みする手段と、
     前記メモリセル群のアドレスを外部より入力するアドレス入力手段と、
     前記演算器の演算条件を外部より入力する演算条件入力手段と、
     このSIMD演算装置による演算結果を選択的に外部に出力する演算結果出力手段と、
     を有することを特徴とするSIMD型並列演算装置。
  2. 前記演算条件は
    (1)四則演算
    (2)浮動小数点演算
    (3)比較演算
    (4)論理演算
    (5)シフト演算
    (6)以上を組み合わせた多段演算
    以上(1)から(6)のいずれかの演算を実行する条件であることを特徴とする請求項1記載のSIMD型並列演算装置。
  3.  前記演算器の一部ならびに演算器の入力ビットの一部にマスクを掛け、演算器の一部ならびに演算器の入力ビットの一部の入力に演算の影響をなくす演算手段を備えたことを特徴とする請求項1記載のSIMD型並列演算装置。
  4.  請求項1記載の前記並列演算装置は1つの半導体チップ内に構成されたことを特徴とするSIMD型並列演算半導体チップ。
  5.  CPUや他のLSIと組み合わせされ1つの半導体チップ内に構成されたことを特徴とする請求項4記載のSIMD型並列演算半導体チップ。
  6.  請求項1記載の前記並列演算装置はFPGAに実装されたことを特徴とするSIMD型並列演算半導体チップ。
  7.  請求項1から請求項6記載の
    (1)SIMD型並列演算装置
    (2)SIMD型並列演算半導体チップ
    以上(1)(2)のいずれかもしくは双方を含んだシステム。
  8.  SIMD型並列演算方法であって、
     1グループがnアドレス分のメモリセル群から構成されてなる、合計Nグループのメモリセルグループであって、前記メモリセル群は複数のメモリセルを有するものである前記メモリセルグループと、各グループの前記メモリセルに対応するようにN個の演算器とが接続され、各メモリセル群に格納されたデータにアクセスするために、特定のアドレスの各メモリセル群を全グループ一括アクセス可能な前記n個のアドレス線を有しており、
     前記アドレス線により一括アクセスされた各グループのメモリセル群からデータを一括で読み出し、前記N個の演算器の演算入力に並列に入力し、
     前記N個の演算器から演算出力されたN組の演算結果データを、上記と同じ若しくは異なるアドレス線により一括アクセスされたNグループのメモリセル群に一括で書き込みを行い、
     前記メモリセル群のアドレスを外部より入力し、
     前記演算器の演算条件を外部より入力し、
    入力されたデータに所定の演算条件を適用して当該演算条件に従った演算結果データを選択的に外部に出力する出力する、
     SIMD型並列演算方法。
  9.  前記演算器の一部ならびに演算器の入力ビットの一部にマスクを掛け、演算器の一部ならびに演算器の入力ビットの一部の入力に演算の影響をなくすようにすることを特徴とする請求項8記載のSIMD型並列演算方法。
  10.  複数のアドレスのデータを合成して1つのデータとして並列演算することを特徴とする請求項8記載のSIMD型並列演算方法。
PCT/JP2016/070723 2015-07-13 2016-07-13 Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。 WO2017010524A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015139577A JP2018156119A (ja) 2015-07-13 2015-07-13 Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。
JP2015-139577 2015-07-13

Publications (1)

Publication Number Publication Date
WO2017010524A1 true WO2017010524A1 (ja) 2017-01-19

Family

ID=57758038

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/070723 WO2017010524A1 (ja) 2015-07-13 2016-07-13 Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。

Country Status (2)

Country Link
JP (1) JP2018156119A (ja)
WO (1) WO2017010524A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
JP2001209617A (ja) * 2000-01-28 2001-08-03 Ricoh Co Ltd 並列プロセッサ及びそれを用いた画像処理装置
JP2010152450A (ja) * 2008-12-24 2010-07-08 Ricoh Co Ltd Simd型マイクロプロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
JP2001209617A (ja) * 2000-01-28 2001-08-03 Ricoh Co Ltd 並列プロセッサ及びそれを用いた画像処理装置
JP2010152450A (ja) * 2008-12-24 2010-07-08 Ricoh Co Ltd Simd型マイクロプロセッサ

Also Published As

Publication number Publication date
JP2018156119A (ja) 2018-10-04

Similar Documents

Publication Publication Date Title
Deng et al. DrAcc: A DRAM based accelerator for accurate CNN inference
Chen et al. DianNao family: energy-efficient hardware accelerators for machine learning
Sarwar et al. Gabor filter assisted energy efficient fast learning convolutional neural networks
Imani et al. Efficient neural network acceleration on gpgpu using content addressable memory
US11763156B2 (en) Neural network compression based on bank-balanced sparsity
Daghero et al. Energy-efficient deep learning inference on edge devices
Chen et al. A high-throughput neural network accelerator
CN115443467A (zh) 具有深度学习加速器和随机存取存储器的集成电路装置
Chowdhury et al. A DNA read alignment accelerator based on computational RAM
CN115461757A (zh) 具有单独存储器存取连接的深度学习加速器和随机存取存储器
Imani et al. CAP: Configurable resistive associative processor for near-data computing
CN116401502A (zh) 一种基于NUMA系统特性优化Winograd卷积的方法及装置
Zhu et al. Lradnn: High-throughput and energy-efficient deep neural network accelerator using low rank approximation
Reis et al. A fast and energy efficient computing-in-memory architecture for few-shot learning applications
Li et al. MinEnt: Minimum entropy for self-supervised representation learning
US20210357739A1 (en) Memory device to train neural networks
US11568248B2 (en) Feature reordering based on similarity for improved memory compression transfers during machine learning jobs
Imani et al. Processing acceleration with resistive memory-based computation
US10997497B2 (en) Calculation device for and calculation method of performing convolution
Nishimura et al. Accelerating the Smith-waterman algorithm using bitwise parallel bulk computation technique on GPU
WO2017010524A1 (ja) Simd型並列演算装置、simd型並列演算半導体チップ、simd型並列演算方法、simd型並列演算装置や半導体チップを含んだ装置。
Fan et al. Accelerating Convolutional Neural Networks by Exploiting the Sparsity of Output Activation
US20220138525A1 (en) Memory network method based on automatic addressing and recursive information integration
Jiang et al. Performance of the fixed-point autoencoder
Wu et al. Edge-Side Fine-Grained Sparse CNN Accelerator With Efficient Dynamic Pruning Scheme

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16824504

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16824504

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP