本文将介绍Intel DDIO(Data Direct I/O) technology。

1. What is Intel® Data Direct I/O?

Intel® Data Direct I/O (Intel® DDIO) is a feature to be introduced on the Intel® E5 Xeon® processors. Intel’s LAN Access Division (LAD) worked for the incorporation of Intel DDIO into the Xeon E5 processor because of its benefits for LAN I/O in terms of performance and system power consumption. With Intel DDIO, Intel’s Ethernet server NICs and controllers talk directly to the processor cache without a detour via system memory. Intel DDIO makes the processor cache the primary destination and source of I/O data rather than main memory. By avoiding system memory, Intel DDIO reduces latency, increases system I/O bandwidth, and reduces power consumption due to memory reads and writes.

2. How does it work?

Read and Writes的视角是NIC。
详情可以阅读谈谈DDIO你该知道的事

2.1 NIC Reads

2.1.1 Without DDIO

  1. 处理器更新报文和控制结构体。由于分配的缓冲区在内存中, 因此会触发一次Cache不命中,处理器把内存读取到Cache中,然后更新控制结构体和报文信息。之后通知NIC来读取报文。
  2. NIC收到有报文需要传递到网络上的通知后,它首先需要读取控制结构体进而知道从哪里获取报文。由于之前处理器刚把该缓冲区从内存读到Cache中并且做了更新,很有可能Cache还没有来得及把更新的内容写回到内存中。因此,当NIC发起一个对内存的读请求时,很有可能这个请求会发送到Cache系统中,Cache系统会把数据写回到内存中,然后内存控制器再把数据写到PCI总线上去。因此,一个读内存的操作会产生多次内存的读写。

2.1.2 With DDIO

  1. 处理器更新报文和控制结构体。这个步骤和没有DDIO的技术类似,但是由于DDIO的引入,处理器会开始就把内存中的缓冲区和控制结构体预取到Cache,因此减少了内存读的时间。
  2. NIC收到有报文需要传递到网络上的通知后,通过PCI总线把控制结构体和报文送到NIC内部。利用DDIO技术,I/O访问可以直接将Cache的内容送到PCI总线上。这样,就减少了Cache写回时等待的时间。

由此可以看出,由于DDIO技术的引入,网卡的读操作减少了访问内存的次数,因而提高了访问效率,减少了报文转发的延迟。在理想状况下,NIC和处理器无需访问内存,直接通过访问Cache就可以完成更新数据,把数据送到NIC内部,进而送到网络上的所有操作。

2.2 NIC Writes

2.2.1 Without DDIO

  1. 报文和控制结构体通过PCI总线送到指定的内存中。如果该内存恰好缓存在Cache中(有可能之前处理器有对该内存进行过读写操作),则需要等待Cache把内容先写回到内存中,然后才能把报文和控制结构体写到内存中。
  2. 运行在处理器上的驱动程序或者软件得到通知收到新报文,去内存中读取控制结构体和相应的报文,Cache不命中。之所以Cache一定不会命中,是因为即使该内存地址在Cache中,在步骤1中也被强制写回到内存中。因此,只能从内存中读取控制结构体和报文。

2.2.2 With DDIO

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

  1. a) 如果该内存恰好缓存在Cache中(有可能之前处理器有对该内存进行过读写操作),则直接在Cache中更新内容,覆盖原有内容。
    b) 如果该内存没有缓存在Cache中,则在最后一级Cache中分配一块区域,并相应更新Cache表,表明该内容是对应于内存中的某个地址的。
  2. 运行在处理器上的驱动或者软件被通知到有报文到达,其产生一个内存读操作,由于该内容已经在Cache中,因此直接从Cache中读。

由此可以看出,DDIO技术在处理器和外设之间交换数据时,减少了处理器和外设访问内存的次数,也减少了Cache写回的等待,提高了系统的吞吐率和数据的交换延迟。


参考资料:

  1. Intel® Data Direct I/O Technology (Intel® DDIO): A Primer
  2. Intel Data Direct I/O (Intel DDIO): Frequently Asked Questions
  3. 谈谈DDIO你该知道的事
  4. Reexamining Direct Cache Access to Optimize I/O Intensive Applications for Multi-hundred-gigabit Networks