(57)【要約】【課題】高優先度タスクと低優先度タスクが周期処理により行われる場合に、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。【解決手段】制御装置１は、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の許容値を超える場合に、高優先度タスクの実行が開始されるまでキャッシュメモリ２２からメモリ４へのキャッシュデータの追い出しを禁止する制御を行って、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータの追い出しを制限し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。【選択図】図１
2011048799.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
前記高優先度タスクよりも低い優先度のタスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
前記計数部により計数されたキャッシュミス回数と所定の閾値とを比較する比較部と、
前記比較部による比較の結果、前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする制御装置。
【請求項２】
前記制御装置は、
メインメモリと、前記メインメモリを管理するメモリコントローラが含まれるデータ処理システムに接続され、
前記キャッシュミス制御部は、
前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始するまで前記キャッシュメモリから前記メモリコントローラへのアクセスを遮断する制御を行って前記キャッシュデータの追い出しを発生させないことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記制御装置は、
メインメモリと、前記メインメモリを管理するメモリコントローラが含まれるデータ処理システムに接続され、
前記キャッシュミス制御部は、
前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始するまで前記キャッシュメモリから前記メモリコントローラへのアクセスを保留させる制御を行って前記キャッシュデータの追い出しを発生させないことを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記キャッシュミス制御部は、
前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクよりも低い優先度のタスクの実行を停止させる制御を行って前記キャッシュデータの追い出しを発生させないことを特徴とする請求項１〜３のいずれかに記載の制御装置。
【請求項５】
前記制御装置は、
実行されるタスクに高優先度タスクと中間の優先度タスクと低優先度タスクが含まれるデータ処理システムに接続され、
前記計数部は、
前記低優先度タスクの実行中に発生するキャッシュミスの回数を計数し、
前記比較部は、
前記計数部により計数された前記低優先度タスク実行中のキャッシュミス回数と所定の閾値とを比較し、
前記キャッシュミス制御部は、
前記低優先度タスク実行中のキャッシュミス回数が前記閾値を超えた際に、実行対象タスクを前記中間の優先度タスクに切り替えて前記低優先度タスクの実行を停止させる制御を行うことを特徴とする請求項４に記載の制御装置。
【請求項６】
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムであって、
キャッシュミスの発生を検知し、キャッシュミスが発生したタスクの優先度を判定するキャッシュミス検知部と、
前記キャッシュミス検知部により特定の優先度のタスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶するキャッシュミス記憶部と、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶部に記憶されているキャッシュミスを解析し、解析結果に基づいて前記キャッシュメモリのデータの更新を行うキャッシュ更新部とを有することを特徴とするデータ処理システム。
【請求項７】
前記キャッシュミス記憶部は、
前記キャッシュミス検知部により前記高優先度タスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスに関連するメインメモリのアドレスを記憶し、
前記キャッシュ更新部は、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶部に記憶されているアドレスと、前記キャッシュメモリに格納されているキャッシュデータに関連するメインメモリのアドレスとを比較し、比較結果に基づいて前記キャッシュメモリのデータの更新を行うことを特徴とする請求項６に記載のデータ処理システム。
【請求項８】
前記キャッシュ更新部は、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶部に含まれているが前記キャッシュデータのアドレスには含まれていないアドレスを抽出し、抽出したアドレスにおいて記憶されているデータを前記キャッシュメモリにロードすることを特徴とする請求項７に記載のデータ処理システム。
【請求項９】
前記キャッシュミス記憶部は、
前記キャッシュミス検知部により前記高優先度タスクよりも低い優先度のタスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶し、
前記キャッシュ更新部は、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶部に記憶されているキャッシュミスにより前記キャッシュメモリに書き込まれたデータの追い出しを行うことを特徴とする請求項６〜８のいずれかに記載のデータ処理システム。
【請求項１０】
前記キャッシュ更新部は、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶部に記憶されているキャッシュミスにより前記キャッシュメモリに書き込まれたデータのライトバックを行うことを特徴とする請求項９に記載のデータ処理システム。
【請求項１１】
前記キャッシュ更新部は、
前記高優先度タスクの実行が開始される前に、前記キャッシュミス記憶部に記憶されているキャッシュミスを解析し、解析結果に基づいて前記キャッシュメモリのデータの更新を行うことを特徴とする請求項６〜１０のいずれかに記載のデータ処理システム。
【請求項１２】
前記データ処理システムは、
実行されるタスクに高優先度タスクと中間の優先度タスクと低優先度タスクが含まれ、
前記キャッシュ更新部は、
前記中間の優先度タスクの実行として、前記キャッシュミス記憶部に記憶されているキャッシュミスを解析し、解析結果に基づいて前記キャッシュメモリのデータの更新を行うことを特徴とする請求項６〜１１のいずれかに記載のデータ処理システム。
【請求項１３】
前記キャッシュ更新部は、
前記キャッシュミス記憶部に記憶されているキャッシュミスの件数が所定の閾値を超えている場合に、前記キャッシュミス記憶部に記憶されているキャッシュミスを解析し、解析結果に基づいて前記キャッシュメモリのデータの更新を行うことを特徴とする請求項６〜１２のいずれかに記載のデータ処理システム。
【請求項１４】
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システム
に接続されている制御装置が行う制御方法であって、
前記高優先度タスクよりも低い優先度のタスクの実行中に発生するキャッシュミスの回数を計数する計数ステップと、
前記計数ステップにより計数されたキャッシュミス回数と所定の閾値とを比較する比較ステップと、
前記比較ステップによる比較の結果、前記計数ステップにより計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御ステップとを有することを特徴とする制御方法。
【請求項１５】
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムが行うデータ処理方法であって、
キャッシュミスの発生を検知し、キャッシュミスが発生したタスクの優先度を判定するキャッシュミス検知ステップと、
前記キャッシュミス検知ステップにより特定の優先度のタスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶するキャッシュミス記憶ステップと、
前記高優先度タスクよりも低い優先度のタスクの実行時に、前記キャッシュミス記憶ステップにより記憶されているキャッシュミスを解析し、解析結果に基づいて前記キャッシュメモリのデータの更新を行うキャッシュ更新ステップとを有することを特徴とするデータ処理方法。
【請求項１６】
キャッシュメモリが含まれ、キャッシュミス回数を計数するカウンタ手段とプログラムからキャッシュミス回数を読み出す手段があり、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムであって、
前記高優先度タスクよりも低い優先度のタスク期間内または全タスクの期間内の割り込み時にキャッシュミス回数をカウンタから読み出し周期の開始時点のカウンタ値との差分を計算し、その値があらかじめ指定した閾値を超えかつ低い優先度のタスク実行時には低い優先度のタスクと高優先度タスクの中間レベルに相当するタスクに制御を移し前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータ装置およびその周辺装置ならびにそれらを搭載した機器の実装に関し、特にその性能の最適化に関するものである。
【背景技術】
【０００２】
組込み機器はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載して機器を制御するものであり、例えばモータ制御のようにある一定時間内に入出力装置の状態を取得、計算、入出力装置への指令または制御を行う。
そのため、その時間制約を満たすリアルタイム制御が必要となる。
そのような入出力が複数あるときはそれぞれまたは他の入出力装置との連携を考慮した制御をプログラムとして実装する。
そのような制御プログラムの実装を容易化するために、独立した個別のプログラムをタスクとして用意し、リアルタイムオペレーティングシステム（以下、ＲＴＯＳと呼ぶ）の制御の下に動作させる従来技術がある。
この方法では、各タスクは優先度を持ち、ＲＴＯＳは入出力機器やタイマーなどからの割込みとタスク間でやりとりするメッセージを要因として、タスクの起動、休止、実行などの状態を制御して複数タスクの並行動作を行っている。
【０００３】
一方、組込み機器に搭載するＣＰＵの性能向上にしたがい、そのクロック周波数とＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリのアクセス時間の差を吸収するために、大容量のキャッシュメモリを搭載するのが普通になってきた。
そのため、キャッシュメモリのミスやライトバック方式（コピーバック方式とも呼ばれる）使用時のデータのＤＲＡＭへの書き戻しが発生し、それらの事象の発生が予測できず、リアルタイム処理の時間制約を守るのが難しいという課題がある。
さらに、ＲＴＯＳによるタスクの切り替えを行うと、そのことにより次のタスクの命令列がキャッシュメモリにないためにミスしたり、次のタスクが使用するデータがキャッシュメモリにないことによるミス、それに伴い前のタスクがキャッシュメモリ内で書き換えたデータをＤＲＡＭに反映するライトバック処理が発生する。
【０００４】
組込み機器では一定の処理を繰り返すことが多く、そのすべての処理に関係する命令やデータがキャッシュメモリに入りきれば問題はない。
キャッシュメモリを効率よく動作させるためには、再利用される命令やデータをキャッシュメモリに残し、再利用頻度の低いものはキャッシュメモリに残さないようなキャッシュメモリの置換制御を行う。
この制御方式はＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）やＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などの実装で行われる。
しかし、そのような制御を行っても再利用度が低いデータが再利用度の高いデータを追い出してしまうキャッシュ汚染という現象がある。
その汚染の原因が連想方式に依存した場合は、連想回路の改善たとえばセットアソシアティブ方式のウェイ（コンパートメントとも呼ぶ）を増やすことで解決している。
【０００５】
組込み機器では一定の時間間隔で一定の処理を繰り返す（以後、周期処理と呼ぶ）方式を採るものが多く、それらにおいては、一般的な連想方式の改善ではキャッシュ汚染の問題が解決せず、タスクやデータに着目したキャッシュメモリの改良方式がある。
１つの方法はウェイの置換に関してウェイごとに置換を許可するか否かを指定したり、アドレスの値を見て置換を制御する方式が特許文献１で開示されている。
特許文献１の技術では消費電力とキャッシュ性能の向上を目的としている。
【０００６】
また、特許文献２ではタスク（文献中では「プロセス」）ごとにウェイへの登録資格を検査してタスクの優先度に対応した制御を行う技術が開示されている。
【０００７】
また、特許文献３ではキャッシュメモリのヒット回数とミス回数の統計情報を使う技術とタスク（文献中では「プロセス」）のＩＤをタグに持つ技術が開示されている。
【０００８】
また、特許文献４では、プロセスの優先度指定に加えて、キャッシュメモリへのアクセス履歴を保持するバッファ（実施例では１０２４段）とキャッシュのヒットとミス情報より制御する複雑な方法が開示されている。
【０００９】
非特許文献２と非特許文献３では、プログラムによりアドレスを指定してキャッシュメモリの状態を取得する命令、キャッシュメモリのデータの書き戻し、キャッシュメモリの無効化を行う命令仕様について開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２００６−５２９０３４号公報
【特許文献２】特開平９−２８２２２６号公報
【特許文献３】特開平９−１０１９１６号公報
【特許文献４】特開平８−６９４１８号公報
【非特許文献】
【００１１】
【非特許文献１】馬場敬信著、「コンピュータアーキテクチャ（改定２版）」オーム社、平成１５年８月２０日発行、ｐ．１７７〜１９７
【非特許文献２】ＮＥＣ、「アプリケーション・ノート  ＶＲシリーズＴＭ  ６４／３２ビット・マイクロプロセッサ  プログラミングガイド」資料番号Ｕ１０７１０ＪＪ５ＶＡＤＡＮ００（第５版）、２００１年９月発行、ｐ．５９〜６２
【非特許文献３】ＭＯＴＯＲＯＬＡ、「ＭＰＣ７５０  ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｕｓｅｒ’ｓ  Ｍａｎｕａｌ」資料番号ＭＰＣ７５０ＵＭ／ＡＤ、１９９７年８月発行、ｐ．３−１５〜３−１７
【非特許文献４】ＮＥＣ、「ユーザズ・マニュアル  ＶＲ５５００Ａ、ＶＲ５５３２Ａ  ６４／３２ビット・マイクロプロセッサ  μＰＤ３０５５０Ａ」資料番号Ｕ１６６７７ＪＪ３Ｖ０ＵＭ００（第３版）、２００４年４月発行、ｐ．３８
【発明の概要】
【発明が解決しようとする課題】
【００１２】
現在、半導体プロセス技術の進歩とその複雑化により、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を用いてＣＰＵやキャッシュメモリを実装することが困難となった。
そのため、キャッシュ汚染を軽減するような改良を半導体ユーザが加えるのが困難となり、組込み機器メーカである半導体ユーザがそのアプリケーションのタスクの挙動の特性に合った性能改良を行うのは極めて難しい。
ユーザの回路を半導体として実現する方法にＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）という実装方法があるが、それに搭載するＣＰＵコアやキャッシュメモリの制御方法はＬＳＩメーカが用意したものを用いるのが一般的であり、これにも半導体ユーザが性能改良を行うのが難しいという一般的な課題がある（課題１）。
【００１３】
また、特許文献１に示された方式では次に示すような課題がある。
まず、小さいプログラムの場合は命令領域や扱うデータの種類が少なければウェイの使い方を想定できるが、大規模なプログラムではそれができない。
ウェイそのものではなくアドレスを指定して制御する場合には、大規模なプログラムでは、プログラムの並びや変数（データ）の配置を調整するのは容易ではない。
プログラムや変数のアドレスを指定する方法においては、その指定できる数が少なく、大規模プログラムには使用できないかもしくは効果が限定される。
また、アドレスで指定する場合であっても、変数が汎用的なバッファとして確保され、バッファの用途が動的に変化する場合や高優先度タスクから低優先度タスクにバッファの使用権が移譲された場合には、キャッシュメモリに設定した値を変更する処理が必要となる。
このように大規模なプログラムでは従来技術が効果的に作用しないことが多い（課題２）。
【００１４】
特許文献２乃至４においては、その実装が複雑な割にキャッシュメモリに実装可能な情報量に制約が多い。そのため、機能が限定された組込み機器には適用できると推定できるが、複数の機能を搭載して複雑な動作をする組込み機器においては、投資効果が得られないと考えられる。
【００１５】
組込み機器のタスクの優先制御のためキャッシュメモリを制御するときの、別の課題について述べる。
リアルタイム処理では、優先度が高いタスクの命令やデータがキャッシュメモリに残って再利用されミスが少なくタスクが高速に実行されることが期待され、低優先度のタスクについてはキャッシュメモリに残らずミスが多発しその部分の処理時間が掛かっても容認できるという考え方が一般的である。
リアルタイムタスクを用いた周期処理では、タスクの優先度による制御がキャッシュ汚染をさらに拡大するという課題がある。
それは、周期内で実行すべき高優先度のタスクがなくなり、低優先度のタスクに切り替わりそれがキャッシュ汚染を引き起こし、次に高優先度タスクに切り替わった後にキャッシュ汚染の後遺症として高優先度タスクがキャッシュミスを多発したり低優先度タスクのライトバックのためにキャッシュへのロードが待たされることである。
【００１６】
この現象を図を用いて説明する。
装置が決められた周期で高優先度タスクを繰り返し、その隙間に低優先度タスクが実行される様子を図２４に示す。
図中の太い矢印が高優先度タスクの実行を、細い矢印が低優先度タスクの実行を、縦線がキャッシュミスの発生した事象を示している。
最初のサイクル１では周期の１／３ほどの時間で高優先度タスクが終了し低優先度タスクに切り替わる。
周期の残り２／３の時間を低優先度タスクが動作してキャッシュミスを多く発生してキャッシュ汚染をする。
次にタイマー割り込みなどにより次の周期（サイクル２）が始まり、高優先度タスクに切り替わる。
するとキャッシュ汚染のために高優先度タスクに必要な命令やデータがキャッシュメモリから追い出されてしまったためキャッシュミスを発生し、高優先度タスクの実行時間が延びる。
次のサイクル３はサイクル１と同様な挙動を示し、サイクル４はサイクル２と同様となり交互に繰り返すこととなる。
高優先度のタスクが複数あり毎周期ではなく一定間隔で切り替わる場合や、低優先度のタスクが複数種ある場合などはこの繰り返し周期は複雑化する。
【００１７】
低優先度タスクが引き起こすキャッシュ汚染の影響を受けて高優先度タスクが周期内に処理を完了しないことを避けるため、通常は、周期時間に対して高優先度タスクの仕事量を少なめに設定するか、周期を伸ばすなど「余裕時間」を持たせて対応している。
しかしながら、低優先度タスクがネットワーク通信処理や表示処理など多量のメモリアクセスを行う場合にはキャッシュ汚染が多く、余裕をかなり持つ必要性が生じる。
またキャッシュメモリ容量が増大してきたことと非特許文献に記載のメモリウォール問題によりその余裕時間を長く確保する必要性が増大してきたことにより、周期の短縮を行うことが益々困難になってきた（課題３）。
【００１８】
この発明は、上記のような課題を解決することを主な目的の一つとしており、キャッシュメモリそのものを複雑にせずに、低優先度のタスクの実行を抑制することによりキャッシュ汚染を軽減して高優先度タスクのキャッシュミスの頻度とキャッシュミス時間を短縮し、必要とされる余裕時間をより短縮し組込み機器の性能を改善することを主な目的とする。
【課題を解決するための手段】
【００１９】
本発明に係る制御装置は、
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
前記高優先度タスクよりも低い優先度のタスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
前記計数部により計数されたキャッシュミス回数と所定の閾値とを比較する比較部と、
前記比較部による比較の結果、前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の閾値を超えた際に、高優先度タスクの実行が開始されるまでキャッシュデータの追い出しを禁止する制御を行い、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータが追い出されることを回避し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ぶ影響を軽減することができる。
【図面の簡単な説明】
【００２１】
【図１】実施の形態１に係る全体構成例を示す図。
【図２】実施の形態１に係る制御装置の内部構成例を示す図。
【図３】実施の形態２に係る全体構成例を示す図。
【図４】実施の形態１に係る許容度指定部の実施例を示す図。
【図５】実施の形態１に係る計数部の実施例を示す図。
【図６】実施の形態１に係る優先度取得部の実施例を示す図。
【図７】実施の形態１に係る比較部、キャッシュミス制御部、優先度切替予測部、回路の実施例を示す図。
【図８】実施の形態１に係る優先度取得部の別の実施例を示す図。
【図９】実施の形態１に係る比較部、キャッシュミス制御部、優先度切替予測部、回路の別の実施例を示す図。
【図１０】実施の形態１の効果を説明するタイミング図。
【図１１】実施の形態３に係る全体構成例を示す図。
【図１２】実施の形態１に係るタスクの遷移を示すフロー図。
【図１３】実施の形態３に係るタスクの遷移を示すフロー図。
【図１４】実施の形態４に係る全体構成例を示す図。
【図１５】実施の形態４乃至６に係るキャッシュミス記憶装置の実施例を示す図。
【図１６】実施の形態４に係る中間の優先度タスクにおける処理例を示すフローチャート図。
【図１７】実施の形態４に係る処理７１の具体例を示す図。
【図１８】実施の形態５に係る処理７１の具体例を示す図。
【図１９】実施の形態６に係る処理７１の具体例を示す図。
【図２０】実施の形態４乃至６に係るキャッシュミス記憶装置の機能ブロックを示す図。
【図２１】実施の形態１に係る動作例を示すフローチャート図。
【図２２】実施の形態４に係る動作例を示すフローチャート図。
【図２３】実施の形態５に係る動作例を示すフローチャート図。
【図２４】従来技術を使用時の動作例を示すタイミング図。
【発明を実施するための形態】
【００２２】
実施の形態１．
図１は、本実施の形態に係る低優先度タスクによるキャッシュミスを抑制する制御装置１とその位置づけを示す組込み機器の全体構成例を示す図である。
【００２３】
図１において、制御装置１以外の要素がデータ処理システムに相当する。
図１の構成では、ＣＰＵ２、メモリコントローラ３、メモリ４、バス５、割り込みコントローラ６及び回路１７がデータ処理システムを構成する。
【００２４】
制御装置１は、バス５を介してＣＰＵ２と接続され、また、回路１７と接続されている。
回路１７は、バス５に接続されたメモリコントローラ３へのバス５からのリクエスト信号５１をゲートしてメモリコントローラ３へのリクエスト信号５１ａを生成する回路である。
制御装置１は、回路１７へのキャッシュミス制御信号１５１を出力する。
【００２５】
バス５の信号はリクエスト信号５１とその他の信号５２とする。
また、信号６１は、割り込みコントローラ６より出力されＣＰＵ２に入力される割り込み信号である。
信号６２は、入出力装置またはタイマーや周期信号を生成する装置より発せられる各々の割り込み信号である。
信号２１１は、ＣＰＵコア２１とキャッシュメモリ２２のインターフェイス信号である。
信号２２１は、キャッシュメモリ２２とメモリインターフェイス回路２３の間の信号である。
信号２３３は、ＣＰＵコア２１とメモリインターフェイス回路２３とのインターフェイス信号で、ＣＰＵ外の非キャッシュメモリ領域へのアクセスに使用される信号である。
【００２６】
メモリコントローラ３は、メモリバス３１を介してメインメモリたるメモリ４へアドレスと制御信号を出力してメモリ４へのデータ書き込みまたはメモリ４からのデータ読み出しを行う。
ＣＰＵ２はＣＰＵとしての機能を持つＣＰＵコア２１とＣＰＵコア２１の外部にあるキャッシュメモリ２２と、バス５と接続するメモリインターフェイス回路２３からなる。
ＣＰＵコア２１はキャッシュメモリ２２への格納対象のデータはキャッシャブル領域としてパス２１１を通じてアクセスする。
キャッシュメモリ２２に格納しない入出力へのアクセスはパス２３３を介して行う。
ＣＰＵの構成によってはパス２３３を持たないものもある。
割り込みコントローラ６は、ＣＰＵへの割り込み信号６１を束ねるもので入力信号６２ａ乃至６２ｃを入力する。
ＣＰＵの構成によっては入力信号６２ａ乃至６２ｃが直にＣＰＵに入力され割り込みコントローラ６がないものもある。
なお、入力信号６２の一部である６２ａ乃至６２ｂは、制御装置１にも入力される。
【００２７】
本実施の形態では、高優先度タスクと低優先度タスクが周期処理により行われる場合を説明する。一つの周期において、高優先度タスクがまず実行され、高優先度タスクの実行完了後に低優先度タスクが実行される。
そして、本実施の形態に係る制御装置１は、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。
より具体的には、制御装置１は、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の許容値を超える場合に、高優先度タスクの実行が開始されるまでキャッシュメモリ２２からメモリ４へのキャッシュデータの追い出しを禁止する制御を行って、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータの追い出しを制限し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。
キャッシュメモリ２２からメモリ４へのキャッシュデータの追い出しを禁止する制御には、大きく分けて、キャッシュメモリ２２からメモリコントローラ３へのアクセスを遮断又は保留する制御と、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御の２種類がある。
本実施の形態と実施の形態２では、キャッシュメモリ２２からメモリコントローラ３へのアクセスを遮断又は保留する制御の例を説明し、実施の形態３で、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御の例を説明する。
【００２８】
次に、制御装置１の内部構成例について説明する。
図２は、本実施の形態に係る制御装置１の内部構成例を示す。
【００２９】
図２において、許容度指定部１１は、低優先度タスク実行時のキャッシュミスの許容回数（閾値）を指定する。
計数部１２は、低優先度タスクの実行によって引き起こされたキャッシュミス回数をカウントする。
比較部１３は、許容度指定部１１により指定されているキャッシュミスの許容回数と計数部１２により計数されたキャッシュミス回数とを比較する。
優先度取得部１４は、ＣＰＵ２から実行中のタスクの優先度と周期の切り替わり通知を受信して保持する。
優先度切替予測部１６は、入力信号６２の一部であり周期切り替えに関連する６２ａ乃至６２ｂを入力してタスク優先度の切り替わりを予測する。
【００３０】
キャッシュミス制御部１５は、比較部１３の出力信号１３１と優先度取得部１４の出力信号１４１と優先度切替予測部１６の出力信号１６１を入力として、キャッシュミス制御信号１５１を生成する。
つまり、キャッシュミス制御部１５は、低優先度タスク実行時に、比較部１３による比較の結果、計数部１２により計数されたキャッシュミス回数が許容回数を超えた際に、高優先度タスクの実行が開始されるまでキャッシュメモリ２２に格納されているキャッシュデータの追い出しの要因となる新たなキャッシュミスを発生させないためにキャッシュミス制御信号１５１を出力する。
キャッシュミス制御信号１５１は、回路１７に出力される。キャッシュミス制御信号１５１は、具体的には、回路１７に、メモリインターフェイス回路２３からリクエスト信号５１を受信してもメモリコントローラ３にリクエスト信号５１ａを出力しないように指示する信号であり、リクエスト信号５１ａの出力を制限することによりキャッシュメモリ２２からメモリコントローラ３へのアクセスを遮断し、この結果、キャッシュミスの対象のデータがメモリ４からキャッシュメモリ２２に提供されず、キャッシュメモリ４に格納されているキャッシュデータの追い出しが発生しない。ＣＰＵの構成によってはリクエスト信号５１ａが出力された時点ですでにキャッシュメモリから追い出しを完了しているものもあるが、その場合でもそのあとに発生する追い出しを抑制できる。
【００３１】
なお、信号１３１は、比較部１３より出力され、計数部１２の出力１３３の値が許容度指定部１１の出力１３２より大きいことを示す信号である。
また、信号１３２は、許容度指定部１１の出力で低優先度タスクのキャッシュミス回数の許容度の値を示す信号である。
信号１３３は、計数部１２の出力で低優先度タスクのキャッシュミスの回数の値を示す信号である。
信号１４１は、優先度取得部１４の出力で、低優先度タスクのキャッシュミスのカウント動作を制御する信号で、リセットとカウントイネーブルを制御するものである。
キャッシュミス制御信号１５１は、キャッシュミス制御部１５の出力で、バスのリクエスト信号を無効またはその生成を抑止する信号である。
信号１６１は、優先度切替予測部１６で生成された信号で、割り込み信号よりタスク優先度が変更される可能性を予測する信号である。
【００３２】
次に動作について説明する。
以下では、適宜、図２１のフローチャートを用いて動作を説明する。
【００３３】
まず、組込み機器の初期化動作時のプログラムによりＣＰＵコア２１から非キャッシュ領域に設定された許容度指定部１１に低優先度タスクに許容するキャッシュミス回数をバス５を通じて書き込む。
組込み機器の周期処理の周期は、割り込みコントローラ６の入力信号に接続されたタイマー回路または入出力装置より割り込み信号として与えられる。
ＣＰＵコア２１はその割り込みにより新たな周期を開始する。
ＣＰＵコア２１は、その周期の初めに優先度取得部１４に対して高優先度タスクの実行を開始したことを通知する（この通知を行わずに代わりに優先度切替予測部１６が優先度取得部１４に通知してもよい）。
また、ＣＰＵコア２１は実行するタスクを低優先度のものに変更するとバス５経由で優先度取得部１４のそのことを通知する（高優先度と低優先度のいずれかという状態を通知する代わりに、複数ビットからなる値を優先度として書き込み、優先度取得部１４が内部でそれを判定してもよい。また、タスクやプロセスのＩＤを優先度取得部１４に書き込み、優先度取得部１４に予め与えられた情報により優先度取得部１４が優先度を表引きまたは計算により求めても同様の効果が得られる）。
制御装置１では、ＣＰＵコア２１からの通知等により、優先度取得部１４が低優先度タスクの開始を検知する（Ｓ２１０１）。
また、計数部１２はバス５のトランザクションを監視してデータ長やアドレスなどからキャッシュミスであることを判別し（Ｓ２１０２でＹＥＳ）、出力信号１４１よりその時点のタスクが低優先度タスクであれば計数部１２は内部のカウンタをインクリメントする（Ｓ２１０３）（計数ステップ）。なお、出力信号１４１は、現在実行中のタスクが高優先度か低優先度かを通知する信号である。
次に、比較部１３が、計数部１２のカウンタの値と許容度指定部１１で指定された許容値を比較し（Ｓ２１０４）（比較ステップ）、カウンタ値が許容値を超えるならば（Ｓ２１０４でＹＥＳ）、出力信号１３１を用いて、カウンタ値が許容値を超えたことをキャッシュミス制御部１５に通知する。
なお、上記に代えて、ダウンカウンタとして実装するようにしてもよい。
【００３４】
キャッシュミス制御部１５は、比較部１３からの通知を受け、キャッシュデータの追い出しを抑止する制御を行う（Ｓ２１０５）（キャッシュミス制御ステップ）。
より具体的には、キャッシュミス制御部１５は、出力信号１４１により現在実行中のタスクの優先度が低ければ、キャッシュミス制御信号１５１をリクエスト抑止状態として回路１７に伝達する。
回路１７はリクエスト抑止状態ならば、バス５のリクエスト信号５１をキャッシュミス制御信号１５１とＡＮＤするなどの方法でリクエストを無効状態に変更し、キャッシュメモリ２２からのリクエストをメモリコントローラ３に到達する前に遮断する。
周期時間がまだ十分残っていてもこれ以降のバスリクエスト（キャッシュメモリ２２からのリクエスト）を受け付けないようにするため、これ以降、低優先度タスク実行時のキャッシュミスの対象データがキャッシュメモリ２２に書き込まれず、このため、高優先度タスク実行時に使用の可能性のあるキャッシュデータが追い出されることがなく、低優先度タスクによるこれ以上のキャッシュ汚染を防止することができる。
【００３５】
これらの作用により図２４に示した従来の動作は、図１０に示したように変わる。
図１０で灰色に塗った時間帯では低優先度タスク実行時のキャッシュミスがサービスされないためＣＰＵの動作は止まることになる。
灰色の部分の終了は、割り込み信号によりこのリクエスト抑止状態を解除することで発生する。解除後に、低優先度タスクにより既にＣＰＵコア２１、キャッシュメモリ２２、メモリインターフェイス回路２３内でバッファリングされたリクエストが発行されることがあるがその数は少ないため影響は小さい。
この抑止により、高優先度タスクの実行処理時間のばらつきが減りその分だけ高優先度タスクの仕事量を増やすかあるいは周期時間を短くして性能を向上できる。
この動作を図１２を使って説明する。
割り込みコントローラ６から割り込み信号６１が入り、図１２に示した割り込みハンドラとＲＴＯＳのスケジューラにより高優先度タスクが起動される。
それぞれの高優先度タスクは実行すべき処理がなくなるとスケジューラを呼び出して他のタスクにＣＰＵリソースを譲る。
高優先度タスクがなくなるとスケジューラは低優先度タスクの呼び出しまたは低優先度タスクの休止状態を解除する。
低優先度タスクがまだ処理実行中であっても、割り込み信号の受信をきっかけとしてスケジューラが動作してＣＰＵの使用権を奪い高優先度タスクに与える。図中の記号ｔＨは高優先度タスクの動作時間を示す。低優先度タスクの列の破線は低優先度タスクが休止状態にあることを示している。
ここまでの動作は既存の技術である。
本実施の形態では、既存の技術と異なり、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
また、本実施の形態では、既存の技術と異なり、優先度取得部１４に現在のタスクの優先度を書き込む。その書き込みは、（１）スケジューラがタスク切替時にその優先度の値を優先度取得部１４に書き込む、（２）スケジューラがタスク切替時にその優先度の値が変化したときのみ優先度取得部１４に書き込む、（３）低優先度タスクが優先度取得部１４に書き込む、などの方法で行う。
【００３６】
なお、図４に許容度指定部１１の実施例を、図５に計数部１２の実施例を、図６に優先度取得部１４の実施例を、図７に比較部１３とキャッシュミス制御部１５乃至回路１７の実施例を示す。
また、図８と図９を使って比較部１３乃至回路１７の別の実施例を示す。
図９では、キャッシュミス制御部１５に信号１４１ｂが入力され低優先度タスクへの遷移はこれにより通知するが高優先度タスクへの遷移は１６１で行っている。一方、図７では、信号１４１ａが優先度を示しておりキャッシュミス制御部１５への信号１４１ｂと１６１の入力は不要である。
【００３７】
このように、本実施の形態によれば、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の許容値を超えた際に、高優先度タスクの実行が開始されるまでキャッシュデータの追い出しを禁止する制御を行い、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータが追い出されることを回避し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにすることができる。
【００３８】
以上、本実施の形態では、
一定時間間隔の周期ごとに優先度が高いタスクが動作し、
その周期時間の余った時間内に優先度が低いタスクが動作し、
新たな周期が始まると再び優先度の高いタスクが動作を開始し、
キャッシュメモリと、キャッシュメモリがミスしてメモリから命令またはデータを読み出し、またはＣＰＵにより書き換えられたキャッシュメモリのデータをメモリに書き込む動作を行うメモリコントローラが存在する組込み機器の構成において、
ａ）前記キャッシュメモリのミスに対して、予め低い優先度のミス回数の許容値を保持する手段；
ｂ）実行中のタスクの優先度をＣＰＵから通知する手段；
ｃ）前記キャッシュメモリのミス回数をタスクの優先度が低い場合に計数する手段（カウンタ）；
ｄ）前記許容回数と前記カウンタの値を比較して許容値を超えたことを検出する手段；
ｅ）前記の検出以降に発生するキャッシュミスへのメモリコントローラのサービスを抑止する手段；
の各手段を備えることにより、
優先度の低いタスクが原因となって発生し、優先度の高いタスクに関係する命令やデータがキャッシュメモリから追い出されるキャッシュ汚染を軽減する構成を説明した。
【００３９】
実施の形態２．
本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、高優先度タスクの実行開始までキャッシュメモリからメモリコントローラへのアクセスを保留させる制御を説明する。
なお、本実施の形態に係る全体構成例を図３に示す。なお、制御装置１の内部構成例は図２に示したとおりである。
また、比較部１３、優先度取得部１４、キャッシュミス制御部１５、優先度切替予測部１６、回路１７の実施例も実施の形態１で示したとおりである。
【００４０】
図３において、メモリコントローラ３は、ビジーである場合に、ＣＰＵ２からメモリコントローラ３にアクセスするときにＣＰＵ２にリクエストを待たせる条件信号５３を回路１７を介して出力する。
このような構成において、本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超える場合に、メモリコントローラ３からのリクエストを待たせる条件信号５３ａにキャッシュミス制御信号１５１をＯＲして条件信号５３を生成し、条件信号５３を出力する。
なお、条件信号５３は、バス信号の一部で、メモリインターフェイス回路２３が新たなリクエストを発行するのを抑止するための信号であり、メモリインターフェイス回路２３は、条件信号５３を受信した場合には、メモリコントローラ３がビジーであると認識し、メモリコントローラ３へのリクエストを保留する。
【００４１】
本実施の形態においても、実施の形態１と同様に低優先度タスク実行時のキャッシュミス回数を計数し、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、制御装置１のキャッシュミス制御部１５からキャッシュミス制御信号１５１が回路１７に出力される。
回路１７では、キャッシュミス制御信号１５１を入力した場合に、メモリコントローラ３がビジーであるときに出力される条件信号５３をＣＰＵ２に出力する。
キャッシュメモリ２２及びメモリインターフェイス回路２３は、条件信号５３により、メモリコントローラ３へのアクセスを保留する。
このように、本実施の形態では、条件信号５３の出力により、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
【００４２】
なお、このリクエストを待たせる条件信号５３の例として非特許文献４に記載のＲｄＲｄｙ＃とＷｒＲｄｙ＃がある。
これらの信号はＨレベルの時にＣＰＵ２を待たせることを意味するため、この場合にはキャッシュミス制御信号１５１とＯＲすればよい。
【００４３】
以上、本実施の形態では、
ａ）新たな周期が始まるタイミングまたはその始まるタイミングを予測する回路にもとづき、キャッシュミスへのメモリコントローラのサービス抑止またはキャッシュミス発生自体の抑止の制御を解除して、再びキャッシュミス動作が行えるようにする手段；
ｂ）キャッシュミスへのメモリコントローラのサービス抑止時に、キャッシュメモリからメモリコントローラへのリクエスト信号をＡＮＤなどにより無効にする回路にその抑止条件を通知するか、もしくはメモリコントローラからキャッシュメモリにリクエストを待たせる条件信号にＯＲなどにより待たせる条件を拡大する回路にその抑止条件を通知する手段；
を備える構成を説明した。
【００４４】
実施の形態３．
本実施の形態では、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御を説明する。
【００４５】
図１１は、本実施の形態に係る全体構成例を示す。
なお、制御装置１の内部構成例は図２に示すとおりである。
また、比較部１３、優先度取得部１４、キャッシュミス制御部１５、優先度切替予測部１６の実施例も実施の形態１で示したとおりである。
【００４６】
図１１の構成では、回路１７に相当するものがなく、キャッシュミス制御信号１５１が割り込みコントローラ６に出力され、新たに割り込み信号として動作する。
つまり、本実施の形態では、実施の形態１と同様に低優先度タスク実行時のキャッシュミス回数を計数し、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、キャッシュミス制御部１５はキャッシュミス制御信号１５１を新たな割り込み信号として割り込みコントローラ６に出力する。
【００４７】
図１３は、本実施の形態に係るタスクの変遷を示すフロー図であり、実施の形態１の図１２に対応している。
図１２の高優先度と低優先度の２種類のタスク優先度に対し、この実施の形態では、中間の優先度のタスクを持つ。図中のｔＭは中間の優先度のタスクの実行期間を示す。
この中間の優先度のタスクは新たな割り込み信号をきかっけとして起動される。
具体的には割り込みハンドラが割り込み要因を分析し、周期の始まりではなくキャッシュミス回数の許容度を超したことによる割り込みと判断してスケジューラが中間の優先度を持つこのタスクを起動する。
その結果、低優先度タスクはＣＰＵの使用権を奪われるためそれ以降は低優先度タスクの実行に起因したキャッシュミスを引き起こすことがなくなる。
【００４８】
この実施の形態ではキャッシュミスへのサービスを止めてしまうわけではないため優先度切替予測部１６は必須ではない。
割り込みの要因をクリアするために優先度切替予測部１６を用いてもよいし、割り込みコントローラ６で要因ごとに微分を取る場合には優先度切替予測部１６は要らない。
この実施の形態の変形として、ＣＰＵコア２１またはキャッシュメモリにキャッシュミス回数を計測するカウンタを持ち、ＣＰＵコア２１にそのカウンタの値を読み出す機械命令手段を持っており、またＣＰＵコア２１または割り込みコントローラの機能を用いて周期より短い時間間隔で割り込みを発生できる場合には、割り込みハンドラがキャッシュミス回数を読み出し周期開始時点のキャッシュミス回数との差分を計算することにより計数部１２と同機能を、割り込みハンドラで参照する変数が許容度指定部と同等の機能を持ってもよい。また、割り込みハンドラでカウンタの読み出しや判定を行わずに中間の優先度のタスクがカウンタの読み出しと判定を行い閾値を超えていない場合には自らタスクを休止状態にして低優先度タスクにＣＰＵ実行権を譲り、閾値を超えた場合にはＣＰＵ実行権を握り続ける制御を行ってもよい。これらの場合には制御装置１は無くてよい。
【００４９】
以上、本実施の形態では、
ａ）低い優先度と高い優先度の中間の優先度のタスクを持つプログラム手段；
ｂ）キャッシュミス回数の許容値とカウンタの値を比較して許容値を超えたことを検出をきっかけに、割り込み動作を開始する手段；
ｃ）割り込み処理プログラムまたはオペレーテイングシステムにより中間の優先度のタスクに制御を移してＣＰＵ処理を占有させることにより低優先度のタスクのサービスを一時的に止めるプログラム手段、
を備える構成を説明した。
【００５０】
実施の形態４．
本実施の形態では、高優先度よりも低い優先度（低優先度又は中間の優先度）のタスクの実行時に、キャッシュメモリのデータの更新を行う例について説明する。
より具体的には、新たな周期が始まる前の中間の優先度タスクの実行時に、高優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期での高優先度タスク実行時のキャッシュミスを軽減する例を説明する。
【００５１】
図１４は、本実施の形態に係る全体構成例を示す。
本実施の形態では、図１１に示した構成に、キャッシュミス記憶装置１８を追加している。
図１４において、キャッシュミス記憶装置１８以外の要素は図１１に示したものと同様である。また、制御装置１の内部構成例は図２に示した通りである。
なお、図１４の例では、キャッシュミス記憶装置１８は、制御装置１からの出力信号１４１により、現在実行中のタスクの優先度を判断することとしているが、他の手段により現在実行中のタスクの優先度が分かるのであれば、本実施の形態では、制御装置１は省略可能である。なお、その場合には中間の優先度タスクへの切り替えを実現するためにＣＰＵ２に内蔵または割り込みコントローラに接続されたタイマーを使用するなどの手段を使用すればよい。
また、本実施の形態では、少なくともＣＰＵ２とキャッシュミス記憶装置１８がデータ処理システムの例となる。
本実施の形態では、キャッシュミス記憶装置１８→メモリコントローラ３→メモリインタフェース２３→キャッシュ更新部２１０の順に情報が伝達されていく。
【００５２】
図２０は、キャッシュミス記憶装置１８の機能ブロックを示す図である。
図２０において、キャッシュミス検知部１８０１は、制御装置１からの出力信号１４１により、現在実行中のタスクの優先度を判断し、また、実施の形態１で説明した計数部１２と同様に、バス５のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する。そして、キャッシュミス検知部１８０１は、高優先度タスクの実行中にキャッシュミスを検出した場合は、当該キャッシュミスが対象とするメモリ４のアドレスをキャッシュミス記憶部１８０２に通知する。
キャッシュミス記憶部１８０２は、キャッシュミス検知部１８０１から通知されたアドレスを記憶する。また、キャッシュミス記憶部１８０２は、ＣＰＵ２から要求のあった場合に、記憶内容をＣＰＵ２に出力する。もしくは、キャッシュミス記憶部１８０２は、低優先度タスクの実行が終了し、中間の優先度タスクの実行が検知された際に、ＣＰＵ２に記憶内容を出力する。
【００５３】
また、本実施の形態では、ＣＰＵコア２１は、高優先度タスクの実行後に低優先度タスクを実行し、低優先度タスクの後、中間の優先度タスクを実行する。
中間の優先度タスクとして、ＣＰＵコア２１は、キャッシュミス記憶部１８０２に記憶されているアドレスを取得するとともに、キャッシュミス記憶部１８０２から取得したアドレスと低優先度タスク実行後のキャッシュメモリ２２に格納されているキャッシュデータが対象としているメモリ４のアドレスとを比較し、比較結果に基づいてキャッシュメモリ２２のデータの更新を行う。
より具体的には、キャッシュミス記憶部１８０２に含まれているがキャッシュデータでは対象とされていないアドレスを抽出し、抽出したアドレスにおいてメインメモリに記憶されているデータを読んでキャッシュメモリ２２に書き込む。
なお、このようなキャッシュメモリ２２のデータ更新を行うＣＰＵコア２１の機能（プログラム）を、以降、キャッシュ更新部２１０と呼ぶ。
【００５４】
以上の説明を前提に、ここで、図２２のフローチャートを用いて本実施の形態に係る動作の概要を説明する。
【００５５】
先ず、キャッシュミス検知部１８０１が、制御装置１からの出力信号１４１に基づき、高優先度タスクの実行の開始を検知する（Ｓ２２０１）。
また、キャッシュミス検知部１８０１は、バス５のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する（Ｓ２２０２でＹＥＳ）（キャッシュミス検知ステップ）。
そして、キャッシュミス検知部１８０１は、検出したキャッシュミスのメモリ４のアドレスをキャッシュミス記憶部１８０２に通知し、キャッシュミス記憶部１８０２が、キャッシュミス検知部１８０１から通知されたアドレスを記憶する（Ｓ２２０３）（キャッシュミス記憶ステップ）。
また、キャッシュミス検知部１８０１が、制御装置１からの出力信号１４１に基づき、低優先度タスクへまたは中間の優先度タスクへの切り替え（Ｓ２２０４でＮＯ、Ｓ２２０５でＹＥＳ）を検知する。
【００５６】
中間の優先度タスクとして、ＣＰＵコア２１で実行されるキャッシュ更新部２１０は、キャッシュミス記憶部１８０２から低優先度タスク実行時に発生したキャッシュミスのアドレスを取得し、低優先度タスク実行後にキャッシュメモリ２２に格納されているキャッシュデータが対象であるメモリ４のアドレスを取得し（Ｓ２２０９，Ｓ２２１０）、それら両方のアドレスを比較する（Ｓ２２０６）（キャッシュ更新ステップ）。
比較の結果、キャッシュメモリ２２から追い出されているデータがあるか否かを判断する（Ｓ２２０７）（キャッシュ更新ステップ）。つまり、キャッシュ更新部２１０は、キャッシュミス記憶部１８０２に含まれているがキャッシュデータでは対象になっていないアドレスがあるかどうかを判断する。そのようなアドレスがあれば、メモリ４でそのアドレスにおいて記憶されているデータは低優先度タスクの実行時にキャッシュメモリ２２から追い出されたデータである。
Ｓ２２０７でＹＥＳの場合は、キャッシュ更新部２１０は、中間の優先度タスクとして、追い出されたデータをメモリ４から取得し、キャッシュメモリ２２にロードする（Ｓ２２０８）（キャッシュ更新ステップ）。
【００５７】
次に、図２０に機能ブロックとして示したキャッシュミス記憶装置１８のハードウェア構成例を図１５に示す。
【００５８】
図１５において、信号１８１は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するＲＡＭのアドレスを示すカウンタ回路のカウントをイネーブルにする信号である。
信号１８２は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するＲＡＭアドレスを示すカウンタ回路の出力信号である。
信号１８３は、ＣＰＵ２よりプログラムにより指定されることにより、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスが記録されたＲＡＭ１８５を読み出すアドレス信号である。
信号１８４は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するＲＡＭ１８５への書き込み動作を制御する信号である。優先度取得部１４により検出されたタスク優先度、バス信号５２がキャッシュミスを示すこと、カウンタの値があふれないことの条件より書込みを許可する。
ＲＡＭ１８５は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するＲＡＭ。この例ではアドレスは１０ビット、データは１９ビットのＲＡＭで、ライト時以外はリード動作をおこなうものである。
ＲＡＭ１８５が、図２０で示したキャッシュミス記憶部１８０２に相当する。
【００５９】
実施の形態１で説明した計数部１２と同様な回路を用いてカウンタを構成してキャッシュミスが発生するたびに、ＲＡＭ１８５に対してカウンタの出力１８２をアドレスとし、デコーダの出力１８４にて書き込み動作を指定し、信号５２より得られたアドレスデータに基づいてＲＡＭ１８５にてキャッシュミスのアドレスを記録し、また、条件信号１８１を生成してカウンタの値を更新する。
カウンタの値がＲＡＭ１８５のアドレス数を超える場合にはそこでカウントを停止するように条件信号１８１は生成される。
これによりキャッシュミスのアドレスを記録でき、また、ＣＰＵからプログラム（キャッシュ更新部２１０）によりＲＡＭ１８５に対して信号５２により読み出し要求が発行された場合は信号５２のアドレス１８３をアドレスとしてＲＡＭ１８５を読み出し、信号５２のデータを駆動する。
この実施の形態において、信号１４１が高い優先度を示すときに、ＲＡＭ１８５にアドレスが記録される。
【００６０】
次に、中間の優先度タスクの具体的な処理内容（図２２のＳ２２０６以降の処理）を図１６に示す。
図１６に示すように、中間の優先度タスクでは、ＲＡＭ１８５の読み出しを順次行う。
図１６に示すＲＡＭ１８５のアドレスは、ＲＡＭ１８５のアドレスをプログラムから見たものに相当し非キャッシュメモリ領域に割りつけられている。
図中の処理「（ｗｒｋｔｂｌ）←（ｔｂｌａｄｒ）」は変数ｔｂｌａｄｒをポインタとして間接読み出しした値をｗｒｋｔｂｌをポインタとした領域に間接書き込みをすることを示している。
この実施の形態において図中の処理７１は、キャッシュをフィルする操作であり、その処理は図１７の処理７２で示される。
７２の処理は、非特許文献２の第１０３ページにて「データ・キャッシュにデータを埋めたい場合はＬＷ命令などを使用してください」と開示されているようにＬＷ命令を使用することにより実現できる。
処理７１は図１４ではＣＰＵコア２１が実行するプログラムの一部であるキャッシュ更新部２１０として動作する。特に図１６の７２は図１４のキャッシュ２２に作用して（ａｄｒ）で示されるメモリの内容をキャッシュにフィルする。
このように、読出したデータに含まれるアドレスを使ってキャッシュアクセス命令またはロード命令を発行してそのアドレスを含むキャッシュラインをキャッシュメモリにロードする（処理７２自体は従来技術）。
【００６１】
図１６でｃｎｔにセットする記録回数値は１８５で記録可能な回数値であるが、実際に記録した数１８２を読み出して使用してもよい。またｃｎｔにキャッシュ更新カウント値変数の値をセットしているがこれにより更新上限値を指定できる。ｃｎｔにセットするこれら２つの値をキャッシュ更新カウント値変数にまとめてもよい。
ＲＡＭ１８５に記録されたアドレス全部に対して処理７１を適用するとそこで発生させたキャッシュミスが互いに他のキャッシュエントリを追い出し合う副作用が発生する場合がある。
その場合にはこの上限回数を小さくすれば副作用を軽減することができる。
このｃｎｔを使わずに図１５のカウンタに同等の機能を設けても同様な効果が得られるのは自明である。
なお、図１６では一旦ｗｒｋｔｂｌというキャッシュ領域に割り付けた表にコピーして２つのループで処理しているが、コピーを使わずにループを１つにしてもよい。
ＲＡＭ１８５に記録されたアドレス全部に対して図１６に示した操作を行う時に、上限回数以外の手段で操作するキャッシュフィルのアドレスを限定してもよい。
限定の方法として、アドレス値の上限と下限をプログラムで１組分を記述する方法、複数組分を記述する方法がある。
また、アドレスの組を表形式で記述してプログラムはループを使って判定してもよい。また、対象とするアドレスを指定する代わりに除外するアドレスを指定してもよい。
異なる優先度のタスクのアドレスが隣接したり同一優先度のアドレスが不連続な場合には、複数組みを指定することにより、その効果が出る。
高優先度のタスクのアドレスを指定する代わりに低優先度タスクのアドレスを指定する場合には、除外するアドレスを指定する効果がある。
また、処理７１の適用においてそのアドレスの下位ビットを用いて計算されるキャッシュメモリのセットアドレスごとに適用回数をプログラムでカウントしてＮ個を超えないようにする制御を行ってもよい。
この数Ｎをセットアソシアティブ方式を採るキャッシュメモリ２２のウェイ数以下にすれば、上記の副作用を軽減できる。
また、高優先度のタスクがキャッシュメモリに残っている場合に、数Ｎをさらに小さく設定することにより、キャッシュメモリに残っているエントリを追い出さないように調整することもできる。
【００６２】
これらの操作は、中間の優先度のタスクとして周期時間内に行われるが、処理の途中で周期時間が終了しても問題はなく、中間の優先度のタスクを中断し、割り込み高優先度の処理を実行できる。
【００６３】
図１６と図１７に示した処理を行うことにより、次の周期で高優先度タスクが使用する可能性が高いキャッシュメモリのエントリを、現在の余った周期時間内で、キャッシュにフィルすることができ、次の周期の高優先度タスクの処理時間の短縮に効果がある。
【００６４】
このように、本実施の形態では、高優先度タスクによりキャッシュミスしＲＡＭ１８５に記録されたキャッシュラインのアドレスをそのＲＡＭから読出し、ミスしたアドレスに対するロード命令を実行することを説明した。
【００６５】
より具体的には、
ａ）キャッシュミスのアドレスを書き込み動作により記録し、ＣＰＵからプログラムからその値を読み出すことができるＲＡＭ手段；
ｂ）キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段；
ｃ）高い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのＲＡＭに記録する手段；
ｄ）中間の優先度のタスクがその記録したアドレスをＲＡＭから読出すプログラム手段；
ｅ）読出したアドレスをＣＰＵに備えたキャッシュアクセス命令、またはロード命令を実行することにより、そのアドレスがキャッシュメモリから追い出されている場合にはキャッシュミスを誘発させる中間の優先度のタスクとしてのプログラム手段；
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期でのキャッシュミスを軽減する構成を説明した。
【００６６】
実施の形態５．
本実施の形態では、実施の形態４の変形例を説明する。
実施の形態４では、高優先度のタスクのキャッシュミスを記録したのに対して、実施の形態５では、低優先度のタスクのキャッシュミスを記録する。
より具体的には、図２０に示したキャッシュミス検知部１８０１は、低優先度タスクの実行中のキャッシュミスを検知し、キャッシュミス記憶部１８０２は、キャッシュミス検知部１８０１により低優先度タスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶する。
そして、次の周期の高優先度タスクの実行前に、中間の優先度タスクとして、キャッシュ更新部２１０が、キャッシュミス記憶部１８０２に記憶されているキャッシュミス（低優先度タスク実行時のキャッシュミス）によりキャッシュメモリ２２に書き込まれたデータのライトバックを行う。
【００６７】
本実施の形態では、全体構成は図１４に示すとおりであり、キャッシュミス記憶装置１８の機能ブロックは図２０に示すとおりであり、キャッシュミス記憶装置１８の実施例は図１５に示すとおりである。
【００６８】
次に、図２３のフローチャートを用いて本実施の形態に係る動作の概要を説明する。
【００６９】
先ず、キャッシュミス検知部１８０１が、制御装置１からの出力信号１４１に基づき、低優先度タスクの実行の開始を検知する（Ｓ２３０１）。
また、キャッシュミス検知部１８０１は、バス５のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する（Ｓ２３０２でＹＥＳ）（キャッシュミス検知ステップ）。
そして、キャッシュミス検知部１８０１は、キャッシュミスのあったアドレスとデータをキャッシュミス記憶部１８０２に通知し、キャッシュミス記憶部１８０２が、キャッシュミス検知部１８０１から通知されたアドレスとデータを記憶する（Ｓ２３０３）（キャッシュミス記憶ステップ）。
また、キャッシュミス検知部１８０１が、制御装置１からの出力信号１４１に基づき、低優先度タスクへの切り替え（Ｓ２３０４でＹＥＳ）及び中間の優先度タスクへの切り替え（Ｓ２３０５でＹＥＳ）を検知する。
【００７０】
中間の優先度タスクとして、ＣＰＵコア２１のキャッシュ更新部２１０は、キャッシュミス記憶部１８０２から記憶内容を取得し、キャッシュミス記憶部１８０２の記憶内容を解析し（Ｓ２３０５）（キャッシュ更新ステップ）、ライトバックするデータがあるか否かを判断する（Ｓ２３０６）（キャッシュ更新ステップ）。
Ｓ２３０６でＹＥＳの場合は、キャッシュ更新部２１０は、中間の優先度タスクとして、該当するキャッシュデータをライトバックし、ライトバックしたデータをキャッシュメモリ２２から追い出す（Ｓ２３０７）（キャッシュ更新ステップ）。
【００７１】
また、中間の優先度タスクの詳細については、本実施の形態では、図１６の処理７１として図１８に記載の処理７１ｂを用いることが異なり他の処理は実施の形態４と同様である。
なお、処理７１ｂにおいて、処理７３は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックする処理であり、非特許文献２の第１０１ページに記載のＨｉｔ＿Ｗｒｉｔｅ＿Ｂａｃｋオペレーションにより実現可能である。
また、優先度取得部１４にセットする値を変えることにより、低優先度のタスクのキャッシュミスを記録することができる。
【００７２】
この実施の形態では、低優先度タスクがキャッシュミスを行いその内容を書き換えた場合にそのライトバックを、中間の優先度のタスクで実行するものである。
この効果としては、次の周期で高優先度タスクが使用するキャッシュメモリのエントリがミスをしその時に低優先度タスクのライトバックが発生してその結果としてミスのフィルが遅れる場合に、現在の余った周期時間内で、ライトバックを事前に行うことができ、次の周期の高優先度タスクの処理時間の短縮に効果がある。
つまり、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期が始まる前に予め中間の優先度タスクとして完了させておくことにより、新たな周期の高優先度タスク実行時にはライトバックが発生せず、高優先度タスクの処理効率を高めることができる。
【００７３】
このように、本実施の形態では、低優先度タスクの実行時にミスしてＲＡＭ１８５に記録されたキャッシュラインのアドレスをそのＲＡＭから読出し、そのアドレスがまだキャッシュにダーティラインとして残っていれば強制的にライトバックを実行することを説明した。
【００７４】
また、本実施の形態では、
ａ）キャッシュミスのアドレスを書き込み動作により記録し、ＣＰＵからプログラムからその値を読み出すことができるＲＡＭ手段；
ｂ）キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段；
ｃ）低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのＲＡＭに記録する手段；
ｄ）中間の優先度のタスクがその記録したアドレスをＲＡＭから読出すプログラム手段；
ｅ）読出したアドレスをＣＰＵに備えたキャッシュアクセス命令によりキャッシュメモリに存在して書き換えられているか否かを判定し、書き換えられていた場合にはメモリへの書き戻しを行なうとともにそのエントリを無効化またはリードデータとして残す中間の優先度のタスクとしてのプログラム手段；
を備えることにより、新たな周期が始まる前に低い優先度のデータの書き戻しをできるだけ多く完了させることにより、新たな周期でのキャッシュミスに伴う書き戻しを減らしそのミス時間を短縮する構成を説明した。
【００７５】
実施の形態６．
実施の形態５では、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期の開始前に中間の優先度タスクとして行うものである。つまり、実施の形態５では、ダーティラインが対象である。
本実施の形態では、ダーティかクリーンかの区別なしに、キャッシュ更新部２１０が中間の優先度タスクとして、キャッシュミス記憶部１８０２に記憶されているキャッシュミス（低優先度タスク実行時のキャッシュミス）によりキャッシュメモリ２２に書き込まれたデータの追い出しを行う例を説明する。
【００７６】
本実施の形態では、全体構成は図１４に示すとおりであり、キャッシュミス記憶装置１８の機能ブロックは図２０に示すとおりであり、キャッシュミス記憶装置１８の実施例は図１５に示すとおりである。
【００７７】
また、本実施の形態では、図２３のフローチャートで、キャッシュミス記憶装置１８に格納されているキャッシュミスのデータのうちライトバックが必要なデータはライトバックを行ってキャッシュメモリ２２からの追い出し（エントリの無効化）を行い、ライトバックが不要なデータはそのままキャッシュメモリ２２からの追い出し（エントリの無効化）が行われる。
【００７８】
また、中間の優先度タスクの詳細については、本実施の形態では、図１８の処理７１ｂの代わりに図１９の処理７１ｃを用いる。
処理７１ｃにおいて、処理７４は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックしかつ無効化し、クリーンヒットしたエントリを無効化する処理であり、非特許文献３の第３ページから第１６ページに記載のｄｃｂｓｔ又はｄｃｂｆ命令により実現可能である。
【００７９】
この実施の形態では、前述のように、低優先度のタスクのキャッシュミスをダーティかクリーンかの区別なしにキャッシュより追い出す。
周期（Ｋ）でヒットしさらに周期（Ｋ＋１）でも高優先度タスクにヒットするであろうキャッシュエントリを周期（Ｋ＋１）の高優先度タスクの別のキャッシュエントリがそのミスのために追い出す事象がある。
この実施の形態の効果としては、実施の形態５のライトバックだけでなく、現在の周期（Ｋ）の次の周期（Ｋ＋１）で高優先度タスクが使用するキャッシュメモリのエントリがミスをし周期（Ｋ）で低優先度タスクがフィルしたエントリが周期（Ｋ＋１）でまだキャッシュエントリを占有している場合には、周期（Ｋ）の余った周期時間内で空きのキャッシュエントリを作ることができ、その事象により発生するオーバヘッドを軽減でき高優先度タスクの処理時間の短縮に効果がある。
【００８０】
以上、本実施の形態では、低優先度タスクによりキャッシュミスしＲＡＭ１８５に記録されたキャッシュラインのアドレスをそのＲＡＭから読出し、そのアドレスがまだキャッシュに残っていれば強制的にライトバック後に無効化あるいは無効化するキャッシュアクセス命令を実行することを説明した。
【００８１】
より具体的には、本実施の形態では、
ａ）キャッシュミスのアドレスを書き込み動作により記録し、ＣＰＵからプログラムからその値を読み出すことができるＲＡＭ手段；
ｂ）キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段；
ｃ）低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのメモリに記録する手段；
ｄ）中間の優先度のタスクがその記録したアドレスをＲＡＭから読出すプログラム手段；
ｅ）読出したアドレスをＣＰＵに備えたキャッシュアクセス命令によりキャッシュメモリに存在しているか否かを判定し、存在していればキャッシュメモリから追い出す命令を実行する中間の優先度のタスクとしてのプログラム手段；
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリのミス時に空きのキャッシュエントリを増やし、高い優先度のタスクのキャッシュエントリが置換対象となるのを軽減する構成を説明した。
【００８２】
なお、実施の形態４〜６において、中間の優先度タスクとして、キャッシュアクセス命令、またはロード命令の実行を適用するときに、
ａ）予め用意した判定式を用いてその適用をするか否かを判断するプログラム手段；
ｂ）表を引いて、その適用をするか否かを判断するプログラム手段；
のいずれかを備えて、キャッシュ汚染の軽減の確度を高めるようにしてもよい。
例えば、上記の判定式又は表に閾値を設定しておき、実施の形態４の場合は、ＲＡＭ１８５に記憶されているがキャッシュメモリ２２のキャッシュデータが対象としていないアドレスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。同様に、実施の形態５の場合は、ＲＡＭ１８５に記憶されているライトバックが必要なキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。更に、実施の形態６の場合は、ＲＡＭ１８５に記憶されているキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。
【符号の説明】
【００８３】
１  制御装置、２  ＣＰＵ、３  メモリコントローラ、４  メモリ、５  バス、６  割り込みコントローラ、１１  許容度指定部、１２  計数部、１３  比較部、１４  優先度取得部、１５  キャッシュミス制御部、１６  優先度切替予測部、１７  回路、１８  キャッシュミス記憶装置、２１  ＣＰＵコア、２２  キャッシュメモリ、２３  メモリインターフェイス回路、１８５  ＲＡＭ、１８０１  キャッシュミス検知部、１８０２  キャッシュミス記憶部。
【図１】
2011048799.tif 000003
【図２】
2011048799.tif 000004
【図３】
2011048799.tif 000005
【図４】
2011048799.tif 000006
【図５】
2011048799.tif 000007
【図６】
2011048799.tif 000008
【図７】
2011048799.tif 000009
【図８】
2011048799.tif 000010
【図９】
2011048799.tif 000011
【図１１】
2011048799.tif 000012
【図１２】
2011048799.tif 000013
【図１３】
2011048799.tif 000014
【図１４】
2011048799.tif 000015
【図１５】
2011048799.tif 000016
【図１６】
2011048799.tif 000017
【図１７】
2011048799.tif 000018
【図１８】
2011048799.tif 000019
【図１９】
2011048799.tif 000020
【図２０】
2011048799.tif 000021
【図２１】
2011048799.tif 000022
【図２２】
2011048799.tif 000023
【図２３】
2011048799.tif 000024
【図２４】
2011048799.tif 000025
【図１０】
2011048799.tif 000026