(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-16
(45)【発行日】2023-11-27
(54)【発明の名称】アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
(51)【国際特許分類】
G06F 17/16 20060101AFI20231117BHJP
G06F 9/345 20180101ALI20231117BHJP
G06F 9/38 20180101ALI20231117BHJP
【FI】
G06F17/16 B
G06F9/345 S
G06F9/38 310B
(21)【出願番号】P 2022549154
(86)(22)【出願日】2021-06-01
(86)【国際出願番号】 CN2021097563
(87)【国際公開番号】W WO2022001550
(87)【国際公開日】2022-01-06
【審査請求日】2022-08-15
(31)【優先権主張番号】202010623936.5
(32)【優先日】2020-07-01
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514187420
【氏名又は名称】テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ユィ,シアオユィ
(72)【発明者】
【氏名】チェン,デェウエイ
(72)【発明者】
【氏名】ジャン,ホン
(72)【発明者】
【氏名】ション,イェン
(72)【発明者】
【氏名】ガオ,ジエンリン
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2018-005369(JP,A)
【文献】特表2019-533868(JP,A)
【文献】特表2020-503584(JP,A)
【文献】特開2019-053736(JP,A)
【文献】米国特許出願公開第2018/0004515(US,A1)
【文献】米国特許出願公開第2018/0197068(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 9/345
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
アドレス生成ユニットが実行するアドレス生成方法であって、
超長命令語の解析に基づいて実行パラメータを取得するステップであって、前記実行パラメータはスライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられる、ステップ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、前記第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を得るステップ;
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内にあり、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にあり、かつ前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にあり、かつ前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にある場合、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するステップ;
前記第一目標データの開始アドレスを得るステップ;及び
前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップを含む、アドレス生成方法。
【請求項2】
請求項1に記載のアドレス生成方法であって、
前記の、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するステップは、
前記第一スライディングウィンドウ幅計数値と前記スライディングウィンドウ幅ストライドとの和を求め、第二スライディングウィンドウ幅計数値を得るステップ;
前記第一スライディングウィンドウ高さ計数値と前記スライディングウィンドウ高さストライドとの和を求め、第二スライディングウィンドウ高さ計数値を得るステップ;
前記第二スライディングウィンドウ幅計数値と前記第一特徴マップ幅計数値との和を求め、幅計数値を得るステップ;
前記第二スライディングウィンドウ高さ計数値と前記第一特徴マップ高さ計数値との和を求め、高さ計数値を得るステップ;及び
前記高さ計数値と行間隔係数との乗算結果と、前記幅計数値と列間隔係数との乗算結果との和を求め、前記第一目標データの偏移量を得るステップを含む、アドレス生成方法。
【請求項3】
請求項1に記載のアドレス生成方法であって、
前記の、前記第一目標データの開始アドレスを得るステップは、
前記第一目標データに対応する基本アドレスを得るステップであって、前記基本アドレスは前記超長命令語の解析に基づいて取得される設定パラメータである、ステップ;
前記第一目標データに対応するスライス計数値及びバッチ計数値を得るステップ;
前記スライス計数値とスライスアドレスインクリメントとの乗算結果と、前記バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを得るステップであって、前記スライスアドレスインクリメント及び前記バッチアドレスインクリメントは何れも前記超長命令語の解析に基づいて取得される設定パラメータである、ステップ;及び
前記アドレス総インクリメントと前記基本アドレスとの和を求め、第一目標データの前記開始アドレスを得るステップを含む、アドレス生成方法。
【請求項4】
請求項1に記載のアドレス生成方法であって、さらに、
前記第一目標データに対応する前記深さ計数値が前記深さ計数範囲を超えた場合、前記第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、かつ前記深さ計数値に対してリセット処理を行う、アドレス生成方法。
【請求項5】
請求項1に記載のアドレス生成方法であって、
前記実行パラメータはさらに、特徴マップ幅ストライドを決定するために用いられ、
前記アドレス生成方法は、さらに、
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内になく、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にある場合、前記第一スライディングウィンドウ高さ計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値に対してリセット処理を行うステップ;及び
前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内になく、かつ前記第一スライディングウィンドウ高さ計数値も前記スライディングウィンドウ高さ範囲内にない場合、前記第一特徴マップ幅計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップを含み、
前記の、前記第一特徴マップ幅計数値に対して桁上げ操作を行うことは、
前記第一特徴マップ幅計数値と前記特徴マップ幅ストライドとの和を求め、第二特徴マップ幅計数値を得るステップを含む、アドレス生成方法。
【請求項6】
請求項1に記載のアドレス生成方法であって、
前記実行パラメータはさらに、特徴マップ高さストライドを決定するために用いられ、
前記アドレス生成方法は、さらに、
前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にない場合、前記第一特徴マップ幅計数値に対して桁上げ操作を行い、かつ前記第一特徴マップ幅計数値に対してリセット処理を行うステップ;
前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にない場合、前記第一特徴マップ高さ計数値に対して桁上げ操作を行い、かつ前記第一特徴マップ高さ計数値に対してリセット処理を行うステップ;及び
前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にない場合、スライス計数値に対して桁上げ操作を行い、かつ前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値
、第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップを含み、
前記の、前記第一特徴マップ高さ計数値に対して桁上げ操作を行うことは、
前記第一特徴マップ高さ計数値と前記特徴マップ高さストライドとの和を求め、第二特徴マップ高さ計数値を得ることを含む、アドレス生成方法。
【請求項7】
請求項1に記載のアドレス生成方法であって、さらに、
スライス計数値が最大スライス数値範囲を超えた場合、バッチ計数値に対して桁上げ操作を行い、かつ前記スライス計数値、前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、
前記第一特徴マップ幅計数値、
前記第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップであって、前記最大スライス数値範囲は前記第一目標データに対応するテンソル深さ及びベクトル並列度に基づいて決定されるものである、ステップ;及び
前記バッチ計数値が最大バッチ値以上である場合、前記バッチ計数値、前記スライス計数値、前記第一スライディングウィンドウ幅計数値、前記第一スライディングウィンドウ高さ計数値、
前記第一特徴マップ幅計数値、
前記第一特徴マップ高さ計数値及び前記深さ計数値に対してリセット処理を行うステップであって、前記最大バッチ値は前記超長命令語の解析に基づいて取得される設定パラメータである、ステップを含む、アドレス生成方法。
【請求項8】
請求項1乃至7のうちの何れか1項に記載のアドレス生成方法であって、
前記の、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップの後に、前記アドレス生成方法は、さらに、
前記第一目標アドレスに基づいて、第一データチャンネルにより前記第一目標データを読み取るステップ;及び
第二データチャンネルにより算術論理ユニットに前記第一目標データを送信するステップを含み、
前記アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たときに、前記第二目標アドレスに基づいて、第三データチャンネルにより前記第二目標データを読み取るステップであって、前記第二目標アドレスは前記第一目標アドレスに隣接する次の1つの物理アドレスである、ステップ;及び
第四データチャンネルにより前記算術論理ユニットに前記第二目標データを送信するステップを含むステップを含む、アドレス生成方法。
【請求項9】
請求項1乃至7のうちの何れか1項に記載の方法であって、
前記の、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るステップの後に、前記方法は、さらに、
前記第一目標アドレスに基づいて、第一データチャンネルにより前記第一目標データを読み取るステップ;及び
第二データチャンネルにより算術論理ユニットに前記第一目標データを送信するステップを含み、
前記アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たときに、前記第二目標アドレスに基づいて、前記第一データチャンネルにより前記第二目標データを読み取るステップであって、前記第二目標アドレスは前記第一目標アドレスに隣接する次の1つの物理アドレスである、ステップ;及び
第三データチャンネルにより前記算術論理ユニットに前記第二目標データを送信するステップを含む、アドレス生成方法。
【請求項10】
請求項
7に記載のアドレス生成方法であって、
前記ベクトル並列度はベクトル層に対応し、前記スライディングウィンドウ幅範囲はスライディングウィンドウ幅層に対応し、前記スライディングウィンドウ高さ範囲はスライディングウィンドウ高さ層に対応し、前記特徴マップ幅範囲は特徴マップ幅層に対応し、前記特徴マップ高さ範囲は特徴マップ高さ層に対応し、最大スライス数値範囲はスライス層に対応し、最大バッチ値はバッチ層に対応し、
前記ベクトル層に対応する開始計数値と終了計数値が等しい場合、前記ベクトル層に対応するループ機能の使用を禁止し、
前記スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、前記スライディングウィンドウ幅層に対応するループ機能の使用を禁止し、
前記スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、前記スライディングウィンドウ高さ層に対応するループ機能の使用を禁止し、
前記特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、前記特徴マップ幅層に対応するループ機能の使用を禁止し、
前記特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、前記特徴マップ高さ層に対応するループ機能の使用を禁止し、
前記スライス層に対応する開始計数値と終了計数値が等しい場合、前記スライス層に対応するループ機能の使用を禁止し、
前記バッチ層に対応する開始計数値と終了計数値が等しい場合、前記バッチ層に対応するループ機能の使用を禁止する、アドレス生成方法。
【請求項11】
請求項10に記載のアドレス生成方法であって、
前記ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し、
前記スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し、
前記スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し、
前記特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し、
前記特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し、
前記スライス層は第六ループ開始情報及び第六ループ終了情報に対応し、
前記バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する、アドレス生成方法。
【請求項12】
アドレス生成ユニットであって、
解析モジュール、取得モジュール、
決定モジュール及び計算モジュールを含み、
前記解析モジュールは、超長命令語の解析に基づいて実行パラメータを取得するために用いられ、前記実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ、
前記取得モジュールは、第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、
前記第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を得るために用いられ、
前記決定モジュールは、前記第一スライディングウィンドウ幅計数値が前記スライディングウィンドウ幅範囲内にあり、かつ前記第一スライディングウィンドウ高さ計数値が前記スライディングウィンドウ高さ範囲内にあり、かつ前記第一特徴マップ幅計数値が前記特徴マップ幅範囲内にあり、かつ前記第一特徴マップ高さ計数値が前記特徴マップ高さ範囲内にある場合、前記第一スライディングウィンドウ幅計数値、前記スライディングウィンドウ幅ストライド、前記第一スライディングウィンドウ高さ計数値、前記スライディングウィンドウ高さストライド、前記第一特徴マップ幅計数値及び前記第一特徴マップ高さ計数値に基づいて、前記第一目標データの偏移量を決定するために用いられ、
前記取得モジュールはさらに、前記第一目標データの開始アドレスを得るために用いられ、
前記計算モジュールは、前記開始アドレスと前記偏移量との和を求め、前記第一目標データの第一目標アドレスを得るために用いられる、アドレス生成ユニット。
【請求項13】
請求項1乃至11のうちの何れか1項に記載のアドレス生成方法を実行するように構成される、アドレス生成ユニット。
【請求項14】
深層学習処理器であって、
少なくとも2つの、請求項13に記載のアドレス生成ユニットを含み、
少なくとも2つの前記アドレス生成ユニットには、データを読み取るための少なくとも1つの前記アドレス生成ユニット、及び、データを書き込むためのア少なくとも1つのドレス生成ユニットが含まれる、深層学習処理器。
【請求項15】
請求項14に記載の深層学習処理器を含む、チップ。
【請求項16】
請求項15に記載のチップを含む、電子機器。
【請求項17】
コンピュータに、請求項1乃至11のうちの何れか1項に記載のアドレス生成方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年07月01日に中国専利局に出願した、出願番号が2020106239365、発明の名称が「アドレス生成方法、関連装置及び記憶媒体」である中国特許出願に基づく優先権を主張するものであり、その全内容を参照によりここに援用する。
【0002】
本出願は、チップ(chip)技術の分野に関し、特に、データアクセス技術に関する。
【背景技術】
【0003】
半導体技術の発達に伴って、ハードウェアの計算能力が急速に向上し、それに応じて様々なビッグデータの処理時間が短縮され得る。これに基づいて、人工ニューラルネットワーク技術も発展している。ニューラルネットワークは通常、非常に大規模であり、これは、これらのニューラルネットワークが大量のコンピューティングリソース及びストレージリソースを要することを意味する。アドレッシングがコンピューティングとストレージを接続するための鍵であり、データが迅速に到着し得るかがコンピューティング効率を決定する重要な要因である。よって、深層学習プロセッサ(処理器)の処理効率に対する要求も高くなる。
【0004】
ベクトルプロセッサの設計では、ストライドアクセス(stride access)モードを使用して規則的なデータに対してのアドレスアクセスを実現することができる。即ち、現在のデータのアクセスアドレスにストライドをプラスして、次の1つのデータのアクセスアドレスを計算することができる。stride accessモードを使用するときに、アドレス生成ユニット(Address Generation Unit、AGU)により連続したアクセスアドレスを生成し、複数回のアクセスパイプライン処理によりオーバーヘッドを削減するの目的を達成することができる。
【0005】
深層学習プロセッサでは大量のテンソル演算(operation)を実行する必要がある。しかし、stride accessモードはベクトル演算用に設計されており、テンソルトラバーサルプロセスにおける複数の種類のパラメータをサポートすることができないため、テンソルトラバーサルプロセスが制御情報により中断されることは多く、データアクセスの効率は低下する恐れがある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本出願の実施例は、データアクセスの効率を向上させることができるデータアクセス技術を提供することを課題とする。
【課題を解決するための手段】
【0007】
第一側面において、本出願はアドレス生成方法を提供し、それは、
超長命令語(Very Long Instruction Word)の解析に基づいて実行パラメータを取得し、そのうち、実行パラメータはスライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得し;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて第一目標データの偏移量(offset)を決定し;
第一目標データの開始アドレスを取得し;及び
開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得するステップを含む。
【0008】
第二側面において、本出願はアドレス生成ユニットを提供し、それは、解析モジュール、取得モジュール、決定モジュール及び計算モジュールを含み、
前記解析モジュールは、超長命令語の解析に基づいて実行パラメータを取得するために用いられ、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ、
前記取得モジュールは、第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得するために用いられ、
前記決定モジュールは、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて第一目標データの偏移量を決定するために用いられ、
前記取得モジュールはさらに、第一目標データの開始アドレスを取得するために用いられ、
前記計算モジュールは、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得するために用いられる。
【0009】
第三側面において、本出願は上述の第一側面における方法を実行するためのアドレス生成ユニットを提供する。
【0010】
第四側面において、本出願は深層学習処理器を提供し、該深層学習処理器は、
少なくとも2つの、上述のような第三側面に記載のアドレス生成ユニットを含み、
少なくとも2つの前記アドレス生成ユニットには、データを読み取るための少なくとも1つのアドレス生成ユニット、及びデータを書き込むための少なくとも1つのアドレス生成ユニットを含まれる。
【0011】
第五側面において、本出願は上述の第四側面に記載の深層学習処理器を含むチップを提供する。
【0012】
第六側面において、本出願は上述の第五側面に記載のチップを含む電子機器を提供する。
【0013】
他の側面において、本出願はコンピュータ可読記憶媒体を提供し、該コンピュータ可読記憶媒体には命令が記憶されており、該命令はコンピュータ上で実行されるときに、該コンピュータに、上述の各側面の方法を実行させる。
【0014】
他の側面において、本出願はコンピュータプログラムプロダクト又はコンピュータプログラムを提供する。
【発明の効果】
【0015】
本出願の実施例におけるアドレス生成方法では、テンソルの計算特徴に基づいて、テンソルについて深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上で対応する実行パラメータを設定し、実行パラメータと、深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上のデータの計数値とに基づいて、データに対応する目標アドレスを計算し、これにより、入力されるテンソル上でデータを順次読み取り、データアクセスの効率を向上させることができる。
【図面の簡単な説明】
【0016】
【
図1】本出願の実施例におけるテンソルの一例を示す図である。
【
図2】本出願の実施例におけるテンソル演算プロセスの一例を示す図である。
【
図3】本出願の実施例におけるアドレス生成ユニットのアーキテクチャを示す図である。
【
図4】本出願の実施例における計数器のカスケード接続に基づく多段反復(iteration)の一例を示す図である。
【
図5】本出願の実施例におけるアドレス生成方法の一例を示す図である。
【
図6】本出願の実施例におけるウィンドウに基づいて計数(counting)を行う一例を示す図である。
【
図7】本出願の実施例における行間隔係数の一例を示す図である。
【
図8】本出願の実施例におけるスライディングウィンドウに対して桁上げ操作(carrying operation)を行う一例を示す図である。
【
図9】本出願の実施例におけるデータが異なるアクセスアドレスを使用する一例を示す図である。
【
図10】本出願の実施例における目標データを読み取り及び送信する一例を示す図である。
【
図11】本出願の実施例におけるアドレス生成ユニットの一例を示す図である。
【
図12】本出願の実施例における電子機器の構成を示す図である。
【発明を実施するための形態】
【0017】
本出願の実施例ではアドレス生成方法、関連装置及び記憶媒体が提供され、テンソルの計算特徴に基づいて、テンソルについて深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上で対応する実行パラメータを設定し、実行パラメータと、データの、深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上の計数値とに基づいて、データに対応する目標アドレスを計算し、これにより、入力されるテンソル上でデータを順次読み取る目的を実現し、データアクセスの効率を向上させる。
【0018】
本出願はテンソルについてアドレスを生成し得る方法を提供し、それは具体的には深層学習処理器に応用される。なお、本出願をより良く理解するために、以下、本出願に係る一部の概念について紹介する。
【0019】
一、テンソル(tensor)について
1、バッチ(batch)
図1を参照する。
図1は本出願の実施例におけるtensorの一例を示す図である。
図1に示すように、
図1における(A)の図に示すのは1つのtensorの1つのbatchであり、該batchは深さがC0と表され、高さがH0と表され、幅がW0と表される。
【0020】
2、タイル(tile)
図1における(B)の図を参照する。そのうち、A1により指示されるのはbatchであり、1つのbatchに対して切割を行った後に、A2により指示されるtileを得ることができ、tileはその対応する深さがMと表される、高さがHと表され、幅がWと表される。なお、tileは、オンチップメモリがtensor全体をキャッシュすることができないためtensorに対して切割を行った後に取得されるものであり、オンチップメモリがtensor全体をキャッシュすることができる場合、tileの次元の切り分けを行う必要はなく、即ち、テンソル全体は1つのtileと見なすことができる。
【0021】
3、スライス(slice)
図1における(B)の図を参照する。そのうち、A3により指示されるのはsliceであり、1つのtileに対して切割を行った後に、A3により指示されるsliceを得ることができ、sliceは高さがHと表され、幅がWと表され、sliceの幅及び高さにおける座標が(x,y)であるときに、対応する長さがmであるベクトル(vector)を取得し得る。
【0022】
4、特徴マップ(feature map)
図1における(B)の図を参照する。そのうち、A4により指示されるのは、サイズがH*W*1のfeature mapであり、そのうち、“1”はfeature mapの深さを示し、1つのsliceに対して切割を行った後に、A4により指示されるfeature mapを得ることができ、sliceが128個のデータチャンネル(channel)に対応するとする場合、該sliceに対して分割を行うことで128個のfeature mapを取得することができる。
【0023】
5、カーネルウィンドウ(kernel_window)
“ウィンドウ(window)”と略称されても良い。本出願に係る“ウィンドウ”又は“スライディングウィンドウ”は“カーネルウィンドウ”と理解され得る。
図1における(C)の図を参照する。そのうち、A5により指示されるのはkernel_windowであり、kernel_windowはfeature map上でスライディングの方式で値をとることができる。
【0024】
1つのテンソルについて言えば、vector、kernel_window、feature map、slice、tile及びbatchなどの概念が含まれ得る。
【0025】
二、tensor演算(operation)について
tensor演算の定義は次のとおりである。1つの演算子(又は関数)について言えば、データアクセスのアドレスは往々にして規則化されており、かつ計算することができる。プーリング(pool)演算を例とし、プーリングはループ(loop)をコアとする演算であり、中央処理装置(central processing unit、CPU)又はグラフィックス処理器(graphics processing unit、GPU)によりコンパイルされた後に、実行される命令流から見ると、大量の重複命令セグメントが存在し、重複する命令数についてkernel_window、slice及びbatchを重複周期とし、命令実行順序を決定し、そして、データ配列フォーマット(例えば、NHWC(バッチ、高さ、幅、チャンネル数))を決定し、それから、データアクセスアドレスを決定し、即ち、優先的にkernel_window内のデータに順次アクセスし、その後、kernel_windowを固定したストライド(stride)移動し、次の1つのkernel_windowを取得するので、データアクセスのアドレスは規則化されており、かつ計算することができる。このような特徴により、tensor計算の特性に基づいて深層学習処理器におけるベクトル処理ユニットに対して最適化を行うことができる。毎回の操作が預知可能な決定性操作であるときに、アクセスインターフェイスの帯域幅を最大限に利用し、すべてのアクセス操作をパイプライン化することで、各クロック周期において計算用の1組のベクトルデータが演算ユニットに到達するようにさせ、アクセス損失を減らすことができる。よって、3次元のtensorを処理するときに、vector、kernel_window、feature map、slice、tile及びbatchなどの異なる次元の対応パラメータに基づいて、入力される1つ又は複数のbatchのtensor上でデータを順次読み取って、演算ユニット、例えば、算術論理ユニット(arithmetic logic unit、ALU)に送信し得る。これにより、深層学習処理器におけるチップのアドレス生成ユニット(address generation Unit、AGU)は、tensorのアクセス特性に基づいて設計が簡素化され、アクセスの効率を向上させることができる。
【0026】
理解を容易にするために、
図2を参照する。
図2は本出願の実施例におけるtensor演算プロセスの一例を示す図である。
図2に示すように、tensorにおける各sliceは複数のkernel_windowに対応し、kernel_windowには少なくとも1つのデータが含まれても良く、そのうち、B1及びB2はそれぞれ、異なるkernel_windowを指示し、B11乃至B12が指示するデータは何れもkernel_window
B1に属し、B21乃至B22が指示するデータはすべてkernel_window B2に属する。なお、本出願では
図2におけるB11とB12との間の数及びB21とB22との間の数について限定せず、kernel_windowに対して1つのstrideを単位として各深さのfeature
map上でスライディングを行い、1つの位置をスライディングする度に、kernel_window内の1つのデータがオンチップメモリ(onchip-memory)のうちから順次読み出され、複数のkernel_windowにより読み出されるデータは連続したデータ流を形成する。各クロック周期では、1つのkernel_windowの2次元座標に対応して、索引(index)により1つの1*1*VEPのベクトルデータを取得し、そして、ベクトルデータを複数のALUに入力して演算を行ってもらう。具体的には、異なるkernel_windowに対応するデータを区別するために、各kernel_windowにおける最初の1つのデータ及び最後の1つのデータに標識(ID(識別子))を追加することができる。例えば、1つのkernel_window B1における最初の1つのデータB11にウィンドウ開始標識を追加し、kernel_window B1における最後の1つのデータB12にウィンドウ終了標識を追加し、また、例えば、次の1つのkernel_window B2における最初の1つのデータB21にウィンドウ開始標識を追加し、kernel_window B2における最後の1つのデータB22にウィンドウ終了標識を追加することができる。kernel_window B1及びkernel_window B2におけるデータをALUに入力し、ALUはchannelによりウィンドウ標識(即ち、ウィンドウ開始標識又はウィンドウ終了標識)を受信することができ、kernel_windowのウィンドウ開始標識及びウィンドウ終了標識を操作のトリガー条件として設定するときに、ALUは、ウィンドウB1における最初の1つのデータB11においてキャリー(carry(運ばれる))されるウィンドウ開始標識を得た場合、現在計算するのがkernel_window B1内のデータであると決定することができ、ALUは、kernel_window B1における最後の1つのデータB12においてキャリーされるウィンドウ終了標識を得たときに、現在のkernel_window
B1内のデータの入力が完了したと決定することができ、その他は、これに基づいて類推することができる。
【0027】
三、深層学習処理器について
深層学習処理器では計算及びデータ提供を行うことができ、データ提供は計算時に計算待ちデータを計算ユニットに伝送することであり、記憶器が一般に多段アーキテクチャを採用するので、データ提供は通常、オフチップメモリ(offchip-memory)からオンチップメモリ(onchip-memory)へ、onchip-memoryからALU専用のバッファ(onchip-near-alu-buffer)へ若しくはonchip-memoryからALU専用のレジスタファイル(onchip-near-alu-register file)へ、及びonchip-near-alu-buffer若しくはonchip-near-alu-register
fileからALUへの3段伝送を含み、そのうち、offchip-memoryからonchip-memoryへ、及びonchip-memoryからonchip-near-alu-buffer若しくはonchip-near-alu-register fileへの伝送は主にデータ準備段階であり、onchip-near-alu-buffer若しくはonchip-near-alu-register
fileからALUへの伝送は計算中のデータ読み込み段階である。本出願により提供されるAGUは、onchip-near-alu-buffer又はonchip-near-alu-register fileからALUへのデータ読み込み段階の問題を解決するために用いられ、あるいは、onchip-memoryからALUへのデータ読み込み段階の問題を解決するために用いられ、提供されるアドレス生成方法は、AGUにおいてtensorアクセスに対してパラメータ化を行うことで、ワンセットのパラメータによる複数の種類のアクセスモードへのサポートを実現し、tensorアクセスの汎用性を向上させ、また、入力されるtensor上でデータを順次読み取り、データアクセスの効率を向上させることができる。
【0028】
具体的には、AGUのアドレスアクセスでは、アクセス対象のフォーマットが、
【0029】
【0030】
【0031】
【数3】
であるtensorの順次アクセスを実現し得る。そのうち、
【0032】
【数4】
は、1つのsliceの下で、入力tensorに対してC次元上でカットアウト(cut out)を行った後のサブtensorを表し、シングル命令マルチデータ(single instruction
multi data、SIMD)処理器におけるALUの次元における並列度と一致している。
【0033】
【0034】
【数6】
はそれぞれ入力tensorのH及びW以下であり、その値は計算ユニットが直接アクセスし得るメモリの容量に依存する。
【0035】
理解を容易にするために、
図3を参照する。
図3は本出願の実施例におけるAGUの1つのアーキテクチャを示す図である。
図3に示すように、AGUが実行する前に、命令デコーダー(Instruction Decoder)が受け取ったSIMDを解析し、各AGUアセンブリの実行パラメータを取得し、そして、対応するAGUに送信する。AGUは、データを読み取るためのAGU(即ち、AGU_R)とデータを書き込むためのAGU(即ち、AGU_W)に分けられ、
図3におけるAGU_R0乃至AGU_Rnはすべて読み取るためのAGUであり、データバッファ(data buffer)におけるデータを読み取ることができ、
図3におけるAGU_W0乃至AGU_Wnは何れも書き込むためのAGUであり、データをdata bufferに書き込むことができ、各AGUは各クロック周期(clock、clk)で1つのベクトルデータを出力し、複数のclkを経てデータ流を取得し得る。理解すべきは、実際の応用にあたって、AGU_R及びAGU_Wの数は設計に基づいて調整することができ、AGU_R及びAGU_Wの数は等しくても良く、等しくなくても良く、ここでは限定しないということである。
【0036】
データ演算を行う前に、先にAGU_R及びAGU_Wの実行パラメータに対して設定を行う必要があり、AGU_Rは多段ループのデータアクセス順序に従って、各clkで1つの読み取りアドレスを送信し、また、該clkの前に送信したk個のアドレスに対応する1組のデータを受信し、該1組のデータは、マスク(MASK)によりゲーティングされた後に、かつ深さの次元上のイネーブルメントされないチャンネルがマスクされた後にALUに到着する。ALUにより計算が行われ、そして、MASKによりゲーティングされた後に、結果はAGU_Wに送信され、AGU_Wをトリガーすることで該データの書き込みアドレスが取得され、マルチプレクサ(MUX)によりdata bufferに書き込まれる。ALUは、書き込もうとする複数の結果を生成したときに、AGU_Wモジュールが対応する書き込みアドレスを出力するようにトリガーすることができる。理解すべきは、data bufferは複数のリードポート(read port)及びライトポート(write port)を有する1つのバッファであっても良く、複数の、1リード1ライト(ポート)を有するバッファにより構成されても良いということであるが、ここでは限定しない。
【0037】
AGU_Rについて言えば、データ流が入力されるときに、各clkで1つのベクトルデータの読み取りアドレスを送信し、k個のclkの読み取り遅延後にデータは計算ユニットに到着し、各clkで1つの読み取りアドレスを送信することができるため、複数の読み取り操作はパイプライン化された並列方式で実行される。よって、各clkでは1つの読み取りベクトルデータが計算ユニットに到達し得る。各AGUは1つのデータ流に対応し、例えば、1つのAGUがtensor Aのデータ流に対応し、他のAGUがtensor Bのデータ流に対応する。データの読み書きでは、ウィンドウ内データに基づいて計数範囲内でストライドパラメータに従って順次アクセスを実現する読み取りモードをサポートし、ウィンドウ内データに基づく右から左へかつ下から上への読み取りモードをサポートするが、ここでは読み取り順序について限定しない。スライディングウィンドウに基づく操作(例えば、深層畳み込み(DepthwiseCov)、最大プーリング(MaxPool)、平均プーリング(AvgPool)、アップサンプリング(Upsampling)など)は連続データの重複読み取りをサポートし、深層畳み込みに基づく操作では重み(weight)データの順次重複読み取りがサポートされる。
【0038】
四、多段計数器(counter、CNT)について
AGUは多段CNTをカスケード接続することにより構成され、各段のCNTは同じセットの設計(パラメータ)を採用し、実際の応用では異なるパラメータを設定する。理解を容易にするために、
図4を参照する。
図4は本出願の実施例におけるCNTのカスケード接続に基づく多段反復の一例を示す図である。
図4に示すように、複数層(階層)のCNTの直列接続があり、即ち、L0_CNTからL6_CNTまでのカスケード接続があり、下の1つの層のCNTの計数が上限値に達したとき、1つ上の層のCNTに対して桁上げ操作を行う。同時に、現在の出力の計数値を更新する。具体的には、L0計数はベクトル内ループ(vector loop)の計数を示し、L1計数はスライディングウィンドウ幅ループ(window width loop)の計数を示し、L2計数はスライディングウィンドウ高さループ(window height loop)の計数を示し、L3計数は特徴マップ幅ループ(feature map width loop)の計数を示し、L4計数は特徴マップ高さループ(feature map height loop)の計数を示し、L5計数はスライスループ(slice loop)の計数を示し、L6計数はバッチループ(batch loop)の計数を示し、L5計数及びL6計数は制御部分であり、L0計数乃至L4計数は1回の呼び出しループであり、即ち、L0計数乃至L4計数が1回呼び出された後にL5計数に対して桁上げ操作を行うことができ、L0計数終了後にリードアドレスをdata bufferに1回送信することができ、L0計数における深さ計数値がディセーブルにされた場合、各AGUがdata bufferに1組のリードアドレスを送信することで、ALUは演算時に該リードアドレスのうちから対応するデータを得ることができる。
【0039】
なお、L0_CNT乃至L6_CNTはそれぞれ1つの層に対応し、後述の実施例では、層を“loop”と理解しても良く、即ち、1つの層が1つのloopに対応する。
【0040】
理解すべきは、深層学習処理器は人工知能(Artificial Intelligence、AI)の分野で広く使用されているということである。人工知能はデジタルコンピュータ又はデジタルコンピュータにより制御されるマシンを利用して、人の知能をシミュレーション、延伸及び拡張し、環境を感知して知識を取得し、そして、知識を使用して最適結果を取得する理論、方法、技術及び応用システムである。
【0041】
実際の応用では、サーバー側又は端末装置側でtensorに対して記憶及び処理を行うことができ、データ量が比較的大きいときに、さらにクラウドサーバー側でtensorに対しての処理及び記憶を実現することもできる。サーバーは独立した物理サーバーであっても良く、複数の物理サーバーからなるサーバー群又は分散システムであっても良く、あるいは、クラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウドストレージ、ネットワークサービス、クラウド通信、ミッドウェアサービス、ドメインネームサービス、セキュリティサービス、インスタントコンテンツ配信ネットワーク(Content Delivery Network、CDN)、ビッグデータ、人工知能プラットフォームなどの基盤クラウドコンピューティングサービスを提供するクラウドサーバーであっても良い。端末装置はスマートフォン、タブレットコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ、スマートスピーカー、スマートウォッチなどであり得るが、これらに限定されない。端末及びサーバーは有線又は無線通信の方式で直接又は間接的に接続され得るが、本出願ではこれについて限定しない。
【0042】
上述の紹介と併せて、以下、本出願におけるアドレス生成方法について紹介する。
図5を参照する。
図5は本出願の実施例におけるアドレス生成方法の一例を示す図である。
図5に示すように、本出願の実施例におけるアドレス生成方法の一例は以下のステップを含む。
【0043】
101:AGUが超長命令語の解析に基づいて実行パラメータを取得し、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられる。
【0044】
本実施例では、AGUは超長命令語(very long instruction word、VLIW)に対して解析を行った後に、実行パラメータを得ることができる。VLIWの構成が簡単であるため、VLIWに基づいて解析効率を向上させ、そして、実行パラメータの取得効率を向上させることができる。
【0045】
具体的には、実行パラメータは計数の開始値(counter start、cnt_start)、計数の終了値(counter end、cnt_end)、計数時自己インクリメントストライド(counter stride、cnt_stride)及び計数モード(counter mode、cnt_mode)を含む。そのうち、cnt_modeは計数値が計数の終了値に到達又は超過したときの動作(behavior)を設定しており、本出願では、cnt_modeはループ計数モード及び1回計数モードを含む。例えば、kernel windowについて言えば、実行されるcnt_modeはループ計数モードであり、即ち、kernel windowの内部の計数のために使用される。feature mapについて言えば、実行されるcnt_modeは1回計数モードであり、即ち、feature mapの計数終了後に次の1つのfeature mapの計数を行う。
【0046】
実行パラメータを得た後に、該実行パラメータに基づいてスライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定することがえきる。そのうち、スライディングウィンドウ幅範囲は、
【0047】
【数7】
と表すことができ、スライディングウィンドウ幅ストライドは、
【0048】
【数8】
と表すことができ、スライディングウィンドウ高さ範囲は、
【0049】
【数9】
と表すことができ、スライディングウィンドウ高さストライドは、
【0050】
【数10】
と表すことができ、特徴マップ幅範囲は、
【0051】
【数11】
と表すことができ、及び特徴マップ高さ範囲は、
【0052】
【0053】
102:第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、AGUは第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得する。
【0054】
本実施例では、AGUは第一目標データに対応する深さ計数値(vector_cnt)を取得し、ベクトル並列度(vector parallelism、VEP)を決定し、理解すべきは、VEPは8、16、32、64、128、256又は2のn乗であり得るということであり、そのうち、nは正の整数であり、本出願ではVEPが128であることを例にとって説明を行うが、本出願はこれに限定されない。本出願におけるvector_cntは何れも0から開始し、例えば、VEPが128である場合、vector_cntの数値範囲は0乃至127である。そのうち、深さ計数範囲は深さ計数の開始値及び深さ計数の終了値によって決定され、例えば、深さ計数の開始値が4であり、深さ計数の終了値が16である場合、vector_cntが16を超えたことは深さ計数範囲を超過したことを表す。
【0055】
第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値はそれぞれ、第一目標データに対応する各loopのCNTが出力する現在の計数値である。L0計数層では、第一目標データに対応するvector_cntがVEPよりも小さいときに、第一目標データに係るすべての計数が未完了であり、桁上げ操作を行う必要がないことを表し、この場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を継続して取得する。
【0056】
具体的には、以下のような公式で幅計数値及び高さ計数値を得ることができる。
【0057】
【数13】
そのうち、xはx番目のloopと表することができ、
【0058】
【数14】
はx番目のloopの高さ計数値と表することができ、
【0059】
【数15】
はx番目のloopの幅計数値と表すことができ、
【0060】
【数16】
は現在の計数のvector_cntと表すことができる。
【0061】
1つのkernel_windowについて言えば、第一スライディングウィンドウ幅計数値
【0062】
【0063】
【数18】
内にあり、第一スライディングウィンドウ高さ計数値
【0064】
【0065】
【数20】
内にある。1つのfeature mapについて言えば、第一特徴マップ幅計数値
【0066】
【0067】
【0068】
【0069】
【0070】
理解を容易にするために、
図6を参照する。
図6は本出願の実施例におけるウィンドウに基づいて計数を行う一例を示す図である。
図6に示すように、
図6における(A)の図に示されるのは1つのkernel_windowであり、1つのkernel_windowには複数の要素位置が含まれても良く、例えば、C1、C2、C3及びC4は異なる要素位置を指示するために用いられ、第一目標データがC1により指示される要素位置に記憶されることを例として説明を行い、そのうち、C11が指示するのは第一スライディングウィンドウ高さ計数値であり、C12が指示するのは第一スライディングウィンドウ幅計数値である。よって、C1により指示される要素位置について言えば、第一スライディングウィンドウ高さ計数値は0であり、第一スライディングウィンドウ幅計数値は0である。
図6における(B)の図に示されるのは1つのfeature mapであり、1つのfeature
mapには複数のkernel_windowが含まれても良く、C5が指示するのはfeature mapにおける1つのkernel_windowであり、第一目標データがC6により指示される要素位置に格納されることを例にして説明を行い、要素位置C6について言えば、feature mapでは、C61が指示するのは第一特徴マップ高さ計数値であり、C62が指示するのは第一特徴マップ幅計数値であり、feature mapについて言えば、第一特徴マップ高さ計数値C61は0であり、第一特徴マップ幅計数値C62は0である。
【0071】
103:第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、AGUは第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて第一目標データの偏移量を決定する。
【0072】
本実施例では、AGUは、取得された幅計数値が幅範囲内にあるか、及び、高さ計数値が高さ範囲内にあるかを判断することができ、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にあるときに、計数値に対して桁上げ操作を行う必要がないことを意味するので、以下のような公式を採用して第一目標データの偏移量を決定することができる。
【0073】
【0074】
【数26】
はスライディングウィンドウ幅計数値、例えば、第一スライディングウィンドウ幅計数値と表すことができ、
【0075】
【数27】
は特徴マップ幅計数値、例えば、第一特徴マップ幅計数値と表すことができ、
【0076】
【数28】
はスライディングウィンドウ高さ計数値、例えば、第一スライディングウィンドウ高さ計数値と表すことができ、
【0077】
【数29】
は特徴マップ高さ計数値、例えば、第一特徴マップ高さ計数値と表すことができ、
【0078】
【0079】
【数31】
は列間隔係数と表すことができ、列間隔係数は論理上、平行であり、かつ隣接する列の2つのデータ物理アドレス上の間隔であり、
【0080】
【数32】
は偏移量、例えば、第一目標データの偏移量と表すことができる。
【0081】
具体的には、行間隔係数は横向き索引のうち、隣接する2行の行頭データのメモリにおける物理アドレス間隔であり、列間隔係数は縦向き索引のうち、隣接する2つのデータのメモリにおける物理アドレス間隔である。
【0082】
104:AGUは第一目標データの開始アドレスを取得する。
【0083】
本実施例では、先に第一目標データに対応する基本アドレス、スライス計数値及びバッチ計数値を得ることができ、基本アドレス、スライス計数値及びバッチ計数値は何れも前記超長命令語の解析に基づいて取得される設定パラメータである。
【0084】
具体的には次のような公式で第一目標データの開始アドレスを得ることができる。
【0085】
【0086】
【数34】
は第一目標データの開始アドレスと表すことができ、
【0087】
【数35】
は第一目標データに対応する基本アドレスと表すことができ、
【0088】
【数36】
は第一目標データに対応するスライス計数値と表すことができ、
【0089】
【数37】
は第一目標データに対応するスライスアドレスインクリメントと表すことができ
【0090】
【数38】
は第一目標データに対応するバッチ計数値と表すことができ、
【0091】
【数39】
は第一目標データに対応するバッチアドレスインクリメントと表すことができる。
【0092】
105:AGUは開始アドレスと偏移量の加算を行い、第一目標データの第一目標アドレスを取得する。
【0093】
本実施例では、AGUは偏移量及び開始アドレスに基づいて、開始アドレスと偏移量の和を求めることで、第一目標データの第一目標アドレスを得ることができる。
【0094】
具体的には次のような公式を用いて第一目標データの第一目標アドレスを取得し得る。
【0095】
【0096】
【数41】
は第一目標データの第一目標アドレスと表すことができ、即ち、メモリに出力するアドレスを表し、
【0097】
【数42】
は第一目標データの開始アドレスと表すことができ、
【0098】
【数43】
は第一目標データの偏移量と表すことができる。
【0099】
具体的には、計算ユニットのコアな演算がALUのマルチbatchに対してのテンソル演算であり、一般的には6層のループが存在し、計算ユニットにおいて実行される深層畳み込み(depthwise
convolution)を例として説明を行い、実行コードは以下のとおりである。
【0100】
//操作数Aが3次元テンソルであり、size(A)=[NTI,HTI,WTI,CI]である
//操作数Kが3次元テンソルであり、size(K)=[1,HK,WK,CI]である
//出力結果Bが3次元テンソルであり、size(B)=[NTI,HTO,WKO,CI]である
for(i_NTI=0;i_NTI<NTI;i_NTI++) //batch loop
for(i_CI=0;i_CI<CI;i_CI++) //channel loop
for(i_HTI=0;i_HTI<HTI;i_HTI++) //input height loop
for(i_WTI=0;i_WTI<WTI;i_WTI++) //input width loop
for(i_HK=0;i_HK<HK;i_HK++) // kernel loop on x
for(i_WK=0;i_WK<WK;i_WK++) //kernel loop on y
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI]+=
K[i_HK][i_WK][i_CI]*A[i_NTI][i_HTI+i_HK][i_WTI+I_WK][i_CI]; //add bias
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI]+=bias[i_CI];
そのうち、Nはbatchを表し、Tはテンソルを表し、Iは入力(input)を表し、Oは出力(output)を表し、Wは幅(width)を表し、Hは高さ(height)を表し、Kは畳み込みカーネル(kernel_window)を表す。
【0101】
計算ユニットでは、VEPが128である場合、128を単位として更なる切り分けを行うことを表し、実行コードは以下のとおりであり、そのうち、L0 loopは1つの128要素のベクトル演算を実行し、また、並列実行することができ、これにより、計算ユニットの実行のために6層のループのパラメータが設定され、即ち、1つの命令で実行することができる。
【0102】
//操作数Aが3次元テンソルであり、size(A)=[NTI,HTI,WTI,CI]である
//操作数Kが3次元テンソルであり、size(K)=[1,HK,WK,CI]である
//出力結果Bが3次元テンソルであり、size(B)=B[NTI,HTO,WKO,CI]である
//Vector
Engineの並列度Vep=128である
for(i_NTI=0;i_NTI<NTI;i_NTI++) // L6
for(i_CI=0;i_CI<ceil(CI/VEP);i_CI++) // L5
for(i_HTI=0;i_HTI<HTI;i_HTI++) // L4
for(i_WTI=0;i_WTI<WTI;i_WTI++) // L3
for(i_HK=0;i_HK<HK;i_HK++) // L2
for(i_WK=0;i_WK<WK;i_WK++) // L1
for(i_VEP=0;i_VEP<VEP;i_VEP++) // L0
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI*VEP+i_VEP]+=
K[i_HK][i_WK][i_CI]*A[i_NTI][i_HTI+i_HK][i_WTI+I_WK][i_CI*VEP+i_VEP]; //add bias
B[i_NTI][i_HTI/HStride][i_WTI/WStride][i_CI*VEP+i_VEP]+=
bias[i_CI*VEP+i_VEP];
そのうち、Nはbatchを表し、Tはテンソルを表し、Iは入力を表し、Oは出力を表し、Wは幅を表し、Hは高さを表し、Kは畳み込みカーネルを表し、L6はbatch loopを表し、L5はchannel loopを表し、L4はinput
height loopを表し、L3はinput width
loopを表し、L2はx方向上のkernel loopを表し、L1はy方向上のkernel loopを表し、L0はvector
loopを表す。なお、並列度がVEPであるSIMD演算ユニットでは、L0に対応するforループはALUにおいて並列処理される。
【0103】
上述のコードから分かるように、計算ユニットではALUの演算について2つの部分、即ち、ループ部分及び演算部分を設定する必要がある。そのうち、ループ部分は複数の“forループ”内のデータの順次読み取り、及び結果の順次書き込みを実行する必要がある。そのため、前述の例における6層のループをサポートする以外に、vectorの内部の索引をサポートすることもできる。よって、計算ユニットは7層の“forループ”をサポートし、それぞれはvector内の索引、kernel_windowの幅、kernel_windowの高さ、feature mapの幅、feature mapの高さ、channelの次元及びbatchの次元のループに対応し、これらのパラメータはAGUのパラメータ設定に対応する。また、演算部分ではテンソルの数値演算の実行順序及び演算方式を設定する必要がある、依然としてdepthwise convolutionを例として説明を行い、各ウィンドウのデータについて、先に2操作数の対応ベクトルの乗算を行い、そして、結果ベクトルの累加を行うため、2つのデータソースに対応するAGU_Rを設定してから、2つのテンソルを計算ユニット、例えば、ALUに順次読み込む必要がある。ウィンドウ内のすべての乗算及び加算の演算を実行した後に、取得した演算結果をデータ書き込み用AGU_Wにより書き込む。
【0104】
本出願の実施例ではアドレス生成方法が提供されており、上述の方式により、テンソルの計算特徴に基づいて、テンソルについて深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上で対応する実行パラメータを設定し、実行パラメータと、データの、深さ、スライディングウィンドウ及び特徴マップなどの異なる次元上の計数値とに基づいて、データに対応する目標アドレスを計算し、これにより、入力されるテンソル上でデータを順次読み取る目的を実現し、データアクセスの効率を向上させることができる。
【0105】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の1つの選択可能な実施例において、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて、第一目標データの偏移量を決定することは、
第一スライディングウィンドウ幅計数値とスライディングウィンドウ幅ストライドの和を求め、第二スライディングウィンドウ幅計数値を取得し;
第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、第二スライディングウィンドウ高さ計数値を取得し;
第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、幅計数値を取得し;
第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の和を求め、高さ計数値を取得し;及び
高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との和を求め、第一目標データの偏移量を取得することを含む。
【0106】
本実施例では、第一目標データの偏移量を決定する方法が紹介され、前述の実施例における公式(4)乃至公式(6)により第一目標データの偏移量を決定することができ、即ち、公式(4)に基づいて幅計数値を算出し、公式(5)に基づいて高さ計数値を計算し、そして、公式(6)に基づいて第一目標データの偏移量を算出することができる。
【0107】
具体的には、行間隔係数は横向き索引のうち、隣接する2行の行頭データのメモリにおける物理アドレス間隔であり、列間隔係数は縦向き索引のうち、隣接する2つのデータのメモリにおける物理アドレス間隔である。理解を容易にするために、
図7を参照する。
図7は本出願の実施例における行間隔係数の一例を示す図である。
図7に示すように、D1はウィンドウ内の1つの要素位置を示し、D2はD1に隣接する1つの要素位置を示す。よって、列間隔係数が1の場合、要素位置D1と要素位置D2との間の行間隔係数は10である。1つのsliceのサイズが32*32*1024であり、channel数が128であり、データを連続して格納する方式を採用する場合、列間隔係数は1である。
【0108】
第一スライディングウィンドウ幅計数値
【0109】
【数44】
が0(かつ0∈(0,2))であり、第一スライディングウィンドウ高さ計数値
【0110】
【数45】
が0(かつ0∈(0,2))であり、第一特徴マップ幅計数値
【0111】
【数46】
が5(かつ5∈(0,9))であり、第一特徴マップ高さ計数値
【0112】
【数47】
が5(かつ5∈(0,9))であり、スライディングウィンドウ幅ストライド
【0113】
【数48】
が1であり、スライディングウィンドウ高さストライド
【0114】
【0115】
【0116】
【数51】
が1であることを1つ例として説明を行う。
【0117】
公式(2)を採用して第一スライディングウィンドウ幅計数値とスライディングウィンドウ幅ストライドの加算を行い、即ち、第二スライディングウィンドウ幅計数値
【0118】
【数52】
=0+1=1
であり、公式(1)を採用して第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、即ち、第二スライディングウィンドウ高さ計数値
【0119】
【数53】
=0+1=1
であり、公式(4)を用いて第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、即ち、
幅計数値
【0120】
【数54】
=1+5=6
であり、公式(3)を使用して第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の加算を行、即ち、
高さ計数値
【0121】
【数55】
=1+5=6
であり、公式(6)を採用して、高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との和を求め、即ち、
第一目標データの偏移量
【0122】
【0123】
なお、上述の例は例示に過ぎず、実際に計算するときに、具体的な数値に基づいて処理を行うことができる。
【0124】
本出願の実施例では第一目標データの偏移量を決定する方法が提供され、上述の方式により、技術案の実現のために実現可能な方法を提供することで、技術案の実行可能性及び操作可能性性を向上させることができる。
【0125】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、第一目標データの開始アドレスを得ることは、
第一目標データに対応する基本アドレスを取得し、そのうち、基本アドレスは超長命令語の解析に基づいて取得される設定パラメータであり;
第一目標データに対応するスライス計数値及びバッチ計数値を取得し;
スライス計数値とスライスアドレスインクリメントとの乗算結果と、バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを取得し、そのうち、スライスアドレスインクリメント及びバッチアドレスインクリメントはすべて超長命令語の解析に基づいて取得される設定パラメータであり;及び
アドレス総インクリメントと基本アドレスの加算を行い、第一目標データの開始アドレスを得ることを含んでも良い。
【0126】
本実施例では第一目標データの開始アドレスを得る方法が紹介され、まず、超長命令語の解析に基づいて設定パラメータを取得し、該設定パラメータには基本アドレス
【0127】
【0128】
【0129】
【数59】
が含まれ、基本アドレスは第一目標データの属するテンソルにおける最初のデータに対応するアドレスであり、sliceアドレスインクリメントはsliceの逓増後のアドレスインクリメント(増加した物理アドレス)であり、batchアドレスインクリメントはbatchの逓増後のアドレスインクリメント(増加したアドレス空間)である。これにより、前述の実施例における公式(7)を用いてスライス計数値とスライスアドレスインクリメントの乗算を行って対応する乗算結果
【0130】
【数60】
を取得し、かつバッチ計数値とバッチアドレスインクリメントの乗算を行って対応する乗算結果
【0131】
【数61】
を取得し、そして、2つの乗算結果の和を求め、アドレス総インクリメント
【0132】
【数62】
を取得し、最後に、アドレス総インクリメントと基本アドレスの加算を行い、第一目標データの開始アドレス
【0133】
【0134】
理解を容易にするために、第一目標データに対応する
【0135】
【0136】
【0137】
【0138】
【数67】
が1024であり、かつ第一目標データに対応する
【0139】
【数68】
が8192であることを1つの例にして紹介を行い、これにより、
【0140】
【0141】
【数70】
=8192を取得することができ、そして、この2つの乗算結果の和を求めて12288を得ることができ、その後、目標データの
【0142】
【数71】
=A+12288を取得することができる。
【0143】
本出願の実施例では第一目標データの開始アドレスを得る方法が提供され、上述の方式により、計算することでデータに対応する開始アドレスを取得することができるため、本技術案の実現可能性を向上させることができる。
【0144】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、アドレス生成方法は、さらに、
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、深さ計数値に対してリセット処理を行うことを含んでも良い。
【0145】
本実施例ではvector_cntに基づいて桁上げ操作を行う方法が紹介され、第一目標データに対応するvector_cntが深さ計数終了値以上のときに、1つのvectorについて言えば計数が既に完了していることを意味するので、次の1つのvectorに対して桁上げ操作を行うことができる。
【0146】
理解を容易にするために、深さ計数終了値が128であることを1つの例として紹介し、vector_cntが0である場合、第一目標データが最初位置に所在することを表し、vector_cntが127である場合、第一目標データが終了位置に所在することを表す。vector_cntが128である場合、第一目標データがもう該スライディングウィンドウ内にないことを表すので、第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、かつvector_cntに対してリセット処理を行う必要があり、即ち、第一スライディングウィンドウ幅計数値をcnt_startとリセットする必要がある。第一スライディングウィンドウ幅計数値に関する桁上げ操作が完了しているので、vector_cntもcnt_startとリセットされる必要がある。同様に、vector_cntが境界値を超えたときに、第一スライディングウィンドウ幅計数値は1累加し、即ち、2になり、vector_cntはリセット処理された後に0になる。そのうち、境界値は計数の終了値(cnt_end)と表される。計数の開始値(cnt_start)が計数の終了値(cnt_end)よりも大きい場合、境界値は計数の終了値(cnt_end)の下限であり、即ち、計数の終了値(cnt_end)以下のときに、境界条件を超えたことを表す。計数の開始値(cnt_start)が計数の終了値(cnt_end)よりも小さい場合、境界値は計数の終了値(cnt_end)の上限であり、即ち、計数の終了値(cnt_end)以上のときに、境界条件を超過したことを表す。
【0147】
理解すべきは、深さ計数終了値はさらに他の値であっても良いということであり、また、前述の例は本技術案への理解用のみであり、実際に応用するときに、具体的にどのように第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、vector_cntに対してリセット処理を行うかは、深さ計数終了値の実際の値に基づいて柔軟に決定すべきである。
【0148】
本出願の実施例では、vector_cntに基づいて桁上げ操作を行う方法が提供され、上述の方式により、vector_cntが深さ計数終了値以上であるかを判断することで、桁上げ操作を行う必要があるかを決定し、また、桁上げ操作条件が満足されるときに第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、かつvector_cntをゼロにリセットすることで、後続の操作がスムーズに行われ、本技術案の実施可能性を向上させることができる。
【0149】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、実行パラメータはさらに特徴マップ幅ストライドを決定するために用いられる。
【0150】
アドレス生成方法は、さらに、
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にある場合、第一スライディングウィンドウ高さ計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値に対してリセット処理を行い;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値及び深さ計数値に対してリセット処理を行うことを含んでも良い。
【0151】
そのうち、第一特徴マップ幅計数値に対して桁上げ操作を行うことは、第一特徴マップ幅計数値と特徴マップ幅ストライドの和を求め、第二特徴マップ幅計数値を得ることを含んでも良い。
【0152】
本実施例ではスライディングウィンドウに対して桁上げ操作を行う方法が紹介され、スライディングウィンドウについて言えば、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあるか、及び第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあるかを判断することは具体的には次の3つの場合を含んでも良い。
【0153】
第一の場合は、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値もスライディングウィンドウ高さ範囲内にあることであり、このときには桁上げ操作を行う必要がなく、前述の実施例で紹介された方式により第一目標アドレスを得ることができ、ここではその詳しい説明を省略する。
【0154】
第二の場合は、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にないが、第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあることである。第三の場合は、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値もスライディングウィンドウ高さ範囲内にないことである。第二の場合及び第三の場合は何れも桁上げ操作を行う必要がある。よって、以下、この2つの場合についてそれぞれ説明する。
【0155】
第二の場合、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にないが、第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあるので、第一目標データのスライディングウィンドウ内の横向きにおける計数が既に完了しているが、スライディングウィンドウ内の縦向きにおける計数が完了しないため、縦向きにおける桁上げ操作を行う必要があり、即ち、第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、第二スライディングウィンドウ高さ計数値を取得し、スライディングウィンドウ高さストライドが1である場合、第一スライディングウィンドウ高さ計数値に対して1桁の桁上げ操作を行い、かつ第一スライディングウィンドウ幅計数値に対してリセット処理を行い、即ち、cnt_startとリセットする。スライディングウィンドウ幅範囲が[0,2]であり、スライディングウィンドウ高さ範囲が[0,2]であることを例として紹介を行い、
図8を参照する。
図8は本出願の実施例におけるスライディングウィンドウに対して桁上げ操作を行う一例を示す図である。
図8に示すように、D1及びD2は何れも要素位置を示し、要素位置D1について言えば、D11は第一スライディングウィンドウ高さ計数値を表し、D12は第一スライディングウィンドウ幅計数値を表し、第一スライディングウィンドウ幅計数値の桁上げ操作が行われたときに、スライディングウィンドウ幅範囲[0,2]よりも大きいことを意味するので、第一スライディングウィンドウ高さ計数値は1桁の桁上げ操作が行われる必要があり、第一スライディングウィンドウ幅計数値はcnt_startとリセットされる必要があり、そのうち、D21は桁上げ操作後の第二スライディングウィンドウ高さ計数値(即ち、1)を表し、D22はリセット後の第一スライディングウィンドウ幅計数値(即ち、0)を表す。
【0156】
第三の場合、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にないので、第一目標データのスライディングウィンドウ内の横向き及び縦向きにおける計数がすべて完了しているため、kernel_window層に対して桁上げ操作を行うことができ、即ち、第一特徴マップ幅計数値と特徴マップ幅ストライドの和を求めることで、第二特徴マップ幅計数値を取得し、また、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値及び深さ計数値に対してリセット処理を行い、即ち、すべてをcnt_startとリセットする必要があり、その後、kernel_windowで前述の実施例の操作を繰り返す。
【0157】
本出願の実施例ではスライディングウィンドウに対して桁上げ操作を行う方法が提供され、上述の方式により、スライディングウィンドウ層について言えば、異なる場合に異なる桁上げ操作方式を採用することで、本技術案の選択性及び多様性を向上させることができる。
【0158】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、実行パラメータはさらに、特徴マップ高さストライドを決定するために用いられる。
【0159】
アドレス生成方法は、さらに、
第一特徴マップ幅計数値が特徴マップ幅範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一特徴マップ幅計数値に対してリセット処理を行い;
第一特徴マップ高さ計数値が特徴マップ高さ範囲内にない場合、第一特徴マップ高さ計数値に対して桁上げ操作を行い、第一特徴マップ高さ計数値に対してリセット処理を行い;及び
第一特徴マップ高さ計数値が特徴マップ高さ範囲内にない場合、スライス計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うことを含んでも良い。
【0160】
そのうち、第一特徴マップ高さ計数値に対して桁上げ操作を行うことは、さらに、第一特徴マップ高さ計数値と特徴マップ高さストライドとの和を求め、第二特徴マップ高さ計数値を得ることを含んでも良い。
【0161】
本実施例では特徴マップに対して桁上げ操作を行う方法が紹介され、特徴マップ層について言えば、第一特徴マップ幅計数値が特徴マップ幅範囲内にあるか、及び第一特徴マップ高さ計数値が特徴マップ高さ範囲内にあるかを判断し、また、次のような3つの場合を得ることができる。
【0162】
第一の場合は、第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値も特徴マップ高さ範囲内にあることである。第一の場合は桁上げ操作を行う必要がなく、前述の実施例で紹介された方式により第一目標アドレスを得ることができるため、ここではその詳しい説明を省略する。
【0163】
第二の場合は、第一特徴マップ幅計数値が特徴マップ幅範囲内にないが、第一特徴マップ高さ計数値が特徴マップ高さ範囲内にあることである。第三の場合は、第一特徴マップ幅計数値が特徴マップ幅範囲内になく、かつ第一特徴マップ高さ計数値も特徴マップ高さ範囲内にないことである。第二の場合及び第三の場合はすべて桁上げ操作を行う必要がある。よって、以下、個の2つの場合についてそれぞれ紹介する。
【0164】
第二の場合、第一特徴マップ幅計数値が特徴マップ幅範囲内にないが、第一特徴マップ高さ計数値が特徴マップ高さ範囲内にあるので、第一目標データの特徴マップ内の横向きにおける計数が完了しているが、特徴マップ内の縦向きにおける計数が完了しないことが分かるため、縦向きにおける桁上げを行う必要があり、即ち、第一特徴マップ高さ計数値と特徴マップ高さストライドの和を求めることで、第二特徴マップ高さ計数値を取得することができ、第一特徴マップ高さ計数値に対して桁上げ操作を行った場合、第一特徴マップ幅計数値に対してリセット処理を行い、即ち、cnt_startとリセットする。
【0165】
第三の場合、第一特徴マップ幅計数値が特徴マップ幅範囲内になく、かつ第一特徴マップ高さ計数値も特徴マップ高さ範囲内にないので、第一目標データの特徴マップ内の横向き及び縦向きにおける計数がすべて完了しており、即ち、該特徴マップ層で計数が完了していることが分かるため、slice層に対して桁上げ操作を行うことができる。本出願ではslice層に対して1桁の桁上げ操作を行うことを例にして説明を行い、その後、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行い、即ち、すべてをcnt_startとリセットする。特徴マップ高さ範囲が[0,8]であることを例にして紹介を行い、第一特徴マップ幅計数値の桁上げ操作が行われた後に、第一特徴マップ高さ計数値が増加し、特徴マップ高さストライドがプラスされることで9が取得され、そうすると、桁上げ操作条件が満足されため、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値をすべてcnt_startとリセットし、スライス計数値に対して桁上げ操作を行う必要がある。
【0166】
本出願の実施例では特徴マップに対して桁上げ操作を行う方法が提供され、上述の方式により、特徴マップ層について言えば、異なる場合に異なる桁上げ操作方式を採用することで、本技術案の選択性及び多様性を向上させることができる。
【0167】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、アドレス生成方法は、さらに、
スライス計数値が最大スライス数値範囲を超過した場合、バッチ計数値に対して桁上げ操作を行い、また、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行い、そのうち、最大スライス数値範囲は第一目標データに対応するテンソル深さ及びベクトル並列度によって決定され;及び
バッチ計数値が最大バッチ値以上である場合、バッチ計数値、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行い、そのうち、最大バッチ値は超長命令語の解析に基づいて取得される設定パラメータであることを含んでも良い。
【0168】
本実施例ではslice及びバッチに対して桁上げ操作を行う方法が提供され、第一目標データに対応するテンソル深さ及びVEPに基づいて最大slice値を決定する必要があり、具体的には、最大slice値は整数である。よって、テンソル深さとVEPの除算を行ってroundupを行うことで最大slice値を取得する。例えば、テンソル深さが256であり、VEPが128である場合、最大slice値が2(即ち、256/128)であると決定することができ、テンソル深さが300であり、VEPが128である場合、最大slice値が3(即ち、300/128の後にroundupを行う)であると決定することができる。よって、最大slice値は、テンソル深さ及びVEPの実際の状況に応じて柔軟に決定する必要がある。
【0169】
slice_cntが最大slice以上のときに、すべてのsliceの計数が完了していることを表し、該batch層に対して桁上げ操作を行い、また、vector_cnt、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及びslice計数値に対してリセット処理を行い、即ち、すべてをcnt_startとリセットすることができ、その後、次の1つのtileについての計数を開始し、具体的な計数方式は前述の実施例と類似しているため、ここではその詳しい説明を省略する。
【0170】
最大バッチ値が4であるとし、バッチ計数値が最大バッチ値以上のときに、vector_cnt、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値、slice計数値及びbatch_cntに対してリセット処理を行い、即ち、すべてをcnt_startとリセットすることができ、次の1つのbatchがある場合、前述の実施例で説明された方式によりそれに対して計数を行うことができ、ここではその詳しい説明を省略する。
【0171】
本出願の実施例ではslice及びバッチに対して桁上げ操作を行う方法が提供され、上述の方式により、slice層及びbatch層に対しての桁上げ操作を実現することができるため、本技術案の実現可能性を向上させることができる。
【0172】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを得た後に、アドレス生成方法は、さらに、
第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取り;及び
第二データチャンネルにより算術論理ユニットに第一目標データを送信することを含んでも良い。
【0173】
アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たとき、第二目標アドレスに基づいて、第三データチャンネルにより第二目標データを読み取り、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;及び
第四データチャンネルにより算術論理ユニットに第二目標データを送信することを含んでも良い。
【0174】
本実施例では、各データが異なるアクセスアドレスを使用する読み書き方式が紹介される。ベクトルの読み取りでは、各データは1つのchannelに対応し、また、1つのAGUを採用する。VEPが128であることを例として説明を行う場合、128個のAGUを使用する必要があり、各AGUは単独のワンセットの設定パラメータを使用する。要約すれば、異なるchannelに位置するAGUは異なるアドレスを出力し、対応するデータを読み取り又は書き込みすることができる。
【0175】
理解を容易にするために、VEPが128であることを例にとって説明を行う。
図9を参照する。
図9は本出願の実施例におけるデータが異なるアクセスアドレスを使用する一例を示す図である。
図9に示すように、E1乃至E8は何れもchannelを表し、AGU_R0では第一目標データの第一目標アドレスを得た後に、channel E1によりdata bufferに該第一目標アドレスを送信し、また、該第一目標アドレスに基づいて、channel E1によりdata bufferのうちから第一目標アドレスに対応する第一目標データを読み取り、そして、channel E2によりALUに第一目標データを送信することができる。同様に、AGU_R0では第二目標データの第二目標アドレスを得た後に、channelE3によりdata bufferに該第二目標アドレスを送信し、また、該第二目標アドレスに基づいて、channel
E3によりdata bufferのうちから第二目標アドレスに対応する第二目標データを読み取り、そして、channel E4によりALUに第二目標データを送信することができる。AGU_R0では第三目標データの第三目標アドレスを得た後に、channel E5によりdata bufferに該第三目標アドレスを送信し、また、該第三目標アドレスに基づいて、channel
E5によりdata bufferのうちから第三目標アドレスに対応する第三目標データを読み取り、そして、channel E6によりALUに第三目標データを送信することができる。これに基づいて類推して、同時に128個のデータに対して読み取りを行うことができ、各データは何れも異なるchannelにより読み取り及び書き込みが行われる。理解すべきは、
図9の例は本技術案への理解用のみであり、実際の応用では、具体的なデータの読み取り及び書き込み方式は実際の状況に応じて柔軟に決定すべきであるということである。
【0176】
本出願の実施例では、各データが異なるアクセスアドレスを使用する読み書き方法が提供され、上述の方式により、異なるchannelを用いてデータに対して読み取り及び送信を行うことで複数の種類の操作をサポートすることができるため、データ処理の柔軟性を向上させることができる。
【0177】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを得た後に、アドレス生成方法は、さらに、
第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取り;及び
第二データチャンネルにより、算術論理ユニットに第一目標データを送信することを含んでも良い。
【0178】
アドレス生成方法は、さらに、
第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第一データチャンネルにより第二目標データを読み取り、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;及び
第三データチャンネルにより算術論理ユニットに第二目標データを送信することを含んでも良い。
【0179】
本実施例では、各データが同じアクセスアドレスを使用する読み書き方法が提供され、ベクトルを単位とするアクセスモードでは、ベクトル全体は1つのみのアクセスアドレスを使用する必要があり、即ち、1つのAGUをインスタンス化し、1つのベクトルAGUを構成し、ワンセットのパラメータを設定すれば良い。
【0180】
理解を容易にするために、VEPを128であることを例として説明を行い、
図10を参照し、
図10は本出願の実施例におけるデータが同じアクセスアドレスを使用する一例を示す図である。
図10に示すように、F1乃至F5はすべてchannelを表し、AGU_R0では第一目標データの第一目標アドレスを得た後に、channel F1によりdata bufferに該第一目標アドレスを送信し、また、該第一目標アドレスに基づいて、channel F1によりdata bufferのうちから第一目標アドレスに対応する第一目標データを読み取り、そして、channel F2によりALUに第一目標データを送信することができる。同様に、AGU_R0では第二目標データの第二目標アドレスを得た後に、依然としてchannel
F1によりdata bufferに該第二目標アドレスを送信し、また、該第二目標アドレスに基づいて、channel F1によりdata bufferのうちから第二目標アドレスに対応する第二目標データを読み取り、その後、channel F3によりALUに第二目標データを送信することができる。これに基づいて類推して、128番目のデータの目標アドレスを得た後に、依然としてchannel E1によりdata bufferに該目標アドレスを送信し、また、該目標アドレスに基づいて、channel
E1によりdata bufferのうちから対応するデータを読み取り、そして、channel F5によりALUにデータを送信することができる。理解すべきは、
図10に示す例は本技術案への理解用のみであり、実際の応用では、具体的な目標データを読み取り及び送信する方式は実際の状況に応じて柔軟に決定すべきであるということである。
【0181】
本出願の実施例では、各データが同じアクセスアドレスを使用する読み書き方法が提供され、上述の方式により、同じchannelを用いてデータを読み取り、このような場合、1つのみのAGUをインスタンス化すれば良く、即ち、ワンセットのパラメータを設定することで、パラメータ設定効率を向上させることができる。
【0182】
さらに、前述の実施例で説明された目標データを読み取り及び送信する方法の対象は1つのAGUにおける目標データであるが、
図3に示すように、AGUには複数のベクトルAGUが含まれるので、複数のベクトルAGUが使用する組み合わせ方式は次の4種類を含み得るが、これらに限定されない。
【0183】
第一の種類は1リード1ライトであり、即ち、AGU_R0とAGU_W0は同時に実行し、AGU_R0は先に起動し、ALUの結果はAGU_W0が起動し実行するように駆動する。
【0184】
第二の種類はマルチリード1ライトであり、即ち、複数のAGU_Rxは同時に実行し、そのうち、実行モードは異なっても良く、例えば、AGU_R0は各clkで1つのベクトルが入力され、AGU_R1は複数のclkの間隔で1回出力することができ、1回目に1つのベクトルを読み込んだ後に、各clkでL0 CNTによりベクトルにおける1つの要素を選択して出力し、その後、コピーすることでベクトルに拡張し計算を行い、このような場合の組み合わせ方式は2リード1ライトをサポートすることができる。
【0185】
第三の種類は1リードマルチライトであり、即ち、1つの入力により複数の結果を生成し、複数のAGU_Wxにより書き込みを行う。
【0186】
第四の種類はマルチリードマルチライトであり、即ち、複数の入力が複数のAGU_Rxにより入力され、計算後に複数の結果が生じ、そして、複数のAGU_Wxにより書き込まれる。
【0187】
理解すべきは、実際の応用ではさらに他の組み合わせ方式が含まれても良く、具体的な組み合わせ方式は実際のニーズに応じて柔軟に決定される必要があるということである。
図3では再利用可能な設計思想が含まれるが、ワンセットのアーキテクチャが複数回呼び出されても良く、例えば、1つのAGUでは複数のCNTモジュールを呼び出し、1つの計算ユニットでは複数のベクトルAGU_R及びベクトルAGU_Wを呼び出することができ、また、設計では各ブロックの数が比較的多いが、機能をテスト及び検証するときに、基本CNTモジュール及びAGUのみを検証すれば良く、これにより、設計及び検証の仕事量を減らし、検証の作業効率を向上させることができる。なお、
図3では各AGU_Rn又はAGU_Wnは何れも
図9又は
図10に示するデータアクセス方法を採用することができる。
【0188】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、ベクトル並列度はベクトル層に対応し、スライディングウィンドウ幅範囲はスライディングウィンドウ幅層に対応し、スライディングウィンドウ高さ範囲はスライディングウィンドウ高さ層に対応し、特徴マップ幅範囲は特徴マップ幅層に対応し、特徴マップ高さ範囲は特徴マップ高さ層に対応し、最大スライス数値範囲はスライス層に対応し、最大バッチ値はバッチ層に対応し、
ベクトル層に対応する開始計数値と終了計数値が等しい場合、ベクトル層に対応するループ機能の使用を禁止し、
スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ幅層に対応するループ機能の使用を禁止し、
スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ高さ層に対応するループ機能の使用を禁止し、
特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、特徴マップ幅層に対応するループ機能の使用を禁止し、
特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、特徴マップ高さ層に対応するループ機能の使用を禁止し、
スライス層に対応する開始計数値と終了計数値が等しい場合、スライス層に対応するループ機能の使用を禁止し、
バッチ層に対応する開始計数値と終了計数値が等しい場合、バッチ層に対応するループ機能の使用を禁止する。
【0189】
本実施例では、多段計数器のイネーブルメントの制御を設定する方法が紹介され、L0_CNT乃至L6_CNT(ベクトル層、スライディングウィンドウ幅層、スライディングウィンドウ高さ層、特徴マップ幅層、特徴マップ高さ層、スライス層及びバッチ層)について言えば、各層は1つのloopに対応する。或る層にループが存在しない場合、cnt_start=cnt_endを設定することで、該層の使用を禁止する。本出願では、階層がベクトルloop、スライディングウィンドウ幅loop、スライディングウィンドウ高さloop、特徴マップ幅loop、特徴マップ高さloop、スライス及びバッチloopの順に順次逓増する。
【0190】
具体的には、ベクトルloopについて言えば、ベクトルloopに対応する開始計数値と終了計数値が等しい場合、ベクトルloopに対応するループ機能の使用を禁止し得る。スライディングウィンドウ幅loopについて言えば、スライディングウィンドウ幅loopに対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ幅loopに対応するループ機能の使用を禁止し得る。スライディングウィンドウ高さloopについて言えば、スライディングウィンドウ高さloopに対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ高さloopに対応するループ機能の使用を禁止し得る。特徴マップ幅loopについて言えば、特徴マップ幅loopに対応する開始計数値と終了計数値相が等しい場合、特徴マップ幅loopに対応するループ機能の使用を禁止し得る。特徴マップ高さloopについて言えば、特徴マップ高さloopに対応する開始計数値と終了計数値が等しい場合、特徴マップ高さloopに対応するループ機能の使用を禁止し得る。スライスloopについて言えば、スライスloopに対応する開始計数値と終了計数値が等しい場合、スライスloopに対応するループ機能の使用を禁止し得る。バッチloopについて言えば、バッチloopに対応する開始計数値と終了計数値が等しい場合、バッチloopに対応するループ機能の使用を禁止し得る。
【0191】
本出願の実施例では、多段計数器のイネーブルメントの制御を設定する方法が提供され、上述の方式により、或るloopに対応する計数の開始値及び計数の終了値を同じ値に設定することで、対応するループ機能の使用を禁止し、多段計数器のイネーブルメントに対しての制御を完了することができ、これにより、本技術案の実現可能性を向上させることができる。
【0192】
オプションとして、上述の
図5に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成方法の他の選択可能な実施例において、
ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し、
スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し、
スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し、
特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し、
特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し、
スライス層は第六ループ開始情報及び第六ループ終了情報に対応し、
バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する。
【0193】
本実施例では、制御情報の生成方法が紹介され、AGUにおける複数のloopに対応するCNTは複数組の制御情報を生成することができ、毎組の制御情報は異なるloopにそれぞれ対応するループ開始情報(Lx_LOOP_START)及びループ終了情報(Lx_LOOP_END)を含む。L0_CNT乃至L6_CNT(ベクトル層、スライディングウィンドウ幅層、スライディングウィンドウ高さ層、特徴マップ幅層、特徴マップ高さ層、スライス層及びバッチ層)について言えば、7組の制御情報(即ち、14個の制御情報)を生成することができ、該制御信息はALUにおける演算の開始及び終了情報とすることができる。例えば、ALUで演算を行うときに、数値の間の対比によりウィンドウ内データの最大値を決定する必要があるが、1番目のclkについてそれと比較するための数値が無く、例えば、6番目のclkから2つの数値を得て比較することしかできず、また、最後の1つのclkが数値の比較を行う必要があるだけでなく、結果の出力を行う必要もある。これに基づいて、Lx_LOOP_STARTは1番目のclkに対して制御を行い、1番目のclkが比較用のデータを有しないが、対応するL1_LOOP_STARTにより、6番目のclkから保存ウィンドウ内の1番目のデータについての演算を行うようにさせることができ、また、最後の1つのclkについて言えば、L1_LOOP_END情報を最後の1回の比較のトリガー情報とし、また、ウィンドウ内の比較の最後結果を出力するように構成することができる。そのうち、制御情報は実際の状況に応じて動的変化するものであり、AGUについて言えば、AGUは各loopに対応する制御情報をALUに送信するだけで良い。ALUはVLIWにおける設定パラメータにより対応するLx_LOOP_STARTのLx_LOOP_ENDを選択することで必要な演算を完了することができる。
【0194】
なお、各層について、各clkで、計数値が計数の開始値に等しく、又は、計数値が計数範囲を超えた場合、ALUに制御情報を伝送し、即ち、ループ開始情報及びループ終了情報はデータの同期と伴ってALUに伝送することができる。
【0195】
具体的には、ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し、即ち、ベクトル層では、第一ループ開始情報及び第一ループ終了情報はデータの同期伴ってALUに伝送される。
【0196】
スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し、即ち、スライディングウィンドウ幅層では、第二ループ開始情報及び第二ループ終了情報はデータの同期と伴ってALUに伝送される。
【0197】
スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し、即ち、スライディングウィンドウ高さ層では、第三ループ開始情報及び第三ループ終了情報はデータの同期と伴ってALUに伝送される。
【0198】
特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し、即ち、特徴マップ幅層では、第四ループ開始情報及び第四ループ終了情報はデータの同期と伴ってALUに伝送される。
【0199】
特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し、即ち、特徴マップ高さ層では、第五ループ開始情報及び第五ループ終了情報はデータの同期と伴ってALUに伝送される。
【0200】
スライス層は第六ループ開始情報及び第六ループ終了情報に対応し、即ち、スライス層では、第六ループ開始情報及び第六ループ終了情報はデータの同期と伴ってALUに伝送される。
【0201】
バッチ層は第七ループ開始情報及び第七ループ終了情報に対応し、即ち、バッチ層では、第七ループ開始情報及び第七ループ終了情報はデータの同期と伴ってALUに伝送される。
【0202】
本出願の実施例では、制御情報の生成方法が提供され、上述の方式により、あるloopに対応するループ機能を使用し又はその使用を禁止する必要があるとき、ループ開始情報又はループ終了情報を採用して制御を行うことができ、これにより、制御の柔軟性を向上させることができる。
【0203】
以下、本出願におけるアドレス生成ユニットについて詳細に説明する。
図11を参照し、
図11は本出願の実施例におけるアドレス生成ユニットの一例を示す図である。アドレス生成ユニット20は解析モジュール201、取得モジュール202、決定モジュール203及び計算モジュール204を含む。
【0204】
解析モジュール201は超長命令語の解析に基づいて実行パラメータを取得するために用いられの、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられる。
【0205】
取得モジュール202は第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得するために用いられる
決定モジュール203は第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて、第一目標データの偏移量を決定するために用いられる。
【0206】
取得モジュール202はさらに第一目標データの開始アドレスを得るために用いられる。
【0207】
計算モジュール204は開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得するために用いられる。
【0208】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、決定モジュール203は具体的に、
第一スライディングウィンドウ幅計数値とスライディングウィンドウ幅ストライドの和を求め、第二スライディングウィンドウ幅計数値を取得し;
第一スライディングウィンドウ高さ計数値とスライディングウィンドウ高さストライドの和を求め、第二スライディングウィンドウ高さ計数値を取得し;
第二スライディングウィンドウ幅計数値と第一特徴マップ幅計数値の和を求め、幅計数値を取得し;
第二スライディングウィンドウ高さ計数値と第一特徴マップ高さ計数値の和を求め、高さ計数値を取得し;及び
高さ計数値と行間隔係数との乗算結果と、幅計数値と列間隔係数との乗算結果との加算を行い、第一目標データの偏移量を得るために用いられる。
【0209】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、取得モジュール202は具体的に、
第一目標データに対応する基本アドレスを取得し、そのうち、基本アドレスは超長命令語の解析に基づいて取得される設定パラメータであり;
第一目標データに対応するスライス計数値及びバッチ計数値を取得し;
スライス計数値とスライスアドレスインクリメントとの乗算結果と、バッチ計数値とバッチアドレスインクリメントとの乗算結果との和を求め、アドレス総インクリメントを取得し、そのうち、スライスアドレスインクリメント及びバッチアドレスインクリメントは何れも超長命令語の解析に基づいて取得される設定パラメータであり;
アドレス総インクリメントと基本アドレスの和を求め、第一目標データの開始アドレスを得るために用いられる。
【0210】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、アドレス生成ユニットはさらに処理モジュール205を含み、処理モジュール205は、第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一スライディングウィンドウ幅計数値に対して桁上げ操作を行い、深さ計数値に対してリセット処理を行う。
【0211】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、実行パラメータはさらに特徴マップ幅ストライドを決定するために用いられる。
【0212】
処理モジュール205はさらに、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にある場合、第一スライディングウィンドウ高さ計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値に対してリセット処理を行うために用いられ、
処理モジュール205はさらに、第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内になく、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にない場合、第一特徴マップ幅計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ;
処理モジュール205は具体的に、第一特徴マップ幅計数値と特徴マップ幅ストライドの和を求め、第二特徴マップ幅計数値を得るために用いられる。
【0213】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、実行パラメータはさらに特徴マップ高さストライドを決定するために用いられる。
【0214】
処理モジュール205はさらに、第一特徴マップ幅計数値が特徴マップ幅範囲内になく、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一特徴マップ高さ計数値に対して桁上げ操作を行い、第一特徴マップ幅計数値に対してリセット処理を行うために用いられ;
処理モジュール205はさらに、第一特徴マップ高さ計数値が特徴マップ高さ範囲にない場合、スライス計数値に対して桁上げ操作を行い、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ;
処理モジュール205は具体的に、第一特徴マップ高さ計数値と特徴マップ高さストライドの和を求め、第二特徴マップ高さ計数値を得るために用いられる。
【0215】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、
処理モジュール205はさらに、スライス計数値が最大スライス数値範囲を超えた場合、バッチ計数値に対して桁上げ操作を行い、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ、そのうち、最大スライス数値範囲は第一目標データに対応するテンソル深さ及びベクトル並列度に基づいて決定され;
処理モジュール205はさらに、バッチ計数値が最大バッチ値以上である場合、バッチ計数値、スライス計数値、第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値、第一特徴マップ高さ計数値及び深さ計数値に対してリセット処理を行うために用いられ、そのうち、最大バッチ値は超長命令語の解析に基づいて取得される設定パラメータである。
【0216】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、アドレス生成ユニットはさらに読み取りモジュール206及び送信モジュール207を含む。
【0217】
読み取りモジュール206は開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取るために用いられ;
送信モジュール207は第二データチャンネルにより算術論理ユニットに第一目標データを送信するために用いられ;
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第三データチャンネルにより第二目標データを読み取るために用いられ、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;
送信モジュール207はさらに、第四データチャンネルにより算術論理ユニットに第二目標データを送信するために用いられる。
【0218】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第一目標アドレスに基づいて、第一データチャンネルにより第一目標データを読み取るために用いられ;
送信モジュール207はさらに、第二データチャンネルにより算術論理ユニットに第一目標データを送信するために用いられ;
読み取りモジュール206はさらに、開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを取得した後に、第二目標データの第二目標アドレスを得たときに、第二目標アドレスに基づいて、第一データチャンネルにより第二目標データを読み取るために用いられ、そのうち、第二目標アドレスは第一目標アドレスに隣接する次の1つの物理アドレスであり;
送信モジュール207はさらに、第三データチャンネルにより算術論理ユニットに第二目標データを送信するために用いられる。
【0219】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、ベクトル並列度はベクトル層に対応し、スライディングウィンドウ幅範囲はスライディングウィンドウ幅層に対応し、スライディングウィンドウ高さ範囲はスライディングウィンドウ高さ層に対応し、特徴マップ幅範囲は特徴マップ幅層に対応し、特徴マップ高さ範囲は特徴マップ高さ層に対応し、最大スライス数値範囲はスライス層に対応し、最大バッチ値はバッチ層に対応する。
【0220】
アドレス生成ユニットはさらに使用禁止モジュール208を含む。
【0221】
使用禁止モジュール208は、ベクトル層に対応する開始計数値と終了計数値が等しい場合、ベクトル層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、スライディングウィンドウ幅層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ幅層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、スライディングウィンドウ高さ層に対応する開始計数値と終了計数値が等しい場合、スライディングウィンドウ高さ層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、特徴マップ幅層に対応する開始計数値と終了計数値が等しい場合、特徴マップ幅層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、特徴マップ高さ層に対応する開始計数値と終了計数値が等しい場合、特徴マップ高さ層に対応するループ機能の使用を禁止するために用いられ;
使用禁止モジュール208はさらに、スライス層に対応する開始計数値と終了計数値が等しい場合、スライス層に対応するループ機能の使用を禁止するために用いられ;及び
使用禁止モジュール208はさらに、バッチ層に対応する開始計数値と終了計数値が等しい場合、バッチ層に対応するループ機能の使用を禁止するために用いられる。
【0222】
オプションとして、上述の
図11に対応する実施例をもとに、本出願の実施例により提供されるアドレス生成ユニット20の他の実施例において、
ベクトル層は第一ループ開始情報及び第一ループ終了情報に対応し;
スライディングウィンドウ幅層は第二ループ開始情報及び第二ループ終了情報に対応し;
スライディングウィンドウ高さ層は第三ループ開始情報及び第三ループ終了情報に対応し;
特徴マップ幅層は第四ループ開始情報及び第四ループ終了情報に対応し;
特徴マップ高さ層は第五ループ開始情報及び第五ループ終了情報に対応し;
スライス層は第六ループ開始情報及び第六ループ終了情報に対応し;及び
バッチ層は第七ループ開始情報及び第七ループ終了情報に対応する。
【0223】
図12は本出願の実施例における電子機器の構成を示す図である。図に示すように、電子機器30は送受信ユニット310、深層学習処理器320及び記憶器330を含み得る。
【0224】
該電子機器30は、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、カーナビ、センサー、カメラヘッド、クラウドサーバー、カメラ、撮影機、投影機、時計、イヤホン、モバイルストレージ、ウェアラブルデバイス、車両、家電製品及び/又は医療機器を含み得るが、これらに限定されない。
【0225】
記憶器330は読み取り専用メモリ及びランダムアクセスメモリを含み、深層学習処理器320に命令やデータを提供しても良い。記憶器330の一部がさらに不揮発性ランダムアクセスメモリ(Non-Volatile
Random Access Memory、NVRAM)を含んでも良い。
【0226】
記憶器330は以下のような要素、実行可能なモジュール又はデータ構造、それらのサブセット、あるいは拡張セットを記憶している。
【0227】
操作命令:各種の操作命令を含み、各種の操作を実現するために用いられ;及び
オペレーティングシステム:各種のシステムプログラムを含み、各種の基本サービスを実現し、かつハードウェアベースのタスクを処理するために用いられる。
【0228】
本発明の実施例における深層学習処理器320は、
超長命令語の解析に基づいて実行パラメータを取得し、そのうち、実行パラメータは、スライディングウィンドウ幅範囲、スライディングウィンドウ幅ストライド、スライディングウィンドウ高さ範囲、スライディングウィンドウ高さストライド、特徴マップ幅範囲及び特徴マップ高さ範囲を決定するために用いられ;
第一目標データに対応する深さ計数値が深さ計数範囲を超えた場合、第一目標データに対応する第一スライディングウィンドウ幅計数値、第一スライディングウィンドウ高さ計数値、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値を取得し;
第一スライディングウィンドウ幅計数値がスライディングウィンドウ幅範囲内にあり、かつ第一スライディングウィンドウ高さ計数値がスライディングウィンドウ高さ範囲内にあり、かつ第一特徴マップ幅計数値が特徴マップ幅範囲内にあり、かつ第一特徴マップ高さ計数値が特徴マップ高さ範囲内にある場合、第一スライディングウィンドウ幅計数値、スライディングウィンドウ幅ストライド、第一スライディングウィンドウ高さ計数値、スライディングウィンドウ高さストライド、第一特徴マップ幅計数値及び第一特徴マップ高さ計数値に基づいて、第一目標データの偏移量を決定し;
第一目標データの開始アドレスを取得し;及び
開始アドレスと偏移量の和を求め、第一目標データの第一目標アドレスを得るために用いられる。
【0229】
深層学習処理器320は電子機器30の操作を制御し、深層学習処理器320はさらにCPUと称されても良い。記憶器330は読み取り専用メモリ及びランダムアクセスメモリを含み、深層学習処理器320に命令及びデータを提供することができる。記憶器330の一部がさらにNVRAMを含み得る。具体的な応用では、電子機器30の各アセンブリがバスシステム340を介して接続され、そのうち、バスシステム340はデータバス以外に、電源バス、制御バス、状態情報バスなどを含み得る。但し、説明の便宜のため、図では各種のバスをバスシステム340と総称する。
【0230】
上述の本発明の実施例に開示の方法は深層学習処理器320に適用することができ、又は、深層学習処理器320により実現され得る。深層学習処理器320は集積回路チップであっても良く、情報を処理する能力を有する。実現のプロセスにいて、上述の方法の各ステップは深層学習処理器320におけるハードウェアの集積論理回路又はソフトウェア形式の命令により完了することができる。上述の深層学習処理器320は汎用処理器、デジタル情報処理器(digital signal
processing、DSP)、特定用途向け集積回路(application
specific integrated circuit、ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又は他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスター論理デバイス、ディスクリートハードウェアアセンブリであっても良く、本発明の実施例に開示の各方法、ステップ及論理ブロックを実現又は実行することができる。汎用処理器はマイクロプロセッサあっても良く、又は、該処理器は任意の従来のプロセッサなどであり得る。本発明の実施例に開示の方法のステップはハードウェア復号化プロセッサによって実行されるように直接具現化され得るか、又は、復号化プロセッサ内のハードウェアとソフトウェアモジュールの組み合わせによって実行され得る。ソフトウェアモジュールはランダムアクセスメモリ、フラッシュメモリ、読み取り専用メモリ、プログラム可能な読み取り専用メモリ、電気的に消去可能なプログラム可能なメモリ、レジスタなどの当技術分野で成熟した記憶媒体に配置することができる。該記憶媒体は記憶器330に配置され、深層学習処理器320は記憶器330における情報を読み取り、そのハードウェアと組み合わせて上述の方法のステップを完了することができる。
【0231】
本出願の実施例では、該電子機器30に含まれる深層学習処理器320は
図5に対応するような各実施例を実行するために用いられるが、ここではその詳しい説明を省略する。
【0232】
本出願の実施例ではさらに、コンピュータ可読記憶媒体が提供され、該コンピュータ可読記憶媒体にはコンピュータプログラムが記憶されており、それはコンピュータ上で実行されるときに、コンピュータに、前述の
図5乃至
図9に示する実施例に記載の方法においてクライアントにより実行されるステップを実行させることができる。
【0233】
本出願の実施例では、プログラムを含むコンピュータプログラムプロダクトがさらに提供され、それはコンピュータ上で実行されるときに、コンピュータに、前述の
図5乃至
図9に示す実施例に記載の方法においてクライアントにより実行されるステップを実行させることができる。
【0234】
以上、本出願の好ましい実施例を説明したが、本出願はこの実施例に限定されず、本出願の趣旨を離脱しない限り、本出願に対するあらゆる変更は本出願の技術的範囲に属する。