JP2010205088A - ベクトル処理装置、及びベクトル処理方法 - Google Patents

ベクトル処理装置、及びベクトル処理方法 Download PDF

Info

Publication number
JP2010205088A
JP2010205088A JP2009051373A JP2009051373A JP2010205088A JP 2010205088 A JP2010205088 A JP 2010205088A JP 2009051373 A JP2009051373 A JP 2009051373A JP 2009051373 A JP2009051373 A JP 2009051373A JP 2010205088 A JP2010205088 A JP 2010205088A
Authority
JP
Japan
Prior art keywords
vector
instruction
register
issue
save
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.)
Pending
Application number
JP2009051373A
Other languages
English (en)
Inventor
Masahito Akaike
雅人 赤池
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 Computertechno Ltd
Original Assignee
NEC Computertechno Ltd
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 Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2009051373A priority Critical patent/JP2010205088A/ja
Publication of JP2010205088A publication Critical patent/JP2010205088A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】リネーム機能を備えるベクトル処理装置の処理性能を向上させる。
【解決手段】本発明によるベクトル処理装置は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタと、ベクトル命令管理部とを具備する。ベクトル命令管理部は、待機中の先行命令による読み出し先の第1ベクトルレジスタと、後続命令の書き込み先の第2ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第1ベクトルレジスタから第1ベクトルレジスタに対応する第1退避用レジスタに変更する。又、ベクトル命令管理部は、第1ベクトルレジスタ内のデータを削除することなく、当該データを第1退避用レジスタに書き込む。
【選択図】図2

Description

