(57)【要約】      （修正有）【課題】プロセッシングシステムの性能を向上させ、電流消費を減らす技術を提供する。【解決手段】プロセッシングシステムは、フィーチャとウエートを格納する臨時メモリと、臨時メモリに格納されたフィーチャの値とウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、フィーチャとウエートを臨時メモリに格納されるように制御し、臨時メモリの同じポイントに格納されたフィーチャとウエートのうち１つ以上の値が０である場合に、当該ポイントがオーバーライトされるように制御するフローコントローラとを備える。【選択図】図２
2020109621.tif 000002
【特許請求の範囲】
【請求項１】
フィーチャとウエートを格納する臨時メモリと、
前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち１つ以上の値が０である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
を備えるプロセッシングシステム。
【請求項２】
前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納する請求項１に記載のプロセッシングシステム。
【請求項３】
前記フローコントローラは、同じバウンダリ内で少なくとも１つのポイントはオーバーライトされないように制御する請求項２に記載のプロセッシングシステム。
【請求項４】
前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの１つのポイントにフィーチャとウエートのうち１つ以上を０に記録し、バウンダリフラグを格納する請求項２に記載のプロセッシングシステム。
【請求項５】
前記臨時メモリは、スクラッチパッドを含む請求項１に記載のプロセッシングシステム。
【請求項６】
多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート及びバウンダリフラグを格納する臨時メモリと、
前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメントと、
前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち１つ以上の値が０である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラと、
を備えるプロセッシングシステム。
【請求項７】
前記フローコントローラは、同じバウンダリ内で少なくとも１つのポイントはオーバーライトされないように制御する請求項６に記載のプロセッシングシステム。
【請求項８】
前記フローコントローラは、同じバウンダリ内の全てのポイントがオーバーライト対象と判断される場合に、当該バウンダリの１つのポイントにフィーチャとウエートのうち１つ以上を０に記録し、バウンダリフラグを格納する請求項６に記載のプロセッシングシステム。
【請求項９】
前記プロセッシングエレメントは、
前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算器と、
前記乗算器の乗算演算結果に対する加算演算のための加算器と、
前記加算器の加算演算結果を格納するレジスタアレイと、
前記バウンダリフラグを入力され、同じバウンダリの乗算演算結果が加算演算されるように前記レジスタアレイを制御し、バウンダリ別に加算演算結果が前記レジスタアレイから出力されるように制御するバウンダリ制御器と、
を備える請求項６に記載のプロセッシングシステム。
【請求項１０】
前記プロセッシングシステムは、
メインメモリと、
前記メインメモリをアクセスするためのメモリインターフェースと、
前記メモリインターフェースを介して前記メインメモリから読み出されたフィーチャとウエートを格納するオン−チップメモリと、
をさらに備え、
前記フローコントローラは、前記オン−チップメモリに格納されたフィーチャとウエートを前記臨時メモリに格納する請求項６に記載のプロセッシングシステム。
【請求項１１】
前記フローコントローラは、
前記オン−チップメモリに格納されたフィーチャを前記臨時メモリに格納する過程で前記オン−チップメモリに格納されたフィーチャの一部を繰り返して読み出して複写する請求項１０に記載のプロセッシングシステム。
【請求項１２】
前記プロセッシングシステムは、
前記プロセッシングエレメントの演算結果を後処理するためのフィーチャマップ発生器をさらに備える請求項１０に記載のプロセッシングシステム。
【請求項１３】
前記メインメモリは、ＤＲＡＭを備え、
前記オン−チップメモリは、ＳＲＡＭを備える請求項１０に記載のプロセッシングシステム。
【請求項１４】
前記臨時メモリは、スクラッチパッドを含む請求項６に記載のプロセッシングシステム。
【請求項１５】
前記プロセッシングシステムは、
前記プロセッシングエレメントと前記フローコントローラとを複数個含む請求項６に記載のプロセッシングシステム。
【請求項１６】
フィーチャとウエートを臨時格納する臨時メモリと、
前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメントと、
前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち１つ以上が０の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラと、
を備えるプロセッシングシステム。
【請求項１７】
前記臨時メモリは、前記臨時メモリに格納されるフィーチャとウエートのバウンダリを表すためのバウンダリフラグをさらに格納する請求項１６に記載のプロセッシングシステム。
【請求項１８】
前記フローコントローラは、同じバウンダリ内で少なくとも１つのポイントは前記臨時メモリに格納されるように制御する請求項１７に記載のプロセッシングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許文献は、プロセッシングシステム（ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ）に関する。
【背景技術】
【０００２】
ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）は、イメージ認識及び分析のために主に使用されるプロセッシングシステム（ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ）である。このプロセッシングシステムは、特定フィルタでイメージからフィーチャ（ｆｅａｔｕｒｅ）を抽出するコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算が必要であるが、このような作業のために、乗算及び加算演算をするマトリックス乗算ユニット（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｕｎｉｔ）を使用するようになる。密集したイメージ（ｄｅｎｓｅ  ｉｍａｇｅ）とフィルタが使用される場合、すなわち、データに０が少ない場合＝スパーシティ（ｓｐａｒｃｉｔｙ）が少ない場合、このような演算ユニットが効率的に使用され得るが、ＣＮＮプロセッシングシステムで使用されるほとんどのイメージとフィルタは、３０〜７０％程度のスパーシティを有している。
スパーシティが増加するようになると、データに多い数の０値（ｚｅｒｏ−ｖａｌｕｅ）が含まれるが、０値は、乗算及び加算演算の結果値に何らの影響を与えないが、不要なレイテンシを増加させ、電流を消費することになる原因となり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の実施形態等は、プロセッシングシステムの性能を向上させ、電流消費を減らす技術を提供できる。
【課題を解決するための手段】
【０００４】
本発明の一実施形態に係るプロセッシングシステムは、フィーチャ（ｆｅａｔｕｒｅ）とウエート（ｗｅｉｇｈｔ）を格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち１つ以上の値が０である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
【０００５】
本発明の他の実施形態に係るプロセッシングシステムは、多数のポイントを含み、それぞれのポイントにフィーチャ（ｆｅａｔｕｒｅ）、ウエート（ｗｅｉｇｈｔ）、及びバウンダリフラグを格納する臨時メモリと、前記臨時メモリの同じポイントに格納されたフィーチャの値とウエートの値を乗算する乗算演算及び同じバウンダリの乗算演算結果を加算する加算演算を行うプロセッシングエレメント（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）と、前記フィーチャ、前記ウエート、及び前記バウンダリフラグが前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されたフィーチャとウエートのうち１つ以上の値が０である場合に、当該ポイントに次のフィーチャと次のウエートがオーバーライトされるように制御するフローコントローラとを備えることができる。
【０００６】
本発明のさらに他の実施形態に係るプロセッシングシステムは、フィーチャ（ｆｅａｔｕｒｅ）とウエート（ｗｅｉｇｈｔ）を臨時格納する臨時メモリと、前記臨時メモリに格納された前記フィーチャの値と前記ウエートの値に対する乗算演算及び乗算結果に対する加算演算を行うプロセッシングエレメント（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）と、前記フィーチャと前記ウエートを前記臨時メモリに格納されるように制御し、前記臨時メモリの同じポイントに格納されるフィーチャとウエートのうち１つ以上が０の値を含む場合に、当該フィーチャとウエートが前記臨時メモリに格納されないように制御するフローコントローラとを備えることができる。
【発明の効果】
【０００７】
本発明の実施形態等によれば、プロセッシングシステムの性能を向上させ、電流消費を減らすことができる。
【図面の簡単な説明】
【０００８】
【図１】プロセッシングシステムで行うコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を説明するための図である。
【図２】本発明の一実施形態に係るプロセッシングシステムの構成図である。
【図３】図２のプロセッシングエレメント２６０の一実施形態の構成図である。
【図４Ａ】フローコントローラ２４０がオン−チップメモリ２３０に格納されたイメージとフィルタを読み出して臨時メモリ２５０に書き込む過程の一実施形態を説明するための図である。
【図４Ｂ】フローコントローラ２４０がオン−チップメモリ２３０に格納されたイメージとフィルタを読み出して臨時メモリ２５０に書き込む過程の一実施形態を説明するための図である。
【図５】フローコントローラ２４０がオン−チップメモリ２３０に格納されたイメージ４１０とフィルタ４２０を読み出して臨時メモリ２５０に書き込む過程の他の実施形態を説明するための図である。
【図６】フローコントローラ２４０がフィーチャとウエートを臨時メモリ２５０に書き込む動作を示した順序図である。
【発明を実施するための形態】
【０００９】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施できるように詳細に説明するために、本発明の最も好ましい実施形態を添付図面を参照して説明する。本発明を説明するにあたって、本発明の要旨と関係ない構成は省略されることができる。各図面の構成要素等に参照符号を付加するにあたって、同じ構成要素等に限っては、例え、他の図面上に表示されても、なるべく同じ番号を有するようにしていることに留意すべきである。
【００１０】
図１は、プロセッシングシステムで行うコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を説明するための図である。
【００１１】
図１の１１０は、イメージ（ｉｍａｇｅ）を表すことができる。ここでは、イメージのサイズを４×４に例示した。１２０は、フィルタ（ｆｉｌｔｅｒ）を表すことができる。ここでは、フィルタのサイズを２×２に例示した。イメージに含まれる値をフィーチャといい、フィルタに含まれる値をウエートといえる。イメージ１１０には、１６個のフィーチャが含まれ、フィルタ１２０には、４個のウエートが含まれ得る。
【００１２】
コンボリューション演算は、イメージ１１０とフィルタ１２０を点線１１１、１１２、１１３、１１４のような形態で重ねながら行われることができる。フィーチャ１１０とフィルタ１２０が点線１１１のようにオーバーラップされて行われる演算は、１×１７＋５×０＋０×０＋６×２０＝１３７でありうる。また、フィーチャ１１０とフィルタ１２０が点線１１２のようにオーバーラップされて行われる演算は、０×１７＋６×０＋３×０＋０×２０＝０でありうる。すなわち、１番目のバウンダリ（ｂｏｕｎｄａｒｙ）の演算結果は、１３７であり、２番目のバウンダリの演算結果は、０でありうる。同様に、３番目のバウンダリの演算結果は、３×１７＋０×０＋４×０＋８×２０＝２１１でありうるし、４番目のバウンダリの演算結果は、５×１７＋０×０＋６×０＋１０×２０＝２８５でありうる。
【００１３】
コンボリューション演算過程を説明すれば、フィーチャとウエートのうち１つ以上が０である場合には、当該バウンダリの演算結果値に何らの影響を与えないことが確認できる。例えば、１番目のバウンダリ演算１×１７＋５×０＋０×０＋６×２０＝１３７においてフィーチャとウエートのうち１つ以上が０である下線を引いた部分は、演算結果１３７に何らの影響を与えることができないことが確認できる。
【００１４】
図２は、本発明の一実施形態に係るプロセッシングシステムの構成図である。
図２に示されるように、プロセッシングシステムは、メインメモリ２１０、メモリインターフェース２２０、オン−チップメモリ２３０、フローコントローラ（ｆｌｏｗ  ｃｏｎｔｒｏｌｌｅｒ、２４０）、臨時メモリ２５０、プロセッシングエレメント（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ、２６０）、及びフィーチャマップ発生器（ｆｅａｔｕｒｅ  ｍａｐ  ｇｅｎｅｒａｔｏｒ、２７０）を備えることができる。
【００１５】
メインメモリ２１０は、イメージ（ｉｍａｇｅ）とフィルタ（ｆｉｌｔｅｒ）などを格納する大容量メモリでありうる。メインメモリ２１０では、ＤＲＡＭが使用され得るし、他の種類のメモリが使用されることもできる。
【００１６】
メモリインターフェース２２０は、演算に必要なイメージとフィルタをメインメモリ２１０から読み出してオン−チップメモリ２３０に移すために使用されることができる。メモリインターフェース２２０は、メインメモリ２１０及びオン−チップメモリ２３０をアクセスするためのメモリコントローラ及びプロトコルなどを含むことができる。
【００１７】
オン−チップメモリ２３０は、メインメモリ２１０からプロセッシングエレメント２６０が演算する一部データをロードして格納するメモリでありうる。オン−チップメモリ２３０は、プロセッシングエレメント２６０とメインメモリ２１０との間のアクセスレイテンシ（ａｃｃｅｓｓ  ｌａｔｅｎｃｙ）を最小化するために使用される一種の大容量キャッシュメモリ（ｃａｃｈｅ  ｍｅｍｏｒｙ）でありうる。ここで、大容量とは、オン−チップメモリ２３０の容量が臨時メモリ２５０に比べて大容量であるということを意味でき、オン−チップメモリ２３０の容量は、メインメモリ２１０の容量よりは小さいことができる。オン−チップメモリ２３０では、ＳＲＡＭが使用され得る。
【００１８】
フローコントローラ２４０は、オン−チップメモリ２３０に格納されたイメージとフィルタを読み出して臨時メモリ２５０に書き込むことができる。フローコントローラ２４０は、フィーチャまたはウエートの値が０である場合に、当該値に対する演算がスキップ（ｓｋｉｐ）され得るようにするための動作を行うことができ、オン−チップメモリ２３０のフィーチャとウエートを臨時メモリ２５０にロードする過程でフィーチャとウエートを複写する動作も行うことができる。フローコントローラ２４０の詳細な動作については後述する。
【００１９】
臨時メモリ２５０は、プロセッシングエレメント２６０が演算するフィーチャとウエートを臨時格納するメモリでありうる。臨時メモリ２５０は、プロセッシングエレメント２６０が直接アクセスするキャッシュメモリでありうる。すなわち、臨時メモリ２５０がレベル１のキャッシュであれば、オン−チップメモリは、レベル２のキャッシュでありうる。臨時メモリ２５０は、多数のポイントを含み、それぞれのポイントにフィーチャ、ウエート、及びフィーチャとウエートのバウンダリを表すバウンダリフラグ（ｂｏｕｎｄａｒｙ  ｆｌａｇ）を格納できる。臨時メモリ２５０は、スクラッチパッド（ｓｃｒａｔｃｈ  ｐａｄ）でありうる。
【００２０】
プロセッシングエレメント２６０は、臨時メモリ２５０の同じポイントに格納されたフィーチャとウエートを乗算し、同じバウンダリ内の乗算結果を合算する演算を行うことができる。
【００２１】
フィーチャマップ発生器２７０は、プロセッシングエレメント２６０のコンボリューション演算結果をポストプロセッシング（ｐｏｓｔ−ｐｒｏｃｅｓｓｉｎｇ）することができる。フィーチャマップ発生器２７０は、ピクセル（ｐｉｘｅｌ）別に平均（ａｖｅｒａｇｅ）または最大（ｍａｘ）値を探すプーリング（ｐｏｏｌｉｎｇ）、閾値（ｔｈｒｅｓｈｏｌｄ）基盤でデータをフィルタリングするＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）またはシグモイド（ｓｉｇｍｏｉｄ）のような活性関数（ａｃｔｉｖａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）、結果値から外れる値をフィルタリングするノーマライズ（ｎｏｒｍａｌｉｚｅ）などの機能（ｆｕｎｃｔｉｏｎ）を行うことができる。
速い並列処理のために、プロセッシングシステムがフローコントローラ２４０、臨時メモリ２５０、及びプロセッシングエレメント２６０を複数個ずつ備えることもできる。
【００２２】
図２のプロセッシングシステムは、１つまたは複数個の集積回路チップで実現されることができる。例えば、プロセッシングシステム全体が１つの集積回路チップにシステムオンチップ（ｓｙｓｔｅｍ  ｏｎ  ｃｈｉｐ）の形態で含まれることができ、メインメモリ２１０は、１つの集積回路チップに残りの構成等２２０〜２７０がさらに他の集積回路チップに含まれるなど、プロセッシングシステムが複数個の集積回路チップで実現されることもできる。
【００２３】
図３は、図２のプロセッシングエレメント２６０の一実施形態の構成図である。
図３に示されるように、プロセッシングエレメント２６０は、乗算器３１０、加算器３２０、レジスタアレイ３３０、及びバウンダリ制御器３４０を備えることができる。
【００２４】
乗算器３１０は、臨時メモリ２５０から伝達されたフィーチャ（ＦＥＡＴＵＲＥ）の値とウエート（ＷＥＩＧＨＴ）の値とを乗算することができる。乗算器３１０は、臨時メモリ２５０の同じポイントに格納されたフィーチャ（ＦＥＡＴＵＲＥ）の値とウエート（ＷＥＩＧＨＴ）の値とを乗算することができる。
【００２５】
加算器３２０は、乗算器３１０の乗算結果とレジスタアレイ３３０から提供された値とを加算することができる。
バウンダリ制御器３４０は、バウンダリフラグ（ＢＯＵＮＤＡＲＹ  ＦＬＡＧ）を入力され、同じバウンダリ内での乗算結果が加算器３２０によって加算演算され得るようにレジスタ制御器３４０を制御し、バウンダリ別に加算演算結果がレジスタアレイから出力され得るようにレジスタ制御器３４０を制御できる。
【００２６】
レジスタアレイ３３０は、加算器３２０の加算演算結果を格納することができる。バウンダリが変更される場合には、レジスタアレイ３３０に格納された値がフィーチャマップ発生器２７０に出力され、レジスタアレイ３３０に格納された値は「０」に初期化されることができる。
結果として、プロセッシングエレメント２６０は、図１で説明したように、バウンダリ別にコンボリューション演算を行うことができる。
【００２７】
図４Ａ及び図４Ｂは、フローコントローラ２４０がオン−チップメモリ２３０に格納されたイメージとフィルタを読み出して臨時メモリ２５０に書き込む過程の一実施形態を説明するための図である。ここでは、フローコントローラ２４０が０値をスキップするゼロスキッピング（ｚｅｒｏ  ｓｋｉｐｐｉｎｇ）方式を使用しないことを例示する。
図４Ａの４１０は、図１の４×４サイズのイメージ１１０がオン−チップメモリ２３０に格納された形態を示し、４２０は、図１の２×２サイズのフィルタ１２０がオン−チップメモリ２３０に格納された形態を示すことができる。
【００２８】
フローコントローラ２４０は、バウンダリ別に図４の１、２、３、４のような順序どおりにオン−チップメモリ２３０に格納されたイメージ４１０を読み出すことができる。すなわち、１番目のバウンダリでオン−チップメモリ２３０のイメージ４１０から１、５、０、６を読み出し、２番目のバウンダリでイメージ４１０から０、６、３、０を読み出し、３番目のバウンダリでイメージ４１０から３、０、４、８を読み出し、４番目のバウンダリでイメージ４１０から５、０、６、１０を読み出すことができる。フローコントローラ２４０のこのような繰り返し的な読み出し動作によってオン−チップメモリ２３０に格納されたイメージ４１０のフィーチャ値が複写（ｄｕｐｌｉｃａｔｅ）されることを図４Ｂで確認することができる。
【００２９】
また、フローコントローラ２４０は、オン−チップメモリ２３０に格納されたフィルタ４２０を矢印（４２１）のように９回繰り返して読み出し、フィルタ４２０のウエート値を読み出すことができる。すなわち、バウンダリサイズと同様に、４個のウエートを繰り返して読み出す方式を使用できる。フローコントローラ２４０のこのような繰り返し的な読み出し動作によってオン−チップメモリ２３０に格納されたフィルタ４２０のウエート値が複写（ｄｕｐｌｉｃａｔｅ）されることを図４Ｂで確認することができる。
【００３０】
図４Ｂの４３０は、オン−チップメモリ２３０から読み出されたフィーチャとウエートが臨時メモリ２５０に書き込まれた結果を示すことができる。４３０を参照すれば、オン−チップメモリの３６個のポイント（Ｐｏｉｎｔ  ０〜３５）にフィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）が格納されたことを確認できる。バウンダリフラグ（Ｂｏｕｎｄａｒｙ  Ｆｌａｇ）は、フィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）のバウンダリを区分するためのものであって、バウンダリが変更される度にその値が０→１→０→１に変更されることを確認できる。
【００３１】
図４Ａ及び図４Ｂに示されるように、オン−チップメモリ２３０に格納されたイメージ４１０とフィルタ４２０が臨時メモリ２５０に格納される過程でフィーチャ値及びウエート値が繰り返し的にアクセスされることにより、フィーチャ値及びウエート値の一部が複写（ｄｕｐｌｉｃａｔｅ）されることを確認できる。
【００３２】
図５は、フローコントローラ２４０がオン−チップメモリ２３０に格納されたイメージ４１０とフィルタ４２０を読み出して臨時メモリ２５０に書き込む過程の他の実施形態を説明するための図である。ここでは、フローコントローラ２４０がゼロスキッピング方式を使用することを例示する。オン−チップメモリ２３０に格納されたイメージ４１０とフィルタ４２０の形式及びフローコントローラ２４０がイメージ４１０とフィルタ４２０をアクセスする過程は、図４Ａ及び図４Ｂと同様なので、ここでは、これについての図示を省略する。
【００３３】
フローコントローラ２４０のゼロスキッピング方式は、次の（１）と（２）の方式で行われることができる。
（１）フローコントローラ２４０は、臨時メモリ２５０の同じポイントに格納されるフィーチャとウエートのうち１つ以上が０の値を有する場合に、当該ポイントをスキップできる。具体的に、フローコントローラ２４０は、オン−チップメモリ２３０から読み出したフィーチャとウエートのうち１つ以上が０の値を有する場合には、当該値を臨時メモリに格納した後、書き込まれるポイントの値をホールドすることができる。書き込まれるポイントの値を増加させずにホールドすることで、臨時メモリの当該ポイントに新しい値（本来、次のポイントに格納されるべき値）がオーバーライト（ｏｖｅｒｗｒｉｔｅ）され得る。
【００３４】
図５の左側（４３０）は、ゼロスキッピング方式が使用されずにフィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）が臨時メモリ２５０に格納された場合を示し、図５の右側（５３０）は、ゼロスキッピング方式が使用され、フィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）が臨時メモリ２５０に格納された場合を示すが、左側（４３０）でフィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）のうち１つ以上が０の値を含むポイント（例、Ｐｏｉｎｔ  １、２、４、５等）がオーバーライトされて、右側（５３０）ではこのようなポイントが除去されたことを確認できる。
【００３５】
（２）フローコントローラ２４０は、同じバウンダリ内で少なくとも１つのポイントはオーバーライトされないように制御することができる。これは、バウンダリ内部の４個のポイントが全てオーバーライトされるならば、当該バウンダリが消えて、当該バウンダリのコンボリューション結果値が導出され得ないためである。図５の左側（４３０）の２番目のバウンダリ（２ｎｄ  Ｂｏｕｎｄａｒｙ）を見ると、４個のポイント（Ｐｏｉｎｔ  ４〜７）の全部がゼロスキッピングの対象であるが、これらを全てスキッピングするならば、２番目のバウンダリのコンボリューション演算値が０という結果を導出することも不可能である。したがって、この場合に、フローコントローラ２４０は、フィーチャ（Ｆｅａｔｕｒｅ）とウエート（Ｗｅｉｇｈｔ）に０の値を書き込み、バウンダリフラグ（Ｂｏｕｎｄａｒｙ  Ｆｌａｇ）を介してバウンダリを区別することができる。図５の右側（５３０）のポイント２（Ｐｏｉｎｔ  ２）が正に２番目のバウンダリ（２ｎｄ  Ｂｏｕｎｄａｒｙ）を示す値であり、これをプロセッシングエレメント２６０が演算すれば、２番目のバウンダリのコンボリューション演算結果が０という結果を導出することができる。
上述した（１）と（２）の方式でゼロスキッピング動作を行うと、臨時メモリ２５０のポイントのうち、演算結果値に影響を与えないポイントを除去可能であるから、プロセッシングエレメント２６０の不要な演算及びこれによる時間浪費及び電流浪費を防ぐことができる。また、ゼロスキッピングが行われながらも、バウンダリ内の全てのポイントがスキッピングされることは防止するので、バウンダリが省略されるという問題は生じないことができる。
【００３６】
図６は、フローコントローラ２４０がフィーチャとウエートを臨時メモリ２５０に書き込む動作を示した順序図である。
まず、フローコントローラ２４０は、書き込むフィーチャまたはウエートが０値を含むかを確認できる（６０１）。
【００３７】
フィーチャとウエートが共に０値を含まない場合には（６０１においてＮ）、フィーチャとウエートが臨時メモリ２５０の現在ポイントに書き込まれることができる（６０３）。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。
【００３８】
現在ポイントの値は、１の分だけ増加され（６０５）、次のフィーチャとウエートを臨時メモリ２５０に書き込むために、再度ステップ（６０１）が進まれ得る。
フィーチャまたはウエートが０値を含む場合には（６０１においてＹ）、バウンダリ内の全てのポイントがゼロスキッピングの対象になるオールゼロケース（Ａｌｌ  ｚｅｒｏ  ｃａｓｅ）であるか否かが判断され得る（６０７）。
【００３９】
オールゼロケースでない場合に（６０７においてＮ）、フィーチャとウエートが臨時メモリ２５０の現在ポイントに書き込まれることができる（６０９）。そして、現在ポイント値が増加せずにそのまま維持された状態で、次のフィーチャとウエートを臨時メモリ２５０に書き込むために、すなわち、「６０９」で書き込まれたフィーチャとウエートをオーバーライトするために、再度ステップ（６０１）が進まれ得る。
【００４０】
オールゼロケースである場合に（６０７においてＹ）、臨時メモリ２５０の現在ポイントのフィーチャとウエートに０が書き込まれることができる（６１１）。そして、現在ポイントのバウンダリを区別するためのバウンダリフラグも共に書き込まれることができる。また、バウンダリ全体がオーバーライトされることを防止するために、現在ポイントの値を１の分だけ増加させることができる（６１３）。そして、次のフィーチャとウエートを臨時メモリ２５０に格納するために、再度ステップ（６０１）が進まれ得る。
【００４１】
フローコントローラが図６のように動作すれば、結果として、図５の右側（５３０）のような形態で臨時メモリ２５０にフィーチャ、ウエート、及びバウンダリフラグが書き込まれることができる。
【００４２】
上述した実施形態では、フローコントローラ２４０が臨時メモリ２５０で書き込まれるポイントの値を増加させずにホールドさせることでにより、新しい値がオーバーライトされるようにする方法でゼロスキッピングを実現したことを例示した。しかし、これとは異なり、フローコントローラ２４０が、ゼロスキッピング対象フィーチャとウエートが臨時メモリ２５０に書き込まれないように制御する方式でゼロスキッピング動作が行われ得ることは当たり前である。この場合にも、同じバウンダリ内で少なくとも１つのポイントは、臨時メモリ２５０に書き込まれて、バウンダリの区別が可能なようにしなければならない。
【００４３】
本発明の技術思想は、上記望ましい実施形態によって具体的に記録されたが、上記した実施形態は、その説明のためのものであり、その制限のためのものでないことに注意すべきである。また、本発明の技術分野の専門家であれば、本発明の技術思想の範囲内で様々な実施形態が可能であることが分かるであろう。
【符号の説明】
【００４４】
２１０  メインメモリ
２２０  メモリインターフェース
２３０  オン−チップメモリ
２４０  フローコントローラ
２５０  臨時メモリ
２６０  プロセッシングエレメント
２７０  フィーチャマップ発生器
【図１】
2020109621.tif 000003
【図２】
2020109621.tif 000004
【図３】
2020109621.tif 000005
【図４Ａ】
2020109621.tif 000006
【図４Ｂ】
2020109621.tif 000007
【図５】
2020109621.tif 000008
【図６】
2020109621.tif 000009