PCI系统结构(第四版) 第7章 之四

上一篇 / 下一篇  2008-01-09 18:39:25 / 个人分类:读书笔记

写存储器

   存储器写命令

   这个命令用于传送一个或更多的数据项(双字或四字)到存储器中。当目标在每个数据段中有效IRDY#时,它就保证负责维护数据的一致性。这项工作的完成是通过确保所有透明软件放入缓冲区要稍稍超前同步事件如中断,或更新IO状态寄存器,或通过包括放置写缓冲器的设备(如桥)传送存储器标记。

   存储器写与使无效命令

   问题:见图7-6,假定一个PCI主设备开始存储器写主存储器。

   HOST/PCI桥在处理器总线上开始交易,允许处理器的CACHE侦测交易。处理器之一遇到修改行产生一个侦测,这意味着主设备将更新存储器中的稳定行。一种选择是CACHE无效CACHE行,这将是错误的,有修改标记的行事实上表明行中的一些或所有的信息比主设备试图写进的相符合的行更正确。由当前主设备执行的存储器写命令可以更新所有的或一部分存储器行(使用存储器写命令不能指出写多少数据),修改的数据是当前的数据而非已在处理的修改行相应位置上的数据。修改CACHE行可能需修改一些数据是指当前的数据,而非已存入存储器中的数据,也是PCI主设备没有写完的数据。

7-6 系统模块图举例

    如果HOST/PCI桥允许PCI主设备完成存储器写进主存储器,然后处理器快速修改CACHE行到主存储器,那么由主设备写的数据超过在CACHE行中的数据(其中一些行比由主设备写的字节陈旧),这显然是不能接受的。这里有三种可能发生的过程。

1. 第一个行为过程正处在写操作的PCI主设备放弃总线(发出一个重试)。HOST/PCI桥允许处理器传送或冲刷修改的CACHE行给主存储器,因为在CACHE行被冲进存储器后,主设备随后立即更新所有的或一部分存储器行,所以处理器无效CACHE行的备份。下一时间主设备重试存储器写,在处理器CACHE中再次侦测它,此时产生一个侦测失败。因此允许主设备将数据写进存储器行中,存储器行此时保存最新数据。

2. 另一种行动过程是HOST/PCI桥接收PCI主设备所写的第一行(或者,如果它是一个短数据写,就是子集)放入桥的缓冲区中,同时,桥发送侦测返给处理器。如果碰到一个修改行,处理器将修改的行写到桥的另一个缓冲区,然后桥将主设备的写数据合并进处理器提供的修改行,然后将最终合并行写进存储器中。

3. 第三个行为过程是将在主设备交易的第一个数据插入等待状态(允许HOST/PCI桥保持TRDY#无效从主设备的有效FRAME#开始后的32PCI时钟),同时,桥发送侦测给处理器,并且如果碰到修改行,处理器将修改行写进桥中的一个缓冲区。桥开始接收来自主设备的写数据,并且将主设备的写数据合并进处理器提供的修改行,然后将最终合并行写进存储器中。

无论你怎样看它,选项1比选项23更好,但是仍 要产生延迟。如果主设备的写跨越了CACHE行边界并且第一行的处理未完成,那么桥必须插入等待状态到第二行的第一个数据段中,直到第一行处理完成。

存储器写与使无效命令描述:除了存储器写与使无效命令允许在当前交易中传送完整的CACHE行(或多CACHE行)之外,它等同于存储器写命令,这意味着CACHE行容量配置寄存器必须在主设备中执行,以便它能够确定在一个CACHE行边界开始写,以及写完整的CACHE行(或多CACHE行)。当HOST/PCI检测到一个存储器写与使无效交易开始时,它在处理器总线上开始一个侦测交易,甚至如果它检测到处理器侦测碰到了修改行,HOST/PCI桥可以立即(甚至在看到侦测结果前)接收主设备的行给存储器。这是可能的,因为主设备已经指明它在更新整个存储器行并且修改行中的所有数据量过时(因为处理器更新哪个行更早于PCI主设备由新数据写完整行)。遇到修改行的处理器也许不将它写进桥,如果它写了,桥会抛弃它,通过清楚侦测和行冲刷所需的延迟可提高性能。

在每个存储器写与使无效交易的数据段中,需要主设备必须有效所有的字节使能信号,也需要用到线性寻址。

配置读与写命令

每个PCI逻辑设备(如功能)可以提供64双字的配置寄存器,在系统起动时此配置寄存器是为系统正确操作配置逻辑设备所使用的。为访问一个逻辑设备的配置寄存器,必须起动配置读与写命令,并且设备必须在地址段中确认IDSEL输入有效。IDSEL是选择芯片信息,AD[108]选择包中的功能(如逻辑设备),同时AD[72](在地址段中)的内容用于选择目标功能的64双字配置空间之一。

X86处理器家族提供了两个地址空间:存储器和I/OPCI需要提供第三个地址空间:配置空间。

双地址周期

主设备使用双地址周期(PAC)命令来指明它正用64位存储器地址寻址一个驻留在4GB边界以上的存储器目标。

保留的总线命令

对于保留的总线命令,目标一定没有回应(必须无效DEVSEL#),这就意味着保留的总线命令的使用将使主设备生成一个主设备失败的结果。

 


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar