范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Cache工作原理Cache一致性,你想知道的都在这里

  可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即  LRU缓存机制 ,又顺手查了一下LRU缓存机制 最近有哪些企业喜欢考察,超级大热门!
  今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到。
  关于 Cache 这方面内容图比较多,不想自己画了,所以图都来自《Computer Architecture : A Quantitative Approach》。
  这是一本体系架构方面的神书,推荐大家看一下。
  本文主要内容如下,基本涉及了Cache的概念,工作原理,以及保持一致性的入门内容。
  1、为什么需要 Cache1.1 为什么需要 Cache
  我们首先从一张图来开始讲为什么需要 Cache.
  上图是 CPU 性能和 Memory 存储器访问性能的发展。
  我们可以看到,随着工艺和设计的演进,CPU 计算性能其实发生了翻天覆地的变化,但是DRAM存储性能的发展没有那么快。
  所以造成了一个问题,存储限制了计算的发展。
  容量与速度不可兼得。
  如何解决这个问题呢? 可以从计算访问数据的规律入手 。
  我们随便贴段代码:  for (j = 0; j < 100; j = j + 1)     for( i = 0; i < 5000; i = i + 1)         x[i][j] = 2 * x[i][j];
  可以看到,由于大量循环的存在,我们访问的数据其实在内存中的位置是相近的。
  换句专业点的话说,我们访问的数据有局部性。
  我们只需要将这些数据放入一个小而快的存储中,这样就可以快速访问相关数据了。
  总结起来,Cache是为了给CPU提供高速存储访问,利用数据局部性而设计的小存储单元。  1.2 实际系统中的 Cache
  我们展示一下实际系统中的 Cache 。
  如上图所示,整个系统的存储架构包括了 CPU 的寄存器,L1/L2/L3 CACHE,DRAM 和硬盘。
  数据访问时先找寄存器,寄存器里没有找 L1 Cache, L1 Cache 里没有找 L2 Cache 依次类推,最后找到硬盘中。
  同时,我们可以看到,速度与存储容量的折衷关系。容量越小,访问速度越快!
  其中,一个概念需要搞清楚。
  CPU 和 Cache 是 word 传输的,而 Cache 到主存是以块传输的,一块大约 64Byte 。
  现有 SOC 中的 Cache 一般组成如下。  1.3 Cache 的分类
  Cache按照不同标准分类可以分为若干类。  按照数据类型划分:I-Cache与D-Cache。其中I-Cache负责放置指令,D-Cache负责方式数据。两者最大的不同是D-Cache里的数据可以写回,I-Cache是只读的。  按照大小划分:分为small Cache和large Cache。没路组(后文组相连介绍)<4KB叫small Cache, 多用于L1 Cache, 大于4KB叫large Cache。多用于L2及其他Cache.  按照位置划分:Inner Cache和Outer Cache。一般独属于CPU微架构的叫Inner Cache, 例如上图的L1 L2 CACHE。不属于CPU微架构的叫outer Cache.  按照数据关系划分:Inclusive/exclusive Cache: 下级Cache包含上级的数据叫inclusive Cache。不包含叫exclusive Cache。举个例子,L3 Cache里有L2 Cache的数据,则L2 Cache叫exclusive Cache。  2、Cache的工作原理
  要讲清楚 Cache 的工作原理,需要回答 4 个问题:  数据如何放置  数据如何查询  数据如何被替换  如果发生了写操作,Cache如何处理  2.1 数据如何放置
  这个问题也好解决。我们举个简单的栗子来说明问题。
  假设我们主存中有 32 个块,而我们的 Cache 一共有 8 个 Cache 行( 一个 Cache 行放一行数据)。
  假设我们要把主存中的块 12 放到 Cache 里。
  那么应该放到 Cache 里什么位置呢?
  三种方法:  全相连(Fully associative)。可以放在Cache的任何位置。  直接映射(Direct mapped)。只允许放在Cache的某一行。比如12 mod 8  组相连(set associative)。可以放在Cache的某几行。例如2路组相连,一共有4组,所以可以放在0,1位置中的一个。
  可以看到,全相连和直接映射是Cache组相连的两种极端情况。
  不同的放置方式主要影响有两点:
  1、组相连组数越大,比较电路就越大,但Cache利用率更高,Cache miss发生的概率小。2、组相连数目变小,Cache经常发生替换,但是比较电路比较小。
  这也好理解,内存中的块在Cache中可放置的位置多,自然找起来就麻烦。  2.2 如何在Cache中找数据
  其实找数据就是一个比对过程,如下图所示。
  我们地址都以 Byte 为单位的。
  但主存于Cache之间的数据交换单位都是块(block,现代Cache一般一个block大约64Byte)。所以地址对最后几位是block offset。
  由于我们采用了组相连,则还有几个比特代表的是存储到了哪个组。
  组内放着若干数据,我们需要比较Tag, 如果组内有Tag出现,则说明我们访问的数据在缓存中,可以开心的使用了。
  比如举个 2 路组相连的例子,如下图所示。
  T表示Tag。直接比较Tag,就能得知是不是命中了。如果命中了,则根据index(组号)将对应的块取出来即可。
  如上图所示。用index选出位于组相连的哪个组。然后并行的比较Tag, 判断最后是不是在Cache中。上图是2路组相连,也就是说两组并行比较。
  那如果不在缓存中呢?这就涉及到另一个问题。
  不在缓存中如何替换 Cache ?  2.3 如何替换Cache中的数据
  Cache中的数据如何被替换的?这个就比较简单直接。
  随机替换。如果发生Cache miss里随机替换掉一块。  Least recently used. LRU。最近使用的块最后替换。  First in, first out (FIFO), 先进先出。
  实际上第一个不怎么使用,LRU 和 FIFO 根据实际情况选择即可。
  Cache 在什么时候数据会被替换内?也有几种策略。  不在本 Cache 替换。如果Cache miss了,直接转发访问地址到主存,取到的数据不会写到Cache.  在读MISS时替换。如果读的时候Cache里没有该数据,则从主存读取该数据后写入Cache。  在写MISS时替换。如果写的时候Cache里没有该数据,则将本数据调入Cache再写。  2.4 如果发生了写操作怎么办
  Cache毕竟是个临时缓存。
  如果发生了写操作,会造成Cache和主存中的数据不一致。如何保证写数据操作正确呢?
  也有三种策略。  通写:直接把数据写回Cache的同时写回主存。极其影响写速度。
  回写:先把数据写回Cache, 然后当Cache的数据被替换时再写回主存。
  通写队列:通写与回写的结合。先写回一个队列,然后慢慢往主存储写。如果多次写同一个数据,直接写这个队列。避免频繁写主存。  3、Cache一致性
  Cache 一致性是 Cache 中遇到的比较坑的一个问题。
  什么原因需要 Cache 处理一致性呢?
  主要是多核系统中,假如core 0读了主存储的数据,写了数据。core 1也读了主从的数据。这个时候core 1并不知道数据已经被改动了,也就是说,core 1 Cache中的数据过时了,会产生错误。
  Cache一致性的保证就是让多核访问不出错。
  Cache一致性主要有两种策略。  策略一:基于监听的一致性策略
  这种策略是所有Cache均监听各Cache的写操作,如果一个Cache中的数据被写了,有两种处理办法。
  写更新协议 :某个Cache发生写了,就索性把所有Cache都给更新了。
  写失效协议 :某个Cache发生写了,就把其他Cache中的该数据块置为无效。
  策略 1 由于监听起来成本比较大,所以只应用于极简单的系统中。  策略二:基于目录的一致性策略
  这种策略是在主存处维护一张表。记录各数据块都被写到了哪些Cache, 从而更新相应的状态。一般来讲这种策略采用的比较多。又分为下面几个常用的策略。  SI: 对于一个数据块来讲,有share和invalid两种状态。如果是share状态,直接通知其他Cache, 将对应的块置为无效。  MSI:对于一个数据块来讲,有share和invalid,modified三种状态。其中modified状态表表示该数据只属于这个Cache, 被修改过了。当这个数据被逐出Cache时更新主存。这么做的好处是避免了大量的主从写入。同时,如果是invalid时写该数据,就要保证其他所有Cache里该数据的标志位不为M,负责要先写回主存储。  MESI:对于一个数据来讲,有4个状态。modified, invalid, shared, exclusive。其中exclusive状态用于标识该数据与其他Cache不依赖。要写的时候直接将该Cache状态改成M即可。
  我们着重讲讲 MESI。图中黑线:CPU的访问。红线:总线的访问,其他Cache的访问。
  当前状态时I状态时,如果发生处理器读操作 prrd。  如果其他Cache里有这份数据,如果其他Cache里是M态,先 把M态写回主存再读。否则直接读。最终状态变为S。  其他Cache里没这个数据,直接变到E状态。
  当前状态为S态。  如果发生了处理器读操作,仍然在S态。  如果发生了处理器写操作,则跳转到M状态。  如果其他Cache发生了写操作,跳到I态。
  当前状态E态  发生了处理器读操作还是E。  发生了处理器写操作变成M。  如果其他Cache发生了读操作,变到S状态。
  当前状态M态  发生了读操作依旧是M态。  发生了写操作依旧是M态。  如果其他Cache发生了读操作,则将数据写回主存储,变换到S态。  4、总结
  Cache 在计算机体系架构中有非常重要的地位,本文讲了 Cache中最主要的内容,具体细节可以再根据某个点深入研究。
  来源:https://zhuanlan.zhihu.com/p/386919471

