(57)【要約】【課題】  データを主記憶上やキャッシュメモリ上の所定の記憶領域へストアするためのストア命令を実行するにあたり、ストアデータを保持する演算レジスタの使用効率を向上できるようにする。【解決手段】  命令処理部１０が、演算結果が保持された演算レジスタ２２が確定すると当該演算結果をストアデータとして演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させるように構成され、ストアポート３０−０〜３０−ｎにストア命令が保持されるよりも先に、ストアデータがストアデータバッファ５０−０〜５０−ｎに保持された場合に、ストア命令がストアポート３０−０〜３０−ｎに保持された時点でリセット部８１がストアデータ保持フラグ３０ｄをオフ状態に設定することを抑止して、ストアデータ保持フラグ３０ｄのオン状態を維持する抑止部８２をそなえる。【選択図】  図１
2006040143.tif 000002
【特許請求の範囲】
【請求項１】
命令を解読して処理命令を発行する命令処理部と、
該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、
該演算器による演算結果を保持する演算レジスタと、
前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、
前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、
前記命令処理部が、前記ストア命令に応じて、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させるように構成され、
前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成されるとともに、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部と、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部とをさらにそなえて構成されていることを特徴とする、情報処理装置。
【請求項２】
前記演算レジスタから前記ストアデータとして発行された前記演算結果をアラインするアライン部をそなえ、
前記命令処理部が、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともにアラインに必要なアライン情報と当該アライン情報を前記アライン部で使用するか否かを示す使用／不使用情報とを発行するように構成され、
前記アライン部で使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択するアライン情報選択部をさらにそなえて構成されていることを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記命令処理部が、
前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、
前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することを特徴とする、請求項２記載の情報処理装置。
【請求項４】
前記ストア命令の実行をキャンセルするキャンセル部をそなえ、
該キャンセル部が、前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータが削除されるとともに、当該ストアデータに対応する前記ストアデータ保持フラグがオフ状態に設定されることを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、
前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをそなえ、
前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータが前記ストアデータバッファから前記ストアフェッチバイパスへ投入されることを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
命令を解読して処理命令を発行する命令処理部と、該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記命令処理部から発行された前記ストア命令の実行を制御するストア命令制御方法であって、
前記命令処理部により、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させ、
前記ストアデータバッファに前記ストアデータが保持されるよりも先に、前記ストア命令が前記ストアポートに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定する一方、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持することを特徴とする、ストア命令制御方法。
【請求項７】
前記命令処理部により、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともに当該演算結果のアラインに必要なアライン情報、及び当該アライン情報を前記アラインに際して使用するか否かを示す使用／不使用情報とを発行し、
前記アラインに際して使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択することを特徴とする、請求項６記載のストア命令制御方法。
【請求項８】
前記命令処理部により、前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、
前記命令処理部により、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することを特徴とする、請求項７記載のストア命令制御方法。
【請求項９】
前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータを削除するとともに、当該ストアデータに対応する前記ストアデータ保持フラグをオフ状態に設定することを特徴とする、請求項６〜８のいずれか１項に記載のストア命令制御方法。
【請求項１０】
前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをさらにそなえて構成された前記情報処理装置において、前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータを前記ストアデータバッファから前記ストアフェッチバイパスへ投入することを特徴とする、請求項６〜９のいずれか１項に記載のストア命令制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを主記憶上やキャッシュメモリ上の所定の記憶領域へストアするためのストア命令を実行する情報処理装置及びストア命令制御方法に関する。
【背景技術】
【０００２】
従来から、データを所定の記憶領域へストアするためのストア命令を実行する情報処理装置がある（例えば、下記特許文献１参照）。
図７は従来の情報処理装置１００の構成を示すブロック図である。この図７に示すように、従来の情報処理装置１００は、命令処理部１０，演算器２０，アドレスレジスタ２１，演算レジスタ２２，ストアポート３０−０〜３０−ｎ（ｎは０以上の整数、ここでは２以上の整数），アライン部４０，ストアデータバッファ５０−０〜５０−ｎ（ｎは０以上の整数、ここでは２以上の整数），キャッシュメモリ（記憶領域）６０，及びリセット部８１をそなえて構成されている。
【０００３】
ここで、図７に示す従来の情報処理装置１００の上記各構成要素の詳細について、その動作に基づいて説明すると、図８は図７に示す従来の情報処理装置１００によるストア命令制御方法の手順（情報処理装置１００の動作）を説明するためのタイムチャートである。なお、図８におけるＴ１〜Ｔ１２は時間単位、つまり、情報処理装置１００における制御クロック単位を示すものである。
【０００４】
図７，図８に示すように、情報処理装置１００では、まず、命令処理部１０が命令キャッシュ（図示せず）に保持された命令を解読する（図８のＴ１参照）。このとき、命令処理部１０が解読した命令がストア命令（ストア要求）であれば、命令処理部１０は、解読したストア命令とともにストアすべきデータの幅（以下、ストアデータ幅という；図中ＬＥＮＧＴＨと表記），ストアデータの右詰，左詰を示すアライン指示情報（図中ＡＬＩＧＮと表記），演算器２０によるストア先のアドレス（以下、ストアアドレスという）計算に用いられるアドレスレジスタ２１の番号（値）もしくは即値オペランド，及び当該ストア命令によってストアすべきデータ（以下、ストアデータという）を保持する演算レジスタ２２の番号（値）を取得する。
【０００５】
そして、命令処理部１０は、演算器２０によるストアアドレスの計算に用いられるアドレスレジスタ２１が確定すると（図８のＴ２参照）、解読したストア命令，ストアデータ幅，及びアライン指示情報をストアポート３０−０〜３０−ｎのいずれか（ここではストアポート３０−０）に発行する（図８のＴ３参照）。
一方、演算器２０は、ストアアドレスの計算に用いられるアドレスレジスタ２１が確定すると（図８のＴ２参照）、アドレスレジスタ２１を用いてストアアドレスの計算を実行する（図８のＴ３参照）。なお、演算器２０の計算結果として得られたストアアドレスは格納用レジスタ（ここでは、アドレスレジスタ２１が汎用レジスタであるため、アドレスレジスタ２１）に一旦保持される。
【０００６】
次に、演算器２０により算出されたストアアドレスがストアポート３０−０〜３０−ｎに対して発行される（図８のＴ４参照）が、ここで、当該ストアアドレスは少なくともストアポート３０−０〜３０−ｎをそなえる記憶処理装置のパイプラインに投入され、パイプラインを流れることで、変換ルックアサイドバッファ（ＴＬＢ：Translation Lookaside Buffer；図示せず）を用いて実際のストア先である記憶領域（ここではキャッシュメモリ６０）上のアドレス（物理アドレス；以下、アドレスレジスタ２１に保持されたストアアドレスと区別しない場合には、単にストアアドレスという）に変換されて、変換されたストアアドレスがストアポート３０−０に発行される（図８のＴ４参照）。なお、アドレスレジスタ２１からのストアアドレスの発行が完了すると、アドレスレジスタ２１は解放されて、他の処理による利用が可能になる。
【０００７】
また、ストアポート３０−０は、ストア命令，ストアアドレス（物理アドレス），ストアデータ幅を受け取ったことを示す情報（ここではフラグ；図７中の“ＶＡＬＩＤ”，“ＡＤＲＳ”，“ＬＥＮＧＴＨ”参照）を保持するように構成されており、ストア命令を受け取るとＶＡＬＩＤフラグ３０ａがオン状態に設定され、ストアアドレスを受け取るとＡＤＲＳ（Address）フラグ３０ｂがオン状態に設定され、さらにストアデータ幅を受け取るとＬＥＮＧＴＨフラグ３０ｃがオン状態に設定される（図８のＴ５参照）。
【０００８】
そして、命令処理部１０は、ストア命令のストアポート３０−０への発行を確認すると、演算レジスタ２２が保持する当該ストア命令によりストアすべきストアデータをストアデータバッファ５０−０〜５０−ｎ（ここではストアデータバッファ５０−０）に発行すべく、演算レジスタ２２からのストアデータの発行のロックを解除する（図８のＴ６参照）。つまり、従来の情報処理装置１００では、演算レジスタ２２の番号（値）が確定していても、ストア命令のストアポート３０−０への発行が完了するまでは、演算レジスタ２２からのストアデータの発行を抑止（インターロック）するように構成されている。
【０００９】
次いで、演算レジスタ２２に保持されたストアデータがストアポート３０−０に対応するストアデータバッファ５０−０に対して発行される（図８のＴ７参照）が、ここでは、まずアライン部４０が、演算レジスタ２２から発行されたストアデータを、ストア命令とともにストアポート３０−０に対して発行されたストアデータ幅及びアライン指示情報（以下、これらをアライン情報という）を用いてアラインし（図８のＴ８参照）、その後、アライン部４０によりアラインされたストアデータがストアデータバッファ５０−０に保持される（図８のＴ９参照）。なお、演算レジスタ２２からのストアデータの発行が完了すると、演算レジスタ２２は解放されて、他の処理による利用が可能になる。
【００１０】
また、ストアポート３０−０は、ストアデータバッファ５０−０にストアデータが保持されているか否かを示す情報（ここではフラグ；図７中の“ＲＳＴＤＶ”参照）を保持するように構成されており、ストアデータバッファ５０−０が演算レジスタ２２から発行されたストアデータを保持するとＲＳＴＤＶ（Received Store Date Valid）フラグ３０ｄがオン状態に設定される（図８のＴ９参照）。
【００１１】
ところで、ストアポート３０−０にストアアドレスが保持されると（図８のＴ５参照）、命令処理部１０は、ストア対象領域のページ属性を取り出し、例外の判定を行なう（図８のＴ６参照）。つまり、命令処理部１０は、ストア対象領域としてのストアアドレスが書き込み（ストア）可能か否かを判断し、ストア可能であれば例外無しをストアポート３０−０へ通知する一方、ストア不可能であれば例外有りをストアポート３０−０へ通知して当該ストア命令の実行をキャンセルする。
【００１２】
なお、ストアポート３０−０は、例外判定の結果（有無）を示す情報（ここではフラグ；図７中の“ＰＳＴＶ”参照）を保持するように構成されており、命令処理部１０から受け取った例外の判定結果が例外無しであればＰＳＴＶ（Post Status Valid）フラグ３０ｅがオン状態に設定される一方、例外有りであればＰＳＴＶフラグ３０ｅがオフ状態に設定される。
【００１３】
次いで、命令処理部１０は、ストアポート３０−０にストア命令，ストアアドレス，ストアデータの幅が保持され、当該ストア命令の例外判定の結果が例外無しであり、ストアデータがストアデータバッファ５０−０に保持された状態（すなわち、ＶＡＬＩＤフラグ３０ａ，ＡＤＲＳフラグ３０ｂ，ＬＥＮＧＴＨフラグ３０ｃ，ＰＳＴＶフラグ３０ｅ，及びＲＳＴＤＶフラグ３０ｄのすべてがオン状態）になり、且つ、当該ストア命令に先行する命令がすべて完了したら、当該ストア命令が実行可能な状態であると判断して、ストアポート３０−０に対してストア許可を通知する（図８のＴ１０参照）。
【００１４】
なお、ストアポート３０−０は、命令処理部１０からストア許可を受け取ったか否かを示す情報（ここではフラグ；図７中の“ＲＥＡＤＹ”参照）を保持するように構成されており、命令処理部１０からストア許可を受け取ると、ＲＥＡＤＹフラグ３０ｆがオン状態に設定される。
そして、ストアポート３０−０のＲＥＡＤＹフラグ３０ｆがオン状態に設定されると、ストア命令が実行され（図８のＴ１１参照）、ストアポート３０−０に保持されたストアアドレスに基づいて、キャッシュメモリ６０における所定アドレス上に、ストアデータバッファ５０−０に保持されたストアデータが書き込まれてストア命令の処理が完了する（図８のＴ１２参照）。
【００１５】
このように、従来の情報処理装置１００では、必ず先にストア命令を命令処理部１０からストアポート３０−０〜３０−ｎに発行し、その後、演算器２０による演算結果であるストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎへ発行するように、つまり、インオーダーで処理を行なうように構成されている。
したがって、図７に示すように、従来の情報処理装置１００は、ストアポート３０−０〜３０−ｎのＲＳＴＤＶフラグ３０ｄをオフ状態にリセットしうるリセット部８１をそなえており、命令処理部１０から発行されたストア命令がストアポート３０−０〜３０−ｎに保持されたら、リセット部８１がＲＳＴＤＶフラグ３０ｄをオフ状態にリセットする（図８のＴ５参照）ように構成されている。
【００１６】
つまり、従来の情報処理装置１００では、インオーダーで処理が行なわれるため、ストアポート３０−０〜３０−ｎにストア命令が保持された時点で、対応するストアデータバッファ５０−０〜５０−ｎにストアデータが保持されていることはあり得ないため、ストア命令がストアポート３０−０〜３０−ｎに保持された時点で、リセット部８１がＲＳＴＤＶフラグ３０ｄをオフ状態にリセットするように構成されている。これにより、例えば、本来ストアすべきストアデータとは異なる他のストアデータが対応するストアデータバッファ５０−０〜５０−ｎに保持されており、このストアすべきでない他のデータを誤ってストアしてしまったり、ストアデータバッファ５０−０〜５０−ｎがストアデータを保持していないにも関わらず誤ってＲＳＴＤＶフラグ３０ｄがオン状態に設定されているためにストア命令が実行されないといったエラーを防止することができるようになっている。
【特許文献１】特開平５−２８９８４８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ところで、上述した従来の情報処理装置１００では、命令処理部１０による命令の解読後、ストア命令をストアポート３０−０〜３０−ｎに対して発行するにあたっては、演算器２０によるストアアドレスの計算に用いるアドレスレジスタ２１の番号（値）が確定していることが必要であり、また、ストアデータをストアデータバッファ５０−０〜５０−ｎに対して発行するにあたっては、ストアデータを保持する演算レジスタ２２の番号（値）が確定していることが必要であった。これらアドレスレジスタ２１の番号と演算レジスタ２２の番号とが確定する順序は一定ではない。
【００１８】
しかしながら、従来の情報処理装置１００では、上述したように必ず先にストア命令を命令処理部１０からストアポート３０−０〜３０−ｎに発行し、その後、演算レジスタ２２からストアデータをストアデータバッファ５０−０〜５０−ｎへ発行するようにインオーダーで処理を実行していたため、アドレスレジスタ２１の番号が確定するよりも前に演算レジスタ２２の番号が確定して当該演算レジスタ２２にストアデータが保持されているような場合でも、アドレスレジスタ２１の番号が確定してストア命令の発行が確認されるまでは、演算レジスタ２２からのストアデータバッファ５０−０〜５０−ｎに対するストアデータの発行がロックされており、ストアデータの発行を待たなくてはならなかった。
【００１９】
このように、演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対するストアデータの発行が待たされる間は、当然、ストアデータを保持する演算レジスタ２２の解放も待たされるため、その間は演算レジスタ２２を他の演算に使用することができず、演算レジスタ２２の使用効率が落ちていた。
本発明は、このような課題に鑑み創案されたもので、ストア命令を実行するにあたり、ストアデータを保持する演算レジスタの使用効率を向上できるようにすることを目的とする。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明の情報処理装置は、命令を解読して処理命令を発行する命令処理部と、該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記命令処理部が、前記ストア命令に応じて、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させるように構成され、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成されるとともに、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部と、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部とをさらにそなえて構成されていることを特徴としている（請求項１）。
【００２１】
さらに、前記演算レジスタから前記ストアデータとして発行された前記演算結果をアラインするアライン部をそなえ、前記命令処理部が、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともにアラインに必要なアライン情報と当該アライン情報を前記アライン部で使用するか否かを示す使用／不使用情報とを発行するように構成され、前記アライン部で使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択するアライン情報選択部をさらにそなえて構成されることが好ましい（請求項２）。
【００２２】
このとき、前記命令処理部が、前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することが好ましい（請求項３）。
【００２３】
また、前記ストア命令の実行をキャンセルするキャンセル部をそなえ、該キャンセル部が、前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータが削除されるとともに、当該ストアデータに対応する前記ストアデータ保持フラグがオフ状態に設定されることが好ましい（請求項４）。
【００２４】
なお、前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをそなえ、前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータが前記ストアデータバッファから前記ストアフェッチバイパスへ投入されることが好ましい（請求項５）。
【００２５】
また、上記目的を達成するために、本発明のストア命令制御方法は、命令を解読して処理命令を発行する命令処理部と、該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記命令処理部から発行された前記ストア命令の実行を制御するストア命令制御方法であって、前記命令処理部により、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させ、前記ストアデータバッファに前記ストアデータが保持されるよりも先に、前記ストア命令が前記ストアポートに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定する一方、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持することを特徴としている（請求項６）。
【００２６】
さらに、前記命令処理部により、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともに当該演算結果のアラインに必要なアライン情報、及び当該アライン情報を前記アラインに際して使用するか否かを示す使用／不使用情報とを発行し、前記アラインに際して使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択することが好ましい（請求項７）。
【００２７】
このとき、前記命令処理部により、前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、前記命令処理部により、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することが好ましい（請求項８）。
【００２８】
また、前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータを削除するとともに、当該ストアデータに対応する前記ストアデータ保持フラグをオフ状態に設定することが好ましい（請求項９）。
【００２９】
なお、前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをさらにそなえて構成された前記情報処理装置において、前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータを前記ストアデータバッファから前記ストアフェッチバイパスへ投入することが好ましい（請求項１０）。
【発明の効果】
【００３０】
このように、本発明によれば、演算レジスタが確定すると、ストア命令のストアポートへの発行状況に関わらず、演算レジスタから演算結果をストアデータとしてストアデータバッファに対して発行させ、ストア命令がストアポートに保持されるよりも先にストアデータがストアデータバッファに保持された場合には、ストア命令がストアポートに保持された時点でストアデータ保持フラグがオフ状態に設定されることなくオン状態に維持されるため、ストア命令をストアポートに発行するよりも先にストアデータをストアデータバッファに対して発行させた場合でも、当該ストア命令を確実に実行することができる（請求項１，６）。
【００３１】
したがって、従来の情報処理装置のように、演算レジスタが確定しているにも関わらず、演算レジスタからのストアデータの発行を、ストア命令の発行が完了するのを確認するまで待たなくてもよくなり、演算レジスタが確定した時点ですぐに演算レジスタからストアデータ（演算結果）を発行させることにより、演算レジスタからストアデータを早く発行させた分だけ、演算レジスタを早く解放して他の処理に割り当てることが可能になり、演算レジスタの使用効率を向上させることができる（請求項１，６）。
【００３２】
また、演算レジスタからストアデータとして発行された演算結果をアラインする場合でも、ストアデータとともにアライン情報と使用／不使用情報が発行され、かかる使用／不使用情報に基づいてアラインが確実に行なわれ（請求項２，７）、ストア命令をストアポートに対して発行するよりも先にストアデータを演算レジスタからストアデータバッファに対して発行させる場合には、かかる使用／不使用情報を使用に設定するため、ストア命令をストアポートに発行するよりも先にストアデータをストアデータバッファに対して発行させた場合でも、アラインを確実に実行することができ、その結果、ストア命令を確実に実行することができる（請求項３，８）。
【００３３】
さらに、ストアデータがストアデータバッファに対して発行された後であって、当該ストアデータに対応するストア命令がストアポートに対して発行される前に、ストア命令をキャンセルする場合には、ストアデータバッファに保持された当該ストアデータが削除されるとともに、当該ストアデータに対応するストアデータ保持フラグがオフ状態に設定されるため、キャンセルを実行したにも関わらずストアポートのストアデータ保持フラグがオン状態のままになり、キャンセル実行後に当該ストアポートに保持されたストア命令が、ストアデータが既に保持されていると誤認して、誤って実行されることを防止することができ、キャンセル実行後のストア命令を確実に実行することができる（請求項４，９）。
【００３４】
また、フェッチ命令が、ストア命令に使用するストアデータをフェッチする場合であっても、かかるフェッチ命令を、ストアフェッチバイパスを用いて早期に実行することができる（請求項５，１０）。
【発明を実施するための最良の形態】
【００３５】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の第１実施形態について
〔１−１〕情報処理装置の構成について
まず、本発明の第１実施形態としての情報処理装置の構成について説明する。図１は本発明の第１実施形態としての情報処理装置の構成を示すブロック図である。なお、図１において既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示している。
【００３６】
図１に示すように、本発明の第１実施形態としての情報処理装置１は、命令処理部１０，演算器２０，アドレスレジスタ２１，演算レジスタ２２，ストアポート３０−０〜３０−ｎ（ｎは０以上の整数、ここでは２以上の整数），アライン部４０，アライン情報選択部４１，ストアデータバッファ５０−０〜５０−ｎ（ｎは０以上の整数、ここでは２以上の整数），キャッシュメモリ（記憶領域）６０，フェッチバス７０，ストアフェッチバイパス７１，キャンセル部８０，リセット部８１，及び抑止部８２をそなえて構成されている。
【００３７】
命令処理部１０は、命令キャッシュ（図示せず）に保持された命令を解読して処理命令を発行するものであり、命令処理部１０は解読した命令がストア命令（ストア要求）である場合には、命令を解読することにより、ストア命令とともにストアデータ幅（図中ＬＥＮＧＴＨと表記），ストアデータの右詰，左詰を示すアライン指示情報（図中ＡＬＩＧＮと表記），後述する演算器２０によるストア先のアドレス（以下、ストアアドレスという）計算に用いられるアドレスレジスタ２１の番号（値），及び後述するストアデータを保持する演算レジスタ２２の番号（値）を取得する。
【００３８】
演算器２０は、命令処理部１０から処理命令として発行された演算命令に応じて演算を実行するとともに、命令処理部１０から処理命令として発行されたストア命令に基づく、当該ストア命令によりストアすべき所定の記憶領域（ここではキャッシュメモリ６０）上のアドレス計算を後述するアドレスレジスタ２１を用いて実行するものである。
アドレスレジスタ２１は、演算器２０によるストア先のアドレス計算に用いられるとともに、かかる計算の結果としてのストアアドレスを一時的に保持するものである。
【００３９】
演算レジスタ２２は、演算器２０による演算に用いられるとともに、かかる演算の結果得られたストアデータを一時的に保持するものである。なお、演算器２０，アドレスレジスタ２１，及び演算レジスタ２２から演算部が構成される。
ストアポート３０−０〜３０−ｎは、命令処理部１０から処理命令として発行され、演算レジスタ２２に保持された演算結果（ストアデータ）を所定の記憶領域（ここではキャッシュメモリ６０）にストアするためのストア命令を保持するものである。
【００４０】
つまり、命令処理部１０は、解読したストア命令をストアポート３０−０〜３０−ｎに発行するように構成されており、当該ストア命令に基づく演算器２０によるアドレス計算に用いられるアドレスレジスタ２１の番号が確定すると、当該ストア命令を発行する（後述する図３のＴ３参照）。
また、ストアポート３０−０〜３０−ｎは、それぞれＶＡＬＩＤフラグ３０ａ，ＡＤＲＳ（Address）フラグ３０ｂ，ＬＥＮＧＴＨフラグ３０ｃ，ＲＳＴＤＶ（Received Store Date Valid）フラグ（ストアデータ保持フラグ）３０ｄ，ＰＳＴＶ（Post Status Valid）フラグ３０ｅ，及びＲＥＡＤＹフラグ３０ｆをそなえて構成されている。
【００４１】
ＶＡＬＩＤフラグ３０ａは、ストアポート３０−０〜３０−ｎが命令処理部１０から発行されたストア命令を受け取ったか否かを示す情報であり、ストア命令を受け取るとオン状態に設定される。
ＡＤＲＳ（Address）フラグ３０ｂは、ストアポート３０−０〜３０−ｎがアドレスレジスタ２１からストアアドレスを受け取ったか否かを示す情報であり、ストアアドレスを受け取るとオン状態に設定される。
【００４２】
ＬＥＮＧＴＨフラグ３０ｃは、ストアポート３０−０〜３０−ｎが命令処理部１０からストア命令とともに発行されたストアデータ幅を受け取ったか否かを示す情報であり、ストアデータ幅を受け取るとオン状態に設定される。
ＲＳＴＤＶフラグ３０ｄは、ストアポート３０−０〜３０−ｎのそれぞれに対応した後述するストアデータバッファ５０−０〜５０−ｎが演算レジスタ２２からストアデータを受け取ったか否かを示す情報であり、ストアデータバッファ５０−０〜５０−ｎにストアデータが保持された場合にオン状態に設定される。
【００４３】
ＰＳＴＶフラグ３０ｅは、命令処理部１０がストア対象領域（所定の記憶領域；ここではキャッシュメモリ６０）のページ属性を取り出し、ストア対象領域としてのストアアドレスが書き込み（ストア）可能か否かを判断する例外判定の結果を示す情報であり、かかる例外判定の結果が例外無し（ストア可能）であればオン状態に設定される。なお、命令処理部１０による例外判定を行なうタイミングについては、図３を参照しながら後述する。
【００４４】
ＲＥＡＤＹフラグ３０ｆは、命令処理部１０がストアポート３０−０〜３０−ｎに保持されたストア命令が実行可能な状態であると判断して、当該ストア命令を実行させるべく、ストアポート３０−０〜３０−ｎに対して通知するストア許可を、ストアポート３０−０〜３０−ｎが受け取ったか否かを示す情報であり、命令処理部１０からストア許可を受け取るとオン状態に設定される。
【００４５】
アライン部４０は、演算レジスタ２２からストアデータとして発行された演算結果を、命令処理部１０からストア命令とともに発行されたストアデータの幅（図中ＬＥＮＧＴＨと表記）とストアデータの右詰，左詰を示すアライン指示情報（図中ＡＬＩＧＮと表記）とからなるアライン情報、もしくは、演算レジスタ２２から発行されるストアデータに付随して発行されたアライン情報を用いてストアデータをアラインするものである。
【００４６】
アライン情報選択部４１は、アライン部４０でアラインに用いるアライン情報を、ストアデータに付随して発行されたアライン情報とともに発行された使用／不使用情報（図中ＣＯＤＥ−ＶＡＬＩＤと表記）に基づいて、命令処理部１０からストア命令とともに発行されたアライン情報と、ストアデータに付随して発行されたアライン情報とから選択するものである。
【００４７】
つまり、命令処理部１０は、ストア命令をストアポート３０−０〜３０−ｎに対して発行する際に、当該ストア命令とともに前記アライン情報も発行するとともに、演算レジスタ２２からストアデータをストアデータバッファ５０−０〜５０−ｎに対して発行させる際に、当該ストアデータに付随して前記アライン情報と使用／不使用情報とを発行させる。
【００４８】
ストアデータバッファ５０−０〜５０−ｎは、命令処理部１０により演算レジスタ２２からストアデータとして発行され、アライン部４０によってアラインされたストアデータを一時的に保持するものである。
命令処理部１０は、ストア命令に基づいて演算レジスタ２２に保持された演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎに対して発行させるように構成されており、解読したストア命令に応じて、当該ストア命令によってストアすべき演算結果が保持された演算レジスタ２２が確定すると（つまり、指定された演算レジスタ２２に演算結果が保持されたら）、当該ストア命令のストアポート３０−０〜３０−ｎへの発行状況（発行したか否か）に関わらず、当該演算結果を演算レジスタ２２からストアデータとして発行させる（後述する図３のＴ４参照）。
【００４９】
なお、ストアデータバッファ５０−０〜５０−ｎとストアポート３０−０〜３０−ｎとはそれぞれ１対１で対応しており、命令処理部１０は、ストア命令を発行するにあたり、いずれの対のストアポート及びストアデータバッファを用いるかを指定する。また、少なくともストアポート３０−０〜３０−ｎ，アライン部４０，ストアデータバッファ５０−０〜５０−ｎ，及びキャッシュメモリ６０から記憶制御装置が構成される。
【００５０】
フェッチバス７０は、命令処理部１０が解読した処理命令がフェッチ命令であった場合に、命令処理部１０から発行された当該フェッチ命令のフェッチ対象であるデータを所定の記憶領域（ここではキャッシュメモリ６０）から前記演算部へ投入するためのバスである。
ストアフェッチバイパス７１は、命令処理部１０から発行されたフェッチ命令がストアデータバッファ５０−０〜５０−ｎに保持されているストアデータを使用する場合に、当該ストアデータをストアデータバッファ５０−０〜５０−ｎからフェッチバスへ直接投入するためのバスである。
【００５１】
ここで、命令処理部１０は、解読した命令がフェッチ命令であった場合に、所定の条件を満たす場合には、ストアフェッチバイパス７１を用いてフェッチを実行するように構成されており、例えば、ストアデータバッファ５０−０〜５０−ｎに保持されているストアデータを、当該ストアデータを用いるストア命令よりも後続のフェッチ命令が使用する場合には、当該ストア命令実行前に、ストアデータバッファ５０−０〜５０−ｎから当該ストアデータをストアフェッチバイパス７１へ投入する。
【００５２】
キャンセル部８０は、ストア命令の実行をキャンセルする事象が発生した場合、ストアポート３０−０〜３０−ｎに保持されたストア命令をキャンセル（削除）するものである。
図２（ａ），（ｂ）はキャンセル部８０によるストア命令実行のキャンセルを説明するための図であり、図２（ａ）はストアポート３０−０〜３０−ｎ（ここではｎ＝４）におけるキャンセルを説明するための図、図２（ｂ）はストアデータバッファ５０−０〜５０−ｎ（ここではｎ＝４）におけるキャンセルを説明するための図である。なお、図２（ａ）において、ストアポート３０−０〜３０−ｎのＡＤＲＳフラグ３０ｂ，ＬＥＮＧＴＨフラグ３０ｃ，ＰＳＴＶフラグ３０ｅは図の簡略化のためここでは省略している。
【００５３】
図２（ａ）に示すように、ストア命令の実行をキャンセルする事象が発生した場合には、キャンセル部８０は、ストアポート３０−０〜３０−４において、ストア命令が保持され［つまり、ＶＡＬＩＤフラグ３０ａがオン（ＯＮ）状態であり］、ストアデータが対応するストアデータバッファに保持され［つまり、ＲＳＴＤＶフラグ３０ｄがオン（ＯＮ）状態であり］、且つＲＥＡＤＹフラグ３０ｆがオン（ＯＮ）状態であるストアポート（ここでは、ストアポート３０−２）についてはキャンセルせず、また、ストア命令とストアデータとがともに保持されていないストアポート（ここでは、ストアポート３０−３）についてもキャンセルせず、これら以外のストアポート（ここでは、ストアポート３０−０，３０−１，３０−４）に対してはすべてキャンセルを実行し、これらのストアポート３０−０，３０−１，３０−４の全フラグ３０ａ〜３０ｆをオフ状態にリセットするとともに、ストア命令が保持されている場合にはストア命令を削除する。
【００５４】
一方、図２（ｂ）に示すように、ストアデータバッファ５０−０〜５０−ｎにおいては、キャンセル部８０は、図２（ａ）に示すストアポート３０−０，３０−１，３０−４に対応するストアデータバッファ５０−０，５０−１，５０−４について、これらストアデータバッファ５０−０，５０−１，５０−４にストアデータが保持されていれば、保持されているストアデータをキャンセル（削除）する。
【００５５】
したがって、ストアデータがストアデータバッファ５０−０〜５０−ｎに対して発行された後であって、当該ストアデータに対応するストア命令がストアポート３０−０〜３０−ｎに対して発行される前［つまり、図２（ａ），（ｂ）中のストアポート３０−４及びストアデータバッファ５０−４の状態］において、ストア命令がキャンセルされる場合には、キャンセル部８０は、ストアデータバッファ５０−４に保持されたストアデータを削除するとともに、対応するストアポート３０−４のＲＳＴＤＶフラグ３０ｆをオフ状態にリセット（設定）するようになっている。
【００５６】
リセット部８１は、命令処理部１０から発行されたストア命令がストアポート３０−０〜３０−ｎに保持された時点で当該ストアポート３０−０〜３０−ｎのＲＳＴＤＶフラグ３０ｄをオフ状態に設定するものである。
抑止部８２は、ストアポート３０−０〜３０−ｎに命令処理部１０から発行されたストア命令が保持されるよりも先に、命令処理部１０により演算レジスタ２２から発行されたストアデータがストアデータバッファ５０−０〜５０−ｎに保持された場合に、当該ストア命令がストアポート３０−０〜３０−ｎに保持された時点でリセット部８１がＲＳＴＤＶフラグ３０ｄをオフ状態に設定することを抑止して、ＲＳＴＤＶフラグ３０ｄのオン状態を維持するものである。
【００５７】
上述したように、本情報処理装置１では、命令処理部１０が、演算器２０によるアドレス計算に用いられるアドレスレジスタ２１が確定したらストア命令をストアポート３０−０〜３０−ｎに対して発行する一方、ストア命令で使用するストアデータとしての演算結果が保持された演算レジスタ２２が確定したら、当該ストア命令のストアポート３０−０〜３０−ｎへの発行に関係なく（発行状況に関わらず）、当該演算結果をストアデータとして演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる。つまり、本情報処理装置１では、ストア命令のストアポート３０−０〜３０−ｎに対する発行とストアデータ（演算結果）のストアデータバッファ５０−０〜５０−ｎへの発行とが、アウトオブオーダーで実行されるようになっている。
【００５８】
このように、本情報処理装置１では、ストア命令がストアポート３０−０〜３０−ｎに保持されるより先にストアデータがストアデータバッファ５０−０〜５０−ｎに保持される場合があるため、このような場合に、ストア命令に使用されるストアデータがストアデータバッファ５０−０〜５０−ｎに既に保持されているにも関わらず、ストア命令がストアポート３０−０〜３０−ｎに保持された時点でリセット部８１によりＲＳＴＤＶフラグ３０ｄがオフ状態にリセットされることを抑止すべく、抑止部８２がそなえられている。
【００５９】
〔１−２〕ストア命令制御方法（情報処理装置１の動作）について
次に、本発明の第１実施形態としてのストア命令制御方法（情報処理装置１の動作）について説明する。
〔１−２−１〕ストアデータの発行がストア命令の発行よりも先に実行される場合について
図３は本発明の第１実施形態としてのストア命令制御方法（ストアデータの発行がストア命令の発行よりも先に実行される場合）の手順を示すタイムチャートである。なお、図３においてＴ１〜Ｔ１２は時間単位、つまり、情報処理装置１における制御クロック単位を示すものである。
【００６０】
図３に示すように、情報処理装置１では、まず、命令処理部１０が命令キャッシュ（図示せず）に保持された命令を解読する（図３のＴ１参照）。このとき、命令処理部１０が解読した命令がストア命令（ストア要求）であれば、命令処理部１０は、解読したストア命令とともにストアデータ幅（図中ＬＥＮＧＴＨと表記），ストアデータの右詰，左詰を示すアライン指示情報（図中ＡＬＩＧＮと表記），演算器２０によるストア先のアドレス計算に用いられるアドレスレジスタ２１の番号（値），及び当該ストア命令によってストアすべきストアデータが保持される演算レジスタ２２の番号（値）を取得する。
【００６１】
ここで、命令解読後、演算器２０によるストアアドレスの計算に用いられるアドレスレジスタ２１が確定する（つまり、アドレスレジスタ２１の番号が指定され、当該アドレスレジスタ２１が使用できる状況になる）前に、演算レジスタ２２が確定する（つまり、指定された演算レジスタ２２にストアデータとして使用される演算結果が保持される）と（図３のＴ２参照）、命令処理部１０は、ストア命令のストアポート３０−０〜３０−ｎ（ここではストアポート３０−０）への発行状況（発行したか否か）に関わらず、演算レジスタ２２から演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎ（ここではストアデータバッファ５０−０）に対して発行させる（図３のＴ３参照）。なお、アドレスレジスタ２１の確定に時間を要するのは、当該ストア命令以前に発行された処理命令によってアドレスレジスタ２１が占有されていることなどによる。
【００６２】
このとき、命令処理部１０は、演算レジスタ２２から発行されるストアデータに付随してアライン情報（ストアデータ幅及びアライン指示情報）が発行されるようにするとともに、当該アライン情報をアライン部４０で使用するか否かを示す使用／不使用情報（ＣＯＤＥ−ＶＡＬＩＤ）がストアデータに付随して発行されるようする（図３のＴ３参照）。なお、命令処理部１０は、演算レジスタ２２からのストアデータの発行が、ストア命令が発行されるより先に実行される場合には、使用／不使用情報が使用に設定されて発行されるようにする。なお、演算レジスタ２２は、ストアデータの発行が完了すると解放されて他の処理による利用が可能になる。
【００６３】
そして、アライン情報選択部４１が、アライン部４０で使用するアライン情報を、使用／不使用情報に基づいて、ストア命令とともに発行されるアライン情報とストアデータに付随して発行されるアライン情報とから選択するが、ここでは使用／不使用情報が使用に設定されているため、アライン情報選択部４１は、ストアデータに付随して発行されるアライン情報を選択し、この選択されたアライン情報を用いてアライン部４０が演算レジスタ２２から発行されたストアデータをアラインする（図３のＴ４参照）。
【００６４】
次いで、アラインされたストアデータは、ストアデータバッファ５０−０に保持されて、ストアポート３０−０のＲＳＴＤＶフラグがオン状態に設定される（図３のＴ５参照）。
一方、演算器２０によるストアアドレスの計算に用いられるアドレスレジスタ２１が確定すると（図３のＴ３参照）、演算器２０が、アドレスレジスタ２１を用いてストアアドレスの計算を実行する（図３のＴ４参照）。なお、演算器２０の計算結果として得られたストアアドレスはアドレスレジスタ２１に一旦保持される。
【００６５】
このとき、命令処理部１０は、解読したストア命令をストアデータ幅及びアライン指示情報とともにストアポート３０−０に対して発行する（図３のＴ４参照）。
そして、演算器２０により算出されアドレスレジスタ２１に保持されたストアアドレスがストアポート３０−０に対して発行される（図３のＴ５参照）。ここで、当該ストアアドレスは少なくともストアポート３０−０〜３０−ｎをそなえる記憶処理装置のパイプラインに投入され、パイプラインを流れることで、変換ルックアサイドバッファ（ＴＬＢ：Translation Lookaside Buffer；図示せず）を用いて実際のストア先である記憶領域（ここではキャッシュメモリ６０）上のアドレス（物理アドレス；以下、アドレスレジスタ２１に保持されたストアアドレスと区別しない場合には、単にストアアドレスという）に変換されて、変換されたストアアドレスがストアポート３０−０に発行される。
【００６６】
なお、アドレスレジスタ２１は、ストアアドレスの発行が完了すると解放されて他の処理による利用が可能になる。
次に、ストアポート３０−０がストア命令，ストアアドレス（物理アドレス），及びストアデータ幅を受け取ると、ＶＡＬＩＤフラグ３０ａ，ＡＤＲＳフラグ３０ｂ，及びＬＥＮＧＴＨフラグ３０ｃがオン状態に設定される（図３のＴ６参照）。
【００６７】
このとき、対応するストアデータバッファ５０−０には、ストアデータが既に保持されているため、抑止部８２が、リセット部８１によってＲＳＴＤＶフラグ３０ｄをオフ状態に設定させることなく、リセット部８１によるリセットを抑止してＲＳＴＤＶフラグ３０ｄをオン状態に維持する（図３のＴ６参照）。
なお、ストアポート３０−０がストア命令とともにストアデータ幅を受け取ると、命令処理部１０は、当該ストア命令の後続のフェッチ命令が当該ストア命令で使用するストアデータを使用するものであるか否か（つまり、当該ストア命令のストア対象領域を使用しているか否か）をストアデータ幅に基づいて判断する（図示せず）。ここで、後続のフェッチ命令が当該ストア命令が使用するストアデータを使用するものであれば、命令処理部１０は、かかるフェッチ命令の実行を当該ストア命令の実行完了まで抑止するか、あるいは、当該ストア命令が使用するストアデータがストアデータバッファ５０−０〜５０−ｎに保持されたら、ストアデータバッファ５０−０〜５０−ｎからストアデータを取り出してキャッシュメモリ６０への書き込みをバイパスしてフェッチデータバス７１に投入することにより、かかるフェッチ命令を早期に完了させる。
【００６８】
ところで、ストアポート３０−０にストアアドレスが保持されると（図３のＴ６参照）、命令処理部１０は、ストア対象領域のページ属性を取り出し、例外の判定を行なう（図３のＴ７参照）。つまり、命令処理部１０は、ストア対象領域としてのストアアドレスが書き込み（ストア）可能か否かを判断し、ストア可能であれば例外無しをストアポート３０−０へ通知する一方、ストア不可能であれば例外有りをストアポート３０−０へ通知して当該ストア命令の実行をキャンセルする。
【００６９】
ここでは、例外判定の結果が例外無しであるため、ストアポート３０−０のＰＳＴＶフラグ３０ｅがオン状態に設定される。
次いで、命令処理部１０は、ストアポート３０−０にストア命令，ストアアドレス，ストアデータの幅が保持され、当該ストア命令の例外判定の結果が例外無しであり、ストアデータがストアデータバッファ５０−０に保持された状態（すなわち、ＶＡＬＩＤフラグ３０ａ，ＡＤＲＳフラグ３０ｂ，ＬＥＮＧＴＨフラグ３０ｃ，ＰＳＴＶフラグ３０ｅ，及びＲＳＴＤＶフラグ３０ｄのすべてがオン状態）になり、且つ、当該ストア命令に先行する命令がすべて完了したら、当該ストア命令が実行可能な状態であると判断して、ストアポート３０−０に対してストア許可を通知する（図３のＴ１０参照）。
【００７０】
なお、このとき、ストアポート３０−０のＲＥＡＤＹフラグ３０ｆはオン状態に設定される。
そして、ストアポート３０−０のＲＥＡＤＹフラグ３０ｆがオン状態に設定されると（図３のＴ１０参照）、ストア命令が実行され（図３のＴ１１参照）、ストアポート３０−０に保持されたストアアドレスに基づいて、キャッシュメモリ６０における所定アドレス上に、ストアデータバッファ５０−０に保持されたストアデータが書き込まれてストア命令の処理が完了する（図３のＴ１２参照）。
【００７１】
〔１−２−２〕ストアデータの発行がストア命令の発行後に実行される場合について
図４は本発明の第１実施形態としてのストア命令制御方法（ストアデータの発行がストア命令の発行後に実行される場合）の手順を示すタイムチャートである。なお、図４においてＴ１〜Ｔ１２は時間単位、つまり、情報処理装置１における制御クロック単位を示すものである。
【００７２】
上述したように、本発明の第１実施形態としての情報処理装置１（図１参照）では、命令処理部１０によるストア命令のストアポート３０−０〜３０−ｎに対する発行と、ストアデータの演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対する発行との発行順序を、アウトオブオーダーで実行することができる。以降、図４を参照しながら命令処理部１０によるストアデータの発行がストア命令の発行後に実行される場合について説明するが、ここでは、図３を参照しながら上述した、ストアデータの発行がストア命令の発行より先に実行される場合とは異なる動作を中心に説明し、重複する動作についてはその説明を省略する。
【００７３】
図４に示す例では、命令処理部１０による命令解読（図４のＴ１参照）後、まずアドレスレジスタ２１が確定する（図４のＴ２参照）。その後、確定したアドレスレジスタ２１を用いて演算器２０がアドレス計算を実行するとともに、命令処理部１０がストアポート３０−０〜３０−ｎ（ここでは、ストアポート３０−０）に対してストア命令を発行するのと同時に、演算レジスタ２２が確定する（図４のＴ３参照）。
【００７４】
そして、命令処理部１０は、演算レジスタ２２からストアデータをストアデータバッファ５０−０〜５０−ｎ（ここでは、ストアデータバッファ５０−０）に対して発行するとともに、アライン情報及び使用／不使用情報（ＣＯＤＥ−ＶＡＬＩＤ）を発行させるが、ここでは、ストアデータの発行が実行されるよりも前にストア命令の発行が実行されているため、命令処理部１０は、使用／不使用情報を不使用に設定して発行させる（図４のＴ４参照）。
【００７５】
したがって、アライン情報選択部４１は、使用／不使用情報に基づいてストア命令に付随して発行されたアライン情報を選択し、アライン部は選択されたストア命令に付随したアライン情報を用いて、ストアデータをアラインする（図４のＴ５参照）。
一方、ストアポート３０−０にストア命令が保持されると、ここでは、ストアデータがストアデータバッファ５０−０に保持されるよりも先にストア命令がストアポート３０−０に保持されるため、抑止部８２がリセット部８１によるＲＳＴＤＶフラグ３０ｄのリセットを抑止することなく、リセット部８１がＲＳＴＤＶフラグ３０ｄを一旦オフ状態に設定（リセット）する（図４のＴ５参照）。
【００７６】
そして、その後ストアデータがストアデータバッファ５０−０に保持されると、ＲＳＴＤＶフラグ３０ｄがオン状態に設定される（図４のＴ６参照）。
なお、例外判定後（図４のＴ６参照）、ストア命令が実行されてストアデータがキャッシュメモリメモリ６０に格納されるまでの動作（図４のＴ７〜Ｔ１２参照）は、図３を参照しながら上述した場合と同様である。
【００７７】
〔１−３〕本発明の第１実施形態としての情報処理装置１及びストア命令制御方法による効果について
このように、本発明の第１実施形態としての情報処理装置１及びストア命令制御方法によれば、命令処理部１０が、ストア命令のストアポート３０−０〜３０−ｎへの発行状況に関わらず、演算レジスタ２２が確定すると演算レジスタ２２から演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎに対して発行させ、さらに当該ストアデータに付随してアライン情報及び使用／不使用情報を発行させてアライン部４０によるアラインが可能に構成されるとともに、ストア命令がストアポート３０−０〜３０−ｎに保持されるよりも先にストアデータがストアデータバッファ５０−０〜５０−ｎに保持された場合には、抑止部８２が、ストア命令がストアポート３０−０〜３０−ｎに保持された時点で、リセット部８１がＲＳＴＤＶフラグをオフ状態に設定することを抑止して、ＲＳＴＤＶフラグをオン状態に維持するため、ストア命令をストアポート３０−０〜３０−ｎに発行するよりも先にストアデータをストアデータバッファ５０−０〜５０−ｎに対して発行させた場合でも、当該ストア命令を確実に実行することができる。
【００７８】
したがって、上記図７に示す従来の情報処理装置１００のように、演算レジスタ２２が確定しているにも関わらず、演算レジスタ２２からのストアデータの発行を、ストア命令の発行を確認する（図８のＴ７参照）まで待たなくてもよくなり、演算レジスタ２２が確定した時点ですぐに演算レジスタ２２からストアデータ（演算結果）を発行させることができるため（図３のＴ３及び図４のＴ４参照）、従来の情報処理装置１００よりも演算レジスタ２２をより早期に（図３に示す例では３制御クロック単位分、図４に示す例では２制御クロック単位分早く）解放して、演算レジスタ２２を他の処理に割り当てることが可能になる。つまり、演算レジスタ２２の使用効率を向上させることができる。
【００７９】
また、上記図３，図４では、命令処理部１０がストア許可を通知するタイミングが、上記図８に示す従来の情報処理装置１００におけるタイミングと同じタイミング（図３，図４のＴ１０及び図８のＴ１０参照）である場合を例に挙げて説明したが、本発明の第１実施形態としての情報処理装置１及びストア命令制御方法によれば、当該ストア命令に先行する命令が完了するタイミングによっては、ストア許可を通知できるタイミングを早める（図３に示す例ではＴ８のタイミング、図４に示す例ではＴ９のタイミングまで早める）ことができる。
【００８０】
つまり、本発明の第１実施形態としての情報処理装置１及びストア命令制御方法では、ストア命令の発行とストアデータの発行との発行順序をアウトオブオーダーに実行することができるため、アドレスレジスタ２１と演算レジスタ２２とが確定するタイミングが早ければ早いほど、ストア命令の実行タイミングを前倒しすることが可能になる。したがって、ストア許可の発行タイミング（ストア命令の実行タイミング）によっては、情報処理装置１の処理性能を向上させることが可能になる。
【００８１】
なお、ストア命令の実行タイミングが最も早くなるのは、命令処理部１０による命令解読後すぐに（つまり、図３，図４のＴ２のタイミングで）、アドレスレジスタ２１と演算レジスタ２２とが共に確定した場合であり、この場合には、ストア命令の実行タイミングを図３，図４のＴ９のタイミングに前倒しすることが可能になり、情報処理装置１の処理性能を向上させることが可能になる。
【００８２】
また、本発明の第１実施形態としての情報処理装置１及びストア命令制御方法によれば、上述したように、命令処理部１０が、ストア命令のストアポート３０−０〜３０−ｎへの発行状況に関わらず、演算レジスタ２２が確定すると演算レジスタ２２から演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎに対して発行させ、ストア命令がストアポート３０−０〜３０−ｎに保持されるよりも先にストアデータがストアデータバッファ５０−０〜５０−ｎに保持された場合には、抑止部８２が、ストア命令がストアポート３０−０〜３０−ｎに保持された時点で、リセット部８１がＲＳＴＤＶフラグをオフ状態に設定することを抑止してＲＳＴＤＶフラグをオン状態に維持するため、当該ストア命令より後続のフェッチ命令が、当該ストア命令に使用するストアデータをフェッチする場合であっても、命令処理部１０は、かかる後続のフェッチ命令をストアフェッチバイパス７１を用いて確実に実行することができる。
【００８３】
さらに、本発明の第１実施形態としての情報処理装置１及びストア命令制御方法では、ストアデータがストアデータバッファ５０−０〜５０−ｎに対して発行された後であって、当該ストアデータに対応するストア命令がストアポート３０−０〜３０−ｎに対して発行される前において、ストア命令がキャンセルされる事象が発生した場合［図２（ａ）のストアポート３０−４及び図２（ｂ）のストアデータバッファ５０−４参照］には、キャンセル部８０が、ストアデータバッファ５０−０〜５０−ｎ（ここではストアデータバッファ５０−４）に保持されたストアデータを削除するとともに、対応するストアポート３０−０〜３０−ｎ（ここではストアポート３０−４）のＲＳＴＤＶフラグ３０ｄをオフ状態に設定する。
【００８４】
これにより、キャンセル部８０によるキャンセル実行後に当該ストアポート３０−４に対してストアデータがストアデータバッファ５０−４に保持されるよりも前にストア命令が保持されても、対応するストアデータバッファ５０−４のＲＳＴＤＶフラグ３０ｄはオフ状態に設定されているため、キャンセル部８０によるキャンセル実行後のストア命令を確実に実行することができる。つまり、ストアポート３０−４のＲＳＴＤＶフラグ３０ｄがオン状態のままになり、ストアデータがストアデータバッファ５０−４に保持されていると誤認して、キャンセル部８０によるキャンセル実行後のストア命令が誤って実行されることを防止することができる。
【００８５】
〔２〕本発明の第２実施形態について
次に、本発明の第２実施形態について説明すると、図５は本発明の第２実施形態としての情報処理装置１′の構成を示すブロック図である。なお、図５において既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示している。
図５に示すように、本発明の第２実施形態としての情報処理装置１′では、ストア命令の発行とストアデータの発行との発行順序を、ストア命令の発行が必ず先行するインオーダーの実行（第１の態様）と、ストアデータの発行をストア命令の発行状況に関わらず実行するアウトオブオーダーの実行（第２の態様）とで切り替えるべく、切替部８３がそなえられている点を除いては、上記図１に示す第１実施形態の情報処理装置１と同様に構成されている。したがって、ここでは上記第１実施形態の情報処理装置１と共通部分については、その詳細な説明を省略する。
【００８６】
本発明の第２実施形態としての情報処理装置１′は、切替部８３をそなえて構成されており、この切替部８３は、命令処理部１０によるストア命令のストアポート３０−０〜３０−ｎへの発行をストアデータの演算レジスタ２２からのストアデータバッファ５０−０〜５０−ｎへの発行に対して常に先行させるインオーダーの処理（第１の態様）と、演算結果が保持された演算レジスタ２２が確定すると、ストア命令の発行に関係なく（発行状態に関わらず）演算レジスタ２２から演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎに対して発行させるアウトオブオーダーの処理（第２の態様）とを選択的に切り替えるものである。なお、切替部８３は切替レジスタ（Operation Status Register；図示せず）によりインオーダーの処理とアウトオブオーダーの処理とを切り替え可能に構成されている。
【００８７】
切替部８３の切り替えによりインオーダーの処理を実行する、つまり、切替部８３によりインオーダーの処理を選択する場合には、命令処理部１０は、ストア命令のストアポート３０−０〜３０−ｎに対する発行が完了するまでは、演算レジスタ２２からのストアデータの発行をインターロックするとともに、ストアポート３０−０〜３０−ｎにストア命令が保持されると、リセット部８１によりＲＳＴＤＶフラグ３０ｄをオフ状態に設定（リセット）させる。
【００８８】
このとき、命令処理部１０は、ストアデータの発行とともにアライン情報及び使用／不使用情報を発行させるが、使用／不使用情報を不使用に設定する。
なお、インオーダーの処理を実行する場合には、命令処理部１０が、ストアデータの発行とともにアライン情報及び使用／不使用情報を発行させないように構成してもよい。
一方、切替部８３の切り替えによりアウトオブオーダーの処理を実行する、つまり、切替部８３によりアウトオブオーダーの処理を選択する場合には、命令処理部１０は、演算レジスタ２２からのストアデータの発行についてのインターロックを常に解除して、ストア命令のストアポート３０−０〜３０−ｎへの発行状況に関わらず、演算レジスタ２２が確定するとストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる。
【００８９】
このとき、命令処理部１０は、該ストアデータに付随してアライン情報及び使用／不使用情報を発行させ、使用／不使用情報を使用に設定する。
また、命令処理部１０により、ストア命令がストアポート３０−０〜３０−ｎに保持されるよりも先にストアデータがストアデータバッファ５０−０〜５０−ｎに保持された場合には、抑止部８２が、ストア命令がストアポート３０−０〜３０−ｎに保持された時点で、リセット部８１がＲＳＴＤＶフラグをオフ状態に設定することを抑止して、ＲＳＴＤＶフラグをオン状態に維持する。
【００９０】
このように、本発明の第２実施形態としての情報処理装置１′によれば、上述した第１実施形態と同様の効果を得ることができるとともに、切替部８３によって、命令処理部１０によるストア命令のストアポート３０−０〜３０−ｎに対する発行と、ストアデータの演算レジスタ２２からのストアデータバッファ５０−０〜５０−ｎに対する発行とを、インオーダーの処理とアウトオブオーダーの処理とで選択的に切り替えることにより、インオーダーの処理時に対するアウトオブオーダーの処理時の性能向上を試験することができる。つまり、切替部８３によって、インオーダーの処理とアウトオブオーダーの処理とを切り替えることにより、演算レジスタ２２が確定したらすぐにストアデータを発行して当該演算レジスタ２２を解放させて他の処理に割り当てることによる演算レジスタ２２の使用効率の向上を確認することができる。
【００９１】
〔３〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、演算レジスタ２２から演算結果をストアデータとしてストアデータバッファ５０−０〜５０−ｎに対して発行させる際に、命令処理部１０が、かかるストアデータとともにアライン情報及び使用／不使用情報を発行させるように構成され、命令処理部１０は、ストア命令をストアポート３０−０〜３０−ｎに対して発行した後に、ストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる場合には、使用／不使用情報を不使用に設定する一方、ストア命令をストアポート３０−０〜３０−ｎに対して発行するよりも先にストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる場合には、使用／不使用情報を使用に設定するように構成したが、本発明はこれに限定されるものではなく、命令処理部１０が、ストア命令をストアポート３０−０〜３０−ｎに対して発行した後に、ストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる場合には、アライン情報及び使用／不使用情報を当該ストアデータとともに発行しないようにする一方、ストア命令をストアポート３０−０〜３０−ｎに対して発行するよりも先にストアデータを演算レジスタ２２からストアデータバッファ５０−０〜５０−ｎに対して発行させる場合には、当該ストアデータとともにアライン情報のみを発行させるようにしてもよい。この場合、アライン部４０が、命令処理部１０によりストアデータとともにアライン情報が発行された場合には、当該アライン情報を使用して、ストア命令に付随したアライン情報を使用しないように構成することにより、アライン情報選択部４１を省くことができ、より簡素な構成でアライン部４０によるアラインが確実に実行できるとともに、ストア命令を確実に実行することができる。
【００９２】
また、上述した実施形態では、アライン部４０が演算レジスタ２２とストアデータバッファ５０−０〜５０−ｎとの間に介装されるように構成したが、本発明はこれに限定されるものではない。図６は本発明の変形例としての情報処理装置１″の構成を示すブロック図である。例えば、この図６に示すように、アライン部４０を、ストアデータバッファ５０−０〜５０−ｎの後段（つまり、ストアデータバッファ５０−０〜５０−ｎとキャッシュメモリ６０との間）に設けるようにしてもよい。この場合には、アライン情報選択部４１を省くことができ、さらに、命令処理部１０がストアデータを演算レジスタ２２から発行させる際に、当該ストアデータとともにアライン情報及び使用／不使用情報を発行することなく、ストアデータバッファ５０−０〜５０−ｎに保持されたストアデータをキャッシュメモリ６０に格納する際に、アライン部４０が、ストア命令に付随して発行されたアライン情報を用いて当該ストアデータをアラインするように構成すればよい。
【００９３】
さらに、上述した実施形態では、ストア命令の実行よるストアデータの格納（書き込む）先をキャッシュメモリ６０としたが、本発明はこれに限定されるものではなく、ストアデータの格納先を情報処理装置１（１′）に接続された外部の記憶装置としても良い。
【００９４】
また、上述した命令処理部１０、アライン部４０、アライン情報選択部４１、キャンセル部８０、リセット部８１、抑止部８２、及び切替部８３としての機能は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（ストア命令制御プログラム）を実行することによって実現される。
そのプログラムは、例えばフレキシブルディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からストア命令制御プログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
【００９５】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。上記ストア命令制御プログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、命令処理部１０、アライン部４０、アライン情報選択部４１、キャンセル部８０、リセット部８１、抑止部８２、及び切替部８３としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００９６】
さらに、本実施形態としての記録媒体としては、上述したフレキシブルディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ，磁気ディスク，光ディスク，光磁気ディスクのほか、ＩＣカード，ＲＯＭカートリッジ，磁気テープ，パンチカード，コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ），外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
【００９７】
〔４〕付記
（付記１）
命令を解読して処理命令を発行する命令処理部と、
該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、
該演算器による演算結果を保持する演算レジスタと、
前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、
前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、
前記命令処理部が、前記ストア命令に応じて、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させるように構成され、
前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成されるとともに、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部と、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部とをさらにそなえて構成されていることを特徴とする、情報処理装置。
【００９８】
（付記２）
命令を解読して処理命令を発行する命令処理部と、
該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、
該演算器による演算結果を保持する演算レジスタと、
前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、
前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファと、
前記ストア命令の前記ストアポートへの発行を前記演算結果の前記ストアデータバッファへの発行に対して常に先行させる第１の態様と、前記演算結果が保持された前記演算レジスタが確定すると前記ストア命令の発行に関係なく当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる第２の態様とを選択的に切り替える切替部とをそなえ、
前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成されるとともに、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部と、
前記切替部により前記第２の態様を選択することによって、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部とをさらにそなえて構成されていることを特徴とする、情報処理装置。
【００９９】
（付記３）
前記命令処理部が、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、当該演算結果とともに当該演算結果のアラインに必要なアライン情報を発行するように構成され、
前記命令処理部から発行された前記アライン情報もしくは前記ストア命令に含まれるアライン情報に基づいて、前記演算レジスタから発行された前記演算結果をアラインするアライン部をさらにそなえて構成されていることを特徴とする、付記１又は２記載の情報処理装置。
【０１００】
（付記４）
前記演算レジスタから前記ストアデータとして発行された前記演算結果をアラインするアライン部をそなえ、
前記命令処理部が、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともにアラインに必要なアライン情報と当該アライン情報を前記アライン部で使用するか否かを示す使用／不使用情報とを発行するように構成され、
前記アライン部で使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択するアライン情報選択部をさらにそなえて構成されていることを特徴とする、付記１又は２記載の情報処理装置。
【０１０１】
（付記５）
前記命令処理部が、
前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、
前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することを特徴とする、付記４記載の情報処理装置。
【０１０２】
（付記６）
前記ストア命令の実行をキャンセルするキャンセル部をそなえ、
該キャンセル部が、前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータが削除されるとともに、当該ストアデータに対応する前記ストアデータ保持フラグがオフ状態に設定されることを特徴とする、付記１〜５のいずれか１項に記載の情報処理装置。
【０１０３】
（付記７）
前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、
前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをそなえ、
前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータが前記ストアデータバッファから前記ストアフェッチバイパスへ投入されることを特徴とする、付記１〜６のいずれか１項に記載の情報処理装置。
【０１０４】
（付記８）
前記演算器が、前記命令処理部により発行された前記ストア命令に基づいて前記演算結果をストアする前記所定の記憶領域上のストアアドレスを算出するとともに、
前記演算器によるストアアドレスの算出に用いられるアドレスレジスタをさらにそなえ、
前記命令処理部は、前記アドレスレジスタが確定すると前記ストア命令を前記ストアポートに発行することを特徴とする、付記１〜７のいずれか１項に記載の情報処理装置。
【０１０５】
（付記９）
命令を解読して処理命令を発行する命令処理部と、該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記命令処理部から発行された前記ストア命令の実行を制御するストア命令制御方法であって、
前記命令処理部により、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させ、
前記ストアデータバッファに前記ストアデータが保持されるよりも先に、前記ストア命令が前記ストアポートに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定する一方、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持することを特徴とする、ストア命令制御方法。
【０１０６】
（付記１０）
命令を解読して処理命令を発行する命令処理部と、該命令処理部から前記処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記命令処理部から前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファと、前記ストア命令の前記ストアポートへの発行を前記演算結果の前記ストアデータバッファへの発行に対して常に先行させる第１の態様と前記演算結果が保持された前記演算レジスタが確定すると前記ストア命令の発行に関係なく当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる第２の態様とを選択的に切り替える切替部とをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記命令処理部から発行された前記ストア命令の実行を制御するストア命令制御方法であって、
前記命令処理部により、前記ストアデータバッファに前記ストアデータが保持されるよりも先に、前記ストア命令が前記ストアポートに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定する一方、
前記切替部により前記第２の態様を選択することによって、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合には、前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持することを特徴とする、ストア命令制御方法
（付記１１）
前記命令処理部により、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、当該演算結果とともに当該演算結果のアラインに必要なアライン情報を発行することを特徴とする、付記９又は１０記載のストア命令制御方法。
【０１０７】
（付記１２）
前記命令処理部により、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる際に、当該演算結果とともに当該演算結果のアラインに必要なアライン情報、及び当該アライン情報を前記アラインに際して使用するか否かを示す使用／不使用情報とを発行し、
前記アラインに際して使用する前記アライン情報を、前記使用／不使用情報に基づいて、前記ストアデータとともに発行された前記アライン情報と、前記ストア命令に含まれる前記アライン情報とから選択することを特徴とする、付記９又は１０記載のストア命令制御方法。
【０１０８】
（付記１３）
前記命令処理部により、前記ストア命令を前記ストアポートに対して発行した後に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を不使用に設定する一方、
前記命令処理部により、前記ストア命令を前記ストアポートに対して発行するよりも先に、前記演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる場合には、前記使用／不使用情報を使用に設定することを特徴とする、付記１２記載のストア命令制御方法。
【０１０９】
（付記１４）
前記ストアデータが前記ストアデータバッファに対して発行された後であって、当該ストアデータに対応する前記ストア命令が前記ストアポートに対して発行される前に、前記ストア命令をキャンセルする場合には、前記ストアデータバッファに保持された当該ストアデータを削除するとともに、当該ストアデータに対応する前記ストアデータ保持フラグをオフ状態に設定することを特徴とする、付記９〜１３のいずれか１項に記載のストア命令制御方法。
【０１１０】
（付記１５）
前記命令処理部からフェッチ命令が発行された際に当該フェッチ命令のフェッチ対象であるデータを前記所定の記憶領域から前記演算器もしくは前記演算レジスタへ投入するためのフェッチバスと、前記ストアデータバッファに保持された前記ストアデータを、前記ストアデータバッファから前記フェッチバスへ直接投入するためのストアフェッチバイパスとをさらにそなえて構成された前記情報処理装置において、前記ストアデータバッファに保持されている前記ストアデータを前記フェッチ命令が使用する場合には、当該ストアデータを前記ストアデータバッファから前記ストアフェッチバイパスへ投入することを特徴とする、付記９〜１４のいずれか１項に記載のストア命令制御方法。
【０１１１】
（付記１６）
前記演算結果をストアする前記所定の記憶領域上のストアアドレスを算出する際に用いられるアドレスレジスタが確定すると、前記命令処理部により前記ストア命令を前記ストアポートに発行することを特徴とする、付記９〜１５のいずれか１項に記載のストア命令制御方法。
【０１１２】
（付記１７）
処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記ストア命令の実行を制御する機能をコンピュータに実現させるためのストア命令制御プログラムであって、
命令を解読して前記処理命令を発行するとともに、前記処理命令として発行した前記ストア命令に応じて、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる命令処理部、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部、及び、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部として、前記コンピュータを機能させることを特徴とする、ストア命令制御プログラム。
【０１１３】
（付記１８）
処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記ストア命令の実行を制御する機能をコンピュータに実現させるためのストア命令制御プログラムを記録したコンピュータ読取可能な記録媒体であって、
前記ストア命令制御プログラムが、
命令を解読して前記処理命令を発行するとともに、前記処理命令として発行した前記ストア命令に応じて、前記演算結果が保持された前記演算レジスタが確定すると当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる命令処理部、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部、及び、
前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部として、前記コンピュータを機能させることを特徴とする、ストア命令制御プログラムを記録したコンピュータ読取可能な記録媒体。
【０１１４】
（付記１９）
処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記ストア命令の実行を制御する機能をコンピュータに実現させるためのストア命令制御プログラムであって、
命令を解読して前記処理命令を発行する命令処理部、
前記ストア命令の前記ストアポートへの発行を前記演算結果の前記ストアデータバッファへの発行に対して常に先行させる第１の態様と、前記演算結果が保持された前記演算レジスタが確定すると前記ストア命令の発行に関係なく当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる第２の態様とを選択的に切り替える切替部、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部、及び、
前記切替部により前記第２の態様を選択することによって、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部として、前記コンピュータを機能させることを特徴とする、ストア命令制御プログラム。
【０１１５】
（付記２０）
処理命令として発行された演算命令に応じて演算を実行する演算器と、該演算器による演算結果を保持する演算レジスタと、前記処理命令として発行され、前記演算レジスタに保持された前記演算結果を所定の記憶領域にストアするためのストア命令を保持するストアポートと、前記演算レジスタからストアデータとして発行された前記演算結果を一時的に保持するストアデータバッファとをそなえ、前記ストアポートが、前記ストアデータバッファに前記ストア命令に対応する前記ストアデータが保持された場合にオン状態に設定されるストアデータ保持フラグを保持するように構成された情報処理装置において、前記ストア命令の実行を制御する機能をコンピュータに実現させるためのストア命令制御プログラムを記録したコンピュータ読取可能な記録媒体であって、
前記ストア命令制御プログラムが、
命令を解読して前記処理命令を発行する命令処理部、
前記ストア命令の前記ストアポートへの発行を前記演算結果の前記ストアデータバッファへの発行に対して常に先行させる第１の態様と、前記演算結果が保持された前記演算レジスタが確定すると前記ストア命令の発行に関係なく当該演算結果を前記ストアデータとして前記演算レジスタから前記ストアデータバッファに対して発行させる第２の態様とを選択的に切り替える切替部、
前記ストア命令が前記ストアポートに保持された時点で前記ストアデータ保持フラグをオフ状態に設定するリセット部、及び、
前記切替部により前記第２の態様を選択することによって、前記ストアポートに前記ストア命令が保持されるよりも先に、前記ストアデータが前記ストアデータバッファに保持された場合に、前記ストア命令が前記ストアポートに保持された時点で前記リセット部が前記ストアデータ保持フラグをオフ状態に設定することを抑止して、前記ストアデータ保持フラグのオン状態を維持する抑止部として、前記コンピュータを機能させることを特徴とする、ストア命令制御プログラムを記録したコンピュータ読取可能な記録媒体。
【図面の簡単な説明】
【０１１６】
【図１】本発明の第１実施形態としての情報処理装置の構成を示すブロック図である。
【図２】本発明の第１実施形態としての情報処理装置のキャンセル部によるキャンセルを説明するための図であり、（ａ）はストアポートにおけるキャンセルを説明するための図、（ｂ）はストアデータバッファにおけるキャンセルを説明するための図である。
【図３】本発明の第１実施形態としてのストア命令制御方法の手順を説明するためのタイムチャートである。
【図４】本発明の第１実施形態としてのストア命令制御方法の手順を説明するためのタイムチャートである。
【図５】本発明の第２実施形態としての情報処理装置の構成を示すブロック図である。
【図６】本発明の変形例としての情報処理装置の構成を示すブロック図である。
【図７】従来の情報処理装置の構成を示すブロック図である。
【図８】従来のストア命令制御方法の手順を説明するためのタイムチャートである。
【符号の説明】
【０１１７】
１，１′，１″，１００  情報処理装置
１０  命令処理部
２０  演算器
２１  アドレスレジスタ
２２  演算レジスタ
３０−０〜３０−ｎ  ストアポート
３０ａ  ＶＡＬＩＤフラグ
３０ｂ  ＡＤＲＳフラグ
３０ｃ  ＬＥＮＧＴＨフラグ
３０ｄ  ＲＳＴＤＶフラグ（ストアデータ保持フラグ）
３０ｅ  ＰＳＴＶフラグ
３０ｆ  ＲＥＡＤＹフラグ
４０  アライン部
４１  アライン情報選択部
５０−０〜５０−ｎ  ストアデータバッファ
６０  キャッシュメモリ（記憶領域）
７０  フェッチバス
７１  ストアフェッチバイパス
８０  キャンセル部
８１  リセット部
８２  抑止部
８３  切替部
【図１】
2006040143.tif 000003
【図２】
2006040143.tif 000004
【図３】
2006040143.tif 000005
【図４】
2006040143.tif 000006
【図５】
2006040143.tif 000007
【図６】
2006040143.tif 000008
【図７】
2006040143.tif 000009
【図８】
2006040143.tif 000010