説明

ベクトル処理装置及びベクトル演算処理方法

【課題】ベクトル処理装置内のベクトル演算パイプのデータ入出力を高速化すること
【解決手段】ベクトル演算処理装置内に、ベクトル演算処理を行う複数のベクトル演算パイプ210を設けた少なくとも1以上のベクトル処理ユニット200を備える。ベクトル処理ユニット200内であって、かつ、ベクトル演算パイプ210の外部に前記ベクトル演算パイプに対応する出力用のデータバッファ220、及び入力用のデータバッファ230を設ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はベクトル処理装置及びベクトル演算処理方法に関する。
【背景技術】
【0002】
近年、大量のベクトルデータを高速かつ正確に処理するために、さまざまな技術が開示されている。
【0003】
特許文献1に記載のベクトル処理装置は、複数の演算パイプラインと接続するベクトルレジスタと、主記憶装置との間にデータバッファを配置している。当該ベクトル処理装置は、ベクトルレジスタからデータバッファに読み出されたデータ数をカウントし、カウントされたデータ数に基づいてベクトルユニットから主記憶装置に対するアクセス要求の送出を中断する。これにより、演算パイプラインの動作を停止する必要がある場合に、必要最小限のアクセス要求のみを中断させる。
【0004】
特許文献2に記載のベクトル処理装置は、ベクトルデータのメモリアクセス命令の発行時に、入力ポートの偶数入力ポートと奇数入力ポートについて、それぞれ出力ポートの競合調停を行うアービタを設ける。当該ベクトル処理装置は競合調停処理を分割したため、競合調停処理のスループットの低下を抑止する。
【0005】
特許文献3に記載のベクトル処理装置は、ベクトルデータの圧縮、拡張する変換命令を実現している。当該ベクトル処理装置は、ベクトルデータ要素数よりも少ない格納領域を有するデータバッファを設けている。当該ベクトル処理装置はベクトルデータ間の演算を必要としないもの、または演算結果が0になるもの等をデータから除外したベクトルデータをデータバッファに書き込む。上述の構成により、データバッファサイズを小さくすることを可能としている。
【0006】
特許文献4に記載のベクトル処理装置は、同期が必要なベクトル命令の処理の高速化を実現している。当該ベクトル処理装置は、ベクトルパイプライン演算部に割り当てられたベクトル要素の数を算出し、ベクトル命令の発行タイミングを事前に予測する。これにより、同期制御信号のやりとり等が不要となり、処理の高速化が図れる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平6−168264号公報
【特許文献2】特開平9−6759号公報
【特許文献3】特開2000−35958号公報
【特許文献4】特開2000−222390号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述のベクトル処理装置では、ベクトルレジスタからのデータの読み出し及び書き出しの処理が性能上の問題となる可能性がある。以下に詳細を説明する。
【0009】
一般にベクトル処理装置は、複数のベクトル処理ユニット(ベクトルパイプサブユニット)から構成される。ベクトルパイプサブユニットは、ベクトル演算処理を行うベクトル演算パイプを複数有する構成とできる。ベクトル演算パイプは、相互にベクトルデータの入出力をすることができる(以下の記載では、ベクトル演算パイプ間でデータの入出力が発生する処理をベクトルパイプ間動作命令と記載する。)。
【0010】
図8に本発明が解決しようとする課題の1つに関連するベクトル処理装置の構成を示す。ベクトル処理装置は、パイプ間クロスバユニット10と、ベクトルパイプサブユニット20と、信号線30と、を備える。ベクトルパイプユニット20は複数のベクトルパイプサブユニット200から構成される。ベクトルパイプサブユニット200は、ベクトル演算パイプ210を備える。
【0011】
一般にベクトルパイプサブユニット200内のベクトル演算パイプ210の数が増えた場合、ベクトルパイプユニット20とパイプ間クロスバユニット10とを結ぶ信号線の数が増える。これにより、配線収容性が圧迫されることになり、LSI設計が困難になる。そこで、図8に示すようにベクトルパイプサブユニット200内のベクトル演算パイプ210が相互にベクトルデータ読み出しをインターリーブして行う(交互に行う)制御を行う。しかし、当該処理はインターリーブを行うことにより早期の処理終了が困難な傾向がある。
【0012】
ある命令に基づいてベクトルパイプサブユニット内にあるベクトル演算パイプからのデータ読み出し処理を行っている間は、当該命令と関連するリソースへの処理は禁止される。そのため、インターリーブ制御により処理が長時間かかり、ベクトル演算パイプで処理すべき後続処理が待ち状態となり、全体の処理が遅延する恐れがある。
【0013】
本発明は、このような問題点を解決するためになされたものであり、ベクトル処理装置内のベクトル演算命令がベクトルパイプ間動作命令により遅延する問題を解決したベクトル処理装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明にかかるベクトル処理装置の一態様は、第1及び第2のベクトル演算パイプを備える第1の処理ユニットと、第2の処理ユニットと、前記第1の処理ユニットと前記第2の処理ユニットとの間でデータを転送できるよう構成されたデータ転送回路と、前記第1の処理ユニットと前記データ転送回路の間を接続するとともに、前記第1及び第2のベクトル演算パイプの出力データを前記データ転送回路に供給するため、又は前記データ転送回路から前記第1及び第2のベクトル演算パイプに入力データを供給するために使用される第1のデータパスと、を備え、前記第1の処理ユニットは、前記第1及び第2のベクトル演算パイプと前記第1のデータパスとの間に配置され、前記出力データ又は前記入力データを保持するデータバッファを備え、前記第1及び第2のベクトル演算パイプは、他方のベクトル演算パイプが前記データバッファへアクセス中であるか否か及び前記第1のデータパスが使用中であるか否かに依存することなく、前記データバッファにアクセス可能に構成されている、ものである。
【発明の効果】
【0015】
本発明によれば、ベクトル処理装置内のベクトル演算命令がベクトルパイプ間動作命令により遅延する問題を解決することができる。
【図面の簡単な説明】
【0016】
【図1】実施の形態1にかかるベクトル処理装置のブロック図である。
【図2】実施の形態1にかかるベクトル処理装置のブロック図である。
【図3】実施の形態1にかかるベクトルパイプサブユニットの構成を示すブロック図である。
【図4】実施の形態1にかかるベクトルレジスタの構成を示すブロック図である。
【図5】実施の形態1にかかる発行制御部の構成を示すブロック図である。
【図6】実施の形態1にかかるベクトル処理装置の命令実行時の動作を示すタイミングチャートである。
【図7】実施の形態1にかかるベクトル処理装置の命令実行時の動作を示すタイミングチャートである。
【図8】本発明が解決しようとする課題の1つに関連するベクトル処理装置を示すブロック図である。
【図9】本発明が解決しようとする課題の1つに関連するベクトル処理装置の命令実行時の動作を示すタイミングチャートである。
【発明を実施するための形態】
【0017】
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。まず、図1を参照して、本実施の形態1にかかるベクトル処理装置の基本構成と、その動作の概略について説明する。
【0018】
ベクトル処理装置内にあるベクトルサブユニット200は、ベクトル演算パイプ210と、送信データバッファ220と、受信データバッファ230と、ベクトルデータ選択回路270と、を備える。ベクトル演算パイプ210のデータ入出力は、送信データバッファ220及び受信データバッファ230を用いて行う。ベクトル演算パイプ210は、対応する送信データバッファ220にベクトルデータを出力のみを行い、他の処理はベクトル演算パイプ210の外部で行う。すなわち、ベクトルデータ選択回路270が各送信データバッファ220に格納されたデータをインターリーブして出力する。
【0019】
図1に示したベクトル処理装置の構成により、ベクトル演算パイプ210はベクトル演算パイプ毎にベクトルデータの入出力のみを実行し、他の処理(インターリーブ処理等)はベクトル演算パイプ210の外部で行う。そのため、ベクトル演算パイプ210でのベクトルデータの入出力時間が短縮でき、ベクトル演算パイプ210内での後続の処理を早期に開始できる。
【0020】
続いて、図2を参照して、本実施の形態1にかかるベクトル処理装置の基本構成について説明する。ベクトル処理装置は、パイプ間クロスバユニット10と、ベクトルパイプユニット20と、信号線30と、を備える。パイプ間クロスバユニット10は、ベクトルパイプサブユニット200間のデータ転送を行うための処理部である。
【0021】
ベクトルパイプユニット20は複数のベクトルパイプサブユニット200から構成される。ベクトルパイプサブユニット200は、ベクトル演算パイプ210と、送信データバッファ220と、受信データバッファ230と、を備える。ベクトルパイプサブユニット200は、複数(図中では2つ)のベクトル演算パイプ210を備える。ベクトルパイプサブユニット200はベクトル演算を行うための処理ユニットである。ベクトルパイプサブユニット200の詳細な構成は後述する。
【0022】
信号線30は、ベクトルパイプサブユニット200と、パイプ間クロスバユニット10と、の間を結ぶ信号線である。信号線30は、ベクトルパイプサブユニット200からの出力データをパイプ間クロスバユニット10に入力するための信号線と、パイプ間クロスバユニット10からの出力データをベクトルパイプサブユニット200に入力するための信号線とを含む。
【0023】
続いて、図3を用いて、ベクトルパイプサブユニット200の詳細な構成を説明する。ベクトルパイプサブユニット200は、ベクトル演算パイプ210と、送信データバッファ220と、受信データバッファ230と、ベクトルデータ選択回路270と、を備える。
【0024】
ベクトル演算パイプ210は、ベクトル命令の処理を行う。ベクトル命令の処理とは、ベクトルレジスタを読み出し、読み出した値を用いた演算を行い、演算結果をレジスタに書き込む、という一連の処理を示す。また、ベクトル演算パイプ210は、他のベクトル演算パイプ210にデータを出力する処理を行う場合、送信データバッファ220に送信データを書き込む。
【0025】
送信データバッファ220は、他のベクトル演算パイプ210にデータを出力する処理を行う場合に、出力データを一時的に記憶するためのデータバッファである。送信データバッファ220は、ベクトルパイプサブユニット200内の各ベクトル演算パイプ210と対応して配置される。受信データバッファ230は、パイプ間クロスバユニット10から入力されるデータを一時的に記憶するためのデータバッファである。受信データバッファ230は、ベクトルパイプサブユニット200内の各ベクトル演算パイプ210と対応して配置される。
【0026】
ベクトルデータ選択回路270は、各受信データバッファ220から出力されたデータをインターリーブして、パイプ間クロスバユニット10に出力するための選択回路である。
【0027】
ベクトル演算パイプ210は、パイプ内クロスバ240と、ベクトルレジスタ250と、演算器260と、を備える。パイプ内クロスバ240は、演算器260から出力された値をベクトルレジスタ250に入力する。ベクトルレジスタ250は、演算器260の演算結果を一時的に記憶するレジスタであり、ベクトル演算パイプ210内に複数存在する(図3では、ベクトル演算パイプ210に対して8つのベクトルレジスタ250で構成されている)。演算器260は、ベクトル演算を行うための処理部である。
【0028】
図4は、ベクトルレジスタ250の詳細を示す図である。ベクトルレジスタ250は、ベクトルレジスタ250へのデータ書き込みにかかるベクトルレジスタライトパスと、ベクトルレジスタ250からのデータ読み込みにかかるベクトルレジスタリードパスと、を有する。各ベクトルレジスタ250は、ベクトルレジスタ番号を持つ複数のレジスタから構成される。図4ではベクトルレジスタ250は、ベクトルレジスタ番号VR0、VR8、VR16、VR24、VR32、VR40、VR48、VR56を持つレジスタから構成されている。また、図4に示したベクトルレジスタ250とは異なるベクトルレジスタ250(例えば、図4に示したベクトルレジスタ250の隣に配置されているベクトルレジスタ250)は異なるベクトルレジスタ番号(例えばVR1等)を持つレジスタから構成される。ここで、同一のベクトルレジスタ250内にあるレジスタ(例えばVR0とVR8)からのデータ読み出しは、同一のベクトルレジスタリードパスを使用するため、競合関係(他方の処理を待たなければならない関係)となる。同様に、同一のベクトルレジスタ250内にあるレジスタ(例えばVR0とVR8)へのデータ書き込みは、同一のベクトルレジスタライトパスを使用するため、競合関係(他方の処理を待たなければならない関係)となる。(なお、以下の説明では、ベクトルレジスタ番号の差が8の倍数である場合には競合関係にあるものとする。)
【0029】
続いて、図5を用いてベクトル処理装置にベクトルデータの処理命令を発行する発行制御部400の構成を説明する。発行制御部400は、命令リクエストA格納部401と、命令リクエストB格納部402と、発行チェック回路A403と、発行チェック回路B404と、GOA405と、GOB406と、ビジーフラグ記憶部407と、ベクトルレジスタライトバスビジーフラグ記憶部408と、WSレジスタ409と、ベクトルレジスタライトパス使用抑止フラグ記憶部410と、VTBリード抑止フラグ411と、PXB命令2次リクエスト格納部412と、発行チェック回路C413と、RGO414と、を備える。
【0030】
命令リクエストA格納部401は、発行予定のベクトル命令を一時的に格納する格納部である。同様に、命令リクエストB格納部402は、発行予定のベクトル命令を一時的に格納する格納部である。
【0031】
ビジーフラグ記憶部407は、各リソースの使用状態を示すビジーフラグを記憶する。ただし、ビジーフラグにはベクトルレジスタ250のベクトルレジスタライトパスの使用状況に関する状態の情報は含まない。ベクトルレジスタライトパスビジーフラグ記憶部408は、ベクトルレジスタ250内のベクトルレジスタライトパスの使用状況に関する状態を示すベクトルレジスタライトパスビジーフラグを記憶する。
【0032】
発行チェック回路A403は、命令リクエストA格納部401に格納された命令リクエストの内容をチェックする。そして、発行チェック回路A403は、命令リクエストに応じて使用するリソースの状態をビジーフラグ記憶部407に問い合わせる。発行チェック回路A403は、当該リソースが使用状態か否かのチェック結果をGOA405に書き込む。発行チェック回路A403は、リソースの使用状況が空き状態であれば発行すべき命令をGOA405に通知する。ここで、発行チェック回路A403は、ベクトルレジスタ250への書き込みを含む処理(VMV命令等)の場合、命令を分離して(一次命令、二次命令)、ベクトルレジスタ250への書き込み以外の命令(一次命令)をGOA405に通知する。たとえばVMV命令であれば、一次命令とは、VMV命令のうちベクトルレジスタ250への書き込み処理の前段階での処理(ベクトルレジスタ250からパイプ間クロスバユニット10への書き出し等)の命令であり、二次命令はベクトルレジスタ250への書き込みを指示する命令である。また、発行チェック回路A403は、二次命令をPXB命令2次リクエスト格納部412に格納する。
【0033】
発行チェック回路B404は、命令リクエストB格納部402に格納された命令リクエストの内容をチェックする。そして、発行チェック回路B404は、命令リクエストに応じて使用するリソースの状態をビジーフラグ記憶部407に問い合わせる。発行チェック回路B404は、当該リソースが使用状態か否かのチェック結果をGOB406に書き込む。発行チェック回路B404は、リソースの使用状況が空き状態であれば発行すべき命令をGOB406に通知する。ここで、発行チェック回路B404は、発行チェック回路A403と同様に、ベクトルレジスタ250への書き込みを含む処理(VMV命令等)を分離して一次命令をGOB406に通知する。
【0034】
GOA405は、発行チェック回路A403によるリソースのチェック結果が書き込まれるレジスタである。また、GOA405を管理する処理部は、リソースのチェック結果の書き込みと同時に全てのベクトル演算パイプ210にベクトル命令の実行指示を発行する。
【0035】
GOB406は、発行チェック回路B404によるリソースのチェック結果が書き込まれるレジスタである。また、GOB406を管理する処理部は、リソースのチェック結果の書き込みと同時に全てのベクトル演算パイプ210にベクトル命令の実行指示を発行する。
【0036】
WSレジスタ409は、制御信号であるVTBライトスタート信号を格納するレジスタである。VTBライトスタート信号は、ベクトルパイプ間命令動作時に、ベクトルデータがパイプ間クロスバユニット10から受信データバッファ230に書き込まれることを通知する制御信号である。
【0037】
ベクトルレジスタライトパス使用抑止フラグ記憶部410は、ベクトルレジスタ250内のベクトルレジスタライトパスの使用を抑止するか否かを示すベクトルレジスタライトパス使用抑止フラグを記憶する。ベクトルレジスタライトパス使用抑止フラグは、VTBライトスタート信号が入力された場合、他の命令によりベクトルレジスタライトパスが使用されることを禁止するために更新される。
【0038】
VTBリード抑止フラグ記憶部411は、受信データバッファ230の読み込みを抑止するか否かを示すVTBリード抑止フラグを記憶する。VTBリード抑止フラグは、ベクトルデータがパイプ間クロスバユニット10から入力されるベクトルデータが受信バッファ220に格納される前に受信バッファ230を読み出すことを禁止するために用いられる。
【0039】
PXB命令2次リクエスト格納部412は、命令リクエストA格納部401又は命令リクエストB格納部402に格納された命令リクエストがベクトル間動作命令である場合、ベクトルレジスタ250にベクトルデータを書き込むために必要な命令リクエスト(二次命令)を格納する。
【0040】
発行チェック回路C413は、受信データバッファ230からベクトルレジスタ250に書き込みを行う場合に動作する。発行チェック回路C413は、PXB命令2次リクエスト格納部412に格納された命令リクエストに対応するベクトルレジスタライトパスビジーフラグと、VTBリード抑止フラグと、WSレジスタ409の値と、をチェックする。発行チェック回路C413は、チェック結果をRGO414に書き込む。
【0041】
RGO414は、発行チェック回路C413によるチェック結果を書き込むためのレジスタである。また、RGO414を管理する処理部は、発行チェック回路C413によるチェック結果の書き込みと同時に、全てのベクトル演算パイプ210に受信データバッファ230からベクトルレジスタ250へのデータ書き込みの実行を指示する。
【0042】
続いて、本実施の形態にかかるベクトル処理装置が以下の2つのベクトルパイプ間動作命令(VMV:パイプ間ムーブ命令、VADD:ベクトル加算命令、VR:ベクトルレジスタ番号、S:定数)を実行した際の動作について説明する。
(1) VMV VRm←VRn
(2) VADD VRo←Sy+VRp
【0043】
まず、VMV命令を発行した後に、VADD命令を発行した際の本実施の形態にかかるベクトル処理装置の一般的な動作を以下に説明する。まず、VMV命令は、命令リクエストA格納部401に格納される。発行チェック回路A403は、当該VMV命令が使用するリソースの使用状況をチェックする。具体的には、発行チェック回路A403は、ビジーフラグ記憶部407と、ベクトルレジスタライトパスビジーフラグ記憶部408と、ベクトルレジスタライトパス使用抑止フラグ記憶部410と、をチェックしてリソースの使用状況を確認する。
【0044】
発行チェック回路A403は、リソースの使用状況が空き状態であればVMV命令をGOA405に設定するとともに、GOA403を介してVMV命令の処理開始をベクトルパイプサブユニット200に命令する(一次命令発行)。すなわち、発行チェック回路A403はVMV命令をベクトルレジスタ250への書き込みの前段階の処理(ベクトルレジスタ250からパイプ間クロスバユニット10への書き出し等)の命令(一次命令)を発行する。また、VMV命令の処理開始と同時に、ビジーフラグ記憶部407に格納されたビジーフラグの値を更新する。これにより、当該VMV命令で使用するリソースに対する後続命令の発行を抑止する。また、VMV命令を構成する命令のうち、ベクトルレジスタ250へのベクトルデータ書き込み処理に必要な情報(二次命令)をPXB命令2次リクエスト格納部412に格納する。
【0045】
ベクトル演算パイプ210によるVMV命令の実行が終了した後に、パイプ間クロスバユニット10はWSレジスタ409にVTBライトスタート信号を入力する。WSレジスタ409にVTBライトスタート信号が入力された場合、ベクトルレジスタライトパス使用抑止フラグ記憶部410内のベクトルレジスタライトパス使用抑止フラグを更新する。ベクトルレジスタライトパス使用抑止フラグの更新により、当該VMV命令とは異なる命令によるベクトルレジスタ250への書き込みが抑止された状態になる。これは、パイプ間クロスバユニット10から入力されたデータを入力先のベクトルレジスタ250に書き込むための準備である。
【0046】
パイプ間クロスバユニット10は、出力先のベクトル演算パイプ210に対応した受信データバッファ230にベクトルデータを書き込む。ここで、受信データバッファ230からベクトル演算パイプ210への書き込みのタイミングは、VTBリード抑止フラグ記憶部411内のVTBリード抑止フラグにより管理される。
【0047】
発行チェック回路C413は、ベクトル間クロスバユニット10から受信データバッファ230に入力されたベクトルデータをベクトル演算パイプ210に入力できるか否かをチェックする。言い換えると、発行チェック回路C413は、当該入力処理にかかるリソースが空き状態か否かをチェックする。発行チェック回路C413は、ベクトルレジスタライトパスビジーフラグ記憶部408に格納されたベクトルレジスタライトパスビジーフラグと、VTBリード抑止フラグ記憶部411に格納されたVTBリード抑止フラグと、WSレジスタ409の保持する値とをチェックする。ここで、ベクトルレジスタライトパスビジーフラグは、PXB命令2次リクエスト格納部412に格納した命令リクエストに関連するベクトルレジスタ250についての使用状況についてチェックする。
【0048】
発行チェック回路C413は、リソースの使用状況が空き状態であれば受信データバッファ230からベクトル演算パイプ210への書き込み命令をRGO414に書き込む。また、発行チェック回路C413は、RGO414への書き込みとともに、受信データバッファ230からベクトル演算パイプ210へのベクトルデータの書き込み命令を発行する(二次命令発行)。さらに、PXB2次リクエスト格納部412内に格納されたPXB2次リクエストに対応するリソースにかかるベクトルレジスタライトパスビジーフラグを設定する。ベクトルレジスタライトパスビジーフラグの設定により、同一リソースに対する後続命令の実行を抑止する。加えて、RGO414の設定の後に、ベクトルレジスタライトパス使用抑止フラグ記憶部410と、WSレジスタ409の値と、をリセットする。
【0049】
後続のVADD命令は、命令リクエストB格納部402に格納される。発行チェック回路B404は、当該VMV命令が使用するリソースの対応状況をチェックする。具体的には、発行チェック回路B404は、ビジーフラグ記憶部407と、ベクトルレジスタライトパスビジーフラグ記憶部408と、ベクトルレジスタライトパス使用抑止フラグ記憶部410と、をチェックしてリソースの使用状況を確認する。
【0050】
発行チェック回路B404は、リソースの使用状況が空き状態であればVADD命令をGOB406に設定するとともに、VADD命令の処理開始を命令する。ここで、VADD命令はVMV命令の後続命令であるが、使用するリソースが空き状態であれば命令発行の時点でVADD命令の実行を開始する。また、VADD命令の処理開始と同時に、ビジーフラグ記憶部407に格納されたビジーフラグの値と、ベクトルレジスタライトパスビジーフラグ記憶部408に格納されたベクトルレジスタライトパスビジーフラグの値と、を更新する。一般にVADD命令はVMV命令に比べて処理時間が短い。そのため、VMV命令実行後に待ち状態とならずに直ちにVADD命令が発行された場合、VADD命令はVMV命令よりも先に終了する場合がある。すなわち、VADD命令の実行はVMV命令の実行を追い越した形で終了する。
【0051】
次に、図6を用いて、本実施の形態にかかるベクトル処理装置がVMV命令と、VADD命令を実行した際の処理について説明する。図6は以下の命令を実行した際のタイミングチャートである。VR0とVR8は、ベクトルレジスタ250への書き込みについて競合関係となる。なお、図中のマシンサイクルとは、クロックと同義である。
(1) VMV VR0←VR14
(2) VADD VR8←Sy+VR7
【0052】
最初に発行制御部400はVMV命令を一次発行する(S1)。この場合に、当該VMV命令に関連するリソースの使用を抑止するビジーフラグを設定する。当該一次発行にかかる命令ではベクトルレジスタ250への書き込みは行わないため、ベクトルレジスタライトパスビジーフラグは設定しない。
【0053】
その後、全てのベクトル演算パイプ210が処理状態となり、ベクトル演算パイプ210はベクトルデータを読み出す(S11)。当該読み出す処理は、インターリーブを要することのない処理である。そのため、当該処理は短い時間での終了が可能である。ベクトル演算パイプ210は、読み出したベクトルデータを送信データバッファ220に格納する(S12)。パイプ間クロスバユニット10は、送信バッファ220のリード制御に基づいて送信データバッファ220を読み出す。ここで、ベクトルパイプサブユニット200は2つのベクトル演算パイプ210を備えるため、送信データバッファ220のリード制御にはデータのインターリーブを考慮する。パイプ間クロスバユニット10は、それぞれのベクトルパイプサブユニット200からベクトルデータを取得し、処理を行う(S14)。
【0054】
一方、VADD命令は、VMV命令の一次発行終了後に実行が開始される(S2)。これは、VR0とVR8が同一のベクトルレジスタライトパスを使用する競合関係であってもベクトルレジスタライトパスビジーフラグが設定されていないため、VADD命令を実行可能と判断されるためである。VADD命令の実行では、ベクトル演算パイプ210からのベクトルデータの読み出しと、ベクトルデータの加算処理と、ベクトル演算パイプ210へのベクトルデータの書き込みとが実行される。
【0055】
パイプ間クロスバユニット10からのVTBライトスタート信号がWSレジスタ409に入力される。ここで、ベクトルレジスタライトパス使用抑止フラグと、VTBリード抑止フラグも同時に設定する。その後、ベクトル間クロスバユニット10は、受信データバッファ230にベクトルデータを書き込む(S15)。受信データバッファ230のデータの読み出しが可能となった時点で、VTBリード抑止フラグがリセットされる(S16)。発行チェック回路C413は、ベクトルレジスタライトパスビジーフラグと、VTBリード抑止フラグと、WSレジスタ409の値とをチェックする。発行チェック回路C413は、VMV命令の二次発行が可能であることをチェックし、チェック後に受信データバッファ230に格納されたベクトルデータをベクトルレジスタ250に書き込むこと指示する命令を発行する(VMV二次発行)。VMV二次発行をした場合には、ベクトルレジスタライトパス使用抑止フラグをリセットする。また、ベクトルレジスタライトビジーフラグを設定し、同一ベクトルレジスタライトパスの使用を抑止する。
【0056】
上述のように、ベクトル演算パイプ210のベクトルデータの読み出し、書き込み(VR Read、VR Write)はデータの読み書きのみの処理で処理を終了できる。これは、各ベクトル演算パイプ210が送信データバッファ220及び受信データバッファ230を用いてデータを送受信することによるため、ベクトル演算パイプ210がインターリーブ処理を行う必要がないためである。
【0057】
また、上述のようにベクトルレジスタライトパスビジーフラグによりベクトルレジスタ250への書き込みを制御している。本実施の形態にかかる命令発行部400は、VMV命令をベクトルレジスタ250への書き込みが発生しない1次命令とベクトルレジスタ250への書き込みが生じる2次命令に分離して発行する。ベクトルレジスタライトパスビジーフラグは、2次命令の発行時のみしか使用中として設定されない。これにより、先行するVMV命令がベクトルレジスタ250への書き込み処理を行っていない間に後続のVADD命令を終了することができ、効率的なベクトル演算処理が実現されている。
【0058】
次に、図7を用いて、本実施の形態にかかるベクトル処理装置が以下のVMV命令と、VADD命令を実行した際の処理について説明する。図7は以下の命令を実行した際のタイミングチャートである。VR6とVR14は、ベクトルレジスタ250からの読み出しについて競合関係となる。なお、ベクトルレジスタ250の書き込みについては競合関係にないため、図7及び以下の説明では、ベクトルレジスタ250への書き込み処理にかかる記載は省略する。
(1) VMV VR0←VR14
(2) ' VADD VR4←VR6+VR7
【0059】
最初に発行制御部400はVMV命令の一次命令を発行する(S1)。この場合に、当該VMV命令に関連するリソースの使用を抑止するビジーフラグを設定する。その後、全てのベクトル演算パイプ210が処理状態となり、ベクトル演算パイプ210はベクトルデータを読み出す(S11)。当該読み出す処理は、インターリーブを要することのない処理である。そのため、当該処理は短い時間での終了が可能である。当該読み出し処理の実行中は、ベクトルレジスタリードパスビジーフラグが設定され、他の命令による読み出し処理が禁止される。ベクトル演算パイプ210は、読み出したベクトルデータを送信データバッファ220に格納する(S12)。
【0060】
パイプ間クロスバユニット10は、送信バッファ220のリード制御に基づいて送信データバッファ220を読み出す。ここで、ベクトルパイプサブユニット200は2つのベクトル演算パイプ210を備えるため、送信データバッファ220のリード制御にはデータのインターリーブの処理を要する。パイプ間クロスバユニット10は、それぞれのベクトルパイプサブユニット200からベクトルデータを取得し、処理を行う(S14)。
【0061】
一方、VADD命令は、先行するVMV命令とベクトルレジスタリードパスの競合(V6とV14)がある。そのため、VADD命令はベクトルレジスタリードパスビジーフラグがリセットした後に発行可能となる。ここで、VMV命令のベクトルデータの読み出し処理(S11)は、インターリーブを要することのない処理のため、早期の処理終了が可能である。そのため、VADD命令は、VMV命令の発行から早期に発行される。以降の処理は、図6に示すものと同様のため、説明は省略する。
【0062】
上述のように、送信データバッファ220を備えたことにより、ベクトルデータの読み出し処理(S11)がインターリーブを要することのない処理のため、早期の処理終了が可能である。よって、ベクトルレジスタの読み込みについて競合関係にある場合であっても、ベクトルデータの読み出し処理後に後続の命令が実行可能となる。
【0063】
続いて、本実施の形態にかかるベクトル処理装置との比較のため、図9に本発明が解決しようとする課題の1つに関連するベクトル処理装置の構成(図8)においてベクトルレジスタ250の読み込み処理及び書き込み処理の競合がある場合の動作を示す。本実施の形態にかかるベクトル処理装置ではベクトルレジスタからの読み込み処理はインターリーブ処理を行うため、相当の処理時間を要する(図中の(1))。そのため、ベクトルレジスタリードパスが競合している場合、本実施の形態にかかるベクトル処理装置ではVADD命令の実行開始が遅れる。
【0064】
ベクトルレジスタライトパスが競合している場合、VMV命令発行時からベクトルレジスタライトパスビジーフラグが設定される。実際のベクトルレジスタへの書き込み処理は、パイプ間クロスバユニット10からベクトルレジスタへの書き込み(S13)の時点で実行される。しかし、他の命令によるVMV命令発行時点からベクトルレジスタの書き込みはVMV命令発行時点から禁止された状態となる。これは、VMV命令を一の命令として発行しているため、ベクトルレジスタライトパスビジーフラグが長時間書き変わらないことに起因する。
【0065】
以下に本実施の形態にかかるベクトル処理装置による効果についてまとめる。図6及び図7の例で示したように、送信データバッファ220及び受信データバッファ230をベクトルパイプサブユニット200内に設けたことにより、ベクトル演算パイプ210からのベクトルデータの読み出し、書き出しが早期に終了する。これは、ベクトル演算パイプ210毎に出力先を設け、ベクトル演算パイプ210での処理を早期に終了できるようにしたためである。これにより、通常インターリーブ処理の時間もかかっていた処理が短縮できる。ベクトル演算パイプ210からのベクトルデータの読み出し、書き出しの時間が短縮されることにより、後続の命令を開始できるタイミングが早まり、処理時間の短縮につながる。
【0066】
また、図6に示したように、ベクトルレジスタライトパスビジーフラグによりベクトルレジスタ250への書き込みを制御している。本実施の形態にかかる命令発行部400は、VMV命令をベクトルレジスタ250への書き込みが発生しない1次命令とベクトルレジスタ250への書き込みが生じる2次命令に分離して発行する。ベクトルレジスタライトパスビジーフラグは、2次命令の発行時のみしか使用中として設定されない。これにより、先行するVMV命令がベクトルレジスタ250への書き込み処理を行っていない間に後続のVADD命令を終了することができ、効率的なベクトル演算処理が実現されている。
【0067】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0068】
10 パイプ間クロスバユニット
20 ベクトルパイプユニット
200 ベクトルパイプサブユニット
210 ベクトル演算パイプ
220 送信データバッファ
230 受信データバッファ
240 パイプ内クロスバ
250 ベクトルレジスタ
260 演算器
270 ベクトルデータ選択回路
30 信号線
400 発行制御部
401 命令リクエストA格納部
402 命令リクエストB格納部
403 発行チェック回路A
404 発行チェック回路B
405 GOA
406 GOB
407 ビジーフラグ記憶部
408 ベクトルレジスタライトパスビジーフラグ記憶部
409 WSレジスタ
410 ベクトルレジスタライトパス使用抑止フラグ記憶部
411 VTBリード抑止フラグ記憶部
412 PXB命令2次リクエスト格納部
413 発行チェック回路C
414 RGO

