(57)【特許請求の範囲】
【請求項１】
読書き方向をアドレス順の順逆両方向へ切替自在でありかつ相互に異なる２個のアドレスについて一方のアドレスからのデータの読出しと他方のアドレスへのデータの書込みとを並行して実施可能となっている一時メモリ、
読書き方向をアドレス順の順逆両方向へ切替自在でありかつ相互に異なる２個のアドレスについて一方のアドレスからのデータの読出しと他方のアドレスへのデータの書込みとを並行して実施可能となっている実メモリ、
前記一時メモリの内容を更新する場合には前記一時メモリの更新前の内容を前記実メモリの第１のアドレス範囲へストアするとともに前記一時メモリの更新後の内容を前記実メモリの第２のアドレス範囲からロードするストア／ロード手段、
前記一時メモリの内容を更新する場合に前記第１及び前記第２のアドレス範囲の関係を検出するアドレス範囲関係検出手段、
前記アドレス範囲関係検出手段が、前記第１及び前記第２のアドレス範囲が部分的に重複しかつ前記第１のアドレス範囲の先頭アドレスが前記第２のアドレス範囲の先頭アドレスより先になっていることを検出した場合及びそれ以外の場合に、ストア／ロードについての前記一時メモリ及び前記実メモリにおける書込み／読出し方向をそれぞれアドレス順の逆方向及び順方向に決定する方向決定手段、及び
前記一時メモリの内容を更新する場合に前記方向決定手段の決めた方向でストア／ロードに係る前記一時メモリ及び前記実メモリにおけるデータ読書きが行なわれるように、かつ１アドレス分のストア／ロード所要時間を１サイクルタイムと定義して、前記一時メモリ及び前記実メモリの各々において、ストア／ロードの並行処理期間の各サイクルタイムではデータの書込みとデータの読出しとが並行するように、前記ストア／ロード手段を制御する制御手段、
を有していることを特徴とするストア／ロード制御装置。
【請求項２】
前記制御手段は、ストア及びロードの動作を同時に開始させるか又はストア動作開始してから１サイクルタイム遅れてロード動作開始させるように、前記ストア／ロード手段を制御することを特徴とする請求項１記載のストア／ロード制御装置。
【請求項３】
前記アドレス範囲関係検出手段が、前記第１及び前記第２のアドレス範囲が全体的に重複していることを検出した場合、前記制御手段は前記ストア／ロード手段によるストア／ロードを中止させることを特徴とする請求項１記載のストア／ロード制御装置。
【請求項４】
前記一時メモリが現在、対応付けられている、実メモリのアドレス範囲に係る情報を登録される登録手段を有し、
前記アドレス範囲関係検出手段は、前記第１及び前記第２のアドレス範囲の関係を前記登録手段の変更前及び変更後の登録内容に基づいて検出することを特徴とする請求項１記載のストア／ロード制御装置。
【請求項５】
前記一時メモリが現在、マップされている前記実メモリのアドレス範囲の先頭アドレスが登録されるポインタ手段を有し、
前記アドレス範囲関係検出手段は、前記第１及び前記第２のアドレス範囲の関係を前記ポインタ手段の更新前及び更新後の登録内容から検出することを特徴とする請求項１記載のストア／ロード制御装置。
【請求項６】
読書き方向をアドレス順の順逆両方向へ切替自在でありかつ相互に異なる２個のアドレスについて一方のアドレスからのデータの読出しと他方のアドレスへのデータの書込みとを並行して実施可能となっている一時メモリ、
読書き方向をアドレス順の順逆両方向へ切替自在でありかつ相互に異なる２個のアドレスについて一方のアドレスからのデータの読出しと他方のアドレスへのデータの書込みとを並行して実施可能となっている実メモリ、及び
前記一時メモリの内容を更新する場合には前記一時メモリの更新前の内容を前記実メモリの第１のアドレス範囲へストアするとともに前記一時メモリの更新後の内容を前記実メモリの第２のアドレス範囲からロードするストア／ロード手段、
を有しているストア／ロード装置に対するストア／ロード制御方法において、
前記一時メモリの内容を更新する場合に前記第１及び前記第２のアドレス範囲の関係を検出するアドレス範囲関係検出ステップ、
前記アドレス範囲関係検出ステップにおいて、前記第１及び前記第２のアドレス範囲が部分的に重複しかつ前記第１のアドレス範囲の先頭アドレスが前記第２のアドレス範囲の先頭アドレスより先になっていることを検出した場合及びそれ以外の場合に、ストア／ロードについての前記一時メモリ及び前記実メモリにおける書込み／読出し方向をそれぞれアドレス順の逆方向及び順方向に決定する方向決定ステップ、及び
前記一時メモリの内容を更新する場合に前記方向決定手段の決めた方向でストア／ロードに係る前記一時メモリ及び前記実メモリにおけるデータ読書きが行なわれるように、かつ１アドレス分のストア／ロード所要時間を１サイクルタイムと定義して、前記一時メモリ及び前記実メモリの各々において、ストア／ロードの並行処理期間の各サイクルタイムではデータの書込みとデータの読出しとが並行するように、前記ストア／ロード手段を制御する制御ステップ、
を有していることを特徴とするストア／ロード制御方法。
【請求項７】
前記制御ステップでは、ストア及びロードの動作を同時に開始させるか又はストア動作開始してから１サイクルタイム遅れてロード動作開始させるように、前記ストア／ロード手段を制御することを特徴とする請求項６記載のストア／ロード制御方法。
【請求項８】
前記アドレス範囲関係検出ステップが、前記第１及び前記第２のアドレス範囲が全体的に重複していることを検出した場合、前記制御ステップでは前記ストア／ロード手段によるストア／ロードを中止させることを特徴とする請求項６記載のストア／ロード制御方法。
【請求項９】
前記一時メモリが現在、対応付けられている、実メモリのアドレス範囲に係る情報を登録される登録手段を有している前記ストア／ロード装置に対して、
前記アドレス範囲関係検出ステップでは、前記第１及び前記第２のアドレス範囲の関係を前記登録手段の変更前及び変更後の登録内容に基づいて検出することを特徴とする請求項６記載のストア／ロード制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストア（ｓｔｏｒｅ）／ロード（ｌｏａｄ）制御装置及びストア／ロード制御方法に係り、詳しくはストアフェーズとロードフェーズとを並行実施するストア／ロード制御装置及びストア／ロード制御方法に関するものである。
【０００２】
【従来の技術】
コンピュータでは、汎用レジスタやキャッシュメモリ等の一時メモリはＲＡＭ等の実メモリにマップされ、一時メモリが各時点でマップされている、実メモリにおけるアドレス範囲の先頭アドレスは、コンテキストポインタ（以下、適宜、「ＣＰ」と言う。）と呼ばれるレジスタに登録されることになっている。
【０００３】
一時メモリの値を更新する従来方式では、実メモリへの一時メモリの値のストアが完全に終了してから、実メモリから一時メモリへのデータのロードを開始しており、更新にかかる時間が長くなっている。一時メモリのストアが終了する前に、ロードを開始して、ストアとロードとを並行して行うことにより、更新時間を短縮することも可能であるが、実メモリにおけるストアのアドレス範囲とロードのアドレス範囲とが重複している場合、実メモリにおける所定のアドレスでは、ロードがストアに先行して、一時メモリ及び実メモリのデータがつじつまの合わないものになってしまうことがある。
【０００４】
特開昭６２−１２７９４７号公報は、第１のバッファ用の書込みデータの格納と第２のバッファ用のアドレスデータの格納とを兼ねる第１の格納手段に対して、第１及び第２のバッファの書込みデータを専用に格納する第３及び第２の格納手段を設け、第３及び第２の格納手段を使って、第１及び第２のバッファへのデータの書込みを並行して行うことを開示する。特開昭６３−２０８１７９号公報は、通常は、第１の格納手段が第１の記憶手段からのデータを第２の記憶手段へアドレスとして供給するのに対し、ロード実行時では、アドレス供給手段が第２の記憶手段へアドレスを供給するようにして、第１及び第２の記憶手段へのデータのロードが並行実施できるようにしている。
【０００５】
特開平４−２１９８２５号公報は、例えば、後続命令が先行命令の計算結果を利用し、かつパイプライン処理により後続命令が先行命令の計算終了前に読出しを開始する場合に、つじつまの合わないデータの発生を防止するために、書込みデータを読出しポートへバイパスすることを開示する。特開平１１−１４３７７３号公報は、転送データ保持手段へのデータ書込みは内部バスを介して第１の命令に応答して行い、転送データ保持手段からのデータ読出しは、バス制御手段を介して第２の命令に応答して行い、これにより、データ追い出し（必要なデータをメモリから追い出してしまうこと。）を防止しつつ、ソフトによる外部へのデータ転送の実現及び転送量の増大を図っている。
【０００６】
【発明が解決しようとする課題】
特開昭６２−１２７９４７号公報及び特開昭６３−２０８１７９号公報の装置は、複数のロードを並行して実施するものであり、ストアとロードとの並行実施とは無関係である。特開平４−２１９８２５号公報の装置はバイパス制御を必須としている。特開平１１−１４３７７３号公報の装置は、外部転送に関し、ストアとロードとの並行実施とは無関係である。
【０００７】
本発明の目的は、つじつまの合わないデータの発生を防止しつつ、ストア及びロードの並行動作の時間を短縮化を図ることのできるストア／ロード制御装置及びストア／ロード制御方法を提供することである。
【０００８】
【課題を解決するための手段】
本発明のストア／ロード制御装置は次のものを有している。
・データの読み書きを並行して実施可能となっている第１の記憶手段
・データの読み書きを並行して実施可能となっている第２の記憶手段
・第１の記憶手段へデータを第２の記憶手段からロードする場合はロード前の第１の記憶手段のデータを第２の記憶手段の対応のアドレス範囲へストアするとともに少なくともストア終了前までにロードを開始するストア／ロード手段
・第１の記憶手段へデータを第２の記憶手段からロードする場合にストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との関係を検出するアドレス範囲関係検出手段
・アドレス範囲関係検出手段の検出結果に基づいてストア／ロードについての第２の記憶手段における書込み／読出し方向をアドレス順の順方向又は逆方向に決める方向決定手段
・方向決定手段の決めた方向でストア／ロードについての第２の記憶手段における書込み／読出しが実施されるようにストア／ロード手段を制御する制御手段
【０００９】
なお、本明細書において、「／」は「及び」を意味するものとする。第１及び第２の記憶手段はアドレス順の順逆の両方向へ読書き自在となっている。第２の記憶手段において、ストア／ロードについての書込み／読出し方向がそれぞれアドレス順の順方向及び逆方向となる場合、それに対応する第１の記憶手段におけるデータの読出し／書込み方向も、それぞれアドレス順の順方向及び逆方向となる。
【００１０】
ストア／ロード制御装置は次の態様を備える。アドレス範囲関係検出手段は、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との重複関係を検出するものである。アドレス範囲の重複関係には、アドレス範囲の部分的な重複関係及び全体的な重複関係を含むものとする。なお、アドレス範囲の全体的な重複とは、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との完全一致を意味する。アドレス範囲関係検出手段は、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との先後関係、すなわちストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲とがアドレス順でどちらが先範囲や後範囲になっているかを検出するものである。また、アドレス範囲関係制御手段が、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲とが部分的に重複しかつストアについての第２の記憶手段のアドレス範囲の先頭アドレスがロードについての第２の記憶手段のアドレス範囲の先頭アドレスより先になっていることを検出した場合、方向決定手段は、ストア／ロードについての第２の記憶手段における書込み／読出し方向をアドレス順の逆方向に決める。さらに、１アドレス分のストア／ロード所要時間を１サイクルタイムと定義し、制御手段は、ストア及びロードの動作を同時に開始させるか又はストア動作開始してから１サイクルタイム遅れてロード動作開始させるように、ストア／ロード手段を制御する。アドレス範囲関係制御手段が、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲とが全体的に重複していることを検出した場合、制御手段はストア／ロード手段によるストア／ロードを中止させる。ストア／ロード制御装置は、さらに、第１の記憶手段が現在、対応付けられている、第２の記憶手段のアドレス範囲に係る情報を登録される登録手段を有し、アドレス範囲関係検出手段は、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との関係を登録手段の変更前及び変更後の登録内容に基づいて検出する。
【００１１】
ストア／ロード制御装置の別の態様について述べると、第１の記憶手段は一時メモリであり、第２の記憶手段は実メモリである。一時メモリには、キャッシュメモリや汎用レジスタが含まれる。実メモリにはＲＡＭが含まれる。ストア／ロード制御装置は、一時メモリが現在、マップされている実メモリのアドレス範囲の先頭アドレスが登録されるポインタ手段を有し、アドレス範囲関係検出手段は、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との関係をポインタ手段の更新前及び更新後の登録内容から検出する。アドレス範囲関係検出手段が、ポインタ手段の更新前及び更新後の登録内容から実メモリにおけるストア用のアドレス範囲とロード用のアドレス範囲とが重複しかつストア用のアドレス範囲の先頭アドレスがロード用のアドレス範囲の先頭アドレスより先にあることを検出した場合、方向決定手段は、ストア／ロードについての第２の記憶手段における書込み／読出し方向をアドレス順の逆方向に決める。
【００１２】
本発明のストア／ロード制御方法の適用されるストア／ロード装置は、データの読み書きを並行して実施可能となっている第１の記憶手段、データの読み書きを並行して実施可能となっている第２の記憶手段、及び第１の記憶手段へデータを第２の記憶手段からロードする場合はロード前の第１の記憶手段のデータを第２の記憶手段の対応のアドレス範囲へストアするとともに少なくともストア終了前までにロードを開始するストア／ロード手段、を有している。該ストア／ロード制御方法は、第１の記憶手段へデータを第２の記憶手段からロードする場合にストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との関係を検出するアドレス範囲関係検出ステップ、アドレス範囲関係検出ステップの検出結果に基づいてストア／ロードについての第２の記憶手段における書込み／読出し方向をアドレス順の順方向又は逆方向に決める方向決定ステップ、及び方向決定ステップの決めた方向でストア／ロードについての第２の記憶手段における書込み／読出しが実施されるようにストア／ロード手段を制御する制御ステップ、を有している。
【００１３】
ストア／ロード制御方法は以下の態様を備える。アドレス範囲関係検出ステップは、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との重複関係を検出するものである。アドレス範囲関係検出ステップは、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との先後関係を検出するものである。アドレス範囲関係制御ステップにおいて、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲とが部分的に重複しかつストアについての第２の記憶手段のアドレス範囲の先頭アドレスがロードについての第２の記憶手段のアドレス範囲の先頭アドレスより先になっていることを検出した場合、方向決定ステップでは、ストア／ロードについての第２の記憶手段における書込み／読出し方向をアドレス順の逆方向に決める。１アドレス分のストア／ロード所要時間を１サイクルタイムと定義し、制御ステップでは、ストア及びロードの動作を同時に開始させるか又はストア動作開始してから１サイクルタイム遅れてロード動作開始させるように、ストア／ロード手段を制御する。アドレス範囲関係制御ステップが、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲とが全体的に重複していることを検出した場合、制御ステップではストア／ロード手段によるストア／ロードを中止させる。第１の記憶手段が現在、対応付けられている、第２の記憶手段のアドレス範囲に係る情報を登録される登録手段を有しているストア／ロード装置に対して、アドレス範囲関係検出ステップでは、ストアについての第２の記憶手段におけるアドレス範囲とロードについての第２の記憶手段におけるアドレス範囲との関係を登録手段の変更前及び変更後の登録内容に基づいて検出する。
【００１４】
【発明の実施の形態】
以下、発明の実施の形態について図面を参照して説明する。
図１はコンピュータにおけるレジスタについてのストア及びロードの説明図である。ＣＰ（Ｃｏｎｔｅｘｔ  Ｐｏｉｎｔｅｒ：コンテキスト・ポインタ）には、レジスタが現時点でマップされているＲＡＭ上の連続アドレス領域（アドレス領域＝アドレス範囲）の先頭アドレスが書込まれている。レジスタへのロードを実行する場合は、ロード前のレジスタの内容を保存する必要がある。したがって、レジスタへのロードを実行する場合には、ストアフェーズ（Ｓｔｏｒｅ  Ｐｈａｓｅ）及びロードフェーズ（Ｌｏａｄ  Ｐｈａｓｅ）が実施される。ストアフェーズでは、更新前のレジスタの値が、ＣＰの更新前の値を先頭アドレスとするＲＡＭの連続領域へストアされる。ロードフェーズでは、ＣＰの更新後の値を先頭アドレスとするＲＡＭの連続領域のデータがレジスタへロードされる。
【００１５】
図２は各種方式においてＣＰ更新時のストアフェーズとロードフェーズについて時間軸上の位置を示している。手法（ａ），（ｂ）は、従来方式に対してストア／ロードの総所要時間を短縮させている。総所要時間の短縮のために、手法（ａ）では、ＲＡＭのポート数やレジスタ−ＲＡＭ間のデータバス幅を増大させ、手法（ｂ）では、ストアフェーズとロードフェーズとを並行実施する。本発明は手法（ｂ）を採用する。
【００１６】
図３はストアフェーズとロードフェーズとを並行して実施する場合の問題点の説明図である。ＣＰの値が更新前及び更新後、例えばそれぞれ１０００ｈ，１００２ｈであると仮定する。この場合、ＲＡＭにおけるストア及びロードに係る連続領域のアドレス範囲はそれぞれＡｓ（ｓはｓｔｏｒｅの意味。），Ａｌ（ｌはｌｏａｄの意味。）で示され、Ａｓは１０００ｈ〜１００Ｆｈ、Ａｌは１０２ｈ〜１００１ｈであり、Ａｓ，Ａｌは、アドレス範囲１００２ｈ〜１００Ｆｈにおいて重複している。したがって、ストア及びロードを並行して実施する場合、該重複アドレス範囲の各アドレスにおいて、ロードがストアに先行すると、ストア前のＲＡＭのデータがレジスタへロードされ、また、このロードにより、ストア前のレジスタの一部データが壊れ、この壊れたデータがＲＡＭにストアされ、こうして、つじつまの合わないデータにレジスタ及びＲＡＭの内容が次々に書き換えられていってしまう。この問題を克服するためには、次の原則が必要になる。原則：ストア及びロードの両方に関わるＲＡＭの各アドレスについては、ストアに係る書込みをロードに係る読出しに先行させる。
【００１７】
具体的には、（ｂ１）ストアフェーズに対してロードフェーズの実行開始サイクルを遅らせる。（ｂ２）ＲＡＭにおけるストア及びロードのアドレス範囲の関係に基づいて、ＲＡＭにおけるデータの読書き方向をアドレス順の順方向又は逆方向へ切替える。本発明は、手法（ｂ２）を採用する。
【００１８】
図４及び図５はＲＡＭにおける読書きをそれぞれ（ｂ１）及び（ｂ２）の手法に従って実施した場合のＲＡＭにおけるストアアドレス及びロードアドレスの時間変化を示している。なお、この例では、１６個の汎用レジスタの内容を、読出し及び書込みのポートが１個ずつの計２ポートのＲＡＭにストア及び該ＲＡＭからロードする場合を想定している。各汎用レジスタはＲＡＭの１個のアドレスにマップされている。Ｔは、１アドレス当たりの読書きに要する時間としてのサイクルタイムである。ストアアドレスは各サイクルタイムにおいてＲＡＭにおけるデータの書込まれるアドレスを意味し、ロードアドレスは各サイクルタイムにおいてＲＡＭにおけるデータの読出されるアドレスを意味する。ストアアドレス及びロードアドレスの範囲はそれぞれ例えば１０００ｈ〜１００Ｆｈ及び１００２ｈ〜１０１１ｈであり、１００２ｈ〜１００Ｆｈはストアのアドレス範囲及びロードのアドレス範囲の重複範囲となっている。
【００１９】
図６はＲＡＭがポートをそれぞれ１，２，４個、装備する場合にそれぞれ従来方式、手法（ｂ１），（ｂ２）ではストア／ロードを終了するのにかかる時間をサイクルタイム換算で示している。１ポートＲＡＭとは、ＲＡＭがポートを１個しか装備しておらず、読書きを並行して実施できないＲＡＭを意味する。２ポートＲＡＭとは、ＲＡＭがポートを読出し及び書込み用にそれぞれ１個ずつ装備しているＲＡＭであり、ＲＡＭに対する読書きを並行して実施できる。４ポートＲＡＭとは、ＲＡＭがポートを読出し及び書込み用にそれぞれ２個ずつ装備しているＲＡＭであり、ＲＡＭに対する読書きを並行して実施できるだけでなく、読出し領域及び書込み領域をそれぞれ前半部分及び後半部分に２等分割して、並列読出し及び並列書込みを実施できる。
【００２０】
図６の従来方式には、図２の従来方式と手法（ａ）とを包摂している。すなわち、図６の従来方式は、ストアフェーズ及びロードフェーズを並行実施することなく、ストアフェーズの終了後にロードフェーズを実施している。したがって、図６の従来方式では、ストア／ロードのサイクルタイム換算の総所要時間は、１ポートＲＡＭ、２ポートＲＡＭ、及び４ポートＲＡＭにおいてそれぞれ３２，３２，１６となる。
【００２１】
手法（ｂ１）では、図４に示されるように、ＲＡＭにおけるデータの読書き方向はアドレス順の順方向に固定され、ストアアドレスは、１０００ｈ，１００１ｈ，１００２ｈ，・・・，１００Ｅｈ，１００Ｆｈの順番に変化し、ロードアドレスは１００２ｈ，１００３ｈ，１００４ｈ，・・・，１０１０ｈ，１０１１ｈの順番に変化している。ロード開始は、ロードのアドレス範囲の先頭アドレスへのストアが終了してから直ちに行われるとして、アドレス１００２ｈのストアの終了後の最初のサイクルタイムの開始時刻から開始されることになる。すなわち、ストアのアドレス範囲及びロードのアドレス範囲の重複した場合のロード開始は、ストアのアドレス範囲の先頭アドレスとロードのアドレス範囲の先頭アドレスとの差分に、１を加えたサイクルタイム分だけ、ストア開始より遅れる。図６に示されるように、手法（ｂ１）では、ストア／ロードのサイクルタイム換算の総所要時間は、１ポートＲＡＭ、２ポートＲＡＭ、及び４ポートＲＡＭにおいてそれぞれ３２，１７〜３２、９〜１７となる。
【００２２】
これに対して本発明としての手法（ｂ２）では、レジスタ及びＲＡＭにおけるデータの読書き方向はアドレス順の順方向又は逆方向へ適宜切替自在となっている。説明の便宜上、アドレス順の先及び後をアドレスの小及び大に対応付けて説明すると、図５の例は、すなわちストアのアドレス範囲の先頭アドレス＜ロードのアドレス範囲の先頭アドレスであるので、ＲＡＭにおけるデータの読書き方向はアドレス順の逆方向へ切り替えられる。したがって、ストアアドレスは、１００Ｆｈ，１００Ｅｈ，１００Ｄｈ，・・・，１００１ｈ，１０００ｈの順番に変化し、ロードアドレスは１０１１ｈ，１０１０ｈ，１００Ｆｈ，・・・，１００３ｈ，１００２ｈの順番に変化している。もし、ストアのアドレス範囲の先頭アドレス＞ロードのアドレス範囲の先頭アドレスの場合は、ＲＡＭにおけるデータの読書き方向はアドレス順の順方向へ切り替えられる。また、ストアのアドレス範囲の先頭アドレス＝ロードのアドレス範囲の先頭アドレスアドレス範囲の先頭アドレスの場合は、ＲＡＭにおけるデータの読書き方向はアドレス順の順方向及び逆方向のいずれであってもよい。こうして、図６に示されるように、手法（ｂ２）では、ストア／ロードのサイクルタイム換算の総所要時間は、１ポートＲＡＭ、２ポートＲＡＭ、及び４ポートＲＡＭにおいてそれぞれ３２，１７，９となる。
【００２３】
図６において、ロードフェーズの開始がストアフェーズの開始より１サイクルタイムだけ遅れているのは、ＲＡＭにおけるストアのアドレス範囲とロードのアドレス範囲とが、部分的でな重複ではなく、全体が重複している場合を想定したためである。全体的重複の場合に、ロードフェーズとストアフェーズとを同時に開始すると、ＲＡＭの同一アドレスが同時に読出し及び書込まれることになり、不具合が生じる。ロードフェーズの開始をストアフェーズの開始より１サイクルタイムだけ遅らせることにより、全体が重複している場合にも、ＲＡＭにおいてストアに係る書込みをロードに係る読出しより先行させる原則が維持され、不具合の発生を排除できる。
【００２４】
なお、ＲＡＭにおけるストアのアドレス範囲とロードのアドレス範囲とが全体的に重複している場合は、ストア／ロードを中止する手段を装備することもできる。ＲＡＭにおけるストアのアドレス範囲とロードのアドレス範囲とが全体的に重複している場合に、ＲＡＭにおける同一アドレスを同時に読書きしてしまう問題があるが、該場合は、ストア／ロードの必要はないので、ストア／ロードを中止するようにすれば、ロードフェーズとストアフェーズとを同時に開始しても、ＲＡＭの同一アドレスが同時に読出し及び書込まれる事態は起こらないとともに、ロードフェーズとストアフェーズとの同時開始により、ストア／ロードのサイクルタイム換算の総所要時間を図６の手法（ｂ２）の数値よりさらに１サイクルタイムだけ短縮することができる。
【００２５】
図７はストア／ロード制御装置１０の構成図である。加算器１１は、新ＣＰ１２及び旧ＣＰ１３の値を入力され、旧ＣＰ１３の値から新ＣＰ１２の値を引いた減算値を算出する。すなわち、加算器１１は、新ＣＰ１２から２進値は１の補数へ変換し、こうして補数変換された新ＣＰ１２と、そのままの旧ＣＰ１３とを加算して、旧ＣＰ１３の値から新ＣＰ１２の値を引いた減算値を計算する。負検出器１４は、加算器１１の出力が負であるとき、すなわち、新ＣＰ１２の値＞旧ＣＰ１３の値であるとき、その検出信号をアドレス生成器１５へ出力する。アドレス生成器１５は、新ＣＰ１２、旧ＣＰ１３、及び負検出器１４からの入力に基づいて各サイクルタイムにおけるレジスタ２０及びＲＡＭ２１のストアアドレス及びロードアドレスを計算する。レジスタ２０及びＲＡＭ２１は、共に、読出し及び書込みを同時実施可能であるだけでなく、読出し方向をアドレス順の順逆のいずれの方向にも切替自在になっている。アドレス発生器１５は、負検出器１４の出力が負である場合は、レジスタ２０及びＲＡＭ２１における読書き方向をアドレス順の逆方向へ切替え、また、負検出器１４の出力が負でない場合は、レジスタ２０及びＲＡＭ２１における読書き方向をアドレス順の順方向へ切替える。なお、レジスタ２０のレジスタ総数をｎとすると、レジスタ２０において、読書き方向をアドレス順の順方向としている場合は、レジスタ２０における読書きは０番地からｎ−１番地へ向かう順方向になり、また、読書き方向をアドレス順の逆方向としている場合は、レジスタ２０における読書きはｎ−１番地から０番地へ向かう逆方向になる。アドレス発生器１５は、ストアフェーズの各サイクルタイムにおけるストアアドレスをレジスタ２０の出力アドレス部及びＲＡＭ２１の書込みアドレス部へ通知し、これにより、レジスタ２０は、対応の出力アドレスのデータを出力データ部からＲＡＭ２１へ書込みデータとして送り、ＲＡＭ２１は該書込みデータを書込みアドレスへ書込む。アドレス発生器１５はロードフェーズにおける各サイクルタイムにおけるロードアドレスをレジスタ２０の入力アドレス部及びＲＡＭ２１の読出しアドレス部へ通知される。これにより、ＲＡＭ２１は、対応の読出しアドレスのデータを読出しデータ部からレジスタ２０の入力データ部へ送り、レジスタ２０は該入力データを入力アドレスへロードする。
【００２６】
図８はストア／ロード制御装置１０の機能ブロック図である。第１の記憶手段３０及び第２の記憶手段３１は、図７のレジスタ２０及びＲＡＭ２１に対応しており、共に、読書き自在、読書きを並行して実施自在、かつ読書き方向をアドレス順で順逆自在とされているものである。第１の記憶手段３０は第２の記憶手段３１における所定のアドレス範囲にマップされている。登録手段３５は、ＣＰに対応し、第２の記憶手段３１において第１の記憶手段３０のマップされたアドレス範囲の先頭アドレス等の情報が登録されている。登録手段３５の内容が更新されるごとに、ストア／ロード手段３２は、第２の記憶手段３１への第１の記憶手段３０のデータのストア、及び第１の記憶手段３０への第２の記憶手段３１のデータのロードを実行する。アドレス範囲関係検出手段３６は、登録手段３５の内容が更新されると、更新前の内容に係る第２の記憶手段３１におけるアドレス範囲と更新後の内容に係る第２の記憶手段３１におけるアドレス範囲との重複関係を検出する。方向決定手段３７は、アドレス範囲関係検出手段３６が重複を検出したときは、更新前と更新後の登録手段３５の内容に基づいてストア／ロード手段３２による第１及び第２の記憶手段３０，３１における読書き方向を決定する。例えば、ストアのアドレス範囲の先頭アドレスがロードのアドレス範囲の先頭アドレスより先である場合は、第１の記憶手段３０における読書き方向及びそれに対応する第２の記憶手段３１における書読み方向はアドレス順の逆方向へ切替えられ、その他の場合には、第１の記憶手段３０における読書き方向及びそれに対応する第２の記憶手段３１における書読み方向はアドレス順の順方向へ切替えられる。典型的には、ストア／ロード手段３２によるロード作動の開始はストア作動の開始から１サイクルタイム遅らされる。
【００２７】
【発明の効果】
本発明では、第２の記憶手段における読書き方向を適宜、アドレス順の逆方向へ切り替えることにより、第２の記憶手段においてストアのアドレス範囲とロードのアドレス範囲とが重複していても、データを破壊することなく、ストアフェーズ及びロードフェーズを並行実施して、ストア／ロードの総所要時間を短縮することができる。
【図面の簡単な説明】
【図１】コンピュータにおけるレジスタについてのストア及びロードの説明図である。
【図２】各種方式においてＣＰ更新時のストアフェーズとロードフェーズについて時間軸上の位置を示す図である。
【図３】ストアフェーズとロードフェーズとを並行して実施する場合の問題点の説明図である。
【図４】ＲＡＭにおける読書きを手法（ｂ１）に従って実施した場合のＲＡＭにおけるストアアドレス及びロードアドレスの時間変化を示す図である。
【図５】ＲＡＭにおける読書きを手法（ｂ２）に従って実施した場合のＲＡＭにおけるストアアドレス及びロードアドレスの時間変化を示す図である。
【図６】ストア／ロードを終了するのにかかる時間をサイクルタイム換算で示す図である。
【図７】ストア／ロード制御装置の構成図である。
【図８】ストア／ロード制御装置の機能ブロック図である。
【符号の説明】
１０    ストア／ロード制御装置
２０    レジスタ
２１    ＲＡＭ
３０    第１の記憶手段
３１    第２の記憶手段
３２    ストア／ロード手段
３５    登録手段
３６    アドレス範囲関係検出手段
３７    方向決定手段
３８    制御手段
【図１】
0003636121.tif 000002
【図２】
0003636121.tif 000003
【図３】
0003636121.tif 000004
【図４】
0003636121.tif 000005
【図５】
0003636121.tif 000006
【図６】
0003636121.tif 000007
【図７】
0003636121.tif 000008
【図８】
0003636121.tif 000009