JP5322854B2 - 制御装置及びデータ処理システム - Google Patents

制御装置及びデータ処理システム Download PDF

Info

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
Application number
JP2009199010A
Other languages
English (en)
Other versions
JP2011048799A (ja
Inventor
康人 近江谷
茂 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009199010A priority Critical patent/JP5322854B2/ja
Publication of JP2011048799A publication Critical patent/JP2011048799A/ja
Application granted granted Critical
Publication of JP5322854B2 publication Critical patent/JP5322854B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

この発明はコンピュータ装置およびその周辺装置ならびにそれらを搭載した機器の実装に関し、特にその性能の最適化に関するものである。
組込み機器はCPU(Central Processing Unit)を搭載して機器を制御するものであり、例えばモータ制御のようにある一定時間内に入出力装置の状態を取得、計算、入出力装置への指令または制御を行う。
そのため、その時間制約を満たすリアルタイム制御が必要となる。
そのような入出力が複数あるときはそれぞれまたは他の入出力装置との連携を考慮した制御をプログラムとして実装する。
そのような制御プログラムの実装を容易化するために、独立した個別のプログラムをタスクとして用意し、リアルタイムオペレーティングシステム(以下、RTOSと呼ぶ)の制御の下に動作させる従来技術がある。
この方法では、各タスクは優先度を持ち、RTOSは入出力機器やタイマーなどからの割込みとタスク間でやりとりするメッセージを要因として、タスクの起動、休止、実行などの状態を制御して複数タスクの並行動作を行っている。
一方、組込み機器に搭載するCPUの性能向上にしたがい、そのクロック周波数とDRAM(Dynamic Random Access Memory)などのメモリのアクセス時間の差を吸収するために、大容量のキャッシュメモリを搭載するのが普通になってきた。
そのため、キャッシュメモリのミスやライトバック方式(コピーバック方式とも呼ばれる)使用時のデータのDRAMへの書き戻しが発生し、それらの事象の発生が予測できず、リアルタイム処理の時間制約を守るのが難しいという課題がある。
さらに、RTOSによるタスクの切り替えを行うと、そのことにより次のタスクの命令列がキャッシュメモリにないためにミスしたり、次のタスクが使用するデータがキャッシュメモリにないことによるミス、それに伴い前のタスクがキャッシュメモリ内で書き換えたデータをDRAMに反映するライトバック処理が発生する。
組込み機器では一定の処理を繰り返すことが多く、そのすべての処理に関係する命令やデータがキャッシュメモリに入りきれば問題はない。
キャッシュメモリを効率よく動作させるためには、再利用される命令やデータをキャッシュメモリに残し、再利用頻度の低いものはキャッシュメモリに残さないようなキャッシュメモリの置換制御を行う。
この制御方式はFIFO(First In First Out)やLRU(Least Recently Used)などの実装で行われる。
しかし、そのような制御を行っても再利用度が低いデータが再利用度の高いデータを追い出してしまうキャッシュ汚染という現象がある。
その汚染の原因が連想方式に依存した場合は、連想回路の改善たとえばセットアソシアティブ方式のウェイ(コンパートメントとも呼ぶ)を増やすことで解決している。
組込み機器では一定の時間間隔で一定の処理を繰り返す(以後、周期処理と呼ぶ)方式を採るものが多く、それらにおいては、一般的な連想方式の改善ではキャッシュ汚染の問題が解決せず、タスクやデータに着目したキャッシュメモリの改良方式がある。
1つの方法はウェイの置換に関してウェイごとに置換を許可するか否かを指定したり、アドレスの値を見て置換を制御する方式が特許文献1で開示されている。
特許文献1の技術では消費電力とキャッシュ性能の向上を目的としている。
また、特許文献2ではタスク(文献中では「プロセス」)ごとにウェイへの登録資格を検査してタスクの優先度に対応した制御を行う技術が開示されている。
また、特許文献3ではキャッシュメモリのヒット回数とミス回数の統計情報を使う技術とタスク(文献中では「プロセス」)のIDをタグに持つ技術が開示されている。
また、特許文献4では、プロセスの優先度指定に加えて、キャッシュメモリへのアクセス履歴を保持するバッファ(実施例では1024段)とキャッシュのヒットとミス情報より制御する複雑な方法が開示されている。
非特許文献2と非特許文献3では、プログラムによりアドレスを指定してキャッシュメモリの状態を取得する命令、キャッシュメモリのデータの書き戻し、キャッシュメモリの無効化を行う命令仕様について開示されている。
特表2006−529034号公報 特開平9−282226号公報 特開平9−101916号公報 特開平8−69418号公報
馬場敬信著、「コンピュータアーキテクチャ(改定2版)」オーム社、平成15年8月20日発行、p.177〜197 NEC、「アプリケーション・ノート VRシリーズTM 64/32ビット・マイクロプロセッサ プログラミングガイド」資料番号U10710JJ5VADAN00(第5版)、2001年9月発行、p.59〜62 MOTOROLA、「MPC750 RISC Microprocessor User’s Manual」資料番号MPC750UM/AD、1997年8月発行、p.3−15〜3−17 NEC、「ユーザズ・マニュアル VR5500A、VR5532A 64/32ビット・マイクロプロセッサ μPD30550A」資料番号U16677JJ3V0UM00(第3版)、2004年4月発行、p.38
現在、半導体プロセス技術の進歩とその複雑化により、ASIC(Application Specific Integrated Circuit)を用いてCPUやキャッシュメモリを実装することが困難となった。
そのため、キャッシュ汚染を軽減するような改良を半導体ユーザが加えるのが困難となり、組込み機器メーカである半導体ユーザがそのアプリケーションのタスクの挙動の特性に合った性能改良を行うのは極めて難しい。
ユーザの回路を半導体として実現する方法にSoC(System On a Chip)という実装方法があるが、それに搭載するCPUコアやキャッシュメモリの制御方法はLSIメーカが用意したものを用いるのが一般的であり、これにも半導体ユーザが性能改良を行うのが難しいという一般的な課題がある(課題1)。
また、特許文献1に示された方式では次に示すような課題がある。
まず、小さいプログラムの場合は命令領域や扱うデータの種類が少なければウェイの使い方を想定できるが、大規模なプログラムではそれができない。
ウェイそのものではなくアドレスを指定して制御する場合には、大規模なプログラムでは、プログラムの並びや変数(データ)の配置を調整するのは容易ではない。
プログラムや変数のアドレスを指定する方法においては、その指定できる数が少なく、大規模プログラムには使用できないかもしくは効果が限定される。
また、アドレスで指定する場合であっても、変数が汎用的なバッファとして確保され、バッファの用途が動的に変化する場合や高優先度タスクから低優先度タスクにバッファの使用権が移譲された場合には、キャッシュメモリに設定した値を変更する処理が必要となる。
このように大規模なプログラムでは従来技術が効果的に作用しないことが多い(課題2)。
特許文献2乃至4においては、その実装が複雑な割にキャッシュメモリに実装可能な情報量に制約が多い。そのため、機能が限定された組込み機器には適用できると推定できるが、複数の機能を搭載して複雑な動作をする組込み機器においては、投資効果が得られないと考えられる。
組込み機器のタスクの優先制御のためキャッシュメモリを制御するときの、別の課題について述べる。
リアルタイム処理では、優先度が高いタスクの命令やデータがキャッシュメモリに残って再利用されミスが少なくタスクが高速に実行されることが期待され、低優先度のタスクについてはキャッシュメモリに残らずミスが多発しその部分の処理時間が掛かっても容認できるという考え方が一般的である。
リアルタイムタスクを用いた周期処理では、タスクの優先度による制御がキャッシュ汚染をさらに拡大するという課題がある。
それは、周期内で実行すべき高優先度のタスクがなくなり、低優先度のタスクに切り替わりそれがキャッシュ汚染を引き起こし、次に高優先度タスクに切り替わった後にキャッシュ汚染の後遺症として高優先度タスクがキャッシュミスを多発したり低優先度タスクのライトバックのためにキャッシュへのロードが待たされることである。
この現象を図を用いて説明する。
装置が決められた周期で高優先度タスクを繰り返し、その隙間に低優先度タスクが実行される様子を図24に示す。
図中の太い矢印が高優先度タスクの実行を、細い矢印が低優先度タスクの実行を、縦線がキャッシュミスの発生した事象を示している。
最初のサイクル1では周期の1/3ほどの時間で高優先度タスクが終了し低優先度タスクに切り替わる。
周期の残り2/3の時間を低優先度タスクが動作してキャッシュミスを多く発生してキャッシュ汚染をする。
次にタイマー割り込みなどにより次の周期(サイクル2)が始まり、高優先度タスクに切り替わる。
するとキャッシュ汚染のために高優先度タスクに必要な命令やデータがキャッシュメモリから追い出されてしまったためキャッシュミスを発生し、高優先度タスクの実行時間が延びる。
次のサイクル3はサイクル1と同様な挙動を示し、サイクル4はサイクル2と同様となり交互に繰り返すこととなる。
高優先度のタスクが複数あり毎周期ではなく一定間隔で切り替わる場合や、低優先度のタスクが複数種ある場合などはこの繰り返し周期は複雑化する。
低優先度タスクが引き起こすキャッシュ汚染の影響を受けて高優先度タスクが周期内に処理を完了しないことを避けるため、通常は、周期時間に対して高優先度タスクの仕事量を少なめに設定するか、周期を伸ばすなど「余裕時間」を持たせて対応している。
しかしながら、低優先度タスクがネットワーク通信処理や表示処理など多量のメモリアクセスを行う場合にはキャッシュ汚染が多く、余裕をかなり持つ必要性が生じる。
またキャッシュメモリ容量が増大してきたことと非特許文献に記載のメモリウォール問題によりその余裕時間を長く確保する必要性が増大してきたことにより、周期の短縮を行うことが益々困難になってきた(課題3)。
この発明は、上記のような課題を解決することを主な目的の一つとしており、キャッシュメモリそのものを複雑にせずに、低優先度のタスクの実行を抑制することによりキャッシュ汚染を軽減して高優先度タスクのキャッシュミスの頻度とキャッシュミス時間を短縮し、必要とされる余裕時間をより短縮し組込み機器の性能を改善することを主な目的とする。
本発明に係る制御装置は、
キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
前記高優先度タスクよりも低い優先度のタスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
前記計数部により計数されたキャッシュミス回数と所定の閾値とを比較する比較部と、
前記比較部による比較の結果、前記計数部により計数されたキャッシュミス回数が前記閾値を超えた際に、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする。
本発明によれば、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の閾値を超えた際に、高優先度タスクの実行が開始されるまでキャッシュデータの追い出しを禁止する制御を行い、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータが追い出されることを回避し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ぶ影響を軽減することができる。
実施の形態1に係る全体構成例を示す図。 実施の形態1に係る制御装置の内部構成例を示す図。 実施の形態2に係る全体構成例を示す図。 実施の形態1に係る許容度指定部の実施例を示す図。 実施の形態1に係る計数部の実施例を示す図。 実施の形態1に係る優先度取得部の実施例を示す図。 実施の形態1に係る比較部、キャッシュミス制御部、優先度切替予測部、回路の実施例を示す図。 実施の形態1に係る優先度取得部の別の実施例を示す図。 実施の形態1に係る比較部、キャッシュミス制御部、優先度切替予測部、回路の別の実施例を示す図。 実施の形態1の効果を説明するタイミング図。 実施の形態3に係る全体構成例を示す図。 実施の形態1に係るタスクの遷移を示すフロー図。 実施の形態3に係るタスクの遷移を示すフロー図。 実施の形態4に係る全体構成例を示す図。 実施の形態4乃至6に係るキャッシュミス記憶装置の実施例を示す図。 実施の形態4に係る中間の優先度タスクにおける処理例を示すフローチャート図。 実施の形態4に係る処理71の具体例を示す図。 実施の形態5に係る処理71の具体例を示す図。 実施の形態6に係る処理71の具体例を示す図。 実施の形態4乃至6に係るキャッシュミス記憶装置の機能ブロックを示す図。 実施の形態1に係る動作例を示すフローチャート図。 実施の形態4に係る動作例を示すフローチャート図。 実施の形態5に係る動作例を示すフローチャート図。 従来技術を使用時の動作例を示すタイミング図。
実施の形態1.
図1は、本実施の形態に係る低優先度タスクによるキャッシュミスを抑制する制御装置1とその位置づけを示す組込み機器の全体構成例を示す図である。
図1において、制御装置1以外の要素がデータ処理システムに相当する。
図1の構成では、CPU2、メモリコントローラ3、メモリ4、バス5、割り込みコントローラ6及び回路17がデータ処理システムを構成する。
制御装置1は、バス5を介してCPU2と接続され、また、回路17と接続されている。
回路17は、バス5に接続されたメモリコントローラ3へのバス5からのリクエスト信号51をゲートしてメモリコントローラ3へのリクエスト信号51aを生成する回路である。
制御装置1は、回路17へのキャッシュミス制御信号151を出力する。
バス5の信号はリクエスト信号51とその他の信号52とする。
また、信号61は、割り込みコントローラ6より出力されCPU2に入力される割り込み信号である。
信号62は、入出力装置またはタイマーや周期信号を生成する装置より発せられる各々の割り込み信号である。
信号211は、CPUコア21とキャッシュメモリ22のインターフェイス信号である。
信号221は、キャッシュメモリ22とメモリインターフェイス回路23の間の信号である。
信号233は、CPUコア21とメモリインターフェイス回路23とのインターフェイス信号で、CPU外の非キャッシュメモリ領域へのアクセスに使用される信号である。
メモリコントローラ3は、メモリバス31を介してメインメモリたるメモリ4へアドレスと制御信号を出力してメモリ4へのデータ書き込みまたはメモリ4からのデータ読み出しを行う。
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で、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御の例を説明する。
次に、制御装置1の内部構成例について説明する。
図2は、本実施の形態に係る制御装置1の内部構成例を示す。
図2において、許容度指定部11は、低優先度タスク実行時のキャッシュミスの許容回数(閾値)を指定する。
計数部12は、低優先度タスクの実行によって引き起こされたキャッシュミス回数をカウントする。
比較部13は、許容度指定部11により指定されているキャッシュミスの許容回数と計数部12により計数されたキャッシュミス回数とを比較する。
優先度取得部14は、CPU2から実行中のタスクの優先度と周期の切り替わり通知を受信して保持する。
優先度切替予測部16は、入力信号62の一部であり周期切り替えに関連する62a乃至62bを入力してタスク優先度の切り替わりを予測する。
キャッシュミス制御部15は、比較部13の出力信号131と優先度取得部14の出力信号141と優先度切替予測部16の出力信号161を入力として、キャッシュミス制御信号151を生成する。
つまり、キャッシュミス制御部15は、低優先度タスク実行時に、比較部13による比較の結果、計数部12により計数されたキャッシュミス回数が許容回数を超えた際に、高優先度タスクの実行が開始されるまでキャッシュメモリ22に格納されているキャッシュデータの追い出しの要因となる新たなキャッシュミスを発生させないためにキャッシュミス制御信号151を出力する。
キャッシュミス制御信号151は、回路17に出力される。キャッシュミス制御信号151は、具体的には、回路17に、メモリインターフェイス回路23からリクエスト信号51を受信してもメモリコントローラ3にリクエスト信号51aを出力しないように指示する信号であり、リクエスト信号51aの出力を制限することによりキャッシュメモリ22からメモリコントローラ3へのアクセスを遮断し、この結果、キャッシュミスの対象のデータがメモリ4からキャッシュメモリ22に提供されず、キャッシュメモリ4に格納されているキャッシュデータの追い出しが発生しない。CPUの構成によってはリクエスト信号51aが出力された時点ですでにキャッシュメモリから追い出しを完了しているものもあるが、その場合でもそのあとに発生する追い出しを抑制できる。
なお、信号131は、比較部13より出力され、計数部12の出力133の値が許容度指定部11の出力132より大きいことを示す信号である。
また、信号132は、許容度指定部11の出力で低優先度タスクのキャッシュミス回数の許容度の値を示す信号である。
信号133は、計数部12の出力で低優先度タスクのキャッシュミスの回数の値を示す信号である。
信号141は、優先度取得部14の出力で、低優先度タスクのキャッシュミスのカウント動作を制御する信号で、リセットとカウントイネーブルを制御するものである。
キャッシュミス制御信号151は、キャッシュミス制御部15の出力で、バスのリクエスト信号を無効またはその生成を抑止する信号である。
信号161は、優先度切替予測部16で生成された信号で、割り込み信号よりタスク優先度が変更される可能性を予測する信号である。
次に動作について説明する。
以下では、適宜、図21のフローチャートを用いて動作を説明する。
まず、組込み機器の初期化動作時のプログラムによりCPUコア21から非キャッシュ領域に設定された許容度指定部11に低優先度タスクに許容するキャッシュミス回数をバス5を通じて書き込む。
組込み機器の周期処理の周期は、割り込みコントローラ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は、比較部13からの通知を受け、キャッシュデータの追い出しを抑止する制御を行う(S2105)(キャッシュミス制御ステップ)。
より具体的には、キャッシュミス制御部15は、出力信号141により現在実行中のタスクの優先度が低ければ、キャッシュミス制御信号151をリクエスト抑止状態として回路17に伝達する。
回路17はリクエスト抑止状態ならば、バス5のリクエスト信号51をキャッシュミス制御信号151とANDするなどの方法でリクエストを無効状態に変更し、キャッシュメモリ22からのリクエストをメモリコントローラ3に到達する前に遮断する。
周期時間がまだ十分残っていてもこれ以降のバスリクエスト(キャッシュメモリ22からのリクエスト)を受け付けないようにするため、これ以降、低優先度タスク実行時のキャッシュミスの対象データがキャッシュメモリ22に書き込まれず、このため、高優先度タスク実行時に使用の可能性のあるキャッシュデータが追い出されることがなく、低優先度タスクによるこれ以上のキャッシュ汚染を防止することができる。
これらの作用により図24に示した従来の動作は、図10に示したように変わる。
図10で灰色に塗った時間帯では低優先度タスク実行時のキャッシュミスがサービスされないためCPUの動作は止まることになる。
灰色の部分の終了は、割り込み信号によりこのリクエスト抑止状態を解除することで発生する。解除後に、低優先度タスクにより既にCPUコア21、キャッシュメモリ22、メモリインターフェイス回路23内でバッファリングされたリクエストが発行されることがあるがその数は少ないため影響は小さい。
この抑止により、高優先度タスクの実行処理時間のばらつきが減りその分だけ高優先度タスクの仕事量を増やすかあるいは周期時間を短くして性能を向上できる。
この動作を図12を使って説明する。
割り込みコントローラ6から割り込み信号61が入り、図12に示した割り込みハンドラとRTOSのスケジューラにより高優先度タスクが起動される。
それぞれの高優先度タスクは実行すべき処理がなくなるとスケジューラを呼び出して他のタスクにCPUリソースを譲る。
高優先度タスクがなくなるとスケジューラは低優先度タスクの呼び出しまたは低優先度タスクの休止状態を解除する。
低優先度タスクがまだ処理実行中であっても、割り込み信号の受信をきっかけとしてスケジューラが動作してCPUの使用権を奪い高優先度タスクに与える。図中の記号tHは高優先度タスクの動作時間を示す。低優先度タスクの列の破線は低優先度タスクが休止状態にあることを示している。
ここまでの動作は既存の技術である。
本実施の形態では、既存の技術と異なり、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
また、本実施の形態では、既存の技術と異なり、優先度取得部14に現在のタスクの優先度を書き込む。その書き込みは、(1)スケジューラがタスク切替時にその優先度の値を優先度取得部14に書き込む、(2)スケジューラがタスク切替時にその優先度の値が変化したときのみ優先度取得部14に書き込む、(3)低優先度タスクが優先度取得部14に書き込む、などの方法で行う。
なお、図4に許容度指定部11の実施例を、図5に計数部12の実施例を、図6に優先度取得部14の実施例を、図7に比較部13とキャッシュミス制御部15乃至回路17の実施例を示す。
また、図8と図9を使って比較部13乃至回路17の別の実施例を示す。
図9では、キャッシュミス制御部15に信号141bが入力され低優先度タスクへの遷移はこれにより通知するが高優先度タスクへの遷移は161で行っている。一方、図7では、信号141aが優先度を示しておりキャッシュミス制御部15への信号141bと161の入力は不要である。
このように、本実施の形態によれば、低優先度タスクが実行されている間に発生するキャッシュミスの回数を計数し、計数したキャッシュミス回数が所定の許容値を超えた際に、高優先度タスクの実行が開始されるまでキャッシュデータの追い出しを禁止する制御を行い、低優先度タスクの実行により生じたキャッシュミスにより高優先度タスクで使用する可能性のあるキャッシュデータが追い出されることを回避し、低優先度タスクの実行により生じるキャッシュ汚染が高優先度タスクに及ばないようにすることができる。
以上、本実施の形態では、
一定時間間隔の周期ごとに優先度が高いタスクが動作し、
その周期時間の余った時間内に優先度が低いタスクが動作し、
新たな周期が始まると再び優先度の高いタスクが動作を開始し、
キャッシュメモリと、キャッシュメモリがミスしてメモリから命令またはデータを読み出し、またはCPUにより書き換えられたキャッシュメモリのデータをメモリに書き込む動作を行うメモリコントローラが存在する組込み機器の構成において、
a)前記キャッシュメモリのミスに対して、予め低い優先度のミス回数の許容値を保持する手段;
b)実行中のタスクの優先度をCPUから通知する手段;
c)前記キャッシュメモリのミス回数をタスクの優先度が低い場合に計数する手段(カウンタ);
d)前記許容回数と前記カウンタの値を比較して許容値を超えたことを検出する手段;
e)前記の検出以降に発生するキャッシュミスへのメモリコントローラのサービスを抑止する手段;
の各手段を備えることにより、
優先度の低いタスクが原因となって発生し、優先度の高いタスクに関係する命令やデータがキャッシュメモリから追い出されるキャッシュ汚染を軽減する構成を説明した。
実施の形態2.
本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、高優先度タスクの実行開始までキャッシュメモリからメモリコントローラへのアクセスを保留させる制御を説明する。
なお、本実施の形態に係る全体構成例を図3に示す。なお、制御装置1の内部構成例は図2に示したとおりである。
また、比較部13、優先度取得部14、キャッシュミス制御部15、優先度切替予測部16、回路17の実施例も実施の形態1で示したとおりである。
図3において、メモリコントローラ3は、ビジーである場合に、CPU2からメモリコントローラ3にアクセスするときにCPU2にリクエストを待たせる条件信号53を回路17を介して出力する。
このような構成において、本実施の形態では、低優先度タスク実行時のキャッシュミス回数が許容値を超える場合に、メモリコントローラ3からのリクエストを待たせる条件信号53aにキャッシュミス制御信号151をORして条件信号53を生成し、条件信号53を出力する。
なお、条件信号53は、バス信号の一部で、メモリインターフェイス回路23が新たなリクエストを発行するのを抑止するための信号であり、メモリインターフェイス回路23は、条件信号53を受信した場合には、メモリコントローラ3がビジーであると認識し、メモリコントローラ3へのリクエストを保留する。
本実施の形態においても、実施の形態1と同様に低優先度タスク実行時のキャッシュミス回数を計数し、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、制御装置1のキャッシュミス制御部15からキャッシュミス制御信号151が回路17に出力される。
回路17では、キャッシュミス制御信号151を入力した場合に、メモリコントローラ3がビジーであるときに出力される条件信号53をCPU2に出力する。
キャッシュメモリ22及びメモリインターフェイス回路23は、条件信号53により、メモリコントローラ3へのアクセスを保留する。
このように、本実施の形態では、条件信号53の出力により、低優先度タスクの実行中にキャッシュミスがサービスされないために低優先度タスクの動作が停止する。
なお、このリクエストを待たせる条件信号53の例として非特許文献4に記載のRdRdy#とWrRdy#がある。
これらの信号はHレベルの時にCPU2を待たせることを意味するため、この場合にはキャッシュミス制御信号151とORすればよい。
以上、本実施の形態では、
a)新たな周期が始まるタイミングまたはその始まるタイミングを予測する回路にもとづき、キャッシュミスへのメモリコントローラのサービス抑止またはキャッシュミス発生自体の抑止の制御を解除して、再びキャッシュミス動作が行えるようにする手段;
b)キャッシュミスへのメモリコントローラのサービス抑止時に、キャッシュメモリからメモリコントローラへのリクエスト信号をANDなどにより無効にする回路にその抑止条件を通知するか、もしくはメモリコントローラからキャッシュメモリにリクエストを待たせる条件信号にORなどにより待たせる条件を拡大する回路にその抑止条件を通知する手段;
を備える構成を説明した。
実施の形態3.
本実施の形態では、実行対象タスクを中間の優先度タスクに切り替えて低優先度のタスクの実行を停止させる制御を説明する。
図11は、本実施の形態に係る全体構成例を示す。
なお、制御装置1の内部構成例は図2に示すとおりである。
また、比較部13、優先度取得部14、キャッシュミス制御部15、優先度切替予測部16の実施例も実施の形態1で示したとおりである。
図11の構成では、回路17に相当するものがなく、キャッシュミス制御信号151が割り込みコントローラ6に出力され、新たに割り込み信号として動作する。
つまり、本実施の形態では、実施の形態1と同様に低優先度タスク実行時のキャッシュミス回数を計数し、低優先度タスク実行時のキャッシュミス回数が許容値を超えた際に、キャッシュミス制御部15はキャッシュミス制御信号151を新たな割り込み信号として割り込みコントローラ6に出力する。
図13は、本実施の形態に係るタスクの変遷を示すフロー図であり、実施の形態1の図12に対応している。
図12の高優先度と低優先度の2種類のタスク優先度に対し、この実施の形態では、中間の優先度のタスクを持つ。図中のtMは中間の優先度のタスクの実行期間を示す。
この中間の優先度のタスクは新たな割り込み信号をきかっけとして起動される。
具体的には割り込みハンドラが割り込み要因を分析し、周期の始まりではなくキャッシュミス回数の許容度を超したことによる割り込みと判断してスケジューラが中間の優先度を持つこのタスクを起動する。
その結果、低優先度タスクはCPUの使用権を奪われるためそれ以降は低優先度タスクの実行に起因したキャッシュミスを引き起こすことがなくなる。
この実施の形態ではキャッシュミスへのサービスを止めてしまうわけではないため優先度切替予測部16は必須ではない。
割り込みの要因をクリアするために優先度切替予測部16を用いてもよいし、割り込みコントローラ6で要因ごとに微分を取る場合には優先度切替予測部16は要らない。
この実施の形態の変形として、CPUコア21またはキャッシュメモリにキャッシュミス回数を計測するカウンタを持ち、CPUコア21にそのカウンタの値を読み出す機械命令手段を持っており、またCPUコア21または割り込みコントローラの機能を用いて周期より短い時間間隔で割り込みを発生できる場合には、割り込みハンドラがキャッシュミス回数を読み出し周期開始時点のキャッシュミス回数との差分を計算することにより計数部12と同機能を、割り込みハンドラで参照する変数が許容度指定部と同等の機能を持ってもよい。また、割り込みハンドラでカウンタの読み出しや判定を行わずに中間の優先度のタスクがカウンタの読み出しと判定を行い閾値を超えていない場合には自らタスクを休止状態にして低優先度タスクにCPU実行権を譲り、閾値を超えた場合にはCPU実行権を握り続ける制御を行ってもよい。これらの場合には制御装置1は無くてよい。
以上、本実施の形態では、
a)低い優先度と高い優先度の中間の優先度のタスクを持つプログラム手段;
b)キャッシュミス回数の許容値とカウンタの値を比較して許容値を超えたことを検出をきっかけに、割り込み動作を開始する手段;
c)割り込み処理プログラムまたはオペレーテイングシステムにより中間の優先度のタスクに制御を移してCPU処理を占有させることにより低優先度のタスクのサービスを一時的に止めるプログラム手段、
を備える構成を説明した。
実施の形態4.
本実施の形態では、高優先度よりも低い優先度(低優先度又は中間の優先度)のタスクの実行時に、キャッシュメモリのデータの更新を行う例について説明する。
より具体的には、新たな周期が始まる前の中間の優先度タスクの実行時に、高優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期での高優先度タスク実行時のキャッシュミスを軽減する例を説明する。
図14は、本実施の形態に係る全体構成例を示す。
本実施の形態では、図11に示した構成に、キャッシュミス記憶装置18を追加している。
図14において、キャッシュミス記憶装置18以外の要素は図11に示したものと同様である。また、制御装置1の内部構成例は図2に示した通りである。
なお、図14の例では、キャッシュミス記憶装置18は、制御装置1からの出力信号141により、現在実行中のタスクの優先度を判断することとしているが、他の手段により現在実行中のタスクの優先度が分かるのであれば、本実施の形態では、制御装置1は省略可能である。なお、その場合には中間の優先度タスクへの切り替えを実現するためにCPU2に内蔵または割り込みコントローラに接続されたタイマーを使用するなどの手段を使用すればよい。
また、本実施の形態では、少なくともCPU2とキャッシュミス記憶装置18がデータ処理システムの例となる。
本実施の形態では、キャッシュミス記憶装置18→メモリコントローラ3→メモリインタフェース23→キャッシュ更新部210の順に情報が伝達されていく。
図20は、キャッシュミス記憶装置18の機能ブロックを示す図である。
図20において、キャッシュミス検知部1801は、制御装置1からの出力信号141により、現在実行中のタスクの優先度を判断し、また、実施の形態1で説明した計数部12と同様に、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する。そして、キャッシュミス検知部1801は、高優先度タスクの実行中にキャッシュミスを検出した場合は、当該キャッシュミスが対象とするメモリ4のアドレスをキャッシュミス記憶部1802に通知する。
キャッシュミス記憶部1802は、キャッシュミス検知部1801から通知されたアドレスを記憶する。また、キャッシュミス記憶部1802は、CPU2から要求のあった場合に、記憶内容をCPU2に出力する。もしくは、キャッシュミス記憶部1802は、低優先度タスクの実行が終了し、中間の優先度タスクの実行が検知された際に、CPU2に記憶内容を出力する。
また、本実施の形態では、CPUコア21は、高優先度タスクの実行後に低優先度タスクを実行し、低優先度タスクの後、中間の優先度タスクを実行する。
中間の優先度タスクとして、CPUコア21は、キャッシュミス記憶部1802に記憶されているアドレスを取得するとともに、キャッシュミス記憶部1802から取得したアドレスと低優先度タスク実行後のキャッシュメモリ22に格納されているキャッシュデータが対象としているメモリ4のアドレスとを比較し、比較結果に基づいてキャッシュメモリ22のデータの更新を行う。
より具体的には、キャッシュミス記憶部1802に含まれているがキャッシュデータでは対象とされていないアドレスを抽出し、抽出したアドレスにおいてメインメモリに記憶されているデータを読んでキャッシュメモリ22に書き込む。
なお、このようなキャッシュメモリ22のデータ更新を行うCPUコア21の機能(プログラム)を、以降、キャッシュ更新部210と呼ぶ。
以上の説明を前提に、ここで、図22のフローチャートを用いて本実施の形態に係る動作の概要を説明する。
先ず、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、高優先度タスクの実行の開始を検知する(S2201)。
また、キャッシュミス検知部1801は、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する(S2202でYES)(キャッシュミス検知ステップ)。
そして、キャッシュミス検知部1801は、検出したキャッシュミスのメモリ4のアドレスをキャッシュミス記憶部1802に通知し、キャッシュミス記憶部1802が、キャッシュミス検知部1801から通知されたアドレスを記憶する(S2203)(キャッシュミス記憶ステップ)。
また、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、低優先度タスクへまたは中間の優先度タスクへの切り替え(S2204でNO、S2205でYES)を検知する。
中間の優先度タスクとして、CPUコア21で実行されるキャッシュ更新部210は、キャッシュミス記憶部1802から低優先度タスク実行時に発生したキャッシュミスのアドレスを取得し、低優先度タスク実行後にキャッシュメモリ22に格納されているキャッシュデータが対象であるメモリ4のアドレスを取得し(S2209,S2210)、それら両方のアドレスを比較する(S2206)(キャッシュ更新ステップ)。
比較の結果、キャッシュメモリ22から追い出されているデータがあるか否かを判断する(S2207)(キャッシュ更新ステップ)。つまり、キャッシュ更新部210は、キャッシュミス記憶部1802に含まれているがキャッシュデータでは対象になっていないアドレスがあるかどうかを判断する。そのようなアドレスがあれば、メモリ4でそのアドレスにおいて記憶されているデータは低優先度タスクの実行時にキャッシュメモリ22から追い出されたデータである。
S2207でYESの場合は、キャッシュ更新部210は、中間の優先度タスクとして、追い出されたデータをメモリ4から取得し、キャッシュメモリ22にロードする(S2208)(キャッシュ更新ステップ)。
次に、図20に機能ブロックとして示したキャッシュミス記憶装置18のハードウェア構成例を図15に示す。
図15において、信号181は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAMのアドレスを示すカウンタ回路のカウントをイネーブルにする信号である。
信号182は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAMアドレスを示すカウンタ回路の出力信号である。
信号183は、CPU2よりプログラムにより指定されることにより、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスが記録されたRAM185を読み出すアドレス信号である。
信号184は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAM185への書き込み動作を制御する信号である。優先度取得部14により検出されたタスク優先度、バス信号52がキャッシュミスを示すこと、カウンタの値があふれないことの条件より書込みを許可する。
RAM185は、高優先度タスクまたは低優先度タスクがキャッシュミスしたアドレスを記録するRAM。この例ではアドレスは10ビット、データは19ビットのRAMで、ライト時以外はリード動作をおこなうものである。
RAM185が、図20で示したキャッシュミス記憶部1802に相当する。
実施の形態1で説明した計数部12と同様な回路を用いてカウンタを構成してキャッシュミスが発生するたびに、RAM185に対してカウンタの出力182をアドレスとし、デコーダの出力184にて書き込み動作を指定し、信号52より得られたアドレスデータに基づいてRAM185にてキャッシュミスのアドレスを記録し、また、条件信号181を生成してカウンタの値を更新する。
カウンタの値がRAM185のアドレス数を超える場合にはそこでカウントを停止するように条件信号181は生成される。
これによりキャッシュミスのアドレスを記録でき、また、CPUからプログラム(キャッシュ更新部210)によりRAM185に対して信号52により読み出し要求が発行された場合は信号52のアドレス183をアドレスとしてRAM185を読み出し、信号52のデータを駆動する。
この実施の形態において、信号141が高い優先度を示すときに、RAM185にアドレスが記録される。
次に、中間の優先度タスクの具体的な処理内容(図22のS2206以降の処理)を図16に示す。
図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自体は従来技術)。
図16でcntにセットする記録回数値は185で記録可能な回数値であるが、実際に記録した数182を読み出して使用してもよい。またcntにキャッシュ更新カウント値変数の値をセットしているがこれにより更新上限値を指定できる。cntにセットするこれら2つの値をキャッシュ更新カウント値変数にまとめてもよい。
RAM185に記録されたアドレス全部に対して処理71を適用するとそこで発生させたキャッシュミスが互いに他のキャッシュエントリを追い出し合う副作用が発生する場合がある。
その場合にはこの上限回数を小さくすれば副作用を軽減することができる。
このcntを使わずに図15のカウンタに同等の機能を設けても同様な効果が得られるのは自明である。
なお、図16では一旦wrktblというキャッシュ領域に割り付けた表にコピーして2つのループで処理しているが、コピーを使わずにループを1つにしてもよい。
RAM185に記録されたアドレス全部に対して図16に示した操作を行う時に、上限回数以外の手段で操作するキャッシュフィルのアドレスを限定してもよい。
限定の方法として、アドレス値の上限と下限をプログラムで1組分を記述する方法、複数組分を記述する方法がある。
また、アドレスの組を表形式で記述してプログラムはループを使って判定してもよい。また、対象とするアドレスを指定する代わりに除外するアドレスを指定してもよい。
異なる優先度のタスクのアドレスが隣接したり同一優先度のアドレスが不連続な場合には、複数組みを指定することにより、その効果が出る。
高優先度のタスクのアドレスを指定する代わりに低優先度タスクのアドレスを指定する場合には、除外するアドレスを指定する効果がある。
また、処理71の適用においてそのアドレスの下位ビットを用いて計算されるキャッシュメモリのセットアドレスごとに適用回数をプログラムでカウントしてN個を超えないようにする制御を行ってもよい。
この数Nをセットアソシアティブ方式を採るキャッシュメモリ22のウェイ数以下にすれば、上記の副作用を軽減できる。
また、高優先度のタスクがキャッシュメモリに残っている場合に、数Nをさらに小さく設定することにより、キャッシュメモリに残っているエントリを追い出さないように調整することもできる。
これらの操作は、中間の優先度のタスクとして周期時間内に行われるが、処理の途中で周期時間が終了しても問題はなく、中間の優先度のタスクを中断し、割り込み高優先度の処理を実行できる。
図16と図17に示した処理を行うことにより、次の周期で高優先度タスクが使用する可能性が高いキャッシュメモリのエントリを、現在の余った周期時間内で、キャッシュにフィルすることができ、次の周期の高優先度タスクの処理時間の短縮に効果がある。
このように、本実施の形態では、高優先度タスクによりキャッシュミスしRAM185に記録されたキャッシュラインのアドレスをそのRAMから読出し、ミスしたアドレスに対するロード命令を実行することを説明した。
より具体的には、
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)高い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのRAMに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令、またはロード命令を実行することにより、そのアドレスがキャッシュメモリから追い出されている場合にはキャッシュミスを誘発させる中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリにできるだけ多く再びロードしておくことにより、新たな周期でのキャッシュミスを軽減する構成を説明した。
実施の形態5.
本実施の形態では、実施の形態4の変形例を説明する。
実施の形態4では、高優先度のタスクのキャッシュミスを記録したのに対して、実施の形態5では、低優先度のタスクのキャッシュミスを記録する。
より具体的には、図20に示したキャッシュミス検知部1801は、低優先度タスクの実行中のキャッシュミスを検知し、キャッシュミス記憶部1802は、キャッシュミス検知部1801により低優先度タスクの実行中にキャッシュミスが発生したと判定された場合に、当該キャッシュミスを記憶する。
そして、次の周期の高優先度タスクの実行前に、中間の優先度タスクとして、キャッシュ更新部210が、キャッシュミス記憶部1802に記憶されているキャッシュミス(低優先度タスク実行時のキャッシュミス)によりキャッシュメモリ22に書き込まれたデータのライトバックを行う。
本実施の形態では、全体構成は図14に示すとおりであり、キャッシュミス記憶装置18の機能ブロックは図20に示すとおりであり、キャッシュミス記憶装置18の実施例は図15に示すとおりである。
次に、図23のフローチャートを用いて本実施の形態に係る動作の概要を説明する。
先ず、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、低優先度タスクの実行の開始を検知する(S2301)。
また、キャッシュミス検知部1801は、バス5のトランザクションを監視してデータ長やアドレスなどからキャッシュミスを検出する(S2302でYES)(キャッシュミス検知ステップ)。
そして、キャッシュミス検知部1801は、キャッシュミスのあったアドレスとデータをキャッシュミス記憶部1802に通知し、キャッシュミス記憶部1802が、キャッシュミス検知部1801から通知されたアドレスとデータを記憶する(S2303)(キャッシュミス記憶ステップ)。
また、キャッシュミス検知部1801が、制御装置1からの出力信号141に基づき、低優先度タスクへの切り替え(S2304でYES)及び中間の優先度タスクへの切り替え(S2305でYES)を検知する。
中間の優先度タスクとして、CPUコア21のキャッシュ更新部210は、キャッシュミス記憶部1802から記憶内容を取得し、キャッシュミス記憶部1802の記憶内容を解析し(S2305)(キャッシュ更新ステップ)、ライトバックするデータがあるか否かを判断する(S2306)(キャッシュ更新ステップ)。
S2306でYESの場合は、キャッシュ更新部210は、中間の優先度タスクとして、該当するキャッシュデータをライトバックし、ライトバックしたデータをキャッシュメモリ22から追い出す(S2307)(キャッシュ更新ステップ)。
また、中間の優先度タスクの詳細については、本実施の形態では、図16の処理71として図18に記載の処理71bを用いることが異なり他の処理は実施の形態4と同様である。
なお、処理71bにおいて、処理73は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックする処理であり、非特許文献2の第101ページに記載のHit_Write_Backオペレーションにより実現可能である。
また、優先度取得部14にセットする値を変えることにより、低優先度のタスクのキャッシュミスを記録することができる。
この実施の形態では、低優先度タスクがキャッシュミスを行いその内容を書き換えた場合にそのライトバックを、中間の優先度のタスクで実行するものである。
この効果としては、次の周期で高優先度タスクが使用するキャッシュメモリのエントリがミスをしその時に低優先度タスクのライトバックが発生してその結果としてミスのフィルが遅れる場合に、現在の余った周期時間内で、ライトバックを事前に行うことができ、次の周期の高優先度タスクの処理時間の短縮に効果がある。
つまり、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期が始まる前に予め中間の優先度タスクとして完了させておくことにより、新たな周期の高優先度タスク実行時にはライトバックが発生せず、高優先度タスクの処理効率を高めることができる。
このように、本実施の形態では、低優先度タスクの実行時にミスしてRAM185に記録されたキャッシュラインのアドレスをそのRAMから読出し、そのアドレスがまだキャッシュにダーティラインとして残っていれば強制的にライトバックを実行することを説明した。
また、本実施の形態では、
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのRAMに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令によりキャッシュメモリに存在して書き換えられているか否かを判定し、書き換えられていた場合にはメモリへの書き戻しを行なうとともにそのエントリを無効化またはリードデータとして残す中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に低い優先度のデータの書き戻しをできるだけ多く完了させることにより、新たな周期でのキャッシュミスに伴う書き戻しを減らしそのミス時間を短縮する構成を説明した。
実施の形態6.
実施の形態5では、低優先度タスクの実行中のキャッシュミスに起因するライトバックを新たな周期の開始前に中間の優先度タスクとして行うものである。つまり、実施の形態5では、ダーティラインが対象である。
本実施の形態では、ダーティかクリーンかの区別なしに、キャッシュ更新部210が中間の優先度タスクとして、キャッシュミス記憶部1802に記憶されているキャッシュミス(低優先度タスク実行時のキャッシュミス)によりキャッシュメモリ22に書き込まれたデータの追い出しを行う例を説明する。
本実施の形態では、全体構成は図14に示すとおりであり、キャッシュミス記憶装置18の機能ブロックは図20に示すとおりであり、キャッシュミス記憶装置18の実施例は図15に示すとおりである。
また、本実施の形態では、図23のフローチャートで、キャッシュミス記憶装置18に格納されているキャッシュミスのデータのうちライトバックが必要なデータはライトバックを行ってキャッシュメモリ22からの追い出し(エントリの無効化)を行い、ライトバックが不要なデータはそのままキャッシュメモリ22からの追い出し(エントリの無効化)が行われる。
また、中間の優先度タスクの詳細については、本実施の形態では、図18の処理71bの代わりに図19の処理71cを用いる。
処理71cにおいて、処理74は、ダーティラインとしてキャッシュに残ったエントリを強制的にライトバックしかつ無効化し、クリーンヒットしたエントリを無効化する処理であり、非特許文献3の第3ページから第16ページに記載のdcbst又はdcbf命令により実現可能である。
この実施の形態では、前述のように、低優先度のタスクのキャッシュミスをダーティかクリーンかの区別なしにキャッシュより追い出す。
周期(K)でヒットしさらに周期(K+1)でも高優先度タスクにヒットするであろうキャッシュエントリを周期(K+1)の高優先度タスクの別のキャッシュエントリがそのミスのために追い出す事象がある。
この実施の形態の効果としては、実施の形態5のライトバックだけでなく、現在の周期(K)の次の周期(K+1)で高優先度タスクが使用するキャッシュメモリのエントリがミスをし周期(K)で低優先度タスクがフィルしたエントリが周期(K+1)でまだキャッシュエントリを占有している場合には、周期(K)の余った周期時間内で空きのキャッシュエントリを作ることができ、その事象により発生するオーバヘッドを軽減でき高優先度タスクの処理時間の短縮に効果がある。
以上、本実施の形態では、低優先度タスクによりキャッシュミスしRAM185に記録されたキャッシュラインのアドレスをそのRAMから読出し、そのアドレスがまだキャッシュに残っていれば強制的にライトバック後に無効化あるいは無効化するキャッシュアクセス命令を実行することを説明した。
より具体的には、本実施の形態では、
a)キャッシュミスのアドレスを書き込み動作により記録し、CPUからプログラムからその値を読み出すことができるRAM手段;
b)キャッシュメモリとメモリコントローラのインターフェイスのバスを監視する手段;
c)低い優先度のタスクが実行中に発生したキャッシュミスのアドレスをそのメモリに記録する手段;
d)中間の優先度のタスクがその記録したアドレスをRAMから読出すプログラム手段;
e)読出したアドレスをCPUに備えたキャッシュアクセス命令によりキャッシュメモリに存在しているか否かを判定し、存在していればキャッシュメモリから追い出す命令を実行する中間の優先度のタスクとしてのプログラム手段;
を備えることにより、新たな周期が始まる前に高い優先度のタスクの実行に必要な命令やデータをキャッシュメモリのミス時に空きのキャッシュエントリを増やし、高い優先度のタスクのキャッシュエントリが置換対象となるのを軽減する構成を説明した。
なお、実施の形態4〜6において、中間の優先度タスクとして、キャッシュアクセス命令、またはロード命令の実行を適用するときに、
a)予め用意した判定式を用いてその適用をするか否かを判断するプログラム手段;
b)表を引いて、その適用をするか否かを判断するプログラム手段;
のいずれかを備えて、キャッシュ汚染の軽減の確度を高めるようにしてもよい。
例えば、上記の判定式又は表に閾値を設定しておき、実施の形態4の場合は、RAM185に記憶されているがキャッシュメモリ22のキャッシュデータが対象としていないアドレスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。同様に、実施の形態5の場合は、RAM185に記憶されているライトバックが必要なキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。更に、実施の形態6の場合は、RAM185に記憶されているキャッシュミスの数が閾値を超えた場合にのみ、キャッシュメモリの更新を行うようにしてもよい。
1 制御装置、2 CPU、3 メモリコントローラ、4 メモリ、5 バス、6 割り込みコントローラ、11 許容度指定部、12 計数部、13 比較部、14 優先度取得部、15 キャッシュミス制御部、16 優先度切替予測部、17 回路、18 キャッシュミス記憶装置、21 CPUコア、22 キャッシュメモリ、23 メモリインターフェイス回路、185 RAM、1801 キャッシュミス検知部、1802 キャッシュミス記憶部。

