如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况。Cache行状态为S时的处理情况与状态为E时的处理情况大同小异,PCI设备在进行写操作时也将数据直接写入主存储器,并使无效状态为S的Cache行。此时CPU对FSB总线监听时,不能简单将当前Cache行使无效,因为这个使无效操作将丢失阴影部分的有效数据。随后CPU将状态位为M的Cache行与存储器进行同步后,再使无效这个Cache行。......
2023-10-20
在许多高性能处理器中,还提出了一些新的概念,以加速外设到存储器的DMA写过程。如Freescale的I/O Stashing和Intel的IOAT技术。
如图3-8所示,当设备进行存储器写时,如果可以对Cache直接进行写操作,即便这个存储器写命中了一个状态为M的Cache行,也不必将该Cache行的数据回写到存储器中,而是直接将数据写入Cache,之后该Cache行的状态依然为M。采用这种方法可以有效提高设备对存储器进行写操作的效率。采用直接向Cache行写的方法,PCI设备对存储器写命中一个状态为M的Cache行时,将执行以下操作。
(1)HOST主桥将对存储器的写请求发送到FSB总线上。
(2)CPU通过对FSB监听,发现该写请求在某个Cache行中命中,而且该Cache行的状态为M。
(3)HOST主桥将数据直接写入到Cache行中,并保持Cache行的状态为M。注意此时设备不需要将数据写入存储器中。
从原理上看,这种方法并没有奇特之处,只要Cache能够提供一个接口,使外部设备能够直接写入即可。但是从具体实现上看,设备直接将数据写入Cache中,还是有相当大的难度。特别是考虑在一个处理器中,可能存在多级Cache,当CPU进行总线监听时,可能是在L1、L2或者L3 Cache中命中,此时的情况较为复杂,多级Cache间的协议状态机远比FSB总线协议复杂得多。
在一个处理器系统中,如果FSB总线事务在“与FSB直接相连的Cache”中命中时,这种情况相对容易处理;但是在与BSB(Back-Side Bus)直接相连的Cache命中时,这种情况较难处理。下面分别对这两种情况进行讨论,在一个处理器中,采用FSB和BSB连接Cache的拓扑如图3-9所示。(www.chuimin.cn)
图3-9 采用FSB/BSB进行Cache连接
当采用FSB总线连接L2 Cache时,L2 Cache直接连接到FSB总线上,设备通过FSB总线向L2 Cache进行写操作并不难实现,MPC8548处理器就是采用了这种结构将L2 Cache直接连接到FSB总线上。
但是由于FSB总线的频率低于BSB总线频率,因此采用这种结构将影响L2 Cache的访问速度,为此高端处理器多采用BSB总线连接L2 Cache,x86处理器在Pentium Pro之后的高性能处理器都使用BSB总线连接L2 Cache,Freescale的G4系列处理器和最新的P4080处理器也使用BSB总线连接L2 Cache。
当L2 Cache没有直接连接到FSB上时,来自外部设备的数据并不容易到达BSB总线。除了需要考虑Cache连接在BSB总线的情况外,在外部设备进行DMA操作时,还需要考虑多处理器系统的Cache共享一致性协议。设计一个专用通道,将数据从外部设备直接写入到处理器的Cache中并不容易实现。Intel的IOAT和Freescale的I/O Stashing可能使用了这种专用通道技术,直接对L1和L2 Cache进行写操作,并在极大增加了设计复杂度的前提下,提高了处理器系统的整体效率。
以上对Cache进行直接写操作,仅是Intel的IOAT和Freescale的I/O Stashing技术的一个子集。目前Intel和Freescale没有公开这些技术的具体实现细节。在一个处理器系统中,可能存在多级Cache,这些Cache的层次组成结构和状态机模型异常复杂,本章对这些内容不做进一步说明。
有关PCI Express体系结构导读的文章
如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况。Cache行状态为S时的处理情况与状态为E时的处理情况大同小异,PCI设备在进行写操作时也将数据直接写入主存储器,并使无效状态为S的Cache行。此时CPU对FSB总线监听时,不能简单将当前Cache行使无效,因为这个使无效操作将丢失阴影部分的有效数据。随后CPU将状态位为M的Cache行与存储器进行同步后,再使无效这个Cache行。......
2023-10-20
当软件启动DMA写过程后,DMA控制逻辑将组织存储器写TLP发送给RC。Capric卡使用4DW长度的TLP头,即使用64位地址编码格式。本节使用M保存TLP中使用的实际长度,其值如公式12-4所示。当M大于0x20时,Capric卡进行DMA写时需要发送多个存储器写请求TLP,而M小于或等于0x20时仅需要发送1个存储器写请求TLP。......
2023-10-20
要了解具体芯片的DMA使用和管理,首先要看一下硬件的设计。图4-44DM 3730 SDMA与其他模块联系系统框图从图4-44可见,SDMA共有96个DMA请求,用于设备请求DMA进行数据传输处理。SDMA可以访问到外设并可以响应芯片外部的DMA请求。为了提高整个的DMA性能,DMA提供多个中断信号给处理器,来加速系统对DMA处理数据过程的响应。DMA是很多驱动都需要使用的基础功能之一,以上进行了详细的代码级分析。......
2023-11-22
填写RD_DMA_SIZE寄存器,以字节为单位。填写DCSR2寄存器的mrd_start位,启动DMA读。等待DMA读完成中断产生后,结束DMA读。从硬件设计的角度来看,DMA读过程比DMA写过程复杂。Capric卡的1次DMA读操作使用两种TLP报文,并通过发送部件和接收部件协调完成。如果一次DMA读请求的数据大于512B[84]时,DMA控制逻辑需要发送多个存储器读请求TLP给RC,而且在DMA读操作中需要进行数据对界。DMA读操作的详细实现过程见第12.2.2节。......
2023-10-20
为了解决这一矛盾,可用RAM芯片经过特殊连接,作为程序存储器使用,使其既可以运行程序又可以修改程序,成为一个可读/写的程序存储器。图8-16可读/写程序存储器应用举例图图8-16中I芯片2764是一个只读程序存储器,用于存放监控程序。另外,还专门为可读/写程序存储器设置了一个双向开关,以便进行状态选择。......
2023-11-17
PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率。PCI设备与主存储器进行的Cache共享一致性增加了HOST主桥的设计复杂度。在高性能处理器中Cache状态机的转换模型十分复杂。因为Cache一致性操作不仅与HOST主桥的设计相关,而且主要与处理器和Cache Memory系统设计密切相关。因为x86处理器重点优化的是PCIe设备,目前x86处理器使用的IOAT技术,显著提高了PCIe设备与主存储器进行数据通信的效率。......
2023-10-20
所以若天同在午宫与擎羊同宫,称为“马头带箭格”,反主其人能为国效劳,掌握兵符大权,是立功战场的大将。天同入命者往往不喜欢劳动,希望坐享其成。②或者天同、太阴在子守田宅宫,与吉星会合并吉化亦是,但须命宫和三方有吉方作此论。天同的阳水之智表现在才学、学术等方面。而且,凡天同入命之人,在老年更容易有感情问题。这是因为太阴在子宫为入庙,宫中的天同、太阴不需要擎羊的激发,所以喜见辅佐诸曜,主其人清贵。......
2023-10-29
下面以图3-2所示的处理器系统为例,说明PCI设备11向存储器进行DMA写的数据传送过程。本节不介绍PCI设备进行DMA读的过程,而将这部分内容留给读者分析。假定PCI设备11需要将一组数据发送到0x1000-0000~0x1000-FFFF这段存储器域的地址空间中。这个DMA写具体的操作流程如下。PCI设备11将数据发送到PCI设备42的第5、6步如下所示。......
2023-10-20
相关推荐