(57)【要約】【課題】プロセッサ内蔵する演算装置において、新メモリ登場などによりますます顕在化する、複数の演算装置間の待合せ時間における消費電力及び演算能力の浪費の削減と、演算装置のコンテキストスイッチ負荷の削減が課題である。【解決手段】マイクロプロセッサと、マイクロプロセッサに接続されたメモリとを備える機器に備わる演算制御装置であって、マイクロプロセッサは、複数の演算部を備え、メモリは、複数の演算部が読み書き可能な共有記憶領域を含み、演算制御装置は、共有記憶領域への書き込みができるか否かを検出する書込検出部を備え、演算部が共有記憶領域に書き込みができない場合、共有記憶領域を監視し、演算部の稼動を停止することを特徴とする。【選択図】図１
2010170409.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、前記マイクロプロセッサに接続されたメモリとを備える機器に備わる演算制御装置であって、
前記マイクロプロセッサは、複数の演算部を備え、
前記メモリは、前記複数の演算部が読み書き可能な共有記憶領域を含み、
前記演算制御装置は、
前記共有記憶領域への書き込みができるか否かを検出する書込検出部を備え、
前記演算部が前記共有記憶領域に書き込みができない場合、前記共有記憶領域を監視し、前記演算部の稼動を停止することを特徴とする演算制御装置。
【請求項２】
前記演算部から送信される命令を受信する受信部を備え、
前記演算部から送信される、前記共有記憶領域の監視を要求する監視命令に基づいて、前記共有記憶領域の監視を開始することを特徴とする請求項１に記載の演算制御装置。
【請求項３】
前記演算部が実行する演算を検出する実行演算検出部を備え、
前記演算制御装置の前記実行演算検出部が、前記演算部が前記共有記憶領域への書き込みを失敗したことを検出した場合、前記演算制御装置は、前記共有記憶領域の監視を開始することを特徴とする請求項１に記載の演算制御装置。
【請求項４】
前記演算部へのクロックの供給を制御するクロック制御部を備え、
前記演算部へのクロックの供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項２又は３に記載の演算制御装置。
【請求項５】
前記演算部への電力の供給を制御する電力制御部を備え、
前記演算部への電源の供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項２又は３に記載の演算制御装置。
【請求項６】
マイクロプロセッサと、前記マイクロプロセッサに接続されたメモリとを備える機器に備わる演算制御装置であって、
前記マイクロプロセッサは、複数の演算部を備え、
前記メモリは、前記演算部が実行する処理に関する情報と、前記処理の結果とを格納するプロセス管理領域を含み、
前記プロセス管理領域は、前記処理の結果を含むコンテキスト情報が格納され、
前記演算制御装置は、
前記演算部に実行させる前記処理の割り当てと、前記処理の実行時間とを設定するスケジューラ部を備え、
前記演算部に第１の処理の実行命令を送信し、
前記第１の処理の終了前に次に実行する第２の処理の実行命令を前記演算部に送信することを特徴とする演算制御装置。
【請求項７】
前記演算部が第１の処理から第２の処理に切り替える時に、前記第２の処理に関するコンテキスト情報の一部である部分コンテキスト情報を前記演算部が読み出し、
前記読み出された部分コンテキスト情報に基づいて前記演算部が前記第２の演算を実行している時に、残りの前記コンテキスト情報を前記演算部が読み出すことを特徴とする請求項６に記載の演算制御装置。
【請求項８】
前記演算部への読み出しが完了していない前記コンテキスト情報である、未完了コンテキスト情報に前記演算部がアクセスしたことを検出するアクセス検出部を備え、
前記演算部が前記未完了コンテキスト情報にアクセスしたことを検出した場合に、前記演算部の稼動を停止し、
前記未完了コンテキスト情報を全て、前記演算部が読み出した後に、前記演算部の稼働を再開することを特徴とする請求項７に記載の演算制御装置。
【請求項９】
前記演算部へのクロックの供給を制御するクロック制御部を備え、
前記演算部へのクロックの供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項８に記載の演算制御装置。
【請求項１０】
前記演算部への電力の供給を制御する電力制御部を備え、
前記演算部への電源の供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項８に記載の演算制御装置。
【請求項１１】
前記コンテキスト情報のうち、前記演算部が実際にアクセスしている情報を抽出するアクセス情報抽出部を備え、
前記演算部が第１の処理から第２の処理に切り替える時に、前記第１の処理に関するコンテキスト情報のうち、実際にアクセスされたコンテキスト情報のみを前記プロセス管理領域に保存し、
前記演算部が前記第１の処理を実行するため、前記第１の処理に関するコンテキスト情報を前記プロセス管理領域から読み出す場合、前記実際にアクセスされたコンテキスト情報を前記演算部が読み出し、
実際に読み出されていない前記コンテキスト情報へのアクセスがあった時に、前記演算部が初期化を実行することを特徴とする請求項６に記載の演算制御装置。
【請求項１２】
メモリと接続され、演算処理をするマイクロプロセッサであって、
前記マイクロプロセッサは、複数の演算部と演算制御部とを備え、
前記メモリは、前記複数の演算部が読み書き可能な共有記憶領域を含み、
前記演算制御部は、前記共有記憶領域への書き込みができるか否かを検出する書込検出手段を備え、
前記演算制御部は、前記演算部が前記共有記憶領域に書き込みができない場合、前記共有記憶領域を監視し、前記演算部の稼動を停止することを特徴とするマイクロプロセッサ。
【請求項１３】
前記演算制御部は、
前記演算部から送信される命令を受信する命令受信手段を備え、
前記演算部から送信される、前記共有記憶領域の監視を要求する監視命令に基づいて、前記共有記憶領域の監視を開始することを特徴とする請求項１２に記載のマイクロプロセッサ。
【請求項１４】
前記演算制御部は、
前記演算部が実行する演算を検出する実行演算検出手段を備え、
前記演算制御部の前記実行演算検出手段が、前記演算部が前記共有記憶領域に書き込みに失敗したことを検出した場合、前記演算制御部は、前記共有記憶領域の監視を開始することを特徴とする請求項１２に記載のマイクロプロセッサ。
【請求項１５】
前記演算制御部は、
前記演算部へのクロックの供給を制御するクロック制御手段を備え、
前記演算部へのクロックの供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項１３又は１４に記載のマイクロプロセッサ。
【請求項１６】
前記演算制御部は、
前記演算部への電力の供給を制御する電力制御手段を備え、
前記演算部への電源の供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項１３又は１４に記載のマイクロプロセッサ。
【請求項１７】
メモリと接続され、演算処理をするマイクロプロセッサであって、
前記マイクロプロセッサは、少なくとも一つ演算部と演算制御部とを備え、
前記メモリは、前記演算部が実行する処理に関する情報と、前記処理の結果とを格納するプロセス管理領域を含み、
前記プロセス管理領域は、前記処理の結果を含むコンテキスト情報が格納され、
前記演算制御部は、
前記演算部に実行させる前記処理の割り当てと、前記処理の実行時間とを設定するスケジューラ手段を備え、
前記演算部に第１の処理の実行命令を送信し、
前記第１の処理の終了前に次に実行する第２の処理の実行命令を前記演算部に送信することを特徴とするマイクロプロセッサ。
【請求項１８】
前記演算制御部は、
前記演算部が第１の処理から第２の処理に切り替える時に、前記第２の処理に関するコンテキスト情報の一部である部分コンテキスト情報を前記演算部が読み出し、
前記読み出された部分コンテキスト情報に基づいて前記演算部が前記第２の演算を実行している時に、残りの前記コンテキスト情報を前記演算部が読み出すこと特徴とする請求項１７に記載のマイクロプロセッサ。
【請求項１９】
前記演算制御部は、
前記演算部への読み出しが完了していない前記コンテキスト情報である、未完了コンテキスト情報に前記演算部がアクセスしたことを検出するアクセス検出手段を備え、
前記演算部が前記未完了コンテキスト情報にアクセスしたことを検出した場合に、前記演算部の稼動を停止し、
前記未完了コンテキスト情報を全て、前記演算部が読み出した後に、前記演算部の稼働を再開することを特徴とする請求項１８に記載のマイクロプロセッサ。
【請求項２０】
前記演算制御部は、
前記演算部へのクロックの供給を制御するクロック制御手段を備え、
前記演算部へのクロックの供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項１９に記載のマイクロプロセッサ。
【請求項２１】
前記演算制御部は、
前記演算部への電力の供給を制御する電力制御手段を備え、
前記演算部への電源の供給を停止することによって、前記演算部の稼動を停止することを特徴とする請求項１９に記載のマイクロプロセッサ。
【請求項２２】
前記演算制御部は、前記コンテキスト情報のうち、前記演算部が実際にアクセスしている情報を抽出するアクセス情報抽出手段を備え、
前記マイクロプロセッサは、
前記演算部が第１の処理から第２の処理に切り替える時に、前記第１の処理に関するコンテキスト情報のうち、実際にアクセスされたコンテキスト情報のみを前記プロセス管理領域に保存し、
前記演算部が前記第１の処理を実行するため、前記第１の処理に関するコンテキスト情報を前記プロセス管理領域から読み出す場合、前記実際にアクセスされたコンテキスト情報を前記演算部が読み出し、
実際に読み出されていない前記コンテキスト情報へのアクセスがあった時に、初期化を実行することを特徴とする請求項１７に記載のマイクロプロセッサ。
【請求項２３】
マイクロプロセッサと、前記マイクロプロセッサに接続されたメモリとを備える機器であって、
請求項１から１１のいずれか一つに記載の演算制御装置を備えることを特徴とする機器。
【請求項２４】
マイクロプロセッサと、前記マイクロプロセッサと接続されたメモリとを備える機器であって、
前記マイクロプロセッサは、請求項１２から２２のいずれか一つに記載の演算制御部を備えることを特徴とする機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサにおける並列処理実行方式に関し、特に処理切替え時間と並列処理の待ち合わせ時間における消費電力の小さなマイクロプロセッサに関する。
【背景技術】
【０００２】
マイクロプロセッサは、家電機器にも組込まれるようになり、前述のような家電機器の消費電力を下げるため、複数の演算装置を内蔵するものが一般的となっている。今後、さらに、マイクロプロセッサに搭載される演算装置の数は増大する見込みである。
【０００３】
前述したマイクロプロセッサは、インターネット通信、及びデジタルメディア処理など、複数の演算処理を同時に実行することが求められている。このため、マイクロプロセッサは、前述したような複数の演算処理を同時に実行するために、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）又はハイパーバイザといった、複数の処理の実行時間を割り当てるスケジューラ機能を備えたソフトウェアを用いて管理されている。
【０００４】
前述したソフトウェアが実行する処理として、排他的に実行される演算の制御処理、及び複数の演算を並列的に実行するための制御処理がある（例えば、非特許文献１参照）。
【０００５】
排他的に実行される演算の制御処理は、排他的に実行される演算を管理するための管理変数であるロック変数を用いて行われる。具体的には、演算装置がメモリ上のロック変数を取得する。演算装置が実行する演算は、当該ロック変数が解放されるまで、排他的に実行される。つまり、当該演算が使用するリソースが独占されることになる。なお、ロック変数の取得については、図１２を用いて後述する。
【０００６】
また、複数の演算を並列的に実行するための制御処理は、前述のソフトウェアが各演算装置に実行させる演算と、当該演算の実行時間とに基づいて、演算装置に前述の演算を実行させる。このとき、現在行っている演算から、他の演算を実行するときに、演算装置は、初期化を実行し、その後、次に実行される演算に切り替えるための処理を実行する。
【非特許文献１】デイビッド・Ａ・パターソン、ジョン・Ｌ・ヘネシー著、「コンピュータの構成と設計〜ハードウェアとソフトウェアのインタフェース 第３版」、２００６年
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、前述の排他的に実行される演算の制御処理は、次のような問題がある。
【０００８】
つまり、プロセッサが第１の演算装置と第２の演算装置とを備え、第１の演算装置が排他的な演算を実行しているときに、第２の演算装置が排他的な演算を実行しようとすると、すでに、第１の演算装置がロック変数を取得しているため、第２の演算装置は、ロック変数と取得できない。このとき、第２の演算装置は、ロック変数を取得するまで、メモリにアクセスをし続ける。これによって、第２の演算装置は、余分な演算を実行するため、余分な電力を消費する問題がある。
【０００９】
また、前述の複数の演算を並列的に実行するための制御処理は、次のような問題がある。
【００１０】
つまり、演算装置が第１の演算を実行し、第２の演算に切り替えるときに、演算装置は、第１の演算から第２の演算へ切り替える時に、管理処理を実行する必要があり、このため、演算装置の負荷が大きくなる問題がある。
【００１１】
特に、マイクロプロセッサが内蔵する演算装置が増加するほど、前述した問題は重大となる。また、高速化及び不揮発化されたメモリにおいては、レスポンスタイム及び省電力性が重要になり、前述した問題は重大となる。
【００１２】
本発明は、かかる問題点を鑑みてなされたものである。
【課題を解決するための手段】
【００１３】
本発明の代表的な一例を示せば以下の通りである。すなわち、マイクロプロセッサと、前記マイクロプロセッサに接続されたメモリとを備える機器に備わる演算制御装置であって、前記マイクロプロセッサは、複数の演算部を備え、前記メモリは、前記複数の演算部が読み書き可能な共有記憶領域を含み、前記演算制御装置は、前記共有記憶領域への書き込みができるか否かを検出する書込検出部を備え、前記演算部が前記共有記憶領域に書き込みができない場合、前記共有記憶領域を監視し、前記演算部の稼動を停止することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、プロセッサが同期待ちループによって消費する電力を減少させ、演算装置の演算の切り替えを高速化できる。
【発明を実施するための最良の形態】
【００１５】
［第１の実施形態］
本発明の第１の実施形態では、前述の排他的に実行される作業の制御処理に関する発明について説明する。
【００１６】
まず、従来技術について説明する。
【００１７】
図１１は、従来のマイクロプロセッサを備えた機器の装置構成を示すブロック図である。
【００１８】
機器１０１は、マイクロプロセッサ１０２、メモリ１０３を備える。
【００１９】
マイクロプロセッサ１０２とメモリ１０３とは、メモリアクセスバス１０７を介して接続される。
【００２０】
マイクロプロセッサ１０２は、演算装置１（１０５）、演算装置２（１０６）、及びクロック１１２を備える。
【００２１】
クロック１１２は、同期回路が動作するために必要なクロックを生成する回路であり、水晶発振器などから構成される。
【００２２】
演算装置１（１０５）及び演算装置２（１０６）は、クロック１１２から供給されるクロックを元に演算を実行する論理回路である。演算装置１（１０５）及び演算装置２（１０６）は、実行中の演算の途中経過を、それぞれ、コンテキスト情報１１０８及びコンテキスト情報１１１０として管理している。以下、演算装置１（１０５）、演算装置２（１０６）を区別しない場合、演算装置１（１０５）、２（１０６）と記載する。
【００２３】
メモリアクセスバス１０７は、演算装置１（１０５）、２（１０６）とメモリ１０３との間のアクセスを仲介するバスである。
【００２４】
メモリ１０３は、マイクロプロセッサ１０２が演算を実行するために必要な全てのデータを格納する記憶領域である。メモリ１０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）から構成される。メモリ１０３は、主記憶領域１１２６を含む。
【００２５】
主記憶領域１１２６は、マイクロプロセッサ１０２が演算を実行するために必要なデータを格納する。
【００２６】
主記憶領域１１２６は、プロセス情報格納領域１１１８、作業キュー１１２２、プロセスメモリ領域１１２８、及びカーネルメモリ領域１１３０を含む。
【００２７】
プロセスメモリ領域１１２８は、演算装置１（１０５）、２（１０６）が実行する処理に必要とするメモリ領域であり、各々の演算処理（プロセス）に分割された領域ごとに管理されている。
【００２８】
カーネルメモリ領域１１３０は、機器１０１の管理、及びマイクロプロセッサ１０２の演算を制御するために必要なメモリ領域である。カーネルメモリ領域１１３０は、スケジューラ１１０１及びロック変数１１６を含む。
【００２９】
スケジューラ１１０１は、演算装置１（１０５）、２（１０６）が実行する演算を管理するソフトウェアである。スケジューラ１１０１は、プロセス情報格納領域１１１８及び作業キュー１１２２を更新し、演算の順序を管理する。
【００３０】
ロック変数１１６は、演算装置１（１０５）、２（１０６）が実行する演算のなかで、排他的に行わなければならない部分が、正しく排他的に演算が実行されるように管理するための管理変数である。具体的には、ロック変数１１６の値が「０ｘ１」のとき、ロック変数１１６はロックされていない状態を示す。つまり、排他的な処理が実行されていないことを示す。ロック変数１１６の値が「０ｘ０」のとき、ロックされた状態を示し、ロックが開放されるまで、ロックすることはできない。つまり、排他的な処理が実行されていることを示す。
【００３１】
プロセス情報格納領域１１１８は、演算装置１（１０５）、２（１０６）が実行した演算の結果を格納する領域である。具体的には、機器１０１が備える演算装置の数より多い演算が並列して実行される場合、演算装置１（１０５）、２（１０６）は、スケジューラ１１０１の指示に従って、処理を実行し、処理結果が格納されるコンテキスト情報１１０８、１１１０をプロセス情報格納領域１１１８にコンテキスト情報１１２４として保存し、スケジューラ１１０１から指示された演算を順々に実行する。
【００３２】
作業キュー１１２２は、演算装置１（１０５）、２（１０６）が実行する演算の一覧を格納する領域である。スケジューラ１１０１が、次に実行する処理を把握するために参照する。
【００３３】
図１２は、従来技術における、排他的な演算が実行されるときの処理を説明するシーケンス図である。
【００３４】
演算装置１（１０５）及び演算装置２（１０６）が排他的な処理を同時に実行するときのシーケンスを示している。
【００３５】
はじめに、ロック変数１１６の値は「０ｘ１」であり、ロックされていない状態にある（状態１２０１）。
【００３６】
演算装置２（１０６）が、排他的な演算を実行するため、ロック変数１１６に対しロック取得を実行し、ロック取得に成功する（ステップ１２０５）。この場合、ロック変数１１６はロックされていない状態であるため、演算装置２（１０６）は、ロック取得を成功する。これによって、ロック変数１１６の値は、「０ｘ０」となり、ロックされた状態となる（状態１２０２）。
【００３７】
ここで、ロック取得の方法として、例えば、スワップ命令を用いる方法が考えられる。具体的には、演算装置２（１０６）が保持する変数「１」とロック変数１１６が保持する変数「０」とを入れ替えることによって、演算装置２（１０６）がロックを取得する。つまり、ロック変数１１６の値が「０ｘ０」から「０ｘ１」になる。スワップ命令を用いた方法では、ロック取得と、ロック取得の検出とを同時に実行することができる。なお、ロック取得の方法は、前述の方法に限定されず、他の方法であってもよい。
【００３８】
前述した状態において、演算装置１（１０５）は、排他的な演算を実行するため、ロック変数１１６に対してロック取得を実行した場合、ロック変数１１６の値はすでに「０ｘ０」であるため、ロック取得に失敗する（ステップ１２０６）。つまり、前述したスワップ命令を用いた方法では、演算装置１（１０５）が保持する変数とロック変数１１６が保持する変数は、ともに「０ｘ０」であるため、互いの変数を入れ替えても、入れ替え後に保持される変数は変わらない。したがって、演算装置１（１０５）は、ロック取得を失敗したことがわかる。演算装置１（１０５）は、ロック取得に成功するまでロック取得の処理を実行する。
【００３９】
なお、図１２に示す例では、演算装置１（１０５）は、実際には、ロック変数１１６に何度もアクセスすることなく、演算装置１（１０５）が備えるキャッシュメモリを参照し、キャッシュメモリ上に読み出されたロック変数１１６のキャッシュと、メモリ１０３上のロック変数１１６とが異なるか否かを、メモリアクセスバス１０７を介して監視している。つまり、演算装置１（１０５）は、メモリアクセスバス１０７の監視処理を実行している。
【００４０】
演算装置２（１０６）が、ロック変数１１６によって保護された演算を終了し、ロック変数１１６を開放する（ステップ１２０７）。これによって、ロック変数１１６の値は「０ｘ１」に書き換えられ、ロックされていない状態となる（状態１２０３）。
【００４１】
演算装置１（１０５）は、ロック変数１１６の値が「０ｘ１」になったことを検出し（ステップ１２０８）、キャッシュを無効化する。そして、演算装置１（１０５）は、ロック取得を実行し、ロック取得が成功する（ステップ１２０９）。
【００４２】
これによって、ロック変数１１６の値が「０ｘ０」となり、再びロックされた状態となる（状態１２０４）。
【００４３】
次に、図１〜図３を用いて、本発明の第１の実施形態を説明する。
【００４４】
図１は、本発明の第１の実施形態のマイクロプロセッサを備える機器１０１の装置構成の一例を示すブロック図である。以下、図１１の従来の機器の装置構成との差異を中心に説明する。
【００４５】
図１１の機器１０１と比較して、本発明における機器１０１は、演算装置１（１０５）及び演算装置２（１０６）がそれぞれクロック１１２及びクロック１１３を備える。
【００４６】
また、本発明における機器１０１は、新たに、演算装置処理制御部１１４を備える。
【００４７】
演算装置処理制御部１１４は、変更監視命令受信部１０４、書込メモリ監視部１１５、クロック制御部１３２及びメモリ（図示省略）を備える。変更監視命令受信部１０４、書込メモリ監視部１１５、及びクロック制御部１３２は、バス（図示省略）を介してメモリ（図示省略）と接続されている。また、メモリ（図示省略）は、監視情報テーブル１３１を含む。
【００４８】
変更監視命令受信部１０４は、演算装置１（１０５）、２（１０６）と接続されている。変更監視命令受信部１０４は、演算装置１（１０５）又は演算装置２（１０６）から発行される変更監視命令を受信し、受信した変更監視命令に基づいて監視情報テーブル１３１を更新する。
【００４９】
クロック制御部１３２は、クロック１１２、１１３と接続されている。クロック制御部１３２は、監視情報テーブル１３１から定期的に情報を取得し、取得された情報に応じて、クロック１１２、１１３に動作クロックの制御指示を送信する。
【００５０】
なお、クロック制御部１３２が監視情報テーブル１３１から定期的に情報を取得するタイミングとしては、例えば、メモリアクセスバスのクロックと同期させる場合、クロック１１２、１１３に同期させる場合が考えられる。また、クロック制御部１３２を他の装置と同期させ、当該他の装置の動作タイミングにおいて、監視情報テーブル１３１の情報が取得されてもよい。
【００５１】
これによって、本発明におけるクロック１１２、１１３は、クロック制御部１３２から送信される制御指示に基づいて、演算装置１（１０５）又は演算装置２（１０６）に対し、クロックを供給、又は供給を中断することができる。クロック１１２、１１３は、クロックを発生する水晶発振器で構成されてもよいが、マイクロプロセッサ１０２の外部に配置された水晶発振器から供給されるクロックを、演算装置１（１０５）、２（１０６）に適した周波数に調整する機能を備えた論理回路であってもよい。
【００５２】
書込メモリ監視部１１５は、メモリアクセスバス１０７と接続され、メモリアクセスバス１０７上を流れる、演算装置からメモリ１０３へ送信されるアクセス信号を監視し、監視情報テーブル１３１の内容にしたがって、演算装置１（１０５）又は演算装置２（１０６）がメモリ１０３に格納された情報の書き換えを検出し、監視情報テーブル１３１を更新する。
【００５３】
監視情報テーブル１３１は、演算装置１（１０５）、２（１０６）を制御するために必要な情報を格納する。詳細については、図２を用いて後述する。
【００５４】
図２は、本発明の第１の実施形態の監視情報テーブル１３１の一例を示す説明図である。
【００５５】
監視情報テーブル１３１は、クロック制御部１３２が、クロック１１２、１１３を制御するために必要な情報を格納し、変更監視命令受信部１０４、書込メモリ監視部１１５によって更新される。また、監視情報テーブル１３１のエントリは、演算装置から指示を受信したときに作成される。
【００５６】
監視情報テーブル１３１は、監視空間２０１、監視アドレス２０２、値２０３、呼出演算装置２０４、及びクロック状態２０５を含む。
【００５７】
監視空間２０１は、監視されているアドレスが属するメモリアドレスの、アドレス空間を示す情報を格納する。図２に示す例では、エントリ２０６の監視空間２０１は、カーネルのアドレス空間であることが分かる。
【００５８】
監視アドレス２０２は、書込メモリ監視部１１５が監視しているメモリ１０３上のアドレスを格納する。具体的には、ロック変数１１６が配置されているメモリ上のアドレスを格納している。
【００５９】
値２０３は、監視する値を格納する。これによって、書込メモリ監視部１１５は、監視アドレス２０２に対応するアドレスに格納されたデータが値２０３に格納された値であるか否かを判定する。具体的には、書込メモリ監視部１１５は、ロック変数１１６が「１」であるか否かを監視する。なお、同時に排他的な演算を行うことができる機器１０１においては、例えば、「２」などの値２０３を監視してもよい。
【００６０】
図２に示す例では、エントリ２０６の監視アドレス２０２は「０ｘＡＡＡＡＡＡＡＡ」であり、値２０３は「１」であることが分かる。この場合、書込メモリ監視部１１５は、監視アドレス２０２が「０ｘＡＡＡＡＡＡＡＡ」に格納されているデータが「１」であるか否かを監視する。
【００６１】
呼出演算装置２０４は、監視を指示した演算装置を識別するための情報を格納する。図２に示す例では、エントリ２０６の呼出演算装置２０４に「演算装置１」が格納されていることが分かる。
【００６２】
クロック状態２０５は、監視を指示した演算装置の現在の動作状態を示す情報を格納する。図２に示す例では、エントリ２０６のクロック状態２０５は、「クロック停止」であることが分かる。
【００６３】
図３は、本発明の第１の実施形態における、演算装置１（１０５）、２（１０６）が排他的な演算を実行するときの処理を説明するシーケンス図である。
【００６４】
まず、ロック変数１１６の値は「０ｘ１」であるため、ロックされていない状態にある（状態３０１）。
【００６５】
演算装置２（１０６）が、ロック変数１１６によって保護された演算を実行するため、ロック変数１１６に対しロック取得を実行し、ロック取得に成功する（ステップ３０６）。これによって、ロック変数１１６の値は「０ｘ０」となり、ロックされた状態となる（状態３０２）。
【００６６】
前述した状態において、演算装置１（１０５）は、ロック変数１１６によって保護された演算を実行するため、ロック変数１１６に対してロック取得を実行するが、ロック変数１１６の値は「０ｘ０」であるため、ロック取得に失敗する（ステップ３０７）。
【００６７】
ロック取得に失敗した演算装置１（１０５）は、ロック取得を再度実行せずに、演算装置処理制御部１１４に対し、ロック変数１１６の値を監視するように指示する変更監視命令を送信する（ステップ３０８）。
【００６８】
変更監視命令を受信した演算装置処理制御部１１４は、監視情報テーブル１３１にエントリを作成し、作成されたエントリに必要な情報を格納する。このとき、監視情報テーブル１３１には、監視空間２０１、監視アドレス２０２、値２０３、呼出演算装置２０４、及びクロック状態２０５全ての情報が格納される。ただし、クロック状態２０５には、「クロック供給」が格納される。演算装置処理制御部１１４は、監視情報テーブル１３１に基づいて、メモリアクセスバス１０７の監視を開始し、さらに、演算装置１（１０５）へのクロック供給を停止するために、クロック供給停止指示をクロック１１３に送信する（ステップ３０９）。
【００６９】
クロック供給停止指示を受信したクロック１１３は、演算装置１（１０５）へのクロックの供給を停止する（ステップ３１０）。これによって、演算装置１（１０５）は、省電力状態になる（状態３０５）。ここで、クロック供給の再開による復旧を考慮し、演算装置１（１０５）への電力の供給は停止されていない。
【００７０】
演算装置２（１０６）がロック変数１１６によって保護された演算を終了し、ロック変数１１６を開放する（ステップ３１１）。これによって、ロック変数１１６の値が「０ｘ１」となり、ロックされていない状態になる（状態３０３）。
【００７１】
演算装置処理制御部１１４は、ロックが開放されたこと、つまり、ロック変数１１６の値が「０ｘ１」になったことを検出する（ステップ３１２）。
【００７２】
ロック開放の検出方法は、書込メモリ監視部１１５が、メモリアクセスバスを流れる、演算装置２（１０６）からメモリ１０３に送信されるアクセス信号に設定されたアドレスを監視し、当該アドレスが監視アドレス２０２と一致するか否かを判定し、当該アドレスが監視アドレス２０２と一致した場合、さらに、当該アドレスに対応するデータが値２０３と一致するか否かを判定する方法が考えられる。演算装置処理制御部１１４は、当該アドレスに対応するデータが値２０３と一致する場合、ロックが開放されたと判定する。
【００７３】
次に、ロック開放を検出した書込メモリ監視部１１５は、監視情報テーブル１３１のクロック状態２０５を「クロック供給」に変更し、当該変更に基づいて、クロック制御部１３２がクロック１１３にクロック供給開始時指示を送信し、その後、監視情報テーブル１３１の対応するエントリを削除する（ステップ３１３）。
【００７４】
クロック供給再開指示を受信したクロック１１３は、演算装置１（１０５）に対し、クロック供給を再開する（ステップ３１４）。これによって、演算装置１（１０５）は省電力状態を終了して、再び演算を開始する。
【００７５】
演算を再開した演算装置１（１０５）は、ロック変数１１６に対し、ロック取得を実行し、ロック取得に成功する（ステップ３１５）。これによって、ロック変数１１６の値が「０ｘ０」となり、再び、ロックされた状態になる（状態３０４）。
【００７６】
以上のように、第１の実施形態によれば、演算装置１（１０５）がロック取得に失敗した場合、演算装置１（１０５）が演算装置処理制御部１１４に監視命令を送信し、ロック開放が検出されるまでの間、演算装置１（１０５）は状態３０５のように省電力状態となるため、ロック開放までの間の消費電力を抑えることができる。
【００７７】
本発明の第１の実施形態は前述した形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【００７８】
例えば、ステップ３０９において、演算装置処理制御部１１４がクロック１１３へクロック供給停止指示を送信していたが、演算装置１（１０５）が演算装置処理制御部１１４に変更監視命令を送信した後に、自らクロックの供給を停止する形態であってもよい。これによって、演算装置処理制御部１１４を、より簡素に作ることができる。
【００７９】
また、第１の実施形態では、クロックの供給を停止することによって、省電力状態３０５を実現していたが、クロックの速度を落とす形態、又は、演算装置１（１０５）の電源の供給を停止する形態であってもよい。電力供給を停止する形態では、演算装置処理制御部１１４は、クロック制御部１３２の代わりに、演算装置１（１０５）、２（１０６）への電力の供給を制御する電力制御部を備える。
【００８０】
図４は、本発明の第１の実施形態のマイクロプロセッサを備える機器の装置構成の変形例を示すブロック図である。
【００８１】
図１に示す例では、演算装置処理制御部１１４を一つ備えるマイクロプロセッサ１０２を説明したが、図４に示すように、演算装置１（１０５）、２（１０６）が、それぞれ演算装置処理制御部１１４を備えるマイクロプロセッサ１０２であってもよい。また、演算装置が演算装置処理制御部１１４を含む形態であってもよい。これによって、演算装置１（１０５）及び演算装置２（１０６）のモジュール化が容易となる。なお、前述したような機器１０１における、演算装置処理制御部１１４、各演算装置１（１０５）、２（１０６）、及びクロック１１２、１１３の接続並びに処理は、図１及び図３に示したものと同様のものである。
【００８２】
［第２の実施形態］
本発明の第２の実施形態では、前述の排他的に実行される作業の制御処理に関する発明について説明する。
【００８３】
図５及び図６を用いて本発明の第２の実施形態を説明する。
【００８４】
図５は、本発明の第２の実施形態のマイクロプロセッサを備える機器の装置構成の一例を示すブロック図である。以下、第１の実施形態との差異を中心に説明する。
【００８５】
図５に示す機器１０１は、演算装置１（１０５）及び演算装置２（１０６）のそれぞれに、演算装置処理制御部５１４が接続されている。
【００８６】
演算装置処理制御部５１４は、実行演算監視部５０３、書込メモリ監視部１１５、監視情報テーブル１３１、及びクロック制御部１３２を備える。書込メモリ監視部１１５、監視情報テーブル１３１、及びクロック制御部１３２は、第１の実施形態と同一の構成である。
【００８７】
実行演算監視部５０３は、実行演算監視部５０３は、演算装置処理制御部５１４に接続された演算装置１（１０５）、演算装置２（１０６）が実行している演算の内容を読み出し、演算装置１（１０５）、２（１０６）の動作を監視する。
【００８８】
また、実行演算監視部５０３は、演算装置１（１０５）、２（１０６）が実行している演算の内容が、一定のパターンであるか否かを判定することによって、クロック１１２、１１３にクロック供給の停止を指示する。
【００８９】
ここで、一定のパターンとしては、例えば、演算装置２（１０６）がロック取得に成功している状態における、演算装置１（１０５）の待ち処理などが考えられる。待ち処理は、演算装置２（１０６）がロック取得に成功している状態において、演算装置１（１０５）がロック取得を失敗した場合、演算装置１（１０５）がメモリアクセスバス１０７を監視し、メモリ１０３のロック変数１１６の値が特定の値（この場合は、「１」）になるまで、待ち続けるループ処理を示す。実行演算監視部５０３は、当該ループ処理を検出することによって、一定のパターンか否かを判定することができる。
【００９０】
第１の実施形態と比較して、演算装置処理制御部５１４は、演算装置１（１０５）、２（１０６）を監視し、実行されている演算が一定のパターンであることを検出した場合、クロック１１２、１１３にクロック供給の停止を指示する点が異なる。
【００９１】
図６は、本発明の第２の実施形態における、演算装置が排他的な演算を実行するときの処理を説明するシーケンス図である。以下、第１の実施形態との差異を中心に説明する。
【００９２】
演算装置２（１０６）がロック取得に成功している（ステップ６０６）場合において、演算装置１（１０５）がロック変数１１６に対しロック取得に失敗し、ロック変数１１６の値が「１」に変更されるのを待つ処理を実行する（ステップ６０７）。
【００９３】
演算装置１（１０５）を監視している演算装置処理制御部５１４は、演算装置１（１０５）が待ち処理を実行していることを検出する（ステップ６０８）。待ち処理を検出した演算装置処理制御部５１４は、監視情報テーブル１３１にエントリを作成し、作成されたエントリに情報を格納し、クロック制御部１３２が監視情報テーブル１３１に基づいて、クロック１１３にクロック供給停止指示を送信する（ステップ６０９）。
【００９４】
ステップ６１０〜ステップ６１５、及び状態６０１〜状態６０４は第１の実施形態と同一のものである。
【００９５】
なお、ステップ６０２において、演算装置処理制御部５１４は、ループ処理が確実に発生することを検出した場合、クロック１１３にクロック供給停止指示を送信する形態であってもよい。
【００９６】
以上のように、本発明の第２の実施形態によれば、待ち処理を検出した演算装置処理制御部５１４からの指示によって、演算装置１（１０５）は状態６０５に示すように省電力状態となり、消費電力を抑えることができる。また、演算装置１（１０５）、２（１０６）が特別な命令を指示する必要がなく、消費電力を抑えることができる。また、本発明の第１の実施形態と同様に、本発明の第２の実施形態は、前述した形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能である。
【００９７】
［第３の実施形態］
本発明の第３の実施形態では、前述の複数の演算を並列的に実行するための制御処理に関する発明について説明する。
【００９８】
まず、従来技術について説明する。
【００９９】
図１３は、従来技術における、複数の演算を並列的に実行するマイクロプロセッサの処理を説明するシーケンス図である。
【０１００】
機器１０１の装置構成は、図１１と同一のものである。ここで、「Ｕ１」、「Ｕ２」、「Ｕ３」、及び「Ｕ４」は演算の種類を示し、また、「Ｋ」は初期化処理及び演算の切り替え処理を示す。ただし、演算「Ｕ１」、「Ｕ２」、「Ｕ３」、及び「Ｕ４」は、それぞれ、所定の実行単位に区分けされ、当該実行単位ごとに演算装置１（１０５）、２（１０６）が演算を実行する。所定の実行単位としては、スレッド又はタスク等様々な実行単位が考えられる。状態１３０１〜状態１３１１は、実行単位で各演算が実行されている状態を示す。
【０１０１】
以下の説明では、タスク単位で演算が実行される場合について説明する。
【０１０２】
まず、演算装置１（１０５）と演算装置２（１０６）とが初期化され、演算装置１（１０５）上においてスケジューラ１１０１が実行される。演算装置１（１０５）上で実行されているスケジューラ１１０１は、演算装置２（１０６）を初期化し、演算装置２（１０６）上においてスケジューラ１１０１が実行される。演算装置２（１０６）上で実行されるスケジューラ１１０１は、作業キュー１２２を参照し、実行する演算を検索する（ステップ１３１２）。
【０１０３】
次に、演算装置１（１０５）上において実行されるスケジューラ１１０１は、演算「Ｕ１」を作業キュー１２２に登録する（ステップ１３１３）
演算装置２（１０６）上において実行されるスケジューラ１１０１は、作業キュー１１２２から演算「Ｕ１」に関する情報を取得して、演算「Ｕ１」の実行を開始する（ステップ１３１４）。
【０１０４】
演算装置１（１０５）上において実行されるスケジューラ１１０１は、演算「Ｕ２」、「Ｕ３」、及び「Ｕ４」を作業キュー１１２２に登録する（ステップ１３１５）。
【０１０５】
次に、演算装置１（１０５）上で実行されるスケジューラ１１０１は、作業キュー１１２２から演算「Ｕ２」に関する情報を取得し、演算「Ｕ２」の実行を開始する（ステップ１３１６）。
【０１０６】
演算装置１（１０５）、２（１０６）上で実行されるスケジューラ１１０１は、取得された各演算の実行時間を予め割り当てており、演算装置１（１０５）、２（１０６）は、各演算に割り当てられた実行時間が過ぎるか、又は演算が休止、若しくは終了すると、演算の実行を中断し、スケジューラ１１０１を呼び出す。
【０１０７】
演算「Ｕ１」を実行している演算装置２（１０６）は、実行中の演算「Ｕ１」を中断し、スケジューラ１１０１を呼び出す。呼び出されたスケジューラ１１０１は、演算装置２（１０６）が保持する、演算「Ｕ１」の検算結果を格納するコンテキスト情報１１１０をメモリ１０３のプロセス情報格納領域１１１８に、コンテキスト情報１１２４として保存し、さらに演算「Ｋ」にかんするコンテキスト情報１１２４を読み出す（ステップ１３１７）。さらに、スケジューラ１１０１は、初期化処理を実行し、演算「Ｋ」の結果をコンテキスト情報１１２４としてプロセス情報格納領域１１１８に保存し、作業キュー１１２２から演算「Ｕ３」に関する情報を取得し、演算「Ｕ３」の実行を開始する（ステップ１３１８）。
【０１０８】
以下、ステップ１３１９〜ステップ１３２４も同様の処理が実行される。
【０１０９】
従来の処理において、演算が切り替えられる時には常にスケジューラ１１０１が読み出されるため、演算装置１（１０５）、２（１０６）は、初期化処理の実行と、当該初期化処理の結果を格納するコンテキスト情報１１０８、１１１０の退避処理及び取得処理の負荷が大きいという問題があった。
【０１１０】
また、各演算装置１（１０５）、２（１０６）上で実行されるスケジューラ１１０１が作業キュー１１２２にアクセスする場合における排他制御が必要となるため、オーバヘッドが大きくなる問題もある。また、演算「Ｕ１」〜「Ｕ４」が必要とするコンテキスト情報１１２４のサイズは、それぞれ異なるにもかかわらず、従来の方法では、全ての情報を退避、及び取得しなければならない問題がある。
【０１１１】
次に、図７〜図１０を用いて、本発明の第３の実施形態を説明する。
【０１１２】
図７は、本発明の第３の実施形態のマイクロプロセッサを備える機器の装置構成の一例を示すブロック図である。以下、図１１の従来の機器の装置構成との差異を中心に説明する。
【０１１３】
図１１の機器１０１と比較して、本発明における機器１０１は、演算装置１（１０５）及び演算装置２（１０６）がそれぞれクロック１１２及びクロック１１３を備える。
【０１１４】
また、本発明における機器１０１は、新たに、演算装置処理制御部７１４を備える。
【０１１５】
演算装置処理制御部７１４は、書込メモリ監視／スケジューラ部７２３、クロック制御部７３２及びメモリ（図示省略）を備える。書込メモリ監視／スケジューラ部７２３、及びクロック制御部７３２は、バス（図示省略）を介してメモリ（図示省略）と接続されている。また、メモリ（図示省略）は、演算装置管理テーブル７１６を含む。
【０１１６】
書込メモリ監視／スケジューラ部７２３は、演算装置管理テーブル７１６とプロセス管理領域７１５とに基づいて、メモリ１０３への書き込みの監視、並びに、演算装置１（１０５）、２（２０６）への演算の割り当て、及び演算の切り替え、プロセス情報、並びに作業キュー７２２の管理をする。
【０１１７】
演算装置管理テーブル７１６は、演算装置１（１０５）、２（１０６）のクロックを制御するために必要な情報を格納する。演算装置管理テーブル７１６は、書込メモリ監視／スケジューラ部７２３、及びクロック制御部７３２によって更新される。また、演算装置管理テーブル７１６は、マイクロプロセッサ１０２が備える演算装置の数に等しいエントリを持つ固定長の記憶領域である。詳細については、図９を用いて後述する。
【０１１８】
クロック制御部７３２は、第１の実施形態と同一のものである。
【０１１９】
また、本発明における機器１０１は、主記憶領域１１２６とは別に、メモリ１０３にプロセス管理領域７１５備える。プロセス管理領域７１５は、演算装置１（１０５）、２（１０６）が実行する演算の情報及び演算の結果を格納する領域である。
【０１２０】
プロセス管理領域７１５は、書込メモリ監視／スケジューラ部７２３によって、参照され、また、更新される。図１１及び図１３に示し従来技術では、カーネルメモリ領域１１３０（ＯＳ）がプロセス情報格納領域１１１８及び作業キュー１１２２を管理していたが、第３の実施形態では、演算装置処理制御部７１４が、プロセス情報格納領域１１１８及び作業キュー１１２２を管理している。
【０１２１】
これによって、演算装置処理制御部７１４が各プロセスを管理することができ、演算装置１（１０５）、２（１０６）の負荷が低減できる。
【０１２２】
プロセス管理領域７１５は、プロセス情報格納領域１１１８、及び作業キュー７２２を含む。
【０１２３】
プロセス情報格納領域１１１８は、図１１に示すものと同一のものである。
【０１２４】
作業キュー７２２は、演算装置１（１０５）、２（１０６）が実行する演算の一覧を格納する領域である。詳細については、図８を用いて後述する。
【０１２５】
図８は、本発明の第３の実施形態における作業キュー７２２の一例を示す説明図である。
【０１２６】
作業キュー７２２は、プロセスＩＤ８０１、状態８０２、及び割当演算装置８０３を含む。演算装置１（１０５）、２（１０６）が演算装置処理制御部７１４に、新規に演算を登録することによって、当該作業キュー７２２のエントリが作成され、また、該当するエントリの演算が終了すると、当該エントリが削除される。図８に示す例では、エントリ８０６〜８０９が作成されている。
【０１２７】
プロセスＩＤ８０１は、実行される演算を識別するための識別子を格納する。図８に示す例では、エントリ８０６のプロセスＩＤ８０１は、「Ｕ１」であり、エントリ８０７のプロセスＩＤ８０１は、「Ｕ２」であり、エントリ８０８のプロセスＩＤ８０１は、「Ｕ３」であり、エントリ８０９のプロセスＩＤ８０１は、「Ｕ４」である。
【０１２８】
状態８０２は、プロセスＩＤ８０１に対応する演算の状態に関する情報を格納する。例えば、エントリ８０６の状態８０２は、処理が実行されたことを示す「実行済」が格納されている。前述したように、一つの演算は所定の実行単位に分割されており、状態８０２が「実行済」の場合、実行単位の一つが実行されたことを示している。同様に、エントリ８０７の状態８０２は、「実行中」であり、現在、演算が実行中であることを示す。エントリ８０８及びエントリ８０９の状態８０２は、「実行待ち」であり、これから実行されることを示している。
【０１２９】
なお、状態８０２が「実行済」の演算は、状態８０２が「実行中」エントリより演算の実行回数が１回多く、また、状態８０２が「実行待ち」の演算は、状態８０２が「実行中」エントリより演算の実行回数が１回少ない。
【０１３０】
図９は、本発明の第３の実施形態の演算装置管理テーブル７１６の一例を示す説明図である。
【０１３１】
演算装置管理テーブル７１６は、演算装置９０１、監視空間９０２、監視アドレス９０３、値９０４、実行タスク９０５、実行中断時刻９０６、及びクロック状態９０７を含む。
【０１３２】
監視空間９０２、監視アドレス９０３、値９０４、及びクロック状態９０７は、図２の監視アドレス２０２、監視空間２０１、値２０３、及びクロック状態２０５と同一のものである。
【０１３３】
演算装置９０１は、機器１０１が備える演算装置を識別するための識別子を格納する。
図９に示す例では、エントリ９０８の演算装置９０１は、「演算装置１」であり、エントリ９０９の演算装置９０１は、「演算装置２」である。
【０１３４】
実行タスク９０５は、演算装置９０１に該当する演算装置が実行している演算を識別するための情報を格納する。具体的には、実行されている演算を示すプロセスＩＤ８０１が格納される。図９に示す例では、エントリ９０８の実行タスク９０５は、「Ｕ２」であり、エントリ９０９の実行タスク９０５は、「Ｕ１」である。
【０１３５】
実行中断時刻９０６は、実行タスク９０５に該当する演算の実行時間の終了時刻を格納する。当該時間を過ぎると、演算装置１（１０５）、２（１０６）では、演算の切替処理が実行される。図９に示す例では、エントリ９０８の実行中断時刻９０６は、「０ｘ１２３４５６７８」であり、エントリ９０９の実行中断時刻９０６は、「０ｘ１２２４５６７」である。なお、ここでいう時刻は機器内の時刻である。ただし、本発明はこれに限定されず、時刻は、機器外の時刻であってもよい。
【０１３６】
図１０は、本発明の第３の実施形態における、複数の演算を並列的に実行するマイクロプロセッサの処理を説明するシーケンス図である。以下、図１３との差異を中心に説明する。
【０１３７】
まず、演算装置１（１０５）と演算装置２（１０６）とが初期化が実行される。演算装置１（１０５）は、演算装置処理制御部７１４を初期化し（ステップ１００９）、初期化された演算装置処理制御部７１４に演算「Ｕ１」を登録し、さらに、演算装置処理制御部７１４が登録された演算「Ｕ１」を作業キュー７２２に登録する（ステップ１０１０）。このとき、演算装置管理テーブル７１６にエントリが作成される。具体的には、プロセスＩＤ８０１に「Ｕ１」が格納され、状態８０２に「実行待ち」が格納され、割当演算装置８０３に「未割り当て」が格納される。
【０１３８】
次に、演算装置処理制御部７１４は、演算装置管理テーブル７１６の実行タスク９０５が未指定であることを確認することで、演算装置２（１０６）が演算を実行していないことを確認すると、演算装置２（１０６）を初期化し、初期化された演算装置２（１０６）に演算「Ｕ１」の実行指示を送信する（ステップ１０１２）。
【０１３９】
実行指示を受信した演算装置２（１０６）は、演算「Ｕ１」の演算を実行する（状態１００５）。このとき、プロセスＩＤ８０１が「Ｕ１」のエントリの状態８０２に「実行中」が格納され、割当演算装置８０３に「演算装置２」が格納される。
【０１４０】
演算装置１（１０５）は、演算「Ｕ２」、「Ｕ３」及び「Ｕ４」を演算装置処理制御部７１４に登録する（ステップ１０１３）。
【０１４１】
全ての演算を登録した演算装置１（１０５）は、初期化処理の終了の通知と演算処理開始の指示とを演算装置処理制御部７１４に送信する（ステップ１０１４）。
【０１４２】
演算装置処理制御部７１４は、演算装置１（１０５）に演算「Ｕ２」の実行指示を送信し（ステップ１０１５）、実行指示を受信した演算装置１（１０５）は、演算「Ｕ２」の演算を実行する（状態１００２）。
【０１４３】
演算装置処理制御部７１４は、作業キュー７２２の実行中断時刻９０６を参照し、演算装置２に次の演算を実行させるため、演算「Ｕ３」の実行指示を送信する（ステップ１０１６）。実行指示を受信した演算装置２（１０６）は、演算「Ｕ１」の演算結果をコンテキスト情報１１２４としてプロセス管理領域７１５に保存し、次に、プロセス管理領域７１５から演算「Ｕ３」の情報を取得し、演算「Ｕ３」の演算を実行する（状態１００６）。
【０１４４】
演算装置処理制御部７１４は、作業キュー７２２の実行中断時刻９０６を参照し、演算装置１に次の演算を実行させるため、演算「Ｕ４」の実行指示を送信する（ステップ１０１７）。実行指示を受信した演算装置２（１０６）は、演算「Ｕ２」の演算結果をコンテキスト情報１１２４としてプロセス管理領域７１５に保存し、次に、プロセス管理領域７１５から演算「Ｕ４」の情報を取得し、演算「Ｕ４」の演算を実行する（状態１００３）。
【０１４５】
以下、ステップ１０１８〜ステップ１０２０も同様の処理が実行される。つまり、演算装置処理制御部７１４は、演算装置管理テーブル７１６及び作業キュー７２２を参照し、演算装置１（１０５）、２（１０６）に演算の実行指示を送信する。演算の実行指示を受信した演算装置１（１０５）、２（１０６）は、実行指示を受信する前に実行していた演算の結果をコンテキスト情報１１２４としてプロセス管理領域７１５に保存し、実行指示に従って、次の演算の情報をプロセス管理領域７１５から取得し、演算を実行する。
【０１４６】
以上のように、本発明の第３の実施形態によれば、実行される演算が切り替えるときに、演算装置１（１０５）、２（１０６）は、初期化処理、及び、次に実行する演算の決定等の演算を実行する必要がなく、実行される演算をすぐに切り替えることができる。また、演算「Ｋ」を実行する必要がないため、演算「Ｋ」に関するコンテキスト情報１１２４の読み出し、及び、書き出しをする必要がないため、演算装置１（１０５）、２（１０６）の演算効率が増し、また、消費電力を抑えることができる。
【０１４７】
なお、本発明の第３の実施形態は、前述した形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能である。
【０１４８】
例えば、演算装置処理制御部７１４は、演算装置１（１０５）、２（１０６）が実行する演算を切り替えるときに、切り換えに必要なコンテキスト情報の一部を復元し、演算を実行をさせることができる。復元されていない残りのコンテキスト情報は、演算装置の実行と並行して、演算装置処理制御部７１４が復元することができる。また、コンテキスト情報の復元処理中に、演算装置１（１０５）、２（１０６）が、復元が完了していないコンテキスト情報を必要とした場合、当該コンテキスト情報が復元されるまで、又は、コンテキストスイッチが完了するまで、演算の実行を一時中止し、当該演算装置１（１０５）、２（１０６）へのクロック供給を停止することもできる。
【０１４９】
また、演算装置１（１０５）、２（１０６）が利用したコテキスト情報を、演算装置処理制御部７１４が監視し、利用中のコンテキスト情報だけを退避復元することもできる。
【図面の簡単な説明】
【０１５０】
【図１】本発明の第１の実施形態のマイクロプロセッサを備える機器の装置構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態の監視情報テーブルの一例を示す説明図である。
【図３】本発明の第１の実施形態における、演算装置１（１０５）、２（１０６）が排他的な演算を実行するときの処理を説明するシーケンス図である。
【図４】本発明の第１の実施形態のマイクロプロセッサを備える機器の装置構成の変形例を示すブロック図である。
【図５】本発明の第２の実施形態のマイクロプロセッサを備える機器の装置構成の一例を示すブロック図である。
【図６】本発明の第２の実施形態における、演算装置が排他的な演算を実行するときの処理を説明するシーケンス図である。
【図７】本発明の第３の実施形態のマイクロプロセッサを備える機器の装置構成の一例を示すブロック図である。
【図８】本発明の第３の実施形態における作業キューの一例を示す説明図である。
【図９】本発明の第３の実施形態の演算装置管理テーブルの一例を示す説明図である。
【図１０】本発明の第３の実施形態における、複数の演算を並列的に実行するマイクロプロセッサの処理を説明するシーケンス図である。
【図１１】従来のマイクロプロセッサを備えた機器の装置構成を示すブロック図である。
【図１２】従来技術における、排他的な演算が実行されるときの処理を説明するシーケンス図である。
【図１３】従来技術における、複数の演算を並列的に実行するマイクロプロセッサの処理を説明するシーケンス図である。
【符号の説明】
【０１５１】
１０１  機器
１０２  マイクロプロセッサ
１０３  メモリ
１０４  変更監視命令受信部
１０５  演算装置１
１０６  演算装置２
１０７  メモリアクセスバス
１１２  クロック
１１３  クロック
１１４  演算装置処理制御部
１１５  書込メモリ監視部
１１６  ロック変数
１３１  監視情報テーブル
１３２  クロック制御部
３０５  省電力状態
５０３  実行演算監視部
５１４  演算装置処理制御部
６０５  省電力状態
７１４  演算装置処理制御部
７１５  プロセス管理領域
７１６  演算装置管理テーブル
７２２  作業キュー
７２３  書込メモリ監視／スケジューラ部
１００１  初期化実行時間
１００２〜１００８  演算「Ｕ２」〜「Ｕ４」実行時間
１１０１  スケジューラ
１１０８  コンテキスト情報
１１１０  コンテキスト情報
１１１８  プロセス情報格納領域
１１２２  作業キュー
１１２４  コンテキスト情報
１１２６  主記憶領域
１１２８  プロセスメモリ領域
１１３０  カーネルメモリ領域
１３０１、１３０３、１３０５、１３０６、１３０８、１３１０  スケジューラ実行時間
１３０２、１３０４、１３０７、１３０９、１３１１  演算「Ｕ２」〜「Ｕ４」実行時間
【図１】
2010170409.tif 000003
【図２】
2010170409.tif 000004
【図３】
2010170409.tif 000005
【図４】
2010170409.tif 000006
【図５】
2010170409.tif 000007
【図６】
2010170409.tif 000008
【図７】
2010170409.tif 000009
【図８】
2010170409.tif 000010
【図９】
2010170409.tif 000011
【図１０】
2010170409.tif 000012
【図１１】
2010170409.tif 000013
【図１２】
2010170409.tif 000014
【図１３】
2010170409.tif 000015