表11-4 PCI桥使用的数据访问顺序1.Posted存储器写通过PCI桥时需要按序完成Posted存储器写通过PCI桥时需要遵循“先进先出”的原则,否则将会引发数据完整性问题。......
2023-10-20
PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率。当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而HOST主桥通过FSB总线[37]向存储器控制器进行读写操作时,需要进行Cache共享一致性操作。
PCI设备与主存储器进行的Cache共享一致性增加了HOST主桥的设计复杂度。在高性能处理器中Cache状态机的转换模型十分复杂。而HOST主桥是FSB上的一个设备,需要按照FSB规定的协议处理这个Cache一致性,而多级Cache的一致性和状态转换模型一直是高性能处理器设计中的难点。
不同的HOST主桥处理PCI设备进行的DMA操作时,使用的Cache一致性的方法并不相同。因为Cache一致性操作不仅与HOST主桥的设计相关,而且主要与处理器和Cache Memory系统设计密切相关。
PowerPC和x86处理器可以对PCI设备所访问的存储器进行设置,其设置方法并不相同。其中PowerPC处理器,如MPC8548处理器,可以使用Inbound寄存器的RTT字段和WTT字段,设置在PCI设备进行DMA操作时,是否需要进行Cache一致性操作,是否可以将数据直接写入Cache中。RTT字段和WTT字段的详细说明见第2.2.3节。(www.chuimin.cn)
而x86处理器可以使用MTRR(Memory Type Range Registers)设置物理存储器区间的属性是否为可Cache空间。下文分别讨论在PowerPC与x86处理器中,PCI设备进行DMA写操作时,如何进行Cache一致性操作。
但是与PowerPC处理器相比,x86处理器在处理PCI设备的Cache一致性上略有不足,特别是网络设备与存储器系统进行数据交换的效率。因为x86处理器重点优化的是PCIe设备,目前x86处理器使用的IOAT(I/O Acceleration Technology)技术,显著提高了PCIe设备与主存储器进行数据通信的效率。
有关PCI Express体系结构导读的文章
表11-4 PCI桥使用的数据访问顺序1.Posted存储器写通过PCI桥时需要按序完成Posted存储器写通过PCI桥时需要遵循“先进先出”的原则,否则将会引发数据完整性问题。......
2023-10-20
下面以存储器读为例,说明PCI-X设备如何使用Split总线事务。这些PCI-X桥使用Split Response周期结束当前总线事务,释放上游PCI总线。之后继续转发这个存储器读请求,直到Completer认领这个存储器读请求总线事务。Completer准备好数据后,将重新申请总线,并使用存储器读完成总线事务主动地将数据传送给Requester。PCI-X总线提出的Split总线事务被PCIe总线继承。......
2023-10-20
PCI总线是由Intel公司提出的。PCI总线不是由ANSI通过的标准,但由于它是由厂家自发制定执行的标准,具有众多的优点,拥护者,执行者众多,成了事实上的标准。PCI总线共有100个引脚,如果只作为目标设备,至少需要47条,如作为主设备则需要49条。本设计使用位命令字,其定义如下:3.PCI总线基本协议PCI上的基本总线传输机制是突发成组传输。......
2023-11-22
如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况。Cache行状态为S时的处理情况与状态为E时的处理情况大同小异,PCI设备在进行写操作时也将数据直接写入主存储器,并使无效状态为S的Cache行。此时CPU对FSB总线监听时,不能简单将当前Cache行使无效,因为这个使无效操作将丢失阴影部分的有效数据。随后CPU将状态位为M的Cache行与存储器进行同步后,再使无效这个Cache行。......
2023-10-20
图2-14 PCI总线设备号的分配PCI总线推荐了一种Device Number字段与AD[31∶16]之间的映射关系。其中PCI设备0与Device Number字段的0b00000对应;PCI设备1与Device Number字段的0b00001对应,并以此类推,PCI设备15与De vice Number字段的0b01111对应。在一个处理器系统的设计中,如果在一条PCI总线上使用的PCI插槽少于4个时,笔者建议优先使用AD[17∶20]信号与PCI设备的IDSEL信号连接。......
2023-10-20
与MPC8572处理器处理MSI中断请求不同,x86处理器使用FSB的Interrupt Message总线事务,处理PCIe设备的MSI/MSI-X中断请求。而采用Interrupt Message总线事务可以有效地避免这种系统瓶颈,因为使用这种方式中断信息和中断向量将同时到达指定的CPU,而不需要使用中断响应周期获得中断向量。MCH收到这个TLP后,发现这个TLP的目的地址在FSB Interrupts存储器空间中,则将PCIe总线的存储器写请求转换为Interrupt Message总线事务,并在FSB总线上广播。......
2023-10-20
值得注意的是,在不同处理器体系结构中,Linux系统初始化PCI总线的过程并不相同。Linux x86将继承BIOS对PCI总线的初始化成果,并在此基础上进行Linux PCI子系统的初始化,并执行PCI设备的Linux驱动程序的初始化模块。在Linux x86中,PCI总线的初始化由一系列模块协调完成。在Linux PCI中,有两个常用的数据结构,分别为pci_dev和pci_bus结构。......
2023-10-20
PCI桥将下游传递到上游的LOCK总线事务转换为普通的总线事务,即去掉这个LOCK标志。如果该LOCK总线事务是Non-Posted总线事务,此时PCI桥并不能立即完成这个LOCK总线事务,因为PCI桥还需要将“Non-Posted总线请求”对应的总线完成信息传递给发起者之后,LOCK总线事务才能最终完成。该PCI桥不会使用Delayed总线事务接收其他Non-Posted总线事务,也不会暂存这些总线事务。丢弃所有暂存在PCI桥中的De-layed总线事务;允许LOCK总线事务超越任何读写请求。......
2023-10-20
相关推荐