JP2019220003A - データ処理装置、データ処理方法、およびプログラム - Google Patents

データ処理装置、データ処理方法、およびプログラム Download PDF

Info

Publication number
JP2019220003A
JP2019220003A JP2018117930A JP2018117930A JP2019220003A JP 2019220003 A JP2019220003 A JP 2019220003A JP 2018117930 A JP2018117930 A JP 2018117930A JP 2018117930 A JP2018117930 A JP 2018117930A JP 2019220003 A JP2019220003 A JP 2019220003A
Authority
JP
Japan
Prior art keywords
data
transfer
transfer packet
input
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018117930A
Other languages
English (en)
Other versions
JP7131115B2 (ja
Inventor
悠記 小林
Yuki Kobayashi
悠記 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018117930A priority Critical patent/JP7131115B2/ja
Publication of JP2019220003A publication Critical patent/JP2019220003A/ja
Application granted granted Critical
Publication of JP7131115B2 publication Critical patent/JP7131115B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】複数の処理を並列して継続的かつ効率的に実行できるデータ処理装置を提供する。【解決手段】第1の環状バスと、第1の環状バスによって直列に接続される複数の転送エレメントと、第1の環状バスを介して少なくとも二つの転送エレメントに接続され、第1の環状バスにおいて転送される転送パケットの入出力を制御する転送制御部と、複数の転送エレメントのいずれかに接続される複数の内部メモリとを備え、転送エレメントは、第1の転送パケットに後続する第2の転送パケットに演算コマンドが含まれる場合、第2の転送パケットのペイロードデータである第1のデータと、先行する第1の転送パケットに基づいて内部メモリから読み出された第2のデータとを用いた演算を実行し、第1のデータと第2のデータの演算結果データで第2の転送パケットのペイロードデータを置換し、ペイロードデータが置換された第2の転送パケットを後続に転送とする。【選択図】 図1

Description

本発明は、データの転送処理や演算処理を実行するデータ処理装置、データ処理方法、およびプログラムに関する。
ビッグデータの解析処理等においては、数百次元のデータを数百万エントリ集めたデータに対する計算を繰り返すことがある。例えば、数百万次元×数百次元の行列に対する行列積やベクトル行列積、ベクトルの要素ごとの積などの演算が発生しうる。このような演算に対し、CPU(Central Processing Unit)を用いた手法やGPGPU(General-Purpose computing on Graphics Processing Units)を用いた手法が検討されている。しかし、CPUやGPGPUでは、性能の向上に伴い消費電力が増えてしまうという課題があった。
消費電力を削減するために、電力効率の良いデバイスであるFPGA(Field Programmable Gate Array)を用いる手法が注目されている。FPGAには、LUT(Look Up Table)と呼ばれる汎用論理素子と、複数のLUTの間を結ぶ構成可変な配線網が具備されている。FPGAにおいては、LUTおよび配線網の内容を書き換えることによって、様々な演算装置を実現できる。
また、LUTのみならず、演算器(DSP:Digital Signal Processor)やメモリ(SRAM:Static Random Access Memory)などの専用リソースが搭載されているFPGAもある。そのようなFPGAを用いれば、効率的な演算装置を実現できる。しかし、そのようなFPGAにおいては、DSPやSRAMの物理的な位置が固定されているため、DSPやSRAMを適切に利用するアーキテクチャでない限り配線が混雑してしまい、配線の混雑部分を迂回するために配線長が長くなるという課題があった。また、FPGAの全体に亘る長い配線を構成すると、配線の遅延時間が延び、演算装置の動作周波数が低下するという課題があった。
また、SRAMモジュールをトゥルー・デュアル・ポート(True Dual Port)、すなわち、完全に独立したデュアルポートRAM(Random Access Memory)として構成できるFPGAもある。このようなFPGAは、クロック入力やアドレス入力を2系統もつメモリとして利用できる。FPGAの能力を最大限引き出すためには、このような機能を十分に活用することが好ましい。
このように、消費電力を増やさずに性能を引き出すためには、FPGAの特性を活かしたアーキテクチャを実現することが望ましい。
特許文献1には、スループットの向上とともに小さな演算遅れ時間が要求されるデジタル制御用高速積和演算並列プロセッサに関して開示されている。特許文献1のプロセッサは、複数の要素プロセッサを含む。複数の要素プロセッサは、相互結合回路網により直列に結合され、種々の個数の乗算器を含む積和演算器をダイナミックに形成する。
特許文献2には、ネットワークで接続された複数のコンピュータノードの計算結果を集約してリダクションする並列計算機について開示されている。特許文献2の並列計算機は、複数のネットワークアダプタを有する3つ以上のノードと、各ノードのネットワークアダプタ間を接続するクロスバースイッチとを有する。各ノードは、保持データを分割した分割データのそれぞれを、異なるネットワークアダプタを介して他の複数のノードに転送する。ノードの各々は、受け取った分割データと保持データとのリダクション演算を実行し、ネットワークアダプタを介して少なくとも1つのノードにリダクション演算結果を転送して集約する。
特開平05−324694号公報 特開2007−249810号公報
特許文献1のプロセッサによれば、要素プロセッサ間の通信のオーバーヘッドが減少し、小さな遅れ時間で積和演算の並列処理を行うことができる。特許文献1のプロセッサでは、連続する二つの要素プロセッサにおいて、前段の乗算器と後段の乗算器の演算結果の和を後段の加算器で演算する間、前段の乗算器が処理を行わないで待機する時間が発生するという問題点があった。
特許文献2の並列計算機によれば、初期のデータ転送で、より多くのノードがデータ転送を実行できるため、高速な転送処理が実現され、転送時間が短縮される。しかしながら、特許文献2の並列計算機では、リダクション処理の後半において、処理を行わない遊休状態のノードが増えるという問題点があった。
本発明の目的は、上述した課題を解決するために、複数の処理を並列して継続的かつ効率的に実行できるデータ処理装置を提供することにある。
本発明の一態様のデータ処理装置は、第1の環状バスと、第1の環状バスによって直列に接続される複数の転送エレメントと、第1の環状バスを介して少なくとも二つの転送エレメントに接続され、第1の環状バスにおいて転送される転送パケットの入出力を制御する転送制御部と、複数の転送エレメントのいずれかに接続される複数の内部メモリとを備え、転送エレメントは、第1の転送パケットに後続して転送されてきた第2の転送パケットに演算コマンドが含まれる場合、第2の転送パケットのペイロードデータである第1のデータと、先行する第1の転送パケットに基づいて内部メモリから読み出された第2のデータとを用いた演算を実行し、第1のデータと第2のデータの演算結果データで第2の転送パケットのペイロードデータを置換し、ペイロードデータが置換された第2の転送パケットを後続に転送する。
本発明の一態様のデータ処理方法は、第1の環状バスと、第1の環状バスによって直列に接続される複数の転送エレメントと、複数の転送エレメントのいずれかに接続される複数の内部メモリとを備える装置におけるデータ処理方法であって、転送エレメントの前段から転送される第1の転送パケットに基づいて内部メモリからデータを読み出し、第1の転送パケットに後続する第2の転送パケットのペイロードデータである第1のデータと、内部メモリから読み出されたデータである第2のデータとを用いて演算を実行し、第1のデータと第2のデータとの演算結果データで第2の転送パケットのペイロードデータを置換し、ペイロードデータが置換された第2の転送パケットを転送エレメントの後続に転送する。
本発明の一態様のプログラムは、第1の環状バスと、第1の環状バスによって直列に接続される複数の転送エレメントと、複数の転送エレメントのいずれかに接続される複数の内部メモリとを備える装置を制御するプログラムであって、転送エレメントの前段から転送される第1の転送パケットに基づいて内部メモリからデータを読み出す処理と、第1の転送パケットに後続する第2の転送パケットのペイロードデータである第1のデータと、内部メモリから読み出されたデータである第2のデータとを用いて演算を実行する処理と、第1のデータと第2のデータとの演算結果データで第2の転送パケットのペイロードデータを置換する処理と、ペイロードデータが置換された第2の転送パケットを転送エレメントの後続に転送する処理とをコンピュータに実行させる。
本発明によれば、複数の処理を並列して継続的かつ効率的に実行できるデータ処理装置を提供することが可能になる。
本発明の第1の実施形態に係るデータ処理装置の構成の一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントの構成の一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントが転送する転送パケットの一例である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントが転送する転送パケットの構成の一例である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントが転送する転送パケットの構成の一例である。 本発明の第1の実施形態に係るデータ処理装置の内部メモリの一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の内部メモリに格納されるデータの一例を示す概念図である。 本発明の第1の実施形態に係るデータ処理装置の内部メモリにデータを格納する様子を示す概念図である。 本発明の第1の実施形態に係るデータ処理装置の転送制御部の構成の一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の処理エレメントの構成の一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の処理エレメントが取り扱う演算命令の構成例を示す概念図である。 本発明の第1の実施形態に係るデータ処理装置の全体制御部の構成の一例を示すブロック図である。 本発明の第1の実施形態に係るデータ処理装置の全体制御部のコマンドメモリに格納されるコマンドの構成例を示す概念図である。 本発明の第1の実施形態に係るデータ処理装置の全体制御部の命令の構成例を示す概念図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントの動作について説明するためのブロック図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントの実行する演算について説明するためのブロック図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントの演算結果について説明するためのブロック図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントTE0に転送される転送パケットの移動状況について説明するための概念図である。 本発明の第1の実施形態に係るデータ処理装置の転送エレメントTE1に転送される転送パケットの移動状況について説明するための概念図である。 本発明の第1の実施形態に係るデータ処理装置が行列積を繰り返す例について説明するための概念図である。 本発明の第1の実施形態に係るデータ処理装置が行列積を行ごとの総和を取る例について説明するための概念図である。 本発明の第2の実施形態に係るデータ処理装置の構成の一例を示すブロック図である。 本発明の第2の実施形態に係るデータ処理装置の転送制御部の構成の一例を示すブロック図である。 本発明の第2の実施形態に係るデータ処理装置の転送制御部の加算回路の構成の一例を示すブロック図である。 本発明の第3の実施形態に係るデータ処理装置の構成の一例を示すブロック図である。 本発明の第3の実施形態に係るデータ処理装置の動作について説明するためのフローチャートである。
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
(第1の実施形態)
まず。本発明の第1の実施形態に係るデータ処理装置について図面を参照しながら説明する。以下においては、本実施形態のデータ処理装置をFPGA(Field-Programmable Gate Array)に実装する例について説明する。なお、本実施形態のデータ処理装置は、専用回路(ASIC:Application Specific Integrated Circuit)として実現してもよい。以下においては、本実施形態のデータ処理装置が行列を処理対象とする場合について説明する。ただし、本実施形態のデータ処理装置の処理対象のデータは、行列に限らず、他の形態のデータでもよい。例えば、本実施形態のデータ処理装置は、ベクトルデータを処理対象とすることができる。
(構成)
図1は、本実施形態のデータ処理装置10の構成を示すブロック図である。データ処理装置10は、制御部11、複数の演算ユニット13−0〜n、第1の環状バス17、および第2の環状バス18を備える(nは自然数)。
制御部11は、演算ユニット13が実行する演算やデータ(パケット)の転送を制御する。制御部11は、外部メモリ100に接続される。制御部11は、外部メモリからデータを取得する。なお、制御部11は、外部メモリ100ではなく、ネットワークを経由して上位システム(図示しない)や入力装置(図示しない)などに接続されていてもよい。制御部11は、転送制御部110および全体制御部120を有する。
転送制御部110は、第1の環状バス17を介して直列に接続された複数の転送エレメント130の先頭および末尾のエレメントに接続される。転送制御部110は、第1の環状バス17において転送される転送パケットの入出力を制御する。
全体制御部120は、第2の環状バス18を介して直列に接続された複数の処理エレメント150の先頭および末尾のエレメントに接続される。全体制御部120は、第2の環状バス18において転送される演算命令の入出力を制御する。
複数の演算ユニット13は、第1の環状バス17および第2の環状バス18によって直列に接続される。演算ユニット13は、第1の環状バス17を介して転送制御部110から転送される転送パケットに含まれるコマンドに応じて、演算ユニット13に格納されたデータを読み出したり、演算を実行したり、演算結果を出力したりする。演算ユニット13は、転送エレメント130、内部メモリ140、および処理エレメント150を有する。
演算ユニット13を構成する転送エレメント130は、第1の環状バス17を介して隣接する転送エレメント130と接続される。ただし、先頭の転送エレメント130−1の入力と、末尾の転送エレメント130−nの出力とは、第1の環状バス17を介して転送制御部110に接続される。
転送エレメント130は、前段から転送パケットを受信する。演算ユニット13−0の転送エレメント130には、第1の環状バス17を介して、転送制御部110から転送パケットが入力される。演算ユニット13−1〜nの転送エレメント130には、第1の環状バス17を介して、前段の転送エレメント130から転送パケットが入力される。
転送エレメント130は、転送パケットの解析結果に応じて、転送パケットのペイロードデータを自身に対応する内部メモリ140に書き込んだり、内部メモリ140からデータを読み出したり、演算を実行したりする。また、転送エレメント130は、転送パケットの解析結果に応じて、転送パケットに含まれるコマンドを内部メモリ140に送信する。
転送エレメント130は、転送パケットの解析結果が書き込みコマンドであった場合、その書き込みコマンドに応じて、転送パケットのペイロードデータを自身に対応する内部メモリ140に書き込む。転送エレメント130は、転送パケットの解析結果が読み出しコマンドであった場合、その読み出しコマンドに応じて、内部メモリ140からデータを読み出す。転送エレメント130は、転送パケットの解析結果が演算コマンドであった場合、その演算コマンドに応じた演算を実行する。
例えば、転送制御部110が、全ての転送エレメント130に関して、先行する転送パケットのコマンドに応じて読み出された読み出しデータと、後続する転送パケットのペイロードデータとの総和を取るリダクション演算の実行を制御するものとする。この場合、それぞれの転送エレメント130は、先行する転送パケットの演算コマンドに応じて自身の内部メモリ140からデータを読み出す。そして、それぞれの転送エレメント130は、先行する転送パケットの演算コマンドに応じて読み出した読み出しデータと、後続する転送パケットのペイロードデータとを加算した演算結果データで転送パケット中のペイロードデータを置換する。
転送エレメント130は、第1の環状バス17を介して後段に転送パケットを転送する。演算ユニット13−0〜n−1の転送エレメント130は、第1の環状バス17を介して次段の転送エレメント130に出力データを出力する。最後段の演算ユニット13−nの転送エレメント130は、第1の環状バス17を介して転送制御部110に転送パケットを転送する。
演算ユニット13を構成する処理エレメント150は、第2の環状バス18を介して隣接する処理エレメント150と接続される。ただし、先頭の処理エレメント150−1の入力と、末尾の処理エレメント150−nの出力とは、第2の環状バス18を介して全体制御部120に接続される。
処理エレメント150は、第2の環状バス18を介して全体制御部120から受信する演算命令に従って、自身に対応する内部メモリ140からデータを読み出す。処理エレメント150は、読み出したデータを用いた演算の演算結果を内部メモリ140に書き込む。
演算ユニット13を構成する内部メモリ140は、転送エレメント130と処理エレメント150との間に接続される。内部メモリ140には、転送エレメント130および処理エレメント150の演算に用いられるデータが格納される。また、内部メモリ140には、処理エレメント150の演算結果が格納される。例えば、内部メモリは、SRAM(Static Random Access Memory)によって実現される。
転送制御部110は、第1の環状バス17を介して転送エレメント130に接続される。図1の例では、隣接する転送エレメント130同士が第1の環状バス17を介して直列に接続される。そのため、転送制御部110は、第1の環状バス17を介して、先頭の演算ユニット13−0の転送エレメント130の入力と、末尾の演算ユニット13−nの転送エレメント130の出力とに接続される。
また、転送制御部110は、外部メモリ100に接続される。転送制御部110には、外部メモリ100からデータが入力される。転送制御部110は、第1の環状バス17を通じて、入力されるデータに基づいた転送パケットを転送エレメント130に送信する。また、転送制御部110は、第1の環状バス17を通じて、転送エレメント130から転送パケットを取得する。転送制御部110は、第1の環状バス17を通じて転送される転送パケットに基づいたデータを外部メモリ100へ書き出す。
全体制御部120(全体制御手段とも呼ぶ)は、第2の環状バス18を介して処理エレメント150に接続される。図1の例では、隣接する処理エレメント150同士が第2の環状バス18を介して直列に接続される。そのため、全体制御部120は、第2の環状バス18を介して、演算ユニット13−0の処理エレメント15の入力と、演算ユニット13−nの処理エレメント15の出力とに接続される。
また、全体制御部120は、外部メモリ100に接続される。全体制御部には、外部メモリ100から演算命令が入力される。転送制御部110は、入力される演算命令に基づいた演算命令を処理エレメント150に送信する。なお、転送制御部110と全体制御部120とは、互いに接続される。
第1の環状バス17は、一次元的な環状のバスである。第1の環状バス17は、複数の転送エレメント130を直列に接続する。また、第1の環状バス17は、転送制御部110に接続される。
第2の環状バス18は、第1の環状バス17とは独立した一次元的な環状のバスである。第2の環状バス18は、複数の処理エレメント150を直列に接続する。また、第2の環状バス18は、全体制御部120に接続される。
以上が、データ処理装置10の構成に関する概略的な説明である。以下においては、データ処理装置10の構成要素について個別に説明する。
〔転送エレメント〕
図2は、転送エレメント130の構成を示すブロック図である。なお、図2においては隣接し合う転送エレメント130同士が接続するように図示しているが、演算ユニット13−0の転送エレメント130の入力と、演算ユニット13−nの転送エレメント130の出力とは転送制御部110に接続される。図2の上部に示すstg1〜6は、転送パケットが転送されていく段階(ステージ)を示す指標である。
図2のように、転送エレメント130は、入力データレジスタ131、バッファ回路132、解析回路133、メモリインタフェース回路134、加算回路135、選択回路136、および出力データレジスタ137を有する。なお、低速の動作周波数で動作させる場合などでは、入力データレジスタ131および出力データレジスタ137を省略できる。
入力データレジスタ131(入力回路とも呼ぶ)には、第1の環状バス17を介して、前段から転送パケットが入力される。なお、演算ユニット13−0の入力データレジスタ131には、第1の環状バス17を介して、転送制御部110から転送パケットが入力される。また、演算ユニット13−1〜nの入力データレジスタ131には、第1の環状バス17を介して、前段の演算ユニット13−0〜n−1から転送パケットが入力される。
入力データレジスタ131に入力される転送パケットは、バッファ回路132および解析回路133に向けて出力される。また、入力データレジスタ131に入力される転送パケットのペイロードデータは、データdin1として加算回路135に向けて出力される。
バッファ回路132には、入力データレジスタ131から転送パケットが入力される。バッファ回路132は、入力された転送パケットを何段階か保持してから選択回路136に出力する。バッファ回路132は、内部メモリ140のアクセスレイテンシに合わせて設定されるバッファである。図2の例では、バッファ回路132は、第1バッファレジスタ132−1、第2バッファレジスタ132−2、および第3バッファレジスタ132−3が直列に接続された構成を有する。なお、バッファ回路132に含まれるレジスタの数は、3個に限定されない。例えば、バッファ回路132は、内部メモリ140のアクセスレイテンシに合わせて複数段のシフトレジスタとして構成してもよい。
解析回路133(デコーダとも呼ぶ)には、入力データレジスタ131から転送パケットが入力される。解析回路133は、転送パケットを解析し、解析結果に応じた内部メモリ140へのアクセス指示をメモリインタフェース回路134に出力する。例えば、解析回路133は、転送パケットに含まれるコマンドに応じて、アクセス先のアドレスaddrやコマンドをメモリインタフェース回路134に出力する。
解析回路133は、前段の転送エレメント130から受信した転送パケットの識別フィールドが自身の識別子と一致した場合、そのコマンドが自身へのコマンドであると判断する。そして、解析回路133は、コマンドフィールドが内部メモリ140からの読み出しコマンドであれば、アドレスフィールドのアドレスと読み出し指示をメモリインタフェース回路134に送信する。また、解析回路133は、コマンドフィールドが内部メモリ140への書き込みコマンドであれば、データフィールドの値とアドレスフィールドのアドレスと書き込み指示をメモリインタフェース回路134に送信する。
メモリインタフェース回路134には、解析回路133から内部メモリ140へのアクセス指示が入力される。メモリインタフェース回路134は、解析回路133から読み出し指示を受信すると、受信した読み出し指示に従って内部メモリ140からデータを読み出し、読み出したデータを加算回路135および選択回路136に出力する。また、メモリインタフェース回路134は、解析回路133から書き込み指示を受信すると、受信した書き込み指示に従って内部メモリ140にデータを書き込む。図2の例では、メモリインタフェース回路134は、第1メモリインタフェースレジスタ134−1および第2メモリインタフェースレジスタ134−2を含む。なお、低速の動作周波数で動作させる場合などにおいては、第1メモリインタフェースレジスタ134−1および第2メモリインタフェースレジスタ134−2を省略できる。
第1メモリインタフェースレジスタ134−1は、解析回路133のアクセス指示に応じて内部メモリ140にアクセスする。例えば、第1メモリインタフェースレジスタ134−1は、解析回路133の読み出し指示や書き込み指示に応じて、アクセス先のアドレスやコマンドを内部メモリ140に出力する。
第2メモリインタフェースレジスタ134−2には、解析回路133のアクセス指示に応じて内部メモリ140から読み出しデータrdを読み出す。第2メモリインタフェースレジスタ134−2は、加算回路135および選択回路136に読み出しデータrdを出力する。
加算回路135には、入力データレジスタ131から転送データのペイロードデータ(データdin1)が入力され、メモリインタフェース回路134の第2メモリインタフェースレジスタ134−2から読み出しデータrd(データdin2)が入力される。加算回路135は、データdin1とデータdin2とを加算し、その演算結果データdoutを選択回路136に出力する。なお、データdin1を第1のデータ、データdin2を第2のデータとも呼ぶ。
選択回路136には、バッファ回路132からの転送パケットと、メモリインタフェース回路134からの読み出しデータrdと、加算回路135からの演算結果データdoutとが入力される。選択回路136は、転送パケットの解析結果のコマンドに応じて、転送パケットのペイロードデータを選択する。選択回路136は、3入力1出力のセレクタである。選択回路136は、選択したペイロードデータを含む転送パケットを出力データレジスタ137に出力する。
選択回路136は、書き込みコマンドの場合、転送パケットのペイロードデータをそのまま選択する。選択回路136は、読み出しコマンドの場合、内部メモリ140から読み出される読み出しデータrdを選択し、転送パケットのペイロードデータをその読み出しデータrdに置換する。選択回路136は、演算コマンドの場合、加算回路135の演算結果データdoutを選択し、転送パケットのペイロードデータをその演算結果データdoutに置換する。
出力データレジスタ137には、選択回路136から転送パケットが入力される。出力データレジスタ137は、選択回路136から入力される転送パケットを次段の転送エレメント130に転送する。
ここで、転送エレメント130で取り扱われる転送パケットについて図面を参照しながら説明する。
図3は、転送パケットの構成の一例を示す概念図である。例えば、転送パケットp1は、全ての演算ユニット13の内部メモリ140のアドレス0x00からデータを読み出すことを示す。例えば、転送パケットp4は、全ての演算ユニット13の内部メモリ140のアドレス0x03からデータを読み出し、先行する転送パケット(例えばp1)に基づいて読み出されたデータと、転送パケットp4のペイロードデータとを加算することを示す。
図4は、第1の環状バス17で転送される転送パケットの構成例(転送パケット170)を示す概念図である。図4の転送パケット170は、4bitのコマンドフィールド(cmd)、8bitの識別フィールド(peid)、8bitのアドレスフィールド(addr)、32bitのデータフィールド(data)を含む。なお、転送パケットを構成する各フィールドのビット数はここで挙げた限りではなく、任意に設定できる。
コマンドフィールド(cmd)は、外部メモリからの読み込み、読み出すデータに対する演算の内容、外部メモリへの書き込み等のようにデータ転送の種類を表す。識別フィールド(peid)は、どの演算ユニット13の内部メモリ140にアクセスするのかを表す。アドレスフィールド(addr)は、内部メモリ140のどのアドレスにアクセスするかを表す。データフィールド(data)は、ペイロードデータを保持する。
例えば、転送パケットp1のコマンドRD(点線枠)に応じて、内部メモリ140のアドレス0x00に格納されるデータ(破線枠)を読み出す指示が発せられる。同様に、転送パケットp2のコマンドRDに応じて、内部メモリ140のアドレス0x01に格納されるデータを読み出す指示が発せられる。同様に、転送パケットp3のコマンドRDに応じて、内部メモリ140のアドレス0x02に格納されるデータを読み出す指示が発せられる。
そして、転送パケットp4のコマンドRD_ADD(一点鎖線枠)に応じて、内部メモリ140のアドレス0x03に格納されるデータ(二点鎖線枠)を読み出す指示が発せられる。このとき、転送パケットp4のコマンドRD_ADD(一点鎖線枠)に応じて、転送パケットp1のコマンドRDに応じて読み出された読み出しデータrdと、転送パケットp4のペイロードデータ(二点鎖線枠)とが加算される。内部メモリ140のアクセスレイテンシがあるため、転送パケットp1のコマンドRD(破線枠)に応じて内部メモリ140のアドレス0x00から読み出されたデータ(破線枠)と、転送パケットp4のペイロードデータ(二点鎖線枠)とが加算される。そして、転送パケットp4のペイロードデータは、演算結果データdoutと置換される。
このように、加算される二つのデータのうち、内部メモリ140から読み出された読み出しデータrdのコマンドの供給元の転送パケットを第1の転送パケットと呼ぶ。そして、第1の転送パケットのコマンドに応じて読み出された読み出しデータrd(din2)と加算されるペイロードデータ(din1)を含む転送パケットを第2の転送パケットと呼ぶ。
図5は、メモリインタフェース回路134で生じるレイテンシを含めた内部メモリ140のアクセスレイテンシと、加算回路135のレイテンシとがともに3の場合における、第1の転送パケットと第2の転送パケットとの対応関係をまとめた表である。例えば、転送パケットp1が第1の転送パケットの場合、転送パケットp4が第2の転送パケットに相当する。同様に、転送パケットp2〜6が第1の転送パケットの場合、転送パケットp5〜9が第2の転送パケットに相当する。すなわち、転送パケットp4〜6は、転送パケットp1〜3にとっては第2の転送パケットに相当し、転送パケットp7〜9にとっては第1の転送パケットに相当する。なお、内部メモリ140のアクセスレイテンシと、加算回路135のレイテンシとが異なる場合は、図5とは異なる対応関係になる。
〔内部メモリ〕
図6は、内部メモリ140の構成を示すブロック図である。なお、図6に示すブロック間の矢印は、書き込み指示やアドレス、読み出しデータ、書き込みデータの流れを概念的に示すものであって、それらの向きを限定するものではない。
内部メモリ140は、デュアルポートメモリ141を含む。デュアルポートメモリ141は、ポート142(以下、ポートAと記載する)とポート143(以下、ポートBと記載する)の2系統のアクセスポートを備える。ポートA(第1のポートとも呼ぶ)には、転送エレメント130からの信号線が接続される。一方、ポートB(第2のポートとも呼ぶ)には、処理エレメント150からの信号線が接続される。それらの信号線は、書き込みおよび読み出しのためのアドレスや、書き込み指示、書き込みデータ、読み出しデータなどを伝送するための配線である。
図7は、内部メモリ140に格納されるデータの一例を示す概念図である。例えば、演算ユニット13−0の内部メモリ140のアドレス0x000にはa0が格納される。また、演算ユニット13−1の内部メモリ140のアドレス0x000にはa1が格納される。すなわち、演算ユニット13−0〜7のそれぞれの内部メモリ140のアドレス0x000には、a0、a1、・・・、a7が格納される。例えば、演算対象の行列の1列目がa0、a1、・・・、a7の場合、演算ユニット13−0〜7のそれぞれの内部メモリ140の同じアドレス0x000に、a0、a1、・・・、a7を格納する。
図8は、演算対象の行列を構成する成分を内部メモリ140の記憶領域に振り分けて記憶させる例である。例えば、行列A(m行k列)と積算させる行列B(k行n列)を記憶領域Bに記憶させておく(m、k、nは整数)。そして、行列Aと行列Bとの行列積C(m行n列)を記憶領域Cに記憶させる。
〔転送制御部〕
図9は、転送制御部110の構成を示すブロック図である。図9のように、転送制御部110は、指示レジスタ111、状態レジスタ112、制御回路113、およびメモリ114を含む。指示レジスタ111および状態レジスタ112は、全体制御部120に接続される。制御回路113は、外部メモリ100に接続される。また、制御回路113は、演算ユニット13−0の転送エレメント130の入力と、演算ユニット13−nの転送エレメント130の出力とに接続される。
指示レジスタ111は、外部メモリアドレスを示すeaddr、内部メモリアドレスを示すiaddr、転送パケットの数を示すnum、転送方向を示すdir、実行するコマンドを示すcmdといった複数のレジスタフィールドを含む。
例えば、dir==0の場合、内部メモリ140のiaddr番地から外部メモリ100のeaddr番地へのnum個のデータの転送を表す。また、dir==1の場合、外部メモリのeaddr番地から内部メモリのiaddr番地へのnum個のデータの転送を表す。
例えば、cmd=00の場合は内部メモリ140から外部メモリ100へのデータ転送、cmd=01の場合は外部メモリ00から内部メモリ140へのデータ転送、cmd=10の場合はリダクション演算を表す。
状態レジスタ112には、第1の環状バス17において、転送パケットを転送中であるのか、転送パケットの転送が完了したのかを示す値が保持される。
制御回路113は、外部メモリ100に接続される。また、制御回路113は、指示レジスタ111、状態レジスタ112、およびメモリ114に接続される。制御回路113は、外部メモリ100からデータを入力する。制御回路113は、第1の環状バス17を通じて、入力したデータに関する転送パケットを演算ユニット13−1の転送エレメント130に送信する。また、制御回路113は、第1の環状バス17を介して、受信される転送パケットに関するデータを外部メモリ100へ書き出す。また、制御回路113は、必要に応じて、外部メモリ100からのデータや転送パケットに含まれるデータをメモリ114に保持する。
制御回路113は、指示レジスタ111に有効な転送指示が含まれていれば、転送パケットの転送を開始する。また、制御回路113は、状態レジスタ112に関して、転送中か転送完了かを示す値を随時反映し、反映した結果を全体制御部120に通知する。すなわち、制御回路113は、指示レジスタ111に有効な転送指示が含まれている際に、外部メモリ100と転送エレメント12との間でデータを転送して状態レジスタ112の値を更新する。
例えば、制御回路113は、自身のivkdma命令に応じて指示レジスタ111に値を書き込む。また、例えば、制御回路113は、自身のchkdma命令に応じて状態レジスタ112の値を読み込む。
メモリ114は、制御回路113に接続される。メモリ114には、制御回路113によって、外部メモリ100からのデータや転送パケットに含まれるデータが保持される。
〔処理エレメント〕
図10は、処理エレメント150の構成を示すブロックである。なお、図6においては、処理エレメント150の前段および後段の処理エレメント150が互いに接続するように図示している。実際には、演算ユニット13−0の処理エレメント150の入力と、演算ユニット13−nの処理エレメント150の出力とは全体制御部120に接続される。
図10のように、処理エレメント150は、環状バスレジスタ151、命令デコーダ152、メモリインタフェース部153、および演算器154を有する。
環状バスレジスタ151は、第2の環状バス18に接続される。環状バスレジスタ151は、第2の環状バス18を構成する要素の一部である。環状バスレジスタ151は、命令デコーダ152に接続される。環状バスレジスタ151は、単一のレジスタとしてもよいし、複数段から成るシフトレジスタとしてもよい。環状バスレジスタ151は、第2の環状バス18に接続される前段の処理エレメント150から演算命令を受信し、受け取った演算命令を次段の処理エレメント150に送信する。環状バスレジスタ151は、受信した演算命令を命令デコーダ152に送る。
命令デコーダ152は、環状バスレジスタ151に接続される。また、命令デコーダ152は、メモリインタフェース部153と演算器154とに接続される。命令デコーダ152は、環状バスレジスタ151から受信される演算命令を解析し、演算命令に応じた制御信号を生成する。命令デコーダ152は、生成した制御信号をメモリインタフェース部153と演算器154とに出力する。
メモリインタフェース部153は、命令デコーダ152と演算器154とに接続される。また、メモリインタフェース部153は、内部メモリ140に接続される。メモリインタフェース部153は、命令デコーダ152からの制御信号に応じて、内部メモリ140からデータを読み出し、読み出したデータを演算器154に送信する。また、メモリインタフェース部153は、演算器154の演算結果を出力データとして内部メモリ140に書き込む。
演算器154は、命令デコーダ152とメモリインタフェース部153とに接続される。演算器154は、命令デコーダ152からの制御信号に応じて、メモリインタフェース部153から受信したデータを用いた演算を実行する。演算器154は、演算結果をメモリインタフェース部153に送信する。例えば、演算器154は、FPGA(Field-Programmable Gate Array)のDSP(Digital Signal Processor)によって実現できる。
なお、処理エレメント150の機能は、上述に限定されるものではない。例えば、演算器154内にレジスタファイルを具備し、レジスタファイル中のレジスタに対する演算を実行できるようにしてもよい。
図11は、処理エレメント150が取り扱う演算命令の構成例(演算命令180)を示す概念図である。例えば、演算命令180は、8ビットのオペコードOpc、第1ソースオペランドRs、第2ソースオペランドRt、およびデスティネーションオペランドRd、32ビットの即値オペランドImmのフィールドによって構成される。なお、処理エレメント150が取り扱う演算命令の構成は、図11の構成に限定されない。
〔全体制御部〕
図12は、全体制御部120の構成を示すブロック図である。図12のように、全体制御部120は、プログラムカウンタ121、コマンドメモリ122、コマンドデコーダ123、および全体制御部データパス124を有する。コマンドデコーダ123は、演算ユニット13−1の処理エレメント150に接続される。全体制御部データパス124は、演算ユニット13−nの処理エレメント150に接続される。全体制御部120は、一般的な命令セットプロセッサと同様に動作する。
プログラムカウンタ121は、次に実行すべきコマンドを示す値を保存する。コマンドの内容が分岐命令以外の場合、プログラムカウンタ121は、自動的にインクリメントされる。一方、コマンドの内容が分岐命令の場合、プログラムカウンタ121の値は当該分岐命令に従って変更される。
コマンドメモリ122には、命令を実行する主体を示すフラグが含まれるコマンドが格納される。コマンドメモリ122は、プログラムカウンタ121の値に応じたコマンドをコマンドデコーダ123に出力する。
コマンドデコーダ123は、コマンドメモリ122から出力されたコマンドを解析し、解析結果に応じた制御信号を生成する。コマンドデコーダ123は、コマンドを全体制御部120の命令として解釈すると、生成した制御信号を全体制御部データパス124に出力する。一方、コマンドデコーダ123は、コマンドを処理エレメント150の命令として解釈すると、生成した制御信号を演算ユニット13−0の処理エレメント150に出力する。
全体制御部データパス124は、コマンドデコーダ123によって生成された制御信号に従い、コマンドの内容に応じた動作を行う。例えば、全体制御部データパス124は、加算や分岐などの動作を行う。なお、全体制御部データパス124は、レジスタファイル等の一般的な命令セットプロセッサに具備する要素を含んでいてもよい。また、コマンドの内容が分岐命令の場合、全体制御部データパス124は、プログラムカウンタ121の値を当該分岐命令に従って変更する。
図13は、コマンドメモリ122に格納されるコマンド220の構成例を示す概念図である。図13の例のコマンド220には、1ビットのフラグPfと、64ビットの命令Instとが含まれる。フラグPfが0の場合は、全体制御部120の命令として解釈される。一方、フラグPfが1の場合は、処理エレメント150の命令として解釈される。そして、フラグPfが1のコマンド220の場合、コマンドデコーダ123は、演算ユニット13−0の処理エレメント150に命令Instを送信する。なお、コマンドメモリ122に格納されるコマンド220の構成は、図13の構成に限定されない。
また、演算ユニット13−nの処理エレメント150から受信される演算命令は、全体制御部データパス124のレジスタ等(図示しない)に格納される。なお、演算命令の格納先は、レジスタファイル中の特定のレジスタでもよいし、専用レジスタであってもよい。また、全体制御部データパス124は、演算命令の格納するための専用のFIFO(First In First Out)を備えてもよいし、レジスタファイル中の格納するレジスタを演算命令中のフラグ等で別途指定できるようにしてもよい。
図14は、全体制御部120の命令210の構成例を示す概念図である。例えば、全体制御部120の命令210は、オペコードOpc、第1ソースオペランドRs、第2ソースオペランドRt、デスティネーションオペランドRd、即値オペランドImmのフィールドを含む。図14の例では、オペコードOpcが8ビット、第1ソースオペランドRsが5ビット、第2ソースオペランドRtが5ビット、デスティネーションオペランドRdが5ビット、即値オペランドImmが32ビットである。なお、全体制御部120の命令210の構成は、図14の構成に限定されない。例えば、図13に示す64ビット幅のInstに、図14の全体制御部120の命令210を左詰めで格納してもよい。
以上が、データ処理装置10の構成要素についての説明である。なお、以上のデータ処理装置10の構成は一例であって、本実施形態のデータ処理装置10の機能を発揮できさえすれば、種々の構成を追加・削除してもよい。
(動作)
次に、転送エレメント130の動作について図面を参照しながら説明する。図15は、8つの演算ユニット13−0〜7を構成する例である。図15の例では、演算ユニット13−0〜7のそれぞれに、転送エレメント130−0〜7(以下、TE0〜7)および内部メモリ140−0〜7(以下、ME0〜7)が含まれる。図16は、図15の構成において、TE0〜7が実行するリダクション演算について説明するための概念図である。ただし、TEは転送エレメント(Transfer Element)を示し、MEはメモリ(Memory)を示す。また、後述するPEは処理エレメント(Processing Element)を示す。
まず、転送制御部110から一段目のTE0に第1の転送パケットが転送される。TE0に転送されてきた転送パケットは、TE0の解析回路133およびバッファ回路132に送信される。また、第1の転送パケットのペイロードデータ「0」は、加算回路135に入力される。この段階では、第1の転送パケットのペイロードデータ「0」と加算されるデータが加算回路135に入力されていない。そのため、加算回路135に入力されたデータ「0」は、第1の転送パケットが選択回路136に入力されるタイミングに合わせて選択回路136にそのまま出力される。第1の転送パケットがバッファ回路132から選択回路136に出力されると、加算回路135から出力されるデータ「0」と転送パケットのデータ「0」とが同じであるため、第1の転送パケットはそのまま二段目のTE1に転送される。
TE0は、解析回路133を用いて第1の転送パケットを解析し、その第1の転送パケットに含まれるコマンドおよびアドレスに従って、内部メモリME0のアドレス0x00からデータ「a0」を読み出す。TE0は、内部メモリME0から読み出したデータ「a0」を加算回路135に送る。
第1の転送パケットに基づいて読み出されたデータ「a0」が加算回路135に入力された段階では、第2の転送パケットに含まれるデータ「0」が加算回路135に入力される。加算回路135は、データ「0」とデータ「a0」とを加算し、演算結果データ「a0」を選択回路136に出力する。
選択回路136に演算結果データ「a0」が入力される段階で、第2の転送パケットが選択回路136に入力される。選択回路136は、第2の転送パケットのペイロードデータ「0」を演算結果データ「a0」で置換する。その結果、第2の転送パケットのペイロードデータは「a0」になる。TE0は、ペイロードデータとしてデータ「a0」を含む第2の転送パケットをTE1に転送する。
以上の処理がTE1〜7で繰り返され、第1の転送パケットに基づいて内部メモリME0〜7の同じアドレスaddrから読み出されたデータの値は、第2の転送パケットの値に順次加算されていく。その結果、TE7から出力される第2の転送パケットの値は、内部メモリME0〜7の同じアドレスaddrの値の総和「a0+a1+a2+・・・+a7」になる。
図17は、図16を用いて説明した加算演算を内部メモリME0〜7について行った結果をまとめたものである。図17のように、転送制御部110から送信される転送パケットによって、内部メモリ0〜7のアドレスaddr0x000〜7のそれぞれに格納された値の総和がリダクション演算結果として得られる。
ここで、図面を参照しながら、転送エレメント130の動作について説明する。なお、以下の転送エレメント130の動作は一例であって、転送エレメント130の動作を限定するものではない。
〔TE0〕
図18は、TE0において、転送パケットp1〜6が転送されていく様子をまとめた表である。図18の例では、サイクル1〜11について説明し、サイクル12以降については説明を省略する。
まず、サイクル1において、転送パケットp1が入力データレジスタ131に入力される(stg1)。転送パケットp1は、転送パケットp4にとっての第1の転送パケットである。
次に、サイクル2において、転送パケットp1は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp1のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp2が入力データレジスタ131に入力される(stg1)。転送パケットp2は、転送パケットp5にとっての第1の転送パケットである。
次に、サイクル3において、転送パケットp1が第2バッファレジスタ132−2に入力されるとともに、転送パケットp1に基づいたアドレス0x00が内部メモリME0に入力される(stg3)。また、転送パケットp2は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp2のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp3が入力データレジスタ131に入力される(stg1)。転送パケットp3は、転送パケットp6にとっての第1の転送パケットである。
次に、サイクル4において、転送パケットp1が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x00から読み出しデータ「a0」が読み出される(stg4)。また、転送パケットp2が第2バッファレジスタ132−2に入力されるとともに、転送パケットp2に基づいたアドレス0x01が内部メモリME0に入力される(stg3)。また、転送パケットp3は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp3のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp4が入力データレジスタ131に入力される(stg1)。転送パケットp4は、転送パケットp1にとっての第2の転送パケットである。
次に、サイクル5において、転送パケットp1が選択回路136に入力されるとともに、読み出しデータ「a0」が加算回路135に入力される。また、転送パケットp2が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x01から読み出しデータ「b0」が読み出される(stg4)。また、転送パケットp3が第2バッファレジスタ132−2に入力されるとともに、転送パケットp3に基づいたアドレス0x02が内部メモリME0に入力される(stg3)。また、転送パケットp4は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp4のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp5が入力データレジスタ131に入力される(stg1)。転送パケットp5は、転送パケットp2にとっての第2の転送パケットである。
次に、サイクル6において、転送パケットp1が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp1のペイロードデータは「0」のままである。また、転送パケットp2が選択回路136に入力されるとともに、読み出しデータ「b0」が加算回路135に入力される。また、転送パケットp3が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x02から読み出しデータ「c0」が読み出される(stg4)。また、転送パケットp4が第2バッファレジスタ132−2に入力されるとともに、転送パケットp4に基づいたアドレス0x03が内部メモリME0に入力される(stg3)。また、転送パケットp5は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp5のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp6が入力データレジスタ131に入力される(stg1)。転送パケットp6は、転送パケットp2にとっての第2の転送パケットである。
次に、サイクル7において、転送パケットp2が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp2のペイロードデータは「0」のままである。また、転送パケットp3が選択回路136に入力されるとともに、読み出しデータ「c0」が加算回路135に入力される。また、転送パケットp4が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x03から読み出しデータ「d0」が読み出される(stg4)。また、転送パケットp5が第2バッファレジスタ132−2に入力されるとともに、転送パケットp5に基づいたアドレス0x04が内部メモリME0に入力される(stg3)。また、転送パケットp6は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp6のペイロードデータ「0」が加算回路135に入力される。
次に、サイクル8において、転送パケットp3が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp3のペイロードデータは「0」のままである。また、転送パケットp4が選択回路136に入力されるとともに、読み出しデータ「d0」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「a0」が入力され、転送パケットp4のペイロードデータが「a0」に置換される。また、転送パケットp5が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x04から読み出しデータ「e0」が読み出される(stg4)。また、転送パケットp6が第2バッファレジスタ132−2に入力されるとともに、転送パケットp6に基づいたアドレス0x05が内部メモリME0に入力される(stg3)。
次に、サイクル9において、転送パケットp4が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp4のペイロードデータは「a0」に置換されている。また、転送パケットp5が選択回路136に入力されるとともに、読み出しデータ「e0」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「b0」が入力され、転送パケットp5のペイロードデータが「b0」に置換される。また、転送パケットp6が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレスaddr(0x05)から読み出しデータ「f0」が読み出される(stg4)。
次に、サイクル10において、転送パケットp5が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp5のペイロードデータは「b0」に置換されている。また、転送パケットp6が選択回路136に入力されるとともに、読み出しデータ「f0」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「c0」が入力され、転送パケットp6のペイロードデータの値が「c0」に置換される。
次に、サイクル11において、転送パケットp6が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp6のペイロードデータは「c0」に置換されている。また、転送パケットp6が選択回路136に入力されるとともに、読み出しデータ「f0」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「d0」が入力される。
以上が、TE0のサイクル1〜11における動作についての説明である。次に、TE1の動作について説明する。
〔TE1〕
図19は、TE1において、転送パケットp1〜6が転送されていく様子をまとめた表である。図19の例では、サイクル6〜16について説明し、サイクル1〜5およびサイクル17以降については説明を省略する。
まず、サイクル6において、転送パケットp1が入力データレジスタ131に入力される(stg1)。
次に、サイクル7において、転送パケットp1は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp1のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp2が入力データレジスタ131に入力される(stg1)。
次に、サイクル8において、転送パケットp1が第2バッファレジスタ132−2に入力されるとともに、転送パケットp1に基づいたアドレス0x00が内部メモリME0に入力される(stg3)。また、転送パケットp2は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp2のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp3が入力データレジスタ131に入力される(stg1)。
次に、サイクル9において、転送パケットp1が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x00から読み出しデータ「a1」が読み出される(stg4)。また、転送パケットp2が第2バッファレジスタ132−2に入力されるとともに、転送パケットp2に基づいたアドレス0x01が内部メモリME0に入力される(stg3)。また、転送パケットp3は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp3のペイロードデータ「0」が加算回路135に入力される。また、転送パケットp4が入力データレジスタ131に入力される(stg1)。
次に、サイクル10において、転送パケットp1が選択回路136に入力されるとともに、読み出しデータ「a1」が加算回路135に入力される。また、転送パケットp2が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x01から読み出しデータ「b1」が読み出される(stg4)。また、転送パケットp3が第2バッファレジスタ132−2に入力されるとともに、転送パケットp3に基づいたアドレス0x02が内部メモリME0に入力される(stg3)。また、転送パケットp4は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp4のペイロードデータ「a0」が加算回路135に入力される。また、転送パケットp5が入力データレジスタ131に入力される(stg1)。
次に、サイクル11において、転送パケットp1が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp1のペイロードデータは「0」のままである。また、転送パケットp2が選択回路136に入力されるとともに、読み出しデータ「b1」が加算回路135に入力される。また、転送パケットp3が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x02から読み出しデータ「c1」が読み出される(stg4)。また、転送パケットp4が第2バッファレジスタ132−2に入力されるとともに、転送パケットp4に基づいたアドレス0x03が内部メモリME0に入力される(stg3)。また、転送パケットp5は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp5のペイロードデータ「b0」が加算回路135に入力される。また、転送パケットp6が入力データレジスタ131に入力される(stg1)。
次に、サイクル12において、転送パケットp2が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp2のペイロードデータは「0」のままである。また、転送パケットp3が選択回路136に入力されるとともに、読み出しデータ「c1」が加算回路135に入力される。また、転送パケットp4が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x03から読み出しデータ「d1」が読み出される(stg4)。また、転送パケットp5が第2バッファレジスタ132−2に入力されるとともに、転送パケットp5に基づいたアドレス0x04が内部メモリME0に入力される(stg3)。また、転送パケットp6は、第1バッファレジスタ132−1に入力されるとともに、解析回路133に入力される(stg2)。このとき、転送パケットp6のペイロードデータ「c0」が加算回路135に入力される。
次に、サイクル13において、転送パケットp3が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp3のペイロードデータは「0」のままである。また、転送パケットp4が選択回路136に入力されるとともに、読み出しデータ「d1」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「a0+a1」が入力され、転送パケットp4のペイロードデータが「a0+a1」に置換される。また、転送パケットp5が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x04から読み出しデータ「e1」が読み出される(stg4)。また、転送パケットp6が第2バッファレジスタ132−2に入力されるとともに、転送パケットp6に基づいたアドレス0x05が内部メモリME0に入力される(stg3)。このとき、転送パケットp5のペイロードデータ「d0」が加算回路135に入力される。
次に、サイクル14において、転送パケットp4が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp4のペイロードデータは「a0+a1」に置換されている。また、転送パケットp5が選択回路136に入力されるとともに、読み出しデータ「e1」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「b0+b1」が入力され、転送パケットp5のペイロードデータが「b0+b1」に置換される。また、転送パケットp6が第3バッファレジスタ132−3に入力されるとともに、内部メモリME0のアドレス0x05から読み出しデータ「f1」が読み出される(stg4)。
次に、サイクル15において、転送パケットp5が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp5のペイロードデータは「b0+b1」に置換されている。また、転送パケットp6が選択回路136に入力されるとともに、読み出しデータ「f1」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「c0+c1」が入力され、転送パケットp6のペイロードデータが「c0+c1」に置換される。
次に、サイクル16において、転送パケットp6が出力データレジスタ137に入力され、次段のTE1に転送される。転送パケットp6のペイロードデータは「c0+c1」に置換されている。また、転送パケットp6が選択回路136に入力されるとともに、読み出しデータ「f1」が加算回路135に入力される。このとき、選択回路136には、加算回路135の演算結果データ「d0+d1」が入力される。
以上が、TE1のサイクル6〜16における動作についての説明である。TE2〜7の動作についての説明は省略する。
〔パイプライン動作〕
次に、データ処理装置10が転送エレメント130と処理エレメント150とを連動させてパイプライン処理を実行する例について説明する。
図20は、処理エレメント150が行列積を繰り返す例について説明するための概念図である。なお、処理エレメント150が行列積を実行する手順の詳細については説明を省略する。
図20において、まず、転送エレメント130(TE)は、行列A1および行列B1の要素を読み出す指示(read_A1およびread_B1)を処理エレメント150(PE)に出力する。処理エレメント150(PE)は、内部メモリ140から行列A1および行列B1の要素を読み出すと、行列A1と行列B1との行列積を演算し、演算結果である行列C1を生成する。処理エレメント150(PE)は、演算結果である行列C1の要素を内部メモリ14に書き込む。転送エレメント130(TE)は、内部メモリ14から行列C1の要素を読み出し、読み出したデータを第1の環状バス17経由で転送制御部110に向けて送信する。
同様に、転送エレメント130(TE)は、行列A2および行列B2の要素を読み出す指示(read_A2およびread_B2)を処理エレメント150(PE)に出力する。処理エレメント150(PE)は、内部メモリ140から行列A2および行列B2の要素を読み出すと、行列A2と行列B2との行列積を演算し、演算結果である行列C2を生成する。処理エレメント150(PE)は、演算結果である行列C2の要素を内部メモリ14に書き込む。転送エレメント130(TE)は、内部メモリ14から行列C2の要素を読み出し、読み出したデータを第1の環状バス17経由で転送制御部110に向けて送信する。行列A3および行列B3以降については説明を省略する。
図21は、処理エレメント150が行列積を繰り返し、転送エレメント130が処理エレメントの演算結果の総和を取るリダクション演算を実行する例について説明するための概念図である。
図21において、まず、転送エレメント130(TE)は、行列A1および行列B1の要素を読み出す指示(read_A1およびread_B1)を処理エレメント150(PE)に出力する。処理エレメント150(PE)は、内部メモリ140から行列A1および行列B1の要素を読み出すと、行列A1と行列B1との行列積を演算し、演算結果である行列C1を生成する。処理エレメント150(PE)は、演算結果である行列C1の要素を内部メモリ14に書き込む。転送エレメント130(TE)は、内部メモリ14から行列C1の要素を読み出し、行列C1の同じ列を構成する要素の総和を取るリダクション演算(Reduction_add)を実行する。転送エレメント130(TE)は、リダクション演算(Reduction_add)を実行しながら、第1の環状バス17経由で転送制御部110に向けて転送パケットを転送する。
同様に、転送エレメント130(TE)は、行列A2および行列B2の要素を読み出す指示(read_A2およびread_B2)を処理エレメント150(PE)に出力する。処理エレメント150(PE)は、内部メモリ140から行列A2および行列B2の要素を読み出すと、行列A2と行列B2との行列積を演算し、演算結果である行列C2を生成する。処理エレメント150(PE)は、演算結果である行列C1の要素を内部メモリ14に書き込む。転送エレメント130(TE)は、内部メモリ14から行列C2の要素を読み出し、行列C2の同じ列を構成する要素の総和を取るリダクション演算(Reduction_add)を実行する。転送エレメント130(TE)は、リダクション演算(Reduction_add)を実行しながら、第1の環状バス17経由で転送制御部110に向けて転送パケットを転送する。行列A3および行列B3以降については説明を省略する。
本実施形態においては、転送エレメント130(TE)がパケットを転送するタイミングと、処理エレメント150(PE)が演算を実行するタイミングとを連動させる。そのため、本実施形態によれば、転送エレメント130(TE)と処理エレメント150(PE)とが動作する際の互いの待機時間を低減できる。
以上が、本実施形態のデータ処理装置の動作に関する説明である。なお、上記の例においては、小さいサイズの行列を例に挙げて説明してきたが、演算ユニットの数を増やすことによって、より大きなサイズの行列に対しても同様の演算を実行できる。いずれの場合においても、本実施形態のデータ処理装置を構成する処理エレメントに含まれる演算器は、毎サイクル連続して演算を行うことができる。また、本実施形態のデータ処理装置によれば、処理エレメントが一連の処理を実行している間に、転送エレメントがリダクション演算などを実行することができるため、無駄な待機時間を低減できる。すなわち、本実施形態によれば、パイプライン処理の実行中に遊休状態のエレメントが増えることがない。
以上のように、本実施形態のデータ処理装置は、第1の環状バス、複数の転送エレメント、転送制御部、および内部メモリを備える。複数の転送エレメントは、第1の環状バスによって直列に接続される。転送制御部は、第1の環状バスを介して少なくとも二つの転送エレメントに接続され、第1の環状バスにおいて転送される転送パケットの入出力を制御する。複数の内部メモリは、複数の転送エレメントのいずれかに接続される。
転送エレメントは、第1の転送パケットに後続して転送されてきた第2の転送パケットに演算コマンドが含まれる場合、以下のように動作する。まず、転送エレメントは、前段第2の転送パケットのペイロードデータである第1のデータと、先行する第1の転送パケットに基づいて内部メモリから読み出された第2のデータとを用いた演算を実行する。そして、転送エレメントは、第1のデータと第2のデータの演算結果データで第2の転送パケットのペイロードデータを置換し、ペイロードデータが置換された第2の転送パケットを後続に転送する。
例えば、転送エレメントは、第1の転送パケットに含まれるコマンドおよびアドレスに従って、内部メモリのアドレスに格納されるデータを第2のデータとして読み出す。転送エレメントは、読み出した第2のデータと、第2の転送パケットのペイロードデータである第1のデータとを用いて演算を実行する。
例えば、複数の転送エレメントは、第1の転送パケットに含まれるコマンドおよびアドレスに従って、複数の内部メモリの同じアドレスに格納されるデータを第2のデータとして読み出す。複数の転送エレメントは、読み出した第2のデータと、第2の転送パケットのペイロードデータである第1のデータとを加算した値で第2の転送パケットに含まれるペイロードデータを置換するリダクション演算を実行する。
例えば、本実施形態のデータ処理装置は、入力データレジスタ、バッファレジスタ、デコーダ、第1メモリインタフェースレジスタ、第2メモリインタフェースレジスタ、加算器、選択器、および出力データレジスタを有する。入力データレジスタには、第1の環状バスを介して転送パケットが入力される。バッファレジスタは、少なくとも一つのレジスタで構成される。バッファレジスタには、入力データレジスタから転送パケットが入力される。デコーダには、入力データレジスタから転送パケットが入力される。デコーダは、転送パケットを解析し、解析した結果に基づいて内部メモリへのアクセス指示を出力する。第1メモリインタフェースレジスタは、デコーダからアクセス指示が入力される。第1メモリインタフェースレジスタは、デコーダによって解析されたアクセス指示に基づいて内部メモリにアクセスする。第2メモリインタフェースレジスタは、アクセス指示に基づいて内部メモリから第2のデータを読み出す。加算器は、第2メモリインタフェースレジスタが読み出した第1のデータと、アクセス指示の供給元の転送パケットに後続する転送パケットのペイロードデータである第1のデータとを加算し、加算結果を演算結果データとして出力する。選択器には、バッファレジスタを経由した転送パケットと、内部メモリから読み出された第2のデータと、加算器からの演算結果データとが入力される。選択器は、アクセス指示の供給元の転送パケットに後続する転送パケットのペイロードデータを演算結果データで置換する。出力データレジスタは、転送パケットを出力する。
例えば、本実施形態のデータ処理装置は、第2の環状バス、複数の処理エレメント、および全体制御部を備える。第2の環状バスは、第1の環状バスとは独立したバスである。複数の処理エレメントは、第2の環状バスによって直列に接続される。全体制御部は、第2の環状バスを介して少なくとも二つの処理エレメントに接続され、第2の環状バスにおいて転送される演算命令の入出力を制御する。
本実施形態のデータ処理装置によれば、第1の環状バスと第2の環状バスとを独立して制御することができる。そのため、演算処理と転送処理とを並行して実行することができる。すなわち、本実施形態のデータ処理装置は、ある行列積演算を行うのと同時に、次段の行列積演算のための行列の転送や、前段の行列積演算の出力である行列の転送を行うことができる。さらに、本実施形態のデータ処理装置は、行列積演算の出力の総和を取るようなリダクション演算を実行できる。
また、本実施形態のデータ処理装置に含まれる全体制御部および処理エレメントの内部は、パイプラインプロセッサとして実現してもよい。全体制御部および処理エレメントの内部をパイプラインプロセッサとして実現すれば、演算のスループットを高めることができる。この場合、例えばMACI命令ではrsとrdに同時にアクセスする必要があるなど、内部メモリへ同時アクセスする必要があるため、内部メモリを複数バンク構成として同時アクセスを可能にしてもよい。
以上の本実施形態によれば、データの転送と演算とを同時に実行することにより、演算器の稼働率を維持できるという第1の効果が得られる。また、本実施形態によれば、処理エレメントの演算内容を演算命令として環状バスを通じて送信することにより、クロック信号およびリセット信号のための信号線を除いて長い配線がなくなるため、動作周波数を向上できるという第2の効果が得られる。すなわち、本実施形態によれば、データ転送のためのバスとデータ処理のためのバスとを独立させることによって、行列積やベクトルの内積を効率的に演算できる。
さらに、本実施形態によれば、処理エレメントの演算結果を転送エレメントにおいてリダクション演算することができる。そのため、本実施形態によれば、処理エレメントにおける演算に並行させて、転送エレメントにおいて処理エレメントの演算結果のリダクション演算を実行でき、転送エレメントの待機時間を低減できる。
すなわち、本実施形態によれば、複数の処理を並列して継続的かつ効率的に実行できる。
本実施形態のデータ処理装置は、大規模な行列演算を行うビッグデータの解析処理等のアプリケーションに対し、FPGA(Field-Programmable Gate Array)上で柔軟かつ効率的に実行する用途に適用できる。また、本実施形態のデータ処理装置は、FPGA上のみならず、専用回路(ASIC:Application Specific Integrated Circuit)としても実現可能である。
(第2の実施形態)
次に、本発明の第2の実施形態のデータ処理装置について図面を参照しながら説明する。本実施形態のデータ処理装置は、第1の環状バスが複線化された構成を有する。本実施形態においては、第1の環状バスを複線化し、転送エレメントの処理を効率化する例について説明し、第2環状バスや処理エレメントについては説明を省略する。
図22は、本実施形態のデータ処理装置の構成の一部を示すブロック図である。図22には、転送制御部21、転送エレメント群23、内部メモリ群24、および第1の環状バス27を図示している。転送エレメント群23は、複数の転送エレメント230−1〜nによって構成される(nは自然数)。内部メモリ群24は、複数の内部メモリ240−0〜4n+3によって構成される。第1の環状バス27は、複数の環状バス270−0〜3によって構成される。なお、転送エレメント230、内部メモリ240、および環状バス270の数については、図22の例に限定されず、任意に設定できる。また、第2環状バスや処理エレメントの数については、単数であってもよいし、複数であってもよく、特に限定は加えない。
転送エレメント群23を構成する複数の転送エレメント230−0〜nは、第1の環状バス27によって直列に接続される。複数の転送エレメント230−0〜nは、第1の実施形態の転送エレメント130と同様の構成を有する。複数の転送エレメント230−0〜nのそれぞれは、内部メモリ群24を構成する複数の内部メモリ240−0〜4n+3のいずれかに接続される。
図22の例では、転送エレメント230−0(TE0)には内部メモリ240−0〜3が接続される。同様に、転送エレメント230−1(TE1)には内部メモリ240−4〜7が接続され、転送エレメント230−2(TE2)には内部メモリ240−8〜11が接続される。そして、転送エレメント230−n(TEn)には内部メモリ240−4n〜4n+3が接続される。
第1の環状バス27を構成する複数の環状バス270−0〜3のそれぞれは、複数の転送エレメント230−0〜nのそれぞれに接続される複数の内部メモリ240−0〜4n+3に対応させて接続される。環状バス270−0には、内部メモリ240−0、4、8、・・・、4nが接続される。環状バス270−1には、内部メモリ240−1、5、9、・・・、4n+1が接続される。環状バス270−2には、内部メモリ240−2、6、10、・・・、4n+2が接続される。環状バス270−2には、内部メモリ240−2、6、10、・・・、4n+2が接続される。なお、複数の環状バス270−0〜3と、複数の内部メモリ240−0〜4n+3との接続関係は、上記の例に限定されず、任意に設定できる。
転送制御部21は、複線化された第1の環状バス27を介して、転送エレメント230−0(TE0)の入力に接続される。また、転送制御部21は、複線化された第1の環状バス27を介して、転送エレメント230−n(TEn)の出力に接続される。
図23は、転送制御部21の構成の一例を示すブロック図である。図23のように、転送制御部21は、指示レジスタ211、状態レジスタ212、制御回路213、および加算回路215を有する。転送制御部21は、第1の実施形態の転送制御部110に加算回路215を追加した構成を有する。
制御回路213は、外部メモリ200に接続される。また、制御回路213は、第1の環状バス27を介して、転送エレメント230−1の入力に接続される。さらに、制御回路213は、加算回路215の出力に接続される。指示レジスタ211および状態レジスタ212は、全体制御部22に接続される。なお、指示レジスタ211、状態レジスタ212、制御回路213、および全体制御部22の構成は、第1の実施形態の転送制御部110の対応する構成と同様であるため、詳細な説明は省略する。外部メモリ200も、第1の実施形態の外部メモリ100と同様である。
図24は、転送制御部21に含まれる加算回路215の構成例を示すブロック図である。加算回路215は、第1加算器251、第2加算器252、および第3加算器253を含む。
第1加算器251には、環状バス270−0〜1が接続される。第1加算器251には、環状バス270−0〜1を介して、転送エレメント230−n(TEn)から2つの転送パケットが入力される。環状バス270−0を介して第1加算器251に入力される転送パケットのペイロードデータは、内部メモリ240−0、4、8、・・・、4nに格納されたデータを用いた演算結果(第1の演算結果とも呼ぶ)に置換されている。環状バス270−1を介して第1加算器251に入力される転送パケットのペイロードデータは、内部メモリ240−1、5、9、・・・、4n+1に格納されたデータを用いた演算結果(第2の演算結果とも呼ぶ)に置換されている。第1加算器251は、第1の演算結果と第2の演算結果とを加算することによって第1の加算結果を計算する。第1加算器251は、算出した第1の加算結果を第3加算器253に出力する。
第2加算器252には、環状バス270−2〜3が接続される。第2加算器252には、環状バス270−2〜3を介して、転送エレメント230−n(TEn)から2つの転送パケットが入力される。環状バス270−2を介して第2加算器252に入力される転送パケットのペイロードデータは、内部メモリ240−2、6、10、・・・、4n+2に格納されたデータを用いた演算結果(第3の演算結果とも呼ぶ)に置換されている。環状バス270−3を介して第2加算器252に入力される転送パケットのペイロードデータは、内部メモリ240−3、7、11、・・・、4n+3に格納されたデータを用いた演算結果(第4の演算結果とも呼ぶ)に置換されている。第2加算器252は、第3の演算結果と第4の演算結果とを加算することによって第2の加算値を計算する。第2加算器252は、算出した第2の加算値を第3加算器253に出力する。
第3加算器253には、第1加算器251から第1の加算値が入力され、第2加算器252から第2の加算値が入力される。第3加算器253は、入力された第1の加算値と第2の加算値とを加算することによって総和データを計算する。第3加算器253は、算出した総和データを制御回路213に出力する。
以上のように、本実施形態のデータ処理装置は、複線化された第1の環状バスを有する。複数の内部メモリは、第1の環状バスを構成する複数の環状バスのそれぞれに対応させて複数の転送エレメントのそれぞれに接続される。複数の転送エレメントは、第1の環状バスを構成する複数の環状バスのそれぞれにおいて転送される複数の転送パケットに基づいて、複数の内部メモリにアクセスする。また、転送制御部は、第1の環状バスを構成する複数の環状バスを介して同じタイミングで転送される複数の転送パケットのペイロードデータを合算する。
本実施形態のデータ処理装置は、複数の転送パケットを並行して処理できる。そのため、本実施形態のデータ処理装置によれば、第1の実施形態のデータ処理装置と比べて、より効率的に複数の処理を並列して継続的に実行できる。
(第3の実施形態)
次に、本発明の第3の実施形態に係るデータ処理装置の転送エレメントについて図面を参照しながら説明する。本実施形態の転送エレメントは、第1の実施形態のデータ処理装置に含まれる転送エレメントを概念化した構成を有する。なお、本実施形態においては、転送エレメント以外の構成については簡略化または省略する。また、本実施形態においては、複数の転送エレメントが第1の環状バスを介して直列に接続されているものとし、転送制御部については説明を省略する。
図25は、本実施形態のデータ処理装置の転送エレメント330の構成の一例を示すブロック図である。図25のように、転送エレメント330は、入力回路331、バッファ回路332、解析回路333、メモリインタフェース回路334、演算回路335、選択回路336、および出力回路337を備える。転送エレメント330は、第1の環状バス37を介して、隣接する転送エレメント330に接続される。また、転送エレメント330は、メモリインタフェース回路334を介して内部メモリ340に接続される。
入力回路331には、第1の環状バス37を介して、前段の転送エレメント330から転送パケットが入力される。入力回路331に入力される転送パケットは、バッファ回路332および解析回路333に出力される。また、入力回路331に入力される転送パケットのペイロードデータは、データdin1として演算回路335に入力される。
バッファ回路332には、入力回路331から転送パケットが入力される。バッファ回路332は、入力された転送パケットを何段階か保持してから選択回路336に出力する。
解析回路333には、入力回路331から転送パケットが入力される。解析回路333は、転送パケットを解析し、解析結果に応じた内部メモリ340へのアクセス指示をメモリインタフェース回路334に出力する。
メモリインタフェース回路334には、解析回路333から内部メモリ340へのアクセス指示が入力される。メモリインタフェース回路334は、解析回路333から読み出し指示を受信すると、受信した読み出し指示に従って内部メモリ140からデータを読み出し、読み出したデータを演算回路335および選択回路336に出力する。また、メモリインタフェース回路334は、解析回路333から書き込み指示を受信すると、受信した書き込み指示に従って内部メモリ340にデータを書き込む。
演算回路335には、転送データのペイロードデータが入力回路331からデータdin1として入力される。また、演算回路335には、メモリインタフェース回路334からの読み出しデータrdがデータdin2として入力される。演算回路335は、データdin1とデータdin2とを用いて演算を実行し、その演算結果データdoutを選択回路336に出力する。例えば、演算回路335は、加算や積算などを実行する。
選択回路336には、バッファ回路332からの転送パケットと、メモリインタフェース回路334からの読み出しデータrdと、演算回路335からの演算結果データdoutとが入力される。選択回路336は、演算回路335の演算結果データdoutで、転送パケットに含まれるペイロードデータを置換する。選択回路336は、ペイロードデータが演算結果データdoutで置換された転送パケットを出力回路337に出力する。
出力回路337には、選択回路336から転送パケットが入力される。出力回路337は、選択回路336から入力される転送パケットを次段の転送エレメント330に転送する。
以上が、転送エレメント330の構成についての説明である。なお、図25に示す転送エレメント330の構成は一例であって、本実施形態を限定するものではない。
(動作)
次に、転送エレメント330のリダクション演算に関する動作の一例について図面を参照しながら説明する。図26は、転送エレメント330のリダクション演算に関する動作について説明するためのフローチャートである。なお、図26のフローチャートに沿った説明においては、転送エレメント330を動作主体とする。
図26において、まず、転送エレメント330は、前段から転送される第1の転送パケットに含まれるコマンドに応じて、内部メモリ340から第1のデータを読み出す(ステップS31)。
次に、転送エレメント330は、内部メモリ340から読み出した第1のデータと、第1の転送パケットに後続する第2の転送パケットに含まれるペイロードデータ(第2のデータ)とを用いて演算を実行する(ステップS32)。
次に、転送エレメント330は、第1のデータと第2のデータとの演算結果データで第2の転送パケットのペイロードデータを置換する(ステップS33)。
そして、転送エレメント330は、ペイロードデータが置換された第2の転送パケットを後続に転送する(ステップS34)。
以上が、転送エレメント330のリダクション演算に関する動作についての説明である。なお、図26のフローチャートに沿った処理をコンピュータに実行させるプログラムも本実施形態に含む。また、図26のフローチャートに沿った処理をコンピュータに実行させるプログラムを記録するプログラム記録媒体も本実施形態に含む。
以上のように、本実施形態の転送エレメントは、入力回路、バッファ回路、解析回路、メモリインタフェース回路、演算回路、選択回路、および出力回路を有する。入力回路には、転送パケットが入力される。バッファ回路は、転送パケットを少なくとも1段階保持する。解析回路は、転送パケットを解析し、解析した結果に基づいて内部メモリへのアクセス指示を出力する。メモリインタフェース回路は、アクセス指示に従って内部メモリにアクセスする。演算回路は、アクセス指示の供給元の転送パケットに後続する転送パケットのペイロードデータである第1のデータと、アクセス指示に従って内部メモリから読み出された第2のデータとを用いて演算を実行する。選択回路には、バッファ回路を経由した転送パケットのデータと、内部メモリから読み出された第2のデータと、演算回路から出力される演算結果データとが入力される。選択回路は、入力されたいずれかのデータを選択し、選択したデータをペイロードデータとして含む転送パケットを出力する。出力回路は、選択回路によって選択されるデータをペイロードデータとして含む転送パケットを出力する。
本実施形態のデータ処理装置によれば、複数の処理を並列して継続的かつ効率的に実行できる。
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 データ処理装置
11 制御部
13 演算ユニット
17 第1の環状バス
18 第2の環状バス
21 転送制御部
22 全体制御部
23 転送エレメント群
24 内部メモリ群
27 第1の環状バス
37 第1の環状バス
110 転送制御部
111 指示レジスタ
112 状態レジスタ
113 制御回路
114 メモリ
120 全体制御部
121 プログラムカウンタ
122 コマンドメモリ
123 コマンドデコーダ
124 全体制御部データパス
130 転送エレメント
131 入力データレジスタ
132 バッファ回路
133 解析回路
134 メモリインタフェース回路
135 加算回路
136 選択回路
137 出力データレジスタ
140 内部メモリ
141 デュアルポートメモリ
142、143 ポート
150 処理エレメント
151 環状バスレジスタ
152 命令デコーダ
153 メモリインタフェース部
154 演算器
211 指示レジスタ
212 状態レジスタ
213 制御回路
215 加算回路
230 転送エレメント
240 内部メモリ
251 第1加算器
252 第2加算器
253 第3加算器
270 環状バス
330 転送エレメント
331 入力回路
332 バッファ回路
333 解析回路
334 メモリインタフェース回路
335 演算回路
336 選択回路
337 出力回路

Claims (10)

  1. 第1の環状バスと、
    前記第1の環状バスによって直列に接続される複数の転送エレメントと、
    前記第1の環状バスを介して少なくとも二つの前記転送エレメントに接続され、前記第1の環状バスにおいて転送される転送パケットの入出力を制御する転送制御手段と、
    複数の前記転送エレメントのいずれかに接続される複数の内部メモリとを備え、
    前記転送エレメントは、
    第1の転送パケットに後続して転送されてきた第2の転送パケットに演算コマンドが含まれる場合、前記第2の転送パケットのペイロードデータである第1のデータと、先行する前記第1の転送パケットに基づいて前記内部メモリから読み出された第2のデータとを用いた演算を実行し、前記第1のデータと前記第2のデータの演算結果データで前記第2の転送パケットの前記ペイロードデータを置換し、前記ペイロードデータが置換された前記第2の転送パケットを後続に転送するデータ処理装置。
  2. 前記転送エレメントは、
    前記第1の転送パケットに含まれるコマンドおよびアドレスに従って、前記内部メモリの前記アドレスに格納されるデータを前記第2のデータとして読み出し、読み出した前記第2のデータと、前記第2の転送パケットの前記ペイロードデータである前記第1のデータとを用いて演算を実行する請求項1に記載のデータ処理装置。
  3. 複数の前記転送エレメントは、
    前記第1の転送パケットに含まれるコマンドおよびアドレスに従って、複数の前記内部メモリの同じ前記アドレスに格納されるデータを前記第2のデータとして読み出し、読み出した前記第2のデータと、前記第2の転送パケットの前記ペイロードデータである前記第1のデータとを加算した値で前記第2の転送パケットの前記ペイロードデータを置換するリダクション演算を実行する請求項2に記載のデータ処理装置。
  4. 前記転送エレメントは、
    前記転送パケットが入力される入力回路と、
    前記転送パケットを少なくとも1段階保持するバッファ回路と、
    前記転送パケットを解析し、解析した結果に基づいて前記内部メモリへのアクセス指示を出力する解析回路と、
    前記アクセス指示に従って前記内部メモリにアクセスするメモリインタフェース回路と、
    前記アクセス指示の供給元の前記転送パケットに後続する前記転送パケットの前記ペイロードデータである前記第1のデータと、前記アクセス指示に従って前記内部メモリから読み出された前記第2のデータとを用いて演算を実行する演算回路と、
    前記バッファ回路を経由した前記転送パケットと、前記内部メモリから読み出された前記第2のデータと、前記演算回路から出力される前記演算結果データとが入力され、入力されたいずれかのデータを選択し、選択したデータを前記ペイロードデータとして含む前記転送パケットを出力する選択回路と、
    前記選択回路によって選択されるデータを前記ペイロードデータとして含む前記転送パケットを出力する出力回路とを有する請求項1に記載のデータ処理装置。
  5. 前記第1の環状バスが複線化され、
    複数の前記内部メモリは、
    前記第1の環状バスを構成する複数の環状バスのそれぞれに対応させて複数の前記転送エレメントのそれぞれに接続され、
    複数の前記転送エレメントは、
    前記第1の環状バスを構成する複数の前記環状バスのそれぞれにおいて転送される複数の前記転送パケットに基づいて、複数の前記内部メモリにアクセスする請求項1乃至4のいずれか一項に記載のデータ処理装置。
  6. 前記転送制御手段は、
    前記第1の環状バスを構成する複数の前記環状バスを介して同じタイミングで転送される複数の前記転送パケットの前記ペイロードデータを合算する請求項5に記載のデータ処理装置。
  7. 前記第1の環状バスとは独立した第2の環状バスと、
    前記第2の環状バスによって直列に接続される複数の処理エレメントと、
    前記第2の環状バスを介して少なくとも二つの前記処理エレメントに接続され、前記第2の環状バスにおいて転送される演算命令の入出力を制御する全体制御手段とを備える請求項1乃至6のいずれか一項に記載のデータ処理装置。
  8. 前記第1の環状バスを介して前記転送パケットが入力される入力データレジスタと、
    少なくとも一つのレジスタで構成され、前記入力データレジスタから前記転送パケットが入力されるバッファレジスタと、
    前記入力データレジスタから前記転送パケットが入力され、前記転送パケットを解析した結果に基づいて前記内部メモリへのアクセス指示を出力するデコーダと、
    前記デコーダから前記アクセス指示が入力され、前記アクセス指示に基づいて前記内部メモリにアクセスする第1メモリインタフェースレジスタと、
    前記アクセス指示に基づいて前記内部メモリから前記第2のデータを読み出す第2メモリインタフェースレジスタと、
    前記第2メモリインタフェースレジスタが読み出した前記第2のデータと、前記アクセス指示の供給元の前記転送パケットに後続する前記転送パケットの前記ペイロードデータである前記第1のデータとを加算し、加算結果を前記演算結果データとして出力する加算器と、
    前記バッファレジスタを経由した前記転送パケットと、前記内部メモリから読み出された前記第2のデータと、前記加算器からの前記演算結果データとが入力され、前記アクセス指示の供給元の前記転送パケットに後続する前記転送パケットの前記ペイロードデータを前記演算結果データで置換する選択器と、
    前記転送パケットを出力する出力データレジスタとを有する請求項1乃至3のいずれか一項に記載のデータ処理装置。
  9. 第1の環状バスと、前記第1の環状バスによって直列に接続される複数の転送エレメントと、複数の前記転送エレメントのいずれかに接続される複数の内部メモリとを備える装置におけるデータ処理方法であって、
    前記転送エレメントの前段から転送される第1の転送パケットに基づいて前記内部メモリからデータを読み出し、
    前記第1の転送パケットに後続する第2の転送パケットのペイロードデータである第1のデータと、前記内部メモリから読み出されたデータである第2のデータとを用いて演算を実行し、
    前記第1のデータと前記第2のデータとの演算結果データで前記第2の転送パケットの前記ペイロードデータを置換し、
    前記ペイロードデータが置換された前記第2の転送パケットを前記転送エレメントの後続に転送するデータ処理方法。
  10. 第1の環状バスと、前記第1の環状バスによって直列に接続される複数の転送エレメントと、複数の前記転送エレメントのいずれかに接続される複数の内部メモリとを備える装置を制御するプログラムであって、
    前記転送エレメントの前段から転送される第1の転送パケットに基づいて前記内部メモリからデータを読み出す処理と、
    前記第1の転送パケットに後続する第2の転送パケットのペイロードデータである第1のデータと、前記内部メモリから読み出されたデータである第2のデータとを用いて演算を実行する処理と、
    前記第1のデータと前記第2のデータとの演算結果データで前記第2の転送パケットの前記ペイロードデータを置換する処理と、
    前記ペイロードデータが置換された前記第2の転送パケットを前記転送エレメントの後続に転送する処理とをコンピュータに実行させるプログラム。
JP2018117930A 2018-06-21 2018-06-21 データ処理装置、データ処理方法、およびプログラム Active JP7131115B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018117930A JP7131115B2 (ja) 2018-06-21 2018-06-21 データ処理装置、データ処理方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018117930A JP7131115B2 (ja) 2018-06-21 2018-06-21 データ処理装置、データ処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2019220003A true JP2019220003A (ja) 2019-12-26
JP7131115B2 JP7131115B2 (ja) 2022-09-06

Family

ID=69097083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018117930A Active JP7131115B2 (ja) 2018-06-21 2018-06-21 データ処理装置、データ処理方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7131115B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023159734A1 (zh) * 2022-02-24 2023-08-31 长鑫存储技术有限公司 数据传输电路、数据传输方法和存储器
US11853240B2 (en) 2022-02-24 2023-12-26 Changxin Memory Technologies, Inc. Data transmission circuit, data transmission method, and memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH022451A (ja) * 1987-12-22 1990-01-08 Kendall Square Res Corp マルチプロセッサ構造体のための相互接続システム
JPH1027164A (ja) * 1996-07-10 1998-01-27 Nippon Telegr & Teleph Corp <Ntt> 分散処理方法
JP2000285081A (ja) * 1999-03-31 2000-10-13 Fuji Xerox Co Ltd ノード間データ通信方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH022451A (ja) * 1987-12-22 1990-01-08 Kendall Square Res Corp マルチプロセッサ構造体のための相互接続システム
JPH1027164A (ja) * 1996-07-10 1998-01-27 Nippon Telegr & Teleph Corp <Ntt> 分散処理方法
JP2000285081A (ja) * 1999-03-31 2000-10-13 Fuji Xerox Co Ltd ノード間データ通信方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023159734A1 (zh) * 2022-02-24 2023-08-31 长鑫存储技术有限公司 数据传输电路、数据传输方法和存储器
US11853240B2 (en) 2022-02-24 2023-12-26 Changxin Memory Technologies, Inc. Data transmission circuit, data transmission method, and memory
TWI828250B (zh) * 2022-02-24 2024-01-01 大陸商長鑫存儲技術有限公司 數據傳輸電路、數據傳輸方法和記憶體

Also Published As

Publication number Publication date
JP7131115B2 (ja) 2022-09-06

Similar Documents

Publication Publication Date Title
CN114238204B (zh) 可重构并行处理
US7447720B2 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
US7340562B2 (en) Cache for instruction set architecture
JP2003296096A (ja) シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US7149875B2 (en) Data reordering processor and method for use in an active memory device
JPH0773149A (ja) データ処理システムとその方法
WO1992018935A1 (en) Data processor and data processing method
JPH0727516B2 (ja) Simdアレイ・プロセツサ
KR20030064239A (ko) 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러
US20060015701A1 (en) Arithmetic node including general digital signal processing functions for an adaptive computing machine
US7769980B2 (en) Parallel operation device allowing efficient parallel operational processing
JPH11212786A (ja) レジスタベースデータ処理のためのデータパスおよび方法
Lea ASP modules: cost-effective building-blocks for real-time DSP systems
JP3955741B2 (ja) ソート機能を有するsimd型マイクロプロセッサ
US20220391694A1 (en) Tensor dropout using a mask having a different ordering than the tensor
JP7131115B2 (ja) データ処理装置、データ処理方法、およびプログラム
US20220129247A1 (en) Semiconductor device and method of controlling the semiconductor device
JPH08123769A (ja) 並列プロセッサ
US7509479B2 (en) Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit
CN112074810B (zh) 并行处理设备
US11443014B1 (en) Sparse matrix multiplier in hardware and a reconfigurable data processor including same
WO2019093352A1 (ja) データ処理装置
JP6176162B2 (ja) データ処理装置
JP6432348B2 (ja) 演算装置及び演算方法
JPH01116730A (ja) デイジタル信号処理プロセツサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210517

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211013

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220808

R151 Written notification of patent or utility model registration

Ref document number: 7131115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151