本発明は、リネーム機能を備えるベクトル処理装置に関する。
ベクトル処理装置では、ベクトルレジスタに対し、先行命令である読み出し命令が待たされている間において、当該ベクトルレジスタに対して後続の書き込み命令が入力されることがある。この場合、従来のベクトル処理装置では、元のデータが書き潰されるのを防ぐため、先行する読み出し命令が発行され、読み出し動作が開始されるのを待機した後、後続の書き込み命令発行されていた。
このため、従来のベクトル処理装置では、先行する読み出し命令の待ち時間が長い場合、後続の書込み命令や、それに続く命令の発行が長い時間待たされてしまうため、ベクトル処理性能が低下していた。
このような命令の待ち合わせを回避して処理能力を向上させる技術が、例えば、特開2003−196086に記載されている(特許文献1参照)。特許文献1に記載の技術では、データの読み出しはワーキングレジスタにアクセスし、データを書き込むときは、マスタレジスタとワーキングレジスタの両方にアクセスする。又、ワーキングレジスタに、マスタレジスタのカレントウィンド前後のデータも格納することで、アウトオブオーダーの処理を妨げないようにしている。
一方、リネーミング機能によって、物理レジスタのリソースを抑止する技術が特開2006−268168に記載されている(特許文献2参照)。
しかし、リネーミング機能等により、後続の書き込み命令の書き込み先を、別のベクトルレジスタに割り当てたとしても、後続命令がマスク付き書込み命令の場合、マスクが無効の要素に対しては、元のデータを保持させる必要がある。すなわち、リネーミング機能を有するベクトル処理装置では、元データが存在しないベクトルレジスタに対するマスク付き書き込みは不可能である。このような場合も、後続の書き込み命令に対して新たなベクトルレジスタを割り当てることができず、先行命令の読み出し動作が開始されるまで、後続の書き込み命令の発行を待たせる必要があり、ベクトル処理性能の低下を招いていた。
特開2003−196086 特開2006−268168
本発明の目的は、リネーム機能を備えるベクトル処理装置の処理性能を向上させることにある。
本発明によるベクトル処理装置は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタと、ベクトル命令管理部とを具備する。ベクトル命令管理部は、待機中の先行命令による読み出し先の第1ベクトルレジスタと、後続命令の書き込み先の第2ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第1ベクトルレジスタから第1ベクトルレジスタに対応する第1退避用レジスタに変更する。又、ベクトル命令管理部は、第1ベクトルレジスタ内のデータを削除することなく、当該データを第1退避用レジスタに書き込む。
本発明によるベクトル方法は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタとを備えるベクトル処理装置において実行される。本発明によるベクトル方法は、待機中の先行命令による読み出し先の第1ベクトルレジスタと、後続命令の書き込み先の第2ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第1ベクトルレジスタから第1ベクトルレジスタに対応する第1退避用レジスタに変更するステップと、第1ベクトルレジスタ内のデータを削除することなく、当該データを第1退避用レジスタに書き込むステップとを具備する。
本発明によれば、ベクトル処理装置におけるベクトル処理性能を向上させることができる。
図1は、従来技術によるベクトル処理装置におけるベクトル命令列の処理動作の一例を示すタイムチャートである。 図2は、本発明によるベクトル処理装置の実施の形態における構成を示すブロック図である。 図3は、本発明によるベクトル命令管理部の実施の形態における構成を示すブロック図である。 図4は、本発明によるベクトル処理装置におけるベクトル命令列の処理動作の一例を示すタイムチャートである。
以下、添付図面を参照して、本発明によるベクトル処理装置、及びベクトル処理方法の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
(概要)
本発明によるベクトル処理装置には、ベクトルレジスタ421〜42nとして通常使用するベクトルレジスタ421a〜42na(以下、通常レジスタ421a〜421nと称す)と退避用のベクトルレジスタ421b〜42nb(以下、退避用レジスタ421b〜42nbと称す)とが設けられる。本発明によるベクトル処理装置では、先行命令である読み出し命令が待たされているベクトルレジスタに対し、後続の書き込み命令が割り当てられた場合、当該ベクトルレジスタの退避用レジスタにデータを退避させることにより、先行する読み出し命令の開始を待たずに、後続の書き込み命令を実行し、ベクトル処理性能を向上できる。
又、本発明では、通常レジスタ421a〜42naのデータを退避用レジスタ421b〜42nbに書き出し、元データが残っている通常使用する通常レジスタ421a〜42naに対して、マスク付き書き込み命令の動作を行うように制御することが可能である。このため、後続命令が、読み出しが待たされているベクトルレジスタ(通常レジスタ)に対するマスク付き書き込み命令の場合であっても、先行命令の読み出し開始を待たずに、後続のマスク付き書き込み命令を発行することができ、ベクトル処理性能の向上を図ることができる。
(構成)
図2は、本発明によるベクトル処理システムの実施の形態における構成図である。図2を参照して、本発明によるベクトル処理システムの実施の形態における構成を説明する。
図2を参照して、本発明のベクトル処理装置は、ベクトル命令発行部1、ベクトル命令管理部2、主記憶装置3、ベクトル処理部4を具備する。ベクトル命令管理部2は、命令発行管理部20と、ベクトルレジスタビジー管理部21、退避判定部22を備える。ベクトル処理部4は、ベクトルマスク生成部40、選択部41、45、ベクトルレジスタ群として、複数のベクトルレジスタ421〜42n、演算器群として、演算器461〜46nを備える。
ベクトル命令発行部1は、実行すべき命令を保持し、ベクトル命令管理部2へ、ベクトル命令201を出力する。ベクトル命令は、ベクトル命令の種別(Code)と、その付随情報とを含む。付随情報は、例えば、ベクトル長(VL)と、ベクトルマスクフラグ(MF)と、ベクトルデータの読み出し、及び書き込み対象であるベクトルレジスタを示すベクトルレジスタ番号(VR)を含む。
命令発行管理部20は、ベクトル命令発行部1から入力されるベクトル命令201を解読し、解読したベクトル命令を格納する。又、命令発行管理部20は、ベクトルレジスタビジー管理部21から入力される通常レジスタ421a〜42naのビジーフラグ情報などを参照し、リソースが重なっているか否かを確認する発行チェックを行う。命令発行管理部20は、発行可能ならばベクトル処理部4に対し、ベクトル命令202を出力し、発行できない場合は、発行条件が揃うまでベクトル命令202の発行を待機させる。
退避判定部22は、命令発行管理部20で解読されたベクトル命令の内容に応じて、ベクトルレジスタ内のデータを退避させるか否かの判定を行なう。詳細には、退避判定部22は、先ずベクトル命令が、あるベクトルレジスタへの書き込み命令である場合には、当該ベクトルレジスタに対する読み出し命令が先行命令として存在し、かつその読み出し命令の発行が待たされているかどうかの判定を行う。すなわち、退避判定部22は、後続命令の書き込み対象となるベクトルレジスタに対して、先行読み出し命令が待機中であるか否かを確認する。ここで、待機中の先行読み出し命令がある場合、退避判定部22は、ベクトル処理部4に対し、当該ベクトルレジスタ内のデータを退避させるための退避指示108を送出する。
ベクトルレジスタビジー管理部21は、命令発行管理部20からベクトル処理部4に発行された命令に基づき、使用されるベクトルレジスタのビジー管理を行う。
ベクトルレジスタのビジー管理の詳細を説明する。通常レジスタ421a〜42anの各々には、書き込み用ビジーカウンタと読み出し用ビジーカウンタ等が設けられる。当初、命令発行管理部20から送られてくる各ベクトルレジスタのビジー期間情報がビジーカウンタに初期設定としてセットされ、以降、カウンタ値が“0”になるまでカウントダウン動作が行われる。ビジーフラグは、ビジーカウンタ毎に存在し、カウンタ値≠“0”のとき“1”を、カウンタ値=“0”のとき“0”を保持する。
主記憶装置3は、ベクトルデータを保持する。命令発行管理部20から出力されたベクトル命令202が、ベクトルデータをベクトルレジスタへ転送する命令である場合、ベクトル処理部4は、主記憶装置3からベクトルデータ400を読み出す。読み出されたベクトルデータ400は、選択部41を介して、ベクトル命令202で指定されたベクトルレジスタに出力される。
選択部41には、記憶装置3から読み出されたベクトルデータ400、または演算器群の演算器461〜46nより出力された演算結果であるベクトルデータ403が入力される。選択部41は、命令発行管理部20から出力されるベクトル命令202に付随するベクトルレジスタ番号に従いベクトルレジスタ群の内のひとつ、又は、複数のベクトルレジスタに対して、入力されたベクトルデータを出力する。
ベクトル命令202がマスク付命令である場合、選択部41は、ベクトルマスク生成部40よりベクトルマスクデータ401を入力し、ベクトル命令202に応じて入力されたデータに対して、ベクトルマスク処理を行い、ベクトルレジスタ群に対して出力する。
ベクトルレジスタ群は複数のベクトルレジスタ421〜42nを備える。ベクトルレジスタ群は、命令発行管理部20から出力されたベクトル命令202に従い、ベクトル命令が書き込み命令の場合には選択部41より出力されたベクトルデータを格納し、命令が読み出し命令の場合には、ベクトルデータの読み出しを行い、読み出しデータを、選択部45に出力する。ここで、書き込み命令が、マスク付き書き込み命令の場合には、ベクトルデータの要素毎に存在するマスクビットが、“1”の要素は書き込みが行われるが、“0”の要素には書き込みは行われない。
ベクトルレジスタ421〜42nは、通常レジスタ421a〜42naに対応する退避用レジスタ421b〜42nbを備える。命令発行管理部20からデータの退避指示108を受け取ると、退避指示108で指定されたベクトルレジスタにおける通常レジスタのデータが対応する退避用レジスタに書き出される。この際、通常レジスタのデータは削除されずにそのまま保持される。例えば、退避指示108がベクトルレジスタ421に対する退避指示である場合、通常レジスタ421aのデータが退避用レジスタ421bに書き出される。この際、通常レジスタ421a内のデータは削除されず、そのまま保持される。
選択部45は、ベクトルレジスタ群から読み出されたベクトルデータを、命令発行管理部20から出力されるベクトル命令202に従い、演算器群、選択部41、又は主記憶装置3に出力する。詳細には、選択部45は、ベクトル命令202が演算命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを演算器群(演算器461〜46n)に出力し、ベクトル命令202が他のベクトルレジスタへの移送命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを選択部41に出力し、ベクトル命令202が主記憶装置3への格納命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを記憶装置3に出力する。
演算器群は、1つ、ないしは、複数の演算器461〜46nを備える。命令発行管理部20から出力されるベクトル命令202が演算命令である場合には、選択部45からのベクトルデータに対する演算を行い、演算結果であるベクトルデータ403を選択部41に出力する。
ベクトルマスク生成部40は、命令発行管理部20から出力されたベクトル命令202がマスク付命令であった場合、ベクトルデータに対するマスクデータ401を選択部41に出力する。
次に、図3を参照して、ベクトル命令管理部2の実施の形態における構成の詳細を説明する。図3は、ベクトル命令管理部2内の命令発行管理部20、ベクトルレジスタビジー管理部21、及び、退避判定部22の構成例を示すブロック図である。
命令発行管理部20は、命令入力レジスタ211、命令デコード回路212、デコードステージレジスタ213、リネーミング回路214、セレクタ回路215、発行ステージ1レジスタ216、発行チェック回路217、発行1レジスタ218、発行ステージ2レジスタ219、発行チェック回路220、発行2レジスタ221を備える。又、退避判定部22は、退避条件検出回路231、AND回路232、234、OR回路233、退避スタートレジスタ235を備える。
図3を参照して、ベクトル命令管理部1から入力されたベクトル命令201は、命令入力レジスタ211に格納され、命令デコード回路212によりデコードされて、デコードステージレジスタ213に格納される。デコードステージ213から出力された命令100は、セレクタ回路215と、退避判定部22内の退避条件検出回路231と、発行ステージ2レジスタ219へ送出される。
退避条件検出回路231は、先行命令と後続命令における読み出し対象のベクトルレジスタと書き込み対象のベクトルレジスタとの一致、不一致に応じた退避有効信号103及び追い越し有効信号104を出力する。詳細には、(1)先行命令と後続命令が、同一ベクトルレジスタに対する先行読み出し命令と、後続書き込み命令の組み合わせであることが検出されると、退避有効信号103として“1”が設定される。あるいは、(2)後続命令と先行命令とが、異なるベクトルレジスタへの読み出し命令、または書き込み命令の組み合わせであることが検出されると、追い越し有効信号104として“1”が設定される。ここで、退避条件検出回路231には、発行ステージ1レジスタ216から出力されるベクトル命令101が先行命令として入力され、デコードステージレジスタ213から出力されるベクトル命令100が後続命令として入力される。退避条件検出回路231は、ベクトル命令101(先行命令)とベクトル命令100(後続命令)の対象となるベクトルレジスタの一致、不一致を検出する。退避条件検出回路231からの退避有効信号103は、AND回路232及びOR回路233に入力され、追い越し有効信号104は、OR回路233に入力される。
AND回路232は、入力される退避有効信号103と第1発行待機信号105との論理積を退避決定信号106として出力する。退避決定信号106は、セレクト信号としてセレクタ回路215に入力され、また退避スタートレジスタ235へのセット信号として退避スタートレジスタ235に入力される。OR回路233は、入力される退避有効信号103と追い越し有効信号104との論理和をAND回路234へ出力する。AND回路234は、OR回路233の出力と第1発行待機信号105との論理積を、発行ステージ2レジスタのセット信号107として発行ステージ2レジスタ219に出力する。
退避スタートレジスタ235は、退避決定信号106に基づいて退避指示信号(退避指示108)の信号レベルを決定する。詳細には、退避決定信号106が“1”のとき、“1”がセットされ、“0”のとき“0”がセットされる。退避スタートレジスタ235に“1”がセットされると、退避指示信号108として“1”が設定される。
発行チェック回路217は、ベクトルレジスタビジー管理部21から入力されるベクトルレジスタのビジーフラグ情報109に基づき、発行ステージ1レジスタ216に格納されたベクトル命令の発行チェックを行う。発行チェック回路217は、発行チェックの結果、発行可能と判定すると、発行ステージ1レジスタ216に格納されているベクトル命令を発行1レジスタ218にセットし、第1発行待機信号105に“0”を送出する。又、発行チェック回路217は、発行不可能と判定すると、発行1レジスタ218へ命令のセットは行わず、第1発行待機信号105に“1”を送出する。又、このとき発行不可能と判定された命令の後続命令(デコードステージレジスタ213にセットされている命令)が、先行命令を追い越す場合にリネーミング対象となるベクトルレジスタを決定し、リネーミング情報102としてリネーミング回路214に送出する。発行1レジスタ218にベクトル命令が格納されると、次のタイミングで発行1レジスタ218内の命令がベクトル命令202−1として発行される。
発行チェック回路220は、ベクトルレジスタビジー管理部21から入力されるベクトルレジスタのビジーフラグ情報109に基づき、発行ステージ2レジスタ219に格納されたベクトル命令の発行チェックを行う。発行チェック回路220は、発行チェックの結果、発行可能と判定すると、発行2レジスタ221に発行ステージ2レジスタ219に格納されているベクトル命令をセットし、発行不可能と判定すると、発行2レジスタ221への命令のセットは行わない。発行2レジスタ221にベクトル命令がセットされると、次のタイミングで発行2レジスタ221内の命令がベクトル命令202−2として発行される。
ここで、ベクトルレジスタビジー管理部21は、発行されたベクトル命令202(202−1又は202−2)に基づいて算出された、当該ベクトル命令202に応じて使用されるベクトルレジスタのビジー期間を取得する。
リネーミング回路214は、発行チェック回路217から入力するベクトルレジスタリネーミング情報102に基づき、発行ステージ1レジスタ216のベクトル命令を書き換えてセレクタ回路215に出力する。詳細には、リネーミング回路214は、発行ステージ1レジスタ216内から入力されたベクトル命令で設定されている読み出し先ベクトルレジスタを、通常レジスタから退避用レジスタに変更し、セレクタ回路215に出力する。退避用レジスタに変更されるベクトルレジスタは、後続のベクトル命令で設定されている書き込み先のベクトルレジスタと同一の読み出し先ベクトルレジスタである。セレクタ回路215は、退避決定信号106が“0”の場合は、デコードステージレジスタ213から出力されるベクトル命令を、“1”の場合は、リネーミング回路214から出力されるベクトル命令を選択し、発行ステージ1レジスタ216へ出力する。
(動作)
次に、図3及び図4を参照して、本発明によるベクトル処理装置の動作の詳細を説明する。ここでは、ベクトルレジスタ群に含まれる通常レジスタ421a〜427aをV0、V1、V2、V3、V4、V5、V6とし、退避用レジスタ421b〜427bをV0’、V1’、V2’、V3’、V4’、V5’、V6’として説明する。又、以下に示す(1)〜(5)のベクトル命令列が実行されることを一例に本発明によるベクトル処理の動作を説明する。
<ベクトル命令列例>
(1)除算命令D:V5÷V6をV1に格納(処理時間が長い命令)
(2)加算命令A0:V2+V3をV0に格納
(3)乗算命令M:V0×V1をV2に格納
(4)移送命令T:V4をV0に格納
(5)加算命令A1:V1+V2をV3に格納
尚、除算命令Dは処理時間が長く、処理が終了するまで7クロック分の時間がかかるものとする。
図4は、上述のベクトル命令列を処理するベクトル命令管理部2の動作を示すタイムチャートである。上述の(1)〜(5)ベクトル命令列を含むベクトル命令201がベクトル命令発行部1からベクトル命令管理部2に入力される。ベクトル命令201は、まず命令入力レジスタ211に格納された後、デコード回路212で解読され、デコードステージレジスタ213に順次格納されていく。
時刻T2:
時刻T2において、デコードステージレジスタ213に除算命令Dが格納される。この際、発行ステージ1レジスタ216には、命令は存在しないため、退避条件検出回路231の出力である退避有効信号103と、追い越し有効信号104はともに“0”となる。又、時刻T2において実行中の命令がないため、発行チェック回路217は、発行可能と判定し発行待機信号105を“0”に設定する。一方、発行チェック回路220は、発行ステージ2レジスタ219に命令が存在しないため、発行不可能と判定する。
以上のように、時刻T2では、退避有効信号103“0”、発行待機信号105“0”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“0”、追い越し有効信号104“0”、第1発行待機信号105“0”となるため、AND回路234から出力されるセット信号107は“0”となる。
時刻T3:
時刻T2において、発行チェック回路217は発行可能と判定しているが、発行ステージ1レジスタ216にベクトル命令が格納されていないため、時刻T3では、発行1レジスタ218への命令のセットは行わなれない。又、発行チェック回路220は発行不可能と判定しているため、時刻T3では、発行2レジスタ221への命令のセットは行わなれない。
時刻T3において、セレクタ回路215は、退避決定信号106“0”に応じて、デコードステージレジスタ213内の除算命令Dを選択して発行ステージ1レジスタ216にセットする。又、デコードステージレジスタ213には、後続の加算命令A0がセットされ、命令入力レジスタ211には、乗算命令Mがセットされる。更に、セット信号107が“0”であるため、発行ステージ2レジスタ219への命令のセットは行われない。
ここで、発行ステージ1レジスタ216に格納される除算命令D(V5÷V6をV1に格納)と、デコードステージレジスタ213に格納される加算命令A0(V2+V3をV0に格納)は、異なるベクトルレジスタへの読み出し命令、書き込み命令の組み合わせとなる。このため、退避条件検出回路231から出力される退避有効信号103は“0”、追い越し有効信号104は“1”となる。
発行チェック回路217では、発行ステージ1レジスタ216に格納された除算命令Dの発行チェックが行われる。ここでは、実行中の命令がないため発行可能と判定され、第1発行待機信号105は“0”に設定される。一方、発行チェック回路220は、発行ステージ2レジスタ219に命令が存在しないため、発行不可能と判定する。
以上のように、時刻T3では、退避有効信号103“0”、発行待機信号105“0”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“0”、追い越し有効信号104“1”、第1発行待機信号105“0”となるため、AND回路234から出力されるセット信号107は“0”となる。
時刻T4:
時刻T3において、発行チェック回路217は発行可能と判定しているため、発行ステージ1レジスタ216にセットされている除算命令Dは、時刻T4において発行1レジスタ218にセットされ、次のタイミング(時刻T5)において直ちに発行される。尚、除算命令Dの実行(発行1レジスタ218へのセット)に伴いベクトルレジスタV1に対する読み出しフラグが立つ。この読み出しフラグは、除算命令Dの結果がベクトルレジスタV1に書き込まれるまでの間“1”に設定される。ここでは、7クロックの期間(時刻T11まで)“1”に設定される。一方、発行チェック回路220は、発行不可能と判定しているため時刻T4では発行2レジスタ221への命令のセットは行わなれない。
時刻T4において、セレクタ回路215は、退避決定信号106“0”に応じて、デコードステージレジスタ213内の加算命令A0を選択して発行ステージ1レジスタ216にセットする。又、デコードステージレジスタ213には、後続の乗算命令Mがセットされ、命令入力レジスタ211には、移送命令Tがセットされる。更に、セット信号107が“0”であるため、発行ステージ2レジスタ219への命令のセットは行われない。
ここで、発行ステージ1レジスタ216に格納される加算命令A0(V2+V3をV0に格納)と、デコードステージレジスタ213に格納される乗算命令M(V0×V1をV2に格納)は、同一のベクトルレジスタV0に対する読み出し命令(先行命令)と、書き込み命令(後続命令)の組み合せとなる。すなわち、先行命令である加算命令A0の読み出し対象レジスタ(ベクトルレジスタV2)と後続命令である乗算命令Mの書き込み対象レジスタ(ベクトルレジスタV2)が同一である。このため、退避条件検出回路231から出力される退避有効信号103は“1”、追い越し有効信号104は“0”となる。
発行チェック回路217では、発行ステージ1レジスタ216に格納された加算命令A0の発行チェックが行わる。ここでは、実行中の先行命令の除算命令Dとリソース(演算器と、読み出し、及び書き込みベクトルレジスタ)が重ならないので、発行可能と判定され、第1発行待機信号105は“0”に設定される。一方、発行チェック回路220は、発行ステージ1レジスタ219に命令が存在しないため、発行不可能と判定する。
以上のように、時刻T4では、退避有効信号103“1”、発行待機信号105“0”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“1”、追い越し有効信号104“0”、第1発行待機信号105“0”となるため、AND回路234から出力されるセット信号107は“0”となる。
時刻T5:
時刻T4において、発行チェック回路217は発行可能と判定しているため、発行ステージ1レジスタ216にセットされている加算命令A0は、時刻T5において発行1レジスタ218にセットされ、次のタイミング(時刻T6)において直ちに発行される。一方、発行チェック回路220は、発行不可能と判定しているため時刻T5では発行2レジスタ221への命令のセットは行わなれない。
時刻T5において、セレクタ回路215は、退避決定信号106“0”に応じて、デコードステージレジスタ213内の乗算命令Mを選択して発行ステージ1レジスタ216にセットする。又、デコードステージレジスタ213には、後続の移送命令Tがセットされ、命令入力レジスタ211には、加算命令A1がセットされる。更に、セット信号107が“0”であるため、発行ステージ2レジスタ219への命令のセットは行われない。
ここで、発行ステージ1レジスタ216に格納される乗算命令M(V0×V1をV2に格納)と、デコードステージレジスタ213に格納される移送命令T(V4をV0に格納)は、同一ベクトルレジスタV0に対する読み出し命令、書き込み命令、の組み合せとなる。詳細には、先行命令である乗算命令Mの読み出し対象レジスタ(ベクトルレジスタV0)と後続命令である移送命令Tの書き込み対象レジスタ(ベクトルレジスタV0)が同一である。このため、退避条件検出回路231から出力される退避有効信号103は“1”、追い越し有効信号104は“0”となる。
発行チェック回路217では、発行ステージ1レジスタ216に格納された乗算命令Mの発行チェックが行わる。乗算命令Mで使用するベクトルレジスタV0(読み出し対象レジスタ)は、実行中の除算命令Dで使用中のベクトルレジスタ(書き込み対象レジスタ)と同一である。除算命令Dの処理時間は長く、ベクトルレジスタV0に対する処理結果の書き込みが終了するまで、乗算命令Mの発行は待たされる。すなわち、乗算命令の発行は不可能と判定され、第1発行待機信号105は“1”に設定される。この際、発行チェック回路217は、リネーミング対象となるベクトルレジスタV0を指定するリネーミング情報102をリネーミング回路214に送出する。一方、発行チェック回路220は、発行ステージ2レジスタ219に命令が存在しないため、発行不可能と判定する。
以上のように、時刻T5では、退避有効信号103“1”、発行待機信号105“1”となるため、AND回路232から出力される退避決定信号106は“1”となる。又、退避有効信号103“1”、追い越し有効信号104“0”、第1発行待機信号105“1”となるため、AND回路234から出力されるセット信号107は“1”となる。
時刻T6:
時刻T5において、発行チェック回路217は発行不可能と判定しているため、発行ステージ1レジスタ216で乗算命令Mは待機する。この際、リネーミング回路214において、乗算命令Mは乗算命令M’に書き換えられる。詳細には、リネーミング回路214は、リネーミング情報102に基づいて、リネーミング対象となるベクトルレジスタを特定し、当該ベクトルレジスタを、対応する退避用ベクトルレジスタに変更するようにリネーミングを行なう。ここでは、乗算命令Mにおいて、後続の移送命令Tの書き込み対象レジスタと同一の読み出し対象レジスタ(ベクトルレジスタV0)を、退避用レジスタV0’に変えるように乗算命令Mが書き換えられる。すなわち、乗算命令M’は、V0’*V1をV2に格納する命令となる(V0’は、通常レジスタV0の退避用レジスタ)。一方、発行チェック回路220は、発行不可能と判定しているため時刻T6では発行2レジスタ221への命令のセットは行わなれない。
時刻T6において、セレクタ回路215は、退避決定信号106“1”に応じて、リネーミング回路214において書き換えられた乗算命令M’を選択して発行ステージ1レジスタ216にセットする。又、セット信号107“1”に応じて、デコードステージ213内の移送命令Tが発行ステージ2レジスタ219にセットされる。更に、デコードステージレジスタ213には、後続のA1命令Tがセットされる。
退避決定信号106“1”により退避スタートレジスタに“1”がセットされると、退避対象ベクトルレジスタV0に対し、退避指示108が出力され、ベクトルレジスタV0から退避用レジスタV0’へのデータの書き出しが開始される。この際、ベクトルレジスタV0内のデータは削除されない。退避用レジスタV0’への書き出しが開始されると、退避用レジスタV0’のVALID信号が“1”にセットされる。このVALID信号が“1”の退避用レジスタには、有効なデータが保持されていることを示し、VALID信号が“0”になるまで書き込みが行われないように制御される。
又、デコードステージレジスタ213にセットされた加算命令A1と発行ステージ1レジスタ6にセットされた命令M’は、異なるベクトルレジスタへの読み出し命令、書き込み命令の組み合わせとなる。このため、退避条件検出回路231から出力される退避有効信号103は“0”、追い越し有効信号104は“1”となる。乗算命令M’は、除算命令DによるベクトルレジスタV1への書き込みがまだ開始されていないので、発行は待たされたままとなり、第1発行待機信号105は、“1”のまま保持される。
待機中のベクトル命令に設定された読み出し対象レジスタとデコードレジスタ213にセットされた後続命令に設定された書き込み対象レジスタが同一である場合、待機中のベクトル命令は、リネーミング回路214によって、当該同一のベクトルレジスタを退避するように更に変更される。
以上のように、時刻T6では、退避有効信号103“0”、発行待機信号105“1”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“0”、追い越し有効信号104“1”、第1発行待機信号105“1”となるため、AND回路234から出力されるセット信号107は“1”となる。
一方、発行チェック回路220は、発行ステージ2レジスタ219内の移送命令Tが発行可能か否かを判定する。実行中の先行命令の除算命令Dとリソース(演算器と、読み出し、及び書き込みベクトルレジスタ)が重ならないので、発行可能と判定される。
時刻T7:
時刻T6において、発行チェック回路220は発行可能と判定しているため、発行ステージ2レジスタ219にセットされている移送命令Tは、時刻T7において発行2レジスタ221にセットされ、次のタイミング(時刻T8)において直ちに発行される。一方、発行チェック回路217は、発行不可能(待機)と判定しているため時刻T7では発行1レジスタ218への命令のセットは行わなれない。
時刻T7において、デコードステージレジスタ213には、ベクトル命令がセットされない。このため、発行ステージ1レジスタ216に乗算命令M’が設定された状態を維持する。又、セット信号107“1”に応じて、デコードステージ213内の加算命令A1が発行ステージ2レジスタ219にセットされる。
デコードステージレジスタ213に命令がセットされていないため、発行ステージ1レジスタ6にセットされた命令M’と同一レジスタへの書き込み及び読み出しの重複はない。この場合、退避条件検出回路231から出力される退避有効信号103は“0”、追い越し有効信号104は“0”となる。又、乗算命令M’は、除算命令DによるベクトルレジスタV1への書き込みがまだ開始されていないので、発行は待たされたままとなり、第1発行待機信号105は、“1”のまま保持される。
以上のように、時刻T7では、退避有効信号103“0”、発行待機信号105“1”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“0”、追い越し有効信号104“0”、第1発行待機信号105“1”となるため、AND回路234から出力されるセット信号107は“0”となる。
一方、発行チェック回路220は、発行ステージ2レジスタ219内の加算命令A1(V1+V2をV3に格納)が発行可能か否かを判定する。実行中の先行命令の除算命令Dとリソース(演算器と、読み出し、及び書き込みベクトルレジスタ)が重ならないので、発行可能と判定される。
時刻T8:
時刻T7において、発行チェック回路220は発行可能と判定しているため、発行ステージ2レジスタ219にセットされている加算命令A1は、時刻T8において発行2レジスタ221にセットされ、次のタイミング(時刻T9)において直ちに発行される。一方、発行チェック回路217は、発行不可能(待機)と判定しているため時刻T8では発行1レジスタ218への命令のセットは行わなれない。
時刻T8において、デコードステージレジスタ213には、ベクトル命令がセットされない。このため、発行ステージ1レジスタ216に乗算命令M’が設定された状態を維持する。
デコードステージレジスタ213に命令がセットされていないため、発行ステージ1レジスタ216にセットされた命令M’と同一レジスタへの書き込み及び読み出しの重複はない。この場合、退避条件検出回路231から出力される退避有効信号103は“0”、追い越し有効信号104は“0”となる。又、乗算命令M’は、除算命令DによるベクトルレジスタV1への書き込みがまだ開始されていないので、発行は待たされたままとなり、第1発行待機信号105は、“1”のまま保持される。
以上のように、時刻T8では、退避有効信号103“0”、発行待機信号105“1”となるため、AND回路232から出力される退避決定信号106は“0”となる。又、退避有効信号103“0”、追い越し有効信号104“0”、第1発行待機信号105“1”となるため、AND回路234から出力されるセット信号107は“0”となる。
一方、発行チェック回路220は、発行ステージ2レジスタ内に命令がセットされていないため、発行不可能と判定する。
時刻T9から時刻T10の間、除算命令Dに対する処理が完了するまで、ベクトル命令管理部2は、乗算命令M’の発行を待ち合わせる。その後、時刻T11において、除算命令DによるベクトルレジスタV1への書き込みが開始されると、ベクトルレジスタV1の読み出しビジーフラグが“0”になり、乗算命令M’が発行される。除算命令M’に基づく処理では、退避用レジスタV0’内のデータが使用される。この際、退避用レジスタV0’が使用可能となるように退避用レジスタV0’のVALID信号が“0”に設定される。
このようにして、本発明では、使用レジスタV0への書き込み命令である移送命令Tの先行命令として、同一の使用レジスタV0に対する読み出し命令を含む乗算命令Mが存在し、当該先行命令(乗算命令M)が発行待ちとなっている場合、使用レジスタV0のデータを退避用レジスタV0’に退避する。これにより、先行命令(乗算命令M)のレジスタV0への読み出し動作の開始を待たずに、後続命令(移動命令T)が追い越して発行されるため、命令発行待ち時間を削減でき、ベクトル処理性能を向上させることができる。
例えば、ベクトルレジスタに退避用レジスタを持たない従来技術によって上述の(1)〜(5)の命令列を実行する場合、図1に示すタイムチャートのよう動作する。すなわち、移送命令T、及び加算命令A1は、先行命令である乗算命令MによるベクトルレジスタV0に対する読み出し動作が開始されるのを待ってから発行される。このため、除算命令Dの処理時間が長い場合(例えば7クロック)には、移送命令Tの発行は、乗算命令Mが発行されるまでの期間、すなわち時刻T13までの長時間待たされることになる。
一方、本発明によるベクトル処理装置では、待機している乗算命令による処理の開始を待つことなく他のベクトル命令(移送命令T、加算命令A1)を発行できるため、図4に示すように移送命令T、加算命令A1による処理を従来に比べて6クロック分の期間早く実行することができる。又、これに伴い、乗算命令M’による処理の終了時間が、入力される命令列の終了時間となるため、命令列の処理時間を従来よりも早めることができる。
又、本発明では、リネーミング機能を有するベクトル処理装置において、後続命令がマスク付き書き込み命令であっても、発行が待たされている先行命令を追い越して、当該後続命令を発行することができる。
例えば、従来技術では、あるベクトルレジスタへの先行する読み出し命令が待たされており、後続命令の書き込み対象が当該ベクトルレジスタである場合、リネーミング機能により、別のベクトルレジスタを書き込み先のベクトルレジスタとして割り当て、後続の書き込み命令を待たせることなく実行することができる。しかし、後続命令が、マスク付きの書き込み命令の場合、書き込み先として別のベクトルレジスタを割り当ててしまうと、元のデータが存在しないため、マスク付き書き込みを実行できなくなる。従って、このような場合、ベクトルレジスタのリネーミング機能は使えず、先行命令の読み出しが開始されるまで、後続の書き込み命令は待たされることになり、ベクトル性能を向上させることができない。
一方、本発明によるベクトル処理装置では、待機中の先行命令を追い越して実行される後続命令は、退避用レジスタにデータが退避され、元データを保持している通常レジスタに対して処理される。このように、マスク付き書き込み命令で使用される通常レジスタには元データが保持されているため、先行命令を追い越して実行される後続命令が、マスク付き書き込み命令であっても当該命令を問題なく実行することができる。従って、後続命令がマスク付き書き込み命令であり、その書き込み先のレジスタが、待機中の先行命令における読み出し先のレジスタである場合でも、問題なく後続命令は先行命令を追い越して実行することができる。
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
1:ベクトル命令発行部
2:ベクトル命令管理部
3:主記憶装置
4:ベクトル処理部
20:命令発行管理部
21:ベクトルレジスタビジー管理部
22:退避判定部
40:ベクトルマスク生成部
41、45:選択部
421〜42n:ベクトルレジスタ
421a〜42na:通常レジスタ
421b〜42nb:退避用レジスタ
461〜46n:演算器
211:命令入力レジスタ
212:命令デコードレジスタ
213:デコードステージレジスタ
214:リネーミング回路
215:セレクタ回路
216:発行ステージ1レジスタ
217、220:発行チェック回路
218:発行1レジスタ
219:発行ステージ2レジスタ
221:発行2レジスタ
231:退避条件検出回路
232、234:AND回路
233:OR回路
235:退避スタートレジスタ
103:退避有効信号
104:追い越し有効信号
105:発行待機信号

