(57)【要約】【課題】畳込み演算の近傍マトリクス画像データの生成処理を効率的に行う。【解決手段】二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、第１のメモリから前記画像データを読み出す読出回路と、読み出された画像データを入力し、パディングマスクのマスク値に応じて、入力した画像データの画素データ及び複数画素の周囲に挿入されるパディングデータを選択し、画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有するプロセッサ。【選択図】図９
2018120549.tif 000002
【特許請求の範囲】
【請求項１】
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、
前記第１のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサ。
【請求項２】
前記フォーマット変換器は、更に、前記読み出された画像データを入力し、圧縮マスクのマスク値に応じて、前記入力した画像データの複数の画素データから前記近傍マトリクス画像データに含まれる画素データを選択して圧縮画像データを生成する圧縮演算器を有し、
前記パディング演算器は、前記読み出された画像データとして前記圧縮画像データを入力し、前記近傍マトリクス画像データを出力する、請求項１に記載のプロセッサ。
【請求項３】
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを結合する結合回路と、前記結合された複数組の近傍マトリクス画像データそれぞれに含まれる画素データ及びパディングデータを転置し演算器の入力構成に対応したデータフォーマットを有する入力用近傍マトリクス画像データを生成する転置回路とを有する、請求項１に記載のプロセッサ。
【請求項４】
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを、前記近傍マトリクスの画素数より少ない列数の行列状データフォーマットにラスタスキャン方向に詰めて配置して入力用近傍マトリクス画像データを生成する結合回路を有し、
前記書込回路は、前記入力用近傍マトリクス画像データを前記第２のメモリに書込む、請求項１に記載のプロセッサ。
【請求項５】
前記フォーマット変換器は、更に、
前記パディングマスクを格納するパディングマスクレジスタと、
前記パディングマスクレジスタに前記パディングマスクを設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記パディングマスクのマスク値を変更、請求項１に記載のプロセッサ。
【請求項６】
前記フォーマット変換器は、更に、
前記圧縮マスクを格納する圧縮マスクレジスタと、
前記パディングマスクを格納するパディングマスクレジスタと、
前記圧縮マスクレジスタに前記圧縮マスクを、前記パディングマスクレジスタに前記パディングマスクをそれぞれ設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記圧縮マスク及び前記パディングマスクそれぞれのマスク値を変更する、請求項２に記載のプロセッサ。
【請求項７】
前記フォーマット変換器は、前記パディング演算器を複数組有し、前記複数組のパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、請求項１に記載のプロセッサ。
【請求項８】
前記フォーマット変換器は、前記圧縮演算器と前記パディング演算器を複数組有し、前記複数組の圧縮演算器とパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、請求項２に記載のプロセッサ。
【請求項９】
更に、前記近傍マトリクス画像データを入力し、前記近傍マトリクス画像データ内の複数の画素データに係数フィルタ内の対応する係数をそれぞれ乗算し加算する積和演算器を有する請求項１に記載のプロセッサ。
【請求項１０】
プロセッサと、
前記プロセッサがアクセスするメインメモリとを有し、
前記プロセッサは、
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、
前記第１のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有する、情報処理装置。
【請求項１１】
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、近傍マトリクス画像データを生成するフォーマット変換器とを有するプロセッサの動作方法であって、
前記フォーマット変換器が、
前記第１のメモリから前記画像データを読み出し、
前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む前記近傍マトリクス画像データを生成し、
前記近傍マトリクス画像データを第２のメモリに書込む、プロセッサの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，プロセッサ、情報処理装置及びプロセッサの動作方法に関する。
【背景技術】
【０００２】
ディープラーニング（以下DL1:Deep Learning）は、情報処理装置内のプロセッサの演算処理により実行される。DLは、階層の深いニューラルネットワーク（以下DNN：Deep Neural Network）を利用したアルゴリズムの総称である。そして、DNNの中でも良く利用されるのが、コンボリュージョン・ニューラルネットワーク（CNN：Convolution Neural Network）である。CNNは、例えば画像データの特徴を判定するDNNとして広く利用される。
【０００３】
画像データの特徴を判定するCNNは、画像データを入力しフィルタを利用した畳込み演算を行い画像データの特徴（例えばエッジの特徴など）を検出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−０６３５２２号公報
【特許文献２】特開２０１６−０２９５９８号公報
【特許文献３】特開２００９−３０３２３６号公報
【特許文献４】特開平３−１９６２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画像データは、二次元の画素の色データ（以下画素データ）である。一方、係数マトリクスである係数フィルタによる畳込み演算は、画像データの周囲にパディング（余白）を挿入したパディング拡張画像データから、注目画素を中心とする近傍マトリクスの画素データを抽出して近傍マトリクス画像データを生成する処理と、抽出した近傍マトリクス画素データに係数フィルタの重みをそれぞれ乗算し加算する積和演算処理とを有する。積和演算は、近傍マトリクスの中心画素である注目画素のフィルタリング結果を生成する。畳込み演算は、係数フィルタの位置をラスタスキャン方向に移動しながら、上記の近傍マトリクス画像データの生成と積和演算とを繰り返す。
【０００６】
上記の近傍マトリクス画像データの生成処理は、画像データを記憶する第１のメモリからのランダムな読み出しと、近傍マトリクス画像データを記憶する第２のメモリへの書き込み処理を必要とする。この近傍マトリクス画像データの生成処理は、畳込み演算の前処理として非常に工数がかかる。しかも、DNNの演算は非常の多くの畳込み演算が含まれるので、近傍マトリクス画像データの生成処理を省力化することは、DNNの演算工数の削減に大きく寄与する。
【０００７】
そこで，一つの実施の形態の目的は，畳込み演算の近傍マトリクス画像データの生成処理を効率的に行うプロセッサ、情報処理装置及びプロセッサの動作方法を提供することにある。
【課題を解決するための手段】
【０００８】
一つの実施の形態は，二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、前記第１のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサである。
【発明の効果】
【０００９】
一つの実施の形態によれば，畳込み演算の近傍マトリクス画像データの生成処理を効率的に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態における情報処理装置（ディープラーニングサーバ）の構成を示す図である。
【図２】ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。
【図３】グラフィックプロセッサ（GPU）１１の構成とGPU内のコアCOREの構成とを示す図である。
【図４】DNNの一例を示す図である。
【図５】画像データと係数フィルタの積和演算の第1の例を示す図である。
【図６】画像データと係数フィルタの積和演算の第２の例を示す図である。
【図７】２つの積和演算器により並列処理する例を示す図である。
【図８】本実施の形態におけるグラフィックプロセッサGPU（DL装置）の構成を示す図である。
【図９】フォーマット変換器FMT_Cの構成を示す図である。
【図１０】フォーマット変換器の動作を示すフローチャート図である。
【図１１】画像データを示す図である。
【図１２】図１１の１３行１３列の画像データの場合の近傍マトリクス画像データとフィルタの係数（重みW）の一例を示す図である。
【図１３】第１のフォーマット変換を説明する図である。
【図１４】第２のフォーマット変換を説明する図である。
【図１５】圧縮演算器の構成を示す図である。
【図１６】パディング演算器を示す図である。
【図１７】注目画素に対応する圧縮マスクとパディングマスクを示す図である。
【図１８】注目画素に対応する圧縮マスクとパディングマスクを示す図である。
【図１９】積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。
【図２０】積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。
【図２１】第１のDMAメモリDMA_M0の画素データの取得とフォーマット変換処理の関係を示す図である。
【図２２】積和演算器に入力する入力用近傍マトリクスデータの生成手順の第２例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本実施の形態における情報処理装置（ディープラーニングサーバ）の構成を示す図である。サーバ１は、ネットワークを介してセンシング装置群３０及び端末装置３２と通信可能である。センシング装置群３０は、例えば撮像素子により画像を撮像して画像データを生成し、画像データをサーバ１に送信する。端末装置３２は、画像データの特徴の判定結果をサーバ１から受信して出力する。
【００１２】
サーバ１は、汎用プロセッサであるCPU（Central processing Unit）１０と、グラフィックプロセッサであるGPU（Graphic Processing Unit）１１とを有する。サーバ１は、さらに、DRAMなどのメインメモリ１２と、NIC（Network Interface Card）などのネットワークインターフェース１４と、ハードディスクやSSD（Solid Storage Device）などの大容量の補助メモリ２０と、それらを接続するバスBUSとを有する。
【００１３】
補助メモリ２０は、ディープラーニング演算プログラム２２と、ディープラーニングパラメータ２４などを記憶する。補助メモリ２０は、上記プログラムやパラメータに加えて、図示しないオペレーティングシステム（OS）や、各種ミドルウエアプログラムなども記憶する。プロセッサ１０及びグラフィックプロセッサ１１は、上記のプログラムやパラメータをメインメモリ１２に展開し、パラメータに基づいてプログラムを実行する。
【００１４】
図２は、ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。DL演算プログラムは、例えばDNNの演算を実行するプログラムである。プロセッサ１０，１１は、DL演算プログラムを実行して、学習モードと判定モードの処理を実行する。DLとして、画像データの特徴を判定するDNNを例にして説明する。
【００１５】
学習モードでは、プロセッサ１０、１１は、演算パラメータ（フィルタの重み）の初期値をメインメモリ１２から読み出し、プロセッサ１１内の高速メモリSRAMに書込む（S10）。さらに、プロセッサは、センシング装置群３０から送信された画像データをメインメモリ１２から読み出し高速メモリSRAMに書込む（S11）。そして、プロセッサは、画像データをフォーマット変換して演算器入力用の近傍マトリクス画像データ（演算処理データ）を生成し（S12）、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層（出力層）の演算処理を行う（S13）。この演算は、所定数の画像データについてそれぞれ行われる。演算結果は例えば画像データが数字０〜１のうちいずれかなどである。
【００１６】
更に、プロセッサ１０、１１は、演算結果と画像データの正解データである教師データとの差分が閾値以下か否か判定し（S14）、差分が閾値以下でない場合（S14のNO）、演算パラメータを差分に基づいてDNNのバックワード演算を実行し演算パラメータを更新する（S15）。そして、更新された演算パラメータで、上記の工程S11-S13を繰り返す。ここで演算結果と教師データとの差分は、例えば１０００枚の画像データについて演算した１０００個の演算結果と、１０００個の教師データそれぞれの差分の合計値などである。
【００１７】
上記の差分が閾値以下になったとき（S14のYES）、演算パラメータが最適値に設定されたと判断して、学習モードを終了する。そして、演算パラメータの最適値によって、その後の判定モードでの演算処理が行われる。
【００１８】
判定モードでは、プロセッサ１０、１１は、判定対象の画像データをメインメモリから読み出し（S16）、画像データをフォーマット変換して演算器入力用の近傍マトリクス画像データを生成し（S17）、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層の演算処理を行う（S18）。プロセッサ１０，１１は、上記の判定処理を、判定対象の画像データが終了するまで繰り返す（S19）。判定結果は、端末装置３２に送信され出力される。
【００１９】
図３は、グラフィックプロセッサ（GPU）１１の構成とGPU内のコアCOREの構成とを示す図である。GPU１１は、メインメモリM_MEMにアクセス可能である。GPUは、例えば8個のプロセッサコアCOREと、それぞれのプロセッサコアCOREに対応して配置された複数の高速メモリSRAMと、内部バスI_BUSと、メインメモリM_MEMとのアクセス制御を行うメモリコントローラMCとを有する。GPUは、図３に示されていない、各コアCORE内のL1キャッシュメモリと、８つのコア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以外に、フォーマット変換を専用に行うフォーマット変換ユニットを設けても良い。
【００２３】
図４は、DNNの一例を示す図である。画像データの判定処理を行うDNNは、入力データである画像データIM_Dが入力される入力層INPUT_Lと、複数組のコンボリュージョン層CNV_L及びプーリング層PL_Lと、全結合層C_Lと、ソフトマックス層（出力層）OUT_Lとを有する。
【００２４】
コンボリュージョン層CNV_Lは、画像データIM_Dを係数フィルタFLTでフィルタリングしてある特徴量を有する画像データを生成する。プーリング層PL_Lは、例えばコンボリュージョン層のノードの値の代表値（例えば最大値）を選択する。そして、出力層OUT_Lには、前述したように、例えば画像データ内の数字の判定結果（０〜９のいずれか）が出力される。
【００２５】
コンボリュージョン層CNV_Lは、M×Nの二次元画素マトリクスの画素データを有する画像データIM_Dの例えば３×３の近傍マトリクスの画素データと、近傍マトリクスと同じ３×３の係数フィルタFLTの係数データとをそれぞれ乗算し乗算結果を加算する積和演算を行い、近傍マトリクスの中央の注目画素の画素データを生成する。このフィルタリング処理を、係数フィルタをラスタスキャン方向にずらしながら画像データIM_Dの全ての画素に対して演算を行う。これが畳込み演算である。
【００２６】
近傍マトリクスの画素データがXi、係数フィルタの係数データがWi（但しi=0-8）の場合、フィルタリングの畳込み演算式は次のとおりである。
Xi' = Σ（Xi * Wi）        （１）
但し、Xiは画素データ、Wiは係数であり、Σはi = 0-8 だけ加算することを示す。
【００２７】
即ち、画像データIM_Dの注目画素がX6の場合は、式（１）によるフィルタリング後の画素データX6'は、次のとおりである。つまり、畳込み演算は、近傍マトリクスの画素データと係数フィルタの係数データとの積和演算である。
X6' = X0*W0 + X1*W1 + X2*W2 + X5*W5 + X6*W6 + X7*W7 + X10*W10 + X11*W11 + X12*W12
【００２８】
上記の式（１）の畳込み演算を行う場合、画像データから演算器に入力するための近傍マトリクスの画像データ（近傍マトリクス画像データ）に変換する処理が必要になる。この画像データのフォーマット変換について以下にて説明する。
【００２９】
図５は、画像データと係数フィルタの積和演算の第1の例を示す図である。入力画像データIN_DATAである５×５の画像データの注目画素X0を、３×３の係数フィルタFLTでフィルタリングする積和演算は、注目画素X0を中心とする３×３の近傍マトリクス画像データの9つの画素データと、係数フィルタFLTの係数W0-W8との積和演算である。この場合、注目画素X0が入力画像データIN_DATAの最左上画素であるので、5個のパディングデータを挿入する必要がある。
【００３０】
図５には、注目画素X0についての積和演算のプログラム例が示される。このプログラム例によれば、係数フィルタの行rowのアドレス−１，０，＋１と列colのアドレス−１，０，＋１それぞれについて、row<0 OR col<0の場合は、パディングデータが「０」であるので、乗算値out[0]=0となり、それ以外の場合は、乗算値out[0]は以下のとおりとなる。
out[0] = 画素データ*係数データ = in[col+row*5]*w[col+1+(row+1)*3]
プログラムでは、この乗算値を累積（+=）している。
【００３１】
このように、積和演算に入力される近傍マトリクス画像データにパディングデータが挿入される必要があるので、ループ内に条件分岐が発生する。このような演算は、プロセッサ１１の演算器による処理効率を低下させる。
【００３２】
［本実施の形態］
図６は、画像データと係数フィルタの積和演算の第２の例を示す図である。この例では、入力画像データIN_DATAである画像データの周囲にパディングデータPが挿入済みである。このように、パディングデータが挿入済みの近傍マトリクス画像データが演算器に入力される場合、演算器の処理は、図6中に示したプログラム例のように条件分岐がない。
【００３３】
すなわち、このプログラム例では、係数フィルタの行rowのアドレス−１，０，＋１と列colのアドレス−１，０，＋１それぞれについて、乗算値out[0]は以下のとおりとなる。
out[0] = 画素データ*係数データ = in[col+(row+2)*5]*w[col+1+(row+1)*3]
プログラムでは、この乗算値を累積（+=）している。
【００３４】
このように、積和演算器に入力する近傍マトリクス画像データがパディングデータ挿入済みであれば、演算器による積和演算の処理効率を上げることができる。
【００３５】
図７は、２つの積和演算器により並列処理する例を示す図である。この例では、図６と同様に入力画像データIN_DATAとしてパディングデータが挿入済みの画像データが演算器に入力される。そして、パディングデータが挿入済みの２組の近傍マトリクス画像データを、２つの積和演算器SoP（Sum of Product）で並列演算する。その場合のプログラム例によれば、ループ内には条件分岐はなく、以下の２つの積和演算式があるだけである。
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]
したがって、図７に示したようにパディングデータ挿入済みの近傍マトリクス画像データを乗算器に入力することが望ましい。
【００３６】
図８は、本実施の形態におけるグラフィックプロセッサGPU（DL装置）の構成を示す図である。図８のGPUは、図３の構成を簡略化した構成を示している。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は、積和演算器を内蔵する。積和演算器は、フォーマット変換器が生成した近傍マトリクス画像データと、係数フィルタの係数データとを乗算しそれぞれ加算する。
【００３９】
図９は、フォーマット変換器FMT_Cの構成を示す図である。フォーマット変換器FMT_Cは、制御バスC_BUSの制御バスインターフェースC_BUS_IFと、制御データを格納する制御データレジスタCNT_REGと、ステートマシンのような制御回路CNTとを有する。制御バスC_BUSには図示しないコアから制御データが転送され、制御レジスタに制御データが格納される。
【００４０】
制御回路CNTは、第１の高速メモリSRAM_0から第２の高速メモリSRAM_1への画像データの転送の制御を行う。また、制御回路CNTは、画像データのフォーマット変換の場合、前記画像データの転送制御に加えて、各マスクレジスタへのマスク値の設定と、フォーマット変換の開始と終了の制御を行う。つまり、制御回路CNTは、第１の高速メモリSRAM_0から画像データを読み出し、フォーマット変換し、第２の高速メモリSRAM_1へ書き込む。このように、制御回路CNTは、画像データのデータ転送中にフォーマット変換を行う。制御回路は、データ転送を行うとき、画像データのアドレスを指定して高速メモリSRAMへのアクセスを行う。そして、制御回路は、画像データのアドレスに対応して、フォーマット変換に必要なマスクレジスタのマスク値を設定する。
【００４１】
フォーマット変換器FMT_Cは、更に、第１のDMAメモリDMA_M0と、第２のDMAメモリDMA_M1と、それらメモリの間にパイプライン構成に配置された圧縮演算器４１、パディング演算器４３、コンカテネーション（結合回路）４５を有する。これらの演算器４１、４３及び結合回路４５は、複数組設けられ、複数組の近傍マトリクス画像データのフォーマット変換を並列に行う。また、圧縮マスクCmaskを設定する圧縮マスクレジスタ４０、パディングマスクPmaskを設定するパディングマスクレジスタ４２と、結合回路のパラメータを設定する結合回路パラメータレジスタ４４とを有する。そして、画像データの転置を行う転置回路TRSPと、内部バスI_BUSのデータバスD_BUSと接続されるデータバスインターフェースD_BUS_IFとを有する。
【００４２】
図１０は、フォーマット変換器の動作を示すフローチャート図である。このフローチャート図に基づいてフォーマット変換器の動作を説明すると共に、圧縮マスクとパディングマスクの具体例を示して画像データを入力用近傍マトリクス画像データに変換する動作を示す。
【００４３】
まず、GPUのコアにより、DMA内の制御データレジスタCNT_REGに、画像データ転送要求フラグと、データ転送のパラメータと、画像データ転送中に実行するフォーマット変換のパラメータが設定される（S30）。データ転送のパラメータは、例えば転送元高速メモリのアドレスとデータ量及び転送先高速メモリのアドレスなどである。また、フォーマット変換のパラメータは、例えば、注目画素の識別情報（画像データの行列番号など）、係数フィルタの係数、パディング数、パディングデータ、積和演算器の入力データのフォーマット情報などである。
【００４４】
この設定に応答して、制御回路CNTは、注目画素の行列番号に基づく圧縮マスクCmask、パディングマスクPmask、結合回路パラメータを、それぞれのレジスタ４０、４２、４４に設定する（S31）。そして、制御回路CNTは、転送元の第1の高速メモリSRAM_0から転送先の第２の高速メモリSRAM_1への画像データの転送を開始する（S32）。
【００４５】
画像データの転送処理では、制御回路CNTが転送元の第１の高速メモリSRAM_0から画像データを読み出し第１のDMAメモリDMA_M0に書き込む（S33）。DMAメモリDMA_M0,DMA_M1は画像データを一時的に格納する入力バッファである。
【００４６】
次に、DMAメモリDMA_M0内の画像データが圧縮演算器４１に転送され、圧縮演算器４１が圧縮マスクCmaskのマスク値に基づいて近傍マトリクスの画素データを抽出し（S34）、パディング演算器４３に転送する。そして、パディング演算器４３が、パディングマスクPmaskのマスク値に基づいて抽出した画素データにパディングデータを挿入し、カーネルサイズに対応する近傍マトリクス画像データを生成する（S35）。
【００４７】
図１１は、画像データを示す図である。メインメモリM_MEM内には、例えば３２ワードの画像データがメモリの各行に記憶される。そして、１３行１３列の画像データは１６９個の画素データX0-X168を有する。その結果、図１１のメインメモリM＿MEM内には、６行わたり画素データX0-X31, X32-X63, X64-X95, X96-X127, X128-X159,X160-X168 が記憶される。図１１のメインメモリM_MEMの第1行には列アドレス番号が示される。
【００４８】
メインメモリの画素データは、予めメモリコントローラMCを介して転送元の高速メモリSRAM_0に書き込まれる。メインメモリM_MEMとメモリコントローラMCの間のデータバス幅は３２ワードであるので、メモリコントローラで３２ワードの画素データが内部バスI_BUSのバス幅１６ワードに変換され、転送元の高速メモリSRAM_0に記憶される。
【００４９】
一方、図１１にはパディングが挿入された画像データが示される。画像データは１３行１３列の画素データX0-X168を有するので、その周囲にパディング数1のパディングデータPが挿入されると、１５行１５列の画像データになる。そして、畳込み演算では、３行３列の係数フィルタFLTをラスタスキャン方向に移動しながら、３行３列の近傍マトリクス画像データと係数フィルタの係数の積和演算を繰り返す。
【００５０】
図１２は、図１１の１３行１３列の画像データの場合の近傍マトリクス画像データとフィルタの係数（重みW）の一例を示す図である。図１２には、３行３列の係数フィルタFLTと、注目画素X0,X1,X2,X13,X14,X15に対応する近傍マトリクスN_MXとが示される。係数フィルタFLTは９つの係数（重み）W0-W8を有する。また、近傍マトリクスは注目画素を中心とし、係数フィルタと同じ形状で同じ数の画素データを有する。
【００５１】
一方、注目画素X0の近傍マトリクスN_MXは、１行目に３つのパディングデータP、２行目に１つのパディングデータPと２つの画素データX0,X1、３行目に１つのパディングデータPと２つの画素データX13,X14を有する。したがって、注目画素X0の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,P,P,P,X0,X1,P,X13,X14]となる。
【００５２】
更に、注目画素X1の近傍マトリクスN_MXは、１行目に３つのパディングデータP、２行目と３行目にそれぞれ３つの画素データX0-X2, X13-X15を有する。よって、注目画素X1の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,P,P,X0,X1,X2,X13,X14,X16]となる。注目画素X2もX1と同様である。
【００５３】
次に、注目画素X13の近傍マトリクスN_MXは、１行目に１つのパディングデータPと２つの画素データX0,X1、２行目に１つのパディングデータPと２つの画素データX13,X14、３行目に１つのパディングデータPと２つの画素データX26,X27を有する。したがって、注目画素X13の近傍マトリクスN_MXのデータ列N_MX_Dは、[P,X0,X1,P,X13,X14,P,X26,X27]となる。
【００５４】
更に、注目画素X14の近傍マトリクスN_MXは、１-3行目にそれぞれ３つの画素データX0-X2, X13-X15, X26-X28を有する。よって、注目画素X1の近傍マトリクスN_MXのデータ列N_MX_Dは、[X0,X1,X2,X13,X14,X15,X26,X27,X28]となる。注目画素X15もX14と同様である。
【００５５】
画像データのフォーマット変換は、図１１のメインメモリの画像データを、図１２に示した各近傍マトリクスの９個の画素データのデータ列N_MX_Dに変換する処理である。この変換処理はDMA内の圧縮演算器とパディング演算器により行われる。
【００５６】
図１３は、第１のフォーマット変換を説明する図である。図１３では、圧縮演算器４１が、第１のDMAメモリDMA_0内の３２ワードの画像データdata0から３２ビットの圧縮マスクCmaskにより近傍マトリクス画像データに含めるべき画素データを抽出する。図１１のように１３行１３列の画像データの場合、最大で３６ワードの画素データから近傍マトリクスの画素データを抽出する必要があるが、図１３では簡単化して、３２ワードの画素データから画素データを抽出する例で説明する。３２ワードの画素データ（それぞれ８ビットの階調データ）は、アドレスADDが0-31の画素データである。
【００５７】
まず、画像データdata0は画素データX0-X31を有し、圧縮マスクCmaskは３２のマスク値を有する。圧縮マスクのマスク値は１ビットであり「０」がマスク、「１」がノンマスクである。圧縮演算器４１は、圧縮マスクCmaskのマスク値が「０」の場合、画像データdata0の画素データをマスクし（何も出力せず）、マスク値が「１」の場合、画像データdata0の画素データを選択し出力する。そして、選択した画素データを画像データdata1の例えば下位アドレス側（上位アドレス側でも良い）に詰めて配置する。図１３では、画像データdata1として、画素データX0,X1,X13,X14が抽出され、残りの上位アドレス側は全て「０」にされる。
【００５８】
次に、上記の圧縮演算器により、画像データdata1は画素データX0,X1,X13,X14と２８ワードの「０」を有する。そして、パディングマスクのマスク値は２ビットであり、「０」がマスク、「１」がノンマスク、「２」がリザーブ、「３」がパディングデータ選択である。パディング演算器４３は、パディングマスクPmaskのマスク値が「０」の場合、画像データdata1の画素データをマスクし（つまり何も出力せず）、マスク値が「１」の場合、画像データdata1の画素データを選択し、マスク値が「３」の場合パディングデータPを挿入する。その結果、フォーマット変換された画像データdata2は、 [P,P,P,P,X0,X1,P,X13,X14]と２３ワードの[0]となる。これは、注目画素X0の近傍マトリクスN_MXのデータ列N_MX_Dと一致する。圧縮演算器４１とパディング演算器４３の構成については後述する。
【００５９】
図１４は、第２のフォーマット変換を説明する図である。第２のフォーマット変換では、圧縮マスクCmaskと圧縮演算器は第１のフォーマット変換(図１３)と同じであるが、パディングマスクPmaskとパディング演算器が異なる。具体的には、演算器は、パディングマスクPmaskのマスク値が「２」の場合、１クロック前の画素データをコピーして出力する。
【００６０】
第２のフォーマット変換では、圧縮演算器の動作は第１のフォーマット変換と同じである。一方、パディング演算器の動作は、パディングマスクPmaskのマスク値が「２」の場合、１クロック前の出力と同じ画素データを選択する。そして、変換後の近傍マトリクス画像データは、第１のデータフォーマット変換と同じである。
【００６１】
図１５は、圧縮演算器の構成を示す図である。圧縮演算器４１は、セレクタSEL0を有するALU４１４と、システムのクロックCLK1に同期してカウントアップするリードカウンタ４１１と、ALU４１４からの第２のクロックCLK2に同期してカウントアップするライトカウンタ４１２とを有する。圧縮演算器は、さらに、ALUにより入力される画像データの画素データを格納するリードレジスタ４１３と、ALUにより出力される画素データを書き込むライトレジスタ４１５とを有する。リードレジスタは、第１のDMAメモリDMA_M0の３２ワードの画像データdata0（図１３、１４参照）が格納される入力レジスタである。また、ライトレジスタは画像データdata1が格納される出力レジスタである。
【００６２】
ALUを構成するセレクタSEL0は、リードカウンタのカウント値に対応する圧縮マスクCmask内のマスク値を参照し、マスク値が「０」の場合画素データdata0をマスクして出力せず、マスク値が「１」の場合リードレジスタ内のリードカウンタのカウント値の画素データdata0を選択し出力する。一方、ALUは圧縮マスクCmaskのマスク値が「１」の場合、第２のクロックCLK2を出力してライトカウンタをカウントアップさせ、画素データdata0を選択し、ライトレジスタ内のライトカウンタのカウント値の位置に、選択した画素データdata0を画素データdata1として書き込む。
【００６３】
したがって、圧縮演算器４１は、図１３、図１４の通り、マスク値「１」の場合データdata0の画素データをデータdata1内の下位アドレス側に詰めて書き込む。
【００６４】
図１６は、パディング演算器を示す図である。パディング演算器４３は、セレクタSEL1を有するALU４３４と、システムのクロックCLK1に同期してカウントアップするライトカウンタ４３２と、ALU４３４からの第３のクロックCLK3に同期してカウントアップするリードカウンタ４３１とを有する。パディング演算器は、さらに、ALUが読み出す画像データの画素データを格納するリードレジスタ４３３と、ALUが選択した画素データを書き込むライトレジスタ４３５とを有する。リードレジスタは、３２ワードの画像データdata1（図１３、１４参照）が格納される入力レジスタである。また、ライトレジスタは画像データdata2が格納される出力レジスタである。
【００６５】
ALUを構成するセレクタSEL1は、パディングマスクPmask内のライトカウンタのカウント値に対応するマスク値を参照し、マスク値が「０」の場合画素データ「０」を出力し、マスク値が「１」の場合リードレジスタ内のリードカウンタのカウント値の画素データを出力する。また、セレクタSEL1は、マスク値が「３」の場合パディングデータPを出力する。そして、セレクタSEL1は、マスク値が「２」の場合、図１３の例では何も出力せず、図１４の例ではFFに格納されている１クロック前の出力データP_data2を出力する。そして、ALUはパディングマスクPmaskのマスク値が「１」の場合第２のクロックCLK2を出力してリードカウンタをカウントアップさせる。
【００６６】
したがって、図１３の例では、パディング演算器４３は、マスク値「０」の場合画素データ「０」を、マスク値「１」の場合データdata1の画素データを、マスク値「３」の場合パディングデータを、画素データdata2内に下位アドレスから順番に書き込む。
【００６７】
図１４の例では、さらに、マスク値「２」の場合１クロック前の出力データP_DATA2を出力して画素データdata2に書き込む。パディングマスクPmaskにマスク値「２」（copy）を使用することにより、セレクタSEL1は、マスク値「２」の場合に、画素データ「０」「Ｐ」などをレジスタから取得する動作を省略することができる。
【００６８】
図１７、図１８は、注目画素に対応する圧縮マスクとパディングマスクを示す図である。図１２で説明した通り、注目画素が図１１に示した二次元の画像データの最上行と最下行、最左列と最右列の場合、近傍マトリクスにはパディングデータが挿入される。したがって、その場合、圧縮マスクとパディングマスクは特殊なマスクであることが必要である。図１１の例は周囲に挿入するパディング数が１であるが、パディング数が２の場合は、最上行から第１、２行、最左列から第１、２列、最下行から第１、２行、最右列から第１、２列で特殊なマスクになる。
【００６９】
一方、注目画素が二次元の画素データの上記の位置以外の場合は、近傍マトリクスにはパディングデータが挿入されない。したがって、注目マスクが右側に移動するたびに、圧縮マスク内の３回のマスク値「１１１」が右シフトし、パディングマスクは最下位アドレスから９つのマスク値「１」と残りアドレスのマスク値「０」で固定される。
【００７０】
次に、図１７、図１８を参照して、注目画素が二次元の画像データの最上行、最左列の場合の圧縮マスクとパディングマスクについて説明する。ここでのパディングマスクは図１３の例で、マスク値は「０」「１」「３」だけ有する。
【００７１】
注目画素X0の場合、最上行で最左列であるので、圧縮マスクCmaskは２つの「11」を１１アドレス分離れて有し、それ以外は「０」である。また、パディングマスクPmaskは「333」、「311」「311」、残り全て「０」である。なお、注目画素の位置に関わらず、パディングマスクは最下位（最左）から９個（係数フィルタのカーネルサイズ９）のマスク値が「１」または「３」になり残りは全て「０」になる。
【００７２】
注目画素X1の場合、最上行であるが最左列ではないので、圧縮マスクCmaskは注目画素X0の場合の２つの「11」の右側に「１」を追加して２つの「111」を１０アドレス離れて有し、それ以外は「０」である。また、パディングマスクPmaskは「333」「111111」、残り全て「０」である。
【００７３】
注目画素X2、X3の場合、最上行であるが最左列から離れた列であるので、圧縮マスクCmaskは、注目画素X1の２つの「111」がそれぞれ右側に１つずつシフトする。また、パディングマスクPmaskは注目画素X1と同じ「333」「111111」、残り全て「０」である。
【００７４】
注目画素X12の場合、最上行で最右列であるので、圧縮マスクCmaskは２つの「11」を１１アドレス分離れて有し、それ以外は「０」である。また、パディングマスクPmaskは「333」、「113」「113」、残り全て「０」である。これは注目画素X0と近傍マトリクス内のパディング列の位置が逆になっている。
【００７５】
注目画素X13の場合、最上行ではないが最左列であるので、圧縮マスクCmaskは注目画素X0と同じである。また、パディングマスクPmaskは「311」「311」「311」である。
【００７６】
注目画素X14の場合、最上行でも最左列でもないので、圧縮マスクCmaskは注目画素X1と同じである。また、パディングマスクPmaskは「111」「111」「111」である。
【００７７】
注目画素X15の場合、最上行でも最左列でもないので、圧縮マスクCmaskは注目画素X14の２つの「111」が右シフトする。また、パディングマスクPmaskはX14と同じで「111」「111」「111」である。
【００７８】
特に図示しないが、注目画素が最下行、最左列から最下行、最右列に移動する場合、図１７、１８の説明とパディング行が３行目になることが異なるが、パディング列は同じになる。したがって、ここでは説明を繰り返さない。
【００７９】
図１９、図２０は、積和演算器に入力する入力用の近傍マトリクスデータの生成手順の第1例を示す図である。図１９に示すとおり、メインメモリM_MEMは１行３２ワード幅で１３行１３列の画像データIM_DATAを記憶する。画像データIM_DATAには３２列のコラムアドレスCADD（=0-31）が示される。一方、１３行１３列の画像データIM_DATAは、１６９ワードの画素データX0-X168を有する。
【００８０】
まず、図８に示したGPU内のメモリコントローラMCが、メインメモリM_MEM内の画像データIM_DATAを３２ワード幅の外部バスを介して読み出し、３２ワード幅を１６ワード幅に変換し、１６ワード幅の内部バスI_BUSを介して第１の高速メモリSRAM_0に書き込む。このデータ転送は、例えばDMAの標準のデータ転送機能により行われる。
【００８１】
次に、フォーマット変換器であるDMAが、第１の高速メモリSRAM_0内の画像データを内部バスI_BUSを介して読み出し、第１のDMAメモリDMA_M0に書き込む。図１１に示した１３行１３列の画像データの場合、注目画素X14の３行３列の近傍マトリクスの９画素は、２９個の連続する画素X0-X28から抽出される。
【００８２】
そして、８つの連続する注目画素の近傍マトリクス画像データを生成するためには、第１のDMAメモリDMA_M0に最大で３６ワードの連続する画素データを格納する必要がある。例えば、注目画素X24-X31の場合、３６ワードの連続する画素データX10-X45を圧縮演算器に入力可能にする必要がある。このことは、第１のDMAメモリDMA_M0には６４ワードの連続する画素データを同時に格納し、６４幅の圧縮マスクで８組の近傍マトリクスの画素データを抽出することを意味する。そして、データフォーマット変換処理の進捗に同期して、２組の６４ワードの画素データを入れ替える必要がある。
【００８３】
したがって、図１９に示すとおり、第１のDMAメモリDMA_M0は２組の６４ワードの画素データを格納する容量を有し、画素データX0-X63, X64-X127が格納されている。
【００８４】
そして、８組の圧縮演算器Cmask_ALU_0-7及びパディング演算器Pmask_ALU_0-7が、それぞれの圧縮マスクで近傍マトリクスの画素データを抽出してデータdata1を生成し、パディングマスクでパディングデータを挿入してデータdata2を生成する。データdata2は、各近傍マトリクスの画像データであり、９つの画素データと７つの画素データ「０」の合計１６個の画素データを有する。
【００８５】
図２０に移り、結合回路CONCが８組の近傍マトリクスの画像データを順次第２のDMAメモリDMA_M1に書き込む。その結果、８組の近傍マトリクスの画像データdata3は、８組の１６ワードデータを含む。この結合回路の処理は、図１０の工程S36に対応する。
【００８６】
フォーマット変換器内の制御回路CNTは、第２のDMAメモリDMA_M1内の８組の近傍マトリクスの画像データを転置回路TRSPで列方向と行方向を入れ替える転置処理し、転置された８組の近傍マトリクス画像データdata4（１６ワード）を第２の高速メモリSRAM_1に書込む。この結合回路の処理は、図１０の工程S37に対応する。
【００８７】
尚、フォーマット変換器内の圧縮演算器ALUとパディング演算器ALUとが８個並列に設けられていない場合、圧縮マスクとパディングマスクによるフォーマット変換と、結合回路による第２のDMAメモリDMA_M1内への近傍マトリクス画像データの書き込みが、８回繰り返し行われる。
【００８８】
そして、GPU内のコアCOREが、第２の高速メモリSRAM_1内のフォーマット変換済みの８組の近傍マトリクス画像データを行アドレスRADD順に１ワードずつ、コアCORE内の８組の積和演算器SoPに並列に入力する。同時に係数フィルタの９つの係数（W0-W8）も８組の積和演算器SoPにそれぞれ入力される。これにより、９クロックサイクルで、８組の積和演算結果（注目画素のフィルタリング結果の値）が並列して生成される。
【００８９】
図２１は、第１のDMAメモリDMA_M0の画素データの取得とフォーマット変換処理の関係を示す図である。前述したとおり、１３行１３列の画像データにおいて、８組の近傍マトリクス画像データを並列して抽出するためには、最大で６４ワードの連続する画素データを第１のDMAメモリDMA_M0内に格納しておく必要がある。
【００９０】
図２１に示すとおり、（１）最初に、データフォーマット変換器の制御回路CNTは、第１の高速メモリSRAM_0から３２ワードの画素データX0-X31を取得し第１のDMAメモリDMA_M0に格納した後、データフォーマット変換を実行する。（２）そして、制御回路CNTは、データフォーマット変換の進捗に合わせて、次の３２ワードの画素データX32-X63を第１の高速メモリSRAM_0から取得し、第１のDMAメモリDMA_M0に格納する。（３）さらに、制御回路CNTは、６４ワードの画素データX0-X63に対するデータフォーマット変換中に、次の３２ワードの画素データX64-X95を第１の高速メモリSRAM_0から取得し、第１のDMAメモリDMA_M0に格納する。そして、（４）制御回路CNTは、６４ワードの画素データX64-X127に対するデータフォーマット変換中に、次の３２ワードの画素データX128-X159を第１の高速メモリSRAM_0から取得し、第１のDMAメモリDMA_M0に格納する。その後、同様にデータフォーマット変換処理の進捗に合わせて、３２ワードずつの画素データを順次取得して格納する。
【００９１】
図２２は、積和演算器に入力する入力用近傍マトリクスデータの生成手順の第２例を示す図である。第２例は、図１９と図２２に示される。第２例において、図１９で説明したとおり、メモリコントローラMCがメインメモリ内の画像データIM_DATAを第１の高速メモリSRAM_0に転送し、データフォーマット変換器であるDMA内での圧縮演算器とパディング演算器が近傍マトリクス画像データdata2を生成する。
【００９２】
次に、図２２に示すとおり、結合回路CONCが８組の近傍マトリクス画像データdata2の各９ワードの画素データを、１行１６ワードの第２のDMAメモリDMA_M1にラスタスキャン方向に詰めて格納する。その結果、１組目の近傍マトリクス画像データ「PPPPX0X1PX13X14」は第２のDMAメモリの１行目と２行目にまたがって格納され、２組目の近傍マトリクス画像データ「PPPX0X1X2X13X14X15」は２行目と３行目にまたがって格納され、３組目以降のそれぞれ９ワードの近傍マトリクス画像データが２行にまたがって格納される。この処理は、図１０の工程S36に対応する。
【００９３】
そして、制御回路CNTは、第２のDMAメモリDMA_M1内の近傍マトリクス画像データをパッキングした画像データdata3を、転置処理せずに第２の高速メモリSRAM_1に転送する。この処理は、図１０の工程S37に対応する。
【００９４】
次に、GPU内のコアCOREが、第２の高速メモリSRAM_1内の近傍マトリクス画像データdata3を１６ワードずつ読み出し、データdata4のように１６ワードを８ワードずつに変換する。そして、コアCORE内に設けられた単一の積和演算器SoPの第１ステージの８個の乗算器MLTPに、近傍マトリクス画像データを８ワードずつ、係数（W0-W8）と共に入力する。その結果、積和演算器SoPは、９ワードの近傍マトリクスの画素データのうち８ワードずつ係数と乗算し、乗算結果を加算して積和演算結果を出力する。
【００９５】
第２例では、特殊な乗算器の入力構造に整合した入力用近傍マトリクス画像データdata4を生成するので、コア内の積和演算器の演算処理効率を高めることができる。
【００９６】
図１０に戻り、結合回路４５が、フォーマット変換された８組の近傍マトリクス画像データを第２のDMAメモリDMA_M1に書込むことで、８組のデータを結合する。そして、制御回路CNTが第２のDMAメモリDMA_M1内の８組の近傍マトリクス画像データを第２の高速メモリSRAMに転置しながら（または転置せずに）書き込む。
【００９７】
以上の通り、本実施の形態によれば、DMA内のフォーマット変換器が、二次元の画像データにパディングを挿入した近傍マトリクスの画像データを高速に生成する。つまり、畳込み演算の演算データである近傍マトリクス画像データの生成処理を効率的に行う。その結果、DNN内の畳み込み層（コンボリュージョン層）における演算効率を高めることができる。
【００９８】
以上の実施の形態をまとめると，次の付記のとおりである。
【００９９】
（付記１）
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、
前記第１のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有する、プロセッサ。
【０１００】
（付記２）
前記フォーマット変換器は、更に、前記読み出された画像データを入力し、圧縮マスクのマスク値に応じて、前記入力した画像データの複数の画素データから前記近傍マトリクス画像データに含まれる画素データを選択して圧縮画像データを生成する圧縮演算器を有し、
前記パディング演算器は、前記読み出された画像データとして前記圧縮画像データを入力し、前記近傍マトリクス画像データを出力する、付記１に記載のプロセッサ。
【０１０１】
（付記３）
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを結合する結合回路と、前記結合された複数組の近傍マトリクス画像データそれぞれに含まれる画素データ及びパディングデータを転置し演算器の入力構成に対応したデータフォーマットを有する入力用近傍マトリクス画像データを生成する転置回路とを有する、付記１に記載のプロセッサ。
【０１０２】
（付記４）
前記フォーマット変換器は、更に、前記パディング演算器が順次出力する複数組の近傍マトリクス画像データを、前記近傍マトリクスの画素数より少ない列数の行列状データフォーマットにラスタスキャン方向に詰めて配置して入力用近傍マトリクス画像データを生成する結合回路を有し、
前記書込回路は、前記入力用近傍マトリクス画像データを前記第２のメモリに書込む、付記１に記載のプロセッサ。
【０１０３】
（付記５）
前記パディング演算器は、更に、前記近傍マトリクス画像データのデータフォーマットに、前記パディングマスクのマスク値に応じて選択した前記画素データ及びパディングデータを下位アドレス側に詰めて配置し、残りの上位アドレス側に０値を配置する、付記１に記載のプロセッサ。
【０１０４】
（付記６）
前記近傍マトリクス画像データの前記選択された画素データ及びパディングデータの合計数が、前記係数フィルタの係数の合計数と同じである、付記５に記載のプロセッサ。
【０１０５】
（付記７）
前記フォーマット変換器は、更に、
前記パディングマスクを格納するパディングマスクレジスタと、
前記パディングマスクレジスタに前記パディングマスクを設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記パディングマスクのマスク値を変更、付記１に記載のプロセッサ。
【０１０６】
（付記８）
前記フォーマット変換器は、更に、
前記圧縮マスクを格納する圧縮マスクレジスタと、
前記パディングマスクを格納するパディングマスクレジスタと、
前記圧縮マスクレジスタに前記圧縮マスクを、前記パディングマスクレジスタに前記パディングマスクをそれぞれ設定する制御ユニットを有し、
前記制御ユニットは、近傍マトリクスの注目画素の前記画像データの行列の位置に応じて、前記圧縮マスク及び前記パディングマスクそれぞれのマスク値を変更する、付記２に記載のプロセッサ。
【０１０７】
（付記９）
前記パディングマスクのマスク値は、前記画素データと、前記パディングデータと、０値のいずれかを選択する第１、第２、第３の値を有する、付記７または８に記載のプロセッサ。
【０１０８】
（付記１０）
前記パディングマスクのマスク値は、前記画素データと、前記パディングデータと、前回の出力データと、０値のいずれかを選択する第１、第２、第３、第４の値を有する、付記７または８に記載のプロセッサ。
【０１０９】
（付記１１）
前記フォーマット変換器は、前記パディング演算器を複数組有し、前記複数組のパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、付記１に記載のプロセッサ。
【０１１０】
（付記１２）
前記フォーマット変換器は、前記圧縮演算器と前記パディング演算器を複数組有し、前記複数組の圧縮演算器とパディング演算器が複数組の近傍マトリクス画像データを並列に生成する、付記２に記載のプロセッサ。
【０１１１】
（付記１３）
更に、前記近傍マトリクス画像データを入力し、前記近傍マトリクス画像データ内の複数の画素データに係数フィルタ内の対応する係数をそれぞれ乗算し加算する積和演算器を有する付記１に記載のプロセッサ。
【０１１２】
（付記１４)
プロセッサと、
前記プロセッサがアクセスするメインメモリとを有し、
前記プロセッサは、
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、
近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、
前記第１のメモリから前記画像データを読み出す読出回路と、前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む近傍マトリクス画像データを生成するパディング演算器と、前記近傍マトリクス画像データを第２のメモリに書込む書込回路とを有するフォーマット変換器とを有する、情報処理装置。
【０１１３】
（付記１５）
二次元配列された複数画素の画素データを有する画像データを記憶する第１のメモリと、近傍マトリクスの画素データを有する近傍マトリクス画像データを記憶する第２のメモリと、近傍マトリクス画像データを生成するフォーマット変換器とを有するプロセッサの動作方法であって、
前記フォーマット変換器が、
前記第１のメモリから前記画像データを読み出し、
前記読み出された画像データを入力し、パディングマスクのマスク値に応じて、前記入力した画像データの画素データ及び前記複数画素の周囲に挿入されるパディングデータを選択し、前記画素データとパディングデータを含む前記近傍マトリクス画像データを生成し、
前記近傍マトリクス画像データを第２のメモリに書込む、プロセッサの動作方法。
【符号の説明】
【０１１４】
IM_D：画像データ
X0-X168：画素データ
N_MX：近傍マトリクス
FIT：係数フィルタ、係数マトリクス
N_MX_D：近傍マトリクス画像データ（近傍マトリクスの画素データからなる画像データ）
CORE：コア（積和演算器を内蔵）
FMT_C：データフォーマット変換回路
DMA：ダイレクトメモリアクセス装置
SRAM_0：第１のメモリ
SRAM_1：第２のメモリ
CNT：制御回路、読み出し回路、書き込み回路
４０：圧縮マスクレジスタ
４１：圧縮演算器
４２：パディングマスクレジスタ
４３：パディング演算器
４５：結合回路、コンカテネーション回路
TRSP：転置回路
SoP：積和演算器
【図１】
2018120549.tif 000003
【図２】
2018120549.tif 000004
【図３】
2018120549.tif 000005
【図４】
2018120549.tif 000006
【図５】
2018120549.tif 000007
【図６】
2018120549.tif 000008
【図７】
2018120549.tif 000009
【図８】
2018120549.tif 000010
【図９】
2018120549.tif 000011
【図１０】
2018120549.tif 000012
【図１１】
2018120549.tif 000013
【図１２】
2018120549.tif 000014
【図１３】
2018120549.tif 000015
【図１４】
2018120549.tif 000016
【図１５】
2018120549.tif 000017
【図１６】
2018120549.tif 000018
【図１７】
2018120549.tif 000019
【図１８】
2018120549.tif 000020
【図１９】
2018120549.tif 000021
【図２０】
2018120549.tif 000022
【図２１】
2018120549.tif 000023
【図２２】
2018120549.tif 000024