(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-12
(45)【発行日】2022-10-20
(54)【発明の名称】データ処理装置
(51)【国際特許分類】
G06F 9/34 20060101AFI20221013BHJP
G06F 15/80 20060101ALI20221013BHJP
G06F 15/173 20060101ALI20221013BHJP
【FI】
G06F9/34 330
G06F15/80
G06F15/173 683B
(21)【出願番号】P 2019517698
(86)(22)【出願日】2018-05-10
(86)【国際出願番号】 JP2018018169
(87)【国際公開番号】W WO2018207883
(87)【国際公開日】2018-11-15
【審査請求日】2021-04-22
(31)【優先権主張番号】P 2017096061
(32)【優先日】2017-05-12
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】504143441
【氏名又は名称】国立大学法人 奈良先端科学技術大学院大学
(74)【代理人】
【識別番号】110000338
【氏名又は名称】特許業務法人HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】中島 康彦
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2014-164659(JP,A)
【文献】国際公開第2016/163421(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/34
G06F 15/80
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
複数の演算器及び複数のレジスタを備え、アキュムレート演算可能な自己ループ構造を持つ
データ処理装置であって、複数のユニットが相互接続されるデータ処理装置であって、
各ユニットは、各ユニットの前段のユニット側に配置されたユニット間レジスタ部を含み、
前記各ユニットは、4列分の機能をパイプライン処理することによって、論理的には4列であり、物理的には1列である回路構成を実現するものであり、
前記各ユニットは、前記ユニット間レジスタ部からデータを読み出し、当該データを用いて演算を行った後、各
機能におけるレジスタ更新において後段のユニットに含まれるユニット間レジスタ部のうちの各
機能に対応するレジスタを更新する演算をパイプライン実行することにより、自己ループ命令を含む命令から構成される命令列を実行することを特徴とするデータ処理装置。
【請求項2】
前記各ユニットは、前記ユニット間レジスタ部からアドレス情報を読み出し、当該アドレス情報を用いてアドレスを生成した後、各
機能におけるメモリ参照において後段のユニットに含まれるユニット間レジスタ部を更新する
ためのメモリ読み出しをパイプライン実行することにより、自己ループアドレス生成を含むメモリ参照命令から構成される命令列を実行することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記各ユニットは、メモリブロック、及び前記生成されたアドレスを書き換えるアドレス書き換え部を含み、
前記各ユニットは、
前記メモリブロックを分割する場合には、前記アドレス書き換え部によって書き換えられたアドレスを用いて前記メモリブロックへの書き込みを行い、
前記メモリブロックを分割しない場合には、前記生成されたアドレスを用いて前記メモリブロックへの書き込みを行うことを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記ユニット間レジスタ部は、第1レジスタ群及び第2レジスタ群を含み、
前記各ユニットは、前記第1レジスタ群及び第2レジスタ群を、それぞれ、書き込みレジスタ群又は読み出しレジスタ群として、排他的に使用することを特徴とする請求項1~3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記各ユニットは、前記ユニット間レジスタ部から読み出されたアドレス情報を用いてアドレスを生成するアドレス生成器を含み、
各
機能に対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、
機能間で互いに独立したメモリ空間又は
機能間で共有されるメモリ空間を対象として、前記メモリブロックを参照することを特徴とする請求項3に記載のデータ処理装置。
【請求項6】
前記各ユニットは、1つの前記演算器と、1組の前記アドレス生成器及び前記アドレス書き換え部と、1つの前記メモリブロックとを用いて、各
機能に対応する、
機能数分の前記演算器と、
機能数組の前記アドレス生成器及び前記アドレス書き換え部と、
機能数分のメモリブロックとを有するハードウェア構
成と等価な
構成を提供することを特徴とする請求項5に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに用いられるデータ処理装置に関する。
【背景技術】
【0002】
複数の演算器を二次元ネットワークにより相互接続した構成を備えたシストリックアレイ型アクセラレータが従来技術として知られている(特許文献1)。
【0003】
特許文献1に開示された従来のアクセラレータでは、その配線量の多さがFPGA(Field Programmable Gate Array)やLSI(Large Scale Integrated Circuit)に実装する際の問題となりやすい。FPGAやLSIの回路規模が大きくなればなるほど、配線の信号遅延が増大することになるからである。
【0004】
また、特許文献1のアクセラレータでは、各演算器には自演算器の結果を自身の入力にバイパスさせる自己ループが備えられている。各演算器が自演算器の結果を自演算器で使用するためである。
【0005】
演算器の自己ループ構造が必要となるアキュムレート演算に対応するためには、演算器をパイプライン化して演算器の性能を向上させる手法を適用することはできない。非パイプライン処理は演算器の使用効率を低下させる要因となる。
【0006】
例えば、特許文献1のアクセラレータでは、演算器は複数のブロックから構成されており、その回路構成からすればパイプライン処理は可能であるといえる。しかし、演算結果を次の実行サイクルの入力とする演算を実行する場合、各ブロック間でデータの受け渡しが必要となるので、パイプライン処理を行うことはできない。それゆえ、演算回路の使用率は数分の1程度になり、その使用効率は低下することになる。
【先行技術文献】
【特許文献】
【0007】
【文献】国際公開第2016/163421号(2016年10月13日公開)
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の一態様は、シストリックアレイ型アクセラレータにおいて、配線量の削減及び演算器の使用効率の向上を同時に達成可能なデータ処理装置を実現することを目的とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するために、本発明の一態様に係るデータ処理装置は、複数の演算器及び複数のレジスタを備え、アキュムレート演算可能な自己ループ構造を持つ、複数のユニットが相互接続されるデータ処理装置であって、各ユニットは、各ユニットの前段のユニット側に配置されたユニット間レジスタ部を含み、前記各ユニットは、前記ユニット間レジスタ部からデータを読み出し、当該データを用いて演算を行った後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部のうちの各実行サイクルに対応するレジスタを更新する演算をパイプライン実行することにより、自己ループ命令を含む命令から構成される命令列を実行する。
【0010】
上記構成によれば、配線量の削減及び演算器の使用効率の向上が図られる。
【0011】
前記各ユニットは、前記ユニット間レジスタ部からアドレス情報を読み出し、当該アドレス情報を用いてアドレスを生成した後、各実行サイクルにおいて後段のユニットに含まれるユニット間レジスタ部を更新するメモリ読み出しをパイプライン実行することにより、自己ループアドレス生成を含むメモリ参照命令から構成される命令列を実行することが好ましい。
【0012】
前記各ユニットは、メモリブロック、及び前記生成されたアドレスを書き換えるアドレス書き換え部を含み、前記各ユニットは、前記メモリブロックを分割する場合には、前記アドレス書き換え部によって書き換えられたアドレスを用いて前記メモリブロックへの書き込みを行い、前記メモリブロックを分割しない場合には、前記生成されたアドレスを用いて前記メモリブロックへの書き込みを行うことが好ましい。
【0013】
前記ユニット間レジスタ部は、第1レジスタ群及び第2レジスタ群を含み、前記各ユニットは、前記第1レジスタ群及び第2レジスタ群を、それぞれ、書き込みレジスタ群又は読み出しレジスタ群として、排他的に使用することが好ましい。
【0014】
前記各ユニットは、前記ユニット間レジスタ部から読み出されたアドレス情報を用いてアドレスを生成するアドレス生成器を含み、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、前記メモリブロックを参照することが好ましい。
【0015】
前記各ユニットは、1つの前記演算器と、1組の前記アドレス生成器及び前記アドレス書き換え部と、1つの前記メモリブロックとを用いて、各実行サイクルに対応する、実行サイクル数分の前記演算器と、実行サイクル数組の前記アドレス生成器及び前記アドレス書き換え部と、実行サイクル数分のメモリブロックとを有するハードウェア構成の機能と等価な機能を提供することが好ましい。
【発明の効果】
【0016】
本発明の一態様によれば、シストリックアレイ型アクセラレータにおいて、配線量の削減及び演算器の使用効率の向上を同時に達成することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の実施形態に係るデータ処理装置のハードウェア構成を示す模式図である。
【
図2】上記データ処理装置が実行するデータ処理(レジスタ更新)の処理手順を示すタイミングチャートである。
【
図3】上記データ処理装置に含まれるユニット間レジスタ部の配置構成を説明するための説明図である。(a)は、上記ユニット間レジスタ部を示し、(b)は、(a)のユニット間レジスタ部に含まれる第1ユニット間レジスタ要素P101~P134及び第2ユニット間レジスタ要素Q101~Q134のそれぞれに対応する識別符号を示す。
【
図4】上記データ処理装置に含まれるアドレス書き換え部の動作を説明するための説明図である。(a)は、アドレス書き換え部が実行する第1モード処理を説明するための説明図、(b)は、アドレス書き換え部が実行する第2モード処理を説明するための説明図である。
【
図5】上記データ処理装置が実行するデータ処理(メモリ参照)の処理手順を示すタイミングチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について、詳細に説明する。
【0019】
(データ処理装置1の構成)
図1は、本発明の実施形態に係るデータ処理装置1のハードウェア構成を示す模式図である。データ処理装置1は、複数の演算器を二次元ネットワークにより相互接続した構成を備えたシストリックアレイ型アクセラレータを構成する。
【0020】
図1に示すように、データ処理装置1は、ユニット間レジスタ部11と、演算バス及びスイッチ群12と、アドレス設定部13と、データ保持部14と、演算器15と、アドレス生成器16と、アドレス書き換え部17と、メモリブロック18と、マルチプレクサ19と、を含む、複数の基本ユニット10(ユニット)が相互に接続された構成を備える。
【0021】
複数の基本ユニット10は1列に並べられる。また、複数の基本ユニット10の列には折り返しがあっても構わない。さらに、複数の基本ユニット10はリング状に並べられても良い。互いに隣接する各基本ユニット10間においては、前段の基本ユニット10から後段の基本ユニット10へデータが転送される。
【0022】
ユニット間レジスタ部11は、前段の基本ユニットから転送されるデータを格納する。ユニット間レジスタ部11は、所謂ダブルバッファリングを用いる。ユニット間レジスタ部11は、第1ユニット間レジスタ要素P101~P134から構成された第1レジスタ群11a及び第2ユニット間レジスタ要素Q101~Q134から構成された第2レジスタ群11bを含む。なお、ユニット間レジスタ部21は、基本ユニット10に隣接する後段の基本ユニット(図示省略)に含まれるものである。ユニット間レジスタ部21の機能はユニット間レジスタ部11の機能と同一である。
【0023】
演算バス及びスイッチ群12は、ユニット間レジスタ部11から読み出されるデータを演算器15に供給する。演算器15は、演算バス及びスイッチ群12から供給されるデータを用いて演算する。
【0024】
また、演算バス及びスイッチ群12は、ユニット間レジスタ部11から読み出されるデータをアドレス生成器16に供給する。アドレス生成器16は、アドレス設定部13から読み出されるアドレス情報及び演算バス及びスイッチ群12から供給されるデータを用いてアドレス生成する。アドレス生成器16は、自己ループアドレス生成を含むメモリ参照命令を生成可能である。
【0025】
アドレス設定部13には、命令バッファ(図示省略)から読み出されるプログラムに予め記載されたアドレス情報が設定される。アドレス設定部13は、アドレス生成器16の入力数に合わせて、4つのアドレス設定要素を含む。なお、命令バッファは、例えば、コンフィギュレーションメモリであり、公知のCGRA(Coarse-Grained Reconfigurable Architecture)を構成し、コンフィギュレーションデータを格納する。
【0026】
データ保持部14は、演算器15及びアドレス生成器16の各々に入力されるデータ及び各々から出力されるデータ、並びに、各々の内部のデータを一時的に保持するバッファである。データ保持部14は、第1保持部14a、第2保持部14b、第3保持部14c及び第4保持部14dを含む。第1保持部14aは、演算器15及びアドレス生成器16の各々に入力されるデータを保持し、第4保持部14dは、演算器15及びアドレス生成器16の各々から出力されるデータを保持する。また、第2保持部14b及び第3保持部14cは、演算器15及びアドレス生成器16の各々の内部のデータを保持する。
【0027】
演算器15は、第1演算ブロック15a、第2演算ブロック15b及び第3演算ブロック15cを含む。演算器15は、自己ループ構造を備えており、第3演算ブロック15cの出力を第1演算ブロック15aの入力とする。演算器15は、自己ループ命令を含む命令から構成される命令列を実行可能である。
【0028】
アドレス生成器16は、Write専用のストアユニット16a及びRead専用のロードユニット16bを含む。アドレス生成器16は、Read及びWriteを同時に行う。アドレス生成器16は、メモリブロック18からの読み出し及びメモリブロック18への書き込みを行うためのアドレス情報を生成する。
【0029】
アドレス書き換え部17は、アドレス生成器16が生成するアドレスを書き換える。
【0030】
メモリブロック18には、アドレス書き換え部17によって書き換えられたアドレスに基づき、演算器15の演算結果が書き込まれる。
【0031】
マルチプレクサ19は、メモリブロック18から読み出されたデータを集約する。マルチプレクサ19は、集約したデータをユニット間レジスタ部21に供給する。
【0032】
ここで、データ処理装置1において注目すべきことは、複数の基本ユニット10が1列に並べられた、一本の基本ユニットの列(以下、「基本ユニット列」と称する。)を用いて、あたかも、複数の基本ユニット列(ここでは4列)があるかのごとく、複数の演算を行うことが可能となる回路構成を実現した点にある。すなわち、データ処理装置1は、論理的には4列、物理的には1列である回路構成を実現する。このような回路構成を実現することによって、配線量の削減及び演算器の使用効率の向上が図られる。
【0033】
従来のシストリックアレイ型アクセラレータでは、上述の基本ユニット列に相当する基本ユニット列を4列配置しており、物理的に4列である回路構成を備えていた。そのため、配線量が多く、また、演算器の使用効率が低いという課題があった。
【0034】
これに対し、データ処理装置1では、
図1に示した基本ユニット10は1列のみであり、それにより、従来と比較して、配線量を削減し、且つ、演算器の使用効率を高くする。
【0035】
以下、上述の注目すべき点について、さらに説明を続ける。
【0036】
上述のとおり、データ処理装置1では、基本ユニット列を用いて、4列分の機能をパイプライン処理することによって、論理的には4列、物理的には1列である回路構成を実現する。このため、データ処理装置1は、以下の特徴的な回路構成を備える。
【0037】
図1に示したように、まず、ユニット間レジスタ部11に含まれる第1レジスタ群11a及び第2レジスタ群11bは、それぞれ、4組のレジスタ要素群から構成される。すなわち、第1レジスタ群11aは、第1ユニット間レジスタ要素P101~P104からなる組、第1ユニット間レジスタ要素P111~P114からなる組、第1ユニット間レジスタ要素P121~P124からなる組、及び、第1ユニット間レジスタ要素P131~P134からなる組から構成される。各組は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0038】
第2レジスタ群11bは、第2ユニット間レジスタ要素Q101~Q104からなる組、第2ユニット間レジスタ要素Q111~Q114からなる組、第2ユニット間レジスタ要素Q121~Q124からなる組、及び、第2ユニット間レジスタ要素Q131~Q134からなる組から構成される。各組は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0039】
次に、アドレス設定部13に含まれる4個のアドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORは、それぞれ、4個の領域から構成される。すなわち、EA1BRは、EA1BR[0]、EA1BR[1]、EA1BR[2]及びEA1BR[3]から構成される。各領域は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0040】
EA1ORは、EA1OR[0]、EA1OR[1]、EA1OR[2]及びEA1OR[3]から構成される。各領域は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0041】
EA0BRは、EA0BR[0]、EA0BR[1]、EA0BR[2]及びEA0BR[3]から構成される。各領域は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0042】
EA0ORは、EA0OR[0]、EA0OR[1]、EA0OR[2]及びEA0OR[3]から構成される。各領域は、それぞれ、パイプライン処理される4列の各列に対応するものである。
【0043】
上述のとおり、(1)第1レジスタ群11a及び第2レジスタ群11bが、それぞれ、4組のレジスタ要素群から構成される点、並びに、(2)アドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORが、それぞれ、4個の領域から構成される点は、いずれも、4列の機能をパイプライン処理するためのものである。
【0044】
次に、データ保持部14は、後述のとおり、STAGE1~4の各処理後におけるデータが保持されるように、上述の第1保持部14a、第2保持部14b、第3保持部14c及び第4保持部14dを含む。
【0045】
最後に、データ処理装置1では、4列の機能をパイプライン処理するために、アドレス書き換え部17を備える。アドレス書き換え部17の動作については後述する。
【0046】
(データ処理装置1の動作)
図1を参照しながら、
図2を用いて、データ処理装置1の動作を説明する。
図2は、データ処理装置1が実行するデータ処理(レジスタ更新)の処理手順を示すタイミングチャートである。
図2は、主として、演算器15の演算の処理手順を示すものである。
【0047】
ここで、データ処理装置1の動作の説明に入る前に、
図3を用いて、
図1に用いられた各種符号等について説明しておく。
図3は、ユニット間レジスタ部11の配置構成を説明するための説明図である。
図3の(a)は、ユニット間レジスタ部11を示し、(b)は、(a)のユニット間レジスタ部11に含まれる第1ユニット間レジスタ要素P101~P134及び第2ユニット間レジスタ要素Q101~Q134のそれぞれに対応する識別符号を示す。
【0048】
図3の(a)において、第1ユニット間レジスタ要素P101~P134から構成された第1レジスタ群11aに着目する。例えば、第1ユニット間レジスタ要素P101には、
図3の(b)のBR[y-1][0][0]が対応する。左から順に説明すると、左の[y-1]は基本ユニット10の段数を示し、中央の[0]はパイプライン処理される4列のいずれに対応するかを示し、右の[0]は各列における第1ユニット間レジスタ要素の位置を示す。
【0049】
ここで注目すべきは、特に、上記の中央の符号がパイプライン処理される4列のいずれに対応するかを示している点である。データ処理装置1では、1実行サイクル毎に1列分の演算を行うが、各列と、各列の演算結果を格納するレジスタ群とは、上記の中央の符号を用いて、対応付けられている。つまり、データ処理装置1では、第1ユニット間レジスタ要素P101~P104→第1ユニット間レジスタ要素P111~P114→第1ユニット間レジスタ要素P121~P124→第1ユニット間レジスタ要素P131~P134→第1ユニット間レジスタ要素P101~P104→・・・の順番で、ユニット間レジスタ部11にデータがシーケンシャルに格納される。
【0050】
なお、ユニット間レジスタ部11がダブルバッファリングを用いる理由は、ユニット間レジスタ部11に格納された4列分の演算結果をランダムに読み出す必要があるからである。このため、ユニット間レジスタ部11では、第1レジスタ群11a及び第2レジスタ群11bが、交互に4実行サイクル毎で、一方が上述の書き込み(格納)に用いられ、他方が後述の読み出しに用いられる。
【0051】
他の第1ユニット間レジスタ要素、及び第2ユニット間レジスタ要素Q101~Q134から構成された第2レジスタ群11bにおいても、上記と同様である。
【0052】
また、データ処理装置1を構成する他の構成に付された識別符号についても同様の考え方に従うものである。
【0053】
図2に示すように、データ処理装置1では、STAGE1~STAGE4からなるパイプライン処理が行われる。STAGE5-1~STAGE5-8の各処理は、STAGE1~STAGE4からなるパイプライン処理が行われる間に行われる。
【0054】
具体的には、STAGE1が終了する時刻t1において、第1演算ブロック15aの入力数と等しい3個分のデータ(ここでは、R133、R103及びR112)が読み出され、第1保持部14aに保持される。
【0055】
STAGE2が終了する時刻t2において、第1演算ブロック15aの演算が終了し、その演算結果(ここでは、EX0)が、第2保持部14bに保持される。
【0056】
STAGE3が終了する時刻t3において、第2演算ブロック15bの演算が終了し、その演算結果(ここでは、EX0)が、第3保持部14cに保持される。
【0057】
STAGE4が終了する時刻t4において、第3演算ブロック15cの演算が終了し、その演算結果(ここでは、EX0)が、第4保持部14dに保持される。
【0058】
ここで、時刻t2においては次のSTAGE1が終了し、ユニット間レジスタ部11の第1レジスタ群11aのうちの3個の第1ユニット間レジスタ要素から3個分のデータ(ここでは、R104、R133及びR111)が読み出され、第1保持部14aに保持される。
【0059】
また、時刻t3においては次のSTAGE1が終了し、ユニット間レジスタ部11の第1レジスタ群11aのうちの3個の第1ユニット間レジスタ要素から3個分のデータ(ここでは、R122、R121及びR102)が読み出され、第1保持部14aに保持される。
【0060】
さらに、時刻t4においては次のSTAGE1が終了し、ユニット間レジスタ部11の第1レジスタ群11aのうちの3個の第1ユニット間レジスタ要素から3個分のデータ(ここでは、R103、R113及びR133)が読み出され、第1保持部14aに保持される。
【0061】
このようにして、演算器15の演算がパイプライン処理される。
【0062】
なお、STGAE2~STGAE4についても、
図2に示すとおり、上述のSTAGE1を同様、順次、処理される。
【0063】
また、
図2の例では、時刻t4において、第1レジスタ群11aからの、パイプライン処理される4列分の読み出しが終了する。そして、今度は、第2レジスタ群11bからの読み出しが始まり、時刻t5において、第2レジスタ群11bからの、パイプライン処理される4列分の最初の1列分の読み出しが終了する。
【0064】
ここで、STAGE5-1~STAGE5-8は、上述のSTAGE1~STGAE4のパイプライン処理が行われている間に処理される。
【0065】
具体的には、STAGE5-1~STAGE5-4において、ユニット間レジスタ部11の第1レジスタ群11aから読み出されたデータに基づく演算器15の演算結果が、ユニット間レジスタ部21の第1ユニット間レジスタ要素に格納される。続いて、STAGE5-5~STAGE5-8において、ユニット間レジスタ部11の第2レジスタ群11bから読み出されたデータに基づく演算器15の演算結果が、ユニット間レジスタ部21の第2ユニット間レジスタ要素に格納される。
【0066】
次に、
図1を参照しながら、
図4及び
図5を用いて、データ処理装置1の他の動作を説明する。
図4は、アドレス書き換え部17の動作を説明するための説明図である。
図4の(a)は、アドレス書き換え部17が実行する第1モード処理を説明するための説明図、
図4の(b)は、アドレス書き換え部17が実行する第2モード処理を説明するための説明図である。
図5は、データ処理装置1が実行するデータ処理(メモリ参照)の処理手順を示すタイミングチャートである。
図5は、主として、アドレス生成器16のアドレス生成の処理手順を示すものである。
【0067】
まず、
図4を用いて、アドレス書き換え部17の動作について説明しておく。データ処理装置1は、1列分のメモリブロック(
図1に示したメモリブロック18)を4列分のメモリブロックとして用いる。
【0068】
ここで、メモリブロック18が4分割される場合、
図4の(a)に示すように、ストアユニット16a及びロードユニット16bの出力20bitの上位2bitが列番号に応じて0/01/10/11のいずれかに上書きされ、アドレス書き換えが実行される(第1モード処理)。メモリブロック18の分割された各メモリ空間は、それぞれが、各列番号に対応し、互いに独立したメモリ空間である。各メモリ空間は、それぞれが対応する列番号に基づき参照される。
【0069】
一方、メモリブロック18が分割されない場合、ストアユニット16a及びロードユニット16bの出力20bitはそのままであり、アドレス書き換えは実行されない(第2モード処理)。メモリブロック18の全メモリ空間は、すべての列番号に対応し、すべての列番号に基づき参照される。
【0070】
このようにして、メモリブロック18は、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、参照されることになる。
【0071】
図5に戻り、データ処理装置1の他の動作を説明する。
【0072】
図5に示すように、STAGE1が終了する時刻t1において、アドレス設定部13の4個のアドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORから、それぞれが対応する、ストアユニット16aの各入力(ここでは、EA1Bのみ)及びロードユニット16bの各入力(EA0B及びEA0O)に供給されるアドレス情報が読み出され、第1保持部14aに保持される。なお、ストアユニット16aの入力EA1Oには、アドレス設定部13のアドレス設定要素EA1ORに代えて、ユニット間レジスタ部11から読み出されたデータが供給される。もちろん、ストアユニット16aの入力EA1Oにも、アドレス設定要素EA1ORから読み出されたアドレス情報が入力されても良い。
【0073】
STAGE2が終了する時刻t2において、第1保持部14aに保持されたアドレスが、第2保持部14bに保持される。
【0074】
STAGE3が終了する時刻t3において、第2保持部14bに保持されたアドレスが、第3保持部14cに保持される。
【0075】
STAGE4が終了する時刻t4において、第3保持部14cに保持されたアドレスが、第4保持部14dに保持される。
【0076】
ここで、時刻t2においては次のSTAGE1が終了し、アドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORから、それぞれが対応する、ストアユニット16aの各入力及びロードユニット16bの各入力に供給されるアドレス情報が読み出され、第1保持部14aに保持される。
【0077】
また、時刻t3においては次のSTAGE1が終了し、アドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORから、それぞれが対応する、ストアユニット16aの各入力及びロードユニット16bの各入力に供給されるアドレス情報が読み出され、第1保持部14aに保持される。
【0078】
さらに、時刻t4においては次のSTAGE1が終了し、アドレス設定要素EA1BR、EA1OR、EA0BR及びEA0ORから、それぞれが対応する、ストアユニット16aの各入力及びロードユニット16bの各入力に供給されるアドレス情報が読み出され、第1保持部14aに保持される。
【0079】
このようにして、アドレス生成器16のアドレス生成がパイプライン処理される。
【0080】
なお、STGAE2~STGAE4についても、
図5に示すとおり、上述のSTAGE1を同様、順次、処理される。
【0081】
また、
図5の例では、時刻t4において、第1レジスタ群11aからの、パイプライン処理される4列分の読み出しに用いるアドレス情報の読み出しが終了する。そして、今度は、時刻t5において、第2レジスタ群11bからの、パイプライン処理される4列分の最初の1列分の読み出しに用いるアドレス情報の読み出しが終了する。
【0082】
以上説明したように、従来のシストリックアレイ型アクセラレータでは4個の基本ユニットの各々に属する4個の演算器に対して4組の入力値を同時に供給するのに対して、データ処理装置1では4組の入力を、時間をずらして、パイプライン的に1つの演算器に供給する。
【0083】
このため、データ処理装置1では、4組の入力データに対する演算結果がパイプライン的に出力されることに対応し、ユニット間レジスタ部11の第1レジスタ群11a又は第2レジスタ群11bの各4組のレジスタ要素群に順に格納される。
【0084】
また、次行の演算に必要なデータは、第1レジスタ群11a又は第2レジスタ群11bの一方の全てから4実行サイクルを使用して読み出されるため、この読出しと上述の格納とが互いに干渉しないよう、4実行サイクル毎に、第1レジスタ群11a及び第2レジスタ群11bを交互に切替えて使用する。これは、データ処理装置1では、1実行サイクル毎に1列分の演算を行うので、その結果、4実行サイクル毎に4列分の演算が終了することになるからである。なお、上述のとおり、交互に第1レジスタ群11a及び第2レジスタ群11bに格納される4列分の演算結果は、ランダムに読み出されることになる。
【0085】
本実施形態によれば、基本ユニット10は、各実行サイクルに対応する演算及びアドレス生成の組に関連付けられるメモリ空間であって、実行サイクル間で互いに独立したメモリ空間又は実行サイクル間で共有されるメモリ空間を対象として、メモリブロックを参照することができる。
【0086】
このため、基本ユニット10は、1つの演算器15と、1組のアドレス生成器16及びアドレス書き換え部17と、1つのメモリブロック18とを用いて、各実行サイクルに対応する、実行サイクル数分の演算器と、実行サイクル数組のアドレス生成器及びアドレス書き換え部と、実行サイクル数分のメモリブロックとを有するハードウェア構成の機能と等価な機能を提供することが可能となる。
【0087】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【符号の説明】
【0088】
1 データ処理装置
10 基本ユニット(ユニット)
11、21 ユニット間レジスタ部
11a 第1レジスタ群
11b 第2レジスタ群
12 演算バス及びスイッチ群
13 アドレス設定部
14 データ保持部
14a 第1保持部
14b 第2保持部
14c 第3保持部
14d 第4保持部
15 演算器
15a 第1演算ブロック
15b 第2演算ブロック
15c 第3演算ブロック
16 アドレス生成器
16a ストアユニット
16b ロードユニット
17 アドレス書き換え部
18 メモリブロック
19 マルチプレクサ