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

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

Info

Publication number
JP6767660B2
JP6767660B2 JP2017013398A JP2017013398A JP6767660B2 JP 6767660 B2 JP6767660 B2 JP 6767660B2 JP 2017013398 A JP2017013398 A JP 2017013398A JP 2017013398 A JP2017013398 A JP 2017013398A JP 6767660 B2 JP6767660 B2 JP 6767660B2
Authority
JP
Japan
Prior art keywords
image data
data
padding
mask
pixel
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
JP2017013398A
Other languages
English (en)
Other versions
JP2018120549A (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 JP2017013398A priority Critical patent/JP6767660B2/ja
Priority to PCT/JP2018/000124 priority patent/WO2018139177A1/ja
Publication of JP2018120549A publication Critical patent/JP2018120549A/ja
Priority to US16/288,185 priority patent/US10769749B2/en
Application granted granted Critical
Publication of JP6767660B2 publication Critical patent/JP6767660B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/30018Bit or string instructions
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4023Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Description

本発明は,プロセッサ、情報処理装置及びプロセッサの動作方法に関する。
ディープラーニング(以下DL1:Deep Learning)は、情報処理装置内のプロセッサの演算処理により実行される。DLは、階層の深いニューラルネットワーク(以下DNN:Deep Neural Network)を利用したアルゴリズムの総称である。そして、DNNの中でも良く利用されるのが、コンボリュージョン・ニューラルネットワーク(CNN:Convolution Neural Network)である。CNNは、例えば画像データの特徴を判定するDNNとして広く利用される。
画像データの特徴を判定するCNNは、画像データを入力しフィルタを利用した畳込み演算を行い画像データの特徴(例えばエッジの特徴など)を検出する。
特開2014−063522号公報 特開2016−029598号公報 特開2009−303236号公報 特開平3−196257号公報
画像データは、二次元の画素の色データ(以下画素データ)である。一方、係数マトリクスである係数フィルタによる畳込み演算は、画像データの周囲にパディング(余白)を挿入したパディング拡張画像データから、注目画素を中心とする近傍マトリクスの画素データを抽出して近傍マトリクス画像データを生成する処理と、抽出した近傍マトリクス画素データに係数フィルタの重みをそれぞれ乗算し加算する積和演算処理とを有する。積和演算は、近傍マトリクスの中心画素である注目画素のフィルタリング結果を生成する。畳込み演算は、係数フィルタの位置をラスタスキャン方向に移動しながら、上記の近傍マトリクス画像データの生成と積和演算とを繰り返す。
上記の近傍マトリクス画像データの生成処理は、画像データを記憶する第1のメモリからのランダムな読み出しと、近傍マトリクス画像データを記憶する第2のメモリへの書き込み処理を必要とする。この近傍マトリクス画像データの生成処理は、畳込み演算の前処理として非常に工数がかかる。しかも、DNNの演算は非常の多くの畳込み演算が含まれるので、近傍マトリクス画像データの生成処理を省力化することは、DNNの演算工数の削減に大きく寄与する。
そこで,一つの実施の形態の目的は,畳込み演算の近傍マトリクス画像データの生成処理を効率的に行うプロセッサ、情報処理装置及びプロセッサの動作方法を提供することにある。
一つの実施の形態は,二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、前記第1のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第2のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサである。
一つの実施の形態によれば,畳込み演算の近傍マトリクス画像データの生成処理を効率的に行うことができる。
本実施の形態における情報処理装置(ディープラーニングサーバ)の構成を示す図である。 ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。 グラフィックプロセッサ(GPU)11の構成とGPU内のコアCOREの構成とを示す図である。 DNNの一例を示す図である。 画像データと係数フィルタの積和演算の第1の例を示す図である。 画像データと係数フィルタの積和演算の第2の例を示す図である。 2つの積和演算器により並列処理する例を示す図である。 本実施の形態におけるグラフィックプロセッサGPU(DL装置)の構成を示す図である。 フォーマット変換器FMT_Cの構成を示す図である。 フォーマット変換器の動作を示すフローチャート図である。 画像データを示す図である。 図11の13行13列の画像データの場合の近傍マトリクス画像データとフィルタの係数(重みW)の一例を示す図である。 第1のフォーマット変換を説明する図である。 第2のフォーマット変換を説明する図である。 圧縮演算器の構成を示す図である。 パディング演算器を示す図である。 注目画素に対応する圧縮マスクとパディングマスクを示す図である。 注目画素に対応する圧縮マスクとパディングマスクを示す図である。 積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。 積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。 第1のDMAメモリDMA_M0の画素データの取得とフォーマット変換処理の関係を示す図である。 積和演算器に入力する入力用近傍マトリクスデータの生成手順の第2例を示す図である。
図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の出力を生成する。
特に、本実施の形態では、各コアCORE内の演算器ALUがDNNの演算処理を行う前に、DMAが、高速メモリSRAM内の画像データのフォーマット変換を行い、演算器ALUに入力するための近傍マトリックス画像データを生成する。本実施の形態では、DMA内に画像データのフォーマット変換の回路が設けられているが、DMA以外に、フォーマット変換を専用に行うフォーマット変換ユニットを設けても良い。
図4は、DNNの一例を示す図である。画像データの判定処理を行うDNNは、入力データである画像データIM_Dが入力される入力層INPUT_Lと、複数組のコンボリュージョン層CNV_L及びプーリング層PL_Lと、全結合層C_Lと、ソフトマックス層(出力層)OUT_Lとを有する。
コンボリュージョン層CNV_Lは、画像データIM_Dを係数フィルタFLTでフィルタリングしてある特徴量を有する画像データを生成する。プーリング層PL_Lは、例えばコンボリュージョン層のノードの値の代表値(例えば最大値)を選択する。そして、出力層OUT_Lには、前述したように、例えば画像データ内の数字の判定結果(0〜9のいずれか)が出力される。
コンボリュージョン層CNV_Lは、M×Nの二次元画素マトリクスの画素データを有する画像データIM_Dの例えば3×3の近傍マトリクスの画素データと、近傍マトリクスと同じ3×3の係数フィルタFLTの係数データとをそれぞれ乗算し乗算結果を加算する積和演算を行い、近傍マトリクスの中央の注目画素の画素データを生成する。このフィルタリング処理を、係数フィルタをラスタスキャン方向にずらしながら画像データIM_Dの全ての画素に対して演算を行う。これが畳込み演算である。
近傍マトリクスの画素データがXi、係数フィルタの係数データがWi(但しi=0-8)の場合、フィルタリングの畳込み演算式は次のとおりである。
Xi' = Σ(Xi * Wi) (1)
但し、Xiは画素データ、Wiは係数であり、Σはi = 0-8 だけ加算することを示す。
即ち、画像データIM_Dの注目画素がX6の場合は、式(1)によるフィルタリング後の画素データX6'は、次のとおりである。つまり、畳込み演算は、近傍マトリクスの画素データと係数フィルタの係数データとの積和演算である。
X6' = X0*W0 + X1*W1 + X2*W2 + X5*W5 + X6*W6 + X7*W7 + X10*W10 + X11*W11 + X12*W12
上記の式(1)の畳込み演算を行う場合、画像データから演算器に入力するための近傍マトリクスの画像データ(近傍マトリクス画像データ)に変換する処理が必要になる。この画像データのフォーマット変換について以下にて説明する。
図5は、画像データと係数フィルタの積和演算の第1の例を示す図である。入力画像データIN_DATAである5×5の画像データの注目画素X0を、3×3の係数フィルタFLTでフィルタリングする積和演算は、注目画素X0を中心とする3×3の近傍マトリクス画像データの9つの画素データと、係数フィルタFLTの係数W0-W8との積和演算である。この場合、注目画素X0が入力画像データIN_DATAの最左上画素であるので、5個のパディングデータを挿入する必要がある。
図5には、注目画素X0についての積和演算のプログラム例が示される。このプログラム例によれば、係数フィルタの行rowのアドレス−1,0,+1と列colのアドレス−1,0,+1それぞれについて、row<0 OR col<0の場合は、パディングデータが「0」であるので、乗算値out[0]=0となり、それ以外の場合は、乗算値out[0]は以下のとおりとなる。
out[0] = 画素データ*係数データ = in[col+row*5]*w[col+1+(row+1)*3]
プログラムでは、この乗算値を累積(+=)している。
このように、積和演算に入力される近傍マトリクス画像データにパディングデータが挿入される必要があるので、ループ内に条件分岐が発生する。このような演算は、プロセッサ11の演算器による処理効率を低下させる。
[本実施の形態]
図6は、画像データと係数フィルタの積和演算の第2の例を示す図である。この例では、入力画像データIN_DATAである画像データの周囲にパディングデータPが挿入済みである。このように、パディングデータが挿入済みの近傍マトリクス画像データが演算器に入力される場合、演算器の処理は、図6中に示したプログラム例のように条件分岐がない。
すなわち、このプログラム例では、係数フィルタの行rowのアドレス−1,0,+1と列colのアドレス−1,0,+1それぞれについて、乗算値out[0]は以下のとおりとなる。
out[0] = 画素データ*係数データ = in[col+(row+2)*5]*w[col+1+(row+1)*3]
プログラムでは、この乗算値を累積(+=)している。
このように、積和演算器に入力する近傍マトリクス画像データがパディングデータ挿入済みであれば、演算器による積和演算の処理効率を上げることができる。
図7は、2つの積和演算器により並列処理する例を示す図である。この例では、図6と同様に入力画像データIN_DATAとしてパディングデータが挿入済みの画像データが演算器に入力される。そして、パディングデータが挿入済みの2組の近傍マトリクス画像データを、2つの積和演算器SoP(Sum of Product)で並列演算する。その場合のプログラム例によれば、ループ内には条件分岐はなく、以下の2つの積和演算式があるだけである。
out[0] = in[col+(row+2)*5]*w[col+1+(row+1)*3]
out[0] = in[col+1+(row+2)*5]*w[col+1+(row+1)*3]
したがって、図7に示したようにパディングデータ挿入済みの近傍マトリクス画像データを乗算器に入力することが望ましい。
図8は、本実施の形態におけるグラフィックプロセッサGPU(DL装置)の構成を示す図である。図8の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は、積和演算器を内蔵する。積和演算器は、フォーマット変換器が生成した近傍マトリクス画像データと、係数フィルタの係数データとを乗算しそれぞれ加算する。
図9は、フォーマット変換器FMT_Cの構成を示す図である。フォーマット変換器FMT_Cは、制御バスC_BUSの制御バスインターフェースC_BUS_IFと、制御データを格納する制御データレジスタCNT_REGと、ステートマシンのような制御回路CNTとを有する。制御バスC_BUSには図示しないコアから制御データが転送され、制御レジスタに制御データが格納される。
制御回路CNTは、第1の高速メモリSRAM_0から第2の高速メモリSRAM_1への画像データの転送の制御を行う。また、制御回路CNTは、画像データのフォーマット変換の場合、前記画像データの転送制御に加えて、各マスクレジスタへのマスク値の設定と、フォーマット変換の開始と終了の制御を行う。つまり、制御回路CNTは、第1の高速メモリSRAM_0から画像データを読み出し、フォーマット変換し、第2の高速メモリSRAM_1へ書き込む。このように、制御回路CNTは、画像データのデータ転送中にフォーマット変換を行う。制御回路は、データ転送を行うとき、画像データのアドレスを指定して高速メモリSRAMへのアクセスを行う。そして、制御回路は、画像データのアドレスに対応して、フォーマット変換に必要なマスクレジスタのマスク値を設定する。
フォーマット変換器FMT_Cは、更に、第1のDMAメモリDMA_M0と、第2のDMAメモリDMA_M1と、それらメモリの間にパイプライン構成に配置された圧縮演算器41、パディング演算器43、コンカテネーション(結合回路)45を有する。これらの演算器41、43及び結合回路45は、複数組設けられ、複数組の近傍マトリクス画像データのフォーマット変換を並列に行う。また、圧縮マスクCmaskを設定する圧縮マスクレジスタ40、パディングマスクPmaskを設定するパディングマスクレジスタ42と、結合回路のパラメータを設定する結合回路パラメータレジスタ44とを有する。そして、画像データの転置を行う転置回路TRSPと、内部バスI_BUSのデータバスD_BUSと接続されるデータバスインターフェースD_BUS_IFとを有する。
図10は、フォーマット変換器の動作を示すフローチャート図である。このフローチャート図に基づいてフォーマット変換器の動作を説明すると共に、圧縮マスクとパディングマスクの具体例を示して画像データを入力用近傍マトリクス画像データに変換する動作を示す。
まず、GPUのコアにより、DMA内の制御データレジスタCNT_REGに、画像データ転送要求フラグと、データ転送のパラメータと、画像データ転送中に実行するフォーマット変換のパラメータが設定される(S30)。データ転送のパラメータは、例えば転送元高速メモリのアドレスとデータ量及び転送先高速メモリのアドレスなどである。また、フォーマット変換のパラメータは、例えば、注目画素の識別情報(画像データの行列番号など)、係数フィルタの係数、パディング数、パディングデータ、積和演算器の入力データのフォーマット情報などである。
この設定に応答して、制御回路CNTは、注目画素の行列番号に基づく圧縮マスクCmask、パディングマスクPmask、結合回路パラメータを、それぞれのレジスタ40、42、44に設定する(S31)。そして、制御回路CNTは、転送元の第1の高速メモリSRAM_0から転送先の第2の高速メモリSRAM_1への画像データの転送を開始する(S32)。
画像データの転送処理では、制御回路CNTが転送元の第1の高速メモリSRAM_0から画像データを読み出し第1のDMAメモリDMA_M0に書き込む(S33)。DMAメモリDMA_M0,DMA_M1は画像データを一時的に格納する入力バッファである。
次に、DMAメモリDMA_M0内の画像データが圧縮演算器41に転送され、圧縮演算器41が圧縮マスクCmaskのマスク値に基づいて近傍マトリクスの画素データを抽出し(S34)、パディング演算器43に転送する。そして、パディング演算器43が、パディングマスクPmaskのマスク値に基づいて抽出した画素データにパディングデータを挿入し、カーネルサイズに対応する近傍マトリクス画像データを生成する(S35)。
図11は、画像データを示す図である。メインメモリM_MEM内には、例えば32ワードの画像データがメモリの各行に記憶される。そして、13行13列の画像データは169個の画素データX0-X168を有する。その結果、図11のメインメモリM_MEM内には、6行わたり画素データX0-X31, X32-X63, X64-X95, X96-X127, X128-X159,X160-X168 が記憶される。図11のメインメモリM_MEMの第1行には列アドレス番号が示される。
メインメモリの画素データは、予めメモリコントローラMCを介して転送元の高速メモリSRAM_0に書き込まれる。メインメモリM_MEMとメモリコントローラMCの間のデータバス幅は32ワードであるので、メモリコントローラで32ワードの画素データが内部バスI_BUSのバス幅16ワードに変換され、転送元の高速メモリSRAM_0に記憶される。
一方、図11にはパディングが挿入された画像データが示される。画像データは13行13列の画素データX0-X168を有するので、その周囲にパディング数1のパディングデータPが挿入されると、15行15列の画像データになる。そして、畳込み演算では、3行3列の係数フィルタFLTをラスタスキャン方向に移動しながら、3行3列の近傍マトリクス画像データと係数フィルタの係数の積和演算を繰り返す。
図12は、図11の13行13列の画像データの場合の近傍マトリクス画像データとフィルタの係数(重みW)の一例を示す図である。図12には、3行3列の係数フィルタFLTと、注目画素X0,X1,X2,X13,X14,X15に対応する近傍マトリクスN_MXとが示される。係数フィルタFLTは9つの係数(重み)W0-W8を有する。また、近傍マトリクスは注目画素を中心とし、係数フィルタと同じ形状で同じ数の画素データを有する。
一方、注目画素X0の近傍マトリクスN_MXは、1行目に3つのパディングデータP、2行目に1つのパディングデータPと2つの画素データX0,X1、3行目に1つのパディングデータPと2つの画素データX13,X14を有する。したがって、注目画素X0の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,P,P,P,X0,X1,P,X13,X14]となる。
更に、注目画素X1の近傍マトリクスN_MXは、1行目に3つのパディングデータP、2行目と3行目にそれぞれ3つの画素データX0-X2, X13-X15を有する。よって、注目画素X1の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,P,P,X0,X1,X2,X13,X14,X16]となる。注目画素X2もX1と同様である。
次に、注目画素X13の近傍マトリクスN_MXは、1行目に1つのパディングデータPと2つの画素データX0,X1、2行目に1つのパディングデータPと2つの画素データX13,X14、3行目に1つのパディングデータPと2つの画素データX26,X27を有する。したがって、注目画素X13の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,X0,X1,P,X13,X14,P,X26,X27]となる。
更に、注目画素X14の近傍マトリクスN_MXは、1-3行目にそれぞれ3つの画素データX0-X2, X13-X15, X26-X28を有する。よって、注目画素X1の近傍マトリクスN_MXのデータ列N_MX_Dは、[X0,X1,X2,X13,X14,X15,X26,X27,X28]となる。注目画素X15もX14と同様である。
画像データのフォーマット変換は、図11のメインメモリの画像データを、図12に示した各近傍マトリクスの9個の画素データのデータ列N_MX_Dに変換する処理である。この変換処理はDMA内の圧縮演算器とパディング演算器により行われる。
図13は、第1のフォーマット変換を説明する図である。図13では、圧縮演算器41が、第1のDMAメモリDMA_0内の32ワードの画像データdata0から32ビットの圧縮マスクCmaskにより近傍マトリクス画像データに含めるべき画素データを抽出する。図11のように13行13列の画像データの場合、最大で36ワードの画素データから近傍マトリクスの画素データを抽出する必要があるが、図13では簡単化して、32ワードの画素データから画素データを抽出する例で説明する。32ワードの画素データ(それぞれ8ビットの階調データ)は、アドレスADDが0-31の画素データである。
まず、画像データdata0は画素データX0-X31を有し、圧縮マスクCmaskは32のマスク値を有する。圧縮マスクのマスク値は1ビットであり「0」がマスク、「1」がノンマスクである。圧縮演算器41は、圧縮マスクCmaskのマスク値が「0」の場合、画像データdata0の画素データをマスクし(何も出力せず)、マスク値が「1」の場合、画像データdata0の画素データを選択し出力する。そして、選択した画素データを画像データdata1の例えば下位アドレス側(上位アドレス側でも良い)に詰めて配置する。図13では、画像データdata1として、画素データX0,X1,X13,X14が抽出され、残りの上位アドレス側は全て「0」にされる。
次に、上記の圧縮演算器により、画像データdata1は画素データX0,X1,X13,X14と28ワードの「0」を有する。そして、パディングマスクのマスク値は2ビットであり、「0」がマスク、「1」がノンマスク、「2」がリザーブ、「3」がパディングデータ選択である。パディング演算器43は、パディングマスクPmaskのマスク値が「0」の場合、画像データdata1の画素データをマスクし(つまり何も出力せず)、マスク値が「1」の場合、画像データdata1の画素データを選択し、マスク値が「3」の場合パディングデータPを挿入する。その結果、フォーマット変換された画像データdata2は、 [P,P,P,P,X0,X1,P,X13,X14]と23ワードの[0]となる。これは、注目画素X0の近傍マトリクスN_MXのデータ列N_MX_Dと一致する。圧縮演算器41とパディング演算器43の構成については後述する。
図14は、第2のフォーマット変換を説明する図である。第2のフォーマット変換では、圧縮マスクCmaskと圧縮演算器は第1のフォーマット変換(図13)と同じであるが、パディングマスクPmaskとパディング演算器が異なる。具体的には、演算器は、パディングマスクPmaskのマスク値が「2」の場合、1クロック前の画素データをコピーして出力する。
第2のフォーマット変換では、圧縮演算器の動作は第1のフォーマット変換と同じである。一方、パディング演算器の動作は、パディングマスクPmaskのマスク値が「2」の場合、1クロック前の出力と同じ画素データを選択する。そして、変換後の近傍マトリクス画像データは、第1のデータフォーマット変換と同じである。
図15は、圧縮演算器の構成を示す図である。圧縮演算器41は、セレクタSEL0を有するALU414と、システムのクロックCLK1に同期してカウントアップするリードカウンタ411と、ALU414からの第2のクロックCLK2に同期してカウントアップするライトカウンタ412とを有する。圧縮演算器は、さらに、ALUにより入力される画像データの画素データを格納するリードレジスタ413と、ALUにより出力される画素データを書き込むライトレジスタ415とを有する。リードレジスタは、第1のDMAメモリDMA_M0の32ワードの画像データdata0(図13、14参照)が格納される入力レジスタである。また、ライトレジスタは画像データdata1が格納される出力レジスタである。
ALUを構成するセレクタSEL0は、リードカウンタのカウント値に対応する圧縮マスクCmask内のマスク値を参照し、マスク値が「0」の場合画素データdata0をマスクして出力せず、マスク値が「1」の場合リードレジスタ内のリードカウンタのカウント値の画素データdata0を選択し出力する。一方、ALUは圧縮マスクCmaskのマスク値が「1」の場合、第2のクロックCLK2を出力してライトカウンタをカウントアップさせ、画素データdata0を選択し、ライトレジスタ内のライトカウンタのカウント値の位置に、選択した画素データdata0を画素データdata1として書き込む。
したがって、圧縮演算器41は、図13、図14の通り、マスク値「1」の場合データdata0の画素データをデータdata1内の下位アドレス側に詰めて書き込む。
図16は、パディング演算器を示す図である。パディング演算器43は、セレクタSEL1を有するALU434と、システムのクロックCLK1に同期してカウントアップするライトカウンタ432と、ALU434からの第3のクロックCLK3に同期してカウントアップするリードカウンタ431とを有する。パディング演算器は、さらに、ALUが読み出す画像データの画素データを格納するリードレジスタ433と、ALUが選択した画素データを書き込むライトレジスタ435とを有する。リードレジスタは、32ワードの画像データdata1(図13、14参照)が格納される入力レジスタである。また、ライトレジスタは画像データdata2が格納される出力レジスタである。
ALUを構成するセレクタSEL1は、パディングマスクPmask内のライトカウンタのカウント値に対応するマスク値を参照し、マスク値が「0」の場合画素データ「0」を出力し、マスク値が「1」の場合リードレジスタ内のリードカウンタのカウント値の画素データを出力する。また、セレクタSEL1は、マスク値が「3」の場合パディングデータPを出力する。そして、セレクタSEL1は、マスク値が「2」の場合、図13の例では何も出力せず、図14の例ではFFに格納されている1クロック前の出力データP_data2を出力する。そして、ALUはパディングマスクPmaskのマスク値が「1」の場合第2のクロックCLK2を出力してリードカウンタをカウントアップさせる。
したがって、図13の例では、パディング演算器43は、マスク値「0」の場合画素データ「0」を、マスク値「1」の場合データdata1の画素データを、マスク値「3」の場合パディングデータを、画素データdata2内に下位アドレスから順番に書き込む。
図14の例では、さらに、マスク値「2」の場合1クロック前の出力データP_DATA2を出力して画素データdata2に書き込む。パディングマスクPmaskにマスク値「2」(copy)を使用することにより、セレクタSEL1は、マスク値「2」の場合に、画素データ「0」「P」などをレジスタから取得する動作を省略することができる。
図17、図18は、注目画素に対応する圧縮マスクとパディングマスクを示す図である。図12で説明した通り、注目画素が図11に示した二次元の画像データの最上行と最下行、最左列と最右列の場合、近傍マトリクスにはパディングデータが挿入される。したがって、その場合、圧縮マスクとパディングマスクは特殊なマスクであることが必要である。図11の例は周囲に挿入するパディング数が1であるが、パディング数が2の場合は、最上行から第1、2行、最左列から第1、2列、最下行から第1、2行、最右列から第1、2列で特殊なマスクになる。
一方、注目画素が二次元の画素データの上記の位置以外の場合は、近傍マトリクスにはパディングデータが挿入されない。したがって、注目マスクが右側に移動するたびに、圧縮マスク内の3回のマスク値「111」が右シフトし、パディングマスクは最下位アドレスから9つのマスク値「1」と残りアドレスのマスク値「0」で固定される。
次に、図17、図18を参照して、注目画素が二次元の画像データの最上行、最左列の場合の圧縮マスクとパディングマスクについて説明する。ここでのパディングマスクは図13の例で、マスク値は「0」「1」「3」だけ有する。
注目画素X0の場合、最上行で最左列であるので、圧縮マスクCmaskは2つの「11」を11アドレス分離れて有し、それ以外は「0」である。また、パディングマスクPmaskは「333」、「311」「311」、残り全て「0」である。なお、注目画素の位置に関わらず、パディングマスクは最下位(最左)から9個(係数フィルタのカーネルサイズ9)のマスク値が「1」または「3」になり残りは全て「0」になる。
注目画素X1の場合、最上行であるが最左列ではないので、圧縮マスクCmaskは注目画素X0の場合の2つの「11」の右側に「1」を追加して2つの「111」を10アドレス離れて有し、それ以外は「0」である。また、パディングマスクPmaskは「333」「111111」、残り全て「0」である。
注目画素X2、X3の場合、最上行であるが最左列から離れた列であるので、圧縮マスクCmaskは、注目画素X1の2つの「111」がそれぞれ右側に1つずつシフトする。また、パディングマスクPmaskは注目画素X1と同じ「333」「111111」、残り全て「0」である。
注目画素X12の場合、最上行で最右列であるので、圧縮マスクCmaskは2つの「11」を11アドレス分離れて有し、それ以外は「0」である。また、パディングマスクPmaskは「333」、「113」「113」、残り全て「0」である。これは注目画素X0と近傍マトリクス内のパディング列の位置が逆になっている。
注目画素X13の場合、最上行ではないが最左列であるので、圧縮マスクCmaskは注目画素X0と同じである。また、パディングマスクPmaskは「311」「311」「311」である。
注目画素X14の場合、最上行でも最左列でもないので、圧縮マスクCmaskは注目画素X1と同じである。また、パディングマスクPmaskは「111」「111」「111」である。
注目画素X15の場合、最上行でも最左列でもないので、圧縮マスクCmaskは注目画素X14の2つの「111」が右シフトする。また、パディングマスクPmaskはX14と同じで「111」「111」「111」である。
特に図示しないが、注目画素が最下行、最左列から最下行、最右列に移動する場合、図17、18の説明とパディング行が3行目になることが異なるが、パディング列は同じになる。したがって、ここでは説明を繰り返さない。
図19、図20は、積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。図19に示すとおり、メインメモリM_MEMは1行32ワード幅で13行13列の画像データIM_DATAを記憶する。画像データIM_DATAには32列のコラムアドレスCADD(=0-31)が示される。一方、13行13列の画像データIM_DATAは、169ワードの画素データX0-X168を有する。
まず、図8に示した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に書き込む。図11に示した13行13列の画像データの場合、注目画素X14の3行3列の近傍マトリクスの9画素は、29個の連続する画素X0-X28から抽出される。
そして、8つの連続する注目画素の近傍マトリクス画像データを生成するためには、第1のDMAメモリDMA_M0に最大で36ワードの連続する画素データを格納する必要がある。例えば、注目画素X24-X31の場合、36ワードの連続する画素データX10-X45を圧縮演算器に入力可能にする必要がある。このことは、第1のDMAメモリDMA_M0には64ワードの連続する画素データを同時に格納し、64幅の圧縮マスクで8組の近傍マトリクスの画素データを抽出することを意味する。そして、データフォーマット変換処理の進捗に同期して、2組の64ワードの画素データを入れ替える必要がある。
したがって、図19に示すとおり、第1のDMAメモリDMA_M0は2組の64ワードの画素データを格納する容量を有し、画素データX0-X63, X64-X127が格納されている。
そして、8組の圧縮演算器Cmask_ALU_0-7及びパディング演算器Pmask_ALU_0-7が、それぞれの圧縮マスクで近傍マトリクスの画素データを抽出してデータdata1を生成し、パディングマスクでパディングデータを挿入してデータdata2を生成する。データdata2は、各近傍マトリクスの画像データであり、9つの画素データと7つの画素データ「0」の合計16個の画素データを有する。
図20に移り、結合回路CONCが8組の近傍マトリクスの画像データを順次第2のDMAメモリDMA_M1に書き込む。その結果、8組の近傍マトリクスの画像データdata3は、8組の16ワードデータを含む。この結合回路の処理は、図10の工程S36に対応する。
フォーマット変換器内の制御回路CNTは、第2のDMAメモリDMA_M1内の8組の近傍マトリクスの画像データを転置回路TRSPで列方向と行方向を入れ替える転置処理し、転置された8組の近傍マトリクス画像データdata4(16ワード)を第2の高速メモリSRAM_1に書込む。この結合回路の処理は、図10の工程S37に対応する。
尚、フォーマット変換器内の圧縮演算器ALUとパディング演算器ALUとが8個並列に設けられていない場合、圧縮マスクとパディングマスクによるフォーマット変換と、結合回路による第2のDMAメモリDMA_M1内への近傍マトリクス画像データの書き込みが、8回繰り返し行われる。
そして、GPU内のコアCOREが、第2の高速メモリSRAM_1内のフォーマット変換済みの8組の近傍マトリクス画像データを行アドレスRADD順に1ワードずつ、コアCORE内の8組の積和演算器SoPに並列に入力する。同時に係数フィルタの9つの係数(W0-W8)も8組の積和演算器SoPにそれぞれ入力される。これにより、9クロックサイクルで、8組の積和演算結果(注目画素のフィルタリング結果の値)が並列して生成される。
図21は、第1のDMAメモリDMA_M0の画素データの取得とフォーマット変換処理の関係を示す図である。前述したとおり、13行13列の画像データにおいて、8組の近傍マトリクス画像データを並列して抽出するためには、最大で64ワードの連続する画素データを第1のDMAメモリDMA_M0内に格納しておく必要がある。
図21に示すとおり、(1)最初に、データフォーマット変換器の制御回路CNTは、第1の高速メモリSRAM_0から32ワードの画素データX0-X31を取得し第1のDMAメモリDMA_M0に格納した後、データフォーマット変換を実行する。(2)そして、制御回路CNTは、データフォーマット変換の進捗に合わせて、次の32ワードの画素データX32-X63を第1の高速メモリSRAM_0から取得し、第1のDMAメモリDMA_M0に格納する。(3)さらに、制御回路CNTは、64ワードの画素データX0-X63に対するデータフォーマット変換中に、次の32ワードの画素データX64-X95を第1の高速メモリSRAM_0から取得し、第1のDMAメモリDMA_M0に格納する。そして、(4)制御回路CNTは、64ワードの画素データX64-X127に対するデータフォーマット変換中に、次の32ワードの画素データX128-X159を第1の高速メモリSRAM_0から取得し、第1のDMAメモリDMA_M0に格納する。その後、同様にデータフォーマット変換処理の進捗に合わせて、32ワードずつの画素データを順次取得して格納する。
図22は、積和演算器に入力する入力用近傍マトリクスデータの生成手順の第2例を示す図である。第2例は、図19と図22に示される。第2例において、図19で説明したとおり、メモリコントローラMCがメインメモリ内の画像データIM_DATAを第1の高速メモリSRAM_0に転送し、データフォーマット変換器であるDMA内での圧縮演算器とパディング演算器が近傍マトリクス画像データdata2を生成する。
次に、図22に示すとおり、結合回路CONCが8組の近傍マトリクス画像データdata2の各9ワードの画素データを、1行16ワードの第2のDMAメモリDMA_M1にラスタスキャン方向に詰めて格納する。その結果、1組目の近傍マトリクス画像データ「PPPPX0X1PX13X14」は第2のDMAメモリの1行目と2行目にまたがって格納され、2組目の近傍マトリクス画像データ「PPPX0X1X2X13X14X15」は2行目と3行目にまたがって格納され、3組目以降のそれぞれ9ワードの近傍マトリクス画像データが2行にまたがって格納される。この処理は、図10の工程S36に対応する。
そして、制御回路CNTは、第2のDMAメモリDMA_M1内の近傍マトリクス画像データをパッキングした画像データdata3を、転置処理せずに第2の高速メモリSRAM_1に転送する。この処理は、図10の工程S37に対応する。
次に、GPU内のコアCOREが、第2の高速メモリSRAM_1内の近傍マトリクス画像データdata3を16ワードずつ読み出し、データdata4のように16ワードを8ワードずつに変換する。そして、コアCORE内に設けられた単一の積和演算器SoPの第1ステージの8個の乗算器MLTPに、近傍マトリクス画像データを8ワードずつ、係数(W0-W8)と共に入力する。その結果、積和演算器SoPは、9ワードの近傍マトリクスの画素データのうち8ワードずつ係数と乗算し、乗算結果を加算して積和演算結果を出力する。
第2例では、特殊な乗算器の入力構造に整合した入力用近傍マトリクス画像データdata4を生成するので、コア内の積和演算器の演算処理効率を高めることができる。
図10に戻り、結合回路45が、フォーマット変換された8組の近傍マトリクス画像データを第2のDMAメモリDMA_M1に書込むことで、8組のデータを結合する。そして、制御回路CNTが第2のDMAメモリDMA_M1内の8組の近傍マトリクス画像データを第2の高速メモリSRAMに転置しながら(または転置せずに)書き込む。
以上の通り、本実施の形態によれば、DMA内のフォーマット変換器が、二次元の画像データにパディングを挿入した近傍マトリクスの画像データを高速に生成する。つまり、畳込み演算の演算データである近傍マトリクス画像データの生成処理を効率的に行う。その結果、DNN内の畳み込み層(コンボリュージョン層)における演算効率を高めることができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、
前記第1のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第2のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサ。
(付記2)
前記フォーマット変換器は、更に、前記読み出された画像データを入力し、圧縮マスクのマスク値に応じて、前記入力した画像データの複数の画素データから前記近傍マトリクス画像データに含まれる画素データを選択して圧縮画像データを生成する圧縮演算器を有し、
前記パディング演算器は、前記読み出された画像データとして前記圧縮画像データを入力し、前記近傍マトリクス画像データを出力する、付記1に記載のプロセッサ。
(付記3)
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを結合する結合回路と、前記結合された複数組の近傍マトリクス画像データそれぞれに含まれる画素データ及びパディングデータを転置し演算器の入力構成に対応したデータフォーマットを有する入力用近傍マトリクス画像データを生成する転置回路とを有する、付記1に記載のプロセッサ。
(付記4)
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを、前記近傍マトリクスの画素数より少ない列数の行列状データフォーマットにラスタスキャン方向に詰めて配置して入力用近傍マトリクス画像データを生成する結合回路を有し、
前記書込回路は、前記入力用近傍マトリクス画像データを前記第2のメモリに書込む、付記1に記載のプロセッサ。
(付記5)
前記パディング演算器は、更に、前記近傍マトリクス画像データのデータフォーマットに、前記パディングマスクのマスク値に応じて選択した前記画素データ及びパディングデータを下位アドレス側に詰めて配置し、残りの上位アドレス側に0値を配置する、付記1に記載のプロセッサ。
(付記6)
前記近傍マトリクス画像データの前記選択された画素データ及びパディングデータの合計数が、前記係数フィルタの係数の合計数と同じである、付記5に記載のプロセッサ。
(付記7)
前記フォーマット変換器は、更に、
前記パディングマスクを格納するパディングマスクレジスタと、
前記パディングマスクレジスタに前記パディングマスクを設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記パディングマスクのマスク値を変更、付記1に記載のプロセッサ。
(付記8)
前記フォーマット変換器は、更に、
前記圧縮マスクを格納する圧縮マスクレジスタと、
前記パディングマスクを格納するパディングマスクレジスタと、
前記圧縮マスクレジスタに前記圧縮マスクを、前記パディングマスクレジスタに前記パディングマスクをそれぞれ設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記圧縮マスク及び前記パディングマスクそれぞれのマスク値を変更する、付記2に記載のプロセッサ。
(付記9)
前記パディングマスクのマスク値は、前記画素データと、前記パディングデータと、0値のいずれかを選択する第1、第2、第3の値を有する、付記7または8に記載のプロセッサ。
(付記10)
前記パディングマスクのマスク値は、前記画素データと、前記パディングデータと、前回の出力データと、0値のいずれかを選択する第1、第2、第3、第4の値を有する、付記7または8に記載のプロセッサ。
(付記11)
前記フォーマット変換器は、前記パディング演算器を複数組有し、前記複数組のパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、付記1に記載のプロセッサ。
(付記12)
前記フォーマット変換器は、前記圧縮演算器と前記パディング演算器を複数組有し、前記複数組の圧縮演算器とパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、付記2に記載のプロセッサ。
(付記13)
更に、前記近傍マトリクス画像データを入力し、前記近傍マトリクス画像データ内の複数の画素データに係数フィルタ内の対応する係数をそれぞれ乗算し加算する積和演算器を有する付記1に記載のプロセッサ。
(付記14)
プロセッサと、
前記プロセッサがアクセスするメインメモリとを有し、
前記プロセッサは、
二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、
前記第1のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第2のメモリに書込む書込回路とを有するフォーマット変換器とを有する、情報処理装置。
(付記15)
二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、近傍マトリクス画像データを生成するフォーマット変換器とを有するプロセッサの動作方法であって、
前記フォーマット変換器が、
前記第1のメモリから前記画像データを読み出し、
前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む前記近傍マトリクス画像データを生成し、
前記近傍マトリクス画像データを第2のメモリに書込む、プロセッサの動作方法。
IM_D:画像データ
X0-X168:画素データ
N_MX:近傍マトリクス
FIT:係数フィルタ、係数マトリクス
N_MX_D:近傍マトリクス画像データ(近傍マトリクスの画素データからなる画像データ)
CORE:コア(積和演算器を内蔵)
FMT_C:データフォーマット変換回路
DMA:ダイレクトメモリアクセス装置
SRAM_0:第1のメモリ
SRAM_1:第2のメモリ
CNT:制御回路、読み出し回路、書き込み回路
40:圧縮マスクレジスタ
41:圧縮演算器
42:パディングマスクレジスタ
43:パディング演算器
45:結合回路、コンカテネーション回路
TRSP:転置回路
SoP:積和演算器

