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

上一篇 / 下一篇  2007-12-26 14:48:18 / 个人分类:读书笔记

报告改进了存储器写性能

   概述

   当桥作为存储器写交易的目标时,桥(PCI-PCI桥或HOST/PCI桥)会立即接收地址和写到报告写缓冲区的数据,使总线主设备快速完成存储器写。交易与写数据锁存在桥的报告写缓冲区内,并且允许主设备完成交易。

   当桥含有报告写缓冲区时,潜在的问题就出现了。在数据实际写入存储器目标前,另一个总线主设备(或同一个)可以起动来自具有报告写的目标存储器读。如果这是允许的,执行读操作的主设备不会收到信息的最新拷贝。为了防止这种情况发生,允许在目标总线上产生读操作前,桥的设计者必须首先实现到目的存储器目标的报告写。设备驱动程序通过执行读设备,能够确保所有的存储器数据已经写到主设备上,这将迫使桥上的全部报告写缓冲区充满,在读操作完成前,桥驻留在执行读操作的主设备和目标设备之间。

   也要求桥必须以原始报告的相同顺序执行全部报告写。

   只允许桥报告写到存储器的目标,软件必须保证与I/O设备和配置寄存器的实时通讯

   组合

   桥可以将报告存储器写组合成连续双字,成为采用线性寻址的单个突发存储器写交易,推荐这个特色以改进性能。双字必须以报告的相同顺序写,这意味着写报告到双字01,和2(它们以这个顺序报告)能够组合成线性突发写,而写报告到双字21,和0则不能。或者,这三个写操作不得不作为三个独立的单数据段存储器写交易。写报告到双字01,和2(以这个顺序)能够组合成线性突发写,其中第三个数据段没有有效的字节使能。规范建议允许组合的桥包含一个控制位,使这个特点失效。

   字节合并

   桥可以将写操作组合成一个在报告写缓冲区的双字,建议采用这个特点改进性能,并且只允许在可预提取的存储器地址范围内使用。

   例如,假设总线主设备执行两个存储器写:第一个写到位置00000100h00000101h,第二次写到位置00000102h00000103h。这四个位置驻留在同一个双字内,桥能够吸收第一个双字节,写到双字缓冲区入口,然后吸收第二个双字节,写到同一个双字缓冲区入口。当桥执行存储器写,它能够在一个数据段完成。但是,对于桥将写到同一个位置的独立字节写组合成为目的总线上的单个写操作来说,这就违反了规范。例如,假设总线主设备执行四个独立的存储器写到同一个双字:第一个写到双字中的位置0,第二个再次写到位置0,第三个写到位置1,第四个写到位置2。当桥执行报告写时,它必须执行单数据段交易,将第一个字节写到位置0,然后执行第二个单数据段存储器写到位置0(通过总线主设备写第二个字节),1,和2

   崩溃是禁止的

   在同一个位置上的多重写不能在桥的另一侧作为单独写来执行。崩溃定义为在同一个位置上的多重写报告减少到只有一次写,传送最后写到该位置的数据。为了写到同一个双字上,两个连续写(其中至少一个字节使能有效)必须作为另一侧总线上两个独立的交易来执行。

   对于任何类型的写交易,写崩溃都是禁止的。规范指出桥允许崩溃在一定范围内存在,当设备驱动程序表明它不会引起操作问题时。设备驱动程序如何向桥指出这一点超出了规范的范围。

 

存储器写最大完成限制

   当数据写入存储器目标时,目标用下列三种方法之一处理:

   方法一:目标能够立即接受数据并写入存储器。这能多快完成依赖于所写入的存储器写延迟(但应该能够在16个时钟内完成写操作)。

   方法2:目标能够立即接收数据,进入报告存储器写缓冲区。

   方法3:如果目标有临时情况防止它在16个时钟内接收数据,那么目标向主设备发出重试。这里的关键词是临时。不允许目标无限度地向主设备发出重试以试图写,在这种情况下应用存储器写的最大完成限制。

   当目标以重试终止存储器写交易后,它必须至少完成存储器写的一个数据段:

    对于系统运行在33MHZ或更慢,在第一次重试终止后334个时钟内。

    对于系统运行在66MHZ,在第一次重试终止后668个时钟内。

这个10us(在33MHZ66MHZ下)时间限制称为最大完成时间。如果目标发出多存储器写,完成时间是从第一次存储器写交易以重试终止,直到目标存储器写的第一个数据段以重试之外的某种方式完成的时间。

当重试之外的终止发生时,时间限制以存储器写的下一个重试再次起动。存储段完成的实际时间也依赖于主设备重复交易的时间。目标必须符合最大完成时间要求,假设主设备准确地以最大完成时间限制重试存储器写交易。


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

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

Open Toolbar