第11章定序器11.1概述I/O定序器在端口之间交换事务,使用了一个缓冲池使阻塞最少。图11-1是I/O定序器的结构图(IOS)图11-1.I/O定序器结构图11.1.1特性I/O定序器主要包含以下特性:在端口中之间交换事务包含12个cache行(32个字节)的缓冲区,允许PCI事务流对外向PCI事务执行地址变换注意允许访问PCI外向窗口的CSB主设备的数量是有限制的,不能超过4个非CPU主设备或不超过2个非CPU主设备加上一个CPU。如果超过了这个数量,CSB仲裁会发生死锁。11.2外部信号说明I/O定序器(IOS)没有外部信号。11.3内存映射和寄存器定义表11-1给出了I/O定序器的内存映射。表11-1.I/O定序器的内存映射偏移量寄存器操作复位节/页0x00POTAR0-PCI外向地址变换寄存器0R/W0x0000_000011.4.1/11-30x08POBAR0-PCI外向基地址寄存器0R/W0x0000_000011.4.2/11-40x10POCMR0-PCI外向比较屏蔽寄存器0R/W0x0000_000011.4.3/11-40x18POTAR1-PCI外向地址变换寄存器1R/W0x0000_000011.4.1/11-30x20POBAR1-PCI外向基地址寄存器1R/W0x0000_000011.4.2/11-40x28POCMR1-PCI外向比较屏蔽寄存器1R/W0x0000_000011.4.3/11-40x30POTAR2-PCI外向地址变换寄存器2R/W0x0000_000011.4.1/11-30x38POBAR2-PCI外向基地址寄存器2R/W0x0000_000011.4.2/11-40x40POCMR2-PCI外向比较屏蔽寄存器2R/W0x0000_000011.4.3/11-40x48POTAR3-PCI外向地址变换寄存器3R/W0x0000_000011.4.1/11-30x50POBAR3-PCI外向基地址寄存器3R/W0x0000_000011.4.2/11-40x58POCMR3-PCI外向比较屏蔽寄存器3R/W0x0000_000011.4.3/11-40x60POTAR4-PCI外向地址变换寄存器4R/W0x0000_000011.4.1/11-30x68POBAR4-PCI外向基地址寄存器4R/W0x0000_000011.4.2/11-40x70POCMR4-PCI外向比较屏蔽寄存器4R/W0x0000_000011.4.3/11-40x78POTAR5-PCI外向地址变换寄存器5R/W0x0000_000011.4.1/11-30x80POBAR5-PCI外向基地址寄存器5R/W0x0000_000011.4.2/11-40x88POCMR5-PCI外向比较屏蔽寄存器5R/W0x0000_000011.4.3/11-40xF0PMCR-电源管理控制寄存器R/W0x0000_000011.4.4/11-70xF8DTCR-丢弃定时器控制寄存器R/W0x0000_000011.4.5/11-711.4寄存器说明11.4.1PCI外向地址变换寄存器(POTARn)PCI外向地址变换寄存器(POTARn)定义外向变换窗口在PCI地址空间中的位置。图11-2给出了POTARn寄存器的字段。图11-2.PCI外向地址变换寄存器(POTARn)表11-2说明了POTARn寄存器的字段。表11-2.POTARn字段说明位名称说明0-11—保留12-31TA变换地址,包含被变换的外向地址的起始地址。它还对应于32位地址中的最高20个有效位。11.4.2PCI外向基址寄存器(POBARn)PCI外向基址寄存器(POBARn)定义外向变换窗口在本地(源)存贮器中的位置。图11-3给出了POBARn寄存器的字段。图11-3.PCI外向基地址寄存器(POBARn)表11-3说明了POBARn寄存器的字段。表11-3.POBARn字段说明位名称说明0-11—保留12-31BA基址。该字段包含外向变换窗口的起始地址。它还对应于32位地址中的最高20个有效位。11.4.3PCI外向比较屏蔽寄存器(POCMRn)PCI外向比较屏蔽寄存器(POCMRn)定义外向变换窗口的大小和目的地址。它还定义该窗口在PCI地址空间中的某些属性。更多信息请参见11.5.1节“事务转发”。图11-4给出了POCMRn寄存器的字段。图11-4.PCI外向比较屏蔽寄存器(POCMRn)表11-4说明了POCMRn寄存器的位设置。表11-4.POCMRn字段说明位名称说明0EN允许。启用地址变换窗口。0禁止该窗口的地址变换。1允许该窗口的地址变换。将通过BLOCKNAME识别出匹配该窗口定义的本地地址,并变换到PCI存贮器空间。1I/OI/O空间。确定该窗口是映射到PCI存贮器空间还是PCII/O空间。0存贮器空间1I/O空间2SE流允许。定义了通过该窗口变换的事务是否可以变为PCI总线上的流。当该位置位时,PCI控制器可以把后续的cache行传输组合到一个PCI事务中。0流允许1流禁止3DST目的。确定在哪个PCI接口执行通过该窗口变换的事务。0PCI11PCI24-11—保留,应清除。12-31CM比较屏蔽。包含变换窗口的大小。该字段中为1的那些位指示事务地址的位应与PCI外向基址寄存器的值相匹配,且在匹配时进行变换。该字段对应与32位地址中最高20个有效位。值含义0000_0000_0000_0000_00004G1000_0000_0000_0000_00002G1100_0000_0000_0000_00001G1110_0000_0000_0000_0000512M1111_0000_0000_0000_0000256M1111_1000_0000_0000_0000128M1111_1100_0000_0000_000064M1111_1110_0000_0000_000032M1111_1111_0000_0000_000016M1111_1111_1000_0000_00008M1111_1111_1100_0000_00004M1111_1111_1110_0000_00002M1111_1111_1111_0000_00001M1111_1111_1111_1000_0000512KB1111_1111_1111_1100_0000256KB1111_1111_1111_1110_0000128KB1111_1111_1111_1111_000064KB1111_1111_1111_1111_100032KB1111_1111_1111_1111_110016KB1111_1111_1111_1111_11108KB1111_1111_1111_1111_11114KB其他保留11.4.4电源管理控制寄存器(PMCR)PMCR提供系统级低功耗模式的控制。图11-5给出了PMCR寄存器的字段。图11-5.电源管理控制寄存器(PMCR)表11-5说明了PMCR寄存器的字段。表11-5.PMCR字段说明位名称说明0-30—保留31IDLE该只读位指示由BLOCKNAME电源管理功能所控制的逻辑处于空闲状态。该位可用于指示可以禁止到该复合部件的时钟。0逻辑忙。1逻辑空闲。在IOS、DMA或两个PCI端口的任何一个端口中不存在未完成的事务。11.4.5丢弃定时器控制寄存器(DTCR)DTCR用来设定丢弃定时器,该定时器的作用是为对非预取存贮器的PCI延迟读事务设定时间限制。该定时器仅用于在不再回来读数据的主设备发生故障或断开的情况下释放占用的缓冲区。因为一旦IOS满了就可能丢弃预取的读,所以需要分配另外一个缓冲区。在始发站实际得到数据之前,不可以丢弃非预取的延迟读。图11-6给出了DTCR寄存器的字段图11-6.丢弃定时器控制寄存器(DTCR)表11-6说明了DTCR寄存器的字段。表11-6.DTCR字段说明位名称说明0EN允许。该位启用丢弃定时器。0禁用1启用1-7—保留8-31PTV预装入定时器值(PTVPreloadtimevalue)。该字段包含丢弃定时器的预装入值。如果主设备未重复事务,则在(224-PTV)个内部时钟周期后,丢弃对非预取地址空间的PCI延迟读。对PTV来说,0xFFFFFF是无效的。例如,如果PCI主设备未在215个PCI时钟内重复事务,则丢弃被延迟的完成。—假定内部时钟频率是PCI时钟频率的两倍—PTV应等于224-216(0xFF0000)11.5功能说明IOS是一个带缓冲的4端口交换机。每个端口都有主接口和从接口。当某个端口主控一个事务时,就将该事务的属性存储在缓冲区中,IOS产生一个到目的端口的从接口的事务。数据也同样被缓存在端口之间,IOS包含12个cache行(32字节)的事务缓冲区,其中一些保留给特定类型的事务使用。事务的地址阶段和数据阶段是相互独立的。事务的数据阶段不需要按序排列。11.5.1事务转发尽管端口都使用相似的接口,但I/O定序器实际上是不对称的。下面几节说明来自从不同源的事务转发。11.5.1.1来自统一系统总线(CSB)端口的事务来自CSB端口的事务的转发如下:如果地址与两个PCI控制器中的任何一个PCI控制器的12个字节的PCI控制器软件配置存贮器空间相匹配,则按照匹配结果,将事务转发到PCI1或PCI2。这些地址值是I/O定序器的配置选项。关于PCI控制器软件配置存贮器空间的更多信息参见表13-3。如果地址与DMA寄存器存贮器空间相匹配,则将事务转发到DMA端口。如果地址命中任何一个外向变换窗口,则按照POCMR[DST],使用变换后的地址,将事务转发到PCI1或PCI2。更多信息参见11.5.2节“PCI外向地址变换”。当从一个PCI端口引导时,根据复位配置字高端寄存器的ROMLOC字段规定的引导配置,将不符合以上任何一种情况的事务都转发到PCI1或PCI2。关于复位配置字高端寄存器参见4.4.2.2节“复位配置字高端寄存器(RCWHR)”。11.5.1.2来自PCI端口的事务来自PCI端口的事务的转发如下:不支持从一个PCI端口到另外一个PCI端口的事务。如果地址与DMA寄存器存贮器空间相匹配,则将事务转发到DMA端口。将其他所有事务转发到CSB端口。11.5.1.3来自DMA端口的事务来自DMA端口的事务的转发如下:如果地址命中任何一个外向变换窗口,则按照POCMR[DST],使用变换后的地址,将事务转发到PCI1或PCI2。更多信息参见11.5.2节“PCI外向地址变换”。将其他所有事务转发到CSB端口。11.5.2PCI外向地址变换PCI外向地址变换允许外向事务访问PCI存贮器或I/O空间上的任何地址。在PCI外向基址寄存器中定义变换窗口的基址。更多信息参见11.4.2节“PCI外向基址寄存器(POBARn)”。到这些地址范围的事务用变换后的地址发送到PCI总线上。变换地址在相关的PCI外向变换地址寄存器(POTARs)中定义。图11-7给出了一个用于外向存贮器访问的变换窗口的示例。图11-7.外向PCI存贮器地址变换六组外向变换寄存器允许同时有六个到PCI端口的变换窗口。分别为每个PCI端口设定一个窗口。运行时,软件可以移动和调整存贮器窗口的变换和尺寸。这允许软件快速访问不同的PCI存贮器I/O空间,但PCI外向变换源窗口一定不能重叠。但外向变换目的窗口可以重叠。11.5.3事务定序采用下列规则维护正确的事务顺序:将从某个端口到达的事务按到达顺序分发到目的端口。对于从来自于不同端口的事务则不必维护其分发顺序。源自CSB端口的读事务和来自于PCI端口的读操作将在任何发自PCI端口、且在来自PCI的读数据到达之前已发送了的写事务之前使用IOS。IOS可以始终接受来自PCI端口的写,而不需要强制PCI端口首先接受读。