首页 理论教育PCIExpress体系结构导读:TLP处理提示

PCIExpress体系结构导读:TLP处理提示

【摘要】:当TLP的TH位为1时,表示在当前TLP中包含Processing Hint字段,PH字段由PCIe V2.1总线规范引入。Processing Hint字段的产生与智能设备的大量涌现密切相关。有些智能设备,如在显卡中使用的GPU和GP-GPU的处理能力甚至超过多数通用处理器。该TLP Prefix也被称为TPH TLP Prefix,其格式如图6-15所示。TPH Requester Capability结构使用ST Mode Sele ct字段定义了ST字段的三种使用模式。

当TLP的TH位为1时,表示在当前TLP中包含Processing Hint字段,PH字段由PCIe V2.1总线规范引入。该字段的引入可以使目标设备根据源设备对数据的使用情况,合理地安排数据缓冲,从而降低PCIe设备的访问延时,并最大化地利用PCIe设备中的数据缓冲。

Processing Hint字段的产生与智能设备的大量涌现密切相关。在智能设备中,含有一个运算能力相当强的处理器。智能设备与处理器之间的数据交换,实质上等效于两个处理器系统之间的数据传递。有些智能设备,如在显卡中使用的GPU(Graphic Processing Unit)和GP-GPU(Gerneral Purpose GPU)的处理能力甚至超过多数通用处理器。智能设备与处理器系统可以采用图6-14所示的拓扑结构连接。

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

图6-14 智能外设与处理器系统的连接

在这种处理器系统中,内部互连网络处于核心地位,上图所示的网络是一个理想的全互连结构。在这种互连结构中,处理器、存储器和智能设备与网络节点相连。在这种结构中,在网络节点上连接的设备都含有一个处理器,包括存储器。

当智能设备与处理器进行通信时,如果能够预知数据的使用情况,无疑能够减低数据的访问延时。如智能设备1将一组数据写入智能存储器1之后,如果这个智能存储器1能够预测这组数据将很快被再次使用,则可以将这组数据放入到高速缓冲中,而不必放入低速缓冲中。当这组数据被再次使用时,智能存储器1可以很快将数据从高速缓冲中读出,从而缩短了访问延时。

PCIe总线引入了PH字段的主要目的是为了加速外部设备访问主存储器,即DMA操作,同时也兼顾SMP处理器系统对PCIe设备的访问。但是PH字段仍然没有完全包含上述模型的所有内容,因为在上述模型中,智能存储器是独立与PCIe体系结构的RC的,而且智能外设之间具有独立连接通路,在这种模型中,芯片内部的互连网络是真正的设计核心。目前在P4080处理器和Boxboro-EX处理器系统中,具有全互连网络结构

1.PH字段

PCIe总线使用PH字段,使智能设备或者处理器提前预知数据的使用方法。PH字段仅在与存储器访问相关的TLP中出现,该字段由两位组成,在TLP中的位置如图6-8所示,其详细说明如表6-8所示。

表6-8 PH字段

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

当PH[1∶0]为0b01时,表示TLP中的数据经常被设备使用,包括以下四种类型。

●DWDW(Device Write after Device Write)。外部设备对一段数据进行写操作后,很快还会再次进行写操作。

●DWDR(Device Read after Device Write)。外部设备对一段数据进行写操作后,很快还会对这段数据进行读操作。

●DRDW(Device Write after Device Read)。外部设备对一段数据进行读操作后,很快还会对这段数据进行写操作。

●DRDR(Device Read after Device Read)。外部设备对一段数据进行读操作后,很快还会再次进行读操作。

当PH[1∶0]为0b10时,表示TLP中的数据经常被目标设备使用,包括以下两种类型。在进行DMA操作时,HOST处理器为目标设备,本节也以此为例说明PH字段的使用规则。

●DWHR(Host Read after Device Write)。外部设备对一段数据进行写操作后,Host处理器将很快读取这段数据。(www.chuimin.cn)

●HWDR(Device Read after Host Write)。Host处理器对一段数据进行写操作后,外部设备将很快读取这段数据。

2.Steering Tag

通过上文对PH字段的描述,可以发现PH字段提供的Processing Hint控制能力较弱,仅是一个粗颗粒的控制机制。为此PCIe总线规范提供了一个16位的ST(Steering Tag)字段,目标设备通过TLP中的Steering Tag字段可以获得较为详细的信息。

当TH位有效时,存储器写请求TLP的Tag字段被重新定义为ST[7∶0]字段,因为存储器写请求并不需要Tag字段;而对于存储器读请求TLP,TH位有效时DW BE字段被重新定义为ST[7∶0]字段,由于一些存储器读请求TLP仍然需要使用DW BE字段处理对界,因此ST字段只能应用于不需要对界的存储器读请求TLP。

当TH位有效时,这些“不需要对界”的存储器读请求TLP,将使用默认的DW BE值。如果该存储器读请求TLP的Length字段为1时,First DW BE字段的默认值为0b1111,而Last DW BE字段的默认值为0b0000;如果Le ngth字段不为1,First和Last DW BE的默认值都为0b1111。

TLP还可以支持ST[15∶8]字段,该字段是ST的扩展字段。如果一个TLP需要使用ST[15∶8]字段,必须使用TLP Prefix,因为在TLP头中已经没有足够的空间放置这些字段。该TLP Prefix也被称为TPH TLP Prefix,其格式如图6-15所示。

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

图6-15 TPH TLP Prefix格式

如上图所示,在TPH TLP Prefix的Byte 1中存放ST[15∶8]字段。在PCIe总线中,ST[15∶8]字段是可选的,实际上整个ST字段都是可选的。TPH Requester Capability结构使用ST Mode Sele ct字段定义了ST字段的三种使用模式。

●当该字段为0b000时,表示当前PCIe设备不支持ST字段,此时TLP的ST字段为全0。

●当该字段为0b001时,表示ST模式为“Interrupt Vector Mode”。此时TLP的ST字段由MSI/MSI-X的中断向量号确定。

●当该字段为0b010时,表示ST字段由PCIe设备决定。

PCIe设备可以根据TLP的属性,决定ST字段的值,为此在一个PCIe设备中,将使用ST表,存放这个设备使用的所有ST字段。这个ST表可以存放在TPH Requester Capability结构中,也可以存放在MSI-X表中。实际上ST表的存放位置并不重要,只要PCIe设备能够根据发出的TLP类型,选择合适的ST字段即可。

目前尚无支持ST字段的PCIe设备,这些PCIe设备发出的TLP中都不包含ST字段。而从PCIe总线规范V2.1中,可以发现MSI/MSI-X中断请求可以使用ST字段,当PCIe设备使用MSI或者MSI-X中断请求时,可以根据中断向量的不同,从ST表中MSI报文[26]选择合适的ST字段,然后再发向处理器系统。处理器系统收到这个MSI报文后,可以根据ST字段的不同,分别处理PCIe设备发出的中断请求。

综上所述,ST字段的主要目的是细分TLP的属性,处理器系统可以使用该字段优化数据缓冲,减小数据访问延时。ST字段的支持需要多个PCIe设备共同参与。如EP进行DMA写操作时,数据将发向RC,RC和EP都需要具有解释这个TLP所携带的ST字段的能力。

因此处理器系统在初始化PCIe设备时,需要合理地设置该设备的ST表。目前尚无支持TPH位和ST字段的PCIe设备,但是这种方法可以有效降低PCIe设备访问存储器,以及PCIe设备间数据访问的延时,从而提高PCIe链路的利用率。