(57)【要約】  複数の基本ユニット（１０）が相互接続されるデータ処理装置（１）である。各基本ユニット（１０）はユニット間レジスタ部（１１）を含み、各基本ユニット（１０）は、ユニット間レジスタ部（１１）からデータを読み出し、当該データを用いた演算後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部（２１）のうちの各実行サイクルに対応するレジスタ群を更新する演算をパイプライン実行する。
2018207883.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器及び複数のレジスタを備え、アキュムレート演算可能な自己ループ構造を持つ、複数のユニットが相互接続されるデータ処理装置であって、
各ユニットは、各ユニットの前段のユニット側に配置されたユニット間レジスタ部を含み、
前記各ユニットは、前記ユニット間レジスタ部からデータを読み出し、当該データを用いて演算を行った後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部のうちの各実行サイクルに対応するレジスタを更新する演算をパイプライン実行することにより、自己ループ命令を含む命令から構成される命令列を実行することを特徴とするデータ処理装置。
【請求項２】
前記各ユニットは、前記ユニット間レジスタ部からアドレス情報を読み出し、当該アドレス情報を用いてアドレスを生成した後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部を更新するメモリ読み出しをパイプライン実行することにより、自己ループアドレス生成を含むメモリ参照命令から構成される命令列を実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記各ユニットは、メモリブロック、及び前記生成されたアドレスを書き換えるアドレス書き換え部を含み、
前記各ユニットは、
前記メモリブロックを分割する場合には、前記アドレス書き換え部によって書き換えられたアドレスを用いて前記メモリブロックへの書き込みを行い、
前記メモリブロックを分割しない場合には、前記生成されたアドレスを用いて前記メモリブロックへの書き込みを行うことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記ユニット間レジスタ部は、第１レジスタ群及び第２レジスタ群を含み、
前記各ユニットは、前記第１レジスタ群及び第２レジスタ群を、それぞれ、書き込みレジスタ群又は読み出しレジスタ群として、排他的に使用することを特徴とする請求項１〜３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記各ユニットは、前記ユニット間レジスタ部から読み出されたアドレス情報を用いてアドレスを生成するアドレス生成器を含み、
各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、前記メモリブロックを参照することを特徴とする請求項３に記載のデータ処理装置。
【請求項６】
前記各ユニットは、１つの前記演算器と、１組の前記アドレス生成器及び前記アドレス書き換え部と、１つの前記メモリブロックとを用いて、各実行サイクルに対応する、実行サイクル数分の前記演算器と、実行サイクル数組の前記アドレス生成器及び前記アドレス書き換え部と、実行サイクル数分のメモリブロックとを有するハードウェア構成の機能と等価な機能を提供することを特徴とする請求項５に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに用いられるデータ処理装置に関する。
【背景技術】
【０００２】
複数の演算器を二次元ネットワークにより相互接続した構成を備えたシストリックアレイ型アクセラレータが従来技術として知られている（特許文献１）。【０００３】
特許文献１に開示された従来のアクセラレータでは、その配線量の多さがＦＰＧＡ（Field Programmable Gate Array）やＬＳＩ（Large Scale Integrated Circuit）に実装する際の問題となりやすい。ＦＰＧＡやＬＳＩの回路規模が大きくなればなるほど、配線の信号遅延が増大することになるからである。【０００４】
また、特許文献１のアクセラレータでは、各演算器には自演算器の結果を自身の入力にバイパスさせる自己ループが備えられている。各演算器が自演算器の結果を自演算器で使用するためである。【０００５】
演算器の自己ループ構造が必要となるアキュムレート演算に対応するためには、演算器をパイプライン化して演算器の性能を向上させる手法を適用することはできない。非パイプライン処理は演算器の使用効率を低下させる要因となる。【０００６】
例えば、特許文献１のアクセラレータでは、演算器は複数のブロックから構成されており、その回路構成からすればパイプライン処理は可能であるといえる。しかし、演算結果を次の実行サイクルの入力とする演算を実行する場合、各ブロック間でデータの受け渡しが必要となるので、パイプライン処理を行うことはできない。それゆえ、演算回路の使用率は数分の１程度になり、その使用効率は低下することになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１６／１６３４２１号（２０１６年１０月１３日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の一態様は、シストリックアレイ型アクセラレータにおいて、配線量の削減及び演算器の使用効率の向上を同時に達成可能なデータ処理装置を実現することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の一態様に係るデータ処理装置は、複数の演算器及び複数のレジスタを備え、アキュムレート演算可能な自己ループ構造を持つ、複数のユニットが相互接続されるデータ処理装置であって、各ユニットは、各ユニットの前段のユニット側に配置されたユニット間レジスタ部を含み、前記各ユニットは、前記ユニット間レジスタ部からデータを読み出し、当該データを用いて演算を行った後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部のうちの各実行サイクルに対応するレジスタを更新する演算をパイプライン実行することにより、自己ループ命令を含む命令から構成される命令列を実行する。【００１０】
上記構成によれば、配線量の削減及び演算器の使用効率の向上が図られる。【００１１】
前記各ユニットは、前記ユニット間レジスタ部からアドレス情報を読み出し、当該アドレス情報を用いてアドレスを生成した後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部を更新するメモリ読み出しをパイプライン実行することにより、自己ループアドレス生成を含むメモリ参照命令から構成される命令列を実行することが好ましい。【００１２】
前記各ユニットは、メモリブロック、及び前記生成されたアドレスを書き換えるアドレス書き換え部を含み、前記各ユニットは、前記メモリブロックを分割する場合には、前記アドレス書き換え部によって書き換えられたアドレスを用いて前記メモリブロックへの書き込みを行い、前記メモリブロックを分割しない場合には、前記生成されたアドレスを用いて前記メモリブロックへの書き込みを行うことが好ましい。【００１３】
前記ユニット間レジスタ部は、第１レジスタ群及び第２レジスタ群を含み、前記各ユニットは、前記第１レジスタ群及び第２レジスタ群を、それぞれ、書き込みレジスタ群又は読み出しレジスタ群として、排他的に使用することが好ましい。【００１４】
前記各ユニットは、前記ユニット間レジスタ部から読み出されたアドレス情報を用いてアドレスを生成するアドレス生成器を含み、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、前記メモリブロックを参照することが好ましい。【００１５】
前記各ユニットは、１つの前記演算器と、１組の前記アドレス生成器及び前記アドレス書き換え部と、１つの前記メモリブロックとを用いて、各実行サイクルに対応する、実行サイクル数分の前記演算器と、実行サイクル数組の前記アドレス生成器及び前記アドレス書き換え部と、実行サイクル数分のメモリブロックとを有するハードウェア構成の機能と等価な機能を提供することが好ましい。
【発明の効果】
【００１６】
本発明の一態様によれば、シストリックアレイ型アクセラレータにおいて、配線量の削減及び演算器の使用効率の向上を同時に達成することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るデータ処理装置のハードウェア構成を示す模式図である。
【図２】上記データ処理装置が実行するデータ処理（レジスタ更新）の処理手順を示すタイミングチャートである。
【図３】上記データ処理装置に含まれるユニット間レジスタ部の配置構成を説明するための説明図である。（ａ）は、上記ユニット間レジスタ部を示し、（ｂ）は、（ａ）のユニット間レジスタ部に含まれる第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１３４及び第２ユニット間レジスタ要素Ｑ１０１〜Ｑ１３４のそれぞれに対応する識別符号を示す。
【図４】上記データ処理装置に含まれるアドレス書き換え部の動作を説明するための説明図である。（ａ）は、アドレス書き換え部が実行する第１モード処理を説明するための説明図、（ｂ）は、アドレス書き換え部が実行する第２モード処理を説明するための説明図である。
【図５】上記データ処理装置が実行するデータ処理（メモリ参照）の処理手順を示すタイミングチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、詳細に説明する。
【００１９】
（データ処理装置１の構成）
図１は、本発明の実施形態に係るデータ処理装置１のハードウェア構成を示す模式図である。データ処理装置１は、複数の演算器を二次元ネットワークにより相互接続した構成を備えたシストリックアレイ型アクセラレータを構成する。
【００２０】
図１に示すように、データ処理装置１は、ユニット間レジスタ部１１と、演算バス及びスイッチ群１２と、アドレス設定部１３と、データ保持部１４と、演算器１５と、アドレス生成器１６と、アドレス書き換え部１７と、メモリブロック１８と、マルチプレクサ１９と、を含む、複数の基本ユニット１０（ユニット）が相互に接続された構成を備える。
【００２１】
複数の基本ユニット１０は１列に並べられる。また、複数の基本ユニット１０の列には折り返しがあっても構わない。さらに、複数の基本ユニット１０はリング状に並べられても良い。互いに隣接する各基本ユニット１０間においては、前段の基本ユニット１０から後段の基本ユニット１０へデータが転送される。
【００２２】
ユニット間レジスタ部１１は、前段の基本ユニットから転送されるデータを格納する。ユニット間レジスタ部１１は、所謂ダブルバッファリングを用いる。ユニット間レジスタ部１１は、第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１３４から構成された第１レジスタ群１１ａ及び第２ユニット間レジスタ要素Ｑ１０１〜Ｑ１３４から構成された第２レジスタ群１１ｂを含む。なお、ユニット間レジスタ部２１は、基本ユニット１０に隣接する後段の基本ユニット（図示省略）に含まれるものである。ユニット間レジスタ部２１の機能はユニット間レジスタ部１１の機能と同一である。
【００２３】
演算バス及びスイッチ群１２は、ユニット間レジスタ部１１から読み出されるデータを演算器１５に供給する。演算器１５は、演算バス及びスイッチ群１２から供給されるデータを用いて演算する。
【００２４】
また、演算バス及びスイッチ群１２は、ユニット間レジスタ部１１から読み出されるデータをアドレス生成器１６に供給する。アドレス生成器１６は、アドレス設定部１３から読み出されるアドレス情報及び演算バス及びスイッチ群１２から供給されるデータを用いてアドレス生成する。アドレス生成器１６は、自己ループアドレス生成を含むメモリ参照命令を生成可能である。
【００２５】
アドレス設定部１３には、命令バッファ（図示省略）から読み出されるプログラムに予め記載されたアドレス情報が設定される。アドレス設定部１３は、アドレス生成器１６の入力数に合わせて、４つのアドレス設定要素を含む。なお、命令バッファは、例えば、コンフィギュレーションメモリであり、公知のＣＧＲＡ（Coarse-Grained Reconfigurable Architecture）を構成し、コンフィギュレーションデータを格納する。
【００２６】
データ保持部１４は、演算器１５及びアドレス生成器１６の各々に入力されるデータ及び各々から出力されるデータ、並びに、各々の内部のデータを一時的に保持するバッファである。データ保持部１４は、第１保持部１４ａ、第２保持部１４ｂ、第３保持部１４ｃ及び第４保持部１４ｄを含む。第１保持部１４ａは、演算器１５及びアドレス生成器１６の各々に入力されるデータを保持し、第４保持部１４ｄは、演算器１５及びアドレス生成器１６の各々から出力されるデータを保持する。また、第２保持部１４ｂ及び第３保持部１４ｃは、演算器１５及びアドレス生成器１６の各々の内部のデータを保持する。
【００２７】
演算器１５は、第１演算ブロック１５ａ、第２演算ブロック１５ｂ及び第３演算ブロック１５ｃを含む。演算器１５は、自己ループ構造を備えており、第３演算ブロック１５ｃの出力を第１演算ブロック１５ａの入力とする。演算器１５は、自己ループ命令を含む命令から構成される命令列を実行可能である。
【００２８】
アドレス生成器１６は、Ｗｒｉｔｅ専用のストアユニット１６ａ及びＲｅａｄ専用のロードユニット１６ｂを含む。アドレス生成器１６は、Ｒｅａｄ及びＷｒｉｔｅを同時に行う。アドレス生成器１６は、メモリブロック１８からの読み出し及びメモリブロック１８への書き込みを行うためのアドレス情報を生成する。
【００２９】
アドレス書き換え部１７は、アドレス生成器１６が生成するアドレスを書き換える。
【００３０】
メモリブロック１８には、アドレス書き換え部１７によって書き換えられたアドレスに基づき、演算器１５の演算結果が書き込まれる。
【００３１】
マルチプレクサ１９は、メモリブロック１８から読み出されたデータを集約する。マルチプレクサ１９は、集約したデータをユニット間レジスタ部２１に供給する。
【００３２】
ここで、データ処理装置１において注目すべきことは、複数の基本ユニット１０が１列に並べられた、一本の基本ユニットの列（以下、「基本ユニット列」と称する。）を用いて、あたかも、複数の基本ユニット列（ここでは４列）があるかのごとく、複数の演算を行うことが可能となる回路構成を実現した点にある。すなわち、データ処理装置１は、論理的には４列、物理的には１列である回路構成を実現する。このような回路構成を実現することによって、配線量の削減及び演算器の使用効率の向上が図られる。
【００３３】
従来のシストリックアレイ型アクセラレータでは、上述の基本ユニット列に相当する基本ユニット列を４列配置しており、物理的に４列である回路構成を備えていた。そのため、配線量が多く、また、演算器の使用効率が低いという課題があった。
【００３４】
これに対し、データ処理装置１では、図１に示した基本ユニット１０は１列のみであり、それにより、従来と比較して、配線量を削減し、且つ、演算器の使用効率を高くする。
【００３５】
以下、上述の注目すべき点について、さらに説明を続ける。
【００３６】
上述のとおり、データ処理装置１では、基本ユニット列を用いて、４列分の機能をパイプライン処理することによって、論理的には４列、物理的には１列である回路構成を実現する。このため、データ処理装置１は、以下の特徴的な回路構成を備える。
【００３７】
図１に示したように、まず、ユニット間レジスタ部１１に含まれる第１レジスタ群１１ａ及び第２レジスタ群１１ｂは、それぞれ、４組のレジスタ要素群から構成される。すなわち、第１レジスタ群１１ａは、第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１０４からなる組、第１ユニット間レジスタ要素Ｐ１１１〜Ｐ１１４からなる組、第１ユニット間レジスタ要素Ｐ１２１〜Ｐ１２４からなる組、及び、第１ユニット間レジスタ要素Ｐ１３１〜Ｐ１３４からなる組から構成される。各組は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００３８】
第２レジスタ群１１ｂは、第２ユニット間レジスタ要素Ｑ１０１〜Ｑ１０４からなる組、第２ユニット間レジスタ要素Ｑ１１１〜Ｑ１１４からなる組、第２ユニット間レジスタ要素Ｑ１２１〜Ｑ１２４からなる組、及び、第２ユニット間レジスタ要素Ｑ１３１〜Ｑ１３４からなる組から構成される。各組は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００３９】
次に、アドレス設定部１３に含まれる４個のアドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲは、それぞれ、４個の領域から構成される。すなわち、ＥＡ１ＢＲは、ＥＡ１ＢＲ［０］、ＥＡ１ＢＲ［１］、ＥＡ１ＢＲ［２］及びＥＡ１ＢＲ［３］から構成される。各領域は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００４０】
ＥＡ１ＯＲは、ＥＡ１ＯＲ［０］、ＥＡ１ＯＲ［１］、ＥＡ１ＯＲ［２］及びＥＡ１ＯＲ［３］から構成される。各領域は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００４１】
ＥＡ０ＢＲは、ＥＡ０ＢＲ［０］、ＥＡ０ＢＲ［１］、ＥＡ０ＢＲ［２］及びＥＡ０ＢＲ［３］から構成される。各領域は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００４２】
ＥＡ０ＯＲは、ＥＡ０ＯＲ［０］、ＥＡ０ＯＲ［１］、ＥＡ０ＯＲ［２］及びＥＡ０ＯＲ［３］から構成される。各領域は、それぞれ、パイプライン処理される４列の各列に対応するものである。
【００４３】
上述のとおり、（１）第１レジスタ群１１ａ及び第２レジスタ群１１ｂが、それぞれ、４組のレジスタ要素群から構成される点、並びに、（２）アドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲが、それぞれ、４個の領域から構成される点は、いずれも、４列の機能をパイプライン処理するためのものである。
【００４４】
次に、データ保持部１４は、後述のとおり、ＳＴＡＧＥ１〜４の各処理後におけるデータが保持されるように、上述の第１保持部１４ａ、第２保持部１４ｂ、第３保持部１４ｃ及び第４保持部１４ｄを含む。
【００４５】
最後に、データ処理装置１では、４列の機能をパイプライン処理するために、アドレス書き換え部１７を備える。アドレス書き換え部１７の動作については後述する。
【００４６】
（データ処理装置１の動作）
図１を参照しながら、図２を用いて、データ処理装置１の動作を説明する。図２は、データ処理装置１が実行するデータ処理（レジスタ更新）の処理手順を示すタイミングチャートである。図２は、主として、演算器１５の演算の処理手順を示すものである。
【００４７】
ここで、データ処理装置１の動作の説明に入る前に、図３を用いて、図１に用いられた各種符号等について説明しておく。図３は、ユニット間レジスタ部１１の配置構成を説明するための説明図である。図３の（ａ）は、ユニット間レジスタ部１１を示し、（ｂ）は、（ａ）のユニット間レジスタ部１１に含まれる第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１３４及び第２ユニット間レジスタ要素Ｑ１０１〜Ｑ１３４のそれぞれに対応する識別符号を示す。
【００４８】
図３の（ａ）において、第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１３４から構成された第１レジスタ群１１ａに着目する。例えば、第１ユニット間レジスタ要素Ｐ１０１には、図３の（ｂ）のＢＲ［ｙ−１］［０］［０］が対応する。左から順に説明すると、左の［ｙ−１］は基本ユニット１０の段数を示し、中央の［０］はパイプライン処理される４列のいずれに対応するかを示し、右の［０］は各列における第１ユニット間レジスタ要素の位置を示す。
【００４９】
ここで注目すべきは、特に、上記の中央の符号がパイプライン処理される４列のいずれに対応するかを示している点である。データ処理装置１では、１実行サイクル毎に１列分の演算を行うが、各列と、各列の演算結果を格納するレジスタ群とは、上記の中央の符号を用いて、対応付けられている。つまり、データ処理装置１では、第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１０４→第１ユニット間レジスタ要素Ｐ１１１〜Ｐ１１４→第１ユニット間レジスタ要素Ｐ１２１〜Ｐ１２４→第１ユニット間レジスタ要素Ｐ１３１〜Ｐ１３４→第１ユニット間レジスタ要素Ｐ１０１〜Ｐ１０４→・・・の順番で、ユニット間レジスタ部１１にデータがシーケンシャルに格納される。
【００５０】
なお、ユニット間レジスタ部１１がダブルバッファリングを用いる理由は、ユニット間レジスタ部１１に格納された４列分の演算結果をランダムに読み出す必要があるからである。このため、ユニット間レジスタ部１１では、第１レジスタ群１１ａ及び第２レジスタ群１１ｂが、交互に４実行サイクル毎で、一方が上述の書き込み（格納）に用いられ、他方が後述の読み出しに用いられる。
【００５１】
他の第１ユニット間レジスタ要素、及び第２ユニット間レジスタ要素Ｑ１０１〜Ｑ１３４から構成された第２レジスタ群１１ｂにおいても、上記と同様である。
【００５２】
また、データ処理装置１を構成する他の構成に付された識別符号についても同様の考え方に従うものである。
【００５３】
図２に示すように、データ処理装置１では、ＳＴＡＧＥ１〜ＳＴＡＧＥ４からなるパイプライン処理が行われる。ＳＴＡＧＥ５−１〜ＳＴＡＧＥ５−８の各処理は、ＳＴＡＧＥ１〜ＳＴＡＧＥ４からなるパイプライン処理が行われる間に行われる。
【００５４】
具体的には、ＳＴＡＧＥ１が終了する時刻ｔ１において、第１演算ブロック１５ａの入力数と等しい３個分のデータ（ここでは、Ｒ１３３、Ｒ１０３及びＲ１１２）が読み出され、第１保持部１４ａに保持される。
【００５５】
ＳＴＡＧＥ２が終了する時刻ｔ２において、第１演算ブロック１５ａの演算が終了し、その演算結果（ここでは、ＥＸ０）が、第２保持部１４ｂに保持される。
【００５６】
ＳＴＡＧＥ３が終了する時刻ｔ３において、第２演算ブロック１５ｂの演算が終了し、その演算結果（ここでは、ＥＸ０）が、第３保持部１４ｃに保持される。
【００５７】
ＳＴＡＧＥ４が終了する時刻ｔ４において、第３演算ブロック１５ｃの演算が終了し、その演算結果（ここでは、ＥＸ０）が、第４保持部１４ｄに保持される。
【００５８】
ここで、時刻ｔ２においては次のＳＴＡＧＥ１が終了し、ユニット間レジスタ部１１の第１レジスタ群１１ａのうちの３個の第１ユニット間レジスタ要素から３個分のデータ（ここでは、Ｒ１０４、Ｒ１３３及びＲ１１１）が読み出され、第１保持部１４ａに保持される。
【００５９】
また、時刻ｔ３においては次のＳＴＡＧＥ１が終了し、ユニット間レジスタ部１１の第１レジスタ群１１ａのうちの３個の第１ユニット間レジスタ要素から３個分のデータ（ここでは、Ｒ１２２、Ｒ１２１及びＲ１０２）が読み出され、第１保持部１４ａに保持される。
【００６０】
さらに、時刻ｔ４においては次のＳＴＡＧＥ１が終了し、ユニット間レジスタ部１１の第１レジスタ群１１ａのうちの３個の第１ユニット間レジスタ要素から３個分のデータ（ここでは、Ｒ１０３、Ｒ１１３及びＲ１３３）が読み出され、第１保持部１４ａに保持される。
【００６１】
このようにして、演算器１５の演算がパイプライン処理される。
【００６２】
なお、ＳＴＧＡＥ２〜ＳＴＧＡＥ４についても、図２に示すとおり、上述のＳＴＡＧＥ１を同様、順次、処理される。
【００６３】
また、図２の例では、時刻ｔ４において、第１レジスタ群１１ａからの、パイプライン処理される４列分の読み出しが終了する。そして、今度は、第２レジスタ群１１ｂからの読み出しが始まり、時刻ｔ５において、第２レジスタ群１１ｂからの、パイプライン処理される４列分の最初の１列分の読み出しが終了する。
【００６４】
ここで、ＳＴＡＧＥ５−１〜ＳＴＡＧＥ５−８は、上述のＳＴＡＧＥ１〜ＳＴＧＡＥ４のパイプライン処理が行われている間に処理される。
【００６５】
具体的には、ＳＴＡＧＥ５−１〜ＳＴＡＧＥ５−４において、ユニット間レジスタ部１１の第１レジスタ群１１ａから読み出されたデータに基づく演算器１５の演算結果が、ユニット間レジスタ部２１の第１ユニット間レジスタ要素に格納される。続いて、ＳＴＡＧＥ５−５〜ＳＴＡＧＥ５−８において、ユニット間レジスタ部１１の第２レジスタ群１１ｂから読み出されたデータに基づく演算器１５の演算結果が、ユニット間レジスタ部２１の第２ユニット間レジスタ要素に格納される。
【００６６】
次に、図１を参照しながら、図４及び図５を用いて、データ処理装置１の他の動作を説明する。図４は、アドレス書き換え部１７の動作を説明するための説明図である。図４の（ａ）は、アドレス書き換え部１７が実行する第１モード処理を説明するための説明図、図４の（ｂ）は、アドレス書き換え部１７が実行する第２モード処理を説明するための説明図である。図５は、データ処理装置１が実行するデータ処理（メモリ参照）の処理手順を示すタイミングチャートである。図５は、主として、アドレス生成器１６のアドレス生成の処理手順を示すものである。
【００６７】
まず、図４を用いて、アドレス書き換え部１７の動作について説明しておく。データ処理装置１は、１列分のメモリブロック（図１に示したメモリブロック１８）を４列分のメモリブロックとして用いる。
【００６８】
ここで、メモリブロック１８が４分割される場合、図４の（ａ）に示すように、ストアユニット１６ａ及びロードユニット１６ｂの出力２０ｂｉｔの上位２ｂｉｔが列番号に応じて０／０１／１０／１１のいずれかに上書きされ、アドレス書き換えが実行される（第１モード処理）。メモリブロック１８の分割された各メモリ空間は、それぞれが、各列番号に対応し、互いに独立したメモリ空間である。各メモリ空間は、それぞれが対応する列番号に基づき参照される。
【００６９】
一方、メモリブロック１８が分割されない場合、ストアユニット１６ａ及びロードユニット１６ｂの出力２０ｂｉｔはそのままであり、アドレス書き換えは実行されない（第２モード処理）。メモリブロック１８の全メモリ空間は、すべての列番号に対応し、すべての列番号に基づき参照される。
【００７０】
このようにして、メモリブロック１８は、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、参照されることになる。
【００７１】
図５に戻り、データ処理装置１の他の動作を説明する。
【００７２】
図５に示すように、ＳＴＡＧＥ１が終了する時刻ｔ１において、アドレス設定部１３の４個のアドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲから、それぞれが対応する、ストアユニット１６ａの各入力（ここでは、ＥＡ１Ｂのみ）及びロードユニット１６ｂの各入力（ＥＡ０Ｂ及びＥＡ０Ｏ）に供給されるアドレス情報が読み出され、第１保持部１４ａに保持される。なお、ストアユニット１６ａの入力ＥＡ１Ｏには、アドレス設定部１３のアドレス設定要素ＥＡ１ＯＲに代えて、ユニット間レジスタ部１１から読み出されたデータが供給される。もちろん、ストアユニット１６ａの入力ＥＡ１Ｏにも、アドレス設定要素ＥＡ１ＯＲから読み出されたアドレス情報が入力されても良い。
【００７３】
ＳＴＡＧＥ２が終了する時刻ｔ２において、第１保持部１４ａに保持されたアドレスが、第２保持部１４ｂに保持される。
【００７４】
ＳＴＡＧＥ３が終了する時刻ｔ３において、第２保持部１４ｂに保持されたアドレスが、第３保持部１４ｃに保持される。
【００７５】
ＳＴＡＧＥ４が終了する時刻ｔ４において、第３保持部１４ｃに保持されたアドレスが、第４保持部１４ｄに保持される。
【００７６】
ここで、時刻ｔ２においては次のＳＴＡＧＥ１が終了し、アドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲから、それぞれが対応する、ストアユニット１６ａの各入力及びロードユニット１６ｂの各入力に供給されるアドレス情報が読み出され、第１保持部１４ａに保持される。
【００７７】
また、時刻ｔ３においては次のＳＴＡＧＥ１が終了し、アドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲから、それぞれが対応する、ストアユニット１６ａの各入力及びロードユニット１６ｂの各入力に供給されるアドレス情報が読み出され、第１保持部１４ａに保持される。
【００７８】
さらに、時刻ｔ４においては次のＳＴＡＧＥ１が終了し、アドレス設定要素ＥＡ１ＢＲ、ＥＡ１ＯＲ、ＥＡ０ＢＲ及びＥＡ０ＯＲから、それぞれが対応する、ストアユニット１６ａの各入力及びロードユニット１６ｂの各入力に供給されるアドレス情報が読み出され、第１保持部１４ａに保持される。
【００７９】
このようにして、アドレス生成器１６のアドレス生成がパイプライン処理される。
【００８０】
なお、ＳＴＧＡＥ２〜ＳＴＧＡＥ４についても、図５に示すとおり、上述のＳＴＡＧＥ１を同様、順次、処理される。
【００８１】
また、図５の例では、時刻ｔ４において、第１レジスタ群１１ａからの、パイプライン処理される４列分の読み出しに用いるアドレス情報の読み出しが終了する。そして、今度は、時刻ｔ５において、第２レジスタ群１１ｂからの、パイプライン処理される４列分の最初の１列分の読み出しに用いるアドレス情報の読み出しが終了する。
【００８２】
以上説明したように、従来のシストリックアレイ型アクセラレータでは４個の基本ユニットの各々に属する４個の演算器に対して４組の入力値を同時に供給するのに対して、データ処理装置１では４組の入力を、時間をずらして、パイプライン的に１つの演算器に供給する。
【００８３】
このため、データ処理装置１では、４組の入力データに対する演算結果がパイプライン的に出力されることに対応し、ユニット間レジスタ部１１の第１レジスタ群１１ａ又は第２レジスタ群１１ｂの各４組のレジスタ要素群に順に格納される。
【００８４】
また、次行の演算に必要なデータは、第１レジスタ群１１ａ又は第２レジスタ群１１ｂの一方の全てから４実行サイクルを使用して読み出されるため、この読出しと上述の格納とが互いに干渉しないよう、４実行サイクル毎に、第１レジスタ群１１ａ及び第２レジスタ群１１ｂを交互に切替えて使用する。これは、データ処理装置１では、１実行サイクル毎に１列分の演算を行うので、その結果、４実行サイクル毎に４列分の演算が終了することになるからである。なお、上述のとおり、交互に第１レジスタ群１１ａ及び第２レジスタ群１１ｂに格納される４列分の演算結果は、ランダムに読み出されることになる。
【００８５】
本実施形態によれば、基本ユニット１０は、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、メモリブロックを参照することができる。
【００８６】
このため、基本ユニット１０は、１つの演算器１５と、１組のアドレス生成器１６及びアドレス書き換え部１７と、１つのメモリブロック１８とを用いて、各実行サイクルに対応する、実行サイクル数分の演算器と、実行サイクル数組のアドレス生成器及びアドレス書き換え部と、実行サイクル数分のメモリブロックとを有するハードウェア構成の機能と等価な機能を提供することが可能となる。
【００８７】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【符号の説明】
【００８８】
１  データ処理装置
１０  基本ユニット（ユニット）
１１、２１  ユニット間レジスタ部
１１ａ  第１レジスタ群
１１ｂ  第２レジスタ群
１２  演算バス及びスイッチ群
１３  アドレス設定部
１４  データ保持部
１４ａ  第１保持部
１４ｂ  第２保持部
１４ｃ  第３保持部
１４ｄ  第４保持部
１５  演算器
１５ａ  第１演算ブロック
１５ｂ  第２演算ブロック
１５ｃ  第３演算ブロック
１６  アドレス生成器
１６ａ  ストアユニット
１６ｂ  ロードユニット
１７  アドレス書き換え部
１８  メモリブロック
１９  マルチプレクサ
【図１】
2018207883.tif 000003
【図２】
2018207883.tif 000004
【図３】
2018207883.tif 000005
【図４】
2018207883.tif 000006
【図５】
2018207883.tif 000007
【国際調査報告】
2018207883.tif 000008
2018207883.tif 000009