(57)【要約】【課題】ＣＰＵ内に複数のレジスタセットを保持し、プロセス切替え時であっても必要最低限でメモリへの退避、復帰処理を行うようにして、オーバヘッドを削減する。【解決手段】演算制御部４Ａは、ＣＰＵ動作モードフラグ４１Ａとレジスタセット選択手段４２とプロセス空間計算手段４３を用いて、メモリ３内のプロセス空間空間３１、３２、…毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセット７１、７２、…をも使用していないときは、各レジスタセット内に設定されている最終使用時刻の記憶領域７１２、７２２、…を参照して、複数のレジスタセットのうち、最終使用時刻が最も古いレジスタセットの記憶内容をメモリ３内の対応するレジスタ退避エリア３１１、３２２、…に格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して、当該実行しようとするプロセスを実行する。【選択図】図２
2008225710.tif 000002
【特許請求の範囲】
【請求項１】
複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えるコンピュータシステムにおけるプロセス切替え方法であって、
前記制御部は、
前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、
前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、
前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、いずれか一のレジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する
ことを特徴とするコンピュータシステムにおけるプロセス切替え方法。
【請求項２】
複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えるコンピュータシステムにおけるプロセス切替え方法であって、
前記制御部は、
前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、
前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、
前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、前記複数のレジスタセットのうち、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する
ことを特徴とするコンピュータシステムにおけるプロセス切替え方法。
【請求項３】
前記レジスタセットは、複数の汎用レジスタを備えてなることを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項４】
前記レジスタセットは、多目的に利用できる複数の汎用レジスタと、特別の目的で利用する単数又は複数の専用レジスタとを備えてなることを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項５】
前記制御部は、
どのレジスタセットを選択して前記プロセスを実行させるかを決定するレジスタセット選択機能と、
実行されるプロセス毎にユニークに付与されるプロセスＩＤに基づいて、当該プロセスＩＤによって識別される前記プロセス空間が前記メモリ上のどのアドレスに格納されているかを決定するプロセス空間計算機能とを備えていることを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項６】
前記各レジスタセットは、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域とを有していることを特徴とする請求項１又は５記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項７】
前記各レジスタセットは、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域と、当該レジスタセットを使用し終わった直後の時刻を格納するための最終使用時刻記憶領域とを有し、前記制御部は、前記最終使用時刻記憶領域に格納されている前記直後の時刻を参照して、どのレジスタセットが、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットであるかを判断することを特徴とする請求項２、３、４又は５記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項８】
前記メモリ内には、前記レジスタセットの個数よりも多い個数の前記プロセス空間が設定されることを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項９】
前記制御部は、所定のプロセスについては、複数の前記レジスタセットを使用して当該所定のプロセスを実行することを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項１０】
前記制御部は、所定のプロセスについては、実行可能モジュールに格納された使用レジスタセット数に基づいて、複数の前記レジスタセットを選択し使用して当該所定のプロセスを実行することを特徴とする請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法。
【請求項１１】
複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えると共に、プロセスを切替える機能を備えるコンピュータシステムであって、
前記制御部は、
前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、
前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、
前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、いずれか一のレジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する構成になされている、
ことを特徴とするコンピュータシステム。
【請求項１２】
複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えると共に、プロセスを切替える機能を備えるコンピュータシステムであって、
前記制御部は、
前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、
前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、
前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、前記複数のレジスタセットのうち、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する構成になされている、
ことを特徴とするコンピュータシステム。
【請求項１３】
前記レジスタセットは、複数の汎用レジスタを備えてなることを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項１４】
前記レジスタセットは、多目的に利用できる複数の汎用レジスタと、特別の目的で利用する単数又は複数の専用レジスタとを備えてなることを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項１５】
前記制御部は、
どのレジスタセットを選択して前記プロセスを実行させるかを決定するレジスタセット選択手段と、
実行されるプロセス毎にユニークに付与されるプロセスＩＤに基づいて、当該プロセスＩＤによって識別される前記プロセス空間が前記メモリ上のどのアドレスに格納されているかを決定するプロセス空間計算手段とを備えていることを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項１６】
前記各レジスタセットは、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域とを有していることを特徴とする請求項１１又は１５記載のコンピュータシステム。
【請求項１７】
前記各レジスタセットは、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域と、当該レジスタセットを使用し終わった直後の時刻を格納するための最終使用時刻記憶領域とを有し、前記制御部は、前記最終使用時刻記憶領域に格納されている前記直後の時刻を参照して、どのレジスタセットが、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットであるかを判断することを特徴とする請求項１２、１３、１４又は１５記載のコンピュータシステム。
【請求項１８】
前記メモリ内には、前記レジスタセットの個数よりも多い個数の前記プロセス空間が設定されていることを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項１９】
前記制御部は、所定のプロセスについては、複数の前記レジスタセットを使用して当該所定のプロセスを実行することを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項２０】
前記制御部は、所定のプロセスについては、実行可能モジュールに格納された使用レジスタセット数に基づいて、複数の前記レジスタセットを選択し使用して当該所定のプロセスを実行することを特徴とする請求項１１又は１２記載のコンピュータシステム。
【請求項２１】
前記所定のプロセスを実行する際に使用される前記レジスタセットの個数を格納するレジスタセット数記憶領域が付加されていることを特徴とする請求項１９又は２１記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータシステム及び該システムで用いられるプロセス切替え方法に係り、詳しくは、複数のレジスタセットを備える（組込みシステムを含む）コンピュータシステム及び該システムで用いられるプロセス切替え方法に関する。
【背景技術】
【０００２】
この種のレジスタセットは、ＣＰＵ（中央演算処理装置）の内部にあって、制御部によって処理される入出力データや、演算部の計算結果を一時記憶するための記憶装置であり、例えば、データレジスタやアドレスレジスタ等の汎用レジスタとプログラムカウンタやインデッククスレジスタ等の専用レジスタとの組からなっている。
ところで、従来の（組込みシステムを含む）コンピュータシステムでは、（同一プログラム内で関数コール呼び出し時の効率化を図ることを目的とするものを除けば、）レジスタセットは１セットのみしか保持しておらず、このため、マルチタスクＯＳ（オペレーティング・システム）でのプログラムの処理単位としてのプロセスの切替えや、特権モード・非特権モード゛の切替えの度にレジスタの内容をメモリ（主記憶装置）に格納（退避）したり、あるいは、メモリの内容をレジスタに復帰（回復）させる処理が必要となるため、その分、本来の処理やデータ転送もそれだけ遅くなるので問題となっていた。
【０００３】
そこで、この種のプロセス切替え時のオーバヘッド（システム全体の負荷）を削減するために、例えば、特許文献１に記載の管理装置、特許文献２に記載のオペレーティング・システムの処理方式及び特許文献３に記載の中央処理装置が提供されている。
【０００４】
特許文献１の管理装置では、１セットの汎用レジスタ群を備え、プログラムが使用した汎用レジスタの内容のみをメモリ（主記憶装置）に退避したり、メモリの内容をレジスタに復帰させることで、退避処理及び復帰処理を少なくして、オーバヘッドを削減するようにしている。
【０００５】
また、特許文献２に記載のオペレーティング・システムの処理方式では、プロセッサの持つレジスタウインドウ制御機構、もしくは類似した機構を操作し、アプリケーションソフトウェアのスレッドが一部の汎用レジスタを使用できないことにすることにより、スレッド間のコンテキストスイッチにおいて、退避、復帰するレジスタ数を少なくし、コンテキストスイッチのオーバヘッド時間を短縮するようにしている。
【０００６】
特許文献３に記載の中央処理装置は、命令処理装置とメモリ（主記憶装置）と、複数のレジスタ群とから構成され、複数のプログラムの内容をそれぞれ個別のレジスタ群に保持して時分割処理を実行することで、プロセスの切替え時、レジスタ群に保存した内容をメモリに退避したり、メモリの内容をレジスタに復帰させる処理をなくし、これにより、中央処理装置の処理効率の向上を図るようにしている。
【特許文献１】特開２００４−０２１６１０号公報
【特許文献２】特開２０００−２４２５０５号公報
【特許文献３】実開平０６−１５１３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の管理装置では、基本的に１セットの汎用レジスタ群しか設置されていないので、同時に実行可能なプロセスの数が増加した場合には、オーバヘッドの削減はそれほど期待できないので、不都合である。加えて、特許文献２に記載のオペレーティング・システムの処理方式では、アプリケーションソフトウェアのスレッドが一部の汎用レジスタを使用できない構成なので、ユーザプロセスの増加には対応できない、という不具合がある。
【０００８】
また、特許文献３の中央処理装置では、複数のレジスタ群が設けられているので、特許文献１や特許文献２の技術に較べれば、オーバヘッドの削減を期待できるものの、同時に実行可能なプロセスの数が、レジスタ群の設置数に制限されるので、同時に実行すべきプロセス数が、レジスタ群の設置数を超えるときは、マルチタスク制御が不可能又は混乱するので、不具合である。
【０００９】
この発明は、上述の事情に鑑みてなされたもので、レジスタセットの設置数の範囲であれば、プロセス切替え時のオーバヘッドを確実に削減できると共に、同時に実行すべきプロセス数が、レジスタセットの設置数を超えるときでも、円滑にマルチタスク制御ができるコンピュータシステム及び該システムで用いられるプロセス切替え方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、請求項１記載の発明は、複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えるコンピュータシステムにおけるプロセス切替え方法に係り、前記制御部が、前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、いずれか一のレジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行することを特徴としている。
【００１１】
請求項２記載の発明は、複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えるコンピュータシステムにおけるプロセス切替え方法に係り、前記制御部が、前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、前記複数のレジスタセットのうち、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行することを特徴としている。
【００１２】
請求項３記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記レジスタセットが、複数の汎用レジスタを備えてなることを特徴としている。
【００１３】
また、請求項４記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記レジスタセットが、多目的に利用できる複数の汎用レジスタと、特別の目的で利用する単数又は複数の専用レジスタとを備えてなることを特徴としている。
【００１４】
また、請求項５記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記制御部が、どのレジスタセットを選択して前記プロセスを実行させるかを決定するレジスタセット選択機能と、実行されるプロセス毎にユニークに付与されるプロセスＩＤに基づいて、当該プロセスＩＤによって識別される前記プロセス空間が前記メモリ上のどのアドレスに格納されているかを決定するプロセス空間計算機能とを備えていることを特徴としている。
【００１５】
また、請求項６記載の発明は、請求項１又は５記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記各レジスタセットが、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域とを有していることを特徴としている。
【００１６】
また、請求項７記載の発明は、請求項２、３、４又は５記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記各レジスタセットが、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域と、当該レジスタセットを使用し終わった直後の時刻を格納するための最終使用時刻記憶領域とを有し、前記制御部は、前記最終使用時刻記憶領域に格納されている前記直後の時刻を参照して、どのレジスタセットが、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットであるかを判断することを特徴としている。
【００１７】
また、請求項８記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記メモリ内には、前記レジスタセットの個数よりも多い個数の前記プロセス空間が設定されることを特徴としている。
【００１８】
また、請求項９記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記制御部が、所定のプロセスについては、複数の前記レジスタセットを使用して当該所定のプロセスを実行することを特徴としている。
【００１９】
また、請求項１０記載の発明は、請求項１又は２記載のコンピュータシステムにおけるプロセス切替え方法に係り、前記制御部が、所定のプロセスについては、実行可能モジュールに格納された使用レジスタセット数に基づいて、複数の前記レジスタセットを選択し使用して当該所定のプロセスを実行することを特徴としている。
【００２０】
また、請求項１１記載の発明は、複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えると共に、プロセスを切替える機能を備えるコンピュータシステムに係り、前記制御部が、前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、いずれか一のレジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する構成になされている、ことを特徴としている。
【００２１】
また、請求項１２記載の発明は、複数のレジスタをセットとして備える複数のレジスタセットと、ユーザプログラムやデータを格納するメモリと、前記レジスタセットと前記メモリとに直結されてこれらを制御する制御部とを備えると共に、プロセスを切替える機能を備えるコンピュータシステムに係り、前記制御部が、前記メモリ内に複数のプロセス空間を設定し、前記プロセス空間毎にレジスタ退避エリアを設定し、かつ、前記複数のレジスタセットを、プロセス（ユーザプログラムの処理単位）毎に使用して各プロセスを、切替えを交えて、併行して実行すると共に、前記メモリの前記プロセス空間毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセットをも使用していないときは、前記複数のレジスタセットのうち、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットの記憶内容を、前記メモリ内の対応する前記レジスタ退避エリアに格納して当該レジスタセットを開放した後、開放された当該レジスタセットを使用して前記実行しようとするプロセスを実行する構成になされている、ことを特徴としている。
【００２２】
また、請求項１３記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記レジスタセットが、複数の汎用レジスタを備えてなることを特徴としている。
【００２３】
また、請求項１４記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記レジスタセットが、多目的に利用できる複数の汎用レジスタと、特別の目的で利用する単数又は複数の専用レジスタとを備えてなることを特徴としている。
【００２４】
また、請求項１５記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記制御部が、どのレジスタセットを選択して前記プロセスを実行させるかを決定するレジスタセット選択手段と、実行されるプロセス毎にユニークに付与されるプロセスＩＤに基づいて、当該プロセスＩＤによって識別される前記プロセス空間が前記メモリ上のどのアドレスに格納されているかを決定するプロセス空間計算手段とを備えていることを特徴としている。
【００２５】
また、請求項１６記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記各レジスタセットが、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域とを有していることを特徴としている。
【００２６】
また、請求項１７記載の発明は、請求項１２、１３、１４又は１５記載のコンピュータシステムに係り、前記各レジスタセットが、当該レジスタセットを最後に使用したプロセスＩＤを格納するための最終プロセスＩＤ記憶領域と、当該レジスタセットを使用し終わった直後の時刻を格納するための最終使用時刻記憶領域とを有し、前記制御部は、前記最終使用時刻記憶領域に格納されている前記直後の時刻を参照して、どのレジスタセットが、最も不使用期間が長い（又は最終使用時刻が最も古い）レジスタセットであるかを判断することを特徴としている。
【００２７】
また、請求項１８記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記メモリ内には、前記レジスタセットの個数よりも多い個数の前記プロセス空間が設定されていることを特徴としている。
【００２８】
また、請求項１９記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記制御部が、所定のプロセスについては、複数の前記レジスタセットを使用して当該所定のプロセスを実行することを特徴としている。
【００２９】
また、請求項２０記載の発明は、請求項１１又は１２記載のコンピュータシステムに係り、前記制御部が、所定のプロセスについては、実行可能モジュールに格納された使用レジスタセット数に基づいて、複数の前記レジスタセットを選択し使用して当該所定のプロセスを実行することを特徴としている。
【００３０】
また、請求項２１記載の発明は、請求項１９又は２１記載のコンピュータシステムに係り、前記所定のプロセスを実行する際に使用される前記レジスタセットの個数を格納するレジスタセット数記憶領域が付加されていることを特徴としている。
【発明の効果】
【００３１】
この例の構成によれば、複数のレジスタセットを備え、前記レジスタセットの設置数の範囲であれば、前記複数のレジスタセットをプロセス毎に使用して、切替えを交えて、各プロセスを併行して実行できるので、プロセス切替え時のオーバヘッドを確実に削減できると共に、同時に実行すべきプロセス数が、レジスタセットの設置数を超えるときでも、いずれか一のレジスタセットの記憶内容を、メモリ内の対応するレジスタ退避エリアに格納して当該レジスタセットを開放し、開放された当該レジスタセットを使用できるようにしたので、円滑にマルチタスク制御を実施できる。
【発明を実施するための最良の形態】
【００３２】
ＣＰＵは、複数のレジスタセットを備えている。演算制御部４Ａは、プロセス（ユーザプログラムの処理単位）毎に各レジスタセットを使用し、プロセスを時分割で切替えて、各プロセスを併行して実行する。メモリ内には、レジスタセットの個数よりも多い個数のプロセス空間が設定されている。
【実施例１】
【００３３】
図１は、この発明の第１実施例であるコンピュータシステムの要部構成を示す電気的ブロック図、また、図２は、同第１実施例であるコンピュータシステムの要部構成（以下、コンピュータ本体ともいう）をより詳細に示す電気的ブロック図である。
この例のコンピュータ本体は、図１に示すように、プログラム制御によるマルチタスク切替えにより、複数のプロセス（ユーザプログラムの処理単位）を併行して実行するとＣＰＵ（中央演算処理装置）１と、システムタイマ２と、ＣＰＵ１Ａが直接アクセスできるＲＯＭやＲＡＭ等のメモリ（主記憶装置）３とから概略構成されている。
【００３４】
上記ＣＰＵ１Ａは、同図に示すように、命令解釈、制御信号の生成及び論理演算を行う演算制御部４Ａと、該演算制御部４Ａに直結されて、演算結果や入出力データを一時記憶しておくためのレジスタ部５とから概略構成されている。
【００３５】
上記レジスタ部５は、図２に示すように、オペレーティングシステム（ＯＳ）やシステム運用管理プログラム等の特別な権限を持ったプログラムが実行されるときに使用される特権モード用レジスタ部６と、プロセス（マルチタスクＯＳでのプログラムの処理単位）が実行されるときに使用され、かつ、オーバヘッド削減のために、複数のレジスタセットを備える非特権モード用レジスタ部７とからなっている。
【００３６】
上記非特権モード用レジスタ部７は、図２に示すように、複数のレジスタセット（この例では、４つのレジスタセット）７１、７２、７３、７４を保持し、さらに、「最終プロセスＩＤ」記憶領域７１１、７２１、７３１、７４１と、「最終使用時刻」記憶領域７１２、７２２、７３２、７４２とが付加されている。
【００３７】
各レジスタセット７１、７２、７３、７４は、フリップ・フロップ回路からなる複数のレジスタ、例えば、データレジスタやアドレスレジスタ等の複数の汎用レジスタとプログラムカウンタやステイタスレジスタやインデッククスレジスタ等の複数の専用レジスタとの組からなっている。
【００３８】
また、上記最終プロセスＩＤの記憶領域７１１、７２１、７３１、７４１は、当該レジスタセット７１、７２、７３、７４を最後に使用したプロセスＩＤが格納され、また、最終使用時刻の記憶領域７１２、７２２、７３２、７４２は、当該レジスタセット７１、７２、７３、７４を使用し終わった直後の時刻が格納されるようになっている。
【００３９】
上記システムタイマ２は、時を刻んでシステム時刻を生成し、生成したシステム時刻をＣＰＵに提供する。システム時刻は、コンピュータシステムに唯一の存在であり、提供するシステム時刻の単位は、マシンクロックのようにコンピュータシステムが持つ最も細かい時刻精度である。
【００４０】
上記メモリ３には、（ユーザプログラムの処理単位としての）プロセスや関連するデータを格納するために、複数のプロセス空間（この例では、５つのプロセス空間）３１、３２、３３、３４、３５が設定されていて、各プロセス空間３１、３２、３３、３４、３５には、対応するレジスタイメージ（レジスタセットの記憶内容）が格納されるレジスタ退避エリア３１１、３２２、３３３、３４４、３５５が設定されている。
【００４１】
上記演算制御部４Ａは、ＣＰＵ１Ａが特権モードで動作しているか、非特権モードで動作しているかを示すＣＰＵ動作モードフラグ４１Ａと、プロセスを非特権モード用レジスタ部７の中のどのレジスタセット７１、７２、７３、７４を選択してプロセスを実行させるかを決定するレジスタセット選択手段４２と、実行されるプロセスごとにユニークに付与されるプロセスＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）に基づいて、そのプロセスＩＤで指定されるプロセス空間３１、３２、３３、３４、３５がメモリ３上のどのアドレスに格納されているかを決定するプロセス空間計算手段４３とを備えている。
【００４２】
この例の演算制御部４Ａは、ＣＰＵ動作モードフラグ４１Ａとレジスタセット選択手段４２とプロセス空間計算手段４３を用いて、メモリ３内のプロセス空間３１、３２、３３、３４、３５毎に展開されている複数のプロセスのうち、実行しようとするプロセスが、いずれのレジスタセット７１、７２、７３、７４をも使用していないときは、各レジスタセット７１、７２、７３、７４内に設定されている「最終使用時刻」記憶領域７１２、７２２、７３２、７４２を参照して、複数のレジスタセット７１、７２、７３、７４のうち、最終使用時刻が最も古い（すなわち、最も不使用期間が長い）レジスタセット７１、７２、７３、７４の記憶内容（レジスタイメージ）を、メモリ３内の対応するレジスタ退避エリア３１１、３２２、３３３、３４４、３５５に格納して当該レジスタセット７１、７２、７３、７４を開放した後、開放された当該レジスタセットを使用して、当該実行しようとするプロセスを実行する構成となっている。
【００４３】
次に、図２を参照して、この例の動作について説明する。
システム起動後、ユーザプログラムが全く動作していない状況では、非特権モード用レジスタ７は、全て初期状態（０クリア）である。ここで、同図に示すように、メモリ３のプロセス空間３１に展開されているプロセスＩＤ：１のプロセス（ユーザプログラム）が実行される場合の動作について説明する。
【００４４】
動作例１
まず、ＣＰＵ動作モードフラグ４１Ａに非特権モードである旨のフラグがセットされ、これにより、ＣＰＵ１Ａが非特権モードで動作する。すると、レジスタセット選択手段４２は、プロセス空間３１に展開されているプロセスＩＤ：１のプロセス（ユーザプログラム）をどのレジスタセット７１、７２、７３、７４を選択（使用）して実行するかを決定する。決定に当っては、各レジスタセット７１、７２、７３、７４の最終プロセスＩＤの記憶領域７１１、７２１、７３１、７４１を参照し、プロセスＩＤ：１が格納されているレジスタセットがあれば、そのレジスタセットを使用してプログラムが実行される。
このときは、プロセス切替えによるメモリ２へのレジスタセット記憶内容の退避処理もメモリ２からのレジスタセット記憶内容の復帰処理も不要となるので、オーバヘッドは生じない。
【００４５】
動作例２
もし、最終プロセスＩＤの記憶領域７１１、７２１、７３１、７４１を参照した結果、プロセスＩＤ：１が格納されているレジスタセットがなければ、各レジスタセット７１、７２、７３、７４の「最終使用時刻」記憶領域７１２、７２２、７３２、７４２を参照して、時刻が一番古いレジスタセットを選択使用してプログラムが実行される。
【００４６】
今の場合は、非特権モード用レジスタ部７は全て初期状態なので、レジスタセット選択手段４２は、レジスタセット７１を選択すると共に、レジスタセット７１用の「最終プロセスＩＤ」記憶領域７１１にプロセスＩＤの“１”を格納する。このときも、プロセス切替えによるメモリ２へのレジスタセット記憶内容の退避処理もメモリ２からのレジスタセット記憶内容の復帰処理も不要となるので、オーバヘッドは生じない。
【００４７】
動作例３
次にプロセスＩＤ：１のプロセス（ユーザプログラム）がＣＰＵ１Ａを開放するのに伴い、プロセス切替えを行う場合、ＣＰＵ１Ａは、システムタイマ２から現在時刻を取得し、取得した現在時刻の値をレジスタセット７１用の「最終使用時刻」記憶領域７１２に格納する。この状態で、プロセスＩＤ：１のプロセスが再度実行される際には、レジスタセット選択手段４２により、レジスタセット７１が選択され、プロセスＩＤ：１のプロセス（ユーザプログラム）が実行されることになる。このときも、プロセス切替えによるメモリ２へのレジスタセット記憶内容の退避処理もメモリ２からのレジスタセット記憶内容の復帰処理も不要となるので、オーバヘッドは生じない。
【００４８】
動作例４
次に、図２に示す非特権モード用レジスタ部７において、レジスタセット７１用の「最終プロセスＩＤ」記憶領域７１１にプロセスＩＤ：１、レジスタセット７２用の「最終プロセスＩＤ」記憶領域７２１にプロセスＩＤ：２、レジスタセット７３用の「最終プロセスＩＤ」記憶領域７３１にプロセスＩＤ：３、及びレジスタセット７４用の「最終プロセスＩＤ」記憶領域７４１にプロセスＩＤ：４が格納されている状態で、プロセスＩＤ：１、プロセスＩＤ：２、プロセスＩＤ：３、プロセスＩＤ：４のプロセス（ユーザプログラム）が時分割で切替えられて実行される場合の動作について説明する。
【００４９】
レジスタセット選択手段４２は、時分割で。プロセス空間３１に展開されているプロセスＩＤ：１のプロセス（ユーザプログラム）、プロセスＩＤ：２のプロセス、プロセスＩＤ：３のプロセス、プロセスＩＤ：４のプロセスをどのレジスタセット７１、７２、７３、７４を選択（使用）して実行するかを決定する。決定に当っては、各レジスタセット７１、７２、７３、７４の最終プロセスＩＤの記憶領域７１１、７２１、７３１、７４１を参照する。今の場合は、プロセスＩＤ：１、プロセスＩＤ：２、プロセスＩＤ：３及びプロセスＩＤ：４が格納されているレジスタセット７１、７２、７３、７４は全て存在するので、これらのレジスタセット７１、７２、７３、７４を使用して各プロセスが実行される。このときは、プロセス切替えによるメモリ２へのレジスタセット記憶内容の退避処理もメモリ２からのレジスタセット記憶内容の復帰処理も不要となるので、オーバヘッドは生じない。
【００５０】
動作例５
次に、図２に示す非特権モード用レジスタ部７において、レジスタセット７１用の「最終プロセスＩＤ」記憶領域７１１に“１”、レジスタセット７２用の「最終プロセスＩＤ」記憶領域７２１に“２”、レジスタセット７３用の「最終プロセスＩＤ」記憶領域７３１に“３”、及びレジスタセット７４用の「最終プロセスＩＤ」記憶領域７４１に“４”が格納されている状態で、プロセスＩＤ：５のプロセス（ユーザプログラム）が実行される場合の動作について説明する。
【００５１】
レジスタセット選択手段４２は、上記規則に従って、プロセスＩＤ：５が、いずれかのレジスタセット用の「最終プロセスＩＤ」記憶領域７１１、７２１、７３１、７４１に格納されているか否かを判断する。今の場合は、いずれの「最終プロセスＩＤ」記憶領域に格納されているＩＤ値も“５”でないため、レジスタセット選択手段４２は、プロセスＩＤ：５が、いずれかのレジスタセット用の「最終プロセスＩＤ」記憶領域７１１、７２１、７３１、７４１にも格納されていないと判断する。
【００５２】
レジスタセット選択手段４２は、次に、各レジスタセットの「最終使用時刻」記憶領域７１２、７２２、７３２、７４２を参照し、一番古い時刻が格納されているレジスタセットを選択する。
【００５３】
今の場合、レジスタセット７１用の「最終使用時刻」記憶領域７１２が一番古いと仮定すると、プロセスＩＤ：５のプロセス（ユーザプログラム）が、レジスタセット７１を使用して実行されることになる。このままプロセスを実行すると、プロセスＩＤ：１が使用していたレジスタセット７１のイメージが破壊されるため、プロセス空間計算手段４３は、レジスタセット７１の「最終プロセスＩＤ」記憶領域７１１（今の場合、“１”が格納されている）から、プロセスＩＤ：１用のレジスタ退避エリア３１１のアドレスを計算し、レジスタセット７１のレジスタイメージをプロセスＩＤ：１用のレジスタ退避エリア３１１に格納する。それゆえ、動作例５の場合には、プロセス切替えによるメモリ２へのレジスタセット記憶内容の退避処理及びメモリ２からのレジスタセット記憶内容の復帰処理が必要となるので、オーバヘッドが生じる。
【００５４】
このように、この第１実施例の構成によれば、ＣＰＵ１Ａの内部に複数のレジスタセットレジスタセット７１、７２、７３、７４を保持し、プロセス切替え時であっても、必要最低限でメモリへの退避・復帰処理を行うため、プロセス切替え時のオーバヘッドを削減できる。また、この例の構成によれば、メモリ３内には、レジスタセット７１、７２、７３、７４の個数よりも多い個数のプロセス空間３１、３２、３３、３４、３５が設定されているので、同時に実行すべきプロセス数が、レジスタセットの設置数を超えるときでも、いずれか一のレジスタセットの記憶内容を、メモリ内の対応するレジスタ退避エリアに格納して当該レジスタセットを開放し、開放された当該レジスタセットを使用できるようにしたので、前記実行しようとするプロセスを実行する円滑にマルチタスク制御ができる。
【実施例２】
【００５５】
図３は、この発明の第２実施例であるコンピュータシステムの要部構成を示す電気的ブロック図である。
この例のコンピュータシステムの構成が、上述の第１実施例のそれと大きく異なるところは、同図に示すように、ＣＰＵ動作モ−ドフラグ４１Ｂに使用レジスタセット数記憶領域８を設け、単一のプロセス（ユーザプログラム）が、ＣＰＵ１Ｂが保持する複数のレジスタセット（例えば、２つのレジスタセットレジスタセット７１、７２）を用いて処理を実行できるようにした点である。
【００５６】
ここで、上記使用レジスタセット数記憶領域８は、ＣＰＵ動作モ−ドフラグ４１Ｂに使用するレジスタセット数を格納できる記憶領域である。
【００５７】
この例の構成において、実行可能モジュールに予め使用するレジスタセット数を格納（コンパイラがコンパイル時に設定）しておく。そして、プロセスが実行される際には、実行可能モジュール内に格納されている使用レジスタセット数を読み込み、ＣＰＵ動作モードフラグ４１Ｂの使用レジスタセット数記憶領域８に設定する。レジスタセット選択手段４２は、使用レジスタセット数記憶領域８を参照して、必要とするレジスタセット数を確保する処理を行う。
【００５８】
以上、この発明の実施例を図面を参照して詳述してきたが、具体的な構成はこの実施例に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれる。例えば、上述の実施例では、各レジスタセットが、複数の汎用レジスタと複数の専用レジスタとから構成されるようにしたが、これに限定するものではなく、レジスタセットが、多目的に利用できる複数の汎用レジスタのみから構成されても良く、また、複数の汎用レジスタと特別の目的で利用する単数の専用レジスタとから構成されるようにしても良い。
【００５９】
また、上述の第２実施例では、単一のプロセス（ユーザプログラム）が、２つのレジスタセットレジスタセット７１、７２を用いて処理を実行する場合について述べたが、使用レジスタセット数は任意であり、必要に応じて増減でき、ＣＰＵ１Ｂが保持する全てのレジスタセットを用いても良い。また、レジスタセットの保持数は任意であり、プロセス空間の設定数も任意である。
また、複数のレジスタセットのうち、最終使用時刻が最も古い（すなわち、最も不使用期間が長い）レジスタセットの記憶内容を、メモリのレジスタ退避エリアに退避させるようにしたが、これに限定されない。例えば、使用の頻度等を考慮して、退避すべきレジスタセットを決めるようにしても良い。
【産業上の利用可能性】
【００６０】
計算機システムに限らず、組込みシステムにも適用できる。
【図面の簡単な説明】
【００６１】
【図１】この発明の第１実施例であるコンピュータシステムの要部構成を示す電気的ブロック図である。
【図２】同第１実施例であるコンピュータシステムの要部構成をより詳細に示す電気的ブロック図である。
【図３】この発明の第２実施例であるコンピュータシステムの要部構成を示す電気的ブロック図である。
【符号の説明】
【００６２】
１Ａ、１Ｂ        ＣＰＵ（コンピュータシステムの一部）
２        システムタイマ
３        メモリ
３１、３２、３３、３４、３５      プロセス空間
３１１、３２２、３３３、３４４、３５５      レジスタ退避エリア
４Ａ、４Ｂ        演算制御部（制御部）
４１Ａ，４１Ｂ        ＣＰＵ動作モードフラグ
８        レジスタセット数記憶領域
４２        レジスタセット選択手段
４３        プロセス空間計算手段
５        レジスタ部
６        特権モード用レジスタ部
７        非特権モード用レジスタ部
７１１、７２１、７３１、７４１      最終プロセスＩＤ記憶領域
７１２、７２２、７３２、７４２      最終使用時刻記憶領域
【図１】
2008225710.tif 000003
【図２】
2008225710.tif 000004
【図３】
2008225710.tif 000005