(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-03
(45)【発行日】2023-02-13
(54)【発明の名称】ニューラルネットワークデータ処理装置、方法および電子機器
(51)【国際特許分類】
G06F 13/28 20060101AFI20230206BHJP
G06F 13/12 20060101ALI20230206BHJP
【FI】
G06F13/28 310J
G06F13/12 330T
G06F13/28 310Z
(21)【出願番号】P 2020097701
(22)【出願日】2020-06-04
【審査請求日】2020-06-04
(31)【優先権主張番号】201911420592.1
(32)【優先日】2019-12-31
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】110002468
【氏名又は名称】弁理士法人後藤特許事務所
(72)【発明者】
【氏名】李 浩洋
(72)【発明者】
【氏名】阮 元
(72)【発明者】
【氏名】李 宇鵬
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2018/0248562(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/28
G06F 13/12
(57)【特許請求の範囲】
【請求項1】
ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、
前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、
前記第1データサブブロックをリアルタイムに圧縮するためのデータ処理モジュールと、
前記データ処理モジュールから出力された前記第1データサブブロックの前記圧縮後の圧縮データを受信した場合に、前記圧縮データを出力することが可能なデータ書き出しモジュールとを含
み、
前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記サブブロックタイプは、ベースブロック、アラインメントブロックおよびリマッピングレスブロックを含む、ことを特徴とするニューラルネットワークデータ処理装置。
【請求項2】
前記データ処理モジュールは、さらに、前記第1データサブブロックに対しデータ処理を行うことに用いられることを特徴とする請求項1に記載の装置。
【請求項3】
前記データ読み取りモジュールは、
前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュールを含むことを特徴とする請求項1に記載の装置。
【請求項4】
前記データ読み取りモジュールは、
前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュと、
前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュと、
前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシンとをさらに含むことを特徴とする請求項
3に記載の装置。
【請求項5】
前記データ読み取りモジュールは、
前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュと、
前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシンとをさらに含むことを特徴とする請求項
4に記載の装置。
【請求項6】
前記データ書き出しモジュールは、
前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュと、
前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュと、
前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュと、
前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュールとを含むことを特徴とする請求項1に記載の装置。
【請求項7】
前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュールをさらに含むことを特徴とする請求項1に記載の装置。
【請求項8】
請求項1~
7のいずれか一項に記載のニューラルネットワークデータ処理装置を含むことを特徴とする電子機器。
【請求項9】
ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することと、
前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることと、
前記第1データサブブロックをリアルタイムに圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することとを含
み、
前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記サブブロックタイプは、ベースブロック、アラインメントブロックおよびリマッピングレスブロックを含む、ことを特徴とするニューラルネットワークデータ処理方法。
【請求項10】
前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、
前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、
前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、
前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含むことを特徴とする請求項
9に記載の方法。
【請求項11】
前記の前記配置情報に基づいて第1データサブブロックを読み取ることは、
前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含むことを特徴とする請求項
9に記載の方法。
【請求項12】
前記圧縮データの長さをキャッシュすることと、
前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力することとをさらに含むことを特徴とする請求項
9に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コンピュータ技術の人工知能チップ技術の分野に係り、特にニューラルネットワークデータ処理装置、方法および電子機器に関わる。
【背景技術】
【0002】
現在、ニューラルネットワークが広く利用されており、たとえば、深層畳み込みニューラルネットワークCDNN(Convolutional Deep Nueral Networks)は、音声認識、画像認識、自然言語処理などのインターネット用途に広く利用されている。しかしながら、ニューラルネットワーク計算は、ニューラルネットワークプロセッサNPU(Neural Processing Unit)内で行われることが多く、ニューラルネットワーク計算を実行した後、計算結果をオフチップメモリに戻す必要がある。オフチップメモリの帯域幅が制限されるため、多くの実際のサービスシナリオでは、オフチップとオンチップの間のデータ搬送時間が実際の計算時間を超え、ニューラルネットワークの性能が比較的悪い。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本願は、ニューラルネットワークデータ処理装置、方法および電子機器を提供し、ニューラルネットワークの性能が比較的悪いという問題を解決しようとする。
【課題を解決するための手段】
【0004】
第1方面では、本願は、ニューラルネットワークデータ処理装置を提供する。当該装置は、ディレクトメモリアクセスDMA(Direct-Memory Access)タスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、前記第1データサブブロックをリアルタイムに圧縮するためのデータ処理モジュールと、
前記データ処理モジュールから出力された前記第1データサブブロックの前記圧縮後の圧縮データを受信した場合に、前記圧縮データを出力することが可能なデータ書き出しモジュールとを含む。
【0005】
データサブブロックによる圧縮が行われるため、データ搬送効率を高め、さらにニューラルネットワークの性能を高めることができる。
【0006】
選択可能に、前記データ処理モジュールは、さらに、前記第1データサブブロックに対しデータ処理を行うことに用いられる。
【0007】
第1データサブブロックのデータ処理を行うため、上記装置のデータ処理性能を高めることができる。
【0008】
選択可能に、前記データ処理モジュールは、前記第1データサブブロックをキャッシュするための元データキャッシュと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るための圧縮アルゴリズムモジュールと、前記圧縮データの長さをキャッシュするための長さフィールドキャッシュと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在すると判断すると、第1ストローブ信号を生成し、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在しないと判断するのであれば、第2ストローブ信号を生成し、前記長さキャッシュがヒットされなければ、第3ストローブ信号を生成するための圧縮制御ステートマシンと、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて前記元データキャッシュから前記第1データサブブロックを読み取り、または、前記第3ストローブ信号に基づいて前記長さフィールドキャッシュから前記圧縮データの長さを読み取るためのマルチプレクサと前記マルチプレクサによって読み取られた前記圧縮データ、前記第1データサブブロック又は前記圧縮データの長さを前記データ書き出しモジュールに出力するためのデータシフトモジュールとを含み、前記データ書き出しモジュールは、前記データシフトモジュールから出力された前記圧縮データを受信した場合に、前記圧縮データを出力する。
【0009】
当該実施形態において、マルチプレクサから適切なデータを出力するように上記圧縮制御ステートマシンによって制御することによって、データの長さを制御可能にし、余分なメモリ空間を確保することを回避して、メモリ空間の節約を図ることができるという効果を奏する。
【0010】
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記データ読み取りモジュールは、前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュールを含む。
【0011】
前記読み取った第1データサブブロックのシフトおよびスプライシング処理をして前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
【0012】
選択可能に、前記データ読み取りモジュールは、前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュと、前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュと、前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシンとをさらに含む。
【0013】
上記データ出力ステートマシンによってデータを正しく整然と出力することができる。
【0014】
選択可能に、前記データ読み取りモジュールは、前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュと、前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシンとをさらに含む。
【0015】
上記データ読み取りステートマシンによってデータを正しく整然と読み取ることができる。
【0016】
選択可能に、前記データ書き出しモジュールは、前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュと、前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュと、前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュと、前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュールとを含む。
【0017】
上記第1データサブブロックのデータマスクとインタフェースタイミングによって、上記第1データサブブロックを指定位置に正しく整然と出力することができる。
【0018】
選択可能に、前記装置は、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュールをさらに含む。
【0019】
上記アドレスチャネル信号によって圧縮データのランダムアクセスをサポートし、さらにニューラルネットワークの性能を高めることができる。
【0020】
第2方面では、本願は、電子機器を提供し、本願によるニューラルネットワークデータ処理装置を含むことを特徴とする。
【0021】
第3方面では、本願は、ニューラルネットワークデータ処理方法を提供する。当該方法において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることと、前記第1データサブブロックをリアルタイムに圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することとを含む。
【0022】
データサブブロックによる圧縮が行われるので、データ搬送効率を高め、さらにニューラルネットワークの性能を高めることができる。
【0023】
選択可能に、前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含む。
【0024】
前記圧縮データの長さが前記第1データサブブロックのデータの長さより小さい場合に前記圧縮データを出力するため、データの長さを制御可能にし、余分なメモリ空間を確保することを回避して、メモリ空間の節約を図ることができるという効果を奏する。
【0025】
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報を含み、前記の前記配置情報に基づいて第1データサブブロックを読み取ることは、前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含む。
【0026】
前記読み取った第1データサブブロックのシフトおよびスプライシング処理をして前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
【0027】
選択可能に、前記方法において、前記圧縮データの長さをキャッシュすることと、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力することとをさらに含む。
【0028】
上記アドレスチャネル信号によって圧縮データのランダムアクセスをサポートし、さらにニューラルネットワークの性能を高めることができる。
【発明の効果】
【0029】
本願の1つの実施例のニューラルネットワークデータ処理装置は、ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、前記第1データサブブロックを圧縮するためのデータ処理モジュールと、前記第1データサブブロックの前記圧縮後の圧縮データを出力するためのデータ書き出しモジュールとを含む。したがって、ニューラルネットワークの性能が比較的悪いという問題を克服し、さらにニューラルネットワークの性能を高めるという技術効果を達成する。
【0030】
上記の選択可能な形態によるほかの効果は、以下、具体的な実施例に関連して説明される。
【図面の簡単な説明】
【0031】
図面は、本解決策をより良く理解するために使用され、本願を限定するものではない。
【
図1】本願によるニューラルネットワークデータ処理装置の構造図である。
【
図2】本願によるデータサブブロックの分割概略図である。
【
図3】本願によるデータ処理モジュールの構造図である。
【
図4】本願によるデータ読み取りモジュールの構造図である。
【
図5】本願によるデータ書き出しモジュールの構造図である。
【
図6】本願による別のニューラルネットワークデータ処理装置の構造図である。
【
図7】本願によるニューラルネットワークデータ処理方法のフローチャートである。
【
図8】本願による別のニューラルネットワークデータ処理方法のフローチャートである。
【発明を実施するための最良の形態】
【0032】
以下、理解に役立つための本願の実施例の様々な細部を含めて本願の例示的な実施例は
、図面に基づいて説明されるが、例示的なものに過ぎないとされるべきである。したがって、当業者は、本願の範囲および趣旨から逸脱することなく、ここに記載された実施例に様々な変更および修正を加えることができることを認識するであろう。また、説明の明確化および簡略化のため、以下の記載では、周知の機能および構成についての記載は、省略する。
【0033】
図1を参照する。
図1は、本願によるニューラルネットワークデータ処理装置の構造図である。
図1に示すように、ニューラルネットワークデータ処理装置100は、指令解析モジュール101と、データ読み取りモジュール102と、データ処理モジュール103と、データ書き出しモジュール104とを含む。
【0034】
指令解析モジュール101は、DMAタスクを複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することに用いられる。ここで、サブタスクは、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する。
【0035】
ここで、上記ニューラルネットワークデータ処理装置100は、ニューラルネットワーク計算用のチップ(または、プロセッサと呼ぶ)、たとえば、ニューラルネットワークプロセッサNPU(Neural Processing Unit)またはハードウェアアクセラレータである。
【0036】
ここで、指令解析モジュール101は、処理対象の指令を受信し、指令を解析する役割を担う。受信されたDMAタスク(たとえば、データ搬送および処理タスク)を複数のサブタスクに分解する。
【0037】
上記ニューラルネットワーク搬送データは、ニューラルネットワークの計算を実行して得られるデータ、たとえば、重み行列や特徴マップ(feature map)などのデータである。また、上記データサブブロックは、上記搬送データを分割して得られるデータサブブロックである。たとえば、
図2に示すように、搬送データを、ベースブロック、アラインメントブロックおよびリマッピングレスブロックのデータサブブロックに分割することができる。ここで、ベースブロック毎のデータサイズは固定であり、この固定サイズは予め配置されていてもよく、具体的には、実際のニーズに応じて配置することができる。アラインメントブロックおよびリマッピングレスブロックは、搬送データブロックを複数のベースブロックに分割した後に残ったベースブロックを構成できないサブブロックであり、具体的には、
図2に示すように、右に残ったサブブロックをアラインメントブロックと称し、下に残ったサブブロックをリマッピングレスブロックと称する。
【0038】
また、上記の各サブタスクに対応するデータサブブロックの配置情報を取得することは、データサブブロックの配置情報を生成し、かつ配置情報は、データサブブロックの長さ、アドレス、およびデータサブブロックが圧縮されているか否かを示す圧縮情報などを含む。
【0039】
上記のサブタスクがニューラルネットワーク搬送データのデータサブブロックに一対一に対応することは、各サブタスクがニューラルネットワーク搬送データのサブブロックに対応し、当該データが1つの行列である。その後、ほかのモジュールに対し、各サブブロックに対応する配置情報を生成し、当該配置情報は、タスク配置情報と称する。さらに、上記配置情報は、データのアドレス、長さ、圧縮の有無など、他のモジュールが1つのサブブロックを処理するために必要な各種情報を含む。
【0040】
また、指令解析モジュール101が処理可能な指令には、DMA配置指令、DMA実行指令、DMA同期指令等が含まれる。ここで、DMA配置指令は、後続のDMA実行指令のパラメータを設定するために使用される。DMA実行指令は、1つのデータ搬送タスクの開始を宣言するために使用され、使用されるパラメータは、その前のDMA配置指令によって設定される。DMA同期指令は、システムの同期フラグであり、この指令前の全指令実行完了後に装置から処理完了信号が返送され、上位のソフトハードウェアシステムとの同期が完了する。
【0041】
さらに、指令解析モジュール101が指令を受け取ると、まず指令タイプを判断する。DMA配置指令であれば、対応する内部レジスタに書き込み、指令解析モジュール101内部で記録する。DMA実行指令であれば、既存の内部レジスタ配置にしたがって、サブブロックのタスク配置情報の生成を開始する。DMA同期指令であれば、応答処理モジュールに対し中断フラグ信号を送信する。当該フラグは、その送信前の搬送データ量の総量を記録する。
【0042】
また、ニューラルネットワークデータ処理装置100のキャッシュ機能が有効であると、指令解析モジュール101は、サブブロックの目的アドレスからキャッシュヒットか否かを判断し、キャッシュミスの場合にキャッシュフラッシュの配置情報を挿入する。
【0043】
さらに、指令解析モジュール101が指令を処理して生成するタスク配置情報は、ベースブロック配置情報、アラインメントブロック配置情報、リマッピングレスブロック配置情報、キャッシュブロック配置情報の4種類を含む。
【0044】
さらに、指令解析モジュール101は、アドレス並べ替え機能が有効か否かを設定し、アドレス並べ替え機能が有効でない場合、データを全てリマッピングレスブロックとして処理する。ここで、リマッピングレスブロックとして処理する場合、これらのサブブロックは、圧縮しなくてもよい。
【0045】
また、本願において、ニューラルネットワークは、CDNNを含んでいるが、これに限定されず、たとえば、他のディープニューラルネットワークであってもよい。
【0046】
データ読み取りモジュール102は、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることに用いられる。
【0047】
ここで、前記第1データサブブロックは、前記搬送データのうちのいずれかのデータサブブロックであってもよく、いずれかのベースブロックであることが好ましい。
【0048】
上記の前記配置情報に基づいて第1データサブブロックを読み取ることは、内部キャッシュから指示されるデータサブブロックを配置情報に基づいて読み取る。
【0049】
ここで、上記データ読み取りモジュール102は、指令解析モジュール101から配置情報を取得し、配置情報に基づいて第1データサブブロックを読み取る。ここで、読み取りは、上記装置の内部キャッシュから読み取る。たとえば、データ読み取りモジュール102は、指令解析モジュール101から配置情報を取得し、内部キャッシュからのデータ読み取り作業を完了する。さらに、読み取られたデータを整理し、特定の内部データ形式(たとえば、AXIプロトコル、データ-データ有効信号からなる簡易データプロトコル)を得てデータ処理モジュール103に伝達する。
【0050】
データ処理モジュール103は、前記第1データサブブロックを圧縮することに用いられる。
【0051】
データ処理モジュール103は、データ読み取りモジュール102から出力した第1データサブブロックを取得して圧縮する。
【0052】
本願では、データサブブロックを圧縮することは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などを含む圧縮方式を用いて圧縮する。
【0053】
データ書き出しモジュール104は、前記第1データサブブロックの前記圧縮後の圧縮データを出力することに用いられる。
【0054】
データ書き出しモジュール104は、上記圧縮データをオフチップメモリに書き込み、さらに、データ処理モジュールによる処理データをキャッシュし、出力インタフェースの要求に応じて、対応するデータ出力インタフェースタイミングを生成する。
【0055】
なお、本願で上記装置に関連する図面において、破線は、モジュール間の制御のための制御フローを示し、実線は、モジュール間のデータ伝送のためのデータラインを示す。
【0056】
本実施例では、上記装置により、データサブブロックによる圧縮を実現することができ、データ搬送効率を向上させ、さらにニューラルネットワークの性能を向上させることができる。
【0057】
選択可能に、前記データ処理モジュール103は、さらに、前記第1データサブブロックに対するデータ処理を行うことに用いられる。
【0058】
たとえば、データのシフト、固定小数点化、最大値の検索などのデータ処理であり、具体的には、第1データサブブロックの元データ、圧縮データ、または圧縮長に対して、データのシフト、固定小数点化、最大値の検索などのデータ処理を行う。それによってデータ処理性能を向上させる。
【0059】
選択可能に、
図3に示すように、前記データ処理モジュール103は、前記第1データサブブロックをキャッシュするための元データキャッシュ1031と、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るための圧縮アルゴリズムモジュール1033と、前記圧縮データの長さをキャッシュするための長さフィールドキャッシュ1032と、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在すると判断すると、第1ストローブ信号を生成し、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在しないと判断するのであれば、第2ストローブ信号を生成し、前記
長さキャッシュがヒットされなければ、第3ストローブ信号を生成するための圧縮制御ステートマシン1034と、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて前記元データキャッシュから前記第1データサブブロックを読み取り、または、前記第3ストローブ信号に基づいて前記長さフィールドキャッシュから前記圧縮データの長さを読み取るためのマルチプレクサ1035とを含む。
【0060】
ここで、上記の前記長さキャッシュがヒットされなければ、第3ストローブ信号を生成することは、上記圧縮データの長さフィールドがメモリの記憶アドレス空間にヒットせず、第3ストローブ信号を生成することによって、マルチプレクサ1035が上記長さフィールドキャッシュ1032にキャッシュされた前記圧縮データの長さを読み取って出力する。具体的には、長さフィールドは、長さブロックとして処理される。
【0061】
さらに、
図3に示すように、データ処理モジュール103は、前記マルチプレクサによって読み取られた前記圧縮データまたは前記第1データサブブロックを出力するためのデータシフトモジュール1036をさらに含む。
【0062】
もちろん、ここでのデータシフトモジュール1036は、一例である。たとえば、データ処理モジュール103は、シフト、固定小数点化、最大値の検索などのデータ処理のためのモジュールのような、一部のデータの前処理動作に用いられるモジュールを含む。
【0063】
上記データ処理モジュール103は、データ読み取りモジュール102から出力した各データサブブロックをリアルタイムに圧縮し、圧縮処理の粒度が1つのサブブロックである。
【0064】
ここで、上記元データキャッシュ1031、長さフィールドキャッシュ1032、圧縮アルゴリズムモジュール1033、圧縮制御ステートマシン1034およびマルチプレクサ1035は、データ圧縮モジュールと呼ぶことができる。
【0065】
ここで、元データキャッシュ1031は、データ読み取りモジュール102から送信されたデータを全て受信し、キャッシュ内部に格納し、マルチプレクサによる読み取りに供する。サブブロックがベースブロックであり、かつ圧縮長さ情報がデータ長さ情報より小さい場合、元データキャッシュ1031は、内部キャッシュの対応ベースブロックの元情報を無効に設定して、メモリ空間を解放する。また、サブブロックがアラインメントブロック、リマッピングレスブロックおよび圧縮後の長さがオリジナル長さ以上のベースブロックである場合には、マルチプレクサ1035により、そのモジュールからデータを取り出す。
【0066】
長さフィールドキャッシュ1032は、長さフィールド書き出し回数を減らすために設計されたキャッシュであり、ダイレクトマッピングまたは他のマッピング方式を用いて、キャッシュのメモリ空間を長さフィールドの実際の記憶アドレスに対応させ、キャッシュがヒットされない場合または1つのタスクの実行が完了した後にのみ、キャッシュ内のデータをまとめて書き出す。長さフィールドキャッシュ1032は、圧縮アルゴリズムモジュール1033から、各ベースブロックの圧縮が実行された後に出力された長さ情報を受信し、ベースブロックの目的アドレスに基づいて、アドレスマッピング規則と組み合わせて、キャッシュ内の対応する長さフィールドの特定の記憶位置を取得し、その位置を更新済みのフラグにする。次に処理が必要なサブブロックがキャッシュブロックである場合、マルチプレクサ1035は、当該モジュールから更新済みのフラグにされたすべての長さフィールドデータを読み取るとともに、すべての更新済みのフラグをクリアする。
【0067】
圧縮アルゴリズムモジュール1033は、圧縮アルゴリズムに基づいてベースブロックの圧縮を行うことに用いられる。ここで、圧縮アルゴリズムは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などの圧縮方式による圧縮を含む。サブブロックがベースブロックである場合、圧縮アルゴリズムモジュール1033は、データ読み取りモジュールから送信されたデータを受信し、内部に統合された圧縮アルゴリズムを用いてデータ圧縮を完了させ、圧縮されたデータの長さが元データ長以上である場合、元データ長をそのまま出力し、同時に、圧縮されたデータを無効にし、内部空間を解放する。圧縮後データ長が元データ長よりも小さい場合には、圧縮後データ長を出力し、圧縮後データ長を有効にして、マルチプレクサによるストローブを待って、圧縮後データを出力する。圧縮後データの出力が完了すると、記憶位置を無効にし、メモリ空間を解放する。
【0068】
圧縮制御ステートマシン1034は、指令解析モジュール102から送信される配置情報を受信して処理し、配置情報に含まれるサブブロックタイプとデータ長情報とに基づいて、圧縮アルゴリズムモジュール1033からの圧縮長情報と組み合わせて、選択すべきデータパスを判断することができる。サブブロックがベースブロックであり、かつ圧縮長情報がデータ長情報よりも小さい場合には、第1ストローブ信号である圧縮アルゴリズムモジュールパスストローブ信号を生成する。サブブロックがベースブロックであり、かつ圧縮長情報がデータ長情報以上である場合には、第2ストローブ信号である元データキャッシュパスストローブ信号を生成する。さらに、サブブロックがアラインメントブロックまたはリマッピングレスブロックである場合には、第2ストローブ信号である元データキャッシュパスストローブ信号を生成する。サブブロックがキャッシュブロックである場合には、長さフィールドキャッシュパスストローブ信号を生成する。
【0069】
マルチプレクサ1035は、圧縮制御ステートマシン1034が生成したパスストローブ信号に基づいて、対応するパスからデータを取得して出力し、すなわち、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて、前記元データキャッシュから前記第1データサブブロックを読み取る。
【0070】
データシフトモジュール1036は、データサブブロックの目的アドレスに基づいて、データ圧縮モジュールが出力するデータを、対応する出力インタフェースビット幅にデータが整合するようにシフトする。
【0071】
当該実施形態では、上記圧縮モジュールにより、データ処理モジュール103から出力されるデータの長さを制御可能なものとし、かつDMAチャネルでの圧縮を実現して、キャッシュのオーバーヘッドを低減することができる。
【0072】
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプなどを含む。
図4に示すように、前記データ読み取りモジュール102は、前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュール1021を含む。
【0073】
ここで、上記第1データサブブロックのアドレス情報は、不連続アドレス情報であり、具体的には、たとえば、
図2に示すように、本願における各データサブブロックのアドレスは、不連続アドレスである。すなわち、上記の前記第1データサブブロックを読み取ることは、飛ばしながら読み取ることであり、第1データサブブロックが
図2に示されるベースブロックaであることを例とし、1回目にベースブロックaの1行目のデータを読み取り、2回目にベースブロックaの2行目のデータを読み取り、1行目のデータと2行目のデータとをスプライシングし、次の行のデータをその前のデータとをスプライシングして前記第1データサブブロックの連続で完全でデータストリームを得る。
【0074】
前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
【0075】
選択可能に、前記データ読み取りモジュール102は、前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュ1022と、前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュ1023と、前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシン1024とをさらに含む。
【0076】
ここで、上記配置情報は、圧縮するか否かを示す圧縮情報をさらに含む。
【0077】
上記データ出力コマンドキャッシュ1022は、指令解析モジュール101から前記長さと圧縮情報のうちの少なくとも一つを読み取り、たとえば、
図4に示すように、指令解析モジュール101から生成されて少なくともデータサブブロックの長さと圧縮情報のうちの少なくとも一つを含むデータ配置情報を指令解析モジュール101から受信し、データ配置情報を一時的に記憶する。受信した配置情報は、それぞれ、コマンド読み取り要求の送信と、受信したデータの処理に用いられる。
【0078】
一方、上記データキャッシュ1023は、データを一時的に記憶し、後続のデータ出力ステートマシンの処理が間に合わない場合に生じるデータ損失を回避することができる。さらに、データキャッシュ1023は、同時にデータ読み取りステートマシンにキャッシュデータ量を提供して、読み取りコマンドを送信するデータ量を制御し、過剰なデータを受け取ってデータキャッシュを溢れさせ、データを失うことを回避することもできる。
【0079】
データ出力ステートマシン1024は、データ出力コマンドキャッシュから指令を取得し、配置情報に基づいて、データキャッシュ内のデータを所定のフォーマットにパッキングして、内部データインタフェースを介して後段のデータ処理モジュールに送信する。
【0080】
選択可能に、前記データ読み取りモジュール102は、前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュ1025と、前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシン1026とをさらに含む。
【0081】
ここで、上記読み取りコマンドキャッシュ1025は、指令解析モジュール101から第1データサブブロックのアドレス情報を受信し、たとえば、
図4に示すように、指令解析モジュール101から生成されて少なくとも第1データサブブロックのアドレス情報を含むアドレス配置情報を読み取る。また、読み取りコマンドキャッシュ1025が受信した配置情報は、それぞれ読み取りコマンド要求の送信および受信データの処理に用いられる。
【0082】
また、データ読み取りステートマシン1026は、読み取りコマンドキャッシュ1025から指令を取得し、配置情報に基づいて、内部キャッシュの読み取りに必要なインタフェース信号を生成する。なお、ここでのインタフェース信号は、内部でのデータ読み取りをトリガするための信号である。
【0083】
上記読み取りコマンドキャッシュ1025およびデータ読み取りステートマシン1026により、データ読み取りモジュール102によるデータ読み取りの正確性を高めることができる。
【0084】
選択可能に、
図5に示すように、前記データ書き出しモジュール104は、前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュ1041と、前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュ1042と、前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュ1043と、前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュール1044とを含む。
【0085】
データ書き出しモジュールは、データ処理モジュールによって処理されたデータをキャッシュし、その後、出力インタフェースの要求に応じて、対応するデータ出力インタフェースタイミングを生成することを担う。
図5に示すように、このモジュールは、データ出力キャッシュ、配置情報キャッシュ、インタフェースタイミング生成モジュール、および出力アドレスキャッシュを含む。
【0086】
ここで、上記データ出力キャッシュ1041は、データ処理モジュール103で処理された出力すべきデータを受信して一時的に記憶し、具体的には、圧縮データまたはデータサブブロックの元データを含む。
【0087】
配置情報キャッシュ1042は、インタフェースのデータマスク信号を生成するために主に使用される配置情報を指令解析モジュール101から受信する。
【0088】
出力アドレスキャッシュ1043は、データサブブロックの目標アドレス、すなわち出力アドレスを書込みアドレスインタフェースから捕捉し、インタフェースタイミング生成モジュール1044の使用に供する。
【0089】
インタフェースタイミング生成モジュール1044は、配置情報キャッシュ1042から配置情報を取得し、データ出力キャッシュ1041からデータを取得し、配置情報に基づいて、データに対応するデータマスクを生成し、次に、データ出力インタフェースのプロトコル規則に基づいて、対応するインタフェースタイミングを生成する。さらに、インタフェースタイミング生成モジュール1044は、一部のデータサブブロックに対し、書き込みデータのビット幅がメモリのビット幅より小さい部分書き込みを最適化する。たとえば、現在のデータサブブロックの先頭記憶アドレスが揃っているかを判断し、揃っていない場合、1つ前のデータサブブロックと現在のデータサブブロックの記憶アドレスが連続しているかを判断し、連続していれば、1つ前のデータサブブロックが圧縮されているかを判断し、圧縮されていれば、現在のデータサブブロックの先頭ビート(beat)の完全書き込みを行う。ここで、完全書き込みは、書き込みデータのビット幅がメモリのビット幅であり、現在のデータサブブロックの部分書き込みの回数を減らす、すなわち、データサブブロックに対し部分書き込みを最適化し、書き込み回数を減らして、さらにニューラルネットワークの処理性能を向上させる。さらに、部分書き込みの最適化が完了した場合、データマスクは、修正済みマスクが部分書き込みを完全書き込みに変換することを示すように修正される。
【0090】
さらに、インタフェースタイミング生成モジュール1044は、出力アドレスキャッシュ1043からアドレス発生状況の情報を取得して、アドレスチャネルとデータチャネルに分離したバスプロトコルに対して、2つのチャネルのデータの先後順の制御を実現することができる。
【0091】
当該実施形態では、データ書き出しモジュール104により、ニューラルネットワークの書き込み性能を最適化することができる。
【0092】
選択可能に、
図6に示すように、上記装置は、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュール105をさらに含む。
【0093】
ここで、上記第1データサブブロックの目的アドレスは、第1データサブブロックのオフチップメモリにおける記憶アドレス、または出力アドレスである。
【0094】
上記の前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成することは、第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を得るために、圧縮データの長さに基づいて、アドレス分解論理により目的アドレスを分解する。たとえば、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより大きい場合には、第1データサブブロックの目的アドレスを分解し、たとえば128Bまたは64Bのアドレスチャネル信号に分解して、アドレスチャネル信号によりデータのランダムアクセスをサポートする。または、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより小さい場合には、第1データサブブロックの目的アドレスをアドレスチャネル信号として、アドレスチャネル信号によりデータのランダムアクセスをサポートする。
【0095】
さらに、圧縮機能が有効であり、かつ処理対象のデータサブブロックがベースブロックである場合、アドレス生成モジュール105は、データ処理モジュール103から出力された圧縮長さ情報を追加的に受信し、受信した配置情報と組み合わせて、対応するバスプロトコルに必要なアドレスチャネル信号を生成する。
【0096】
選択可能に、
図6に示すように、上記装置は、オフチップメモリ、バス、またはオンチップネットワークから返されてきた応答信号を処理し、指令解析モジュール101から送られてきた中断フラグに合わせて処理済み中断を生成して指令解析モジュール101に送信するための応答処理モジュール106をさらに含む。
【0097】
たとえば、指令解析モジュール101は、指令を受信してDMA同期指令であると判断すると、中断フラグ信号を応答処理モジュールに送信する。当該フラグは、当該フラグの送信前の搬送データ量の総量を記録する。
【0098】
さらに、応答処理モジュール106は、指令解析モジュール101の配置情報出力インタフェースを捕捉し、指令カウンタを用いてカウントする。指令解析モジュール101から中断フラグを受信すると、応答処理モジュール106は、現在の指令カウンタの値を保存する。一方、応答処理モジュール106は、書き込み応答インタフェースの情報を受信し、応答カウンタを用いてカウントする。応答処理モジュール106は、中断フラグが立ったときに退避していた指令カウンタの値と、現在の応答カウンタの値とを比較していき、後者が前者以上の場合には、その中断フラグの直前の全ての指令が実行済みであることを示し、処理済み中断を発生させて指令解析モジュール101に送信するとともに、退避していた指令カウンタの値を無効にする。
【0099】
さらに、
図6に示すように、上記装置は、書き込み応答インタフェース、データ読み取りインタフェース、アドレス読み取りインタフェース、データ書き込みインタフェースおよびアドレス書き込みインタフェースをさらに備える。ここで、書き込み応答インタフェース、データ書き込みインタフェースおよびアドレス書き込みインタフェースは、オフチップメモリの書き込みインタフェースであり、または、オフチップメモリの書き込みインタフェースに接続されるバス、オンチップネットワークの書き込みインタフェースである。上記データ読み取りインタフェースおよびアドレス読み取りインタフェースは、オンチップキャッシュの読み取りインタフェースであり、または、オンチップキャッシュの読み取りインタフェースに接続されるバス、オンチップネットワークの読み取りインタフェースである。
【0100】
本実施例では、上記装置により、データサブブロックによる圧縮を実現することができ、データ搬送効率を向上させ、さらにニューラルネットワークの性能を向上させることができる。
【0101】
本願は、さらに、本願によるニューラルネットワークデータ処理装置を含む電子機器を提供する。この電子機器は、携帯電話、コンピュータ、サーバなどのニューラルネットワーク計算を行うことができる電子機器を含むが、これらに限定されない。
【0102】
図7を参照する。
図7は、本願によるニューラルネットワークデータ処理方法のフローチャートであり、
図7に示すように、以下のステップを含む。
【0103】
ステップS701において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得する。
【0104】
ここで、上記DMAタスクは、搬送データタスクであり、または、データ搬送および処理タスクである。
【0105】
上記ニューラルネットワーク搬送データは、ニューラルネットワークの計算を実行して得られるデータ、たとえば、重み行列や特徴マップ(feature map)などのデータである。また、上記データサブブロックは、上記搬送データを分割して得られるデータサブブロックである。たとえば、
図2に示すように、搬送データを、ベースブロック、アラインメントブロックおよびリマッピングレスブロックのデータサブブロックに分割することができる。ここで、ベースブロック毎のデータサイズは固定であり、この固定サイズは予め配置されていてもよく、具体的には、実際のニーズに応じて配置することができる。アラインメントブロックおよびリマッピングレスブロックは、搬送データブロックを複数のベースブロックに分割した後に残ったベースブロックを構成できないサブブロックであり、具体的には、
図2に示すように、右に残ったサブブロックをアラインメントブロックと称し、下に残ったサブブロックをリマッピングレスブロックと称する。
【0106】
また、上記の各サブタスクに対応するデータサブブロックの配置情報を取得することは、データサブブロックの配置情報を生成し、かつ配置情報は、データサブブロックの長さ、アドレス、およびデータサブブロックが圧縮されているか否かを示す圧縮情報などを含む。
【0107】
上記のサブタスクがニューラルネットワーク搬送データのデータサブブロックに一対一に対応することは、上記DMAタスクが上記ニューラルネットワーク搬送データに対応する。DMAタスクがサブタスクに分解されると、対応的にニューラルネットワーク搬送データがデータサブブロックに分解される。たとえば、DMAタスクをデータ搬送タスクとする場合、サブタスクは、1つのデータサブブロックを搬送するタスクである。DMAタスクをデータ搬送および処理タスクとする場合、サブタスクは、1つのデータサブブロックを搬送して処理するタスクである。
【0108】
また、本願において、ニューラルネットワークは、CDNNを含んでいるが、これに限定されず、たとえば、他のディープニューラルネットワークであってもよい。
【0109】
ステップS702において、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取る。
【0110】
ここで、上記第1データサブブロックは、前記搬送データのうちのいずれかのデータサブブロックであるが、いずれかのベースブロックであることが好ましい。
【0111】
上記の第1データサブブロックを前記配置情報に基づいて読み取ることは、内部キャッシュから指示されるデータサブブロックを配置情報に基づいて読み取る。
【0112】
なお、本願ではステップS702とステップS703は、第1データサブブロックとして記載されているが、上記第1データサブブロックは上記搬送データのいずれのデータサブブロックであってもよいため、本願は、いずれのデータサブブロックについてもステップS702とステップS703を実行することができる。
【0113】
ステップS703において、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力する。
【0114】
本願では、データサブブロックを圧縮することは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などを含む圧縮方式を用いて圧縮される。
【0115】
また、上記第1データ部分ブロックの前記圧縮後の圧縮データを出力することは、圧縮データをオフチップメモリに書き込む。
【0116】
なお、本願によるニューラルネットワークデータ処理方法は、NPUやハードウェアアクセラレータなどのニューラルネットワーク計算用のチップ(プロセッサともいう)に適用することができる。
【0117】
本願では、上記ステップにより、データサブブロックによる圧縮が可能となり、データ搬送効率を向上させ、ニューラルネットワークの性能を向上させ、ニューラルネットワークプロセッサの等価帯域幅を向上させることができる。
【0118】
図8を参照する。
図8は、本願による別のニューラルネットワークデータ処理方法のフローチャートであり、
図8に示されるように、以下のステップを含む。
【0119】
ステップS801において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得する。
【0120】
ステップS802において、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取る。
【0121】
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報を含み、前記の前記配置情報に基づいて第1データサブブロックを読み取ることは、前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含む。
【0122】
ここで、上記第1データサブブロックのアドレス情報は、不連続アドレス情報であり、具体的には、たとえば、
図2に示すように、本願における各データサブブロックのアドレスは、不連続アドレスである。すなわち、上記の前記第1データサブを読み取ることは、飛ばしながら読み取ることであり、第1データサブブロックが
図2に示されるベースブロックaであることを例とし、1回目にベースブロックaの1行目のデータを読み取り、2回目にベースブロックaの2行目のデータを読み取り、1行目のデータと2行目のデータとをスプライシングし、次の行のデータをその前のデータとをスプライシングして前記第1データサブブロックの連続で完全でデータストリームを得る。
【0123】
前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
【0124】
ステップS803において、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力する。
【0125】
選択可能に、前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含む。
【0126】
前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断することは、圧縮データの長さが第1データサブブロックの長さより小さくなるかを判断し、そうであれば第1データサブブロックに圧縮利得が存在すると判断し、逆の場合には圧縮利得が存在しないと決定する。または、圧縮データの長さに基づいて、圧縮データの伝送に必要なビート(beat)数を決定するとともに、第1データサブブロックの長さに基づいて、第1データブロックの伝送に必要なビート数を決定し、圧縮データの伝送に必要なビート数が第1データサブブロックの伝送に必要なビート数より小さくなるのであれば、第1データブロックに圧縮利得が存在すると決定し、逆の場合には圧縮利得が存在しないと決定する。
【0127】
上記の前記第1データサブブロックおよび前記第1データサブブロックの長さをキャッシュすることは、第1データサブブロックの元データおよびオリジナル長さをキャッシュすると理解される。
【0128】
上記の圧縮は、NPUのDMAで圧縮を行う。DMAで圧縮を行うため、NPUの空間オーバーヘッドを低減するために、NPUに別個に大きなキャッシュを設ける必要がない。
【0129】
前記圧縮データの長さが前記第1データサブブロックのデータの長さよりも小さい場合に前記圧縮データを出力するので、データの長さを制御可能であり、メモリ空間の無駄な確保を回避してメモリ空間の節約を図ることができるという効果を奏する。
【0130】
選択可能に、前記方法において、前記圧縮データの長さをキャッシュするステップS804と、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するステップS805とをさらに含む。
【0131】
ここで、上記第1データサブブロックの目的アドレスは、第1データサブブロックのオフチップメモリにおける記憶アドレス、または出力アドレスである。
【0132】
上記の前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成することは、第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を得るために、圧縮データの長さに基づいて、アドレス分解論理により目的アドレスを分解する。たとえば、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより大きい場合には、第1データサブブロックの目的アドレスを分解し、たとえば128Bまたは64Bのアドレスチャネル信号に分解して、アドレスチャネル信号によりデータのランダムアクセスをサポートする。または、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより小さい場合には、第1データサブブロックの目的アドレスをアドレスチャネル信号として、アドレスチャネル信号によりデータのランダムアクセスをサポートする。
【0133】
当該実施形態では、上記アドレスチャネル信号により、圧縮データのランダムアクセスをサポートすることができ、ニューラルネットワークの性能をさらに向上させることができる。
【0134】
本実施例において、
図1に示した実施例を基に多種類の選択可能な実施形態を追加し、いずれもニューラルネットワークの性能を向上させることができる。
【0135】
上記に示された様々な形態のフローが、ステップの順序変更、追加、または削除のために使用されることが理解されるべきである。たとえば、本願に記載された各ステップは、並列に実行されても、順次的に実行されても、異なる順序で実行されてもよいが、本願に開示された技術的解決手段の所望の結果を実現できる限り、本明細書に限定されない。
【0136】
上記の具体的な実施形態は、本願の保護範囲を制限するようには構成されない。当業者であれば、設計の要件やほかの要素に応じて、様々な修正、組み合わせ、サブ組み合わせ、置換を行うことが明らかである。本願の思想および原理に含まれるあらゆる変更、均等置換および改良等は、本願の範囲に含まれるものとする。