以下、図面を参照して、本発明の様々な例示的な実施例、特徴、および、態様を詳細に説明する。図面中の同じ符号は、機能が同じまたは類似の要素を示す。図面に実施例の様々な態様が示されているが、特に明記しない限り、図面は必ずしも比例して描かれているわけではない。
ここでの「例示的」という専門の単語は、「例、実施例、または、説明性として役立つ」ことを意味する。ここで「例示的」として説明されているいかなる実施例は、他の実施例よりも優れているまたはより優れていると解釈される必要はない。
また、本発明をよりよく説明するために、以下の具体的な実施形態では、多くの具体的な細かいところが与えられている。当業者は、いくつかの具体的な細かいところがないでも、本発明を同様に実施できることを理解すべきである。いくつかの実例では、本発明の要旨を強調するように、当業者にとって周知の方法、手段、要素、および、回路は、詳細には説明されていない。
本発明の実施例によると、データ処理方法が提供される。図1aは、本発明の実施例に係るデータ処理方法を示すフローチャートである。図1aに示されたように、当該データ処理方法は、以下のステップを含む。
ステップS11aにおいて、復号化後の第1の処理命令のオペランドにテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記記述子の内容を取得する。
ステップS12aにおいて、前記記述子の内容に基づいて、前記第1の処理命令を実行する。
本発明の実施例によると、テンソル形状を示す記述子を導入することにより、復号化された処理命令のオペランドに記述子識別子が含まれる場合に、対応する記述子内容を確定し、且つ、記述子内容に基づいて当該処理命令を実行することによって、データアクセスの複雑度を低下させ、データアクセスの効率を向上させることができる。
例を挙げると、当該データ処理方法は、プロセッサに適用でき、当該プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
可能な一実現形態において、処理待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例を挙げると、以下のテンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本願は記述子がテンソル形状を示す方式を限定しないことを説明する必要がある。メモリにテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状を確定できず、さらに複数のテンソルデータ間の相互関係などの関連情報も確定できないので、プロセッサのテンソルデータのアクセス効率が低くなる。
この場合、記述子(テンソル記述子)を導入して、テンソル(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は、当該3次元のテンソルデータの、三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設置でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させる。
可能な一実現形態において、処理命令が受信されると、まず処理命令を復号化(デコード)することができる。ここで、前記方法は、受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得ることをさらに含み、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
この場合、第1の処理命令が復号化された後、復号化後の第1の処理命令(マイクロ命令)を得ることができる。ここで、第1の処理命令は、データアクセス命令、演算命令、記述子管理命令、および同期命令などを含んでもよい。本発明は、第1の処理命令の具体的なタイプ、および、復号化の具体的な方式に対して限定しない。
当該復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含むことができ、オペレーションコードは、第1の処理命令に対応する処理タイプを示すために使用され、オペランドは、処理待ちのデータを示すために使用される。例えば、当該命令は、Add;A;Bのように表されることができ、ここで、Addはオペレーションコードであり、AとBはオペランドであり、当該命令はAとBの加算に使用される。本発明は、復号化後の命令のオペランドの数および命令の表示形式に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、当該記述子の識別子に基づいて記述子に対応する記述子記憶空間を確定でき、さらに、記述子記憶空間から記述子の内容(テンソルデータを表す形状、アドレスなどの情報を含む)を取得でき、その後、記述子の内容に基づいて第1の処理命令を実行することができる。
可能な一実現形態において、ステップS12aは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含んでもよい。
例を挙げると、記述子の内容に基づいて、第1の処理命令における記述子識別子を含むオペランドに対応するデータのデータ記憶空間におけるデータアドレスを計算し、さらに、当該データアドレスに基づいて対応する処理を実行することができる。例えば、命令Add;A;Bの場合、オペランドAとBにそれぞれ記述子の識別子TR1とTR2が含まれていると、プロセッサは、記述子の識別子TR1とTR2に基づいてそれぞれTR1とTR2に対応する記述子記憶空間を確定し、記述子記憶空間における内容(例えば、形状パラメータとアドレスパラメータ)を読み取ることができ、記述子の内容に基づいて、データAとBのデータアドレスを計算することができる。例えば、Aのメモリにおけるデータアドレス1はADDR64~ADDR127であり、Bのメモリにおけるデータアドレス2はADDR1023~ADDR1087である。その後、プロセッサは、アドレス1とアドレス2からそれぞれデータを読み取って、加算(Add)演算を実行して、演算結果(A+B)を得ることができる。
可能な一実現形態において、本発明の実施例に係る方法は、関連技術のハードウェア構造によって実現できる。この場合、当該方法を適用するプロセッサは、制御ユニットと実行ユニットとを備えてもよい。制御ユニットは、制御するために使用され、例えば、メモリまたは外部から導入される命令を読み取って、命令を復号化(デコード)し、該当する部品にマイクロ操作制御信号などを送信する。実行ユニットは、具体的な命令を実行するために使用され、例えば算術論理ユニット(arithMetic and logic unit、ALU)、メモリアクセスユニット(MeMory access unit、MAU)、人工知能演算ユニット(neural functional unit、NFU)などである。本発明は、実行ユニットの具体的なハードウェアタイプに対して限定しない。
可能な一実現形態において、制御ユニットによって命令を復号化して復号化後の第1の処理命令を得ることができ、復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、制御ユニットは記述子に対応する記述子記憶空間を確定し、且つ、記述子記憶空間から記述子の内容(形状、アドレスなどの情報)を取得することができ、その後、実行ユニットが記述子の内容に基づいて第1の処理命令を実行するように、制御ユニットは記述子の内容および第1の処理命令を実行ユニットに送信することことができる。実行ユニットは、記述子の内容および第1の処理命令が受信されると、可以記述子の内容に基づいて、第1の処理命令における記述子識別子を含むオペランドに対応するデータのデータ記憶空間におけるデータアドレスを計算し、さらに、当該データアドレスに基づいて対応する処理を実行することができる。
例えば、命令Add;A;Bの場合、オペランドAとBにそれぞれ記述子の識別子TR1とTR2が含まれていると、制御ユニットによってTR1とTR2に対応する記述子記憶空間を確定し、記述子記憶空間における内容(例えば、形状パラメータとアドレスパラメータ)を読み取って実行ユニットに送信することができる。実行ユニットは、記述子の内容を受信した後、データAとBのデータアドレスを計算することができる。例えば、Aのメモリにおけるアドレス1はADDR64~ADDR127であり、Bのメモリにおけるアドレス2はADDR1023~ADDR1087である。その後、実行ユニットは、アドレス1とアドレス2からそれぞれデータを読み取って、加算(Add)演算を実行して、演算結果(A+B)を得ることができる。
可能な一実現形態において、関連技術のハードウェア構造を改善して、本発明の実施例に係る方法を実現することができる。例えば、記述子に関連した操作を実現するように、制御ユニットにおけるテンソル制御モジュールを設けて、例えば、記述子の登録、変更、および、取り消し、記述子内容の読み書きなど、ことができる。テンソル制御モジュールは、例えばテンソルインターフェースユニット(Tensor interface Unit、TIU)であり、本発明は、テンソル制御モジュールの具体的なハードウェアタイプに対して限定しない。このような方式によって、専用のハードウェアによって記述子に関連した操作を実現することによって、テンソルデータのアクセス効率をさらに向上させることができる。
この場合、制御ユニットで復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、テンソル制御モジュールによって記述子に対応する記述子記憶空間を確定でき、記述子記憶空間を確定した後、記述子記憶空間から記述子の内容(形状、アドレスなどの情報)を取得できる。その後、実行ユニットが記述子の内容に基づいて第1の処理命令を実行するように、制御ユニットは記述子の内容および第1の処理命令を実行ユニットに送信するすることができる。
可能な一実現形態において、テンソル制御モジュールは、例えば、記述子の登録、変更、および、取り消し、記述子内容の読み書き、データアドレスの計算およびデータアクセス命令の実行などの、記述子に関連した操作および命令の実行をさらに実現できる。この場合、制御ユニットで復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、テンソル制御モジュールによって記述子に対応する記述子記憶空間を確定でき、記述子記憶空間を確定した後、記述子記憶空間から記述子の内容を取得でき、記述子の内容に基づいて、テンソル制御モジュールにより第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、データアドレスに基づいて、テンソル制御モジュールにより前記第1の処理命令に対応するデータ処理を実行できる。
本発明は、本発明の実施例の方法を実現するために使用する具体的なハードウェア構造に対して限定しない。
このような方式によって、記述子記憶空間から記述子内容を取得し、さらにデータアドレスを取得できて、アクセスするたびに命令によってアドレスを導入する必要がなく、プロセッサのデータアクセス効率を向上させた。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)における記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、制御ユニットの内部メモリ(例えば、オンチップキャッシュ)または制御ユニットと接続された外部メモリ(オフチップメモリ)における記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同じ領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスはADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31は記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63は記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023は記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタにおける記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子におけるデータは、即時値にすることも、専用レジスタから取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタにおける記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュにおけるテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、実行ユニットは、記述子の内容に基づいて、オペランドに対応するデータのデータアドレスを確定し、その後、に第1の処理命令を実行できる。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータマッピングの3次元空間における点または領域の位置であることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
図2は、本発明の一実施例に係るデータ記憶空間を示す模式図である。図2に示されたように、データ記憶空間21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)がori_x(図示せず)であり、Y軸方向上のサイズ(全行数)がori_y(図示せず)であり、データ記憶空間21の開始アドレスPA_start(基準アドレス)が1番目のデータブロック22の物理アドレスである。データブロック23は、データ記憶空間21における一部のデータであり、X軸方向におけるオフセット量25がoffset_xで表し、Y軸方向におけるオフセット量24がoffset_yで表し、X軸方向におけるサイズがsize_xで表し、Y軸方向におけるサイズがsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点はデータ記憶空間21の1番目のデータブロックを使用でき、記述子の基準アドレスはデータ記憶空間21の開始アドレスPA_startであり、その後、データ記憶空間21のX軸におけるサイズori_x、Y軸におけるサイズori_y、および、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_xおよびY軸方向におけるサイズsize_yと組み合わせることにより、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(1)を使用して記述子の内容を表すことができる。
上記の例では、記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点のデータ記憶空間における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用することにより、図2におけるデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびそのデータ記憶空間における基準アドレスPA_baseを確定し、例えば、データ記憶空間21中で一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データのデータ記憶空間における物理アドレスを基準アドレスPA_baseとし、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定できる。例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定できる。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が示すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用することでデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
式(1)を使用して記述子の内容を表す場合、テンソルデータにおける任意の一つのデータ点に対して、そのデータ記述位置を(xq、yq)に設定すると、当該データ点のデータ記憶空間におけるデータアドレス
は、以下の式(4)を使用して確定できる。
このような方式によって、実行ユニットは、記述子の内容に基づいて記述子が示すテンソルデータのデータ記憶空間におけるデータアドレスを計算し、さらに、当該アドレスに基づいて処理命令に対応する処理を実行できる。
可能な一実現形態において、記述子の管理命令に基づいて記述子の登録、変更、および、取り消しなどの管理を実現し、且つ、これらの管理命令に対して該当するオペレーションコードを設定できる。例えば、記述子登録命令(TRCreat)に基づいて記述子を登録(作成)し、記述子変更命令に基づいて記述子の各パラメータ(形状、アドレスなど)を変更し、記述子取り消し命令(TRRelease)に基づいて記述子を取り消す(削除)ことができる。本発明は、記述子の管理命令の種類およびオペレーションコードの具体的な設定に対して限定しない。
可能な一実現形態において、前記方法は、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令における記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得することと、
前記記述子の登録パラメータに基づいて、前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定することと、
前記記述子と前記第2の記憶領域との間の対応関係を構築するように、前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することと、
前記記述子の内容を前記第1の記憶領域に記憶することと、をさらに含む。
例を挙げると、記述子登録命令は、記述子を登録するために使用でき、当該命令には記述子の登録パラメータを含んでもよい。当該登録パラメータは、記述子の識別子(ID)、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。例えば、当該登録パラメータは、識別子TR0、および、テンソル形状(次元数、各次元のサイズ、オフセット量、開始データアドレスなど)を含んでもよい。本発明は、登録パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子登録命令であると確定する場合、第1の処理命令における登録パラメータに基づいて、該当する記述子を作成できる。ここで、制御ユニットまたはテンソル制御モジュールによって該当する記述子を作成でき、本発明はこれに対して限定しない。
可能な一実現形態において、まず記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定できる。
例を挙げると、記憶領域の中の少なくとも一つを既に予め設定したとすると、第1の記憶領域及び/又は第2の記憶領域を直接確定できる。例えば、記述子内容とテンソルデータ内容とを同じ記憶空間に記憶すると予め設定し、且つ、記述子の識別子TR0に対応する記述子の内容の記憶アドレスがADDR32~ADDR63であり、テンソルデータの内容の記憶アドレスがADDR64~ADDR1023であると、この二つのアドレスが第1の記憶領域および第2の記憶領域であると直接確定できる。
可能な一実現形態において、記憶領域を予め設定しないと、記述子内容に対して記述子記憶空間の中で第1の記憶領域を割り当て、且つ、テンソルデータ内容に対してデータ記憶空間の中で第2の記憶領域を割り当てることができる。ここで、制御ユニットまたはテンソル制御モジュールによって記憶領域を割り当てることができる。本発明はこれに対して限定しない。
可能な一実現形態において、登録パラメータの中のテンソル形状および前記第2の記憶領域のデータアドレスに基づいて、テンソル形状とアドレスとの間の対応関係を構築し、さらに記述子内容を確定することによって、データ処理の際に記述子内容に基づいて対応するデータアドレスを確定することができる。記述子内容を確定した後、それを第1の記憶領域の中に記憶し、記述子の登録過程を完成できる。
例えば、図2に示されたテンソルデータ23について、登録パラメータは、データ記憶空間21の開始アドレスPA_start(基準アドレス)、X軸方向におけるオフセット量25(offset_xで表す)、Y軸方向におけるオフセット量24(offset_yで表す)、X軸方向におけるサイズ(size_xで表す)、および、Y軸方向におけるサイズ(size_yで表す)を含んでもよい。これらのパラメータに基づいて、記述子の内容を式(1)で表すことができ、それを第1の記憶領域中に記憶することによって、記述子の登録過程を完成できる。
このような方式によって、記述子登録命令に基づいて記述子を自動的に作成し、記述子が示すテンソルとデータアドレスとの間の対応を実現することによって、データ処理の際に記述子内容に基づいてデータアドレスを取得でき、プロセッサのデータアクセス効率を向上させる。
可能な一実現形態において、前記方法は、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令における記述子の識別子を取得することと、
前記記述子の識別子に基づいて、前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放することと、をさらに含む。
例を挙げると、記述子が占用された空間を解放できるように、記述子取り消し命令は、記述子を取り消し(削除)するために使用することができる。当該命令は、記述子の識別子を少なくとも含んでもよい。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子取り消し命令であると確定する場合、第1の処理命令における記述子識別子に基づいて、該当する記述子を取り消すことができる。制御ユニットまたはテンソル制御モジュールによって該当する記述子を取り消すことができる。本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子に基づいて、当該記述子の記述子記憶空間における記憶領域、及び/又は、記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域を解放することによって、当該記述子の各記憶領域に対する占用を解除できる。
このような方式によって、記述子の使用が終了した後に記述子によって占用された空間を解放して、限られた記憶リソースを繰り返して利用できて、リソースの利用効率を向上させた。
可能な一実現形態において、前記方法は、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令における記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得することと、
前記記述子の変更パラメータに基づいて、前記記述子の更新待ち内容を確定することと、
更新待ち内容に基づいて、前記記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新することと、をさらに含む。
例を挙げると、記述子変更命令は、記述子の例えば識別子、テンソル形状などの様々なパラメータを変更するために使用できる。当該命令は、変更パラメータを含むことができ、当該変更パラメータは、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む。本発明は、変更パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子変更命令であると確定する場合、第1の処理命令における変更パラメータに基づいて、記述子の更新待ち内容を確定でき、例えば、テンソルの次元を3次元から2次元に変更し、テンソルの一つまたは複数の次元方向におけるサイズを変更する。
可能な一実現形態において、更新待ち内容を確定した後、テンソルデータを変更して更新後の記述子内容が変更後のテンソルデータの形状を示すように、記述子記憶空間における記述子内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新することができる。本発明は、更新待ち内容の範囲および具体的な更新方式に対して限定しない。
このような方式によって、記述子とテンソルデータとの間の対応が維持できて、リソースの利用効率が向上されるように、記述子が示すテンソルデータに変更が発生された場合、記述子を直接変更することができる。
可能な一実現形態において、前記方法は、
前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キューにおける前記第1の処理命令の前に位置し、且つ、オペランドにおける前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを確定することと、
処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュすることと、をさらに含む。
例を挙げると、記述子を設定した後、記述子に基づいて命令間の依存関係の判断を実行できる。復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、当該第1の処理命令のプリアンブル命令における当該第1の処理命令と依存関係を有する命令が存在するか否かを確定できる。
この場合、命令キュー中の第1の処理命令の前の命令(プリアンブル命令)について、プリアンブル命令のオペランドにおける前記記述子の識別子が有すると、当該プリアンブル命令が当該第1の処理命令と依存関係を有する第2の処理命令であるとして見なすことができる。第1の処理命令のオペランドにおける複数の記述子の識別子が有する場合、各々の記述子に対応する依存関係をそれぞれ判断でき、つまり、オペランドの中に有する複数の記述子の中の少なくとも一つの記述子の識別子のプリアンブル命令を、依存関係を有する第2の処理命令とする。制御ユニット中で依存関係判断モジュールを設置することによって処理命令間の依存関係を判断でき、本発明はこれに対して限定しない。
可能な一実現形態において、処理未完成の第2の処理命令が存在すると、第1の処理命令は第2の処理命令が完成された後に実行する必要がある。例えば、第1の処理命令が記述子TR0に対する演算命令であり、第2の処理命令が記述子TR0に対する書き込み命令であると、第2の処理命令と第1の処理命令との間に依存関係が有する。当該第2の処理命令の実行期間に、第1の処理命令を実行することができない。また、例えば、第2の処理命令が第1の処理命令に対する同期命令(sync)を含むと、第2の処理命令と第1の処理命令との間に依存関係が有し、当該第2の処理命令の実行が完成された後に、第1の処理命令を実行する必要がある。
可能な一実現形態において、処理未完成の第2の処理命令が存在すると、第1の処理命令をブロックでき、すなわち、第2の処理命令の実行が完成されるまでに、第1の処理命令およびその後の他の命令の実行を一時停止してから、第1の処理命令およびその後の他の命令を実行できる。
可能な一実現形態において、処理未完成の第2の処理命令が存在すると、第1の処理命令をキャッシュすることができ、すなわち、第1の処理命令を予め設定したキャッシュ空間に記憶して、他の命令の実行に影響を及ぼさないようにする。第2の処理命令の実行が完成された後に、キャッシュ空間における第1の処理命令を実行する。本発明は、処理未完成の第2の処理命令が存在する場合の第1の処理命令に対する処理方式に対して限定しない。
このような方式によって、命令タイプによって発生された命令間の依存関係および同期命令によって発生された依存関係を確定し、依存関係を有するプリアンブル命令が未完成処理である場合、第1の処理命令をブロックまたはキャッシュすることによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記方法は、
前記記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定することと、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュすることと、をさらに含む。
例を挙げると、記述子の状態の対応表を設定することによって(例えば、テンソル制御モジュールに記述子の状態の対応表を記憶する)、記述子の現在の状態を表示でき、記述子の状態は操作可能状態または操作不可状態を含む。
可能な一実現形態において、第1の処理命令のプリアンブル命令が当前記述子に対して操作を実行している(例えば、書き込みまたは読み取り)場合、記述子の現在状態を操作不可状態に設定できる。当該状態において、第1の処理命令を実行することができなく、第1の処理命令をブロックまたはキャッシュできる。逆に、当前記述子に対して操作を実行するプリアンブル命令がない場合、記述子の現在状態を操作可能状態に設定できる。当該状態において、第1の処理命令を実行できる。
可能な一実現形態において、記述子内容がレジスタTR(テンソルレジスタ、Tensor Register)に記憶されている場合、記述子の状態対応表にTRの使用状況をさらに記憶することによって、TRが占用されているか解放されているかを確定し、限られたレジスタリソースの管理を実現できる。
このような方式によって、記述子の状態に基づいて命令間の依存関係を判断することによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、ステップS11aは、前記ソースデータと前記目的データの中の少なくとも一つが記述子の識別子を含む場合、前記記述子記憶空間から前記記述子の内容を取得することを含み、
ここで、ステップS12aは、前記記述子の内容に基づいて、前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスをそれぞれ確定することと、前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むことと、を含む。
例を挙げると、データアクセス命令のオペランドは、ソースデータと目的データを含み、ソースデータのデータアドレスからデータを読み取って目的データのデータアドレスに書込むために使用される。第1の処理命令がデータアクセス命令である場合、記述子に基づいてテンソルデータのアクセスを実現できる。データアクセス命令のソースデータと目的データの中の少なくとも一つが記述子の識別子を含む場合、記述子の記述子記憶空間を確定できる。
可能な一実現形態において、ソースデータが第1の記述子の識別子を含み、且つ、目的データが第2の記述子の識別子を含むと、第1の記述子の第1の記述子記憶空間および第2の記述子の第2の記述子記憶空間をそれぞれ確定でき、その後、第1の記述子記憶空間および第2の記述子記憶空間から第1の記述子の内容および第2の記述子の内容をそれぞれ読み取り、第1の記述子および第2の記述子の内容に基づいて、ソースデータの第1のデータアドレスおよび目的データの第2のデータアドレスをそれぞれ計算でき、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
例えば、ソースデータはオフチップの読み取り待ちデータである、その第1の記述子の識別子は1であり、目的データはオンチップの一つの記憶空間であり、その第2の記述子の識別子は2であってもよい。ソースデータにおける第1の記述子の識別子1および目的データにおける第2の記述子の識別子2に基づいて、記述子記憶空間から第1の記述子の内容D1および第2の記述子の内容D2をそれぞれ取得できる。ここで、第1の記述子の内容D1および第2の記述子の内容は、それぞれ以下のように表すことができる。
第1の記述子の内容D1および第1の記述子の内容D2に基づいて、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4をそれぞれ取得して、それぞれ以下のように表すことができる。
ソースデータの開始物理アドレスPA3と目的データの開始物理アドレスPA4、および、第1の記述子の内容D1と第2の記述子の内容D2に基づいて、第1のデータアドレスおよび第2のデータアドレスをそれぞれ確定し、且つ、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって(IOチャンネルを介することができる)、D1が示すテンソルデータをD2が示す記憶空間にロードすることを完成できる。
可能な一実現形態において、ソースデータのみが第1の記述子の識別子を含むと、第1の記述子の第1の記述子記憶空間を確定でき、その後、第1の記述子記憶空間から第1の記述子の内容を読み取り、第1の記述子の内容に基づいて、ソースデータの第1のデータアドレスを計算でき、命令のオペランドにおける目的データの第2のデータアドレスに基づいて、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
可能な一実現形態において、目的データのみが第2の記述子の識別子を含むと、第2の記述子の第2の記述子記憶空間を確定でき、その後、第2の記述子記憶空間から第2の記述子の内容を読み取り、第2の記述子の内容に基づいて、目的データの第2のデータアドレスを計算でき、命令のオペランドにおけるソースデータの第1のデータアドレスに基づいて、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
このような方式によって、記述子を使用してデータのアクセスを完成できて、アクセスするたびに命令によってデータアドレスを導入する必要がなく、データアクセス効率を向上させた。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、ステップS12aは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行することと、を含む。
例を挙げると、第1の処理命令が演算命令である場合、記述子に基づいてテンソルデータの演算を実現できる。演算命令のオペランドにおける記述子の識別子が含まれている場合、記述子の記述子記憶空間を確定でき、その後、記述子記憶空間から記述子の内容を読み取り、記述子の内容に基づいて、オペランドに対応するデータのアドレスを計算し、さらにデータアドレスからデータを読み取って演算を実行することによって、演算過程全体を完成できる。このような方式によって、演算の際に記述子を使用してデータの読み取りを完成できて、命令によってデータアドレスを導入する必要がなく、データ演算効率を向上させた。
本発明の実施例に係るデータ処理方法によると、テンソル形状を示すことができる記述子を導入することによって、データ処理命令の運行過程で記述子に基づいてデータのアドレスを確定できるようになって、ハードウェアの観点から命令生成方式が簡略化され、データアクセスの複雑度を低下させ、且つ、プロセッサアクセスデータの効率を向上させた。
図3aは、本発明の実施例に係るデータ処理装置を示すブロック図である。図3aに示されたように、本発明は、データ処理装置をさらに提供し、当該装置は、
復号化後の第1の処理命令のオペランドにテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記記述子の内容を取得するための内容取得モジュール31aと、前記記述子の内容に基づいて、前記第1の処理命令を実行するための命令実行モジュール32aと、を備える。
可能な一実現形態において、前記命令実行モジュールは、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するためのアドレス確定サブモジュールと、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行するためのデータ処理サブモジュールと、を備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令における記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得するための第1のパラメータ取得モジュールと、前記記述子の登録パラメータに基づいて、前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定するための領域確定モジュールと、前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築するための内容確定モジュールと、前記記述子の内容を前記第1の記憶領域に記憶するための内容記憶モジュールと、をさらに備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令における記述子の識別子を取得するための識別子取得モジュールと、前記記述子の識別子に基づいて、前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放するための空間解放モジュールと、をさらに備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令における記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得するための第2のパラメータ取得モジュールと、前記記述子の変更パラメータに基づいて、前記記述子の更新待ち内容を確定するための更新内容確定モジュールと、更新待ち内容に基づいて、記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新するための内容更新モジュールと、をさらに備える。
可能な一実現形態において、前記装置は、前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランド中に前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを確定するための命令確定モジュールと、処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュするための第1の命令キャッシュモジュールと、をさらに備える。
可能な一実現形態において、前記装置は、前記記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定するための状態確定モジュールと、前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュするための第2の命令キャッシュモジュールと、をさらに備える。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、ここで、前記内容取得モジュールは、前記ソースデータと前記目的データの中の少なくとも一つが記述子の識別子を含む場合、記述子記憶空間から前記記述子の内容を取得するための内容取得サブモジュールを備え、ここで、前記命令実行モジュールは、前記記述子の内容に基づいて、前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスをそれぞれ確定するための第1のアドレス確定サブモジュールと、前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むためのアクセスサブモジュールと、を備える。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、ここで、前記命令実行モジュールは、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するための第2のアドレス確定サブモジュールと、前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行するための演算サブモジュールと、を備える。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容が、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容が、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、ここで、前記テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、前記装置は、受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得るための復号化モジュールをさらに備え、ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
可能な一実現形態において、ニューラルネットワークチップをさらに開示し、当該ニューラルネットワークチップは、上記のデータ処理装置を含む。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記のニューラルネットワークチップと、を備え、ここで、前記ニューラルネットワークチップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記ニューラルネットワークチップと外部デバイスとの間のデータ伝送を実現し、前記制御デバイスは、前記ニューラルネットワークチップの状態を監視制御するためである。
図4は、本発明の実施例に係るボードカードの構成を示すブロック図であり、図4を参照すると、上記のボードカードは、上記のチップ389に加えて、他のサポート部品を備えてもよく、当該サポート部品は、記憶デバイス390と、インターフェース装置391と、制御デバイス392と、を含むが、これらに限定されなく、
前記記憶デバイス390と前記ニューラルネットワークチップとは、バスを介して接続され、データを記憶するために使用される。前記記憶デバイスは、複数グループの記憶ユニット393を含んでもよい。各グループの前記記憶ユニットは、前記ニューラルネットワークチップとバスを介して接続される。各グループの前記記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM、ダブルレート同期ダイナミックランダムアクセスメモリ)であってもよいことを理解できる。
DDRは、クロック周波数を上げずにSDRAMの速度を2倍にすることができる。DDRは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。DDRの速度は、標準SDRAMの2倍である。一つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備えてもよい。一つの実施例において、前記ニューラルネットワークチップの内部は、4個の72ビットDDR4コントローラを備えてもよく、上記の72ビットDDR4コントローラにおける64bitは、データ伝送に使用され、8bitは、ECC検証に使用される。各グループの前記記憶ユニットでDDR4-3200粒子を使用する場合、データ伝送する理論上の帯域幅が25600MB/sに達することを理解できる。
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、一つのクロックサイクルでデータを2回伝送することができる。前記チップにDDRを制御ためのコントローラを配置して、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
前記インターフェース装置は、前記ニューラルネットワークチップと電気的に接続される。前記インターフェース装置は、前記ニューラルネットワークチップと外部デバイス(例えば、サーバまたはコンピュータ)との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準PCIEインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準PCIEインターフェースを介して前記チップまでに伝送されて、データ移送が実現される。好もしくは、PCIE 3.0 X 16インターフェースを使用して伝送する場合、理論上の帯域幅が16000MB/sに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記ニューラルネットワークチップの計算結果は、依然として、前記インターフェース装置によって外部デバイス(例えば、サーバ)までに伝送し返す。
前記制御デバイスは、前記ニューラルネットワークチップと電気的に接続される。前記制御デバイスは、前記ニューラルネットワークチップの状態を監視制御するために使用される。具体的に、前記ニューラルネットワークチップは、前記制御デバイスとSPIインターフェースを介して電気的に接続されてもよい。前記制御デバイスは、シングルチップマイクロコンピュータ(Micro Controller Unit、MCU)を含んでもよい。たとえば、前記ニューラルネットワークチップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。したがって、前記ニューラルネットワークチップは、複数の負荷や軽負荷などの異なる作業状態にいることができる。前記制御装置によって、前記ニューラルネットワークチップにおける複数の処理チップ、複数の処理、または、複数の処理回路の作業状態に対する調整制御を実現できる。
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記のニューラルネットワークチップを備える。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、イヤホーン、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び/又は、医療機器を含む。
前記交通ツールは、飛行機、船、及び/又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、B超音波装置、及び/又は、心電計を含む。
A1、データ処理方法であって、前記方法は、
復号化後の第1の処理命令のオペランドにテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記記述子の内容を取得することと、
前記記述子の内容に基づいて、前記第1の処理命令を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記記述子の内容に基づいて、前記第1の処理命令を実行することは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含む。
A3、請求項A1またはA2に記載の方法であって、前記方法は、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令における記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得することと、
前記記述子の登録パラメータに基づいて、前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定することと、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築することと、
前記記述子の内容を前記第1の記憶領域に記憶することと、をさらに含む。
A4、請求項A1乃至A3のにおけるいずれか1項に記載の方法であって、前記方法は、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令における記述子の識別子を取得することと、
前記記述子の識別子に基づいて、前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放することと、をさらに含む。
A5、請求項A1乃至A4のにおけるいずれか1項に記載の方法であって、前記方法は、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令における記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得することと、
前記記述子の変更パラメータに基づいて、前記記述子の更新待ち内容を確定することと、
更新待ち内容に基づいて、記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新することと、をさらに含む。
A6、請求項A1乃至A5の中のいずれか1項に記載の方法であって、前記方法は、
前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドに前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを確定することと、
処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュすることと、をさらに含む。
A7、請求項A1乃至A6の中のいずれか1項に記載の方法であって、前記方法は、
前記記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定することと、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュすることと、をさらに含む。
A8、請求項A1乃至A7の中のいずれか1項に記載の方法であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記記述子の識別子に基づいて、前記記述子の内容を取得することは、
前記ソースデータと前記目的データの中の少なくとも一つが記述子の識別子を含む場合、記述子記憶空間から前記記述子の内容を取得することを含み、
ここで、前記記述子の内容に基づいて、前記第1の処理命令を実行することは、
前記記述子の内容に基づいて、前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスをそれぞれ確定することと、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むことと、を含む。
A9、請求項A1乃至A7の中のいずれか1項に記載の方法であって、前記第1の処理命令は、演算命令を含み、ここで、前記記述子の内容に基づいて、前記第1の処理命令を実行することは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行することと、を含む。
A10、請求項A1乃至A9の中のいずれか1項に記載の方法であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A11、請求項A10に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A12、請求項A11に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A13、請求項A1乃至A12の中のいずれか1項に記載の方法であって、前記方法は、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得ることをさらに含み、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
A14、データ処理装置であって、前記装置は、
復号化後の第1の処理命令のオペランドにテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記記述子の内容を取得するための内容取得モジュールと、
前記記述子の内容に基づいて、前記第1の処理命令を実行するための命令実行モジュールと、を備える。
A15、請求項A14に記載の装置であって、前記命令実行モジュールは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するためのアドレス確定サブモジュールと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行するためのデータ処理サブモジュールと、を備える。
A16、請求項A14またはA15に記載の装置であって、前記装置は、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令における記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得するための第1のパラメータ取得モジュールと、
前記記述子の登録パラメータに基づいて、前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定するための領域確定モジュールと、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築するための内容確定モジュールと、
前記記述子の内容を前記第1の記憶領域に記憶するための内容記憶モジュールと、をさらに備える。
A17、請求項A14乃至A16の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令における記述子の識別子を取得するための識別子取得モジュールと、
前記記述子の識別子に基づいて、前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放するための空間解放モジュールと、をさらに備える。
A18、請求項A14乃至A17の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令における記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得するための第2のパラメータ取得モジュールと、
前記記述子の変更パラメータに基づいて、前記記述子の更新待ち内容を確定するための更新内容確定モジュールと、
更新待ち内容に基づいて、記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新するための内容更新モジュールと、をさらに備える。
A19、請求項A14乃至A18の中のいずれか1項に記載の装置であって、前記装置は、
前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドにおける前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを確定するための命令確定モジュールと、
処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュするための第1の命令キャッシュモジュールと、をさらに備える。
A20、請求項A14乃至A19の中のいずれか1項に記載の装置であって、前記装置は、
前記記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定するための状態確定モジュールと、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュするための第2の命令キャッシュモジュールと、をさらに備える。
A21、請求項A14乃至A20の中のいずれか1項に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記内容取得モジュールは、
前記ソースデータと前記目的データの中の少なくとも一つが記述子の識別子を含む場合、記述子記憶空間から前記記述子の内容を取得するための内容取得サブモジュールを備え、
ここで、前記命令実行モジュールは、
前記記述子の内容に基づいて、前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスをそれぞれ確定するための第1のアドレス確定サブモジュールと、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むためのアクセスサブモジュールと、を備える。
A22、請求項A14乃至A20の中のいずれか1項に記載の装置であって、前記第1の処理命令は、演算命令を含み、ここで、前記命令実行モジュールは、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するための第2のアドレス確定サブモジュールと、
前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行するための演算サブモジュールと、を備える。
A23、請求項A14乃至A22の中のいずれか1項に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A24、請求項A23に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A25、請求項A24に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A26、請求項A14乃至A25の中のいずれか1項に記載の装置であって、前記装置は、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得るための復号化モジュールをさらに備え、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
A27、ニューラルネットワークチップであって、前記チップは、請求項A14乃至A26の中のいずれか1項に記載のデータ処理装置を備える。
A28、電子デバイスであって、前記電子デバイスは、請求項A27に記載のニューラルネットワークチップを備える。
A29、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A27に記載のニューラルネットワークチップと、を備え、
ここで、前記ニューラルネットワークチップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記ニューラルネットワークチップと外部デバイスとの間のデータ伝送を実現し、
前記制御デバイスは、前記ニューラルネットワークチップの状態を監視制御する。
A30、請求項A29に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記ニューラルネットワークチップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
本発明の実施例によると、データ処理装置が提供される。図1bは、本発明の実施例に係るデータ処理装置を示すブロック図である。図1bに示されたように、当該データ処理装置は、制御ユニット11bと実行ユニット12bとを備え、前記制御ユニット11bは、
復号化後の第1の処理命令のオペランドがテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得し、
前記実行ユニットが前記記述子の内容に基づいて前記第1の処理命令を実行するように、前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信する。
本発明の実施例によると、制御ユニットは第1の処理命令オペランドにおける記述子の識別子に基づいて記述子の内容を取得し、実行ユニットに記述子内容を送信することによって第1の処理命令を実行し、処理命令を実行する際に記述子に基づいてオペランドを取得できて、データアクセスの複雑度を低下させ、プロセッサのデータアクセス効率を向上させる。
可能な一実現形態において、前記データ処理装置はプロセッサに適用でき、ここで、プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)および専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサ)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
可能な一実現形態において、前記制御ユニット11bは、受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得るために使用されることができ、ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。ここで、第1の処理命令は、データアクセス命令、演算命令、記述子管理命令、同期命令などを含んでもよい。本発明は、第1の処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、制御ユニット11bは、受信された第1の処理命令に対して復号化処理を行って後、当該命令のオペランドが記述子の識別子を含む場合、記述子の識別子に基づいて記述子記憶空間から記述子の内容を取得し、記述子の内容および第1の処理命令を実行ユニット12bに送信し、実行ユニット12bは、記述子の内容および第1の処理命令を受信した後、まず記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、その後、データアドレスに基づいて、第1の処理命令に対応するデータ処理を実行する。ここで、データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよく、本発明はデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子記憶空間は、制御ユニット11bの内部メモリにおける記憶空間であってもよく、データ記憶空間は、制御ユニット11bの内部メモリまたは制御ユニット11bと接続された外部メモリにおける記憶空間であってもよい。本発明は、これに対して限定しない。
可能な一実現形態において、前記記述子はN次元のテンソルデータの形状を示すために使用され、Nは正の整数であり、例えば、N=1、2、または、3である。ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例を挙げると、以下のテンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本願は記述子がテンソル形状を示す方式を限定しないことを説明する必要がある。
可能な一実現形態において、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は、当該3次元のテンソルデータの、三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子は、記述子の識別子および記述子の内容を含んでもよい。ここで、記述子の識別子は、記述子を区別するために使用され、例えば、記述子の識別子はその番号であり、記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。例えば、テンソルデータは3次元データであり、当該テンソルデータの三つの次元の中で、その中の二つの次元の形状パラメータは固定されて変わらなく、その記述子の内容は当該テンソルデータのもう一つの次元を表す形状パラメータを含んでもよい。
可能な一実現形態において、記述子の識別子と内容は、例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなどの、記述子記憶空間(内部メモリ)に記憶されてもよい。記述子が示すテンソルデータは、例えば、オンチップキャッシュまたはオフチップメモリなどの、データ記憶空間(内部メモリまたは外部メモリ)に記憶されてもよい。本発明は、記述子記憶空間およびデータ記憶空間の具体的な位置に対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの同じ領域に記憶でき、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスはADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR63を記述子記憶空間として、記述子の識別子と内容を記憶し、アドレスADDR64~ADDR1023をデータ記憶空間として、記述子が示すテンソルデータを記憶できる。記述子記憶空間において、アドレスADDR0~ADDR31を使用して記述子の識別子を記憶し、アドレスADDR32~ADDR63を使用して記述子の内容を記憶できる。アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位であることを理解すべきである。
当業者は、実際の状況に従って記述子記憶空間、データ記憶空間、および、その具体的なアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に記憶できる。例えば、レジスタを記述子記憶空間として、レジスタにおける記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができる。例えば、レジスタの番号が0であると、記憶した記述子の識別子を0に設定する。レジスタにおける記述子が有効であると、記述子が示すテンソルデータの大きさに基づいてキャッシュ空間で一つの領域を割り当てて当該テンソルデータを記憶するために使用できる。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、実行ユニットは、記述子の内容に基づいて、オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定でき、その後、第1の処理命令を実行できる。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は当該テンソルデータのアドレスを表す一つのアドレスパラメータを含むことができ、例えば、テンソルデータの開始物理アドレス、テンソルデータの開始アドレス+アドレスオフセット量、または、テンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間におけるアドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータにおける点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータが3次元空間における点または領域の位置にマッピングすることができる。当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
データアクセス過程で記述子を使用することによって、データ間の関連を構築することができて、データアクセスの複雑度を低下させ、命令処理効率を向上させた。
可能な一実現形態において、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレス、前記データ記憶空間のN個の次元方向の少なくとも一つの方向上のサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、及び/又は、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量に基づいて、前記テンソルデータの記述子の内容を確定できる。
図2は、本発明の実施例に係るデータ記憶空間を示す模式図である。図2に示されたように、データ記憶空間21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)はori_x(図示せず)であり、Y軸方向上のサイズ(全行数)はori_y(図示せず)であり、データ記憶空間21の開始アドレスPA_start(基準アドレス)は1番目のデータブロック22の物理アドレスである。データブロック23は、データ記憶空間21における一部のデータであり、X軸方向におけるオフセット量25はoffset_xで表し、Y軸方向におけるオフセット量24はoffset_yで表し、X軸方向におけるサイズはsize_xで表し、Y軸方向におけるサイズはsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点はデータ記憶空間21の1番目のデータブロックを使用でき、記述子の基準アドレスはデータ記憶空間21の開始アドレスPA_startであり、その後、データ記憶空間21のX軸におけるサイズori_x、Y軸におけるサイズori_y、および、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_xおよびY軸方向上のサイズsize_yと組み合わせることによって、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(1)を使用して記述子の内容を表すことができる。
上記の例では記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点のデータ記憶空間における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用して、図2の中のデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびそのデータ記憶空間における基準アドレスPA_baseを確定し、例えば、データ記憶空間21中で一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データのデータ記憶空間における物理アドレスを基準アドレスPA_baseとし、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定できる。例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの対角位置の頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って対角位置の少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定できる。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が示すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用してデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、実行ユニット12は、制御ユニット11によって送信された記述子の内容および第1の処理命令を受信した場合、記述子の内容に基づいて、第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定できる。ここで、データアドレスの計算は、ハードウェアによって自動的に完成され、且つ、記述子の内容の表現方式が異なる場合、データアドレスの計算方法も異なる。本発明は、データアドレスの具体的な計算方法に対して限定しない。
例えば、オペランドにおける記述子の内容が式(1)を使用して表された場合、記述子が示すテンソルデータのデータ記憶空間におけるオフセット量が、それぞれoffset_xおよびoffset_yであり、サイズがsize_x*size_yであると、当該記述子が示すテンソルデータのデータ記憶空間における開始データアドレス
は、以下の式(4)を使用して確定できる。
上記の式(4)によって確定したデータ開始アドレス
に、オフセット量offset_xとoffset_y、および、記憶領域のサイズsize_xとsize_yに基づいて、記述子が示すテンソルデータのデータ記憶空間における記憶領域を確定できる。
可能な一実現形態において、実行ユニット12が制御ユニット11によって送信された記述子の内容および第1の処理命令を受信し、オペランドが記述子のデータ記述位置をさらに含む場合、記述子の内容およびデータ記述位置に基づいて、オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定できる。このような方式によって、記述子が示すテンソルデータにおける一部のデータ(例えば、一つまたは複数のデータ)に対して処理を実行できる。
例えば、オペランドにおける記述子の内容が式(1)を使用して表された場合、記述子が示すテンソルデータのデータ記憶空間におけるオフセット量が、それぞれoffset_xとoffset_yであり、サイズがsize_x*size_yであり、オペランドに含まれた対記述子のデータ記述位置が
であると、当該記述子が示すテンソルデータのデータ記憶空間におけるデータアドレス
は、以下の式(5)を使用して確定できる。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニット11bは、前記ソースデータが第1の記述子の識別子を含み、且つ、前記目的データが第2の記述子の識別子を含む場合、前記記述子記憶空間から前記第1の記述子の内容および前記第2の記述子の内容をそれぞれ取得し、前記第1の記述子の内容、前記第2の記述子の内容、および、前記第1の処理命令を前記実行ユニット12bに送信するために使用され、
ここで、前記実行ユニット12bは、受信された前記第1の記述子の内容および前記第2の記述子の内容に基づいて、前記ソースデータの第1のデータアドレスおよび前記目的データの第2のデータアドレスをそれぞれ取得し、前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むために使用される。
例を挙げると、ソースデータと目的データがいずれも記述子の識別子を含む場合、ソースデータは、オフチップの1グループの読み取り待ちデータであってもよいし、その第1の記述子の識別子は1であり、目的データはオンチップの一つの記憶空間であり、その第2の記述子の識別子は2であってもよい。制御ユニット11bソースデータにおける第1の記述子の識別子1および目的データにおける第2の記述子の識別子2に基づいて、記述子記憶空間から第1の記述子の内容D1および第2の記述子の内容D2をそれぞれ取得し、且つ、第1の記述子の内容D1、第2の記述子の内容D2、および、第1の処理命令を実行ユニット12bに送信できる。ここで、第1の記述子の内容D1および第2の記述子の内容は、それぞれ以下のように表すことができる。
実行ユニット12bは、受信された第1の記述子の内容D1および第1の記述子の内容D2に基づいて、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4をそれぞれ取得して、それぞれ以下のように表すことができる。
実行ユニット12bは、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4、と、第1の記述子の内容D1および第2の記述子の内容D2に基づいて、第1のデータアドレスおよび第2のデータアドレスをそれぞれ確定し、その後、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込む(IOチャンネルを介することができる)ことによって、D1が指すテンソルデータをD2が指す記憶空間にロードすることを完成でき、すなわち、データをオフチップからオンチップへのロードを完成できる。データのオンチップからオフチップへの伝送は上記の過程と類似であり、ここでは繰り返して説明しないことを理解すべきである。
可能な一実現形態において、データロードの際にロードするデータの規模を設定でき、ここで、ロードデータの規模は使用の必要性または記憶空間の大きさに従って設定できる。例えば、使用の必要性に従って、データロードの際に、ロードD1における前の10個のデータを設定できる。本発明は、ロードデータの具体的な規模に対して限定しない。
このような方式によって記述子を使用してデータのアクセスを完成でき、記述子の内容が記述子記憶空間に記憶され、アクセスするたびに命令によってデータアドレスを導入する必要が無くなり、プロセッサのデータアクセス効率を向上させることができる。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニット11bは、前記ソースデータが第3の記述子の識別子を含む場合、前記記述子記憶空間から前記第3の記述子の内容を取得し、前記第3の記述子の内容および前記第1の処理命令を前記実行ユニット12bに送信するために使用され、
ここで、前記実行ユニット12bは、受信された前記第3の記述子の内容に基づいて、前記ソースデータの第3のデータアドレスを取得し、前記第3のデータアドレスからデータを読み取って前記目的データのデータアドレスに書込むために使用される。
例を挙げると、ソースデータと目的データがいずれも記述子の識別子を含む場合、ソースデータは、オフチップの1グループの読み取り待ちデータであってもよいし、その第1の記述子の識別子は3であり、目的データはオンチップの一つの記憶空間である。制御ユニット11は、ソースデータにおける第3の記述子の識別子3に基づいて、記述子記憶空間から第3の記述子の内容D3を取得し、第3の記述子の内容D3および第1の処理命令を実行ユニット12bに送信するために使用される。ここで、第3の記述子の内容D3は、以下のように表すことができる。
実行ユニット12bは、受信された第3の記述子の内容D3に基づいて、ソースデータの開始物理アドレスPA5を取得でき、以下のように表す。
実行ユニット12bは、第1の処理命令における目的データのアドレス情報に基づいて、目的データの開始物理アドレスおよび目標データのデータアドレスを計算できる。例えば、目的データのアドレス情報は、開始アドレス、および、オフセット量の汎用レジスタ番号を含み、まず汎用レジスタをアクセスしてオフセット量を取得してから、開始アドレスとオフセット量とを加算して、目的データの開始物理アドレスを得ることができ、その後、目標データのサイズに基づいて、目的データのデータアドレスを確定できる。
実行ユニット12bは、ソースデータの開始物理アドレスPA5および第3の記述子の内容D3に基づいて、第3のデータアドレスを確定でき、その後、第3のデータアドレスからデータを読み取って目的データのデータアドレスに書込む(IOチャンネルを介することができる)ことによって、D3が指すテンソルデータを目的データの記憶空間にロードすることを完成でき、すなわち、データのオフチップからオンチップへのロードを完成した。データのオンチップからオフチップへの伝送は上記の過程と類似であり、ここでは繰り返して説明しないことを理解すべきである。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニット11bは、前記目的データが第4の記述子の識別子を含む場合、前記記述子記憶空間から前記第4の記述子の内容を取得し、前記第4の記述子の内容および前記第1の処理命令を前記実行ユニット12bに送信するために使用され、
ここで、前記実行ユニット12bは、受信された前記第4の記述子の内容に基づいて、前記目的データの第4のデータアドレスを取得し、前記ソースデータのデータアドレスからデータを読み取って前記第4のデータアドレスに書込むために使用される。
例を挙げると、目的データが記述子の識別子を含む場合、ソースデータは、オフチップの1グループの読み取り待ちデータであり、目的データはオンチップの一つの記憶空間であり、その第4の記述子の識別子は4であってもよい。制御ユニット11bは、目標データにおける第4の記述子の識別子4に基づいて、記述子記憶空間から第4の記述子の内容D4を取得し、第4の記述子の内容D4および第1の処理命令を実行ユニット12bに送信できる。ここで、第4の記述子の内容D4は、以下のように表すことができる。
実行ユニット12bは、受信された第4の記述子の内容D4に基づいて、目標データの開始物理アドレスPA6を取得でき、以下のように表す。
実行ユニット12bは、第1の処理命令におけるソースデータのアドレス情報に基づいて、ソースデータの開始物理アドレスおよびソースデータのデータアドレスを計算でき、例えば、ソースデータのアドレス情報は、開始アドレス、および、オフセット量の汎用レジスタ番号を含み、まず汎用レジスタをアクセスしてオフセット量を取得してから、開始アドレスとオフセット量とを加算して、ソースデータの開始物理アドレスを得ることができ、その後、ソースデータのサイズに基づいて、ソースデータのデータアドレスを確定できる。
実行ユニット12bは、目標データの開始物理アドレスPA6および第4の記述子の内容D4に基づいて、第4のデータアドレスを確定でき、その後、ソースデータのデータアドレスからデータを読み取って第4のデータアドレスに書込む(IOチャンネルを介することができる)ことによって、ソースデータをD4が指す記憶空間にロードすることを完成でき、すなわち、データのオフチップからオンチップへのロードを完成した。データのオンチップからオフチップへの伝送は上記の過程と類似であり、ここでは繰り返して説明しないことを理解すべきである。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、ここで、前記実行ユニットが前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、前記データアドレスからデータを読み取って前記演算命令に対応する演算を実行することを含んでもよい。
例を挙げると、第1の処理命令が演算命令であり、且つ、演算命令のオペランドが記述子識別子を含む場合、制御ユニット11は、記述子の識別子に基づいて、記述子記憶空間から記述子の内容を取得し、記述子の内容をおよび演算命令を実行ユニット12に送信でき、実行ユニット12は、受信された記述子の内容に基づいて、演算待ちデータのデータアドレスを確定し、当該データアドレスから演算待ちのデータを読み取って演算命令に対応する演算を実行する。例えば、演算命令がADD命令であり、そのオペランドが記述子の識別子を含む場合、制御ユニット11は、記述子の識別子に基づいて記述子の内容を取得し、且つ、記述子の内容およびADD命令を実行ユニット12bに送信でき、実行ユニット12bは、記述子の内容に基づいて演算待ちのデータのデータアドレスを確定し、且つ、ADD演算を実行できる。オペランドがオフチップデータである場合、実行ユニット12bは、データアドレスに基づいて、IOチャンネルを介してデータをオンチップにロードでき、その後、オペランドのオンチップにおけるデータアドレスからデータを読み取ってADD操作を実行する。
このような方式によって、記述子を使用してデータの伝送を完成でき、プロセッサのデータアクセス効率を向上させる。
本発明の実施例に係るデータ処理装置によると、データの形状を記述できる記述子を導入することによって、第1の処理命令の運行過程で記述子に基づいてデータのアドレスを確定できるようになって、ハードウェアの観点から命令生成方式が簡略化され、データアクセスの複雑度を低下させ、プロセッサアクセスデータの効率を向上させた。
上記の実施例を例としてデータ処理装置を以上のように説明したが、当業者は本発明がこれに限定されないことを理解できることを説明する必要がある。実際に、ユーザは、本発明の技術案に準拠している限り、完全に個人の好み及び/又は実際の適用シナリオに従って各モジュールを柔軟に設定できる。
図3bは、本発明の実施例に係るデータ処理方法を示すフローチャートである。図3bに示されたように、前記データ処理方法はプロセッサに適用され、前記方法は、以下のステップを含む。
ステップS41b、復号化後の第1の処理命令のオペランドがテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得し、
ステップS42b、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
ステップS43b、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行する。
可能な一実現形態において、ステップS42bは、
前記オペランドが前記記述子に対するデータ記述位置をさらに含む場合、前記記述子の内容および前記データ記述位置に基づいて、前記オペランドに対応するデータの前記データ記憶空間におけるデータアドレスを確定することを含んでもよい。
可能な一実現形態において、前記記述子はN次元のテンソルデータの形状を示すために使用され、Nは正の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、前記基準アドレスは前記データ記憶空間の開始アドレスを含む。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、ステップS41bは、前記ソースデータが第1の記述子の識別子を含み、且つ、前記目的データが第2の記述子の識別子を含む場合、前記記述子記憶空間から前記第1の記述子の内容および前記第2の記述子の内容をそれぞれ取得することを含んでもよく、
ここで、ステップS42bは、前記第1の記述子の内容および前記第2の記述子の内容に基づいて、前記ソースデータの第1のデータアドレスおよび前記目的データの第2のデータアドレスをそれぞれ取得することを含んでもよく、
ここで、ステップS43bは、前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むことを含んでもよい。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、ステップS41bは、前記ソースデータが第3の記述子の識別子を含む場合、前記記述子記憶空間から前記第3の記述子の内容を取得することを含んでもよく、
ここで、ステップS42bは、前記第3の記述子の内容に基づいて、前記ソースデータの第3のデータアドレスを取得することを含んでもよく、
ここで、ステップS43bは、前記第3のデータアドレスからデータを読み取って前記目的データのデータアドレスに書込むことを含んでもよい。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、ステップS41bは、前記目的データが第4の記述子の識別子を含む場合、前記記述子記憶空間から前記第4の記述子の内容を取得することを含んでもよく、
ここで、ステップS42bは、前記第4の記述子の内容に基づいて、前記目的データの第4のデータアドレスを取得することを含んでもよく、
ここで、ステップS43bは、前記ソースデータのデータアドレスからデータを読み取って前記第4のデータアドレスに書込むことを含んでもよい。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、
ここで、ステップS43bは、前記データアドレスからデータを読み取って前記演算命令に対応する演算を実行することを含んでもよい。
可能な一実現形態において、前記方法は、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得ることをさらに含み、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
可能な一実現形態において、前記記述子記憶空間は前記プロセッサの内部メモリにおける記憶空間であり、前記データ記憶空間は前記プロセッサの内部メモリまたは外部メモリにおける記憶空間である。
可能な一実現形態において、人工知能チップをさらに開示し、当該人工知能チップは上記のデータ処理装置を含む。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
図4は、本発明の実施例に係るボードカードの構成を示すブロック図であり、図4を参照すると、上記のボードカードは、上記のチップ389に加えて、他のサポート部品を備えてもよく、当該サポート部品は、記憶デバイス390と、インターフェース装置391と、制御デバイス392と、を含むが、これらに限定されなく、
前記記憶デバイス390は、前記人工知能チップとバスを介して接続され、データを記憶するために使用される。前記記憶デバイスは、複数グループの記憶ユニット393を含んでもよい。各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続される。各グループの前記記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM、ダブルレート同期ダイナミックランダムアクセスメモリ)であってもよいことを理解できる。
DDRは、クロック周波数を上げずにSDRAMの速度を2倍にすることができる。DDRは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。DDRの速度は、標準SDRAMの2倍である。一つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備えてもよい。一つの実施例において、前記人工知能チップの内部は、4個の72ビットDDR4コントローラを備えてもよく、上記の72ビットDDR4コントローラにおける64bitは、データ伝送に使用され、8bitは、ECC検証に使用される。各グループの前記記憶ユニットでDDR4-3200粒子を使用する場合、データ伝送する理論上の帯域幅が25600MB/sに達することを理解できる。
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、一つのクロックサイクルでデータを2回伝送することができる。前記チップにおけるDDRを制御ためのコントローラを配置して、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
前記インターフェース装置は、前記人工知能チップと電気的に接続される。前記インターフェース装置は、前記人工知能チップと外部デバイス(例えば、サーバまたはコンピュータ)との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準PCIEインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準PCIEインターフェースを介して前記チップに伝送されて、データ移送が実現される。好もしくは、PCIE 3.0 X 16インターフェースを使用して伝送する場合、理論上の帯域幅が16000MB/sに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットがにおける継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記人工知能チップの計算結果は、依然として、前記インターフェース装置によって外部デバイス(例えば、サーバ)に伝送し返す。
前記制御デバイスは、前記人工知能チップと電気的に接続される。前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。具体的に、前記人工知能チップは、前記制御デバイスとSPIインターフェース介して電気的に接続できる。前記制御デバイスは、シングルチップマイクロコンピュータ(Micro Controller Unit、MCU)を含んでもよい。前記人工知能チップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。したがって、前記人工知能チップは、複数の負荷や軽負荷などの異なる作業状態にいることができる。前記制御装置によって前記人工知能チップにおける複数の処理チップ、複数の処理、または、複数の処理回路の作業状態に対する調整制御を実現できる。
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記の人工知能チップを含む。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、イヤホーン、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び/又は、医療機器を含む。
前記交通ツールは、飛行機、船、及び/又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、B超音波装置、及び/又は、心電計を含む。
A1、データ処理装置であって、前記装置は、制御ユニットと実行ユニットとを備え、前記制御ユニットは、
復号化後の第1の処理命令のオペランドがテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得し、
前記実行ユニットが前記記述子の内容に基づいて前記第1の処理命令を実行するように、前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信すること。
A2、請求項A1に記載の装置であって、前記実行ユニットは、
受信された記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行するために使用される。
A3、請求項A2に記載の装置であって、受信された記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することは、
前記オペランドが前記記述子に対するデータ記述位置をさらに含む場合、前記記述子の内容および前記データ記述位置に基づいて、前記オペランドに対応するデータの前記データ記憶空間におけるデータアドレスを確定することを含んでもよい。
A4、請求項A1乃至A3の中のいずれか1項に記載の装置であって、前記記述子はN次元のテンソルデータの形状を示すために使用され、Nは正の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A5、請求項A4に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A6、請求項A5に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A7、請求項A6に記載の装置であって、前記基準アドレスは前記データ記憶空間の開始アドレスを含む。
A8、請求項A2乃至A7の中のいずれか1項に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータが第1の記述子の識別子を含み、且つ、前記目的データが第2の記述子の識別子を含む場合、前記記述子記憶空間から前記第1の記述子の内容および前記第2の記述子の内容をそれぞれ取得し、
前記第1の記述子の内容、前記第2の記述子の内容、および、前記第1の処理命令を前記実行ユニットに送信するために使用され、
ここで、前記実行ユニットは、
受信された前記第1の記述子の内容および前記第2の記述子の内容に基づいて、前記ソースデータの第1のデータアドレスおよび前記目的データの第2のデータアドレスをそれぞれ取得し、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むために使用される。
A9、請求項A2乃至A7の中のいずれか1項に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータが第3の記述子の識別子を含む場合、前記記述子記憶空間から前記第3の記述子の内容を取得し、
前記第3の記述子の内容および前記第1の処理命令を前記実行ユニットに送信するために使用され、
ここで、前記実行ユニットは、
受信された前記第3の記述子の内容に基づいて、前記ソースデータの第3のデータアドレスを取得し、
前記第3のデータアドレスからデータを読み取って前記目的データのデータアドレスに書込むために使用される。
A10、請求項A2乃至A7の中のいずれか1項に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記目的データが第4の記述子の識別子を含む場合、前記記述子記憶空間から前記第4の記述子の内容を取得し、
前記第4の記述子の内容および前記第1の処理命令を前記実行ユニットに送信するために使用され、
ここで、前記実行ユニットは、
受信された前記第4の記述子の内容に基づいて、前記目的データの第4のデータアドレスを取得し、
前記ソースデータのデータアドレスからデータを読み取って前記第4のデータアドレスに書込むために使用される。
A11、請求項A2に記載の装置であって、前記第1の処理命令は、演算命令を含み、
ここで、前記実行ユニットが前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、
前記データアドレスからデータを読み取って前記演算命令に対応する演算を実行することを含んでもよい。
A12、請求項A1乃至A11の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得るために使用され、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
A13、請求項A1乃至A12の中のいずれか1項に記載の装置であって、前記記述子記憶空間は、前記制御ユニットの内部メモリにおける記憶空間であり、前記データ記憶空間は、前記制御ユニットの内部メモリまたは前記制御ユニットに接続された外部メモリにおける記憶空間である。
A14、データ処理方法であって、前記方法はプロセッサに適用され、前記方法は、
復号化後の第1の処理命令のオペランドがテンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することと、
前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含んでもよい。
A15、請求項A14に記載の方法であって、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することは、
前記オペランドが前記記述子に対するデータ記述位置をさらに含む場合、前記記述子の内容および前記データ記述位置に基づいて、前記オペランドに対応するデータの前記データ記憶空間におけるデータアドレスを確定することを含んでもよい。
A16、請求項A14またはA15に記載の方法であって、前記記述子はN次元のテンソルデータの形状を示すために使用され、Nは正の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A17、請求項A16に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A18、請求項A17に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A19、請求項A18に記載の方法であって、前記基準アドレスは前記データ記憶空間の開始アドレスを含む。
A20、請求項A14乃至A19の中のいずれか1項に記載の方法であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することは、前記ソースデータが第1の記述子の識別子を含み、且つ、前記目的データが第2の記述子の識別子を含む場合、前記記述子記憶空間から前記第1の記述子の内容および前記第2の記述子の内容をそれぞれ取得することを含み、
ここで、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することは、前記第1の記述子の内容および前記第2の記述子の内容に基づいて、前記ソースデータの第1のデータアドレスおよび前記目的データの第2のデータアドレスをそれぞれ取得することを含み、
ここで、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込むことを含んでもよい。
A21、請求項A14乃至A19の中のいずれか1項に記載の方法であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することは、前記ソースデータが第3の記述子の識別子を含む場合、前記記述子記憶空間から前記第3の記述子の内容を取得することを含み、
ここで、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することは、前記第3の記述子の内容に基づいて、前記ソースデータの第3のデータアドレスを取得することを含み、
ここで、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、前記第3のデータアドレスからデータを読み取って前記目的データのデータアドレスに書込むことを含んでもよい。
A22、請求項A14乃至A19の中のいずれか1項に記載の方法であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することは、前記目的データが第4の記述子の識別子を含む場合、前記記述子記憶空間から前記第4の記述子の内容を取得することを含み、
ここで、前記記述子の内容に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することは、
前記第4の記述子の内容に基づいて、前記目的データの第4のデータアドレスを取得することを含み、
ここで、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、前記ソースデータのデータアドレスからデータを読み取って前記第4のデータアドレスに書込むことを含んでもよい。
A23、請求項A14に記載の方法であって、前記第1の処理命令は、演算命令を含み、
ここで、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することは、
前記データアドレスからデータを読み取って前記演算命令に対応する演算を実行することを含んでもよい。
A24、請求項A14乃至A23の中のいずれか1項に記載の方法であって、前記方法は、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得ることをさらに含み、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。
A25、請求項A14乃至A24の中のいずれか1項に記載の方法であって、前記記述子記憶空間は前記プロセッサの内部メモリにおける記憶空間であり、前記データ記憶空間は前記プロセッサの内部メモリまたは外部メモリにおける記憶空間である。
A26、人工知能チップであって、前記チップは、請求項A1乃至A13におけるいずれか1項に記載のデータ処理装置を備える。
A27、電子デバイスであって、前記電子デバイスは、請求項A26に記載の人工知能チップを備える。
A28、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A26に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A29、請求項A28に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータの次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。図1cは、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は第1のプロセッサに適用でき、当該第1のプロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、第1のプロセッサのタイプに対して限定しない。
図1cに示されたように、当該データ同期方法は、以下のステップを含む。
ステップS11cにおいて、同期待ちのテンソルデータの記述子であって、同期待ちのテンソルデータの形状を示すために使用される記述子に基づいて、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を生成し、
ステップS12cにおいて、第2のプロセッサを指示して前記第2のプロセッサが前記記述子同期命令に基づいて前記同期待ちのテンソルデータを取得するようにするために使用される前記記述子同期命令を、第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例えば、テンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本発明は、記述子がテンソル形状を示す方式に対して限定しないことを説明する必要がある。メモリにテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状を確定できず、さらに複数のテンソルデータ間の相互関係などの関連情報も確定できないので、プロセッサのテンソルデータのアクセス効率が低くなり、データ同期の際の複雑度もより大きい。
この場合、記述子(テンソル記述子)を設定してテンソルデータ(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は、当該3次元のテンソルデータの、三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させることで、データ同期の際の複雑度を低下する。
可能な一実現形態において、データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要がある可能があり、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期する。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、第1のプロセッサはデータ同期の送信側であり、第2のプロセッサはデータ同期の受信側である。同期待ちのテンソルデータが存在する場合、第1のプロセッサは、ステップS11cにおいて当該テンソルデータの記述子に基づいて、記述子同期命令を生成し、ステップS12cにおいて当該記述子同期命令を同期待ちの第2のプロセッサに送信できる。ここで、第2のプロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。第2のプロセッサが第1のプロセッサのタイプ同じまたは異なる、本発明第2のプロセッサに対するタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、第2のプロセッサに対するデータ同期を能動的に開始させることができ、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、当該演算結果を使用する必要がある第2のプロセッサに対するデータ同期を能動的に開始させる。もう一つの例において、第1のプロセッサは、第2のプロセッサの同期要求に応答して、第2のプロセッサに対するデータ同期を開始させてもよく、例えば、第2のプロセッサの同期要求命令を受信した場合、第2のプロセッサに対するデータ同期を開始させてもよい。本発明は、データ同期の開始タイミングに対して限定しない。
可能な一実現形態において、第1のプロセッサは、同期待ちのテンソルデータが存在すると確定した場合、当該テンソルデータの記述子を取得できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、当該テンソルデータの記述子に基づいて、記述子同期命令を生成でき、当該記述子同期命令は前記記述子の識別子及び/又は前記記述子の内容を含む。第2のプロセッサに当該同期待ちのテンソルデータを示す記述子が既に登録されていると、記述子同期命令は記述子の識別子のみを含むことによって(例えば、記述子の識別子がTR1である場合、記述子同期命令をSend TR1で表す)、第2のプロセッサを指示して当該第2のプロセッサが当該記述子の識別子(TR1)に基づいてテンソルデータの同期を実現するようにすることができ、第2のプロセッサに当該同期待ちのテンソルデータを示す記述子が登録されていないと、記述子同期命令は記述子の内容を含むかまたは記述子の識別子と内容の両者を同時に含みことによって、第2のプロセッサを指示して当該第2のプロセッサが当該記述子の内容に基づいてテンソルデータの同期を実現するようにすることができる。本発明は、記述子同期命令に含まれる具体的な内容に対して限定しない。
可能な一実現形態において、記述子同期命令を生成し後、当該記述子同期命令を第2のプロセッサに送信して、第2のプロセッサを指示して当該第2のプロセッサが前記記述子同期命令に基づいて前記同期待ちのテンソルデータを取得するようにすることができる。記述子同期命令が記述子の識別子を含むと、第2のプロセッサは、記述子の識別子に基づいて記述子の内容を取得し、さらに、記述子の内容に基づいて記述子が示すテンソルデータを取得することによって、テンソルデータの同期を実現できる。記述子同期命令が記述子の内容を含むと、第2のプロセッサは、記述子の内容に基づいて記述子が示すテンソルデータを直接取得することによって、テンソルデータの同期を実現できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、データ同期が必要な場合、同期待ちのテンソルデータの記述子に基づいて記述子同期命令を生成して当該命令を第2のプロセッサに送信して、第2のプロセッサを指示して当該第2のプロセッサが記述子同期命令に基づいて同期待ちのテンソルデータを取得するようにすることによって、同期オーバーヘッドを軽減し、データ同期の複雑度を低下させて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定する。
例を挙げると、第1のプロセッサは、第2のプロセッサの同期要求に応答して、第2のプロセッサに対するデータ同期を開始させてもよい。ここで、第2のプロセッサからの記述子同期要求命令は、例えば、当該同期待ちのテンソルデータを示す記述子の識別子、当該同期待ちのテンソルデータのデータ特徴などの、同期待ちのテンソルデータの情報を含んでもよい。ここで、テンソルデータのデータ特徴は、テンソルデータの形状、ソース、アドレスなどの情報を含んでもよく、本発明は、記述子同期要求命令の具体的な内容に対して限定しない。第1のプロセッサは、記述子同期要求命令における情報に基づいて、同期待ちのテンソルデータの記述子を確定し、さらに記述子同期命令を生成できる。
このような方式によって、第2のプロセッサの同期要求に従って同期待ちのテンソルデータの記述子を確定して、記述子同期命令を生成できることによって、不要なデータ同期を回避して、データ同期の効率を向上させた。
可能な一実現形態において、前記記述子同期要求命令は、記述子の識別子を含み、
ここで、前記第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定するステップは、前記記述子同期要求命令を解析して、前記記述子の識別子を得ることと、前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、第1のプロセッサと第2のプロセッサにいずれも当該テンソルデータを示す記述子が既に登録されており、且つ、記述子の識別子が同じであるかまたは対応関係を有すると、記述子同期要求命令は記述子の識別子を含むことができ、例えば、記述子の識別子がTR1である場合、記述子同期要求命令をReceive TR1で表す。第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を解析して、記述子の識別子を得ることができ、さらに記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定して、記述子同期命令を生成できる。
このような方式によって、要求命令における記述子識別子に基づいて同期待ちのテンソルデータの記述子を確定して、テンソルデータの同期を実現することによって、同期の際に伝送するデータ量を軽減し、処理効率を向上させることができる。
可能な一実現形態において、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、
ここで、前記第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定するステップは、前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、第2のプロセッサに当該テンソルデータを示す記述子が登録されていないか、または、当該テンソルデータを示す記述子が既に登録されているが記述子識別子が対応関係を有さないと、記述子同期要求命令は同期待ちのテンソルデータのデータ特徴を含んでもよい。第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることができ、さらに、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータおよびその記述子を確定して、記述子同期命令を生成できる。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、当該データ特徴に基づいて、同期待ちのテンソルデータを検索して、且つ、当該同期待ちのテンソルデータの記述子を確定でき、例えば、直接取得するかまたは対応する記述子を新たに登録する。当該同期待ちのテンソルデータの記述子に基づいて、記述子同期命令を生成して送信することによって、第2のプロセッサを指示して当該第2のプロセッサが当該テンソルデータの同期を実現するようにすることができる。
このような方式によって、要求命令におけるデータ特徴に基づいて同期待ちのテンソルデータの記述子を確定して、テンソルデータの同期を実現することによって、同期の際にテンソルデータ自身を伝送する必要がなく、伝送するデータ量および同期オーバーヘッドを軽減して、処理効率を向上させた。
可能な一実現形態において、前記記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含み、ここで、ステップS11cは、
同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることを含んでもよい。
例を挙げると、複数のプロセッサ(複数のコア)は、例えば、第1のプロセッサと第2のプロセッサがいずれもアクセスできるオフチップメモリなどの、共有記憶空間を有することができる。当該共有記憶空間は、複数のコア(複数のプロセッサ)がいずれもデータをアクセスできるの記憶空間であってもよいし、一部のコア(一部のプロセッサ)がデータをアクセスできる記憶空間であってもよい。コア間の共有記憶空間を予め設定でき、本発明は、共有記憶空間の設定方式に対して限定しない。
可能な一実現形態において、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、第2のプロセッサも共有記憶空間からデータをアクセスできるので、第2のプロセッサは記述子の内容に基づいてテンソルデータを直接読み取って同期を実現できる。この場合、記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含んでもよく、すなわち、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成できる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容を得ることができるし、記述子の内容に基づいて、第2のプロセッサは同期待ちのテンソルデータのデータアドレスを確定し、且つ、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させた。
可能な一実現形態において、ステップS11cは、
前記同期待ちのテンソルデータの記述子の内容を同期データ記憶空間に記憶することと、
前記記述子の内容の前記同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して前記第2のプロセッサが前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するようにすることと、を含んでもよい。
例を挙げると、複数のプロセッサ(複数のコア)は、同期データの記憶専用の、同期データ記憶空間を有することができる。当該同期データ記憶空間は、上記の共有記憶空間であってもよいし、共有記憶空間の一部であってもよいし、共有記憶空間とは異なる記憶空間であってもよく、本発明はこれに対して限定しない。
可能な一実現形態において、同期データ記憶空間は、複数のコア(複数のプロセッサ)がいずれも同期データをアクセスできる記憶空間であってもよく、一部のコア(一部のプロセッサ)が同期データをアクセスできる記憶空間であってもよく、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、同期待ちのテンソルデータの記述子を確定した後、記述子の内容を同期データ記憶空間に記憶し、記述子の内容の同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成して送信することができる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容の記憶アドレスを得ることができ、当該記憶アドレスに基づいて、第2のプロセッサは同期データ記憶空間から同期待ちのテンソルデータの記述子の内容を取得し、さらに記述子の内容に基づいて同期待ちのテンソルデータのデータアドレスを確定して、前記同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、同期の際のプロセッサ間のデータ伝送をもう一層削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、ステップS11cは、
同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、
前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を生成することと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることと、を含む。
例を挙げると、第1のプロセッサは、非共有記憶空間を有してもよく、第1のプロセッサは当該非共有記憶空間におけるデータをアクセスでき、第2のプロセッサは、第1のプロセッサの非共有記憶空間をアクセスできなく、当該非共有記憶空間におけるデータをアクセスできない。同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にあると、第2のプロセッサは当該テンソルデータを直接取得できない。この場合、第1のプロセッサは、同期待ちのテンソルデータを共有記憶空間に転送記憶することによって、第2のプロセッサが当該テンソルデータをアクセスできるようにすることができる。転送記憶を完成した後、第1のプロセッサに、当該同期待ちのテンソルデータを示す記述子が登録されていないか、または、非共有記憶空間における当該テンソルデータを示す記述子が既に登録されており、且つ、当該記述子が変更不可である(例えば、操作されている)と、第1のプロセッサは前記同期待ちのテンソルデータの記述子を生成でき、すなわち、新たな記述子を登録することによって、共有記憶空間における当該テンソルデータを示すことができる。
可能な一実現形態において、記述子を生成した後、第1のプロセッサは、記述子の内容に基づいて記述子同期命令を生成できる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容を得ることができるし、記述子の内容に基づいて、第2のプロセッサは同期待ちのテンソルデータのデータアドレスを確定し、且つ、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、非共有記憶空間における同期待ちのテンソルデータを能動的に共有記憶空間に転送記憶することで、第2のプロセッサが同期待ちのテンソルデータを取得できるようにすることによって、同期の際のプロセッサ間のデータ伝送を削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、ステップS11cは、
同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、
前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を変更することと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることと、を含む。
例を挙げると、上記の記述と類似に、同期待ちのテンソルデータが第1のプロセッサの非共有記憶空間にあると、第1のプロセッサは、同期待ちのテンソルデータを共有記憶空間に転送記憶できる。転送記憶を完成した後、第1のプロセッサに非共有記憶空間における当該テンソルデータを示す記述子が既に登録されており、且つ、当該記述子変更可能である(例えば、記述子が操作されていない)と、第1のプロセッサは同期待ちのテンソルデータの記述子などを直接変更することによって、当該記述子が共有記憶空間における当該テンソルデータを示すようにすることができる。
可能な一実現形態において、記述子を変更した後、第1のプロセッサは、記述子の内容に基づいて記述子同期命令を生成できる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容を得ることができるし、記述子の内容に基づいて、第2のプロセッサは同期待ちのテンソルデータのデータアドレスを確定し、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、非共有記憶空間における同期待ちのテンソルデータを能動的に共有記憶空間に転送記憶することで、同期の際のプロセッサ間のデータ伝送を削減して、同期の処理効率を向上させることができるし、また、第1のプロセッサが新たな記述子を作成する必要がなく、限られた記述子リソースを節約した。
図3c1は、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は、第2のプロセッサに適用できる。図3c1に示されたように、当該データ同期方法は、以下のステップを含む。
ステップS21cにおいて、第1のプロセッサからの記述子同期命令であって、前記記述子同期命令は記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの前記記述子であって、同期待ちのテンソルデータの形状を示すために使用される前記記述子を得、
ステップS22cにおいて、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得する。
例を挙げると、第1のプロセッサ(送信側)は、第2のプロセッサ(受信側)に対するデータ同期を能動的に開始させることができ、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、当該演算結果を使用する必要がある第2のプロセッサに対するデータ同期を能動的に開始させる。
可能な一実現形態において、第2のプロセッサは、第1のプロセッサからの記述子同期命令を受信した場合、当該記述子同期命令を解析して、同期待ちのテンソルデータの記述子(例えば、記述子の識別子及び/又は前記記述子の内容)を得ることができる。
可能な一実現形態において、当該記述子同期命令に記述子の識別子のみが含まれていると、第2のプロセッサは、内部で当該記述子の識別子に対応する記述子の内容を検索し、さらに記述子の内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該記述子同期命令に記述子の識別子と内容が含まれていると、第2のプロセッサ該記述子の識別子に対応する記述子を検索し、記述子同期命令における記述子内容に基づいて、原の記述子内容を更新し、更新後の記述子内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該記述子同期命令に記述子の内容が含まれていると、第2のプロセッサ可記述子の内容に基づいて、当該同期待ちのテンソルデータを示す記述子を登録し、記述子の内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、記述子同期命令における同期待ちのテンソルデータを示す記述子に基づいて、同期待ちのテンソルデータを取得して、テンソルデータの同期を実現できて、同期オーバーヘッドを軽減し、データ同期の複雑度を低下させて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、ステップS22cは、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
例を挙げると、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、第2のプロセッサは共有記憶空間からデータをアクセスできる。この場合、記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含んでもよい。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容を得ることができるし、記述子の内容に基づいて、第2のプロセッサは同期待ちのテンソルデータのデータアドレスを確定し、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させた。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、ステップS22cは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得することと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することと、を含む。
例を挙げると、第1のプロセッサは、同期待ちのテンソルデータの記述子を確定した後、記述子の内容を同期データ記憶空間に記憶し、記述子の内容の同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成して送信することができる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容の記憶アドレスを得ることができ、当該記憶アドレスに基づいて、第2のプロセッサは同期データ記憶空間から同期待ちのテンソルデータの記述子の内容を取得し、さらに記述子の内容に基づいて同期待ちのテンソルデータのデータアドレスを確定して、前記同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、同期の際のプロセッサ間のデータ伝送をもう一層削減して、同期の処理効率を向上させることができる。
図3c2は、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は、第2のプロセッサに適用できる。図3c2に示されたように、当該データ同期方法は、以下のステップを含む。
ステップS31cにおいて、同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが記述子同期要求命令に従って同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すために使用される記述子を送信するようにするために使用される前記記述子同期要求命令を生成し、
ステップS32cにおいて、前記記述子同期要求命令を前記第1のプロセッサに送信する。
例を挙げると、第2のプロセッサに同期待ちのテンソルデータが存在する場合、記述子同期要求命令を能動的に第1のプロセッサに送信することによって、当該同期待ちのテンソルデータを取得できる。第2のプロセッサは、例えば当該同期待ちのテンソルデータを示す記述子の識別子、当該同期待ちのテンソルデータのデータ特徴などの、同期待ちのテンソルデータの情報に基づいて、記述子同期要求命令を生成できる。本発明は、記述子同期要求命令の具体的な内容に対して限定しない。第1のプロセッサは、記述子同期要求命令における情報に基づいて、同期待ちのテンソルデータの記述子を確定し、さらに記述子同期命令を生成できる。
このような方式によって、同期する必要があるときに同期要求を能動的に開始させて、データ同期の効率を向上させることができる。
可能な一実現形態において、第1のプロセッサが同期待ちのテンソルデータを確定できるように、前記記述子同期要求命令は、記述子の識別子及び/又は前記同期待ちのテンソルデータのデータ特徴を含む。ここで、テンソルデータのデータ特徴は、テンソルデータの形状、ソース、アドレスなどの情報を含んでもよい。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記方法は、
第1のプロセッサからの記述子同期命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの記述子を得ることと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、を含む。
例を挙げると、第1のプロセッサと第2のプロセッサにいずれも当該テンソルデータを示す記述子が既に登録されており、且つ、記述子の識別子が同じであるかまたは対応関係を有すると、記述子同期要求命令は記述子の識別子を含むことができ、例えば、記述子の識別子がTR1である場合、記述子同期要求命令をReceive TR1で表す。第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を解析して、記述子の識別子を得ることができ、さらに記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定して、記述子同期命令を生成できる。
可能な一実現形態において、第2のプロセッサは、記述子同期命令を受信した場合、当該記述子同期命令を解析して、同期待ちのテンソルデータの記述子(記述子の識別子及び/又は記述子の内容)を得ることができる。当該記述子同期命令に記述子の識別子のみが含まれていると、第2のプロセッサは、内部で当該記述子の識別子に対応する記述子内容を検索し、さらに記述子内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該記述子同期命令に記述子の識別子と内容が含まれていると、第2のプロセッサは該記述子の識別子に対応する記述子を検索し、記述子同期命令における記述子内容に基づいて、元の記述子内容を更新し、更新後の記述子内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該記述子同期命令に記述子の内容が含まれていると、第2のプロセッサは可記述子の内容に基づいて、当該同期待ちのテンソルデータを示す記述子を登録し、且つ、記述子の内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
このような方式によって、データ同期の複雑度を低下させて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するステップは、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
例を挙げると、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、第2のプロセッサは共有記憶空間からデータをアクセスできる。この場合、記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含んでもよい。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容を得ることができるし、記述子の内容に基づいて、第2のプロセッサは同期待ちのテンソルデータのデータアドレスを確定し、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させた。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するステップは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得することと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することと、を含む。
第1のプロセッサは、同期待ちのテンソルデータの記述子を確定した後、記述子の内容を同期データ記憶空間に記憶し、記述子の内容の同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成して送信することができる。第2のプロセッサは、記述子同期命令を受信した後、命令を解析して記述子の内容の記憶アドレスを得ることができ、当該記憶アドレスに基づいて、第2のプロセッサは同期データ記憶空間から同期待ちのテンソルデータの記述子の内容を取得し、さらに記述子の内容に基づいて同期待ちのテンソルデータのデータアドレスを確定して、前記同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、同期の際のプロセッサ間のデータ伝送をもう一層削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなどにおける記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサに接続された外部メモリ(オフチップメモリ)における記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同じ領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31は記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63は記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023は記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタにおける記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子におけるデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタにおける記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータにおける点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータが3次元空間における点または領域の位置にマッピングされる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
図2は、本発明の一実施例に係るデータ記憶空間を示す模式図である。図2に示されたように、データ記憶空間21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)はori_x(図示せず)であり、Y軸方向上のサイズ(全行数)はori_y(図示せず)であり、データ記憶空間21の開始アドレスPA_start(基準アドレス)は1番目のデータブロック22の物理アドレスである。データブロック23は、データ記憶空間21における一部のデータであり、X軸方向におけるオフセット量25はoffset_xで表し、Y軸方向におけるオフセット量24はoffset_yで表し、X軸方向におけるサイズはsize_xで表し、Y軸方向におけるサイズはsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点はデータ記憶空間21の1番目のデータブロックを使用でき、記述子の基準アドレスはデータ記憶空間21の開始アドレスPA_startであり、その後、データ記憶空間21のX軸におけるサイズori_x、Y軸におけるサイズori_y、および、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_xおよびY軸方向上のサイズsize_yと組み合わせて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(1)を使用して記述子の内容を表すことができる。
上記の例では記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点のデータ記憶空間における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用して、図2におけるのデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびそのデータ記憶空間における基準アドレスPA_baseを確定し、例えば、データ記憶空間21における一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データのデータ記憶空間における物理アドレスを基準アドレスPA_baseとし、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定できる。例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_Min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定できる。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が示すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用してデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
式(1)を使用して記述子の内容を表す場合、テンソルデータにおける任意の一つのデータ点に対して、そのデータ記述位置を(x_q、y_q)に設定すると、当該データ点のデータ記憶空間におけるデータアドレス
は、以下の式(4)を使用して確定できる。
このような方式によって、プロセッサは、記述子の内容に基づいて記述子が示すテンソルデータのデータ記憶空間におけるデータアドレスを計算し、さらに当該アドレスに基づいて対応する処理(例えば、データ演算、データ同期など)を実行することによって、データアクセスの複雑度を低下させて、プロセッサの処理効率を向上させることができる。
図3c3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第1のプロセッサに適用され、図3c3に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの記述子であって、同期待ちのテンソルデータの形状を示すために使用される記述子に基づいて、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を生成するための同期命令生成モジュール51cと、
第2のプロセッサを指示して前記第2のプロセッサが前記記述子同期命令に基づいて前記同期待ちのテンソルデータを取得するようにするために使用される前記記述子同期命令を、第2のプロセッサに送信するための同期命令送信モジュール52cと、を備える。
可能な一実現形態において、前記装置は、第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールをさらに備える。
可能な一実現形態において、前記記述子同期要求命令は、記述子の識別子を含み、ここで、前記第1の記述子確定モジュールは、
前記記述子同期要求命令を解析して、前記記述子の識別子を得るための第1の解析サブモジュールと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の確定サブモジュールと、を備える。
可能な一実現形態において、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、ここで、前記第1の記述子確定モジュールは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための第2の解析サブモジュールと、
同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第2の確定サブモジュールと、を備える。
可能な一実現形態において、前記記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期命令生成モジュールは、
同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第1の生成サブモジュールを備える。
可能な一実現形態において、前記同期命令生成モジュールは、
前記同期待ちのテンソルデータの記述子の内容を同期データ記憶空間に記憶するための第1の記憶サブモジュールと、
前記記述子の内容の前記同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して前記第2のプロセッサが前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するようにするための第2の生成サブモジュールと、を備える。
可能な一実現形態において、前記同期命令生成モジュールは、
同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための第2の記憶サブモジュールと、
前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を生成するための記述子生成サブモジュールと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第3の生成サブモジュールと、を備える。
可能な一実現形態において、前記同期命令生成モジュールは、
同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための第3の記憶サブモジュールと、
前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を変更するための記述子変更サブモジュールと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第4の生成サブモジュールと、を備える。
図3c4は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3c4に示されたように、当該データ同期装置は、
第1のプロセッサからの記述子同期命令であって、前記記述子同期命令は記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの前記記述子であって、同期待ちのテンソルデータの形状を示すために使用される前記記述子を得るための第1の解析モジュール61cと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第1のデータ取得モジュール62cと、を備える。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記第1のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第1のデータ取得サブモジュールを備える。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記第1のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するための第1の内容取得サブモジュールと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第2のデータ取得サブモジュールと、を備える。
図3c5は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3c5に示されたように、当該データ同期装置は、
同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが記述子同期要求命令に従って同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すために使用される記述子を送信するようにするために使用される前記記述子同期要求命令を生成するための要求命令生成モジュール71cと、
前記記述子同期要求命令を前記第1のプロセッサに送信するための要求命令送信モジュール72cと、を備える。
可能な一実現形態において、前記記述子同期要求命令は、記述子の識別子及び/又は前記同期待ちのテンソルデータのデータ特徴を含む。
可能な一実現形態において、前記装置は、
第1のプロセッサからの記述子同期命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの記述子を得るための第2の解析モジュールと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第2のデータ取得モジュールと、を備える。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記第2のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第3のデータ取得サブモジュールを備える。
可能な一実現形態において、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記第2のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するための第2の内容取得サブモジュールと、
前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第4のデータ取得サブモジュールと、を備える。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、同期待ちのテンソルデータの記述子であって、同期待ちのテンソルデータの形状を示すために使用される記述子に基づいて、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を生成することと、第2のプロセッサを指示して前記第2のプロセッサが前記記述子同期命令に基づいて前記同期待ちのテンソルデータを取得するようにするために使用される前記記述子同期命令を、第2のプロセッサに送信することと、を含む。
A2、請求項A1に記載の方法であって、前記方法は、第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定することをさらに含む。
A3、請求項A2に記載の方法であって、前記記述子同期要求命令は、記述子の識別子を含み、ここで、前記第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定することは、前記記述子同期要求命令を解析して、前記記述子の識別子を得ることと、前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含む。
A4、請求項A2に記載の方法であって、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、ここで、前記第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定することは、前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含む。
A5、請求項A1乃至A4の中のいずれか1項に記載の方法であって、前記記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、記述子同期命令を生成することは、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることを含む。
A6、請求項A1乃至A4の中のいずれか1項に記載の方法であって、前記同期待ちのテンソルデータの記述子に基づいて、記述子同期命令を生成することは、前記同期待ちのテンソルデータの記述子の内容を同期データ記憶空間に記憶することと、前記記述子の内容の前記同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して前記第2のプロセッサが前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するようにすることと、を含む。
A7、請求項A1乃至A4の中のいずれか1項に記載の方法であって、前記同期待ちのテンソルデータの記述子に基づいて、記述子同期命令を生成することは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を生成することと、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることと、を含む。
A8、請求項A1乃至A4の中のいずれか1項に記載の方法であって、前記同期待ちのテンソルデータの記述子に基づいて、記述子同期命令を生成することは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を変更することと、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにすることと、を含む。
A9、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、第1のプロセッサからの記述子同期命令であって、前記記述子同期命令は記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの前記記述子であって、同期待ちのテンソルデータの形状を示すために使用される前記記述子を得ることと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、を含む。
A10、請求項A9に記載の方法であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
A11、請求項A9に記載の方法であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得することと、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することと、を含む。
A12、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが記述子同期要求命令に従って同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すために使用される記述子を送信するようにするために使用される前記記述子同期要求命令を生成することと、前記記述子同期要求命令を前記第1のプロセッサに送信することと、を含む。
A13、請求項A12に記載の方法であって、前記記述子同期要求命令は、記述子の識別子及び/又は前記同期待ちのテンソルデータのデータ特徴を含む。
A14、請求項A12またはA13に記載の方法であって、前記方法は、第1のプロセッサからの記述子同期命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの記述子を得ることと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、を含む。
A15、請求項A14に記載の方法であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
A16、請求項A14に記載の方法であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得することと、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することと、を含む。
A17、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、同期待ちのテンソルデータの記述子であって、同期待ちのテンソルデータの形状を示すために使用される記述子に基づいて、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を生成するための同期命令生成モジュールと、第2のプロセッサを指示して前記第2のプロセッサが前記記述子同期命令に基づいて前記同期待ちのテンソルデータを取得するようにするために使用される前記記述子同期命令を、第2のプロセッサに送信するための同期命令送信モジュールと、を備える。
A18、請求項A17に記載の装置であって、前記装置は、第2のプロセッサからの記述子同期要求命令に従って、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールをさらに備える。
A19、請求項A18に記載の装置であって、前記記述子同期要求命令は、記述子の識別子を含み、ここで、前記第1の記述子確定モジュールは、前記記述子同期要求命令を解析して、前記記述子の識別子を得るための第1の解析サブモジュールと、前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の確定サブモジュールと、を備える。
A20、請求項A18に記載の装置であって、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、ここで、前記第1の記述子確定モジュールは、前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための第2の解析サブモジュールと、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第2の確定サブモジュールと、を備える。
A21、請求項A17乃至A20の中のいずれか1項に記載の装置であって、前記記述子同期命令は、同期待ちのテンソルデータの記述子の内容を含み、ここで、前記同期命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第1の生成サブモジュールを備える。
A22、請求項A17乃至A20の中のいずれか1項に記載の装置であって、前記同期命令生成モジュールは、前記同期待ちのテンソルデータの記述子の内容を同期データ記憶空間に記憶するための第1の記憶サブモジュールと、前記記述子の内容の前記同期データ記憶空間におけるアドレスに基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して前記第2のプロセッサが前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するようにするための第2の生成サブモジュールと、を備える。
A23、請求項A17乃至A20の中のいずれか1項に記載の装置であって、前記同期命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための第2の記憶サブモジュールと、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を生成するための記述子生成サブモジュールと、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第3の生成サブモジュールと、を備える。
A24、請求項A17乃至A20の中のいずれか1項に記載の装置であって、前記同期命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための第3の記憶サブモジュールと、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、前記同期待ちのテンソルデータの記述子を変更するための記述子変更サブモジュールと、前記同期待ちのテンソルデータの記述子の内容に基づいて、記述子同期命令を生成することによって、前記第2のプロセッサを指示して、前記第2のプロセッサが前記同期待ちのテンソルデータの記述子の内容に基づいて前記共有記憶空間から前記同期待ちのテンソルデータを取得するようにするための第4の生成サブモジュールと、を備える。
A25、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、第1のプロセッサからの記述子同期命令であって、前記記述子同期命令は記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの前記記述子であって、同期待ちのテンソルデータの形状を示すために使用される前記記述子を得るための第1の解析モジュールと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第1のデータ取得モジュールと、を備える。
A26、請求項A25に記載の装置であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記第1のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第1のデータ取得サブモジュールを備える。
A27、請求項A25に記載の装置であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記第1のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するための第1の内容取得サブモジュールと、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第2のデータ取得サブモジュールと、を備える。
A28、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが記述子同期要求命令に従って同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すために使用される記述子を送信するようにするために使用される前記記述子同期要求命令を生成するための要求命令生成モジュールと、前記記述子同期要求命令を前記第1のプロセッサに送信するための要求命令送信モジュールと、を備える。
A29、請求項A28に記載の装置であって、前記記述子同期要求命令は、記述子の識別子及び/又は前記同期待ちのテンソルデータのデータ特徴を含む。
A30、請求項A28またはA29に記載の装置であって、前記装置は、第1のプロセッサからの記述子同期命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む記述子同期命令を解析して、同期待ちのテンソルデータの記述子を得るための第2の解析モジュールと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第2のデータ取得モジュールと、を備える。
A31、請求項A30に記載の装置であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容を含み、ここで、前記第2のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第3のデータ取得サブモジュールを備える。
A32、請求項A30に記載の装置であって、前記記述子同期命令は、前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含み、ここで、前記第2のデータ取得モジュールは、
前記同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスに基づいて、前記同期データ記憶空間から前記同期待ちのテンソルデータの記述子の内容を取得するための第2の内容取得サブモジュールと、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第4のデータ取得サブモジュールと、を備える。
A33、人工知能チップであって、前記チップは、請求項A17乃至A32の中のいずれか1項に記載のデータ同期装置を備える。
A34、電子デバイスであって、前記電子デバイスは、請求項A33に記載の人工知能チップを備える。
A35、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A33に記載の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置にそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A36、請求項A35に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、処理する必要のあるデータ量とデータの次元とがいずれも継続的に増加している。関連技術において、複数の操作が同じ記憶領域に対して操作を行う場合、前の一つの操作が完了するまで待機してから、後の一つの操作を実行する必要があり、プロセッサの処理効率を低下させた。
本発明の実施例によると、プロセッサ操作方法が提供される。図1d1は、本発明の実施例に係る適用シナリオを示す模式図である。ここで、プロセッサ100は、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)であってもよいし、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサまたはデジタル信号プロセッサなど)であってもよく、本発明は、プロセッサのタイプに対して限定しない。記憶デバイス200は、少なくとも一つの目標記憶領域210を含み、ここで、目標記憶領域210は、記述子が示すテンソルデータの記憶領域であってもよい。プロセッサは、読み取り操作または書き込み操作を実行することで特定の目標記憶領域210に対するアクセスを実現でき、プロセッサが特定の目標記憶領域210に対する読み取り操作を実行することとは、プロセッサが記述子に基づいて当該目標記憶領域210におけるテンソルデータを取得することを意味することができることを理解できる。プロセッサが特定の目標記憶領域210に対する書き込み操作を実行することとは、プロセッサが、記述子が示すテンソルデータを当該目標記憶領域210に書き込むことを意味することができることを理解できる。関連技術において、プロセッサが複数の操作を並行して実行できるため、競合を回避するために、プロセッサが並行して実行する複数の操作がいずれも特定の目標記憶領域210に対する操作である場合、プロセッサは当該複数の操作のにおける一つのみを実行する同時に、他の操作をブロックすることによって、プロセッサの効率が低下される。本発明によって提供されるプロセッサ操作方法は、目標記憶領域210を複数の細粒度領域211にさらに区分けし、プロセッサ並行して実行する複数の操作がいずれも特定の目標記憶領域210に対する操作である場合、プロセッサは、当該複数の操作の対象となる細粒度領域211が重なるか否かを判断し、各操作の対象となる細粒度領域211が重ならないと、当該複数の操作を並行して実行でき、したがって、プロセッサの効率を大幅に向上させた。記憶デバイス200は、プロセッサ内部(例えば、オンチップキャッシュまたはレジスタなど)に配置されてもよいし、プロセッサとデータ通信できるプロセッサの外部(例えば、オフチップメモリなど)に配置されてもよいことを説明する必要がある。本発明は、記憶デバイスのタイプに対して限定しない。本発明に係る操作は、プロセッサハードウェアによってサポートされる基本的な操作であってもよいし、当該基本的な操作を解析した後のマイクロ命令(例えば、要求信号など)であってもよい。本発明は、操作の具体的なタイプに対して限定しない。本発明のプロセッサは、二つの操作を並行して実行してもよいし、二つの以上の操作を並行して実行してもよく、本発明は、並行して実行する操作の数に対して限定しない。
図1d2は、本発明の実施例に係るプロセッサ操作方法を示すフローチャートである。前記プロセッサ操作方法は、プロセッサに適用できる。図1d2に示されたように、当該プロセッサ操作方法は、以下のステップを含む。
ステップS11dにおいて、第1の操作が記述子に対する操作である場合、前記記述子が示すテンソルデータの目標記憶領域を取得する。
第1の操作は、記述子に対する読み取り操作または書き込み操作であってもよい。本発明は、第1の操作の具体的なタイプに対して限定しない。記述子は、テンソルの形状を示すために使用できる。ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例を挙げると、以下のテンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本発明は、記述子がテンソル形状を示す方式に対して限定しないことを説明する必要がある。
可能な一実現形態において、第1の操作のオペランドは、一つまたは複数の記述子であってもよい。目標記憶領域は、第1の操作のオペランドにおける一つまたは複数の記述子が示すテンソルデータの記憶領域であってもよいし、第1の操作のオペランドにおける任意の一つの記述子が示すテンソルデータの記憶空間であってもよい。目標記憶領域が位置する記憶領域全体は、プロセッサの内部メモリ(例えば、オンチップキャッシュまたはレジスタなど)であってもよいし、プロセッサに接続された外部メモリ(例えば、オフチップメモリなど)であってもよい。
可能な一実現形態において、目標記憶領域は、少なくとも一つの細粒度領域を含んでもよい。ここで、細粒度領域のサイズ及び/又は数の確定方式は、ハードウェア設計に基づいて確定する方式、記述子が示すテンソルデータの関連操作に基づいて確定する方式、および、操作における関連パラメータに基づいて定義する方式のにおける一つまたは任意の組み合わせを含んでもよい。ここで、ハードウェア設計に基づいて確定する方式は、ハードウェア設計のときに細粒度領域のサイズを確定し、例えば、目標記憶領域の1行または複数行を一つの細粒度領域として確定する。記述子が示すテンソルデータの関連操作に基づいて確定する方式は、記述子が示すテンソルデータの処理要件、記憶方式、または、伝送方式などに基づいて確定する方式を含み、例えば、記述子が示すテンソルデータが一つの2次元行列データであり、その規模がM*Q(M、Qは、いずれも正の整数である)であると、記憶に占有されるバイト数が、1行Mバイトが合計Q行あることを意味し、Mバイトが一つの細粒度領域であり、当該記述子が示すテンソルデータに対応する目標記憶領域がQ個の細粒度領域を含むと、確定できる。操作における関連パラメータに基づいて定義する方式は、操作における携える細粒度のサイズ及び/又は数に基づいて、目標記憶領域を複数の細粒度領域に区分ける方式を含む。複数の細粒度領域のサイズは同一であってもよいし、互いに異なってもよいことを説明する必要がある。例えば、各細粒度領域のデータビット数は、それぞれ、64ビット、256ビット、512ビットなどであってもよい。要件によって各細粒度領域のサイズ及び/又は数を確定できる。本発明は、これに対して限定しない。
可能な一実現形態において、第1の操作が記述子に対する操作である場合、第1の操作の対象となる記述子に基づいて、当該記述子が示すテンソルデータの目標記憶領域を取得することによって、第1の操作の対象となる目標記憶領域を確定できる。
ステップS12dにおいて、実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断する。
ここで、第2の操作は、読み取り操作または書き込み操作であってもよく、本発明は、第2の操作の具体的なタイプに対して限定しない。第2の操作は、一つまたは複数のオペランドを含んでもよいし、第2の操作のオペランドは、記述子、即時値、テンソルデータなどの様々なデータであってもよく、本発明は、第2の操作のオペランドの具体的な数和タイプに対して限定しない。
可能な一実現形態において、当該目標記憶領域の占用状態に基づいて、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。例えば、プロセッサは、占用状態リストを照会することによって目標記憶領域が占用されているか否かを判断でき、占用されていると、判断結果は、実行されている、目標記憶領域に対する第2の操作が、存在することである。ここで、当該占用状態リストは、予め設定してメモリに記憶したものであってもよいし、プロセッサが特定のタスクを実行する前に生成して、当該タスクが完成された後にログオフするものであってもよい。当各記憶領域の占用状態に変化が発生すると、プロセッサは当該占用状態リストの内容を更新することによって、各記憶領域の占用状態を記録する。
可能な一実現形態において、各操作の実行状態を照会することで、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。例えば、各操作のオペランドに対応する記憶領域を記録し、各操作の実行状態を記録できる。目標記憶領域に対する操作の実行状態が未完成であると、判断結果は、実行されている目標操作領域に対する第2の操作が、存在することである。また、オペランドの占用状態を判断することで、オペランドに対応する目標記憶領域が占用されているか否かを確定することによって、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを確定できる。本発明は、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断するための判断根拠に対して限定しない。
可能な一実現形態において、第2の操作は記述子に対する操作であってもよく、第2の操作の対象となる記述子は第1の操作の対象となる記述子と一致していてもよく、すると、第2の操作の対象となる記述子の記憶領域は目標記憶領域と一致し、第2の操作が完成されていない場合、目標記憶領域に対する第2の操作が存在し、または、第2の操作の対象となる記述子の記憶領域が目標記憶領域と重なる領域があり、第2の操作が重なる領域に対して操作すると、目標記憶領域に対する第2の操作が存在する。
可能な一実現形態において、目標記憶領域に対する第1の操作を実行する前に、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。
可能な一実現形態において、第1の操作の目標記憶領域に対する実行過程で、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。
ステップS13dにおいて、前記第2の操作が存在する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断する。
第1の細粒度領域と第2の細粒度領域は、目標記憶領域における複数の細粒度領域における任意の細粒度領域であってもよい。目標記憶領域が位置する記憶領域全体を細粒度区分けしてもよく、すると、記憶領域全体に対する各操作の対象となる細粒度領域のサイズは一致している。
各操作がオペランドの対象となる記憶領域を各操作に携える細粒度区分け情報に従って細粒度区分けを実行してもよく、すると、同じ記憶領域に対して、異なる操作は異なる粒度の細粒度区分けを実行してもよい。第1の細粒度領域は、第1の操作が目標記憶領域を区分けして得た複数の細粒度領域のにおける任意の細粒度領域であってもよく、第2の細粒度領域は、第2の操作がそのオペランドが位置する記憶領域を細粒度区分けして得た任意の細粒度領域であってもよい。第1の細粒度領域と第2の細粒度領域はサイズが異なってもよい。
例えば、第1の操作は、第1の細粒度のサイズ(各細粒度領域のデータビット数)を携えてもよく、且つ、当該第1の細粒度のサイズを64ビットに設定してもよいし、第2の操作は、第2の細粒度サイズ(例えば、各細粒度領域のデータビット数)を携えてもよく、且つ、当該第2の細粒度のサイズを256ビットに設定してもよい。すなわち、第1の操作を実行するときには、64ビット毎を一つの細粒度領域に設定し、第2の操作を実行するときには、256ビット毎を一つの細粒度領域に設定する。また、例えば、第1の操作と第2の操作が携えた細粒度サイズ(例えば、各細粒度領域のデータビット数)は、いずれも512ビットである。同様に、第1の操作は第1の細粒度の数(例えば、4個に設定する)を携えてもよく、第2の操作は第2の細粒度の数(例えば、8個に設定する)を携えてもよい。すなわち、第1の操作を実行するときには、目標記憶領域を4個の細粒度領域に区分けし、第2の操作を実行するときには、目標記憶領域を8個の細粒度領域に区分けする。操作における細粒度のサイズと数のような二つのパラメータを同時に携えてもよいことを理解できる。要件によって各細粒度領域のサイズ及び/又は数を確定でき、本発明は、これに対して限定しない。
目標記憶領域に対する操作が目標記憶領域における各細粒度領域に対する操作であることを理解できる。例えば、目標記憶領域Aは、第1行から第10行まで、各々の1行は、一つの細粒度領域であり、目標記憶領域Aは、10個の細粒度領域を含む。目標記憶領域Aに対する書き込み操作を、これらの10個の細粒度領域に対する書き込み操作として見なることができる。その実行過程は、1番目の細粒度領域(第1行)を書き込み、1番目の細粒度領域の書き込みを完成した後、2番目の細粒度領域(第2行)を書き込み、2番目の細粒度領域の書き込みを完成した後、3番目の細粒度領域(第3行)を書き込み、等々、10番目の細粒度領域(第10行)の書き込みを完成して、目標記憶領域Aの書き込み操作を完成する。
目標記憶領域に対する操作がある場合、操作の実行に伴い、目標記憶領域における細粒度領域の状態は、操作が既に完成された状態、操作されている状態、および、操作されていない状態を含んでもよい。操作の現在の対象となる細粒度領域の状態は、操作されている状態である。したがって、目標記憶領域に対する操作が存在すると、目標記憶領域における一つの細粒度領域に対する操作が存在し、操作されている細粒度領域が操作の現在の対象となる細粒度領域であると見なすことができる。
可能な一実現形態において、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域は、実行しようとする、第1の操作の対象となる目標記憶領域における細粒度領域を含んでもよく、通常、1番目の細粒度領域である。実行されている、第1の操作の現在の対象となる目標記憶領域における細粒度領域を含んでもよく、任意の一つの細粒度領域であってもよい。第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域は、実行されている、第2の操作の現在の対象となる目標記憶領域における細粒度領域であってもよく、任意の一つの細粒度領域であってもよい。
可能な一実現形態において、物理アドレス、ポインター位置、細粒度領域識別子などに基づいて、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域と第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域との間が重なるか否かを判断できる。例えば、各操作の現在の物理アドレスを記録し、第1の操作の現在の物理アドレスと第2の操作の現在の物理アドレス、および、物理アドレスと細粒度領域との間の対応関係に基づいて、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域および第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域をそれぞれ確定し、さらに第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。物理アドレスは、細粒度領域の開始アドレス、終了アドレス、設定位置アドレス、または、リアルタイム操作アドレスのにおける一つまたは任意の組み合わせを含んでもよい。また、例えば、各操作に対してポインターを設定し、ポインターが操作の現在の対象となる細粒度領域を指してもよい。第1の操作のポインター位置および第2の操作のポインター位置に基づいて、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域および第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域をそれぞれ確定し、さらに、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。また、例えば、各細粒度領域に対して識別子を設定し、操作の現在の対象となる細粒度領域の識別子を記録することによって第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断してもよい。識別子は、文字、数字、または、記号の任意の組み合わせを含んでもよい。他の方式によっても第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断でき、本発明は、第1の細粒度領域と第2の細粒度領域との間が重なるか否かの判断根拠に対して限定しない。
ステップS14dにおいて、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行する。
可能な一実現形態において、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域と第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域とが重ならないと、第1の細粒度領域は、第2の操作が既に操作を完成した細粒度領域であってもよいし、第2の操作が操作する必要がない細粒度領域であってもよく、この場合、第1の操作の実行は第2の操作の操作過程および操作結果に影響を発生しなく、第1の操作を実行できる。
本実施例によると、第1の操作が記述子に対する操作である場合、記述子が示すテンソルデータの目標記憶領域を取得し、且つ、実行されている目標記憶領域に対する第2の操作が存在する場合、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域と第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域との間が重なるか否かを判断し、両者が重ならないと、第1の操作を実行することができる。このように、第1の操作と第2の操作の現在操作する細粒度領域が重ならなければ実行できて、第1の操作と第2の操作が同時に目標記憶領域に対して操作を実行することができるようにして、プロセッサの処理効率を向上させた。
可能な一実現形態において、前記方法は、前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックすることをさらに含んでもよい。
可能な一実現形態において、第1の細粒度領域と第2の細粒度領域とが重なることは、第1の細粒度領域と第2の細粒度領域とが完全に重なることまたは一部重なることを含む。第1の細粒度領域と第2の細粒度領域とが重なる場合、第1の操作を実行すると、第1の操作の重なる一部の領域に対する操作が、第2の操作の実行に影響を及ぼして第2の操作の操作結果が正確にならない可能があり、第1の操作の実行にも影響を及ぼして第1の操作の操作結果が正確にならない可能もある。この場合、第1の操作をブロックし、すなわち第1の操作の実行を一時停止させることができ、第2の操作の、現在の対象となる目標記憶領域における第2の細粒度領域に対する操作が完成された後、第1の操作を実行できる。つまり、第1の細粒度領域と第2の細粒度領域とが重ならないときに、第1の操作を実行する。
本実施例において、第1の細粒度領域と第2の細粒度領域とが重なる場合、第1の操作をブロックすることによって、各操作の細粒度領域が重なることで発生する操作の誤りを回避し、操作結果の不正確を回避して、各操作の正確性を保証できる。
図5aと図5bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図5aと図5bに示されたように、記憶領域全体20dは、目標記憶領域21dを含み、ここで、目標記憶領域21dは、4個の細粒度領域に区分けされ、順に、細粒度領域22d、細粒度領域23d、細粒度領域24d、および、細粒度領域25dである。
図5aに示されたように、現在書き込み操作のみを含み、書き込みポインターwpで書き込み操作の現在の対象となる目標記憶領域21dにおける細粒度領域を表す。書き込み操作が開始されたばかりのときに、書き込みポインターwpは細粒度領域22dを指し、まず、実行されている目標記憶領域21dに対する第2の操作が存在するか否かを判断し、判断結果が第2の操作が存在しないことであると、細粒度領域22dに対する書き込み操作を開始し、細粒度領域22dに対する書き込み操作を完成した後に、書き込みポインターwpを増加させ、すなわちwp++させて、次の一つの細粒度領域23dを指すようにして、同様の判断を行った後に、細粒度領域23dに対する書き込み操作を開始し、細粒度領域23dに対する書き込み操作を完成した後にした、書き込みポインターwpを増加させて、次の一つの細粒度領域24dを指すようにして、同様の判断を行った後に、細粒度領域24dに対する書き込み操作を開始する。
また、図5bに示されたように、現在、読み取り操作と書き込み操作のような二つの操作を含み、ここで、読み取り操作は第1の操作であり、書き込み操作は第2の操作である。また、書き込み操作の書き込みポインターwpと読み取り操作の読み取りポインターrpを使用して、書き込み操作と読み取り操作との現在の対象となる細粒度領域をそれぞれ表す。
読み取り操作(第1の操作)を実行する場合、実行されている目標記憶領域21dに対する第2の操作が存在するか否かを判断する。判断した結果、現在実行されている目標記憶領域21dに対する第2の操作書き込み操作が存在すると、さらに、読み取り操作(第1の操作)の現在の対象となる目標記憶領域21dにおける第1の細粒度領域(図5bにおける細粒度領域22d)と書き込み操作(第2の操作)の現在の対象となる目標記憶領域21dにおける第2の細粒度領域(図5bにおける細粒度領域24d)との間が重なるか否かを判断し、例えば、細粒度領域の番号(22dおよび24d)、または、rpとwpとの間の関係(rp=0、wp=2、rp<wp)に基づいて、第1の細粒度領域と第2の細粒度領域との間が重ならないと確定し、その後、読み取り操作(第1の操作)を実行できる。
細粒度領域22dに対する読み取り操作を完成した後、rpを増加させ、すなわちrp++させて、次の一つの細粒度領域23dを指すようにして、同様の判断を行った後に、第1の操作は細粒度領域23dに対する操作を開始し、細粒度領域23dに対する読み取り操作を完成した後に、rpを増加させて次の一つの細粒度領域24dを指すようにする。この場合、第1の細粒度領域と第2の細粒度領域との間が重なるか否かを続けて判断し、細粒度領域番号が同じかまたはポインターrp=wpであると、第1の操作の現在の対象となる目標記憶領域21dにおける第1の細粒度領域と第2の操作の現在の対象となる目標記憶領域21dにおける第2の細粒度領域とが重なると判断でき、すると、第1の操作を実行できなく、第1の操作をブロックする。第2の操作が細粒度領域24dに対する操作を完成した後に、wpが増加され、次の一つの細粒度領域25dを指すと、細粒度領域の番号が異なり(24dと25d)、または、ポインターrp<wpであり、第1の操作を実行できる。
可能な一実現形態において、前記第1の操作および前記第2の操作の中で少なくとも一つの操作が書き込み操作であってもよい。すなわち、オペランドに対する操作が、書き込みの後の読み取り(第2の操作が書き込み操作であり、第1の操作が読み取り操作である)、読み取りの後の書き込み(第2の操作が読み取り操作であり、第1の操作が書き込み操作である)、または、書き込みの後の書き込み(第2の操作と第1の操作いずれもが書き込み操作である)の場合、本発明の実施例における方法を使用できる。
例えば、第1の操作が記述子に対する読み取り操作であり、第2の操作が書き込み操作であると、第1の操作が読み取る必要がある記述子が示すテンソルデータは第2の操作の書き込み操作後のデータが必要であり、第2の操作の対象となる目標記憶領域における第2の細粒度領域の番号が8であると、第1の操作は番号が8前の細粒度領域のデータのみを読み取ることができる。つまり、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域が番号1~7の細粒度領域における任意の一つであると、第1の操作を実行できる。
可能な一実現形態において、第1の操作と第2の操作がいずれもが読み取り操作であると、第1の操作と第2の操作の細粒度領域間の関係は操作結果に影響を及ぼさなく、本発明の実施例における方法を使用でき、細粒度領域の判断せずに第1の操作を直接実行してもよい。
本実施例において、第1の操作および第2の操作の中の少なくとも一つの操作が書き込み操作である場合、本発明の実施例の中の方法を使用することで、記述子が示すテンソルデータの目標記憶領域を一つまたは複数の細粒度領域に区分けし、且つ、細粒度領域を単位にして操作を実行することによって、読み取りの後の書き込み、書き込みの後の読み取り、書き込みの後の書き込みなどの操作が正確に実行して、正確な実行結果を得ることができるだけでなく、操作間の待機時間を短縮して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定できる。
前記細粒度領域のサイズ及び/又は数の確定は、操作が生成される前に予め設定されてよいし、各操作が生成されるときにリアルタイムに確定されてもよいことを理解できる。ここで、操作の前に細粒度領域のサイズ及び/又は数を予め設定することは、予め設定された長さのデータが位置する領域、および、予め設定された次元のデータが位置する領域の中の少なくとも一つに基づいて、細粒度領域のサイズ及び/又は数を確定することを含んでもよい。設定長さのデータ和予め設定された次元のデータは、各操作のオペランドとかんけいなくてもよいし、事前に各操作のオペランドに基づいて総合的に確定してもよく、要件に従って確定できる。各操作が生成されるときに細粒度領域のサイズ及び/又は数をリアルタイムに確定することは、各操作のオペランドに基づいて設定長さのデータまたは設定次元のデータを確定することを含んでもよく、すなわち、各操作の異なるオペランドに基づいて、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つをリアルタイムに確定して、細粒度領域のサイズ及び/又は数を確定することを含んでもよい。
例を挙げると、設定長さのデータが位置する領域の大きさに基づいて、細粒度領域のサイズ及び/又は数を確定できる。例えば、記述子が示すテンソルデータにおける設定長さのデータが位置する目標記憶領域のサイズに基づいて、細粒度領域のサイズを設定でき、当該領域は固定のビット幅であってもよい。例えば、記述子が示すテンソルデータBが20*10*5の3次元データであり、目標記憶領域における記憶方式が40*25(すなわち、各行が40ビットのデータであり、合計25行である)であると、設定長さを40ビットに設定し、目標記憶領域の各行を一つの細粒度領域に設定し、記述子が示すテンソルデータBの目標記憶領域を25個の細粒度領域に区分けしてもよいし、標記憶領域の5行毎を一つの細粒度領域に設定し、記述子が示すテンソルデータBの目標記憶領域を5個の細粒度領域に区分けしてもよい。本発明はこれに対して限定しない。
設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて、目標記憶領域で細粒度領域のサイズ及び/又は数を確定してもよいし、目標記憶領域が位置する記憶領域全体で細粒度領域のサイズ及び/又は数を確定してもよいし、或いは、記憶領域全体における他の領域で細粒度領域のサイズ及び/又は数を確定してもよいことを理解できる。上記の例はそのにおける一つの状況のみを示したが、本発明は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて、細粒度領域のサイズ及び/又は数を確定する適用区分範囲を限定しない。
可能な一実現形態において、さらに、設定次元数のデータが位置する領域の大きさに基づいて、細粒度領域のサイズ及び/又は数を確定できる。例えば、記述子が示すテンソルデータCが20*10の2次元データであると、設定次元数が1次元であり、長さが20であるデータによって、記述子が示すテンソルデータCの目標記憶領域を10個の細粒度領域に区分けすることができる。
なお、記述子が示すテンソルデータの目標記憶領域における設定長さのデータが位置する領域の大きさ、および、設定次元のデータが位置する領域の大きさに同時に基づいて、細粒度領域のサイズ及び/又は数を確定してもよい。例えば、記述子が示すテンソルデータCに対して、設定次元数が2次元であり、サイズが4*2であるデータによって、細粒度領域を区分けして、記述子が示すテンソルデータCの目標記憶領域を25個の細粒度領域に区分けしてもよい。
当業者は、実際の状況に従って細粒度領域のサイズ及び/又は数を設定して区分けすることができ、本発明はこれに対して限定しないことを理解すべきである。
本実施例において、設定長さのデータが位置する領域の大きさ及び/又は設定次元のデータが位置する領域の大きさに基づいて、前記細粒度領域のサイズ及び/又は数を確定することによって、データ特性に対して細粒度領域に対する区分けを完成して、細粒度領域区分けの柔軟性を向上させて、複数の操作を実行する効率を向上させることができ、また、細粒度領域の区分け結果が異なるオペランドの特性にもう一層合致するようにして、異なるタイプのオペランドの処理要件に適応させて、複数の操作全体の実行効率をさらに向上させることができる。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定されてもよい。
ここで、ハードウェア計算能力は、ハードウェアの一つの計算サイクルで並行して処理するデータ量であってもよく、ハードウェア帯域幅は、データ伝送能力であってもよく、例えば、単位時間あたりに伝送するデータ量である。
例を挙げると、当該プロセッサ操作方法を適用するプロセッサは、そのハードウェア計算能力が一つの計算サイクルで100ビットのデータを並行して処理し、ハードウェア帯域幅が単位時間あたりに200ビットのデータを伝送することであると、大きさが1000ビットである目標記憶領域に対して、ハードウェア計算能力に基づいて当該目標記憶領域を10個の細粒度領域に区分けしてもよいし、ここで、各々の細粒度領域は100ビットのデータを含み、または、ハードウェア帯域幅に基づいて当該目標記憶領域を5個の細粒度領域に区分けしてもよく、ここで、各々の細粒度領域は200ビットのデータを含む。
ハードウェア計算能力およびハードウェア帯域幅は、プロセッサハードウェアによって異なり、本発明は、ハードウェア計算能力およびハードウェア帯域幅に対して限定しないことを理解すべきである。
ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、目標記憶領域で細粒度領域のサイズ及び/又は数を確定してもよいし、目標記憶領域が位置する記憶領域全体で細粒度領域のサイズ及び/又は数を確定してもよいし、或いは、記憶領域全体における他の領域で細粒度領域のサイズ及び/又は数を確定してもよいことを理解できる。上記の例はその中の一つの状況のみを示したが、本発明は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、細粒度領域のサイズ及び/又は数を確定する適用区分範囲に対して限定しない。
このような方式によって、プロセッサの処理能力(ハードウェア計算能力及び/又はハードウェア帯域幅)に基づいて前記細粒度領域のサイズ及び/又は数を確定できて、細粒度領域の区分け結果が異なるハードウェア使用環境の要件にもう一層合致するようにして、細粒度領域を使用して実行する操作とプロセッサの処理能力とを同期して、ハードウェアの実行効率を最大限に発揮して、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記第1の操作は、第1の処理命令における操作であってもよく、前記第2の操作は、第2の処理命令における操作であってもよく、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令であってもよい。
ここで、第1の処理命令と第2の処理命令は、データアクセス命令、演算命令、同期命令、および、通信命令などの一つまたは複数を含んでもよく、例えば、当該命令は読み取りおよび演算命令である。本発明は、第1の処理命令と第2の処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、第1の命令は、第2の命令と依存関係を有してもよく、例えば、第1の命令が第2の命令の計算結果を使用する必要があるような依存関係を有する。第1の命令は、第2の命令と依存関係を有さないでもよい。第1の命令が第2の命令と依存関係を有する場合、本発明の実施例における方法によって、第1の命令と第2の命令と並行して実行できる。
本実施例において、第1の操作と第2の操作は、異なる命令における操作であり、本発明の実施例の中の方法を利用すると、命令実行効率を向上させることができる。
可能な一実現形態において、第1の操作と第2の操作は、同じ処理命令における二つの操作であってもよく、第2の操作は第1の操作と関係ないでもよいし、または、第2の操作は第1の操作の結果に基づく操作であってもよい。ここで、当該処理命令は、データアクセス命令、演算命令、同期命令、および、通信命令などの一つまたは複数を含んでもよく、例えば、当該命令が「読み取りと加算」演算命令であると、第1の操作が読み取り操作であり、第2の操作が加算演算操作である。本発明は、当該処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、前記方法は、前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録することを含んでもよく、
ステップS14dは、前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することを含んでもよい。
可能な一実現形態において、位置情報は、細粒度領域の識別子情報を含んでもよい。識別子情報は、数字、文字、および、記号の任意の組み合わせを含んでもよい。本発明は、これに対して限定しない。
例えば、位置情報は、細粒度領域の番号情報を使用して表し、目標記憶領域を6個の細粒度領域に区分けすることができ、その番号は順に0~5である。目標記憶領域に対する第1の操作と第2の操作を実行する場合、第1の操作の現在操作している第1の細粒度領域の第1の位置情報(例えば、番号が2である)、および、第2の操作の現在操作している第2の細粒度領域の第2の位置情報(例えば、番号が5である)をそれぞれ記録し、その後、番号情報間の関係(2<5)に基づいて、第1の位置情報と第2の位置情報とが不一致することが分かり、この場合、第1の操作を実行できる。
可能な一実現形態において、位置情報は、細粒度領域のアドレス情報を含んでもよい。アドレス情報は、細粒度領域の開始アドレス情報、終了アドレス情報、細粒度領域における予め設定された位置アドレス情報、および、アドレスオフセット量情報のにおける少なくとも一つを含んでもよい。例えば、細粒度領域の位置情報は、ADDR1515~ADDR1531である。
このような方式によって、位置情報を使用して第1の細粒度領域と第2の細粒度領域とが重なるか否かを直接効率的に判断して、第1の操作を実行するか否かを確定し、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含んでもよく、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含んでもよい、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することは、前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行することを含んでもよい。
例を挙げると、第1の操作が第2の操作の後の操作であり、その目標記憶領域が6個の細粒度領域に区分けされ、その位置情報を既に操作を完成した細粒度領域の数を使用して表すことができる。目標記憶領域に対する第1の操作と第2の操作を実行する場合、第1の操作の既に操作を完成した細粒度領域の第1の数(例えば、第1の数は3である)、および、第2の操作の既に操作を完成した細粒度領域の第2の数(例えば、第2の数は5である)をそれぞれ記録し、その後、第1の操作と第2の操作の実行順序、および、第1の数と第2の数の関係に基づいて、第1の操作が第2の操作の後の操作であり、且つ、第1の数である3が第2の数である5よりも小さいことが分かり、この場合、第1の操作を実行できる。
このような方式によって、既に操作を完成した細粒度領域の数に基づいて第1の細粒度領域と第2の細粒度領域とが重なるか否かを直感的に判断し、さらに第1の操作を実行するか否かを確定できて、判断過程を簡略化して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記目標記憶領域は、操作可能領域および操作不可領域を含んでもよく、ステップS13dは、前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断することを含んでもよい。
可能な一実現形態において、目標記憶領域は、一つまたは複数の操作不可領域を含んでもよいし、連続的または不連続な操作不可領域を含んでもよい。
可能な一実現形態において、目標記憶領域は、一つまたは複数の操作可能領域を含んでもよいし、連続的または不連続な操作可能領域を含んでもよい。本発明は、これに対して限定しない。
可能な一実現形態において、第1の操作が記述子に対する操作である場合、まず記述子が示すテンソルデータの目標記憶領域を取得し、その後、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断し、第2の操作が存在する場合、第1の操作の対象となる目標記憶領域における第1の細粒度領域が操作可能領域内に位置するか否かを判断し、第2の操作が存在し、且つ、第1の操作の対象となる目標記憶領域における第1の細粒度領域が操作可能領域内に位置する場合、その後に、第1の操作の対象となる目標記憶領域における第1の細粒度領域と第2の操作の対象となる目標記憶領域における第2の細粒度領域との間が重なるか否かを判断し、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行できる。
可能な一実現形態において、前記操作不可領域は、操作禁止領域および操作非禁止領域を含んでもよい。第1の操作が記述子に対する書き込み操作であり、記述子が示すテンソルデータにおける一部のデータが変更不可である場合、当該一部のデータが位置する記憶領域を操作禁止領域に設定して、当該一部のデータを誤って変更することを回避し、実行されている第2の操作が第1の操作の前のデータを読み取る読み取り操作(読み取りの後の書き込み)であると、第2の操作が位置する一つまたは複数の細粒度領域を操作非禁止領域に設定し、第2の操作が操作非禁止領域に対する読み取りを完成した後、当該操作非禁止領域を操作可能領域に変更できる。本発明は、操作不可領域の分類および区分け方式に対して限定しない。
本実施例において、まず、第1の操作の細粒度領域が操作できるか否かを判断してから、異なる操作の細粒度領域間の関係を判断し、一方では判断の効率を向上させ、もう一方では指定されたデータを保護して誤操作の発生を防止でき、指定された空間に対する書き込みを禁止することで、当該空間を予め用意して、他の操作に実行に使用することによって、プロセッサが細粒度同期を実行する際の柔軟性をさらに向上させることができる。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は前記第2の操作の操作位置に従って更新され、前記方法は、前記第2の操作の対象となる前記目標記憶領域における第2の細粒度領域が前記操作不可領域から移動して出た後に、前記操作不可領域の位置を更新することをさらに含んでもよい。
つまり、第2の細粒度領域を含む複数の細粒度領域の操作不可領域は、第2の操作の対象となる目標記憶領域における第2の細粒度領域の更新に従って更新されなくてもよく、第2の操作の対象となる目標記憶領域における第2の細粒度領域が操作不可領域から移動して出た後に、操作不可領域の位置を更新してもよい。例えば、操作不可領域は、前記第2の細粒度領域を含むR個の細粒度領域(Rは1よりも大きい整数である)であり、現在の操作不可領域は2番目~2+R-1番目の細粒度領域であってよい。第2の操作が操作不可領域でR個の細粒度領域の実行を完成した後に、操作不可領域から移動して出ると、操作不可領域の位置は第2の操作の対象となる細粒度領域の位置に従って更新され、更新後の操作不可領域は2+R番目~2+R+R-1番目の細粒度領域を含む。ここで、Rの大きさは、要件に従って任意に確定できる。
図6aと図6bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図6aに示されたように、目標記憶領域30dは、8個の細粒度領域を含み、ここで、操作可能領域は、5個の細粒度領域(細粒度領域31d、細粒度領域35d、細粒度領域36d、細粒度領域37d、および、細粒度領域38d)を含み、操作不可領域M0は、3個の細粒度領域(細粒度領域32d、細粒度領域33d、および、細粒度領域34d)を含む。ここで、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域は、細粒度領域32dである。
第2の操作が細粒度領域32dに対する操作の実行を完成した後、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域は細粒度領域33dであり、このとき、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域(細粒度領域33d)が操作不可領域から移動して出なく、操作不可領域の位置を更新しないし、第2の操作が細粒度領域33dに対する操作の実行を完成した後、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域は細粒度領域34dであり、このとき、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域(細粒度領域34d)が操作不可領域から依然として移動して出なく、操作不可領域の位置を更新しないし、第2の操作が細粒度領域34dに対する操作の実行を完成した後、第2の操作の現在の対象となる目標記憶領域30における第2の細粒度領域は細粒度領域35dであり、このとき、第2の操作の現在の対象となる目標記憶領域30dにおける第2の細粒度領域(細粒度領域35d)は操作不可領域から既に移動して出たから、操作不可領域の位置を細粒度領域35d、36d、および、37d)に更新する。本発明は、操作不可領域の大きさに対して限定しないことを説明する必要がある。
図6bに示されたように、操作不可領域の位置を更新した後、目標記憶領域30dにおいて、操作可能領域は、5個の細粒度領域(細粒度領域31d、細粒度領域32d、細粒度領域33d、細粒度領域34d、および、細粒度領域38d)を含み、操作不可領域M0は、3個の細粒度領域(細粒度領域35d、細粒度領域36d、および、細粒度領域37d)を含む。
このような方式によって、操作不可領域の位置をリアルタイムに更新する必要がなく、操作不可領域の更新によって発生されるオーバーヘッドを削減できる。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新されてもよい。
つまり、操作不可領域が前記第2の細粒度領域を含む複数の細粒度領域である場合、第2の細粒度領域の操作不可領域における位置(例えば、中間位置、最後位置など)を設定し、操作不可領域の位置が第2の操作の操作位置に従って更新されてもよい。例えば、操作不可領域は、前記第2の細粒度領域を含むR個の細粒度領域であり、現在の操作不可領域は2番目~2+R-1番目の細粒度領域であり、第2の細粒度領域の操作不可領域内の設定位置がS番目(ここで、S≦Rである)であってもよい。第2の操作が現在の対象となる細粒度領域に対する操作の実行を完成した後、第2の操作は次の一つの細粒度領域に対する操作の実行を開始し、このとき、操作不可領域の位置が第2の操作の操作位置に従って更新され、更新後の操作不可領域は2+1番目~2+R番目の細粒度領域を含む。ここで、Rの大きさおよびSの値は、要件に従って確定できる。本発明は、操作不可領域が含む細粒度領域の数、および、第2の細粒度領域の操作不可領域内での位置に対していずれも限定しない。
図7aと図7bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図7aに示されたように、目標記憶領域40は、8個の細粒度領域を含み、ここで、操作可能領域は、5個の細粒度領域(細粒度領域41、細粒度領域45、細粒度領域46、細粒度領域47、および、細粒度領域48)を含み、操作不可領域M1は、3個の細粒度領域(細粒度領域42、細粒度領域43、および、細粒度領域44)を含む。ここで、第2の操作の現在の対象となる目標記憶領域40における第2の細粒度領域設定を操作不可領域M1に位置する2番目の細粒度領域に設定し、つまり、細粒度領域43に設定する。
第2の操作が細粒度領域43に対する操作の実行を完成した後、第2の操作の現在の対象となる目標記憶領域40における第2の細粒度領域は細粒度領域44であり、このとき、操作不可領域の位置が第2の操作の操作位置に従って更新されて、第2の操作の現在の対象となる目標記憶領域40における第2の細粒度領域が操作不可領域M1の2番目の細粒度領域に位置するようにする。
図7bに示されたように、操作不可領域の位置を更新した後、目標記憶領域40において、操作可能領域は、5個の細粒度領域(細粒度領域41、細粒度領域42、細粒度領域46、細粒度領域47、および、細粒度領域48)を含み、操作不可領域M1は、3個の細粒度領域(細粒度領域43、細粒度領域44、および、細粒度領域45)を含む。
このような方式によって、操作不可領域の位置をリアルタイムに更新して、細粒度処理の同期程度を向上させ、データ同期処理の効率をさらに向上させることができる。
可能な一実現形態において、前記目標記憶領域は、循環バッファ記憶領域を含んでもよい。前記循環バッファ記憶領域は、データの循環記憶のために使用できる。
図8は、本発明の実施例に係るプロセッサ操作方法を示す循環バッファ記憶領域の模式図である。図8に示されたように、目標記憶領域50は、循環バッファ記憶領域51を含み、そのアドレスは、start_addr~end_addrである。
例えば、第2の操作は、書き込み操作であり、オペランドを循環バッファ記憶領域51に書き込むことができ、そのアドレスポインターpointは、開始アドレスstart_addrから始めて、終了アドレスend_addrまで、順に、下へデータを記憶し、すなわち、循環バッファ記憶領域51の記憶空間を完全に埋め、このとき、アドレスポインターpointは、start_addrにジャンプして戻って、当該アドレスが同期する必要がある第1の操作によって使用が完了されたか否かを判断し、使用が完了された場合、データを当該アドレスに記憶して、元のデータを上書きし、その後アドレスポインターpointは、end_addrまで、順に、下へ移動し、この場合、データを再び上書きし、上記の過程を循環できる。
本実施例において、循環バッファ記憶領域を使用してデータを記憶すると、データ記憶空間を節約できるだけでなく、記憶空間利用率も向上させることができる。
可能な一実現形態において、循環バッファ記憶領域を複数の細粒度領域に区分けすることができる。各々の細粒度領域ごとに、リスト、フラグビット、または、他の方式によって、細粒度領域におけるデータが上書きできるか否かを管理でき、例えば、上書きフラグビットを設定することで、細粒度領域におけるデータが上書きできるか否かを表すことができる。
例を挙げると、第1の操作は読み取り操作であり、第2の操作は書き込み操作であり、すなわち、書き込みの後の読み取りであると、書き込みポインターwpおよび読み取りポインターrpが第2の操作と第1の操作の現在の対象となる細粒度領域をそれぞれ表すようにすることができる。第2の操作の現在の対象となる第2の細粒度領域の上書きフラグビットが上書きできることである場合、第2の操作を実行して、データを書き込むことができ、データの書き込みを完成した後、当該第2の細粒度領域の上書きフラグビットを上書きできないことに設定し、wp++させ、第2の操作の現在の対象となる第2の細粒度領域が次の一つの細粒度領域であり、wp>end_addrであると、wp=start_addrであるし、第1の操作の現在の対象となる第1の細粒度領域と第2の細粒度領域との間が重ならなく、且つ、第1の細粒度領域の上書きフラグビットが上書きできないことである場合、第1の操作を実行でき、データを読み取り、データの読み取りを完成した後、当該第1の細粒度領域の上書きフラグビットを上書きできることに設定し、rp++させ、第1の操作の現在の対象となる第1の細粒度領域が次の一つの細粒度領域であり、rp>end_addrであると、rp=start_addrであるし、第1の細粒度領域と第2の細粒度領域とが重なる場合、すなわち、rp=wpである場合、第1の操作を実行できなく、第2の操作が現在の対象となる第2の細粒度領域に対する操作が完成するまでに待機した後、第1の操作を実行できる。
本実施例において、循環バッファアクセス領域を複数の細粒度領域に区分けすることによって、複数の操作が循環バッファ記憶領域に対して同時に操作するようにして、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記細粒度領域は、状態識別子を含んでもよく、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含んでもよく、
ステップS14dは、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、完成状態であると、前記第1の操作を実行することと、を含んでもよい。
可能な一実現形態において、細粒度領域は、状態識別子を含んでもよく、状態識別子は、操作細粒度領域の完成状態または未完成状態を含んでもよい。例えば、状態識別子は、0と1を使用して表すことができ、ここで、0が操作細粒度領域の未完成状態を表し、1が操作細粒度領域の完成状態を表し、あるいは、0が操作細粒度領域の完成状態を表し、1が操作細粒度領域の未完成状態を表してもよい。本発明は、状態識別子の表現方式に対して限定しない。
可能な一実現形態において、第2の操作は目標記憶領域を既に操作を完成した細粒度領域の状態識別子を完成状態に設定し、操作されていないまたは操作されている細粒度領域の状態識別子を未完成状態に設定する。さらに、既に操作を完成した細粒度領域における一部の細粒度領域の状態識別子を完成状態に設定し、他の細粒度領域を未完成状態に設定してもよい。例えば、第2の操作が5個の細粒度領域の操作を既に完成した場合、前からの3個の細粒度領域の状態識別子を完成状態に設定し、他の細粒度領域を未完成状態に設定してもよい。
可能な一実現形態において、実行されている目標記憶領域に対する第2の操作が存在する場合、第1の操作の現在の対象となる第1の細粒度領域および第2の操作の現在の対象となる第2の細粒度領域に対して、第1の細粒度領域と第2の細粒度領域との間が重ならないと確定した後、第1の細粒度領域の状態識別子が完成状態であるか否かを判断し、第1の細粒度領域の状態識別子が完成状態であると、第1の操作を実行できる。
本実施例において、細粒度領域は状態識別子を含み、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の細粒度領域の状態識別子に基づいて、第1の操作が実行できるか否かを確定することによって、プロセッサの処理効率を向上させる同時に、データ処理の正確性を向上させることができる。
可能な一実現形態において、前記細粒度領域は、状態識別子を含んでもよく、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含んでもよく、
ステップS14dは、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、完成状態であると、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含んでもよい。
つまり、実行されている目標記憶領域に対する第2の操作が存在する場合、第1の操作の現在の対象となる第1の細粒度領域および第2の操作の現在の対象となる第2の細粒度領域に対して、第1の細粒度領域の状態識別子が完成状態であると確定した後、第1の細粒度領域と第2の細粒度領域との間の重なり関係に基づいて、第1の操作が実行できるか否かを確定し、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行できる。
本実施例において、細粒度領域は状態識別子を含み、第1の細粒度領域の状態識別子が完成状態であると確定した後、第1の細粒度領域と第2の細粒度領域との間の重なり関係に基づいて、第1の操作が実行できるか否かを確定することによって、データ処理の正確性を向上させる同時に、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記第2の操作は、前記記述子に対する操作である。
つまり、第2の操作のオペランドと第1の操作のオペランドとが同じであり、すなわち、第2の操作と第1の操作は、同じ記述子に対する操作であり、第2の操作のオペランドの記憶領域と目標記憶領域とが完全に重なる。記述子が示すテンソルデータの目標記憶領域を複数の細粒度領域に区分けした後、本発明の実施例における方法によって、各操作の実行結果に影響を及ぼせずに、同じ記述子を操作する二つの操作並行して実行できる。
可能な一実現形態において、第2の操作のオペランドと第1の操作のオペランドとが同じである場合、操作の実行プロセスに基づいて第1の細粒度領域と第2の細粒度領域をそれぞれ確定できる。
可能な一実現形態において、目標記憶領域に対する第1の操作を実行する前に、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断する場合、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域が、第1の操作が実行しようとする目標記憶領域における細粒度領域である。例えば、目標記憶領域に対する第1の操作を実行する前に、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域は、通常、目標記憶領域の1番目の細粒度領域である。このとき、第1の細粒度領域に対する第1の操作が、まだ実行していない。実行されている第2の操作の現在の対象となる目標記憶領域における第2の細粒度領域は、第2の操作の実行プロセスと関連されてもよい。第2の操作の実行も開始したばかりであると、第2の細粒度領域は目標記憶領域の1番目の細粒度領域であってもよい。このとき、第1の細粒度領域と第2の細粒度領域とが重なる。第2の操作が1番目の細粒度領域の操作を既に完成し、現在の対象となる目標記憶領域における第2の細粒度領域がP番目の細粒度領域(Pは1よりも大きい整数である)であると、第1の細粒度領域と第2の細粒度領域とが重ならない。
可能な一実現形態において、第1の操作の目標記憶領域に対する操作過程で、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断する場合、第1の操作の実行プロセスに基づいて第1の細粒度領域を確定し、第2の操作の実行プロセスに基づいて第2の細粒度領域を確定し、さらに、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行できる。
可能な一実現形態において、各操作の実行過程のテンポが一致していると、目標記憶領域に対する第1の操作を実行する前にのみ、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断し、且つ、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。ここで、テンポが一致していることは、細粒度領域のサイズが同じである場合、二つの操作の一つの細粒度領域に対する操作期間が同じであることを意味する。
可能な一実現形態において、各操作の実行過程のテンポが不一致しないまたは一致しているか否かを確定できないと、第1の操作の目標記憶領域に対する操作過程で、現在の対象となる目標記憶領域における第1の細粒度領域の操作を完成するたびに、続けて、実行されている、目標操作領域に対する第2の操作が、存在するか否かを判断し、さらに、続けて第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断することによって、第1の操作を続けて実行できるか否かを確定できる。
本実施例において、第2の操作のオペランドと第1の操作のオペランドとが同じである場合、本発明の実施例の中の方法を使用して、同じ記述子に対する二つまたは複数の操作の並行する実行を実現し、または、各操作の実行プロセスに基づいて各操作の現在の対象となる細粒度領域を確定して、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行することによって、各操作の実行効果に影響を及ぼせずに、同じ記述子に対する二つまたは複数の操作を並行して実行するようにして、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記第2の操作のオペランドの記憶領域は、前記目標記憶領域と重なる。
可能な一実現形態において、第2の操作のオペランドの記憶領域が目標記憶領域と重なり、且つ、第2の操作が重なる領域に対する操作を実行している場合、第2の操作のオペランドの記憶領域と目標記憶領域をそれぞれ複数の細粒度領域を区分けするか、または、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けし、その後、本発明の実施例の中の方法によって、重なる領域における細粒度領域を判断して、第1の操作を実行できるか否かを確定ことによって、各操作の実行結果に影響を及ぼせずに、オペランドの記憶領域が重なる領域の二つの操作を並行して実行できるようにする。
可能な一実現形態において、第2の操作が記述子に対する操作であり、且つ、第2の操作の対象となる記述子と第1の操作の対象となる記述子とが異なる場合、記述子を作成するときに記述子が示すテンソルデータの記憶領域の重なりを許可するか否かに基づいて、第2の操作のオペランドの記憶領域と目標記憶領域とが重なる可能があるか否かを確定できる。
可能な一実現形態において、記述子を作成するときに、記述子が示すテンソルデータの記憶領域の重なりを不可すると、第2の操作の対象となる記述子と第1の操作の対象となる記述子とが異なる場合、第2の操作の対象となる記述子が示すテンソルデータの記憶領域と目標記憶領域とが重ならなく、第1の操作と第2の操作の細粒度領域の間が重なりなくなり、異なる記述子に対する操作に対して細粒度領域の判断する必要がない。
可能な一実現形態において、記述子を作成するときに、記述子が示すテンソルデータの記憶領域の重なりを許可すると、第2の操作の対象となる記述子と第1の操作の対象となる記述子とが異なる場合、第2の操作の対象となる記述子の記憶領域と第1の操作の対象となる記述子が示す目標記憶領域とが重なりが存在する可能があり、このとき、本発明の実施例の中の方法を使用することによって、重なる領域の異なる記述子に対する二つの操作を並行して実行できるようにする。
本実施例において、第2の操作のオペランドの記憶領域と目標記憶領域とが重なる場合、本発明の実施例の中の方法を使用して二つまたは複数の操作の並行する実行を実現して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記方法は、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けすることをさらに含んでもよい。
可能な一実現形態において、目標記憶領域は、記憶装置の記憶領域全体中の一部の記憶領域または全部の記憶領域であり、前記記憶領域全体が予め設定した複数の細粒度領域を含んでもよい。
例えば、目標記憶領域が位置する記憶領域全体がRAM1であり、RAM1は予め設定したM個の細粒度領域(Mは正の整数である)を含んでもよい。目標記憶領域は、RAM1でRAM1におけるn個の細粒度領域(nは正の整数である、且つ、n≦Mである)を占用してもよい。目標記憶領域は、特定の細粒度領域における一部の領域を含んでもよいことを説明する必要がある。上記の例のRAM1において、各々の細粒度領域が記憶領域全体RAM1における1行であり、各行が100ビットであると仮定する。目標記憶領域は、前の(n-1)個の完全な細粒度領域を含み、また、最後一つの細粒度領域の一部の領域をさらに含んでもよく、例えば、RAM1におけるn行目(n番目の細粒度領域)における前の80個のビットを含んでもよい。
可能な一実現形態において、記憶装置の記憶領域全体を複数の細粒度領域に区分けする場合、記憶領域全体における任意の目標記憶領域に対する任意の操作の場合、第1の操作の対象となる記述子が示すテンソルデータの目標記憶領域か、第2の操作のオペランドの記憶領域と目標記憶領域とが重なる領域かに関わらず、いずれも、記憶領域全体の細粒度区分け結果に基づいて、目標記憶領域または重なる領域における細粒度領域を確定できる。任意の操作の任意のオペランドの記憶領域全体における記憶領域は、同じサイズの細粒度領域を有する。
可能な一実現形態において、記憶装置のハードウェア特性に基づいて、記憶領域全体の細粒度領域のサイズ及び/又は数を確定でき、すなわち、記憶装置のハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、記憶領域全体の細粒度領域のサイズ及び/又は数を確定できる。
本実施例において、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けし、記憶領域全体における任意の目標記憶領域に対する任意の操作の場合、いずれも、同じ細粒度サイズに従って実行できるし、異なる操作を本発明の実施例の中の方法に従って並行する場合、より便利に同期させて、操作の並行度を向上させ、プロセッサの処理効率をさらに向上させることができる。
可能な一実現形態において、前記方法は、
第1の操作中に携える第1の細粒度区分け情報に基づいて、前記目標記憶領域を複数の細粒度領域に区分けすることと、
第2の操作中に携える第2の細粒度区分け情報に基づいて、前記第2の操作のオペランドの記憶領域を複数の細粒度領域に区分けすることと、をさらに含んでもよい。
可能な一実現形態において、操作中に細粒度区分け情報を携え、細粒度区分け情報は細粒度のサイズ及び/又は数を含んでもよい。異なる操作は、異なる細粒度区分け情報を携えてもよい。同一のタイプの操作は、同一の細粒度区分け情報を携えてもよい。操作中のオペランドの設定位置に細粒度区分け情報を携えてもよいし、オペレーションコードまたはオペランドの中に細粒度区分けするか否かの識別子情報を携えてもよい。本発明は、細粒度区分け情報における内容および表現方式に対して限定しない。
可能な一実現形態において、第1の操作中に携える第1の細粒度区分け情報に基づいて、目標記憶領域を複数の第1の細粒度領域を区分けする。第1の操作の対象となる記述子が示すテンソルデータが位置する記憶領域全体における他の領域に対しては、細粒度の区分けを実行しなくてもよいし、他の操作に携える細粒度区分け情報に基づいて細粒度の区分けを実行してもよい。本発明は、これに対して限定しない。
ことを理解できるのは、第2の操作のオペランドと第1の操作の対象となる記述子が示すテンソルデータと一致している場合、第2の操作のオペランドの記憶領域と目標記憶領域とが完全に重なる。第1の細粒度区分け情報と第2の細粒度区分け情報とは、一致してもよいし、不一致してもよい。第1の細粒度区分け情報と第2の細粒度区分け情報とが不一致している場合、目標記憶領域は同時に第2の細粒度区分け情報に基づいて細粒度区分けを実行してもよい。すなわち、目標記憶領域に対して、異なる操作は異なるサイズまたは数の複数の細粒度領域に区分けすることができる。このとき、第1の操作の現在の対象となる目標記憶領域における第1の細粒度領域の物理アドレス、および、第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域の間の物理アドレスに基づいて、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断し、判断結果に基づいて第1の操作と第2の操作を並行して実行できる。
可能な一実現形態において、各操作に携える細粒度区分け情報は、設定長さの操作データが位置する領域、および、設定次元数のオペランドが位置する領域の中の少なくとも一つに基づいて確定した前記細粒度領域のサイズ及び/又は数を含んでもよく、細粒度の区分け結果が操作におけるオペランドのタイプまたは属性にもう一層合致するようにする。
本実施例において、第1の操作に携える第1の細粒度区分け情報に基づいて、目標記憶領域を複数の細粒度領域に区分けし、第2の操作に携える第2の細粒度区分け情報に基づいて、第2の操作のオペランドの記憶領域を複数の細粒度領域に区分けする。操作に携える細粒度区分け情報に基づいて細粒度の区分けすることによって、細粒度の区分け結果が各操作の処理要件にもう一層合致するようにし、操作の並行がもう一層柔軟にすることができる。
当業者は、実際の状況に従って目標記憶領域に対して細粒度領域を区分けするか設定することができ、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用でき、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含んでもよい。
可能な一実現形態において、記述子は、N次元のテンソルデータの形状を示すために使用できる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、テンソルデータは3次元データであり、Nの値は3(次元数に基づいて確定する)であってもよいし、記述子は当該テンソルデータの三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよい。本発明は、記述子の内容に含まれる具体的な形状パラメータに対して限定しない。
本実施例において、記述子を使用してテンソルデータの形状を示し、記述子が示すテンソルデータの形状に基づいて複数のテンソルデータ間の相互関係を確定できて、プロセッサのアクセス効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなどにおける記憶空間であってもよい。記述子が示すテンソルデータの目標記憶領域は、前記制御ユニットの内部メモリ(例えば、オンチップキャッシュ)または前記制御ユニットに接続された外部メモリ(オフチップメモリ)における記憶空間であってもよい。目標記憶領域におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間および目標記憶領域の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同じ領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスはADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31は記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63は記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023は記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域にそれぞれ記憶されてもよく、例えば、レジスタを記述子記憶空間として、レジスタに記述子の識別子および内容を記憶し、オンチップキャッシュを記憶領域全体として、記述子が示すテンソルデータを記憶してもよい。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子におけるデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタにおける記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子の識別子に対応する記憶領域のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに対して単独の記憶領域を区分けすることができ、各テンソルデータの記憶領域における開始アドレスは記述子の識別子と1対1に対応される。このような場合、記述子の識別子および対応関係に基づいて、記述子が示すテンソルデータの目標記憶領域を直接確定できる。
可能な一実現形態において、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。
可能な一実現形態において、記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、アドレスは、例えば、テンソルデータの開始アドレス、アドレスオフセット量、レジスタアドレス、または、他のアドレスであってもよく、本発明は、アドレスタイプに対して限定しない。例えば、アドレスはテンソルデータの開始アドレスであってもよく、記述子の識別子に対応する記憶領域のデータアドレスが固定アドレスである場合、記述子が示すN次元テンソルデータの開始アドレスが固定アドレスであるし、記述子の識別子に対応する記憶領域のデータアドレスが可変アドレスである場合、記述子が示すN次元テンソルデータの開始アドレスは、その具体的な記憶領域に基づいて確定できる。本発明はこれに対して限定しない。
可能な一実現形態において、記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例を挙げると、テンソルデータは3次元データであり、記述子を使用して当該テンソルデータのアドレスを示すことができ、記述子の内容は、当該テンソルデータのアドレスを表す一つのアドレスパラメータ(例えば、テンソルデータの開始アドレス)を含んでもよいし、当該テンソルデータのアドレスの複数のアドレスパラメータ(例えば、テンソルデータの開始アドレス+アドレスオフセット量、または、テンソルデータの各次元に基づくアドレスパラメータである)を含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
本実施例において、記述子を使用してテンソルデータのアドレスを示し、記述子が示すテンソルデータのアドレスに基づいて、複数のテンソルデータ間の相互関係を確定できて、プロセッサのアクセス効率を向上させることができる。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の、前記テンソルデータが位置する記憶領域全体における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記テンソルデータが位置する記憶領域全体のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、テンソルデータのアドレスパラメータは、記述子のデータ基準点のテンソルデータが位置する記憶領域全体における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、基準アドレスは、記憶領域全体の開始アドレスを含んでもよい。記述子のデータ基準点が記憶領域全体の1番目のデータブロックである場合、記述子の基準アドレスが記憶領域全体の開始アドレスである。記述子のデータ基準点が記憶領域全体における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックの記憶領域全体における物理アドレスである。
可能な一実現形態において、テンソルデータの形状パラメータは、テンソルデータが位置する記憶領域全体のN個の次元方向の中の少なくとも一つの方向におけるサイズ、テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータにおける点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータがの3次元空間における点または領域の位置にマッピングされることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
図2に示されたように、記憶領域全体21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)はori_x(図示せず)であり、Y軸方向上のサイズ(全行数)はori_y(図示せず)であり、記憶領域全体21の開始アドレスPA_start(基準アドレス)は1番目のデータブロック22の物理アドレスである。データブロック23は、記憶領域全体21におけるテンソルデータであり、X軸方向におけるオフセット量25はoffset_xで表し、Y軸方向におけるオフセット量24はoffset_yで表し、X軸方向におけるサイズはsize_xで表し、Y軸方向におけるサイズはsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点は記憶領域全体21の1番目のデータブロックを使用でき、記述子の基準アドレスは記憶領域全体21の開始アドレスPA_startであり、その後、記憶領域全体21のX軸におけるサイズori_x、Y軸におけるサイズori_y、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_x、および、Y軸方向上のサイズsize_yを組み合わせて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(1)を使用して記述子の内容を表すことができる。
上記の例では記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子のデータ基準点の記憶領域全体における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点のデータ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点の記憶領域全体における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用して、図2におけるデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびその記憶領域全体における基準アドレスPA_baseを確定し、例えば、記憶領域全体21で一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データの記憶領域全体21における物理アドレスを基準アドレスPA_baseとして設定し、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定でき、例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック73の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子のデータ基準点の記憶領域全体における基準アドレス、および、記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定する。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が示すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用してデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
本実施例において、テンソルデータの基準アドレスおよび少なくとも一つの形状参考を使用して記述子の内容を確定することによって、各操作の処理要件に従って異なる記述子を使用できる。
可能な一実現形態において、記述子の識別子に基づいて、記述子の記述子記憶空間における位置を確定し、さらに記述子記憶空間から記述子の内容を取得できるし、その後、記述子の内容に基づいて、記述子が示すテンソルデータの記憶領域全体におけるデータアドレスを確定できる。ここで、データアドレスの計算は、ハードウェアによって自動的に完成するか、または、ソフトウェア方式によって実現できる。記述子の内容が異なる場合、記述子が示すテンソルデータの記憶領域全体におけるデータアドレスの計算方式が互いに異なってもよい。
例を挙げると、式(1)を使用して記述子の内容を表す場合、記述子が示すテンソルデータの記憶領域全体におけるオフセット量はそれぞれoffset_xおよびoffset_yであり、サイズがsize_x*size_yであると、当該記述子が示すテンソルデータの記憶領域全体における開始データアドレス
は、以下の式(4)を使用して確定できる。
記述子が示すテンソルデータの中の任意の一つのデータ点に対して、そのデータ記述位置を
に設定すると、当該データ点の記憶領域全体におけるデータアドレス
は、以下の式(5)を使用して確定できる。
当業者は、実際の状況に従って確定データアドレスの計算方法、本発明はこれに対して限定しないことを理解すべきである。
本実施例において、記述子の識別子に基づいて、記述子の内容を取得し、記述子の内容に基づいて、記述子が示すテンソルデータの記憶領域全体におけるデータアドレスを確定し、データアドレスに基づいて、記述子が示すテンソルデータの目標記憶領域を確定できる。このような方式によって、データアクセス過程中で記述子を使用して、データアクセスの複雑度を低下させて、プロセッサの処理効率を向上させることができる。
上記の実施例を例としてプロセッサ操作方法を説明したが、当業者は本発明がこれに限定されないことを理解できることを説明する必要がある。実際に、ユーザは、本発明の技術案に合致する限り、完全に、個人の好み及び/又は実際の適用シナリオに従って各ステップを柔軟に設定できる。
図3dは、本発明の実施例に係るプロセッサ操作装置を示すブロック図である。図3dに示されたように、前記プロセッサ操作装置は、
第1の操作が記述子に対する操作である場合、前記記述子が示すテンソルデータの目標記憶領域を取得するための領域確定モジュール81と、
実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断するための操作判断モジュール82と、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断するための重なり判断モジュール83と、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための実行モジュール84と、を備える。
可能な一実現形態において、前記装置は、前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックするための実行制御モジュールをさらに備える。
可能な一実現形態において、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定する。
可能な一実現形態において、前記第1の操作は、第1の処理命令における操作であり、前記第2の操作は、第2の処理命令における操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
可能な一実現形態において、前記装置は、前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録するための位置記録モジュールをさらに備え、
前記実行モジュール84は、前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行するための第1の実行サブモジュールを備える。
可能な一実現形態において、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、
前記第1の実行サブモジュールは、さらに、前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行する。
可能な一実現形態において、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記重なり判断モジュール83は、前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断するための判断サブモジュールを備える。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は前記第2の操作の操作位置に従って更新され、前記装置は、前記第2の操作の対象となる前記目標記憶領域における第2の細粒度領域が前記操作不可領域から移動して出た後に、前記操作不可領域の位置を更新するための更新モジュールを備える。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新される。
可能な一実現形態において、前記目標記憶領域が、循環バッファ記憶領域を含む。
可能な一実現形態において、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、前記実行モジュール84は、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第1の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態である場合、前記第1の操作を実行するための第2の実行サブモジュールと、を備える。
可能な一実現形態において、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、前記実行モジュール84は、
前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第2の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態であり、且つ、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための第3の実行サブモジュールと、を備える。
可能な一実現形態において、前記第2の操作は、前記記述子に対する操作である。
可能な一実現形態において、前記第2の操作のオペランドの記憶領域は、前記目標記憶領域と重なる。
可能な一実現形態において、前記装置は、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けするための第1の設定モジュールをさらに備える。
可能な一実現形態において、前記装置は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記目標記憶領域を複数の細粒度領域に区分けするための第2の設定モジュールと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作のオペランドの記憶領域を複数の細粒度領域に区分けするための第3の設定モジュールと、をさらに備える。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の、前記テンソルデータが位置する記憶領域全体における基準アドレスを含み、ここで、前記テンソルデータの形状パラメータは、前記テンソルデータが位置する記憶領域全体のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは、上記のプロセッサ操作装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置にそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
可能な一実現形態において、前記記憶デバイスは、複数のグループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
A1、プロセッサ操作方法であって、前記方法は、
第1の操作が記述子に対する操作である場合、前記記述子が示すテンソルデータの目標記憶領域を取得することと、
実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断することと、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断することと、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記方法は、
前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックすることをさらに含む。
A3、請求項A1に記載の方法であって、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
A4、請求項A1に記載の方法であって、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
A5、請求項A1に記載の方法であって、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅のにおlけるの少なくとも一つに基づいて確定する。
A6、請求項A1に記載の方法であって、前記第1の操作は、第1の処理命令における操作であり、前記第2の操作は、第2の処理命令における操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
A7、請求項A1乃至A6の中のいずれか1項に記載の方法であって、前記方法は、
前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録する、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することを含む。
A8、請求項A7に記載の方法であって、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することは、
前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行することを含む。
A9、請求項A1に記載の方法であって、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記第2の操作が存在する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断することは、
前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断することを含む。
A10、請求項A9に記載の方法であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は前記第2の操作の操作位置に従って更新され、前記方法は、
前記第2の操作の対象となる前記目標記憶領域における第2の細粒度領域が前記操作不可領域から移動して出た後に、前記操作不可領域の位置を更新することをさらに含む。
A11、請求項A9に記載の方法であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、
前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新される。
A12、請求項A1に記載の方法であって、前記目標記憶領域が、循環バッファ記憶領域を含む。
A13、請求項A1に記載の方法であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、
完成状態であると、前記第1の操作を実行することと、を含む。
A14、請求項A1に記載の方法であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、
完成状態であると、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含む。
A15、請求項A1に記載の方法であって、前記第2の操作は、前記記述子に対する操作である。
A16、請求項A1に記載の方法であって、前記第2の操作のオペランドの記憶領域は、前記目標記憶領域と重なる。
A17、請求項A1乃至A16の中のいずれか1項に記載の方法であって、前記方法は、
目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けすることをさらに含む。
A18、請求項A1乃至A17の中のいずれか1項に記載の方法であって、前記方法は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記目標記憶領域を複数の細粒度領域に区分けすることと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作のオペランドの記憶領域を複数の細粒度領域に区分けすることと、をさらに含む。
A19、請求項A1に記載の方法であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A20、請求項A19に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A21、請求項A20に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の、前記テンソルデータが位置する記憶領域全体における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記テンソルデータが位置する記憶領域全体のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A22、プロセッサ操作装置であって、前記装置は、
第1の操作が記述子に対する操作である場合、前記記述子が示すテンソルデータの目標記憶領域を取得するための領域確定モジュールと、
実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断するための操作判断モジュールと、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断するための重なり判断モジュールと、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための実行モジュールと、を備える。
A23、請求項A22に記載の装置であって、前記装置は、
前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックするための実行制御モジュールをさらに備える。
A24、請求項A22に記載の装置であって、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
A25、請求項A22に記載の装置であって、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
A26、請求項A22に記載の装置であって、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定する。
A27、請求項A22に記載の装置であって、前記第1の操作は、第1の処理命令における操作であり、前記第2の操作は、第2の処理命令中の操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
A28、請求項A22乃至A27の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録するための位置記録モジュールをさらに備え、
前記実行モジュールは、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行するための第1の実行サブモジュールを備える。
A29、請求項A28に記載の装置であって、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、
前記第1の実行サブモジュールは、さらに、
前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行する。
A30、請求項A22に記載の装置であって、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記重なり判断モジュールは、
前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる前記目標記憶領域における第1の細粒度領域と前記第2の操作の現在の対象となる前記目標記憶領域における第2の細粒度領域との間が重なるか否かを判断するための判断サブモジュールを備える。
A31、請求項A30に記載の装置であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は、前記第2の操作の操作位置に従って更新され、前記装置は、
前記第2の操作の対象となる前記目標記憶領域における第2の細粒度領域が前記操作不可領域から移動して出た後に、前記操作不可領域の位置を更新するための更新モジュールを備える。
A32、請求項A30に記載の装置であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、
前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新される。
A33、請求項A22に記載の装置であって、前記目標記憶領域が、循環バッファ記憶領域を含む。
A34、請求項A22に記載の装置であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュールは、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第1の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態である場合、前記第1の操作を実行するための第2の実行サブモジュールと、を備える。
A35、請求項A22に記載の装置であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュールは、
前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第2の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態であり、且つ、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための第3の実行サブモジュールと、を備える。
A36、請求項A22に記載の装置であって、前記第2の操作は、前記記述子に対する操作である。
A37、請求項A22に記載の装置であって、前記第2の操作のオペランドの記憶領域は、前記目標記憶領域と重なる。
A38、請求項A22乃至A37の中のいずれか1項に記載の装置であって、前記装置は、
目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けするための第1の設定モジュールをさらに備える。
A39、請求項A22乃至A37の中のいずれか1項に記載の装置であって、前記装置は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記目標記憶領域を複数の細粒度領域に区分けするための第2の設定モジュールと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作のオペランドの記憶領域を複数の細粒度領域に区分けするための第3の設定モジュールと、をさらに備える。
A40、請求項A22に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A41、請求項A40に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A42、請求項A41に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の、前記テンソルデータが位置する記憶領域全体における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記テンソルデータが位置する記憶領域全体のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A43、人工知能チップであって、前記チップは、請求項A22乃至A42の中のいずれか1項に記載のプロセッサ操作装置を備える。
A44、電子デバイスであって、前記電子デバイスは、請求項A43に記載の人工知能チップを備える。
A45、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A43に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A46、請求項A45に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータの次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。図1eは、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は、プロセッサに適用でき、当該プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
図1eに示されたように、当該データ同期方法は、以下のステップを含む。
ステップS11eにおいて、復号化後の処理命令が記述子同期命令であると、前記処理命令における記述子であって、同期待ちのテンソルデータの形状を示すための記述子の、同期情報を取得し、
ステップS12eにおいて、前記同期情報に基づいて、前記処理命令を実行する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例えば、テンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズが2であり、第2の次元(行)のサイズが4である。本発明は、記述子がテンソル形状を示す方式に対して限定しないことを説明する必要がある。メモリにテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状を確定できず、さらに複数のテンソルデータ間の相互関係などの関連情報も確定できないので、プロセッサのテンソルデータのアクセス効率が低くなり、データ同期の際の複雑度もより大きい。
この場合、記述子(テンソル記述子)を設定してテンソルデータ(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は、当該3次元のテンソルデータの、三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させることで、データ同期の際の複雑度を低下する。
データ処理過程で、現在のプロセッサA1(例えば、人工知能チップにおけるプロセッサコア)におけるテンソルデータに対してデータ同期を実行する必要がある可能があり、例えば、もう一つのプロセッサA0における一つの演算の演算結果をプロセッサA1におけるもう一つの演算の入力データとして同期する必要がある。この場合、記述子同期命令を使用してデータ同期を実現できる。すなわち、同期待ちのテンソルデータが存在する場合、同期データの送信側(例えば、もう一つのプロセッサA0)は、記述子同期命令をプロセッサA1に送信することによって、現在のプロセッサA1がデータ同期するように指示することができる。
可能な一実現形態において、ステップS11eの前に、前記方法は、
受信された処理命令を復号化して、復号化後の処理命令を得ることをさらに含み、
ここで、前記復号化後の処理命令は、オペレーションコードを含み、前記オペレーションコードは、同期処理を実行するように指示するために使用される。
例を挙げると、現在のプロセッサA1は処理命令が受信されると、処理命令を復号化(解析)して、復号化後の処理命令を得ることができる。当該復号化後の処理命令は、オペレーションコードおよびオペランドを少なくとも含んでもよく、オペレーションコードは、前記処理命令に対応する処理タイプを示すために使用され、オペランドは、処理待ちのデータを示すために使用される。処理命令は、データアクセス命令、演算命令、記述子管理命令、同期命令などを含んでもよい。本発明は、処理命令の具体的なタイプおよび復号化の具体的な方式に対して限定しない。
可能な一実現形態において、復号化後の処理命令のオペレーションコードが記述子同期処理の実行を指示すると、当該処理命令が記述子同期命令であると確定できる。復号化後の処理命令が記述子同期命令であると、プロセッサは、ステップS11eで前記処理命令における記述子の同期情報を取得することで、記述子が示す同期待ちのテンソルデータを同期できる。
可能な一実現形態において、記述子の同期情報は、例えば、前記記述子の識別子および前記記述子の内容の中の少なくとも一つを含んでもよい。プロセッサに当該同期待ちのテンソルデータを示す記述子が既に登録されており、且つ、変更する必要がないと、記述子同期命令における同期情報は記述子の識別子(例えば、記述子の識別子がTR1である場合、記述子同期命令をSend TR1で表す)のみを含んでもよく、プロセッサは、処理命令における当該記述子の識別子(TR1)に基づいてテンソルデータの同期を実現するようにすることができるし、プロセッサに当該同期待ちのテンソルデータを示す記述子を登録されていないと、記述子同期命令における同期情報は記述子の内容を含んでもよく、プロセッサは、処理命令における記述子内容に基づいてテンソルデータの同期を実現するようにすることができるし、プロセッサに当該同期待ちのテンソルデータを示す記述子が既に登録されているが、記述子の内容を変更する必要があると、記述子同期命令における同期情報は記述子の識別子と内容の両者を同時に含んでもよく、プロセッサは、処理命令における記述子識別子と内容に基づいてテンソルデータの同期を実現できる。本発明は、記述子の同期情報に含まれている具体的な内容に対して限定しない。
可能な一実現形態において、記述子同期命令の同期情報を得た後、プロセッサは、ステップS12eで同期情報に基づいて当該処理命令を実行(記述子同期命令)して、テンソルデータの同期を実現できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、復号化後の処理命令が記述子同期命令であるとき、処理命令における記述子の同期情報を取得し、記述子の同期情報に基づいて命令を実行してテンソルデータの同期を実現できて、同期オーバーヘッドを軽減して、データ同期の効率を向上させることができる。
可能な一実現形態において、ステップS12eは、
前記記述子が示すテンソルデータの記憶領域が共有記憶空間にある場合、前記同期情報に基づいて前記共有記憶空間から前記テンソルデータを取得することを含んでもよい。
例を挙げると、複数のプロセッサ(複数のコア)は、共有記憶空間を有することができ、例えば、プロセッサA0とプロセッサA1は、いずれもアクセスできるオフチップメモリである。当該共有記憶空間は、複数のコア(複数のプロセッサ)がいずれもデータをアクセスできる記憶空間であってもよいし、一部のコア(一部のプロセッサ)がデータをアクセスできる記憶空間であってもよい。コア間の共有記憶空間を予め設定でき、本発明は、共有記憶空間の設定方式に対して限定しない。
可能な一実現形態において、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、現在のプロセッサA1も共有記憶空間からデータをアクセスできるので、プロセッサA1は記述子の内容に基づいてテンソルデータを直接読み取って同期を実現できる。
可能な一実現形態において、記述子同期要求命令における同期情報が記述子の識別子のみを含むと、例えば、記述子の識別子がTR1であり、記述子同期要求命令がSend TR1を表すと、プロセッサA1は、内部で当該記述子の識別子に対応する記述子内容を検索し、さらに記述子内容に基づいて共有記憶空間からにおける同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
可能な一実現形態において、当該記述子同期命令における同期情報が記述子の識別子と内容を含むと、プロセッサA1は、当該記述子の識別子に対応する記述子を検索し、且つ、記述子同期命令における記述子内容に基づいて、元の記述子内容を更新し、さらに更新後の記述子内容に基づいて共有記憶空間から同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該記述子同期命令における同期情報が記述子の内容のみを含むと、プロセッサA1は、記述子の内容に基づいて、当該同期待ちのテンソルデータを示す記述子を登録し、且つ、記述子の内容に基づいて共有記憶空間から同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
このような方式によって、記述子同期命令における記述子の同期情報に基づいて、記述子が示す同期待ちのテンソルデータを取得して、テンソルデータの同期を実現できて、不要なデータ伝送を回避し、テンソルデータのアクセス回数を削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、複数のプロセッサ(複数のコア)は、同期データの記憶専用の、同期データ記憶空間を有することができる。当該同期データ記憶空間は、上記の共有記憶空間であってもよいし、共有記憶空間の一部であってもよいし、共有記憶空間とは異なる記憶空間であってもよく、本発明はこれに対して限定しない。
可能な一実現形態において、同期データ記憶空間は、複数のコア(複数のプロセッサ)がいずれもが同期データをアクセスできる記憶空間であってもよいし、一部のコア(一部のプロセッサ)が同期データをアクセスできる記憶空間であってもよく、本発明はこれに対して限定しない。
可能な一実現形態において、当該記述子同期命令における同期情報が同期待ちのテンソルデータの記述子の内容の同期データ記憶空間におけるアドレスを含むと、プロセッサA1は、当該アドレスに基づいて、同期データ記憶空間から同期待ちのテンソルデータの記述子の内容を取得し、記述子の内容に基づいて記述子を登録し、同期待ちのテンソルデータのデータアドレスを確定し、さらに前記同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、同期の際のプロセッサ間のデータ伝送をもう一層削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなどにおける記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサに接続された外部メモリ(オフチップメモリ)における記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同じ領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31は記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63は記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023は記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタに記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子におけるデータは、即時値にすることも、専用レジスタから取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタにおける記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータの中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータマッピングの3次元空間における点または領域の位置であることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
図2は、本発明の一実施例に係るデータ記憶空間を示す模式図である。図2に示されたように、データ記憶空間21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)はori_x(図示せず)であり、Y軸方向上のサイズ(全行数)はori_y(図示せず)であり、データ記憶空間21の開始アドレスPA_start(基準アドレス)は1番目のデータブロック22の物理アドレスである。データブロック23は、データ記憶空間21における一部のデータであり、X軸方向におけるオフセット量25はoffset_xで表し、Y軸方向におけるオフセット量24はoffset_yで表し、X軸方向におけるサイズはsize_xで表し、Y軸方向におけるサイズはsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点はデータ記憶空間21の1番目のデータブロックを使用でき、記述子の基準アドレスはデータ記憶空間21の開始アドレスPA_startであり、その後、データ記憶空間21のX軸におけるサイズori_x、Y軸におけるサイズori_y、および、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_xおよびY軸方向上のサイズsize_yと組み合わせて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(1)を使用して記述子の内容を表すことができる。
上記の例では記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点のデータ記憶空間における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用して、図2の中のデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびそのデータ記憶空間における基準アドレスPA_baseを確定し、例えば、データ記憶空間21における一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データのデータ記憶空間における物理アドレスを基準アドレスPA_baseとし、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定できる。例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定できる。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が示すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用してデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
式(1)を使用して記述子の内容を表す場合、テンソルデータの中の任意の一つのデータ点に対して、そのデータ記述位置を
に設定すると、当該データ点のデータ記憶空間におけるデータアドレス
は、以下の式(4)を使用して確定できる。
このような方式によって、プロセッサは、記述子の内容に基づいて記述子が示すテンソルデータのデータ記憶空間におけるデータアドレスを計算し、さらに当該アドレスに基づいて対応する処理(例えば、データ演算、データ同期など)を実行することによって、データアクセスの複雑度を低下させて、プロセッサの処理効率を向上させることができる。
図3eは、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、プロセッサに適用でき、図3eに示されたように、当該データ同期装置は、
復号化後の処理命令が記述子同期命令であると、前記処理命令中の記述子であって、同期待ちのテンソルデータの形状を示すための記述子の、同期情報を取得するための同期情報取得モジュール31eと、
前記同期情報に基づいて、前記処理命令を実行するための命令実行モジュール32eと、を備える。
可能な一実現形態において、前記同期情報は、前記記述子の識別子および前記記述子の内容の中の少なくとも一つを含んでもよい。
可能な一実現形態において、前記命令実行モジュールは、前記記述子が示すテンソルデータの記憶領域が共有記憶空間にある場合、前記同期情報に基づいて前記共有記憶空間から前記テンソルデータを取得するためのデータ取得サブモジュールを備える。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
可能な一実現形態において、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、前記装置は、受信された処理命令を復号化して、復号化後の処理命令を得るための復号化モジュールを備え、ここで、前記復号化後の処理命令は、オペレーションコードを含み、前記オペレーションコードは、同期処理を実行するように指示するために使用される。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A1、データ同期方法であって、前記方法は、
復号化後の処理命令が記述子同期命令であると、前記処理命令中の記述子であって、同期待ちのテンソルデータの形状を示すための記述子の、同期情報を取得することと、
前記同期情報に基づいて、前記処理命令を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記同期情報は、前記記述子の識別子および前記記述子の内容の中の少なくとも一つを含んでもよい。
A3、請求項A1またはA2に記載の方法であって、前記同期情報に基づいて、前記処理命令を実行することは、
前記記述子が示すテンソルデータの記憶領域が共有記憶空間にある場合、前記同期情報に基づいて前記共有記憶空間から前記テンソルデータを取得することを含む。
A4、請求項A1乃至A3の中のいずれか1項に記載の方法であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A5、請求項A4に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A6、請求項A5に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
A7、請求項A6に記載の方法であって、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A8、請求項A1乃至A7の中のいずれか1項に記載の方法であって、前記方法は、
受信された処理命令を復号化して、復号化後の処理命令を得ることをさらに含み、
ここで、前記復号化後の処理命令は、オペレーションコードを含み、前記オペレーションコードは、同期処理を実行するように指示するために使用される。
A9、データ同期装置であって、前記装置は、
復号化後の処理命令が記述子同期命令であると、前記処理命令中の記述子であって、同期待ちのテンソルデータの形状を示すための記述子の、同期情報を取得するための同期情報取得モジュールと、
前記同期情報に基づいて、前記処理命令を実行するための命令実行モジュールと、を備える。
A10、請求項A9に記載の装置であって、前記同期情報は、前記記述子の識別子および前記記述子の内容の中の少なくとも一つを含む。
A11、請求項A9またはA10に記載の装置であって、前記命令実行モジュールは、
前記記述子が示すテンソルデータの記憶領域が共有記憶空間にある場合、前記同期情報に基づいて前記共有記憶空間から前記テンソルデータを取得するためのデータ取得サブモジュールを備える。
A12、請求項A9乃至A11の中のいずれか1項に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A13、請求項A12に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A14、請求項A13に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
A15、請求項A14に記載の装置であって、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A16、請求項A9乃至A15の中のいずれか1項に記載の装置であって、前記装置は、
受信された処理命令を復号化して、復号化後の処理命令を得るための復号化モジュールを備え、
ここで、前記復号化後の処理命令は、オペレーションコードを含み、前記オペレーションコードは、同期処理を実行するように指示するために使用される。
A17、人工知能チップであって、前記チップは、請求項A9乃至A16の中のいずれか1項に記載のデータ同期装置を備える。
A18、電子デバイスであって、前記電子デバイスは、請求項A17に記載の人工知能チップを備える。
A19、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項17に記載の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置にそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A20、請求項A19に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用され、前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、処理する必要のあるデータ量とデータの次元とがいずれも継続的に増加している。関連技術において、プロセッサは、一般的に、命令のパラメータを取得してデータアドレスを確定し、次に、データアドレスに基づいて命令間の依存関係を判断する。このような命令間の依存関係を判断するのは、オペランドを計算するデータアドレスの方式によって、プロセッサの処理効率を低下させた。
本発明の実施例によると、データ処理方法が提供される。図1fは、本発明の実施例に係るデータ処理方法を示すフローチャートである。図1fに示されたように、当該データ処理方法は、以下のステップを含む。
ステップS11fにおいて、復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断し、
ステップS12fにおいて、前記第1の処理命令が実行できる場合、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行する。
可能な一実現形態において、当該データ処理方法は、プロセッサに適用できる。プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードは、前記第1の処理命令に対応する処理タイプを示すために使用される。ここで、第1の処理命令は、データアクセス命令、演算命令、記述子管理命令、および、同期通信命令などを含んでもよい。本発明は、第1の処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、処理待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例を挙げると、以下のテンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本願は記述子がテンソル形状を示す方式を限定しないことを説明する必要がある。メモリにテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状を確定できず、さらに複数のテンソルデータ間の相互関係などの関連情報も確定できないので、プロセッサのテンソルデータのアクセス効率が低くなる。
可能な一実現形態において、記述子は、N次元のテンソルデータの形状を示すために使用できる、Nは、ゼロ以上の整数である。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元データであり、記述子は当該テンソルデータの三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなどにおける記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、前記制御ユニットの内部メモリ(例えば、オンチップキャッシュ)、または、前記制御ユニットに接続された外部メモリ(オフチップメモリ)における記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同じ領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスはADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31は記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63は記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023は記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタにおける記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子のデータは、即時値にすることも、専用レジスタから取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタの記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、制御ユニットは記述子の内容に基づいて、テンソル制御モジュールによって、オペランドに対応するデータのデータアドレスを確定し、その後、第1の処理命令を実行する。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを示すとき、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記データ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間における1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスは、当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータの中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータはマッピングの3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、可以ステップS11fにおいて、復号化後の第1の処理命令のオペランドが記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断する。ここで、記述子の識別子が同じであるか否かは、記述子が示すテンソルデータが同じであるか否かを表すことができる。データの記憶アドレスと比較すると、記述子の識別子がもっと簡単であり、記述子の識別子に基づいて同様に当該記述子を操作するプリアンブル命令が存在するか否かを判断する過程も、データの記憶アドレスに基づいてプリアンブル命令が存在するか否かを判断する過程と比較すると、もっと簡単で効果的であり、ここで、プリアンブル命令は第1の処理命令と依存関係を有する処理命令であってもよい。
可能な一実現形態において、記述子の識別子および予め設定した実行条件に基づいて第1の処理命令が実行できるか否かを判断できる。例えば、レジスタを使用して記述子の識別子を記憶する場合、ここで、各レジスタはそれぞれ一つの記述子識別子を記憶し、同じレジスタをアクセスする複数の命令は命令投入順に従って実行できるため、命令キュー中の第1の処理命令の前の、同じレジスタをアクセスする命令がすべて完成されたか否かを判断できるし、同じレジスタをアクセスする命令の実行が完成された後、第1の処理命令が実行できると確定できる。予め設定した実行条件は、まず必要な記述子を登録すること、記述子の使用が完了されないと可取り消しできないことなどを含んでもよい。本発明は、予め設定した実行条件に対して限定しない。
可能な一実現形態において、ステップS11fは、前記記述子の識別子に基づいて、処理未完成の第2の処理命令が存在するか否かを判断することを含んでもよく、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドにおける前記記述子の識別子を有する処理命令を含み、第2の処理命令が存在しない場合、前記第1の処理命令が実行できると確定する。
つまり、第1の処理命令のオペランドが記述子の識別子を含む場合、記述子の識別子に基づいて、命令キューが存在するか否かを第1の処理命令の前の、オペランドにおける当該記述子の識別子を有する第2の処理命令を確定でき、検索された第2の処理命令を第1の処理命令と依存関係を有する処理命令とする。第1の処理命令のオペランドにおける複数の記述子の識別子が有する場合、各々の記述子に対応する依存関係をそれぞれ判断でき、つまり、オペランドに有する複数の記述子の中の少なくとも一つの記述子の識別子のプリアンブル命令を、依存関係を有する第2の処理命令とする。
処理未完成の第2の処理命令が存在する場合、第1の処理命令は実行できないし、第2の処理命令が存在しない場合、第1の処理命令は実行できる。
例を挙げると、第1の処理命令のオペランドが少なくとも一つの記述子の識別子を含む場合、未実行完成の第2の処理命令が存在するか否かを判断する場合、オペランドが含むすべての記述子の識別子を判断し、第1の処理命令のオペランド中に、第2の処理命令のオペランドにおける記述子の識別子と同一な記述子の識別子が少なくとも一つ存在する場合、第1の処理命令と第2の処理命令とが依存関係を有し、第2の処理命令の実行が未完成である場合、第1の処理命令を実行できない。
例えば、第1の処理命令がADD;TR10;TR11;TR12であり、第2の処理命令がADD;TR10;TR11;TR12である場合、第1の処理命令と第2の操作命令のオペランドにおける記述子の識別子が完全に同一であると、第1の処理命令と第2の処理命令とが依存関係を有する。第2の処理命令の実行が未完成である場合、第1の処理命令を実行できない。
第1の処理命令がADD;TR10;TR11;TR13であり、第2の処理命令がADD;TR10;TR11;TR12である場合、第1の処理命令と第2の操作命令のオペランド中で二つの記述子の識別子(TR10和TR11)が同一であると、第1の処理命令と第2の処理命令とが依存関係を有する。第2の処理命令の実行が未完成である場合、第1の処理命令を実行できない。
第1の処理命令がADD;TR10;TR12;TR13であり、第2の処理命令がADD;TR10;TR14;TR15である場合、第1の処理命令と第2の操作命令のオペランド中で一つの記述子の識別子(TR10)が同一であると、第1の処理命令と第2の処理命令とが依存関係を有する。第2の処理命令の実行が未完成である場合、第1の処理命令を実行できない。
第1の処理命令がADD;TR10;TR11;TR12であり、第2の処理命令がADD;TR13;TR14;TR15である場合、第1の処理命令と第2の操作命令のオペランドにおける記述子の識別子が完全に異なると、第1の処理命令と第2の処理命令とが依存関係を有さない。第2の処理命令の実行が未完成である場合、第1の処理命令を実行できる。
第1の処理命令がSUM;TR10であり、第2の処理命令がSUM;TR10である場合、第1の処理命令と第2の操作命令のオペランドにおける記述子の識別子が完全に同一であると、第1の処理命令と第2の処理命令とが依存関係を有する。第2の処理命令の実行が未完成である場合、第1の処理命令を実行できない。
このような方式によって、記述子の識別子に基づいて命令が実行できるか否かを直接判断でき、命令に含まれたオペランドのベースアドレスおよび操作範囲を複数回取得して、命令中のオペランドのデータアドレスおよび操作範囲を計算し得る必要がなく、プロセッサによる命令が実行できるか否かの判断の複雑度を低下し、命令中のオペランドのデータアドレスの分析過程を簡略化して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記第1の処理命令および前記第2の処理命令の中の少なくとも一つは、前記記述子に対する書き込み操作を含む。
例えば、第1の処理命令が記述子TR2に対する読み取り命令であり、第2の処理命令も記述子TR2に対する読み取り命令であると、すなわち、第1の処理命令と第2の処理命令がいずれも記述子TR2に対する書き込み操作を含まないと、第1の処理命令を実行できる。第2の処理命令がTR2に対する書き込み命令であると、第2の処理命令の処理が未完成である場合、第1の処理命令を実行できない。
このような方式によって、一つの記述子が複数の命令操作を同時に許可することによって、命令の同時実行効率を向上させて、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含んでもよく、ステップS11fは、前記少なくとも一つの記述子の識別子に基づいて、登録状態または未登録状態を含む、各記述子の第1の状態を、それぞれ確定することと、各記述子の第1の状態がいずれも既に登録状態である場合、前記第1の処理命令が実行できると確定することと、を含んでもよい。つまり、オペランドが含むすべての記述子の状態がいずれも既に登録である場合、第1の処理命令は実行できる。
例えば、第1の処理命令のオペランドは、二つの記述子の識別子TR3およびTR4を含む。記述子の識別子TR3およびTR4に基づいて、TR3およびTR4の状態(既に登録または未登録)を確定でき、TR3およびTR4中の少なくとも一つの状態が未登録である場合、第1の処理命令を実行できないし、このとき、記述子登録命令を呼び出してTR3及び/又はTR4を登録でき、登録が成功した後にTR3及び/又はTR4の状態を既に登録に変更する。記述子TR3およびTR4の状態がいずれも既に登録である場合、第1の処理命令を実行できる。
可能な一実現形態において、記述子の第1の状態は、様々な表現方式を有してもよい。例えば、記述子中で第1のフラグビットを設定して第1の状態を表わすことができ、例えば、レジスタに記述子の識別子を記憶でき、レジスタの最上位を第1のフラグビットとして使用し、上位から始めて記述子の関連情報を記憶する。状態対応表を設定してもよく、記述子の第1の状態を状態対応表に書き込む。当業者は、実際の必要に従って第1の状態の表現方式を設定でき、本発明はこれに対して限定しない。
このような方式によって、記述子の第1の状態に基づいて命令が実行できるか否かを判断することによって、プロセッサによる命令が実行できるか否かの判断の複雑度を低下させた。取り消し操作を例にすると、当該記述子が間もなく取り消しされる場合、当該状態を変更するだけで操作を完成でき、記述子の関連記憶領域をクリアする必要がなく、また、他の記述子がこの空間を使用する場合、当該領域を直接上書きすればよい。演算操作を例にすると、まず、当該オペレータの状態を直接判断し、当該オペレータが無効である場合、第1の状態によって当該命令が実行できないことを判断することによって、さらなる判断を実行することなく当該命令をブロックできる。
可能な一実現形態において、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含んでもよく、ステップS11fは、前記少なくとも一つの記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、各記述子の第2の状態を、それぞれ確定することと、各記述子の第2の状態がいずれも操作可能状態である場合、前記第1の処理命令が実行できると確定することと、を含んでもよい。
例を挙げると、第1の処理命令のプリアンブル命令が当前記述子に対して操作を実行している(例えば、書き込みまたは読み取り)場合、記述子の現在状態が操作不可状態である。当該状態において、第1の処理命令を実行することができなく、第1の処理命令をブロックまたはキャッシュできる。逆に、当前記述子に対して操作を実行するプリアンブル命令がない場合、記述子の現在状態を操作可能状態に設定できる。当該状態において、第1の処理命令を実行できる。
可能な一実現形態において、当該記述子を操作するプリアンブル命令が二つ以上である場合、操作可能状態を「0」で表し、操作不可状態を「1」で表し、すべてのプリアンブル命令の操作が完了された後に、第2の状態のフラグビット置が「0」であり、そうではない場合は「1」であるし、または、操作可能状態を「0」で表し、操作不可状態を「N」で表し、Nは操作当該記述子のプリアンブル命令の数であり、フラグビットの値が0になるまでに、一つのプリアンブル命令の操作が完了されるとN-1させ、当該記述子の第2の状態が操作可能状態になる。本発明は、状態の具体的な表現方式に対して限定しない。
可能な一実現形態において、記述子の第2の状態は、操作可能状態または操作不可状態を含んでもよく、ここで、第2の状態は、様々な方式によって表すことができる。例えば、記述子に第2のフラグビットを設定することで第2の状態を表してもよいし、記述子の第2の状態を状態対応表に書き込んでもよい。ここで、状態対応表をレジスタに記憶して、ハードウェア方式によって状態対応表における第1の状態および第2の状態に対する判断を実現できる。当業者は、実際の必要に従って第2の状態の表現方式を設定でき、本発明はこれに対して限定しない。
このような方式によって、記述子の第2の状態に基づいて命令が操作できるか否かを判断することによって、プロセッサによる命令操作できるか否かの判断の複雑度を低下させることができる。演算操作を例にすると、当該命令に関する記述子の第2の状態が操作可能状態であるか否かを直接判断し、当該命令に関する操作データに対してオペランドのベースアドレスおよび操作範囲を取得する必要がなくなって、演算の実際操作領域を取得してから、領域間が重なるか否かを判断して、当該命令が操作可能状態であるか否かの結果を得る。
可能な一実現形態において、ステップS11fによって第1の処理命令が実行できるかを確定する場合、ステップS12fにおいて、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行できる。つまり、第1の処理命令が実行できる場合、記述子の識別子に基づいて、記述子が示すテンソルデータのデータアドレスを計算して得た後に、データアドレスからテンソルデータを読み取り、第1の処理命令に対応するデータ処理を実行できる。
可能な一実現形態において、記述子の識別子に基づいて、記述子が示すテンソルデータのデータアドレスを直接得ることができ、例えば、記述子の内容がテンソルデータのデータアドレスである場合、計算せずに、記述子記憶空間からデータアドレスを直接読み取り、データアドレスからテンソルデータ読み取って、第1の処理命令に対応するデータ処理を実行できる。
可能な一実現形態において、ステップS12fは、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することと、前記記述子の内容に基づいて、前記オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含んでもよい。
本実施例において、第1の処理命令が実行できる場合、オペランドにおける記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得できる。つまり、記述子の識別子に基づいて、記述子の記述子記憶空間における位置を確定し、さらに記述子記憶空間から記述子の内容を取得できる。したがって、ソフトウェアプログラミングの複雑度を低下させることができ、ソフトウェア側でハードウェア側のデータ記憶方式を了解する必要がなく、ハードウェアの実際の記憶アドレスを計算する必要がない同時に、命令の複雑度を低下させることができ、複数回使用したパラメータ(例えば、記述子中の内容)を使用するたびに命令に書き込む必要がなくなった。
記述子の内容を取得した後、記述子の内容に基づいて、オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定できる。ここで、データアドレスの計算は、ハードウェアによって自動的に完成するか、または、ソフトウェア方式によって実現できる。記述子の内容が異なる場合、オペランドに対応するデータのデータ記憶空間におけるデータアドレスの計算方式は互いに異なってもよい。本発明は、データアドレスの計算方式に対して限定しない。
例えば、式(1)を使用して記述子の内容を表す場合、テンソルデータ中の任意の一つのデータ点に対して、そのデータ記述位置を(x_q、y_q)に設定すると、当該データ点のデータ記憶空間におけるデータアドレス
は、以下の式(4)を使用して確定できる。
オペランドに対応するデータのデータ記憶空間におけるデータアドレスを得た後、データアドレスに基づいて、第1の処理命令に対応するデータ処理を実行できる。
例を挙げると、第1の処理命令が演算命令ADD;A;Bである場合、オペランドAとBが記述子の識別子TR5およびTR6をそれぞれ含むと、TR5およびTR6に基づいて、記述子記憶空間から記述子TR5およびTR6の内容(例えば、形状パラメータとアドレスパラメータ)それぞれ取得できるし、その後、記述子TR5およびTR6の内容に基づいて、データAとBのデータアドレスをそれぞれ計算し、データAのデータ記憶空間におけるアドレス1はADDR64~ADDR127であり、データBのデータ記憶空間におけるアドレス2はADDR1023~ADDR1087である。その後、アドレス1とアドレス2からデータをそれぞれ読み取り、加算(ADD)演算を実行して、演算結果(A+B)を得ることができる。
可能な一実現形態において、前記方法は、前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令における記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得することと、前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断することと、前記第1の処理命令が実行できる場合、前記第1の処理命令を実行することと、さらに含んでもよい。
本実施例において、第1の処理命令が記述子登録命令である場合、第1の処理命令から記述子の登録パラメータを取得でき、ここで、登録パラメータは、記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよいし、その後、記述子の登録パラメータに基づいて、第1の処理命令が実行できるか否かを判断すると、記述子の登録パラメータに基づいて、記述子が登録できるか否かを判断できる。例えば、記述子の識別子が占用されているかまたは記述子記憶空間が不足な場合、記述子の登録に成功できない。当業者は、実際の状況に従って登録パラメータに対する判断を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断することは、前記記述子の識別子が占用されていないこと、前記記述子の内容を記憶する第1の記憶領域が占用されていないこと、および、前記記述子が示すテンソルデータを記憶する第2の記憶領域が占用されていないことの中の少なくとも一つを満たす場合、前記第1の処理命令が実行できると確定することを含んでもよい。つまり、登録パラメータが、記述子の識別子が占用されていないこと、第1の記憶領域が占用されていないこと、または、第2の記憶領域が占用されていないことの中の少なくとも一つを満たす場合、第1の処理命令を実行できる。
第1の処理命令が実行できる場合、前記第1の処理命令を実行する(記述子登録命令)。例えば、まず記述子の内容の記述子記憶空間における第1の記憶領域、および、記述子が示すテンソルデータの内容のデータ記憶領域における第2の記憶領域を確定し、その後、登録パラメータおよび第2の記憶領域に基づいて、記述子の内容を確定でき、すなわち、記述子と第2の記憶領域との間の対応関係を構築し、その後、記述子の内容を第1の記憶領域に記憶して、記述子の登録を完成できる。
可能な一実現形態において、前記方法は、前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令の記述子の識別子に基づいて、処理未完成の第4の処理命令であって、命令キュー中の、オペランドが前記記述子の識別子を含む処理命令である第4の処理命令が、存在するか否かを判断することと、処理未完成の第4の処理命令が存在しない場合、前記第1の処理命令を実行することと、をさらに含む。
本実施例において、第1の処理命令が記述子取り消し命令である場合、記述子の識別子に基づいて命令キュー中にオペランドが記述子の識別子を含む第4の処理命令があるか否かを判断し、処理未完成の第4の処理命令が存在する場合、第1の処理命令を実行できないし、処理未完成の第4の処理命令が存在しない場合、第1の処理命令である記述子取り消し命令を実行でき、このとき、記述子の記述子記憶空間における記憶領域、および、記述子が示すデータのデータ記憶空間における記憶領域をそれぞれ解放できる。
例を挙げると、第1の処理命令が記述子取り消し命令であり、取り消しの記述子の識別子がTR7であると、まず、命令キュー中でオペランドがTR7を含む第4の処理命令があるか否かを検索し、例えば、命令キュー中にTR7に対する演算命令および読み取り命令のような二つの第4の処理命令があり、その後、この二つの第4の処理命令(TR7に対する演算命令および読み取り命令)の実行が完成されたか否かを判断し、この二つの第4の処理命令の実行がいずれも完成されていない場合、第1の処理命令(記述子取り消し命令)を実行できないし、二つの第4の処理命令の実行がいずれも完成された場合、第1の処理命令は実行できる。その後、第1の処理命令(記述子取り消し命令)を実行して、TR7の記述子記憶空間における記憶領域、および、TR6が示すデータのデータ記憶空間における記憶領域をそれぞれ解放できる。
可能な一実現形態において、第1の処理命令が記述子取り消し命令である場合、記述子の識別子に基づいて、記述子の第1の状態が既に登録されているか否かを確定できる。記述子の第1の状態が既に登録である場合、第1の処理命令(記述子取り消し命令)を実行できる。逆に、第1の処理命令(記述子取り消し命令)を実行できない。すなわち、オペランドの記述子が既に登録状態である場合にのみ、記述子取り消し命令を実行できる。
可能な一実現形態において、前記方法は、前記第1の処理命令が実行できない場合、前記第1の処理命令をブロックまたはキャッシュすることをさらに含んでもよい。つまり、第1の処理命令が実行できない場合、第1の処理命令をブロックし、第2の処理命令の実行が完成されるまでに、第1の処理命令およびその後の他の命令の実行を一時停止してから、第2の処理命令の実行が完成され、第1の処理命令およびその後の他の命令を実行できるし、さらに、第1の処理命令をキャッシュすることができ、第1の処理命令を予め設定したキャッシュ空間に記憶して、他の命令の実行に影響を及ぼさないようし、第2の処理命令の実行が完成された後に、キャッシュ空間における第1の処理命令を実行できる。本発明は、第1の処理命令が実行できない場合の処理方式に対して限定しない。
本発明の実施例のデータ処理方法によると、既に復号化された処理命令のオペランドが記述子の識別子を含む場合、記述子の識別子に基づいて命令が実行できるか否かを判断し、命令が実行できる場合、記述子の識別子に基づいて命令に対応するデータ処理を実行することによって、プロセッサによる命令が実行できるか否かの判断の複雑度を低下させて、プロセッサの処理効率を向上させることができる。
上記の実施例を例としてデータ処理方法を上記に説明したが、当業者は本発明がこれに限定されないことを理解できることを説明する必要がある。実際に、ユーザは、本発明の技術案に合致する限り、完全に、個人の好み及び/又は実際の適用シナリオに従って各ステップを柔軟に設定できる。
図3fは、本発明の実施例に係るデータ処理装置を示すブロック図である。図3fに示されたように、前記データ処理装置は、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断するための判断モジュール31fと、
前記第1の処理命令が実行できる場合、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行するための実行モジュール32fと、を備える。
可能な一実現形態において、前記実行モジュール32fは、前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得するための内容取得サブモジュールと、前記記述子の内容に基づいて、前記オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するためのアドレス確定サブモジュールと、前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行するための第1の実行サブモジュールと、備える。
可能な一実現形態において、前記判断モジュール31fは、前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドに前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを判断するための命令判断サブモジュールと、第2の処理命令が存在しない場合、前記第1の処理命令が実行できると確定するための第1の実行確定サブモジュールと、を備える。
可能な一実現形態において、前記第1の処理命令および前記第2の処理命令の中の少なくとも一つは、前記記述子に対する書き込み操作を含む。
可能な一実現形態において、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、ここで、前記判断モジュール31fは、前記少なくとも一つの記述子の識別子に基づいて、登録状態または未登録状態を含む、各記述子の第1の状態を、それぞれ確定するための第1の状態確定サブモジュールと、各記述子の第1の状態がいずれも既に登録状態である場合、前記第1の処理命令が実行できると確定するための第2の実行確定サブモジュールと、を備える。
可能な一実現形態において、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、ここで、前記判断モジュール31fは、前記少なくとも一つの記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、各記述子の第2の状態を、それぞれ確定するための第2の状態確定サブモジュールと、各記述子の第2の状態がいずれも操作可能状態である場合、前記第1の処理命令が実行できると確定するための第3の実行確定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令における記述子の識別子に基づいて、処理未完成の第4の処理命令であって、命令キューの、オペランドが前記記述子の識別子を含む処理命令である第4の処理命令が、存在するか否かを判断するための取り消し判断モジュールと、処理未完成の第4の処理命令が存在しない場合、前記第1の処理命令を実行するための取り消し実行モジュールと、をさらに備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得するためのパラメータ取得モジュールと、前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断するための登録判断モジュールと、前記第1の処理命令が実行できる場合、前記第1の処理命令を実行するための登録実行モジュールと、さらに備える。
可能な一実現形態において、前記登録判断モジュールは、前記記述子の識別子が占用されていないこと、前記記述子の内容を記憶する第1の記憶領域が占用されていないこと、および、前記記述子が示すテンソルデータを記憶する第2の記憶領域が占用されていないことの中の少なくとも一つを満たす場合、前記第1の処理命令が実行できると確定するための条件判断サブモジュールを備える。
可能な一実現形態において、前記装置は、前記第1の処理命令が実行できない場合、前記第1の処理命令をブロックまたはキャッシュするための実行制御モジュールをさらに備える。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、ここで、前記テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、人工知能チップをさらに開示し、当該人工知能チップは上記のデータ処理装置を含む。
A1、データ処理方法であって、前記方法は、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断することと、
前記第1の処理命令が実行できる場合、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行することは、
前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得することと、
前記記述子の内容に基づいて、前記オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定することと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行することと、を含む。
A3、請求項A1に記載の方法であって、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断することは、
前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドに前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを判断することと、
第2の処理命令が存在しない場合、前記第1の処理命令が実行できると確定することと、を含む。
A4、請求項A3に記載の方法であって、前記第1の処理命令および前記第2の処理命令の中の少なくとも一つは、前記記述子に対する書き込み操作を含む。
A5、請求項A1に記載の方法であって、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、
ここで、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断することは、
前記少なくとも一つの記述子の識別子に基づいて、登録状態または未登録状態を含む、各記述子の第1の状態を、それぞれ確定することと、
各記述子の第1の状態がいずれも既に登録状態である場合、前記第1の処理命令が実行できると確定することと、を含む。
A6、請求項A1に記載の方法であって、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、
ここで、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断することは、
前記少なくとも一つの記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、各記述子の第2の状態を、それぞれ確定することと、
各記述子の第2の状態がいずれも操作可能状態である場合、前記第1の処理命令が実行できると確定することと、を含む。
A7、請求項A1乃至A6の中のいずれか1項に記載の方法であって、前記方法は、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令の記述子の識別子に基づいて、処理未完成の第4の処理命令であって、命令キュー中の、オペランドが前記記述子の識別子を含む処理命令である第4の処理命令が、存在するか否かを判断することと、
処理未完成の第4の処理命令が存在しない場合、前記第1の処理命令を実行することと、をさらに含む。
A8、請求項A1乃至A7の中のいずれか1項に記載の方法であって、前記方法は、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得することと、
前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断することと、
前記第1の処理命令が実行できる場合、前記第1の処理命令を実行することと、さらに含む。
A9、請求項A8に記載の方法であって、前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断することは、
前記記述子の識別子が占用されていないこと、前記記述子の内容を記憶する第1の記憶領域が占用されていないこと、および、前記記述子が示すテンソルデータを記憶する第2の記憶領域が占用されていないことの中の少なくとも一つを満たす場合、前記第1の処理命令が実行できると確定することを含む。
A10、請求項A1乃至A9の中のいずれか1項に記載の方法であって、前記方法は、
前記第1の処理命令が実行できない場合、前記第1の処理命令をブロックまたはキャッシュすることをさらに含む。
A11、請求項A1に記載の方法であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A12、請求項A11に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A13、請求項A12に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A14、データ処理装置であって、前記装置は、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記第1の処理命令が実行できるか否かを判断するための判断モジュールと、
前記第1の処理命令が実行できる場合、前記記述子の識別子に基づいて、前記第1の処理命令に対応するデータ処理を実行するための実行モジュールと、を備える。
A15、請求項A14に記載の装置であって、前記実行モジュールは、
前記記述子の識別子に基づいて、記述子記憶空間から前記記述子の内容を取得するための内容取得サブモジュールと、
前記記述子の内容に基づいて、前記オペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定するためのアドレス確定サブモジュールと、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行するための第1の実行サブモジュールと、備える。
A16、請求項A14に記載の装置であって、前記判断モジュールは、
前記記述子の識別子に基づいて、処理未完成の第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランドに前記記述子の識別子を有する処理命令を含む第2の処理命令が、存在するか否かを判断するための命令判断サブモジュールと、
第2の処理命令が存在しない場合、前記第1の処理命令が実行できると確定するための第1の実行確定サブモジュールと、を備える。
A17、請求項A16に記載の装置であって、前記第1の処理命令および前記第2の処理命令の中の少なくとも一つは、前記記述子に対する書き込み操作を含む。
A18、請求項A14に記載の装置であって、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、
ここで、前記判断モジュールは、
前記少なくとも一つの記述子の識別子に基づいて、登録状態または未登録状態を含む、各記述子の第1の状態を、それぞれ確定するための第1の状態確定サブモジュールと、
各記述子の第1の状態がいずれも既に登録状態である場合、前記第1の処理命令が実行できると確定するための第2の実行確定サブモジュールと、を備える。
A19、請求項A14に記載の装置であって、前記第1の処理命令のオペランドは、少なくとも一つの記述子の識別子を含み、
ここで、前記判断モジュールは、
前記少なくとも一つの記述子の識別子に基づいて、操作可能状態または操作不可状態を含む、各記述子の第2の状態を、それぞれ確定するための第2の状態確定サブモジュールと、
各記述子の第2の状態がいずれも操作可能状態である場合、前記第1の処理命令が実行できると確定するための第3の実行確定サブモジュールと、を備える。
A20、請求項A14乃至A19の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令中の記述子の識別子に基づいて、処理未完成の第4の処理命令であって、命令キュー中の、オペランドが前記記述子の識別子を含む処理命令である第4の処理命令が、存在するか否かを判断するための取り消し判断モジュールと、
処理未完成の第4の処理命令が存在しない場合、前記第1の処理命令を実行するための取り消し実行モジュールと、をさらに備える。
A21、請求項A14乃至A20の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得するためのパラメータ取得モジュールと、
前記記述子の登録パラメータに基づいて、前記第1の処理命令が実行できるか否かを判断するための登録判断モジュールと、
前記第1の処理命令が実行できる場合、前記第1の処理命令を実行するための登録実行モジュールと、さらに備える。
A22、請求項A21に記載の装置であって、前記登録判断モジュールは、
前記記述子の識別子が占用されていないこと、前記記述子の内容を記憶する第1の記憶領域が占用されていないこと、および、前記記述子が示すテンソルデータを記憶する第2の記憶領域が占用されていないことの中の少なくとも一つを満たす場合、前記第1の処理命令が実行できると確定するための条件判断サブモジュールを備える。
A23、請求項A14乃至A22の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の処理命令が実行できない場合、前記第1の処理命令をブロックまたはキャッシュするための実行制御モジュールをさらに備える。
A24、請求項A14に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A25、請求項A24に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A26、請求項A25に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A27、人工知能チップであって、前記チップは、請求項A14乃至A26の中のいずれか1項に記載のデータ処理装置を備える。
A28、電子デバイスであって、前記電子デバイスは、請求項A27に記載の人工知能チップを備える。
A29、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A27に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A30、請求項A29に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、処理する必要のあるデータ量とデータの次元とがいずれも継続的に増加している。関連技術において、複数の操作が同じ記憶領域に対して操作を行う場合、前の一つの操作が完了するまで待機してから、後の一つの操作を実行する必要があり、プロセッサの処理効率を低下させた。
本発明の実施例によると、プロセッサ操作方法が提供される。
図1gは、本発明の実施例に係るプロセッサ操作方法を示すフローチャートである。前記プロセッサ操作方法は、プロセッサに適用できる。
図1gに示されたように、当該プロセッサ操作方法は、以下のステップを含む。
ステップS11gにおいて、第1の操作が少なくとも一つの細粒度領域を含む目標記憶領域に対する操作である場合、実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断する。
ここで、第1の操作は、読み取り操作または書き込み操作であってもよく、類似に、第2の操作も、読み取り操作または書き込み操作であってもよい。本発明は、第1の操作と第2の操作の具体的なタイプに対して限定しない。一つの操作は、一つまたは複数のオペランドを含んでもよい。目標記憶領域は、第1の操作と第2の操作の一つまたは複数のオペランドに対応する記憶領域であってもよい。目標記憶領域が位置する記憶領域全体は、プロセッサの内部メモリ(例えば、オンチップキャッシュまたはレジスタなど)であってもよいし、プロセッサに接続された外部メモリ(例えば、オフチップメモリなど)であってもよい。
可能な一実現形態において、第1の操作及び/又は第2の操作は、一つまたは複数のオペランドを含んでもよく、目標記憶領域は、第1の操作および第2の操作の中の任意のオペランドに対応する記憶領域であってもよい。目標記憶領域は、第1の操作の中の少なくとも一つのオペランド、および、第2の操作の中の少なくとも一つのオペランドに、共同に対応する記憶領域である。例えば、第1の操作の第1のオペランドおよび第2の操作の第2のオペランドの場合、第1のオペランドは、第1の操作中の任意のオペランドであってもよく、第2のオペランドは、第2の操作中の任意のオペランドであってもよい。第1のオペランドおよび第2のオペランドが同一のオペランドである場合、目標記憶領域は、第1のオペランドの記憶領域または第2の操作の記憶領域であってもよい。第1のオペランドの記憶領域と第2のオペランドの記憶領域とが重なる領域である場合、目標記憶領域は重なる領域である。
可能な一実現形態において、目標記憶領域は、少なくとも一つの細粒度領域を含む。ここで、細粒度領域のサイズ及び/又は数の確定方式は、ハードウェア設計に基づいて確定する方式、目標オペランドの関連操作に基づいて確定する方式、操作の関連パラメータに基づいて定義する方式の中の一つまたは任意の組み合わせを含んでもよい。ここで、ハードウェア設計に基づいて確定する方式は、ハードウェア設計のときに細粒度領域のサイズを確定し、例えば、記憶領域の1行または複数行を一つの細粒度領域に確定する。目標オペランドの関連操作に基づいて確定する方式は、目標オペランドの処理要件、記憶方式、または、伝送方式などに基づいて確定する方式を含み、例えば、目標オペランドが一つの2次元行列データであり、その規模がM*N(M、Nは、いずれも正の整数である)であると、記憶に占有されるバイト数が、1行Mバイトが合計N行あることを意味し、Mバイトが一つの細粒度領域であり、当該目標オペランドに対応する目標記憶領域がN個の細粒度領域を含むと、確定できる。操作の関連パラメータに基づいて定義する方式は、操作に携える細粒度のサイズ及び/又は数に基づいて、目標記憶領域を複数の細粒度領域に区分ける方式を含む。第1の操作の第1のオペランドと第2の操作の第2のオペランドとが当該目標記憶領域に共同に対応される場合、第1の操作と第2の操作は目標記憶領域で複数の細粒度領域を区分けして、本発明の実施例の方法を使用できる。
複数の細粒度領域のサイズは同一であってもよいし、互いに異なってもよいことを説明する必要がある。例えば、第1の操作は、第1の細粒度のサイズ(各細粒度領域のデータバイト数)を携えてもよく、当該第1の細粒度のサイズを64バイトに設定してもよいし、第2の操作は、第2の細粒度サイズ(例えば、各細粒度領域のデータバイト数)を携えてもよく、当該第2の細粒度のサイズを256バイトに設定してもよい。すなわち、第1の操作を実行するときには、64バイト毎を一つの細粒度領域に設定し、第2の操作を実行するときには、256バイト毎を一つの細粒度領域に設定する。また、例えば、第1の操作と第2の操作が携えた細粒度サイズ(例えば、各細粒度領域のデータバイト数)は、いずれも512バイトである。同様に、第1の操作は第1の細粒度の数(例えば、4個に設定する)を携えてもよく、第2の操作は第2の細粒度の数(例えば、8個に設定する)を携えてもよい。すなわち、第1の操作を実行するときには、目標記憶領域を4個の細粒度領域に区分けし、第2の操作を実行するときには、目標記憶領域を8個の細粒度領域に区分けする。操作中で細粒度のサイズと数のような二つのパラメータを同時に携えてもよいことを理解できる。要件によって各細粒度領域のサイズ及び/又は数を確定でき、本発明は、これに対して限定しない。
可能な一実現形態において、当該目標記憶領域の占用状態に基づいて、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。例えば、プロセッサは、占用状態リストを照会することによって目標記憶領域が占用されているか否かを判断でき、占用されていると、判断結果は、実行されている、目標記憶領域に対する第2の操作が、存在することである。ここで、当該占用状態リストは、予め設定してメモリに記憶したものであってもよいし、プロセッサが特定のタスクを実行する前に生成して、当該タスクが完成された後にログオフするものであってもよい。当各記憶領域の占用状態に変化が発生すると、プロセッサは当該占用状態リストの内容を更新して各記憶領域の占用状態を記録する。
可能な一実現形態において、各操作の実行状態を照会することで、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。例えば、各操作のオペランドに対応する記憶領域を記録し、各操作の実行状態を記録できる。目標記憶領域に対する操作の実行状態が未完成であると、判断結果は、実行されている目標操作領域に対する第2の操作が、存在することである。また、オペランドの占用状態を判断することで、オペランドに対応する目標記憶領域が占用されているか否かを確定することによって、実行されている、目標操作領域に対する第2の操作が、存在するか否かを確定できる。本発明は、実行されている、目標操作領域に対する第2の操作が、存在するか否かを判断する判断根拠に対して限定しない。
可能な一実現形態において、目標記憶領域に対する第1の操作を実行する前に、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。
可能な一実現形態において、第1の操作の目標記憶領域に対する実行過程で、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断してもよい。
ステップS12gにおいて、前記第2の操作が存在する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断する。
第1の細粒度領域と第2の細粒度領域は、目標記憶領域の複数の細粒度領域の任意の細粒度領域であってもよい。目標記憶領域に対する操作が目標記憶領域の各細粒度領域に対する操作であることを理解できる。例えば、目標記憶領域Aは、第1行から第10行であり、各々の1行は、一つの細粒度領域であり、目標記憶領域Aは、10個の細粒度領域を含む。目標記憶領域Aに対する書き込み操作を、これら10個の細粒度領域に対する書き込み操作として見なることができる。その実行過程は、1番目の細粒度領域(第1行)を書き込み、1番目の細粒度領域の書き込みを完成した後、2番目の細粒度領域(第2行)を書き込み、2番目の細粒度領域の書き込みを完成した後、3番目の細粒度領域(第3行)を書き込み、等々、10番目の細粒度領域(第10行)の書き込みを完成して、目標記憶領域Aの書き込み操作を完成する。
目標記憶領域に対する操作がある場合、操作の実行に伴い、目標記憶領域の細粒度領域の状態は、操作が既に完成された状態、操作されている状態、および、操作されていない状態を含んでもよい。操作の現在の対象となる細粒度領域の状態は、操作されている状態である。したがって、目標記憶領域に対する操作が存在すると、目標記憶領域の一つの細粒度領域に対する操作が存在し、操作されている細粒度領域が操作の現在の対象となる細粒度領域であると見なすことができる。
可能な一実現形態において、第1の操作の現在の対象となる第1の細粒度領域は、実行しようとする第1の操作の対象となる細粒度領域を含んでもよく、通常、1番目の細粒度領域である。実行されている第1の操作の現在の対象となる細粒度領域を含んでもよく、任意の一つの細粒度領域であってもよい。第2の操作の現在の対象となる第2の細粒度領域は、実行されている第2の操作の現在の対象となる細粒度領域であってもよく、任意の一つの細粒度領域であってもよい。
可能な一実現形態において、目標記憶領域に対する第1の操作を実行する前に、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断する場合、第1の操作の現在の対象となる第1の細粒度領域が第1の操作が実行しようとする細粒度領域である。例えば、目標記憶領域に対する第1の操作を実行する前に、第1の操作の現在の対象となる第1の細粒度領域は、通常、目標記憶領域の1番目の細粒度領域である。このとき、第1の操作は、まだ第1の細粒度領域に対する操作を実行していない。実行されている第2の操作の現在の対象となる第2の細粒度領域は、第2の操作の実行プロセスに関連されてもよい。第2の操作の実行も開始したばかりであると、第2の細粒度領域は目標記憶領域の1番目の細粒度領域であってもよい。このとき、第1の細粒度領域と第2の細粒度領域とが重なる。第2の操作が1番目の細粒度領域の操作を既に完成し、現在の対象となる第2の細粒度領域がP番目の細粒度領域(Pは1よりも大きい整数である)であると、第1の細粒度領域と第2の細粒度領域とが重ならない。
可能な一実現形態において、第1の操作の目標記憶領域に対する操作過程で、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断する場合、第1の操作の実行プロセスに基づいて第1の細粒度領域を確定し、第2の操作の実行プロセスに基づいて第2の細粒度領域を確定し、さらに、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。
可能な一実現形態において、各操作の実行過程のテンポが一致していると、目標記憶領域に対する第1の操作を実行する前にのみ、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断し、且つ、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。ここで、テンポが一致していることは、細粒度領域のサイズが同じである場合、二つの操作の一つの細粒度領域に対する操作期間が同じであることを意味する。
可能な一実現形態において、各操作の実行過程のテンポが不一致しているかまたは一致しているか否かを確定できないと、第1の操作の目標記憶領域に対する操作過程で、現在の対象となる第1の細粒度領域の操作を完成するたびに、続けて、実行されている、目標操作領域に対する第2の操作が、存在するか否かを判断し、続けて、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断することによって、第1の操作を続けて実行できるか否かを確定できる。
可能な一実現形態において、可物理アドレス、ポインター位置、細粒度領域識別子などに基づいて、第1の操作の現在の対象となる第1の細粒度領域と第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断する。例えば、各操作の現在の物理アドレスを記録し、第1の操作の現在の物理アドレスと第2の操作の現在の物理アドレス、および、物理アドレスと細粒度領域との間の対応関係に基づいて、第1の操作の現在の対象となる第1の細粒度領域、および、第2の操作の現在の対象となる第2の細粒度領域をそれぞれ確定し、さらに、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。物理アドレスは、細粒度領域の開始アドレス、終了アドレス、設定位置アドレス、または、リアルタイム操作アドレスの中の一つまたは任意の組み合わせを含んでもよい。また、例えば、各操作に対してポインターを設定し、ポインターが操作の現在の対象となる細粒度領域を指してもよい。第1の操作のポインター位置および第2の操作のポインター位置に基づいて、第1の操作の現在の対象となる第1の細粒度領域、および、第2の操作の現在の対象となる第2の細粒度領域をそれぞれ確定し、さらに、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断できる。また、例えば、各細粒度領域に対して識別子を設定し、操作の現在の対象となる細粒度領域の識別子を記録することによって第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断してもよい。識別子は、文字、数字、または、記号の任意の組み合わせを含んでもよい。他の方式によっても第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断でき、本発明は、第1の細粒度領域と第2の細粒度領域との間が重なるか否かの判断根拠に対して限定しない。
ステップS13gにおいて、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行する。
可能な一実現形態において、第1の操作の現在の対象となる第1の細粒度領域と第2の操作の現在の対象となる第2の細粒度領域とが重ならないと、第1の細粒度領域が第2の操作が既に操作を完成した細粒度領域であってもよいし、第2の操作が操作する必要がない細粒度領域であってもよく、この場合、第1の操作の実行は第2の操作の操作過程および操作結果に影響を発生しなく、第1の操作を実行できる。
本実施例によると、第1の操作の対象となる目標記憶領域が少なくとも一つの細粒度領域を含み、且つ、実行されている、目標記憶領域に対する第2の操作が、存在する場合、第1の操作の現在の対象となる第1の細粒度領域と第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断し、両者が重ならないと、第1の操作を実行する。このように、第1の操作と第2の操作は、現在の対象となる細粒度領域が重ならないと実行でき、第1の操作と第2の操作が同時に目標記憶領域に対して操作を実行することができるようにして、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記方法は、前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックすることをさらに含んでもよい。
可能な一実現形態において、第1の細粒度領域と第2の細粒度領域とが重なることは、第1の細粒度領域と第2の細粒度領域とが完全に重なることまたは一部重なることを含む。第1の細粒度領域と第2の細粒度領域とが重なる場合、第1の操作を実行すると、第1の操作の重なる一部の領域に対する操作が、第2の操作の実行に影響を及ぼして第2の操作の操作結果が正確にならない可能があり、第1の操作の実行にも影響を及ぼして第1の操作の操作結果が正確にならない可能もある。この場合、第1の操作をブロックし、すなわち第1の操作の実行を一時停止させることができ、第2の操作の、現在の対象となる第2の細粒度領域に対する操作が完成された後、第1の操作を実行できる。すなわち、第1の細粒度領域と第2の細粒度領域とが重ならないときに、第1の操作を実行する。
本実施例において、第1の細粒度領域と第2の細粒度領域とが重なる場合、第1の操作をブロックすることによって、各操作の細粒度領域が重なることで発生する操作の誤りを回避し、操作結果の不正確を回避して、各操作の正確性を保証できる。
図5aと図5bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図5aと図5bに示されたように、記憶領域全体20dは、目標記憶領域21dを含み、ここで、目標記憶領域21dは、4個の細粒度領域に区分けされ、順に、細粒度領域22d、細粒度領域23d、細粒度領域24d、および、細粒度領域25dである。
図5aに示されたように、現在、書き込み操作のみを含み、書き込みポインターwpで書き込み操作の現在の対象となる細粒度領域を表す。書き込み操作が開始されたばかりのときに、書き込みポインターwpは細粒度領域22dを指し、まず、実行されている目標記憶領域21dに対する第2の操作が存在するか否かを判断し、判断結果が第2の操作が存在しないことであると、細粒度領域22dに対する書き込み操作を開始し、細粒度領域22dに対する書き込み操作を完成した後に、書き込みポインターwpを増加させ、すなわちwp++させて、次の一つの細粒度領域23dを指すようにして、同様の判断を行った後に、細粒度領域23dに対する書き込み操作を開始し、細粒度領域23dに対する書き込み操作を完成した後、書き込みポインターwpを増加させて、次の一つの細粒度領域24dを指すようにして、同様の判断を行った後に、細粒度領域24dに対する書き込み操作を開始する。
また、図5bに示されたように、現在、読み取り操作と書き込み操作のような二つの操作を含み、ここで、読み取り操作は第1の操作であり、書き込み操作は第2の操作である。また、書き込み操作の書き込みポインターwpと読み取り操作の読み取りポインターrpを使用して、書き込み操作と読み取り操作の現在の対象となる細粒度領域をそれぞれ表す。
読み取り操作(第1の操作)を実行する場合、実行されている目標記憶領域21dに対する第2の操作が存在するか否かを判断する。判断を経て、現在、第2の操作書き込み操作が存在すると、さらに、読み取り操作(第1の操作)の現在の対象となる第1の細粒度領域(図5bの中の細粒度領域22d)と書き込み操作(第2の操作)の現在の対象となる第2の細粒度領域(図5bの中の細粒度領域24d)との間が重なるか否かを判断し、例えば、細粒度領域の番号(22dおよび24d)、または、rpとwpとの間の関係(rp=0、wp=2、rp<wp)に基づいて、第1の細粒度領域と第2の細粒度領域との間が重ならないと確定し、その後、読み取り操作(第1の操作)を実行できる。
細粒度領域22dに対する読み取り操作を完成した後、rpを増加させ、すなわちrp++させて、次の一つの細粒度領域23dを指すようにして、同様の判断を行った後に、第1の操作の細粒度領域23dに対する操作を開始し、細粒度領域23dに対する読み取り操作を完成した後に、rpを増加させて次の一つの細粒度領域24dを指すようにする。この場合、続けて第1の細粒度領域と第2の細粒度領域との間が重なるか否かを判断し、細粒度領域番号が同じかまたはポインターrp=wpであると、第1の操作の現在の対象となる第1の細粒度領域と第2の操作の現在の対象となる第2の細粒度領域とが重なると判断でき、すると、第1の操作を実行できなく、第1の操作をブロックする。第2の操作が細粒度領域24dに対する操作を完成した後に、wpを増加させ、次の一つの細粒度領域25dを指すと、rp<wpであり、第1の操作を実行できる。
可能な一実現形態において、前記第1の操作および前記第2の操作の中の少なくとも一つの操作が書き込み操作であってもよい。すなわち、目標データの操作が、書き込みの後の読み取り(第2の操作が書き込み操作であり、第1の操作が読み取り操作である)、読み取りの後の書き込み(第2の操作が読み取り操作であり、第1の操作が書き込み操作である)、または、書き込みの後の書き込み(第2の操作と第1の操作いずれもが書き込み操作である)である場合、本発明の実施例の方法を使用できる。
例えば、第1の操作が読み取り操作であり、第2の操作が書き込み操作であり、第1の操作が読み取る必要がある目標オペランドが第2の操作の書き込み操作後のデータであり、第2の操作の対象となる第2の細粒度領域の番号が8であると、第1の操作は番号が8前の細粒度領域のデータのみを読み取ることができる。つまり、第1の操作の現在の対象となる第1の細粒度領域が番号1~7の細粒度領域のの任意の一つであると、第1の操作を実行できる。
可能な一実現形態において、第1の操作と第2の操作がいずれも読み取り操作であると、第1の操作と第2の操作の細粒度領域間の関係は操作結果に影響を及ぼさなく、本発明の実施例方法を使用でき、細粒度領域の判断せずに第1の操作を直接実行してもよい。
本実施例において、第1の操作および第2の操作の中の少なくとも一つの操作が書き込み操作である場合、本発明の実施例の方法を使用することで、目標記憶領域を一つまたは複数の細粒度領域に区分けし、細粒度領域を単位にして操作を実行することによって、読み取りの後の書き込み、書き込みの後の読み取り、書き込みの後の書き込みなどの操作が正確に実行して、正確な実行結果を得ることができるだけでなく、操作間の待機時間を短縮して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定できる。
前記細粒度領域のサイズ及び/又は数の確定は、操作が生成される前に予め設定されてよいし、各操作が生成されるときにリアルタイムに確定されてもよいことを理解できる。ここで、操作の前に細粒度領域のサイズ及び/又は数を予め設定することは、予め設定された長さのデータが位置する領域、および、予め設定された次元のデータが位置する領域の中の少なくとも一つ基づいて、細粒度領域のサイズ及び/又は数を確定することを含んでもよい。設定長さのデータ和予め設定された次元のデータは、各操作のオペランドとかんけいなくてもよいし、事前に各操作のオペランドに基づいて総合的に確定してもよく、要件に従って確定できる。各操作が生成されるときに細粒度領域のサイズ及び/又は数をリアルタイムに確定することは、各操作のオペランドに基づいて設定長さのデータまたは設定次元のデータを確定することを含んでもよく、すなわち、各操作の異なるオペランドに基づいて、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つをリアルタイムに確定して、細粒度領域のサイズ及び/又は数を確定することを含んでもよい。
例を挙げると、設定長さのデータが位置する領域の大きさに基づいて、細粒度領域のサイズ及び/又は数を確定できる。例えば、目標オペランドの設定長さのデータが位置する記憶領域のサイズに基づいて、細粒度領域のサイズを設定でき、当該領域は固定のビット幅であってもよい。例えば、目標オペランドBが20*10*5の3次元データであり、目標記憶領域における記憶方式が40*25(すなわち、各行が40ビットのデータであり、合計25行である)であると、設定長さを40ビットに設定し、目標記憶領域の各行を一つの細粒度領域に設定して、目標オペランドBの記憶領域を25個の細粒度領域に区分けしてもよいし、記憶領域の5行毎を一つの細粒度領域に設定して、目標オペランドBの記憶領域を5個の細粒度領域に区分けしてもよい。本発明はこれに対して限定しない。
設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて、目標記憶領域で細粒度領域のサイズ及び/又は数を確定してもよいし、目標記憶領域が位置する記憶領域全体で細粒度領域のサイズ及び/又は数を確定してもよいし、或いは、記憶領域全体の他の領域で細粒度領域のサイズ及び/又は数を確定してもよいことを理解できる。上記の例はその中の一つの状況を示したが、本発明は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて、細粒度領域のサイズ及び/又は数を確定する処理の適用区分範囲を限定しない。
可能な一実現形態において、設定次元数のデータが位置する領域の大きさに基づいて、細粒度領域のサイズ及び/又は数を確定できる。例えば、目標オペランドCが20*10の2次元データであると、設定次元数が1次元であり、長さが20であるデータによって、目標オペランドCの記憶領域を10個の細粒度領域に区分けする。
なお、目標オペランドの記憶領域の設定長さのデータが位置する領域の大きさ、および、設定次元のデータが位置する領域の大きさに同時に基づいて、細粒度領域のサイズ及び/又は数を確定できる。例えば、目標オペランドCに対して、設定次元数が2次元であり、サイズが4*2であるデータによって、細粒度領域を区分けして、目標オペランドCの記憶領域を25個の細粒度領域に区分けすることができる。
当業者は、実際の状況に従って細粒度領域のサイズ及び/又は数を設定して区分けすることができ、本発明はこれに対して限定しないことを理解すべきである。
本実施例において、設定長さのデータが位置する領域の大きさ及び/又は設定次元のデータが位置する領域の大きさに基づいて、前記細粒度領域のサイズ及び/又は数を確定することによって、データ特性に対して細粒度領域に対する区分けを完成して、細粒度領域区分けの柔軟性を向上させて、複数の操作を実行する効率を向上させることができ、また、細粒度領域の区分け結果が異なるオペランドの特性にもう一層合致するようにして、異なるタイプオペランドの処理要件に適応させて、複数の操作全体の実行効率をさらに向上させることができる。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定されてもよい。
ここで、ハードウェア計算能力は、ハードウェアの一つの計算サイクルで並行して処理するデータ量であってもよく、ハードウェア帯域幅は、データ伝送能力であってもよく、例えば、単位時間あたりに伝送するデータ量である。
例を挙げると、当該プロセッサ操作方法を適用するプロセッサは、そのハードウェア計算能力が一つの計算サイクルで100ビットのデータを並行して処理し、ハードウェア帯域幅が単位時間あたりに200ビットのデータを伝送することであると、大きさが1000ビットである目標記憶領域に対して、ハードウェア計算能力に基づいて当該目標記憶領域を10個の細粒度領域に区分けしてもよいし、ここで、各々の細粒度領域は100ビットのデータを含み、または、ハードウェア帯域幅に基づいて当該目標記憶領域を5個の細粒度領域に区分けしてもよく、ここで、各々の細粒度領域は200ビットのデータを含む。
ハードウェア計算能力およびハードウェア帯域幅は、プロセッサハードウェアによって異なり、本発明は、ハードウェア計算能力およびハードウェア帯域幅に対して限定しないことを理解すべきである。
ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、目標記憶領域で細粒度領域のサイズ及び/又は数を確定してもよいし、目標記憶領域が位置する記憶領域全体で細粒度領域のサイズ及び/又は数を確定してもよいし、或いは、記憶領域全体の他の領域で細粒度領域のサイズ及び/又は数を確定してもよいことを理解できる。上記の例はその中の一つの状況のみを示したが、本発明は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、細粒度領域のサイズ及び/又は数を確定する処理の適用区分範囲に対して限定しない。
このような方式によって、プロセッサの処理能力(ハードウェア計算能力及び/又はハードウェア帯域幅)に基づいて前記細粒度領域のサイズ及び/又は数を確定できて、細粒度領域の区分け結果が異なるハードウェア使用環境の要件にもう一層合致するようにして、細粒度領域を使用して実行する操作とプロセッサの処理能力とを同期して、ハードウェアの実行効率を最大限に発揮して、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記第1の操作は、第1の処理命令の操作であってもよく、前記第2の操作は、第2の処理命令の操作であってもよく、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令であってもよい。
ここで、第1の処理命令と第2の処理命令は、データアクセス命令、演算命令、同期命令、および、通信命令などの一つまたは複数を含んでもよく、例えば、当該命令は読み取りおよび演算命令である。本発明は、第1の処理命令と第2の処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、第1の命令は、第2の命令と依存関係を有してもよく、例えば、第1の命令が第2の命令の計算結果を使用する必要があるような依存関係を有する。第1の命令は、第2の命令と依存関係を有さないでもよい。第1の命令が第2の命令と依存関係を有する場合、本発明の実施例の方法によって、第1の命令と第2の命令と並行して実行できる。
本実施例において、第1の操作と第2の操作は、異なる命令の操作であり、本発明の実施例の方法を利用すると、命令実行効率を向上させることができる。
可能な一実現形態において、第1の操作と第2の操作は、同じ処理命令の二つの操作であってもよく、第2の操作は第1の操作と関係ないでもよいし、または、第2の操作は第1の操作の結果に基づく操作であってもよい。ここで、当該処理命令は、データアクセス命令、演算命令、同期命令、および、通信命令などの一つまたは複数を含んでもよく、例えば、当該命令が「読み取りと加算」演算命令であると、第1の操作が読み取り操作であり、第2の操作が加算演算操作である。本発明は、当該処理命令の具体的なタイプに対して限定しない。
可能な一実現形態において、前記方法は、前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録することを含んでもよく、
ステップS13gは、前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することを含んでもよい。
可能な一実現形態において、位置情報は、細粒度領域の識別子情報を含んでもよい。識別子情報は、数字、文字、および、記号の任意の組み合わせを含んでもよい。本発明は、これに対して限定しない。
例えば、位置情報は、細粒度領域の番号情報を使用して表し、目標記憶領域は6個の細粒度領域に区分けされることができ、その番号は順に0~5である。目標記憶領域に対する第1の操作と第2の操作を実行する場合、第1の操作の現在操作している第1の細粒度領域の第1の位置情報(例えば、番号が2である)、および、第2の操作の現在操作している第2の細粒度領域の第2の位置情報(例えば、番号が5である)をそれぞれ記録し、その後、番号情報間の関係(2<5)に基づいて、第1の位置情報と第2の位置情報とが不一致することが分かり、このとき、第1の操作を実行する。
可能な一実現形態において、位置情報は、細粒度領域のアドレス情報を含んでもよい。アドレス情報は、細粒度領域の開始アドレス情報、終了アドレス情報、細粒度領域の予め設定された位置アドレス情報、および、アドレスオフセット量情報の中の少なくとも一つを含んでもよい。例えば、細粒度領域の位置情報は、ADDR15~ADDR31である。
このような方式によって、位置情報を使用して第1の細粒度領域と第2の細粒度領域とが重なるか否かを直接効率的に判断して、第1の操作を実行するか否かを確定し、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含んでもよく、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含んでもよい、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することは、前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行することを含んでもよい。
例を挙げると、第1の操作が第2の操作の後の操作であり、その目標記憶領域が6個の細粒度領域に区分けされ、その位置情報を既に操作を完成した細粒度領域の数を使用して表すことができる。目標記憶領域に対する第1の操作と第2の操作を実行する場合、第1の操作の既に操作を完成した細粒度領域の第1の数(例えば、第1の数は3である)、および、第2の操作の既に操作を完成した細粒度領域の第2の数(例えば、第2の数は5である)をそれぞれ記録し、その後、第1の操作と第2の操作の実行順序、および、第1の数と第2の数の関係に基づいて、第1の操作が第2の操作の後の操作であり、且つ、第1の数である3が第2の数である5よりも小さいことが分かり、このとき、第1の操作を実行する。
このような方式によって、既に操作を完成した細粒度領域の数に基づいて第1の細粒度領域と第2の細粒度領域とが重なるか否かを直感的に判断し、さらに第1の操作を実行するか否かを確定できて、判断過程を簡略化して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記目標記憶領域は、操作可能領域および操作不可領域を含んでもよく、ステップS12gは、前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断することをさらに含んでもよい。
可能な一実現形態において、目標記憶領域は、一つまたは複数の操作不可領域を含んでもよいし、連続的または不連続な操作不可領域を含んでもよい。
可能な一実現形態において、目標記憶領域は、一つまたは複数の操作可能領域を含んでもよいし、連続的または不連続な操作可能領域を含んでもよい。本発明は、これに対して限定しない。
可能な一実現形態において、第1の操作が目標記憶領域に対する操作である場合、まず、実行されている、目標記憶領域に対する第2の操作が、存在するか否かを判断し、第2の操作が存在する場合、第1の操作の対象となる第1の細粒度領域が操作可能領域内に位置するか否かを判断でき、第2の操作が存在し、且つ、第1の操作の対象となる第1の細粒度領域が操作可能領域内に位置する場合、その後、第1の操作の対象となる第1の細粒度領域と第2の操作の対象となる第2の細粒度領域との間が重なるか否かを判断でき、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行できる。
可能な一実現形態において、前記操作不可領域は、操作禁止領域および操作非禁止領域を含んでもよい。第1の操作が書き込み操作であり、目標オペランドの一部のデータが変更不可である場合、当該一部のデータが位置する記憶領域を操作禁止領域に設定して、当該一部のデータを誤って変更することを回避し、実行されている第2の操作が第1の操作の前のデータを読み取る読み取り操作(読み取りの後の書き込み)であると、第2の操作が位置する一つまたは複数の細粒度領域を操作非禁止領域に設定し、第2の操作が操作非禁止領域に対する読み取りを完成した後、当該操作非禁止領域を操作可能領域に変更できる。本発明は、操作不可領域の分類および区分け方式に対して限定しない。
本実施例において、まず、第1の操作の細粒度領域が操作できるか否かを判断してから、異なる操作の細粒度領域間の関係を判断し、一方では判断の効率を向上させ、もう一方では指定されたデータを保護して誤操作の発生を防止でき、指定された空間に対する書き込みを禁止することで、当該空間を予め用意して、他の操作に実行に使用することによって、プロセッサが細粒度同期を実行する際の柔軟性をさらに向上させることができる。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は、前記第2の操作の操作位置に従って更新され、前記方法は、前記第2の操作の対象となる第2の細粒度領域が前記操作不可領域から移動して出た後、前記操作不可領域の位置を更新することをさらに含んでもよい。
つまり、第2の細粒度領域を含む操作不可領域は、第2の操作の対象となる第2の細粒度領域の更新に従って更新されなくてもよく、第2の操作の対象となる第2の細粒度領域が操作不可領域から移動して出た後、操作不可領域の位置を更新する。例えば、操作不可領域は、前記第2の細粒度領域を含むQ個の細粒度領域(Qは1よりも大きい整数である)であり、現在の操作不可領域は、2番目~2+Q-1番目の細粒度領域を含む。第2の操作が操作不可領域内でQ個の細粒度領域の実行を完成した後に、操作不可領域から移動して出ると、操作不可領域の位置は第2の操作の対象となる細粒度領域の位置に従って更新され、更新後の操作不可領域は、2+Q番目~2+Q+Q-1番目の細粒度領域を含む。ここで、Qの大きさは、要件に従って任意に確定できる。
図6aと図6bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図6aに示されたように、目標記憶領域30dは、8個の細粒度領域を含み、ここで、操作可能領域は、5個の細粒度領域(細粒度領域31d、細粒度領域35d、細粒度領域36d、細粒度領域37d、および、細粒度領域38d)を含み、操作不可領域M0は、3個の細粒度領域(細粒度領域32d、細粒度領域33d、および、細粒度領域34d)を含む。ここで、第2の操作の現在の対象となる第2の細粒度領域は、細粒度領域32である。
第2の操作が細粒度領域32dに対する操作の実行を完成した後、第2の操作の現在の対象となる第2の細粒度領域は細粒度領域33dであり、このとき、第2の操作の現在の対象となる第2の細粒度領域(細粒度領域33d)が操作不可領域から移動して出なく、操作不可領域の位置を更新しないし、第2の操作が細粒度領域33dに対する操作の実行を完成した後、第2の操作の現在の対象となる第2の細粒度領域は細粒度領域34dであり、このとき、第2の操作の現在の対象となる第2の細粒度領域(細粒度領域34d)が操作不可領域から依然として移動して出なく、操作不可領域の位置を更新しないし、第2の操作が細粒度領域34dに対する操作の実行を完成した後、第2の操作の現在の対象となる第2の細粒度領域は細粒度領域35dであり、このとき、第2の操作の現在の対象となる第2の細粒度領域(細粒度領域35d)操作不可領域から既に移動して出たから、操作不可領域の位置を細粒度領域(35d、36d和37d)に更新する。本発明は、操作不可領域の大きさに対して限定しないことを説明する必要がある。
図6bに示されたように、操作不可領域の位置を更新した後、在目標記憶領域30dにおける操作可能領域は、5個の細粒度領域(細粒度領域31d、細粒度領域32d、細粒度領域33d、細粒度領域34d、および、細粒度領域38d)を含み、操作不可領域M0は、3個の細粒度領域(細粒度領域35d、細粒度領域36d、および、細粒度領域37d)を含む。
このような方式によって、操作不可領域の位置をリアルタイムに更新する必要がなく、操作不可領域の更新によって発生されるオーバーヘッドを削減できる。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新されてもよい。
つまり、操作不可領域が前記第2の細粒度領域を含む複数の細粒度領域である場合、第2の細粒度領域を操作不可領域の位置(例えば、中間位置、最後位置など)を設定し、操作不可領域の位置が第2の操作の操作位置に従って更新されてもよい。例えば、操作不可領域は、前記第2の細粒度領域を含むQ個の細粒度領域であり、現在の操作不可領域は、2番目~2+Q-1番目の細粒度領域を含み、第2の細粒度領域の操作不可領域内の設定位置は、R番目(ここでR≦Q)であってもよい。第2の操作が現在の対象となる細粒度領域に対する操作の実行を完成した後、第2の操作は次の一つの細粒度領域に対する操作の実行を開始し、このとき、操作不可領域の位置が第2の操作の操作位置に従って更新されてもよく、更新後の操作不可領域は、2+1番目~2+Q番目の細粒度領域を含む。ここで、Qの大きさおよびRの値は、要件に従って確定できる。本発明は、操作不可領域が含む細粒度領域の数、および、第2の細粒度領域の操作不可領域内での位置に対していずれも限定しない。
図7aと図7bは、本発明の実施例に係るプロセッサ操作方法の適用シナリオを示す模式図である。図7aに示されたように、目標記憶領域40は、8個の細粒度領域を含み、ここで、操作可能領域は、5個の細粒度領域(細粒度領域41、細粒度領域45、細粒度領域46、細粒度領域47、および、細粒度領域48)を含み、操作不可領域M1は、3個の細粒度領域(細粒度領域42、細粒度領域43、および、細粒度領域44)を含む。ここで、第2の操作の現在の対象となる第2の細粒度領域設定を操作不可領域M1に位置する2番目の細粒度領域に設定し、つまり、細粒度領域43に設定する。
第2の操作が細粒度領域43に対する操作の実行を完成した後、第2の操作の現在の対象となる第2の細粒度領域は細粒度領域44であり、このとき、操作不可領域の位置が第2の操作の操作位置に従って更新されることによって、第2の操作の現在の対象となる第2の細粒度領域が操作不可領域M1の2番目の細粒度領域に位置するようにする。
図7bに示されたように、操作不可領域の位置を更新した後の目標記憶領域40で、操作可能領域は、5個の細粒度領域(細粒度領域41、細粒度領域42、細粒度領域46、細粒度領域47、および、細粒度領域48)を含み、操作不可領域M1は、3個の細粒度領域(細粒度領域43、細粒度領域44、および、細粒度領域45)を含む。
このような方式によって、操作不可領域の位置をリアルタイムに更新して、細粒度処理の同期程度を向上させ、データ同期処理の効率をさらに向上させることができる。
可能な一実現形態において、前記目標記憶領域は、循環バッファ記憶領域を含んでもよい。前記循環バッファ記憶領域は、データの循環記憶のために使用できる。
図8は、本発明の実施例に係るプロセッサ操作方法を示す循環バッファ記憶領域の模式図である。図8に示されたように、目標記憶領域50は、循環バッファ記憶領域51を含み、そのアドレスは、start_addr~end_addrである。
例えば、第2の操作が書き込み操作であり、目標オペランドを循環バッファ記憶領域51に書き込みことができ、そのアドレスポインターpointは、start_addrから開始して、end_addrまで、順に、下へデータを記憶し、すなわち、循環バッファ記憶領域51の記憶空間を完全に埋め、このとき、アドレスポインターpointは、start_addrにジャンプして戻って、当該アドレスが同期する必要がある第1の操作によって使用が完了されたか否かを判断し、使用が完了された場合、データを当該アドレスに記憶して、元のデータを上書きし、その後アドレスポインターpointは順に下へ移動し、直到end_addr、このとき、データを再び上書きし、上記の過程を循環できる。
本実施例において、循環バッファ記憶領域を使用してデータを記憶すると、データ記憶空間を節約できるだけでなく、記憶空間使用効率も向上させることができる。
可能な一実現形態において、循環バッファ記憶領域を複数の細粒度領域に区分けすることができる。各々の細粒度領域ごとに、リスト、フラグビット、または、他の方式によって、細粒度領域のデータが上書きできるか否かを管理でき、例えば、上書きフラグビットを設定することで、細粒度領域のデータが上書きできるか否かを表すことができる。
例を挙げると、第1の操作は読み取り操作であり、第2の操作は書き込み操作であり、すなわち、書き込みの後の読み取りであると、書き込みポインターwpおよび読み取りポインターrpが第2の操作と第1の操作の現在の対象となる細粒度領域をそれぞれ表すようにすることができる。第2の操作の現在の対象となる第2の細粒度領域の上書きフラグビットが上書きできることである場合、第2の操作を実行して、データを書き込むことができ、データの書き込みを完成した後、当該第2の細粒度領域の上書きフラグビットを上書きできないことに設定し、wp++させ、第2の操作の現在の対象となる第2の細粒度領域が次の一つの細粒度領域であり、wp>end_addrであると、wp=start_addrであるし、第1の操作の現在の対象となる第1の細粒度領域と第2の細粒度領域との間が重ならなく、且つ、第1の細粒度領域の上書きフラグビットが上書きできないことである場合、第1の操作を実行でき、データを読み取り、データの読み取りを完成した後、当該第1の細粒度領域の上書きフラグビットを上書きできることに設定し、rp++させ、第1の操作の現在の対象となる第1の細粒度領域が次の一つの細粒度領域であり、rp>end_addrであると、rp=start_addrであるし、第1の細粒度領域と第2の細粒度領域とが重なる場合、すなわち、rp=wpである場合、第1の操作を実行できなく、第2の操作が現在の対象となる第2の細粒度領域に対する操作が完成するまでに待機した後、第1の操作を実行できる。
本実施例において、循環バッファアクセス領域を複数の細粒度領域に区分けすることによって、複数の操作が循環バッファ記憶領域に対して同時に操作するようにして、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記細粒度領域は、状態識別子を含んでもよく、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含んでもよく、
ステップS13gは、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、完成状態であると、前記第1の操作を実行することと、を含んでもよい。
可能な一実現形態において、細粒度領域は、状態識別子を含んでもよく、状態識別子は、細粒度領域に対する操作の完成状態または未完成状態を含んでもよい。例えば、状態識別子は、0と1を使用して表すことができ、ここで、0が細粒度領域に対する操作が未完成状態にあることを表し、1が細粒度領域に対する操作が完成状態にあることを表し、または、0が細粒度領域に対する操作が完成状態にあることを表し、1が細粒度領域に対する操作が未完成状態にあることを表してもよい。本発明は、状態識別子の表現方式に対して限定しない。
可能な一実現形態において、第2の操作は目標記憶領域を既に操作を完成した細粒度領域の状態識別子を完成状態に設定し、操作されていないまたは操作されている細粒度領域の状態識別子を未完成状態に設定する。さらに、既に操作を完成した細粒度領域における一部の細粒度領域の状態識別子を完成状態に設定し、他の細粒度領域を未完成状態に設定してもよい。例えば、第2の操作が5個の細粒度領域の操作を既に完成した場合、前から3個の細粒度領域の状態識別子を完成状態に設定し、他の細粒度領域を未完成状態に設定してもよい。
可能な一実現形態において、実行されている目標記憶領域に対する第2の操作が存在する場合、第1の操作の現在の対象となる第1の細粒度領域および第2の操作の現在の対象となる第2の細粒度領域に対して、第1の細粒度領域と第2の細粒度領域との間が重ならないと確定した後、第1の細粒度領域の状態識別子が完成状態であるか否かを判断し、第1の細粒度領域の状態識別子が完成状態であると、第1の操作を実行できる。
本実施例において、細粒度領域は状態識別子を含み、第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の細粒度領域の状態識別子に基づいて、第1の操作が実行できるか否かを確定することによって、プロセッサの処理効率を向上させる同時に、データ処理の正確性を向上させることができる。
可能な一実現形態において、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、ステップS13gは、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、完成状態であると、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含んでもよい。
つまり、実行されている目標記憶領域に対する第2の操作が存在する場合、第1の操作の現在の対象となる第1の細粒度領域および第2の操作の現在の対象となる第2の細粒度領域に対して、第1の細粒度領域の状態識別子が完成状態であると確定した後、第1の細粒度領域と第2の細粒度領域との間の重なり関係に基づいて、第1の操作が実行できるか否かを確定する。第1の細粒度領域と第2の細粒度領域との間が重ならない場合、第1の操作を実行できる。
本実施例において、細粒度領域は状態識別子を含み、第1の細粒度領域の状態識別子が完成状態であると確定した後、第1の細粒度領域と第2の細粒度領域との間の重なり関係に基づいて、第1の操作が実行できるか否かを確定することによって、データ処理の正確性を向上させる同時に、プロセッサの処理効率を向上させることができる。
可能な一実現形態において、前記第1の操作と前記第2の操作の目標のオペランドは、一致しており、前記目標記憶領域は、前記目標オペランドの記憶領域である。
可能な一実現形態において、第1の操作の目標オペランドと第2の操作の目標オペランドとが一致している場合、目標記憶領域は、一つの目標オペランドの記憶領域であってもよい。当該目標オペランドの記憶領域が、目標記憶領域である。目標記憶領域を複数の細粒度領域に区分けした後、本発明の実施例の方法によって、各操作の実行結果に影響を及ぼせずに、同一の目標オペランドを操作する二つの操作を並行して実行するようにすることができる。
本実施例において、本発明の実施例の方法を使用して、同一のオペランドに対する二つの操作の並行する実行を実現して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記目標記憶領域は、第1の操作第1のオペランドの第1の記憶領域と第2の操作第2のオペランドの第2の記憶領域との間の重なる領域である。
可能な一実現形態において、二つのオペランドの記憶領域に重なる領域が存在する場合、目標記憶領域が重なる領域である。二つの操作の記憶領域の重なる領域を複数の細粒度領域に区分けして、本発明の実施例の方法によって、各操作の実行結果に影響を及ぼせずに、オペランドの記憶領域が重なる領域を有する二つの操作を並行して実行するようにすることができる。
本実施例において、二つの操作のオペランドの記憶領域が重なる場合、本発明の実施例の方法を使用して、二つの操作の並行する実行を実現して、プロセッサの実行効率を向上させることができる。
可能な一実現形態において、前記方法は、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けすることをさらに含んでもよい。
可能な一実現形態において、目標記憶領域は、記憶装置の記憶領域全体の一部の記憶領域または全部の記憶領域であり、前記記憶領域全体が予め設定した複数の細粒度領域を含んでもよい。
例えば、目標記憶領域が位置する記憶領域全体がRAM1であり、RAM1は予め設定したM個の細粒度領域(Mは正の整数である)を含んでもよい。目標記憶領域は、RAM1でRAM1のn個の細粒度領域(nは正の整数である、且つ、n≦Mである)を占用してもよい。目標記憶領域は、特定の細粒度領域における一部の領域を含んでもよいことを説明する必要がある。上記の例のRAM1において、各々の細粒度領域が記憶領域全体RAM1の1行であり、各行が100ビットであると仮定する。目標記憶領域は、前の(n-1)個の完全な細粒度領域を含み、また、最後一つの細粒度領域の一部の領域をさらに含んでもよく、例えば、RAM1のn行目(n番目の細粒度領域)の前の80個のビットを含んでもよい。
可能な一実現形態において、記憶装置の記憶領域全体を複数の細粒度領域に区分けする場合、記憶領域全体の任意の目標記憶領域に対する任意の操作の場合、目標記憶領域が第1の操作と第2の操作の同一の目標オペランドの記憶領域であるか、目標記憶領域が第1の操作における第1のオペランドの記憶領域と第2の操作における第2のオペランドの記憶領域との重なる領域であるかに関わらず、いずれも、記憶領域全体の細粒度区分け結果に基づいて、目標記憶領域における細粒度領域を確定できる。任意の操作の任意のオペランドの記憶領域全体における記憶領域は、同じサイズの細粒度領域を有する。
可能な一実現形態において、記憶装置のハードウェア特性に基づいて、記憶領域全体の細粒度領域のサイズ及び/又は数を確定でき、すなわち、記憶装置のハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて、記憶領域全体の細粒度領域のサイズ及び/又は数を確定できる。
本実施例において、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けし、記憶領域全体の任意の目標記憶領域に対する任意の操作の場合、いずれも、同じ細粒度サイズに従って実行できるし、異なる操作を本発明の実施例の方法に従って並行して実行すると、より便利に同期させて、操作の並行度を向上させ、プロセッサの処理効率をさらに向上させることができる。
可能な一実現形態において、前記方法は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記第1の操作における第1のオペランドの第1の記憶領域を複数の細粒度領域に区分けすることと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作における第2のオペランドの第2の記憶領域を複数の細粒度領域に区分けすることと、をさらに含んでもよい。
可能な一実現形態において、操作に細粒度区分け情報を携え、細粒度区分け情報は細粒度のサイズ及び/又は数を含んでもよい。異なる操作は、異なる細粒度区分け情報を携えてもよい。同一のタイプの操作は、同一の細粒度区分け情報を携えてもよい。操作のオペランドの設定位置に細粒度区分け情報を携えてもよいし、オペレーションコードまたはオペランドに細粒度区分けするか否かの識別子情報を携えてもよい。本発明は、細粒度区分け情報の内容および表現方式に対して限定しない。
可能な一実現形態において、第1の操作に携える第1の細粒度区分け情報に基づいて、第1のオペランドの第1の記憶領域を複数の第1の細粒度領域を区分けする。第1のオペランドが位置する記憶領域全体の他の領域に対しては、細粒度の区分けを実行しなくてもよいし、他の操作に携える細粒度区分け情報に基づいて細粒度の区分けを実行してもよい。本発明は、これに対して限定しない。
第2の操作の第2のオペランドと第1の操作の第1のオペランドとが一致していると、第1の記憶領域と第2の記憶領域とが完全に重なることを理解できる。第1の細粒度区分け情報と第2の細粒度区分け情報とは、一致してもよいし、不一致してもよい。第1の細粒度区分け情報と第2の細粒度区分け情報とが不一致している場合、第1の記憶領域を第2の細粒度区分け情報に同時に従って細粒度区分けすることができる。すなわち、同一の記憶領域に対して、異なる操作は、異なるサイズまたは数の複数の細粒度領域に区分けすることができる。このとき、第1の操作の現在の対象となる第1の細粒度領域の物理アドレス、および、第2の操作の現在前記の対象となる第2の細粒度領域の間の物理アドレスに基づいて、第1の細粒度領域と第2の細粒度領域とが重なるか否かを判断し、判断結果に基づいて第1の操作と第2の操作を並行して実行できる。
可能な一実現形態において、各操作に携える細粒度区分け情報は、設定長さの操作データが位置する領域、および、設定次元数のオペランドが位置する領域の中の少なくとも一つに基づいて確定した前記細粒度領域のサイズ及び/又は数を含んでもよく、細粒度の区分け結果が操作のオペランドのタイプまたは属性にもう一層合致するようにする。
本実施例において、第1の操作に携える第1の細粒度区分け情報に基づいて、前記第1の操作における第1のオペランドの第1の記憶領域を複数の細粒度領域に区分けすることと、第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作における第2のオペランドの第2の記憶領域を複数の細粒度領域に区分けすることと、をさらに含んでもよい。操作に携える細粒度区分け情報に基づいて細粒度の区分けすることによって、細粒度の区分け結果が各操作の処理要件にもう一層合致するようにし、操作の並行がもう一層柔軟にすることができる。
当業者は、実際の状況に従って目標記憶領域に対して細粒度領域を区分けするか設定することができ、本発明はこれに対して限定しないことを理解すべきである。
上記の実施例を例としてプロセッサ操作方法を上記に説明したが、当業者は本発明がこれに限定されないことを理解できることを説明する必要がある。実際に、ユーザは、本発明の技術案に合致する限り、完全に、個人の好み及び/又は実際の適用シナリオに従って各ステップを柔軟に設定できる。
図3gは、本発明の実施例に係るプロセッサ操作装置を示すブロック図である。図3gに示されたように、前記プロセッサ操作装置は、
第1の操作が少なくとも一つの細粒度領域を含む目標記憶領域に対する操作である場合、実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断するための操作判断モジュール71gと、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断するための重なり判断モジュール72gと、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための実行モジュール73gと、を備える。
可能な一実現形態において、前記装置は、前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックするための実行制御モジュールをさらに備える。
可能な一実現形態において、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
可能な一実現形態において、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定する。
可能な一実現形態において、前記第1の操作は、第1の処理命令中操作であり、前記第2の操作は、第2の処理命令中の操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
可能な一実現形態において、前記装置は、前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録するための位置記録モジュールをさらに備え、前記実行モジュール73は、前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行するための第1の実行サブモジュールを備える。
可能な一実現形態において、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、第1の実行サブモジュールは、さらに、前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行する。
可能な一実現形態において、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記重なり判断モジュール72は、前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断するための判断サブモジュールを備える。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は、前記第2の操作の操作位置に従って更新され、前記装置は、
前記第2の操作の対象となる第2の細粒度領域が前記操作不可領域から移動して出た後、前記操作不可領域の位置を更新するための更新モジュールをさらに備える。
可能な一実現形態において、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新する。
可能な一実現形態において、前記目標記憶領域が、循環バッファ記憶領域を含む。
可能な一実現形態において、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュール73gは、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第1の状態判断サブモジュールと、前記第1の細粒度領域の状態識別子が完成状態である場合、前記第1の操作を実行するための第2の実行サブモジュールと、を備える。
可能な一実現形態において、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュール73gは、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第2の状態判断サブモジュールと、前記第1の細粒度領域の状態識別子が完成状態であり、且つ、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための第3の実行サブモジュールと、を備える。
可能な一実現形態において、前記第1の操作と前記第2の操作の目標のオペランドは、一致しており、前記目標記憶領域は、前記目標オペランドの記憶領域である。
可能な一実現形態において、前記目標記憶領域は、第1の操作における第1のオペランドの第1の記憶領域と第2の操作における第2のオペランドの第2の記憶領域との間の重なる領域である。
可能な一実現形態において、前記装置は、目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けするための第1の設定モジュールをさらに備える。
可能な一実現形態において、前記装置は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記第1の操作における第1のオペランドの第1の記憶領域を複数の細粒度領域に区分けするための第2の設定モジュールと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作における第2のオペランドの第2の記憶領域を複数の細粒度領域に区分けするための第3の設定モジュールと、をさらに備える。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは、上記のプロセッサ操作装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
可能な一実現形態において、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記人工知能チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
A1、プロセッサ操作方法であって、前記方法は、
第1の操作が少なくとも一つの細粒度領域を含む目標記憶領域に対する操作である場合、実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断することと、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断することと、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記方法は、
前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックすることをさらに含む。
A3、請求項A1に記載の方法であって、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
A4、請求項A1に記載の方法であって、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
A5、請求項A1に記載の方法であって、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定する。
A6、請求項A1に記載の方法であって、前記第1の操作は、第1の処理命令の操作であり、前記第2の操作は、第2の処理命令の操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
A7、請求項A1乃至A6の中のいずれか1項に記載の方法であって、前記方法は、
前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録することをさらに含み、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することを含む。
A8、請求項A7に記載の方法であって、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行することは、
前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行することを含む。
A9、請求項A1に記載の方法であって、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記第2の操作が存在する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断することは、
前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断することをさらに含む。
A10、請求項A9に記載の方法であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は、前記第2の操作の操作位置に従って更新され、前記方法は、
前記第2の操作の対象となる第2の細粒度領域が前記操作不可領域から移動して出た後、前記操作不可領域の位置を更新することをさらに含む。
A11、請求項A9に記載の方法であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、
前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新される。
A12、請求項A1に記載の方法であって、前記目標記憶領域が、循環バッファ記憶領域を含む。
A13、請求項A1に記載の方法であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、
完成状態であると、前記第1の操作を実行することと、を含む。
A14、請求項A1に記載の方法であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することは、
前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断することと、
完成状態であると、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行することと、を含む。
A15、請求項A1に記載の方法であって、前記第1の操作と前記第2の操作の目標のオペランドは、一致しており、前記目標記憶領域は、前記目標オペランドの記憶領域である。
A16、請求項A1に記載の方法であって、前記目標記憶領域は、第1の操作の第1のオペランドの第1の記憶領域と第2の操作第2のオペランドの第2の記憶領域との間の重なる領域である。
A17、請求項A1乃至A16の中のいずれか1項に記載の方法であって、前記方法は、
目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けすることをさらに含む。
A18、請求項A1乃至A17の中のいずれか1項に記載の方法であって、前記方法は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記第1の操作の第1のオペランドの第1の記憶領域を複数の細粒度領域に区分けすることと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作の第2のオペランドの第2の記憶領域を複数の細粒度領域に区分けすることと、をさらに含む。
A19、プロセッサ操作装置であって、前記装置は、
第1の操作が少なくとも一つの細粒度領域を含む目標記憶領域に対する操作である場合、実行されている、前記目標記憶領域に対する第2の操作が、存在するか否かを判断するための操作判断モジュールと、
前記第2の操作が存在する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断するための重なり判断モジュールと、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための実行モジュールと、を備える。
A20、請求項A19に記載の装置であって、前記装置は、
前記第1の細粒度領域と前記第2の細粒度領域とが重なる場合、前記第1の操作をブロックするための実行制御モジュールをさらに備える。
A21、請求項A19に記載の装置であって、前記第1の操作および前記第2の操作の中の少なくとも一つの操作は、書き込み操作である。
A22、請求項A19に記載の装置であって、前記細粒度領域のサイズ及び/又は数は、設定長さのデータが位置する領域、および、設定次元数のデータが位置する領域の中の少なくとも一つに基づいて確定する。
A23、請求項A19に記載の装置であって、前記細粒度領域のサイズ及び/又は数は、ハードウェア計算能力、および、ハードウェア帯域幅の中の少なくとも一つに基づいて確定する。
A24、請求項A19に記載の装置であって、前記第1の操作は、第1の処理命令の操作であり、前記第2の操作は、第2の処理命令の操作であり、前記第2の処理命令は、命令キュー中で前記第1の処理命令の前に位置する処理命令である。
A25、請求項A19乃至A24の中のいずれか1項に記載の装置であって、前記装置は、
前記第1の操作の現在操作している第1の細粒度領域の第1の位置情報、および、前記第2の操作の現在操作している第2の細粒度領域の第2の位置情報を記録するための位置記録モジュールをさらに備え、
前記実行モジュールは、
前記第1の位置情報と前記第2の位置情報とが不一致していると、前記第1の操作を実行するための第1の実行サブモジュールを備える。
A26、請求項A25に記載の装置であって、前記第1の位置情報は、第1の操作の既に操作を完成した細粒度領域の第1の数を含み、前記第2の位置情報は、第2の操作の既に操作を完成した細粒度領域の第2の数を含み、
前記第1の実行サブモジュールは、さらに、
前記第1の操作が前記第2の操作の後の操作であり、且つ、前記第1の数が前記第2の数よりも小さい場合、前記第1の操作を実行する。
A27、請求項A19に記載の装置であって、前記目標記憶領域は、操作可能領域および操作不可領域を含み、前記重なり判断モジュールは、
前記第2の操作が存在し、且つ、前記第1の操作の現在の対象となる第1の細粒度領域が前記操作可能領域内に位置する場合、前記第1の操作の現在の対象となる第1の細粒度領域と前記第2の操作の現在の対象となる第2の細粒度領域との間が重なるか否かを判断するための判断サブモジュールを備える。
A28、請求項A27に記載の装置であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域の前記操作不可領域における位置は、前記第2の操作の操作位置に従って更新され、前記装置は、
前記第2の操作の対象となる第2の細粒度領域が前記操作不可領域から移動して出た後、前記操作不可領域の位置を更新するための更新モジュールをさらに備える。
A29、請求項A27に記載の装置であって、前記操作不可領域は、前記第2の細粒度領域を含む複数の細粒度領域であり、且つ、前記第2の細粒度領域は、前記操作不可領域内の設定位置に位置し、
前記操作不可領域の位置は、前記第2の操作の操作位置に従って更新される。
A30、請求項A19に記載の装置であって、前記目標記憶領域が、循環バッファ記憶領域を含む。
A31、請求項A19に記載の装置であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュールは、
前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第1の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態である場合、前記第1の操作を実行するための第2の実行サブモジュールと、を備える。
A32、請求項A19に記載の装置であって、前記細粒度領域は、状態識別子を含み、前記状態識別子は、前記細粒度領域に対する操作の完成状態または未完成状態を含み、
前記実行モジュールは、
前記第1の細粒度領域の状態識別子が完成状態であるか否かを判断するための第2の状態判断サブモジュールと、
前記第1の細粒度領域の状態識別子が完成状態であり、且つ、前記第1の細粒度領域と前記第2の細粒度領域との間が重ならない場合、前記第1の操作を実行するための第3の実行サブモジュールと、を備える。
A33、請求項A19に記載の装置であって、前記第1の操作と前記第2の操作の目標のオペランドは、一致しており、前記目標記憶領域は、前記目標オペランドの記憶領域である。
A34、請求項A19に記載の装置であって、前記目標記憶領域は、第1の操作の第1のオペランドの第1の記憶領域と第2の操作の第2のオペランドの第2の記憶領域との間の重なる領域である。
A35、請求項A19乃至A34の中のいずれか1項に記載の装置であって、前記装置は、
目標記憶領域が位置する記憶領域全体を複数の細粒度領域に区分けするための第1の設定モジュールをさらに備える。
A36、請求項A19乃至A35の中のいずれか1項に記載の装置であって、前記装置は、
第1の操作に携える第1の細粒度区分け情報に基づいて、前記第1の操作の第1のオペランドの第1の記憶領域を複数の細粒度領域に区分けするための第2の設定モジュールと、
第2の操作に携える第2の細粒度区分け情報に基づいて、前記第2の操作の第2のオペランドの第2の記憶領域を複数の細粒度領域に区分けするための第3の設定モジュールと、をさらに備える。
A37、人工知能チップであって、前記人工知能チップは、請求項A19乃至A36の中のいずれか1項に記載のプロセッサ操作装置を備える。
A38、電子デバイスであって、前記電子デバイスは、請求項A37に記載の人工知能チップを備える。
A39、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A37に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A40、請求項A39に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記人工知能チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
以上、本発明の各実施例を既に説明したが、上記の説明は例示的なのものであり、網羅的なものではなく、開示された各実施例に限定されるない。当業者にとって、説明された各実施例の範囲および精神から逸脱することなく、多くの修正および変更はいずれも明らかである。本明細書で所用される用語の選択は、各実施例の原理、実際の適用、または、市場における技術の改善を最もよく解釈すること、または、当業者が本明細書に開示される各実施例を理解できるようにすることを意図している。