(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-14
(45)【発行日】2024-02-22
(54)【発明の名称】プロセッシングシステム
(51)【国際特許分類】
G06F 17/10 20060101AFI20240215BHJP
G06F 12/0897 20160101ALI20240215BHJP
G06F 12/0875 20160101ALI20240215BHJP
G06F 12/00 20060101ALI20240215BHJP
【FI】
G06F17/10 S
G06F12/0897 100
G06F12/0875 100
G06F12/00 560B
(21)【出願番号】P 2019202872
(22)【出願日】2019-11-08
【審査請求日】2022-10-26
(31)【優先権主張番号】10-2018-0173358
(32)【優先日】2018-12-31
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100163050
【氏名又は名称】小栗 眞由美
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】チャン ジェヒョク
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2018/235357(WO,A1)
【文献】国際公開第2018/080624(WO,A1)
【文献】特表2020-500365(JP,A)
【文献】国際公開第2018/185765(WO,A1)
【文献】特表2020-517006(JP,A)
【文献】特開2018-077842(JP,A)
【文献】Angshuman Parasharほか,SCNN:An Accelerator for Compressed-sparse Convolutional Neural Networks,ACM SIGARCH compuer architecture news,2017年06月24日,Volume 45, Issue .2,27-40頁,[online],[令和5年7月13日検索],インターネット <URL:http://doi.org/10.1145/3140659.3080254>,ISCA '17: Proceedings of the 44th Annual International Symposium on Computer Architecture
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06F 12/0897
G06F 12/0875
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
フィーチャとウエートを格納する臨時メモリと、
前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
を備え
、
前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納し、
前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントはオーバーライトされないように制御するプロセッシングシステム。
【請求項2】
前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの1つのポイントにフィーチャとウエートのうち1つ以上を0に記録し、バウンダリフラグを格納する請求項
1に記載のプロセッシングシステム。
【請求項3】
前記臨時メモリは、スクラッチパッドを含む請求項1に記載のプロセッシングシステム。
【請求項4】
多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート及びバウンダリフラグを格納する臨時メモリと、
前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメントと、
前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
を備え
、
前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントはオーバーライトされないように制御するプロセッシングシステム。
【請求項5】
前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの1つのポイントにフィーチャとウエートのうち1つ以上を0に記録し、バウンダリフラグを格納する請求項
4に記載のプロセッシングシステム。
【請求項6】
前記プロセッシングエレメントは、
前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算器と、
前記乗算器の乗算演算結果に対する加算演算のための加算器と、
前記加算器の加算演算結果を格納するレジスタアレイと、
前記バウンダリフラグを入力され、同じバウンダリの乗算演算結果が加算演算されるように前記レジスタアレイを制御し、バウンダリ別に加算演算結果が前記レジスタアレイから出力されるように制御するバウンダリ制御器と、
を備える請求項
4に記載のプロセッシングシステム。
【請求項7】
メインメモリと、
前記メインメモリをアクセスするためのメモリインターフェースと、
前記メモリインターフェースを介して前記メインメモリから読み出されたフィーチャとウエートを格納するオン-チップメモリと、
をさらに備え、
前記フローコントローラは、前記オン-チップメモリに格納されたフィーチャとウエートを前記臨時メモリに格納する請求項
4に記載のプロセッシングシステム。
【請求項8】
前記フローコントローラは、
前記オン-チップメモリに格納されたフィーチャを前記臨時メモリに格納する過程で前記オン-チップメモリに格納されたフィーチャの一部を繰り返して読み出して複写する請求項
7に記載のプロセッシングシステム。
【請求項9】
前記プロセッシングエレメントの演算結果を後処理するためのフィーチャマップ発生器をさらに備える請求項
7に記載のプロセッシングシステム。
【請求項10】
前記メインメモリは、DRAMを備え、
前記オン-チップメモリは、SRAMを備える請求項
7に記載のプロセッシングシステム。
【請求項11】
前記臨時メモリは、スクラッチパッドを含む請求項
4に記載のプロセッシングシステム。
【請求項12】
前記プロセッシングエレメントと前記フローコントローラとを複数個含む請求項
4に記載のプロセッシングシステム。
【請求項13】
フィーチャとウエートを臨時格納する臨時メモリと、
前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラと、
を備え
、
前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納し、
前記フローコントローラは、同じバウンダリ内で少なくとも1つのポイントは前記臨時メモリに格納されるように制御するプロセッシングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本特許文献は、プロセッシングシステム(processing system)に関する。
【背景技術】
【0002】
CNN(Convolution Neural Network)は、イメージ認識及び分析のために主に使用されるプロセッシングシステム(processing system)である。このプロセッシングシステムは、特定フィルタでイメージからフィーチャ(feature)を抽出するコンボリューション(convolution)演算が必要であるが、このような作業のために、乗算及び加算演算をするマトリックス乗算ユニット(matrix multiplication unit)を使用するようになる。密集したイメージ(dense image)とフィルタが使用される場合、すなわち、データに0が少ない場合=スパーシティ(sparcity)が少ない場合、このような演算ユニットが効率的に使用され得るが、CNNプロセッシングシステムで使用されるほとんどのイメージとフィルタは、30~70%程度のスパーシティを有している。
スパーシティが増加するようになると、データに多い数の0値(zero-value)が含まれるが、0値は、乗算及び加算演算の結果値に何らの影響を与えないが、不要なレイテンシを増加させ、電流を消費することになる原因となり得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の実施形態等は、プロセッシングシステムの性能を向上させ、電流消費を減らす技術を提供できる。
【課題を解決するための手段】
【0004】
本発明の一実施形態に係るプロセッシングシステムは、フィーチャ(feature)とウエート(weight)を格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
【0005】
本発明の他の実施形態に係るプロセッシングシステムは、多数のポイントを含み、それぞれのポイントにフィーチャ(feature)、ウエート(weight)、及びバウンダリフラグを格納する臨時メモリと、前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち1つ以上の値が0である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
【0006】
本発明のさらに他の実施形態に係るプロセッシングシステムは、フィーチャ(feature)とウエート(weight)を臨時格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント(processing element)と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラとを備えることができる。
【発明の効果】
【0007】
本発明の実施形態等によれば、プロセッシングシステムの性能を向上させ、電流消費を減らすことができる。
【図面の簡単な説明】
【0008】
【
図1】プロセッシングシステムで行うコンボリューション(convolution)演算を説明するための図である。
【
図2】本発明の一実施形態に係るプロセッシングシステムの構成図である。
【
図3】
図2のプロセッシングエレメント260の一実施形態の構成図である。
【
図4A】フローコントローラ240がオン-チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。
【
図4B】フローコントローラ240がオン-チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。
【
図5】フローコントローラ240がオン-チップメモリ230に格納されたイメージ410とフィルタ420を読み出して臨時メモリ250に書き込む過程の他の実施形態を説明するための図である。
【
図6】フローコントローラ240がフィーチャとウエートを臨時メモリ250に書き込む動作を示した順序図である。
【発明を実施するための形態】
【0009】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施できるように詳細に説明するために、本発明の最も好ましい実施形態を添付図面を参照して説明する。本発明を説明するにあたって、本発明の要旨と関係ない構成は省略されることができる。各図面の構成要素等に参照符号を付加するにあたって、同じ構成要素等に限っては、例え、他の図面上に表示されても、なるべく同じ番号を有するようにしていることに留意すべきである。
【0010】
図1は、プロセッシングシステムで行うコンボリューション(convolution)演算を説明するための図である。
【0011】
図1の110は、イメージ(image)を表すことができる。ここでは、イメージのサイズを4×4に例示した。120は、フィルタ(filter)を表すことができる。ここでは、フィルタのサイズを2×2に例示した。イメージに含まれる値をフィーチャといい、フィルタに含まれる値をウエートといえる。イメージ110には、16個のフィーチャが含まれ、フィルタ120には、4個のウエートが含まれ得る。
【0012】
コンボリューション演算は、イメージ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でありうる。
【0013】
コンボリューション演算過程を説明すれば、フィーチャとウエートのうち1つ以上が0である場合には、当該バウンダリの演算結果値に何らの影響を与えないことが確認できる。例えば、1番目のバウンダリ演算1×17+5×0+0×0+6×20=137においてフィーチャとウエートのうち1つ以上が0である下線を引いた部分は、演算結果137に何らの影響を与えることができないことが確認できる。
【0014】
図2は、本発明の一実施形態に係るプロセッシングシステムの構成図である。
図2に示されるように、プロセッシングシステムは、メインメモリ210、メモリインターフェース220、オン-チップメモリ230、フローコントローラ(flow controller、240)、臨時メモリ250、プロセッシングエレメント(processing element、260)、及びフィーチャマップ発生器(feature map generator、270)を備えることができる。
【0015】
メインメモリ210は、イメージ(image)とフィルタ(filter)などを格納する大容量メモリでありうる。メインメモリ210では、DRAMが使用され得るし、他の種類のメモリが使用されることもできる。
【0016】
メモリインターフェース220は、演算に必要なイメージとフィルタをメインメモリ210から読み出してオン-チップメモリ230に移すために使用されることができる。メモリインターフェース220は、メインメモリ210及びオン-チップメモリ230をアクセスするためのメモリコントローラ及びプロトコルなどを含むことができる。
【0017】
オン-チップメモリ230は、メインメモリ210からプロセッシングエレメント260が演算する一部データをロードして格納するメモリでありうる。オン-チップメモリ230は、プロセッシングエレメント260とメインメモリ210との間のアクセスレイテンシ(access latency)を最小化するために使用される一種の大容量キャッシュメモリ(cache memory)でありうる。ここで、大容量とは、オン-チップメモリ230の容量が臨時メモリ250に比べて大容量であるということを意味でき、オン-チップメモリ230の容量は、メインメモリ210の容量よりは小さいことができる。オン-チップメモリ230では、SRAMが使用され得る。
【0018】
フローコントローラ240は、オン-チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込むことができる。フローコントローラ240は、フィーチャまたはウエートの値が0である場合に、当該値に対する演算がスキップ(skip)され得るようにするための動作を行うことができ、オン-チップメモリ230のフィーチャとウエートを臨時メモリ250にロードする過程でフィーチャとウエートを複写する動作も行うことができる。フローコントローラ240の詳細な動作については後述する。
【0019】
臨時メモリ250は、プロセッシングエレメント260が演算するフィーチャとウエートを臨時格納するメモリでありうる。臨時メモリ250は、プロセッシングエレメント260が直接アクセスするキャッシュメモリでありうる。すなわち、臨時メモリ250がレベル1のキャッシュであれば、オン-チップメモリは、レベル2のキャッシュでありうる。臨時メモリ250は、多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート、及びフィーチャとウエートのバウンダリを表すバウンダリフラグ(boundary flag)を格納できる。臨時メモリ250は、スクラッチパッド(scratch pad)でありうる。
【0020】
プロセッシングエレメント260は、臨時メモリ250の同じポイントに格納されたフィーチャとウエートを乗算し、同じバウンダリ内の乗算結果を合算する演算を行うことができる。
【0021】
フィーチャマップ発生器270は、プロセッシングエレメント260のコンボリューション演算結果をポストプロセッシング(post-processing)することができる。フィーチャマップ発生器270は、ピクセル(pixel)別に平均(average)または最大(max)値を探すプーリング(pooling)、閾値(threshold)基盤でデータをフィルタリングするReLU(Rectified Linear Unit)またはシグモイド(sigmoid)のような活性関数(activation function)、結果値から外れる値をフィルタリングするノーマライズ(normalize)などの機能(function)を行うことができる。
速い並列処理のために、プロセッシングシステムがフローコントローラ240、臨時メモリ250、及びプロセッシングエレメント260を複数個ずつ備えることもできる。
【0022】
図2のプロセッシングシステムは、1つまたは複数個の集積回路チップで実現されることができる。例えば、プロセッシングシステム全体が1つの集積回路チップにシステムオンチップ(system on chip)の形態で含まれることができ、メインメモリ210は、1つの集積回路チップに残りの構成等220~270がさらに他の集積回路チップに含まれるなど、プロセッシングシステムが複数個の集積回路チップで実現されることもできる。
【0023】
図3は、
図2のプロセッシングエレメント260の一実施形態の構成図である。
図3に示されるように、プロセッシングエレメント260は、乗算器310、加算器320、レジスタアレイ330、及びバウンダリ制御器340を備えることができる。
【0024】
乗算器310は、臨時メモリ250から伝達されたフィーチャ(FEATURE)の値とウエート(WEIGHT)の値とを乗算することができる。乗算器310は、臨時メモリ250の同じポイントに格納されたフィーチャ(FEATURE)の値とウエート(WEIGHT)の値とを乗算することができる。
【0025】
加算器320は、乗算器310の乗算結果とレジスタアレイ330から提供された値とを加算することができる。
バウンダリ制御器340は、バウンダリフラグ(BOUNDARY FLAG)を入力され、同じバウンダリ内での乗算結果が加算器320によって加算演算され得るようにレジスタ制御器340を制御し、バウンダリ別に加算演算結果がレジスタアレイから出力され得るようにレジスタ制御器340を制御できる。
【0026】
レジスタアレイ330は、加算器320の加算演算結果を格納することができる。バウンダリが変更される場合には、レジスタアレイ330に格納された値がフィーチャマップ発生器270に出力され、レジスタアレイ330に格納された値は「0」に初期化されることができる。
結果として、プロセッシングエレメント260は、
図1で説明したように、バウンダリ別にコンボリューション演算を行うことができる。
【0027】
図4A及び
図4Bは、フローコントローラ240がオン-チップメモリ230に格納されたイメージとフィルタを読み出して臨時メモリ250に書き込む過程の一実施形態を説明するための図である。ここでは、フローコントローラ240が0値をスキップするゼロスキッピング(zero skipping)方式を使用しないことを例示する。
図4Aの410は、
図1の4×4サイズのイメージ110がオン-チップメモリ230に格納された形態を示し、420は、
図1の2×2サイズのフィルタ120がオン-チップメモリ230に格納された形態を示すことができる。
【0028】
フローコントローラ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で確認することができる。
【0029】
また、フローコントローラ240は、オン-チップメモリ230に格納されたフィルタ420を矢印(421)のように9回繰り返して読み出し、フィルタ420のウエート値を読み出すことができる。すなわち、バウンダリサイズと同様に、4個のウエートを繰り返して読み出す方式を使用できる。フローコントローラ240のこのような繰り返し的な読み出し動作によってオン-チップメモリ230に格納されたフィルタ420のウエート値が複写(duplicate)されることを
図4Bで確認することができる。
【0030】
図4Bの430は、オン-チップメモリ230から読み出されたフィーチャとウエートが臨時メモリ250に書き込まれた結果を示すことができる。430を参照すれば、オン-チップメモリの36個のポイント(Point 0~35)にフィーチャ(Feature)とウエート(Weight)が格納されたことを確認できる。バウンダリフラグ(Boundary Flag)は、フィーチャ(Feature)とウエート(Weight)のバウンダリを区分するためのものであって、バウンダリが変更される度にその値が0→1→0→1に変更されることを確認できる。
【0031】
図4A及び
図4Bに示されるように、オン-チップメモリ230に格納されたイメージ410とフィルタ420が臨時メモリ250に格納される過程でフィーチャ値及びウエート値が繰り返し的にアクセスされることにより、フィーチャ値及びウエート値の一部が複写(duplicate)されることを確認できる。
【0032】
図5は、フローコントローラ240がオン-チップメモリ230に格納されたイメージ410とフィルタ420を読み出して臨時メモリ250に書き込む過程の他の実施形態を説明するための図である。ここでは、フローコントローラ240がゼロスキッピング方式を使用することを例示する。オン-チップメモリ230に格納されたイメージ410とフィルタ420の形式及びフローコントローラ240がイメージ410とフィルタ420をアクセスする過程は、
図4A及び
図4Bと同様なので、ここでは、これについての図示を省略する。
【0033】
フローコントローラ240のゼロスキッピング方式は、次の(1)と(2)の方式で行われることができる。
(1)フローコントローラ240は、臨時メモリ250の同じポイントに格納されるフィーチャとウエートのうち1つ以上が0の値を有する場合に、当該ポイントをスキップできる。具体的に、フローコントローラ240は、オン-チップメモリ230から読み出したフィーチャとウエートのうち1つ以上が0の値を有する場合には、当該値を臨時メモリに格納した後、書き込まれるポイントの値をホールドすることができる。書き込まれるポイントの値を増加させずにホールドすることで、臨時メモリの当該ポイントに新しい値(本来、次のポイントに格納されるべき値)がオーバーライト(overwrite)され得る。
【0034】
図5の左側(430)は、ゼロスキッピング方式が使用されずにフィーチャ(Feature)とウエート(Weight)が臨時メモリ250に格納された場合を示し、
図5の右側(530)は、ゼロスキッピング方式が使用され、フィーチャ(Feature)とウエート(Weight)が臨時メモリ250に格納された場合を示すが、左側(430)でフィーチャ(Feature)とウエート(Weight)のうち1つ以上が0の値を含むポイント(例、Point 1、2、4、5等)がオーバーライトされて、右側(530)ではこのようなポイントが除去されたことを確認できる。
【0035】
(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の不要な演算及びこれによる時間浪費及び電流浪費を防ぐことができる。また、ゼロスキッピングが行われながらも、バウンダリ内の全てのポイントがスキッピングされることは防止するので、バウンダリが省略されるという問題は生じないことができる。
【0036】
図6は、フローコントローラ240がフィーチャとウエートを臨時メモリ250に書き込む動作を示した順序図である。
まず、フローコントローラ240は、書き込むフィーチャまたはウエートが0値を含むかを確認できる(601)。
【0037】
フィーチャとウエートが共に0値を含まない場合には(601においてN)、フィーチャとウエートが臨時メモリ250の現在ポイントに書き込まれることができる(603)。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。
【0038】
現在ポイントの値は、1の分だけ増加され(605)、次のフィーチャとウエートを臨時メモリ250に書き込むために、再度ステップ(601)が進まれ得る。
フィーチャまたはウエートが0値を含む場合には(601においてY)、バウンダリ内の全てのポイントがゼロスキッピングの対象になるオールゼロケース(All zero case)であるか否かが判断され得る(607)。
【0039】
オールゼロケースでない場合に(607においてN)、フィーチャとウエートが臨時メモリ250の現在ポイントに書き込まれることができる(609)。そして、現在ポイント値が増加せずにそのまま維持された状態で、次のフィーチャとウエートを臨時メモリ250に書き込むために、すなわち、「609」で書き込まれたフィーチャとウエートをオーバーライトするために、再度ステップ(601)が進まれ得る。
【0040】
オールゼロケースである場合に(607においてY)、臨時メモリ250の現在ポイントのフィーチャとウエートに0が書き込まれることができる(611)。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。また、バウンダリ全体がオーバーライトされることを防止するために、現在ポイントの値を1の分だけ増加させることができる(613)。そして、次のフィーチャとウエートを臨時メモリ250に格納するために、再度ステップ(601)が進まれ得る。
【0041】
フローコントローラが
図6のように動作すれば、結果として、
図5の右側(530)のような形態で臨時メモリ250にフィーチャ、ウエート、及びバウンダリフラグが書き込まれることができる。
【0042】
上述した実施形態では、フローコントローラ240が臨時メモリ250で書き込まれるポイントの値を増加させずにホールドさせることでにより、新しい値がオーバーライトされるようにする方法でゼロスキッピングを実現したことを例示した。しかし、これとは異なり、フローコントローラ240が、ゼロスキッピング対象フィーチャとウエートが臨時メモリ250に書き込まれないように制御する方式でゼロスキッピング動作が行われ得ることは当たり前である。この場合にも、同じバウンダリ内で少なくとも1つのポイントは、臨時メモリ250に書き込まれて、バウンダリの区別が可能なようにしなければならない。
【0043】
本発明の技術思想は、上記望ましい実施形態によって具体的に記録されたが、上記した実施形態は、その説明のためのものであり、その制限のためのものでないことに注意すべきである。また、本発明の技術分野の専門家であれば、本発明の技術思想の範囲内で様々な実施形態が可能であることが分かるであろう。
【符号の説明】
【0044】
210 メインメモリ
220 メモリインターフェース
230 オン-チップメモリ
240 フローコントローラ
250 臨時メモリ
260 プロセッシングエレメント
270 フィーチャマップ発生器