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

给自己公司做个网站门户网站的发展趋势

给自己公司做个网站,门户网站的发展趋势,湖北省建设厅行政审批网站,分销小程序开发Cache的数据流 常用名词 Allocation 分配Eviction 驱逐分配策略和更新策略分别为当产生Cache miss和Cache hit的时候数据流的具体行为 1 Cache分配策略(Cache Allocation Policy) Cache的分配策略是指不同情况下为数据分配Cache Line的不同行为。Cac…

Cache的数据流

常用名词

  • Allocation 分配
  • Eviction 驱逐
  • 分配策略和更新策略分别为当产生Cache miss和Cache hit的时候数据流的具体行为

1 Cache分配策略(Cache Allocation Policy)

Cache的分配策略是指不同情况下为数据分配Cache Line的不同行为。Cache分配策略分为读和写两种情况。(分配一般都是发生在miss 情况下,因为hit的时候,直接进行读写即可)

1.1 读分配(Read Allocation)

发生条件: CPU读数据,所需读取数据Cache缺失

数据流操作: 从主存读取数据,分配对应Cache Line空间进行缓存

备注: 默认情况下,Cache都支持读分配

1.2 写分配(Write Allocation)

发生条件: CPU写数据,所写数据对应地址Cache缺失

数据流操作:

  • 当不支持写分配时,写指令直接写入主存,只会更新主存数据
  • 当支持写分配时,首先从主存中加载数据到Cache Line中(相当于先做个读分配动作),然后会更新Cache Line中的数据

2 Cache更新策略(Cache Update Policy)

Cache更新策略是指当发生Cache命中时,写操作应该如何更新数据。Cache更新策略分成两种:写直通和回写。

2.1 写直通(Write Through)

发生条件: 当CPU执行store指令并在Cache命中时

数据流操作: 更新Cache中的数据并且更新主存中的数据

备注: Cache和主存的数据始终保持一致

2.2 写回(Write Back)

发生条件: 当CPU执行store指令并在Cache命中时

数据流操作:

  • 只更新Cache中的数据
  • 将dirty bit置位:每个Cache Line中会有一个bit位记录数据是否被修改过,称之为dirty bit(前文的图片中,Cache Line旁边有一个D就是dirty bit)。
  • 在Cache Line被替换或者显示的clean操作时,主存中的数据才会进行更新。因此,主存中的数据可能是未修改的数据,而修改的数据躺在Cache中。

备注: Cache和主存的数据可能不一致

为什么Cache Line大小是Cache控制器和主存之间数据传输的最小单位呢?

因为每个Cache Line只有一个dirty bit。这一个dirty bit代表着整个Cache Line是否被修改的状态。

实例

假设有如下Cache

  • Cache Size 128 Byte
  • Cache Line Size 8 Byte
  • Way=1 直接映射缓存
  • 策略:写分配和写回机制
  • Tag Array中Tag旁边Valid位:是否合法:1代表合法,0代表非法。
  • Data Array中dataCache Line旁边的Dirty位:是否脏,可以理解为是否与主存不一样,1代表dirty(Cache中更新过数据),0代表没有写过数据,即非dirty(与主存一致)

行为1:当CPU从地址0x0654读取1个字节,Cache表现如下:

image-20231126163618725

  • 根据Index找到对应的Cache Line(图中用绿色表示选中的Cache Line)
  • 对应的Tag部分valid bit是合法的(Tag 为 1,如果为不合法的话可以直接刷掉)
  • 合法且Tag的值不相等,因此判断发生缺失
  • 此时需要从地址0x0650地址(请注意Cache Line大小对齐)加载16 Byte数据到该Cache Line中
  • 但是,发现当前Cache Line的dirty bit置位。因此,Cache Line里面的数据不能被简单的丢弃,由于采用写回机制,所以需要将Cache Line中的数据0xFF…FF写回他应该在的主存地址
  • 以Cache Line中的Tag为000001111,Index为101,offset为0(因为需要Cache Line大小对齐),所以地址为0000,0111,1101,0000,即为0x07D0

image-20231126165700623

  • 当写回操作完成,将主存中0x0650地址开始的16个字节0x00…00加载到该Cache Line中,并清除dirty bit。然后根据offset找到0x0654返回给CPU

image-20231126170020828

2 Cache 逐出策略 (Cache Cache Eviction Policy)

缓存逐出策略

2.1 LRU(Least Recently Used)最久没有使用的优先剔除

假设条件: 最近最少使用的那些信息,将来被使用的概率也不大,所以在容量有限的情况下,就可以把这些不常用的信息踢出去,腾地方。认为最近用到的信息以后用到的概率会更大

逐出条件: 把很久没有用过的信息踢出去,也就是 Least Recently Used 的信息被踢出去

备注: 这个是最常用的逐出策略

2.2 FIFO(First In First Out)先进先出

假设条件: 最先进入Cache的最先被用完,之后被使用的概率低

逐出条件: 把最先进入Cache的数据优先剔除,认为他们被优先用完了

2.3 LFU(Least Frequently Used))最低频被使用的优先剔除

假设条件: 越是不常用的用的数据之后使用到的概率越大

逐出条件: 计算每个信息的访问次数,踢走访问次数最少的那个;如果访问次数一样,就踢走好久没用过的那个

备注: 这个算法其实很高效,但是耗资源,所以一般不用

Note

Tag Array 存储在硬件 Cache 里,占用真实 Cache 内存。但是我们提到 Cache Size 的时候,并没有考虑 Tag 的占用。所以计算时,请忽略 Tag 占用。

参考文献

Cache的基本原理 - 知乎
LRU Cache_cache age lru-CSDN博客

http://www.yayakq.cn/news/215341/

相关文章:

  • 宜昌建设网站公司哪个网站可以免费制作h5
  • 知名的咨询行业网站制作小程序登录入口在哪里
  • 电子商务安全问题 网站权限管理小程序源码加密
  • 网站建站案例grace wordpress
  • 电子网站建设前台设计在线设计logo免费网站
  • 免费申请激活码济南网站优化公司排名
  • 融水县建设局网站比较火的网页游戏
  • 苏州建站模板平台国外访问国内网站慢
  • asp.net当前网站路径如何更改网站域名
  • 辽宁城市建设职业技术学院教育网站网站外链是什么意思
  • 自助建站系统模板计算机网站开发课本
  • wordpress虚拟主机内页全打不开东莞网站优化排名
  • 百度站长工具怎么关闭一级域名免费注册
  • 旅游电子商务网站建设调查问卷网站建设用什么语言
  • 东营网站建设运营公司一树擎天又一个wordpress站点
  • 网站设计深圳哪家强?一级建造师报名官网入口
  • 个人业务网站免费制作wordpress opencart
  • 网站页面缺点分析案例谷歌外贸网站建站
  • 如何建设网站app网站建设行业2017
  • 元器件采购最好的网站基于ssh框架的网站开发流程图
  • 南宁网站建设网站推广开发一个商城网站多少钱
  • 自助建网站教程建设网站专业公司吗
  • 佛山全网营销型网站建设永久有效的代理ip
  • 怎么建设好一个外贸购物网站页面精美的网站
  • 菏泽网站建设哪好简单的企业网站源码
  • 如何做网站推广广告丹灶网站建设
  • 平潭做网站wordpress用户绑定手机
  • “网站制作”wordpress 剑侠情缘主题
  • 医疗营销的网站怎么做定制wordpress
  • 网站建设整体设计思路新装本地wordpress超慢