分享好友 最新动态首页 最新动态分类 切换频道
cpu cache line 原理
2024-12-26 11:38
cpu的cache通常较大, 比如 128KB, 被划分为多个有固定大小的cache line, cache line通常是32Byte或64Byte.

cpu cache line 原理


CPU内部的cache种类, 至少有三种
1) 指令cache
2) 数据cache 通常有多级 multi-level
3) TLB 加速虚拟地址to物理地址转换


cache entry (cache条目)
包含如下部分
1) cache line : 从主存一次copy的数据大小)
2) tag : 标记cache line对应的主存的地址
3) falg : 标记当前cache line是否invalid, 如果是数据cache, 还有是否dirty


cpu访问主存的规律
1) cpu从来都不直接访问主存, 都是通过cache间接访问主存
2) 每次需要访问主存时, 遍历一遍全部cache line, 查找主存的地址是否在某个cache line中.
3) 如果cache中没有找到, 则分配一个新的cache entry, 把主存的内存copy到cache line中, 再从cache line中读取.


cache中包含的cache entry条目有限, 所以, 必须有合适的cache淘汰策略
一般使用的是LRU策略.
将一些主存区域标记为non-cacheble, 可以提高cache命中率, 降低没用的cache


回写策略
cache中的数据更新后,需要回写到主存, 回写的时机有多种
1) 每次更新都回写. write-through cache
2) 更新后不回写,标记为dirty, 仅当cache entry被evict时才回写
3) 更新后, 把cache entry送如回写队列, 待队列收集到多个entry时批量回写.


cache一致性问题
有两种情况可能导致cache中的数据过期
1) DMA, 有其他设备直接更新主存的数据
2) SMP, 同一个cache line存在多个CPU各自的cache中. 其中一个CPU对其进行了更新.


cpu stall cpu失速
指的是当cache miss时(特别是read cache miss), cpu在等待数据从内存读进去cache中期间, 没事可做.
解决此问题的方法有
1) 超线程技术. CPU在硬件层面, 把一个CPU模拟成两个CPU, 在上层看来是两个CPU. 并发的执行两个线程. 这样当一个线程因cache miss在等待时, 另一个线程可以执行.


主存的一个地址, 需要被映射进哪个cache line? (术语:Associativity)
根据映射策略的不同而不同


1) 最笨的, 一个地址可被映射进任意cache line (fully associative)
   带来的问题是, 当寻找一个地址是否已经被cache时, 需要遍历每一个cache line来寻找, 这个代价不可接受.
   就像停车位可以大家随便停一样, 停的时候简单的, 找车的时候需要一个一个停车位的找了.
   你想下, cpu想知道一个地址是否已经在cache中了, 需要把全部cache line找一边, 那该有多慢?


2) Direct Mapped Cache  (相当于1-way associative)
   这个就是相当于hash了, 每个地址能被映射到的cache line是固定的. 
   每个人的停车位是固定分配好的. 可以直接找到.
   缺点是, 因为人多车少, 很可能几个人争用同一个车位, 导致cache 淘汰频繁. 需要频繁的从主存读取数据到cache, 这个代价也较高.
   由于cache中cache line的个数都是2的指数个. 那么, hash算法就很简单了, 不用取模, 直接把内存地址的某几个bit位拿出来即可. 比如cache line有128(2^7)个, cache line的大小是32(2^5)字节, 
   那么一个32位地址的 0~4位作为cache line内部偏移, 5~11位作为cache line的索引即可. 剩下的bit12~31作为当前cache line的tag. tag的作用时, 当有另外一个地址也映射到同一个cache line时, tag用来比较两个地址是不是同一个地址. 毕竟同一个cache-line可以对应的内存的位置非常多个的.


3) 2-way associative
   是fully associative和Direct Mapped Cache的折中.
   2-way, 每一个人可以有两个停车位, 这样当一个停车位被占了的时候, 还有机会寻找另外一个. 虽然人数众多, 但同时来找停车位的人并不多. (相当于很多人的车在外面,没有开回来)
   所以, 2-way associative近似的相当于有了2倍大小的cache, 使用Direct Mapped Cache策略.
组相连方式