永劫无间迦南进阶玩法网易云游戏无需配置带你快速上分最近在永劫无间的排位赛中,迦南这名角色的出场率十分高。迦南的高机动性既适合进攻也适合逃命,非常适合玩家们拿来上分。现在使用这名角色的人这么多,小伙伴们可以学习一些迦南的进阶玩法,上开外挂直接Ban机!使命召唤战区更新反作弊系统使命召唤战区发售后便异常火热,但是泛滥的外挂让玩家苦不堪言,最近官方推出的新反作弊系统,可以BAN机的方式,禁止这些作弊者进入游戏,一起来了解下。据悉,这个新系统是战区官方悄悄更新红色警戒2中的那些中立建筑,你都占领过吗?红色警戒2是很多小伙伴上手的第一款RTS游戏,其中的两大阵营盟军和苏联有两套不同的科技,包括后来的资料片尤里的复仇中尤里也有自己的一套科技。每套科技都有自己独有的建筑物和单位。然而王者荣耀S24赛季,T0英雄只有这几位,若有本命,王者随便上王者荣耀S24赛季已经进入后半段,但是不少玩家依然没有拿到本赛季的王者印记,虽然匹配机制鸡肋,但是只要使用一些版本强势英雄,登王者还是很轻松的,本赛季T0级法师只有这三位,若有本命横尾太郎出场拳头和育碧的资深开发者齐聚,科隆游戏展Devcom公布嘉宾名单科隆游戏展(Gamescom)的开发者大会(Devcom)公布了一份详细的参会嘉宾名单,尼尔系列创意总监横尾太郎,以及来自拳头育碧等知名大厂的资深开发者,都将齐聚于此,共同分享自己骨折凯成为一代游戏大神,团战就没有输过骨折凯是我们团队里上单战士里数一数二的,凭借一二技能可以在线上有不错的续航能力,团战中可以分割敌方战场又可打乱敌方阵型。我们打团战的时候都喜欢和骨折凯一起,因为他能够做到一刀一个脆迷你世界xOPPOA93s主题活动,著名游戏解说和玩家一起刺激解密迷你世界作为一款陪伴玩家多年的高自由度沙盒游戏,一直以来都在不断地更新上线全新的道具,有些道具还拥有强大的黑科技功能,提升了玩家的游戏体验。为了回馈玩家带来更多的福利以及活动,迷你科普环节游戏搬砖的五种形式很多新手小白想要尝试游戏搬砖,但是苦于没有思路,所以今天给大家讲解一下新手比较关心的问题搬砖作为一个副业还是非常好的,一个少的几百多的上万的还是大有人在,今天讲的内容就是游戏搬砖的战锤IP也拯救不了的伪战略游戏战锤西格玛风暴之地本文系作者qiangu投稿首发于公众号迷失攻略组战锤西格玛风暴之地是GasketGames制作FocusHomeInteractive发行的一款SRPG战棋游戏,尽管战锤系列的作品复古微变版本,经典回味,只有老玩家才知道经典传奇回忆,版本回归,崭新征程,与兄弟们一起,重登珐玛大陆!游戏版本复古微变版继承了180三职业,但是又像极了1。76装备材料全靠打,可以说是复古传奇的微变版,有光柱,爆率高,完颠覆还是新生?实况足球新作转型,20年FIFA实况之争或将迎来终结每当跟朋友聊到足球游戏,实况和FIFA是一个永远也绕不过去的话题。这两个系列无疑是本世纪以来最优秀的足球游戏。也正是因此将两个系列之间进行比较,永远都是实况玩家们津津乐道的话题。两
动作冒险游戏无路之旅steam版今日发售支持中文由ABZ的创作团队GiantSquid开发的动作冒险游戏无路之旅(ThePathless)今日在steam平台开售,原价120元,现在至11月24日期间购买有优惠,售价为78元,支英雄联盟手游剑圣,天敌技巧与出装,克制那个英雄详细解答相信很多玩家都有这样的疑问。今天,小编将为您带来英雄联盟手游剑师的穿衣策略,希望对玩家有所帮助。英雄联盟手游剑圣出装攻略1。攻守流符文征服者凯旋适应性外壳集群猎人装备水银饰带,破败王者荣耀2月4号神秘商店开启,玩家吐槽没有好的皮肤,地丑诚意差,你怎么看?还记得上一次神秘商店的开启是去年暑假的时候,距离现在也有将近半年的时间了,本来这次神秘商店的开启就有很多玩家比较期待,因为在他们看来,这次是春节的来临,又加上这么久没有开启,所以肯英雄联盟早就不只是游戏,它的影视宇宙也正在孕育刚刚过去的周末,你的朋友圈一定被EDG刷屏了在持续5个小时的比赛中,中国LPL赛区的EDG战队最终上演大逆转,以32战胜韩国LCK赛区也是上届冠军DK战队,获得英雄联盟S11赛季全EDG夺冠,开发商送房!左手送右手!竟然还是公寓?阿锋作为一名爱玩游戏的80后油腻大叔,从星际争霸红警帝国时代CS暗黑,再到魔兽争霸魔兽世界LOL王者荣耀等等,虽然游戏玩得菜,但是爱玩游戏是真心的,EDG夺冠,我是比较淡定的,毕竟EDG夺冠刷屏背后,是正在发力的B站直播10月以来的直播有着两个最为鲜明的主题,一个双十一引发的百亿带货,另一个则是2021英雄联盟全球总决赛。有人戏称,可以通过朋友圈里的尾款人和EDG牛逼,划分出两类截然不同的群体。围斗罗大陆H5海神祝福给谁用斗罗大陆H5海神祝福魂环攻略斗罗大陆H5三端互通,今天给大家介绍一下海神祝福魂环的攻略,斗罗大陆H5昊天服折扣礼包滴滴。海神祝福25秒使用一次,使用时增强己方攻击最高单位的xxxxx伤害加成,增强己方生命最高狼队30零封XYG,张大仙感慨感受到S组的压力,太会运营了王者荣耀2021KPL秋季赛,常规赛第三轮的比赛中,张大仙旗下的XYG战队,在晋级S组的第二战中,直面重庆狼队。结果毫不意外地被狼队轻松击败,继续第一轮输给武汉eStarPro之后光遇看不起宋小宝复刻?红绒斗穿搭安利,秒变小可爱光遇看不起宋小宝复刻?红绒斗穿搭安利,秒变小可爱前言大家好,我是林克。每日分享游戏电竞情报攻略玩法等。记得在第二次复刻时,大家就怨声载道,把官方骂惨了。而这一次,之所以这么和谐,主继IOS之后,Sony也终于为Android带来DualSense摇杆支持四月份的时候,iOS加入了PS5DualSense摇杆支持之后,想必安卓用户希望未来也能同样支持Android现在,终于等到它的出现了。在GooglePlay商店中的最新PlayS唯一没有弱势期战士,霸体长达12秒,坦度比肩项羽,支援比关羽快随着玩家对游戏越来越了解,战士类英雄逐渐被玩家们接受,并且最近几个赛季战士的整体强度都很高,虽然大多数战士打对抗路,但是一名优秀的上单玩家不但有能力自爆一路,并且还可以及时地支援队