(57)【特許請求の範囲】
【請求項１】
ストア命令を記憶する複数の記憶手段と、
前記複数の記憶手段への前記ストア命令の書き込み及び前記複数の記憶手段からの前記ストア命令の読み出しを制御する記憶制御手段とを有しており、
前記記憶制御手段は、先行するストア命令にフェッチバイパス対象となる範囲を示す識別子を付与し、前記識別子に基づいて前記複数の記憶手段のうちストアフェッチバイパス対象となるストア命令を含む記憶手段を選択して、ストアフェッチバイパス対象としたフェッチ要求を処理することを特徴とする記憶制御装置。
【請求項２】
複数の記憶手段へのストア命令の記憶を制御する記憶制御方法において、
先行するストア命令にフェッチバイパス対象となる範囲を示す識別子を付与し、
前記識別子に基づいて前記複数の記憶手段のうちストアフェッチバイパス対象となるストア命令を含む記憶手段を選択して、ストアフェッチバイパス対象としたフェッチ要求を処理することを特徴とする記憶制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
【０００２】
本発明は記憶制御装置及び記憶制御方法に係り、特に複数のストアバッファを有し、ストアバッファに対してストア及びフェッチを行なうための記憶制御装置及び記憶制御方法に関する。
【従来の技術】
【０００３】
演算装置には、キャッシュメモリまたは主記憶装置に書き込むべきデータを一時的に保持しておく、ストアバッファを設けたものがある。ストアバッファを設けることにより、キャッシュメモリまたは主記憶装置にデータを書き込む準備ができる前にストア処理を完了することができる。
このような演算装置では、ストアバッファにキャッシュメモリまたは主記憶装置への書き込みが終わっていないストアデータが後続する処理のフェッチ対象となっていることが検出されると、フェッチ対象となるストアバッファからデータを取り出す手段が設けられている。この手段によりストアデータのキャッシュメモリまたは主記憶装置への書き込みを待たずにフェッチ要求を完了させることができる。
【０００４】
このとき、フェッチ要求がストア領域に重なっているかどうかを調べるために、フェッチ要求、ストア要求、各々のアドレスと処理対象とするバイトマークを検査していた。
【発明が解決しようとする課題】
【０００５】
しかるに、装置の処理能力の向上への要求から複数の命令を同時実行するようになってくると、一つの領域に対するストア要求やフェッチ要求が同時に、各々複数発行される状況が発現している。このような状況が発現すると、アドレスとバイトマークだけでフェッチすべきストアバッファを選択しようとしても、各フェッチ要求がすべて同一の領域をフェッチ対象としている場合には、各フェッチ要求毎にそれぞれ異なったストアバッファのデータを必要する場合ある。このため、フェッチ要求毎にどのストアバッファのデータをフェッチすべきかを同時に正確に指し示すことが困難になる。
【０００６】
したがって、同じ記憶領域を操作対象とするストア要求、フェッチ要求が複数存在している状況においては、キャッシュメモリ又は主記憶装置への書き込み待ちで、ストアバッファに残っている先行するストア要求がただ一つになるまで、先行する複数のストア要求を実際に処理して、キャッシュメモリまたは主記憶装置への書き込みが完了するまで待たなければ、フェッチ要求を正しく処理できないなどの問題点があった。
【０００７】
本発明は上記の点に鑑みてなされたものであり、フェッチ要求を正しく処理できる記憶制御装置及び記憶制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、複数の記憶手段にストア命令を書き込む際に、ストア命令にフェッチバイパス対象となる範囲を示す識別子を付与し、識別子に基づいて複数の記憶手段のうちストアフェッチバイパス対象となるストア命令を含む記憶手段を選択して、ストアフェッチバイパス対象としたフェッチ要求を処理することを特徴とする。
【発明の実施の形態】
【０００９】
図１は本発明の一実施例のブロック構成図を示す。
本実施例の演算装置１は、命令ユニット２、ストアユニット３、演算ユニット４から構成される。
【００１０】
命令ユニット２は、命令を解析し、ストアユニット３に必要なデータを要求するとともに、演算ユニット４を制御する。ストアユニット３は、命令ユニット２からの要求に基づいてデータの処理及び管理を行なう。
【００１１】
演算ユニット４は、ストアユニット３からデータが供給され、ストアユニット３からのデータに対して命令ユニット２からの命令に基づいて演算を行なう。演算ユニット４での演算結果は、ストアユニット３に保持される。
【００１２】
次に、ストアユニット３について詳細に説明する。
【００１３】
図２は本発明の一実施例のストアユニットのブロック構成図を示す。
ストアユニット３は、ストアバッファ部１１、キャッシュメモリ１２、ムーブインデータバッファ１３、バイパスデータレジスタ１４、記憶制御部１５、データ選択回路１６から構成される。
【００１４】
ストアバッファ部１１は、ｎ個のストアバッファ１１−１〜１１−ｎから構成され、各々がデータを記憶する。ｎ個のストアバッファ１１−１〜１１−ｎは、命令ユニット２からの命令に基づいてデータがフェッチ、ストアされる。
キャッシュメモリ１２、ムーブインデータバッファ１３、バイパスデータレジスタ１４は、演算ユニット４で用いられるデータを一時的に保持する。
【００１５】
ここで、ストアバッファ１１−１〜１１−ｎについて詳細に説明する。
【００１６】
図３は本発明の一実施例のストアバッファのデータ構成図を示す。
ストアバッファ１１−１〜１１−ｎは、命令識別子記憶部２１、バイトマーク記憶部２２、アドレス記憶部２３、データ記憶部２４、ストアフェッチバイパス上限命令識別子記憶部２５、ストアフェッチバイパス上限命令識別子有効情報記憶部２６から構成される。
命令識別子記憶部２１には、命令識別子（ＩＩＤ；Ｉｎｓｔｒｕｃｔｉｏｎ ＩＤ）が記憶される。命令識別子ＩＩＤは、各リクエストの実行順序を識別する情報である。命令識別子ＩＩＤは、命令ユニット２で付与される。
【００１７】
ここで、命令識別子ＩＩＤについて詳細に説明する。
【００１８】
図４は本発明の一実施例の命令識別子の生成方法を説明するための図を示す。
【００１９】
ここでは、命令「ＭＶＣ」について説明する。命令「ＭＶＣ」は、例えば、図４に示す「ＭＶＣ １９０ ＡＤＲ１ ＡＤＲ２」と記述される。図４に示す命令「ＭＶＣ」は、アドレスＡＤＲ１からアドレスＡＤＲ２にオペランド長１９０バイトのデータを移動させる命令である。
【００２０】
命令「ＭＶＣ」は、図４に示すようにフェッチＦＥＴＣＨ１〜ＦＥＴＣＨｍとストアＳＴＯＲＥ１〜ＳＴＯＲＥｍとが交互にリクエストされることにより実行可能となる。フェッチＦＥＴＣＨ１〜ＦＥＴＣＨｍは、アドレスＡＤＲ１−１〜ＡＤＲ−ｍのデータをフェッチする命令である。ストアＳＴＯＲＥ１〜ＳＴＯＲＥｍは、アドレスＡＤＲ２−１〜ＡＤＲ２−ｍにデータをストアする命令である。このとき、命令「ＭＶＣ」を識別する識別子が「０」であるとすると、命令「ＭＶＣ」を構成するフェッチＦＥＴＣＨ１〜ＦＥＴＣＨｍ及びストアＳＴＯＲＥ１〜ＳＴＯＲＥｍにリクエスト順に識別子ＩＩＤ「１〜２ｍ」が付与される。すなわち、識別子ＩＩＤは、命令の実行順序に相当するものである。
【００２１】
バイトマーク記憶部２２には、バイトマークが記憶される。バイトマークＢＭＫは、例えば、１６ビットの情報からなり、アドレスとともに、ストア先を識別する情報である。アドレス記憶部２３には、アドレスが記憶される。アドレスは、ストアバッファ１１−１〜１１−ｎの格納位置を識別する情報である。
【００２２】
データ記憶部２４は、データが記憶される。データは、ストアされるデータである。ストアフェッチバイパス上限命令識別子記憶部２５は、ストアフェッチバイパス上限命令識別子（ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ）が記憶される。ストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤは、重なりが検出されたデータを識別するための識別情報であり、重なったデータの識別子ＩＩＤに相当する。
【００２３】
記憶制御部１５は、命令ユニット２からの命令に応じてストアバッファ１１、キャッシュメモリ１２、ムーブインデータバッファ１３、バイパスデータレジスタ１４及びフェッチデータ選択回路１６を制御する。
【００２４】
ここで、記憶制御部１５について詳細に説明する。
【００２５】
図５は本発明の一実施例の記憶制御部のブロック構成図を示す。
記憶制御部１５は、フェッチポート３１、トランスレーションルックアサイドバッファ（ＴＬＢ；Ｔｒａｎｓｌａｔｉｏｎ Ｌｏｏｋ−ａｓｉｄｅ Ｂｕｆｆｅｒ）３２、タグバッファ３３、タグマッチ検出用アドレス比較器３４、絶対値アドレスレジスタ３５、ストアアドレス選択回路３６、ストアデータ選択回路３７、検証回路３８、ｎ個の判定回路３９−１〜３９−ｎ、ＴＢＬ検出用アドレス比較器４０から構成される。
【００２６】
フェッチポート３１は、命令ユニット２からの命令を保持する。フェッチポート３１に保持された命令は、トランスレーションルックアサイドバッファ３２、タグバッファ３３、キャッシュメモリ１２に供給される。
【００２７】
トランスレーションルックアサイドバッファ３２は、フェッチ論理アドレスを絶対値アドレスに変換する。トランスレーションルックアサイドバッファ３２で変換された絶対値アドレスは、タグマッチアドレス検出用比較器３４、絶対値アドレスレジスタ３５、検証回路３８に供給される。
【００２８】
タグバッファ３３は、フェッチ論理アドレスをタグアドレスに変換する。タグバッファ３３で変換されたタグアドレスは、タグマッチ検出用アドレス比較器３４に供給される。
キャッシュメモリ１２は、フェッチ論理アドレスに応じたデータを出力する。キャッシュメモリ１２の出力データは、フェッチデータ選択回路１６に供給される。
タグマッチ検出用アドレス比較器３４は、絶対値アドレスとタグアドレスとを比較し、絶対値アドレスとタグアドレスとの一致、不一致を検出する。タグマッチ検出用アドレス比較器３４の比較結果は、検証回路３８、フェッチデータ選択回路１６に供給される。
【００２９】
絶対値アドレスレジスタ３５は、トランスレーションルックアサイドバッファ３２で変換された絶対値アドレスを保持する。絶対値アドレスレジスタ３５に保持された絶対値アドレスは検証回路３８に供給される。
【００３０】
ストアアドレス選択回路３６は、判定回路３９の判定結果に基づいてアドレスの出力を制御する。ストアアドレス選択回路３６で選択されたアドレスは、検証回路３８に供給される。
【００３１】
ストアデータ選択回路３７は、判定回路３９の判定結果に基づいてデータの出力を制御する。ストアデータ選択回路３７で選択されたデータは、フェッチデータ選択回路１６に供給される。
【００３２】
また、ＴＬＢマッチ検出用比較器４０には、トランスレーションルックアサイドバッファ３２及びフェッチポート３１からアドレスが供給される。ＴＬＢマッチ検出用比較器４０では、トランスレーションルックアサイドバッファ３２からの論理アドレスとフェッチポート３１からのＴＬＢ検索に用いなかった論理アドレスとを比較し、両アドレスの一致／不一致を検出する。ＴＬＢマッチ検出用比較器４０の比較結果は、検証回路３８に供給される。
【００３３】
検証回路３８は、フェッチデータが有効か、無効かを検証する。
ここで、検証回路３８について詳細に説明する。
図６は本発明の一実施例の検証回路のブロック構成図を示す。
【００３４】
検証回路３８は、絶対値アドレス一致検証回路４１、フェッチ候補単数検証回路４２、フェッチデータ有効条件検出回路４３から構成される。
【００３５】
絶対値アドレス一致検証回路４１には、絶対値アドレスレジスタ３５から絶対値アドレスが供給されるとともに、ストアアドレス選択回路３６からストアアドレスが供給される。絶対値アドレス一致検証回路４１は、絶対値アドレスレジスタ３５からの絶対値アドレスとストアアドレス選択回路３６からのストアアドレスとを比較し、一致するか否かを判定する。絶対値アドレス一致検証回路４１の検証結果は、フェッチデータ有効条件検出回路４３に供給される。
【００３６】
フェッチ候補単数検証回路４２には、ｎ個の判定回路３９−１〜３９−ｎの判定結果が供給される。フェッチ候補単数検証回路４２は、ｎ個の判定回路３９−１〜３９−ｎの判定結果からフェッチ候補が単数か否かを検証する。
【００３７】
フェッチデータ有効条件検出回路４３には、ＴＬＢマッチ検出用アドレス比較器４０の比較結果、絶対値アドレス一致検証回路４１の検証結果、フェッチ候補単数検証回路４２の検証結果が供給される。フェッチ有効条件検証回路４３は、ＴＬＢマッチ検出用アドレス比較器４０の比較結果、絶対値アドレス一致検証回路４１の検証結果、フェッチ候補単数検証回路４２の検証結果がすべて有効の場合、フェッチデータを有効とする情報を出力する。フェッチデータ有効条件検出回路４１の出力は、命令ユニット２及び演算ユニット３に供給される。命令ユニット２及び演算ユニット３は、フェッチデータ有効条件検証回路４１の出力に応じて命令及び演算を制御する。
【００３８】
判定回路３９−１〜３９−ｎは、命令及びストアバッファ１１−１〜１１−ｎのアドレス、バイトマーク、識別子ＩＩＤを比較することにより、有効とすべきデータの選択を行なう。
【００３９】
判定回路３９−１〜３９−ｎについて詳細に説明する。
【００４０】
図７は本発明の一実施例の判定回路のブロック構成図を示す。
判定回路３９−ｉは、アドレス一致比較器５１、バイトマーク比較器５２、ＳＴＢ−ＩＩＤ比較器５３、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４、ＡＮＤ回路５５、ＳＢＦ−ＬＩＭＩＴ−ＩＩＤ検出回路５６から構成される。
アドレス一致比較器５１には、ストアバッファ１１−ｉからアドレスが供給されるとともに、フェッチポート３１からフェッチ論理アドレスが供給される。アドレス比較器５１は、ストアバッファ１１−ｉからのアドレスとフェッチポート３１からのフェッチ論理アドレスを比較して、ストアバッファ１１−ｉからのアドレスとフェッチポート３１からのフェッチ論理アドレスとの一致／不一致を検出する。アドレス一致比較回路５１は、ストアバッファ１１−ｉからのアドレスとフェッチポート３１からのフェッチ論理アドレスとが一致したとき、論理「１」を出力し、不一致のときには、論理「０」を出力する。アドレス一致比較器５１の比較結果は、ＡＮＤ回路５５に供給される。
【００４１】
バイトマーク比較器５２には、ストアバッファ１１−ｉからバイトマークが供給されるととともに、フェッチポート３１からリクエストに応じたバイトマークが供給される。バイトマーク比較器５２は、ストアバッファ１１−ｉからのバイトマークとフェッチポート３１からのリクエストに応じたバイトマークとを比較し、その大小を比較する。バイトマーク比較器５２は、フェッチポート３１からのリクエストに応じたバイトマークがストアバッファ１１−ｉからのバイトマークより小さいか、等しければ、リクエストに包含されると判断できるため、論理「１」を出力し、大きければ、論理「０」を出力する。バイトマーク比較器５２の比較結果は、ＡＮＤ回路５５に供給される。
【００４２】
ＳＴＢ−ＩＩＤ比較器５３には、ストアバッファ１１−ｉから識別子ＩＩＤが供給されるとともに、フェッチポート３１からリクエストに応じた識別子ＩＩＤが供給される。ＳＴＢ−ＩＩＤ比較器５３は、ストアバッファ１１−ｉから識別子ＩＩＤとフェッチポート３１からリクエストに応じた識別子ＩＩＤとの大小を比較する。ＳＴＢ−ＩＩＤ比較器５３は、ストアバッファ１１−ｉから識別子ＩＩＤがフェッチポート３１からリクエストに応じた識別子ＩＩＤより小さければ、包含関係にあると判断できるので、論理「１」を出力し、小さければ、論理「０」を出力する。ＳＴＢ−ＩＩＤ比較器５３の比較結果は、ＡＮＤ回路５５に供給される。
【００４３】
ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４には、フェッチポート３１からリクエストに応じた識別子ＩＩＤが供給されるとともに、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路５６からストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤが供給される。ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４は、フェッチポート３１からリクエストに応じた識別子ＩＩＤとＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路５６からストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤとの大小を比較する。
【００４４】
ここで、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路５６について詳細に説明する。
【００４５】
図８は本発明の一実施例のＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路のブロック構成図を示す。
ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路５６は、重なり比較器６１、アドレス一致検出回路６２、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ設定部６４から構成される。
【００４６】
重なり比較器６１には、リクエスト先の付与されたバイトマーク及びストアバッファ１１−ｉからのバイトマークが供給される。重なり比較器６１は、リクエストに付与されたバイトマークとストアバッファ１１−ｉからのバイトマークとを比較して一致するか否かを判定する。重なり比較器６１は、両バイトマークが一致するときには、論理「１」、不一致のときには、論理「０」を出力する。重なり比較器６１の出力は、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３に供給される。
【００４７】
アドレス一致検出回路６２には、リクエスト先のアドレス及びストアバッファ１１−ｉのアドレスが供給される。アドレス一致検出回路６２は、リクエスト先のアドレスとストアバッファ１１−ｉのアドレスとを比較し、両アドレスが一致するか否かを検出する。アドレス一致検出回路６２は、両アドレスが一致すれば、論理「１」を出力し、不一致のときには、論理「０」を出力する。アドレス一致検出回路６２の出力論理は、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３に供給される。
【００４８】
ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３では、重なり比較器６１の出力が「１」、アドレス一致検証回路６２の出力が「１」、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬが「０」の時に論理「１」を出力し、他の状態の時には論理「０」を出力する。
ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ設定部６４には、識別子ＩＩＤ及びＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３の出力論理が供給される。ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ設定部６４は、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出部６３の出力論理が論理「１」のときに、識別子ＩＩＤをＳＦＢ−ＬＩＭＩＴ−ＩＩＤに設定する。また、出力論理が論理「０」の時には、なんの操作もしない。
【００４９】
ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４は、フェッチポート３１からリクエストに応じた識別子ＩＩＤがＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路５６からストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤより小さければ、包含関係にあると判断できるため、論理「１」を出力し、大きければ、論理「０」を出力する。ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４の比較結果は、ＡＮＤ回路５５に供給される。
【００５０】
ＡＮＤ回路５５は、アドレス一致比較器５１、バイトマーク比較器５２、ＳＴＢ−ＩＩＤ比較器５３、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４の比較結果が供給される。ＡＮＤ回路５５は、アドレス一致比較器５１、バイトマーク比較器５２、ＳＴＢ−ＩＩＤ比較器５３、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４の比較結果の論理積をとる。ＡＮＤ回路５５は、アドレス一致比較器５１、バイトマーク比較器５２、ＳＴＢ−ＩＩＤ比較器５３、ＳＦＢ−ＬＩＭＩＴ−ＩＩＤ比較器５４の比較結果がすべて論理「１」の時に論理「１」を出力し、他の状態の時には論理「０」を出力する。ＡＮＤ回路５５の出力は、フェッチデータ選択回路１６及びストアアドレス選択回路３６、ストアデータ選択回路３７、検証回路３８に供給される。
【００５１】
フェッチ選択回路１６は、判定回路３９−１〜３９−ｎからの判定結果に応じてストアバッファ１１−１〜１１−ｎからのストア情報を選択する。フェッチ選択回路１６で選択されたデータは、演算ユニット４に供給される。
【００５２】
次に、本実施例の動作を説明する。
【００５３】
図９、図１０は本発明の一実施例の動作説明図を示す。
【００５４】
図９は、ストアバッファ１１−１〜１１−ｎには既にリクエストが発行されているが、キャッシュメモリ１２または主記憶装置５へのストアを完了していない状態である。ストアバッファ１１−１〜１１−ｎにリクエストが発行されると、各リクエストの実行順序を示す識別情報ＩＩＤが発行される。識別情報ＩＩＤは、ストアバッファ１１−ｉに記憶される。
【００５５】
また、ストアバッファ１１−ｉには、そのストアリクエストＳＴ ＲＥＱのストア先を示すために使用するアドレスＳＴＡＲとストアする領域を示すためのストアバイトマークＢＭＫＲも同時に記憶される。ストアデータＳＴＤＲは、後にストアデータが準備でき次第、対応するアドレスに設定される。
【００５６】
次に、後続のストアリクエストＳＴ ＲＥＱが発行されると、ストアバッファ１１−ｉと後続のストアリクエストＳＴ ＲＥＱとのストアアドレスＳＴＡＲ及びストアバイトマークＢＭＫＲとの比較を行なう。
【００５７】
なお、このとき、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬが通知されていないストアバッファ１１−ｉとで比較が行なわれる。ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬに応じて比較を行なうことにより、バイパス対象の範囲を絞り込むことができる。
ストアバッファ１１−ｉと後続のストアリクエストＳＴ ＲＥＱとのストアアドレスＳＴＡＲ及びストアバイトマークＢＭＫＲとの比較結果、ストアリクエストＳＴ ＲＥＱの操作対象領域と先行するストアリクエストＳＴ ＲＥＱの操作対象領域に重なりが検出された場合には、同一の領域へのストアを行なおうとしていると判定できる。このとき、重なりが検出されたストアバッファ１１−ｉに対して、ストアリクエストＳＴ ＲＥＱが持っている識別子ＳＴＢ−ＩＩＤがストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤとして設定されるとともに、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬを立ち上げる。
【００５８】
こうしてストアバッファ１１−１〜１１−ｎの各ストアバッファからストアフェッチバイパス対象とすべきフェッチリクエストＦＣ ＲＥＱの識別子ＩＩＤをストアリクエストＳＴ ＲＥＱ発行時に設定する。各ストアバッファ１１−ｉからストアフェッチバイパス対象とすべきフェッチリクエストＦＣ ＲＥＱの識別子ＦＣＨ−ＩＩＤは、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬが上がっている場合は、ストアバッファに設定された識別子ＳＴＢ−ＩＩＤからストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤまでの間の識別子ＩＩＤとし、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬが上がっていなければ、ストアバッファ１１−１〜１１−ｎに設定された識別子ＳＴＢ−ＩＩＤ以降の全識別ＩＩＤが対象になる。
【００５９】
次に、ストアバッファ１１−１〜１１−ｎにフェッチを行なう動作を説明する。
【００６０】
図１０に示すようにストアフェッチバイパス対象とすべきフェッチリクエストＦＣ ＲＥＱの範囲が設定される。
【００６１】
それから発行されるフェッチリクエストＦＣ ＲＥＱは、全ストアバッファ１１−１〜１１−ｎを対象として、ＩＩＤ、アドレス、バイトマークの比較を行なう。
ストアバッファの識別子ＳＴＢ−ＩＩＤとフェッチ命令の識別子ＦＣＨ−ＩＩＤとの比較では、ストアバッファの識別子ＳＴＢ−ＩＩＤよりもフェッチ命令の識別子ＦＣＨ−ＩＩＤが後であることを確認する。識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤと識別子ＦＣＨ−ＩＩＤとの比較では、識別子ＦＣＨ−ＩＩＤよりも識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤが後の発行順序であることを確認する。
【００６２】
なお、ＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬが上がっていない場合は、識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤと識別子ＦＣＨ−ＩＩＤとを比較する必要はない。
また、他にストアアドレスＳＴＡＲとフェッチアドレスＦＣＡＲとを比較し、一致していることを確認する。
【００６３】
また、ストアバイトマークＢＭＫＲとフェッチバイトマークＢＭＫＲとを比較し、ストアバイトマークＢＭＫＲがフェッチバイトマークＢＭＫＲを包含しているか否かを判定する。この判定結果によりフェッチリクエストＦＣ ＲＥＱの全操作対象領域が一つのストアバッファにすべて含まれていることが確認できる。
このようにＩＩＤ、アドレス、バイトマークＢＭＫＲの比較結果を行なうことにより唯一のストアバッファを選択できる。
【００６４】
次にタイミングチャートを用いて本実施例の動作を説明する。
【００６５】
図１１は本発明の一実施例のタイミングチャートを示す。
【００６６】
図１１（Ａ）はストアＳＴ１の実行タイミング、図１１（Ｂ）はストアＳＴ１のストアデータ発行タイミング、図１１（Ｃ）はストアバッファＳＴＢ１のストア許可タイミング、図１１（Ｄ）はストアバッファＳＴＢ１のライトタイミング、図１１（Ｅ）はフェッチＦＥＴＣＨ１の実行タイミング、図１１（Ｆ）はフェッチＦＥＴＣＨ１の待機時間、図１１（Ｇ）はストアＳＴ２の実行タイミング、図１１（Ｈ）はストアＳＴ２のストアデータ発行タイミング、図１１（Ｉ）はストアバッファＳＴＢ２のストア許可タイミング、図１１（Ｊ）はストアバッファＳＴＢ２のストア許可タイミング、図１１（Ｋ）はフェッチＦＥＴＣＨ２の実行タイミング、図１１（Ｌ）はフェッチＦＥＴＣＨ２の待機時間、図１１（Ｍ）はストアバッファＳＴＢ１のストアデータ準備期間、図１１（Ｎ）はストアバッファＳＴＢ２のストアデータ準備期間、図１１（Ｏ）はフェッチＦＥＴＣＨ１のリサイクル実行タイミング、図１１（Ｐ）はフェッチＦＥＴＣＨ１のフェッチ成功タイミング、図１１（Ｑ）はフェッチＦＥＴＣＨ２のリサイクル実行タイミング、図１１（Ｒ）はフェッチＦＥＴＣＨ２のフェッチ成功タイミング、図１１（Ｆ）は選択データの出力タイミングを示す。
【００６７】
図１１に示すようにストアＳＴ１、ＳＴ２、フェッチＦＥＴＣＨ１、ＦＥＴＣＨ２は、パイプライン方式で処理される。このとき、図１１（Ｍ）、（Ｎ）に示すようにストアバッファＳＴＢ１及びＳＴＢ２で、同じアドレスが有効とされても、識別子ＩＩＤによりデータが識別され、図１１（Ｓ）に示すようにストアデータＳＴＲＤ１、ＳＴＲＤ２の順にフェッチすることができる。
【００６８】
以上、本実施例によれば、同時に複数のフェッチ要求が全ストアバッファをストアフェッチバイパス対象とした検索を行なったときにも、各々のフェッチリクエスト毎に適切な異なったストアバッファを選択して、そこからフェッチデータを取り出すことができる。これにより特に、アウトオブオーダ処理を行なうスーパースカラプロセッサにおいて複数のフェッチ要求、ストア要求処理の投機実行を速やかに行なうことができる。よって、演算装置の処理性能を向上させることができる。
【００６９】
なお、上記実施例では、ストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤの設定をストアバッファ単位で行なったが、バイトマーク単位で行なうこともできる。
【００７０】
この場合、ストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤの設定において、操作対象領域の重なりの確認は、ストアバッファ単位ではなく、バイトマーク単位で行なうことになる。また、ストアフェッチバイパス上限命令識別子ＳＦＢ−ＬＩＭＩＴ−ＩＩＤとＩＤ有効情報ＳＦＢ−ＬＩＭＩＴ−ＶＡＬも、バイトマーク単位で持つことになる。
【００７１】
さらに、フェッチリクエストＦＣ ＲＥＱのチェック時には、全フェッチ対象領域が一つのストアバッファに含まれている必要は無くなり、複数のストアバッファをまたがってフェッチすることもできる。
【００７２】
このとき、必要があれば、キャッシュメモリ１２や主記憶装置５から読み出したデータとも組み合わせることができる。
【００７３】
また、バイトマークでなく、数バイト毎に行なってもよい。
【発明の効果】
【００７４】
本発明のよれば、演算装置において、命令に付与された識別情報を検出することにより同じ記憶領域を操作対象とするストア要求、フェッチ要求が複数存在している状況においても、ストアバッファからのデータのフェッチが可能となる。
【００７５】
また、処理をストアバッファ単位ではなく、ストアバッファのバイトマーク単位で行なうことにより、同じ記憶領域を操作対象とするストア要求、フェッチ要求が複数存在している状況においては、各フェッチリクエスト毎に選択すべきストアバッファを適切に組み合わせることにより、複数のストアバッファにまたがってフェッチデータを正しく作成することができる。
【図面の簡単な説明】
【図１】本発明の一実施例のブロック構成図である。
【図２】本発明の一実施例のストアユニットのブロック構成図である。
【図３】本発明の一実施例のストアバッファのデータ構成図である。
【図４】本発明の一実施例の命令識別子の生成方法を説明するための図である。
【図５】本発明の一実施例の記憶制御部のブロック構成図である。
【図６】本発明の一実施例の検証回路のブロック構成図である。
【図７】本発明の一実施例の判定回路のブロック構成図である。
【図８】本発明の一実施例のＳＦＢ−ＬＩＭＩＴ−ＩＩＤ検出回路のブロック構成図である。
【図９】本発明の一実施例の動作説明図である。
【図１０】本発明の一実施例の動作説明図である。
【図１１】本発明の一実施例のタイミングチャートである。
【符号の説明】
１  ＣＰＵ
２  命令ユニット、３  ストアユニット、４  演算ユニット、５  主記憶装置
１１  ストアバッファ部、１２  キャッシュメモリ、１３  ＭＩＢ、１４  ＢＰＤＲ
１５  記憶制御部、１６  フェッチデータ選択回路
【図１】
0003628653.tif 000002
【図２】
0003628653.tif 000003
【図３】
0003628653.tif 000004
【図４】
0003628653.tif 000005
【図５】
0003628653.tif 000006
【図６】
0003628653.tif 000007
【図７】
0003628653.tif 000008
【図８】
0003628653.tif 000009
【図９】
0003628653.tif 000010
【図１０】
0003628653.tif 000011
【図１１】
0003628653.tif 000012