JPWO2010024071A1 - キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム - Google Patents

キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム Download PDF

Info

Publication number
JPWO2010024071A1
JPWO2010024071A1 JP2010526628A JP2010526628A JPWO2010024071A1 JP WO2010024071 A1 JPWO2010024071 A1 JP WO2010024071A1 JP 2010526628 A JP2010526628 A JP 2010526628A JP 2010526628 A JP2010526628 A JP 2010526628A JP WO2010024071 A1 JPWO2010024071 A1 JP WO2010024071A1
Authority
JP
Japan
Prior art keywords
memory access
mshr
memory
cache
cpu
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.)
Withdrawn
Application number
JP2010526628A
Other languages
English (en)
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2010024071A1 publication Critical patent/JPWO2010024071A1/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

ノンブロッキングキャッシュにおいて、全てのMSHRが利用されることによる後続のメモリアクセスにおけるレイテンシの増大を防止する。複数のMSHR(Miss Status/Information Holding Register)と、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用されるMSHRを対応付け、当該対応付けに基づいて、アクセス識別手段において識別したメモリアクセスが利用するMSHRの候補を決定するメモリアクセス対応付け手段と、を備える。

Description

本発明は、プロセッサの備えるキャッシュメモリであって複数のプロセッサやスレッドによって共有されるキャッシュメモリ、そのシステム、その利用方法及びその利用プログラムに関する。
プロセッサ、キャッシュメモリ(以下、キャッシュメモリを単に「キャッシュ」と呼ぶ場合もある。)及び主メモリ(以下、主メモリを単に「メモリ」と呼ぶ場合もある。)を備えるコンピューターシステムにおいて、キャッシュはメモリの動作速度の遅さを原因として発生する遅延時間(以下、「レイテンシ」と表記する。)を隠蔽し、アプリケーションソフトウェアの性能を向上させるために重要であることが知られている。
キャッシュは、高速で小容量のメモリで、メモリ上のデータの一部を格納することができる。CPU(Central Processing Unit)がメモリアクセスを行った際にキャッシュ上にデータが存在する(ヒットする)場合は、低レイテンシでCPUにデータが供給される。一方、キャッシュ上にデータが存在しない(ミスする)場合は、キャッシュはメモリからデータを取得してCPUへ供給する。上述したように、メモリの動作速度はCPUやキャッシュの動作速度に比べて遅いため、データが供給されるまでのレイテンシが大きい。このため、CPUがストールする時間が長くなり、アプリケーションの性能が落ちる。
この様なキャッシュの性質から、キャッシュのヒット率を向上させることが重要であることが知られている。このため、プログラムを改造することによってヒット率を向上させる方法や、キャッシュに格納されたデータがキャッシュから追い出されることを禁止するWayロック方式を用いる方法などの様々な方法が利用されている。
例えば、関連する技術として、特許文献1ではOS(Operating System:オペレーティングシステム)のページ管理を利用して、プロセス間でキャッシュ上のデータの追い出し合いを削減し、キャッシュヒット率を向上させる手法を開示している。これら関連する技術について、図16を参照して説明する。
図16に、CPU、キャッシュ及びメモリからなるシステムの構成例を示す。本システム例は、CPU10、キャッシュメモリ20及び主メモリ30を有している。また、CPU10はキャッシュメモリ20と接続されており、またキャッシュメモリ20は主メモリ30と接続されている。キャッシュメモリ20は、キャッシュコントローラ21及びデータメモリ・タグメモリ22を有している。また、キャッシュメモリ20のデータメモリ22は、キャッシュコントローラ21を通してアクセスされる。
前述した特許文献1に記載の手法を、本システムに適用させることによりキャッシュ内のデータがデータメモリから追い出されない様にすることができる。これにより、キャッシュヒット率を向上させることができる。
一方で、上述したように、キャッシュ20のデータメモリ22は、キャッシュコントローラ21を通してアクセスされる。そのため、キャッシュコントローラ21がストールしないこともアプリケーションの性能向上のためには重要である。
キャッシュコントローラ21のストールが起きると、キャッシュコントローラ21はCPU10からの新たなメモリアクセスの要求を受け付けない。このため、ストールが解決するまで、後続のメモリアクセスのレイテンシが増大してしまう。この様にキャッシュコントローラ21のストールが起こると、たとえデータメモリ22上にデータが存在する場合であっても、そこからデータを読み出すことができなくなるため、キャッシュヒット率を向上させる手法の効果が失われるという問題がある。
キャッシュの一方式であるブロッキングキャッシュは、キャッシュのミスが生じたことに起因して、メモリからデータを取得している間に、キャッシュコントローラがストールするという方式である。このため、ブロッキングキャッシュでは、複数のメモリアクセスが起こった場合に、後続のメモリアクセスのレイテンシが増大し、CPUのストール時間が増加するという問題がある。
図17に二つのCPUで共有されるキャッシュの例を示す。本例では、第1のCPU11及び第2のCPU12がそれぞれブロッキングキャッシュ23と接続されている。また、ブロッキングキャッシュ23と主メモリ30が接続されている。
この例では、まず第1のCPU11からのメモリアクセスが起こり、キャッシュミスしたとする。このキャッシュミスの処理中に起こった第2のCPU12からのメモリアクセスは、先行するキャッシュミスの処理が終わるまで待たされることになる。したがって、このメモリアクセスの遅延により第2のCPU12のストールする時間が増加する。
上記の例では、複数のCPUで共有されるキャッシュを示したが、同様の問題は単一のCPUからアクセスされるキャッシュでも起こる場合がある。例えばCPUが複数のスレッドの同時実行をサポートしており、単一のCPUから複数のメモリアクセスが発生する場合などが挙げられる。
この様なブロッキングキャッシュの問題を解決するため、非特許文献1ではノンブロッキングキャッシュが開示されている。図18に二つのCPUで共有されるキャッシュの例を示す。この例では、第1のCPU11及び第2のCPU12が、それぞれノンブロッキングキャッシュ24を介して、主メモリ30に接続されている。ノンブロッキングキャッシュ24は、同図に示すように、MSHR(Miss Status/Information Holding Register)というレジスタを有する。そしてキャッシュミスを処理するために必要な情報をMSHRに記憶しておくことによって、キャッシュミスの処理中に後続のメモリアクセスを処理することを可能としている。したがって、ノンブロッキングキャッシュを用いる場合は、前述したブロッキングキャッシュを用いる場合に比べて、複数のメモリアクセスが同時に起こった際のCPUのストール時間を短縮することが可能である。
特開2000−339220号公報
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
上述のようにMSHRを利用することにより、CPUのストール時間を短縮することが可能となる。しかし、ハードウェア資源の制約から、ノンブロッキングキャッシュにおいてMSHRを無限に持つことは不可能である。
MSHRの数が有限な場合では、複数のメモリアクセスが起こり、それらがキャッシュミスすることによって、全てのMSHRが利用されるという状態が発生する。
この様な状態で、さらにメモリアクセスが発生した場合、そのメモリアクセスは、ブロッキングキャッシュの場合と同様に遅延を受けることになり、CPUのストール時間が増大するという問題がある(図18参照。)。
したがって、本発明が解決しようとする課題は、MSHRの数が有限な場合において、CPUのストール時間が増大することである。
そこで、本発明は、複数のメモリアクセスが同時に起こる場合に、CPUのストール時間の増加を防止することが可能なキャッシュメモリ、そのシステム、その利用方法及びその利用プログラムを提供することを目的とする。
本発明に係るキャッシュメモリは、複数のMSHRと、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付け手段と、を備えることを特徴とする。
本発明に係るキャッシュメモリ利用方法は、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別ステップと、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別ステップにおいて識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付けステップと、を備え、前記各ステップを複数のMSHRを有するキャッシュメモリが行うことを特徴とする。
本発明に係るプログラムは、複数のMSHRと、受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付け手段と、としてコンピュータを機能させることを特徴とする。
本発明によれば、複数のメモリアクセスが同時に起こる場合に、CPUのストール時間の増加を防止することが可能となる。
本発明の第1の実施の形態の構成を説明するための図面である。 本発明の第1の実施の形態の基本的動作を説明するためのフローチャート(1/2)である。 本発明の第1の実施の形態の基本的動作を説明するためのフローチャート(2/2)である。 本発明の第2の実施の形態の構成を説明するための図面である。 本発明の第2の実施の形態の別形態の構成を説明するための図面である。 本発明の第3の実施の形態の構成を説明するための図面である。 本発明の第4の実施の形態の構成を説明するための図面である。 本発明の第1の実施例の構成を説明するための図面である。 本発明の第1の実施例のキャッシュコントローラの構成を説明するための図面である。 本発明の第2の実施例の構成を説明するための図面である。 本発明の第2の実施例のOS、キャッシュコントローラの構成を説明するための図面である。 本発明の第2の実施例の動作を説明するための図面である。 本発明の第3の実施例の構成を説明するための図面である。 本発明の第4の実施例の構成を説明するための図面である。 本発明の第5の実施例の構成を説明するための図面である。 本発明に関連する技術のキャッシュの構成を示すための図面である。 本発明に関連する技術のブロッキングキャッシュの動作を示すための図面である。 本発明に関連する技術のノンブロッキングキャッシュの動作を示すための図面である。
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
図1に本発明の第1の実施の形態を示す。本実施の形態に係るキャッシュメモリ(キャッシュ)におけるキャッシュコントローラは、MSHR100、MSHR検索部200及びメモリアクセス−MSHR対応表300を有する。なお、図1の例では、キャッシュメモリが備えるデータメモリ・タグメモリ等の他の要素や、キャッシュメモリに接続されるプロセッサ(CPU)、主メモリ等の要素も省略している。
MSHR100は、複数のMSHRであり、各MSHRには、番号が割り振られている。
MSHR検索部200は、メモリアクセス識別部201、メモリアクセス対応付け部202及び空きMSHR判定部203を有する。
メモリアクセス識別部201は、メモリアクセスID(図中ではS1と表記する。)を決定する機能を有する。ここで、メモリアクセスIDとはキャッシュへのメモリアクセスリクエストからメモリアクセスとMSHRを対応付けするための識別子である。
メモリアクセス対応付け部202は、メモリアクセス−MSHR対応表300を検索して、メモリアクセスIDに対応する候補MSHR番号を決定する機能を有する。
空きMSHR判定部203は、候補MSHR番号(図中ではS2と表記する。)と空きMSHR情報から、メモリアクセスに利用されるMSHR番号を決定する機能を有する。
メモリアクセス−MSHR対応表300は、メモリアクセスに利用することができるMSHRの番号を記録するための表であり、メモリアクセスIDとMSHR番号が記録される。メモリアクセス−MSHR対応表300は、キャッシュ内部に記録され、キャッシュ外部から内容を変更することが可能である。
次に、図面を用いて本実施の形態の動作を詳細に説明する。
まず、図2を参照して本実施の形態で想定するメモリアクセス時の動作を説明する。
プロセッサがメモリアクセスリクエストを出す(ステップS101)。一般にメモリアクセスリクエストには、アドレス、データ(ライト時)、ページ属性などの情報が含まれる。
キャッシュコントローラは、MSHR検索部200を呼び出し、空きMSHRの取得を試みる(ステップS102)。
その結果、空きMSHRが得られなかった場合は、キャッシュコントローラは空きMSHRが得られるまでメモリアクセスの処理を中断する(ステップS103においてNo)。
一方、空きMSHRが得られた場合は(ステップS103においてYes)、キャッシュコントローラは、キャッシュヒット/ミス判定を行う(ステップS104)。
その結果、キャッシュヒットの場合は(ステップS105においてYes)、データメモリからデータを読み出しCPUに渡す(ステップS106)。
一方、キャッシュミスの場合は(ステップS105においてNo)、MSHRに必要な情報を保存し、主メモリからデータを読み出し、データが得られたらCPUに渡す(ステップS107)。この時、MSHRは利用中から空き状態に戻される。
次に、図18を参照して本実施の形態における空きMSHR検索時の動作(上記のステップS102に相当する。)を詳細に説明する。
MSHR検索部200が呼び出される(ステップS201)。
MSHR検索部200のメモリアクセス識別部201は、メモリアクセスリクエストに含まれている情報からメモリアクセスIDを決定する(ステップS202)。
MSHR検索部200のメモリアクセス対応付け部202は、メモリアクセスIDを入力として呼び出され、メモリアクセス−MSHR対応表300を用いて、入力されたメモリアクセスIDに対応するMSHR番号を検索する(ステップS203)。
検索の結果、メモリアクセスIDと、それに対応するMSHR番号が存在した場合は(ステップS203においてYes)、メモリアクセスIDに対応するMSHR番号を候補MSHR番号として決定する(ステップS204)。なお、表にメモリアクセスIDに対応するMSHR番号が複数記録されている場合は、複数のMSHR番号を候補MSHR番号としても良い。一方、メモリアクセス−MSHR対応表300にメモリアクセスIDに対応するMSHR番号が存在しない場合は(ステップS203においてNo)、予め設定されたデフォルトのMSHR番号を候補MSHR番号として返すという動作をする(ステップS205)。
MSHR検索部200の空きMSHR判定部203は、候補MSHR番号を入力として呼び出され、候補MSHRに対して、MSHRに記録されている、MSHRが利用中かどうかを示すビットを調べる(ステップS206)。その結果、候補MSHRが利用中でない場合は(ステップS206においてNo)、そのMSHRをMSHR検索部203の検索結果とする(ステップS207)。このとき、複数の空きMSHRが存在する場合は、そのうちの一つを検索結果とする。一方、候補MSHRが利用中である場合は(ステップS206においてYes)、空きMSHRが存在しないことを示す結果を検索結果として返す(ステップS208)。
次に、本実施の形態の効果を説明するため、3回のメモリアクセスが起こる場合を例に説明する。それぞれのメモリアクセスIDは順番に1、1、2であったとする。本説明ではMSHRは2つあり、両MSHRとも利用中ではないものとする。メモリアクセス−MSHR対応表300は、メモリアクセスID1に対応するMSHR番号として1、メモリアクセスID2に対応するMSHR番号として1、2が記録されていたとする。
(1)CPUが一つ目のメモリアクセスリクエストを発行する。
(2)キャッシュコントローラは、MSHR検索部200を呼び出し、MSHR1を得る。
(3)一つ目のメモリアクセスがキャッシュミスすると、MSHR1に情報を記録し、メモリからデータを読み出す。
(4)メモリへのデータ読み出し中に、CPUが二つ目のメモリアクセスリクエストを発行する。なお、一つ目及び二つ目のメモリアクセスリクエストを発行したCPUは、同じCPUであっても異なるCPUであっても良い。また、同じCPUである場合は、CPUが複数のメモリアクセスを同時に発行することが可能な機能を有している必要があることは明らかである。
(5)キャッシュコントローラは、MSHR検索部200を呼び出すが、メモリアクセスIDが1の場合に対応するMSHRであるMSHR1は利用中であるため、利用可能MSHRは得られない。
(6)キャッシュコントローラは、二つ目のメモリアクセスの処理を保留する。
(7)CPUが三つ目のメモリアクセスリクエストを発行する。
(8)キャッシュコントローラは、MSHR検索部200を呼び出し、MSHR2を得る。
(9)キャッシュコントローラは、MSHR2を用いて三つ目のメモリアクセスを処理する。
本実施の形態を用いることにより、この様に、MSHRが二つしかないにも関わらず、キャッシュコントローラは三つ目のアクセスを処理することが可能となる。
例えば、高優先度のアプリケーションが発行するメモリアクセスのIDが2と識別され、その他のアプリケーションの発行するメモリアクセスのIDが1と識別される時、高優先度のアプリケーションは、その他のアプリケーションが複数のメモリアクセスを発行していた場合であっても、常に一つのMSHRが利用できることが保証される。
一方、本実施の形態を用いないキャッシュコントローラの場合は、二つ目のメモリアクセスによってMSHR2が利用されてしまい、高優先度のアプリケーションのメモリアクセス時(上述の説明では三つ目のメモリアクセスに相当する。)に空きMSHRが存在せず、高優先度アプリケーションが遅延を受けることになる。
したがって、本実施の形態を用いることによって、その他のアプリケーションから複数のメモリアクセスが起こった場合の高優先度アプリケーションの性能低下を削減することができる。
また、上述のように、二つのMSHRが利用できることに対して、本実施の形態を用いることで、高優先度のアプリケーションと、その他のアプリケーションが同時に動く場合であっても高優先度のアプリケーションは少なくとも一つのMSHRが利用でき、高優先度のアプリケーションの性能低下を削減することができる。そのため、高優先度のアプリケーションが単体で動く場合と、他のアプリケーションと同時に動く場合との性能差を削減できる。したがって、高優先度アプリケーションの性能の予測性を高めることができる。
本実施の形態の別形態として、メモリアクセス−MSHR対応表300を、例えば主メモリなどキャッシュの外部のメモリに記録しても良い。その場合は、キャッシュ内部の高速なメモリによって、メモリアクセス−MSHR対応表300の内容の一部を記録することによって高速に検索できる構成をとることが望ましい。
(第2の実施の形態)
次に、本発明の第2の実施の形態について説明する。
図4に本実施の形態の構成を示す。本実施の形態に係るキャッシュメモリにおけるキャッシュコントローラは、複数のMSHR100、MSHR検索部200及びメモリアクセス−MSHR対応表300を有し、MSHR検索部200が、メモリアクセス識別部201、メモリアクセス対応付け部202、空きMSHR判定部203を有する。この点は、第1の実施の形態と同様である。本実施の形態では、加えて、キャッシュメモリに接続されたCPU400がメモリアクセスID生成部401を有することを特徴とする。
CPU400のメモリアクセスID生成部401は、メモリアクセスリクエストの発行時に、そのメモリアクセスリクエストにメモリアクセスIDを付加する機能を有する。このメモリアクセスID付きメモリアクセスリクエストを図中ではS3と表記する。
本実施の形態のメモリアクセス識別部201は、メモリアクセスに付加されたメモリアクセスIDをそのままメモリアクセスIDとして決定する。
本実施の形態のメモリアクセス対応付け部202、空きMSHR判定部203、メモリアクセス−MSHR対応表300は、第1の実施の形態と同様である。
本実施の形態の動作は、本発明の第1の実施の形態の動作から明らかである(図2及び6参照。)。
また、本実施の形態が、メモリアクセスのレイテンシの増加を防止できるという効果を持つことは、第1の実施の形態の説明として述べたとおりであり、明らかである。
本実施の形態では、CPU400が任意のメモリアクセスIDを付加することができるため、キャッシュコントローラがメモリアクセスリクエストに含まれる情報のみからメモリアクセスIDを決定する場合に比べて、メモリアクセスとMSHRの対応付けの自由度が高められるという効果がある。
本実施の形態の別形態として、図5に示すように、CPUがメモリアクセスID生成部として、MSHRマスク生成部402を有するようにしても良い。
MSHRマスク生成部402は、メモリアクセスに利用可能なMSHRの集合をメモリアクセスIDとしてメモリアクセスリクエストに付加する機能を有する。ここでは、この集合を「MSHRマスク」と呼ぶ。このメモリアクセスID(MSHRマスク)付きメモリアクセスリクエストを図中ではS4と表記する。
これまでの実施の形態では、メモリアクセス−MSHR対応表300を用いてメモリアクセスIDから候補MSHR番号を決定する。一方、本実施の形態では、メモリアクセスリクエストがMSHRマスクを持つため、キャッシュコントローラのメモリアクセス対応付け部202はMSHRマスクに含まれるMSHRをそのまま候補MSHR番号とするだけで良い。したがって、本実施の形態はMSHR検索部200を簡素化できるという効果を奏する。
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を用いて説明する。
本実施の形態の構成を図6に示す。本実施の形態に係るキャッシュメモリにおけるキャッシュコントローラは、複数のMSHR100、MSHR検索部200及びメモリアクセス−MSHR対応表300を有し、MSHR検索部200が、メモリアクセス識別部201、メモリアクセス対応付け部202、空きMSHR判定部203を有する。この点は、第1の実施の形態と同様である。本実施の形態では、加えて、キャッシュメモリに接続されたCPU403とキャッシュコントローラの間にメモリアクセスID付加部404を有することを特徴とする。
メモリアクセスID付加部404は、CPU403からのメモリアクセスリクエスト(図中ではS5と表記する。)を入力として、これにメモリアクセスIDを付加する。そしてメモリアクセスIDを付加したメモリアクセスリクエスト(図中では第2の実施の形態同様にS3と表記する。)をキャッシュに発行するという機能を有する。
本実施の形態は、CPUとキャッシュコントローラの間でメモリアクセスIDを付加するため、上述の第2の実施の形態のようにCPUにメモリアクセスID生成部401を追加する必要がないという効果を奏する。
CPUにメモリアクセスID生成部401を追加するといったようにCPU内部を修正することは、権利関係から不可能であったり、多大な工数を要したり、等の問題があることから、本実施の形態が有益であることは、当業者には明らかである。
本実施の形態の動作は、第1及び第2の実施の形態の動作から明らかである(図2及び図6参照。)。また、本実施の形態がメモリアクセスレイテンシの増大を抑える効果を持つことも、第1及び第2の実施の形態の効果として述べたとおりであり、明らかである。
本実施の形態の別形態として、メモリアクセスID付加部404にメモリアクセスIDとしてMSHRマスクを付加するMSHRマスク付加部405を用いても良い。この場合は、第2の実施の形態の別形態と同様にメモリアクセス−MSHR対応表300が不要となるという効果を奏する。
(第4の実施の形態)
次に本発明の第4の実施の形態について図面を用いて説明する。本実施の形態の構成を図7に示す。
本実施の形態に係るキャッシュメモリシステムは、メモリアクセス高速化部501、レイテンシ増加防止部502及びヒット率向上部503を有する。
レイテンシ増加防止部502は、キャッシュアクセス時のレイテンシの増加を防止するための部分であり、上述した第1乃至第3の実施の形態に係るキャッシュメモリにおけるキャッシュコントローラの何れか一つと同様の構成を有している。
ヒット率向上部503は、高優先度アプリケーションが利用するデータが他のアプリによってキャッシュから追い出されないように設定することにより、高優先度アプリケーションによるアクセスの際のヒット率を向上させる部分である。
メモリアクセス高速化部501は、メモリアクセス高速化部501及びレイテンシ増加防止部502を合わせて利用するための部分である。
本実施の形態の動作を、高優先度アプリケーションのメモリアクセスを高速化する場合を例に説明する。
(1)メモリアクセス高速化部501は、ヒット率向上部502を呼び出し、高優先度アプリケーションが利用するデータが他のアプリケーションによってキャッシュから追い出されないように設定する。
(2)メモリアクセス高速化部501は、レイテンシ増加防止部502を呼び出し、高優先度アプリケーション以外のアプリケーションからのメモリアクセスによって全てのMSHRが利用されることを原因として高優先度アプリケーションのメモリアクセスの際にレイテンシが増加することが無いように設定する。
キャッシュヒット率向上部503のみでは、他のアプリケーションからのメモリアクセスによるレイテンシの増加によって、キャッシュにヒットする場合のメモリアクセスでもレイテンシが増大するという問題がある。
一方、レイテンシ増大防止部502のみを利用した場合で、ヒットが変わらない場合は、レイテンシの増大は防止できても、他のアプリケーションが動かない場合に加えてレイテンシを削減することはできない。
本実施の形態では、レイテンシ増大防止部502を利用し他のアプリケーションによるレイテンシの増大を抑えることにより、キャッシュヒット率向上部503を利用してヒット率を高めたことによる効果を最大限に発揮させることができるという効果がある。すなわち両者を併せて利用することによりCPUのストール時間の増加をより効率良く防止することが可能となる。
次に、具体的な実施例を用いて本発明の実施の形態を説明する。第1の実施例は、本発明の第1の実施の形態に対応する実施例である。
本実施例に係るキャッシュメモリシステムは、図8に示すようにキャッシュコントローラ621及びデータメモリ・タグメモリ622を有するキャッシュメモリ620を複数のCPUが共有している。本実施例では、4つのCPU、すなわち第1のCPU611乃至第4のCPU614がキャッシュメモリ620を共有している。各CPU611〜614が発行するメモリアクセスリクエストには、CPU番号が含まれる。
キャッシュコントローラ621の構成を図9に示す。同図に示すキャッシュコントローラは、3つのMSHR701、MSHR検索部720、メモリアクセス−MSHR対応表730及びメモリアクセス−MSHR対応表更新部740を有することを特徴とする。また、MSHR検索部720は、メモリアクセス識別部721とメモリアクセス対応付け部722と空きMSHR判定部723を有する。更に、図9中に示すCPU710は、図8に示す第1のCPU611乃至第4のCPU614の何れかに対応するものである。なお、図9では、キャッシュコントローラ621の中で本発明に関する部分のみを示していることは当業者には明らかである。
メモリアクセス識別部721は、メモリアクセスリクエストに含まれるCPU番号をメモリアクセスIDとして決定する機能を有する。すなわち、本実施例は、CPU番号とMSHRを対応付けることを特徴とする。
メモリアクセス−MSHR対応表更新部740は、CPU710からのリクエストによって、メモリアクセス−MSHR対応表730を更新する機能を有する。
本実施例では、メモリアクセス−MSHR対応表更新部740を用いて、図9に示すように、メモリアクセス−MSHR対応表730が作られているとする。この内容は、第1のCPU611、第2のCPU622及び第3のCPU633はMSHR0及びMSHR1を利用可能であり、第4のCPU624はMSHR2を利用可能であることを示している。すなわち、第1のCPU611、第2のCPU622及び第3のCPU633からのメモリアクセスによって、第4のCPU624が利用可能なMSHRが枯渇することはない。
次に、本実施例の動作を具体的に示すために、第1のCPU611、第4のCPU624の順番にメモリアクセスが起こる場合の動作を説明する。これらのメモリアクセスが起こる前のMSHRの利用状況は図9に示すように、MSHR0、MSHR1が利用中であり、MSHR2が空きであるとする。
まず、第1のCPU611がメモリアクセスを発行した時のMSHR検索部720の動作を以下に示す。
(1)メモリアクセス識別部721は、メモリアクセスIDとして1を決定する。
(2)次に、メモリアクセス対応付け部722は、メモリアクセス−MSHR対応表730に基づき、候補MSHR番号として0と1を決定する。
(3)最後に、空きMSHR判定部723は、MSHR0、MSHR1が利用中であるため、空きMSHRは無し、と決定する。
これにより、このメモリアクセスは、MSHR0またはMSHR1が利用可能になるまで待たされる。
次に、第4のCPU624がメモリアクセスを発行した時のMSHR検索部720の動作を以下に示す。
(1)メモリアクセス識別部721は、メモリアクセスIDとして4を決定する。
(2)次にメモリアクセス対応付け部722は、メモリアクセス−MSHR対応表に基づき、候補MSHR番号として2を決定する。
(3)空きMSHR判定部723は、MSHR2は空きであるため、空きMSHRを2と決定する。
これにより、第4のCPU624が発行したメモリアクセスはMSHR2を用いて処理される。
以上の動作より、第4のCPU624は、他のCPUからのメモリアクセスの有無に関わらず、常に一つのMSHRを利用することが可能であるため、レイテンシの増加を抑えることができる。
すなわち、本実施例では、CPU間のメモリアクセス競合による第4のCPU624のストール時間の増加を抑えることができるという効果がある。
一方、本発明の実施形態や本実施例を用いないキャッシュの場合の動作は、先行する第1のCPU611からのメモリアクセスがキャッシュミスすると、MSHR2が利用される。このため、第4のCPU624からのメモリアクセスは、MSHRの枯渇のためにMSHRが空くまで待たされることになる。これにより、メモリアクセスレイテンシが増加し、第4のCPU624のストール時間が増加する。
次に、本発明の第2の実施例について説明する。本実施例は、本発明の第4の実施の形態に対応し、レイテンシ増加防止部とヒット率向上部を合わせて利用するものである。
本実施例の構成を図10に示す。本実施例に係るキャッシュメモリシステムでは、キャッシュメモリ620が4つのCPU611〜614によって共有されており、キャッシュメモリ620がレイテンシ増加防止部623とヒット率向上部624を有している。なお、レイテンシ増加防止部623は、上述した各実施形態に係るキャッシュメモリにおけるキャッシュコントローラの何れかの構成に相当するものであるが、本実施例は上述した第1の実施例と同様の構成であるとして説明する。
図11は、本実施例におけるOSとキャッシュコントローラの構成を示している。
本実施例では、OS750の内部に加えられてメモリアクセス高速化部751が、キャッシュコントローラ760のメモリアクセス−MSHR対応表761とWayロックレジスタ762を利用することによって、レイテンシ増加防止部623とヒット率向上部624を結びつける。
レイテンシ増加防止部623は、キャッシュコントローラが複数のMSHR、MSHR検索部、メモリアクセス−MSHR対応表、メモリアクセス−MSHR対応表更新部を有している。これは、第1の実施例のキャッシュコントローラと同一の構成である。また、MSHR検索部がメモリアクセス識別部、メモリアクセス対応付け部及び空きMSHR判定部を有している。この点も第1の実施例と同様である。本キャッシュコントローラによって、レイテンシを削減する動作については、第1の実施例より明らかであるため、ここでは説明を省略する。
また、本実施例では、キャッシュヒット率向上部624としてWayロックを用いている。ここでWayロックとは、キャッシュのデータメモリが有する複数のWayの内のいくつかをロックすることによって、ロックされたWayからデータを追い出すことを禁止することである。
本実施例では、Wayロックレジスタ762に値を設定することによって、どのWayをロックするかを指定することができる。Wayロックを用いると、ロックされたWayに格納されたデータは必ずキャッシュヒットすることになり、キャッシュヒット率が向上する。
次に本実施例の動作について、高優先度アプリケーションのメモリアクセスを高速化する場合を説明する。本実施例では、まず高優先度アプリケーションが頻繁に利用するデータをWayロックする。
このときの手順を以下に示す。
(1)OS750のメモリアクセス高速化部751は、Wayロックレジスタ762を更新し、高優先度アプリケーションが頻繁に利用するデータを格納するWay以外のWayをロックする。
(2)OSのメモリアクセス高速化部751は、高優先度アプリケーションが頻繁に利用するデータを読み出す。これによりロックされていないWayにデータがロードされる。
(3)(1)でロックされなかったWayをロックし、(1)でロックされたWayのロックを解除する。
以上の手順により、高優先度アプリケーションが頻繁に利用するデータがキャッシュに格納され、かつ高優先度アプリケーションが頻繁に利用するデータが格納されたWayはロックされたこととなる。そして、高優先度アプリケーションが頻繁に利用するデータが格納されたWayをロックしたことによって、高優先度アプリケーションが頻繁に利用するデータは常にキャッシュヒットする状態となる。
次に、メモリアクセス高速化部751は、高優先度アプリケーションの処理を第4のCPU614に割り当て、それ以外のアプリケーションの処理を第1のCPU611乃至第3のCPU613の何れかに割り当てる。この割り当ては、OSのアフィニティ(affinity)機能を利用することで実現できることは当業者には明らかである。図11にはアフィニティ機能を制御する部分としてアフィニティ制御部752を図示する。
最後に、メモリアクセス高速化部751は、メモリアクセス−MSHR対応表761を図12の様に設定する。図12の様に設定することで、高優先度アプリケーションのMSHRの枯渇によるレイテンシの増加を抑えることができる。
以上の動作により、高優先度アプリケーションのキャッシュヒット率が高くなり、かつ他のアプリケーションとのメモリアクセス競合によるレイテンシの増加を防止することができる。したがって、高優先度アプリケーションのメモリアクセスが高速化される。
次に本発明の第3の実施例について説明する。本実施例は、本発明に第1の実施の形態に対応する別の実施例である。本実施例の構成を図13に示す。
本実施例では、MSHR検索部720のメモリアクセス識別部721が、メモリアクセスリクエストに含まれるアドレスの上位2バイトをメモリアクセスID(図中のSIに相当する。)として決定することを特徴とする。
本実施例は、メモリアクセスリクエストに必ず含まれる情報である「アドレス」を利用しているため、CPUがメモリアクセスリクエストにCPU番号を含めない場合などにも適用でき、汎用性が高いという特徴がある。
本実施例のメモリアクセス−MSHR対応表730は、開始アドレスと終了アドレスで指定されるアドレスの範囲とMSHRの対応を記録している。
また、本実施例のメモリアクセス対応付け部722は、アドレスから候補MSHR番号を決定するという機能を有する。
本実施例の動作は、第1の実施例より明らかであるため、ここでは説明を省略する。
本実施例は、例えばOSが利用するアドレス領域とアプリケーションが利用するアドレス領域毎に異なるMSHRを対応付けることで、アプリケーションのメモリアクセスによってOSによるメモリアクセスのレイテンシ増加を抑えることができるといった用途に利用できる。
次に、本発明の第4の実施例について説明する。本実施例は、本発明の第2の実施の形態に対応した実施例である。
本実施例の構成を図14に示す。本実施例は、CPU770がプロセスID(以下の説明及び図中では「PID」と表記する。)レジスタ771を有し、CPU770がメモリアクセスリクエストを発行する際に、メモリアクセスリクエストにPIDを付加することを特徴とする。図中では、このPID付きメモリアクセスリクエストをS6と表記する。
本実施例では、OS780がプロセスのコンテキストスイッチ時にPIDレジスタを更新することによって、CPU770で実行されているプロセスのPIDがPIDレジスタ771に記録されるようにする。
本実施例のメモリアクセス識別部720は、メモリアクセスリクエスト中のPID(図中ではS7と表記する。)をメモリアクセスIDとして決定する。
また、メモリアクセス−MSHR対応表730は、PIDとMSHRの対応関係を記録している。そして、メモリアクセス対応付け部722は、メモリアクセス−MSHR対応表730を用いてPIDに対応するMSHR番号を候補MSHR番号として決定する。
この様な構成を取ることによって、メモリアクセスを行ったプロセスのPIDとMSHR番号を直接対応させることが可能である。
一般に、アプリケーションは一つまたは複数のプロセスによって構成されるため、PIDとMSHRを対応させることにより、アプリケーションにMSHRを割り当てることができる。したがって、アプリケーションの処理を特定のCPUに割り当てることなく、高優先度アプリケーションのメモリアクセスのレイテンシの増加を抑えることができるという効果がある。
また、CPUが複数のハードウェアスレッドをサポートする場合は、CPUによるスレッドの切り替え時に保存、復元されるコンテキストにPIDレジスタを加えることによって、OSを利用せずにPIDレジスタの更新を行うことが望ましい。
次に、本発明の第5の実施例について説明する。本実施例は、本発明の第3の実施の形態の別形態に対応した実施例である。
本実施例の構成を図15に示す。本実施例は、CPUとキャッシュコントローラの間に、MSHRマスク付加部800を有することを特徴とする。
MSHRマスク付加部800は、内部にMSHRマスクレジスタ801を持ち、CPU790からのメモリアクセスリクエスト(図中ではS8と表記する。)にMSHRマスクを付加する機能を有する。なお、MSHRマスクを付加したメモリアクセスリクエストを図中ではS9と表記する。
本実施例のメモリアクセス識別部721は、メモリアクセスリクエストに含まれるMSHRマスクをメモリアクセスID(図中ではS10と表記する。)として決定する。
メモリアクセス対応付け部722は、MSHRマスクに含まれる番号を候補MSHR番号として決定する。したがって、本実施例では、キャッシュコントローラが、メモリアクセス−MSHR対応表を持たなくて良いという特徴がある。
本実施例では、OS780がMSRHマスクレジスタ801を書き換える機能を有する。OSはプロセスのコンテキストスイッチ時に応じて、MSHRマスクレジスタ801を書き換えることによって、プロセスにMSHRを対応させることができる。
本実施例のメモリアクセス時の動作は、上記実施例の説明より明らかであるため、ここでは説明を省略する。また、本実施例によって、高優先度のアプリケーションのメモリアクセスレイテンシの増加を抑えることができることも明らかである。
本実施例は、CPUに、発行するメモリリクエストにMSHRマスクを付加する機能を追加できない場合にも利用可能であるという効果がある。
本実施例の別の形態として、MSHRマスク付加部800の代わりに、例えばプロセスIDなどの異なるIDをメモリアクセスリクエストに付加する機能を有するメモリアクセスID付加部を有するようにしても良い。
その場合は、キャッシュコントローラは、メモリアクセス−MSHR対応表730を有し、メモリアクセス対応付け部722は同表を用いて候補MSHR番号を決定するという動作をする。
本発明の各実施の形態及び各実施例は以下の効果を奏する。
本発明の各実施の形態及び各実施例によれば、優先度の高いアプリケーションの性能低下を防ぐことができる。なぜならば、優先度の高いアプリケーションによるメモリアクセスとその他のアプリケーションによるメモリアクセスを異なるグループに分類することによって、その他のアプリケーションからのメモリアクセスによってMSHRが全て利用され、優先度の高いアプリケーションがメモリアクセスのレイテンシが増大することを防ぐことができるからである。
また、本発明の各実施の形態及び各実施例によれば、アプリケーションの動作の予測性を高めることができる。なぜならば、アプリケーションの集合を複数のグループに分け、異なるグループ間ではMSHRを共有しないようにすることができるため、他のグループに属するアプリケーションによるメモリアクセスによって、自グループに割り当てられたMSHRが利用されることがなくなる。したがって、常に一定の数のMSHRを利用できることが保証できるため、メモリアクセスレイテンシのばらつきを少なくすることができ、アプリケーションの動作のばらつきを抑えることができる。
なお、本発明の上記各実施の形態及び各実施例に係るキャッシュメモリシステムは、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
例えば、本発明の上記各実施の形態及び各実施例に係るキャッシュメモリシステムは、ハードウェアによっても実現することもできるが、コンピュータをそのキャッシュメモリシステムとして機能させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。
また、本発明の上記各実施形態及び各実施例に係るキャッシュメモリ利用方法は、ハードウェアによっても実現することもできるが、コンピュータにそのキャッシュメモリ利用方法を実行させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。
また、上述したハードウェア、ソフトウェア構成は特に限定されるものではなく、上述した各構成要素の機能を実現可能であれば、いずれのものでも適用可能である。例えば、上述した各構成要素の機能毎に回路や部品等を独立させて個別に構成したものでも、複数の機能を1つの回路や部品等に組み入れて一体的に構成したものでも、いずれでもよい。
以上、実施の形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施の形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2008年8月25日に出願された日本出願特願2008−215392号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、PC(Personal Computer)やサーバーおよび携帯電話などの組み込み機器といった複数のアプリケーションが動作する機器上で、特定のアプリケーションの性能を向上させるといった用途や性能のばらつきを抑えるといった用途に好適である。
10、400、403、710、770 CPU
11、611 第1のCPU
12、612 第2のCPU
20、620 キャッシュメモリ
21、760 キャッシュコントローラ
22、622 データメモリ・タグメモリ
23 ブロッキングキャッシュ
24 ノンブロッキングキャッシュ
30、630 主メモリ
100、701 MSHR
200、720 MSHR検索部
201、721 メモリアクセス識別部
202、722 メモリアクセス対応付け部
203、723 空きMSHR判定部
300、761 メモリアクセス−MSHR対応表
401 メモリアクセスID生成部
402 MSHRマスク生成部
404 メモリアクセスID付加部
501 メモリアクセス高速化部
502 レイシンテ増加防止部
503 ヒット率向上部
613 第3のCPU
614 第4のCPU
621 キャッシュコントローラ
623 レイシンテ増加防止部
624 ヒット率向上部
740 メモリアクセス−MSHR対応表更新部
750、780 OS
751 メモリアクセス高速化部
752 アフィニティ制御部
762 Wayロックレジスタ
771 PIDレジスタ
800 MSHRマスク付加部
801 MSHRマスクレジスタ

Claims (32)

  1. 複数のMSHR(Miss Status/Information Holding Register)と、
    受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、
    或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付け手段と、
    を備えることを特徴とするキャッシュメモリ。
  2. 決定した前記MSHRの候補が利用中か否かを調べ、当該MSHRの候補が利用中でない場合は、当該MSHRの候補を空きMSHRとして出力し、当該MSHRの候補が利用中である場合はその旨を出力する空きMSHR判定手段を更に備えることを特徴とする請求項1に記載のキャッシュメモリ。
  3. 前記メモリアクセス識別手段が、受け付けた前記メモリアクセスリクエストから、メモリアクセスIDを生成し、
    前記メモリアクセス対応付け手段が、前記メモリアクセスIDとMSHRの対応を記録した表を用いることによって、前記メモリアクセスに対応するMSHRの候補を決定することを特徴とする請求項1又は2に記載のキャッシュメモリ。
  4. 前記メモリアクセスIDは、CPU毎に割り振られている番号であるCPU番号を利用したものであることを特徴とする請求項3に記載のキャッシュメモリ。
  5. 前記メモリアクセスIDは、前記メモリアクセスリクエストに含まれるアドレスを利用したものであることを特徴とする請求項3に記載のキャッシュメモリ。
  6. 前記メモリアクセスIDは、CPUが処理するプロセスのプロセスIDを利用したものであることを特徴とする請求項3に記載のキャッシュメモリ。
  7. 前記メモリアクセスIDは、或るメモリアクセスが利用可能なMSHRの集合を表すMSHRマスクを利用したものであることを特徴とする請求項3に記載のキャッシュメモリ。
  8. 高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するMSHRを分離することを特徴とした請求項1乃至7の何れか1項に記載のキャッシュメモリ。
  9. 請求項1乃至8の何れか1項に記載のキャッシュメモリと、
    メモリアクセスリクエストにメモリアクセスIDを付加するメモリアクセスID生成部を備えたCPUと、を備え、
    前記メモリアクセス識別手段が、前記CPUによって付加された前記メモリアクセスIDを、前記メモリアクセス対応付け手段に渡すメモリアクセスIDとすることを特徴とするキャッシュメモリシステム。
  10. 請求項1乃至8の何れか1項に記載のキャッシュメモリと、
    CPUが発行したメモリアクセスリクエストを受け取り、当該メモリアクセスリクエストにメモリアクセスIDを付加したうえで前記キャッシュメモリに対して当該メモリアクセスリクエストを発行するメモリアクセスID付加手段と、
    を備え、
    前記メモリアクセス識別手段が、前記メモリアクセスID付加部によって付加された前記メモリアクセスIDを、前記メモリアクセス対応付け手段に渡すメモリアクセスIDとすることを特徴とするキャッシュメモリシステム。
  11. 高優先度アプリケーションソフトウェアが利用するデータが他のアプリケーションソフトウェアによって前記キャッシュメモリから追い出されないように設定するキャッシュヒット率向上手段と、
    前記メモリアクセス識別手段及びメモリアクセス対応付け手段と、前記キャッシュヒット率向上手段とを組み合わせて利用するメモリアクセス高速化手段と、
    を更に備えることを特徴とする請求項9又は10に記載のキャッシュメモリシステム。
  12. 前記キャッシュアクセス高速化手段は、オペレーティングシステムが備えていることを特徴とする請求項11に記載のキャッシュメモリシステム。
  13. 受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別ステップと、
    或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別ステップにおいて識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付けステップと、を備え、
    前記各ステップを複数のMSHRを有するキャッシュメモリが行うことを特徴とするキャッシュメモリ利用方法。
  14. 決定した前記MSHRの候補が利用中か否かを調べ、当該MSHRの候補が利用中でない場合は、当該MSHRの候補を空きMSHRとして出力し、当該MSHRの候補が利用中である場合はその旨を出力する空きMSHR判定ステップを更に備えることを特徴とする請求項13に記載のキャッシュメモリ利用方法。
  15. 前記メモリアクセス識別ステップにおいて、受け付けた前記メモリアクセスリクエストから、メモリアクセスIDを生成し、
    前記メモリアクセス対応付けステップにおいて、前記メモリアクセスIDとMSHRの対応を記録した表を用いることによって、前記メモリアクセスに対応するMSHRの候補を決定することを特徴とする請求項13又は14に記載のキャッシュメモリ利用方法。
  16. 前記メモリアクセスIDとして、CPU毎に割り振られている番号であるCPU番号を利用することを特徴とする請求項15に記載のキャッシュメモリ利用方法。
  17. 前記メモリアクセスIDとして、前記メモリアクセスリクエストに含まれるアドレスを利用することを特徴とする請求項15に記載のキャッシュメモリ利用方法。
  18. 前記メモリアクセスIDとして、CPUが処理するプロセスのプロセスIDを利用することを特徴とする請求項15に記載のキャッシュメモリ利用方法。
  19. 前記メモリアクセスIDとして、或るメモリアクセスが利用可能なMSHRの集合を表すMSHRマスクを利用することを特徴とする請求項15に記載のキャッシュメモリ利用方法。
  20. 高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するMSHRを分離することを特徴とした請求項13乃至19の何れか1項に記載のキャッシュメモリ利用方法。
  21. CPUが、メモリアクセスリクエストにメモリアクセスIDを付加するメモリアクセスID生成ステップを更に備え、
    前記メモリアクセス識別ステップにおいて、前記CPUによって付加された前記メモリアクセスIDを、前記メモリアクセス対応付けステップにおけるメモリアクセスIDとすることを特徴とする請求項13乃至20の何れか1項に記載のキャッシュメモリ利用方法。
  22. CPUが発行したメモリアクセスリクエストを受け取り、当該メモリアクセスリクエストにメモリアクセスIDを付加したうえでキャッシュメモリに対して当該メモリアクセスリクエストを発行するメモリアクセスID付加ステップを更に備え、
    前記メモリアクセス識別ステップにおいて、前記メモリアクセスID付加部によって付加された前記メモリアクセスIDを、前記メモリアクセス対応付けステップにおけるメモリアクセスIDとすることを特徴とする請求項13乃至20の何れか1項に記載のキャッシュメモリ利用方法。
  23. 高優先度アプリケーションソフトウェアが利用するデータが他のアプリケーションソフトウェアによってキャッシュメモリから追い出されないように設定するキャッシュヒット率向上ステップと、
    前記メモリアクセス識別ステップ及び前記メモリアクセス対応付けステップと、前記キャッシュヒット率向上ステップとを組み合わせて利用するメモリアクセス高速化ステップと、
    を更に備えることを特徴とする請求項21又は22に記載のキャッシュメモリ利用方法。
  24. 前記キャッシュアクセス高速化ステップは、オペレーティングシステムにより実行されることを特徴とする請求項23に記載のキャッシュメモリ利用方法。
  25. 複数のMSHRと、
    受け付けたメモリアクセスリクエストに含まれるメモリアクセスを識別するメモリアクセス識別手段と、
    或るメモリアクセスと、当該メモリアクセスがキャッシュミスしたときに利用される前記MSHRを対応付け、当該対応付けに基づいて、前記アクセス識別手段において識別した前記メモリアクセスが利用する前記MSHRの候補を決定するメモリアクセス対応付け手段と、
    として、コンピュータを機能させることを特徴とするプログラム。
  26. 前記コンピュータを、
    決定した前記MSHRの候補が利用中か否かを調べ、当該MSHRの候補が利用中でない場合は、当該MSHRの候補を空きMSHRとして出力し、当該MSHRの候補が利用中である場合はその旨を出力する空きMSHR判定手段として、更に機能させることを特徴とする請求項25に記載のプログラム。
  27. 前記メモリアクセス識別手段が、受け付けた前記メモリアクセスリクエストから、メモリアクセスIDを生成し、
    前記メモリアクセス対応付け手段が、前記メモリアクセスIDとMSHRの対応を記録した表を用いることによって、前記メモリアクセスに対応するMSHRの候補を決定することを特徴とする請求項25又は26に記載のプログラム。
  28. 前記メモリアクセスIDとして、CPU毎に割り振られている番号であるCPU番号を利用することを特徴とする請求項27に記載のプログラム。
  29. 前記メモリアクセスIDとして、前記メモリアクセスリクエストに含まれるアドレスを利用することを特徴とする請求項27に記載のプログラム。
  30. 前記メモリアクセスIDとして、CPUが処理するプロセスのプロセスIDを利用することを特徴とする請求項27に記載のプログラム。
  31. 前記メモリアクセスIDとして、或るメモリアクセスが利用可能なMSHRの集合を表すMSHRマスクを利用することを特徴とする請求項27に記載のプログラム。
  32. 高優先度アプリケーションソフトウェアによるメモリアクセスと、前記高優先度アプリケーションソフトウェア以外のアプリケーションソフトウェアによるメモリアクセスと、が利用するMSHRを分離することを特徴とした請求項25乃至31の何れか1項に記載のプログラム。
JP2010526628A 2008-08-25 2009-07-23 キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム Withdrawn JPWO2010024071A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008215392 2008-08-25
JP2008215392 2008-08-25
PCT/JP2009/063220 WO2010024071A1 (ja) 2008-08-25 2009-07-23 キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム

Publications (1)

Publication Number Publication Date
JPWO2010024071A1 true JPWO2010024071A1 (ja) 2012-01-26

Family

ID=41721244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010526628A Withdrawn JPWO2010024071A1 (ja) 2008-08-25 2009-07-23 キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム

Country Status (3)

Country Link
US (1) US8555001B2 (ja)
JP (1) JPWO2010024071A1 (ja)
WO (1) WO2010024071A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772958B2 (en) * 2011-10-31 2017-09-26 Hewlett Packard Enterprise Development Lp Methods and apparatus to control generation of memory access requests
US9727501B2 (en) * 2011-10-31 2017-08-08 Brocade Communications Systems, Inc. SAN fabric online path diagnostics
JP5708861B2 (ja) * 2014-04-03 2015-04-30 富士通株式会社 マルチプロセッサシステム、制御方法、および制御プログラム
CN108279981A (zh) * 2018-01-30 2018-07-13 东华理工大学 基于访存优先级的gpgpu性能优化方法
US11157414B2 (en) * 2018-08-10 2021-10-26 Nvidia Corporation Method for efficient grouping of cache requests for datapath scheduling
CN111506521B (zh) * 2019-01-31 2023-10-20 华为技术有限公司 一种存储器、数据请求写入方法及控制器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63284648A (ja) * 1987-05-18 1988-11-21 Fujitsu Ltd キャッシュメモリ制御方法
US5276853A (en) * 1987-05-18 1994-01-04 Fujitsu Limited Cache system
CA1300758C (en) * 1988-03-07 1992-05-12 Colin H. Cramm Mechanism for lock-up free cache operation with a remote address translation unit
JP2000311112A (ja) 1999-04-28 2000-11-07 Hitachi Ltd 情報システム
JP2000339220A (ja) 1999-05-27 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> キャッシュブロック予約方法およびキャッシュブロック予約機能付きコンピュータシステム
JP2003015957A (ja) 2001-06-29 2003-01-17 Nec Corp キャッシュメモリ制御システム
JP2003076958A (ja) 2001-09-03 2003-03-14 Sony Corp 携帯端末装置および機能関連付け登録方法、機能選択画面表示方法
JP2005196430A (ja) 2004-01-07 2005-07-21 Hiroshi Nakamura 半導体装置および半導体装置の電源電圧/クロック周波数制御方法
JP2005339198A (ja) * 2004-05-27 2005-12-08 Internatl Business Mach Corp <Ibm> キャッシュヒット率推定装置、キャッシュヒット率推定方法、プログラム及び記録媒体
JP4504132B2 (ja) 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
JP2006285430A (ja) 2005-03-31 2006-10-19 Matsushita Electric Ind Co Ltd Cpuメモリアクセス解析装置
US7478190B2 (en) * 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures

Also Published As

Publication number Publication date
WO2010024071A1 (ja) 2010-03-04
US8555001B2 (en) 2013-10-08
US20110153950A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
US7461209B2 (en) Transient cache storage with discard function for disposable data
US9747218B2 (en) CPU security mechanisms employing thread-specific protection domains
JP4639233B2 (ja) プロセッサ・リソースの仮想化のためのシステムおよび方法
US8341357B2 (en) Pre-fetching for a sibling cache
US7805582B2 (en) Method of managing memory in multiprocessor system on chip
JP7340326B2 (ja) メンテナンス動作の実行
US7363435B1 (en) System and method for coherence prediction
JP2017505492A (ja) 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算
US8868835B2 (en) Cache control apparatus, and cache control method
WO2010024071A1 (ja) キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
JP6916782B2 (ja) 仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、コンピューティング・システム、およびコンピュータ・プログラム
JP2006513493A (ja) フリーバッファプールを使用することによるメモリの管理
JP5226010B2 (ja) 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
KR20110050457A (ko) 플래시 메모리 저장 장치에서 동적 메모리 할당에 의해 일어나는 자기 축출을 회피하는 방법
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
KR101083192B1 (ko) 정상 할당으로부터의 간섭이 없는 캐시 로킹
US8356141B2 (en) Identifying replacement memory pages from three page record lists
JP2007272681A (ja) キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法
JP2020095345A (ja) 演算処理装置、メモリ装置、及び演算処理装置の制御方法
JP4867451B2 (ja) キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JP2011141754A (ja) キャッシュメモリ
EP3330848B1 (en) Detection of stack overflow in a multithreaded processor
JP4792065B2 (ja) データ記憶方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20121002