(57)【特許請求の範囲】
【請求項１】
中断されることなく一体不可分に実行されるべき動作である不可分動作を定義するソフトウエアプログラムに含まれる擬似ストア命令により、前記不可分動作においてアクセスされるべきデータがメモリ上に存在するか否かをチェックし、存在しない場合に必要なデータを前記メモリ上に確保する確保工程と、
前記メモリ上に必要なデータを確保してから前記不可分動作を実行する実行工程、を備えることを特徴とする仮想記憶方式のデータ処理方法。
【請求項２】
データを記憶する第１の記憶手段と、
前記第１の記憶手段の記憶内容の一部の写しを記憶する第２の記憶手段と、
前記第２の記憶手段をアクセスする命令を含み、中断なく一体に実行されるべき不可分動作を定義する命令セットと前記第２の記憶手段上に任意のデータを確保するために前記第２の記憶手段をアクセスする特定命令を含むプログラムを記憶する第３の記憶手段と、
前記第３の記憶手段に記憶されたプログラムを実行する実行手段と、
前記第１と第２の記憶手段に接続され、前記実行手段に応答し、前記第２の記憶手段上に被アクセスデータが存在しない場合、前記第１の記憶手段から前記第２の記憶手段に被アクセスデータを転送する手段と、
不可分動作の実行に先立ち、前記特定命令を実行することにより不可分動作の実行に必要となるデータを予め第２の記憶手段に呼び出しておくことにより不可分動作実行中の割込みの発生を防止し、不可分動作を実現する手段、を備えることを特徴とする想記憶方式のデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、仮想記憶方式を備えた計算機に係り、特に、ページフォルト等の発生による誤動作を防止する仮想記憶制御方式に関する。
【０００２】
【従来の技術】
計算機における処理の中には、一体不可分に（途切れることなく一体的に）実行されなければならないものがある。このような処理を不可分動作という。
この不可分動作を、メモリＭ１，Ｍ２の内容の論理積をレジスタＲ３に記憶させる動作を例に、図１２を参照して説明する。
【０００３】
プログラム１３は、メモリＭ１の内容をレジスタＲ１に記憶させ、メモリＭ２の内容をレジスタＲ２に記憶させる。次に、プログラム１３は、レジスタＲ１とレジスタＲ２との論理積をレジスタＲ３に記憶させる。
【０００４】
ここで、例えば、メモリＭ１の内容をレジスタＲ１に記憶させた直後に割込みが発生し、割込み処理１５がメモリＭ１およびメモリＭ２の内容を変更すると、メモリＭ２の内容が割込み発生前後で異なるため、レジスタＲ２に保持されるデータが所期の値と異なり、演算結果が誤りとなる。このため、メモリＭ１，Ｍ２の内容をレジスタＲ１，Ｒ２に記憶し、論理積をレジスタＲ３に記憶する一連の動作は、途中に割込み動作なく、一体不可分に実行されなければならない。
【０００５】
【発明が解決しようとする課題】
上述の不可分動作を達成するために、不可分動作の実行前に割込み禁止命令を実行し、不可分動作終了後割込み禁止を解除する手法を取ることが考えられる。しかし、このような手法を取ったとしても、禁止できない割込みの発生により、不可分動作中の割込みを完全に禁止することはできない。例えば、デマンドページング方式の仮想記憶計算機においては、ページフォルト割込みは禁止できない。このため、割込み禁止命令を実行したにもかかわらず、上述のメモリＭ２を読み出す際にページフォルト割込みが発生し、割込み処理の終了後、他の優先度の高いプログラムに処理が移行し、この優先度の高いプログラム中でメモリＭ２の内容が操作されてしまう可能性がある。
【０００６】
このような問題を回避するため、従来、不可分動作はソフトウエアで疑似的にメモリインタロックを取ることにより実現したり、システムコールより実現したり、ファームウェアやハードウエアにより不可分動作を１つの命令として実行することにより実現したりしていた。
【０００７】
しかし、ソフトウエアによる疑似メモリ・インタロックにより不可分動作を実行する場合、インタロックのためのオーバーヘッドを伴い、システムコールによる不可分動作を実行する場合は、システムコール（スーパバイザリコール割込み）のオーバーヘッドを伴う。不可分動作が比較的単純な場合、オーバーヘッドの性能への影響は少なくない。
【０００８】
また、不可分動作をハードウェア又はファームウェアによりサポートすると、命令の組合せに自由度がなく、特定目的のために特定命令を使用しなければならなかった。また、特定目的のために、特定命令を使用するので、ハードウェア又はファームウェアの設計量が増加し、一命令の実行時間が長くなり、システムの性能が低下する問題があった。さらに、ハードウエア又はファームウエアの設計量が増えるため、システムの信頼性が低下する。このような問題は、特に、ＲＩＳＣ型計算機で顕著である。
この発明は、上記実情に鑑みてなされたもので、その目的は不可分動作を実行することのできる仮想記憶方式の計算機及び計算方法を提供することである。
【０００９】
この発明の他の目的は、不可分動作中のページフォルト割込み等の禁止できない或いは禁止してはいけない割込みの発生を未然に防止することができる仮想記憶方式の計算機及び計算方法を提供することである。
【００１０】
この発明の他の目的は、ハードウェア又はファームウェアの設計量を最小限にすることにより、設計性能を向上した仮想記憶方式の計算機及び計算方法を提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、この発明の第１の観点にかかる仮想記憶方式のデータ処理方法は、中断されることなく一体不可分に実行されるべき動作である不可分動作を定義するソフトウエアプログラムに含まれる擬似ストア命令により、前記不可分動作においてアクセスされるべきデータがメモリ上に存在するか否かをチェックし、存在しない場合に必要なデータを前記メモリ上に確保する確保工程と、前記メモリ上に必要なデータを確保してから前記不可分動作を実行する実行工程、を備えることを特徴とする。
【００１３】
この発明の第２の観点にかかる仮想記憶方式のデータ処理装置は、データを記憶する第１の記憶手段と、前記第１の記憶手段の記憶内容の一部の写しを記憶する第２の記憶手段と、前記第２の記憶手段をアクセスする命令を含み、中断なく一体に実行されるべき不可分動作を定義する命令セットと前記第２の記憶手段上に任意のデータを確保するために前記第２の記憶手段をアクセスする特定命令を含むプログラムを記憶する第３の記憶手段と、前記第３の記憶手段に記憶されたプログラムを実行する実行手段と、前記第１と第２の記憶手段に接続され、前記実行手段に応答し、前記第２の記憶手段上に被アクセスデータが存在しない場合、前記第１の記憶手段から前記第２の記憶手段に被アクセスデータを転送する手段と、不可分動作の実行に先立ち、前記特定命令を実行することにより不可分動作の実行に必要となるデータを予め第２の記憶手段に呼び出しておくことにより不可分動作実行中の割込みの発生を防止し、不可分動作を実現する手段、を備えることを特徴とする。
【００１５】
【作用】
この発明の第１、第２の観点にかかるデータ処理方法及びデータ処理装置によれば、不可分動作の実行前に必要なデータが準備される。このため、不可分動作中で必要なデータが存在しないことによる割込み、例えば、ページフォルト割込み等の発生を防止でき、不可分動作をソフトウエアで実現できる。
【００１７】
【実施例】
以下、本発明の実施例を図面を参照して説明する。
図１は本発明の第１実施例を示す機能ブロック図である。
【００１８】
図１において、メモリ１は主記憶装置であり、後述するメモリ書込み要求プログラム５により記憶している内容が書換えられる。補助記憶装置３は大容量の補助記憶装置であり、ページ単位でデータを記憶し、メモリ１との間でページイン及びページアウトを行なう。各ページは、例えば、２キロバイト（２ＫＢ）のデータ群から構成される。
【００１９】
メモリ書込み要求プログラム５は、ストア命令、リード命令、演算命令等の通常のデータ処理を行う命令と共に本発明に特有の疑似ストア命令を含み、一連のデータ処理を定義する。
【００２０】
アドレス変換割込み検出機構７は、メモリ書込み要求プログラム５の処理に応答してメモリ１にアクセスの対象となる所望のページが存在するか否かを検出するものであり、該当ページがメモリ１上に存在しない場合には、ページフォルトを検出し、オペレーティングシステム９に制御を渡す。
【００２１】
オペレーティングシステム（以下、ＯＳという。）９はアドレス変換割込み検出機構７によるページフォルトの検出に応答して、メモリ書込み要求プログラム５がアクセスすべきページをメモリ１に転送する。ＯＳ９は転送が終了すると優先度の高いプログラム、例えば、ＯＳ上で動作するアプリケーションプログラムのうち、その時点で優先度が最も高いものに制御を渡す。
【００２２】
次に、本実施例に特有の疑似ストア命令を通常のストア命令と比較しつつ図２を参照して説明する。疑似ストア命令（ＰＳＴ、Ｐｓｅｕｄｏ  ＳＴｏｒｅ）は、実際にデータの書き込みを行わない疑似的なストア命令である。換言すると、疑似ストア命令は、メモリ１上に必要なページを確保する命令である。
【００２３】
ここで、例えば、仮想アドレスａ０、ａ１、ａ２、ａ３がそれぞれ仮想記憶空間上のページＡ０、Ａ１、Ａ２、Ａ３に含まれると仮定すると、図２（ａ）に示されるＰＳＴ（ａ０）はメモリ１上にページＡ０を確保するための疑似ストア命令であり、以下、ＰＳＴ（ａ１）はページＡ１を、ＰＳＴ（ａ２）はページＡ２を、ＰＳＴ（ａ３）はページＡ３をそれぞれ、メモリ１上に確保する疑似ストア命令である。
【００２４】
例えば、メモリ１上にページＡ０が存在しない状態で、ＰＳＴ（ａ０）が実行されると、アドレス変換割込み検出機構７はページフォルトを検出し、ＯＳ９は補助記憶装置３にページＡ０が存在する場合には、補助記憶装置３からメモリ１にページＡ０のデータを転送する。また、ＯＳ９は補助記憶装置３にページＡ０が存在しない場合には、メモリ１にページＡ０用の領域を確保する。
【００２５】
次に、本実施例で使用するストア命令（ＳＴ）を図２（ｂ）を用いて説明する。ストア命令は、データを記憶しているレジスタを示す値と仮想アドレスをパラメータとして有し、指示されたレジスタの保持データを指示されたアドレスに書き込む命令である。図２（ｂ）において、ＳＴ（レジスタ値０，ａ０）は、レジスタＲ０のデータをページＡ０内のアドレスａ０にストアする。ＳＴ（レジスタ値１，１ａ）は、レジスタＲ１のデータをページＡ１内のアドレスａ１にストアする。ＳＴ（レジスタ値２，ａ２）は、レジスタＲ２のデータをページＡ２内のアドレスａ２にストアする。ＳＴ（レジスタ値３，ａ３）は、レジスタＲ３をページＡ３内のアドレスａ３にストアする。
次に、本実施例におけるデータ処理の流れを図３を参照して説明する。
【００２６】
本実施例においては、不可分動作を複数の基本命令の組み合わせで実行するため、不可分動作のプログラムの前に対応する疑似ストア命令を配置する。換言すると、本実施例の仮想記憶方式の計算機はストア命令を含む不可分動作を実行する直前に、不可分動作に含まれるストア命令に対応する疑似ストア命令を実行する。
【００２７】
例えば、不可分動作が図２（ｂ）に示すストア命令ＳＴ（レジスタ値０，ａ０）、ＳＴ（レジスタ値１，ａ１）、ＳＴ（レジスタ値２，ａ２）、ＳＴ（レジスタ値３，ａ３）を含む場合、ユーザーはこの不可分動作を定義するプログラムの直前に対応する疑似ストア命令ＰＳＴ（ａ０）、ＰＳＴ（ａ１）、ＰＳＴ（ａ２）、ＰＳＴ（ａ３）を配置する。
【００２８】
このため、計算機は、不可分動作を実行する前に、ＰＳＴ（ａ０），ＰＳＴ（ａ１），ＰＳＴ（ａ２）およびＰＳＴ（ａ３）を実行し、メモリ１上にページＡ０，ページＡ１，ページＡ２，ページＡ３が存在するか否かをチェックする。仮に、例えば、ページＡ１がメモリ１上に存在しないと、アドレス変換割込み検出機構７はページＡ１についてページフォルトを検出し、ＯＳ９に制御を渡す。ＯＳ９は、ページＡ１をメモリ１に確保し、ページＡ１の初期値データまたは過去にページＡ１へのデータの書き込みがあった場合はそのデータをそのページへ転送する。なお、ＯＳ９は、ページＡ１へのデータ転送の間、その時点で最も優先度の高い他のプログラムに制御を渡すが、やがて、データ転送が完了し、プログラム５に制御が戻る。
【００２９】
その後、メモリ書込み要求プログラム５は、メモリ１にデータを書込むストア命令ＳＴを含む不可分動作を実行する。メモリ１にデータを書き込む際、必要なページは疑似ストア命令の実行により予めメモリ１に用意されているため、不可分動作中でのページフォルト割込みの発生を防止できる。
次に、本実施例を双方向にキューを構成するエレメントＡ，Ｃの間にエレメントＢを挿入する処理に応用した例を図４に示す。
【００３０】
図４（ａ）は双方向にキューを構成するエレメントＡ，Ｃを、図４（ｂ）はエレメントＡ，Ｃの間にエレメントＢを挿入した状態を、図４（ｃ）はその挿入プログラムの例を示す。
【００３１】
エレメントＡ，Ｂ，Ｃの正方向のデータチェーンに使用される領域のアドレスをＡ１，Ｂ１，Ｃ１、逆方向のデータチェーンに使用される領域のアドレスをＡ２，Ｂ２，Ｃ２とする。
【００３２】
エレメントＡとＣの間にエレメントＢを配置するためには、正方向のデータチェーンの場合には、エレメントＡからのチェーン先のアドレスをＢ１，エレメントＢからのチェーン先をアドレスＣ１とすればよく、逆方向のデータチェーンの場合には、エレメントＣからのチェーン先のアドレスをＢ２，エレメントＢからのチェーン先のアドレスをＡ２とすればよい。そこで、ストア命令ＳＴ（Ｃ１，Ｂ１），ＳＴ（Ａ２，Ｂ２），ＳＴ（Ｂ１，Ａ１），ＳＴ（Ｂ２，Ｃ２）を実行して、各エリアの転送先アドレスを書き替える。この転送先アドレスの書き替えの途中でページフォルトが発生し、割込み処理に制御に移り、この割込み処理がキューを操作するとキュー構造が破壊される。このため、前記４つのストア命令は一体不可分に実行されなければならない。
【００３３】
そこで、本例では、図４（ｃ）に示されるように、ストア命令の実行前に疑似ストア命令ＰＳＴ（Ｂ１），ＰＳＴ（Ｂ２），ＰＳＴ（Ａ１），ＰＳＴ（Ｃ２）を予め実行しておき、メモリ１に必要なページを呼び出しておく。その後、ストア命令ＳＴ（Ｃ１，Ｂ１），ＳＴ（Ａ２，Ｂ２），ＳＴ（Ｂ１，Ａ１），ＳＴ（Ｂ２，Ｃ２）を実行して、必要なデータ（転送先アドレス）をメモリに書込む。このようにすれば、疑似ストア命令の実行により、ストア命令の実行時に不可分動作で必要なページが予めメモリに呼びされており、不可分動作中でのページフォルトの発生を防止できる。
【００３４】
第１実施例の構成では、ページフォルト割込み処理の終了後、優先度の高い他のプログラムに制御が移り、他のプログラムがメモリを大量に使用した場合等に、不可分動作が保証されない可能性がある。この点を、図５を参照し、ストア命令ＳＴ（ａ０），ＳＴ（ａ１），ＳＴ（ａ２）によりページＡ０，Ａ１，Ａ２にデータを書き込むプログラム５を実行する場合を例に説明する。
【００３５】
まず、プログラム５は疑似ストア命令ＰＳＴ（ａ０），ＰＳＴ（ａ１），ＰＳＴ（ａ２）を実行してページＡ０，Ａ１，Ａ２がメモリ１上に確保されていることをチェックする。例えば、ページＡ２にページフォルトが検出されると、ＯＳ９に制御が渡り、ＯＳ９はメモリ１上にページＡ２を確保する。ここで、ページＡ２を確保した時点で、マルチタスク処理や非同期割込み処理等のため、プログラム５より優先度の高いプログラム１１が存在すると、ＯＳは優先度の高いプログラム１１に制御を渡す。このプログラム１１が例えば、メモリを大量に使用してシステムのワーキングセットを圧迫したため、ページＡ１がメモリ１から追い出されたと仮定する。その後、プログラム５に制御が戻り、例えば、ページＡ１にデータを書き込むストア命令ＳＴ（ａ１）を実行すると、ページフォルトが発生し、不可分動作が保証できない。
この問題に関しては、以下のような対策が考えられる。
【００３６】
第１に、疑似ストア命令の実行によりページフォルトが検出された場合、割込み処理からリターンした時に、疑似ストア命令によるページのチェックを最初から行うようにすることである。また、第２に、疑似ストア命令を実行することによりメモリ１に確保されたページを、不可分動作中のストア命令の実行完了までメモリ１上に確保しておくことである。そこで、以下、このような対策を施した第２実施例を説明する。
第２実施例
【００３７】
この第２実施例におけるデータ処理の流れを図６を参照して説明する。まず、計算機は、不可分動作を実行するため、割込み禁止（または保留）命令を発行し、実行する。割込み禁止命令の発行と同時にまたはそれ以前に、割込み処理からの復帰先をこの割込み禁止命令とするために必要なデータ（プログラムカウンタの値）を復帰先レジスタ２１に格納する。つぎに、割込み禁止状態においても禁止できないまたは禁止してはならない特定割込みが発生し得る命令を含むプログラムを実行する。その後、割込み禁止状態を解除する。
特定割込みが発生した場合、割込み処理２３終了後、復帰先レジスタ２１の内容を参照し、割込み禁止命令に復帰する。
【００３８】
このような処理手順を採用すれば、割込み処理２３が完了する度に、プログラム５が割込み禁止命令から再実行される。最終的に、特定割込みが発生しなくなった時点で、割込み禁止命令から割込み禁止解除命令までのプログラムが一体不可分に実行される。
【００３９】
そこで、この第２実施例では、割込み禁止命令の発行から特定の割込みが発生しうる命令のうち最後の命令までを再実行可能とする。これにより、割込み禁止命令から割込み禁止解除命令までの不可分動作が保証される。
次に、デマンド・ページング方式を採る計算機にこの第２実施例を適用した例について図７を参照して説明する。
【００４０】
デマンド・ページング方式を採る計算機では、割込み禁止または保留状態においても、ロード命令やストア命令等のメモリ・アクセスを伴う命令の実行に伴なうページ・フォルト割込みの発生は許可せざるを得ない（本明細書においては、アドレス変換割込みが発生する場合等も含めて、ページフォルトに起因する割込みを総称してページフォルト割込みと呼ぶこととする）。
【００４１】
図７において、ソフトウエアで不可分動作を実現するため、メモリ書き込み要求プログラム５は以下のように構成される。まず、不可分動作部分はＡ部とＢ部の２つの部分に分けられる。
【００４２】
Ｂ部は実行したい一体不可分動作のうち少なくともストア命令を含む部分であり、Ａ部はストア命令を含まない部分である。Ａ部はＢ部に含まれるストア命令に対応する疑似ストア命令を含む。Ａ部の先頭に割込み禁止命令ｄｉｎｔ（Ｄｉｓａｂｌｅ  ＩＮＴｅｒｒｕｐｔ）が配置され、Ｂ部の最後に割込み禁止解除命令ｅｉｎｔ（Ｅｎａｂｌｅ  ＩＮＴｅｒｒｕｐｔ）  が配置される。Ａ部を繰り返し実行しても、Ａ部の先頭において参照するレジスタの値は変化せず、メモリ１へのデータの書込みは行なわれない。即ち、このＡの部分は再実行可能である。
例えば、Ｂ部には図２（ｂ）に示されるストア命令が配置され、Ａ部にはその他の命令と共に図２（ａ）に示される疑似ストア命令が配置される。
次に、上記メモリ書き込み要求プログラム５のうち不可分動作部分Ｃの実行手順について説明する。
【００４３】
メモリ書き込み要求プログラム５は割込みを禁止または保留する命令ｄｉｎｔを発行（実行）する。この割込み禁止に応答して、システムはこの割込み禁止命令ｄｉｎｔのアドレスを復帰先レジスタＲ３１に保存する。
【００４４】
次に、システムはＡ部のプログラムを実行する。Ａ部の処理中にページ・フォルトが発生すると、ページ・フォルト割込みによってディスパッチャ３３に制御が移る。通常、システムはページフォルト割込み処理からの復帰時の復帰先アドレスとして、割込み発生時のプログラムカウンタの保持値をセーブする。しかし、本例では、割込み禁止または保留状態であるため、システムは割込み処理からの復帰時の復帰先アドレスとして、復帰先レジスタＲ３１の保持データをセーブする。こうすることにより、前記のページフォルト割込みからの復帰時、処理が前記ｄｉｎｔから再実行される。
その後、ディスパッチャ３３は、必要なページを補助記憶装置３からメモリ１に転送する。
【００４５】
転送終了後、ディスパッチャ３３はプログラム５に制御を戻す。プログラム５に制御を戻す直前で、ディスパッチャ３３は非同期割込み（外部割込み）が発生しているか否かをチェックする。非同期割込みが発生していない場合、セーブされた復帰先データに基づいて、データ処理が割込み禁止命令ｄｉｎｔから再開される。
【００４６】
ディスパッチャ３３がプログラム５に対する非同期割込みが発生しているか否かをチェックした時点で、非同期割込みが発生しており、非同期割込みが発生した時に実行すべき非同期割込みルーチン３５が定義されている（ユーザがソースプログラムに記述している）場合、制御は非同期割込みルーチン３５に移る。非同期割込みルーチン３５の処理が終了すると、制御がメモリ書き込み要求プログラム５に移り、セーブされた復帰先データに基づいて、割込み禁止命令ｄｉｎｔから処理が再開される。
【００４７】
Ａ部の実行段階でページ・フォルトが発生しなければ、そのままＢ部のプログラムが実行される。Ｂ部でロード命令やストア命令等メモリ・アクセスを伴う命令が発行されても、Ａ部で疑似ストア命令が実行されているので、同命令のアクセス対象領域はメモリ１上に確保されている。このため、ページ・フォルト及びそれに伴う割込みは発生しない。その結果、Ａ部とＢ部を含むＣ部がページ・フォルトを発生することなく実行される。
【００４８】
上記構成においても、Ａ部のプログラムを実行している途中でページ・フォルト割込みが発生し、非同期割込みルーチン３５がメモリ１の内容を変更するような事態が発生しうる。しかし、非同期割込みルーチン３５からの復帰先が割込み禁止命令であり、割込み禁止命令ｄｉｎｔからメモリ書き込み要求プログラム５の処理が再開されるので、メモリ書き込み要求プログラム５の処理に矛盾を生じない。
第３実施例
以下、図８乃至図１１を参照して、この発明の第３実施例を説明する。
【００４９】
システムバス４１を介してシステム制御ユニット（ＳＣＵ、Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）４３，ファイル制御プロセッサ（ＦＣＰ、Ｆｉｌｅ  Ｃｏｎｔｒｏｌ  Ｐｒｏｃｅｓｓｏｒ）  ４５，メモリ４７、端末制御プロセッサ（ＴＣＰ、Ｔｅｒｍｉｎａｌ  Ｃｏｎｔｒｏｌ  Ｐｒｏｃｅｓｓｏｒ）  ４８、出力装置４９が接続されている。システム制御ユニット４３には演算制御プロセッサ（ＡＣＰ，Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｎｔｒｏｌ  Ｐｒｏｃｅｓｓｏｒ）  ５１が接続され、ファイル制御プロセッサ４５には、ディスク装置等の補助記憶装置５３が接続される。
【００５０】
演算制御プロセッサ５１は、命令バッファ、キャッシュメモリ、ＴＬＢを備え、プログラムに従って、演算動作を行う。システム制御ユニット４３はプログラムに従って、システム全体の動作を制御する。
【００５１】
ファイル制御プロセッサ４５はシステム制御ユニット４３の制御のもとに、補助記憶装置５３へのデータの入出力、例えば、補助記憶装置５３とメモリ４７間のデータのＤＭＡ転送等を実行する。
【００５２】
メモリ４７は、ディスパッチャプログラムを含むオペレーテングシステム（ＯＳ）を記憶した領域、データを記憶した領域、ユーザーが使用できる領域を備える。このユーザーが利用できる領域には、メモリ書き込み要求プログラムＰ３や他のプログラムが記憶されている。
出力装置４９は演算制御プロセッサ５１の演算結果等を出力する。
【００５３】
図８に示される記憶装置は、その容量と動作速度から図９に示されるように分類される。命令バッファは最も高速で、小容量であり、以後、キャッシュメモリ、メモリ４７、補助記憶装置５３の順で低速、大容量となる。
【００５４】
メモリ４７は補助記憶装置５３に記憶されたデータの一部をブロック（例えば、ページ）単位で記憶し、キャッシュメモリはメモリ４７に記憶されたデータの一部をブロック単位で記憶し、命令バッファはキャッシュメモリに記憶された命令のうち実行されるべきものを記憶する。
【００５５】
次に、図１０に示されるプログラムを実行する場合を例に、図８に示されるシステムの動作を図１１を参照して説明する。なお、図１１はプログラムＰ３と対応する処理を関連付けて示すフローチャートである。
演算制御プロセッサ５１はシステム制御ユニット４３の制御下にプログラムＰ３の命令を順次取り込み、解読し、実行する。
【００５６】
処理が進み、演算制御プロセッサ５１が割込み禁止命令ｄｉｎｔをフェッチすると、演算制御プロセッサ５１は割込みを禁止し（ステップＳ１）、命令アドレスＬ２、プログラムステータスワード、各レジスタの保持値等のアドレスＬ２への復帰に必要なデータをレジスタＲ４１に保持する（ステップＳ２）。
【００５７】
さらに処理が進み、演算制御プロセッサ５１が疑似ストア命令を取り込むと、演算制御プロセッサ５１は疑似ストア命令により指定されたページがメモリ４７上に存在するか否かをＴＬＢを参照してチェックする（ステップＳ３）。ＴＬＢに当該ページのエントリが存在しなければ、メモリ４７上のページテーブル又はセグメントテーブルを参照して当該ページに関するアドレス変換情報をＴＬＢの空きエントリに登録して、同様にチェックする。チェックの結果、疑似ストア命令により指定されたページがメモリ４７上に存在する場合、フローは次の命令の処理に移る。
【００５８】
指定されたページがメモリ４７上に存在しない場合、演算制御プロセッサ５１はページフォルト割込みを発行する。このとき、割込みスタックに復帰情報（プログラムステータスワード等）をセーブする。この復帰情報のうち復帰先アドレスとして、その時のプログラムカウンタの値に代えてレジスタＲ４１に保持されたアドレスＬ２をスタックにセーブする（ステップＳ１１）。
【００５９】
その後、ページフォルト割込みハンドラに制御が移り、演算制御プロセッサ５１はページング処理（ステップＳ１２）を実行する。このページング処理において、演算制御プロセッサ５１はメモリ４７上のページキャッシュ（ソフト的に実現したページのキャッシュ機構）をチェックし、メモリ４７のページキャッシュ領域に指定されたページが存在するか否かをチェックする。メモリ４７のページキャッシュ領域に指定されたページが存在する場合、ページング処理ルーチン、即ち、ページャは、その領域のページを有効にする。
【００６０】
メモリ４７のページキャッシュ領域に指定されたページが存在しない場合、ページング処理ルーチンはページ領域を確保する。さらに、ページング処理ルーチンはそのページのデータの初期値がある場合又は以前書き込みがあった場合、システム制御ユニット４３を介してファイル制御プロセッサ４５を制御して、補助記憶装置５３からメモリ４７へファイル制御プロセッサ４５により当該ページデータをＤＭＡ転送させる。
【００６１】
ページング処理（ステップＳ１２）終了後、前記補助記憶装置５３からメモリ４７へのデータ転送が起こらなかった場合、演算制御プロセッサ５１はスタックにセーブしていたｄｉｎｔ命令のアドレスＬ２をプログラムカウンタにセットし、レジスタデータ等を元の場所にセットする（ステップＳ１４）。これにより、演算制御プロセッサ５１はプログラムＰ３をｄｉｎｔ命令から再実行する。
【００６２】
前記データ転送が起こった場合、演算制御プロセッサ５１は他の優先度の高いプログラムに制御を移す。やがて、前記データ転送が終了し、プログラムＰ３に制御が戻る。その直後で、演算制御プロセッサ５１はシステム内の特定の領域に記録された割込み発生状況をチェックし、プログラムＰ３に対する非同期割込み（外部割込み）が存在するか否かをチェックする（ステップＳ１３）。その非同期割込みが存在しない場合には、演算制御プロセッサ５１はスタックにセーブしていたｄｉｎｔ命令のアドレスＬ２をプログラムカウンタにセットし、レジスタデータ等を元の場所にセットする（ステップＳ１４）。これにより、演算制御プロセッサ５１はプログラムＰ３をｄｉｎｔ命令から再実行する。
【００６３】
ステップＳ１３でプログラムＰ３に対する非同期割込みが存在すると判定された場合、同プログラムの固有情報領域を調べて同プログラムにその非同期割込み要因（同プログラム自身が発行したデスクＩＯの完了割込みやタイマ割込み等）に対応する非同期割込みルーチンが定義されていることが判明した場合、フローは非同期割込みルーチンに移る。
【００６４】
演算制御プロセッサ５１は非同期割込み処理を実行する（ステップＳ２１）。非同期割込み処理終了後、演算制御プロセッサ５１はプログラムカウンタにセーブしていたｄｉｎｔ命令のアドレスＬ２をセットし、レジスタデータ等を元の場所にセットする（ステップＳ２２）。これにより、演算制御プロセッサ５１はプログラムＰ３をｄｉｎｔ命令から再実行する。
以上のようにして、メモリ書き込み要求プログラムＰ３の処理がｄｉｎｔから再実行される。
演算制御プロセッサ５１は、疑似ストア命令をフェッチする度に上述の処理を繰り返す。
【００６５】
そして、全ての疑似ストア命令がページフォルトの発生なく、実行された時点で、ストア命令を実行するために必要なページが全てメモリ４７上に揃う。よって、割込み禁止命令ｄｉｎｔから割込み禁止解除命令ｅｉｎｔまでの命令をページフォルトの発生なく、一体不可分に実行できる。
【００６６】
なお、ロード又はストア対象データがキャッシュメモリになかった場合、そのデータを含むデータブロックがメモリ４７から転送されるが、この転送には割込みは伴わない。
【００６７】
最後に、割込み禁止解除命令ｅｉｎｔがフェッチされると、演算制御プロセッサ５１は割込み禁止状態を解除する（ステップＳ５）。以後、プログラムＰ３の処理が続行される。
【００６８】
本願発明は上記実施例に限定されず、種々の変更が可能である。例えば、第２、第３実施例では、復帰先を割込み禁止命令のアドレスとしたが、一体不可分動作を実現できるならば、他のアドレスを復帰先としてもよい。たとえば、第３実施例において、割り込み禁止後のデータ処理のスタート点であるアドレスＬ２＋１を復帰先アドレスとしてもよい。
【００６９】
上記実施例では、ページを単位としてデータを処理する計算機に本願発明を適用した例を示したが、本願発明は、他のデータブロック、例えば、セグメント単位でデータを処理する計算機にも適用できる。
【００７０】
上記実施例では、ソフトウエアで不可分動作を実現するために、疑似ストア命令ＰＳＴを設け、これを不可分動作の前に実行したが、不可分動作を実行するために必要なページまたはデータブロックの存在をチェックすることができるならば、他の命令を使用してもよい。
【００７１】
【発明の効果】
以上説明したように、本実施例ではデマンド・ページング方式の計算機において、不可分動作を基本命令の組み合わせで実現できる。
【図面の簡単な説明】
【図１】本発明の第１実施例を示す機能ブロック図。
【図２】（ａ）は疑似ストア命令を示す図、（ｂ）はストア命令を示す図。
【図３】第１実施例にかかる計算機の動作を示す図。
【図４】第１実施例をキュー操作に応用した具体例を説明する図であり、（ａ）はキューを構成するエレメントＡとＣを示す図、（ｂ）はエレメントＡとＣの間にエレメントＢを挿入した状態を示す図、（ｃ）はエレメントＡとＣの間にエレメントＢを挿入するためのプログラムの一例を示す図。
【図５】第１実施例において、発生し得る問題点及びその解決方法を説明する図。
【図６】本発明の第２実施例の概略を示すフローチャート。
【図７】図６に示される本発明の第２実施例の詳細な動作を示すフローチャート。
【図８】この発明の第３実施例にかかる計算機の構成を示す図。
【図９】図８に示す計算機の記憶構造を説明する図。
【図１０】図８に示す計算機で実行されるプログラムの一例を示す図。
【図１１】図８に示す計算機で、図１０に示すプログラムを処理した時の処理の流れを示すフローチャート。
【図１２】不可分動作を説明する図。
【符号の説明】
１、４７…メモリ、２…仮想記憶部、５…メモリ書込み要求プログラム、７…アドレス変換割込み検出機構、９…オペレーティングシステム、１１…他のプログラム、２１…復帰先レジスタ、２５…割込み処理、３３…ディスパッチャ、３５…非同期割込みルーチン、４１…バス、４３…システム制御ユニット、４５…ファイル制御プロセッサ、４８…端末制御プロセッサ、４９…出力デバイス、５１…演算制御プロセッサ。
【図１】
0003590075.tif 000002
【図２】
0003590075.tif 000003
【図３】
0003590075.tif 000004
【図４】
0003590075.tif 000005
【図５】
0003590075.tif 000006
【図６】
0003590075.tif 000007
【図７】
0003590075.tif 000008
【図８】
0003590075.tif 000009
【図９】
0003590075.tif 000010
【図１０】
0003590075.tif 000011
【図１１】
0003590075.tif 000012
【図１２】
0003590075.tif 000013