(57)【要約】  ノンブロッキングキャッシュにおいて、全てのＭＳＨＲが利用されることによる後続のメモリアクセスにおけるレイテンシの増大を防止する。複数のＭＳＨＲ（Miss Status/Information Holding Register）と、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用されるＭＳＨＲを対応付け、当該対応付けに基づいて、アクセス識別手段において識別したメモリアクセスが利用するＭＳＨＲの候補を決定するメモリアクセス対応付け手段と、を備える。
2010024071.tif 000002
【特許請求の範囲】
【請求項１】
複数のＭＳＨＲ（Miss Status/Information Holding Register）と、
受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、
或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付け手段と、
を備えることを特徴とするキャッシュメモリ。
【請求項２】
決定した前記ＭＳＨＲの候補が利用中か否かを調べ、当該ＭＳＨＲの候補が利用中でない場合は、当該ＭＳＨＲの候補を空きＭＳＨＲとして出力し、当該ＭＳＨＲの候補が利用中である場合はその旨を出力する空きＭＳＨＲ判定手段を更に備えることを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記メモリアクセス識別手段が、受け付けた前記メモリアクセスリクエストから、メモリアクセスＩＤを生成し、
前記メモリアクセス対応付け手段が、前記メモリアクセスＩＤとＭＳＨＲの対応を記録した表を用いることによって、前記メモリアクセスに対応するＭＳＨＲの候補を決定することを特徴とする請求項１又は２に記載のキャッシュメモリ。
【請求項４】
前記メモリアクセスＩＤは、ＣＰＵ毎に割り振られている番号であるＣＰＵ番号を利用したものであることを特徴とする請求項３に記載のキャッシュメモリ。
【請求項５】
前記メモリアクセスＩＤは、前記メモリアクセスリクエストに含まれるアドレスを利用したものであることを特徴とする請求項３に記載のキャッシュメモリ。
【請求項６】
前記メモリアクセスＩＤは、ＣＰＵが処理するプロセスのプロセスＩＤを利用したものであることを特徴とする請求項３に記載のキャッシュメモリ。
【請求項７】
前記メモリアクセスＩＤは、或るメモリアクセスが利用可能なＭＳＨＲの集合を表すＭＳＨＲマスクを利用したものであることを特徴とする請求項３に記載のキャッシュメモリ。
【請求項８】
高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するＭＳＨＲを分離することを特徴とした請求項１乃至７の何れか１項に記載のキャッシュメモリ。
【請求項９】
請求項１乃至８の何れか１項に記載のキャッシュメモリと、
メモリアクセスリクエストにメモリアクセスＩＤを付加するメモリアクセスＩＤ生成部を備えたＣＰＵと、を備え、
前記メモリアクセス識別手段が、前記ＣＰＵによって付加された前記メモリアクセスＩＤを、前記メモリアクセス対応付け手段に渡すメモリアクセスＩＤとすることを特徴とするキャッシュメモリシステム。
【請求項１０】
請求項１乃至８の何れか１項に記載のキャッシュメモリと、
ＣＰＵが発行したメモリアクセスリクエストを受け取り、当該メモリアクセスリクエストにメモリアクセスＩＤを付加したうえで前記キャッシュメモリに対して当該メモリアクセスリクエストを発行するメモリアクセスＩＤ付加手段と、
を備え、
前記メモリアクセス識別手段が、前記メモリアクセスＩＤ付加部によって付加された前記メモリアクセスＩＤを、前記メモリアクセス対応付け手段に渡すメモリアクセスＩＤとすることを特徴とするキャッシュメモリシステム。
【請求項１１】
高優先度アプリケーションソフトウェアが利用するデータが他のアプリケーションソフトウェアによって前記キャッシュメモリから追い出されないように設定するキャッシュヒット率向上手段と、
前記メモリアクセス識別手段及びメモリアクセス対応付け手段と、前記キャッシュヒット率向上手段とを組み合わせて利用するメモリアクセス高速化手段と、
を更に備えることを特徴とする請求項９又は１０に記載のキャッシュメモリシステム。
【請求項１２】
前記キャッシュアクセス高速化手段は、オペレーティングシステムが備えていることを特徴とする請求項１１に記載のキャッシュメモリシステム。
【請求項１３】
受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別ステップと、
或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別ステップにおいて識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付けステップと、を備え、
前記各ステップを複数のＭＳＨＲを有するキャッシュメモリが行うことを特徴とするキャッシュメモリ利用方法。
【請求項１４】
決定した前記ＭＳＨＲの候補が利用中か否かを調べ、当該ＭＳＨＲの候補が利用中でない場合は、当該ＭＳＨＲの候補を空きＭＳＨＲとして出力し、当該ＭＳＨＲの候補が利用中である場合はその旨を出力する空きＭＳＨＲ判定ステップを更に備えることを特徴とする請求項１３に記載のキャッシュメモリ利用方法。
【請求項１５】
前記メモリアクセス識別ステップにおいて、受け付けた前記メモリアクセスリクエストから、メモリアクセスＩＤを生成し、
前記メモリアクセス対応付けステップにおいて、前記メモリアクセスＩＤとＭＳＨＲの対応を記録した表を用いることによって、前記メモリアクセスに対応するＭＳＨＲの候補を決定することを特徴とする請求項１３又は１４に記載のキャッシュメモリ利用方法。
【請求項１６】
前記メモリアクセスＩＤとして、ＣＰＵ毎に割り振られている番号であるＣＰＵ番号を利用することを特徴とする請求項１５に記載のキャッシュメモリ利用方法。
【請求項１７】
前記メモリアクセスＩＤとして、前記メモリアクセスリクエストに含まれるアドレスを利用することを特徴とする請求項１５に記載のキャッシュメモリ利用方法。
【請求項１８】
前記メモリアクセスＩＤとして、ＣＰＵが処理するプロセスのプロセスＩＤを利用することを特徴とする請求項１５に記載のキャッシュメモリ利用方法。
【請求項１９】
前記メモリアクセスＩＤとして、或るメモリアクセスが利用可能なＭＳＨＲの集合を表すＭＳＨＲマスクを利用することを特徴とする請求項１５に記載のキャッシュメモリ利用方法。
【請求項２０】
高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するＭＳＨＲを分離することを特徴とした請求項１３乃至１９の何れか１項に記載のキャッシュメモリ利用方法。
【請求項２１】
ＣＰＵが、メモリアクセスリクエストにメモリアクセスＩＤを付加するメモリアクセスＩＤ生成ステップを更に備え、
前記メモリアクセス識別ステップにおいて、前記ＣＰＵによって付加された前記メモリアクセスＩＤを、前記メモリアクセス対応付けステップにおけるメモリアクセスＩＤとすることを特徴とする請求項１３乃至２０の何れか１項に記載のキャッシュメモリ利用方法。
【請求項２２】
ＣＰＵが発行したメモリアクセスリクエストを受け取り、当該メモリアクセスリクエストにメモリアクセスＩＤを付加したうえでキャッシュメモリに対して当該メモリアクセスリクエストを発行するメモリアクセスＩＤ付加ステップを更に備え、
前記メモリアクセス識別ステップにおいて、前記メモリアクセスＩＤ付加部によって付加された前記メモリアクセスＩＤを、前記メモリアクセス対応付けステップにおけるメモリアクセスＩＤとすることを特徴とする請求項１３乃至２０の何れか１項に記載のキャッシュメモリ利用方法。
【請求項２３】
高優先度アプリケーションソフトウェアが利用するデータが他のアプリケーションソフトウェアによってキャッシュメモリから追い出されないように設定するキャッシュヒット率向上ステップと、
前記メモリアクセス識別ステップ及び前記メモリアクセス対応付けステップと、前記キャッシュヒット率向上ステップとを組み合わせて利用するメモリアクセス高速化ステップと、
を更に備えることを特徴とする請求項２１又は２２に記載のキャッシュメモリ利用方法。
【請求項２４】
前記キャッシュアクセス高速化ステップは、オペレーティングシステムにより実行されることを特徴とする請求項２３に記載のキャッシュメモリ利用方法。
【請求項２５】
複数のＭＳＨＲと、
受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、
或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付け手段と、
として、コンピュータを機能させることを特徴とするプログラム。
【請求項２６】
前記コンピュータを、
決定した前記ＭＳＨＲの候補が利用中か否かを調べ、当該ＭＳＨＲの候補が利用中でない場合は、当該ＭＳＨＲの候補を空きＭＳＨＲとして出力し、当該ＭＳＨＲの候補が利用中である場合はその旨を出力する空きＭＳＨＲ判定手段として、更に機能させることを特徴とする請求項２５に記載のプログラム。
【請求項２７】
前記メモリアクセス識別手段が、受け付けた前記メモリアクセスリクエストから、メモリアクセスＩＤを生成し、
前記メモリアクセス対応付け手段が、前記メモリアクセスＩＤとＭＳＨＲの対応を記録した表を用いることによって、前記メモリアクセスに対応するＭＳＨＲの候補を決定することを特徴とする請求項２５又は２６に記載のプログラム。
【請求項２８】
前記メモリアクセスＩＤとして、ＣＰＵ毎に割り振られている番号であるＣＰＵ番号を利用することを特徴とする請求項２７に記載のプログラム。
【請求項２９】
前記メモリアクセスＩＤとして、前記メモリアクセスリクエストに含まれるアドレスを利用することを特徴とする請求項２７に記載のプログラム。
【請求項３０】
前記メモリアクセスＩＤとして、ＣＰＵが処理するプロセスのプロセスＩＤを利用することを特徴とする請求項２７に記載のプログラム。
【請求項３１】
前記メモリアクセスＩＤとして、或るメモリアクセスが利用可能なＭＳＨＲの集合を表すＭＳＨＲマスクを利用することを特徴とする請求項２７に記載のプログラム。
【請求項３２】
高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するＭＳＨＲを分離することを特徴とした請求項２５乃至３１の何れか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの備えるキャッシュメモリであって複数のプロセッサやスレッドによって共有されるキャッシュメモリ、そのシステム、その利用方法及びその利用プログラムに関する。
【背景技術】
【０００２】
プロセッサ、キャッシュメモリ（以下、キャッシュメモリを単に「キャッシュ」と呼ぶ場合もある。）及び主メモリ（以下、主メモリを単に「メモリ」と呼ぶ場合もある。）を備えるコンピューターシステムにおいて、キャッシュはメモリの動作速度の遅さを原因として発生する遅延時間（以下、「レイテンシ」と表記する。）を隠蔽し、アプリケーションソフトウェアの性能を向上させるために重要であることが知られている。【０００３】
キャッシュは、高速で小容量のメモリで、メモリ上のデータの一部を格納することができる。ＣＰＵ（Central Processing Unit）がメモリアクセスを行った際にキャッシュ上にデータが存在する（ヒットする）場合は、低レイテンシでＣＰＵにデータが供給される。一方、キャッシュ上にデータが存在しない（ミスする）場合は、キャッシュはメモリからデータを取得してＣＰＵへ供給する。上述したように、メモリの動作速度はＣＰＵやキャッシュの動作速度に比べて遅いため、データが供給されるまでのレイテンシが大きい。このため、ＣＰＵがストールする時間が長くなり、アプリケーションの性能が落ちる。【０００４】
この様なキャッシュの性質から、キャッシュのヒット率を向上させることが重要であることが知られている。このため、プログラムを改造することによってヒット率を向上させる方法や、キャッシュに格納されたデータがキャッシュから追い出されることを禁止するＷａｙロック方式を用いる方法などの様々な方法が利用されている。【０００５】
例えば、関連する技術として、特許文献１ではＯＳ（Operating System：オペレーティングシステム）のページ管理を利用して、プロセス間でキャッシュ上のデータの追い出し合いを削減し、キャッシュヒット率を向上させる手法を開示している。これら関連する技術について、図１６を参照して説明する。【０００６】
図１６に、ＣＰＵ、キャッシュ及びメモリからなるシステムの構成例を示す。本システム例は、ＣＰＵ１０、キャッシュメモリ２０及び主メモリ３０を有している。また、ＣＰＵ１０はキャッシュメモリ２０と接続されており、またキャッシュメモリ２０は主メモリ３０と接続されている。キャッシュメモリ２０は、キャッシュコントローラ２１及びデータメモリ・タグメモリ２２を有している。また、キャッシュメモリ２０のデータメモリ２２は、キャッシュコントローラ２１を通してアクセスされる。【０００７】
前述した特許文献１に記載の手法を、本システムに適用させることによりキャッシュ内のデータがデータメモリから追い出されない様にすることができる。これにより、キャッシュヒット率を向上させることができる。【０００８】
一方で、上述したように、キャッシュ２０のデータメモリ２２は、キャッシュコントローラ２１を通してアクセスされる。そのため、キャッシュコントローラ２１がストールしないこともアプリケーションの性能向上のためには重要である。【０００９】
キャッシュコントローラ２１のストールが起きると、キャッシュコントローラ２１はＣＰＵ１０からの新たなメモリアクセスの要求を受け付けない。このため、ストールが解決するまで、後続のメモリアクセスのレイテンシが増大してしまう。この様にキャッシュコントローラ２１のストールが起こると、たとえデータメモリ２２上にデータが存在する場合であっても、そこからデータを読み出すことができなくなるため、キャッシュヒット率を向上させる手法の効果が失われるという問題がある。【００１０】
キャッシュの一方式であるブロッキングキャッシュは、キャッシュのミスが生じたことに起因して、メモリからデータを取得している間に、キャッシュコントローラがストールするという方式である。このため、ブロッキングキャッシュでは、複数のメモリアクセスが起こった場合に、後続のメモリアクセスのレイテンシが増大し、ＣＰＵのストール時間が増加するという問題がある。【００１１】
図１７に二つのＣＰＵで共有されるキャッシュの例を示す。本例では、第１のＣＰＵ１１及び第２のＣＰＵ１２がそれぞれブロッキングキャッシュ２３と接続されている。また、ブロッキングキャッシュ２３と主メモリ３０が接続されている。【００１２】
この例では、まず第１のＣＰＵ１１からのメモリアクセスが起こり、キャッシュミスしたとする。このキャッシュミスの処理中に起こった第２のＣＰＵ１２からのメモリアクセスは、先行するキャッシュミスの処理が終わるまで待たされることになる。したがって、このメモリアクセスの遅延により第２のＣＰＵ１２のストールする時間が増加する。【００１３】
上記の例では、複数のＣＰＵで共有されるキャッシュを示したが、同様の問題は単一のＣＰＵからアクセスされるキャッシュでも起こる場合がある。例えばＣＰＵが複数のスレッドの同時実行をサポートしており、単一のＣＰＵから複数のメモリアクセスが発生する場合などが挙げられる。【００１４】
この様なブロッキングキャッシュの問題を解決するため、非特許文献１ではノンブロッキングキャッシュが開示されている。図１８に二つのＣＰＵで共有されるキャッシュの例を示す。この例では、第１のＣＰＵ１１及び第２のＣＰＵ１２が、それぞれノンブロッキングキャッシュ２４を介して、主メモリ３０に接続されている。ノンブロッキングキャッシュ２４は、同図に示すように、ＭＳＨＲ（Miss Status/Information Holding Register）というレジスタを有する。そしてキャッシュミスを処理するために必要な情報をＭＳＨＲに記憶しておくことによって、キャッシュミスの処理中に後続のメモリアクセスを処理することを可能としている。したがって、ノンブロッキングキャッシュを用いる場合は、前述したブロッキングキャッシュを用いる場合に比べて、複数のメモリアクセスが同時に起こった際のＣＰＵのストール時間を短縮することが可能である。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０００−３３９２２０号公報
【非特許文献】
【００１６】
【非特許文献１】David Kroft, "LOCKUP-FREE INSTRUCTION FETCH/PREFETCH CACHE ORGANIZATION", 25 Years of the International Symposia on Computer Architecture (Selected Papers), ACM, 1998, p.195-201
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上述のようにＭＳＨＲを利用することにより、ＣＰＵのストール時間を短縮することが可能となる。しかし、ハードウェア資源の制約から、ノンブロッキングキャッシュにおいてＭＳＨＲを無限に持つことは不可能である。【００１８】
ＭＳＨＲの数が有限な場合では、複数のメモリアクセスが起こり、それらがキャッシュミスすることによって、全てのＭＳＨＲが利用されるという状態が発生する。【００１９】
この様な状態で、さらにメモリアクセスが発生した場合、そのメモリアクセスは、ブロッキングキャッシュの場合と同様に遅延を受けることになり、ＣＰＵのストール時間が増大するという問題がある（図１８参照。）。【００２０】
したがって、本発明が解決しようとする課題は、ＭＳＨＲの数が有限な場合において、ＣＰＵのストール時間が増大することである。【００２１】
そこで、本発明は、複数のメモリアクセスが同時に起こる場合に、ＣＰＵのストール時間の増加を防止することが可能なキャッシュメモリ、そのシステム、その利用方法及びその利用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
本発明に係るキャッシュメモリは、複数のＭＳＨＲと、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付け手段と、を備えることを特徴とする。【００２３】
本発明に係るキャッシュメモリ利用方法は、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別ステップと、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別ステップにおいて識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付けステップと、を備え、前記各ステップを複数のＭＳＨＲを有するキャッシュメモリが行うことを特徴とする。【００２４】
本発明に係るプログラムは、複数のＭＳＨＲと、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記ＭＳＨＲを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記ＭＳＨＲの候補を決定するメモリアクセス対応付け手段と、としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、複数のメモリアクセスが同時に起こる場合に、ＣＰＵのストール時間の増加を防止することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１の実施の形態の構成を説明するための図面である。
【図２】本発明の第１の実施の形態の基本的動作を説明するためのフローチャート（１／２）である。
【図３】本発明の第１の実施の形態の基本的動作を説明するためのフローチャート（２／２）である。
【図４】本発明の第２の実施の形態の構成を説明するための図面である。
【図５】本発明の第２の実施の形態の別形態の構成を説明するための図面である。
【図６】本発明の第３の実施の形態の構成を説明するための図面である。
【図７】本発明の第４の実施の形態の構成を説明するための図面である。
【図８】本発明の第１の実施例の構成を説明するための図面である。
【図９】本発明の第１の実施例のキャッシュコントローラの構成を説明するための図面である。
【図１０】本発明の第２の実施例の構成を説明するための図面である。
【図１１】本発明の第２の実施例のＯＳ、キャッシュコントローラの構成を説明するための図面である。
【図１２】本発明の第２の実施例の動作を説明するための図面である。
【図１３】本発明の第３の実施例の構成を説明するための図面である。
【図１４】本発明の第４の実施例の構成を説明するための図面である。
【図１５】本発明の第５の実施例の構成を説明するための図面である。
【図１６】本発明に関連する技術のキャッシュの構成を示すための図面である。
【図１７】本発明に関連する技術のブロッキングキャッシュの動作を示すための図面である。
【図１８】本発明に関連する技術のノンブロッキングキャッシュの動作を示すための図面である。
【発明を実施するための形態】
【００２７】
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２８】
（第１の実施の形態）
図１に本発明の第１の実施の形態を示す。本実施の形態に係るキャッシュメモリ（キャッシュ）におけるキャッシュコントローラは、ＭＳＨＲ１００、ＭＳＨＲ検索部２００及びメモリアクセス−ＭＳＨＲ対応表３００を有する。なお、図１の例では、キャッシュメモリが備えるデータメモリ・タグメモリ等の他の要素や、キャッシュメモリに接続されるプロセッサ（ＣＰＵ）、主メモリ等の要素も省略している。
【００２９】
ＭＳＨＲ１００は、複数のＭＳＨＲであり、各ＭＳＨＲには、番号が割り振られている。
【００３０】
ＭＳＨＲ検索部２００は、メモリアクセス識別部２０１、メモリアクセス対応付け部２０２及び空きＭＳＨＲ判定部２０３を有する。
【００３１】
メモリアクセス識別部２０１は、メモリアクセスＩＤ（図中ではＳ１と表記する。）を決定する機能を有する。ここで、メモリアクセスＩＤとはキャッシュへのメモリアクセスリクエストからメモリアクセスとＭＳＨＲを対応付けするための識別子である。
【００３２】
メモリアクセス対応付け部２０２は、メモリアクセス−ＭＳＨＲ対応表３００を検索して、メモリアクセスＩＤに対応する候補ＭＳＨＲ番号を決定する機能を有する。
【００３３】
空きＭＳＨＲ判定部２０３は、候補ＭＳＨＲ番号（図中ではＳ２と表記する。）と空きＭＳＨＲ情報から、メモリアクセスに利用されるＭＳＨＲ番号を決定する機能を有する。
【００３４】
メモリアクセス−ＭＳＨＲ対応表３００は、メモリアクセスに利用することができるＭＳＨＲの番号を記録するための表であり、メモリアクセスＩＤとＭＳＨＲ番号が記録される。メモリアクセス−ＭＳＨＲ対応表３００は、キャッシュ内部に記録され、キャッシュ外部から内容を変更することが可能である。
【００３５】
次に、図面を用いて本実施の形態の動作を詳細に説明する。
【００３６】
まず、図２を参照して本実施の形態で想定するメモリアクセス時の動作を説明する。
【００３７】
プロセッサがメモリアクセスリクエストを出す（ステップＳ１０１）。一般にメモリアクセスリクエストには、アドレス、データ（ライト時）、ページ属性などの情報が含まれる。
【００３８】
キャッシュコントローラは、ＭＳＨＲ検索部２００を呼び出し、空きＭＳＨＲの取得を試みる（ステップＳ１０２）。
【００３９】
その結果、空きＭＳＨＲが得られなかった場合は、キャッシュコントローラは空きＭＳＨＲが得られるまでメモリアクセスの処理を中断する（ステップＳ１０３においてＮｏ）。
【００４０】
一方、空きＭＳＨＲが得られた場合は（ステップＳ１０３においてＹｅｓ）、キャッシュコントローラは、キャッシュヒット／ミス判定を行う（ステップＳ１０４）。
【００４１】
その結果、キャッシュヒットの場合は（ステップＳ１０５においてＹｅｓ）、データメモリからデータを読み出しＣＰＵに渡す（ステップＳ１０６）。
【００４２】
一方、キャッシュミスの場合は（ステップＳ１０５においてＮｏ）、ＭＳＨＲに必要な情報を保存し、主メモリからデータを読み出し、データが得られたらＣＰＵに渡す（ステップＳ１０７）。この時、ＭＳＨＲは利用中から空き状態に戻される。
【００４３】
次に、図１８を参照して本実施の形態における空きＭＳＨＲ検索時の動作（上記のステップＳ１０２に相当する。）を詳細に説明する。
【００４４】
ＭＳＨＲ検索部２００が呼び出される（ステップＳ２０１）。
【００４５】
ＭＳＨＲ検索部２００のメモリアクセス識別部２０１は、メモリアクセスリクエストに含まれている情報からメモリアクセスＩＤを決定する（ステップＳ２０２）。
【００４６】
ＭＳＨＲ検索部２００のメモリアクセス対応付け部２０２は、メモリアクセスＩＤを入力として呼び出され、メモリアクセス−ＭＳＨＲ対応表３００を用いて、入力されたメモリアクセスＩＤに対応するＭＳＨＲ番号を検索する（ステップＳ２０３）。
【００４７】
検索の結果、メモリアクセスＩＤと、それに対応するＭＳＨＲ番号が存在した場合は（ステップＳ２０３においてＹｅｓ）、メモリアクセスＩＤに対応するＭＳＨＲ番号を候補ＭＳＨＲ番号として決定する（ステップＳ２０４）。なお、表にメモリアクセスＩＤに対応するＭＳＨＲ番号が複数記録されている場合は、複数のＭＳＨＲ番号を候補ＭＳＨＲ番号としても良い。一方、メモリアクセス−ＭＳＨＲ対応表３００にメモリアクセスＩＤに対応するＭＳＨＲ番号が存在しない場合は（ステップＳ２０３においてＮｏ）、予め設定されたデフォルトのＭＳＨＲ番号を候補ＭＳＨＲ番号として返すという動作をする（ステップＳ２０５）。
【００４８】
ＭＳＨＲ検索部２００の空きＭＳＨＲ判定部２０３は、候補ＭＳＨＲ番号を入力として呼び出され、候補ＭＳＨＲに対して、ＭＳＨＲに記録されている、ＭＳＨＲが利用中かどうかを示すビットを調べる（ステップＳ２０６）。その結果、候補ＭＳＨＲが利用中でない場合は（ステップＳ２０６においてＮｏ）、そのＭＳＨＲをＭＳＨＲ検索部２０３の検索結果とする（ステップＳ２０７）。このとき、複数の空きＭＳＨＲが存在する場合は、そのうちの一つを検索結果とする。一方、候補ＭＳＨＲが利用中である場合は（ステップＳ２０６においてＹｅｓ）、空きＭＳＨＲが存在しないことを示す結果を検索結果として返す（ステップＳ２０８）。
【００４９】
次に、本実施の形態の効果を説明するため、３回のメモリアクセスが起こる場合を例に説明する。それぞれのメモリアクセスＩＤは順番に１、１、２であったとする。本説明ではＭＳＨＲは２つあり、両ＭＳＨＲとも利用中ではないものとする。メモリアクセス−ＭＳＨＲ対応表３００は、メモリアクセスＩＤ１に対応するＭＳＨＲ番号として１、メモリアクセスＩＤ２に対応するＭＳＨＲ番号として１、２が記録されていたとする。
【００５０】
（１）ＣＰＵが一つ目のメモリアクセスリクエストを発行する。
【００５１】
（２）キャッシュコントローラは、ＭＳＨＲ検索部２００を呼び出し、ＭＳＨＲ１を得る。
【００５２】
（３）一つ目のメモリアクセスがキャッシュミスすると、ＭＳＨＲ１に情報を記録し、メモリからデータを読み出す。
【００５３】
（４）メモリへのデータ読み出し中に、ＣＰＵが二つ目のメモリアクセスリクエストを発行する。なお、一つ目及び二つ目のメモリアクセスリクエストを発行したＣＰＵは、同じＣＰＵであっても異なるＣＰＵであっても良い。また、同じＣＰＵである場合は、ＣＰＵが複数のメモリアクセスを同時に発行することが可能な機能を有している必要があることは明らかである。
【００５４】
（５）キャッシュコントローラは、ＭＳＨＲ検索部２００を呼び出すが、メモリアクセスＩＤが１の場合に対応するＭＳＨＲであるＭＳＨＲ１は利用中であるため、利用可能ＭＳＨＲは得られない。
【００５５】
（６）キャッシュコントローラは、二つ目のメモリアクセスの処理を保留する。
【００５６】
（７）ＣＰＵが三つ目のメモリアクセスリクエストを発行する。
【００５７】
（８）キャッシュコントローラは、ＭＳＨＲ検索部２００を呼び出し、ＭＳＨＲ２を得る。
【００５８】
（９）キャッシュコントローラは、ＭＳＨＲ２を用いて三つ目のメモリアクセスを処理する。
【００５９】
本実施の形態を用いることにより、この様に、ＭＳＨＲが二つしかないにも関わらず、キャッシュコントローラは三つ目のアクセスを処理することが可能となる。
【００６０】
例えば、高優先度のアプリケーションが発行するメモリアクセスのＩＤが２と識別され、その他のアプリケーションの発行するメモリアクセスのＩＤが１と識別される時、高優先度のアプリケーションは、その他のアプリケーションが複数のメモリアクセスを発行していた場合であっても、常に一つのＭＳＨＲが利用できることが保証される。
【００６１】
一方、本実施の形態を用いないキャッシュコントローラの場合は、二つ目のメモリアクセスによってＭＳＨＲ２が利用されてしまい、高優先度のアプリケーションのメモリアクセス時（上述の説明では三つ目のメモリアクセスに相当する。）に空きＭＳＨＲが存在せず、高優先度アプリケーションが遅延を受けることになる。
【００６２】
したがって、本実施の形態を用いることによって、その他のアプリケーションから複数のメモリアクセスが起こった場合の高優先度アプリケーションの性能低下を削減することができる。
【００６３】
また、上述のように、二つのＭＳＨＲが利用できることに対して、本実施の形態を用いることで、高優先度のアプリケーションと、その他のアプリケーションが同時に動く場合であっても高優先度のアプリケーションは少なくとも一つのＭＳＨＲが利用でき、高優先度のアプリケーションの性能低下を削減することができる。そのため、高優先度のアプリケーションが単体で動く場合と、他のアプリケーションと同時に動く場合との性能差を削減できる。したがって、高優先度アプリケーションの性能の予測性を高めることができる。
【００６４】
本実施の形態の別形態として、メモリアクセス−ＭＳＨＲ対応表３００を、例えば主メモリなどキャッシュの外部のメモリに記録しても良い。その場合は、キャッシュ内部の高速なメモリによって、メモリアクセス−ＭＳＨＲ対応表３００の内容の一部を記録することによって高速に検索できる構成をとることが望ましい。
【００６５】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【００６６】
図４に本実施の形態の構成を示す。本実施の形態に係るキャッシュメモリにおけるキャッシュコントローラは、複数のＭＳＨＲ１００、ＭＳＨＲ検索部２００及びメモリアクセス−ＭＳＨＲ対応表３００を有し、ＭＳＨＲ検索部２００が、メモリアクセス識別部２０１、メモリアクセス対応付け部２０２、空きＭＳＨＲ判定部２０３を有する。この点は、第１の実施の形態と同様である。本実施の形態では、加えて、キャッシュメモリに接続されたＣＰＵ４００がメモリアクセスＩＤ生成部４０１を有することを特徴とする。
【００６７】
ＣＰＵ４００のメモリアクセスＩＤ生成部４０１は、メモリアクセスリクエストの発行時に、そのメモリアクセスリクエストにメモリアクセスＩＤを付加する機能を有する。このメモリアクセスＩＤ付きメモリアクセスリクエストを図中ではＳ３と表記する。
【００６８】
本実施の形態のメモリアクセス識別部２０１は、メモリアクセスに付加されたメモリアクセスＩＤをそのままメモリアクセスＩＤとして決定する。
【００６９】
本実施の形態のメモリアクセス対応付け部２０２、空きＭＳＨＲ判定部２０３、メモリアクセス−ＭＳＨＲ対応表３００は、第１の実施の形態と同様である。
【００７０】
本実施の形態の動作は、本発明の第１の実施の形態の動作から明らかである（図２及び６参照。）。
【００７１】
また、本実施の形態が、メモリアクセスのレイテンシの増加を防止できるという効果を持つことは、第１の実施の形態の説明として述べたとおりであり、明らかである。
【００７２】
本実施の形態では、ＣＰＵ４００が任意のメモリアクセスＩＤを付加することができるため、キャッシュコントローラがメモリアクセスリクエストに含まれる情報のみからメモリアクセスＩＤを決定する場合に比べて、メモリアクセスとＭＳＨＲの対応付けの自由度が高められるという効果がある。
【００７３】
本実施の形態の別形態として、図５に示すように、ＣＰＵがメモリアクセスＩＤ生成部として、ＭＳＨＲマスク生成部４０２を有するようにしても良い。
【００７４】
ＭＳＨＲマスク生成部４０２は、メモリアクセスに利用可能なＭＳＨＲの集合をメモリアクセスＩＤとしてメモリアクセスリクエストに付加する機能を有する。ここでは、この集合を「ＭＳＨＲマスク」と呼ぶ。このメモリアクセスＩＤ（ＭＳＨＲマスク）付きメモリアクセスリクエストを図中ではＳ４と表記する。
【００７５】
これまでの実施の形態では、メモリアクセス−ＭＳＨＲ対応表３００を用いてメモリアクセスＩＤから候補ＭＳＨＲ番号を決定する。一方、本実施の形態では、メモリアクセスリクエストがＭＳＨＲマスクを持つため、キャッシュコントローラのメモリアクセス対応付け部２０２はＭＳＨＲマスクに含まれるＭＳＨＲをそのまま候補ＭＳＨＲ番号とするだけで良い。したがって、本実施の形態はＭＳＨＲ検索部２００を簡素化できるという効果を奏する。
【００７６】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を用いて説明する。
【００７７】
本実施の形態の構成を図６に示す。本実施の形態に係るキャッシュメモリにおけるキャッシュコントローラは、複数のＭＳＨＲ１００、ＭＳＨＲ検索部２００及びメモリアクセス−ＭＳＨＲ対応表３００を有し、ＭＳＨＲ検索部２００が、メモリアクセス識別部２０１、メモリアクセス対応付け部２０２、空きＭＳＨＲ判定部２０３を有する。この点は、第１の実施の形態と同様である。本実施の形態では、加えて、キャッシュメモリに接続されたＣＰＵ４０３とキャッシュコントローラの間にメモリアクセスＩＤ付加部４０４を有することを特徴とする。
【００７８】
メモリアクセスＩＤ付加部４０４は、ＣＰＵ４０３からのメモリアクセスリクエスト（図中ではＳ５と表記する。）を入力として、これにメモリアクセスＩＤを付加する。そしてメモリアクセスＩＤを付加したメモリアクセスリクエスト（図中では第２の実施の形態同様にＳ３と表記する。）をキャッシュに発行するという機能を有する。
【００７９】
本実施の形態は、ＣＰＵとキャッシュコントローラの間でメモリアクセスＩＤを付加するため、上述の第２の実施の形態のようにＣＰＵにメモリアクセスＩＤ生成部４０１を追加する必要がないという効果を奏する。
【００８０】
ＣＰＵにメモリアクセスＩＤ生成部４０１を追加するといったようにＣＰＵ内部を修正することは、権利関係から不可能であったり、多大な工数を要したり、等の問題があることから、本実施の形態が有益であることは、当業者には明らかである。
【００８１】
本実施の形態の動作は、第１及び第２の実施の形態の動作から明らかである（図２及び図６参照。）。また、本実施の形態がメモリアクセスレイテンシの増大を抑える効果を持つことも、第１及び第２の実施の形態の効果として述べたとおりであり、明らかである。
【００８２】
本実施の形態の別形態として、メモリアクセスＩＤ付加部４０４にメモリアクセスＩＤとしてＭＳＨＲマスクを付加するＭＳＨＲマスク付加部４０５を用いても良い。この場合は、第２の実施の形態の別形態と同様にメモリアクセス−ＭＳＨＲ対応表３００が不要となるという効果を奏する。
【００８３】
（第４の実施の形態）
次に本発明の第４の実施の形態について図面を用いて説明する。本実施の形態の構成を図７に示す。
【００８４】
本実施の形態に係るキャッシュメモリシステムは、メモリアクセス高速化部５０１、レイテンシ増加防止部５０２及びヒット率向上部５０３を有する。
【００８５】
レイテンシ増加防止部５０２は、キャッシュアクセス時のレイテンシの増加を防止するための部分であり、上述した第１乃至第３の実施の形態に係るキャッシュメモリにおけるキャッシュコントローラの何れか一つと同様の構成を有している。
【００８６】
ヒット率向上部５０３は、高優先度アプリケーションが利用するデータが他のアプリによってキャッシュから追い出されないように設定することにより、高優先度アプリケーションによるアクセスの際のヒット率を向上させる部分である。
【００８７】
メモリアクセス高速化部５０１は、メモリアクセス高速化部５０１及びレイテンシ増加防止部５０２を合わせて利用するための部分である。
【００８８】
本実施の形態の動作を、高優先度アプリケーションのメモリアクセスを高速化する場合を例に説明する。
【００８９】
（１）メモリアクセス高速化部５０１は、ヒット率向上部５０２を呼び出し、高優先度アプリケーションが利用するデータが他のアプリケーションによってキャッシュから追い出されないように設定する。
【００９０】
（２）メモリアクセス高速化部５０１は、レイテンシ増加防止部５０２を呼び出し、高優先度アプリケーション以外のアプリケーションからのメモリアクセスによって全てのＭＳＨＲが利用されることを原因として高優先度アプリケーションのメモリアクセスの際にレイテンシが増加することが無いように設定する。
【００９１】
キャッシュヒット率向上部５０３のみでは、他のアプリケーションからのメモリアクセスによるレイテンシの増加によって、キャッシュにヒットする場合のメモリアクセスでもレイテンシが増大するという問題がある。
【００９２】
一方、レイテンシ増大防止部５０２のみを利用した場合で、ヒットが変わらない場合は、レイテンシの増大は防止できても、他のアプリケーションが動かない場合に加えてレイテンシを削減することはできない。
【００９３】
本実施の形態では、レイテンシ増大防止部５０２を利用し他のアプリケーションによるレイテンシの増大を抑えることにより、キャッシュヒット率向上部５０３を利用してヒット率を高めたことによる効果を最大限に発揮させることができるという効果がある。すなわち両者を併せて利用することによりＣＰＵのストール時間の増加をより効率良く防止することが可能となる。
【実施例１】
【００９４】
次に、具体的な実施例を用いて本発明の実施の形態を説明する。第１の実施例は、本発明の第１の実施の形態に対応する実施例である。【００９５】
本実施例に係るキャッシュメモリシステムは、図８に示すようにキャッシュコントローラ６２１及びデータメモリ・タグメモリ６２２を有するキャッシュメモリ６２０を複数のＣＰＵが共有している。本実施例では、４つのＣＰＵ、すなわち第１のＣＰＵ６１１乃至第４のＣＰＵ６１４がキャッシュメモリ６２０を共有している。各ＣＰＵ６１１〜６１４が発行するメモリアクセスリクエストには、ＣＰＵ番号が含まれる。【００９６】
キャッシュコントローラ６２１の構成を図９に示す。同図に示すキャッシュコントローラは、３つのＭＳＨＲ７０１、ＭＳＨＲ検索部７２０、メモリアクセス−ＭＳＨＲ対応表７３０及びメモリアクセス−ＭＳＨＲ対応表更新部７４０を有することを特徴とする。また、ＭＳＨＲ検索部７２０は、メモリアクセス識別部７２１とメモリアクセス対応付け部７２２と空きＭＳＨＲ判定部７２３を有する。更に、図９中に示すＣＰＵ７１０は、図８に示す第１のＣＰＵ６１１乃至第４のＣＰＵ６１４の何れかに対応するものである。なお、図９では、キャッシュコントローラ６２１の中で本発明に関する部分のみを示していることは当業者には明らかである。【００９７】
メモリアクセス識別部７２１は、メモリアクセスリクエストに含まれるＣＰＵ番号をメモリアクセスＩＤとして決定する機能を有する。すなわち、本実施例は、ＣＰＵ番号とＭＳＨＲを対応付けることを特徴とする。【００９８】
メモリアクセス−ＭＳＨＲ対応表更新部７４０は、ＣＰＵ７１０からのリクエストによって、メモリアクセス−ＭＳＨＲ対応表７３０を更新する機能を有する。【００９９】
本実施例では、メモリアクセス−ＭＳＨＲ対応表更新部７４０を用いて、図９に示すように、メモリアクセス−ＭＳＨＲ対応表７３０が作られているとする。この内容は、第１のＣＰＵ６１１、第２のＣＰＵ６２２及び第３のＣＰＵ６３３はＭＳＨＲ０及びＭＳＨＲ１を利用可能であり、第４のＣＰＵ６２４はＭＳＨＲ２を利用可能であることを示している。すなわち、第１のＣＰＵ６１１、第２のＣＰＵ６２２及び第３のＣＰＵ６３３からのメモリアクセスによって、第４のＣＰＵ６２４が利用可能なＭＳＨＲが枯渇することはない。【０１００】
次に、本実施例の動作を具体的に示すために、第１のＣＰＵ６１１、第４のＣＰＵ６２４の順番にメモリアクセスが起こる場合の動作を説明する。これらのメモリアクセスが起こる前のＭＳＨＲの利用状況は図９に示すように、ＭＳＨＲ０、ＭＳＨＲ１が利用中であり、ＭＳＨＲ２が空きであるとする。【０１０１】
まず、第１のＣＰＵ６１１がメモリアクセスを発行した時のＭＳＨＲ検索部７２０の動作を以下に示す。【０１０２】
（１）メモリアクセス識別部７２１は、メモリアクセスＩＤとして１を決定する。【０１０３】
（２）次に、メモリアクセス対応付け部７２２は、メモリアクセス−ＭＳＨＲ対応表７３０に基づき、候補ＭＳＨＲ番号として０と１を決定する。【０１０４】
（３）最後に、空きＭＳＨＲ判定部７２３は、ＭＳＨＲ０、ＭＳＨＲ１が利用中であるため、空きＭＳＨＲは無し、と決定する。【０１０５】
これにより、このメモリアクセスは、ＭＳＨＲ０またはＭＳＨＲ１が利用可能になるまで待たされる。【０１０６】
次に、第４のＣＰＵ６２４がメモリアクセスを発行した時のＭＳＨＲ検索部７２０の動作を以下に示す。【０１０７】
（１）メモリアクセス識別部７２１は、メモリアクセスＩＤとして４を決定する。【０１０８】
（２）次にメモリアクセス対応付け部７２２は、メモリアクセス−ＭＳＨＲ対応表に基づき、候補ＭＳＨＲ番号として２を決定する。【０１０９】
（３）空きＭＳＨＲ判定部７２３は、ＭＳＨＲ２は空きであるため、空きＭＳＨＲを２と決定する。【０１１０】
これにより、第４のＣＰＵ６２４が発行したメモリアクセスはＭＳＨＲ２を用いて処理される。【０１１１】
以上の動作より、第４のＣＰＵ６２４は、他のＣＰＵからのメモリアクセスの有無に関わらず、常に一つのＭＳＨＲを利用することが可能であるため、レイテンシの増加を抑えることができる。【０１１２】
すなわち、本実施例では、ＣＰＵ間のメモリアクセス競合による第４のＣＰＵ６２４のストール時間の増加を抑えることができるという効果がある。【０１１３】
一方、本発明の実施形態や本実施例を用いないキャッシュの場合の動作は、先行する第１のＣＰＵ６１１からのメモリアクセスがキャッシュミスすると、ＭＳＨＲ２が利用される。このため、第４のＣＰＵ６２４からのメモリアクセスは、ＭＳＨＲの枯渇のためにＭＳＨＲが空くまで待たされることになる。これにより、メモリアクセスレイテンシが増加し、第４のＣＰＵ６２４のストール時間が増加する。
【実施例２】
【０１１４】
次に、本発明の第２の実施例について説明する。本実施例は、本発明の第４の実施の形態に対応し、レイテンシ増加防止部とヒット率向上部を合わせて利用するものである。【０１１５】
本実施例の構成を図１０に示す。本実施例に係るキャッシュメモリシステムでは、キャッシュメモリ６２０が４つのＣＰＵ６１１〜６１４によって共有されており、キャッシュメモリ６２０がレイテンシ増加防止部６２３とヒット率向上部６２４を有している。なお、レイテンシ増加防止部６２３は、上述した各実施形態に係るキャッシュメモリにおけるキャッシュコントローラの何れかの構成に相当するものであるが、本実施例は上述した第１の実施例と同様の構成であるとして説明する。【０１１６】
図１１は、本実施例におけるＯＳとキャッシュコントローラの構成を示している。【０１１７】
本実施例では、ＯＳ７５０の内部に加えられてメモリアクセス高速化部７５１が、キャッシュコントローラ７６０のメモリアクセス−ＭＳＨＲ対応表７６１とＷａｙロックレジスタ７６２を利用することによって、レイテンシ増加防止部６２３とヒット率向上部６２４を結びつける。【０１１８】
レイテンシ増加防止部６２３は、キャッシュコントローラが複数のＭＳＨＲ、ＭＳＨＲ検索部、メモリアクセス−ＭＳＨＲ対応表、メモリアクセス−ＭＳＨＲ対応表更新部を有している。これは、第１の実施例のキャッシュコントローラと同一の構成である。また、ＭＳＨＲ検索部がメモリアクセス識別部、メモリアクセス対応付け部及び空きＭＳＨＲ判定部を有している。この点も第１の実施例と同様である。本キャッシュコントローラによって、レイテンシを削減する動作については、第１の実施例より明らかであるため、ここでは説明を省略する。【０１１９】
また、本実施例では、キャッシュヒット率向上部６２４としてＷａｙロックを用いている。ここでＷａｙロックとは、キャッシュのデータメモリが有する複数のＷａｙの内のいくつかをロックすることによって、ロックされたＷａｙからデータを追い出すことを禁止することである。【０１２０】
本実施例では、Ｗａｙロックレジスタ７６２に値を設定することによって、どのＷａｙをロックするかを指定することができる。Ｗａｙロックを用いると、ロックされたＷａｙに格納されたデータは必ずキャッシュヒットすることになり、キャッシュヒット率が向上する。【０１２１】
次に本実施例の動作について、高優先度アプリケーションのメモリアクセスを高速化する場合を説明する。本実施例では、まず高優先度アプリケーションが頻繁に利用するデータをＷａｙロックする。【０１２２】
このときの手順を以下に示す。【０１２３】
（１）ＯＳ７５０のメモリアクセス高速化部７５１は、Ｗａｙロックレジスタ７６２を更新し、高優先度アプリケーションが頻繁に利用するデータを格納するＷａｙ以外のＷａｙをロックする。【０１２４】
（２）ＯＳのメモリアクセス高速化部７５１は、高優先度アプリケーションが頻繁に利用するデータを読み出す。これによりロックされていないＷａｙにデータがロードされる。【０１２５】
（３）（１）でロックされなかったＷａｙをロックし、（１）でロックされたＷａｙのロックを解除する。【０１２６】
以上の手順により、高優先度アプリケーションが頻繁に利用するデータがキャッシュに格納され、かつ高優先度アプリケーションが頻繁に利用するデータが格納されたＷａｙはロックされたこととなる。そして、高優先度アプリケーションが頻繁に利用するデータが格納されたＷａｙをロックしたことによって、高優先度アプリケーションが頻繁に利用するデータは常にキャッシュヒットする状態となる。【０１２７】
次に、メモリアクセス高速化部７５１は、高優先度アプリケーションの処理を第４のＣＰＵ６１４に割り当て、それ以外のアプリケーションの処理を第１のＣＰＵ６１１乃至第３のＣＰＵ６１３の何れかに割り当てる。この割り当ては、ＯＳのアフィニティ（affinity）機能を利用することで実現できることは当業者には明らかである。図１１にはアフィニティ機能を制御する部分としてアフィニティ制御部７５２を図示する。【０１２８】
最後に、メモリアクセス高速化部７５１は、メモリアクセス−ＭＳＨＲ対応表７６１を図１２の様に設定する。図１２の様に設定することで、高優先度アプリケーションのＭＳＨＲの枯渇によるレイテンシの増加を抑えることができる。【０１２９】
以上の動作により、高優先度アプリケーションのキャッシュヒット率が高くなり、かつ他のアプリケーションとのメモリアクセス競合によるレイテンシの増加を防止することができる。したがって、高優先度アプリケーションのメモリアクセスが高速化される。
【実施例３】
【０１３０】
次に本発明の第３の実施例について説明する。本実施例は、本発明に第１の実施の形態に対応する別の実施例である。本実施例の構成を図１３に示す。【０１３１】
本実施例では、ＭＳＨＲ検索部７２０のメモリアクセス識別部７２１が、メモリアクセスリクエストに含まれるアドレスの上位２バイトをメモリアクセスＩＤ（図中のＳＩに相当する。）として決定することを特徴とする。【０１３２】
本実施例は、メモリアクセスリクエストに必ず含まれる情報である「アドレス」を利用しているため、ＣＰＵがメモリアクセスリクエストにＣＰＵ番号を含めない場合などにも適用でき、汎用性が高いという特徴がある。【０１３３】
本実施例のメモリアクセス−ＭＳＨＲ対応表７３０は、開始アドレスと終了アドレスで指定されるアドレスの範囲とＭＳＨＲの対応を記録している。【０１３４】
また、本実施例のメモリアクセス対応付け部７２２は、アドレスから候補ＭＳＨＲ番号を決定するという機能を有する。【０１３５】
本実施例の動作は、第１の実施例より明らかであるため、ここでは説明を省略する。【０１３６】
本実施例は、例えばＯＳが利用するアドレス領域とアプリケーションが利用するアドレス領域毎に異なるＭＳＨＲを対応付けることで、アプリケーションのメモリアクセスによってＯＳによるメモリアクセスのレイテンシ増加を抑えることができるといった用途に利用できる。
【実施例４】
【０１３７】
次に、本発明の第４の実施例について説明する。本実施例は、本発明の第２の実施の形態に対応した実施例である。【０１３８】
本実施例の構成を図１４に示す。本実施例は、ＣＰＵ７７０がプロセスＩＤ（以下の説明及び図中では「ＰＩＤ」と表記する。）レジスタ７７１を有し、ＣＰＵ７７０がメモリアクセスリクエストを発行する際に、メモリアクセスリクエストにＰＩＤを付加することを特徴とする。図中では、このＰＩＤ付きメモリアクセスリクエストをＳ６と表記する。【０１３９】
本実施例では、ＯＳ７８０がプロセスのコンテキストスイッチ時にＰＩＤレジスタを更新することによって、ＣＰＵ７７０で実行されているプロセスのＰＩＤがＰＩＤレジスタ７７１に記録されるようにする。【０１４０】
本実施例のメモリアクセス識別部７２０は、メモリアクセスリクエスト中のＰＩＤ（図中ではＳ７と表記する。）をメモリアクセスＩＤとして決定する。【０１４１】
また、メモリアクセス−ＭＳＨＲ対応表７３０は、ＰＩＤとＭＳＨＲの対応関係を記録している。そして、メモリアクセス対応付け部７２２は、メモリアクセス−ＭＳＨＲ対応表７３０を用いてＰＩＤに対応するＭＳＨＲ番号を候補ＭＳＨＲ番号として決定する。【０１４２】
この様な構成を取ることによって、メモリアクセスを行ったプロセスのＰＩＤとＭＳＨＲ番号を直接対応させることが可能である。【０１４３】
一般に、アプリケーションは一つまたは複数のプロセスによって構成されるため、ＰＩＤとＭＳＨＲを対応させることにより、アプリケーションにＭＳＨＲを割り当てることができる。したがって、アプリケーションの処理を特定のＣＰＵに割り当てることなく、高優先度アプリケーションのメモリアクセスのレイテンシの増加を抑えることができるという効果がある。【０１４４】
また、ＣＰＵが複数のハードウェアスレッドをサポートする場合は、ＣＰＵによるスレッドの切り替え時に保存、復元されるコンテキストにＰＩＤレジスタを加えることによって、ＯＳを利用せずにＰＩＤレジスタの更新を行うことが望ましい。
【実施例５】
【０１４５】
次に、本発明の第５の実施例について説明する。本実施例は、本発明の第３の実施の形態の別形態に対応した実施例である。【０１４６】
本実施例の構成を図１５に示す。本実施例は、ＣＰＵとキャッシュコントローラの間に、ＭＳＨＲマスク付加部８００を有することを特徴とする。【０１４７】
ＭＳＨＲマスク付加部８００は、内部にＭＳＨＲマスクレジスタ８０１を持ち、ＣＰＵ７９０からのメモリアクセスリクエスト（図中ではＳ８と表記する。）にＭＳＨＲマスクを付加する機能を有する。なお、ＭＳＨＲマスクを付加したメモリアクセスリクエストを図中ではＳ９と表記する。【０１４８】
本実施例のメモリアクセス識別部７２１は、メモリアクセスリクエストに含まれるＭＳＨＲマスクをメモリアクセスＩＤ（図中ではＳ１０と表記する。）として決定する。【０１４９】
メモリアクセス対応付け部７２２は、ＭＳＨＲマスクに含まれる番号を候補ＭＳＨＲ番号として決定する。したがって、本実施例では、キャッシュコントローラが、メモリアクセス−ＭＳＨＲ対応表を持たなくて良いという特徴がある。【０１５０】
本実施例では、ＯＳ７８０がＭＳＲＨマスクレジスタ８０１を書き換える機能を有する。ＯＳはプロセスのコンテキストスイッチ時に応じて、ＭＳＨＲマスクレジスタ８０１を書き換えることによって、プロセスにＭＳＨＲを対応させることができる。【０１５１】
本実施例のメモリアクセス時の動作は、上記実施例の説明より明らかであるため、ここでは説明を省略する。また、本実施例によって、高優先度のアプリケーションのメモリアクセスレイテンシの増加を抑えることができることも明らかである。【０１５２】
本実施例は、ＣＰＵに、発行するメモリリクエストにＭＳＨＲマスクを付加する機能を追加できない場合にも利用可能であるという効果がある。【０１５３】
本実施例の別の形態として、ＭＳＨＲマスク付加部８００の代わりに、例えばプロセスＩＤなどの異なるＩＤをメモリアクセスリクエストに付加する機能を有するメモリアクセスＩＤ付加部を有するようにしても良い。【０１５４】
その場合は、キャッシュコントローラは、メモリアクセス−ＭＳＨＲ対応表７３０を有し、メモリアクセス対応付け部７２２は同表を用いて候補ＭＳＨＲ番号を決定するという動作をする。【０１５５】
本発明の各実施の形態及び各実施例は以下の効果を奏する。【０１５６】
本発明の各実施の形態及び各実施例によれば、優先度の高いアプリケーションの性能低下を防ぐことができる。なぜならば、優先度の高いアプリケーションによるメモリアクセスとその他のアプリケーションによるメモリアクセスを異なるグループに分類することによって、その他のアプリケーションからのメモリアクセスによってＭＳＨＲが全て利用され、優先度の高いアプリケーションがメモリアクセスのレイテンシが増大することを防ぐことができるからである。【０１５７】
また、本発明の各実施の形態及び各実施例によれば、アプリケーションの動作の予測性を高めることができる。なぜならば、アプリケーションの集合を複数のグループに分け、異なるグループ間ではＭＳＨＲを共有しないようにすることができるため、他のグループに属するアプリケーションによるメモリアクセスによって、自グループに割り当てられたＭＳＨＲが利用されることがなくなる。したがって、常に一定の数のＭＳＨＲを利用できることが保証できるため、メモリアクセスレイテンシのばらつきを少なくすることができ、アプリケーションの動作のばらつきを抑えることができる。【０１５８】
なお、本発明の上記各実施の形態及び各実施例に係るキャッシュメモリシステムは、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。【０１５９】
例えば、本発明の上記各実施の形態及び各実施例に係るキャッシュメモリシステムは、ハードウェアによっても実現することもできるが、コンピュータをそのキャッシュメモリシステムとして機能させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。【０１６０】
また、本発明の上記各実施形態及び各実施例に係るキャッシュメモリ利用方法は、ハードウェアによっても実現することもできるが、コンピュータにそのキャッシュメモリ利用方法を実行させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。【０１６１】
また、上述したハードウェア、ソフトウェア構成は特に限定されるものではなく、上述した各構成要素の機能を実現可能であれば、いずれのものでも適用可能である。例えば、上述した各構成要素の機能毎に回路や部品等を独立させて個別に構成したものでも、複数の機能を１つの回路や部品等に組み入れて一体的に構成したものでも、いずれでもよい。【０１６２】
以上、実施の形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施の形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１６３】
この出願は、２００８年８月２５日に出願された日本出願特願２００８−２１５３９２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１６４】
本発明は、ＰＣ（Personal Computer）やサーバーおよび携帯電話などの組み込み機器といった複数のアプリケーションが動作する機器上で、特定のアプリケーションの性能を向上させるといった用途や性能のばらつきを抑えるといった用途に好適である。
【符号の説明】
【０１６５】
１０、４００、４０３、７１０、７７０  ＣＰＵ
１１、６１１  第１のＣＰＵ
１２、６１２  第２のＣＰＵ
２０、６２０  キャッシュメモリ
２１、７６０  キャッシュコントローラ
２２、６２２  データメモリ・タグメモリ
２３  ブロッキングキャッシュ
２４  ノンブロッキングキャッシュ
３０、６３０  主メモリ
１００、７０１  ＭＳＨＲ
２００、７２０  ＭＳＨＲ検索部
２０１、７２１  メモリアクセス識別部
２０２、７２２  メモリアクセス対応付け部
２０３、７２３  空きＭＳＨＲ判定部
３００、７６１  メモリアクセス−ＭＳＨＲ対応表
４０１  メモリアクセスＩＤ生成部
４０２  ＭＳＨＲマスク生成部
４０４  メモリアクセスＩＤ付加部
５０１  メモリアクセス高速化部
５０２  レイシンテ増加防止部
５０３  ヒット率向上部
６１３  第３のＣＰＵ
６１４  第４のＣＰＵ
６２１  キャッシュコントローラ
６２３  レイシンテ増加防止部
６２４  ヒット率向上部
７４０  メモリアクセス−ＭＳＨＲ対応表更新部
７５０、７８０  ＯＳ
７５１  メモリアクセス高速化部
７５２  アフィニティ制御部
７６２  Ｗａｙロックレジスタ
７７１  ＰＩＤレジスタ
８００  ＭＳＨＲマスク付加部
８０１  ＭＳＨＲマスクレジスタ
【図１】
2010024071.tif 000003
【図２】
2010024071.tif 000004
【図３】
2010024071.tif 000005
【図４】
2010024071.tif 000006
【図５】
2010024071.tif 000007
【図６】
2010024071.tif 000008
【図７】
2010024071.tif 000009
【図８】
2010024071.tif 000010
【図９】
2010024071.tif 000011
【図１０】
2010024071.tif 000012
【図１１】
2010024071.tif 000013
【図１２】
2010024071.tif 000014
【図１３】
2010024071.tif 000015
【図１４】
2010024071.tif 000016
【図１５】
2010024071.tif 000017
【図１６】
2010024071.tif 000018
【図１７】
2010024071.tif 000019
【図１８】
2010024071.tif 000020
【国際調査報告】
2010024071.tif 000021
2010024071.tif 000022
2010024071.tif 000023