(57)【要約】【課題】  時間的・空間的局所性が低いプログラムにおいても、最悪実行時間の見積もりを容易化し、期待した性能を実現可能とする、新たなキャッシュ制御装置の提供。【解決手段】  ＣＰＵ１と、キャッシュコントロール部２１１と、タグコントロール部２０１、データ部２０２と、ＲＯＭ１３とを備え、キャッシュコントロール部２１１はＣＰＵ１で実行されるプロセスのＩＤに対応して、（Ａ）キャッシュ非使用、（Ｂ）キャッシュ使用且つリプレース許可、（Ｃ）キャッシュ使用且つリプレース不許可の制御を行い、プロセスＩＤに対応する制御情報が、（Ａ）又は（Ｂ）の時、キャッシュ使用は可／不可とされ、（Ｃ）の場合、キャッシュヒット時はキャッシュからの命令がＣＰＵに送られ、ミス時にはＲＯＭからの命令がＣＰＵに送られるが、キャッシュリプレースは行われない。【選択図】            図２
2006031386.tif 000002
【特許請求の範囲】
【請求項１】
プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュのアクセス態様を規定する設定情報との対応を少なくとも１つ記憶する記憶部と、
ＣＰＵから供給されるプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を、前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに応じて、前記キャッシュのアクセス態様を可変に制御する回路と、
を含む、ことを特徴とするキャッシュ制御装置。
【請求項２】
前記プロセスの実行特性に応じて、前記キャッシュのアクセス態様を可変に制御する、ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項３】
前記記憶部が、前記プロセスＩＤと前記設定情報との対応として、
プロセスＩＤとキャッシュの非使用、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース許可、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース非許可、
の内の少なくとも一つの対応を記憶しており、
前記ＣＰＵから前記プロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに対応させて、前記キャッシュの使用と非使用の制御、及び／又は、キャッシュのリプレース許可と非許可の制御を行う、ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項４】
プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュの使用／非使用との対応を規定する設定情報を少なくとも１つ記憶する記憶部を備え、
ＣＰＵからプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、プロセス毎に、キャッシュの使用と非使用の制御を行う、ことを特徴とするキャッシュ制御装置。
【請求項５】
プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュのリプレース許可／非許可との対応を規定する設定情報を少なくとも１つ記憶する記憶部を備え、
ＣＰＵからプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、プロセス毎に、キャッシュのリプレース許可と非許可の制御を行う、ことを特徴とするキャッシュ制御装置。
【請求項６】
プロセスの識別情報（「プロセスＩＤ」という）と、
キャッシュ非使用、
キャッシュ使用、及びキャッシュのリプレース許可、
キャッシュ使用、及びキャッシュのリプレース非許可、
の内のいずれの制御を行うかの対応を規定する設定情報を少なくとも１つ記憶する記憶部を備え、
前記ＣＰＵからプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を、前記記憶部から取得し、前記設定情報に基づき、プロセス毎に、キャッシュの使用と非使用、キャッシュのリプレース許可と非許可の制御を行う、ことを特徴とするキャッシュ制御装置。
【請求項７】
前記プロセスＩＤと前記設定情報との対応は、前記ＣＰＵ上で稼動するオペレーティングシステムが管理する実行プログラムの特性に関連付けて設定される、ことを特徴とする請求項１乃至６のいずれか一に記載のキャッシュ制御装置。
【請求項８】
ＣＰＵと、
キャッシュと、
キャッシュ制御装置と、
を含み、
前記キャッシュ制御装置が、請求項１乃至７のいずれか一に記載のキャッシュ制御装置よりなる、ことを特徴とするコントローラ装置。
【請求項９】
データ及び／又は命令を格納した記憶装置が、前記コントローラ装置内部に配設されるか、又は前記コントローラ装置外部に配設される、ことを特徴とする請求項８に記載のコントローラ装置。
【請求項１０】
前記プロセスＩＤに対応する設定情報が、キャッシュ非使用である場合に、前記ＣＰＵからの読み出しアクセスに対して、前記キャッシュはアクセスされず、前記記憶装置から読み出された内容が、前記ＣＰＵに送られる、ことを特徴とする請求項９に記載のコントローラ装置。
【請求項１１】
前記プロセスＩＤに対応する設定情報が、キャッシュ使用及びキャッシュのリプレース許可である場合に、前記ＣＰＵからの読み出しアクセスに対して、キャッシュヒットのときは、前記キャッシュから読み出された内容が前記ＣＰＵに送られ、一方、ミスの場合には、前記記憶装置から読み出された内容が、前記ＣＰＵに送られるとともに、前記記憶装置から読み出された内容による前記キャッシュの入れ替えが行われる、ことを特徴とする請求項９に記載のコントローラ装置。
【請求項１２】
前記プロセスＩＤに対応する設定情報が、キャッシュ使用及びキャッシュのリプレース非許可である場合に、前記ＣＰＵからの読み出しアクセスに対して、キャッシュヒットのときは、前記キャッシュから読み出された内容が前記ＣＰＵに送られ、一方、ミスの場合には、前記記憶装置から読み出された内容が、前記ＣＰＵに送られ、前記記憶装置から読み出された内容による前記キャッシュの入れ替えは行われない、ことを特徴とする請求項９に記載のコントローラ装置。
【請求項１３】
前記記憶装置は、前記ＣＰＵで実行される命令群を少なくとも格納した不揮発性のメモリよりなり、
前記キャッシュには、前記ＣＰＵで実行される命令が格納される、ことを特徴とする請求項９に記載のコントローラ装置。
【請求項１４】
ＣＰＵが、前記ＣＰＵで実行するプロセスの識別情報（「プロセスＩＤ」という）をキャッシュ制御装置に供給する工程と、
前記キャッシュ制御装置が、前記ＣＰＵからのプロセスＩＤを受け取り、プロセスＩＤとキャッシュのアクセス態様を規定する設定情報との対応を少なくとも１つ記憶する記憶部を参照して、前記プロセスＩＤに対応した設定情報を取得する工程と、
前記キャッシュ制御装置が、前記設定情報に基づき、前記プロセスに応じて、前記キャッシュのアクセス態様を可変に制御する工程と、
を含む、ことを特徴とするキャッシュ制御方法。
【請求項１５】
前記プロセスの実行特性に応じて、前記キャッシュのアクセス態様を可変に制御する、ことを特徴とする請求項１４に記載のキャッシュ制御方法。
【請求項１６】
前記記憶部が、前記プロセスＩＤと前記設定情報の対応として、
プロセスＩＤとキャッシュの非使用、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース許可、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース非許可、
の内の少なくとも一つの対応を記憶し、
前記ＣＰＵから前記プロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに対応させて、前記キャッシュの使用と非使用の制御、及び／又は、キャッシュのリプレース許可と非許可の制御を行う、ことを特徴とする請求項１４に記載のキャッシュ制御方法。
【請求項１７】
前記プロセスＩＤと前記設定情報との対応は、前記ＣＰＵ上で稼動するオペレーティングシステムが管理する実行プログラムの特性に関連付けて設定される、ことを特徴とする請求項１４に記載のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ制御装置と方法及びキャッシュ制御装置を有するコントローラに関する。
【背景技術】
【０００２】
キャッシュは、ＬＳＩ外部に配置された比較的低速なメモリの平均アクセス速度を向上させるために用いられている。よく知られているように、キャッシュは、時間・空間的に局所性のあるプログラムの実行性能を向上させ、信号処理や演算処理等の分野で多用されている。
【０００３】
・時間的局所性（temporal locality）とは、「一つの要素（アイテム）が参照されると、当該要素は、再びすぐに参照される傾向がある」ことをいう。
【０００４】
・空間的局所性（spatial locality）とは、「一つの要素（アイテム）が参照されると、近くのアドレスの要素（複数）が、すぐに参照される傾向がある」ことをいう。プログラムの空間的局所性を利用するために、キャッシュのブロックは１ワードよりも大の所定の長さとされる。キャッシュのブロックサイズを大きくすると、ミス率を低減できることが知られている（後記非特許文献１参照）。
【０００５】
キャッシュは、プログラムの実行性能を向上させるが、その一方で、
・最悪実行時間の見積もりが困難である、
・プログラムによっては、期待した効果が得られない場合がある、
等のデメリットもある。
【０００６】
以下、いくつかの典型的な設計方式に即して説明する。図５には、例えばＥＣＵ（Engine  Control  Unit）等制御向けのコントローラＬＳＩ（半導体集積回路）の典型的な構成の一例が示されている。
【０００７】
図５を参照すると、このＬＳＩ１０Ａは、制御向けＣＰＵの命令実行方式として、同一チップ上に配設されたＲＡＭ（ランダムアクセスメモリ）１２と、ＲＯＭ（読み出し専用メモリ）１３と、ＣＰＵ（中央演算処理装置）１１とを備えている（キャッシュは具備しない）。ＲＯＭ１３は、例えばフラッシュメモリ（ＥＥＰＲＯＭ；電気的にプログラム可能であり、セクタ単位で一括消去可能なＲＯＭ）等からなり、不揮発データとして、ＣＰＵ１１で実行される命令群、又は、ＣＰＵ１１で実行される命令群とデータが格納されている。ＲＡＭ１２に対して、ＣＰＵ１１からデータの書き込み／読み出しが行われる。なお、図５には、命令、データのパスに着目した構成のみが図示されており、入出力制御部等は示されていない。
【０００８】
図５に示す構成の場合、ＣＰＵ１１がＲＯＭ１３に格納されている命令を高速にアクセスすることで、高性能を実現するとともに、キャッシュを具備していないことから、一定速度での動作を実現可能としている。このため、図５に示す構成は、最悪実行時間の見積もりを容易化している。
【０００９】
しかしながら、図５に示す構成の場合、ＲＯＭ１３のアクセスタイムがＣＰＵ１１の動作速度に比べて遅くなると、性能が低下する。
【００１０】
近時、ＣＰＵの動作周波数は著しく向上している。ＬＳＩの製造プロセス等により、ＲＯＭ・フラッシュメモリの速度（アクセスタイム）は、ＣＰＵほど高速化していない。すなわち、ＲＯＭ・フラッシュメモリと、ロジック部の速度向上率の差違から、１００乃至２００ＭＨｚ等の帯域で高速動作するＣＰＵと同じ速度で動作するＲＯＭ・フラッシュメモリの実現は、益々、困難となってきている。
【００１１】
このため、ＬＳＩ内部に配置されたＣＰＵと、ＲＯＭの間に、キャッシュを配置する構成が用いられている。図６は、ＣＰＵとＲＯＭの間にキャッシュを配置した典型例な構成の一例を示す図である。
【００１２】
図６に示すように、コントローラＬＳＩ１０Ｂ内には、ＣＰＵ１１Ａと、命令キャッシュ１５と、データキャッシュ１６と、メモリコントローラ１４とを備えている。そして、コントローラＬＳＩ１０Ｂに外付けで、ＲＡＭデバイス１２ＥとＲＯＭデバイス１３Ｅとが設けられている。コントローラＬＳＩ１０Ｂに内蔵されるメモリコントローラ１４は、図示されないバス制御部を有し、ＲＡＭデバイス１２ＥとＲＯＭデバイス１３Ｅとバス接続され、ＣＰＵ１１Ａからのアドレス信号及び読み出しコマンドを受け、ＲＯＭデバイス１３Ｅからの命令の読み出しを制御し、また、ＣＰＵ１１Ａからのアドレス信号と読み出しコマンド、あるいは、ＣＰＵ１１Ａからのアドレス信号と書き込みコマンド及びデータ信号とを受け、ＲＡＭデバイス１２Ｅからのデータの読み出し、あるいはＲＡＭデバイス１２Ｅへのデータの書き込みを制御する。
【００１３】
ＣＰＵ１１Ａからの読み出しアクセスに対して、キャッシュヒット時には、命令キャッシュ１５からの命令がＣＰＵ１１Ａに供給され、キャッシュミス時には、ＲＯＭデバイス１３Ｅからアクセス対象の命令を含む複数の命令（１ブロック分）の読み出しが行われ、命令キャッシュ１５では、ＲＯＭデバイス１３Ｅから読み出された命令群（ブロック）による入れ替え（リプレース）が行われる。また、データキャッシュ１６に対する読み出しアクセスに対して、キャッシュヒット時には、データキャッシュ１６からのデータがＣＰＵ１１Ａに供給され、ミス時には、ＲＡＭデバイス１２Ｅからアクセス対象のデータを含む複数のデータ（１ブロック分）の読み出しが行われ、データキャッシュ１６では、ＲＡＭデバイス１２Ｅから読み出されたブロックによる入れ替え（リプレース）が行われる。
【００１４】
図６に示した構成は、外部メモリの速度の影響を余り受けず、平均性能を発揮することができる。
【００１５】
さらに、別の設計方式として、図７に示すように、コントローラＬＳＩ１０Ｃにおいて、ＣＰＵ１１とＲＯＭ１３との間にキャッシュ２０を配置する構成も知られている。図７に示す構成では、キャッシュのメリットである「高い平均性能」の達成が期待できる。なお、図７において、ＲＯＭ１３には、ＣＰＵ１１で実行される命令群が予め格納されており、ＲＡＭ１２にはＣＰＵ１１からの書き込みデータが格納されることは、図５を参照して説明した通りである。キャッシュ２０には、ＲＯＭ１３から読み出された命令が格納される。ＣＰＵ１１からの読み出しアクセスに対して、キャッシュヒット時には、キャッシュ２０からの命令がＣＰＵ１１に供給され、一方、ミス時には、ＲＯＭ１３からアクセス対象の命令を含む１ブロックの命令群が読み出され、キャッシュ２０では、ＲＯＭ１３から読み出されたブロック（命令群）による入れ替えが行われ、アクセス対象の命令がＣＰＵ１１に供給される。
【００１６】
なお、フラッシュメモリとＣＰＵとの間にキャッシュを備えたキャッシュ制御技術に関する刊行物として、例えば後記特許文献１も参照される。後記特許文献１には、フラッシュメモリに対する読み書き要求を複数のページからなるセクタ単位に切り上げてフラッシュメモリへのアクセスを行い、セクタ単位の書き込みデータに対してページ毎に有効無効を判定し、無効と判定された書き込みデータをフラッシュメモリのデータ格納領域に割当てない制御を行うようにした構成が開示されている。
【００１７】
【特許文献１】特開平７−１４６８２０号公報（第１図）
【非特許文献１】John L. Hennessy, David A. Patterson,  "Computer Organization and Design",  Morgan Kaufmann Publishers Inc., 第454-455頁、第480頁 1994
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ところで、図７に示した構成の場合、キャッシュのメリットである「高い平均性能」は期待できるものの、
・最悪実行時間の見積もりが困難であること、
・プログラムによっては期待した効果が得られない場合がある、
という、キャッシュのデメリットをそのまま継承することになる。
【００１９】
図８は、図５、図６、図７に示したそれぞれの設計方式について、キャッシュヒット率と、ＣＰＵの性能との関係を示す図である。図８は、本発明者により為された解析結果に基づくものであり、従来の設計方式の課題を説明するための図である。図８に示した測定結果において、図６の構成のＬＳＩ１０Ｂでは、動作周波数１３３ＭＨｚのダブルデータレートのインタフェース（ＤＤＲ−Ｉ／Ｆ）を備え、ＲＯＭデバイス１３Ｅとして、アクセスタイム４０ｎｓ（ナノ秒）のフラッシュメモリを用いている。また、図５、図７の構成のＬＳＩ１０Ａ、１０Ｃでは、内蔵ＲＯＭ１３として、アクセスタイム１００ｎｓのオンチップ・フラッシュメモリを用いている。図５乃至図７のＣＰＵは、いずれも、実質２６６ＭＨｚ（１命令≒３．７６ｎｓ）で駆動される。
【００２０】
図８において、ａはターゲット性能であり、ｂは、図５に示した構成の性能特性を表している（キャッシュを用いていないため、性能は固定値をとる）。ｃは、図６に示した構成の性能特性を表している。また、ｄは、図７に示した構成の性能特性を表している。
【００２１】
図８の特性ｂに示すように、図５に示した構成の場合、一定の処理性能を達成しているが、ターゲット性能には遠く及ばない。そして、図５に示した構成において、ターゲット性能に近づけるには、フラッシュメモリ（図５の１３）のさらなる高速化を図る必要があり、大幅なコスト高となる。
【００２２】
また図８の特性ｃに示すように、図６に示す構成は、外付けのＲＯＭデバイス１３Ｅの速度の影響を余り受けず、平均性能を発揮することができる。すなわち、キャッシュヒット率が９９％でターゲット性能を達成し、キャッシュヒット率が９５％程度までは、特性ｂよりも良好であり、キャッシュヒット率が９１％でも特性ｄと比べてはるかに良好な性能を発揮している。
【００２３】
そして、図８の特性ｄに示すように、図７に示す構成においては、ヒット率９１％程度で、ターゲット性能の１／３程度にまで落ち込む場合がある。図８の特性ｄのように、ヒット率の変動に応じて、性能の幅に３倍以上の開きがあると、制御用のコントローラＬＳＩとして適用は困難となる場合がある。なんとなれば、制御用のコントローラＬＳＩでは、例えば応答時間に厳しい制約が課せられるリアルタイム制御等を的確に遂行するために、好ましくは一定の高性能が求められており、さらに、性能が変動する場合でも、最悪実行時間の見積もりを正確に行うことが必要とされているためである。
【００２４】
したがって、本発明の目的は、最悪実行時間の見積もりを容易化し、期待した性能の実現を可能とする、新たなキャッシュ制御装置と方法、並びにキャッシュ制御装置を含むコントローラを提供することにある。
【課題を解決するための手段】
【００２５】
本願で開示される発明は、上記目的を達成するため、概略以下の構成とされる。
【００２６】
本発明の１つのアスペクト（側面）に係るキャッシュ制御装置は、プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュのアクセス態様を規定する設定情報との対応を少なくとも１つ記憶する記憶部と、ＣＰＵから供給されるプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を、前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに応じて、前記キャッシュのアクセス態様を可変に制御する回路と、を含む。
【００２７】
本発明に係るキャッシュ制御装置において、好ましくは、前記プロセスの実行特性に応じて、前記キャッシュのアクセス態様を可変に制御する構成とされる。
【００２８】
本発明に係るキャッシュ制御装置において、好ましくは、前記記憶部が、前記プロセスＩＤと前記設定情報との対応として、
プロセスＩＤとキャッシュの非使用、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース許可、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース非許可、
の内の少なくとも一つの対応を記憶しており、
前記ＣＰＵから前記プロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに対応させて、前記キャッシュの使用と非使用の制御、及び／又は、キャッシュのリプレース許可と非許可の制御を行う、構成とされる。
【００２９】
本発明の他のアスペクトに係るキャッシュ制御装置は、プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュの使用／非使用との対応を規定する設定情報を少なくとも１つ記憶する記憶部を備え、ＣＰＵからプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、プロセス毎に、キャッシュの使用と非使用の制御を行う。
【００３０】
本発明の他のアスペクトに係るキャッシュ制御装置は、プロセスの識別情報（「プロセスＩＤ」という）と、キャッシュのリプレースの許可／非許可との対応を規定する設定情報を少なくとも１つ記憶する記憶部を備え、ＣＰＵからプロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、プロセス毎に、キャッシュのリプレース許可と非許可の制御を行う。
【００３１】
上記した本発明に係るキャッシュ制御装置において、前記プロセスＩＤと前記設定情報との対応は、前記ＣＰＵ上で稼動するオペレーティングシステムが管理する実行プログラムの特性に関連付けて設定する構成としてもよい。
【００３２】
本発明の他のアスペクトに係るコントローラ装置は、ＣＰＵと、キャッシュと、上記本発明に係るキャッシュ制御装置を備えている。本発明に係るコントローラ装置において、命令及び／又は命令を格納した記憶装置を、前記コントローラ装置内部に配設してもよいし、あるいは前記コントローラ装置外部に配設するようにしてもよい。
【００３３】
本発明に係るコントローラ装置において、前記プロセスＩＤに対応する設定情報が、キャッシュ非使用である場合に、前記ＣＰＵからの読み出しアクセスに対して、前記キャッシュはアクセスされず、前記記憶装置から読み出された内容が、前記ＣＰＵに送られる。
【００３４】
本発明に係るコントローラ装置において、前記プロセスＩＤに対応する設定情報が、キャッシュ使用及びキャッシュのリプレース許可である場合に、前記ＣＰＵからの読み出しアクセスに対して、キャッシュヒットのときは、前記キャッシュから読み出されたデータが前記ＣＰＵに送られ、一方、ミスの場合には、前記記憶装置から読み出された内容が、前記ＣＰＵに送られるとともに、前記記憶装置から読み出された内容による前記キャッシュの入れ替えが行われる。
【００３５】
本発明に係るコントローラ装置において、前記プロセスＩＤに対応する設定情報が、キャッシュ使用及びキャッシュのリプレース非許可である場合に、前記ＣＰＵからの読み出しアクセスに対して、キャッシュヒットのときは、前記キャッシュから読み出された内容が前記ＣＰＵに送られ、一方、ミスの場合には、前記記憶装置から読み出された内容が、前記ＣＰＵに送られ、前記記憶装置から読み出された内容による前記キャッシュの入れ替えは行われない。
【００３６】
本発明の他のアスペクトに係るキャッシュ制御方法は、
（ａ１）ＣＰＵが、前記ＣＰＵで実行するプロセスの識別情報（「プロセスＩＤ」という）をキャッシュ制御装置に供給する工程と、
（ａ２）前記キャッシュ制御装置が、前記ＣＰＵからのプロセスＩＤを受け取り、プロセスＩＤとキャッシュのアクセス態様を規定する設定情報との対応を少なくとも１つ記憶する記憶部を参照して、前記プロセスＩＤに対応した設定情報を取得する工程と、
（ａ３）前記キャッシュ制御装置が、前記設定情報に基づき、前記プロセスに応じて、前記キャッシュのアクセス態様を可変に制御する工程と、
を含む。
【００３７】
本発明に係るキャッシュ制御方法において、前記プロセスの実行特性に応じて、前記キャッシュのアクセス態様を可変に制御する構成としてもよい。
【００３８】
本発明に係るキャッシュ制御方法において、前記記憶部が、前記プロセスＩＤと前記設定情報の対応として、
プロセスＩＤとキャッシュの非使用、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース許可、
プロセスＩＤとキャッシュの使用、及びキャッシュのリプレース非許可、
の内の少なくとも一つの対応を記憶し、
前記ＣＰＵから前記プロセスＩＤを受け取り、前記プロセスＩＤに対応した設定情報を前記記憶部から取得し、前記設定情報に基づき、前記ＣＰＵで実行されるプロセスに対応させて、前記キャッシュの使用と非使用の制御、及び／又は、キャッシュのリプレース許可と非許可の制御を行う、ようにしてもよい。
【００３９】
本発明に係るキャッシュ制御方法において、前記プロセスＩＤと前記設定情報との対応は、前記ＣＰＵ上で稼動するオペレーティングシステムが管理する実行プログラムの特性に関連付けて設定するようにしてもよい。
【発明の効果】
【００４０】
本発明によれば、プログラムの実行特性に応じてキャッシュ制御を可変制御することにより、時間的・空間的局所性が低いプログラムにおいても、最悪実行時間の見積もりを容易化し、期待した性能の実現を可能としている。
【発明を実施するための最良の形態】
【００４１】
上記した本発明についてさらに詳細に説述するために、添付図面を参照して、発明の原理、及び実施の形態を以下に説明する。まず、本発明の原理について説明する。
【００４２】
＜発明の原理＞
前述したように、図７に示した構成のキャッシュヒット率の低下に対する性能の落ち込み幅は特段に大きく（図８の特性ｄ参照）、最悪実行時間の見積もりを正確に行うことは容易ではない。このため、図７に示した構成を、制御用コントローラとして用いることは困難であることがわかった。
【００４３】
そして、本発明者のさらなる検討結果により、制御向けＣＰＵにて実行されるプログラムは、時間的・空間的局所性が低いことが知見された。これは、制御向けのＣＰＵは、主として外部割り込みで駆動されることもその一因であるものと思料される。
【００４４】
図３は、制御系プログラムの実行時における命令ミス率の推移の解析結果を示す図である。すなわち、図３には、図７の構成（ＲＯＭ、キャッシュ、ＣＰＵをＬＳＩに搭載した構成）において、キャッシュ２０のメモリサイズを８Ｋバイト、１６Ｋバイト、３２Ｋバイトとした場合のそれぞれにおける、命令ミス率（＝（１００−キャッシュヒット率）％）の測定結果を示す。なお、キャッシュ２０は、４ウェイ・セットアソシアティブ構成とされ、２００×１０００回（２００Ｋ）の命令実行毎の命令ミス率（Instruction  miss  ratio）がプロットされている。すなわち、図３の横軸の１区間（Interval）は、２００×１０００回（２００Ｋ）の命令実行の時間区間とされ、図３の縦軸は命令ミス率（％表示）である。図３において、ａ、ｂ、ｃは、それぞれ、キャッシュのサイズを８Ｋバイト、１６Ｋバイト、３２Ｋバイトとした場合における、命令ミス率の推移を表している。なお、サイズ８Ｋバイトのキャッシュが、例えば１ブロックを４バイトとしてエントリ数２Ｋで構成した場合、サイズ１６Ｋバイトのキャッシュは、１ブロックを８バイトとしてエントリ数を２Ｋ、サイズ３２Ｋバイトのキャッシュは、１ブロックを１６バイトとしてエントリ数を２Ｋで構成される。
【００４５】
図３において、着目すべき点は、キャッシュ２０のサイズを８Ｋバイトの２倍、４倍としても、命令ミス率の変動特性の間に、さしたる差異は認められないということである。すなわち、プログラムに空間的局所性がある場合、キャッシュ２０のサイズ（ブロックサイズ）を大とすれば、ヒット率の向上が期待されるが、図３に示すかぎり、このような傾向は認められない。すなわち、空間的局所性を欠いていることがわかる。また、特性ａ、ｂ、ｃの変動の態様からも、時間的局所性（一度参照されたデータの近くのデータがすぐに参照される）を欠いていることもわかる。なお、図３において、特性ａ，ｂ，ｃの命令ミス率が、ボトム値からピーク値への遷移を開始する時点は、図７のＣＰＵ１１が、コンテクスト・スイッチング等により、それまで実行していたプロセス（タスク）から新しいプロセス（タスク）に切替え、新しいプロセス（タスク）の実行を開始した時点に対応する。この場合、キャッシュ２０（図７参照）内には、切替先のプロセス（タスク）の命令群が存在しない可能性が高くなり、命令ミス率は、急激に増大しピークに達する。その後、当該プロセス（タスク）の処理が進むと、キャッシュ２０（図７参照）は、命令ミス発生によりＲＯＭ１３（図７参照）から読み出された当該プロセス（タスク）に関連する命令群による入れ替えが進むため、命令ミス率は低下していく。図３の矢印で示す周期は、実行プログラムの周期（種別）に対応している。
【００４６】
本発明は、このような制御系プログラムに固有のキャッシュ性能特性（時間・空間的局所性を欠く場合がある）に関する知見に基づき、創案されたものであり、ＣＰＵで実行されるプログラムの実行特性に対応してキャッシュ制御の態様を可変に制御する構成としたものである。以下、実施の形態に即して詳述する。
【００４７】
図１は、本発明の一実施の形態の構成を示す図である。図１を参照すると、ＬＳＩ１０は、ＣＰＵ１とＲＯＭ１３との間にキャッシュ２０を備え、さらに、ＣＰＵ１から出力されるプロセスＩＤ（「ＰＩＤ」とも略記される）に対応してキャッシュの使用／非使用の制御を行うキャッシュ制御回路２１を備えている。さらに、本発明の一実施の形態において、キャッシュ制御回路２１は、キャッシュの使用／非使用の切替制御を行うだけでなく、キャッシュ使用の場合には、プロセスＩＤ毎に、キャッシュのリプレース許可・非許可の制御も行う。
【００４８】
最悪実行時間の見債もり容易化のために、制御系プログラムにおいては、
（Ａ）最悪実行時間の保証が必須であるプログラム（プロセス又はタスク）と、
（Ｂ）実行時間の保証の必要がないプログラム（プロセス又はタスク）と、
に分割されることは、一般に知られている。
【００４９】
また、上記（Ａ）の「最悪実行時間の保証が必須であるプログラム」は、
（Ａ１）常に実行時間が一定である保証、
（Ａ２）ある時間以内に実行される保証、
の２通りが存在する。
【００５０】
本実施の形態において、上記（Ａ１）の「常に実行時間が一定である保証」が必要なプログラム（プロセス）に対しては、キャッシュを使用しない。すなわち、この場合、キャッシュ制御回路２１は、ＣＰＵ１が、キャッシュ２０を介さず、直接、ＲＯＭ１３にアクセスしＲＯＭ１３からのデータを読み込むように制御する。この場合、図１の構成は、図５に示した構成と等価となり、一定の性能が保証される。
【００５１】
上記（Ａ２）の「ある時間以内に実行される保証」が必要なプログラム（プロセス）に対して、キャッシュ制御回路２１は、キャッシュ２０の入れ替え（リプレース）を伴うキャッシュアクセスを許可する。
【００５２】
上記（Ｂ）の「実行時間の保証が必要ない」プログラムに対しては、キャッシュ制御回路２１は、キャッシュ２０のアクセスのみを許可し、キャッシュ２０の入れ替え（リプレース）を許可しない。
【００５３】
本実施の形態によれば、かかる制御を行うことで、制御系プログラムについて、最悪実行時間の見積もりを容易化している。
【００５４】
ところで、キャッシュ・システムが「期待した効果」を得られない原因は、プログラム全体の動作空間（アドレス空間）に対して、キャッシュのサイズが小さいことがあげられる。キャッシュのサイズが小さいため、キャッシュ内でのスラッシングが発生し、時間的局所性、空間的局所性が損なわれる。
【００５５】
上記のように、本実施の形態によれば、キャッシュ制御回路２１が、キャッシュ２０に対して、ＣＰＵ１で実行されるプロセスに応じた制御を行うことで、プログラムの実行特性に適ったキャッシュ制御を実現している。このため、命令ミスによるキャッシュのリプレース（メモリから読み出したブロックによるキャッシュの内容の入れ替え）を期待するプログラムの総量を減らすことが可能となる。すなわち、個々のプロセスの実行特性に応じて、あるプロセスに対して、例えばキャッシュ使用可且つキャッシュ・リプレースを不許可とし、別のプロセスに対してはキャッシュを非使用とし、特定のプロセスに対してはその命令コードの多くがキャッシュ内に常駐するように設定することが可能となり、ミスヒットによるキャッシュのリプレースの総量を減少させることができる。キャッシュのリプレース回数を低減することは、プログラム全体の動作空間に対するキャッシュのサイズの比を向上させることと等価となり、キャッシュ使用時の平均性能の向上を可能としている。以下実施例に即して説明する。
【実施例】
【００５６】
図２は、本発明の一実施例の構成を示す図である。図２を参照すると、本実施例は、ＣＰＵ１と、例えばフラッシュメモリよりなるＲＯＭ１３との間に、タグコントロール部２０１とデータ部２０２とを備え、さらに、キャッシュ・コントロール部２１１と、キャッシュ・コントロール部２１１からの制御信号を受け、ＲＯＭ１３からの読み出されたデータ（命令）とデータ部２０２からのデータ（命令）のいずれかを選択してＣＰＵ１に出力するセレクタ２１３を備えている。タグコントロール部２０１とデータ部２０２は、図１のキャッシュ２０を構成し、キャッシュ・コントロール部２１１とセレクタ２１３は、図１のキャッシュ制御回路２１に対応している。
【００５７】
タグコントロール部２０１は、タグアドレスを格納する複数のエントリ（不図示）を有し、ＣＰＵ１からのアドレス信号のタグアドレス（ＭＳＢ（最上位ビット）を含む上位ビットフィールドの所定のビット数）と、該アドレス信号のインデックス（タグアドレスよりも下位の所定のビットフィールド）で参照されるエントリのタグアドレスとが一致するか否か比較判定する比較器（不図示）を備えた公知の構成とされ、図示されない比較器は、一致のときは、キャッシュヒットと判定し、不一致のときは、ミスと判定する。データ部２０２は、タグアドレスを格納する複数のエントリに対応して、複数のブロックを有し、各ブロックには、複数バイトのデータが格納される公知の構成とされる。キャッシュヒット時、該ブロックは、アドレス信号のインデックスでアクセスされ、該当するデータは、アドレス信号のＬＳＢ（最下位ビット）を含む下位ビットで選択されて出力される。なお、キャッシュは、複数ウェイのセットアソシアティブ構成としてもよいことは勿論である。なお、複数ウェイのセットアソシアティブ構成の場合、キャッシュのリプレース（ブロックの入れ替え）は、ＬＲＵ（Least Recently Used）又はランダム選択等に基づき入れ替え対象のブロックが選択される。
【００５８】
キャッシュ・コントロール部２１１は、プロセスＩＤと設定情報（config）との対応を、テーブル形式で記憶保持する記憶部２１２を有する。記憶部２１２は、ＣＰＵ１から出力されるプロセスＩＤを入力し、該プロセスＩＤに対応した設定情報を出力する。キャッシュ・コントロール部２１１は、記憶部２１２からの設定情報の内容に対応した制御信号を、タグコントロール部２０１とセレクタ２１３に出力する。キャッシュ・コントロール部２１１は、記憶部２１２に記憶されるプロセスＩＤと設定情報（config）の対応は、例えばブート時（パワーアップ時、リセット時）等にＣＰＵ１から設定される。あるいは、ＣＰＵ１が、記憶部２１２におけるプロセスＩＤと設定情報（config）の対応を、適宜可変に設定する構成としてもよいことは勿論である。
【００５９】
ＣＰＵ１からのプロセスＩＤに対応する設定情報の内容が、キャッシュ非使用である場合、キャッシュ・コントロール部２１１からの制御のもと、タグコントロール部２０１では、キャッシュヒットの判定は行わず、ＣＰＵ１からのアドレス信号をＲＯＭ１３にそのまま供給し、また、セレクタ２１３は、ＲＯＭ１３からの読み出しデータ（命令）を選択して、ＣＰＵ１に出力する。
【００６０】
ＣＰＵ１からのプロセスＩＤに対応する設定情報の内容が、キャッシュ使用であるが、リプレース非許可である場合には、キャッシュ・コントロール部２１１からの制御のもと、ミス時に、ＲＯＭ１３からの読み出しデータ（命令）によるデータ部２０２のデータの入れ替えは禁止される。すなわち、キャッシュヒット時には、データ部２０２からのデータ（命令）がセレクタ２１３を介してＣＰＵ１に供給され、ミス時に、ＲＯＭ１３からの読み出しデータ（命令）が、ＣＰＵ１に供給され、データ部２０２では、ＲＯＭ１３からの読み出しデータ（命令）による入れ替えは行わない。
【００６１】
一方、ＣＰＵ１からのプロセスＩＤに対応する設定情報の内容が、キャッシュ使用であり、且つリプレース許可である場合に、キャッシュ・コントロール部２１１からの制御のもと、キャッシュヒット時には、データ部２０２からのデータがセレクタ２１３を介してＣＰＵ１に供給され、ミス時には、ＲＯＭ１３からの読み出しデータ（命令）がＣＰＵ１に供給され、データ部２０２では、ＲＯＭ１３からの読み出しデータ（命令）による入れ替えが行われる。
【００６２】
ＣＰＵ１は、実行するプログラムの管理単位をなすプロセスごとに、ユニークなＩＤ（プロセスＩＤ）を設定する。プロセスは、ＣＰＵ１上で実行されるＯＳ（オペレーティングシステム）が管理する。図２において、１０２は、ＣＰＵコア１０１で実行されるプロセスＩＤを保持するレジスタである。
【００６３】
本実施例では、プロセスＩＤごとに、
・キャッシュアクセスの許可・非許可
・キャッシュリプレースの許可・非許可
を独立に設定することができる。
【００６４】
本実施例において、ＣＰＵ１においてプログラムの実行時に、ＯＳ（オペレーティングシステム）により設定されるプロセスＩＤから、キャッシュの設定情報を連想し、キャッシュ・コントロール部２１１に通知する。図２に示す例では、キャッシュ・コントロール部２１１では、ＣＰＵ１からのプロセスＩＤ（ＰＩＤ）がＰＩＤ＿０の場合、記憶部２１２から設定情報ｃｏｎｆｉｇ＿１を出力し、ＣＰＵ１からのプロセスＩＤ（ＰＩＤ）がＰＩＤ＿１の場合、記憶部２１２から設定情報ｃｏｎｆｉｇ＿２を出力する。
【００６５】
キャッシュ・コントロール部２１１は、記憶部２１２から出力される設定情報により、
（Ａ）キャッシュアクセス許可、且つ、キャッシュリプレース許可
（Ｂ）キャッシュアクセス許可、且つ、キャッシュリプレース非許可
（Ｃ）キャッシュアクセス非許可
の３通りの制御動作を実現する。
【００６６】
常に実行時間が一定であることが必要なプログラムは、
上記（Ｃ）の方式で、キャッシュのアクセスを非許可とした状態で、プログラムを実行する。
【００６７】
最悪値以内の命令実行が必要なプログラムは、上記（Ａ）の方式でキャッシュをアクセスし、プログラムを実行する。
【００６８】
それ以外のプログラムは、上記（Ｂ）の方式でキャッシュをアクセスし、プログラムを実行する。
【００６９】
本実施例において、上記（Ａ）乃至（Ｃ）の選択は、ＣＰＵ１で稼動するオペレーティングシステム（ＯＳ）が管理する「実行プログラムのプロパティ」に関連付けて設定され、プログラムが配置されるアドレスには、依存しない。
【００７０】
このように、本実施例によれば、各プログラム（プロセス）の実行特質に合わせ、上記（Ａ）乃至（Ｃ）を選択し、キャッシュの制御を、プロセス単位に切り替えて、プログラムを実行することができる。かかる構成により、
・最大実行時間の保証が必要なプログラムには、最大実行時間の保証が可能な状態での実行を可能としており、
・平均処理時間が重要なプログラムには、キャッシュの効果が最大限に発揮される状態での実行を可能としている。
【００７１】
また、本実施例によれば、平均処理時間が重要なプログラムのみを、全体のプログラムから切り分けて実行することにより、ＲＯＭ１３と比較して、少ない容量のキャッシュメモリを用いた場合における、性能低下を抑えることが可能である。
【００７２】
さらに、本実施例によれば、ＯＳ（オペレーティングシステム）が管理する実行プログラムのプロパティ情報と、キャッシュの使用許可・非許可を連携させて設定することが可能となる。このため、プログラムの配置位置、それぞれのプログラムの内容等を何等変更することなく、各プログラムの実行特質に合わせた、システム構成でのプログラム実行を可能としている。
【００７３】
さらにまた、本実施例においては、キャッシュの使用と非使用の２通りのモード設定だけでなく、キャッシュ・リプレースのみ禁止する使用モードをプロセスごとに設定できるため、キャッシュにすでに格納されている内容を有効に活用することができる。
【００７４】
図４は、本発明のキャッシュ制御方法の一実施例の動作手順を説明するための流れ図である。図２及び図４を参照して、本実施例の手順を説明する。
【００７５】
ステップＳ１において、ＣＰＵ１から、キャッシュ・コントロール部２１１の記憶部２１２に、プロセスＩＤと設定情報との対応が設定される。
【００７６】
ステップＳ２において、ＣＰＵ１は、ＣＰＵ１で実行されるプロセスのプロセスＩＤを、キャッシュ・コントロール部２１１に出力する。
【００７７】
次のステップＳ３において、キャッシュ・コントロール部２１１は、ＣＰＵ１から供給されたプロセスＩＤを受け取り、記憶部２１２から、プロセスＩＤに対応する設定情報を取得する。
【００７８】
次のステップＳ４において、キャッシュ・コントロール部２１１は、取得した設定情報に基づき、ＣＰＵ１で実行されるプロセス毎に、そのプロセスＩＤに応じたキャッシュ制御（キャッシュ非使用、キャッシュ使用且つリプレース許可、キャッシュ使用且つリプレース非許可）を行う。
【００７９】
＜比較例１＞
次に、本発明の比較例として、キャッシュ制御の選択をプロセスＩＤで制御する代わりに、アクセスする領域（アドレス）ごとに設定する構成とした場合について検討してみる。かかる構成においては、アドレスで切り分けされている領域ごとに、キャッシュ許可・キャッシュ非許可が設定可能であり、キャッシュ許可と指定されているアドレスに配置されているプログラムは、キャッシュを使用して動作し、キャッシュ非許可と指定されているアドレスに配置されているプログラムは、キャッシュを使用せず動作する。しかしながら、この場合、キャッシュの動作許可・非許可は、配置されているメモリアドレスごとでしか制御することができないため、近傍に配置されているプログラムに対して、キャッシュの許可・非許可を細やかに制御することはできない。例えば言語Ｃのランタイムルーチン中、あるプログラムから使用される部分のみキャッシュ対象とし、それ以外のランタイムルーチンはキャッシュ内部に格納されないように制御する。またある割り込み処理ルーチンは、キャッシュ対象とし、別の割り込み処理はキャッシュ対象としないように設定する。しかしながら、システム立ち上げ時において、プログラムごとのキャッシュ使用・非使用の変更は容易ではなく、システムとして最適なキャッシュ使用方法の検討が不可能である。
【００８０】
＜比較例２＞
さらに、本発明の他の比較例として、プログラム中にて許可・非許可を明示的に切り替える構成とした場合について検討してみる。プログラム中にて明示的にキャッシュ許可を指定した時点からキャッシュを使用して動作し、プログラム中にて明示的にキャッシュ非許可を指定した時点からキャッシュを使用せず動作するが、以下の問題点がある。すなわち、
（Ｉ）プログラム中にて許可・非許可を切り替える必要がある。
【００８１】
（II）切り替える前の状態は、以前に実行したプログラムの設定に依存するため、制御性が悪い。
【００８２】
（III）実行されるプログラムの順序を、ＯＳ（オペレーティングシステム）が制御するシステムにおいては、キャッシュの制御は、ＯＳのみが管理し、実行プログラム内部で変更する手段を提供していない。
【００８３】
このように、上記比較例１、２のいずれの方式においても、キャッシュ許可時には、キャッシュの恩恵に与ることが可能とされているが、キャッシュ非許可時には、たとえキャッシュ内に目的とするデータが格納されている場合であっても、該目的とするデータにアクセスすることができず、メモリから、データを読み出す必要が生じる。
【００８４】
キャッシュシステムに対して、ＣＰＵから与えられる情報は、アクセスアドレスのみしかなく、キャッシュ自身は、アクセスアドレス情報からしか、キャッシュ制御方式を変更することができない。ＯＳ（オペレーティングシステム）が実装されるシステムにおいて、プログラムの実行順序、実行状態は、ＯＳがプログラムごとに管理するものであるが、ＯＳが管理する情報から、キャッシュを制御する手段が存在しない。
【００８５】
＜本発明＞
上記比較例１、２と相違して、本実施例によれば、前述したように、各プログラムの実行特質に合わせ、
（Ａ）キャッシュアクセス許可、且つ、キャッシュリプレース許可
（Ｂ）キャッシュアクセス許可、且つ、キャッシュリプレース非許可
（Ｃ）キャッシュアクセス非許可
を選択してキャッシュ制御を切替実行し、
・最大実行時間保証が必要なプログラムには、最大実行時間保証が可能な状態での実行を可能とし、また、
・平均処理時間が重要なプログラムには、キャッシュの効果が最大限に発揮される状態での実行を可能としている。
【００８６】
さらに、本実施例によれば、ＯＳ（オペレーティングシステム）が管理する実行プログラムのプロパティ情報と、キャッシュの使用許可・非許可を設定することを可能としている。このため、本実施例によれば、プログラムの配置位置、それぞれのプログラムの内容等を何等変更することなく、各プログラムの実行特質に合わせた、システム構成でのプログラム実行を可能としている。
【００８７】
以上、本発明を上記実施例に即して説明したが、本発明は、上記実施例の構成にのみ限定されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【００８８】
例えば上記実施例では、ＲＡＭ、ＲＯＭ、キャッシュをＬＳＩと同一チップ上に搭載した例について説明したが、ＲＡＭ、ＲＯＭを外付けとしてもよいことは勿論である。また、上記実施例では、プロセスＩＤに応じてキャッシュ制御を行う例に即して説明したが、リアルタイムモニタ等において、タスクを実行単位として管理するシステム構成の場合、タスクＩＤに応じてキャッシュ制御を行うようにしてもよいことは勿論である。さらに、本発明は、制御向けの専用コントローラにその適用が限定されるものでなく、任意の演算制御装置等に適用してもよいことは勿論である。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施の形態の構成を示す図である。
【図２】本発明の一実施例の構成を示す図である。
【図３】キャッシュサイズと、命令ミス率の変動特性をを示す図である。
【図４】本発明の一実施例の処理手順を示す流れ図である。
【図５】従来の構成の一例を示す図である。
【図６】従来の構成の一例を示す図である。
【図７】従来の構成の一例を示す図である。
【図８】従来の構成におけるキャッシュヒット率と性能の特性の解析結果を示す図である。
【符号の説明】
【００９０】
１、１１、１１Ａ  ＣＰＵ
１０、１０Ａ、１０Ｂ、１０Ｃ  ＬＳＩ（コントローラ）
１２  ＲＡＭ
１２Ｅ  ＲＡＭデバイス
１３  ＲＯＭ
１３Ｅ  ＲＯＭデバイス
１４  メモリコントローラ
１５  命令キャッシュ
１６  データキャッシュ
２０  キャッシュ
２１  キャッシュ制御回路
１０１  ＣＰＵコア
１０２  ＰＩＤレジスタ
２０１  タグコントロール部
２０２  データ部
２１１  キャッシュ・コントロール部
２１２  記憶部（変換テーブル）
２１３  セレクタ
【図１】
2006031386.tif 000003
【図２】
2006031386.tif 000004
【図３】
2006031386.tif 000005
【図４】
2006031386.tif 000006
【図５】
2006031386.tif 000007
【図６】
2006031386.tif 000008
【図７】
2006031386.tif 000009
【図８】
2006031386.tif 000010