GPGPU-Sim Notes

GPGPU-Sim Notes —— Cache

GPGPU-Sim笔记整理 cache

gpgpu-cache.cc

本文件主要分为三部分:

一;tag array

二;MSHR

三;CACHE

.h文件

主要定义了

枚举类型

名称 定义 内容
cache_block_state 定义cache行的状态 INVALID(无效的),RESERVED(保留) VALID(有效),MODIFIED(修改的,dirty)
cache_request_status cache请求的状态 HIT/MISSHIT_RESERVED(命中保留,表示数据在L2 -INCT队列中)RESERVATION_FAIL
cache_event 访问cache的事件 WRITE_BACK_REQUEST_SENT,写回请求READ_REQUEST_SENT, 读请求WRITE_REQUEST_SENT 写请求
replacement_policy_t cache 替换策略 LRU, FIFO,
write_policy_t cache 写策略 READ_ONLY, 只读 WRITE_BACK, 写回 WRITE_THROUGH,写直达 WRITE_EVICT, 写剔除 LOCAL_WB_GLOBAL_WT 局部写回 全局写直达
allocation_policy_t 分配策略在miss时,是否将数据填入cache。 ON_MISS, 不将数据填入cache ON_FILL 将数据填入cache
mshr_config_t MSHR 的配置方法 TEX_FIFO,用于texture(纹理cache)ASSOC//用于普通cache
set_index_function 用于set 索引号的方法 FERMI_HASH_SET_FUNCTION = 0,费米哈希设置 LINEAR_SET_FUNCTION, 线性设置 CUSTOM_SET_FUNCTION ?????

结构体

cache_block_t cache块结构 new_addr_type m_tag; new_addr_type m_block_addr; unsigned m_alloc_time; unsigned m_last_access_time; unsigned m_label; unsigned m_eacnt; unsigned m_lru; unsigned m_fill_time; cache_block_state m_status;
cache_sub_stats cache统计信息 accessmisspending hitreservation
extra_mf_fields 在data_cache 类的在texture_cachel类中也有不知道啥意思 bool m_valid; new_addr_type m_block_addr; unsigned m_cache_index; unsigned m_data_size;
fragment_entry texture_cache mem_fetch *m_request; // request informationunsigned m_cache_index; where to look for databool m_miss; // true if sent memory requestunsigned m_data_size;
rob_entry texture_cache bool m_ready;unsigned m_time; // which cycle did this entry become ready?unsigned m_index; // where in cache should block be placed?mem_fetch *m_request;new_addr_type m_block_addr;
data_block texture_cache bool m_valid; new_addr_type m_block_addr;
extra_mf_fields texture_cache bool m_valid; unsigned m_rob_index;

tag_array()

类名 描述 重点说明
cache_config cache配置的类 主要作用是初始化cache;读取配置文件gpgpu.config中的参数重要函数init():读入配置参数,初始化cacheset_index():设置cache块索引tag():读取tag位
l1d_cache_configl2_cache_config 继承cache_config
tag_array 详见cache基础 重要函数;probe():查找cache中的块实现LRU策略access():实现cache 策略的主要功能函数fill() 实现对cache的填充flush()冲刷,清空
mshr_table MSHR表,用来存放miss轨迹的 重要函数:probefulladd
cache_stats cache统计信息的类 主要统计cache的访问次数,命中率利用率等等
cache_t 所有cache的父类 继承关系详见cache继承关系
baseline_cache

1.理解一下cache结构tag

For generality, the tag includes both index and tag. This allows for more complex set index calculations that can result in different indexes mapping to the same set, thus the full tag + index is required to check for hit/miss. Tag is now identical to the block address.

tag(标记字段)通常包括index(索引)和tag(标记)。这样允许我们设置更复杂的索引计算,会导致不同的索引映射到同一个set(cache存储单元)里,因此满的 tag+index 需要进行检查是否命中。现在tag和block地址是相同的。

cache 继承关系

发表评论

电子邮件地址不会被公开。 必填项已用*标注