Cache预取

1、什么是Cache?

CPU芯片内部的高速缓存;

Cache类型说明容量多核处理器内部存在形式
一级Cache

分为数据Cache和指令Cache;

处理器只需3~5个指令周期

几十KB每个处理器独享
二级Cache   

数据和指令都无差别地存放在一起;         
处理器大约需要十几个指令周期才能访问到       

几百KB到几MB不等每个处理器独享
三级Cache处理器需要几十个指令周期才能访问到几MB到几十MB不等所有核心共享
TLB-Cache专门用于缓存内存中的页表项;(又称为快表)

2、Cache预取原理

Cache之所以能够t提高系统性能,主要是程序执行存在局部性现象,即时间局部性和空间局部性。

Cache预取就是预测数据并取到Cache中,是根据空间局部性和时间局部性,以及当前执行状态、历史执行状态、软件提示等信息,然后以一定的合理方法,在数据/指令被使用前取入Cache。这样当数据/指令需要被使用时,就能快速从Cache中加载到处理器内部进行运算和执行。

3、软件预取

DPDK处理一个报文基本流程:

1)写接收描述符到内存,填充数据缓冲区指针,网卡收到报文后就会根据这个地址把报文内容填充进去;

2)从内存中读取接收描述符,(当收到报文时,网卡会更新该结构)从而确认是否收到报文;

3)从接收描述符确认收到报文时,从内存中读取控制结构体指针,再从内存中读取控制结构体,把从接收描述符读取的信息填充到该控制结构体;

4)更新接收队列寄存器,表示软件接收到了新的报文;

5)内存中读取报文头部,决定转发端口;

6)从控制结构体把报文信息填入到发送队列发送描述符,更新发送队列寄存器;

7)从内存中读取发送描述符,检查是否有包被硬件传送出去;

8)如果有的话,从内存中读取相应控制结构体,释放数据缓冲区;

上述过程需要6次读取内存,而每次访存需要几百个时钟周期。

因此DPDK必须保证所有需要读取的数据都在Cache中,否则一旦出现Cache不命中,性能将会严重下降。预取是DPDK中多种优化技术的一种。

rte_ixgbe_prefetch(char *p);

rte_packet_prefetch(char *p);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值