(57)【特許請求の範囲】
【請求項１】
複数のタスクを実行するＣＰＵコア（２）と、
前記複数のタスクの一部に対応する複数のコンテキストが格納され、前記コンテキストを外部メモリ（６，２３）との間で退避，復帰させるためのレジスタバンク（７）と、
外部イベント及び／又は内部イベントの発生に応じて、前記ＣＰＵコア（２）に実行させるタスクの切り替え指示を出力するスケジューラ（１３，３３）とを備え、
前記コンテキストには、当該コンテキストに対応するタスクが実行されることに関連して、以降に実行される可能性が高いと推定される他のタスクに対応する１つ以上のコンテキストの、前記外部メモリ（６，２３）上の先頭アドレスを示すリンクコンテキスト情報が含まれており、
前記ＣＰＵコア（２）が、前記切り替え指示に応じて前記複数のレジスタバンク（７）の１つに格納されているコンテキストの実行を開始すると、前記コンテキストに付随するリンクコンテキスト情報で示される他のコンテキストを、前記レジスタバンク（７）に格納するレジスタバンク制御手段（９）を備えることを特徴とするデータ処理装置。
【請求項２】
前記外部メモリ（２３）は、前記ＣＰＵコア（２）が直接アクセスするメモリ（２２）とは別個に設けられており、
前記レジスタバンク（７）と前記外部メモリ（２３）との間で、前記コンテキストの退避処理及び復帰処理を行うための専用のアドレスバス及びデータバス（１０）を備えることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記スケジューラ（３３）が直接指示して、前記外部メモリ（６）から読み出したコンテキストを格納するためのリアルタイムスケジューリング用のリアルタイムレジスタバンク（３２）を別途備えることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記スケジューラが（３３）、前記リアルタイムレジスタバンク（３２）にコンテキストを格納する対象のタスクと、
前記レジスタバンク制御手段（９）により前記リンクコンテキスト情報として扱われるコンテキストのタスクとを、分離したことを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記リンクコンテキスト情報として、前記レジスタバンク（７）に現在格納されており、実行される可能性が高いリンクコンテキストをそのまま保持するための指示子,又はリンクコンテキストの「指定なし」を意味する指示子を、前記実行される可能性が高いリンクコンテキストの先頭アドレスに替えて格納することを特徴とする請求項１ないし４の何れかに記載のデータ処理装置。
【請求項６】
前記リンクコンテキスト情報を、前記ＣＰＵコア（２）が実行するプログラムが記憶されているプログラムメモリ（５）の各タスクに対応した例外ベクタ領域に配置し、
前記例外ベクタ領域には、各タスクに対応したリンクコンテキスト情報の先頭アドレスと、各タスクの実行開始アドレスとを示すベクタがそれぞれ配置されており、
タスクの実行開始に伴い当該タスクに対応する前記リンクコンテキスト情報を、最初に取得する際には、前記ＣＰＵコア（２）が前記例外ベクタ領域より、対応するタスクのベクタを取得することを特徴とする請求項１ないし５の何れかに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを実行するＣＰＵコアが、コンテキストスイッチを行うために使用するレジスタバンクを備えてなるデータ処理装置に関する。
【背景技術】
【０００２】
ＣＰＵが複数のタスクを切り替えながら実行する場合には、それぞれのタスクにおける処理中の状態を示すプログラムカウンタの値やアドレス，データ，ステータ等の各スレジスタの値であるコンテキストを一旦メモリ等に退避させる必要がある。そして、次に実行するタスクのコンテキストを各レジスタ等に復帰させてから前記タスクを実行する、所謂コンテキストスイッチを行う。
【０００３】
コンテキストスイッチを高速に実行するために、複数のコンテキストを退避させるレジスタバンクを備えるものがある。しかし、実行するタスクの数がレジスタバンクの数を上回る場合には、レジスタバンクと外部のメモリ間とでコンテキストの退避処理，復帰処理を行う必要があり、その処理に要するオーバーヘッドが高速化の課題となる。
【０００４】
例えば特許文献１には、レジスタの値を保存するキャッシュレジスタと、キャッシュレジスタ（レジスタバンクに相当）のデータを退避させるキャッシュメモリとを備え、ＣＰＵがキャッシュメモリにアクセスしていない期間を利用して、キャッシュレジスタのデータをキャッシュメモリに退避させるコンテキスト切り替えシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１７５６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のような従来技術では、レジスタバンクに復帰されるのは実行可能状態のタスクに対応したコンテキストであり、現在は実行対象ではないが、例えばイベントが発生した直後から処理を開始する必要があるタスクについては、高速なコンテキストスイッチを行うことができない。また、従来技術は、ハードウェアスケジューラ（特許文献１ではメモリバスアービタ）によってコンテキストの退避，復帰が行われるため、レジスタバンク間においてデータ転送を高速に実行する技術が使用できない。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的は、現在実行対象となっているタスクのみならず、前記タスクの実行に伴い以降に実行される可能性があるタスクのコンテキストについても高速にスイッチすることができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
請求項１記載のデータ処理装置によれば、コンテキストに、当該コンテキストに対応するタスクが実行されることに関連して、以降に実行される可能性が高いと推定される他のタスクに対応する１つ以上のコンテキストについて、外部メモリ上の先頭アドレスを示すリンクコンテキスト情報を含むようにする。そして、ＣＰＵコアが、スケジューラからの切り替え指示に応じて複数のレジスタバンクの１つに格納されているコンテキストの実行を開始すると、レジスタバンク制御手段は、そのコンテキストに付随するリンクコンテキスト情報で示される他のコンテキストをレジスタバンクに格納する。
【０００９】
このように構成すれば、ＣＰＵコアがあるタスクを実行している途中で、若しくは実行することに伴って発生したイベントにより、他のタスクを実行する必要が生じた場合に、前記他のタスクに対応するコンテキストは、既にその時点で外部メモリから読み出されており、レジスタバンクに格納されている可能性が高くなる。そして、ＣＰＵコアが、前記他のタスクに切り替えて直ちに実行することができれば、総じてマルチタスクの処理速度が高速になる。
また、リンクコンテキスト情報を取り扱うレジスタバンクの制御は、スケジューラとは独立したレジスタバンク制御手段によって行われる。したがって、スケジューラが実行するリアルタイムスケジューリングとは無関係に、レジスタバンク間においてデータ転送を高速に実行することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】第１実施例であり、マイクロコンピュータの構成を要部について示す機能ブロック図
【図２】ＲＡＭに配置されているコンテキストのイメージを示す図
【図３】（ａ）はリンクコンテキスト情報の一例、（ｂ）は（ａ）の情報に基づきＲＡＭより読み出されたコンテキストがレジスタバンクに格納される場合のタイミングチャート
【図４】例外ベクタ領域に配置されるリンクコンテキスト情報と、当該領域からリンクコンテキスト情報をフェッチする制御モジュールのイメージを示す図
【図５】タスクディスパッチ処理を示すフローチャート
【図６】第２実施例を示す図１相当図
【図７】第３実施例を示す図１相当図
【図８】第４実施例を示す図３相当図
【発明を実施するための形態】
【００１１】
（第１実施例）
以下、第１実施例について説明する。マイクロコンピュータ１（データ処理装置）を構成するＣＰＵ２（ＣＰＵコア）は、ＣＰＵメモリバス（アドレス及びデータバス）３及びメモリコントローラ４を介してＲＯＭ５（プログラムメモリ）及びＲＡＭ６（外部メモリ）にアクセスする。ＲＯＭ５には、ＣＰＵ２によって実行されるプログラムやデータが記憶されており，ＲＡＭ６はＣＰＵ２のワークエリアとして使用される。ＣＰＵ２は、前記プログラムに従い複数のタスクを切り換えながら実行するようになっており、所謂マルチタスクＣＰＵである。
【００１２】
また、マイクロコンピュータ１は、複数，例えば４つのレジスタバンク７（１〜４）を備えている。これらのレジスタバンク（スレッド）７には、ＣＰＵ２が実行対象とするタスクを切り換える際に、タスクの実行途中の状態が反映されているプログラムカウンタやステータスレジスタ，汎用レジスタ等の各種レジスタの値であるコンテキストが格納される。ＣＰＵ２が切り換えて実行するタスクの数はレジスタバンク７の数よりも多いため、レジスタバンク７に格納しきれないタスクのコンテキストは、ＲＡＭ６に記憶される。
【００１３】
そして、レジスタバンク７とＲＡＭ６との間におけるコンテキストの入れ換えは、実行コンテキスト情報部８の制御ロジック９（レジスタバンク制御手段）によって行われる。レジスタバンク７及び実行コンテキスト情報部８とＲＡＭ６との間は、コンテキストメモリバス１０及びメモリコントローラ４を介して接続されている。実行コンテキスト情報部８より出力されるアドレスに応じてＲＡＭ６より読み出されたコンテキストは、デマルチプレクサ１１を介してレジスタバンク７（１〜４）の何れかに格納される。したがって、メモリコントローラ４は、ＣＰＵ２がＣＰＵメモリバス３を介して行うアクセスと、実行コンテキスト情報部８がコンテキストメモリバス１０を介して行うアクセスとを調停する。
【００１４】
レジスタバンク７（１〜４）に格納されたコンテキストは、マルチプレクサ１２を介してＣＰＵ２に読み出されるが、上記デマルチプレクサ１１及びマルチプレクサ１２の切り換え制御も、実行コンテキスト情報部８により行われる。尚、レジスタバンク７に格納されたコンテキストを、コンテキストスイッチによりＲＡＭ６に退避させる場合もあるので、デマルチプレクサ１１は、その際にはマルチプレクサとして機能する。
【００１５】
スケジューラ１３は、例えば割り込み等の外部イベントやタスクの実行等に伴い発生する内部イベントに応じて、ＣＰＵ２に実行させるタスクの切り換えを制御するロジックである。スケジューラ１３は、実行コンテキスト情報部８に対して、実行対象とするタスクを選択させる信号を出力する。すると、実行コンテキスト情報部８は、上記タスクに対応するコンテキストが格納されているレジスタバンク７を指定するバンク番号をマルチプレクサ１２に与えて、前記コンテキストを選択させる。
【００１６】
本実施例では、タスクのコンテキストに、リンクコンテキスト情報が含まれている。リンクコンテキスト情報とは、当該コンテキストに対応するタスクが実行されることに関連して、以降に実行される可能性が高いと推定される他のタスクに対応する１つ以上のコンテキストである。図３（ａ）に示すように、コンテキストＡについてのリンクコンテキスト情報はコンテキストＢ，Ｃ，Ｄであり、コンテキストＢについてのリンクコンテキスト情報はコンテキストＣ，Ｄ，Ｈである。また、リンクコンテキスト情報の実態は、指定されているコンテキストが格納されているＲＡＭ６の領域を示す物理アドレス又は仮想アドレスである。
【００１７】
また、図２に示すように、各コンテキストの内容は、プログラムカウンタ（ＰＣ）値，リンクコンテキスト情報（コンテキストＡの場合、上記コンテキストＢ，Ｃ，Ｄに対応），汎用（ＧＰ）レジスタ０〜１５等である。各コンテキストが格納されている領域の先頭アドレスは、スタックポインタによって示される。例えば、スケジューラ１３によりあるタスクの実行が選択された際に、前記タスクのコンテキストがその時点でレジスタバンク７に格納されていなければ、ＲＡＭ６より読み出されてレジスタバンク７に格納される。そして、選択されたタスクがＣＰＵ２によって実行されると、対応するコンテキストに含まれているリンクコンテキスト情報が実行コンテキスト情報部８のリンクコンテキスト情報部１４に格納される。すると、制御ロジック部９により、各リンクコンテキスト情報に対応するＲＡＭアドレスがコンテキストメモリバス１０に順次出力され、読み出されたコンテキストが、デマルチプレクサ１１を介してレジスタバンク７に格納される（詳細は後述する）。
【００１８】
また、図４に示すように、リンクコンテキスト情報は、当初はＲＯＭ５の例外ベクタ領域に配置されており、当該領域から読み出される。その先頭アドレス（０ｘＸＸＸＸ＿ＸＸＸＸ）は、例えば図示しないベクタベースアドレスレジスタによって指定される。尚、図中のベクタ番号はタスクに対応しており、例えばベクタ０のリンクコンテキスト情報はタスク０の情報であり、ベクタ０の分岐命令は、その分岐先にあるタスク０の実行開始アドレスをフェッチするために配置されている。
【００１９】
プログラムフェッチ制御モジュール１５は、ＣＰＵ２の内部ロジックであり、通常はプログラムカウンタ１６のカウンタ値が示すアドレスを、マルチプレクサ１７を介してフェッチする。そして、割り込みイベントが発生すると、その割り込みに対応する処理を開始するため、マルチプレクサ１７をベクタフェッチ側に切り換えてベクタアドレスを出力する。
【００２０】
また、ＲＯＭ５にアクセスしてフェッチしたプログラムの命令又はデータは、デマルチプレクサ１８を介して読み込まれる。フェッチしたデータがリンクコンテキスト情報である場合は、デマルチプレクサ１８により振り分けられ、ＣＰＵ２がそのリンクコンテキスト情報をリンクコンテキスト情報部１４に格納する。デマルチプレクサ１８の切り替え制御は、ベクタをフェッチするアドレスのＬＳＢによって行われる。
【００２１】
次に、本実施例の作用について図３及び図５を参照して説明する。図５は、スケジューラ１３がＣＰＵ２に、実行対象とするタスクをタスクＮに切り替えるように要求した際に、例えばオペレーティングシステム（ＯＳ）によって実行される処理を示す。尚、各タスクの状態は「実行状態」，「実行可能状態」，「待機状態」，「休止状態」の何れかであり、それぞれ以下の状態に対応する。
「実行状態」：タスクがＣＰＵ２によって実行中。
「実行可能状態」：タスクのコンテキストがレジスタバンク７に格納済み。
「待機状態」：タスクのコンテキストがＲＡＭ６に格納済み。
「休止状態」：タスクのコンテキストがＲＡＭ６に未格納。
【００２２】
図５において、先ず、タスクＮのコンテキストが、レジスタバンク７に格納（ロード）済みか否かを判断し（Ｓ１）、格納済みであれば（ＹＥＳ；「実行可能状態」）マルチプレクサ１２により対応するレジスタバンク７を指定するように切り換える（Ｓ２）。すると、ＣＰＵ２は、タスクＮのコンテキストを読み込んで各レジスタ等に対応するレジスタ値等をセットして、タスクＮの実行を開始する（「実行状態」）。すなわち、ＲＯＭ５の例外ベクタ領域よりベクタＮをフェッチして、分岐命令が実行される。
【００２３】
一方、タスクＮのコンテキストがレジスタバンク７に格納済みでなければ（Ｓ１：ＮＯ）、タスクＮが「休止状態」か否かを判断する（Ｓ３）。「休止状態」であれば（ＹＥＳ）、タスクＮのコンテキストをＲＯＭ５の例外ベクタ領域から読み出して（Ｓ５：ベクタフェッチ）ステップＳ２に移行する。また、タスクＮが「休止状態」でなければ（Ｓ３：ＮＯ）、タスクＮのコンテキストはＲＡＭ６に格納済みであるから（「待機状態」）、ＲＡＭ６にアクセスして上記コンテキストをフェッチすると、ステップＳ２に移行する。
【００２４】
図３（ｂ）において、スケジューラ１３により実行対象がタスクＡに切り換えられると、対応するコンテキストＡへの切り換え，すなわちコンテキストスイッチが行われる。タスクＡが「待機状態」であれば、メモリバス１０よりコンテキストＡが読み出され、レジスタバンク７（１）に格納される。すると、ＣＰＵ２は、コンテキストＡを読み出してタスクＡの実行を開始するが、コンテキストＡのリンクコンテキスト情報によりコンテキストＢ，Ｃ，Ｄが指定されている。これらのタスクＢ，Ｃ，Ｄも「待機状態」であれば、メモリバス１０よりコンテキストＢ，Ｃ，Ｄも読み出されてレジスタバンク７（２〜４）に格納される。
【００２５】
タスクＡを実行した結果、次にタスクＢに切り換えて実行することになり、コンテキストＡからコンテキストＢにスイッチする場合、タスクＢは「実行可能状態」である。したがって、レジスタバンク７（２）よりコンテキストＢが読み出され、ＣＰＵ２によって直ちに実行が開始される。コンテキストＢのリンクコンテキスト情報はコンテキストＣ，Ｄ，Ｈであり、前者２つは「実行可能状態」である。コンテキストＨが「待機状態」であればＲＡＭ６から読み出す必要があるが、事前にレジスタバンク７（１）に格納されているコンテキストＡをＲＡＭ６に書き込んで退避させてから（タスクＡは「待機状態」となる）、コンテキストＨを読み出してレジスタバンク７（１）に格納する。
【００２６】
以上のように本実施例によれば、コンテキストに、当該コンテキストに対応するタスクが実行されることに関連して、以降に実行される可能性が高いと推定される他のタスクに対応する１つ以上のコンテキストについて、ＲＡＭ６上の先頭アドレスを示すリンクコンテキスト情報を含むようにする。そして、ＣＰＵ２が、スケジューラ１３からの切り替え指示に応じてレジスタバンク７の１つに格納されているコンテキストの実行を開始すると、実行コンテキスト情報部８は、そのコンテキストに付随するリンクコンテキスト情報で示される他のコンテキストをレジスタバンク７に格納する。
【００２７】
したがって、ＣＰＵ２があるタスクを実行している途中で、若しくは実行することに伴って発生したイベントにより、他のタスクを実行する必要が生じた場合に、前記他のタスクに対応するコンテキストは、既にその時点でＲＡＭ６から読み出されており、レジスタバンク７に格納されている可能性が高くなる。そして、ＣＰＵ２が、前記他のタスクに切り替えて直ちに実行することで、総じてマルチタスクの処理速度を従来よりも高速にすることができる。
【００２８】
そして、リンクコンテキスト情報を取り扱うレジスタバンクの制御は、スケジューラ１３とは独立した実行コンテキスト情報部８によって行われる。したがって、スケジューラ１３が実行するリアルタイムスケジューリングとは無関係に、レジスタバンク７間においてデータ転送を高速に実行することが可能になる。
また、リンクコンテキスト情報を、ＣＰＵ２が実行するプログラムが記憶されているＲＯＭ５の例外ベクタ領域に配置し、リンクコンテキスト情報を、最初に取得する際には、ＣＰＵ２が対応するタスクのベクタにフェッチを行って取得するようにした。これにより、ＣＰＵメモリバス３を介してリンクコンテキスト情報を取得できるので、専用のバスを別途設ける必要がない。
【００２９】
（第２実施例）
以下、第１実施例と同一部分には同一符号を付して説明を省略し、異なる部分のみ説明する。第１実施例では１つのＲＡＭ６を用いたが、第２実施例のマイクロコンピュータ２１は、２つのＲＡＭ２２及び２３を設ける。そして、前者のＲＡＭ２２はＣＰＵ２のワークエリアとしてのみ使用し、後者のＲＡＭ２３（外部メモリ）は、レジスタバンク７との間でコンテキストを退避，復帰させるためだけに使用する。そのため、メモリコントローラも、ＣＰＵメモリバス３側のメモリコントローラ２４と、コンテキストメモリバス１０側のメモリコントローラ２５との２つをそれぞれ専用に設けている。
【００３０】
以上のように構成される第２実施例によれば、ＲＡＭ２３をＲＡＭ２２と別個に設け、コンテキストメモリバス１０を、レジスタバンク７とＲＡＭ２３との間で、コンテキストの退避処理及び復帰処理を行うための専用のバスとした。したがって、コンテキストメモリバス１０を、上記退避処理及び復帰処理を行うのに適した設計にできる。例えば１つのコンテキストが２５６ビットであれば、データバスを２５６ビット幅として、１バスサイクルのみでＲＡＭ２３にロード，ストアすることが可能となる。
【００３１】
（第３実施例）
第３実施例のマイクロコンピュータ３１は、レジスタバンク７（図７では、リンクレジスタバンク）と別個に、４つのリアルタイムレジスタバンク３２を備えている。リアルタイムレジスタバンク３２は、実行コンテキスト情報部８によっては制御されず、スケジューラ１３に替わるスケジューラ３３によって制御される。スケジューラ３３は、リンクコンテキスト情報に基づくコンテキストの管理とは別個に、リアルタイムスケジューリングにより必要と判断されたタスクのコンテキストを直接指定して、コンテキストメモリバス１０より読み出す。そのため、コンテキストメモリバス１０を介したＲＡＭ６へのアクセスアドレスは、実行コンテキスト情報部８が出力するアドレスと、スケジューラ３３が出力するアドレスとがマルチプレクサ３４を介して出力される。
【００３２】
リアルタイムレジスタバンク３２を増設したことに伴い、デマルチプレクサ１１，マルチプレクサ１２は、それぞれデマルチプレクサ３５，マルチプレクサ３６に置き換えられている。デマルチプレクサ３５の切り替えは、上記ＲＡＭ６へのアクセスアドレスを、実行コンテキスト情報部８，スケジューラ３３の何れが出力したかに従って行われる。一方、マルチプレクサ３６の切り替えは、第１実施例と同様に、スケジューラ３３が指定したタスクに応じて実行コンテキスト情報部８により行われる。
【００３３】
また、このように構成した場合、実行コンテキスト情報部８とスケジューラ３３とのそれぞれが制御対象とするタスク群を分離するのがタスク管理上好ましい。例えばタイマ割り込み処理のように、一定周期で実行されるタスクは実行コンテキスト情報部８で扱い、その他の例えば外部からの割り込み処理のように非同期的に実行されるタスクは、スケジューラ３３によるリアルタイムスケジューリングで取り扱うのが適している。
【００３４】
以上のように第３実施例によれば、スケジューラ３３が直接指示して、ＲＡＭ６から読み出したコンテキストを格納するためのリアルタイムスケジューリング用のリアルタイムレジスタバンク３２を別途備える。そして、スケジューラ３３が、リアルタイムレジスタバンク３２にコンテキストを格納する対象のタスクの種類と、リンクコンテキスト情報として扱うコンテキストのタスクとを、分離する。
これにより、現在はレジスタバンク７に格納されていないが、スケジューラ３３がリアルタイムスケジューリングを行うことで、例えば割り込み処理が発生する確率が高いと判断したような場合に、対応するタスクのコンテキストを予めリアルタイムレジスタバンク３２に格納しておく。すると、実際に割り込みが発生した際に、その処理を迅速に実行できる。
【００３５】
（第４実施例）
第４実施例は、図８（ａ）に示すように、例えばコンテキストＢのリンクコンテキスト情報で指定すべきコンテキストがＣ，Ｄの２つのみである場合に、残りの１つを例えば「ＨＯＬＤ」というように、既にレジスタバンク７に格納されているコンテキストを保持するための指示子を指定可能とする。尚、この指示子は、実際には特定の数値を割り当てるようにする。このように指定すると、図８（ｂ）において、コンテキストＡからＢにスイッチした際に、リンクコンテキストは全て「実行可能状態」であるから、ＲＡＭ６との間でコンテキストの退避や復帰を行う必要が無くなる。尚、指示子「ＨＯＬＤ」に替えて、例えばリンクコンテキストの「指定なし」を意味する「Ｎ／Ａ」等の指示子を指定可能としても良い。
【００３６】
以上のように第４実施例によれば、リンクコンテキスト情報において、レジスタバンク７に現在格納されており、実行される可能性が高いリンクコンテキストをそのまま保持するための指示子,又はリンクコンテキストの「指定なし」を意味する指示子を、前記実行される可能性が高いリンクコンテキストの先頭アドレスに替えて格納可能としたので、必要とするリンクコンテキストが指定可能な数よりも少ない場合に、ＲＡＭ６に対する無用なアクセスを防止できる。
【００３７】
本発明は上記した、又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
リンクコンテキスト情報で指定可能とするリンクコンテキストの数は「３」に限ることなく、個別の設計に応じて適宜変更して良い。それに従い、レジスタバンクの数も「４」に限ることなく適宜変更して良い。
【００３８】
タスクスイッチを行う場合、必ずしも現在実行中のタスクのコンテキストをＲＡＭ６に退避させる必要はない。例えば、ＣＰＵ２が実行した時点で「休止状態」にしても問題がないタスクであれば、コンテキストを退避させずに、新たにロードしたタスクのコンテキストをレジスタバンク７に上書きしても良い。
図５に示すタスクディスパッチ処理を、ハードロジックにより行っても良い。
リンクコンテキスト情報は、プログラムメモリの例外ベクタ領域に配置する必要はなく、その他の任意の領域に配置しても良い。
【符号の説明】
【００３９】
図面中、１はマイクロコンピュータ（データ処理装置）、２はＣＰＵ（ＣＰＵコア）、３はＣＰＵメモリバス、５はＲＯＭ（プログラムメモリ）、６はＲＡＭ（外部メモリ）、７はレジスタバンク（スレッド）、９は制御ロジック（レジスタバンク制御手段）、１０はコンテキストメモリバスを示す。
【図１】
0005803721.tif 000002
【図２】
0005803721.tif 000003
【図３】
0005803721.tif 000004
【図４】
0005803721.tif 000005
【図５】
0005803721.tif 000006
【図６】
0005803721.tif 000007
【図７】
0005803721.tif 000008
【図８】
0005803721.tif 000009