(57)【要約】  本開示は、オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステムに関する。前記方法は、オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始することと、前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得することと、前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶することとを含む。本開示の実施例において、オンチッププロセッサは、オフチップメモリに記憶されている出力関数の出力情報に基づいて、オンチップコードの各ブレークポイントでの実行状況をリアルタイムで取得でき、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を達成でき、オンチップコードのデバッグ効率を向上させることができる。【選択図】図１−１
2021520566.tif 000002
【特許請求の範囲】
【請求項１】
オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始することと、
前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得することと、
前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶することとを含むことを特徴とするオンチップコードのブレークポイントによるデバッグ方法。
【請求項２】
前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記出力関数は、数値プリント関数又は文字列プリント関数を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記オンチッププロセッサにより、前記出力関数の出力情報を取得することは、
前記オンチッププロセッサにより、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記オンチッププロセッサは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力することをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、
前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することを含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することは、
前記オンチッププロセッサは第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、
前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、
前記オンチッププロセッサは第２スレッドを用いて前記オフチップメモリの状態識別子を確認することと、
前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記オンチッププロセッサは第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、
前記オンチッププロセッサは、ドライバプログラムにより前記第１スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、
前記オンチッププロセッサは第２スレッドを用いて前記オフチップメモリの状態識別子を確認することは、
前記オンチッププロセッサは、ＨＯＳＴプログラムにより前記第２スレッドを起動して前記オフチップメモリの状態識別子を確認することを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含むことを特徴とする請求項９又は１０に記載の方法。
【請求項１２】
前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、
前記オンチッププロセッサは第３スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、
前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとを含むことを特徴とする請求項６に記載の方法。
【請求項１３】
ブレークポイントに出力関数が設定されているオンチップコードの実行を開始するために用いられる開始モジュールと、
前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得するために用いられる出力情報取得モジュールと、
前記出力情報をオフチップメモリに記憶するために用いられる記憶モジュールとを含むことを特徴とするオンチッププロセッサ。
【請求項１４】
前記オンチッププロセッサは、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するために用いられるブレークポイントデバッグ結果確認モジュールを含むことを特徴とする請求項１３に記載のチップ。
【請求項１５】
前記出力関数は、数値プリント関数又は文字列プリント関数を含むことを特徴とする請求項１３に記載のチップ。
【請求項１６】
前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含むことを特徴とする請求項１３に記載のチップ。
【請求項１７】
前記出力情報取得モジュールは、前記オンチッププロセッサにより、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含むことを特徴とする請求項１３に記載のチップ。
【請求項１８】
前記オンチッププロセッサは、前記オフチップメモリ内の出力情報を出力するために用いられる出力モジュールをさらに含むことを特徴とする請求項１３に記載のチップ。
【請求項１９】
前記出力モジュールは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力するために用いられる第１出力サブモジュールを含むことを特徴とする請求項１８に記載のチップ。
【請求項２０】
前記出力モジュールは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するために用いられる第２出力サブモジュールを含むことを特徴とする請求項１８に記載のチップ。
【請求項２１】
前記第２出力サブモジュールは、
第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、
前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、
第２スレッドを用いて前記オフチップメモリの状態識別子を確認することと、
前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとに用いられることを特徴とする請求項２０に記載のチップ。
【請求項２２】
第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、
ドライバプログラムにより前記第１スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、
第２スレッドを用いて前記オフチップメモリの状態識別子を確認することは、
ＨＯＳＴプログラムにより前記第２スレッドを起動して前記オフチップメモリの状態識別子を確認することを含むことを特徴とする請求項２１に記載のチップ。
【請求項２３】
前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含むことを特徴とする請求項２１又は２２に記載のチップ。
【請求項２４】
前記出力モジュールは、
第３スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、
前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとに用いられる第３出力サブモジュールを含むことを特徴とする請求項１８に記載のチップ。
【請求項２５】
オンチップブレークポイントによるデバッグを行うための、請求項１３〜２４のいずれか一項に記載のオンチッププロセッサを含むブレークポイントデバッグチップと、
前記ブレークポイントデバッグチップの出力情報を記憶するために用いられるオフチップメモリとを含むことを特徴とするブレークポイントによるチップデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
「関連出願の相互参照」
本出願は、２０１８年９月７日に中国特許局に提出された、出願番号が２０１８１１０４５８２２．６であり、発明名称が「オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム」である中国特許出願の優先権を主張し、２０１８年７月１６日に中国特許局に提出された、出願番号が２０１８１０７７７６９３．３であり、発明名称が「データプロセッサ及びデータ処理方法」である中国特許出願の優先権を主張し、２０１８年７月１７日に中国特許局に提出された、出願番号が２０１８１０７８２１７４．６であり、発明名称が「演算装置及び演算方法」である中国特許出願の優先権を主張し、及び２０１８年６月２７日に中国特許局に提出された、出願番号が２０１８１０６８０４７２．４であり、発明名称が「データプロセッサ及びデータ処理方法」である中国特許出願の優先権を主張し、その全ての内容が援用により本出願に結合されている。
【０００２】
本開示は、人工知能技術の分野に関し、特にオンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステムに関するものである。
【背景技術】
【０００３】
従来のチップアルゴリズムのデバッグは、アルゴリズム結果のリアルタイム出力を実現できない。結果出力のためにチップアルゴリズム全体の結果を他のプラットフォームにコピーする必要がある。チップアルゴリズムのデバッグ中にデバッグを行うことができず、チップアルゴリズムのデバッグ効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで、本開示は、ブレークポイントによるチップデバッグ効率が低いという問題を解決するためのオンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステムを提案する。
【課題を解決するための手段】
【０００５】
本開示の一態様によれば、オンチップコードのブレークポイントによるデバッグ方法が提供され、前記方法は、オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始することと、前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得することと、前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶することとを含む。
【０００６】
１つの可能な実施形態では、前記方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認することをさらに含む。
【０００７】
１つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【０００８】
１つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【０００９】
１つの可能な実施形態では、前記オンチッププロセッサにより、前記出力関数の出力情報を取得することは、前記オンチッププロセッサにより、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含む。
【００１０】
１つの可能な実施形態では、前記方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することをさらに含む。
【００１１】
１つの可能な実施形態では、前記方法は、前記オンチッププロセッサは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力することをさらに含む。
【００１２】
１つの可能な実施形態では、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することを含む。
【００１３】
１つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力することは、前記オンチッププロセッサは第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、前記オンチッププロセッサは第２スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとを含む。
【００１４】
１つの可能な実施形態では、前記オンチッププロセッサは第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、前記オンチッププロセッサはドライバプログラムにより前記第１スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、前記オンチッププロセッサは第２スレッドを用いて前記オフチップメモリの状態識別子を確認することは、前記オンチッププロセッサはＨＯＳＴプログラムにより前記第２スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【００１５】
１つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【００１６】
１つの可能な実施形態では、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力することは、前記オフチップメモリは、受信した出力情報に基づいて割り込み関数をトリガしてハードウェア割り込み状態に入ることと、前記オンチッププロセッサは第３スレッドを用いてハードウェア割り込み状態又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとを含む。
【００１７】
本開示の一態様によれば、オンチッププロセッサが提供され、前記オンチッププロセッサは、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始するために用いられる開始モジュールと、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得するために用いられる出力情報取得モジュールと、前記出力情報をオフチップメモリに記憶するために用いられる記憶モジュールとを含む。
【００１８】
１つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するために用いられるブレークポイントデバッグ結果確認モジュールをさらに含む。
【００１９】
１つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【００２０】
１つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【００２１】
１つの可能な実施形態では、前記出力情報取得モジュールは、前記オンチッププロセッサにより、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含む。
【００２２】
１つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報を出力するために用いられる出力モジュールをさらに含む。
【００２３】
１つの可能な実施形態では、前記出力モジュールは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力するために用いられる第１出力サブモジュールを含む。
【００２４】
１つの可能な実施形態では、前記出力モジュールは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するために用いられる第２出力サブモジュールを含む。
【００２５】
１つの可能な実施形態では、前記第２出力サブモジュールは、第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、第２スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとに用いられる。
【００２６】
１つの可能な実施形態では、第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、ドライバプログラムにより前記第１スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、第２スレッドを用いて前記オフチップメモリの状態識別子を確認することは、ＨＯＳＴプログラムにより前記第２スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【００２７】
１つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【００２８】
１つの可能な実施形態では、前記出力モジュールは、第３スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとに用いられる第３出力サブモジュールを含む。
【００２９】
本開示の一態様によれば、ブレークポイントによるチップデバッグシステムが提供され、前記システムは、オンチップブレークポイントによるデバッグを行うための、上記のいずれか一項に記載のオンチッププロセッサを含むブレークポイントデバッグチップと、前記ブレークポイントデバッグチップの出力情報を記憶するために用いられるオフチップメモリとを含む。
【００３０】
本開示の実施例は、オンチップコードのブレークポイントに出力関数を設定することができる。オンチッププロセッサによりオンチップコードの実行を開始して出力関数を実行すると、オンチッププロセッサは、出力関数の出力情報を取得し、出力情報をオフチップメモリに記憶する。オンチッププロセッサは、オフチップメモリに記憶されている出力関数の出力情報に基づいて、オンチップコードの各ブレークポイントでの実行状況をリアルタイムで取得でき、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を実現でき、オンチップコードのデバッグ効率を向上させることができる。
【００３１】
また、本開示は、ネットワークモデルの計算ニーズに対応しつつ、装置の消費電力を低減してコストを低減することができるデータプロセッサ、チップ、電子機器及び処理方法を提案する。
【００３２】
本開示の一態様によれば、データプロセッサが提供され、前記データプロセッサは、ネットワークモデルの演算動作を実行するための演算子と演算データとを含む、受信したネットワークモデルデータを記憶するために用いられる記憶モジュールと、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当てるように構成されるタスク割り当てモジュールであって、第１フラグが割り当てられている演算子の演算難易度は、第２フラグが割り当てられている演算子の演算難易度よりも大きいタスク割り当てモジュールと、少なくとも１つのビッグコア演算ユニットと少なくとも１つのリトルコア演算ユニットとを含み、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行する演算モジュールとを含む。
【００３３】
本開示の実施例において、前記タスク割り当てモジュールはさらに、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第１フラグ又は第２フラグを割り当てるように構成され、及び／又は、前記ネットワークモデルは、ニューラルネットワークモデルを含む。
【００３４】
本開示の実施例において、前記タスク割り当てモジュールはさらに、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成するように構成され、ビッグコア演算ユニットが各演算子を実行する第１演算時間とリトルコア演算ユニットが各演算子を実行する第２演算時間とをそれぞれ取得し、前記第１演算時間を各ノードの遅延時間とし、クリティカルパス法を用いて、各ノードに対応する演算子に第１フラグが割り当てられている第１クリティカルパスを決定するように構成される。
【００３５】
本開示の実施例において、前記記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択するように構成される記憶割り当てモジュールをさらに含む。
【００３６】
本開示の実施例において、前記記憶割り当てモジュール及び記憶モジュールにそれぞれ接続され、前記ネットワークモデルデータを記憶モジュールに伝送して記憶し、前記演算モジュールの演算結果をメモリに伝送するために用いられるダイレクトメモリアクセスモジュールをさらに含む。
【００３７】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び／又はデータ時効性を含む優先度情報が含まれ、前記データプロセッサは、前記各演算子及びそれに対応する第１フラグ又は第２フラグをキャッシュするように構成されるキャッシュモジュールと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記演算モジュールを制御するように構成されるスケジューリングモジュールとをさらに含む。
【００３８】
本開示の実施例において、前記演算モジュールは、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも１つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも１つの従演算ユニットが接続され、前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニットを介して、演算命令及びデータブロックを対応する従演算ユニットに伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、前記分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び中間結果を伝送するように構成され、前記従演算ユニットは、受信した演算命令に従ってデータブロックを演算して中間結果を得、中間結果を前記分岐演算ユニットに伝送するように構成される。
【００３９】
前記演算モジュールは、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、ｍ行ｎ列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第１行のｎ個の従演算ユニットと、第ｍ行のｎ個の従演算ユニットと、第１列のｍ個の従演算ユニットとを含むＫ個の従演算ユニットに接続され、ここで、ｍ及びｎは１よりも大きい正の整数で、Ｋは正の整数であり、前記主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも１つのデータブロック及び複数の演算命令のうちの少なくとも１つの演算命令を前記Ｋ個の従演算ユニットに送信して中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、本開示の実施例において、前記Ｋ個の従演算ユニットは、前記主演算ユニットと残りの従演算ユニットとの間でデータブロック、演算命令及び中間結果を伝送するように構成され、前記残りの従演算ユニットは、当該演算命令に従って受信したデータブロックを演算して中間結果を得、演算結果を対応して接続されている前記Ｋ個の従演算ユニットに伝送するように構成される。
【００４０】
本開示の実施例において、前記演算モジュールは、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールを含むように構成され、前記ツリー型モジュールは、１つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの１つの従演算ユニットにそれぞれ接続される。
【００４１】
本開示の一態様によれば、上記の実施例に記載のデータプロセッサを含むデータ処理チップが提供される。
【００４２】
本開示の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【００４３】
本開示の一態様によれば、データプロセッサに適用されるデータ処理方法が提供され、前記方法は、ネットワークモデルの演算動作を実行するための演算子と演算データとを含むネットワークモデルデータを受信して記憶することと、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当て、第１フラグが割り当てられている演算子の演算難易度は、第２フラグが割り当てられている演算子の演算難易度よりも大きいことと、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することとを含む。
【００４４】
本開示の実施例において、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当てることは、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第１フラグ又は第２フラグを割り当てることを含む。
【００４５】
本開示の実施例において、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算される場合の演算時間に基づいて、各演算子にフラグを割り当てることは、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成することと、ビッグコア演算ユニットが各演算子を実行する第１演算時間と、リトルコア演算ユニットが各演算子を実行する第２演算時間をそれぞれ取得することと、前記第１演算時間を各ノードの遅延時間とし、第１クリティカルパス法を用いて、各ノードに対応する演算子に第１フラグが割り当てられている第１クリティカルパスを決定することとを含む。
【００４６】
本開示の実施例において、ネットワークモデルデータを受信して記憶することは、記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択することを含む。
【００４７】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び／又はデータ時効性を含む優先度情報が含まれ、前記方法は、前記各演算子及びそれに対応する第１フラグ又は第２フラグをキャッシュすることと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記ビッグコア演算ユニット又はリトルコア演算ユニットを制御することとをさらに含む。
【００４８】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも１つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも１つの従演算ユニットが接続され、ここで、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割することと、分岐演算ユニットは、演算命令及びデータブロックを対応する従演算ユニットに伝送することと、従演算ユニットは、受信した演算命令及びデータブロックを演算して中間結果を得、分岐演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【００４９】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、ｍ行ｎ列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第１行のｎ個の従演算ユニットと、第ｍ行のｎ個の従演算ユニットと、第１列のｍ個の従演算ユニットとを含むＫ個の従演算ユニットに接続され、ここで、ｍ及びｎは１よりも大きい正の整数で、Ｋは正の整数であり、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも１つのデータブロック及び複数の演算命令のうちの少なくとも１つの演算命令を前記Ｋ個の従演算ユニットに送信することと、Ｋ個の従演算ユニット以外の残りの従演算ユニットは、Ｋ個の従演算ユニットから受信した演算命令及びデータブロックを演算して中間結果を得、Ｋ個の従演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【００５０】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールとを含むように構成され、前記ツリー型モジュールは、１つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの１つの従演算ユニットにそれぞれ接続され、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットは、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記データブロック及び演算命令をツリー型モジュールのルートポートに伝送することと、ツリー型モジュールの各分岐ポートに接続される従演算ユニットは、受信した演算命令及びデータブロックに基づいて演算を実行して中間結果を得、ツリー型モジュールを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【００５１】
本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行することにより、ビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【００５２】
本開示の実施例は、コストを低減し、帯域幅の要求を低減することができる技術的解決手段を提案し、演算装置、データ処理チップ、電子機器及び演算方法を提案する。
【００５３】
本開示の一態様によれば、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含む演算装置が提供され、前記演算モジュールは、第１演算サブデータを用いて第１演算サブコマンドを実行するように構成される少なくとも１つの演算ユニットと、前記第１演算サブコマンドを実行するためのデータを含む前記第１演算サブデータを少なくとも記憶するために用いられる記憶ユニットとを含む。本開示の実施例において、少なくとも２つの演算モジュール間にデータ接続が存在し、一方の演算モジュールは、前記第１演算サブデータ及び他方の演算モジュールの第２演算サブデータを用いて前記第１演算サブコマンドを実行するように構成され、前記第２演算サブデータは当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び／又は当該他方の演算モジュールの演算ユニットによって生成されたデータを含む。
【００５４】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てるように構成される制御モジュールをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【００５５】
本開示の実施例において、前記制御モジュールは、演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算するように構成される第１割り当てユニットと、各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶するように構成される第２割り当てユニットとを含む。
【００５６】
本開示の実施例において、前記制御モジュールは、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続するようにさらに構成される。
【００５７】
本開示の実施例において、前記演算ユニットは、ネットワークプロセッサ又はコンピュータ機器を含む。
【００５８】
本開示の実施例において、前記記憶ユニットは、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも１つを含む。
【００５９】
本開示の一態様によれば、上記の実施例に記載の演算装置を含むデータ処理チップが提供される。
【００６０】
本開示の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【００６１】
本開示の一態様によれば、演算装置に適用される演算方法が提供され、前記演算装置は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、前記方法は、各演算モジュールの記憶ユニットにより第１演算サブコマンドを実行するためのデータを含む第１演算サブデータを記憶することと、各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行することとを含む。
【００６２】
本開示の実施例において、各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行することは、前記第１演算サブデータ及び他方の演算モジュールの第２演算サブデータを用いて第１演算サブコマンドを実行することをさらに含み、前記第２演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び／又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含む。
【００６３】
本開示の実施例において、前記方法は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【００６４】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、第１割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、第２割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含む。
【００６５】
本開示の実施例において、前記方法は、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含む。
【００６６】
本開示の実施例において、各演算モジュールに必要なデータを１つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させる構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができ、また、本開示の実施例は、演算装置の拡張性を向上させることができ、演算機能に対応する演算モジュールを追加することにより、演算装置の演算機能を容易に拡張することができる。
【００６７】
本開示の実施例は、適用性に優れ、コストを低減することができるデータプロセッサ、チップ、電子機器及びデータ処理方法をさらに提案する。
【００６８】
本開示の一態様によれば、データプロセッサが提供され、前記データプロセッサは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて、第１データを第２データに変換するように構成されるデータ変換モジュールと、受信した制御信号に基づいて、前記第１データのデータ形式が予め設定されたデータ形式と異なると確認した場合、前記第１データを第２データに変換するようにデータ変換モジュールを制御するように構成される制御モジュールとを含む。
【００６９】
いくつかの実施例において、前記データ変換モジュールは、データを予め設定された粒度に対応するデータに変換するように構成されるグループ化ユニットと、データを予め設定されたバイト順に対応するデータに変換するように構成されるバイト順変換ユニットとを含み、前記制御モジュールは、前記第１データのデータ粒度が前記予め設定された粒度と異なり、かつ前記第１データのバイト順が前記予め設定されたバイト順と異なる場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを第３データに変換し、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第３データを第２データに変換するか、又は、前記第１データのデータ粒度が前記予め設定された粒度と同じであり、且つ第１データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第１データを第２データに変換するか、又は、前記第１データのデータ粒度が前記予め設定された粒度と異なり、且つ第１データのバイト順が前記予め設定されたバイト順と同じである場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを第２データに変換するようにさらに構成される。
【００７０】
いくつかの実施例において、前記制御モジュールは、受信した制御信号に基づいて前記第１データのバイト順を決定し、前記第１データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいて前記第１データのデータ変換を実行するようにデータ変換モジュールを制御するように構成されるバイト順制御ユニットを含む。
【００７１】
いくつかの実施例において、前記グループ化ユニットは、前記第１データのデータ粒度と予め設定された粒度との比に基づいて、前記第１データを複数のバイトグループに分割するようにさらに構成され、前記複数のバイトグループは前記第３データ又は第２データとされ、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。
【００７２】
いくつかの実施例において、前記グループ化ユニットは、前記第１データのアドレス空間の下位アドレスから上位アドレスの順に、前記第１データを複数のバイトグループに分割するようにさらに構成され、前記複数のバイトグループのグループ数は第１データのデータ粒度と予め設定された粒度との比である。
【００７３】
いくつかの実施例において、前記バイト順変換ユニットは、第１データ又は第３データの各バイトグループのバイト順を逆にして、各バイトグループの順番で前記第２データを取得するようにさらに構成され、ここで、各バイトグループのデータ粒度は、予め設定された粒度と同じである。
【００７４】
いくつかの実施例において、前記制御モジュールは、前記制御信号に基づいて、第１データを記憶するための第１アドレス空間、及び第２データを記憶するための第２アドレス空間を取得し、前記データ変換モジュールは、前記第１アドレス空間に基づいて第１データを取得し、前記第１データを第２データに変換し、前記第２データを第２アドレス空間に記憶する。
【００７５】
いくつかの実施例において、予め設定された演算命令に従って前記第２データを演算処理するように構成される演算モジュールをさらに含み、前記制御モジュールは、前記制御信号に基づいて前記予め設定された演算命令を決定し、前記予め設定された演算命令に基づいて前記第２データの演算処理を行うように前記演算モジュールを制御するようにさらに構成される。
【００７６】
いくつかの実施例において、前記制御モジュールは、前記演算モジュールが予め設定された条件を満たすか否かを検出し、満たされば、前記第２データを演算処理するように前記演算モジュールを制御するように構成される検出ユニットをさらに含む。
【００７７】
いくつかの実施例において、前記演算モジュールは、複数の演算ユニットを含み、前記検出ユニットはさらに、空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断するように構成される。
【００７８】
いくつかの実施例において、前記検出ユニットはさらに、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第２データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突しなければ、前記演算モジュールが予め設定された条件を満たすと判断するように構成される。
【００７９】
いくつかの実施例において、記憶モジュールをさらに含み、前記制御モジュールはさらに、前記制御信号、前記制御信号に基づいて決定された前記第１データの第１アドレス空間、第１データの粒度情報、及び予め設定された粒度情報を前記記憶モジュールに記憶するように構成される。
【００８０】
本開示の実施例の一態様によれば、上記の実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップが提供される。
【００８１】
本開示の実施例の一態様によれば、上記の実施例に記載のデータ処理チップを含む電子機器が提供される。
【００８２】
本開示の実施例の一態様によれば、データプロセッサに適用されるデータ処理方法が提供され、制御信号を受信することと、受信した制御信号に基づいて、第１データのデータ形式が予め設定されたデータ形式と異なると確認した場合、前記第１データを第２データに変換するようにデータ変換モジュールを制御することとを含み、前記データ変換モジュールは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第１データを第２データに変換するように構成される。
【００８３】
本開示の実施例において、前記データ変換モジュールは、グループ化ユニットと、バイト順変換ユニットとを含み、前記第１データを第２データに変換するようにデータ変換モジュールを制御することは、前記第１データのデータ粒度が前記予め設定された粒度と異なる場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを第３データに変換し、前記第１データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第３データを第２データに変換するか、又は、前記第１データのデータ粒度が前記予め設定された粒度と同じであり、且つ第１データのバイト順が前記予め設定されたバイト順と異なる場合、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第１データを第２データに変換するか、又は、前記第１データのデータ粒度が前記予め設定された粒度と異なり、且つ第１データのバイト順が前記予め設定されたバイト順と同じである場合、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを第２データに変換することを含む。
【００８４】
本開示の実施例において、前記方法は、受信した制御信号に基づいて前記第１データのバイト順を決定し、前記第１データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいて前記第１データのデータ変換を実行するようにデータ変換モジュールを制御することをさらに含む。
【００８５】
本開示の実施例において、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを第３データ又は第２データに変換することは、グループ化ユニットにより前記第１データのデータ粒度と予め設定された粒度との比に基づいて、前記第１データを複数のバイトグループに分割することを含み、複数のバイトグループは前記第３データ又は前記第２データとされ、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。
【００８６】
本開示の実施例において、前記第１データのデータ粒度と予め設定された粒度との比に基づいて前記第１データを複数のバイトグループに分割することは、前記第１データのアドレス空間の下位アドレスから上位アドレスの順に、前記第１データを複数のバイトグループに分割することを含み、前記複数のバイトグループのグループ数は、第１データのデータ粒度と予め設定された粒度との比と同じである。
【００８７】
本開示の実施例において、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第３データ又は前記第１データを第２データに変換することは、前記バイト順変換ユニットにより第１データ又は第３データの各バイトグループのバイト順を逆にして、各バイトグループの順番で前記第２データを取得することを含み、各バイトグループのデータ粒度は、予め設定された粒度と同じである。
【００８８】
本開示の実施例において、前記方法は、前記制御信号に基づいて、第１データを記憶するための第１アドレス空間、及び第２データを記憶するための第２アドレス空間を取得することをさらに含み、前記データ変換モジュールは、前記第１アドレス空間に基づいて第１データを取得し、前記第１データを第２データに変換し、前記第２データを第２アドレス空間に記憶する。
【００８９】
本開示の実施例において、前記方法は、前記制御信号に基づいて前記予め設定された演算命令を決定することと、前記予め設定された演算命令に基づいて前記第２データを演算処理するように演算モジュールを制御することとをさらに含む。
【００９０】
本開示の実施例において、前記方法は、前記演算モジュールが予め設定された条件を満たすか否かを検出することと、満たされば、前記予め設定された演算命令に基づいて前記第２データを演算処理するように前記演算モジュールを制御することとをさらに含む。
【００９１】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールに空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【００９２】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第２データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突しなければ、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【発明の効果】
【００９３】
本開示の実施例によれば、他の変換デバイスを用いてデータ変換を実行することなく、データプロセッサ内にデータ変換モジュールを設置することによりデータを所望の形式に容易に変換することができ、他の変換デバイスの使用コストを低減するとともに、データ変換モジュールの設置によりデータプロセッサが多様なデータ形式に適用することができ、良好な適用性を有する。
【００９４】
本開示の他の特徴及び態様は、添付の図面を参照しながら以下の例示的な実施例を詳細に説明することにより明らかになる。
【図面の簡単な説明】
【００９５】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本明細書と併せて本開示の例示的な実施例、特徴及び態様を示しており、本開示の原理を説明するために用いられる。
【図１−１】図１−１は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【図１−２】図１−２は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【図１−３】図１−３は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【図１−４】図１−４は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【図１−５】図１−５は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法におけるステップＳ５１のフローチャートを示す。
【図１−６】図１−６は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。
【図１−７】図１−７は、本開示の一実施例による、オンチッププロセッサのブロック図を示す。
【図１−８】図１−８は、本開示の一実施例による、ブレークポイントによるチップデバッグシステムのブロック図を示す。
【図２−１】図２−１は、本開示の実施例による、データプロセッサのブロック図を示す。
【図２−２】図２−２は、本開示の実施例による、ネットワークモデルの演算子の計算モデル図を示す。
【図２−３】図２−３は、本開示の実施例による、データプロセッサのブロック図を示す。
【図２−４】図２−４は、本開示の実施例による、データプロセッサのブロック図を示す。
【図２−５】図２−５は、本開示の実施例による、データ処理方法のフローチャートを示す。
【図２−６】図２−６は、本開示の実施例による、電子機器のブロック図を示す。
【図２−７】図２−７は、本開示の実施例による、Ｈ型構造として構成される演算ユニットのブロック図を示す。
【図２−８】図２−８は、本開示の実施例による、パルスアレイマシン構造として構成される演算ユニットのブロック図を示す。
【図２−９】図２−９は、本開示の実施例による、ツリー構造として構成される演算ユニットのブロック図を示す。
【図２−１０】図２−１０は、本開示の実施例による、２分木構造として構成される演算ユニットのブロック図を示す。
【図３−１】図３−１は、本開示の実施例による、演算装置のブロック図を示す。
【図３−２】図３−２は、本開示の実施例による、演算装置のブロック図を示す。
【図３−３】図３−３は、本開示の実施例による、制御モジュールのブロック図を示す。
【図３−４】図３−４は、本開示の実施例による、演算方法のフローチャートを示す。
【図３−５】図３−５は、本開示の実施例による、Ｈ型構造として構成される演算モジュールのブロック図を示す。
【図３−６】図３−６は、本開示の実施例による、パルスアレイマシン構造の演算モジュールのブロック図を示す。
【図３−７】図３−７は、本開示の実施例による、ツリー構造として構成される演算モジュールのブロック図を示す。
【図３−８】図３−８は、本開示の実施例による、２分木構造として構成される演算ユニットのブロック図を示す。
【図４−１】図４−１は、本開示の実施例による、データプロセッサのブロック図を示す。
【図４−２】図４−２は、本開示の実施例による、データプロセッサにおけるデータ変換モジュールのブロック図を示す。
【図４−３】図４−３は、本開示の実施例による、データプロセッサにおける制御モジュールのブロック図を示す。
【図４−４】図４−４は、本開示の実施例による、データプロセッサのブロック図を示す。
【図４−５】図４−５は、本開示の実施例による、データ処理方法のフローチャートを示す。
【図４−６】図４−６は、本開示の実施例による、グループ化ユニットのブロック構造図を示す。
【発明を実施するための形態】
【００９６】
以下、本開示の実施例における技術的解決手段を、本開示の実施例における添付の図面を参照して、明確で完全に説明する。記載する実施例が本開示の全ての実施例ではなく、単なる一部にすぎないことは明らかである。当業者によって本開示の実施例に基づいて創造的な労力なしに得られる全ての他の実施例は、本開示の保護範囲に属する。
【００９７】
本開示の特許請求の範囲、明細書及び図面における用語「第１」、「第２」、「第３」及び「第４」などは、異なる対象を区分するためのものであり、特定の順序を説明するためのものではないことが理解されたい。本開示の明細書及び特許請求の範囲で使用される用語「含む」及び「包含する」は、記述された特徴、全体、ステップ、操作、要素及び／又は構成要素の存在を示すが、１つ以上の他の特徴、全体、ステップ、操作、要素、構成要素及び／又はそれらの集合の存在又は追加を排除するものではない。
【００９８】
本開示の明細書で使用される用語は、特定の実施例を説明するためのものにすぎず、本開示を限定するものではないことも理解されたい。本開示の明細書及び特許請求の範囲で使用されるように、単数形の「１つの（ａ）」、「１つの（ａｎ）」及び「この（ｔｈｅ）」は、文脈上で明記されない限り、複数形を含むことを意図している。さらに、本開示の明細書及び特許請求の範囲で使用される用語「及び／又は」は、関連して列挙された項目のうちの１つ以上の任意の組み合わせ、及び可能な組み合わせの全てを意味し、これらの組み合わせを含むことが理解されたい。
【００９９】
本明細書及び特許請求の範囲で使用されるように、用語「場合に」は、文脈に応じて「…時に」、「と」、「と判定したことに応じて」、又は「を検出したことに応じて」を意味すると解釈することができる。同様に、語句「と判定される場合に」又は「［記述される条件又はイベント］が検出された場合に」は、文脈に応じて「と判定されると」、又は「と判定したことに応じて」、又は「［記述される条件又はイベント］が検出されると」、又は「［記述される条件又はイベント］を検出したことに応じて」を意味すると解釈することができる。
【０１００】
図１−１は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。図１−１に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、ステップＳ１０〜ステップＳ３０を含む。
【０１０１】
ステップＳ１０において、オンチッププロセッサにより、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始する。
【０１０２】
１つの可能な実施形態では、Ｃ言語、Ｃ＋＋言語など機械命令を生成できる任意の言語でアプリケーションプログラムを作成し、オンチッププロセッサは、前記アプリケーションプログラムを利用して本開示の実施例におけるオンチップコードのブレークポイントによるデバッグ方法を実現するようにしてもよい。前記アプリケーションプログラムをオンチップシステムに設定することができる。オンチッププロセッサは、オンチップコードの実行中に前記アプリケーションプログラムを実行することができる。
【０１０３】
１つの可能な実施形態では、オンチップコードは、オンチップシステムで実行可能なコードである。オンチップシステムは、単一又は複数のチップに集積されたハードウェアシステムであってもよく、コードを実行することによりコードの論理的機能を実現することができる。例えば、オンチップコードは、ｋｅｒｎｅｌ関数などの様々な種類の機能関数を含むことができる。出力関数は、オンチップコードの実行を中断することなく情報を出力することができる。本開示は、オンチップコードの種類及び内容を限定しない。オンチッププロセッサは、起動コマンドに従ってオンチップコードの実行を開始することができる。
【０１０４】
１つの可能な実施形態では、デバッグ要件に応じて、オンチップコード内で１つ以上のブレークポイントを人為的に決定することができる。オンチップコードのブレークポイントに出力関数を設定することができる。
【０１０５】
１つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【０１０６】
１つの可能な実施形態では、出力関数は、数値プリント関数を含むことができる。数値プリント関数は、予め設定された数値をプリントするために用いられてもよいし、取得した数値をプリントするために用いられてもよい。例えば、予め設定された数値は、二進数「０１０１１」である。数値プリント関数を実行すると、二進数「０１０１１」をプリントすることができる。
【０１０７】
１つの可能な実施形態では、出力関数は、文字列プリント関数を含むことができる。文字列プリント関数は、予め設定された文字列をプリントするために用いられてもよいし、取得した文字列をプリントするために用いられてもよい。
【０１０８】
１つの可能な実施形態では、数値プリント関数及び文字列プリント関数をオンチップコードに設定することができる。数値プリント関数と文字列プリント関数のいずれか一方のみをオンチップコードに設定することも可能である。オンチップコードに複数の数値プリント関数又は複数の文字列プリント関数が含まれる場合、複数の数値プリント関数又は複数の文字列プリント関数は同一であっても異なってもよい。
【０１０９】
１つの可能な実施形態では、前記オンチップコードのブレークポイントに出力関数が設定されていることは、前記オンチップコードの複数のブレークポイントのそれぞれに出力関数が設定されていることを含む。
【０１１０】
１つの可能な実施形態では、各ブレークポイントにそれぞれ出力関数を設定することができる。複数のブレークポイントでの出力関数は同一であっても異なってもよい。
【０１１１】
１つの可能な実施形態では、オンチップコードの実行が正常である場合、各ブレークポイントでの出力関数は正常に実行され、正常に情報を出力することができる。オンチップコードの実行が異常である場合、実行異常部分のコードに関する出力関数は、正常に情報を出力できなくなるか、又は、実行状態が異常であることを示す情報を出力する。
【０１１２】
例えば、オンチップコードには、サブコード１、サブコード２、サブコード３…という複数のサブコードが含まれてもよい。各サブコードに、出力関数１、出力関数２、出力関数３…のようにそれぞれ出力関数を設定できる（例えば、サブコードの終了箇所にブレークポイントを設定し、ブレークポイントに出力関数を設定できる）。各出力関数は、予め設定された数値を出力するために使用される。出力関数１は、数値「１」を出力するために用いられ、出力関数２は、数値「２」を出力するために用いられ、出力関数３は、数値「３」を出力するために用いられる…。オンチップコードの実行中に、サブコード３から正常に実行されず、出力関数３から出力関数も正常に実行されないと仮定すると、出力関数３から出力関数が正常に情報を出力できなくなる。最終的に、オンチップコードの出力関数の出力情報は、数値「１」と数値「２」のみである。
【０１１３】
各出力関数は、それに対応するサブコードの実行状態を出力するために用いられてもよい。サブコードの実行が正常である場合、対応する出力関数は、状態値「０」を出力するようにしてもよい。サブコードの実行が異常である場合、対応する出力関数は、状態値「１」を出力するようにしてもよい。オンチップコードの実行中に、実行異常のサブコードに関する出力関数は、状態値「１」を出力する。
【０１１４】
ステップＳ２０において、前記オンチッププロセッサにより、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得する。
【０１１５】
１つの可能な実施形態では、オンチッププロセッサによるオンチップコードの実行中に、出力関数が実行されると、出力関数から出力情報をオンチップシステムのＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ランダムアクセスレジスタ）に出力することができる。
【０１１６】
１つの可能な実施形態では、オンチッププロセッサは、前記出力関数の出力情報を取得することは、オンチッププロセッサは、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含む。
【０１１７】
１つの可能な実施形態では、オンチッププロセッサは、ＲＡＭから出力関数の出力情報をリアルタイムで取得してもよい。オンチッププロセッサは、ＲＡＭから出力関数の出力情報を周期的に取得してもよい。また、オンチッププロセッサは、取得命令に従ってＲＡＭから出力関数の出力情報を取得してもよい。
【０１１８】
１つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報を含む。
【０１１９】
１つの可能な実施形態では、出力関数は、予め設定された数値情報又は文字列情報を出力することができる。異なるブレークポイントでの異なる出力関数に、同じ出力情報を設定し、即ち同じ数値情報又は文字列情報を予め設定することができる。例えば、各ブレークポイントでの出力関数の出力情報は、いずれも二進数の数値１である。異なるブレークポイントでの異なる出力関数に、異なる出力情報を予め設定し、即ち異なる数値情報又は文字列情報を予め設定することもできる。例えば、最初の出力関数の出力情報は二進数の数値１であり、２番目の出力関数の出力情報は二進数の数値２であるなどように設定する。
【０１２０】
１つの可能な実施形態では、前記出力情報は、前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【０１２１】
１つの可能な実施形態では、出力関数は、取得した数値情報又は文字列情報を出力することができる。出力関数は、オンチップコード内の他の関数の出力情報を取得し、他の関数の出力情報を出力することができる。例えば、オンチップコードは、ニューラルネットワークの演算に使用することができる。オンチップコードがニューラルネットワークの相関計算を完了するために使用される場合、ニューラルネットワークの計算途中の中間結果を出力するために、オンチップコードに複数の出力関数を設定することができる。ニューラルネットワークは、複数の畳み込み層を含み、各畳み込み層の出力データは、ニューラルネットワークの計算途中の中間結果であるようにしてもよい。オンチップコードには、各畳み込み層に対応する複数の関数が含まれてもよい。オンチップコードの実行中に、各畳み込み層に対応する関数は、各畳み込み層の出力データを予め設定された記憶アドレスに出力することができ、出力関数は、予め設定された記憶アドレスに記憶されている各畳み込み層の出力データを出力することができる。例えば、オンチップコードには、それぞれ１層目から３層目の畳み込み演算に用いられる畳み込み演算関数１、畳み込み演算関数２、及び畳み込み演算関数３が含まれてもよい。オンチップコードは、各畳み込み演算関数の計算結果を予め設定された記憶アドレスに記憶することができる。オンチップコードは、各畳み込み演算関数に対応して、予め設定された記憶アドレス内の各畳み込み演算関数の出力データを出力する出力関数を含むことができる。
【０１２２】
ステップＳ３０において、前記オンチッププロセッサにより、前記出力情報をオフチップメモリに記憶する。
【０１２３】
１つの可能な実施形態では、オンチッププロセッサは、オンチップシステムのＲＡＭから取得された出力関数の出力情報を、オフチップメモリにリアルタイムで記憶することができる。オフチップメモリは、任意のオフチップストレージ、例えば、磁気ディスク（不揮発性）、ネットワークストレージなどを含むことができる。
【０１２４】
１つの可能な実施形態では、前記オフチップメモリは、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ、ダブルデータレート）メモリを含む。
【０１２５】
１つの可能な実施形態では、オフチップメモリ内に記憶されている出力情報は、オンチップコードの実行状況を分析するために使用されてもよい。オフチップメモリ内の出力情報がオンチップコードの各出力関数の正常な出力情報である場合に、オンチップコードの実行が正常であるとみなすことができ、そうでない場合に、オンチップコードの実行が異常であるとみなすことができる。
【０１２６】
１つの可能な実施形態では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて各出力関数の実行状況を確認することができる。オンチッププロセッサは、各出力関数の実行状況に基づいてオンチップコードの実行状況を得ることができ、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を達成する。
【０１２７】
本実施例では、オンチップコードのブレークポイントに出力関数を設定する。オンチッププロセッサによりオンチップコードの実行を開始して出力関数を実行すると、オンチッププロセッサは、出力関数の出力情報を取得し、出力情報をオフチップメモリに記憶する。オンチッププロセッサは、オフチップメモリに記憶されている出力関数の出力情報に基づいて、オンチップコードの各ブレークポイントでの実行状況をリアルタイムで取得でき、オンチップコードに複数のブレークポイントを同時に打ってデバッグするという目的を達成でき、オンチップコードのデバッグ効率を向上させることができる。
【０１２８】
図１−２は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。図１−２に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するステップＳ４０をさらに含む。
【０１２９】
１つの可能な実施形態では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて各出力関数の実行状況を確認することができる。オンチッププロセッサは、各出力関数の出力情報と、予め設定された、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係に基づいて、オンチップコードのブレークポイントによるデバッグの結果を得ることができる。例えば、オンチップコードに３つの出力関数が含まれて、正常実行の場合、３つの出力関数の出力情報はいずれも予め設定された数値「０」となる。予め設定された、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係は、オフチップメモリ内の出力情報の「０、０、０」がオンチップコードのブレークポイントによるデバッグの結果が「正常」であることに対応し、オフチップメモリ内の出力情報の「０、０、１」がオンチップコードのブレークポイントによるデバッグの結果が「３番目のブレークポイントで異常に実行される」ことに対応するなどを含むことができる。オンチップコード及び出力関数の実際の内容に基づいて、出力情報とブレークポイントによるデバッグの結果との間のマッピング関係を決定することができる。
【０１３０】
本実施例では、オンチッププロセッサは、オフチップメモリ内の出力情報に基づいて、オンチップコードのブレークポイントによるデバッグの結果を確認することができる。オンチッププロセッサがブレークポイントによるデバッグの結果を直接に確認することにより、オンチップコードのデバッグ効率を向上させることができる。
【０１３１】
図１−３は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。図１−３に示すように、前記オンチップコードのブレークポイントによるデバッグ方法は、前記オンチッププロセッサにより、前記オフチップメモリ内の出力情報を出力するステップＳ５０をさらに含む。
【０１３２】
１つの可能な実施形態では、オンチッププロセッサは、ドライバ（ｄｒｉｖｅｒ）プログラムによりオフチップメモリ内の出力情報を出力することができる。オンチッププロセッサは、オフチップメモリ内の出力情報を出力することにより、オンチップコードのデバッグ結果を提示し、デバッグ者がデバッグプロセスを監視しやすいようにすることができる。
【０１３３】
１つの可能な実施形態では、スクリーンに表示する方式を利用して、オフチップメモリ内の出力情報を出力することができる。プリントなどの他の方式を利用して、オフチップメモリ内の出力情報を出力することもできる。本開示は、オフチップメモリ内の出力情報の出力方式を限定しない。
【０１３４】
１つの可能な実施形態では、オフチップメモリ内の出力情報をリアルタイムで出力することができ、デバッグ者が出力情報に基づいてオンチップコードの実行が異常であると判断した場合、オンチップコードの実行を終了してデバッグすることができ、オンチップコードのデバッグ効率を向上させることができる。
【０１３５】
本実施例では、オフチップメモリの出力情報を出力することができる。デバッグ者が出力情報に基づいてオンチップコードの実行状況をリアルタイムで監視することができ、これによりオンチップコードのデバッグ効率を向上させることができる。
【０１３６】
図１−４は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。図１−４に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップＳ５０は、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するステップＳ５１を含む。
【０１３７】
１つの可能な実施形態では、オンチップコードに複数の出力関数が含まれてもよい。オフチップメモリ内の出力情報は、複数の出力関数の出力情報であってもよい。オフチップメモリ内の出力情報が更新された場合、即ち、新たな出力関数の出力情報があった場合、更新された出力情報を出力することができる。
【０１３８】
本実施例では、出力情報が更新された場合に出力することにより、出力情報の出力効率を向上させることができる。
【０１３９】
図１−５は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法におけるステップＳ５１のフローチャートを示す。図１−５に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップＳ５１は、ステップＳ５１１〜ステップＳ５１４を含む。
【０１４０】
ステップＳ５１１において、前記オンチッププロセッサは第１スレッドを用いて前記オフチップメモリ内の出力情報を確認する。
【０１４１】
１つの可能な実施形態では、オンチッププロセッサは、第１スレッドを起動して、オフチップメモリ内の出力情報が更新されたか否かを確認することができる。ドライバ（ｄｒｉｖｅｒ）プログラムにより第１スレッドを起動してオフチップメモリ内の出力情報を確認することができる。
【０１４２】
１つの可能な実施形態では、オンチッププロセッサは、第１確認周期に基づいて、第１スレッドを用いてオフチップメモリ内の出力情報を周期的に確認することができる。
【０１４３】
ステップＳ５１２において、前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新する。
【０１４４】
１つの可能な実施形態では、オフチップメモリに状態識別子を設定することができる。状態識別子は、数値又は文字列を含むことができる。オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含むことができる。例えば、数値「０」で読み取り済みを示し、数値「１」で未読み取りを示すことができる。
【０１４５】
１つの可能な実施形態では、第１スレッドは、オフチップメモリ内の出力情報の更新を確認した場合、オフチップメモリの状態識別子を更新することができる。第１スレッドは、オフチップメモリの状態識別子を「読み取り済み識別子」から「未読み取り識別子」に更新することができる。
【０１４６】
ステップＳ５１３において、前記オンチッププロセッサは第２スレッドを用いて前記オフチップメモリの状態識別子を確認する。
【０１４７】
１つの可能な実施形態では、オンチッププロセッサは、ＨＯＳＴプログラムにより第２スレッドを起動してオフチップメモリの状態識別子を確認することができる。オンチッププロセッサは、第２確認周期に基づいて、前記第２スレッドを用いてオフチップメモリの状態識別子を確認することができる。必要に応じて第１確認周期及び第２確認周期の期間を決定することができる。
【０１４８】
ステップＳ５１４において、前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力する。
【０１４９】
１つの可能な実施形態では、第２スレッドは、オフチップメモリの状態識別子の更新を確認した場合、例えば、オフチップメモリの状態識別子の「読み取り済み識別子」から「未読み取り識別子」への更新を確認した場合、オフチップメモリ内の更新された出力情報を出力することができる。
【０１５０】
１つの可能な実施形態では、第２スレッドは、オフチップメモリ内の更新された出力情報を出力した後、オフチップメモリの状態識別子を「未読み取り識別子」から「読み取り済み識別子」に更新することができる。
【０１５１】
１つの可能な実施形態では、ｄｒｉｖｅｒとＨＯＳＴプログラムが互いに連携することで、オフチップメモリ内の出力情報が更新された場合、オフチップメモリ内の出力情報をタイムリーかつ効率的に出力することができる。
【０１５２】
図１−６は、本開示の一実施例による、オンチップコードのブレークポイントによるデバッグ方法のフローチャートを示す。図１−６に示すように、前記オンチップコードのブレークポイントによるデバッグ方法におけるステップＳ５０は、ステップＳ５２〜ステップＳ５３を含む。
【０１５３】
ステップＳ５２において、前記オンチッププロセッサは第３スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認する。
【０１５４】
１つの可能な実施形態では、オフチップメモリがハードウェア割り込み機能を備える場合、オフチップメモリに割り込み関数を設定することができる。オフチップメモリが出力情報を受信すると、割り込み関数をトリガしてハードウェア割り込み状態に入ることができる。
【０１５５】
１つの可能な実施形態では、オンチッププロセッサは、ドライバプログラムにより第３スレッドを起動してオフチップメモリのハードウェア状態を確認することができる。オフチップメモリの状態が割り込み状態である場合、オフチップメモリに新たな出力情報があることを示す。オフチップメモリの状態が非割り込み状態である場合、オフチップメモリに新たな出力情報がないことを示す。
【０１５６】
ステップＳ５３において、前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力する。
【０１５７】
１つの可能な実施形態では、第３スレッドは、オフチップメモリのハードウェア割り込み状態を確認した場合、オフチップメモリ内の更新された出力情報を出力することができる。
【０１５８】
本実施例では、オフチップメモリのハードウェア割り込み状態に応じて、オフチップメモリ内の出力情報を出力することができる。オフチップメモリのハードウェア割り込み状態は、オフチップメモリが出力情報を受信したことを適時に反映でき、オフチップメモリ内の出力情報が適時に出力されることを可能にする。
【０１５９】
図１−７は、本開示の一実施例による、オンチッププロセッサのブロック図を示す。図１−７に示すように、前記オンチッププロセッサは、ブレークポイントに出力関数が設定されているオンチップコードの実行を開始するために用いられる開始モジュール１０と、前記オンチップコードの前記出力関数が実行されたときの前記出力関数の出力情報を取得するために用いられる出力情報取得モジュール２０と、前記出力情報をオフチップメモリに記憶するために用いられる記憶モジュール３０とを含む。
【０１６０】
１つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報に基づいて、前記オンチップコードのブレークポイントによるデバッグの結果を確認するために用いられるブレークポイントデバッグ結果確認モジュールをさらに含む。
【０１６１】
１つの可能な実施形態では、前記出力関数は、数値プリント関数又は文字列プリント関数を含む。
【０１６２】
１つの可能な実施形態では、前記出力情報は、予め設定された数値情報又は文字列情報、又は前記オンチップコード内の前記出力関数以外の関数の出力情報を含む。
【０１６３】
１つの可能な実施形態では、前記出力情報取得モジュールは、前記オンチッププロセッサにより、オンチップシステムのＲＡＭから前記出力関数の出力情報を取得することを含む。
【０１６４】
１つの可能な実施形態では、前記オンチッププロセッサは、前記オフチップメモリ内の出力情報を出力するために用いられる出力モジュールをさらに含む。
【０１６５】
１つの可能な実施形態では、前記出力モジュールは、ドライバプログラムにより前記オフチップメモリ内の出力情報を出力するために用いられる第１出力サブモジュールを含む。
【０１６６】
１つの可能な実施形態では、前記出力モジュールは、前記オフチップメモリ内の出力情報が更新されると、更新された出力情報を出力するために用いられる第２出力サブモジュールを含む。
【０１６７】
１つの可能な実施形態では、前記第２出力サブモジュールは、第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することと、前記第１スレッドは、前記出力情報の更新を確認した場合、前記オフチップメモリの状態識別子を更新することと、第２スレッドを用いて前記オフチップメモリの状態識別子を確認することと、前記第２スレッドは、前記状態識別子の更新を確認した場合、前記オフチップメモリ内の更新された出力情報を出力することとに用いられる。
【０１６８】
１つの可能な実施形態では、第１スレッドを用いて前記オフチップメモリ内の出力情報を確認することは、ドライバプログラムにより前記第１スレッドを起動して前記オフチップメモリ内の出力情報を確認することを含み、第２スレッドを用いて前記オフチップメモリの状態識別子を確認することは、ＨＯＳＴプログラムにより前記第２スレッドを起動して前記オフチップメモリの状態識別子を確認することを含む。
【０１６９】
１つの可能な実施形態では、前記オフチップメモリの状態識別子は、読み取り済み識別子又は未読み取り識別子を含む。
【０１７０】
１つの可能な実施形態では、前記出力モジュールは、第３スレッドを用いて、前記オフチップメモリの、受信した出力情報に基づいて割り込み関数をトリガして入った状態であるハードウェア割り込み状態、又はハードウェア非割り込み状態を含む前記オフチップメモリのハードウェア状態を確認することと、前記第３スレッドは、前記オフチップメモリのハードウェア割り込み状態を確認した場合、前記オフチップメモリ内の出力情報を出力することとに用いられる第３出力サブモジュールを含む。
【０１７１】
図１−８は、本開示の一実施例による、ブレークポイントによるチップデバッグシステムのブロック図を示す。図１−８に示すように、前記ブレークポイントによるチップデバッグシステムは、オンチップブレークポイントによるデバッグを行うための、上記のいずれか一項に記載のオンチッププロセッサを含むブレークポイントデバッグチップ１００と、前記ブレークポイントデバッグチップの出力情報を記憶するために用いられるオフチップメモリ２００とを含む。
【０１７２】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本開示は、記載された動作順序に限定されるものではないことが理解される。本開示によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本開示に必須であるとは限らないことも当業者には理解される。
【０１７３】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【０１７４】
本開示によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【０１７５】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、１つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【０１７６】
また、本開示の各実施例における各機能ユニットは、１つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、２つ以上のユニットが１つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【０１７７】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本開示の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は１つのメモリに記憶され、１つのコンピュータ機器（パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい）に本開示の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【０１７８】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ（英語：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、略称：ＲＯＭ）、ランダムアクセスメモリ（英語：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、略称：ＲＡＭ）、磁気ディスク又は光ディスクなどがある。
【０１７９】
以上、本開示の実施例について詳細に説明し、本開示の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本開示の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本開示の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本開示を限定するものとして理解されるべきではない。
【０１８０】
本明細書では、本開示の実施例による方法、装置（システム）、及びコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して、本開示の様々な態様を説明する。フローチャート及び／又はブロック図の各ブロック、並びにフローチャート及び／又はブロック図の各ブロックの組み合わせは、コンピュータ読み取り可能なプログラム命令によって実現され得ることが理解されたい。
【０１８１】
図面のフローチャート及びブロック図は、本開示の複数の実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装アーキテクチャ、機能、及び動作を示す。この点からすれば、フローチャート又はブロック図の各ブロックは、所定の論理機能を実現するための１つ以上の実行可能な命令を含むモジュール、セグメント、又は命令の一部を表すことができる。一部の代替実施形態では、ブロックに付された機能は、図面に付された順番と異なって実行されてもよい。例えば、連続する２つのブロックは、実際には実質的に並列的に実行されてもよく、それらの機能に依存して逆の順番で実行されることもある。また、ブロック図及び／又はフローチャートの各ブロック、並びにブロック図及び／又はフローチャートの各ブロックの組み合わせは、所定の機能又は動作を実行する専用のハードウェアベースのシステムで実現されてもよいし、専用のハードウェアとコンピュータ命令との組み合わせで実現されてもよい。
【０１８２】
以上、本開示の各実施例を記述したが、上記説明は例示的なものに過ぎず、網羅的なものではなく、かつ披露された各実施例に限定されるものでもない。当業者にとって、説明された各実施例の範囲および精神から逸脱することなく、様々な修正および変更が自明である。本明細書に選ばれた用語は、各実施例の原理、実際の適用または既存技術に対する改善を好適に解釈するか、または他の当業者に本文に披露された各実施例を理解させるためのものである。
【０１８３】
また、近年ではコンピュータハードウェア性能の向上に伴い、深層学習アルゴリズムがますます多くの分野で広く用いられるようになってきている。画像分類、音声認識、機械翻訳などの分野では、深層学習アルゴリズム（例えばニューラルネットワークアルゴリズム）は既知の最も効果の高いアルゴリズムである。しかし、どのような機器でニューラルネットワークアルゴリズムを動作させても、計算量が非常に膨大で、それに伴って高エネルギー消費、低エネルギー効率の問題は非常に深刻なものとなる。モバイル機器の場合、バッテリから電力が供給され、機器の消費電力が厳しく制限されているため、消費電力の問題が特に顕著となる。このため、移動端末で深層学習アルゴリズムを実行することはコストがかかりすぎる。
【０１８４】
そこで、本開示は、ネットワークモデルの計算ニーズに対応しつつ、装置の消費電力を低減してコストを低減することができるデータプロセッサ、チップ、電子機器及び処理方法を提案する。本開示は、データ処理の分野に関し、特にデータプロセッサ、チップ、電子機器及びデータ処理方法に関する。
【０１８５】
以下、本開示の実施例における技術的解決手段を、本開示の実施例における添付の図面を参照して、明確で完全に説明する。記載する実施例は、本開示の全ての実施例ではなく、単なる一部にすぎないことが明らかである。当業者によって本開示の実施例に基づいて創造的な労力なしに得られる全ての他の実施例は、本開示の保護範囲に属する。
【０１８６】
本開示の特許請求の範囲、明細書及び図面における用語「第１」、「第２」、「第３」及び「第４」などは、異なる対象を区分するためのものであり、特定の順序を説明するためのものではないことが理解されたい。本開示の明細書及び特許請求の範囲で使用される用語「含む」及び「包含する」は、記述された特徴、全体、ステップ、操作、要素及び／又は構成要素の存在を示すが、１つ以上の他の特徴、全体、ステップ、操作、要素、構成要素及び／又はそれらの集合の存在又は追加を排除するものではない。
【０１８７】
本開示の明細書で使用される用語は、特定の実施例を説明するためのものにすぎず、本開示を限定するものではないことも理解されたい。本開示の明細書及び特許請求の範囲で使用されるように、単数形の「１つの（ａ）」、「１つの（ａｎ）」及び「この（ｔｈｅ）」は、文脈上で明記されない限り、複数形を含むことを意図している。さらに、本開示の明細書及び特許請求の範囲で使用される用語「及び／又は」は、関連して列挙された項目のうちの１つ以上の任意の組み合わせ、及び可能な組み合わせの全てを意味し、これらの組み合わせを含むことが理解されたい。
【０１８８】
本明細書及び特許請求の範囲で使用されるように、用語「場合に」は、文脈に応じて「…時に」、「と」、「と判定したことに応じて」、又は「を検出したことに応じて」を意味すると解釈することができる。同様に、語句「と判定される場合に」又は「［記述される条件又はイベント］が検出された場合に」は、文脈に応じて「と判定されると」、又は「と判定したことに応じて」、又は「［記述される条件又はイベント］が検出されると」、又は「［記述される条件又はイベント］を検出したことに応じて」を意味すると解釈することができる。
【０１８９】
図２−１は、本開示の実施例による、データプロセッサのブロック図を示す。本開示の実施例におけるデータプロセッサは、深層学習アルゴリズムに対応するネットワークモデルを演算するために用いることができる。ここで、図２−１に示すように、本開示の実施例におけるデータプロセッサは、記憶モジュール１００と、タスク割り当てモジュール２００と、演算モジュール３００とを備えてもよい。
【０１９０】
記憶モジュール１００は、ネットワークモデルの演算動作を実行するための演算子と演算データとを含む、受信したネットワークモデルデータを記憶するために使用されてもよい。本開示の実施例における記憶モジュール１００は、他の電子デバイスとは独立したメモリであってもよいし、他の電子デバイスに位置する内部記憶ユニットであってもよい。例えば、記憶モジュールは、制御モジュール内部の記憶ユニットであってもよいし、制御モジュールとは独立したメモリであってもよい。ネットワークモデルデータの記憶が可能であれば、本開示の実施例における記憶モジュールとしてもよい。本開示の実施例における記憶モジュールは、当該ネットワークモデルデータを記憶するアドレス空間を制御するための命令を受信し、当該命令に応じてネットワークモデルデータを当該アドレス空間内に記憶し、他のデバイスが当該アドレス空間から関連データを読み取るのを容易にする。
【０１９１】
また、本開示の実施例において、ネットワークモデルデータには、ネットワークモデルの演算動作を実行する演算子と、演算を実行するために必要な演算データとが含まれてもよい。ここで、演算子には複数の演算命令が含まれてもよく、各演算子は１つ以上の入力／出力データに接続されてもよい。図２−２に示すように、本開示の実施例におけるネットワークモデルの演算子の計算モデル図であり、当該計算モデル図は本開示の実施例の計算モデル図の一例にすぎず、ネットワークモデルの演算動作における各演算子間の論理関係を対応づけて示している。他の実施例における演算動作については、計算モデル図が異なってもよい。図２−２に示すように、演算子ｆ１及びｆ２が含まれてもよく、他の実施例では、複数の演算子が含まれてもよい。各演算子から構成する計算グラフモデルは、有向非巡回グラフであってもよく、各演算子は、当該計算グラフモデルにおいて計算を実行するノードであってもよく、１つ以上の入力／出力データに接続されている。例えば、演算子ｆ１の出力データは、別の演算子ｆ２の入力データであってもよく、この場合、ｆ１とｆ２との間にデータ依存があるか、ｆ２がｆ１に依存していることを意味する。また、演算子ノードの情報（演算子の情報）は、演算子タイプ、演算子入出力データの次元情報、演算子内部データの次元情報などを含むことができる。これらの情報により、演算子の相関演算を実行することができる。各演算子は、演算動作を実行する１つ以上の演算命令を含むことができる。また、演算データは、ネットワークモデル演算を実行する初期データを含んでもよいし、演算過程で生成される中間データを含んでもよい。例えば、本開示の実施例のネットワークモデルは、ニューラルネットワーク構造及びニューラルネットワーク演算データの２つの部分を含むニューラルネットワークモデルを含むことができる。ニューラルネットワーク構造は、ニューラルネットワークのモデル構造を記述するものであり、ネットワーク内の演算子情報、演算データの情報、演算子と演算データとの接続形態の情報を含むことができる。ニューラルネットワークの演算データは、ユーザが入力したデータ（実際の、本当に計算に用いられるデータ）、演算子の内部データ（本当に計算に用いられるデータでもあり、例えば畳み込み演算子の畳み込みカーネル、全結合演算子の重みである）などを含むことができる。
【０１９２】
また、本開示の実施例におけるタスク割り当てモジュール２００は、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当てるために用いられることができ、第１フラグが割り当てられている演算子の演算難易度は、第２フラグが割り当てられている演算子の演算難易度よりも大きい。本開示の実施例において、演算子の演算難易度に応じて、演算子に第１フラグ又は第２フラグを割り当てることができる。本開示の実施例における演算難易度は、演算子における演算命令の数、種類、演算時間などのパラメータに関連することができる。ここで、第１フラグ及び第２フラグは、２つの異なるフラグ値で区分されてもよく、特定の文字や文字の組み合わせであってもよく、本開示の実施例はこれを限定しない。また、第１フラグに対応する演算子の演算難易度は、第２フラグに対応する演算子の演算難易度よりも大きい。
【０１９３】
演算モジュール３００は、少なくとも１つのビッグコア演算ユニットと、少なくとも１つのリトルコア演算ユニットとを含むことができる。本開示の実施例において、演算モジュール３００は、１つ以上のビッグコア演算ユニットを含むビッグコアグループ３０１と、１つ以上のリトルコア演算ユニットを含むリトルコアグループ３０２とを含むことができる。演算モジュール３００は、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行してもよい。
【０１９４】
ここで、ビッグコアグループ３０１におけるビッグコア演算ユニットは、演算能力が高く消費電力が高いネットワークプロセッサコアであり、リトルコアグループ３０２におけるリトルコア演算ユニットは、演算能力がやや弱く消費電力が低いネットワークプロセッサコアである。ビッグコアグループとリトルコアグループから本開示の実施例における演算モジュール３００の演算コアを構成する。本開示の実施例において、ビッグコア演算ユニットとリトルコア演算ユニットとの相違点について、ビッグコア演算ユニットは、より多くの演算ユニット材を含み、演算能力が非常に高いが、演算消費電力、起動消費電力がいずれも比較的大きく、それに対して、リトルコア演算ユニットは、より少ない演算ユニット材を有し、演算能力が比較的弱いが、演算消費電力、起動消費電力がいずれも比較的小さいことにある。ビッグコアグループ３０１とリトルコアグループ３０２とで演算ユニットの数は異なってもよく、リトルコアグループ３０２の演算ユニットの数はビッグコアグループ３０１の演算ユニットの数より少なくてもよい。また、本開示の実施例におけるビッグコアグループ３０１内のビッグコア演算ユニットとリトルコアグループ３０２内のリトルコア演算ユニットは、同時に並列に動作してもよく、具体的には、対応するスケジューリング制御に基づいて実現されてもよい。
【０１９５】
本開示の実施例におけるビッグコアグループ３０１及びリトルコアグループ３０２内の演算ユニットは、Ｈ型構造、パルスアレイマシン構造及びツリー構造のいずれか一つとして構成されることができる。ビッグコアグループ３０１及びリトルコアグループ３０２における各演算ユニット構造の構成は、同じでも異なってもよく、当業者により必要に応じて設定することができ、本開示はこれを限定しない。以下、ビッグコアグループ及びリトルコアグループの演算ユニットの構造について、上記の構造として説明する。
【０１９６】
図２−７は、本開示の実施例による、Ｈ型構造として構成される演算ユニットのブロック図を示す。図２−７に示すように、ビッグコアグループ３０１又はリトルコアグループ３０２における各演算ユニットがＨ型構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット３００１、少なくとも１つの分岐演算ユニット３００２及び複数の従演算ユニット３００３を含むことができる。主演算ユニット３００１は、各分岐演算ユニット３００２に接続され、分岐演算ユニット３００２は、従演算ユニット３００３の少なくとも１つにそれぞれ接続されてもよく、また各従演算ユニット３００３は、１つの分岐演算ユニット３００２のみに接続されてもよい。図２−７に示すように、４つの分岐演算ユニット３００２を含み、各分岐演算ユニット３００２には、４つの従演算ユニット３００３がそれぞれ接続されており、当該分岐演算ユニット３００２は、主演算ユニット３００１と従演算ユニット３００３との間のデータ、命令及び中間結果の伝送に用いられることができる。
【０１９７】
本開示の実施例において、ニューラルネットワーク演算における全結合演算を例とすると、プロセスはｙ＝ｆ（ｗｘ＋ｂ）であり、ｘは入力ニューロン行列であり、ｗは重み行列であり、ｂはバイアススカラーであり、ｆは活性化関数であり、具体的にはｓｉｇｍｏｉｄ関数、ｔａｎｈ、ｒｅｌｕ、ｓｏｆｔｍａｘ関数のいずれか一つであるようにしてもよい。ここで、２分木構造であり、８個の従演算ユニット３００３を有することを想定すると、その実現方法として、タスク割り当てモジュール２００は、例えば、入力ニューロン行列ｘ、重み行列ｗ及び全結合演算命令（演算子）を含むネットワークモデルデータを記憶モジュール１００から取得し、各演算子にそれぞれ第１フラグ又は第２フラグを割り当て、フラグが対応して割り当てられている演算子及び演算データを演算モジュール３００に伝送するようにしてもよい。
【０１９８】
演算モジュール３００に対応するビッグコアグループ３０１及びリトルコアグループ３０２がフラグに応じて演算動作を実行する際に、前記主演算ユニット３００１は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニット３００２を介して演算命令及びデータブロックを対応する従演算ユニット３００３に伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成されて、分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び重みなどの情報を転送するように構成される。例えば、入力ニューロン行列ｘを８個のサブ行列に分割し、８個のサブ行列を、分岐演算ユニット３００２を介して８個の従演算ユニット３００３に分配し、重み行列ｗを８個の従演算ユニット３００３にブロードキャストするようにしてもよい。
【０１９９】
従演算ユニット３００３は、対応する演算命令が完了すると、対応する中間結果を生成し、分岐演算ユニット３００２を介して当該中間結果を主演算ユニット３００１に返すことができる。即ち、各従演算ユニットは、８個のサブ行列と重み行列ｗとの乗算と累積加算とを並列的に実行して８個の中間結果を得、８個の中間結果を主演算ユニット３００１に送ることができる。
【０２００】
主演算ユニット３００１は、得られた中間結果をさらに演算処理して最終的な演算結果を得ることができる。例えば、８個の中間結果をソートし、対応する演算処理を行って対応する演算結果を得、この演算結果に対してバイアスｂの演算を実行した後に活性化動作を実行して最終結果ｙを得、最終結果ｙを記憶モジュール１００に送信して記憶させたり、他の電子デバイスに伝送して後続の処理を行ったりすることができ、即ち、当該最終結果ｙを出力するか又は記憶モジュール１００内に記憶することができる。
【０２０１】
また、図２−８は、本開示の実施例による、パルスアレイマシン構造として構成される演算ユニットのブロック図を示す。ここで、ビッグコアグループ３０１又はリトルコアグループ３０２における各演算ユニットがパルスアレイマシン構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット３００１及び複数の従演算ユニット３００３を含むことができる。複数の従演算ユニット３００３は、アレイ状に分布しており、ｍ行ｎ列（ｍ及びｎは１よりも大きい正の整数であり、Ｋは正の整数である）の従演算ユニットとして構成され、各従演算ユニット３００３は隣接する他の従演算ユニット３００３に接続され、主演算ユニット３００１は前記複数の従演算ユニット３００３のうちのＫ個の従演算ユニット３００３に接続され、前記Ｋ個の従演算ユニット３００３は、第１行のｎ個の従演算ユニット３００３、第ｍ行のｎ個の従演算ユニット３００３及び第１列のｍ個の従演算ユニット３００３である。なお、説明したいのは、図２−８に示されるＫ個の従演算ユニット３００３は、第１行のｎ個の従演算ユニット３００３、第ｍ行のｎ個の従演算ユニット３００３及び第１列のｍ個の従演算ユニット３００３のみを含み、即ち当該Ｋ個の従演算ユニット３００３は、複数の従演算ユニット３００３のうちの、主演算ユニット３００１に直接接続される従演算ユニット３００３である。当該Ｋ個の従演算ユニット３００３は、前記主演算ユニット３００１及び複数の従演算ユニット３００３の間でのデータ及び命令の転送に用いられることができる。前記Ｋ個の従演算ユニットは、前記主演算ユニットと残りの従演算ユニットとの間のデータを変換するように構成される。
【０２０２】
Ｋ個の従演算ユニットを除く残りの従演算ユニットは、当該演算命令に従って、受信したデータブロックに対して演算を実行して中間結果を得、演算結果を前記Ｋ個の従演算ユニットに伝送するように構成される。
【０２０３】
主演算ユニット３００１は、割り当てられた演算子をＫ個の従演算ユニット３００３に伝送して演算することができ、残りの従演算ユニット３００３に接続することにより、当該残りの従演算ユニット３００３から中間結果を得ることができる。主演算ユニット３００１は、当該複数の残りの従演算ユニット３００３から送信された中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶モジュール１００に送信して記憶させるために用いられることができる。
【０２０４】
また、図２−９は、本開示の実施例による、ツリー構造として構成される演算ユニットのブロック図を示す。ビッグコアグループ３０１又はリトルコアグループ３０２における各演算ユニットがツリー構造として構成される場合、ビッグコアグループ及びリトルコアグループにおける演算ユニットは、主演算ユニット３００１及び複数の従演算ユニット３００３、前記主演算ユニット３００１と従演算ユニットとの間に接続されるツリー型モジュール３００４を含むことができる。ここで、前記ツリー型モジュール３００４は、１つのルートポート１及び複数の分岐ポート２を含み、前記ツリー型モジュールのルートポートは、前記主演算ユニット３００１に接続され、前記ツリー型モジュールの複数の分岐ポートは、複数の従演算ユニットのうちの１つの従演算ユニットにそれぞれ接続される。上記ツリー型モジュールは、送受信機能を有する。図９に示すように、当該ツリー型モジュールが送信機能を有するが、他の実施例では受信機能を有してもよく、ここで限定しない。ツリー型モジュール３００４は、前記主演算ユニットと前記複数の従演算ユニットとの間でデータブロック、重み及び演算命令を転送するために使用され得る。主演算ユニット３００４は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割して、ツリー型モジュール３００４に送信し、次いで、ツリー型モジュール３００４は、対応するデータ、演算命令及び重みを対応する従演算ユニット３００３に伝送し、従演算ユニット３００３から中間結果を受信して主演算ユニット３００１に伝送する。そして、主演算ユニット３００１は、中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶モジュール１００に送信して記憶させることができる。
【０２０５】
本開示の実施例において、当該ツリー型モジュールは、少なくとも１層の、転送機能を有する線構造であるノードを含むことができ、当該ノード自体は、計算機能を有さなくてもよい。ツリー型モジュールがゼロ層のノードを有する場合、当該ツリー型モジュールは不要である。
【０２０６】
本開示の実施例において、当該ツリー型モジュールは、ｎ分木構造であってもよい。例えば、図２−１０に示すような２分木構造であってもよいが、３分木構造であってもよいことは無論である。当該ｎは２以上の整数であることができる。本出願の具体的な実施形態は、上記ｎの具体的な取り得る値を限定しない。上記層数は２であり、従演算ユニットは、最後から２番目の層のノード以外の他の層のノードに接続され、例えば、最後から１番目の層のノードに接続されるようにしてもよい。
【０２０７】
また、本開示の実施例における演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニットの入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。好ましくは、当該ツリー型モジュールは、ｎ分木構造であり、例えば、図２−１０に、本開示の実施例における２分木構造として構成される演算ユニットのブロック図を示す。他の実施例では、各演算ユニットは、３分木構造、又は他のｎ分木構造として構成されてもよく、当該ｎは２以上の整数であることができる。本出願の具体的な実施形態は、上記ｎの具体的な取り得る値を限定しなく、上記層数は２であってもよいし、他の層数であってもよい。従演算ユニット３００３は、それに隣接する階層のノード上の従演算ユニット３００３に接続することができ、図２−１０における各ノードは従演算ユニット３００３に対応することができる。
【０２０８】
好ましくは、上記演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニット３００３の入力データ及び出力データ、例えば入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。
【０２０９】
また、本開示の実施例において、演算モジュール３００は、記憶モジュール１００及びタスク割り当てモジュール２００に直接接続されてもよく、これにより、タスク割り当てモジュール２００により割り当てられているフラグ値に基づいて、それぞれの演算ユニットにより対応する演算子における演算命令を実行することができる。他の実施例では、データプロセッサは、タスク割り当てモジュール２００によって演算子に割り当てられているフラグ値に基づいて対応する演算動作を実行するように演算モジュール３００を制御する制御モジュールをさらに含むことができる。
【０２１０】
以上のような構成に基づき、本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行するようにすることができ、これによりビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【０２１１】
さらに、本開示の実施例において、記憶モジュール１００に記憶されているネットワークモデルデータは、ドライバプログラムモジュールにより処理されたデータ情報であってもよい。ネットワークモデルに関する演算を実行する必要がある場合、ユーザは、上述したネットワークモデルデータを決定するためのネットワークモデルの記述情報を提出することができる。ドライバプログラムモジュールは、ネットワークモデル記述情報に基づいて、ネットワークモデルの演算動作を実行する演算データのデータ記述子を確立し、及びネットワークモデルにおける演算子の演算子記述子を確立し、演算子記述子とデータ記述子との間の接続関係を確立してネットワークモデルを記述した後、記憶割り当てモジュールにより当該データ記述子及び演算子記述子に記憶モジュール１００上の記憶空間を割り当てた記憶空間のアドレスを得、記憶モジュール上の割り当てられている空間にデータを伝送する。当該演算子記述子及びデータ記述子により、演算データ及び演算子を決定することができる。
【０２１２】
以下、本開示の実施例におけるタスク割り当てモジュールのフラグ割り当ての方式について例を挙げて説明する。ここで、タスク割り当てモジュール２００は、ユーザによって提出されたネットワークモデルデータにおける演算子をビッグコアグループ３０１及びリトルコアグループ３０２の一方に割り当てるために使用され得る。なお、タスク割り当てモジュール２００は、複数のネットワークモデルの演算子に同時に第１フラグ又は第２フラグを割り当てることができ、それに対応して、演算モジュール３００は、複数のネットワークモデルの演算子を同時に実行することができる。ここで、各演算子は、１つ以上の演算命令を生成でき、各演算命令は、この演算命令をどの演算コア（ビッグコア又はリトルコア）上で実行したいかを示す１つのフラグ（第１フラグ又は第２フラグ）が割り当てられる。タスク割り当てモジュールによって割り当てられる最小単位は、演算命令ではなく演算子であってもよく、即ち同一の演算子によって生成された全ての命令が同一のフラグに対応する。以下では、１つのノード（演算子）がビッグ／リトルコア上で実行されているということは、その演算子によって生成された全ての命令が対応するコア（ビッグコア又はリトルコア）上で実行されていることを意味する。
【０２１３】
本開示の実施例において、タスク割り当てモジュール２００は、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第１フラグ又は第２フラグを割り当てることができる。
【０２１４】
本開示の実施例において、タスク割り当てモジュール２００は、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算が実行される場合の演算時間を取得でき、例えば、ビッグコア演算ユニットでの演算時間が第１演算時間であり、リトルコア演算ユニットでの演算時間が第２演算時間である。タスク割り当てモジュール２００は、第１演算時間が第１閾値時間よりも大きい場合、及び／又は第２演算時間が第２閾値時間よりも大きい場合、当該演算子に第１フラグを割り当て、そうでない場合、第２フラグを割り当てることができる。ここで、第１閾値時間は、第２閾値時間よりも大きく、第１閾値時間及び第２閾値時間のそれぞれは、要求に応じて設定される時間閾値であってもよく、本開示の実施例は、当該時間閾値を限定しない。
【０２１５】
本開示の他の実施例において、タスク割り当てモジュール２００は、各演算子間の論理関係に基づいて有向グラフをさらに作成することができ、当該有向グラフのノードは各前記演算子に対応する。また、ビッグコア演算ユニットが各演算子を実行する場合の第１演算時間とリトルコア演算ユニットが各演算子を実行する場合の第２演算時間とをそれぞれ取得し、前記第１演算時間を各ノードの遅延時間とし、クリティカルパス法を用いて、各ノードに対応する演算子に第１フラグが割り当てられている第１クリティカルパスを決定するように構成される。
【０２１６】
本開示の実施例の予め設定されたアルゴリズムは、クリティカルパス法であってもよく、即ちクリティカルパス法によって演算子のフラグを決定してもよい。ここで、タスク割り当てモジュール２００は、受信したネットワークモデルデータに基づいてネットワークモデルを、各ノードがそれぞれ演算子を表す有向グラフ（例えば図２−２に示すように）に抽象化することができる。各ノードｖに２つの属性ｔ１（ｖ）及びｔ２（ｖ）があり、ｔ１（ｖ）は演算命令がビッグコアグループ３０１上で演算される場合の第１演算時間を表し、ｔ２（ｖ）は演算命令がリトルコアグループ３０２上で演算される場合の第２演算時間を表す。リトルコアグループに対するビッグコアグループの演算速度の比がα（α＞１）であるとすると、ｔ１（ｖ）＝ｔ２（ｖ）／αである。まず、各演算子に第２フラグを割り当て、各ノードｖの遅延をｔ１（ｖ）（即ちビッグコアグループ上での演算時間）とし、クリティカルパス法で第１クリティカルパスＬ１を見つけるようにしてもよい。このパス上の全てのノードは、ビッグコア上で実行されるようにフラグされ、即ち当該第１クリティカルパス上の全てのノードに対応する演算子に第１フラグを割り当て、及びクリティカルパス以外の全てのノードに対応する演算子に第２フラグを割り当てる。即ち、第１クリティカルパスＬ１上のノードに対応する演算子に第１フラグを割り当て、残りの演算子に第２フラグを割り当てることができる。ここで、当業者は、従来技術の手段に基づいてクリティカルパス法の具体的なプロセスを知ることができるので、ここで詳細に説明しない。
【０２１７】
本開示の他の実施例において、ネットワークモデルデータに当該ネットワークモデル演算の時効性、即ちデータ時効性も含むことができる。データ時効性とは、ユーザがこのネットワークモデルの計算を早急に完了させたいか否かということである。時効性はブール型で簡単に表すことができ、この値が真（例えば１）であれば、時効性が強い（早急に完了させる必要がある）ことを示し、この値が偽（例えば０）であれば、時効性が弱い（多少遅くてもよい）ことを示す。したがって、異なるネットワークモデルデータに対して、その演算子のデータ時効性を異ならせることができ、当該時効性に基づいてネットワークモデル内の演算子の演算の緊急度を決定することができる。
【０２１８】
本開示の実施例において、ユーザが時効性を要求する場合、タスク割り当てモジュール２００は、Ｌ１上の各ノードの遅延をさらに０に設定し、クリティカルパス法を用いて第２クリティカルパスＬ２を見つける。Ｌ２の総遅延をｔ（Ｌ２）とすると、ｔ（Ｌ２）≦ｔ（Ｌ１）／αであれば、アルゴリズムを終了する。ｔ（Ｌ２）≦ｔ（Ｌ１）／αという条件が満たさなければ、再び当該ステップを繰り返し、第２クリティカルパスＬ２上のノードに対応する演算子に第１フラグを割り当て、Ｌ２上の各ノードの遅延を０に設定し、次にクリティカルパス法を用いて、第３クリティカルパスＬ３を見つける。ｔ（Ｌ２）≦ｔ（Ｌ１）／αになるまで、当該ステップを繰り返す。新しいクリティカルパスを絶えず見つけ、その上のノード遅延を０に設定することによって、全てのノードにフラグを割り当てることができる。あるクリティカルパスに出現するノードは第１フラグが割り当てられ、全てのクリティカルパスに出現しないノードは第２フラグが割り当てられる。この反復過程の擬似コードを以下に示す。クリティカルパスの遅延の制限ｔ（Ｌ２）≦ｔ（Ｌ１）／αにより、ビッグコアグループ上で実行される演算子がリトルコアグループ上で実行される演算子を待たないことが保証され、ネットワークモデル全体に動作を最も高速に完了させることができる。
【０２１９】
上記実施例によれば、第１フラグ又は第２フラグの割り当てプロセスを完了することができ、演算モジュールはそれに応じて演算動作を実行することができる。
【数１】
2021520566.tif 000003
【０２２０】
図２−３は、本開示の実施例による、データプロセッサのブロック図を示す。当該データプロセッサは、記憶割り当てモジュール４００をさらに含むことができる。記憶割り当てモジュール４００は、記憶モジュール１００内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュール１００の空き記憶空間が不足している場合、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択する。
【０２２１】
記憶割り当てモジュール４００は、ユーザによって提出されたネットワークモデルデータを記憶するための記憶空間を記憶モジュール１００内に割り当てるために使用される。記憶割り当てモジュール４００は、記憶モジュール１００内の空きメモリブロックなどの空き記憶空間を取得することができ、使用されているメモリブロックを確認することもできる。記憶割り当てモジュール４００は、全てのユーザによって共有され、即ち、複数のユーザによって提出されたネットワークモデルデータに、対応する記憶空間を割り当てるために使用され得る。記憶割り当てモジュール４００によって使用されるアルゴリズムは、ｂｕｄｄｙアルゴリズム又はｓｌａｂアルゴリズムを含むことができるが、本開示の実施例を限定するものではない。
【０２２２】
本開示の実施例において、複数のユーザが同時にネットワークモデルを実行する場合、記憶モジュール１００の空間が不足している可能性があり、即ち空き記憶空間が不足している可能性がある。この場合、記憶割り当てモジュール４００は、空間不足の提示情報をフィードバックし、ユーザからの選択情報を受信することができる。当該選択情報は、演算終了情報又は演算待ち情報を含むことができ、記憶割り当てモジュール４００は、演算終了情報に基づいてネットワークモデルデータの解放を選択して演算を終了するか、又は、演算待ち情報に基づいて前記ネットワークモデルデータをキャッシュし、前記記憶モジュールの記憶空間が十分になると、記憶モジュールにより当該ネットワークモデルデータを記憶する。つまり、本開示の実施例は、記憶空間が不足している場合、今回の計算を終了するか、キャッシュ上の空き空間が十分になるのを待ってから演算するかをユーザにより決定することができる。ユーザにより待ちを決定する場合、現在実行中のある計算タスクが終了し、その計算タスクの出力データがドライバプログラムによってメモリにコピーされ、そのタスクに関連する入出力空間が解放された後、キャッシュされたネットワークモデルデータが当該解放された記憶空間内に記憶され、これにより、当該ユーザの計算タスクが実行される。メモリにコピーされたデータは、将来使用されるときに、バス経由で記憶モジュールに再入力する必要がある。
【０２２３】
さらに、本開示の実施例におけるデータプロセッサは、記憶割り当てモジュール４００及び記憶モジュール３００にそれぞれ接続可能なモジュールであって、前記ネットワークモデルデータを記憶モジュール１００に伝送して記憶させ、及び前記演算モジュールの演算結果をメモリに伝送したり、メモリに記憶されているデータを記憶モジュール１００などに記憶させたりするために用いることができるダイレクトメモリアクセスモジュール５００を含むことができる。即ち本開示の実施例におけるメモリアクセスモジュール５００は、記憶割り当てモジュール４００と記憶モジュール３００との間でデータ接続を確立するとともに、記憶モジュール３００とメモリとの間でデータ接続を確立し、対応するデータを伝送するために用いられてもよい。
【０２２４】
図２−４は、本開示の実施例による、データプロセッサのブロック図を示す。当該データプロセッサは、図２−３に示される実施例に対して、キャッシュモジュール６００及びスケジューリングモジュール７００をさらに含むことができる。ここで、キャッシュモジュール６００は、演算モジュール３００によって演算処理される演算子及び演算データをキャッシュするために用いられることができる。上記実施例のように、タスク割り当てモジュール２００は、演算子に対応フラグを割り当て、当該フラグ割り当て済みの演算子はキャッシュモジュール６００にキャッシュされる。演算モジュール３００が対応する演算命令を実行できる場合、対応する演算子の演算命令がキャッシュモジュール６００から読み取られて演算動作を実行し、演算子の実行が完了すると、キャッシュモジュールは当該演算子のキャッシュデータを解放することができる。
【０２２５】
本開示の実施例において、キャッシュモジュール６００が記憶する演算子の記憶構造は、表１に示すが、表中の各列の順序は任意に調整可能である。
【０２２６】
【表１】
2021520566.tif 000004
ここで、ネットワーク演算命令は、対応するネットワーク演算を完了するための専用の命令の全てを含み、演算子を構成するために使用される。ネットワーク演算命令には、制御命令、データ伝送命令、演算命令及び論理命令が含まれるが、これらに限定されない。制御命令はネットワーク実行プロセスを制御するものであり、データ伝送命令は異なる記憶媒体間のデータ伝送を完了するものである。データ形式は、行列、ベクトル及びスカラーを含むが、これらに限定されない。演算命令はネットワークの算術演算を完了するものであって、行列演算命令、ベクトル演算命令、スカラー演算命令、畳み込みニューラルネットワーク演算命令、全結合ニューラルネットワーク演算命令、プール化ニューラルネットワーク演算命令、ＲＢＭニューラルネットワーク演算命令、ＬＲＮニューラルネットワーク演算命令、ＬＣＮニューラルネットワーク演算命令、ＬＳＴＭニューラルネットワーク演算命令、ＲＮＮニューラルネットワーク演算命令、ＲＥＬＵニューラルネットワーク演算命令、ＰＲＥＬＵニューラルネットワーク演算命令、ＳＩＧＭＯＩＤニューラルネットワーク演算命令、ＴＡＮＨニューラルネットワーク演算命令及びＭＡＸＯＵＴニューラルネットワーク演算命令を含むが、これらに限定されない。論理命令は、ニューラルネットワークの論理演算を完了するものであって、ベクトル論理演算命令及びスカラー論理演算命令を含むが、これらに限定されない。
【０２２７】
ＲＢＭニューラルネットワーク演算命令は、Ｒｅｓｔｒｉｃｔｅｄ  Ｂｏｌｔｚｍａｎｎ  Ｍａｃｈｉｎｅ（ＲＢＭ）ニューラルネットワーク演算を実現するために用いられる。ＬＲＮニューラルネットワーク演算命令は、Ｌｏｃａｌ  Ｒｅｓｐｏｎｓｅ  Ｎｏｒｍａｌｉｚａｔｉｏｎ（ＬＲＮ）ニューラルネットワーク演算を実現するために用いられる。ＬＳＴＭニューラルネットワーク演算命令は、Ｌｏｎｇ  Ｓｈｏｒｔ−Ｔｅｒｍ  Ｍｅｍｏｒｙ（ＬＳＴＭ）ニューラルネットワーク演算を実現するために用いられる。ＲＮＮニューラルネットワーク演算命令は、Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  ＮｅｔｗｏｒＫｓ（ＲＮＮ）ニューラルネットワーク演算を実現するために用いられる。ＲＥＬＵニューラルネットワーク演算命令は、Ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔ（ＲＥＬＵ）ニューラルネットワーク演算を実現するために用いられる。ＰＲＥＬＵニューラルネットワーク演算命令は、Ｐａｒａｍｅｔｒｉｃ  Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ（ＰＲＥＬＵ）ニューラルネットワーク演算を実現するために用いられる。ＳＩＧＭＯＩＤニューラルネットワーク演算命令は、Ｓ型成長曲線（ＳＩＧＭＯＩＤ）ニューラルネットワーク演算を実現するために用いられる。ｙ＝ｓｉｇｍｏｉｄ（ｘ）＝１／１＋ｅ-xであり、ここでｘ、ｙは実数である。ＴＡＮＨニューラルネットワーク演算命令は、双曲線正接関数（ＴＡＮＨ）ニューラルネットワーク演算を実現するために用いられる。ＭＡＸＯＵＴニューラルネットワーク演算命令は、ｍａｘｏｕｔ活性化関数を用いてノードを出力する（ＭＡＸＯＵＴ）ニューラルネットワーク演算を実現するために用いられ、Ｃａｍｂｒｉｃｏｎ命令セットを含むことができる。Ｃａｍｂｒｉｃｏｎ命令セットの命令は、オペコードとオペランドから構成される。命令セットは４種類の命令を含み、それぞれ制御命令（ｃｏｎｔｒｏｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）、データ伝送命令（ｄａｔａ  ｔｒａｎｓｆｅｒ  ｉｎｓｔｒｕｃｔｉｏｎｓ）、演算命令（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）、論理命令（ｌｏｇｉｃａｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）である。命令セットの各命令の長さは固定長である。例えば、命令セットの各命令の長さは６４ｂｉｔであってもよい。制御命令は、実行プロセスを制御するために用いられる。制御命令には、ジャンプ（ｊｕｍｐ）命令及び条件分岐（ｃｏｎｄｉｔｉｏｎａｌ  ｂｒａｎｃｈ）命令が含まれる。データ伝送命令は、異なる記憶媒体間のデータ伝送を完了するために用いられる。データ伝送命令には、ロード（ｌｏａｄ）命令、ストア（ｓｔｏｒｅ）命令、ムーブ（ｍｏｖｅ）命令が含まれる。ｌｏａｄ命令は、メインメモリからキャッシュにデータをロードするために用いられ、ｓｔｏｒｅ命令は、キャッシュからメインメモリにデータを記憶するために用いられ、ｍｏｖｅ命令は、キャッシュとキャッシュとの間、又はキャッシュとレジスタとの間、又はレジスタとレジスタとの間でデータを搬送するために用いられる。データ伝送命令は、行列、ベクトル及びスカラーを含む３つの異なるデータ組織方式をサポートしている。演算命令は、ネットワーク算術演算を完了するために用いられる��演算命令には、行列演算命令、ベクトル演算命令及びスカラー演算命令が含まれる。行列演算命令は、行列乗算ベクトル（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｙ  ｖｅｃｔｏｒ）、ベクトル乗算行列（ｖｅｃｔｏｒ  ｍｕｌｔｉｐｌｙ  ｍａｔｒｉｘ）、行列乗算スカラー（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｙ  ｓｃａｌａｒ）、外積（ｏｕｔｅｒ  ｐｒｏｄｕｃｔ）、行列加算行列（ｍａｔｒｉｘ  ａｄｄ  ｍａｔｒｉｘ）、行列減算行列（ｍａｔｒｉｘ  ｓｕｂｔｒａｃｔ  ｍａｔｒｉｘ）を含むネットワークにおける行列演算を完了する。ベクトル演算命令は、ベクトル基本演算（ｖｅｃｔｏｒ  ｅｌｅｍｅｎｔａｒｙ  ａｒｉｔｈｍｅｔｉｃｓ）、ベクトル超越関数演算（ｖｅｃｔｏｒ  ｔｒａｎｓｃｅｎｄｅｎｔａｌ  ｆｕｎｃｔｉｏｎｓ）、内積（ｄｏｔ  ｐｒｏｄｕｃｔ）、ベクトルランダム生成（ｒａｎｄｏｍ  ｖｅｃｔｏｒ  ｇｅｎｅｒａｔｏｒ）、ベクトルの最大／最小値（ｍａｘｉｍｕｍ／ｍｉｎｉｍｕｍ  ｏｆ  ａ  ｖｅｃｔｏｒ）を含むネットワークにおけるベクトル演算を完了する。ベクトル基本演算には、ベクトル加算、減算、乗算、除算（ａｄｄ、ｓｕｂｔｒａｃｔ、ｍｕｌｔｉｐｌｙ、ｄｉｖｉｄｅ）が含まれ、ベクトル超越関数とは、多項式を係数とする多項式方程式を何も満たさない関数であり、指数関数、対数関数、三角関数、逆三角関数が含まれるが、これらに限定されない。スカラー演算命令は、スカラー基本演算（ｓｃａｌａｒ  ｅｌｅｍｅｎｔａｒｙ  ａｒｉｔｈｍｅｔｉｃｓ）及びスカラー超越関数演算（ｓｃａｌａｒ  ｔｒａｎｓｃｅｎｄｅｎｔａｌ  ｆｕｎｃｔｉｏｎｓ）を含むネットワークにおけるスカラー演算を完了する。スカラー基本演算には、スカラー加算、減算、乗算、除算（ａｄｄ、ｓｕｂｔｒａｃｔ、ｍｕｌｔｉｐｌｙ、ｄｉｖｉｄｅ）が含まれ、スカラー超越関数とは、多項式を係数とする多項式方程式を何も満たさない関数であり、指数関数、対数関数、三角関数、逆三角関数が含まれるが、これらに限定されない。論理命令は、ネットワークの論理演算に用いられる。論理演算には、ベクトル論理演算命令及びスカラー論理演算命令が含まれる。ベクトル論理演算命令は、ベクトル比較（ｖｅｃｔｏｒ  ｃｏｍｐａｒｅ）、ベクトル論理演算（ｖｅｃｔｏｒ  ｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）及びベクトルが合併よりも大きいこと（ｖｅｃｔｏｒ  ｇｒｅａｔｅｒ  ｔｈａｎ  ｍｅｒｇｅ）を含む。ベクトル比較には、大きいこと、小さいこと、等しいこと、それ以上、それ以下、及び等しくないことが含まれる。ベクトル論理演算には、論理積、論理和、論理否定が含まれる。スカラー論理演算には、スカラー比較（ｓｃａｌａｒ  ｃｏｍｐａｒｅ）、スカラー論理演算（ｓｃａｌａｒ  ｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）が含まれる。スカラー比較には、大きいこと、小さいこと、等しいこと、それ以上、それ以下、及び等しくないことが含まれる。スカラー論理演算には、論理積、論理和、論理否定が含まれる。
【０２２８】
さらに、本開示の実施例におけるスケジューリングモジュール７００は、演算モジュール３００の演算スケジューリングを実行することができる。スケジューリングモジュール７００は、演算モジュール３００における各演算ユニットの演算状態に基づいて、キャッシュモジュール６００から演算子を選択して、対応する演算ユニットで演算動作を実行するようにスケジューリングすることができる。ここで、スケジューリングモジュール７００は、演算モジュール３００におけるビッグコア演算ユニット及びリトルコア演算ユニットの演算状態をリアルタイムで監視することができ、当該演算状態は、稼動状態及びアイドル状態を含むことができる。スケジューリングモジュール７００は、キャッシュモジュール６００における各演算子の優先度情報を確認し、現在キャッシュされている優先度が最も高い演算子のフラグを確認し、当該フラグに基づいて、当該優先度が最も高い演算子を実行するように演算モジュールを制御する。
【０２２９】
本開示の実施例におけるネットワークモデルデータには、ユーザ優先度及び／又はデータ時効性を含むことができる優先度情報がさらに含まれてもよい。ユーザがネットワークモデルデータを提出するとき、当該ユーザの情報もネットワークモデルデータに含まれる。各ユーザは、システム管理者が各ユーザにそれぞれ設定したユーザ優先度情報を有し、データプロセッサにネットワークモデルデータを提出する時にデータ時効性を指定する。当該データ時効性とは、ユーザがこのネットワークモデルの計算を早急に完了たいか否かということである。データ時効性はブール型で簡単に表すことができ、この値が真であれば、時効性が強い（早急に完了させる必要がある）ことを示し、この値が偽であれば、時効性が弱い（多少遅くてもよい）ことを示す。これに基づき、スケジューリングモジュール７００は、ユーザ優先度が最も高い演算子を決定し、さらにユーザ優先度が最も高い演算子の中からデータ時効性が最も強い演算子を決定し、当該時効性が最も強い演算子に対応するフラグに応じて、当該演算子に対応する演算命令を実行するように演算モジュールを制御する。
【０２３０】
スケジューリングモジュール７００はさらに、演算モジュール３００に空いている演算ユニットが存在するか否かを確認できる。例えば、当該時効性が最も強い演算子に対応するフラグが第１フラグである場合、スケジューリングモジュール７００は、ビッグコアグループ３０１にアイドル状態のビッグコア演算ユニットが存在するか否かを確認し、存在する場合、当該アイドル状態のビッグコア演算ユニットにより上述した時効性が最も強い演算子を実行し、存在しない場合、稼働状態のビッグコア演算ユニットがアイドル状態に切り替わると、当該ビッグコア演算ユニットにより当該時効性が最も強い演算子を実行するか、又はリトルコアグループ３０２におけるアイドル状態のリトルコア演算ユニットにより当該時効性が最も強い演算子を実行することができる。複数のユーザの間に競合関係が存在し得るため、データ時効性のリアルタイム性が満たされない可能性がある。例えば、演算子が本来ビッグコアグループ上で演算するようにフラグされているが、予め設定された時間範囲内に利用可能なビッグコア演算ユニットがない場合（全てのビッグコア演算ユニットが稼働状態にある場合）、スケジューリングモジュール７００は、当該演算子をリトルコア演算ユニットで演算するようにスケジューリングすることができる。当該予め設定された時間範囲は、必要に応じて自由に設定でき、例えば１分間であってもよく、又は３０秒間であってもよく、本開示はこれを限定しない。又は他の実施例では、演算子が本来リトルコアグループ上で演算するようにフラグされているが、予め設定された時間範囲内に利用可能なリトルコア演算ユニットがない場合（全てのビッグコア演算ユニットが稼働状態にある場合）、スケジューリングモジュール７００は、当該演算子をビッグコア演算ユニットで演算するようにスケジューリングすることができる。本開示の実施例に基づいて、スケジューリングモジュール７００が命令スケジューリングを行う際に、ユーザのユーザ優先度が高いほど、そのユーザから指定する時効性が満たされない可能性が低い。
【０２３１】
以上のように、本開示の実施例は、異なる演算子に対応フラグを割り当て、演算モジュールが当該フラグに応じて、異なる演算ユニットを用いて演算動作を実行するようにすることができ、これによりビッグコア演算ユニットにより難易度の高い演算命令を演算し、リトルコア演算ユニットにより難易度の低い演算命令を演算することを実現でき、演算ユニットの合理的な使用を実現すると同時に、消費電力を低減してコストを低減することができる。
【０２３２】
本開示で言及された上記各方法の実施例は、原理的な論理に反しない限り、互いに組み合わて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【０２３３】
また、本開示は、上記実施例におけるデータプロセッサを含むデータ処理チップ、電子機器、及びデータプロセッサに適用されるデータ処理方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【０２３４】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップをさらに提供する。
【０２３５】
いくつかの実施例において、本開示は、上記チップを含むチップパッケージ構造を提供する。
【０２３６】
いくつかの実施例において、本開示は、上記チップパッケージ構造を含む基板カードを提供する。
【０２３７】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサ又はデータ処理チップ、又は上記基板カードを含む電子機器をさらに提供する。
【０２３８】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び／又は医療機器を含む。
【０２３９】
前記乗り物は飛行機、船舶及び／又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、Ｂ超音波装置及び／又は心電計を含む。
【０２４０】
また、本開示の実施例は、上記実施例に記載のデータプロセッサに適用されるデータ処理方法をさらに提供し、図２−５は、本開示の実施例による、データ処理方法のフローチャートを示し、ネットワークモデルの演算動作を実行するための演算子と演算データとを含むネットワークモデルデータを受信して記憶するＳ１００と、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当て、第１フラグが割り当てられている演算子の演算難易度は、第２フラグが割り当てられている演算子の演算難易度よりも大きいＳ２００と、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行するＳ３００とを含むことができる。
【０２４１】
本開示の実施例において、予め設定されたアルゴリズムを用いて各前記演算子に第１フラグ又は第２フラグを割り当てることは、各演算子のそれぞれの、ビッグコア演算ユニットで演算される場合の演算時間とリトルコア演算ユニットで演算される場合の演算時間とに基づいて、各演算子に第１フラグ又は第２フラグを割り当てることを含む。
【０２４２】
本開示の実施例において、各演算子のそれぞれの、ビッグコア演算ユニット及びリトルコア演算ユニットで演算される場合の演算時間に基づいて、各演算子にフラグを割り当てることは、各演算子間の論理関係に基づいて、ノードが各前記演算子に対応する有向グラフを作成することと、ビッグコア演算ユニットが各演算子を実行する第１演算時間と、リトルコア演算ユニットが各演算子を実行する第２演算時間をそれぞれ取得することと、前記第１演算時間を各ノードの遅延時間とし、第１クリティカルパス法を用いて、各ノードに対応する演算子に第１フラグが割り当てられている第１クリティカルパスを決定することとを含む。
【０２４３】
本開示の実施例において、ネットワークモデルデータを受信して記憶することは、記憶モジュール内の空き記憶空間に基づいて各前記ネットワークモデルデータに記憶アドレスを割り当て、前記記憶モジュールの空き記憶空間が不足している場合に、前記ネットワークモデルデータの解放を実行するか、前記ネットワークモデルデータのキャッシュを実行するかを選択することを含む。
【０２４４】
本開示の実施例において、前記ネットワークモデルデータには、ユーザ優先度及び／又はデータ時効性を含む優先度情報が含まれ、前記方法は、前記各演算子及びそれに対応する第１フラグ又は第２フラグをキャッシュすることと、前記ネットワークモデルデータ内の優先度情報に基づいて、前記キャッシュモジュール内の優先度の最も高い演算子を実行するように前記ビッグコア演算ユニット又はリトルコア演算ユニットを制御することとをさらに含む。
【０２４５】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、少なくとも１つの分岐演算ユニットと、複数の従演算ユニットとを含むように構成され、前記主演算ユニットは各分岐演算ユニットにそれぞれ接続され、各分岐演算ユニットに少なくとも１つの従演算ユニットが接続され、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割することと、分岐演算ユニットにより、演算命令及びデータブロックを対応する従演算ユニットに伝送することと、従演算ユニットにより、受信した演算命令及びデータブロックを演算して中間結果を得、分岐演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【０２４６】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットとを含むように構成され、前記複数の従演算ユニットは、ｍ行ｎ列の従演算ユニットとして構成され、前記主演算ユニットは、前記複数の従演算ユニットのうちの、第１行のｎ個の従演算ユニットと、第ｍ行のｎ個の従演算ユニットと、第１列のｍ個の従演算ユニットとを含むＫ個の従演算ユニットに接続され、ここで、ｍ及びｎは１よりも大きい正の整数で、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記複数のデータブロックのうちの少なくとも１つのデータブロック及び複数の演算命令のうちの少なくとも１つの演算命令を前記Ｋ個の従演算ユニットに送信することと、Ｋ個の従演算ユニット以外の残りの従演算ユニットにより、Ｋ個の従演算ユニットから受信した演算命令及びデータブロックを演算して中間結果を得、Ｋ個の従演算ユニットを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【０２４７】
本開示の実施例において、複数のビッグコア演算ユニット及び／又は複数のリトルコア演算ユニットを含み、当該複数のビッグコア演算ユニット又は当該複数のリトルコア演算ユニットは、主演算ユニットと、複数の従演算ユニットと、前記主演算ユニットと従演算ユニットとの間に接続されるツリー型モジュールとを含むように構成され、前記ツリー型モジュールは、１つのルートポートと、複数の分岐ポートとを含み、前記ツリー型モジュールのルートポートが前記主演算ユニットに接続され、前記ツリー型モジュールの複数の分岐ポートが複数の従演算ユニットのうちの１つの従演算ユニットにそれぞれ接続され、ビッグコア演算ユニットにより前記演算データに基づいて第１フラグを持つ演算子を実行し、リトルコア演算ユニットにより前記演算データに基づいて第２フラグを持つ演算子を実行することは、主演算ユニットにより、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、前記データブロック及び演算命令をツリー型モジュールのルートポートに伝送することと、ツリー型モジュールの各分岐ポートに接続される従演算ユニットにより、受信した演算命令及びデータブロックに基づいて演算を実行して中間結果を得、ツリー型モジュールを介して当該中間結果を主演算ユニットに伝送して最終演算結果を得ることとを含む。
【０２４８】
図２−６は、本開示の一例示的な実施例による、電子機器のブロック図を示す。電子機器は、端末、サーバ又はその他の形態の機器として提供されることができる。電子機器は、分類タスク増分処理装置８００を含むことができる。例如、当該装置８００は、携帯電話、コンピュータ、デジタル放送端末、メッセージ送受信機器、ゲームコンソール、タブレット型機器、医療機器、フィットネス機器、パーソナル・デジタル・アシスタント等の端末であってもよい。
【０２４９】
図２−６に示すように、装置８００は、処理コンポーネント８０２、メモリ８０４、電源コンポーネント８０６、マルチメディアコンポーネント８０８、オーディオコンポーネント８１０、入力／出力（Ｉ／Ｏ）のインタフェース８１２、センサコンポーネント８１４、および通信コンポーネント８１６のうちの一つ以上を含んでもよい。
【０２５０】
処理コンポーネント８０２は通常、機器８００の全体的な動作、例えば表示、電話の呼び出し、データ通信、カメラ動作および記録動作に関連する動作を制御する。処理コンポーネント８０２は、上記方法のステップの全てまたは一部を実行するために、命令を実行する一つ以上のプロセッサ８２０を含んでもよい。また、処理コンポーネント８０２は、他のコンポーネントとのインタラクションのための一つ以上のモジュールを含んでもよい。例えば、処理コンポーネント８０２は、マルチメディアコンポーネント８０８とのインタラクションのために、マルチメディアモジュールを含んでもよい。
【０２５１】
メモリ８０４は機器８００での動作をサポートするための様々なタイプのデータを記憶するように構成される。これらのデータは、例として、機器８００において操作するあらゆるアプリケーションプログラムまたは方法の命令、連絡先データ、電話帳データ、メッセージ、ピクチャー、ビデオなどを含む。メモリ８０４は、例えば静的ランダムアクセスメモリ（ＳＲＡＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、読み取り専用メモリ（ＲＯＭ）、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなどの様々なタイプの揮発性または不揮発性記憶装置またはそれらの組み合わせによって実現できる。
【０２５２】
電源コンポーネント８０６は機器８００の各コンポーネントに電力を供給する。電源コンポーネント８０６は電源管理システム、一つ以上の電源、および機器８００のための電力生成、管理および配分に関連する他のコンポーネントを含んでもよい。
【０２５３】
マルチメディアコンポーネント８０８は前記機器８００とユーザとの間で出力インタフェースを提供するスクリーンを含む。いくつかの実施例では、スクリーンは液晶ディスプレイ（ＬＣＤ）およびタッチパネル（ＴＰ）を含んでもよい。スクリーンがタッチパネルを含む場合、ユーザからの入力信号を受信するタッチスクリーンとして実現してもよい。タッチパネルは、タッチ、スライドおよびタッチパネルでのジェスチャーを検知するように、一つ以上のタッチセンサを含む。前記タッチセンサはタッチまたはスライド動きの境界を検知するのみならず、前記タッチまたはスライド操作に関連する持続時間および圧力を検出するようにしてもよい。いくつかの実施例では、マルチメディアコンポーネント８０８は前面カメラおよび／または背面カメラを含む。機器８００が動作モード、例えば撮影モードまたは撮像モードになる場合、前面カメラおよび／または背面カメラは外部のマルチメディアデータを受信するようにしてもよい。各前面カメラおよび背面カメラは、固定された光学レンズ系、または焦点距離および光学ズーム能力を有するものであってもよい。
【０２５４】
オーディオコンポーネント８１０はオーディオ信号を出力および／または入力するように構成される。例えば、オーディオコンポーネント８１０は、一つのマイク（ＭＩＣ）を含み、マイク（ＭＩＣ）は、機器８００が動作モード、例えば呼び出しモード、記録モードおよび音声認識モードになる場合、外部のオーディオ信号を受信するように構成される。受信されたオーディオ信号はさらにメモリ８０４に記憶されるか、または通信コンポーネント８１６を介して送信されてもよい。いくつかの実施例では、オーディオコンポーネント８１０はさらに、オーディオ信号を出力するためのスピーカーを含む。
【０２５５】
Ｉ／Ｏインタフェース８１２は処理コンポーネント８０２と周辺インタフェースモジュールとの間でインタフェースを提供し、上記周辺インタフェースモジュールはキーボード、クリックホイール、ボタンなどであってもよい。これらのボタンはホームボタン、音量ボタン、スタートボタンおよびロックボタンを含んでもよいが、これらに限定されない。
【０２５６】
センサコンポーネント８１４は機器８００の各方面の状態評価のために一つ以上のセンサを含む。例えば、センサコンポーネント８１４は機器８００のオン／オフ状態、例えば機器８００の表示装置およびキーパッドのようなコンポーネントの相対的位置決めを検出でき、センサコンポーネント８１４はさらに、機器８００または機器８００のあるコンポーネントの位置の変化、ユーザと機器８００との接触の有無、機器８００の方位または加減速および機器８００の温度変化を検出できる。センサコンポーネント８１４は、いかなる物理的接触もない場合に近傍の物体の存在を検出するように構成される近接センサを含んでもよい。センサコンポーネント８１４はさらに、ＣＭＯＳまたはＣＣＤイメージセンサのような、イメージングアプリケーションにおいて使用するための光センサを含んでもよい。いくつかの実施例では、該センサコンポーネント８１４はさらに、加速度センサ、ジャイロセンサ、磁気センサ、圧力センサまたは温度センサを含んでもよい。
【０２５７】
通信コンポーネント８１６は機器８００と他の機器との有線または無線通信を実現するように構成される。機器８００は通信規格に基づく無線ネットワーク、例えばＷｉＦｉ、２Ｇまたは３Ｇ、またはそれらの組み合わせにアクセスできる。一例示的実施例では、通信コンポーネント８１６は放送チャネルを介して外部の放送管理システムからの放送信号または放送関連情報を受信する。一例示的実施例では、前記通信コンポーネント８１６はさらに、近距離通信を促進させるために、近距離無線通信（ＮＦＣ）モジュールを含む。例えば、ＮＦＣモジュールは、無線周波数識別（ＲＦＩＤ）技術、赤外線データ協会（ＩｒＤＡ）技術、超広帯域（ＵＷＢ）技術、ブルートゥース（登録商標）（ＢＴ）技術および他の技術によって実現できる。
【０２５８】
例示的な実施例では、機器８００は一つ以上の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタルシグナルプロセッサ（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コントローラ、マイクロコントローラ、マイクロプロセッサまたは他の電子要素によって実現され、上記方法を実行するために用いられることができる。
【０２５９】
例示的な実施例において、コンピュータプログラム命令が記憶されている不揮発性コンピュータ読み取り可能な記憶媒体も提供される。前記コンピュータプログラム命令がプロセッサによって実行されと、上記実施例に記載の分類タスク増分処理方法を実現させる。例えば、コンピュータプログラム命令を含むメモリ８０４が提供され、上述のコンピュータプログラム命令は、機器８００のプロセッサ８２０によって実行されと、上述の方法を実行させることができる。
【０２６０】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【０２６１】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【０２６２】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【０２６３】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、１つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【０２６４】
また、本出願の各実施例における各機能ユニットは、１つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、２つ以上のユニットが１つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【０２６５】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は１つのメモリに記憶され、１つのコンピュータ機器（パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい）に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【０２６６】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ（英語：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、略称：ＲＯＭ）、ランダムアクセスメモリ（英語：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、略称：ＲＡＭ）、磁気ディスク又は光ディスクなどがある。
【０２６７】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。
【０２６８】
また、従来技術では、深層学習に関するネットワークモデルは、通常、大量の演算が存在する。例えばニューラルネットワーク計算に、いくつかの計算の並列処理の必要があり、例えば順方向演算、逆方向演算、重み更新などのプロセスに多くの並列演算の必要がある。従来の並列計算システムでは、処理ユニットは、アクセスオーバーヘッドが大きすぎる記憶ユニットからデータを読み書きする必要があり、大量の並列演算が存在するため、帯域幅に対する需要が非常に高くなり、消費電力オーバヘッドが巨大となってしまう。
【０２６９】
本開示の実施例は、コストを低減でき且つ帯域幅の需要を低減できる技術的解決手段を提供し、演算装置、データ処理チップ、電子機器及び演算方法を提供する。本開示は、データ処理技術の分野に関し、特に、演算装置、データ処理チップ、電子機器及び演算方法に関する。
【０２７０】
以下に、図面を参照しながら本開示の様々な例示的な実施例、特徴および態様を詳細に説明する。図面における同じ符号は同じまたは類似する機能の要素を示す。図面において実施例の様々な方面を示したが、特に断らない限り、比例に従って図面を描く必要がない。
【０２７１】
ここでの用語「例示的」とは、「例、実施例として用いられることまたは説明的なもの」を意味する。ここで「例示的」に説明されるいかなる実施例は他の実施例より好ましいまたは優れるものであると理解すべきではない。
【０２７２】
また、本開示をより効果的に説明するために、以下の具体的な実施形態において様々な具体的な詳細を示す。当業者であれば、本開示は何らかの具体的な詳細がなくても同様に実施できると理解すべきである。いくつかの実施例では、本開示の趣旨を強調するために、当業者が熟知している方法、手段、要素および回路について詳細な説明を行わない。
【０２７３】
本開示の実施例は、深層学習ネットワークモデルの相関演算の計算に用いられることができ、コストを低減できるとともに、アクセスデータの帯域幅の要求を低減できる演算装置を提供する。
【０２７４】
図３−１は、本開示の実施例による、演算装置のブロック図を示す。当該演算装置は、複数の演算モジュール１００を含むことができ、当該複数の演算モジュール１００は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を完了でき、即ち本開示の実施例における演算モジュール１００は、ネットワークモデルの演算を完了するための異なる演算サブコマンドを並列に実行できる。図３−１は、４つの演算モジュールを含む実施例を示しており、各演算モジュール同士は相互に接続されてもよいし、一部の演算モジュール同士は相互に接続されてもよく、本開示はこれを限定しない。
【０２７５】
本開示の実施例におけるネットワークモデルは、ニューラルネットワークモデルを含んでいてもよいし、機械学習のための他のネットワークモデルを含んでいてもよい。当該ネットワークモデルは、機械学習や上述したニューラルネットワーク学習のために用いられてもよく、演算装置は、当該ネットワークモデルの演算を実行するために用いられてもよい。演算装置は、ネットワークモデルに関する演算コマンドを受信し、且つ当該演算コマンドに基づいて複数の演算サブコマンドを対応して生成し、当該複数の演算サブコマンドがそれぞれ複数の演算モジュール１００に割り当てられ、即ち各演算モジュール１００が１つ以上の演算サブコマンドを対応して実行することにより、ネットワークモデルの関連演算を対応して完了できる。ここで、演算コマンドには、演算装置により実行する演算動作が含まれる。
【０２７６】
ネットワークモデルが人工ニューラルネットワークモデルを含む場合、前記演算コマンドは、演算情報、入力ニューロンデータ、重みデータ、及び出力ニューロンデータを含むことができる。上記演算情報は、順方向演算命令又は逆方向トレーニング命令、又は畳み込み演算命令などの他のニューラルネットワーク演算命令などを含むが、これらに限定されず、本出願の具体的な実施形態は上記計算命令の具体的な表現形態を限定しない。
【０２７７】
以上説明したように、本開示の実施例における演算装置は、受信した演算コマンドに基づいて複数の演算サブコマンドを生成し、各演算モジュール１００に対応する演算サブコマンドを割り当てて対応する演算動作を実行することができる。ここで、各演算モジュール１００は、少なくとも１つの演算ユニット１０１と、各演算ユニット１０１に接続される記憶ユニット１０２とを含む。各演算モジュールにおける演算ユニット１０１の数や種類は、同一であっても異なってもよく、異なる演算ニーズに応じて自由に設定することができる。演算ユニット１０１は、１つ以上の乗算器、１つ以上の加算器、加算器からなる加算ツリー、関数活性化ユニット、ベクトル処理ユニットなどの少なくとも１つ以上を含んでもよい。他の実施例では、他の演算デバイスを含んでもよい。乗算器は、入力データ１（ｉｎ１）と入力データ２（ｉｎ２）を乗算して乗算後の出力（ｏｕｔ）を得ることができ、そのプロセスは、ｏｕｔ＝ｉｎ１＊ｉｎ２である。加算器は、入力データｉｎ１を加算器で加算して出力データ（ｏｕｔ）を得ることができる。加算ツリーは、入力データｉｎ１を加算ツリーによって段階的に加算して出力データ（ｏｕｔ）を得ることができ、ここでｉｎ１は長さＮのベクトルであり、Ｎは１よりも大きく、演算プロセスは、ｏｕｔ＝ｉｎ１［１］＋ｉｎ１［２］＋．．．＋ｉｎ１［Ｎ］であり、及び／又は入力データ（ｉｎ１）を加算ツリーによって累積加算した後に入力データ（ｉｎ２）と加算して出力データ（ｏｕｔ）を得ることができ、そのプロセスは、ｏｕｔ＝ｉｎ１［１］＋ｉｎ１［２］＋．．．＋ｉｎ１［Ｎ］＋ｉｎ２であり、又は入力データ（ｉｎ１）と入力データ（ｉｎ２）を加算して出力データ（ｏｕｔ）を得ることができ、そのプロセスは、ｏｕｔ＝ｉｎ１＋ｉｎ２である。関数活性化ユニットは入力データ（ｉｎ）を活性化関数（ａｃｔｉｖｅ）演算によって活性化出力データ（ｏｕｔ）を得ることができ、そのプロセスは：ｏｕｔ＝ａｃｔｉｖｅ（ｉｎ）であり、活性化関数ａｃｔｉｖｅはｓｉｇｍｏｉｄ、ｔａｎｈ、ｒｅｌｕ又はｓｏｆｔｍａｘなどを含むことができるが、他の活性化関数であってもよい。関数活性化ユニットは、活性化動作に加えて、入力データ（ｉｎ）を演算（ｆ）によって出力データ（ｏｕｔ）を得る他の非線形関数を実現することができ、そのプロセスは、ｏｕｔ＝ｆ（ｉｎ）である。ベクトル処理ユニットは、ベクトル演算及び／又はプール化演算を処理することができる。プール化演算は、入力データ（ｉｎ）をプール化演算によってプール化動作後の出力データ（ｏｕｔ）を得ることができ、そのプロセスは、ｏｕｔ＝ｐｏｏｌ（ｉｎ）であり、ｐｏｏｌはプール化動作関数であり、プール化動作には、平均値プール化、最大値プール化、中央値プール化が含まれるが、これに限定されなく、入力データｉｎは、出力ｏｕｔに関連するプール化コア内のデータである。
【０２７８】
あるいは、本開示の実施例において、演算ユニット１０１は、対応する演算サブコマンドを実行するためのネットワークプロセッサ（ＮＰＵ）、又はコンピュータ機器など演算機能を有する電子機器又はデバイスを含んでもよく、本開示の実施例を限定するものではない。本開示の実施例において、演算モジュール内の演算ユニット及び記憶ユニットは、両者間のデータ伝送を容易にするために、１つの機器又はデバイス内に設置された電子デバイスであってもよい。
【０２７９】
本開示の実施例における各演算モジュール１００は、異なる演算を実行して対応する演算サブコマンドを完了するための少なくとも１つの演算ユニット１０１を含むことができる。つまり、各演算モジュール１００は、受信した演算サブコマンドに応じて、異なる演算ユニット１０１を対応して制御して対応する演算動作を実行することができる。例えば、演算サブコマンドに加算命令が含まれている場合に、加算器を用いて加算動作を実行するなどである。ここで、本開示の実施例において詳細な説明を省略するが、演算サブコマンドに基づいて実行すべき演算プログラムを認識し、対応する演算ユニット１０１によって対応する演算プログラムを実行できれば、本開示の実施例とすることができる。
【０２８０】
また、演算ユニット１０１は、対応する演算サブコマンドを実行する際に演算データを呼び出す場合がある。例えば、本開示の実施例における演算ユニット１０１は、第１演算サブデータを用いて第１演算サブコマンドを実行してもよく、ここで、第１演算サブコマンドは、演算ユニット１０１に割り当てられて該当演算を実行させる命令であり、第１演算サブデータは、当該第１演算サブコマンドの実行に必要なデータである。
【０２８１】
ここで、ネットワークモデルにより対応する演算コマンドを実行する際に、当該演算コマンドに関する演算データを受信し、本開示の実施例における演算モジュールは当該演算データを各演算モジュールの記憶ユニット１０２内に対応して伝送するか、又は、各演算モジュール１００が実行すべき演算サブコマンドに応じて演算データの少なくとも一部である演算サブデータを演算モジュールに割り当てることができる。つまり、本開示の実施例における記憶ユニット１０２は、そのグループ内の演算ユニットに必要な第１演算サブデータを少なくとも記憶するために用いられ、当該第１演算サブデータは、前記第１演算サブコマンドを実行するためのデータを含む。ここで、各演算モジュール１００が実行する演算サブコマンドは、同一であっても異なってもよく、具体的には、異なる演算ニーズに応じて割り当てられてもよい。本開示の実施例における記憶ユニット１０２は、データ記憶を実行するために、キャッシュ、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも１つを含むことができる。
【０２８２】
本開示の実施例の上記構成に基づいて、各演算モジュールに必要なデータを１つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させることができる。この構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができる。
【０２８３】
本開示の実施例における演算モジュール１００内の各演算ユニット１０１は、Ｈ型構造、パルスアレイマシン構造及びツリー構造のいずれか一つとして構成されることができる。ここで、各演算モジュール１００内の演算ユニットの構造は、同一であっても異なってもよく、当業者により必要に応じて設定することができ、本開示はこれを限定しない。以下、演算モジュール内の各演算ユニットの構造について、上記の構成として説明する。
【０２８４】
図３−５は、本開示の実施例による、Ｈ型構造として構成される演算モジュールのブロック図を示す。図３−５に示すように、演算モジュール１００内の各演算ユニット１０１がＨ型構造として構成される場合、各演算ユニットは、主演算ユニット１００１と、少なくとも１つの分岐演算ユニット１００２と、複数の従演算ユニット１００３とを含むことができる。主演算ユニット１００１は、各分岐演算ユニット１００２に接続され、分岐演算ユニット１００２は、従演算ユニット１００３のうちの少なくとも１つにそれぞれ接続されてもよい。図３−５に示すように、４つの分岐演算ユニット１００２を含み、各分岐演算ユニット１００２に４つの従演算ユニット１００３がそれぞれ接続されており、当該分岐演算ユニット１００２は、主演算ユニット１００１と従演算ユニット１００３との間のデータ、命令及び中間結果の伝送に用いられることができる。各分岐演算ユニット１００２は、演算サブコマンドを実行する際に、モジュール内の記憶ユニット１０２内に記憶されているデータにより動作を実行することができる。
【０２８５】
主演算ユニット１００１は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割し、分岐演算ユニット１００２を介して演算命令及びデータブロックを対応する従演算ユニット１００３に伝送し、演算が行われた中間結果を得、前記中間結果に基づいて最終演算結果を得るように構成され、分岐演算ユニットは、前記主演算ユニットと従演算ユニットとの間でデータブロック、演算命令及び重みなどの情報を転送するように構成される。
【０２８６】
従演算ユニット１００３は、対応する演算命令が完了すると、対応する中間結果を生成し、分岐演算ユニット１００２を介して当該中間結果を主演算ユニット１００１に返すことができる。即ち、各従演算ユニットは、８個のサブ行列と重み行列ｗとの乗算と累積加算とを並列的に実行して８個の中間結果を得、８個の中間結果を主演算ユニット１００１に送ることができる。
【０２８７】
主演算ユニット１００１は、８個の中間結果をソートして対応する演算結果を得、当該演算結果に対してバイアスｂの演算を実行した後に活性化動作を実行して最終結果ｙを得、最終結果ｙを記憶モジュール１００に送信して記憶させたり、他の電子デバイスに伝送して後続の処理を行ったりことができ、即ち、当該最終結果ｙを出力するか又は記憶ユニット１０２内に記憶することができる。
【０２８８】
また、図３−６は、本開示の実施例による、パルスアレイマシン構造として構成される演算モジュールのブロック図を示す。ここで、演算モジュール１００内の各演算ユニット１０１がパルスアレイマシン構造として構成される場合、各演算ユニットは、主演算ユニット１００１及び複数の従演算ユニット１００３を含むことができる。複数の従演算ユニット１００３は、アレイ状に分布しており、ｍ行ｎ列（ｍ及びｎは１よりも大きい正の整数である）の従演算ユニットとして構成され、各従演算ユニット１００３は隣接する他の従演算ユニット１００３に接続され、主演算ユニット１００１は前記複数の従演算ユニット１００３のうちのｋ個の従演算ユニット１００３に接続され、前記ｋ個の従演算ユニット１００３は、第１行のｎ個の従演算ユニット１００３、第ｍ行のｎ個の従演算ユニット１００３及び第１列のｍ個の従演算ユニット１００３である。なお、説明したいのは、図３−６に示されるＫ個の従演算ユニット１００３は、第１行のｎ個の従演算ユニット１００３、第ｍ行のｎ個の従演算ユニット１００３及び第１列のｍ個の従演算ユニット１００３のみを含み、即ち当該ｋ個の従演算ユニット１００３は、複数の従演算ユニット１００３のうちの、主演算ユニット１００１に直接接続される従演算ユニット１００３である。当該Ｋ個の従演算ユニット１００３は、前記主演算ユニット１００１及び複数の従演算ユニット１００３の間でのデータ及び命令の転送に用いられることができる。Ｋ個の従演算ユニットを除く残りの従演算ユニットは、当該演算命令に従って、受信したデータブロックに対して演算を実行して中間結果を得、演算結果を前記Ｋ個の従演算ユニットに伝送するように構成される。
【０２８９】
主演算ユニット１００１は、割り当てられた演算子をＫ個の従演算ユニット１００３に伝送して演算することができ、残りの従演算ユニット１００３に接続することにより、当該残りの従演算ユニット１００３から中間結果を得ることができる。主演算ユニット１００１は、当該複数の残りの従演算ユニット１００３から送信された中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶ユニット１０２に送信して記憶させるために用いられることができる。
【０２９０】
また、図３−７は、本開示の実施例による、ツリー構造として構成される演算モジュールのブロック図を示す。演算モジュール１００における各演算ユニットがツリー構造として構成される場合、各演算ユニットは、主演算ユニット１００１及び複数の従演算ユニット１００３、前記主演算ユニット１００１と従演算ユニットとの間に接続されるツリー型モジュール１００４を含むことができる。ここで、前記ツリー型モジュール１００４は、１つのルートポート１及び複数の分岐ポート２を含み、前記ツリー型モジュールのルートポートは、前記主演算ユニット１００１に接続され、前記ツリー型モジュールの複数の分岐ポートは、複数の従演算ユニットのうちの１つの従演算ユニットにそれぞれ接続される。上記ツリー型モジュールは、送受信機能を有する。図３−７に示すように、当該ツリー型モジュールが送信機能を有するが、他の実施例では受信機能を有してもよく、ここで限定しない。ツリー型モジュール１００４は、前記主演算ユニットと前記複数の従演算ユニットとの間でデータブロック、重み及び演算命令を転送するために使用され得る。主演算ユニット１００４は、受信した演算子を複数の演算命令に分割し、演算データを複数のデータブロックに分割して、ツリー型モジュール１００４に送信し、次いで、ツリー型モジュール１００４は、対応するデータ、演算命令及び重みを対応する従演算ユニット１００３に伝送し、従演算ユニット１００３から中間結果を受信して主演算ユニット１００１に伝送する。そして、主演算ユニット１００１は、中間結果を処理して最終的な演算結果を得、当該演算結果を前記記憶ユニット１０２に送信して記憶させることができる。
【０２９１】
本開示の実施例において、当該ツリー型モジュールは、少なくとも１層の、転送機能を有する線構造であるノードを含むことができ、当該ノード自体は、計算機能を有さなくてもよい。ツリー型モジュールがゼロ層のノードを有する場合、当該ツリー型モジュールは不要である。
【０２９２】
当該ツリー型モジュール１００４は、ｎ分木構造であってもよい。例えば、図３−８に、本開示の実施例における２分木構造として構成される演算ユニットのブロック図を示すが、他の実施例では、各演算ユニットは、３分木構造、又は他のｎ分木構造として構成されてもよく、当該ｎは２以上の整数であることができる。本出願の具体的な実施形態は、上記ｎの具体的な取り得る値を限定しなく、上記層数は２であってもよいし、他の層数であってもよい。従演算ユニットは、最後から２番目の層のノード以外の他の層のノードに接続され、例えば、最後から１番目の層のノードに接続されるようにしてもよい。
【０２９３】
また、本開示の実施例における演算ユニットは、単独のキャッシュを有することができ、例えば、当該従演算ユニットの入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュするニューロンキャッシュユニットを含むことができる。
【０２９４】
本開示の実施例において、各演算モジュールは、互いに接続されてもよいし、少なくとも２つの演算モジュールの接続関係が選択的に確立されてもよい。例えば、少なくとも２つの演算モジュール間にデータ接続が存在し、一方の演算モジュールが前記第１演算サブデータと他方の演算モジュールの第２演算サブデータとを用いて前記第１演算サブコマンドを実行し、ここで、第２演算サブデータは、当該他方の演算モジュールの記憶ユニットに記憶されているデータ及び／又は当該他方の演算モジュールの演算ユニットにより生成されたデータを含む。つまり、本開示の実施例における各演算モジュール１００間には、２つ演算モジュール間のデータ伝送チャネルを確立することができる有線接続や無線接続などのデータ接続関係が存在してもよい。ここで、演算モジュール１００が第１演算サブコマンドを実行する際に、他方の演算モジュール１００が生成したデータを必要とする場合、当該２つの演算モジュール間の接続関係により、データの伝送を実現することができる。
【０２９５】
図３−２は、本開示の実施例による、演算装置のブロック図を示し、複数の演算モジュール１００に加えて、制御モジュール２００を含むことができる。当該制御モジュール２００は、対応する演算サブコマンドを実行するように演算モジュールを制御し、対応する演算サブデータを記憶するようにメモリを制御するために用いられてもよく、また、制御モジュール２００は、各演算モジュール間の接続状態を制御してもよい。
【０２９６】
本開示の実施例における制御モジュール２００は、ネットワークモデルに関する演算コマンドを受信してもよく、通信モジュールを介して演算コマンドやその他の情報を受信及び伝送してもよく、演算コマンドやその他の情報を直接受信してもよい。通信モジュールは、光ファイバ、ツイストペアケーブル又は同軸ケーブルを含む有線ケーブルを介して情報の伝送を実行する有線通信ユニット及び／又は無線通信により情報の伝送を実行する無線通信ユニットを含むことができる。無線通信ユニットは、ｗｉｆｉモジュール、ＮＦＣモジュールなどを含む。同様に、各演算モジュール１００間は有線又は無線によりデータ接続されてもよく、例えば光ファイバにより接続されてもよい。
【０２９７】
制御モジュール２００は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュール１００に、対応する演算サブコマンド及び演算サブデータを割り当てることができる。当該演算コマンドは、ネットワークモデル演算を実行するための複数の演算サブコマンドを含み、演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。本開示の実施例における制御モジュール２００は、受信した演算コマンドにおける演算論理関係に基づいて、各演算サブコマンド及び演算サブデータを決定することができる。例えば、制御モジュール２００は、演算コマンドの論理関係に基づいて有向グラフを作成することができる。当該有向グラフのノードは、各演算サブコマンドを区分するために用いられることができ、即ち２つのノード間の演算動作に対応する演算コマンドを１つの演算サブコマンドとすることができ、この場合に、当該演算サブコマンドの入力データから必要な演算サブデータを決定することもできる。これにより、演算モジュールを割り当てて当該演算サブコマンドを実行し、当該演算モジュール内の記憶ユニットに演算サブデータを割り当てることができる。
【０２９８】
また、制御モジュール２００は、各演算モジュールが対応する演算サブコマンドを実行する際に、他の演算モジュールからのデータが必要されるか否かを確認でき、必要であれば、当該２つの演算モジュール間の接続をオンにし、必要でなければ、２つの演算モジュール間の接続を確立しない。例えば、本開示の実施例は、各演算モジュール間のオン又はオフを切り替えコンポーネントによって実行することができ、各演算モジュールを当該切り替えコンポーネントにそれぞれ接続し、当該切り替えコンポーネントの対応する回線のオンを制御することにより、対応する演算モジュール間の接続を実現することができる。この構成により、演算装置の内部構造を簡素化することができる。
【０２９９】
図３−３は、本開示の実施例による、制御モジュールのブロック図を示す。本開示の実施例における制御モジュール２００は、第１割り当てユニット２０１と、第２割り当てユニット２０２とを含むことができる。
【０３００】
第１割り当てユニット２０１は、受信した演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュール１００に対応して割り当てて演算を行うことができる。第２割り当てユニット２０２は、各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、演算サブデータを対応する演算モジュールに割り当てて記憶させるために用いられることができる。
【０３０１】
つまり、本開示の実施例は、演算コマンドの割り当てを第１割り当てユニット２０１により実行し、演算データの割り当てを第２割り当てユニット２０２により実行することができる。これにより、各演算モジュールがそれぞれの演算サブコマンドを実行する際に、演算モジュール内の記憶ユニットに記憶されているデータを利用して演算動作を完了させることができる。
【０３０２】
本開示の実施例における構造構成を明確にするために、以下、本開示の実施例における演算装置を例に挙げて説明する。本開示の実施例における演算装置は、４つの演算モジュール１００を含み、各演算モジュール１００は、１つの記憶ユニット１０２と、４つの演算ユニット１０１とを含むことができる。例えば、第１演算モジュール１００は、記憶ユニットＡ０と演算ユニットＢ０、Ｂ１、Ｂ１１、Ｂ１０を含み、第２演算モジュール１００は、記憶ユニットＡ１と演算ユニットＢ２、Ｂ９、Ｂ１２、Ｂ１５を含み、第３演算モジュール１００は、記憶ユニットＡ２と演算ユニットＢ４、Ｂ５、Ｂ６、Ｂ７を含み、第４演算モジュール１００は、記憶ユニットＡ３と演算ユニットＢ３、Ｂ８、Ｂ１３、Ｂ１４を含むことができる。各演算モジュール１００における演算ユニットは、互いに接続されてもよく、各演算モジュール１００は、制御モジュール２００の制御に応じて選択的に接続されてもよい。
【０３０３】
また、制御モジュール２００は、受信した演算コマンド及び演算データに基づいて、各演算モジュールに、対応する演算サブコマンドを割り当てるとともに、対応する演算サブデータを記憶ユニットに割り当てるようにしてもよい。以上の構成により、演算装置の拡張性が保証されるとともに、各演算モジュールの設置により演算装置のＮｕｍａアーキテクチャが実現される。
【０３０４】
以上のように、本開示の実施例は、各演算モジュールに必要なデータを１つのメモリに記憶させることなく、各演算モジュール内の記憶ユニットにその演算に必要なデータを記憶させることができる。この構成により、各演算モジュールの記憶ユニットに対するデータアクセスの帯域幅を減少させ、データ伝送速度を向上させることができる。同時に、大型記憶装置で全ての演算モジュールのデータを記憶・読み書きする必要がないため、大容量且つ高いデータ読み書き速度の記憶装置を設置する必要がなく、記憶装置のコストを低減することができる。また、本開示の実施例は、演算装置の拡張性を向上させることができ、演算機能に対応する演算モジュールを追加することにより、演算装置の演算機能を容易に拡張することができる。
【０３０５】
本開示で言及された上記各実施例は、原理的な論理に反しない限り、互いに組み合わせて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【０３０６】
また、本開示は、上記実施例における演算装置を含むデータ処理チップ、電子機器、及び演算装置に適用される演算方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【０３０７】
本開示の実施例は、上記実施例のいずれか一項に記載の演算装置を含むデータ処理チップをさらに提供する。
【０３０８】
いくつかの実施例において、本開示は、上記データ処理チップを含むチップパッケージ構造を提供する。
【０３０９】
いくつかの実施例において、本開示は、上記チップパッケージ構造を含む基板カードを提供する。
【０３１０】
本開示の実施例は、上記実施例のいずれか一項に記載の演算装置又はチップ、又は上記基板カードを含む電子機器をさらに提供する。
【０３１１】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び／又は医療機器を含む。
【０３１２】
前記乗り物は飛行機、船舶及び／又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、Ｂ超音波装置及び／又は心電計を含む。
【０３１３】
また、本開示の実施例は、上記実施例に記載の演算装置に適用される演算方法をさらに提供し、演算装置は、複数の演算モジュールを含み、当該複数の演算モジュールは、対応する演算サブコマンドを並列に実行することにより、ネットワークモデルの演算動作を完了する。図３−４は、本開示の実施例による、演算方法のフローチャートを示す。各演算モジュールの記憶ユニットにより、第１演算サブコマンドを実行するためのデータを含む第１演算サブデータを記憶するＳ１００と、各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行するＳ２００とを含むことができ、ここで、各演算モジュールが実行する演算サブコマンドが異なってもよい。
【０３１４】
本開示の実施例において、各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行することは、前記第１演算サブデータ及び他方の演算モジュールの第２演算サブデータを用いて第１演算サブコマンドを実行することをさらに含み、前記第２演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び／又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含む。
【０３１５】
本開示の実施例において、前記方法は、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含む。
【０３１６】
本開示の実施例において、受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、第１割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、第２割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含む。
【０３１７】
本開示の実施例において、前記方法は、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含む。
【０３１８】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【０３１９】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【０３２０】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【０３２１】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、１つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【０３２２】
また、本出願の各実施例における各機能ユニットは、１つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、２つ以上のユニットが１つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【０３２３】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は１つのメモリに記憶され、１つのコンピュータ機器（パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい）に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【０３２４】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ（英語：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、略称：ＲＯＭ）、ランダムアクセスメモリ（英語：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、略称：ＲＡＭ）、磁気ディスク又は光ディスクなどがある。
【０３２５】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。
【０３２６】
また、バス構造のプロセッサでは、プロセッサ内部で一種の固定形式のデータを演算するが、プロセッサからメモリにデータを書き込むとき、２種の形式でメモリにデータを書き込むことができる。１つ目の形式は、ビッグエンディアン（ｂｉｇ  ｅｎｄｉａｎ）と呼ばれ、即ちプロセッサ内部データの論理上位バイトがメモリの下位アドレスに書き込まれ、プロセッサ内部データの論理下位バイトがメモリの上位アドレスに書き込まれる。２つ目の形式は、リトルエンディアンと呼ばれ、データがメモリに記憶される順序がビッグエンディアンと逆になる。既存のプロセッサは、ビッグエンディアンのデータ演算のみをサポートしているか、又はリトルエンディアンのデータ演算のみをサポートしているため、従来技術は、適用性がよくないという欠点がある。
【０３２７】
本開示の実施例は、適用性に優れ、コストを低減することができるデータプロセッサ、チップ、電子機器及びデータ処理方法を提案する。本開示は、データ処理の分野に関し、特にデータプロセッサ、チップ、電子機器及びデータ処理方法に関する。
【０３２８】
以下、添付の図面を参照しながら、本開示の様々な例示的な実施例、特徴及び態様を詳細に説明する。図面における同じ符号は同じまたは類似する機能の要素を示す。図面において実施例の様々な方面を示したが、特に断らない限り、比例に従って図面を描く必要がない。
【０３２９】
ここでの用語「例示的」とは、「例、実施例として用いられることまたは説明的なもの」を意味する。ここで「例示的」に説明されるいかなる実施例は他の実施例より好ましいまたは優れるものであると理解すべきではない。
【０３３０】
また、本開示をより効果的に説明するために、以下の具体的な実施形態において様々な具体的な詳細を示す。当業者であれば、本開示は何らかの具体的な詳細がなくても同様に実施できると理解すべきである。いくつかの実施例では、本開示の趣旨を強調するために、当業者が熟知している方法、手段、要素および回路について詳細な説明を行わない。
【０３３１】
図４−１は、本開示の実施例による、データプロセッサのブロック図を示す。本開示の実施例のデータプロセッサは、データ処理用のチップとして構成されることもできるし、電子機器内に配置されて対応するデータ処理動作を実行することもできる。当該データプロセッサにより、ビッグエンディアンとリトルエンディアンの両方への適用を実現することができ、適用性を向上させ、コストを低減することもできる。
【０３３２】
図４−１に示すように、本開示の実施例のデータプロセッサは、データ変換モジュール１００と、当該データ変換モジュール１００に接続される制御モジュール２００とを含むことができる。
【０３３３】
データ変換モジュール１００は、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第１データを第２データに変換することができる。制御モジュール２００は、受信した制御信号に基づいて、前記第１データのバイト順が予め設定されたバイト順と異なると確認した場合、前記第１データを第２データに変換するようにデータ変換モジュール１００を制御することができる。
【０３３４】
本開示の実施例において、データ変換モジュール１００は、制御モジュール２００によって伝送されたデータ変換命令に従って第１データを第２データに変換することができ、この場合、予め設定された粒度に従って第１データを予め設定されたバイト順形式を有する第２データに変換することを含むことができる。ここで、データ粒度は、データのバイトビット数を意味し、例えば、８ビット、１６ビット、３２ビット、６４ビットなどであるが、本開示においてこれに限定されない。バイト順とは、バイトの記憶時の並びと入力（出力）時の並びが先着順かそれとも後着順か、つまり、ビッグエンディアンのバイト順と、リトルエンディアンのバイト順とを含むことができる。ビッグエンディアンのバイト順とは、データの論理上位バイトがアドレス空間の下位アドレスに書き込まれ、データの論理下位バイトがアドレス空間の上位アドレスに書き込まれることをいう。リトルエンディアンのバイト順とは、データの論理上位バイトがアドレス空間の上位アドレスに書き込まれ、データの論理下位バイトがアドレス空間の下位アドレスに書き込まれることをいう。
【０３３５】
本開示の実施例における制御モジュール２００は、制御信号を受信し、受信した制御信号に基づいて、データ処理動作が実行される第１データの第１アドレス空間、第１データのデータ形式、当該データ処理動作が実行されて出力される第２データの予め設定されたデータ形式、データ処理動作を実行するための予め設定された演算命令、及びデータ処理動作が実行されて出力される第２データの第２アドレス空間を取得することができる。ここで、第１アドレス空間は、第１データを記憶する開始アドレス及び終了アドレスを含むことができ、対応して、第２アドレス空間は、第２データを記憶する開始アドレス及び終了アドレスを含むことができるとともに、第１データのデータ形式は、第１データのデータ粒度及びバイト順を含むことができ、予め設定されたデータ形式は、所望の第２データのデータ形式、例えば、予め設定された粒度及び／又は予め設定されたバイト順を含むことができる。
【０３３６】
本開示の実施例における制御モジュール２００は、制御信号又は制御信号に基づいて取得された各情報を記憶モジュールに記憶することができ、当該記憶モジュールは、データプロセッサ内の、制御モジュール２００及びデータ変換モジュール１００とは独立に別個の記憶装置であってもよく、制御モジュール２００内に設けられたキャッシュ又はメモリであってもよい。本開示の実施例は、これを限定しない。制御信号又は当該制御信号に基づいて取得された各情報を記憶モジュールに記憶することにより、データプロセッサ内の各モジュール又はデバイスが対応するデータ又は命令を容易に取得することができる。記憶モジュールは、レジスタ、キャッシュのうちの１つ又は任意の組み合わせを含む。具体的には、前記キャッシュは、前記計算命令を記憶するために使用され、前記レジスタは、前記機械学習モデル、前記データ、及びスカラーを記憶するために使用され、前記キャッシュは、高速一時キャッシュである。
【０３３７】
制御モジュール２００は、受信した制御信号に基づいて、上述したデータ変換動作に関する情報を取得し、当該情報に応じて、関連するデータ変換動作を実行するようにデータ変換モジュール１００を制御することができる。ここで、制御モジュール２００は、制御信号に基づいて第１データのバイト順が予め設定されたバイト順と同一であるか否かを確認し、同一である場合、データ変換モジュール１００によるデータのバイト順変換動作を行う必要がなく、両者に差異がある場合、データ変換モジュール１００にデータ変換命令を送信して、データ変換モジュール１００が第１データを予め設定されたデータ形式に対応する第２データに変換するように制御することができる。
【０３３８】
図４−２は、本開示の実施例による、データプロセッサにおけるデータ変換モジュールのブロック図を示す。データ変換モジュール１００は、第１データを予め設定された粒度に従って複数のバイトグループに分割して第３データを取得するために用いられるグループ化ユニット１０１と、データのバイト順を予め設定されたバイト順に変換するために用いられるバイト順変換ユニット１０２と、を含むことができる。データ変換モジュール１００は、制御モジュール２００から伝送されたデータ変換命令に基づいて、第１データの第１アドレス空間を取得し、当該第１アドレス空間に基づいて対応する第１データを読み取り、また、第２データを記憶するための第２アドレス空間を取得し、変換して得られた第２データを当該第２アドレス空間に記憶し、また、第１データのデータ形式及び第２データの予め設定されたデータ形式を取得することができる。
【０３３９】
制御モジュール２００は、第１データのデータ粒度が予め設定された粒度と異なり且つ第１データのバイト順が予め設定されたバイト順と異なる場合、データ変換モジュール１００へ対応するデータ変換命令を送信することにより、予め設定された粒度に基づいて第１データをグループ化して、各バイトグループの粒度が予め設定された粒度と同じである第３データを取得するようにグループ化ユニット１０１を制御し、バイト順変換ユニット１０２により予め設定されたバイトに基づいて第３データを第２データに変換することができる。
【０３４０】
以上の構成により、第１データのバイト順が予め設定されたバイト順と異なる場合、グループ化ユニット１０１により、グループ毎のデータ粒度が予め設定された粒度となるように第１データをグループ化し、さらにバイト順変換ユニット１０２により、第１データのバイト順を予め設定されたバイト順に変換して、予め設定されたデータ形式を満たす第２データを得ることができる。
【０３４１】
対応して、図４−３は、本開示の実施例による、データプロセッサにおける制御モジュールのブロック図を示す。本開示の実施例の制御モジュール２００は、バイト順制御ユニット２０１と、グループ化制御ユニット２０２とを含むことができ、バイト順制御ユニット１０１は、受信した制御信号に基づいて第１データのバイト順を確認し、前記第１データのバイト順が予め設定されたバイト順と異なる場合、前記予め設定されたバイト順に基づいてデータ変換動作を実行するようにデータ変換モジュール１００を制御することができる。グループ化制御ユニット２０２は、受信した制御信号に基づいて第１データの粒度を確認し、前記第１データの粒度が予め設定された粒度と異なる場合、データ変換モジュール１００を制御してグループ化動作を実行するときのグループ化のグループ数を決定することができ、ここで、グループ化のグループ数は、第１データのビット数と予め設定された粒度との比である。
【０３４２】
対応して、グループ化制御ユニット２０２は、決定されたグループ化数で第１データをグループ化するようにグループ化ユニット１０１を制御し、第３データを取得するために用いることができ、バイト順制御ユニット２０１は、第３データのバイト順を予め設定されたバイト順に変換するようにバイト順変換ユニット１０２を制御するために用いることができる。ここで、グループ化制御ユニット２０２は、制御信号に基づいて第１データの粒度及び第２データの予め設定された粒度を取得し、さらにグループ化のグループ数を決定することができる。バイト順制御ユニット２０１は、予め設定されたバイト順に基づいてデータ変換を実行し、即ち第３データを第２データに変換するようにバイト順変換ユニット１０２を制御することができる。
【０３４３】
以上は、本開示の実施例における制御モジュール及びデータ変換モジュールの実施例に過ぎず、他の実施例では、制御モジュール及びデータ変換モジュールのそれぞれは、異なる構造を有してもよく、制御モジュールによってデータ変換動作を実行するようにデータ変換モジュールを制御できれば、本開示の実施例とすることができる。
【０３４４】
以下、本開示の実施例による、データ変換モジュールがデータ変換動作を実行する具体的なプロセスについて説明する。本開示の実施例のグループ化ユニット１０１は、第１データのデータ粒度と予め設定された粒度との比に基づいて、第１データを複数のバイトグループに分割し、複数のバイトグループを組み合わせて第３データを形成し、ここで、各バイトグループのデータ粒度は、前記予め設定された粒度と同じである。各バイトグループには少なくとも１つのバイトのデータが含まれ、各バイトは８ビットのデータである。つまり、本開示の実施例において、グループ化ユニット１０１によるグループ化動作を行う場合に、第１データを上記の比で複数のバイトグループに分割し、各バイトグループ内のデータを組み合わせ、各バイトグループの組み合わせデータから第３データを形成することができる。
【０３４５】
また、本開示の実施例は、第１データの第１アドレス空間のアドレス順に基づいて第１データを読み取り、データをグループ化する。ここで、グループ化ユニット１０１は、第１データのアドレス空間の下位アドレスから上位アドレスの順に、前記第１データを複数のバイトグループに分割し、当該複数のバイトグループのグループ数は、第１データのデータ粒度と予め設定された粒度との比である。つまり、本開示の実施例において、第１データを対応するアドレス空間に記憶する際に、下位アドレスから上位アドレスの順に記憶することができるので、グループ化ユニット１０１は、当該下位アドレスから上位アドレスの順に、第１データを読み取り、第１データを再グループ化して複数のバイトグループを得ることができる。ここで、第１データの粒度と予め設定された粒度との比に応じてバイトグループのグループ数を決定でき、各バイトグループは予め設定された粒度のデータを含む。
【０３４６】
データバスによって伝送されるデータのビット数は６４の倍数（６４＊ｎ）であるので、データ変換モジュール１００によって第１データのデータ粒度を８ビット、１６ビット、３２ビット又は６４ビットに変換する実施例を以下に例示する。
【０３４７】
予め設定された粒度は８ビットであってもよく、この場合、第１データのグループ化変換及びバイト順変換は不要である。
【０３４８】
予め設定された粒度が１６ビットのデータである場合、第１アドレス空間の下位アドレスから上位アドレスの順に２バイトずつに１つのバイトグループとしてグループ化する。この場合、複数のバイトグループを得ることができ、グループ数は、第１データの粒度と１６との比であり、当該バイトグループ内のデータ粒度は１６ビットである。
【０３４９】
予め設定された粒度が３２ビットのデータである場合、第１アドレス空間の下位アドレスから上位アドレスの順に４バイトずつに１つのバイトグループとしてグループ化する。グループ数は、第１データの粒度と３２との比であり、当該バイトグループ内のデータ粒度は３２ビットである。
【０３５０】
予め設定された粒度が６４ビットのデータである場合、第１アドレス空間の下位アドレスから上位アドレスの順に８バイトずつに１つのバイトグループとしてグループ化する。グループ数は、第１データの粒度と６４との比であり、当該バイトグループ内のデータ粒度は６４ビットである。
【０３５１】
以上の構成により、第１データのグループ化動作を完了することができる。このようにして、第１データのデータ粒度と予め設定された粒度との比に基づいて、バイトグループのグループ数を容易に決定して、予め設定されたデータ粒度に対応する第３データを得ることができる。
【０３５２】
本開示の実施例において、グループ化ユニット１０１は、予め設定された粒度に対応する変換サブユニット、例えば８ビット変換サブユニット、１６ビット変換サブユニット、３２ビット変換サブユニット又は６４ビット変換サブユニットのうちの少なくとも１つを含み、又は他の実施例では他の粒度の変換サブユニットを有し、予め設定された粒度に対応するデータ変換を実行する場合、対応する変換サブユニットを制御してデータ粒度変換を行うようにしてもよい。
【０３５３】
又は、本開示の他の実施例において、グループ化ユニット１０１は、上述した複数の変換サブユニットを同時に含んでもよい。図４−６は、本開示の実施例による、グループ化ユニットのブロック構造図を示し、ここで８ビット変換サブユニット１０１１、１６ビット変換サブユニット１０１２、３２ビット変換サブユニット１０１３、６４ビット変換サブユニット１０１４、及び各変換サブユニットに接続されるセレクタ１０１５を含む。本開示の他の実施例において、他の粒度の変換サブユニットを含み、予め設定された粒度に対応するグループ化を行うことができ、本開示の実施例はこれを限定しない。
【０３５４】
セレクタ１０１５は、第３データの選択動作を実行するために用いられる。即ち、各変換サブユニット１０１１、１０１２、１０１３及び１０１４はそれぞれ第１データのグループ化動作を実行して対応する第３データを得ることができ、セレクタ１０１５は、各変換サブユニットの出力から予め設定された粒度に対応する第３データのグループを選択することができる。予め設定された粒度が変更されると、当該予め設定された粒度に対応する第３データを容易に取得することができる。
【０３５５】
また、本開示の実施例におけるバイト順変換ユニット１０２は、後の演算処理で異なるバイト順のデータを処理するようにデータのバイト順を反転させるために用いられる。グループ化ユニット１０２により変換された第３データに対して、第３データの各バイトグループにおけるバイト順を逆にして、各バイトグループの順番で前記第２データを得るようにバイト順変換を行うことができ、ここで、各バイトグループのデータ粒度は予め設定された粒度と同じである。
【０３５６】
第１データのデータ粒度が予め設定された粒度と同じである場合、バイト順変換ユニット１０２は、第１データを記憶する下位アドレスから上位アドレスの順に第１データを複数のバイトグループに分割し、ここで、１つのデータ粒度を単位として１つのバイトグループとする。バイト順変換を実行する際に各バイトグループ内のバイト順を逆にする。例えば、１６ビットのデータ粒度の場合、各バイトグループ内に２つのバイトを含み、第１バイトと第２バイトの順序を入れ替えることができる。また、例えば３２ビットのデータ粒度の場合、各バイトグループ内に４つのバイトを含み、第１から第４バイトの順序を反転して逆にし、又は６４ビットのデータ粒度の場合、各バイトグループ内に８つのバイトを含み、第１から第８バイトの順序を反転して逆にするなどのように、各バイトグループ内のデータのバイト順変換を実現することができる。バイトグループ内のバイト順を逆にした後、バイトグループの順番で第２データを構成することができ、即ちデータバイト順の変換プロセスが完了した際に、バイトグループ内のバイト順が変換されたが、バイトグループの順序は変わらない。
【０３５７】
また、第１データのデータ粒度が予め設定された粒度と異なる場合、まず、グループ化ユニット１０１により第１データを予め設定された粒度に対応する複数のバイトグループに分割して第３データを形成し、そしてバイト順変換ユニット１０２により第３データのバイト順を予め設定されたバイト順に変換して第２データを得る。例えば、グループ化ユニット１０１により１６ビットのデータ粒度を変換する際に、第１データをアドレスの低いから順に２つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット１０２により、各バイトグループ内の２つのバイトの位置を入れ替え、バイトグループ間の順序を変えなくて、第２データを得る。又は、グループ化ユニット１０１により３２ビットのデータ粒度を変換する際に、第１データをアドレスの低い順に４つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット１０２により各バイトグループ内の４つのバイトの順序を反転させ、バイトグループ間の順序を変えなくて、第２データを得る。又は、グループ化ユニット１０１により６４ビットのデータ粒度を変換する際に、第１データをアドレスの低い順に８つのバイトずつ複数のバイトグループに分割し、バイト順変換ユニット１０２により各バイトグループ内の８つのバイトの順序を反転させ、バイトグループ間の順序を変えなくて、第２データを得る。このように、上記実施例はバイト順変換ユニットがバイト順変換を実行する実施例を説明するだけであり、他の実施例では他の粒度のデータのバイト順変換プロセスを実行することもでき、ここでは一々例示しない。
【０３５８】
さらに、図４−３に示すように、本開示の実施例において、制御モジュール２００は、検出ユニット２０３をさらに含むことができる。当該検出ユニット２０３は、制御モジュール２００によりデータ変換を実行するようにデータ変換モジュール１００を制御する前に、制御信号における第２データを記憶するための第２アドレス空間がアイドル状態であるか否かを確認し、アイドル状態であれば、データ変換を実行するようにデータ変換モジュール１００を制御し、そうでなければ、第２アドレス空間がアイドル状態になると、対応するデータ変換動作を実行するようにデータ変換モジュールを制御する。これにより、アドレス衝突に起因するデータエラーを回避する。
【０３５９】
本開示の実施例のデータ変換プロセスをより明確にするために、以下に例示する。
【０３６０】
本開示の実施例のデータプロセッサを備えるシステムがデータ処理を実行する場合、制御バスを介して制御モジュール２００に制御信号を送信し、当該制御信号は、データ処理される第１データの第１アドレス空間、第１データのデータ粒度（例えば６４ビット）、第１データのバイト順（ビッグエンディアン）、及び得られる第２データの第２アドレス空間、第２データの予め設定されたデータ粒度（３２ビット）、第２データの予め設定されたバイト順（リトルエンディアン）などの情報を含むことができる。制御モジュール２００は、当該制御信号を受信すると、データ変換モジュール１００にデータ変換命令を送信する。これにより、グループ化ユニットにより第１データを予め設定されたデータ粒度（３２ビット）でグループ化して第３データを得て、バイト順変換ユニットにより第３データの各バイトグループのバイト順を予め設定されたバイト順（リトルエンディアン）に調整して、予め設定されたデータ形式を満たす第２データを得る。続いて、第２データを、データバスを介して対応する第２記憶空間に出力するか、又は他の演算処理に用いる。
【０３６１】
上記実施例によれば、第１データのデータ粒度及び／又はバイト順形式の変換を完了することができ、他のデバイスによるデータ変換を行うことなく、データプロセッサを様々な第１データに適用することができる。
【０３６２】
また、図４−４は、本開示の実施例による、データプロセッサのブロック図を示す。データプロセッサは、上記実施例に記載のデータ変換モジュール１００及び制御モジュール２００に加え、演算モジュール３００をさらに含むことができる。当該演算モジュール３００は、予め設定された演算命令に従って第２データを演算処理することができる。
【０３６３】
上記実施例に記載のように、制御モジュール２００は、アドレスバスから制御信号を取得し、データ演算を実行するための予め設定された演算命令を対応して取得する。制御モジュール２００は、制御信号に基づいて前記予め設定された演算命令を決定し、前記予め設定された演算命令に基づいて、前記第２データを演算処理するように演算モジュール３００を制御することができる。
【０３６４】
本開示の実施例において、制御モジュール２００は、制御信号に基づいて、データ変換モジュール１００による第１データのデータ変換が不要であると決定した場合、即ち第１データのバイト順が予め設定されたバイト順と同じである場合、予め設定された演算命令に基づいてデータの演算動作を実行するように演算モジュールを直接制御する。
【０３６５】
また、制御モジュール２００は、制御信号に基づいて、データ変換モジュール１００による第１データのデータ変換が必要であると決定した場合、即ち第１データのバイト順が予め設定されたバイト順と異なる場合、まず、データ変換モジュール１００により第１データを第２データに変換し、その後、予め設定された演算命令に基づいて第２データを演算するように演算モジュール３００を制御して、システムに必要なデータを得る。なお、説明したいのは、本開示の実施例において、予め設定された演算命令は、異なる演算要求に基づいて設定することができ、システムは、データの演算処理に適用する演算命令を要求に応じて決定することができ、当該演算命令に、演算処理に適用される数式、ルールなどの情報が含まれて、当該演算処理によってシステムが所望するデータを得ることができる。したがって、本開示の実施例は、予め設定された演算命令について、具体的に限定しなく、異なるアプリケーション要求において異なる命令とすることができる。
【０３６６】
さらに、本開示の実施例において、制御モジュール２００は、演算モジュール３００により演算動作を実行する前に、演算モジュールが予め設定された条件を満たすか否かを判断する必要があり、当該予め設定された条件を満たす場合のみに、演算処理動作を実行するように演算モジュールを制御する。ここで、制御モジュール２００における検出ユニット２０３は、当該演算モジュール３００が予め設定された条件を満たすか否かを検出することができ、条件を満たせば、第２データを演算処理するように演算モジュールを制御する。
【０３６７】
本開示の実施例において、検出ユニット２０３は、演算モジュール３００が上記演算動作を実行できるか否かを判断し、実行できれば、第２データを演算処理するように演算モジュールを制御し、そうでなければ、前記演算モジュールが上記演算動作を実行できるようになると、第２データを演算処理するように演算モジュールを制御することができる。演算モジュール３００は、複数の演算命令を並列に処理可能なデータ演算処理能力を有する電子デバイスであってもよい。複数の演算動作が存在する場合、演算モジュール３００は、メモリやデータ処理速度の制限により、より多くの演算動作を円滑に行うことができない場合がある。したがって、本開示の実施例では、検出ユニット２０３により、演算モジュール３００のデータ処理速度が予め設定された速度よりも高いか、又はメモリ空間が予め設定されたメモリ空間よりも大きいと確認した場合、演算モジュール３００が演算動作を実行できると決定することができる。
【０３６８】
また、本開示の実施例における演算モジュール３００は、それぞれ異なる演算動作を実行可能な複数の演算ユニットを含むことができる。したがって、検出ユニット２０３は、空いている演算ユニットが存在する場合、前記演算モジュールが予め設定された条件を満たすと判断することができる。即ち、上記演算動作を実行可能な演算ユニットが存在する場合のみに、空いている演算ユニットにより対応する演算動作を実行するように演算モジュールを制御する。
【０３６９】
本開示の実施例において、検出ユニット２０３はさらに、演算モジュール３００が現在実行している演算処理に使用されるアドレス空間と、第２データの第２アドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突でなければ、前記演算モジュールが予め設定された条件を満たすと判断することができる。ここでの衝突とは、演算モジュールが現在実行している演算動作によって生成されたデータを記憶するためのアドレス空間と、第２データのアドレス空間とが重なって、あるいは演算モジュールが現在実行している演算動作によって生成されたデータを記憶するためのアドレス空間と、予め設定された演算命令のアドレス空間とが重なって、あるいは第２データ動作を実行した後にデータを記憶するアドレス空間と、演算モジュールが現在実行している演算動作に用いられるアドレス空間とが重なっていることを意味する。上記アドレスが衝突しない場合のみに、演算動作を実行するように演算モジュールを制御することができる。
【０３７０】
上記構成に基づいて、演算モジュールが予め設定された条件を満たす場合のみに、演算モジュールにより対応する演算動作を実行することができ、データの安全を保証するとともに、演算効率を向上させることができる。
【０３７１】
以上のように、本開示の実施例によれば、他の変換デバイスを用いてデータ変換を実行することなく、データを所望の形式に容易に変換することができるデータ変換モジュールをデータプロセッサ内に設置することにより、他の変換デバイスの使用コストを低減することができるとともに、データプロセッサが多様なデータ形式に適用可能になり、良好な適用性を有する。
【０３７２】
本開示で言及された上記各方法の実施例は、原理的な論理に反しない限り、互いに組み合わせて実施例を形成できるが、紙幅の限定で、本開示は再び説明しないことが理解されたい。
【０３７３】
また、本開示は、上記実施例におけるデータプロセッサを含むデータ処理チップ、電子機器、及びデータプロセッサに適用されるデータ処理方法をさらに提供し、対応する技術的解決手段及び説明が方法部分の対応する記載を参照されたく、説明を省略する。
【０３７４】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサを含むデータ処理チップをさらに提供する。
【０３７５】
いくつかの実施例において、上記チップを含むチップパッケージ構造を提供する。
【０３７６】
いくつかの実施例において、上記チップパッケージ構造を含む基板カードを提供する。
【０３７７】
本開示の実施例は、上記実施例のいずれか一項に記載のデータプロセッサ又はデータ処理チップ、又は上記基板カードを含む電子機器をさらに提供する。
【０３７８】
電子機器は、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット型コンピュータ、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドホン、モバイルストレージ、ウェアラブル機器、乗り物、家電機器、及び／又は医療機器を含む。
【０３７９】
前記乗り物は飛行機、船舶及び／又は車両を含み、前記家電機器はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスコンロ、レンジフードを含み、前記医療機器は核磁気共鳴計、Ｂ超音波装置及び／又は心電計を含む。
【０３８０】
また、本開示の実施例は、上記実施例に記載のデータプロセッサに適用されるデータ処理方法をさらに提供する。図４−５は、本開示の実施例による、データ処理方法のフローチャートを示し、制御信号を受信するＳ１００と、受信した制御信号に基づいて、第１データのバイト順が予め設定されたバイト順と異なると確認した場合に、予め設定されたデータ形式に基づいて前記第１データを第２データに変換するようにデータ変換モジュールを制御するＳ２００とを含むことができ、前記データ変換モジュールは、予め設定された粒度と予め設定されたバイト順を含む予め設定されたデータ形式に基づいて第１データを第２データに変換するように構成される。
【０３８１】
本開示の実施例において、前記データ変換モジュールは、グループ化ユニットと、バイト順変換ユニットとを含み、予め設定されたデータ形式に基づいて前記第１データを第２データに変換するようにデータ変換モジュールを制御することは、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを複数のバイトグループに分割して第３データを得ることと、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第３データを第２データに変換することとを含み、ここで、第３データの各バイトグループの粒度は予め設定された粒度と同じである。
【０３８２】
本開示の実施例において、グループ化ユニットにより前記予め設定された粒度に基づいて前記第１データを複数のバイトグループに分割して第３データを得ることは、前記第１データのアドレス空間の下位アドレスから上位アドレスの順に、前記第１データを複数のバイトグループに分割し、前記複数のバイトグループのグループ数は第１データのデータ粒度と予め設定された粒度との比と同じであることと、前記複数のバイトグループに基づいて前記第３データを得ることとを含む。
【０３８３】
本開示の実施例において、前記バイト順変換ユニットにより前記予め設定されたバイト順に基づいて前記第３データを第２データに変換することは、前記バイト順変換ユニットにより前記第３データの各バイトグループにおけるバイト順を逆にして、各バイトグループの順番で前記第２データを得ることを含む。
【０３８４】
本開示の実施例において、前記方法は、前記制御信号に基づいて、第１データを記憶するための第１アドレス空間、及び第２データを記憶するための第２アドレス空間を取得することをさらに含み、前記データ変換モジュールは、前記第１アドレス空間に基づいて第１データを取得し、前記第１データを第２データに変換し、前記第２データを第２アドレス空間に記憶する。
【０３８５】
本開示の実施例において、前記方法は、前記制御信号に基づいて前記予め設定された演算命令を決定することと、前記予め設定された演算命令に基づいて前記第２データを演算処理するように演算モジュールを制御することとをさらに含む。
【０３８６】
本開示の実施例において、前記方法は、前記演算モジュールが予め設定された条件を満たすか否かを検出することと、条件を満たせば、前記予め設定された演算命令に基づいて前記第２データを演算処理するように前記演算モジュールを制御することとをさらに含む。
【０３８７】
本開示の実施例において、前記演算モジュールが予め設定された条件を満たすか否かを検出することは、前記演算モジュールに空いている演算ユニットがある場合、前記演算モジュールが予め設定された条件を満たすと判断すること、及び／又は、前記演算モジュールが現在実行している演算処理に使用されるアドレス空間と、前記第２データのアドレス空間及び予め設定された演算命令のアドレス空間とが衝突しているか否かを検出し、衝突でなければ、前記演算モジュールが予め設定された条件を満たすと判断することを含む。
【０３８８】
なお、前述した各方法の実施例については、説明を簡単にするため、一連の動作の組み合わせとして説明したが、当業者であれば、本出願は、記載された動作順序に限定されるものではないことが理解される。本出願によれば、いくつかのステップは、他の順番で、又は同時に実行されてもよいからである。また、本明細書に記載された実施例の全てが選択可能な実施例に属し、関連する動作及びモジュールが本出願に必須であるとは限らないことも当業者には理解される。
【０３８９】
上述した実施例では、各実施例の説明はそれぞれの重点があり、特定の実施例に詳細に記載されていない部分は、他の実施例の関連する説明を参照することができる。
【０３９０】
本出願によって提供されるいくつかの実施例において、開示される装置は、他の方法によって実現されてもよいことが理解されたい。例えば、上述した装置の実施例は、例示的なものにすぎず、例えば前記ユニットの分割は、論理機能の分割にすぎず、実際に実装される際に、別の分割方式があってもよい。例えば、複数のユニット又はコンポーネントは、組み合わせてもよいし、別のシステムに集積してもよいし、いくつかの特徴を無視してもよいし、実行しなくてもよい。別の点では、表示又は検討される相互間の結合又は直接結合又は通信接続は、いくつかのインタフェース、装置又はユニットを介した間接的な結合又は通信接続であってもよく、電気的又は他の形態での結合又は接続であってもよい。
【０３９１】
前記分離部材として説明されたユニットは、物理的に分離されてもよいし、物理的に分離されていなくてもよい。ユニットとして示された部材は、物理的なユニットであってもよいし、物理的なユニットでなくてもよく、１つの場所にあってもよいし、複数のネットワークユニットに分散されてもよい。実際の需要に応じて、その中の一部又は全部のユニットを選択して本実施例の解決手段の目的を達成することができる。
【０３９２】
また、本出願の各実施例における各機能ユニットは、１つの処理ユニットに集積されてもよいし、各ユニットが個別に物理的に存在してもよいし、２つ以上のユニットが１つのユニットに集積されてもよい。上記集積されたユニットはハードウェアの形で実現されてもよいし、ソフトウェアプログラムモジュールの形で実現されてもよい。
【０３９３】
前記集積されたユニットは、ソフトウェアプログラムモジュールの形で実現され、独立的な製品として販売又は利用される場合、コンピュータ読み取り可能なメモリに記憶されてもよい。このような理解に基づき、本出願の技術的解決手段は、本質的に又は従来技術に貢献する部分又は該技術的解決手段の全部又は一部がソフトウェア製品として具現化されることができ、該コンピュータソフトウェア製品は１つのメモリに記憶され、１つのコンピュータ機器（パーソナルコンピュータ、サーバ又はネットワーク装置などであってもよい）に本出願の各実施例に記載の方法のステップの全部又は一部を実行させる複数の命令を含む。また、前記メモリには、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リムーバブルハードディスク、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能な各種媒体が含まれる。
【０３９４】
当業者であれば、上述した実施例の各種方法におけるステップの全部又は一部は、コンピュータ読み取り可能なメモリに記憶可能なプログラムにより、関連するハードウェアに指示して実行することができることが理解される。メモリには、フラッシュディスク、読み取り専用メモリ（英語：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、略称：ＲＯＭ）、ランダムアクセスメモリ（英語：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、略称：ＲＡＭ）、磁気ディスク又は光ディスクなどがある。
【０３９５】
以上、本出願の実施例について詳細に説明し、本出願の原理及び実施形態について具体例を適用して説明したが、以上の実施例の説明は本出願の方法及びそのコア思想の理解を助けるためのものにすぎず、また、当業者であれば、本出願の思想に基づいて、具体的な実施形態及び適用範囲を変更し得る。したがって、本明細書の内容は、本出願を限定するものとして理解されるべきではない。
【図１−１】
2021520566.tif 000005
【図１−２】
2021520566.tif 000006
【図１−３】
2021520566.tif 000007
【図１−４】
2021520566.tif 000008
【図１−５】
2021520566.tif 000009
【図１−６】
2021520566.tif 000010
【図１−７】
2021520566.tif 000011
【図１−８】
2021520566.tif 000012
【図２−１】
2021520566.tif 000013
【図２−２】
2021520566.tif 000014
【図２−３】
2021520566.tif 000015
【図２−４】
2021520566.tif 000016
【図２−５】
2021520566.tif 000017
【図２−６】
2021520566.tif 000018
【図２−７】
2021520566.tif 000019
【図２−８】
2021520566.tif 000020
【図２−９】
2021520566.tif 000021
【図２−１０】
2021520566.tif 000022
【図３−１】
2021520566.tif 000023
【図３−２】
2021520566.tif 000024
【図３−３】
2021520566.tif 000025
【図３−４】
2021520566.tif 000026
【図３−５】
2021520566.tif 000027
【図３−６】
2021520566.tif 000028
【図３−７】
2021520566.tif 000029
【図３−８】
2021520566.tif 000030
【図４−１】
2021520566.tif 000031
【図４−２】
2021520566.tif 000032
【図４−３】
2021520566.tif 000033
【図４−４】
2021520566.tif 000034
【図４−５】
2021520566.tif 000035
【図４−６】
2021520566.tif 000036
【手続補正書】
【提出日】令和2年10月29日(2020.10.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、
前記演算モジュールは、
第１演算サブデータを用いて第１演算サブコマンドを実行するように構成される少なくとも１つの演算ユニットと、
前記第１演算サブコマンドを実行するためのデータを含む前記第１演算サブデータを少なくとも記憶するために用いられる記憶ユニットとを含むことが特徴とする演算装置。
【請求項２】
少なくとも２つの演算モジュール間にデータ接続が存在し、一方の演算モジュールは、前記第１演算サブデータ及び他方の演算モジュールの第２演算サブデータを用いて前記第１演算サブコマンドを実行するように構成され、前記第２演算サブデータは当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び／又は当該他方の演算モジュールの演算ユニットによって生成されたデータを含むことを特徴とする請求項１に記載の演算装置。
【請求項３】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てるように構成される制御モジュールをさらに含み、
前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含むことを特徴とする請求項１に記載の演算装置。
【請求項４】
前記制御モジュールは、
演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算するように構成される第１割り当てユニットと、
各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶するように構成される第２割り当てユニットとを含むことを特徴とする請求項３に記載の演算装置。
【請求項５】
前記制御モジュールはさらに、各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続するように構成されることを特徴とする請求項３に記載の演算装置。
【請求項６】
前記演算ユニットは、ネットワークプロセッサ又はコンピュータ機器を含むことを特徴とする請求項１に記載の演算装置。
【請求項７】
前記記憶ユニットは、レジスタ、レジスタファイル及びメモリアレイのうちの少なくとも１つを含むことを特徴とする請求項１に記載の演算装置。
【請求項８】
請求項１〜７のいずれか一項に記載の演算装置を含むことを特徴とするデータ処理チップ。
【請求項９】
請求項８に記載のデータ処理チップを含むことを特徴とする電子機器。
【請求項１０】
演算装置に適用される演算方法であって、
前記演算装置は、対応する演算サブコマンドを並列に実行することによりネットワークモデルの演算動作を行う複数の演算モジュールを含み、
前記方法は、各演算モジュールの記憶ユニットにより第１演算サブコマンドを実行するためのデータを含む第１演算サブデータを記憶することと、
各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行することとを含むことが特徴とする演算方法。
【請求項１１】
各演算モジュールの演算ユニットにより第１演算サブデータを用いて第１演算サブコマンドを実行することは、
前記第１演算サブデータ及び他方の演算モジュールの第２演算サブデータを用いて第１演算サブコマンドを実行することをさらに含み、
前記第２演算サブデータは、当該他方の演算モジュールの記憶ユニット内に記憶されているデータ及び／又は当該他方の演算モジュール内の演算ユニットによって生成されたデータを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることをさらに含み、
前記演算コマンドは、複数の演算サブコマンドを含み、前記演算データは、各前記演算サブコマンドを実行するために必要な演算サブデータを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
受信した演算コマンド及び演算データに基づいて、各前記演算モジュールに、対応する演算サブコマンド及び演算サブデータを割り当てることは、
第１割り当てユニットにより演算コマンドにおける演算論理関係に基づいて、前記演算コマンドを複数の演算サブコマンドに分割し、当該複数の演算サブコマンドを異なる演算モジュールに対応して割り当てて演算することと、
第２割り当てユニットにより各前記演算サブコマンドを実行するために必要な演算サブデータを決定し、前記演算サブデータを対応する演算モジュールに割り当てて記憶することとを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
各演算サブコマンド間の演算論理関係に基づいて、各前記演算モジュールを選択的に接続することをさらに含むことを特徴とする請求項１２に記載の方法。
【国際調査報告】
2021520566.tif 000037
2021520566.tif 000038
2021520566.tif 000039
2021520566.tif 000040