Claims (11)

  1. 二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、
    近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、
    前記第1のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第2のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサ。
  2. 前記フォーマット変換器は、更に、前記読み出された画像データを入力し、圧縮マスクのマスク値に応じて、前記入力した画像データの複数の画素データから前記近傍マトリクス画像データに含まれる画素データを選択して圧縮画像データを生成する圧縮演算器を有し、
    前記パディング演算器は、前記読み出された画像データとして前記圧縮画像データを入力し、前記近傍マトリクス画像データを出力する、請求項1に記載のプロセッサ。
  3. 前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを結合する結合回路と、前記結合された複数組の近傍マトリクス画像データそれぞれに含まれる画素データ及びパディングデータを転置し演算器の入力構成に対応したデータフォーマットを有する入力用近傍マトリクス画像データを生成する転置回路とを有する、請求項1に記載のプロセッサ。
  4. 前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを、前記近傍マトリクスの画素数より少ない列数の行列状データフォーマットにラスタスキャン方向に詰めて配置して入力用近傍マトリクス画像データを生成する結合回路を有し、
    前記書込回路は、前記入力用近傍マトリクス画像データを前記第2のメモリに書込む、請求項1に記載のプロセッサ。
  5. 前記フォーマット変換器は、更に、
    前記パディングマスクを格納するパディングマスクレジスタと、
    前記パディングマスクレジスタに前記パディングマスクを設定する制御ユニットを有し、
    前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記パディングマスクのマスク値を変更、請求項1に記載のプロセッサ。
  6. 前記フォーマット変換器は、更に、
    前記圧縮マスクを格納する圧縮マスクレジスタと、
    前記パディングマスクを格納するパディングマスクレジスタと、
    前記圧縮マスクレジスタに前記圧縮マスクを、前記パディングマスクレジスタに前記パディングマスクをそれぞれ設定する制御ユニットを有し、
    前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記圧縮マスク及び前記パディングマスクそれぞれのマスク値を変更する、請求項2に記載のプロセッサ。
  7. 前記フォーマット変換器は、前記パディング演算器を複数組有し、前記複数組のパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、請求項1に記載のプロセッサ。
  8. 前記フォーマット変換器は、前記圧縮演算器と前記パディング演算器を複数組有し、前記複数組の圧縮演算器とパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、請求項2に記載のプロセッサ。
  9. 更に、前記近傍マトリクス画像データを入力し、前記近傍マトリクス画像データ内の複数の画素データに係数フィルタ内の対応する係数をそれぞれ乗算し加算する積和演算器を有する請求項1に記載のプロセッサ。
  10. プロセッサと、
    前記プロセッサがアクセスするメインメモリとを有し、
    前記プロセッサは、
    二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、
    近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、
    前記第1のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第2のメモリに書込む書込回路とを有するフォーマット変換器とを有する、情報処理装置。
  11. 二次元配列された複数画素の画素データを有する画像データを記憶する第1のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第2のメモリと、近傍マトリクス画像データを生成するフォーマット変換器とを有するプロセッサの動作方法であって、
    前記フォーマット変換器が、
    前記第1のメモリから前記画像データを読み出し、
    前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む前記近傍マトリクス画像データを生成し、
    前記近傍マトリクス画像データを第2のメモリに書込む、プロセッサの動作方法。
