(58)【調査した分野】(Int.Cl.,DB名)
前記チェック部は、前記後続の演算命令の演算TATとして用いる予め定められた値を外部から取得し、前記ビジー期間情報と前記取得した値とに基づいて、前記後続の演算命令の発行タイミングを決定する
ことを特徴とする請求項1から請求項5の何れか1項に記載の情報処理装置。
【発明を実施するための形態】
【0012】
<第一の実施形態>
以下、本発明の一実施形態による情報処理装置を
図1〜
図11を参照して説明する。
図1は第一の実施形態による情報処理装置の具体的な構成を示す第一の図である。
図1は情報処理装置のプロセッサの概略ブロック図である。
この図において、符号20は演算パイプ制御部を表している。演算パイプ制御部20は、メモリから読み込んだ命令列をデコードして適切なタイミングで演算レジスタ、演算器等の演算リソースに指示を行い、読み込んだ命令列を実行する。
【0013】
符号100、101、102、103は演算レジスタV0、V1、V2,V3である。演算パイプ制御部20は演算レジスタに対して指定されたベクトル長(以下、VLと称する)分連続してデータの読み込み又は書込みを行う。通常は複数のベクトルパイプを用いて並列してベクトル長分の演算を処理するが、本実施形態ではベクトルパイプは1本とする。従って1つのベクトル命令が発行されると演算パイプ制御部20はそのベクトル命令の処理をベクトル長分連続で行う。
なお、
図1の演算レジスタV0はV0−0,1,2,3の4つの要素を持ちベクトル長が4の演算に対応することができる。
【0014】
符号110、111、112、113はオペランドセレクタで、各演算器の入力側に接続されている。また、オペランドセレクタ110〜113は、演算レジスタ100〜103に接続されている。そして演算パイプ制御部20から指示のあった演算レジスタからの出力を選択して演算器に出力する。
符号120は積和演算器で、演算パイプ制御部20からの指示に従ってベクトル長分の積和演算を実行する。積和演算器120は演算結果を伝送路900を介してクロスバー106へ出力する。
符号130は論理演算器で、演算パイプ制御部20からの指示に従ってベクトル長分の論理演算を実行する。論理演算器130は、演算結果をタイミング調整レジスタ131及びセレクタ133へ出力する。
符号131、132はタイミング調整レジスタである。タイミング調整レジスタ131は、論理演算器130の演算結果を取得すると1クロック後にタイミング調整レジスタ132に出力する。タイミング調整レジスタ132は演算結果を取得すると1クロック後にセレクタ133へ出力する。セレクタ133は、演算パイプ制御部20からの指示に従って論理演算器130、タイミング調整レジスタ131、132の出力を選択して伝送路900を介してクロスバー106へ出力する。
【0015】
図2は第一の実施形態による情報処理装置の具体的な構成を示す第二の図である。
図2は、
図1における演算パイプ制御部20をより詳細に示した図である。
符号201は、命令バッファ部でメモリから読み込んだ命令列を格納するバッファ部である。
符号202は、命令デコーダで命令バッファ部201から読み出した命令をデコードして命令発行キュー203へ出力する。
【0016】
符号203は、命令デコーダ202が解読した命令を格納する命令発行キューである。発行が決定された命令は命令発行キュー203から削除され、命令発行キュー203は新しい命令を命令デコーダ202から取得する。なお、情報処理装置によっては発行キュー内の命令が複数発行可能なものもあるが、本明細書においては発行キュー内の命令配置方法や競合調停方法については考えないものとし、命令がキューに格納された順に1つずつ発行されるものとする。
【0017】
符号204は、W→W発行チェック部である。W→W(「Write→Write」)とは、同一の演算レジスタについて連続して書き込み処理が行われる関係を示している。W→W発行チェック部204は、命令発行キュー203の命令情報および後述するW→Wビジー情報管理部210のビジー値を受け取り、個々の命令についてW→Wの関係について一貫性を確保できる場合は、命令発行チェック部208に命令発行可能であることを通知する。一貫性を確保できるとは、W→Wの関係にある連続する演算命令をこの順番で逐次的に実行したときと同じ結果が得られることをいう。特に、W→W発行チェック部204は、命令が論理演算器130を使用する命令であった場合は、積和演算器120の演算TAT(TURN AROUND TIME)と後述するW→Wビジー情報管理部210のビジー値とを比較し、一貫性を確保できる場合にはTAT決定部207にW→Wビジー情報管理部210から受け取ったビジー値を送出する。なお、ビジー値とは、各演算レジスタや演算器の使用状況を管理するために用いる値である。ビジー値が0以外のときは対応する演算レジスタ等が使用されていることを示し、また、この値はカウンタとなっていて演算命令の進行に応じて減算される。また、演算TATとは、ある演算器を用いて演算を実行した際の演算レジスタ読み出しから演算レジスタ格納までの時間である。
【0018】
符号205は、R→W発行チェック部である。R→W(「Read→Write」)とは、同一の演算レジスタについて連続して読み取り処理と書き込み処理が行われる関係を示している。R→W発行チェック部205は、命令発行キュー203の命令情報および後述するR→Wビジー情報管理部220のビジー値を受け取り、個々の命令についてR→Wの関係について一貫性を確保できる場合は、命令発行チェック部208に命令発行可能であることを通知する。特に、R→W発行チェック部205は、命令が論理演算器130を使用する命令であった場合は、積和演算器120の演算TATとR→Wビジー情報管理部220の情報を比較し、一貫性を確保できる場合にはTAT決定部207にR→Wビジー情報管理部220から受け取ったビジー値を送出する。
【0019】
符号206は、ビジーチェック部である。ビジーチェック部206は、命令発行キュー203およびW→Rビジー情報管理部230および演算器ビジー情報管理部240の情報を受け取り、個々の命令についてW→Rの関係および演算器のビジー状態を確認し、一貫性を確保できる場合は命令発行チェック部208に命令発行可能であることを通知する。なお、W→R(「Write→Read」)とは、同一の演算レジスタについて連続して書き込み処理と読み取り処理が行われる関係を示している。
【0020】
符号207は、TAT決定部である。TAT決定部207は、論理演算器130以外を使用する命令の場合は、命令本来の演算TATを出力し、論理演算器130を使用する場合にはW→W発行チェック部204およびR→W発行チェック部205の出力値を比較して、大きい値を出力する。
【0021】
符号208は命令発行チェック部で、命令発行キュー203に有効な命令が存在し且つW→W発行チェック部204およびR→W発行チェック部205およびビジーチェック部206の全てから命令発行可能である通知を受け取った場合に命令発行決定を命令発行キュー203および命令発行確定情報レジスタ270およびW→Wビジー情報生成部260,R→Wビジー情報生成部261,W→Rビジー情報生成部262,演算器ビジー情報生成部263に通知する。
【0022】
符号210はW→Wビジー情報管理部である。W→Wビジー情報管理部210は、演算レジスタのW→Wとなる命令間におけるデータ一貫性を保証するためのビジー情報を管理する機能を持つ。演算レジスタV0〜V3に対応したW→Wビジー情報管理部211〜214が設けられている。
【0023】
符号220はR→Wビジー情報管理部である。R→Wビジー情報管理部220は、演算レジスタのR→Wとなる命令間におけるデータ一貫性を保証するためのビジー値を管理する機能を持つ。演算レジスタV0〜V3に対応したR→Wビジー情報管理部221〜224が設けられている。
【0024】
符号230はW→Rビジー情報管理部である。W→Rビジー情報管理部230は、演算レジスタのW→Rとなる命令間におけるデータ一貫性を保証するためのビジー値を管理する機能を持つ。演算レジスタV0〜V3に対応したW→Rビジー情報管理部231〜234が設けられている。
【0025】
符号240は演算器ビジー情報管理部である。演算器ビジー情報管理部240は、演算器のビジー値を管理する機能を持つ。積和演算器120、論理演算器130に対応した演算器ビジー情報管理部241〜242が設けられている。
【0026】
符号260は、W→Wビジー情報生成部である。W→Wビジー情報生成部260は、命令発行キュー203およびTAT決定部207および命令発行チェック部208からの信号を取得し、演算レジスタV0〜V3に書き込みを行う命令の発行確定の通知を受けた場合は、書き込み先演算レジスタ情報および演算TAT情報をW→Wビジー情報管理部210に送出する。
【0027】
符号261は、R→Wビジー情報生成部である。R→Wビジー情報生成部261は、命令発行キュー203およびTAT決定部207および命令発行チェック部208からの信号を取得し、演算レジスタV0〜V3から読み出しを行う命令の発行確定の通知を受けた場合は、読み出し先演算レジスタ情報および読み出しパターン情報をR→Wビジー情報管理部220に送出する。読み出しパターン情報とは、例えば、「1サイクルに1要素を読み出す」、「1サイクルに全要素を読み出す」、「何サイクルかごとに1要素ずつ読み出す」等である。
【0028】
符号262はW→Rビジー情報生成部である。W→Rビジー情報生成部262は、命令発行キュー203およびTAT決定部207および命令発行チェック部208からの信号を取得し、演算レジスタV0〜V3に書き込みを行う命令の発行確定の通知を受けた場合は、書き込み先演算レジスタ情報および演算TAT情報をW→Rビジー情報管理部230に送出する。
【0029】
符号263は演算器ビジー情報生成部で、命令発行キュー203およびTAT決定部207および命令発行チェック部208からの信号を取得し、演算器を使う命令の発行確定の通知を受けた場合は、使用する演算器を示す情報およびVLを示す情報を演算器ビジー情報管理部240に送出する。
【0030】
符号270は命令発行確定情報レジスタで、命令発行チェック部208から命令発行決定の通知を受け1サイクル間保持する。
符号271は発行確定命令情報レジスタで、命令発行キュー203から発行決定した命令の情報を受け1サイクル間保持する。
符号272は発行確定TAT情報レジスタで、TAT決定部207からのTAT情報を受け1T間保持する。
【0031】
符号273〜278は制御タイミング調整レジスタで、
図1に示す演算リソースをデータの流れるタイミングに合わせて制御する。
符号282〜287はデコーダで、
図1の各機能部に発行確定した命令の必要箇所をデコードして動作指示を伝える機能を持つ。特にデコーダ285〜287は命令本来の最短TATと207で決定されたTAT情報を比較し、差分値から判断してレジスタ格納指示を出す機能を持つ。例えば、デコーダ285は、差分値が0だったらレジスタに格納するタイミングであると識別して、レジスタ格納指示を出す機能を持つ。同様にデコーダ286は差分値が1だったらレジスタ格納指示を出し、デコーダ287は差分値が2の場合にレジスタ格納指示を出す。
【0032】
以下において、いくつかの命令列を例に関連する情報処理装置及び本実施形態による情報処理装置の動作を説明する。
前提としてVADD命令、VMPY命令は、積和演算器120によって実行され、演算TATは、5サイクルであるとする。また、VAND命令は、論理演算器130によって実行され、演算TATは3サイクルであるとする。
【0033】
図3は、関連する情報処理装置による演算処理のタイムチャートを示す第一の図である。
図3を用いて以下の命令列「I1」、「I2」を例に関連する情報処理装置による動作を説明する。
命令「I1」 VAND V3 ← V0 & V1 VL=2
命令「I2」 VMPY V0 ← V2 × V3 VL=2
命令「I1」は、論理演算器130が、演算レジスタV0とV1の値を入力し、論理積を演算して結果を演算レジスタV3へ格納することを示している。命令「I2」は、積和演算器120が、演算レジスタV2とV3の値を入力し、これらの値を乗算して演算結果を演算レジスタV0へ格納することを示している。
命令「I1」と「I2」の関係における特徴は演算レジスタV3についてWrite→Readの関係になることである。ここで演算レジスタV3についてWrite→Readの関係になるということは演算レジスタV3に対してWrite処理が完了する前にReadが完了してはならないことを意味する。
なお、関連する情報処理装置には
図1におけるタイミング調整レジスタ131、132及びセレクタ133が備えられていない。また、
図3において、「L−x」(x=0,1)は、論理演算器130の出力値を示し、「M−x」(x=0,1)は、積和演算器120の出力値を示している。
【0034】
まず、クロック1において命令「I1」の発行が決定する(
図3中、「Dispatch」)。するとクロック2〜3において演算レジスタV0、V1からデータが読み出される。さらに演算パイプ制御部20からの制御信号によってオペランドセレクタ112,113が演算レジスタV0、V1のデータを論理演算器130に出力する。ここでクロック2〜3の2サイクルに渡ってこれらの処理が連続して行われるのはVL=2だからである。クロック3〜4で論理演算器130は演算を行い(
図3中、「演算ステージ1))、クロック4〜5で論理演算器130は演算結果をクロスバー106へ出力する。さらに演算パイプ制御部20からの制御信号によって演算レジスタV3に演算結果が格納される。クロック5で命令「I1」の最初のデータが確定し、クロック6で命令「I1」の2番目のデータが確定する。
【0035】
命令「I2」についても同様にして演算が行われる。命令「I1」によって演算レジスタV3への書き込み処理が完了する前に命令「I2」による演算レジスタV3からのデータ読込が行われないように一般的な演算パイプライン制御では後続の命令「I2」はクロック4で命令の発行が決定する。クロック4で命令「I2」の発行が決定すると、命令「I1」の演算結果が演算レジスタV3に格納された(
図3中、クロック5の「V3レジスタ」)直後に命令「I2」で読み出される(
図3中クロック5の「V3レジスタReadData」)動作となる。このように命令が最速で動作することをチェイニングという。命令「I2」のVMPY命令は、積和演算器120を使用するので演算TATは5サイクルである。従って演算レジスタ読み出しから演算レジスタ書き込みまで5サイクルかかる。よってV0レジスタでの最初の値が確定するのがクロック10である。
【0036】
図4は、関連する情報処理装置による演算処理のタイムチャートを示す第二の図である。
図4を用いて関連する情報処理装置による演算処理の問題点を説明する。
図4では以下の命令列を例に関連する情報処理装置による動作を説明する。
命令「I0」 VADD* V3 ← V0 + V1 VL=2
命令「I1」 VAND* V3 ← V0 & V1 VL=2
命令「I2」 VMPY V0 ← V1 × V2 VL=2
命令「I0」は、積和演算器120が、演算レジスタV0とV1の値を入力し、これらの値を加算して演算結果を演算レジスタV3へ格納することを示している。命令「I1」は、論理演算器130が、演算レジスタV0とV1の値を入力し、論理積を演算して結果を演算レジスタV3へ格納することを示している。命令「I2」は、積和演算器120が、演算レジスタV1とV2の値を入力し、これらの値を乗算して演算結果を演算レジスタV0へ格納することを示している。
命令「I0」と「I1」の関係における特徴は演算レジスタV3についてWrite→Writeの関係になることであり、これは演算レジスタV3について命令「I0」におけるWrite処理が完了する前に命令「I0」におけるWrite処理が完了してはならないことを意味する。
また、命令「I1」と「I2」の関係における特徴は演算レジスタV0についてRead→Writeの関係になることである。演算レジスタV0について命令「I1」におけるRead処理が完了する前に命令「I2」におけるWrite処理が完了してはならないことを意味する。
【0037】
このため命令「I0」がクロック1で発行決定後、命令「I0」によって演算レジスタV3への書き込み処理が完了する前に命令「I1」による演算レジスタV3への書き込み処理が行われないように一般的な演算パイプライン制御では後続の命令「I1」の発行の決定はクロック4となる。命令「I1」の発行決定が「I0」より2サイクル遅れるのは「I0」で使用する積和演算器120の演算TAT(=5)と「I1」で使用する論理演算器130の演算TAT(=3)の差が2サイクルだからである。
このため、命令「I1」と「I2」についても演算レジスタV0について読み取りが完了する前に、書き込みが行われないように命令「I2」の発行の決定は、必ず命令「I1」が発行された後でなければならない。従って命令「I2」の発行はクロック5に決定し、本命令による最後のデータ「M−1」の演算レジスタV0への書き込みが完了し値が確定するのはクロック12である。このように、一般的な動作では、後続の演算命令の投入タイミングを遅らせることによって演算レジスタ間の一貫性を確保していた。その為、さらに後に予定されている演算命令についても次々と投入タイミングが遅れるという問題があった。
【0038】
図5は、本実施形態による情報処理装置のタイムチャートを示す第一の図である。
図5を用いて本実施形態における動作を説明する。本実施形態では演算器毎の演算TATは積和演算器120が5サイクルであり、論理演算器130は3〜5サイクルと可変である。また
図5で説明した命令列は
図4のときと同じであるものとする。
本実施形態ではこの命令列のように後続の演算命令の書込み先演算レジスタV3でWrite→Writeの関係にあるときは、演算パイプ制御部20が後続の演算命令の演算TATを先行する演算命令の演算TATに合わせて動作させる。
図5の例では命令「I0」に後続する命令「I1」のVAND命令の演算TATを5サイクルにするということである。このように、演算TATを長い方に合わせることで、後続の命令は、1サイクル遅れて投入すればV3レジスタへの書き込みタイミングの競合を防ぐことができる。
図5の場合、クロック1で命令「I0」の発行を決定した後、命令「I1」の発行をクロック2で決定することができる。さらに命令「I2」の発行はクロック3で決定することができ、演算レジスタV0への書き込みが完了し値が確定するのはクロック10である。
このように本実施形態の情報処理装置によれば、
図4の方法に比べ2サイクル早く命令列の演算を完了することができる。
なお、本実施形態による演算TATの決定動作については後に
図8を用いて説明する。
【0039】
図6は、関連する情報処理装置による演算処理のタイムチャートを示す第三の図である。
図6及び
図2を用いて演算パイプ制御部20内部のビジー管理の動作について説明する。説明に用いるのは
図3でも用いた以下の命令列である。
命令「I1」 VAND V3 ← V0 & V1 VL=2
命令「I2」 VMPY V0 ← V2 × V3 VL=2
ビジー管理は、命令を発行するにあたりその命令で使用する演算レジスタや演算器が先行する命令の実行により使用中であるかどうかや、何サイクル後に使用中でなくなるかなどを把握し、命令の発行タイミングを調整するために行う。本明細書ではカウンタを用いてビジー管理を行う方法で説明するがこれに限定されない。例えばレジスタで符号を持ちまわる方法などでもよい。本実施形態においてカウンタによるビジー管理を行うのはW→Wビジー情報管理部211〜214、R→Wビジー情報管理部221〜224、W→Rビジー情報管理部231〜234、演算器ビジー情報管理部241〜242である。これらの管理部のカウンタの初期値は0であるものとする。
【0040】
まず、クロック1で命令「I1」の発行が決定すると、クロック2でW→Wビジー情報管理部214及びW→Rビジー情報管理部234にVAND命令の演算TAT(=3)がセットされる。演算器ビジー情報管理部242には命令「I1」の演算器使用時間である2がセットされる。演算器使用時間は、論理演算器130において演算ステージは1回(「130演算ステージ1」)で演算データがVL=2であることから2となる。これらの値がセットされたビジー情報管理部は対応する演算レジスタや演算器がビジー状態であることを示している。そして1クロックが経過するごとに各値は1ずつ減算される。以下において各ビジー情報管理部211〜214、221〜224、231〜234、241〜242が保持する値をビジー値という。ビジー値はビジー管理を行うためのカウンタである。
後続の命令「I2」は関連する演算レジスタのビジー状態を確認し、発行条件が整ったら発行を決定する。具体的には命令「I2」は「V0 ← V2 × V3」なのでReadを行う演算レジスタV2、V3についてはW→Rビジー情報管理部233、234のビジー状況を確認する。Writeを行う演算レジスタV0についてはW→Wビジー情報管理部211、R→Wビジー情報管理部221のビジー状況を確認する。そして積和演算器120を使用するので演算器ビジー情報管理部241のビジー状況を確認する。
【0041】
まず、クロック2におけるビジー状況を確認する。W→Rビジー情報管理部233については、先行する命令「I1」後に値をセットとしていないのでビジー状態を示すカウンタ値は初期値の0である。これはReadを行う演算レジスタV2については、命令「I2」を発行するにあたり問題が無いことを示している。また、Writeを行う演算レジスタV0については、W→Wビジー情報管理部211、R→Wビジー情報管理部221についても同様にビジー状態を示すカウンタ値が0なのでビジーではない。また、演算器ビジー情報管理部241についてもビジー状態を示すカウンタ値は0である。次に演算レジスタV3について確認すると、クロック2においてW→Rビジー情報管理部234の値は3である。これは演算レジスタV3がビジー状態なので命令「I2」の発行ができないことを示している。
【0042】
ここで、W→Wビジー情報管理部211〜214はW→W発行チェック部204に1クロックごとにビジー値を出力する。同様に、R→Wビジー情報管理部221〜224はR→W発行チェック部205に、W→Wビジー情報管理部231〜234、演算器ビジー情報管理部241〜242はビジーチェック部206にビジー値を出力する。そして各チェック部204、205、206は取得したビジー値に基づいて後続の命令を発行するかどうかの判定を行う。判定の方法は自分が管理する対象である演算リソースの全てのビジー値が1以下となるかどうかで判定する。各チェック部204、205、206は、全てのビジー値が1以下であれば「1」を、そうでなければ「0」を命令発行チェック部208に出力する。そして命令発行チェック部208は、これらの取得した値が全て「1」であれば命令の発行が可能であると判定する。
【0043】
図6のクロック2及び3においてW→W発行チェック部204及びR→W発行チェック部205の出力値が1であるが、ビジーチェック部206の出力値が0であるので命令発行チェック部208は後続命令の発行を決定できない。ビジーチェック部206の出力値が0であるのは、ビジーチェック部206が、W→Rビジー情報管理部234から取得したビジー値によって演算レジスタV3がビジー状態であると判断するためである。
クロック4ではW→Rビジー情報管理部234のビジー値は1となる。従って上述の判定方法によりビジーチェック部206は「1」を命令発行チェック部208に出力する。命令発行チェック部208は、各チェック部204〜206から取得した値が全て「1」となったので命令発行可能と判断して、その旨を示す「1」を伝送路999に出力する。この伝送路999に命令発行決定が伝わることをDispatchという。
このようにしてクロック4に後続の命令「I2」の発行が決定し演算レジスタV3の読み出し動作がクロック5から開始する。先行命令「I1」による最後のデータが演算レジスタV3に格納されて確定するのはクロック5である。演算レジスタV3の値はデータ確定後すぐに読み出される(チェイニング動作)。
【0044】
クロック4で命令「I2」の発行が決定されると、命令「I2」は積和演算器120を使用するのでTAT決定部207は命令本来の演算TAT値である「5」を、W→Wビジー情報生成部260に出力する。そしてW→Wビジー情報生成部260は演算TATの値「5」を、命令「I2」の書き込み先演算レジスタ番号情報「V0」とともにW→Wビジー情報管理部210に出力する。同様にW→Rビジー情報生成部262は命令「I2」の演算TATの値「5」を、演算結果格納先の演算レジスタ情報「V0」とともにW→Rビジー情報管理部230に送出する。
図6ではクロック5でW→Wビジー情報管理部211およびW→Rビジー情報管理部231に値「5」がセットされ、サイクル毎に減算されていくことが示されている。
なお、R→Wビジー情報生成部261は演算レジスタから特殊な読み出しが行われる際に使用される。
図6の命令列は特殊な読み出しは行わないため、有意な値とはならないが、ストアパススループットの関係から演算レジスタから4サイクル周期で読み出すようなストア命令の場合など、最後のデータが読み出される前に後続命令の書き込みが行われないよう管理している。
【0045】
図7は、関連する情報処理装置による演算処理のタイムチャートを示す第四の図である。
図7を用いて関連する情報処理装置によるビジー値と命令発行決定について説明する。
図7は
図4に、ビジー情報管理部210〜及びチェック部204〜206等の情報を加えた図である。
図7でも
図4と同様に以下の命令列を例に動作を説明する。
命令「I0」 VADD* V3 ← V0 + V1 VL=2
命令「I1」 VAND* V3 ← V0 & V1 VL=2
命令「I2」 VMPY V0 ← V1 × V2 VL=2
図4で説明したとおり、命令「I1」の演算レジスタV3への書き込みは命令「I0」による演算レジスタV3への書き込みの後でなければならない。また、演算レジスタV0についても命令「I1」による読込みの後に命令「I2」の書き込みが行われるようにしなければならない。
図6と同様に命令「I0」の発行決定後のクロック2で「VADD」の演算TATである「5」が、W→Wビジー情報管理部214及びW→Rビジー情報管理部234にセットされる。そして1クロックごとにビジー値が減算されていく。その間、R→W発行チェック部205は、R→Wビジー情報管理部220のビジー値は全て0なので命令発行可能を示す1を命令発行チェック部208へ出力する。ビジーチェック部206は、後続命令「I1」で使用する論理演算器130のビジー値は0なので命令発行可能を示す1を命令発行チェック部208へ出力する。W→W発行チェック部204は、W→Wビジー情報管理部210のビジー値のうち「I1」で書込みを行う演算レジスタV3のビジー値であるW→Wビジー情報管理部214のビジー値に注目して命令発行が可能かどうか判定する。
図7に示すようにW→Wビジー情報管理部214のビジー値はクロック2〜6までの間は0ではない。この間W→W発行チェック部204は、以下の式を用いて後続命令の発行が可能かどうかを判定する。
W→Wビジー情報管理部214のビジー値 − VAND命令の演算TAT値 ≦0
例えばクロック2においてはW→Wビジー情報管理部214のビジー値は5である。また、VAND命令の演算TAT値は3である。従ってクロック2では上の式は満たさない。同様にクロック3においても「4−3=1」となるので上の式は満たさない。クロック4では「3−3=0」となり上の式を満たす。W→W発行チェック部204は、クロック4において命令発行可能を示す1を命令発行チェック部208へ出力する。命令発行チェック部208は、各チェック部204〜206から取得した値が全て1となったので命令発行可能と判断して、その旨を示す「1」を伝送路999に出力し、命令「I1」の発行が決定する。このようにして命令「I1」の発行が決定するのはクロック4となる。同様にして、命令「I2」の発行が決定するのは命令「I1」の発行決定後のクロック5となる。命令「I2」の最後のデータが確定するのは
図7に示すとおりクロック12である。
【0046】
図8は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第二の図である。
図8を用いて本実施形態によるビジー値と命令発行決定について説明する。
図8においても
図4、5、7と同じ命令列を発行するものとする。
図7と同様に命令「I0」の発行決定後のクロック2で「VADD」の演算TATである「5」が、W→Wビジー情報管理部214及びW→Rビジー情報管理部234にセットされ、R→W発行チェック部205及びビジーチェック部206は、後続命令の発行可能を示す1を命令発行チェック部208へ出力する。
ここで本実施形態においてはW→W発行チェック部204は、以下のような動作を行う。まず、W→W発行チェック部204は、命令発行キュー203から後続の命令の情報(「VAND」)を取得し、後続の命令が論理演算器130を使用することを検出する。すると、W→W発行チェック部204は、演算TAT値の大きい積和演算器120の演算TAT値を用いて命令発行可否の判定を行うことを決定する。判定式は以下である。
W→Wビジー情報管理部214のビジー値 − VADD命令の演算TAT値 ≦0
VAND命令の演算TAT値(=3)ではなく、VADD命令の演算TAT値(=5)を用いる点が
図7の判定式とは異なる。このように本実施形態においてはW→W発行チェック部204において命令の発行条件を判定する際に演算器本来の演算TAT値ではなく、他の演算器の演算TAT値のうち最大の値を用いて判定を行うところに特徴がある。上記の式を用いるとクロック2において「5−5=0」となり、上の式を満たす。従ってクロック2において、W→W発行チェック部204は、「1」を命令発行チェック部208へ出力する。命令発行チェック部208は、命令「I1」の発行可能を決定し、命令発行の決定を伝送路999、W→Wビジー情報生成部260、R→Wビジー情報生成部261、W→Rビジー情報生成部262、演算器ビジー情報生成部263へ出力する。また、W→W発行チェック部204は、TAT決定部207にW→Wビジー情報管理部214のビジー値(クロック2では「5」)を出力する。そしてTAT決定部207はそのビジー値をW→Wビジー情報生成部260、W→Rビジー情報生成部262、発行確定TAT情報レジスタ272へ出力する。W→Wビジー情報生成部260、W→Rビジー情報生成部262は、命令発行チェック部208から命令発行の決定を示す情報を取得すると、TAT決定部207から取得した演算TAT値、命令発行キュー203から取得した発行が決定した命令「I1」で書込み先となる演算レジスタV3を示す情報をそれぞれW→Wビジー情報管理部210、W→Rビジー情報管理部230へ出力する。同様にR→Wビジー情報生成部261は、0をR→Wビジー情報管理部220へ出力する。また、演算器ビジー情報生成部263は命令「I1」で使用する演算器(論理演算器130)を示す情報とVLの情報(=2)を演算器ビジー情報管理部240へ出力する。
【0047】
W→Wビジー情報管理部210、W→Rビジー情報管理部230は取得した情報に基づいてW→Wビジー情報管理部214及びW→Rビジー情報管理部234に「5」をセットする。R→Wビジー情報生成部220は、R→Wビジー情報生成部221、222に「0」をセットする。演算器ビジー情報管理部240は演算器ビジー情報管理部242に「2」をセットする。
図8のクロック3におけるビジー情報管理部214、221、222、234、242の値はこのようにしてセットされたものである。その後、各ビジー値は1クロックごとに1ずつ減算されていく。
なお、命令「I2」の発行はクロック3に確定し、命令「I2」の最後のデータが確定するのは
図8に示すとおりクロック10である。
【0048】
以上で本実施形態において演算パイプ制御部20の各機能部でビジー管理と演算TAT値を決定する方法について記載した。以下において決定した演算TAT値に基づいて命令を実行する動作について簡単に説明する。
命令の発行が決定すると、命令発行チェック部208は、命令発行の決定を命令発行確定情報レジスタ270に通知する。命令発行キュー203は発行が決定した命令の情報を発行確定命令情報レジスタ271へ出力する。TAT決定部207は発行が決定した命令の演算TAT値を発行確定TAT情報レジスタ272へ出力する。
例えば命令「I1」(VAND* V3 ← V0 & V1 )を例に説明すると、デコーダ282は、発行確定命令情報レジスタ271から命令情報を取得してそして演算レジスタV0、V1から値をVL=2だけ連続して読み出す指示をセレクタ112、113に与える。制御タイミングレジスタ273は、命令情報を1クロック保持し、デコーダ283に出力する。次にデコーダ283は演算処理の実行を論理演算器130に指示する。制御タイミングレジスタ274は、命令情報を1クロック保持し、デコーダ284に出力する。演算が終了すると
図8の例では演算器本来の演算TAT値を2増加させているので、それに合わせて論理演算器130の演算結果を1クロックずつタイミング調整レジスタ131、タイミング調整レジスタ132を経由させることで演算レジスタV3に格納するタイミングを調整する。つまりデコーダ284は、演算結果をタイミング調整レジスタ131(
図1)に出力するように論理演算器130に指示する。制御タイミングレジスタ275は、命令情報を1クロック保持し、デコーダ285に出力する。デコーダ285は、演算結果をタイミング調整レジスタ132(
図1)に出力するようにタイミング調整レジスタ131に指示する。制御タイミングレジスタ276は命令情報を1クロック保持し、デコーダ286に出力する。デコーダ286は、演算結果をタイミング調整レジスタ132から取得するようにセレクタ133に指示し、伝送路901を介してクロスバー106に出力する。続いて制御タイミングレジスタ277は、命令情報を1クロック保持し、デコーダ287に出力する。デコーダ287は、クロスバー106に演算結果を演算レジスタV3へ出力するよう指示を行う。
【0049】
このように本実施形態によれば、演算命令で使用する演算器の本来の演算TAT値に代わって、他の演算器の演算TAT値のうち最大の値を用いることで、後続の命令を早く発行することができ、結果として命令列の演算を早く完了させることができる。
なお、
図8の例では、他の演算器の演算TAT値をそのまま使用しているが、W→W発行チェック部204、R→W発行チェック部205、ビジーチェック部206の発行チェック条件と合わせてビジー期間が管理できれば、任意の値を使用可能である。この具体例については、後に
図11を用いて説明する。
【0050】
図9は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第三の図である。
図9を用いて本実施形態によるTAT決定部207が、論理演算器130を使用する場合にW→W発行チェック部204およびR→W発行チェック部205の出力値を比較して、値の大きい方を演算TATとして出力する動作の一例を説明する。
図9では以下の命令列を例に本実施形態の情報処理装置による動作を説明する。
命令「Ist」 VST Mem ← V3 VL=2
命令「I0」 VADD* V3 ← V0 + V1 VL=2
命令「I1」 VAND* V3 ← V0 & V1 VL=2
命令「I2」 VMPY V0 ← V1 × V2 VL=2
VSTはストア命令のことで命令「Ist」は、演算レジスタV3の値をメモリに書き込む処理である。本実施形態においては4サイクルに1回レジスタからデータを読み出す設定になっているものとする。VST命令における命令TATは次の式で算出するものとする。
(VST命令のVL値 − 1)×(4 − 1) ・・・ 式2
式の2項目の「4」は4サイクルに1回レジスタからデータを読み出すことによる。
図9の場合、VL=2であるから式2の値は「3」となる。
命令「Ist」と「I0」、「I1」の関係における特徴は演算レジスタV3についてRead→Writeの関係になることである。また、命令「I0」と「I1」の関係における特徴は演算レジスタV3についてWrite→Writeの関係になることである。
命令「Ist」と「I0」、「I1」の関係に注目するとクロック0で命令「Ist」の発行が決定すると、クロック1で演算レジスタV3の1つ目の要素をメモリにストアする。そして4サイクル後の5クロックで2つ目の要素をメモリにストアする。命令「I0」、「I1」の演算レジスタV3への書き込みは5サイクル後に行わなければならない。命令「I0」と「I1」の関係については、
図7、
図8と同様である。
まず、クロック0で命令「Ist」の発行が決定すると、クロック1でR→Wビジー情報管理部224に式2で求めた値「3」がセットされる。ここでR→W発行チェック部205は、命令「I0」の発行の判定を次式で行う。
R→Wビジー情報管理部224のビジー値 − VADD命令の演算TAT値 ≦0
この例の場合、「3−5」となるので上の式は満たされる。従って命令「I0」の発行がクロック1で決定する。命令「I0」の発行が完了するとクロック2において
図8と同様に「5」が、W→Wビジー情報管理部214にセットされ、クロック1で「3」だったR→Wビジー情報管理部224の値は「2」となる。
このときW→W発行チェック部204は、「I0」と「I1」におけるV3へのW→Wの関係を、
W→Wビジー情報管理部214のビジー値 − VAND命令の演算TAT値 ≦0
で判定する。ここでVAND命令の演算TAT値は、命令「I0」のVADD命令の演算TATである「5」として計算するので、この式の左辺は「5−5」となりこの式を満たす。従ってR→W発行チェック部204は、命令発行可能を示す「1」を命令発行チェック部208へ出力する。
R→W発行チェック部205は、「Ist」と「I1」におけるV3へのR→Wの関係を、
R→Wビジー情報管理部224のビジー値 − VAND命令の演算TAT値 ≦0
で判定する。ここでVAND命令の演算TAT値は、命令「Ist」の演算TATと「VAND」本来の演算TATのうち大きい方の値となるが共に「3」であるので、この式の左辺は「2−3」となり、この式を満たす。従ってR→W発行チェック部205は、命令発行可能を示す「1」を命令発行チェック部208へ出力する。これによりクロック2で命令「I1」の発行が決定する。
一方、クロック2においてTAT決定部207は、W→Wビジー情報管理部214の値「5」をW→W発行チェック部204を介して取得する。また、TAT決定部207は、R→Wビジー情報管理部224の値「2」をR→W発行チェック部205を介して取得する。そしてTAT決定部207は、命令「I1」の「VAND」の演算TATを、これらの値を比較して大きい方の値である「5」と決定する。以降の処理は
図8と同じである。このようにW→Wビジー情報管理部とR→Wビジー情報管理部とに有意なビジー値を持つ場合であっても、TAT決定部207は、それらのうち大きい方の値を次の命令における演算TATの値と定める。それにより後続の命令を早く発行することができ、結果として命令列の演算を早く完了させることができる。
【0051】
図10は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第四の図である。
図10を用いて本実施形態によるTAT決定部207が、他の演算器の最大演算TATだけではなく、本来の演算TAT値と他の演算器の最大演算TAT値との中間的な値を取り得る例について説明する。
図10の説明で使用する命令列は
図8と同じである。
この図における前提としてクロック1の時点でこの命令列以前に実行されたある演算命令によって例えばVL=4のAND命令が発行され、この図のクロック1において演算器ビジー情報管理部242のビジー値が「3」であるものとする。また、この先行する命令による演算レジスタの干渉は考えないものとする。また、先行するAND命令と干渉しない命令「I0」はクロック1で発行が決定しているものとする。するとこの図においては
図8と異なり命令「I1」の発行に対して演算器ビジー情報管理部242のビジー値がネックとなる。命令「I1」もAND命令であり、論理演算器130を使用するからである。クロック3までは、演算器ビジー情報管理部242のビジー値が示すように論理演算器130がビジー状態である。そのためビジーチェック部206の値は、クロック3まで次命令の発行可能を示す「1」にはならない。クロック3においてR→W発行チェック部204、W→W発行チェック部205、ビジーチェック部206全ての値が1となり命令「I1」の発行が可能になる。そのとき命令発行チェック部208は、「1」を伝送路999に出力する。一方、TAT決定部207は、クロック3においてR→Wビジー情報管理部214の値「4」をR→W発行チェック部204を介して取得する。そしてTAT決定部207は命令「I1」の「VADD」の演算TATを「4」と決定する。命令「I1」においては、
図8と異なり演算TATを4にセットしたため、タイミング調整レジスタ131からクロスバー106へ出力する。従って
図8と比べの命令「I1」の全サイクルが1クロック短くなっている。その為、仮に命令「I2」が命令「I1」と演算レジスタV3についてR→W関係にある場合など、
図8の例のように命令「I1」の演算TATを「5」と設定する場合に比べ1クロック早く命令発行を決定できることになる。
このように本実施形態によれば演算TATとして本来の演算TAT値と他の演算器の最大演算TAT値との中間的な値を状況に応じて柔軟に取り得ることにより計算リソースの効率的な活用、処理の高速化が可能になる。
【0052】
図11は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第五の図である。
図11を用いて本実施形態が、読み出される要素が連続では無く、何サイクルか空いて飛び飛びに読み出す読み出しパターンにも対応できることを説明する。説明に用いるのは以下の命令列である。
命令「I1」 VST Mem ← V0 VL=4
命令「I2」 VAND V0 ← V2 & V3 VL=4
この命令列は、「I1」と「I2」が演算レジスタV0についてR→Wの関係になっていることが特徴である。
この例においても4サイクルに1回レジスタからデータを読み出す設定になっているものとする。
図9で説明したとおりVSTの演算TATは、式2で計算する。すると
図11のVSTの演算TATは「9」である。クロック1でR→Wビジー情報管理部221に「9」がセットされる。R→W発行チェック部205の判定条件は、
R→Wビジー情報管理部221 − VAND命令TAT ≦ 0
である。
本実施形態の論理演算器130の演算TATは3〜5の値を可変的にとり得る。この例では、VAND命令TATを5として判定する。するとクロック6においてこの式が満たされ、命令「I2」の発行が決定する。するとクロック14において演算レジスタV0の4要素目がメモリにストアされてから、クロック15において演算レジスタV0の4要素目に書き込みが行われデータの一貫性が保たれ、最短のタイミングでこの命令列の実行が完了する。
このように本実施形態によれば、演算レジスタから特殊な読み出しが行われる際にR→Wビジー情報生成部261を使用して
図11で示した例のようにストアパススループットの関係から演算レジスタから4サイクル周期で読み出すようなストア命令の場合など、最後のデータが読み出される前に後続命令の書き込みが行われないよう管理しながら最速のタイミングで処理を実行することができる。
【0053】
<第二の実施の形態>
以下、本発明の第二の実施形態による情報処理装置の動作を
図12〜
図13を参照して説明する。
図12に示すとおり第一の実施形態においては命令動作効率向上のためにW→Wビジー情報管理部、W→Wビジーチェック部など情報処理装置1のハードウェアによって演算TATを決定していたが、第二の実施形態において演算TATは、予めシミュレーションや実測などによって性能の良い演算TAT値を決定しておき、その決定した値を演算パイプ制御部20の外部から制御信号によってW→W発行チェック部204などに与える。例えば、
図12の信号980に値「5」が含まれており、W→W発行チェック部204、演算TAT決定部207はこの信号980に含まれる値「5」を各命令の演算TAT値とする。
図13は第二実施形態におけるタームチャートである。この図における命令列は
図7と同じである。
図13に示す通りクロック1以降、信号980によって値「5」が与えられる。
本実施形態によると予めジョブ毎に実行性能が良い値を決定しておき、信号980を介して演算TAT値を受け取ることでより柔軟に効率の良い演算を行うことが出来る。
【0054】
<第三の実施の形態>
以下、本発明の第三の実施形態による情報処理装置の動作を
図14を参照して説明する。
図14に示すとおり第三の実施形態においては、状態カウント部800を備えている。状態カウント部800は、命令発行チェック部208が「1」を出力したときにおけるTAT決定部207が決定した演算TATの値を取得する。そして、状態カウント部800は、演算TATの分布をカウントする。そして、例えば、演算TAT=5が2455回、演算TAT=4が1244回などのように演算TAT値の最大値をカウントした回数が、他と比較して群を抜いて多い場合は、演算TAT=5と固定することを決定し、その決定した演算TATをW→W発行チェック部204などに与える。
これにより、論理回路の信号変化を抑止して省電力化を図ることができる。
【0055】
また、命令発行決定時は命令本来の演算TATで命令の発行を決定し、例えばR→Wにある後続命令の発行決定時に、制御タイミングレジスタ274以降の演算TATの値を変更する構成も考えられる。
【0056】
なお、W→Wビジー情報管理部210、R→Wビジー情報管理部220、W→Rビジー情報管理部230、演算器ビジー情報管理部240は、ビジー期間情報管理部の一例である。また、ビジー値は、ビジー期間情報の一例である。また、チェック部は、例えば、W→W発行チェック部204、R→W発行チェック部205、ビジーチェック部206、命令発行チェック部208で構成される。また、TAT決定部207は、決定部の一例である。また、制御部は、例えば、命令発行確定情報レジスタ270、発行確定命令情報レジスタ271、発行確定TAT情報レジスタ272、デコーダ273〜278、タイミング調整レジスタ131〜132、セレクタ133で構成される。
【0057】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。