JP2020109621A - プロセッシングシステム - Google Patents

プロセッシングシステム Download PDF

Info

Publication number
JP2020109621A
JP2020109621A JP2019202872A JP2019202872A JP2020109621A JP 2020109621 A JP2020109621 A JP 2020109621A JP 2019202872 A JP2019202872 A JP 2019202872A JP 2019202872 A JP2019202872 A JP 2019202872A JP 2020109621 A JP2020109621 A JP 2020109621A
Authority
JP
Japan
Prior art keywords
temporary memory
feature
processing system
stored
boundary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019202872A
Other languages
English (en)
Other versions
JP7437135B2 (ja
Inventor
ジェヒョク チャン
Jae-Hyeok Jang
ジェヒョク チャン
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of JP2020109621A publication Critical patent/JP2020109621A/ja
Application granted granted Critical
Publication of JP7437135B2 publication Critical patent/JP7437135B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/08Learning methods
    • 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

Landscapes

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

Abstract

【課題】プロセッシングシステムの性能を向上させ、電流消費を減らす技術を提供する。【解決手段】プロセッシングシステムは、フィーチャとウエートを格納する臨時メモリと、臨時メモリに格納されたフィーチャの値とウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、フィーチャとウエートを臨時メモリに格納されるように制御し、臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントがオーバーライトされるように制御するフローコントローラとを備える。【選択図】図2

Description

本特許文献は、プロセッシングシステム(processing system)に関する。
CNN(Convolution Neural Network)は、イメージ認識及び分析のために主に使用されるプロセッシングシステム(processing system)である。このプロセッシングシステムは、特定フィルタでイメージからフィーチャ(feature)を抽出するコンボリューション(convolution)演算が必要であるが、このような作業のために、乗算及び加算演算をするマトリックス乗算ユニット(matrix multiplication unit)を使用するようになる。密集したイメージ(dense image)とフィルタが使用される場合、すなわち、データに0が少ない場合=スパーシティ(sparcity)が少ない場合、このような演算ユニットが効率的に使用され得るが、CNNプロセッシングシステムで使用されるほとんどのイメージとフィルタは、30〜70%程度のスパーシティを有している。
スパーシティが増加するようになると、データに多い数の0値(zero−value)が含まれるが、0値は、乗算及び加算演算の結果値に何らの影響を与えないが、不要なレイテンシを増加させ、電流を消費することになる原因となり得る。
本発明の実施形態等は、プロセッシングシステムの性能を向上させ、電流消費を減らす技術を提供できる。
本発明の一実施形態に係るプロセッシングシステムは、フィーチャ(feature)とウエート(weight)を格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
本発明の他の実施形態に係るプロセッシングシステムは、多数のポイントを含み、それぞれのポイントにフィーチャ(feature)、ウエート(weight)、及びバウンダリフラグを格納する臨時メモリと、前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
本発明のさらに他の実施形態に係るプロセッシングシステムは、フィーチャ(feature)とウエート(weight)を臨時格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラとを備えることができる。
本発明の実施形態等によれば、プロセッシングシステムの性能を向上させ、電流消費を減らすことができる。
プロセッシングシステムで行うコンボリューション(convolution)演算を説明するための図である。 本発明の一実施形態に係るプロセッシングシステムの構成図である。 図2のプロセッシングエレメント260の一実施形態の構成図である。 フローコントローラ240がオン−チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。 フローコントローラ240がオン−チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。 フローコントローラ240がオン−チップメモリ230に格納されたイメージ410とフィルタ420を読み出して臨時メモリ250に書き込む過程の他の実施形態を説明するための図である。 フローコントローラ240がフィーチャとウエートを臨時メモリ250に書き込む動作を示した順序図である。
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施できるように詳細に説明するために、本発明の最も好ましい実施形態を添付図面を参照して説明する。本発明を説明するにあたって、本発明の要旨と関係ない構成は省略されることができる。各図面の構成要素等に参照符号を付加するにあたって、同じ構成要素等に限っては、例え、他の図面上に表示されても、なるべく同じ番号を有するようにしていることに留意すべきである。
図1は、プロセッシングシステムで行うコンボリューション(convolution)演算を説明するための図である。
図1の110は、イメージ(image)を表すことができる。ここでは、イメージのサイズを4×4に例示した。120は、フィルタ(filter)を表すことができる。ここでは、フィルタのサイズを2×2に例示した。イメージに含まれる値をフィーチャといい、フィルタに含まれる値をウエートといえる。イメージ110には、16個のフィーチャが含まれ、フィルタ120には、4個のウエートが含まれ得る。
コンボリューション演算は、イメージ110とフィルタ120を点線111、112、113、114のような形態で重ねながら行われることができる。フィーチャ110とフィルタ120が点線111のようにオーバーラップされて行われる演算は、1×17+5×0+0×0+6×20=137でありうる。また、フィーチャ110とフィルタ120が点線112のようにオーバーラップされて行われる演算は、0×17+6×0+3×0+0×20=0でありうる。すなわち、1番目のバウンダリ(boundary)の演算結果は、137であり、2番目のバウンダリの演算結果は、0でありうる。同様に、3番目のバウンダリの演算結果は、3×17+0×0+4×0+8×20=211でありうるし、4番目のバウンダリの演算結果は、5×17+0×0+6×0+10×20=285でありうる。
コンボリューション演算過程を説明すれば、フィーチャとウエートのうち1つ以上が0である場合には、当該バウンダリの演算結果値に何らの影響を与えないことが確認できる。例えば、1番目のバウンダリ演算1×17+5×0+0×0+6×20=137においてフィーチャとウエートのうち1つ以上が0である下線を引いた部分は、演算結果137に何らの影響を与えることができないことが確認できる。
図2は、本発明の一実施形態に係るプロセッシングシステムの構成図である。
図2に示されるように、プロセッシングシステムは、メインメモリ210、メモリインターフェース220、オン−チップメモリ230、フローコントローラ(flow controller、240)、臨時メモリ250、プロセッシングエレメント(processing element、260)、及びフィーチャマップ発生器(feature map generator、270)を備えることができる。
メインメモリ210は、イメージ(image)とフィルタ(filter)などを格納する大容量メモリでありうる。メインメモリ210では、DRAMが使用され得るし、他の種類のメモリが使用されることもできる。
メモリインターフェース220は、演算に必要なイメージとフィルタをメインメモリ210から読み出してオン−チップメモリ230に移すために使用されることができる。メモリインターフェース220は、メインメモリ210及びオン−チップメモリ230をアクセスするためのメモリコントローラ及びプロトコルなどを含むことができる。
オン−チップメモリ230は、メインメモリ210からプロセッシングエレメント260が演算する一部データをロードして格納するメモリでありうる。オン−チップメモリ230は、プロセッシングエレメント260とメインメモリ210との間のアクセスレイテンシ(access latency)を最小化するために使用される一種の大容量キャッシュメモリ(cache memory)でありうる。ここで、大容量とは、オン−チップメモリ230の容量が臨時メモリ250に比べて大容量であるということを意味でき、オン−チップメモリ230の容量は、メインメモリ210の容量よりは小さいことができる。オン−チップメモリ230では、SRAMが使用され得る。
フローコントローラ240は、オン−チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込むことができる。フローコントローラ240は、フィーチャまたはウエートの値が0である場合に、当該値に対する演算がスキップ(skip)され得るようにするための動作を行うことができ、オン−チップメモリ230のフィーチャとウエートを臨時メモリ250にロードする過程でフィーチャとウエートを複写する動作も行うことができる。フローコントローラ240の詳細な動作については後述する。
臨時メモリ250は、プロセッシングエレメント260が演算するフィーチャとウエートを臨時格納するメモリでありうる。臨時メモリ250は、プロセッシングエレメント260が直接アクセスするキャッシュメモリでありうる。すなわち、臨時メモリ250がレベル1のキャッシュであれば、オン−チップメモリは、レベル2のキャッシュでありうる。臨時メモリ250は、多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート、及びフィーチャとウエートのバウンダリを表すバウンダリフラグ(boundary flag)を格納できる。臨時メモリ250は、スクラッチパッド(scratch pad)でありうる。
プロセッシングエレメント260は、臨時メモリ250の同じポイントに格納されたフィーチャとウエートを乗算し、同じバウンダリ内の乗算結果を合算する演算を行うことができる。
フィーチャマップ発生器270は、プロセッシングエレメント260のコンボリューション演算結果をポストプロセッシング(post−processing)することができる。フィーチャマップ発生器270は、ピクセル(pixel)別に平均(average)または最大(max)値を探すプーリング(pooling)、閾値(threshold)基盤でデータをフィルタリングするReLU(Rectified Linear Unit)またはシグモイド(sigmoid)のような活性関数(activation function)、結果値から外れる値をフィルタリングするノーマライズ(normalize)などの機能(function)を行うことができる。
速い並列処理のために、プロセッシングシステムがフローコントローラ240、臨時メモリ250、及びプロセッシングエレメント260を複数個ずつ備えることもできる。
図2のプロセッシングシステムは、1つまたは複数個の集積回路チップで実現されることができる。例えば、プロセッシングシステム全体が1つの集積回路チップにシステムオンチップ(system on chip)の形態で含まれることができ、メインメモリ210は、1つの集積回路チップに残りの構成等220〜270がさらに他の集積回路チップに含まれるなど、プロセッシングシステムが複数個の集積回路チップで実現されることもできる。
図3は、図2のプロセッシングエレメント260の一実施形態の構成図である。
図3に示されるように、プロセッシングエレメント260は、乗算器310、加算器320、レジスタアレイ330、及びバウンダリ制御器340を備えることができる。
乗算器310は、臨時メモリ250から伝達されたフィーチャ(FEATURE)の値とウエート(WEIGHT)の値とを乗算することができる。乗算器310は、臨時メモリ250の同じポイントに格納されたフィーチャ(FEATURE)の値とウエート(WEIGHT)の値とを乗算することができる。
加算器320は、乗算器310の乗算結果とレジスタアレイ330から提供された値とを加算することができる。
バウンダリ制御器340は、バウンダリフラグ(BOUNDARY FLAG)を入力され、同じバウンダリ内での乗算結果が加算器320によって加算演算され得るようにレジスタ制御器340を制御し、バウンダリ別に加算演算結果がレジスタアレイから出力され得るようにレジスタ制御器340を制御できる。
レジスタアレイ330は、加算器320の加算演算結果を格納することができる。バウンダリが変更される場合には、レジスタアレイ330に格納された値がフィーチャマップ発生器270に出力され、レジスタアレイ330に格納された値は「0」に初期化されることができる。
結果として、プロセッシングエレメント260は、図1で説明したように、バウンダリ別にコンボリューション演算を行うことができる。
図4A及び図4Bは、フローコントローラ240がオン−チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。ここでは、フローコントローラ240が0値をスキップするゼロスキッピング(zero skipping)方式を使用しないことを例示する。
図4Aの410は、図1の4×4サイズのイメージ110がオン−チップメモリ230に格納された形態を示し、420は、図1の2×2サイズのフィルタ120がオン−チップメモリ230に格納された形態を示すことができる。
フローコントローラ240は、バウンダリ別に図4の1、2、3、4のような順序どおりにオン−チップメモリ230に格納されたイメージ410を読み出すことができる。すなわち、1番目のバウンダリでオン−チップメモリ230のイメージ410から1、5、0、6を読み出し、2番目のバウンダリでイメージ410から0、6、3、0を読み出し、3番目のバウンダリでイメージ410から3、0、4、8を読み出し、4番目のバウンダリでイメージ410から5、0、6、10を読み出すことができる。フローコントローラ240のこのような繰り返し的な読み出し動作によってオン−チップメモリ230に格納されたイメージ410のフィーチャ値が複写(duplicate)されることを図4Bで確認することができる。
また、フローコントローラ240は、オン−チップメモリ230に格納されたフィルタ420を矢印(421)のように9回繰り返して読み出し、フィルタ420のウエート値を読み出すことができる。すなわち、バウンダリサイズと同様に、4個のウエートを繰り返して読み出す方式を使用できる。フローコントローラ240のこのような繰り返し的な読み出し動作によってオン−チップメモリ230に格納されたフィルタ420のウエート値が複写(duplicate)されることを図4Bで確認することができる。
図4Bの430は、オン−チップメモリ230から読み出されたフィーチャとウエートが臨時メモリ250に書き込まれた結果を示すことができる。430を参照すれば、オン−チップメモリの36個のポイント(Point 0〜35)にフィーチャ(Feature)とウエート(Weight)が格納されたことを確認できる。バウンダリフラグ(Boundary Flag)は、フィーチャ(Feature)とウエート(Weight)のバウンダリを区分するためのものであって、バウンダリが変更される度にその値が0→1→0→1に変更されることを確認できる。
図4A及び図4Bに示されるように、オン−チップメモリ230に格納されたイメージ410とフィルタ420が臨時メモリ250に格納される過程でフィーチャ値及びウエート値が繰り返し的にアクセスされることにより、フィーチャ値及びウエート値の一部が複写(duplicate)されることを確認できる。
図5は、フローコントローラ240がオン−チップメモリ230に格納されたイメージ410とフィルタ420を読み出して臨時メモリ250に書き込む過程の他の実施形態を説明するための図である。ここでは、フローコントローラ240がゼロスキッピング方式を使用することを例示する。オン−チップメモリ230に格納されたイメージ410とフィルタ420の形式及びフローコントローラ240がイメージ410とフィルタ420をアクセスする過程は、図4A及び図4Bと同様なので、ここでは、これについての図示を省略する。
フローコントローラ240のゼロスキッピング方式は、次の(1)と(2)の方式で行われることができる。
(1)フローコントローラ240は、臨時メモリ250の同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を有する場合に、当該ポイントをスキップできる。具体的に、フローコントローラ240は、オン−チップメモリ230から読み出したフィーチャとウエートのうち1つ以上が0の値を有する場合には、当該値を臨時メモリに格納した後、書き込まれるポイントの値をホールドすることができる。書き込まれるポイントの値を増加させずにホールドすることで、臨時メモリの当該ポイントに新しい値(本来、次のポイントに格納されるべき値)がオーバーライト(overwrite)され得る。
図5の左側(430)は、ゼロスキッピング方式が使用されずにフィーチャ(Feature)とウエート(Weight)が臨時メモリ250に格納された場合を示し、図5の右側(530)は、ゼロスキッピング方式が使用され、フィーチャ(Feature)とウエート(Weight)が臨時メモリ250に格納された場合を示すが、左側(430)でフィーチャ(Feature)とウエート(Weight)のうち1つ以上が0の値を含むポイント(例、Point 1、2、4、5等)がオーバーライトされて、右側(530)ではこのようなポイントが除去されたことを確認できる。
(2)フローコントローラ240は、同じバウンダリ内で少なくとも1つのポイントはオーバーライトされないように制御することができる。これは、バウンダリ内部の4個のポイントが全てオーバーライトされるならば、当該バウンダリが消えて、当該バウンダリのコンボリューション結果値が導出され得ないためである。図5の左側(430)の2番目のバウンダリ(2nd Boundary)を見ると、4個のポイント(Point 4〜7)の全部がゼロスキッピングの対象であるが、これらを全てスキッピングするならば、2番目のバウンダリのコンボリューション演算値が0という結果を導出することも不可能である。したがって、この場合に、フローコントローラ240は、フィーチャ(Feature)とウエート(Weight)に0の値を書き込み、バウンダリフラグ(Boundary Flag)を介してバウンダリを区別することができる。図5の右側(530)のポイント2(Point 2)が正に2番目のバウンダリ(2nd Boundary)を示す値であり、これをプロセッシングエレメント260が演算すれば、2番目のバウンダリのコンボリューション演算結果が0という結果を導出することができる。
上述した(1)と(2)の方式でゼロスキッピング動作を行うと、臨時メモリ250のポイントのうち、演算結果値に影響を与えないポイントを除去可能であるから、プロセッシングエレメント260の不要な演算及びこれによる時間浪費及び電流浪費を防ぐことができる。また、ゼロスキッピングが行われながらも、バウンダリ内の全てのポイントがスキッピングされることは防止するので、バウンダリが省略されるという問題は生じないことができる。
図6は、フローコントローラ240がフィーチャとウエートを臨時メモリ250に書き込む動作を示した順序図である。
まず、フローコントローラ240は、書き込むフィーチャまたはウエートが0値を含むかを確認できる(601)。
フィーチャとウエートが共に0値を含まない場合には(601においてN)、フィーチャとウエートが臨時メモリ250の現在ポイントに書き込まれることができる(603)。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。
現在ポイントの値は、1の分だけ増加され(605)、次のフィーチャとウエートを臨時メモリ250に書き込むために、再度ステップ(601)が進まれ得る。
フィーチャまたはウエートが0値を含む場合には(601においてY)、バウンダリ内の全てのポイントがゼロスキッピングの対象になるオールゼロケース(All zero case)であるか否かが判断され得る(607)。
オールゼロケースでない場合に(607においてN)、フィーチャとウエートが臨時メモリ250の現在ポイントに書き込まれることができる(609)。そして、現在ポイント値が増加せずにそのまま維持された状態で、次のフィーチャとウエートを臨時メモリ250に書き込むために、すなわち、「609」で書き込まれたフィーチャとウエートをオーバーライトするために、再度ステップ(601)が進まれ得る。
オールゼロケースである場合に(607においてY)、臨時メモリ250の現在ポイントのフィーチャとウエートに0が書き込まれることができる(611)。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。また、バウンダリ全体がオーバーライトされることを防止するために、現在ポイントの値を1の分だけ増加させることができる(613)。そして、次のフィーチャとウエートを臨時メモリ250に格納するために、再度ステップ(601)が進まれ得る。
フローコントローラが図6のように動作すれば、結果として、図5の右側(530)のような形態で臨時メモリ250にフィーチャ、ウエート、及びバウンダリフラグが書き込まれることができる。
上述した実施形態では、フローコントローラ240が臨時メモリ250で書き込まれるポイントの値を増加させずにホールドさせることでにより、新しい値がオーバーライトされるようにする方法でゼロスキッピングを実現したことを例示した。しかし、これとは異なり、フローコントローラ240が、ゼロスキッピング対象フィーチャとウエートが臨時メモリ250に書き込まれないように制御する方式でゼロスキッピング動作が行われ得ることは当たり前である。この場合にも、同じバウンダリ内で少なくとも1つのポイントは、臨時メモリ250に書き込まれて、バウンダリの区別が可能なようにしなければならない。
本発明の技術思想は、上記望ましい実施形態によって具体的に記録されたが、上記した実施形態は、その説明のためのものであり、その制限のためのものでないことに注意すべきである。また、本発明の技術分野の専門家であれば、本発明の技術思想の範囲内で様々な実施形態が可能であることが分かるであろう。
210 メインメモリ
220 メモリインターフェース
230 オン−チップメモリ
240 フローコントローラ
250 臨時メモリ
260 プロセッシングエレメント
270 フィーチャマップ発生器

Claims (18)

  1. フィーチャとウエートを格納する臨時メモリと、
    前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
    前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
    を備えるプロセッシングシステム。
  2. 前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納する請求項1に記載のプロセッシングシステム。
  3. 前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントはオーバーライトされないように制御する請求項2に記載のプロセッシングシステム。
  4. 前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの1つのポイントにフィーチャとウエートのうち1つ以上を0に記録し、バウンダリフラグを格納する請求項2に記載のプロセッシングシステム。
  5. 前記臨時メモリは、スクラッチパッドを含む請求項1に記載のプロセッシングシステム。
  6. 多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート及びバウンダリフラグを格納する臨時メモリと、
    前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメントと、
    前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
    を備えるプロセッシングシステム。
  7. 前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントはオーバーライトされないように制御する請求項6に記載のプロセッシングシステム。
  8. 前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの1つのポイントにフィーチャとウエートのうち1つ以上を0に記録し、バウンダリフラグを格納する請求項6に記載のプロセッシングシステム。
  9. 前記プロセッシングエレメントは、
    前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算器と、
    前記乗算器の乗算演算結果に対する加算演算のための加算器と、
    前記加算器の加算演算結果を格納するレジスタアレイと、
    前記バウンダリフラグを入力され、同じバウンダリの乗算演算結果が加算演算されるように前記レジスタアレイを制御し、バウンダリ別に加算演算結果が前記レジスタアレイから出力されるように制御するバウンダリ制御器と、
    を備える請求項6に記載のプロセッシングシステム。
  10. 前記プロセッシングシステムは、
    メインメモリと、
    前記メインメモリをアクセスするためのメモリインターフェースと、
    前記メモリインターフェースを介して前記メインメモリから読み出されたフィーチャとウエートを格納するオン−チップメモリと、
    をさらに備え、
    前記フローコントローラは、前記オン−チップメモリに格納されたフィーチャとウエートを前記臨時メモリに格納する請求項6に記載のプロセッシングシステム。
  11. 前記フローコントローラは、
    前記オン−チップメモリに格納されたフィーチャを前記臨時メモリに格納する過程で前記オン−チップメモリに格納されたフィーチャの一部を繰り返して読み出して複写する請求項10に記載のプロセッシングシステム。
  12. 前記プロセッシングシステムは、
    前記プロセッシングエレメントの演算結果を後処理するためのフィーチャマップ発生器をさらに備える請求項10に記載のプロセッシングシステム。
  13. 前記メインメモリは、DRAMを備え、
    前記オン−チップメモリは、SRAMを備える請求項10に記載のプロセッシングシステム。
  14. 前記臨時メモリは、スクラッチパッドを含む請求項6に記載のプロセッシングシステム。
  15. 前記プロセッシングシステムは、
    前記プロセッシングエレメントと前記フローコントローラとを複数個含む請求項6に記載のプロセッシングシステム。
  16. フィーチャとウエートを臨時格納する臨時メモリと、
    前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
    前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラと、
    を備えるプロセッシングシステム。
  17. 前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納する請求項16に記載のプロセッシングシステム。
  18. 前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントは前記臨時メモリに格納されるように制御する請求項17に記載のプロセッシングシステム。
JP2019202872A 2018-12-31 2019-11-08 プロセッシングシステム Active JP7437135B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180173358A KR20200082613A (ko) 2018-12-31 2018-12-31 프로세싱 시스템
KR10-2018-0173358 2018-12-31

Publications (2)

Publication Number Publication Date
JP2020109621A true JP2020109621A (ja) 2020-07-16
JP7437135B2 JP7437135B2 (ja) 2024-02-22

Family

ID=71122022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019202872A Active JP7437135B2 (ja) 2018-12-31 2019-11-08 プロセッシングシステム

Country Status (4)

Country Link
US (1) US11551069B2 (ja)
JP (1) JP7437135B2 (ja)
KR (1) KR20200082613A (ja)
CN (1) CN111382861B (ja)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203798B2 (en) * 2003-03-20 2007-04-10 Matsushita Electric Industrial Co., Ltd. Data memory cache unit and data memory cache system
CN103984560B (zh) * 2014-05-30 2017-09-19 东南大学 基于大规模粗粒度嵌入式可重构系统及其处理方法
WO2017015649A1 (en) * 2015-07-23 2017-01-26 Mireplica Technology, Llc Performance enhancement for two-dimensional array processor
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
EP3408798B1 (en) * 2016-01-29 2020-07-15 FotoNation Limited A convolutional neural network
US20180082181A1 (en) 2016-05-13 2018-03-22 Samsung Electronics, Co. Ltd. Neural Network Reordering, Weight Compression, and Processing
KR102566325B1 (ko) 2016-07-18 2023-08-14 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작 방법
JP6800656B2 (ja) * 2016-08-24 2020-12-16 キヤノン株式会社 演算回路、その制御方法及びプログラム
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
KR102631381B1 (ko) 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US20180131946A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolution neural network system and method for compressing synapse data of convolution neural network
KR20180060149A (ko) 2016-11-28 2018-06-07 삼성전자주식회사 컨볼루션 처리 장치 및 방법
KR102642853B1 (ko) * 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
US10395141B2 (en) * 2017-03-20 2019-08-27 Sap Se Weight initialization for machine learning models
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
CN107256424B (zh) * 2017-05-08 2020-03-31 中国科学院计算技术研究所 三值权重卷积网络处理系统及方法
JP7020485B2 (ja) 2017-06-22 2022-02-16 日本電気株式会社 演算装置、演算方法及びプログラム
CN107656899A (zh) * 2017-09-27 2018-02-02 深圳大学 一种基于fpga的模板卷积实现方法和系统
US20190303757A1 (en) * 2018-03-29 2019-10-03 Mediatek Inc. Weight skipping deep learning accelerator
CN108960414B (zh) * 2018-07-20 2022-06-07 中国人民解放军国防科技大学 一种基于深度学习加速器实现单广播多运算的方法
KR20200091623A (ko) * 2019-01-23 2020-07-31 삼성전자주식회사 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치

Also Published As

Publication number Publication date
KR20200082613A (ko) 2020-07-08
CN111382861B (zh) 2023-11-10
US11551069B2 (en) 2023-01-10
CN111382861A (zh) 2020-07-07
JP7437135B2 (ja) 2024-02-22
US20200210819A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
US11907830B2 (en) Neural network architecture using control logic determining convolution operation sequence
CN110582785B (zh) 配置用于执行层描述符列表的具有功率效率的深度神经网络模块
CN107403221B (zh) 用于实现卷积神经网络的方法和硬件、制造方法和系统
US11915139B2 (en) Modifying machine learning models to improve locality
GB2560600A (en) Nueral Network Hardware
CN107766079A (zh) 处理器以及用于在处理器上执行指令的方法
GB2568102A (en) Exploiting sparsity in a neural network
US20220043630A1 (en) Electronic device and control method therefor
CN114328315A (zh) 基于dma的数据预处理方法、dma部件及芯片结构
JP2020109621A (ja) プロセッシングシステム
US20160140034A1 (en) Devices and methods for linked list array hardware implementation
CN110390626A (zh) 一种卷积神经网络的图像处理方法及装置
CN114118395B (zh) 智能处理器装置与降低存储器带宽的方法
US20230186045A1 (en) Neural Network Processing
CN116303135B (zh) 任务数据的装载方法、装置和计算机设备
KR100987332B1 (ko) 메모리 구조에 따른 메모리 관리 장치
CN113298243A (zh) 数据存储管理方法和装置以及卷积计算硬件加速器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240209

R150 Certificate of patent or registration of utility model

Ref document number: 7437135

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150