(57)【要約】  データ計算システムは、メモリ（１１）と、プロセッサ（１２）と、アクセラレータ（１３）とを含み、メモリ（１１）はプロセッサ（１２）に通信可能に結合され、計算用データ及び計算結果を記憶するように構成され、データはプロセッサ（１２）によって書き込まれ、プロセッサ（１２）はアクセラレータ（１３）に通信可能に結合され、アクセラレータ（１３）を制御するように構成され、アクセラレータ（１３）はメモリ（１１）に通信可能に結合され、予め構成された制御情報に従ってメモリ（１１）にアクセスし、計算プロセスを実施して計算結果をもたらし、計算結果をメモリ（１１）に書き戻すように構成される。更にデータ計算システムのアクセラレータ及びアクセラレータによって実行される方法。前述のシステムはプロセッサの実行効率を改善し、プロセッサの計算オーバヘッドを減らすことができる。
2021517299.tif 000002
【特許請求の範囲】
【請求項１】
計算用データを記憶するように構成されるメモリと、
前記メモリに通信可能に結合され、前記メモリに前記データを書き込むように構成されるプロセッサと、
前記メモリ及び前記プロセッサに通信可能に結合され、前記プロセッサから制御情報を受信し、前記制御情報に従って前記メモリにアクセスし、計算結果をもたらす計算プロセスを実施し、前記計算結果を前記メモリに書き戻すように構成されるアクセラレータと
を含む、データ計算システム。
【請求項２】
前記アクセラレータが、
前記プロセッサに通信可能に結合され、命令を含む前記制御情報を記憶するように構成される制御レジスタモジュールと、
前記メモリに通信可能に結合され、前記制御情報に従って前記メモリにアクセスし、前記計算プロセスを実施し、前記計算結果を前記メモリに書き戻すように構成される計算モジュールと
を含む、請求項１に記載のデータ計算システム。
【請求項３】
前記制御レジスタモジュール内に記憶される前記制御情報が、前記計算用データのための開始アドレス、オペランドの数、計算方式、前記計算結果のためのライトバックアドレス、及び計算イネーブルフラグを含む、請求項２に記載のデータ計算システム。
【請求項４】
前記計算方式が、乗累算演算、指数関数、シグモイド関数、正規化線形関数、又はソフトマックス関数のうちの１つを含む、請求項３に記載のデータ計算システム。
【請求項５】
前記計算イネーブルフラグが有効にされたことを検出した後、前記計算モジュールが前記開始アドレス及び前記オペランドの数に従って前記メモリから前記データを読み出し、前記計算方式に従って前記計算プロセスを実施し、前記ライトバックアドレスに従って前記計算結果を前記メモリに書き戻すように更に構成される、請求項３又は４に記載のデータ計算システム。
【請求項６】
前記計算モジュールは、前記計算プロセスが完了した後で前記計算イネーブルフラグをリセットするように構成される、請求項５に記載のデータ計算システム。
【請求項７】
前記計算モジュールが、
結果を生成するために乗累算演算を実行するように構成される乗累算ユニット
を含む、請求項４乃至６の何れか一項に記載のデータ計算システム。
【請求項８】
前記計算モジュールが、
入力データ又は前記乗累算ユニットからの前記結果に対して正規化線形関数を実行するように構成される正規化線形計算ユニットと、
前記乗累算ユニットからの前記結果又は前記入力データを前記正規化線形計算ユニットへのデータ入力として選択するように構成される第１のマルチプレクサと
を含む、請求項７に記載のデータ計算システム。
【請求項９】
前記計算モジュールが、
前記乗累算ユニット又は前記正規化線形計算ユニットからの前記結果を前記計算結果として選択するように構成される第２のマルチプレクサ
を含む、請求項８に記載のデータ計算システム。
【請求項１０】
前記メモリ内に記憶される前記データが前記計算プロセス中に更新されない、請求項１乃至９の何れか一項に記載のデータ計算システム。
【請求項１１】
外部プロセッサに通信可能に結合され、前記外部プロセッサから制御情報を受信するように構成される制御レジスタモジュールと、
前記外部プロセッサに関連する外部メモリに通信可能に結合され、前記制御情報に従って前記外部メモリにアクセスし、計算結果をもたらす計算プロセスを実施し、前記計算結果を前記外部メモリに書き戻すように構成される計算モジュールと
を含む、アクセラレータ。
【請求項１２】
前記制御情報が、前記計算用データのための開始アドレス、オペランドの数、計算方式、前記計算結果のためのライトバックアドレス、及び計算イネーブルフラグを含む、請求項１１に記載のアクセラレータ。
【請求項１３】
前記計算方式が、乗累算演算、指数関数、シグモイド関数、正規化線形関数、又はソフトマックス関数のうちの１つを含む、請求項１２に記載のアクセラレータ。
【請求項１４】
前記計算イネーブルフラグが有効にされたことを検出した後、前記計算モジュールが前記開始アドレス及び前記オペランドの数に従って前記外部メモリから前記データを読み出し、前記計算方式に従って前記計算プロセスを実施し、前記ライトバックアドレスに従って前記計算結果を前記外部メモリに書き戻すように更に構成される、請求項１２又は１３に記載のアクセラレータ。
【請求項１５】
前記計算モジュールは、前記計算プロセスが完了した後で前記計算イネーブルフラグをリセットするように構成される、請求項１４に記載のアクセラレータ。
【請求項１６】
前記計算モジュールが、
結果を生成するために乗累算演算を実行するように構成される乗累算ユニット
を含む、請求項１３乃至１５の何れか一項に記載のアクセラレータ。
【請求項１７】
前記計算モジュールが、
入力データ又は前記乗累算ユニットからの前記結果に対して正規化線形関数を実行するように構成される正規化線形計算ユニットと、
前記乗累算ユニットからの前記結果又は前記入力データを前記正規化線形計算ユニットへのデータ入力として選択するように構成される第１のマルチプレクサと
を含む、請求項１６に記載のアクセラレータ。
【請求項１８】
前記計算モジュールが、
前記乗累算ユニット又は前記正規化線形計算ユニットからの前記結果を前記計算結果として選択するように構成される第２のマルチプレクサ
を含む、請求項１７に記載のアクセラレータ。
【請求項１９】
前記メモリ内に記憶される前記データが前記計算プロセス中に更新されない、請求項１１乃至１８の何れか一項に記載のアクセラレータ。
【請求項２０】
データ計算システムのアクセラレータによって実行されるデータ計算方法であって、
計算用データのための開始アドレス、計算方式、及びライトバックアドレスを前記データ計算システムのプロセッサから前記データ計算システムの前記アクセラレータによって受信すること、
前記開始アドレスに従って、前記プロセッサに結合されるメモリに前記アクセラレータによってアクセスすること、
前記計算方式に従って前記データに対して計算プロセスを実行して計算結果をもたらすこと、及び
前記ライトバックアドレスに従って前記計算結果を前記メモリに書き込むこと
を含む、データ計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[1]  本開示は、参照によりその全体を本明細書に援用する、２０１８年３月２１日に出願された中国特許出願第２０１８１０２３５３１２．９号の優先権の利益を主張する。
【背景技術】
【０００２】
背景
[2]  人工知能（ＡＩ）技術の発展と共に、計算能力及び計算速度はＡＩの分野で不可欠な役割を果たしている。従来の計算の実装方法は次の通りである：プロセッサがバス経由でメモリにアクセスしてデータを読み出し、結果を得るために計算を行い、次いで、計算結果をバス経由でメモリに書き戻す。従来の計算の実装方法での１つの問題はプロセッサが大量のバス資源を占有することであり、それはプロセッサが計算中に絶えずメモリにアクセスする必要があるからである。プロセッサの実行効率が悪影響を受ける。
【発明の概要】
【課題を解決するための手段】
【０００３】
開示の概要
[3]  本開示は、メモリと、プロセッサと、アクセラレータとを含むデータ計算システムを提供する。メモリはプロセッサに通信可能に結合され、計算用データを記憶するように構成され、データはプロセッサによって書き込まれる。プロセッサはアクセラレータに通信可能に結合され、アクセラレータを制御するように構成される。アクセラレータはメモリに通信可能に結合され、予め構成された制御情報に従ってメモリにアクセスし、データの計算を実施し、計算結果をメモリ内に書き戻すように構成される。本開示は、データ計算システムのアクセラレータ及びアクセラレータによって実行される方法も提供する。
【図面の簡単な説明】
【０００４】
図面の簡単な説明
【図１】[4]本開示の一部の実施形態による例示的なデータ計算システムの概略図である。
【図２】[5]本開示の一部の実施形態による例示的なアクセラレータの概略図である。
【図３】[6]本開示の一部の実施形態による例示的な計算モジュールの概略図である。
【図４】[7]本開示の一部の実施形態による、例示的な３２チャネル８ｘ８乗累算データ記憶形式及び計算プロセスの図である。
【図５】[8]本開示の一部の実施形態による、例示的な４チャネル１６ｘ１６乗累算データ記憶形式及び計算プロセスの図である。
【図６】[9]本開示の一部の実施形態による、指数関数、ソフトマックス関数、及びシグモイド関数のための例示的なデータ記憶形式及び計算プロセスの図である。
【発明を実施するための形態】
【０００５】
詳細な説明
[10]  本開示の実施形態の目的、技術的解決策、及び利点をより明確にするために、本開示の実施形態における技術的解決策を本開示の実施形態において添付図面を参照して以下で説明する。当然ながら、記載する実施形態は本開示の実施形態の全てではなく一部に過ぎない。本開示の実施形態に基づき、創造的な取り組みなしに当業者が得る他の全ての実施形態が本開示の保護範囲に含まれるものとする。
【０００６】
[11]  本開示で示すデータ計算システムはプロセッサの実行効率を改善し、プロセッサの計算オーバヘッドを減らすことができる。本開示の一部の実施形態で示すデータ計算システムは、元のメモリ及びプロセッサに基づいてアクセラレータを追加する。プロセッサはバスを使用してアクセラレータを制御し、アクセラレータはメモリにアクセスし、データの計算を実行し、計算を完了した後で計算結果をメモリに書き戻す。従来の構造と比較し、プロセッサはアクセラレータを制御し、具体的なデータの計算はアクセラレータによって完了される。計算プロセスはアクセラレータによって独立に実行され、プロセッサの計算ユニットもバス資源も占有しない。アクセラレータが計算プロセスを実行している間プロセッサは他のイベントを処理することができ、アクセラレータの計算性能が悪影響を受けることはない。従ってプロセッサの実行効率が改善され、プロセッサの計算オーバヘッドが低減され、データの計算に費やされる時間も短縮される。
【０００７】
[12]  本開示の実施形態はデータ計算システムを提供する。図１は、本開示の一部の実施形態による例示的なデータ計算システムの概略図である。図１に示すように、データ計算システムはメモリ１１と、プロセッサ１２と、アクセラレータ１３とを含む。
【０００８】
[13]  メモリ１１はプロセッサ１２に通信可能に結合され、計算用データを記憶するように構成される。全ての計算用データはプロセッサ１２によってメモリ１１内に書き込まれる。
【０００９】
[14]  プロセッサ１２はアクセラレータ１３に通信可能に結合され、アクセラレータ１３を制御するように構成される。
【００１０】
[15]  アクセラレータ１３はメモリ１１に通信可能に結合され、予め構成された制御情報に従ってメモリ１１にアクセスし、データ計算プロセスを実施し、計算結果をメモリ１１に書き戻すように構成される。
【００１１】
[16]  一部の実施形態では、データ計算プロセスを実行するとき、本開示の実施形態で示すデータ計算システムのプロセッサ１２はアクセラレータ１３を制御するがデータ計算プロセスは実行しない。データ計算プロセスはアクセラレータ１３によって完了される。従って、計算プロセスの間プロセッサ１２はメモリ１１にアクセスする必要がなく、従ってバスを占有せず、それによりバスの利用率を改善する。同時に、アクセラレータ１３がデータの計算を実行するときプロセッサ１２は他のイベントを処理することができ、従ってプロセッサの利用率も改善される。加えて、アクセラレータ１３は計算のために任意の種類のメモリに結合することができる。
【００１２】
[17]  加えて、本開示の一部の実施形態を使用してwake-on-voiceアルゴリズムの実験的検証を行うことができる。従来のシステムでは、同じwake-on-voiceアルゴリズムで処理速度を１９６ＭＣＰＳ（Millions of Cycles Per Second：１００万サイクル／秒）に保つ必要があることを実験データの結果が示している。本開示では、アクセラレータ１３を使用して処理速度が９０ＭＣＰＳに達し得る。性能を約５５％改善することができる。
【００１３】
[18]  図２は、本開示の一部の実施形態による例示的なアクセラレータの概略図である。図２に示すように、アクセラレータ１３は制御レジスタモジュール１３１及び計算モジュール１３２を含む。
【００１４】
[19]  制御レジスタモジュール１３１はプロセッサ１２に通信可能に結合され、制御情報を記憶するように構成される。制御情報は、命令を届けるためのバスを使用してプロセッサ１２によって予め構成される。
【００１５】
[20]  計算モジュール１３２はメモリ１１に通信可能に結合され、制御情報に従ってメモリ１１にアクセスし、データ計算を実施し、計算結果をメモリ１１に書き戻すように構成される。
【００１６】
[21]  一部の実施形態では、制御情報が計算用データのための開始アドレス、オペランドの数、計算方式、計算結果のためのライトバックアドレス、及び計算イネーブルフラグを含む。計算方式は、乗累算演算、指数関数、シグモイド関数、正規化線形（ＲｅＬＵ）関数、及びソフトマックス関数を含む。換言すれば、計算モジュール１３２は乗累算演算、指数関数、シグモイド関数、正規化線形（ＲｅＬＵ）関数、及びソフトマックス関数を実装することができる。但し本開示の計算方式は上記の数種類に限定されず、計算方式はソフトウェアアプリケーションの実際の要件に従ってカスタマイズすることができる。実行中、その使用が柔軟且つ便利であるように、プロセッサによって計算方式を制御することができる。更に、チップ面積を最適化する効果を実現するために、計算方式のハードウェア実装を実際の要件に従って追加し又は削除することができる。
【００１７】
[22]  計算イネーブルフラグが１だと検出した後、計算モジュール１３２は、計算用データのための開始アドレスに従ってメモリ１１から逐次的に計算用データとオペランドの数とを読み出し、計算方式に従ってデータの計算を実行し、計算結果のためのライトバックアドレスに従って計算結果をメモリ１１に書き戻す。同時に、計算モジュール１３２は計算イネーブルフラグをリセットする。計算イネーブルフラグが０だと読み取った後、プロセッサ１２は次の計算を開始することができ、又は計算結果をメモリ１１から読み出すことができる。
【００１８】
[23]  図３は、本開示の一部の実施形態による例示的な計算モジュールの概略図である。図３に示すように、乗累算演算又は正規化線形（ＲｅＬＵ）関数を実装する場合、計算モジュール１３２は乗累算ユニット１３２１、正規化線形（ＲｅＬＵ）計算ユニット１３２２、第１のマルチプレクサ１３２３、及び第２のマルチプレクサ１３２４を含む。
【００１９】
[24]  乗累算ユニット１３２１は、２チャネル１６ビット乗算器１３２１１、２チャネル８ビット乗算器１３２１２、累算器１３２１４、及びレジスタ１３２１３を含む。乗累算ユニット１３２１は、２チャネル１６ビット乗算器１３２１１及び２チャネル８ビット乗算器１３２１２を使用して並列計算を実行し、乗累算計算された結果をレジスタ１３２１３内に記憶するように構成される。
【００２０】
[25]   正規化線形（ＲｅＬＵ）計算ユニット１３２２は、入力データ１３２０又は乗累算ユニット１３２１からの乗累算計算された結果に対して正規化線形（ＲｅＬＵ）関数の計算を実行するように構成される。
【００２１】
[26]  第１のマルチプレクサ１３２３は、ReLU_bypass信号に従い、乗累算ユニット１３２１からの乗累算計算された結果又は入力データ１３２０を正規化線形（ＲｅＬＵ）計算ユニット１３２２へのデータ入力として選択するように構成される。
【００２２】
[27]  第２のマルチプレクサ１３２４は、ReLU_bypass信号に従い、乗累算ユニット１３２１からの乗累算計算された結果に対して正規化線形（ＲｅＬＵ）関数の計算を実行するかどうかを選択するように構成される。
【００２３】
[28]  図４は、本開示の一部の実施形態による、例示的な３２チャネル８ｘ８データ記憶形式及び計算プロセスの図である。３２チャネル８ｘ８乗累算計算を実行するために、図４に従って計算プロセスを以下に示す。
【００２４】
[29]  プロセッサ１２がデータＡ及びデータＢをバス経由でメモリ１１内に書き込み、その後の計算プロセスが完了するまでデータは書き込まれない。計算プロセスの完了後に計算用データを置換する必要がある場合、プロセッサ１２が計算用データを書き換える。
【００２５】
[30]  計算用データがメモリ１１内に書き込まれた後、プロセッサ１２は、アクセラレータ１３の制御レジスタモジュール１３１、データＡのための開始アドレス（DATA0_Start_addr）、データＢのための開始アドレス（DATA1_Start_addr）、及び計算結果のためのライトバックアドレス（Result_wb_addr）を構成する。
【００２６】
[31]  次いでプロセッサ１２は、計算方式を３２チャネル８ｘ８乗累算計算（例えば図４の計算）であるように構成し、オペランドの数を３２に設定し、計算イネーブルフラグを１に設定する。
【００２７】
[32]  計算イネーブルフラグが１だと検出した後、アクセラレータ１３の計算モジュール１３２は計算プロセスを開始し、データＡのための開始アドレス（DATA0_Start_addr）、データＢのための開始アドレス（DATA1_Start_addr）、及びオペランドの数に従ってメモリ１１から計算用データを読み出し、乗累算計算を実行する。
【００２８】
[33]  計算が完了した後、計算結果がライトバックアドレス（Result_wb_addr）に従ってメモリ１１内に書き戻され、計算イネーブルフラグがリセットされる。
【００２９】
[34]  計算イネーブルフラグが０だと読み取った後、プロセッサ１２は次の計算プロセスを開始することができ、又は計算結果をメモリ１１から読み出すことができる。
【００３０】
[35]  図５は、本開示の一部の実施形態による、例示的な４チャネル１６ｘ１６乗累算データ記憶形式及び計算プロセスの図である。４チャネル１６ｘ１６乗累算計算を実行するために、図５に従って計算プロセスを以下に示す。
【００３１】
[36]  プロセッサ１２がデータＡ及びデータＢをバス経由でメモリ１１内に書き込み、その後の計算プロセスが完了するまでデータは書き込まれない。計算プロセスの完了後に計算用データを置換する必要がある場合、プロセッサ１２が計算用データを書き換える。
【００３２】
[37]  データがメモリ１１内に書き込まれた後、プロセッサ１２は、アクセラレータ１３の制御レジスタモジュール１３１、データＡのための開始アドレス（DATA0_Start_addr）、データＢのための開始アドレス（DATA1_Start_addr）、及び計算結果のためのライトバックアドレス（Result_wb_addr）を構成する。
【００３３】
[38]  次いでプロセッサ１２は、計算方式を４チャネル１６ｘ１６乗累算計算（例えば図５の計算）であるように構成し、オペランドの数を４に設定し、計算イネーブルフラグを１に設定する。
【００３４】
[39]  計算イネーブルフラグが１だと検出した後、アクセラレータ１３の計算モジュール１３２は計算プロセスを開始し、データＡのための開始アドレス（DATA0_Start_addr）、データＢのための開始アドレス（DATA1_Start_addr）、及びオペランドの数に従ってメモリ１１から計算用データを読み出し、乗累算計算を実行する。
【００３５】
[40]  計算が完了した後、計算結果がライトバックアドレス（Result_wb_addr）に従ってメモリ１１内に書き戻され、計算イネーブルフラグがリセットされる。
【００３６】
[41]  計算イネーブルフラグが０だと読み取った後、プロセッサ１２は次の計算プロセスを開始することができ、又は計算結果をメモリ１１から読み出すことができる。
【００３７】
[42]  図６は、本開示の一部の実施形態による、指数関数、ソフトマックス関数、及びシグモイド関数のための例示的なデータ記憶形式及び計算プロセスの図である。図６の計算プロセスは、図４及び図５の乗累算計算プロセスと同様である。乗累算計算の代わりに、プロセッサ１２は指数関数、ソフトマックス関数、又はシグモイド関数であるように計算方式を構成する。
【００３８】
[43]  本開示の幾つかの具体的な実施形態を上記で説明したが、本開示の保護範囲はそれらの実施形態に限定されない。本開示によって開示する技術的範囲の中で当業者によって容易に考案され得る如何なる変更又は置換も本開示の保護範囲に含まれるものとする。従って、本開示を保護する保護範囲は特許請求の範囲の保護範囲に服するものとする。
【図１】
2021517299.tif 000003
【図２】
2021517299.tif 000004
【図３】
2021517299.tif 000005
【図４】
2021517299.tif 000006
【図５】
2021517299.tif 000007
【図６】
2021517299.tif 000008
【国際調査報告】
2021517299.tif 000009
2021517299.tif 000010