JP2017013398A 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法 Active JP6767660B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017013398A JP6767660B2 (ja) 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法
PCT/JP2018/000124 WO2018139177A1 (ja) 2017-01-27 2018-01-05 プロセッサ、情報処理装置及びプロセッサの動作方法
US16/288,185 US10769749B2 (en) 2017-01-27 2019-02-28 Processor, information processing apparatus, and operation method of processor

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2018120549A JP2018120549A (ja) 2018-08-02
JP6767660B2 true JP6767660B2 (ja) 2020-10-14

Family

ID=62979313

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US10769749B2 (ja)
JP (1) JP6767660B2 (ja)
WO (1) WO2018139177A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102548718B1 (ko) * 2017-06-07 2023-06-28 삼성전자주식회사 전자 장치 및 그 제어 방법
CN116541647A (zh) * 2018-10-09 2023-08-04 华为技术有限公司 运算加速器、处理方法及相关设备
JP7052678B2 (ja) * 2018-11-06 2022-04-12 株式会社デンソー 畳込み演算方法
WO2021046713A1 (en) * 2019-09-10 2021-03-18 Huawei Technologies Co., Ltd. Method and apparatus for generating architecture specific convolution gradient kernels
KR20210031296A (ko) 2019-09-11 2021-03-19 삼성전자주식회사 전자 장치 및 그 제어 방법
GB2594972B (en) * 2020-05-13 2022-08-10 Advanced Risc Mach Ltd Masking row or column positions for matrix processing
GB2594971B (en) * 2020-05-13 2022-10-05 Advanced Risc Mach Ltd Variable position shift for matrix processing
CN112801864A (zh) * 2021-02-26 2021-05-14 翱捷智能科技(上海)有限公司 一种在深度学习硬件中的图像填充方法及装置
CN112862724B (zh) * 2021-03-12 2022-09-09 上海壁仞智能科技有限公司 用于计算的方法、计算设备和计算机可读存储介质
CN113570612B (zh) * 2021-09-23 2021-12-17 苏州浪潮智能科技有限公司 一种图像处理方法、装置及设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2928301B2 (ja) 1989-12-25 1999-08-03 株式会社日立製作所 ベクトル処理装置
JP3553376B2 (ja) * 1998-06-30 2004-08-11 シャープ株式会社 並列画像処理プロセッサ
US7880769B2 (en) 2004-02-13 2011-02-01 Qualcomm Incorporated Adaptive image stabilization
JP2006094160A (ja) * 2004-09-24 2006-04-06 Sony Corp 画像処理方法及び画像処理装置並びに画像処理プログラム
JP4992753B2 (ja) * 2008-02-25 2012-08-08 セイコーエプソン株式会社 画像処理装置、画像処理方法
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
JP2011193395A (ja) * 2010-03-16 2011-09-29 Canon Inc 画像処理装置、制御方法、及びプログラム
JP5665508B2 (ja) * 2010-11-30 2015-02-04 キヤノン株式会社 画像処理装置及び方法、並びにプログラム及び記憶媒体
US20120254592A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location

