首页 理论教育PCIExpress体系结构导读-VC和端口仲裁

PCIExpress体系结构导读-VC和端口仲裁

【摘要】:在PCIe总线中存在两种仲裁机制,分别是基于VC和基于端口的仲裁机制。端口仲裁机制主要针对RC和Switch,当多个Ingress端口需要向同一个Egress端口发送数据报文时需要进行端口仲裁。当RC的端口1和端口3同时访问Endpoint C时,RC的端口2需要进行端口仲裁,决定来自RC哪个端口的数据可以率先通过。PCIe总线规定,系统设计者可以使用以下三种方式进行端口仲裁。

在Switch中存在多个端口,其中来自不同Ingress端口的报文可以发向同一个Egress端口,因此Switch必须要解决端口仲裁和路由选径的问题。所谓端口仲裁指来自不同Ingress端口的报文到达同一个Egress端口的报文通过顺序,端口仲裁机制如图4-11所示。

978-7-111-29822-9-Part02-13.jpg

图4-11 PCIe总线基于端口的仲裁机制

在一个Switch中设有仲裁器,该仲裁器规定了数据报文通过Switch的规则。在PCIe总线中存在两种仲裁机制,分别是基于VC和基于端口的仲裁机制。端口仲裁机制主要针对RC和Switch,当多个Ingress端口需要向同一个Egress端口发送数据报文时需要进行端口仲裁。具体地讲,在PCIe体系结构中有三个端口,需要进行端口仲裁。

●Switch的Egress端口。当EP A和EP B同时访问EP C,D或者DDR-SDRAM时,需要通过Switch的Egress端口C。此时Switch需要进行端口仲裁确定是EP A的数据报文还是EP B的数据报文优先通过Egress端口C。

●多端口RC的Egress端口。当RC的端口1和端口3同时访问Endpoint C时,RC的端口2需要进行端口仲裁,决定来自RC哪个端口的数据可以率先通过。

●RC通往主存储器的端口。当RC的端口1、端口2和端口3同时访问DDR控制器时,这些数据报文将通过RC的Egress端口4,此时需要进行端口仲裁。

在PCIe体系结构中,链路的端口仲裁需要根据每一个VC独立设置,而且可以使用不同的算法进行端口仲裁。

下文以图4-11中,Switch的两个Ingress端口A和B向Egress端口C发送数据报文为例,简要说明端口仲裁和VC仲裁的使用方法,其过程如图4-12所示。

基于VC的仲裁是指发向同一个端口的数据报文,根据使用的VC而进行仲裁的方式。当来自端口B和端口A数据报文(分别使用VC0和VC1通路)在到达端口C之前,需要首先进行端口仲裁后,才能进行VC仲裁。PCIe总线规定了3种VC仲裁方式,分别为Strict Priority,RR(Round Robin)和WRR(Weighted Round Robin)算法。

978-7-111-29822-9-Part02-14.jpg

图4-12 VC仲裁示意图

当使用Strict Priority仲裁方式时,发向VC7的数据报文具有最高的优先级,而发向VC0的数据报文优先级最低。PCIe总线允许对Switch或者RC的部分VC采用Strict Priority方式进行仲裁,而对其他VC采用RR和WRR算法,如VC7~VC4采用Strict Priority方式,而采用其他方式处理VC3~VC0。

使用RR方式时,所有VC具有相同的优先级,所有VC轮流使用PCIe链路。WRR方式与RR算法类似,但是可以对每一个VC进行加权处理,采用这种方式可以适当提高VC7的优先权,而将VC0的优先权适当降低。(www.chuimin.cn)

我们假定Ingress端口A和Ingress B向Egress端口C进行数据传递时,使用两个VC通路,分别是VC0和VC1。其中标签为TC0~TC3的数据报文使用VC0传送,而标签为TC4~TC7数据报文使用VC1传送。

而数据报文在离开Egress端口C时,需要首先进行端口仲裁,之后再通过VC仲裁,决定哪个报文优先传送。数据报文从Ingress A/B端口发送到Egress C端口时,将按照以下步骤进行处理。

(1)首先到达Ingress A/B端口的数据报文,将根据该端口的TC/VC映射表[10]决定使用该端口的哪个VC通道。如图4-12所示,假设发向端口A的数据报文使用TC0~TC3,而发向端口B的数据报文使用TC0~TC7,这些数据报文在端口A中仅使用了VC0通道,而在端口B中使用了VC0和VC1两个通道。

(2)数据报文在端口中传递时,将通过路由部件(Routing Logic),将报文发送到合适的端口。如图4-12所示,端口C可以接收来自端口A或端口B的数据报文。

(3)当数据报文到达端口C时,首先需要经过TC/VC映射表,确定在端口C中使用哪个VC通路接收不同类型的数据报文。

(4)对于端口C,其VC0通道可能会被来自端口A的数据报文使用,也可能会被来自端口B的数据报文使用。因此在PCIe的Switch中必须设置一个端口仲裁器,决定来自不同数据端口的数据报文如何使用VC通路。

(5)数据报文通过端口仲裁后,获得VC通路的使用权之后,还需要经过Switch中的VC仲裁器,将数据报文发送到实际的物理链路中。

PCIe总线规定,系统设计者可以使用以下三种方式进行端口仲裁。

(1)Hardware-fixed仲裁策略。如在系统设计时,采用固化的RR仲裁方法。这种方法的硬件实现原理较为简单,此时系统软件不能对端口仲裁器进行配置。

(2)WRR仲裁策略,即加权的RR仲裁策略,该算法和Time-Based WRR算法的描述见第4.3.3节。

(3)Time-Based WRR仲裁策略,基于时间片的WRR仲裁策略,PCIe总线可以将一个时间段分为若干个时间片(Phase),每个端口占用其中的一个时间片,并根据端口使用这些时间片的多少对端口进行加权的一种方法。使用WRR和Time-Based WRR仲裁策略,可以在某种程度上提高PCIe总线的QoS。

PCIe设备的Capability寄存器规定了端口仲裁使用的算法,详见第4.3.3节。有些PCIe设备并没有提供多种端口仲裁算法,可能也并不含有Capability寄存器。此时该PCIe设备使用Hardware-fixed仲裁策略。