浅谈PCIe体系结构
文章平均质量分 74
Sailing_W
这个作者很懒,什么都没留下…
展开
-
3.3.1 Cache一致性的基本概念
PCI设备对可Cache的存储器空间进行DMA读写的操作的过程较为复杂,有关Cache一致性的话题可以独立成书。而不同的处理器系统使用的Cache Memory的层次结构和访问机制有较大的差异,这部分内容也是现代处理器系统设计的重中之重。本节仅介绍在CacheMemory系统中与PCI设备进行DMA操作相关的,一些最为基础的概念。在多数处理器系统中,使用了以下概念描述Cache一致性的实现过原创 2017-02-12 19:46:12 · 487 阅读 · 0 评论 -
5.1 TLP的格式
当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或者多个TLP,之后才能通过PCIe总线的各个层次发送出去。TLP的基本格式如图5‑1所示。TLP的格式" TITLE="5.1 TLP的格式" />TLP的格式" />一个完整的TLP由1个或者多个TLP Prefix、TLP头、Data Payload(数据有效负载)和TLP Digest原创 2017-02-12 19:46:44 · 4093 阅读 · 0 评论 -
5.2 TLP的路由
TLP的路由是指TLP通过Switch或者PCIe桥片时采用哪条路径,最终到达EP或者RC的方法。PCIe总线一共定义了三种路由方法,分别是基于地址(Address)的路由,基于ID的路由和隐式路由(Implicit)方式。存储器和I/O读写请求TLP使用基于地址的路由方式,这种方式使用TLP中的Address字段进行路由选径,最终到达目的地。而配置读写报文、“Vendor_Defined原创 2017-02-12 19:46:46 · 611 阅读 · 0 评论 -
5.3 存储器、I/O和配置读写请求TLP
本节讲述PCIe总线定义的各类TLP,并详细介绍这些TLP的格式。在这些TLP中,有些格式对于初学者来说较难理解。读者需要建立PCIe总线中与TLP相关的一些基本概念,特别是存储器读写相关的报文格式。在PCIe总线中,存储器读写,I/O读写和配置读写请求TLP由以下几类报文组成。(1) 存储器读请求TLP和读完成TLP当PCIe主设备,RC或者EP,访问目标设备的存储器空间时,原创 2017-02-12 19:46:49 · 2388 阅读 · 1 评论 -
5.4 TLP中与数据负载相关的参数
在PCIe总线中,有些TLP含有Data Payload,如存储器写请求、存储器读完成TLP等。在PCIe总线中,TLP含有的Data Payload大小与Max_Payload_Size、Max_Read_Request_Size和RCB参数相关。下文将分别介绍这些参数的使用。5.4.1 Max_Payload_Size参数PCIe总线规定在TLP报文中,数据有效负载的最大值为4KB,但是P原创 2017-02-12 19:46:51 · 564 阅读 · 0 评论 -
第6章 MSI和MSI-X中断机制
在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制。而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息。在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提交中断请求,下文为简便起见将传递MSI/MSI-X中断消息的存储器写报文简称为MSI/MSI-X报文。不同原创 2017-02-12 19:46:54 · 2309 阅读 · 1 评论 -
6.1 MSI/MSI-X Capability结构
PCIe设备可以使用MSI或者MSI-X报文向处理器提交中断请求,但是对于某个具体的PCIe设备,可能仅支持一种报文。在PCIe设备中含有两个Capability结构,一个是MSICapability结构,另一个是MSI-XCapability结构。通常情况下一个PCIe设备仅包含一种结构,或者为MSICapability结构,或者为MSI-XCapability结构。6.1.1MSI原创 2017-02-12 19:46:56 · 3283 阅读 · 0 评论 -
6.2 PowerPC处理器如何处理MSI中断…
PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求。其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的PowerPC处理器,其中断控制器多与MPIC兼容。值得注意的是,PowerPC处理器和x86处理器处理MSI报文的方式有较大的不同。其中x86处理器使用的机制比PowerPC处理器更为合理,但是Powe原创 2017-02-12 19:46:59 · 963 阅读 · 1 评论 -
6.3 x86处理器如何处理MSI-X中断请…
PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字段包含的数据。只是MSI-X中断机制为了支持更多的中断请求,在MSI-X Capablity结构中存放了一个指向一组Message Address和Message Data字段的指针,从而一个PCIe设备可以支持的MSI-X中断请求数目大于32个,而且原创 2017-02-12 19:47:01 · 396 阅读 · 0 评论 -
第5章 PCIe总线的事务层
事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义。PCIe总线继承了PCI/PCI-X总线的大多数总线事务,如存储器读写、I/O读写、配置读写总线事务,并增加了Message总线事务和原子操作等总线事务。本节重点介绍与数据传送密切相关的总线事务,如存储器、I/O、配置读写总线事务。在PC原创 2017-02-12 19:46:41 · 706 阅读 · 0 评论 -
4.3 PCIe设备的扩展配置空间
本书在第2.3.2节讲述了PCI设备使用的基本配置空间。这个基本配置空间共由64个字节组成,其地址范围为0x00~0x3F,这64个字节是所有PCI设备必须支持的。事实上,许多PCI设备也仅支持这64个配置寄存器。此外PCI/PCI-X和PCIe设备还扩展了0x40~0xFF这段配置空间,在这段空间主要存放一些与MSI或者MSI-X中断机制和电源管理相关的Capability结构。其中所有能够原创 2017-02-12 19:46:38 · 2525 阅读 · 0 评论 -
4.2 PCIe体系结构的组成部件
PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统。在不同的处理器系统中,PCIe体系结构的实现方法略有不同。但是在大多数处理器系统中,都使用了RC、Switch和PCIe-to-PCI桥这些基本模块连接PCIe和PCI设备。在PCIe总线中,基于PCIe总线的设备,也被称为EP(Endpoint)。4原创 2017-02-12 19:46:36 · 1543 阅读 · 0 评论 -
3.3.2 PCI设备对不可Cache的存储器…
在x86处理器和PowerPC处理器中,PCI设备对“不可Cache的存储器空间”进行DMA读写的过程并不相同。其中PowerPC处理器对“不可Cache的存储器空间”进行DMA读写进行了专门的处理,而x86处理器在对这类空间操作时,效率相对较低。1 x86处理器x86处理器使用MTRR(Memory Type RangeRegister)寄存器设置存储器空间的属性,如果存储器空间为“可Ca原创 2017-02-12 19:46:15 · 497 阅读 · 0 评论 -
3.3.3 PCI设备对可Cache的存储器空…
PCI设备向“可Cache的存储器空间”进行读操作的过程相对简单。对于x86处理器或者PowerPC处理器,如果访问的数据在Cache中命中,CPU会通知FSB总线,PCI设备所访问的数据在Cache中。首先HOST主桥发起存储器读总线事务,并在Request Phase中,提供地址。Snoop Agent在Snoop Phase进行总线监听,并通过HIT#和HITM#信号将监听结果通知给Re原创 2017-02-12 19:46:18 · 272 阅读 · 0 评论 -
3.3.4 PCI设备进行DMA写时发生Cach…
如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况。第一种情况是命中的Cache行其状态为E,即Cache行中的数据与存储器中的数据一致;而第二种情况是命中的Cache行其状态为S。其中E位为1表示该数据在SMP处理器系统中,有且仅有一个CPU的Cache中具有数据副本;而S位为1表示在SMP处理器系统中,该数据至少在两个以上CPU的Cache中具有数据副本。当原创 2017-02-12 19:46:20 · 358 阅读 · 0 评论 -
3.3.5 DMA写时发生Cache命中的优化
在许多高性能处理器中,还提出了一些新的概念,以加速外设到存储器的DMA写过程。如Freescale的I/O Stashing和Intel的IOAT技术。如图3‑8所示,当设备进行存储器写时,如果可以对Cache直接进行写操作时,即便这个存储器写命中了一个状态为M的Cache行,可以不将该Cache行的数据回写到存储器中,而是直接将数据写入Cache,之后该Cache行的状态依然为M。采用这种方原创 2017-02-12 19:46:23 · 376 阅读 · 0 评论 -
3.4 预读机制
随着处理器制造工艺的提高,处理器主频越来越高,存储器和外部设备的访问速度虽然也得到极大的提升,但是依然不与处理器主频的提升速度成正比,从而处理器的运行速度和外部设备的访问速度之间的差距越来越大,存储器瓶颈问题愈发严重。虽然Cache的使用有效缓解了存储器瓶颈问题,但是仅使用Cache远远不够。因为不管Cache的命中率有多高,总有发生Cache行Miss的情况。一旦Cache行出现Miss,处原创 2017-02-12 19:46:25 · 758 阅读 · 0 评论 -
第II篇PCI Express体系结构概述
虽然PCI总线取得了巨大的成功,但是随着处理器主频的不断提高,PCI总线提供的带宽愈发显得捉襟见肘。PCI总线也在不断地进行升级,其位宽和频率从最初的32位/33MHz扩展到64位/66MHz,而PCI-X总线更是将总线频率提高到533MHz,能够提供的最大理论带宽为4263MB。但是PCI总线仍无法解决其体系结构中存在的一些缺陷。PCI总线面临着一系列挑战,包括带宽、流量控制和数据传送质量等。原创 2017-02-12 19:46:28 · 423 阅读 · 0 评论 -
第4章 PCIe总线概述
随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCIe总线使用了高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。这使得PCIe与原创 2017-02-12 19:46:31 · 361 阅读 · 0 评论 -
4.1 PCIe总线的基础知识
与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。4.1.1 端到端的数据传递PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发原创 2017-02-12 19:46:33 · 6222 阅读 · 0 评论 -
结束语
“浅谈PCIe体系结构”的更新到此告一段落。这些内容主要出自之前书写的《PCIExpress体系结构导读》,因为与出版社的协议,无法在此处共享全文,但是也包含了与PCI与PCIe总线相关的最基础的内容。原书正在组织第二次印刷,我却很难有再版的想法。事实上如果我能决定一些事情,不会出现第二次印刷。书中的错误令我不安,却鲜有读者指出。我意识到产生这些现象的原因是更多的入门者在阅读这些内容。与国外的原创 2017-02-12 19:47:04 · 428 阅读 · 0 评论