Claims (8)

  1. 複数のベクトルレジスタと、
    前記複数のベクトルレジスタに対応する複数の退避用レジスタと、
    待機中の先行命令による読み出し先の第1ベクトルレジスタと、後続命令の書き込み先の第2ベクトルレジスタが重複する場合、前記待機中の先行命令の読み出し先のベクトルレジスタを、前記第1ベクトルレジスタから前記第1ベクトルレジスタに対応する第1退避用レジスタに変更し、前記第1ベクトルレジスタ内のデータを削除することなく、前記データを前記第1退避用レジスタに書き込むベクトル命令管理部と、
    を具備するベクトル処理装置。
  2. 請求項1に記載のベクトル処理装置において、
    前記ベクトル命令管理部は、
    先行命令によって使用されるベクトルレジスタと、実行中の命令によって使用されるベクトルレジスタとを比較して、先行命令の発行可否を判定するベクトルレジスタビジー管理部と、
    先行命令による読み出し先のベクトルレジスタと、後続命令による書き込み先のベクトルレジスタとを比較して、ベクトルデータを退避するか否かを判定する退避判定部と、
    前記ベクトルレジスタビジー管理部の判定結果と、前記退避判定部の判定結果とに基づいて、発行する命令を決定する命令発行管理部と、
    を備えるベクトル処理装置。
  3. 請求項2に記載のベクトル処理装置において、
    前記命令発行管理部は、
    先行命令がセットされる第1発行ステージレジスタと、
    後続命令がセットされるデコードステージレジスタと、
    前記ベクトルレジスタビジー管理部において、前記先行命令の発行を待ち合わせると判定された場合、前記デコードステージレジスタ内の後述命令がセットされる第2発行ステージレジスタと、
    を備える
    前記命令発行管理部は、前記第1発行ステージレジスタと前記第2発行ステージレジスタの一方にセットされた命令を発行する
    ベクトル処理装置。
  4. 請求項3に記載のベクトル処理装置において、
    前記命令発行管理部は、
    前記第1発行ステージレジスタにセットされた先行命令を変更するリネーミング回路と、
    前記退避判定部において退避が必要であると判定された場合、前記リネーミング回路で変更された先行命令を前記第1発行ステージレジスタにセットするセレクタ回路と、
    を更に備えるベクトル処理装置。
  5. 複数のベクトルレジスタと、前記複数のベクトルレジスタに対応する複数の退避用レジスタとを備えるベクトル処理装置によるベクトル処理方法において、
    待機中の先行命令による読み出し先の第1ベクトルレジスタと、後続命令の書き込み先の第2ベクトルレジスタが重複する場合、前記待機中の先行命令の読み出し先のベクトルレジスタを、前記第1ベクトルレジスタから前記第1ベクトルレジスタに対応する第1退避用レジスタに変更するステップと、
    前記第1ベクトルレジスタ内のデータを削除することなく、前記データを前記第1退避用レジスタに書き込むステップと、
    を具備するベクトル処理方法。
  6. 請求項5に記載のベクトル処理方法において、
    先行命令によって使用されるベクトルレジスタと、実行中の命令によって使用されるベクトルレジスタとを比較して、先行命令の発行可否を判定するステップと、
    先行命令による読み出し先のベクトルレジスタと、後続命令による書き込み先のベクトルレジスタとを比較して、ベクトルデータを退避するか否かを判定するステップと、
    前記ベクトルレジスタビジー管理部の判定結果と、前記退避判定部の判定結果とに基づいて、発行する命令を決定するステップと、
    を更に備えるベクトル処理方法。
  7. 請求項6に記載のベクトル処理方法において、
    先行命令を第1発行ステージレジスタにセットするステップと、
    後続命令をデコードステージレジスタにセットするステップと、
    前記ベクトルレジスタビジー管理部において、前記先行命令の発行を待ち合わせると判定された場合、前記デコードステージレジスタ内の後述命令を第2発行ステージレジスタにセットするステップと、
    を更に備え、
    前記発行する命令を決定するステップは、前記第1発行ステージレジスタと前記第2発行ステージレジスタの一方にセットされた命令を発行するステップを備える
    ベクトル処理方法。
  8. 請求項7に記載のベクトル処理方法において、
    前記先行命令を変更するステップは、前記第1発行ステージレジスタにセットされた先行命令を変更するステップと、
    前記退避判定部において退避が必要であると判定された場合、前記変更された先行命令を前記第1発行ステージレジスタにセットするステップと、
    を備えるベクトル処理方法。
