(57)【要約】【課題】割り込みからの復帰時に、コンテキスト情報を復帰するのに時間を要する。【解決手段】アクセス制御回路１１４０は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスＢＳ２を通じてＣＰＵ１１３０から１サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にＣＰＵ１１３０から転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第１の記憶部１１５０に書込む。アクセス制御回路１１４０は、第１の記憶部１１５０への書込み後、第１の記憶部１１５０に記憶されているコンテキスト番号に対応させて、第１の記憶部１１５０に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを内部バスＢＳ４を通じて複数サイクルで第２の記憶部１１６０に転送する。【選択図】図１
2019219984.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと第１のビット幅の第１のバスを通じて接続される第１の記憶部と、
前記第１の記憶部と前記第１のビット幅よりも小さなビット幅の第２のバスを通じて接続される第２の記憶部と、
割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、前記第１のバスを通じて前記ＣＰＵから１サイクルで転送されるコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時に前記ＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを前記第１の記憶部に書込むアクセス制御回路とを備え、
前記アクセス制御回路は、前記第１の記憶部への前記書込み後、前記第１の記憶部に記憶されているコンテキスト番号に対応させて、前記第１の記憶部に記憶されている前記コンテキスト情報と前記リンクコンテキスト番号とからなるデータを複数のサイクルで前記第２のバスを通じて前記第２の記憶部に転送する、メモリモジュール。
【請求項２】
前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第１の記憶部に記憶されているコンテキスト番号と一致するときに、前記第１の記憶部に記憶されている前記コンテキスト番号で識別されるコンテキスト情報を前記第１のバスを通じて１サイクルで前記ＣＰＵへ転送する、請求項１記載のメモリモジュール。
【請求項３】
前記アクセス制御回路は、前記復帰する要求を受けたときに、前記復帰するコンテキスト情報を識別するコンテキスト番号が、前記第１の記憶部に記憶されているコンテキスト番号と一致しないときに、前記第１の記憶部の前記コンテキスト番号を前記復帰するコンテキスト情報を識別するコンテキスト番号で更新し、前記更新されたコンテキスト番号に対応させて前記第２の記憶部に記憶されている前記コンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第２のバスを通じて複数サイクルで前記第１の記憶部へ転送し、その後、前記第１の記憶部に転送されたコンテキスト情報を前記第１のバスを通じて１サイクルで前記ＣＰＵへ転送する、請求項２記載のメモリモジュール。
【請求項４】
前記アクセス制御回路は、前記復帰の後のプリフェッチにおいて、前記第１の記憶部に記憶されている前記リンクコンテキスト番号に対応して前記第２の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第２のバスを通じて複数サイクルで前記第１の記憶部へ転送する、請求項３記載のメモリモジュール。
【請求項５】
前記アクセス制御回路は、前記割り込みによってコンテキスト情報を退避する要求を受けたときに、前記要求を受ける前に前記第１の記憶部に記憶されていたコンテキスト番号が所定の無効な値でないときに、前記コンテキスト番号によって前記リンクコンテキスト番号を更新する、請求項１記載のメモリモジュール。
【請求項６】
前記ＣＰＵと前記第１のバスを通じて接続される第３の記憶部を備え、
前記アクセス制御回路は、割り込みによってコンテキスト情報を退避する要求を受けたときに、前記第３の記憶部に記憶されているコンテキスト番号が所定の無効な値のときに、前記第１のバスを通じて前記ＣＰＵから１サイクルで転送されるコンテキスト情報を前記第３の記憶部にも出力させるとともに、前記コンテキスト情報を識別するコンテキスト番号を前記第３の記憶部にも書込む、請求項１記載のメモリモジュール。
【請求項７】
前記アクセス制御回路は、前記退避する要求を受けたときに、前記第３の記憶部に記憶されているコンテキスト番号が前記割り込みによって退避するコンテキスト情報を識別するコンテキスト番号と一致するときに、前記第１のバスを通じて前記ＣＰＵから１サイクルで転送されるコンテキスト情報を前記第３の記憶部にも出力させる、請求項６記載のメモリモジュール。
【請求項８】
前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第３の記憶部に記憶されているコンテキスト番号と一致するときに、前記第３の記憶部に記憶されているコンテキスト情報を前記第１のバスを通じて１サイクルで前記ＣＰＵへ転送する、請求項７記載のメモリモジュール。
【請求項９】
前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第３の記憶部に記憶されているコンテキスト番号と一致せず、かつ前記第１の記憶部に記憶されているコンテキスト番号と一致するときに、前記第１の記憶部に記憶されているコンテキスト情報を前記第１のバスを通じて１サイクルで前記ＣＰＵへ転送する、請求項８記載のメモリモジュール。
【請求項１０】
前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、
復帰するコンテキスト情報を識別するコンテキスト番号が、前記第３の記憶部に記憶されているコンテキスト番号と一致せず、かつ前記第１の記憶部に記憶されているコンテキスト番号と一致しないときに、前記復帰するコンテキスト情報を識別するコンテキスト番号と対応させて、前記第２の記憶部に記憶されている前記コンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第２のバスを通じて複数サイクルで前記第１の記憶部へ転送し、その後、前記第１の記憶部に転送されたコンテキスト情報を前記第１のバスを通じて１サイクルで前記ＣＰＵへ転送する、請求項９記載のメモリモジュール。
【請求項１１】
前記アクセス制御回路は、前記復帰後のプリフェッチにおいて、前記第１の記憶部に記憶されている前記リンクコンテキスト番号が前記第３の記憶部に記憶されているコンテキスト番号と一致しないときに、前記第２の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第２のバスを通じて複数サイクルで前記第１の記憶部へ転送する、請求項１０記載のメモリモジュール。
【請求項１２】
前記第１の記憶部は、複数の割り込みの各々で停止したタスクに対して、コンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時に転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成され、
前記アクセス制御回路は、プリフェッチにおいて、前記第１の記憶部における最も優先度の高いタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、前記第２の記憶部に記憶された複数のタスクについてのコンテキスト情報の一部または全部と前記リンクコンテキスト番号とを含むデータを前記第２のバスを通じて前記第１の記憶部へ転送する、請求項１記載のメモリモジュール。
【請求項１３】
前記ＣＰＵと前記第２の記憶部は、前記第１のビット幅よりも小さなビット幅の第３のバスで接続され、
前記ＣＰＵと前記第２の記憶部との間で、前記コンテキスト情報のうち第２のビットのデータが前記第３のバスを通じて、１サイクルで転送され、
前記ＣＰＵと前記第１の記憶部との間で、前記コンテキスト情報のうち前記第２のビットのデータを除くデータが、前記第１のバスを通じて、１サイクルで転送される、請求項１記載のメモリモジュール。
【請求項１４】
ＣＰＵと第１のビット幅の第１のバスを通じて接続され、複数の割り込みの各々で実行を停止したタスクに対して、コンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時に前記ＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される第１の記憶部と、
前記第１の記憶部と前記第１のビット幅よりも小さなビット幅の第２のバスを通じて接続される第２の記憶部と、
割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、前記第１のバスを通じて前記ＣＰＵから１サイクルで転送されるコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、前記割り込みの前に前記ＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなる最新のコンテキストデータを記憶する領域が前記第１の記憶部に存在しないときには、前記第１の記憶部に記憶されているいずれかのコンテキストデータを構成する前記コンテキスト情報および前記リンクコンテキスト番号からなるデータの少なくとも１部を前記第１の記憶部から削除し、その後前記最新のコンテキストデータを前記第１の記憶部に書込むアクセス制御回路とを備え、
前記アクセス制御回路は、前記第１の記憶部に記憶された前記最新のコンテキストデータを構成する前記コンテキスト情報と前記リンクコンテキスト番号とからなるデータを１または複数のサイクルで前記第２のバスを通じて前記第２の記憶部に転送する、メモリモジュール。
【請求項１５】
前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、
復帰するコンテキスト情報を識別するコンテキスト番号が、前記第１の記憶部に記憶されているコンテキスト番号のいずれかと一致するときに、前記第１の記憶部に記憶されている前記復帰するコンテキスト情報を前記ＣＰＵへ転送するとともに、前記第１の記憶部に記憶されている前記復帰するコンテキスト情報よりも後に書込まれたコンテキストデータを前記第１の記憶部から削除する、請求項１４記載のメモリモジュール。
【請求項１６】
前記アクセス制御回路は、前記復帰後のプリフェッチにおいて、前記復帰によって前記ＣＰＵへ転送したコンテキスト情報に対応する前記リンクコンテキスト番号をコンテキスト番号とするタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、前記第２の記憶部に記憶された複数のタスクについての前記コンテキスト情報の一部または全部と前記リンクコンテキスト番号とを含むデータを前記第２のバスを通じて前記第１の記憶部へ転送する、請求項１５記載のメモリモジュール。
【請求項１７】
ＣＰＵと第１のビット幅の第１のバスを通じて接続される第１の記憶部と、
前記第１の記憶部と前記第１のビット幅よりも小さなビット幅の第２のバスを通じて接続される第２の記憶部とを備え、
前記第１の記憶部は、最新の割り込みに対して、前記ＣＰＵから転送されたコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時に前記ＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを記憶し、
前記第２の記憶部は、複数回の割り込みに対して、前記ＣＰＵから転送されたコンテキスト情報と、１つ前の割り込み時に前記ＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを前記コンテキスト情報を識別するコンテキスト番号に対応して記憶し、
プリフェッチにおいて、前記第１の記憶部に記憶されている前記リンクコンテキスト番号に対応して前記第２の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを複数サイクルで前記第２のバスを通じて前記第１の記憶部へ転送するアクセス制御回路とを備える、メモリモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリモジュールに関し、たとえば、コンテキストを退避するためのメモリモジュールの制御技術に関する。
【背景技術】
【０００２】
コンテキストスイッチの機能を有するＣＰＵは、コンテキスト情報を格納する複数のレジスタバンクを有する。ＣＰＵは、参照するレジスタバンクを切り替えることによって、実行するタスクを切り替える。
【０００３】
実行するタスク数がレジスタバンクの実装数より大きい場合、レジスタバンク間と外部のメモリ間でコンテキストの退避処理および復帰処理を行う必要がある。特許文献１には、コンテキストの退避処理および復帰処理を高速化するための手法が記載されている。
【０００４】
特許文献１では、実行しているタスク以降に実行される可能性が高いコンテキストの情報（リンクコンテキスト情報）をコンテキスト情報の一部として扱う。現在、実行しているタスクのコンテキスト情報のリンクコンテキストを用いて、実行の可能性が高いコンテキストをレジスタバンクに格納する。次に、ＣＰＵが新たなタスクを実行する時、想定していたタスクを実行する場合、参照するレジスタバンクを切り替えるだけで済むので、高速にコンテキストスイッチを行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１６４７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、次に起こる可能性が高いタスクを知る必要がある。割り込み処理では、現在実行されるタスクと関連性が低いタスクが次に実行されることになるので、次に起こる可能性が高いタスクを知ることが困難である。そのため、割り込みに備えて、割り込み後に実行されるタスクのコンテキスト情報をレジスタバンクに保持しておくことができない。その結果、割り込みからの復帰時に、コンテキスト情報を復帰するのに時間を要する。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
【課題を解決するための手段】
【０００８】
一実施形態のメモリモジュールでは、アクセス制御回路は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、第１のバスを通じてＣＰＵから１サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時にＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第１の記憶部に書込む。
【発明の効果】
【０００９】
一実施の形態のメモリモジュールによれば、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態のメモリモジュール１０００の構成を表わす図である。
【図２】第２の実施形態の半導体装置１００の構成を表わす図である。
【図３】第２の実施形態のバッファ群１５０に格納されるデータを表わす図である。
【図４】ＲＡＭ１６０に格納されるデータを表わす図である。
【図５】第２の実施形態のコンテキスト退避時におけるデータの流れを表わす図である。
【図６】第２の実施形態のコンテキスト退避時におけるタイミングチャートである。
【図７】第２の実施形態のコンテキスト復帰時におけるデータの流れの一例を表わす図である。
【図８】第２の実施形態のコンテキスト復帰時におけるタイミングチャートの一例である。
【図９】第２の実施形態のコンテキスト復帰時におけるデータの流れの別の例を表わす図である。
【図１０】第２の実施形態のコンテキスト復帰時におけるタイミングチャートの別の例である。
【図１１】第２の実施形態のプリフェッチ時におけるバッファ制御を説明するための図である。
【図１２】多重割り込みの例を表わす図である。
【図１３】第２の実施形態のプリフェッチ機能がない場合に、図１２の多重割り込みが発生したときの動作タイミングを表わす図である。
【図１４】第２の実施形態のプリフェッチ機能がある場合に、図１２の多重割り込みが発生したときの動作タイミングを表わす図である。
【図１５】第３の実施形態のメモリモジュール２１０の構成を表わす図である。
【図１６】第３の実施形態の拡張バッファ群２５０に格納される情報を表わす図である。
【図１７】第２の実施形態のコンテキスト退避および復帰時における動作タイミングを表わす図である。
【図１８】第３の実施形態のコンテキスト退避および復帰時における動作タイミングを説明するための図である。
【図１９】第４の実施形態におけるＲＡＭ１６０およびバッファ群１５０に格納される情報を表わす図である。
【図２０】第４の実施形態のコンテキスト復帰時の動作タイミングの第１例を表わす図である。
【図２１】第４の実施形態のコンテキスト復帰時の動作タイミングの第２例を表わす図である。
【図２２】第４の実施形態のコンテキスト復帰時の動作タイミングの第３例を表わす図である。
【図２３】第４の実施形態のコンテキスト復帰時の動作タイミングの第４例を表わす図である。
【図２４】第５の実施形態のコンテキスト退避時におけるバッファ制御を説明するための図である。
【図２５】（ａ）、（ｂ）、（ｃ）、（ｄ）は、図１２に示す割り込み（１）、割り込み（２）、割り込み（３）、割り込み（４）が発生したときに、コンテキスト退避によって、バッファ群１５０に格納されるデータを表わす図である。
【図２６】第５の実施形態のコンテキスト復帰時におけるバッファ制御を説明するための図である。
【図２７】第５の実施形態のコンテキスト復帰の処理手順を表わすフローチャートである。
【図２８】第５の実施形態のプリフェッチの処理手順を表わすフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態について、図面を参照して説明する。
［第１の実施形態］
図１は、第１の実施形態のメモリモジュール１０００の構成を表わす図である。
【００１２】
このメモリモジュール１０００は、アクセス制御回路１１４０と、第１の記憶部１１５０と、第２の記憶部１１６０とを備える。
【００１３】
第１の記憶部１１５０は、ＣＰＵ１１３０と第１のビット幅のバスＢＳ２を通じて接続される。
【００１４】
第２の記憶部１１６０は、第１の記憶部１１５０と第１のビット幅よりも小さな第２のビット幅の内部バスＢＳ４を通じて接続される。
【００１５】
アクセス制御回路１１４０は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスＢＳ２を通じてＣＰＵ１１３０から１サイクルで転送されるコンテキスト情報を第１の記憶部１１５０に書込む。アクセス制御回路１１４０は、さらに、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にＣＰＵ１１３０から転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第１の記憶部１１５０に書込む。
【００１６】
アクセス制御回路１１４０は、第１の記憶部１１５０への書込み後、第１の記憶部１１５０に記憶されているコンテキスト番号に対応させて、第１の記憶部１１５０に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを内部バスＢＳ４を通じて複数サイクルで第２の記憶部１１６０に転送する。
【００１７】
以上のように、本実施の形態によれば、割込みによるコンテキスト情報の退避時に、割り込みの前にＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群に書込むので、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
【００１８】
［第２の実施形態］
図２は、第２の実施形態の半導体装置１００の構成を表わす図である。
【００１９】
半導体装置１００は、割り込み制御回路１２０と、ＣＰＵ（Central Processing Unit）１３０と、メモリモジュール１１０とを備える。
【００２０】
割り込み制御回路１２０は、ＣＰＵ１３０による割り込み処理を制御する。
ＣＰＵ１３０は、特許文献１に記載されているような複数のタスクのコンテキストを保持するためのレジスタバンクを有さない。ＣＰＵ１３０は、１つのタスクのコンテキストを保持するためのレジスタを有する。割り込みの発生によるコンテキスト退避動作時、ＣＰＵ１３０は、メモリモジュール１１０にコンテキスト情報とコンテキスト情報を識別するためのコンテキスト番号とを出力する。メモリモジュール１１０は、割り込みの発生によってＣＰＵ１３０から退避されたコンテキスト情報とコンテキスト番号とを記憶し、その後の復帰時に、記憶しているコンテキスト情報をＣＰＵ１３０に転送する。ＣＰＵ１３０は、メモリモジュール１１０から転送されたコンテキスト情報でレジスタを書き換える。
【００２１】
コンテキスト退避とは、ＣＰＵ１３０からメモリモジュール１１０にコンテキスト情報を転送することをいう。コンテキスト復帰とは、メモリモジュール１１０からＣＰＵ１３０にコンテキスト情報を転送することをいう。
【００２２】
メモリモジュール１１０は、アクセス制御回路１４０と、バッファ群１５０と、ＲＡＭ（Random Access Memory）１６０とを備える。
【００２３】
ＣＰＵ１３０とアクセス制御回路１４０とは、Ｌビット幅のバスＢＳ１で接続される。ＣＰＵ１３０とバッファ群１５０とは、Ｎビット幅のバスＢＳ２で接続される。ＣＰＵ１３０とＲＡＭ１６０とは、Ｍビット幅のバスＢＳ３で接続される。バッファ群１５０とＲＡＭ１６０とは、（Ｍ＋α）ビット幅の内部バスＢＳ４で接続される。ここで、Ｌ＜Ｍ＜Ｎである。また、Ｎ＝（ｎ−１）×Ｍとしてもよい。
【００２４】
アクセス制御回路１４０は、ＣＰＵ１３０からバスＢＳ１を通じて、コンテキスト退避要求ＳＲＥＱ、およびコンテキスト復帰要求ＲＲＥＱを受け、これらの要求に基づいて、バッファ群１５０およびＲＡＭ１６０を制御する。
【００２５】
コンテキスト情報は、タスクの実行中の状態を示すＣＰＵ１３０内のプログラムカウンタの値、ＣＰＵ１３０内のレジスタに保持されたアドレス、データ、またはスタータスなどを含む。コンテキスト情報は、ｎ個のＭビットのサブコンテキスト情報（０）〜（ｎ−１）に分割されるものとする。
【００２６】
ＣＰＵ１３０からＲＡＭ１６０へ、バスＢＳ３を通じて、サブコンテキスト情報（０）が転送される。ＲＡＭ１６０からＣＰＵ１３０へ、バスＢＳ３を通じて、サブコンテキスト情報（０）が転送される。
【００２７】
ＣＰＵ１３０からバッファ群１５０へ、バスＢＳ２を通じて、サブコンテキスト情報（１）〜（ｎ−１）が１サイクルで転送される。バッファ群１５０からＣＰＵ１３０へ、バスＢＳ２を通じて、サブコンテキスト情報（１）〜（ｎ−１）が１サイクルで転送される。
【００２８】
バッファ群１５０から、ＲＡＭ１６０へサブコンテキスト情報（１）とリンクコンテキスト番号が１サイクルで転送され、サブコンテキスト情報（ｉ）（ｉ＝２〜（ｎ−１））が１サイクルで順番に転送される。
【００２９】
図３は、第２の実施形態のバッファ群１５０に格納されるデータを表わす図である。
バッファ群１５０は、ｎ個のバッファ（０）〜バッファ（ｎ−１）を含む。バッファ（０）〜バッファ（ｎ−１）は、（Ｍ＋α）ビットのデータを格納できる領域を有する。つまり、バッファ群１５０は、ｎ×（Ｍ＋α）ビットのサイズを有する。
【００３０】
バッファ（０）には、コンテキスト番号が保存される。コンテキスト番号は、コンテキスト情報を識別するための番号である。バッファ（１）には、リンクコンテキスト番号とサブコンテキスト情報（１）が保存される。リンクコンテキスト番号は、１回前にＣＰＵ１３０から転送されてバッファ群１５０に格納されていたコンテキスト情報を識別するための識別子である。コンテキスト退避が一度も行われていない時、コンテキスト番号とリンクコンテキスト番号は無効な値を保持する。バッファ（２）〜バッファ（ｎ−１）には、サブコンテキスト情報（２）〜サブコンテキスト情報（ｎ−１）が保存される。バッファ（１）以外のバッファに、リンクコンテキスト番号が保持されるものとしてもよい。
【００３１】
以下の説明において、バッファ群１５０に記憶されるコンテキスト番号、リンクコンテキスト番号、サブコンテキスト情報（１）〜（ｎ−１）をコンテキストデータという場合がある。
【００３２】
図４は、ＲＡＭ１６０に格納されるデータを表わす図である。
ＲＡＭ１６０は、プログラムの実行開始以降にＣＰＵ１３０から直接またはバッファ群１５０を介して転送されたすべてのコンテキスト情報と、バッファ群１５０から転送されたリンクコンテキスト番号を記憶する。ＲＡＭ１６０のアドレスとコンテキスト番号とが対応する。
【００３３】
図４の例では、ＲＡＭ１６０のアドレスＡＤＤ（ｋ）は、コンテキスト番号＝ｋに対応するアドレスである。
【００３４】
アドレスＡＤＤ（ｋ）を始点としたｎ×（Ｍ＋α）ビットのブロックにコンテキスト番号＝ｋのコンテキスト情報（サブコンテキスト情報（０）〜（ｎ−１））およびリンクコンテキスト番号が記憶される。
【００３５】
ｎ×（Ｍ＋α）ビットのブロックは、ｎ個の（Ｍ＋α）ビットの領域０〜領域（ｎ−１）に分割される。先頭の領域０にＣＰＵ１３０から直接転送されたサブコンテキスト情報（０）が記憶される。２番目の領域１にバッファ群１５０のバッファ（１）から転送されたリンクコンテキスト番号とサブコンテキスト情報（１）が記憶される。領域i（i＞１）にバッファ群１５０のバッファ（ｉ）から転送されたサブコンテキスト情報（ｉ）が記憶される。
【００３６】
（コンテキスト退避）
アクセス制御回路１４０は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスＢＳ２を通じてＣＰＵ１３０から１サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号とをバッファ群１５０に書込む。
【００３７】
また、アクセス制御回路１４０は、割り込みの前にＣＰＵ１３０から転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群１５０に書込む。具体的には、アクセス制御回路１４０は、退避する要求を受ける前にバッファ群１５０に記憶されていたコンテキスト番号が所定の無効な値でないときに、バッファ群１５０に記憶されていたコンテキスト番号によってリンクコンテキスト番号を更新する。アクセス制御回路１４０は、退避する要求を受ける前にバッファ群１５０に記憶されていたコンテキスト番号が所定の無効な値のときに、所定の無効な値でリンクコンテキスト番号を更新する。
【００３８】
その後、アクセス制御回路１４０は、バッファ群１５０に記憶されているコンテキスト番号に対応させて、バッファ群１５０に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを複数サイクルで、内部バスＢＳ４を通じてＲＡＭ１６０に転送する。
【００３９】
図５は、第２の実施形態のコンテキスト退避時におけるデータの流れを表わす図である。図６は、第２の実施形態のコンテキスト退避時におけるタイミングチャートである。図６において、ＲＡＭ１６０の書き込み期間は、ＩＤＬＥ信号の活性化で示されている。
【００４０】
図５および図６を参照して、ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト退避要求ＳＲＥＱを出力する。アクセス制御回路１４０は、コンテキスト退避要求ＳＲＥＱを受ける。
【００４１】
アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト退避受付ＳＡＣＫを出力する。ＣＰＵ１３０は、コンテキスト退避受付ＳＡＣＫを受ける。
【００４２】
ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（ここでは、「１」）を出力する。アクセス制御回路１４０は、コンテキスト番号ＣＴＸ＿ＩＤを受ける。
【００４３】
アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号とバッファ（１）内のリンクコンテキスト番号とが無効な値であれば、バッファ（１）内のリンクコンテキスト番号を入力されたコンテキスト番号ＣＴＸ＿ＩＤで更新する。アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号とバッファ（１）内のリンクコンテキスト番号とが有効な値であれば、バッファ（０）内のコンテキスト番号でバッファ（１）内のリンクコンテキスト番号を更新する。アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号を入力されたコンテキスト番号ＣＴＸ＿ＩＤで更新する。
【００４４】
ＣＰＵ１３０は、バスＢＳ２を通じて、１サイクルでサブコンテキスト情報（１）〜サブコンテキスト情報(ｎ−１）をバッファ群１５０へ同時に出力する。同時に、ＣＰＵ１３０は、バスＢＳ３を通じて、サブコンテキスト情報（０）を１サイクルでＲＡＭ１６０へ出力する。アクセス制御回路１４０は、サブコンテキスト情報（１）〜サブコンテキスト情報(ｎ−１）をバッファ（１）〜バッファ（ｎ−１）に書き込む。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点するブロックの第０領域にサブコンテキスト情報（０）を書き込む。
【００４５】
その後、アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックにバッファ（１）〜バッファ（ｎ−１）に格納された情報を内部バスＢＳ４を通じて順番に複数サイクルで出力させる。
【００４６】
第１番目のサイクルで、バッファ（１）に格納されたリンクコンテキスト番号とサブコンテキスト情報（１）がＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第１領域に送られる。その後の第i（ｉ＞２）番目のサイクルで、バッファ（ｉ）に格納されたサブコンテキスト情報（ｉ）がＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第i領域に送られる。
【００４７】
（コンテキスト復帰）
アクセス制御回路１４０は、ＣＰＵ１３０から割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号がバッファ（０）に記憶されているコンテキスト番号と一致するときに、以下を実行する。アクセス制御回路１４０は、バッファ（０）に記憶されているコンテキスト番号で識別されるバッファ（１）〜（ｎ−１）のサブコンテキスト情報（１）〜（ｎ−１）をバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ転送する。
【００４８】
アクセス制御回路１４０は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号がバッファ（０）に記憶されているコンテキスト番号と一致しないときに、以下の処理を行なう。アクセス制御回路１４０は、バッファ（０）のコンテキスト番号を復帰するコンテキスト情報を識別するコンテキスト番号で更新する。アクセス制御回路１４０は、更新されたコンテキスト番号に対応させてＲＡＭ１６０に記憶されているサブコンテキスト情報（１）〜（ｎ−１）およびリンクコンテキスト番号を含むデータを複数サイクルでバッファ群１５０へ転送する。アクセス制御回路１４０は、その後、バッファ（１）〜（ｎ−１）内の転送されたサブコンテキスト情報（１）〜（ｎ−１）をバスＢＳ２を通じて、ＣＰＵ１３０へ１サイクルで転送する。
【００４９】
アクセス制御回路１４０は、復帰するコンテキスト情報を識別するコンテキスト番号がいずれであるかに係らず、コンテキスト番号に対応させてＲＡＭ１６０に記憶されているサブコンテキスト情報（０）をバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ転送する。
【００５０】
図７は、第２の実施形態のコンテキスト復帰時におけるデータの流れの一例を表わす図である。図８は、第２の実施形態のコンテキスト復帰時におけるタイミングチャートの一例である。図７および図８には、バッファ（０）内のコンテキスト番号と入力されたコンテキスト番号ＣＴＸ＿ＩＤとが一致するときの例が示されている。
【００５１】
図７および図８を参照して、ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、コンテキスト復帰要求ＲＲＥＱを受ける。
【００５２】
アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、コンテキスト復帰受付ＲＡＣＫを受ける。
【００５３】
ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（ここでは、「１」）を出力する。アクセス制御回路１４０は、コンテキスト番号ＣＴＸ＿ＩＤを受ける。
【００５４】
アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号と入力されたコンテキスト番号ＣＴＸ＿ＩＤとが一致するときに、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第０領域に保持されたサブコンテキスト情報（０）をバスＢＳ３を通じて、１サイクルでＣＰＵ１３０へ出力させる。
【００５５】
それと同時に、アクセス制御回路１４０は、図８におけるＣＴＸ＿ＲＤで示されるように、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を１サイクルでＣＰＵ１３０へ出力させる。
【００５６】
アクセス制御回路１４０は、サブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）の出力と同時に、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。ＣＰＵ１３０は、コンテキスト復帰終了ＥＮＤを受ける。
【００５７】
図９は、第２の実施形態のコンテキスト復帰時におけるデータの流れの別の例を表わす図である。図１０は、第２の実施形態のコンテキスト復帰時におけるタイミングチャートの別の例である。図９および図１０には、バッファ（０）内のコンテキスト番号と入力されたコンテキスト番号ＣＴＸ＿ＩＤとが不一致のときの例が示されている。
【００５８】
図９および図１０を参照して、ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、コンテキスト復帰要求ＲＲＥＱを受ける。
【００５９】
アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、コンテキスト復帰受付ＲＡＣＫを受ける。
【００６０】
ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（ここでは、「１」）を出力する。アクセス制御回路１４０は、コンテキスト番号ＣＴＸ＿ＩＤを受ける。
【００６１】
アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号と入力されたコンテキスト番号ＣＴＸ＿ＩＤとが一致しないときに、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックを特定する。アクセス制御回路１４０は、特定したブロックの第１〜第（ｎ−１）領域に保持されたリンクコンテキスト番号およびサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバッファ群１５０のバッファ（１）〜バッファ（ｎ−１）へ順番に出力させる。
【００６２】
第１番目のサイクルで、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第（ｎ−１）領域に保持されたサブコンテキスト情報（ｎ−１）がバッファ（ｎ−１）へ送られる。第ｉ（１＜ｉ＜ｎ−１）番目のサイクルで、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第（ｎ−ｉ）領域に保持されたサブコンテキスト情報（ｉ）がバッファ（ｉ）へ送られる。最後に、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第１領域に保持されたリンクテキスト番号とサブコンテキスト情報（ｉ）とがバッファ（１）へ送られる。
【００６３】
その後、アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックの第０領域に保持されたサブコンテキスト情報（０）をバスＢＳ３を通じて、ＣＰＵ１３０へ出力させる。
【００６４】
それと同時に、アクセス制御回路１４０は、図８におけるＣＴＸ＿ＲＤで示されるように、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を１サイクルでＣＰＵ１３０へ出力させる。
【００６５】
アクセス制御回路１４０は、サブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）の出力と同時に、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。ＣＰＵ１３０は、コンテキスト復帰終了ＥＮＤを受ける。
【００６６】
（プリフェッチ）
アクセス制御回路１４０は、コンテキスト復帰の後のプリフェッチにおいて、バッファ群１５０に記憶されているリンクコンテキスト番号に対応して、ＲＡＭ１６０に記憶されているコンテキスト情報およびリンクコンテキスト番号を含むデータを複数サイクルで内部バスＢＳ４を通じてバッファ群１５０へ転送する。
【００６７】
図１１は、第２の実施形態のプリフェッチ時におけるバッファ制御を説明するための図である。
【００６８】
コンテキスト復帰の終了後にプリフェッチが実行される。
アクセス制御回路１４０は、バッファ（１）内のリンクコンテキスト番号によって、バッファ（０）内のコンテキスト番号を更新する。アクセス制御回路１４０は、ＲＡＭ１６０内の更新されたコンテキスト番号に対応するアドレスを起点とするブロックからリンクコンテキスト番号、サブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を複数サイクルで内部バスＢＳ４を通じてバッファ（１）〜バッファ（ｎ−１）へ転送する。
【００６９】
アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号とバッファ（１）内のリンクコンテキストが同じ値の時、プリフェッチ動作は行わずに、バッファ（０）内のコンテキスト番号とバッファ（１）内のリンクコンテキスト番号を所定の無効な値で更新する。
【００７０】
また、アクセス制御回路１４０は、プリフェッチ動作中にＣＰＵ１３０からコンテキスト退避要求ＳＲＥＱを受けた場合、プリフェッチ動作を停止し、コンテキスト退避要求ＳＲＥＱを受け付けて、通常のコンテキスト退避動作を実施する。
【００７１】
図１２は、多重割り込みの例を表わす図である。
タスク（１）の実行中に割り込み（１）が発生し、タスク（１）が途中で実行を停止し、タスク（２）が実行される。このときには、ＣＰＵ１３０からタスク（１）のコンテキスト情報がメモリモジュール１１０へ転送される。このコンテキスト情報のコンテキスト番号は「１」である。
【００７２】
タスク（２）の実行中に割り込み（２）が発生し、タスク（２）が途中で実行を停止し、タスク（３）が実行される。このときには、ＣＰＵ１３０からタスク（２）のコンテキスト情報がメモリモジュール１１０へ転送される。このコンテキスト情報のコンテキスト番号は「２」である。
【００７３】
タスク（３）の実行中に割り込み（３）が発生し、タスク（３）が途中で実行を停止し、タスク（４）が実行される。このときには、ＣＰＵ１３０からタスク（３）のコンテキスト情報がメモリモジュール１１０へ転送される。このコンテキスト情報のコンテキスト番号は「３」である。
【００７４】
タスク（４）の終了後に復帰（１）が行われ、タスク（３）の実行が再開される。このときには、メモリモジュール１１０からタスク（３）のコンテキスト情報がＣＰＵ１３０へ転送される。
【００７５】
タスク（３）の終了後に復帰（２）が行われ、タスク（２）の実行が再開される。このときには、メモリモジュール１１０からタスク（２）のコンテキスト情報がＣＰＵ１３０へ転送される。
【００７６】
タスク（２）の終了後に復帰（３）が行われ、タスク（１）の実行が再開される。このときには、メモリモジュール１１０からタスク（１）のコンテキスト情報がＣＰＵ１３０へ転送される。
【００７７】
図１３は、第２の実施形態のプリフェッチ機能がない場合に、図１２の多重割り込みが発生したときの動作タイミングを表わす図である。
【００７８】
割り込み（１）が発生したときに、ＣＰＵ１３０は、バスＢＳ１を通じて、コンテキスト退避要求ＳＲＥＱを出力する。アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト退避受付ＳＡＣＫを出力する。ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）を出力する。アクセス制御回路１４０は、バッファ（０）内のコンテキスト番号を入力されたコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）で更新する。ＣＰＵ１３０は、バスＢＳ２を通じて、タスク（１）のサブコンテキスト情報（１）〜サブコンテキスト情報(ｎ−１）をバッファ（１）〜バッファ（ｎ−１）に１サイクルで出力するとともに、バスＢＳ３を通じて、タスク（１）のサブコンテキスト情報（０）をＲＡＭ１６０へ出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）に対応するアドレスを起点するブロックにタスク（１）のサブコンテキスト情報（０）を書き込ませる。その後、アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）に対応するアドレスを起点とするブロックにバッファ（１）〜バッファ（ｎ−１）に格納されたサブコンテキスト情報（１）〜サブコンテキスト情報(ｎ−１）を内部バスＢＳ４を通じて複数サイクルで出力させる。
【００７９】
次いで、割り込み（２）が発生し、割り込み（１）が発生したときと同様の処理が実行されて、バッファ群１５０のバッファ（０）にコンテキスト番号ＣＴＸ＿ＩＤ（＝「２」）が保存され、バッファ群１５０のバッファ（１）〜バッファ（ｎ−１）にタスク（２）のサブコンテキスト情報（１）〜コンテキスト情報(ｎ−１）が保存される。また、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「２」）に対応するアドレスを起点とするブロックにタスク（２）のサブコンテキスト情報（０）〜サブコンテキスト情報(ｎ−１）が保存される。
【００８０】
次いで、割り込み（３）が発生し、割り込み（１）が発生したときと同様の処理が実行されて、バッファ群１５０のバッファ（０）にコンテキスト番号ＣＴＸ＿ＩＤ（＝「３」）が保存され、バッファ群１５０のバッファ（１）〜バッファ（ｎ−１）にタスク（３）のサブコンテキスト情報（１）〜サブコンテキスト情報(ｎ−１）が保存される。また、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「３」）に対応するアドレスを起点とするブロックにタスク（３）のサブコンテキスト情報（０）〜サブコンテキスト情報(ｎ−１）が保存される。
【００８１】
次に、復帰（１）が発生した場合に、ＣＰＵ１３０は、バスＢＳ１を通じて、コンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「３」）を出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックに保持されたタスク（３）のサブコンテキスト情報（０）をバスＢＳ３を通じて、ＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているタスク（３）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を１サイクルでＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。バッファ群１５０に復帰するタスク（３）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持されているので、１サイクルでタスク（３）のすべてのサブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）がメモリモジュールからＣＰＵ１３０へ転送される。
【００８２】
次に、復帰（２）が発生した場合に、ＣＰＵ１３０は、バスＢＳ１を通じて、コンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「２」）を出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックに保持されたサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバッファ群１５０のバッファ（１）〜バッファ（ｎ−１）へ順番に複数サイクルで出力させる。その後、アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とする領域に保持されたコンテキスト情報（０）をバスＢＳ３を通じて、ＣＰＵ１３０へ１サイクルで出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているタスク（２）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を１サイクルでＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。
【００８３】
図１４は、第２の実施形態のプリフェッチ機能がある場合に、図１２の多重割り込みが発生したときの動作タイミングを表わす図である。
【００８４】
以下、図１３の動作との相違点について説明する。
割り込み（１）が発生したときに、バッファ（０）に保持されているコンテキスト番号は、無効な値なので、アクセス制御回路１４０は、バッファ（１）のリンクコンテキスト番号を無効な値に設定する。
【００８５】
割り込み（２）が発生したときに、バッファ（０）に保持されているコンテキスト番号が「１」なので、アクセス制御回路１４０は、バッファ（１）内のリンクコンテキスト番号を「１」に更新する。
【００８６】
割り込み（３）が発生したときに、バッファ（０）に保持されているコンテキスト番号が「２」なので、アクセス制御回路１４０は、バッファ（１）内のリンクコンテキスト番号を「２」に更新する。
【００８７】
復帰（１）が発生したときには、ＲＡＭ１６０からバッファ群１５０にサブコンテキスト情報およびリンクテキスト番号と転送されないので、バッファ（１）内のリンクコンテキスト番号が「２」に維持される。
【００８８】
復帰（１）の終了後に、プリフェッチが実行される。アクセス制御回路１４０は、復帰（１）の終了後にバッファ（１）に格納されているリンクコンテキスト番号が「２」なので、バッファ（０）のコンテキスト番号を「２」に更新する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号（＝「２」）に対応するアドレスを起点とするブロックに保持されたタスク（２）のリンクコンテキスト番号（＝１）、サブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバッファ群１５０のバッファ（１）〜バッファ（ｎ−１）へ内部バスＢＳ４を通じて複数サイクルで出力させる。
【００８９】
次に、復帰（２）が発生した場合に、ＣＰＵ１３０は、バスＢＳ１を通じて、コンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「２」）を出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックに保持されたタスク（２）のサブコンテキスト情報（０）をバスＢＳ３を通じて、１サイクルでＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているタスク（２）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を１サイクルでＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。バッファ群１５０に復帰するタスク（２）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持されているので、１サイクルでタスク（２）のすべてのサブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）がメモリモジュールからＣＰＵ１３０へ転送される。
【００９０】
以上のように、本実施の形態によれば、割り込みによるコンテキスト情報の退避時に、割り込みの前にＣＰＵから転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群に書込む。このリンクコンテキスト番号を用いて、コンテキスト情報をバッファ群にプリフェッチすることによって、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
【００９１】
なお、本実施の形態では、コンテキスト情報の退避および復帰のための時間を低減するために、サブコンテキスト情報（０）は、ＣＰＵからＲＡＭに直接転送されるものとしたが、これに限定するものではない。サブコンテキスト情報（０）も、ＣＰＵからバッファ群を介してＲＡＭに転送されるものとしてもよい。
【００９２】
また、本実施の形態では、コンテキスト番号とコンテキスト情報とを対応させるために、ＲＡＭ内のアドレスＡＤＤ（ｋ）を始点としたブロックにコンテキスト番号＝ｋのコンテキスト情報（サブコンテキスト情報（０）〜（ｎ−１））およびリンクコンテキスト番号が記憶されるものとしたが、これに限定されるものではない。ＲＡＭ内に、コンテキスト番号と、そのコンテキスト番号に対応するコンテキスト情報およびリンクコンテキスト番号とが記憶されるものとしてもよい。
【００９３】
［第３の実施形態］
図１５は、第３の実施形態のメモリモジュール２１０の構成を表わす図である。
【００９４】
第３の実施形態のメモリモジュール２１０が、第２の実施形態のメモリモジュール１１０と相違する点について説明する。
【００９５】
メモリモジュール２１０は、拡張バッファ群２５０を備える。
拡張バッファ群２５０も、バッファ群１５０と同様に、ＣＰＵ１３０とバスＢＳ２を通じて接続される。
【００９６】
図１６は、第３の実施形態の拡張バッファ群２５０に格納される情報を表わす図である。拡張バッファ群２５０は、バッファ（０）〜バッファ（ｎ−１）を含む。バッファ（ｉ）は、Ｍビットの記憶領域を有する。
【００９７】
拡張バッファ群２５０のバッファ（０）には、コンテキスト番号が保持される。バッファ（１）〜バッファ（ｎ−１）には、サブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持される。
【００９８】
第２の実施形態では、図１２に示される復帰（１）において、タスク（３）に復帰せずに、最先の割り込み時に実行を停止したタスク（１）に復帰する場合に、ＲＡＭ１６０からサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）を読み出さなければならない。これによって、タスク（１）へ復帰するのに時間を要する。
【００９９】
まず、比較のために、第２の実施形態のメモリモジュール１１０の動作を説明する。
図１７は、第２の実施形態のコンテキスト退避および復帰時における動作タイミングを表わす図である。
【０１００】
図１４と同様に、割り込み（１）、割り込み（２）、および割り込み（３）が発生し、バッファ群１５０のバッファ（０）には、コンテキスト番号（＝「３」）が保持され、バッファ（１）には、リンクテキスト番号（＝「２」）が保持され、バッファ（１）〜バッファ（ｎ−１）には、タスク（３）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持されている。
【０１０１】
次に、タスク（１）に復帰する復帰（１）が発生した場合に、ＣＰＵ１３０は、バスＢＳ１を通じて、コンテキスト復帰要求ＲＲＥＱを出力する。アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰受付ＲＡＣＫを出力する。ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）を出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）に対応するアドレスを起点とするブロックに保持されたタスク（１）のリンクコンテキスト番号、サブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバッファ群１５０のバッファ（１）〜バッファ（ｎ−１）へ内部バスＢＳ４を通じて複数サイクルで出力させる。その後、アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックに保持されたサブコンテキスト情報（０）をバスＢＳ３を通じて、ＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ２を通じて、バッファ（１）〜バッファ（ｎ−１）に保持されているタスク（２）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力させる。それと同時に、アクセス制御回路１４０は、バスＢＳ１を通じて、コンテキスト復帰終了ＥＮＤを出力する。
【０１０２】
以上のように、第２の実施形態では、タスク（１）に復帰する場合に、ＲＡＭ１６０からバッファ群１５０へのタスク（１）のコンテキスト情報の転送が必要となる。
【０１０３】
本実施の形態では、プログラムの開始後、最先の割り込みが発生したとき、またはすべての割り込みに対する復帰が終了されている状態で、割り込みが発生したときに、実行を停止したタスク（１）に復帰する場合に、ＲＡＭ１６０からのサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）の読出しを不要にすることによって、復帰する時間を短縮できる。タスク（１）のコンテキスト情報を保存するのは、複数の割り込みが入れ子になって発生する場合に、最先の割り込みで実行を停止した最初のタスクに戻る可能性が高いことを考慮したものである。
【０１０４】
拡張バッファ群２５０のバッファ（０）に格納されるコンテキスト番号は、初期状態では、所定の無効な値である。
【０１０５】
（コンテキスト退避）
アクセス制御回路１４０は、割り込みによってコンテキスト情報を退避する要求を受けたときに、拡張バッファ群２５０のバッファ（０）に記憶されているコンテキスト番号が所定の無効な値のとき、または拡張バッファ群２５０のバッファ（０）に記憶されているコンテキスト番号が退避するコンテキスト情報を識別するコンテキスト番号と一致するときに、以下の処理を行なう。
【０１０６】
アクセス制御回路１４０は、バスＢＳ２を通じてＣＰＵ１３０から１サイクルで転送されるコンテキスト情報をバッファ群１５０だけでなく、拡張バッファ群２５０にも出力させる。アクセス制御回路１４０は、コンテキスト情報を識別するコンテキスト番号をバッファ群１５０のバッファ（０）だけでなく、拡張バッファ群２５０のバッファ（０）にも書込む。アクセス制御回路１４０は、バッファ群１５０のバッファ（１）にリンクコンテキスト番号を書き込むが、拡張バッファ群２５０にリンクコンテキスト番号を書き込まない。
【０１０７】
（コンテキスト復帰）
アクセス制御回路１４０は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群２５０のバッファ（０）に記憶されているコンテキスト番号と一致するときに、以下の転送を制御する。すなわち、アクセス制御回路１４０は、拡張バッファ群２５０に記憶されているコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））をバスＢＳ２を通じて、１サイクルでＣＰＵ１３０へ転送する。アクセス制御回路１４０は、拡張バッファ群２５０のバッファ（０）のコンテキスト番号を所定の無効な値で更新する。
【０１０８】
アクセス制御回路１４０は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群２５０のバッファ（０）に記憶されているコンテキスト番号と一致せず、バッファ群１５０のバッファ（０）に記憶されているコンテキスト番号と一致するときに、以下の転送を制御する。すなわち、アクセス制御回路１４０は、バッファ群１５０のバッファ（０）に記憶されているコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））をバスＢＳ２を通じて、１サイクルでＣＰＵ１３０へ転送する。
【０１０９】
アクセス制御回路１４０は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群２５０のバッファ（０）に記憶されているコンテキスト番号と一致せず、バッファ群１５０のバッファ（０）に記憶されているコンテキスト番号と一致しないときに、以下を実行する。アクセス制御回路１４０は、第２の実施形態と同様に、通常のコンテキスト復帰動作を行う。すなわち、アクセス制御回路１４０は、コンテキスト番号と対応させて、ＲＡＭ１６０に記憶されているコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））およびリンクコンテキスト番号を含むデータを複数サイクルで内部バスＢＳ４を通じてバッファ群１５０へ転送する。アクセス制御回路１４０は、その後、バッファ群１５０の転送されたコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））をバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ転送する。
【０１１０】
アクセス制御回路１４０は、復帰するコンテキスト情報を識別するコンテキスト番号がいずれであるかに係らず、コンテキスト番号に対応させてＲＡＭ１６０に記憶されているサブコンテキスト情報（０）をバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ転送する。
【０１１１】
図１８は、第３の実施形態のコンテキスト退避および復帰時における動作タイミングを説明するための図である。
【０１１２】
図１８で示される動作が、図１７で示される動作と相違する点について説明する。
割り込み（１）が発生したときに、図１７の実施形態と同様に、バッファ群１５０のバッファ（０）にコンテキスト番号（＝「１」）が保持され、バッファ（１）〜バッファ（ｎ−１）にサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持される。ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）に対応するアドレスを起点するブロックにタスク（１）のサブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）が保持される。
【０１１３】
プログラムを起動後、最初の割り込み（１）が発生したときに、アクセス制御回路１４０は、バスＢＳ１を通じて送られてきたコンテキスト番号ＣＴＸ＿ＩＤ（＝１）をバッファ群１５０のバッファ（０）に書き込むだけでなく、拡張バッファ群２５０のバッファ（０）に書き込む。
【０１１４】
アクセス制御回路１４０は、第２の実施形態と同様に、バッファ群１５０のバッファ（１）にリンクコンテキスト番号を書き込む。アクセス制御回路１４０は、バスＢＳ２を通じて送られてきたサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバッファ群１５０のバッファ（１）〜バッファ（ｎ−１）に書き込むだけでなく、拡張バッファ群２５０のバッファ（１）〜バッファ（ｎ−１）に書き込む。
【０１１５】
復帰（１）が発生した場合に、ＣＰＵ１３０は、バスＢＳ１を通じてコンテキスト番号ＣＴＸ＿ＩＤ（＝「１」）を出力する。アクセス制御回路１４０は、ＲＡＭ１６０内のコンテキスト番号ＣＴＸ＿ＩＤに対応するアドレスを起点とするブロックに保持されたタスク（１）のサブコンテキスト情報（０）をバスＢＳ３を通じて、ＣＰＵ１３０へ出力させる。同時にアクセス制御回路１４０は、バスＢＳ２を通じて、拡張バッファ群２５０に保持されているバッファ（１）〜バッファ（ｎ−１）に保持されているタスク（１）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）をバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力させる。拡張バッファ群２５０に復帰するタスク（１）のサブコンテキスト情報（１）〜サブコンテキスト情報（ｎ−１）が保持されているので、１サイクルでタスク（１）のすべてのサブコンテキスト情報（０）〜サブコンテキスト情報（ｎ−１）がメモリモジュールからＣＰＵ１３０へ転送される。
【０１１６】
（プリフェッチ）
アクセス制御回路１４０は、復帰後のプリフェッチにおいて、バッファ群１５０のバッファ（１）のリンクコンテキスト番号が拡張バッファ群２５０のバッファ（０）のコンテキスト番号と一致するときに、ＲＡＭ１６０からバッファ群１５０へコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））およびリンクコンテキスト番号を含むデータの転送を実行しない。
【０１１７】
アクセス制御回路１４０は、バッファ群１５０のバッファ（１）のリンクコンテキスト番号が拡張バッファ群２５０のバッファ（０）のコンテキスト番号と不一致のときに、ＲＡＭ１６０に記憶されているコンテキスト情報（サブコンテキスト情報（１）〜（ｎ−１））およびリンクコンテキスト番号を含むデータを内部バスＢＳ４を通じて複数サイクルでバッファ群１５０へ転送する。
【０１１８】
以上のように、本実施の形態によれば、図１２に示されるような多重割込みが発生した場合に、最初の復帰（１）において、最先の割り込み時に実行を停止したタスクに復帰する場合に、ＲＡＭからではなく、拡張バッファ群からサブコンテキスト情報（１）〜（ｎ−１）をＣＰＵに転送することができる。これによって、タスクの復帰時間を短くすることができる。
【０１１９】
［第４の実施形態］
第３の実施形態では、図１２で示す復帰（１）によってタスク（１）に復帰する場合に拡張バッファ群２５０からタスク（１）のコンテキスト情報をＣＰＵ１３０へ転送することができた。
【０１２０】
しかしながら、図１２に示す復帰（１）によって、タスク（２）に復帰する場合に、ＲＡＭ１６０からタスク（２）のコンテキスト情報の読出しが必要となり、復帰のために時間を要する。
【０１２１】
本実施の形態では、図１２に示す復帰（１）によって、タスク（２）に復帰する場合に、復帰のための時間を第２および第３の実施形態よりも低減する。
【０１２２】
本実施の形態では、バッファ群１５０には、複数のタスクのコンテキスト番号およびコンテキスト情報が保持される。プリフェッチによって、優先度の高いタスクに対して大きな記憶領域が割り当てられる。復帰する可能性が高いタスクほど、高い優先度が割り当てられる。
【０１２３】
バッファ群１５０は、複数の割り込みの各々に対して、コンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時に転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される。
【０１２４】
図１９は、第４の実施形態におけるＲＡＭ１６０およびバッファ群１５０に格納される情報を表わす図である。
【０１２５】
ＲＡＭ１６０には、タスク（１）〜タスク（３）の情報が記憶されている。ＲＡＭ１６０には、タスク（ｉ）のコンテキスト番号（＝ｉ）に対応するアドレスで示されるブロックに、タスク（ｉ）のサブコンテキスト情報（０）〜（３）およびリンクコンテキスト番号が記憶されている。ｉ＝１〜４である。
【０１２６】
アクセス制御回路１４０は、プリフェッチにおいて、バッファ群１５０の最も優先度の高いタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、ＲＡＭ１６０に記憶されている複数のタスクについてのコンテキスト情報の一部または全部とリンクコンテキスト番号とを含むデータを内部バスＢＳ４を通じてバッファ群１５０へ転送する。
【０１２７】
優先度の高い順に、タスク（３）、タスク（２）、タスク（１）とする。プリフェッチによって、タスク（３）のデータが４個のバッファに格納され、タスク（２）のデータが３個のバッファに格納され、タスク（１）のデータが２個のバッファに格納される。
【０１２８】
バッファ（０）に、コンテキスト番号（＝「３」）が保持される。バッファ（１）に、タスク（３）のリンクコンテキスト番号（＝「２」）とタスク（３）のサブコンテキスト情報（１）がＲＡＭ１６０から転送される。バッファ（２）に、タスク（３）のサブコンテキスト情報（２）がＲＡＭ１６０から転送される。バッファ（３）に、タスク（３）のサブコンテキスト情報（３）がＲＡＭ１６０から転送される。
【０１２９】
バッファ（４）に、コンテキスト番号（＝「２」）が保持される。バッファ（５）に、タスク（２）のリンクコンテキスト番号（＝「１」）とタスク（２）のサブコンテキスト情報（１）がＲＡＭ１６０から転送される。バッファ（６）に、タスク（２）のサブコンテキスト情報（２）がＲＡＭ１６０から転送される。
【０１３０】
バッファ（７）に、コンテキスト番号（＝「１」）が保持される、バッファ（８）に、タスク（１）のリンクコンテキスト番号（＝「１」）とタスク（１）のサブコンテキスト情報（１）がＲＡＭ１６０から転送される。
【０１３１】
図２０は、第４の実施形態のコンテキスト復帰時の動作タイミングの第１例を表わす図である。
【０１３２】
ＣＰＵ１３０から送られるコンテキスト番号ＣＴＸ＿ＩＤが「４」である。バッファ群１５０にコンテキスト番号（＝「４」）のコンテキスト情報が保持されていないので、ＲＡＭ１６０からコンテキスト番号（＝「４」）のサブコンテキスト情報（３）、（２）、（１）およびリンクコンテキスト番号が内部バスＢＳ４を通じて、順次バッファ群１５０へ出力される。ＲＡＭ１６０からコンテキスト情報（０）がバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ出力されるとともに、バッファ群１５０のサブコンテキスト情報（３）、（２）、（１）がバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力される。
【０１３３】
図２１は、第４の実施形態のコンテキスト復帰時の動作タイミングの第２例を表わす図である。
【０１３４】
ＣＰＵ１３０から送られるコンテキスト番号ＣＴＸ＿ＩＤが「３」である。バッファ群１５０にコンテキスト番号（＝「３」）のリンクコンテキスト番号と、サブコンテキスト情報（１）、（２）、（３）が保持されているので、ＲＡＭ１６０からサブコンテキスト情報（０）がバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ出力される。さらに、バッファ群１５０のサブコンテキスト情報（３）、（２）、（１）がバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力される。
【０１３５】
図２２は、第４の実施形態のコンテキスト復帰時の動作タイミングの第３例を表わす図である。
【０１３６】
ＣＰＵ１３０から送られるコンテキスト番号ＣＴＸ＿ＩＤが「２」である。バッファ群１５０にコンテキスト番号（＝「２」）のリンクコンテキスト番号と、サブコンテキスト情報（１）、（２）が保持されている。ＲＡＭ１６０からコンテキスト番号（＝「３」）のサブコンテキスト情報（３）が内部バスＢＳ４を通じて１サイクルでバッファ群１５０へ出力される。ＲＡＭ１６０からサブコンテキスト情報（０）がバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ出力されるとともに、バッファ群１５０のサブコンテキスト情報（３）、（２）、（１）がバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力される。
【０１３７】
図２３は、第４の実施形態のコンテキスト復帰時の動作タイミングの第４例を表わす図である。
【０１３８】
ＣＰＵ１３０から送られるコンテキスト番号ＣＴＸ＿ＩＤが「１」である。バッファ群１５０にコンテキスト番号（＝「１」）のリンクコンテキスト番号と、サブコンテキスト情報（１）が保持されている。ＲＡＭ１６０からコンテキスト番号（＝「３」）のサブコンテキスト情報（３）、（２）が内部バスＢＳ４を通じて２サイクルでバッファ群１５０へ出力される。ＲＡＭ１６０からサブコンテキスト情報（０）がバスＢＳ３を通じて１サイクルでＣＰＵ１３０へ出力されるとともに、バッファ群１５０のサブコンテキスト情報（３）、（２）、（１）がバスＢＳ２を通じて１サイクルでＣＰＵ１３０へ出力される。
【０１３９】
以上のように、本実施の形態によれば、プリフェッチによって、復帰する可能性が高いタスクほど、多くのサブコンテキスト情報をバッファ群に転送しておくことによって、復帰する時間を短くできる可能性を高くすることができる。
【０１４０】
［第５の実施形態］
バッファ群１５０は、複数の割り込みの各々に対して、コンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、１つ前の割り込み時にＣＰＵ１３０から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される。
【０１４１】
バッファ群１５０は、バッファ（１−０）、バッファ（１−１）、バッファ（１−２）、バッファ（１−３）、バッファ（２−０）、バッファ（２−１）、バッファ（２−２）、バッファ（３−０）、およびバッファ（３−１）を含む。
【０１４２】
バッファ（１−０）〜（１−３）には、第１のタスクのコンテキストデータが格納され、バッファ（２−０）〜（２−２）には、第２のタスクのコンテキストデータが格納され、バッファ（３−０）〜（３−１）には、第３のタスクのコンテキストデータが格納される。
【０１４３】
（コンテキスト退避）
アクセス制御回路１４０は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、ＣＰＵ１３０から１サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にＣＰＵ１３０から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなる最新のコンテキストデータを記憶する領域の大きさを特定する。アクセス制御回路１４０は、特定した領域の大きさがバッファ群１５０に存在するかどうかを調べる。アクセス制御部は、記憶する領域が存在しない場合に、記憶する領域を作るために、バッファ群１５０に記憶されているいずれかのコンテキストデータを構成するコンテンツ情報およびリンクコンテキスト番号とからなるデータをバッファ群１５０から削除する。その後、アクセス制御回路１４０は、最新のコンテキストデータをバッファ群１５０に書込む。アクセス制御回路は、バッファ群１５０に書込まれた最新のコンテキストデータを構成するコンテキスト情報とリンクコンテキスト番号とからなるデータを１または複数のサイクルで内部バスＢＳ４を通じてＲＡＭ１６０に転送する。
【０１４４】
以下の説明では、１つのタスクのコンテキスト情報は、ＣＰＵ１３０から直接ＲＡＭ１６０へ転送されるサブコンテキスト情報（０）と、ＣＰＵ１３０からバッファ群１５０に転送されるサブコンテキスト情報（１）〜（３）に分割されるものとする。
【０１４５】
図２４は、第５の実施形態のコンテキスト退避時におけるバッファ制御を説明するための図である。
【０１４６】
アクセス制御回路１４０は、バッファ（１−０）、（２−０）、（３−０）に保持されているコンテキスト番号が、退避するコンテキスト情報を識別するコンテキスト番号と一致する場合に、保持されている一致したコンテキスト番号を所定の無効な値に変更する。
【０１４７】
アクセス制御回路１４０は、以下のようにしてバッファ群１５０のデータを右へシフトさせる。
【０１４８】
アクセス制御回路１４０は、バッファ（３−０）、（３−１）のデータを破棄し、バッファ（２−０）、（２−１）のデータをバッファ（３−０）、（３−１）へ転送し、バッファ（２−２）のデータを破棄する。アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）のデータをバッファ（２−０）、（２−１）、（２−２）へ転送し、バッファ（１−３）のデータを破棄する。アクセス制御回路１４０は、ＣＰＵ１３０からのデータをバッファ（１−０）、（１−１）、（１−２）、（１−３）へ転送する。アクセス制御回路１４０は、バッファ（１−１）、（１−２）、（１−３）のデータを１または複数のサイクルでＲＡＭ１６０に転送する。バッファ（１−１）とバッファ（１−２）とバッファ（１−３）のサイズの和が、内部バスＢＳ４の幅である（Ｍ＋α）ビット以下の場合には、バッファ（１−１）、（１−２）、（１−３）のデータは１サイクルでＲＡＭ１６０へ転送される。バッファ（１−１）とバッファ（１−２）とバッファ（１−３）のサイズの和が、内部バスＢＳ４の幅である（Ｍ＋α）ビットを超える場合には、バッファ（１−１）、（１−２）、（１−３）のデータは複数サイクルでＲＡＭ１６０へ転送される。
【０１４９】
図２５（ａ）は、図１２に示す割り込み（１）が発生したときに、コンテキスト退避によって、バッファ群１５０に格納されるデータを表わす図である。
【０１５０】
割り込み（１）が発生したときに、アクセス制御回路１４０は、バッファ（１−０）にコンテキスト番号（＝１）を書き込む。アクセス制御回路１４０は、バッファ（１−１）、（１−２）、（１−３）にタスク（１）のリンクコンテキスト番号とサブコンテキスト情報（１）〜（３）を書き込む。アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）、（１−３）のデータを１または複数のサイクルで内部バスＢＳを通じてＲＡＭ１６０に転送する。
【０１５１】
図２５（ｂ）は、割り込み（２）が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
【０１５２】
割り込み（２）が発生したときに、アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）に保持されたタスク（１）のコンテキスト番号（＝１）、リンクコンテキスト番号およびサブコンテキスト情報（１）、（２）をバッファ（２−０）、（２−１）、（２−２）に転送する（右へシフト）。バッファ（１−３）に保持されているタスク（１）のサブコンテキスト情報（３）は破棄される。アクセス制御回路１４０は、バッファ（１−０）にコンテキスト番号（＝２）を書き込む。アクセス制御回路１４０は、バッファ（１−１）、（１−２）、（１−３）にタスク（２）のリンクコンテキスト番号、およびサブコンテキスト情報（１）〜（３）を書き込む。アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）、（１−３）のデータを１または複数のサイクルで内部バスＢＳ４を通じてＲＡＭ１６０に転送する。
【０１５３】
図２５（ｃ）は、割り込み（３）が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
【０１５４】
割り込み（３）が発生したときに、アクセス制御回路１４０は、バッファ（２−０）、（２−１）に保持されたタスク（１）のコンテキスト番号（＝１）、リンクコンテキスト番号およびサブコンテキスト情報（１）をバッファ（３−０）、（３−１）に転送する（右へシフト）。バッファ（２−２）に保持されているタスク（１）のサブコンテキスト情報（２）は破棄される。
【０１５５】
アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）に保持されたタスク（２）のコンテキスト番号（＝２）、リンクコンテキスト番号およびサブコンテキスト情報（１）、（２）をバッファ（２−０）、（２−１）、（２−２）に転送する（右へシフト）。バッファ（１−３）に保持されているタスク（２）のコンテキスト情報（３）は破棄される。
【０１５６】
アクセス制御回路１４０は、バッファ（１−０）にコンテキスト番号（＝３）を書き込む。アクセス制御回路１４０は、バッファ（１−１）、（１−２）、（１−３）にタスク（３）のリンクコンテキスト番号、およびサブコンテキスト情報（１）〜（３）を書き込む。アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）、（１−３）のデータを１または複数のサイクルで内部バスＢＳ４を通じてＲＡＭ１６０に転送する。
【０１５７】
図２５（ｄ）は、割り込み（４）が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
【０１５８】
割り込み（４）が発生したときに、アクセス制御回路１４０は、バッファ（３−０）に保持されたタスク（１）のコンテキスト番号（＝１）を消去し、バッファ（３−１）に保持されたリンクコンテキスト番号およびサブコンテキスト情報（１）をＲＡＭ１６０に転送する。
【０１５９】
アクセス制御回路１４０は、バッファ（２−０）、（２−１）に保持されたタスク（１）のコンテキスト番号（＝２）、リンクコンテキスト番号およびサブコンテキスト情報（１）をバッファ（３−０）、（３−１）に転送する（右へシフト）。バッファ（２−２）に保持されているタスク（１）のコンテキスト情報（２）は破棄される。
【０１６０】
アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）に保持されたタスク（３）のコンテキスト番号（＝３）、リンクコンテキスト番号およびサブコンテキスト情報（１）、（２）をバッファ（２−０）、（２−１）、（２−２）に転送する（右へシフト）。バッファ（１−３）に保持されているタスク（３）のコンテキスト情報（３）は破棄される。
【０１６１】
アクセス制御回路１４０は、バッファ（１−０）にコンテキスト番号（＝４）を書き込む。アクセス制御回路１４０は、バッファ（１−１）、（１−２）、（１−３）にタスク（４）のリンクコンテキスト番号およびサブコンテキスト情報（１）〜（３）を書き込む。アクセス制御回路１４０は、バッファ（１−０）、（１−１）、（１−２）、（１−３）のデータを１または複数のサイクルで内部バスＢＳ４を通じてＲＡＭ１６０に転送する。
【０１６２】
（コンテキスト復帰）
アクセス制御回路１４０は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、バッファ群１５０に記憶されているコンテキスト番号のいずれかと一致するときに、以下を実行する。アクセス制御回路１４０は、バッファ群１５０に記憶されている復帰するコンテキスト情報をＣＰＵ１３０へ転送するとともに、バッファ群１５０に記憶されている復帰するコンテキスト情報よりも後に書込まれたコンテキストデータをバッファ群１５０から削除する。
【０１６３】
図２６は、第５の実施形態のコンテキスト復帰時におけるバッファ制御を説明するための図である。図２７は、第５の実施形態のコンテキスト復帰の処理手順を表わすフローチャートである。
【０１６４】
ステップＳ１０１において、アクセス制御回路１４０にバスＢＳ１を通じて転送されたコンテキスト番号がバッファ（１−０）に保持されているコンテキスト番号と一致するときに、処理がステップＳ１１７に進む。
【０１６５】
ステップＳ１０２において、アクセス制御回路１４０にバスＢＳ１を通じて転送されたコンテキスト番号がバッファ（２−０）に保持されているコンテキスト番号と一致するときに、処理がステップＳ１０４に進む。
【０１６６】
ステップＳ１０３において、アクセス制御回路１４０にバスＢＳ１を通じて転送されたコンテキスト番号がバッファ（３−０）に保持されているコンテキスト番号と一致するときに、処理がステップＳ１０７に進む。
【０１６７】
アクセス制御回路１４０にバスＢＳ１を通じて転送されたコンテキスト番号がバッファ（１−０）、バッファ（２−０）またはバッファ（３−０）に保持されているコンテキスト番号のいずれとも一致しないときに、処理がステップＳ１１１に進む。
【０１６８】
ステップＳ１０４において、アクセス制御回路１４０は、バッファ（２−０）〜（２−２）のデータを左へシフトさせる。これによって、バッファ（２−０）〜（２−２）のコンテキストデータよりも後に書込まれたバッファ（１−０）〜（１−２）のコンテキストデータは、削除されて、バッファ（２−０）〜（２−２）のコンテキストデータに置き換えられる。
【０１６９】
ステップＳ１０５において、アクセス制御回路１４０は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報（３）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（１−３）へ転送させる。
【０１７０】
ステップＳ１０７において、アクセス制御回路１４０は、バッファ（３−０）〜（３−１）のデータを左へシフトさせる。これによって、バッファ（３−０）〜（３−１）のコンテキストデータよりも後に書込まれたバッファ（２−０）〜（２−１）のコンテキストデータは、削除されて、バッファ（３−０）〜（３−１）のコンテキストデータに置き換えられる。
【０１７１】
ステップＳ１０８において、アクセス制御回路１４０は、転送されてきたコンテキスト番号のサブコンテキスト情報（２）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（２−２）へ転送させる。
【０１７２】
ステップＳ１０９において、アクセス制御回路１４０は、バッファ（２−０）〜（２−２）のデータを左へシフトさせる。これによって、バッファ（２−０）〜（２−２）のコンテキストデータよりも後に書込まれたバッファ（１−０）〜（１−２）のコンテキストデータは、削除されて、バッファ（２−０）〜（２−２）のコンテキストデータに置き換えられる。
【０１７３】
ステップＳ１１０において、アクセス制御回路１４０は、転送されてきたコンテキスト番号のサブコンテキスト情報（３）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（１−３）へ転送させる。
【０１７４】
ステップＳ１１１において、アクセス制御回路１４０は、バッファ（３−０）のコンテキスト番号を転送されてきたコンテキスト番号に置き換える。
【０１７５】
ステップＳ１１２において、アクセス制御回路１４０は、転送されてきたコンテキスト番号に対応するリンクコンテキスト番号およびサブコンテキスト情報（１）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（３−１）へ転送する。
【０１７６】
ステップＳ１１３において、アクセス制御回路１４０は、バッファ（３−０）〜（３−１）のデータを左へシフトさせる。これによって、バッファ（３−０）〜（３−１）のコンテキストデータよりも後に書込まれたバッファ（２−０）〜（２−１）のコンテキストデータは、削除されて、バッファ（３−０）〜（３−１）のコンテキストデータに置き換えられる。
【０１７７】
ステップＳ１１４において、アクセス制御回路１４０は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報（２）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（２−２）へ転送させる。
【０１７８】
ステップＳ１１５において、アクセス制御回路１４０は、バッファ（２−０）〜（２−２）のデータを左へシフトさせる。これによって、バッファ（２−０）〜（２−２）のコンテキストデータよりも後に書込まれたバッファ（１−０）〜（１−２）のコンテキストデータは、削除されて、バッファ（２−０）〜（２−２）のコンテキストデータに置き換えられる。
【０１７９】
ステップＳ１１６において、アクセス制御回路１４０は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報（３）をＲＡＭ１６０から内部バスＢＳ４を通じてバッファ（１−３）へ転送させる。
【０１８０】
ステップＳ１１７において、アクセス制御回路１４０は、バッファ（１−１）〜（１−３）のサブコンテキスト情報（１）〜（３）をバスＢＳ２を通じて、１サイクルでＣＰＵ１３０へ転送する。
【０１８１】
（プリフェッチ）
アクセス制御回路１４０は、コンテキスト復帰後のプリフェッチにおいて、コンテキスト復帰によってＣＰＵ１３０へ転送したコンテキスト情報に対応するリンクコンテキスト番号をコンテキスト番号とするタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるようにする。そのために、アクセス制御回路１４０は、ＲＡＭ１６０内の複数のタスクについてのコンテキスト情報の全部および一部とリンクコンテキスト番号とを含むデータを内部バスＢＳ４を通じてバッファ群１５０へ転送する。
【０１８２】
図２８は、第５の実施形態のプリフェッチの処理手順を表わすフローチャートである。
ステップＳ２０１において、バッファ（１−１）に保持されているリンクコンテキスト番号がバッファ（２−０）に保持されているコンテキスト番号と一致するときに、処理がステップＳ２０１に進む。一致しないときに、処理がステップＳ２０２に進む。
【０１８３】
ステップＳ２０６において、バッファ（２−１）に保持されているリンクコンテキスト番号がバッファ（３−０）に保持されているコンテキスト番号と一致するときに、処理がステップＳ２０９に進む。一致しないときに、処理がステップＳ２０７に進む。
【０１８４】
ステップＳ２０２において、アクセス制御回路１４０は、バッファ（２−０）に保持されているコンテキスト番号をバッファ（１−１）に保持されているリンクコンテキスト番号で更新する。
【０１８５】
ステップ２０３において、アクセス制御回路１４０は、更新したバッファ（２−０）に保持されているコンテキスト番号に対応して、ＲＡＭ１６０に記憶されているリンクコンテキスト番号およびサブコンテキスト情報（１）、（２）をバッファ（２−１）、バッファ（２−２）に転送する。
【０１８６】
ステップＳ２０４において、アクセス制御回路１４０は、バッファ（３−０）に保持されているコンテキスト番号をバッファ（２−１）に保持されているリンクコンテキスト番号で更新する。
【０１８７】
ステップ２０６において、アクセス制御回路１４０は、更新したバッファ（３−０）に保持されているコンテキスト番号に対応して、ＲＡＭ１６０に記憶されているリンクコンテキスト番号およびサブコンテキスト情報（１）をバッファ（３−１）に転送する。
【０１８８】
ステップＳ２０７において、アクセス制御回路１４０は、バッファ（３−０）に保持されているコンテキスト番号をバッファ（２−１）に保持されているリンクコンテキスト番号で更新する。
【０１８９】
ステップ２０８において、アクセス制御回路１４０は、更新したバッファ（３−０）に保持されているコンテキスト番号に対応して、ＲＡＭ１６０に記憶されているリンクコンテキスト番号およびサブコンテキスト情報（１）をバッファ（３−１）に転送する。
【０１９０】
ステップＳ２０５およびＳ２０８の後、ステップＳ２０９が実行される。
ステップＳ２０９において、アクセス制御回路１４０は、バッファ（２−０）〜（２−２）のデータを左へシフトしてバッファ（１−０）〜（１−２）へ転送する。アクセス制御回路１４０は、バッファ（１−０）へ転送されたコンテキスト番号に対応するサブコンテキスト情報（３）をＲＡＭ１６０からバッファ（１−３）に転送する。
【０１９１】
ステップＳ２１０において、アクセス制御回路１４０は、バッファ（３−０）〜（３−１）のデータを左へシフトしてバッファ（２−０）〜（２−１）へ転送する。アクセス制御回路１４０は、バッファ（２−０）へ転送されたコンテキスト番号に対応するサブコンテキスト情報（２）をＲＡＭ１６０からバッファ（２−２）に転送する。
【０１９２】
ステップＳ２１１において、アクセス制御回路１４０は、バッファ（３−０）のコンテキスト番号をバッファ（２−１）のリンクコンテキスト番号で更新する。
【０１９３】
ステップＳ２１２において、アクセス制御回路１４０は、更新したバッファ（３−０）に保持されているコンテキスト番号に対応して、ＲＡＭ１６０に記憶されているリンクコンテキスト番号およびサブコンテキスト情報（１）をバッファ（３−１）に転送する。
【０１９４】
以上のように、本実施の形態によれば、多重割込みが発生した場合に、新しく（後のタイミングで）実行を停止した高いタスクほど、多くのサブコンテキスト情報をバッファ群に記憶させることによって、復帰する時間を短くできる可能性を高くすることができる。
【０１９５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１９６】
１００  半導体装置、１１０，２１０，１０００  メモリモジュール、１２０  割り込み制御回路、１３０，１１３０  ＣＰＵ、１４０，１１４０  アクセス制御回路、１５０  バッファ群、１６０  ＲＡＭ，２５０  拡張バッファ群、１１５０  第１の記憶部、１１６０  第２の記憶部、ＢＳ１，ＢＳ２，ＢＳ３，ＢＳ４  バス。
【図１】
2019219984.tif 000003
【図２】
2019219984.tif 000004
【図３】
2019219984.tif 000005
【図４】
2019219984.tif 000006
【図５】
2019219984.tif 000007
【図６】
2019219984.tif 000008
【図７】
2019219984.tif 000009
【図８】
2019219984.tif 000010
【図９】
2019219984.tif 000011
【図１０】
2019219984.tif 000012
【図１１】
2019219984.tif 000013
【図１２】
2019219984.tif 000014
【図１３】
2019219984.tif 000015
【図１４】
2019219984.tif 000016
【図１５】
2019219984.tif 000017
【図１６】
2019219984.tif 000018
【図１７】
2019219984.tif 000019
【図１８】
2019219984.tif 000020
【図１９】
2019219984.tif 000021
【図２０】
2019219984.tif 000022
【図２１】
2019219984.tif 000023
【図２２】
2019219984.tif 000024
【図２３】
2019219984.tif 000025
【図２４】
2019219984.tif 000026
【図２５】
2019219984.tif 000027
【図２６】
2019219984.tif 000028
【図２７】
2019219984.tif 000029
【図２８】
2019219984.tif 000030