Claims (2)

  1. キャッシュメモリが含まれ、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと中間の優先度タスクと低優先度タスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムに接続され、
    前記低優先度タスクの実行中に発生するキャッシュミスの回数を計数する計数部と、
    前記計数部により計数された前記低優先度タスク実行中のキャッシュミス回数と所定の閾値とを比較する比較部と、
    前記比較部による比較の結果、前記計数部により計数された前記低優先度タスク実行中のキャッシュミス回数が前記閾値を超えた際に、実行対象タスクを前記中間の優先度タスクに切り替えて前記低優先度タスクの実行を停止させて、前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うキャッシュミス制御部とを有することを特徴とする制御装置。
  2. キャッシュメモリが含まれ、キャッシュミス回数を計数するカウンタ手段とプログラムからキャッシュミス回数を読み出す手段があり、周期処理によりタスクが実行され、実行されるタスクに高優先度タスクと前記高優先度タスクよりも低い優先度のタスクが含まれ、タスクの実行時に前記キャッシュメモリへの参照が行われるデータ処理システムであって、
    前記高優先度タスクよりも低い優先度のタスク期間内または全タスクの期間内の割り込み時にキャッシュミス回数をカウンタから読み出し周期の開始時点のカウンタ値との差分を計算し、その値があらかじめ指定した閾値を超えかつ低い優先度のタスク実行時には低い優先度のタスクと高優先度タスクの中間レベルに相当するタスクに制御を移し前記高優先度タスクの実行が開始されるまで前記キャッシュメモリに格納されているキャッシュデータの追い出しを発生させない制御を行うデータ処理システム。
JP2009199010A 2009-08-28 2009-08-28 制御装置及びデータ処理システム Expired - Fee Related JP5322854B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115421918B (zh) * 2022-09-16 2023-05-12 河南省职工医院 一种基于RT-Linux的经颅磁刺激设备及***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
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 情報処理装置およびその制御方法

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