【特許請求の範囲】
【請求項1】
第1及び第2のベクトル演算パイプを備える第1の処理ユニットと、
第2の処理ユニットと、
前記第1の処理ユニットと前記第2の処理ユニットとの間でデータを転送できるよう構成されたデータ転送回路と、
前記第1の処理ユニットと前記データ転送回路の間を接続するとともに、前記第1及び第2のベクトル演算パイプの出力データを前記データ転送回路に供給するため、又は前記データ転送回路から前記第1及び第2のベクトル演算パイプに入力データを供給するために使用される第1のデータパスと、
を備え、
前記第1の処理ユニットは、前記第1及び第2のベクトル演算パイプと前記第1のデータパスとの間に配置され、前記出力データ又は前記入力データを保持するデータバッファを備え、
前記第1及び第2のベクトル演算パイプは、他方のベクトル演算パイプが前記データバッファへアクセス中であるか否か及び前記第1のデータパスが使用中であるか否かに依存することなく、前記データバッファにアクセス可能に構成されている、
ベクトル演算処理装置。
【請求項2】
前記データバッファは、前記第1のベクトル演算パイプと前記第1のデータパスの間に配置された第1のデータバッファと、前記第2のベクトル演算パイプと前記第1のデータパスの間に配置された第2のデータバッファとを備える、請求項1に記載のベクトル演算処理装置。
【請求項3】
前記第1のデータバッファは、前記第1のベクトル演算パイプの出力データを保持するよう構成され、
前記第2のデータバッファは、前記第2のベクトル演算パイプの出力データを保持するよう構成され、
前記第1の処理ユニットは、前記第1のデータバッファ又は前記第2のデータバッファに保持されたデータを選択的に前記第1のデータパスに供給する選択回路をさらに備える、請求項2に記載のベクトル演算処理装置。
【請求項4】
前記第1の処理ユニットは、前記第1のベクトル演算パイプに命令を発行する発行制御部をさらに備え、
前記第1のベクトル演算パイプは、当該演算パイプでの演算に使用されるデータ及び演算結果データを格納する第1のレジスタを備え、
前記第1のデータバッファは、前記第1のベクトル演算パイプへの入力データを保持するよう構成され、
前記発行制御部は、前記第1のデータバッファを介する前記データ転送回路から前記第1のレジスタへのデータ書き込みをもたらす先行命令を前記第1のベクトル演算パイプが実行中であるか否かに依存することなく、前記先行命令の実行に起因する前記データ転送回路から前記第1のデータバッファへのデータ転送および前記第1のデータバッファから前記第1のレジスタへのデータ転送がともに行われていないことを条件として、後続命令を前記第1のベクトル演算パイプに発行する、
請求項2に記載のベクトル演算処理装置。
【請求項5】
前記第1のレジスタへのデータ書き込みを行うためのライトパスが使用中であるか否かを示す第1のフラグと、
前記データ転送回路から前記第1のデータバッファにデータ転送を行うための前記第1のデータパスが使用中であるか否かを示す第2のフラグと、
をさらに備え、
前記発行制御部は、前記第1及び第2のフラグを参照することで、前記データ転送回路から前記第1のデータバッファへのデータ転送および前記第1のデータバッファから前記第1のレジスタへのデータ転送がともに行われていないことを判定する、請求項4に記載のベクトル演算処理装置。
【請求項6】
前記発行制御部は、前記第1のフラグがセットされておらず、かつ前記データ転送回路から前記第1のデータバッファへのデータ転送が開始されている場合、
前記データバッファから前記第1のレジスタへのデータ転送を開始させるとともに、前記第1のフラグをセットする、請求項5に記載のベクトル演算処理装置。
【請求項7】
前記第2のフラグは、前記データ転送回路から前記第1の処理ユニットに供給され、前記データ転送回路から前記第1のデータバッファへのデータ転送の開始を示す制御信号に応じて設定される、請求項5または請求項6に記載のベクトル演算処理装置。
【請求項8】
前記データバッファは、前記第1及び第2のベクトル演算パイプによる前記出力データの出力と、前記第1のデータパスへの前記出力データの転送とを独立化する請求項1乃至請求項7のいずれか1項に記載のベクトル演算処理装置。
【請求項9】
前記データバッファは、前記第1のデータパスから前記データバッファへの前記入力データの供給と、前記データバッファから前記第1及び第2のベクトル演算パイプに対する前記入力データの供給とを独立化する請求項1乃至請求項7のいずれか1項に記載のベクトル演算処理装置。
【請求項10】
前記データ転送回路は、クロスバスイッチである、請求項1乃至請求項9のいずれか1項に記載のベクトル演算処理装置。
【請求項11】
第1及び第2のベクトル演算パイプを備える第1の処理ユニットと、
第2の処理ユニットと、
前記第1の処理ユニットと前記第2の処理ユニットとの間でデータを転送できるよう構成されたデータ転送回路と、
前記第1の処理ユニットと前記データ転送回路の間を接続するとともに、前記第1及び第2のベクトル演算パイプの出力データを前記データ転送回路に供給するため、又は前記データ転送回路から前記第1及び第2のベクトル演算パイプに入力データを供給するために使用される第1のデータパスと、
を備えたベクトル処理装置における処理方法であって、
前記第1の処理ユニットは、前記第1及び第2のベクトル演算パイプと前記第1のデータパスとの間に配置され、前記出力データ又は前記入力データを保持するデータバッファを備え、
前記第1及び第2のベクトル演算パイプは、他方のベクトル演算パイプが前記データバッファへアクセス中であるか否か及び前記第1のデータパスが使用中であるか否かに依存することなく、前記データバッファにアクセスするベクトル演算処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−113183(P2011−113183A)
【公開日】平成23年6月9日(2011.6.9)
【国際特許分類】
【出願番号】特願2009−267385(P2009−267385)
【出願日】平成21年11月25日(2009.11.25)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】