(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】データ処理装置
(51)【国際特許分類】
G06F 9/38 20180101AFI20240930BHJP
G06F 15/80 20060101ALI20240930BHJP
G06F 15/177 20060101ALI20240930BHJP
G06F 15/173 20060101ALI20240930BHJP
【FI】
G06F9/38 370C
G06F15/80
G06F15/177 B
G06F15/173 683C
G06F15/173 683B
(21)【出願番号】P 2021527755
(86)(22)【出願日】2020-06-26
(86)【国際出願番号】 JP2020025123
(87)【国際公開番号】W WO2020262573
(87)【国際公開日】2020-12-30
【審査請求日】2023-04-27
(31)【優先権主張番号】P 2019121853
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】JP
【権利譲渡・実施許諾】特許権者において、実施許諾の用意がある。
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度~平成31年度、国立研究開発法人新エネルギー・産業技術総合開発機構、「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/メモリとして接続する小型リニアアレイアクセラレータの研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504143441
【氏名又は名称】国立大学法人 奈良先端科学技術大学院大学
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】中島 康彦
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開昭62-229375(JP,A)
【文献】米国特許第05530798(US,A)
【文献】福岡 久和 他,高位合成ツールを用いたFPGA並列コンピューティングの可能性検討,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2016年08月01日,第116巻 第177号,第181頁-第186頁,ISSN:0913-5685
【文献】濱田 剛 他,GPUを用いたサブペタペタフロップス高性能計算機システム,映像情報メディア学会技術報告,(社)映像情報メディア学会,2008年11月28日,第32巻 第54号,第17頁-第19頁,ISSN:1342-6893
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 15/80
G06F 15/177
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
レジスタ部、及びメモリを含むロジック部を有する、同一の構成である複数の基本ユニットが配置された、複数のアクセラレータチップがカスケード接続されたデータ処理装置であって、
前記複数のアクセラレータチップのそれぞれは、当該アクセラレータチップへの入力を制御する第1制御回路及び当該アクセラレータチップからの出力を制御する第2制御回路を備え、
前記複数のアクセラレータチップのそれぞれの全基本ユニットに対する、演算を指示するための事前準備を指示するデータである事前準備指示データは、所定のアドレス範囲Aが指定されて、前記複数のアクセラレータチップ間をカスケード接続の上流側から下流側へ送信されるものであり、
前記各第1制御回路は、前記所定のアドレス範囲Aに対する書き込みであることを認識すると、前記事前準備指示データを当該第1制御回路の下流側の第1制御回路へ出力することを特徴とするデータ処理装置。
【請求項2】
前記事前準備指示データは、前記データ処理装置に出力される際に“0”が書き込まれるカウント領域を含み、
前記各第1制御回路は、前記カウント領域に書き込まれた値に“1”を加えた加算結果を前記カウント領域に書き込み、当該カウント領域を含む前記事前準備指示データを下流側の第1制御回路へ出力し、
前記各第1制御回路は、当該第1制御回路に内蔵されたチップ番号レジスタに、当該第1制御回路に入力された前記事前準備指示データのカウント領域に書き込まれた値を、当該第1制御回路を備えるアクセラレータチップのチップ番号として格納することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記複数のアクセラレータチップのそれぞれの基本ユニットのうち、演算指示の対象となる基本ユニットに対する、演算を指示するデータである演算指示データは、所定のアドレス範囲Bが指定されて、前記上流側から前記下流側へ送信され、前記複数のアクセラレータチップの全てに写像されるものであり、
前記基本ユニットへ出力された前記演算指示データは、前記所定のアドレス範囲Bに基づき、演算指示の対象となる基本ユニットの各レジスタ部に書き込まれ、
前記各第2制御回路は、前記基本ユニットから当該第2制御回路に入力される前記演算指示データを消去することを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記各第1制御回路は、前記所定のアドレス範囲Bに対する書き込みであることを認識すると、当該第1制御回路の下流側の第1制御回路への出力及び当該第1制御回路に接続された基本ユニットへの出力が可能になった際、前記演算指示データを前記第1制御回路の下流側の第1制御回路及び前記第1制御回路に接続された基本ユニットへ出力することを特徴とする請求項3に記載のデータ処理装置。
【請求項5】
前記複数のアクセラレータチップのそれぞれに対する、同一又は異なるアドレス情報
及び設定値を含むレジスタ値は、所定のアドレス範囲Cが指定されて、前記上流側から前記下流側へ送信されるものであり、
前記レジスタ値に含まれる
前記設定値は、前記基本ユニットへ出力された前記レジスタ値に含まれるアドレス情報に基づき、前記設定値の格納対象となる基本ユニットの各レジスタ部に書き込まれ、
前記各第2制御回路は、前記基本ユニットから当該第2制御回路に入力される前記レジスタ値を消去することを特徴とする請求項1~4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記各第1制御回路は、前記所定のアドレス範囲Cに対する書き込みであることを認識すると、当該第1制御回路の下流側の第1制御回路への出力及び当該第1制御回路に接続された基本ユニットへの出力が可能になった際、前記レジスタ値を前記第1制御回路の下流側の第1制御回路及び前記第1制御回路に接続された基本ユニットへ出力し、
前記アドレス情報は、前記設定値の格納対象となる基本ユニットが配置されたアクセラレータチップのチップ番号を含んでおり、
前記アドレス情報に含まれるチップ番号が“0”であれば、前記複数のアクセラレータチップのそれぞれに対し、前記設定値の格納対象となる基本ユニットの各レジスタ部に前記設定値が書き込まれ、
前記アドレス情報に含まれるチップ番号が“0”以外であれば、前記アドレス情報に含まれるチップ番号が示す番号と一致するチップ番号のアクセラレータチップに対し、前記設定値の格納対象となる基本ユニットの各レジスタ部に前記設定値が書き込まれることを特徴とする請求項5に記載のデータ処理装置。
【請求項7】
前記複数のアクセラレータチップのそれぞれに対する、同一又は異なる基本ユニットのロジック部に含まれるメモリへの書き込みデータは、所定のアドレス範囲Dが指定されて、前記上流側から前記下流側へ送信されるものであり、
前記書き込みデータは、前記所定のアドレス範囲Dに基づき、前記書き込みデータの書き込み対象となる基本ユニットの各ロジック部に含まれるメモリに書き込まれ、
前記各第2制御回路は、前記基本ユニットから当該第2制御回路に入力される前記書き込みデータを消去することを特徴とする請求項5又は6に記載のデータ処理装置。
【請求項8】
前記各第1制御回路は、前記所定のアドレス範囲Dに対する書き込みであることを認識すると、当該第1制御回路の下流側の第1制御回路への出力及び当該第1制御回路に接続された基本ユニットへの出力が可能になった際、前記レジスタ値を前記第1制御回路の下流側の第1制御回路及び前記第1制御回路に接続された基本ユニットへ出力することを特徴とする請求項7に記載のデータ処理装置。
【請求項9】
前記所定のアドレス範囲Dが前記複数のアクセラレータチップのそれぞれのチップ内部及び異なるアクセラレータチップ間において重複する場合、複数の基本ユニットの各ロジック部のメモリへの書き込みが同時に行われることを特徴とする請求項8に記載のデータ処理装置。
【請求項10】
前記複数のアクセラレータチップのそれぞれの演算結果である演算結果データの読み出しは、前記複数のアクセラレータチップのそれぞれに対し、読み出し先頭アドレス及び長さが前記上流側から前記下流側へ送信されることにより行われ、
前記各第1制御回路は、前記所定のアドレス範囲Dに対する読み出しであることを認識すると、前記読み出し先頭アドレス及び長さを前記第1制御回路に接続された基本ユニットへ出力し、
前記読み出し先頭アドレス及び長さに基づき、前記複数のアクセラレータチップのそれぞれの各基本ユニットのロジック部のメモリから読み出された前記演算結果データは、前記各第2制御回路に入力され、
前記各第2制御回路は、前記基本ユニットから当該第2制御回路に入力される前記演算結果データ及び当該第2制御回路の下流側の第2制御回路から出力される前記演算結果データを前記上流側へ出力することを特徴とする請求項7~9のいずれか1項に記載のデータ処理装置。
【請求項11】
前記複数のアクセラレータチップのそれぞれの演算完了の確認は、最も上流側のアクセラレータチップに対し、当該アクセラレータチップの第1制御回路に内蔵される状態レジスタの読み出し指示が送信されることにより行われ、
前記第1制御回路は、前記所定のアドレス範囲Aに対する読み出しであることを認識すると、当該第1制御回路の状態レジスタの内容を最も上流側の前記アクセラレータチップの第2制御回路に出力し、
前記第2制御回路は、当該状態レジスタの内容を出力することを特徴とする請求項1~10のいずれか1項に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに用いられるデータ処理装置に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)の処理性能を補う手段としてアクセラレータが広く利用されている。アクセラレータは、多数の演算器を並列配置した構成を備える。アクセラレータは、当該アクセラレータに含まれる演算器の演算能力に見合ったデータ供給を行う必要がある。このため、アクセラレータは専用メモリを内蔵する必要がある。
【0003】
また、CPUに接続される主記憶とアクセラレータに内蔵される専用メモリとの間のデータ転送オーバヘッドは削減されなければならない。このため、アクセラレータに内蔵される専用メモリをCPUの主記憶としてCPUに接続する必要がある。専用メモリを内蔵する、複数のアクセラレータの各専用メモリを主記憶としてCPUにそれぞれ接続する一般的手法には、次の2つの手法がある。
【0004】
第1の手法は、主記憶をCPUに接続するメモリバス幅を増やして、複数の主記憶のチップを並列配置する手法である。従来のベクトル計算機は、性能重視のため、第1の手法を採用していた。第1の手法であれば、メモリバンド幅を増やすことはできるものの、メモリバス幅の増加はコスト増を招くといった問題があった。
【0005】
第2の手法は、主記憶の主記憶アドレス情報の一部をデコードし、当該デコードした主記憶アドレス情報の一部をチップイネーブル信号として利用する手法である。第2の手法はメモリバス幅を増やすものではない。第2の手法はメモリ容量を増加させる一般的手法として用いられてきた。しかし、第2の手法ではメモリバンド幅を増やすことはできない。第2の手法は、アクセラレータの並列処理能力を生かす観点からすれば、第1の手法よりも劣る。
【0006】
現在、エッジコンピューティングの重要性が再認識されている。CPUのメモリバス幅を増やすことなく、いかに並列処理の性能向上を向上させるか、が重要である。すなわち、第2の手法をベースとしつつ、並列処理の性能を向上できる新たな計算基盤の創出が課題となっている。
【0007】
このような状況に鑑み、本発明者は、キャッシュメモリをアクセラレータの内部に配置することによりアクセラレータとキャッシュメモリとの間のデータ転送を不要とし、当該データ転送を不要とすることにより、オーバヘッドの緩和を大きくすることができるデータ処理装置を発明するに至った(特許文献1及び2)。
【先行技術文献】
【特許文献】
【0008】
【文献】国際公開公報「国際公開第2016/163421号」
【文献】国際公開公報「国際公開第2018/207883号」
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明者は、さらなるオーバヘッド削減について鋭意検討を重ねた結果、本発明を発明するに至った。
【0010】
本発明の一態様は、アクセラレータを高効率化可能なデータ処理装置を実現することを目的とする。
【課題を解決するための手段】
【0011】
上記の課題を解決するために、本発明の一態様に係るデータ処理装置は、レジスタ部、及びメモリを含むロジック部を有する、同一の構成である複数の基本ユニットが配置された、複数のアクセラレータチップがカスケード接続されたデータ処理装置であって、前記複数のアクセラレータチップのそれぞれは、当該アクセラレータチップへの入力を制御する第1制御回路及び当該アクセラレータチップからの出力を制御する第2制御回路を備え、前記複数のアクセラレータチップのそれぞれの全基本ユニットに対する、演算を指示するための事前準備を指示するデータである事前準備指示データは、所定のアドレス範囲Aが指定されて、前記複数のアクセラレータチップ間をカスケード接続の上流側から下流側へ送信されるものであり、前記各第1制御回路は、前記所定のアドレス範囲Aに対する書き込みであることを認識すると、前記事前準備指示データを当該第1制御回路の下流側の第1制御回路へ出力する。
【発明の効果】
【0012】
本発明の一態様によれば、アクセラレータの高効率化を図ることができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施形態1に係るデータ処理装置の構成図である。
【
図2】本発明の実施形態1に係るデータ処理装置の動作を説明するための説明図である。
【
図3】本発明の実施形態2に係るデータ処理装置の動作を説明するための説明図である。
【
図4】本発明の実施形態3に係るデータ処理装置の動作を説明するための説明図である。
【
図5】本発明の実施形態4に係るデータ処理装置の動作を説明するための説明図である。
【
図6】本発明の実施形態5に係るデータ処理装置の動作を説明するための説明図である。
【
図7】本発明の実施形態6に係るデータ処理装置の動作を説明するための説明図である。
【発明を実施するための形態】
【0014】
<本発明の概要>
エッジコンピューティングにおいては、次の(A)~(C)の事項の実現が重要となる。
【0015】
(A)CPU及びCPU周辺のコスト削減、すなわちCPUに接続されるメモリバスの節約
(B)アクセラレータのコスト削減、すなわちアクセラレータのチップサイズの小型化
(C)アクセラレータの拡張性向上、すなわちアクセラレータの単純なチップ数増減により要求性能に対応できるスケーラビリティの実現。
【0016】
本発明によれば、次の(1)~(6)の事項を同時に実現することができる。
【0017】
(1)CPUからアクセラレータに対し、アクセラレータの全チップを高速に制御可能
(2)CPUからアクセラレータに対する演算機能の写像を一度にブロードキャスト可能
(3)アクセラレータが内蔵するメモリに関するアドレス情報等のレジスタ値の設定に関し、チップ間で共通の情報を全チップにブロードキャストし、且つ、差分のみを個別に送信することによりオーバヘッドを削減可能
(4)アクセラレータが内蔵するメモリに対する書き込みに関し、アドレス範囲の重複を利用して全チップにブロードキャストすることによりオーバヘッドを削減可能
(5)アクセラレータが内蔵するメモリからの読み出しに関し、読み出しアドレスを複数チップに高速にブロードキャストすることにより、複数チップを並列に読み出し可能
(6)CPUによるアクセラレータの状態取得を先頭チップからのみの取得により可能。
【0018】
本発明によれば、上記の(1)~(6)を同時に実現することにより、複数のアクセラレータがカスケード接続された構成でもオーバヘッドを削減できる。オーバヘッドの削減により、上述の(A)~(C)の事項を実現することができる。
【0019】
<実施形態1>
以下、本発明の実施形態1について、詳細に説明する。
【0020】
図1は、本実施形態に係るデータ処理装置100の構成図である。データ処理装置100は、
図1に示すように、CPUからなるホストHと、n個のアクセラレータチップC1、C2、・・・、Cn(nは2以上の自然数)と、を含む。なお、アクセラレータチップ数は、ある程度以上の数になると本願発明の効果が得られない可能性はある。アクセラレータチップ数は、事実上、16個程度が上限になると思われる。
【0021】
まず、
図1を用いて、データ処理装置100の構成について説明する。
【0022】
ホストHは、命令メモリ部、命令フェッチ部及び命令デコード部を含む。命令メモリ部は、複数の命令からなるプログラムを保持する。命令メモリ部は、ホストHの主記憶の一部の領域であってもよく、また、主記憶の一部を保持する命令バッファであってもよい。命令フェッチ部は、命令メモリ部から必要な命令をフェッチして、命令デコード部は、そのフェッチした命令をデコードする。命令デコード部によるデコード結果により、n個のアクセラレータチップC1、C2、・・・、Cnのそれぞれにおける処理内容が決定する。
【0023】
なお、ホストHは、n個のアクセラレータチップC1、C2、・・・、Cnのそれぞれにデータを送り込む際に使用される。
【0024】
図1に示すように、アクセラレータチップC1、C2、・・・、Cnは、ホストHにカスケード接続されている。より詳細には、ホストH側を上流側とすれば、上流側から下流側に向けて、アクセラレータチップC1、C2、・・・、Cnが、この順番で、数珠つなぎのように接続されているといえる。
【0025】
アクセラレータチップC1、・・・、Cnのそれぞれは、64個の基本ユニットU1、U2、・・・、U63、U64、制御回路X1、・・・、Xn(第1制御回路)及び制御回路Y1、・・・、Yn(第2制御回路)を含む。アクセラレータチップC1、C2、・・・、Cnはお互いに同一のハードウェア構成からなる。なお、以下では、制御回路X1、・・・、Xnを総称する場合には制御回路Xと称する。また、以下では、制御回路Y1、・・・、Ynを総称する場合には制御回路Yと称する。
【0026】
基本ユニットU1、U2、・・・、U63、U64は、この順に、1列に配置されている。基本ユニットU1から基本ユニットU2へ、基本ユニットU1による演算結果が転送される。基本ユニットU2から基本ユニットU3へ、基本ユニットU2による演算結果が転送される。同様に、基本ユニットU63から基本ユニットU64へ、基本ユニットU63による演算結果が転送される。すなわち、互いに隣接する基本ユニットn-1と基本ユニットnとの間において、基本ユニットn-1から基本ユニットnへ、基本ユニットn-1による演算結果が転送される。基本ユニットU64による演算結果は、再び、基本ユニットU64から基本ユニットU1へ、転送される場合もある。
【0027】
データ処理装置100では、基本ユニットU1、・・・、U64の列に折り返し箇所が複数あるが、列が直線状に配置されても良い。また、基本ユニットU1、・・・、U64の列は、渦巻き状に配置されても良い。
【0028】
基本ユニットU1、・・・、U64のそれぞれは、ロジック部L1、・・・、L64及びレジスタ部R1、・・・、R64を含む。例えば、基本ユニットU1、・・・、U64からなる列の先頭からm番目の基本ユニットUmであれば、ロジック部Lm及びレジスタ部Rmを含むことになる。なお、mは1~64の自然数である。基本ユニットU1、・・・、U64はお互いに同一のハードウェア構成からなる。基本ユニットU1、・・・、U64のそれぞれは、特許文献1又は特許文献2に記載された基本ユニットの構成及び動作と同一の構成及び同一の動作を実現する。基本ユニットU1、・・・、U64のそれぞれの構成及び動作については、特許文献1及び特許文献2に詳細に記載されている。したがって、それら構成及び動作については、ここでは説明を行わないこととする。
【0029】
制御回路X1は、入力用バスiB1を介して、ホストHに接続されている。制御回路Y1は、出力用バスoB1を介して、ホストHに接続されている。
【0030】
制御回路X2、・・・、Xnは、入力用バスiB2、・・・、iBnを介して、制御回路X1、・・・、Xn-1にそれぞれ接続されている。制御回路Y2、・・・、Ynは、出力用バスoB2、・・・、oBnを介して、制御回路Y1、・・・、Yn-1にそれぞれ接続されている。
【0031】
制御回路Xには、入力a、出力b及び出力cが設けられている。
【0032】
制御回路X1においては、入力aは、入力用バスiB1を介して、ホストHに接続されている。出力bは、入力用バスiB2を介して、制御回路X2の入力aに接続されている。出力cは、アクセラレータチップC1の内部に配置された複数のデータ線を介して、基本ユニットU1、U2、・・・、U8のそれぞれに接続されている。
【0033】
制御回路X2、・・・、Xn-1においては、入力aは、入力用バスiB2、・・・、iBn-1を介して、制御回路X1、・・・、Xn-2の出力bに接続されている。出力bは、入力用バスiB3、・・・、iBnを介して、制御回路X3、・・・、Xnの入力aに接続されている。出力cは、アクセラレータチップC2、・・・、Cn-1の内部に配置された複数のデータ線を介して、アクセラレータチップC2、・・・、Cn-1の基本ユニットU1、U2、・・・、U8のそれぞれに接続されている。
【0034】
制御回路Xnにおいては、入力aは、入力用バスiBnを介して、制御回路Xn-1の出力bに接続されている。出力bの接続先はない。アクセラレータチップCnが最も下流側に配置されたアクセラレータチップであるからである。出力cは、アクセラレータチップCnの内部に配置された複数のデータ線を介して、アクセラレータチップCnの基本ユニットU1、U2、・・・、U8のそれぞれに接続されている。
【0035】
制御回路Xにおいては、出力cから基本ユニットU1へ出力されるデータは、基本ユニットU16、U17、U32、U33、U48、U49、U64へ、この順で、転送される。出力cから基本ユニットU2へ出力されるデータは、基本ユニットU15、U18、U31、U34、U47、U50、U63へ、この順で、転送される。出力cから基本ユニットU3へ出力されるデータは、基本ユニットU14、U19、U30、U35、U46、U51、U62へ、この順で、転送される。出力cから基本ユニットU4へ出力されるデータは、基本ユニットU13、U20、U29、U36、U45、U52、U61へ、この順で、転送される。出力cから基本ユニットU5へ出力されるデータは、基本ユニットU12、U21、U28、U37、U44、U53、U60へ、この順で、転送される。出力cから基本ユニットU6へ出力されるデータは、基本ユニットU11、U22、U27、U38、U43、U54、U59へ、この順で、転送される。出力cから基本ユニットU7へ出力されるデータは、基本ユニットU10、U23、U26、U39、U42、U55、U58へ、この順で、転送される。出力cから基本ユニットU8へ出力されるデータは、基本ユニットU9、U24、U25、U40、U41、U56、U57へ、この順で、転送される。
【0036】
制御回路Yには、入力d、入力e及び出力fが設けられている。
【0037】
制御回路Y1においては、入力dは、出力用バスoB2を介して、制御回路Y2の出力fに接続されている。入力eは、アクセラレータチップC1の内部に配置された複数のデータ線を介して、基本ユニットU57、U58、・・・、U64のそれぞれに接続されている。出力fは、出力用バスoB1を介して、ホストHに接続されている。
【0038】
制御回路Y2、・・・、Yn-1においては、入力dは、出力用バスoB3、・・・、oBnを介して、制御回路Y3、・・・、Ynの出力fに接続されている。入力eは、アクセラレータチップC2、・・・、Cn-1の内部に配置された複数のデータ線を介して、アクセラレータチップC2、・・・、Cn-1の基本ユニットU57、U58、・・・、U64のそれぞれに接続されている。出力fは、出力用バスoB2、・・・、oBn-1を介して、制御回路Y1、・・・、Yn-2の入力dに接続されている。
【0039】
制御回路Ynにおいては、入力dの接続先はない。アクセラレータチップCnが最も下流側に配置されたアクセラレータチップであるからである。入力eは、アクセラレータチップCnの内部に配置された複数のデータ線を介して、基本ユニットU57、U58、・・・、U64のそれぞれに接続されている。出力fは、出力用バスoBnを介して、制御回路Yn-1の入力dに接続されている。
【0040】
次に、
図2を用いて、データ処理装置100の動作について説明する。
図2は、データ処理装置100の動作を説明するための説明図である。
図2に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの全てに対し、リセット、初期設定、起動、再起動等といった、アクセラレータチップC1、・・・、Cnの基本ユニットU1、・・・、U64に対する演算を指示するための事前準備を指示する動作である。
【0041】
事前準備指示は、ホストHからアクセラレータチップC1、・・・、Cnの全てに対し、事前準備指示データを送信することにより行われる。事前準備指示データは、アクセラレータチップC1、・・・、Cnのそれぞれの基本ユニットU1、・・・、U64の全てに送信される。具体的には、ホストHは、入力用バスiB1へ事前準備指示データを出力する。事前準備指示データは、入力用バスiB1を介して、アクセラレータチップC1の制回路Xの入力aへ入力される。
【0042】
制御回路X1は、当該事前準備指示データから、所定のアドレス範囲(以下、「アドレス範囲A」と称する。)に対する書き込みの要求を認識する。制御回路X1は、入力aから入力された上記事前準備指示データを、出力bから入力用バスiB2へ出力する。上記事前準備指示データは、入力用バスiB2を介して、制御回路X2の入力aへ入力される。
【0043】
ここで重要な点は、制御回路X1は、入力aから入力された事前準備指示データを、出力bから入力用バスiB2へ出力するが、出力cから複数のデータ線へ出力しない点にある。制御回路X1が当該事前準備指示データを出力cから複数のデータ線へ出力しないことにより、アクセラレータチップC1からアクセラレータチップC2への事前準備指示データの送信が高速化される。
【0044】
制御回路X2、・・・、Xn-1は、制御回路X1と同様、上述の動作を行う。事前準備指示データは、ホストHから最も下流側のアクセラレータチップCnまで高速に送信される。
【0045】
また、事前準備指示データは、所定の領域(以下、「カウント領域」と称する。)を含む。ホストHは、入力用バスiB1へ事前準備指示データを出力する際、カウント領域に“0”を書き込む。制御回路X1は、当該制御回路X1に入力された事前準備指示データのカウント領域に書き込まれた“0”に“1”を加算する。そして、制御回路X1は、当該加算結果である“1”が書き込まれた事前準備指示データを出力する。当該カウント領域が更新された事前準備指示データが、アクセラレータチップC1からアクセラレータチップC2へ送信される。
【0046】
一方、制御回路X1は、当該制御回路X1に内蔵される所定のレジスタ(以下、「チップ番号レジスタ」と称する。)に、ホストHから出力される事前準備指示データのカウント領域に書き込まれた“0”を格納する。チップ番号レジスタに格納された“0”は、制御回路X1が含まれるアクセラレータチップC1のチップ番号である。チップ番号とは、上流側から下流側に向けて、アクセラレータチップC1、・・・、Cnを数えた場合において、アクセラレータチップC1、・・・、Cnのそれぞれが何番目のチップに該当するかを示す番号である。最も上流側のチップ番号を“0”とすれば、アクセラレータチップC1のチップ番号は“0”となる。
【0047】
制御回路X2、・・・、Xnは、制御回路X1と同様、上述の動作を行う。制御回路X2、・・・、Xnは、当該制御回路X2、・・・、Xnに内蔵されるチップ番号レジスタに当該制御回路X2、・・・、Xnが含まれるアクセラレータチップのチップ番号を格納することができる。
【0048】
例えば、アクセラレータチップC2であれば、制御回路X2は、当該制御回路X2に入力された事前準備指示データのカウント領域に書き込まれた“1”に“1”を加算する。制御回路X2は、当該加算結果である“2”が書き込まれた事前準備指示データを出力する。当該カウント領域が更新された事前準備指示データが、アクセラレータチップC2からアクセラレータチップC3へ送信されることになる。
【0049】
制御回路X2は、当該制御回路X2に内蔵されるチップ番号レジスタに、アクセラレータチップC1から出力される事前準備指示データのカウント領域に書き込まれた“1”を格納する。チップ番号レジスタに格納された“1”は、制御回路X2が含まれるアクセラレータチップC2のチップ番号である。
【0050】
なお、制御回路Xは、当該制御回路Xが含まれるアクセラレータチップに不具合が発生している場合、上述した、カウント領域の更新を行わないようにしても良い。不具合が発生したアクセラレータチップにチップ番号は与えられず、不具合が発生したアクセラレータチップの利用を回避することができる。なお、不具合の発生は、アクセラレータチップに搭載された自己診断機能を用いて、認識可能である。
【0051】
<実施形態2>
図3を用いて、本実施形態2に係るデータ処理装置100の動作について説明する。
図3は、データ処理装置100の動作を説明するための説明図である。
図3に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの全てに対し、演算を指示する動作である。
【0052】
演算指示は、ホストHからアクセラレータチップC1、・・・、Cnの全てに演算指示データを送信することにより行われる。演算指示データは、アクセラレータチップC1、・・・、Cnの全てに写像される。より詳細には、演算指示データは、アクセラレータチップC1、・・・、Cnのそれぞれの基本ユニットU1、・・・、U64のうち、演算指示の対象となる基本ユニットに送信される。具体的には、ホストHは、入力用バスiB1へ演算指示データを出力する。演算指示データは、入力用バスiB1を介して、制御回路X1の入力aへ入力される。
【0053】
演算指示データには、所定のアドレス範囲(以下、「アドレス範囲B」と称する。)に対する書き込みの要求が記載されている。制御回路X1は、当該演算指示データから、アドレス範囲Bに対する書き込みの要求を認識する。
【0054】
制御回路X1は、入力aから入力された上記演算指示データを、出力bから入力用バスiB2へ出力する。上記演算指示データは、入力用バスiB2を介して、制御回路X2の入力aへ入力される。また、制御回路X1は、入力aから入力された上記演算指示データを、出力cから複数のデータ線へ出力する。上記演算指示データは、複数のデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力される。なお、入力用バスiB2への演算指示データの出力、及び複数のデータ線への演算指示データの出力は、入力用バスiB2及び複数のデータ線がそれぞれ利用可能になった際、同時に実行される。
【0055】
複数のデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力された上記演算指示データは、上述したとおり、基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送される。なお、上記演算指示データは、アドレス範囲B(
図3中、Pで示す範囲)に基づき、基本ユニットU1、U2、U3、U14、U15、U16、U17、U18、U19、U30、U31、U32、U33、U34、U35、U46、U47、U48、U49、U50、U51、U62、U63、U64の各レジスタ部R1、R2、R3、R14、R15、R16、R17、R18、R19、R30、R31、R32、R33、R34、R35、R46、R47、R48、R49、R50、R51、R62、R63、R64に書き込まれる。
【0056】
基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、U63・・・、U56、U57のそれぞれへ転送された上記演算指示データは、複数のデータ線を介して、制御回路Y1の入力eへ入力される。
【0057】
ここで重要な点は、制御回路Y1は、基本ユニットU64、・・・、U57のそれぞれから入力eへ入力される上記演算指示データを当該制御回路Y1の内部で消去してしまう点にある。このため、制御回路Y1は、出力用バスoB1を介して、出力fからホストHへ上記演算指示データを送信する必要はない。上記演算指示データの送信を不要とすることにより、ホストHからアクセラレータチップC1への演算指示データの送信が高速化される。
【0058】
アクセラレータチップC2、・・・、Cnの制御回路Y2、・・・、Ynは、制御回路Y1と同様、上述の動作を行う。演算指示データは、ホストHから最も下流側のアクセラレータチップCnまで高速に送信される。
【0059】
<実施形態3>
図4を用いて、本実施形態3に係るデータ処理装置100の動作について説明する。
図4は、データ処理装置100の動作を説明するための説明図である。
図4に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの各アクセラレータチップに対し、アドレス情報等のレジスタ値を書き込む動作である。
【0060】
アドレス情報等のレジスタ値は、アドレス情報、及び、各基本ユニットのレジスタ部への設定値を含む。また、アドレス情報とは、各基本ユニットのロジック部に含まれるメモリが担当するアドレスの先頭と終端のペアを表す。アドレス情報は、基本ユニットごとに設定される。
【0061】
なお、基本ユニットのロジック部に含まれるメモリを使用するかどうかは、上記実施形態2の演算指示データに含まれている。つまり、上記演算指示データにより、当該メモリを使用するとの指定がされ、かつ、制御回路Xから入ってくるアドレスが、アドレス情報で指定された範囲に入っている場合のみ、当該メモリに対する読み出し/書き込みが実行される。
【0062】
アドレス情報の書き込みは、ホストHからアクセラレータチップC1、・・・、Cnの全てに対し、アドレス情報を送信することにより行われる。具体的には、ホストHは、入力用バスiB1へアドレス情報を出力する。アドレス情報は、入力用バスiB1を介して、制御回路X1の入力aへ入力される。
【0063】
アドレス情報は、所定のアドレス範囲(以下、「アドレス範囲C」と称する。)に対する書き込み要求に含まれている。制御回路X1は、アドレス範囲Cに対する書き込み要求を認識することにより、アドレス情報の書き込みであることを認識する。
【0064】
制御回路X1は、入力aから入力された上記アドレス情報を、出力bから入力用バスiB2へ出力する。上記アドレス情報は、入力用バスiB2を介して、制御回路X2の入力aへ入力される。また、制御回路X1は、入力aから入力された上記アドレス情報を、出力cから複数のデータ線へ出力する。上記アドレス情報は、複数のデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力される。なお、入力用バスiB2へのアドレス情報の出力、及び複数のデータ線へのアドレス情報の出力は、入力用バスiB2及び複数のデータ線がそれぞれ利用可能になった際、同時に実行される。
【0065】
複数のデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力された上記アドレス情報は、上述したとおり、基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送される。なお、上記アドレス情報は、アドレス範囲Cに基づき、例えば、基本ユニットU4、U13、U20の各レジスタ部R4、R13、R20に書き込まれる。
【0066】
ここで、上記アドレス情報は、アクセラレータチップC1、・・・、Cnのチップ番号を含んでいる。上記アドレス情報にチップ番号が含まれるアクセラレータチップは、上記レジスタ値に含まれる設定値の格納対象となる基本ユニットU1、・・・、U64が配置されたアクセラレータチップである。上記アドレス情報に含まれるチップ番号が“0”であれば、複数のアクセラレータチップC1、・・・、Cnのそれぞれに対し、設定値の格納対象となる基本ユニットU1、・・・、U64の各レジスタ部R1、・・・、R64に上記設定値が書き込まれる。
【0067】
一方、上記アドレス情報に含まれるチップ番号が“0”以外であれば、上記アドレス情報に含まれるチップ番号が示す番号と一致するチップ番号のアクセラレータチップC1、・・・、Cnに対し、上記設定値の格納対象となる基本ユニットU1、・・・、U64の各レジスタ部R1、・・・、R64に上記設定値が書き込まれる。
【0068】
基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送された上記アドレス情報は、複数のデータ線を介して、制御回路Y1の入力eへ入力される。
【0069】
ここで重要な点は、制御回路Y1は、基本ユニットU64、・・・、U57のそれぞれから入力eへ入力される上記アドレス情報を当該制御回路Y1の内部で消去してしまう点にある。このため、制御回路Y1は、出力用バスoB1を介して、出力fからホストHへ上記アドレス情報を送信する必要はない。上記アドレス情報の送信を不要とすることにより、ホストHからアクセラレータチップC1へのアドレス情報の送信が高速化される。
【0070】
制御回路Y2、・・・、Ynは、制御回路Y1と同様、上述の動作を行う。アドレス情報は、ホストHから最も下流側のアクセラレータチップCnまで高速に送信されることになる。
【0071】
<実施形態4>
図5を用いて、本実施形態4に係るデータ処理装置100の動作について説明する。
図5は、データ処理装置100の動作を説明するための説明図である。
図5に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの各チップに対し、演算に用いる演算データを書き込む動作である。当該動作は、より具体的には、演算開始前に、基本ユニットのロジック部に含まれるメモリに対して、演算に必要なデータを書き込む動作である。
【0072】
基本ユニットのロジック部に含まれるメモリへの書き込みは、ホストHからアクセラレータチップC1、・・・、Cnの全てに対し、書き込みデータを送信することにより行われる。具体的には、ホストHは、入力用バスiB1へ書き込みデータを出力する。書き込みデータは、入力用バスiB1を介して、制御回路X1の入力aへ入力される。
【0073】
所定のアドレス範囲(以下、「アドレス範囲D」と称する。)に対する書き込み要求は、基本ユニットのロジック部に含まれるメモリに対する書き込みアドレスと書き込みデータを含む。制御回路X1は、アドレス範囲Dに対する書き込み要求を認識し、当該認識された書き込み要求から基本ユニットのロジック部に含まれるメモリに対する書き込みアドレスと書き込みデータを認識する。
【0074】
制御回路X1は、入力aから入力された上記書き込みアドレスと書き込みデータを、出力bから入力用バスiB2へ出力する。上記書き込みアドレスと書き込みデータは、入力用バスiB2を介して、制御回路X2の入力aへ入力される。また、制御回路X1は、入力aから入力された上記書き込みアドレスと書き込みデータを、出力cから複数のアドレス線およびデータ線へそれぞれ出力する。上記書き込みアドレスと書き込みデータはそれぞれ、複数のアドレス線およびデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力される。なお、入力用バスiB2への書き込みアドレスと書き込みデータの出力、及び複数のアドレス線およびデータ線への書き込みアドレスと書き込みデータの出力は、入力用バスiB2、複数のアドレス線およびデータ線が利用可能になった際、同時に実行される。
【0075】
複数のアドレス線およびデータ線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力された上記書き込みアドレスと書き込みデータは、上述したとおり、基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送される。なお、上記書き込みアドレスと書き込みデータは、アドレス範囲Dに基づき、基本ユニットU4、U6、U27、U29、U36、U38、U59、U61の各ロジック部L4、L6、L27、L29、L36、L38、L59、L61に含まれるメモリに書き込まれる。この際、アドレス範囲Dは、アクセラレータチップ内およびアクセラレータチップ間において重複してよい。重複する場合は複数の基本ユニットの各ロジック部のメモリに同時に書き込みが行われる。
【0076】
基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送された上記書き込みアドレスと書き込みデータは、複数のアドレス線およびデータ線を介して、制御回路Y1の入力eへ入力される。
【0077】
ここで重要な点は、制御回路Y1は、基本ユニットU64、・・・、U57のそれぞれから入力eへ入力される上記書き込みアドレスと書き込みデータを当該制御回路Y1の内部で消去してしまう点にある。このため、制御回路Y1は、出力用バスoB1を介して、出力fからホストHへ上記書き込みアドレスと書き込みデータを送信する必要はない。上記書き込みアドレスと書き込みデータの送信を不要とすることにより、ホストHからアクセラレータチップC1への書き込みアドレスと書き込みデータの送信が高速化される。
【0078】
制御回路Y2、・・・、Ynは、制御回路Y1と同様、上述の動作を行う。書き込みアドレスと書き込みデータはホストHから最も下流側のアクセラレータチップCnまで高速に送信されることになる。
【0079】
<実施形態5>
図6を用いて、本実施形態5に係るデータ処理装置100の動作について説明する。
図6は、データ処理装置100の動作を説明するための説明図である。
図6に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの各チップに対し、演算結果である演算結果データを読み出す動作である。当該動作は、より具体的には、演算結果である演算結果データを基本ユニットのロジック部に含まれるメモリから読み出す動作である。
【0080】
演算結果データの読み出しは、ホストHからアクセラレータチップC1、・・・、Cnの全てに対し、読み出し先頭アドレス及び長さを送信することにより行われる。具体的には、ホストHは、入力用バスiB1へ読み出し先頭アドレス及び長さを出力する。読み出し先頭アドレス及び長さは、入力用バスiB1を介して、制御回路X1の入力aへ入力される。
【0081】
上述のアドレス範囲Dに対する読み出し要求には、読み出し先頭アドレス及び長さが記載されている。制御回路X1は、アドレス範囲Dに対する読み出し要求を認識し、当該認識された読み出し要求から基本ユニットのロジック部に含まれるメモリからの読み出し先頭アドレス及び長さを認識する。
【0082】
制御回路X1は、入力aから入力された上記読み出し先頭アドレス及び長さを、出力bから入力用バスiB2へ出力する。上記読み出し先頭アドレス及び長さは、入力用バスiB2を介して、制御回路X2の入力aへ入力される。また、制御回路X1は、入力aから入力された上記読み出し先頭アドレス及び長さを元に、出力cから複数のデータ線へ当該長さに応じた個数の読み出しアドレスを順に出力する。当該複数の読み出しアドレスは、複数のアドレス線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力される。なお、入力用バスiB2への読み出し先頭アドレス及び長さの出力、及び複数のアドレス線への長さに応じた個数の読み出しアドレスの出力は、入力用バスiB2及び複数のアドレス線が利用可能になった際、同時に実行される。
【0083】
複数のアドレス線を介して、基本ユニットU1、・・・、U8のそれぞれへ入力された上記長さに応じた個数の読み出しアドレスは、上述したとおり、基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送される。なお、アドレス範囲Dに基づき、基本ユニットU38のロジック部L38に含まれるメモリから演算結果データが読み出される。この際、制御回路X1は、アドレス範囲Dに含まれる読み出し先頭アドレス及び長さを当該制御回路X1の内部に記録するとともに、当該読み出し先頭アドレス及び長さを制御回路X2に送信する。
【0084】
基本ユニットU1、・・・、U8のそれぞれから基本ユニットU64、・・・、U57のそれぞれへ転送された読み出し先頭アドレス及び長さに応じた個数の読み出しアドレスに基づき、各ユニットが担当メモリ範囲の読み出しを行い、読み出しデータは、複数のデータ線を介して、制御回路Y1の入力eへ入力される。
【0085】
なお、アドレス範囲DがアクセラレータチップC1、・・・、Cnのそれぞれのチップ内部及び異なるアクセラレータチップ間において重複する場合、1つのアクセラレータチップ内部の基本ユニットU1、・・・、U64の各ロジック部L1、・・・、L64のメモリ及び異なるアクセラレータチップ内部の基本ユニットU1、・・・、U64の各ロジック部L1、・・・、L64のメモリへの書き込みが同時に行われる。
【0086】
ここで重要な点は、制御回路Y1は、基本ユニットU64、・・・、U57のそれぞれから入力eへ入力される上記演算結果データを、制御回路Y2から送信されて来る演算結果データと共に、出力fからホストHへ送信する点にある。このため、制御回路Y1は、出力fからホストHへ上記演算結果データを送信する処理を繰り返し行う必要はない。上記演算結果データを送信する処理を繰り返し行う必要が無くなるので、アクセラレータチップC1からホストHへの演算結果データの送信が高速化される。
【0087】
制御回路Y2、・・・、Ynは、制御回路Y1と同様、上述の動作を行う。演算結果データは最も下流側のアクセラレータチップCnからホストHへ高速に送信されることになる。
【0088】
<実施形態6>
図7を用いて、本実施形態6に係るデータ処理装置100の動作について説明する。
図7は、データ処理装置100の動作を説明するための説明図である。
図7に示すデータ処理装置100の動作は、ホストHから、アクセラレータチップC1、・・・、Cnの各チップに対し、演算完了を確認する動作である。
【0089】
演算完了確認動作は、ホストHからアクセラレータチップC1に対し、制御回路X1に内蔵される所定のレジスタ(以下、「状態レジスタ」と称する。)の読み出し指示を送信することにより行われる。具体的には、ホストHは、入力用バスiB1へ状態レジスタの読み出し要求を出力する。状態レジスタの読み出し要求は、入力用バスiB1を介して、制御回路X1の入力aへ入力される。
【0090】
状態レジスタは、アドレス範囲Aに対する読み出しにより読み出すことができる。制御回路X1は、アドレス範囲Aに含まれる特定のレジスタ部に対する読み出し要求を認識し、状態レジスタの読み出しであることを認識する。
【0091】
ここで重要な点は、制御回路X1は、入力aから入力された状態レジスタの読み出し指示を、出力bから入力用バスiB2へ出力しないと共に、出力cから複数のデータ線へ出力しない点にある。制御回路X1は当該制御回路X1の状態レジスタの内容をホストHへ送信する。より具体的には、制御回路X1は、当該制御回路X1の状態レジスタの内容を制御回路Y1に出力し、当該状態レジスタの内容を制御回路Y1がホストHに送信する。このため、アクセラレータチップC1からホストHへの演算完了報告が高速化される。
【0092】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0093】
100 データ処理装置
C1、C2、・・・、Cn アクセラレータチップ
H ホスト
X1、・・・、Xn、Y1、・・・、Yn 制御回路
U1、・・・、U64 基本ユニット
iB1、・・・、iBn 入力用バス
oB1、・・・、oBn 出力用バス