JP2020074099A - 処理装置と処理方法 - Google Patents

処理装置と処理方法 Download PDF

Info

Publication number
JP2020074099A
JP2020074099A JP2019228383A JP2019228383A JP2020074099A JP 2020074099 A JP2020074099 A JP 2020074099A JP 2019228383 A JP2019228383 A JP 2019228383A JP 2019228383 A JP2019228383 A JP 2019228383A JP 2020074099 A JP2020074099 A JP 2020074099A
Authority
JP
Japan
Prior art keywords
data
module
arithmetic
calculation
multiplier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019228383A
Other languages
English (en)
Other versions
JP6821002B2 (ja
Inventor
ティエンシ チェン
Tianshi Chen
ティエンシ チェン
ジエ ウェイ
Jie Wei
ジエ ウェイ
ティエン ズ
Tian Zhi
ティエン ズ
ザイ ワン
Zai Wang
ザイ ワン
シャオリ リォウ
Shaoli Lio
シャオリ リォウ
ユィジョ ルオ
Yuzhe Luo
ユィジョ ルオ
チ グオ
Qi Guo
チ グオ
ウェイ リ
Wei Li
ウェイ リ
ションユィエン ジョウ
Shengyuan Zhou
ションユィエン ジョウ
ズドン ドゥ
Zidong Du
ズドン ドゥ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
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
Priority claimed from CN201710256445.XA external-priority patent/CN108733412B/zh
Priority claimed from CN201710264686.9A external-priority patent/CN108733408A/zh
Priority claimed from CN201710269049.0A external-priority patent/CN108734288B/zh
Priority claimed from CN201710269106.5A external-priority patent/CN108734281A/zh
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Publication of JP2020074099A publication Critical patent/JP2020074099A/ja
Application granted granted Critical
Publication of JP6821002B2 publication Critical patent/JP6821002B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/46Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Analysis (AREA)

Abstract

【課題】柔軟性が強く、配置可能性が高く、演算スピードが速く電力消費が少ないニューラルネットワーク加速器を提供する。【解決手段】計算ビット幅の動的な配置が可能な処理装置において、ニューラルネットワークの演算予定データ、中間演算結果、最終演算結果、キャッシュ予定データを含むデータの記憶に用いられるメモリと、前演算予定データ、中間演算結果、最終演算結果及び/又はキャッシュ予定データの幅の調節に用いられるデータ幅調節回路と、ニューラルネットワークの演算予定データに対する演算に用いられる演算回路と、メモリ、データ幅調節回路、演算回路の制御に用いられる制御回路と、を含む。【選択図】図1

Description

本発明はコンピュータの分野に関し、特に人工知能分野の処理装置と処理方法に関する
近年、ビッグデータ時代の到来により、ニューラルネットワークアルゴリズムは、人工
知能分野で重点研究プロジェクトとなっており、パターン識別と画像解析、知能ロボット
などで広く応用されている。
深層学習方法は、機械学習のなかでデータに対する特長学習の進行に基づく一つの方法
である。観測値(例えば、画像)は、各ピクセル強度値のベクトル、またはより抽象的に
一連のエッジと特定形態で表示される領域などが挙げられる。ある特定な表示方法を利用
して実例を介してより簡単に学習させることができる(例えば表情認識や顔認識)。
今日に来て、深層ニューラルネットワークとニューラルネットワークのコンボリューシ
ョン、深層信念ニューラルネットワーク、再帰ニューラルネットワークなどのいくつかの
深層学習フレーム図がコンピュータビジョン、音声識別、自然言語処理、音響識別、生物
情報学などの分野で既に利用され、すぐれた結果をもたらした。深層学習は、既にほとん
ど専門用語、または、ニューラルネットワークと呼ばれるまでになった。
深層学習(ニューラルネットワーク)に対する研究が活発化するにつれ、ニューラルネ
ットワーク加速器が同時に出現し、専用メモリと演算モジュールの設計を通じてニューラ
ルネットワーク加速器は、深層学習演算を行うとき、汎用プロセッサに比べ数十倍ひいて
は数百倍の高速に達し、小面積化と低消費電力化を達成した。
本発明は、計算ビット幅の動的な配置が可能な処理装置を提供し、
ニューラルネットワークの演算予定データ、中間演算結果、最終演算結果、キャッシュ
予定データを含むデータの記憶に用いられるメモリと、
前記演算予定データ、中間演算結果、最終演算結果及び/又はキャッシュ予定データの
幅の調節に用いられるデータ幅調節回路と、
ニューラルネットワークの演算予定データに対する演算に用いられる演算回路と、
メモリ、データ幅調節回路、演算回路の制御に用いられる制御回路と、を含む。
本発明は更に、計算ビット幅の動的な配置が可能な処理装置の使用方法を提供し、以下
のステップを含む:
制御回路は、制御命令を生成してメモリ、データ幅調節回路と演算回路に伝送し、
メモリは、受信した制御命令に基づいて演算回路にニューラルネットワークの演算予定
データを入力し、
データ幅調節回路は、受信した制御命令に基づいてニューラルネットワークの演算予定
データの幅を調節し、
演算回路は受信した制御命令に基づいて、第1演算モジュール中の対応する類型の乗法
器と加法器回路を選択し、
演算回路は、入力された演算予定データとニューラルネットワークのパラメータ及び制
御命令に基づいて、計算ビット幅が異なるニューラルネットワークの演算予定データに対
して演算を行う。
本発明は更に処理装置を提供し、データの記憶に利用されるメモリ、前記データは、ニ
ューラルネットワークの演算予定データを含み;ニューラルネットワークの演算予定デー
タに対する演算に利用される演算回路、加法器回路と乗法器を利用して計算ビット幅が異
なるニューラルネットワークの演算予定データの計算を含み;メモリと演算回路の制御に
利用される制御回路、演算予定データに基づいて演算回路の乗法器と加法器回路の類型を
選択して演算を行い、演算結果をメモリにリターンさせる。
本発明は更に前記処理装置を使用する方法を提供し、次のステップを含む:制御回路は
制御命令を生成して、メモリと演算回路に伝送し;メモリは受信した制御命令に基づいて
演算回路にニューラルネットワークの演算予定データを入力し;演算回路は入力された制
御命令に基づいて、第1演算モジュール中の対応する類型の乗法器と加法器回路を選択し
;演算回路は入力された演算予定データとニューラルネットワークのパラメータ及び制御
命令に基づいて、計算ビット幅が異なるニューラルネットワークの演算予定データに対す
る演算を行い、演算結果をメモリにリターンさせる。
本発明は更に演算装置を提供し、入力データの取得に利用される入力モジュール、該入
力データは、処理予定データ、ネットワーク構造、ウェイトデータを含み、または、該入
力データは、処理予定データ及び/又はオフラインモデルデータを含み;入力されるネッ
トワーク構造とウェイトデータに基づいてオフラインモデルの生成に用いられるモデル生
成モジュール;オフラインモデルに基づいて演算命令を生成しながらキャッシュ記憶させ
、演算命令に基づいて演算予定データに対する演算を行い、演算結果の取得に用いられる
ニューラルネットワーク演算モジュール;前記演算結果の出力に用いられる出力モジュー
ル;入力データの類型を検出しながら入力モジュールとモデル生成モジュール、ニューラ
ルネットワーク演算モジュールの制御と演算に用いられる制御モジュール;を含む。
本発明は更に前記演算装置を利用した演算方法を提供し、次のステップを含む:
入力データの取得;
オフラインモデルの取得、或いは、入力データに基づいてオフラインモデルを確定し、
オフラインモデルに基づいて演算命令を確定し、次の計算で呼出できるようにする;
前記演算命令を呼び出して、処理予定データに対する演算を行って演算結果を求めて出
力する。
本発明は、複合スカラ命令をサポートする装置を提供し、制御装置モジュール、記憶モ
ジュール、演算装置モジュールを含み、ここで、前記記憶モジュールは、複合スカラ命令
とデータの記憶に用いられ、前記データは一種類以上あり、相異なる類型のデータは、記
憶モジュールの相異なるアドレスに記憶され;前記制御装置モジュールは、記憶モジュー
ルから複合スカラ命令を読み出し且つ制御命令への解読に用いられ;前記演算装置モジュ
ールは制御命令を受信し、前記記憶モジュールからデータを読出し、読出しデータのアド
レスに基づいてデータの類型を判断し、且つ、データに対して演算する。
本発明は更に複合スカラ命令の実行に利用するプロセッサを提供し、ここで、この複合
スカラ命令は、操作コードフィールド、オペランドアドレスフィールド、宛先アドレスフ
ィールドを含み;前記操作コードフィールドに記憶される操作コードは、異なる類型の操
作の区別に利用され、前記オペランドアドレスフィールドは、オペランドの類型の区別に
利用され、前記宛先アドレスフィールドは、演算結果が記憶されるアドレスである。
本発明は更に複合スカラ命令に対する実行方法を提供し、次のステップを含む:異なる
類型のデータを異なるアドレスに記憶させ;複合スカラ命令を制御命令として解読し;
制御命令に基づいて操作データを読み出し、読み出した操作データのアドレスに基づい
て操作データの類型を判断し、操作データに対して演算を行い;演算結果を対応する類型
のアドレスに記憶させる。
本発明は更に計算装置を提供し、レジスタユニット、カウントユニット、記憶ユニット
を含み、ここで、レジスタユニットは、カウントしようとする入力データが記憶ユニット
に記憶されているアドレスを記録し;カウントユニットはレジスタユニットに連結され、
カウント命令の取得に用いられ、カウント命令に従ってレジスタユニットから入力データ
のメモリアドレスを読み出し、記憶ユニットでカウントしようとする対応の入力データを
取得し、且つ、入力データの中で与えられた条件を満足させるエレメント数を統計カウン
トしてカウント結果を得られ;記憶ユニットはカウントユニット連結され、カウントしよ
うとする対応の入力データ及び前記カウント結果を記憶するのに用いられる。
本発明は更に前記カウント装置のカウント方法を提供し、次のステップを含む:カウン
トユニットはカウント命令を取得し、カウント命令がレジスタユニットから読み出した入
力データのメモリアドレスに基づいて記憶ユニットでカウントしようとする対応の入力デ
ータ読み出しながら入力データのなかで与えられた条件を満足させるエレメント数を統計
カウントして、カウント結果を取得し;統計したカウント結果を記憶ユニットに伝送する
本発明の実施形態における技術的方法をより正確に説明するために、以下、実施例にお
ける使用すべき図面について簡単に紹介する。当然ながら、これら図面は、本発明の一部
の実施例に過ぎず、当業者にとって、創造的努力をしない前提で、これら図面に基づいて
ほかの図面を取得することができる。
図1は、本発明の実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図2は、本発明の実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図3は、本発明の実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図4は、本発明のほかの実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図5は、本発明の更にほかの実施例でこの装置に利用するビットシリアル加算ツリー装置の原理図である。 図6は、本発明で提供する計算ビット幅を動的に配置できる処理装置の中にあるビットシリアル演算装置の構成原理図である。 図7は、本発明で提供するある実施例にある第1ベース乗法器の構造原理図である。 図8は、本発明で提供するある実施例にある第2ベース乗法器の構造原理図である。 図9は、本発明で提供するある実施例にあるスパース乗法器の構造原理図である。 図10は、本発明で提供するある実施例でベース乗法器あるいはスパース乗法器がベクトル乗算を行う装置構造原理図である。 図11は、本発明で提供するある実施例で融合ベクトル乗法器がベクトル乗算を行う装置構造原理図である。 図12は、本発明で提供する融合ベクトル乗法器とほかの乗法器の具体的な実行流れに関する構造原理図である。 図13は、本発明のある実施例で第2ベース乗法器とビットシリアル加算ツリーを組み合わせる原理図である。 図14は、本発明のある実施例で提供する計算ビット幅を動的に配置できる処理方法のフローチャートである。 図15は、本発明のほかの実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図16は、本発明のほかの実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図17は、本発明のもう一つの実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図18は、本発明のもう一つの実施例で提供する計算ビット幅を動的に配置できる処理装置の構造原理図である。 図19は、本発明で提供するある実施例にあるベース乗法器の構造原理図である。 図20は、本発明で提供するある実施例にあるスパース乗法器の構造原理図である。 図21は、本発明で提供するある実施例でベクトル乗算を行うベース乗法器あるいはスパース乗法器の構造原理図である。 図22は、本発明で提供するある実施例でベクトル乗算を行う融合ベクトル乗法器の構造原理図である。 図23は、本発明で提供するスパース乗法器とほかの乗法器の具体的な実行流れに関する構造原理図である。 図24は、本発明のある実施例で提供する計算ビット幅を動的に配置できる処理方法に関するフローチャートである。 図25は、典型的なプログラミングフレーム図である。 図26は、本発明のある実施例で提供する演算方法の演算フローチャートである。 図27は、本発明のある実施例で提供する演算方法の構成図である。 図28は、本発明の実施例で提供する演算装置の構造原理図である。 図29Aは、本発明の実施例で提供する記憶モジュールのRAM組織形式実例図である。 図29Bは、本発明の実施例で提供する記憶モジュールのレジスタファイル編成実例図である。 図30Aは、本発明の実施例で提供する複合スカラ命令の実例図である。 図30Bは、本発明の実施例で提供するレジスタアドレス指定を利用するときの複合スカラ命令の実例図である。 図30Cは、本発明の実施例で提供するレジスタの間接アドレス指定を利用するときの複合スカラ命令の実例図である。 図30Dは、本発明の実施例で提供する直接的なアドレシングを利用するときの複合スカラ命令の実例図である。 図30Eは、本発明の実施例で提供するRAMアドレシングを利用するときの複合スカラ命令の実例図である。 図31は、本発明の実施例で提供する複合スカラ命令を支援する演算方法のフローチャートである。 図32は、本発明の実施例にある計数装置のフレーム構造原理図である。 図33は、本発明の実施例で示した計数装置の中にある計数部の構造原理図である。 図34は、図33に示した計数部の中にある加法器の構造原理図である。 図35は、本発明の実施例に示した計数装置において実行される計数命令の命令集合様式の原理図である。 図36は、本発明の実施例に示した計数装置の中にある計数部実行過程のフローチャートである。 図37は、本発明の実施例に示した計数装置の構造原理図である。 図38は、本発明の実施例に示した計数装置の実行過程のフローチャートである。
以下、本発明の実施例における図面と合わせて本発明の実施例で記述した技術的方法を
明確かつ完璧に記述する。もちろん記述される実施例は本発明の一部の実施例に過ぎず、
全ての実施例ではない。本発明の実施例に基づいて当業者が創造的な労働をしなかったと
いう前提条件の下で取得したあらゆる他の実施例はすべて本発明の保護の範囲に属する。
本発明における「メモリ」は、計算ビット幅を動的な配置が可能な処理装置の中に統合
させることも、個別の部品にすることもできる。外部メモリとして計算ビット幅を動的に
配置できるプロセッサとデータ伝送を行うメモリは、計算ビット幅を動的に配置できるプ
ロセッサに統合させることもでき、個別の部品にすることもできる。外部メモリとして計
算ビット幅を動的に配置できるプロセッサはデータ伝送を行う。
図1は、本実施例で提供する計算ビット幅を動的に配置できるプロセッサの構造原理図
である。図1に示したように、本装置は、制御回路、データ幅調節回路、演算回路、メモ
リを含む。
制御回路は、データ幅調節回路、演算回路、メモリに制御信号を送ることで三者の実行
を制御し、三者間のデータ伝送を調和させる。メモリは、関連データの記憶に用いられ、
入力データ(演算予定データと制御命令を含む)、中間演算結果、最終演算結果、ニュー
ロン、シナプス、キャッシュ予定データなどを含むことができる。需要に応じて、具体的
な記憶データの内容と記憶編成方式、異なる呼び出し方式を計画することができる。図1
に示したように前記データ幅調節回路は、データの幅調節に用いられる。この過程として
は、メモリからデータを読み取った後、データ幅回路を通じてデータに対するビット幅調
節を行った後、演算回路に伝達し、演算回路が計算結果をデータ幅調節回路を通じてデー
タに対するビット幅調節を行った後、メモリに伝達し、メモリはデータをデータ幅調節回
路を通じてデータに対するビット幅調節を行った後、メモリにリターンさせること等があ
る。その具体的な操作は精度を落とさない状態でデータのビット幅を増加させたり、減少
させたり、変わらないよう維持する。許す限りの精度損失がある状態でデータのビット幅
を増加させたり、減少させたり、変わらないよう維持する。ある指定された変換、あるい
は演算要求(例えば「ビットAND演算」に従う演算を指定する場合)に基づいてデータ
のビット幅を増加させたり、減少させたり、変わらないよう維持することなどが含まれる
。演算回路には少なくとも一つの加法演算器と少なくとも一つの乗法演算器が含まれるこ
とができ、データの演算に用いられる。少なくとも一つの加法演算器には加法器、加算ツ
リー及び/又はシリアル加算ツリーが含まれ、少なくとも一つの乗法器にはベース乗法器
、スパース乗法器及び/又は融合ベクトル乗法器が含まれる。演算回路としては、コンパ
レータ及び/又はALUなどが含まれることが可能である。ここで、乗法演算器と加法演
算器は計算ビット幅が異なるデータに対して演算を満足させ、異なる需要に応じてビット
幅が異なる演算データ間の演算を行うことができる。ここで、乗法器はシリアル演算装置
としてビットシリアル方式を通じて乗法演算を行うことができる。ここで、演算回路もデ
ータビット幅調節回路を介さず直接メモリとデータ伝送するようにしても良い。
図2は、本実施例に示した計算ビット幅を動的に配置できるプロセッサの構造原理図で
ある。図2に示すように、本装置の構造は、制御回路がメモリの各モジュールあるいはサ
ブモジュールおよび演算回路とつながっており、少なくとも一つの制御信号一時メモリと
少なくとも一つの制御信号処理器を含み、制御信号一時メモリは制御信号の記憶に利用さ
れ、好ましくは、この制御信号一時メモリは先入先出である。制御信号処理器は実行しよ
うとする制御信号を読み出し、制御ロジックを分析した後、メモリ、データ幅調節回路、
演算回路を制御および調和に用いられる。メモリには入力記憶モジュール、出力記憶モジ
ュール、シナプス記憶モジュールが含まれ、ここで、出力記憶モジュールは、中間演算結
果と最終演算結果の記憶に用いられることもある。データ幅調節回路は入力データ処理モ
ジュールと出力データ処理モジュールに分けられ、入力データ処理モジュールは、入力記
憶モジュールと又シナプスモジュールの中にあるデータに対するデータ幅調節を行うこと
に利用され、それは入力記憶モジュールの後部に設置できる。出力データ処理モジュール
は演算回路が演算したデータに対する幅の調節を行った後に記憶するのに用いられる。演
算回路は、主にコンボリューション演算回路層と完全に接続された層のコンボリューショ
ン演算、プーリング層の平均値あるいは最大値を計算する演算の加速に用いられる。好ま
しくは、演算回路は乗法器モジュール、加算ツリーモジュール、非線形演算モジュール(
例えば、sigmoid関数演算を実行するモジュール)が含まれる。この乗法器モジュ
ール、加算ツリーモジュール、非線形演算モジュールはパイプライン方式を利用して平行
に実行できる。本装置はコンボリュージョンニューラルネットワークの演算過程を加速化
し、チップ内部とチップ外部でのデータ交換を減らし、記憶空間を節約できる。
図3は、公開されたほかの実施例に示した処理装置の構造原理図である。図3に示した
ように本装置の構造としては、制御回路はメモリの各モジュール及び演算回路と接続され
、制御回路は、制御信号一時メモリと制御信号処理器を含み、制御信号の記憶に用いられ
る。制御信号処理器は実行すべき制御信号を読み取り、制御ロジックを分析した後、メモ
リと演算回路への制御と調和に利用する。好ましくは、制御信号一時メモリは先入先出す
る。メモリには入力記憶モジュール、出力記憶モジュール、シナプス記憶モジュールが含
まれている。本装置でシナプス記憶モジュールには複数のシナプスサブモジュールが含ま
れ、演算回路には複数の演算モジュールが含まれている。シナプスサブモジュールを演算
モジュールとそれぞれ対応するよう接続するが、一つのシナプスサブモジュールを一つの
演算モジュールと対応するよう接続することができ、複数のシナプスサブモジュールを一
つの演算モジュールと対応するように接続することもできる。データ幅調節回路は入力デ
ータ処理モジュールと出力データ処理モジュールに分けることができ、入力データ処理モ
ジュールは入力記憶モジュール及び/又はシナプス記憶モジュールの中にあるデータに対
するデータ幅調節に利用され、それは入力記憶モジュールの後部に配置することができる
。出力データ処理モジュールは演算回路が演算したデータを幅調節した後、出力データ処
理モジュールに記憶させることに用いられる。毎回演算するとき、入力記憶モジュールは
入力データ処理モジュールを経てすべての演算モジュールに入力データを伝達し、シナプ
ス記憶モジュールは対応する演算モジュールにシナプスデータを送り、演算モジュールが
演算した後、出力データ処理モジュールは結果を出力記憶モジュールに書き込む。これに
より、パラメータが多い大規模演算では演算効率を著しく高まる。本装置はコンボリュー
ジョンニューラルネットワークの演算過程を効果的に加速化させ、しかもネットワークの
規模が比較的大きく、パラメータが比較的多い場合に適用する。
図4は、公開されたほかの実施例に示した処理装置の構造原理図である。図4に示す本
装置の構造としては、制御回路はメモリのすべてのモジュール、演算回路、データ幅調節
回路と接続されており、一つの命令キューと一つのデコーダーが含まれている。新しい命
令を毎回実行するたびに命令キューから新しい命令を読み取りデコーダーに伝送する。デ
コーダーを通じて解読し、制御信号をメモリの各モジュールと演算回路、データ幅調節回
路に入れる。メモリには入力記憶モジュールと出力記憶モジュール、シナプス記憶モジュ
ール、キャッシュモジュールが含まれており、ここで、出力記憶モジュールは中間演算結
果と最終演算結果を記憶することに利用できる。ここで、入力記憶モジュールとシナプス
記憶モジュールが演算回路にデータを伝送するたびにすべて先にデータをキャッシュモジ
ュールに入れる。その後キャッシュ予定データをデータ幅調節回路に読み取る。制御命令
がデータに対し処理を求めるとデータ幅調節回路で相応する処理を行う。例えば精度を落
とさないようにしつつデータのビット数を拡大し、データのもっとも低いビットを強制的
に削除することでデータのビット幅を減らすことなどがある。データ幅調節回路で処理し
た後、再び該当する演算モジュールに入れる。制御命令がデータを処理することを求めな
いとデータは直接データ幅調節回路を介して該当の演算モジュールに伝送される。同様に
、演算モジュールは演算を終えてから、まず結果をデータ幅調節回路にいれ、制御命令に
基づいてデータ処理操作をするか、又は、データに対して操作しないで、キャッシュモジ
ュールに入れ、更にキャッシュモジュールから出力記憶モジュールに書き込む。演算回路
は複数の演算モジュールを含み、第一演算モジュールと第二演算モジュールを含む。演算
モジュールの間には関連する演算を並列に行うことができ、相互にデータを送ってローカ
ルデータの反復利用距離を縮め演算速度をさらに高めることができる。第一演算モジュー
ルは主にニューラルネットワークアルゴリズムで同じだったり異なったりする計算ビット
幅の線形演算の加速化に用いられ、ドット積、マトリックス乗算、加算、乗算と加算の混
合;マトリックスとベクトル;マトリックスとリテラル;ベクトル間;ベクトルとリテラ
ル;リテラルとリテラル、を含む。また、最大/最小値を比較演算して選択すること等に
も用いられる。好ましい演算としては、内積値、マトリックス乗算及び/又はマトリック
ス加法演算が属する。第二演算は以上の第一演算モジュールで実行できない演算をするこ
とに利用され、ここには非線形演算、除法演算、個別的な加法演算あるいは個別的な乗法
演算が含まれる。こうするメリットとしては、制御命令に基づいて計算過程でデータのビ
ット幅をダイナミックに調節し演算回路とメモリのハードウェア利用率をもっと高めるこ
とができるということにある。
図5は、公開されたある実施例を本装置に利用したビットシリアル加算ツリー装置の原
理図であり、計算ビット幅をダイナミックに配置できる要求を満たすことができる。図5
に示したようにM個の演算予定データの最大ビット幅はNであり、ここで、M,Nはすべ
て正の整数である。もしNビットに足りないデータであれば合理的な方式によりデータの
精度に影響を与えない状態でそのビット数をNビットまで補充する。利用できる方式には
最高/最低ビットに0を補充すること、最高/最低ビットに符号ビットを補充すること、
ビットシフト、演算操作を行うことが含まれる。ビットシリアル加算ツリーの第一層から
第x層までにある加法器はn(n≧1)ビット数字に対する加法演算を実行でき、第x+
1層にある加法器はNビット以上の数字に対する加法演算を実行できる。まず、レジスタ
と各加法器の中にあるキャリー出力端子Cinを0に初期化する。各演算予定データの一
番低いnビットを読み取り、それぞれ第一層にある加法器のa,b端子に入力し、各加法
器ではa,b端子に入ってきた演算予定データの一番低いnビットに対する加法演算を行
い、得た結果値sをいっそう高い層にある加法器のaまたはb端子に伝送し、得たキャリ
ー値Coutは当該層にある加法器のキャリー出力Cinに差戻し、次のステップを待っ
て入ってきた演算予定データと加法演算を行う。上の層にある加法器の操作も同様であっ
て、入ってきたデータと加法演算をした後、結果はより高い層に伝送され、キャリーは当
該層にある加法器に差し戻す。これを第x層に到達するまで繰り返す。第X層にある加法
器は演算結果をシフトし、レジスタから来る下の結果と加法演算した後、レジスタに戻し
て保存させる。その後演算予定データから次の低いnビットを選びビットシリアル加算ツ
リーに送り相応する演算を行う。このとき各加法器のCinは一個前のステップからこの
加法器のCout端子に出力されたキャリー結果である。好ましくは、この操作では第一
層にある加法器の演算が終わった後に、直ちに第二回目の演算予定のnビットデータを入
力し、並列演算を通じて演算装置の使用率を高め、演算スピードをさらに高められる。す
べての演算が行われた後レジスタの中にあるデータが得ようとする結果である。この実施
例で加法器はこの加法器に入力される演算予定データ(a,b端子)及びキャリー入力(
Cin端子)がすべて0である状態で当該演算過程で遮断されるから電力消費を節約しよ
うとする目的を実現することができる。
ここで、本実施例に示したビットシリアル演算器、例えばベース乗法器などは、図6に
示したように、演算部、処理部、記憶部を含む。演算部は一つのビッ及び/又は複数のビ
ットのデータに対する演算及び/又は加法演算を実行することに利用され、そこに入力さ
れる演算予定データは記憶部のデータ及び/又は処理部を介して処理されたデータであり
、出力される演算結果は直接記憶部に入り記憶され、または処理部に入り処理される。処
理部はデータのシフト、ある決められた規則に沿ってデータビット幅を拡大/縮小するこ
と、ある決められた規則に沿ってデータの一つのビッ及び/又は複数のビットを修正する
などの処理操作を実行することに利用され、その処理予定データは演算部及び/又は記憶
部から得られ、処理されたデータは演算部及び/又は処理部に伝送される。記憶部はデー
タを記憶することに利用され、演算予定データ、中間演算結果、最終演算結果などが含ま
れる。ここの記憶部はオンチップキャッシュメモリでも良い。ここで、各部品は自分の相
異なる機能によってすべて複数の部品にもっと細分化できる。例えば、演算部は乗算部、
加算部などに細分化できる。ビットシリアル演算器にある乗法器の具体的な実施例として
は図7に示す第一ベース乗法器、図8に示す第二ベース乗法器、図9に示すスパース乗法
器がある。
図7は、本発明にあるビットシリアル演算器の具体的な実施例である。第一ベース乗法
器の装置原理図は計算ビット幅をダイナミックに配置できる要求を満たすことができる。
この第一ベース乗法器は、本発明の装置に利用できる。図7に示したようにMビットの被
乗数とNビットの乗数でM,Nはすべて正の整数である。ここで、乗数と被乗数の位置は
制御モジュールの制御下で交替出来る。乗数の低いnビット(nは正の整数であり、且つ
、1≦n≦Nであり、好ましくは1≦n≦Nにすることで、演算の並列度をさらに満たし
、ハードウェアソースを十分に利用して演算スピードを加速化することができる)を入力
選択回路に入力して乗数の低いnビットをそれぞれ被乗数とAND演算を行う。即ち、乗
数のこのビット値が1であれば被乗数それ自体を出力させ、そうでなければ0を出力させ
る。同時に、乗数を第一シフトレジスタに入れてシフトを行い、低いnビットをシフトす
れば次にまた入力選択回路に入力されるのは新しい低いnビットである。入力選択回路が
選択した結果を第二シフトレジスタに入力させ相応なシフトを行い、更に加算ツリーに入
れて加法演算を行う。ここで加法演算を行うのは入力選択をして且つシフトを行ったデー
タとその前に加法演算を行った結果である。結果を得た後に中間演算結果として結果レジ
スタに記憶させる。次の被乗数を待って入力選択した後シフトするとき結果レジスタは中
間演算結果を読み取り加算ツリー(装置)に入れて加法演算を行う。乗数がすべて0の場
合、乗法演算は終わる。
このベース乗法器の演算の流れをより明確に示すために、以下、具体的な実施例を示す
。被乗数が10111011、すなわちM=8であり、乗数は1011、すなわちN=4
だと仮定する。
n=2のとき、つまり、毎回2ビットをシフトするとき、この演算過程は次の通りであ
る。まず、乗数のもっとも低い2ビットである11を読み取り、被乗数とともに入力選択
回路に伝送し、被乗数自体をすべて選択して第一シフトレジスタに送る。一番低いビット
に対応するように選択した被乗数はシフトする必要がないから10111011であり、
次に低いビットに対応するよう選択した被乗数を1ビット左側にシフトすると10111
0110である。これを加算ツリーに伝送し、その前に足した数字がないため、結果レジ
スタに伝送されたのは10111011と101110110の合計、つまり10001
10001である。次に、乗数を右側に2ビットシフトした後、その一番低い2ビット、
つまり10を読み取り被乗数とともに入力選択回路に送り0と10111011を得る。
その後、第二シフトレジスタを通じて0を左側に2ビットシフトしてそのまま0になり,
10111011を左側に3ビットシフトして10111011000になる。結果レジ
スタにある1000110001とともに加算ツリーに伝送し演算を行い、100000
001001を得て結果レジスタに送る。このとき、乗数を右側に2ビットシフトすると
すべてが0であるから演算は終わる。結果レジスタの中にあるのが最終演算結果であり、
つまり100000001001である。
図8は、公開されたほかの実施例に示した本装置に利用される第二ベース乗法器の装置
原理図であり、計算ビットをダイナミックに配置できる要求を満たすことができる。図8
に示したように、Mビットの被乗数とNビットの乗数においてM,Nはすべて正の整数で
ある。ここで、乗数と被乗数の位置は制御モジュールの制御のもとで交替させることがで
きる。被乗数の低いmビット(mは正の整数で、かつ、1≦m≦M)を入力選択回路に入
力させ、乗数の低いnビット(nは正の整数で、かつ、1≦n≦N)を入力選択回路に入
力させ、被乗数の低いmビットをそれぞれ乗数の低いnビットと乗法演算させる。そして
、乗数を第一シフトレジスタに伝送しシフトを行い、低いnビットをシフトさせ、次に入
力選択回路の中に入力させるのは新しい低いnビットになる。入力選択後の結果は第二シ
フトレジスタに入力させ、相応なシフトをした後、更に加算ツリーに伝送して加法演算を
行う。ここで加法演算をするのは入力選択し且つシフトを行ったデータとその前に加法演
算を行った結果である。結果を得た後、中間演算結果として結果レジスタに記憶させる。
つぎの被乗数で入力選択をしてシフトをするとき、結果レジスタは中間演算結果を読み取
り、加算ツリー(装置)に送り、加法演算を行う。乗数がすべて0のとき、被乗数を第三
シフトレジスタに伝送してシフトを行い、低いmビットをシフトし、乗数はバックアップ
レジスタから読み取り、以上のステップを繰り返して行いながら演算する。被乗数と乗数
がすべて0になるときに乗法演算は終わる。
図9は、本発明で提供するある実施例に示した装置に利用するスパース乗法器の装置原
理図であり、計算ビット幅をダイナミックに配置できる要求を満たすことができる。つま
り、乗数あるいは被乗数の2進数の中で1がまれにある状態であれば、乗数あるいは被乗
数を疎らな方式で1の位置を示せば演算の有効性をさらに高めて演算スピードを加速化す
ることができる。図9に示したように、Mビットの被乗数とNビットの乗数において、M
,Nはすべて正の整数であり、つまり、ここにある被乗数と乗数のビット数は同じくても
いいし、異なってもいい。ここで、乗数は疎らな表示方法を利用し、絶対位置あるいは相
対位置の方式でこの乗数の中にある1の位置を表示する。ここで本実施例で提供するスパ
ース乗法器の演算モジュールはすべて配置可能であるため、異なる表示方法を利用して演
算を行うとき、演算装置の中にある装置は需要に応じて配置できる。 例えば、結果レジ
スタが加法演算をするときにはシフトする必要がなく、このとき結果レジスタと接続され
ているシフトレジスタが動作しないよう配置することができ、このとき、乗数のシフト情
報もこのシフトレジスタに伝送しないようにすることもある。当業者としては、関連する
具体的な細部はすべて需要に合わせて調節することによって、被乗数に対するシフトと結
果に対する加法演算を含めた関連する具体的な細部を実行できることを理解することがで
きる。
このスパース乗算の演算の流れの過程をより明確に示すために、一つの具体的な実施例
をあげる。被乗数が10111011、つまりM=8であり、乗数は00100010、
つまりN=8だと仮定する。絶対的な表示方式を利用して乗数を示すとすれば、絶対位置
で乗数の中にある1の位置を示す。数値の右端にあるビットを第0ビットとし、第0ビッ
トの左にあるビットを第1ビットとし、類推する。すると、この乗数は(1,5)で表示
される。同時に、この実施例で結果レジスタと接続されているシフトレジスタが動作しな
いことを求めるから乗数のデータがこのシフトレジスタに伝送されてはならない。まず、
乗数の一番目の数、つまり1を読み取り、第1ビットに一つの1があることを示す。被乗
数をシフトレジスタに伝送した後1ビットシフトして101110110になり加法器に
伝送する。その前の数字を加算するから結果レジスタに伝送される結果は1011101
10である。その後乗数の次の1の位置、つまり5を読み取り、被乗数とともにシフトレ
ジスタに伝送する。シフトレジスタで被乗数を5ビット右側にシフトし10111011
00000を得て加法器に伝送する。同時に結果レジスタの中にある結果1011101
10を読み取る。このような絶対表示方法ではシフトする必要がないから直接この結果を
加法器に伝送し加法演算を行って1100011010110を得る。加法演算した後の
結果を再び結果レジスタに伝送する。このとき、乗数にある1はすべて既に計算が完了さ
れているため演算は終わる。もし相対的な方式で乗数を示すとすれば、その表示方法を一
番高いビット(最左端)の0ではない初めての数字から始まって、一番低いビットに行く
までの0ではない各二つの数字の間の離れているビット数で定義する。00100010
の場合、0ではない初めての数字と0ではない次の数字の間は4ビット離れていて、0で
はない二番目の数字と一番低いビットの間は互いに1ビットぐらい離れているから(4,
1)と表示する。ここで、この実施例にある結果レジスタと接続されていて被乗数と互い
に接続されているシフトレジスタがすべて動作しなければならないと要求する。まず、乗
数の一番目の数字4を読み取り、第二シフトレジスタに伝送すれば被乗数を右側に4ビッ
トシフトし、結果レジスタの中にあるデータを右側に4ビットシフトした後、加法器に伝
送して加法演算を行う。このとき結果レジスタのデータは0だから加法演算結果は101
110110000と得られ、結果レジスタに伝送して記憶させる。その後乗数の二番目
の数字1を読み取ればこの値をシフトレジスタに送り101110110と101110
1100000を得て加法器に伝送して加法演算を行うことにして結果11000110
10110を得る。この結果は再び結果レジスタに送る。このとき乗数にある1はすべて
既に計算が完了されたから演算は終わる。こうすれば、データの希薄性を効果的に利用し
て、効果的な演算つまり0ではないデータ間の演算だけが行える。こうして非効率的な演
算を減らし、演算スピードを加速化させ、性能対電力消耗比を高めた。
以上、この装置と方法を利用してニューラルネットワークの演算スピードをはるかに高
めると同時に動的配置可能性をもってデータビット幅の多様性、演算過程でデータのビッ
ト幅をダイナミックに変えられなければならない当該の要求を満たし、柔軟性や配置可能
な程度が高くて演算スピードが速く電力消費が低いメリットを持つ。
本発明にある実施例のほかの側面では、計算ビット幅を動的に配置できる処理装置の処
理方法を提供し、図14に示すように、次のステップを含む。
S1401制御回路が制御命令を生成し、メモリ、データ幅調節回路、演算回路に伝送
する。
S1402メモリは受信した制御命令に基づいて、演算回路にニューラルネットワーク
の演算予定データを入力する。
S1403データ幅調節回路は実際の要求に応じて演算予定データ、中間演算結果、最
終演算結果及び/又はキャッシュ予定データの幅を調節する。
S1404演算回路は受信した制御命令に基づいて、対応する類型の乗法器と加法器回
路、ビットシリアル演算器を選択する。
S1405演算回路は入力されるデータとニューラルネットワークのパラメータ及び制
御命令に基づいて、計算ビット幅が異なるニューラルネットワークの演算予定データに対
して演算を行う。
以上、この実施例の方法にあるデータ幅調節回路を利用して、ニューラルネットワーク
の演算スピードをはるかに高められると同時に、動的配置可能性を持ち、データビット幅
の多様性と演算過程でデータビット幅を動的に変えられなければならない当該の要求を満
たすことができる。
更には、ステップS1403の第一演算モジュールは、加法器回路、ベース乗法器、ス
パース乗法器及び/又は融合ベクトル乗法器を利用いてニューラルネットワークの演算予
定データに対する演算を行うことを含む。具体的な加法器回路、ベース乗法器、スパース
乗法器及び/又は融合ベクトル乗法器を動的に選択することで、処理方法が柔軟性が高く
、配置可能性が高く、演算スピードが速く、電力消費が低い特徴を持たせることができる
以下、他の方法に係る計算ビット幅を動的に配置できる処理装置と処理方法の実施例を
紹介する。以下に紹介する方法にはデータ幅調節回路およびデータ幅調節回路と関係する
機能部品が含まれないこともある。
図15は、公開されたほかの実施例で提供する処理装置の構造原理図である。図15に
示したように、本装置を主に三つの部分に分けられ、つまり、制御回路、演算回路、メモ
リに分けられる。制御回路は、演算回路とメモリに制御信号を送信して二者の実行を制御
し、二者間のデータ伝送を調和させる。各部分の機能は図1に示す実施例の各部分に関す
る記述内容を参考すればいいため、ここでは省略する。
図16は、公開されたある実施例にある処理装置の構造原理図である。図16に示した
構造は図2に示す構造をベースにデータ幅調節回路をなくしたものであり、つまり、メモ
リを演算回路と直接接続したものである。相応の各設定方式は前記を参考できる。三つの
モジュールはパイプライン方式を利用して並列に実行できる。本装置はコンボリュージョ
ンニューラルネットワークの演算過程を加速化させ、チップ内部と外部でのデータ交換を
減らし、メモリ空間を節約できる。
図17は、公開されたほかの実施例にある処理装置の構造原理図である。図17に示し
た構造は図3と似ており、違う部分としては、図17にはデータ幅調整回路の関連構造と
連結関係がないことである。図17の各連結関係と実現する機能に対しては図3に示す実
施例に記された内容を参考できるからここでは省略する。この実施例に係る処理装置は、
パラメータが多い大規模の演算で演算スピードをはるかに高めることができる。この装置
は、コンボリューションニューラルネットワークの演算過程を効果的に加速化でき、さら
にはネットワークの規模が比較的に大きくてパラメータが比較的に多い場合に適用できる
図18は、公開されたほかの実施例にある処理装置の構造原理図である。図18に示し
た構造は図4と似ており、違う部分としては、図18にはデータ幅調節回路の関連構造と
連結関係がないことである。図18の各連結関係および実現する機能に対しては図4に示
す実施例に記述された内容を参考できるからここでは省略する。
図19は、公開されたほかの実施例で本装置に利用するベース乗法器の原理図であり、
計算ビット幅を動的に配置できなければならない要求を満たすことができる。図19に示
したように、Mビットの被乗数とnビットの乗数であり、M,Nはすべて正の整数である
。つまり、ここで被乗数と乗数のビット数は同一でもよく、違ってもよい。乗数の低いn
ビット(nは正の整数、且つ、1<n≦Nである)を入力選択回路に入力する。乗数の低
いnビットがそれぞれ被乗数とAND演算を行う。つまり、乗数のこのビット値が1の場
合、被乗数自身を取り、そうでなければ0を取る。同時に、乗数を第一シフトレジスタに
伝送してシフトを行い、低いnビットをシフトし、次に再び入力選択回路に入力するのは
新しい低いnビットである。入力選択した後の結果は第二シフトレジスタに入力して相応
のシフトを行い、再び加算ツリーに伝送して累積する。ここで累積するのは入力選択を行
いながらシフトしたデータとその前に累積した結果である。結果を取得した後、中間結果
として中間レジスタに記録する。次の被乗数に対する入力選択をした後、シフトを行うと
き、結果レジスタは中間結果を読み取って加算ツリー(装置)に送り累積する。乗数がす
べて0であるとき乗法演算は終わる。
このベース乗法器の演算の流れの過程をより明確に示すため具体的な実施例をあげる。
被乗数が10111011、つまりM=8であり、乗数は1011、つまりN=4である
と仮定する。
N=2のとき、つまり毎回2ビットをシフトするとき、この演算過程は次の通りである
。まず、乗数の一番低い2ビットである11を読み取って被乗数とともに入力選択回路に
送り、すべて被乗数自体を選択して第一シフトレジスタに伝送する。一番低いビットに対
応するように選択した被乗数はシフトする必要がないから10111011であり、次に
低いビットに対応するように選択した被乗数を1ビットぐらい左にシフトすると1011
10110である。これを加算ツリーに伝送する。前に数字を加算してないから結果レジ
スタに送られたのは10111011と101110110の合計、つまり100011
0001である。次に、乗数を右側に2ビットシフトした後その一番低い2ビット、つま
り10を読み取って被乗数とともに入力選択回路に送り、0と10111011を取得す
る。その後、シフトレジスタを通じて0を左側に2ビットシフトすると0、101110
11であり、左側に3ビットシフトすると10111011000である。結果レジスタ
にある1000110001とともに加算ツリーに送り、100000001001を取
得して、結果レジスタに伝送する。このとき、乗数を右側に2ビットシフトすると、すべ
てが0になるから演算は終わる。結果レジスタの中にあるのが最終演算結果、つまり10
0000001001である。
図20は、公開されたある実施例で本装置に利用したスパース乗法器の原理図で計算ビ
ット幅を動的に配置できなければならないという要求を満たすことができる。文字とおり
スパース乗法器はスパース演算に用いられ、つまり乗数あるいは被乗数がスパース表示方
式で1の位置を示すとき演算の有効性をさらに高めて演算スピードが加速化できる。図2
0に示したように、Mビットの被乗数とNビットの乗数であり、M,Nはすべて正の整数
である。つまり、ここで被乗数と乗数のビット数は同一でもよく、違ってもよい。ここで
、乗数にスパース表示方式を利用し、絶対あるいは相対位置の方式でこの乗数にある1の
位置を示す。ここで演算回路は、配置可能であるためほかの表示方式を利用して演算する
とき演算装置の中にある装置を需要に応じて配置できる。例えば、結果レジスタが累積す
るとき、シフトする必要がないとこのとき結果レジスタと接続されているシフトレジスタ
は動作しないと決められ、このとき、乗数のシフト情報もこのシフトレジスタに伝達しな
くてもよい。関連する具体的な細部は需要に応じて相応に調節して被乗数に対するシフト
と結果に対する累積など関連する具体的な細部を実行できる。
このスパース乗法器の演算の流れの過程をより明確に示すため具体的な実施例をあげる
。被乗数が10111011、つまりM=8で、乗数は00100010、つまりN=8
であると仮定する。絶対的な表示方式を利用して乗数を示すと絶対位置で乗数の中にある
1の位置を示す。数値の右端にあるビットを第0番目ビットとし、第0番目ビットの左に
あるビットを第一ビットとしながらこのように類推する。すると、この乗数は(1,5)
と表示される。同時に、この実施例で結果レジスタと接続されているシフトレジスタが動
作しないように要求するから乗数のデータをこのシフトレジスタに伝達する必要はない。
すると、まず乗数の一番目の数、つまり1を読み取って第一ビットに1があることを表示
する。被乗数をシフトレジスタに伝送し、1ビットシフトした後101110110とな
り加法器に送る。以前の数字を加算するから結果レジスタに伝送される結果は10111
0110である。その後乗数の次の1の位置、つまり5を読み取って被乗数とともにシフ
トレジスタに伝送する。シフトレジスタで被乗数を5ビットぐらい右側にシフトして10
11101100000を得て加法器に送る。同時に結果レジスタの中にある結果101
110110を読み取る。このような絶対表示方法ではシフトする必要がないから直接こ
の結果を加法器に送り累積を行って1100011010110を得る。累積した結果を
再び結果レジスタに伝送する。このとき、乗数にある1はすべて既に計算済だから演算は
終わる。もし相対的な方式で乗数を示せばその表示方法を一番高いビット(左端)であり
ながら0ではない一番目の数字から始まって一番低いビットに向かうにつれ、0ではない
各二つの数字の間のビット数で定義する。00100010の場合0で場ない一番目の数
字と0ではない次の数字の間は4ビットぐらい離れていて、0ではない二番目の数字と一
番低いビットの間は互いに1ビットぐらい離れているから(4,1)と表示する。ここで
、この実施例にある結果レジスタと接続されていながら被乗数と連結されているシフトレ
ジスタがすべて動作しなければならないと要求する。まず乗数の一番目の数字4を読み取
って二つのシフトレジスタに伝送すれば被乗数を右側に4ビットシフトして結果レジスタ
のなかにあるデータを右側に4ビットシフトした後、加法器に送り累積を行う。このとき
、結果レジスタのデータは0であるから累積結果は101110110000となり、結
果レジスタに伝送して記憶させる。その後、乗数の二番目の数字1を読み取ればこの値を
シフトレジスタに送り101110110と1011101100000を得て加法器に
伝送して累積することによって結果1100011010110を得る。この結果は、再
び結果レジスタに伝送する。このとき乗数にある1はすべて既に計算ずみなので演算は終
わる。こうすればデータの希薄性を効果的に利用して効果的な演算つまり0でないデータ
同士の演算だけが行える。そ野結果、効果がない演算を減らし演算スピードを加速化させ
、性能対電力消耗比を高めた。
融合ベクトル乗法器を利用して全体的に横方向の累積演算を行う。その構造を図22に
示すように、各次元の一成分に従う乗算積演算を終えれば即時加算ツリーに伝送して累積
を行い、演算が最終結果を取得する。例えば、その演算流れの過程を図23の楕円形フレ
ームで示したように第1クッロク周期では各次元でA*bi0(i=0,1,……,7
)の乗算積を計算して取得し、加算ツリーに伝送して累積を行う。計算結果を結果レジス
タに伝送してシフトレジスタに1を加算する。第2クロック周期では各次元でシフトレジ
スタに基づいて2*A*bi1(i=0,1,……,7)の乗算積を計算して取得し、
結果レジスタのデータとともに加算ツリーに伝送して累積を行い、シフトレジスタに1を
加算する。第3周期では各次元でシフトレジスタに基づいて4*A*bi2(i=0,
1,……,7)の乗算積を計算して取得し、結果レジスタのデータとともに加算ツリーに
伝送して累積を行い、シフトレジスタに1を加算する。最終の第4クッロク周期では8*
*bi3(i=0,1,……,7)の乗算積を計算して取得し、結果レジスタのデー
タとともに加算ツリーに伝送して累積を行い、最終結果を算出する。だから、四つの演算
周期の後に必要な結果を取得し、演算過程に合計3回のシフトを行った。これに対し、一
般的な乗法器では各データを演算予定にはシフト操作を行わなければならない。即ち、操
作数が4個の場合、合計4*3=12回のシフト操作が求められる。したがって、この設
計では演算順番の変化を通じてシフト値に対する計数操作を大幅に減少させ、性能対電力
消耗比を効果的に向上させることができる。
本実施例のほかの側面において、計算ビット幅を動的に配置できる処理方法を提供する
。図24に示すように、次のステップを含む。
S2400:制御回路が制御命令を生成し、メモリと演算回路に伝送する。
S2401:メモリは受信した制御命令に基づいて、演算回路にニューラルネットワー
クの演算予定データを入力する。
S2402:演算回路は受信した制御命令に基づいて、第1演算モジュールの中にある
対応する類型の乗法器と加法器回路を選択する。
S2403:演算回路は入力される演算予定データとニューラルネットワークのパラメ
ータ及び制御命令に基づいて、計算ビット幅が異なるニューラルネットワークの演算予定
データに対して演算を行う。
更に、ステップS2403の第1演算モジュールは、加法器回路、ベース乗法器、スパ
ース乗法器及び/又は融合ベクトル乗法器を利用してニューラルネットワークの演算予定
データに対する演算を行う。
以上、この処理装置と方法を利用してニューラルネットワークの演算スピードをはるか
に高められると同時に動的配置可能性をもってデータビット幅の多様性、演算過程にデー
タのビット幅を動的に変えられえる相応の要求を満足させることができ、柔軟性が高く、
配置可能な程度が高く、演算スピードが速く、電力消費が低い長点をもつ。
また、本発明ではオフラインモデルの構築を含む演算方法と演算装置も提供する。オフ
ラインモデルを生成した後、オフラインモデルに基づいて直接演算を行うことができ、深
層学習のフレームを含む総体的なソフトウェアアーキテクチャを実行するときに発生する
超過費用をなくし、以下、具体的な実施例と合わせて詳細に説明する。
典型的な応用場面で、ニューラルネットワーク加速機のプログラミングフレームワーク
は、普通、最上部にあって、プログラミングフレームワークはCaffe,Tensor
flow,Torchなどに区分できる。図25に示したように、下層から上層に向かっ
て、順次にニューラルネットワークプロセッサ(ニューラルネットワーク演算に用いられ
る専用ハードウェア)、ハードウェアドライバ(ニューラルネットワークプロセッサを呼
出すソフトウェア用)、ニューラルネットワークプロセッサのプログラミングライブラリ
(ニューラルネットワークプロセッサを呼出すためのインタフェースを提供)、ニューラ
ルネットワークプロセッサのプログラミングフレームワーク、及びニューラルネットワー
ク演算のために必要な高度なアプリケーションである。
本実施例のある側面では、ニューラルネットワークの演算方法を提供し、次のステップ
を含む。
ステップ1:入力データを取得する。
ステップ2:取得、または、入力データに基づいてオフラインモデルを確定し、オフラ
インモデルに基づいて演算命令を確定し、次の計算のために呼び出す。
ステップ3:前記演算命令を呼び出し、処理予定データに対する演算を行い、演算結果
を取得して出力する。
ここで、入力データは、処理予定データ、ネットワークストラクチャー、ウェイト値を
含み、あるいは、この入力データは、処理予定データに関するオフラインモデルデータを
含む。
ここで、ステップ2におけるオフラインモデルは、既存のものでもよく、または、外部
データ(例えば、ネットワークストラクチャーあるいはウェイと値)に基づいて後に生成
されたものでよい。オフラインモデルの設定による演算命令の方式で取得すると、演算過
程が高まる。
ステップ3における呼出演算命令は、入力データに処理予定データのみ含まれ、オフラ
インモデルあるいはオフラインモデルを確定するためのデータが含まれない状態で、演算
命令にしたがってネットワーク演算を行う。
ある実施例では、入力データに処理予定データ、ネットワークストラクチャー、ウェイ
トデータが含まれているとき、次のステップを行う。
ステップ11:入力データを取得する。
ステップ12:ネットワークストラクチャーとウェイと値に基づいてオフラインモデル
を構築する。
ステップ13:オフラインモデルを解析して演算命令を取得しながらキャッシュ記憶さ
せ、後の計算時に呼び出す。
ステップ14:演算命令に基づいて、処理予定データに対する演算を行い演算結果を取
得し、出力させる。
以上の実施例では、まず、ネットワークのストラクチャーとウェイト値に基づいてオフ
ラインモデルを作成した後、オフラインモデルの極性を解析した後、演算命令を取得する
。これにより、オフラインモデルを記憶しない低メモリとリアルタイム性の強い応用環境
で性能を十分に発揮し、演算過程がより簡潔かつ迅速になる。
ある実施例で入力データに処理予定データとオフラインモデルが含まれるとき、次のよ
うなステップを含む。
ステップ21:入力データを取得する。
ステップ22:オフラインモデルを解析し、演算命令を読み出してキャッシュ記憶させ
、後の計算時に呼び出す。
ステップ23:演算命令に基づいて処理予定データに対する演算を行い演算結果を取得
し、出力させる。
以上の実施例では入力データにオフラインモデルが含まれる場合、オフラインモデルを
作った後、演算を行うときオフラインモデルを解析した後、演算命令を取得して深層学習
フレームを含む全般的なソフトウェアフレームを実行する過程に発生する追加費用をなく
す。
ある実施例で入力データに処理予定データのみ含まれているとき、次のステップによっ
て実行される。
ステップ31:入力データを取得する。
ステップ32:キャッシュ記憶されている演算命令を呼び出して、処理予定データに対
する演算を行い演算結果を取得して出力する。
以上の実施例で入力データに処理予定データのみ含まれており、ニューラルネットワー
クストラクチャーとウェイと値が含まれていないとき、演算命令の呼び出しを通じて処理
予定データに対する演算を行って演算結果を取得する。
ある実施例ではニューラルネットワークプロセッサを通じて演算命令に従って処理予定
データに対する演算を行って演算結果を取得する。ここで、ニューラルネットワークプロ
セッサは主にニューラルネットワーク演算、命令、処理予定データ及び/又はネットワー
クモデル(例えばオフラインモデル)を受け付けた後、演算を行うのに用いられる。例え
ば、多層ニューラルネットワークの場合、入力層データおよびニューラル細胞、ウェイト
値、偏差などのデータに基づいて、出力層データを計算して取得する。
他の実施例において、このニューラルネットワークプロセッサは受信した演算命令をキ
ャッシュ記憶させる命令キャッシュユニットがある。
ある実施例において、ニューラルネットワークプロセッサは、処理予定データをキャッ
シュ記憶させるのに利用するデータキャッシュユニットもある。処理予定データはニュー
ラルネットワークプロセッサに入った後、このデータキャッシュユニットに一時的に記憶
させ、後に演算命令と合わせて再度演算を行う。
以上の演算方法に基づいて、本実施例では次のようなものを含む演算装置を提供する。
入力モジュール:入力データの取得に用いられ、この入力データは、処理予定データ、
ネットワークストラクチャーとウェイト値を含み、または、この入力データは処理予定デ
ータとオフラインモデルデータを含む。
モデル生成モジュール:入力されたネットワークストラクチャーとウェイトデータに基
づいてオフラインモデルの構築するに用いられる。
ニューラルネットワーク演算モジュール:入力モジュールにあるオフラインモデルデー
タあるいはモデル生成モジュールに構築されているオフラインモデルに基づいて演算命令
を生成しかつキャッシュ記憶させ、演算命令に基づいて処理予定データに対して演算を行
って演算結果の取得に用いられる。
出力モジュール:前記演算結果の出力に用いられる。
制御モジュール:入力データの類型を検査し且つ次の操作の実行に用いられる;
入力データに処理予定データ、ネットワークストラクチャーとウェイト値が含まれてい
るとき、入力モジュールがネットワークストラクチャーとウェイト値をモデル生成モジュ
ールに入力してオフラインモデルを構築するよう制御し、且つ、ニューラルネットワーク
演算モジュールがモデル生成モジュールが入力するオフラインモデルに基づいて入力モジ
ュールが入力する処理予定データに対する演算を行うよう制御する。
入力データに処理予定データとオフラインモデルが含まれているとき、入力モジュール
が処理予定データとオフラインモデルをニューラルネットワーク演算モジュールに入力す
るよう制御し、且つ、オフラインモデルがオフラインモデルに基づいて演算命令を生成し
ながらキャッシュさせ、演算命令に基づいて処理予定データに対する演算を行うよう制御
する。
入力データに処理予定データのみあるとき、入力モジュールが処理予定データをニュー
ラルネットワーク演算モジュールに入力するよう制御し、且つ、ニューラルネットワーク
演算モジュールがキャッシュ記憶されている演算命令を呼び出して処理予定データに対す
る演算を行うよう制御する。
前記ニューラルネットワーク演算モジュールはモデル解析ユニットとニューラルネット
ワークプロセッサを含み、ここで、
モデル解析ユニットは、オフラインモデルに基づいて演算命令の生成に用いられ、
ニューラルネットワークプロセッサは、次の段階の計算で呼出すために用いられる演算
命令をキャッシュ記憶させ、あるいは入力データの中に処理予定データのみ含まれている
ときにキャッシュ記憶されている演算命令を呼び出し、且つ、演算命令に基づいて処理予
定データに対する演算を行って演算結果の取得に用いられる。
ある実施例において、ニューラルネットワークプロセッサは命令キャッシュユニットを
有し、演算命令をキャッシュ記憶させ、次の段階の計算で呼び出すのに用いられる。
ある実施例において、上記オフラインモデルは特殊な構造により定義されたテキストフ
ァイル、または、各種のニューラルネットワークモデルであってもよい。例えば、Cam
bricon_model、AlexNet_model、GoogleNet_mod
el、VGG_model、R−CNN_model、GAN_model、LSTM_
model、RNN_model、ResNet_modelなどのモデルであってもよ
い。しかし、本実施例であげたこのようなモデルに局限されない。
オフラインモデルは、オリジナルネットワークにある各計算ノードのネットワーク値お
よび命令データをはじめ必要なネットワーク構成情報などを含む。ここで、命令には各計
算ノードの計算属性および各計算ノード間の連結関係をはじめとする情報が含められてい
るため、プロセッサが再度前記オリジナルネットワークを実行させるとき、このネットワ
ークに対応するオフラインモデルを直接実行させることで、同一のネットワークに対して
コンパイルなど操作をする必要がなくなり、プロセッサが同ネットワークを実行させると
きの演算時間を短縮し、プロセッサの処理効率を高める。
好ましくは、プロセッサは汎用プロセッサである。例えば、CPU(Central
Processing Unit)、GPU(Graphics Processi
ng Unit)、あるいはIPU(Intelligence Processin
g Unit),IPUは人工ニューラルネットワークの演算実行に用いられる処理装置
である。
ある実施例において、処理予定データはニューラルネットワークを利用して処理できる
ポータルであり、例えば、連続する単一画像、音声、またはビデオストリームの中の少な
くとも一つになり得る。
ある実施例において、前記ネットワークストラクチャーは各種のニューラルネットワー
ク構造でもよい。例えば、AlexNet、GoogleNet、ResNet、VGG
、R−CNN、GAN、LSTM、RNN、ResNetなどでもよくて、この実施例で
提供したこのような構造にのみ限らない。要するに、上述したネットワーク構造はオフラ
インモデルと相互対応するということである。例えば、ネットワーク構造がRNNのとき
、オフラインモデルはRNN_modelであり、このモデルにはRNNネットワーク構
造の中にある各ノードのネットワークウェイト値および命令データなど必要なRNNネッ
トワーク構成情報が含まれている。ここで、命令には各計算ノードの計算属性および各計
算ノード間の連結関係などの情報が含まれる。
具体的には、入力モデルによる入力データの違いによって、本実施例の演算装置は次の
三つの実行形式を有する。
1、入力モジュールからの入力データがネットワークストラクチャー、ウェイト値、処
理予定データのとき、制御モジュールは入力モジュールがネットワークストラクチャーと
ウェイト値データをモデル生成モジュールに伝送し、処理予定データをモデル解析モジュ
ールに伝送するよう制御する。制御モデルはモデル生成モジュールが具体的なネットワー
クストラクチャーおよび相応するウェイト値に基づいてオフラインモデル(オフラインモ
デルは既存の設定構造によって定義するテキストファイルでもよく、ニューラルネットワ
ークのなかにある各計算ノードの計算属性および計算ノード間の連結関係などの情報を含
んでもいい、例えば、相応するネットワークストラクチャーおよびウェイト値に基づいて
同オフラインモデルを構築してもよい)を生成し、同オフラインモデルをモデル解析ユニ
ットに伝送するよう制御する。制御モジュールは、モデル解析ユニットが受けたオフライ
ンモデルを解析し、ニューラルネットワークプロセッサが識別できる演算命令を得て(つ
まり、前記オフラインモデルのテキストファイルに基づいて相応するネットワーク演算命
令をマッピングし、ネットワークコンパイラー操作を必要としない)演算命令と処理予定
データをニューラルネットワークプロセッサに送るよう制御する。ニューラルネットワー
クプロセッサは受信した演算命令に従って処理予定データに対する演算を行って演算結果
を得て、この演算結果を出力モジュールに伝送して出力させるようにする。
2.入力モジュールが入力するデータがオフラインモデルと処理予定データであるとき
、制御モジュールは入力モジュールがオフラインモデルと処理予定データをモデル解析ユ
ニットに直接送るように制御し、次の動作原理は一番目の状態と同様である。
3.入力モジュールが入力するデータに処理予定データのみ含まれるとき、制御モジュ
ールは入力モジュールがこの処理予定データをモデル解析ユニットを経てニューラルネッ
トワークプロセッサに送り、ニューラルネットワークプロセッサはキャッシュ記憶されて
いる演算命令に従って処理予定データに対する演算を行って演算結果を得るよう制御する
。入力モジュールは、入力データの類型の判断に用いられる判断モジュールを含む。当然
ながら、通常はこのような状態が始めて利用するニューラルネットワークプロセッサでは
現れないように、命令キャッシュに既に確定された演算命令が存在する。
したがって、現在のネットワーク演算と以前のネットワーク演算のオフラインモデルが
違うとき、入力モジュールが入力するデータにはネットワーク構造、ウェイト値データ、
処理予定データが含まれるべきであり、モデル生成モジュールを通じて新しいオフライン
モデルを生成した後、次のネットワーク演算を行う。現在のネットワーク演算が事前に既
に相応するオフラインモデルを得たとき入力モジュールが入力するデータにはオフライン
モデルと処理予定データが含まれるべきである。現在のネットワーク演算と以前のネット
ワーク演算のオフラインモデルが同様のとき、入力モジュールが入力するデータに処理予
定データのみあってもいい。
公開されたある実施例では、演算装置がサブモジュールとしてコンピュータシステムの
CPUモジュールの中に集積されている。処理予定データとオフラインモデルはCPUに
よって制御され演算装置に伝送される。モデル解析ユニットは送られてくるニューラルネ
ットワークオフラインモデルを解析して演算命令を生成する。続いて、演算命令と処理予
定データはニューラルネットワークプロセッサに伝送されて入り、演算処理を通じて演算
結果を得てこの演算結果をメインメモリに送り返す。次の計算過程でネットワーク構造が
変わらなく、処理予定データを繰り返し伝送して入れてくれればニューラルネットワーク
計算が行われ演算結果が得られる。
以下、具体的な実施例を通じて演算装置および方法を詳しく説明する。
図26に示したように本実施例における演算方法は、次のようなステップを含む。
入力データに処理予定データ、ネットワーク構造、ウェイト値データが含まれていると
き、次のようなステップを実行する。
ステップ11、入力データを得る。
ステップ12、ネットワーク構造とウェイト値データに準じてオフラインモデルを構築
する。
ステップ13、オフラインモデルを解析して演算命令を得て且つキャッシュ記憶させ、
次の計算で呼び出せるようにする。
ステップ14、演算命令に従って処理予定データに対する演算を行ってニューラルネッ
トワーク演算結果を得て出力させる。
入力データに処理予定データとオフラインモデルが含まれているとき、次のようなステ
ップを実行する。
ステップ21、入力データを得る。
ステップ22、オフラインモデルを解析し、演算命令を得て且つキャッシュ記憶させ、
次の計算で呼び出すことに用いられる。
ステップ23、演算命令に従って処理予定データに対する演算を行い、ニューラルネッ
トワーク結果を得て出力するようにする。
入力データに処理予定データのみ含まれているとき、次のようなステップを実行する。
ステップ31、入力データを得る。
ステップ32、キャッシュ記憶されている演算命令を呼び出して処理予定データに対す
る演算を行い、ニューラルネットワーク演算結果を得て出力するようにする。
ニューラルネットワークプロセッサを通じて演算命令に従って処理予定データに対する
処理を行って演算結果を得る。このニューラルネットワークプロセッサには命令キャッシ
ュ記憶ユニットとデータキャッシュ記憶部があり、それぞれ受ける演算命令と処理予定デ
ータをキャッシュ記憶させることに用いられる。
本実施例に係る入力のネットワーク構造はAlexNetであり、ウェイト値データは
bvlc_alexnet.caffemodel、処理予定データは連続的になってい
る個別的な画像であり、オフラインモデルはCambricon_modelである。既
にあるオフラインモデルの場合、このオフラインモデルCambricon_model
を解析して、一連の演算命令を生成し、次いで生成した演算命令をニューラルネットワー
クプロセッサ2707にある命令キャッシュ記憶ユニットに伝送し、入力モジュール27
01が入力する画像をニューラルネットワークプロセッサ2707にあるデータキャッシ
ュ記憶部に伝送する。
以上、本実施例の方法を利用すると、ニューラルネットワークプロセッサで演算する流
れの過程を大幅に簡略化することができ、伝統的なすべてのプログラミングフレームワー
クを呼び出すときにもたらされる追加的なメモリとIO費用をなくすことができる。この
方法を利用すると、ニューラルネットワークアクセレレーターが低い内部記憶とリアルタ
イム性が高い環境で演算性能を十分に発揮できるようにする。
図27に示したように、本実施例では演算装置を開示し、入力モジュール2701、モ
デル生成モジュール2702、ニューラルネットワーク演算モジュール2703、出力モ
ジュール2704、制御モジュール2705を含み、ここで、ニューラルネットワーク演
算モジュール103はモデル解析ユニット2706とニューラルネットワークプロセッサ
2707を含む。
この装置のキーワードはオフライン実行であり、これはオフラインモデルを生成した後
、オフラインモデルを利用して直接関連する演算命令を生成し且つウェイト値データを入
れて、処理予定データに対する処理演算を行う。具体的には、
前述の入力モジュール2701はネットワーク構造、ウェイト値データ、処理予定デー
タの組合あるいはオフラインモデルと処理予定データの組合を入力することに用いられる
。入力がネットワーク構造、ウェイト値データ、処理予定データの場合、ネットワーク構
造とウェイト値データをモデル生成モジュール2702に送り次の演算を実行することに
用いられるオフラインモデルを生成する。入力がオフラインモデルと処理予定データであ
るとき、オフラインモデルと処理予定データを直接モデル解析ユニット2706に送って
次の演算を実行する。
前述の出力モジュール2704は特定のネットワーク構造と処理予定データセットに基
づいて生成した確定的な演算データの出力に用いられる。ここで、出力データはニューラ
ルネットワークプロセッサ2707によって演算されて得られる。
前述のモデル生成モジュール2702は入ってくるネットワーク構造パラメータとウェ
イト値データにしたがって下の階で利用できるオフラインモデルの生成に用いられる。
前述のモデル解析ユニット2706は入ってくるオフラインモデルを解析し、ニューラ
ルネットワークプロセッサ2707に直接伝送できる演算命令を生成すると同時に入力モ
ジュール2701が入れてくれる処理予定データをニューラルネットワークプロセッサ2
707に送ることに用いられる。
前述のニューラルネットワークプロセッサ2707は入ってくる演算命令と処理予定デ
ータにしたがって演算を行い、確定的な演算結果を得て出力モジュール2704に伝送す
ることに用いられる。命令キャッシュ記憶ユニットとデータキャッシュ記憶部が含まれて
いる。
前述の制御モジュール2705は入力データの類型を検査し且つ次の操作を実行するこ
とに用いられる。
入力データで処理予定データ、ネットワーク構造とウェイト値データが含まれていると
き、入力モジュール2701がネットワーク構造とウェイト値データをモデル生成モジュ
ール2702に入力してオフラインモデルを構築するように制御し、ニューラルネットワ
ーク演算モジュール2703がモデル生成モジュール2702が入力するオフラインモデ
ルに基づいて入力モジュール2701が入力する処理予定データに対する演算を行うよう
に制御する。
入力データに処理予定データとオフラインモデルが含まれているとき、入力モジュール
2701が処理予定データとオフラインモデルをニューラルネットワーク演算モジュール
2703に入力するよう制御し、ニューラルネットワーク演算モジュール2703がオフ
ラインモデルに基づいて演算命令を生成し且つキャッシュ記憶させ、演算命令に基づいて
処理予定データに対するニューラルネットワーク演算を行うように制御し;
入力データに処理予定データのみ含まれているとき、入力モジュール2701が処理予
定データをニューラルネットワーク演算モジュール2703に入力するよう制御し、ニュ
ーラルネットワーク演算モジュール2703がキャッシュ記憶されている演算命令を呼び
出し、処理予定データに対するニューラルネットワーク演算を行うように制御する。
本実施例における入力されるネットワーク構造はAlexNetで、ウェイト値データ
はbvlc_alexnet.caffemodelであり、処理予定データは連続的に
なっている個別的な画像である。モデル生成モジュール102は入力されるネットワーク
構造とウェイト値データに基づいて新しいオフラインモデルCambricon_mod
elを生成する。生成されたオフラインモデルCambricon_modelは次の入
力として個別的に使用できる。モデル解析ユニット2706はオフラインモデルCamb
ricon_modelを解析して一連の演算命令を生成できる。モデル解析ユニット2
706は生成された演算命令をニューラルネットワークプロセッサ2707にある命令キ
ャッシュ記憶ユニットに送り、入力モジュール2701が伝送して入れてくれる入力画像
をニューラルネットワークプロセッサ2707にあるデータキャッシュ記憶部に送る。
また、複合スカラ命令を支援する演算装置と演算方法を提供し、演算過程で複合スカラ
命令(浮動小数点命令と固定小数点命令を統一させる命令)を提供することを通じて、浮
動小数点命令と固定小数点命令を大きな程度で統一させて解読段階で命令の種類を区分せ
ず、具体的な計算のときだけアドレスフィールドにあるオペランドのアドレスにしたがっ
てオペランドが浮動小数点データか、固定小数点データかを確定して命令の解読論理を簡
略化し、また命令セットをより簡素化させた。以下、具体的な実施例と組み合わせについ
て具体的に説明する。
図28はある実施例で提供する複合スカラ命令を支援する装置の構造原理図である。図
28に示したように、装置には制御装置モジュール2810、記憶モジュール2820、
演算装置モジュール2830、入出力モジュール2840が含まれている。
制御装置モジュール2810は記憶モジュールから命令を読み取り且つローカルの命令
キューに記憶させ、また命令キューにある命令を制御信号に解読して記憶モジュール、演
算装置モジュール、入出力モジュールの動作を制御することに用いられる。
記憶モジュール2820にはレジスタセット、RAM、ROMなどの記憶部が含まれて
おり、命令、オペランドなどの相異なるデータを記憶させることに用いられる。オペラン
ドには浮動小数点データと固定小数点データが含まれ、記憶モジュールは浮動小数点デー
タと固定小数点データを相異なるアドレスに対応する空間、例えば違うRAMアドレスあ
るいは違うレジスタ番号に記憶させて、アドレスやレジスタ番号を通じて読み取るデータ
が浮動小数点か固定小数点かを判断できる。
演算装置モジュール2830は浮動小数点データと固定小数点データに対して四則演算
、論理演算、シフト操作、補数演算などの操作を行う。ここで、四則演算には加算と減算
、乗算、除算の四つの演算操作がある。論理演算には論理積、論理和、非含意、逆非含意
など四つの演算操作がある。演算装置モジュールは制御装置モジュールの制御信号を受け
た後、オペランドがあるアドレスあるいはレジスタ番号を読み取ってそれが浮動小数点類
型のデータか固定小数点類型のデータ化を判断し、演算装置モジュールは記憶モジュール
から操作データを読み取りながら対応する演算を行う。演算中間結果は記憶モジュールの
中にあり、最終演算結果を入出モジュールに記憶させる。
入出力モジュール2840は入出力されるデータを記憶、伝送することに利用できる。
初期化するとき入出モジュールは初期の入力データとコンパイラされた符号スカラ命令を
記憶モジュールに記憶させて演算が終わった後に演算装置モジュールが伝送する最終演算
結果を取得する。ほかに入出力モジュールはメモリから命令をコンパイラすることに必要
な情報を読み取ってコンピュータの翻訳機がプログラムを各種の命令でコンパイラするよ
うに提供する。
以上からわかるように、本実施例に示した複合スカラ命令を支援する装置は複合スカラ
命令に高い効率の実行環境を提供する。
図29Aと図29Bは、本実施例で提供する記憶モジュールの組織形式に関する実例図
である。記憶モジュールは浮動小数点データと固定小数点データをほかの記憶空間、例え
ば異なるアドレスあるいはほかのレジスタ番号に記憶させ、アドレスやレジスタ番号を通
じて読み取るデータが浮動小数点数か固定小数点数かを判断できる。
本実施例において、初期アドレスが0000Hで最後のアドレスが3FFFHであるR
AMと16個のレジスタとなっているレジスタセットで構成された記憶モジュールを実例
として、浮動小数点数の記憶と固定小数点数の記憶をどのように分離するかを示す。図2
9Aに示したように、RAMで固定小数点データは、ただアドレスが0000Hから1F
FFHまでのRAMユニットにだけ、浮動小数点データは2000Hから3FFFHまで
のRAMユニットにだけ記憶され、命令は任意のRAMユニットに記憶でき、命令セット
の中で変わらない情報をROMに記憶させることもできる。図29Bに示したようにレジ
スタセットで固定小数点データは0から7までのレジスタにだけ保存され、浮動小数点は
8から15までのレジスタにだけ保存される。レジスタの中に記憶されている値がRAM
アドレスであるとき、0から7までのレジスタは固定小数点データを記憶させるRAMア
ドレスに利用され、8から15までのレジスタは浮動小数点データを記憶させるRAMア
ドレスに用いられる。
図30Aは本実施例で提供する複合スカラ命令の実例図である。図30Aに示したよう
に各命令にはオペコードフィールド、オペランドアドレスフィールド(あるいは即値)、
宛先アドレスフィールドがある。オペコードフィールドにはオペコードが含まれており、
オペランドアドレスフィールドにはソースオペランド・アドレス1とソースオペランド・
アドレス2が含まれており、各ソースオペランドの記憶アドレスを表す。宛先アドレスフ
ィールドはオペランド演算結果の記憶アドレスである。
オペコードフィールドは類型の違う操作、例えば加算、減算、乗算、除算などを区別す
ることに利用し、オペランドの類型を区別するには利用しない。
オペランドアドレスフィールドにはRAMアドレス、レジスタ番号、即値が含まれる。
浮動小数点データと固定小数点データの記憶に利用するRAMアドレ記憶スタ番号は違う
からアドレスフィールドを利用して浮動小数点オペランドと固定小数点オペランドを区別
できる。オペランドアドレスフィールドに記憶されているのが即値であるときは、演算装
置モジュールが識別できるデータ類型標識ビットで浮動小数点オペランドと固定小数点オ
ペランドを区分しなければならない。
宛先アドレスフィールドは、RAMアドレスか、レジスタ番号である。このアドレスフ
ィールドはオペランドの類型と互いに対応し、つまり、浮動小数点オペランドの演算結果
を浮動小数点データに対応する記憶部に保管し、固定小数点オペランドの演算結果を固定
小数点データに対する記憶部に保管する。
したがって本発明で提供する複合スカラ命令は、浮動小数点命令と固定小数点命令を統
一させた命令であり、浮動小数点命令と固定小数点命令を大きい程度で統一させ、解読段
階で命令の類型を区分せず、具体的に計算するときだけオペランドを読み取るオペランド
アドレスフィールドの中のアドレスにしたがってオペランドが浮動小数点データか固定小
数点データかを確定するため、命令の解読論理を簡略化し、命令セットがより簡素化でき
るようにする。
また、本発明で提供する複合スカラ命令にあわせて、いろいろなアドレス指定方式を利
用すると、アドレス指定方式を確定する標識ビットを増加する必要がある。
例えば、図29Aと図29Bに示した記憶モジュール組織構造を利用する場合、加算命
令の操作コードは0001であるものの、いろんなアドレス指定方式を利用するとき、複
合スカラ命令の構成は図30Bから図30Eに示したのと同じようになる。
図30Bは本実施例で提供するレジスタでアドレス指定するときの複合区カラー命令の
実例図である。図30Bに示したようにレジスタでアドレスを指定するとき、アドレス指
定方式の標識ビットは01で、ソース・オペランド1と2はそれぞれソース・オペランド
1のレジスタ番号とソース・オペランド2のレジスタ番号に対応するレジスタに保管され
、番号0から7までのレジスタに記憶されるのは固定小数点データで、番号8から15ま
でのレジスタに記憶されるのは浮動小数点データである。
図30Cは本実施例で提供するレジスタによる間接アドレス指定をするときの複合スカ
ラ命令実例図である。図30Cに示したように、レジスタによる間接アドレス指定をする
とき、アドレス指定方式標識ビットは10でありRAMでソース・オペランド1と2のア
ドレスはそれぞれソース・オペランド1のレジスタ番号とソース・オペランド2のレジス
タ番号に対応するレジスタに保管される。ここで、固定小数点データのRAMアドレス(
0000Hから1FFFHまで)は0から7までのレジスタに保管され、浮動小数点デー
タのRAMアドレス(2000Hから3FFFHで)は8から15までのレジスタに保管
される。宛先アドレスフィールドには宛先レジスタ番号あるいは宛先RAMのアドレスが
記憶される。固定小数点データはアドレスが0000Hから1FFFHまでの範囲の中に
あるRAMユニットの中に保管され、浮動小数点データはアドレスが2000Hから3F
FFHまでの範囲の中にあるRAMユニットの中に保管される。
図30Dは本実施例で提供する即値によるアドレス指定をするとき複合スカラ命令の実
例図である。図30Dに示したようにオペランドアドレスフィールドのデータが二つの即
値であればアドレス指定方式標識ビットは00で、アドレス方式標識ビットとオペランド
アドレスフィールド間にデータ類型標識ビットが設定されている。即値が固定小数点類型
であるとき、このデータ類型の標識ビットは0である。即値が浮動小数点類型のときこの
データ類型の標識ビットは1である。
図30Eは本実施例で提供するRAMによるアドレス指定をするとき、複合スカラ命令
の実例図である。図30Eに示したようにオペランドアドレスフィールドがRAMアドレ
スであればアドレス指定方式標識ビットは11である。ソースオペランド1と2はそれぞ
れRAMアドレスに対応するRAMユニットに保管される。ここで、固定小数点データは
RAMアドレス0000Hから1FFFHまでに対応するRAMユニットの中に保管され
、浮動小数点データはRAMアドレス2000Hから3FFFHまでに対応するRAMユ
ニットの中に保管される。
以上の各アドレス指定方式を利用する関連命令において、宛先アドレスフィールドには
宛先レジスタ番号あるいは宛先RAMアドレスが記憶される。固定小数点データは0から
7までのレジスタあるいはアドレスが0000Hから1FFFHまでの範囲にあるRAM
ユニットに記憶される。浮動小数点データは8から15までのレジスタあるいはアドレス
が2000Hから3FFFHまでの範囲にあるRAMユニットに保存される。
図31は本実施例に示した複合スカラ命令を支援する演算方法のローチャートである。
図4に示したように本発明の実施例では複合スカラ命令を支援する演算方法を提供し、前
記複合スカラ命令を支援する装置を利用してデータ演算を行い、具体的に次のステップを
含む。
S3101:類型の異なるデータを異なるアドレスに記憶させる。
記憶モジュールは浮動小数点データと固定小数点データを相異なるアドレスに対応する
スペースに記憶させる。例えば相異なるRAMアドレスあるいは相異なるレジスタ番号を
あげられる。
S3102:複合スカラ命令を制御信号で解読する。
制御装置モジュールは記憶モジュールに入出力(IO)命令を送信して記憶モジュール
から複合スカラ命令を読み取り、且つローカル命令キューを記憶させる。制御装置モジュ
ールはローカル命令キューから複合スカラ命令を読み取りながら制御信号で解読する。
S3103:制御信号に基づいて操作データを読み取り、且つ読み取る操作データのア
ドレスにしたがって操作データの類型を判断し、操作データに対する演算を行う。
演算装置モジュールは制御装置モジュールから来る制御信号を受信した後、オペランド
のアドレスフィールドを読み取り、読み取ったのが浮動小数点類型のデータか固定小数点
累計のデータ化を判断する。もし、オペランドが即値であればデータ類型標識ビットによ
ってオペランド類型を判断して計算する。もし、オペランドがRAMあるいはレジスタか
らきたとすればRAMアドレスあるいはレジスタ番号によってオペランド類型を判断し、
記憶モジュールからオペランドを読み取り、且つ対応する演算を行う。
S3104:演算結果を対応する類型のアドレスに記憶させる。
制御装置モジュールが演算装置モジュールにIO命令を送信し、演算装置モジュールは
演算結果を記憶モジュールあるいは入出力モジュールに伝送する。
以上の実施例から分かるように、本発明で提供する複合スカラ命令の実行方法によれば
、複合スカラ命令を正確で高い効率で実行できる。ここで、提供する複合スカラ命令を支
援する装置は複合スカラ命令に高い効率の実行環境を提供する。提供する複合スカラ命令
の実行方法は複合スカラ命令を正確で高い効率で実行できる。
また、本発明では技術命令を支援する技術装置と計数方法を提供する。入力データ(計
数予定データ)の中で与えられた条件を満たす元素の個数を統計するアルゴリズムを命令
に作成する形式を通じて計算効率を高めることができる。以下、具体的な実施例とあわせ
て詳細に説明する。
この実例的な実施例で計数命令を支援する計数装置を提示する。図32は本実施例にあ
る計数装置のフレームワーク構造原理図である。図32に示したように本発明で提供する
計数命令を支援する計数装置は、記憶部、計数部、レジスタ部などを含む。記憶部は計数
部と連結されて計数予定入力データを記憶させることに利用され、統計する入力データの
中で与えられた条件を満たす元素の個数を記憶させることに用いられる。この記憶部はメ
インメモリでもいいし、一時記憶型メモリでもいい、更には、スクラッチパッドメモリで
あってもいい。統計しようとする入力データを一時的にスクラッチパッドメモリに記憶さ
せ、計数命令をすばやく効果的に幅の違うデータを支援するようにして実行性能を高めら
れるようにする。
ある実現例において、この記憶部はスクラッチパッドメモリであり、ビット幅の違う入
力データ及び/又は大きさが違うメモリスペースを占める入力データを支援し、計数予定
入力データをスクラッチパッドメモリに一時的に記憶させ、計数過程が幅の違うデータを
すばやく効果的に支援できるようにする。計数部はレジスタ部と接続されており、計数部
は計数命令を得て計数命令に基づいてレジスタ部にある入力データのアドレスを読み取っ
て後、入力データのアドレスにしたがって記憶部の中で計数予定当該の入力データを取得
しながら入力データの中で与えられた条件を満たす元素個数を統計計数して最終計数結果
を得ながらこの計数結果を記憶部に記憶させる。レジスタ部は記憶部に記憶された統計し
ようとする入力データのアドレスを記憶させることに用いられる。ある実現例において、
レジスタ部に記憶されたアドレスはスクラッチパッドメモリにある統計しようとする入力
データのアドレスである。
ある実施例において、統計しようとする入力データのデータ類型は0/1ベクトルでも
いいし、数値型のベクトル又はマトリックスでもいい。入力データの中で与えられた条件
を満たす元素個数を統計するとき、統計する元素が満たすべき条件は一つの与えられた元
素と同様であることもある。例えばベクトルAの中にある元素xの個数を統計するとき、
xは数字n,n=0,1,2...であってもいいし、xはベクトルmであってもいい、
例えば、m=00,01,11...である。統計する元素が満たすべき条件として、与
えられた表現式を満たすこともありうる、例えば、ベクトルBの中で数値yより大きい元
素個数を計数する場合、ここで、yは正の整数n, n=0,1,2..であってもいい
し、浮動小数点数f,f=0.5,0.6...であってもいい。例えば、ベクトルCの
中でzを完除する元素個数を統計する場合、zは整数nで,n=0,1,2...であり
うる。
図33は本実施例に示した計数装置の中にある計数部の構造原理図である。図33に示
したように計数部には入出力モジュール、演算モジュール、アキュムレータモジュールが
ある。
入出力モジュールは演算モジュールと接続されている。記憶部の中にある計数予定入力
データの場合、毎回ここで、長さ(この長さは実際的な要求に基づいて配置できる)が設
定された一つの区間のデータを読み取り、演算モジュールに入力させて演算を行い、演算
モジュールが演算を終えた後、入出力モジュールは長さが固定された次の区間のデータを
続けて読み取り、これは計数予定入力データのすべての元素を読み取るまで行う。入出力
モジュールはアキュムレータモジュールが計算して得た計数結果を記憶部に出力する。
演算モジュールはアキュムレータモジュールと接続され、長さが固定されたデータを入
力し、演算モジュールの加法器を利用して与えられた条件を満たす入力データの各元素の
個数を加算し、取得した結果をアキュムレータモジュールに出力する。演算モジュールは
判断サブモジュールを更に含み、これは入力データが与えられた条件(与えられた条件は
与えられた元素と同様でもいいし、数値が設定された区間の間にあるものでもいい)を満
たすかそうでないかを判断するのに用いられる。もし満たしたら1を出力し、満たさない
と0を出力した後、加法器に伝送して累積する。
アキュムレータモジュールは、また入出力モジュールと連結されており、演算モジュー
ルで出力する結果をアキュムレータを利用して新しい入力がなくなるまで累積する。
計数部は多重パイプラインステージ構造であり、ここで、入出力モジュールでベクトル
をとる操作は第1パイプランステージであり、演算モジュールは第2パイプランステージ
、アキュムレータモジュールは第3パイプランステージである。これらの部品は相異なる
パイプラインステージであり、計数命令が求める操作をより効果的に実現できる。
図35は本実施例に示した計数装置の中にある計数命令の命令セット様式原理図である
。図35に示したように計数命令には操作コードと一つあるいは複数の操作ドメインがあ
る。ここで、操作コードはこの命令が計数命令であることを指示することに利用され、計
数部はこの操作コードの識別を通じて計数演算を行える。操作ドメインは、この計数命令
の中にある計数予定入力データを指示することに利用するアドレス情報と判断条件を含め
るアドレス情報を含む。例えば一つのベクトルを取得しなければならないときにはレジス
タ番号に基づいて相応のレジスタの中でベクトルの初期アドレスとベクトルの長さを取得
して再びベクトルの初期アドレスとベクトルの長さに基づいて記憶部で相応のアドレスに
記憶されているベクトルを取得することができる。本実施例で利用した命令は簡素化され
た様式を持つから命令セットを使用しやすく、支援するデータの長さを敏活にすることが
できる。
図36は本実施例に示した計数装置の中にある計数部の実行過程に関するフローチャー
トである。図26に示したように、動作するとき、計数部は計数命令の操作ドメインにあ
るアドレス情報に基づいてレジスタ部で計数予定入力データのアドレスを読み取った後、
このアドレスに基づいて記憶部で計数予定入力データを読み取る。計数予定入力データは
スクラッチパッドメモリに記憶され、毎回計数部はスクラッチパッドメモリから長さが固
定されたある区間の入力データを得て、判断サブモジュール、元素が与えられた条件を満
たすかどうかを判断した後で加法器を利用してこの部分の入力データの中で与えられた条
件を満たせる元素の個数を統計し、各区間で与えられた条件を満たす元素の個数をアキュ
ムレータモジュールを利用して累積し、最終計数結果を得ながら計数結果を記憶部に記憶
される。
図37は本実施例に示した計数装置の細かい構造原理図である。図37に示したように
、本発明に示した計数命令を支援する装置は、命令メモリ、命令処理ユニット、命令キャ
ッシュ記憶ユニット、従属関係処理ユニットを含む。
命令処理ユニットの場合、これは命令メモリから計数命令を取得しながら計数命令を処
理した後、記述した命令キャッシュ記憶ユニットと従属関係処理ユニットへの提供に用い
られる。ここで、命令処理ユニットは、命令フェッチモジュールと解読モジュールを含む
。命令フェッチモジュールは命令メモリと連結され、命令メモリから計数命令の受信に用
いられる。解読モジュールは命令フェッチモジュールと連結されており、取得した計数命
令の解読に用いられる。このほかに、命令処理ユニットは命令キューメモリも含む。命令
キューメモリは解読モジュールと接続されており、解読した計数命令を順序に記憶しなが
ら順序に命令を命令キャッシュ記憶ユニットと従属関係処理ユニットに送信することに用
いられる。命令キャッシュ記憶ユニットと従属関係処理ユニットが受けられる命令の数量
が限界されていることを考慮して、命令キューメモリの中にある命令は命令キャッシュ記
憶ユニットと従属関係処理ユニットにスペースがあることを待って続いて順番に送信でき
る。
命令キャッシュ記憶ユニットは命令処理ユニットと連結でき、実行しようとする計数命
令を順番に記憶させることに用いられる。計数命令が実行される過程で同時に命令キャッ
シュ記憶ユニットにもキャッシュ記憶される。一つの命令が完全に実行された後、命令実
行結果(計数結果)を命令キャッシュ記憶ユニットに伝送する。もし、この命令が同時に
命令キャッシュ記憶ユニットにありながらまだマッピングされなかった命令の中で最初の
命令であればこの命令がマッピングされると同時に命令実行結果(計数結果)をスクラッ
チパッドメモリに記録する。一つの実現方式で命令キャッシュ記憶ユニットは再び順番を
配列してキャッシュ記憶できる。
従属関係処理ユニットは命令キューメモリ及び計数部と連結され、計数部が計数命令を
得る前にこの計数命令が求めるベクトル(つまり計数されるべきベクトル)が最新のもの
かそうでないかを判断することに用いられる。もし、最新のものであれば直接計数命令を
記述した計数部に提供し、そうでなければこの計数命令を従属関係より部品の一つの記憶
キューに記憶させ、求めるベクトルが最新のものになった後、記憶キューにあるこの計数
命令を記述した計数部に提供する。具体的には、計数命令がスクラッチパッドメモリを呼
び出すときメモリスペースは前の命令に従う結果が入力されるのを待つ。命令が実行した
結果の正確性を保証するため、もし、現在の命令を待つ命令のデータと従属関係にあると
いうことが検査されれば、この命令は記憶キューで従属関係が解除されるまで待たなけれ
ばならない。従属関係処理ユニットは命令が乱雑に実行され、順番にマッピングされるよ
うにしてパイプラインの障害を効果的に減らし、正確な例外を実現できるようにする。
命令フェッチモジュールは命令メモリから次に実行すべき命令を読み取りながらこの命
令を解読モジュールに伝送することを担う。解読モジュールは命令を解読しながら解読さ
れた命令を命令キューメモリに送ることを担う。命令キューメモリは可読された命令をキ
ャッシュ記憶させることに用いられる。命令キャッシュ記憶ユニットと従属関係処理ユニ
ットにスペースが生じた後、命令を命令キャッシュ記憶ユニットと従属関係処理ユニット
へ伝送する。計数命令が命令キューメモリから従属関係処理ユニットに送信される過程で
計数命令はレジスタ部から記憶部にある入力データのアドレスを読み取る。従属関係処理
ユニットは現在の命令と前の命令の間に存在できるデータ従属関係を処理することに用い
られる。 計数命令は記憶部を呼び出すことができ、前に実行されたほかの命令は同一の
記憶スペースを呼び出せる。命令実行結果の正確性を保証するため現在の命令がもし前の
命令データと従属関係があるということが検査されればこの命令は従属関係処理ユニット
の記憶キューの中で従属関係がキャンセルできるまで待たなければならない。計数部は従
属関係処理ユニットから計数命令を得て、計数命令がレジスタ部に読み取った入力データ
のアドレスに基づいて記憶部で当該の計数予定入力データを読み取りながら入力データの
中で与えられた条件を満たす元素の個数を統計計数し、計数結果を命令キャッシュ記憶ユ
ニットに送り、最後の計数結果とこの計数命令は記憶部に記録される。
図38は本実施例に示した計数装置の実行過程に関するフローチャートである。図38
に示したように、計数命令を実行する過程には次のようなものが含まれる。
S3801、命令フェッチモジュールは命令メモリから計数命令を読み取り、且つ、こ
の計数命令を解読モジュールに伝送する。
S3802、解読モジュールは計数命令を解読し、且つ、計数命令を命令キューメモリ
に伝送する。
S3803、計数命令は命令キューメモリで待っていて命令キャッシュ記憶ユニットと
従属関係処理ユニットにスペースがあれば、命令キャッシュ記憶ユニットと従属関係処理
ユニットに送信される。
S3804、計数命令が計数キューメモリから従属関係処理ユニットに伝送される過程
で、計数命令はレジスタ部から記憶部にある入力データの記憶アドレスを読み取り、従属
関係処理ユニットはこの命令とまだ実行が終わってない前の命令とデータ上従属関係にあ
るかどうかを分析する。この計数命令は従属関係処理ユニットの記憶キューでそれとまだ
実行が終わってない前の命令とデータ上従属関係がないときまで待たなければならない。
S3805、従属関係がないと、この計数命令は計数部に伝送される。計数部は記憶ア
ドレスに基づいて記憶部から入力データを読み取り、入力データの中で与えられた条件を
満たす元素の個数を統計する。
S3806、計数が終わった後、計数結果は命令キャッシュ記憶ユニットを通じて記憶
部に記入され、命令キャッシュ記憶ユニットはこの計数命令を記憶部にマッピングする。
以上、図面とともに本実施例を詳しく説明した。以上の記述に基づいて当業者は本実施
例に示した計数命令を支援する計数装置及びその計数方法を明確に認識する。
ある実施例では、チップを開示し、それは前述のニューラルネットワークプロセッサ、
処理装置、計数装置又は演算装置を含む。
ある実施例では、チップパッケージ構造を開示し、それは前述のチップを含む。
ある実施例では、ボードカードを開示し、それは前述のチップパッケージ構造を含む。
ある実施例では、電子デバイスを開示し、それは前述のボードカードを含む。
電子デバイスは、ロボット、コンピュータ、プリンター、スキャナー、タブレットPC
、スマートターミナル、スマートフォーン、タコグラフ、ナビゲーター、センサ、撮影ヘ
ッド、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、時計、ヘッドセット、
モバイル記憶、ウェアラブル端末、交通手段、家庭用電子機器あるいは医療機器に制限な
く含まれる。
前記の交通手段は、飛行機と汽船、あるいは車両を含み、前記の家庭用電子機器は、テ
レビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、ランプ、ガスストーブ
、フードを含む。前記の医療機器は核磁気共鳴器、超音波機器、心電図を含む。
本発明で提供する実施例に示した当該の装置と方法は異なる方式で実現できるというこ
とを知るべきである。例えば前述の装置の実施例はただ原理的なものに過ぎない。例えば
関連の部分あるいはモジュールの区分はただ論理的機能に従う区分であるから実際に実現
するとき、ほかの区分方式があってもよい。例えば複数の部分あるいはモジュールを一つ
のシステムに組み合わせることができ、一連の特徴を無視するか、実行しなくてもいい。
本発明に出る用語「及び/又は」は一方または他方あるいは両方を意味する(例えば、
A及び/又はBというのは、AあるいはBあるいはAとBの両方を意味する)。
以上の説明では、説明の目的から出発して多くの具体的な細部を記述して公開された各
実施例を全面的に理解できるようにした。しかし、当業者である場合、明確にこんな具体
的な細部の中でいくつかがなくても一つあるいは複数のほかの実施例を実現できる。記述
した具体的な実施例はこの発明の制限のためのものではなく説明するためのものである。
本発明の範囲は、前の具体的な実例から確定するのではなく、特許請求の範囲から確定さ
れる。異なる状況では、記述に対する理解があいまいにならないようブロック図の形式で
もって既に知っている回路、構造、設備と操作を詳しく示してない。違う方式で指定した
り、明確なもの意外には複数の図面の中で適切だと見られる場所に図面標識あるいは図面
標識の端の部分が繰り返されるようにして選択的に似た特性あるいは同様の特徴を持った
対応したり、似た要素を示している。
各種操作と方法を既に記述している。フローチャート方式、相対的に基礎的な方式で一
連の方法を記述した。しかし、このような操作は選択的にこのような方法に加わったりあ
るいはこのような方法から提起する。そのほかに、例えフローチャートは実例に示した各
実施例に従う操作の特定なステップを示そうともこの特定なステップが実例的であるとい
うことが理解できる。実施例を変えてほかの方式でこんな操作を選択的に実行し、ある操
作を組み合わせ、ある操作を変えられる。ここで記述した設備の組み立て品と特徴、特定
で選択可能な細部は前記した方法において任意に選択して応用できる。各実施例でこんな
方法はこんな設備で実行でき、あるいはこのような設備の中で実行できる。
本発明にある各機能部分/ユニット/サブユニット/モジュール/サブモジュール/部
品はすべてハードウェアでありうる。例えば、このハードウェアはデジタル回路、アナロ
グ回路などを含めた回路でありうる。ハードウェア構造の物理的実現は物理要素に限られ
ず、物理要素はトランジスタ、レジスタンスは度に限られていない。前記計算装置の中に
ある計算モジュールは適当な任意のハードウェアプロセッサでありうる。例えばCPUと
GPU、FPGA、DSPおよびASICなどがあげられる。前記記憶部は適当な任意の
磁気記憶媒体や光磁気記録媒体でありうる。例えばRRAM(登録商標)、DRAM、S
RAM、EDRAM、HBM、HMCなどがあげられる。
記述を便利かつ簡潔にするため、ただ前述の各機能モジュールに分割し、実例をあげて
説明したということを当業者は明確にわかる。実際応用では需要に応じて前述の機能分配
を相異なる機能モジュールで行える。つまり、装置の内部構造を相異なる機能モジュール
に分割して前述のすべてあるいは部分的な機能をする。
前述の具体的な実施例に示した本発明の目的や技術的解決策、利益効果性をもっと詳し
く説明した。理解すべきは、前述したのはただ本発明の具体的な実施例に過ぎず、本発明
を局限させることに利用せず、一般的に本発明の精神と原則内で行った任意の改造、同等
なものに対する交替、改善などはすべて本発明の保護範囲内に含まれなければならないと
いうことである。

Claims (17)

  1. ニューラルネットワークの演算予定データの記憶に用いられるメモリ部と、
    ニューラルネットワークの演算予定データに対する演算に利用され、加法器と複数種類の乗法器を利用して計算ビット幅が異なるニューラルネットワークの演算予定データを高速計算するのを含む演算部と、
    メモリ部と演算部の制御に用いられ、演算予定データに基づいて演算部の乗法器と加法器の種類を確定し、加速演算を進行する制御部と、を含む、
    ことを特徴とする処理装置。
  2. 前記メモリ部は、
    ニューラルネットワークの演算予定データを記憶するのに用いられる入力記憶モジュールと、
    演算結果を記憶するのに用いられる出力記憶モジュールと、
    ニューロンのパラメータを記憶するのに用いられるニューロン記憶モジュールと、
    シナプスのパラメータを記憶するのに用いられるシナプス記憶モジュールと、を含み、
    前記メモリ部は、バッファされたデータを記憶するのに用いられるバッファモジュールを更に含み、
    前記出力記憶モジュールは、
    中間演算結果を記憶するのに用いられる中間計算結果記憶用サブモジュールと、
    最終的な演算結果を記憶するのに用いられる最終演算結果記憶用サブモジュールと、を更に含む、
    ことを特徴とする請求項1に記載の装置。
  3. 前記シナプス記憶モジュールは、複数のシナプスパラメータを記憶するのに用いられる複数のシナプス記憶モジュールである、
    ことを特徴とする請求項2に記載の装置。
  4. 前記演算部は、それぞれ一つあるいは複数のシナプス記憶モジュールに対応する複数の演算ユニットを含み、演算する際、入力記憶モジュールはすべての演算ユニットに入力データを送信し、シナプス記憶モジュールは対応する演算ユニットにシナプスデータを送信し、演算ユニットは演算後の結果を出力記憶モジュールに書き込む、
    ことを特徴とする請求項1乃至請求項3のいずれか1項に記載の装置。
  5. 前記演算部は、ビット幅が異なる加速演算を行うのに用いられる第1演算モジュールを含む、
    ことを特徴とする請求項1乃至請求項4のいずれか1項に記載の装置。
  6. 前記第1演算モジュールは、ニューラルネットワークで行うビット幅が異なる複数のデータに対する演算を加速化するための加法器、ベース乗法器、スパース乗法器及び/又は融合ベクトル乗法器を含み、
    前記ベース乗法器は、乗数をビット幅が低いレベルの多くのデータに分け、それぞれ被乗数と乗算した後順序に加算して累積するのに用いられ、
    前記スパース乗法器は、乗数あるいは被乗数の2進数の中の1が疎な状態で乗算を行うのに用いられ、
    前記融合ベクトル乗法器は、ベクトル間の乗法演算を行うのに用いられる、
    ことを特徴とする請求項5に記載の装置。
  7. 前記計算ビット幅が異なるデータの演算は、ドット積、マトリックス乗算、加算、乗算と加算の混合;マトリックスとベクトルの乗算、加算、乗算と加算の混合;マトリックスとリテラルの乗算、加算、乗算と加算の混合;ベクトル間の乗算、加算、乗算と加算の混合;ベクトルとリテラルの乗算、加算、乗算と加算の混合;リテラルとリテラルの乗算、加算、乗算と加算の混合;最大値/最小値の比較選択及び乗算、加算、乗算と加算の混合への分割、を含む、
    ことを特徴とする請求項1乃至請求項6のいずれか1項に記載の装置。
  8. 前記演算部は、非線形演算、除法演算、個別の加法演算あるいは個別の乗法演算を行うのに用いられる第2演算モジュールを含み、
    前記第1演算モジュールは、乗法器サブモジュールと加法ツリーサブモジュールを含み、
    前記第2演算モジュール、乗法器サブモジュール及び加法ツリーサブモジュールはパイプライン方式で並行に実行される、
    ことを特徴とする請求項5乃至請求項7のいずれか1項に記載の装置。
  9. 請求項1乃至請求項8のいずれか1項に記載の装置が含まれている、
    ことを特徴とするチップ。
  10. 請求項9記載のチップが含まれている、
    ことを特徴とする電子装置。
  11. 制御部は制御命令を発生させ、メモリ部と演算部に送り、
    メモリ部は受信した制御命令に基づいて演算部にニューラルネットワークの演算予定データをインプットし、
    演算部は受信した制御命令に基づいて第1演算モジュールの中にある対応する類型の乗法器と加法器を選び、
    演算部は入力された演算予定データとニューラルネットワークのパラメータ及び制御命令に基づいて、計算ビット幅が異なるニューラルネットワークの演算予定データに対する演算を行う、
    ことを特徴とする処理器を使用する方法。
  12. 演算部は、入力された演算予定データとニューラルネットワークのパラメータ、制御命令に基づいてニューラルネットワークへ入力予定データに対して演算し、加法器、ベース乗法器、スパース乗法器及び/又は混合ベクトル乗法器を利用してニューラルネットワークへの入力予定データに対して演算を行い、
    演算部は、非線形演算、除算、個別の加算あるいは個別の乗算を含み、
    前記ベース乗法器を利用した演算は、乗数をビット幅が低い複数のデータにわけ、それぞれ被乗数と乗算し、順序に加算して累積する演算を行い、
    前記スパース乗法器を利用した演算は、乗数あるいは被乗数の2進数の中にある1が疎な状態で乗算を行い、
    前記融合ベクトル乗法器を利用した演算は、ベクトル間の乗算を行う、
    ことを特徴とする請求項11に記載の方法。
  13. 前記メモリ部は、ニューラルネットワークのパラメータの中でシナプスパラメータを記憶するシナプス記憶モジュールを含む、
    ことを特徴とする請求項11に記載の方法。
  14. 前記シナプスモジュールは、複数のシナプスパラメータを記憶する複数のシナプスモジュールであり、前記演算部は複数の演算ユニットを含み、これらはそれぞれ一つあるいは複数のシナプスモジュールと対応し、演算の際、インプット記憶モジュールはすべての演算ユニットにインプットデータを送信し、シナプス記憶モジュールは対応する演算ユニットにシナプスデータを転送し、演算ユニットは演算した後に結果をアウトプット記憶モジュールに書き込む、
    ことを特徴とする請求項13に記載の方法。
  15. 前記ニューラルネットワークの演算予定データは第2演算を更に行い、前記第2演算は非線形演算、除算、個別の加算あるいは個別の乗算を含み、
    前記第1演算モジュールは乗法器演算と加法ツリー演算を更に行い、
    前記第2演算、乗法器演算及び加法ツリー演算はパイプライン方式で平行に実行される、
    ことを特徴とする請求項11に記載の方法。
  16. 計算ビット幅が異なるニューラルネットワークの演算予定データに対する演算は、ドット積、マトリックス間の乗算、加算、乗算と加算の混合;マトリックスとベクトル間の乗算、加算、乗算と加算の混合;マトリックスとリテラル間の乗算、加算、乗算と加算の混合;ベクトル間の乗算、加算、乗算と加算の混合;ベクトルとリテラル間の乗算、加算、乗算と加算の混合;リテラルとリテラル間の乗算、加算、乗算と加算の混合;最大値/最小値を比較選択し、乗算、加算あるいは乗算と加算の混合に分ける演算を含む、
    ことを特徴とする請求項11乃至請求項15のいずれか1項に記載の方法。
  17. 前記ニューラルネットワークの演算予定データは、加速巻積層演算、分類層の巻積演算あるいは池化層の平均値又は最大値を求める演算を行う、
    ことを特徴とする請求項11乃至請求項15のいずれか1項に記載の方法。
JP2019228383A 2017-04-19 2019-12-18 処理装置と処理方法 Active JP6821002B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
CN201710256445.X 2017-04-19
CN201710256445.XA CN108733412B (zh) 2017-04-19 2017-04-19 一种运算装置和方法
CN201710264686.9A CN108733408A (zh) 2017-04-21 2017-04-21 计数装置及计数方法
CN201710269106.5 2017-04-21
CN201710269049.0 2017-04-21
CN201710269049.0A CN108734288B (zh) 2017-04-21 2017-04-21 一种运算方法及装置
CN201710269106.5A CN108734281A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201710264686.9 2017-04-21

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019549467A Division JP6865847B2 (ja) 2017-04-19 2018-04-17 処理装置、チップ、電子設備及び方法

Publications (2)

Publication Number Publication Date
JP2020074099A true JP2020074099A (ja) 2020-05-14
JP6821002B2 JP6821002B2 (ja) 2021-01-27

Family

ID=63856461

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019549467A Active JP6865847B2 (ja) 2017-04-19 2018-04-17 処理装置、チップ、電子設備及び方法
JP2019228383A Active JP6821002B2 (ja) 2017-04-19 2019-12-18 処理装置と処理方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019549467A Active JP6865847B2 (ja) 2017-04-19 2018-04-17 処理装置、チップ、電子設備及び方法

Country Status (6)

Country Link
US (5) US11531540B2 (ja)
EP (3) EP3654172A1 (ja)
JP (2) JP6865847B2 (ja)
KR (2) KR102258414B1 (ja)
CN (1) CN109121435A (ja)
WO (1) WO2018192500A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10554382B2 (en) * 2017-06-27 2020-02-04 Amazon Technologies, Inc. Secure models for IoT devices
US11350360B2 (en) 2017-06-27 2022-05-31 Amazon Technologies, Inc. Generating adaptive models for IoT networks
CN109284822B (zh) * 2017-07-20 2021-09-21 上海寒武纪信息科技有限公司 一种神经网络运算装置及方法
CN108228696B (zh) * 2017-08-31 2021-03-23 深圳市商汤科技有限公司 人脸图像检索方法和系统、拍摄装置、计算机存储介质
US11275713B2 (en) * 2018-06-09 2022-03-15 International Business Machines Corporation Bit-serial linear algebra processor
CN109492241B (zh) * 2018-08-10 2020-03-10 中科寒武纪科技股份有限公司 转换方法、装置、计算机设备和存储介质
US11537853B1 (en) 2018-11-28 2022-12-27 Amazon Technologies, Inc. Decompression and compression of neural network data using different compression schemes
KR102562320B1 (ko) * 2018-12-24 2023-08-01 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
CN112085181B (zh) * 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 神经网络量化方法及装置以及相关产品
CN112085176B (zh) * 2019-06-12 2024-04-12 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110766155A (zh) * 2019-09-27 2020-02-07 东南大学 一种基于混合精度存储的深度神经网络加速器
CN110750232B (zh) * 2019-10-17 2023-06-20 电子科技大学 一种基于sram的并行乘加装置
CN110909869B (zh) * 2019-11-21 2022-08-23 浙江大学 一种基于脉冲神经网络的类脑计算芯片
CN110991633B (zh) * 2019-12-04 2022-11-08 电子科技大学 一种基于忆阻网络的残差神经网络模型及其应用方法
CN111105581B (zh) * 2019-12-20 2022-03-15 上海寒武纪信息科技有限公司 智能预警方法及相关产品
CN111047037B (zh) * 2019-12-27 2024-05-24 北京市商汤科技开发有限公司 数据处理方法、装置、设备及存储介质
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US20210241080A1 (en) * 2020-02-05 2021-08-05 Macronix International Co., Ltd. Artificial intelligence accelerator and operation thereof
US11593628B2 (en) * 2020-03-05 2023-02-28 Apple Inc. Dynamic variable bit width neural processor
KR102414582B1 (ko) * 2020-04-29 2022-06-28 한국항공대학교산학협력단 신경망 모델의 추론 속도 향상 장치 및 방법
KR20230010669A (ko) * 2020-05-14 2023-01-19 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 심층 학습 네트워크를 위한 메모리 압축 시스템 및 방법
US11783163B2 (en) * 2020-06-15 2023-10-10 Arm Limited Hardware accelerator for IM2COL operation
CN111930671B (zh) * 2020-08-10 2024-05-14 中国科学院计算技术研究所 异构智能处理器、处理方法及电子设备
US11427290B2 (en) 2020-08-31 2022-08-30 Mike Scheck Anchor rescue system
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
CN112099898B (zh) * 2020-11-06 2021-02-09 广州市玄武无线科技股份有限公司 一种基于Web前端的表格处理系统及方法
CN112765936B (zh) * 2020-12-31 2024-02-23 出门问问(武汉)信息科技有限公司 一种基于语言模型进行运算的训练方法及装置
CN113434113B (zh) * 2021-06-24 2022-03-11 上海安路信息科技股份有限公司 基于静态配置数字电路的浮点数乘累加控制方法及系统
CN113642724B (zh) * 2021-08-11 2023-08-01 西安微电子技术研究所 一种高带宽存储的cnn加速器
KR102395744B1 (ko) * 2021-09-16 2022-05-09 오픈엣지테크놀로지 주식회사 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
KR102442577B1 (ko) * 2022-03-08 2022-09-13 주식회사 마키나락스 개발환경을 제공하는 방법
KR20230132343A (ko) * 2022-03-08 2023-09-15 주식회사 마키나락스 개발환경을 제공하는 방법
US20240080423A1 (en) * 2022-09-02 2024-03-07 Samsung Electronics Co., Ltd. Fusion techniques for combining most significant bits and least significant bits of image data in image processing or other applications

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02287862A (ja) * 1989-04-28 1990-11-27 Toshiba Corp ニューラルネットワーク演算装置
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH06139217A (ja) * 1992-10-29 1994-05-20 Hitachi Ltd 高精度演算処理装置および方法
JPH0973440A (ja) * 1995-09-06 1997-03-18 Fujitsu Ltd コラム構造の再帰型ニューラルネットワークによる時系列トレンド推定システムおよび方法
JP2001117900A (ja) * 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20140298129A1 (en) * 2013-03-26 2014-10-02 Lsi Corporation Generating Partially Sparse Generator Matrix for a Quasi-Cyclic Low-Density Parity-Check Encoder
US20170103301A1 (en) * 2015-10-08 2017-04-13 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2639461A1 (fr) * 1988-11-18 1990-05-25 Labo Electronique Physique Arrangement bidimensionnel de points memoire et structure de reseaux de neurones utilisant un tel arrangement
DE69031842T2 (de) * 1989-02-20 1998-04-16 Fujitsu Ltd Lernsystem und Lernverfahren für eine Datenverarbeitungsvorrichtung
US5086479A (en) * 1989-06-30 1992-02-04 Hitachi, Ltd. Information processing system using neural network learning function
DE69032391T2 (de) 1989-11-13 1998-10-29 Harris Corp Mehrere Bit umkodierender Multiplizierer
JPH0820942B2 (ja) * 1991-09-26 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 高速乗算器
US6601051B1 (en) * 1993-08-09 2003-07-29 Maryland Technology Corporation Neural systems with range reducers and/or extenders
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
US6049793A (en) * 1996-11-15 2000-04-11 Tomita; Kenichi System for building an artificial neural network
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
KR20030009682A (ko) * 2001-07-23 2003-02-05 엘지전자 주식회사 가산기 기반 분산 연산의 가산 공유 정보 추출을 위한신경망 알고리즘 구현 방법
WO2005050396A2 (en) * 2003-11-18 2005-06-02 Citigroup Global Markets, Inc. Method and system for artificial neural networks to predict price movements in the financial markets
US20050257026A1 (en) 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
BRPI0518434A2 (pt) * 2004-11-16 2008-11-18 Samsung Electronics Co Ltd aparelho e mÉtodo para processar sinal digital em um sistema de comunicaÇço sem fio ofdma
US7428521B2 (en) * 2005-06-29 2008-09-23 Microsoft Corporation Precomputation of context-sensitive policies for automated inquiry and action under uncertainty
US7881889B2 (en) * 2005-12-21 2011-02-01 Barclay Kenneth B Method and apparatus for determining energy savings by using a baseline energy use model that incorporates an artificial intelligence algorithm
US8543343B2 (en) * 2005-12-21 2013-09-24 Sterling Planet, Inc. Method and apparatus for determining energy savings by using a baseline energy use model that incorporates an artificial intelligence algorithm
US7451122B2 (en) * 2006-03-29 2008-11-11 Honeywell International Inc. Empirical design of experiments using neural network models
GB2447428A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt Processor having a trivial operand register
CN100492415C (zh) 2007-04-20 2009-05-27 哈尔滨工程大学 柴油机运行数据记录方法
US8055886B2 (en) * 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
CN101359453A (zh) * 2007-07-31 2009-02-04 奇美电子股份有限公司 数据处理装置与其数据处理方法
US7694112B2 (en) * 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
CN101527010B (zh) 2008-03-06 2011-12-07 上海理工大学 人工神经网络算法的硬件实现方法及其系统
US8521801B2 (en) * 2008-04-28 2013-08-27 Altera Corporation Configurable hybrid adder circuitry
CN101309430A (zh) * 2008-06-26 2008-11-19 天津市亚安科技电子有限公司 基于fpga的视频图像预处理器
CN101685388B (zh) 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
CN101599828A (zh) * 2009-06-17 2009-12-09 刘霁中 一种高效的rsa加解密方法及其协处理器
US8468191B2 (en) * 2009-09-02 2013-06-18 Advanced Micro Devices, Inc. Method and system for multi-precision computation
US8712940B2 (en) * 2011-05-31 2014-04-29 International Business Machines Corporation Structural plasticity in spiking neural networks with symmetric dual of an electronic neuron
KR101303591B1 (ko) * 2011-10-07 2013-09-11 전자부품연구원 통합형 서포트 벡터 머신 회로 장치
WO2013095592A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for vector compute and accumulate
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
CN103699360B (zh) 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
US9563401B2 (en) * 2012-12-07 2017-02-07 Wave Computing, Inc. Extensible iterative multiplier
US9110657B2 (en) 2013-01-21 2015-08-18 Tom Yap Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9558743B2 (en) * 2013-03-15 2017-01-31 Google Inc. Integration of semantic context information
CN203299808U (zh) * 2013-04-16 2013-11-20 西华大学 位串行加法器
JP6042274B2 (ja) * 2013-06-28 2016-12-14 株式会社デンソーアイティーラボラトリ ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置及びプログラム
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
US9513907B2 (en) 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US10068170B2 (en) * 2013-09-23 2018-09-04 Oracle International Corporation Minimizing global error in an artificial neural network
US10373047B2 (en) * 2014-02-28 2019-08-06 Educational Testing Service Deep convolutional neural networks for automated scoring of constructed responses
CN105207794B (zh) 2014-06-05 2019-11-05 南京中兴软件有限责任公司 统计计数设备及其实现方法、具有统计计数设备的系统
CN104699458A (zh) 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法
US10262259B2 (en) * 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
CN105005911B (zh) 2015-06-26 2017-09-19 深圳市腾讯计算机系统有限公司 深度神经网络的运算系统及运算方法
KR101778679B1 (ko) * 2015-10-02 2017-09-14 네이버 주식회사 딥러닝을 이용하여 텍스트 단어 및 기호 시퀀스를 값으로 하는 복수 개의 인자들로 표현된 데이터를 자동으로 분류하는 방법 및 시스템
CN106447036B (zh) 2015-10-08 2019-03-15 上海兆芯集成电路有限公司 执行随机舍入的神经网络单元
CN105426160B (zh) 2015-11-10 2018-02-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN105913118B (zh) * 2015-12-09 2019-06-04 上海大学 一种基于概率计算的人工神经网络硬件实现装置
CN108476164B (zh) * 2015-12-21 2021-10-08 谷歌有限责任公司 在消息传送应用中自动地提供机器人服务的方法
CN107609642B (zh) 2016-01-20 2021-08-31 中科寒武纪科技股份有限公司 计算装置和方法
CA2990709C (en) * 2016-05-26 2018-09-04 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
CN106066783A (zh) 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
US11295203B2 (en) * 2016-07-27 2022-04-05 International Business Machines Corporation Optimizing neuron placement in a neuromorphic system
CN106484366B (zh) * 2016-10-17 2018-12-14 东南大学 一种二元域位宽可变模乘运算器
CN106447034B (zh) 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10083162B2 (en) * 2016-11-28 2018-09-25 Microsoft Technology Licensing, Llc Constructing a narrative based on a collection of images
US10546575B2 (en) * 2016-12-14 2020-01-28 International Business Machines Corporation Using recurrent neural network for partitioning of audio data into segments that each correspond to a speech feature cluster identifier
US10249292B2 (en) * 2016-12-14 2019-04-02 International Business Machines Corporation Using long short-term memory recurrent neural network for speaker diarization segmentation
US10691996B2 (en) * 2016-12-15 2020-06-23 Beijing Deephi Intelligent Technology Co., Ltd. Hardware accelerator for compressed LSTM
US11354565B2 (en) * 2017-03-15 2022-06-07 Salesforce.Com, Inc. Probability-based guider
US20180314963A1 (en) * 2017-04-19 2018-11-01 AIBrain Corporation Domain-independent and scalable automated planning system using deep neural networks
US20180314942A1 (en) * 2017-04-19 2018-11-01 AIBrain Corporation Scalable framework for autonomous artificial intelligence characters
JP6780029B2 (ja) * 2017-04-27 2020-11-04 ベイジン ディディ インフィニティ テクノロジー アンド ディベロップメント カンパニー リミティッド 経路計画のためのシステム及び方法
US11170287B2 (en) * 2017-10-27 2021-11-09 Salesforce.Com, Inc. Generating dual sequence inferences using a neural network model
CN107895191B (zh) * 2017-10-30 2022-02-22 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US10599391B2 (en) * 2017-11-06 2020-03-24 Google Llc Parsing electronic conversations for presentation in an alternative interface
US10365340B1 (en) * 2018-03-01 2019-07-30 Siemens Medical Solutions Usa, Inc. Monitoring dynamics of patient brain state during neurosurgical procedures
US10713441B2 (en) * 2018-03-23 2020-07-14 Servicenow, Inc. Hybrid learning system for natural language intent extraction from a dialog utterance
US11526728B2 (en) * 2018-04-09 2022-12-13 Microsoft Technology Licensing, Llc Deep learning model scheduling
CN109829451B (zh) * 2019-03-22 2021-08-24 京东方科技集团股份有限公司 生物体动作识别方法、装置、服务器及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02287862A (ja) * 1989-04-28 1990-11-27 Toshiba Corp ニューラルネットワーク演算装置
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH06139217A (ja) * 1992-10-29 1994-05-20 Hitachi Ltd 高精度演算処理装置および方法
JPH0973440A (ja) * 1995-09-06 1997-03-18 Fujitsu Ltd コラム構造の再帰型ニューラルネットワークによる時系列トレンド推定システムおよび方法
JP2001117900A (ja) * 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20140298129A1 (en) * 2013-03-26 2014-10-02 Lsi Corporation Generating Partially Sparse Generator Matrix for a Quasi-Cyclic Low-Density Parity-Check Encoder
US20170103301A1 (en) * 2015-10-08 2017-04-13 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit

Also Published As

Publication number Publication date
EP3786786A1 (en) 2021-03-03
US11531540B2 (en) 2022-12-20
EP3786786C0 (en) 2023-06-07
EP3786786B1 (en) 2023-06-07
KR102292349B1 (ko) 2021-08-20
EP3614259A4 (en) 2021-02-24
US20200050918A1 (en) 2020-02-13
US20200097795A1 (en) 2020-03-26
US20200117976A1 (en) 2020-04-16
CN109121435A (zh) 2019-01-01
KR20200000480A (ko) 2020-01-02
EP3614259A1 (en) 2020-02-26
KR20190139837A (ko) 2019-12-18
JP6821002B2 (ja) 2021-01-27
US11720353B2 (en) 2023-08-08
US11698786B2 (en) 2023-07-11
US20200097794A1 (en) 2020-03-26
US11531541B2 (en) 2022-12-20
JP6865847B2 (ja) 2021-04-28
JP2020518042A (ja) 2020-06-18
US20200097792A1 (en) 2020-03-26
KR102258414B1 (ko) 2021-05-28
US11734002B2 (en) 2023-08-22
EP3654172A1 (en) 2020-05-20
WO2018192500A1 (zh) 2018-10-25

Similar Documents

Publication Publication Date Title
JP6821002B2 (ja) 処理装置と処理方法
CN109117948B (zh) 画风转换方法及相关产品
CN108874744A (zh) 矩阵乘积累加运算的广义加速
US20200089535A1 (en) Data sharing system and data sharing method therefor
KR20200143685A (ko) 연산을 가속하기 위한 방법 및 가속기 장치
KR20200143686A (ko) 연산을 가속하기 위한 가속기 및 시스템
CN108733348B (zh) 融合向量乘法器和使用其进行运算的方法
CN114118354A (zh) 高效的softmax计算
CN110073329A (zh) 访存设备、计算设备和应用于卷积神经网络运算的设备
US11880426B2 (en) Integer matrix multiplication engine using pipelining
US20190130268A1 (en) Tensor radix point calculation in a neural network
US11934308B2 (en) Processor cluster address generation
CN111445003A (zh) 神经网络生成器
US10997102B2 (en) Multidimensional address generation for direct memory access
CN103870335A (zh) 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法
CN114970803A (zh) 对数系统中的机器学习训练
CN112051981B (zh) 一种数据流水线计算路径结构及单线程数据流水线系统
US20190130276A1 (en) Tensor manipulation within a neural network
CN111831582A (zh) 用于智能处理器的内存管理装置、方法及电子设备
CN111831333A (zh) 用于智能处理器的指令分解方法、装置及电子设备
CN112766475A (zh) 处理部件及人工智能处理器
US20230376447A1 (en) Parallel processing architecture with dual load buffers
KR20240063137A (ko) 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델
CN113867686A (zh) 运算方法、装置及相关产品
WO2024030351A1 (en) Parallel processing architecture with dual load buffers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191218

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191218

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210105

R150 Certificate of patent or registration of utility model

Ref document number: 6821002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250