JP5322854B2 - 制御装置及びデータ処理システム - Google Patents
制御装置及びデータ処理システム Download PDFInfo
- Publication number
- JP5322854B2 JP5322854B2 JP2009199010A JP2009199010A JP5322854B2 JP 5322854 B2 JP5322854 B2 JP 5322854B2 JP 2009199010 A JP2009199010 A JP 2009199010A JP 2009199010 A JP2009199010 A JP 2009199010A JP 5322854 B2 JP5322854 B2 JP 5322854B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- task
- priority task
- priority
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
そのため、その時間制約を満たすリアルタイム制御が必要となる。
そのような入出力が複数あるときはそれぞれまたは他の入出力装置との連携を考慮した制御をプログラムとして実装する。
そのような制御プログラムの実装を容易化するために、独立した個別のプログラムをタスクとして用意し、リアルタイムオペレーティングシステム(以下、RTOSと呼ぶ)の制御の下に動作させる従来技術がある。
この方法では、各タスクは優先度を持ち、RTOSは入出力機器やタイマーなどからの割込みとタスク間でやりとりするメッセージを要因として、タスクの起動、休止、実行などの状態を制御して複数タスクの並行動作を行っている。
そのため、キャッシュメモリのミスやライトバック方式(コピーバック方式とも呼ばれる)使用時のデータのDRAMへの書き戻しが発生し、それらの事象の発生が予測できず、リアルタイム処理の時間制約を守るのが難しいという課題がある。
さらに、RTOSによるタスクの切り替えを行うと、そのことにより次のタスクの命令列がキャッシュメモリにないためにミスしたり、次のタスクが使用するデータがキャッシュメモリにないことによるミス、それに伴い前のタスクがキャッシュメモリ内で書き換えたデータをDRAMに反映するライトバック処理が発生する。
キャッシュメモリを効率よく動作させるためには、再利用される命令やデータをキャッシュメモリに残し、再利用頻度の低いものはキャッシュメモリに残さないようなキャッシュメモリの置換制御を行う。
この制御方式はFIFO(First In First Out)やLRU(Least Recently Used)などの実装で行われる。
しかし、そのような制御を行っても再利用度が低いデータが再利用度の高いデータを追い出してしまうキャッシュ汚染という現象がある。
その汚染の原因が連想方式に依存した場合は、連想回路の改善たとえばセットアソシアティブ方式のウェイ(コンパートメントとも呼ぶ)を増やすことで解決している。
1つの方法はウェイの置換に関してウェイごとに置換を許可するか否かを指定したり、アドレスの値を見て置換を制御する方式が特許文献1で開示されている。
特許文献1の技術では消費電力とキャッシュ性能の向上を目的としている。
そのため、キャッシュ汚染を軽減するような改良を半導体ユーザが加えるのが困難となり、組込み機器メーカである半導体ユーザがそのアプリケーションのタスクの挙動の特性に合った性能改良を行うのは極めて難しい。
ユーザの回路を半導体として実現する方法にSoC(System On a Chip)という実装方法があるが、それに搭載するCPUコアやキャッシュメモリの制御方法はLSIメーカが用意したものを用いるのが一般的であり、これにも半導体ユーザが性能改良を行うのが難しいという一般的な課題がある(課題1)。
まず、小さいプログラムの場合は命令領域や扱うデータの種類が少なければウェイの使い方を想定できるが、大規模なプログラムではそれができない。
ウェイそのものではなくアドレスを指定して制御する場合には、大規模なプログラムでは、プログラムの並びや変数(データ)の配置を調整するのは容易ではない。
プログラムや変数のアドレスを指定する方法においては、その指定できる数が少なく、大規模プログラムには使用できないかもしくは効果が限定される。
また、アドレスで指定する場合であっても、変数が汎用的なバッファとして確保され、バッファの用途が動的に変化する場合や高優先度タスクから低優先度タスクにバッファの使用権が移譲された場合には、キャッシュメモリに設定した値を変更する処理が必要となる。
このように大規模なプログラムでは従来技術が効果的に作用しないことが多い(課題2)。
リアルタイム処理では、優先度が高いタスクの命令やデータがキャッシュメモリに残って再利用されミスが少なくタスクが高速に実行されることが期待され、低優先度のタスクについてはキャッシュメモリに残らずミスが多発しその部分の処理時間が掛かっても容認できるという考え方が一般的である。
リアルタイムタスクを用いた周期処理では、タスクの優先度による制御がキャッシュ汚染をさらに拡大するという課題がある。
それは、周期内で実行すべき高優先度のタスクがなくなり、低優先度のタスクに切り替わりそれがキャッシュ汚染を引き起こし、次に高優先度タスクに切り替わった後にキャッシュ汚染の後遺症として高優先度タスクがキャッシュミスを多発したり低優先度タスクのライトバックのためにキャッシュへのロードが待たされることである。
装置が決められた周期で高優先度タスクを繰り返し、その隙間に低優先度タスクが実行される様子を図24に示す。
図中の太い矢印が高優先度タスクの実行を、細い矢印が低優先度タスクの実行を、縦線がキャッシュミスの発生した事象を示している。
最初のサイクル1では周期の1/3ほどの時間で高優先度タスクが終了し低優先度タスクに切り替わる。
周期の残り2/3の時間を低優先度タスクが動作してキャッシュミスを多く発生してキャッシュ汚染をする。
次にタイマー割り込みなどにより次の周期(サイクル2)が始まり、高優先度タスクに切り替わる。
するとキャッシュ汚染のために高優先度タスクに必要な命令やデータがキャッシュメモリから追い出されてしまったためキャッシュミスを発生し、高優先度タスクの実行時間が延びる。
次のサイクル3はサイクル1と同様な挙動を示し、サイクル4はサイクル2と同様となり交互に繰り返すこととなる。
高優先度のタスクが複数あり毎周期ではなく一定間隔で切り替わる場合や、低優先度のタスクが複数種ある場合などはこの繰り返し周期は複雑化する。
しかしながら、低優先度タスクがネットワーク通信処理や表示処理など多量のメモリアクセスを行う場合にはキャッシュ汚染が多く、余裕をかなり持つ必要性が生じる。
またキャッシュメモリ容量が増大してきたことと非特許文献に記載のメモリウォール問題によりその余裕時間を長く確保する必要性が増大してきたことにより、周期の短縮を行うことが益々困難になってきた(課題3)。
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
前記高優先度タスクよりも低い優先度のタスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
前記計数部により計数されたキャッシュミス回数と所定の閾値とを比較する比較部と、
前記比較部による比較の結果、前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする。
図1は、本実施の形態に係る低優先度タスクによるキャッシュミスを抑制する制御装置1とその位置づけを示す組込み機器の全体構成例を示す図である。
図1の構成では、CPU2、メモリコントローラ3、メモリ4、バス5、割り込みコントローラ6及び回路17がデータ処理システムを構成する。
回路17は、バス5に接続されたメモリコントローラ3へのバス5からのリクエスト信号51をゲートしてメモリコントローラ3へのリクエスト信号51aを生成する回路である。
制御装置1は、回路17へのキャッシュミス制御信号151を出力する。
また、信号61は、割り込みコントローラ6より出力されCPU2に入力される割り込み信号である。
信号62は、入出力装置またはタイマーや周期信号を生成する装置より発せられる各々の割り込み信号である。
信号211は、CPUコア21とキャッシュメモリ22のインターフェイス信号である。
信号221は、キャッシュメモリ22とメモリインターフェイス回路23の間の信号である。
信号233は、CPUコア21とメモリインターフェイス回路23とのインターフェイス信号で、CPU外の非キャッシュメモリ領域へのアクセスに使用される信号である。
CPU2はCPUとしての機能を持つCPUコア21とCPUコア21の外部にあるキャッシュメモリ22と、バス5と接続するメモリインターフェイス回路23からなる。
CPUコア21はキャッシュメモリ22への格納対象のデータはキャッシャブル領域としてパス211を通じてアクセスする。
キャッシュメモリ22に格納しない入出力へのアクセスはパス233を介して行う。
CPUの構成によってはパス233を持たないものもある。
割り込みコントローラ6は、CPUへの割り込み信号61を束ねるもので入力信号62a乃至62cを入力する。
CPUの構成によっては入力信号62a乃至62cが直にCPUに入力され割り込みコントローラ6がないものもある。
なお、入力信号62の一部である62a乃至62bは、制御装置1にも入力される。
そして、本実施の形態に係る制御装置1は、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。
より具体的には、制御装置1は、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の許容値を超える場合に、高優先度タスクの実行が開始されるまでキャッシュメモリ22からメモリ4へのキャッシュデータの追い出しを禁止する制御を行って、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータの追い出しを制限し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにする。
キャッシュメモリ22からメモリ4へのキャッシュデータの追い出しを禁止する制御には、大きく分けて、キャッシュメモリ22からメモリコントローラ3へのアクセスを遮断又は保留する制御と、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御の2種類がある。
本実施の形態と実施の形態2では、キャッシュメモリ22からメモリコントローラ3へのアクセスを遮断又は保留する制御の例を説明し、実施の形態3で、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御の例を説明する。
図2は、本実施の形態に係る制御装置1の内部構成例を示す。
計数部12は、低優先度タスクの実行によって引き起こされたキャッシュミス回数をカウントする。
比較部13は、許容度指定部11により指定されているキャッシュミスの許容回数と計数部12により計数されたキャッシュミス回数とを比較する。
優先度取得部14は、CPU2から実行中のタスクの優先度と周期の切り替わり通知を受信して保持する。
優先度切替予測部16は、入力信号62の一部であり周期切り替えに関連する62a乃至62bを入力してタスク優先度の切り替わりを予測する。
つまり、キャッシュミス制御部15は、低優先度タスク実行時に、比較部13による比較の結果、計数部12により計数されたキャッシュミス回数が許容回数を超えた際に、高優先度タスクの実行が開始されるまでキャッシュメモリ22に格納されているキャッシュデータの追い出しの要因となる新たなキャッシュミスを発生させないためにキャッシュミス制御信号151を出力する。
キャッシュミス制御信号151は、回路17に出力される。キャッシュミス制御信号151は、具体的には、回路17に、メモリインターフェイス回路23からリクエスト信号51を受信してもメモリコントローラ3にリクエスト信号51aを出力しないように指示する信号であり、リクエスト信号51aの出力を制限することによりキャッシュメモリ22からメモリコントローラ3へのアクセスを遮断し、この結果、キャッシュミスの対象のデータがメモリ4からキャッシュメモリ22に提供されず、キャッシュメモリ4に格納されているキャッシュデータの追い出しが発生しない。CPUの構成によってはリクエスト信号51aが出力された時点ですでにキャッシュメモリから追い出しを完了しているものもあるが、その場合でもそのあとに発生する追い出しを抑制できる。
また、信号132は、許容度指定部11の出力で低優先度タスクのキャッシュミス回数の許容度の値を示す信号である。
信号133は、計数部12の出力で低優先度タスクのキャッシュミスの回数の値を示す信号である。
信号141は、優先度取得部14の出力で、低優先度タスクのキャッシュミスのカウント動作を制御する信号で、リセットとカウントイネーブルを制御するものである。
キャッシュミス制御信号151は、キャッシュミス制御部15の出力で、バスのリクエスト信号を無効またはその生成を抑止する信号である。
信号161は、優先度切替予測部16で生成された信号で、割り込み信号よりタスク優先度が変更される可能性を予測する信号である。
以下では、適宜、図21のフローチャートを用いて動作を説明する。
組込み機器の周期処理の周期は、割り込みコントローラ6の入力信号に接続されたタイマー回路または入出力装置より割り込み信号として与えられる。
CPUコア21はその割り込みにより新たな周期を開始する。
CPUコア21は、その周期の初めに優先度取得部14に対して高優先度タスクの実行を開始したことを通知する(この通知を行わずに代わりに優先度切替予測部16が優先度取得部14に通知してもよい)。
また、CPUコア21は実行するタスクを低優先度のものに変更するとバス5経由で優先度取得部14のそのことを通知する(高優先度と低優先度のいずれかという状態を通知する代わりに、複数ビットからなる値を優先度として書き込み、優先度取得部14が内部でそれを判定してもよい。また、タスクやプロセスのIDを優先度取得部14に書き込み、優先度取得部14に予め与えられた情報により優先度取得部14が優先度を表引きまたは計算により求めても同様の効果が得られる)。
制御装置1では、CPUコア21からの通知等により、優先度取得部14が低優先度タスクの開始を検知する(S2101)。
また、計数部12はバス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスであることを判別し(S2102でYES)、出力信号141よりその時点のタスクが低優先度タスクであれば計数部12は内部のカウンタをインクリメントする(S2103)(計数ステップ)。なお、出力信号141は、現在実行中のタスクが高優先度か低優先度かを通知する信号である。
次に、比較部13が、計数部12のカウンタの値と許容度指定部11で指定された許容値を比較し(S2104)(比較ステップ)、カウンタ値が許容値を超えるならば(S2104でYES)、出力信号131を用いて、カウンタ値が許容値を超えたことをキャッシュミス制御部15に通知する。
なお、上記に代えて、ダウンカウンタとして実装するようにしてもよい。
より具体的には、キャッシュミス制御部15は、出力信号141により現在実行中のタスクの優先度が低ければ、キャッシュミス制御信号151をリクエスト抑止状態として回路17に伝達する。
回路17はリクエスト抑止状態ならば、バス5のリクエスト信号51をキャッシュミス制御信号151とANDするなどの方法でリクエストを無効状態に変更し、キャッシュメモリ22からのリクエストをメモリコントローラ3に到達する前に遮断する。
周期時間がまだ十分残っていてもこれ以降のバスリクエスト(キャッシュメモリ22からのリクエスト)を受け付けないようにするため、これ以降、低優先度タスク実行時のキャッシュミスの対象データがキャッシュメモリ22に書き込まれず、このため、高優先度タスク実行時に使用の可能性のあるキャッシュデータが追い出されることがなく、低優先度タスクによるこれ以上のキャッシュ汚染を防止することができる。
図10で灰色に塗った時間帯では低優先度タスク実行時のキャッシュミスがサービスされないためCPUの動作は止まることになる。
灰色の部分の終了は、割り込み信号によりこのリクエスト抑止状態を解除することで発生する。解除後に、低優先度タスクにより既にCPUコア21、キャッシュメモリ22、メモリインターフェイス回路23内でバッファリングされたリクエストが発行されることがあるがその数は少ないため影響は小さい。
この抑止により、高優先度タスクの実行処理時間のばらつきが減りその分だけ高優先度タスクの仕事量を増やすかあるいは周期時間を短くして性能を向上できる。
この動作を図12を使って説明する。
割り込みコントローラ6から割り込み信号61が入り、図12に示した割り込みハンドラとRTOSのスケジューラにより高優先度タスクが起動される。
それぞれの高優先度タスクは実行すべき処理がなくなるとスケジューラを呼び出して他のタスクにCPUリソースを譲る。
高優先度タスクがなくなるとスケジューラは低優先度タスクの呼び出しまたは低優先度タスクの休止状態を解除する。
低優先度タスクがまだ処理実行中であっても、割り込み信号の受信をきっかけとしてスケジューラが動作してCPUの使用権を奪い高優先度タスクに与える。図中の記号tHは高優先度タスクの動作時間を示す。低優先度タスクの列の破線は低優先度タスクが休止状態にあることを示している。
ここまでの動作は既存の技術である。
本実施の形態では、既存の技術と異なり、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
また、本実施の形態では、既存の技術と異なり、優先度取得部14に現在のタスクの優先度を書き込む。その書き込みは、(1)スケジューラがタスク切替時にその優先度の値を優先度取得部14に書き込む、(2)スケジューラがタスク切替時にその優先度の値が変化したときのみ優先度取得部14に書き込む、(3)低優先度タスクが優先度取得部14に書き込む、などの方法で行う。
また、図8と図9を使って比較部13乃至回路17の別の実施例を示す。
図9では、キャッシュミス制御部15に信号141bが入力され低優先度タスクへの遷移はこれにより通知するが高優先度タスクへの遷移は161で行っている。一方、図7では、信号141aが優先度を示しておりキャッシュミス制御部15への信号141bと161の入力は不要である。
一定時間間隔の周期ごとに優先度が高いタスクが動作し、
その周期時間の余った時間内に優先度が低いタスクが動作し、
新たな周期が始まると再び優先度の高いタスクが動作を開始し、
キャッシュメモリと、キャッシュメモリがミスしてメモリから命令またはデータを読み出し、またはCPUにより書き換えられたキャッシュメモリのデータをメモリに書き込む動作を行うメモリコントローラが存在する組込み機器の構成において、
a)前記キャッシュメモリのミスに対して、予め低い優先度のミス回数の許容値を保持する手段;
b)実行中のタスクの優先度をCPUから通知する手段;
c)前記キャッシュメモリのミス回数をタスクの優先度が低い場合に計数する手段(カウンタ);
d)前記許容回数と前記カウンタの値を比較して許容値を超えたことを検出する手段;
e)前記の検出以降に発生するキャッシュミスへのメモリコントローラのサービスを抑止する手段;
の各手段を備えることにより、
優先度の低いタスクが原因となって発生し、優先度の高いタスクに関係する命令やデータがキャッシュメモリから追い出されるキャッシュ汚染を軽減する構成を説明した。
本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、高優先度タスクの実行開始までキャッシュメモリからメモリコントローラへのアクセスを保留させる制御を説明する。
なお、本実施の形態に係る全体構成例を図3に示す。なお、制御装置1の内部構成例は図2に示したとおりである。
また、比較部13、優先度取得部14、キャッシュミス制御部15、優先度切替予測部16、回路17の実施例も実施の形態1で示したとおりである。
このような構成において、本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超える場合に、メモリコントローラ3からのリクエストを待たせる条件信号53aにキャッシュミス制御信号151をORして条件信号53を生成し、条件信号53を出力する。
なお、条件信号53は、バス信号の一部で、メモリインターフェイス回路23が新たなリクエストを発行するのを抑止するための信号であり、メモリインターフェイス回路23は、条件信号53を受信した場合には、メモリコントローラ3がビジーであると認識し、メモリコントローラ3へのリクエストを保留する。
回路17では、キャッシュミス制御信号151を入力した場合に、メモリコントローラ3がビジーであるときに出力される条件信号53をCPU2に出力する。
キャッシュメモリ22及びメモリインターフェイス回路23は、条件信号53により、メモリコントローラ3へのアクセスを保留する。
このように、本実施の形態では、条件信号53の出力により、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
これらの信号はHレベルの時にCPU2を待たせることを意味するため、この場合にはキャッシュミス制御信号151とORすればよい。
a)新たな周期が始まるタイミングまたはその始まるタイミングを予測する回路にもとづき、キャッシュミスへのメモリコントローラのサービス抑止またはキャッシュミス発生自体の抑止の制御を解除して、再びキャッシュミス動作が行えるようにする手段;
b)キャッシュミスへのメモリコントローラのサービス抑止時に、キャッシュメモリからメモリコントローラへのリクエスト信号をANDなどにより無効にする回路にその抑止条件を通知するか、もしくはメモリコントローラからキャッシュメモリにリクエストを待たせる条件信号にORなどにより待たせる条件を拡大する回路にその抑止条件を通知する手段;
を備える構成を説明した。
本実施の形態では、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御を説明する。
なお、制御装置1の内部構成例は図2に示すとおりである。
また、比較部13、優先度取得部14、キャッシュミス制御部15、優先度切替予測部16の実施例も実施の形態1で示したとおりである。
つまり、本実施の形態では、実施の形態1と同様に低優先度タスク実行時のキャッシュミス回数を計数し、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、キャッシュミス制御部15はキャッシュミス制御信号151を新たな割り込み信号として割り込みコントローラ6に出力する。
図12の高優先度と低優先度の2種類のタスク優先度に対し、この実施の形態では、中間の優先度のタスクを持つ。図中のtMは中間の優先度のタスクの実行期間を示す。
この中間の優先度のタスクは新たな割り込み信号をきかっけとして起動される。
具体的には割り込みハンドラが割り込み要因を分析し、周期の始まりではなくキャッシュミス回数の許容度を超したことによる割り込みと判断してスケジューラが中間の優先度を持つこのタスクを起動する。
その結果、低優先度タスクはCPUの使用権を奪われるためそれ以降は低優先度タスクの実行に起因したキャッシュミスを引き起こすことがなくなる。
割り込みの要因をクリアするために優先度切替予測部16を用いてもよいし、割り込みコントローラ6で要因ごとに微分を取る場合には優先度切替予測部16は要らない。
この実施の形態の変形として、CPUコア21またはキャッシュメモリにキャッシュミス回数を計測するカウンタを持ち、CPUコア21にそのカウンタの値を読み出す機械命令手段を持っており、またCPUコア21または割り込みコントローラの機能を用いて周期より短い時間間隔で割り込みを発生できる場合には、割り込みハンドラがキャッシュミス回数を読み出し周期開始時点のキャッシュミス回数との差分を計算することにより計数部12と同機能を、割り込みハンドラで参照する変数が許容度指定部と同等の機能を持ってもよい。また、割り込みハンドラでカウンタの読み出しや判定を行わずに中間の優先度のタスクがカウンタの読み出しと判定を行い閾値を超えていない場合には自らタスクを休止状態にして低優先度タスクにCPU実行権を譲り、閾値を超えた場合にはCPU実行権を握り続ける制御を行ってもよい。これらの場合には制御装置1は無くてよい。
a)低い優先度と高い優先度の中間の優先度のタスクを持つプログラム手段;
b)キャッシュミス回数の許容値とカウンタの値を比較して許容値を超えたことを検出をきっかけに、割り込み動作を開始する手段;
c)割り込み処理プログラムまたはオペレーテイングシステムにより中間の優先度のタスクに制御を移してCPU処理を占有させることにより低優先度のタスクのサービスを一時的に止めるプログラム手段、
を備える構成を説明した。
本実施の形態では、高優先度よりも低い優先度(低優先度又は中間の優先度)のタスクの実行時に、キャッシュメモリのデータの更新を行う例について説明する。
より具体的には、新たな周期が始まる前の中間の優先度タスクの実行時に、高優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期での高優先度タスク実行時のキャッシュミスを軽減する例を説明する。
本実施の形態では、図11に示した構成に、キャッシュミス記憶装置18を追加している。
図14において、キャッシュミス記憶装置18以外の要素は図11に示したものと同様である。また、制御装置1の内部構成例は図2に示した通りである。
なお、図14の例では、キャッシュミス記憶装置18は、制御装置1からの出力信号141により、現在実行中のタスクの優先度を判断することとしているが、他の手段により現在実行中のタスクの優先度が分かるのであれば、本実施の形態では、制御装置1は省略可能である。なお、その場合には中間の優先度タスクへの切り替えを実現するためにCPU2に内蔵または割り込みコントローラに接続されたタイマーを使用するなどの手段を使用すればよい。
また、本実施の形態では、少なくともCPU2とキャッシュミス記憶装置18がデータ処理システムの例となる。
本実施の形態では、キャッシュミス記憶装置18→メモリコントローラ3→メモリインタフェース23→キャッシュ更新部210の順に情報が伝達されていく。
図20において、キャッシュミス検知部1801は、制御装置1からの出力信号141により、現在実行中のタスクの優先度を判断し、また、実施の形態1で説明した計数部12と同様に、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する。そして、キャッシュミス検知部1801は、高優先度タスクの実行中にキャッシュミスを検出した場合は、当該キャッシュミスが対象とするメモリ4のアドレスをキャッシュミス記憶部1802に通知する。
キャッシュミス記憶部1802は、キャッシュミス検知部1801から通知されたアドレスを記憶する。また、キャッシュミス記憶部1802は、CPU2から要求のあった場合に、記憶内容をCPU2に出力する。もしくは、キャッシュミス記憶部1802は、低優先度タスクの実行が終了し、中間の優先度タスクの実行が検知された際に、CPU2に記憶内容を出力する。
中間の優先度タスクとして、CPUコア21は、キャッシュミス記憶部1802に記憶されているアドレスを取得するとともに、キャッシュミス記憶部1802から取得したアドレスと低優先度タスク実行後のキャッシュメモリ22に格納されているキャッシュデータが対象としているメモリ4のアドレスとを比較し、比較結果に基づいてキャッシュメモリ22のデータの更新を行う。
より具体的には、キャッシュミス記憶部1802に含まれているがキャッシュデータでは対象とされていないアドレスを抽出し、抽出したアドレスにおいてメインメモリに記憶されているデータを読んでキャッシュメモリ22に書き込む。
なお、このようなキャッシュメモリ22のデータ更新を行うCPUコア21の機能(プログラム)を、以降、キャッシュ更新部210と呼ぶ。
また、キャッシュミス検知部1801は、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する(S2202でYES)(キャッシュミス検知ステップ)。
そして、キャッシュミス検知部1801は、検出したキャッシュミスのメモリ4のアドレスをキャッシュミス記憶部1802に通知し、キャッシュミス記憶部1802が、キャッシュミス検知部1801から通知されたアドレスを記憶する(S2203)(キャッシュミス記憶ステップ)。
また、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、低優先度タスクへまたは中間の優先度タスクへの切り替え(S2204でNO、S2205でYES)を検知する。
比較の結果、キャッシュメモリ22から追い出されているデータがあるか否かを判断する(S2207)(キャッシュ更新ステップ)。つまり、キャッシュ更新部210は、キャッシュミス記憶部1802に含まれているがキャッシュデータでは対象になっていないアドレスがあるかどうかを判断する。そのようなアドレスがあれば、メモリ4でそのアドレスにおいて記憶されているデータは低優先度タスクの実行時にキャッシュメモリ22から追い出されたデータである。
S2207でYESの場合は、キャッシュ更新部210は、中間の優先度タスクとして、追い出されたデータをメモリ4から取得し、キャッシュメモリ22にロードする(S2208)(キャッシュ更新ステップ)。
信号182は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAMアドレスを示すカウンタ回路の出力信号である。
信号183は、CPU2よりプログラムにより指定されることにより、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスが記録されたRAM185を読み出すアドレス信号である。
信号184は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAM185への書き込み動作を制御する信号である。優先度取得部14により検出されたタスク優先度、バス信号52がキャッシュミスを示すこと、カウンタの値があふれないことの条件より書込みを許可する。
RAM185は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAM。この例ではアドレスは10ビット、データは19ビットのRAMで、ライト時以外はリード動作をおこなうものである。
RAM185が、図20で示したキャッシュミス記憶部1802に相当する。
カウンタの値がRAM185のアドレス数を超える場合にはそこでカウントを停止するように条件信号181は生成される。
これによりキャッシュミスのアドレスを記録でき、また、CPUからプログラム(キャッシュ更新部210)によりRAM185に対して信号52により読み出し要求が発行された場合は信号52のアドレス183をアドレスとしてRAM185を読み出し、信号52のデータを駆動する。
この実施の形態において、信号141が高い優先度を示すときに、RAM185にアドレスが記録される。
図16に示すように、中間の優先度タスクでは、RAM185の読み出しを順次行う。
図16に示すRAM185のアドレスは、RAM185のアドレスをプログラムから見たものに相当し非キャッシュメモリ領域に割りつけられている。
図中の処理「(wrktbl)←(tbladr)」は変数tbladrをポインタとして間接読み出しした値をwrktblをポインタとした領域に間接書き込みをすることを示している。
この実施の形態において図中の処理71は、キャッシュをフィルする操作であり、その処理は図17の処理72で示される。
72の処理は、非特許文献2の第103ページにて「データ・キャッシュにデータを埋めたい場合はLW命令などを使用してください」と開示されているようにLW命令を使用することにより実現できる。
処理71は図14ではCPUコア21が実行するプログラムの一部であるキャッシュ更新部210として動作する。特に図16の72は図14のキャッシュ22に作用して(adr)で示されるメモリの内容をキャッシュにフィルする。
このように、読出したデータに含まれるアドレスを使ってキャッシュアクセス命令またはロード命令を発行してそのアドレスを含むキャッシュラインをキャッシュメモリにロードする(処理72自体は従来技術)。
RAM185に記録されたアドレス全部に対して処理71を適用するとそこで発生させたキャッシュミスが互いに他のキャッシュエントリを追い出し合う副作用が発生する場合がある。
その場合にはこの上限回数を小さくすれば副作用を軽減することができる。
このcntを使わずに図15のカウンタに同等の機能を設けても同様な効果が得られるのは自明である。
なお、図16では一旦wrktblというキャッシュ領域に割り付けた表にコピーして2つのループで処理しているが、コピーを使わずにループを1つにしてもよい。
RAM185に記録されたアドレス全部に対して図16に示した操作を行う時に、上限回数以外の手段で操作するキャッシュフィルのアドレスを限定してもよい。
限定の方法として、アドレス値の上限と下限をプログラムで1組分を記述する方法、複数組分を記述する方法がある。
また、アドレスの組を表形式で記述してプログラムはループを使って判定してもよい。また、対象とするアドレスを指定する代わりに除外するアドレスを指定してもよい。
異なる優先度のタスクのアドレスが隣接したり同一優先度のアドレスが不連続な場合には、複数組みを指定することにより、その効果が出る。
高優先度のタスクのアドレスを指定する代わりに低優先度タスクのアドレスを指定する場合には、除外するアドレスを指定する効果がある。
また、処理71の適用においてそのアドレスの下位ビットを用いて計算されるキャッシュメモリのセットアドレスごとに適用回数をプログラムでカウントしてN個を超えないようにする制御を行ってもよい。
この数Nをセットアソシアティブ方式を採るキャッシュメモリ22のウェイ数以下にすれば、上記の副作用を軽減できる。
また、高優先度のタスクがキャッシュメモリに残っている場合に、数Nをさらに小さく設定することにより、キャッシュメモリに残っているエントリを追い出さないように調整することもできる。
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)高い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのRAMに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令、またはロード命令を実行することにより、そのアドレスがキャッシュメモリから追い出されている場合にはキャッシュミスを誘発させる中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期でのキャッシュミスを軽減する構成を説明した。
本実施の形態では、実施の形態4の変形例を説明する。
実施の形態4では、高優先度のタスクのキャッシュミスを記録したのに対して、実施の形態5では、低優先度のタスクのキャッシュミスを記録する。
より具体的には、図20に示したキャッシュミス検知部1801は、低優先度タスクの実行中のキャッシュミスを検知し、キャッシュミス記憶部1802は、キャッシュミス検知部1801により低優先度タスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶する。
そして、次の周期の高優先度タスクの実行前に、中間の優先度タスクとして、キャッシュ更新部210が、キャッシュミス記憶部1802に記憶されているキャッシュミス(低優先度タスク実行時のキャッシュミス)によりキャッシュメモリ22に書き込まれたデータのライトバックを行う。
また、キャッシュミス検知部1801は、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する(S2302でYES)(キャッシュミス検知ステップ)。
そして、キャッシュミス検知部1801は、キャッシュミスのあったアドレスとデータをキャッシュミス記憶部1802に通知し、キャッシュミス記憶部1802が、キャッシュミス検知部1801から通知されたアドレスとデータを記憶する(S2303)(キャッシュミス記憶ステップ)。
また、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、低優先度タスクへの切り替え(S2304でYES)及び中間の優先度タスクへの切り替え(S2305でYES)を検知する。
S2306でYESの場合は、キャッシュ更新部210は、中間の優先度タスクとして、該当するキャッシュデータをライトバックし、ライトバックしたデータをキャッシュメモリ22から追い出す(S2307)(キャッシュ更新ステップ)。
なお、処理71bにおいて、処理73は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックする処理であり、非特許文献2の第101ページに記載のHit_Write_Backオペレーションにより実現可能である。
また、優先度取得部14にセットする値を変えることにより、低優先度のタスクのキャッシュミスを記録することができる。
この効果としては、次の周期で高優先度タスクが使用するキャッシュメモリのエントリがミスをしその時に低優先度タスクのライトバックが発生してその結果としてミスのフィルが遅れる場合に、現在の余った周期時間内で、ライトバックを事前に行うことができ、次の周期の高優先度タスクの処理時間の短縮に効果がある。
つまり、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期が始まる前に予め中間の優先度タスクとして完了させておくことにより、新たな周期の高優先度タスク実行時にはライトバックが発生せず、高優先度タスクの処理効率を高めることができる。
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのRAMに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令によりキャッシュメモリに存在して書き換えられているか否かを判定し、書き換えられていた場合にはメモリへの書き戻しを行なうとともにそのエントリを無効化またはリードデータとして残す中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に低い優先度のデータの書き戻しをできるだけ多く完了させることにより、新たな周期でのキャッシュミスに伴う書き戻しを減らしそのミス時間を短縮する構成を説明した。
実施の形態5では、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期の開始前に中間の優先度タスクとして行うものである。つまり、実施の形態5では、ダーティラインが対象である。
本実施の形態では、ダーティかクリーンかの区別なしに、キャッシュ更新部210が中間の優先度タスクとして、キャッシュミス記憶部1802に記憶されているキャッシュミス(低優先度タスク実行時のキャッシュミス)によりキャッシュメモリ22に書き込まれたデータの追い出しを行う例を説明する。
処理71cにおいて、処理74は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックしかつ無効化し、クリーンヒットしたエントリを無効化する処理であり、非特許文献3の第3ページから第16ページに記載のdcbst又はdcbf命令により実現可能である。
周期(K)でヒットしさらに周期(K+1)でも高優先度タスクにヒットするであろうキャッシュエントリを周期(K+1)の高優先度タスクの別のキャッシュエントリがそのミスのために追い出す事象がある。
この実施の形態の効果としては、実施の形態5のライトバックだけでなく、現在の周期(K)の次の周期(K+1)で高優先度タスクが使用するキャッシュメモリのエントリがミスをし周期(K)で低優先度タスクがフィルしたエントリが周期(K+1)でまだキャッシュエントリを占有している場合には、周期(K)の余った周期時間内で空きのキャッシュエントリを作ることができ、その事象により発生するオーバヘッドを軽減でき高優先度タスクの処理時間の短縮に効果がある。
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのメモリに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令によりキャッシュメモリに存在しているか否かを判定し、存在していればキャッシュメモリから追い出す命令を実行する中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリのミス時に空きのキャッシュエントリを増やし、高い優先度のタスクのキャッシュエントリが置換対象となるのを軽減する構成を説明した。
a)予め用意した判定式を用いてその適用をするか否かを判断するプログラム手段;
b)表を引いて、その適用をするか否かを判断するプログラム手段;
のいずれかを備えて、キャッシュ汚染の軽減の確度を高めるようにしてもよい。
例えば、上記の判定式又は表に閾値を設定しておき、実施の形態4の場合は、RAM185に記憶されているがキャッシュメモリ22のキャッシュデータが対象としていないアドレスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。同様に、実施の形態5の場合は、RAM185に記憶されているライトバックが必要なキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。更に、実施の形態6の場合は、RAM185に記憶されているキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。
Claims (2)
- キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと中間の優先度タスクと低優先度タスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
前記低優先度タスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
前記計数部により計数された前記低優先度タスク実行中のキャッシュミス回数と所定の閾値とを比較する比較部と、
前記比較部による比較の結果、前記計数部により計数された前記低優先度タスク実行中のキャッシュミス回数が前記閾値を超えた際に、実行対象タスクを前記中間の優先度タスクに切り替えて前記低優先度タスクの実行を停止させて、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする制御装置。 - キャッシュメモリが含まれ、キャッシュミス回数を計数するカウンタ手段とプログラムからキャッシュミス回数を読み出す手段があり、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムであって、
前記高優先度タスクよりも低い優先度のタスク期間内または全タスクの期間内の割り込み時にキャッシュミス回数をカウンタから読み出し周期の開始時点のカウンタ値との差分を計算し、その値があらかじめ指定した閾値を超えかつ低い優先度のタスク実行時には低い優先度のタスクと高優先度タスクの中間レベルに相当するタスクに制御を移し前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うデータ処理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009199010A JP5322854B2 (ja) | 2009-08-28 | 2009-08-28 | 制御装置及びデータ処理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009199010A JP5322854B2 (ja) | 2009-08-28 | 2009-08-28 | 制御装置及びデータ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011048799A JP2011048799A (ja) | 2011-03-10 |
JP5322854B2 true JP5322854B2 (ja) | 2013-10-23 |
Family
ID=43835007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009199010A Expired - Fee Related JP5322854B2 (ja) | 2009-08-28 | 2009-08-28 | 制御装置及びデータ処理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5322854B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421918B (zh) * | 2022-09-16 | 2023-05-12 | 河南省职工医院 | 一种基于RT-Linux的经颅磁刺激设备及*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0869418A (ja) * | 1994-08-26 | 1996-03-12 | Omron Corp | キャッシュメモリ制御システム、コンパイラ制御システムおよびコンピュータ・システム |
JP2002342163A (ja) * | 2001-05-15 | 2002-11-29 | Fujitsu Ltd | マルチスレッドプロセッサ用キャッシュ制御方式 |
JP2004326187A (ja) * | 2003-04-21 | 2004-11-18 | Matsushita Electric Ind Co Ltd | 情報処理装置およびその制御方法 |
-
2009
- 2009-08-28 JP JP2009199010A patent/JP5322854B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011048799A (ja) | 2011-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7958316B2 (en) | Dynamic adjustment of prefetch stream priority | |
CN111837110B (zh) | 一种用于减少存储器***的存储器访问等待时间的方法和装置 | |
US8255631B2 (en) | Priority-based prefetch requests scheduling and throttling | |
US20190004916A1 (en) | Profiling asynchronous events resulting from the execution of software at code region granularity | |
JP4837456B2 (ja) | 情報処理装置 | |
KR101518440B1 (ko) | 프로세싱 노드의 동적 성능 제어 | |
US8725953B2 (en) | Local cache power control within a multiprocessor system | |
US8156287B2 (en) | Adaptive data prefetch | |
JP4491500B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
US10628321B2 (en) | Progressive flush of cache memory | |
KR20120102629A (ko) | 프로브 활동 레벨의 추적에 의한 성능 상태의 제어 | |
RU2010100908A (ru) | Способ, система и устройство для определения активности ядра процессора и кэширующий агент | |
US9563567B2 (en) | Selective cache way-group power down | |
CN117271388A (zh) | 使用动态预取深度的多行数据预取 | |
JP2006119796A (ja) | キャッシュメモリシステムおよび動画処理装置 | |
JP2023507078A (ja) | プリフェッチレベルの降格 | |
JP2006260525A (ja) | キャッシュ回路 | |
JP5322854B2 (ja) | 制御装置及びデータ処理システム | |
EP2622485B1 (en) | Method and apparatus for reducing processor cache pollution caused by aggressive prefetching | |
KR101892273B1 (ko) | 스레드 프로그레스 트래킹 방법 및 장치 | |
JP5725169B2 (ja) | システム、および検出方法 | |
WO2011024330A1 (ja) | アイドル状態検出回路、半導体集積回路、信号処理装置、アイドル状態検出方法 | |
CN108459912B (zh) | 一种末级缓存管理方法及相关装置 | |
JP5896066B2 (ja) | プロセッサシステム、および制御プログラム | |
Zhang | Workload-Aware Page Management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130411 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130416 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130530 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130618 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130716 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |