JP4768054B2 - キャッシュ制御方法 - Google Patents
キャッシュ制御方法 Download PDFInfo
- Publication number
- JP4768054B2 JP4768054B2 JP2009148309A JP2009148309A JP4768054B2 JP 4768054 B2 JP4768054 B2 JP 4768054B2 JP 2009148309 A JP2009148309 A JP 2009148309A JP 2009148309 A JP2009148309 A JP 2009148309A JP 4768054 B2 JP4768054 B2 JP 4768054B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- cache
- value
- flag value
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
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)
Description
商用アプリケーション・サーバは、複数のCPUで複数のトランザクションを時分割などで並列に処理をするが、その処理が終わるとトランザクション中に生成されたメモリ・オブジェクトの多くは使用されない。そこで本発明では、トランザクション中に生成されるメモリ・オブジェクトについて、トランザクションに対応したトランザクション・フラグ値を付加しておく。トランザクション終了時には、対応するトランザクション・フラグ値を掃き出し候補の識別子として登録する。掃き出し時、キャッシュは掃き出し候補として登録されたトランザクション・フラグ値のキャッシュ・ラインを優先的に掃き出し候補として選択する。これにより、将来再利用される確率の小さいメモリ・オブジェクトによるキャッシュの汚染の影響を小さくすることができる。以下、添付図面を参照して、本発明の実施形態について詳細に説明する。なお説明は簡便のためCPUが1つの場合を説明するが実際にはマルチCPUでトランザクションが処理されることに注意されたい。
図1は、本実施形態のキャシュ制御の概要を説明する図である。システム100は本発明のキャッシュを有するコンピュータを表し、好ましくは複数のトランザクションが稼動するアプリケーション・サーバである。システム100はCPU110とこれに接続されたメモリ120、およびキャッシュ130を含む。メモリ120は主に主記憶メモリを指すが、外部記憶装置160を含めた仮想記憶と捉えることもできる。OS150およびその上で動作するアプリケーション140のプログラムコードも最終的には主記憶120に置かれCPUにフェッチされ解釈、実行される。CPU110とメモリ120、およびキャッシュ130はアドレス線とデータ線で接続される。
図2にキャッシュ130の構造を図示する。本発明は説明のために4ウェイ・セットアソシエイティブ(4-way set associative)キャッシュの構成を例示するが、それに限定されない。なお4ウェイ・セットアソシエイティブの回路構造は広く知られているので大まかな動作原理を説明する。この方式はキャッシュを分割し1つのインデックスに対して複数のタグおよびデータを持つ。まずCPUからのアドレスが入力されると入力アドレスを上位、中位、下位(オフセット)の3つに分ける。上位アドレスはキャッシュのタグアレイ(以下タグと省略)に対応する。中位アドレスはキャッシュ・ラインの選択に使用される。、下位のオフセットはキャッシュ・ライン内のアクセスされるワードの位置に対応する。例えばPOWER Processorの例では、キャッシュ・ラインのデータ長(すなわちライン長)は128バイト(1024ビット)で、アドレス下位のオフセットは、ライン内のワードのオフセットになる。入力アドレスに該当するデータがキャッシュに置かれていた場合(ヒットした場合)そのデータをCPUに送出する。本発明はフラグ領域、タグ、データから構成される1つのキャッシュ・ラインのうちフラグ210を拡張する。
以下、アプリケーション・サーバ100の動作をより詳細に説明する。アプリケーション・サーバ100において、外部記憶装置160に記憶されたアプリケーション140およびOS150のプログラムは、メイン・メモリ120に読み込まれ、CPU110がこれを実行する。アプリケーション・サーバ100は、ネットワークを介して HTTP 通信を行うためのサーバであり、クライアント170からHTTPリクエストを受け付け、これをアプリケーション140のプログラムがトランザクションとして処理する。その処理において多数のメモリ・オブジェクトがメモリ管理ライブラリ145によりメモリ120中に作成される。そしてこれらのメモリ・オブジェクトに関するデータはCPU110、キャッシュ130およびメモリ120間でやり取りされる。そのトランザクションの処理が終了すると結果を HTTP レスポンスとしてクライアント170に返送する。そして不要となった多数のメモリ・オブジェクトは破棄される。
オブジェクト生成時に、メモリ管理ライブラリ145がメモリ・オブジェクトを生成するとき、対応するメモリ領域をフェッチまたはプリフェッチする。このとき、トランザクションにアサインされたトランザクション・フラグ値<T>をキャッシュ内の対応するラインに付加する。例えば、CPUからの入力アドレスが<address>の場合、以下のようなプリフェッチ命令を使う。
Tprefetch <address>, <T>
ただし、生成されたオブジェクトがトランザクションをまたがって使われると想定できる場合は、トランザクション・フラグを付加しない(あるいはトランザクション・フラグ値を0にしておく)。すなわち、トランザクション終了時に掃き出し候補として登録されない。メモリ・オブジェクト生成以外の一般のメモリアクセスやプリフェッチはトランザクション・フラグを付加しない命令を使う。この場合、キャッシュ・ハードウェアはトランザクション・フラグ値0のアクセスとして扱う。すでにラインがキャッシュに存在する場合は(ヒット)、そのトランザクション・フラグ値は変化しない。ミスフェッチが発生した場合には、キャッシュ・ラインに0をトランザクション・フラグ値として付加する。すなわち、寿命の長いオブジェクトとみなす。ただし、一般のメモリアクセスやプリフェッチでも、トランザクションをまたがって使われないと想定できる場合は、トランザクション・フラグ付の命令を使ってアクセスまたはプリフェッチしてもよい。
トランザクション終了時には、そのトランザクション・フラグ値<T>を掃き出し候補としてキャッシュメモリに登録する。例えば、以下のような命令を使う。
Transient <T>
この命令は、引数としてとるトランザクション・フラグ値に対応する掃き出し候補フラグ(対応するトランザクション・ビットベクタ内のビット)を立てる。
図6にキャッシュ・ハードウェアの動作を示す。ステップ610でCPU110によるキャッシュ・アクセスがあったとする。ステップ615でキャッシュ・ヒットの場合、従来のキャッシュと同じ動作を行いステップ665へ進む。ステップ615でキャッシュがヒットしなかった場合、ステップ620で無効なラインがコングルエンス・セットにあるかどうか判断する。もしあれば処理はステップ635へ進み無効なラインを選択しステップ650へ進む。なければ処理はステップ625へ進む。
110 CPU
120 メモリ(主記憶)
130 キャッシュ
160 外部記憶装置
150 OS
140 アプリケーション
145 メモリ管理ライブラリ
170 クライアント
210 フラグ
310 有効フラグ
320 ダーティ・フラグ
340 トランザクション・フラグ値
330 LRU管理情報
350 トランザクション・ビットベクタ
360 カウンタ
Claims (8)
- キャッシュを制御する方法であって、
アプリケーションがトランザクションを処理中に生成されるメモリ・オブジェクトについて、トランザクションに対応した値を割り当てるステップと、
前記メモリ・オブジェクトがキャッシュに記憶されることに応じて、前記割り当てた値をキャッシュ・アレイのフラグ領域にトランザクション・フラグ値として付加するステップと、
前記トランザクション終了時に、対応するトランザクション・フラグ値を掃き出し候補として登録するステップと、
キャッシュの掃き出し時、前記掃き出し候補として登録されたトランザクション・フラグ値を有するキャッシュ・ラインを優先的に掃き出すステップと、
を含む、方法。 - 前記キャッシュが、さらに、トランザクション・フラグ値が取り得る値の個数を、その長さとする1つのビットベクタを有し、
前記掃き出し候補として登録するステップが、前記トランザクション・フラグ値に対応する前記ビットベクタ内の位置のビットを1にセットするステップである、請求項1の方法。 - 前記キャッシュが、さらに、前記ビットベクタの各ビットに対応するカウンタを有し、前記カウンタは前記キャッシュ・アレイの有効なライン数を表す、請求項2記載の方法。
- 前記トランザクションは、クライアントからの HTTP リクエストに応じて生じ、
トランザクションに対応した値を割り当てるステップが、前記アプリケーションは、前記 HTTP リクエストのURIとそのメソッドが同じ組み合わせのトランザクションについて同じ値を割り当てる、請求項1記載の方法。 - キャッシュ制御装置であって、
アプリケーションがトランザクションを処理中に生成されるメモリ・オブジェクトについて、前記トランザクションに対応した値を割り当てる手段と、
前記メモリ・オブジェクトがキャッシュに記憶されることに応じて、前記割り当てた値をキャッシュ・アレイのフラグ領域にトランザクション・フラグ値として付加する手段と、
前記トランザクション終了時に、対応するトランザクション・フラグ値を掃き出し候補として登録する手段と、
キャッシュの掃き出し時、前記掃き出し候補として登録されたトランザクション・フラグ値を有するキャッシュ・ラインを優先的に掃き出す手段と、
を含む、装置。 - 前記キャッシュが、さらに、トランザクション・フラグ値が取り得る値の個数を、その長さとする1つのビットベクタを有し、
前記掃き出し候補として登録する手段が、前記トランザクション・フラグ値に対応する前記ビットベクタ内の位置のビットを1にセットする手段である、請求項5の装置。 - 前記キャッシュが、さらに、前記ビットベクタの各ビットに対応するカウンタを有し、前記カウンタは前記キャッシュ・アレイの有効なライン数を表す、請求項6記載の装置。
- 前記トランザクションは、クライアントからの HTTP リクエストに応じて生じ、
前記トランザクションに対応した値を割り当てる手段が、前記アプリケーションは、前記 HTTP リクエストのURIとそのメソッドが同じ組み合わせのトランザクションについて同じ値を割り当てる手段である、請求項5記載の装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009148309A JP4768054B2 (ja) | 2009-06-23 | 2009-06-23 | キャッシュ制御方法 |
US12/814,532 US8484423B2 (en) | 2009-06-23 | 2010-06-14 | Method and apparatus for controlling cache using transaction flags |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009148309A JP4768054B2 (ja) | 2009-06-23 | 2009-06-23 | キャッシュ制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011008315A JP2011008315A (ja) | 2011-01-13 |
JP4768054B2 true JP4768054B2 (ja) | 2011-09-07 |
Family
ID=43355289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009148309A Expired - Fee Related JP4768054B2 (ja) | 2009-06-23 | 2009-06-23 | キャッシュ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8484423B2 (ja) |
JP (1) | JP4768054B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353829B2 (en) * | 2017-06-30 | 2019-07-16 | Dell Products, Lp | System and method to account for I/O read latency in processor caching algorithms |
JP2022144314A (ja) | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム及びストレージ装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59160251A (ja) * | 1983-03-02 | 1984-09-10 | Fujitsu Ltd | デ−タベ−ス処理システムにおける空きスペ−ス管理制御方式 |
JPH05216765A (ja) * | 1992-02-06 | 1993-08-27 | Hitachi Ltd | 階層バッファ記憶装置 |
JPH09101916A (ja) * | 1995-10-06 | 1997-04-15 | Fujitsu Ltd | マルチプロセス処理装置 |
JP3301359B2 (ja) * | 1997-09-30 | 2002-07-15 | 日本電気株式会社 | リスト管理システム、方法及び記憶媒体 |
JPH11259362A (ja) * | 1998-03-13 | 1999-09-24 | Nec Corp | キャッシュメモリ制御方法及び装置 |
JP2001290704A (ja) * | 2000-04-06 | 2001-10-19 | Nec Microsystems Ltd | マルチプロセス制御装置及びマルチプロセス制御方法 |
JP4104281B2 (ja) * | 2000-10-25 | 2008-06-18 | 株式会社日立製作所 | データベースアクセス方法 |
JP2002244869A (ja) * | 2001-02-19 | 2002-08-30 | Hitachi Ltd | メモリ管理装置 |
US6546473B2 (en) * | 2001-05-29 | 2003-04-08 | Hewlett-Packard Company | Method for cache replacement of web documents |
JP3981070B2 (ja) * | 2003-12-26 | 2007-09-26 | 株式会社東芝 | キャッシュリプレース装置及びキャッシュリプレース方法 |
JP4347196B2 (ja) * | 2004-11-01 | 2009-10-21 | 株式会社日立製作所 | コネクション割り当て方法、装置及びプログラム |
US20060101208A1 (en) | 2004-11-09 | 2006-05-11 | Intel Corporation | Method and apparatus for handling non-temporal memory accesses in a cache |
KR20070093452A (ko) | 2005-04-08 | 2007-09-18 | 마쯔시다덴기산교 가부시키가이샤 | 캐시 메모리 시스템 및 그 제어 방법 |
-
2009
- 2009-06-23 JP JP2009148309A patent/JP4768054B2/ja not_active Expired - Fee Related
-
2010
- 2010-06-14 US US12/814,532 patent/US8484423B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20100325361A1 (en) | 2010-12-23 |
JP2011008315A (ja) | 2011-01-13 |
US8484423B2 (en) | 2013-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963387B2 (en) | Methods of cache preloading on a partition or a context switch | |
US8935478B2 (en) | Variable cache line size management | |
US8490065B2 (en) | Method and apparatus for software-assisted data cache and prefetch control | |
US7516279B2 (en) | Method using stream prefetching history to improve data prefetching performance. | |
KR102470184B1 (ko) | 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택 | |
JP7232175B2 (ja) | キャッシュメモリのデータ置換方法及びプロセッサ | |
JP2009098934A (ja) | プロセッサ及びキャッシュメモリ | |
KR20120025612A (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
JP2005302034A (ja) | メモリを管理するためのシステムおよび方法 | |
US8856453B2 (en) | Persistent prefetch data stream settings | |
WO2005088455A2 (en) | Cache memory prefetcher | |
US20110314227A1 (en) | Horizontal Cache Persistence In A Multi-Compute Node, Symmetric Multiprocessing Computer | |
KR20210035311A (ko) | 프로세서의 필터링된 분기 예측 구조 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
JP4768054B2 (ja) | キャッシュ制御方法 | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
JP2005149497A (ja) | 動的頻発命令ライン・キャッシュ | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
CN111104054A (zh) | 管理输入/输出操作的方法、装置和计算机程序产品 | |
JP2022046413A (ja) | 記憶デバイスのための改良された先読み能力 | |
JP2006285727A (ja) | キャッシュメモリ装置 | |
WO2015047482A1 (en) | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments | |
CN118796274A (zh) | 数据预取方法及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110513 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110531 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110615 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140624 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |