(57)【要約】      （修正有）【課題】機械学習計算を実行するために用いられる計算装置のトレーニング演算の処理速度および処理効率を向上する。【解決手段】計算装置は、入力データと計算命令を取得するメモリユニットと、メモリユニットから計算命令を取得し、当該計算命令を解析して、１つ以上の演算命令を得て、１つ以上の演算命令を演算ユニットに伝送するために用いられる制御ユニットと、１つ以上の演算命令に従って少なくとも入力データに対して演算を行い、計算命令の計算結果を得るために用いられる演算ユニットとを備える。機械学習計算に関与するデータを固定点データを使用して表す。【選択図】図３Ａ
2020126594.tif 000002
【特許請求の範囲】
【請求項１】
メモリユニットと、制御ユニットと、変換ユニットとを備える計算装置であって、
前記メモリユニットは、第１の入力データ、小数点位置、前記第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子を格納するために用いられ、
前記制御ユニットは、前記メモリユニットから複数の前記演算命令、第１の入力データ、小数点位置、第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子を取得し、前記第１の入力データ、小数点位置、第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子を前記変換ユニットに送信するために用いられ、
前記変換ユニットは、前記第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子に基づいて、前記第１の入力データを第２の入力データに変換するために用いられ、
前記第２の入力データは固定小数点データである、
ことを特徴とする計算装置。
【請求項２】
前記計算装置は機械学習計算を実行するために用いられ、前記計算装置は演算ユニットをさらに備え、
前記メモリユニットは、演算命令を格納するためにも用いられ、
前記制御ユニットは、前記メモリユニットから複数の前記演算命令を取得し、複数の前記演算命令を前記演算ユニットに送信するためにも用いられ、
前記変換ユニットは、前記第２の入力データを前記演算ユニットに送信するためにも用いられ、
前記演算ユニットは、前記複数の演算命令に応じて前記第２の入力データに対して演算を行い、計算結果を得るために用いられ、
前記機械学習計算は、人工ニューラルネットワーク演算を含み、前記第１の入力データは、入力ニューロンデータ及び重みデータを含み、前記計算結果は、出力ニューロンデータである、
ことを特徴とする請求項１に記載の計算装置。
【請求項３】
前記演算ユニットは、マスター処理回路と複数のスレーブ処理回路とを備え、
前記マスター処理回路は、前記第２の入力データに対して前処理を実行し、前記複数のスレーブ処理回路との間でデータを送信するために用いられ、
前記複数のスレーブ処理回路は、前記マスター処理回路から送信される第２の入力データに従って中間演算を行い、複数の中間結果を得て、複数の中間結果を前記マスター処理回路に送信するために用いられ、
前記マスター処理回路は、前記複数の中間結果に対して後続の処理を実行して、前記計算結果を得るために用いられる、
ことを特徴とする請求項２に記載の計算装置。
【請求項４】
前記計算装置は、ダイレクトメモリアクセスＤＭＡユニットをさらに備え、前記メモリユニットは、レジスタ及びキャッシュをさらに備え、
前記キャッシュは、前記第１の入力データを格納するために用いられ、
前記レジスタは、前記第１の入力データのうちのスカラーデータ、小数点位置、前記第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子を格納するために用いられ、
前記キャッシュにはステージングキャッシュが含まれ、
前記ＤＭＡユニットは、前記メモリユニットからデータを読み出す又は記憶するために用いられる、
ことを特徴とする請求項３に記載の計算装置。
【請求項５】
前記第１の入力データが固定小数点データである場合、前記演算ユニットはさらに、
前記第１の入力データの小数点位置に従って、１つ以上の中間結果の小数点位置を導出するために用いられる導出ユニットを含み、
前記１つ以上の中間結果は前記第１の入力データに従って演算されて得る、
ことを特徴とする請求項２乃至４のいずれか一項に記載の計算装置。
【請求項６】
前記演算ユニットは、前記１つ以上の中間結果をキャッシングするために用いられるデータキャッシュユニットをさらに含む、
ことを特徴とする請求項５に記載の計算装置。
【請求項７】
複合処理装置において、
前記複合処理装置は、機械学習演算装置と、相互接続共通インターフェースと、他の処理装置と、記憶装置とを備え、
前記機械学習演算装置は、請求項２乃至４のいずれか一項に記載の１つ又は複数の計算装置を備え、前記他の処理装置から演算予定のデータ及び制御情報を取得し、指定される機械学習演算を実行し、Ｉ／Ｏインターフェースを介して前記他の処理装置に実行結果を送信するために用いられ、
前記機械学習演算装置が複数の前記計算装置を備える場合、前記複数の前記計算装置の間は特定の構造を介して接続されデータが伝送することができ、
複数の前記計算装置は、より大規模な機械学習の演算をサポートするように高速な周辺機器相互接続バスＰＣＩＥバスによって相互接続されデータが伝送され、複数の前記計算装置は同じ制御システムを共有するか、又はそれぞれの制御システムを有し、複数の前記計算装置は、メモリを共有するか、またはそれぞれのメモリを有し、複数の前記計算装置の相互接続方式は、任意の相互接続トポロジであり、
前記機械学習演算装置は、前記他の処理装置とインタラクションをして、ユーザが指定する計算操作を共同で完成し、
前記記憶装置は、前記機械学習演算装置と前記他の処理装置とにそれぞれ接続され、前記機械学習演算装置及び前記他の処理装置のデータを格納するために用いられる、
ことを特徴とする複合処理装置。
【請求項８】
請求項７に記載の複合処理装置を備えることを特徴とする電子機器。
【請求項９】
メモリ装置と、インターフェース装置と、制御装置と、請求項７に記載の複合処理装置とを備え、
前記複合処理装置は、前記メモリ装置、前記制御装置及び前記インターフェース装置にそれぞれ接続され、
前記メモリ装置は、データを格納するために用いられ、
前記インターフェース装置は、前期複合処理装置と外部機器との間のデータ伝送を実現するために用いられ、
前記制御装置は、前期複合処理装置のステータスをモニタリングするために用いられ、
前記メモリ装置は、複数グループのメモリユニットを備え、各グループの前記メモリユニットは、バスによって前期複合処理装置に接続され、前記メモリユニットは、ＤＤＲ  ＳＤＲＡＭであり、
前記複合処理装置は、各前記メモリユニットに対するデータ伝送及びデータ記憶を制御するためのＤＤＲコントローラを備え、
前記インターフェース装置は、標準のＰＣＩＥインターフェースである、
ことを特徴とするボードカード。
【請求項１０】
制御ユニットがメモリユニットから第１の入力データ、小数点位置、前記第１の入力データのデータタイプを示すための識別子、及びデータタイプの変換モード識別子を取得することと、
変換ユニットが前記第１の入力データのデータタイプを示すためのフラグビット、及びデータタイプの変換モード識別子に基づいて、前記第１の入力データを第２の入力データに変換することと、を含み、
前記第２の入力データは固定小数点データである、
ことを特徴とする計算方法。
【請求項１１】
前記計算方法は機械学習計算を実行するために用いられる方法であり、さらに、
演算ユニットが前記メモリユニットから複数の演算命令を取得し、前記複数の演算命令に基づいて前記第２の入力データに対して計算を実行して計算結果を得ることを含む、
ことを特徴とする請求項１０に記載の計算方法。
【請求項１２】
前記機械学習計算は、人工ニューラルネットワーク演算を含み、前記第１の入力データは、入力ニューロン及び重みを含み、前記計算結果は、出力ニューロンである、
ことを特徴とする請求項１１に記載の計算方法。
【請求項１３】
前記第１の入力データ及び前記第２の入力データが両方とも固定小数点データである場合、前記第１の入力データの小数点位置と前記第２の入力データの小数点位置とが異なる、
ことを特徴とする請求項１０乃至１２のいずれか一項に記載の計算方法。
【請求項１４】
前記第１の入力データは固定小数点データである場合、前記計算方法はさらに、
前記演算ユニットが前記第１の入力データの小数点位置に従って、１つ以上の中間結果の小数点位置を導出することを含み、前記１つ以上の中間結果は前記第１の入力データに従って演算され得る、
ことを特徴とする請求項１３に記載の計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理技術の分野に関し、特に計算装置および計算方法に関する。
【背景技術】
【０００２】
高まっている情報技術の発展と人々の要望に伴って、情報の適時性に対する要求はますます高くなっている。現在、端末は汎用プロセッサに基づいて情報を取得して処理する。
【０００３】
実際には、汎用プロセッサがソフトウェアプログラムを実行して情報を処理するような方式は、汎用プロセッサの動作速度によって制限され、特に汎用プロセッサの負荷が大きな場合に、情報処理効率が低く、遅延も大きい。情報処理の計算モデルは、例えばトレーニングモデルなど、その計算量が一層大きいので、汎用プロセッサでトレーニング演算を完了時間が長く、効率も低い。
【発明の概要】
【０００４】
本出願の実施例は、演算の処理速度を高まれる計算装置と計算方法を提供する。
【０００５】
第１の態様によれば、本出願の実施例は、計算装置を提供する、前記計算装置は機械学習計算を実行するために用いられ、前記計算装置は、演算ユニット、制御ユニット、および変換ユニットを備え、
前記制御ユニットは、第１の入力データおよび計算命令を取得するために用いられ、前記計算命令を解析して、データ変換命令および／または１つ以上の演算命令を得て、前記データ変換命令は、操作ドメインおよび操作コードを含み、当該操作コードは、前記データタイプ変換命令の機能を示すために用いられ、前記データタイプ変換命令の操作ドメインには、小数点位置、第１の入力データのデータタイプを示すためのフラグビット、およびデータタイプの変換モード識別子が含まれており、前記データ変換命令の操作コードと操作ドメインおよび前記第１の入力データを前記変換ユニットに送信し、前記複数の演算命令を演算ユニットに送信し、
前記変換ユニットは、前記データ変換命令の操作コードおよび操作ドメインに応じて前記第１の入力データを第２の入力データに変換するために用いられ、前記第２の入力データは固定小数点データであり、前記第２の入力データを演算ユニットに送信し、
前記演算ユニットは、前記複数の演算命令に応じて前記第２の入力データに対して演算を行い、前記計算命令の計算結果を得るために用いられる。
【０００６】
ある可能な実施例では、機前記機械学習計算は、人工ニューラルネットワーク演算を含み、前記第１の入力データは、入力ニューロンデータおよび重みデータを含み、前記計算結果は、出力ニューロンデータである。
【０００７】
ある可能な実施例では、前記演算ユニットは、マスター処理回路と複数のスレーブ処理回路とを備え、
前記マスター処理回路は、第２入力データに対して前処理を実行し、複数のスレーブ処理回路間でデータおよび複数の前記演算命令を送信するために用いられる。
【０００８】
前記複数のスレーブ処理回路は、前記マスター処理回路から送信される第２の入力データおよび前記複数の演算命令に従い、中間演算を行い複数の中間結果を得て、複数の中間結果を前記マスター処理回路に送信するために用いられ、
前記マスター処理回路は、前記複数の中間結果に対して後続の処理を実行して、前記計算命令の計算結果を得るために用いられる。
【０００９】
ある可能な実施例では、前記計算装置は、メモリユニットおよびダイレクトメモリアクセスＤＭＡユニットをさらに備え、前記メモリユニットは、レジスタおよびキャッシュの任意の組み合わせを備え、
前記キャッシュは、前記第１の入力データを格納するために用いられ、
前記レジスタは、前記第１の入力データのうちのスカラーデータを格納するために用いられ、
前記キャッシュには、ステージングキャッシュが含まれる。
【００１０】
ある可能な実施例では、前記制御ユニットは、命令キャッシュユニットと、命令キャッシュユニットと、ストレージキューユニットとを備え、
前記命令キャッシュユニットは、人工ニューラルネットワーク演算に関連する計算命令を格納するために用いられ、
前記命令処理ユニットは、前記計算命令を解析して前記データ変換命令および前記複数の演算命令を得て、前記データ変換命令を解析して前記データ変換命令の操作コードおよび操作ドメインを得るために用いられ、
前記ストレージキューユニットは、命令キューを格納するために用いられ、当該命令キューは、キューの順序で実行される予定の複数の演算命令または計算命令を含む。
【００１１】
ある可能な実施例では、前記演算ユニットは、
依存関係処理ユニットをさらに備え、前記依存関係処理ユニットは、第１の演算命令と前記第１の演算命令の前の第０の演算命令が関連しているかどうかを確定するために用いられ、前記第１の演算命令が前記第０の演算命令に関連している場合、前記第１の演算命令を前記命令キャッシュユニットにキャッシングし、前記第０の演算命令の実行が完了した後、前記第１の演算命令を前記命令キャッシュユニットから抽出し前記演算ユニットに送信し、
前記第１の演算命令と前記第１の演算命令の前の第０の演算命令が関連しているかどうかを確定することは、
前記第１の演算命令に従い、前記第１の演算命令における必要なデータの第１のメモリアドレス範囲を抽出し、前記第０の演算命令に従い、前記第０の演算命令における必要なデータの第０のメモリアドレス範囲を抽出し、前記第１のメモリアドレス範囲と前記第０のメモリアドレス範囲が重なる領域を有する場合、前記第１の演算命令と前記第０の演算命令が関連していると確定し、前記第１のメモリアドレス範囲と前記第０のメモリアドレス範囲が重なる領域を有しない場合、前記第１の演算命令と前記第０の演算命令が関連していないと確定することを含む。
【００１２】
ある可能な実施例では、前記第１の入力データが固定小数点データである場合、前記演算ユニットはさらに、
前記第１の入力データの小数点の位置に従って１つ以上の中間結果の小数点の位置を導出するために用いられる導出ユニットを含み、ここ、前記１つ以上の中間結果は前記第１の入力データに従って演算されて得る。
【００１３】
ある可能な実施例では、前記演算ユニットはさらに、
前記１つ以上の中間結果をキャッシングするために用いられるデータキャッシュユニットを含む。
【００１４】
ある可能な実施例では、前記演算ユニットは、ツリーモジュールを備え、前記ツリーモジュールは、ルートポートおよび複数のブランチポートを備え、前記ツリーモジュールのルートポートは前記マスター処理回路に接続され、前記ツリーモジュールの複数のブランチポートはそれぞれ複数のスレーブ処理回路の１つに接続され、
前記ツリーモジュールは、前記マスター処理回路と前記複数のスレーブ処理回路の間でデータおよび演算命令を転送するために用いられる。
【００１５】
前記演算ユニットは、分岐処理回路をさらに備え、
前記マスター処理回路は、具体的に、前記入力ニューロンがブロードキャストデータであり、重みが配信データであると確定し、１つの配信データを複数のデータブロックに割り当て、前記複数のデータブロックのうち少なくとも１つのデータブロック、ブロードキャストデータおよび複数の演算命令のうち少なくとも１つの演算命令を前記分岐処理回路に送信するために用いられ、
前記分岐処理回路は、マスター処理回路と前記複数のスレーブ処理回路との間でデータブロック、ブロードキャストデータ、および演算命令を転送するために用いられ、
前記複数のスレーブ処理回路は、中間命令を取得するために、演算命令に従って受信したデータブロックおよびブロードキャストデータに対して演算を実行し中間結果を得て、中間結果を分岐処理回路に送信するために用いられ、
前記マスター処理回路はさらに、前記分岐処理回路によって送信された中間結果に対して後続の処理を実行して、前記演算命令の結果を得て、前記計算命令の結果を前記制御ユニットに送信するために用いられる。
【００１６】
ある可能な実施例では、前記演算ユニットは、マスター処理回路と複数のスレーブ処理回路とを備え、
前記複数のスレーブ処理回路は、アレイに配置され、各スレーブ処理回路は、隣接する他のスレーブ処理回路に接続され、前記マスター処理回路は、前記複数のスレーブ処理回路のうちのＫ個のスレーブ処理回路と接続し、前記Ｋ個のスレーブ処理回路は、第１行のｎ個のスレーブ処理回路、第ｍ行の第ｎ個のスレーブ処理回路、および第１列のｍ個のスレーブ処理回路であり、
前記Ｋ個のスレーブ処理回路は、前記マスター処理回路と複数のスレーブ処理回路との間でデータおよび命令を転送するために用いられ、
前記マスター処理回路はさらに、前記入力ニューロンがブロードキャストデータであり、重みが配信データであると確定し、１つの配信データを複数のデータブロックに割り当て、前記複数のデータブロックのうち少なくとも１つのデータブロックと複数の演算命令のうち少なくとも１つの演算命令を前記Ｋ個のスレーブ処理回路に送信するために用いられ、
前記Ｋ個のスレーブ処理回路は、前記マスター処理回路と前記複数のスレーブ処理回路との間のデータを変換するために用いられ、
前記複数のスレーブ処理回路は、前記演算命令に従って受信したデータブロックに対して演算を実行し中間結果を得て、演算結果を前記Ｋ個のスレーブ処理回路に送信するために用いられ、
前記マスター処理回路は、前記Ｋ個のスレーブ処理回路から送信した中間結果を処理して当該計算命令の結果を得て、当該計算命令の結果を前記制御ユニットに送信するために用いられる。
【００１７】
ある可能な実施例では、前記マスター処理回路は、具体的に、複数の処理回路によって送信された中間結果を組み合わせて並べ替え、当該計算命令の結果を得るために用いられ、
または、前記マスター処理回路は、具体的に、複数の処理回路の送信した中間結果を組み合わせて並べ替え、活性化処理した後に当該計算命令の結果を得るために用いられる。
【００１８】
ある可能な実施例では、前記マスター処理回路は、活性化処理回路および加算処理回路の１つまたは任意の組み合わせを備え、
前記活性化処理回路は、マスター処理回路内においてデータの活性化演算を実行するた
めに用いられ、
前記加算処理回路は、加算演算または累積演算を実行するために用いられる。
【００１９】
ある可能な実施例では、前記スレーブ処理回路は、
受信されたデータブロックに対して乗算演算を実行して乗算結果を得るために用いられる乗算処理回路を備える。
【００２０】
ある可能な実施例では、前記スレーブ処理回路がさらに、
当該乗算結果に対して累積演算を実行し中間結果を得るために用いられる累積処理回路を備える。
【００２１】
ある可能な実施例では、前記ツリーモデルは多進木構造であり、前記ｎは２以上の整数である。
【００２２】
さらに、ある可能な実施例では、前記制御ユニットは、第１の入力データと計算命令とを取得する前に、前記第１の入力データの小数点位置および固定小数点データのビット幅を決定するために用いられる。前記固定小数点データのビット幅は前記第１の入力データが変換された固定小数点データのビット幅である。
【００２３】
さらに、前記演算ユニットは、前記第１の入力データの小数点位置を初期化し、前記第１の入力データの小数点位置を調整するために用いられる。
【００２４】
ある可能な実施例では、前記演算ユニットは、以下を含む前記第１入力データの小数点位置を初期化する。
【００２５】
前記第１の入力データの絶対値の最大値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データの絶対値の最小値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データにおける異なるデータタイプの間の関係に従って前記第１の入力データの小数点位置を初期化する、または；
経験的定数に従って前記第１の入力データの小数点位置を初期化する。
【００２６】
ある可能な実施例では、前記演算ユニットは、前記第１の入力データの絶対値の最大値に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００２７】
前記演算ユニットは、第１の予設式および前記第１の入力データの絶対値の最大値に従って前記第１の入力データの小数点位置を初期化する。
【００２８】
2020126594.tif 000003
【００２９】
ある可能な実施例では、前記第１の入力データの絶対値の最大値は、データカタイプに従って取得された絶対値の最大値を含む、または、
前記第１の入力データの絶対値の最大値には、層やデータタイプに従って取得された絶
対値の最大値が含まれる、または、
前記第１の入力データの絶対値の最大値には、層やデータタイプやグループに従って取得された絶対値の最大値が含まれる。
【００３０】
ある可能な実施例では、前記演算ユニットは、前記第１の入力データの絶対値の最小値に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００３１】
前記演算ユニットは、第２の予設式および前記第１の入力データの絶対値の最小値に従って前記第１の入力データの小数点位置を初期化する。
【００３２】
2020126594.tif 000004
【００３３】
ある可能な実施例では、前記第１の入力データの絶対値の最小値は、データカタイプに従って取得された絶対値の最小値を含む、または、
前記第１の入力データの絶対値の最小値には、層やデータタイプに従って取得された絶対値の最小値が含まれる、または、
前記第１の入力データの絶対値の最小値には、層やデータタイプやグループに従って取得された絶対値の最小値が含まれる。
【００３４】
ある可能な実施例では、前記演算ユニットは、前記第１の入力データの絶対値のうちに異なるデータタイプの間の関係に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００３５】
2020126594.tif 000005
【００３６】
2020126594.tif 000006
【００３７】
ある可能な実施例では、前記演算ユニットは、以下を含む前記第１の入力データの小数
点位置を調整する。
【００３８】
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点位置をシングルステップで上方調整する、または；
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点位置をステップバイステップで上方調整する、または；
前記第１の入力データの分布に従って前記第１の入力データの小数点位置をシングルステップで上方調整する、または；
前記第１の入力データの分布に従って前記第１入力データの小数点位置をステップバイステップで上方調整する、または；
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点位置を下方調整する。
【００３９】
第２の態様によれば、本出願の実施例は、機械学習計算を実行する方法提供する、当該方法においては、
第１の入力データと計算命令を取得することと、
前記計算命令を解析して、データ変換命令および複数の演算命令を得て、前記データ変換命令は操作ドメインおよび操作コードを含み、該当操作コードは前記データタイプ変換命令の機能を指示する。前記データタイプ変換命令の操作ドメインは小数点位置を含み、第１入力データのデータタイプのフラグビット、およびデータタイプの変換モードを指示するために用いられ、
前記データ変換命令に従って、前記第１の入力データを固定小数点データである第２の入力データに変換することと、
前記複数の演算命令に従って、前記第２の入力データに対して計算を実行して、計算命令の結果を得ることとを、含む。
【００４０】
ある可能な実施例では、前記機械学習計算は、人工ニューラルネットワーク演算を含み、前記第１の入力データは、入力ニューロンおよび重みを含み、前記計算結果は、出力ニューロンである。
【００４１】
ある可能な実施例では、前記データ変換命令に従って前記第１の入力データを第２の入力データに変換することは、
前記データ変換命令を解析して、前記小数点位置、前記第１の入力データのデータタイプを示すためのフラグビット、およびデータタイプの変換モードを得ることと、
前記第１の入力データのデータタイプフラグビットに従って前記第１の入力データのデータタイプを確定することと、
前記小数点位置と前記データタイプの変換方式に従って、前記第１の入力データを前記第１の入力データのデータタイプと異なる第２の入力データに変換することとを、含む。
【００４２】
ある可能な実施例では、前記第１の入力データおよび前記第２の入力データが両方とも固定小数点データである場合、前記第１の入力データの小数点位置と前記第２の入力データの小数点位置とが異なる。
【００４３】
ある可能な実施例では、前記第１の入力データは固定小数点データである場合、前記方法はさらに、
前記第１の入力データの小数点位置に従って、１つ以上の中間結果の小数点位置を導出し、前記１つ以上の中間結果は前記第１の入力データに従って演算され得る。
【００４４】
さらに、前記方法には、第１の入力データと計算命令とを取得する前に、前記第１の入力データの小数点位置および固定小数点データのビット幅を決定するために用いられる。
前記固定小数点データのビット幅は前記第１の入力データが変換された固定小数点データのビット幅である。
【００４５】
前記第１入力データの小数点位置を初期化し、前記第１入力データの小数点位置を調整する。
【００４６】
ある可能な実施例では、前記初期化は、以下を含む前記第１入力データの小数点位置を初期化する。
【００４７】
前記第１の入力データの絶対値の最大値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データの絶対値の最小値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データにおける異なるデータタイプの間の関係に従って前記第１の入力データの小数点位置を初期化する、または；
経験的定数に従って前記第１の入力データの小数点位置を初期化する。
【００４８】
ある可能な実施例では、前記第１の入力データの絶対値の最大値に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００４９】
第１予設式および前記第１の入力データの絶対値の最大値に従って前記第１の入力データの小数点位置を初期化する。
【００５０】
2020126594.tif 000007
【００５１】
ある可能な実施例では、前記第１の入力データの絶対値の最大値は、データカタイプに従って取得された絶対値の最大値を含む、または、
前記第１の入力データの絶対値の最大値には、層やデータタイプに従って取得された絶対値の最大値が含まれる、または、
前記第１の入力データの絶対値の最大値には、層やデータタイプやグループに従って取得された絶対値の最大値が含まれる。
【００５２】
ある可能な実施例では、前記第１の入力データの絶対値の最小値に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００５３】
第２の予設式および前記第１の入力データの絶対値の最小値に従って前記第１の入力データの小数点位置を初期化する。
【００５４】
2020126594.tif 000008
【００５５】
ある可能な実施例では、前記第１の入力データの絶対値の最小値は、データカタイプに従って取得された絶対値の最小値を含む、または、
前記第１の入力データの絶対値の最小値には、層やデータタイプに従って取得された絶対値の最小値が含まれる、または、
前記第１の入力データの絶対値の最小値には、層やデータタイプやグループに従って取得された絶対値の最小値が含まれる。
【００５６】
ある可能な実施例では、前記第１の入力データの絶対値のうちに異なるデータタイプの間の関係に従って以下を含む前記第１の入力データの小数点位置を初期化する。
【００５７】
2020126594.tif 000009
【００５８】
2020126594.tif 000010
【００５９】
ある可能な実施例では、以下を含む前記第１の入力データの小数点位置を調整する。
【００６０】
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点位置をシングルステップで上方調整する、または；
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点位置をステップバイステップで上方調整する、または；
前記第１の入力データの分布に従って前記第１の入力データの小数点位置をシングルステップで上方調整する、または；
前記第１の入力データの分布に従って前記第１入力データの小数点位置をステップバイステップで上方調整する、または；
前記第１の入力データのうちに絶対値の最大値に従って前記第１の入力データの小数点
位置を下方調整する。
【００６１】
第３の態様によれば、本出願の実施例は、機械学習演算装置を提供し、前記機械学習演算装置は、第１態様に記載の１つまたは複数の計算装置を備え、前記機械学習演算装置は、他の処理装置から演算予定のデータおよび制御情報を取得し、指定される機械学習演算を実行し、Ｉ／Ｏインターフェイスを介して他の処理装置に実行結果を送信するために用いられ、
前記機械学習計算装置が複数の前記計算装置を備える場合、前記複数の前記計算装置の間は特定の構造を介して接続されデータが伝送されてもよく、
ここで、複数の前記計算装置は、より大規模な機械学習の演算をサポートするように高速な周辺機器相互接続バスＰＣＩＥバスによって相互接続されデータが伝送され、複数の前記計算装置は同じ制御システムを共有するか、またはそれぞれの制御システムを有し、複数の前記計算装置は、メモリを共有するか、またはそれぞれのメモリを有し、複数の前記計算装置の相互接続方式は、任意の相互接続トポロジである。
【００６２】
第４の態様によれば、本出願の実施例は、複合処理装置を提供し、前記複合処理装置は、第３態様に記載の機械学習演算装置と、相互接続共通インターフェースと、他の処理装置とを備え、前記機械学習計算装置は、他の処理装置とインタラクションをして、ユーザが指定する計算操作を共同で完成させる。前記組合せ処理装置は記憶装置をさらに備え、当該記憶装置は、前記機械学習演算装置と前記他の処理装置とにそれぞれ接続され、前記機械学習演算装置および前記他の処理装置のデータを格納するために用いられる。
【００６３】
第５の態様によれば、本出願の実施例は、ニューラルネットワークチップを提供し、前記ニューラルネットワークチップは、第１の態様請求項１７に記載の機械学習演算装置、第３の態様に記載の機械学習計算装置、または第５の態様に記載の複合処理装置を備える。
【００６４】
第６の態様によれば、本出願の実施例は、ニューラルネットワークチップパッケージ構造を提供し、当該ニューラルネットワークチップパッケージ構造は、前記第５の態様で記載されているニューラルネットワークチップを含む。
【００６５】
第７の態様によれば、本発明の実施例は、ボードカードを提供し、前記ボードカードは、記憶装置、インターフェース装置、制御装置、および第５の態様に記載のニューラルネットワークチップを備え、
前記ニューラルネットワークチップは、前記記憶装置、前記制御装置、および前記インターフェース装置にそれぞれ接続され、
前記記憶装置は、データを格納するために用いられ、
前記インターフェイス装置は、前記チップと外部機器と間でのデータ伝送を実現するために用いられ、
前記制御装置は、前記チップのステータスをモニタリングするために用いられる。
【００６６】
さらに、前記記憶装置は、複数のグループのメモリセルを備え、各グループの前記メモリセルは、バスによって前記チップに接続され、前記メモリセルは、ＤＤＲ  ＳＤＲＡＭであり、
前記チップは、各前記メモリセルに対するデータ伝送およびデータ記憶を制御するＤＤＲコントローラを備え、
前記インターフェイス装置は、標準のＰＣＩＥインターフェイスである。
【００６７】
第８の態様によれば、本発明の実施例は、電子機器を提供し、当該電子機器は、前記第５の態様に記載のニューラルネットワークチップと、前記第６の態様に記載のニューラル
ネットワークチップパッケージ構造と、前記第７の態様に記載のボードカードとを備える。
【００６８】
いくつかの実施例では、前記電子機器は、データ処理装置と、ロボットと、コンピューターと、プリンターと、スキャナーと、タブレットと、スマートターミナルと、携帯電話と、運転レコーダーと、ナビゲーターと、センサーと、ウェブカメラと、サーバーと、クラウドサーバーと、カメラと、ビデオカメラと、プロジェクターと、時計と、ヘッドフォンと、モバイルストレージと、ウェアラブルと、乗り物と、家電製品と、および／または医療機器とを含む。
【００６９】
いくつかの実施例では、前記乗り物は、飛行機と、船と、および／または車両とを含む。前記家電製品は、テレビと、エアコンと、電子レンジと、冷蔵庫と、炊飯器と、加湿器と、洗濯機と、電灯と、ガスコンロと、レンジフードとを含む。前記医療機器は、核磁気共鳴装置と、Ｂ超音波診断装置と、および／または心電計とを含む。
【００７０】
本出願の実施例の解決策において、当該計算装置は、メモリユニットから計算命令を抽出し、当該計算命令を解析してデータ変換命令と、および／または１つまたは複数の演算命令とを取得し、データ変換命令と、複数の演算命令と、および第１の入力データを演算ユニットに送信する制御ユニットと、データ変換命令に従って第１の入力データを固定小数点データで表される第２の入力データに変換し、複数の演算命令に従って第２の入力データを計算して計算命令の結果を取得する演算ユニットとを備えることはわかりやすい。本発明の実施例は、機械学習計算に関与するデータを固定点データを使用して表し、これにより、トレーニング演算の処理速度および処理効率を向上することができる。
【図面の簡単な説明】
【００７１】
本開示の実施形態における技術案をより明確に例示するために、実施形態の説明に使用される図面を以下に簡単に説明する。以下の説明における図面は、本開示のいくつかの実施形態であることは明らかであり、当業者にとっては、これらの図面に基づいて他の図面を創造的な仕事をすることなく得ることもできる。
【図１】図１は、本出願の実施例による固定小数点データのデータ構造を示す図である。
【図２】図２は、本出願の実施例によるもう一つの固定小数点データのデータ構造を示す図である。
【図２Ａ】図２Ａは、本出願の実施例によるもう一つの固定小数点データのデータ構造を示す図である。
【図２Ｂ】図２Ｂは、本出願の実施例によるもう一つの固定小数点データのデータ構造を示す図である。
【図３】図３は、本出願の実施例による計算装置の構造を示す図である。
【図３Ａ】図３Ａは、本出願の一つの実施例による計算装置の構造を示す図である。
【図３Ｂ】図３Ｂは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図３Ｃ】図３Ｃは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図３Ｄ】図３Ｄは、本出願の実施例によるマスター処理回路の構造を示す図である。
【図３Ｅ】図３Ｅは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図３Ｆ】図３Ｆは、本出願の実施例によるツリーモジュールの構造を示す図である。
【図３Ｇ】図３Ｇは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図３Ｈ】図３Ｈは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図４】図４は、本発明の実施例による単層ニューラルネットワークの順方向演算のフローチャートである。
【図５】図５は、本発明の実施例によるニューラルネットワークの順方向演算と逆方向トレーニングのフローチャートである。
【図６】図６は、本出願の実施例による複合処理装置の構造を示す図である。
【図６Ａ】図６Ａは、本出願のもう一つの実施例による計算装置の構造を示す図である。
【図７】図７は、本出願の実施例によるもう一つの複合処理装置の構造を示す図である。
【図８】図８は、本出願の実施例によるボードの構造を示す図である。
【図９】図９は、本出願の実施例による計算方法のフローチャートである。
【図１０】図１０は、本出願の実施例によるデータの小数点位置の決定および調整のフローチャートである。
【図１１】図１１は、本出願の実施例による分散システムの構造を示す図である。
【図１２】図１２は、本出願の実施例によるもう一つの分散システムの構造を示す図である。
【発明を実施するための形態】
【００７２】
以下、添付図面を参照しながら、本発明の実施例について明確に説明する。尚、以下の実施例は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格を有さない。本出願の範囲から逸脱することなく本出願の実施例に基づいて当業者によって得られる他のすべての実施例も、本出願の範囲である。
【００７３】
本出願における図面、明細書および請求範囲における用語「第１」、「第２」、「第３」、および「第４」などは、異なる対象を区別するために使用され、特定の順序を説明することではない。さらに、用語「含む」と、「備える」およびその他の変形は、非排他的な包含を網羅することを意図している。例えば、一連のステップまたはユニットを含むプロセス、方法、システム、製品、またはデバイスは、リストされたステップまたはユニットに限定されず、オプションでリストされていないステップまたはユニットも含む。
【００７４】
本明細書における「実施例」とは、実施例に関連して説明される特定の特徴、構造、または特性が、本出願の少なくとも１つの実施例に含まれ得ることを意味する。本明細書の各所でのフレーズの出現は、必ず同じ実施例を指しているわけではなく、または相互排他的な代替実施例ではない。当業者は、本明細書に記載されている実施例を他の実施例と組み合わせることができることを、明示的および暗黙的に理解できる。
【００７５】
本出願の実施例よれば、データタイプを提供し、当該データタイプは調整係数を含み、当該調整係数は、当該データタイプの値の範囲と精度を示す。
【００７６】
そのうち、前記調整係数には、第１スケーリング係数と第２スケーリング係数（必要に応じて）が含まれる。当該第１スケーリング係数はデータタイプの精度を示しつつ、当該第２スケーリング係数はデータタイプの値の範囲を調整する。
【００７７】
必要に応じて、前記第１スケーリング係数は、２−ｍ、８−ｍ、１０−ｍ、２、３、６、９、１０、２ｍ、８ｍ、１０ｍまたは他の値とする。
【００７８】
具体的には、前記第１スケーリング係数は小数点位置であってもよい。例えば、二進法
で示す入力データＩＮＡ１の小数点位置右ｍ位にシフトすると、入力データＩＮＢ１（ＩＮＢ１＝ＩＮＡ１＊２ｍ）得る。つまり、入力データＩＮＢ１は、入力データＩＮＡ１に対して２ｍ倍に拡大される。もう一つの例は、十進法で示す入力データＩＮＡ２の小数点位置左ｎ位にシフトすると、入力データＩＮＢ２得る。つまり、入力データＩＮＢ２は、入力データＩＮＡ２に対して１０ｎ倍に縮小される。ｍとｎはどちらも整数である。
【００７９】
必要に応じて、前記第２スケーリング係数は、２、８、１０、１６または他の値とする。
【００８０】
例えば、前記入力データに対応するデータタイプの値の範囲は８−１５−８１６として、演算を実行の際に、得た演算結果が入力データに対応するデータタイプの値の範囲のうちに最大値よりも大きい場合には、当該データタイプの値の範囲にデータタイプの第２スケーリング係数（即ち、８）を掛けて、新たな値の範囲８−１４−８１７を得る。一方、得た演算結果が入力データに対応するデータタイプの値の範囲のうちに最小値よりも小さい場合には、当該データタイプの値の範囲にデータタイプの第２スケーリング係数（即ち、８）を除算して、新たな値の範囲８−１６−８１５を得る。
【００８１】
あらゆるデータタイプ（浮動小数点数、離散データなど）に対して、スケーリング係数により、データの大きさと精度を調整できることになる。
【００８２】
説明すべき、本出願の明細書で言及される小数点位置はすべてが前記第１スケーリング係数であってもよく、これについてはここでは説明しない。
【００８３】
以下、図１を参照しながら、固定小数点データのデータ構造について説明する。図１は、本出願の一実施例に関与する固定小数点データのデータ構造を示す図を提供する。当該固定小数点データは、Ｘビットを占有する符号付き固定小数点データがあり、Ｘビット固定小数点データと呼ばれる場合がある。そのうち、当該Ｘビット固定小数点データは１ビットの符号ビットと、Ｍビットの整数ビットと、Ｎビットの小数点以下ビットとを含む（Ｘ−１＝Ｍ＋Ｎ）。符号なし固定小数点データの場合、Ｘビット固定小数点データは、Ｍビットの整数ビットと、Ｎビットの小数点以下ビットとのみを含む（Ｘ＝Ｍ＋Ｎ）。
【００８４】
３２ビット浮動小数点データ表示型と比較すると、本出願で採用した短ビット固定小数点データ表示型は、占有ビット数が少ないが、さらにネットワークモデルの中に同じレイヤーと、同じタイプのデータ（例えば、第１畳み込み層の全ての畳み込みカーネル、入力ニューロン、またはオフセットデータ）に対して、ほかに固定小数点データの小数点位置を記録するためのフラグビットであるＰｏｉｎｔ  Ｌｏｃａｔｉｏｎが設けれる、このように、入力データの分布に応じて上記フラグビットの大きさを調整することにより、固定小数点データ精度と表現できる範囲を調整することができる。
【００８５】
例えば、浮動小数点数６８．６８７５は、小数点位置が５の符号付き１６ビット固定小数点データに変換される。そのうち、小数点位置が５の符号付き１６ビット固定小数点データの場合、整数部は１０ビットを占有し、小数部は５ビットを占有し、符号ビットは１ビットを占有する。前記変換ユニットは、図２に示すように、浮動小数点数６８．６８７５を０００００１００１００１０１１０の符号付き１６ビット固定小数点データに変換する。
【００８６】
2020126594.tif 000011
【００８７】
2020126594.tif 000012
【００８８】
2020126594.tif 000013
【００８９】
2020126594.tif 000014
【００９０】
2020126594.tif 000015
【００９１】
まず、本出願で使用される計算装置について説明する。図３を参照して、制御ユニット１１と、演算ユニット１２、変換ユニット１３を備える計算装置が提供され、そのうち、制御ユニット１１と、演算ユニット１２とは互いに接続され、変換ユニット１３と、制御ユニット１１と演算ユニット１２と両方に接続される。
【００９２】
ある可能な実施例では、制御ユニット１１は、第１の入力データと計算命令とを取得するために用いられる。
【００９３】
一実施例では、第１の入力データは機械学習データである。さらに、機械学習データには、入力ニューロンデータ、ウエートデータが含まれる。出力ニューロンデータは、最終出力結果または中間データである。
【００９４】
代替案として、第１の入力データと計算命令と取得する方法は具体的にデータ入出力ユニットにより、当該データ入出力ユニット具体的には１つまたは複数のデータＩ／ＯインターフェースまたはデータＩ／Ｏピンであってもよい。
【００９５】
前記計算命令には、これらに限定されないが、フォワード演算命令、リバーストレーニング命令、または他のニューラルネットワーク演算命令など、例えば畳み込み演算命令であるが、前記演算命令の特定の表現形式を限定しない。
【００９６】
さらに、前記制御ユニット１１は、前記計算命令を解析してデータ変換命令および／または１つまたは複数の動作命令を取得するようにさらに構成され、そのうちの、前記データ変換命令は操作ドメインおよび操作コードを含み、当該操作コードは前記データタイプ変換命令の機能を指示する。前記データタイプ変換命令の操作ドメインは小数点位置を含み、第１の入力データのデータタイプのフラグビット、およびデータタイプの変換モード識別子を指示するために用いられる。
【００９７】
前記データ変換命令の動作領域がメモリ空間のアドレスである場合に、前記制御ユニット１１は、アドレスに対応するメモリ空間に応じて、第１の入力データのデータタイプを示す小数点位置を取得し、第１の入力データのデータタイプのフラグビット、およびデータタイプの変換モード識別子を指示するために用いられる。
【００９８】
前記制御部１１は、前記データ変換命令の操作コードおよび操作ドメインと、第１の入力データとを変換ユニット１３に送信する。複数の前記演算命令を演算ユニット１２に送信する。
【００９９】
前記変換ユニット１３は、前記データ変換命令の操作コードおよび操作ドメインに従って前記第１の入力データを第２の入力データに変換するために用いられ、当該第２の入力データは固定小数点データであり、前記第２の入力データを演算ユニット１２に送信する。
【０１００】
演算ユニット１２は、複数の演算命令に従って第２の入力データに対する演算を行い、前記計算命令の計算結果を取得するために用いられる。
【０１０１】
ある可能な実施例では、本出願による技術的解決策は、操作ユニット１２をマスターマルチスレーブ構造として設定し、フォワード演算の計算命令について、その計算命令に従ってデータを分割することができる。これにより、複数のスレーブ処理回路１０２は、計算量の多い部分で並列演算を行うことができ、計算速度が向上し、計算時間が節約され、消費電力がさらに削減される。図３Ａに示すように、前記演算ユニット１２は、マスター
処理回路１０１と複数のスレーブ処理回路１０２とを備えている。
【０１０２】
前記マスター処理回路１０１は、第２の入力データに対して前処理を実行し、複数のスレーブ処理回路１０２間でデータおよび複数の前記演算命令を送信するために用いられる。
【０１０３】
複数のスレーブ処理回路１０２は、前記マスター処理回路１０１によって送信された第２の入力データおよび複数の演算命令に従って中間演算を実行して複数の中間結果を取得し、その複数の中間結果をマスター処理回路に送信するために用いられる。
マスター処理回路１０１は、前記複数の中間結果に対して後続の処理を実行して、計算命令の計算結果を取得するために用いられる。
【０１０４】
一実施例では、機械学習動作は、深層学習動作（すなわち、人工ニューラルネットワーク動作）を含み、機械学習データ（すなわち、第１の入力データ）は、入力ニューロンおよびウエート（すなわち、ニューラルネットワークモデルデータ）を含む。出力ニューロンは、前記計算命令の計算結果または中間結果である。以下、ディープラーニング演算を例とするが、ディープラーニング演算に限定されない。
【０１０５】
必要に応じて、前記計算装置は、メモリユニット１０とダイレクトメモリアクセス（ＤＭＡ）ユニット５０をさらに含むことであってもよい。当該メモリユニット１０は、レジスタ、キャッシュ、または両方の組み合わせであり、具体的には、前記キャッシュは前記計算命令を格納し、前記レジスタ２０１は第１の入力データおよびスカラーを格納する。そのうち、第１の入力データには、入力ニューロンと、ウエートと、出力ニューロンとが含まれる。
【０１０６】
前記キャッシュ２０２はステージングキャッシュである。
【０１０７】
ＤＭＡユニット５０は、メモリユニット１０からデータを読み出すまたは記憶するために用いられる。
【０１０８】
ある可能な実施例では、前記レジスタ２０１は、演算命令と、第１の入力データと、小数点位置と、第１の入力データのデータタイプを示すためのフラグビットと、データタイプの変換モード識別子とを格納する。前記制御ユニット１１は、レジスタ２０１から演算命令と、第１の入力データと、小数点位置と、第１の入力データのデータタイプを示すためのフラグビットと、およびデータタイプの変換モード識別子とを直接に取得するために用いられる。第１の入力データと、小数点位置と、第１の入力データのデータタイプを示すためのフラグビットと、およびデータタイプの変換モード識別子と前記変換ユニット１３に送信するために用いられる。前記演算命令は演算ユニット１２に送信する。
【０１０９】
前記変換ユニット１３は、前記小数点位置と、第１の入力データのデータタイプを示すためのフラグビットと、データタイプの変換モード識別子とに従って、前記第１の入力データを第２の入力データに変換し、その第２の入力データを前記演算ユニット１２に送信する。
【０１１０】
演算ユニット１２は、前記演算命令に従って第２の入力データに対する演算を行い、計算結果を取得する。
【０１１１】
必要に応じて、制御ユニット１１は、命令キャッシュユニット１１０と、命令処理ユニット１１１と、ストレージキューユニット１１３とを含む。
【０１１２】
前記命令キャッシュユニット１１０は、人工ニューラルネットワーク演算に関する計算命令を格納するために用いられる。
【０１１３】
前記命令処理ユニット１１１は、前記計算命令を解析して、前記データ変換命令および複数の前記演算命令を取得し、前記データ変換命令を解析して前記データ変換命令の操作コードおよび操作ドメインを取得するために用いられる。
【０１１４】
前記ストレージキューユニット１１３、命令キューを記憶するために用いられ、当該命令キューは、キューの順序で実行される複数の演算命令または計算命令を含む。
【０１１５】
例えば、あるオプションの技術的解決策では、マスター処理回路１０１は、一つの制御部を含むことがあってもよく、当該制御部はメイン命令処理ユニットを含むことができ、当該メイン命令処理ユニットは具体的に命令をマイクロ命令にデコードする。無論、他の代替形態では、スレーブ処理回路１０２も、もう一つの制御部を含むことがあってもよく、当該制御部は、サブ命令処理ユニットを含み、当該サブ命令処理ユニットは具体的に命令を受信して実行する。前記マイクロ命令は命令の次の命令であり、当該マイクロ命令は命令を分割またはデコードすることで取得でき、さらに各部品、各ユニットまたは各処理回路の制御信号にデコードできる。
【０１１６】
他の方法として、当該計算命令の構造は、以下の表１に示すとおりである。
【表１】
2020126594.tif 000016
上記の表の省略記号は、複数のレジスターまたは即値を含めることが示していることであってもよい。
【０１１７】
他の代替案では、当該計算命令には、１つまたは複数の操作ドメインおよび一つの操作コードが含まれることであってもい。当該計算命令には、ニューラルネットワークの演算命令を含めることであってもい。ニューラルネットワーク演算命令を例にとると、表１に示すように、レジスター番号０と、レジスター番号１と、レジスター番号２と、レジスター番号３と、レジスター番号４とは操作ドメインであってもい。そのうち、各レジスター番号０と、レジスター番号１と、レジスター番号２と、レジスター番号３と、レジスター番号４は、１つまたは複数のレジスターの番号であってもよい。
【表２】
2020126594.tif 000017
【０１１８】
前記レジスターはオフチップメモリであってもよいが、無論、実際のアプリケーションでは、前記レジスターはオンチップメモリであってもよい。それらはデータを格納するためのメモリであって、当該データはｎ次元データであり、ｎは１以上の整数でる。例えば
、ｎ＝１の場合は、それは１次元データであるベクトルであり、ｎ＝２の場合は、それは２次元データであるマトリックスであり，ｎ＝３の場合は、それは３次元データである多次元テンソルである。
【０１１９】
必要に応じて、制御ユニット１１はさらに以下を含むことであってもよい。
【０１２０】
依存処理ユニット１１２は、複数の演算命令がある場合に、第１演算命令と前記第１演算命令の前の第０演算命令との間に依存関係があるか否かを判定する。前記第１演算命令と前記第０演算命令との間に依存関係があると判定する場合に、前記第１演算命令は命令キャッシュユニット１１０にキャッシュされ、前記第０演算命令の実行が完了した後、前記命令キャッシュユニット１１０から前記第１演算命令が抽出されて、演算ユニットに送信する。
【０１２１】
前記第１演算命令と前記第１演算命令の前の第０演算命令との間に依存関係があるか否かを判定することは、前記第１演算命令に従って前記第１演算命令に必要なのデータ（例えば、マトリックス）から抽出した第１メモリアドレス範囲と、前記第０の演算命令に従って前記第０の演算命令に必要なのマトリックスから抽出した第０メモリアドレス範囲と、その第１メモリアドレス範囲と第０メモリアドレス範囲とは重なる範囲がある場合に、前記第１演算命令と前記第０演算命令との間に依存関係があると判定する。一方、その第１メモリアドレス範囲と第０メモリアドレス範囲とは重なる範囲がない場合に、前記第１演算命令と前記第０演算命令との間に依存関係がないと判定する。
【０１２２】
他の代替実施例では、図３Ｂに示すように、前記演算ユニット１２は、マスター処理回路１０１、複数のスレーブ処理回路１０２、および複数の分岐処理回路１０３を含む。
【０１２３】
マスター処理回路１０１は、具体的に、前記入力ニューロンがブロードキャストデータであり、重みが分布データであると判定し、１つの分布データを複数の前記データブロックに分配するために用いられ、分岐処理回路１０３に複数のデータブロックのうちの少なくとも１つと、ブロードキャストデータと、複数の演算命令のうちの少なくとも１つとを送信する。
【０１２４】
前記分岐処理回路１０３は、前記マスター処理回路１０１と複数のスレーブ処理回路１０２との間でデータブロックと、ブロードキャストデータと、および演算命令とを転送するために用いられる。
【０１２５】
複数の前記スレーブ処理回路１０２は、当該演算命令に従って受信したデータブロックおよびブロードキャストデータに対して演算を実行して中間結果を取得し、その中間処理結果を分岐処理回路１０３に送信するために用いられる。
【０１２６】
前記マスター処理回路１０１は、さらに前記分岐処理回路１０３から送信された中間結果に対して後続処理を実行して、前記演算命令の結果を取得し、前記計算命令の果を制御ユニット１１に送信するために用いられる。
【０１２７】
他の代替実施例では、図３Ａに示すように、演算ユニット１２は、一つのマスター処理回路１０１と複数のスレーブ処理回路１０２とを備えていてもよい。図３Ｃに示すように、複数のスレーブ処理回路１０２がアレイ状に配置され；各スレーブ処理回路１０２は隣接する他のスレーブ処理回路１０２に接続され、マスター処理回路１０１は複数のスレーブ処理回路１０２のうちにＫ個のスレーブ処理回路１０２を接続する。前記Ｋ個のスレーブ処理回路１０２は、第１行のｎ個のスレーブ処理回路１０２と、第ｍ行のｎ個のスレーブ処理回路１０２と、および第１列のｍ個のスレーブ処理回路１０２とである。述べるべ
くは、図３Ｃに示すＫ個のスレーブ処理回路１０２は、第１行のｎ個のスレーブ処理回路１０２と、第ｍ行のｎ個のスレーブ処理回路１０２と、および第１列のｍ個のスレーブ処理回路１０２とのみを含む。すなわち、Ｋ個のスレーブ処理回路１０２は、マスター処理回路１０１に直接接続されたスレーブ処理回路１０２である。
【０１２８】
Ｋ個のスレーブ処理回路１０２は、マスター処理回路１０１と複数のスレーブ処理回路１０２との間でデータおよび命令を転送するために用いられる。
【０１２９】
前記マスター処理回路１０１は、さらに前記入力ニューロンがブロードキャストデータであり、重みが分布データであると判定し、１つの分布データを複数の前記データブロックに分配するために用いられ、前記Ｋ個のスレーブ処理回路１０２に複数のデータブロックのうちの少なくとも１つと、複数の演算命令のうちの少なくとも１つとを送信する。
【０１３０】
前記Ｋ個のスレーブ処理回路１０２は、前記マスター処理回路１０１と複数のスレーブ処理回路１０２との間でデータを変換するために用いられる。
【０１３１】
複数の前記スレーブ処理回路１０２は、前記演算命令に従って受信したデータブロックに対して演算を実行して中間結果を取得し、その演算結果を前記Ｋ個のスレーブ処理回路１０２に送信するために用いられる。
【０１３２】
前記マスター処理回路１０１は、前記Ｋ個のスレーブ処理回路１０２から送信された中間結果に対して後続処理を実行して、前記計算命令の結果を取得し、当該計算命令の結果を制御ユニット１１に送信するために用いられる。
【０１３３】
必要に応じて、図３Ｄに示されるように、前述の図３Ａ〜図３Ｃのマスター処理回路１０１は、さらに、活性化処理回路１０１１および加算処理回路１０１２の１つまたは両方の組み合わせを含む。
【０１３４】
活性化処理回路１０１１は、マスター処理回路１０１内のデータの活性化演算を実行するために用いられる。
【０１３５】
加算処理回路１０１２は、加算演算または累積演算を行うために用いられる。
【０１３６】
スレーブ処理回路１０２は、受信データブロックに対して積演算を実行して積結果を得る乗算処理回路と、受信したデータブロックまたは積結果を転送する転送処理回路（オプション）とを含む。累算処理回路は、中間結果を得るために積結果に累算演算を実行するために用いられる。
【０１３７】
ある可能な実施例では、前記第１の入力データはデータタイプと演算に関する演算命令によって示される演算タイプと一致しないデータであり、前記第２の入力データはデータタイプと演算に関する演算命令によって示される演算タイプと一致するデータであり、前記変換ユニット１３は、前記データ変換命令の操作コードと操作ドメインを取得し、当該操作コードは当該データ変換命令の機能を示すために用いられ、操作ドメインは小数点位置とデータタイプの変換モード識別子を含む。前記変換ユニット１３は、前記小数点位置と、データタイプの変換モード識別子とに従って、前記第１の入力データを第２の入力データに変換する。
【０１３８】
具体的には、上記データタイプの変換モード識別子は、上記データタイプの変換方式と毎に対応している。表３を参照しながら、表３は、実行可能なデータタイプの変換モード識別子とデータタイプの変換方式との対応表である。
【表３】
2020126594.tif 000018
【０１３９】
表３に示すように、前記データタイプの変換モード識別子が００である場合は、前記データタイプ変換方法は固定小数点データを固定小数点データに変換し、前記データタイプの変換モード識別子が０１である場合は、前記データタイプ変換方法は浮動小数点データを浮動小数点データに変換し、前記データタイプの変換モード識別子が１０である場合は、前記データタイプ変換方法は固定小数点データを浮動小数点データに変換し、前記データタイプの変換モード識別子が１１である場合は、前記データタイプ変換方法は浮動小数点データを固定小数点データに変換する。
【０１４０】
必要に応じて、上記データタイプの変換モード識別子は、図４に示すように、データタイプの変換方式と毎に対応していてもよい。
【表４】
2020126594.tif 000019
【０１４１】
表４に示すように、前記データタイプの変換モード識別子が００００である場合は、前記データタイプ変換方法は６４ビット固定小数点データから６４ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が０００１である場合は、前記データタイプ変換方法は３２ビット固定小数点データから６４ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が００１０である場合は、前記データタイプ変換方法は３２ビット固定小数点データから６４ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が００１１である場合は、前記データタイプ変換方法は３２ビット固定小数点データから３２ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が０１００である場合は、前記データタイプ変換方法は１６ビット固定小数点データから３２ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が０１０１である場合は、前記データタイプ変換方法は１６ビット固定小数点データから１６ビット浮動小数点データへの変換し、前記データタイプの変換モード識別子が０１１０である場合は、前記データタイプ変換方法は６４ビット浮動小数点データから６４ビット固定小数点データへの変換し、前記データタイプの変換モード識別子が０１１１である場合は、前記データタイプ変換方法は３２ビット浮動小数点データから６４ビット固定小数点データへの変換し、前記データタイプの変換モード識別子が１０００である場合は、前記データタイプ変換方法は１６ビット浮動小数点データから６４ビット固定小数点データへの変換し、前記データタイプの変換モード識別子が１００１である場合は、前記データタイプ変換方法は３２ビット浮動小数点データから３２ビット固定小数
点データへの変換し、前記データタイプの変換モード識別子が１０１０である場合は、前記データタイプ変換方法は１６ビット浮動小数点データから３２ビット固定小数点データへの変換し、前記データタイプの変換モード識別子が１０１１である場合は、前記データタイプ変換方法は１６ビット浮動小数点データから１６ビット固定小数点データへの変換をする。
【０１４２】
ある可能な実施例では、制御ユニット１１は、メモリユニット１０から計算命令を取得し、計算命令を解析して１つまたは複数の演算命令を取得する。その演算命令は、可変フォーマット演算命令または固定小数点フォーマット演算命令である。
【０１４３】
そのうち、前記可変フォーマット演算命令は、操作コードと、操作ドメインとを含む。当該操作コードは、前記可変フォーマット演算命令の機能を示すために用いられる。前記操作ドメインは、第１の入力データの先頭アドレスと、第１の入力データの長さ（必要に応じて）と、出力データの先頭アドレスと、小数点位置と、第１の入力データのデータタイプのフラクビットと、操作モード識別子とを含む。
【０１４４】
前記演算命令は可変フォーマット演算命令である場合に、制御ユニット１１は、前記可変フォーマット演算命令を解析して、前記第１の入力データの先頭アドレスと、第１の入力データの長さ（必要に応じて）と、出力データの先頭アドレスと、小数点位置と、第１の入力データのデータタイプのフラクビットと、操作モード識別子とを取得する。その後、第１の入力データの先頭アドレスと第１の入力データの長さとによって、前記メモリユニット１０から第１の入力データを取得する。次に、第１の入力データと、小数点位置と、第１の入力データのデータタイプのフラクビットと、操作モード識別子とが前記変換ユニット１３に送信され、前記出力データの先頭アドレスが前記演算ユニット１２に送信される。
【０１４５】
前記変換ユニット１３は、前記データタイプのフラクビットと、前記小数点位置と、操作モード識別子を示す操作モードとに従って、前記第１の入力データを第２の入力データに変換して、その第２の入力データを前記演算ユニット１２に送信する。
【０１４６】
前記演算ユニット１２のマスター処理回路１０１およびスレーブ処理回路１０２は、前記第２の入力データを演算して計算命令の結果を取得し、当該計算命令の結果を前記出力データの先頭アドレスに対応する前記メモリユニット１０のアドレスに格納する。
【０１４７】
そのうち、前記操作モード識別子は、演算ユニット１２が操作を実行する際に、演算に関与するデータのタイプを示すために用いられる。当該タイプには、固定小数点データと、浮動小数点データと、整数データと、離散データとが含まれる。
【０１４８】
ある可能な実施例では、前記メモリユニット１０には、前記第１の入力データの先頭アドレスと、第１の入力データの長さと、出力データの先頭アドレスと、小数点位置と、第１の入力データのデータタイプのフラクビットと、操作モード識別子とが格納され、前記制御ユニット１１直接に前記メモリユニット１０から前記第１の入力データの先頭アドレスと、第１の入力データの長さと、出力データの先頭アドレスと、小数点位置と、第１の入力データのデータタイプのフラクビットと、操作モード識別子とを取得して、前記プロセスに従いてその後の処理を実行する。
【０１４９】
例えば、前記操作モード識別子は０または１である。当該フラグビットが１である場合は、前記演算ユニット１２のメイン処理回路１０１およびスレーブ処理回路１０２は、浮動小数点演算であり、すなわち演算に関与するデータタイプは浮動小数点データで演算を実行する。一方、当該フラグビットが０である場合は、前記演算ユニット１２のマスター
処理回路１０１およびスレーブ処理回路１０２は、固定小数点演算であり、すなわち演算に関与するデータタイプは固定小数点データで演算を実行する。
【０１５０】
前記演算ユニット１２は、データフラグビットと操作モード識別子に応じて、入力データの種類と操作モードを決定することであってもよい。
【０１５１】
具体的には、表５を参照する。表５は，データタイプのフラグビットと操作モード識別子のマッピングテーブルである。
【表５】
2020126594.tif 000020
【０１５２】
表５に示すように、前記演算タイプ識別子は０で前記データタイプフラグビットは０の場合は、前記第１の入力データは固定小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は固定小数点演算を行い、データ変換は行われない。前記演算タイプ識別子は０で前記データタイプフラグビットは１の場合は、前記第１の入力データは浮動小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は浮動小数点演算を行い、データ変換は行われない。前記演算タイプ識別子は１で前記データタイプフラグビットは０の場合は、前記第１の入力データは固定小数点データであり、前記変換ユニット１３は前記小数点位置によって第１の入力データを浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は第２の入力データに対する演算を行う。前記演算タイプ識別子は１で前記データタイプフラグビットは１の場合は、前記第１の入力データは浮動小数点データであり、前記変換ユニット１３は前記小数点位置によって第１の入力データを浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は第２の入力データに対する演算を行う。
【０１５３】
そのうち、固定小数点データには６４ビット固定小数点データと、３２ビット固定小数点データと、１６ビット固定小数点データが含まれる。浮動小数点データは６４ビット浮動小数点データと、３２ビット浮動小数点データと、１６ビット浮動小数点データ。具体的に前記フラグビットと操作モード識別子のマッピング関係は表６を参照してもよい。
【表６】
2020126594.tif 000021
【０１５４】
表６に示すように、前記演算タイプ識別子は００００で前記データタイプフラグビット
は０の場合は、前記第１の入力データは６４ビット固定小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット固定小数点演算を行い、データタイプ変換は行われない。前記演算タイプ識別子は００００で前記データタイプフラグビットは１の場合は、前記第１の入力データは６４ビット浮動小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット浮動小数点演算を行い、データタイプ変換は行われない。前記演算タイプ識別子は０００１で前記データタイプフラグビットは０の場合は、前記第１の入力データは３２ビット固定小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット浮動小数点演算を行い、データタイプ変換は行われない。前記演算タイプ識別子は０００１で前記データタイプフラグビットは１の場合は、前記第１の入力データは３２ビット浮動小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット浮動小数点演算を行い、データタイプ変換は行われない。前記演算タイプ識別子は００１０で前記データタイプフラグビットは０の場合は、前記第１の入力データは１６ビット固定小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット固定小数点演算を行い、データタイプ変換は行われない。前記演算タイプ識別子は００１０で前記データタイプフラグビットは１の場合は、前記第１の入力データは１６ビット浮動小数点データであり、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット浮動小数点演算を行い、データタイプ変換は行われない。
【０１５５】
前記演算タイプ識別子は００１１で前記データタイプフラグビットは０の場合は、前記第１の入力データは６４ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット浮動小数点演算を行う。前記演算タイプ識別子は００１１で前記データタイプフラグビットは１の場合は、前記第１の入力データは６４ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット固定小数点演算を行う。
【０１５６】
前記演算タイプ識別子は０１００で前記データタイプフラグビットは０の場合は、前記第１の入力データは３２ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット浮動小数点演算を行う。前記演算タイプ識別子は０１００で前記データタイプフラグビットは１の場合は、前記第１の入力データは３２ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット固定小数点演算を行う。
【０１５７】
前記演算タイプ識別子は０１０１で前記データタイプフラグビットは０の場合は、前記第１の入力データは１６ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット浮動小数点演算を行う。前記演算タイプ識別子は０１０１で前記データタイプフラグビットは１の場合は、前記第１の入力データは１６ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを６４ビット固定小数点データである第２の入力データに変換して、前記演算ユニット
１２のマスター処理回路１０１とスレーブ処理回路１０２は６４ビット固定小数点演算を行う。
【０１５８】
前記演算タイプ識別子は０１１０で前記データタイプフラグビットは０の場合は、前記第１の入力データは３２ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット浮動小数点演算を行う。前記演算タイプ識別子は０１１０で前記データタイプフラグビットは１の場合は、前記第１の入力データは３２ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット固定小数点演算を行う。
【０１５９】
前記演算タイプ識別子は０１１１で前記データタイプフラグビットは０の場合は、前記第１の入力データは１６ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット浮動小数点演算を行う。前記演算タイプ識別子は０１１１で前記データタイプフラグビットは１の場合は、前記第１の入力データは１６ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット固定小数点演算を行う。
【０１６０】
前記演算タイプ識別子は１０００で前記データタイプフラグビットは０の場合は、前記第１の入力データは１６ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット浮動小数点演算を行う。前記演算タイプ識別子は１０００で前記データタイプフラグビットは１の場合は、前記第１の入力データは１６ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット固定小数点演算を行う。
【０１６１】
前記演算タイプ識別子は１００１で前記データタイプフラグビットは０の場合は、前記第１の入力データは６４ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット浮動小数点演算を行う。前記演算タイプ識別子は１００１で前記データタイプフラグビットは１の場合は、前記第１の入力データは６４ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを３２ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は３２ビット固定小数点演算を行う。
【０１６２】
前記演算タイプ識別子は１０１０で前記データタイプフラグビットは０の場合は、前記第１の入力データは６４ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット浮動小数点データである第２の
入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット浮動小数点演算を行う。前記演算タイプ識別子は１０１０で前記データタイプフラグビットは１の場合は、前記第１の入力データは６４ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット固定小数点演算を行う。
【０１６３】
前記演算タイプ識別子は１０１１で前記データタイプフラグビットは０の場合は、前記第１の入力データは３２ビット固定小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット浮動小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット浮動小数点演算を行う。前記演算タイプ識別子は１０１１で前記データタイプフラグビットは１の場合は、前記第１の入力データは３２ビット浮動小数点データであり、まず前記変換ユニット１３は前記小数点位置によって前記第１の入力データを１６ビット固定小数点データである第２の入力データに変換して、前記演算ユニット１２のマスター処理回路１０１とスレーブ処理回路１０２は１６ビット固定小数点演算を行う。
【０１６４】
ある可能な実施例では、前記演算命令は固定フォーマット演算命令であり、その固定フォーマット演算命令は、操作ドメインと、操作コードとを含む。当該操作コードは、前記固定フォーマット演算命令の機能を示すために用いられる。前記操作コードは、第１の入力データの先頭アドレスと、第１の入力データの長さ（必要に応じて）と、出力データの先頭アドレスと、小数点位置とを含む。
【０１６５】
前記制御ユニット１１は、前記第１の入力データの先頭アドレスと、第１の入力データの長さと、出力データの先頭アドレスと、小数点位置とを取得するため、前記固定フォーマット演算命令を取得して解析する。その後、前記制御ユニット１１は、前記第１の入力データの先頭アドレスと、第１の入力データの長さとによって、前記メモリユニット１０から第１の入力データを取得して、当該第１の入力データと、小数点位置とを前記変換ユニット１３に送信し、前記出力データの先頭アドレスを前記演算ユニット１２に送信する。前記変換ユニットは前記小数点位置によって前記第１の入力データを第２の入力データに変換して、当該第２の入力データを前記演算ユニット１３に送信し、当該演算ユニット１２のマスター処理回路１０１およびスレーブ処理回路１０２は、前記第２の入力データに対する演算を行い、計算命令の結果を取得し、当該計算命令の結果を前記出力データの先頭アドレスに対応する前記メモリユニット１０のアドレスに格納する。
【０１６６】
ある可能な実施例では、前記計算装置の演算ユニット１３は、前記多層ニューラルネットワークモデルのｉ番目のレイヤーの演算を実行する前に、当該計算装置の制御ユニット１１は、配置命令を取得し、当該配置命令は、小数点位置と、演算に関与するデータタイプを含む。当該制御ユニット１１は、小数点位置と、演算に関与するデータタイプを取得するため、当該配置命令を解析し、または直接に前記メモリユニット１０から前記小数点位置と、演算に関与するデータタイプとを取得する。その後、該制御ユニット１１は、前記小数点位置と、演算に関与するデータタイプを取得する後、入力データのデータタイプと演算に関与するデータタイプは一致するか否かを判断する。入力データのデータタイプと演算に関与するデータタイプは一致しない場合に、当該制御ユニット１１は、前記入力データと、小数点位置と、演算に関与するデータタイプとを前記変換ユニット１３に送信する。当該変換ユニットは、前記小数点位置と、演算に関与するデータタイプとにより、前記入力データのデータタイプを変換し、入力データのデータタイプを演算に関与するデータタイプと一致させる。その後、変換されたデータは、前記演算ユニット１２に送信さ
れ、当該演算ユニット１２のマスター処理回路１０１およびスレーブ処理回路１０２は、変換されたデータを演算する。入力データのデータタイプと演算に関与するデータタイプは一致する場合に、当該制御ユニット１１は、前記入力データを前記変換ユニット１３に送信し、当該演算ユニット１２のマスター処理回路１０１およびスレーブ処理回路１０２は、変換せずに入力データを直接に演算する。
【０１６７】
さらに、前記入力データは固定小数点データであり、かつ演算に関与するデータタイプは固定小数点データある場合に、前記制御ユニット１１は、入力データの小数点位置と演算に関与するデータの小数点位置とは一致するか否かを判断する。それらは一致しない場合に、前記制御ユニット１１は、前記入力データの小数点位置と演算に関与するデータの小数点位置とを前記変換ユニット１３に送信する。前記変換ユニット１３は、前記入力データをその小数点位置と演算に関与するデータの小数点位置とは一致する固定小数点データに変換してから、変換されたデータを前記演算ユニットに送信する。当該演算ユニット１２のマスター処理回路１０１およびスレーブ処理回路１０２は、変換されたデータを演算する。
【０１６８】
換言すれば、前記演算命令は、前記構成命令に置き換えることができる。
【０１６９】
他の実施例では、当該演算命令は、行列乗法命令、累積命令、活性化命令などの計算命令である。
【０１７０】
図３Ｅに示すように、ある可能な実施例では、前記演算ユニットは、ツリーモジュール４０を含み、前記ツリーモジュールは、一つのルートポート４０１および複数のブランチポート４０４を含む。前記ツリーモジュールのルートポートはマスター処理回路１０１に接続され、前記ツリーモジュールの複数のブランチポートは、複数のスレーブ処理回路１０２にそれぞれ接続される。
【０１７１】
前記ツリーモジュールは送受信機能を有し、図３Ｅに示すように、当該ツリーモジュールは送信の機能しており、図６Ａに示すように、当該ツリーモジュールは受信の機能している。
【０１７２】
前記ツリーモジュールは、前記マスター処理回路１０１と複数のスレーブ処理回路１０２との間でデータブロックと、重みと、および演算命令とを転送するために用いられる。
【０１７３】
必要に応じて、当該ツリーモジュールは計算装置の選択の結果であり、それは少なくとも１つのレイヤーノードを備えてもよく、当該ノードは転送機能を備えたライン構造であり、当該ノード自身は計算機能を備えなくてもよい。ツリーモジュールがゼロ層のレイヤーノードが有する場合に、当該ツリーモジュールは必要がないとなる。
【０１７４】
必要に応じて、当該ツリーモジュールはｎ分木構造であり、例えば図３Ｆに示すような二分木構造であってもよく、無論、三分木構造であってもよく、そのｎは２以上の整数であってもよい。本出願の具体的に実施例は、前記ｎの特定の値を限定するものではなく、前記レイヤーの数も２であってもよい。スレーブ処理回路１０２は。最終から２番目のレイヤーのノード以外のレイヤーのノードを接続してもよく、例えば、図３Ｆに示すように最終のレイヤーのノードを接続してもよい。
【０１７５】
必要に応じて、前述演算ユニットは、別個のキャッシュを備えてもよく、図３Ｇに示すように、それは、ニューロンキャッシュユニットを備えてもよく、当該ニューロンキャッシュユニット６３は、当該スレーブ処理回路１０２の入力ニューロンベクトルデータと、出力ニューロンデータとをキャッシュする。
【０１７６】
図３Ｈに示すように、当該演算ユニットは、重みキャッシュユニット６４を備えてもよく、それは当該スレーブ処理回路１０２の計算プロセスに必要する重みデータをキャッシュするために用いられる。
【０１７７】
ある可能な実施例では、ニューラルネットワーク演算の全結合演算を例とすると、そのプロセスはｙ＝ｆ（ｗｘ＋ｂ）として、そのうち、ｘは入力ニューロン行列であり、ｗは重み行列であり、ｂはオフセットスカラーであり、ｆは活性化関数であり、具体的にはｓｉｇｍｏｉｄ関数と、ｔａｎｈ関数と、ｒｅｌｕ関数と、ｓｏｆｔｍａｘ関数とのいずれかである。ここは、８つのスレーブ処理回路１０２を備えた二分木構造であるとして、その実現する方法は：
制御ユニット１１は、メモリユニット１０から入力ニューロン行列ｘと、重み行列ｗと、全結合演算命令を取得し、その入力ニューロン行列ｘ、重み行列ｗ、全結合演算命令をマスター処理回路１０１に送信する。
【０１７８】
マスター処理回路１０１は、入力ニューロン行列ｘを８個のサブ行列に分割し、その８個のサブ行列をツリーモジュールを介して８個のスレーブ処理回路１０２に分配し、重み行列ｗを８個のスレーブ処理回路１０２にブロードキャストする。
【０１７９】
処理回路１０２は、並行処理で８個のサブ行列と重み行列ｗとを乗算演算および累積演算を実行して、８個の中間結果を取得し、その８個の中間結果をマスター処理回路１０１に送信する。
【０１８０】
前記マスター処理回路１０１は、８個の中間結果をソートしてｗｘの演算結果を取得し、当該演算結果に対してオフセットｂの演算を実行し、次に活性化演算を実行して最終結果ｙを取得し、その最終結果ｙを制御ユニット１１に送信するために用いられ、制御ユニット１１は、その最終結果ｙ出力し、またはメモリユニット１０に格納する。
【０１８１】
一実施例では、演算ユニット１２は、第１部分の第１または複数の乗算器と、第２部分の１つまたは複数の加算器（より具体的には、第２部分の加算器は加算ツリーを構成してもよい）と、  第３部分の活性化関数ユニットと、および／または第４部分のベクトル処理ユニットを備えるが、これらに限定されない。より具体的には、ベクトル処理ユニットは、ベクトル演算および／またはプーリング演算を処理可能な構成である。第１部分は、入力データ１（ｉｎ１）と入力データ２（ｉｎ２）をｏｕｔ＝ｉｎ１＊ｉｎ２のプロセスで乗算し、乗算出力（ｏｕｔ）を取得し、第２部分は、入力データ１（ｉｎ１）を加算器よりに加算し、出力（ｏｕｔ）を取得する。より具体的には、第２部分は加算ツリーである場合に、入力データｉｎ１が加算ツリーを段階的に加算して出力データ（ｏｕｔ）を取得する。そのｎ１は長さがＮのベクトルで、Ｎは１より大きいであり、そのプロセスは、ｏｕｔ＝ｉｎ１［１］＋ｉｎ１［２］＋．．．＋ｉｎ１［Ｎ］、および／または入力データ（ｉｎ１）は加算された後、入力データ（ｉｎ２）と加算して出力データ（ｏｕｔ）を取得し、そのプロセスはｏｕｔ＝ｉｎ１［１］＋ｉｎ１［２］＋．．．＋ｉｎ１［Ｎ］＋ｉｎ２で、または入力データ（ｉｎ１）と入力データ（ｉｎ２）を加算して、出力データ（ｏｕｔ）を取得し、そのプロセスはｏｕｔ＝ｉｎ１＋ｉｎ２である。第３部分は、入力データ（ｉｎ）を活性化関数（ａｃｔｉｖｅ）により演算して、活性化出力データ（ｏｕｔ）を取得し、そのプロセスはｏｕｔ＝ａｃｔｉｖｅ（ｉｎ）であり、活性化関数はｓｉｇｍｏｉｄと、ｔａｎｈと、ｒｅｌｕと、ｓｏｆｔｍａｘとなどである。活性化操作に加えて、第三部分は、他の非線形関数を実行しでき、演算（ｆ）により入力データ（ｉｎ）から出力データ（ｏｕｔ）を取得し、そのプロセスはｏｕｔ＝ｆ（ｉｎ）である。ベクトル処理ユニットは、プーリング演算によって入力データ（ｉｎ）をプーリング操作した出力データ（ｏｕｔ）を取得し、そのプロセスはｏｕｔ＝ｐｏｏｌ（ｉｎ）であり、そのｐ
ｏｏｌはプーリング操作であり、プーリング操作は、平均値プーリング化、最大値プーリング化、中央値プーリング化を含むが、これらに限定されない。入力データ（ｉｎ）は、出力データ（ｏｕｔ）に関するプーリングコアにおけるデータである。
【０１８２】
前記演算ユニットに備わる第１部分は、前記入力データ１と入力データ２とを乗算して乗算データを取得するために用いられる。および／または、第２部分は、加算を実行し（より具体的には、それは加算ツリーであり、入力データ１をその加算ツリーによって段階的に加算するために用いられる）、または、前記入力データ１と入力データ２とを加算して出力データを取得する。および／または、第３部分は、活性化関数（ａｃｔｉｖｅ）によって入力データから出力データを取得する。および／または、第４部分は、プーリング演算を実行し、そのプロセスはｏｕｔ＝ｐｏｏｌ（ｉｎ）であり、そのｐｏｏｌはプーリング操作であり、プーリング操作は、平均値プーリング化、最大値プーリング化、中央値プーリング化を含むが、これらに限定されない。入力データ（ｉｎ）は、出力データ（ｏｕｔ）に関するプーリングコアにおけるデータである。上記のいくつかの部分の演算は、異なる順序で組み合わされる１つ以上の部分を自由に選択することができ、それにより様々な機能の演算を実現する。計算ユニットは、それを応じて、２レベル、３レベル、または４レベルパイプラインのフローレベルアーキテクチャに構成される。
【０１８３】
説明すべきは、前記第１の入力データは長桁の非固定小数点データであり、例えば３２ビット浮動小数点データであってもよく、標準に対する標準の６４ビットまたは１６ビット浮動小数点数などであってもよいが、ここは単に３２ビットを具体的実施例をとして説明する。前記第２の入力データはは短桁の固定小数点データであり、稍短桁の固定小数点データとも呼ばれ、それは長桁の非固定小数点データである前記第１の入力データよりも少ないビット数で表される固定小数点である。
【０１８４】
ある可能な実施例では、前記第１の入力データは非固定小数点データであり、前記第２の入力データは固定小数点データであり、当該第１の入力データは、前記第２の入力データが占めるビットの数以上のビットの数を占める。例えば、前記第１の入力データは３２ビット浮動小数点数であり、前記第２の入力データは３２ビット固定小数点データである。もう一つ、例えば、前記第１の入力データは３２ビット浮動小数点数であり、前記第２の入力データは１６ビット固定小数点データである。
【０１８５】
具体的には、異なるネットワークモデルの異なるレイヤーに対して、前記第１の入力データには異なるタイプのデータが含まれる。当該異なるタイプのデータの小数点位置は異なり、すなわち、それに対応する固定小数点データの精度は異なる。全結合層に対して、前記第１の入力データに入力ニューロンと、重みと、オフセットデータとなどのデータが含まれまる。畳み込み層対して、前記第１の入力データに畳み込みカーネルと、入力ニューロンと、オフセットデータとなどのデータが含まれる。
【０１８６】
例えば、全結合層に対して、前記小数点位置は、入力ニューロンの小数点位置と、重みの小数点位置と、オフセットデータとの小数点位置である。そのうち、入力ニューロンの小数点位置と、重みの小数点位置と、オフセットデータとの小数点位置とは、お互いにすべて同じでもよく、部分的に同じでもよく、すべて異なってもよい。
【０１８７】
さらに、ある可能な実施例では、前記制御ユニット１１は、第１の入力データと計算命令とを取得する前に、前記第１の入力データの小数点位置および固定小数点データのビット幅を決定するために用いられる。前記固定小数点データのビット幅は前記第１の入力データが変換された固定小数点データのビット幅である。
【０１８８】
さらに、演算ユニット１２は、前記第１の入力データの小数点位置を初期化し、前記第
１の入力データの小数点位置を調整するために用いられる。
【０１８９】
そのうち、前記第１の入力データとして固定小数点データのビット幅は、固定小数点データによって表された第１の入力データが占めるビットであり、前記小数点位置は、固定小数点データで表された第１データデータの小数部が占めるビットである。当該小数点位置は、固定小数点データの精度を特徴付けるために用いられる。詳細については、図２Ａの関連する説明を参照する。
【０１９０】
2020126594.tif 000022
【０１９１】
一実施例では、畳み込み層および全結合層の入力ニューロンと、重みと、出力ニューロンと、入力ニューロン導関数と、出力ニューロン導関数と、重み導関数とはすべて固定小数点データで表される。
【０１９２】
必要に応じて、前記入力ニューロンが使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記入力ニューロンが使用する固定小数点データのビット幅は８である。
【０１９３】
必要に応じて、前記重みが使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記重みが使用する固定小数点データのビット幅は８である。
【０１９４】
必要に応じて、前記入力ニューロン導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記入力ニューロン導関数が使用する固定小数点データのビット幅は１６である。
【０１９５】
必要に応じて、前記出力ニューロン導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記出力ニューロン導関数が使用する固定小数点データのビット幅は２４である。
【０１９６】
必要に応じて、前記重み導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記重み導関数が使用する固定小数点データの
ビット幅は２４である。
【０１９７】
一実施形例では、前記多層ネットワークモデル演算に関与するデータのうちより大きい値を有するデータａに対しては、多種な固定小数点表現方法を利用してもよく、具体的には図２Ｂの関連する説明を参照する。
【０１９８】
2020126594.tif 000023
【０１９９】
さらに、前記演算ユニット１２は、以下を含む前記第１の入力データの小数点位置を初期化する。
【０２００】
前記第１の入力データの絶対値の最大値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データの絶対値の最小値に従って前記第１の入力データの小数点位置を初期化する、または；
前記第１の入力データにおける異なるデータタイプの間の関係に従って前記第１の入力データの小数点位置を初期化する、または；
経験的定数に従って前記第１の入力データの小数点位置を初期化する。
【０２０１】
具体的には、そのうち、前記小数点位置ｓは、異なるタイプのデータと、異なるニューラルネットワークレイヤーのデータと、異なるエポックにおけるデータにより、初期化および動的に調整する必要がある。
【０２０２】
以下は、より具体的に第１の入力データの小数点位置ｓの初期化プロセス、つまり、最初で第１の入力データを変換する際に固定小数点データに使用する小数点位置ｓを決定することについて説明する。
【０２０３】
さらに、前記演算ユニット１２１１は、以下を含む前記第１の入力データの小数点位置ｓを初期化する。第１の入力データの絶対値の最大値に従って第１の入力データの小数点
位置ｓを初期化する。第１の入力データの絶対値の最小値に従って第１の入力データの小数点位置ｓを初期化する。第１の入力データにおける異なるデータタイプの間の関係に従って第１の入力データの小数点位置ｓを初期化する。経験的定数に従って第１の入力データの小数点位置ｓを初期化する。
【０２０４】
以下は、前記初期化プロセスについて具体的に説明する。
【０２０５】
2020126594.tif 000024
【０２０６】
2020126594.tif 000025
【０２０７】
2020126594.tif 000026
【０２０８】
2020126594.tif 000027
【０２０９】
2020126594.tif 000028
【０２１０】
2020126594.tif 000029
【０２１１】
2020126594.tif 000030
【０２１２】
さらに、前記入力ニューロンの小数点位置が初期化された値および出力ニューロンの小数点位置が初期化された値は、どちらも［−８、８］の範囲内で選択可能である。重みの小数点位置が初期化された値は［−１７、８］の範囲内で選択する。入力ニューロン導関数の小数点位置が初期化された値および出力ニューロン導関数の小数点位置が初期化された値は、どちらも［−４０、−２０］の範囲内で選択する。重み導関数の小数点位置が初期化された値は、［−４８、−１２］の範囲内で選択してもよい。
【０２１３】
以下、前記演算ユニット１２が小数点位置ｓのデータを動的に調整する方法について具体的に説明する。
【０２１４】
前記演算ユニット１２は、小数点位置ｓを動的に調整する方法は、ｓを上方調整すること（ｓを拡大する）と、ｓを下方調整すること（ｓを縮小する）とを含む。具体的には、第１の入力データの絶対値の最大値に従ってシングルステップで上方調整することと、第１の入力データの絶対値の最大値に従ってステップバイステップで上方調整することと、第１の入力データの分布に従ってシングルステップで上方調整することと、第１の入力データの分布に従ってステップバイステップで上方調整することと、第１の入力データの絶対値の最大値に従って下方調整することとを含む。
【０２１５】
2020126594.tif 000031
【０２１６】
2020126594.tif 000032
【０２１７】
2020126594.tif 000033
【０２１８】
2020126594.tif 000034
【０２１９】
2020126594.tif 000035
【０２２０】
必要に応じて、小数点位置を調整する頻度に対して、何時でも第１の入力データの小数点位置を調整しない。または、ｎ個の第１のトレーニング周期（すなわち、ｉｔｅｒａｔｉｏｎ）ごとに調整し、ｎは定数である。または、ｎ個の第２のトレーニング周期（すなわち、ｅｐｏｃｈ）ごとに調整し、ｎは定数である。または、ｎ個の第１またはｎ個の第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、ｎ個の第１または第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、その後、ｎ＝αｎを調整し、そのうちにαは１より大きいである。または、ｎ個の第１または第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、トレーニングラウンドの回数が増えるとともに、ｎが徐々に減少する。
【０２２１】
さらに、入力ニューロンの小数点位置と、重みの小数点位置と、出力ニューロンの小数点位置とは、１００個の第１のトレーニング周期ごとに調整される。入力ニューロンの小数点位置と、出力ニューロンの小数点位置とは、２０個の第１のトレーニング周期ごとに調整される。
【０２２２】
説明すべきは、前記第１のトレーニング周期ははバッチでサンプルをトレーニングすることに必要な時間であり、前記第２のトレーニング周期はすべてのトレーニングサンプルのトレーニングを実行することに必要な時間である。
【０２２３】
ある可能な実施例では、前記制御ユニット１１または前記演算ユニット１２は、前記プロセスによって前記第１の入力データの小数点位置を取得してから、前記第１の入力データの小数点位置をメモリユニット１０のキャッシュ２０２に格納する。
【０２２４】
前記計算命令が即値アドレッシング命令である場合に、前記マスター処理ユニット１０１は当該計算命令の操作ドメインが示す小数点位置に従って、直接に第１の入力データを第２の入力データに変換する。前記計算命令が直接アドレッシング命令または間接アドレッシング命令である場合に、前記マスター処理ユニット１０１は当該計算命令の操作ドメインが示すメモリ空間に従って、第１の入力データの小数点位置を取得してから、当該小数点位置に従って第１の入力データを第２の入力データに変換する。
【０２２５】
前記計算装置は、丸めユニットをさらに備え、演算中に第２の入力データに対して加算
、乗算、および／または他の演算における演算結果（当該演算結果は、中間演算結果および計算命令の結果を含む）は、その精度は現在の固定点データの精度範囲を超える場合があるため、前記演算キャッシユニットは、前記中間演算結果をキャッシする。演算の終了後、前記丸めユニットは、固定小数点データの精度範囲を超えた演算結果に対して丸め操作を実行し、当該丸められた演算結果を取得してから、前記データ変換ユニットが当該丸められた演算結果を現在の固定小数点データタイプに変換する。
【０２２６】
具体的には、前記丸めユニットは、前記中間演算結果に対して丸め操作を行い、当該丸め操作は、乱数丸め操作、四捨五入操作、切り上げ操作、切り捨て操作、切り落とし操作のいずれかである。  
【０２２７】
2020126594.tif 000036
【０２２８】
2020126594.tif 000037
【０２２９】
2020126594.tif 000038
【０２３０】
2020126594.tif 000039
【０２３１】
2020126594.tif 000040
【０２３２】
前記丸めユニットが丸められた中間演算結果を取得してから、前記演算ユニット１２は、当該丸められた中間演算結果を、前記第１の入力データの小数点位置に基づいて現在の固定小数点データタイプのデータに変換する。
【０２３３】
ある可能な実施例では、前記演算ユニット１２は、前記１つまたは複数の中間結果のうちにデータタイプは浮動小数点データである中間結果に対して切り落とし処理をしない。
【０２３４】
前記演算ユニット１２のスレーブ処理回路１０２は、前記方法に従って演算を実行して中間結果を取得し、当該演算プロセスには、乗算や除算等演算があるため、それらにより得られた中間結果が演算中のメモリ格納範囲を超える場合があり、メモリ格納範囲を超える中間結果には、通常は切り落とし処理をする。しかし、本出願の演算プロセスに得られた中間結果は切り捨てられず、中間結果の精度低下が大幅に減少し、計算結果の精度を向上させる。
【０２３５】
ある可能な実施例では、前記演算ユニット１２はさらに導出ユニットを備え、当該演算ユニット１２が固定小数点演算に関与する入力データの小数点位置を受信すると、当該導出ユニットは、固定小数点演算に関与する入力データの小数点位置従って固定小数点演算プロセスから１つまたは複数の中間結果の小数点位置を導出する。前記演算サブユニットの演算によって取得された中間結果がそれに対する小数点位置で示される範囲を超える場合に、前記導出ユニットは当該中間結果の小数点位置を左にＭビットシフトし、それによって当該中間結果の精度が当該中間結果の小数点位置で示される精度範囲内に位置するようにして、当該Ｍはゼロより大きい整数である。
【０２３６】
例えば、第１の入力データは、入力データＩ１および入力データＩ２を含み、それらそれぞれに対する小数点位置はＰ１およびＰ２、かつ、Ｐ１＞Ｐ２であり、前記演算命令が指示する演算タイプは加算演算または減算演算である場合に、つまり、前記演算サブユニットは、Ｉ１＋  Ｉ２またはＩ１−Ｉ２の操作を実行する際に、前記導出ユニットは、前記演算命令が指示する演算プロセスの中間結果の小数点位置はＰ１であることを導出する。前記演算命令が指示する演算タイプは乗算演算である場合に、つまり、前記演算サブユニットは、Ｉ１＊Ｉ２の操作を実行する際に、前記導出ユニットは、前記演算命令が指示する演算プロセスの中間結果の小数点位置はＰ１＊Ｐ２であることを導出する。
【０２３７】
ある可能な実施例では、前記演算ユニット１２は、１つまたは複数の中間結果をキャッシするためのデータキャッシュユニットをさらに備える。
【０２３８】
ある選択可能な実施例では、前記計算装置は、データ統計ユニットをさらに備え、当該データ統計ユニットは、前記多層ネットワークモデルの各層における同じタイプの入力データを統計し、それによって、前記各層における各タイプの入力データの小数点位置を取得する。
【０２３９】
当該データ統計ユニットは、外部装置の一部でもよく、前記計算装置は、データ変換を実行する前に、外部装置から演算に関与するデータの小数点位置を取得する。
【０２４０】
具体的には、前記データ統計ユニットは、
前記多層ネットワークモデルの各層における同じタイプの入力データを取得するための取得サブユニットと、
前記多層ネットワークモデルの各層における同じタイプの入力データが所定の区間内の分布比率を統計して取得するための統計サブユニットと、
前記分布比率に従って前記多層ネットワークモデルの各層における同じタイプの入力データの小数点位置を取得するための分析サブユニットとを備える。
【０２４１】
2020126594.tif 000041
【０２４２】
2020126594.tif 000042
【０２４３】
ある実行可能な実施例では、演算効率を向上するために、前記取得サブユニットは、ランダムまたはサンプリングで多層ネットワークモデルの各層における同じタイプの入力データからその一部のデータを取得してから、前記方法に従って当該一部のデータの小数点位置を取得してから、当該一部のデータの小数点位置に従って当該タイプの入力データに対してデータ変換（浮動小数点データから固定小数点データへの変換と、固定小数点データから固定小数点データへの変換と、固定小数点データから固定小数点データへの変換とを含む）を実行し、それにより、精度を維持するという前提の下で、計算速度と効率を向
上できる。
【０２４４】
必要に応じて、前記データ統計ユニットは、前記同じタイプのデータまたは同じレイヤーのデータの中央値に従って、当該同じタイプのデータまたは同じレイヤーのデータのビット幅と小数点位置を決定でき、または前記同じタイプのデータまたは同じレイヤーのデータの平均値に従って、当該同じタイプのデータまたは同じレイヤーのデータのビット幅と小数点位置を決定できる。
【０２４５】
必要に応じて、前記演算ユニットは、前記同じタイプのデータまたは同じレイヤーのデータに従って演算して得られた中間結果が、同じレイヤータイプのデータまたは同じレイヤーデータの小数点位置とビット幅に対する値の範囲を超える場合に、当該前記演算ユニットは中間結果に対して切り落とし処理を実行せず、当該中間結果を当該演算ユニットのデータキャッシュユニットにキャッシュする。
【０２４６】
具体的には、前記操作ドメインには、入力データの小数点位置と、データタイプの変換モード識別子とが含まれます。前記命令処理ユニットは、当該データ変換命令に対して解析することにより、前記入力データの小数点位置と、データタイプの変換モード識別子とを取得する。前記処理ユニットは、さらにデータ変換ユニットを備え、当該データ変換ユニットは、前記入力データの小数点位置と、データタイプの変換モード識別子とに従って、前記第１の入力データを第２の入力データに変換する。
【０２４７】
説明すべきは、前記ネットワークモデルには、複数の層、例えば全結合層と、畳み込み層と、プーリング層と、入力層とが含まれる。前記入力データのうちに少なくとも１つは、同じレイヤーに属する入力データは同じ小数点位置を有し、つまり、同じレイヤーに属する入力データは同じ小数点位置を共有またはシェアする。
【０２４８】
前記入力データには、多種類のタイプのデータ、例えば、入力ニューロンと、重みと、オフセットデータなどが含まれる。前記入力データのうちには、同じレイヤーに属する入力データは同じ小数点位置を有し、つまり、同じレイヤーに属する入力データは同じ小数点位置を共有またはシェアする。
【０２４９】
例えば、演算命令が指示する演算タイプは固定小数点演算であり、当該演算命令が指示する演算に関与する入力データは浮動小数点データであるため、固定小数点演算の前に、前記データ変換ユニットは、当該入力データを浮動小数点データからは固定小数点データに変換する。また、演算命令が指示する演算タイプは浮動小数点演算であり、当該演算命令が指示する演算に関与する入力データは固定小数点データであるため、浮動小数点演算の前に、前記データ変換ユニットは、当該入力データを固定小数点データからは浮動小数点データに変換する。
【０２５０】
本出願に係るマクロ命令（例えば、計算命令およびデータ変換命令）については、前記制御ユニット１１は、マクロ命令に対して解析することにより、当該マクロ命令の操作ドメインと操作コードを取得する。当該操作ドメインと操作コードに従って当該マクロ命令に対応するマイクロ命令を生成する。または、前記制御ユニット１１は、マクロ命令をデコードして、マクロ命令に対応するマイクロ命令を取得する。
【０２５１】
ある可能な実施例では、メインプロセッサおよびコプロセッサはシステムオンチップ（ＳＯＣ）に含まれ、当該メインプロセッサは前記計算装置を備える。当該コプロセッサは、前記方法に従って、前記多層ネットワークモデルの各層における同じタイプの入力データの小数点位置を取得し、当該前記多層ネットワークモデルの各層における同じタイプの入力データの小数点位置を前記計算装置に送信する。または、前記計算装置は前記多層ネ
ットワークモデルの各層における同じタイプの入力データの小数点位置を使用する必要がある場合に、前記コプロセッサから前記多層ネットワークモデルの各層における同じタイプの入力データの小数点位置を取得する。
【０２５２】
ある可能な実施例では、前記すべて第１の入力データは非固定小数点データであり、当該非固定小数点データは長桁浮動小数点データと、短桁浮動小数点データと、整数データと、離散データとを含む。
【０２５３】
前記第１の入力データのデータタイプは互いに異なる。例えば、前記入力ニューロンと、重みと、オフセットデータとはすべて浮動小数点データである。前記入力ニューロンと、重みと、オフセットデータとの一部は浮動小数点データである。前記入力ニューロンと、重みと、オフセットデータとはすべて整数データである。前記計算装置は、非固定小数点データから固定小数点データへの変換を実現でき、つまり、長整数浮動小数点データと、短桁浮動小数点データと、整数データと、離散データとなどのタイプのデータから固定小数点データへの変換を実現できる。当該固定小数点データは、符号付き固定小数点データまたは符号なし固定小数点データでもよい。
【０２５４】
ある実現可能な実施例では、前記第１の入力データと第２の入力データはどちらも固定小数点データであり、かつ、第１の入力データと第２の入力データはどちらも符号付き固定小数点データでもよく、どちらも符号なしき固定小数点データでもよく、またはその一方は符号なし固定小数点データであり、もう一方は符号付き固定小数点データでもよい。かつ、第１の入力データの小数点位置と第２の入力データの小数点位置とは異なる。
【０２５５】
ある可能な実施例では、前記第１の入力データは固定小数点データであり、前記第２の入力データは非固定小数点データである。換言すれば、前記計算装置は、固定小数点データから非固定小数点データへの変換を実現できる。
【０２５６】
図４は、本発明の実施例による単層ニューラルネットワークの順方向演算のフローチャートである。当該フローチャートは、本発明によって実施される計算装置および命令セットを使用して実現される単層ニューラルネットワークの順方向演算のプロセスを示している。各層について、まずは、入力ニューロンベクトルに対して重み付けされて合計され、当該層の中間結果ベクトルが計算される。当該中間結果ベクトルは、バイアスが加算され、活性化されることにより、出力ニューロンベクトルを取得する出力ニューロンベクトルは、次の層の入力ニューロンベクトルとして使用される。
【０２５７】
ある具体的なアプリケーションシナリオでは、前記計算装置をトレーニング装置にすることができる。ニューラルネットワークモデルをトレーニングする前に、当該トレーニング装置は、ニューラルネットワークモデルのトレーニングに関与するトレーニングデータを取得し、当該トレーニングデータは非固定小数点データであり、前記方法によって前記トレーニングデータの小数点位置を取得する。前記トレーニング装置は、前記トレーニングデータの小数点位置に従って、当該トレーニングデータを固定小数点データで表されるトレーニンデータに変換する。前記トレーニング装置は、当該固定小数点データで表されるトレーニンデータに従って、順方向ニューラルネットワーク演算することにより、ニューラルネットワーク演算結果を取得する。前記トレーニング装置は、トレーニングデータの小数点位置の表示可能なデータ精度範囲を超えるニューラルネットワーク演算結果に対して乱数丸め操作を実行することにより、丸められたニューラルネットワーク演算結果を取得し、当該ニューラルネットワーク演算結果は、前記トレーニングデータの小数点位置の表示可能なデータ精度範囲にある。前記方法によれば、前記トレーニング装置は、多層ニューラルネットワークの各層のニューラルネットワーク演算結果である出力ニューロンを取得する前記トレーニング装置は、各層の出力ニューロンに従って出力ニューロンの勾
配を取得しつつ、当該出力ニューロンの勾配に従って逆方向演算を実行することにより重みの勾配を取得し、当該重みの勾配に従ってニューラルネットワークモデルの重みを更新する。
【０２５８】
前記トレーニング装置は、前記プロセスを繰り返し実行して、ニューラルネットワークモデルを訓練する目的を達成する。
【０２５９】
指摘すべきは、順方向演算および逆方向トレーニングを実行する前に、前記計算装置は、順方向演算に関与するデータに対してデータ変換を実行する。逆方向トレーニングに関与するデータに対してデータ変換を実行しない。または、前記計算装置は、順方向演算に関与するデータに対してデータ変換を実行しない。逆方向トレーニングに関与するデータに対してデータ変換を実行する。前記計算装置は、順方向演算に関与するデータおよび逆方向トレーニングに関与するデータどちらもデータ変換を実行する。具体的なデータ変換のプロセスは前記関連な実施例を参照してもよいが、その詳細な説明は繰り返さない。
【０２６０】
そのうち、前記順方向演算は前記多層ニューラルネットワーク演算を含み、当該記多層ニューラルネットワーク演算は畳み込みなどの演算を含み、当該畳み込み演算は畳み込み演算命令によって実現される。
【０２６１】
前記畳み込み演算命令は、Ｃａｍｂｒｉｃｏｎ命令セットのうちに一つの命令であり、当該Ｃａｍｂｒｉｃｏｎ命令セットは、命令がオペコードとオペランドで構成されることを特徴としており、命令セットは４種類の命令を含み、それぞれは制御命令（ｃｏｎｔｒｏｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）と、データ転送命令（ｄａｔａ  ｔｒａｎｓｆｅｒ  ｉｎｓｔｒｕｃｔｉｏｎｓ）と、演算命令（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）と、論理命令（ｌｏｇｉｃａｌ  ｉｎｓｔｒｕｃｔｉｏｎｓ）とである。
【０２６２】
好ましくは、命令セット内の各命令は固定長を有する。例えば、命令セットの各命令の長さは６４ビットでもよい。
【０２６３】
さらに、制御命令は実行プロセスを制御するために使用される。制御命令には、ジャンプ（ｊｕｍｐ）命令と条件分岐（ｃｏｎｄｉｔｉｏｎａｌ  ｂｒａｎｃｈ）命令が含まれる。
【０２６４】
さらに、データ転送命令は、異なるストレージメディア間のデータ転送を実行するためである。データ転送命令には、ロード（ｌｏａｄ）命令、ストア（ｓｔｏｒｅ）命令、および移動（ｍｏｖｅ）命令が含まれる。ｌｏａｄ命令は、データをメインメモリからキャッシュにロードするために使用され、ｓｔｏｒｅ命令は、データをキャッシからメインメモリに格納するために使用され、ｍｏｖｅ命令は、キャッシュとキャッシュの間またはキャッシュとレジスタの間またはレジスタとレジスタの間にデータを転送するために使用される。データ転送命令は、３つの異なるデータ組織方法を支援し、それはマトリックスと、ベクトルと、スカラーと含む。
【０２６５】
さらに、演算命令は、ニューラルネットワークの算術演算を実行するために使用される。演算命令には、行列演算命令と、ベクトル演算命令と、スカラー演算命令とが含まれる。
【０２６６】
さらに、行列演算命令は、ニューラルネットワークの行列演算を実現するために、行列とベクトルの乗算（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｙ  ｖｅｃｔｏｒ）と、ベクトルと行列の乗算（ｖｅｃｔｏｒ  ｍｕｌｔｉｐｌｙ  ｍａｔｒｉｘ）と、行列とスカラーの乗算（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｙ  ｓｃａｌａｒ）と、外積（ｏｕｔｅｒ  ｐｒｏｄｕ
ｃｔ）と、行列と行列の加算（ｍａｔｒｉｘ  ａｄｄ  ｍａｔｒｉｘ）と、行列と行列の減算（ｍａｔｒｉｘ  ｓｕｂｔｒａｃｔ  ｍａｔｒｉｘ）とを含む。
【０２６７】
さらに、ベクトル演算命令は、ニューラルネットワークのベクトル演算を実現するために、ベクトル基本算術（ｖｅｃｔｏｒ  ｅｌｅｍｅｎｔａｒｙ  ａｒｉｔｈｍｅｔｉｃｓ）と、ベクトル超越関数（ｖｅｃｔｏｒ  ｔｒａｎｓｃｅｎｄｅｎｔａｌ  ｆｕｎｃｔｉｏｎｓ）と、ドット積（ｄｏｔ  ｐｒｏｄｕｃｔ）と、ベクトル乱数ジェネレーター（ｒａｎｄｏｍ  ｖｅｃｔｏｒ  ｇｅｎｅｒａｔｏｒ）と、ベクトルの最大／最小（ｍａｘｉｍｕｍ／ｍｉｎｉｍｕｍ  ｏｆ  ａ  ｖｅｃｔｏｒ）とを含む。そのうち、ベクトル基本算術は、ベクトルの加算と、減算と、乗算と、および除算と（ａｄｄ，  ｓｕｂｔｒａｃｔ，  ｍｕｌｔｉｐｌｙ，  ｄｉｖｉｄｅ）を含み、ベクトル超越関数は、多項式を係数として使用する多項式を満たさない関数であり、それは、指数関数と、対数関数と、三角関数と、逆三角関数とを含むがそれらに限定されない。
【０２６８】
さらに、スカラー演算命令は、ニューラルネットワークのスカラー演算を実現するために、スカラー基本算術（ｓｃａｌａｒ  ｅｌｅｍｅｎｔａｒｙ  ａｒｉｔｈｍｅｔｉｃｓ）と、スカラー超越関数（ｓｃａｌａｒ  ｔｒａｎｓｃｅｎｄｅｎｔａｌ  ｆｕｎｃｔｉｏｎｓ）とを含む。そのうち、スカラー基本算術は、スカラーの加算と、減算と、乗算と、および除算と（ａｄｄ，  ｓｕｂｔｒａｃｔ，  ｍｕｌｔｉｐｌｙ，  ｄｉｖｉｄｅ）を含み、スカラー超越関数は、多項式を係数として使用する多項式を満たさない関数であり、それは、指数関数と、対数関数と、三角関数と、逆三角関数とを含むがそれらに限定されない。
【０２６９】
さらに、論理命令は、ニューラルネットワークの論理演算を実行するために使用される。論理演算には、ベクトル論理演算命令とスカラー論理演算命令が含まれる。
【０２７０】
さらに、ベクトル論理演算命令には、ベクトル比較（ｖｅｃｔｏｒ  ｃｏｍｐａｒｅ）と、ベクトル論理演算（ｖｅｃｔｏｒ  ｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）と、およびマージより大きいベクトル（ｖｅｃｔｏｒ  ｇｒｅａｔｅｒ  ｔｈａｎ  ｍｅｒｇｅ）とが含まれる。そのうち、ベクトル比較は、より大きいと、より小さいと、等しいと、より大きいか等しいと、より小さいか等しいと、等しくないとを含むがそれらに限定されない。ベクトル論理演算には、論理積と、論理和と、論理否定とが含まれる。
【０２７１】
さらに、スカラー論理演算命令には、スカラー比較（ｓｃａｌａｒ  ｃｏｍｐａｒｅ）と、スカラー論理演算（ｓｃａｌａｒ  ｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）とが含まれる。そのうち、スカラー比較は、より大きいと、より小さいと、等しいと、より大きいか等しいと、より小さいか等しいと、等しくないとを含むがそれらに限定されない。スカラー論理演算には、論理積と、論理和と、論理否定とが含まれる。
【０２７２】
多層ニューラルネットワークに対する実現プロセスは、順方向演算の場合に、上層の人工ニューラルネットワークの実行が完了すると、次の層の演算命令は、演算ユニットにおける算出された出力ニューロンを次の層に対する入力ニューロンとして演算する（または、当該出力ニューロンに対してある操作を実行する後で、次の層に対して入力ニューロンとする）とともに、重みを次の層目に対する重みに置き換える。逆方向演算の場合に、上層の人工ニューラルネットワークに対する逆方向演算が実行完了すると、次の層の演算命令は、算ユニットにおける算出された出力ニューロンの勾配を次の層に対する入力ニューロンの勾配として演算する（または、当該出力ニューロンの勾配に対してある操作を実行する後で、次の層に対して入力ニューロンの勾配とする）とともに、重みを次の層目に対する重みに置き換える。図５に示すように、図５の破線の矢印は逆方向演算を示しており、実現の矢印は正方向演算を示している。
【０２７３】
他の実施例では、当該演算命令は、行列乗法命令、累積命令、活性化命令などの計算命令であり、それは正方向演算命令と方向トレーニング命令とを含む。
【０２７４】
2020126594.tif 000043
【０２７５】
図３Ａに示される計算装置によってニューラルネットワークに対する正方向演算を実行するための方法は、具体的には以下である。
【０２７６】
前記変換ユニット１３は、前記第１の入力データに対してデータタイプ変換を実行した後、制御ユニット１１は、命令キャッシュユニット１１０からニューラルネットワークに対する順方向演算命令と、ニューラルネットワーク演算命令に対応する操作ドメインと、および少なくとも１つの操作コードを抽出し、制御ユニット１１は、当該操作ドメインをデータアクセスユニットに送信し、当該少なくとも１つの操作コードを演算ユニット１２に送信する。
【０２７７】
制御ユニット１１は、メモリユニット１０から当該送信ドメインに対応する重みｗとオフセットｂとを抽出し（ｂが０の場合に、オフセットｂを抽出する必要はない）、重みｗとオフセットｂとを演算ユニットのマスター処理回路１０１に送信し、制御ユニット１１は、メモリユニット１０から入力データＸｉを抽出し、当該入力データＸｉをマスター処理回路１０１に送信する。
【０２７８】
マスター処理回路１０１は、入力データＸｉをｎ個のデータブロックに分割する。
【０２７９】
制御ユニット１１の命令処理ユニット１１１は、当該少なくとも１つの操作コードに従って乗算命令と、オフセット命令と、累積命令とを決定し、乗算命令と、オフセット命令と、累積命令とをマスター処理回路１０１に送信し、マスター処理回路１０１は、当該乗算命令と、重みｗをブロードキャストで複数のスレーブ処理回路１０２に送信し、ｎ個のデータブロックは複数のスレーブ処理回路１０２に分配される（例えば、ｎ個のスレーブ処理回路１０２を有する場合に、各スレーブ処理回路１０２毎に一つのデータブロックを送信する）。当該乗算命令に従って、当該重みｗと受信されたデータブロックと乗算を実行して中間結果を取得する複数のスレーブ処理回路１０２は、当該中間結果をマスター処理回路１０１に送信し、当該マスター処理回路１０１は、累積命令に従って複数のスレーブ処理回路１０２から送信された中間結果を累積演算して累積結果を取得してから、オフセット命令に従って当該累積結果にオフセットｂを加算して最終結果を取得してから、当該最終結果を制御ユニット１１に送信する。
【０２８０】
また、加算演算と乗算演算の順序を逆にすることができる。
【０２８１】
説明すべきは、前記計算装置は、ニューラルネットワークに対する逆方向トレーニング命令を実行する方法は、前記計算装置がニューラルネットワークに対する順方向演算命令
を実行するプロセスと類似しているため、具体的には前記逆方向トレーニングに関する説明を参照してもよいが、その詳細な説明は繰り返さない。
【０２８２】
本出願により提供される技術的解決策は、一つだけの命令、すなわちニューラルネットワーク演算命令を介してニューラルネットワークの乗算演算およびオフセット演算を実現でき、ニューラルネットワーク計算の中間結果を保存または抽出する必要がないため、中間データの格納および抽出演算を削減でき、これに対応する操作手順も削減し、ニューラルネットワークの計算効果を向上させるという利点がある。
【０２８３】
本出願は、さらに機械学習演算装置を開示しており、それは、１つまたは複数の本出願に係る計算装置を含み、他の処理装置から演算待ちのデータと制御情報とを取得して所定の機械学習演算を実行してから、その実行結果をＩ／Ｏインターフェースを介して周辺機器に送信する。周辺機器は、例えば、カメラと、モニターと、マウスと、キーボードと、ネットワークカードと、ｗｉｆｉインターフェイスと、サーバーとである。複数の計算装置が含まれている場合に、計算装置は、  より大きな機械学習演算を支援するために  、特定の構造を通じてリンクしつつ、データを転送でき、例えば、ＰＣＩＥバスを介して相互接続しつつ、データを転送する。この時点で、同じ制御システムを共有したり、個別の制御システムを使用したり、メモリを共有したり、各アクセラレータに独自のメモリを有したりできる。さらに、その相互接続方法は、任意の相互接続トポロジにすることができる。
【０２８４】
当該機械学習演算装置は互換性が高いため、ＰＣＩＥインターフェイスを介してさまざまなタイプのサーバーに接続できる。
【０２８５】
本出願は、前記機械学習演算装置と、相互接続共通インタフェースと、および他の処理装置を含む複合処理装置をさらに開示している。機械学習演算装置は、他の処理装置と交互して、協働してユーザーから指定の操作を実行する。図６は、複合処理装置の概略図である。
【０２８６】
他の処理装置は、中央プロセッサＣＰＵと、画像処理用演算プロセッサＧＰＵと、機械学習プロセッサなどの１つまたは複数の汎用／専用プロセッサのプロセッサタイプを含む。他の処理装置に含まれるプロセッサの数は制限されていない。他の処理装置は、機械学習演算装置の外部データと制御との間のインターフェイスとして機能し、データ転送と、その機械学習演算装置の開閉の実現などの基本的な制御を含む。他の処理装置は、機械学習演算装置と協働して演算タスクを仕上げてもよい。
【０２８７】
相互接続共通インタフェースは、前記機械学習演算装置と他の処理装置との間にデータと制御命令とを転送するために用いられる。当該機械学習演算装置は、他の処理装置から必要な入力データを取得し、機械学習演算装置のオンチップのメモリ装置に書き込む。他の処理装置から制御命令を取得し、機械学習演算装置のオンチップの制御キャッシュ装置に書き込んでもよい。機械学習演算装置のストレージモジュール内のデータを読み取り、他の処理装置に送信してもよい。
【０２８８】
選択可能に、当該構造は図７に示す通りであり、記憶装置をさらに含むことができ、記憶装置は前記機械学習演算装置と前記他の処理装置とそれぞれに接続される。記憶装置は、前記機械学習演算装置および前記他の処理装置にデータを格納するために用いられ、計算に必要なデータのうちに当該機械学習演算装置および前記他の処理装置の内部記憶装置完全に格納できないデータに対して特に適している。
【０２８９】
当該複合処理装置は、携帯電話、ロボット、ドローン、ビデオ監視設備などのＳＯＣオ
ンチップシステムとして使用でき、制御部のコア領域のサイズを効果的に削減し、処理速度を向上させ、全体的な電力消費を削減する。この場合に、当該複合処理装置相互接続共通インタフェースは、設備の特定のコンポーネントに結合される。特定のコンポーネントは、例えば、カメラと、モニターと、マウスと、キーボードと、ネットワークカードと、ｗｉｆｉインターフェイスとである。
【０２９０】
ある可能な実施例では、ｎ１個のメインプロセッサとｎ２個のコプロセッサを含む分散システムも請求され、ｎ１は０以上の整数であり、ｎ２は１以上の整数である。当該システムは、多種のトポロジー構造でもよく、図３Ｂに示されるトポロジーポロジー構造と、図３Ｃに示されるトポロジーポロジー構造と、図１１に示されるトポロジーポロジー構造と、図１２に示されるトポロジーポロジー構造とを含むがこれらに限定されない。
【０２９１】
当該メインプロセッサは、入力データとその小数点位置と計算命令とをそれぞれ前記複数のコプロセッサに送信する。または、当該メインプロセッサは、前記入力データとその小数点位置と計算命令とを前記複数のコプロセッサのうちに一部のコプロセッサに送信し、当該一部のコプロセッサは、前記入力データとその小数点位置と計算命令とを他のコプロセッサに送信する。前記当該コプロセッサは、前記計算装置を含み、当該計算装置は、前記方法および計算命令に従って入力データに対して演算を実行して、演算結果を取得する。
【０２９２】
入力データには、入力ニューロンと、重みと、オフセットデータとなどが含まれるが、これらに限定されない。
【０２９３】
前記コプロセッサーは演算結果をメインプロセッサーに直接送信するか、メインプロセッサーと接続関係のないコプロセッサーがメインプロセッサーと接続関係のあるコプロセッサーに演算結果を送信してから、当該コプロセッサーは受信した演算結果は、前記メインプロセッサに送信される。
【０２９４】
いくつかの実施例では、前記機械学習演算装置または複合処理装置を含むチップも請求される。
【０２９５】
いくつかの実施例では、前記チップを含むチップパッケージ構造が請求される。
【０２９６】
いくつかの実施例では、前記チップパッケージ構造を含むボードが請求される。
【０２９７】
いくつかの実施例では、前記ボードを含む電子機器が請求される。図８を参照すると、図８によると本出願はボードを提供し、前記ボードは、前記チップ３８９を含む上に、さらに他の支持部品を含んでもよく、当該支持部品は、記憶装置３９０と、受信装置３９１と、および制御装置３９２とを含むがこれらに限定されない。
【０２９８】
前記記憶装置３９０は、バスを介して前記チップパッケージ構造におけるチップと接続され、データを格納するために用いられる。前記記憶装置は、複数のセットのメモリセル３９３を含んでもよい。各セットの前記メモリセルは、バスを介して前記チップに接続されている。各セットの前記メモリセルは、ＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ
Ｒａｔｅ  ＳＤＲＡＭ、ダブルデータレート同期ダイナミックランダムアクセスメモリ）であることが分かりやすい。
【０２９９】
ＤＤＲは、クロック周波数を上げずにＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲは、クロックパルスの立ち上がり／立ち下がりの両方を使うことでデータを読み取ることができる。ＤＤＲは標準のＳＤＲＡＭの２倍の速度である。一実施例では、前記記憶
装置は、四つのセットの前記メモリセルを含んでもよい。前記メモリセルの各セットは、複数のＤＤＲ４メモリチップ（チップ）を含むことができる。ある一実施例では、チップは内部に４つの７２ビットＤＤＲ４コントローラを含むことができ、そのうち６４ビットがデータ送信に使用され、８ビットがＥＣＣに使用される。各セットの前記メモリセルは、ＤＤＲ４−３２００メモリチップ使用する場合に、データ伝送について理論的な帯域幅は２５６００  ＭＢ／ｓに達する可能性があることがわかりやすい。
【０３００】
一実施例では、各セットの前記メモリセルは、複数の並列接続で配置されたダブルデータレート同期ダイナミックランダムアクセスメモリを含む。ＤＤＲは１つのクロックサイクルでデータを２回転送できる。ＤＤＲを制御するためのコントローラーは、前記チップに配置され、各メモリセルのデータ送信とデータストレージとを制御するために用いられる。
【０３０１】
前記インターフェース装置は、前記チップパッケージ構造内におけるチップに電気的に接続されている。前記インターフェース装置は、前記チップとの外部設備（例えば、サーバーまたはコンピューター）との間のデータ転送を実現するために用いられる。例えば、一実施例では、前記インターフェース装置は、標準のＰＣＩＥインターフェースでもよい。例えば、処理待ちのデータは、標準のＰＣＩＥインターフェイスを介してサーバーによってチップに転送され、データ転送を実現する。好ましく、ＰＣＩＥ  ３．０Ｘ１６インターフェイスを介して送信する場合に、理論上の帯域幅は１６０００  ＭＢ／ｓに達することができる。他の実施例では、前記インターフェース装置は他のインターフェースであってもよいが、本出願は前記他のインターフェースの具体的な表現態様を制限せず、前記インターフェースユニットは伝達機能を実現すればよい。また、前記チップの計算結果は、まだ前記インターフェイス装置によって外部設備（サーバーなど）に送信される。
【０３０２】
前記制御装置は、前記チップに電気的に接続されている。前記制御装置は、前記チップの状態を監視するために用いられる。具体的には、前記チップと前記制御装置はＳＰＩインターフェースを介して電気的に接続でもよい。前記制御装置は、マイクロコントローラーユニット（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ、ＭＣＵ）を備えてもよい。例えば、前記チップは、複数の処理チップと、複数の処理コアまたは複数の処理回路とを備えてもよく、複数の負荷を駆動できる。したがって、前記チップは、複数の負荷や軽負荷など、多種な動作状態になることができる。前記制御装置により、前記複数の処理チップと、複数の処理コアまたは複数の処理回路との動作状態に対する制御は、制御デバイスによって実現することができる。
【０３０３】
電子機器は、データ処理装置と、ロボットと、コンピューターと、プリンターと、スキャナーと、タブレットと、スマートターミナルと、携帯電話と、運転レコーダーと、ナビゲーターと、センサーと、ウェブカメラと、サーバーと、クラウドサーバーと、カメラと、ビデオカメラと、プロジェクターと、時計と、ヘッドフォンと、モバイルストレージと、ウェアラブルと、乗り物と、家電製品と、および／または医療機器とを含む。
【０３０４】
前記乗り物は、飛行機と、船と、および／または車両とを含む。前記家電製品は、テレビと、エアコンと、電子レンジと、冷蔵庫と、炊飯器と、加湿器と、洗濯機と、電灯と、ガスコンロと、レンジフードとを含む。前記医療機器は、核磁気共鳴装置と、Ｂ超音波診断装置と、および／または心電計とを含む。
【０３０５】
図９を参照すると、図９は、本発明の実施例による機械学習計算を実行する方法であり、前記方法は以下を含む。
【０３０６】
Ｓ９０１、計算装置は、第１の入力データおよび計算命令を取得する。
【０３０７】
そのうち、前記第１の入力データには、入力ニューロンと、ウエートと、出力ニューロンとが含まれる。
【０３０８】
Ｓ９０２、計算装置は、前記計算命令を解析して、データ変換命令および複数の演算命令を取得する。
【０３０９】
そのうち、前記データ変換命令は操作ドメインおよび操作コードを含み、該当操作コードは前記データタイプ変換命令の機能を指示する。前記データタイプ変換命令の操作ドメインは小数点位置を含み、第１の入力データのデータタイプのフラグビット、およびデータタイプの変換モードを指示するために用いられる。
【０３１０】
Ｓ９０３、計算装置は、前記データ変換命令に従って前記第１の入力データを第２の入力データに変換し、当該第２の入力データは固定小数点データである。
【０３１１】
そのうち、前記データ変換命令に従って前記第１の入力データを第２の入力データに変換し、前記データ変換命令を解析し、前記小数点位置と、前記第１の入力データのデータタイプを示すフラグビット、およびデータタイプの変換モードを取得する。
【０３１２】
前記第１の入力データのデータタイプのフラグビットに従って前記第１の入力データのデータタイプを決定する。
【０３１３】
前記小数点位置と前記データタイプの変換方式に従って、前記第１の入力データを前記第１の入力データのデータタイプと異なる第２の入力データに変換することとを、含む。
【０３１４】
そのうち、前記第１の入力データと前記第２の入力データとは両方とも固定小数点データである場合に、前記第１の入力データの小数点位置と第２の入力データの小数点位置とは一致しない。
【０３１５】
ある可能な実施例では、前記第１の入力データは固定小数点データである場合、前記方法はさらに、前記第１の入力データの小数点位置に従って、１つ以上の中間結果の小数点位置を導出し、前記１つ以上の中間結果は前記第１の入力データに従って演算され得る。
【０３１６】
Ｓ９０４、計算装置は、前記複数の演算命令に従って前記第２の入力データに対する演算を行い、前記計算命令の計算結果を取得する。
【０３１７】
そのうち、前記演算命令は、順方向演算命令および逆方向トレーニング命令を含み、つまり、前記計算装置は、順方向演算命令および逆方向トレーニング命令を実行している際（すなわち当該計算装置は順方向演算命令および／または逆方向トレーニング命令を実行している）に、前記計算装置は、前記図９に示す実施例に従って、計算に関与するデータを固定小数点データに変換し、固定小数点演算を実行することができる。
【０３１８】
説明すべきは、前記ステップＳ９０１−Ｓ９０４は、具体的に図１−８に示された実施例に関する説明を参照してもよいが、その詳細な説明は繰り返さない。
【０３１９】
ある具体的なアプリケーションシナリオでは、前記計算装置は、演算に関与するデータを固定小数点データに変換しつつ、固定小数点データの小数点位置を調整し、具体的なプロセスについては、図１０に参照し、当該図１０に示す方法は以下を含む。
【０３２０】
Ｓ１００１、計算装置は、第１の入力データを取得する。
【０３２１】
そのうち、前記第１の入力データは、多層ネットワークモデルに関与するｍ層目のデータであり、当該第１の入力データは任意のタイプのデータである。例えば、該当第１の入力データは固定小数点データと、浮動小数点データと、整数データとまたは離散データとのいずれで、ｍは０より大きい整数である。
【０３２２】
そのうち、前記多層ネットワークモデルのｍ層目は線形層であり、当該線形層には畳み込み層と全結合層が含まれるが、これらに限定されない。前記第１の入力データは、入力ニューロンと、重みと、出力ニューロンと、入力ニューロン導関数と、重み導関数と、出力ニューロン導関数を含む。
【０３２３】
Ｓ１００２、計算装置は、第１の入力データの小数点位置および固定小数点データのビット幅を決定する。
【０３２４】
そのうち、前記第１の入力データとして固定小数点データのビット幅は、固定小数点データによって表された第１の入力データが占めるビットであり、前記小数点位置は、固定小数点データで表された第１データデータの小数部が占めるビットである。当該小数点位置は、固定小数点データの精度を特徴付けるために用いられる。具体については、図２Ａの関連する説明を参照する。
【０３２５】
2020126594.tif 000044
【０３２６】
一実施例では、畳み込み層および全結合層の入力ニューロンと、重みと、出力ニューロンと、入力ニューロン導関数と、出力ニューロン導関数と、重み導関数とはすべて固定小数点データで表される。
【０３２７】
必要に応じて、前記入力ニューロンが使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記入力ニューロンが使用する固定小数点データのビット幅は８である。
【０３２８】
必要に応じて、前記重みが使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記重みが使用する固定小数点データのビット幅は８
である。
【０３２９】
必要に応じて、前記入力ニューロン導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記入力ニューロン導関数が使用する固定小数点データのビット幅は１６である。
【０３３０】
必要に応じて、前記出力ニューロン導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記出力ニューロン導関数が使用する固定小数点データのビット幅は２４である。
【０３３１】
必要に応じて、前記重み導関数が使用する固定小数点データのビット幅は、８、１６、３２、６４または他の値である。さらに、前記重み導関数が使用する固定小数点データのビット幅は２４である。
【０３３２】
一実施形例では、前記多層ネットワークモデル演算に関与するデータのうちより大きい値を有するデータａに対しては、多種な固定小数点表現方法を利用してもよく、具体的には図２Ｂの関連する説明を参照する。
【０３３３】
2020126594.tif 000045
【０３３４】
Ｓ９０３、計算装置は、第１の入力データの小数点位置を初期化し、第１の入力データの小数点位置を調整する。
【０３３５】
そのうち、前記小数点位置ｓは、異なるタイプのデータと、異なるニューラルネットワークレイヤーのデータと、異なるエポックにおけるデータにより、初期化および動的に調整する必要がある。
【０３３６】
以下は、より具体的に第１の入力データの小数点位置ｓの初期化プロセス、つまり、最初で第１の入力データを変換する際に固定小数点データに使用する小数点位置ｓを決定することについて説明する。
【０３３７】
さらに、前記計算装置は、以下を含む前記第１の入力データの小数点位置ｓを初期化する。第１の入力データの絶対値の最大値に従って第１の入力データの小数点位置ｓを初期化する。第１の入力データの絶対値の最小値に従って第１の入力データの小数点位置ｓを初期化する。第１の入力データにおける異なるデータタイプの間の関係に従って第１の入力データの小数点位置ｓを初期化する。経験的定数に従って第１の入力データの小数点位置ｓを初期化する。
【０３３８】
以下は、前記初期化プロセスについて具体的に説明する。
【０３３９】
2020126594.tif 000046
【０３４０】
場合に、データタイプで検索したり、層やデータタイプで検索したり、層やデータタイプやクループで検索したりすることができる。第１の入力データの絶対値の最大値を決定する方法には以下が含まれる。
【０３４１】
2020126594.tif 000047
【０３４２】
2020126594.tif 000048
【０３４３】
2020126594.tif 000049
【０３４４】
2020126594.tif 000050
【０３４５】
2020126594.tif 000051
【０３４６】
2020126594.tif 000052
【０３４７】
さらに、前記入力ニューロンの小数点位置が初期化された値および出力ニューロンの小数点位置が初期化された値は、どちらも［−８、８］の範囲内で選択可能である。重みの小数点位置が初期化された値は［−１７、８］の範囲内で選択する。入力ニューロン導関数の小数点位置が初期化された値および出力ニューロン導関数の小数点位置が初期化された値は、どちらも［−４０、−２０］の範囲内で選択する。重み導関数の小数点位置が初期化された値は、［−４８、−１２］の範囲内で選択してもよい。
【０３４８】
以下、前記計算装置が小数点位置ｓのデータを動的に調整する方法について具体的に説明する。
【０３４９】
前記計算装置は、小数点位置ｓを動的に調整する方法は、ｓを上方調整すること（ｓを拡大する）と、ｓを下方調整すること（ｓを縮小する）とを含む。具体的には、第１の入力データの絶対値の最大値に従ってシングルステップで上方調整することと、第１の入力データの絶対値の最大値に従ってステップバイステップで上方調整することと、第１の入力データの分布に従ってシングルステップで上方調整することと、第１の入力データの分布に従ってステップバイステップで上方調整することと、第１の入力データの絶対値の最大値に従って下方調整することとを含む。
【０３５０】
2020126594.tif 000053
【０３５１】
2020126594.tif 000054
【０３５２】
2020126594.tif 000055
【０３５３】
2020126594.tif 000056
【０３５４】
2020126594.tif 000057
【０３５５】
必要に応じて、小数点位置を調整する頻度に対して、何時でも第１の入力データの小数点位置を調整しない。または、ｎ個の第１のトレーニング周期（すなわち、ｉｔｅｒａｔｉｏｎ）ごとに調整し、ｎは定数である。または、ｎ個の第２のトレーニング周期（すなわち、ｅｐｏｃｈ）ごとに調整し、ｎは定数である。または、ｎ個の第１のまたはｎ個の第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、ｎ個の第１のまたは第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、その後、ｎ＝αｎを調整し、そのうちにαは１より大きいである。または、ｎ個の第１のまたは第２のトレーニング周期ごとに第１の入力データの小数点位置を調整し、トレーニングラウンドの回数が増えるとともに、ｎが徐々に減少する。
【０３５６】
さらに、入力ニューロンの小数点位置と、重みの小数点位置と、出力ニューロンの小数点位置とは、１００個の第１のトレーニング周期ごとに調整される。入力ニューロンの小数点位置と、出力ニューロンの小数点位置とは、２０個の第１のトレーニング周期ごとに調整される。
【０３５７】
説明すべきは、前記第１のトレーニング周期はバッチでサンプルをトレーニングすることに必要な時間であり、前記第２のトレーニング周期はすべてのトレーニングサンプルのトレーニングを実行することに必要な時間である。
【０３５８】
説明すべきは、前記データの絶対値の平均値または中間値に従って、データの小数点位置を初期化および調整し、具体的に前記データの絶対値の最大値に対する初期化と前記データの小数点位置に対する調整に関する説明を参照してもよいが、その詳細な説明は繰り返さない。
【０３５９】
前述の方法の実施例では、簡潔さのために、それらはすべて一連の動作の組み合わせとして説明されているが、当業者は、本開示が説明された動作シーケンスによって限定されないことを理解されたい。なぜなら、特定のステップは、本開示に従って他のシーケンスでまたは同時に実行され得るからである。さらに、当業者はまた、本明細書に記載されている実施例は任意の実施例であり、関連する動作およびモジュールは必ずしも本開示によって必要とされないことを理解されたい。
【０３６０】
上記の実施例では、様々な実施例の説明が異なり、ある実施例で詳述されていない詳細は他の実施例の関連する説明を参照することができる。
【０３６１】
本明細書で提供されるいくつかの実施例では、開示された装置は他の方法でも実施され得ることを理解されたい。例えば、上述した装置の実施例は単なる例示であり、例えば、ユニットの分割は論理的な機能の分割のみであり、他の分割方法、例えば複数のユニット又は構成要素を組み合わせてもよい。別のシステムに統合するか、または一部の機能を無視したり行わないことができる。さらに、図示または説明した相互結合または直接結合または通信接続は、何らかのインターフェース、デバイスまたはユニットを介した間接結合または通信接続でもよく、電気的またはその他の方法でもよい。
【０３６２】
前記個別のコンポーネントとして説明されるユニットは、物理的に分離される場合とされない場合があり、ユニットとして表示されるコンポーネントは、物理ユニットである場合とそうでない場合がある。つまり、１箇所に配置されでもよく、複数のネットワークユニットに分散されでもよい。ユニットのいくつかまたはすべては、実施例の解決策の目的を達成するための実際のニーズに従って選択されてもよい。
【０３６３】
また、本願の各実施例における各機能ユニットは、１つの処理ユニットに統合されてもよく、各ユニットは物理的に別々に存在してもよく、または２つ以上のユニットが１つのユニットに統合されてもよい。前記統合ユニットは、ハードウェアの形またはソフトウェアプログラムモジュールの形で実現できる。
【０３６４】
前記統合ユニットは、それがソフトウェア機能ユニットの形態で実施され、別個の製品として販売または使用されるときに、コンピュータ可読メモリに格納することができる。そのような理解に基づいて、本質的に本開示の技術的解決策、または関連技術に寄与する技術的解決策の一部、または技術的解決策の全部または一部は、格納されるソフトウェア製品の形で具現化され得る。本開示の様々な実施形態において説明される動作の全部または一部をコンピュータデバイス（パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであってもよい）に実行させるための命令を含む。前記メモリは、ユニバーサルシリアルバス（ＵＳＢ）、読み出し専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、，Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リムーバブルハードディスク、ディスク、コンパクトディスク（ＣＤ）のようなプログラムコードを格納することができる様々な媒体を含む。
【０３６５】
当業者であれば、上述した実施形態の様々な方法の全部または一部を関連ハードウェアに命令するためのプログラムによって達成することができ、そのプログラムをコンピュータ可読メモリに格納することができることを理解するであろう。これは、フラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ディスクまたはコンパクトディスク（ＣＤ）などを含み得る。
【０３６６】
以上、本開示の実施例について詳細に説明したが、具体的な例を用いて本開示の原理および実施例を本明細書に記載した。  当業者であれば、本開示に照らして、特定の実施例および本出願の範囲において説明することになるが、上記の説明は本開示を限定するものとして解釈されるべきではない。
【図１】
2020126594.tif 000058
【図２】
2020126594.tif 000059
【図２Ａ】
2020126594.tif 000060
【図２Ｂ】
2020126594.tif 000061
【図３】
2020126594.tif 000062
【図３Ａ】
2020126594.tif 000063
【図３Ｂ】
2020126594.tif 000064
【図３Ｃ】
2020126594.tif 000065
【図３Ｄ】
2020126594.tif 000066
【図３Ｅ】
2020126594.tif 000067
【図３Ｆ】
2020126594.tif 000068
【図３Ｇ】
2020126594.tif 000069
【図３Ｈ】
2020126594.tif 000070
【図４】
2020126594.tif 000071
【図５】
2020126594.tif 000072
【図６】
2020126594.tif 000073
【図６Ａ】
2020126594.tif 000074
【図７】
2020126594.tif 000075
【図８】
2020126594.tif 000076
【図９】
2020126594.tif 000077
【図１０】
2020126594.tif 000078
【図１１】
2020126594.tif 000079
【図１２】
2020126594.tif 000080