PCI总线使用第1.2节所述的信号进行数据和配置信息的传递,一个PCI总线事务的基本访问时序如图1-3所示,与PCI总线事务相关的控制信号有FRAME#、IRDY#、TRDY#、DEVSEL#等其他信号。当PCI主设备获得总线使用权之后,将在CLK1的上升沿置FRAME#信号有效,启动PCI总线事务。当PCI总线事务结束后,FRAME#信号将被置为无效。PCI总线周期的第一个时钟周期为地址周期。......
2023-10-20
总线的延时与带宽是一个巨大的话题,即便本节将其局限到PCIe总线,局限到Capric卡,也并不能改变这个话题的沉重。总线的带宽和延时之间有一定的制约关系,任何一个处理器系统都希望在获得巨大总线带宽的同时,尽量缩小访问延时。
在处理器系统的设计中,必须权衡“提高带宽”与“缩小延时”之间的关系,以组建一个合理的应用系统。在处理器领域,带宽是指数据的传送速率,即1秒钟传送的数据大小。而延时指传送处理一个数据单元所需要的时间。
片面地追求带宽显然并不合理,过大的带宽对某些应用并不合适。我们无法忽视一个满载光盘的火车所能提供的数据带宽,这辆火车至少能传递几十万Pebibyte大小的数据,而且十个小时左右就能从北京抵达上海。显然多辆火车所能提供的带宽非常巨大,但是我们仍然无法使用火车传送网络报文,因为十个小时的延时是许多系统应用无法容忍的。
延时与带宽之间存在某种联系,而不是直接对立关系,并不是带宽越大延时也越大,带宽越小延时也越小。处理器系统设计所追求的目标是提高带宽的前提下,尽可能掩盖传送延时,组成一个可实现的处理器系统。
PCIe总线作为处理器的通用局部总线,需要权衡带宽和延时之间的关系,满足在处理器系统中多数应用的需求,而非包罗万象。PCIe总线能够满足,绝大多数处理器系统,特别是PC系统中的显卡、硬盘,声卡和一些慢速设备与处理器之间的数据传送,但是对于一些延时要求较高的应用并不适用。
当一个网络设备需要以1Gb/10Gb的速率“线速传送”64B大小的网络数据报文时,PCIe总线显得力不从心,通常这种网络设备需要直接与处理器的FSB相连,以尽量缩短传送延时。在许多处理器系统中,如Freescale的P4080处理器,RMI的XLP832、Cavium的CN6335处理器,网络设备与FSB直接相连,并在追求最大带宽的同时,尽量减少访问延时。(www.chuimin.cn)
在x86处理器系统中,可以使用QPI(Quic kPath Interconnect)连接这样的高性能网卡。但是目前在PC领域中,高性能网卡依然使用PCIe总线进行连接。
在一个处理器系统中,为掩盖传送延时,通常使用“流水线”技术,当数据传送的延时增加时,“流水线”所使用的资源也随之增加,并很容易到达处理器系统所不能忍受的范围。本章讲述在PCIe总线中,延时与带宽间的关系,以及存在的问题。PCIe总线基于TLP进行数据传递,因此本节所强调的带宽与延时与TLP直接相关。
在本节中,PCIe总线的带宽指每秒钟传送的“TLP中有效数据“的大小,即PCIe总线的有效带宽。该定义与PCIe总线的链路带宽不同。如PCIe V2.1总线规范链路带宽为5GT/s,而这个带宽需要去掉物理层8/10b转换,以及PCIe总线的协议开销后才能得到PCIe总线的有效带宽。PCIe总线的有效带宽与许多因素相关,包括协议开销、TLP Payload的大小、传送延时、流量控制等因素相关,当然最重要的因素依然是PCIe总线的链路宽度。
PCIe总线的延时指一个存储器请求从产生到结束的时间。值得注意的是存储器读与存储器写TLP的延时计算有所不同,存储器写TLP产生于发送端而结束于接收端,仅计算单向延时;而存储器读请求TLP产生于发送端,接收端将存储器读请求TLP转换为存储器读完成TLP,再发送给发送端,需要计算双向延时。
有关PCI Express体系结构导读的文章
PCI总线使用第1.2节所述的信号进行数据和配置信息的传递,一个PCI总线事务的基本访问时序如图1-3所示,与PCI总线事务相关的控制信号有FRAME#、IRDY#、TRDY#、DEVSEL#等其他信号。当PCI主设备获得总线使用权之后,将在CLK1的上升沿置FRAME#信号有效,启动PCI总线事务。当PCI总线事务结束后,FRAME#信号将被置为无效。PCI总线周期的第一个时钟周期为地址周期。......
2023-10-20
图12-11 Capric卡的DMA写过程首先处理器填写Capric卡的WR_DMA_ADR、WR_DMA_SIZE和DCSR2寄存器,经过延时D0之后,这些命令陆续到达Capric卡。Capric卡收到处理器的DMA写请求后,将向RC连续发送存储器写TLP,并由RC将数据写入到主存储器。处理器收到MSI报文后,将执行中断处理程序,Capric卡的中断处理例程通过RC读取中断控制状态寄存器INT_REG,并结束整个DMA写操作。首先处理器填写Capric卡的寄存器启动DMA读。......
2023-10-20
PCI总线规定了两类数据传送方式,分别是Posted和Non-Posted数据传送方式。显然采用Posted传送方式,当这个Posted总线事务通过某条PCI总线后,就可以释放PCI总线的资源;而采用Non-Posted传送方式,PCI总线在没有结束当前总线事务时必须等待。而使用Non-Posted方式进行数据传送的处理过程与此不同,Non-Posted数据请求在通过PCI总线时,并不会及时释放总线资源,从而在某种程度上影响PCI总线的使用效率和传送带宽。......
2023-10-20
PCI总线定义了两类配置请求,一类是Type 00h配置请求,另一类是Type 01h配置请求。PCI总线使用这些配置请求访问PCI总线树上的设备配置空间,包括PCI桥和PCI Agent设备的配置空间。当x86处理器对CONFIG_DATA寄存器进行读写操作时,HOST主桥将决定向PCI总线发送Type 00h配置请求还是Type 01h配置请求。在PCI总线事务的地址周期中,这两种配置请求总线事务的不同反映在PCI总线的AD[31∶0]信号线上。......
2023-10-20
PCIe设备使用MSI机制时,通过向中断控制器发送MSI报文以提交中断请求。然而对于PCIe体系结构而言,这个MSI报文与普通的存储器写报文并没有本质的区别,这个报文也可以使用不同的TC。如果设备的数据传送使用TC0,而MSI报文使用TC1时,将可能引发数据完整性的问题。PCIe总线规范并没有约定如何处理传递MSI报文而产生的数据完整性问题。当该读操作结束后,即PCIe设备收到存储器读完成TLP后,再发送MSI报文。......
2023-10-20
Capric卡仅使用BAR0空间,其大小为256B,在该空间中包含以下寄存器,这些寄存器使用小端编码方式,如表12-1所示。表12-1 Capric卡的BAR空间寄存器DCSR1寄存器,该寄存器由7个有效位组成。该寄存器的复位值为0,由32位组成,但是只有最低11位有效,因此Capric卡一次DMA读传送的最大值为0x7FF。当Capric卡的DMA读操作完成后,而且DCSR1寄存器的int_rd_enb位为1时,该位为1表示Capric卡已经向处理器提交了DMA读完成中断请求。......
2023-10-20
本节重点讲述PCI桥如何将Type 01h配置请求转换为Type 00h配置请求。下面将举例说明PCI总线配置请求的转换原则,并以图2-8为例说明处理器如何访问PCI设备01和PCI设备31的配置空间。PCI总线规定Type01h配置请求只能由PCI桥负责处理。而1<Bus Number≤3,所以PCI桥1将接收来自PCI总线0的Type 01h配置请求,并将这个配置请求直接下推到PCI总线1。......
2023-10-20
PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个部分。深入理解PCI总线需要了解一些与处理器体系结构相关的知识。PCI规范并没有对HOST主桥的设计进行约束。PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI总线提供的峰值带宽远高于这些总线。......
2023-10-20
相关推荐