Skip to content

Commit 1bd2db3

Browse files
committed
cache_obj inline misc metadata
1 parent b155f6c commit 1bd2db3

File tree

22 files changed

+63
-74
lines changed

22 files changed

+63
-74
lines changed

libCacheSim/cache/cache.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ cache_obj_t *cache_find_base(cache_t *cache, const request_t *req,
201201
#endif
202202

203203
if (update_cache) {
204-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
205-
cache_obj->misc.freq += 1;
204+
cache_obj->next_access_vtime = req->next_access_vtime;
205+
cache_obj->freq += 1;
206206
}
207207
}
208208

@@ -290,8 +290,8 @@ cache_obj_t *cache_insert_base(cache_t *cache, const request_t *req) {
290290
cache_obj->create_time = CURR_TIME(cache, req);
291291
#endif
292292

293-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
294-
cache_obj->misc.freq = 0;
293+
cache_obj->next_access_vtime = req->next_access_vtime;
294+
cache_obj->freq = 0;
295295

296296
return cache_obj;
297297
}

libCacheSim/cache/eviction/ARC.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,9 @@ static cache_obj_t *ARC_find(cache_t *cache, const request_t *req,
277277
prepend_obj_to_head(&params->L2_data_head, &params->L2_data_tail, obj);
278278

279279
#if defined(TRACK_DEMOTION)
280-
obj->misc.next_access_vtime = req->next_access_vtime;
280+
obj->next_access_vtime = req->next_access_vtime;
281281
printf("%ld keep %ld %ld\n", cache->n_req, obj->create_time,
282-
obj->misc.next_access_vtime);
282+
obj->next_access_vtime);
283283
#endif
284284

285285
params->L1_data_size -= obj->obj_size + cache->obj_md_size;
@@ -450,7 +450,7 @@ static void _ARC_evict_L1_data(cache_t *cache, const request_t *req) {
450450

451451
#if defined(TRACK_DEMOTION)
452452
printf("%ld demote %ld %ld\n", cache->n_req, obj->create_time,
453-
obj->misc.next_access_vtime);
453+
obj->next_access_vtime);
454454
#endif
455455

456456
cache_evict_base(cache, obj, false);
@@ -469,7 +469,7 @@ static void _ARC_evict_L1_data_no_ghost(cache_t *cache, const request_t *req) {
469469

470470
#if defined(TRACK_DEMOTION)
471471
printf("%ld demote %ld %ld\n", cache->n_req, obj->create_time,
472-
obj->misc.next_access_vtime);
472+
obj->next_access_vtime);
473473
#endif
474474

475475
remove_obj_from_list(&params->L1_data_head, &params->L1_data_tail, obj);

