深入浅出dpdk读书笔记-DDIO

1、DDIO原理

在这先说一说不使用DDIO的处理流程。报文的一般处理流程如下:pcie->内存->cache->寄存器,处理完成之后的流程是寄存器->cache->内存->pcie。解释一下:处理器收到报文信息时,此时会触发cache不命中,这个时候就会从内存中读取报文的相关信息送到cache中网卡读取信息之后进行处理,也就是寄存器处理流程,处理之后,更新cache消息,为了保证数据的一致性,会把cache中的数据更新到内存中,然后通过pcie将报文发送到网络中。而DDIO技术就是绕过内存,通过LLC直接进行数据交换。

2、网卡的读数据操作

(1)没有DDIO的操作

1)处理器更新报文和控制结构体。由于分配的缓冲区在内存中,因此会触发一次Cache不命中,处理器把内存读取到Cache中,然后更新控制结构体和报文信息。之后通知网卡来读取报文

2)网卡把数据写回到内存,然后将 数据写到pcie总线上

(2)有DDIO的操作

1)处理器更新报文和控制结构体。但是由于DDIO的引入,处理器会开始就把内存中的缓冲区和控制结构体预取到Cache,因此减少了内存读的时间

2)NIC收到有报文需要传递到网络上的通知后,通过PCI总线把控制结构体和报文送到NIC内部,NIC处理完成之后更新LLC,最后利用DDIO技术,I/O访问可以直接将Cache的内容送到PCI总线上。

由此可见DDIO减少了读内存的次数。

3、网卡写操作

网卡的写数据操作就是有网络报文需要送到系统内部进行处理,运行的软件可以对收到的报文进行协议分析,如果有问题可以丢弃,也可以转发出去。其过程一般是NIC从网络上收到报文后,通过PCI总线把报文和相应的控制结构体送到预先分配的内存,然后通知相应的驱动程序或者软件来处理。

1)没有DDIO的操作

1)报文和控制结构体通过PCI总线送到指定的内存中。如果该内存恰好缓存在Cache中,则需要等待Cache把内容先写回到内存中,然后才能把报文和控制结构体写到内存中

2)运行在处理器上的驱动程序或者软件得到通知收到新报文,去内存中读取控制结构体和相应的报文,Cache不命中。之所以Cache一定不会命中,是因为即使该内存地址在Cache中,在步骤1中也被强制写回到内存中。因此,只能从内存中读取控制结构体和报文。

(2)有DDIO的操作

1)报文和控制结构体通过PCI总线直接送到Cache中。这时有两种情形:

a)如果该内存恰好缓存在Cache中(有可能之前处理器有对该内存进行过读写操作),则直接在Cache中更新内容,覆盖原有内容。

b)如果该内存没有缓存在Cache中,则在最后一级Cache中分配一块区域,并相应更新Cache表,表明该内容是对应于内存中的某个地址的。在cache中创建了一个TLB表

2)运行在处理器上的驱动或者软件被通知到有报文到达,其产生一个内存读操作,由于该内容已经在Cache中,因此直接从Cache中读

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值