(57)【要約】【課題】キャッシュミスヒットを減らし、メモリアクセスを高速化することのできる技術を提供する。【解決手段】タスク管理装置において、各タスクの実行開始時刻およびメインメモリ上における記憶位置（開始アドレスとサイズ）を記憶するタスク管理テーブルを用いて、タスクの実行制御を行う。そして、タスク管理テーブルに基づいて、タスクの実行開始までにタスクを構成する命令コードをプリフェッチするプリフェッチ部を備えることで、新たなタスクが実行状態になったときに、そのタスクの命令コードがキャッシュメモリ上に取り込まれていることになるため、キャッシュミスヒットを減らすことができる。【選択図】図５
2008015668.tif 000002
【特許請求の範囲】
【請求項１】
主メモリとキャッシュメモリとを有するタスク管理装置であって、
実行予定の複数のタスクについて、各タスクの実行開始時刻および該タスクを構成する命令コードの前記主メモリにおける記憶位置を記憶するタスク管理テーブルと、
前記タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御するタスク管理手段と、
実行予定のタスクについて、前記タスク管理テーブルに記憶された該タスクの命令コードの記憶位置に基づいて、該命令コードを前記主メモリから前記キャッシュメモリにあらかじめ取り込むプリフェッチ手段と、
を有することを特徴とするタスク管理装置。
【請求項２】
前記タスク管理テーブルに記憶される命令コードの前記主メモリにおける記憶位置は、該命令コードの開始アドレスとサイズとして記憶される
ことを特徴とする請求項１に記載のタスク管理装置。
【請求項３】
前記プリフェッチ手段は、前記タスク管理手段が実行タスクを切り替える際に、新たに実行するタスクの命令コードを、前記主メモリから前記キャッシュメモリに取り込む
ことを特徴とする請求項１または２に記載のタスク管理装置。
【請求項４】
前記プリフェッチ手段は、前記タスク管理手段が実行タスクを切り替える際に、新たに実行するタスクより後に実行するタスクの命令コードを、前記主メモリから前記キャッシュメモリに取り込む
ことを特徴とする請求項１または２に記載のタスク管理装置。
【請求項５】
前記プリフェッチ手段は、前記タスク管理手段が実行タスク切り替える際に、今後実行する複数のタスクの命令コードをまとめて前記主メモリから前記キャッシュメモリに取り込む
ことを特徴とする請求項１または２に記載のタスク管理装置。
【請求項６】
前記タスク管理装置は、少なくとも第１および第２のプロセッサを有し、
前記タスク管理手段および前記プリフェッチ手段は、前記第１のプロセッサによって実行され、
タスクは、前記第２のプロセッサによって実行される
ことを特徴とする請求項１〜５のいずれかに記載のタスク管理装置。
【請求項７】
前記タスク管理装置は、少なくとも第１および第２のプロセッサコアを備えるプロセッサを有し、
前記タスク管理手段および前記プリフェッチ手段は、前記第１のプロセッサコアによって実行され、
タスクは、前記第２のプロセッサコアによって実行される
ことを特徴とする請求項１〜５のいずれかに記載のタスク管理装置。
【請求項８】
主メモリとキャッシュメモリとを有する情報処理装置が行うタスク管理方法であって、
実行予定の複数のタスクについて、各タスクの実行開始時刻および該タスクを構成する命令コードの前記主メモリにおける記憶位置をタスク管理テーブルに記憶するステップと、
前記タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御するステップと、
実行予定のタスクについて、前記タスク管理テーブルに記憶された該タスクの命令コー
ドの記憶位置に基づいて、該命令コードを前記主メモリから前記キャッシュメモリにあらかじめ取り込むステップと、
を含むことを特徴とするタスク管理方法。
【請求項９】
主メモリとキャッシュメモリとを有する情報処理装置に対して、
実行予定の複数のタスクについて、各タスクの実行開始時刻および該タスクを構成する命令コードの前記主メモリにおける記憶位置をタスク管理テーブルに記憶するステップと、
前記タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御するステップと、
実行予定のタスクについて、前記タスク管理テーブルに記憶された該タスクの命令コードの記憶位置に基づいて、該命令コードを前記主メモリから前記キャッシュメモリにあらかじめ取り込むステップと、
を実行させることを特徴とするタスク管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク管理装置に関する。
【背景技術】
【０００２】
一般に、情報処理装置においては、ＲＡＭなどの主メモリに記憶された命令コードおよびデータを読み出して、ＣＰＵ（中央演算処理装置）がその命令コードを解釈して読み込んだデータに対して処理を実行する。ＣＰＵから主メモリへのアクセスは、ＣＰＵの命令実行速度に比べて格段に遅い。したがって、ＣＰＵが毎回主メモリから命令コードとデータ（ここでは、両方を区別せずに単にデータという）を読み込むと、ＣＰＵはメモリアクセスの間待ち状態となってしまい処理速度が向上しない。そこで、ＣＰＵと主メモリの間に、キャッシュメモリを設けることが一般的である。キャッシュメモリには、主メモリよりも高速なアクセスが可能なメモリが使用される。頻繁に使用されるデータを高速アクセスが可能なキャッシュメモリに一時的に格納することで、ＣＰＵは低速な主メモリにアクセスすることなくキャッシュメモリからデータを読み込むことができるので処理速度の向上が図れる。
【０００３】
逆に、キャッシュメモリに読み込まれていないデータにアクセスする場合、すなわちキャッシュミスヒットが発生した場合には、主メモリまでアクセスする必要があるため処理速度が遅くなってしまう。このようなキャッシュミスヒットを回避することで、メモリアクセスの高速化が図られ、処理速度が向上する。
【０００４】
ＣＰＵが次に必要とするデータがあらかじめ分かっている場合には、そのデータをキャッシュメモリに取り込んでおけば、キャッシュミスヒットを回避することができる。このように、あらかじめキャッシュメモリに必要なデータを取り込む処理をプリフェッチ（pre-fetch）という。
【０００５】
プリフェッチによって高速なデータアクセスが可能となるが、一般に次に必要となるデータが確実には分からない。そこで、次に必要となる可能性が高いデータをとりあえずプリフェッチすることになる。しかしながら、キャッシュメモリとして使用される高速なアクセスが可能なメモリは高価であるため主メモリに比較して容量が小さい。したがって、無駄なプリフェッチを行ってしまうと、本当に必要なデータがキャッシュメモリから追い出されてしまう場合がある。つまり、キャッシュメモリを有効に活用するためには、次に必要となるデータを予測して、必要なだけのデータをプリフェッチすることが重要である。
【０００６】
このような技術として、特許文献１には、実行待ち状態のタスクに対応するデータ（命令コードおよびデータ）を、このタスクが実行中状態に遷移する前に、主メモリからプリフェッチする技術が開示されている。また、特許文献２には、割り込み処理の中で、制御モードの切替までにキャッシュの入れ替えが終了することを保証するリアルタイム制御システムが開示されている。
【特許文献１】特開２００２−２５９２０９号公報
【特許文献２】特開２００５−４４２３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、キャッシュミスヒットを減らし、メモリアクセスを高速化することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明では、以下の手段または処理によってタスクの管理および該タスクを構成する命令コードのプリフェッチを行う。
【０００９】
本発明に係るタスク管理装置は、ハードウェアとして主メモリとキャッシュメモリとを有する。キャッシュメモリは、主メモリよりも高速なアクセスが可能なメモリである。主メモリに格納されている命令コードをキャッシュメモリに格納しておくことで、この命令コードに対しては高速なアクセスが可能となる。
【００１０】
本発明に係るタスク管理装置は、さらに、タスク管理テーブルとタスク管理手段とプリフェッチ手段とを有する。
【００１１】
タスク管理テーブルには、実行予定の複数のタスクについて、各タスクの実行開始時刻および各タスクを構成する命令コードの主メモリにおける記憶位置とが記憶される。なお、命令コードの記憶位置は、その記憶位置の開始アドレスおよびコードサイズ（容量）として、タスク管理テーブルに記憶されることが好適である。
【００１２】
タスク管理手段は、タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御する。すなわち、あるタスクの実行開始時刻になると、タスク管理手段は、それまで実行されていたタスクの実行を中断し、新しいタスクを実行する。このように、タスク管理手段は、タスク管理テーブルに記憶されているスケジュールにしたがって、複数のタスクの実行を制御する。
【００１３】
プリフェッチ手段は、実行が予定されているタスクについて、タスク管理テーブルに記憶されたタスクの命令コードの記憶位置に基づいて、命令コードを主メモリからキャッシュメモリにあらかじめ取り込む（プリフェッチする）。なお、プリフェッチ手段は、実行予定のタスクについて、そのタスクを構成する命令コードを全てプリフェッチすることが好適である。
【００１４】
このように、本発明に係るタスク管理装置によれば、今後実行されるタスクについて、そのタスクの命令コードがキャッシュメモリにプリフェッチされることになるので、キャッシュミスヒットを減らすことができる。したがって、本発明に係るタスク管理装置によれば、メモリアクセスが高速化され、処理効率が向上することになる。
【００１５】
ここで、プリフェッチ手段は、実行するタスクをタスク管理手段が切り替える際に、新たに実行するタスクの命令コードをプリフェッチしても良い。
【００１６】
また、プリフェッチ手段は、実行するタスクをタスク管理手段が切り替える際に、そのタスクより後に実行するタスクの命令コードをプリフェッチしても良い。
【００１７】
また、プリフェッチ手段が一度にプリフェッチする命令コードは、１つのタスクの命令コードである必要はない。すなわち、プリフェッチ手段は、実行するタスクをタスク管理手段が切り替える際に、今後実行する複数のタスクの命令コードをまとめてプリフェッチしても良い。この場合、まとめてプリフェッチするタスクの数は、タスクを構成する命令コードサイズの合計と、キャッシュメモリの容量とに基づいて定められることが好適である。
【００１８】
また、本発明に係るタスク管理装置は、マルチプロセッサシステムまたはマルチコアシステムとして構成されても良い。この場合、１つのプロセッサまたはプロセッサコアがタ
スク管理手段およびプリフェッチ手段の実行に割り当てられ、他のプロセッサまたはプロセッサコアがタスクの実行に割り当てられることが好ましい。このように、マルチプロセッサシステムまたはマルチコアシステムでは、タスク管理手段およびプリフェッチ手段とタスクとが並列に動作可能なので、タスク管理手段およびプリフェッチ手段を常時実行しておくことができる。したがって、タスクの命令コードに関するキャッシュミスヒットを最小限にすることが可能となる。
【００１９】
なお、本発明に係るタスク管理装置のキャッシュメモリは、多階層のキャッシュメモリとして構成することが可能である。この場合、命令コードをキャッシュメモリに取り込む（プリフェッチする）とは、多階層のキャッシュメモリのうちの少なくともいずれかのキャッシュメモリに、その命令コードを取り込むことをいう。
【００２０】
なお、本発明は、上記手段の少なくとも一部を有するタスク管理装置として捉えることができる。また、本発明は、上記処理の少なくとも一部を含むタスク管理方法、または、かかる方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【００２１】
例えば、本発明の一態様としてのタスク管理方法は、主メモリとキャッシュメモリとを有する情報処理装置が行うタスク管理方法であって、実行予定の複数のタスクについて、各タスクの実行開始時刻および該タスクを構成する命令コードの前記主メモリにおける記憶位置をタスク管理テーブルに記憶するステップと、前記タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御するステップと、実行予定のタスクについて、前記タスク管理テーブルに記憶された該タスクの命令コードの記憶位置に基づいて、該命令コードを前記主メモリから前記キャッシュメモリにあらかじめ取り込むステップと、を含むことを特徴とする。
【００２２】
また、本発明の一態様としてのタスク管理プログラムは、主メモリとキャッシュメモリとを有する情報処理装置に対して、実行予定の複数のタスクについて、各タスクの実行開始時刻および該タスクを構成する命令コードの前記主メモリにおける記憶位置をタスク管理テーブルに記憶するステップと、前記タスク管理テーブルに記憶されたタスクの実行開始時刻にしたがって、タスクの実行を制御するステップと、実行予定のタスクについて、前記タスク管理テーブルに記憶された該タスクの命令コードの記憶位置に基づいて、該命令コードを前記主メモリから前記キャッシュメモリにあらかじめ取り込むステップと、を実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、キャッシュミスヒットを減らし、メモリアクセスを高速化することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００２５】
＜構成＞
図１は、本実施形態に係るタスク管理装置のハードウェア構成を示す図である。タスク管理装置１は、ＣＰＵ（中央演算処理装置）２、ＲＡＭなどのメインメモリ３、ハードディスク装置などの補助記憶装置４、キーボードやマウスなどの入力装置５、およびディスプレイなどの出力装置６を備える。これらの各装置は、バス７によって接続されている。
【００２６】
図２は、ＣＰＵ２のより詳しい構成を示す図である。ＣＰＵ２は、命令コードを解釈して処理を実行するプロセッサコア２１、およびキャッシュメモリ２２を有する。
【００２７】
キャッシュメモリ２２およびメインメモリ３に対するアクセス速度は、キャッシュメモリ２２に対するアクセス速度の方がメインメモリ３に対するアクセス速度よりも速い。逆に、メモリ容量は、メインメモリ３のメモリ容量の方がキャッシュメモリ２２のメモリの容量よりも多い。
【００２８】
ＣＰＵ２は、メインメモリ３から命令コードを読み込むときには、キャッシュメモリ２２内にその命令コードがすでに取り込まれているか判断し、すでに取り込まれている場合にはキャッシュメモリ２２からその命令コードを読み込む。一方、キャッシュメモリ２２内にその命令コードが取り込まれていない場合には、メインメモリ３からその命令コードを読み込むとともに、キャッシュメモリ２２内に取り込む。このように、高速なキャッシュメモリを利用して、メインメモリ３に対するアクセスを減らして、メモリアクセスに要する処理時間を減らしている。
【００２９】
次に、本実施形態に係るタスク管理装置１の機能部について説明する。図３は、本実施形態に係るタスク管理装置１の機能ブロックを示す図である。タスク管理装置１は、タスクスケジューラ１０１、タスク管理テーブル１０２、プリフェッチ部１０３、および複数のタスク１０４から構成される。タスクスケジューラ１０１は、タスク管理テーブル１０２にしたがって、ＣＰＵ２がどのタスクを実行するのかを制御する。
【００３０】
本実施形態に係るタスク管理装置１は、どのような具体的なスケジューリングアルゴリズムにしたがって、タスクのスケジューリングを行っても構わない。例えば、スケジューリングアルゴリズムとして、周期的なタスクにおいてタスクの起動からデッドラインまでの時間が短いタスクを優先的に実行するＤＭ法（Deadline Monotonic）を用いることができる。また、スケジューリングアルゴリズムとして、周期的なタスクにおいてタスクの実行周期が短いタスクほど優先的に実行するＲＭ法（Rate Monotonic）を用いることもできる。また、スケジューリングアルゴリズムとして、タスクのデッドラインが最も近いものから優先的に実行するＥＤＦ法（Earliest Deadline First）を用いることもできる。ま
た、その他どのようなスケジューリングアルゴリズムを用いても良い。いずれの場合も、タスクスケジューラ１０１は、タスク管理テーブル１０２にしたがってタスクの実行を制御する。
【００３１】
図４（ａ）は、タスク管理テーブル１０２のテーブル構造を示す図である。タスク管理テーブル１０２は、実行するタスクの、タスクＩＤ４１、実行開始時刻４２、そのタスクを構成する命令コードのメインメモリ３における記憶位置の開始アドレス４３、およびそのタスクを構成する命令コードのコードサイズ４４を格納する。すなわち、タスク管理テーブルには、各タスクについて、そのタスクをいつ実行するのかと、そのタスクを構成する命令コードのメインメモリ３における記憶位置が格納される。
【００３２】
図４（ｂ）は、図４（ａ）のタスク管理テーブルにしたがったタスクのスケジューリングを説明する図である。図４（ｂ）に示すように、図４（ａ）のタスク管理テーブルにしたがうと、時刻ｔ１においてタスクＡが実行され、時刻ｔ２においてタスクＢが、時刻ｔ３においてタスクＡが、時刻ｔ４においてタスクＣが、時刻ｔ５においてタスクＢが実行される。
【００３３】
プリフェッチ部１０３は、プリフェッチ命令を実行して、メインメモリ３上に格納されている命令コードをキャッシュメモリ２２上に取り込む処理を行う。プリフェッチ部１０３は、タスクスケジューラ１０１からの指示にしたがって、今後実行する予定のタスク１０４を構成する命令コードを、メインメモリ３からキャッシュメモリ２２に取り込む処理を行う。具体的な処理については後述する。
【００３４】
タスクスケジューラ１０１およびプリフェッチ部１０３は、補助記憶装置４に格納されたプログラムがメインメモリ３にロードされＣＰＵ２によって実行されることによって、その機能が実現される。また、タスク管理テーブル１０２はメインメモリ３上に構築（格納）されるものである。なお、タスク管理テーブル１０２はメインメモリ３上に格納されるデータであるため、キャッシュメモリ２２上に取り込まれることもある。また、タスク１０４は、プログラムであって補助記憶装置４からメインメモリ３にロードされるものであり、それ自体ＣＰＵ２によって実行されるものである。
【００３５】
＜処理フロー＞
図５に示す処理は、タスクスケジューラ１０１およびプリフェッチ部１０３が行う処理である。この処理ルーチンは所定の間隔で定期的に実行される。まず、タスクスケジューラ１０１が実行状態になると、タスク管理テーブル１０２に基づいて、実行するタスクの切替が発生したか否かを判定する（Ｓ１０）。すなわち、タスク管理テーブル１０２に格納されている実行開始時刻４２が到来したタスクが存在するか否かを判定する。タスクの切替が発生していない場合（Ｓ１０−ＮＯ）は、この処理ルーチンを抜ける。タスクの切替が発生した場合（Ｓ１０−ＹＥＳ）には、プリフェッチ部１０３がプリフェッチする対象とするタスクを決定する（Ｓ１１）。
【００３６】
プリフェッチ部１０３がプリフェッチの対象とするタスクを決定する方法には、以下の方法が考えられる。
【００３７】
１．このルーチンにおいてタスクスケジューラが実行状態にするタスクをプリフェッチする。この方法によれば、次に実行状態になるタスクの命令コードがキャッシュメモリ２２に格納されることにより、実行するタスクの命令コードをキャッシュメモリ２２から取得することが可能となる。
【００３８】
２．このルーチンにおいてタスクスケジューラが実行状態にするタスクより後に実行状態にするタスクをプリフェッチする。この場合、今回実行状態にするタスクの次に実行状態にするタスクをプリフェッチの対象としても良く、所定回後に実行状態にするタスクをプリフェッチの対象としても良い。実行するタスクの順序はタスク管理テーブル１０２に格納されているので、プリフェッチ部１０３はタスク管理テーブル１０２を参照することで所定回後に実行状態にするタスクを判定することができる。
【００３９】
この方法によれば、命令コードのプリフェッチに時間がかかる場合であっても、実際にタスクが実行状態になる前からプリフェッチが行われているので、タスクが実行状態になったときにはそのタスクの命令コードがキャッシュメモリに格納されていることになる。
【００４０】
３．現在時刻より後の所定の時間帯の間に実行されるタスク、すなわち現在時刻からＴ１秒後より後であってＴ２秒後よりも前に実行が開始されるタスクをプリフェッチの対象とすることもできる。タスク管理テーブル１０２に各タスクの開始時刻が格納されているので、プリフェッチ部１０３はタスク管理テーブル１０２を参照することで、所定の時間帯に実行状態にするタスクを判定することができる。
【００４１】
この方法によっても上記２の方法と同様の効果が得られる。また、タスクが実行状態となる時間を基準としてプリフェッチの対象とするタスクを決定しているため、タスクの実行が開始されるまでにより確実にキャッシュメモリ２２に取り込む制御が可能となる。
【００４２】
４．今後実行状態にする複数のタスクをプリフェッチの対象としても良い。この場合、プリフェッチの対象となるタスクの数は、タスクを構成する命令コードの合計が所定の閾
値以内となるように選択する。所定の閾値は、キャッシュメモリ２２のサイズ以内である必要がある。なお、キャッシュメモリ２２に命令コードとデータの両方が取り込まれる場合には、全てを命令コードで満たすことは好ましくないので、キャッシュメモリ２２の所定の割合の容量を閾値とすることが好ましい。
【００４３】
具体的には、今回のルーチンで実行状態にするタスクをＴ０、そのｎ回後に実行状態にするタスクをＴｎ、タスクＴｉの命令コードのサイズをＳ（Ｔｉ）、上述の所定の閾値をＳとすると、以下の数１を満たす最大のＮを求め、Ｔ０〜ＴＮをプリフェッチの対象とすることができる。
【００４４】
【数１】
2008015668.tif 000003
【００４５】
また、ここではＴ０以降のタスクをプリフェッチの対象としているが、ｋを所定の整数として、Ｔｋ〜ＴＮをプリフェッチの対象としても良い（Ｎは上記と同様にして求める）。
【００４６】
この方法によっても確実にキャッシュメモリ２２に今後実行する予定のタスクを構成する命令コードが取り込まれることになる。なお、この方法では多くの命令コードをキャッシュメモリ２２にプリフェッチすることになるが、すでにキャッシュメモリ２２上に取り込まれている命令コードに対してプリフェッチ命令を発行しても無視されるだけなので、処理が非効率となることはない。
【００４７】
プリフェッチ部１０３は、上記のいずれかの方法によってプリフェッチの対象とするタスクを決定する。次に、プリフェッチ部１０３は、プリフェッチの対象としたタスクを構成する命令コードをキャッシュメモリ２２に取り込むプリフェッチ命令を発行する（Ｓ１２）。タスク管理テーブル１０２には、各タスクのメインメモリ３における記憶位置、すなわち開始アドレスとコードサイズが格納されているので、プリフェッチ部１０３はタスク管理テーブル１０２を参照することで、メインメモリ３のどのメモリ領域をプリフェッチすればよいのか判断することができる。
【００４８】
最後に、タスクスケジューラ１０１は、実行状態にするタスクの切替を行う（Ｓ１３）。ここで、実行状態にするタスクの命令コードはプリフェッチ部１０３によって、すでにキャッシュメモリ２２にプリフェッチされているので、ＣＰＵは切り替えるタスクの命令コードに対して高速にアクセスすることが可能である。
【００４９】
＜実施形態の効果＞
本実施形態に係るタスク管理装置によれば、タスクが実行状態になる前までに、そのタスクを構成する命令コードをキャッシュメモリにプリフェッチすることが可能となる。したがって、キャッシュミスヒットを回避することができ、タスク切替時のメモリアクセスによる実行遅延を減少させることができる。
【００５０】
また、タスクの実行順序を管理するタスク管理テーブルに基づいてプリフェッチする命令コードを決定しているため、プリフェッチしたが実際にはＣＰＵに読み込まれないという状況が発生せず、効率的なプリフェッチを行うことができる。
【００５１】
また、タスクスケジューラ１０１とプリフェッチ部１０３が、どのタイミングでどの命令コードをプリフェッチするかを判断しているため、プログラム作成者が（タスクの）プ
ログラムの中に明示的にキャッシュ制御に関する処理コードを書く必要がなく、プログラム作成者の負担も軽減することができる。
【００５２】
＜変形例１＞
本実施形態におけるＣＰＵ２は１階層のキャッシュメモリ２２のみを有していたが、ＣＰＵ１は複数階層のキャッシュメモリを有していても良い。この場合、プリフェッチ部１０３は、特定の階層のキャッシュメモリまで命令コードがプリフェッチされることを目的とする制御を行う。例えば、Ｌ１キャッシュとＬ２キャッシュの２階層のキャッシュ構成をとる場合、プリフェッチ部１０３は命令コードをＬ１キャッシュまでプリフェッチしても良く、Ｌ２キャッシュまでしかプリフェッチしなくても良い。３階層以上のキャッシュ構成の場合も同様である。
【００５３】
＜変形例２＞
本実施形態において、タスク管理装置１はＣＰＵ２を１つのみしか有しなかったが、複数個のＣＰＵを有するマルチプロセッサシステムとして構成されても良い。この場合、ＣＰＵの外部に設置されたキャッシュメモリをこれら複数個のＣＰＵが共用することが好ましい。具体的な構成を図６に示す。図６では、ＣＰＵ２０１とＣＰＵ２０２とが、外部キャッシュ２０３を共用している。ＣＰＵ２０１およびＣＰＵ２０２はその内部にキャッシュメモリを有するが、プリフェッチ部１０３は、外部キャッシュ２０３に命令コードをプリフェッチする命令を発行する。これによって、ＣＰＵ２０１がプリフェッチした命令コードをＣＰＵ２０２でも利用することが可能である。なお、ＣＰＵの数は２つである必要はなく、３つ以上であっても構わない。
【００５４】
また、タスク管理装置１は、マルチコアシステムとして構成されても良い。すなわち、ＣＰＵ２が複数のプロセッサコアを有するように構成されても良い。マルチコアシステムには様々な形態が考えられるが、その一例を図７に示す。図７に示すように、ＣＰＵ２は１つのパッケージ内に、２つのプロセッサコア２１ａ，２１ｂを有し、それぞれがキャッシュメモリ２２を共用している。なお、プロセッサコアの数は２つである必要はなく、３つ以上であっても構わない。
【００５５】
なお、タスク管理装置１をマルチプロセッサシステムまたはマルチコアシステムとして構成した場合、あるプロセッサまたはプロセッサコアを、タスクスケジューラ１０１およびプリフェッチ部１０３を実行するために専用に割り当てることが好ましい。この構成によれば、タスクスケジューラ１０１とプリフェッチ部１０３を常時起動しておくことが可能となるため、命令コードのプリフェッチを遅滞なく行うことができ、命令コードに関するキャッシュミスヒットを最小限にすることが可能となる。
【００５６】
＜変形例３＞
本実施形態においては、タスクスケジューラ１０１とプリフェッチ部１０３は、ＣＰＵ２がプログラムを実行することによってその機能が実現されたが、タスクスケジューラ１０１とプリフェッチ部１０３は専用のチップとして構成されても構わない。この場合も、プリフェッチ部１０３は、タスクを実行するＣＰＵ２に接続されたキャッシュメモリ２２に対してタスクを構成する命令コードをプリフェッチする。
【図面の簡単な説明】
【００５７】
【図１】本実施形態に係るタスク管理装置のハードウェア構成を示す図である。
【図２】本実施形態におけるＣＰＵの構成を示す図である。
【図３】本実施形態に係るタスク管理装置の機能ブロックを示す図である。
【図４】本実施形態におけるタスク管理テーブルのテーブル構成を示す図である。
【図５】本実施形態に係るタスク管理装置の処理の流れを示すフローチャートである。
【図６】マルチプロセッサシステムを説明する図である。
【図７】マルチコアシステムを説明する図である。
【符号の説明】
【００５８】
１      タスク管理装置
２      ＣＰＵ
３      メインメモリ
４      補助記憶装置
５      入力装置
６      出力装置
７      バス
２１    プロセッサコア
２２    キャッシュメモリ
【図１】
2008015668.tif 000004
【図２】
2008015668.tif 000005
【図３】
2008015668.tif 000006
【図４】
2008015668.tif 000007
【図５】
2008015668.tif 000008
【図６】
2008015668.tif 000009
【図７】
2008015668.tif 000010