(57)【要約】  複数ポートを有するメモリブロック（６０６）と、メモリブロック（６０６）の各ポートのアドレス生成器（６０４）と、演算器（６０３）と、を含む基本ユニット（６００）を水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備えたデータ処理装置である。
2016163421.tif 000002
【特許請求の範囲】
【請求項１】
複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、
各上記基本ユニットは、
同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、
複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、
上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、
同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、
外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、
上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニットの終端レジスタに同時に値を書き込むことを特徴とするデータ処理装置。
【請求項２】
各上記基本ユニットは、
各上記メモリブロックから取り出した複数ワードを１ワードに集約するマルチプレクサと、
集約した１ワードを同一ステージのＦＩＦＯに同時に供給するメモリバス及びスイッチ群と、
上記アドレス生成器により上記メモリブロックを読み出す際には、単一ワードを読み出し、同一ステージの上記基本ユニットに含まれるＦＩＦＯ及び当該基本ユニットの終端レジスタに同時に値を書き込むデータパスと、をさらに含み、
上記ＦＩＦＯに格納されたデータの位置を上記アドレス生成器により特定し、上記ＦＩＦＯを読み出し、上記基本ユニットの終端レジスタに格納することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
外部からのメモリ参照要求をキューイングするバッファと、
アドレス情報を各ステージの全ての上記メモリブロックに供給するデータバスと、をさらに備え、
上記メモリブロックからの読み出しの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別ｔａｇとの一致比較を行い、一致したｔａｇの上記メモリブロックから複数ワードを読み出し、上記基本ユニットの終端レジスタに同時に値を書き込み、
上記メモリブロックへの書き込みの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別ｔａｇとの一致比較を行い、一致したｔａｇの上記メモリブロックへの書き込みを行うことを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
各上記基本ユニットは、
上記アドレス生成器から各ウェイに接続された外部メモリにアドレス情報を送出するアドレスバスをさらに含み、
上記外部メモリからのデータが到着するまでの間、同一ステージに属する上記基本ユニットの上記アドレス生成器を用いて上記演算器の出力及び前ステージの上記終端レジスタに格納されたデータを当該基本ユニット内の上記メモリブロックに格納するとともに、
上記外部メモリからのデータ到着と同時に、上記アドレス生成器を用いて当該基本ユニット内の上記メモリブロックから読み出しを行い、
上記外部メモリからの到着データと上記演算器の出力とを、上記基本ユニットの終端レジスタに同時に書き込むことを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
上記基本ユニットの終端レジスタから次ステージに属する上記演算器または上記メモリブロックにデータを伝搬させることを特徴とする請求項１、２、４のいずれか１項に記載のデータ処理装置。
【請求項６】
外部からのメモリ参照要求をキューイングする上記バッファがステージ毎に設けられており、
各ステージに対して、アドレス情報を全ての上記メモリブロックに供給するデータバスをさらに備え、
複数のステージが、パイプライン動作することにより、外部からのメモリ参照要求を連続的に受理することを特徴とする請求項３に記載のデータ処理装置。
【請求項７】
各上記基本ユニットは、
各上記メモリブロックに同時に書き込むデータを放送するメモリ書き込み放送用バスと、
各上記メモリブロックから取り出した複数ワードを１ワードに集約するマルチプレクサと、
上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを読み出し、上記マルチプレクサを経由して同一ステージの上記基本ユニットに含まれる当該基本ユニットの終端レジスタに値を書き込むデータパスと、をさらに含むことを特徴とする請求項１に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに用いられるデータ処理装置に関する。
【背景技術】
【０００２】
従来、コンピュータシステムにおけるアクセラレータの構成方法として、外部キャッシュ共有型のＳＩＭＤ（single instruction stream, multiple data stream）方式及び主記憶共有型の外部アクセラレータ方式が知られている。【０００３】
汎用ＣＰＵ（central processing unit）がアクセラレータにデータを渡す場合、外部キャッシュ共有型であれば内蔵キャッシュメモリを外部キャッシュに書き戻す（フラッシュする）だけでよいものの、外部キャッシュメモリのデータ幅は一般にＳＩＭＤ程度の幅であるため、ＳＩＭＤ幅を超える多くのデータを一度に参照することができない。また、主記憶共有型であれば内蔵キャッシュおよび外部キャッシュの両方を主記憶に書き戻す（フラッシュする）必要があり、キャッシュフラッシュ時間が大きなオーバヘッドとなる。【０００４】
このため、コアから見ればキャッシュメモリとなり、アクセラレータから見ればそれらのローカルメモリとなる、バッファメモリを配置する構成が提案されている（非特許文献１（Fig.1b）を参照）。【０００５】
この構成によれば、キャッシュメモリとアクセラレータのローカルメモリとが共有化されているので、上述したようなオーバヘッドが緩和される。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Carlos Flores Fajardo, Zhen Fang, Ravi Iyer, German Fabila Garcia, Seung Eun Lee, Li Zhao, Buffer-Integrated-Cache: A Cost-Effective SRAM Architecture for Handheld and Embedded Platforms, Design Automation Conference (DAC), 2011 48th ACM/EDAC/IEEE Date of Conference: 5-9 June 2011 Page(s):966 - 971
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、非特許文献１の構成であっても、キャッシュメモリはアクセラレータの外部に配置されているので、アクセラレータとキャッシュメモリとの間のデータ転送が依然として必要であり、それゆえ、オーバヘッドの緩和にも限界があった。【０００８】
上記の課題に鑑み、本発明は、キャッシュメモリをアクセラレータの内部に配置することによりアクセラレータとキャッシュメモリとの間のデータ転送を不要とし、それにより、オーバヘッドの緩和を大きくすることができるデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明に係るデータ処理装置は、複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、各上記基本ユニットは、同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニット終端のレジスタに同時に値を書き込む。
【発明の効果】
【００１０】
本発明は、オーバヘッドの緩和を大きくすることができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】従来型のコンピュータシステムの構成を示すブロック図である。
【図２】本発明に係るコンピュータシステムの構成を示すブロック図である。
【図３】（ａ）、（ｂ）及び（ｃ）は、本発明が実現する機能要件１を説明する図である。
【図４】（ａ）、（ｂ）及び（ｃ）は、本発明が実現する機能要件２を説明する図である。
【図５】（ａ）、（ｂ）及び（ｃ）は、本発明が実現する機能要件３を説明する図である。
【図６】本発明に係るデータ処理装置を構成する基本ユニットの回路図である。
【図７】図６に示した基本ユニットの機能ブロック図である。
【図８】上記データ処理装置の概略構成を示すブロック図である。
【図９】上記データ処理装置で用いられるアドレスの構造を示す模式図である。
【図１０】上記データ処理装置の概略構成を示すブロック図である。
【図１１】上記データ処理装置の概略構成を示すブロック図である。
【図１２】上記データ処理装置の概略構成を示すブロック図である。
【図１３】本発明に係るデータ処理装置を構成する他の基本ユニットの回路図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、詳細に説明する。まず、本発明の基礎となる技術及びその課題などの基本説明を行った後、図面を参照して本発明の好適な実施形態について説明する。
【００１３】
〔基本説明〕
一般に、計算アクセラレータは、単独でＯＳ（operating system）や複雑なプログラムを走行させることが困難であるため、実用的システムの構築には汎用ＣＰＵとの連携が欠かせない。計算アクセラレータを汎用ＣＰＵに接続する際には、キャッシュメモリとの連携が重要であり、キャッシュラインをそのまま利用できるショートベクトル（ＳＩＭＤ）方式が一般に採用される。より大規模なアクセラレータが必要な場合、同様にＳＩＭＤを基本とする演算機構を二次キャッシュ（Ｌ２キャッシュ）に接続する。さらにロングベクトル方式を採用して大規模化する場合、主記憶（メインメモリ）に接続したり、主記憶とＤＭＡ（direct memory access）転送が可能な別のメモリ空間に接続したりする。
【００１４】
さて、グラフ処理に代表される非定型処理では、均一なデータ幅を確保できないため、ＳＩＭＤの効果は限定的である。かわりに、データ依存関係が多いことを利用すれば、ＣＧＲＡ（coarse-grained reconfigurable array）の効果が期待できる。ただし、ＣＧＲＡは、複数の内蔵メモリブロックの各々にアドレス範囲を設定し、各々を連続参照する利用が一般的であり、アドレスによりブロック位置が一意に決まる従来型キャッシュと共存させることは困難である。また、内蔵メモリに収容できない大規模グラフ処理のためには、ＣＧＲＡと主記憶とのシームレスな接続及び一体的なパイプライン化が重要であるものの、毎サイクル一斉演算を行うＣＧＲＡと長大な主記憶レイテンシとの共存も困難である。
【００１５】
このような困難から、グラフ処理の高速化を図るアクセラレータと汎用ＣＰＵとは、一般に、主記憶を介して接続する方法しかなく、本明細書の背景技術で述べたとおり、アクセラレータを使用する度に、キャッシュフラッシュなどのオーバヘッドが発生する。
【００１６】
そこで、本発明者らは、ステンシル計算などの高性能計算やグラフ処理などのビッグデータを処理可能な高効率な計算機を実現すべく、鋭意検討を重ねた結果、ＣＧＲＡ内蔵メモリブロックを、（１）ＳＩＭＤバッファ、（２）ステンシルメモリ、（３）キャッシュ、及び（４）主記憶レイテンシ隠蔽バッファの全てに利用可能とすることにより、これまで到底達し得なかった超高速の処理が得られることを見出し、発明を完成させるに至った。
【００１７】
図１は、従来型のコンピュータシステムの構成を示すブロック図、図２は、本発明に係るコンピュータシステムの構成を示すブロック図である。図１に示すように、従来型のコンピュータシステムの構成であれば、二次キャッシュ（Ｌ２キャッシュ）１０１はＣＧＲＡ内蔵メモリブロック（アクセラレータ）１０２の外部に配置されており、ＣＧＲＡ内蔵メモリブロック１０２の全ての内蔵メモリは、汎用ＣＰＵの主記憶１０３とは別空間である。このため、プログラマは、ＣＧＲＡ内蔵メモリブロック１０２の全ての内蔵メモリと二次キャッシュ１０１との間の値の整合性を保つために、キャッシュフラッシュを多用する必要がある。
【００１８】
これに対し、図２に示すように、本発明に係るコンピュータシステムの構成では、二次キャッシュをＣＧＲＡ内蔵メモリブロック２０１の内部に配置する。二次キャッシュは、汎用ＣＰＵから見れば二次キャッシュであり、ＣＧＲＡ内蔵メモリブロック２０１から見れば内蔵メモリである。つまり、二次キャッシュは、汎用ＣＰＵとＣＧＲＡ内蔵メモリブロック２０１との間で共有されることになる。これにより、プログラマは、ＣＧＲＡ内蔵メモリブロック２０１の内蔵メモリと主記憶２０２との間の明示的なデータ転送を意識する必要はなくなる。このため、内蔵キャッシュをフラッシュする際、ＣＧＲＡ内蔵メモリブロック２０１へのフラッシュのみで済むこととなり、主記憶２０２への書き戻しが無くなる。さらに、多数の、ＣＧＲＡ内蔵メモリブロックに対する同時データ参照が可能となるため、外部キャッシュ共有型従来システムのように、演算能力が外部キャッシュのバス幅で抑えられる制約もなくなる。
【００１９】
このように、本発明は、全面的なキャッシュフラッシュを不要とする、汎用ＣＰＵとのデータ共有機能を備える、コンピュータシステムにおけるアクセラレータの構成方法に関するものである。このようなデータ共有機能を備えるため、本発明には、次に述べる機能要件１、機能要件２、機能要件３及び機能要件４の実現が要求される。
【００２０】
（機能要件１）
図３は、本発明が実現する機能要件１を説明する図である。機能要件１は、複数ブロックから、連続する複数ワードを毎サイクル、同時読み出し可能であることである。図３の（ａ）において、連続領域３０１が１つのブロックに対応する。アドレス３０２は、毎サイクル、４ワード分増加する。連続領域３０１から、毎サイクル、４ワードのデータ３０３、３０４、３０５、３０６を同時に読み出す。
【００２１】
図３の（ｂ）は、図３の（ａ）に示した１つのブロックを複数連結し、容量を増加させた構成である。ブロック（連続領域）３１１、３１２、３１３が連結され、アドレス３１４は、毎サイクル、４ワード分増加し、ブロック３１１から、毎サイクル、４ワードのデータ３１５、３１６、３１７、３１８を同時に読み出す。ブロック３１２からの読み出し、ブロック３１３からの読み出しも、ブロック３１１と同様に行われる。
【００２２】
図３の（ｃ）は、図３の（ｂ）に示した複数のブロックから構成される１つのステージを複数連結した構成である。それぞれ複数のブロックが連結された、ステージ３２１、３２２、３２３が連結されている。アドレス３２４は、毎サイクル、４ワード分増加し、ステージ３２１の各ブロックから、毎サイクル、４ワードのデータを同時に読み出す。アドレス３２５、３２６も同様に、毎サイクル、４ワード分増加し、ステージ３２２、３２３の各ブロックから、毎サイクル、４ワードのデータを同時に読み出す。この構成の場合、ステージ数分の異なるアドレスを供給して、ステージ数分の複数ワード、毎サイクル、読み出しが可能である。
【００２３】
図３に示した構成は、ＳＩＭＤやグラフ処理の並列実行により高性能化を図るのに適している。
【００２４】
なお、ＳＩＭＤの場合は４ワードが配列の連続４要素に対応しており、読み出しデータは後続のＳＩＭＤ命令により一斉演算されるのに対し、グラフ処理の場合は４ワードが構造体配列の各メンバに対応しており、読み出しデータの扱いは各ワードによって異なる。すなわち後続命令が条件判断等を伴う複雑な命令となる点がＳＩＭＤとは異なる。
【００２５】
機能要件１により、ＳＩＭＤ計算時において、次のデータ供給能力が実現される。
【００２６】
アドレス数:全ステージ数
各データ幅:４ワード
なお、図３の（ｂ）に示した各ブロック３１１、３１２、３１３が、後述する図８に示す各ｗａｙに相当するものである。
【００２７】
（機能要件２）
図４は、本発明が実現する機能要件２を説明する図である。機能要件２は、複数ブロックから、連続する単一ワードを毎サイクル、同時読み出し可能であることである。図４の（ａ）において、連続領域４０１が１つのブロックに対応する。アドレス４０２は、毎サイクル、１ワード分増加する。連続領域４０１から、毎サイクル、１ワードのデータ４０３を読み出す。
【００２８】
図４の（ｂ）は、図４の（ａ）に示した１つのブロックを複数配置し、同時に読み出し可能な空間数を増加させた構成である。機能要件１では、連続アドレスから複数ワードを同時に読み出すのに対して、機能要件２では異なる連続アドレスから各々１ワードを同時に読み出す点が異なる。ブロック（連続領域）４１１、４１２、４１３が配置されており、アドレス４１４が毎サイクル、１ワード分増加し、ブロック４１１から、毎サイクル、１ワードのデータ４１７を読み出す。アドレス４１５が毎サイクル、１ワード分増加し、ブロック４１２から、毎サイクル、１ワードのデータ４１８を読み出す。アドレス４１６が毎サイクル、１ワード分増加し、ブロック４１３から、毎サイクル、１ワードのデータ４１９を読み出す。
【００２９】
図４の（ｃ）は、図４の（ｂ）に示した複数のブロックから構成される１つのステージを複数連結した構成である。この構成の場合、ステージ内ブロック数×ステージ数分の異なるアドレスを供給して、全ブロック数分の単一ワード毎サイクル読み出しが可能である。本構成は、次数の高いステンシル計算の並列実行により高性能化を図るのに適している。
【００３０】
それぞれ複数のブロックが配置された、ステージ４２１、４２２、４２３が連結されている。ステージ４２１には複数のブロックが配置されており、アドレス群４２４の各アドレスが毎サイクル、１ワード分増加し、各ブロックから、毎サイクル、１ワードのデータを読み出す。ステージ４２２には複数のブロックが配置されており、アドレス群４２５の各アドレスが毎サイクル、１ワード分増加し、各ブロックから、毎サイクル、１ワードのデータを読み出す。ステージ４２３には複数のブロックが配置されており、アドレス群４２６の各アドレスが毎サイクル、１ワード分増加し、各ブロックから、毎サイクル、１ワードのデータを読み出す。
【００３１】
機能要件２により、ステンシル計算時において、次のデータ供給能力が実現される。
【００３２】
アドレス数:全ブロック数（ステージ数×各ステージに含まれるブロック数）
各データ幅:１ワード
なお、図４の（ｂ）に示した各ブロック４１１、４１２、４１３が、後述する図８に示す各ｗａｙに相当するものである。
【００３３】
（機能要件３）
図５は、本発明が実現する機能要件３を説明する図である。機能要件３は、全ブロックのパイプライン探索及び該当行の読み出し・伝搬可能であることである。図５の（ａ）において、連続領域５０１が１つのブロックに対応する。連続領域５０１は複数のキャッシュラインを包含する構成であり、キャッシュラインの先頭に該当するアドレス５０２が供給される。機能要件１及び機能要件２とは異なり、機能要件３は、アドレスの一部によりキャッシュラインを特定した後、キャッシュライン毎に設けられた個別ｔａｇ情報５０３とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータ５０４、５０５、５０６、５０７を読み出す。
【００３４】
図５の（ｂ）は、一般的なキャッシュと同様に、キャッシュラインの衝突を抑制するための複数ｗａｙ（ウェイ）構成である。図５の（ａ）に示した１つのブロックを複数配置し、全てのｗａｙを同時に探索し、個別ｔａｇが一致したキャッシュラインのみを読み出す。ブロック５１１、５１２が配置されており、アドレス５１３、５１４の一部によりｗａｙのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別ｔａｇ情報５１５、５１６とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータ５１７、５１８、５１９、５２０を読み出す。
【００３５】
図５の（ｃ）は、図５の（ｂ）に示した複数のブロック（複数のｗａｙ）から構成される１つのステージを複数連結した構成である。この構成の場合、ステージ内ブロック数×ステージ数分の空間を４ｗａｙセットアソシアティブのキャッシュとして使用できる。
【００３６】
それぞれ複数のブロックが配置された、ステージ５２１、５２２、５２３が連結されている。ステージ５２１では、アドレス５２４の一部によりｗａｙのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別ｔａｇ情報５２７とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。ステージ５２２では、アドレス５２５の一部によりｗａｙのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別ｔａｇ情報５２８とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。ステージ５２３では、アドレス５２６の一部によりｗａｙのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別ｔａｇ情報５２９とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。
【００３７】
機能要件３により、キャッシュ利用時において、次のデータ供給能力がある。
【００３８】
アドレス数:１（パイプライン動作）
各データ幅:４ワード（パイプライン動作）
なお、図５の（ｂ）に示した各ブロック５１１、５１２が、後述する図８に示す各ｗａｙに相当するものである。
【００３９】
（機能要件４）
上述したグラフ処理のためには、機能要件１に加えて、主記憶参照時の遅延時間隠蔽のために各ブロックを利用できる必要がある。この遅延時間吸収機構が機能要件４となる。機能要件４については、後述の実施形態４で説明する。
【００４０】
（機能要件１〜４のまとめ）
本発明は、アクセラレータ（データ処理装置）に適するメモリ構成である機能要件１及び２と、キャッシュに適するメモリ構成である機能要件３を１つのハードウェア上で効率良く一度に実現することである。
【００４１】
性能及び機能を落すことなく、機能要件１、２、３の全てを実現するためには、ステージ位置の管理方法が重要である。機能要件１及び２では、あらかじめ、ソフトウェアが指定したステージに必要なデータを配置し、ステージ内に閉じたメモリ空間に対して読み書きできればよい。
【００４２】
しかし、機能要件３では、アドレスの一部を用いて、メモリブロックの位置を特定し、さらにアドレスの別の一部を用いて、メモリブロック内の相対位置を特定し、当該キャッシュラインが参照アドレスと正しく対応しているかを個別ｔａｇ比較により検証する必要がある。フルアソシアティブ構成とすれば、任意のステージ位置にキャッシュラインを対応付けることが論理的には可能であるものの、内蔵するメモリの総量は二次キャッシュ程度以上であるため、キャッシュライン数の多さから、従来型フルアソシアティブ方式の採用は現実的ではない。
【００４３】
そこで、機能要件１及び２のために、ソフトウェアがメモリブロック位置を明示的に指定可能とするとともに、機能要件３のために、パイプライン処理による実質的なフルアソシアティブキャッシュを実現可能とする。汎用ＣＰＵがデータの前処理を行い、ＣＧＲＡ型アクセラレータにデータを渡す場合、また、ＣＧＲＡ型アクセラレータの処理結果を汎用ＣＰＵが引き続き利用する場合に必要となるデータ共有を広範囲のキャッシュフラッシュを必要とすることなく可能とすることにより、処理の高速化が可能となる。
【００４４】
〔本発明の基本構成〕
図６、図７及び図８を用いて、本発明の基本構成について説明する。
【００４５】
図６は、本発明に係るデータ処理装置を構成する基本ユニットの回路図、図７は、図６に示した基本ユニットの機能ブロック図、図８は、本発明に係るデータ処理装置の概略構成を示すブロック図である。
【００４６】
図６及び図７に示すように、本発明に係るデータ処理装置を構成する基本ユニット６００は、レジスタ６０１と、演算バス及びスイッチ群６０２と、演算器６０３と、ストアユニット６０４ａ及びロードユニット６０４ｂを含むアドレス生成器６０４と、メモリバス及びスイッチ群６０５と、メモリブロック６０６と、マルチプレクサ６０７と、メモリバス及びスイッチ群６０８と、ＦＩＦＯ（first in, first out）６０９と、を備えている。なお、演算バス及びスイッチ群６０２、メモリバス及びスイッチ群６０５、並びに、メモリバス及びスイッチ群６０８は、水平方向に隣接する、同一のステージに含まれる基本ユニット６００を互いに接続するものである。本明細書では、便宜上、演算バス及びスイッチ群６０２等の、各基本ユニット６００と接続している部分を各基本ユニット６００に含まれるものとする。
【００４７】
レジスタ６０１（終端レジスタ）は、前ステージの基本ユニットから出力されるデータが書き込まれるレジスタである。なお、図６及び図７では、レジスタ６０１を基本ユニット６００の入力側に配置したが、基本ユニット６００の出力側に配置しても構わない。要は、レジスタ６０１は、垂直方向に前後する、異なる２つの基本ユニット（前ステージの基本ユニット及び後ステージの基本ユニット）のうちの、前ステージの基本ユニットの出力側に配置されるレジスタ及び後ステージの基本ユニットの入力側に配置されるレジスタを兼ねるものである。本発明では、図６及び図７に示した通り、レジスタ６０１を、その入力側に配置したものを基本ユニットと呼ぶ。
【００４８】
演算バス及びスイッチ群６０２は、メモリブロック６０６から読み出されるワードを演算器６０３に供給する。演算器６０３は、演算バス及びスイッチ群６０２から供給されるワードを用いて演算する。
【００４９】
アドレス生成器６０４は、メモリブロック６０６からの読み出し及びメモリブロック６０６への書き込みを行うためのアドレスを生成する。メモリバス及びスイッチ群６０５は、アドレス生成器６０４により生成されたアドレスに基づき、演算器６０３の演算結果をメモリブロック６０６に書き込む。
【００５０】
メモリブロック６０６は、上述した通り、キャッシュメモリとアクセラレータのローカルメモリとを兼ねるものである。マルチプレクサ６０７は、メモリブロック６０６から読み出されたワードを集約する。メモリバス及びスイッチ群６０８は、マルチプレクサ６０７により集約されたワードをＦＩＦＯ６０９に供給する。ＦＩＦＯ６０９は、書き込まれた時点が古いものから順に追い出す。
【００５１】
なお、図６に示すように、メモリブロック６０６及びメインメモリ（図示省略）から読み出されるデータ、並びに、メモリブロック６０６及びメインメモリへ書き込まれるデータを、転送するデータバス６１０が配置されている。
【００５２】
図８に示すように、本発明に係るデータ処理装置８００においては、図６及び図７に示した基本ユニット６００がマトリクス状に配置され、水平方向にｗａｙ数分配置したステージが、垂直方向に複数配置された二次元構造をなしている。
【００５３】
なお、図８においては、各基本ユニット６００が属するｗａｙ及びステージは、各基本ユニットに付された符号を用いて表されている。例えば、基本ユニット６００−０１は、その符号「６００−０１」の「０１」のうち、「０」がｗａｙ０に属することを表わし、「１」がステージ１に属することを表わしている。同様に、基本ユニット６００−１２であれば、その符号「６００−１２」の「１２」のうち、「１」がｗａｙ１に属することを表わし、「２」がステージ２に属することを表わしている。
【００５４】
データ処理装置８００は、汎用ＣＰＵがキャッシュミスした際、データ処理装置８００内のキャッシュ（Ｌ２キャッシュ）であるメモリブロック６０６の参照を要求するインタフェースを最上部に備え、さらにメモリブロック６０６にも存在しない場合にさらに下位の記憶装置（メインメモリ）へ参照を要求するインタフェースを最下部に備える。
【００５５】
基本ユニット６００は、上述した通り、Ｗｒｉｔｅ専用のストアユニット６０４ａ及びＲｅａｄ専用のロードユニット６０４ｂを含むアドレス生成器６０４を備えており、ＲｅａｄとＷｒｉｔｅを同時に行うことができる。メモリブロック６０６では、右から左方向へアドレスが増加する順にワード（例では８バイト）が配置され、連続８ワードにより１キャッシュラインが構成されている。５１２組のキャッシュラインから構成される場合、容量は３２ＫＢとなる。
【００５６】
各ステージは、４つの基本ユニットから構成され、右から順にｗａｙ０、ｗａｙ１、ｗａｙ２、ｗａｙ３を構成する。各ｗａｙに対して主記憶（メインメモリ）が接続されており、異なるｗａｙに対して同時に主記憶間転送が可能である。
【００５７】
メモリブロック６０６からの読み出し方法は２通りあり、４ワードを同時読み出して、次ステージの基本ユニット６００のレジスタ６０１に格納するか、または、１ワードを読み出して上述のレジスタ６０１に格納すると同時に同一ステージのＦＩＦＯ６０９に書き込むかのいずれかを選択する。前者が機能要件１に対応し、後者が機能要件２に対応する。
【００５８】
以下、上述した機能要件１〜４に対応する、（１）ＳＩＭＤ計算、（２）ステンシル計算、（３）大容量キャッシュ、（４）グラフ処理、の４種類の計算における挙動を説明する。本発明の特徴は、４種類の参照方法それぞれに対して最適化が可能であるとともに、切替えのデータ移動が最小限で済む点にある。
【００５９】
以下、図９〜図１２を用いて、データ処理装置８００の動作を説明する。図９は、データ処理装置８００で用いられるアドレス９００の構造を示す模式図である。図９に示すように、アドレス９００は、Ｔａｇ９０１と、Ｓｔａｇｅｉｎｄｅｘ９０２と、Ｌｏｆｆｓ９０３と、Ｌｂｙｔｅ９０４とから構成されている。また、図１０〜図１２は、図８の拡大図である。
【００６０】
（実施形態１）：ＳＩＭＤ計算時
図９〜図１２を用いて、ＳＩＭＤ計算時における、データ処理装置８００の動作を説明する。
【００６１】
図１０において、ステージ１では、ｗａｙ２の基本ユニット６００−２１に配列Ｂ、ｗａｙ１の基本ユニット６００−１１に配列Ｃ、ｗａｙ０の基本ユニット６００−０１に配列Ｄが写像される。基本ユニット６００−２１のロードユニット６０４ｂ、基本ユニット６００−１１のロードユニット６０４ｂ及び基本ユニット６００−０１のロードユニット６０４ｂにより、３つの４倍幅ロード命令が連続実行される。
【００６２】
このようなロード命令の連続実行による、４組のＢ、Ｃ、Ｄ要素は、ステージ２では、ｗａｙ３の基本ユニット６００−３２の演算器６０３、ｗａｙ２の基本ユニット６００−２２の演算器６０３、ｗａｙ１の基本ユニット６００−１２の演算器６０３、ｗａｙ０の基本ユニット６００−０２の演算器６０３に入力され、演算結果が、ｗａｙ３の基本ユニット６００−３２のメモリブロック６０６に格納される。
【００６３】
同時に、次の連続実行に備えて、ステージ２では、ｗａｙ２の基本ユニット６００−２２のメモリブロック６０６、ｗａｙ１の基本ユニット６００−１２のメモリブロック６０６、ｗａｙ０の基本ユニット６００−０２のメモリブロック６０６に主記憶（メインメモリ）からプリフェッチをするとともに、ステージ１では、ｗａｙ３の基本ユニット６００−３１のメモリブロック６０６に格納された前回の実行結果を主記憶へ書き戻す。
【００６４】
本実行モデルでは、命令写像を１ステージずつ下方にシフトし、プリフェッチしたデータを次ステージで使用する。メモリブロックの容量制約により連続実行が分断される欠点があるが、実行中に、メモリブロックへの書き込みと読み出しの速度差を調整する必要がない。
【００６５】
一方、図１１及び図１２を用いて、ステージ４及びステージ５にて、命令写像のシフトが不要な使用方法を示す。ステージ４では、主記憶から、ｗａｙ２の基本ユニット６００−２４のメモリブロック６０６、ｗａｙ１の基本ユニット６００−１４のメモリブロック６０６、ｗａｙ０の基本ユニット６００−０４のメモリブロック６０６に供給しつつ、各メモリブロック６０６から読み出しを行う。また、ステージ５では、ｗａｙ３の基本ユニット６００−３５の演算器６０３、ｗａｙ２の基本ユニット６００−２５の演算器６０３、ｗａｙ１の基本ユニット６００−１５の演算器６０３、ｗａｙ０の基本ユニット６００−０５の演算器６０３の各演算結果を、ｗａｙ３の基本ユニット６００−３５のメモリブロック６０６に格納しつつ、このメモリブロック６０６から主記憶へ書き戻す。
【００６６】
各ｗａｙに接続されるデータバス６１０が全て稼働する理想的状態である。各メモリブロック６０６への書き込みと読み出しの速度差を調整する必要があるものの、連続実行が分断される欠点がない。
【００６７】
（実施形態２）：ステンシル計算時
図９〜図１２を用いて、ステンシル計算時における、データ処理装置８００の動作を説明する。ステージ１では、ｗａｙ０の基本ユニット６００−０１のメモリブロック６０６から読み出した各１ワードデータが、ｗａｙ２の基本ユニット６００−２１のＦＩＦＯ６０９、ｗａｙ１の基本ユニット６００−１１のＦＩＦＯ６０９に送信される。ステージ２では、６ワードのデータがｗａｙ２の基本ユニット６００−２２の演算器６０３、ｗａｙ１の基本ユニット６００−１２の演算器６０３に供給される。
【００６８】
同様に、ステージ２では、ｗａｙ０の基本ユニット６００−０２のメモリブロック６０６から読み出した各１ワードデータが、ｗａｙ２の基本ユニット６００−２２のＦＩＦＯ６０９、ｗａｙ１の基本ユニット６００−１２のＦＩＦＯ６０９に送信される。ステージ３では、６ワードのデータがｗａｙ２の基本ユニット６００−２３の演算器６０３、ｗａｙ１の基本ユニット６００−１３の演算器６０３に供給される。
【００６９】
同様に、ステージ３では、ｗａｙ０の基本ユニット６００−０３のメモリブロック６０６から読み出した各１ワードデータが、ｗａｙ２の基本ユニット６００−２３のＦＩＦＯ６０９、ｗａｙ１の基本ユニット６００−１３のＦＩＦＯ６０９に送信される。ステージ４では、６ワードのデータがｗａｙ２の基本ユニット６００−２４の演算器６０３、ｗａｙ１の基本ユニット６００−１４の演算器６０３に供給される。
【００７０】
このように、ステージ１、２、３の各ｗａｙ０のメモリブロック６０６から読み出した各１ワードデータが同一ステージのＦＩＦＯ６０９に送信され、ステージ毎に同時に６ワードのデータを次ステージの演算器６０３に供給する。ステンシル計算の場合、メモリブロックを最大限に再利用するために、前述した命令写像のシフト機能を併用する。
【００７１】
（実施形態３）：キャッシュ機能時
図９〜図１２を用いて、キャッシュ機能時における、データ処理装置８００の動作を説明する。汎用ＣＰＵによりデータ処理装置８００の最上部のインタフェースに格納された、データ処理装置８００内の各基本ユニット６００のメモリブロック６０６の参照を要求する参照要求から、アドレスを連続的に取り出し、ｗａｙ３−０のアドレスバスを使用してｔａｇ比較を行う。参照要求はステージ１から順にステージ２、ステージ３と、各ステージに設けられたバッファを介して、下方へ伝搬され、全ステージをパイプライン的に参照する。Ｔａｇが一致したｗａｙからは、４ワード分のデータを読み出して下方へ伝搬する。
【００７２】
なお、各ステージにおいては、一般的なセットアソシアティブキャッシュと同様、全てのｗａｙは同時動作する。ヒットした場合、キャッシュライン全体の読み出しが必要であるため、一度にキャッシュライン全体を読み出すだけのバス幅がない場合、複数サイクルを用いて読み出す。本実施形態の場合は２サイクル連続で読み出しを行うため、参照要求の受け付けは２サイクルに１回となる。また、参照要求を受け付けてから当該キャッシュにヒットした場合のレイテンシは、ステージ数分となる。
【００７３】
なお、Ｌ１キャッシュはＬ２キャッシュ（メモリブロック６０６）に対してinclusiveなので、Ｌ１キャッシュのフラッシュ動作は、必ずＬ２キャッシュにヒットする。このため、Ｌ１キャッシュを全フラッシュに要する時間は一定である。
【００７４】
（実施形態４）：グラフ計算時
図９〜図１２を用いて、キャッシュ機能時における、データ処理装置８００の動作を説明する。ステージ１にて、Ｗａｙ０に接続された主記憶（メインメモリ）から隣接頂点データがｗａｙ０の基本ユニット６００−０１のメモリブロック６０６に供給されている。なお、前述のように、必ずしも命令写像をシフトする必要がないグラフ計算の場合、ステージ１に主記憶から隣接頂点データを供給しつつ、ステージ１にて同時に隣接頂点データを読み出してもよい。
【００７５】
ステージ２において条件判断及び主記憶直接参照要求を行う。ステージ１からステージ２を経由してステージ３にデータを伝搬させる場合、主記憶直接参照要求のレイテンシに合わせた遅延挿入が必要である。このために、ステージ２にて、ｗａｙ３の基本ユニット６００−３２のメモリブロック６０６、ｗａｙ２の基本ユニット６００−２２のメモリブロック６０６、をＦＩＦＯとして使用し、レイテンシを吸収している。ステージ１からｗａｙ３の基本ユニット６００−３２、ｗａｙ２の基本ユニット６００−２２に供給されるデータと、主記憶からｗａｙ１の基本ユニット６００−１２に読み込まれたデータの出力タイミングを揃えて、ステージ３に供給している。
【００７６】
また、ステージ３からは、さらに主記憶へトランザクションを発行している。
【００７７】
本実施形態では、隣接頂点データの読み出しにｗａｙ０、主記憶直接参照要求にｗａｙ１、トランザクション発行にｗａｙ２、メモリブロックへの書き戻しにｗａｙ３のバスを各々使用しており、主記憶参照のトラフィックが互いに干渉しないようスケジューリングできている。
【００７８】
（実施形態５）
図１３は、本発明の実施形態５に係るデータ処理装置を構成する基本ユニット６００Ａの回路図である。本実施形態５に係るデータ処理装置を構成する基本ユニット６００Ａと上述の実施形態１〜４に係るデータ処理装置を構成する基本ユニット６００とで異なる点は、基本ユニット６００Ａにおいて、基本ユニット６００のメモリバス及びスイッチ群６０８と、ＦＩＦＯ６０９とに代えて、メモリ書き込み放送用バス６１１を備えた点である。
【００７９】
基本ユニット６００においては、メモリバス及びスイッチ群６０８が、マルチプレクサ６０７により集約されたワードを自ユニットおよび水平方向に隣接する他ユニットのＦＩＦＯ６０９に供給し、各ユニットのＦＩＦＯ６０９が、書き込まれた時点が古いものから順に追い出す構成であった。
【００８０】
基本ユニット６００においては、マルチプレクサ６０７により集約されたワードは自ユニットおよび水平方向に隣接する他ユニットのＦＩＦＯ６０９に書きためられ、必要なデータが揃った時点で次ステージに一斉供給される。このことは、次ステージへのデータ供給の遅延を招くことになる。また、ＦＩＦＯ６０９の初期化は次ステージへのデータ供給のオーバヘッドであり、上述と同様、データ供給の遅延を招くことにつながる。
【００８１】
これに対し、基本ユニット６００Ａにおいては、ＦＩＦＯ６０９、及び、ＦＩＦＯ６０９に集約されたワードを供給するメモリバス及びスイッチ群６０８を不要とし、その代わりに、メモリ書き込み放送用バス６１１を設け、メモリ書き込み放送用バス６１１を用いて、水平方向に隣接する複数ユニットのメモリブロック６０６へ同一内容を書き込む。これにより、水平方向に隣接する複数ユニットは、ＦＩＦＯが充填されるのを待つことなく、各メモリブロックから直ちにデータを読み出し、次ステージへのデータ供給を行うことができる。
【００８２】
例えば、上述の実施形態２における基本ユニット６００においては、ステージ１では、ｗａｙ０の基本ユニット６００−０１のメモリブロック６０６から読み出した各１ワードデータが、ｗａｙ２の基本ユニット６００−２１のＦＩＦＯ６０９、ｗａｙ１の基本ユニット６００−１１のＦＩＦＯ６０９に送信される。各ＦＩＦＯ６０９への送信は、メモリブロック６０６から１ワードごと読み出されることにより、実行される。そして、ＦＩＦＯ６０９に６ワードのデータが揃うと、６ワードのデータが次ステージに供給される。
【００８３】
これに対し、基本ユニット６００Ａにおいては、基本ユニット６００とは異なり、メモリ書き込み放送用バス６１１により、ｗａｙ０の基本ユニット６００−０１、ｗａｙ１の基本ユニット６００−１１、ｗａｙ２の基本ユニット６００−２１の全てのメモリブロック６０６に対して同一内容を書き込み、各々のメモリブロックから各２ワードのデータが同時に読み出され、合計６ワードのデータが次ステージのレジスタ６０１に送信されることになる。
【００８４】
ステージ２、ステージ３においても同様である。
【００８５】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【００８６】
なお、本発明は、以下のようにも表現することができる。すなわち、本発明に係るデータ処理装置は、複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、各上記基本ユニットは、同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニット終端のレジスタに同時に値を書き込む。
【００８７】
各上記基本ユニットは、各上記メモリブロックから取り出した複数ワードを１ワードに集約するマルチプレクサと、集約した１ワードを同一ステージのＦＩＦＯに同時に供給するメモリバス及びスイッチ群と、上記アドレス生成器により上記メモリブロックを読み出す際には、単一ワードを読み出し、同一ステージの上記基本ユニットに含まれるＦＩＦＯ及び当該基本ユニット終端のレジスタに同時に値を書き込むデータパスと、をさらに含み、上記ＦＩＦＯに格納されたデータの位置を上記アドレス生成器により特定し、上記ＦＩＦＯを読み出し、上記基本ユニット終端のレジスタに格納することが好ましい。
【００８８】
外部からのメモリ参照要求をキューイングするバッファと、アドレス情報を各ステージの全ての上記メモリブロックに供給するデータバスと、をさらに備え、上記メモリブロックからの読み出しの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別ｔａｇとの一致比較を行い、一致したｔａｇの上記メモリブロックから複数ワードを読み出し、上記基本ユニット終端のレジスタに同時に値を書き込み、上記メモリブロックへの書き込みの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別ｔａｇとの一致比較を行い、一致したｔａｇの上記メモリブロックへの書き込みを行うことが好ましい。
【００８９】
各上記基本ユニットは、上記アドレス生成器から各ウェイに接続された外部メモリにアドレス情報を送出するアドレスバスをさらに含み、上記外部メモリからのデータが到着するまでの間、同一ステージに属する上記基本ユニットの上記アドレス生成器を用いて上記演算器の出力及び前ステージの終端レジスタを当該基本ユニット内の上記メモリブロックに格納するとともに、上記外部メモリからのデータ到着と同時に、上記アドレス生成器を用いて当該基本ユニット内の上記メモリブロックから読み出しを行い、上記外部メモリからの到着データと上記演算器の出力とを、上記基本ユニット終端のレジスタに同時に書き込むことが好ましい。
【００９０】
上記基本ユニット終端のレジスタから次ステージに属する上記演算器または上記メモリブロックにデータを伝搬させることが好ましい。
【００９１】
外部からのメモリ参照要求をキューイングする上記バッファがステージ毎に設けられており、各ステージに対して、アドレス情報を全ての上記メモリブロックに供給するデータバスをさらに備え、複数のステージが、パイプライン動作することにより、外部からのメモリ参照要求を連続的に受理することが好ましい。
【００９２】
上記構成によれば、汎用ＣＰＵがデータの前処理を行い、データ処理装置にデータを渡す場合及び、データ処理装置の処理結果を汎用ＣＰＵが引き続き利用する場合に必要となるデータ共有を広範囲のキャッシュフラッシュを必要とすることなく可能とすることにより、処理の高速化が可能となる。
【００９３】
各上記基本ユニットは、各上記メモリブロックに同時に書き込むデータを放送するメモリ書き込み放送用バスと、各上記メモリブロックから取り出した複数ワードを１ワードに集約するマルチプレクサと、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを読み出し、上記マルチプレクサを経由して同一ステージの上記基本ユニットに含まれる当該基本ユニットの終端レジスタに値を書き込むデータパスと、をさらに含むことが好ましい。
【産業上の利用可能性】
【００９４】
本発明は、コンピュータシステムにおけるアクセラレータに利用することができる。
【符号の説明】
【００９５】
６００、６００Ａ  基本ユニット
６０１  レジスタ
６０３  演算器
６０４  アドレス生成器
６０６  メモリブロック
６０７  マルチプレクサ
６０９  ＦＩＦＯ
６１０  データバス
６１１  メモリ書き込み放送用バス
８００  データ処理装置
【図１】
2016163421.tif 000003
【図２】
2016163421.tif 000004
【図３】
2016163421.tif 000005
【図４】
2016163421.tif 000006
【図５】
2016163421.tif 000007
【図６】
2016163421.tif 000008
【図７】
2016163421.tif 000009
【図８】
2016163421.tif 000010
【図９】
2016163421.tif 000011
【図１０】
2016163421.tif 000012
【図１１】
2016163421.tif 000013
【図１２】
2016163421.tif 000014
【図１３】
2016163421.tif 000015
【国際調査報告】
2016163421.tif 000016
2016163421.tif 000017