(57)【特許請求の範囲】
【請求項１】
プログラムされた命令の実行順序を変更する計算機の制御方法であって、前記プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行する第一のステップと、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、前記第一の命令を実行することにより得られた結果を前記アドレスに対応するデータに上書きする第二のステップと、を有し
前記第一のステップでは、前記第二の命令において実行対象とされたデータのアドレスと、前記第二の命令を実行することにより得られた結果を記憶する記憶手段を特定する情報とが記憶され、
前記第一のステップにおいて記憶された前記アドレスと前記記憶手段を特定する情報のうち少なくとも一方は、さらに第三の命令を実行することにより書き換えられる、
ことを特徴とする計算機の制御方法。
【請求項２】
プログラムされた命令の実行順序を変更する計算機の制御方法であって、前記プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行する第一のステップと、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、前記第一の命令を実行することにより得られた結果を前記アドレスに対応するデータに上書きする第二のステップと、を有し
前記第一のステップでは、前記第二の命令において実行対象とされたコンテキストの識別情報が記憶され、
前記第二のステップでは、前記コンテキストの前記識別情報に応じて上書きを行う、
ことを特徴とする計算機の制御方法。
【請求項３】
プログラムされた命令の実行順序を変更する計算機の制御方法であって、前記プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行する第一のステップと、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、前記第一の命令を実行することにより得られた結果を、割り込み処理プログラムにより前記アドレスに対応するデータに上書きする第二のステップと、
を有することを特徴とする計算機の制御方法。
【請求項４】
プログラムされた命令の実行順序を変更する計算機の制御方法であって、前記プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行する第一のステップと、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、前記第一の命令を実行することにより得られた結果を、分岐命令の実行により指定された分岐先のプログラムによって前記アドレスに対応するデータに上書きする第二のステップと、
を有することを特徴とする計算機の制御方法。
【請求項５】
前記第一の命令は、記憶手段へ前記第一データを記憶させるストア命令であり、前記第二の命令は、前記記憶手段から前記データを読み出すロード命令である、
ことを特徴とする請求項１ないし４いずれかに記載の計算機の制御方法。
【請求項６】
前記第一のステップでは、前記第二の命令において実行対象とされたデータのアドレスと、前記第二の命令を実行することにより得られた結果を記憶する記憶手段を特定する情報とが記憶され、
前記第二のステップでは、前記アドレスと前記記憶手段を特定する情報とに応じて前記上書きを行う、
ことを特徴とする請求項１ないし４いずれか記載の計算機の制御方法。
【請求項７】
プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行した場合に、前記第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、
前記判定手段において、前記アドレスが前記アドレス領域に含まれるものと判定されたときには、前記保存先記憶手段に記憶された前記保存先において、前記第一の命令を実行することにより得られた結果を前記アドレスに対応する前記第二データに上書きするデータ回復手段と、
を備えた前記プログラムされた命令を実行する計算機であって、
第三の命令を実行することにより、保存先記憶手段に記憶された保存先を書き換える保存先書き換え手段をさらに備える、
ことを特徴とする計算機。
【請求項８】
プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行した場合に、前記第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、
前記判定手段において、前記アドレスが前記アドレス領域に含まれるものと判定されたときには、前記保存先記憶手段に記憶された前記保存先において、前記第一の命令を実行することにより得られた結果を前記アドレスに対応する前記第二データに上書きするデータ回復手段と、
を備えた前記プログラムされた命令を実行する計算機であって、
前記第二の命令の実行対象とされたコンテキストを特定する情報を記憶するコンテキスト情報記憶手段をさらに備え、
前記判定手段は、前記コンテキスト情報記憶手段に記憶された情報に基づいて前記第一の命令の実行対象とされるコンテキストが前記第二の命令の実行対象とされたコンテキストと一致すると判断される場合においてのみ活性化される、
ことを特徴とする計算機。
【請求項９】
プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行した場合に、前記第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、
前記判定手段において、前記アドレスが前記アドレス領域に含まれるものと判定されたときには、前記保存先記憶手段に記憶された前記保存先において、前記第一の命令を実行することにより得られた結果を前記アドレスに対応する前記第二データに上書きするデータ回復手段と、
を備えた前記プログラムされた命令を実行する計算機であって、
前記データ回復手段は、前記判定手段において前記第一データのアドレスが前記第二データのアドレス領域に含まれるものと判定されたときには、割り込み処理プログラムにおいて上書きを実行する、
ことを特徴とする計算機。
【請求項１０】
プログラムにおいて第一の命令より後置された第二の命令を、前記第一の命令より先に実行した場合に、前記第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、
前記第一の命令の実行対象とされる第一データのアドレスが、前記第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、
前記判定手段において、前記アドレスが前記アドレス領域に含まれるものと判定されたときには、前記保存先記憶手段に記憶された前記保存先において、前記第一の命令を実行することにより得られた結果を前記アドレスに対応する前記第二データに上書きするデータ回復手段と、
を備えた前記プログラムされた命令を実行する計算機であって、
前記データ回復手段は、前記判定手段において前記第一データのアドレスが前記第二データのアドレス領域に含まれるものと判定されたときには、分岐命令の実行により指定された分岐先のプログラムによって上書きを実行する、
ことを特徴とする計算機。
【請求項１１】
データを記憶する記憶手段をさらに備え、
前記第一の命令は、記憶手段へ前記第一データを記憶させるストア命令であり、前記第二の命令は、前記記憶手段から前記データを読み出すロード命令である、
ことを特徴とする請求項７ないし１０いずれかに記載の計算機。
【請求項１２】
データを記憶する記憶手段をさらに備え、
前記保存先記憶手段は前記保存先として、前記第二の命令において実行対象とされた前記第二データのアドレス及び前記第二の命令を実行することにより得られた結果が格納される前記記憶手段を特定する情報を記憶する、
ことを特徴とする請求項７ないし１０いずれかに記載の計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムされた命令を実行する計算機とその制御方法に関するものである。
【０００２】
【従来の技術】
図１は、汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。図１に示されるように、この計算機はメモリ１と、メモリ１に接続された命令読み出し部３と、メモリ１及び命令読み出し部３に接続された命令実行部５と、命令実行部５に接続されたレジスタ制御部７と、命令読出し部３と命令実行部５及びレジスタ制御部７に接続された割り込み制御部９とを備える。
【０００３】
ここで、命令読み出し部３は命令読み出し制御部１１と、プログラムカウンタ（ＰＣ）１３と、命令語レジスタ（ＩＲ）１５とを含む。そして、命令読み出し制御部１１はメモリ１に接続され、プログラムカウンタ（ＰＣ）１３は命令読み出し制御部１１に接続される。さらに、命令語レジスタ（ＩＲ）１５は命令読み出し制御部１１に接続される。
【０００４】
また、命令実行部５は命令デコード部１７と、ロード命令実行部１９と、ストア命令実行部２１と、命令実行回路２３と、浮動小数点（Ｆ）ロード命令実行部２５と、浮動小数点（Ｆ）ストア命令実行部２７と、浮動小数点（Ｆ）演算命令実行部２９とを含む。
そして、命令デコード部１７は命令語レジスタ１５に接続され、ロード命令実行部１９はメモリ１及び命令デコード部１７に接続される。
【０００５】
また、ストア命令実行部２１は命令デコード部１７及び後述する汎用レジスタ３７に接続され、命令実行回路２３は命令デコード部１７と汎用レジスタ３７及び後述するレジスタ３１，３３，３５に接続される。また、浮動小数点ロード命令実行部２５はメモリ１及び命令デコード部１７に接続され、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９は命令デコード部１７及び後述する浮動少数点レジスタ３９に接続される。
【０００６】
一方、レジスタ制御部７はレジスタ（ＥＰＣＲ）３１と、レジスタ（ＥＰＳＲ）３３と、レジスタ（ＰＳＲ）３５と、汎用レジスタ３７と、浮動小数点レジスタ３９とを含む。ここで、レジスタ（ＥＰＣＲ）３１とレジスタ（ＥＰＳＲ）３３及びレジスタ（ＰＳＲ）３５は、さらに割込制御部４０に接続される。また、汎用レジスタ３７はロード命令実行部１９とストア命令実行部２１及び命令実行回路２３に接続される。また、浮動小数点レジスタ３９は浮動小数点ロード命令実行部２５と、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９に接続される。
【０００７】
また、割り込み制御部９は割込制御回路４０を含む。そして、割込制御回路４０は命令読出制御部１１とプログラムカウンタ１３、ロード命令実行部１９、ストア命令実行部２１、命令実行回路２３、浮動小数点ロード命令実行部２５、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９などに接続される。
【０００８】
上記のような構成を有する計算機において、命令読み出し部３はプログラムカウンタ１３が示す命令語をメモリ１から読み出し、命令語レジスタ（ＩＲ）１５を介して命令実行部１５へ供給する。また命令読出制御部１１は、命令実行部５あるいは割込処理を行う割込制御回路４０より分岐先アドレスが供給された場合には、それをプログラムカウンタ１３へ書き込む。なお命令読出制御部１１は、それ以外の場合には次の命令語を命令実行部５へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ１３をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路４０へ割込信号を供給する。
【０００９】
また、命令デコード部１７は、命令語レジスタ１５から供給された命令をデコードし、ロード命令の場合にはロード命令実行部１９へ、ストア命令の場合にはストア命令実行部２１へ、浮動小数点ロード命令の場合には浮動小数点ロード命令実行部２５へ、浮動小数点ストア命令の場合には浮動小数点ストア命令実行部２７へ、浮動小数点演算命令の場合には浮動小数点演算命令実行部２９へ、割込復帰命令やその他の命令の場合には命令実行回路２３へそれぞれ供給する。
【００１０】
また、ロード命令実行部１９はロード命令が供給された場合には、図２に示されるように、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を汎用レジスタ３７へ書き込む。ここでロード命令は、図３に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRD とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がロード対象とするデータのアドレスを意味し、コードGRD は読み出した結果を保持するレジスタの番号を意味する。なお、ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１１】
同様に、ストア命令実行部２１はストア命令が供給された場合には、図４に示されるように、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。ここでストア命令は、図５に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRS とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がストア対象とするデータのアドレスを意味し、コードGRS は書き込む値を保持するレジスタの番号を意味する。なお、ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１２】
また、浮動小数点ロード命令実行部２５は、浮動小数点ロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を浮動小数点レジスタ３９へ書き込む。なお、浮動小数点ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１３】
また、浮動小数点ストア命令実行部２７は、浮動小数点ストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ３９の領域からデータを読出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。また、浮動小数点演算命令実行部２９は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ３９から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ３９へ書き込む。
【００１４】
また、命令実行回路２３は、命令デコード部１７から演算命令が供給された場合には汎用レジスタ３７から読出した値に基づき演算を行い、その結果を汎用レジスタ３７へ書き込む。また、命令デコード部１７から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ１３へ供給する。同様に割込み復帰命令が供給された場合には、割込み発生前の動作状態を示すデータをＰＳＲ３５へ書き込む。そしてこのとき、ＥＰＣＲ３１から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ１３へ供給する。なお、上記命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１５】
また、ＥＰＣＲ３１は割込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割込み発生時に設定される。また、ＰＳＲ３５は動作状態（state ）を示すデータを保持し、ＥＰＳＲ３３は割込み発生時に設定された割込み発生前の動作状態を示すデータを保持する。
また、割込制御回路４０は命令読み出し部３あるいは命令実行部５から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。
【００１６】
以下に、上記計算機の動作を要約すると、初期動作状態を通常の動作としたとき次のようになる。通常の動作においては、命令読み出し部３は、プログラムカウンタ１３が示す命令語を読み出し、命令実行部５へ供給し、命令実行部５は供給された命令を実行する。
一方、割り込みが発生した時には、割込制御回路４０は命令読み出し部３あるいは命令実行部５から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。また、命令読み出し部３は割込制御部９から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部５へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【００１７】
また、割り込みから復帰する時は、命令実行部５は割込み復帰命令を実行することにより、ＥＰＳＲ３３の値をＰＳＲ３５へ書き込む。また、ＥＰＣＲ３１に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部３へ供給する。このとき命令読み出し部３は、命令実行部５から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部５へ供給する。そして、以降においては上記通常の動作がなされる。
【００１８】
以上のような従来の計算機では、プログラムを構成する命令語の並列性を活用し、計算機の命令レベルでの処理能力を向上させる手法として、スーパースカラや投機的実行（speculative execution ）といった、同時に複数の命令を実行する制御方式が採られている。ここで、一般にこのような計算機では、複数の命令実行部を有し、プログラムに含まれる命令を順次実行するが、１サイクルにおいて複数の命令がメモリから読み出され、また該命令相互の依存関係が考慮されつつ１サイクル中で複数の命令が発行されうる。
【００１９】
また、この時命令の実行制御において、アウト・オブ・オーダー完了（out-of-order completion ）を採ることで、計算機の命令レベルでの処理能力をより向上ささせることができる。ここで、「アウト・オブ・オーダー完了」とは、プログラム上における命令の順序すなわち命令の発行順序と、命令の実行順序すなわち命令の完了順序とが異なることを意味する。そして、このような実行制御を行うことにより、命令実行部の有効稼働率を高め、プログラムの全体的な実行時間の短縮が図られている。なお、アウト・オブ・オーダー完了において、プログラムが生成された時の命令の順序を保証するためには、データ依存関係や制御依存関係といった命令の依存関係が考慮されるが、これらの依存関係は命令語に記されている情報から抽出される。
【００２０】
一方、メモリ１に対する操作に注目すると、メモリ１からのロード操作では、メモリ１からデータを読み出しその結果を計算機のレジスタに書き込む。そして、その後その読み出したデータに依存する一連の操作が開始される。従って、メモリ１からのロード操作をより早期に開始することにより、キャッシュミスなどによるメモリ１へのアクセスの遅延が計算機全体の動作に対して与える影響が少なくされる。
【００２１】
このような理由により、プログラムを作成する際には、上記ロード操作を早期に開始すべくロード命令をプログラム上でより前に配置することが考えられる。そして、このように配置すれば、プログラム上での本来の位置より前に該ロード命令を移動させることと等価な効果が得られる。この時、メモリ１へのストア操作の前に上記ロード操作を実行する場合において、両操作対象とするデータのアドレス領域が全く重複していないときには操作順序を変更しないときと同じデータ処理がなされるが、アドレス領域の少なくとも一部が重複しているときにはデータ処理の結果が相違する。
【００２２】
すなわち、本来は上記ストア操作によりメモリ１へストアされたストアデータが上記ロード操作により読み出されるところ、このロード操作がストア操作より先に実行されると該ロード操作により該ストア前の旧データが読み出されることとなり操作順序の変更に伴ってなされる処理が相違するという問題が生じる。なお、この問題は曖昧なメモリ参照として知られている。
【００２３】
従って、従来においてはこのような問題を回避するため、メモリ１へのストア操作の前にメモリ１へのロード操作を実行することはできなかった。
【００２４】
【発明が解決しようとする課題】
本発明は、上述の問題点を解消するためになされたものであり、曖昧なメモリ参照を回避しつつストア操作の前にロード操作を実行し動作の高速化が図られた計算機とその制御方法を提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記の目的は、プログラムされた命令の実行順序を変更する計算機の制御方法であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行する第一のステップと、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果をアドレスに対応するデータに上書きする第二のステップとを有し、第一のステップでは、第二の命令において実行対象とされたデータのアドレスと、第二の命令を実行することにより得られた結果を記憶する記憶手段を特定する情報とが記憶され、第一のステップにおいて記憶されたアドレスと記憶手段を特定する情報のうち少なくとも一方は、さらに第三の命令を実行することにより書き換えられる、ことを特徴とする計算機の制御方法を提供することにより達成される。このような手段によれば、命令の実行順序を変更したことによるデータ処理の乱れを是正することができる。
また、プログラムされた命令の実行順序を変更する計算機の制御方法であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行する第一のステップと、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果をアドレスに対応するデータに上書きする第二のステップと、を有し、第一のステップでは、第二の命令において実行対象とされたコンテキストの識別情報が記憶され、第二のステップでは、コンテキストの識別情報に応じて上書きを行う、ことを特徴とする計算機の制御方法を提供することにより達成される。
また、プログラムされた命令の実行順序を変更する計算機の制御方法であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行する第一のステップと、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果を、割り込み処理プログラムによりアドレスに対応するデータに上書きする第二のステップと、を有することを特徴とする計算機の制御方法を提供することにより達成される。
また、プログラムされた命令の実行順序を変更する計算機の制御方法であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行する第一のステップと、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果を、分岐命令の実行により指定された分岐先のプログラムによってアドレスに対応するデータに上書きする第二のステップと、を有することを特徴とする計算機の制御方法を提供することにより達成される。
【００２６】
ここで、第一の命令を記憶手段へ第一データを記憶させるストア命令とし、
第二の命令を記憶手段からデータを読み出すロード命令とすれば、ロード命令を先に実行することによりデータ処理の高速化を図ることができる。
また、第一のステップでは、第二の命令において実行対象とされたデータのアドレスと、第二の命令を実行することにより得られた結果を記憶する記憶手段を特定する情報とが記憶され、第二のステップでは、上記アドレスと記憶手段を特定する情報とに応じて上書きを行うことができる。
【００２７】
また、本発明の目的は、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行した場合に、第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、判定手段において、アドレスがアドレス領域に含まれるものと判定されたときには、保存先記憶手段に記憶された保存先において、第一の命令を実行することにより得られた結果をアドレスに対応する第二データに上書きするデータ回復手段とを備えたプログラムされた命令を実行する計算機であって、第三の命令を実行することにより、保存先記憶手段に記憶された保存先を書き換える保存先書き換え手段をさらに備えた、計算機を提供することにより達成される。
また、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行した場合に、第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、判定手段において、アドレスがアドレス領域に含まれるものと判定されたときには、保存先記憶手段に記憶された保存先において、第一の命令を実行することにより得られた結果をアドレスに対応する第二データに上書きするデータ回復手段と、を備えた前記プログラムされた命令を実行する計算機であって、第二の命令の実行対象とされたコンテキストを特定する情報を記憶するコンテキスト情報記憶手段をさらに備え、判定手段は、コンテキスト情報記憶手段に記憶された情報に基づいて第一の命令の実行対象とされるコンテキストが第二の命令の実行対象とされたコンテキストと一致すると判断される場合においてのみ活性化される、ことを特徴とする計算機を提供することにより達成される。
また、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行した場合に、第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、判定手段において、アドレスがアドレス領域に含まれるものと判定されたときには、保存先記憶手段に記憶された保存先において、第一の命令を実行することにより得られた結果をアドレスに対応する第二データに上書きするデータ回復手段と、を備えた前記プログラムされた命令を実行する計算機であって、データ回復手段は、判定手段において第一データのアドレスが第二データのアドレス領域に含まれるものと判定されたときには、割り込み処理プログラムにおいて上書きを実行する、ことを特徴とする計算機を提供することにより達成される。
また、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行した場合に、第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、判定手段において、アドレスがアドレス領域に含まれるものと判定されたときには、保存先記憶手段に記憶された保存先において、第一の命令を実行することにより得られた結果をアドレスに対応する第二データに上書きするデータ回復手段と、を備えた前記プログラムされた命令を実行する計算機であって、データ回復手段は、判定手段において第一データのアドレスが第二データのアドレス領域に含まれるものと判定されたときには、分岐命令の実行により指定された分岐先のプログラムによって上書きを実行する、ことを特徴とする計算機を提供することにより達成される。
ここで、データを記憶する記憶手段をさらに備え、第一の命令は、記憶手段へ第一データを記憶させるストア命令であり、第二の命令は、記憶手段から第二データを読み出すロード命令であるとすることができる。
【００２８】
また、データを記憶する複数の記憶手段をさらに備え、保存先記憶手段は保存先として、第二の命令において実行対象とされた第二データのアドレス及び第二の命令を実行することにより得られた結果が格納される記憶手段を特定する情報を記憶するものとすることができる。
【００２９】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一符号は同一又は相当部分を示す。
本発明の実施の形態に係る計算機はプログラムされた命令を実行する計算機であるが、データ処理の高速化を図るためロード命令をストア命令より先に実行するようコンパイラによりいわゆる静的順序変更を施すと共に、該順序の変更に伴うデータ処理の乱れを事後的に是正するものである。以下において、より詳しく説明する。
［実施の形態１］
図６は、本発明の実施の形態１に係る計算機の構成を示す図である。図６に示されるように、本実施の形態に係る計算機は、図１に示された従来の計算機に対して履歴制御部５１をさらに備え、命令実行部４１には投機的ロード命令実行部４３、干渉回復ストア命令実行部４５、ロード履歴リセット部４７が含まれる点で相違する。
【００３０】
ここで投機的ロード命令実行部４３は、入力端がデコード部４２とメモリ１に接続され、出力端が汎用レジスタ３７と投機的ロード操作履歴制御部５１及び割込制御回路５５に接続される。また、干渉回復ストア命令実行部４５は、入力端がデコード部４２と汎用レジスタ３７及び履歴制御部５１に接続され、出力端がメモリ１と汎用レジスタ３７と履歴制御部５１及び割込制御回路５５に接続される。そして、ロード履歴リセット部４７は入力端がデコード部４２に接続され、出力端が履歴制御部５１に接続される。
【００３１】
図８は投機的ロード命令による動作を示すフローチャートである。まず上記投機的ロード命令実行部４３は、デコード部４２から投機的ロード命令が供給された場合に、汎用レジスタ３７から読み出した値から実効アドレスを求める。そして、図８に示されるように、ステップＳ１において該実効アドレスに対応するメモリ１内の領域からデータを読み出し、それを汎用レジスタ３７へ書き込む。次に、投機的ロード命令実行部４３は、ステップＳ２において投機的ロード命令を実行したことを登録するための登録信号ＡＤＤを履歴制御部５１へ供給し、履歴制御部５１はロード操作履歴テーブルにロード操作の履歴を登録する。なお、図９に示されるように、投機的ロード命令の命令形式としては、図３に示されたロード命令の命令形式と同様な形式が採用される。また、投機的ロード命令実行部４３は、上記投機的ロード命令を実行する際に割込みを検出した場合には、割込制御回路５５へ割込信号を供給する。
【００３２】
また、図１０は干渉回復ストア命令による動作を示すフローチャートである。まず干渉回復ストア命令実行部４５は、デコード部４２から干渉回復ストア命令が供給された場合に、汎用レジスタ３７から読み出した値から実効アドレスを求め、同時に確認信号ＣＣを履歴制御部５１へ供給する。そしてステップＳ１において、履歴制御部５１は供給された確認信号ＣＣに応じて、ストア操作及び投機的ロード操作履歴テーブルに登録されている投機的ロード操作の対象とされる両アドレス領域が干渉（重複）しているか否かを確認する。
【００３３】
次に、ステップＳ２において上記干渉の有無が判断され、干渉していないと判断された場合には、ステップＳ３へ進み、汎用レジスタ３７から読み出したデータを該実効アドレスに対応するメモリ１内の領域へ書き込む。一方、ステップＳ２において干渉していると判断された場合にはステップＳ１０へ進み、ロード操作履歴テーブルを参照して上記投機的ロード操作において格納先とされたロード対象レジスタへストアデータを上書きする。この後、ステップＳ３へ進み、汎用レジスタ３７から読み出したデータを該実効アドレスに対応するメモリ１内の領域へ書き込む。
【００３４】
なお、図１１に示されるように、命令の命令形式としては、図５に示されたストア命令の命令形式と同様な形式が採用される。また、干渉回復ストア命令実行部４５は、上記干渉回復ストア命令を実行する際に割込みを検出した場合には、割込制御回路５５へ割込信号を供給する。
また、図１２は投機的ロード操作履歴無効化命令による動作を示すフローチャートである。図１２に示されるように、ロード履歴リセット部４７はデコード部４２から投機的ロード操作履歴無効化命令が供給されたとき、履歴制御部５１へリセット信号ＲＳを供給することによって投機的ロード操作履歴テーブルの全エントリを無効化する。なお、図１３に示されるように、投機的ロード操作履歴無効化命令の命令形式は命令コードOP-CODE だけからなるものとされる。
【００３５】
図７は、図６に示された履歴制御部５１の構成を示す図である。図７に示されるように、履歴制御部５１は、アドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、ストアデータレジスタ６３と、デコード回路６５と、比較器６７〜６９と、Ｅフィールド（E ）７０，７４，７８と、アドレスフィールド（ADDR）７１，７５，７９と、データタイプフィールド（DT）７２，７６，８０と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、オーバラップ判定部８３と、オーバラップエントリ検出部８５と、無効エントリ検出部８７と、投機的ロード操作履歴リセット制御部８９と、投機的ロード操作履歴登録制御部９１と、投機的ロード操作履歴干渉確認制御部９３とを含む。
【００３６】
ここで、アドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、ストアデータレジスタ６３及びデコード回路６５は命令実行部４１に接続される。そして、アドレスレジスタ５７は、投機的ロード命令や干渉回復ストア命令が実行される際の実効アドレスを保持する。また、データタイプレジスタ５９は、投機的ロード命令や干渉回復ストア命令の実行においてロードストア対象とされるデータの型（大きさ）を示す識別値を保持する。そして、レジスタ番号レジスタ６１は、投機的ロード命令や干渉回復ストア命令の実行におけるロードストア操作対象のレジスタ番号を保持する。
【００３７】
また、ストアデータレジスタ６３は、干渉回復ストア命令による書き込み値  （ストアデータ）を保持する。また、デコード回路６５は命令実行部４１から供給された信号を解析し、対応する制御部を起動する。すなわち、登録信号ＡＤＤが供給された場合には投機的ロード操作履歴登録制御部９１を起動し、確認信号ＣＣが供給された場合には投機的ロード操作履歴干渉確認制御部９３を起動し、リセット信号ＲＳが供給された場合には投機的ロード操作履歴リセット制御部８９を起動する。
【００３８】
一方、比較器６７〜６９はアドレスレジスタ５７及びデータタイプレジスタ５９と対応するエントリに接続される。ここで、上記投機的ロード操作履歴テーブルは並設された複数のエントリからなり、各エントリは有効性を示すＥフィールド（E ）７０，７４，７８と、登録されている投機的ロード操作の実効アドレスを示すアドレスフィールド（ADDR）７１，７５，７９と、登録されている投機的ロード操作の対象とされるデータの型を示すデータタイプフィールド（DT）７２，７６，８０と、登録されている投機的ロード操作においてロード対象とされるレジスタの番号を示すレジスタ番号フィールド（REG ＃）７３，７７，８１とを含む。なお、上記データタイプフィールド（DT）７２，７６，８０にはデータの型に応じた識別値が記録され、該識別値は例えば符号無しバイトに対して０、符号付きバイトに対しては１、符号無しハーフワードには２、符号付きハーフワードには３、ワードには４、ダブルワードには５、クワッドワードには６とされる。
【００３９】
そして、上記比較器６７〜６９は、Ｅフィールドが１である有効なエントリに対して、アドレスフィールド（ADDR）７１，７５，７９やデータタイプフィールド（DT）７２，７６，８０から求まるロード対象データのアドレス領域と、アドレスレジスタ５７やデータタイプレジスタ５９から求まるストア対象データのアドレス領域とを比較し両者が干渉（重複）しているか否かを示す信号を出力する。
【００４０】
また、オーバラップ判定部８３は比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、投機的ロード操作履歴として登録されている投機的ロード操作の対象とされたアドレス領域と、干渉回復ストア命令によるストア操作の対象とされたアドレス領域とが干渉するか否かを判定し、干渉すると判定された場合にはオーバラップ信号ＯＬを出力する。そして、オーバラップエントリ検出部８５は、比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、投機的ロード操作の対象とされ干渉しているエントリの番号を検出する。
【００４１】
また、無効エントリ検出部８７は、各エントリのＥフィールド７０，７４，７８の情報に応じて、先になされた投機的ロード操作における空きエントリ（無効なエントリ）の検出を行う。また、投機的ロード操作履歴リセット制御部８９はデコード回路６５に接続され、各エントリのＥフィールド７０，７４，７８が０の値にリセットされる。
【００４２】
また、投機的ロード操作履歴登録制御部９１は、アドレスレジスタ５７とデータタイプレジスタ５９、レジスタ番号レジスタ６１、デコード回路６５及び無効エントリ検出部８７に接続され、供給された登録信号ＡＤＤに応じて、無効エントリ検出部８７で検出された空きエントリのアドレスフィールド（ADDR）７１，７５，７９とデータタイプフィールド（DT）７２，７６，８０と、レジスタ番号フィールド（REG ＃）７３，７７，８１とに投機的ロード操作に対応する情報を書き込む。なおこのとき、該情報を書き込んだエントリのＥフィールド７０，７４，７８には、該エントリが有効であることを示す１の値が書込まれる。
【００４３】
また、投機的ロード操作履歴干渉確認制御部９３はアドレスレジスタ５７とデータタイプレジスタ５９、レジスタ番号レジスタ６１、ストアデータレジスタ６３、オーバラップ判定部８３、オーバラップエントリ検出部８５、デコード回路６５及び汎用レジスタ３７に接続され、さらにレジスタ番号フィールド（REG ＃）７３，７７，８１の情報が供給される。そして、投機的ロード操作履歴干渉確認制御部９３は、オーバラップ判定部８３において干渉していると判定された場合、先にロードされた該データが格納されているレジスタへ、ストア操作による書き込み値（ストアデータ）を書き込む。なお、上記レジスタへ実際に書き込まれる値は、ストアデータに対しデータタイプフィールド（DT）７２，７６，８０の情報に基づいて符号拡張や零拡張といった処理を施した値とされる。
【００４４】
次に、上記の計算機における動作を要約して説明する。なお、初期状態は通常動作を行う。まず、該通常の動作においては命令読み出し部３は、プログラムカウンタ（ＰＣ）１３が示す命令語を読み出し、命令実行部４１へ供給する。そして、命令実行部４１は供給された命令を実行するが、投機的ロード命令が供給された場合には、履歴制御部５１へ該ロード操作の履歴を追加的に登録する。
【００４５】
一方、干渉回復ストア命令が供給された場合には、該ストア操作の対象とされるデータのアドレスが、先の投機的ロード操作の対象とされ履歴制御部５１に既に登録されているデータのアドレス領域に対して干渉するものであるか否かを確認する。そして、干渉している場合には、干渉しているデータが既に格納されているレジスタへストアデータを書き込み、干渉していることによるデータの乱れを回復する。そして、通常動作においては、以上のような動作を繰り返す。
【００４６】
また、割り込みが発生した場合には、命令読み出し部３又は命令実行部４１から供給された割込信号に応じて、割込制御回路５５は割り込みからの復帰先の命令語のアドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ発生した割り込みに対応する動作状態をレジスタ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ１３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じてメモリ１から命令語を読み出し、該命令語を命令実行部４１へ供給する。そして、以降においては上記の通常の動作と同様である。
【００４７】
また、割り込みから復帰する場合には、命令実行部４１は割り込み復帰命令を実行することによりレジスタ３３に格納された値をレジスタ３５へ書き込む。また、レジスタ３１に格納された値を読み出し、分岐先アドレスとして命令読み出し部３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じて命令語をメモリ１から読み出し、命令実行部４１へ供給する。そして、以降においては上記の通常の動作と同様である。
【００４８】
以上より、本発明の実施の形態１に係る計算機によれば、先に実行された投機的ロード命令において操作対象とされたデータのアドレス領域と、後に実行する干渉回復ストア命令において操作対象とされるデータのアドレス領域とが干渉する場合には、該干渉するデータについてはストアデータを上書きするため、ストア操作の前にロード操作を実行する場合に曖昧なメモリ参照が回避され、正確かつ高速な動作を実現することができる。
［実施の形態２］
図１４は、本発明の実施の形態２に係る計算機の構成を示す図である。図１４に示されるように、本実施の形態２に係る計算機は、図６に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部４１には投機的ロード操作履歴読み出し命令実行部９５と、投機的ロード操作履歴書き込み命令実行部９７がさらに備えられ、それに伴い履歴制御部１０３の構成が変更される点で相違するものである。また、命令実行部４１には浮動小数点ロード命令実行部２５と浮動小数点ストア命令実行部２７および浮動小数点演算命令実行部２９も含むため、それに伴い投機的浮動小数点ロード命令実行部９９と、干渉回復浮動少数点ストア命令実行部１０１とがさらに備えられる点でも相違する。
【００４９】
ここで、投機的ロード操作履歴読み出し命令実行部９５は命令デコード部９４と汎用レジスタ３７及び履歴制御部１０３に接続され、投機的ロード操作履歴書き込み命令実行部９７は汎用レジスタ３７と履歴制御部１０３に接続される。また、投機的浮動小数点ロード命令実行部９９及び干渉回復浮動少数点ストア命令実行部１０１は、命令デコード部９４と浮動小数点ロード命令実行部２５、浮動小数点レジスタ３９、割込制御回路４０及び履歴制御部１０３に接続される。
【００５０】
図１５は、図１４に示された履歴制御部１０３の構成を示す図である。図１５に示されるように、履歴制御部１０３は図７に示された履歴制御部５１と同様な構成を有するが、レジスタ種別レジスタ（RTREG ）１０５と投機的ロード操作履歴読み出し命令実行部１１３及び投機的ロード操作履歴書き込み命令実行部１１５とをさらに備え、各エントリにはレジスタの種別を示すレジスタタイプフィールド（RT）１０７〜１０９が含まれる点で相違する。
【００５１】
ここで、レジスタ種別レジスタ（RTREG ）１０５は命令実行部１００に接続され、投機的ロード操作履歴読み出し命令実行部１１３はアドレスレジスタ５７と各エントリ、デコード回路１１１及び命令実行部１００に接続される。また、投機的ロード操作履歴書き込み命令実行部１１５はアドレスレジスタ５７と、データタイプレジスタ５９、レジスタ種別レジスタ１０５、レジスタ番号レジスタ６１、デコード回路１１１及び各エントリに接続される。
【００５２】
上記において、投機的ロード操作履歴読み出し命令実行部９５は、命令デコード部９４から投機的ロード操作履歴読み出し命令が供給されたとき履歴制御部１０３へ履歴読み出し信号ＨＲを供給し、読み出した投機的ロード操作の履歴を汎用レジスタ３７へ書き込む。また、投機的ロード操作履歴書き込み命令実行部９７は、命令デコード部９４から投機的ロード操作履歴書き込み命令が供給されたとき、汎用レジスタ３７から読み出したデータを履歴書き込み信号ＨＷと共に履歴制御部１０３へ供給する。
【００５３】
また、履歴制御部１０３は、投機的ロード命令実行部４３あるいは投機的浮動小数点ロード命令実行部９９から供給された登録信号ＡＤＤに基づいて、投機的ロード操作履歴テーブルに投機的ロード操作を登録する。そして、干渉回復ストア命令実行部４５及び干渉回復浮動少数点ストア命令実行部１０１から供給された確認信号ＣＣに応じて、干渉回復ストア命令あるいは干渉回復浮動小数点ストア命令によるストア操作と、投機的ロード操作履歴テーブルに登録されている投機的ロード操作においてそれぞれ操作対象とされたアドレス領域が、相互に干渉するものであるか否かを確認する。そして、干渉している場合には、干渉回復ストア命令あるいは干渉回復浮動小数点ストア命令の実行時における書き込み値  （ストアデータ）を、先の投機的ロード操作でロード先とされ、かつ該干渉が生じているデータが格納されたレジスタへ上書きする。
【００５４】
また、投機的ロード操作履歴読み出し命令実行部９５から供給された履歴読み出し信号ＨＲに応じて、投機的ロード操作履歴読み出し命令実行部１１３により、ロード操作履歴テーブルから投機的ロード操作の履歴を読み出し、投機的ロード操作履歴読み出し命令実行部９５へ供給する。さらに、投機的ロード操作履歴書き込み命令実行部９７から供給された履歴書き込み信号ＨＷに応じて、投機的ロード操作履歴書き込み命令実行部１１５により、投機的ロード操作履歴書き込み命令実行部９７から供給されたデータを投機的ロード操作履歴テーブルへ書き込む。
【００５５】
また、図１５に示されたレジスタ種別レジスタ１０５には、各命令すなわち投機的ロード命令、干渉回復ストア命令、投機的浮動小数点ロード命令及び干渉回復浮動小数点ストア命令を実行するに当り操作対象とするレジスタを識別する識別値が保持される。ここで、該識別値は、例えば汎用レジスタに対しては０、浮動小数点レジスタに対しては１とされる。また、上記レジスタタイプフィールド（RT）１０７〜１０９には、投機的ロード操作においてロード対象とされたレジスタの種別を示す上記設定値が保持される。
【００５６】
以上より、本実施の形態２に係る計算機によれば、上記実施の形態１に係る計算機と同様な効果を奏すると共に、投機的ロード操作履歴テーブルを任意に書き換えることができるため、コンテキストの切り替えが容易であるという効果をさらに得ることができる。
また、操作対象とするレジスタの種別を示す情報も履歴として保持することにより、先行させた汎用レジスタ３７に対する操作と浮動小数点レジスタ３９に対する操作とを区別することができるため、双方のレジスタにおけるデータ処理において曖昧なメモリ参照が回避され、正確かつ高速な動作を実現することができる。
［実施の形態３］
図１６は、本発明の実施の形態３に係る計算機の構成を示す図である。図１６に示されるように、本実施の形態３に係る計算機は、図１４に示された実施の形態２に係る計算機と同様な構成を有するが、命令実行部１２０には浮動小数点ロード命令実行部２５と浮動小数点ストア命令実行部２７、浮動小数点演算命令実行部２９、投機的浮動小数点ロード命令実行部９９及び干渉回復浮動少数点ストア命令実行部１０１の代わりに、コンテキスト識別番号レジスタ読み出し命令実行部（CRC ）１１９とコンテキスト識別番号レジスタ書き込み命令実行部（CWC ）１２１が備えられる点で相違する。
【００５７】
また、レジスタ制御部１２３には浮動小数点レジスタ３９の代わりにコンテキスト識別番号レジスタ１２５が備えられ、割込み制御部１２９にはさらにオーバーフロー例外割込み制御部１３１が備えられる点でも相違する。さらに、上記のような構成に伴い履歴制御部１２７の構成が変更されるものである。
ここで、コンテキスト識別番号レジスタ読み出し命令実行部（CRC ）１１９およびコンテキスト識別番号レジスタ書き込み命令実行部（CWC ）１２１は、命令デコード部１１７と汎用レジスタ３７、履歴制御部１２７及びコンテキスト識別番号レジスタ１２５に接続される。また、コンテキスト識別番号レジスタ１２５は履歴制御部１２７に接続される。さらに、オーバーフロー例外割込み制御部１３１はプログラムカウンタ１３とレジスタ３１，３３，３５及び履歴制御部１２７に接続される。
【００５８】
図１７は、図１６に示された履歴制御部１２７の構成を示す図である。図１７に示されるように、履歴制御部１２７は図１５に示された履歴制御部１０３と同様な構成を有するが、オーバーフロー判定部１３９をさらに備え、各エントリにはレジスタの種別を示すレジスタタイプフィールド（RT）１０７〜１０９の代わりにコンテキスト識別フィールド（CTXT＃）１３５〜１３７が含まれる点で相違する。そして、上記オーバーフロー判定部１３９には各エントリのＥフィールド７０，７４，７８の値が供給される。
【００５９】
ここで、コンテキスト識別番号レジスタ１２５は現在のコンテキストを識別する識別番号を保持する。また、コンテキスト識別番号レジスタ読み出し命令実行部（CRC ）１１９は命令デコード部１１７からコンテキスト識別番号レジスタ読み出し命令が供給されると、コンテキスト識別番号レジスタ１２５に格納されたコンテキスト識別番号を読み出し、汎用レジスタ３７へ書き込む。また、コンテキスト識別番号レジスタ書き込み命令実行部（CWC ）１２１は命令デコード部１１７からコンテキスト識別番号レジスタ書き込み命令が供給されると、汎用レジスタ３７から読み出したデータをコンテキスト識別番号レジスタ１２５へ書き込む。
【００６０】
さらに、オーバーフロー例外割込み制御部１３１は、履歴制御部１２７から供給されたオーバーフロー信号ＯＦが供給されると割り込みを発生させ、割り込みからの復帰先となるアドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ、発生した割り込みに対応する動作状態をレジスタ３５へそれぞれ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ１３へ供給する。
【００６１】
また、オーバーフロー判定部１３９は投機的ロード操作履歴テーブルに登録可能な空きエントリがないか否かを判定する。すなわち、より具体的には、例えばＥフィールド７０，７４，７８から０の値が供給されたエントリが空きであると判定される。そして、オーバーフロー判定部１３９は、空きエントリの有無を投機的ロード操作履歴登録制御部９１へ通知すると共に、空きエントリが無い場合にはオーバーフロー信号ＯＦをオーバーフロー例外割込み制御部１３１へ供給する。
【００６２】
上記のような本実施の形態３に係る計算機においては、Ｅフィールド７０，７４，７８が１の有効なエントリにおいて、コンテキスト識別フィールド（CTXT  ＃）１３５〜１３７の値とコンテキスト識別番号レジスタ１２５から供給されたコンテキスト識別番号とが一致する場合にだけ比較器１３２〜１３４が活性化され、上記干渉の有無が判断されるため、コンテキスト毎のデータ処理において曖昧なメモリ参照が回避され、正確かつ高速な動作を実現することができる。
【００６３】
また、コンテキスト識別番号レジスタ１２５に格納されたコンテキスト識別番号を任意に書き換えることができるため、コンテキストの切り替えが容易であるという効果をさらに得ることができる。
［実施の形態４］
図１８は、本発明の実施の形態４に係る計算機の構成を示す図である。図１８に示されるように、本実施の形態４に係る計算機は、図６に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部１４５には上記実施の形態２で説明された投機的ロード操作履歴読み出し命令実行部９５が備えられ、さらにストアデータテーブル読み出し命令実行部１４３が備えられる点で相違する。
【００６４】
また、割り込み制御部１５０には、干渉回復例外割込制御部１４９が備えられる点でも相違する。
ここで、ストアデータテーブル読み出し命令実行部１４３は命令デコード部１４１と履歴制御部１４７及び汎用レジスタ３７に接続される。また、干渉回復例外割込制御部１４９はプログラムカウンタ１３とレジスタ３１，３３，３５及び履歴制御部１４７に接続される。
【００６５】
また、上記のような構成に伴って履歴制御部１４７の構成も以下のように相違する。図１９は、図１８に示された履歴制御部１４７の構成を示す図である。図１９に示されるように、履歴制御部１４７は図７に示された履歴制御部５１と同様な構成を有するが、上記実施の形態２で説明された投機的ロード操作履歴読み出し命令実行部１１３と、ストアデータテーブル読み出し命令実行部１５７と、データフィールドDATA０〜DATAｍがさらに備えられ、各エントリにはＶフィールド１５１〜１５３及びエントリフィールド１５４〜１５６が設けられる点で相違する。
【００６６】
ここで、ストアデータテーブル読み出し命令実行部１５７は、アドレスレジスタ５７とデータフィールドDATA０〜DATAｍ、デコード回路６５及び命令実行部４１に接続される。
上記のような構成を有する計算機において、ストアデータテーブル読み出し命令実行部１４３は、命令デコード部１４１から供給されるストアデータテーブル読み出し命令に応じて、履歴制御部１４７へストアデータ読み出し信号ＳＲを供給することにより後述するストアデータテーブルを読み出し、汎用レジスタ３７へ書き込む。
【００６７】
また、干渉回復例外割込制御部１４９は、履歴制御部１４７から供給されたオーバラップ信号ＯＬに応じて、割り込みを発生させ割り込みからの復帰先アドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ、発生した割り込みに対応する動作状態をレジスタ３５へ書き込む。また、発生した割り込みに対する分岐先アドレスを命令読み出し部３へ供給する。
【００６８】
そして、履歴制御部１４７は、ストアデータテーブル読み出し命令実行部１４３から供給されたストアデータ読み出し信号ＳＲに応じて、ストアデータテーブルを読み出し、ストアデータテーブル読み出し命令実行部１４３へ供給する。
また、図１９に示されたＶフィールド１５１〜１５３のデータは、対応するエントリにおいて投機的ロード操作対象とされたアドレス領域と、干渉回復例外付きストア命令のストア操作対象とされたアドレス領域とが干渉するか否かを示す。そして、例えば０のときには干渉しないことを意味し、１のときには干渉することを意味する。
【００６９】
さらに、エントリフィールド１５４〜１５６はＶフィールド１５１〜１５３が１の時の干渉回復例外付きストア命令による書き込み値（ストアデータ）を保持しているストアデータテーブルのエントリ番号を示す。そして、後述する干渉回復例外の割り込み処理プログラムにおいては、このエントリフィールド１５４〜１５６を参照しつつ回復が行われる。
【００７０】
また、データフィールドDATA０〜DATAｍは、上記ストアデータテーブルのエントリを構成し、投機的ロード操作履歴テーブルに登録されている投機的ロード操作のアドレス領域と、干渉回復例外付きストア命令のストア操作対象とされたアドレス領域とが干渉している場合の、干渉しているストア操作の書き込み値（ストアデータ）を保持する。
【００７１】
以上のような構成を有する本実施の形態４に係る計算機の動作を、以下に説明する。なお、初期状態は通常動作を行う。まず、該通常の動作においては命令読み出し部３は、プログラムカウンタ（ＰＣ）１３が示す命令語を読み出し、命令実行部１４５へ供給する。そして、命令実行部１４５は供給された命令を実行するが、投機的ロード命令が供給された場合には、履歴制御部１４７へ該ロード操作の履歴を追加的に登録する。
【００７２】
一方、干渉回復例外付きストア命令が供給された場合の動作は図２０のフローチャートに示される。すなわち、図２０のステップＳ１に示されるように、該ストア操作の対象とされるデータのアドレスが、先の投機的ロード操作の対象とされ履歴制御部１４７に既に登録されているデータのアドレス領域に対して干渉するものであるか否かが確認される。そして、ステップＳ２の判断において干渉している場合には、ステップＳ１０へ進み、ストアテーブルへストアデータを追加的に書き込むと共に、干渉回復例外の割り込み処理プログラムを実行する。
【００７３】
ここで、干渉回復例外の割り込み処理プログラムの概略が、図２２のフローチャートに示される。すなわち、干渉回復例外の割り込み処理プログラムにおいては、ステップＳ１においてコンテキストの退避がなされ、ステップＳ２においてロード操作履歴テーブル及びストアデータテーブルを参照して、干渉しているロード操作におけるロード先のレジスタへストアデータを書き込む。次に、ステップＳ３においてコンテキストの復元がなされ、ステップＳ４において割り込み復帰命令の実行により干渉回復例外の割り込みからの復帰がなされる。
【００７４】
一方、図２０に示されたステップＳ２の判断において干渉していない場合には、ステップＳ３へ進み、汎用レジスタ３７から読み出したデータをストア対象アドレス域のデータとして書き込む。また、ストアデータテーブル読み出し命令が供給された場合には、ストアデータテーブルから所定のストアデータを読み出す。そして、通常動作においては、以上のような動作を繰り返す。なお、干渉回復例外付きストア命令の命令形式は図２１に示されるように、図５に示されたストア命令の命令形式と同様である。
【００７５】
また、割り込みが発生した場合には、命令読み出し部３又は命令実行部１４５から供給された割込信号に応じて、割込制御回路４０は割り込みからの復帰先の命令語のアドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ、発生した割り込みに対応する動作状態をレジスタ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ１３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じてメモリ１から命令語を読み出し、該命令語を命令実行部１４５へ供給する。そして、以降においては上記の通常の動作と同様である。
【００７６】
また、割り込みから復帰する場合には、命令実行部１４５は割り込み復帰命令を実行することによりレジスタ３３に格納された値をレジスタ３５へ書き込む。また、レジスタ３１に格納された値を読み出し、分岐先アドレスとして命令読み出し部３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じて命令語をメモリ１から読み出し、命令実行部４１へ供給する。そして、以降においては上記の通常の動作と同様である。
【００７７】
以上より、本実施の形態４に係る計算機によれば、該干渉によるデータの乱れを割り込みによるデータ処理というソフト的な手段によって回復することができるため、上記実施の形態１に係る計算機と同様な効果を容易に得ることができる。
［実施の形態５］
図１９に示された上記実施の形態４に係る計算機の履歴制御部１４７においては、Ｖフィールド１５１〜１５３及びエントリフィールド１５４〜１５６をデータフィールドDATA０〜DATAｍに隣接するよう配置することも考えられる。
【００７８】
図２３は、上記のようなレイアウトを実現する実施の形態５に係る履歴制御部１５９の構成を示す図である。図２３に示されるように、データフィールドDATAn （n は0 〜m ）に隣接するようにＶフィールドVn及びエントリフィールドENTnを配置することによっても、上記実施の形態４に係る計算機と同様な効果を得ることができる。
［実施の形態６］
図２４は、本発明の実施の形態６に係る計算機の構成を示す図である。図２４に示されるように、本実施の形態６に係る計算機は図１８に示された実施の形態４に係る計算機と同様な構成を有するが、命令実行部１６５において干渉回復ストア命令実行部４５の代わりに干渉回復分岐付きストア命令実行部１６１と、干渉回復分岐アドレスレジスタ書き込み命令実行部１６３とが備えられる点で相違する。また、レジスタ制御部１６９には干渉回復分岐アドレスレジスタ（BAR ）１６７がさらに備えられる点でも相違する。
【００７９】
ここで、干渉回復分岐付きストア命令実行部１６１は命令デコード部１４１と汎用レジスタ３７、割込制御回路４０及び履歴制御部１４８に接続される。また、干渉回復分岐アドレスレジスタ書き込み命令実行部１６３は命令デコード部１４１と汎用レジスタ３７及び干渉回復分岐アドレスレジスタ（BAR ）１６７に接続される。そして、干渉回復分岐アドレスレジスタ（BAR ）１６７はさらに履歴制御部１４８に接続される。
【００８０】
また、図２５は図２４に示された履歴制御部１４８の構成を示す図である。図２５に示されるように、本実施の形態に係る履歴制御部１４８は図１９に示された履歴制御部１４８と同様な構成を有するが、投機的ロード操作履歴干渉確認制御部９３には干渉回復分岐アドレスレジスタ（BAR ）１６７及びプログラムカウンタ１３が接続される点で相違する。
【００８１】
ここで、上記干渉回復分岐付きストア命令実行部１６１は命令デコード部１７から干渉回復分岐付きストア命令が供給されたとき、汎用レジスタ３７から読み出した値から実効アドレスを求め、汎用レジスタ３７から読み出したデータをメモリ１の該実効アドレスに対応する領域へ書き込む。また、履歴制御部１４８へ確認信号ＣＣを出力する。なお、命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０に供給する。
【００８２】
また、干渉回復分岐アドレスレジスタ書き込み命令実行部１６３は、命令デコード部１７から干渉回復分岐アドレスレジスタ書き込み命令が供給されたとき、汎用レジスタ３７から読み出したデータを干渉回復分岐アドレスレジスタ１６７へ書き込む。そして、この干渉回復分岐アドレスレジスタ１６７には、干渉によるデータの乱れから回復する回復コードの先頭アドレスが保持される。
【００８３】
次に、上記のような構成を有する計算機の動作を説明する。なお、初期状態は通常動作を行う。まず、該通常の動作においては命令読み出し部３は、プログラムカウンタ（ＰＣ）１３が示す命令語を読み出し、命令実行部１６５へ供給する。そして、命令実行部１６５は供給された命令を実行するが、投機的ロード命令が供給された場合には、履歴制御部１４８へ該ロード操作の履歴を追加的に登録する。
【００８４】
一方、干渉回復分岐付きストア命令が供給された場合の動作は図２６のフローチャートに示される。すなわち、図２６のステップＳ１に示されるように、該ストア操作の対象とされるデータのアドレスが、先の投機的ロード操作の対象とされ履歴制御部１４８に既に登録されているデータのアドレス領域に対して干渉するものであるか否かが確認される。そして、ステップＳ２の判断において干渉している場合には、ステップＳ１０へ進み、ストアデータをストアデータテーブルに追加し、干渉回復分岐アドレスレジスタ１６７が示す命令アドレスへ分岐する。
【００８５】
一方、ステップＳ２の判断において干渉していない場合には、ステップＳ３へ進み、汎用レジスタ３７から読み出したデータをストア対象アドレス域のデータとして書き込む。そして、通常動作においては、以上のような動作を繰り返す。なお、干渉回復分岐付きストア命令の命令形式は図２７に示されるように、図５に示されたストア命令の命令形式と同様である。また、ストアデータテーブル読み出し命令が供給された場合には、ストアデータテーブルからストアデータを読み出す。
【００８６】
また、割り込みが発生した場合には、命令読み出し部３又は命令実行部１６５から供給された割込信号に応じて、割込制御回路４０は割り込みからの復帰先の命令語のアドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ、発生した割り込みに対応する動作状態をレジスタ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ１３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じてメモリ１から命令語を読み出し、該命令語を命令実行部１６５へ供給する。そして、以降においては上記の通常の動作と同様である。
【００８７】
また、割り込みから復帰する場合には、命令実行部１６５は割り込み復帰命令を実行することによりレジスタ３３に格納された値をレジスタ３５へ書き込む。また、レジスタ３１に格納された値を読み出し、分岐先アドレスとして命令読み出し部３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じて命令語をメモリ１から読み出し、命令実行部４１へ供給する。そして、以降においては上記の通常の動作と同様である。
【００８８】
以上より、本実施の形態６に係る計算機によれば、該干渉によるデータの乱れを分岐命令の実行により指定された分岐先のプログラムによって回復することができるため、簡易な構成により上記実施の形態１に係る計算機と同様な効果を得ることができる。
さらに、本実施の形態６に係る計算機においては、上記回復に際してコンテキストの退避や復元といった動作を必要としないため、データ処理速度をより高速化することができる。
【００８９】
最後に、本発明の課題を解決するための手段について付記する。
（１）プログラムされた命令の実行順序を変更する計算機の制御方法であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行する第一のステップと、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果をアドレスに対応するデータに上書きする第二のステップとを有することを特徴とする計算機の制御方法。
（２）第一のステップでは、第二の命令において実行対象とされたデータのアドレスと、第二の命令を実行することにより得られた結果を記憶する記憶手段を特定する情報とが記憶され、第二のステップでは、アドレスと記憶手段を特定する情報とに応じて上書きを行う（１）に記載の計算機の制御方法。
（３）第一のステップにおいて記憶されたアドレスと記憶手段を特定する情報とは、さらに第三の命令を実行することにより消去される（２）に記載の計算機の制御方法。
（４）第一のステップにおいて記憶されたアドレスと記憶手段を特定する情報のうち少なくとも一方は、さらに第三の命令を実行することにより書き換えられる（２）に記載の計算機の制御方法。ここで、上記（３）又は（４）の手段によれば、コンテキストを自在に変更することができるため、データ処理の自由度を高めることができる。
（５）第一のステップでは、第二の命令において実行対象とされたコンテキストの識別情報が記憶され、第二のステップでは、コンテキストの識別情報に応じて上書きを行う（１）に記載の計算機の制御方法。このような手段によれば、コンテキスト毎に命令の実行順序を変更したことによるデータ処理の乱れを是正することができる。
（６）第二のステップにおいて、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、割り込み処理プログラムにより上書きが実行される（１）に記載の計算機の制御方法。このような手段によれば、ソフト的に上記データ処理の乱れを是正することができるため、容易に正確かつ高速なデータ処理を実現できる。（７）第二のステップにおいて、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされたデータのアドレス領域に含まれるときには、分岐命令の実行により指定された分岐先のプログラムによって上書きが実行される（１）に記載の計算機の制御方法。このような手段によれば、動作の高速化をはかることができる。
（８）プログラムされた命令を実行する計算機であって、プログラムにおいて第一の命令より後置された第二の命令を、第一の命令より先に実行した場合に、第二の命令を実行することにより得られた結果の保存先を記憶する保存先記憶手段と、第一の命令の実行対象とされる第一データのアドレスが、第二の命令において実行対象とされた第二データのアドレス領域に含まれるか否かを判定する判定手段と、判定手段において、上記アドレスがアドレス領域に含まれるものと判定されたときには、保存先記憶手段に記憶された保存先において、第一の命令を実行することにより得られた結果をアドレスに対応する第二データに上書きするデータ回復手段とを備えたことを特徴とする計算機。
（９）第二の命令の実行対象とされたコンテキストを特定する情報を記憶するコンテキスト情報記憶手段をさらに備え、判定手段は、コンテキスト情報記憶手段に記憶された情報に基づいて第一の命令の実行対象とされるコンテキストが第二の命令の実行対象とされたコンテキストと一致すると判断される場合においてのみ活性化される（８）に記載の計算機。
（１０）データ回復手段は、判定手段においてアドレスがアドレス領域に含まれるものと判定されたときには、割り込み処理プログラムにおいて上書きを実行する（８）に記載の計算機。
（１１）データ回復手段は、判定手段において上記アドレスがアドレス領域に含まれるものと判定されたときには、分岐命令の実行により指定された分岐先のプログラムによって上書きを実行する（８）に記載の計算機。
（１２）第三の命令を実行することにより、保存先記憶手段に記憶された保存先を消去する保存先消去手段をさらに備えた（８）に記載の計算機。
（１３）第三の命令を実行することにより、保存先記憶手段に記憶された保存先を書き換える保存先書き換え手段をさらに備えた（８）に記載の計算機。
【００９０】
【発明の効果】
上述の如く、第一の命令の実行対象とされる第一データのアドレスが、先に実行された第二の命令において実行対象であったデータのアドレス領域に含まれるときには、第一の命令を実行することにより得られた結果を上記アドレスに対応するデータに上書きすれば、命令の実行順序を変更したことによるデータ処理の乱れを是正することができるため、命令の実行順序を変更したときにおいても正確なデータ処理を実現できる。
【００９１】
ここで、第一の命令をストア命令とし、第二の命令をロード命令とすれば、ロード命令を先に実行することによりデータ処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。
【図２】ロード命令による動作を示すフローチャートである。
【図３】ロード命令の命令形式を示す図である。
【図４】ストア命令による動作を示すフローチャートである。
【図５】ストア命令の命令形式を示す図である。
【図６】本発明の実施の形態１に係る計算機の構成を示す図である。
【図７】図６に示された履歴制御部の構成を示す図である。
【図８】投機的ロード命令による動作を示すフローチャートである。
【図９】投機的ロード命令の命令形式を示す図である。
【図１０】干渉回復ストア命令による動作を示すフローチャートである。
【図１１】干渉回復ストア命令の命令形式を示す図である。
【図１２】投機的ロード操作履歴無効化命令による動作を示すフローチャートである。
【図１３】投機的ロード操作履歴無効化命令の命令形式を示す図である。
【図１４】本発明の実施の形態２に係る計算機の構成を示す図である。
【図１５】図１４に示された履歴制御部の構成を示す図である。
【図１６】本発明の実施の形態３に係る計算機の構成を示す図である。
【図１７】図１６に示された履歴制御部の構成を示す図である。
【図１８】本発明の実施の形態４に係る計算機の構成を示す図である。
【図１９】図１８に示された履歴制御部の構成を示す図である。
【図２０】干渉回復例外付きストア命令による動作を示すフローチャートである。
【図２１】干渉回復例外付きストア命令の命令形式を示す図である。
【図２２】干渉回復例外の割込み処理プログラムを示すフローチャートである。
【図２３】本発明の実施の形態５に係る計算機に含まれた履歴制御部の構成を示す図である。
【図２４】本発明の実施の形態６に係る計算機の構成を示す図である。
【図２５】図２４に示された履歴制御部の構成を示す図である。
【図２６】干渉回復分岐付きストア命令による動作を示すフローチャートである。
【図２７】干渉回復分岐付きストア命令の命令形式を示す図である。
【符号の説明】
１  メモリ
３  命令読み出し部
５，４１，１００，１２０，１４５，１６５  命令実行部
７，４９，１０２，１２３，１６９  レジスタ制御部
９，５３，１２９，１５０  割り込み制御部
１１  命令読み出し制御部
１３  プログラムカウンタ（ＰＣ）
１５  命令語レジスタ（ＩＲ）
１７，４２，９４，１１７，１４１  命令デコード部
１９  ロード命令実行部
２１  ストア命令実行部
２３  命令実行回路
２５  浮動小数点（Ｆ）ロード命令実行部
２７  浮動小数点（Ｆ）ストア命令実行部
２９  浮動小数点（Ｆ）演算命令実行部
３１  レジスタ（ＥＰＣＲ）
３３  レジスタ（ＥＰＳＲ）
３５  レジスタ（ＰＳＲ）
３７  汎用レジスタ
３９  浮動小数点レジスタ
４０，５５  割込制御回路
４３  投機的ロード命令実行部
４５  干渉回復ストア命令実行部
４７  ロード履歴リセット部
５１，１０３，１２７，１４７，１４８，１５９  履歴制御部
５７  アドレスレジスタ
５９  データタイプレジスタ
６１  レジスタ番号レジスタ
６３  ストアデータレジスタ
６５，１１１  デコード回路
６７〜６９，１３２〜１３４  比較器
７０，７４，７８  Ｅフィールド（E ）
７１，７５，７９  アドレスフィールド（ADDR）
７２，７６，８０  データタイプフィールド（DT）
７３，７７，８１  レジスタ番号フィールド（REG ＃）
８３  オーバラップ判定部
８５  オーバラップエントリ検出部
８７  無効エントリ検出部
８９  投機的ロード操作履歴リセット制御部
９１  投機的ロード操作履歴登録制御部
９３  投機的ロード操作履歴干渉確認制御部
９５，１１３  投機的ロード操作履歴読み出し命令実行部
９７，１１５  投機的ロード操作履歴書き込み命令実行部
９９  投機的浮動小数点ロード命令実行部
１０１  干渉回復浮動少数点ストア命令実行部
１０５  レジスタタイプレジスタ（RTREG ）
１０７〜１０９  レジスタタイプフィールド
１１９  コンテキスト識別番号レジスタ読み出し命令実行部（CRC ）
１２１  コンテキスト識別番号レジスタ書き込み命令実行部（CWC ）
１２５  コンテキスト識別番号レジスタ
１３１  オーバーフロー例外割込み制御部
１３５〜１３７  コンテキスト識別フィールド
１３９  オーバーフロー判定部
１４３，１５７  ストアデータテーブル読み出し命令実行部
１４９  干渉回復例外割込制御部
１５１〜１５３, V0〜Vm  Ｖフィールド
１５４〜１５６, ENT0〜ENTm  エントリフィールド
１６１  干渉回復分岐付きストア命令実行部
１６３  干渉回復分岐アドレスレジスタ書き込み命令実行部
１６７  干渉回復分岐アドレスレジスタ（BAR ）
ＡＤＤ  登録信号
ＣＣ  確認信号
ＲＳ  リセット信号
ＨＲ  履歴読み出し信号
ＨＷ  履歴書き込み信号
ＯＬ  オーバラップ信号
ＯＦ  オーバーフロー信号
ＳＲ  ストアデータ読み出し信号
DATA０〜DATAｍ  データフィールド
【図１】
0003762597.tif 000002
【図２】
0003762597.tif 000003
【図３】
0003762597.tif 000004
【図４】
0003762597.tif 000005
【図５】
0003762597.tif 000006
【図６】
0003762597.tif 000007
【図７】
0003762597.tif 000008
【図８】
0003762597.tif 000009
【図９】
0003762597.tif 000010
【図１０】
0003762597.tif 000011
【図１１】
0003762597.tif 000012
【図１２】
0003762597.tif 000013
【図１３】
0003762597.tif 000014
【図１４】
0003762597.tif 000015
【図１５】
0003762597.tif 000016
【図１６】
0003762597.tif 000017
【図１７】
0003762597.tif 000018
【図１８】
0003762597.tif 000019
【図１９】
0003762597.tif 000020
【図２０】
0003762597.tif 000021
【図２１】
0003762597.tif 000022
【図２２】
0003762597.tif 000023
【図２３】
0003762597.tif 000024
【図２４】
0003762597.tif 000025
【図２５】
0003762597.tif 000026
【図２６】
0003762597.tif 000027
【図２７】
0003762597.tif 000028