图12-1 Capric卡的组成结构Capric卡基于PCIe总线,主要功能是通过DMA读写方式与HOST处理器进行数据交换。Capric卡由LogiCORE、发送部件、接收部件、BAR空间、DMA控制逻辑和FPGA片内SRAM组成,其工作原理较为简单。Capric卡仅使用了BAR0空间,处理器使用存储器映像寻址方式,而不是I/O映像寻址方式访问BAR0空间。......
2023-10-20
PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。但是PCI总线、系统总线和处理器体系结构之间依然存在着紧密的联系。
PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,如处理器的Cache共享一致性和数据完整性(Data Consistency,也称为Memory Consistency),以及如何与处理器进行数据交换等一系列内容。其中Cache共享一致性和数据完整性是现代处理器局部总线的设计的重点和难点,也是本书将重点讲述的主题之一。
孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个部分。深入理解PCI总线需要了解一些与处理器体系结构相关的知识。这些知识是本书侧重描述的,同时也是PCI总线规范忽略的内容。脱离实际的处理器系统,不容易也不可能深入理解PCI总线规范。
对于今天的读者来说,PCI总线提出的许多概念略显过时,也有许多不足之处。但是在当年,PCI总线与之前存在的其他并行局部总线如ISA、EISA和MCA总线相比,具有许多突出的优点,是一个全新的设计。
(1)PCI总线空间与处理器空间隔离
PCI设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过HOST主桥隔离。处理器需要通过HOST主桥才能访问PCI设备,而PCI设备需要通过HOST主桥才能访问主存储器。在HOST主桥中含有许多缓冲,这些缓冲使得处理器总线与PCI总线工作在各自的时钟频率中,互不干扰。HOST主桥的存在也使得PCI设备和处理器可以方便地共享主存储器资源。
处理器访问PCI设备时,必须通过HOST主桥进行地址转换;而PCI设备访问主存储器时,也需要通过HOST主桥进行地址转换。HOST主桥的一个重要作用就是将处理器访问的存储器地址转换为PCI总线地址。PCI设备使用的地址空间是属于PCI总线域的,这与存储器地址空间不同。
x86处理器对PCI总线域与存储器域的划分并不明晰,这也使得许多程序员并没有准确地区分PCI总线域地址空间与存储器域地址空间。而本书将反复强调存储器地址和PCI总线地址的区别,因为这是理解PCI体系结构的重要内容。
PCI规范并没有对HOST主桥的设计进行约束。每一个处理器厂商使用的HOST主桥,其设计都不尽相同。HOST主桥是联系PCI总线与处理器的核心部件,掌握HOST主桥的实现机制是深入理解PCI体系结构的前提。
本书将以Freescale的PowerPC处理器和Intel的x86处理器为例,说明各自HOST主桥的实现方式,值得注意的是本书涉及的PowerPC处理器仅针对Freescale的PowerPC处理器,而不包含IBM的Power和AMCC的PowerPC处理器。而且如果没有特别说明,本书中涉及的x86处理器特指Intel的处理器,而不是其他厂商的x86处理器。
(2)可扩展性
PCI总线具有很强的扩展性。在PCI总线中,HOST主桥可以直接推出一条PCI总线,这条总线也是该HOST主桥管理的第一条PCI总线,该总线还可以通过PCI桥扩展出一系列PCI总线,并以HOST主桥为根节点,形成1棵PCI总线树。这些PCI总线都可以连接PCI设备,但是在1棵PCI总线树上,最多只能挂接256个PCI设备(包括PCI桥)。
在同一条PCI总线上的设备间可以直接通信,而并不会影响其他PCI总线上设备间的数据通信。隶属于同一棵PCI总线树上的PCI设备,也可以直接通信,但是需要通过PCI桥进行数据转发。
PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI桥也是有别于其他局部总线的一个重要部件。在“以HOST主桥为根节点”的PCI总线树中,每一个PCI桥下也可以连接一个PCI总线子树,PCI桥下的PCI总线仍然可以使用PCI桥继续进行总线扩展。
PCI桥可以管理这个PCI总线子树,PCI桥的配置空间含有一系列管理PCI总线子树的配置寄存器。在PCI桥的两端,分别连接了两条总线,分别是上游总线(Primary Bus)和下游总线(Secondary Bus)。其中与处理器距离较近的总线被称为上游总线,另一条被称为下游总线。这两条总线间的通信需要通过PCI桥进行。PCI桥中的许多概念被PCIe总线采纳,理解PCI桥也是理解PCIe体系结构的基础。(www.chuimin.cn)
(3)动态配置机制
PCI设备使用的地址可以根据需要由系统软件动态分配。PCI总线使用这种方式合理地解决了设备间的地址冲突,从而实现了“即插即用”功能。因此PCI总线不需要使用ISA或者EISA接口卡为解决地址冲突而使用的硬件跳线。
每一个PCI设备都有独立的配置空间,在配置空间中含有该设备在PCI总线中使用的基地址,系统软件可以动态配置这个基地址,从而保证每一个PCI设备使用的物理地址并不相同。PCI桥的配置空间中含有其下PCI子树所能使用的地址范围。
(4)总线带宽
PCI总线与之前的局部总线相比,极大提高了数据传送带宽,32位/33MHz的PCI总线可以提供132MB/s的峰值带宽,而64位/66MHz的PCI总线可以提供的峰值带宽为532MB/s。虽然PCI总线所能提供的峰值带宽远不能和PCIe总线相比,但是与之前的局部总线ISA、EISA和MCA总线相比,仍然具有极大的优势。
ISA总线的最高主频为8MHz,位宽为16,其峰值带宽为16MB/s;EISA总线的最高主频为8.33MHz,位宽为32,其峰值带宽为33MB/s;而MCA总线的最高主频为10MHz,最高位宽为32,其峰值带宽为40MB/s。PCI总线提供的峰值带宽远高于这些总线。
(5)共享总线机制
PCI设备通过仲裁获得PCI总线的使用权后,才能进行数据传送,在PCI总线上进行数据传送,并不需要处理器进行干预。
PCI总线仲裁器不在PCI总线规范定义的范围内,也不一定是HOST主桥和PCI桥的一部分。虽然绝大多数HOST主桥和PCI桥都包含PCI总线仲裁器,但是在某些处理器系统的设计中也可以使用独立的PCI总线仲裁器。如在PowerPC处理器的HOST主桥中含有PCI总线仲裁器,但是用户可以关闭这个总线仲裁器,而使用独立的PCI总线仲裁器。
PCI设备使用共享总线方式进行数据传递,在同一条总线上,所有PCI设备共享同一总线带宽,这将极大地影响PCI总线的利用率。这种机制显然不如PCIe总线采用的交换结构,但是在PCI总线盛行的年代,半导体的工艺、设计能力和制作成本决定了采用共享总线方式是当时的最优选择。
(6)中断机制
PCI总线上的设备可以通过四根中断请求信号INTA~D#向处理器提交中断请求。与ISA总线上的设备不同,PCI总线上的设备可以共享这些中断请求信号,不同的PCI设备可以将这些中断请求信号“线与”后,与中断控制器的中断请求引脚连接。PCI设备的配置空间记录了该设备使用这四根中断请求信号的信息。
PCI总线还进一步提出了MSI(Message Signal Interrupt)机制,该机制使用存储器写总线事务传递中断请求,并可以使用x86处理器FSB(Front Side Bus)总线提供的Interrupt Message总线事务,从而提高了PCI设备的中断请求效率。
虽然从现代总线技术的角度来看,PCI总线仍有许多不足之处,但也不能否认PCI总线已经获得了巨大的成功。不仅x86处理器将PCI总线作为标准的局部总线连接各类外部设备,PowerPC、MIPS和ARM[1]处理器也将PCI总线作为标准局部总线。除此之外,基于PCI总线的外部设备,如以太网控制器、声卡、硬盘控制器等,也已经成为主流。
有关PCI Express体系结构导读的文章
图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 V2.1总线规范引入原子操作的概念,原子操作仅能在存储器访问中使用。PCIe设备使用一次原子操作可以实现之前需要多次数据操作才能完成的数据交换任务,除此之外PCIe设备使用原子操作还可以避免使用带锁的PCIe总线事务。这一过程不可被其他总线事务中断,PCIe设备保证这一过程为原子操作。目前,PCIe总线共支持3种原子操作,分别为FetchAdd、Swap和CAS原子操作。使用完成报文返回PCI总线地址中的原始数据。......
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
这两种PLP在链路训练的多个状态机中使用,下文将进一步介绍这两种字符序列。其中TS1序列的主要作用是检测PCIe链路的配置信息,而TS2序列确认TS1序列的检测结果。不同的PCIe链路需要使用不同数目FTS序列,才能使接收端的PLL锁定接收时钟。PCIe设备可以根据链路的使用情况确定当前链路是否处于Electrical Idle状态,而不是必须收到Idle序列后进入该状态。......
2023-10-20
物理层主要由物理层逻辑模块和物理层电气模块组成,本节主要介绍物理层的逻辑模块,包括8/10b编码、链路训练等一些最基础的内容,并通过介绍差分信号的工作原理,简要介绍物理层的电气模块。物理层的电气模块与差分信号的工作原理密切相关,这部分原理包括一系列与信号完整性相关的课题。PCIe总线的物理层对信号传送进行了一系列约定,以保证信号传递的完整性。......
2023-10-20
PCIe总线进行链路训练的主要目的是初始化PCIe链路的物理层、端口配置信息、相应的链路状态,并了解链路对端的拓扑结构,以便PCIe链路两端的设备进行数据通信。此时该PCIe设备在进行链路训练时,必须通知对端链路该设备实际使用的链路状态。此外PCIe总线在链路训练过程中,还需要确定数据传送率。PCIe总线进行链路训练时,需要进行RC或者Switch的Link Number和Lane Number的初始化,在第8.2节中将详细介绍这些内容。......
2023-10-20
相关推荐