本願は、2018年10月18日に出願された、出願番号が201811216718.9で、名称が「ネットワークオンチップ処理システム及びネットワークオンチップによるデータ処理方法」の中国特許出願、出願番号が201811215820.7で、名称が「ネットワークオンチップ処理システム及びネットワークオンチップによるデータ処理方法」の中国特許出願、出願番号が201811215978.4で、名称が「ネットワークオンチップ処理システム及びネットワークオンチップによるデータ処理方法」の中国特許出願、出願番号が201811216857.1で、名称が「ネットワークオンチップによるデータ処理方法、記憶媒体、コンピュータデバイス及び装置」の中国特許出願、並びに、2018年11月21日に出願された、出願番号が201811392232.0で、名称が「データ処理方法、装置及び関連製品」の中国特許出願、出願番号が201811392262.1で、名称が「データ処理方法、装置及び関連製品」の中国特許出願、出願番号が201811392279.7で、名称が「データ処理装置、方法及び関連製品」の中国特許出願、出願番号が201811393352.2で、名称が「データ処理装置、方法及び関連製品」の中国特許出願、出願番号が201811390409.3で、名称が「データ処理装置、方法及び関連製品」の中国特許出願、出願番号が201811390428.6で、名称が「データ処理装置及び関連製品」の中国特許出願、出願番号が201811392270.6で、名称が「データ処理装置及び関連製品」の中国特許出願の優先権を主張し、これらの出願の内容の全てが参照により本願に組み込まれる。
以下に例示的な実施例を詳細に説明し、その例を図面に示す。以下図面に関する記述では、特に断らない限り、異なる図面で同じ数字は同じ又は類似する要素を表す。以下の例示的な実施例で記述される実施形態は本願に適合する全ての実施形態を表すものではない。逆に、それは特許請求の範囲で詳しく記載された本願のいくつかの態様に適合する装置及び方法の例に過ぎない。
本願の一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、記憶装置と、複数の計算装置とを含み、前記記憶装置及び複数の前記計算装置は1枚のチップに設けられ、ここで、少なくとも1つの計算装置は前記記憶装置に接続され、且つ少なくとも2つの計算装置は互いに接続される。
ここで、ネットワークオンチップ(Network on Chip、NoC)とは、1枚のチップに大量のコンピューティングリソースを集積してそれらのリソースを接続させたオンチップ通信ネットワークをいう。選択可能で、チップ中の各計算装置はそれぞれのインタフェースによって当該ネットワークオンチップにアクセスして、共有のネットワークリソースを使用して通信先モジュールと通信を行うようにしてもよい。具体的には、前記記憶装置及び複数の前記計算装置が1枚のチップに設けられるとは、記憶装置及び複数の計算装置を1枚のチップに集積させることをいう。計算装置中のプロセッサコアとチップ外の記憶装置とはNoCによって接続され、NoCはプロセッサの複数のコア間の通信をもサポートする。
本願の実施例によるネットワークオンチップ処理システムは、いずれもNoCによってオンチップ通信を実現する。また、本願の実施例によるネットワークオンチップ処理システムはチップ内記憶を行ってもよいし、チップ外記憶を行ってもよく、つまり、ニューラルネットワークプロセッサの処理中に演算データがチップ内記憶装置に記憶されてもよいし、チップ外記憶装置に記憶されてもよく、ネットワークオンチップ処理システムのチップ内記憶容量が限られているため、演算データ及び演算中に生じた中間結果をチップ外記憶装置に一時的に記憶して、使用したい時にチップ外記憶装置からNoCに読み取るようにしてもよい。本願の実施例では、ネットワークオンチップ処理システム中の記憶装置は、いずれもチップ内記憶装置であり、ネットワークオンチップ処理システム中の計算装置はニューラルネットワークプロセッサを含む。
本願の一実施例では、ネットワークオンチップ処理システムをさらに提供し、当該システムは、記憶装置と、複数の計算装置とを含み、前記複数の計算装置は第1計算装置と、複数の第2計算装置とを含み、前記記憶装置及び複数の前記計算装置は1枚のチップに設けられ、ここで、前記第1計算装置は前記記憶装置に接続され、前記複数の第2計算装置のうちの少なくとも1つの第2計算装置は前記第1計算装置に接続される。
一実施例では、ニューラルネットワークチップを提供し、当該チップは、記憶装置と、複数の計算装置と、第1相互接続装置と、第2相互接続装置とを含み、ここで、少なくとも1つの計算装置は前記第1相互接続装置介して前記記憶装置に接続され、前記複数の計算装置は前記第2相互接続装置を介して互いに接続される。さらに、計算装置は第1相互接続装置によって記憶装置に対する読み書き操作を実現するようにしてもよく、また、複数の計算装置の間に第2相互接続装置によってデータを伝送するようにしてもよい。
以下、ネットワークオンチップ処理システム及びニューラルネットワークチップをそれぞれ説明する。
図1は一実施例によるネットワークオンチップ処理システム1100であり、図1に示すように、ネットワークオンチップ処理システム1100は、記憶装置1101と、第1計算装置1102と、第2計算装置1103と、第2計算装置1104とを含み、且つ記憶装置1101、第1計算装置1102、第2計算装置1103及び第2計算装置1104はネットワークオンチップ処理システム1100の1枚のチップに設けられ、ここで、第1計算装置1102は記憶装置1101に接続され、第2計算装置1103は第1計算装置1102に接続されるとともに、第2計算装置1103は第2計算装置1104にも接続される。記憶装置1101にアクセスできるのは第1計算装置1102のみであり、つまり、記憶装置1101に対するデータ読み書きができるのは、第1計算装置1102のみであり、第1計算装置1102、第2計算装置1103及び第2計算装置1104は互いにデータを伝送することができる。
具体的には、第2計算装置1104はデータを読み取る必要がある場合に、第1計算装置1102により記憶装置1101にアクセスして、記憶装置1101から第2計算装置1104に必要なデータを読み取り、第1計算装置1102により当該データを第2計算装置1103に送信し、そして第2計算装置1103により当該データを第2計算装置1104に送信する。選択可能で、第1計算装置1102、第2計算装置1103及び第2計算装置1104のうちの少なくとも1つの計算装置が記憶装置1101に接続されることさえ保証されれば、第1計算装置1102の他に、第2計算装置1103及び第2計算装置1104も記憶装置1101に接続されてもよく、ここで具体的に限定しない。選択可能で、第1計算装置1102、第2計算装置1103及び第2計算装置1104のうちの少なくとも2つの計算装置が互いに接続されることさえ保証されれば、第2計算装置1103は第2計算装置1104に互いに接続されてもよいし、第1計算装置1102に互いに接続されてもよく、ここで具体的に限定しない。
図2は一実施例によるネットワークオンチップ処理システム1200であり、図2に示すように、ネットワークオンチップ処理システム1200は、記憶装置1201と、第1計算装置1202と、第2計算装置1203と、第2計算装置1204とを含み、且つ記憶装置1201、第1計算装置1202、第2計算装置1203及び第2計算装置1204はネットワークオンチップ処理システム1200の1枚のチップに設けられ、ここで、第1計算装置1202は記憶装置1201に接続され、第2計算装置1203及び第2計算装置1204は第1計算装置1202に直接的に接続され、即ち第2計算装置1204は第2計算装置1203にも第1計算装置1201にも接続され、第2計算装置1203を介して第1計算装置1201との接続を確立する必要がない。記憶装置1201にアクセスできるのは第1計算装置1202のみであり、つまり、記憶装置1201に対するデータ読み書きができるのは第1計算装置1202のみであり、第1計算装置1202、第2計算装置1203及び第2計算装置1204は互いにデータを伝送することができる。
具体的には、第2計算装置1204はデータを読み取る必要がある場合に、第1計算装置1202により記憶装置1201にアクセスして、記憶装置1201から第2計算装置1204に必要なデータを読み取り、第2計算装置1203により転送することなく、第1計算装置1202により当該データを第2計算装置1204に直接的に送信する。選択可能で、第1計算装置1202、第2計算装置1203及び第2計算装置1204のうちの少なくとも1つの計算装置が記憶装置1201に接続されることさえ保証されれば、第1計算装置1202、第2計算装置1203及び第2計算装置1204はいずれも記憶装置1201に接続されてもよく、ここで具体的に限定しない。選択可能で、第1計算装置1202、第2計算装置1203及び第2計算装置1204のうちの少なくとも2つの計算装置が互いに接続されることさえ保証されれば、第2計算装置1203は第2計算装置1204と互いに接続されてもよいし、第1計算装置1202と互いに接続されてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置間の接続を確立することにより、複数の計算装置の間にデータを伝送することができ、複数の計算装置がいずれも記憶装置からデータを読み取って、接続に使う帯域幅オーバーヘッドが大きくなりすぎることが避けられるとともに、データの読み書き効率が向上する。
本願はその一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、記憶装置と、複数の計算装置とを含み、前記記憶装置及び複数の前記計算装置は1枚のチップに設けられ、ここで、前記複数の計算装置のうちの各計算装置はいずれも前記記憶装置に接続され、且つ少なくとも2つの計算装置は互いに接続される。
図3は一実施例によるネットワークオンチップ処理システム1300であり、図3に示すように、ネットワークオンチップ処理システム1300は、記憶装置1301と、計算装置1302と、計算装置1303と、計算装置1304とを含み、記憶装置1301、計算装置1302、計算装置1303及び計算装置1304はネットワークオンチップ処理システム1300の1枚のチップに設けられ、ここで、計算装置1302、計算装置1303及び計算装置1304はいずれも記憶装置1301に接続され、計算装置1302と計算装置1303は互いに接続されるとともに、計算装置1303と計算装置1304は互いに接続される。計算装置1202、計算装置1203及び計算装置1304はいずれも記憶装置1201にアクセスすることができ、計算装置1302と計算装置1303とは互いにデータを伝送することができ、また計算装置1303と計算装置1304とは互いにデータを伝送することができる。
具体的には、計算装置1304はデータを読み取る必要がある場合に、計算装置1304が記憶装置1301に直接アクセスしてもよいし、計算装置1303により記憶装置1301にアクセスして、記憶装置1301から計算装置1304に必要なデータを読み取り、計算装置1303により当該データを計算装置1304に送信してもよいし、又は、計算装置1302により記憶装置1301にアクセスして、記憶装置1301から計算装置1304に必要なデータを読み取り、計算装置1302により当該データを計算装置1303に送信して、計算装置1303により当該データを計算装置1304に送信するようにしてもよい。選択可能で、計算装置1302、計算装置1303及び計算装置1304のうち少なくとも1つの計算装置が記憶装置1301に接続されることさえ保証されればよく、ここで具体的に限定しない。選択可能で、計算装置1302、計算装置1303及び計算装置1304のうち少なくとも2つの計算装置が互いに接続されることさえ保証されればよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置間の接続を確立することにより、任意の計算装置に必要なデータは複数の計算装置の間に互いに伝送することができ、当該システムは同時に記憶装置インタフェースを読み取る計算装置を減らし、帯域幅の輻輳を緩和することができる。
図4に示すように、一実施例によるネットワークオンチップ処理システム1400であり、ネットワークオンチップ処理システム1400は、記憶装置1401と、計算装置1402と、計算装置1403と、計算装置1404とを含み、記憶装置1401、計算装置1402、計算装置1403及び計算装置1404はネットワークオンチップ処理システム1400の1枚のチップに設けられ、ここで、計算装置1402、計算装置1403及び計算装置1404はいずれも記憶装置1401に接続され、計算装置1402、計算装置1403及び計算装置1404の3つの計算装置は互いに接続される。計算装置1402、計算装置1403及び計算装置1404はいずれも記憶装置1401にアクセスすることができ、計算装置1402、計算装置1403及び計算装置1404の3つの計算装置は互いにデータを伝送することができる。
具体的には、計算装置1404はデータを読み取る必要がある場合に、記憶装置1401に直接アクセスしてもよいし、計算装置1403により記憶装置1401にアクセスして、記憶装置1401から計算装置1404に必要なデータを読み取り、計算装置1403により当該データを計算装置1404に送信してもよいし、又は、計算装置1402により記憶装置1401にアクセスして、記憶装置1401から計算装置1404に必要なデータを読み取り、計算装置1403により転送することなく、計算装置1402により当該データを計算装置1404に直接的に送信してもよい。選択可能で、計算装置1402、計算装置1403及び計算装置1404のうち少なくとも1つの計算装置が記憶装置1401に接続されることさえ保証されればよく、ここで具体的に限定しない。選択可能で、計算装置1402、計算装置1403及び計算装置1404のうち少なくとも2つの計算装置が互いに接続されることさえ保証されればよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置間において記憶装置を経由せずに直接的に接続を確立することにより、2つの計算装置は直接的にデータを伝送することができ、データの読み書き効率を向上させることができる。
本願の一実施例では、ネットワークオンチップ処理システムをさらに提供し、当該システムは、記憶装置と、複数の計算装置グループとを含み、前記記憶装置及び複数の前記計算装置グループは1枚のチップに設けられ、各計算装置グループは複数の計算装置を含み、ここで、前記複数の計算装置グループのうちの少なくとも1つの計算装置グループは前記記憶装置に接続され、且つ少なくとも2つの計算装置グループは互いに接続される。
本願の一実施例では、ニューラルネットワークチップをさらに提供し、当該チップは、記憶装置と、複数の計算装置グループと、第1相互接続装置と、第2相互接続装置とを含み、ここで、前記複数の計算装置グループのうちの少なくとも1つの計算装置グループは前記第1相互接続装置を介して前記記憶装置に接続され、前記複数の計算装置グループは前記第2相互接続装置を介して互いに接続される。さらに、計算装置グループは第1相互接続装置により記憶装置に対する読み書き操作を実現するようにしてもよく、また、複数の計算装置グループは第2相互接続装置によって互いにデータを伝送するようにしてもよい。ここで、複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、その一例として、1つのグループは4つの計算装置を含む。
図5aに示すように、一実施例はネットワークオンチップ処理システム1500を提供し、ネットワークオンチップ処理システム1500は、記憶装置1501と、6つの計算装置(計算装置1502から計算装置1507)とを含み、記憶装置1501及び6つの計算装置(計算装置1502から計算装置1507)はネットワークオンチップ処理システム1500の1枚のチップに設けられる。例えば、6つの計算装置は3つのグループに分けられ、各グループは2つの計算装置を含んでもよく、例えば、計算装置1502及び計算装置1503は第1計算装置グループ(cluster1)であり、計算装置1504及び計算装置1505は第2計算装置グループ(cluster2)であり、計算装置1506及び計算装置1507は第3計算装置グループ(cluster3)である。cluster1は主計算装置グループであり、cluster2及びcluster3はサブ計算装置グループである。ここで、記憶装置1501に接続されるのはcluster1のみであり、cluster1、cluster2及びcluster3は互いに接続される。cluster1中の計算装置1502は記憶装置1501に接続され、cluster1中の計算装置1503はcluster2中の計算装置1504と互いに接続され、cluster2中の計算装置1505はcluster3中の計算装置1507と互いに接続される。
具体的には、cluster3はデータを読み取る必要がある場合に、cluster1により記憶装置1501にアクセスして、記憶装置1501からcluster3に必要なデータを読み取り、cluster1により当該データをcluster2に送信して、cluster2により当該データをcluster3に送信するようにしてもよい。ここで、複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、好ましくは1つのグループは4つの計算装置を含む。
選択可能で、複数の計算装置では全ての計算装置が記憶装置1501に接続されることは要求されず、2つの計算装置グループのうちの少なくとも1つの計算装置グループが記憶装置1501に接続されればよく、ここで具体的に限定しない。選択可能で、3つの計算装置グループのうちの少なくとも2つの計算装置グループが互いに接続されることさえ保証されれば、cluster1はcluster2と互いに接続されてもよいし、cluster3と互いに接続されてもよく、ここで具体的に限定しない。選択可能で、各前記計算装置グループ中の少なくとも1つの計算装置は、他の前記計算装置グループ中の少なくとも1つの計算装置に接続され、つまり、cluster1中の少なくとも1つの計算装置がcluster2中の少なくとも1つの計算装置に接続されることさえ保証されれば、cluster1の各計算装置はいずれも第2装置グループと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数の計算装置グループは前記複数の計算装置グループ中の任意の1つの計算装置を介して互いに接続され、つまり、cluster1中の任意の1つの計算装置はcluster2中の任意の1つの計算装置と互いに接続されてもよく、ここで具体的に限定しない。
図5bは一実施例によるネットワークオンチップ処理システム15000であり、図5bに示すように、ネットワークオンチップ処理システム15000は、記憶装置15010と、6つの計算装置(計算装置15020から計算装置15070)とを含み、記憶装置15010及び6つの計算装置(計算装置15020から計算装置15070)はネットワークオンチップ処理システム15000の1枚のチップに設けられ、6つの計算装置は3つのグループに分けられ、計算装置15020及び計算装置15030は第1計算装置グループ(cluster1)であり、計算装置15040及び計算装置15050は第2計算装置グループ(cluster2)であり、計算装置15060及び計算装置15070は第3計算装置グループ(cluster3)であり、cluster1は主計算装置グループであり、cluster2及びcluster3はサブ計算装置グループである。ここで、記憶装置15010に接続されるのはcluster1のみであり、cluster1、cluster2及びcluster3は互いに接続される。cluster1中の計算装置15020は記憶装置15010に接続され、cluster1中の計算装置15030はcluster2中の計算装置15040と互いに接続され、cluster2中の計算装置15050はcluster3中の計算装置15070と互いに接続され、cluster3中の計算装置15060はcluster1中の計算装置15020と互いに接続される。
具体的には、cluster3はデータを読み取る必要がある場合に、cluster1により記憶装置1501にアクセスして、記憶装置1501からcluster3に必要なデータを読み取り、cluster1により当該データをcluster3に直接的に送信するようにしてもよい。ここで、複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、好ましくは1つのグループは4つの計算装置を含む。
選択可能で、複数の計算装置では全ての計算装置が記憶装置15010に接続されることは要求されず、2つの計算装置グループのうちの少なくとも1つの計算装置グループが記憶装置15010に接続されればよく、ここで具体的に限定しない。選択可能で、3つの計算装置グループのうちの少なくとも2つの計算装置グループが互いに接続されることさえ保証されれば、cluster1はcluster2と互いに接続されてもよいし、cluster3と互いに接続されてもよく、ここで具体的に限定しない。選択可能で、各前記計算装置グループ中の少なくとも1つの計算装置は、他の前記計算装置グループ中の少なくとも1つの計算装置に接続され、つまり、cluster1中の少なくとも1つの計算装置がcluster2中の少なくとも1つの計算装置に接続されることさえ保証されれば、cluster1の各計算装置はいずれも第2装置グループと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数の計算装置グループは前記複数の計算装置グループ中の任意の1つの計算装置を介して互いに接続され、つまり、cluster1中の任意の1つの計算装置はcluster2中の任意の1つの計算装置と互いに接続されてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置グループを互いに接続させることにより、複数の計算装置グループにグループ間通信を実現させることができ、当該システムはグループ間のデータ伝送により、同時に記憶装置インタフェースを読み取る計算装置を減らし、メモリアクセスによるエネルギー消費オーバーヘッドを減らすことができ、また、1枚のチップに設けられた複数の計算装置グループの間に様々な接続方式によりグループ間通信を実現し、複数の計算装置の間に複数の通信チャネルを確立し、ネットワークのその時の使用状況に応じて最適なチャネルを選択してデータを伝送することにより、エネルギー消費を節約し、データ処理効率を向上させる効果を得る。
その一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、記憶装置と、複数の計算装置グループとを含み、前記記憶装置及び複数の前記計算装置グループは1枚のチップに設けられ、各計算装置グループは複数の計算装置を含み、前記複数の計算装置グループのうちの少なくとも1つの計算装置グループは前記記憶装置に接続され、前記複数の計算装置グループは互いに接続される。
図6は一実施例によるネットワークオンチップ処理システム1600であり、図6に示すように、ネットワークオンチップ処理システム1600は、記憶装置1601と、6つの計算装置(計算装置1602から計算装置1607)とを含み、記憶装置1601及び6つの計算装置(計算装置1602から計算装置1607)はネットワークオンチップ処理システム1600の1枚のチップに設けられる。例えば、6つの計算装置は3つのグループに分けられてもよく、計算装置1602及び計算装置1603は第1計算装置グループcluster1であり、計算装置1604及び計算装置1605は第2計算装置グループcluster2であり、計算装置1606及び計算装置1607は第3計算装置グループcluster3であり、ここで、cluster1、cluster2及びcluster3はいずれも記憶装置1601に接続され、cluster1とcluster2は互いに接続され、cluster2とcluster3は互いに接続される。計算装置1602から計算装置1607はいずれも記憶装置1601に接続され、cluster1中の計算装置1603はcluster2中の計算装置1604と互いに接続され、cluster2中の計算装置1604はcluster3中の計算装置1607と互いに接続される。
具体的には、cluster3はデータを読み取る必要がある場合に、cluster2により記憶装置1601にアクセスして、記憶装置1601からcluster3に必要なデータを読み取り、cluster2によりcluster3に送信するようにしてもよいし、cluster1により記憶装置1601にアクセスして、記憶装置1601からcluster3に必要なデータを読み取り、cluster1により当該データをcluster2に送信して、cluster2により当該データをcluster3に送信するようにしてもよい。ここで、複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、例えば、1つのグループは4つの計算装置を含む。
選択可能で、複数の計算装置では全ての計算装置が記憶装置1601に接続されることは要求されず、2つの計算装置グループのうちの少なくとも1つの計算装置グループが記憶装置1601に接続されればよく、ここで具体的に限定しない。選択可能で、cluster1中の少なくとも1つの計算装置がcluster2及び/又はcluster3中の少なくとも1つの計算装置に接続されることさえ保証されれば、cluster1の各計算装置はいずれも第2ユニットグループ及び/又はcluster3と接続を確立してもよく、ここで具体的に限定しない。選択可能で、cluster1中の任意の1つの計算装置はcluster2及び/又はcluster3中の任意の1つの計算装置と互いに接続されてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置グループを互いに接続させることにより、任意の計算装置グループに必要なデータは複数の計算装置グループの間に伝送することができ、当該システムは同時に記憶装置インタフェースを読み取る計算装置を減らし、帯域幅の輻輳を緩和することができる。
その一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、記憶装置と、複数の計算装置グループとを含み、前記記憶装置及び複数の前記計算装置グループは1枚のチップに設けられ、各計算装置グループは複数の計算装置を含み、前記複数の計算装置グループのうちの少なくとも1つの計算装置グループは前記記憶装置に接続され、前記複数の計算装置グループのうちの任意の2つの計算装置グループは直接的に接続される。
図7は一実施例によるネットワークオンチップ処理システム1700であり、図7に示すように、ネットワークオンチップ処理システム1700は、記憶装置1701と、6つの計算装置(計算装置1702から計算装置1707)とを含み、記憶装置1701及び6つの計算装置(計算装置1702から計算装置1707)はネットワークオンチップ処理システム1700の1枚のチップに設けられ、6つの計算装置は3つのグループに分けられ、計算装置1702及び計算装置1703は第1計算装置グループcluster1であり、計算装置1704及び計算装置1705は第2計算装置グループcluster2であり、計算装置1706及び計算装置1707は第3計算装置グループcluster3であり、ここで、cluster1、cluster2及びcluster3はいずれも記憶装置1701に接続され、cluster1、cluster2及びcluster3の3つの計算装置グループは互いに接続される。計算装置1702から計算装置1707はいずれも記憶装置1701に接続され、cluster1中の計算装置1703はcluster2中の計算装置1704と互いに接続され、cluster2中の計算装置1704はcluster3中の計算装置1707と互いに接続され、cluster1中の計算装置1702はcluster3中の計算装置1706と互いに接続される。
具体的には、cluster3はデータを読み取る必要がある場合に、cluster2により記憶装置1701にアクセスして、記憶装置1701からcluster3に必要なデータを読み取り、cluster2によりcluster3に送信するようにしてもよいし、cluster1により記憶装置1701にアクセスして、記憶装置1701からcluster3に必要なデータを読み取り、cluster1により当該データをcluster3に直接的に送信するようにしてもよい。複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、好ましくは1つのグループは4つの計算装置を含む。
選択可能で、複数の計算装置では全ての計算装置が記憶装置1701に接続されることは要求されず、2つの計算装置グループのうちの少なくとも1つの計算装置グループが記憶装置1701に接続されればよく、ここで具体的に限定しない。選択可能で、cluster1中の少なくとも1つの計算装置がcluster2及びcluster3のうちの少なくとも1つの計算装置に接続されることさえ保証されれば、cluster1の各計算装置はいずれも第2ユニットグループ及びcluster3と接続を確立してもよく、ここで具体的に限定しない。選択可能で、cluster1中の任意の1つの計算装置はcluster2及びcluster3のうちの任意の1つの計算装置と互いに接続されてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置グループの間に直接的に接続を確立することにより、データの読み書き効率を向上させることができる。
本願の一実施例では、ネットワークオンチップ処理システムをさらに提供し、当該システムは、記憶装置と、複数の計算装置グループとを含み、前記記憶装置及び複数の前記計算装置グループは1枚のチップに設けられ、各計算装置グループは複数の計算装置を含み、前記複数の計算装置グループのうちの少なくとも1つの計算装置グループは前記記憶装置に接続され、且つ少なくとも2つの計算装置グループは互いに接続され、各前記計算装置グループ中の複数の計算装置は互いに接続される。
図8は一実施例によるネットワークオンチップ処理システム1800であり、図8に示すように、ネットワークオンチップ処理システム1800は、記憶装置1801と、6つの計算装置(計算装置1802から計算装置1807)とを含み、記憶装置1801及び6つの計算装置(計算装置1802から計算装置1807)はネットワークオンチップ処理システム1800の1枚のチップに設けられ、6つの計算装置は2つのグループに分けられ、計算装置1802、計算装置1803及び計算装置1804は第1計算装置グループcluster1であり、計算装置1805、計算装置1806及び計算装置1807は第2計算装置グループcluster2であり、ここで、cluster1及びcluster2はいずれも記憶装置1801に接続され、cluster1とcluster2は互いに接続され、且つcluster1中の3つの計算装置は互いに接続され、cluster2中の3つの計算装置は互いに接続される。計算装置1802から計算装置1807はいずれも記憶装置1801に接続され、cluster1中の計算装置1802とcluster2中の計算装置1805は互いに接続され、計算装置1803は計算装置1802及び計算装置1804と互いに接続され、計算装置1806は計算装置1805及び計算装置1807と互いに接続される。ここで、各計算装置グループの複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。
具体的には、cluster2はデータを読み取る必要がある場合に、記憶装置1801に直接にアクセスしてもよいし、cluster1により記憶装置1801にアクセスして、記憶装置1801からcluster2に必要なデータを読み取り、cluster1により当該データをcluster2に送信するようにしてもよいし、また、第2計算装置はグループ内においてデータを伝送するようにしてもよい。cluster2はデータを読み取る必要がある場合に、cluster2中の計算装置1805、計算装置1806及び計算装置1807が同時に記憶装置1801にアクセスしてもよく、ここで、計算装置1805、計算装置1806及び計算装置1807はそれぞれcluster2に必要なデータの一部を読み取り、これらのデータはcluster2内において伝送するようにしてもよい。複数の計算装置は複数のグループに分けられてもよく、且つ各グループの計算装置の数量は具体的に限定せず、好ましくは1つのグループは4つの計算装置を含む。
選択可能で、複数の計算装置では全ての計算装置が記憶装置1801に接続されることは要求されず、2つの計算装置グループのうちの少なくとも1つの計算装置グループが記憶装置1801に接続されればよく、ここで具体的に限定しない。選択可能で、cluster1中の少なくとも1つの計算装置がcluster2中の少なくとも1つの計算装置に接続されることさえ保証されれば、cluster1の各計算装置はいずれも第2ユニットグループと接続を確立してもよく、ここで具体的に限定しない。選択可能で、cluster1中の任意の1つの計算装置はcluster2中の任意の1つの計算装置と互いに接続されてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数の計算装置グループを互いに接続させるとともに、各計算装置グループ中の複数の計算装置を互いに接続させることにより、複数の計算装置同士にグループ内通信及びグループ間通信を実現することができ、当該システムはメモリアクセスによるエネルギー消費オーバーヘッドを低減し、データの読み取り効率を向上させることができる。
本願の一実施例では、ネットワークオンチップ処理システムをさらに提供し、当該システムは、互いに接続された複数のネットワークオンチップ処理モジュールを含み、前記複数のネットワークオンチップ処理モジュールは1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは、少なくとも1つの記憶装置と、複数の計算装置とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、少なくとも1つの計算装置は前記ネットワーク処理モジュールの内部の少なくとも1つの記憶装置に接続され、且つ前記複数の計算装置のうちの少なくとも2つの計算装置は互いに接続される。
一実施例では、ニューラルネットワークチップを提供し、当該チップは互いに接続された複数のネットワークオンチップ処理モジュールを含み、各ネットワークオンチップ処理モジュールは、少なくとも1つの記憶装置と、複数の計算装置と、第1相互接続装置と、第2相互接続装置とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、少なくとも1つの計算装置と前記ネットワークオンチップ処理モジュールの内部の少なくとも1つの記憶装置は前記第1相互接続装置を介して接続され、前記複数の計算装置は前記第2相互接続装置を介して互いに接続される。さらに、計算装置は第1相互接続装置によって、所在のネットワークオンチップ処理モジュールの内部の記憶装置に対する読み書き操作を実現するようにしてもよく、また、複数の計算装置の間に第2相互接続装置によってデータを伝送するようにしてもよい。
図9は一実施例によるネットワークオンチップ処理システム1900であり、図9に示すように、ネットワークオンチップ処理システム1900は、互いに接続された4つのネットワークオンチップ処理モジュールを含み、前記4つのネットワークオンチップ処理モジュールはネットワークオンチップ処理システム1900の1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは、1つの記憶装置1901と、4つの計算装置(計算装置1902から計算装置1905)とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、計算装置1902はそのネットワークオンチップ処理モジュールの内部の記憶装置1901に接続され、且つ各ネットワークオンチップ処理モジュールの内部の4つの計算装置は互いに接続される。
具体的には、各ネットワークオンチップ処理モジュールの処理すべきデータは全て当該ネットワークオンチップ処理モジュールの内部の記憶装置に格納され、つまり、各ネットワークオンチップ処理モジュール中の複数の計算装置は所在のネットワークオンチップ処理モジュールの内部の記憶装置にしかアクセスすることができず、所在のネットワークオンチップ処理モジュールの内部の記憶装置からしかデータの読み書きを行うことができない。
選択可能で、各ネットワークオンチップ処理モジュール中の記憶装置の数量は1つに限定されず、2つ、3つ又は4つ以上であってもよく、ここで具体的に限定せず、4つであることが好ましい。選択可能で、各ネットワークオンチップ処理モジュールにおいて、前記複数の計算装置は互いに接続して計算装置ネットワークが形成され、各ネットワークオンチップ処理モジュール中の複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。選択可能で、各ネットワークオンチップ処理モジュール中の複数の計算装置では全ての計算装置が記憶装置1901に接続されることは要求されず、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が記憶装置1901に接続されればよく、ここで具体的に限定しない。
選択可能で、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が別のネットワークオンチップ処理モジュール中の少なくとも1つの計算装置に接続されることさえ保証されれば、各ネットワークオンチップ処理モジュール中の各計算装置はいずれも別のネットワークオンチップ処理モジュールと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数のネットワークオンチップ処理モジュールは各ネットワークオンチップ処理モジュール中の任意の1つの計算装置を介して互いに接続され、つまり、各ネットワークオンチップ処理モジュール中の任意の1つの計算装置は別のネットワークオンチップ処理モジュール中の任意の1つの計算装置と互いに接続してもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数のネットワークオンチップ処理モジュールの間に接続を確立するとともに、各ネットワークオンチップ処理モジュール中の複数の計算装置の間に接続を確立することにより、複数の計算装置同士にモジュール内通信及びモジュール間通信を実現することができ、当該システムはメモリアクセスによるエネルギー消費オーバーヘッドを低減し、データの読み取り効率を向上させることができ、また、1枚のチップに設けられた複数のネットワークオンチップ処理モジュールの間に様々な接続方式によりモジュール間の通信を実現し、複数の計算装置の間に複数の通信チャネルを確立し、ネットワークのその時の使用状況に応じて最適なチャネルを選択してデータを伝送することにより、エネルギー消費を節約し、データ処理効率を向上させる効果を得る。
本願の一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、互いに接続された複数のネットワークオンチップ処理モジュールを含み、前記複数のネットワークオンチップ処理モジュールは1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは複数の記憶装置を含み、且つ、前記ネットワークオンチップ処理モジュールにおいて、少なくとも1つの計算装置は前記ネットワークオンチップ処理モジュールの内部の前記複数の記憶装置に接続され、且つ前記複数の計算装置のうちの少なくとも2つの計算装置は互いに接続される。
図10aは一実施例によるネットワークオンチップ処理システム1910であり、図10aに示すように、ネットワークオンチップ処理システム1910は、互いに接続された4つのネットワークオンチップ処理モジュールを含み、前記4つのネットワークオンチップ処理モジュールはネットワークオンチップ処理システム1910の1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは、記憶装置1911と、記憶装置1916と、4つの計算装置(計算装置1912から計算装置1915)とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、計算装置1912はそのネットワークオンチップ処理モジュールの内部の記憶装置1911及び記憶装置1916に接続され、且つ各ネットワークオンチップ処理モジュールの内部の4つの計算装置は互いに接続される。
具体的には、各ネットワークオンチップ処理モジュールの処理すべきデータは全て当該ネットワークオンチップ処理モジュールの内部の記憶装置に格納され、つまり、各ネットワークオンチップ処理モジュール中の複数の計算装置は所在のネットワークオンチップ処理モジュールの内部の記憶装置にしかアクセスすることができず、所在のネットワークオンチップ処理モジュールの内部の記憶装置からしかデータの読み書きを行うことができない。各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置と接続が確立され、つまり、各ネットワークオンチップ処理モジュール中の計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスすることができる。ここで、各ネットワークオンチップ処理モジュール中の記憶装置の数量は2つに限定されず、3つ、4つ又は5つ以上であってもよく、ここで具体的に限定せず、4つであることが好ましく、スペースの使用を節約するとともに、効率的にデータ処理を行うことができる。
具体的には、各ネットワークオンチップ処理モジュール中の計算装置は近接する記憶装置に優先してアクセスする。ここで、近接する記憶装置とは、計算装置に接続された複数の記憶装置のうち通信距離が最短の記憶装置であり、つまり、通信距離が最短の記憶装置は他の記憶装置よりもアクセス優先度が高い。
選択可能で、各ネットワークオンチップ処理モジュールにおいて、前記複数の計算装置は互いに接続して計算装置ネットワークが形成され、各ネットワークオンチップ処理モジュール中の複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。選択可能で、各ネットワークオンチップ処理モジュール中の複数の計算装置では全ての計算装置が記憶装置1911に接続されることは要求されず、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が記憶装置1911に接続されればよく、ここで具体的に限定しない。
選択可能で、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が別のネットワークオンチップ処理モジュール中の少なくとも1つの計算装置に接続されることさえ保証されれば、各ネットワークオンチップ処理モジュール中の各計算装置はいずれも別のネットワークオンチップ処理モジュールと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数のネットワークオンチップ処理モジュールは各ネットワークオンチップ処理モジュール中の任意の1つの計算装置を介して互いに接続され、つまり、各ネットワークオンチップ処理モジュール中の任意の1つの計算装置は別のネットワークオンチップ処理モジュール中の任意の1つの計算装置と互いに接続するようにしてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、各計算装置は所在のネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスすることができて、複数の通信チャネルを提供してデータ伝送を行うことができるため、データの読み書き効率を向上させることができ、当該システムで各計算装置は近接する記憶装置に優先してアクセスすることにより、メモリアクセスオーバーヘッドを節約するとともに、ある程度の柔軟性を保証することができる。
その一実施例では、図10bはネットワークオンチップ処理システム19100を示し、図中、各ネットワークオンチップ処理モジュールの処理すべきデータは全て当該ネットワークオンチップ処理モジュールの内部の記憶装置に格納され、つまり、各ネットワークオンチップ処理モジュール中の複数の計算装置は所在のネットワークオンチップ処理モジュールの内部の記憶装置にしかアクセスすることができず、所在のネットワークオンチップ処理モジュールの内部の記憶装置からしかデータの読み書きを行うことができない。各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置と接続が確立され、つまり、各ネットワークオンチップ処理モジュール中の計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスすることができる。ここで、各ネットワークオンチップ処理モジュール中の記憶装置の数量は2つに限定されず、3つ、4つ又は5つ以上であってもよく、ここで具体的に限定せず、4つであることが好ましい。
具体的には、各ネットワークオンチップ処理モジュールにおいて、各計算装置は第1通信距離の記憶装置に接続され、ここで、第1通信距離とは、最短の通信距離であり、つまり、各ネットワークオンチップ処理モジュール中の計算装置は近接する記憶装置にしかアクセスすることができず、即ち各ネットワークオンチップ処理モジュール中の計算装置は通信距離が最短の記憶装置にしかアクセスすることができない。例えば、計算装置19120は近接する記憶装置19110にしかアクセスすることができず、記憶装置19160にアクセスすることができない。計算装置19130は近接する記憶装置19160にしかアクセスすることができず、記憶装置19110にアクセスすることができない。計算装置19120が読み取るべきデータが記憶装置19160に記憶されている場合に、まず計算装置19130により記憶装置19160から当該データを読み取り、次に計算装置19130により当該データを計算装置19120に伝送する必要がある。
選択可能で、各ネットワークオンチップ処理モジュールにおいて、前記複数の計算装置は互いに接続して計算装置ネットワークが形成され、各ネットワークオンチップ処理モジュール中の複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。選択可能で、各ネットワークオンチップ処理モジュール中の複数の計算装置では全ての計算装置が記憶装置19110に接続されることは要求されず、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置は記憶装置19110に接続されればよく、ここで具体的に限定しない。
選択可能で、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が別のネットワークオンチップ処理モジュール中の少なくとも1つの計算装置に接続されることさえ保証されれば、各ネットワークオンチップ処理モジュール中の各計算装置はいずれも別のネットワークオンチップ処理モジュールと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数のネットワークオンチップ処理モジュールは各ネットワークオンチップ処理モジュール中の任意の1つの計算装置を介して互いに接続され、つまり、各ネットワークオンチップ処理モジュール中の任意の1つの計算装置は別のネットワークオンチップ処理モジュール中の任意の1つの計算装置と互いに接続するようにしてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、各計算装置は所在のネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスすることができて、複数の通信チャネルを提供してデータ伝送を行うことができるため、データの読み書き効率を向上させることができ、当該システムにおいて各計算装置は近接する記憶装置にしかアクセスすることができず、メモリアクセスオーバーヘッドを最大限に節約することができる。
本願の一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、直接的に接続された任意の2つのネットワークオンチップ処理モジュールを含み、任意の2つのネットワーク処理モジュールは1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは、少なくとも1つの記憶装置と、複数の計算装置とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、少なくとも1つの計算装置は前記ネットワーク処理モジュールの内部の少なくとも1つの記憶装置に接続され、且つ前記複数の計算装置のうちの少なくとも2つの計算装置は互いに接続される。
図11は一実施例によるネットワークオンチップ処理システム1920であり、図11に示すように、ネットワークオンチップ処理システム1920は互いに接続された4つのネットワークオンチップ処理モジュールを含み、前記4つのネットワークオンチップ処理モジュールはネットワークオンチップ処理システム1920の1枚のチップに設けられ、前記4つのネットワークオンチップ処理モジュールのうちの任意2つのネットワークオンチップ処理モジュールは直接的に接続され、各ネットワークオンチップ処理モジュールは、1つの記憶装置1921と、4つの計算装置(計算装置1922から計算装置1925)とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、計算装置1922はそのネットワークオンチップ処理モジュールの内部の記憶装置1921に接続され、且つ各ネットワークオンチップ処理モジュールの内部の4つの計算装置は互いに接続される。
具体的には、各ネットワークオンチップ処理モジュールの処理すべきデータは全て当該ネットワークオンチップ処理モジュールの内部の記憶装置に格納され、つまり、各ネットワークオンチップ処理モジュール中の複数の計算装置は所在のネットワークオンチップ処理モジュールの内部の記憶装置にしかアクセスすることができず、所在のネットワークオンチップ処理モジュールの内部の記憶装置からしかデータの読み書きを行うことができない。
選択可能で、各ネットワークオンチップ処理モジュール中の記憶装置の数量は1つに限定されず、2つ、3つ又は4つ以上であってもよく、ここで具体的に限定せず、4つであることが好ましい。選択可能で、各ネットワークオンチップ処理モジュールにおいて、前記複数の計算装置は互いに接続して計算装置ネットワークが形成され、各ネットワークオンチップ処理モジュール中の複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。選択可能で、各ネットワークオンチップ処理モジュール中の複数の計算装置では全ての計算装置が記憶装置1921に接続されることは要求されず、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が記憶装置1921に接続されればよく、ここで具体的に限定しない。
選択可能で、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が別のネットワークオンチップ処理モジュール中の少なくとも1つの計算装置に接続されることさえ保証されれば、各ネットワークオンチップ処理モジュール中の各計算装置はいずれも別のネットワークオンチップ処理モジュールと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数のネットワークオンチップ処理モジュールは各ネットワークオンチップ処理モジュール中の任意の1つの計算装置を介して互いに接続され、つまり、各ネットワークオンチップ処理モジュール中の任意の1つの計算装置は別のネットワークオンチップ処理モジュール中の任意の1つの計算装置と互いに接続するようにしてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、1枚のチップに設けられた複数のネットワークオンチップ処理モジュールの間に接続を確立するとともに、各ネットワークオンチップ処理モジュール中の複数の計算装置の間に接続を確立することにより、複数の計算装置同士にモジュール内通信を実現できるとともに、任意の2つのネットワークオンチップ処理モジュール同士にモジュール間の直接的通信を実現でき、当該システムは同時に記憶装置インタフェースを読み取る計算装置を減らし、帯域幅の輻輳を緩和することができ、モジュール間のデータ伝送により、データの読み書き効率が向上する。
本願の一実施例では、ネットワークオンチップ処理システムを提供し、当該システムは、直接的に接続された任意の2つのネットワークオンチップ処理モジュールを含み、任意の2つのネットワーク処理モジュールは1枚のチップに設けられ、各ネットワークオンチップ処理モジュールは複数の記憶装置を含み、且つ、前記ネットワークオンチップ処理モジュールにおいて、少なくとも1つの計算装置は前記ネットワークオンチップ処理モジュールの内部の前記複数の記憶装置に接続され、且つ前記複数の計算装置のうちの少なくとも2つの計算装置は互いに接続される。
図12は一実施例によるネットワークオンチップ処理システム1930であり、図12に示すように、ネットワークオンチップ処理システム1930は互いに接続された4つのネットワークオンチップ処理モジュールを含み、前記4つのネットワークオンチップ処理モジュールはネットワークオンチップ処理システム1920の1枚のチップに設けられ、前記4つのネットワークオンチップ処理モジュールのうちの任意2つのネットワークオンチップ処理モジュールは直接的に接続され、各ネットワークオンチップ処理モジュールは、記憶装置1931と、記憶装置1936と、4つの計算装置(計算装置1932から計算装置1935)とを含み、ここで、各ネットワークオンチップ処理モジュールにおいて、計算装置1932はそのネットワークオンチップ処理モジュールの内部の記憶装置1931及び記憶装置1936に接続され、且つ各ネットワークオンチップ処理モジュールの内部の4つの計算装置は互いに接続される。
具体的には、各ネットワークオンチップ処理モジュールの処理すべきデータは全て当該ネットワークオンチップ処理モジュールの内部の記憶装置に格納され、つまり、各ネットワークオンチップ処理モジュール中の複数の計算装置は所在のネットワークオンチップ処理モジュールの内部の記憶装置にしかアクセスすることができず、所在のネットワークオンチップ処理モジュールの内部の記憶装置からしかデータの読み書きを行うことができない。各ネットワークオンチップ処理モジュール中の計算装置は近接する記憶装置に優先してアクセスする。
選択可能で、各ネットワークオンチップ処理モジュール中の記憶装置の数量は2つに限定されず、3つ、4つ又は5つ以上であってもよく、ここで具体的に限定せず、4つであることが好ましい。具体的には、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置と接続が確立され、つまり、各ネットワークオンチップ処理モジュール中の計算装置は当該ネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスすることができる。
選択可能で、各ネットワークオンチップ処理モジュールにおいて、前記複数の計算装置は互いに接続して計算装置ネットワークが形成され、各ネットワークオンチップ処理モジュール中の複数の計算装置の相互の接続方式は、ネットワークオンチップ処理システム1100からネットワークオンチップ処理システム1400の接続方式を参照することができ、ここで再度説明しない。選択可能で、各ネットワークオンチップ処理モジュール中の複数の計算装置では全ての計算装置が記憶装置1931に接続されることは要求されず、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が記憶装置1931に接続されればよく、ここで具体的に限定しない。
選択可能で、各ネットワークオンチップ処理モジュール中の少なくとも1つの計算装置が別のネットワークオンチップ処理モジュール中の少なくとも1つの計算装置に接続されることさえ保証されれば、各ネットワークオンチップ処理モジュール中の各計算装置はいずれも別のネットワークオンチップ処理モジュールと接続を確立してもよく、ここで具体的に限定しない。選択可能で、前記複数のネットワークオンチップ処理モジュールは各ネットワークオンチップ処理モジュール中の任意の1つの計算装置を介して互いに接続され、つまり、各ネットワークオンチップ処理モジュール中の任意の1つの計算装置は別のネットワークオンチップ処理モジュール中の任意の1つの計算装置と互いに接続するようにしてもよく、ここで具体的に限定しない。
上記のネットワークオンチップ処理システムにおいて、各計算装置は所在のネットワークオンチップ処理モジュール中の全ての記憶装置にアクセスできるとともに、任意の2つのネットワークオンチップ処理モジュールの間にモジュール間の直接的通信を実現することができ、当該システムは複数の通信チャネルを提供してデータ伝送を行うことができ、これにより、データの読み書き効率を向上させることができ、当該システムで各計算装置は近接する記憶装置に優先してアクセスすることにより、メモリアクセスオーバーヘッドを節約するとともに、ある程度の柔軟性を保証することができる。
その一実施例では、図13に示すように、図13に示すネットワークオンチップ処理システムの計算装置は機械学習計算を実行するために用いてもよく、当該計算装置は、コントローラユニット11と、演算ユニット12とを含み、ここで、コントローラユニット11は演算ユニット12に接続され、当該演算ユニット11は、1つの主処理回路と、複数の副処理回路とを含み、
コントローラユニット11は、入力データ及び計算コマンドを取得するために用いられる。選択可能な一形態では、具体的には、入力データ及び計算コマンドはデータ入出力ユニットにより得るようにしてもよく、当該データ入出力ユニットは、具体的に1つ又は複数のデータI/Oインタフェース又はI/Oピンであってもよい。
上記の計算コマンドは、フォワード演算コマンド、バックワードトレーニングコマンド、又は他のニューラルネットワーク演算コマンド等、例えば、畳み込み演算コマンドを含むが、これらに限定せず、本願の具体的な実施形態では、上記の計算コマンドの形態を具体的に限定しない。
具体的には、コントローラユニット11は、さらに、当該計算コマンドを解析して複数の演算コマンドを得、当該複数の演算コマンド及び前記入力データを前記主処理回路に送信するために用いられる。
当該演算ユニット12は、1つの主処理回路101と、複数の副処理回路102とを含む。ここで、主処理回路101は、前記入力データに前処理を実行し、前記複数の副処理回路とデータ及び演算コマンドを伝送するために用いられ、
複数の副処理回路102は、前記主処理回路から伝送されたデータ及び演算コマンドに基づき、並行して中間演算を実行して複数の中間結果を得、複数の中間結果を前記主処理回路に伝送するために用いられ、
主処理回路101は、前記複数の中間結果に後続の処理を実行して前記計算コマンドの計算結果を得るために用いられる。
本願による技術的解決手段において、演算ユニットは1つの主ユニット及び複数の副ユニットを含む構造として設定され、フォワード演算の計算コマンドに対して、フォワード演算の計算コマンドに基づいてデータを区分することができ、このようにして複数の副処理回路により、計算量が大きな部分について並行して演算することができ、演算速度を向上させ、演算時間を短縮させ、さらには消費パワーを低減することができる。
選択可能で、上記の計算装置は、当該記憶ユニット10と、ダイレクトメモリアクセスユニット50とを含んでもよく、記憶ユニット10は、レジスタ及びキャッシュの一方、又は任意の組み合わせを含んでもよく、具体的には、前記キャッシュは、前記計算コマンドを記憶するために用いられ、前記レジスタは、前記入力データ及びスカラーを記憶するために用いられ、前記キャッシュは高速一時的キャッシュである。ダイレクトメモリアクセスユニット50は、記憶ユニット10からデータを読み取り、データを記憶するために用いられる。
選択可能で、当該コントローラユニットは、コマンド記憶ユニット110と、コマンド処理ユニット111と、キュー記憶ユニット113とを含み、ここで、
コマンド記憶ユニット110は、前記人工ニューラルネットワーク演算に関連する計算コマンドを記憶するために用いられ、
前記コマンド処理ユニット111は、前記計算コマンドを解析して複数の演算コマンドを得るために用いられ、
キュー記憶ユニット113は、コマンドキューを記憶するために用いられ、当該コマンドキューは、当該キューの前後順番に従って実行される複数の演算コマンド及び/又は計算コマンドを含む。
例えば、選択可能な一形態では、主演算処理回路は1つのコントローラユニットを含んでもよく、当該コントローラユニットは、具体的に、コマンドをマイクロコマンドに復号するための主コマンド処理ユニットを含んでもよい。また、選択可能な別の形態では、副演算処理回路は別のコントローラユニットを含んでもよく、当該別のコントローラユニットは、具体的に、マイクロコマンドを受信及び処理するための副コマンド処理ユニットを含む。上記のマイクロコマンドはコマンドの下位コマンドであってもよく、当該マイクロコマンドは、コマンドに対する区分又は復号により得てもよく、さらに各デバイス、各ユニット又は各処理回路の制御信号として復号されることが可能である。
選択可能な一形態では、当該計算コマンドの構造は表1に示すとおりであってもよい。
表中、リーダーは複数のレジスタ又は即値を含み得ることを表す。
選択可能な別の形態では、当該計算コマンドは、1つ又は複数の操作フィールドと、1つの操作コードとを含んでもよい。当該計算コマンドは、ニューラルネットワーク演算コマンドを含んでもよい。ニューラルネットワーク演算コマンドを例とすると、表2に示すように、表中、レジスタ番号0、レジスタ番号1、レジスタ番号2、レジスタ番号3、レジスタ番号4は操作フィールドであってもよい。ここで、レジスタ番号0、レジスタ番号1、レジスタ番号2、レジスタ番号3、レジスタ番号4はそれぞれ1つ又は複数のレジスタの番号であってもよい。
上記のレジスタはチップ外メモリであってもよく、当然ながら、実際の応用において、データを記憶するためのチップ内メモリであってもよく、当該データは具体的にn次元(nは1以上の整数である)データであってもよく、例えば、n=1である場合に、1次元データ、即ちベクトルであり、n=2である場合に、2次元データ、即ち行列であり、n=3又は4以上である場合に、多次元テンソルである。
選択可能で、当該コントローラユニットは、複数の演算コマンドがある場合に、第1演算コマンドと前記第1演算コマンドの前の第ゼロ演算コマンドとに相関関係があるか否かを決定し、前記第1演算コマンドと前記第ゼロ演算コマンドとに相関関係がある場合に、前記第1演算コマンドを前記コマンド記憶ユニットにキャッシュし、前記第ゼロ演算コマンドの実行完了後、前記コマンド記憶ユニットから前記第1演算コマンドを抽出して前記演算ユニットに伝送するための前記依存関係処理ユニット112をさらに含んで、当該第1演算コマンドと第1演算コマンドの前の第ゼロ演算コマンドとに相関関係があるか否かを決定する前記ステップは、前記第1演算コマンドに基づいて前記第1演算コマンドに必要なデータ(例えば、行列)の第1ストレージアドレス区間を抽出し、前記第ゼロ演算コマンドに基づいて前記第ゼロ演算コマンドに必要な行列の第ゼロストレージアドレス区間を抽出し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、前記第1演算コマンドと前記第ゼロ演算コマンドとに相関関係があると決定し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、前記第1演算コマンドと前記第ゼロ演算コマンドとに相関関係がないと決定することを含んてもよい。
選択可能な別の実施例では、演算ユニット12は、図14に示すように、1つの主処理回路101と、複数の副処理回路102とを含んでもよい。一実施例では、図14に示すように、複数の副処理回路はアレイのように分布し、各副処理回路は隣接する他の副処理回路に接続され、主処理回路は前記複数の副処理回路のうちのk個の副処理回路に接続され、前記k個の副処理回路は、1行目のn個の副処理回路、m行目のn個の副処理回路及び1列目のm個の副処理回路であり、なお、図14に示すK個の副処理回路は、1行目のn個の副処理回路、m行目のn個の副処理回路及び1列目のm個の副処理回路のみを含み、即ち、当該k個の副処理回路は複数の副処理回路のうちの、主処理回路に直接的に接続された副処理回路である。
k個の副処理回路は、前記主処理回路と複数の副処理回路の間にデータ及びコマンドを転送するために用いられる。
選択可能で、図15に示すように、当該主処理回路は、変換処理回路110、活性化処理回路111及び加算処理回路112の1種又は任意の組み合わせをさらに含んでもよく、変換処理回路110は、主処理回路の受信したデータブロック又は中間結果に対して第1データ構造と第2データ構造の相互変換(例えば、連続データと離散データの変換)を実行し、又は主処理回路の受信したデータブロック又は中間結果に対して第1データタイプと第2データタイプの相互変換(例えば、固定小数点型と浮動小数点型の変換)を実行するために用いられ、活性化処理回路111は、主処理回路内のデータの活性化演算を実行するために用いられ、加算処理回路112は、加算演算又は累積演算を実行するために用いられる。
前記主処理回路は、前記入力ニューロンをブロードキャストデータとして決定し、重み値を分配データとして決定し、分配データを複数のデータブロックに配分し、前記複数のデータブロックのうちの少なくとも1つのデータブロック及び複数の演算コマンドのうちの少なくとも1つの演算コマンドを前記副処理回路に送信するために用いられ、前記複数の副処理回路は、当該演算コマンドに従って、受信したデータブロックに演算を実行して中間結果を得、演算結果を前記主処理回路に伝送するために用いられ、前記主処理回路は、複数の副処理回路の送信した中間結果に処理を行って当該計算コマンドの結果を得、当該計算コマンドの結果を前記コントローラユニットに送信するために用いられる。
前記副処理回路は、乗算処理回路を含み、前記乗算処理回路は、受信されたデータブロックに乗算を実行して乗算結果を得るために用いられ、選択可能で、副処理回路は、転送処理回路をさらに含んでもよく、前記転送処理回路は、受信されたデータブロック又は乗算結果を転送するために用いられる。
選択可能で、副処理回路は、累積処理回路をさらに含んでもよく、前記累積処理回路は、当該乗算結果に累積演算を実行して当該中間結果を得るために用いられる。
別の一実施例では、当該演算コマンドは行列と行列を掛けるコマンド、累積コマンド、活性化コマンド等の計算コマンドである。
次に、ニューラルネットワーク演算コマンドを用いて、図1に示す計算装置の計算方法を具体的に説明する。ニューラルネットワーク演算コマンドについて、実際に実行する算式は、s=s(Σwxi+b)であってもよく、即ち、重み値wと入力データxiを乗算したものの和を求め、バイアスbを加算して活性化演算s(h)を行って、最終的な出力結果sを得る。
選択可能な一実施形態では、図16に示すように、前記演算ユニットは、ツリー型モジュール40を含み、前記ツリー型モジュールは、1つのルートポート401と、複数の分岐ポート404とを含み、前記ツリー型モジュールのルートポートは前記主処理回路に接続され、前記ツリー型モジュールの複数の分岐ポートは、それぞれ、複数の副処理回路のうちの1つの副処理回路に接続され、上記のツリー型モジュールは送受信機能を有し、例えば、図16に示すように、当該ツリー型モジュールは送信機能を有し、図17に示すように、当該ツリー型モジュールは受信機能を有する。
前記ツリー型モジュールは、前記主処理回路と前記複数の副処理回路の間にデータブロック、重み値及び演算コマンドを転送するために用いられる。
選択可能で、当該ツリー型モジュールは計算装置の選択可能な結果であり、少なくとも1層のノードを含んでもよく、当該ノードは転送機能を有する線形構造であり、当該ノード自体は計算機能を有しなくてもよい。ツリー型モジュールがノードをゼロ層有する場合に、当該ツリー型モジュールを必要としない。
選択可能で、当該ツリー型モジュールはn分木構造、例えば、図18に示す二分木構造であってもよいし、当然ながら三分木構造であってもよく、当該nは2以上の整数であってもよい。本願の実施形態では上記のnの値を具体的に限定せず、上記の層数は2であってもよく、副処理回路は最後から2番目の層のノード以外の層のノードに接続されてもよく、例えば、図18に示すように、最後の層のノードに接続されてもよい。
選択可能で、上記の演算ユニットには独立的なキャッシュが含まれてもよく、図19に示すように、ニューロンキャッシュユニットを含んでもよく、当該ニューロンキャッシュユニット63は当該副処理回路の入力ニューロンベクトルデータ及び出力ニューロン値データをキャッシュする。
図20に示すように、当該演算ユニットは、当該副処理回路の計算中に必要な重み値データをキャッシュするための重み値キャッシュユニット64をさらに含んでもよい。
選択可能な一実施例では、図21に示すように、演算ユニット12は分岐処理回路103を含んでもよく、その具体的な接続構造は図21に示すとおりであり、ここで、主処理回路101は(1つ又は複数の)分岐処理回路103に接続され、分岐処理回路103は1つ又は複数の副処理回路102に接続され、分岐処理回路103は、主処理回路101と副処理回路102の間のデータ又はコマンドの転送を実行するために用いられる。
本願は、ニューラルネットワーク演算装置であって、1つ又は複数の本願に係る計算装置を含み、他の処理装置から演算対象データ及び制御情報を取得し、指定された機械学習演算を実行し、実行結果をI/Oインタフェースによって周辺装置に伝送するためのニューラルネットワーク演算装置をさらに提供する。周辺装置は、例えば、カメラ、表示装置、マウス、キーボード、ネットワークアダプタカード、wifiインタフェース、サーバである。1つ以上の計算装置を含む場合に、計算装置間は特定の構造によってリンクされてデータを伝送することができ、例えば、PCIEバスを介して互いに接続されてデータを伝送することで、規模がより大きな機械学習において演算をサポートする。このときに、1つの制御システムを共有してもよいし、それぞれ独立的に制御システムを有してもよく、メモリを共有してもよいし、各アクセラレータはそれぞれメモリを有してもよい。また、その相互の接続方式は任意の相互接続トポロジであってもよい。
当該ニューラルネットワーク演算装置は良い互換性を有し、PCIEインタフェースを介して様々なタイプのサーバに接続されることは可能である。
本願は、上記のニューラルネットワーク演算装置と、相互接続共通インタフェースと、他の処理装置とを含む組合せ処理装置をさらに提供する。ニューラルネットワーク演算装置が他の処理装置とインタラクションを行うことにより、協働してユーザが指定した操作を完了する。図22は組合せ処理装置の模式図である。
他の処理装置は、中央プロセッサCPU、グラフィックプロセッサGPU、ニューラルネットワークプロセッサ等の汎用/専用プロセッサの1種以上のプロセッサタイプを含む。他の処理装置に含まれるプロセッサの数量を限定しない。他の処理装置は、ニューラルネットワーク演算装置と外部データ及び制御とのインタフェースとして、データ転送を含み、本ニューラルネットワーク演算装置の起動、停止等の基本制御を行う。他の処理装置はニューラルネットワーク演算装置と協働して演算タスクを行うようにしてもよい。
相互接続共通インタフェースは、前記ニューラルネットワーク演算装置と他の処理装置との間にデータ及び制御コマンドを伝送するために用いられる。当該ニューラルネットワーク演算装置は他の処理装置から必要な入力データを取得して、ニューラルネットワーク演算装置のチップ上の記憶装置に書き込み、他の処理装置から制御コマンドを取得して、ニューラルネットワーク演算装置のチップ上の制御キャッシュに書き込んでもよいし、ニューラルネットワーク演算装置の記憶モジュールからデータを読み取って他の処理装置に伝送してもよい。
選択可能で、図23に示すように、当該構造は記憶装置をさらに含んでもよく、記憶装置は前記ニューラルネットワーク演算装置及び前記他の処理装置にそれぞれ接続される。記憶装置は前記ニューラルネットワーク演算装置及び前記他の処理装置のデータを保存するために用いられ、特に、演算必要なデータのうち本ニューラルネットワーク演算装置又は他の処理装置の内部メモリに全てを保存できないデータに適する。
当該組合せ処理装置は、携帯電話、ロボット、ドローン、ビデオ監視装置等装置のSOCシステムオンチップとすることができ、制御部分のコア面積を効果的に減らし、処理速度を向上させ、全体的な消費パワーを低減することができる。この場合に、当該組合せ処理装置の相互接続共通インタフェースは装置のいくつかのデバイスに接続される。いくつかのデバイスは、例えばカメラ、表示装置、マウス、キーボード、ネットワークアダプタカード、wifiインタフェースである。
本願は、いくつかの実施例で、上記のニューラルネットワーク演算装置又は組合せ処理装置を含むチップをさらに提案する。
本願は、いくつかの実施例で、上記のチップを含むチップパッケージ構造をさらに提案する。
本願は、いくつかの実施例で、上記のチップパッケージ構造を含む回路基板カードをさらに提案する。図24を参照すると、図24は回路基板カードを提供し、上記の回路基板カードは上記のチップ389以外に、他の付帯デバイスを含んでもよく、当該付帯デバイスは、メモリデバイス390、インタフェース装置391、コントロールデバイス392を含むが、それらに限られない。
前記メモリデバイス390はバスを介して前記チップパッケージ構造内のチップに接続され、データを記憶するために用いられる。前記メモリデバイスは、複数のグループの記憶ユニット393を含んでもよい。各グループの前記記憶ユニットはバスを介して前記チップに接続される。なお、各グループの前記記憶ユニットはDDR SDRAM(Double Data Rate SDRAM、ダブルデータレート同期ダイナミックランダムアクセスメモリ)であってもよいことを理解されたい。
DDRはクロック周波数を引き上げなくてもSDRAMの速度を倍増することができる。DDRではクロックパルスの立ち上がりエッジ及び立ち下がりエッジにおいてデータを読み取ることが認められる。DDRの速度は標準的なSDRAMの2倍である。一実施例では、前記記憶装置は4つのグループの前記記憶ユニットを含んでもよい。各グループの前記記憶ユニットは複数のDDR4パーティクル(チップ)を含んでもよい。一実施例では、前記チップの内部に4つの72ビットDDR4コントローラが含まれてもよく、上記の72ビットDDR4コントローラにおいて64ビット(bit)はデータ伝送のために、8ビット(bit)はECC検証のために用いられる。なお、各グループの前記記憶ユニットにDDR4-31200パーティクルが用いられる場合に、データ伝送の理論帯域幅は251,600MB/sに達し得ることを理解されたい。
一実施例では、各グループの前記記憶ユニットは並列して設けられた複数のダブルデータレート同期ダイナミックランダムアクセスメモリを含む。DDRは1つのクロック周期においてデータを2回伝送することができる。前記チップにDDRを制御するコントローラが設けられ、前記コントローラは各前記記憶ユニットのデータ伝送及びデータ記憶を制御するために用いられる。
前記インタフェース装置は前記チップパッケージ構造内のチップに電気的に接続される。前記インタフェース装置は前記チップと外部装置(例えば、サーバ又はコンピュータ)の間のデータ伝送を実現するために用いられる。例えば、一実施例では、前記インタフェース装置は標準的なPCIEインタフェースであってもよい。例えば、処理対象データはサーバにより標準的なPCIEインタフェースを介して前記チップに伝送されることにより、データの移行を実現する。選択可能で、PCIE 3.0×16インタフェースを用いて伝送する場合に、理論帯域幅は116,000MB/sに達し得る。別の実施例では、前記インタフェース装置は他のインタフェースであってもよく、本願では上記の他のインタフェースの形態を具体的に限定せず、前記インタフェースユニットが移行機能を実現できるものであればよい。また、前記チップの計算結果は依然として前記インタフェース装置によって外部装置(例えば、サーバ)に返送される。
前記コントロールデバイスは前記チップに電気的に接続される。前記コントロールデバイスは前記チップの状態を監視するために用いられる。具体的には、前記チップはSPIインタフェースを介して前記コントロールデバイスに電気的に接続されてもよい。前記コントロールデバイスはマイクロコントロールユニット(Micro Controller Unit、MCU)を含んでもよい。前記チップは複数の処理チップと、複数のプロセッサコア又は複数の処理回路を含んでもよく、複数の負荷を駆動することができる。したがって、前記チップは多負荷や低負荷など、異なる動作状態にあってもよい。前記制御装置により、前記チップのうちの複数の処理チップ、複数のプロセッサコア又は複数の処理回路の動作状態に対する調節を実現できる。
いくつかの実施例では、上記の回路基板カードを含む電子機器を提案する。
電子機器は、データ処理装置、ロボット、パソコン、プリンタ、スキャナ、タブレットパソコン、スマート端末、携帯電話、ドライブレコーダ、ナビゲータ、センサ、監視カメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、ヘッドフォン、モバイルストレージ、ウェアラブル装置、交通機関、家電製品、及び/又は医療装置を含む。
前記交通機関は飛行機、クルーズ船及び/又は車両を含み、前記家電製品はテレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードを含み、前記医療装置は核磁気共鳴装置、Bモード超音波装置及び/又は心電計を含む。
一実施例では、図25に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ202、第1計算装置が記憶装置にアクセスすることにより、第1演算データを取得する。
ここで、第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第1計算装置のコントローラユニットが記憶装置から第1演算データ及び計算コマンドを取得する。
ステップ204、前記第1計算装置が前記第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、記憶装置から読み取られた第1演算データに対し、対応する計算コマンドに基づいて第1計算装置において演算を実行して、第1演算結果を得る。
ステップ206、前記第1演算結果を第2計算装置に送信する。
ここで、第1計算装置は第2計算装置に対して確立した通信チャネルによって、第1計算装置のコントローラユニットにより第1演算結果を第2計算装置に送信する。選択可能で、第1演算結果を第2計算装置に送信してもよいし、第1演算結果を記憶装置に送信してもよい。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図1~5に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法は、第1計算装置による第1演算結果を第2計算装置に送信することにより、複数の計算装置間のデータ伝送を実現することができ、また、演算データの繰り返し使用により、計算装置が記憶装置に複数回アクセスすることで帯域幅オーバーヘッドが大きいことを避けることができ、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
その一実施例では、図26に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ302、第1計算装置が記憶装置にアクセスすることにより、第1演算データを取得する。
ここで、計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第1計算装置のコントローラユニットが記憶装置から第1演算データ及び計算コマンドを取得する。
ステップ304、前記第1計算装置が前記第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、記憶装置から読み取られた第1演算データに対し、対応する計算コマンドに基づいて第1計算装置において演算を実行して、第1演算結果を得る。
ステップ306、前記第1演算結果を第2計算装置に送信する。
ここで、第1計算装置は第2計算装置に対して確立した通信チャネルによって、第1計算装置のコントローラユニットにより第1演算結果を第2計算装置に送信する。
ステップ308、前記第2計算装置が前記記憶装置にアクセスすることにより、第2演算データを取得する。
ここで、第2計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第2計算装置のコントローラユニットが記憶装置から第2演算データ及び計算コマンドを取得する。
ステップ310、前記第2計算装置が前記第2演算データと前記第1演算結果に演算を実行することにより、第2演算結果を得る。
ここで、記憶装置から読み取られた第2演算データ及び第1計算装置から受信された第1演算結果に対し、対応する計算コマンドに基づいて第1計算装置において演算を実行して、第2演算結果を得る。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図1~5に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法は、第1計算装置による第1演算結果を第2計算装置に送信して、第2計算装置が当該第1演算結果を利用して再度演算を実行することで、演算データの繰り返し使用を実現でき、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
その一実施例では、図26に示すネットワークオンチップによるデータ処理方法を図9に示すネットワークオンチップ処理システム1900に応用し、ここで、計算装置1902から計算装置1905はいずれも所在のネットワークオンチップ処理モジュール中の記憶装置1901に接続され、且つ計算装置1902から計算装置1905のうちの任意の2つの計算装置は直接的に接続される。
例えば、行列の掛け算を実行し、
に対し、
を算出し、
ここで、c
00=a
00*b
00+a
01*b
10、
c
01=a
00*b
01+a
01*b
11、
c
10=a
10*b
00+a
11*b
10、
c
11=a
10*b
01+a
11*b
11に対し、
まず、時間の分割を実行して、3つの期間を得る。
次に、第1期間において、計算装置1902から計算装置1905は同時に所在のネットワークオンチップ処理モジュール中の記憶装置1901にアクセスする。
具体的には、計算装置1902が記憶装置1901から第1演算データa00及びb00を読み取り、計算装置1903が記憶装置1901から第1演算データa01及びb11を読み取り、計算装置1904が記憶装置1901から第1演算データa11及びb10を読み取り、計算装置1905が記憶装置1901から第1演算データa10及びb01を読み取る。
さらに、計算装置1902において、読み取られた第1演算データa00及びb00に演算を実行して、第1演算結果a00*b00を得、計算装置1903において、読み取られた第1演算データa01及びb11に演算を実行して、第1演算結果a01*b11を得、計算装置1904において、読み取られた第1演算データa11及びb10に演算を実行して、第1演算結果a11*b10を得、計算装置1905において、読み取られた第1演算データa10及びb01に演算を実行して、第1演算結果a10*b01を得る。
次に、第2期間において、計算装置1902が計算装置1903から第1演算データa01を、計算装置1904から第1演算データb10をそれぞれ読み取り、演算して第2演算結果a01*b10を得、計算装置1903が計算装置1902から第1演算データa00を、計算装置1905から第1演算データb01をそれぞれ読み取り、演算して第2演算結果a00*b01を得、計算装置1904が計算装置1905から第1演算データa10を、計算装置1902から第1演算データb00をそれぞれ読み取り、演算して第2演算結果a10*b00を得、計算装置1905が計算装置1904から第1演算データa11を、計算装置1903から第1演算データb11をそれぞれ読み取り、演算して第2演算結果a11*b11を得る。
次に、第3期間において、計算装置1902が第1演算結果a00*b00及び第2演算結果a01*b10に演算を実行して、第3演算結果c00=a00*b00+a01*b10を得、第3演算結果c00を記憶装置1902に送信し、計算装置1903が第1演算結果a01*b11及び第2演算結果a00*b01に演算を実行して、第3演算結果c01=a00*b01+a01*b11を得、第3演算結果c01を記憶装置1902に送信し、計算装置1904が第1演算結果a11*b10及び第2演算結果a10*b00に演算を実行して、第3演算結果c10=a10*b00+a11*b10を得、第3演算結果c10を記憶装置1902に送信し、計算装置1905が第1演算結果a10*b01及び第2演算結果a11*b11に演算を実行して、第3演算結果c11=a10*b01+a11*b11を得、第3演算結果c11を記憶装置1902に送信する。
その一実施例では、図27に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ402、第1計算装置グループが記憶装置にアクセスすることにより、第1演算データを取得し、ここで、前記第1計算装置グループは複数の第1計算装置を含む。
ここで、第1計算装置グループcluster1中の各第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、cluster1中のコントローラユニットが記憶装置から第1演算データ及び計算コマンドを取得する。
選択可能で、cluster1中の複数の第1計算装置は同時に記憶装置にアクセスし、各第1計算装置が記憶装置からcluster1に必要なデータの一部を読み取り、これらのデータはcluster1内において伝送される。選択可能で、cluster1中の1つ又は複数の第1計算装置が記憶装置にアクセスすることができ、残りの第1計算装置はグループ内通信しかできないように指定する。
ステップ404、前記第1計算装置グループが前記複数の第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、複数の第1演算データに対して、対応する計算コマンドに基づいて、複数の第1計算装置において演算、転送を行うことにより、第1演算結果を得る。
ステップ406、前記第1演算結果を第2計算装置グループに送信する。
ここで、cluster1は第2計算装置グループcluster2に対して確立した通信チャネルによって、cluster1中のコントローラユニットにより第1演算結果をcluster2に送信する。
選択可能で、第1演算結果をcluster2に送信してもよいし、第1演算結果を記憶装置に送信してもよい。選択可能で、cluster1におけるcluster2に対して通信チャネルが確立された任意の1つの第1計算装置により、第1演算結果をcluster2に送信する。選択可能で、cluster1は第1演算結果をcluster2におけるcluster1に対して通信チャネルが確立された任意の1つの第2計算装置に送信するようにしてもよい。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図6~8に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法は、複数の計算装置グループ同士はグループ内通信だけでなく、グループ間のデータ伝送を実現することができ、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
その一実施例では、図28に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ502、第1計算装置グループが記憶装置にアクセスすることにより、第1演算データを取得し、ここで、前記第1計算装置グループは複数の第1計算装置を含む。
ここで、第1計算装置グループcluster1中の各第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、cluster1中のコントローラユニットが記憶装置から第1演算データ及び計算コマンドを取得する。
選択可能で、cluster1中の複数の第1計算装置は同時に記憶装置にアクセスし、各第1計算装置が記憶装置からcluster1に必要なデータの一部を読み取り、これらのデータはcluster1内において伝送される。選択可能で、cluster1中の1つ又は複数の第1計算装置が記憶装置にアクセスすることができ、残りの第1計算装置はグループ内通信しかできないように指定する。
ステップ504、前記第1計算装置グループが前記複数の第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、複数の第1演算データに対して、対応する計算コマンドに基づいて、複数の第1計算装置において演算、転送を行うことにより、第1演算結果を得る。
ステップ506、前記第1演算結果を第2計算装置グループに送信する。
ここで、cluster1は第2計算装置グループcluster2に対して確立した通信チャネルによって、cluster1中のコントローラユニットにより第1演算結果をcluster2に送信する。
選択可能で、cluster1におけるcluster2に対して通信チャネルが確立された任意の1つの第1計算装置により、第1演算結果をcluster2に送信する。選択可能で、cluster1は第1演算結果をcluster2におけるcluster1に対して通信チャネルが確立された任意の1つの第2計算装置に送信するようにしてもよい。
ステップ508、前記第2計算装置グループが前記記憶装置にアクセスすることにより、第2演算データを取得し、ここで、前記第2計算装置グループは複数の第2計算装置を含む。
ここで、cluster2中の各第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、cluster2中のコントローラユニットが記憶装置から第2演算データ及び計算コマンドを取得する。
選択可能で、cluster2中の複数の第2計算装置は同時に記憶装置にアクセスし、各第2計算装置が記憶装置からcluster2に必要なデータの一部を読み取り、これらのデータはcluster2内において伝送される。選択可能で、cluster2中の1つ又は複数の第2計算装置が記憶装置にアクセスすることができ、残りの第2計算装置はグループ内通信しかできないように指定する。
ステップ510、前記第2計算装置グループが前記第2演算データと前記第1演算結果に演算を実行することにより、第2演算結果を得る。
ここで、記憶装置から読み取られた第2演算データ及び第1計算装置グループから受信された第1演算結果に対し、対応する計算コマンドに基づいて複数の第2計算装置において演算、転送を行うことにより、第2演算結果を得る。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図6~8に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法において、第1計算装置グループ中の第1演算結果を第2計算装置グループに送信し、第2計算装置グループが当該第1演算結果を利用して再度演算を実行することで、演算データの繰り返し使用を実現でき、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
その一実施例では、図29に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ602、第1ネットワークオンチップ処理モジュールにより第1演算データを取得し、ここで、前記第1ネットワークオンチップ処理モジュールは第1記憶装置と、複数の第1計算装置とを含み、前記第1演算データは前記第1記憶装置に記憶される。
ここで、第1ネットワークオンチップ処理モジュール中の各第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第1ネットワークオンチップ処理モジュール中のコントローラユニットが第1記憶装置から第1演算データ及び計算コマンドを取得する。
選択可能で、第1ネットワークオンチップ処理モジュール中の複数の第1計算装置は同時に第1記憶装置にアクセスし、各第1計算装置が第1記憶装置から当該第1ネットワークオンチップ処理モジュールに必要なデータの一部を読み取り、これらのデータは第1ネットワークオンチップ処理モジュール内において伝送される。
選択可能で、第1ネットワークオンチップ処理モジュール中の1つ又は複数の第1計算装置が第1記憶装置にアクセスすることができ、残りの第1計算装置はグループ内通信しかできないように指定する。具体的には、第1ネットワークオンチップ処理モジュールが処理すべき演算データはいずれも第1記憶装置に記憶される。
ステップ604、前記第1ネットワークオンチップ処理モジュールの複数の第1計算装置が、前記第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、複数の第1演算データに対して、対応する計算コマンドに基づいて、複数の第1計算装置において演算、転送を行うことにより、第1演算結果を得る。
ステップ606、前記第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。
ここで、第1ネットワークオンチップ処理モジュールは第2ネットワークオンチップ処理モジュールに対して確立した通信チャネルによって、第1ネットワークオンチップ処理モジュール中のコントローラユニットにより第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。
選択可能で、第1演算結果を第2ネットワークオンチップ処理モジュールに送信してもよいし、第1演算結果を第1記憶装置に送信してもよい。選択可能で、第1ネットワークオンチップ処理モジュールにおける第2ネットワークオンチップ処理モジュールに対して通信チャネルが確立された任意の1つの第1計算装置により、第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。選択可能で、第1ネットワークオンチップ処理モジュールは第1演算結果を、第2ネットワークオンチップ処理モジュールにおける第1ネットワークオンチップ処理モジュールに対して通信チャネルが確立された任意の1つの第2計算装置に送信するようにしてもよい。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図9~12に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法において、複数のネットワークオンチップ処理モジュールの間にモジュール内通信だけでなく、モジュール間のデータ伝送を実現することができ、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
その一実施例では、図30に示すように、ネットワークオンチップによるデータ処理方法を提供し、当該方法は以下のステップを含む。
ステップ702、第1ネットワークオンチップ処理モジュールにより第1演算データを取得し、ここで、前記第1ネットワークオンチップ処理モジュールは第1記憶装置と、複数の第1計算装置とを含み、前記第1演算データは前記第1記憶装置に記憶される。
ここで、第1ネットワークオンチップ処理モジュール中の各第1計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第1ネットワークオンチップ処理モジュール中のコントローラユニットが第1記憶装置から第1演算データ及び計算コマンドを取得する。
選択可能で、第1ネットワークオンチップ処理モジュール中の複数の第1計算装置は同時に第1記憶装置にアクセスし、各第1計算装置が第1記憶装置から当該第1ネットワークオンチップ処理モジュールに必要なデータの一部を読み取り、これらのデータは第1ネットワークオンチップ処理モジュール内において伝送される。
選択可能で、第1ネットワークオンチップ処理モジュール中の1つ又は複数の第1計算装置が第1記憶装置にアクセスすることができ、残りの第1計算装置はグループ内通信しかできないように指定する。具体的には、第1ネットワークオンチップ処理モジュールが処理すべき演算データはいずれも第1記憶装置に記憶される。
ステップ704、前記第1ネットワークオンチップ処理モジュールの複数の第1計算装置が、前記第1演算データに演算を実行することにより、第1演算結果を得る。
ここで、複数の第1演算データに対して、対応する計算コマンドに基づいて、複数の第1計算装置において演算、転送を行うことにより、第1演算結果を得る。
ステップ706、前記第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。
ここで、第1ネットワークオンチップ処理モジュールは第2ネットワークオンチップ処理モジュールに対して確立した通信チャネルによって、第1ネットワークオンチップ処理モジュール中のコントローラユニットにより第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。
選択可能で、第1ネットワークオンチップ処理モジュールにおける第2ネットワークオンチップ処理モジュールに対して通信チャネルが確立された任意の1つの第1計算装置により、第1演算結果を第2ネットワークオンチップ処理モジュールに送信する。選択可能で、第1ネットワークオンチップ処理モジュールは第1演算結果を、第2ネットワークオンチップ処理モジュールにおける第1ネットワークオンチップ処理モジュールに対して通信チャネルが確立された任意の1つの第2計算装置に送信するようにしてもよい。
ステップ708、前記第2ネットワークオンチップ処理モジュールにより第2演算データを取得し、ここで、前記第2ネットワークオンチップ処理モジュールは第2記憶装置と、複数の第2計算装置とを含み、前記第2演算データは前記第2記憶装置に記憶される。
ここで、第2ネットワークオンチップ処理モジュール中の各第2計算装置は、演算ユニットと、コントローラユニットとを含み、演算ユニットは、1つの主処理回路と、複数の副処理回路とを含む。具体的には、第2ネットワークオンチップ処理モジュール中のコントローラユニットが第2記憶装置から第2演算データ及び計算コマンドを取得する。
選択可能で、第2ネットワークオンチップ処理モジュール中の複数の第2計算装置は同時に第2記憶装置にアクセスし、各第2計算装置が第2記憶装置から当該第2ネットワークオンチップ処理モジュールに必要なデータの一部を読み取り、これらのデータは第2ネットワークオンチップ処理モジュール内において伝送される。
選択可能で、第2ネットワークオンチップ処理モジュール中の1つ又は複数の第2計算装置が第2記憶装置にアクセスすることができ、残りの第2計算装置はグループ内通信しかできないように指定する。具体的には、第2ネットワークオンチップ処理モジュールが処理すべき演算データはいずれも第2記憶装置に記憶される。
ステップ710、前記第2ネットワークオンチップ処理モジュールの複数の第2計算装置が、前記第2演算データとび前記第1演算結果に演算を実行することにより、第2演算結果を得る。
ここで、ステップ710は、具体的に、以下のステップを含む。
ステップ7102、前記複数の第2計算装置において前記第2演算データと前記第1演算結果に演算を実行することにより、前記第2演算結果を得る。
具体的には、各第2計算装置は、対応する計算コマンドに基づいて、第2演算データと第1演算結果に演算を実行して、複数の中間結果を得、次に対応する計算コマンドに基づいて、複数の中間結果に演算を実行して、第2演算結果を得るようにしてもよい。
ステップ7104、前記第2演算結果を前記第2記憶装置に記憶する。
さらに、本実施例によるネットワークオンチップによるデータ処理方法は、図9~12に示すいずれかのネットワークオンチップ処理システムに応用することができる。
上記のネットワークオンチップによるデータ処理方法は、第1ネットワークオンチップ処理システム中の第1演算結果を第2ネットワークオンチップ処理システムに送信して、第2ネットワークオンチップ処理システムが当該第1演算結果を利用して再度演算を実行することで、演算データの繰り返し使用を実現でき、当該方法は演算データ及び中間演算結果を合理的に利用することができ、データの処理効率が向上する。
本願の実施例によるネットワークオンチップ処理方法は機械学習計算、具体的には、人工ニューラルネットワーク演算に用いることができ、ここで、ネットワークオンチップ処理システム中の演算データは具体的に、入力ニューロンデータと、重み値データとを含んでもよく、ネットワークオンチップ処理システムの演算結果は具体的に、人工ニューラルネットワーク演算の結果、即ち出力ニューロンデータであってもよい。
ニューラルネットワーク中の演算は、ニューラルネットワーク中のある層の演算であってもよく、多層ニューラルネットワークの場合は、次のように実現する。フォワード演算において、前の層の人工ニューラルネットワークの実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された出力ニューロンを次の層の入力ニューロンとして演算を実行し(又は、当該出力ニューロンにある操作を行ってから次の層の入力ニューロンとする)、同時に重み値を次の層の重み値に置き換える。バックワード演算において、前の層の人工ニューラルネットワークのバックワード演算の実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された入力ニューロン勾配を次の層の出力ニューロン勾配として演算を実行し(又は、当該入力ニューロン勾配にある操作を行ってから次の層の出力ニューロン勾配とする)、同時に重み値を次の層の重み値に置き換える。
上記の機械学習計算はサポートベクターマシン演算、k-近傍(k-nn)演算、k-平均(k-means)演算、主成分分析演算等を含んでもよい。次に、説明しやすさのために、人工ニューラルネットワーク演算を例として機械学習計算の詳細を説明する。
人工ニューラルネットワーク演算については、当該人工ニューラルネットワーク演算は多層の演算を有する場合に、多層の演算において入力ニューロン及び出力ニューロンはニューラルネットワーク全体の入力層中のニューロン及び出力層中のニューロンではなく、ネットワークにおける任意の隣接する2層における、ネットワークフォワード演算の下位層に位置するニューロンは入力ニューロンであり、ネットワークフォワード演算の上位層に位置するニューロンは出力ニューロンである。畳み込みニューラルネットワークを例とすると、畳み込みニューラルネットワークがL層を有し、K=1,2,…,L-1であると仮定すると、K層目及びK+1層目に対し、K層目を入力層と称し、そのニューロンは前記入力ニューロンであり、K+1層目を出力層と称し、そのニューロンは前記出力ニューロンである。即ち、トップ層以外の各層はいずれも入力層として、その次の層は対応する出力層とすることができる。
選択可能な一実施例では、ニューラルネットワーク演算中の全結合演算を例とすると、プロセスはy=f(wx+b)であってもよく、ここで、xは入力ニューロン行列、wは重み値行列、bはバイアススカラーであり、fは活性化関数で、具体的には、sigmoid関数、tanh、relu、softmax関数のうちの任意の一つであってもよい。ここで、二分木構造であり、8つの副処理回路を有すると仮定とすると、次のように実現するようにしてもよい。
コントローラユニットが記憶ユニットから入力ニューロン行列x、重み値行列w及び全結合演算コマンドを取得し、入力ニューロン行列x、重み値行列w及び全結合演算コマンドを主処理回路に伝送し、主処理回路は当該入力ニューロン行列xをブロードキャストデータとして決定し、重み値行列wを分配データとして決定し、重み値行列wを8つのサブ行列に区分し、次に8つのサブ行列をツリー型モジュールによって8つの副処理回路に分配し、入力ニューロン行列xを8つの副処理回路にブロードキャストし、副処理回路は並行して8つのサブ行列と入力ニューロン行列xの乗算演算と累積演算を実行して8つの中間結果を得、8つの中間結果を主処理回路に送信し、主処理回路は、8つの中間結果をソートしてwxの演算結果を得、当該演算結果にバイアスb演算を実行した後、活性化操作を実行して最終結果yを得、最終結果yをコントローラユニットに送信するために用いられ、コントローラユニットは当該最終結果yを出力し、又は記憶ユニットに記憶する。
図1に示す計算装置によるニューラルネットワークフォワード演算コマンドの実行方法は、具体的に以下のとおりであってもよい。
コントローラユニットがコマンド記憶ユニットからニューラルネットワークフォワード演算コマンド、ニューラルネットワーク演算コマンドに対応する操作フィールド及び少なくとも1つの操作コードを抽出して、コントローラユニットは当該操作フィールドをデータアクセスユニットに伝送し、当該少なくとも1つの操作コードを演算ユニットに送信する。
コントローラユニットが記憶ユニットから当該操作フィールドに対応する重み値w及びバイアスbを抽出し(bが0である場合に、バイアスbを抽出する必要がない)、重み値w及びバイアスbを演算ユニットの主処理回路に伝送し、コントローラユニットは記憶ユニットから入力データXiを抽出して、当該入力データXiを主処理回路に送信する。
主処理回路は当該少なくとも1つの操作コードに基づいて乗算演算として決定し、入力データXiをブロードキャストデータとして決定し、重み値データを分配データとして決定して、重み値wをn個のデータブロックに区分し、コントローラユニットのコマンド処理ユニットは当該少なくとも1つの操作コードに基づいて乗算コマンド、バイアスコマンド及び累積コマンドを決定し、乗算コマンド、バイアスコマンド及び累積コマンドを主処理回路に送信し、主処理回路は当該乗算コマンド、入力データXiをブロードキャストによって複数の副処理回路に送信し、当該n個データブロックを当該複数の副処理回路に分配し(例えば、n個の副処理回路がある場合に、各副処理回路に1つのデータブロックを送信する)、複数の副処理回路は、当該乗算コマンドに従って当該入力データXiと受信したデータブロックの乗算演算を実行して中間結果を得、当該中間結果を主処理回路に送信するために用いられ、当該主処理回路は当該累積コマンドに従って複数の副処理回路が送信した中間結果に累積演算を実行して累乗算結果を得、当該バイアスコマンドに従って当該累乗算結果にバイアスbを加える演算を実行して最終結果を得、当該最終結果を当該コントローラユニットに送信する。
なお、加算演算と乗算演算の順番は入れ替えてもよい。
本願による技術的解決手段は、1つのコマンド、即ちニューラルネットワーク演算コマンドだけでニューラルネットワークの乗算演算及びバイアス演算を実現し、ニューラルネットワークにおいて算出された中間結果はいずれも記憶又は抽出する必要がなく、中間データの記憶及び抽出操作が低減されるため、対応する操作ステップを減らし、ニューラルネットワークの計算効果を向上させるという利点を有する。
情報技術が発展し続けニーズが日々増えるのにつれて、データアクセス及びデータ処理に対する要求がますます高まり、これに伴ってデータを処理及びアクセスする一部のプロセッサの一層の高度化が求められる。汎用プロセッサを例とすると、複数の汎用プロセッサコア(例えば、CPUコア)からなるマルチコアプロセッサは、その優れた並行計算能力から、主流になる。
しかしながら、現在、人工ニューラルネットワークが発展し続けるのにつれて、ますます多くのアーキテクチャの機械学習チップが次第に開発されてきており、これらの機械学習チップは動作中にコマンドに基づいてデータアクセスし、又は共有メモリ中のデータを処理する必要がある。データアクセス又は共有メモリ中のデータが多い場合に、機械学習チップのコマンドが複雑になり、コマンドによる共有メモリの読み取りの速度に影響を与え、ニューロンデータの処理効率の低下を招く。
したがって、機械学習チップによるデータアクセス時のアクセス速度をいかに向上させるかは、当業者が早急に解決すべき技術的課題になる。
上記の問題を解决するために、本願は以下の技術的解決手段を提供する。
本願によるデータ処理方法は図31に示すハードウェア回路に応用することができ、当該回路は、機械学習装置11と、伝送回路12と、共有メモリ13とを含み、機械学習装置11と前記伝送回路12、伝送回路12と共有メモリ13はいずれもインタフェースを介して接続され、ここで、当該機械学習装置11、伝送回路12及び共有メモリ13並びに当該インタフェースはいずれもハードウェア回路として実現してもよく、例えば、機械学習装置は複数の機械学習ユニット(Machine Learning Unit、略称MLU)からなる演算機能を有する装置であってもよく、伝送回路はブロードキャストバス(broadcast bus)であってもよく、共有メモリは非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されない。本実施例は上記の特定のハードウェアの形態について限定しない。ここで、伝送回路12は機械学習装置11の発したデータ操作信号に基づいて、共有メモリ13から機械学習装置11に必要な入力データを取得し、入力データを機械学習装置11に返すために用いられ、機械学習装置11は入力データに基づいて機械学習演算を実行して、出力データを得、そして、出力データを新たな入力データとして、伝送回路12によって共有メモリ13に伝送してデータを記憶させるために用いられる。
一実施例では、図32でデータ処理方法を提供し、本実施例は、伝送回路がデータ操作信号の第1タイプフラグビット及び第2タイプフラグビットに基づいてデータ操作信号のタイプを決定し、決定されたタイプに基づいて特定された対応する操作によってメモリから必要なデータを得ることでアクセス速度を向上させることの具体的な過程に関する。図2に示すように、当該方法は以下を含む。
S2101、内部装置又は外部装置の送信したデータ操作信号を受信し、前記データ操作信号は操作フィールドと、操作コードとを含み、前記操作コードは第1タイプフラグビットを含み、前記操作フィールドは第2タイプフラグビットを含み、前記第1タイプフラグビットは前記データ操作信号がI/Oコマンドであるか否かを表すために用いられ、前記第2タイプフラグビットは前記データ操作信号が前記I/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであるか否かを表すために用いられる。
本実施例では、伝送回路は内部装置又は外部装置の送信したデータ操作信号を受信し、当該データ操作信号にデータ操作信号の第1タイプフラグビット及び第2タイプフラグビットが担持されており、ここで、当該内部装置又は外部装置はインタフェースを介して伝送回路に接続された機械学習装置であってもよく、当該機械学習装置は任意のハードウェアとして実現してもよく、例えば、複数のMLUからなる演算機能を有する装置である。ここで、伝送回路は当該データ操作信号に担持されたデータ操作信号の第1タイプフラグビットに基づいて当該データ操作信号の値がI/Oコマンドであるか否かを決定することができ、第2タイプフラグビットに基づいて当該データ操作信号がI/Oコマンドの特定のタイプであるか否かを決定することができ、例えば、当該データ操作信号の第1タイプフラグビットの値がI/Oコマンドであり、第2タイプフラグビットの値が1である場合に、当該データ操作信号はI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドである。
S2102、前記データ操作信号に基づいてメモリ中の操作対象データに対して対応する操作を実行して、必要な入力データを得る。
上記のステップS2101で伝送回路が内部装置又は外部装置の送信したデータ操作信号を受信すると、当該データ操作信号のタイプフラグビットに基づいて、伝送回路はメモリ中の操作対象データに対して対応する操作を実行することを決定して、必要な入力データ、例えば、ニューロンデータ及び重み値データを得る。ここで、ニューロンデータ及び重み値データは内部装置又は外部装置に必要なデータであり、例えば、当該内部装置又は外部装置が機械学習装置である場合に、当該ニューロンデータ及び重み値データは機械学習装置が機械学習演算を行うために必要な入力データである。前記データはあらかじめメモリに記憶されているデータであってもよいし、機械学習装置が機械学習演算を実行した後に出力したデータであってもよく、本実施例ではこれに関して限定しない。
本実施例によるデータ処理方法では、伝送回路は内部装置又は外部装置が送信した第1タイプフラグビット及び第2タイプフラグビットが担持されたデータ操作信号に基づき、メモリ中の操作対象データに対して対応する操作を実行し、必要な入力データを得る。本実施例では、データ操作信号に第1タイプフラグビット及び第2タイプフラグビットが担持されるため、伝送回路は当該データ操作信号を受信した後、データ操作信号の第1タイプフラグビット及び第2タイプフラグビットに基づいて当該データ操作信号の具体的なタイプを判断し、そしてメモリ中の操作対象データに対して対応する操作を実行することができる。このようにして、データ操作信号のタイプフラグビットに基づいて分類しておくと、速やかに対応する操作を特定することができ、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
以下、いくつかの実施例を用いて当該操作コードと操作フィールド、及びそれらとデータ操作信号のタイプフラグビット、操作対象データの情報及びデータ受信フラグビットとの関係をそれぞれ説明する。
一実施例では、前記操作フィールドはデータ受信フラグビットをさらに含み、前記データ受信フラグビットは前記入力データを受信する装置又は処理回路を表すために用いられる。選択可能で、前記データ受信フラグビットの個数は前記メモリとインタラクションを行える装置の個数又は処理回路の個数を表す。選択可能で、前記第1タイプフラグビットの値がI/Oである場合に、前記データ操作信号がI/Oコマンドであると決定し、前記第2タイプフラグビットの値が1である場合に、前記データ操作信号が前記I/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであると決定する。
本実施例では、データ操作信号の操作コードは当該データ操作信号の操作タイプを指示するために用いられ、当該データ操作信号の第1タイプフラグビットを含み、前記操作フィールドは当該データ操作信号の実行中に必要なデータ情報を記憶するために用いられ、第2タイプフラグビットを含み、例示的に、操作コード中のデータ操作信号の第1タイプフラグビットの値がI/Oである場合に、当該データ操作信号がI/Oコマンドであることを表し、操作フィールド中の第2タイプフラグビットの値が1である場合に、当該データ操作信号がI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであることを表し、なお、本実施例では、第2タイプフラグビットが1である場合に、当該データ操作信号がI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであると決定するというのが、1つの実施形態に過ぎず、ユーザの実際のニーズに応じて、第2タイプフラグビットが0又は他の識別子である場合に、当該データ操作信号がI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであると決定してもよく、本実施例ではこれに関して限定しない。ここで、当該データ受信フラグビットは内部装置又は外部装置のうち入力データ(例えば、入力ニューロンデータ及び重み値データ)を受信できる装置又は処理回路を表す。ここで、当該装置は機械学習装置又はMLUであってもよく、処理回路は演算ユニット又は演算ユニットの主処理回路又は副処理回路であってもよく、本実施例ではこれに関して限定しない。ここで、データ受信フラグビットの個数は前記メモリとインタラクションを行える装置の個数又は処理回路の個数を表し、例示的に、当該操作フィールド中のデータ受信フラグビットのうち3つのMLU(機械学習ユニット)のフラグが1である場合に、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0である場合に、当該1つのMLUがデータを受信できないことを表す。なお、ここで、データを受信できるMLUのフラグが1であるというのが例示的なものに過ぎず、ユーザは実際のニーズに応じて、データを受信できるMLUのフラグを0又は他の識別子としてもよく、本実施例ではこれに関して限定しない。
本実施例では、伝送回路はデータ信号の第1タイプフラグビット及び第2タイプフラグビットに基づいて、当該データ操作信号の具体的なタイプを決定し、その後、対応する操作を特定して、データ受信フラグビットに基づいて操作実行後のデータ送信の目標装置を決定することができ、このようにして、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
別の実施例では、前記操作フィールドは操作対象データの情報をさらに含み、前記操作対象データの情報は前記メモリにおける前記操作対象データのソースアドレス、操作対象データ長さ、及びデータ操作後のデータ返しアドレスを含む。図33に示すように、データ処理方法を提供し、本実施例は、伝送回路がデータ操作信号に担持されたデータ情報に基づき、メモリにおいてデータを読み取り、当該データ操作情報に基づいて読み取られたデータを装置又は処理回路に返すことの具体的な過程に関する。上記のS2102は以下を含む。
S2201、前記ソースアドレスから始めて前記メモリを読み取り、前記データ長さを満たす入力データを取得する。
本実施例では、データ操作信号の操作対象データの情報にメモリにおける操作対象データのソースアドレス、操作対象データ長さ、及びデータ操作後のデータ返しアドレスが担持されるため、伝送回路が当該メモリのソースアドレスから始めてデータを読み取り、予め設定された規則に基づいて操作対象データ長さを満たすまで読み取り、ここで、当該操作対象データ長さはユーザが実際の状況に応じて自ら設定するものであり、本実施例ではこれに関して限定しない。ここで、伝送回路が当該データ長さを満たす入力データ及びデータを取得するということは、予め設定された規則に基づいてメモリから当該データ長さを満たすデータを読み取ることである。ここで、当該予め設定された規則もユーザが実際の状況に応じて設定した規則であり、本実施例ではこれに関して限定せず、例えば、ソースアドレスから始めて一つずつ読み取り、読み取られたデータ長さが当該データ長さを満たすまで続けることであってもよい。
S2202、前記データ受信フラグビットに基づいて、入力データを受信する装置又は処理回路を決定する。
上記のステップS2201で伝送回路が取得したデータ長さを満たした入力データによって、伝送回路はデータ信号中のデータ受信フラグビットに基づいてデータが返される装置又は処理回路を決定し、例えば、当該装置が機械学習装置である場合に、伝送回路はデータ受信フラグビットに基づいてデータを当該機械学習装置中の1つ又は複数の目標機械学習ユニットに返すことを決定する。
S2203、前記データ返しアドレスに従って、前記入力データを前記装置又は処理回路における前記データ返しアドレスに対応するストレージスペースに返す。
本ステップでは、上記のステップで決定されたデータが返される装置又は処理回路に対し、伝送回路がデータ操作信号の操作対象データの情報中のデータ返しアドレスに従って、当該入力データを装置又は処理回路における当該データ返しアドレスに対応するストレージスペースに返し、ここで、当該操作対象データの情報中のデータ返しアドレスは機械学習装置の複数の目標機械学習ユニット中のアドレスであってもよい。
例示的に、次の表3に示すように、本実施例では、例えば、上記の実施例を踏まえ、操作コード中の第1タイプデータフラグビットの値がI/Oである場合に、当該データ操作信号がI/Oコマンドであることを表し、操作フィールド中の第2タイプデータフラグビットの値が1である場合に、当該データ操作信号がI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであることを表し、これに応じて、当該第2タイプデータフラグビットの値が0である場合に、当該データ操作信号がブロードキャスト又はマルチキャストコマンドでないことを表す。操作フィールド中の操作対象データの情報にソースアドレス0x110011、目的アドレス0x000100及びデータ長さ0x0100が含まれ、当該データ長さはユーザが自ら設定した長さであり、ユーザは当該設定長さを1つの値に設定してもよいし、当該設定長さを複数の値に設定してもよく、本実施例ではこれに関して限定しない。操作フィールド中のデータ受信フラグビットのうち3つのMLUのフラグが1であり、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0であり、当該1つのMLUがデータを受信できないことを表し、具体的には、伝送回路は当該データ操作信号に基づいて共有メモリ中のアドレス0x110011から長さが0x0100のデータを読み取り、その後、機械学習装置中のMLU3、MLU1及びMLU0のアドレス0x000100にそれぞれ書き込む。
本実施例によるデータ処理方法では、伝送回路はデータ操作信号に基づいてソースアドレスから始めてメモリを読み取り、データ長さを満たす入力データを取得して、データ受信フラグビットに基づいて、入力データを受信する装置又は処理回路を決定し、次にデータ返しアドレスに従って、入力データを装置又は処理回路におけるデータ返しアドレスに対応するストレージスペースに返し、本実施例では、伝送回路が前記データ長さを満たす入力ニューロンデータ及び重み値データを取得する時、当該データ操作信号中のデータ操作情報によって指示された読取規則に従ってデータを読み取るため、伝送回路のデータ読取ロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
選択可能で、上記の図33に示す実施例では、前記装置は少なくとも1つの機械学習ユニットを含み、各機械学習ユニットは主処理回路と、複数の副処理回路とを含む。ここで、当該機械学習装置に含まれる少なくとも1つの機械学習ユニット(即ちMLU)によって実行されるデータ信号操作において、1つのデータ受信インタフェースが共有されてもよく、当該機械学習ユニットは送信インタフェース又は共有データ受信インタフェースによって伝送回路に接続されてもよい。なお、当該送信インタフェース及び共有データ受信インタフェースはいずれもハードウェア回路として実現してもよく、本実施例では当該送信インタフェース及び共有データ受信インタフェースのタイプを限定しない。ここで、各機械学習ユニットは主処理回路と、複数の副処理回路とを含み、主処理回路は、入力データ(ニューロンデータ及び重み値データ)を複数の副処理回路に分配するために用いられ、複数の副処理回路は、主処理回路が伝送した入力データに基づき、並行して中間演算を実行して複数の中間結果を得、当該複数の中間結果を主処理回路に伝送するために用いられる。このようにして、装置は各機械学習ユニットに配分してそれぞれそのニューロンを処理させ、対応する出力データを出力させることができ、このようにして、各層のニューラルネットワークが並行して計算を実行することにより、ニューラルネットワーク計算の並行処理を実現でき、処理効率が向上する。
上記の実施例をベースにして、前記操作フィールドはジャンプサブ操作フィールドをさらに含み、前記ジャンプサブ操作フィールドはジャンプストライド及び各回のジャンプ後に操作されるジャンプデータ長さを含み、図34に示すように、データ処理方法を提供し、本実施例は伝送回路が操作フィールド中のジャンプサブ操作フィールドに基づいてメモリ中のデータを読み取ることの具体的な過程に関する。上記のS2201は以下を含む。
S2301、前記ソースアドレスから始めて前記メモリを読み取り、今回のジャンプ後のジャンプデータ長さに基づいて第1ジャンプデータを取得する。
本実施例では、データ操作信号の操作フィールドにジャンプサブ操作フィールドが含まれ、当該ジャンプサブ操作フィールドは、当該伝送回路が当該データ操作信号に基づいて操作対象データの情報を読み取る時、当該サブ操作フィールドの規則に従って読み取ることを指示するために用いられる。選択可能で、当該ジャンプサブ操作フィールドはストライド(stride)操作フィールド及び/又はセグメント(segment)操作フィールドを含み、前記ストライド(stride)操作フィールドは前記データ操作信号の各回のジャンプストライドを表すために用いられ、前記セグメント(segment)操作フィールドは予め設定された前記データ操作信号の各回の分割サイズを表すために用いられ、なお、当該ストライド(stride)操作フィールド及びセグメント(segment)操作フィールドに関して、本願の実施例で挙げられた長さ及び名称は例示的なものに過ぎず、本願の実施例ではこれを限定しない。ここで、当該ジャンプサブ操作フィールドにジャンプストライド及び各回のジャンプ後に操作されるジャンプデータ長さが含まれており、当該ジャンプデータ長さは予め設定されたデータ長さであってもよい。具体的には、伝送回路が操作対象データの情報中のソースアドレスから始めてメモリを読み取り、今回のジャンプ後、読み取られたジャンプデータ長さのデータを第1ジャンプデータとして決定し、ここで、当該第1ジャンプデータは伝送回路がデータの読み取り時に予め設定された長さのデータだけジャンプした後に取得するデータを表し、ここで、当該予め設定された長さはユーザが実際の状況に応じて自ら設定するものであり、本実施例ではこれに関して限定しない。
S2302、前記ジャンプデータの最後のアドレスを取得し、前記ジャンプストライドに基づいて前記最後のアドレスから目標ジャンプアドレスにジャンプする。
伝送回路は上記のステップS2301で読み取られた第1ジャンプデータに基づいて、当該第1ジャンプデータの最後のアドレスを取得し、ジャンプサブ操作フィールド中のジャンプストライド(例えば、strideストライド)に基づいて、当該第1ジャンプデータの最後のアドレスから当該ジャンプストライドの長さだけジャンプして目標ジャンプアドレスに達し、なお、当該第1ジャンプデータの最後のアドレスから目標ジャンプアドレスまでの長さはジャンプサブ操作フィールド中のジャンプストライドであることを理解されたい。
S2303、前記目標ジャンプアドレスから始めて、ジャンプ後のジャンプデータ長さに基づいて第2ジャンプデータを取得することは、各回のジャンプ後に得たジャンプデータの長さが前記データ長さを満たすまで続ける。
本ステップでは、伝送回路がデータを読み取る時に上記のステップS2302で決定された目標ジャンプアドレスから、予め設定された長さのデータだけジャンプし、次に、当該予め設定された長さだけジャンプした後のデータを第2ジャンプデータとして決定し、当該第2ジャンプデータのアドレスから、ジャンプし始めた上記のソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たした場合に、当該機械学習装置に必要なデータの読み取りが完了することを示し、当該第2ジャンプデータのアドレスから、ジャンプし始めた上記のソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たさない場合に、当該第2ジャンプデータのアドレスから、ジャンプし始めた上記のソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たし、即ち当該機械学習装置に必要なデータの読み取りが完了することを示すまで、当該第2ジャンプデータの最後のアドレスから、引き続き上記のステップS2301からS2303のジャンプ順番に従いジャンプして当該データを読み取る。
例示的に、次の表4に示すように、本実施例では、伝送回路がデータを読み取る過程は、例えば、操作フィールドにジャンプサブ操作フィールドのストライド(stride)操作フィールドがさらに含まれる場合に、伝送回路はデータ情報中のソースアドレス0x110011から始めて、共有メモリ中のデータを読み取り、予め設定された長さのデータ(当該予め設定された長さは下表のデータ情報中のデータ長さ0x0100未満である)を読み取り、次にストライド(stride)長さ(0x0008)のアドレスだけジャンプして、予め設定された長さのデータを読み取り、このようにして当該データを読み取り続けて、読み取られた当該データの全長が次の表4のデータ情報中のデータ長さ0x0100になると、当該データ読み取りが完了することを示す。操作フィールドにジャンプサブ操作フィールドのセグメント(segment)操作フィールドがさらに含まれる場合に、伝送回路はデータ情報中のソースアドレス0x110011から始めて共有メモリ中のデータを読み取り、まずセグメント(segment)長さ(0x0010)のデータを読み取り、次にストライド(stride)長さ(0x0008)のアドレスだけジャンプして、セグメント(segment)長さ(0x0010)のデータを読み取り、このようにして当該データを読み取り続けて、読み取られた当該データの全長が次の表3のデータ情報中のデータ長さ0x0100になると、当該データ読み取りが完了することを示す。なお、当該ジャンプサブ操作フィールドにはストライド(stride)操作フィールドがなく、セグメント(segment)操作フィールドしかない場合に、伝送回路がデータを読み取る時にソースアドレス0x110011から始めてセグメント(segment)長さ(0x0010)のデータを読み取り、読み取られた当該データの全長が次の表4のデータ情報中のデータ長さ0x0100になると、当該データ読み取りが完了することを示す。
本実施によるデータ処理方法では、伝送回路がソースアドレスから始めて共有メモリを読み取り、今回ジャンプ後のジャンプデータ長さに基づいて第1ジャンプデータを取得し、当該第1ジャンプデータの最後のアドレスからジャンプストライドに従ってジャンプして目標ジャンプアドレスに達し、次に目標ジャンプアドレスから始めて、ジャンプ後のジャンプデータ長さに基づいて第2ジャンプデータを取得することが、各回のジャンプ後に得たジャンプデータの長さがデータ長さを満たすまで続け、このようにして、操作フィールドがジャンプサブ操作フィールドを含む場合に、伝送回路はサブ操作フィールドのジャンプ規則に基づいてデータを読み取るため、伝送回路のデータ読取ロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
伝送回路が受信データ操作信号に基づいて操作する時、まず受信したデータ操作信号が符号化コマンドであるため、まず当該データ操作信号を復号して解析する必要があり、そのために本願の実施例はデータ処理方法を提供し、図35に示すように、前記データ処理装置中の伝送回路が前記データ処理装置中の機械学習装置の送信したデータ操作信号を受信することは、以下を含む。
S2401、前記データ操作信号を解析して、前記データ操作信号のタイプフラグビット及び操作対象データの情報を得る。
なお、一般にはデータ処理中にデータ操作信号の数量が比較的多く、伝送回路がそのうちの1つのデータ操作信号を処理する時、他のものを記憶する必要があり、具体的には、伝送回路が当該データ操作信号を解析して、当該データ操作信号に担持されたデータ情報及び当該データ操作信号のタイプフラグビットを解析する。ここで、当該データ操作情報は操作対象データ長さ、目標アドレス及び元アドレス等の情報を含んでもよく、本実施例ではこれに関して限定しない。
S2402、コマンドキューに従って、前記解析されたデータ操作信号を実行し、前記コマンドキューは前記データ操作信号の実行順番を表すために用いられる。
なお、当該データ操作信号の実行は順番通りに行う必要があることを理解されたい。伝送回路は、上記のステップS401で伝送回路が当該データ操作信号を解析して得たデータ操作情報及びタイプフラグビットに基づいて、コマンドキューに従って当該解析後のデータ操作信号を実行する。
本実施例によるデータ処理方法では、伝送回路が前記データ操作信号を解析することにより、データ操作信号のタイプフラグビット及び操作対象データの情報を得、次に伝送回路はコマンドキューに従って解析されたデータ操作信号を実行し、このようにして、データ操作信号を実行する前に、まずデータ操作信号を解析してから順番通り実行することで、伝送回路によるデータ操作信号に基づく操作実行の速度が大幅に速くなる。
伝送回路がキュー中の順番に従ってデータ操作信号を実行する時、実行するのは互いに関連するデータ操作信号であることを考慮して、本願では別の実施例を提供し、図36に示すように、前記方法は、前記伝送回路がコマンドキューに従って前記解析されたデータ操作信号を実行する前に、さらに、以下を含む。
S2501、隣接する前記解析されたデータ操作信号との依存関係を判断して、判断結果を得、前記依存関係はs番目のデータ操作信号と前記s番目のデータ操作信号の前のs-1番目のデータ操作信号とに相関関係があるか否かを表す。
ここで、伝送回路は隣接する前記解析されたデータ操作信号との依存関係を判断し、判断結果に基づいて、処理する隣接する2つのデータ操作信号に関連性があることを決定する必要があり、ここで、s番目のデータ操作信号は特定の信号ではなく、データ操作信号のうちの任意の1つの信号を表し、そしてs-1番目のデータ操作信号はs番目のデータ操作信号の前の信号である。
選択可能で、前記伝送回路が隣接する前記解析されたデータ操作信号との依存関係を判断することの可能な実現形態として、前記s番目のデータ操作信号に基づいて前記s番目のデータ操作信号に必要なデータを抽出するためのs番目のデータ操作信号、及び前記s-1番目のデータ操作信号に基づいて前記s-1番目のデータ操作信号に必要なデータを抽出するための第ゼロストレージアドレス区間をそれぞれ取得し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係があると決定し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係がないと決定する。ここで、伝送回路はs番目のデータ操作信号のs番目のデータ操作信号及びs-1番目のデータ操作信号の第ゼロストレージアドレス区間の関係に基づいて、隣接する前記解析されたデータ操作信号との依存関係をそれぞれ判断し、判断の方法としては、第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、当該s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係がなく、第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係があることであってもよい。
S2502、前記判断結果が、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係があることである場合に、前記s番目のデータ操作信号をキャッシュし、前記s-1番目のデータ操作信号の実行完了後、前記s番目のデータ操作信号を抽出する。
上記のステップで伝送回路が判定した隣接する2つのデータ操作信号の依存関係に基づいて、順番通りにデータ操作信号を実行し、判断結果が、s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係があることである場合に、伝送回路は当該s番目のデータ操作信号をキャッシュして、s-1番目のデータ操作信号の実行完了後、当該s番目のデータ操作信号を抽出する。
本実施例によるデータ処理方法は、伝送回路が隣接する2つのデータ操作信号の関連性を判断してデータ操作信号の一貫性を確保するため、このようにして着実な準備作業により、後期に当該データ操作信号に基づいて対応する操作を順調に実行することができ、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
また、伝送回路がデータ操作信号に基づいて読み取ったデータは機械学習装置が要求するフォーマットではないことを考慮すると、伝送回路は読み取られたデータにある程度の処理を行ってから機械学習装置に伝送する必要があり、選択可能で、前記操作フィールドは、読み取られたデータに行う処理操作を表すための機能フラグビットをさらに含む。ここで、データ操作信号の操作フィールドに含まれる機能フラグビットは伝送回路が当該機能フラグビットに基づいて読み取られたデータに対応する処理を行うことを表し、当該操作フィールドに含まれる機能フラグビットの個数は1つであってもよいし、複数であってもよく、本実施例ではこれに関して限定しない。例示的に、当該機能フラグビットは解凍追加フラグビットであり、当該フラグが1である場合に、データの読み取り後に、伝送回路は当該データを解凍してから、機械学習装置中の指定されたMLUに伝送し、又は当該機能フラグビットは暗号化フラグビットであり、当該暗号化フラグビットが1である場合に、データの読み取り後に、伝送回路は当該データを解凍してから、機械学習装置中の指定されたMLUに伝送し、本実施例では、伝送回路はデータ操作信号の操作フィールド中の機能フラグビットに基づいて読み取られたデータに対応する処理を行ってから、当該データを機械学習装置に伝送することで、機械学習装置が当該データを受信した後、すぐに認識して演算を実行することができるため、データ処理効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
本願の一実施例では、データ処理装置であって、プロセッサと、メモリとを含み、前記メモリにコンピュータプログラムが記憶されており、前記プロセッサが前記コンピュータプログラムを実行すると、内部装置又は外部装置の送信したデータ操作信号を受信するステップであって、前記データ操作信号はタイプフラグビットを含み、前記タイプフラグビットは前記データ操作信号がブロードキャスト又はマルチキャストコマンドであるかどうかを表すために用いられるステップと、前記データ操作信号に基づいてメモリ中の操作対象データに対して対応する操作を実行して、必要な入力データを得るステップとを実現する前記データ処理装置をさらに提供する。
本実施例によるデータ処理装置は、その実現原理及び技術的効果が上記のデータ処理方法の実施例に類似するため、ここで再度説明しない。
一実施例では、図37のデータ処理方法を提供し、本実施例は、伝送回路はデータ操作信号のタイプフラグビットに基づいてデータ操作信号のタイプを決定し、決定されたタイプに基づいて特定された対応する操作によってメモリから必要なデータを得ることでアクセス速度を向上させることの具体的な過程に関する。図37に示すように、当該方法は以下を含む。
S3101、内部装置又は外部装置の送信したデータ操作信号を受信し、前記データ操作信号は操作コードを含み、前記操作コードは前記タイプフラグビットを含み、前記タイプフラグビットは前記データ操作信号がブロードキャスト又はマルチキャストコマンドであるかどうかを表すために用いられる。
本実施例では、伝送回路は内部装置又は外部装置の送信したデータ操作信号を受信し、当該データ操作信号の操作コードは当該データ操作信号の操作タイプを指示するために用いられ、当該データ操作信号のタイプフラグビットを含み、ここで、当該内部装置又は外部装置はインタフェースを介して伝送回路に接続された機械学習装置であってもよく、当該機械学習装置は任意のハードウェアとして実現してもよく、例えば、複数のMLUからなる演算機能を有する装置である。ここで、伝送回路は当該データ操作信号に担持されたデータ操作信号のタイプフラグビットに基づいて当該データ操作信号のタイプを決定することができる。例えば、当該データ操作信号のタイプフラグビットの値が1である場合に、当該データ操作信号はブロードキャスト又はマルチキャストコマンドである。
S3102、前記データ操作信号に基づいてメモリ中の操作対象データに対して対応する操作を実行して、必要な入力データを得る。
伝送回路は上記のステップS3101で内部装置又は外部装置の送信したデータ操作信号を受信した後、当該データ操作信号のタイプフラグビットに基づいて、メモリ中の操作対象データに対して対応する操作を実行することを決定して、必要な入力データ、例えば、ニューロンデータ及び重み値データを得、ここで、当該ニューロンデータ及び重み値データは内部装置又は外部装置に必要なデータであり、例えば、当該内部装置又は外部装置が機械学習装置である場合に、当該ニューロンデータ及び重み値データは機械学習装置が機械学習演算を行うために必要な入力データである。前記データはあらかじめメモリに記憶されているデータであってもよいし、機械学習装置が機械学習演算を実行した後に出力したデータであってもよく、本実施例ではこれに関して限定しない。
本実施例によるデータ処理方法では、伝送回路は内部装置又は外部装置が送信した、データ操作信号のタイプフラグビットが担持されたデータ操作信号に基づいて、メモリ中の操作対象データに対して対応する操作を実行し、必要な入力データを得る。本実施例では、データ操作信号にデータ操作信号のタイプフラグビットが担持されているため、伝送回路は当該データ操作信号を受信した後、その中のデータ操作信号のタイプフラグビットに基づいて当該データ操作信号のタイプを判断し、そしてメモリ中の操作対象データに対して対応する操作を実行することができる。このようにして、データ操作信号のタイプフラグビットに基づいて分類しておくと、速やかに対応する操作を特定することができ、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
以下、いくつかの実施例を用いて当該操作コードと操作フィールド、及びそれらとデータ操作信号のタイプフラグビット、操作対象データの情報及びデータ受信フラグビットとの関係をそれぞれ説明する。
一実施例では、前記データ操作信号は操作フィールドをさらに含み、前記操作フィールドはデータ受信フラグビットを含み、前記データ受信フラグビットは前記入力データを受信する装置又は処理回路を表すために用いられる。選択可能で、前記データ受信フラグビットの個数は前記メモリとインタラクションを行える装置の個数又は処理回路の個数を表す。選択可能で、前記タイプフラグビットの値がCASTである場合に、前記データ操作信号がブロードキャスト又はマルチキャストコマンドであると決定し、本実施例では、データ操作信号の操作コードは当該データ操作信号の操作タイプを指示するために用いられ、当該データ操作信号のタイプフラグビットを含み、例示的に、操作コード中のデータ操作信号のタイプフラグビットがCASTである場合に、当該データ操作信号はブロードキャスト又はマルチキャストコマンドであることを表す。前記操作フィールドは当該データ操作信号の実行中に必要なデータ情報を記憶するために用いられ、データ受信フラグビットを含んでもよく、当該データ受信フラグビットは内部装置又は外部装置のうち入力データを受信できる装置又は処理回路を表す。ここで、当該装置は機械学習装置又はMLUであってもよく、処理回路は演算ユニット又は演算ユニットの主処理回路又は副処理回路であってもよく、本実施例ではこれに関して限定しない。ここで、データ受信フラグビットの個数は前記メモリとインタラクションを行える装置の個数又は処理回路の個数を表し、例示的に、当該操作フィールド中のデータ受信フラグビットのうち3つのMLU(機械学習ユニット)のフラグが1である場合に、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0である場合に、当該1つのMLUがデータを受信できないことを表す。なお、ここで、データを受信できるMLUのフラグが1であるというのが例示的なものに過ぎず、ユーザは実際のニーズに応じて、データを受信できるMLUのフラグを0又は他の識別子としてもよく、本実施例ではこれに関して限定しない。
本実施例では、伝送回路はデータ信号のタイプフラグビットに基づいて、当該データ操作信号のタイプを決定し、対応する操作を特定して、データ受信フラグビットに基づいて操作実行後のデータを送信する目標装置を決定することができ、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
例示的に、次の表5に示すように、本実施例では、例えば、上記の実施例を踏まえ、操作コード中のデータ操作信号のタイプフラグビットがCASTである場合に、当該データ操作信号はブロードキャスト又はマルチキャストコマンドであることを表し、操作フィールド中の操作対象データの情報はソースアドレス0x110011、目的アドレス0x000100及びデータ長さ0x0100を含み、ここで、当該データ長さはユーザが自ら設定した長さであり、ユーザは当該設定長さを1つの値に設定してもよいし、当該設定長さを複数の値に設定してもよく、本実施例では当該設定長さの値及び個数を具体的に限定しない。操作フィールド中のデータ受信フラグビットのうち3つのMLUのフラグが1であり、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0であり、当該1つのMLUがデータを受信できないことを表す。具体的には、伝送回路は当該データ操作信号に基づいて共有メモリ中のアドレス0x110011から長さが0x0100のデータを読み取り、その後、機械学習装置中のMLU3、MLU1及びMLU0のアドレス0x000100にそれぞれ書き込む。
本実施例によるデータ処理方法では、伝送回路はデータ操作信号に基づいてソースアドレスから始めてメモリを読み取り、データ長さを満たす入力データを取得して、データ受信フラグビットに基づいて、入力データを受信する装置又は処理回路を決定し、次にデータ返しアドレスに従って、入力データを装置又は処理回路におけるデータ返しアドレスに対応するストレージスペースに返し、本実施例では、伝送回路が前記データ長さを満たす入力データを取得する時、当該データ操作信号中のデータ操作情報によって指示された読取規則に従ってデータを読み取るため、伝送回路のデータ読取ロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
一実施例では、図31に示すように、本願の実施例によるデータ処理装置は図31に示す内容の一部であってもよいし又はその全てであってもよく、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの組み合わせとして実現してもよい。当該データ処理装置10は機械学習データの処理を実行するために用いられ、前記データ処理装置10は、機械学習装置11と、伝送回路12と、共有メモリ13とを含み、前記機械学習装置11は前記伝送回路12に接続され、前記伝送回路12は前記共有メモリ13に接続され、前記伝送回路12は前記機械学習装置11の発したデータ操作信号に基づいて、前記共有メモリ13から前記機械学習装置11に必要な入力データを取得して、前記入力データを前記機械学習装置11に返すために用いられ、前記データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持される。選択可能で、前記機械学習装置11は、前記入力データに基づいて機械学習演算を実行して、出力ニューロンデータを得るために用いられ、選択可能で、前記機械学習装置11は、さらに、前記出力ニューロンデータを新たな入力ニューロンデータとして、前記伝送回路12によって前記共有メモリ13に伝送してデータを記憶させるために用いられる。
なお、上記の機械学習装置、伝送回路及び共有メモリはいずれもハードウェア回路として実現してもよい。例示的に、機械学習装置は複数の機械学習ユニット(Machine Learning Unit、略称MLU)からなる演算機能を有する装置であってもよく、伝送回路はブロードキャストバス(broadcast bus)であってもよく、共有メモリは非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されない。ここで、上記の機械学習装置、伝送回路及び共有メモリはインタフェースによって互いにデータを伝送し、例えば、機械学習装置は当該インタフェースによってデータ操作信号を送信し、又は当該インタフェースによってデータを送受信するようにしてもよい。これに応じて、当該インタフェースは送信インタフェースであってもよいし、受信インタフェースであってもよく、即ち、当該インタフェースが送信インタフェースである場合に、機械学習装置は伝送回路にデータ操作信号又はデータを送信することができ、当該インタフェースが受信インタフェースである場合に、機械学習装置は伝送回路の送信したデータ操作信号又はデータを受信することができる。ここで、当該インタフェースは様々なタイプのインタフェースであってもよく、当該様々なタイプのインタフェースはいずれもハードウェア回路として実現してもよく、本実施例では当該様々なタイプのインタフェースのハードウェアとしての形態を具体的に限定せず、当該インタフェースによって機械学習装置、伝送回路及び共有メモリの間のデータ信号のインタラクションを実現できるものであればよい。ここで、入力データとは機械学習装置が機械学習演算を行う時に入力されるべきデータであり、例えば、入力ニューロンデータ及び重み値データであってもよい。上記のデータはあらかじめ共有メモリに記憶されているデータであってもよいし、機械学習装置が機械学習演算を実行した後に出力したデータであってもよく、選択可能で、機械学習装置は複数のデータI/Oインタフェース又はI/Oピンによって共有メモリに直接的に接続されて上記のデータを取得してもよいし、選択可能で、機械学習装置は複数のデータI/Oインタフェース又はI/Oピンによって伝送回路に接続され、伝送回路によって共有メモリに接続されて、上記のデータを取得してもよい。
ここで、データ操作信号は伝送回路が共有メモリ中のデータに読取操作を行うことを表してもよく、共有メモリ中のデータに書込操作を行うことを表してもよい。機械学習装置の発したデータ操作信号が読取操作である場合に、伝送回路は共有メモリから相応アドレスに対応する入力データを見つけて読み取り、これらのデータをデータ操作信号を発した機械学習装置に返すことができ、機械学習装置の発したデータ操作信号が書込操作である場合に、伝送回路は機械学習装置の出力した書込データを共有メモリに書き込むことができる。ここで、データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持され、当該データ操作信号のタイプフラグビットは当該データ操作信号のタイプを表し、例えば、当該データ操作信号のタイプフラグビットがCASTである場合に、当該データ操作信号のタイプがブロードキャスト又はマルチキャストコマンドであることを表す。当該操作対象データの情報は、伝送回路が当該データ操作信号に従って対応する操作を行う時に必要なデータを表し、当該データ操作信号のタイプフラグビットの形態及び操作対象情報中のデータ情報について、本実施例では具体的に限定せず、実際の状況に応じて設定することができる。
なお、本願によるデータ処理装置は機械学習演算に応用され、ここで、機械学習演算はニューラルネットワーク演算、k-means演算、サポートベクターマシン演算等を含む。ニューラルネットワーク演算を例とすると、機械学習装置が実行するニューラルネットワーク中の演算はニューラルネットワーク中の1層の演算であってもよく、多層ニューラルネットワークの場合は、次のように実現する。フォワード演算において、前の層の人工ニューラルネットワークの実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された出力ニューロンデータを次の層の入力ニューロンデータとして演算を実行し(又は、当該出力ニューロンデータに或る操作を行ってから次の層の入力ニューロンデータとする)、同時に重み値データを次の層の重み値データに置き換える。バックワード演算において、前の層の人工ニューラルネットワークのバックワード演算の実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された入力ニューロン勾配を(入力されるニューロンデータとしてもよい)次の層の出力ニューロン勾配として演算を実行し(出力されるニューロンデータとしてもよい)(又は、当該入力ニューロン勾配に或る操作を行ってから次の層の出力ニューロン勾配とする)、同時に重み値データを次の層の重み値データに置き換える。選択可能で、本願の実施例に係るニューラルネットワークは、人工ニューラルネットワークであってもよいし、スパイキングニューラルネットワークであってもよく、本実施例ではこれに関して限定しない。本実施例による機械学習装置は入力データに基づいて機械学習演算を実行することができ、例えば、機械学習演算では、多層ニューラルネットワークの場合、機械学習装置は各層のニューラルネットワークの出力するニューロンデータを算出し、各層のニューラルネットワークの入力端に対応する複数の入力データに対し乗算、和演算及び関数演算等、機械学習演算に含まれる一連の演算集合を実行してもよい。機械学習装置は機械学習演算により、カレント層の出力ニューロンデータを得た後、当該出力ニューロンデータを次の層のニューラルネットワークの入力ニューロンデータとして再度機械学習演算を行ってもよく、その前に、機械学習装置によりいつでも前記のカレント層の出力ニューロンデータを読み取って機械学習演算を行えるために、当該カレント層の出力ニューロンデータを伝送回路によって共有メモリに書き込んで記憶するようにしてもよい。
具体的には、実際の応用において、伝送回路は機械学習装置の発したデータ操作信号に基づいて、共有メモリから機械学習装置に必要な入力データを取得し、受信インタフェースによって入力データを機械学習装置に返し、次に、機械学習装置は入力データに基づいて機械学習演算を実行して、出力データを得、当該出力データを新たな入力データとして、伝送回路によって共有メモリに伝送してデータを記憶させる。本実施例では、データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持されているため、伝送回路は当該データ操作信号を受信した後、その中のデータ操作信号のタイプフラグビットに基づいて当該データ操作信号のタイプを判断し、次に当該データ操作信号に担持された操作対象データの情報に合わせて操作を実行する。このようにして、データ操作信号のタイプフラグビットに基づいて分類しておくと、速やかに対応する操作を特定することができ、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
一実施例では、図38に示すように、本願の実施例によるデータ処理装置は、前記機械学習装置11であって、少なくとも1つの機械学習ユニット14を含み、前記データ操作信号はデータ受信フラグビットをさらに含み、前記データ受信フラグビットは前記入力データを受信する目標機械学習ユニットを表すために用いられる前記機械学習装置を含む。
ここで、当該機械学習装置に含まれる少なくとも1つの機械学習ユニット(即ちMLU)によって実行されるデータ信号操作において、1つのデータ受信インタフェースが共有されてもよく、当該機械学習ユニットは送信インタフェース又は共有データ受信インタフェースによって伝送回路に接続されてもよい。なお、当該送信インタフェース及び共有データ受信インタフェースはいずれもハードウェア回路として実現してもよく、本実施例では当該送信インタフェース及び共有データ受信インタフェースのタイプを限定しない。ここで、データ操作信号はデータ受信フラグビットを含み、当該データ受信フラグビットは入力データを受信できる目標機械学習ユニットを表す。当該データ受信フラグビットの表示方式は、例えば、入力データを受信できる目標機械学習ユニットを1と表示し、これに対して、入力データを受信できない目標機械学習ユニットを0と表示することであってもよく、なお、ここで受信できる目標機械学習ユニットを1と表示するのが例示的なものに過ぎないことを理解されたい。実際の応用において、データを受信できる目標機械学習ユニットを0と表示し、データを受信できない目標機械学習ユニットを1と表示してもよく、本実施例では当該データ受信フラグビットの表示について具体的に限定しない。
本実施例では、データ操作信号に担持されているデータ受信フラグビットの表示状態に基づいて、機械学習装置のうち入力データを受信できる目標機械学習ユニットを決定することができ、このようにして、機械学習装置の各機械学習ユニットによるデータの受信はデータ操作信号中のデータ受信フラグビットに基づいて決定されるため、データのメモリアクセス中のメモリアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
以下、いくつかの実施例を用いて、上記の実施例に係るデータ操作信号のタイプフラグビット、操作対象データの情報、及びデータ受信フラグビットの間の関係をそれぞれ説明する。
一実施例では、前記データ操作信号のタイプフラグビットの値は、前記データ操作信号はブロードキャスト又はマルチキャストコマンドであることを表すCASTを含む。選択可能で、前記操作対象データの情報は前記共有メモリにおける前記操作対象データのソースアドレス、操作対象データ長さ、及びデータ操作後のデータ返しアドレスを含む。
本実施例では、データ操作信号のタイプフラグビットは当該データ操作信号の操作タイプを指示するために用いられる。例示的に、次の表6に示すように、データ操作信号のタイプフラグビットはCASTであり、当該データ操作信号はブロードキャスト又はマルチキャストコマンドであることを表し、操作対象データの情報はソースアドレス0x110011、目的アドレス0x000100及びデータ長さ0x0100を含み、ここで、当該データ長さはユーザが自ら設定した長さであり、ユーザは当該設定長さを1つの値に設定してもよいし、当該設定長さを複数の値に設定してもよく、本実施例では当該設定長さの値及び個数を具体的に限定しない。データ受信フラグビットで3つのMLUのフラグが1であり、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0であり、当該1つのMLUがデータを受信できないことを表す。具体的には、伝送回路は当該データ操作信号に基づいて共有メモリ中のアドレス0x110011から長さが0x0100のデータを読み取り、その後、機械学習装置中のMLU3、MLU1及びMLU0のアドレス0x000100にそれぞれ書き込む。
別の実施例では、上記のデータ操作信号のタイプフラグビットは第1タイプフラグビットと、第2タイプフラグビットとを含んでもよい。選択可能で、前記第1タイプフラグビットの値はI/Oを含み、前記データ操作信号がI/Oコマンドであることを表し、前記第2タイプフラグビットは前記データ操作信号が前記I/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであることを表すために用いられる。
本実施例では、当該データ操作信号は2つのデータタイプデータフラグビットを含み、そのうち第1タイプデータフラグビットは当該データ操作信号のタイプを表し、当該第2タイプデータフラグビットは当該データ操作信号の操作情報内に設定され、当該データ操作信号の具体的なサブタイプを表し、ここで、データ受信フラグビットは上記の実施例と同様に、入力データを受信できる目標機械学習ユニットを表す。例示的に、次の表7に示すように、第1タイプデータフラグビットの値はI/Oであり、当該データ操作信号がI/Oコマンドであることを表し、第2タイプデータフラグビットの値は1であり、当該データ操作信号がI/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであることを表し、これに対して、当該第2タイプデータフラグビットの値が0である場合に、当該データ操作信号がブロードキャスト又はマルチキャストコマンドでないことを表す。操作対象データの情報はソースアドレス0x110011、目的アドレス0x000100及びデータ長さ0x0100を含み、当該データ長さはユーザが自ら設定した長さであり、ユーザは当該設定長さを1つの値に設定してもよいし、当該設定長さを複数の値に設定してもよく、本実施例ではこれに関して限定しない。データ受信フラグビットで3つのMLUのフラグが1であり、当該3つのMLUがデータを受信できることを表し、1つのMLUのフラグが0であり、当該1つのMLUがデータを受信できないことを表し、具体的には、伝送回路は当該データ操作信号に基づいて共有メモリ中のアドレス0x110011から長さが0x0100のデータを読み取り、その後、機械学習装置中のMLU3、MLU1及びMLU0のアドレス0x000100にそれぞれ書き込む。
別の実施例では、上記の表1又は表2をベースにして、上記のデータ操作信号はジャンプ情報をさらに含んでもよく、前記ジャンプ情報はジャンプストライド及び各回ジャンプ後の操作データ長さを含む。選択可能で、前記ジャンプ情報はストライド(stride)ジャンプ情報及び/又はセグメント(segment)ジャンプ情報を含み。
本実施例では、データ操作信号に含まれるジャンプ情報は、当該伝送回路が当該データ操作信号に基づいて操作対象データの情報を読み取る時に当該ジャンプ情報による規則に従って読み取るように指示するために用いられ、具体的には、読取方法は、伝送回路が操作対象データの情報中のソースアドレスから始めて共有メモリからデータを読み取り、今回のジャンプ後、まず読み取られたジャンプデータ長さのデータを第1ジャンプデータとして決定し、次に伝送回路が当該第1ジャンプデータの最後のアドレスを取得し、ジャンプ情報中のジャンプストライドに基づいて、当該第1ジャンプデータの最後のアドレスから当該ジャンプストライド長さのデータだけジャンプして目標ジャンプアドレスに達し、なお、ここで第1ジャンプデータの最後のアドレスから目標ジャンプアドレスまでの長さはジャンプ情報中のジャンプストライドであることを理解されたい。次に、伝送回路が目標ジャンプアドレスから、予め設定された長さのデータだけジャンプして、予め設定された長さだけジャンプした後の当該データを第2ジャンプデータとして決定し、当該第2ジャンプデータのアドレスから、上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たした場合に、当該機械学習装置に必要なデータの読み取りが完了することを示し、当該第2ジャンプデータのアドレスから、上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たさない場合に、当該第2ジャンプデータのアドレスから、上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たし、即ち当該機械学習装置に必要なデータの読み取りが完了することを示すまで、当該第2ジャンプデータの最後のアドレスから引き続き上記のジャンプ順番に従ってジャンプして、当該データを読み取る。
一般に、本願の実施例によるデータ処理装置がデータ操作信号に対して読み書き処理を行う前に、データ操作信号を解析する必要があり、選択可能で、前記伝送回路は、前記データ操作信号を記憶するためのコマンド記憶ユニットと、前記データ操作信号を解析して、前記データ操作信号のタイプフラグビット及び操作対象データの情報を得るためのコマンド処理ユニットと、コマンドキューを記憶するために用いられるキュー記憶ユニットであって、前記コマンドキューの前後順番に従って実行される複数の前記データ操作信号を含む前記キュー記憶ユニットとを含む。ここで、一般には、データの処理中にデータ操作信号の数量が比較的多く、1つのデータ操作信号を処理する時、他のものを当該コマンド記憶ユニットに記憶する必要がある。コマンド処理ユニットは当該データ操作信号を解析するもので、当該データ操作信号に担持されたデータ情報を解析する。また、データ操作信号の値取り、復号、発信が継続して行われ、全てのデータ操作信号は順番通りに上記の動作を完了する必要があり、キュー記憶ユニットによってコマンドキューを記憶する。
また、コマンド処理ユニットが1つのデータ操作信号の処理を完了してから、キュー中の次のデータ操作信号を処理するため、処理が完了した当該データ操作信号と次のデータ操作信号とに関連性があることを保証する必要があり、選択可能で、前記伝送回路は、依存関係処理ユニットであって、s番目のデータ操作信号と前記s番目のデータ操作信号の前のs-1番目のデータ操作信号とに相関関係があるか否かを決定し、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに相関関係がある場合に、前記s番目のデータ操作信号を前記コマンド記憶ユニットにキャッシュし、前記s-1番目のデータ操作信号の実行完了後、前記コマンド記憶ユニットから前記s番目のデータ操作信号を抽出して前記コマンド処理ユニットに伝送するための前記依存関係処理ユニットをさらに含み、ここで、当該s番目のデータ操作信号とs番目のデータ操作信号の前のs-1番目のデータ操作信号とに相関関係があるか否かを決定することは、前記s番目のデータ操作信号に基づいて前記s番目のデータ操作信号に必要なデータの第1ストレージアドレス区間を抽出し、前記s-1番目のデータ操作信号に基づいて前記s-1番目のデータ操作信号に必要なデータの第ゼロストレージアドレス区間を抽出し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに相関関係があると決定し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに相関関係がないと決定することを含む。
本実施例では、データ操作装置がデータ処理信号に基づいて操作を行う前に、未使用のデータ処理信号を順次記憶し、使用する時、順次解析して復号させ、且つ解析及び復号中に、隣接する2つのデータ操作信号間の関連性を判断することによりデータ操作信号の一貫性を保証し、このようにして、着実な準備作業により後期に当該データ操作信号に基づいて対応する操作を順調に実行することができ、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
本願の実施例は、上記の図31に示すハードウェア回路に応用されるデータ処理方法をさらに提供し、前記回路は、機械学習装置11と、伝送回路12と、共有メモリ13とを含み、機械学習装置11と前記伝送回路12、伝送回路12と共有メモリ13はいずれもインタフェースを介して接続され、当該インタフェースはハードウェア回路として実現してもよく、本実施例では当該様々なタイプのインタフェースのハードウェアとしての形態を具体的に限定しない。ここで、伝送回路12は機械学習装置11の発したデータ操作信号に基づいて、共有メモリ13から機械学習装置11に必要な入力データを取得し、入力データを機械学習装置11に返すために用いられ、機械学習装置11は、入力データに基づいて機械学習演算を実行して、出力ニューロンデータを得、そして、出力ニューロンデータを新たな入力ニューロンデータとして、伝送回路12によって共有メモリ13に伝送してデータを記憶させるために用いられる。
以下、本願の目的、技術的解決手段及び利点が一層明瞭になるよう、図面及び実施例を参照して、本願を一層詳細に説明する。なお、ここで説明される特定の実施例は本願を解釈するためのものに過ぎず、本願を限定するものではないことを理解されたい。本願の実施例によるデータ処理方法は、データアクセス又は共有メモリのデータが比較的多い場合に、機械学習チップのデータアクセス時のアクセス速度をいかに向上させるかという技術的課題を解決することが目的である。以下、実施例を用いて、図面に関連して本願の技術的解決手段及び本願の技術的解決手段による上記の技術的課題の解決を詳細に説明する。次に示すいくつかの特定の実施例は互いに組み合わせることができ、同じ又は類似する概念又は過程については一部の実施例で再度説明しないことがある。なお、本願によるデータ処理方法は、その実行主体が伝送回路であり、ここで、当該実行主体はデータ処理装置であってもよく、当該装置はソフトウェア、ハードウェア又はソフトウェアとハードウェアの組み合わせとしてデータ解析端末の一部又は全部として実現することができる。
一実施例では、図38でデータ処理方法を提供し、本実施例は、伝送回路がデータ操作信号のタイプフラグビットに基づいてデータ操作信号のタイプを決定し、対応する操作を特定し、その後、当該操作により共有メモリから機械学習装置に必要なデータを取得することで、アクセス速度を向上させることの具体的な過程に関する。図38に示すように、当該方法は以下を含む。
S4101、前記データ処理装置中の伝送回路は前記データ処理装置中の機械学習装置の送信したデータ操作信号を受信し、前記データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持される。
ここで、機械学習装置は複数のMLUからなる演算機能を有する装置であってもよく、伝送回路はブロードキャストバスであってもよく、共有メモリは非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されない。本実施例では、データ処理装置の伝送回路が当該データ処理装置中の機械学習装置の送信したデータ操作信号を受信し、当該データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持され、ここで、伝送回路と機械学習装置の間のデータ操作信号の伝送は、インタフェースによって伝送されてもよい。伝送回路は当該データ操作信号に担持されたデータ操作信号のタイプフラグビット及び操作対象データの情報に基づいて、当該データ操作信号のタイプ及び操作時に必要なデータ情報を決定することができる。
S4102、前記伝送回路は前記データ操作信号のタイプフラグビットに基づいて共有メモリ中のデータに対して実行する操作を決定し、前記操作対象データの情報に基づいて前記操作対象データに対して前記操作を実行し、前記機械学習装置に必要な入力データを得、前記入力データを前記機械学習装置に返す。
伝送回路は、上記のステップS4101で受信した、機械学習装置の送信したデータ操作信号のタイプフラグビットに基づいて、共有メモリ中のデータに実行すべき操作を決定し、当該データ操作信号中の操作対象データの情報に基づいて当該共有メモリ中のどのデータに当該操作を実行するかを決定し(これらのデータは操作対象データ)、次に機械学習装置に必要な入力データを得、当該入力データを機械学習装置に返す。ここで、入力データとは機械学習装置が機械学習演算を行う時に入力されるべきデータである。上記のデータはあらかじめ共有メモリに記憶されているデータであってもよいし、機械学習装置が機械学習演算を実行した後に出力したデータであってもよい。
S4103、前記機械学習装置は前記入力データに基づいて機械学習演算を実行して、出力データを得、そして、前記出力データを新たな入力データとして、前記伝送回路によって前記共有メモリに伝送してデータを記憶させる。
本ステップでは、機械学習装置は上記のステップS4102で伝送回路の送信した入力データに基づいて、機械学習演算を実行して、出力データを得、次に当該出力データを新たな入力データとして、伝送回路によって共有メモリに伝送して記憶させる。ここで、機械学習装置の実行する演算がニューラルネットワーク演算である場合を例として、当該ニューラルネットワーク演算はニューラルネットワーク中の1層の演算であってもよく、多層ニューラルネットワークの場合は、次のように実現する。フォワード演算において、前の層の人工ニューラルネットワークの実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された出力ニューロンデータを次の層の入力ニューロンデータとして演算を実行し(又は、当該出力ニューロンデータに或る操作を行ってから次の層の入力ニューロンデータとする)、同時に重み値データを次の層の重み値データに置き換える。バックワード演算において、前の層の人工ニューラルネットワークのバックワード演算の実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された入力ニューロン勾配(入力されるニューロンデータとしてもよい)次の層の出力ニューロン勾配として演算を実行し(出力されるニューロンデータとしてもよい)(又は、当該入力ニューロン勾配に或る操作を行ってから次の層の出力ニューロン勾配とする)、同時に重み値データを次の層の重み値データに置き換える。選択可能で、本願の実施例に係るニューラルネットワークは、人工ニューラルネットワークであってもよいし、スパイキングニューラルネットワークであってもよく、本実施例ではこれに関して限定しない。本実施例による機械学習装置は入力データに基づいて機械学習演算を実行することができ、例えば、機械学習演算では、多層ニューラルネットワークの場合、機械学習装置は各層のニューラルネットワークの出力するニューロンデータを算出し、各層のニューラルネットワークの入力端に対応する複数の入力データに対し乗算、和演算及び関数演算等、機械学習演算に含まれる一連の演算集合を実行してもよい。機械学習装置は機械学習演算により、カレント層の出力ニューロンデータを得た後、当該出力ニューロンデータを次の層のニューラルネットワークの入力ニューロンデータとして再度機械学習演算を行ってもよく、その前に、機械学習装置がいつでも前記のカレント層の出力ニューロンデータを読み取って機械学習演算を行えるように、当該カレント層の出力ニューロンデータを伝送回路によって共有メモリに書き込んで記憶してもよい。
本実施例によるデータ処理方法では、伝送回路は機械学習装置が送信インタフェースによって発した、データ操作信号のタイプフラグビット及び操作対象データの情報を担持したデータ操作信号に基づいて、共有メモリから機械学習装置に必要な入力データを取得し、受信インタフェースによって入力データを機械学習装置に返し、次に機械学習装置は入力データに基づいて機械学習演算を実行して、出力データを得、当該出力データを新たな入力データとして、伝送回路によって共有メモリに伝送してデータを記憶させる。本実施例では、データ操作信号にデータ操作信号のタイプフラグビット及び操作対象データの情報が担持されているため、伝送回路は当該データ操作信号を受信した後、その中のデータ操作信号のタイプフラグビットに基づいて当該データ操作信号のタイプを判断し、次に当該データ操作信号に担持された操作対象データの情報に合わせて対応する操作を実行することができる。このようにして、データ操作信号のタイプフラグビットに基づいて分類しておくと、速やかに対応する操作を特定することができ、データのアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
一実施例では、上記の機械学習装置は少なくとも1つの機械学習ユニットを含み、前記データ操作信号はデータ受信フラグビットをさらに含み、前記入力データを前記機械学習装置に返すことは、前記伝送回路は前記データ受信フラグビットの値に基づいて、前記入力データを受信する目標機械学習ユニットを決定し、前記入力データを前記目標機械学習ユニットに送信することを含む。
本実施例では、当該機械学習装置に含まれる少なくとも1つの機械学習ユニット(即ちMLU)によって実行されるデータ信号操作において、1つのデータ受信インタフェースが共有されてもよい。当該MLUは送信インタフェース又は共有データ受信インタフェースによって伝送回路と信号又はデータの伝送を行うようにしてもよい。なお、当該送信インタフェース及び共有データ受信インタフェースはいずれもハードウェア回路として実現してもよく、当該送信インタフェース及び共有データ受信インタフェースのタイプについて本実施例では限定しない。ここで、データ操作信号はデータ受信フラグビットを含み、当該データ受信フラグビットは入力データを受信できる目標機械学習ユニットを表す。当該データ受信フラグビットの表示方式は、例えば、入力データを受信できる目標機械学習ユニットを1と表示することであってもよく、なお、ここで受信できる目標機械学習ユニットを1と表示するのが例示的なものに過ぎないことを理解されたい。実際の応用において、データを受信できる目標機械学習ユニットを0と表示してもよく、本実施例では当該データ受信フラグビットの表示について具体的に限定しない。具体的には、伝送回路はデータ操作信号中のデータ受信フラグビットの値に基づいて入力データを受信する目標MLUを決定し、入力データを目標MLUに送信する。本実施例では、伝送回路が、データ操作信号に担持されているデータ受信フラグビットの表示状態に基づいて、機械学習装置中の入力データを受信できる目標機械学習ユニットを決定することができ、このようにして、機械学習装置の各機械学習ユニットによるデータの受信は、データ操作信号中のデータ受信フラグビットに基づいて決定されるため、データのメモリアクセス中のメモリアクセスロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
選択可能で、上記のデータ操作信号のタイプフラグビットの値がCASTである場合に、伝送回路は当該データ操作信号がブロードキャスト又はマルチキャストコマンドであると決定する。当該選択可能な形態では、当該データ操作信号のタイプフラグビットは、当該データ操作信号の操作タイプを指示するために用いられ、データ操作信号のタイプフラグビットがCASTであることは、当該データ操作信号はブロードキャスト又はマルチキャストコマンドであることを表し、なお、ここでCASTを用いてブロードキャスト又はマルチキャストコマンドを表すのが、一実施例に過ぎないことを理解されたい。ユーザは実際の状況に応じて、当該データタイプフラグビットを改めて定義することができ、本実施例ではこれに関して限定しない。
選択可能で、上記のデータ操作信号のタイプフラグビットは第1タイプフラグビット及び第2タイプフラグビットを含んでもよく、前記第1タイプフラグビットは前記データ操作信号がI/Oコマンドであるか否かを表すために用いられ、前記第2タイプフラグビットは前記データ操作信号が前記I/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであるか否かを表すために用いられる。したがって、第1タイプフラグビットの値がI/Oである場合に、前記伝送回路は前記データ操作信号がI/Oコマンドであると決定し、前記第2タイプフラグビットの値が1である場合に、前記伝送回路は前記データ操作信号が前記I/Oコマンドのうちのブロードキャスト又はマルチキャストコマンドであると決定する。
当該選択可能な形態では、当該データ操作信号は2つのデータタイプデータフラグビットを含み、そのうち第1タイプデータフラグビットは当該データ操作信号のタイプを表し、当該第2タイプデータフラグビットは当該データ操作信号の操作情報内に設定され、当該データ操作信号の具体的なサブタイプを表し、具体的には、当該データ操作信号中の第1タイプフラグビットの値がI/Oである場合に、伝送回路は当該データ操作信号が入力/出力コマンドであると決定し、当該データ操作信号中の第2タイプフラグビットの値が1である場合に、伝送回路は当該データ操作信号が入力/出力コマンドのうちのブロードキャスト又はマルチキャストコマンドであると決定する。
一実施例では、図39でデータ処理方法を提供し、本実施例は、伝送回路はデータ操作信号に担持されたデータ情報に基づいて共有メモリにおいてデータを読み取り、当該データ操作情報に基づいて読み取られたデータを目標機械学習ユニットに返すことの具体的な過程に関する。図39に示すように、前記操作対象データの情報は前記共有メモリにおける前記操作対象データのソースアドレス、操作対象データ長さ、及びデータ操作後のデータ返しアドレスを含む場合に、上記のS4103は以下を含む。
S4201、前記伝送回路は前記ソースアドレスから始めて前記共有メモリを読み取り、前記データ長さを満たす前記入力データを取得する。
本実施例では、データ操作信号の操作対象データの情報に共有メモリにおける操作対象データのソースアドレス、操作対象データ長さ、及びデータ操作後のデータ返しアドレスが担持されているため、伝送回路は当該共有メモリ中のソースアドレスから始めてデータを読み取り、予め設定された規則に基づいて操作対象データ長さを満たすまで読み取り、ここで、当該操作対象データ長さはユーザが実際の状況に応じて自ら設定するものであり、本実施例ではこれに関して限定しない。伝送回路が当該データ長さを満たす入力ニューロンデータ及びデータを取得することは、予め設定された規則に従って共有メモリから当該データ長さを満たすデータを読み取ることであり、ここで、当該予め設定された規則もユーザが実際の状況に応じて制定した規則であり、本実施例ではこれに関して限定せず、例えば、読み取られたデータ長さが当該データ長さを満たすまで、ソースアドレスから始めて一つずつ読み取ることであってもよい。
S4202、前記伝送回路は前記データ返しアドレス及び前記データ受信フラグビットに基づいて、前記入力データを前記目標機械学習ユニットに返す。
上記のステップS4201で伝送回路が取得したデータ長さを満たす入力データに基づいて、当該データを操作対象データの情報中のデータ返しアドレスに返し、ここで、当該操作対象データの情報中のデータ返しアドレスは機械学習装置の複数の目標機械学習ユニット中のアドレスであってもよい。ここで、伝送回路はデータ操作信号に担持されたデータ受信フラグビットに基づいてデータを機械学習装置中のどの目標機械学習ユニットに返すことを決定する。
本実施例によるデータ処理方法では、伝送回路はソースアドレスから始めて共有メモリを読み取り、前記データ長さを満たす入力データを取得し、データ返しアドレス及びデータ受信フラグビットに基づいて、入力データを目標機械学習ユニットに返す。伝送回路が前記データ長さを満たす入力データを取得する時、当該データ操作信号中のデータ操作情報によって指示された読取規則に従ってデータを読み取るため、伝送回路のデータ読取ロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
一実施例では、図40でデータ処理方法を提供し、上記のいずれか実施例をベースにして、当該実施例で操作情報はジャンプ情報をさらに含んでもよく、前記ジャンプ情報はジャンプストライドと、各回のジャンプ後に操作されるジャンプデータ長さを含む。当該実施例は、伝送回路は操作情報中のジャンプ情報に基づいて共有メモリ中のデータを読み取ることの具体的な過程に関する。図40に示すように、上記のS4201は以下を含む。
S4301、前記伝送回路は前記ソースアドレスから始めて前記共有メモリを読み取り、今回ジャンプ後のジャンプデータ長さに基づいて第1ジャンプデータを取得する。
本実施例では、データ操作信号の操作情報にジャンプ情報が含まれており、当該ジャンプ情報は当該伝送回路が当該データ操作信号に基づいて操作対象データの情報を読み取る時、当該ジャンプ情報による規則に従って読み取るように指示するために用いられる。ここで、当該ジャンプ情報にはジャンプストライド及び各回のジャンプ後に操作されるジャンプデータ長さが含まれており、ここで、当該ジャンプデータ長さは予め設定されたデータ長さであってもよい。選択可能で、当該ジャンプ情報はストライド(stride)ジャンプ情報及び/又はセグメント(segment)ジャンプ情報を含み、前記ストライド(stride)ジャンプ情報は前記データ操作信号の各回のジャンプストライドを表すために用いられ、前記セグメント(segment)ジャンプ情報は予め設定された前記データ操作信号の各回の分割サイズを表すために用いられる。
具体的には、伝送回路は操作対象データの情報中のソースアドレスから始めて共有メモリを読み取り、今回のジャンプ後、読み取られたジャンプデータ長さのデータを第1ジャンプデータとして決定し、ここで、当該第1ジャンプデータは伝送回路がデータの読み取り時に予め設定された長さのデータだけジャンプした後に取得したデータを表し、ここで、当該予め設定された長さはユーザが実際の状況に応じて自ら設定するものであり、本実施例ではこれに関して限定しない。
S4302、前記伝送回路は前記第1ジャンプデータの最後のアドレスを取得し、前記ジャンプストライドに基づいて前記最後のアドレスから目標ジャンプアドレスにジャンプする。
伝送回路は、上記のステップS4301で読み取られた第1ジャンプデータに基づいて、当該第1ジャンプデータの最後のアドレスを取得し、ジャンプ情報中のジャンプストライド(例えば、strideストライド)に基づいて、当該第1ジャンプデータの最後のアドレスから当該ジャンプストライドの長さだけジャンプして目標ジャンプアドレスに達し、なお、当該第1ジャンプデータの最後のアドレスから目標ジャンプアドレスまでの長さはジャンプ情報中のジャンプストライドであることを理解されたい。
S4303、前記伝送回路は、前記目標ジャンプアドレスから始めて、各回のジャンプ後に得たジャンプデータの長さが前記データ長さを満たすまで、ジャンプ後のジャンプデータ長さに基づいて第2ジャンプデータを取得し続ける。
本ステップでは、伝送回路はデータを読み取る時、上記のステップS4302で決定された目標ジャンプアドレスから始めて、予め設定された長さのデータだけジャンプし、次に、当該予め設定された長さだけジャンプした後のデータを第2ジャンプデータとして決定し、当該第2ジャンプデータのアドレスから上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たした場合に、当該機械学習装置に必要なデータの読み取りが完了することを示し、当該第2ジャンプデータのアドレスから上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たさない場合に、当該第2ジャンプデータのアドレスから上記のジャンプし始めたソースアドレスまでの長さが機械学習装置に必要なデータのデータ長さを満たし、即ち当該機械学習装置に必要なデータの読み取りが完了することを示すまで、当該第2ジャンプデータの最後のアドレスから、引き続き上記のステップS4301からS4303のジャンプ順番に従ってジャンプして当該データを読み取り続ける。
本実施例によるデータ処理方法は、その実現原理及び技術的効果が上記のデータ処理装置の実施例に類似するため、ここで再度説明しない。本実施例によるデータ処理方法では、伝送回路がソースアドレスから始めて共有メモリを読み取り、今回ジャンプ後のジャンプデータ長さに基づいて第1ジャンプデータを取得し、当該第1ジャンプデータの最後のアドレスからジャンプストライドだけジャンプして目標ジャンプアドレスに達し、次に目標ジャンプアドレスから始めて、ジャンプ後のジャンプデータ長さに基づいて第2ジャンプデータを取得し、各回のジャンプ後に得たジャンプデータの長さがデータ長さを満たすまで続け、このようにして、操作情報がジャンプ情報を含む場合に、伝送回路はジャンプ情報によるジャンプ規則に基づいてデータを読み取るため、伝送回路のデータ読取ロジックが簡素化され、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
伝送回路が受信データ操作信号に基づいて操作する時、最初受信したデータ操作信号が符号化コマンドであるため、まず当該データ操作信号を復号して解析する必要があり、そのために本願の実施例はデータ処理方法を提供し、図41に示すように、前記データ処理装置中の伝送回路が前記データ処理装置中の機械学習装置の送信したデータ操作信号を受信することは以下を含む。
S4401、前記伝送回路は前記データ操作信号を解析して、前記データ操作信号のタイプフラグビット及び操作対象データの情報を得る。
なお、一般にはデータ処理中にデータ操作信号の数量が比較的多く、その1つのデータ操作信号が伝送回路により処理されている時、他のものが記憶される必要があり、具体的には、伝送回路が当該データ操作信号を解析して、当該データ操作信号に担持されたデータ情報及び当該データ操作信号のタイプフラグビットを解析する。ここで、当該データ操作情報は操作対象データ長さ、目標アドレス及び元アドレス等の情報を含んでもよく、本実施例ではこれに関して限定しない。
S4402、前記伝送回路はコマンドキューに従って、前記解析されたデータ操作信号を実行し、前記コマンドキューは前記データ操作信号の実行順番を表すために用いられる。
なお、当該データ操作信号の実行は順番通りに行う必要があることを理解されたい。伝送回路は、上記のステップS4401で当該データ操作信号を解析して得たデータ操作情報及びタイプフラグビットに基づいて、コマンドキューに従って当該解析後のデータ操作信号を実行する。
本実施例によるデータ処理方法では、伝送回路が前記データ操作信号を解析することにより、データ操作信号のタイプフラグビット及び操作対象データの情報を得、次に伝送回路はコマンドキューに従って解析されたデータ操作信号を実行し、このようにして、データ操作信号を実行する前に、まずデータ操作信号を解析し、その後、順番通り実行することで、伝送回路によるデータ操作信号に基づく操作実行の速度が大幅に速くなる。
本願の実施例では、伝送回路がキュー中の順番に従ってデータ操作信号を実行する時、実行すべきのは互いに関連するデータ操作信号であることを考慮して、別の実施例を提供し、図42に示すように、前記方法は、前記伝送回路がコマンドキューに従って、前記解析されたデータ操作信号を実行する前に、さらに以下を含む。
S4501、前記伝送回路は隣接する前記解析されたデータ操作信号との依存関係を判断して、判断結果を得、前記依存関係はs番目のデータ操作信号と前記s番目のデータ操作信号の前のs-1番目のデータ操作信号とに相関関係があるか否かを表す。
ここで、伝送回路は隣接する前記解析されたデータ操作信号との依存関係を判断し、判断結果に基づいて、処理する隣接する2つのデータ操作信号に関連性があることを決定する必要があり、ここで、s番目のデータ操作信号は特定の信号ではなく、データ操作信号のうちの任意の1つの信号を表し、そしてs-1番目のデータ操作信号はs番目のデータ操作信号の前の信号である。
選択可能で、前記伝送回路が隣接する前記解析されたデータ操作信号との依存関係を判断することの可能な実現形態として、前記伝送回路は前記s番目のデータ操作信号に基づいて前記s番目のデータ操作信号から必要なデータを抽出するためのs番目のデータ操作信号、及び前記s-1番目のデータ操作信号に基づいて前記s-1番目のデータ操作信号から必要なデータを抽出するための第ゼロストレージアドレス区間をそれぞれ取得し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、前記伝送回路は前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係があると決定し、前記第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、前記伝送回路は前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係がないと決定する。ここで、伝送回路はs番目のデータ操作信号のs番目のデータ操作信号とs-1番目のデータ操作信号の第ゼロストレージアドレス区間との関係に基づいて、隣接する前記解析されたデータ操作信号との依存関係をそれぞれ判断し、判断の方法としては、第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がない場合に、当該s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係がなく、第1ストレージアドレス区間と前記第ゼロストレージアドレス区間との間に重なる領域がある場合に、s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係があることを示してもよい。
S4502、前記判断結果が、前記s番目のデータ操作信号と前記s-1番目のデータ操作信号とに依存関係があることである場合に、前記伝送回路は前記s番目のデータ操作信号をキャッシュし、前記s-1番目のデータ操作信号の実行完了後、前記s番目のデータ操作信号を抽出する。
上記のステップで伝送回路が判定した隣接する2つのデータ操作信号の依存関係に基づいて、順番通りにデータ操作信号を実行し、判断結果が、s番目のデータ操作信号とs-1番目のデータ操作信号とに依存関係があることである場合に、伝送回路は当該s番目のデータ操作信号をキャッシュして、s-1番目のデータ操作信号の実行完了後、当該s番目のデータ操作信号を抽出する。
本実施例によるデータ処理方法は、伝送回路がまず隣接する2つのデータ操作信号の関連性を判断することでデータ操作信号の一貫性を確保するため、このようにして着実な準備作業により後期に当該データ操作信号に基づいて対応する操作を順調に実行することができ、データのアクセス効率が向上し、機械学習チップのデータアクセス時のアクセス速度が大幅に速くなる。
情報技術が発展し続けニーズが日々増えるのにつれて、データアクセス及びデータ処理に対する要求がますます高まり、これに伴ってデータを処理とアクセスする一部のプロセッサの一層の高度化が求められる。汎用プロセッサを例とすると、複数の汎用プロセッサコア(例えば、CPUコア)からなるマルチコアプロセッサは、その優れた並行計算能力から、主流になる。
しかしながら、現在機械学習アルゴリズムが発展し続けるのにつれて、ますます多くのアーキテクチャの機械学習チップが次第に開発されてきており、これらの機械学習チップは常にユニキャスト読取、ブロードキャスト等の多くの方式で共有メモリ中のデータをアクセス又は処理する必要があり、そのために、それに応じて複数の伝送インタフェースが設けられ、機械学習チップの面積が大きいことを招く。
したがって、どのようにして機械学習チップの伝送インタフェースを簡素化して機械学習チップの面積を減らすかは、当業者が早急に解決すべき技術的課題になる。
上記の問題を解决するために、本願は以下の技術的解決手段を提供する。
本願の実施例によるデータ処理装置は、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組み合わせとして実現してもよく、当該データ処理装置は図43に示す内容の一部又はその全てであってもよい。前記データ処理装置は、機械学習装置11と、伝送回路12と、共有メモリ13とを含んでもよく、前記機械学習装置11は少なくとも1つの機械学習ユニット15を含んでもよく、前記機械学習ユニット15が実行するユニキャスト読取操作及びブロードキャスト操作において1つのデータ受信インタフェース142が共有され、前記機械学習ユニットは送信インタフェース141及び共有データ受信インタフェース142を介して前記伝送回路12に接続され、前記伝送回路12は前記共有メモリ13に接続され、前記伝送回路12は、前記機械学習装置11が前記送信インタフェース141によって発したデータ操作信号に基づいて、前記共有メモリ13から前記機械学習装置に必要な入力データを取得し、前記入力データを前記共有データ受信インタフェース142によって前記機械学習装置11に返すために用いられる。なお、上記機械学習ユニット15は第1伝送インタフェース14(未図示)を含んでもよく、第1伝送インタフェースは送信インタフェース141と、共有データ受信インタフェース142とを含んでもよい。
選択可能で、前記機械学習装置11は入力データに基づいて機械学習演算を実行して、出力データを得るために用いてもよい。選択可能で、前記機械学習装置11は、さらに、出力データを伝送回路12によって共有メモリ13に伝送してデータを記憶させるために用いてもよい。具体的には、機械学習装置11がニューラルネットワーク演算を実行するために用いられる場合に、機械学習装置11は入力ニューロンデータ及び重み値データに基づいて人工ニューラルネットワーク演算を実行して、出力ニューロンデータを得、そして、出力ニューロンデータを新たな入力ニューロンデータとして、伝送回路12によって共有メモリ13に伝送してデータを記憶させるようにしてもよい。
なお、上記の機械学習ユニット、伝送回路、共有メモリ及び様々なタイプのインタフェースはいずれもハードウェア回路として実現してもよい。例示的に、伝送回路はブロードキャストバス(broadcast bus)であってもよく、共有メモリは非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されず、様々なタイプのインタフェースは1つ又は複数のデータI/O(in/out、入力/出力)インタフェース又はI/Oピンに対応してもよい。
本願によるデータ処理装置は機械学習演算に応用されてもよく、ここで、機械学習演算にはニューラルネットワーク演算、k-means演算、サポートベクターマシン演算等が含まれる。上記の機械学習装置がニューラルネットワーク計算を行う場合には、選択可能で、上記の入力データは入力ニューロンデータ及び/又は重み値データを含んでもよく、当該入力ニューロンデータ及び重み値データは機械学習装置が人工ニューラルネットワーク演算を実行する時に入力されるべきデータであり、これに応じて、上記の出力データは出力ニューロンデータを含んでもよく、当該出力ニューロンデータは機械学習装置が人工ニューラルネットワーク演算を実行する時に出力した中間結果又は最終結果である。なお、重み値データ及びニューロンデータは繰り返し使用が可能であるため、計算中に入力データは必ずしも入力ニューロンデータ及び重み値データを含むとは限らず、入力ニューロンデータだけを含み、又は重み値データだけを含んでもよいことを理解されたい。
ニューラルネットワーク演算を例とすると(追加の説明がない限りは、本実施例でニューラルネットワーク演算を例として説明する)、本願によるデータ処理装置はニューラルネットワークにおける1層の演算を行ってもよいし、ニューラルネットワークにおける多層の演算を行ってもよい。多層ニューラルネットワークの場合は、次のように実現する。フォワード演算において、前の層の人工ニューラルネットワークの実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された出力ニューロンデータを次の層の入力ニューロンデータとして演算を実行し(又は、当該出力ニューロンデータに或る操作を行ってから次の層の入力ニューロンデータとする)、同時に重み値データを次の層の重み値データに置き換える。バックワード演算において、前の層の人工ニューラルネットワークのバックワード演算の実行完了後、次の層の演算コマンドでは演算ユニットにおいて算出された入力ニューロン勾配(入力されるニューロンデータとしてもよい)次の層の出力ニューロン勾配として演算を実行し(出力されるニューロンデータとしてもよい)(又は、当該入力ニューロン勾配に或る操作を行ってから次の層の出力ニューロン勾配とする)、同時に重み値データを次の層の重み値データに置き換える。
図1に示すように、選択可能な一形態では、上記の機械学習装置11は複数の機械学習ユニット15を含んでもよい。多層ニューラルネットワークの演算については、フォワード演算中のある層のニューラルネットワークの計算を例として説明する。一実施形態では、上記の機械学習装置は複数の機械学習ユニット(MLU、Machine Learning Unit)によって並行してニューラルネットワーク中の当該層の全てのニューロンの出力ニューロンデータを計算するようにしてもよい。例示的に、当該機械学習装置が4つの機械学習ユニットを含み、当該層ニューラルネットワークが100個のニューロンを有する場合に、各機械学習ユニットに25個のニューロンを配分して処理させるようにしてもよく、対応する演算コマンドを設定することで実現することができ、当該プロセスでは、各機械学習ユニットはいずれも伝送回路によって、配分された当該層の25個のニューロンのそれぞれに対応する入力ニューロンデータ及び重み値データを共有メモリから取得して、これを用いて計算して配分された当該層の25個のニューロンの出力ニューロンデータを算出し、配分された当該層の25個のニューロンの出力ニューロンデータを伝送回路によって共有メモリに伝送して記憶させるようにしてもよい。なお、上記の各機械学習ユニットは配分された当該層の複数のニューロンデータを処理する時に、並行して計算して処理することができることを理解されたい。このようにして層ごとにニューラルネットワークの計算を並行して実行することで、ニューラルネットワーク計算の並行処理を実現でき、処理効率が向上する。
選択可能な別の形態では、上記の機械学習装置は複数の機械学習ユニットを利用して特定の順番に従ってニューラルネットワーク中の各層の全てのニューロンの出力ニューロンデータをそれぞれ算出してもよい。当該プロセスでは、前の機械学習ユニットが当該層の全てのニューロンの出力ニューロンデータを伝送回路によって共有メモリに伝送して記憶させてもよく、これにより次の機械学習ユニットは当該層の全てのニューロンの出力ニューロンデータを抽出して次の層の入力ニューロンデータとして計算を実行することができる。なお、上記の構成は各層のニューラルネットワークの計算量が多くないシーン、例えば、各層のニューロン数目が比較的少ないニューラルネットワークの計算に応用することを理解されたい。
図44を参照すると、図43の機械学習ユニット0を例として、機械学習ユニットについて詳細に説明する。一形態では、機械学習ユニット15は、送信インタフェース141と、共有データ受信インタフェース142と、少なくとも1つの演算ユニット151と、前記演算ユニット151に接続されたコントローラユニット152とを含んでもよく、前記演算ユニット151は1つの主処理回路151aと、複数の副処理回路151bとを含み、前記演算ユニット151は前記送信インタフェース141及び共有データ受信インタフェース142を介して前記伝送回路12に接続され、
前記コントローラユニット152は、前記送信インタフェース141によって前記伝送回路12に前記データ操作信号及び前記出力ニューロンデータを送信し、前記共有データ受信インタフェース142によって、前記伝送回路12が前記共有メモリ13から取得した前記入力ニューロンデータ及び前記重み値データを受信し、前記入力ニューロンデータ及び前記重み値データを前記主処理回路151a及び/又は前記副処理回路151bに送信するために用いられ、
前記主処理回路151aは、前記入力ニューロンデータ及び/又は重み値データを前記複数の副処理回路151bに分配するために用いられ、前記複数の副処理回路151bは、前記ニューロンデータ及び重み値データに基づいて並行して中間演算を実行して複数の中間結果を得、複数の中間結果を前記主処理回路151aに伝送するために用いられ、前記主処理回路151aは、さらに、前記複数の中間結果に後続の処理を実行して計算結果を得るために用いられる。ここで、前記後続の処理は活性化演算を含んでもよい。具体的には、当該コントローラユニット152は、さらに、計算コマンドを取得し、当該計算コマンドを解析して複数の演算コマンドを得、当該複数の演算コマンドを前記主処理回路に送信するようにしてもよい。なお、本実施例では、機械学習ユニットが複数の演算ユニットを含む場合に、各演算ユニットは上記の送信インタフェース及び上記の共有データ受信インタフェースを共用してもよいことを理解されたい。
例えば、選択可能な一形態では、主処理回路は1つのコントローラユニットを含んでもよく、当該コントローラユニットは、主コマンド処理ユニットを含んでもよく、具体的に演算コマンドをマイクロコマンドとして復号するために用いられる。また、選択可能な別の形態では、副処理回路は別のコントローラユニットを含んでもよく、当該別のコントローラユニットは、副コマンド処理ユニットを含んで、具体的にマイクロコマンドを受信及び処理するために用いられる。上記のマイクロコマンドはコマンドの下位コマンドであってもよく、当該マイクロコマンドはコマンドに対する区分又は復号により得ることができ、さらに各デバイス、各ユニット又は各処理回路の制御信号として復号されることが可能である。例えば、積算マイクロコマンドは畳み込みコマンドの下位コマンドである。
例示的に、上記の機械学習ユニットの構造を例として、当該機械学習ユニットのニューラルネットワーク演算のフローについて詳細に説明し、以下のステップS5101~S5106を参照する。
S5101、コントローラユニットのコマンド記憶ユニットの最初のアドレスにあらかじめ1つのIOコマンドを記憶する。
S5102、コントローラユニットはコマンド記憶ユニットの最初のアドレスから当該IOコマンドを読み取り、次に当該IOコマンドから訳出された制御信号に基づいて、チップ外インタフェースによってチップ外メモリから当該機械学習ユニットに対応するニューラルネットワーク演算コマンドを取得し、又は、伝送回路によって共有メモリから当該機械学習ユニットに対応するニューラルネットワーク計算コマンドを取得し、得られた計算コマンドをコマンド記憶ユニットに記憶する。
S5103、コントローラユニットはコマンド記憶ユニットから次のIOコマンドを読み込み、当該IOコマンドから訳出されたデータ操作信号に基づいて、伝送回路によって共有メモリから演算ユニットに必要な全てのデータブロックを読み取り、これには配分すべき当該層のニューロンの入力ニューロンデータ及び重み値データを含み、さらには、高速な活性化関数演算を行うための補間表、演算デバイスパラメータを設定するための定数表、バイアスデータ等を含んでもよく、上記のデータ操作信号には共有メモリにおける上記のデータブロックのソースアドレスを含む。
S5104、コントローラユニットはコマンド記憶ユニットから次のCONFIG(設定)コマンドを読み込み、当該CONFIGコマンドから訳出された制御信号に基づいて、当該層のニューラルネットワークの計算に必要な様々な定数を設定し、例えば、演算ユニットは活性化関数に必要な定数に基づいてその内部のレジスタの値を設定する。
S5105、コントローラユニットはコマンド記憶ユニットから次のCOMPUTE(計算)コマンドを読み込み、演算ユニットは当該COMPUTEコマンドから訳出された制御信号(即ち演算コマンド)に基づいて、配分された当該層のニューロンの入力ニューロンデータ、重み値データ及び演算コマンドを主処理回路に伝送し、主処理回路は配分された当該層のニューロンの入力ニューロンデータをブロードキャストデータとして決定し、重み値データを分配データとして決定し、1つの分配データを複数のデータブロックに配分し、複数のデータブロックのうちの少なくとも1つのデータブロック、ブロードキャストデータ及び複数の演算コマンドのうちの少なくとも1つの演算コマンドを副処理回路に送信して、副処理回路が乗算処理回路、累積処理回路等によって中間結果を得、主処理回路が中間結果及び活性化処理回路等により、配分された当該層のニューロンが出力するニューロンデータを得るようにしてもよい。
S5106、コントローラユニットはコマンド記憶ユニットから次のIOコマンドを読み込み、当該IOコマンドから訳出されたデータ操作信号に基づいて、上記の出力ニューロンデータを、伝送回路によって共有メモリに伝送して記憶させて、次の層の一部ニューロンの入力ニューロンデータを得、上記のデータ操作信号には共有メモリにおける上記の出力ニューロンデータの目的アドレスが含まれる。
以下、S5105について例示的に説明する。ニューラルネットワーク演算中の全結合演算を例とすると、ある層のニューラルネットワークのプロセスは、y=f(wx+b)であってもよく、ここで、xは入力ニューロン行列、wは重み値行列、bはバイアススカラーであり、fは活性化関数で、具体的には、sigmoid関数、tanh、relu、softmax関数のうちの任意の一つであってもよい。ここで主副処理回路同士は二分木の関係(ツリー型関係の1種)であり、演算ユニットは1つの主処理回路と、8つの副処理回路とを有すると仮定すると、上記のS5105は次のように実現することができる。コントローラユニットは共有メモリ内から入力ニューロン行列x、重み値行列w及び全結合演算コマンドを取得し、入力ニューロン行列x、重み値行列w及び全結合演算コマンドを主処理回路に伝送し、主処理回路は当該入力ニューロン行列xをブロードキャストデータとして決定し、重み値行列wを分配データとして決定し、重み値行列wを8つのサブ行列に区分し、次に8つのサブ行列をツリー型モジュールによって8つの副処理回路に分配し、入力ニューロン行列xを8つの副処理回路にブロードキャストし、副処理回路は並行して8つのサブ行列と入力ニューロン行列xの乗算演算と累積演算を実行して8つの中間結果を得、8つの中間結果を主処理回路に送信し、主処理回路は、8つの中間結果をソートしてwxの演算結果を得、当該演算結果にバイアスb演算を実行した後、活性化演算を実行して最終結果yを得るために用いられる。
なお、上記の各機械学習ユニットが並行して或る層の配分された各ニューロンについて計算を実行できるため、共有メモリには各層の全てのニューロンの出力ニューロンデータ、及び次の層の全てのニューロンに必要な入力ニューロンデータが記憶されてもよく、重み値データを繰り返し使用するか、又は共有メモリから新たな層のニューラルネットワークの重み値データを取得してもよいことを理解されたい。
なお、各機械学習ユニットは1つの演算ユニットを含んでもよいし、複数の演算ユニットを含んでもよく、且つ各演算ユニットの構造は同じでもよいし、異なってもよい。ここで、各演算ユニットの構造は、主処理回路と各副処理回路の関係として表して、ツリー型、H型、シストリックアレイ型の関係を含んでもよいが、これらに限定されない。本願による技術的解決手段において、演算ユニットは1つの主ユニット及び複数の副ユニットを含む構造として設定され、フォワード演算の計算コマンドに対して、フォワード演算の計算コマンドに基づいてデータを区分してもよく、このようにして複数の副処理回路により、計算量が大きな部分について並行して演算することができ、演算速度を向上させ、演算時間を短縮させ、さらには消費パワーを低減することができる。
上記の図43に示す本実施例のデータ処理装置の説明に戻る。ここで、ユニキャスト読取操作はユニキャスト方式の読取操作であり、対応するデータ操作信号は、ユニキャスト読取コマンド、ユニキャスト読取要求であってもよく、ブロードキャスト操作に対応するデータ操作信号は、ブロードキャストコマンド、マルチキャストコマンド、ブロードキャスト要求、マルチキャスト要求であってもよい。例示的に、ユニキャスト読取コマンドはユニキャスト方式の読取コマンドであり、ある機械学習ユニットの送信した、共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであってもよく、当該入力ニューロンデータ及び重み値データを上記の機械学習ユニットに返す必要があり、当該入力ニューロンデータ及び重み値データは当該機械学習ユニットが計算コマンドに基づいて、ある層の配分されたニューロンの計算中に当該配分されたニューロンに必要な入力ニューロンデータ及び重み値データであり、同様に、ユニキャスト読取要求はユニキャスト方式の読取要求であり、ブロードキャストコマンドはある機械学習ユニットの送信した、共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであり、当該入力ニューロンデータ及び重み値データを上記の機械学習装置中の全ての機械学習ユニットに返す必要があり、当該入力ニューロンデータはある層の全てのニューロンに必要な入力ニューロンデータ、即ち前の層の全ての出力ニューロンデータであってもよく、当該重み値データは繰り返し使用される重み値データ、例えば、畳み込みカーネルであってもよく、マルチキャストコマンドは、ブロードキャストコマンドと違うのは、マルチキャストコマンドのデータを返す対象は上記の機械学習装置中の全ての機械学習ユニットではなく、当該マルチキャストコマンドのフラグフィールドに対応する複数の機械学習ユニットであることにある。また、一般には、コマンドと要求の相違点は、コマンドを実行するのにオーバーヘッドが高いが、コマンドに多くの情報が含まれ、要求を実行するのにオーバーヘッドが少ないが、要求に少ない情報が含まれることである。
一般に、機械学習ユニットがユニキャスト読取操作及びブロードキャスト操作において返されるデータを受信する時に、少なくとも対応する2つのデータインタフェースが必要であり、それぞれ伝送回路がユニキャスト読取データ操作信号に対して返したユニキャスト読取データを受信することと、伝送回路がブロードキャスト及び/又はマルチキャストデータ操作信号に対して返したブロードキャスト及び/又はマルチキャストデータを受信することのために用いられる。本実施例では、図1を参照すると、機械学習ユニット0の受信インタフェースは共有データ受信インタフェースの1つのみ、例えば、インタフェースc0であり、伝送回路がユニキャスト読取データ操作信号に対して返したユニキャスト読取データ、及び伝送回路がブロードキャスト及び/又はマルチキャストデータ操作信号に対して返したブロードキャスト及び/又はマルチキャストデータを受信することができる。
なお、伝送回路が共有メモリから必要な入力ニューロンデータ及び重み値データを読み取った後、キャッシュが存在する場合に、キャッシュに一時的に記憶させてもよく、そして伝送回路は当該データの要求の由来、即ち当該データに関連するデータ操作信号に対応するデータ返し対象(機械学習ユニット)を判断し、当該データを共有データ受信インタフェースに送信するようにしてもよく、ユニキャスト読取操作の場合に、上記の共有データ受信インタフェースは当該データ返し対象に対応する1つの機械学習ユニットの共有データ受信インタフェースであり、ブロードキャスト操作の場合に、上記の共有データ受信インタフェースは当該データ返し対象に対応する複数の機械学習ユニットの複数の共有データ受信インタフェースであることを理解されたい。
したがって、本実施例に示すデータ処理装置では、少なくとも1つの機械学習ユニットはユニキャスト読取操作及びブロードキャスト操作を実行する時に前記機械学習ユニット上の1つのデータ受信インタフェースを共有することにより、機械学習ユニット中の返すためのデータインタフェースの数量を効果的に低減し、ハードウェアリソースを節約し、ハードウェアの面積及び消費パワーを低減することができる。
ここで、上記の機械学習ユニットの送信インタフェースについて詳細に説明する。図45を参照すると、上記の図43を踏まえ、前記送信インタフェース141は、ユニキャスト読取信号送信インタフェース1411と、ブロードキャスト信号送信インタフェース1412とを含んでもよく、前記機械学習ユニット15は前記ユニキャスト読取信号送信インタフェース1411及び前記共有データ受信インタフェース142を介して前記伝送回路12にそれぞれ接続されることで、ユニキャスト読取操作を実現し、そして、前記ブロードキャスト信号送信インタフェース1412及び前記共有データ受信インタフェース142を介して前記伝送回路12にそれぞれ接続されることで、ブロードキャスト操作を実現する。MLU0については、ユニキャスト読取信号送信インタフェースはインタフェースa0に対応し、ブロードキャスト信号送信インタフェースはインタフェースb0に対応し、共有データ受信インタフェースはインタフェースc0に対応し、ここで、インタフェースa0は伝送回路にユニキャスト読取データ操作信号を送信するために用いてもよく、インタフェースb0は伝送回路にブロードキャスト及び/又はマルチキャストデータ操作信号を送信するために用いてもよく、インタフェースc0は伝送回路がユニキャスト読取データ操作信号に対して返したユニキャスト読取データ、及び伝送回路がブロードキャスト及び/又はマルチキャストデータ操作信号に対して返したブロードキャスト及び/又はマルチキャストデータを受信するために用いてもよい。したがって、本実施例ではユニキャスト読取信号送信インタフェース及びブロードキャスト信号送信インタフェースによって異なるタイプのデータ操作信号の送信をそれぞれ実現することで、処理ロジックが簡素化される。
一実施形態では、上記のユニキャスト読取操作及びブロードキャスト操作に応じて、図45に示すように、上記データ処理装置の伝送回路12は、第2伝送インタフェース120と、前記第2伝送インタフェース120に接続された読み書き処理回路121と、前記読み書き処理回路121に接続された調停回路122とを含んでもよく、前記読み書き処理回路121は、前記少なくとも1つの機械学習ユニット15が前記送信インタフェース141及び前記第2伝送インタフェース120によって送信したデータ操作信号を受信し、前記データ操作信号を前記調停回路122に伝送し、そして、前記調停回路122が前記共有メモリ13から取得したデータを前記第2伝送インタフェース120及び前記共有データ受信インタフェース142によって前記データ操作信号に対応する機械学習ユニットに返すために用いられ、前記調停回路122は、予め設定された調停規則に基づいて、前記読み書き処理回路121から受信されたデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて前記共有メモリ13中のデータに操作を行うために用いられる。
具体的には、前記読み書き処理回路121はユニキャスト読取信号を処理してもよいし、ブロードキャスト信号及び/又はマルチキャスト信号を処理してもよい。一実施形態では、前記読み書き処理回路121は、ユニキャスト読取処理回路を含んでもよく、前記ユニキャスト読取処理回路はユニキャスト読取信号、又はブロードキャスト信号及び/又はマルチキャスト信号を処理してもよく、ここで、前記ユニキャスト読取処理回路がブロードキャスト信号及び/又はマルチキャスト信号を処理する時に、少なくとも1つの機械学習ユニットが前記ブロードキャスト信号送信インタフェース及び前記第2伝送インタフェースによって送信したブロードキャスト及び/又はマルチキャスト信号を受信して、前記ブロードキャスト及び/又はマルチキャスト信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び共有データ受信インタフェースによって予め設定された順番に従ってそれぞれ前記ブロードキャスト及び/又はマルチキャスト信号に対応する複数の機械学習ユニットに送信するようにしてもよく、上記の予め設定された順番は上記の複数の機械学習ユニットにデータを返す順番であり、各機械学習ユニットの優先度に基づいてソートしてもよいし、複数の機械学習ユニットの番号順に従ってもよいし、又は他の順番であってもよい。
選択可能で、前記読み書き処理回路121は、ユニキャスト読取処理回路と、ブロードキャスト処理回路とを含んでもよく、前記ユニキャスト読取処理回路はユニキャスト読取信号を処理するために用いられ、前記ブロードキャスト処理回路は、ブロードキャスト信号及び/又はマルチキャスト信号を処理するために用いられる。
ここで、ユニキャスト読取処理回路は、少なくとも1つの機械学習ユニットがユニキャスト読取信号送信インタフェース及び第2伝送インタフェースによって送信したユニキャスト読取信号を受信し、前記ユニキャスト読取信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び共有データ受信インタフェースによって前記ユニキャスト読取信号に対応する機械学習ユニットに送信するために用いることができ、前記ブロードキャスト読取処理回路は少なくとも1つの機械学習ユニットが前記ブロードキャスト信号送信インタフェース及び前記第2伝送インタフェースによって送信したブロードキャスト及び/又はマルチキャスト信号を受信し、前記ブロードキャスト及び/又はマルチキャスト信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び共有データ受信インタフェースによって前記ブロードキャスト及び/又はマルチキャスト信号に対応する複数の機械学習ユニットに送信するために用いることができる。
ここで、予め設定された調停規則は、調停回路が特定の規則に従って複数のデータ操作信号の優先度を決定することで、各データ操作信号の優先度に基づいて操作すべき対象を決定し、即ち優先度の高いデータ操作信号を調停が成功したデータ操作信号として選択するようにするために用いてもよく、例えば、伝送速度が速いデータ操作信号の優先度を高優先度に設定し、伝送速度が遅いデータ操作信号の優先度を低優先度に設定してもよく、例示的に、上記の予め設定された調停規則はラウンドロビン・スケジューリング調停規則、最大搬送波対干渉比スケジューリング規則、比例公平性規則等であってもよい。また、調停回路は機械学習ユニットと読み書き処理回路との間のデータパス(インタフェース対インタフェース)がアイドルであるか否かを補助的な調停規則としてもよく、つまり、調停が成功したデータ操作信号に対応するデータパスはアイドルである。
具体的には、ユニキャスト読取処理回路は第2伝送インタフェースを介して複数の機械学習ユニットに接続して、複数の機械学習ユニットのユニキャスト読取操作を処理するようにしてもよく、複数のユニキャスト読取コマンドをユニキャスト読取処理回路のユニキャスト読取コマンドキャッシュキューにキャッシュしてもよくて、ユニキャスト読取コマンドを解析して対応するユニキャスト読取コマンドを得、ユニキャスト読取処理回路のユニキャスト読取要求キャッシュキューにキャッシュして、調停回路に調停させるようにしてもよく、ユニキャスト読取要求については、解析操作を行うことなく、ユニキャスト読取要求キャッシュキューにキャッシュしてもよい。類似的に、ブロードキャスト処理回路もは、第2伝送インタフェースによって複数の機械学習ユニットに接続してもよく、ブロードキャスト及び/又はマルチキャストコマンドキャッシュキュー並びにブロードキャスト及び/又はマルチキャスト要求キャッシュキューを含んでもよく、ここで再度説明しない。選択可能な一形態では、読み書き処理回路は1つのユニキャスト読取処理回路と、1つのブロードキャスト処理回路とを含んでもよい。
したがって、本実施例はユニキャスト読取処理回路によってユニキャスト読取操作を処理することができ、ブロードキャスト処理回路によってブロードキャスト操作を処理することができ、異なる処理回路によって異なるタイプのデータ操作の処理をそれぞれ実現することで、処理ロジックが簡素化される。
選択可能な一形態では、図45に示すように、図43に記載の上記のデータ処理装置をベースにして、第2伝送インタフェースは異なるタイプのデータ操作を処理するインタフェースに細分化するようにしてもよく、具体的には、前記第2伝送インタフェース120は、前記ユニキャスト読取処理回路に接続された少なくとも1つのグループのユニキャスト読取信号受信インタフェース及びユニキャスト読取データ送信インタフェース、及び前記ブロードキャスト処理回路に接続された少なくとも1つのグループのブロードキャスト信号受信インタフェース及びブロードキャストデータ送信インタフェースとを含んでもよく、前記ユニキャスト読取信号受信インタフェースは前記機械学習ユニットのユニキャスト読取信号送信インタフェースに接続され、前記ブロードキャスト信号受信インタフェースは前記機械学習ユニットのブロードキャスト信号送信インタフェースに接続され、前記伝送回路中の前記ユニキャスト読取データ送信インタフェース及び前記ブロードキャストデータ送信インタフェースはそれぞれ前記機械学習ユニットの共有データ受信インタフェースに接続される。本実施例では、第2伝送インタフェースのうちの各インタフェースによって異なるタイプのデータ操作の処理をそれぞれ実現することができ、処理ロジックが簡素化される。
一実施形態では、図45に示すように、読み書き処理回路は複数の処理回路グループに分割されてもよく、1つの機械学習ユニットは1つの処理回路グループに対応し、前記処理回路グループは1つのユニキャスト読取処理回路及び1つのブロードキャスト処理回路を少なくとも含む。例示的に、MLU0はユニキャスト読取処理回路0及びブロードキャスト処理回路0に対応し、MLUnはユニキャスト読取処理回路n及びブロードキャスト処理回路nに対応する。同様に、第2伝送インタフェースには1つの処理回路グループ及び1つの機械学習ユニットにそれぞれ接続された、機械学習ユニットとユニキャスト読取処理回路との一対一の接続、及び機械学習ユニットとブロードキャスト処理回路との一対一の接続を実現するための1つのグループのインタフェースが存在する。
例えば、MLU0及びユニキャスト読取処理回路0については、第2伝送インタフェースのうちのインタフェースd0はユニキャスト読取信号受信インタフェースとしてMLU0のユニキャスト読取信号送信インタフェースa0及びユニキャスト読取処理回路0にそれぞれ接続され、MLU0から送信されたユニキャスト読取信号を受信してユニキャスト読取処理回路0に伝送して処理させるために用いることができ、第2伝送インタフェースのうちのインタフェースe0はユニキャスト読取データ送信インタフェースとしてMLU0の共有データ受信インタフェースc0及びユニキャスト読取処理回路0にそれぞれ接続され、ユニキャスト読取処理回路0の送信した上記のユニキャスト読取信号に対応する入力ニューロンデータ及び重み値データを受信してMLU0のインタフェースc0に伝送するために用いることができる。MLU0及びブロードキャスト処理回路0については、第2伝送インタフェースのインタフェースf0は、ブロードキャスト信号受信インタフェースとしてMLU0のブロードキャスト信号送信インタフェースb0及びブロードキャスト処理回路0にそれぞれ接続され、MLU0から送信されたブロードキャスト及び/又はマルチキャスト信号を受信してブロードキャスト処理回路0に伝送して処理させるために用いることができ、第2伝送インタフェースのインタフェースg0は、ブロードキャストデータ送信インタフェースとして複数のMLUの共有データ受信インタフェースci及びブロードキャスト処理回路0にそれぞれ接続され、ブロードキャスト処理回路0の送信した上記ブロードキャスト及び/又はマルチキャスト信号に対応する入力ニューロンデータ及び重み値データを受信して複数のMLUの共有データ受信インタフェースciに伝送するために用いることができる。
したがって、本実施例では機械学習ユニットとユニキャスト読取処理回路との一対一の接続、及び機械学習ユニットとブロードキャスト処理回路との一対一の接続により、ターゲットを絞った一対一のデータ操作処理を実現し、データ操作のアクセスロジックの複雑性を下げ、抵触を低減し、処理効率を高めることができる。
図46を参照すると、選択可能な一形態では、図3に記載の上記のデータ処理装置をベースにして、伝送回路のインタフェース数量を削減し、具体的には、前記読み書き処理回路121は、ブロードキャスト処理回路と、複数のユニキャスト読取処理回路とを含んでもよく、前記複数のユニキャスト読取処理回路と前記複数の機械学習ユニットは一対一で接続され、前記ブロードキャスト処理回路と前記複数の機械学習ユニットは一対多で接続される。例示的に、MLU0はユニキャスト読取処理回路0及び上記のブロードキャスト処理回路に対応し、MLUnはユニキャスト読取処理回路n及び上記のブロードキャスト処理回路に対応する。同様に、第2伝送インタフェースには、1つのユニキャスト読取処理回路及び1つの機械学習ユニットにそれぞれ接続された、機械学習ユニットとユニキャスト読取処理回路との一対一の接続を実現するための1つのグループのインタフェースが存在し、第2伝送インタフェースには、1つのブロードキャスト処理回路及び複数の機械学習ユニットにそれぞれ接続された、機械学習ユニットとブロードキャスト処理回路との多対一の接続を実現するための1つのグループのインタフェースがさらに存在し、具体的には、第2伝送インタフェースは、ブロードキャスト処理回路に接続された1つのグループのブロードキャストインタフェースを含んでもよく、上記のブロードキャストインタフェースは、ブロードキャスト信号受信インタフェースと、ブロードキャストデータ送信インタフェースとを含んでもよく、前記複数の機械学習ユニットは前記1つのグループのブロードキャストインタフェースを介して前記ブロードキャスト処理回路に接続される。
例えば、複数のMLU及び上記のブロードキャスト処理回路については、第2伝送インタフェースのインタフェースdn+1は、ブロードキャスト信号受信インタフェースとして、複数のMLUから送信されたブロードキャスト及び/又はマルチキャスト信号を受信して上記のブロードキャスト処理回路に伝送して処理させるために用いることができ、第2伝送インタフェースのインタフェースen+1は、ブロードキャストデータ送信インタフェースとして、上記のブロードキャスト処理回路の送信した、上記のブロードキャスト及び/又はマルチキャスト信号に対応する入力ニューロンデータ及び重み値データを受信して複数のMLU中の共有データ受信インタフェースに伝送するために用いることができる。
よって、複数の機械学習ユニットは1つのブロードキャスト処理回路を共有し、同時に1つのグループのブロードキャスト信号受信インタフェース及びブロードキャストデータ送信インタフェースを共有することができ、したがって、本実施例によるデータ処理装置において機械学習ユニット中の返すためのデータインタフェースの数量が低減されるだけでなく、伝送回路のインタフェースの数量が一層節約され、ハードウェアリソースが一層節約され、ハードウェアの面積及び消費パワーが低減される。
図47を参照すると、選択可能な一形態では、上記の図46をベースにして、伝送回路のインタフェース数量を一層低減しており、前記第2伝送インタフェース120は、前記複数のユニキャスト読取処理回路に一対一で接続された複数のグループのユニキャスト読取信号受信インタフェース及び共有データ送信インタフェース、前記ブロードキャスト処理回路に接続されたブロードキャスト信号受信インタフェースを含んでもよく、前記共有データ送信インタフェースは前記ブロードキャスト処理回路にも接続され、前記ユニキャスト読取信号受信インタフェースは前記機械学習ユニットのユニキャスト読取信号送信インタフェースに接続され、前記ブロードキャスト信号受信インタフェースは前記機械学習ユニットのブロードキャスト信号送信インタフェースに接続され、前記共有データ送信インタフェースは前記機械学習ユニットの共有データ受信インタフェースに接続される。
例示的に、ユニキャスト読取処理回路0において、第2伝送インタフェースには、前記ユニキャスト読取処理回路0に一対一で接続された、1つのグループのユニキャスト読取信号受信インタフェースd0及び共有データ送信インタフェースe0が含まれ、且つユニキャスト読取信号受信インタフェースd0はMLU0中のユニキャスト読取信号送信インタフェースa0に接続され、共有データ送信インタフェースe0はMLU0中の共有データ受信インタフェースc0に接続され、ユニキャスト読取処理回路nにおいて、第2伝送インタフェースには、前記ユニキャスト読取処理回路nに一対一で接続された、1つのグループのユニキャスト読取信号受信インタフェースdn及び共有データ送信インタフェースenが含まれ、且つユニキャスト読取信号受信インタフェースdnはMLUn中のユニキャスト読取信号送信インタフェースanに接続され、共有データ送信インタフェースenはMLUn中の共有データ受信インタフェースcnに接続され、第2伝送インタフェースには、ブロードキャスト処理回路に接続されたブロードキャスト信号受信インタフェースdn+1がさらに含まれてもよく、且つブロードキャスト信号受信インタフェースdn+1は各MLUのブロードキャスト信号送信インタフェースにそれぞれ接続され(MLUiの場合はインタフェースbi)、特筆すべきは、伝送回路で各共有データ送信インタフェースeiはいずれもブロードキャスト処理回路に接続され、ブロードキャスト処理回路の送信したブロードキャスト及び/又はマルチキャスト信号に対応する入力ニューロンデータ及び重み値データを受信して複数のMLUの共有データ受信インタフェースciに伝送することができる。よって、伝送回路において、各ユニキャスト読取処理回路iはそれぞれブロードキャスト処理回路と共有データ送信インタフェースeiを共有し、且つMLUi中の共有データ受信インタフェースci及び伝送回路中の共有データ送信インタフェースeiからなるデータパスはMLUiと伝送回路の間のユニキャスト読取データ、ブロードキャスト及び/又はマルチキャストデータの伝送を実現することできる。
上述したように、複数のユニキャスト読取処理回路はそれぞれブロードキャスト処理回路とデータ送信インタフェースを共有するため、本実施例によるデータ処理装置において、伝送回路のインタフェースの数量が一層節約され、ハードウェアリソースが一層節約され、ハードウェアの面積及び消費パワーが低減される。
情報技術が発展し続けニーズが日々増えるのにつれて、データアクセス及びデータ処理に対する要求がますます高まり、これに伴ってデータを処理及びアクセスする一部のプロセッサの一層の高度化が求められる。汎用プロセッサを例とすると、複数の汎用プロセッサコア(例えば、CPUコア)からなるマルチコアプロセッサは、その優れた並行計算能力から、主流になる。
しかしながら、現在機械学習アルゴリズムが発展し続けるのにつれて、ますます多くのアーキテクチャの機械学習チップが次第に開発されてきており、これらの機械学習チップは常にユニキャスト読取、ユニキャスト書込、ブロードキャスト等の多くの方式で共有メモリ中のデータにアクセスし又はデータを処理する必要があり、そのために、それに応じて複数の伝送インタフェースが設けられ、機械学習チップの面積が大きいことを招く。
したがって、どのようにして機械学習チップの伝送インタフェースを簡素化して機械学習チップの面積を減らすかは、当業者が早急に解決すべき技術的課題になる。
上記の問題を解决するために、本願は以下の技術的解決手段を提供する。
図49を参照すると、図48の機械学習ユニット0を例として、機械学習ユニットについて詳細に説明する。一形態では、機械学習ユニット15は、少なくとも1つの送信インタフェース141と、少なくとも1つの受信インタフェース142と、少なくとも1つの演算ユニット151と、前記演算ユニット151に接続されたコントローラユニット152とを含んでもよく、前記演算ユニット151は1つの主処理回路151aと、複数の副処理回路151bとを含んでもよく、前記演算ユニット151は前記少なくとも1つの送信インタフェース141及び少なくとも1つの受信インタフェース142を介して前記伝送回路12に接続され、
前記コントローラユニット152は、前記少なくとも1つの送信インタフェース141によって前記伝送回路12に前記データ操作信号及び前記出力ニューロンデータを送信し、前記少なくとも1つの受信インタフェース142によって、前記伝送回路12が前記共有メモリ13から取得した前記入力ニューロンデータ及び前記重み値データを受信し、前記入力ニューロンデータ及び前記重み値データを前記主処理回路151a及び/又は前記副処理回路151bに送信するために用いられ、
前記主処理回路151aは、前記入力ニューロンデータ及び/又は重み値データを前記複数の副処理回路151bに分配するために用いられ、前記複数の副処理回路151bは、前記ニューロンデータ及び重み値データに基づいて並行して中間演算を実行して複数の中間結果を得、複数の中間結果を前記主処理回路151aに伝送するために用いられ、前記主処理回路151aは、さらに、前記複数の中間結果に後続の処理を実行して計算結果を得るために用いられる。ここで、前記後続の処理は活性化演算を含んでもよい。具体的には、当該コントローラユニット152は、さらに、計算コマンドを取得し、当該計算コマンドを解析して複数の演算コマンドを得、当該複数の演算コマンドを前記主処理回路に送信するようにしてもよい。
なお、本実施例では、当機械学習ユニットが複数の演算ユニットを含む場合に、各演算ユニットは上記の少なくとも1つの送信インタフェース及び上記の少なくとも1つの受信インタフェースを共用してもよいことを理解されたい。
例えば、選択可能な一形態では、主処理回路は1つのコントローラユニットを含んでもよく、当該コントローラユニットは主コマンド処理ユニットを含んでもよく、演算コマンドをマイクロコマンドに復号するために用いられる。また、選択可能な別の形態では、副処理回路は別のコントローラユニットを含んでもよく、当該別のコントローラユニットは副コマンド処理ユニットを含んで、マイクロコマンドを受信及び処理するために用いられる。上記のマイクロコマンドはコマンドの下位コマンドであってもよく、当該マイクロコマンドはコマンドに対する区分又は復号により得ることができ、さらに各デバイス、各ユニット又は各処理回路の制御信号として復号されることが可能である。例えば、積算マイクロコマンドは畳み込みコマンドの下位コマンドである。
例示的に、上記の機械学習ユニットの構造を例として、当該機械学習ユニットのニューラルネットワーク演算のフローについて詳細に説明し、以下のステップS6101~S6106を参照する。
S6101、コントローラユニットのコマンド記憶ユニットの最初のアドレスにあらかじめ1つのIOコマンドを記憶する。
S6102、コントローラユニットはコマンド記憶ユニットの最初のアドレスから当該IOコマンドを読み取り、次に当該IOコマンドから訳出された制御信号に基づいて、チップ外インタフェースによってチップ外メモリから当該機械学習ユニットに対応するニューラルネットワーク演算コマンドを取得し、又は、伝送回路によって共有メモリから当該機械学習ユニットに対応するニューラルネットワーク計算コマンドを取得し、得られた計算コマンドをコマンド記憶ユニットに記憶する。
S6103、コントローラユニットはコマンド記憶ユニットから次のIOコマンドを読み込み、当該IOコマンドから訳出されたデータ操作信号に基づいて、伝送回路によって共有メモリから演算ユニットに必要な全てのデータブロックを読み取り、これには配分すべき当該層のニューロンの入力ニューロンデータ及び重み値データを含み、さらには、高速な活性化関数演算を行うための補間表、演算デバイスパラメータを設定するための定数表、バイアスデータ等を含んでもよく、上記のデータ操作信号には共有メモリにおける上記のデータブロックのソースアドレスを含む。
S6104、コントローラユニットはコマンド記憶ユニットから次のCONFIG(設定)コマンドを読み込み、当該CONFIGコマンドから訳出された制御信号に基づいて、当該層のニューラルネットワークの計算に必要な様々な定数を設定し、例えば、演算ユニットは活性化関数に必要な定数に基づいてその内部のレジスタの値を設定する。
S6105、コントローラユニットはコマンド記憶ユニットから次のCOMPUTE(計算)コマンドを読み込み、演算ユニットは当該COMPUTEコマンドから訳出された制御信号(即ち演算コマンド)に基づいて、配分された当該層のニューロンの入力ニューロンデータ、重み値データ及び演算コマンドを主処理回路に伝送し、主処理回路は配分された当該層のニューロンの入力ニューロンデータをブロードキャストデータとして決定し、重み値データを分配データとして決定し、1つの分配データを複数のデータブロックに配分し、複数のデータブロックのうちの少なくとも1つのデータブロック、ブロードキャストデータ及び複数の演算コマンドのうちの少なくとも1つの演算コマンドを副処理回路に送信して、副処理回路が乗算処理回路、累積処理回路等によって中間結果を得、主処理回路が中間結果及び活性化処理回路等により、配分された当該層のニューロンが出力するニューロンデータを得るようにしてもよい。
S6106、コントローラユニットはコマンド記憶ユニットから次のIOコマンドを読み込み、当該IOコマンドから訳出されたデータ操作信号に基づいて、上記の出力ニューロンデータを、伝送回路によって共有メモリに伝送して記憶させて、次の層の一部ニューロンの入力ニューロンデータを得、上記のデータ操作信号には共有メモリにおける上記の出力ニューロンデータの目的アドレスが含まれる。
以下、S6105について例示的に説明する。ニューラルネットワーク演算中の全結合演算を例とすると、ある層のニューラルネットワークのプロセスは、y=f(wx+b)であってもよく、ここで、xは入力ニューロン行列、wは重み値行列、bはバイアススカラーであり、fは活性化関数で、具体的には、sigmoid関数、tanh、relu、softmax関数のうちの任意の一つであってもよい。ここで主副処理回路同士は二分木の関係(ツリー型関係の1種)であり、演算ユニットは1つの主処理回路と、8つの副処理回路とを有すると仮定すると、上記のS6105は以下のように実現することができる。コントローラユニットは共有メモリ内から入力ニューロン行列x、重み値行列w及び全結合演算コマンドを取得し、入力ニューロン行列x、重み値行列w及び全結合演算コマンドを主処理回路に伝送し、主処理回路は当該入力ニューロン行列xをブロードキャストデータとして決定し、重み値行列wを分配データとして決定し、重み値行列wを8つのサブ行列に区分し、次に8つのサブ行列をツリー型モジュールによって8つの副処理回路に分配し、入力ニューロン行列xを8つの副処理回路にブロードキャストし、副処理回路は並行して8つのサブ行列と入力ニューロン行列xの乗算演算と累積演算を実行して8つの中間結果を得、8つの中間結果を主処理回路に送信し、主処理回路は、8つの中間結果をソートしてwxの演算結果を得、当該演算結果にバイアスb演算を実行した後、活性化演算を実行して最終結果yを得るために用いられる。
なお、上記の各機械学習ユニットが並行して或る層の配分された各ニューロンについて計算を実行できるため、共有メモリには各層の全てのニューロンの出力ニューロンデータ、及び次の層の全てのニューロンに必要な入力ニューロンデータが記憶されてもよく、重み値データを繰り返し使用するか、又は共有メモリから新たな層のニューラルネットワークの重み値データを取得してもよいことを理解されたい。
なお、各機械学習ユニットは1つの演算ユニットを含んでもよいし、複数の演算ユニットを含んでもよく、且つ各演算ユニットの構造は同じでもよいし、異なってもよい。ここで、各演算ユニットの構造は、主処理回路と各副処理回路の関係として表して、ツリー型、H型、シストリックアレイ型の関係を含んでもよいが、これらに限定されない。本願による技術的解決手段において、演算ユニットは1つの主ユニット及び複数の副ユニットを含む構造として設定され、フォワード演算の計算コマンドに対して、フォワード演算の計算コマンドに基づいてデータを区分してもよく、このようにして複数の副処理回路により、計算量が大きな部分について並行して演算することができ、演算速度を向上させ、演算時間を短縮させ、さらには消費パワーを低減することができる。
上記の図48に示す本実施例のデータ処理装置の説明に戻る。ここで、ユニキャスト読取操作に対応するデータ操作信号は、ユニキャスト読取コマンド、ユニキャスト読取要求であってもよく、ユニキャスト書込操作に対応するデータ操作信号は、ユニキャスト書込コマンド、ユニキャスト書込要求であってもよく、ブロードキャスト操作に対応するデータ操作信号は、ブロードキャストコマンド、マルチキャストコマンド、ブロードキャスト要求、マルチキャスト要求であってもよい。例示的に、ユニキャスト読取コマンドはある機械学習ユニットの送信した共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであり、当該入力ニューロンデータ及び重み値データを上記の機械学習ユニットに返す必要があり、当該入力ニューロンデータ及び重み値データは当該機械学習ユニットが計算コマンドに基づいて、ある層の配分されたニューロンの計算中に当該配分されたニューロンに必要な入力ニューロンデータ及び重み値データであり、ユニキャスト書込コマンドはある機械学習ユニットの送信したニューラルネットワークが算出した出力ニューロンデータを共有メモリ中の目的アドレスに書き込むべき書込コマンドであり、なお、前の層のニューラルネットワークの出力ニューロンデータを次のニューラルネットワークに必要な入力ニューロンデータとすることができ、各機械学習ユニットが共有メモリから必要な入力ニューロンデータを取得できるように共有メモリに書き込み、ブロードキャストコマンドはある機械学習ユニットの送信した、共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであり、当該入力ニューロンデータ及び重み値データを上記の機械学習装置中の全ての機械学習ユニットに返す必要があり、当該入力ニューロンデータはある層の全てのニューロンに必要な入力ニューロンデータ、即ち前の層の全ての出力ニューロンデータであってもよく、当該重み値データは繰り返し使用される重み値データ、例えば、畳み込みカーネルであってもよく、マルチキャストコマンドは、ブロードキャストコマンドとの違いは、マルチキャストコマンドのデータ返し対象は上記の機械学習装置中の全ての機械学習ユニットではなく、当該マルチキャストコマンドのフラグフィールドに対応する複数の機械学習ユニットであることにある。また、一般には、コマンドと要求の相違点は、コマンドを実行するのにオーバーヘッドが高いが、コマンドに多くの情報が含まれ、要求を実行するのにオーバーヘッドが少ないが、要求に少ない情報が含まれることである。
一般に、機械学習ユニットはユニキャスト読取信号、ユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号を送信する時に、少なくとも対応する3つのデータ操作信号送信インタフェースが必要であり、これらのインタフェースはそれぞれ、伝送回路にユニキャスト読取信号を送信するために、伝送回路にユニキャスト書込信号を送信するために、伝送回路にブロードキャスト及び/又はマルチキャスト信号を送信するために用いられる。本実施例では、少なくとも1つの機械学習ユニットがユニキャスト読取操作、ユニキャスト書込操作、ブロードキャスト操作のうちの少なくとも2種のデータ操作を実行する時に前記機械学習ユニット上の1つの送信インタフェースが共有され、図48を参照すると、前記機械学習ユニット0の少なくとも1つの送信インタフェース141はインタフェースa0及びインタフェースb0の2つのデータ操作信号送信インタフェースを含んでもよく、一実施形態では、インタフェースa0はユニキャスト読取信号送信インタフェースで、インタフェースb0はユニキャスト書込信号とブロードキャスト及び/又はマルチキャスト信号に共有された信号送信インタフェースであってもよく、一実施形態では、インタフェースa0はユニキャスト書込信号送信インタフェースで、インタフェースb0はユニキャスト読取信号とブロードキャスト及び/又はマルチキャスト信号に共有された信号送信インタフェースであってもよく、一実施形態では、インタフェースa0はブロードキャスト及び/又はマルチキャスト信号送信インタフェースで、インタフェースb0はユニキャスト読取信号とユニキャスト書込信号に共有された信号送信インタフェースであってもよい。また、選択可能な一形態では、少なくとも1つの機械学習ユニットがユニキャスト読取操作、ユニキャスト書込操作、ブロードキャスト操作を実行する時に、前記機械学習ユニット上の1つの送信インタフェースが共有されてもよく、即ち当該送信インタフェースはユニキャスト読取信号、ユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号を送信するようにしてもよい。
したがって、本実施例に示すデータ処理装置では、少なくとも1つの機械学習ユニットがユニキャスト読取操作、ユニキャスト書込操作、ブロードキャスト操作のうちの少なくとも2種のデータ操作を実行する時に、前記機械学習ユニット上の1つの送信インタフェースが共有されることで、機械学習ユニット中のデータ操作信号送信インタフェースの数量を効果的に低減し、ハードウェアリソースを節約し、ハードウェアの面積及び消費パワーを低減することができる。
選択可能な一形態では、図3に示すように、上記のユニキャスト読取操作、ユニキャスト書込操作及びブロードキャスト操作に応じて、上記の図48を踏まえて、上記データ処理装置の伝送回路12は、第2伝送インタフェース120と、前記第2伝送インタフェース120に接続された読み書き処理回路121と、前記読み書き処理回路121に接続された調停回路122とを含んでもよく、前記読み書き処理回路121は、前記少なくとも1つの機械学習ユニット15が前記少なくとも1つの送信インタフェース141及び前記第2伝送インタフェース120によって送信したデータ操作信号を受信し、前記データ操作信号を前記調停回路122に伝送し、そして、前記調停回路122が前記共有メモリ13から取得したデータを前記第2伝送インタフェース120及び前記少なくとも1つの受信インタフェース142によって前記データ操作信号に対応する機械学習ユニットに返すために用いられ、前記調停回路122は、予め設定された調停規則に基づいて、前記読み書き処理回路121から受信されたデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて前記共有メモリ13中のデータに操作を行うために用いられる。
具体的には、前記読み書き処理回路121はユニキャスト読取信号、又はユニキャスト書込信号、又はブロードキャスト信号及び/又はマルチキャスト信号を処理することができる。一実施形態では、前記読み書き処理回路121は、ユニキャスト読取処理回路と、ユニキャスト書込処理回路とを含んでもよく、前記ユニキャスト読取処理回路はユニキャスト読取信号、又はブロードキャスト信号及び/又はマルチキャスト信号を処理することができ、ここで、機械学習ユニットが実行するユニキャスト書込操作及びブロードキャスト操作において前記機械学習ユニット上の1つの送信インタフェースが共有される場合を例とすると、前記少なくとも1つの送信インタフェースはユニキャスト読取信号送信インタフェースと、共有信号送信インタフェースとを含み、前記ユニキャスト読取処理回路がブロードキャスト信号及び/又はマルチキャスト信号を処理する時に、少なくとも1つの機械学習ユニットが前記共有信号送信インタフェース及び前記第2伝送インタフェースによって送信したブロードキャスト及び/又はマルチキャスト信号を受信し、前記ブロードキャスト及び/又はマルチキャスト信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び上記の少なくとも1つの受信インタフェースによってそれぞれ予め設定された順番に従って前記ブロードキャスト及び/又はマルチキャスト信号に対応する複数の機械学習ユニットに送信することができ、上記の予め設定された順番は上記の複数の機械学習ユニットにデータを返す順番であり、各機械学習ユニットの優先度に基づいてソートしてもよいし、複数の機械学習ユニットの番号順に従ってもよいし、又は他の順番であってもよい。
選択可能で、前記読み書き処理回路121は、ユニキャスト読取処理回路と、ユニキャスト書込処理回路と、ブロードキャスト処理回路とを含んでもよく、前記ユニキャスト読取処理回路はユニキャスト読取信号を処理するために用いられ、前記ユニキャスト書込処理回路はユニキャスト書込信号を処理するために用いられ、前記ブロードキャスト処理回路は、ブロードキャスト信号及び/又はマルチキャスト信号を処理するために用いられる。
同様に、機械学習ユニットが実行するユニキャスト書込操作及びブロードキャスト操作において前記機械学習ユニット上の1つの送信インタフェースが共有される場合を例とすると、ユニキャスト読取処理回路は少なくとも1つの機械学習ユニットがユニキャスト読取信号送信インタフェース及び第2伝送インタフェースによって送信したユニキャスト読取信号を受信し、前記ユニキャスト読取信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び上記の少なくとも1つの受信インタフェースによって前記ユニキャスト読取信号に対応する機械学習ユニットに送信するために用いることができ、ユニキャスト書込処理回路は少なくとも1つの機械学習ユニットが共有信号送信インタフェース及び第2伝送インタフェースによって送信したユニキャスト書込信号を受信し、前記ユニキャスト書込信号を前記調停回路に伝送し、そして、前記ユニキャスト書込信号に対応するユニキャスト書込データを前記共有メモリに書き込むために用いることができ、前記ブロードキャスト読取処理回路は少なくとも1つの機械学習ユニットが前記共有信号送信インタフェース及び前記第2伝送インタフェースによって送信したブロードキャスト及び/又はマルチキャスト信号を受信し、前記ブロードキャスト及び/又はマルチキャスト信号を前記調停回路に伝送し、そして、前記調停回路が前記共有メモリから取得したデータを、前記第2伝送インタフェース及び上記の少なくとも1つの受信インタフェースによって前記ブロードキャスト及び/又はマルチキャスト信号に対応する複数の機械学習ユニットに送信するために用いることができる。なお、一般に、ユニキャスト書込信号にユニキャスト書込データが含まれ、ユニキャスト書込信号を送信した後、同じデータパスを用いてユニキャスト書込データを伝送することもできる。
ここで、予め設定された調停規則は、調停回路が特定の規則に従って複数のデータ操作信号の優先度を決定することで、調停回路が各データ操作信号の優先度に基づいて操作すべき対象を決定し、即ち優先度の高いデータ操作信号を調停が成功したデータ操作信号として選択するようにするために用いることができ、例えば、伝送速度が速いデータ操作信号の優先度を高優先度に設定し、伝送速度が遅いデータ操作信号の優先度を低優先度に設定してもよく、例示的に、上記の予め設定された調停規則はラウンドロビン・スケジューリング調停規則、最大搬送波対干渉比スケジューリング規則、比例公平性規則等であってもよい。また、調停回路は機械学習ユニットと読み書き処理回路との間のデータパス(インタフェース対インタフェース)がアイドルであるか否かを補助的な調停規則としてもよく、つまり、調停が成功したデータ操作信号に対応するデータパスはアイドルである。
具体的には、ユニキャスト読取処理回路は第2伝送インタフェースを介して複数の機械学習ユニットと接続して、複数の機械学習ユニットのユニキャスト読取操作を処理してもよく、複数のユニキャスト読取コマンドをユニキャスト読取処理回路のユニキャスト読取コマンドキャッシュキューにキャッシュして、ユニキャスト読取コマンドを解析して対応するユニキャスト読取コマンドを得、ユニキャスト読取処理回路のユニキャスト読取要求キャッシュキューにキャッシュして、調停回路により調停するようにしてもよく、ユニキャスト読取要求については、解析操作を行うことなく、ユニキャスト読取要求キャッシュキューにキャッシュするようにしてもよい。類似に、ブロードキャスト処理回路も第2伝送インタフェースを介して複数の機械学習ユニットと接続されてもよく、ブロードキャスト及び/又はマルチキャストコマンドキャッシュキュー並びにブロードキャスト及び/又はマルチキャスト要求キャッシュキューを含んでもよく、同様に、ユニキャスト書込処理回路は第2伝送インタフェースを介して複数の機械学習ユニットと接続されてもよく、ユニキャスト書込コマンドキャッシュキュー及びユニキャスト書込要求キャッシュキューを含んでもよく、ここで再度説明しない。選択可能な一形態では、読み書き処理回路は1つのユニキャスト読取処理回路と、1つのユニキャスト書込処理回路と、1つのブロードキャスト処理回路とを含んでもよい。
したがって、本実施例はユニキャスト読取処理回路によってユニキャスト読取操作を処理することができ、ユニキャスト書込処理回路によってユニキャスト書込操作を処理することができ、ブロードキャスト処理回路によってブロードキャスト操作を処理することができ、異なる処理回路によって異なるタイプのデータ操作の処理をそれぞれ実現することで、処理ロジックが簡素化される。
選択可能で、図50を参照すると、少なくとも1つの機械学習ユニットがユニキャスト書込操作、ブロードキャスト操作を実行する時に、前記機械学習ユニット上の1つの送信インタフェースが共有され、即ち上記の少なくとも1つの送信インタフェース141は、ユニキャスト書込操作及びブロードキャスト操作において共有される共有信号送信インタフェースと、ユニキャスト読取信号送信インタフェースとを含んでもよい。例示的に、MLU0にとって、インタフェースa0はユニキャスト読取信号送信インタフェースであり、インタフェースb0は共有信号送信インタフェースで、ユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号を送信することができ、インタフェースc0はユニキャスト読取データ受信インタフェースであり、インタフェースd0はブロードキャスト及び/又はマルチキャストデータ受信インタフェースである。説明しやすさのために、次の実施例では、いずれも少なくとも1つの機械学習ユニットがユニキャスト書込操作、ブロードキャスト操作を実行する時に、前記機械学習ユニット上の1つの送信インタフェースが共有される場合を例として説明する。当然ながら、次の実施例は信号送信インタフェースが共有される他の形態にも応用される。
選択可能な一形態では、図50を参照すると、前記読み書き処理回路は複数の処理回路グループに分割され、1つの機械学習ユニットは1つの処理回路グループに対応し、前記処理回路グループは1つのユニキャスト読取処理回路と、1つのユニキャスト書込処理回路と、1つのブロードキャスト処理回路とを含む。例示的に、MLU0はユニキャスト読取処理回路0、ユニキャスト書込処理回路0及びブロードキャスト処理回路0に対応し、MLUnはユニキャスト読取処理回路n、ユニキャスト書込処理回路n及びブロードキャスト処理回路nに対応する。同様に、第2伝送インタフェースには1つの処理回路グループ及び1つの機械学習ユニットにそれぞれ接続された1つのグループのインタフェースが存在し、機械学習ユニットとユニキャスト読取処理回路との一対一の接続、機械学習ユニットとユニキャスト書込処理回路との一対一の接続、及び機械学習ユニットとブロードキャスト処理回路との一対一の接続を実現するために用いられる。
具体的には、図50に示すように、前記第2伝送インタフェース120は複数のインタフェースグループを含んでもよく、前記1つの処理回路グループは1つのインタフェースグループに対応し、前記1つのインタフェースグループは、前記ユニキャスト読取処理回路に接続されたユニキャスト読取信号受信インタフェース及びユニキャスト読取データ送信インタフェースと、前記ユニキャスト書込処理回路に接続されたユニキャスト読取信号受信インタフェースと、前記ブロードキャスト処理回路に接続されたブロードキャスト信号受信インタフェース及びブロードキャストデータ送信インタフェースとを含む。
例えば、MLU0については、その対応する処理回路グループに対応するインタフェースグループはインタフェースe0と、インタフェースf0と、インタフェースg0と、インタフェースh0と、インタフェースi0とを含む。MLU0及びユニキャスト読取処理回路0については、第2伝送インタフェースのうちのインタフェースe0はユニキャスト読取信号受信インタフェースとしてMLU0のユニキャスト読取信号送信インタフェースa0及びユニキャスト読取処理回路0にそれぞれ接続され、MLU0から送信されたユニキャスト読取信号を受信してユニキャスト読取処理回路0に伝送して処理させるために用いることができ、第2伝送インタフェースのうちのインタフェースf0はユニキャスト読取データ送信インタフェースとしてMLU0のユニキャスト読取データ受信インタフェースc0及びユニキャスト読取処理回路0にそれぞれ接続され、ユニキャスト読取処理回路0の送信した上記のユニキャスト読取信号に対応する入力ニューロンデータ及び重み値データを受信してMLU0のインタフェースc0に伝送するために用いることができる。MLU0及びユニキャスト書込処理回路0については、第2伝送インタフェースのインタフェースg0はユニキャスト書込信号受信インタフェースとしてMLU0の共有信号送信インタフェースb0及びユニキャスト書込処理回路0にそれぞれ接続され、MLU0から送信されたユニキャスト書込信号を受信してユニキャスト書込処理回路0に伝送して処理させるために用いることができる。MLU0及びブロードキャスト処理回路0については、第2伝送インタフェースのインタフェースh0は、ブロードキャスト信号受信インタフェースとしてMLU0の共有信号送信インタフェースb0及びブロードキャスト処理回路0にそれぞれ接続され、MLU0から送信されたブロードキャスト及び/又はマルチキャスト信号を受信してブロードキャスト処理回路0に伝送して処理させるために用いることができ、第2伝送インタフェースのインタフェースi0は、ブロードキャストデータ送信インタフェースとして複数のMLUのブロードキャストデータ受信インタフェースdi及びブロードキャスト処理回路0にそれぞれ接続され、ブロードキャスト処理回路0の送信した上記のブロードキャスト及び/又はマルチキャスト信号に対応する入力ニューロンデータ及び重み値データを受信して複数のMLU中のブロードキャストデータ受信インタフェースdiに伝送するために用いることができる。
したがって、本実施例では機械学習ユニットとユニキャスト読取処理回路との一対一の接続、機械学習ユニットとユニキャスト書込処理回路との一対一接続、機械学習ユニットとブロードキャスト処理回路との一対一の接続により、ターゲットを絞った一対一のデータ操作処理を実現し、データ操作のアクセスロジックの複雑性を下げ、抵触を低減し、処理効率を高めることができる。
選択可能な一形態では、図51に示すように、上記の図50をベースにして、伝送回路のインタフェース数量を削減し、前記1つの処理回路グループ中のユニキャスト書込処理回路とブロードキャスト処理回路は前記対応するインタフェースグループ中の1つの共有信号受信インタフェースを共有し、前記処理回路グループに対応する共有信号受信インタフェースは前記処理回路グループに対応する機械学習ユニットの共有信号送信インタフェースに接続され、前記処理回路グループ中のユニキャスト読取信号受信インタフェースは前記処理回路グループに対応する機械学習ユニットのユニキャスト読取信号送信インタフェースに接続される。図4に示すように、MLU0に対応する処理回路グループについては、そのユニキャスト書込処理回路及びブロードキャスト処理回路が1つの共有信号受信インタフェースg0を共有し、且つ共有信号受信インタフェースg0はMLU0中の共有信号送信インタフェースb0に接続され、共有信号送信インタフェースb0の送信したユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号を受信し、ユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号をユニキャスト書込処理回路0及びブロードキャスト処理回路0に送信して処理させるために用いられる。よって、伝送回路において、ユニキャスト書込処理回路i及びブロードキャスト処理回路iは共有信号受信インタフェースgiを共有し、且つMLUi中の共有信号送信インタフェースbi及び伝送回路中の共有信号受信インタフェースeiからなるデータパスはMLUiと伝送回路の間のユニキャスト書込信号、ブロードキャスト及び/又はマルチキャスト信号の伝送を実現することができる。
上述したように、1つの処理回路グループ中のユニキャスト書込処理回路及びブロードキャスト処理回路が信号受信インタフェースを共有するため、本実施例によるデータ処理装置は機械学習ユニットのデータ操作信号送信インタフェースの数量が効果的に低減されるだけでなく、伝送回路のインタフェースの数量が一層節約され、ハードウェアリソースが一層節約され、ハードウェアの面積及び消費パワーが低減される。
一実施形態では、前記処理回路グループに対応する共有信号受信インタフェースは前記処理回路グループ中のユニキャスト書込処理回路及びブロードキャスト処理回路にそれぞれ接続され、前記機械学習ユニットの共有信号送信インタフェースの送信したデータ操作信号を受信し、前記データ操作信号を2つの同一のデータ操作信号に分割し、それぞれ前記ユニキャスト書込処理回路及び前記ブロードキャスト処理回路に送信するために用いられる。図51を参照すると、共有信号受信インタフェースg0を例とすると、受信されたデータ操作信号(ユニキャスト読取信号、ブロードキャスト及び/又はマルチキャスト信号)を2つの同一のデータ操作信号に分割して、それぞれユニキャスト書込処理回路0及びブロードキャスト処理回路0に送信して処理させることができる。例示的に、前記共有信号受信インタフェースはハードウェア回路を介してユニキャスト書込処理回路0及びブロードキャスト処理回路0にそれぞれ接続され、1つのデータ操作信号を2つの同一のデータ操作信号に分割することができる。なお、上記のデータ操作信号は高・低レベル信号であってもよいことを理解されたい。
なお、各処理回路はデータ操作信号を解析して、データ操作信号のタイプを判断できることを理解されたい。例えば、ユニキャスト書込信号である場合に、ブロードキャスト処理回路は処理を行わず、ユニキャスト書込処理回路が処理を行う。例えば、ブロードキャスト及び/又はマルチキャスト信号である場合に、ユニキャスト書込処理回路は処理を行わず、ブロードキャスト処理回路が処理を行う。具体的には、各処理回路はデータ操作信号の操作コードによって操作信号のタイプを判断することができ、例えば「write」はデータ操作信号がユニキャスト書込信号であることを意味し、「cast」はデータ操作信号がブロードキャスト及び/又はマルチキャスト信号であることを意味する。また、フラグフィールドにおいて表示された機械学習ユニット(データ返し対象)の数量によって操作信号のタイプを判断することもでき、例えば、返し対象がゼロである場合に、データ操作信号はユニキャスト書込信号であることを意味し、返し対象が1つである場合に、データ操作信号はユニキャスト読取信号であることを意味し、複数の(n+1より小さい)返し対象はデータ操作信号がマルチキャスト信号であることを意味し、n+1の返し対象はデータ操作信号がブロードキャスト信号であることを意味する。
選択可能な一形態では、図52に示すように、上記の図51をベースにして、機械学習ユニットのインタフェース数量を一層低減しており、機械学習ユニットがユニキャスト読取操作及びブロードキャスト操作を実行する時に前記機械学習ユニット上の1つのデータ受信インタフェースが共有され、即ち前記処理回路グループ中のユニキャスト読取処理回路及びブロードキャスト処理回路の返すデータは前記機械学習ユニット上の1つの共有データ受信インタフェースを共有する。図51と比べると、MLU0を例とすると、その少なくとも1つの受信インタフェース142は、インタフェースc0及びインタフェースd0ではなく、1つのインタフェースc0を含み、図52でインタフェースc0は処理回路のインタフェースf0に接続されて、ユニキャスト読取処理回路0の返すユニキャスト読取データを受信するために用いることができ、また処理回路中の複数のインタフェースiiに接続されて、複数のブロードキャスト処理回路iの返すブロードキャスト及び/又はマルチキャストデータを受信するために用いることができる。
したがって、本実施例に示すデータ処理装置では、少なくとも1つの機械学習ユニットはユニキャスト読取操作及びブロードキャスト操作を実行する時に前記機械学習ユニット上の1つのデータ受信インタフェースを共有することにより、機械学習ユニット中のデータ返しインタフェースの数量が一層低減され、ハードウェアリソースが一層節約され、ハードウェアの面積及び消費パワーが低減される。
さらに、図53に示すように、上記の図52をベースにして、伝送回路のインタフェース数量を一層低減しており、前記1つの処理回路グループ中のユニキャスト読取処理回路とブロードキャスト処理回路は前記対応するインタフェースグループ中の1つの共有データ送信インタフェースを共有し、前記処理回路グループに対応する共有データ送信インタフェースは前記処理回路グループに対応する機械学習ユニットの共有データ受信インタフェースに接続される。図52と比べると、MLU0に対応する処理回路グループについて、そのユニキャスト読取処理回路及びブロードキャスト処理回路は1つの共有データ送信インタフェースi0を共有し、図53でインタフェースi0は処理回路のユニキャスト読取処理回路0に接続されて、ユニキャスト読取処理回路0の返すユニキャスト読取データを受信するために用いることができ、また処理回路の複数のブロードキャスト処理回路iに接続されて、複数のブロードキャスト処理回路iの返すブロードキャスト及び/又はマルチキャストデータを受信するために用いることができる。
したがって、本実施例に示すデータ処理装置では、1つの処理回路グループ中のユニキャスト読取処理回路及びブロードキャスト処理回路が前記対応するインタフェースグループ中の1つの共有データ送信インタフェースを共有することにより、機械学習ユニットのデータ返しインタフェースの数量が一層低減され、ハードウェアリソースが一層節約され、ハードウェアの面積及び消費パワーが低減される。
選択可能な一形態では、図54に示すように、上記の図53をベースにして、機械学習ユニットにデータ返しインタフェースを共有しない少なくとも1つの演算ユニットが存在する可能性があって、したがって、前記機械学習ユニットの少なくとも1つの送信インタフェースは、少なくとも1つの独立したデータ受信インタフェースをさらに含んでもよく、前記独立したデータ受信インタフェースは前記機械学習ユニット中の1つの演算ユニットに接続され、前記第2伝送インタフェースは前記独立したデータ受信インタフェースに接続された独立したデータ送信インタフェースをさらに含み、前記演算ユニットは前記独立したデータ受信インタフェース及び前記独立したデータ送信インタフェースによって前記機械学習ユニットに対応する処理回路グループとの接続を実現する。例示的に、図54に示すように、MLU0については、複数の演算ユニットを含み、そのうち少なくとも1つの演算ユニットはインタフェースj0に接続され、他の演算ユニットはインタフェースc0にそれぞれ接続され、即ちインタフェースc0は上記の他の演算ユニットによって共有された共有データ受信インタフェースであり、インタフェースj0は独立したデータ受信インタフェースである。これに応じて、第2伝送インタフェース120にはインタフェースj0に接続された独立したデータ送信インタフェースh0がさらに含まれる。図54では、独立したデータ送信インタフェースh0はユニキャスト読取処理回路0及び複数のブロードキャスト処理回路iに接続されて、ユニキャスト読取データ、ブロードキャスト及び/又はマルチキャストデータを受信し、独立したデータ受信インタフェースj0によってデータ返しインタフェースを共有しない上記の演算ユニットに送信することができる。
選択可能な一形態では、図55に示すように、上記の図53をベースにして、各機械学習ユニットは前記処理回路のうちの1つのブロードキャスト処理回路を共有するようにしてもよい。当該共有されたブロードキャスト処理回路は各共有信号受信インタフェースgi及び各共有データ送信インタフェースiiに接続されてもよい。したがって、本実施例に示すデータ処理装置では、各機械学習ユニットは前記処理回路のうちの1つのブロードキャスト処理回路を共有することができるため、ブロードキャスト処理回路の数量が低減され、伝送回路が簡素化され、ハードウェアの面積及び消費パワーが低減される。
情報技術が発展し続けニーズが日々増えるのにつれて、データアクセス及びデータ処理に対する要求がますます高まり、これに伴ってデータを処理及びアクセスする一部のプロセッサの一層の高度化が求められる。汎用プロセッサを例とすると、複数の汎用プロセッサコア(例えば、CPUコア)からなるマルチコアプロセッサは、その優れた並行計算能力から、主流になる。
しかしながら、現在機械学習アルゴリズムが発展し続けるのにつれて、ますます多くのアーキテクチャの機械学習チップが次第に開発されてきているが、これらの機械学習チップは共有メモリ中のデータにアクセスし又はデータを処理する時には、データアクセスロジックが極めて複雑であるため、機械学習時のデータ処理効率が低下するという問題は常にある。
したがって、どのようにして機械学習チップのデータアクセスロジックを簡素化させるかは、当業者が早急に解決すべき技術的課題になる。
上記の問題を解决するために、本願は以下の技術的解決手段を提供する。
まず、本願のデータ処理装置を説明する。図56を参照すると、データ処理装置を提供し、当該データ処理装置はハードウェア又はソフトウェアとハードウェアの組み合わせとして実現してもよい。当該データ処理装置は機械学習データの処理を実行するために用いられる。図56に示すように、当該データ処理装置は、機械学習装置11と、伝送回路12と、共有メモリ13とを含み、ここで、機械学習装置11は第1伝送インタフェース14を介して伝送回路12に接続され、伝送回路12は共有メモリ13に接続される。
上記の伝送回路12は、機械学習装置の発したデータ操作信号に基づいて、共有メモリ13から機械学習装置11に必要な入力データを取得し、入力データを機械学習装置11に返すために用いられ、ここで、データ操作信号は共有メモリ13中のデータに対する操作方法を表す。
選択可能で、機械学習装置11は、入力データに基づいて機械学習演算を実行して、出力データを得るために用いられる。選択可能で、機械学習装置11は、さらに、出力データを伝送回路12によって共有メモリ13に伝送してデータを記憶させるために用いられる。具体的には、機械学習装置11がニューラルネットワーク演算を実行するために用いられる場合に、機械学習装置11は入力ニューロンデータ及び重み値データに基づいて人工ニューラルネットワーク演算を実行して、出力ニューロンデータを得、そして、出力ニューロンデータを新たな入力ニューロンデータとして、伝送回路12によって共有メモリ13に伝送してデータを記憶させるようにしてもよい。なお、上記の機械学習装置11、伝送回路12、共有メモリ13及び第1伝送インタフェース14はいずれもハードウェア回路として実現してもよい。例示的に、伝送回路12はブロードキャストバス(broadcast bus)であってもよく、共有メモリ13は非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されず、第1伝送インタフェース14は1つ又は複数のデータI/O(in/out、入力/出力)インタフェース又はI/Oピンに対応してもよい。
選択可能で、機械学習装置11は1つの第1伝送インタフェース14を含んでもよいし、複数の第1伝送インタフェースを含んでもよい。第1伝送インタフェース14は送信インタフェースであってもよいし、受信インタフェースであってもよい。第1伝送インタフェース14が送信インタフェースである場合に、機械学習装置11は送信インタフェースに接続された伝送回路12にデータ操作信号又はデータを送信することができ、第1伝送インタフェース14が受信インタフェースである場合に、機械学習装置11は伝送回路12の返すデータを受信することができる。
ここで、データ操作信号は共有メモリ13中のデータに対する操作方法を表す。選択可能な一形態では、具体的には、データ操作信号は共有メモリ13中のデータに読取操作を行うことを表してもよいし、共有メモリ13中のデータに書込操作を行うことを表してもよい。これに応じて、機械学習装置11の発したデータ操作信号が読取操作である場合に、伝送回路12は共有メモリ13から対応するアドレスに対応するデータを見つけて読み取り、これらのデータを少なくとも1つの機械学習装置11に返すことができ、機械学習装置11の発したデータ操作信号が書込操作である場合に、伝送回路12は機械学習装置11の出力した書込データを共有メモリ13に書き込むことができる。
上記の入力データは機械学習装置11が機械学習演算を実行する時に入力されるべきデータである。上記のデータはあらかじめ共有メモリ13に記憶されている初期データであってもよいし、機械学習装置11が機械学習演算を実行する時に出力した中間結果又は最終結果を、データとして共有メモリ13に書き込んだものであってもよい。
選択可能で、上記の入力データは入力ニューロンデータ及び/又は重み値データを含んでもよく、且つ当該入力ニューロンデータ及び重み値データは機械学習装置11が人工ニューラルネットワーク演算を実行する時に入力されるべきデータであり、これに応じて、上記の出力データは出力ニューロンデータを含んでもよく、且つ当該出力ニューロンデータは機械学習装置11が人工ニューラルネットワーク演算を実行する時に出力した中間結果又は最終結果である。
なお、本願によるデータ処理装置は、次の構成の少なくとも1種であってもよい。機械学習装置11は複数の第1伝送インタフェース14を介して1つの伝送回路12に接続されて、当該1つの伝送回路12を介して1つの共有メモリ13に接続されて、上記のデータを取得するようにしてもよい。選択可能で、機械学習装置11は複数の第1伝送インタフェース14を介して複数の伝送回路12に接続されて、これらの伝送回路12を介して1つの共有メモリ13に接続されて、上記のデータを取得するようにしてもよい。選択可能で、機械学習装置11は複数の第1伝送インタフェース14を介して1つの伝送回路12に接続されて、当該1つの伝送回路12を介して複数の共有メモリ13に接続されて、上記のデータを取得するようにしてもよい。
選択可能で、機械学習装置11が人工ニューラルネットワーク演算を実行する時は、多層ニューラルネットワーク演算について、フォワード演算かバックワード演算かに関わらず、機械学習装置11は各層のニューラルネットワークの出力したニューロンデータを計算してもよく、具体的には、各層のニューラルネットワークの入力端に対応する複数の入力ニューロンデータ及び重み値データに対し乗算、和演算、畳み込み演算及び活性化演算等、人工ニューラルネットワーク演算に含まれるべき一連の演算の集合を実行して、演算結果を得るようにしてもよい。機械学習装置11は人工ニューラルネットワーク演算により、カレント層の出力ニューロンデータを得た後、当該出力ニューロンデータを次の層のニューラルネットワークの入力ニューロンデータとして再度人工ニューラルネットワーク演算を実行してもよく、その前に、機械学習装置11がいつでも前記のカレント層の出力ニューロンデータを読み取って次の層の人工ニューラルネットワーク演算を行えるように、当該カレント層の出力ニューロンデータを伝送回路12によって共有メモリ13に書き込んで記憶させるようにしてもよい。
上記の実施例による機械学習演算を実行するためのデータ処理装置は、機械学習装置と、機械学習装置上の第1伝送インタフェースを介して接続された伝送回路と、伝送回路に接続された共有メモリとを含む。ここで、伝送回路は機械学習装置の発したデータ操作信号に基づいて、共有メモリから機械学習装置に必要な入力データを取得し、入力データを機械学習装置に返す。上記のデータ操作プロセスで、機械学習演算を実行する時に、大量のデータが共用されるため、これに基づいて、本願のデータ処理装置では相応する伝送回路を設けることで、機械学習装置による共有メモリからのデータの読み取り、データの書き込みを実現する。CPUによるメモリ中のデータの直接的アクセスという従来の方式では、CPUが並行演算を実行する時に並行データアクセスロジックが複雑のためブロッキング及びデッドロックが生じやすいという問題に対して、本願のデータ処理装置は機械学習装置による共有メモリに対するデータアクセスロジックを簡素化させており、データのアクセス効率が向上し、機械学習装置の機械学習演算速度が一層速くなる。
図56Aは本願の実施例による機械学習装置の構造模式図である。上記の実施例を踏まえて、図56Aを参照すると、当該機械学習装置11は少なくとも1つの機械学習ユニット15を含み、機械学習ユニット15は、少なくとも1つの演算ユニット151と、演算ユニット151に接続されたコントローラユニット152とを含み、演算ユニット151は1つの主処理回路151aと、複数の副処理回路151bとを含み、演算ユニット151は第1伝送インタフェース14によって伝送回路12に接続される。
ここで、上記のコントローラユニット152は、第1伝送インタフェース14の送信インタフェースによって伝送回路12にデータ操作信号を送信しデータを出力し、第1伝送インタフェース14の受信インタフェースによって、伝送回路12が共有メモリ13から取得した入力データを受信し、入力データを主処理回路151a及び/又は副処理回路151bに送信するために用いられ、主処理回路151aは、入力データを複数の副処理回路151bに分配するために用いられ、複数の副処理回路151bは、主処理回路151aの伝送したデータに基づいて並行して中間演算を実行して複数の中間結果を得、複数の中間結果を主処理回路151aに伝送するために用いられ、主処理回路151aは、さらに、複数の中間結果に後続の処理を実行して計算結果を得るために用いられる。
選択可能で、上記の機械学習装置11は1つの機械学習ユニット15を含んでもよく、このような機械学習装置11は機械学習装置11が人工ニューラルネットワーク演算を実行する時に、関連するニューラルネットワーク構造に含まれるニューロンの数量が比較的少ない場合に応用され、1つの機械学習ユニット15を用いて一括してニューラルネットワーク全体の演算を完了することができる。具体的には、演算プロセスは、機械学習ユニット15がニューラルネットワーク中の各層のニューロンに対応する入力ニューロンデータ及び重み値データに基づいて、人工ニューラルネットワーク演算を実行して、各層のニューロンに対応する出力ニューロンデータを得、そして、出力ニューロンデータを新たな入力ニューロンデータとして次の層のニューラルネットワーク演算を実行するようにして、ニューラルネットワーク全体の演算を完了し、最終的な演算結果を得るまで続けるようにしてもよい。このプロセスでは、機械学習装置11は機械学習ユニット15による各層の演算で得られた出力ニューロンデータ、又は最終的な演算結果を伝送回路12によって共有メモリ13に伝送してデータを記憶させるようにしてもよい。
選択可能で、機械学習装置11は複数の機械学習ユニット15を含んでもよく、このような機械学習装置11は機械学習装置11が人工ニューラルネットワーク演算を実行する時に、関連するニューラルネットワーク構造に多くのニューロンが含まれる場合に応用される。例えば、多層ニューラルネットワークの演算について、フォワード演算におけるある層のニューラルネットワーク演算を例に説明すると、対象層のニューロン数量が多い場合に、選択可能な計算方法で、上記の機械学習装置11はその複数の機械学習ユニット15を利用してそれぞれ並行して1層のニューラルネットワークにおける一部のニューロンの出力ニューロンデータを計算するようにしてもよい。例えば、1つの機械学習装置11が4つの機械学習ユニット15を含み、1層のニューラルネットワークが100個のニューロンを有する場合に、機械学習装置11が各機械学習ユニット15ごとに25個のニューロンを配分して処理させ、相応する出力ニューロンデータを対応して出力するようにしてもよい。このようにして層ごとにニューラルネットワークの並行計算を実行することで、ニューラルネットワーク計算の並行処理を実現でき、処理効率が向上する。
選択可能で、上記の機械学習ユニット15で、そのコントローラユニット152は1つのコマンド記憶ユニット152aと、1つのコマンド処理ユニット152bとを含んでもよい。選択可能で、コントローラユニット152は複数のコマンド記憶ユニット152aと、複数のコマンド処理ユニット152bとを含んでもよい。
ここで、コマンド記憶ユニット152aは、機械学習ユニット15が機械学習演算を実行する時に関連する全ての演算コマンド、及びデータ読み書き操作の実行に対応するデータ読み書き操作コマンドを記憶するために用いられ。ここで、コマンド処理ユニット152bは、コマンド記憶ユニット152a中の全てのコマンドを処理するために用いられ、具体的には、コマンド記憶ユニット152a中の演算コマンドを演算ユニット151に送信することで、演算ユニット151が演算コマンドに基づいて対応する演算操作を行うできるようにすること、そして、コマンド記憶ユニット152a中のデータ読み書き操作コマンドを解析して、データ操作信号を得、当該データ操作信号を第1伝送インタフェース14に送信することで、第1伝送インタフェース14が当該データ操作信号によって共有メモリ13からデータの読み書きを実行できるようにすることを含む。
選択可能で、上記の機械学習ユニット15において、その演算ユニット151は1つの主処理回路151aと、1つの副処理回路151bを含んでもよい。選択可能で、演算ユニット151は1つの主処理回路151aと、複数の副処理回路151bとを含んでもよい。このような構造設計は大量のデータを処理するシーン、特に機械学習演算中に大量の並行演算が必要なシーンに応用され、本願による当該演算構造は演算速度を向上させ、演算時間を短縮させて、消費パワーを低減することができる。
なお、上記の構造で各副処理回路151bは主処理回路151aの送信した入力データに基づいて、直接的に並行演算を実行してもよい。選択可能で、各副処理回路151bはコントローラユニット152の送信した入力データに基づいて、直接的に並行演算を実行してもよい。
上記の各演算ユニット151が1つの主処理回路151aと、複数の副処理回路151bとを有する場合には、各演算ユニット151の主処理回路151a及び複数の副処理回路151bは構造が同じでもよいし、異なってもよい。具体的には、主処理回路151a及び複数の副処理回路151bの構造はH型、シストリックアレイ型、及びツリー型構造の少なくとも1種を含んでもよい。
上記の実施例による機械学習装置は少なくとも1つの機械学習ユニットを含み、各機械学習ユニットは、少なくとも1つの演算ユニットと、演算ユニットに接続されたコントローラユニットとを含み、また、演算ユニットは1つの主処理回路と、複数の副処理回路とを含み、演算ユニットは第1伝送インタフェースによって伝送回路に接続される。上記の機械学習装置でコントローラユニットは第1伝送インタフェースの送信インタフェースによって伝送回路にデータ操作信号及び出力データを送信し、第1伝送インタフェースの受信インタフェースによって、伝送回路が共有メモリから取得した入力データを受信し、入力データを主処理回路及び/又は副処理回路に送信することができる。上記の機械学習装置に主処理回路及び複数の副処理回路が含まれるため、主処理回路は取得したデータを複数の副処理回路に同時に分配して、複数の副処理回路に並行して演算を実行させ、中間演算結果を主処理回路に返し、主処理回路が中間結果に演算を実行することで、機械学習演算を実現することができ、機械学習演算用のプロセッサはデータに演算を実行する処理回路が1種しなないという従来の形態と比べて、本願による機械学習装置はデータの操作及びデータの演算の速度が速い。
図57は本願の実施例による伝送回路の構造模式図である。図57を参照すると、当該伝送回路12は、第2伝送インタフェース120と、第2伝送インタフェース120に接続された少なくとも1つの読み書き処理回路121と、読み書き処理回路121に接続された調停回路122とを含み、少なくとも1つの機械学習ユニット15において、第1伝送インタフェース14と第2伝送インタフェース120との接続により、少なくとも1つの機械学習ユニット15と伝送回路12との接続が実現される。
上記の読み書き処理回路121は、少なくとも1つの機械学習ユニット15が第1伝送インタフェース14及び第2伝送インタフェース120によって送信したデータ操作信号を受信し、データ操作信号を前記調停回路122に伝送し、そして、共有メモリ13から読み取られたデータを第2伝送インタフェース120によって少なくとも1つの機械学習ユニット15に送信するために用いられ、上記調停回路122は、予め設定された調停規則に基づいて、少なくとも1つの読み書き処理回路121から受信したデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて、共有メモリ13中のデータを操作するために用いられる。
選択可能で、伝送回路12は複数の第2伝送インタフェース120を含んでもよく、第2伝送インタフェース120は送信インタフェースであってもよいし、受信インタフェースであってもよい。第2伝送インタフェース120が送信インタフェースである場合に、伝送回路12は当該送信インタフェースに接続された機械学習ユニット15にデータを送信することができ、第2伝送インタフェース120が受信インタフェースである場合に、伝送回路12は機械学習ユニット15が当該受信インタフェースに送信したデータ操作信号及び/又はデータを受信することができる。選択可能で、第2伝送インタフェース120の送信インタフェースは第1伝送インタフェース14のうちの受信インタフェースに接続され、第2伝送インタフェース120の受信インタフェースは第1伝送インタフェース14のうちの送信インタフェースに接続される。
選択可能で、図57Aを参照すると、当該伝送回路12は複数の読み書き処理回路121を含んでもよく、且つ当該複数の読み書き処理回路121の入力端は複数の第2伝送インタフェース120と一対一で接続されてもよい。選択可能で、図2Bを参照すると、当該伝送回路12が1つの読み書き処理回路121のみを含んでもよく、且つ当該1つの読み書き処理回路121の入力端は複数の第2伝送インタフェース120と一対多で接続され、即ち1つの読み書き処理回路121は複数の第2伝送インタフェース120に対応して接続される。
選択可能で、上記の複数の読み書き処理回路121が複数の第2伝送インタフェース120と一対一で接続される場合に、各読み書き処理回路121はいずれもデータをそれに接続された1つの第2伝送インタフェース120によって1つの機械学習ユニット15に送信するか、データをそれに接続された1つの第2伝送インタフェース120によって複数の機械学習ユニット15に送信することができる。上記の1つの読み書き処理回路121が複数の第2伝送インタフェース120と一対多で接続される場合に、当該読み書き処理回路121はデータをそれに接続された複数の第2伝送インタフェース120によって複数の機械学習ユニット15に送信するか、データをそのうちの1つの第2伝送インタフェース120によって1つの機械学習ユニット15に送信することができる。
選択可能で、上記の伝送回路12の構造には、1つの調停回路122を含んでもよく、且つ当該調停回路122の入力端は複数の読み書き処理回路121に接続されてもよい。当該調停回路122の出力端は共有メモリ13に接続され、選択可能で、他のメモリデバイス又はコントロールデバイスに接続されてもよい。
上記の実施例から分かるように、本願に係る伝送回路12は複数の読み書き処理回路121を含んでもよく、これに応じて、当該複数の読み書き処理回路121はタイプが同じでもよいし、異なってもよく、以下の実施例は読み書き処理回路121のタイプ、及び読み書き処理回路121の受信したデータ信号のタイプに基づいてデータの伝送方法を詳細に説明する。
具体的には、読み書き処理回路121は、ユニキャスト読取処理回路、ユニキャスト書込処理回路、ブロードキャスト処理回路の少なくとも1種の処理回路を含んでもよく、データ操作信号は、ユニキャスト読取要求、ユニキャスト書込要求、ユニキャスト読取コマンド、ユニキャスト書込コマンド、マルチキャストコマンド、ブロードキャストコマンドの少なくとも1種を含む。
ここで、ユニキャストタイプの処理回路はユニキャストタイプの信号を処理するために用いられ、例えば、上記の実施例でユニキャスト読取処理回路は対応するユニキャスト読取要求又はユニキャスト読取コマンドを処理することができ、ユニキャスト書込処理回路は対応するユニキャスト書込要求又はユニキャスト書込コマンドを処理することができる。これに応じて、マルチキャスト/ブロードキャストタイプの処理回路はマルチキャスト又はブロードキャストタイプの信号を処理するために用いられ、例えば、上記の実施例でブロードキャスト処理回路は対応するマルチキャストコマンド又はブロードキャストコマンドを処理することができる。
なお、データ操作信号がコマンドタイプの信号であり、即ち本実施例に係るユニキャスト読取コマンド、ユニキャスト書込コマンド、マルチキャストコマンド、ブロードキャストコマンドである場合に、読み書き処理回路121は、具体的に、コマンドタイプの信号を解析して、要求タイプの信号を生成し、要求タイプの信号を調停回路122に伝送するために用いられ、データ操作信号が要求タイプの信号であり、即ち本実施例に係るユニキャスト読取要求、ユニキャスト書込要求である場合に、読み書き処理回路121は、当該要求タイプの信号に一時的記憶操作を実行し、当該要求タイプの信号を調停回路122に送信するために用いられる。
選択可能で、データ操作信号がマルチキャストコマンドである場合に、当該マルチキャストコマンドにはデータを受信するべき複数の目標機械学習ユニットの識別子が担持されており、伝送回路12の読み書き処理回路121が1つのマルチキャストコマンドを受信した時、読み書き処理回路121は当該マルチキャストコマンドに担持された識別子に基づいて、複数の目標機械学習ユニットを認識し、最後に、返すべきデータを認識された複数の目標機械学習ユニットに送信することができる。
選択可能で、データ操作信号がブロードキャストコマンドである場合に、当該ブロードキャストコマンドにはデータを受信する目標機械学習ユニットの識別子が1つも担持されなくてもよいが、読み書き処理回路121が1つのブロードキャストコマンドを受信した時、読み書き処理回路121は調停回路122が共有メモリ13から取得したデータを、機械学習装置11に含まれる全ての機械学習ユニット15に送信することができる。
選択可能で、予め設定された調停規則は、調停回路122が特定の規則に従って複数のデータ操作信号の優先度を決定することで、調停回路122が各データ操作信号の優先度に基づいて調停が成功したデータ操作信号を決定できるようにするために用いられる。例えば、1#読み書き処理回路121の送信したデータ操作信号の伝送速度が2#読み書き処理回路121の送信したデータ操作信号の伝送速度より大きい場合に、調停回路122は伝送速度の速いデータ操作信号の優先度を高優先度に設定し、伝送速度の遅いデータ操作信号の優先度を低優先度に設定することができ、その後、調停回路122は上記の優先度に基づいて、高優先度のデータ操作信号を選択して次のステップの操作を実行し、即ち当該データ操作信号に基づいて共有メモリ13からデータを取得することができる。
上記の実施例では、伝送回路は、第2伝送インタフェースと、第2伝送インタフェースに接続された少なくとも1つの読み書き処理回路と、読み書き処理回路に接続された調停回路とを含み、共有メモリから読み取られたデータを第2伝送インタフェースによって少なくとも1つの機械学習ユニットに送信し、ここで、読み書き処理回路は少なくとも1つの機械学習ユニットが第1伝送インタフェース及び第2伝送インタフェースによって送信したデータ操作信号を受信し、データ操作信号を調停回路に伝送することができ、このようにして調停回路は予め設定された調停規則に基づいて、少なくとも1つの読み書き処理回路から受信されたデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて共有メモリ中のデータを操作することができるようになる。上記の伝送回路では、複数の読み書き処理回路は複数の第2伝送インタフェースを介して機械学習装置に接続され、調停回路により調停を実行することにより、データの効果的な伝送を実現し、機械学習装置が複数のデータ操作信号を同時に送信する場合にデータの抵触及びブロッキングが生じやすいような状況が避けられ、また、本実施例による伝送回路は様々なタイプのコマンド又は要求を処理することができ、データ処理装置の応用範囲が大幅に拡大される。
一実施例では、上記の実施例に係るデータ処理装置は少なくとも1つのクラスタに分割されてもよく、各クラスタは複数の機械学習ユニット15と、1つの伝送回路12と、少なくとも1つの共有メモリ13とを含み、複数のクラスタが存在する応用シーンでは、図58に示すように、伝送回路12は、所在のクラスタ内の調停回路122及びクラスタ内の共有メモリ13に接続された第1タイプのダイレクトメモリアクセスコントローラDMA123、及び/又は、所在のクラスタ内の調停回路122及び他のクラスタ内の共有メモリ13に接続された第2タイプのDMA124をさらに含んでもよい。
上記の第1タイプのDMA123は、クラスタ内の調停回路122とクラスタ内の共有メモリ13とのデータ交換を制御するために用いられ、第2タイプのDMA124は、クラスタ内の調停回路122と他のクラスタ内の共有メモリ13とのデータ交換、及びクラスタ内の調停回路122とチップ外メモリとのデータ交換を制御するために用いられる。
選択可能で、第1タイプのDMA123及び第2タイプのDMA124の主な機能は調停回路122が少なくとも1つの共有メモリ13に接続されるよう制御することであり、且つ、接続された少なくとも1つの共有メモリ13から速やかにデータを読み取り又はデータを書き込むことを実現することができることである。
伝送回路に第1タイプのDMA123又は第2タイプのDMA124が存在する場合に、図59に示すように、本願による伝送回路12は、第1タイプのDMA123に接続された第1選択伝送回路125と、第2タイプのDMAに接続された第2選択伝送回路126とをさらに含んでもよく、ここで、第1選択伝送回路125は、所在のクラスタ内の共有メモリ13に選択的に接続するために用いられ、第2選択伝送回路126は、所在のクラスタ内及び他のクラスタ内の共有メモリ13、並びにチップ外メモリに選択的に接続するために用いられる。
選択可能で、第1選択伝送回路125及び第2選択伝送回路126は、例えば、クロススイッチ、シフトスイッチ等タイプの回路であって、且つ、オンオフ電流又はオンオフ信号を設けることで各回路同士が接続されるか否かを制御できる回路であってもよい。本実施例ではこれについて限定しない。
選択可能で、図60を参照すると、伝送回路12が共有メモリ13にデータを書き込み、又は共有メモリ13が読み取られたデータを伝送回路12に返す時には、伝送回路12はまず書き込むべきデータ又は返すべきデータを一時的に記憶して処理に備えてもよく、このような応用シーンにおいては、本願による伝送回路12は、調停回路122及び共有メモリ13に接続されたキャッシュ回路127をさらに含んでもよく、当該キャッシュ回路は調停回路122が共有メモリ13から取得したデータを一時的に記憶し、且つ調停回路122が共有メモリ13に書き込むデータを一時的に記憶するために用いられる。
選択可能で、キャッシュ回路127は、データ交換のためのバッファエリアを提供するために用いられ、キャッシュ回路はランダムアクセスメモリ(random access memory、RAM)であってもよく、これに関しては従来の技術であるため、ここで詳細は再度説明しない。
本願によるデータ処理装置について、各回路間のデータ伝送帯域幅が異なってもよく、選択可能で、伝送回路12と共有メモリ13との間の伝送帯域幅が、伝送回路12と機械学習ユニット15との間の伝送帯域幅より大きい。
例えば、1つの機械学習装置11がN(Nは1以上の整数)個の機械学習ユニット15と、1つの伝送回路12と、1つの共有メモリ13とを含み、伝送回路12と各機械学習ユニット15との間の帯域幅がMであると仮定すると、伝送回路12中のブロードキャスト処理回路と共有メモリ13との間の帯域幅をM*Nに設定してもよい。このような設計の利点は極端な場合に抵触が避けられることであり、例えば、複数の機械学習ユニット15が同時に伝送回路12にブロードキャストコマンドを送信する場合に、伝送回路12の調停回路122が共有メモリ13にこれらのコマンドを順次送信する時は、帯域幅が十分であるため抵触が生じにくい。また、伝送回路12中の調停回路122が予め設定された調停規則に従って、優先度が比較的高いブロードキャストコマンドを選択して処理を行った後、共有メモリ13がデータを返すのを待つと同時に、続いて別のブロードキャストコマンドを処理してもよく、このような設計はデータ処理の時間を短縮し、且つデータ伝送の帯域幅を効果的に利用することができる。なお、実際の回路設計において、伝送回路12と共有メモリ13との間の帯域幅については、伝送回路12と各機械学習ユニット15との間の帯域幅の2倍、4倍、6倍等であってもよく、伝送回路12と各機械学習ユニット15との間の帯域幅より大きいことを満たしていれば、本実施例では特に限定しない。
現在、人工ニューラルネットワークが発展し続けるのにつれて、ますます多くのマルチアーキテクチャの機械学習チップが開発されてきており、これらの機械学習チップはメモリ中のデータにアクセスし又はデータを処理する時は、機械学習チップに大量のデータが必要であり、且つ機械学習チップのデータ処理速度に対する要求が高いため、データアクセス又は操作を行う過程で、一般的にハードウェアの数量を増やすことでデータ伝送の帯域幅を高め、データ処理速度を向上させて、機械学習チップのデータ処理速度に対する高い要求という要件を満たす。
しかしながら、上記の方法を用いる場合には、機械学習チップがデータアクセス又は操作を行う時に、ハードウェアオーバーヘッドが大きいこと、ハードウェアの冗長性を招く。
上記の問題を解决するために、本願は以下の技術的解決手段を提供する。
本願の実施例によるデータ処理装置は、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの組み合わせとして実現してもよく、当該データ処理装置は図61に示す内容の一部又はその全てであってもよい。当該データ処理装置は機械学習データの処理を実行するために用いられ、データ処理装置は、機械学習装置11と、伝送回路12と、共有メモリ13とを含んでもよく、伝送回路12は複数の読み書き処理回路121と、1つの調停回路122とを含み、調停回路122は複数の機械学習ユニット15の送信したデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて共有メモリ13から機械学習装置11に必要な入力データを取得するために用いられ、読み書き処理回路121は調停が成功したデータ操作信号に担持されたアドレス情報又はデータ操作信号のタイプに基づいて、複数の機械学習ユニットの中から目標機械学習ユニット又は目標演算ユニットを決定し、そして、入力データを目標機械学習ユニット又は目標演算ユニットに返すために用いられ、機械学習装置11は複数の機械学習ユニット15を含み、各機械学習ユニット15は少なくとも1つの演算ユニット151を含み、複数の機械学習ユニットは第1伝送インタフェース14によって伝送回路12に接続され、伝送回路12は共有メモリ13に接続される。
選択可能で、前記機械学習装置11は入力データに基づいて機械学習演算を実行して、出力データを得るために用いられてもよい。選択可能で、前記機械学習装置11は、さらに、出力データを伝送回路12によって共有メモリ13に伝送してデータを記憶させるために用いられてもよい。具体的には、機械学習装置11がニューラルネットワーク演算を実行するために用いられる場合に、機械学習装置11は入力ニューロンデータ及び重み値データに基づいて人工ニューラルネットワーク演算を実行して、出力ニューロンデータを得、そして、出力ニューロンデータを新たな入力ニューロンデータとして、伝送回路12によって共有メモリ13に伝送してデータを記憶させるようにしてもよい。
なお、上記の機械学習ユニット、伝送回路、共有メモリ及び様々なタイプのインタフェースはいずれもハードウェア回路として実現してもよい。例示的に、伝送回路はブロードキャストバス(broadcast bus)であってもよく、共有メモリは非揮発性及び/又は揮発性メモリであってもよく、ランダムアクセスメモリ(RAM)、高速キャッシュメモリ等を含むが、これらに限定されず、様々なタイプのインタフェースは1つ又は複数のデータI/O(in/out、入力/出力)インタフェース又はI/Oピンに対応してもよい。
図61を参照すると、選択可能な一形態では、上記の機械学習装置11は複数の機械学習ユニット15を含んでもよい。多層ニューラルネットワークの演算については、フォワード演算中のある層のニューラルネットワークの計算を例として説明する。一実施形態では、上記の機械学習装置は複数の機械学習ユニット(MLU、Machine Learning Unit)によって並行してニューラルネットワーク中の当該層の全てのニューロンの出力ニューロンデータを計算することができる。例示的に、当該機械学習装置が4つの機械学習ユニットを含み、当該層ニューラルネットワークが100個のニューロンを有する場合に、各機械学習ユニットごとに25個のニューロンを配分して処理させるようにしてもよく、対応する演算コマンドを設定することで実現することができ、当該プロセスでは、各機械学習ユニットはいずれも伝送回路によって、配分された当該層の25個のニューロンのそれぞれに対応する入力ニューロンデータ及び重み値データを共有メモリから取得して、これを用いて計算して配分された当該層の25個のニューロンの出力ニューロンデータを算出し、配分された当該層の25個のニューロンの出力ニューロンデータを伝送回路によって共有メモリに伝送して記憶させることができる。なお、上記の各機械学習ユニットはその配分された当該層の複数のニューロンデータを処理する時に、並行して計算して処理することができ、このようにして層ごとにニューラルネットワークの並行計算を実行することで、ニューラルネットワーク計算の並行処理を実現でき、処理効率が向上する。
複数の機械学習ユニット15が同時に第1伝送インタフェース14によって伝送回路12にデータ操作信号を送信する場合に、第1伝送インタフェース14によって読み書き処理回路121にデータ操作信号を送信してもよく、読み書き処理回路121は1つの読み書き処理回路であってもよいし、複数の読み書き処理回路であってもよく、読み書き処理回路121が複数の読み書き処理回路である場合に、1つの機械学習ユニット15が1つの読み書き処理回路に対応してもよいし、1つの機械学習ユニット15が複数の読み書き処理回路に対応してもよい。読み書き処理回路121がデータ操作信号を調停回路122に送信し、調停回路122が複数のデータ操作信号を調停し、調停が成功したデータ操作信号に基づいて、共有メモリ13からデータ操作信号に対応する機械学習ユニットに必要な入力ニューロンデータ及び重み値データを取得する。読み書き処理回路121はデータ操作信号に担持されたアドレス情報、又はデータ操作信号のタイプに基づいて、目標機械学習ユニット、又は目標演算ユニットを決定し、入力ニューロンデータ及び重み値データを目標機械学習ユニット、又は目標演算ユニットに返す。
例示的に、機械学習装置は機械学習ユニット0、機械学習ユニット1、機械学習ユニット2及び機械学習ユニット3の4つの機械学習ユニットを含み、読み書き処理回路0、読み書き処理回路1、読み書き処理回路2及び読み書き処理回路3の4つの読み書き処理回路にそれぞれ対応するとする。ここで、機械学習ユニット0、機械学習ユニット1、機械学習ユニット2及び機械学習ユニット3は第1伝送インタフェース14によって読み書き処理回路0、読み書き処理回路1、読み書き処理回路2及び読み書き処理回路3にそれぞれデータ操作信号を送信する。読み書き処理回路0にデータ操作信号0を送信し、読み書き処理回路1にデータ操作信号1を送信し、読み書き処理回路2にデータ操作信号2を送信し、読み書き処理回路3にデータ操作信号3を送信するようにしてもよい。読み書き処理回路0、読み書き処理回路1、読み書き処理回路2及び読み書き処理回路3はデータ操作信号0、データ操作信号1、データ操作信号2及びデータ操作信号3をそれぞれ調停回路122に送信して調停させ、調停回路122は複数のデータ操作信号を調停して、データ操作信号2を調停が成功したデータ操作信号として決定し、データ操作信号2に基づいて、共有メモリ13から入力ニューロンデータ及び重み値データを取得し、読み書き処理回路2はデータ操作信号2に担持された、機械学習ユニット1及び機械学習ユニット2のアドレスを含むアドレス情報に基づいて、目標機械学習ユニットを機械学習ユニット1及び機械学習ユニット2に決定し、データ操作信号2に基づく入力ニューロンデータ及び重み値データを機械学習ユニット1及び機械学習ユニット2に返す。
選択可能な別の形態では、上記の機械学習装置は複数の機械学習ユニットを利用して特定の順番に従ってニューラルネットワーク中の各層の全てのニューロンの出力ニューロンデータをそれぞれ算出してもよい。当該プロセスでは、前の機械学習ユニットが当該層の全てのニューロンの出力ニューロンデータを伝送回路によって共有メモリに伝送して記憶させて、これにより次の機械学習ユニットは当該層の全てのニューロンの出力ニューロンデータを抽出して次の層の入力ニューロンデータとして計算を実行できるようにしてもよい。なお、上記の構成は各層のニューラルネットワークの計算量が多くないシーン、例えば、各層のニューロン数目が比較的少ないニューラルネットワークの計算に応用することを理解されたい。
図62を参照して、機械学習ユニット15について詳細に説明する。一形態では、機械学習ユニット15は、少なくとも1つの演算ユニット151と、演算ユニット151に接続されたコントローラユニット152とを含んでもよく、演算ユニット151は1つの主処理回路151aと、複数の副処理回路151bとを含んでもよく、演算ユニット151は第1伝送インタフェース14によって伝送回路12に接続される。
コントローラユニット152は、第1伝送インタフェース14によって伝送回路12にデータ操作信号及び出力ニューロンデータを送信し、且つ第1伝送インタフェース14によって伝送回路12が共有メモリ13から取得した入力ニューロンデータ及び重み値データを受信し、入力ニューロンデータ及び重み値データを主処理回路151a及び/又は副処理回路151bに送信するために用いられる。
主処理回路151aは、入力ニューロンデータ及び重み値データを複数の副処理回路151bに分配するために用いられ、複数の副処理回路151bは、ニューロンデータ及び重み値データに基づいて、並行して中間演算を実行して複数の中間結果を得、複数の中間結果を主処理回路151aに伝送するために用いられ、主処理回路151aは、さらに、複数の中間結果に後続の処理を実行して計算結果を得るために用いられ、後続の処理は活性化演算を含む。具体的には、当該コントローラユニット152は、さらに、計算コマンドを取得し、当該計算コマンドを解析して複数の演算コマンドを得、当該複数の演算コマンドを主処理回路に送信するようにしてもよい。
なお、本実施例では、機械学習ユニットは複数の演算ユニットを含み、各演算ユニットは上記の第1伝送インタフェースによってデータを送受信できることを理解されたい。
例えば、選択可能な一形態では、主処理回路はコントローラユニットを含んでもよく、当該コントローラユニットは、演算コマンドをマイクロコマンドに復号するための主コマンド処理ユニットを含んでもよい。また、選択可能な別の形態では、副処理回路は別のコントローラユニットを含んでもよく、当該別のコントローラユニットは、マイクロコマンドを受信及び処理するための副コマンド処理ユニットを含む。上記のマイクロコマンドはコマンドの下位コマンドであってもよく、当該マイクロコマンドはコマンドに対する区分又は復号により得ることができ、さらに各デバイス、各ユニット又は各処理回路の制御信号に復号されることが可能である。例えば、積算マイクロコマンドは畳み込みコマンドの下位コマンドである。
本実施例による機械学習データ処理を実行するためのデータ処理装置は、機械学習装置と、伝送回路と、共有メモリとを含み、伝送回路は複数の読み書き処理回路と、1つの調停回路を含み、機械学習装置は複数の機械学習ユニットを含み、各機械学習ユニットは少なくとも1つの演算ユニットを含み、複数の機械学習ユニットは第1伝送インタフェースによって伝送回路に接続され、伝送回路は共有メモリに接続される。本実施例では、データ処理装置が調停回路によって複数の機械学習ユニットの送信したデータ操作信号を調停し、調停結果に基づいて共有メモリから機械学習装置に必要な入力ニューロンデータ及び重み値データを取得することにより、データ処理装置がデータ操作を行う時、複数の機械学習ユニットは1つの伝送回路によって共有メモリにデータを操作し、調停回路によって複数のデータ操作信号を調停することができ、ハードウェアオーバーヘッドが低減されるとともに、複数のデータ操作信号のブロッキングが避けられる。
一実施例では、引き続き図61を参照すると、読み書き処理回路は、ユニキャスト読取処理回路、ブロードキャスト処理回路の任意の1種を含み、データ操作信号は、ユニキャスト読取要求、ユニキャスト読取コマンド、マルチキャストコマンド、ブロードキャストコマンドの少なくとも1種を含み、ここで、ユニキャストタイプの処理回路はユニキャストタイプの信号を処理するために用いられ、ブロードキャストタイプの処理回路はマルチキャスト又はブロードキャストタイプの信号を処理するために用いられる。
例示的に、ユニキャスト読取コマンドはある機械学習ユニットの送信した共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであり、ユニキャスト読取コマンドによって上記の機械学習ユニットに入力ニューロンデータ及び重み値データを返すことができ、当該入力ニューロンデータ及び重み値データは当該機械学習ユニットが計算コマンドに基づいて、ある層の配分されたニューロンの計算中に当該配分されたニューロンに必要な入力ニューロンデータ及び重み値データであり、ブロードキャストコマンドはある機械学習ユニットの送信した、共有メモリ中のソースアドレスの入力ニューロンデータ及び重み値データに対する読取コマンドであり、ブロードキャストコマンドによって上記の機械学習装置中の全ての機械学習ユニットに当該入力ニューロンデータ及び重み値データを返すことができ、当該入力ニューロンデータはある層の全てのニューロンに必要な入力ニューロンデータ、即ち前の層の全ての出力ニューロンデータであってもよく、当該重み値データは繰り返し使用される重み値データ、例えば、畳み込みカーネルであってもよく、マルチキャストコマンドとブロードキャストコマンドの違いは、マルチキャストコマンドのデータ返し対象は上記の機械学習装置中の全ての機械学習ユニットではなく、当該マルチキャストコマンドのフラグフィールドに対応する複数の機械学習ユニットであることにある。また、一般には、コマンドと要求の相違点は、コマンドを実行するのにオーバーヘッドが高いが、コマンドに多くの情報が含まれ、要求を実行するのにオーバーヘッドが少ないが、要求に少ない情報が含まれることである。
上記の実施例では、データ処理装置が調停回路によって複数の機械学習ユニットの送信したデータ操作信号を調停し、調停結果に基づいて共有メモリから機械学習装置に必要な入力ニューロンデータ及び重み値データを取得することにより、データ処理装置がデータ操作を行う時、複数の機械学習ユニットは1つの伝送回路によって共有メモリにデータを操作することができ、ハードウェアオーバーヘッドが低減され、ハードウェアの冗長性が避けられる。下記の実施例を用いて、調停モジュールはどのようにして複数の読み書き処理回路の送信したデータ操作信号の優先度を決定するかの具体的に過程を説明する。
一実施例では、前記調停回路122は、具体的に、複数の読み書き処理回路121の送信したデータ操作信号の優先度を決定し、優先度が最高のデータ操作信号を調停が成功したデータ操作信号とするために用いられる。
ここで、調停回路122は予め設定された規則に従って複数のデータ操作信号の優先度を決定することができるため、調停回路122が各データ操作信号の優先度に基づいて操作すべき対象、即ち調停が成功したデータ操作信号を決定することができる。また、各データ操作信号の送信時間を調停のための基準としてもよいし、各データ操作信号に担持された伝送速度情報を調停のための基準としてもよい。例えば、読み書き処理回路1がデータ操作信号を送信した時間がT時刻であり、読み書き処理回路2がデータ操作信号を送信した時間がT+1時刻である場合に、データ操作信号の送信時間を調停のための基準として、読み書き処理回路1の送信したデータ操作信号を高優先度のデータ操作信号、即ち調停が成功したデータ操作信号とする。調停回路122は調停結果に従って、読み書き処理回路1の送信した調停が成功したデータ操作信号に基づいて、共有メモリ13からデータを取得する。
本実施例によるデータ処理装置は、調停回路によって複数の読み書き処理回路の送信したデータ操作信号の優先度を決定し、優先度が最高のデータ操作信号を調停が成功したデータ操作信号とする。複数のデータ操作信号を同時に受信した場合に、調停回路により1つの実行可能なデータ操作信号を決定することで、複数のデータ操作信号を同時に実行することでデータブロッキングが起きるような状況が避けられ、さらには、複数の機械学習ユニットが1つの伝送回路によって共有メモリにデータ操作を行うことができ、ハードウェアオーバーヘッドが低減され、ハードウェアの冗長性が避けられる。
一実施例では、調停回路122は、具体的に、複数の読み書き処理回路121の送信したデータ操作信号の優先度が同じである場合に、複数のデータ操作信号のタイプ及び予め設定された実行条件に基づいて、調停が成功したデータ操作信号を決定するために用いられる。
ここで、上記の実施例を踏まえ、複数の読み書き処理回路121の送信したデータ操作信号の優先度が同じである場合に、調停回路122は複数のデータ操作信号のタイプ及び予め設定された実行条件に基づいて、調停が成功したデータ操作信号を決定することができる。
ここで、予め設定された実行条件はデータ操作信号に対応するデータ伝送チャネルがアイドルであるか否かを検出することで、調停結果を決定することであってもよい。データ伝送チャネルがアイドルである場合に、当該データ伝送チャネルに対応するデータ操作信号を調停が成功したデータ操作信号として調停する。また、データ操作信号に担持された送信時間情報に基づいて調停結果を決定してもよい。例示的に、調停回路122が、データ操作信号0、データ操作信号1、データ操作信号2及びデータ操作信号3の4つのデータ操作信号を受信し、ここで、データ操作信号1及びデータ操作信号2は優先度が同じであり、データ操作信号1はユニキャスト読取コマンドであり、データ操作信号2はブロードキャストコマンドである場合に、データ操作信号1に担持されたアドレス情報に基づいて、機械学習ユニット1を目標機械学習ユニットとして決定し、データ操作信号2のタイプに基づいて機械学習ユニット0、機械学習ユニット1、機械学習ユニット2及び機械学習ユニット3を目標機械学習ユニットとして決定し、この場合に、機械学習ユニット0、機械学習ユニット1及び機械学習ユニット2のデータチャネルがアイドルであり、機械学習ユニット3のデータチャネルがビジーであれば、調停回路122は、データ操作信号1がユニキャスト読取コマンドであり、データ操作信号2がブロードキャストコマンドであり、機械学習ユニット3のデータチャネルがビジーであることに基づいて、データ操作信号1を調停が成功したデータ操作信号として決定する。
選択可能で、データ操作信号がユニキャストタイプの信号である場合に、上記の実行条件はユニキャストタイプの信号を送信する機械学習ユニットのチャネルがアイドルであり、又はユニキャストタイプの信号を送信する機械学習ユニット中の演算ユニットのチャネルがアイドルであることを含む。
選択可能で、データ操作信号がマルチキャストタイプの信号である場合に、上記の実行条件は、マルチキャストタイプの信号を送信する機械学習ユニットのチャネルがアイドルであり、且つマルチキャストタイプの信号に指定された目標機械学習ユニットのチャネルがアイドルであること、又は、マルチキャストタイプ信号を送信する機械学習ユニット中の演算ユニットのチャネルがアイドルであり、且つマルチキャストタイプの信号に指定された目標演算ユニットのチャネルがアイドルであることを含む。
選択可能で、データ操作信号がブロードキャストタイプの信号である場合に、上記の実行条件は、ブロードキャストタイプの信号を送信する機械学習ユニットのチャネルがアイドルであり、且つ残りの他の機械学習ユニットのチャネルがアイドルであること、又は、ブロードキャストタイプの信号を送信する機械学習ユニット中の演算ユニットのチャネルがアイドルであり、且つ残りの他の機械学習ユニット中の演算ユニットのチャネルがアイドルであることを含む。
本実施例によるデータ処理装置は、複数の読み書き処理回路の送信したデータ操作信号の優先度が同じである場合に、調停回路は複数のデータ操作信号のタイプ及び予め設定された実行条件に基づいて、調停が成功したデータ操作信号を決定することができる。本例では、データ操作信号の優先度が同じである場合に、データ操作信号のタイプ及び予め設定された実行条件により、調停が成功したデータ操作信号を決定することにより、複数のデータ操作信号を同時に実行することでデータブロッキングが起きるような状況が一層避けられ、さらには、複数の機械学習ユニットが1つの伝送回路によって共有メモリにデータ操作を行うことができ、ハードウェアオーバーヘッドが低減され、ハードウェアの冗長性が避けられる。
一実施例では、図63に示すように、伝送回路12は第2伝送インタフェース120をさらに含み、第2伝送インタフェース120のうちの各インタフェースは第1伝送インタフェース14のうちの各インタフェースに一対一で接続され、且つ1つの機械学習ユニット15は1つの読み書き処理回路121に対応して接続される。
ここで、第1伝送インタフェース14はデータ操作信号を第2伝送インタフェース120によって対応する読み書き処理回路121に送信することができ、伝送回路12は返された機械学習装置に必要な入力ニューロンデータ及び重み値データを第2伝送インタフェース120によって第1伝送インタフェース14に返し、第1伝送インタフェース14によって目標機械学習ユニット又は目標演算ユニットに返すことができる。第1伝送インタフェース14は1つのインタフェースを含んでもよいし、複数のインタフェースを含んでもよく、第2伝送インタフェース120は1つのインタフェースを含んでもよいし、複数のインタフェースを含んでもよい。例示的に、第1伝送インタフェース14が1つの送信インタフェース141と、1つのデータ受信インタフェース142とを含む場合に、第2伝送インタフェース120は1つの送信インタフェース141及び1つの返しインタフェース142に対応する第2受信インタフェース1201及び第2返しインタフェース1202を含む。
選択可能で、図64に示すように、1つの機械学習ユニット15中の複数の演算ユニット151は第1伝送インタフェース14のうちの1つの送信インタフェース141を共有し、且つ各演算ユニット毎に1つのデータ受信インタフェース142に対応する。
ここで、1つの機械学習ユニット15が複数の演算ユニット151を含む場合に、複数の演算ユニット151は第1伝送インタフェース14の1つの送信インタフェース141を共有してもよく、1つの機械学習ユニット15中の複数の演算ユニット151は共有された送信インタフェース141によってデータ操作信号を伝送回路12に送信し、伝送回路12は取得された入力ニューロンデータ及び重み値データを、目標演算ユニット151に対応するデータ受信インタフェース142によって目標演算ユニットに返す。
したがって、本実施例によるデータ処理装置は、1つの機械学習ユニット中の複数の演算ユニットが前記第1伝送インタフェースのうちの1つの送信インタフェースを共有し、且つ各演算ユニット毎に1つのデータ受信インタフェースに対応することで、機械学習ユニット中のデータ操作信号送信インタフェースの数量を効果的に低減し、ハードウェアリソースを節約し、ハードウェアの面積及び消費パワーを低減することができる。
一実施例では、図65に示すように、1つの機械学習ユニット15中の複数の演算ユニット151はそれぞれ前記第1伝送インタフェースのうちの1つの送信インタフェース141及び1つのデータ受信インタフェース142に対応する。
ここで、図65に示すように、1つの演算ユニット151は1つの送信インタフェース141及び1つのデータ受信インタフェース142に対応してもよく、演算ユニット151はその対応する送信インタフェース141によってデータ操作信号を伝送回路12に送信し、伝送回路12は取得された入力ニューロンデータ及び重み値データを対応するデータ受信インタフェース142によって対応する目標演算ユニット151に返す。例示的に、演算ユニット1は送信インタフェース1及びデータ受信インタフェース1に対応し、演算ユニット2は送信インタフェース2及びデータ受信インタフェース2に対応し、演算ユニット1は送信インタフェース1によってデータ操作信号を伝送回路12に送信し、伝送回路12はデータ操作信号に基づいて目標演算ユニットを演算ユニット1及び演算ユニット2に決定する場合に、伝送回路は取得された入力ニューロンデータ及び重み値データをデータ受信インタフェース1及びデータ受信インタフェース2によって演算ユニット1及び演算ユニット2に返す。
したがって、本実施例に示すデータ処理装置では、1つの機械学習ユニット中の複数の演算ユニットはそれぞれ前記第1伝送インタフェースのうちの1つの送信インタフェース及び1つのデータ受信インタフェースに対応し、複数の演算ユニットと第1伝送インタフェースのうちの送信インタフェース及びデータ受信インタフェースとの一対一での対応により、データ伝送中の制御ロジックを効果的に簡素化することができる。
一実施例では、図66に示すように、複数の機械学習ユニット15は第2伝送インタフェース120のうちの1つの信号受信インタフェース81201及び1つのデータ返しインタフェース81202を共有する。
ここで、複数の機械学習ユニット15は第2伝送インタフェース120のうちの1つの信号受信インタフェース81201及び1つのデータ返しインタフェース81202を共有してもよい。例示的に、読み書き処理回路121がブロードキャスト読取処理回路である場合に、複数の機械学習ユニットの送信したデータ操作信号は、1つの信号受信インタフェース81201によってブロードキャスト読取処理回路に送信され、ブロードキャスト読取処理回路はデータ操作信号に基づいて、入力ニューロンデータ及び重み値データを取得し、データ操作信号中のアドレス情報に基づいて、入力ニューロンデータ及び重み値データをデータ返しインタフェース81202によって目標機械学習ユニットに返す。
本実施例によるデータ処理装置では、複数の機械学習ユニットは第2伝送インタフェースのうちの1つの信号受信インタフェース、及び1つのデータ返しインタフェースを共有する。本実施例では、データ処理装置は第2伝送インタフェースのうちの1つの信号受信インタフェース、及び1つのデータ返しインタフェースを共有することにより、ハードウェアオーバーヘッドが一層低減され、ハードウェアの冗長性が避けられる。
一実施例では、引き続き図66を参照すると、読み書き処理回路121は信号キューをさらに含み、信号キューは各機械学習ユニット15の送信したデータ操作信号を記憶するために用いられ、読み書き処理回路121は、さらに、データ操作信号を受信した時、信号キューにスペースが残るか否かを判断し、そうである場合に、データ操作信号を信号キューにキャッシュし、そうでない場合に、データ操作信号をブロッキングするために用いられる。
ここで、信号キューは各機械学習ユニット15の送信したデータ操作信号を記憶するために用いることができ、読み書き処理回路121外に設けられてもよいし、読み書き処理回路121内に設けられてもよい。読み書き処理回路121がデータ操作信号を受信した時、信号キューにメモリ照会コマンドを送信することにより、信号キューのストレージスペースを特定して、信号キューのストレージスペースのサイズはデータ操作信号を記憶するのに充分である場合に、データ操作信号を信号キューにキャッシュし、信号キューのストレージスペースのサイズはデータ操作信号を記憶するのに不充分である場合に、データ操作信号をブロッキングするようにしてもよい。
本実施例によるデータ処理装置では、読み書き処理回路は信号キューをさらに含み、信号キューは各機械学習ユニットの送信したデータ操作信号を記憶するために用いられ、読み書き処理回路は、さらに、データ操作信号を受信した時、信号キューにスペースが残るか否かを判断し、そうである場合に、データ操作信号を信号キューにキャッシュし、そうでない場合に、データ操作信号をブロッキングするために用いられる。本実施例では、読み書き処理回路が複数のデータ操作信号を受信した場合に、データ操作信号を信号キューにキャッシュし、又はデータ操作信号をブロッキングすることにより、データ操作信号を1つずつ調停回路に送信して処理させることができ、データ操作信号が込み合うような状況が避けられ、さらには、複数の機械学習ユニットが1つの伝送回路によって共有メモリにデータ操作を行うことができ、ハードウェアオーバーヘッドが低減され、ハードウェアの冗長性が避けられる。
選択可能で、読み書き処理回路121がブロードキャスト処理回路である場合に、信号キューはコマンドキューと、要求キューとを含み、コマンドキューはブロードキャスト処理回路の受信したコマンドタイプの信号をキャッシュするために用いられ、要求キューはコマンドタイプの信号を解析して得た要求タイプの信号をキャッシュするために用いられる。
ここで、読み書き処理回路121がブロードキャスト処理回路である場合に、信号キューはコマンドキューと、要求キューとを含んでもよく、各機械学習ユニット15の送信したコマンドタイプの信号を受信した後、コマンドキューに記憶して、ブロードキャスト処理回路によりコマンドタイプの信号を解析して処理して、要求タイプの信号を得、得られた要求タイプの信号を要求キューに記憶するようにしてもよい。ここで、コマンドキューはブロードキャスト処理回路の受信したコマンドタイプの信号をキャッシュするために用いられ、要求キューはコマンドタイプの信号を解析して得た要求タイプの信号をキャッシュするために用いられる。
本実施例によるデータ処理装置では、読み書き処理回路がブロードキャスト処理回路である場合に、信号キューはコマンドキューと、要求キューとを含み、コマンドキューはブロードキャスト処理回路の受信したコマンドタイプの信号をキャッシュするために用いられ、要求キューはコマンドタイプの信号を解析して得た要求タイプの信号をキャッシュするために用いられる。本実施例では、コマンドタイプの信号をコマンドキューに、要求タイプの信号を要求キューにそれぞれ記憶することにより、コマンドタイプの信号及び要求タイプの信号を1つずつ調停回路に送信してそれぞれ処理させることができ、データ操作信号が込み合うような状況が一層避けられ、さらには、複数の機械学習ユニットが1つの伝送回路によって共有メモリにデータ操作を行うことができ、ハードウェアオーバーヘッドが低減され、ハードウェアの冗長性が避けられる。
なお、上記の各実施例中の同じ又は類似する部分は互いに参照することができ、いくつかの実施例で詳しく説明されていない内容については、他の実施例中の同じ又は類似する内容を参照できることを理解されたい。
なお、本願の説明では、「第1」、「第2」等の用語は説明の目的のみに用いられ、相対的な重要性を示し又はそれを示唆するものと理解されてはならない。また、本願の説明では、特に説明がある場合を除き、「複数」は少なくとも2つを意味する。
フローチャートにおいて説明された、又はここで他の形態で説明された任意のプロセス又は方法は、特定のロジック機能もしくはプロセスのステップを実現するための実行可能コマンドのコードのモジュール、セグメント又は部分を1つ又は複数含むことを示し、且つ、本願の選択可能な実施形態には他の実現形態が含まれ、示された順番又は検討された順番ではなく、関わる機能によってほぼ同時に又は逆の順番で、当該機能を実行することができ、これは本願の実施例の属する技術分野の当業者に理解されることである。
なお、本願の各部分はハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせを用いて実現できることを理解されたい。上記の実施形態では、複数のステップ又は方法はメモリに記憶されており、且つ適切なコマンド実行システムにより実行されるソフトウェア又はファームウェアを用いて実現することができる。例えば、ハードウェアを用いて実現する場合に、別の実施形態と同じように、本分野の周知技術として、データ信号にロジック機能を実現するためのロジックゲート回路を有する離散ロジック回路、適切な組合せロジックゲート回路を有する専用集積回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)等の任意の1種又はそれらの組み合わせを用いて実現することができる。
当業者に理解されるように、上記の実施例の方法を実現するための全ての又は一部のステップはプログラムにより関連のハードウェアを指令することで完了することができ、前記プログラムはコンピュータ読取可能記憶媒体に記憶されてもよく、当該プログラムが実行する時には、方法の実施例のステップの1つ又はその組み合わせを含む。
また、本願の各実施例に係る各機能ユニットは1つの処理モジュールに集積されてもよいし、各ユニットが単独で物理的に存在してもよく、2つの以上のユニットが1つのモジュールに集積されてもよい。上記の集積型モジュールはハードウェアとして実現されてもよいし、ソフトウェア機能モジュールとして実現されてもよい。前記集積型モジュールはソフトウェア機能モジュールとして実現され、且つ単独な製品として販売・使用される場合に、コンピュータ読取可能記憶媒体に記憶されてもよい。
上述した記憶媒体は読み取り専用メモリ、磁気ディスク又は光ディスク等であってもよい。
本明細書の説明では、用語「一実施例」、「いくつかの実施例」、「例」、「具体例」、「いくつかの例」等を使用した説明は、当該実施例又は例で説明された具体的な特徴、構造、材料又は特性が本願の少なくとも1つの実施例又は例に含まれることを意味する。本明細書では、上記の用語を用いた例示的な記述は必ずしも同じ実施例又は例を指すものではない。しかも、説明された具体的な特徴、構造、材料又は特性は任意の1つ又は複数の実施例もしくは例において適切な形態で組み合わせることができる。
上述した内容で本願の実施例を示し説明しているが、上記の実施例は例示的なものであり、本願に対する限定として理解することができず、当業者が本願の範囲内において上記の実施例に改変、修正、置換、変形を行うことができることを理解されたい。