Also Published As

Publication number Publication date
US10769749B2 (en) 2020-09-08
US20190197656A1 (en) 2019-06-27
JP2018120549A (ja) 2018-08-02
WO2018139177A1 (ja) 2018-08-02

Similar Documents

Publication Publication Date Title
JP6767660B2 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
JP6864224B2 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
KR102492477B1 (ko) 행렬 곱셈기
CN109165041B (zh) 神经网络处理装置及其执行向量范数指令的方法
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
JP7315317B2 (ja) プロセッサおよびプロセッサのデータ転送方法
CN109871510B (zh) 二维卷积运算处理方法、系统、设备及计算机存储介质
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
CN112416433B (zh) 一种数据处理装置、数据处理方法及相关产品
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
WO2020014893A1 (zh) 反卷积实现方法及相关产品
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
WO2022179075A1 (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN107305486B (zh) 一种神经网络maxout层计算装置
CN115221102B (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
JP6802480B2 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
CN116010313A (zh) 一种通用、可配置的图像滤波计算多行输出系统和方法
CN112766471B (zh) 运算装置及相关产品
CN112766473B (zh) 运算装置及相关产品
EP4148627A1 (en) Neural network scheduling method and apparatus
WO2023087698A1 (zh) 执行卷积运算的计算装置、方法及相关产品
JP7495533B2 (ja) ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品
CN116362304A (zh) 数据处理装置、数据处理方法及相关装置
CN118055269A (zh) 图像转码方法、装置、处理器芯片及可读存储介质
CN116362303A (zh) 数据处理装置、数据处理方法及相关装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200831

R150 Certificate of patent or registration of utility model

Ref document number: 6767660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150