(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-04
(45)【発行日】2022-04-12
(54)【発明の名称】オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
(51)【国際特許分類】
G06F 9/38 20060101AFI20220405BHJP
【FI】
G06F9/38 370Z
(21)【出願番号】P 2020560786
(86)(22)【出願日】2019-06-25
(86)【国際出願番号】 CN2019092805
(87)【国際公開番号】W WO2020001438
(87)【国際公開日】2020-01-02
【審査請求日】2020-10-29
(31)【優先権主張番号】201811045822.6
(32)【優先日】2018-09-07
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201810777693.3
(32)【優先日】2018-07-16
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201810782174.6
(32)【優先日】2018-07-17
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201810680472.4
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】519323517
【氏名又は名称】シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】SHANGHAI CAMBRICON INFORMATION TECHNOLOGY CO.,LTD.
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【氏名又は名称】森本 有一
(72)【発明者】
【氏名】スー チェンユイ
(72)【発明者】
【氏名】チャン ティンフェイ
(72)【発明者】
【氏名】チョウ シアオヨン
(72)【発明者】
【氏名】チャン ヤオ
(72)【発明者】
【氏名】リー チョンウェン
(72)【発明者】
【氏名】トゥー ツートン
(72)【発明者】
【氏名】リウ シャオリー
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開平08-087475(JP,A)
【文献】特表2015-509183(JP,A)
【文献】特表2018-514872(JP,A)
【文献】国際公開第2018/103736(WO,A1)
【文献】特開2018-073414(JP,A)
【文献】特表2007-504549(JP,A)
【文献】特開2006-190301(JP,A)
【文献】特開2003-256385(JP,A)
【文献】特開平08-235149(JP,A)
【文献】特開平05-002610(JP,A)
【文献】特開平04-039761(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、
前記演算モジュールは、
第1演算サブデータを用いて第1演算サブコマンドを実行するように構成される少なくとも1つの演算ユニットと、
前記第1演算サブコマンドを実行するためのデータを含む前記第1演算サブデータを少なくとも記憶するために用いられる記憶ユニットとを含
み、
前記少なくとも1つの演算ユニットは、一つの主演算ユニットと、複数の従演算ユニットとを含み、
前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記演算命令及び前記データブロックを対応する従演算ユニットに伝送するように構成され、
前記複数の従演算ユニットは、前記主演算ユニットから伝送された前記データブロック及び前記演算命令に基づいて並列的に中間演算を実行して複数の中間結果を得、複数の中間結果を前記主演算ユニットに伝送するように構成され、
前記主演算ユニットは、さらに前記複数の中間結果に基づいて最終的な演算結果を得るように構成されることが特徴とする演算装置。
【請求項2】
少なくとも2つの演算モジュール間にデータ接続が存在し、一方の演算モジュールは、前記第1演算サブデータ及び他方の演算モジュールの第2演算サブデータを用いて前記第1演算サブコマンドを実行するように構成され、前記第2演算サブデータは当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び/又は当該他方の演算モジュールの演算ユニットによって生成されたデータを含むことを特徴とする請求項1に記載の演算装置。
【請求項3】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てるように構成される制御モジュールをさらに含み、
前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含むことを特徴とする請求項1に記載の演算装置。
【請求項4】
前記制御モジュールは、
演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算するように構成される第1割り当てユニットと、
各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶するように構成される第2割り当てユニットとを含むことを特徴とする請求項3に記載の演算装置。
【請求項5】
前記制御モジュールはさらに、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続するように構成されることを特徴とする請求項3に記載の演算装置。
【請求項6】
前記演算ユニットは、ネットワークプロセッサ又はコンピュータ機器を含むことを特徴とする請求項1に記載の演算装置。
【請求項7】
前記記憶ユニットは、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも1つを含むことを特徴とする請求項1に記載の演算装置。
【請求項8】
請求項1~7のいずれか一項に記載の演算装置を含むことを特徴とするデータ処理チップ。
【請求項9】
請求項8に記載のデータ処理チップを含むことを特徴とする電子機器。
【請求項10】
演算装置に適用される演算方法であって、
前記演算装置は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、
前記方法は、各演算モジュールの記憶ユニットにより第1演算サブコマンドを実行するためのデータを含む第1演算サブデータを記憶することと、
各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行することとを含み、
前記演算ユニットは、一つの主演算ユニットと、複数の従演算ユニットとを含み、
前記方法は、さらに、
前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記演算命令及び前記データブロックを対応する従演算ユニットに伝送することと、
前記複数の従演算ユニットは、前記主演算ユニットから伝送された前記データブロック及び前記演算命令に基づいて並列的に中間演算を実行して複数の中間結果を得、複数の中間結果を前記主演算ユニットに伝送することと、
前記主演算ユニットは、前記複数の中間結果に基づいて最終的な演算結果を得ることと、を含むことが特徴とする演算方法。
【請求項11】
各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行することは、
前記第1演算サブデータ及び他方の演算モジュールの第2演算サブデータを用いて第1演算サブコマンドを実行することをさらに含み、
前記第2演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び/又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含むことを特徴とする請求項10に記載の方法。
【請求項12】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、
前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含むことを特徴とする請求項10に記載の方法。
【請求項13】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、
第1割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、
第2割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含むことを特徴とする請求項12に記載の方法。
【請求項14】
各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含むことを特徴とする請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
「関連出願の相互参照」
本出願は、2018年9月7日に中国特許局に提出された、出願番号が201811045822.6であり、発明名称が「オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム」である中国特許出願の優先権を主張し、2018年7月16日に中国特許局に提出された、出願番号が201810777693.3であり、発明名称が「データプロセッサ及びデータ処理方法」である中国特許出願の優先権を主張し、2018年7月17日に中国特許局に提出された、出願番号が201810782174.6であり、発明名称が「演算装置及び演算方法」である中国特許出願の優先権を主張し、及び2018年6月27日に中国特許局に提出された、出願番号が201810680472.4であり、発明名称が「データプロセッサ及びデータ処理方法」である中国特許出願の優先権を主張し、その全ての内容が援用により本出願に結合されている。
【0002】
本開示は、人工知能技術の分野に関し、特にオンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステムに関するものである。
【背景技術】
【0003】
従来のチップアルゴリズムのデバッグは、アルゴリズム結果のリアルタイム出力を実現できない。結果出力のためにチップアルゴリズム全体の結果を他のプラットフォームにコピーする必要がある。チップアルゴリズムのデバッグ中にデバッグを行うことができず、チップアルゴリズムのデバッグ効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
そこで、本開示は、ブレークポイントによるチップデバッグ効率が低いという問題を解決するためのオンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステムを提案する。
【課題を解決するための手段】
【0005】
本開示の一態様によれば、オンチップコードのブレークポイントによるデバッグ方法が提供され、前記方法は、オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始することと、前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得することと、前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶することとを含む。
【0006】
1つの可能な実施形態では、前記方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認することをさらに含む。
【0007】
1つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【0008】
1つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【0009】
1つの可能な実施形態では、前記オンチッププロセッサにより、前記出力関数の出力情報を取得することは、前記オンチッププロセッサにより、オンチップシステムのRAMから前記出力関数の出力情報を取得することを含む。
【0010】
1つの可能な実施形態では、前記方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することをさらに含む。
【0011】
1つの可能な実施形態では、前記方法は、前記オンチッププロセッサは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力することをさらに含む。
【0012】
1つの可能な実施形態では、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することを含む。
【0013】
1つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することは、前記オンチッププロセッサは第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第1スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、前記オンチッププロセッサは第2スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第2スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとを含む。
【0014】
1つの可能な実施形態では、前記オンチッププロセッサは第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、前記オンチッププロセッサはドライバプログラムにより前記第1スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、前記オンチッププロセッサは第2スレッドを用いて前記オフチップメモリの状態識別子を確認することは、前記オンチッププロセッサはHOSTプログラムにより前記第2スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【0015】
1つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【0016】
1つの可能な実施形態では、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、前記オフチップメモリは、受信した出力情報に基づいて割り込み関数をトリガしてハードウェア割り込み状態に入ることと、前記オンチッププロセッサは第3スレッドを用いてハードウェア割り込み状態又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第3スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとを含む。
【0017】
本開示の一態様によれば、オンチッププロセッサが提供され、前記オンチッププロセッサは、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始するために用いられる開始モジュールと、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得するために用いられる出力情報取得モジュールと、前記出力情報をオフチップメモリに記憶するために用いられる記憶モジュールとを含む。
【0018】
1つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するために用いられるブレークポイントデバッグ結果確認モジュールをさらに含む。
【0019】
1つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【0020】
1つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【0021】
1つの可能な実施形態では、前記出力情報取得モジュールは、前記オンチッププロセッサにより、オンチップシステムのRAMから前記出力関数の出力情報を取得することを含む。
【0022】
1つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報を出力するために用いられる出力モジュールをさらに含む。
【0023】
1つの可能な実施形態では、前記出力モジュールは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力するために用いられる第1出力サブモジュールを含む。
【0024】
1つの可能な実施形態では、前記出力モジュールは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するために用いられる第2出力サブモジュールを含む。
【0025】
1つの可能な実施形態では、前記第2出力サブモジュールは、第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第1スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、第2スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第2スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとに用いられる。
【0026】
1つの可能な実施形態では、第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、ドライバプログラムにより前記第1スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、第2スレッドを用いて前記オフチップメモリの状態識別子を確認することは、HOSTプログラムにより前記第2スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【0027】
1つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【0028】
1つの可能な実施形態では、前記出力モジュールは、第3スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第3スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとに用いられる第3出力サブモジュールを含む。
【0029】
本開示の一態様によれば、ブレークポイントによるチップデバッグシステムが提供され、前記システムは、オンチップブレークポイントによるデバッグを行うための、上記のいずれか一項に記載のオンチッププロセッサを含むブレークポイントデバッグチップと、前記ブレークポイントデバッグチップの出力情報を記憶するために用いられるオフチップメモリとを含む。
【0030】
本開示の実施例は、オンチップコードのブレークポイントに出力関数を設定することができる。オンチッププロセッサによりオンチップコードの実行を開始して出力関数を実行すると、オンチッププロセッサは、出力関数の出力情報を取得し、出力情報をオフチップメモリに記憶する。オンチッププロセッサは、オフチップメモリに記憶されている出力関数の出力情報に基づいて、オンチップコードの各ブレークポイントでの実行状況をリアルタイムで取得でき、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を実現でき、オンチップコードのデバッグ効率を向上させることができる。
【0031】
また、本開示は、ネットワークモデルの計算ニーズに対応しつつ、装置の消費電力を低減してコストを低減することができるデータプロセッサ、チップ、電子機器及び処理方法を提案する。
【0032】
本開示の一態様によれば、データプロセッサが提供され、前記データプロセッサは、ネットワークモデルの演算動作を実行するための演算子と演算データとを含む、受信したネットワークモデルデータを記憶するために用いられる記憶モジュールと、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当てるように構成されるタスク割り当てモジュールであって、第1フラグが割り当てられている演算子の演算難易度は、第2フラグが割り当てられている演算子の演算難易度よりも大きいタスク割り当てモジュールと、少なくとも1つのビッグコア演算ユニットと少なくとも1つのリトルコア演算ユニットとを含み、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行する演算モジュールとを含む。
【0033】
本開示の実施例において、前記タスク割り当てモジュールはさらに、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第1フラグ又は第2フラグを割り当てるように構成され、及び/又は、前記ネットワークモデルは、ニューラルネットワークモデルを含む。
【0034】
本開示の実施例において、前記タスク割り当てモジュールはさらに、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成するように構成され、ビッグコア演算ユニットが各演算子を実行する第1演算時間とリトルコア演算ユニットが各演算子を実行する第2演算時間とをそれぞれ取得し、前記第1演算時間を各ノードの遅延時間とし、クリティカルパス法を用いて、各ノードに対応する演算子に第1フラグが割り当てられている第1クリティカルパスを決定するように構成される。
【0035】
本開示の実施例において、前記記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択するように構成される記憶割り当てモジュールをさらに含む。
【0036】
本開示の実施例において、前記記憶割り当てモジュール及び記憶モジュールにそれぞれ接続され、前記ネットワークモデルデータを記憶モジュールに伝送して記憶し、前記演算モジュールの演算結果をメモリに伝送するために用いられるダイレクトメモリアクセスモジュールをさらに含む。
【0037】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び/又はデータ時効性を含む優先度情報が含まれ、前記データプロセッサは、前記各演算子及びそれに対応する第1フラグ又は第2フラグをキャッシュするように構成されるキャッシュモジュールと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記演算モジュールを制御するように構成されるスケジューリングモジュールとをさらに含む。
【0038】
本開示の実施例において、前記演算モジュールは、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも1つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも1つの従演算ユニットが接続され、前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニットを介して、演算命令及びデータブロックを対応する従演算ユニットに伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、前記分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び中間結果を伝送するように構成され、前記従演算ユニットは、受信した演算命令に従ってデータブロックを演算して中間結果を得、中間結果を前記分岐演算ユニットに伝送するように構成される。
【0039】
前記演算モジュールは、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、m行n列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第1行のn個の従演算ユニットと、第m行のn個の従演算ユニットと、第1列のm個の従演算ユニットとを含むK個の従演算ユニットに接続され、ここで、m及びnは1よりも大きい正の整数で、Kは正の整数であり、前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも1つのデータブロック及び複数の演算命令のうちの少なくとも1つの演算命令を前記K個の従演算ユニットに送信して中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、本開示の実施例において、前記K個の従演算ユニットは、前記主演算ユニットと残りの従演算ユニットとの間でデータブロック、演算命令及び中間結果を伝送するように構成され、前記残りの従演算ユニットは、当該演算命令に従って受信したデータブロックを演算して中間結果を得、演算結果を対応して接続されている前記K個の従演算ユニットに伝送するように構成される。
【0040】
本開示の実施例において、前記演算モジュールは、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールを含むように構成され、前記ツリー型モジュールは、1つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの1つの従演算ユニットにそれぞれ接続される。
【0041】
本開示の一態様によれば、上記の実施例に記載のデータプロセッサを含むデータ処理チップが提供される。
【0042】
本開示の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【0043】
本開示の一態様によれば、データプロセッサに適用されるデータ処理方法が提供され、前記方法は、ネットワークモデルの演算動作を実行するための演算子と演算データとを含むネットワークモデルデータを受信して記憶することと、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当て、第1フラグが割り当てられている演算子の演算難易度は、第2フラグが割り当てられている演算子の演算難易度よりも大きいことと、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することとを含む。
【0044】
本開示の実施例において、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当てることは、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第1フラグ又は第2フラグを割り当てることを含む。
【0045】
本開示の実施例において、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算される場合の演算時間に基づいて、各演算子にフラグを割り当てることは、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成することと、ビッグコア演算ユニットが各演算子を実行する第1演算時間と、リトルコア演算ユニットが各演算子を実行する第2演算時間をそれぞれ取得することと、前記第1演算時間を各ノードの遅延時間とし、第1クリティカルパス法を用いて、各ノードに対応する演算子に第1フラグが割り当てられている第1クリティカルパスを決定することとを含む。
【0046】
本開示の実施例において、ネットワークモデルデータを受信して記憶することは、記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択することを含む。
【0047】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び/又はデータ時効性を含む優先度情報が含まれ、前記方法は、前記各演算子及びそれに対応する第1フラグ又は第2フラグをキャッシュすることと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記ビッグコア演算ユニット又はリトルコア演算ユニットを制御することとをさらに含む。
【0048】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも1つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも1つの従演算ユニットが接続され、ここで、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割することと、分岐演算ユニットは、演算命令及びデータブロックを対応する従演算ユニットに伝送することと、従演算ユニットは、受信した演算命令及びデータブロックを演算して中間結果を得、分岐演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0049】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、m行n列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第1行のn個の従演算ユニットと、第m行のn個の従演算ユニットと、第1列のm個の従演算ユニットとを含むK個の従演算ユニットに接続され、ここで、m及びnは1よりも大きい正の整数で、Kは正の整数であり、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも1つのデータブロック及び複数の演算命令のうちの少なくとも1つの演算命令を前記K個の従演算ユニットに送信することと、K個の従演算ユニット以外の残りの従演算ユニットは、K個の従演算ユニットから受信した演算命令及びデータブロックを演算して中間結果を得、K個の従演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0050】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールとを含むように構成され、前記ツリー型モジュールは、1つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの1つの従演算ユニットにそれぞれ接続され、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記データブロック及び演算命令をツリー型モジュールのルートポートに伝送することと、ツリー型モジュールの各分岐ポートに接続される従演算ユニットは、受信した演算命令及びデータブロックに基づいて演算を実行して中間結果を得、ツリー型モジュールを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0051】
本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行することにより、ビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【0052】
本開示の実施例は、コストを低減し、帯域幅の要求を低減することができる技術的解決手段を提案し、演算装置、データ処理チップ、電子機器及び演算方法を提案する。
【0053】
本開示の一態様によれば、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含む演算装置が提供され、前記演算モジュールは、第1演算サブデータを用いて第1演算サブコマンドを実行するように構成される少なくとも1つの演算ユニットと、前記第1演算サブコマンドを実行するためのデータを含む前記第1演算サブデータを少なくとも記憶するために用いられる記憶ユニットとを含む。本開示の実施例において、少なくとも2つの演算モジュール間にデータ接続が存在し、一方の演算モジュールは、前記第1演算サブデータ及び他方の演算モジュールの第2演算サブデータを用いて前記第1演算サブコマンドを実行するように構成され、前記第2演算サブデータは当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び/又は当該他方の演算モジュールの演算ユニットによって生成されたデータを含む。
【0054】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てるように構成される制御モジュールをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【0055】
本開示の実施例において、前記制御モジュールは、演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算するように構成される第1割り当てユニットと、各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶するように構成される第2割り当てユニットとを含む。
【0056】
本開示の実施例において、前記制御モジュールは、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続するようにさらに構成される。
【0057】
本開示の実施例において、前記演算ユニットは、ネットワークプロセッサ又はコンピュータ機器を含む。
【0058】
本開示の実施例において、前記記憶ユニットは、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも1つを含む。
【0059】
本開示の一態様によれば、上記の実施例に記載の演算装置を含むデータ処理チップが提供される。
【0060】
本開示の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【0061】
本開示の一態様によれば、演算装置に適用される演算方法が提供され、前記演算装置は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、前記方法は、各演算モジュールの記憶ユニットにより第1演算サブコマンドを実行するためのデータを含む第1演算サブデータを記憶することと、各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行することとを含む。
【0062】
本開示の実施例において、各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行することは、前記第1演算サブデータ及び他方の演算モジュールの第2演算サブデータを用いて第1演算サブコマンドを実行することをさらに含み、前記第2演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び/又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含む。
【0063】
本開示の実施例において、前記方法は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【0064】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、第1割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、第2割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含む。
【0065】
本開示の実施例において、前記方法は、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含む。
【0066】
本開示の実施例において、各演算モジュールに必要なデータを1つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させる構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができ、また、本開示の実施例は、演算装置の拡張性を向上させることができ、演算機能に対応する演算モジュールを追加することにより、演算装置の演算機能を容易に拡張することができる。
【0067】
本開示の実施例は、適用性に優れ、コストを低減することができるデータプロセッサ、チップ、電子機器及びデータ処理方法をさらに提案する。
【0068】
本開示の一態様によれば、データプロセッサが提供され、前記データプロセッサは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて、第1データを第2データに変換するように構成されるデータ変換モジュールと、受信した制御信号に基づいて、前記第1データのデータ形式が予め設定されたデータ形式と異なると確認した場合、前記第1データを第2データに変換するようにデータ変換モジュールを制御するように構成される制御モジュールとを含む。
【0069】
いくつかの実施例において、前記データ変換モジュールは、データを予め設定された粒度に対応するデータに変換するように構成されるグループ化ユニットと、データを予め設定されたバイト順に対応するデータに変換するように構成されるバイト順変換ユニットとを含み、前記制御モジュールは、前記第1データのデータ粒度が前記予め設定された粒度と異なり、かつ前記第1データのバイト順が前記予め設定されたバイト順と異なる場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを第3データに変換し、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第3データを第2データに変換するか、又は、前記第1データのデータ粒度が前記予め設定された粒度と同じであり、且つ第1データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第1データを第2データに変換するか、又は、前記第1データのデータ粒度が前記予め設定された粒度と異なり、且つ第1データのバイト順が前記予め設定されたバイト順と同じである場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを第2データに変換するようにさらに構成される。
【0070】
いくつかの実施例において、前記制御モジュールは、受信した制御信号に基づいて前記第1データのバイト順を決定し、前記第1データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいて前記第1データのデータ変換を実行するようにデータ変換モジュールを制御するように構成されるバイト順制御ユニットを含む。
【0071】
いくつかの実施例において、前記グループ化ユニットは、前記第1データのデータ粒度と予め設定された粒度との比に基づいて、前記第1データを複数のバイトグループに分割するようにさらに構成され、前記複数のバイトグループは前記第3データ又は第2データとされ、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。
【0072】
いくつかの実施例において、前記グループ化ユニットは、前記第1データのアドレス空間の下位アドレスから上位アドレスの順に、前記第1データを複数のバイトグループに分割するようにさらに構成され、前記複数のバイトグループのグループ数は第1データのデータ粒度と予め設定された粒度との比である。
【0073】
いくつかの実施例において、前記バイト順変換ユニットは、第1データ又は第3データの各バイトグループのバイト順を逆にして、各バイトグループの順番で前記第2データを取得するようにさらに構成され、ここで、各バイトグループのデータ粒度は、予め設定された粒度と同じである。
【0074】
いくつかの実施例において、前記制御モジュールは、前記制御信号に基づいて、第1データを記憶するための第1アドレス空間、及び第2データを記憶するための第2アドレス空間を取得し、前記データ変換モジュールは、前記第1アドレス空間に基づいて第1データを取得し、前記第1データを第2データに変換し、前記第2データを第2アドレス空間に記憶する。
【0075】
いくつかの実施例において、予め設定された演算命令に従って前記第2データを演算処理するように構成される演算モジュールをさらに含み、前記制御モジュールは、前記制御信号に基づいて前記予め設定された演算命令を決定し、前記予め設定された演算命令に基づいて前記第2データの演算処理を行うように前記演算モジュールを制御するようにさらに構成される。
【0076】
いくつかの実施例において、前記制御モジュールは、前記演算モジュールが予め設定された条件を満たすか否かを検出し、満たされば、前記第2データを演算処理するように前記演算モジュールを制御するように構成される検出ユニットをさらに含む。
【0077】
いくつかの実施例において、前記演算モジュールは、複数の演算ユニットを含み、前記検出ユニットはさらに、空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断するように構成される。
【0078】
いくつかの実施例において、前記検出ユニットはさらに、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第2データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突しなければ、前記演算モジュールが予め設定された条件を満たすと判断するように構成される。
【0079】
いくつかの実施例において、記憶モジュールをさらに含み、前記制御モジュールはさらに、前記制御信号、前記制御信号に基づいて決定された前記第1データの第1アドレス空間、第1データの粒度情報、及び予め設定された粒度情報を前記記憶モジュールに記憶するように構成される。
【0080】
本開示の実施例の一態様によれば、上記の実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップが提供される。
【0081】
本開示の実施例の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【0082】
本開示の実施例の一態様によれば、データプロセッサに適用されるデータ処理方法が提供され、制御信号を受信することと、受信した制御信号に基づいて、第1データのデータ形式が予め設定されたデータ形式と異なると確認した場合、前記第1データを第2データに変換するようにデータ変換モジュールを制御することとを含み、前記データ変換モジュールは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第1データを第2データに変換するように構成される。
【0083】
本開示の実施例において、前記データ変換モジュールは、グループ化ユニットと、バイト順変換ユニットとを含み、前記第1データを第2データに変換するようにデータ変換モジュールを制御することは、前記第1データのデータ粒度が前記予め設定された粒度と異なる場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを第3データに変換し、前記第1データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第3データを第2データに変換するか、又は、前記第1データのデータ粒度が前記予め設定された粒度と同じであり、且つ第1データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第1データを第2データに変換するか、又は、前記第1データのデータ粒度が前記予め設定された粒度と異なり、且つ第1データのバイト順が前記予め設定されたバイト順と同じである場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを第2データに変換することを含む。
【0084】
本開示の実施例において、前記方法は、受信した制御信号に基づいて前記第1データのバイト順を決定し、前記第1データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいて前記第1データのデータ変換を実行するようにデータ変換モジュールを制御することをさらに含む。
【0085】
本開示の実施例において、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを第3データ又は第2データに変換することは、グループ化ユニットにより前記第1データのデータ粒度と予め設定された粒度との比に基づいて、前記第1データを複数のバイトグループに分割することを含み、複数のバイトグループは前記第3データ又は前記第2データとされ、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。
【0086】
本開示の実施例において、前記第1データのデータ粒度と予め設定された粒度との比に基づいて前記第1データを複数のバイトグループに分割することは、前記第1データのアドレス空間の下位アドレスから上位アドレスの順に、前記第1データを複数のバイトグループに分割することを含み、前記複数のバイトグループのグループ数は、第1データのデータ粒度と予め設定された粒度との比と同じである。
【0087】
本開示の実施例において、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第3データ又は前記第1データを第2データに変換することは、前記バイト順変換ユニットにより第1データ又は第3データの各バイトグループのバイト順を逆にして、各バイトグループの順番で前記第2データを取得することを含み、各バイトグループのデータ粒度は、予め設定された粒度と同じである。
【0088】
本開示の実施例において、前記方法は、前記制御信号に基づいて、第1データを記憶するための第1アドレス空間、及び第2データを記憶するための第2アドレス空間を取得することをさらに含み、前記データ変換モジュールは、前記第1アドレス空間に基づいて第1データを取得し、前記第1データを第2データに変換し、前記第2データを第2アドレス空間に記憶する。
【0089】
本開示の実施例において、前記方法は、前記制御信号に基づいて前記予め設定された演算命令を決定することと、前記予め設定された演算命令に基づいて前記第2データを演算処理するように演算モジュールを制御することとをさらに含む。
【0090】
本開示の実施例において、前記方法は、前記演算モジュールが予め設定された条件を満たすか否かを検出することと、満たされば、前記予め設定された演算命令に基づいて前記第2データを演算処理するように前記演算モジュールを制御することとをさらに含む。
【0091】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールに空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【0092】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第2データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突しなければ、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【発明の効果】
【0093】
本開示の実施例によれば、他の変換デバイスを用いてデータ変換を実行することなく、データプロセッサ内にデータ変換モジュールを設置することによりデータを所望の形式に容易に変換することができ、他の変換デバイスの使用コストを低減するとともに、データ変換モジュールの設置によりデータプロセッサが多様なデータ形式に適用することができ、良好な適用性を有する。
【0094】
本開示の他の特徴及び態様は、添付の図面を参照しながら以下の例示的な実施例を詳細に説明することにより明らかになる。
【図面の簡単な説明】
【0095】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本明細書と併せて本開示の例示的な実施例、特徴及び態様を示しており、本開示の原理を説明するために用いられる。
【
図1-1】
図1-1は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【
図1-2】
図1-2は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【
図1-3】
図1-3は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【
図1-4】
図1-4は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【
図1-5】
図1-5は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法におけるステップS51のフローチャートを示す。
【
図1-6】
図1-6は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【
図1-7】
図1-7は、本開示の一実施例による、オンチッププロセッサのブロック図を示す。
【
図1-8】
図1-8は、本開示の一実施例による、ブレークポイントによるチップデバッグシステムのブロック図を示す。
【
図2-1】
図2-1は、本開示の実施例による、データプロセッサのブロック図を示す。
【
図2-2】
図2-2は、本開示の実施例による、ネットワークモデルの演算子の計算モデル図を示す。
【
図2-3】
図2-3は、本開示の実施例による、データプロセッサのブロック図を示す。
【
図2-4】
図2-4は、本開示の実施例による、データプロセッサのブロック図を示す。
【
図2-5】
図2-5は、本開示の実施例による、データ処理方法のフローチャートを示す。
【
図2-6】
図2-6は、本開示の実施例による、電子機器のブロック図を示す。
【
図2-7】
図2-7は、本開示の実施例による、H型構造として構成される演算ユニットのブロック図を示す。
【
図2-8】
図2-8は、本開示の実施例による、パルスアレイマシン構造として構成される演算ユニットのブロック図を示す。
【
図2-9】
図2-9は、本開示の実施例による、ツリー構造として構成される演算ユニットのブロック図を示す。
【
図2-10】
図2-10は、本開示の実施例による、2分木構造として構成される演算ユニットのブロック図を示す。
【
図3-1】
図3-1は、本開示の実施例による、演算装置のブロック図を示す。
【
図3-2】
図3-2は、本開示の実施例による、演算装置のブロック図を示す。
【
図3-3】
図3-3は、本開示の実施例による、制御モジュールのブロック図を示す。
【
図3-4】
図3-4は、本開示の実施例による、演算方法のフローチャートを示す。
【
図3-5】
図3-5は、本開示の実施例による、H型構造として構成される演算モジュールのブロック図を示す。
【
図3-6】
図3-6は、本開示の実施例による、パルスアレイマシン構造の演算モジュールのブロック図を示す。
【
図3-7】
図3-7は、本開示の実施例による、ツリー構造として構成される演算モジュールのブロック図を示す。
【
図3-8】
図3-8は、本開示の実施例による、2分木構造として構成される演算ユニットのブロック図を示す。
【
図4-1】
図4-1は、本開示の実施例による、データプロセッサのブロック図を示す。
【
図4-2】
図4-2は、本開示の実施例による、データプロセッサにおけるデータ変換モジュールのブロック図を示す。
【
図4-3】
図4-3は、本開示の実施例による、データプロセッサにおける制御モジュールのブロック図を示す。
【
図4-4】
図4-4は、本開示の実施例による、データプロセッサのブロック図を示す。
【
図4-5】
図4-5は、本開示の実施例による、データ処理方法のフローチャートを示す。
【
図4-6】
図4-6は、本開示の実施例による、グループ化ユニットのブロック構造図を示す。
【発明を実施するための形態】
【0096】
以下、本開示の実施例における技術的解決手段を、本開示の実施例における添付の図面を参照して、明確で完全に説明する。記載する実施例が本開示の全ての実施例ではなく、単なる一部にすぎないことは明らかである。当業者によって本開示の実施例に基づいて創造的な労力なしに得られる全ての他の実施例は、本開示の保護範囲に属する。
【0097】
本開示の特許請求の範囲、明細書及び図面における用語「第1」、「第2」、「第3」及び「第4」などは、異なる対象を区分するためのものであり、特定の順序を説明するためのものではないことが理解されたい。本開示の明細書及び特許請求の範囲で使用される用語「含む」及び「包含する」は、記述された特徴、全体、ステップ、操作、要素及び/又は構成要素の存在を示すが、1つ以上の他の特徴、全体、ステップ、操作、要素、構成要素及び/又はそれらの集合の存在又は追加を排除するものではない。
【0098】
本開示の明細書で使用される用語は、特定の実施例を説明するためのものにすぎず、本開示を限定するものではないことも理解されたい。本開示の明細書及び特許請求の範囲で使用されるように、単数形の「1つの(a)」、「1つの(an)」及び「この(the)」は、文脈上で明記されない限り、複数形を含むことを意図している。さらに、本開示の明細書及び特許請求の範囲で使用される用語「及び/又は」は、関連して列挙された項目のうちの1つ以上の任意の組み合わせ、及び可能な組み合わせの全てを意味し、これらの組み合わせを含むことが理解されたい。
【0099】
本明細書及び特許請求の範囲で使用されるように、用語「場合に」は、文脈に応じて「…時に」、「と」、「と判定したことに応じて」、又は「を検出したことに応じて」を意味すると解釈することができる。同様に、語句「と判定される場合に」又は「[記述される条件又はイベント]が検出された場合に」は、文脈に応じて「と判定されると」、又は「と判定したことに応じて」、又は「[記述される条件又はイベント]が検出されると」、又は「[記述される条件又はイベント]を検出したことに応じて」を意味すると解釈することができる。
【0100】
図1-1は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
図1-1に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、ステップS10~ステップS30を含む。
【0101】
ステップS10において、オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始する。
【0102】
1つの可能な実施形態では、C言語、C++言語など機械命令を生成できる任意の言語でアプリケーションプログラムを作成し、オンチッププロセッサは、前記アプリケーションプログラムを利用して本開示の実施例におけるオンチップコードのブレークポイントによるデバッグ方法を実現するようにしてもよい。前記アプリケーションプログラムをオンチップシステムに設定することができる。オンチッププロセッサは、オンチップコードの実行中に前記アプリケーションプログラムを実行することができる。
【0103】
1つの可能な実施形態では、オンチップコードは、オンチップシステムで実行可能なコードである。オンチップシステムは、単一又は複数のチップに集積されたハードウェアシステムであってもよく、コードを実行することによりコードの論理的機能を実現することができる。例えば、オンチップコードは、kernel関数などの様々な種類の機能関数を含むことができる。出力関数は、オンチップコードの実行を中断することなく情報を出力することができる。本開示は、オンチップコードの種類及び内容を限定しない。オンチッププロセッサは、起動コマンドに従ってオンチップコードの実行を開始することができる。
【0104】
1つの可能な実施形態では、デバッグ要件に応じて、オンチップコード内で1つ以上のブレークポイントを人為的に決定することができる。オンチップコードのブレークポイントに出力関数を設定することができる。
【0105】
1つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【0106】
1つの可能な実施形態では、出力関数は、数値プリント関数を含むことができる。数値プリント関数は、予め設定された数値をプリントするために用いられてもよいし、取得した数値をプリントするために用いられてもよい。例えば、予め設定された数値は、二進数「01011」である。数値プリント関数を実行すると、二進数「01011」をプリントすることができる。
【0107】
1つの可能な実施形態では、出力関数は、文字列プリント関数を含むことができる。文字列プリント関数は、予め設定された文字列をプリントするために用いられてもよいし、取得した文字列をプリントするために用いられてもよい。
【0108】
1つの可能な実施形態では、数値プリント関数及び文字列プリント関数をオンチップコードに設定することができる。数値プリント関数と文字列プリント関数のいずれか一方のみをオンチップコードに設定することも可能である。オンチップコードに複数の数値プリント関数又は複数の文字列プリント関数が含まれる場合、複数の数値プリント関数又は複数の文字列プリント関数は同一であっても異なってもよい。
【0109】
1つの可能な実施形態では、前記オンチップコードのブレークポイントに出力関数が設定されていることは、前記オンチップコードの複数のブレークポイントのそれぞれに出力関数が設定されていることを含む。
【0110】
1つの可能な実施形態では、各ブレークポイントにそれぞれ出力関数を設定することができる。複数のブレークポイントでの出力関数は同一であっても異なってもよい。
【0111】
1つの可能な実施形態では、オンチップコードの実行が正常である場合、各ブレークポイントでの出力関数は正常に実行され、正常に情報を出力することができる。オンチップコードの実行が異常である場合、実行異常部分のコードに関する出力関数は、正常に情報を出力できなくなるか、又は、実行状態が異常であることを示す情報を出力する。
【0112】
例えば、オンチップコードには、サブコード1、サブコード2、サブコード3…という複数のサブコードが含まれてもよい。各サブコードに、出力関数1、出力関数2、出力関数3…のようにそれぞれ出力関数を設定できる(例えば、サブコードの終了箇所にブレークポイントを設定し、ブレークポイントに出力関数を設定できる)。各出力関数は、予め設定された数値を出力するために使用される。出力関数1は、数値「1」を出力するために用いられ、出力関数2は、数値「2」を出力するために用いられ、出力関数3は、数値「3」を出力するために用いられる…。オンチップコードの実行中に、サブコード3から正常に実行されず、出力関数3から出力関数も正常に実行されないと仮定すると、出力関数3から出力関数が正常に情報を出力できなくなる。最終的に、オンチップコードの出力関数の出力情報は、数値「1」と数値「2」のみである。
【0113】
各出力関数は、それに対応するサブコードの実行状態を出力するために用いられてもよい。サブコードの実行が正常である場合、対応する出力関数は、状態値「0」を出力するようにしてもよい。サブコードの実行が異常である場合、対応する出力関数は、状態値「1」を出力するようにしてもよい。オンチップコードの実行中に、実行異常のサブコードに関する出力関数は、状態値「1」を出力する。
【0114】
ステップS20において、前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得する。
【0115】
1つの可能な実施形態では、オンチッププロセッサによるオンチップコードの実行中に、出力関数が実行されると、出力関数から出力情報をオンチップシステムのRAM(random access memory、ランダムアクセスレジスタ)に出力することができる。
【0116】
1つの可能な実施形態では、オンチッププロセッサは、前記出力関数の出力情報を取得することは、オンチッププロセッサは、オンチップシステムのRAMから前記出力関数の出力情報を取得することを含む。
【0117】
1つの可能な実施形態では、オンチッププロセッサは、RAMから出力関数の出力情報をリアルタイムで取得してもよい。オンチッププロセッサは、RAMから出力関数の出力情報を周期的に取得してもよい。また、オンチッププロセッサは、取得命令に従ってRAMから出力関数の出力情報を取得してもよい。
【0118】
1つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報を含む。
【0119】
1つの可能な実施形態では、出力関数は、予め設定された数値情報又は文字列情報を出力することができる。異なるブレークポイントでの異なる出力関数に、同じ出力情報を設定し、即ち同じ数値情報又は文字列情報を予め設定することができる。例えば、各ブレークポイントでの出力関数の出力情報は、いずれも二進数の数値1である。異なるブレークポイントでの異なる出力関数に、異なる出力情報を予め設定し、即ち異なる数値情報又は文字列情報を予め設定することもできる。例えば、最初の出力関数の出力情報は二進数の数値1であり、2番目の出力関数の出力情報は二進数の数値2であるなどように設定する。
【0120】
1つの可能な実施形態では、前記出力情報は、前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【0121】
1つの可能な実施形態では、出力関数は、取得した数値情報又は文字列情報を出力することができる。出力関数は、オンチップコード内の他の関数の出力情報を取得し、他の関数の出力情報を出力することができる。例えば、オンチップコードは、ニューラルネットワークの演算に使用することができる。オンチップコードがニューラルネットワークの相関計算を完了するために使用される場合、ニューラルネットワークの計算途中の中間結果を出力するために、オンチップコードに複数の出力関数を設定することができる。ニューラルネットワークは、複数の畳み込み層を含み、各畳み込み層の出力データは、ニューラルネットワークの計算途中の中間結果であるようにしてもよい。オンチップコードには、各畳み込み層に対応する複数の関数が含まれてもよい。オンチップコードの実行中に、各畳み込み層に対応する関数は、各畳み込み層の出力データを予め設定された記憶アドレスに出力することができ、出力関数は、予め設定された記憶アドレスに記憶されている各畳み込み層の出力データを出力することができる。例えば、オンチップコードには、それぞれ1層目から3層目の畳み込み演算に用いられる畳み込み演算関数1、畳み込み演算関数2、及び畳み込み演算関数3が含まれてもよい。オンチップコードは、各畳み込み演算関数の計算結果を予め設定された記憶アドレスに記憶することができる。オンチップコードは、各畳み込み演算関数に対応して、予め設定された記憶アドレス内の各畳み込み演算関数の出力データを出力する出力関数を含むことができる。
【0122】
ステップS30において、前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶する。
【0123】
1つの可能な実施形態では、オンチッププロセッサは、オンチップシステムのRAMから取得された出力関数の出力情報を、オフチップメモリにリアルタイムで記憶することができる。オフチップメモリは、任意のオフチップストレージ、例えば、磁気ディスク(不揮発性)、ネットワークストレージなどを含むことができる。
【0124】
1つの可能な実施形態では、前記オフチップメモリは、DDR(Double Data Rate、ダブルデータレート)メモリを含む。
【0125】
1つの可能な実施形態では、オフチップメモリ内に記憶されている出力情報は、オンチップコードの実行状況を分析するために使用されてもよい。オフチップメモリ内の出力情報がオンチップコードの各出力関数の正常な出力情報である場合に、オンチップコードの実行が正常であるとみなすことができ、そうでない場合に、オンチップコードの実行が異常であるとみなすことができる。
【0126】
1つの可能な実施形態では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて各出力関数の実行状況を確認することができる。オンチッププロセッサは、各出力関数の実行状況に基づいてオンチップコードの実行状況を得ることができ、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を達成する。
【0127】
本実施例では、オンチップコードのブレークポイントに出力関数を設定する。オンチッププロセッサによりオンチップコードの実行を開始して出力関数を実行すると、オンチッププロセッサは、出力関数の出力情報を取得し、出力情報をオフチップメモリに記憶する。オンチッププロセッサは、オフチップメモリに記憶されている出力関数の出力情報に基づいて、オンチップコードの各ブレークポイントでの実行状況をリアルタイムで取得でき、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を達成でき、オンチップコードのデバッグ効率を向上させることができる。
【0128】
図1-2は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
図1-2に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するステップS40をさらに含む。
【0129】
1つの可能な実施形態では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて各出力関数の実行状況を確認することができる。オンチッププロセッサは、各出力関数の出力情報と、予め設定された、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係に基づいて、オンチップコードのブレークポイントによるデバッグの結果を得ることができる。例えば、オンチップコードに3つの出力関数が含まれて、正常実行の場合、3つの出力関数の出力情報はいずれも予め設定された数値「0」となる。予め設定された、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係は、オフチップメモリ内の出力情報の「0、0、0」がオンチップコードのブレークポイントによるデバッグの結果が「正常」であることに対応し、オフチップメモリ内の出力情報の「0、0、1」がオンチップコードのブレークポイントによるデバッグの結果が「3番目のブレークポイントで異常に実行される」ことに対応するなどを含むことができる。オンチップコード及び出力関数の実際の内容に基づいて、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係を決定することができる。
【0130】
本実施例では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて、オンチップコードのブレークポイントによるデバッグの結果を確認することができる。オンチッププロセッサがブレークポイントによるデバッグの結果を直接に確認することにより、オンチップコードのデバッグ効率を向上させることができる。
【0131】
図1-3は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
図1-3に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力するステップS50をさらに含む。
【0132】
1つの可能な実施形態では、オンチッププロセッサは、ドライバ(driver)プログラムによりオフチップメモリ内の出力情報を出力することができる。オンチッププロセッサは、オフチップメモリ内の出力情報を出力することにより、オンチップコードのデバッグ結果を提示し、デバッグ者がデバッグプロセスを監視しやすいようにすることができる。
【0133】
1つの可能な実施形態では、スクリーンに表示する方式を利用して、オフチップメモリ内の出力情報を出力することができる。プリントなどの他の方式を利用して、オフチップメモリ内の出力情報を出力することもできる。本開示は、オフチップメモリ内の出力情報の出力方式を限定しない。
【0134】
1つの可能な実施形態では、オフチップメモリ内の出力情報をリアルタイムで出力することができ、デバッグ者が出力情報に基づいてオンチップコードの実行が異常であると判断した場合、オンチップコードの実行を終了してデバッグすることができ、オンチップコードのデバッグ効率を向上させることができる。
【0135】
本実施例では、オフチップメモリの出力情報を出力することができる。デバッグ者が出力情報に基づいてオンチップコードの実行状況をリアルタイムで監視することができ、これによりオンチップコードのデバッグ効率を向上させることができる。
【0136】
図1-4は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
図1-4に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップS50は、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するステップS51を含む。
【0137】
1つの可能な実施形態では、オンチップコードに複数の出力関数が含まれてもよい。オフチップメモリ内の出力情報は、複数の出力関数の出力情報であってもよい。オフチップメモリ内の出力情報が更新された場合、即ち、新たな出力関数の出力情報があった場合、更新された出力情報を出力することができる。
【0138】
本実施例では、出力情報が更新された場合に出力することにより、出力情報の出力効率を向上させることができる。
【0139】
図1-5は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法におけるステップS51のフローチャートを示す。
図1-5に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップS51は、ステップS511~ステップS514を含む。
【0140】
ステップS511において、前記オンチッププロセッサは第1スレッドを用いて前記オフチップメモリ内の出力情報を確認する。
【0141】
1つの可能な実施形態では、オンチッププロセッサは、第1スレッドを起動して、オフチップメモリ内の出力情報が更新されたか否かを確認することができる。ドライバ(driver)プログラムにより第1スレッドを起動してオフチップメモリ内の出力情報を確認することができる。
【0142】
1つの可能な実施形態では、オンチッププロセッサは、第1確認周期に基づいて、第1スレッドを用いてオフチップメモリ内の出力情報を周期的に確認することができる。
【0143】
ステップS512において、前記第1スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新する。
【0144】
1つの可能な実施形態では、オフチップメモリに状態識別子を設定することができる。状態識別子は、数値又は文字列を含むことができる。オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含むことができる。例えば、数値「0」で読み取り済みを示し、数値「1」で未読み取りを示すことができる。
【0145】
1つの可能な実施形態では、第1スレッドは、オフチップメモリ内の出力情報の更新を確認した場合、オフチップメモリの状態識別子を更新することができる。第1スレッドは、オフチップメモリの状態識別子を「読み取り済み識別子」から「未読み取り識別子」に更新することができる。
【0146】
ステップS513において、前記オンチッププロセッサは第2スレッドを用いて前記オフチップメモリの状態識別子を確認する。
【0147】
1つの可能な実施形態では、オンチッププロセッサは、HOSTプログラムにより第2スレッドを起動してオフチップメモリの状態識別子を確認することができる。オンチッププロセッサは、第2確認周期に基づいて、前記第2スレッドを用いてオフチップメモリの状態識別子を確認することができる。必要に応じて第1確認周期及び第2確認周期の期間を決定することができる。
【0148】
ステップS514において、前記第2スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力する。
【0149】
1つの可能な実施形態では、第2スレッドは、オフチップメモリの状態識別子の更新を確認した場合、例えば、オフチップメモリの状態識別子の「読み取り済み識別子」から「未読み取り識別子」への更新を確認した場合、オフチップメモリ内の更新された出力情報を出力することができる。
【0150】
1つの可能な実施形態では、第2スレッドは、オフチップメモリ内の更新された出力情報を出力した後、オフチップメモリの状態識別子を「未読み取り識別子」から「読み取り済み識別子」に更新することができる。
【0151】
1つの可能な実施形態では、driverとHOSTプログラムが互いに連携することで、オフチップメモリ内の出力情報が更新された場合、オフチップメモリ内の出力情報をタイムリーかつ効率的に出力することができる。
【0152】
図1-6は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
図1-6に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップS50は、ステップS52~ステップS53を含む。
【0153】
ステップS52において、前記オンチッププロセッサは第3スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認する。
【0154】
1つの可能な実施形態では、オフチップメモリがハードウェア割り込み機能を備える場合、オフチップメモリに割り込み関数を設定することができる。オフチップメモリが出力情報を受信すると、割り込み関数をトリガしてハードウェア割り込み状態に入ることができる。
【0155】
1つの可能な実施形態では、オンチッププロセッサは、ドライバプログラムにより第3スレッドを起動してオフチップメモリのハードウェア状態を確認することができる。オフチップメモリの状態が割り込み状態である場合、オフチップメモリに新たな出力情報があることを示す。オフチップメモリの状態が非割り込み状態である場合、オフチップメモリに新たな出力情報がないことを示す。
【0156】
ステップS53において、前記第3スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力する。
【0157】
1つの可能な実施形態では、第3スレッドは、オフチップメモリのハードウェア割り込み状態を確認した場合、オフチップメモリ内の更新された出力情報を出力することができる。
【0158】
本実施例では、オフチップメモリのハードウェア割り込み状態に応じて、オフチップメモリ内の出力情報を出力することができる。オフチップメモリのハードウェア割り込み状態は、オフチップメモリが出力情報を受信したことを適時に反映でき、オフチップメモリ内の出力情報が適時に出力されることを可能にする。
【0159】
図1-7は、本開示の一実施例による、オンチッププロセッサのブロック図を示す。
図1-7に示すように、前記オンチッププロセッサは、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始するために用いられる開始モジュール10と、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得するために用いられる出力情報取得モジュール20と、前記出力情報をオフチップメモリに記憶するために用いられる記憶モジュール30とを含む。
【0160】
1つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するために用いられるブレークポイントデバッグ結果確認モジュールをさらに含む。
【0161】
1つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【0162】
1つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【0163】
1つの可能な実施形態では、前記出力情報取得モジュールは、前記オンチッププロセッサにより、オンチップシステムのRAMから前記出力関数の出力情報を取得することを含む。
【0164】
1つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報を出力するために用いられる出力モジュールをさらに含む。
【0165】
1つの可能な実施形態では、前記出力モジュールは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力するために用いられる第1出力サブモジュールを含む。
【0166】
1つの可能な実施形態では、前記出力モジュールは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するために用いられる第2出力サブモジュールを含む。
【0167】
1つの可能な実施形態では、前記第2出力サブモジュールは、第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第1スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、第2スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第2スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとに用いられる。
【0168】
1つの可能な実施形態では、第1スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、ドライバプログラムにより前記第1スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、第2スレッドを用いて前記オフチップメモリの状態識別子を確認することは、HOSTプログラムにより前記第2スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【0169】
1つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【0170】
1つの可能な実施形態では、前記出力モジュールは、第3スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第3スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとに用いられる第3出力サブモジュールを含む。
【0171】
図1-8は、本開示の一実施例による、ブレークポイントによるチップデバッグシステムのブロック図を示す。
図1-8に示すように、前記ブレークポイントによるチップデバッグシステムは、オンチップブレークポイントによるデバッグを行うための、上記のいずれか一項に記載のオンチッププロセッサを含むブレークポイントデバッグチップ100と、前記ブレークポイントデバッグチップの出力情報を記憶するために用いられるオフチップメモリ200とを含む。
【0172】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本開示は、記載された動作順序に限定されるものではないことが理解される。本開示によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本開示に必須であるとは限らないことも当業者には理解される。
【0173】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【0174】
本開示によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【0175】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、1つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【0176】
また、本開示の各実施例における各機能ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、2つ以上のユニットが1つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【0177】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本開示の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は1つのメモリに記憶され、1つのコンピュータ機器(パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい)に本開示の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【0178】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ(英語:Read-Only Memory、略称:ROM)、ランダムアクセスメモリ(英語:Random Access Memory、略称:RAM)、磁気ディスク又は光ディスクなどがある。
【0179】
以上、本開示の実施例について詳細に説明し、本開示の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本開示の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本開示の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本開示を限定するものとして理解されるべきではない。
【0180】
本明細書では、本開示の実施例による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して、本開示の様々な態様を説明する。フローチャート及び/又はブロック図の各ブロック、並びにフローチャート及び/又はブロック図の各ブロックの組み合わせは、コンピュータ読み取り可能なプログラム命令によって実現され得ることが理解されたい。
【0181】
図面のフローチャート及びブロック図は、本開示の複数の実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装アーキテクチャ、機能、及び動作を示す。この点からすれば、フローチャート又はブロック図の各ブロックは、所定の論理機能を実現するための1つ以上の実行可能な命令を含むモジュール、セグメント、又は命令の一部を表すことができる。一部の代替実施形態では、ブロックに付された機能は、図面に付された順番と異なって実行されてもよい。例えば、連続する2つのブロックは、実際には実質的に並列的に実行されてもよく、それらの機能に依存して逆の順番で実行されることもある。また、ブロック図及び/又はフローチャートの各ブロック、並びにブロック図及び/又はフローチャートの各ブロックの組み合わせは、所定の機能又は動作を実行する専用のハードウェアベースのシステムで実現されてもよいし、専用のハードウェアとコンピュータ命令との組み合わせで実現されてもよい。
【0182】
以上、本開示の各実施例を記述したが、上記説明は例示的なものに過ぎず、網羅的なものではなく、かつ披露された各実施例に限定されるものでもない。当業者にとって、説明された各実施例の範囲および精神から逸脱することなく、様々な修正および変更が自明である。本明細書に選ばれた用語は、各実施例の原理、実際の適用または既存技術に対する改善を好適に解釈するか、または他の当業者に本文に披露された各実施例を理解させるためのものである。
【0183】
また、近年ではコンピュータハードウェア性能の向上に伴い、深層学習アルゴリズムがますます多くの分野で広く用いられるようになってきている。画像分類、音声認識、機械翻訳などの分野では、深層学習アルゴリズム(例えばニューラルネットワークアルゴリズム)は既知の最も効果の高いアルゴリズムである。しかし、どのような機器でニューラルネットワークアルゴリズムを動作させても、計算量が非常に膨大で、それに伴って高エネルギー消費、低エネルギー効率の問題は非常に深刻なものとなる。モバイル機器の場合、バッテリから電力が供給され、機器の消費電力が厳しく制限されているため、消費電力の問題が特に顕著となる。このため、移動端末で深層学習アルゴリズムを実行することはコストがかかりすぎる。
【0184】
そこで、本開示は、ネットワークモデルの計算ニーズに対応しつつ、装置の消費電力を低減してコストを低減することができるデータプロセッサ、チップ、電子機器及び処理方法を提案する。本開示は、データ処理の分野に関し、特にデータプロセッサ、チップ、電子機器及びデータ処理方法に関する。
【0185】
以下、本開示の実施例における技術的解決手段を、本開示の実施例における添付の図面を参照して、明確で完全に説明する。記載する実施例は、本開示の全ての実施例ではなく、単なる一部にすぎないことが明らかである。当業者によって本開示の実施例に基づいて創造的な労力なしに得られる全ての他の実施例は、本開示の保護範囲に属する。
【0186】
本開示の特許請求の範囲、明細書及び図面における用語「第1」、「第2」、「第3」及び「第4」などは、異なる対象を区分するためのものであり、特定の順序を説明するためのものではないことが理解されたい。本開示の明細書及び特許請求の範囲で使用される用語「含む」及び「包含する」は、記述された特徴、全体、ステップ、操作、要素及び/又は構成要素の存在を示すが、1つ以上の他の特徴、全体、ステップ、操作、要素、構成要素及び/又はそれらの集合の存在又は追加を排除するものではない。
【0187】
本開示の明細書で使用される用語は、特定の実施例を説明するためのものにすぎず、本開示を限定するものではないことも理解されたい。本開示の明細書及び特許請求の範囲で使用されるように、単数形の「1つの(a)」、「1つの(an)」及び「この(the)」は、文脈上で明記されない限り、複数形を含むことを意図している。さらに、本開示の明細書及び特許請求の範囲で使用される用語「及び/又は」は、関連して列挙された項目のうちの1つ以上の任意の組み合わせ、及び可能な組み合わせの全てを意味し、これらの組み合わせを含むことが理解されたい。
【0188】
本明細書及び特許請求の範囲で使用されるように、用語「場合に」は、文脈に応じて「…時に」、「と」、「と判定したことに応じて」、又は「を検出したことに応じて」を意味すると解釈することができる。同様に、語句「と判定される場合に」又は「[記述される条件又はイベント]が検出された場合に」は、文脈に応じて「と判定されると」、又は「と判定したことに応じて」、又は「[記述される条件又はイベント]が検出されると」、又は「[記述される条件又はイベント]を検出したことに応じて」を意味すると解釈することができる。
【0189】
図2-1は、本開示の実施例による、データプロセッサのブロック図を示す。本開示の実施例におけるデータプロセッサは、深層学習アルゴリズムに対応するネットワークモデルを演算するために用いることができる。ここで、
図2-1に示すように、本開示の実施例におけるデータプロセッサは、記憶モジュール100と、タスク割り当てモジュール200と、演算モジュール300とを備えてもよい。
【0190】
記憶モジュール100は、ネットワークモデルの演算動作を実行するための演算子と演算データとを含む、受信したネットワークモデルデータを記憶するために使用されてもよい。本開示の実施例における記憶モジュール100は、他の電子デバイスとは独立したメモリであってもよいし、他の電子デバイスに位置する内部記憶ユニットであってもよい。例えば、記憶モジュールは、制御モジュール内部の記憶ユニットであってもよいし、制御モジュールとは独立したメモリであってもよい。ネットワークモデルデータの記憶が可能であれば、本開示の実施例における記憶モジュールとしてもよい。本開示の実施例における記憶モジュールは、当該ネットワークモデルデータを記憶するアドレス空間を制御するための命令を受信し、当該命令に応じてネットワークモデルデータを当該アドレス空間内に記憶し、他のデバイスが当該アドレス空間から関連データを読み取るのを容易にする。
【0191】
また、本開示の実施例において、ネットワークモデルデータには、ネットワークモデルの演算動作を実行する演算子と、演算を実行するために必要な演算データとが含まれてもよい。ここで、演算子には複数の演算命令が含まれてもよく、各演算子は1つ以上の入力/出力データに接続されてもよい。
図2-2に示すように、本開示の実施例におけるネットワークモデルの演算子の計算モデル図であり、当該計算モデル図は本開示の実施例の計算モデル図の一例にすぎず、ネットワークモデルの演算動作における各演算子間の論理関係を対応づけて示している。他の実施例における演算動作については、計算モデル図が異なってもよい。
図2-2に示すように、演算子f1及びf2が含まれてもよく、他の実施例では、複数の演算子が含まれてもよい。各演算子から構成する計算グラフモデルは、有向非巡回グラフであってもよく、各演算子は、当該計算グラフモデルにおいて計算を実行するノードであってもよく、1つ以上の入力/出力データに接続されている。例えば、演算子f1の出力データは、別の演算子f2の入力データであってもよく、この場合、f1とf2との間にデータ依存があるか、f2がf1に依存していることを意味する。また、演算子ノードの情報(演算子の情報)は、演算子タイプ、演算子入出力データの次元情報、演算子内部データの次元情報などを含むことができる。これらの情報により、演算子の相関演算を実行することができる。各演算子は、演算動作を実行する1つ以上の演算命令を含むことができる。また、演算データは、ネットワークモデル演算を実行する初期データを含んでもよいし、演算過程で生成される中間データを含んでもよい。例えば、本開示の実施例のネットワークモデルは、ニューラルネットワーク構造及びニューラルネットワーク演算データの2つの部分を含むニューラルネットワークモデルを含むことができる。ニューラルネットワーク構造は、ニューラルネットワークのモデル構造を記述するものであり、ネットワーク内の演算子情報、演算データの情報、演算子と演算データとの接続形態の情報を含むことができる。ニューラルネットワークの演算データは、ユーザが入力したデータ(実際の、本当に計算に用いられるデータ)、演算子の内部データ(本当に計算に用いられるデータでもあり、例えば畳み込み演算子の畳み込みカーネル、全結合演算子の重みである)などを含むことができる。
【0192】
また、本開示の実施例におけるタスク割り当てモジュール200は、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当てるために用いられることができ、第1フラグが割り当てられている演算子の演算難易度は、第2フラグが割り当てられている演算子の演算難易度よりも大きい。本開示の実施例において、演算子の演算難易度に応じて、演算子に第1フラグ又は第2フラグを割り当てることができる。本開示の実施例における演算難易度は、演算子における演算命令の数、種類、演算時間などのパラメータに関連することができる。ここで、第1フラグ及び第2フラグは、2つの異なるフラグ値で区分されてもよく、特定の文字や文字の組み合わせであってもよく、本開示の実施例はこれを限定しない。また、第1フラグに対応する演算子の演算難易度は、第2フラグに対応する演算子の演算難易度よりも大きい。
【0193】
演算モジュール300は、少なくとも1つのビッグコア演算ユニットと、少なくとも1つのリトルコア演算ユニットとを含むことができる。本開示の実施例において、演算モジュール300は、1つ以上のビッグコア演算ユニットを含むビッグコアグループ301と、1つ以上のリトルコア演算ユニットを含むリトルコアグループ302とを含むことができる。演算モジュール300は、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行してもよい。
【0194】
ここで、ビッグコアグループ301におけるビッグコア演算ユニットは、演算能力が高く消費電力が高いネットワークプロセッサコアであり、リトルコアグループ302におけるリトルコア演算ユニットは、演算能力がやや弱く消費電力が低いネットワークプロセッサコアである。ビッグコアグループとリトルコアグループから本開示の実施例における演算モジュール300の演算コアを構成する。本開示の実施例において、ビッグコア演算ユニットとリトルコア演算ユニットとの相違点について、ビッグコア演算ユニットは、より多くの演算ユニット材を含み、演算能力が非常に高いが、演算消費電力、起動消費電力がいずれも比較的大きく、それに対して、リトルコア演算ユニットは、より少ない演算ユニット材を有し、演算能力が比較的弱いが、演算消費電力、起動消費電力がいずれも比較的小さいことにある。ビッグコアグループ301とリトルコアグループ302とで演算ユニットの数は異なってもよく、リトルコアグループ302の演算ユニットの数はビッグコアグループ301の演算ユニットの数より少なくてもよい。また、本開示の実施例におけるビッグコアグループ301内のビッグコア演算ユニットとリトルコアグループ302内のリトルコア演算ユニットは、同時に並列に動作してもよく、具体的には、対応するスケジューリング制御に基づいて実現されてもよい。
【0195】
本開示の実施例におけるビッグコアグループ301及びリトルコアグループ302内の演算ユニットは、H型構造、パルスアレイマシン構造及びツリー構造のいずれか一つとして構成されることができる。ビッグコアグループ301及びリトルコアグループ302における各演算ユニット構造の構成は、同じでも異なってもよく、当業者により必要に応じて設定することができ、本開示はこれを限定しない。以下、ビッグコアグループ及びリトルコアグループの演算ユニットの構造について、上記の構造として説明する。
【0196】
図2-7は、本開示の実施例による、H型構造として構成される演算ユニットのブロック図を示す。
図2-7に示すように、ビッグコアグループ301又はリトルコアグループ302における各演算ユニットがH型構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット3001、少なくとも1つの分岐演算ユニット3002及び複数の従演算ユニット3003を含むことができる。主演算ユニット3001は、各分岐演算ユニット3002に接続され、分岐演算ユニット3002は、従演算ユニット3003の少なくとも1つにそれぞれ接続されてもよく、また各従演算ユニット3003は、1つの分岐演算ユニット3002のみに接続されてもよい。
図2-7に示すように、4つの分岐演算ユニット3002を含み、各分岐演算ユニット3002には、4つの従演算ユニット3003がそれぞれ接続されており、当該分岐演算ユニット3002は、主演算ユニット3001と従演算ユニット3003との間のデータ、命令及び中間結果の伝送に用いられることができる。
【0197】
本開示の実施例において、ニューラルネットワーク演算における全結合演算を例とすると、プロセスはy=f(wx+b)であり、xは入力ニューロン行列であり、wは重み行列であり、bはバイアススカラーであり、fは活性化関数であり、具体的にはsigmoid関数、tanh、relu、softmax関数のいずれか一つであるようにしてもよい。ここで、2分木構造であり、8個の従演算ユニット3003を有することを想定すると、その実現方法として、タスク割り当てモジュール200は、例えば、入力ニューロン行列x、重み行列w及び全結合演算命令(演算子)を含むネットワークモデルデータを記憶モジュール100から取得し、各演算子にそれぞれ第1フラグ又は第2フラグを割り当て、フラグが対応して割り当てられている演算子及び演算データを演算モジュール300に伝送するようにしてもよい。
【0198】
演算モジュール300に対応するビッグコアグループ301及びリトルコアグループ302がフラグに応じて演算動作を実行する際に、前記主演算ユニット3001は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニット3002を介して演算命令及びデータブロックを対応する従演算ユニット3003に伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成されて、分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び重みなどの情報を転送するように構成される。例えば、入力ニューロン行列xを8個のサブ行列に分割し、8個のサブ行列を、分岐演算ユニット3002を介して8個の従演算ユニット3003に分配し、重み行列wを8個の従演算ユニット3003にブロードキャストするようにしてもよい。
【0199】
従演算ユニット3003は、対応する演算命令が完了すると、対応する中間結果を生成し、分岐演算ユニット3002を介して当該中間結果を主演算ユニット3001に返すことができる。即ち、各従演算ユニットは、8個のサブ行列と重み行列wとの乗算と累積加算とを並列的に実行して8個の中間結果を得、8個の中間結果を主演算ユニット3001に送ることができる。
【0200】
主演算ユニット3001は、得られた中間結果をさらに演算処理して最終的な演算結果を得ることができる。例えば、8個の中間結果をソートし、対応する演算処理を行って対応する演算結果を得、この演算結果に対してバイアスbの演算を実行した後に活性化動作を実行して最終結果yを得、最終結果yを記憶モジュール100に送信して記憶させたり、他の電子デバイスに伝送して後続の処理を行ったりすることができ、即ち、当該最終結果yを出力するか又は記憶モジュール100内に記憶することができる。
【0201】
また、
図2-8は、本開示の実施例による、パルスアレイマシン構造として構成される演算ユニットのブロック図を示す。ここで、ビッグコアグループ301又はリトルコアグループ302における各演算ユニットがパルスアレイマシン構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット3001及び複数の従演算ユニット3003を含むことができる。複数の従演算ユニット3003は、アレイ状に分布しており、m行n列(m及びnは1よりも大きい正の整数であり、Kは正の整数である)の従演算ユニットとして構成され、各従演算ユニット3003は隣接する他の従演算ユニット3003に接続され、主演算ユニット3001は前記複数の従演算ユニット3003のうちのK個の従演算ユニット3003に接続され、前記K個の従演算ユニット3003は、第1行のn個の従演算ユニット3003、第m行のn個の従演算ユニット3003及び第1列のm個の従演算ユニット3003である。なお、説明したいのは、
図2-8に示されるK個の従演算ユニット3003は、第1行のn個の従演算ユニット3003、第m行のn個の従演算ユニット3003及び第1列のm個の従演算ユニット3003のみを含み、即ち当該K個の従演算ユニット3003は、複数の従演算ユニット3003のうちの、主演算ユニット3001に直接接続される従演算ユニット3003である。当該K個の従演算ユニット3003は、前記主演算ユニット3001及び複数の従演算ユニット3003の間でのデータ及び命令の転送に用いられることができる。前記K個の従演算ユニットは、前記主演算ユニットと残りの従演算ユニットとの間のデータを変換するように構成される。
【0202】
K個の従演算ユニットを除く残りの従演算ユニットは、当該演算命令に従って、受信したデータブロックに対して演算を実行して中間結果を得、演算結果を前記K個の従演算ユニットに伝送するように構成される。
【0203】
主演算ユニット3001は、割り当てられた演算子をK個の従演算ユニット3003に伝送して演算することができ、残りの従演算ユニット3003に接続することにより、当該残りの従演算ユニット3003から中間結果を得ることができる。主演算ユニット3001は、当該複数の残りの従演算ユニット3003から送信された中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶モジュール100に送信して記憶させるために用いられることができる。
【0204】
また、
図2-9は、本開示の実施例による、ツリー構造として構成される演算ユニットのブロック図を示す。ビッグコアグループ301又はリトルコアグループ302における各演算ユニットがツリー構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット3001及び複数の従演算ユニット3003、前記主演算ユニット3001と従演算ユニットとの間に接続されるツリー型モジュール3004を含むことができる。ここで、前記ツリー型モジュール3004は、1つのルートポート1及び複数の分岐ポート2を含み、前記ツリー型モジュールのルートポートは、前記主演算ユニット3001に接続され、前記ツリー型モジュールの複数の分岐ポートは、複数の従演算ユニットのうちの1つの従演算ユニットにそれぞれ接続される。上記ツリー型モジュールは、送受信機能を有する。
図9に示すように、当該ツリー型モジュールが送信機能を有するが、他の実施例では受信機能を有してもよく、ここで限定しない。ツリー型モジュール3004は、前記主演算ユニットと前記複数の従演算ユニットとの間でデータブロック、重み及び演算命令を転送するために使用され得る。主演算ユニット3004は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割して、ツリー型モジュール3004に送信し、次いで、ツリー型モジュール3004は、対応するデータ、演算命令及び重みを対応する従演算ユニット3003に伝送し、従演算ユニット3003から中間結果を受信して主演算ユニット3001に伝送する。そして、主演算ユニット3001は、中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶モジュール100に送信して記憶させることができる。
【0205】
本開示の実施例において、当該ツリー型モジュールは、少なくとも1層の、転送機能を有する線構造であるノードを含むことができ、当該ノード自体は、計算機能を有さなくてもよい。ツリー型モジュールがゼロ層のノードを有する場合、当該ツリー型モジュールは不要である。
【0206】
本開示の実施例において、当該ツリー型モジュールは、n分木構造であってもよい。例えば、
図2-10に示すような2分木構造であってもよいが、3分木構造であってもよいことは無論である。当該nは2以上の整数であることができる。本出願の具体的な実施形態は、上記nの具体的な取り得る値を限定しない。上記層数は2であり、従演算ユニットは、最後から2番目の層のノード以外の他の層のノードに接続され、例えば、最後から1番目の層のノードに接続されるようにしてもよい。
【0207】
また、本開示の実施例における演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニットの入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。好ましくは、当該ツリー型モジュールは、n分木構造であり、例えば、
図2-10に、本開示の実施例における2分木構造として構成される演算ユニットのブロック図を示す。他の実施例では、各演算ユニットは、3分木構造、又は他のn分木構造として構成されてもよく、当該nは2以上の整数であることができる。本出願の具体的な実施形態は、上記nの具体的な取り得る値を限定しなく、上記層数は2であってもよいし、他の層数であってもよい。従演算ユニット3003は、それに隣接する階層のノード上の従演算ユニット3003に接続することができ、
図2-10における各ノードは従演算ユニット3003に対応することができる。
【0208】
好ましくは、上記演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニット3003の入力データ及び出力データ、例えば入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。
【0209】
また、本開示の実施例において、演算モジュール300は、記憶モジュール100及びタスク割り当てモジュール200に直接接続されてもよく、これにより、タスク割り当てモジュール200により割り当てられているフラグ値に基づいて、それぞれの演算ユニットにより対応する演算子における演算命令を実行することができる。他の実施例では、データプロセッサは、タスク割り当てモジュール200によって演算子に割り当てられているフラグ値に基づいて対応する演算動作を実行するように演算モジュール300を制御する制御モジュールをさらに含むことができる。
【0210】
以上のような構成に基づき、本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行するようにすることができ、これによりビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【0211】
さらに、本開示の実施例において、記憶モジュール100に記憶されているネットワークモデルデータは、ドライバプログラムモジュールにより処理されたデータ情報であってもよい。ネットワークモデルに関する演算を実行する必要がある場合、ユーザは、上述したネットワークモデルデータを決定するためのネットワークモデルの記述情報を提出することができる。ドライバプログラムモジュールは、ネットワークモデル記述情報に基づいて、ネットワークモデルの演算動作を実行する演算データのデータ記述子を確立し、及びネットワークモデルにおける演算子の演算子記述子を確立し、演算子記述子とデータ記述子との間の接続関係を確立してネットワークモデルを記述した後、記憶割り当てモジュールにより当該データ記述子及び演算子記述子に記憶モジュール100上の記憶空間を割り当てた記憶空間のアドレスを得、記憶モジュール上の割り当てられている空間にデータを伝送する。当該演算子記述子及びデータ記述子により、演算データ及び演算子を決定することができる。
【0212】
以下、本開示の実施例におけるタスク割り当てモジュールのフラグ割り当ての方式について例を挙げて説明する。ここで、タスク割り当てモジュール200は、ユーザによって提出されたネットワークモデルデータにおける演算子をビッグコアグループ301及びリトルコアグループ302の一方に割り当てるために使用され得る。なお、タスク割り当てモジュール200は、複数のネットワークモデルの演算子に同時に第1フラグ又は第2フラグを割り当てることができ、それに対応して、演算モジュール300は、複数のネットワークモデルの演算子を同時に実行することができる。ここで、各演算子は、1つ以上の演算命令を生成でき、各演算命令は、この演算命令をどの演算コア(ビッグコア又はリトルコア)上で実行したいかを示す1つのフラグ(第1フラグ又は第2フラグ)が割り当てられる。タスク割り当てモジュールによって割り当てられる最小単位は、演算命令ではなく演算子であってもよく、即ち同一の演算子によって生成された全ての命令が同一のフラグに対応する。以下では、1つのノード(演算子)がビッグ/リトルコア上で実行されているということは、その演算子によって生成された全ての命令が対応するコア(ビッグコア又はリトルコア)上で実行されていることを意味する。
【0213】
本開示の実施例において、タスク割り当てモジュール200は、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第1フラグ又は第2フラグを割り当てることができる。
【0214】
本開示の実施例において、タスク割り当てモジュール200は、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算が実行される場合の演算時間を取得でき、例えば、ビッグコア演算ユニットでの演算時間が第1演算時間であり、リトルコア演算ユニットでの演算時間が第2演算時間である。タスク割り当てモジュール200は、第1演算時間が第1閾値時間よりも大きい場合、及び/又は第2演算時間が第2閾値時間よりも大きい場合、当該演算子に第1フラグを割り当て、そうでない場合、第2フラグを割り当てることができる。ここで、第1閾値時間は、第2閾値時間よりも大きく、第1閾値時間及び第2閾値時間のそれぞれは、要求に応じて設定される時間閾値であってもよく、本開示の実施例は、当該時間閾値を限定しない。
【0215】
本開示の他の実施例において、タスク割り当てモジュール200は、各演算子間の論理関係に基づいて有向グラフをさらに作成することができ、当該有向グラフのノードは各前記演算子に対応する。また、ビッグコア演算ユニットが各演算子を実行する場合の第1演算時間とリトルコア演算ユニットが各演算子を実行する場合の第2演算時間とをそれぞれ取得し、前記第1演算時間を各ノードの遅延時間とし、クリティカルパス法を用いて、各ノードに対応する演算子に第1フラグが割り当てられている第1クリティカルパスを決定するように構成される。
【0216】
本開示の実施例の予め設定されたアルゴリズムは、クリティカルパス法であってもよく、即ちクリティカルパス法によって演算子のフラグを決定してもよい。ここで、タスク割り当てモジュール200は、受信したネットワークモデルデータに基づいてネットワークモデルを、各ノードがそれぞれ演算子を表す有向グラフ(例えば
図2-2に示すように)に抽象化することができる。各ノードvに2つの属性t1(v)及びt2(v)があり、t1(v)は演算命令がビッグコアグループ301上で演算される場合の第1演算時間を表し、t2(v)は演算命令がリトルコアグループ302上で演算される場合の第2演算時間を表す。リトルコアグループに対するビッグコアグループの演算速度の比がα(α>1)であるとすると、t1(v)=t2(v)/αである。まず、各演算子に第2フラグを割り当て、各ノードvの遅延をt1(v)(即ちビッグコアグループ上での演算時間)とし、クリティカルパス法で第1クリティカルパスL1を見つけるようにしてもよい。このパス上の全てのノードは、ビッグコア上で実行されるようにフラグされ、即ち当該第1クリティカルパス上の全てのノードに対応する演算子に第1フラグを割り当て、及びクリティカルパス以外の全てのノードに対応する演算子に第2フラグを割り当てる。即ち、第1クリティカルパスL1上のノードに対応する演算子に第1フラグを割り当て、残りの演算子に第2フラグを割り当てることができる。ここで、当業者は、従来技術の手段に基づいてクリティカルパス法の具体的なプロセスを知ることができるので、ここで詳細に説明しない。
【0217】
本開示の他の実施例において、ネットワークモデルデータに当該ネットワークモデル演算の時効性、即ちデータ時効性も含むことができる。データ時効性とは、ユーザがこのネットワークモデルの計算を早急に完了させたいか否かということである。時効性はブール型で簡単に表すことができ、この値が真(例えば1)であれば、時効性が強い(早急に完了させる必要がある)ことを示し、この値が偽(例えば0)であれば、時効性が弱い(多少遅くてもよい)ことを示す。したがって、異なるネットワークモデルデータに対して、その演算子のデータ時効性を異ならせることができ、当該時効性に基づいてネットワークモデル内の演算子の演算の緊急度を決定することができる。
【0218】
本開示の実施例において、ユーザが時効性を要求する場合、タスク割り当てモジュール200は、L1上の各ノードの遅延をさらに0に設定し、クリティカルパス法を用いて第2クリティカルパスL2を見つける。L2の総遅延をt(L2)とすると、t(L2)≦t(L1)/αであれば、アルゴリズムを終了する。t(L2)≦t(L1)/αという条件が満たさなければ、再び当該ステップを繰り返し、第2クリティカルパスL2上のノードに対応する演算子に第1フラグを割り当て、L2上の各ノードの遅延を0に設定し、次にクリティカルパス法を用いて、第3クリティカルパスL3を見つける。t(L2)≦t(L1)/αになるまで、当該ステップを繰り返す。新しいクリティカルパスを絶えず見つけ、その上のノード遅延を0に設定することによって、全てのノードにフラグを割り当てることができる。あるクリティカルパスに出現するノードは第1フラグが割り当てられ、全てのクリティカルパスに出現しないノードは第2フラグが割り当てられる。この反復過程の擬似コードを以下に示す。クリティカルパスの遅延の制限t(L2)≦t(L1)/αにより、ビッグコアグループ上で実行される演算子がリトルコアグループ上で実行される演算子を待たないことが保証され、ネットワークモデル全体に動作を最も高速に完了させることができる。
【0219】
上記実施例によれば、第1フラグ又は第2フラグの割り当てプロセスを完了することができ、演算モジュールはそれに応じて演算動作を実行することができる。
【数1】
【0220】
図2-3は、本開示の実施例による、データプロセッサのブロック図を示す。当該データプロセッサは、記憶割り当てモジュール400をさらに含むことができる。記憶割り当てモジュール400は、記憶モジュール100内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュール100の空き記憶空間が不足している場合、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択する。
【0221】
記憶割り当てモジュール400は、ユーザによって提出されたネットワークモデルデータを記憶するための記憶空間を記憶モジュール100内に割り当てるために使用される。記憶割り当てモジュール400は、記憶モジュール100内の空きメモリブロックなどの空き記憶空間を取得することができ、使用されているメモリブロックを確認することもできる。記憶割り当てモジュール400は、全てのユーザによって共有され、即ち、複数のユーザによって提出されたネットワークモデルデータに、対応する記憶空間を割り当てるために使用され得る。記憶割り当てモジュール400によって使用されるアルゴリズムは、buddyアルゴリズム又はslabアルゴリズムを含むことができるが、本開示の実施例を限定するものではない。
【0222】
本開示の実施例において、複数のユーザが同時にネットワークモデルを実行する場合、記憶モジュール100の空間が不足している可能性があり、即ち空き記憶空間が不足している可能性がある。この場合、記憶割り当てモジュール400は、空間不足の提示情報をフィードバックし、ユーザからの選択情報を受信することができる。当該選択情報は、演算終了情報又は演算待ち情報を含むことができ、記憶割り当てモジュール400は、演算終了情報に基づいてネットワークモデルデータの解放を選択して演算を終了するか、又は、演算待ち情報に基づいて前記ネットワークモデルデータをキャッシュし、前記記憶モジュールの記憶空間が十分になると、記憶モジュールにより当該ネットワークモデルデータを記憶する。つまり、本開示の実施例は、記憶空間が不足している場合、今回の計算を終了するか、キャッシュ上の空き空間が十分になるのを待ってから演算するかをユーザにより決定することができる。ユーザにより待ちを決定する場合、現在実行中のある計算タスクが終了し、その計算タスクの出力データがドライバプログラムによってメモリにコピーされ、そのタスクに関連する入出力空間が解放された後、キャッシュされたネットワークモデルデータが当該解放された記憶空間内に記憶され、これにより、当該ユーザの計算タスクが実行される。メモリにコピーされたデータは、将来使用されるときに、バス経由で記憶モジュールに再入力する必要がある。
【0223】
さらに、本開示の実施例におけるデータプロセッサは、記憶割り当てモジュール400及び記憶モジュール300にそれぞれ接続可能なモジュールであって、前記ネットワークモデルデータを記憶モジュール100に伝送して記憶させ、及び前記演算モジュールの演算結果をメモリに伝送したり、メモリに記憶されているデータを記憶モジュール100などに記憶させたりするために用いることができるダイレクトメモリアクセスモジュール500を含むことができる。即ち本開示の実施例におけるメモリアクセスモジュール500は、記憶割り当てモジュール400と記憶モジュール300との間でデータ接続を確立するとともに、記憶モジュール300とメモリとの間でデータ接続を確立し、対応するデータを伝送するために用いられてもよい。
【0224】
図2-4は、本開示の実施例による、データプロセッサのブロック図を示す。当該データプロセッサは、
図2-3に示される実施例に対して、キャッシュモジュール600及びスケジューリングモジュール700をさらに含むことができる。ここで、キャッシュモジュール600は、演算モジュール300によって演算処理される演算子及び演算データをキャッシュするために用いられることができる。上記実施例のように、タスク割り当てモジュール200は、演算子に対応フラグを割り当て、当該フラグ割り当て済みの演算子はキャッシュモジュール600にキャッシュされる。演算モジュール300が対応する演算命令を実行できる場合、対応する演算子の演算命令がキャッシュモジュール600から読み取られて演算動作を実行し、演算子の実行が完了すると、キャッシュモジュールは当該演算子のキャッシュデータを解放することができる。
【0225】
本開示の実施例において、キャッシュモジュール600が記憶する演算子の記憶構造は、表1に示すが、表中の各列の順序は任意に調整可能である。
【0226】
【表1】
ここで、ネットワーク演算命令は、対応するネットワーク演算を完了するための専用の命令の全てを含み、演算子を構成するために使用される。ネットワーク演算命令には、制御命令、データ伝送命令、演算命令及び論理命令が含まれるが、これらに限定されない。制御命令はネットワーク実行プロセスを制御するものであり、データ伝送命令は異なる記憶媒体間のデータ伝送を完了するものである。データ形式は、行列、ベクトル及びスカラーを含むが、これらに限定されない。演算命令はネットワークの算術演算を完了するものであって、行列演算命令、ベクトル演算命令、スカラー演算命令、畳み込みニューラルネットワーク演算命令、全結合ニューラルネットワーク演算命令、プール化ニューラルネットワーク演算命令、RBMニューラルネットワーク演算命令、LRNニューラルネットワーク演算命令、LCNニューラルネットワーク演算命令、LSTMニューラルネットワーク演算命令、RNNニューラルネットワーク演算命令、RELUニューラルネットワーク演算命令、PRELUニューラルネットワーク演算命令、SIGMOIDニューラルネットワーク演算命令、TANHニューラルネットワーク演算命令及びMAXOUTニューラルネットワーク演算命令を含むが、これらに限定されない。論理命令は、ニューラルネットワークの論理演算を完了するものであって、ベクトル論理演算命令及びスカラー論理演算命令を含むが、これらに限定されない。
【0227】
RBMニューラルネットワーク演算命令は、Restricted Boltzmann Machine(RBM)ニューラルネットワーク演算を実現するために用いられる。LRNニューラルネットワーク演算命令は、Local Response Normalization(LRN)ニューラルネットワーク演算を実現するために用いられる。LSTMニューラルネットワーク演算命令は、Long Short-Term Memory(LSTM)ニューラルネットワーク演算を実現するために用いられる。RNNニューラルネットワーク演算命令は、Recurrent Neural NetworKs(RNN)ニューラルネットワーク演算を実現するために用いられる。RELUニューラルネットワーク演算命令は、Rectified linear unit(RELU)ニューラルネットワーク演算を実現するために用いられる。PRELUニューラルネットワーク演算命令は、Parametric Rectified Linear Unit(PRELU)ニューラルネットワーク演算を実現するために用いられる。SIGMOIDニューラルネットワーク演算命令は、S型成長曲線(SIGMOID)ニューラルネットワーク演算を実現するために用いられる。y=sigmoid(x)=1/1+e-xであり、ここでx、yは実数である。TANHニューラルネットワーク演算命令は、双曲線正接関数(TANH)ニューラルネットワーク演算を実現するために用いられる。MAXOUTニューラルネットワーク演算命令は、maxout活性化関数を用いてノードを出力する(MAXOUT)ニューラルネットワーク演算を実現するために用いられ、Cambricon命令セットを含むことができる。Cambricon命令セットの命令は、オペコードとオペランドから構成される。命令セットは4種類の命令を含み、それぞれ制御命令(control instructions)、データ伝送命令(data transfer instructions)、演算命令(computational instructions)、論理命令(logical instructions)である。命令セットの各命令の長さは固定長である。例えば、命令セットの各命令の長さは64bitであってもよい。制御命令は、実行プロセスを制御するために用いられる。制御命令には、ジャンプ(jump)命令及び条件分岐(conditional branch)命令が含まれる。データ伝送命令は、異なる記憶媒体間のデータ伝送を完了するために用いられる。データ伝送命令には、ロード(load)命令、ストア(store)命令、ムーブ(move)命令が含まれる。load命令は、メインメモリからキャッシュにデータをロードするために用いられ、store命令は、キャッシュからメインメモリにデータを記憶するために用いられ、move命令は、キャッシュとキャッシュとの間、又はキャッシュとレジスタとの間、又はレジスタとレジスタとの間でデータを搬送するために用いられる。データ伝送命令は、行列、ベクトル及びスカラーを含む3つの異なるデータ組織方式をサポートしている。演算命令は、ネットワーク算術演算を完了するために用いられる。演算命令には、行列演算命令、ベクトル演算命令及びスカラー演算命令が含まれる。行列演算命令は、行列乗算ベクトル(matrix multiply vector)、ベクトル乗算行列(vector multiply matrix)、行列乗算スカラー(matrix multiply scalar)、外積(outer product)、行列加算行列(matrix add matrix)、行列減算行列(matrix subtract matrix)を含むネットワークにおける行列演算を完了する。ベクトル演算命令は、ベクトル基本演算(vector elementary arithmetics)、ベクトル超越関数演算(vector transcendental functions)、内積(dot product)、ベクトルランダム生成(random vector generator)、ベクトルの最大/最小値(maximum/minimum of a vector)を含むネットワークにおけるベクトル演算を完了する。ベクトル基本演算には、ベクトル加算、減算、乗算、除算(add、subtract、multiply、divide)が含まれ、ベクトル超越関数とは、多項式を係数とする多項式方程式を何も満たさない関数であり、指数関数、対数関数、三角関数、逆三角関数が含まれるが、これらに限定されない。スカラー演算命令は、スカラー基本演算(scalar elementary arithmetics)及びスカラー超越関数演算(scalar transcendental functions)を含むネットワークにおけるスカラー演算を完了する。スカラー基本演算には、スカラー加算、減算、乗算、除算(add、subtract、multiply、divide)が含まれ、スカラー超越関数とは、多項式を係数とする多項式方程式を何も満たさない関数であり、指数関数、対数関数、三角関数、逆三角関数が含まれるが、これらに限定されない。論理命令は、ネットワークの論理演算に用いられる。論理演算には、ベクトル論理演算命令及びスカラー論理演算命令が含まれる。ベクトル論理演算命令は、ベクトル比較(vector compare)、ベクトル論理演算(vector logical operations)及びベクトルが合併よりも大きいこと(vector greater than merge)を含む。ベクトル比較には、大きいこと、小さいこと、等しいこと、それ以上、それ以下、及び等しくないことが含まれる。ベクトル論理演算には、論理積、論理和、論理否定が含まれる。スカラー論理演算には、スカラー比較(scalar compare)、スカラー論理演算(scalar logical operations)が含まれる。スカラー比較には、大きいこと、小さいこと、等しいこと、それ以上、それ以下、及び等しくないことが含まれる。スカラー論理演算には、論理積、論理和、論理否定が含まれる。
【0228】
さらに、本開示の実施例におけるスケジューリングモジュール700は、演算モジュール300の演算スケジューリングを実行することができる。スケジューリングモジュール700は、演算モジュール300における各演算ユニットの演算状態に基づいて、キャッシュモジュール600から演算子を選択して、対応する演算ユニットで演算動作を実行するようにスケジューリングすることができる。ここで、スケジューリングモジュール700は、演算モジュール300におけるビッグコア演算ユニット及びリトルコア演算ユニットの演算状態をリアルタイムで監視することができ、当該演算状態は、稼動状態及びアイドル状態を含むことができる。スケジューリングモジュール700は、キャッシュモジュール600における各演算子の優先度情報を確認し、現在キャッシュされている優先度が最も高い演算子のフラグを確認し、当該フラグに基づいて、当該優先度が最も高い演算子を実行するように演算モジュールを制御する。
【0229】
本開示の実施例におけるネットワークモデルデータには、ユーザ優先度及び/又はデータ時効性を含むことができる優先度情報がさらに含まれてもよい。ユーザがネットワークモデルデータを提出するとき、当該ユーザの情報もネットワークモデルデータに含まれる。各ユーザは、システム管理者が各ユーザにそれぞれ設定したユーザ優先度情報を有し、データプロセッサにネットワークモデルデータを提出する時にデータ時効性を指定する。当該データ時効性とは、ユーザがこのネットワークモデルの計算を早急に完了たいか否かということである。データ時効性はブール型で簡単に表すことができ、この値が真であれば、時効性が強い(早急に完了させる必要がある)ことを示し、この値が偽であれば、時効性が弱い(多少遅くてもよい)ことを示す。これに基づき、スケジューリングモジュール700は、ユーザ優先度が最も高い演算子を決定し、さらにユーザ優先度が最も高い演算子の中からデータ時効性が最も強い演算子を決定し、当該時効性が最も強い演算子に対応するフラグに応じて、当該演算子に対応する演算命令を実行するように演算モジュールを制御する。
【0230】
スケジューリングモジュール700はさらに、演算モジュール300に空いている演算ユニットが存在するか否かを確認できる。例えば、当該時効性が最も強い演算子に対応するフラグが第1フラグである場合、スケジューリングモジュール700は、ビッグコアグループ301にアイドル状態のビッグコア演算ユニットが存在するか否かを確認し、存在する場合、当該アイドル状態のビッグコア演算ユニットにより上述した時効性が最も強い演算子を実行し、存在しない場合、稼働状態のビッグコア演算ユニットがアイドル状態に切り替わると、当該ビッグコア演算ユニットにより当該時効性が最も強い演算子を実行するか、又はリトルコアグループ302におけるアイドル状態のリトルコア演算ユニットにより当該時効性が最も強い演算子を実行することができる。複数のユーザの間に競合関係が存在し得るため、データ時効性のリアルタイム性が満たされない可能性がある。例えば、演算子が本来ビッグコアグループ上で演算するようにフラグされているが、予め設定された時間範囲内に利用可能なビッグコア演算ユニットがない場合(全てのビッグコア演算ユニットが稼働状態にある場合)、スケジューリングモジュール700は、当該演算子をリトルコア演算ユニットで演算するようにスケジューリングすることができる。当該予め設定された時間範囲は、必要に応じて自由に設定でき、例えば1分間であってもよく、又は30秒間であってもよく、本開示はこれを限定しない。又は他の実施例では、演算子が本来リトルコアグループ上で演算するようにフラグされているが、予め設定された時間範囲内に利用可能なリトルコア演算ユニットがない場合(全てのビッグコア演算ユニットが稼働状態にある場合)、スケジューリングモジュール700は、当該演算子をビッグコア演算ユニットで演算するようにスケジューリングすることができる。本開示の実施例に基づいて、スケジューリングモジュール700が命令スケジューリングを行う際に、ユーザのユーザ優先度が高いほど、そのユーザから指定する時効性が満たされない可能性が低い。
【0231】
以上のように、本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行するようにすることができ、これによりビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【0232】
本開示で言及された上記各方法の実施例は、原理的な論理に反しない限り、互いに組み合わて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【0233】
また、本開示は、上記実施例におけるデータプロセッサを含むデータ処理チップ、電子機器、及びデータプロセッサに適用されるデータ処理方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【0234】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップをさらに提供する。
【0235】
いくつかの実施例において、本開示は、上記チップを含むチップパッケージ構造を提供する。
【0236】
いくつかの実施例において、本開示は、上記チップパッケージ構造を含む基板カードを提供する。
【0237】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサ又はデータ処理チップ、又は上記基板カードを含む電子機器をさらに提供する。
【0238】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び/又は医療機器を含む。
【0239】
前記乗り物は飛行機、船舶及び/又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、B超音波装置及び/又は心電計を含む。
【0240】
また、本開示の実施例は、上記実施例に記載のデータプロセッサに適用されるデータ処理方法をさらに提供し、
図2-5は、本開示の実施例による、データ処理方法のフローチャートを示し、ネットワークモデルの演算動作を実行するための演算子と演算データとを含むネットワークモデルデータを受信して記憶するS100と、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当て、第1フラグが割り当てられている演算子の演算難易度は、第2フラグが割り当てられている演算子の演算難易度よりも大きいS200と、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行するS300とを含むことができる。
【0241】
本開示の実施例において、予め設定されたアルゴリズムを用いて各前記演算子に第1フラグ又は第2フラグを割り当てることは、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第1フラグ又は第2フラグを割り当てることを含む。
【0242】
本開示の実施例において、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算される場合の演算時間に基づいて、各演算子にフラグを割り当てることは、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成することと、ビッグコア演算ユニットが各演算子を実行する第1演算時間と、リトルコア演算ユニットが各演算子を実行する第2演算時間をそれぞれ取得することと、前記第1演算時間を各ノードの遅延時間とし、第1クリティカルパス法を用いて、各ノードに対応する演算子に第1フラグが割り当てられている第1クリティカルパスを決定することとを含む。
【0243】
本開示の実施例において、ネットワークモデルデータを受信して記憶することは、記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択することを含む。
【0244】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び/又はデータ時効性を含む優先度情報が含まれ、前記方法は、前記各演算子及びそれに対応する第1フラグ又は第2フラグをキャッシュすることと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記ビッグコア演算ユニット又はリトルコア演算ユニットを制御することとをさらに含む。
【0245】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも1つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも1つの従演算ユニットが接続され、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割することと、分岐演算ユニットにより、演算命令及びデータブロックを対応する従演算ユニットに伝送することと、従演算ユニットにより、受信した演算命令及びデータブロックを演算して中間結果を得、分岐演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0246】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、m行n列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第1行のn個の従演算ユニットと、第m行のn個の従演算ユニットと、第1列のm個の従演算ユニットとを含むK個の従演算ユニットに接続され、ここで、m及びnは1よりも大きい正の整数で、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも1つのデータブロック及び複数の演算命令のうちの少なくとも1つの演算命令を前記K個の従演算ユニットに送信することと、K個の従演算ユニット以外の残りの従演算ユニットにより、K個の従演算ユニットから受信した演算命令及びデータブロックを演算して中間結果を得、K個の従演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0247】
本開示の実施例において、複数のビッグコア演算ユニット及び/又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールとを含むように構成され、前記ツリー型モジュールは、1つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの1つの従演算ユニットにそれぞれ接続され、ビッグコア演算ユニットにより前記演算データに基づいて第1フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第2フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記データブロック及び演算命令をツリー型モジュールのルートポートに伝送することと、ツリー型モジュールの各分岐ポートに接続される従演算ユニットにより、受信した演算命令及びデータブロックに基づいて演算を実行して中間結果を得、ツリー型モジュールを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【0248】
図2-6は、本開示の一例示的な実施例による、電子機器のブロック図を示す。電子機器は、端末、サーバ又はその他の形態の機器として提供されることができる。電子機器は、分類タスク増分処理装置800を含むことができる。例如、当該装置800は、携帯電話、コンピュータ、デジタル放送端末、メッセージ送受信機器、ゲームコンソール、タブレット型機器、医療機器、フィットネス機器、パーソナル・デジタル・アシスタント等の端末であってもよい。
【0249】
図2-6に示すように、装置800は、処理コンポーネント802、メモリ804、電源コンポーネント806、マルチメディアコンポーネント808、オーディオコンポーネント810、入力/出力(I/O)のインタフェース812、センサコンポーネント814、および通信コンポーネント816のうちの一つ以上を含んでもよい。
【0250】
処理コンポーネント802は通常、機器800の全体的な動作、例えば表示、電話の呼び出し、データ通信、カメラ動作および記録動作に関連する動作を制御する。処理コンポーネント802は、上記方法のステップの全てまたは一部を実行するために、命令を実行する一つ以上のプロセッサ820を含んでもよい。また、処理コンポーネント802は、他のコンポーネントとのインタラクションのための一つ以上のモジュールを含んでもよい。例えば、処理コンポーネント802は、マルチメディアコンポーネント808とのインタラクションのために、マルチメディアモジュールを含んでもよい。
【0251】
メモリ804は機器800での動作をサポートするための様々なタイプのデータを記憶するように構成される。これらのデータは、例として、機器800において操作するあらゆるアプリケーションプログラムまたは方法の命令、連絡先データ、電話帳データ、メッセージ、ピクチャー、ビデオなどを含む。メモリ804は、例えば静的ランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能なプログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなどの様々なタイプの揮発性または不揮発性記憶装置またはそれらの組み合わせによって実現できる。
【0252】
電源コンポーネント806は機器800の各コンポーネントに電力を供給する。電源コンポーネント806は電源管理システム、一つ以上の電源、および機器800のための電力生成、管理および配分に関連する他のコンポーネントを含んでもよい。
【0253】
マルチメディアコンポーネント808は前記機器800とユーザとの間で出力インタフェースを提供するスクリーンを含む。いくつかの実施例では、スクリーンは液晶ディスプレイ(LCD)およびタッチパネル(TP)を含んでもよい。スクリーンがタッチパネルを含む場合、ユーザからの入力信号を受信するタッチスクリーンとして実現してもよい。タッチパネルは、タッチ、スライドおよびタッチパネルでのジェスチャーを検知するように、一つ以上のタッチセンサを含む。前記タッチセンサはタッチまたはスライド動きの境界を検知するのみならず、前記タッチまたはスライド操作に関連する持続時間および圧力を検出するようにしてもよい。いくつかの実施例では、マルチメディアコンポーネント808は前面カメラおよび/または背面カメラを含む。機器800が動作モード、例えば撮影モードまたは撮像モードになる場合、前面カメラおよび/または背面カメラは外部のマルチメディアデータを受信するようにしてもよい。各前面カメラおよび背面カメラは、固定された光学レンズ系、または焦点距離および光学ズーム能力を有するものであってもよい。
【0254】
オーディオコンポーネント810はオーディオ信号を出力および/または入力するように構成される。例えば、オーディオコンポーネント810は、一つのマイク(MIC)を含み、マイク(MIC)は、機器800が動作モード、例えば呼び出しモード、記録モードおよび音声認識モードになる場合、外部のオーディオ信号を受信するように構成される。受信されたオーディオ信号はさらにメモリ804に記憶されるか、または通信コンポーネント816を介して送信されてもよい。いくつかの実施例では、オーディオコンポーネント810はさらに、オーディオ信号を出力するためのスピーカーを含む。
【0255】
I/Oインタフェース812は処理コンポーネント802と周辺インタフェースモジュールとの間でインタフェースを提供し、上記周辺インタフェースモジュールはキーボード、クリックホイール、ボタンなどであってもよい。これらのボタンはホームボタン、音量ボタン、スタートボタンおよびロックボタンを含んでもよいが、これらに限定されない。
【0256】
センサコンポーネント814は機器800の各方面の状態評価のために一つ以上のセンサを含む。例えば、センサコンポーネント814は機器800のオン/オフ状態、例えば機器800の表示装置およびキーパッドのようなコンポーネントの相対的位置決めを検出でき、センサコンポーネント814はさらに、機器800または機器800のあるコンポーネントの位置の変化、ユーザと機器800との接触の有無、機器800の方位または加減速および機器800の温度変化を検出できる。センサコンポーネント814は、いかなる物理的接触もない場合に近傍の物体の存在を検出するように構成される近接センサを含んでもよい。センサコンポーネント814はさらに、CMOSまたはCCDイメージセンサのような、イメージングアプリケーションにおいて使用するための光センサを含んでもよい。いくつかの実施例では、該センサコンポーネント814はさらに、加速度センサ、ジャイロセンサ、磁気センサ、圧力センサまたは温度センサを含んでもよい。
【0257】
通信コンポーネント816は機器800と他の機器との有線または無線通信を実現するように構成される。機器800は通信規格に基づく無線ネットワーク、例えばWiFi、2Gまたは3G、またはそれらの組み合わせにアクセスできる。一例示的実施例では、通信コンポーネント816は放送チャネルを介して外部の放送管理システムからの放送信号または放送関連情報を受信する。一例示的実施例では、前記通信コンポーネント816はさらに、近距離通信を促進させるために、近距離無線通信(NFC)モジュールを含む。例えば、NFCモジュールは、無線周波数識別(RFID)技術、赤外線データ協会(IrDA)技術、超広帯域(UWB)技術、ブルートゥース(登録商標)(BT)技術および他の技術によって実現できる。
【0258】
例示的な実施例では、機器800は一つ以上の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタルシグナルプロセッサ(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサまたは他の電子要素によって実現され、上記方法を実行するために用いられることができる。
【0259】
例示的な実施例において、コンピュータプログラム命令が記憶されている不揮発性コンピュータ読み取り可能な記憶媒体も提供される。前記コンピュータプログラム命令がプロセッサによって実行されと、上記実施例に記載の分類タスク増分処理方法を実現させる。例えば、コンピュータプログラム命令を含むメモリ804が提供され、上述のコンピュータプログラム命令は、機器800のプロセッサ820によって実行されと、上述の方法を実行させることができる。
【0260】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【0261】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【0262】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【0263】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、1つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【0264】
また、本出願の各実施例における各機能ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、2つ以上のユニットが1つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【0265】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は1つのメモリに記憶され、1つのコンピュータ機器(パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい)に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【0266】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ(英語:Read-Only Memory、略称:ROM)、ランダムアクセスメモリ(英語:Random Access Memory、略称:RAM)、磁気ディスク又は光ディスクなどがある。
【0267】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。
【0268】
また、従来技術では、深層学習に関するネットワークモデルは、通常、大量の演算が存在する。例えばニューラルネットワーク計算に、いくつかの計算の並列処理の必要があり、例えば順方向演算、逆方向演算、重み更新などのプロセスに多くの並列演算の必要がある。従来の並列計算システムでは、処理ユニットは、アクセスオーバーヘッドが大きすぎる記憶ユニットからデータを読み書きする必要があり、大量の並列演算が存在するため、帯域幅に対する需要が非常に高くなり、消費電力オーバヘッドが巨大となってしまう。
【0269】
本開示の実施例は、コストを低減でき且つ帯域幅の需要を低減できる技術的解決手段を提供し、演算装置、データ処理チップ、電子機器及び演算方法を提供する。本開示は、データ処理技術の分野に関し、特に、演算装置、データ処理チップ、電子機器及び演算方法に関する。
【0270】
以下に、図面を参照しながら本開示の様々な例示的な実施例、特徴および態様を詳細に説明する。図面における同じ符号は同じまたは類似する機能の要素を示す。図面において実施例の様々な方面を示したが、特に断らない限り、比例に従って図面を描く必要がない。
【0271】
ここでの用語「例示的」とは、「例、実施例として用いられることまたは説明的なもの」を意味する。ここで「例示的」に説明されるいかなる実施例は他の実施例より好ましいまたは優れるものであると理解すべきではない。
【0272】
また、本開示をより効果的に説明するために、以下の具体的な実施形態において様々な具体的な詳細を示す。当業者であれば、本開示は何らかの具体的な詳細がなくても同様に実施できると理解すべきである。いくつかの実施例では、本開示の趣旨を強調するために、当業者が熟知している方法、手段、要素および回路について詳細な説明を行わない。
【0273】
本開示の実施例は、深層学習ネットワークモデルの相関演算の計算に用いられることができ、コストを低減できるとともに、アクセスデータの帯域幅の要求を低減できる演算装置を提供する。
【0274】
図3-1は、本開示の実施例による、演算装置のブロック図を示す。当該演算装置は、複数の演算モジュール100を含むことができ、当該複数の演算モジュール100は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を完了でき、即ち本開示の実施例における演算モジュール100は、ネットワークモデルの演算を完了するための異なる演算サブコマンドを並列に実行できる。
図3-1は、4つの演算モジュールを含む実施例を示しており、各演算モジュール同士は相互に接続されてもよいし、一部の演算モジュール同士は相互に接続されてもよく、本開示はこれを限定しない。
【0275】
本開示の実施例におけるネットワークモデルは、ニューラルネットワークモデルを含んでいてもよいし、機械学習のための他のネットワークモデルを含んでいてもよい。当該ネットワークモデルは、機械学習や上述したニューラルネットワーク学習のために用いられてもよく、演算装置は、当該ネットワークモデルの演算を実行するために用いられてもよい。演算装置は、ネットワークモデルに関する演算コマンドを受信し、且つ当該演算コマンドに基づいて複数の演算サブコマンドを対応して生成し、当該複数の演算サブコマンドがそれぞれ複数の演算モジュール100に割り当てられ、即ち各演算モジュール100が1つ以上の演算サブコマンドを対応して実行することにより、ネットワークモデルの関連演算を対応して完了できる。ここで、演算コマンドには、演算装置により実行する演算動作が含まれる。
【0276】
ネットワークモデルが人工ニューラルネットワークモデルを含む場合、前記演算コマンドは、演算情報、入力ニューロンデータ、重みデータ、及び出力ニューロンデータを含むことができる。上記演算情報は、順方向演算命令又は逆方向トレーニング命令、又は畳み込み演算命令などの他のニューラルネットワーク演算命令などを含むが、これらに限定されず、本出願の具体的な実施形態は上記計算命令の具体的な表現形態を限定しない。
【0277】
以上説明したように、本開示の実施例における演算装置は、受信した演算コマンドに基づいて複数の演算サブコマンドを生成し、各演算モジュール100に対応する演算サブコマンドを割り当てて対応する演算動作を実行することができる。ここで、各演算モジュール100は、少なくとも1つの演算ユニット101と、各演算ユニット101に接続される記憶ユニット102とを含む。各演算モジュールにおける演算ユニット101の数や種類は、同一であっても異なってもよく、異なる演算ニーズに応じて自由に設定することができる。演算ユニット101は、1つ以上の乗算器、1つ以上の加算器、加算器からなる加算ツリー、関数活性化ユニット、ベクトル処理ユニットなどの少なくとも1つ以上を含んでもよい。他の実施例では、他の演算デバイスを含んでもよい。乗算器は、入力データ1(in1)と入力データ2(in2)を乗算して乗算後の出力(out)を得ることができ、そのプロセスは、out=in1*in2である。加算器は、入力データin1を加算器で加算して出力データ(out)を得ることができる。加算ツリーは、入力データin1を加算ツリーによって段階的に加算して出力データ(out)を得ることができ、ここでin1は長さNのベクトルであり、Nは1よりも大きく、演算プロセスは、out=in1[1]+in1[2]+...+in1[N]であり、及び/又は入力データ(in1)を加算ツリーによって累積加算した後に入力データ(in2)と加算して出力データ(out)を得ることができ、そのプロセスは、out=in1[1]+in1[2]+...+in1[N]+in2であり、又は入力データ(in1)と入力データ(in2)を加算して出力データ(out)を得ることができ、そのプロセスは、out=in1+in2である。関数活性化ユニットは入力データ(in)を活性化関数(active)演算によって活性化出力データ(out)を得ることができ、そのプロセスは:out=active(in)であり、活性化関数activeはsigmoid、tanh、relu又はsoftmaxなどを含むことができるが、他の活性化関数であってもよい。関数活性化ユニットは、活性化動作に加えて、入力データ(in)を演算(f)によって出力データ(out)を得る他の非線形関数を実現することができ、そのプロセスは、out=f(in)である。ベクトル処理ユニットは、ベクトル演算及び/又はプール化演算を処理することができる。プール化演算は、入力データ(in)をプール化演算によってプール化動作後の出力データ(out)を得ることができ、そのプロセスは、out=pool(in)であり、poolはプール化動作関数であり、プール化動作には、平均値プール化、最大値プール化、中央値プール化が含まれるが、これに限定されなく、入力データinは、出力outに関連するプール化コア内のデータである。
【0278】
あるいは、本開示の実施例において、演算ユニット101は、対応する演算サブコマンドを実行するためのネットワークプロセッサ(NPU)、又はコンピュータ機器など演算機能を有する電子機器又はデバイスを含んでもよく、本開示の実施例を限定するものではない。本開示の実施例において、演算モジュール内の演算ユニット及び記憶ユニットは、両者間のデータ伝送を容易にするために、1つの機器又はデバイス内に設置された電子デバイスであってもよい。
【0279】
本開示の実施例における各演算モジュール100は、異なる演算を実行して対応する演算サブコマンドを完了するための少なくとも1つの演算ユニット101を含むことができる。つまり、各演算モジュール100は、受信した演算サブコマンドに応じて、異なる演算ユニット101を対応して制御して対応する演算動作を実行することができる。例えば、演算サブコマンドに加算命令が含まれている場合に、加算器を用いて加算動作を実行するなどである。ここで、本開示の実施例において詳細な説明を省略するが、演算サブコマンドに基づいて実行すべき演算プログラムを認識し、対応する演算ユニット101によって対応する演算プログラムを実行できれば、本開示の実施例とすることができる。
【0280】
また、演算ユニット101は、対応する演算サブコマンドを実行する際に演算データを呼び出す場合がある。例えば、本開示の実施例における演算ユニット101は、第1演算サブデータを用いて第1演算サブコマンドを実行してもよく、ここで、第1演算サブコマンドは、演算ユニット101に割り当てられて該当演算を実行させる命令であり、第1演算サブデータは、当該第1演算サブコマンドの実行に必要なデータである。
【0281】
ここで、ネットワークモデルにより対応する演算コマンドを実行する際に、当該演算コマンドに関する演算データを受信し、本開示の実施例における演算モジュールは当該演算データを各演算モジュールの記憶ユニット102内に対応して伝送するか、又は、各演算モジュール100が実行すべき演算サブコマンドに応じて演算データの少なくとも一部である演算サブデータを演算モジュールに割り当てることができる。つまり、本開示の実施例における記憶ユニット102は、そのグループ内の演算ユニットに必要な第1演算サブデータを少なくとも記憶するために用いられ、当該第1演算サブデータは、前記第1演算サブコマンドを実行するためのデータを含む。ここで、各演算モジュール100が実行する演算サブコマンドは、同一であっても異なってもよく、具体的には、異なる演算ニーズに応じて割り当てられてもよい。本開示の実施例における記憶ユニット102は、データ記憶を実行するために、キャッシュ、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも1つを含むことができる。
【0282】
本開示の実施例の上記構成に基づいて、各演算モジュールに必要なデータを1つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させることができる。この構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができる。
【0283】
本開示の実施例における演算モジュール100内の各演算ユニット101は、H型構造、パルスアレイマシン構造及びツリー構造のいずれか一つとして構成されることができる。ここで、各演算モジュール100内の演算ユニットの構造は、同一であっても異なってもよく、当業者により必要に応じて設定することができ、本開示はこれを限定しない。以下、演算モジュール内の各演算ユニットの構造について、上記の構成として説明する。
【0284】
図3-5は、本開示の実施例による、H型構造として構成される演算モジュールのブロック図を示す。
図3-5に示すように、演算モジュール100内の各演算ユニット101がH型構造として構成される場合、各演算ユニットは、主演算ユニット1001と、少なくとも1つの分岐演算ユニット1002と、複数の従演算ユニット1003とを含むことができる。主演算ユニット1001は、各分岐演算ユニット1002に接続され、分岐演算ユニット1002は、従演算ユニット1003のうちの少なくとも1つにそれぞれ接続されてもよい。
図3-5に示すように、4つの分岐演算ユニット1002を含み、各分岐演算ユニット1002に4つの従演算ユニット1003がそれぞれ接続されており、当該分岐演算ユニット1002は、主演算ユニット1001と従演算ユニット1003との間のデータ、命令及び中間結果の伝送に用いられることができる。各分岐演算ユニット1002は、演算サブコマンドを実行する際に、モジュール内の記憶ユニット102内に記憶されているデータにより動作を実行することができる。
【0285】
主演算ユニット1001は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニット1002を介して演算命令及びデータブロックを対応する従演算ユニット1003に伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び重みなどの情報を転送するように構成される。
【0286】
従演算ユニット1003は、対応する演算命令が完了すると、対応する中間結果を生成し、分岐演算ユニット1002を介して当該中間結果を主演算ユニット1001に返すことができる。即ち、各従演算ユニットは、8個のサブ行列と重み行列wとの乗算と累積加算とを並列的に実行して8個の中間結果を得、8個の中間結果を主演算ユニット1001に送ることができる。
【0287】
主演算ユニット1001は、8個の中間結果をソートして対応する演算結果を得、当該演算結果に対してバイアスbの演算を実行した後に活性化動作を実行して最終結果yを得、最終結果yを記憶モジュール100に送信して記憶させたり、他の電子デバイスに伝送して後続の処理を行ったりことができ、即ち、当該最終結果yを出力するか又は記憶ユニット102内に記憶することができる。
【0288】
また、
図3-6は、本開示の実施例による、パルスアレイマシン構造として構成される演算モジュールのブロック図を示す。ここで、演算モジュール100内の各演算ユニット101がパルスアレイマシン構造として構成される場合、各演算ユニットは、主演算ユニット1001及び複数の従演算ユニット1003を含むことができる。複数の従演算ユニット1003は、アレイ状に分布しており、m行n列(m及びnは1よりも大きい正の整数である)の従演算ユニットとして構成され、各従演算ユニット1003は隣接する他の従演算ユニット1003に接続され、主演算ユニット1001は前記複数の従演算ユニット1003のうちのk個の従演算ユニット1003に接続され、前記k個の従演算ユニット1003は、第1行のn個の従演算ユニット1003、第m行のn個の従演算ユニット1003及び第1列のm個の従演算ユニット1003である。なお、説明したいのは、
図3-6に示されるK個の従演算ユニット1003は、第1行のn個の従演算ユニット1003、第m行のn個の従演算ユニット1003及び第1列のm個の従演算ユニット1003のみを含み、即ち当該k個の従演算ユニット1003は、複数の従演算ユニット1003のうちの、主演算ユニット1001に直接接続される従演算ユニット1003である。当該K個の従演算ユニット1003は、前記主演算ユニット1001及び複数の従演算ユニット1003の間でのデータ及び命令の転送に用いられることができる。K個の従演算ユニットを除く残りの従演算ユニットは、当該演算命令に従って、受信したデータブロックに対して演算を実行して中間結果を得、演算結果を前記K個の従演算ユニットに伝送するように構成される。
【0289】
主演算ユニット1001は、割り当てられた演算子をK個の従演算ユニット1003に伝送して演算することができ、残りの従演算ユニット1003に接続することにより、当該残りの従演算ユニット1003から中間結果を得ることができる。主演算ユニット1001は、当該複数の残りの従演算ユニット1003から送信された中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶ユニット102に送信して記憶させるために用いられることができる。
【0290】
また、
図3-7は、本開示の実施例による、ツリー構造として構成される演算モジュールのブロック図を示す。演算モジュール100における各演算ユニットがツリー構造として構成される場合、各演算ユニットは、主演算ユニット1001及び複数の従演算ユニット1003、前記主演算ユニット1001と従演算ユニットとの間に接続されるツリー型モジュール1004を含むことができる。ここで、前記ツリー型モジュール1004は、1つのルートポート1及び複数の分岐ポート2を含み、前記ツリー型モジュールのルートポートは、前記主演算ユニット1001に接続され、前記ツリー型モジュールの複数の分岐ポートは、複数の従演算ユニットのうちの1つの従演算ユニットにそれぞれ接続される。上記ツリー型モジュールは、送受信機能を有する。
図3-7に示すように、当該ツリー型モジュールが送信機能を有するが、他の実施例では受信機能を有してもよく、ここで限定しない。ツリー型モジュール1004は、前記主演算ユニットと前記複数の従演算ユニットとの間でデータブロック、重み及び演算命令を転送するために使用され得る。主演算ユニット1004は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割して、ツリー型モジュール1004に送信し、次いで、ツリー型モジュール1004は、対応するデータ、演算命令及び重みを対応する従演算ユニット1003に伝送し、従演算ユニット1003から中間結果を受信して主演算ユニット1001に伝送する。そして、主演算ユニット1001は、中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶ユニット102に送信して記憶させることができる。
【0291】
本開示の実施例において、当該ツリー型モジュールは、少なくとも1層の、転送機能を有する線構造であるノードを含むことができ、当該ノード自体は、計算機能を有さなくてもよい。ツリー型モジュールがゼロ層のノードを有する場合、当該ツリー型モジュールは不要である。
【0292】
当該ツリー型モジュール1004は、n分木構造であってもよい。例えば、
図3-8に、本開示の実施例における2分木構造として構成される演算ユニットのブロック図を示すが、他の実施例では、各演算ユニットは、3分木構造、又は他のn分木構造として構成されてもよく、当該nは2以上の整数であることができる。本出願の具体的な実施形態は、上記nの具体的な取り得る値を限定しなく、上記層数は2であってもよいし、他の層数であってもよい。従演算ユニットは、最後から2番目の層のノード以外の他の層のノードに接続され、例えば、最後から1番目の層のノードに接続されるようにしてもよい。
【0293】
また、本開示の実施例における演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニットの入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。
【0294】
本開示の実施例において、各演算モジュールは、互いに接続されてもよいし、少なくとも2つの演算モジュールの接続関係が選択的に確立されてもよい。例えば、少なくとも2つの演算モジュール間にデータ接続が存在し、一方の演算モジュールが前記第1演算サブデータと他方の演算モジュールの第2演算サブデータとを用いて前記第1演算サブコマンドを実行し、ここで、第2演算サブデータは、当該他方の演算モジュールの記憶ユニットに記憶されているデータ及び/又は当該他方の演算モジュールの演算ユニットにより生成されたデータを含む。つまり、本開示の実施例における各演算モジュール100間には、2つ演算モジュール間のデータ伝送チャネルを確立することができる有線接続や無線接続などのデータ接続関係が存在してもよい。ここで、演算モジュール100が第1演算サブコマンドを実行する際に、他方の演算モジュール100が生成したデータを必要とする場合、当該2つの演算モジュール間の接続関係により、データの伝送を実現することができる。
【0295】
図3-2は、本開示の実施例による、演算装置のブロック図を示し、複数の演算モジュール100に加えて、制御モジュール200を含むことができる。当該制御モジュール200は、対応する演算サブコマンドを実行するように演算モジュールを制御し、対応する演算サブデータを記憶するようにメモリを制御するために用いられてもよく、また、制御モジュール200は、各演算モジュール間の接続状態を制御してもよい。
【0296】
本開示の実施例における制御モジュール200は、ネットワークモデルに関する演算コマンドを受信してもよく、通信モジュールを介して演算コマンドやその他の情報を受信及び伝送してもよく、演算コマンドやその他の情報を直接受信してもよい。通信モジュールは、光ファイバ、ツイストペアケーブル又は同軸ケーブルを含む有線ケーブルを介して情報の伝送を実行する有線通信ユニット及び/又は無線通信により情報の伝送を実行する無線通信ユニットを含むことができる。無線通信ユニットは、wifiモジュール、NFCモジュールなどを含む。同様に、各演算モジュール100間は有線又は無線によりデータ接続されてもよく、例えば光ファイバにより接続されてもよい。
【0297】
制御モジュール200は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュール100に、対応する演算サブコマンド及び演算サブデータを割り当てることができる。当該演算コマンドは、ネットワークモデル演算を実行するための複数の演算サブコマンドを含み、演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。本開示の実施例における制御モジュール200は、受信した演算コマンドにおける演算論理関係に基づいて、各演算サブコマンド及び演算サブデータを決定することができる。例えば、制御モジュール200は、演算コマンドの論理関係に基づいて有向グラフを作成することができる。当該有向グラフのノードは、各演算サブコマンドを区分するために用いられることができ、即ち2つのノード間の演算動作に対応する演算コマンドを1つの演算サブコマンドとすることができ、この場合に、当該演算サブコマンドの入力データから必要な演算サブデータを決定することもできる。これにより、演算モジュールを割り当てて当該演算サブコマンドを実行し、当該演算モジュール内の記憶ユニットに演算サブデータを割り当てることができる。
【0298】
また、制御モジュール200は、各演算モジュールが対応する演算サブコマンドを実行する際に、他の演算モジュールからのデータが必要されるか否かを確認でき、必要であれば、当該2つの演算モジュール間の接続をオンにし、必要でなければ、2つの演算モジュール間の接続を確立しない。例えば、本開示の実施例は、各演算モジュール間のオン又はオフを切り替えコンポーネントによって実行することができ、各演算モジュールを当該切り替えコンポーネントにそれぞれ接続し、当該切り替えコンポーネントの対応する回線のオンを制御することにより、対応する演算モジュール間の接続を実現することができる。この構成により、演算装置の内部構造を簡素化することができる。
【0299】
図3-3は、本開示の実施例による、制御モジュールのブロック図を示す。本開示の実施例における制御モジュール200は、第1割り当てユニット201と、第2割り当てユニット202とを含むことができる。
【0300】
第1割り当てユニット201は、受信した演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュール100に対応して割り当てて演算を行うことができる。第2割り当てユニット202は、各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、演算サブデータを対応する演算モジュールに割り当てて記憶させるために用いられることができる。
【0301】
つまり、本開示の実施例は、演算コマンドの割り当てを第1割り当てユニット201により実行し、演算データの割り当てを第2割り当てユニット202により実行することができる。これにより、各演算モジュールがそれぞれの演算サブコマンドを実行する際に、演算モジュール内の記憶ユニットに記憶されているデータを利用して演算動作を完了させることができる。
【0302】
本開示の実施例における構造構成を明確にするために、以下、本開示の実施例における演算装置を例に挙げて説明する。本開示の実施例における演算装置は、4つの演算モジュール100を含み、各演算モジュール100は、1つの記憶ユニット102と、4つの演算ユニット101とを含むことができる。例えば、第1演算モジュール100は、記憶ユニットA0と演算ユニットB0、B1、B11、B10を含み、第2演算モジュール100は、記憶ユニットA1と演算ユニットB2、B9、B12、B15を含み、第3演算モジュール100は、記憶ユニットA2と演算ユニットB4、B5、B6、B7を含み、第4演算モジュール100は、記憶ユニットA3と演算ユニットB3、B8、B13、B14を含むことができる。各演算モジュール100における演算ユニットは、互いに接続されてもよく、各演算モジュール100は、制御モジュール200の制御に応じて選択的に接続されてもよい。
【0303】
また、制御モジュール200は、受信した演算コマンド及び演算データに基づいて、各演算モジュールに、対応する演算サブコマンドを割り当てるとともに、対応する演算サブデータを記憶ユニットに割り当てるようにしてもよい。以上の構成により、演算装置の拡張性が保証されるとともに、各演算モジュールの設置により演算装置のNumaアーキテクチャが実現される。
【0304】
以上のように、本開示の実施例は、各演算モジュールに必要なデータを1つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させることができる。この構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができる。また、本開示の実施例は、演算装置の拡張性を向上させることができ、演算機能に対応する演算モジュールを追加することにより、演算装置の演算機能を容易に拡張することができる。
【0305】
本開示で言及された上記各実施例は、原理的な論理に反しない限り、互いに組み合わせて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【0306】
また、本開示は、上記実施例における演算装置を含むデータ処理チップ、電子機器、及び演算装置に適用される演算方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【0307】
本開示の実施例は、上記実施例のいずれか一項に記載の演算装置を含むデータ処理チップをさらに提供する。
【0308】
いくつかの実施例において、本開示は、上記データ処理チップを含むチップパッケージ構造を提供する。
【0309】
いくつかの実施例において、本開示は、上記チップパッケージ構造を含む基板カードを提供する。
【0310】
本開示の実施例は、上記実施例のいずれか一項に記載の演算装置又はチップ、又は上記基板カードを含む電子機器をさらに提供する。
【0311】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び/又は医療機器を含む。
【0312】
前記乗り物は飛行機、船舶及び/又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、B超音波装置及び/又は心電計を含む。
【0313】
また、本開示の実施例は、上記実施例に記載の演算装置に適用される演算方法をさらに提供し、演算装置は、複数の演算モジュールを含み、当該複数の演算モジュールは、対応する演算サブコマンドを並列に実行することにより、ネットワークモデルの演算動作を完了する。
図3-4は、本開示の実施例による、演算方法のフローチャートを示す。各演算モジュールの記憶ユニットにより、第1演算サブコマンドを実行するためのデータを含む第1演算サブデータを記憶するS100と、各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行するS200とを含むことができ、ここで、各演算モジュールが実行する演算サブコマンドが異なってもよい。
【0314】
本開示の実施例において、各演算モジュールの演算ユニットにより第1演算サブデータを用いて第1演算サブコマンドを実行することは、前記第1演算サブデータ及び他方の演算モジュールの第2演算サブデータを用いて第1演算サブコマンドを実行することをさらに含み、前記第2演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び/又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含む。
【0315】
本開示の実施例において、前記方法は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【0316】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、第1割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、第2割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含む。
【0317】
本開示の実施例において、前記方法は、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含む。
【0318】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【0319】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【0320】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【0321】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、1つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【0322】
また、本出願の各実施例における各機能ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、2つ以上のユニットが1つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【0323】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は1つのメモリに記憶され、1つのコンピュータ機器(パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい)に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【0324】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ(英語:Read-Only Memory、略称:ROM)、ランダムアクセスメモリ(英語:Random Access Memory、略称:RAM)、磁気ディスク又は光ディスクなどがある。
【0325】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。
【0326】
また、バス構造のプロセッサでは、プロセッサ内部で一種の固定形式のデータを演算するが、プロセッサからメモリにデータを書き込むとき、2種の形式でメモリにデータを書き込むことができる。1つ目の形式は、ビッグエンディアン(big endian)と呼ばれ、即ちプロセッサ内部データの論理上位バイトがメモリの下位アドレスに書き込まれ、プロセッサ内部データの論理下位バイトがメモリの上位アドレスに書き込まれる。2つ目の形式は、リトルエンディアンと呼ばれ、データがメモリに記憶される順序がビッグエンディアンと逆になる。既存のプロセッサは、ビッグエンディアンのデータ演算のみをサポートしているか、又はリトルエンディアンのデータ演算のみをサポートしているため、従来技術は、適用性がよくないという欠点がある。
【0327】
本開示の実施例は、適用性に優れ、コストを低減することができるデータプロセッサ、チップ、電子機器及びデータ処理方法を提案する。本開示は、データ処理の分野に関し、特にデータプロセッサ、チップ、電子機器及びデータ処理方法に関する。
【0328】
以下、添付の図面を参照しながら、本開示の様々な例示的な実施例、特徴及び態様を詳細に説明する。図面における同じ符号は同じまたは類似する機能の要素を示す。図面において実施例の様々な方面を示したが、特に断らない限り、比例に従って図面を描く必要がない。
【0329】
ここでの用語「例示的」とは、「例、実施例として用いられることまたは説明的なもの」を意味する。ここで「例示的」に説明されるいかなる実施例は他の実施例より好ましいまたは優れるものであると理解すべきではない。
【0330】
また、本開示をより効果的に説明するために、以下の具体的な実施形態において様々な具体的な詳細を示す。当業者であれば、本開示は何らかの具体的な詳細がなくても同様に実施できると理解すべきである。いくつかの実施例では、本開示の趣旨を強調するために、当業者が熟知している方法、手段、要素および回路について詳細な説明を行わない。
【0331】
図4-1は、本開示の実施例による、データプロセッサのブロック図を示す。本開示の実施例のデータプロセッサは、データ処理用のチップとして構成されることもできるし、電子機器内に配置されて対応するデータ処理動作を実行することもできる。当該データプロセッサにより、ビッグエンディアンとリトルエンディアンの両方への適用を実現することができ、適用性を向上させ、コストを低減することもできる。
【0332】
図4-1に示すように、本開示の実施例のデータプロセッサは、データ変換モジュール100と、当該データ変換モジュール100に接続される制御モジュール200とを含むことができる。
【0333】
データ変換モジュール100は、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第1データを第2データに変換することができる。制御モジュール200は、受信した制御信号に基づいて、前記第1データのバイト順が予め設定されたバイト順と異なると確認した場合、前記第1データを第2データに変換するようにデータ変換モジュール100を制御することができる。
【0334】
本開示の実施例において、データ変換モジュール100は、制御モジュール200によって伝送されたデータ変換命令に従って第1データを第2データに変換することができ、この場合、予め設定された粒度に従って第1データを予め設定されたバイト順形式を有する第2データに変換することを含むことができる。ここで、データ粒度は、データのバイトビット数を意味し、例えば、8ビット、16ビット、32ビット、64ビットなどであるが、本開示においてこれに限定されない。バイト順とは、バイトの記憶時の並びと入力(出力)時の並びが先着順かそれとも後着順か、つまり、ビッグエンディアンのバイト順と、リトルエンディアンのバイト順とを含むことができる。ビッグエンディアンのバイト順とは、データの論理上位バイトがアドレス空間の下位アドレスに書き込まれ、データの論理下位バイトがアドレス空間の上位アドレスに書き込まれることをいう。リトルエンディアンのバイト順とは、データの論理上位バイトがアドレス空間の上位アドレスに書き込まれ、データの論理下位バイトがアドレス空間の下位アドレスに書き込まれることをいう。
【0335】
本開示の実施例における制御モジュール200は、制御信号を受信し、受信した制御信号に基づいて、データ処理動作が実行される第1データの第1アドレス空間、第1データのデータ形式、当該データ処理動作が実行されて出力される第2データの予め設定されたデータ形式、データ処理動作を実行するための予め設定された演算命令、及びデータ処理動作が実行されて出力される第2データの第2アドレス空間を取得することができる。ここで、第1アドレス空間は、第1データを記憶する開始アドレス及び終了アドレスを含むことができ、対応して、第2アドレス空間は、第2データを記憶する開始アドレス及び終了アドレスを含むことができるとともに、第1データのデータ形式は、第1データのデータ粒度及びバイト順を含むことができ、予め設定されたデータ形式は、所望の第2データのデータ形式、例えば、予め設定された粒度及び/又は予め設定されたバイト順を含むことができる。
【0336】
本開示の実施例における制御モジュール200は、制御信号又は制御信号に基づいて取得された各情報を記憶モジュールに記憶することができ、当該記憶モジュールは、データプロセッサ内の、制御モジュール200及びデータ変換モジュール100とは独立に別個の記憶装置であってもよく、制御モジュール200内に設けられたキャッシュ又はメモリであってもよい。本開示の実施例は、これを限定しない。制御信号又は当該制御信号に基づいて取得された各情報を記憶モジュールに記憶することにより、データプロセッサ内の各モジュール又はデバイスが対応するデータ又は命令を容易に取得することができる。記憶モジュールは、レジスタ、キャッシュのうちの1つ又は任意の組み合わせを含む。具体的には、前記キャッシュは、前記計算命令を記憶するために使用され、前記レジスタは、前記機械学習モデル、前記データ、及びスカラーを記憶するために使用され、前記キャッシュは、高速一時キャッシュである。
【0337】
制御モジュール200は、受信した制御信号に基づいて、上述したデータ変換動作に関する情報を取得し、当該情報に応じて、関連するデータ変換動作を実行するようにデータ変換モジュール100を制御することができる。ここで、制御モジュール200は、制御信号に基づいて第1データのバイト順が予め設定されたバイト順と同一であるか否かを確認し、同一である場合、データ変換モジュール100によるデータのバイト順変換動作を行う必要がなく、両者に差異がある場合、データ変換モジュール100にデータ変換命令を送信して、データ変換モジュール100が第1データを予め設定されたデータ形式に対応する第2データに変換するように制御することができる。
【0338】
図4-2は、本開示の実施例による、データプロセッサにおけるデータ変換モジュールのブロック図を示す。データ変換モジュール100は、第1データを予め設定された粒度に従って複数のバイトグループに分割して第3データを取得するために用いられるグループ化ユニット101と、データのバイト順を予め設定されたバイト順に変換するために用いられるバイト順変換ユニット102と、を含むことができる。データ変換モジュール100は、制御モジュール200から伝送されたデータ変換命令に基づいて、第1データの第1アドレス空間を取得し、当該第1アドレス空間に基づいて対応する第1データを読み取り、また、第2データを記憶するための第2アドレス空間を取得し、変換して得られた第2データを当該第2アドレス空間に記憶し、また、第1データのデータ形式及び第2データの予め設定されたデータ形式を取得することができる。
【0339】
制御モジュール200は、第1データのデータ粒度が予め設定された粒度と異なり且つ第1データのバイト順が予め設定されたバイト順と異なる場合、データ変換モジュール100へ対応するデータ変換命令を送信することにより、予め設定された粒度に基づいて第1データをグループ化して、各バイトグループの粒度が予め設定された粒度と同じである第3データを取得するようにグループ化ユニット101を制御し、バイト順変換ユニット102により予め設定されたバイトに基づいて第3データを第2データに変換することができる。
【0340】
以上の構成により、第1データのバイト順が予め設定されたバイト順と異なる場合、グループ化ユニット101により、グループ毎のデータ粒度が予め設定された粒度となるように第1データをグループ化し、さらにバイト順変換ユニット102により、第1データのバイト順を予め設定されたバイト順に変換して、予め設定されたデータ形式を満たす第2データを得ることができる。
【0341】
対応して、
図4-3は、本開示の実施例による、データプロセッサにおける制御モジュールのブロック図を示す。本開示の実施例の制御モジュール200は、バイト順制御ユニット201と、グループ化制御ユニット202とを含むことができ、バイト順制御ユニット101は、受信した制御信号に基づいて第1データのバイト順を確認し、前記第1データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいてデータ変換動作を実行するようにデータ変換モジュール100を制御することができる。グループ化制御ユニット202は、受信した制御信号に基づいて第1データの粒度を確認し、前記第1データの粒度が予め設定された粒度と異なる場合、データ変換モジュール100を制御してグループ化動作を実行するときのグループ化のグループ数を決定することができ、ここで、グループ化のグループ数は、第1データのビット数と予め設定された粒度との比である。
【0342】
対応して、グループ化制御ユニット202は、決定されたグループ化数で第1データをグループ化するようにグループ化ユニット101を制御し、第3データを取得するために用いることができ、バイト順制御ユニット201は、第3データのバイト順を予め設定されたバイト順に変換するようにバイト順変換ユニット102を制御するために用いることができる。ここで、グループ化制御ユニット202は、制御信号に基づいて第1データの粒度及び第2データの予め設定された粒度を取得し、さらにグループ化のグループ数を決定することができる。バイト順制御ユニット201は、予め設定されたバイト順に基づいてデータ変換を実行し、即ち第3データを第2データに変換するようにバイト順変換ユニット102を制御することができる。
【0343】
以上は、本開示の実施例における制御モジュール及びデータ変換モジュールの実施例に過ぎず、他の実施例では、制御モジュール及びデータ変換モジュールのそれぞれは、異なる構造を有してもよく、制御モジュールによってデータ変換動作を実行するようにデータ変換モジュールを制御できれば、本開示の実施例とすることができる。
【0344】
以下、本開示の実施例による、データ変換モジュールがデータ変換動作を実行する具体的なプロセスについて説明する。本開示の実施例のグループ化ユニット101は、第1データのデータ粒度と予め設定された粒度との比に基づいて、第1データを複数のバイトグループに分割し、複数のバイトグループを組み合わせて第3データを形成し、ここで、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。各バイトグループには少なくとも1つのバイトのデータが含まれ、各バイトは8ビットのデータである。つまり、本開示の実施例において、グループ化ユニット101によるグループ化動作を行う場合に、第1データを上記の比で複数のバイトグループに分割し、各バイトグループ内のデータを組み合わせ、各バイトグループの組み合わせデータから第3データを形成することができる。
【0345】
また、本開示の実施例は、第1データの第1アドレス空間のアドレス順に基づいて第1データを読み取り、データをグループ化する。ここで、グループ化ユニット101は、第1データのアドレス空間の下位アドレスから上位アドレスの順に、前記第1データを複数のバイトグループに分割し、当該複数のバイトグループのグループ数は、第1データのデータ粒度と予め設定された粒度との比である。つまり、本開示の実施例において、第1データを対応するアドレス空間に記憶する際に、下位アドレスから上位アドレスの順に記憶することができるので、グループ化ユニット101は、当該下位アドレスから上位アドレスの順に、第1データを読み取り、第1データを再グループ化して複数のバイトグループを得ることができる。ここで、第1データの粒度と予め設定された粒度との比に応じてバイトグループのグループ数を決定でき、各バイトグループは予め設定された粒度のデータを含む。
【0346】
データバスによって伝送されるデータのビット数は64の倍数(64*n)であるので、データ変換モジュール100によって第1データのデータ粒度を8ビット、16ビット、32ビット又は64ビットに変換する実施例を以下に例示する。
【0347】
予め設定された粒度は8ビットであってもよく、この場合、第1データのグループ化変換及びバイト順変換は不要である。
【0348】
予め設定された粒度が16ビットのデータである場合、第1アドレス空間の下位アドレスから上位アドレスの順に2バイトずつに1つのバイトグループとしてグループ化する。この場合、複数のバイトグループを得ることができ、グループ数は、第1データの粒度と16との比であり、当該バイトグループ内のデータ粒度は16ビットである。
【0349】
予め設定された粒度が32ビットのデータである場合、第1アドレス空間の下位アドレスから上位アドレスの順に4バイトずつに1つのバイトグループとしてグループ化する。グループ数は、第1データの粒度と32との比であり、当該バイトグループ内のデータ粒度は32ビットである。
【0350】
予め設定された粒度が64ビットのデータである場合、第1アドレス空間の下位アドレスから上位アドレスの順に8バイトずつに1つのバイトグループとしてグループ化する。グループ数は、第1データの粒度と64との比であり、当該バイトグループ内のデータ粒度は64ビットである。
【0351】
以上の構成により、第1データのグループ化動作を完了することができる。このようにして、第1データのデータ粒度と予め設定された粒度との比に基づいて、バイトグループのグループ数を容易に決定して、予め設定されたデータ粒度に対応する第3データを得ることができる。
【0352】
本開示の実施例において、グループ化ユニット101は、予め設定された粒度に対応する変換サブユニット、例えば8ビット変換サブユニット、16ビット変換サブユニット、32ビット変換サブユニット又は64ビット変換サブユニットのうちの少なくとも1つを含み、又は他の実施例では他の粒度の変換サブユニットを有し、予め設定された粒度に対応するデータ変換を実行する場合、対応する変換サブユニットを制御してデータ粒度変換を行うようにしてもよい。
【0353】
又は、本開示の他の実施例において、グループ化ユニット101は、上述した複数の変換サブユニットを同時に含んでもよい。
図4-6は、本開示の実施例による、グループ化ユニットのブロック構造図を示し、ここで8ビット変換サブユニット1011、16ビット変換サブユニット1012、32ビット変換サブユニット1013、64ビット変換サブユニット1014、及び各変換サブユニットに接続されるセレクタ1015を含む。本開示の他の実施例において、他の粒度の変換サブユニットを含み、予め設定された粒度に対応するグループ化を行うことができ、本開示の実施例はこれを限定しない。
【0354】
セレクタ1015は、第3データの選択動作を実行するために用いられる。即ち、各変換サブユニット1011、1012、1013及び1014はそれぞれ第1データのグループ化動作を実行して対応する第3データを得ることができ、セレクタ1015は、各変換サブユニットの出力から予め設定された粒度に対応する第3データのグループを選択することができる。予め設定された粒度が変更されると、当該予め設定された粒度に対応する第3データを容易に取得することができる。
【0355】
また、本開示の実施例におけるバイト順変換ユニット102は、後の演算処理で異なるバイト順のデータを処理するようにデータのバイト順を反転させるために用いられる。グループ化ユニット102により変換された第3データに対して、第3データの各バイトグループにおけるバイト順を逆にして、各バイトグループの順番で前記第2データを得るようにバイト順変換を行うことができ、ここで、各バイトグループのデータ粒度は予め設定された粒度と同じである。
【0356】
第1データのデータ粒度が予め設定された粒度と同じである場合、バイト順変換ユニット102は、第1データを記憶する下位アドレスから上位アドレスの順に第1データを複数のバイトグループに分割し、ここで、1つのデータ粒度を単位として1つのバイトグループとする。バイト順変換を実行する際に各バイトグループ内のバイト順を逆にする。例えば、16ビットのデータ粒度の場合、各バイトグループ内に2つのバイトを含み、第1バイトと第2バイトの順序を入れ替えることができる。また、例えば32ビットのデータ粒度の場合、各バイトグループ内に4つのバイトを含み、第1から第4バイトの順序を反転して逆にし、又は64ビットのデータ粒度の場合、各バイトグループ内に8つのバイトを含み、第1から第8バイトの順序を反転して逆にするなどのように、各バイトグループ内のデータのバイト順変換を実現することができる。バイトグループ内のバイト順を逆にした後、バイトグループの順番で第2データを構成することができ、即ちデータバイト順の変換プロセスが完了した際に、バイトグループ内のバイト順が変換されたが、バイトグループの順序は変わらない。
【0357】
また、第1データのデータ粒度が予め設定された粒度と異なる場合、まず、グループ化ユニット101により第1データを予め設定された粒度に対応する複数のバイトグループに分割して第3データを形成し、そしてバイト順変換ユニット102により第3データのバイト順を予め設定されたバイト順に変換して第2データを得る。例えば、グループ化ユニット101により16ビットのデータ粒度を変換する際に、第1データをアドレスの低いから順に2つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット102により、各バイトグループ内の2つのバイトの位置を入れ替え、バイトグループ間の順序を変えなくて、第2データを得る。又は、グループ化ユニット101により32ビットのデータ粒度を変換する際に、第1データをアドレスの低い順に4つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット102により各バイトグループ内の4つのバイトの順序を反転させ、バイトグループ間の順序を変えなくて、第2データを得る。又は、グループ化ユニット101により64ビットのデータ粒度を変換する際に、第1データをアドレスの低い順に8つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット102により各バイトグループ内の8つのバイトの順序を反転させ、バイトグループ間の順序を変えなくて、第2データを得る。このように、上記実施例はバイト順変換ユニットがバイト順変換を実行する実施例を説明するだけであり、他の実施例では他の粒度のデータのバイト順変換プロセスを実行することもでき、ここでは一々例示しない。
【0358】
さらに、
図4-3に示すように、本開示の実施例において、制御モジュール200は、検出ユニット203をさらに含むことができる。当該検出ユニット203は、制御モジュール200によりデータ変換を実行するようにデータ変換モジュール100を制御する前に、制御信号における第2データを記憶するための第2アドレス空間がアイドル状態であるか否かを確認し、アイドル状態であれば、データ変換を実行するようにデータ変換モジュール100を制御し、そうでなければ、第2アドレス空間がアイドル状態になると、対応するデータ変換動作を実行するようにデータ変換モジュールを制御する。これにより、アドレス衝突に起因するデータエラーを回避する。
【0359】
本開示の実施例のデータ変換プロセスをより明確にするために、以下に例示する。
【0360】
本開示の実施例のデータプロセッサを備えるシステムがデータ処理を実行する場合、制御バスを介して制御モジュール200に制御信号を送信し、当該制御信号は、データ処理される第1データの第1アドレス空間、第1データのデータ粒度(例えば64ビット)、第1データのバイト順(ビッグエンディアン)、及び得られる第2データの第2アドレス空間、第2データの予め設定されたデータ粒度(32ビット)、第2データの予め設定されたバイト順(リトルエンディアン)などの情報を含むことができる。制御モジュール200は、当該制御信号を受信すると、データ変換モジュール100にデータ変換命令を送信する。これにより、グループ化ユニットにより第1データを予め設定されたデータ粒度(32ビット)でグループ化して第3データを得て、バイト順変換ユニットにより第3データの各バイトグループのバイト順を予め設定されたバイト順(リトルエンディアン)に調整して、予め設定されたデータ形式を満たす第2データを得る。続いて、第2データを、データバスを介して対応する第2記憶空間に出力するか、又は他の演算処理に用いる。
【0361】
上記実施例によれば、第1データのデータ粒度及び/又はバイト順形式の変換を完了することができ、他のデバイスによるデータ変換を行うことなく、データプロセッサを様々な第1データに適用することができる。
【0362】
また、
図4-4は、本開示の実施例による、データプロセッサのブロック図を示す。データプロセッサは、上記実施例に記載のデータ変換モジュール100及び制御モジュール200に加え、演算モジュール300をさらに含むことができる。当該演算モジュール300は、予め設定された演算命令に従って第2データを演算処理することができる。
【0363】
上記実施例に記載のように、制御モジュール200は、アドレスバスから制御信号を取得し、データ演算を実行するための予め設定された演算命令を対応して取得する。制御モジュール200は、制御信号に基づいて前記予め設定された演算命令を決定し、前記予め設定された演算命令に基づいて、前記第2データを演算処理するように演算モジュール300を制御することができる。
【0364】
本開示の実施例において、制御モジュール200は、制御信号に基づいて、データ変換モジュール100による第1データのデータ変換が不要であると決定した場合、即ち第1データのバイト順が予め設定されたバイト順と同じである場合、予め設定された演算命令に基づいてデータの演算動作を実行するように演算モジュールを直接制御する。
【0365】
また、制御モジュール200は、制御信号に基づいて、データ変換モジュール100による第1データのデータ変換が必要であると決定した場合、即ち第1データのバイト順が予め設定されたバイト順と異なる場合、まず、データ変換モジュール100により第1データを第2データに変換し、その後、予め設定された演算命令に基づいて第2データを演算するように演算モジュール300を制御して、システムに必要なデータを得る。なお、説明したいのは、本開示の実施例において、予め設定された演算命令は、異なる演算要求に基づいて設定することができ、システムは、データの演算処理に適用する演算命令を要求に応じて決定することができ、当該演算命令に、演算処理に適用される数式、ルールなどの情報が含まれて、当該演算処理によってシステムが所望するデータを得ることができる。したがって、本開示の実施例は、予め設定された演算命令について、具体的に限定しなく、異なるアプリケーション要求において異なる命令とすることができる。
【0366】
さらに、本開示の実施例において、制御モジュール200は、演算モジュール300により演算動作を実行する前に、演算モジュールが予め設定された条件を満たすか否かを判断する必要があり、当該予め設定された条件を満たす場合のみに、演算処理動作を実行するように演算モジュールを制御する。ここで、制御モジュール200における検出ユニット203は、当該演算モジュール300が予め設定された条件を満たすか否かを検出することができ、条件を満たせば、第2データを演算処理するように演算モジュールを制御する。
【0367】
本開示の実施例において、検出ユニット203は、演算モジュール300が上記演算動作を実行できるか否かを判断し、実行できれば、第2データを演算処理するように演算モジュールを制御し、そうでなければ、前記演算モジュールが上記演算動作を実行できるようになると、第2データを演算処理するように演算モジュールを制御することができる。演算モジュール300は、複数の演算命令を並列に処理可能なデータ演算処理能力を有する電子デバイスであってもよい。複数の演算動作が存在する場合、演算モジュール300は、メモリやデータ処理速度の制限により、より多くの演算動作を円滑に行うことができない場合がある。したがって、本開示の実施例では、検出ユニット203により、演算モジュール300のデータ処理速度が予め設定された速度よりも高いか、又はメモリ空間が予め設定されたメモリ空間よりも大きいと確認した場合、演算モジュール300が演算動作を実行できると決定することができる。
【0368】
また、本開示の実施例における演算モジュール300は、それぞれ異なる演算動作を実行可能な複数の演算ユニットを含むことができる。したがって、検出ユニット203は、空いている演算ユニットが存在する場合、前記演算モジュールが予め設定された条件を満たすと判断することができる。即ち、上記演算動作を実行可能な演算ユニットが存在する場合のみに、空いている演算ユニットにより対応する演算動作を実行するように演算モジュールを制御する。
【0369】
本開示の実施例において、検出ユニット203はさらに、演算モジュール300が現在実行している演算処理に使用されるアドレス空間と、第2データの第2アドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突でなければ、前記演算モジュールが予め設定された条件を満たすと判断することができる。ここでの衝突とは、演算モジュールが現在実行している演算動作によって生成されたデータを記憶するためのアドレス空間と、第2データのアドレス空間とが重なって、あるいは演算モジュールが現在実行している演算動作によって生成されたデータを記憶するためのアドレス空間と、予め設定された演算命令のアドレス空間とが重なって、あるいは第2データ動作を実行した後にデータを記憶するアドレス空間と、演算モジュールが現在実行している演算動作に用いられるアドレス空間とが重なっていることを意味する。上記アドレスが衝突しない場合のみに、演算動作を実行するように演算モジュールを制御することができる。
【0370】
上記構成に基づいて、演算モジュールが予め設定された条件を満たす場合のみに、演算モジュールにより対応する演算動作を実行することができ、データの安全を保証するとともに、演算効率を向上させることができる。
【0371】
以上のように、本開示の実施例によれば、他の変換デバイスを用いてデータ変換を実行することなく、データを所望の形式に容易に変換することができるデータ変換モジュールをデータプロセッサ内に設置することにより、他の変換デバイスの使用コストを低減することができるとともに、データプロセッサが多様なデータ形式に適用可能になり、良好な適用性を有する。
【0372】
本開示で言及された上記各方法の実施例は、原理的な論理に反しない限り、互いに組み合わせて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【0373】
また、本開示は、上記実施例におけるデータプロセッサを含むデータ処理チップ、電子機器、及びデータプロセッサに適用されるデータ処理方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【0374】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップをさらに提供する。
【0375】
いくつかの実施例において、上記チップを含むチップパッケージ構造を提供する。
【0376】
いくつかの実施例において、上記チップパッケージ構造を含む基板カードを提供する。
【0377】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサ又はデータ処理チップ、又は上記基板カードを含む電子機器をさらに提供する。
【0378】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び/又は医療機器を含む。
【0379】
前記乗り物は飛行機、船舶及び/又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、B超音波装置及び/又は心電計を含む。
【0380】
また、本開示の実施例は、上記実施例に記載のデータプロセッサに適用されるデータ処理方法をさらに提供する。
図4-5は、本開示の実施例による、データ処理方法のフローチャートを示し、制御信号を受信するS100と、受信した制御信号に基づいて、第1データのバイト順が予め設定されたバイト順と異なると確認した場合に、予め設定されたデータ形式に基づいて前記第1データを第2データに変換するようにデータ変換モジュールを制御するS200とを含むことができ、前記データ変換モジュールは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第1データを第2データに変換するように構成される。
【0381】
本開示の実施例において、前記データ変換モジュールは、グループ化ユニットと、バイト順変換ユニットとを含み、予め設定されたデータ形式に基づいて前記第1データを第2データに変換するようにデータ変換モジュールを制御することは、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを複数のバイトグループに分割して第3データを得ることと、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第3データを第2データに変換することとを含み、ここで、第3データの各バイトグループの粒度は予め設定された粒度と同じである。
【0382】
本開示の実施例において、グループ化ユニットにより前記予め設定された粒度に基づいて前記第1データを複数のバイトグループに分割して第3データを得ることは、前記第1データのアドレス空間の下位アドレスから上位アドレスの順に、前記第1データを複数のバイトグループに分割し、前記複数のバイトグループのグループ数は第1データのデータ粒度と予め設定された粒度との比と同じであることと、前記複数のバイトグループに基づいて前記第3データを得ることとを含む。
【0383】
本開示の実施例において、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第3データを第2データに変換することは、前記バイト順変換ユニットにより前記第3データの各バイトグループにおけるバイト順を逆にして、各バイトグループの順番で前記第2データを得ることを含む。
【0384】
本開示の実施例において、前記方法は、前記制御信号に基づいて、第1データを記憶するための第1アドレス空間、及び第2データを記憶するための第2アドレス空間を取得することをさらに含み、前記データ変換モジュールは、前記第1アドレス空間に基づいて第1データを取得し、前記第1データを第2データに変換し、前記第2データを第2アドレス空間に記憶する。
【0385】
本開示の実施例において、前記方法は、前記制御信号に基づいて前記予め設定された演算命令を決定することと、前記予め設定された演算命令に基づいて前記第2データを演算処理するように演算モジュールを制御することとをさらに含む。
【0386】
本開示の実施例において、前記方法は、前記演算モジュールが予め設定された条件を満たすか否かを検出することと、条件を満たせば、前記予め設定された演算命令に基づいて前記第2データを演算処理するように前記演算モジュールを制御することとをさらに含む。
【0387】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールに空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断すること、及び/又は、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第2データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突でなければ、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【0388】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【0389】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【0390】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【0391】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、1つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【0392】
また、本出願の各実施例における各機能ユニットは、1つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、2つ以上のユニットが1つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【0393】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は1つのメモリに記憶され、1つのコンピュータ機器(パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい)に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【0394】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ(英語:Read-Only Memory、略称:ROM)、ランダムアクセスメモリ(英語:Random Access Memory、略称:RAM)、磁気ディスク又は光ディスクなどがある。
【0395】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。