(57)【要約】【課題】  ニューラルネットワークにおいて、コンボリューション演算を処理する方法及びその装置を提供する。【解決手段】  ニューラルネットワークにおいて、コンボリューション演算を処理する方法及びその装置は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、オペランドを決定し、決定されたオペランドから組み合わされたオペランド対をコンボリューション演算器内の乗算器にディスパッチし、乗算演算結果に対する加算演算及び累積演算を行うことにより、出力を生成し、生成された出力に基いて、コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。【選択図】      図７Ａ
2019102084.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークにおいて、コンボリューション演算を処理する方法において、
前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定する段階（Ａ，Ｂ，ｍ及びｎは、自然数である）と、
決定されたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれを、コンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする段階と、
前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成する段階と、
前記生成されたｍｘｎ個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する段階と、を含む方法。
【請求項２】
前記フィーチャマップオペランド及び前記ウェートオペランドは、
並列処理が可能である前記入力フィーチャマップのピクセル値及び前記カーネルのウェートに基いて決定されることを特徴とする請求項１に記載の方法。
【請求項３】
前記決定されたフィーチャマップオペランドは、
前記入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものであることを特徴とする請求項２に記載の方法。
【請求項４】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記１つの入力フィーチャマップの入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項３に記載の方法。
【請求項５】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記１つの入力フィーチャマップの入力チャネル、及びいずれか１つの出力チャネルに対応するいずれか１つのカーネルにおいて、互いに異なる位置のウェートに基いたものであることを特徴とする請求項３に記載の方法。
【請求項６】
前記決定されたフィーチャマップオペランドは、
前記入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものであることを特徴とする請求項２に記載の方法。
【請求項７】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記互いに異なる入力チャネルに対応し、いずれか１つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに異なる位置のウェートに基いたものであることを特徴とする請求項６に記載の方法。
【請求項８】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記互いに異なる入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項６に記載の方法。
【請求項９】
前記コンボリューション演算器が、ｋビットの最大精度を有するｋビット乗算器を含む場合、前記分解されたサブ乗算器それぞれは、前記ｋビット乗算器のサブロジックに該当し、
前記Ａビット及び前記Ｂビットそれぞれは、前記ｋビットより小さく、
前記分解されたサブ乗算器それぞれは、前記Ａビットの乗算器、または前記Ｂビットの乗算器に該当することを特徴とする請求項１ないし８のうち何れか一項に記載の方法。
【請求項１０】
前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドは、ｋ／２ビットオペランドに該当し、
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記分解されたサブ乗算器それぞれには、前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドが互いにマッピングされた前記オペランド対それぞれがディスパッチされることを特徴とする請求項９に記載の方法。
【請求項１１】
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記Ａビットフィーチャマップオペランドが、ｋ／２ビットオペランドであり、前記Ｂビットウェートオペランドが、ｋビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランド、及びＢビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢが互いにマッピングされた前記オペランド対と、前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドにおいて、ｋ／２ビットのＬＳＢが互いにマッピングされた前記オペランド対とがディスパッチされ、
前記Ａビットフィーチャマップオペランドが、ｋビットオペランドであり、前記Ｂビットウェートオペランドが、ｋ／２ビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ、及びＢビットウェートオペランドが互いにマッピングされた前記オペランド対と、前記Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＬＳＢ、及び前記Ｂビットウェートオペランドが互いにマッピングされた前記オペランド対と、がディスパッチされることを特徴とする請求項９に記載の方法。
【請求項１２】
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドが、ｋビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、Ｂビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、が互いにマッピングされた前記オペランド対がディスパッチされることを特徴とする請求項９に記載の方法。
【請求項１３】
前記ディスパッチされたｍｘｎ個のオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピングのために、前記ゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティングする段階をさらに含むことを特徴とする請求項１ないし１２のうち何れか一項に記載の方法。
【請求項１４】
装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークのコンボリューション演算を処理するプロセッサと、を含み、
前記プロセッサは、
前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定し（Ａ，Ｂ，ｍ及びｎは、自然数である）、
前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれを、前記プロセッサのコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチし、
前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成し、
前記生成されたｍｘｎ個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する装置。
【請求項１５】
前記フィーチャマップオペランド及び前記ウェートオペランドは、
並列処理が可能である前記入力フィーチャマップのピクセル値及び前記カーネルのウェートに基いて決定されることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記決定されたフィーチャマップオペランドは、
前記入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものであることを特徴とする請求項１５に記載の装置。
【請求項１７】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記１つの入力フィーチャマップの入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいは
前記決定されたウェートオペランドは、
前記カーネルのうち、前記１つの入力フィーチャマップの入力チャネル、及びいずれか１つの出力チャネルに対応するいずれか１つのカーネルにおいて、互いに異なる位置のウェートに基いたものであることを特徴とする請求項１６に記載の装置。
【請求項１８】
前記決定されたフィーチャマップオペランドは、
前記入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものであることを特徴とする請求項１５に記載の装置。
【請求項１９】
前記決定されたウェートオペランドは、
前記カーネルのうち、前記互いに異なる入力チャネルに対応し、いずれか１つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに異なる位置のウェートに基いたものであるか、あるいは
前記決定されたウェートオペランドは、
前記カーネルのうち、前記互いに異なる入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記コンボリューション演算器が、ｋビットの最大精度を有するｋビット乗算器を含む場合、前記分解されたサブ乗算器それぞれは、前記ｋビット乗算器のサブロジックに該当し、
前記Ａビット及び前記Ｂビットそれぞれは、前記ｋビットより小さく、
前記分解されたサブ乗算器それぞれは、前記Ａビットの乗算器または前記Ｂビットの乗算器に該当することを特徴とする請求項１４ないし１９のうち何れか一項に記載の装置。
【請求項２１】
前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドは、ｋ／２ビットオペランドに該当し、
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドが互いにマッピングされた前記オペランド対それぞれがディスパッチされることを特徴とする請求項２０に記載の装置。
【請求項２２】
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記Ａビットフィーチャマップオペランドが、ｋ／２ビットオペランドであり、前記Ｂビットウェートオペランドが、ｋビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢが互いにマッピングされた前記オペランド対と、前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドにおいて、ｋ／２ビットのＬＳＢが互いにマッピングされた前記オペランド対と、がディスパッチされ、
前記Ａビットフィーチャマップオペランドが、ｋビットオペランドであり、前記Ｂビットウェートオペランドが、ｋ／２ビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ、及びＢビットウェートオペランドが互いにマッピングされた前記オペランド対と、前記Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＬＳＢ、及び前記Ｂビットウェートオペランドが互いにマッピングされた前記オペランド対と、がディスパッチされることを特徴とする請求項２０に記載の装置。
【請求項２３】
前記分解されたサブ乗算器それぞれは、ｋ／２ビット乗算器に該当し、
前記Ａビットフィーチャマップオペランド及び前記Ｂビットウェートオペランドが、ｋビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、Ｂビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、が互いにマッピングされた前記オペランド対がディスパッチされることを特徴とする請求項２０に記載の装置。
【請求項２４】
前記プロセッサは
前記ディスパッチされたｍｘｎ個のオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピングのために、前記ゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティングすることを特徴とする請求項１４ないし２３のうち何れか一項に記載の装置。
【請求項２５】
請求項１ないし１３のうち何れか一項に記載の方法を装置のコンピュータに実行させるコンピュータ・プログラム。
【請求項２６】
請求項２５に記載のコンピュータ・プログラムを保存する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークにおいて、フィーチャマップとカーネルとのコンボリューション演算を処理する方法及びその装置に関する。
【背景技術】
【０００２】
ニューラルネットワーク（neural  network）は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。該ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。従って、該ニューラルネットワークを利用し、大量の入力データをリアルタイムに分析し、所望情報を抽出するためには、ニューラルネットワークに係わる演算を効率的に処理することができる技術が要求される。一方、該ニューラルネットワークの学習によれば、少ないビット数だけでも、一定の正確度を維持したり、正確度をさらに高めたりすることができ、該ニューラルネットワークを処理する演算器で利用されるビット数は、駆動中に様々に変化する。そのようなニューラルネットワークの性質と、ニューラルネットワークにおいて遂行される演算の並列性とを共に利用することができるならば、該ニューラルネットワークの多様な演算を効率的に処理することができるであろう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−３４６９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ニューラルネットワークのコンボリューション演算を処理する方法及びその装置を提供するところにある。本実施形態がなそうとする技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるのである。
【課題を解決するための手段】
【０００５】
一側面によれば、ニューラルネットワークにおいて、コンボリューション演算を処理する方法は、前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定する段階（Ａ，Ｂ，ｍ及びｎは、自然数である）と、前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれをコンボリューション演算器内における分解された（decomposed）サブ乗算器それぞれにディスパッチする段階と、前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成する段階と、前記生成されたｍｘｎ個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する段階と、を含む。
【０００６】
他の側面によれば、装置は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークのコンボリューション演算を処理するプロセッサと、を含み、前記プロセッサは、前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定し（Ａ，Ｂ，ｍ及びｎは、自然数である）、前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれを、前記プロセッサのコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチし、前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成し、前記生成されたｍｘｎ個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
【図面の簡単な説明】
【０００７】
【図１】一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
【図２Ａ】ニューラルネットワークのコンボリューション演算について説明するための図面である。
【図２Ｂ】ニューラルネットワークのコンボリューション演算について説明するための図面である。
【図３】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【図４Ａ】１６ビット（１６bitｘ１６bit）乗算器において、互いに異なる精度（または、ビット幅）による乗算器活用度を比較するための図面である。
【図４Ｂ】１６ビット（１６bitｘ１６bit）乗算器において、互いに異なる精度（または、ビット幅）による乗算器活用度を比較するための図面である。
【図５Ａ】１６ビット乗算器において、４個の８ビットオペランドを並列的に処理する場合、乗算器活用度について説明するための図面である。
【図５Ｂ】１６ビット乗算器において、４個の８ビットオペランドを並列的に処理する場合、乗算器活用度について説明するための図面である。
【図６】乗算器種類による回路面積、エネルギー消耗を比較するための表である。
【図７Ａ】一実施形態による、フィーチャマップオペランド及びウェートオペランドの乗算演算方式について説明するための図面である。
【図７Ｂ】一実施形態によって、オペランドの多様な精度による乗算器の性能を比較するための図面である。
【図８Ａ】一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
【図８Ｂ】一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
【図９Ａ】一実施形態によって，ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
【図９Ｂ】一実施形態によって，ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
【図９Ｃ】一実施形態によって，ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
【図９Ｄ】一実施形態によって，ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
【図１０】一実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
【図１１】他の実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
【図１２】一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行う過程について説明するための図面である。
【図１３】一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
【図１４】一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
【図１５】一実施形態によって、一部オペランドがゼロである場合に行われるコンボリューション演算について説明するための図面である。
【図１６】一実施形態によって、ゼロ・オペランドを判断することについて説明するための図面である。
【図１７】一実施形態によるニューラルネットワークにおいて、コンボリューション演算を処理する方法のフローチャートである。
【図１８】一実施形態による電子システムの構成を示すブロック図である。
【発明を実施するための形態】
【０００８】
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り、現在汎用される一般的な用語を選択したが、それは、当技術分野の当業者の意図、判例、新たな技術の出現などによっても異なる。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
【０００９】
実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。
【００１０】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうちの一部構成要素または一部段階は、含まれないこともあり、あるいはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００１１】
また、本明細書で使用される「第１」または「第２」のように序数を含む用語は、多様な構成要素を区別しての説明に使用されるが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、１つの構成要素を他の構成要素から区別する目的に使用される。
【００１２】
下記実施形態に係わる説明は、権利範囲を制限すると解釈されるものではなく、当該技術分野の当業者が容易に類推することができることは、実施形態の権利範囲に属すると解釈されなければならないのである。以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。
【００１３】
図１は、一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
【００１４】
図１を参照すれば、ニューラルネットワーク１は、ディープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ階層ニューラルネットワーク（ｎ−layer  neural  networks）のアーキテクチャでもある。該ＤＮＮまたは該ｎ階層ニューラルネットワークは、コンボリューションニューラルネットワーク（ＣＮＮ：convolutional  neural  network）、リカレントニューラルネットワーク（ＲＮＮ：recurrent  neural  networks）、deep  belief  networks、restricted  Boltzman  machinesなどに該当する。例えば、ニューラルネットワーク１は、コンボリューションニューラルネットワーク（ＣＮＮ）でもっても具現されるが、それに制限されるものではない。図１においては、ニューラルネットワーク１の例示に該当するコンボリューションニューラルネットワークにおいて、一部のコンボリューションレイヤが図示されたが、該コンボリューションニューラルネットワークは、図示されたコンボリューションレイヤード以外にも、プーリングレイヤ（pooling  layer）、フリーコネックティッド（fully  connected）レイヤなどをさらに含んでもよい。
【００１５】
ニューラルネットワーク１は、入力イメージ、フィーチャマップ（feature  maps）及び出力を含む複数レイヤを有するアーキテクチャとしても具現される。ニューラルネットワーク１において入力イメージは、カーネル（kernel）と呼ばれるフィルタとのコンボリューション演算が行われ、その結果、フィーチャマップが出力される。生成された出力フィーチャマップは、次の入力フィーチャマップとして、さらにカーネルとのコンボリューション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボリューション演算が反復的に行われた結果、最終的には、ニューラルネットワーク１による入力イメージの特徴に係わる認識結果が出力される。
【００１６】
例えば、図１のニューラルネットワーク１に、２４ｘ２４ピクセルサイズのイメージが入力された場合、該入力イメージは、カーネルとのコンボリューション演算を介して、２０ｘ２０ピクセルサイズを有する４チャネルのフィーチャマップとしても出力される。その後にも、２０ｘ２０フィーチャマップは、カーネルとの反復的なコンボリューション演算を介して大きさが小さくなりながら、最終的には、１ｘ１ピクセルサイズの特徴が出力される。ニューラルネットワーク１は、多くのレイヤにおいて、コンボリューション演算及びサブサンプリング（または、プーリング）演算を反復的に行うことにより、入力イメージから、イメージ全体を代表することができるロバストな特徴をフィルタリングして出力し、出力された最終特徴を介して、入力イメージの認識結果を導き出すことができる。
【００１７】
図２Ａ及び図２Ｂは、ニューラルネットワークのコンボリューション演算について説明するための図面である。
【００１８】
図２Ａの例示において、入力フィーチャマップ２１０は、６ｘ６ピクセルサイズであり、オリジナル・カーネル２２０は、３ｘ３ピクセルサイズであり、出力フィーチャマップ２３０は、４ｘ４ピクセルサイズであると仮定するが、それらに制限されることなく、該ニューラルネットワークは、多様な大きさのフィーチャマップ及びカーネルによっても具現される。また、入力フィーチャマップ２１０、オリジナル・カーネル２２０及び出力フィーチャマップ２３０に定義された値は、いずれも例示的な値であるにすぎず、本実施形態は、それらに制限されるものではない。
【００１９】
オリジナル・カーネル２２０は、入力フィーチャマップ２１０において、３ｘ３ピクセルサイズのウィンドウ（または、タイル）単位でスライディングしながら、コンボリューション演算を行う。該コンボリューション演算は、入力フィーチャマップ２１０の各ウィンドウの各ピクセル値と、オリジナル・カーネル２２０における対応位置の各エレメントのウェートとの乗算を行って獲得された値をいずれも合算し、出力フィーチャマップ２３０の各ピクセル値を求める演算を意味する。具体的には、オリジナル・カーネル２２０は、まず、入力フィーチャマップ２１０の第１ウィンドウ２１１とコンボリューション演算を行う。すなわち、第１ウィンドウ２１１の各ピクセル値１，２，３，４，５，６，７，８，９には、それぞれオリジナル・カーネル２２０の各エレメントのウェート−１，−３，＋４，＋７，−２，−１，−５，＋３，＋１がそれぞれ乗算され、その結果として、−１、−６、１２、２８、−１０、−６、−３５、２４、９が獲得される。次に、獲得された値−１，−６，１２，２８，−１０，−６，−３５，２４，９をいずれも加えた結果である１５が計算され、出力フィーチャマップ２３０の１行１列のピクセル値２３１は、１５であるとして決定される。ここで、出力フィーチャマップ２３０の１行１列のピクセル値２３１は、第１ウィンドウ２１１に対応する。同じ方式で、入力フィーチャマップ２１０の第２ウィンドウ２１２とオリジナル・カーネル２２０とのコンボリューション演算が行われることにより、出力フィーチャマップ２３０の１行２列のピクセル値２３２である４が決定される。最終的に、入力フィーチャマップ２１０の最後のウィンドウである第１６ウィンドウ２１３とオリジナル・カーネル２２０とのコンボリューション演算が行われることにより、出力フィーチャマップ２３０の４行４列のピクセル値２３３である１１が決定される。
【００２０】
すなわち、１つの入力フィーチャマップ２１０と、１つのオリジナル・カーネル２２０とのコンボリューション演算は、入力フィーチャマップ２１０及びオリジナル・カーネル２２０において、互いに対応する各エレメント値の乗算、及び乗算結果の合算を反復的に行うことによって処理され、コンボリューション演算の結果として、出力フィーチャマップ２３０が生成される。
【００２１】
一方、図２Ａにおいては、二次元コンボリューション演算について説明されたが、該コンボリューション演算は、複数チャネルの入力フィーチャマップ、カーネル、出力フィーチャマップが存在する三次元コンボリューション演算に該当する。それについては、図２Ｂを参照して説明する。
【００２２】
図２Ｂを参照すれば、入力フィーチャマップ２０１は、Ｘ個のチャネルが存在し、各チャネルの入力フィーチャマップは、Ｈ行Ｗ列の大きさを有することができる（Ｘ、Ｗ、Ｈは、自然数である）。カーネル２０２それぞれは、Ｒ行Ｓ列の大きさを有し、カーネル２０２は、入力フィーチャマップ２０１のチャネル数Ｘ、及び出力フィーチャマップ２０３のチャネル数Ｙに対応する個数のチャネルを有することができる（Ｒ、Ｓ、Ｙは、自然数である）。出力フィーチャマップ２０３は、入力フィーチャマップ２０１とカーネル２０２との三次元コンボリューション演算を介して生成され、該コンボリューション演算により、Ｙ個のチャネルが存在しうる。
【００２３】
１つの入力フィーチャマップと１つのカーネルとのコンボリューション演算を介して、出力フィーチャマップが生成される過程は、前述の図２Ａで説明された通りであり、図２Ａで説明された二次元コンボリューション演算が、全体チャネルの入力フィーチャマップ２０１と、全体チャネルのカーネル２０２との間で反復的に行われることにより、全体チャネルの出力フィーチャマップ２０３が生成される。
【００２４】
図３は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【００２５】
ニューラルネットワーク装置１０は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイス、埋め込み（embedded）デバイスなどの多種のデバイスによっても具現され、具体的な例として、ニューラルネットワークを利用した音声認識、映像認識、映像分類などを行うスマートフォン、タブレットデバイス、ＡＲ（augmented  reality）デバイス、ＩｏＴ（internet  of  things）デバイス、自律走行自動車、ロボティックス、医療機器などに該当するが、それらに制限されるものではない。さらに、ニューラルネットワーク装置１０は、前述のようなデバイスに搭載される専用ハードウェアアクセラレータ（ＨＷ  accelerator）に該当し、ニューラルネットワーク装置１０は、ニューラルネットワーク駆動のための専用モジュールであるＮＰＵ（neural  processing  unit）、ＴＰＵ（tensor  processing  unit）、Neural  Engineのようなハードウェアアクセラレータでもあるが、それらに制限されるものではない。
【００２６】
図３を参照すれば、ニューラルネットワーク装置１０は、プロセッサ１１０及び外部メモリ１２０を含む。図３に図示されたニューラルネットワーク装置１０には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置１０には、図３に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者に自明であろう。
【００２７】
プロセッサ１１０は、ニューラルネットワーク装置１０において、ニューラルネットワークを駆動するための全般的な機能を制御する役割を行う。例えば、プロセッサ１１０は、ニューラルネットワーク装置１０内の外部メモリ１２０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１０を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク装置１０内に具備されたＣＰＵ（central  processing  unit）、ＧＰＵ（graphics  processing  unit）、ＡＰ（application  processor）などによっても具現されるが、それらに制限されるものではない。
【００２８】
外部メモリ１２０は、ニューラルネットワーク装置１０内で処理される各種データを保存するハードウェアであり、外部メモリ１２０は、ニューラルネットワーク装置１０で処理されたデータ及び処理されるデータを保存することができる。また、外部メモリ１２０は、ニューラルネットワーク装置１０によって駆動されるアプリケーション、ドライバなどを保存することができる。外部メモリ１２０は、ＤＲＡＭ（dynamic  random  access  memory）、ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、ＣＤ（compact  disc）−ＲＯＭ、ブルーレイ（登録商標（Blu-ray））または他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid-state  drive）、またはフラッシュメモリを含んでもよい。
【００２９】
プロセッサ１１０は、外部メモリ１２０から、ニューラルネットワークデータ、例えばイメージデータ、フィーチャマップデータ、カーネルデータなどをリード／ライト（read/write）し、リード／ライトされたデータを利用し、ニューラルネットワークを実行する。ニューラルネットワークが実行されるとき、プロセッサ１１０は、内部に具備されたコンボリューション演算器（convolution  operator）を駆動させ、出力フィーチャマップに係わるデータを生成するための入力フィーチャマップとカーネルとのコンボリューション演算を反復的に行う。そのとき、入力フィーチャマップのチャネル数、カーネルのチャネル数、入力フィーチャマップの大きさ、カーネルの大きさ、値の精度（precision）のような多様なファクタに依存し、コンボリューション演算の演算量が決定される。図１に図示されたニューラルネットワーク１と異なり、ニューラルネットワーク装置１０で駆動される実際のニューラルネットワークは、さらに複雑なアーキテクチャとしても具現される。それにより、プロセッサ１１０は、数億から数百億に至るほど非常に多くの演算量（operation  count）のコンボリューション演算を行うようになり、プロセッサ１１０が、コンボリューション演算のために、外部メモリ１２０にアクセスする頻度が共に飛躍的に増加してしまう。比較的処理性能が低いスマートフォン・タブレットデバイス・ウェアラブルデバイスのようなモバイルデバイス、埋め込みデバイスなどでは、そのような演算量負担を減らすための方案が要求されている。
【００３０】
プロセッサ１１０は、プロセッシング機能を担当するプロセッシングユニット１１２と、キャッシュ（cache）機能を担当するオンチップ（on-chip）メモリ１１４と、を含んでもよい。
【００３１】
プロセッシングユニット１１２は、外部メモリ１２０からオンチップメモリ１１４に保存された（または、バッファリングされた）入力フィーチャマップのピクセル値、カーネルのウェートなどを利用して、入力フィーチャマップとカーネルとのコンボリューション演算を処理する。プロセッサ１１０内において、プロセッシングユニット１１２及びオンチップメモリ１１４それぞれは、１以上ずつ具備され、１以上のプロセッシングユニット１１２及びオンチップメモリ１１４それぞれは、並列に独立してコンボリューション演算処理に利用されることにより、コンボリューション演算が効率的に処理される。
【００３２】
プロセッサ１１０のプロセッシングユニット１１２内には、コンボリューション演算のためのコンボリューション演算器（convolution  operator）を具現したロジック回路が具備される。該コンボリューション演算器は、乗算器（multiplier）、加算器（adder）及び累算器（accumulator）の組み合わせによって具現された演算器である。該コンボリューション演算器内において乗算器は、多数のサブ乗算器の組み合わせによって具現され、また加算器も、多数のサブ加算器の組み合わせによっても具現される。
【００３３】
プロセッシングユニット１１２は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定する（Ａ，Ｂ，ｍ及びｎは、自然数である）。ここで、ｍとｎは、同じであるか、あるいは互いに異なる自然数でもあり、Ａビットの値、及びＢビットの値も同じであるか、あるいは互いに異なる自然数でもある。
【００３４】
プロセッシングユニット１１２は、並列処理が可能である入力フィーチャマップのピクセル値、及びカーネルのウェートに基いて、フィーチャマップオペランド及びウェートオペランドを決定することができる。
【００３５】
例えば、決定されたフィーチャマップオペランドは、入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものでもあり、そのとき、決定されたウェートオペランドは、カーネルのうち１つの入力フィーチャマップの入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいはカーネルのうち１つの入力フィーチャマップの入力チャネル、及びいずれか１つの出力チャネルに対応するいずれか１つのカーネルにおいて、互いに異なる位置のウェートに基いたものでもある。
【００３６】
他の例として、決定されたフィーチャマップオペランドは、入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものでもあり、そのとき決定されたウェートオペランドは、カーネルのうち、互いに異なる入力チャネルでありながら、いずれか１つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいはカーネルのうち、互いに異なる入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルで互いに対応する位置のウェートに基いたものでもある。
【００３７】
ただし、前述のような例示は、プロセッシングユニット１１２によって決定されるオペランドの一部種類に過ぎず、プロセッシングユニット１１２は、それ以外にも、多種のオペランドを入力フィーチャマップ及びカーネルから決定することができる。
【００３８】
プロセッシングユニット１１２は、コンボリューション演算器内の乗算器の精度、加算器の精度、累算器の精度と、決定されたオペランドの精度とを判断し、決定されたフィーチャマップオペランド及びウェートオペランドの精度（ビット幅）に基いて、コンボリューション演算器内の乗算器、加算器、累算器を、いかなる方式（例えば、いかなる精度（ビット幅））に分解（decompose）するかということを判断することができる。
【００３９】
例えば、コンボリューション演算器が、ｋビットの最大精度（full  precision）を有するｋビット乗算器を含む場合（ｋは、自然数である）、ｋビット乗算器は、ｋビット乗算器のサブロジックに該当するサブ乗算器それぞれに、論理的または物理的に分解される。ここで、前述のオペランドのビット数であるＡビット及びＢビットそれぞれは、ｋビットより小さく、分解されたサブ乗算器それぞれは、Ａビットの乗算器、またはＢビットの乗算器に該当する。しかし、本実施形態は、それらに制限されるものではない。
【００４０】
プロセッシングユニット１１２は、決定されたオペランドを、オンチップメモリ１１４に保存する。その後、プロセッシングユニット１１２は、オンチップメモリ１１４に保存されている、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれを、コンボリューション演算器内における分解された（decomposed）サブ乗算器それぞれにディスパッチする。
【００４１】
例えば、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドがｋ／２ビットオペランドに該当し、分解されたサブ乗算器それぞれが、ｋ／２ビット乗算器に該当する。そのような場合、分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドが互いにマッピングされたオペランド対それぞれがディスパッチされる。
【００４２】
他の例として、分解されたサブ乗算器それぞれが、ｋ／２ビット乗算器に該当し、Ａビットフィーチャマップオペランドが、ｋ／２ビットオペランドであり、Ｂビットウェートオペランドが、ｋビットオペランドである場合、分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランド、及びＢビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢ（most  significant  bit）が互いにマッピングされたオペランド対、並びにＡビットフィーチャマップオペランド、及びＢビットウェートオペランドにおいて、ｋ／２ビットのＬＳＢ（least  significant  bitｓ）が互いにマッピングされたオペランド対がディスパッチされる。
【００４３】
さらに他の例として、分解されたサブ乗算器それぞれが、ｋ／２ビット乗算器に該当し、Ａビットフィーチャマップオペランドが、ｋビットオペランドであり、Ｂビットウェートオペランドが、ｋ／２ビットオペランドである場合、分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ、及びＢビットウェートオペランドが互いにマッピングされたオペランド対、並びにＡビットフィーチャマップオペランドにおいて、ｋ／２ビットのＬＳＢ、及びＢビットウェートオペランドが互いにマッピングされたオペランド対がディスパッチされる。
【００４４】
さらに他の例として、分解されたサブ乗算器それぞれが、ｋ／２ビット乗算器に該当し、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドが、ｋビットオペランドである場合、分解されたサブ乗算器それぞれには、Ａビットフィーチャマップオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、Ｂビットウェートオペランドにおいて、ｋ／２ビットのＭＳＢ及びＬＳＢと、が互いにマッピングされたオペランド対がディスパッチされる。
【００４５】
ただし、前述のようなオペランドディスパッチパターンは、例示的なものであり、プロセッシングユニット１１２は、それ以外にも、多様なパターンでオペランドをサブ乗算器にディスパッチすることができる。
【００４６】
プロセッシングユニット１１２は、分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成する。
【００４７】
プロセッシングユニット１１２は、生成されたｍｘｎ個の出力に基いて、コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
【００４８】
一方、プロセッシングユニット１１２は、ディスパッチされたｍｘｎ個のオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピング（zero  skipping）のためにゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティング（clock-gating）することができる。
【００４９】
プロセッシングユニット１１２は、コンボリューション演算器に、入力フィーチャマップのピクセル値、カーネルのウェートのような多様なオペランドを、前述のようにディスパッチするためのディスパッチャ（dispatcher）を具備することができる。該ディスパッチャは、外部メモリ１２０に保存されている入力フィーチャマップのピクセル値、カーネルのウェートなどのデータから、プロセッシングユニット１１２が行うコンボリューション演算に必要なピクセル値、ウェートなどのオペランドを、オンチップメモリ１１４にディスパッチする。その後、該ディスパッチャは、オンチップメモリ１１４にディスパッチされたオペランドを、コンボリューション演算のために、コンボリューション演算器にさらにディスパッチする。
【００５０】
一方、ニューラルネットワークにおいて利用されるピクセル値、ウェートのようなオペランドは、多様な精度（または、ビット幅）を有するデータに該当する。従って、プロセッシングユニット１１２及びオンチップメモリ１１４は、そのような多様な精度（または、ビット幅）のデータを利用したコンボリューション演算が可能になるように、プロセッシングユニット１１２のコンボリューション演算器及びオンチップメモリ１１４にディスパッチされるオペランドの精度（または、ビット幅）を可変的でありながら、動的に調節することができる。
【００５１】
プロセッシングユニット１１２は、ニューラルネットワークにおいて処理される個別コンボリューション演算の並列性（parallelism）と、個別オペランドの精度（または、ビット幅）によるディスパッチパターンと、を適切に利用することにより、ニューラルネットワークのコンボリューション演算を効率的に処理することができる。
【００５２】
図４Ａ及び図４Ｂは、１６ビット（１６bitｘ１６bit）乗算器において、互いに異なる精度（または、ビット幅）による乗算器活用度を比較するための図面である。
【００５３】
図４Ａを参照すれば、コンボリューション演算を行うピクセル値４０１及びウェート４０２がいずれも１６ビットオペランドに該当する場合、コンボリューション演算器内の１６ビット乗算器４０３においては、１６ビットフィーチャマップオペランド（すなわち、ピクセル値）と、１６ビットウェートオペランドとの乗算演算が行われる。従って、図４Ａの場合、１６ビット乗算器４０３の活用度は、１００％に該当する。
【００５４】
図４Ｂを参照すれば、コンボリューション演算を行うピクセル値４１１及びウェート４１２がいずれも８ビットオペランドに該当する場合、コンボリューション演算器内の１６ビット乗算器４１３においては、８ビットフィーチャマップオフランド（すなわち、ピクセル値）と８ビットウェートオペランドとの乗算演算が行われる。従って、図４Ｂの場合、図４Ａと異なり、１６ビット乗算器４１３の活用度は、２５％に過ぎない。すなわち、１６ビット乗算器４１３の残り７５％リソースは、遊休（idle）状態に留まり、それにより、コンボリューション演算器の演算効率が低くなってしまう。
【００５５】
図５Ａ及び図５Ｂは、１６ビット乗算器において、４個の８ビットオペランドを並列に処理する場合、乗算器活用度について説明するための図面である。
【００５６】
図５Ａを参照すれば、８ビットのフィーチャマップオペランド（すなわち、ピクセル値）５０１とウェートオペランド５１１とのオペランド対と、８ビットのフィーチャマップオペランド（すなわち、ピクセル値）５０３とウェートオペランド５１３とのオペランド対とが並列的なコンボリューション演算のために、１６ビット乗算器５２１にもディスパッチされる。そうであるとしても、１６ビット乗算器５２１においては、５０％のリソース５２２，５２３が利用されるだけである。
【００５７】
図５Ｂを参照すれば、８ビットのフィーチャマップオペランド５０１は、入力チャネル１の入力フィーチャマップにおいて、（０，０）位置のピクセル値（Ｆ１（０，０））５４２に該当し、８ビットのフィーチャマップオペランド５０３は、入力チャネル０の入力フィーチャマップにおいて、（０，０）位置のピクセル値（Ｆ０（０，０））５４３に該当し、８ビットのウェートオペランド５１１は、入力チャネル１及び出力チャネル０のカーネルにおいて、（０，０）位置のウェート（Ｗ０１（０，０））５５２に該当し、８ビットのウェートオペランド５１３は、入力チャネル０及び出力チャネル０のカーネルにおいて、（０，０）位置のウェート（Ｗ００（０，０））５５３に該当する。１６ビット乗算器５６１内のサブ乗算器５６２には、ピクセル値（Ｆ０（０，０））５４３及びウェート（Ｗ００（０，０））５５３がディスパッチされ、サブ乗算器５６２は、ピクセル値（Ｆ０（０，０））５４３及びウェート（Ｗ００（０，０））５５３の乗算演算を行う。そして、サブ乗算器５６３には、ピクセル値（Ｆ１（０，０））５４２及びウェート（Ｗ０１（０，０））５５２がディスパッチされ、サブ乗算器５６３は、ピクセル値（Ｆ１（０，０））５４２及びウェート（Ｗ０１（０，０））５５２の乗算演算を行う。サブ乗算器５６２及びサブ乗算器５６３の各演算結果は、独立して処理され、最終的には、それぞれ出力チャネル０の出力フィーチャマップのピクセル値（Ｏ０（０，０））、及び出力チャネル１の出力フィーチャマップのピクセル値（Ｏ１（０，０））として出力される。
【００５８】
すなわち、４個の８ビットオペランド５０１，５０３，５１１，５１３が、１６ビット乗算器５２１に入力されたが、２個の出力（Ｏ０（０，０）、Ｏ１（０，０））しか出力されなかったので、１６ビット乗算器５２１の全リソースが使用されるものではなく、それにより、コンボリューション演算器の演算効率が低くなってしまう。
【００５９】
結局、図４Ｂ、図５Ａ及び図５Ｂによれば、乗算器の最大ビット幅（例えば、１６ビット）を活用することができないために、乗算器活用度及びコンボリューション演算器の効率が低くなってしまう。図４Ａの場合、ニューラルネットワークにおいて、全てのオペランドが１６ビットに固定されているものではないために、１６ビット乗算器が常時最大ビット幅に活用されるものではない。そのために、乗算器の最大ビット幅内においてオペランドを効率的にディスパッチし、乗算器の活用度を高める方案が要求され、それを介して、コンボリューション演算の効率が上昇する。
【００６０】
図６は、乗算器種類による回路面積、エネルギー消耗を比較するための表である。
【００６１】
図６を参照すれば、４ビット（４ｘ４）乗算器に比べ、８ビット（８ｘ８）乗算器は、大体のところ４倍の回路面積を占め、エネルギー消耗も、５倍も高いことがある。また、４ビット乗算器に比べ、１６ビット乗算器は、大体のところ１５倍の回路面積を占め、エネルギー消耗も、２１倍も高い。すなわち、乗算器の精度（ビット幅）が上昇するほど、回路面積が増大するだけではなく、エネルギー消耗も膨大に増加する。従って、コンボリューション演算器内において、高精度の乗算器が具現される場合には、乗算器の全リソースを最大限活用することができてこそ、コンボリューション演算器の演算性能を高めることができる。
【００６２】
図７Ａは、一実施形態によるフィーチャマップオペランド及びウェートオペランドの乗算演算方式について説明するための図面である。
【００６３】
図７Ａを参照すれば、プロセッサ１１０（図３）は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、Ａビットフィーチャマップオペランド及びＢビットウェートオペランドを決定する。例えば、Ａビット及びＢビットは、いずれも８ビットに該当すると仮定して説明するが、それに制限されるものではなく、Ａビット及びＢビットは、他のビット数であってもよい。
【００６４】
具体的には、プロセッサ１１０のプロセッシングユニット１１２（図３）は、決定された８ビットフィーチャマップオペランド及び８ビットウェートオペランドを外部メモリ１２０（図３）からリードし、それらをオンチップメモリ１１４（図３）にディスパッチ（保存）する。そのとき、プロセッシングユニット１１２は、オンチップメモリ１１４に割り当てられた、フィーチャマップオペランドのための１６ビット保存領域７０１に、８ビット第１フィーチャマップオペランド及び８ビット第２フィーチャマップオペランドをディスパッチ（保存）することができる。また、プロセッシングユニット１１２は、オンチップメモリ１１４に割り当てられた、ウェートオペランドのための１６ビット保存領域７１１に、８ビット第１ウェートオペランド及び８ビット第２ウェートオペランドをディスパッチ（保存）することができる。
【００６５】
第１フィーチャマップオペランドと第１ウェートオペランドとのオペランド対、第１フィーチャマップオペランドと第２ウェートオペランドとのオペランド対、第２フィーチャマップオペランドと第１ウェートオペランドとのオペランド、対及び第２フィーチャマップオペランドと第２ウェートオペランドとのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。さらに、そのようなオペランド対それぞれは、コンボリューション演算で並列処理が可能であるオペランド対に該当する。
【００６６】
すなわち、ニューラルネットワークのコンボリューション演算の並列性を最大限活用するようにオペランドがディスパッチされ、そのオペランド対がコンボリューション演算器内の乗算器リソースを最大限使用するように乗算器にディスパッチされるならば、効率的なコンボリューション演算が処理される。
【００６７】
図７Ｂは、一実施形態によって、オペランドの多様な精度による乗算器の性能を比較するための図面である。図７Ｂを参照すれば、１６ビット乗算器において、１６ビットオペランド対が処理される場合には、１つの出力（１ＸThroughput）だけが獲得されるが、図７Ａのように、１６ビット乗算器において、４個の８ビットオペランド対が処理される場合には、４個の独立した出力（４ＸThroughput）が獲得される。Throughputは、スループット又はパフォーマンスを表す。
【００６８】
図８Ａは、一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
【００６９】
図８Ａを参照すれば、フィーチャマップオペランド（Ｆ０（０，０），Ｆ０（０，１））及びウェートオペランド（Ｗ００（０，０），Ｗ０１（０，０））がいずれも８ビットに該当し、１６ビット乗算器で乗算演算が行われる場合を仮定する。一方、１６ビット乗算器は、４個の独立したサブ乗算器８１１，８１２，８１３，８１４にも分解される。
【００７０】
フィーチャマップオペランド（Ｆ０（０，０））及びウェートオペランド（Ｗ００（０，０））のオペランド対、フィーチャマップオペランド（Ｆ０（０，０））及びウェートオペランド（Ｗ１０（０，０））のオペランド対、フィーチャマップオペランド（Ｆ０（０，１））及びウェートオペランド（Ｗ００（０，０））のオペランド対、並びにフィーチャマップオペランド（Ｆ０（０，１））及びウェートオペランド（Ｗ１０（０，０））のオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。
【００７１】
４個のオペランド対それぞれは、分解された４個のサブ乗算器８１１，８１２，８１３，８１４それぞれにディスパッチされ、サブ乗算器８１１，８１２，８１３，８１４それぞれは、独立してオペランド対に対する乗算演算を行う。乗算演算後、加算演算または累積演算を介して、４個の独立した出力（Ｏ０（０，０），Ｏ０（０，１），Ｏ１（０，０），Ｏ１（０，１））が獲得される。すなわち、図５Ｂにおいては、２個のオペランド対に対してのみ乗算演算を行うことにより、２個の出力（Ｏ０（０，０），Ｏ１（０，０））だけが獲得されたが、図８Ａにように、ニューラルネットワークのコンボリューション演算の並列性を最大限活用するように、サブ乗算器にオペランド対が適切にディスパッチされるならば、効率的なコンボリューション演算が処理される。
【００７２】
図８Ｂは、一実施形態によって、ニューラルネットワークのフィーチャマップオペランド、及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
【００７３】
図８Ｂを参照すれば、フィーチャマップオペランド（Ｆ０（０，０），Ｆ０（０，１），Ｆ０（０，２），Ｆ０（０，３））がいずれも４ビットに該当し、ウェートオペランド（Ｗ００（０，０））が１６ビットに該当し、１６ビット乗算器で乗算演算が行われる場合を仮定する。一方、１６ビット乗算器は、４個の独立した８ビット（８ｘ８）サブ乗算器８２１，８２２，８２３，８２４にも分解される。
【００７４】
フィーチャマップオペランド（Ｆ０（０，０））及びウェートオペランド（Ｗ００（０，０））のオペランド対、フィーチャマップオペランド（Ｆ０（０，１））及びウェートオペランド（Ｗ００（０，０））のオペランド対、フィーチャマップオペランド（Ｆ０（０，２））及びウェートオペランド（Ｗ００（０，０））のオペランド対、並びにフィーチャマップオペランド（Ｆ０（０，３））及びウェートオペランド（Ｗ００（０，０））のオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。
【００７５】
同様に、４個のオペランド対それぞれは、分解された４個のサブ乗算器８２１，８２２，８２３，８２４それぞれにディスパッチされ、サブ乗算器８１１，８１２，８１３，８１４それぞれは、独立してオペランド対に対する乗算演算を行うことにより、４個の独立した出力が獲得される。すなわち、図８Ａでのように、ニューラルネットワークのコンボリューション演算の並列性を最大限活用し、乗算器の効率を最大化することにより、効率的なコンボリューション演算が処理される。
【００７６】
図９Ａないし図９Ｄは、一実施形態によって、ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
【００７７】
図９Ａを参照すれば、プロセッサ１１０（図３）のプロセッシングユニット１１２（図３）により、並列処理が可能であると決定されたフィーチャマップオペランドは、入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値９１１（Pixel１，Pixel２，Pixel３，Pixel４）に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及びいずれか１つの出力チャネルの参照（reference）を有するいずれか１つのカーネルにおいて、互いに異なる位置のウェート９１２（Weight１，Weight２，Weight３，Weight４）に基いたものでもある。
【００７８】
乗算器は、サブ乗算器に分解される。プロセッシングユニット１１２（図３）に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの４個のオペランド対（Pixel１及びWeight１，Pixel２及びWeight２，Pixel３及びWeight３，Pixel４及びWeight４）をディスパッチする。ディスパッチされた各オペランド対については、独立して並列の乗算演算が行われる。
【００７９】
図９Ｂを参照すれば、プロセッサ１１０のプロセッシングユニット１１２により、並列処理が可能であると決定されたフィーチャマップオペランドは、入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおける対応するピクセル位置のピクセル値９２１（Pixel１，Pixel２，Pixel３，Pixel４）に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、互いに異なる入力チャネルでありながら、いずれか１つの出力チャネルに対応する互いに異なるカーネルにおける対応する位置のウェート９２２（Weight１，Weight２，Weight３，Weight４）に基いたものでもある。
【００８０】
プロセッシングユニット１１２に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの４個のオペランド対（Pixel１及びWeight１，Pixel２及びWeight２，Pixel３及びWeight３，Pixel４及びWeight４）をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
【００８１】
図９Ｃを参照すれば、プロセッサ１１０のプロセッシングユニット１１２により、並列処理が可能であると決定されたフィーチャマップオペランドは、いずれか１つの入力フィーチャマップで互いに異なるピクセル位置のピクセル値９３１（Pixel１，Pixel２，Pixel３，Pixel４）に基いたものでもある。ここで、互いに異なるピクセル位置は、入力フィーチャマップで互いに重ならないスライディングウィンドウにおいて対応するピクセル位置でもあるが、それらに制限されるものではない。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及びいずれか１つの出力チャネルに対応するいずれか１つのカーネルにおいて、いずれか１つのウェート９３２（Weight１）に基いたものでもある。
【００８２】
プロセッシングユニット１１２に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの４個のオペランド対（Pixel１及びWeight１，Pixel２及びWeight１，Pixel３及びWeight１，Pixel４及びWeight１）をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
【００８３】
図９Ｄを参照すれば、プロセッサ１１０のプロセッシングユニット１１２により、並列処理が可能であると決定されたフィーチャマップオペランドは、いずれか１つの入力フィーチャマップにおいて、いずれか１つのピクセル位置のピクセル値９４１（Pixel１）に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及び互いに異なる出力チャネルに対応する互いに異なるカーネルでの同じ位置のウェート９４２（Weight１，Weight２，Weight３，Weight４）に基いたものでもある。
【００８４】
プロセッシングユニット１１２に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの４個のオペランド対（Pixel１及びWeight１，Pixel１及びWeight２，Pixel１及びWeight３，Pixel１及びWeight４）をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
【００８５】
図９Ａないし図９Ｄで説明されたニューラルネットワークにおいて、コンボリューション演算の並列性を利用するために決定されたオペランドは、例示的なものであるにすぎず、それ以外にも、多様なオペランドが、並列的なコンボリューション演算のために決定されてよい。すなわち、プロセッサ１１０は、並列処理が可能であるオペランド組み合わせ内において、多様なフィーチャマップオペランド及びウェートオペランドを決定することができる。プロセッサ１１０は、並列処理が可能であるオペランドの組み合わせを決定し、そのようなオペランド対を、前述の図８Ａ、図８Ｂ、またはそれと類似した方式でサブ乗算器にディスパッチすることにより、コンボリューション演算の処理を効率化させることができる。
【００８６】
図１０は、一実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
【００８７】
図１０を参照すれば、入力フィーチャマップのピクセル値、及びカーネルのウェートは、いずれも８ビットのオペランドに該当すると仮定する。しかし、それは、説明の便宜のためのものであるにすぎず、それに制限されるものではなく、ピクセル値及びウェートは、他のビット幅のデータに該当してもよい。一方、コンボリューション演算器に具備された乗算器は、１６ビット（１６ｘ１６）乗算器に該当すると仮定するが、それに制限されるものではなく、該乗算器は、他の精度の乗算器にも該当する。
【００８８】
プロセッサ１１０（図３）は、入力フィーチャマップのピクセル値、及びカーネルのウェートのうち並列処理が可能であるオペランドを決定する。
【００８９】
図１０に図示されているように、プロセッサ１１０は、入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いて、フィーチャマップオペランドを決定することができ、カーネルのうち、当該入力フィーチャマップの入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いて、ウェートオペランドを決定することができる。
【００９０】
具体的には、入力フィーチャマップとカーネルとのコンボリューション演算が行われるとき、Ｆ０（０，０）のピクセル値は、Ｗ００（０，０）のウェートとの乗算演算と、Ｗ１０（０，０）のウェートとの乗算演算にそれぞれ利用される。そして、Ｆ０（０，１）のピクセル値も、Ｗ００（０，０）のウェートとの乗算演算と、Ｗ１０（０，０）のウェートとの乗算演算にそれぞれ利用される。結局、Ｆ０（０，０）のピクセル値、及びＷ００（０，０）のウェートのオペランド対、Ｆ０（０，０）のピクセル値、及びＷ１０（０，０）のウェートのオペランド対、Ｆ０（０，１）のピクセル、値及びＷ００（０，０）のウェートのオペランド対、並びにＦ０（０，１）のピクセル値、及びＷ１０（０，０）のウェートのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算にいずれも必要なオペランド対でありながら、並列に処理が可能であるオペランド対に該当する。
【００９１】
従って、プロセッサ１１０は、４個の８ビットオペランド対それぞれを１６ビット乗算器から分解された４個の８ビットサブ乗算器それぞれにディスパッチする。それにより、並列に処理可能な４レーン（lane）のコンボリューション演算が独立して行われる。さらに、４レーンのコンボリューション演算の結果として、出力フィーチャマップのピクセル値の計算のための４個の出力がさらに迅速に獲得されるので、演算速度の効率化が可能である。
【００９２】
なお、本明細書全体を通じて、ＦＸ（ｉ，ｊ）において、Ｘは、入力フィーチャマップチャネルを意味し、（ｉ，ｊ）は、入力フィーチャマップにおけるピクセル位置を意味する。そして、ＷＹ，Ｘ（ｉ，ｊ）において、Ｘは、入力フィーチャマップチャネルを意味し、Ｙは、出力フィーチャマップチャネルを意味し、（ｉ，ｊ）は、カーネルにおけるピクセル位置を意味する。
【００９３】
図１１は、他の実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
【００９４】
図１１を参照すれば、入力フィーチャマップのピクセル値、及びカーネルのウェートは、いずれも８ビットのオペランドに該当すると仮定する。しかし、それは、説明の便宜のためのものであるにすぎず、それらに制限されるものではなく、ピクセル値及びウェートは、他のビット幅のデータに該当してもよい。一方、コンボリューション演算器に具備された乗算器は、１６ビット乗算器に該当すると仮定するが、それに制限されるものではなく、乗算器は、他の精度の乗算器にも該当する。
【００９５】
プロセッサ１１０（図３）は、入力フィーチャマップのうちいずれか１つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いて、フィーチャマップオペランドを決定することができ、カーネルのうち、当該入力フィーチャマップの入力チャネルでありながら、いずれか１つの出力チャネルに対応するいずれか１つのカーネルにおいて、互いに異なる位置のウェートに基いて、ウェートオペランドを決定することができる。
【００９６】
具体的には、入力フィーチャマップとカーネルとのコンボリューション演算が行われるとき、Ｆ０（２，０）のピクセル値は、Ｗ００（０，０）のウェートとの乗算演算と、Ｗ００（１，０）のウェートとの乗算演算にそれぞれ利用される。そして、Ｆ０（２，１）のピクセル値も、Ｗ００（０，０）のウェートとの乗算演算と、Ｗ００（１，０）のウェートとの乗算演算にそれぞれ利用される。結局、Ｆ０（２，０）のピクセル値、及びＷ００（０，０）のウェートのオペランド対、Ｆ０（２，０）のピクセル値、及びＷ００（１，０）のウェートのオペランド対、Ｆ０（２，１）のピクセル値、及びＷ００（０，０）のウェートのオペランド対、並びにＦ０（２，１）のピクセル値、及びＷ００（１，０）のウェートのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算にいずれも必要なオペランド対でありながら、並列に処理が可能であるオペランド対に該当する。
【００９７】
従って、プロセッサ１１０は、４個の８ビットオペランド対それぞれを、１６ビット乗算器から分解された４個の８ビットサブ乗算器それぞれにディスパッチし、プロセッサ１１０は、並列に処理可能な４レーンのコンボリューション演算を独立して行う。そのために、４単位のコンボリューション演算の結果として、出力フィーチャマップのピクセル値の計算のための４個の出力が、さらに迅速に獲得されるので、演算速度の効率化が可能である。
【００９８】
図１０及び図１１で説明された、並列性を利用するために決定されたオペランドは、例示的なものであるにすぎず、それ以外にも、多様なオペランドが並列的なコンボリューション演算のために決定されてもよい。すなわち、プロセッサ１１０は、入力フィーチャマップ内及びカーネル内において、並列処理が可能である多様なフィーチャマップオペランド及びウェートオペランドを決定することができる。そのように決定されたオペランドの精度（または、ビット幅）は、乗算器の精度（または、ビット幅）により、論理的または物理的に分解されたサブ乗算器の精度（または、ビット幅）に対応し、それにより、乗算器の乗算演算の活用度が上昇する。
【００９９】
図１２は、一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行う過程について説明するための図面である。
【０１００】
１２０１段階において、プロセッサ１１０（図３）に具備されたピクセルディスパッチャ１２１１及びウェートディスパッチャ１２１２は、それぞれコンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｋ／ｍビットフィーチャマップオペランド及びｋ／ｎビットウェートオペランドを決定する。その後、プロセッサ１１０のピクセルディスパッチャ１２１１及びウェートディスパッチャ１２１２は、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれをコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする。例えば、ｍビットフィーチャマップオペランドは、それぞれＦ０（ｉ，ｊ）及びＦ０（ｉ，ｊ＋１）に対応するオペランドであり、ｋ／ｎビットウェートオペランドは、それぞれＷ００（０，０）及びＷ１０（０，０）に対応するオペランドであってもよいが、それらに制限されるものではない。ここで、ｋ／ｍビット及びｋ／ｎビットは、いずれも８ビットに該当してもよいが、それに制限されるものではない。
【０１０１】
１２０２段階において、プロセッサ１１０は、内部に具備されたコンボリューション演算器が、ｋビットの最大精度を有するｋビット乗算器を含む場合、ｋビット乗算器をサブロジックに該当するサブ乗算器１２１３において、論理的または物理的に分解する。そのとき、ｋビット乗算器が１６ビット乗算器に該当する場合、サブ乗算器１２１３は、８ビット（＝ｋ／２）乗算器に該当する。
【０１０２】
図１２において、ピクセルディスパッチャ１２１１により、フィーチャーオペランドはサブ乗算器１２１３にディスパッチされ、具体的にはＦ０（ｉ，ｊ）に対応するフィーチャマップオペランドは、最初のサブ乗算器１２１３及び３番目のサブ乗算器１２１３にディスパッチされ、Ｆ０（ｉ，ｊ＋１）に対応するフィーチャマップオペランドは、２番目のサブ乗算器１２１３及び４番目のサブ乗算器１２１３にディスパッチされる。ウェートディスパッチャ１２１２により、ウェートオペランドはサブ乗算器１２１３にディスパッチされ、具体的にはＷ００（０，０）に対応するウェートオペランドは、最初のサブ乗算器１２１３及び２番目のサブ乗算器１２１３にディスパッチされ、Ｗ１０（０，０）に対応するフィーチャマップオペランドは、３番目のサブ乗算器１２１３及び４番目のサブ乗算器１２１３にディスパッチされる。
【０１０３】
１２０３段階において、サブ乗算器１２１３によって行われたそれぞれの乗算演算の結果は、加算演算のために、１６ｘＮビット加算器１２１４（Ｎは、自然数である）にそれぞれ出力される。コンボリューション演算器は、加算器１２１４をさらに含む。加算演算が完了した場合、１６ｘＮビット加算器によって行われたそれぞれの加算演算の結果は、累積演算のために、累積演算器１２１５に出力され、累積演算が行われる。
【０１０４】
１２０４段階において、累積演算器１２１５は、最終的に、４単位のコンボリューション演算の結果に該当する４個の出力Ｏ０（ｉ，ｊ），Ｏ０（ｉ，ｊ＋１），Ｏ１（ｉ，ｊ）及びＯ１（ｉ，ｊ＋１）を提供する。
【０１０５】
図１３は、一実施形態により、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
【０１０６】
図１３を参照すれば、Ｆ０（ｉ，ｊ）に対応するフィーチャマップオペランドは、１６ビットオペランドであり、Ｗ００（０，０）及びＷ１０（０，０）それぞれに対応するウェートオペランドは、それぞれ８ビットオペランドであり、そのようなオペランドが、１６ビット乗算器から分解された８ビットサブ乗算器にディスパッチされる場合について説明する。
【０１０７】
ピクセルディスパッチャ１３１１は、Ｆ０（ｉ，ｊ）に対応する１６ビットフィーチャマップオペランドにおいて、８ビットのＭＳＢを、図１３において、最初のサブ乗算器及び３番目のサブ乗算器にディスパッチし、Ｆ０（ｉ，ｊ）に対応する１６ビットフィーチャマップオペランドにおいて、８ビットのＬＳＢを、図１３において、２番目のサブ乗算器及び４番目のサブ乗算器にディスパッチする。そして、ウェートディスパッチャ１３１２は、Ｗ００（０，０）に対応するウェートオペランドを、図１３において、最初のサブ乗算器及び２番目のサブ乗算器にディスパッチし、Ｗ１０（０，０）に対応するフィーチャマップオペランドを、図１３において、３番目のサブ乗算器及び４番目のサブ乗算器にディスパッチする。
【０１０８】
コンボリューション演算器の乗算器（８ビットサブ乗算器）、１６ｘＮビット加算器及び累算器による演算結果として、最終的に、２個の出力Ｏ０（ｉ，ｊ）及びＯ１（ｉ，ｊ）が提供される。
【０１０９】
図１４は、一実施形態により、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
【０１１０】
図１４を参照すれば、図１３と異なり、Ｆ０（ｉ，ｊ）に対応するフィーチャマップオペランド、及びＷ００（０，０）に対応するウェートオペランドがいずれも１６ビットオペランドであり、そのようなオペランドが、１６ビット乗算器から分解された８ビットサブ乗算器にディスパッチされる場合について説明する。
【０１１１】
ピクセルディスパッチャ１４１１は、Ｆ０（ｉ，ｊ）に対応する１６ビットフィーチャマップオペランドにおいて、８ビットのＭＳＢを、最初のサブ乗算器及び３番目のサブ乗算器にディスパッチし、１６ビットフィーチャマップオペランドにおいて、８ビットのＬＳＢを、２番目のサブ乗算器及び４番目のサブ乗算器にディスパッチする。そして、ウェートディスパッチャ１４１２は、Ｗ００（０，０）に対応する１６ビットウェートオペランドにおいて、８ビットのＭＳＢを、最初のサブ乗算器及び２番目のサブ乗算器にディスパッチし、１６ビットフィーチャマップオペランドにおいて、８ビットのＬＳＢを、３番目のサブ乗算器及び４番目のサブ乗算器にディスパッチする。
【０１１２】
コンボリューション演算器に具備された乗算器（８ビットサブ乗算器）、１６ｘＮビット加算器及び累算器による演算結果として、最終的に、１個の出力Ｏ０（ｉ，ｊ）が提供される。
【０１１３】
前述のように、コンボリューション演算のオペランド対の並列性を利用することにより、多様な精度（または、ビット幅）を支援する乗算器であるとしても、乗算器の活用度を上昇させることができる。
【０１１４】
図１５は、一実施形態により、一部のオペランドがゼロである場合に行われるコンボリューション演算について説明するための図面である。
【０１１５】
図１５を参照すれば、一部のサブ乗算器にディスパッチされたオペランドがゼロである場合（１５００）が生じている。ディスパッチされたいずれかのオペランドがゼロである場合（１５００）には、乗算演算、加算演算などが行われたとしても、その結果は、ゼロである。従って、そのような場合（１５００）、乗算演算、加算演算などを行うことは、ハードウェアリソースを浪費してしまう。そこで、ディスパッチャ（ピクセルディスパッチャ及びウェートディスパッチャ）は、ディスパッチされるオペランド中に、ゼロに該当するオペランドが存在するか否かを判断し、ゼロであるオペランドが存在する場合には、当該オペランドがディスパッチされるサブ乗算器、加算器及び累算器の動作がクロックゲーティングされるように制御することができる。
【０１１６】
図１６は、一実施形態により、ゼロ・オペランドを判断することについて説明するための図面である。
【０１１７】
図１６を参照すれば、プロセッサ１１０（図３）は、フィーチャマップオペランドとウェートオペランドとのうちに、ゼロ・オペランドが存在するか否かを判断することができる。そのとき、プロセッサ１１０は、ｍビットのピクセル値（フィーチャマップオペランド）、またはｎビットのウェート（ウェートオペランド）の全体ビットがゼロに該当するか否かということを判断することができる。または、プロセッサ１１０は、ｍビットのピクセル値、またはｎビットのウェートが、一定ビット幅に分割され、別個の独立したフィーチャマップオペランドまたはウェートオペランドとしてディスパッチされる場合、そのうちの一部のビット（サブビット）１７０１がゼロに該当するか否かを判断することができる。
【０１１８】
【表１】
2019102084.tif 000003
実験として、ＶＧＧ−１６基盤ニューラルネットワークを例として挙げれば、表１に図示されているように、いずれかのレイヤの１６ビット出力データを、４ビットのサブビットに分割した場合、４ビットのＭＳＢがゼロである確率は、９９％であり、４ビットのＭＳＢに続いて、４ビットがゼロである確率は、８４％である。従って、そのような実験結果に照らせば、プロセッサ１１０が、ｍビットのピクセル値、またはｎビットのウェートを一定ビット幅に分割し、サブ乗算器にディスパッチする場合には、ゼロ・オペランドの個数が多くなる確率が高くなるので、多くのクロックゲーティングにより、プロセッサ１１０の処理速度及びリソース使用効率が向上する。
【０１１９】
図１７は、一実施形態によるニューラルネットワークにおいて、コンボリューション演算を処理する方法のフローチャートである。図１７に図示された、ニューラルネットワークのコンボリューション演算処理方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容であるとしても、先立って図面で説明された内容は、図１７の方法にも適用される。
【０１２０】
１７０１段階において、プロセッサ１１０（図３）は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、ｍ個のＡビットフィーチャマップオペランド、及びｎ個のＢビットウェートオペランドを決定する（Ａ，Ｂ，ｍ及びｎは、自然数である）。
【０１２１】
１７０２段階において、プロセッサ１１０は、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのｍｘｎ個のオペランド対それぞれを、コンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする。
【０１２２】
１７０３段階において、プロセッサ１１０は、分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、ｍｘｎ個の出力を生成する。
【０１２３】
１７０４段階において、プロセッサ１１０は、生成されたｍｘｎ個の出力に基いて、コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
【０１２４】
図１８は、一実施形態による電子システムの構成を示すブロック図である。
【０１２５】
図１８を参照すれば、電子システム１８００は、ニューラルネットワークを基に、入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報を基に、状況判断を行うか、あるいは電子システム１８００が搭載される電子デバイスの構成を制御することができる。例えば、電子システム１８００は、ドローン（drone）、先端運転手補助システム（ＡＤＡＳ：advanced  drivers  assistance  system）のようなロボット装置、スマートＴＶ（television）、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、ＩｏＴデバイスなどに適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つに搭載される。
【０１２６】
電子システム１８００は、プロセッサ１８１０、ＲＡＭ  １８２０、ニューラルネットワーク装置１８３０、メモリ１８４０、センサモジュール１８５０及び通信モジュール１８６０を含んでもよい。電子システム１８００は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム１８００のハードウェア構成のうち一部は、少なくとも１つの半導体チップにも搭載される。
【０１２７】
プロセッサ１８１０は、電子システム１８００の全般的な動作を制御する。プロセッサ１８１０は、１つのプロセッサコア（single  core）を含むか、あるいは複数のプロセッサコア（multi-core）を含んでもよい。プロセッサ１８１０は、メモリ１８４０に保存されたプログラム及び／またはデータを処理したり実行したりすることができる。一実施形態において、プロセッサ１８１０は、メモリ１８４０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１８３０の機能を制御することができる。プロセッサ１８１０は、ＣＰＵ、ＧＰＵ、ＡＰなどとしても具現される。
【０１２８】
ＲＡＭ  １８２０は、プログラム、データまたは命令（instructions）を一時的に保存することができる。例えば、メモリ１８４０に保存されたプログラム及び／またはデータは、プロセッサ１８１０の制御コードまたは起動コードにより、ＲＡＭ  １８２０に一時的に保存される。ＲＡＭ  １８２０は、ＤＲＡＭまたはＳＲＡＭなどのメモリとしても具現される。
【０１２９】
ニューラルネットワーク装置１８３０は、受信される入力データを基に、ニューラルネットワークの演算を行い、遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、ＣＮＮ、ＲＮＮ、ＦＮＮ、deep  belief  networks、restricted  Boltzman  machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置１８３０は、ニューラルネットワーク専用ハードウェアアクセラレータ自体、またはそれを含む装置として、前述のニューラルネットワーク装置１０（図３）に該当する。
【０１３０】
該情報信号は、音声認識信号、事物認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置１８３０は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータから、フレームデータが示すイメージに含まれた事物に係わる認識信号を生成することができる。しかし、それに制限されるものではなく、電子システム１８００が搭載された電子装置の種類または機能により、ニューラルネットワーク装置１８３０は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
【０１３１】
メモリ１８４０は、データを保存するための保存場所であり、ＯＳ（operating  system）、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ１８４０は、ニューラルネットワーク装置１８３０の演算遂行過程で生成される中間結果を保存することができる。
【０１３２】
メモリ１８４０は、ＤＲＡＭでもあるが、それに限定されるのではない。メモリ１８４０は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。該不揮発性メモリは、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＰＲＡＭ、ＭＲＡＭ、ＲＲＡＭ（登録商標）、ＦＲＡＭ（登録商標）などを含む。該揮発性メモリは、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、ＰＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、ＦｅＲＡＭなどを含む。一実施形態において、メモリ１８４０は、ＨＤＤ、ＳＳＤ、ＣＦ、ＳＤ、micro−ＳＤ、mini−ＳＤ、ｘＤまたはmemory  stickのうち少なくとも一つを含んでもよい。
【０１３３】
センサモジュール１８５０は、電子システム１８００が搭載される電子装置周辺の情報を収集することができる。センサモジュール１８５０は、電子装置の外部から、信号（例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など）をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール１８５０は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、ライダー（ＬＩＤＡＲ：light  detection  and  ranging）センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサのような多種センシング装置のうち少なくとも一つを含んでもよい。
【０１３４】
センサモジュール１８５０は、変換されたデータを、ニューラルネットワーク装置１８３０に入力データとして提供することができる。例えば、センサモジュール１８５０は、イメージセンサを含み、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置１８３０に入力データとして順に提供することができる。しかし、それに制限されるものではなく、センサモジュール１８５０は、多種のデータをニューラルネットワーク装置１８３０に提供することができる。
【０１３５】
通信モジュール１８６０は、外部デバイスと通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール１８６０は、有線近距離通信網（ＬＡＮ（local  area  network）），Ｗｉ−Ｆｉ（wireless  fidelity）のような無線近距離通信網（ＷＬＡＮ（wireless  local  area  network））、ブルートゥース（登録商標（Bluetooth））のような無線個人通信網（ＷＰＡＮ：wireless  personal  area  network）、無線ＵＳＢ（universal  serial  bus）、Zigbee、ＮＦＣ（near  field  communication）、ＲＦＩＤ（radio  frequency  identification）、ＰＬＣ（power  line  communication）、または３Ｇ（３rd  generation）・４Ｇ（４th  generation）・ＬＴＥ（long  term  evolution）など移動通信網（mobile  cellular  network）に接続可能な通信インターフェースなどを含んでもよい。
【０１３６】
一方、前述の本発明の実施形態は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用し、前記プログラムを動作させる汎用デジタルコンピュータでも具現される。また、前述の本発明の実施形態で使用されデータ構造は、コンピュータで読み取り可能な記録媒体に、多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ、フロッピーディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【０１３７】
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野において、当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解するであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての違いは、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１３８】
本発明の、ニューラルネットワークにおいて、コンボリューション演算を処理する方法及びその装置は、例えば、データ処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１３９】
１        ニューラルネットワーク
１０，１８３０    ニューラルネットワーク装置
１１０，１８１０  プロセッサ
１１２    プロセッシングユニット
１１４    オンチップメモリ
１２０    外部メモリ
１８００  電子システム
１８２０  ＲＡＭ
１８４０  メモリ
１８５０  センサモジュール
１８６０  Ｔｘ／Ｒｘモジュール
【図１】
2019102084.tif 000004
【図２Ａ】
2019102084.tif 000005
【図２Ｂ】
2019102084.tif 000006
【図３】
2019102084.tif 000007
【図４Ａ】
2019102084.tif 000008
【図４Ｂ】
2019102084.tif 000009
【図５Ａ】
2019102084.tif 000010
【図５Ｂ】
2019102084.tif 000011
【図６】
2019102084.tif 000012
【図７Ａ】
2019102084.tif 000013
【図７Ｂ】
2019102084.tif 000014
【図８Ａ】
2019102084.tif 000015
【図８Ｂ】
2019102084.tif 000016
【図９Ａ】
2019102084.tif 000017
【図９Ｂ】
2019102084.tif 000018
【図９Ｃ】
2019102084.tif 000019
【図９Ｄ】
2019102084.tif 000020
【図１０】
2019102084.tif 000021
【図１１】
2019102084.tif 000022
【図１２】
2019102084.tif 000023
【図１３】
2019102084.tif 000024
【図１４】
2019102084.tif 000025
【図１５】
2019102084.tif 000026
【図１６】
2019102084.tif 000027
【図１７】
2019102084.tif 000028
【図１８】
2019102084.tif 000029