(57)【特許請求の範囲】
【請求項１】
コンテキスト対象であるハードウェア資源を複数の領域に分割したコンテキストブロックに基づいて、複数のプログラムを時分割して並列処理する計算機であって、
第１プログラムを実行するときに必要とされる第１コンテキストブロック及び第２コンテキストブロックにおいて、第２プログラムを実行するときに、前記第１プログラムによって使用されている前記第１コンテキストブロックに格納されている第１情報と前記第２プログラムで使用する第３情報とが異なる場合には前記第１コンテキストブロックに格納されている前記第１情報を退避させ、前記第１情報と前記第３情報とが一致する場合には前記第１情報を退避させず、前記第２プログラムの実行において必要になった時点で、前記第１プログラムで使用されている前記第２コンテキストブロックに格納されている第２情報と前記第２プログラムで使用する第４情報とが異なる場合には前記第２コンテキストブロックに格納されている前記第２情報を退避させ、前記第２情報と前記第４情報とが一致する場合には前記第２情報を退避させない退避部と
を有することを特徴とする計算機。
【請求項２】
復元部を有し、
前記退避部は、前記第１コンテキストブロックに格納されている前記第１情報を退避させるときに、前記第１プログラムを識別する識別情報を記憶し、
前記復元部は、前記第２プログラムの実行が終了あるいは中断したときに、前記退避部により退避させた情報を前記識別情報に応じて前記第１コンテキストブロック及び第２コンテキストブロックに復元することを特徴とする請求項１記載の計算機。
【請求項３】
前記第１プログラムを実行するときにおいて必要とされる前記第１コンテキストブロックが、前記第２プログラムを実行するために既に使用されている場合に、割り込み処理を発生させる割り込み手段をさらに備え、
退避部は、前記割り込み手段により発生された前記割り込み処理において、前記識別情報を記憶すると共に、前記第１コンテキストブロックに格納されている前記第１情報を退避させる請求項２に記載の計算機。
【請求項４】
退避部は、退避させる情報が格納されているコンテキストブロックを識別する領域識別情報を保持する領域識別情報保持手段と、それぞれのコンテキストブロックに対応して設けられ、コンテキストブロックが使用不可能であるか否かを示す複数のフラグと、それぞれのコンテキストブロックに対応して設けられ、コンテキストブロックに格納されている情報を識別するコンテキスト識別情報を保持するコンテキスト識別情報保持手段と、第１プログラムを実行するときにおいて必要とされる第１コンテキストブロックが、使用不可能であるか否かをフラグの値に応じて判定する判定手段とを含み、判定手段により第１コンテキストブロックが使用不可能であると判定された場合において、第１コンテキストブロックを識別する領域識別情報を領域識別情報保持手段へ格納すると共に、退避させた前記第１情報を識別するコンテキスト識別情報をコンテキスト識別情報保持手段へ格納し、フラグを使用可能であることを示す値に設定する請求項２又は３記載の計算機。
【請求項５】
コンテキスト対象であるハードウェア資源を複数の領域に分割したコンテキストブロックに基づいて、複数のプログラムを時分割して並列処理する計算機の制御方法であって、
第１プログラムを実行するときに必要とされる第１コンテキストブロック及び第２コンテキストブロックにおいて、第２プログラムを実行するときに、前記第１プログラムによって使用されている前記第１コンテキストブロックに格納されている第１情報と前記第２プログラムで使用する第３情報とが異なる場合には前記第１コンテキストブロックに格納されている前記第１情報を退避させ、前記第１情報と前記第３情報とが一致する場合には前記第１情報を退避させず、前記第２プログラムの実行において必要になった時点で、前記第１プログラムで使用されている前記第２コンテキストブロックに格納されている第２情報と前記第２プログラムで使用する第４情報とが異なる場合には前記第２コンテキストブロックに格納されている前記第２情報を退避させ、前記第２情報と前記第４情報とが一致する場合には前記第２情報を退避させない第１ステップと
を有することを特徴とする計算機の制御方法。
【請求項６】
第２ステップを有し、
前記第１ステップは、前記第１コンテキストブロックに格納されている前記第１情報を退避させるときに、前記第１プログラムを識別する識別情報を記憶し、
前記第２ステップは、前記第２プログラムの実行が終了あるいは中断したときに、前記退避部により退避させた情報を前記識別情報に応じて前記第１コンテキストブロック及び第２コンテキストブロックに復元することを特徴とする請求項５記載の計算機の制御方法。
【請求項７】
前記第１ステップでは、前記第１プログラムを実行するときにおいて必要とされる前記第１コンテキストブロックが、前記第２プログラムを実行するために既に使用されている場合に割り込み処理を発生させ、割り込み処理において、識別情報を記憶すると共に、前記第１コンテキストブロックに格納されている前記第１情報を退避させる請求項６記載の計算機の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムを実行する計算機とその制御方法に関するものである。
【０００２】
【従来の技術】
計算機により各種の処理を実行する場合には、該処理を効率よく実行するため、複数のタスクプログラム等を時分割で切り替えながら並列処理できるようにされているものがある。このような処理システムは、マルチタスク処理システムと呼ばれ、複数の処理プログラムを並行処理する機能を備えたＯＳ（オペレーティングシステム）をマルチタスクＯＳと呼ぶ。
【０００３】
このマルチタスクＯＳでは、計算機内部のプログラムカウンタや汎用レジスタ等の各種ハードウェア資源上に保持される情報は、各タスクプログラム単位に個別に確保される。また、これらのハードウェア資源は、計算機自体と同様に使用される。このため、ある時点で実行中でないタスクプログラムに対するハードウェア資源上の情報は、メモリなどに保存されることとなる。
【０００４】
そして、上記のようなハード資源上の情報は「コンテキスト」と呼ばれ、コンテキストをハードウェア資源からメモリ等へ書き出す動作は、「コンテキストの退避」と呼ばれる。また逆に、コンテキストをメモリ等からハードウェア資源へ読み込む動作は、「コンテキストの復元」と呼ばれる。そして、このようなコンテキストの退避や復元は、「コンテキスト切り替え（コンテキストスイッチ）」と呼ばれる。
【０００５】
以下において、従来の計算機について説明する。なお、該従来の計算機においてコンテキストが格納されるコンテキスト対象は、次の表１に示される。
【０００６】
【表１】
0004116752.tif 000002
なお、上記表１における各コンテキスト対象は、以下において詳しく説明される。
【０００７】
図１は、汎用レジスタ（ＧＲ）と浮動小数点レジスタ（ＦＲ）とを有する従来の計算機の構成を示す図である。図１に示されるように、この計算機はメモリ１と、メモリ１に接続された命令読み出し部３と、メモリ１及び命令読み出し部３に接続された命令実行部６と、命令実行部６に接続されたレジスタ制御部８と、命令読み出し部３と命令実行部６及びレジスタ制御部８に接続された割り込み制御部９とを備える。
【０００８】
ここで、命令読み出し部３は命令読出制御部１１と、プログラムカウンタ（ＰＣ）１３と、命令語レジスタ（ＩＲ）１５とを含む。そして、命令読出制御部１１はメモリ１に接続され、プログラムカウンタ（ＰＣ）１３は命令読出制御部１１に接続される。さらに、命令語レジスタ（ＩＲ）１５は命令読出制御部１１に接続される。
【０００９】
また、命令実行部６は命令デコード部１７と、ロード命令実行部１９と、ストア命令実行部２１と、演算命令実行部２２と、命令実行回路２３と、浮動小数点（Ｆ）ロード命令実行部２５と、浮動小数点（Ｆ）ストア命令実行部２７と、浮動小数点（Ｆ）演算命令実行部２９とを含む。
【００１０】
そして、命令デコード部１７は命令語レジスタ１５に接続され、ロード命令実行部１９はメモリ１及び命令デコード部１７に接続される。また、ストア命令実行部２１は命令デコード部１７及び後述する汎用レジスタ（ＧＲ）３７に接続され、演算命令実行部２２は命令デコード部１７と汎用レジスタ３７及び後述する条件レジスタ（ＣＯＮＤ）３０に接続され、命令実行回路２３は命令デコード部１７と汎用レジスタ３７及び後述するレジスタ３１，３３，３５に接続される。
また、浮動小数点ロード命令実行部２５はメモリ１及び命令デコード部１７に接続され、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９は命令デコード部１７及び後述する浮動小数点レジスタ３９に接続される。
【００１１】
一方、レジスタ制御部８は条件レジスタ（ＣＯＮＤ）３０と、レジスタ（ＥＰＣＲ）３１と、レジスタ（ＥＰＳＲ）３３と、レジスタ（ＰＳＲ）３５と、汎用レジスタ（ＧＲ）３７と、浮動小数点レジスタ（ＦＲ）３９とを含む。ここで、条件レジスタ３０は演算命令実行部２２と命令実行回路２３及び浮動小数点演算命令実行部２９に接続され、レジスタ（ＥＰＣＲ）３１とレジスタ（ＥＰＳＲ）３３及びレジスタ（ＰＳＲ）３５は、さらに後述する割込制御回路４０に接続される。また、汎用レジスタ３７はロード命令実行部１９とストア命令実行部２１及び命令実行回路２３に接続される。また、浮動小数点レジスタ３９は浮動小数点ロード命令実行部２５と、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９に接続される。
【００１２】
また、割り込み制御部９は割込制御回路４０を含む。そして、この割込制御回路４０は命令読出制御部１１とプログラムカウンタ１３、ロード命令実行部１９、ストア命令実行部２１、演算命令実行部２２、命令実行回路２３、浮動小数点ロード命令実行部２５、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９などに接続される。
【００１３】
上記のような構成を有する計算機において、命令読み出し部３はプログラムカウンタ１３が示す命令語をメモリ１から読み出し、命令語レジスタ（ＩＲ）１５を介して命令実行部６へ供給する。また命令読出制御部１１は、命令実行部６あるいは割り込み処理を行う割込制御回路４０より分岐先アドレスが供給された場合には、それをプログラムカウンタ１３へ書き込む。なお命令読出制御部１１は、それ以外の場合には次の命令語を命令実行部６へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ１３をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路４０へ割込信号を供給する。
【００１４】
また、命令デコード部１７は、命令語レジスタ１５から供給された命令をデコードし、ロード命令の場合にはロード命令実行部１９へ、ストア命令の場合にはストア命令実行部２１へ、演算命令の場合には演算命令実行部２２へ、浮動小数点ロード命令の場合には浮動小数点ロード命令実行部２５へ、浮動小数点ストア命令の場合には浮動小数点ストア命令実行部２７へ、浮動小数点演算命令の場合には浮動小数点演算命令実行部２９へ、割り込み復帰命令やその他の命令の場合には命令実行回路２３へそれぞれ供給する。
【００１５】
また、ロード命令実行部１９はロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を汎用レジスタ３７へ書き込む。なお、ロード命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１６】
同様に、ストア命令実行部２１はストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１７】
また、演算命令実行部２２は演算命令が供給された場合には、汎用レジスタ３７から読み出された値に基づき演算を実行し、その結果を汎用レジスタ３７へ書き込む。また、演算命令実行部２２は、比較命令が供給された場合には、汎用レジスタ３７から読み出された二つの値を比較し、該二つの値が等しい場合には真であることを示すデータを、該二つの値が等しくない場合には偽であることを示すデータを条件レジスタ３０へ書き込む。
【００１８】
そして、浮動小数点ロード命令実行部２５は、浮動小数点ロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を浮動小数点レジスタ３９へ書き込む。なお、浮動小数点ロード命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１９】
また、浮動小数点ストア命令実行部２７は、浮動小数点ストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ３９の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００２０】
また、浮動小数点演算命令実行部２９は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ３９から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ３９へ書き込む。そしてさらに、浮動小数点演算命令実行部２９は、浮動小数点比較命令が供給された場合には浮動小数点レジスタ３９から読み出した二つの値を比較し、その結果として、該二つの値が等しいか否かにより真又は偽を示す値を条件レジスタ３０へ書き込む。
【００２１】
また、命令実行回路２３は、命令デコード部１７から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ１３へ供給する。さらに、命令デコード部１７から条件分岐命令が供給された場合には、条件レジスタ３０に格納された値が真であることを示すものである時に分岐先アドレスをプログラムカウンタ１３へ供給する。同様に割り込み復帰命令が供給された場合には、割込み発生前の動作状態を示すデータをＰＳＲ３５へ書き込む。そしてこのとき、ＥＰＣＲ３１から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ１３へ供給する。なお、上記命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００２２】
また、条件レジスタ３０は、上記のように比較命令に応じて真あるいは偽を示すデータ（値）を保持する。なお、該値は条件分岐命令に応じて参照される。また、ＥＰＣＲ３１は割り込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割り込み発生時に設定される。また、ＰＳＲ３５は動作状態（state）を示すデータを保持し、ＥＰＳＲ３３は割り込み発生時に設定された割り込み発生前の動作状態を示すデータを保持する。
【００２３】
また、割込制御回路４０は命令読み出し部３あるいは命令実行部６から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。
【００２４】
以上のように、上記計算機は、初期の動作状態でもある通常動作においては、命令読み出し部３がプログラムカウンタ１３の示す命令語を読み出して命令実行部６へ供給し、命令実行部６は供給された該命令語により規定される命令を実行する。
【００２５】
一方、割り込みが発生した時には、割込制御回路４０は命令読み出し部３あるいは命令実行部６から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。また、命令読み出し部３は割込制御部９から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部６へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【００２６】
また、割り込みから復帰する時は、命令実行部６は割り込み復帰命令を実行することにより、ＥＰＳＲ３３の値をＰＳＲ３５へ書き込む。また、ＥＰＣＲ３１に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部３へ供給する。このとき命令読み出し部３は、命令実行部６から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部６へ供給する。そして、以降においては上記通常の動作がなされる。
【００２７】
次に、上記の計算機によるコンテキスト切り替え動作を、図２に示されたフローチャートを参照しつつ説明する。図２に示されるように、まずステップＳ１において、現コンテキストに対応するメモリ１上のコンテキスト域へ現コンテキストを退避する。そして次に、ステップＳ２において、新コンテキストに対応するメモリ１上のコンテキスト域から新コンテキストを復元し、コンテキスト切り替え動作を終了する。
【００２８】
以上が、従来における計算機の構成と動作の概要であるが、近年の計算機における高速化や高性能化等に伴い、例えば計算機内の汎用レジスタの個数は増加しており、ハードウェア資源全体の情報量も著しく増加している状況にある。従って、上記のようにコンテキスト全てを無条件に退避し、かつ復元することは、無視できない程長い処理時間を必要とすることとなるため、該計算機の性能を向上させる際の障害となるという問題がある。
【００２９】
【発明が解決しようとする課題】
本発明は、上述の問題を解消するためになされたもので、コンテキストの切り替えを高速化して、複数のプログラムの並列的な実行の効率を向上させた計算機とその制御方法を提供することを目的とする。
【００３０】
【課題を解決するための手段】
上記の目的は、コンテキスト対象であるハードウェア資源を複数の領域に分割したコンテキストブロックに基づいて、複数のプログラムを時分割して並列処理する計算機であって、第１プログラムを実行するときに必要とされる第１コンテキストブロック及び第２コンテキストブロックにおいて、第２プログラムを実行するときに、前記第１プログラムによって使用されている前記第１コンテキストブロックに格納されている第１情報と前記第２プログラムで使用する第３情報とが異なる場合には前記第１コンテキストブロックに格納されている前記第１情報を退避させ、前記第１情報と前記第３情報とが一致する場合には前記第１情報を退避させず、前記第２プログラムの実行において必要になった時点で、前記第１プログラムで使用されている前記第２コンテキストブロックに格納されている第２情報と前記第２プログラムで使用する第４情報とが異なる場合には前記第２コンテキストブロックに格納されている前記第２情報を退避させ、前記第２情報と前記第４情報とが一致する場合には前記第２情報を退避させない退避部とを有することを特徴とする計算機を提供することにより達成される。このような手段によれば、第１プログラムを実行する過程において必要となった時点で、第２コンテキストブロックに格納されている第２情報を退避させることとするため、該第２情報を退避させる時点までは、第２コンテキストブロックを第２プログラムを実行するために使用することができる。
【００３１】
また、第１プログラムを実行するときにおいて必要とされる第１コンテキストブロックが、第２プログラムを実行するために既に使用されている場合に、割り込み処理を発生させる割り込み手段をさらに備え、退避手段は、割り込み手段により発生された割り込み処理において識別情報を記憶すると共に、第１コンテキストブロックに格納されている第１情報を退避させるものとすることができる。このような手段によれば、プログラム全体の規模が低減できる。
【００３４】
また、本発明の目的は、コンテキスト対象であるハードウェア資源を複数の領域に分割したコンテキストブロックに基づいて、複数のプログラムを時分割して並列処理する計算機の制御方法であって、第１プログラムを実行するときに必要とされる第１コンテキストブロック及び第２コンテキストブロックにおいて、第２プログラムを実行するときに、前記第１プログラムによって使用されている前記第１コンテキストブロックに格納されている第１情報と前記第２プログラムで使用する第３情報とが異なる場合には前記第１コンテキストブロックに格納されている前記第１情報を退避させ、前記第１情報と前記第３情報とが一致する場合には前記第１情報を退避させず、前記第２プログラムの実行において必要になった時点で、前記第１プログラムで使用されている前記第２コンテキストブロックに格納されている第２情報と前記第２プログラムで使用する第４情報とが異なる場合には前記第２コンテキストブロックに格納されている前記第２情報を退避させ、前記第２情報と前記第４情報とが一致する場合には前記第２情報を退避させない第１ステップとを有することを特徴とする計算機の制御方法を提供することにより達成される。
【００３５】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一符号は同一又は相当部分を示す。
【００３６】
また、以下の説明においては、コンテキスト対象であるハードウェア資源を複数の領域に分割したときの、各分割領域を「コンテキストブロック」と呼ぶ。また、該コンテキストブロックのうち、基本とされる一又は二以上の所定のコンテキストブロックを「基本コンテキストブロック」と呼ぶ。
［実施の形態１］
図３は、本発明の実施の形態１に係る計算機の構成を示す図である。なお、図３に示された計算機におけるコンテキスト対象は、次の表２に示される。
【００３７】
【表２】
0004116752.tif 000003
なお、上記表２に示されるコンテキストブロック番号が０のレジスタには、基本コンテキストブロックが格納される。
【００３８】
図３に示されるように、本発明の実施の形態１に係る計算機は、図１に示された従来の計算機に対して、命令実行部４００には第一検出部４０５〜４０８と、第二検出部４０９，４１０と、第三検出部４１１と、切り替え対象コンテキストブロック読み出し命令実行部４１３と、コンテキストブロック管理簿読み出し命令実行部４１５と、コンテキストブロック管理簿書き込み命令実行部４１７とを含み、レジスタ制御部４０２にはコンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９とコンテキストブロック管理簿４２１とを含む点で相違する。なお、コンテキストブロック管理簿４２１には、コンテキスト管理簿エントリ４２３，４２５が含まれる。
【００３９】
そしてまた、割り込み制御部４０４にはコンテキスト使用不可割り込み制御部４２７を含む点で相違する。
【００４０】
上記において、第一検出部４０５〜４０８の入力端は共に命令デコード部１７及びコンテキスト管理簿エントリ４２３に接続され、出力端は共にコンテキスト使用不可割り込み制御部４２７に接続される。そして、第一検出部４０５の出力端はさらにロード命令実行部１９に接続され、第一検出部４０６の出力端はさらにストア命令実行部２１に接続され、第一検出部４０７の出力端はさらに演算命令実行部２２に接続され、第一検出部４０８の出力端はさらに命令実行回路２３に接続される。
【００４１】
また、同様に、第二検出部４０９，４１０の入力端は共に命令デコード部１７及びコンテキスト管理簿エントリ４２３，４２５に接続され、出力端は共にコンテキスト使用不可割り込み制御部４２７に接続される。そして、第二検出部４０９の出力端はさらに浮動小数点（Ｆ）ロード命令実行部２５に接続され、第二検出部４１０の出力端はさらに浮動小数点（Ｆ）ストア命令実行部２７に接続される。また、第三検出部４１１の入力端は命令デコード部１７及びコンテキスト管理簿エントリ４２５に接続され、出力端はコンテキスト使用不可割り込み制御部４２７及び浮動小数点（Ｆ）演算命令実行部２９に接続される。
【００４２】
また、切り替え対象コンテキストブロック読み出し命令実行部４１３の入力端は命令デコード部１７及びコンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９に接続され、出力端は汎用レジスタ３７及び割込制御回路４０に接続される。
【００４３】
また、コンテキストブロック管理簿読み出し命令実行部４１５の入力端は命令デコード部１７及びコンテキスト管理簿エントリ４２３，４２５に接続され、出力端は汎用レジスタ３７及び割込制御回路４０に接続される。そして、コンテキストブロック管理簿書き込み命令実行部４１７の入力端は命令デコード部１７及び汎用レジスタ３７に接続され、出力端は汎用レジスタ３７とコンテキスト管理簿エントリ４２３，４２５及び割込制御回路４０に接続される。
【００４４】
また、コンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９の入力端はコンテキスト使用不可割り込み制御部４２７に接続され、出力端は切り替え対象コンテキストブロック読み出し命令実行部４１３に接続される。そしてまた、コンテキスト使用不可割り込み制御部４２７の入力端はプログラムカウンタ（ＰＣ）１３及びレジスタ（ＰＳＲ）３５に接続され、出力端はレジスタ（ＥＰＣＲ）３１と、レジスタ（ＥＰＳＲ）３３及びレジスタ（ＰＳＲ）３５に接続される。
【００４５】
以下において、上記のような構成を有する図３に示された計算機の動作を説明する。
【００４６】
まず、命令デコード部１７からそれぞれ第一検出部４０５にはロード命令が供給され、第一検出部４０６にはストア命令が供給され、第一検出部４０７には演算命令及び比較命令が供給される。また、第一検出部４０８には分岐命令と条件分岐命令、及び割り込み復帰命令が供給される。
【００４７】
またさらに、命令デコード部１７からは、第二検出部４０９へ浮動小数点ロード命令が供給され、第二検出部４１０へ浮動小数点ストア命令が供給され、第三検出部４１１へ浮動小数点演算命令及び浮動小数点比較命令が供給される。
【００４８】
また、命令デコード部１７から切り替え対象コンテキストブロック読み出し命令実行部４１３へは、切り替え対象コンテキストブロック読み出し命令が供給され、コンテキストブロック管理簿読み出し命令実行部４１５へはコンテキストブロック管理簿読み出し命令が供給され、コンテキストブロック管理簿書き込み命令実行部４１７へはコンテキストブロック管理簿書き込み命令がそれぞれ供給される。
【００４９】
ここで、第一検出部４０５〜４０８は、いずれも供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４２３に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００５０】
ここで、第一検出部４０５〜４０８は互いに同様な構成を有するが、第一検出部４０５の構成が図８に示される。図８に示されるように、第一検出部４０５は、ＧＲ検出回路４２９と、論理回路４３１とを含む。ここで、ＧＲ検出回路４２９は、実行対象であるロード命令において汎用レジスタ３７を参照または変更することが要求されるか否かを検出する。
【００５１】
そして、命令デコード部１７から供給されたロード命令は、そのままロード命令実行部１９へ出力されると共にＧＲ検出回路４２９へ入力される。また、ＧＲ検出回路４２９から出力された信号とコンテキスト管理簿エントリ４２３に含まれたＥフィールドの値とが論理回路４３１に供給され、論理回路４３１の出力信号はロード命令実行部１９及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００５２】
次に第二検出部４０９，４１０は、互いに同様な構成を有すると共に、いずれも供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４２３に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７を参照または変更する命令が供給された場合、またはコンテキスト管理簿エントリ４２５に含まれたＥフィールドに０の値が格納され、かつ浮動小数点レジスタ３９を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００５３】
ここで、図９に示されるように、第二検出部４０９は、ＧＲ検出回路４２９と、ＦＲ検出回路４３５と、論理回路４３１，４３２と、ＯＲ回路４３７とを含む。ここで、ＦＲ検出回路４３５は、実行対象である浮動小数点ロード命令において浮動小数点レジスタ３９を参照または変更することが要求されるか否かを検出する。
【００５４】
そして、命令デコード部１７から供給された浮動小数点ロード命令は、そのまま浮動小数点ロード命令実行部２５へ出力されると共にＧＲ検出回路４２９及びＦＲ検出回路４３５へ入力される。また、ＧＲ検出回路４２９から出力された信号とコンテキスト管理簿エントリ４２３に含まれたＥフィールドの値とが論理回路４３１に供給され、ＦＲ検出回路４３５から出力された信号とコンテキスト管理簿エントリ４２５に含まれたＥフィールドの値とが論理回路４３２に供給される。
【００５５】
また、論理回路４３１及び論理回路４３２の出力信号は共にＯＲ回路４３７へ入力され、ＯＲ回路４３７の出力信号は浮動小数点ロード命令実行部２５及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００５６】
次に、第三検出部４１１は、供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４２５に含まれたＥフィールドに０の値が格納され、かつ浮動小数点レジスタ３９を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００５７】
ここで、図１０に示されるように、第三検出部４１１は、ＦＲ検出回路４３５と、論理回路４３１とを含む。そして、命令デコード部１７から供給された浮動小数点演算命令は、そのまま浮動小数点演算命令実行部２９へ出力されると共にＦＲ検出回路４３５へ入力される。また、ＦＲ検出回路４３５から出力された信号とコンテキスト管理簿エントリ４２５に含まれたＥフィールドの値とが論理回路４３２へ供給される。また、論理回路４３２の出力信号は浮動小数点演算命令実行部２９及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００５８】
また、切り替え対象コンテキストブロック読み出し命令実行部４１３は、命令デコード部１７から供給された切り替え対象コンテキストブロック読み出し命令に応じて、コンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９に格納されたコンテキストブロック識別情報を読み出し、汎用レジスタ３７へ書き込む。なお、切り替え対象コンテキストブロック読み出し命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００５９】
また、上記コンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９には、命令実行時に参照あるいは変更が不可能であったコンテキストブロックの識別情報が保持されるが、コンテキスト使用不可割り込み発生時にコンテキスト使用不可割り込み制御部４２７によって該識別情報が格納される。
【００６０】
また、コンテキストブロック管理簿読み出し命令実行部４１５は、命令デコード部１７から供給されたコンテキストブロック管理簿読み出し命令に応じて、指定されたコンテキスト管理簿エントリ４２３，４２５から該エントリに格納されている情報を読み出し、汎用レジスタ３７へ書き込む。なお、コンテキストブロック管理簿読み出し命令を実行する際に割り込みを検出した場合には、割込信号が割込制御回路４０に供給される。
【００６１】
また、コンテキストブロック管理簿書き込み命令実行部４１７は、命令デコード部１７から供給されたコンテキストブロック管理簿書き込み命令に応じて、汎用レジスタ３７から読み出した情報を指定されたコンテキスト管理簿エントリ４２３，４２５へ書き込む。なお、コンテキストブロック管理簿書き込み命令を実行する際に割り込みを検出した場合には、割込信号が割込制御回路４０に供給される。
【００６２】
また、上記のコンテキスト管理簿エントリ４２３，４２５は、それぞれ上記Ｅフィールドとコンテキストフィールド（ＣＴＸＴ＃）とからなり、Ｅフィールドは対応するハードウェア資源が使用可能か否かを示す。そして、Ｅフィールドに０の値が格納されている場合には、該当するハードウェア資源が使用不可能であり、現コンテキストを保持していないことを意味し、１の値が格納されている場合には、該当するハードウェア資源が使用可能であって、現コンテキストを保持していることを意味する。また、各コンテキストフィールド（ＣＴＸＴ＃）には、対応するコンテキストブロックに保持されているコンテキストを特定する番号（以下において「コンテキスト番号」ともいう。）が格納される。
【００６３】
さらに、コンテキスト使用不可割り込み制御部４２７は、供給される割込信号に応じて、割り込みからの復帰先とする命令アドレスをレジスタ（ＥＰＣＲ）３１へ、割り込み発生前の計算機の動作状態をレジスタ（ＥＰＳＲ）３３へ、発生した割り込みに対応する計算機の動作状態をレジスタ（ＰＳＲ）３５へ、切り替えるべきコンテキストブロックの識別をコンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９へそれぞれ書き込む。また、発生した割り込みに対応する分岐先のアドレスをプログラムカウンタ１３へ供給する。
【００６４】
以下において、図３に示された本実施の形態１に係る計算機のコンテキスト切り替え動作の概要を、図４に示されたフローチャートを参照しつつ説明する。まず、ステップＳ１において現コンテキストに対応するメモリ１上のコンテキスト域へ現コンテキストの基本ブロックを退避する。次に、ステップＳ２において新コンテキストに対応するメモリ１上のコンテキスト域から新コンテキストの基本ブロックを復元する。
【００６５】
そして、ステップＳ３において上記新コンテキストの基本ブロックに対応するハードウェア資源を使用可能にすると共に、ステップＳ４で該新コンテキストの基本ブロックのコンテキスト番号をコンテキストブロック管理簿４２１に保持する。次に、ステップＳ５において、該新コンテキストの基本ブロックに対応しないハードウェア資源を使用不可能にして、コンテキスト切り替え動作を終了する。
【００６６】
ここで、上記コンテキストの切り替え動作を、図５に示されるフローチャートを参照しつつ、より具体的に説明する。図５に示されるフローチャートにおいて、ステップＳ１とステップＳ２は、図４に示されるステップＳ１及びステップＳ２と同じであるが、ステップＳ３においてはコンテキストブロック管理簿４２１の新コンテキストの基本ブロックに対応するＥフィールドに１の値を格納する。
そして、ステップＳ４において、コンテキストブロック管理簿４２１に含まれる新コンテキストの基本ブロックに対応するコンテキストフィールドに、新コンテキストの番号を格納する。次に、ステップＳ５において、コンテキストブロック管理簿４２１に含まれる該新コンテキストの基本ブロックに対応しないＥフィールドに０の値を格納し、コンテキストの切り替え動作を終了する。
【００６７】
次に、図３に示された本実施の形態１に係る計算機において、所望のコンテキストが使用できない場合の割り込み動作の概要を、図６に示されたフローチャートを参照しつつ説明する。なお、該割り込み動作は、例えば割り込み処理プログラムの実行により実現される。
【００６８】
まず、ステップＳ１においては、切り替えの対象とするコンテキストブロックが確認され、ステップＳ２においては、該切り替え対象とするコンテキストブロックの旧コンテキスト番号が確認される。そして、ステップＳ３において、上記旧コンテキスト番号に対応するメモリ１上のコンテキスト域へ切り替え対象とするコンテキストブロックを退避する。次に、ステップＳ４において、新コンテキストの基本コンテキストブロックに対応する現コンテキスト番号が求められ、ステップＳ５において、該現コンテキスト番号に対応するメモリ１上のコンテキスト域から切り替え対象とするコンテキストブロックが読み出され、復元される。
そして、ステップＳ６において、切り替え対象とするコンテキストブロックのコンテキスト番号を保持する。次に、ステップＳ７において、切り替え対象とするコンテキストブロックに対応するハードウェア資源を使用可能にして、該割り込み動作を終了する。
【００６９】
ここで、上記のように所望のコンテキストが使用できない場合の割り込み動作を、図７に示されるフローチャートを参照しつつ、より具体的に説明する。図７に示されるように、ステップＳ１においては割り込み処理プログラムが動作する上で最低限必要なコンテキストを退避する。そして、ステップＳ２においてコンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９に格納されたコンテキストブロック識別情報を読み出し、切り替え対象とするコンテキストブロックを求める。
【００７０】
次に、ステップＳ３においては、コンテキストブロック管理簿４２１内の切り替え対象コンテキストブロックに対応するコンテキストフィールドから、格納されている旧コンテキスト番号を読み出す。そして、ステップＳ４においては、該旧コンテキスト番号に対応するメモリ１上のコンテキスト域へ切り替え対象コンテキストブロックを退避する。次に、ステップＳ５において、コンテキストブロック管理簿４２１に含まれる新コンテキストの基本コンテキストブロックに対応するコンテキストフィールドから現コンテキスト番号を読み出す。
【００７１】
そして、ステップＳ６において、該現コンテキストに対応するメモリ１上のコンテキスト域から切り替え対象とするコンテキストブロックを読み出し、復元する。次に、ステップＳ７において、コンテキストブロック管理簿４２１内の切り替え対象とするコンテキストブロックに対応するコンテキストフィールドに、現コンテキスト番号を格納する。
【００７２】
また、ステップＳ８では、コンテキストブロック管理簿４２１内の切り替え対象コンテキストブロックのＥフィールドに１を格納し、ステップＳ９では、割り込み処理プログラムが実行される上で最低限必要とされたコンテキストを復元する。次に、ステップＳ１０では、割り込み復帰命令の実行により、コンテキスト切り替えのための割り込み動作から復帰して、本動作を終了する。
【００７３】
このように、本実施の形態１に係る計算機は、複数の領域に分割されたハードウェア資源を用いることにより、複数のプログラムを時分割して並列処理すると共に、新たなプログラムを実行するときに必要とされるハードウェア資源が既に使用されているものと第一から第三検出部４０５〜４１１のいずれかにおいて判断された場合には、コンテキスト使用不可割り込み制御部４２７によりコンテキスト使用不可割り込み動作を開始する。
【００７４】
そしてこのとき、参照または変更が不可能であったコンテキストブロックの識別情報を、コンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９に記憶すると共に、退避させるコンテキストの番号等をコンテキストブロック管理簿４２１に格納する。そして、上記の新たなプログラムを実行するときに必要とされるハードウェア資源に格納されている情報を、上記コンテキストブロックの識別情報に応じてメモリ１に退避させる。
【００７５】
さらに、該新たなプログラムの実行が終了あるいは中断したときには、上記のように退避されたコンテキスト番号等に応じて、上記ハードウェア資源に元の（旧）コンテキストを復元し、元の（旧）プログラムの実行を継続する。
【００７６】
従って、本実施の形態１に係る計算機によれば、コンテキストの高速な切り替えを実現でき、特に多重なコンテキストの切り替え等において有効に機能する。そしてこれより、複数のタスクプログラムの効率的な実行を実現することができる。
【００７７】
また、第一から第三検出部４０５〜４１１のいずれかにより、供給された命令が参照または変更するレジスタが現コンテキストとなっていないと判定された時点で、初めて割り込み処理を実行することによりコンテキストを退避させるため、ハードウェア資源の有効な活用を図ることができる。
［実施の形態２］
図１１は、本発明の実施の形態２に係る計算機の構成を示す図である。なお、図１１に示された計算機におけるコンテキスト対象は、次の表３に示される。
【００７８】
【表３】
0004116752.tif 000004
なお、上記表３に示されるコンテキストブロック番号が０のレジスタには、基本コンテキストブロックが格納される。
【００７９】
図１１に示されるように、本実施の形態２に係る計算機は、図３に示された実施の形態１に係る計算機と同様な構成を有するが、第一検出部４０５〜４０８の代わりに第四検出部４４１〜４４４を備え、第二検出部４０９，４１０の代わりに第五検出部４４５，４４６を備え、第三検出部４１１の代わりに第六検出部４４７を備える点で相違する。
【００８０】
また、コンテキストブロック管理簿４２１の代わりに、コンテキスト管理簿エントリ４４９を含むコンテキスト管理簿４５０を備える点で相違する。
【００８１】
上記において、第四検出部４４１〜４４４の入力端は共に命令デコード部１７及びコンテキスト管理簿エントリ４２３，４２５に接続され、出力端は共にコンテキスト使用不可割り込み制御部４２７に接続される。そして、第四検出部４４１の出力端はさらにロード命令実行部１９に接続され、第四検出部４４２の出力端はさらにストア命令実行部２１に接続され、第四検出部４４３の出力端はさらに演算命令実行部２２に接続され、第四検出部４４４の出力端はさらに命令実行回路２３に接続される。
【００８２】
また、同様に、第五検出部４４５，４４６の入力端は共に命令デコード部１７及びコンテキスト管理簿エントリ４２３，４２５，４４９に接続され、出力端は共にコンテキスト使用不可割り込み制御部４２７に接続される。そして、第五検出部４４５の出力端はさらに浮動小数点（Ｆ）ロード命令実行部２５に接続され、第五検出部４４６の出力端はさらに浮動小数点（Ｆ）ストア命令実行部２７に接続される。また、第六検出部４４７の入力端は命令デコード部１７及びコンテキスト管理簿エントリ４２５，４４９に接続され、出力端はコンテキスト使用不可割り込み制御部４２７及び浮動小数点（Ｆ）演算命令実行部２９に接続される。
【００８３】
上記のような構成を有する図１１に示された計算機は、図３に示された実施の形態１に係る計算機と同様に動作するが、相違点につき以下に説明する。
【００８４】
まず、命令デコード部１７からそれぞれ第四検出部４４１にはロード命令が供給され、第四検出部４４２にはストア命令が供給され、第四検出部４４３には演算命令及び比較命令が供給される。また、第四検出部４４４には分岐命令と条件分岐命令、及び割り込み復帰命令が供給される。
【００８５】
またさらに、命令デコード部１７からは、第五検出部４４５へ浮動小数点ロード命令が供給され、第五検出部４４６へ浮動小数点ストア命令が供給され、第六検出部４４７へ浮動小数点演算命令及び浮動小数点比較命令が供給される。
【００８６】
ここで、第四検出部４４１〜４４４は、いずれも供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４２３に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の下位領域を参照または変更する命令が供給された場合、あるいは、コンテキスト管理簿エントリ４２５に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の上位領域を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００８７】
ここで、第四検出部４４１〜４４４は互いに同様な構成を有するが、第四検出部４４１の構成が図１２に示される。図１２に示されるように、第四検出部４４１は、下位ＧＲ検出回路４５１と、上位ＧＲ検出回路４５３と、論理回路４３１，４３２と、ＯＲ回路４３７とを含む。ここで、下位ＧＲ検出回路４５１は、実行対象であるロード命令において汎用レジスタ３７の下位領域を参照または変更することが要求されるか否かを検出し、上位ＧＲ検出回路４５３は、実行対象であるロード命令において汎用レジスタ３７の上位領域を参照または変更することが要求されるか否かをそれぞれ検出する。
【００８８】
そして、命令デコード部１７から供給されたロード命令は、そのままロード命令実行部１９へ出力されると共に下位ＧＲ検出回路４５１及び上位ＧＲ検出回路４５３へ入力される。また、下位ＧＲ検出回路４５１から出力された信号とコンテキスト管理簿エントリ４２３に含まれたＥフィールドの値とが論理回路４３１に供給され、上位ＧＲ検出回路４５３から出力された信号とコンテキスト管理簿エントリ４２５に含まれたＥフィールドの値とが論理回路４３２に供給される。そして、論理回路４３１及び論理回路４３２の出力信号はＯＲ回路４３７に入力され、ＯＲ回路４３７の出力信号はロード命令実行部１９及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００８９】
次に第五検出部４４５，４４６は、互いに同様な構成を有すると共に、いずれも供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４２３に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の下位領域を参照または変更する命令が供給された場合、またはコンテキスト管理簿エントリ４２５に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の上位領域を参照または変更する命令が供給された場合、あるいはコンテキスト管理簿エントリ４４９に含まれたＥフィールドに０の値が格納され、かつ浮動小数点レジスタ３９を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００９０】
ここで、図１３に示されるように、第五検出部４４５は、下位ＧＲ検出回路４５１と、上位ＧＲ検出回路４５３と、ＦＲ検出回路４３５と、論理回路４３１〜４３３と、ＯＲ回路４３７とを含む。ここで、ＦＲ検出回路４３５は、実行対象である浮動小数点ロード命令において浮動小数点レジスタ３９を参照または変更することが要求されるか否かを検出する。
【００９１】
そして、命令デコード部１７から供給された浮動小数点ロード命令は、そのまま浮動小数点ロード命令実行部２５へ出力されると共に下位ＧＲ検出回路４５１と上位ＧＲ検出回路４５３、及びＦＲ検出回路４３５へ入力される。また、下位ＧＲ検出回路４５１から出力された信号とコンテキスト管理簿エントリ４２３に含まれたＥフィールドの値とが論理回路４３１に供給され、上位ＧＲ検出回路４５３から出力された信号とコンテキスト管理簿エントリ４２５に含まれたＥフィールドの値とが論理回路４３２に供給されＦＲ検出回路４３５から出力された信号とコンテキスト管理簿エントリ４４９に含まれたＥフィールドの値とが論理回路４３３に供給される。
【００９２】
また、論理回路４３１〜４３３の出力信号は共にＯＲ回路４３７へ入力され、ＯＲ回路４３７の出力信号は浮動小数点ロード命令実行部２５及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００９３】
次に、第六検出部４４７は、供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４４９に含まれたＥフィールドに０の値が格納され、かつ浮動小数点レジスタ３９を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【００９４】
ここで、図１４に示されるように、第六検出部４４７は、ＦＲ検出回路４３５と、論理回路４３１とを含む。そして、命令デコード部１７から供給された浮動小数点演算命令は、そのまま浮動小数点演算命令実行部２９へ出力されると共にＦＲ検出回路４３５へ入力される。また、ＦＲ検出回路４３５から出力された信号とコンテキスト管理簿エントリ４４９に含まれたＥフィールドの値とが論理回路４３２へ供給される。また、論理回路４３２の出力信号は浮動小数点演算命令実行部２９及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【００９５】
また、本実施の形態２に係る計算機におけるコンテキスト切り替え動作は、上記実施の形態１に係る計算機と同様に、図４及び図５に示されたフローチャートに従って説明される。そして、所望のコンテキストが使用できない場合の割り込み動作についても同様に、上記実施の形態１で示された図６及び図７のフローチャートに従って説明される。
【００９６】
以上より、本実施の形態２に係る計算機は、上記実施の形態１に係る計算機と同様な効果を奏すると共に、コンテキスト切り替えにおいて汎用レジスタ３７の上位領域と下位領域とを区別した上で制御するため、コンテキスト切り替えを最小限の範囲で可能とすることにより、さらに効率的に汎用レジスタ３７を活用することができる。
［実施の形態３］
図１５は、本発明の実施の形態３に係る計算機の構成を示す図である。図１５に示されるように、本実施の形態３に係る計算機は、図３に示された実施の形態１に係る計算機と同様な構成を有するが、コンテキストブロック管理簿４２１の代わりに、アドレスフィールド（ＰＴＲ）を含むコンテキスト管理簿エントリ４５８，４５９を有するコンテキストブロック管理簿４５７を備える点で相違する。
【００９７】
ここで、上記アドレスフィールド（ＰＴＲ）は、所定のコンテキストブロックに対応したメモリ１内のコンテキスト域を示すアドレスを格納する。
【００９８】
以下において、本実施の形態３に係る計算機におけるコンテキスト切り替え動作を、図１６に示されたフローチャートを参照しつつ説明する。
【００９９】
まず、ステップＳ１において、現コンテキストに対応するメモリ１上のコンテキスト域へ現コンテキストの基本ブロックを退避する。次に、ステップＳ２において、新コンテキストに対応するメモリ１上のコンテキスト域から新コンテキストの基本ブロックを復元する。またステップＳ３においては、コンテキストブロック管理簿４５７の新コンテキストの基本ブロックに対応するＥフィールドに１の値を格納する。
【０１００】
そして、ステップＳ４において、コンテキストブロック管理簿４５７に含まれる新コンテキストの基本ブロックに対応するアドレスフィールド（ＰＴＲ）に、新たなコンテキスト域のアドレスを格納する。次に、ステップＳ５において、コンテキストブロック管理簿４５７に含まれる該新コンテキストの基本ブロックに対応しないＥフィールドに０の値を格納し、コンテキストの切り替え動作を終了する。
【０１０１】
次に、所望のコンテキストが使用できない場合の割り込み動作を、図１７に示されるフローチャートを参照しつつ説明する。図１７に示されるように、ステップＳ１においては割り込み処理プログラムが動作する上で最低限必要なコンテキストを退避する。そして、ステップＳ２においてコンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）４１９に格納されたコンテキストブロック識別情報を読み出し、切り替え対象とするコンテキストブロックを求める。
【０１０２】
次に、ステップＳ３においては、コンテキストブロック管理簿４５７内の切り替え対象コンテキストブロックに対応するアドレスフィールド（ＰＴＲ）から、格納されている旧コンテキスト域のアドレスを読み出す。そして、ステップＳ４においては、該アドレスに対応するメモリ１上のコンテキスト域へ切り替え対象コンテキストブロックを退避する。次に、ステップＳ５において、コンテキストブロック管理簿４５７に含まれる新コンテキストの基本コンテキストブロックに対応するアドレスフィールド（ＰＴＲ）から現コンテキストに対応するアドレスを読み出す。
【０１０３】
そして、ステップＳ６において、該現コンテキストに対応するメモリ１上のコンテキスト域から切り替え対象とするコンテキストブロックを読み出し、復元する。次に、ステップＳ７において、コンテキストブロック管理簿４５７内の切り替え対象とするコンテキストブロックに対応するアドレスフィールド（ＰＴＲ）に、現コンテキストに対応するアドレスを格納し、現コンテキスト域を設定する。
【０１０４】
また、ステップＳ８では、コンテキストブロック管理簿４５７内の切り替え対象コンテキストブロックのＥフィールドに１を格納し、ステップＳ９では、割り込み処理プログラムが実行される上で最低限必要とされたコンテキストを復元する。そして、ステップＳ１０では、割り込み復帰命令の実行により、コンテキスト切り替えのための割り込み動作から復帰して、本動作を終了する。
【０１０５】
以上より、本実施の形態３に係る計算機は、上記実施の形態１に係る計算機と同様な効果を奏すると共に、コンテキストに対応したアドレスに応じてコンテキストを切り替えるため、コンテキストの切り替えにおける自由度を高めることができる。
［実施の形態４］
図１８は、本発明の実施の形態４に係る計算機の構成を示す図である。図１８に示されるように、本実施の形態４に係る計算機は、図１１に示された実施の形態２に係る計算機と同様な構成を有するが、コンテキストブロック管理簿４５０の代わりに、アドレスフィールド（ＰＴＲ）を含むコンテキスト管理簿エントリ４５８〜４６０を有するコンテキストブロック管理簿４６１を備える点で相違する。
【０１０６】
ここで、図１８に示された計算機におけるコンテキスト切り替え動作は、上記実施の形態３に係る計算機と同様に、図１６に示されたフローチャートに従って説明される。そして、所望のコンテキストが使用できない場合の割り込み動作についても同様に、上記実施の形態３で示された図１７のフローチャートに従って説明される。
【０１０７】
以上より、本実施の形態４に係る計算機は、上記実施の形態２に係る計算機と同様な効果を奏すると共に、上記実施の形態３に係る計算機と同様に、さらにコンテキストの切り替えにおける自由度を高めることができる。
【０１０８】
［実施の形態５］
図１９は、本発明の実施の形態５に係る計算機の構成を示す図である。なお、本実施の形態５に係る計算機におけるコンテキスト対象は、上記表３に示されたコンテキスト対象と同じものとされる。
【０１０９】
図１９に示されるように、本実施の形態５に係る計算機は、図１８に示された実施の形態４に係る計算機と同様な構成を有するが、第五検出部４４５，４４６の代わりに第七検出部４６３，４６４を備え、第六検出部４４７の代わりに第八検出部４６５を備える点で相違する。
【０１１０】
ここで、第七検出部４６３，４６４は、互いに同様な構成を有すると共に、いずれも供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４５８に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の下位領域を参照または変更する命令が供給された場合、またはコンテキスト管理簿エントリ４５９に含まれたＥフィールドに０の値が格納され、かつ汎用レジスタ３７の上位領域を参照または変更する命令が供給された場合、あるいはコンテキスト管理簿エントリ４６０に含まれたＥフィールドに０の値が格納され、かつ浮動小数点レジスタ３９を参照または変更する命令が供給された場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【０１１１】
ここで、図２０は第七検出部４６３の構成を示す。図２０に示されるように、第七検出部４６３は、下位ＧＲ検出回路４５１と、上位ＧＲ検出回路４５３と、浮動小数点（Ｆ）命令検出回路４６９と、論理回路４３１〜４３３と、ＯＲ回路４３７とを含む。ここで、Ｆ命令検出回路４６９は、実行の対象とする命令が浮動小数点ロード命令、浮動小数点ストア命令、浮動小数点演算命令、浮動小数点比較命令のいずれかであることを検出する。
【０１１２】
そして、命令デコード部１７から供給された浮動小数点ロード命令は、そのまま浮動小数点ロード命令実行部２５へ出力されると共に下位ＧＲ検出回路４５１と上位ＧＲ検出回路４５３、及びＦ命令検出回路４６９へ入力される。また、下位ＧＲ検出回路４５１から出力された信号とコンテキスト管理簿エントリ４５８に含まれたＥフィールドの値とが論理回路４３１に供給され、上位ＧＲ検出回路４５３から出力された信号とコンテキスト管理簿エントリ４５９に含まれたＥフィールドの値とが論理回路４３２に供給され、Ｆ命令検出回路４６９から出力された信号とコンテキスト管理簿エントリ４６０に含まれたＥフィールドの値とが論理回路４３３に供給される。
【０１１３】
また、論理回路４３１〜４３３の出力信号は共にＯＲ回路４３７へ入力され、ＯＲ回路４３７の出力信号は浮動小数点ロード命令実行部２５及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【０１１４】
次に、第八検出部４６５は、供給された命令の実行において参照または変更するレジスタが現コンテキストとされているか否かを判定する。そして、コンテキスト管理簿エントリ４６０に含まれたＥフィールドに０の値が格納され、かつ実行対象命令が浮動小数点演算命令など浮動小数点についての命令である場合には、コンテキスト使用不可割り込み制御部４２７へ割込信号を供給する。
【０１１５】
そして、第八検出部４６５の構成が図２１に示される。図２１に示されるように、第八検出部４６５は、Ｆ命令検出回路４６９と、論理回路４３１とを含む。ここで、命令デコード部１７から供給された浮動小数点演算命令は、そのまま浮動小数点演算命令実行部２９へ出力されると共にＦ命令検出回路４６９へ入力される。また、Ｆ命令検出回路４６９から出力された信号とコンテキスト管理簿エントリ４６０に含まれたＥフィールドの値とが論理回路４３２へ供給される。そして、論理回路４３２の出力信号は浮動小数点演算命令実行部２９及びコンテキスト使用不可割り込み制御部４２７へ供給される。
【０１１６】
また、図１９に示された計算機におけるコンテキスト切り替え動作は、上記実施の形態３に係る計算機と同様に、図１６に示されたフローチャートに従って説明される。そして、所望のコンテキストが使用できない場合の割り込み動作についても同様に、上記実施の形態３で示された図１７のフローチャートに従って説明される。
【０１１７】
以上より、本実施の形態５に係る計算機は、上記実施の形態４に係る計算機と同様な効果を奏すると共に、第七検出部４６３，４６４及び第八検出部４６５において浮動小数点についての命令であることが検出されたことに応じて、浮動小数点に関する演算のためのコンテキスト切り替えが実行されるため、浮動小数点演算の信頼性を高めることができる。
【０１１８】
【発明の効果】
上述の如く、コンテキスト対象であるハードウェア資源を複数の領域に分割したコンテキストブロックに基づいて、複数のプログラムを時分割して並列処理する計算機であって、第１プログラムを実行するときに必要とされる第１コンテキストブロック及び第２コンテキストブロックにおいて、第２プログラムを実行するときに、前記第１プログラムによって使用されている前記第１コンテキストブロックに格納されている第１情報と前記第２プログラムで使用する第３情報とが異なる場合には前記第１コンテキストブロックに格納されている前記第１情報を退避させ、前記第１情報と前記第３情報とが一致する場合には前記第１情報を退避させず、前記第２プログラムの実行において必要になった時点で、前記第１プログラムで使用されている前記第２コンテキストブロックに格納されている第２情報と前記第２プログラムで使用する第４情報とが異なる場合には前記第２コンテキストブロックに格納されている前記第２情報を退避させ、前記第２情報と前記第４情報とが一致する場合には前記第２情報を退避させないこととするため、該第２情報を退避させる時点までは、第２コンテキストブロックを第２プログラムを実行するために使用することができるため、計算機のハードウェア資源をより効率的に使用することができる。
【０１１９】
また、発生された割り込み処理において識別情報を記憶すると共に、第１コンテキストブロックに格納されている第１情報を退避させるものとすれば、プログラム全体の規模を低減できるため、計算機全体の回路規模を小さくし、かつ動作の高速化を図ることができる。
【０１２１】
最後に本発明の課題を解決するための手段について付記する。
（１）複数の領域に分割されたハードウェア資源を用いることにより、複数のプログラムを時分割して並列処理する計算機であって、第二のプログラムを実行するときにおいて必要とされる第一の領域が、第一のプログラムを実行するために既に使用されている場合には、第一のプログラムを識別する識別情報を記憶すると共に、第一の領域に格納されている情報を退避させる退避手段と、第二のプログラムの実行が終了あるいは中断したときには、退避手段により退避された情報を識別情報に応じて第一の領域に復元する復元手段とを備えたことを特徴とする計算機。
（２）退避手段は、退避させる情報が格納されている領域を識別する領域識別情報を保持する領域識別情報保持手段と、それぞれの領域に対応して設けられ、上記領域が使用不可能であるか否かを示す複数のフラグと、それぞれの領域に対応して設けられ、領域に格納されている情報を識別するコンテキスト識別情報を保持するコンテキスト識別情報保持手段と、第二のプログラムを実行するときにおいて必要とされる第一の領域が、使用不可能であるか否かをフラグの値に応じて判定する判定手段とを含み、判定手段により第一の領域が使用不可能であると判定された場合において、第一の領域を識別する領域識別情報を領域識別情報保持手段へ格納すると共に、退避させた情報を識別するコンテキスト識別情報をコンテキスト識別情報保持手段へ格納し、フラグを使用可能であることを示す値に設定する（１）に記載の計算機。このような手段によれば、使用不可能であるか否かがフラグの値に応じて容易に判定されるため、動作をさらに高速化することができる。
（３）コンテキスト識別情報保持手段は、コンテキストを特定する番号を保持する（２）に記載の計算機。このような手段によれば、コンテキストの退避及び復元を容易に実行することができるため、コンテキストの切り替えを確実に高速化することができる。
（４）コンテキスト識別情報保持手段は、退避させた情報が格納される記憶領域を指定するアドレスを保持する（２）に記載の計算機。このような手段によれば、コンテキストの切り替えにおける自由度を高めることができるため、汎用性を向上させることができる。
（５）複数の領域に分割されたハードウェア資源を用いることにより、複数のプログラムを時分割して並列処理する計算機の制御方法であって、第二のプログラムを実行するときにおいて必要とされる第一の領域が、第一のプログラムを実行するために既に使用されている場合には、第一のプログラムを識別する識別情報を記憶すると共に、第一の領域に格納されている情報を退避させる第一のステップと、第二のプログラムの実行が終了あるいは中断したときには、退避された情報を識別情報に応じて第一の領域に復元する第二のステップとを有することを特徴とする計算機の制御方法。
（６）第一のステップでは、第二のプログラムを実行するときにおいて必要とされる第一の領域が、第一のプログラムを実行するために既に使用されている場合に割り込み処理を発生させ、割り込み処理において、識別情報を記憶すると共に、第一の領域に格納されている情報を退避させる（５）に記載の計算機の制御方法。
（７）第一のステップでは、退避させた情報を特定する番号を保持する（５）に記載の計算機の制御方法。
（８）第一のステップでは、退避させた情報が格納される記憶領域を指定するアドレスを保持する（５）に記載の計算機の制御方法。
【図面の簡単な説明】
【図１】汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。
【図２】図１に示された計算機におけるコンテキスト切り替え動作を示すフローチャートである。
【図３】本発明の実施の形態１に係る計算機の構成を示す図である。
【図４】本発明の実施の形態１に係るコンテキスト切り替え方法を説明するフローチャートである。
【図５】図３に示された計算機によるコンテキスト切り替え動作を説明するフローチャートである。
【図６】本発明の実施の形態１に係るコンテキスト使用不可割り込み処理方法を説明するフローチャートである。
【図７】図３に示された計算機によるコンテキスト使用不可割り込み処理動作を説明するフローチャートである。
【図８】図３に示された第一検出部の構成を示す図である。
【図９】図３に示された第二検出部の構成を示す図である。
【図１０】図３に示された第三検出部の構成を示す図である。
【図１１】本発明の実施の形態２に係る計算機の構成を示す図である。
【図１２】図１１に示された第四検出部の構成を示す図である。
【図１３】図１１に示された第五検出部の構成を示す図である。
【図１４】図１１に示された第六検出部の構成を示す図である。
【図１５】本発明の実施の形態３に係る計算機の構成を示す図である。
【図１６】図１５に示された計算機によるコンテキスト切り替え動作を説明するフローチャートである。
【図１７】図１５に示された計算機によるコンテキスト使用不可割り込み処理動作を説明するフローチャートである。
【図１８】本発明の実施の形態４に係る計算機の構成を示す図である。
【図１９】本発明の実施の形態５に係る計算機の構成を示す図である。
【図２０】図１９に示された第七検出部の構成を示す図である。
【図２１】図１９に示された第八検出部の構成を示す図である。
【符号の説明】
１  メモリ
３  命令読み出し部
６，４００，４４０，４６７  命令実行部
８，４０２，４４８，４５５，４６２  レジスタ制御部
９，４０４  割り込み制御部
１１  命令読出制御部
１３  プログラムカウンタ（ＰＣ）
１５  命令語レジスタ（ＩＲ）
１７  命令デコード部
１９  ロード命令実行部
２１  ストア命令実行部
２２  演算命令実行部
２３  命令実行回路
２５  浮動小数点（Ｆ）ロード命令実行部
２７  浮動小数点（Ｆ）ストア命令実行部
２９  浮動小数点（Ｆ）演算命令実行部
３０  条件レジスタ（ＣＯＮＤ）
３１  レジスタ（ＥＰＣＲ）
３３  レジスタ（ＥＰＳＲ）
３５  レジスタ（ＰＳＲ）
３７  汎用レジスタ（ＧＲ）
３９  浮動小数点レジスタ（ＦＲ）
４０  割込制御回路
４０５〜４０８  第一検出部
４０９，４１０  第二検出部
４１１  第三検出部
４１３  切り替え対象コンテキストブロック読み出し命令実行部
４１５  コンテキストブロック管理簿読み出し命令実行部
４１７  コンテキストブロック管理簿書き込み命令実行部
４１９  コンテキストブロック識別レジスタ（ＣＴＸＴＩＤ）
４２１，４５０，４５７，４６１  コンテキストブロック管理簿
４２３，４２５，４４９，４５８〜４６０  コンテキスト管理簿エントリ
４２７  コンテキスト使用不可割り込み制御部
４２９  ＧＲ検出回路
４３１〜４３３  論理回路
４３５  ＦＲ検出回路
４３７  ＯＲ回路
４４１〜４４４  第四検出部
４４５，４４６  第五検出部
４４７  第六検出部
４５１  下位ＧＲ検出回路
４５３  上位ＧＲ検出回路
４６３，４６４  第七検出部
４６５  第八検出部
４６９  Ｆ（浮動小数点）命令検出回路
【図１】
0004116752.tif 000005
【図２】
0004116752.tif 000006
【図３】
0004116752.tif 000007
【図４】
0004116752.tif 000008
【図５】
0004116752.tif 000009
【図６】
0004116752.tif 000010
【図７】
0004116752.tif 000011
【図８】
0004116752.tif 000012
【図９】
0004116752.tif 000013
【図１０】
0004116752.tif 000014
【図１１】
0004116752.tif 000015
【図１２】
0004116752.tif 000016
【図１３】
0004116752.tif 000017
【図１４】
0004116752.tif 000018
【図１５】
0004116752.tif 000019
【図１６】
0004116752.tif 000020
【図１７】
0004116752.tif 000021
【図１８】
0004116752.tif 000022
【図１９】
0004116752.tif 000023
【図２０】
0004116752.tif 000024
【図２１】
0004116752.tif 000025