DPDK-内存管理系列之Cache

1.Cache系统

随着计算机行业的飞速发展,CPU的速度和内存大小都在飞速发展,以2014年推出的Hashwell处理器为例,时钟频率达到3.8GHz,数据总线和地址总线也都扩展到了64位,可以寻址的内存大小也已经开始以TB计算。在处理器不断增加的形势下,处理器处理数据的能力也大大提升。但是数据是存储在内存里的,随着DDR2、DDR3、DDR4的新技术不断推出,内存的吞吐率也得到了大大提升,但是相对处理器来讲,仍然是非常慢的,处理器从内存中读取数据都要花大概几百个时钟周期,在这期间处理器除了等待又做不了什么,基于这种环境,才提出Cache的概念,其目的就是为了匹配处理器和内存之前的存在的巨大速度鸿沟。

2.Cache的种类

Cache一般由三级组成,那么为什么会对Cache也分级,主要是从成本和生产工艺的角度考虑的。一级(L1)最快,容量最小;三级(L3)速度最慢,容量最大,当今大多数处理器都包含这一级别的Cache。

Cache是一种SRAM(Static Random Access Memory静态随机访问存储器),早期的三级Cache受工艺限制没办法集成到处理器内部,随着90nm,45nm,32nm以及22nm的工艺推出,处理器内部能够容纳更多的晶体管,所以现在三级Cache也慢慢集成到处理器内部了。

举一个简单的Cache系统逻辑示意图:

一级Cache,一般分为数据Cache和指令Cache,数据Cache用来存储数据,而指令Cache用于存放指令。这种Cache速度最快,一般处理器只需要3~5个指令周期就能访问到数据。所以越快成本就越高了,容量小只有几十KB,在多核处理器内部,每个处理器核心都拥有仅属于自己的一级Cache。

二级Cache,和一级Cache分为数据Cache和指令Cache不同,数据和指令都无差别地存放在一起了。速度比一级Cache慢一些,处理器大约需要十几个处理器周期才能访问到数据,容量也相对大一些,一般是几百KB到几MB不等,在多核处理器内部,每个处理器都拥有仅属于自己的二级Cache。

三集Cache, 速度更慢了,处理器需要几十个周期才能到访问到数据,容量更大, 一般是几MB到几十个MB,在多核处理器内部,三级Cache为所有处理器共有。

3.TLB Cache

之前我们讲过TLB是干什么用的,其实TLB就是一种Cache,现代操作系统基本都采用分页技术,软件使用虚拟地址访问内存,而处理器需要负责虚拟地址到物理地址的映射工作,为了完成映射工作,处理器一般采用多级页表来进行多次查找最终才能找到真正的物理地址。当处理器发现找不到最终的物理地址的时候,就会发出一个异常,挂起寻址错误的进程,但是其他进程依然能够正常的工作。

页表也存储在内存里,处理器虽然可以利用三级Cache系统来缓存页表内容,但是想想为啥不能这么做?

第一,处理器每当进行一次寻址就要进行一次映射,这使得处理器访问页表的评率非常的高,有可能一秒钟要访问几万次。即使就算99%的命中率,不命中的每秒也有几百万此次,这使得处理器在单位时间内访问内存(Cache miss 只能访问内存)次数增多,降低了系统性能。

第二,当为了解决上面的原因,TLB咔咔咔的就诞生了,(Translation Look-aside Buffer),专门用来缓存内存中的页表项。TLB一般与相连存储器或者CAM(Content Addressable Memory)。相连存储器使用虚拟地址进行搜索,直接返回对应的物理地址,相对于内存中的多级页表需要多次访问最终得到物理地址,TLB无疑能够大大减少处理器开销,这就是第二个原因。需要的地址在TLB中,我们就叫TLB命中,如果不在TLB,就称为TLB 不命中(TLB Miss),这时候处理器就需要到多级页表中访问才能最终得到物理地址。

对于Cache是怎么实现地址映射和变化的我这里先不赘述了,有兴趣的小伙伴可以私下讨论和研究一下。

4.Cache 预取

以上讲的基本上对大部分程序员不可见,我们编写代码的时候也不用关注Cache是否存在,有几个级别,这一切都是硬件完成的,硬件也不是完全智能的呢,所以一些体系结构引入了能对Cache进行预取的指令,从而使一些程序对执行效率有很高的程序员能够一定程度的控制Cache,加快程序的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值