JP2009051373A 2009-03-04 2009-03-04 ベクトル処理装置、及びベクトル処理方法 Pending JP2010205088A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009051373A JP2010205088A (ja) 2009-03-04 2009-03-04 ベクトル処理装置、及びベクトル処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009051373A JP2010205088A (ja) 2009-03-04 2009-03-04 ベクトル処理装置、及びベクトル処理方法

Publications (1)

Publication Number Publication Date
JP2010205088A true JP2010205088A (ja) 2010-09-16

Family

ID=42966481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009051373A Pending JP2010205088A (ja) 2009-03-04 2009-03-04 ベクトル処理装置、及びベクトル処理方法

Country Status (1)

Country Link
JP (1) JP2010205088A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018169838A (ja) * 2017-03-30 2018-11-01 日本電気株式会社 プロセッサ

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0228765A (ja) * 1988-04-01 1990-01-30 Nec Corp 命令処理順序制御システム
JP2007334819A (ja) * 2006-06-19 2007-12-27 Nec Corp ベクトルリネーミング方式およびベクトル型計算機
JP2008083947A (ja) * 2006-09-27 2008-04-10 Nec Computertechno Ltd 情報処理装置、記憶領域制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0228765A (ja) * 1988-04-01 1990-01-30 Nec Corp 命令処理順序制御システム
JP2007334819A (ja) * 2006-06-19 2007-12-27 Nec Corp ベクトルリネーミング方式およびベクトル型計算機
JP2008083947A (ja) * 2006-09-27 2008-04-10 Nec Computertechno Ltd 情報処理装置、記憶領域制御方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6011047339; Roger Espasa et al.: '"Tarantula: A Vector Extension to the Alpha Architecture"' Proceedings. 29th Annual International Symposium on Computer Architecture, 2002. , 20020529, pages:281-292, IEEE *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018169838A (ja) * 2017-03-30 2018-11-01 日本電気株式会社 プロセッサ

