JP6864224B2 - プロセッサ、情報処理装置及びプロセッサの動作方法 - Google Patents

プロセッサ、情報処理装置及びプロセッサの動作方法 Download PDF

Info

Publication number
JP6864224B2
JP6864224B2 JP2017013396A JP2017013396A JP6864224B2 JP 6864224 B2 JP6864224 B2 JP 6864224B2 JP 2017013396 A JP2017013396 A JP 2017013396A JP 2017013396 A JP2017013396 A JP 2017013396A JP 6864224 B2 JP6864224 B2 JP 6864224B2
Authority
JP
Japan
Prior art keywords
adder
input
data
registers
circuit
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.)
Active
Application number
JP2017013396A
Other languages
English (en)
Other versions
JP2018120547A (ja
Inventor
勝洋 依田
勝洋 依田
充 伴野
充 伴野
隆弘 野津
隆弘 野津
真紀子 伊藤
真紀子 伊藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017013396A priority Critical patent/JP6864224B2/ja
Priority to PCT/JP2018/000279 priority patent/WO2018139196A1/ja
Publication of JP2018120547A publication Critical patent/JP2018120547A/ja
Priority to US16/352,919 priority patent/US10768894B2/en
Application granted granted Critical
Publication of JP6864224B2 publication Critical patent/JP6864224B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

本発明は,プロセッサ、情報処理装置及びプロセッサの動作方法に関する。
ディープラーニング(以下DL1:Deep Learning)は、情報処理装置内のプロセッサの演算処理により実行される。DLは、階層の深いニューラルネットワーク(以下DNN:Deep Neural Network)を利用したアルゴリズムの総称である。そして、DNNの中でも良く利用されるのが、コンボリュージョン・ニューラルネットワーク(CNN:Convolution Neural Network)である。CNNは、例えば画像データの特徴を判定するDNNとして広く利用される。
画像データの特徴を判定するCNNは、画像データを入力しフィルタを利用した畳込み演算を行い画像データの特徴(例えばエッジの特徴など)を検出する。そして、CNNの畳込み演算は、例えばプロセッサにより演算される。以下の特許文献1にはメモリのデータフォーマットと演算器の実行性能について開示がある。
特開2014−38624号公報
上記の畳込み演算は、係数フィルタの画像データでの位置を画像データのラスタスキャン方向に移動しながら、画像データの注目画素を中心とする近傍マトリクスの画素データと係数フィルタの係数(重み)との積和演算を繰り返す。係数フィルタのサイズは、一般に、奇数の二乗(8の倍数に1加算した値)である。例えば、3×3、5×5、7×7、9×9、11×11などである。
一方、畳込み演算は、積和演算の繰り返しであり、複数の積和演算器で並列処理することが望ましい。また、DNNでは複数チャネルの画像データ(複数プレーンの画素データ)に対して畳込み演算を行う場合があり、その場合も複数の積和演算器で並列処理することが望ましい。
ところが、プロセッサは一般に2のべき乗個の演算器を有する。そのため、例えば16個の演算器に、3×3の係数フィルタの場合の9個の係数や画素データを入力すると、一部の演算器が積和演算を処理できない場合があり、その結果、16個の演算器を効率的に動作させることができない。
そのため、画像データを転置して、複数組の画素データとその係数を並列に16個の演算器に入力することが行われる。しかし、その場合は、画像データを転置する処理が必要になり、転置処理の間演算器が動作を停止する必要があるので、やはり16個の演算器を効率的に動作させることができない。
そこで、一つの実施の形態の目的は,効率的に演算を行うプロセッサ、情報処理装置及びプロセッサの動作方法を提供することにある。
一つの実施の形態は,
複数のプロセッサコアと、
前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
前記複数のプロセッサコアのいずれかが有する演算器は、
第1ステージに設けられた複数の第1のレジスタと、
前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第2の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有し、
前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、前記第1、第2、第3のレジスタはクロックに同期して入力をラッチする、加算回路を有する、プロセッサである。
第1の側面によれば,効率的に演算を行うことができる。
本実施の形態におけるディープラーニングを実行する情報処理装置(ディープラーニングサーバ)の構成を示す図である。 ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。 グラフィックプロセッサ(GPU)11の構成とGPU内のコアCOREの構成とを示す図である。 DNNの一例を示す図である。 畳込み演算を説明する図である。 メモリに記憶されるデータ構造の配列(AOS:Array Of Structure)を16個の演算器に入力する例を示す図である。 メモリに記憶されるデータ構造の配列であるAOSを転置したストラクチャオブアレイ(SOA:Structure Of Array)のデータを4個の演算器に入力する例を示す図である。 本実施の形態における演算器の入力データの構成を図6,図7の例と対比して示す図である。 本実施の形態におけるグラフィックプロセッサGPU(DL装置)の構成を示す図である。 フォーマット変換器FMT_Cの構成を示す図である。 積和演算器に入力する入力用の近傍マトリクスの画像データの生成手順の第1例を示す図である。 積和演算器に入力する入力用の近傍マトリクスの画像データの生成手順の第1例を示す図である。 本実施の形態の追越しルート付積和演算器の構成を示す図である。 3×3フィルタの場合の図13の積和演算器の動作を示すシーケンス図である。 3×3フィルタの場合のマスクMb0-7とMc0-7の選択、非選択状態を示すシーケンス図である。 5×5フィルタの場合の図13の積和演算器の動作を示すシーケンス図である。 1組の入力画素データが11画素の場合の積和演算器の動作を示すシーケンス図である。 32画素データまで入力可能な積和演算器の構成を示す図である。 図18の加算器ADDERの構成例を示す図である。 第2の実施の形態における追越しルート付積和演算器の構成を示す図である。 第2の演算の場合の図20の積和演算器を示す図である。 AOSの画素データを生成するフォーマット変換を示す図である。
図1は、本実施の形態におけるディープラーニングを実行する情報処理装置(ディープラーニングサーバ)の構成を示す図である。サーバ1は、ネットワークを介してセンシング装置群30及び端末装置32と通信可能である。センシング装置群30は、例えば撮像素子により画像を撮像して画像データを生成し、画像データをサーバ1に送信する。端末装置32は、画像データの特徴の判定結果をサーバ1から受信して出力する。
サーバ1は、汎用プロセッサであるCPU(Central processing Unit)10と、グラフィックプロセッサであるGPU(Graphic Processing Unit)11とを有する。サーバ1は、さらに、DRAMなどのメインメモリ12と、NIC(Network Interface Card)などのネットワークインターフェース14と、ハードディスクやSSD(Solid Storage Device)などの大容量の補助メモリ20と、それらを接続するバスBUSとを有する。
補助メモリ20は、ディープラーニング演算プログラム22と、ディープラーニングパラメータ24などを記憶する。補助メモリ20は、上記プログラムやパラメータに加えて、図示しないオペレーティングシステム(OS)や、各種ミドルウエアプログラムなども記憶する。プロセッサ10及びグラフィックプロセッサ11は、上記のプログラムやパラメータをメインメモリ12に展開し、パラメータに基づいてプログラムを実行する。
図2は、ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。DL演算プログラムは、例えばDNNの演算を実行するプログラムである。プロセッサ10,11は、DL演算プログラムを実行して、学習モードと判定モードの処理を実行する。DLとして、画像データの特徴を判定するDNNを例にして説明する。
学習モードでは、プロセッサ10、11は、演算パラメータ(フィルタの係数(重み)等)の初期値をメインメモリ12から読み出し、プロセッサ11内の高速メモリSRAMに書込む(S10)。さらに、プロセッサは、センシング装置群30から送信された画像データをメインメモリ12から読み出し高速メモリSRAMに書込む(S11)。そして、プロセッサは、画像データをフォーマット変換して演算器入力用の近傍マトリクス画像データ(演算処理データ)を生成し(S12)、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層(出力層)の演算処理を行う(S13)。この演算は、所定数の画像データについてそれぞれ行われる。演算結果は例えば画像データが数字0〜1のうちいずれかなどである。
更に、プロセッサ10、11は、演算結果と画像データの正解データである教師データとの差分が閾値以下か否か判定し(S14)、差分が閾値以下でない場合(S14のNO)、演算パラメータを差分に基づいてDNNのバックワード演算を実行し演算パラメータを更新する(S15)。そして、更新された演算パラメータで、上記の工程S11-S13を繰り返す。ここで演算結果と教師データとの差分は、例えば1000枚の画像データについて演算した1000個の演算結果と、1000個の教師データそれぞれの差分の合計値などである。
上記の差分が閾値以下になったとき(S14のYES)、演算パラメータが最適値に設定されたと判断して、学習モードを終了する。そして、演算パラメータの最適値によって、その後の判定モードでの演算処理が行われる。
判定モードでは、プロセッサ10、11は、判定対象の画像データをメインメモリから読み出し(S16)、画像データをフォーマット変換して演算器入力用の近傍マトリクス画像データを生成し(S17)、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層の演算処理を行う(S18)。プロセッサ10,11は、上記の判定処理を、判定対象の画像データが終了するまで繰り返す(S19)。判定結果は、端末装置32に送信され出力される。
図3は、グラフィックプロセッサ(GPU)11の構成とGPU内のコアCOREの構成とを示す図である。GPU11は、メインメモリM_MEMにアクセス可能である。GPUは、例えば8個のプロセッサコアCOREと、それぞれのプロセッサコアCOREに対応して配置された複数の高速メモリSRAMと、内部バスI_BUSと、メインメモリM_MEMとのアクセス制御を行うメモリコントローラMCとを有する。GPUは、図3に示されていない、各コアCORE内のL1キャッシュメモリと、8つのコアCOREで共用されるL2キャッシュメモリと、種々の周辺リソース回路を有する。さらに、GPUは、内部の高速メモリSRAM間のデータ転送、メインメモリM_MEMと高速メモリSRAM間のデータ転送などを制御するダイレクトメモリアクセス制御回路DMAを有する。
一方、各プロセッサコアCOREは、通常のプロセッサコアと同様に、命令をメモリから取得する命令フェッチ回路FETCHと、取得した命令をデコードするデコーダDECと、デコード結果に基づいて命令を演算する複数の演算器ALU及びそのレジスタ群REGと、高速メモリSRAMにアクセスするメモリアクセス制御回路MACとを有する。
GPUは、例えば半導体チップで実現され、本実施の形態のDL装置である。GPUは、前述のセンシング装置群から送信された画像データを記憶するメインメモリM_MEMから画像データを読み出して、内部の高速メモリSRAMに書込む。そして、各コアCORE内の演算器ALUは、SRAMに書き込まれた画像データを入力し、DNNの各層の演算処理を実行し、DNNの出力を生成する。
図4は、CNNの一例を示す図である。画像データの判定処理を行うCNNは、入力データである画像データIM_Dが入力される入力層INPUT_Lと、複数組のコンボリュージョン層CNV_L及びプーリング層PL_Lと、全結合層C_Lと、ソフトマックス層(出力層)OUT_Lとを有する。
コンボリュージョン層CNV_Lは、画像データIM_Dを係数フィルタFLTでフィルタリングしてある特徴量を有する画像データF_IM_Dを生成する。複数の係数フィルタFLT_0-3でフィルタリングすると、それぞれの特徴量の画像データF_IM_Dが生成される。プーリング層PL_Lは、例えばコンボリュージョン層のノードの値の代表値(例えば最大値)を選択する。そして、出力層OUT_Lには、前述したように、例えば画像データ内の数字の判定結果(0〜9のいずれか)が出力される。
コンボリュージョン層CNV_Lは、M×Nの二次元画素マトリクスの画素データを有する画像データIM_Dの例えば3×3の近傍マトリクスの画素データと、近傍マトリクスと同じ3×3の係数フィルタFLTの係数データとをそれぞれ乗算し乗算結果を加算する積和演算を行い、近傍マトリクスの中央の注目画素の画素データF_IM_Dを生成する。このフィルタリング処理を、係数フィルタを画像データIM_Dのラスタスキャン方向にずらしながら画像データIM_Dの全ての画素に対して演算を行う。これが畳込み演算である。
図5は、畳込み演算を説明する図である。図5には、例えば5行5列の画像データの周囲にパディングPを追加した入力画像データIN_DATAと、3行3列の重みW0-W8を有する係数フィルタFLT0と、畳込み演算された出力画像データOUT_DATAとが示される。畳込み演算は、注目画素を中心とする近傍マトリクスの複数の画素データと係数フィルタFLT0の複数の係数(重み)W0-W8とをそれぞれ乗算し加算する積和演算を、係数フィルタFLT0を画像データのラスタスキャン方向にずらしながら繰り返す演算である。
近傍マトリクスの画素データがXi(但しi=0-8)、係数フィルタの係数データがWi(但しi=0-8)の場合、積和演算式は次のとおりである。
Xi = Σ(Xi * Wi) (1)
但し、右辺のXiは入力画像IN_DATAの画素データ、Wiは係数であり、Σはi = 0-8 だけ加算することを示し、左辺のXiは積和演算値であり出力画像OUT_DATAの画素データである。
即ち、画像データの注目画素がX6の場合は、式(1)により積和演算SoPされた画素データX6は、次のとおりである。
X6 = X0*W0 + X1*W1 + X2*W2 + X5*W3 + X6*W4 + X7*W5 + X10*W6 + X11*W7 + X12*W8
図6は、メモリに記憶されるデータ構造の配列(AOS:Array Of Structure)を16個の演算器に入力する例を示す図である。図6では、入力データIN_DATAは、アレイオブストラクチャ(AOS)形式である各行16ワードの入力画像データIN_DATAと、16ワードの係数FLT(W0-W8)を、行の順に16個の演算器ALUに入力する例である。
入力画像データIN_DATAは、各行、最初の9ワードに画素データa0-a8、b0-b8、c0-c8、d0-d8を、残りの7ワードに値「0」の画素データをパッキングされている。また、係数フィルタFLTも、1行に、最初の9ワードに係数データW0-W8を、残りの7ワードに値「0」をパッキングされている。そして、それぞれ対応する列の画素データと係数データの対が、演算器ALUの16個の入力に入力される。
この場合、演算器のうち9個の入力の演算器は有効な入力データについて演算を行うが、残りの7個の入力の演算器は無効な入力データであるので有効な演算を行っていない。
図7は、メモリに記憶されるデータ構造の配列であるAOSを転置したストラクチャオブアレイ(SOA:Structure Of Array)のデータを4個の演算器に入力する例を示す図である。入力データIN_DATAと係数フィルタFLTの係数データW0-W8は、図6と同じである。この入力データIN_DATAの列方向と行方向を転置処理により逆にした転置後データTRSP_DATAが、係数データと対で、4個の演算器ALUに入力される。
この場合、4個の演算器は全て有効な入力データを入力して演算を行う。したがって、無効な演算を行う演算器をなくすことができ、演算効率を高めることができる。しかしながら、4この演算器は、入力データの転置処理が完了するまで、演算処理を開始することができず、演算効率の低下を招く。
[第1の実施の形態]
図8は、本実施の形態における演算器の入力データの構成を図6,図7の例と対比して示す図である。図6、図7に示した入力データの構成AOS, SOAは、図8の(B)(C)に示される。図8には、演算器のへ入力されるデータは、簡単のために入力データIN_DATAだけを示し、フィルタの係数は省略している。
図8(B)は、図6と異なり演算器ALUの16の入力が右側に縦方向に並べて示され、図8(C)は、図7と異なり16個の演算器ALUが右側に縦方向に並べて示される。(B)の場合、入力データのフォーマットはAOSであるため、16個の入力のうち7つの入力の演算器ALUが稼働していない。一方、(C)の場合、入力データのフォーマットはSOAであるため、16個の演算器ALUはフル稼働するが、SOAへのフォーマット化のために転置処理が必要になり、演算開始まで処理のサイクル演算器の動作が停止する。
それに対して、図8(A)は、本実施の形態の入力データの構成と4個の演算器が示される。この場合、演算器ALUの8個の入力には9個の画素データa0-a8が8ワード幅で入力される。そのため、最初の8ワード入力には8個の画素データa0-a7が含まれ、次の8ワード入力には残りの画素データa8が、次の9個の画素データの一部b0-b6と共に含まれる。
そこで、本実施の形態における演算器ALUは、入力数を超える個数の入力データを複数のサイクルで入力し、最初のサイクルで入力したデータの演算サイクル数後に全入力データの演算結果を出力する。例えば、演算器は、複数のステージでパイプライン処理して演算結果を出力する。本実施の形態における演算器は、通常のパイプライン処理ルートに加えて、通常よりもステージ数が少ない追越し処理ルートを有する。そして、最初の8ワード入力に収まらなかった入力データの演算を追越し処理ルートで実行し、最初のサイクルで入力したデータの演算サイクル数後に、全入力データの演算結果を出力する。
[GPUの構成]
図9は、本実施の形態におけるグラフィックプロセッサGPU(DL装置)の構成を示す図である。図9のGPUは、図3の構成を簡略化した構成を示している。GPUはDL演算を行うDLチップ(DL装置)である。
GPUは、プロセッサコアCOREと、内部の高速メモリSRAM_0, SRAM_1と、内部バスI_BUSと、メモリコントローラMCと、更に、画像データのフォーマット変換器FMT_Cと、制御バスC_BUSとを有する。フォーマット変換器FMT_Cは、メインメモリM_MEMから入力した画像データを、コアCORE内の演算器に入力するための入力用の近傍マトリクス画像データに、フォーマット変換する。本実施の形態では、フォーマット変換器FMT_Cは、高速メモリSRAM_0, SRAM_1間のデータ転送を実行するDMAである。つまり、DMAは、本来のデータ転送回路に加えて、フォーマット変換器を有する。但し、フォーマット変換器は、DMAとは別に単独で構成してもよい。そして、DMAは、高速メモリSRAM_0の画像データを入力し、フォーマット変換して生成した近傍マトリクス画像データを別の高速メモリSRAM_1に書込む。
プロセッサコアCOREは、積和演算器を内蔵する。積和演算器は、フォーマット変換器が生成した近傍マトリクス画像データと、係数フィルタの係数データとを乗算しそれぞれ加算する。
[入力データのフォーマット変換例]
図10は、フォーマット変換器FMT_Cの構成を示す図である。フォーマット変換器FMT_Cは、制御バスC_BUSの制御バスインターフェースC_BUS_IFと、制御データを格納する制御データレジスタCNT_REGと、ステートマシンのような制御回路CNTとを有する。制御バスC_BUSには図示しないコアから制御データが転送され、制御レジスタに制御データが格納される。
制御回路CNTは、第1の高速メモリSRAM_0から第2の高速メモリSRAM_1への画像データの転送の制御を行う。また、制御回路CNTは、画像データのフォーマット変換の場合、前記画像データの転送制御に加えて、パラメータレジスタ42へのパラメータ値の設定と、フォーマット変換の開始と終了の制御を行う。つまり、制御回路CNTは、第1の高速メモリSRAM_0から画像データを読み出し、フォーマット変換し、第2の高速メモリSRAM_1へ書き込む。このように、制御回路CNTは、画像データのデータ転送中にフォーマット変換を行う。制御回路は、データ転送を行うとき、画像データのアドレスを指定して高速メモリSRAMへのアクセスを行う。そして、制御回路は、画像データのアドレスに対応して、フォーマット変換に必要なレジスタのパラメータ値を設定する。
フォーマット変換器FMT_Cは、更に、第1のDMAメモリDMA_M0と、第2のDMAメモリDMA_M1と、それらメモリの間にフォーマット変換回路40と、コンカテネーション(結合回路)44を有する。これらのフォーマット変換回路40及び結合回路44は、複数組設けられ、複数組の近傍マトリクス画像データのフォーマット変換を並列に行う。また、結合回路のパラメータを設定する結合回路パラメータレジスタ42を有する。そして、画像データの転置を行う転置回路TRSPと、内部バスI_BUSのデータバスD_BUSと接続されるデータバスインターフェースD_BUS_IFとを有する。
そして、演算器ALUを内蔵するコアCOREは、第2の高速メモリSRAM_1に保存されているフォーマット変換後の近傍マトリクス画像データを読み出し、内蔵する積和演算器が畳込み演算を実行し、演算後の特徴量データを、再び高速メモリに書込む。
図11、図12は、積和演算器に入力する入力用の近傍マトリクスの画像データの生成手順の第1例を示す図である。メインメモリM_MEMは1行32ワード幅で13行13列の画像データIM_DATAを記憶する。画像データIM_DATAには32列のコラムアドレスCADD(=0-31)が示される。一方、13行13列の画像データIM_DATAは、169ワードの画素データX0-X168を有する。
まず、GPU内のメモリコントローラMCが、メインメモリM_MEM内の画像データIM_DATAを32ワード幅の外部バスを介して読み出し、32ワード幅を16ワード幅に変換し、16ワード幅の内部バスI_BUSを介して第1の高速メモリSRAM_0に書き込む。このデータ転送は、例えばDMAの標準のデータ転送機能により行われる。
次に、フォーマット変換器であるDMAが、第1の高速メモリSRAM_0内の画像データを内部バスI_BUSを介して読み出し、第1のDMAメモリDMA_M0に書き込む。そして、データフォーマット変換回路40が、第1のDMAメモリ内の画像データdata0から近傍マトリクスの9画素データを抽出し、16ワードのデータdata1を生成する。
次に、図12に示すとおり、結合回路CONCが、8組の近傍マトリクス画像データdata2それぞれの1組9ワードの画素データを、1行16ワードの第2のDMAメモリDMA_M1にラスタスキャン方向に詰めてパッキングする。その結果、1組目の近傍マトリクス画像データa0-a8は、第2のDMAメモリの1行目と2行目にまたがって格納され、2組目の近傍マトリクス画像データb0-b8は2行目と3行目にまたがって格納され、3組目以降のそれぞれ9ワードの近傍マトリクス画像データが2行にまたがって格納される。
そして、制御回路CNTは、第2のDMAメモリDMA_M1内の近傍マトリクス画像データをパッキングした画像データdata2を、転置処理せずに、内部バスを介して第2の高速メモリSRAM_1に転送する。
次に、GPU内のコアCOREが、第2の高速メモリSRAM_1内の近傍マトリクス画像データdata3を16ワードずつ読み出し、16ワードを8ワードずつに変換し、データdata3を生成する。そして、コアCORE内に設けられた単一の積和演算器SoPの第1ステージの8個の乗算器MLTPに、近傍マトリクス画像データを8ワードずつ、係数(W0-W8)と共に入力する。その結果、積和演算器SoPは、9ワードの近傍マトリクスの画素データのうち8ワードずつ係数と乗算し、乗算結果を加算して積和演算結果を出力する。なお、積和演算器SoPは、2行目の残りの画素データ(図中例えばa8)については、係数との乗算値を図示しない追い越し回路により1行目の8ワードの積和値に加算する。
コアCORE内の積和演算器SoPは、フォーマット変換された第2のDMAメモリDMA_M1内の近傍マトリクス画像データを、転置処理せずに、そのまま入力するので、演算開始までに待機するサイクルがなく、演算器の稼働率を高くすることができる。
[追越しルート付積和演算器]
図13は、本実施の形態の追越しルート付積和演算器の構成を示す図である。図13の積和演算器は、パイプラインステージST0-ST5を有し、各パイプラインステージに複数または単数のレジスタRGを有し、各ステージのレジスタRGには図示しないクロックが供給され、クロック入力に応答して入力データをラッチする。
まず、正規ルートによる積和演算器の構成を説明し、その後、追越しルートの積和演算器の構成を説明する。
入力ステージST0には、画素データX0-X7と係数W0-W7をそれぞれラッチする8対のレジスタRG00-03,RG04-07を有する。ステージST1内の8個の乗算器MP0-3,MP4-7は、入力ステージの8対のレジスタにラッチされた画素データX0-X7と係数W0-W7それぞれを乗算する。そして、ステージST1の8個のレジスタRG10-13、RG14-17は、8個の乗算器の乗算値をそれぞれラッチする。
次に、ステージST2は、乗算値X0*W0とX1*W1を加算する加算器AD20、乗算値X2*W2,X3*W3を加算する加算器AD21と、乗算値X4*W4とX5*W5を加算する加算器AD22、乗算値X6*W6,X7*W7を加算する加算器AD23を有する。さらに、ステージST2の4つのレジスタRG20-RG23は、それらの加算値をそれぞれラッチする。
ここで、4個の加算器AD20-23それぞれは、1対の入力端子に、制御信号CNTにより入力信号を通過または非通過(非マスクまたはマスク)するマスクMb0-3,Mb4-7を有する。つまり、マスクMb0-7は、レジスタRG10-17のそれぞれの出力と制御信号CNTとを入力するANDゲートである。これらのマスクMb0-3,Mb4-7の制御信号CNTを全て「1」(通過)にすることで、通常ルートの加算器AD20-23の入力が有効化される。マスクMb0-3,Mb4-7の制御信号を「0」(非通過)にすると、通常ルートの加算器AD20-23の入力が無効化され、入力値「0」が入力される。
積和演算器には、図示しない制御用コアからパラメータを設定される設定レジスタ50と、設定されたパラメータに基づいて上記の制御信号CNTを出力する制御ステートマシン52とを有する。制御ステートマシン52が、上記のマスクMb0-3,Mb4-7の制御信号CNTを全て「1」(通過)にすると、通常ルートの加算器AD20-23の入力が有効化され、通常ルートのクロックサイクルで、ステージST2の4個のレジスタRG20-RG23が4個の加算器AD20-23それぞれの加算値をラッチする。
ステージST3は、加算器AD30,AD31とAD32,AD33と、加算器AD31とAD33の出力をそれぞれラッチする2個のレジスタRG30,RG31を有する。ステージST4は、加算器AD40とレジスタRG40とを有する。
ステージST5は、レジスタRG40がラッチする8組の画像データX0-X7と係数W0-W7それぞれの積和加算値を、クロックに同期して累積するアキュムレータACMLを構成する。アキュムレータの初期値IVは「0」であり、加算器AD50は、セレクタSa0により選択された入力値に、レジスタRG40の積和値を加算し、レジスタRG50がその加算値をラッチする。つまり、アキュムレータACMLは、レジスタRG40の積和値を累積加算する。レジスタRG50の出力が積和加算器の結果RESULTである。
上記の加算器AD20,AD21、レジスタRG20,RG21、加算器AD30は、正規ルートの第1の通常加算回路RGL_0を構成する。また、加算器AD22,AD23、レジスタRG22,RG23、加算器AD32は、正規ルートの第2の通常加算回路RGL_1を構成する。ステージST1のレジスタRG10-13,RG14-17それぞれから、加算器AD30、AD32それぞれまでの構成が通常加算回路RGL_0,RGL_1それぞれを構成する。
制御ステートマシン52は、通常ルート回路のマスクMb0-3,Mb4-7の制御信号CNTを「1」に設定し、5クロックサイクルで、入力された8組の画像データX0-X7と係数W0-W7それぞれの積和値をレジスタRG40から出力する。そして、制御ステートマシン52は、セレクタSa0を初期値IV側の選択にしてアキュムレータACML内のレジスタRGをリセットし、セレクタSa0をレジスタRG50側の選択に設定して、レジスタRG40の出力である積和値を累積加算する。
次に、追越しルート回路の構成を説明する。第1の追い越し回路OVTK_0が、ステージST1の4個のレジスタRG10-13がラッチする4組の乗算値X0*W0,X1*W1,X2*W2,X3*W3を加算する加算器O_AD20,21、O_AD30を有する。同様に、第2の追い越し回路OVTK_1が、ステージST1の4個のレジスタRG14-17がラッチする4組の乗算値X4*W4,X5*W5,X6*W6,X7*W7を加算する加算器O_AD22,23、O_AD31を有する。
そして、加算器O_AD20,21,22,23は、それぞれの1対の入力端子に前述したマスクMc0-3,Mc4-7を有し、制御ステートマシン52からの制御信号CNTの「1」「0」に基づき、それぞれのマスクMc0-3,Mc4-7の入力が選択(通過)、非選択(非通過)にそれぞれ制御される。非選択の場合入力値は「0」である。
第1の追い越し回路内の加算器O_AD20,21と加算器O_AD30の間には、ステージST2,ST3を区分するレジスタRGがない。同様に、第2の追い越し回路内の加算器O_AD22,23と加算器O_AD31の間にも、ステージST2,ST3を区分するレジスタRGがない。したがって、これら加算器O_AD20,21と加算器O_AD30、及び、加算器O_AD22,23と加算器O_AD31は、1クロックで加算結果を出力する。この構成により、追い越し回路は、ステージST1で1サイクル遅れていた乗算値(RG10-13,RG14-17の値)が、ステージST3で1サイクル前の加算値(AD30,AD32)に追いつき、加算器AD31,AD33で1サイクル前の加算値に加算される。
図13における追越し回路OVTK_0を有するレジスタRG10-13からレジスタRG30までの加算回路が、追越し回路付加算回路の最小単位である。この最小単位の加算回路では、加算器AD31が、レジスタRG10-13に入力した画素データと係数データの乗算値に、1サイクル遅れてレジスタRG10-13に入力した画素データと係数の乗算値を加算し、レジスタRG30がその加算値をラッチする。
上記の最小単位の追越し回路付加算回路のレジスタRG10-13の入力側に、4個の乗算器MPと4対の入力レジスタRG00-03を追加することで、最小単位の追越し回路付積和回路が構成される。
[3×3フィルタの動作]
図14は、3×3フィルタの場合の図13の積和演算器の動作を示すシーケンス図である。また、図15は、同様にマスクMb0-7とMc0-7の選択、非選択状態を示すシーケンス図である。図14,15を参照して、図13の積和演算器の動作を説明する。
3×3フィルタの場合、近傍マトリクスの画素数は9個である。一方、図13の積和演算器の入力数は8である。したがって、9個の画素データと係数データを1サイクルで入力することはできず、2サイクルで入力する。その結果、1個の画素データと係数データが1サイクル遅れで入力される。以下に説明するとおり、積和演算器は追越しルートの加算回路を有し、1サイクル遅れで入力された1個の画素データと係数データの乗算値を8個の画素データと係数データの乗算値に同じステージで加算することができる。また、先のサイクルで入力される任意の数の画素データと係数データの乗算値に、次のサイクルで入力される残りの数の画像データと係数データの乗算値を加算することができる。
[サイクル1]
ステージST0のレジスタRG00-07は、最初の組の9画素データa0-a8のうち8画素データa0-a8と8個の係数w0-w7(図示せず)をラッチする。
[サイクル2]
ステージST1のレジスタRG10-17は、8個の乗算器MP0-7の乗算値(a0-a7の乗算値)をラッチする。図中には紙面の関係からa0*w0-a7*w7を簡易的にa0-a7で示している。同時に、ステージST0のレジスタRG00-07は、9個目の画素データa8と係数w8と、2番目の組の7画素データb0-b6と7個の係数w0-w6をラッチする。後述するとおり、この9個目の画素データa8と係数w8の乗算値が追越しルートで1番目の8画素データa0-a7と係数w0-w7の乗算値に追いつく。図14中に、追いつきルートで追いつき処理される画素データに下線、a8、を付す。
[サイクル3]
ステージST2の通常ルートのレジスタRG20-23それぞれは、1番目の組の8画素データa0-a7の乗算値の4組の加算値a0,1、a2,3、a4,5、a6,7をそれぞれラッチする。また、ステージST1のレジスタRG10-17それぞれは、1番目の組の1画素データa8と2番目の組の7画素データb0-b6の乗算値をラッチする。同時に、ステージST0のレジスタRG00-07は、2番目の組の8、9個目の画素データb7,8と係数w7,8と、3番目の組の6画素データc0-b5と6個の係数w0-w5をラッチする。
[サイクル4]
ステージST3のレジスタRG30は、通常ルートの加算値a0-3と追越しルートの値a8との加算値をラッチし、レジスタRG31は、通常ルートの加算値a4-7の加算値をラッチする。これで、1サイクル遅れていた加算値a8が通常ルートの加算値に追いついて、加算される。
ステージST2の通常ルートのレジスタRG20-23それぞれは、2番目の組の7画素データb0-b6の乗算値の4組の加算値b0、b1,2、b3,4、b5,6をそれぞれラッチする。また、ステージST1のレジスタRG10-17それぞれは、2番目の組の2画素データb7,8と3番目の組の6画素データc0-c5の乗算値をラッチする。同時に、ステージST0のレジスタRG00-07は、3番目の組の7−9個目の画素データc6-8と係数w6-8と、4番目の組の5画素データd0-d4と5個の係数w0-w4をラッチする。
[サイクル5]
ステージST4のレジスタRG40は、1番目の組の9画素データa0-a8の乗算値の加算値a0-8をラッチする。この結果、演算器は、サイクル1,2で分割して入力された9画素データa0-a8の加算値が、一回のサイクルで入力される8個の画素データの加算値を出力するために必要な5サイクルで、9個の画素データの加算値を出力することができる。言い換えれば、サイクル2で入力した画素データa8を加えた加算値をサイクル6まで遅らせることなく、サイクル5で生成することができる。つまり、サイクル6で8画素データa0-7の加算値と1画素データa8の値とをアキュムレータACMLにより累積加算する必要がない。
ステージST3のレジスタRG30は、通常ルートの加算値b0-2と追越しルートの値b7,8との加算値をラッチし、レジスタRG31は、通常ルートの加算値b3-6の加算値をラッチする。これで、1サイクル遅れていた加算値b7,8が通常ルートの加算値に追いついて、加算される。
ステージST2の通常ルートのレジスタRG20-23それぞれは、3番目の組の6画素データc0-5の乗算値の3組の加算値c0,1、c2,3、c4,5をそれぞれラッチする。一方、追越しルートの加算器O_AD20は、画素データb7,8の乗算値を加算する。また、ステージST1のレジスタRG10-17それぞれは、3番目の組の3画素データc6-8と4番目の組の5画素データd0-d4の乗算値をラッチする。同時に、ステージST0のレジスタRG00-07は、4番目の組の6−9個目の画素データd5-8と係数w5-8と、5番目の組の4画素データe0-e3と4個の係数w0-w3をラッチする。
[サイクル6以降]
以上、同様にして、サイクル6では、ステージST5のレジスタRG50が1番目の組の9画素データa0-a8の乗算値の加算値a0-8をラッチする。この加算値a0-8は、積和演算器の結果RESULTになる。サイクル7では、レジスタRG50が2番目の組の9画素データb0-b8の乗算値の加算値b0-8をラッチする。この加算値b0-8は、積和演算器の結果RESULTになる。以下同様である。
図15に示すように、通常ルートのマスクMb0-7と、追越しルートのマスクMc0-7は次のように制御される。サイクル1−3では、全ての通常ルートのマスクMb0-7が「1」選択に、全ての追越しルートのマスクMc0-7が「0」非選択に制御される。これにより、ステージST2での追越しルートの加算器は実質的な加算値を出力せず、加算値は「0」になる。
そして、サイクル4で、通常ルートのマスクMb0が「0」非選択になり、追越しルートのマスクMc0が「1」選択になる。そして、サイクル4以降のサイクル5〜11では、通常ルートのマスクMbの「0」が1つずつ増加し、それに合わせて追越しルートのマスクMcの「1」が1つずつ増加する。そして、サイクル12ですべてリセットされ、サイクル1と同じ設定値に戻る。つまり、通常ルートのマスクMb0-7と追越しルートのマスクMc0-7それぞれは、互いにレジスタRG10-17のそれぞれの出力を、制御信号CNTに基づいて排他的に選択・非選択する。
以上、3×3フィルタの場合、画素数が9であるので、アキュムレータACMLは、レジスタRG40の積和値を累積演算することはない。
[5×5フィルタの動作]
図16は、5×5フィルタの場合の図13の積和演算器の動作を示すシーケンス図である。 5×5フィルタの場合、近傍マトリクスの画素数は25個である。したがって、25個の画素データと係数データを1サイクルで入力することはできず、24個の画素を8画素ずつ3サイクルで入力し、1画素を1サイクルで入力する。そこで、以下の説明のとおり、3サイクルで入力した8入力の積和値をアキュムレータで累積し、最後の1サイクルで入力した1入力の乗算値を追越しルートで3サイクル目の乗算値に加算する。
1番目の組の25個の画素データa0-a24と係数データの積和演算について説明する。図16に示すとおり、サイクル1、2で入力された2組の8入力の画素データa0-a7,a8-a15は、通常ルートで積和演算され、サイクル7でステージST5の加算器AD50で累積されレジスタRG50がラッチする。そして、サイクル3で入力された1組の8入力の画素データa16-a23とサイクル4で入力された1入力の画素データa24の乗算値は、追越しルートによりサイクル6でステージST3の加算器AD31で加算されレジスタRG30にラッチされる。その結果、サイクル7でステージST4のレジスタRG40が、9入力の画素データa16-a24の積和値をラッチし、サイクル8でステージST5の加算器AD50が累積し、レジスタRG50が25画素データa0-a24の積和値をラッチする。
次に、2番目の組の25個の画素データb0-b24と係数データの積和演算について説明する。サイクル4、5で入力された2組の7入力の画素データb0-b6と8入力の画素データb7-b14は、通常ルートで積和演算され、サイクル10でステージST5の加算器AD50で累積されレジスタRG50がラッチする。そして、サイクル6で入力された1組の8入力の画素データb15-b22とサイクル7で入力された2入力の画素データb23,b24の乗算値は、追越しルートによりサイクル9でステージST3の加算器AD31で加算されレジスタRG30にラッチされる。その結果、サイクル10でステージST4のレジスタRG40が10入力の画素データb15-b24の積和値をラッチし、サイクル11でステージST5の加算器AD50がその積和値を累積し、レジスタRG50が25画素データb0-b24の積和値をラッチする。
3番目の組の25個の画素データc0-c24と係数データの積和演算も上記と同様である。
[11画素の動作]
図17は、1組の入力画素データが11画素の場合の積和演算器の動作を示すシーケンス図である。1組11画素の場合、1番目の組の11画素a0-a10はサイクル1,2で入力され、サイクル5でステージST4のレジスタRG40が画素データa0-a10の積和値をラッチする。2番目の組の11画素b0-b10はサイクル2,3で入力され、サイクル6でステージST4のレジスタRG40が画素データb0-b10の積和値をラッチする。1番目と2番目の11画素データa0-a10、b0-b10はいずれもアキュムレータによる累積加算は行われない。
一方、3番目の組の11画素c0-c10は、サイクル3,4,5で入力される。したがって、サイクル3で入力される2つの画素データc0,1と、サイクル4及び5で入力される画素データc2-c9とc10の積和値は、サイクル9で累積され、ステージST5のレジスタRG50が11画素データc0-c10の積和値をラッチする。
このように、1組が11画素の場合は、追越しルート画素数と、追越しルートが動作するサイクルと、アキュムレータによる累積加算のサイクルは、複雑な変化を伴うが、所定の演算式に基づいてそれらを事前に予測することができる。
[32画素対応の積和演算器]
図18は、32画素データまで入力可能な積和演算器の構成を示す図である。32画素対応の積和演算器は、図13の8入力の積和演算器SoPを4個並列に配置し、さらに4個の積和演算器SoPが出力する積和値を加算する加算器ADDERを有する。並列配置された4個の積和演算器SoPは、図13で説明したとおりそれぞれ追越しルートを有する。
図19は、図18の加算器ADDERの構成例を示す図である。加算器ADDERは、4つの積和演算器SoP_0-3の積和値をそれぞれラッチする4つの入力レジスタRG60-63と、4つの積和値を2つずつ加算する2つの加算器AD70,AD71と、その出力をラッチする2つのレジスタRG70-71と、その出力を加算する加算器AD80と、その出力をラッチする出力レジスタRG80とを有する。
図18に示された入力画素データは、7×7フィルタに対応し、1組が49画素データa0-a48、b0-b48である。したがって、図18の積和演算器には、1組が49画素データと図示しない49係数w0-w48が2サイクルで入力される。そして、1番目の組の49画素データa0-a48については、サイクル2で入力される画素データa32-a48が、積和演算器SoP_0、SoP_1、SoP_2の追越しルートにより、サイクル1で入力された画素データa0-a31の累積値に加算される。
2番目の組の49画素データb0-b48については、サイクル2で入力された画素データb0-b14が、サイクル3,4で入力され追越しルートで加算された画素データb15-b48に、アキュムレータにより累積加算される。
[第2の実施の形態]
図20は、第2の実施の形態における追越しルート付積和演算器の構成を示す図である。図20の積和演算器は、図13と同様のSOA形態の画像データを演算する第1の演算と、AOS形態の画像データを演算する第2の演算のいずれかの演算を、設定により変更することができる。第2の演算は、図8(C)に示した演算である。
図20の積和演算器は、図13の積和演算器の構成に加えて、ステージST1内の乗算器MP0-3それぞれとレジスタRG10-17それぞれの間に設けられた、1対の入力端子にそれぞれマスクMa0,1, Ma2,3, Ma4,5, Ma6,7とMa8,9, Ma10,11, Ma12,13, Ma14,15を有する加算器AD10-13, AD14-17と、レジスタRG10-17の出力とセレクタSL10-13, SL14-17の入力との間に設けられたフィードバック配線FBを有する。
上記のマスクMa0-7, Ma8-15は、図13のマスクMb0-7, Mc0-7と同じである。SOP形態の画素データを入力する第1の演算の場合、マスクMa0-7, Ma8-15の奇数番目のマスクには制御信号「1」が入力され、偶数番目のマスクには制御信号「0」が入力され、フィードバック配線FBの入力を非選択(入力値「0」)にする。その結果、図20の積和演算器は、図13と同じになる。
一方、AOS形態の画素データを入力する第2の演算の場合、マスクMa0-7, Ma8-15には全て制御信号「1」が入力され、フィードバック配線FBのレジスタRG10-13の出力データを選択する。その結果、加算器AD10-13, AD14-17と、レジスタRG10-13, RG14-17とでアキュムレータを構成する。
図21は、第2の演算の場合の図20の積和演算器を示す図である。第2の演算の場合、積和演算器は、8組の入力ステージST0のレジスタRG00-07と、乗算器MP0-7と、加算器AD10-17と、ステージST1のレジスタRG10-17とを有する。そして、加算器AD10-17とレジスタRG10-17とフィードバック配線FBにより構成される8つのアキュムレータそれぞれが、クロックに同期して乗算器MPの乗算値を8回累積加算し、8組の9画素データa0-8〜h0-8それぞれと9係数データw0-8の積和演算を行う。
図22は、AOSの画素データを生成するフォーマット変換を示す図である。図11でフォーマット変換回路40が生成した8組のデータdata1を、結合器44が第2のDMAメモリDMA_M1に蓄積してデータdata4を生成する。そして、転置回路TRSPがデータdata4の縦と横を逆にして、AOSの画像データdata5が第2の高速メモリSRAM_1に入力される。その結果、8組の9画素データdata5と9係数データW0-W7が、図21に示した8個の積和演算器SoPに、並列に且つクロックに同期してシリアルに入力される。そして、所定数クロック後(所定数サイクル後)に8組の積和値(近傍マトリクスの注目画素の特徴量)が並列に出力される。
以上のとおり、本実施の形態によれば、積和演算器に追越しルートを設けることで、2サイクルで入力される8データを超える1組のデータについて、同じクロックサイクルで積和値を生成することができる。さらに、積和演算器の出力にアキュムレータを設けたことで、複数サイクルで入力されるデータそれぞれの積和値を累積加算することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
複数のプロセッサコアと、
前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
前記複数のプロセッサコアのいずれかが有する演算器は、
第1ステージに設けられた複数の第1のレジスタと、
前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第2の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有し、
前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、前記第1、第2、第3のレジスタはクロックに同期して入力をラッチする、加算回路を有する、プロセッサ。
(付記2)
前記演算器は、
入力ステージに設けられ、複数の第1の入力データと複数の第2の入力データをそれぞれラッチする複数対の入力レジスタと、
前記複数対の入力レジスタそれぞれの対の前記第1の入力データと第2の入力データとをそれぞれ乗算し、乗算値が前記複数の第1のレジスタそれぞれにラッチされる複数の乗算器とを有し、
前記乗算器と加算回路とにより前記複数の第1の入力データと複数の第2の入力データそれぞれの乗算値を加算する積和回路を構成する、付記1に記載のプロセッサ。
(付記3)
前記演算器は、
前記加算回路の出力を前記クロックに同期して累積するアキュムレータ回路を有する、付記1または2に記載のプロセッサ。
(付記4)
前記演算器は、
前記第1の加算器と前記第2の加算器の入力に設けられたマスク回路に、前記選択のための第1の制御値を設定する制御回路を有し、
1組の演算対象データの数が前記複数対の入力レジスタの数より多い場合、前記1組の演算対象データが分割して複数のサイクルで前記複数対の入力レジスタに入力され、
前記制御回路は、前記演算対象データに含まれ第1のサイクルで入力された前記第1の入力データと第2の入力データの第1の乗算値を前記第1の加算器に入力し、前記演算対象データに含まれ前記第1のサイクルの次の第2のサイクルで入力された前記第1の入力データと第2の入力データの第2の乗算値を前記第2の加算器に入力する前記第1の制御値を、前記マスク回路に設定する、付記2に記載のプロセッサ。
(付記5)
前記演算器は、
前記複数の乗算器と前記複数の第1のレジスタとのそれぞれの間に、前記複数の乗算器の出力と前記複数の第1のレジスタの出力とをそれぞれ加算する複数の第4の加算器を有し、
前記第4の加算器の入力に、前記複数の第1のレジスタの複数の出力を入力または非入力の一方に設定可能なマスク回路を有する、付記2に記載のプロセッサ。
(付記6)
前記演算器は、
前記前記複数の第4の加算器のマスク回路に、前記入力または非入力の第2の制御値を設定する制御回路を有し、
前記制御回路は、演算対象データがストラクチャオブアレイ形式の場合は前記非入力の第2の制御値を設定し、前記演算対象データがアレイオブストラクチャ形式の場合は前記入力の第2の制御値を設定するする、付記5に記載のプロセッサ。
(付記7)
前記複数の第1の入力データは、画像データの近傍マトリクスの複数の画素データであり、
前記複数の第2の入力データは、前記近傍マトリクスに対応する係数マトリクスの複数の係数データであり、
前記積和回路は、前記近傍マトリクスの複数の画素データと、前記係数マトリクスの複数の係数データとの積和値を算出する、付記2に記載のプロセッサ。
(付記8)
プロセッサと、
前記プロセッサがアクセスするメインメモリとを有し、
前記プロセッサは、
複数のプロセッサコアと、
前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
前記複数のプロセッサコアのいずれかが有する演算器は、
第1ステージに設けられた複数の第1のレジスタと、
前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第2の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有し、
前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、前記第1、第2、第3のレジスタはクロックに同期して入力をラッチする、加算回路を有する、情報処理装置。
(付記9)
複数のプロセッサコアと、
前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
前記複数のプロセッサコアのいずれかが有する演算器は、
第1ステージに設けられた複数の第1のレジスタと、
前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第2の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有する加算回路を有するプロセッサの動作方法であって、
前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、
前記第1、第2、第3のレジスタはクロックに同期して入力をラッチし、
第1のサイクルで入力された単数または複数の第1の入力データを前記第1の加算器が加算し、当該加算値を前記第2のレジスタがラッチし、
前記第1のサイクルの次の第2のサイクルで入力された単数または複数の第2の入力データを前記第2の加算器が加算し、
通常加算回路の出力と、前記追越し加算回路の出力とを前記第3の加算器が加算し、当該加算値を前記第3のレジスタがラッチする、プロセッサの動作方法。
RG:レジスタ
MK:マスク、マスク回路
MP:乗算器
AD:加算器
SL:セレクタ
52:制御ステートマシン、制御回路
RG00-03, RG04-07:入力レジスタ
RG10-13、RG14-17:第1のレジスタ
RG20,21、RG22,23:第2のレジスタ
RG30,31:第3のレジスタ
OCTK_0,1:追越し加算回路
RGL_0,1:通常加算回路
ACML:アキュムレータ、累積加算器

Claims (8)

  1. 複数のプロセッサコアと、
    前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
    前記複数のプロセッサコアのいずれかが有する演算器は、
    第1ステージに設けられた複数の第1のレジスタと、
    前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
    前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
    前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第3の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有し、
    前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、前記第1、第2、第3のレジスタはクロックに同期して入力をラッチする、加算回路を有する、プロセッサ。
  2. 前記演算器は、
    入力ステージに設けられ、複数の第1の入力データと複数の第2の入力データをそれぞれラッチする複数対の入力レジスタと、
    前記複数対の入力レジスタそれぞれの対の前記第1の入力データと第2の入力データとをそれぞれ乗算し、乗算値が前記複数の第1のレジスタそれぞれにラッチされる複数の乗算器とを有し、
    前記乗算器と加算回路とにより前記複数の第1の入力データと複数の第2の入力データそれぞれの乗算値を加算する積和回路を構成する、請求項1に記載のプロセッサ。
  3. 前記演算器は、
    前記加算回路の出力を前記クロックに同期して累積するアキュムレータ回路を有する、請求項1または2に記載のプロセッサ。
  4. 前記演算器は、
    前記第1の加算器と前記第2の加算器の入力に設けられたマスク回路に、前記選択のための第1の制御値を設定する制御回路を有し、
    1組の演算対象データの数が前記複数対の入力レジスタの数より多い場合、前記1組の演算対象データが分割して複数のサイクルで前記複数対の入力レジスタに入力され、
    前記制御回路は、前記演算対象データに含まれ第1のサイクルで入力された前記第1の入力データと第2の入力データの第1の乗算値を前記第1の加算器に入力し、前記演算対象データに含まれ前記第1のサイクルの次の第2のサイクルで入力された前記第1の入力データと第2の入力データの第2の乗算値を前記第2の加算器に入力する前記第1の制御値を、前記マスク回路に設定する、請求項2に記載のプロセッサ。
  5. 前記演算器は、
    前記複数の乗算器と前記複数の第1のレジスタとのそれぞれの間に、前記複数の乗算器の出力と前記複数の第1のレジスタの出力とをそれぞれ加算する複数の第4の加算器を有し、
    前記第4の加算器の入力に、前記第1のレジスタの出力を入力または非入力の一方に設定可能なマスク回路を有する、請求項2に記載のプロセッサ。
  6. 前記複数の第1の入力データは、画像データの近傍マトリクスの複数の画素データであり、
    前記複数の第2の入力データは、前記近傍マトリクスに対応する係数マトリクスの複数の係数データであり、
    前記積和回路は、前記近傍マトリクスの複数の画素データと、前記係数マトリクスの複数の係数データとの積和値を算出する、請求項2に記載のプロセッサ。
  7. プロセッサと、
    前記プロセッサがアクセスするメインメモリとを有し、
    前記プロセッサは、
    複数のプロセッサコアと、
    前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
    前記複数のプロセッサコアのいずれかが有する演算器は、
    第1ステージに設けられた複数の第1のレジスタと、
    前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
    前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
    前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第3の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有し、
    前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、前記第1、第2、第3のレジスタはクロックに同期して入力をラッチする、加算回路を有する、情報処理装置。
  8. 複数のプロセッサコアと、
    前記複数のプロセッサコアからアクセスされる内部メモリとを有し、
    前記複数のプロセッサコアのいずれかが有する演算器は、
    第1ステージに設けられた複数の第1のレジスタと、
    前記複数の第1のレジスタの複数の出力を加算する第1の加算器と、第2ステージに設けられ前記第1の加算器の出力をラッチする第2のレジスタとを有する通常加算回路と、
    前記複数の第1のレジスタの複数の出力を加算する第2の加算器を有する追越し加算回路と、
    前記通常加算回路の出力と前記追越し加算回路の出力とを加算する第3の加算器と、第3ステージに設けられ前記第3の加算器の出力をラッチする第3のレジスタとを有する合成回路とを有する加算回路を有するプロセッサの動作方法であって、
    前記第1の加算器と前記第2の加算器は、前記複数の第1のレジスタの複数の出力を互いに排他的に選択して入力し、
    前記第1、第2、第3のレジスタはクロックに同期して入力をラッチし、
    第1のサイクルで入力された単数または複数の第1の入力データを前記第1の加算器が加算し、当該加算値を前記第2のレジスタがラッチし、
    前記第1のサイクルの次の第2のサイクルで入力された単数または複数の第2の入力データを前記第2の加算器が加算し、
    通常加算回路の出力と、前記追越し加算回路の出力とを前記第3の加算器が加算し、当該加算値を前記第3のレジスタがラッチする、プロセッサの動作方法。
JP2017013396A 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法 Active JP6864224B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017013396A JP6864224B2 (ja) 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法
PCT/JP2018/000279 WO2018139196A1 (ja) 2017-01-27 2018-01-10 プロセッサ、情報処理装置及びプロセッサの動作方法
US16/352,919 US10768894B2 (en) 2017-01-27 2019-03-14 Processor, information processing apparatus and operation method for processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017013396A JP6864224B2 (ja) 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法

Publications (2)

Publication Number Publication Date
JP2018120547A JP2018120547A (ja) 2018-08-02
JP6864224B2 true JP6864224B2 (ja) 2021-04-28

Family

ID=62978309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017013396A Active JP6864224B2 (ja) 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法

Country Status (3)

Country Link
US (1) US10768894B2 (ja)
JP (1) JP6864224B2 (ja)
WO (1) WO2018139196A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019090325A1 (en) * 2017-11-06 2019-05-09 Neuralmagic, Inc. Methods and systems for improved transforms in convolutional neural networks
US20190156214A1 (en) 2017-11-18 2019-05-23 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
WO2019215907A1 (ja) * 2018-05-11 2019-11-14 オリンパス株式会社 演算処理装置
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
US11636343B2 (en) 2018-10-01 2023-04-25 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
JP7370158B2 (ja) 2019-04-03 2023-10-27 株式会社Preferred Networks 情報処理装置および情報処理方法
WO2021026225A1 (en) 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
CN113434113B (zh) * 2021-06-24 2022-03-11 上海安路信息科技股份有限公司 基于静态配置数字电路的浮点数乘累加控制方法及系统
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8326690D0 (en) 1983-10-05 1983-11-09 Secr Defence Digital data processor
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치

Also Published As

Publication number Publication date
WO2018139196A1 (ja) 2018-08-02
US20190212982A1 (en) 2019-07-11
JP2018120547A (ja) 2018-08-02
US10768894B2 (en) 2020-09-08

Similar Documents

Publication Publication Date Title
JP6864224B2 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
KR102443546B1 (ko) 행렬 곱셈기
JP6767660B2 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
CN109165041B (zh) 神经网络处理装置及其执行向量范数指令的方法
CN108229654B (zh) 神经网络卷积运算装置及方法
JP7315317B2 (ja) プロセッサおよびプロセッサのデータ転送方法
KR102203746B1 (ko) 인공 신경망 정방향 연산 실행용 장치와 방법
WO2017185387A1 (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
JP6905573B2 (ja) 計算装置と計算方法
CN112612521A (zh) 一种用于执行矩阵乘运算的装置和方法
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN116541647A (zh) 运算加速器、处理方法及相关设备
CN112005251A (zh) 运算处理装置
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
CN117950624A (zh) 基于计算装置的数据计算方法、装置及相关产品
CN115033843A (zh) 基于三角脉动阵列的协方差矩阵计算的电路实现方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210205

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: 20210302

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210315

R150 Certificate of patent or registration of utility model

Ref document number: 6864224

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150