libCacheSim/cache/eviction/ARCv0.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ static cache_obj_t *ARCv0_find(cache_t *cache, const request_t *req,
255255
} else {
256256
// cache hit, case I: x in L1_data or L2_data
257257
if (obj_t1 != NULL) {
258-
obj_t1->misc.freq = 1;
258+
obj_t1->freq = 1;
259259
#ifndef LAZY_PROMOTION
260260
// move to LRU2
261261
params->T1->remove(params->T1, obj_t1->obj_id);
@@ -297,7 +297,6 @@ static cache_obj_t *ARCv0_insert(cache_t *cache, const request_t *req) {
297297
} else {
298298
// insert to L1 data head
299299
obj = params->T1->insert(params->T1, req);
300-
obj->misc.freq = 0;
301300
}
302301

303302
return obj;
@@ -421,7 +420,7 @@ static void _ARCv0_replace(cache_t *cache, const request_t *req) {
421420
DEBUG_ASSERT(obj != NULL);
422421
copy_cache_obj_to_request(params->req_local, obj);
423422
#ifdef LAZY_PROMOTION
424-
if (obj->misc.freq > 0) {
423+
if (obj->freq > 0) {
425424
params->T2->get(params->T2, params->req_local);
426425
} else {
427426
params->B1->get(params->B1, params->req_local);
@@ -490,7 +489,7 @@ static void _ARCv0_evict_miss_on_all_queues(cache_t *cache,
490489
cache_obj_t *obj = params->T1->to_evict(params->T1, req);
491490
DEBUG_ASSERT(obj != NULL);
492491
copy_cache_obj_to_request(params->req_local, obj);
493-
if (obj->misc.freq > 0) {
492+
if (obj->freq > 0) {
494493
params->T2->get(params->T2, params->req_local);
495494
}
496495
params->T1->evict(params->T1, req);

libCacheSim/cache/eviction/FIFO_Merge.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,8 @@ static cache_obj_t *FIFO_Merge_find(cache_t *cache, const request_t *req,
189189
cache_obj_t *cache_obj = cache_find_base(cache, req, update_cache);
190190

191191
if (cache_obj && update_cache) {
192-
cache_obj->FIFO_Merge.freq++;
193-
192+
cache_obj->FIFO_Merge.freq += 1;
194193
cache_obj->FIFO_Merge.last_access_vtime = cache->n_req;
195-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
196194
}
197195

198196
return cache_obj;
@@ -216,7 +214,6 @@ static cache_obj_t *FIFO_Merge_insert(cache_t *cache, const request_t *req) {
216214
prepend_obj_to_head(&params->q_head, &params->q_tail, cache_obj);
217215
cache_obj->FIFO_Merge.freq = 0;
218216
cache_obj->FIFO_Merge.last_access_vtime = cache->n_req;
219-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
220217

221218
return cache_obj;
222219
}
@@ -418,10 +415,10 @@ static inline int cmp_list_node(const void *a0, const void *b0) {
418415
}
419416

420417
static inline double belady_metric(cache_t *cache, cache_obj_t *cache_obj) {
421-
if (cache_obj->misc.next_access_vtime == -1 ||
422-
cache_obj->misc.next_access_vtime == INT64_MAX)
418+
if (cache_obj->next_access_vtime == -1 ||
419+
cache_obj->next_access_vtime == INT64_MAX)
423420
return -1;
424-
return 1.0e12 / (cache_obj->misc.next_access_vtime - cache->n_req) /
421+
return 1.0e12 / (cache_obj->next_access_vtime - cache->n_req) /
425422
(double)cache_obj->obj_size;
426423
}
427424

libCacheSim/cache/eviction/FIFO_Reinsertion.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ static cache_obj_t *FIFO_Reinsertion_find(cache_t *cache, const request_t *req,
200200
if (cache_obj && update_cache) {
201201
cache_obj->FIFO_Reinsertion.freq++;
202202
cache_obj->FIFO_Reinsertion.last_access_vtime = cache->n_req;
203-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
204203
}
205204

206205
return cache_obj;
@@ -227,7 +226,6 @@ static cache_obj_t *FIFO_Reinsertion_insert(cache_t *cache,
227226

228227
obj->FIFO_Reinsertion.freq = 0;
229228
obj->FIFO_Reinsertion.last_access_vtime = cache->n_req;
230-
obj->misc.next_access_vtime = req->next_access_vtime;
231229

232230
return obj;
233231
}
@@ -440,10 +438,10 @@ static inline int cmp_list_node(const void *a0, const void *b0) {
440438
}
441439

442440
static inline double belady_metric(cache_t *cache, cache_obj_t *cache_obj) {
443-
if (cache_obj->misc.next_access_vtime == -1 ||
444-
cache_obj->misc.next_access_vtime == INT64_MAX)
441+
if (cache_obj->next_access_vtime == -1 ||
442+
cache_obj->next_access_vtime == INT64_MAX)
445443
return -1;
446-
return 1.0e12 / (cache_obj->misc.next_access_vtime - cache->n_req) /
444+
return 1.0e12 / (cache_obj->next_access_vtime - cache->n_req) /
447445
(double)cache_obj->obj_size;
448446
}
449447

libCacheSim/cache/eviction/GLCache/obj.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ static inline void obj_init(cache_t *cache, const request_t *req,
1212
cache_obj->GLCache.last_access_vtime = params->curr_vtime;
1313
cache_obj->GLCache.in_cache = 1;
1414
cache_obj->GLCache.seen_after_snapshot = 0;
15-
cache_obj->misc.next_access_vtime = req->next_access_vtime;
15+
cache_obj->next_access_vtime = req->next_access_vtime;
1616

1717
cache_obj->GLCache.segment = seg;
1818
cache_obj->GLCache.idx_in_segment = seg->n_obj;
@@ -25,7 +25,7 @@ static inline int64_t obj_age(GLCache_params_t *params, cache_obj_t *obj) {
2525
/* some internal state update when an object is requested */
2626
static inline void obj_hit_update(GLCache_params_t *params, cache_obj_t *obj,
2727
const request_t *req) {
28-
obj->misc.next_access_vtime = req->next_access_vtime;
28+
obj->next_access_vtime = req->next_access_vtime;
2929
obj->GLCache.last_access_rtime = params->curr_rtime;
3030
obj->GLCache.last_access_vtime = params->curr_vtime;
3131
obj->GLCache.freq += 1;
@@ -71,14 +71,14 @@ static inline double cal_obj_score(GLCache_params_t *params,
7171
(curr_rtime - cache_obj->GLCache.last_access_rtime);
7272

7373
} else if (score_type == OBJ_SCORE_ORACLE) {
74-
if (cache_obj->misc.next_access_vtime == -1 ||
75-
cache_obj->misc.next_access_vtime == INT64_MAX) {
74+
if (cache_obj->next_access_vtime == -1 ||
75+
cache_obj->next_access_vtime == INT64_MAX) {
7676
return 0;
7777
}
7878

79-
DEBUG_ASSERT(cache_obj->misc.next_access_vtime > curr_vtime);
79+
DEBUG_ASSERT(cache_obj->next_access_vtime > curr_vtime);
8080
return 1.0e8 / (double)cache_obj->obj_size /
81-
(double)(cache_obj->misc.next_access_vtime - curr_vtime);
81+
(double)(cache_obj->next_access_vtime - curr_vtime);
8282

8383
} else {
8484
printf("unknown cache type %d\n", score_type);

libCacheSim/cache/eviction/GLCache/segment.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ double cal_seg_utility(cache_t *cache, segment_t *seg, bool oracle_obj_sel) {
230230
static int count_n_obj_reuse(cache_t *cache, segment_t *seg) {
231231
int n = 0;
232232
for (int i = 0; i < seg->n_obj; i++) {
233-
if (seg->objs[i].misc.next_access_vtime > 0) {
233+
if (seg->objs[i].next_access_vtime > 0) {
234234
n += 1;
235235
}
236236
}

libCacheSim/cache/eviction/LRU.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ static void LRU_evict(cache_t *cache, const request_t *req) {
213213
#if defined(TRACK_DEMOTION)
214214
if (cache->track_demotion)
215215
printf("%ld demote %ld %ld\n", cache->n_req, obj_to_evict->create_time,
216-
obj_to_evict->misc.next_access_vtime);
216+
obj_to_evict->next_access_vtime);
217217
#endif
218218

219219
cache_evict_base(cache, obj_to_evict, true);

libCacheSim/cache/eviction/LRUProb.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,6 @@ static cache_obj_t *LRU_Prob_find(cache_t *cache, const request_t *req,
149149

150150
cache_obj_t *cached_obj = cache_find_base(cache, req, update_cache);
151151
if (cached_obj != NULL && likely(update_cache)) {
152-
cached_obj->misc.freq += 1;
153-
cached_obj->misc.next_access_vtime = req->next_access_vtime;
154-
155152
if (next_rand() % params->threshold == 0) {
156153
move_obj_to_head(&params->q_head, &params->q_tail, cached_obj);
157154
}

libCacheSim/cache/eviction/LeCaR.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,9 +362,9 @@ static cache_obj_t *LeCaR_to_evict(cache_t *cache, const request_t *req) {
362362

363363
// we divide by 1,000,000 to avoid overflow when next_access_vtime is
364364
// INT64_MAX
365-
double lru_belady_metric = lru_choice->misc.next_access_vtime - cache->n_req;
365+
double lru_belady_metric = lru_choice->next_access_vtime - cache->n_req;
366366
lru_belady_metric = lru_belady_metric / 1000000.0 * lru_choice->obj_size;
367-
double lfu_belady_metric = lfu_choice->misc.next_access_vtime - cache->n_req;
367+
double lfu_belady_metric = lfu_choice->next_access_vtime - cache->n_req;
368368
lfu_belady_metric = lfu_belady_metric / 1000000.0 * lfu_choice->obj_size;
369369

370370
if (lru_belady_metric > lfu_belady_metric) {
@@ -394,9 +394,9 @@ static void LeCaR_evict(cache_t *cache, const request_t *req) {
394394

395395
// we divide by 1,000,000 to avoid overflow when next_access_vtime is
396396
// INT64_MAX
397-
double lru_belady_metric = lru_choice->misc.next_access_vtime - cache->n_req;
397+
double lru_belady_metric = lru_choice->next_access_vtime - cache->n_req;
398398
lru_belady_metric = lru_belady_metric / 1000000.0 * lru_choice->obj_size;
399-
double lfu_belady_metric = lfu_choice->misc.next_access_vtime - cache->n_req;
399+
double lfu_belady_metric = lfu_choice->next_access_vtime - cache->n_req;
400400
lfu_belady_metric = lfu_belady_metric / 1000000.0 * lfu_choice->obj_size;
401401

402402
if (lru_belady_metric > lfu_belady_metric) {

0 commit comments

Comments
 (0)