注意, 这图只统计了cache miss率, 很显然full-associative是做好的. 但是full-associative导致的判断一个地址是否在cache中的代价是非常昂贵的.所以, 生产环境一般都是2-way associative
======================================================
最新文章
ChinaJoy新闻晚知道 I 12月13日
​​腾讯荣获 2024 年度游戏十强优秀游戏科技创新企业。鹰角网络荣获 2024 年度游戏十强优秀“走出去”游戏企业。游戏科学荣获 2024 年度游戏十强优秀游戏研发团队。莉莉丝游戏荣获 2024 年度游戏十强优秀游戏运营企业。《鸣潮》荣获 2024
ai写ppt!一句话生成ppt,思维导图一键转ppt,办公必备!
如果要说时下职场中最受欢迎的ai工具,那一定非ai写ppt莫属,即使用各类基于AI人工智能技术的软件,来帮我们直接生成ppt,免去制作PPT的各个中间环节,包括:梳理框架、搜集素材、搜集图片、排版美化等,彻底解放双手!有了各类ai写ppt工具
2024年第50周热搜农产品行情:车厘子热度涨势喜人,牛肉价格破稳上涨,草莓行情高位回落
1.搜索热度综合排名第50周,惠农网平台搜索热度排名前15的农产品主要分布在畜禽肉蛋(5)、水果(5)、蔬菜(3)和(2)等4个大类,相较于第49周,畜禽肉蛋下的品类数量增加1个,蔬菜下的品类数量减少1个。从环比增幅来看,第50周排名前15
25款网盘搜索引擎大全
1.盘多多 http://www.panduoduo.net/ 2.西林街 http://www.xilinjie.com/ 3.胖次网盘搜索引擎 http://www.panc.cc/ 4.爱挖盘:爱挖盘-网盘搜索,就是爱挖盘! 5.盘搜 http://www.pansou.com 6.网盘搜 http://www.wangpan
2024年Python最全Python爬虫以及数据可视化分析!这才是零基础入门案例!(1)
pl = ‘%.1f’ % (float(pl) / 10000)else: pl = re.search(r’d*(.)?d’, pl).group() review.append(float(pl)) print(review)for tag in soup.find_all(‘div’, class_=‘detail’): sc = tag.find(‘span’, class_&#
3.宝妈垂直平台引流
宝妈们经常会在社交媒体上寻找儿童相关的信息和产品,因此你可以通过建立微信公众号、微博账号、抖音账号等社交媒体账号来扩大自己的宣传渠道。在账号上发布有关儿童产品的资讯、优惠信息等,吸引宝妈们的关注和兴趣。宝妈群可以是微信群也
DNF助手签到位置详解:轻松掌握每日签到攻略,助力你的游戏之旅
在《地下城与勇士》(DNF)这款深受玩家喜爱的游戏中,DNF助手成为了玩家们不可或缺的辅助工具。其中,每日签到更是许多玩家关注的重点。本文将详细解析DNF助手中的签到位置,帮助你轻松掌握每日签到攻略,为你的游戏之旅增添助力。一DNF助
36漫画破解广告版下载
36漫画是一款完全免费的小说漫画阅读软件,无需任何费用。且该软件中还极为贴心的将漫画板块可小说板块进行了融合,让用户在一个软件中就能够享受到两个软件的待遇。并且该软件中无论是小说还是漫画都极为丰富,无论是什么类型的漫画和小说
AI面試官來了你准備好了嗎?與線下面試有何差別掃碼閱讀手機版
請先做個自我介紹,讓我更充分地了解你的實際情況,如:姓名、年齡、學校、項目實習的工作經驗、專業技能等。好的,我思思的回答剛開了個頭,就聽到屏幕那邊開始倒數3、2、1。倒數結束後,纔是應聘者的自我介紹時間。顯然,第一次面對一個
Adobe股价重挫14%,AI工具发展迟缓引发市场担忧
近日,Adobe公司的股价遭遇重大下跌,当地时间12月13日,其股价下滑了14%,创下自2022年9月以来的最大跌幅。这一下降引发了市场的广泛关注,尤其是在公司发布了令人失望的收入预期后。Adobe在其最新的财报中表示,预计2025年第一财季销售额
相关文章
推荐文章
发表评论
0评