PCIe扫盲——PCI总线的三种传输模式
本⽂来简单地介绍⼀下PCI Spec规定的三种数据传输模型:Programmed I/O(PIO),Peer-to-Peer和DMA。peer
三种数据传输模型的⽰意图如下图所⽰:
⾸先来介绍⼀下Programmed I/O(PIO)
PIO在早期的PC中被⼴泛使⽤,因外当时的处理器的速度要远远⼤于任何其他外设的速度,所以PIO⾜以胜任所有的任务。举⼀个例⼦,⽐如说某⼀个PCI设备需要向内存(SDRAM)中写⼊⼀些数据,该PCI设备会向CPU请求⼀个中断,然后CPU⾸先先通过PCI总线把该PCI设备的数据读取到CPU内部的寄存器中,然后再把数据从内部寄存器写⼊到内存(SDRAM)中。
现在看来,这种传输⽅式的效率还是很低的。⾸先,每次CPU和PCI设备以及SDRAM通信都需要额外的时钟周期(相对于DMA);其次,这种传输⽅式还需要长时间地占⽤CPU,影响CPU的使⽤率。试想⼀下,你在⽤PC在线观看⼀个1080p60的⾼清视频,这需要以太⽹连续地向内存(SDRAM)中写⼊数据,如果使⽤PIO的⽅式的话,将难以保证数据的写⼊速度。随着⽬前的PCI外设速度越来越⾼,PIO已经逐渐被DMA传输⽅式所取代,但是为了兼容早期的⼀些设备,PCI Spec依然保留了PIO。
DMA,即Direct Memory Access
Peer-to-Peer
前⾯的⽂章中,我们介绍过PCI总线系统中的主机⾝份并不是固定不变的,⽽是可以切换的(借助仲裁器),但是同⼀时刻只能存在⼀个主机。完成Peer-to-Peer这⼀传输⽅式的前提是,PCI总线系统中⾄少存在⼀个有能⼒成为主机的设备。在仲裁器的控制下,完成主机⾝份的切换,进⽽获得PCI总线的控制权,然后与总线上的其他PCI设备进⾏通信。不过,需要注意的是,在实际的系统中,Peer-to-Peer
这⼀传输⽅式却很少被使⽤,这是因为获得主机⾝份的PCI设备(Initiator)和另⼀个PCI设备(Target)通常采⽤不同的数据格式,除⾮他们是同⼀个⼚家的设备。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。