(57)【要約】【課題】本発明は、演算能力が向上した神経網加速装置及びその動作方法を提供する。【解決手段】本発明の実施例による神経網加速装置は、入力フィーチャー(Input Feature)に加重値(Weight)を適用してゼロ(０)値をフィルタリングし、入力フィーチャーの各ピクセルに対する相対座標及びバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータを生成するゼロ値フィルタ；パケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して、結果データを生成する乗算器；及び、乗算器から伝えられる結果データの前記相対座標及び前記バウンダリー情報に基づいて乗算した結果データ間の加算を遂行し、再配列して出力フィーチャーマップを生成するフィーチャーマップ抽出器を含む。【選択図】図１
2020184309.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータエレメントを含む入力フィーチャーに加重値を適用してゼロ(０)値をフィルタリングし、前記入力フィーチャーのデータエレメントに対する相対座標及びグループバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータを生成するゼロ値フィルタ；
前記圧縮形のパケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して、結果データを生成する乗算器；及び、
前記相対座標及び前記グループバウンダリー情報に基づいて前記結果データ間の加算を遂行し、前記加算の結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップを生成するフィーチャーマップ抽出器を含むことを特徴とする、神経網加速装置。
【請求項２】
前記神経網加速装置は、前記出力フィーチャーマップに活性化関数を適用して非線形値に変更し、プーリング処理して最終出力フィーチャーマップを生成し、第１のメモリ、第２のメモリ及び前記ゼロ値フィルタの少なくとも一つに転送する出力フィーチャーマップ生成器をさらに含むことを特徴とする、請求項１に記載の神経網加速装置。
【請求項３】
前記ゼロ値フィルタは、前記入力フィーチャー及び前記加重値のゼロ値位置並びにストライド値を用いて、前記ゼロ値フィルタリングを遂行することを特徴とする、請求項１に記載の神経網加速装置。
【請求項４】
前記ゼロ値フィルタは、前記入力フィーチャーのデータエレメントを既設定の基準によってグループ化し、複数のグループ間相対座標を生成して、各グループ内のデータエレメントにマッチングすることを特徴とする、請求項１に記載の神経網加速装置。
【請求項５】
前記グループバウンダリー情報は、前記複数のグループを各々区分するための１ビットの情報であることを特徴とする、請求項４に記載の神経網加速装置。
【請求項６】
前記ゼロ値フィルタは、前記入力フィーチャー及び前記加重値を各々１次元ベクトル形態に変換し、前記入力フィーチャー及び前記加重値の各々をビットＯＲ演算して、非ゼロ値位置をフィルタリングし、フィルタリングされた前記入力フィーチャー及び前記加重値の非ゼロ位置値をビットＡＮＤ演算して、バウンダリー次数別前記加重値位置による非ゼロ位置値を生成することを特徴とする、請求項１に記載の神経網加速装置。
【請求項７】
前記ゼロ値フィルタは、前記バウンダリー次数別非ゼロ位置値をビットＯＲ演算して統合バウンダリー情報を得ることを特徴とする、請求項６に記載の神経網加速装置。
【請求項８】
前記ゼロ値フィルタは、前記統合バウンダリー情報を得る際、前記ビットＯＲ演算を遂行する前記非ゼロ位置値のバウンダリー次数をストライド値によって変更することを特徴とする、請求項７に記載の神経網加速装置。
【請求項９】
前記バウンダリー次数は、前記１次元ベクトル形態の加重値が前記１次元ベクトル形態の入力フィーチャーをスライディングウィンドウした次数と同一であることを特徴とする、請求項６に記載の神経網加速装置。
【請求項１０】
前記乗算器は、前記乗算を遂行する際、前記インデックス情報を参照して、前記ゼロ値フィルタリングされた圧縮形の前記パケットデータに対する前記乗算を省略することを特徴とする、請求項１に記載の神経網加速装置。
【請求項１１】
前記神経網加速装置は、
前記入力フィーチャー及び前記加重値を保存する第１のメモリ；及び、
前記ゼロ値フィルタから伝えられる前記インデックス情報を含む前記圧縮形のパケットデータを保存する第２のメモリをさらに含むことを特徴とする、請求項１に記載の神経網加速装置。
【請求項１２】
神経網加速装置は、
複数のデータエレメントを含む入力フィーチャー及び加重値を受信するステップ；
前記入力フィーチャーに加重値を適用してゼロ(０)値をフィルタリングし、前記入力フィーチャーのデータエレメントに対する相対座標及びグループバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータを生成するステップ；
前記圧縮形のパケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して、結果データを得るステップ；
前記結果データの前記相対座標及び前記グループバウンダリー情報に基づいて前記乗算を遂行した前記結果データ間の加算を遂行し、前記加算の結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップを生成するステップ；及び、
前記出力フィーチャーマップに活性化関数を適用して非線形値に変更し、プーリング処理して最終出力フィーチャーマップを生成するステップを含むことを特徴とする、神経網加速装置の動作方法。
【請求項１３】
前記圧縮形のパケットデータを生成するステップにおいて、
前記入力フィーチャー及び前記加重値のゼロ値位置並びにストライド値を用いて、前記ゼロ値フィルタリングを遂行することを特徴とする、請求項１２に記載の神経網加速装置の動作方法。
【請求項１４】
前記圧縮形のパケットデータを生成するステップにおいて、
前記入力フィーチャーのデータエレメントを既設定の基準によってグループ化し、複数のグループ間相対座標を生成して、各グループ内のデータエレメントにマッチングすることを特徴とする、請求項１２に記載の神経網加速装置の動作方法。
【請求項１５】
前記圧縮形のパケットデータを生成するステップは、
前記入力フィーチャー及び前記加重値を各々１次元ベクトル形態に変換し、前記入力フィーチャー及び前記加重値の各々をビットＯＲ演算して、非ゼロ値位置をフィルタリングするステップ；
前記フィルタリングされた前記入力フィーチャー及び前記加重値の非ゼロ位置値をビットＡＮＤ演算して、バウンダリー次数別前記加重値位置による非ゼロ位置値を得るステップ；及び、
前記バウンダリー次数別前記非ゼロ位置値をビットＯＲ演算して、統合バウンダリー情報を得るステップを含むことを特徴とする、請求項１２に記載の神経網加速装置の動作方法。
【請求項１６】
前記統合バウンダリー情報を得るステップにおいて、
前記ビットＯＲ演算を遂行する前記非ゼロ位置値のバウンダリー次数をストライド値によって変更することを特徴とする、請求項１５に記載の神経網加速装置の動作方法。
【請求項１７】
前記バウンダリー次数は、前記１次元ベクトル形態の加重値が前記１次元ベクトル形態の入力フィーチャーをスライディングウィンドウした次数と同一であることを特徴とする、請求項１５に記載の神経網加速装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、神経網加速装置及びその動作方法に関する。
【背景技術】
【０００２】
ＣＮＮ(Convolutional Neural Network)アプリケーションは、イメージ認識及び分析のために主に用いられる神経網アプリケーションである。このとき、アプリケーションは、特定フィルタを用いてイメージからフィーチャー(feature)を抽出する畳込み(convolution)演算が要求される。前記畳込み演算のためには乗算及び加算を遂行する行列乗算装置が用いられる。畳込み係数(convolution coefficients)内の０の分布が少ない場合(係数のスパーシティ(Sparsity)(０のような分数(fraction))が少ない場合)、高密度(Dense)イメージ及びフィルタを使用すれば、前述した演算装置が効率よく用いられる。しかしながら、ＣＮＮアプリケーションで用いられる大部分のイメージ及びフィルタは、３０％乃至７０％程度のスパーシティを持つため、多数のゼロ値(zero value)を含むことができる。このとき、ゼロ値は演算時に不要なレイテンシ(latency)及びパワー消耗(power consumption)が発生させ得る。
【０００３】
したがって、運用者は、ＣＮＮアプリケーションで畳込み演算が効率よく遂行できる方案を模索するようになった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例は、演算能力が向上した神経網加速装置及びその動作方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施例に係る神経網加速装置は、複数のデータエレメントを含む入力フィーチャー(Input Feature)に加重値(Weight)を適用してゼロ(０)値をフィルタリングし、前記入力フィーチャーのデータエレメントに対する相対座標及びグループバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータを生成するゼロ値フィルタ；前記圧縮形のパケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して、結果データを生成する乗算器；及び、前記相対座標及び前記グループバウンダリー情報に基づいて前記結果データ間の加算を遂行し、前記加算の結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップを生成するフィーチャーマップ抽出器を含むことができる。
【０００６】
本発明の実施例による神経網加速装置の動作方法は、複数のデータエレメントを含む入力フィーチャー及び加重値を受信するステップ；前記入力フィーチャーに加重値を適用してゼロ(０)値をフィルタリングし、前記入力フィーチャーのデータエレメントに対する相対座標及びグループバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータを生成するステップ；前記圧縮形のパケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して結果データを得るステップ；前記結果データの前記相対座標及び前記グループバウンダリー情報に基づいて前記乗算を遂行した前記結果データ間の加算を遂行し、前記加算の結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップを生成するステップ；及び、前記出力フィーチャーマップに活性化関数(Activation Function)を適用して非線形値に変更し、プーリング(pooling)処理して最終出力フィーチャーマップを生成するステップを含むことができる。
【発明の効果】
【０００７】
本実施例によれば、ストライド(stride)値によって入力フィーチャー及び加重値のゼロ値に対してスキップ(skip)を支援するため、神経網加速装置における演算能力の向上を図ることができる。
【０００８】
また、本実施例によれば、不要なレイテンシ及びパワー消費が低減できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例に係る神経網加速装置の構成を示す図である。
【図２】本発明の実施例に係る入力フィーチャーのデータエレメント(例えば、ピクセル)をグループ化する方法を説明するための図である。
【図３】本発明の実施例に係るパケットデータの例示を示す図である。
【図４】本発明の実施例に係るパケットデータの例示を示す図である。
【図５】本発明の実施例に係る入力フィーチャーのゼロ値を感知するための方法を説明するための図である。
【図６】本発明の実施例に係る加重値のゼロ値を感知するための方法を説明するための図である。
【図７】本発明の実施例に係る入力フィーチャーに加重値を適用して非ゼロ値を感知するための方法を説明するための図である。
【図８】本発明の実施例に係る入力フィーチャーに加重値を適用して非ゼロ値を感知するための方法を説明するための図である。
【図９】本発明の実施例に係る入力フィーチャーに加重値を適用して非ゼロ値を感知するための方法を説明するための図である。
【図１０】本発明の実施例に係る入力フィーチャーに加重値を適用して非ゼロ値を感知するための方法を説明するための図である。
【図１１】本発明の実施例に係る神経網加速装置の動作方法を説明するためのフローチャートである。
【図１２】図１１の圧縮形のパケットデータを生成する方法をより詳細に説明するための図である。
【発明を実施するための形態】
【００１０】
以下、添付図面に基づき、本発明の好適な実施例を詳細に説明する。
【００１１】
図１は、本発明の実施例に係る神経網加速装置の構成を示す図である。
【００１２】
以下では、本発明の実施例に係る入力フィーチャーのデータエレメント(例えば、ピクセル)をグループ化する方法を説明するための図２、本発明の実施例に係るパケットデータの例示を示す図３乃至図４、本発明の実施例に係る入力フィーチャーのゼロ値を感知するための方法を説明するための図５、本発明の実施例に係る加重値のゼロ値を感知するための方法を説明するための図６、本発明の実施例に係る入力フィーチャーに加重値を適用して非ゼロ値を感知するための方法を説明するための図７乃至図１０を参照して説明する。
【００１３】
図１を参照すれば、本実施例に係る神経網加速装置１０は、第１のメモリ１００、ゼロ値フィルタ(zero-value filter)２００、第２のメモリ３００、乗算器４００、フィーチャーマップ抽出器５００及び出力フィーチャーマップ生成器６００を含むことができる。
【００１４】
詳しく説明すれば、第１のメモリ１００は、フィーチャー(Feature)及び加重値(Weight)を始めとして神経網加速装置１０に係る情報を保存し、保存されたフィーチャー及び加重値をゼロ値フィルタ２００に伝達できる。このとき、フィーチャーはイメージ(image)データ又は音声データであり得る。また、加重値はフィーチャーからゼロ値をフィルタリングするのに用いられるフィルタであり得る。前記第１のメモリ１００は、ＤＲＡＭ(Dynamic Random Access Memory)で具現され得るが、これに限定されるものではない。
【００１５】
ゼロ値フィルタ２００は、入力フィーチャー(Input Feature)に加重値(Weight)を適用してゼロ(０)値をフィルタリングし、フィルタリングされない前記入力フィーチャーの各ピクセルに対する相対座標及びグループバウンダリー情報(boundary indication)を含むインデックス情報をマッチングして、圧縮形のパケットデータが生成できる。このとき、入力フィーチャー及び加重値は第１のメモリ１００から得られる。
【００１６】
ゼロ値フィルタ２００は、入力フィーチャー及び加重値のゼロ値位置及びストライド値を用いてゼロ値フィルタリングが遂行できる。このとき、ストライド値はフィルタを適用する間隔値を意味するものと定義できる。図７を参照すれば、ストライド値は入力フィーチャー(ａ−２)に加重値であるフィルタ(ｂ−２)をスライディングウィンドウ(sliding window)する時、移動する間隔であり得る。
【００１７】
ゼロ値フィルタ２００は、入力フィーチャーのピクセルを既設定の基準によってグループ化し、複数のグループ間相対座標を生成して、各グループ内のピクセルにマッチングできる。
【００１８】
図２を参照すれば、ゼロ値フィルタ２００は、入力フィーチャーのピクセルに対して、(ｂ)のようにグループ１、グループ２、グループ３及びグループ４にグループ化し、グループ間同じ位置に対して同じ座標を示す相対座標を生成して各グループ内のピクセルにマッチングできる。例えば、入力フィーチャーに対する原座標は、(ａ)に示すように１、２、３、４〜１５及び１６であるが、グループ化した入力フィーチャーに対する座標は、(ｂ)に示すようにグループ１の０、１、２及び３、グループ２の０、１、２及び３、グループ３の０、１、２及び３、グループ４の０、１、２及び３であり得る。このとき、グループ間相対座標を生成するため、保存されるインデックス値の大きさが低減できる。
【００１９】
ここで、各ピクセルは、境界情報を示すグループバウンダリー情報(boundary indication)を有し、出力フィーチャーマップ生成器６００は、グループバウンダリー情報を通して新規のピクセルグループの転送可否が判断できる。前記グループバウンダリー情報は、前記複数のグループを各々区分するための１ビットの情報が意味できる。
【００２０】
図３及び図４は圧縮形のパケットデータの例示を示すもので、圧縮形のパケットデータは、図３のようにグループバウンダリー情報(boundary indicator)、該ピクセルデータの全部がゼロ値(０)であるか否かを示すゼロフラッグ(All 0 flag)、ピクセルデータの座標(Coordinate info)及びピクセルデータ(Data)を含むことができる。このとき、グループバウンダリー情報及びゼロフラッグは各々１ビット(例えば、１又は０)であり得る。前記バウンダリー情報は１又は０に新規のピクセルグループパケット転送が開始すれば値が反転し得る。例えば、一実施例において、ゼロ値フィルタ２００は、ピクセルグループ１に対する全ての圧縮形のパケットデータが出力でき、以後にピクセルグループ２の開始を示すためのグループバウンダリー情報が‘０’に設定されたピクセルグループ２に対する第一の圧縮形のパケットが出力でき、以後にグループバウンダリー情報が‘１’に設定されたピクセルグループ２に対する残りの圧縮パケットデータを出力して同じグループであることを示すことができる。ピクセルグループ２に対する全ての圧縮形のパケットデータが出力されると、ゼロ値フィルタ２００は、ピクセルグループ３の開始を示すために、グループバウンダリー情報が‘０’に設定されたピクセルグループ３に対する第一の圧縮パケットが出力できる。
【００２１】
図４において、(ａ)は非ゼロ(non-zero)パケットデータの例示を示し、(ｂ)はピクセルグループ内の全てのピクセルデータがゼロ(zero)であるパケットデータの例示を示す。乗算器４００は、ゼロ値フィルタ２００から伝えられたパケットデータのゼロフラッグ値が１である場合、該パケットデータのピクセルグループのピクセルデータに対する乗算が全部省略し得る。例えば、前記例において、ピクセルグループ３の第一の圧縮形のパケットにゼロフラッグ値が１に設定されていると、乗算器４００はピクセルグループ３のピクセルを用いた乗算を遂行しないことができる。このとき、ゼロフラッグ値が１に設定されたピクセルグループ３に対する第一の圧縮形のパケットは、ピクセルグループ３に対する唯一のパケットが出力でき、次のパケットはピクセルグループ４に対するものであり得る。
【００２２】
すなわち、ゼロ値フィルタ２００は、乗算器４００に入力される入力値のうち、不要な演算が発生し得る値(例えば、０が含まれた組合)を事前に除去して、乗算器４００の不要な演算を予め遮断するものである。例えば、図２及び図５乃至図８において、ピクセルグループ１のピクセル１及び２(図２の(ａ)においてピクセル２及びピクセル５に該当)は、図８の統合バウンダリー(ｄ)において各々のビットで０に表示されるように不要であり得る。したがって、ゼロ値フィルタ２００はグループ１のピクセル０及びピクセル３に対する圧縮形のパケットデータのみを第２のメモリ３００に転送し、乗算器４００はグループ１のピクセル０及びピクセル３に対するデータを用いて演算を遂行し、グループ１のピクセル１又は２に対するデータを用いた演算を遂行しないことができる。
【００２３】
これにより、乗算器４００における不要な演算により発生し得る不要なレイテンシ及びパワー消耗が低減できる。このとき、乗算器４００は、カーテシアン(Cartesian)乗算器、すなわち、フィルタ(加重値)の全ての係数(又は少なくとも０でない全ての係数)により処理する各ピクセルに対するデータを乗算する乗算器であり得るが、これに限定されるものではない。
【００２４】
ゼロ値フィルタ２００は、入力フィーチャー及び加重値を各々１次元ベクトル形態に変換し、入力フィーチャー及び加重値の各々をビットＯＲ演算して、非ゼロ値位置(non-zero value position)がフィルタリングできる。このような方式により、データ値が０であるピクセルと非ゼロフィルタ係数とを乗算しないピクセルが全部フィルタリングできる。
【００２５】
図５を参照すれば、ゼロ値フィルタ２００は、４×４形態の入力フィーチャー(ａ)をフィルタ(加重値)サイズに合うように１次元ベクトル形態に羅列(１、５、０、６、３、０、４、８、０、１３、１０、１４、１１、１５、１２、０)(ａ−１)し、入力フィーチャー(ａ)の非ゼロ値位置を抽出するために１次元ベクトルの入力フィーチャー(ａ−１)の各ピクセルに対してビットＯＲ演算を遂行して、１、１、０、１、１、０、１、１、０、１、１、１、１、１、１、０(ａ−２)のような値が得られる。
【００２６】
図６を参照すれば、ゼロ値フィルタ２００は、２×２形態の加重値(ｂ)を１次元ベクトル形態に羅列(１０、０、０、１１)(ｂ−１)し、加重値(フィルタ)の非ゼロ値位置を抽出するためにビットＯＲ演算を遂行して、１、０、０、１(ｂ−２)のような値が得られる。すなわち、ゼロ値フィルタ２００は、フィーチャー及び加重値に対する非ゼロ値位置が認識できるものである。
【００２７】
また、ゼロ値フィルタ２００は、フィルタリングされた入力フィーチャー及び加重値の非ゼロ位置値をビットＡＮＤ演算して、バウンダリー次数別前記加重値位置による非ゼロ位置値が得られる。加重値に該ビットがない入力フィーチャーのビットの場合、ビットＡＮＤ演算は０が出力できる。
【００２８】
前記バウンダリー次数は、１次元ベクトル形態の加重値が１次元ベクトル形態の入力フィーチャーをスライディングウィンドウした次数と同一であり得る。
【００２９】
図７及び図８を参照すれば、ゼロ値フィルタ２００は、フィルタリングされた１次元ベクトル形態の入力フィーチャー(ａ−２)及び加重値(ｂ−２)の非ゼロ位置値を互いに対向した後、加重値をフィーチャーにスライディングウィンドウしながらビットＡＮＤ演算するものである。このとき、ストライド値は、１次元加重値(ｂ−２)を生成するのに用いられる２−Ｄフィルタのカラム幅(column width)の倍数であり得る。このとき、コラム幅はコラムらの数を意味する。
【００３０】
例えば、２×２の場合、カラム幅が２であるため、ｓｔｒｉｄｅ＝１の場合はカラム幅の１倍、ｓｔｒｉｄｅ＝２の場合はカラム幅の２倍だけフィルタが移動(shift)されることができる。
【００３１】
図８を参照すれば、ゼロ値フィルタ２００は、加重値(ｂ−２)がスライディングウィンドウすることにより、(ｃ)のような複数のターゲートバウンダリー(１ｓｔターゲットバウンダリー〜７ｔｈターゲットバウンダリー)が生成できる。１ｓｔターゲットバウンダリーは、加重値(ｂ−２)がシフトされない場合、入力フィーチャー(ａ−２)のビットＡＮＤ及び加重値(ｂ−２)の結果に対応でき、２ｎｄターゲットバウンダリーは、加重値(ｂ−２)が一つのカラム幅(ストライド＝１)だけ移動される時、入力フィーチャー(ａ−２)及び加重値(ｂ−２)のビットＡＮＤの結果に対応でき、３ｒｄターゲットバウンダリーは、加重値(ｂ−２)が二つのカラム幅だけ移動された場合、入力フィーチャー(ａ−２)及び加重値(ｂ−２)のビットＡＮＤの結果に対応できる。
【００３２】
ゼロ値フィルタ２００は、バウンダリー次数別非ゼロ位置値をビットＯＲ演算して統合バウンダリー情報が生成できる。このとき、統合バウンダリー情報が前述のインデックス情報のバウンダリー情報として含まれる。
【００３３】
図８を参照すれば、ゼロ値フィルタ２００は、１ｓｔターゲットバウンダリー〜７ｔｈターゲットバウンダリーの非ゼロ位置値(１、０、０、０、０、０、０)(ｃ−１)をビットＯＲ演算して統合バウンダリー情報(ｄ−１)が得られる。ゼロ値フィルタ２００は、前述の過程を繰り返して最終統合バウンダリー情報が得られる。
【００３４】
一方、ゼロ値フィルタ２００は、統合バウンダリー情報を得る際、ビットＯＲ演算を遂行する非ゼロ位置値のバウンダリー次数をストライド(stride)値によって変更できる。
【００３５】
ストライド値が１でない場合、ゼロ値フィルタ２００は、図８のようなストライド値が１の場合において、ストライド値によってバウンダリー次数を選択的に適用して、統合バウンダリー情報内の非ゼロ位置値が抽出できる。
【００３６】
図９を参照すれば、ストライド値が２(ｓｔｒｉｄｅ＝２)である場合、ゼロ値フィルタ２００は、ビットＯＲ演算を遂行する際、図８のようなストライド値が１の場合において、偶数次のバウンダリー情報(例えば、２ｎｄターゲットバウンダリーや４ｔｈターゲットバウンダリー等)を統合バウンダリー情報を得る際にスキップ(skip)すれば、ストライド値が２の場合に対する非ゼロ位置値(non-zero position value)が抽出できる。
【００３７】
図１０を参照すれば、ゼロ値フィルタ２００は、選択された１次、３次、５次及び７次ターゲットバウンダリー情報に基づいてビットＯＲ演算を遂行して、統合バウンダリー情報が得られる。
【００３８】
ゼロ値フィルタ２００は、ストライド値が３の場合にも、ストライド値が１の場合において、奇数次のターゲットバウンダリー情報をスキップして、統合バウンダリー情報が得られる。このとき、ゼロ値フィルタ２００は、スキップする奇数次のうち、一番目の数次を除いてスキップし得る。
【００３９】
前述のストライド値が１でない場合は、２次ベクトルからなるフィーチャーにフィルタを移動(shifting)しながら、非ゼロ値位置を抽出するものと同様な効果が得られるが、1次ベクトルで関連動作を具現するため、ロジック(logic)が単純化する効果を期待し得る。前記結果値から非ゼロ値を抽出した後、乗算(Cartesian product)を遂行すると、不要な演算が省略されるため、レイテンシ及びパワー消耗が低減できる。
【００４０】
第２のメモリ３００は、ゼロ値フィルタ２００から伝えられるインデックス情報を含むパケットデータが保存できる。圧縮形のパケットデータは、一般に統合バウンダリー情報から対応するビットが１(後述するように、グループ内の全てのピクセルがゼロ値フィルタ２００によりフィルタリングされる場合を除外)であるピクセルに対するパケットだけを含むことができる。また、第２のメモリ３００は、出力フィーチャーマップ生成器６００から伝えられる最終出力フィーチャーマップを始めとして神経網加速装置１０に係る情報が保存できる。このとき、第２のメモリ３００は、ＳＲＡＭ(Random Access Memory)で具現できるが、これに限定されるものではない。ＳＲＡＭの特性上、第２のメモリ３００は、一回に一つのパケットだけを取り出すことができるので、このためのサイクルに多くの時間が必要になり、同時にゼロスキップ動作まで遂行すれば、サイクルに対する負担があり得る。本発明の実施例は、ゼロ値フィルタリングを通して既に多くのビットが処理された形態の入力フィーチャーマップを保存するため、前述のサイクルに対する負担が低減できる。すなわち、本実施例は、パケットデータを読み出すために第２のメモリ３００に接近する回数を相対的に低減できる。
【００４１】
乗算器(Cartesian Product Module)４００は、第２のメモリ３００に保存された圧縮形のパケットデータの入力フィーチャー及び加重値に対して乗算を遂行して、結果データが得られる。
【００４２】
乗算器４００は、乗算を遂行する際、インデックス情報を参照して、ゼロ値フィルタリングされたパケットデータに対する前記乗算が省略できる。
【００４３】
フィーチャーマップ抽出器(Feature map extractor)５００は、乗算器４００から伝えられる結果データの相対座標及びバウンダリー情報に基づいて乗算した結果データ間の加算を遂行し、前記加算結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップが生成できる。すなわち、フィーチャーマップ抽出器５００は、相対座標及びバウンダリー情報に基づいて加算結果値をピクセルグループ化以前のピクセルがある形態(図２の(ａ))に再配列するものである。
【００４４】
出力フィーチャーマップ生成器(Output feature map generator)６００は、出力フィーチャーマップに活性化関数(Activation Function)を適用して非線形値に変更し、プーリング(pooling)処理して最終出力フィーチャーマップを生成し、第１のメモリ１００、第２のメモリ３００及び前記ゼロ値フィルタ２００の少なくとも一つに転送できる。
【００４５】
図１１は、本発明の実施例に係る神経網加速装置の動作方法を説明するためのフローチャートである。
【００４６】
図１１を参照すれば、神経網加速装置１０のゼロ値フィルタ２００は、入力フィーチャー(Input Feature)及び加重値(Weight)が受信できる(Ｓ１０１)。
【００４７】
図１を参照すれば、ゼロ値フィルタ２００には、第１のメモリ１００から既保存のフィーチャー及び加重値が伝達される。
【００４８】
次に、ゼロ値フィルタ２００は、入力フィーチャーに加重値を適用してゼロ(０)値をフィルタリングし、前記入力フィーチャーの各ピクセルに対する相対座標及びグループバウンダリー情報を含むインデックス情報をマッチングして、圧縮形のパケットデータが生成できる(Ｓ１０３)。
【００４９】
詳しくは、ゼロ値フィルタ２００は、入力フィーチャー及び加重値のゼロ値位置及びストライド(stride)値を用いてゼロ値フィルタリングが遂行できる。
【００５０】
また、ゼロ値フィルタ２００は、入力フィーチャーのピクセルを既設定の基準によってグループ化し、複数のグループ間の相対座標を生成して、各グループ内のピクセルにマッチングできる。
【００５１】
次に、神経網加速装置１０の乗算器４００は、ゼロ値フィルタ２００から伝えられる圧縮形のパケットデータの前記入力フィーチャー及び前記加重値に対して乗算を遂行して、結果データが得られる(Ｓ１０５)。このとき、圧縮形のパケットデータは、ゼロ値フィルタ２００から直接受信することなく、第２のメモリ３００から受信することも可能である。
【００５２】
図３及び図４を参照すれば、圧縮形のパケットデータは、グループバウンダリー情報(boundary indicator)、該ピクセルデータの全部がゼロ値(０)であるか否かを示すゼロフラッグ(All 0 flag)、ピクセルデータの座標(Coordinate info)及びピクセルデータ(Data)を含むことができる。このとき、グループバウンダリー情報は、ゼロ値フィルタ２００からバウンダリー次数別非ゼロ位置値をビットＯＲ演算して得られた統合バウンダリー情報であり得る。
【００５３】
図８を参照すれば、ゼロ値フィルタ２００は、１ｓｔターゲットバウンダリー〜７ｔｈターゲットバウンダリーの非ゼロ位置値(１、０、０、０、０、０、０)(ｃ−１)をビットＯＲ演算して、統合バウンダリー情報(ｄ−１)が得られる。統合バウンダリー情報は、ゼロ値フィルタ２００が圧縮形のパケットデータを生成するピクセルを決定するのに用いられる。
【００５４】
乗算器４００は、乗算を遂行する際、インデックス情報を参照してゼロ値フィルタリングされたパケットデータに対する前記乗算が省略できる。具体的に、ゼロ値フィルタ２００から伝えられたパケットデータのゼロフラッグ値が１である場合、乗算器４００は、該パケットデータのピクセルグループのピクセルデータに対する乗算が全部省略できる。すなわち、第２のメモリ３００に０が除去されたパケットデータが保存されるので、乗算器４００の以前段において不要なデータが除去されるものである。このとき、Full zero skip caseの場合は保存されない場合から例外であり得る。一実施例において、乗算器４００は、第２のメモリ３００の圧縮形のパケットデータを通してパケット単位にパケットが進行できる。パケットのゼロフラッグ値が‘０’である場合、乗算器４００は、パケットのピクセルデータにフィルタの非ゼロ係数を各々乗算して、各々の非ゼロフィルタ係数に対して一つの乗算結果を生成し、グループバウンダリー情報、ゼロフラッグ値、並びにパケットの相対座標及び乗算の結果を含むパケットに対する結果が出力できる。パケットのゼロフラッグ値が‘１’である場合、乗算器４００は、グループバウンダリー情報、ゼロフラッグ値、並びにパケットの相対座標(０の相対座標)及び一部実施例で乗算結果が０を含むパケットに対する結果が出力できる。これにより、乗算器４００から不要な演算により発生し得る不要なレイテンシ及びパワー消耗が低減できる。
【００５５】
次に、フィーチャーマップ抽出器５００は、結果データの前記相対座標及び前記グループバウンダリー情報に基づいて前記乗算した前記結果データ間の加算を遂行し、前記加算の結果値を最初入力フィーチャー形態に再配列して、出力フィーチャーマップが生成できる(Ｓ１０７)。例えば、一実施例において、乗算器４００のパケットに対応する各々の出力に対して、フィーチャーマップ抽出器５００は、出力フィーチャーマップ内のどのピクセルが出力で各々の乗算結果を用いるか決定でき、その乗算結果をそのピクセルに蓄積できる。
【００５６】
次に、出力フィーチャーマップ生成器６００は、出力フィーチャーマップに活性化関数を適用して非線形値に変更し、プーリング処理して最終出力フィーチャーマップが生成できる(Ｓ１０９)。
【００５７】
図１２は、図１１の圧縮形のパケットデータを生成する方法であるステップＳ１０３をより詳細に説明するための図である。
【００５８】
図１２を参照すれば、神経網加速装置１０のゼロ値フィルタ２００は、入力フィーチャー及び加重値を各々１次元ベクトル形態に変換し、入力フィーチャーのピクセル及び加重値の係数の各々をビットＯＲ演算して、非ゼロ値位置(non-zero value position)をフィルタリングできる(Ｓ２０１)。
【００５９】
図５を参照すれば、ゼロ値フィルタ２００は、４×４形態の入力フィーチャー(ａ)をフィルタ(加重値)サイズに合うように１次元ベクトル形態に羅列(１、５、０、６、３、０、４、８、０、１３、１０、１４、１１、１５、１２、０)(ａ−１)し、フィーチャーの非ゼロ値位置を抽出するためにビットＯＲ演算を遂行して、１、１、０、１、１、０、１、１、０、１、１、１、１、１、１、０(ａ−２)のような値が得られる。
【００６０】
図６を参照すれば、ゼロ値フィルタ２００は、２×２形態の加重値(ｂ)を１次元ベクトル形態に羅列(１０、０、０、１１)(ｂ−１)し、加重値(フィルタ)の非ゼロ値位置を抽出するためにビットＯＲ演算を遂行して、１、０、０、１(ｂ−２)のような値が得られる。すなわち、ゼロ値フィルタ２００は、フィーチャー(ａ−２の１)及び加重値(ｂ−２の１)に対する非ゼロ値位置が認識できるものである。
【００６１】
次に、ゼロ値フィルタ２００は、フィルタリングされた前記入力フィーチャー及び前記加重値の非ゼロ位置値をビットＡＮＤ演算して、バウンダリー次数別前記加重値位置による非ゼロ位置値が得られる(Ｓ２０３)。
【００６２】
前記バウンダリー次数は、１次元ベクトル形態の加重値が１次元ベクトル形態の入力フィーチャーをスライディングウィンドウした次数と同一であり得る。
【００６３】
図７及び図８を参照すれば、ゼロ値フィルタ２００は、フィルタリングされた１次元ベクトル形態の入力フィーチャー(ａ−２)及び加重値(ｂ−２)の非ゼロ位置値を互いに対向した後、加重値をフィーチャーにスライディングウィンドウしながらビットＡＮＤ演算するものである。このとき、ストライド値は、スライディングウィンドウが移動する毎に移動する量を意味するもので、加重値に対応する２−Ｄフィルタのコラム幅の倍数であり得る。
【００６４】
図８を参照すれば、ゼロ値フィルタ２００は、加重値(ｂ−２)がスライディングウィンドウの位置に各々対応する(ｃ)のような複数のターゲートバウンダリー(１ｓｔターゲットバウンダリー〜７ｔｈターゲットバウンダリー)が得られる。
【００６５】
次に、ゼロ値フィルタ２００は、バウンダリー次数別非ゼロ位置値をビットＯＲ演算して、統合バウンダリー情報が得られる(Ｓ２０５)。このとき、統合バウンダリー情報が前述のＳ１０３のインデックス情報のバウンダリー情報として含まれる。
【００６６】
図８を参照すれば、ゼロ値フィルタ２００は、１ｓｔターゲットバウンダリー〜７ｔｈターゲットバウンダリーの非ゼロ位置値(１、０、０、０、０、０、０)(ｃ−１)をビットＯＲ演算して、統合バウンダリー情報(ｄ−１)が得られる。ゼロ値フィルタ２００は、前述の過程を繰り返して最終統合バウンダリー情報が得られる。
【００６７】
ステップＳ２０５において、ゼロ値フィルタ２００は、統合バウンダリー情報を得る際、ビットＯＲ演算を遂行する非ゼロ位置値のバウンダリー次数をストライド(stride)値によって変更できる。
【００６８】
本発明の属する技術分野における通常の技術者は、本発明がその技術的思想や必須特徴から逸脱しない範囲内において、他の具体的な形態で実施できるので、前述した実施例は全ての面において例示的なものであり、限定的なものではないと理解しなければならない。本発明の範囲は前記詳細な説明よりも後述する特許請求の範囲により示され、特許請求の範囲の意味及び範囲、その等価概念から導出される全ての変更又は変形された形態が、本発明の範囲に含まれるものと解析しなければならない。
【符号の説明】
【００６９】
１０  神経網加速装置
１００  第１のメモリ
２００  ゼロ値フィルタ
３００  第２のメモリ
４００  乗算器
５００  フィーチャーマップ抽出器
６００  出力フィーチャーマップ生成器
【図１】
2020184309.tif 000003
【図２】
2020184309.tif 000004
【図３】
2020184309.tif 000005
【図４】
2020184309.tif 000006
【図５】
2020184309.tif 000007
【図６】
2020184309.tif 000008
【図７】
2020184309.tif 000009
【図８】
2020184309.tif 000010
【図９】
2020184309.tif 000011
【図１０】
2020184309.tif 000012
【図１１】
2020184309.tif 000013
【図１２】
2020184309.tif 000014