PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个部分。深入理解PCI总线需要了解一些与处理器体系结构相关的知识。PCI规范并没有对HOST主桥的设计进行约束。PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI总线提供的峰值带宽远高于这些总线。......
2023-10-20
PCIe V2.1总线规范引入原子操作的概念,原子操作仅能在存储器访问中使用。其中RC和EP可以作为原子操作的请求者和接收者,而Switch和多端口RC支持原子操作的转发。PCIe总线支持三类原子操作,分别是EP-to-EP,EP-to-RC和RC-to-EP的原子操作。
原子操作有利于提高智能设备[25]之间以及智能设备与处理器之间的数据传递效率。当智能设备与处理器进行数据交换时,将不可避免地使用某种锁机制访问临界资源。传统的做法是使用“带锁的”存储器总线事务实现这些锁机制。而使用原子操作可以在很大程度上降低“带锁的”存储器读写请求TLP的使用,从而提高PCIe总线的使用效率。
PCIe设备使用一次原子操作可以实现之前需要多次数据操作才能完成的数据交换任务,除此之外PCIe设备使用原子操作还可以避免使用带锁的PCIe总线事务。原子操作的基本过程如下所示。
(1)源设备向目标设备发送原子操作请求TLP。原子操作请求TLP使用Non-Posted方式进行数据传递,且使用基于地址的路由方式。
(2)当目标设备收到这个原子操作请求TLP之后,将从这个TLP指定的存储器空间中读取原始数据。
(3)目标设备将“原始数据”与“原子操作请求TLP中包含的操作数”进行某种规定的运算后产生一个新的数据。这一过程不可被其他总线事务中断,PCIe设备保证这一过程为原子操作。这个步骤对于原子操作至关重要,也是原子操作的实现要点。
(4)当上述原子操作执行完毕后,目标设备使用原子操作完成报文向源设备传送数据,并将这个新的数据写入目标设备的存储器空间中。原子操作完成报文与存储器读完成的传递方式类似。
由以上分析,可以发现所谓原子操作是指PCIe设备“读取原始数据”、“运算”和“产生新的数据”这三个过程不可被其他操作打断。这三个过程将在目标设备中一次完成,并由目标设备的硬件逻辑保证这三个过程不会被其他TLP干扰。
由上文所述,一个完整的原子操作由原子操作请求TLP和完成TLP组成。其中原子操作请求TLP的报文头与存储器请求TLP类似,如图6-8所示。原子操作请求TLP具有Data Payload字段,在Data Paylaod中包含原子操作请求TLP使用的操作数。
目前,PCIe总线共支持3种原子操作,分别为FetchAdd、Swap和CAS原子操作。不同的原子操作使用的操作数个数并不相同,其中FetchAdd和Swap原子操作使用一个操作数,而CAS原子操作使用两个操作数。
1.FetchAdd操作
FetchAdd操作支持32b或者64b的操作数。如果该TLP的Length字段为1DW时,操作数的长度为32b;如果该TLP的Length字段为2DW时,操作数的长度为64b。FetchAdd操作的执行过程如下所示。
(1)PCIe设备从TLP的指定PCI总线地址中获得原始数据。
(2)将原始数据与TLP中的操作数相加,并得到一个新的数据。相加的结果忽略进位与溢出位。
(3)将这个新的数据写入TLP指定的PCI总线地址中。(www.chuimin.cn)
(4)使用完成报文返回指定PCI总线地址中的原始数据。
2.Swap总线事务
Swap操作也支持32b或者64b的操作数,其原则与FetchAdd操作完全一致。Swap操作的执行过程如下所示。
(1)PCIe设备从TLP指定的PCI总线地址中读取原始数据。
(2)将TLP中的操作数写入TLP指定的PCI总线地址。
(3)使用完成报文返回PCI总线地址中的原始数据。
3.CAS总线事务
CAS操作支持32b、64b或者128b的操作数。如果该TLP的Length字段为2DW时,操作数的长度为32b;如果该TLP的Length字段为4DW时,操作数的长度为64b;如果该TLP的Length字段为8DW时,操作数的长度为128b。CAS总线事务含有两个操作数,分别为“Compare”和“Swap”。CAS操作的执行过程如下所示。
(1)PCIe设备从TLP指定的PCI总线地址中获得原始数据。
(2)将原始数据与“Compare”操作数进行比较。
(3)如果结果相等,则将“Swap”操作数写入TLP指定的位置。
(4)使用完成报文返回PCI总线地址中的原始数据。
智能设备之间以及智能设备与处理器之间如果需要使用“Spin Lock”操作时,可以使用CAS原子操作实现。值得注意的是,在x86处理器的指令集中,也含有CAS类指令,该指令是实现“Spin Lock”的基础。但是在处理器系统中使用的“Spin Lock”操作与智能设备使用的“Spin Lock”操作在实现上有所不同。
有关PCI Express体系结构导读的文章
PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个部分。深入理解PCI总线需要了解一些与处理器体系结构相关的知识。PCI规范并没有对HOST主桥的设计进行约束。PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI总线提供的峰值带宽远高于这些总线。......
2023-10-20
图12-1 Capric卡的组成结构Capric卡基于PCIe总线,主要功能是通过DMA读写方式与HOST处理器进行数据交换。Capric卡由LogiCORE、发送部件、接收部件、BAR空间、DMA控制逻辑和FPGA片内SRAM组成,其工作原理较为简单。Capric卡仅使用了BAR0空间,处理器使用存储器映像寻址方式,而不是I/O映像寻址方式访问BAR0空间。......
2023-10-20
PCI Express Extended Capabilities结构存放在PCI配置空间0x100之后的位置,该结构是PCIe设备独有的,PCI设备并不支持该结构。在一个PCIe设备中可能含有多个PCI Express Extended Capabilities结构,并形成一个单向链表,其中第一个Capability结构的基地址为0x100,其结构如图4-19所示。图4-19 PCI Express Extended Capabilities结构一个PCI Express Extended Capabilities结构由以下参数组成。但是在PCIe总线中,这些扩展的Capability结构并没有得到充分利用。本节仅详细介绍PCI Express Extended Capabilities结构组中的MFVC结构。......
2023-10-20
PCIe总线的序基于PCI总线的序,并进行了许多扩展。在TLP的Attr字段中有一个Relaxed Ordering位,表示该TLP是否支持PCIe总线的Re-laxed Ordering方式,但是TLP是否可以使用Relaxed Ordering还与这个TLP经过的设备有关。目前大多数PCIe设备不支持Relaxed ordering方式进行TLP的传递。在PCIe总线中,所有数据传送类型,如存储器、I/O、配置和Message总线事务都需要遵循规定的传送顺序。......
2023-10-20
在Upstream节点、Current节点和Downstream节点中存在两个VC,下文以其中的一个VC为例,说明如何使用Credit-Based机制进行数据传递。为简便起见,本章仅讨论在单向通路下,Credit-Based流量控制机制的原理与实现。Credit-Based机制需要使用以下参数进行报文传递。Credit-Based流量控制使用的各个参数之间的关系如图9-5所示。Current节点将这个值作为Credit,发送到Upstream节点。......
2023-10-20
YC/T 297—2009规定了烟用香精和料液中砷、铅、镉、铬、镍的测定方法——石墨炉原子吸收光谱法。当原子吸收光谱仪元素灯能量稳定后,分析标准工作溶液,得到元素各级浓度及相应的吸光度,绘制标准工作曲线,线性相关系数R2≥0.995,然后分析待测试样。......
2023-06-29
机床操作面板用于机床的操作和控制,它可从CNC生产厂家购买标准产品,也可由机床生产厂家自己设计、制作。图7.1-2 FANUC机床操作面板FANUC对机床操作面板上的按键/LED指示灯功能定义见表7.1-1。图7.1-3 附加机床操作面板附加机床面板安装有急停按钮、进给倍率调节旋钮、主轴倍率调节旋钮、存储器保护旋钮以及CNC启动/停止按钮。......
2023-06-25
这两种PLP在链路训练的多个状态机中使用,下文将进一步介绍这两种字符序列。其中TS1序列的主要作用是检测PCIe链路的配置信息,而TS2序列确认TS1序列的检测结果。不同的PCIe链路需要使用不同数目FTS序列,才能使接收端的PLL锁定接收时钟。PCIe设备可以根据链路的使用情况确定当前链路是否处于Electrical Idle状态,而不是必须收到Idle序列后进入该状态。......
2023-10-20
相关推荐