用于改进pci-x或pci网桥性能的缓冲器管理的制作方法

文档序号:6557745阅读:226来源:国知局
专利名称:用于改进pci-x或pci网桥性能的缓冲器管理的制作方法
技术领域
本发明一般地涉及用于改进PCI-X或PCI网桥性能的缓冲器管理,并特别地涉及用于管理跨越PCI-X或PCI网桥的事务的系统和方法。更特别地,本发明涉及等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器。这里,术语PCI-X或PCI网桥指一个PCI-X到PCI-X或PCI到PCI的网桥,该网桥连接两个PCI总线。PCI-X是目前正被开发的PCI总线的高性能扩展。
外围设备互连(PCI)规范已经被开发,并继续被改进用于在主计算机、系统存储器和各种设备或适配器,诸如总线上的设备,插卡,或集成的适配器,之间的通讯。关于PCI的该规范已经被细化为PCI规范版本2.2,于1998年12月公布。PCI-X是由PCI特别权益小组(PCISIG)正在开发的规范草案,作为对PCI规范的补充,将在1999年中期发布。PCI-X试图向后兼容。因此,两种网桥接口必须既能在PCI模式,又能在PCI-X模式下工作(PCI到PCI,PCI-X到PCI-X,PCI到PCI-X,PCI-X到PCI)。这些规范在此引入作为参考。
不同的事务,诸如输入/输出(I/O)事务以及直接存储访问(DMA)事务,跨越在主计算机和不同的设备以及I/O设备与系统存储器之间的PCI-X或PCI网桥发生。跨越这样的网桥的延迟的事务需要宿主重复该事务直到它停止接收重试并且该事务被完成。但是,伴随延迟的事务的问题是宿主必须持续地重复并等待直到合适的缓冲器可用或它通过主桥接收到导致事务的合并或备份的数据请求。分割跨越这些网桥的事务避免了使宿主等待以及重复该事务,并允许命令被网桥接收,结果(数据)随后返回,而该网桥作为宿主。但是分割事务可以导致大的事务被分解为较小的事务,而跨越网桥被处理的较小的事务通常比大事务在使用总线上效率低。
举例来说,现行的PCI-X规范草案提供对分割读的大小的编程能力(最多4K字节)。此外,该PCI-X规范草案提供一个设备或适配器能够发出的最大数目的未解决请求(最多32个请求),并且还要求该设备或适配器不经过重试接收在一个总线事务中未解决的读完成。一个总线事务可以包括一个地址周期,一个属性周期,一个目标响应周期,一个或多个数据周期,以及一个周转周期。一个PCI-X到PCI-X(PtP)网桥目前被允许在一个(1)ADB(一个ADB是具有128字节的数据块,该数据块在128字节地址边界对齐)在网桥的缓冲空间中可用时接收一个读完成事务或延迟内存写事务。缓冲空间的一个(1)ADB的可用性可以导致在PtP网桥接收部分读完成数据时较大的读完成被分割为较小的读完成,并且然后被断开连接。问题在于当一个(1)ADB事务在网桥中被缓冲,它们将被传递给网桥的另一端,并作为单个ADB传输被执行。该单个ADB传输降低了总线的有效带宽,其中数据在该总线中被接收和传递。
在系统忙时,这问题变得尤其严重。该问题在系统忙时开始出现,并一直存在直到系统变得不太忙。这样的问题的一个例子参考图2被说明。PtP网桥22具有缓冲器以接收并保存来自总线20的数据直到网桥22能够获得对另一总线24的访问并将该数据传递给最终目的地。图2显示了PtP网桥22中需要的缓冲类型,即延迟内存写(PMW)缓冲器30,分割读完成(SRC)和分割写完成(SWC)缓冲器32,以及分割读请求(SRR)和分割写请求(SWR)缓冲器34。PtP网桥22的事务类型是延迟内存写(PMW),分割读完成(SRC),分割写完成(SWC),分割写请求(SWR),以及分割写请求(SWR)。一个分割完成可以是一个SRC或SWC,而一个分割请求可以是一个SRR或SWR。图2显示的缓冲器只被显示用于从PCI-X总线20(总线#1)到PCI-X总线24(总线#2)的事务。用于从PCI-X总线24(总线#2)到PCI-X总线20(总线#1)的事务的类似的缓冲器存在但没有被显示在图2中,因为单个缓冲器组足以描述这个问题。
该问题可以在PMW缓冲器30或SRC缓冲器32之一中发生。关键问题是与固定大小的固定缓冲器对照,管理单个ADB大小的缓冲器产生的结果。举例来说,SRC缓冲器32被设置为保持2K字节的数据(16个ADB),并且SRC缓冲器32装满了包含4个独立的事务的数据,其中每个事务包含了4个ADB。满的SRC缓冲器32可以是总线#1(总线20)比总线#2(总线24)快或总线#2由于若干个读请求变得非常忙的结果。PtP网桥22被准许访问总线#2,PtP网桥22开始传递来自SRC缓冲器32中的一个SRC。当数据的一个(1)ADB已经被传递给总线#2,PtP网桥22开始接收来自总线#1的一个SRC。由于总线#1比总线#2快,SRC缓冲器32中的可用ADB在网桥22能够清空到总线#2的第二个ADB前被填充。因此,网桥22需要在第一个ADB边界断开与总线#1事务的连接。当该序列继续,其中网桥22传递每个ADB大小的数据到总线#2,SRC缓冲器32中的一个ADB被释放,该ADB被只有一个(1)ADB大小的SRC事务填充,并跟随一个断开连接。由此,网桥22中的SRC缓冲器32被一个(1)ADB大小的SRC事务填充,没有有效利用接收这些被传递的事务的总线。
因此,需要提供用于改进PCI-X或PCI网桥性能的缓冲器管理。需要提供一种用于管理跨越PCI-X或PCI网桥的事务的系统和方法。还需要提供一种系统和方法,该系统和方法等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器,以及用于根据事务的大小和可用缓冲空间以优化处理各个事务的定时。
因此,本发明的一个目标是提供用于改进PCI-X或PCI网桥性能的缓冲器管理。
本发明的另一个目标是提供用于管理跨越一个PCI-X或PCI网桥的事务的系统和方法。
本发明的又一个目标是提供一种系统和方法,该系统和方法等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器,以及用于根据事务的大小和可用缓冲空间以优化处理各个事务的定时。
上述目标以下面描述的方法实现。用于改进PCI-X或PCI网桥性能的缓冲器管理。用于管理跨越一个PCI-X或PCI网桥的事务的系统和方法,以及等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器的系统和方法。事务在网桥上被处理,而该网桥具有包括实际可用缓冲空间的缓冲器,用于接收和处理该业务。该事务的大小是确定的。该系统和方法设置一个可用空闲块,该块是一组可用缓冲空间,该空间将在较大的事务(多个ADB)被处理前被释放。该系统和方法等待实际可用缓冲空间被释放并达到可用空闲块。当该实际可用缓冲空间达到可用空闲块时,该较大的事务被处理。对该事务的处理包括如果该事务大小不大于实际可用缓冲空间则接收该事务,当事务的大小小于可用空闲块但大于实际可用缓冲空间时,重试该事务用于被该网桥处理,当事务大小大于可用空闲决并大于可用缓冲空间时由该网桥重试该事务直到可用缓冲空间大于或等于可用空闲块,接收该事务,并且一旦实际可用缓冲被填满或在事务结束时断开连接。
本发明上述的,以及附加的目标,特征和优点在下面的详细描述中将变得显而易见。
本发明的新特征载于所附的权利要求中。但是本发明本身,以及优选的使用模式,进一步的目标和优点,通过参考附图阅读下面对一个实施例的详细描述将被很好地理解,其中

图1是整个系统的一个框图,该系统用于在计算机系统和各种接口设备间提供改进PCI-X性能的缓冲器管理。
图2是一个PCI-X到PCI-X(PtP)网桥的例子的框图,图示了其中包含的缓冲器。
图3是关于在计算机系统和各种接口设备间提供改进PCI-X性能的缓冲器管理的算法的一个流程图。
本发明是关于改进PCI-X或PCI网桥性能的缓冲器管理的系统和方法。本发明公开了等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器,以及用于根据事务的大小和可用缓冲空间以优化地处理各个事务的定时。本发明不限于本说明中公开的特定的装置和方法,任何等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器,以及提供用于根据事务的大小和可用缓冲空间以优化处理各个事务的定时的合适系统或方法可以被实现。
现在参考附图,特别地参考图1,提供缓冲器管理的整个系统10被显示,其中缓冲器管理用于改进计算机系统11与各种接口设备26之间的PCI-X的性能。计算机系统11具有一个中央处理单元(CPU)12,存储控制器14,以及存储器16。接口设备26包括设备D1,D2,D3,…,DN。计算机系统11具有外围主机总线(PHB)接口18,该接口能够与PCI-X设备接口。PHB接口18与PCI-X总线#1(总线20)通讯并通过接口连接。这里为便于描述,由网桥生成的能够以PCI-X模式工作的PCI总线被称为PCI-X总线。总线#1与PCI-X到PCI-X(PtP)网桥22通讯并通过接口连接,而网桥22与PCI-X总线#2(总线24)通讯并通过接口连接。总线#2与各种设备26通讯并通过接口连接。
现在参考附图,特别地参考图2,在总线#1(总线20)与总线#2(总线24)之间通讯和通过接口连接的PtP网桥22被更详细地显示。PtP网桥22具有各种类型的缓冲器。被显示的缓冲器是延迟内存写(PMW)缓冲器30,分割读完成(SRC)和分割写完成(SWC)缓冲器32,以及分割读请求(SRR)和分割写请求(SWR)缓冲器34。如前面提到的,PtP网桥22的事务类型是延迟内存写(PMW),分割读完成(SRC),分割写完成(SWC),分割读请求(SRR),以及分割写请求(SWR)。一个分割完成可以是一个SRC或SWC,而一个分割请求可以是一个SRR或SWR。图2显示的缓冲器只被显示用于从PCI-X总线20(总线#1)到PCI-X总线24(总线#2)的事务。用于从PCI-X总线24(总线#2)到PCI-X总线20(总线#1)的事务的类似的缓冲器存在但没有被显示在图2中,因为单个缓冲器组足以描述这个问题。图2还显示了一个可用空闲块寄存器31,该寄存器可以是固定的或可编程的,以及一个可用空闲缓冲器计数器33,该计数器跟踪可用缓冲器的ADB数。本发明不限于这里公开的特定的缓冲器,事务方向,或事务类型。任何合适的缓冲器,事务方向,或事务类型可以被实现或与本发明一起使用。
参考图1和图2,系统10被配置以增加和/或优化可用缓冲器用于其大小跨越一个PCI-X或PCI网桥的事务,以及根据事务的大小和可用缓冲空间调度以优化地处理各个事务。PtP网桥22控制并等待网桥22中的可用缓冲器或缓冲空间使其在处理或传递各种事务前至少具有一个最优的可用空间(诸如可用字节)数。如图1和图2中显示的系统10的硬件被配置以实现在事务中这样的增加和优化。
参考图1和图2,事务大小可以被从1ADB增加到4ADB或更多,其中一个ADB被定义为具有128字节的一个数据块,该数据块在128字节地址边界对齐。事务大小的增加降低了总线上开销阶段的百分比,因此提高了数据传输率。本发明要求网桥22等待缓冲器,诸如SRC缓冲器32,中一组空间(诸如4ADB的空间),在接收部分分割完成并从总线#1断开连接(即较大事务的分解)前可用,以保证较大事务将可用以被传递给总线#2,导致对总线#2更有效的应用。
在允许为优化的或最好的性能而发生分解前,系统性能分析或其它装置可以被用于判断可用缓冲器的最佳数目(以ADB为单位)以首先释放,该最佳数目是可用空闲块(AFB)31。AFB的大小是固定的或可编程的。如果事务大小等于或小于网桥22中可用缓冲器的数目,该事务将总是被网桥22接收。如果事务大小小于AFB,但是大于可用缓冲器数,该事务将被网桥22重试。在PCI或PCI-X中重试是指目标要求访问,但是在没有数据传输的情况下断开连接,要求宿主重复该访问直到它随着数据传输被接收。如果事务大小大于AFB,并同时大于可用缓冲器数,一旦可用缓冲器数变得大于或等于AFB,该事务将被接收,但是,一旦可用缓冲器被填满,或在事务的结尾,将被断开连接(事务被分解为较小的事务)。最佳的AFB大小随不同的应用类型,系统配置,以及被系统10支持的设备或适配器而变化。与从总线#2到总线#1发生的事务相比,对于从总线#1到总线#2发生的事务,AFB的大小也可以是不同的。
此外,方法和软件算法可以被提供以增加和优化跨越PCI-X或PCOI网桥的事务。现在参考附图,特别地参考图3,用于提供计算机系统10和各种接口设备26之间改进的PCI-X性能的缓冲器管理的一种算法27被显示。本发明不限于在本说明书中公开的特定算法,任何合适的用于改进PCI-X性能的缓冲器管理算法可以与本发明一起使用。算法27在模块28开始。在判定模块29,算法27判断在缓冲器(诸如在图2中显示的缓冲器30,32,或34)中,是否有额外的可用空间,诸如一个ADB空间,被释放。如果没有这样的空间被释放,算法27转移到判定模块38。但是,如果有这样的额外空间被释放,算法27转移到模块36,在其中可用空闲缓冲器计数器被增加被释放的ADB的数目,并然后转移到判定模块38。可用空闲缓冲器计数器是以ADB为单位计数可用缓冲器空间的计数器。
在判定模块38,算法27查找对网桥22的下一分割完成访问,该访问可能正等待缓冲器中实际可用空间的释放并达到可用空闲块(AFB),该AFB是一组在对事务的处理开始前将被释放的可用缓冲空间(即,ADB数)。如果下一访问尚未发生,算法27循环回判定模块29以判断是否缓冲器中额外的缓冲空间再次被释放。在另一方面,如果对网桥22的下一访问已经发生,算法27转移到判定模块39。
在判定模块39,算法27判断是否存在可用缓冲空间。如果有可用缓冲空间,算法27转移到判定模块40。在另一方面,如果没有可用空间,事务在模块37被重试,算法27通过连接符Y转移到判定模块29以判断是否有缓冲空间被释放。
在判定模块40,算法27判断事务大小是否小于或等于实际可用缓冲空间数。如果事务大小小于或等于实际可用缓冲空间数,算法27转移到模块42以接受该事务并通过连接符Z转移到模块50,其中可用空闲缓冲器计数器被减少由被接收的事务填充的ADB数。然后算法27通过连接符循环回判定模块29以判断是否缓冲器中额外的缓冲空间再次被释放。
在另一方面,如果在判定模块40,事务大小不小于或等于实际可用缓冲空间数,算法27转移到判定模块44。在判定模块44,算法27判断事务大小是否小于在AFB寄存器中可用空闲块(AFB)。该AFB寄存器是一个可编程寄存器,用于指示以AFB数计的一个判定设置,即,该AFB寄存器被设置为AFB值,该值是在对该事务的处理开始前将被释放的可用缓冲空间(即若干ADB)的数目。因此,在判定模块44,如果事务大小不小于该AFB,算法27转移到模块43以判断可用缓冲器是否大于或等于AFB。如果是,算法27转移到模块46以接收该事务并随后转移到模块48以在实际可用缓冲器数被填充或在事务传输结束时从总线(诸如总线#1)断开连接。算法27然后转移到模块50以将可用空闲缓冲器计数器减少由在其中被接收的事务填充的ADB的数目。但是,如果在判定模块44,事务大小小于AFB,算法27转移到模块52,其中网桥22将重试对宿主的访问指示以在以后重复访问。然后算法27循环回模块29以判断缓冲器中是否有额外的缓冲空间再次被释放。但是,如果在判定模块43中可用缓冲器不大于或等于AFB,算法27转移到模块52,在其中事务被重试。
因此,本发明公开了一种关于等待、增加和/或优化用于其大小跨越一个PCI-X或PCI网桥的事务的可用缓冲器,以及用于根据事务的大小和可用缓冲空间优化处理各个事务的定时的系统和方法。
尽管本发明根据一个优选实施例被特别地显示和描述,本领域的技术人员应当理解,不偏离本发明的精神和范围的各种形式和细节上的改变可以被进行。
权利要求
1.用于改进PCI-X或PCI网桥性能的缓冲器管理方法,其中事务跨越该网桥被处理,而且该网桥具有包含实际可用缓冲空间的缓冲器用于接收和处理事务,包括如下步骤判断事务的大小,设置一可用空闲块,该块是一组可用缓冲空间,将在某个较大事务被处理前被释放,等待实际可用缓冲空间被释放并达到可用空闲块,在实际可用缓冲空间达到可用空闲块时判断事务的大小是否大于实际可用缓冲空间,如果事务大小不大于实际可用缓冲空间则接收该事务,在事务的大小小于可用空闲块但大于实际可用缓冲空间时,由该网桥重试该事务,在事务大小大于可用空闲块并大于可用缓冲空间时,由该网桥重试该事务直到可用缓冲空间大于或等于可用空闲块,以及接收该事务,并且一旦实际可用缓冲被填满或在事务结束时断开连接。
2.根据权利要求1的方法,进一步包括如下步骤使用一个可用空闲块寄存器用于编程一组可用缓冲空间,这些可用缓冲空间将在某个较大事务被处理前被释放。
3. 根据权利要求1的方法,进一步包括如下步骤使用一个可用空闲缓冲器计数器用于跟踪缓冲器中的实际可用缓冲空间。
4.根据权利要求3的方法,其中等待步骤进一步包括如下步骤判断缓冲器中是否有额外缓冲空间已被释放,如果在缓冲器中额外的缓冲空间被释放,将由可用空闲缓冲器计数器跟踪的实际可用缓冲空间增加该额外的缓冲空间,以及判断下一次访问是否发生,以及实际可用缓冲空间是否已达到可用空闲块。
5.根据权利要求3的方法,进一步包括如下步骤在事务被接收时,将由可用空闲缓冲器计数器跟踪的实际可用缓冲空间减少被填充的缓冲空间的数量。
6.用于改进PCI-X或PCI网桥的性能的缓冲器管理方法,其中事务跨越该网桥被处理,并且该网桥具有包含实际可用缓冲空间的缓冲器,用于接收并处理该事务,包括如下步骤判断事务的大小,设置一个可用空闲块,它是一组可用缓冲空间,将在某个较大的事务被处理前被释放,等待实际可用缓冲空间被释放并达到可用空闲块,以及,在实际可用缓冲空间达到可用空闲块后处理该事务。
7.根据权利要求6的方法,其中处理步骤进一步包含如下步骤如果事务大小不大于实际可用缓冲空间则接收该事务,在事务的大小小于可用空闲块但大于实际可用缓冲空间时,重试该事务用于被该网桥处理,在事务大小大于可用空闲块并大于可用缓冲空间时,由该网桥重试该事务直到可用缓冲空间大于或等于可用空闲块,以及接收该事务,并且一旦实际可用缓冲被填满或在事务结束时断开连接。
8.用于改进PCI-X或PCI网桥的性能的缓冲器管理系统,其中事务跨越该网桥被处理,并且该网桥具有包含实际可用缓冲空间的缓冲器,用于接收并处理该事务,包括一个具有PCI-X或PCI接口的计算机系统,连接到PCI-X或PCI接口的第一PCI-X或PCI总线,连接到PCI-X或PCI总线的PCI-X或PCI网桥,连接到PCI-X或PCI网桥的第二PCI-X或PCI总线,连接到第二PCI-X或PCI总线的设备,其中该系统设置一个可用空闲块,该空闲块是一组可用缓冲空间,将在某个较大的事务被处理前被释放,等待实际可用缓冲空间被释放并达到可用空闲块,并在实际可用缓冲空间已经达到该可用空闲块时处理该事务。
9.根据权利要求8的系统,其中系统通过在事务大小不大于实际可用缓冲空间的条件下接收该事务,通过在事务的大小小于可用空闲块但大于实际可用缓冲空间的条件下重试该事务用于被该网桥处理,通过在事务大小大于可用空闲块并大于可用缓冲空间的条件下由该网桥重试该事务直到可用缓冲空间大于或等于可用空闲块,以及通过接收该事务,并且一旦实际可用缓冲被填满或在事务结束时断开连接,来处理该事务。
10.根据权利要求8的系统进一步包括一个连接到计算机系统的可用空闲块寄存器,其中该可用空闲块寄存器与可用缓冲空间一起被编程,该可用缓冲空间将在某个较大事务被处理前被释放。
11.根据权利要求8的系统进一步包括一个连接到计算机系统的可用空闲缓冲器计数器,其中可用空闲缓冲器计数器用于跟踪在缓冲器中的实际可用缓冲空间。
12.根据权利要求8的系统,其中每个网桥进一步包含用于处理事务的缓冲器。
13.根据权利要求12的系统,其中缓冲器是延迟存储器写(PostedMemory Write)缓冲器。
14.根据权利要求12的系统,其中缓冲器是分割读完成和分割写完成缓冲器。
15.根据权利要求12的系统,其中缓冲器是分割读请求和分割写请求缓冲器。
16.一个缓冲器管理系统,包括一个PCI-X或PCI网桥,具有包含实际可用缓冲空间的缓冲器,用于接收和处理事务,包括判断该事务的大小;一个包含值的寄存器,该值代表一个可用空闲块,该空闲块是一组可用缓冲空间,将在某个较大事务被处理前被释放;以及一个计数器,判断何时实际可用缓冲空间被释放并达到可用空闲块;其中所说的网桥当实际可用缓冲空间已经达到可用空闲块时处理该事务。
全文摘要
用于改进PCI-X或PCI网桥性能的缓冲器管理系统和方法。该系统和方法设置一个可用空闲块,该系统和方法等待实际可用缓冲空间被释放并达到可用空闲块。当该实际可用缓冲空间达到可用空闲块时,该较大的事务被处理;如果该事务大小不大于实际可用缓冲空间则接收该事务,当事务大小小于可用空闲块但大于实际可用缓冲空间时,重试该事务,当事务大小大于可用空闲块并大于可用缓部空间时由该网桥重试该事务直到可用缓冲空间大于或等于可用空闲块。
文档编号G06F13/10GK1296225SQ00108930
公开日2001年5月23日 申请日期2000年5月17日 优先权日1999年5月18日
发明者R·A·凯利, D·M·尼尔, L·D·怀特利, A·G·雅内斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1