Similar Documents

Publication Publication Date Title
US8555039B2 (en) System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
JP3729087B2 (ja) マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
EP0269980B1 (en) Data processor for parallelly executing conflicting instructions
JP5548037B2 (ja) 命令発行制御装置及び方法
US8347068B2 (en) Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor
US9471325B2 (en) Method and apparatus for selective renaming in a microprocessor
JP2002163105A (ja) データ依存関係検出装置
JP5209933B2 (ja) データ処理装置
US8239661B2 (en) System and method for double-issue instructions using a dependency matrix
EP3140730B1 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
US11314516B2 (en) Issuing instructions based on resource conflict constraints in microprocessor
JP4985452B2 (ja) ベクトル処理装置
US20160004538A1 (en) Multiple issue instruction processing system and method
JP2010205088A (ja) ベクトル処理装置、及びベクトル処理方法
WO2016201699A1 (zh) 指令处理方法及设备
JP2000163265A (ja) 命令発行回路
US20200142697A1 (en) Instruction completion table with ready-to-complete vector
JP2894438B2 (ja) パイプライン処理装置
JP5392810B2 (ja) 命令発行制御装置及び命令発行制御方法
US20240176621A1 (en) Processor
JP3473506B2 (ja) パイプライン処理装置
JPH08263289A (ja) 複数命令流パイプライン計算機
CN113703841A (zh) 一种寄存器数据读取的优化方法、装置及介质
JP2015201026A (ja) 演算処理装置および演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130424

A521 Written amendment

Effective date: 20130624

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Effective date: 20130912

Free format text: JAPANESE INTERMEDIATE CODE: A02