(57)【要約】【課題】リアルタイムシステムに適した情報処理装置及びそのコンテキスト切り替え方法を提供する。【解決手段】プロセッサにおいて所定の処理単位を複数実行させる際に、処理単位毎に対応したコンテキストを切り替えることで複数の処理単位を前記プロセッサにおいて同時並列的に実行させる情報処理装置において、複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、コンテキストを切り替える際、フォアグラウンド・コンテキストに対応した処理を行うプロセッサと、プロセッサにおいてフォアグラウンド・コンテキストに対応した処理が実行されるのと併行して、バックグラウンド・コンテキストをメモリへとセーブした後に、メモリからつぎに実行させる処理単位のコンテキストをバックグラウンド・レジスタバンクへとリストアするセーブ／リストア・コントローラと、を有する。【選択図】  図１
2006092042.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、
複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を実行するセーブ／リストア・コントローラと、
を有することを特徴とする情報処理装置。
【請求項２】
前記セーブ／リストア・コントローラは、前記プロセッサにおいて実行権が与えられたコンテキストに対応した処理単位が実行されるのと併行して、前記セーブ処理及び／又は前記リストア処理を実行すること、を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち実行権を与えるコンテキストが格納されたレジスタバンクを選択し、当該実行権を与えるコンテキストを前記プロセッサへと供給する第１セレクタと、
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち前記セーブ処理及び／又は前記リストア処理の対象となるコンテキストが格納されたレジスタバンクを選択し、当該選択したレジスタバンクと前記セーブ／リストア・コントローラとの間におけるコンテキストの受け渡しを行う第２セレクタと、
前記プロセッサから指定される、前記セーブ処理の対象となるコンテキストを書き込むための前記メモリのセーブ領域アドレスを格納するセーブ領域アドレスレジスタと、
前記プロセッサから指定される、前記リストア処理の対象となるコンテキストを読み出すための前記メモリのリストア領域アドレスを格納するリストア領域アドレスレジスタと、を有しており、
前記プロセッサは、コンテキストを切り替える際、前記第１及び前記第２セレクタに向けて前記選択指令を、前記セーブ領域アドレスレジスタに対して前記セーブ領域アドレスを、前記リストア領域アドレスレジスタに対して前記リストア領域アドレスを、前記セーブ／リストア・コントローラに対してセーブ／リストア開始信号を、夫々供給し、
前記セーブ／リストア・コントローラは、前記プロセッサから前記セーブ／リストア開始信号を受信した際、前記第２セレクタにおいて前記選択指令に基づいて選択されたレジスタバンクと前記メモリとの間で、前記セーブ領域アドレスレジスタに格納された前記セーブ領域アドレスに基づく前記セーブ処理及び／又は前記リストア領域アドレスレジスタに格納された前記リストア領域アドレスに基づく前記リストア処理を実行すること、
を特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち実行権を与えるコンテキストが格納されたレジスタバンクを選択し、当該実行権を与えるコンテキストを前記プロセッサへと供給する第１セレクタと、
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち前記セーブ処理及び／又は前記リストア処理の対象となるコンテキストが格納されたレジスタバンクを選択し、当該選択したレジスタバンクと前記セーブ／リストア・コントローラとの間におけるコンテキストの受け渡しを行う第２セレクタと、
前記プロセッサから指定される、前記セーブ処理の対象となるコンテキストを書き込むための前記メモリのセーブ領域アドレス、又は、前記リストア処理の対象となるコンテキストを読み出すための前記メモリのリストア領域アドレスのいずれか一方を格納するアドレスレジスタと、を有しており、
前記プロセッサは、コンテキストを切り替える際、前記第１及び前記第２セレクタに向けて前記選択指令を、前記アドレスレジスタに対して前記セーブ領域アドレス又は前記リストア領域アドレスを、前記セーブ／リストア・コントローラに対してセーブ／リストア開始信号を、夫々供給し、
前記セーブ／リストア・コントローラは、前記プロセッサから前記セーブ／リストア開始信号を受信した際、前記第２セレクタにおいて前記選択指令に基づいて選択されたレジスタバンクと前記メモリとの間で、前記アドレスレジスタに格納された前記セーブ領域アドレス又は前記リストア領域アドレスに基づいて、前記セーブ処理及び／又は前記リストア処理を実行すること、
を特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記メモリが提供する記憶領域は、処理単位毎に対応づけられたコンテキストを記憶する領域毎に区画されており、
前記プロセッサは、前記区画された区画領域のアドレスを管理しており、当該区画領域のアドレスに基づいて、前記セーブ領域アドレス及び／又は前記リストア領域アドレスを指定すること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記第１及び前記第２セレクタは、夫々の前記レジスタバンクの選択を排他的に実行すること、を特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記レジスタバンクは、前記プロセッサにおいて実行権が付与されたコンテキスト、又は、前記セーブ処理もしくは前記リストア処理の対象となるコンテキスト、が夫々格納される二つのレジスタバンクによって構成されること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項８】
前記プロセッサの割り込み制御に用いられるコンテキストのみを格納する、割り込み制御専用のレジスタバンクをさらに設けたこと、を特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記プロセッサは、前記セーブ処理及び前記リストア処理を連続して実行する第１モード、前記セーブ処理のみを実行する第２モード、又は、前記リストア処理のみを実行する第３モードのいずれかを指定するモード選択信号を、前記セーブ／リストア・コントローラへと供給し、
前記セーブ／リストア・コントローラは、前記プロセッサから供給される前記モード選択信号に基づいて、前記第１乃至前記第３モードのうちいずれかを選択すること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項１０】
前記プロセッサは、自身による前記メモリへのアクセス状況を示すステータス信号を前記セーブ／リストア・コントローラへ供給し、
前記セーブ／リストア・コントローラは、前記プロセッサから供給される前記ステータス信号に基づいて、前記プロセッサが前記メモリへのアクセスを休止するアイドル期間を識別するとともに、前記アイドル期間においてのみ前記セーブ処理及び／又は前記リストア処理を実行可能とすること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項１１】
前記セーブ／リストア・コントローラは、前記セーブ処理又は前記リストア処理の実行中に、当該実行中であることを示すビジー信号を前記プロセッサへと供給し、
前記プロセッサもしくは前記セーブ／リストア・コントローラは、前記ビジー信号が解除されるまで、前記セーブ処理及び／又は前記リストア処理の開始を遅延させること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項１２】
前記プロセッサは、実行すべき処理単位の数が前記レジスタバンクの数以下の場合、前記セーブ処理及び前記リストア処理を禁止するためのセーブ／リストア禁止信号を前記セーブ／リストア・コントローラへと供給することとし、
前記セーブ／リストア・コントローラは、前記プロセッサから前記セーブ／リストア禁止信号を受信した場合、前記セーブ処理及び前記リストア処理の実行を停止すること、を特徴とする請求項３又は４に記載の情報処理装置。
【請求項１３】
所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、
複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理を実行するセーブ・コントローラと、
前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理を実行するリストア・コントローラと、
を有することを特徴とする情報処理装置。
【請求項１４】
前記セーブ・コントローラ及び前記リストア・コントローラは、前記プロセッサにおいて実行権が与えられたコンテキストに対応した処理単位が実行されるのと併行して、前記セーブ処理及び／又は前記リストア処理を実行すること、を特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
情報処理装置において、複数の所定の処理単位を同時並列的に実行させるべく、処理単位毎に対応づけられたコンテキストを切り替えるコンテキスト切り替え方法であって、
複数のレジスタバンクに対して複数の処理単位毎に対応づけられたコンテキストを夫々格納し、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位をプロセッサに実行させ、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を所定のセーブ／リストア・コントローラに実行させる、
ことを特徴とするコンテキスト切り替え方法。
【請求項１６】
実行権が与えられたコンテキストに対応した処理単位が前記プロセッサにおいて実行されるのと併行して、前記セーブ処理及び／又は前記リストア処理を前記セーブ／リストア・コントローラにおいて実行させること、を特徴とする請求項１５に記載のコンテキスト切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びコンテキスト切り替え方法に関する。
【背景技術】
【０００２】
近年、様々な機械や機器に組み込まれて特定の機能を実現するための制御を行うコンピュータシステム、所謂組み込みシステム（Embedded System）が注目されており、その適用分野（パソコン周辺機器、ＡＶ機器、家電機器等）が急速に拡大している。また、組み込みシステムに用いられるソフトウェア（組み込みソフトウェア）は、処理要求を受け付けた後、特定の時間内に応答して処理を行う、所謂リアルタイム性が要請される。このため、組み込みシステムでは、リアルタイム・オペレーティングシステム（以下、「リアルタイムＯＳ」と称する。）を採用する場合が多い。
【０００３】
リアルタイムＯＳでは、前述したとおり、特定の時間内での応答を保証しなければならず、マルチスレッド機能やマルチタスク機能が不可欠な技術として採用される。なお、マルチスレッド機能とは、ＣＰＵやＭＰＵ等のプロセッサにおいて、一つのアプリケーション処理をその処理単位であるスレッド毎に分割するとともに、複数のスレッドの実行権を切り替えて夫々のスレッドを同時並列的に処理するものである。また、マルチタスク機能とは、プロセッサにおいて、スレッドを更に複数の処理単位であるタスク毎に分割するとともに、複数のタスクの実行権を切り替えて夫々のタスクを同時並列的に処理するものである。
【０００４】
ここで、複数の処理単位（スレッド、タスク、プロセス等）が切り替えられる際には、通常、プロセッサにおける処理単位の処理に用いられる『コンテキスト』の切り替えが行われる。なお、コンテキストとは、処理単位毎に対応づけられており、レジスタセット（汎用レジスタ、ステータスレジスタ、プログラムカウンタ等）における現在のフラグ状態や、各処理単位を実行するための情報のことである。また、コンテキストの定義としては、例えば、以下に示す非特許文献１に示されるとおりである。
【０００５】
図９は、従来の組み込みシステムにおけるコンテキスト・スイッチングの動作を説明する図である（以下、「従来例１」と称する。）。同図に示すように、従来の組み込みシステムは、ＣＰＵ１０と、コンテキストを格納するレジスタバンク１１と、コンテキストのセーブ／リストア処理を行うＣＰＵ１０外部のメモリ１２と、によって主に構成される。ここで、ＣＰＵ１０は、リアルタイムＯＳからのコンテキスト・スイッチング要求を受け付けた後（ステップ０）、レジスタバンク１１において現在実行中の状態にあるコンテキストＡを、ストア命令によってメモリ１２へとセーブする（ステップ１）。そして、つぎのコンテキストＢを、ロード命令によってメモリ１２からリストアして、レジスタバンク１１の内容を更新する（ステップ２）。なお、このような従来例１としては、例えば、以下に示す特許文献１に開示されるとおりである。
【０００６】
図１０は、従来のその他の組み込みシステムにおけるコンテキスト・スイッチングの動作を説明する図である（以下、「従来例２」と称する。）。同図に示すように、組み込みシステムは、ＣＰＵ１０と、各タスクに対応づけられて占有される複数のレジスタバンク１１と、複数のレジスタバンク１１夫々に格納されたコンテキストのいずれかを選択するためのセレクタ１３と、によって主に構成される。ここで、ＣＰＵ１０が、セレクタ１３を介してレジスタバンク１１（＃０）に格納されたコンテキストＡをもとに、タスクＡを実行している場合とする（ステップ０）。この場合、ＣＰＵ１０は、リアルタイムＯＳからコンテキスト・スイッチング要求を受け付けた後、セレクタ１３によって、コンテキストＢが格納されたレジスタバンク１１（＃１）を選択する（ステップ１）。この結果、コンテキストＡからコンテキストＢへのコンテキスト・スイッチングが実行される（ステップ２）。すなわち、従来例２では、外部メモリへのコンテキストのセーブ／リストア処理が行われずに、レジスタバンク１１の切り替えのみで、コンテキスト・スイッチングが実施される。なお、このような従来例２としては、例えば、以下に示す特許文献２に開示されるとおりである。
【特許文献１】特開平９−２１２３７１号公報
【特許文献２】特開平０７−１４１２０８号公報
【非特許文献１】Michael Barr著「Ｃ／Ｃ＋＋による組み込みシステムプログラミング」株式会社オーム社出版、２０００年４月１９日、ｐ．１８０−１８１
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１１に、図９に示したような従来例１によって、所定のタスクスケジュール（Ａ→Ｂ→Ｃ→Ａ→・・・）に従うタスクＡ〜Ｃの切り替えに伴って、タスクＡ〜Ｃ夫々に対応づけられたコンテキストＡ〜Ｃもまた同様に切り替えられる様子を示す。従来例１では、コンテキスト・スイッチングが行われる場合、ＣＰＵ１０が、現在実行権が与えられたコンテキストの状態を、ストア命令によってメモリ１２へと保存し（セーブ）、新たに実行権を与えるコンテキストの状態を、ロード命令によってメモリ１２から読み出す（リストア）必要がある。
【０００８】
すなわち、従来例１では、ＣＰＵ１０が、メモリ１２へのストア命令／ロード命令を何回も繰り返すことで、コンテキストのセーブ／リストア処理を行っていた。この結果、コンテキスト・スイッチングにある程度の時間（オーバーヘッド）を要するために、その分、タスク切り替えならびにその実行の応答性、所謂リアルタイム性が悪化していた。また、ＣＰＵ１０は、セーブ／リストア処理の実行中に、その他のアプリケーションを実行することができず、リアルタイム性を阻害する要因となっていた。
【０００９】
一方、図１０に示したような従来例２では、外部メモリへのコンテキストのセーブ／リストア処理を伴わないため、その分、高速なコンテキスト・スイッチングを実現することが可能となる。しかしながら、通常、レジスタバンクとして提供されるハードウェア・リソースには制限があるため、取り扱うべきコンテキストの数が少ない等、比較的小規模の組み込みシステム以外では、現実的な構成とは言い難い。
【課題を解決するための手段】
【００１０】
前述した課題を解決するための主たる本発明は、所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、コンテキストを切り替える際に、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから、実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を実行するセーブ／リストア・コントローラと、を有することとする。
【発明の効果】
【００１１】
本発明によれば、リアルタイムシステムに適した情報処理装置及びそのコンテキスト切り替え方法を提供することができる。
【発明を実施するための最良の形態】
【００１２】
＜情報処理装置の基本的な構成／動作＞
＝＝＝情報処理装置の構成＝＝＝
図１は、本発明の一実施形態に係る情報処理装置２００の構成を示す図である。なお、情報処理装置２００は、近年、様々な分野（パソコン周辺機器、ＡＶ機器、家電機器等）に適用が拡大されている、リアルタイムＯＳ（ＩＴＲＯＮ（Industrial The Real-Time Operating system Nucleus）等）を採用した組み込みシステムとし、半導体集積回路として提供されることとする。また、情報処理装置２００は、特定用途向けの組み込みシステム以外にも、例えば、汎用的なパーソナルコンピュータ等としてもよい。
【００１３】
さらに、情報処理装置２００は、リアルタイムＯＳによって、マルチスレッド機能／マルチタスク機能を実現している場合とする。すなわち、情報処理装置２００は、プロセッサ２１において所定の処理単位（スレッド／タスク／プロセス）を複数実行させる際に、処理単位毎に対応づけられた『コンテキスト（レジスタセット（汎用レジスタ、ステータスレジスタ、プログラムカウンタ等）における現在のフラグ状態や、各処理単位を実行するための情報）』を切り替えることで、複数の処理単位をプロセッサ２１において同時並列的に実行させる。
【００１４】
情報処理装置２００は、プロセッサ２１、２つのレジスタバンク２０（＃０、＃１）、第１セレクタ２２、第２セレクタ２３、記憶素子２４、インバータ素子２５、セーブ領域アドレスレジスタ２６、リストア領域アドレスレジスタ２７、セーブ／リストア・コントローラ２８、を有する。なお、メモリ２９は、同図に示すように、情報処理装置２００の外部に設けてもよいし、情報処理装置２００に内蔵してもよい。
【００１５】
２つのレジスタバンク２０（＃０、＃１）は、レジスタファイル群を一つのバンクとして管理されたものである。また、２つのレジスタバンク２０（＃０、＃１）は、プロセッサ２１において実行権が付与された状態にあるコンテキスト、又は、セーブ処理又はリストア処理の対象となるコンテキストが、夫々排他的に格納されるものである。このように、情報処理装置２００は、レジスタバンク２０を、単純に２つ設けた構成によって実現する。
【００１６】
なお、２つのレジスタバンク２０（＃０、＃１）は、例えば、図２に示すような構造を呈する。図２に示すように、２つのレジスタバンク２０（＃０、＃１）Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｈ、Ｌレジスタ及びフラグレジスタＦによって構成される第１汎用レジスタセットと、第１汎用レジスタセットの代替となる第２汎用レジスタセットと、割り込みベクタＩ、メモリリフレッシュＲ、インデックスレジスタＩＸ、ＩＹ、スタックポインタＳＰ、プログラムカウンタＳＰによって構成される特定用途レジスタセット、によって構成される。すなわち、コンテキスト・スイッチングの際には、第１汎用レジスタセット及び第２汎用レジスタセットのうち、一方がフォアグラウンド・レジスタバンクとして選択され、他方がバックグラウンド・レジスタバンクとして選択される。なお、特定用途レジスタセットの状態は変化しない。
【００１７】
プロセッサ２１は、命令フェッチ、命令デコード、命令実行及び当該実行結果の書き戻し、等といった一般的なＣＰＵの基本的プロセスを担当するものである。なお、プロセッサ２１は、算術／論理演算を行う演算論理ユニット（Arithmetic Logic Unit）、メモリ２９から読み出された命令を解読する命令解読部（Instruction Decoder）、プロセッサ２１内で現在実行中にあるコンテキストを格納するレジスタセット、メモリ２９に対してストア命令／ロード命令等のアクセス制御を行うメモリアクセスユニット、ハードウェア／ソフトウェア割り込みの制御を行う割り込み制御部、を有する。
【００１８】
すなわち、プロセッサ２１は、Ｚ８０系マイコン等といった一般的なマイクロコンピュータの構成を呈する。なお、前述したようなプロセッサ２１の構成としては、例えば、『神保進一著「最新マイクロプロセサテクノロジ」日経ＢＰ社出版、１９９９年１２月６日、ｐ．２５９、図１』に開示されたとおりである。
【００１９】
さらに、プロセッサ２１は、リアルタイムＯＳ環境下で、マルチスレッド機能／マルチタスク機能を実現すべく、つぎのような処理を行う。すなわち、プロセッサ２１は、処理単位の切り替えに伴ってコンテキスト・スイッチングを実行する際、２つのレジスタバンク２０（＃０、＃１）のうちいずれか一つに格納されたコンテキストに対して実行権を与えるとともに、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行させることとする。
【００２０】
また、プロセッサ２１は、コンテキスト・スイッチングの際、第１セレクタ２２及び第２セレクタ２３に向けての選択指令や、セーブ領域アドレスレジスタ２６に対してセーブ領域アドレスを、リストア領域アドレスレジスタ２７に対してリストア領域アドレスを、セーブ／リストア・コントローラ２８に対してセーブ／リストア開始信号を、夫々供給することとする。
【００２１】
以下では、プロセッサ２１によって実行権を与えられており、プロセッサ２１において現在使用中の状態にあるコンテキストのことを「フォアグラウンド・コンテキスト」と称し、当該フォアグランド・コンテキストが格納されたレジスタバンク２０のことを「フォアグラウンド・レジスタバンク」と称することとする。また、その実行権が明け渡された状態にあり、将来的にプロセッサ２１に使用されるコンテキストのことを「バックグラウンド・コンテキスト」と称し、当該バックグラウンド・コンテキストが格納されたレジスタバンク２０のことを「バックグラウンド・レジスタバンク」と称することとする。
【００２２】
第１セレクタ２２は、プロセッサ２１からの選択指令をもとに生成された第１選択信号に基づいて、２つのレジスタバンク２０（＃０、＃１）のうち、実行権を与えるフォアグラウンド・コンテキストが格納されたフォアグラウンド・レジスタバンクを選択し、当該実行権を与えるフォアグラウンド・コンテキストをプロセッサ２１へと供給するものである。
【００２３】
第２セレクタ２３は、プロセッサ２１からの選択指令をもとに生成された第２選択信号に基づいて、２つのレジスタバンク２０（＃０、＃１）のうち、セーブ／リストア処理の対象となるバックグラウンド・コンテキストが格納されたバックグラウンド・レジスタバンクを選択し、そのバックグラウンド・レジスタバンクとセーブ／リストア・コントローラ２８との間におけるバックグラウンド・コンテキストの授受を行うものである。
【００２４】
記憶素子２４は、プロセッサ２１から第１セレクタ２２及び第２セレクタ２３に向けて生成される選択命令を、次の選択命令が生成されるまで、状態を保持すべく設けたものである。記憶素子２４に保持された選択命令は、第１セレクタ２２に用いられる第１選択信号となり、インバータ素子２５を介して第１選択信号の論理を反転させた信号が、第２セレクタ２３に用いられる第２選択信号となる。なお、記憶素子２４としては、例えば、フリップフロップ素子が採用される。
【００２５】
インバータ素子２５は、第１セレクタ２２及び第２セレクタ２３において、夫々のレジスタバンク２０（＃０、＃１）の選択、すなわち、フォアグランド・レジスタバンクとバックグラウンド・レジスタバンクの選択を、排他的に実行させるべく設けたものである。すなわち、インバータ素子２５を設けたことによって、第１セレクタ２２及び第２セレクタ２３において同一のレジスタバンク２０が重複して選択される恐れを確実に回避することができる。
【００２６】
セーブ領域アドレスレジスタ２６は、プロセッサ２１から指定される、セーブ処理の対象となるコンテキストを書き込むためのメモリ２９上のセーブ領域アドレスを格納するものである。
【００２７】
リストア領域アドレスレジスタ２７は、プロセッサ２１から指定される、リストア処理の対象となるコンテキストを読み出すためのメモリ２９上のリストア領域アドレスを格納するものである。
【００２８】
このように、セーブ領域アドレスレジスタ２６と、リストア領域アドレスレジスタ２７と、を夫々別々に設けることによって、プロセッサ２１は、メモリ２９に対してセーブ領域アドレスとリストア領域アドレスを自由に指定することが可能となる。
【００２９】
セーブ／リストア・コントローラ２８は、フォアグラウンド・コンテキストが格納されたフォアグラウンド・レジスタバンク２０以外の残りのバックグラウンド・レジスタバンク２０から、実行権が明け渡された状態にあるバックグラウンド・コンテキストを読み出してセーブ領域アドレスレジスタ２６に格納されたセーブ領域アドレスに基づいてメモリ２９へと書き込んだ後（セーブ処理）、メモリ２９から、つぎに実行権が与えられるコンテキストをリストア領域アドレスレジスタ２７に格納されたリストア領域アドレスに基づいて読み出してバックグラウンド・レジスタバンク２０へと書き込むものである（リストア処理）。
【００３０】
なお、セーブ／リストア・コントローラ２８は、プロセッサ２１からセーブ／リストア開始信号の受信を契機として、第２セレクタ２３において選択されたバックグラウンド・レジスタバンクとメモリ２９との間で、バックグラウンド・コンテキストのセーブ処理及び／又はリストア処理を実行することとする。
【００３１】
さらに、セーブ／リストア・コントローラ２８は、プロセッサ２１においてフォアグラウンド・コンテキストに対応づけられた処理単位が実行されるのと併行して、セーブ処理及び／又はリストア処理を実行することとする。例えば、セーブ／リストア・コントローラ２８は、プロセッサ２１においてコンテキストＡのタスクＡが実行される期間において、前の期間に実行されたタスクＣのコンテキストＣをセーブする処理と、次の期間において実行すべきタスクＢのコンテキストをリストアする処理と、を実行するのである。
【００３２】
ところで、セーブ／リストア・コントローラ２８は、セーブ処理のみを実行するセーブ・コントローラと、リストア処理のみを実行するリストア・コントローラと、に分割された実施形態としてもよい。すなわち、セーブ処理とリストア処理が夫々専属のコントローラで実施されることにより、セーブ処理とリストア処理夫々の自由度が向上することとなる。
【００３３】
メモリ２９としては、例えば、プロセッサ２１が直接アクセス可能な主記憶装置（ＳＤＲＡＭ、ＤＲＡＭ等）を採用する。すなわち、メモリ２９は、レジスタバンク２０と比較して、書き込み／読み出し速度が低速であり、記憶容量が大きいことが特徴である。なお、メモリ２９としては、プロセッサ２１と主記憶装置との間に設けたキャッシュメモリを採用してもよい。
【００３４】
なお、メモリ２９が提供する記憶領域は、複数の処理単位毎に対応づけられたコンテキスト夫々を記憶する領域毎に区画されることとする。また、プロセッサ２１は、メモリ２９上に区画された領域のアドレス管理を担当しており、当該アドレスに基づいて、セーブ領域アドレス及びリストア領域アドレスを指定することができる。この結果、セーブ／リストア・コントローラ２８によって、メモリ２９へのコンテキストのセーブ／リストア処理が無造作に行われなくなる。また、セーブ／リストア・コントローラ２８は、メモリ２９のアドレス管理を行う必要がなくなり、その分、セーブ／リストア処理に専念することができる。
【００３５】
＝＝＝情報処理装置の基本的な動作＝＝＝
図３、図４をもとに、情報処理装置２００の基本的な動作を説明する。なお、図３、図４は、一つのプロセッサ２１において、タスクＡ、Ｂ、Ｃがラウンドロビン方式に従って、所定の周期、所定の順番（Ａ→Ｂ→Ｃ→Ａ→・・・）で実行される場合である。
【００３６】
図３をもとに説明する。まず、レジスタバンク２０（＃０）がフォアグラウンド・レジスタバンク２０（＃０）、レジスタバンク２０（＃１）がバックグラウンド・レジスタバンク２０（＃１）として選定されており、プロセッサ２１がレジスタバンク２０（＃０）に格納されたコンテキストＡを用いてタスクＡの処理を実行する場合とする（ステップ１）。
【００３７】
つぎに、プロセッサ２１は、マルチタスクＯＳからのコンテキスト・スイッチング指令（コンテキストＡ→Ｂ）に応じて、レジスタバンク２０（＃１）をフォアグラウンド・レジスタバンク２０（＃１）として選択して、コンテキストＢを格納する。すなわち、プロセッサ２１は、レジスタバンク２０（＃１）に格納されたコンテキストＢを用いてタスクＢの処理を実行する。また、プロセッサ２１は、タスクＢの処理の実行と併行して、セーブ領域アドレスレジスタ２６にメモリ２９上でのコンテキストＡのセーブ領域を指定するアドレスＡを供給する。この結果、セーブ／リストア・コントローラ２８は、バックグラウンド・レジスタバンク２０（＃０）として切り替わったレジスタバンク２０（＃０）からコンテキストＡを読み出し、セーブ領域アドレスレジスタ２６に格納されたアドレスＡに基づいて、メモリ２９のコンテキストＡに係るセーブ領域へと書き込む（ステップ２）。
【００３８】
同様に、プロセッサ２１は、マルチタスクＯＳからのつぎのコンテキスト・スイッチング指令（コンテキストＢ→Ｃ）に応じて、レジスタバンク２０（＃０）をフォアグラウンド・レジスタバンク２０（＃０）として選択してコンテキストＣを格納する。すなわち、プロセッサ２１は、レジスタバンク２０（＃０）に格納されたコンテキストＣを用いてタスクＣの処理を実行する。また、プロセッサ２１は、タスクＣの処理の実行と併行して、セーブ領域アドレスレジスタ２６にメモリ２９上でのコンテキストＢのセーブ領域を指定するアドレスＢを供給する。この結果、セーブ／リストア・コントローラ２８は、バックグラウンド・レジスタバンク２０（＃１）として切り替わったレジスタバンク２０（＃１）からコンテキストＢを読み出して、セーブ領域アドレスレジスタ２６に格納されたアドレスＢに基づいて、メモリ２９のコンテキストＢに係るセーブ領域へと書き込む（ステップ３）。
【００３９】
さらに、プロセッサ２１は、タスクＣの処理の実行と併行して、リストア領域アドレスレジスタ２７に対して、コンテキストＡが書き込まれたメモリ２９上のアドレスＡを供給する。この結果、セーブ／リストア・コントローラ２８は、リストア領域アドレスレジスタ２７に格納されたアドレスＡに基づいて、メモリ２９からコンテキストＡを読み出して、レジスタバンク２０（＃１）の状態をコンテキストＡに更新する（ステップ４）。
【００４０】
プロセッサ２１は、マルチタスクＯＳからのつぎのコンテキスト・スイッチング指令（コンテキストＣ→Ａ）に応じて、プロセッサ２１においてタスクＡの処理が実行されるのと併行して、セーブ／リストア・コントローラ２８によってコンテキストＣがメモリ２９へセーブされ（ステップ５）、さらに、セーブ／リストア・コントローラ２８によってメモリ２９からコンテキストＢがリストアされる（ステップ６）。
【００４１】
プロセッサ２１は、マルチタスクＯＳからのつぎのコンテキスト・スイッチング指令（コンテキストＡ→Ｂ）に応じて、プロセッサ２１においてタスクＢの処理が実行されるのと併行して、セーブ／リストア・コントローラ２８によって、コンテキストＡがメモリ２９へセーブされるとともに（ステップ７）、コンテキストＣがメモリ２９からリストアされる（ステップ８）。
【００４２】
図４をもとに説明する。ここで、図４（ａ）はタスク切り替えポイント＊、図４（ｂ）はプロセッサ２１において現在使用中にあるフォアグラウンド・コンテキストの状態（タスク）の推移、図４（ｃ）はレジスタバンク２０（＃０）の状態（タスク）の推移、図４（ｄ）はレジスタバンク２０（＃１）の状態（タスク）の推移、図４（ｅ）は第１選択信号の推移、図４（ｆ）はセーブ／リストア処理の対象となるバックグラウンド・コンテキストの状態（タスク）の推移、図４（ｇ）はセーブ／リストア・コントローラ２８のメモリ２９へのアクセス状況（Ｗｒｉｔｅ／Ｒｅａｄ）、を夫々示したものである。
【００４３】
例えば、タスク切り替えポイント＊（１）と＊（２）との間の期間では（図４（ａ）参照）、第１選択信号（図４（ｅ）参照）に応じてレジスタバンク２０（＃０）がフォアグラウンド・レジスタバンク２０（＃０）として、また、第１選択信号を論理反転させた第２選択信号（不図示）に応じてレジスタバンク２０（＃１）がバックグラウンド・レジスタバンク２０（＃１）として夫々選定される。当該期間では、レジスタバンク２０（＃０）にはタスクＣに対応したコンテキストＣが格納されており、プロセッサ２１は、コンテキストＣを用いてタスクＣの処理を実行することとなる（図４（ｃ）参照）。
【００４４】
また、当該期間において、セーブ／リストア・コントローラ２８は、プロセッサ２１において前期間のタスクＢに対応したコンテキストＢを、レジスタバンク２０（＃１）からメモリ２９へと書き込んだ後、メモリ２９からつぎに実行すべきタスクＡのコンテキストＡを読み出して、レジスタバンク２０（＃１）の状態を更新する（図４（ｆ）、（ｇ）参照）。
【００４５】
その後、タスク切り替えポイント＊（２）では、タスクＣからタスクＡへの切り替えが行われる。このとき、レジスタバンク２０（＃１）がフォアグラウンド・レジスタバンク（＃１）として、レジスタバンク２０（＃０）がバックグラウンド・レジスタバンク２０（＃０）として夫々切り替えられる。
【００４６】
そこで、レジスタバンク２０（＃１）にはタスクＡに対応したコンテキストＡが格納されており、プロセッサ２１は、コンテキストＡを用いてタスクＡの処理を実行する（図４（ｃ）参照）。また、プロセッサ２１におけるタスクＡの処理の実行と併行して、セーブ／リストア・コントローラ２８は、プロセッサ２１で前期間で処理されたタスクＣに対応したコンテキストＣを、レジスタバンク２０（＃０）からメモリ２９へと書き込んだ後、メモリ２９からつぎに実行すべきタスクＢのコンテキストＢを読み出して、レジスタバンク２０（＃０）の状態を更新する（図４（ｆ）、（ｇ）参照）。
【００４７】
＝＝＝情報処理装置の詳細な動作＝＝＝
図５をもとに、情報処理装置２００のより詳細な動作を説明する。  
まず、プロセッサ２１は、フォアグラウンド・レジスタバンク２０（＃０）に格納されたタスクＡのコンテキストを使用して、タスクＡの処理を実行している場合であり、さらに、バックグラウンド・レジスタバンク２０（＃１）にはつぎに実行すべきタスクＢのコンテキストＢ１及びスタックポインタＳＰ（Ｂ）が格納されている場合とする（ステップ１）。
【００４８】
つぎに、プロセッサ２１内のタイマ（不図示）によって生成されたタイマ割り込み信号によって、プロセッサ２１がタイマ割り込みを識別する。この結果、プロセッサ２１は、現在実行中にあるタスクＡの処理を中断し、タスクＡの次に実行を再開すべきプログラムカウンタの値ＰＣ（Ａ）とタスクＡのコンテキストＡ０を、メモリ２９中のタスクＡ用のスタック領域へとセーブする（ステップ２）。そして、プロセッサ２１では、タイマ割り込みルーチンによって、あらかじめ設定された実行開始アドレス（割り込みベクタ）へと制御が移され、タイマ割り込み信号のクリアと、つぎのタイマ割り込みのためのタイマ再設定／起動が行われる。
【００４９】
プロセッサ２１は、前述した状態のもとで、つぎのようなコンテキスト・スイッチングを実行する。すなわち、プロセッサ２１は、メモリ２９中のシステム領域から、タスクＡのコンテキストをセーブ／リストアするための記憶領域のアドレス（セーブ領域アドレスＳＡ）を取得する。そして、プロセッサ２１は、取得したセーブ領域アドレスＳＡを、セーブ領域アドレスレジスタ２６へと供給する。この結果、セーブ／リストア・コントローラ２８は、セーブ領域アドレスレジスタ２６に格納されたセーブ領域アドレスＳＡを、自身に設けたセーブポインタレジスタ２８１に設定する。
【００５０】
また、プロセッサ２１は、メモリ２９中のシステム領域から、タスクＣのコンテキストをセーブ／リストアするための記憶領域のアドレス（リストア領域アドレスＳＣ）を取得する。そして、プロセッサ２１は、取得したリストア領域アドレスＳＣを、リストア領域アドレスレジスタ２７へと供給する。この結果、セーブ／リストア・コントローラ２８は、リストア領域アドレスレジスタ２７に格納されたリストア領域アドレスＳＣを、自身に設けたリストアポインタレジスタ２８２に設定する。そして、プロセッサ２１は、つぎのタスク切り替え並びにコンテキスト・スイッチングのために、メモリ２９中のシステム領域に格納されたタスク管理情報を更新する（以上、ステップ３）。
【００５１】
つぎに、プロセッサ２１は、第１セレクタ２２及び第２セレクタ２３に向けて選択指令を、セーブ／リストア・コントローラ２８に対してセーブ／リストア開始信号を、夫々供給することとなる。この結果、第１セレクタ２２及び第２セレクタ２３によって、タスクＡのコンテキストＡ１（Ａ０の残り）が格納されたフォアグラウンド・レジスタバンク２０（＃０）がバックグラウンド・レジスタバンク２０（＃０）へと切り替わり、また、タスクＢのコンテキストＢ１が格納されたバックグラウンド・レジスタバンク２０（＃１）がフォアグラウンド・レジスタバンク２０（＃１）へと切り替わる。
【００５２】
また、このとき、タスクＢのスタックポインタＳＰ（Ｂ）がリストアされて、プロセッサ２１が使用するメモリ２９中のスタック領域は、スタックポインタＳＰ（Ｂ）で指定されるタスクＢ用のスタック領域へと切り替えられる（以上、ステップ４）。
【００５３】
つぎに、プロセッサ２１は、ＲＴＩ（Return From Interrupt）命令を実行することで、タイマ割り込みルーチンから解放される。このとき、スタックポインタＳＰ（Ｂ）で指定されるタスクＢ用のスタック領域から、タスクＢのコンテキストＢ０及びプログラムカウンタＰＣ（Ｂ）が読み出され、フォアグラウンド・レジスタバンク２０（＃１）へと格納される（ステップ５）。この結果、プロセッサ２１は、タスクＢの処理の実行を再開することとなる（ステップ６）。
【００５４】
また、プロセッサ２１におけるタスクＢの処理の実行と併行して、セーブ／リストア・コントローラ２８は、セーブポインタレジスタ２８１に格納されたセーブ領域アドレスＳＡに基づいて、バックグラウンド・レジスタバンク２０（＃０）に格納されたタスクＡのコンテキストＡ１を、メモリ２９中のタスクＡ用のセーブ領域へとセーブする。このとき、スタックポインタＳＰ（Ａ）も同様に、メモリ２９中のタスクＡ用のセーブ領域へとセーブされる（以上、ステップ７）。
【００５５】
さらに、セーブ／リストア・コントローラ２８は、プロセッサ２１におけるタスクＢの処理の実行と併行して、リストアポインタレジスタ２８２に格納されたリストア領域アドレスＳＣに基づいて、メモリ２９中のタスクＣ用のリストア領域に格納されたタスクＣのコンテキストＣ２を、バックグラウンド・レジスタバンク２０（＃０）へとリストアする。このとき、スタックポインタＳＰ（Ｃ）も同様に、バックグラウンド・レジスタバンク２０（＃０）へとリストアされる。（以上、ステップ８）。
【００５６】
以上、本発明に係る情報処理装置２００及びそのコンテキスト・スイッチング方法によれば、プロセッサ２１とは独立したセーブ／リストア処理専用ハードウェアであるセーブ／リストア・コントローラ２８によって、バックグラウンド・レジスタバンク２０からメモリ２９に対して実行権が明け渡された状態にあるバックグラウンド・コンテキストのセーブ処理や、メモリ２９からバックグラウンド・レジスタバンク２０に対してつぎに実行権が付与されるコンテキストのリストア処理を実行させる。このため、プロセッサ２１においてセーブ／リストア処理に係る負荷が軽減されるとともに、セーブ／リストア処理の高速化が図られることとなる。
【００５７】
さらに、プロセッサ２１において実行権が付与されたフォアグラウンド・コンテキストに対応づけられる処理単位が実行されるのと併行して、セーブ／リストア・コントローラ２８はセーブ／リストア処理を実行することとする。このため、プロセッサ２１は、コンテキスト・スイッチングに要する処理時間に阻害されずに、複数の処理単位の実行権を切り替えて同時並列的に実行することが可能となる。
【００５８】
このように、本発明に係る情報処理装置２００によれば、複数の処理単位のトータルな処理時間の短縮化を図れるとともに、リアルタイム性に優れた高性能なリアルタイムシステムを構築することが可能となる。
【００５９】
＜情報処理装置のその他の構成／動作＞
＝＝＝アドレスレジスタの統合＝＝＝
前述した実施形態において、コンテキスト夫々を記憶するメモリ２９中の区画領域が、例えば６４番地単位で順番に配置される等、所定の規則性に従って区画される（アドレス管理される）場合とする。この場合、セーブ領域アドレスレジスタ２６とリストア領域アドレスレジスタ２７は別々に設ける必要がなく、一つのアドレスレジスタとして統合することができる。
【００６０】
すなわち、プロセッサ２１は、当該一つのアドレスレジスタに対して、セーブ領域アドレス若しくはリストア領域アドレスのいずれか一方を供給することとする。さらに、セーブ／リストア・コントローラ２８は、メモリ２９中の区画領域の所定の規則性に基づいて、当該一つのアドレスレジスタに格納されたセーブ領域アドレス若しくはリストア領域アドレスのいずれか一方から他方のアドレスを算定することができる。
【００６１】
例えば、前述したように、メモリ２９中の区画領域が６４番地毎に区画される場合、セーブ／リストア・コントローラ２８は、“指定されたセーブ領域アドレス＋６４番地”を計算することで、リストア領域アドレスを求めることができる。なお、最終のリストア領域アドレスから再び先頭のリストア領域アドレスを算定する際には、“指定されたセーブ領域アドレス＋６４番地”の加算結果において、桁あふれが生じた上位ビットをマスクすればよい。
【００６２】
このように、セーブ領域アドレスレジスタ２６とリストア領域アドレスレジスタ２７を一つのアドレスレジスタとして統合することによって、回路規模を小さくすることができる。さらに、プロセッサ２１は、セーブ領域アドレス若しくはリストア領域アドレスのいずれか一方を、所定の順番に指定すればいいため、その分、負荷が軽減される。
【００６３】
＝＝＝セーブ／リストア処理のモード選択＝＝＝
前述した実施形態において、プロセッサ２１は、セーブ処理及びリストア処理を連続して実行する第１モード、セーブ処理のみを実行する第２モード、リストア処理のみを実行する第３モード、のうちいずれかを指定するモード選択信号を、セーブ／リストア・コントローラ２８へと供給することとする。また、セーブ／リストア・コントローラ２８は、プロセッサ２１から供給されるモード選択信号に基づいて、第１乃至第３モードのうちいずれかを選択することとする。
【００６４】
すなわち、図３のステップ１、２、３に示されるように、複数の処理単位を同時並列的に実行させる初期／終了の段階では、セーブ処理のみや、リストア処理のみで済む場合がある。よって、プロセッサ２１は、上記３つのモードのうちいずれかを指定可能とすることで、セーブ／リストア・コントローラ２８に対して無駄な処理を実行させずに済む。
【００６５】
＝＝＝アイドル期間中のセーブ／リストア処理＝＝＝
前述した実施形態において、プロセッサ２１は、自身によるメモリ２９へのアクセス状況を示すステータス信号をセーブ／リストア・コントローラ２８へ供給することとする。また、セーブ／リストア・コントローラ２８は、プロセッサ２１から供給されるステータス信号に基づいて、プロセッサ２１がメモリ２９へのアクセスを休止するアイドル期間を識別するとともに、当該アイドル期間においてのみセーブ処理及び前記リストア処理を実行可能とする。
【００６６】
図６は、情報処理装置２００がステータス信号に基づいてアイドル期間中にセーブ／リストア処理するときの動作を示す図である。ここで、図６（ａ）はタスク切り替えポイント＊、図６（ｂ）はプロセッサ２１において現在使用中にあるフォアグラウンド・コンテキストの状態（タスク）の推移、図６（ｃ）はレジスタバンク２０（＃０）の状態（タスク）の推移、図６（ｄ）はレジスタバンク２０（＃１）の状態（タスク）の推移、図６（ｅ）は第１選択信号の推移、図６（ｆ）はステータス信号の推移、図６（ｇ）はセーブ／リストア処理の対象となるバックグラウンド・コンテキストの状態（タスク）の推移、図６（ｈ）はセーブ／リストア・コントローラ２８のメモリ２９へのアクセス状況（Ｗｒｉｔｅ／Ｒｅａｄ）、を夫々示したものである。
【００６７】
例えば、タスク切り替えポイント＊（０）の前では（図６（ａ）参照）、タスクＡのコンテキストＡが格納されたレジスタバンク２０（＃１）がフォアグラウンド・レジスタバンク２０（＃１）、タスクＢのコンテキストＢが格納されたレジスタバンク２０（＃０）がバックグラウンド・レジスタバンク２０（＃０）として夫々選定される。すなわち、プロセッサ２１は、レジスタバンク２０（＃１）に格納されたコンテキストＡを用いてタスクＡの処理を実行する（図６（ｂ）参照）。
【００６８】
ここで、タスク切り替えポインタ＊（０）において、タスクＡからタスクＢへの切り替えが行われる。このとき、レジスタバンク２０（＃０）がフォアグラウンド・レジスタバンク（＃０）として、レジスタバンク２０（＃１）がバックグラウンド・レジスタバンク２０（＃１）として夫々切り替えられる。
【００６９】
このとき、レジスタバンク２０（＃０）にはタスクＢに対応したコンテキストＢが格納され、プロセッサ２１はコンテキストＢを用いてタスクＢの処理を実行することとなる（図６（ｃ）参照）。また、プロセッサ２１におけるタスクＢの処理の実行と併行して、セーブ／リストア・コントローラ２８は、レジスタバンク２０（＃１）からプロセッサ２１において前期間で処理されたタスクＡに対応したコンテキストＡを、メモリ２９へと書き込む。さらに、セーブ／リストア・コントローラ２８は、メモリ２９からつぎに実行すべきタスクＣのコンテキストＣを読み出して、レジスタバンク２０（＃１）の状態の更新を行う。
【００７０】
ここで、セーブ／リスト・コントローラ２８は、コンテキストＡのメモリ２９への書き込み処理（セーブ処理）の途中や、メモリ２９からコンテキストＣの読み出し処理（リストア処理）の途中において、プロセッサ２１から供給されるステータス信号に基づいて、プロセッサ２１がメモリ２９へアクセス中である旨を識別した場合とする（図６（ｆ）参照）。この場合、セーブ／リスト・コントローラ２８は、プロセッサ２１から供給されるステータス信号に基づいて、アイドル期間が再び識別されるまでの間、コンテキストＡのメモリ２９への書き込み処理を中断することとする（図６（ｈ）参照）。
【００７１】
このように、セーブ／リストア・コントローラ２８は、プロセッサ２１がメモリ２９へのアクセスを休止するアイドル期間においてセーブ／リストア処理を実行可能とする。この結果、セーブ／リストア・コントローラ２８は、プロセッサ２１によるメモリ２９へのアクセスを阻害せずに、セーブ／リストア処理を実施することが可能となる。
【００７２】
＝＝＝ビジー信号＝＝＝
前述した実施形態において、セーブ／リストア・コントローラ２８は、セーブ処理又はリストア処理の実行中に、当該実行中であることを示すビジー信号をプロセッサ２９へと供給することとする。また、プロセッサ２１は、セーブ／リストア・コントローラ２８から供給されるビジー信号が解除されるまでの間、セーブ／リストア処理の開始を遅延させることとする。
【００７３】
例えば、プロセッサ２１は、ビジー信号が解除されるまで、セーブ／リストア・コントローラ２８へのセーブ／リストア開始信号の供給を休止する。この結果、セーブ／リストア処理の開始を遅延させることができる。あるいは、セーブ／リストア・コントローラ２８は、ビジー信号が解除されるまで、プロセッサ２９から供給されたセーブ／リストア開始信号に対して何ら応答しないように設計してもよい。この場合であっても、セーブ／リストア処理の開始を遅延させることができる。
【００７４】
すなわち、プロセッサ２１におけるフォアグラウンド・コンテキストによる処理単位の実行期間中に、バックグラウンド・コンテキストのセーブ処理及びリストア処理の処理時間が収まりきらない場合が生じうる。このため、プロセッサ２１は、セーブ／リストア処理の実行中であることを示すビジー信号が解除されるまでの間、セーブ／リストア処理の開始を遅延させることによって、前述した事象を回避する。
【００７５】
なお、セーブ／リストア・コントローラ２８は、プロセッサ２１から供給されるステータス信号に基づいて、プロセッサ２１がメモリ２９へアクセスする期間を意図的に回避して、セーブ／リストア処理を実行することも可能である。すなわち、プロセッサ２１によるメモリ２９へのアクセスが、セーブ／リストア処理よりも必ず優先される場合である。この場合には、前述したビジー信号が不要となることは言うまでもない。
【００７６】
＝＝＝タスク総数≦レジスタバンク総数の場合＝＝＝
前述した実施形態において、プロセッサ２１は、同時並列的に実行すべき処理単位の総数が、レジスタバンク２０の総数以下となる場合、セーブ処理及びリストア処理を禁止するためのセーブ／リストア禁止信号を、セーブ／リストア・コントローラ２８へと供給することとする。また、セーブ／リストア・コントローラ２８は、プロセッサ２１からセーブ／リストア禁止信号を受信した場合、セーブ処理及びリストア処理の実行を停止することとする。
【００７７】
すなわち、同時並列的に実行すべき処理単位の総数が、レジスタバンク２０の総数以下となる場合、メモリ２９へのコンテキストのセーブ／リストア処理を実行する必要がなくなる。そこで、この場合、セーブ／リストア処理を禁止すれば、プロセッサ２１は、レジスタバンク２０の切り替え（フォアグラウンド・レジスタバンクとバックグラウンド・レジスタバンクの切り替え）だけで、コンテキスト・スイッチングを高速に行えることとなる。
【００７８】
＝＝＝３つ以上のレジスタバンク構成＝＝＝
前述した実施形態において、さらに、割り込み制御用レジスタバンク３０を設けることとする。すなわち、情報処理装置２００内には３つ以上のレジスタバンク（２０、３０）が設けられたこととなる。
【００７９】
図７は、本発明の他の実施形態に係る情報処理装置２００において、２つの割り込み制御用レジスタバンク３０（＃０、＃１）をさらに設けた場合の構成を示す図である。図８は、２つの割り込み制御用レジスタバンク３０（＃０、＃１）をさらに設けた情報処理装置２００の基本的な動作を示す図である。なお、図８において、図８（ａ）はタスク切り替えポイント＊、図８（ｂ）は割り込み要因Ｘの割り込み受付タイミング＊、図８（ｃ）は割り込み要因Ｙの割り込み受付タイミング＊、図８（ｄ）はプロセッサ２１において現在使用中にあるフォアグラウンド・コンテキストの状態（タスク）の推移、図８（ｅ）はレジスタバンク２０（＃０）の状態（タスク）の推移、図８（ｆ）はレジスタバンク２０（＃１）の状態（タスク）の推移、図８（ｇ）は割り込み制御用レジスタバンク３０（＃３）の状態（割り込み要因Ｘ）の推移、図８（ｈ）は割り込み制御用レジスタバンク３０（＃４）の状態（割り込み要因Ｙ）の推移、図８（ｉ）は第１選択信号の推移、図８（ｊ）は第２選択信号の推移、図８（ｋ）はセーブ／リストア処理の対象となるバックグラウンド・コンテキストの状態（タスク）の推移、図８（ｌ）はメモリ２９へのアクセス状況（Ｗｒｉｔｅ／Ｒｅａｄ）、を夫々示したものである。
【００８０】
例えば、タスク切り替えポイント＊（２）と＊（４）との間の期間では（図８（ａ）参照）、タスクＣのコンテキストＣが格納されたレジスタバンク２０（＃０）がフォアグラウンド・レジスタバンク２０（＃０）、タスクＢのコンテキストＢが格納されたレジスタバンク２０（＃１）がバックグラウンド・レジスタバンク２０（＃１）として夫々選定される。
【００８１】
すなわち、プロセッサ２１は、レジスタバンク２０（＃０）に格納されたコンテキストＣを用いてタスクＣの処理を実行する（図８（ｄ）参照）。また、プロセッサ２１におけるタスクＣの処理の実行と併行して、セーブ／リストア・コントローラ２８は、プロセッサ２１において前期間で処理されたタスクＢに対応したコンテキストＢを、レジスタバンク２０（＃１）からメモリ２９へと書き込んだ後、メモリ２９からつぎに実行すべきタスクＡのコンテキストＡを読み出して、レジスタバンク２０（＃１）の状態を更新する（図８（ｋ）、（ｌ）参照）。
【００８２】
ここで、割り込み受付タイミング＊（３）において、プロセッサ２１が、タスクＣの処理の実行中に、割り込み要因Ｙによる割り込みを受け付けた場合とする（図８（ｄ）参照）。このとき、レジスタバンク２０（＃０、＃１）の状態に影響を与えることなく、割り込み制御用レジスタバンク３０（＃４）の状態は、割り込み要因Ｙに応じたコンテキストＹとなる（図８（ｈ）参照）。
【００８３】
すなわち、割り込み要因Ｙによる割り込みが生じた場合であっても、レジスタバンク２０（＃０）の状態はタスクＣのコンテキストＣに継続されたままである。さらに、セーブ／リストア・コントローラ２８は、メモリ２９へのコンテキストＢのセーブ処理や、メモリ２９からコンテキストＡのリストア処理を継続することとなる。
【００８４】
すなわち、割り込み制御用レジスタバンク３０をさらに設けておくことで、プロセッサ２１内で割り込み（ハードウェア割り込み、ソフトウェア割り込み（例外、ウォッチドックタイマ等））が生じた場合であっても、セーブ／リストア・コントローラ２８によるセーブ／リストア処理を継続して行えるようになる。
【００８５】
以上、本発明の実施形態について説明したが、この実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良され得るとともに、その等価物も含まれるものである。
【図面の簡単な説明】
【００８６】
【図１】本発明の一実施形態に係る情報処理装置の構成を説明する図である。
【図２】本発明の一実施形態に係るレジスタバンクの構成を説明する図である。
【図３】本発明の一実施形態に係る情報処理装置の動作を説明する図である。
【図４】本発明の一実施形態に係る情報処理装置の動作を説明する図である。
【図５】本発明の一実施形態に係る情報処理装置の動作を説明する図である。
【図６】本発明の一実施形態に係る情報処理装置の動作を説明する図である。
【図７】本発明の他の実施形態に係る情報処理装置の構成を説明する図である。
【図８】本発明の他の実施形態に係る情報処理装置の動作を説明する図である。
【図９】従来のコンテキスト・スイッチングを説明する図である。
【図１０】従来のコンテキスト・スイッチングを説明する図である。
【図１１】従来のコンテキスト・スイッチングを説明する図である。
【符号の説明】
【００８７】
１０  ＣＰＵ
１１  レジスタバンク
１２  メモリ
１３  セレクタ
２００  情報処理装置
２０  レジスタバンク
２１  プロセッサ
２２  第１セレクタ
２３  第２セレクタ
２４  記憶素子
２５  インバータ素子
２６  セーブ領域アドレスレジスタ
２７  リストア領域アドレスレジスタ
２８  セーブ／リストア・コントローラ
２８１  セーブポインタレジスタ
２８２  リストアポインタレジスタ
２９  メモリ
３０  割り込み制御用レジスタバンク
【図１】
2006092042.tif 000003
【図２】
2006092042.tif 000004
【図３】
2006092042.tif 000005
【図６】
2006092042.tif 000006
【図７】
2006092042.tif 000007
【図９】
2006092042.tif 000008
【図１０】
2006092042.tif 000009
【図４】
2006092042.tif 000010
【図５】
2006092042.tif 000011
【図８】
2006092042.tif 000012
【図１１】
2006092042.tif 000013