当前位置: 首页 > news >正文

《超标量处理器设计》---Cache

1. cache存在的意义

  • 存储器的速度比处理器的速度慢
  • 时间相关性:如果一个数据被访问了,那么以后很有可能还是会被访问
  • 空间相关性:如果一个数据现在被访问了,那它周围的数据在以后很可能被访问

2. 超标量处理器里cache 的分类

一般是I-CACHE---- 缓存指令 D-CACHE------缓存数据 ,D-CACHE相对于I-CACHE来说最大的不同是有wite的场景

3. cache的三种实现方式

  • 直接映射
    每个数据块只能被映射到固定的位置
    eg:火车坐票,一人一票一位置
    直接映射主要用到三个参数,Tag,Index,Block offset
    举例:
    模拟访问过程(初始缓存为空)
    一共有4个set

    index:告诉 CPU 这次访问必须去缓存里哪一行(直接映射,地址到行号一一对应)。
    比如:0x40 和 0x1000_0040 虽然 Tag 不同,但索引都是 0,所以它们只能竞争同一个缓存行。
    tag:存放在该行里,用于验证当前行存储的到底是哪个主存块。
    访问时 CPU 取地址的 Index 找到行,取出该行的 Tag,与地址中的 Tag 比较:
    相等 → 命中(Hit),直接从该行读取数据(用 Offset 选字节)。
    不等 → 未命中(Miss),将新的数据块(含新 Tag)加载进来,旧数据被覆盖

因此,如果两个index相同的存储地址交互访问cache,就会一直导致cache缺失,影响执行效率

  • 全相连
    每个数据块可以被映射到任何一个空闲的位置
    eg:公交车,有票有位置,随便坐
    全相连相当于在整个cache中使用tag在寻址,因此寻找一个cacheline是否在cache中需要有大量的内容进行比较

  • 组相联
    将Cache分为若干个组(Set),每个组包含多个路(Way)。一个数据块可以放到该组内的任意一路(即组内的任意一个位置),但不能跨组。
    假设是2set 2way的cache

4. cahce的写入

write through:执行一条store指令,数据写到D-CACHE的同时也写到下级存储器中
non-write allocate:写未命中时不会将对应的内存行分配到缓存中。写操作会直接穿透缓存,更新到下一级内存,同时通常会使缓存中可能存在的旧副本无效(如果该行已在缓存中则更新,但不会新建一个缓存行)
一般write through和non-write allocate搭配使用
write back:当 CPU 执行写操作且数据已经hit时,只更新缓存中的数据,而不立即写入主存。只有当该缓存行被替换出缓存时,才将其修改过的内容(称为“脏数据”)写回到主存
write allocate:写miss时,把下级存储的整块数据搬到D-CACHE中,然后将修改的数据合并进去

实际修改的时word1,但是不用allocate直接把整个 cacheline写到下级存储会污染下级存储word0/word2/word3的data

5. cache的性能提升方式

  • 写缓存
    对于下级cache只有一个读写端口的情况,如果是write_back+write_allocate,读写口可能发生冲突,因此可以将脏状态的cacheline先写入write buffer,先从下级cache读出要写的cache,然后待下级存储的读写口idle,再写回去上次放到write buffer中的数据
  • 多级cache
  • victim cache
    这个和写缓存类似,会把最近被踢掉的cacheline放到victim cache中,以备用,比如2 way的cache,但是有三个数据都用同一个set,则3个cacheline会被不断替换掉,就可以把替换的那个放到victim cache,用的时候直接从victim cache里拿
  • prefetch
    特别是在I-CACHE中指令的取值比较有规律,所以用预取的方式提前把数据放到cache中
    prefetch分为硬件prefetch和sw prefetch
    硬件prefetch:针对指令fetch的cacheline,主动再多fetch几个cacheline
    软件prefetch:软件知道自己后面可能要用一些数据,就提前用指令把这段数据取出来

6.cache PERF验证时需要统计的参数

frequencyhit ratio统计窗口该窗口下的发包总数发包的BytesLatency(min/max/avg)折合成cyclle(min/max/avg)max outstanding
http://www.jsqmd.com/news/1025303/

相关文章:

  • BallonTranslator:让漫画翻译变得像聊天一样简单的AI工具
  • 2026 好用的素颜霜早八通勤实测|100 人 28 天横评榜单 黄皮自然抗暗沉优选 - 速递信息
  • 杭州购宠避坑指南:4家靠谱实体门店实测推荐 - 园友3800037
  • 2026银行秋招面试技巧班深度评测:4家头部机构对比,谁能帮你突破最后一关 - 互联网科技品牌测评
  • 2026年合肥留学机构怎么选?八家优选硬核测评行业头部梯队前五强 - 速递信息
  • 2026年北京刑事辩护律师避坑指南:5位经验丰富值得推荐 - 本地品牌推荐
  • 第29章:部署与服务化——Docker、K8s 与模型网关
  • 3步彻底改造:让Windows 11轻装上阵的终极方案
  • 猫抓浏览器插件:智能化资源嗅探与自动化下载解决方案
  • 2026银行网申修改机构横向评测:精准适配不同考生,破解网申死难题 - 互联网科技品牌测评
  • 合肥买猫狗靠谱推荐:萌宠宠园 宠物售卖,十年老牌资质齐全 - 园友3800037
  • 从零到爆款:3分钟让AI帮你搞定专业短视频创作
  • 无锡购宠避坑指南 7家正规实体繁育门店实测推荐 - 园友3800037
  • 使用MC工具同步MinIO
  • 6.16
  • AI漫剧AI短剧培训机构哪家好?首选莫瑶教育-12天AI漫剧+AI短剧全能实战集训班完整教学方案 - 教育信息网
  • 苏州靠谱宠物店实地测评,买猫买狗优选门店参考 - 园友3800037
  • matlab中的for特征
  • 横岗眼镜城有保障店铺核心维度解读 配镜前实用参考指南 - 速递信息
  • 北京卖表必看!全网高口碑奢侈品名表回收门店测评|本地6大商家客观排名 - 名奢变现站
  • Everspin的32Mb异步MRAM型号推荐
  • 智能体RAG客服系统4——middleware部分开发与agent主体开发
  • 2026年保洁外包选型指南:代表性服务商深度解析,优质保洁外包推荐 - 速递信息
  • 国内二维过渡金属碳化物MXene品牌综合实力排行 - 奔跑123
  • 长沙雨花区下水道疏通 2026 真实评测最新综合排行榜 - 居顺联家政疏通
  • Rescuezilla终极指南:3个简单步骤实现系统备份与恢复
  • 2026最新救命贴:Turnitin英文初稿降ai率实操,这套降aigc保姆级教程千万别错过 - 殷念写论文
  • 二手欧米茄出手别乱询价,2026南京正规回收门店报价透明实测 - 奢侈品回收评测
  • 闲置包包别乱卖!苏州回收内行秘籍已公开 - 奢侈品交易观察员
  • 终极指南:如何在Mac上快速制作Windows启动盘