具有上级未定状态的高速缓存相干协议的制作方法

文档序号:6413959阅读:191来源:国知局

专利名称::具有上级未定状态的高速缓存相干协议的制作方法
技术领域
:本发明涉及一种计算机系统,具体地说涉及一种确定是否需要将窥探(snoop)操作向上转给更高级的高速缓存(cache)的高速缓存相干协议(cache-coherencyprotocol)。传统的多处理器计算机系统10的基本结构示于图1。计算机系统10具有几个处理单元,图中示出了其中的两个12a和12b,它们接至各种外围装置,包括输入/输出(I/O)装置(诸如显示监视器,键盘,图形指针(鼠标器),永久性存储装置(硬盘)等),由执行程序指令的处理单元使用的存储装置16(诸如随机存取存储器或RAM),以及主要作用是每当计算机首次接通时从外围装置之一(通常是永久性存储装置)找出和装入操作系统的固件18。处理单元12a和12b通过各种方式,包括通用互连线或总线20或者直接存储器存取通道(未示出),与外围装置进行通信。计算机系统10可以具有许多这里没有示出的其他部件,诸如用来与例如调制解调器或打印机连接的串行和并行口。熟悉本
技术领域
的人员可以理解,还有其他一些部件可以用来配合图1各方框所示部分,例如,可以用显示适配器来控制图像显示监视器,可以用存储器控制器配合对存储器16的访问等。计算机也可以具有多于两个的处理单元。在对称多处理器(SMP)计算机中,所有的处理单元通常都是一样的,也就是说,它们全部使用共同的指令和协议集或子集进行操作,而且一般具有相同的体系结构。图1示出了一种典型的体系结构。每个处理单元包括一个处理核心22,它具有多个寄存器和执行单元,执行程序指令,使计算机运行。一种典型的处理单元是国际商用机器(IBM)公司的PowerPCTM处理器。处理单元还可以有一个或多个高速缓存,诸如指令高速缓存24和数据高速缓存26,用高速存储装置来实现。高速缓存通常用来暂时存储处理器可能要反复存取的值,从而避免要用较长的步骤从存储器16装入这些值,加快了处理速度。这些高速缓存在与处理核心集成在单个集成芯片28上时就称为“片上”高速缓存。每个高速缓存都配有一个高速缓存控制器(未示出),用来管理处理核心与高速缓存之间的数据传送。一个处理单元可以包括另外一些高速缓存,如高速缓存30,由于它支持片上(第一级)高速缓存24和26,因此称为第二级(L2)高速缓存。也就是说,高速缓存30在存储器16和片上高速缓存之间起着中介作用,可以存储比片上高速缓存大得多的信息量(指令和数据),但存取时间比较长。例如,高速缓存30可以是一个存储容量为256k或512k字节的芯片,而处理器可以是一个具有总共存储量为64k字节的一些片上高速缓存的IBMPowerPCTM604系列的处理器。高速缓存30接到总线20上,而所有要从存储器16装入处理核心22的信息都必需通过高速缓存30。虽然图1示出的只是一个二级高速缓存分级结构,但也可以提供有着由一系列串接的高速缓存构成的许多级(L3,L4等)的多级高速缓存分级结构。在一个SMP计算机中,重要的是提供一个相干存储器系统,也就是说,使对每个单个存储器单元的写入对于所有的处理器来说是以某种次序串行化的。例如,假设存储器中的一个单元由一个写操作序列修改为具有值;1,2,3,4。在高速缓存相干系统中,所有的处理器将注意对一个给定单元以所示次序发生的这些写入。然而,对于一个处理器来说可能遗漏一次对这个存储器单元的写入。读这个存储器单元的给定处理器可能看到序列1,3,4,而遗漏了更新为值2。贯彻这些特性的系统就称为是“相干”的。实际上,所有的相干性协议只是按一个高速缓存块的规模操作的。也就是说,相干性协议是以一个高速缓存块为基础而不是分别为各单个存储器单元对移动数据和允许写入数据进行控制的。如熟悉本
技术领域
的人员所知,有许多协议和技术可使得高速缓存相干。所有这些维护相干性的机制的核心要求是协议在任何时刻只允许一个处理器可以对某个存储区域(高速缓存块)进行写入。由于有这个要求,每当一个处理器要对一个存储区域进行写入时,它必需首先将它希望写这个区域的意向通知所有其他处理器,在得到所有其他处理器允许后再执行写入。关键问题是,在写入发生前系统中的所有其他处理器必需得到启动处理器发生的要写入的通知。此外,如果一个信息块存在于某个处理单元的L1高速缓存内,那么它也就存在于这个处理单元的L2和L3高速缓存内。这个特性称为包容(inclusion),为熟悉本
技术领域
的人员所周知。下面将假设包容原则适用于与本发明有关的这些高速缓存。为了在系统中贯彻高速缓存相干,各处理器通过公共通用互连线(即总线20)通信。处理器通过互连线发送消息,表示它们希望读或写存储区域。在一个操作置于互连线上时,所有其他处理器就“窥探”(监视)这个操作,判定它们的高速缓存的状态是否能允许所请求的操作继续进行,而如果能,那么在什么条件下。有一些总线事务要求窥探和跟踪操作,以执行这些总线事务和维护存储器相干性。窥探操作在接收到由一定总线信号有效而产生的一个合格窥探请求时启动。这种通信是必需的,因为在具有高速缓存的系统中存储器的某个信息块的最近有效拷贝可能已经从系统存储器16移动到系统的一个或几个高速缓存内,如上所述。如果一个处理器(如12a)希望访问一个不在它的高速缓存分级结构内的存储区域,含有这个存储区域的实际(当前)值的这个信息块的正确文本可能在系统存储器16内或者在另一个处理单元(如处理单元12b)的一个或几个其他高速缓存内。如果正确文本在系统的一个或几个其他高速缓存内,就必需从系统的这些高速缓存而不是从系统存储器得到这正确值。例如,考虑一个处理器(如12a)希望读存储器中的一个区域的情况。首先,它查询它自己的L1高速缓存(24或26)。如果在L1高速缓存内不存在这个信息块,请求就转至L2高速缓存(30)。如果在L2高速缓存内也不存在这个信息块,请求就转至更低级的高速缓存,如果有更低级(如L3)的高速缓存的话。如果在更低级的高速缓存内仍不存在这个信息块,请求于是出现在通用互连线(20)上,要求得到服务。一旦有一个操作加到了通用互连线上,所有其他处理单元就会窥探到这个操作,从而确定是否在自己的高速缓存内存有这个信息块。如果某个处理单元在它的L1高速缓存内有处理单元(12a)请求的数据信息块,而且这个数据是修改了的,那么按包容原则,它的L2高速缓存和任何更低级的高速缓存也具有这个信息块的拷贝(然而,这些拷贝可能是陈旧的,因为在处理器的高速缓存内的拷贝是修改了的)。因此,在这个处理单元的最低级高速缓存(如L3)窥探到这个读操作,它将确定在一个较高级的高速缓存内存在所请求的信息块,并且是修改了的。在出现这种情况时,这个L3高速缓存就将一个消息加到通用互连线上,通知处理单元(12a),它必需稍后再重试它的操作,因为存储区域的实际值是在存储器分级结构最高级的L1高速缓存内,必需加以检索,使它可为启动处理单元(12a)的读请求服务。一旦处理单元(12a)再试了它的请求,L3高速缓存就开始一个过程,从L1高速缓存检索出修改了的数据,使这数据在L3高速缓存或主存储器或者这两者可用,这取决于实现的确切细节,具体情况不属于本发明范围。为了从高级高速缓存检索信息块,L3高速缓存通过高速缓存之间的连接向高级高速缓存发送消息,请求检索信息块。这些消息顺着处理单元的分级结构向上传播,直至L1高速缓存,使信息块顺着分级结构向下移动到最低级(L3高速缓存或主存储器),以便能为来自启动处理单元的请求服务。最后,启动处理单元将读请求再加到通用互连线上。此时,已经从一个处理单元的L1高速缓存检索出修改了的数据,因此来自启动处理器的读请求将得到满足。上述情况一般称为“窥推(snooppush)”。一个读请求在通用互连线上受到窥探后使处理单元将信息块推到分级结构的最低级,以满足启动处理单元提出的读请求。需要注意的关键一点是,当一个处理器要读或写一个信息块时,它必需将它的意向通知系统中的其他处理单元,这样才能维护高速缓存相干。因此,高速缓存相干协议与高速缓存分级结构的每一级中的每个信息块、指示信息块当前“状态”的状态指示符有关。状态信息用来使得在相干协议中可以提供某些最佳化,降低通用互连线和高速缓存间连接线上的消息往来量。作为这种机制的一个例子,当一个处理单元执行一个读操作时,它接收到一个指示是否必需稍后再试这个读操作的消息。如果不用再试读操作,则这个消息通常还包含使处理单元可以确定是否任何其他处理单元也具有这个信息块的仍有效的拷贝(这是通过使其他最低级高速缓存给出一个“共享”或“非共享”指示来实现的,以便不用再试任何读它们的操作)。因此,一个处理单元能确定是否这系统中的任何其他处理器具有这个信息块的拷贝。如果其他处理单元都没有这个信息块的有效拷贝,在读的处理单元就将这个信息块的状态标为“排斥(exclusive)”状态。如果一个信息块标为排斥状态,就允许处理单元以后写这个信息块可以不用先通知系统中的其他处理单元,因为其他处理单元都没有这个信息块的拷贝。因此,一般来说,一个处理器能够读或写一个区域而不先通过互连线通知它的意向。然而这只有在相干协议已经保证其他处理器都不关注这个信息块的情况下才能发生。上述高速缓存相干技术在一种称为“MESI”的专用协议中实现。如图2所示,在这种协议中,一个高速缓存块可以处于“M”(已修改)、“E”(排斥)、“S”(共享)和“I”(无效)这四个状态中的一个状态。在MESI协议下,每个高速缓存项(例如为一个32字节的区段)都有两个比特指示本项的状态是四个可能状态中的哪个状态。根据项的初始状态和提出请求的处理器要访问的类型,状态可以改变,而该项的具体状态置入提出请求的处理器的高速缓存。例如,在一个区段是处于已修改状态时,这个被寻址的区段只是在具有这个已修改的区段的高速缓存内是有效的,而修改了的数据还没有写回到系统存储器。在一个区段是排斥区段时,它只存在于所提到的区段,并且与系统的存储器一致。如果一个区段是共享的,那么它在这个高速缓存和在至少一个其他高速缓存内是有效的,而且所有共享的区段与系统存储器一致。最后,在一个区段是无效区段时,它表示这个被寻址的区段没有驻留在高速缓存内。如图2可见,如果一个区段是处于已修改、共享和无效这几个状态中的任何一个状态时,它可以根据具体总线事务在这些状态之间转移。而一个处于排斥状态的区段可以转移到任何其它状态,一个区段只有先是无效状态才能转移为排斥状态。随着处理器速度的提高维护SMP性能的困难之一是系统存储器总线上的负荷的增大。减轻这个影响的方法是增大总线宽度和每个事务的传送数据量(即“传送突发规模(transferburstsize)”)。不幸的是,这种传送规模成为系统的高速缓存行规模和相干规模时,这会影响软件模型,如果它具有高速缓存控制指令的话,正如大多数缩减指令集运算(RISC)处理器的情况那样。为了防止影响软件,在处理器和系统总线之间采用分段的高速缓存。分段的高速缓存的行规模等于存储器和系统的传送规模,而一个区段的规模等于处理器高速缓存行规模。这种结构解决了软件影响问题,但又产生了一些有关试图维护包容性相干性的低级高速缓存的设计问题。首先,每当高级高速缓存(L1)执行一个称为分配和置零指令(在PowerPCTM指令集中的“DCBZ”)的特定指令时,它修改在它的高速缓存内的数据(使它为零)而不用先从存储器中读取原来数据。这个操作通常在将一些存储区域重新分配给一个新的过程时执行。低级高速缓存也需要分配和将它的高速缓存行置零,但它具有较大的高速缓存行。实现这个操作的常用方法是从存储器读这个较大的行,然后将与处理器高速缓存行相应的部分置零。然而,这种方法违背了操作需避免从终是要重新分配的存储器读数据的宗旨。此外,很可能处理器要在很短的时间内要对归于低级高速缓存内这较大高速缓存行的其余部分的另一些高速缓存行进行分配和置零(虽然低级高速缓存不能假设这是这种情况)。这样,第一个问题是始终监视那些在高级(如L1)高速缓存内有效而还没有在低级(如L2或L3)高速缓存内有效的区段。第二个问题是怎样有效地支持可高速缓存写通操作(cachablewrite-throughoperation),这些操作通常由例如图像装置的驱动器(诸如用于图像显示视器)使用。在这种情况下,一般要查询大量数据,但只有少量数据需要修改。由于要求所修改的数据对于处理器处的图像装置及时可见,因此采用可高速缓存写通协议。这种协议需要指配高速缓存的所有各级内含有修改了的数据的行,以维护包容性,但实现比较复杂,因为写通操作会要求部分行写入能力(一种昂贵和复杂的性能)来维持各高速缓存的一致,或者行在写入时需要加以清理(flush)和失效处理,这会对性能产生不良影响,由于这行在下次受查询时需要再次读取。因此,为了避免不必要的总线操作,需要提供一种方法,指示一个高速缓存行在一个给定的高速缓存级的上级的指配和有效情况,虽然在这一级尚未规定。如果这种方法还能有效地处理对于这样一个上级已修改的区段发生窥探命中(snoophit)的偶有情况,那就更为有利。因此,本发明的目的是提供一种在具有分段的低级高速缓存的多处理器计算机系统中维护高速缓存相干性的改进方法。本发明的另一个目的是提供一种改善对高速缓存行的置零分配操作性能的方法。本发明的又一个目的是提供一种不需要具备复杂的部分写入能力还能支持写通高速缓存操作的方法。本发明所提出的维护多处理器计算机系统中的高速缓存相干性的方法达到了上述各个目的。这种方法主要包括下列步骤将一个第一值装入一个处理单元的一个第一级高速缓存内的一个高速缓存行块和装入这个处理单元的一个第二级高速缓存内的一个高速缓存行的一个区段;修改在处理单元的第一级高速缓存内的这个高速缓存行块内的值;以及在第二级高速缓存指示第二层高速缓存内的高速缓存行的这个区段在上级已经作了修改。作出这个指示不需要修改第二级高速缓存内的高速缓存行的这个区段。可以根据将处理单元第一级高速缓存的高速缓存行块置零的分配和置零(DCBZ)指令执行这个程序。指示步骤包括指示第二级高速缓存内的高速缓存行的多个区段中哪个区段与第一级高速缓存内作了修改的高速缓存行块相应。在一个给定的高速缓存行只有两个区段的实施例中,提供了三个新的状态来指示哪个区段作了修改,或是否对第一级高速缓存的高速缓存行执行了任何可高速缓存写通操作。采用这种新的协议,可以正确监视在较高级上有效的各个区段而不用执行不必要的总线操作,更有效地支持各种可高速缓存写通操作。本发明的以上和其他目的、特性和优点在以下的详细说明中可以看出。在所附权利要求中列出了本发明的具有创造性的特点。然而,本发明本身以及本发明的优选应用方式、其他目的和优点参照以下结合附图对例示的实施例所作的详细说明可以得到充分的理解。在这些附图中图1为现有技术的多处理器计算机系统的方框图;图2为示出现有技术的高速缓存相干协议(MESI)的状态图;以及图3为示出本发明的高速缓存相干协议的状态图。本发明是针对在诸如图1所示那样的多处理器系统中维护高速缓存相干性的方法的,但是本发明也可用于不一定是传统的计算机系统,也就是说这些计算机系统也可以包括图1中没有示出的新的硬件部件,或者具有一种新颖的现有部件互连体系结构。因此,熟悉本
技术领域
的人员可以理解,本发明并不局限如图所示的通用系统。图3示出了本发明的高速缓存相干协议的一个实施例的状态图。这个协议与图2所示的现有技术MESI协议类似,包括四个同样的状态(已修改,排斥,共享和无效),但还包括三个新的有关上级未定区段的“U”状态,这在下面还要加以说明;这个新协议在这里称为“U-MESI”协议。正如现有技术的协议的情况那样,M-E-S-I四个状态可以根据项的初始状态和发请求的处理器可寻求的访问类型而改变。这四个状态改变的方式除了下述情况以外基本上与现有技术的MESI协议相同。在所示这个实施例中,U-MESI协议适合于一个具有一些带两个区段的高速缓存行的高速缓存。在这个实施例中,由于有三种可能情况(1)两个区段的第一个区段(“奇”区段)被修改;(2)两个区段的第二个区段(“偶”区段)被修改;(3)没有一个区段被修改(两个区段由于可高速缓存写通读操作而都为共享),因此有三个“U”状态。这三个状态的第一个状态在此标为“UIM”,第二个状态称为“UMI”,而第三个状态在此称为“USS”。在U-MESI协议的这种实现方式中,每个高速缓存项就有三个比特,指示本项处于七个可能状态(四个现有技术的状态,三个新的“U”状态)中的哪个状态。如果一个高速缓存行有两个以上区段,就会有更多的“U”状态,也就需要在高速缓存项中有更多的比特。表1示出了与最高级(L1)操作有关的低级高速缓存状态转移的情况。表1</tables>在表1的第一项中,在对L1高速缓存的高速缓存行内的一个偶区段(第二区段)执行DCBZ操作(一个写入型操作)时,相应处于“I”(无效)状态的低级高速缓存将转移到“UIM”,也就是说指示只有第二区段被修改。在表1的第二项中,在对L1高速缓存的高速缓存行内的一个奇区段(第一区段)执行DCBZ操作时,相应处于“I”(无效)状态的低级高速缓存将转移到“UMI”,也就是说指示只有第一区段被修改。如果在一个行的奇区段先前已经受过DCBZ操作因而相应的低级高速缓存都处于“UMI”状态的情况下再对同一行的偶区段执行DCBZ(表1的第三项),或者如果在一个行的偶区段先前已经受过DCBZ操作因而相应的低级高速缓存都处于“UIM”状态的情况下再对同一行的奇区段执行DCBZ(表1的第四项),那么低级高速缓存将转移到“M”(已修改)状态,指示整个行被修改。然而,如果先前对某行只执行了一个DCBZ操作从而低级高速缓存使这行处于“UIM”或“UMI”状态,而其他(无效)行是一个“读”或“修改性的读”(readwithintenttomodifyRWITM)操作的对象,那么低级高速缓存的行进至“I”(无效),而修改了的区段从高级高速缓存中清理掉。在表1的第六项中,如果对源块发生L1“命中”,而低级高速缓存都处于“USS”状态,那么这些低级高速缓存将停留在这个状态,也就是说它被处理成似乎是无效的,但不是缓存的。如果对块执行一个可高速缓存写通读(cachable/write-throughread)操作(表1的第七项),而低级高速缓存具有相应的处于“I”(无效)状态的块,那么这些低级高速缓存将转移到“USS”状态。最后,如表1的第八项所示,所有其他不在前七项中可规定的L1操作将导致正常的,也就是按现有技术MESI协议,状态转移。表2示出了系统总线窥探事务将怎样影响处于“U”状态的高速缓存。表2</tables>在“U”状态,高速缓存知道它必需采取行动,但必需将窥探到的转给上级,以确定适当的行动。表2仅示出了那些“U”状态之一发生窥探命中的偶见情况。在这些情况下,低级高速缓存将清理上级高速缓存的内容而转移到“I”(无效)状态,发生“重试”响应,但在对“USS”状态发生读窥探命中时,相干性响应是“共享”。采用上述U-MESI协议,就能解决前面提到的两个问题,即始终监视在较高级有效的区段而不用执行不必要的总线操作,以及有效地支持可高速缓存写通操作。结果是增大了存储器带宽以及解放了地址带宽和字节写能力。虽然本发明参照具体实施例作了说明,但这种说明并不意味着构成对本发明的限制。对于熟悉本
技术领域
的人员来说,在参考了本发明的说明后,显然可以构想出所揭示的实施例的种种变型和本发明的其他实施方式。因此,可以预料这类变型都可以根据本发明的精神得出,因而都属于在所附权利要求中所规定的本发明的专利保护范围之内。权利要求1.一种在具有多个处理单元的多处理器计算机系统中维护高速缓存相干性的方法,每个处理单元具有一个包括至少第一级和第二级高速缓存的高速缓存分级结构,其中第一高速缓存级是第二高速缓存级的上级,所述方法包括下列步骤将一个第一值装入一个处理单元的一个第一级高速缓存内的一个高速缓存行块,和装入这个处理单元的一个第二级高速缓存内的一个高速缓存行的一个区段;修改在处理单元的第一级高速缓存内的高速缓存行块内的值;以及在第二级高速缓存指示第二级高速缓存内高速缓存行的区段在上级已经被修改。2.如权利要求1所述的方法,其特征是所述修改步骤对处理单元的第一级高速缓存的高速缓存行块置零。3.如权利要求1所述的方法,其特征是所述方法还包括将至少一个其他值装入第一级高速缓存的与第二级高速缓存内的高速缓存行的区段相应的另一个高速缓存行块。4.如权利要求1所述的方法,其特征是所述方法近包括响应来自一个第二处理单元的有关请求访问一个与第一值相应的存储块的查询。5.如权利要求1所述的方法,其特征是执行所述指示步骤并不修改第二级高速缓存内高速缓存行的区段。6.如权利要求1所述的方法,其特征是所述指示步骤包括指示第二级高速缓存内高速缓存行的多个区段中哪个区段与第一级高速缓存内被修改的高速缓存行块相应。7.如权利要求1所述的方法,其特征是所述第二级高速缓存内的一个高速缓存行只有两个区段,而所述指示步骤包括指示两个区段中的哪个区段与第一级高速缓存内被修改的高速缓存行块相应。8.如权利要求1所述的方法,其特征是所述指示步骤包括指示对第一级高速缓存的高速缓存行执行的任何可高速缓存写通操作。9.如权利要求7所述的方法,其特征是所述方法还包括对希望访问上级已修改高速缓存行的请求作出响应指示第一级高速缓存的高速缓存行无效的步骤。10.如权利要求6所述的方法,其特征是所述方法还包括对希望访问上级已修改高速缓存行的请求作出响应指示第一级高速缓存的高速缓存行无效的步骤。11.如权利要求10所述的方法,其特征是所述指示步骤包括指示对第一级高速缓存的高速缓存行执行的任何可高速缓存写通操作。12.如一种计算机系统,它包括一个存储装置;一个与所述存储装置连接的总线;以及多个与所述总线连接的处理单元,每个处理单元有至少一个第一级高速缓存和一个第二级高速缓存,每个所述高速缓存有多个高速缓存行,而所述第二级高速缓存内的每个所述高速缓存行有多个区段,所述处理单元每个还具有在所述第二级高速缓存内一个给定高速缓存行的一个给定区段在上级已经被修改时提供指示的装置。13.如权利要求12所述的计算机系统,其特征是每个所述处理单元还对来自另一个处理单元的有关请求访问一个与所述给定区段相应的存储块的查询作出响应,发送所述指示。14.权利要求12所述的计算机系统,其特征是每个所述处理单元提供所述指示但并不修改所述给定区段。15.如权利要求12所述的计算机系统,其特征是所述第一级高速缓存内每个所述高速缓存行有多个区段,而所述第二级高速缓存内每个所述高速缓存行有数目比所述第一级高速缓存内每个所述高速缓存行所有的更多的区段。16.如权利要求12所述的计算机系统,其特征是所述提供指示的装置包括指示所述第二级高速缓存内所述高速缓存行的多个区段中哪个区段与所述第一级高速缓存内一个已被修改的块相应的装置。17.如权利要求12所述的计算机系统,其特征是所述提供指示的装置还包括在对所述第一级高速缓存的一个高速缓存行执行任何可高速缓存写通操作时进行指示的装置。18.如权利要求12所述的计算机系统,其特征是所述提供指示的装置还包括对希望访问所述第一级高速缓存的一个高速缓存行的请求作出响应指示与所述第二级高速缓存的所述给空高速缓存行相应的所述第一级高速缓存的所述高速缓存行无效的装置。19.如权利要求18所述的计算机系统,其特征是所述提供指示的装置还包括在对所述第一级高速缓存的所述高速缓存行执行任何可高速缓存写通操作时进行指示的装置。全文摘要本发明所提出的在多处理器计算机系统中维护高速缓存相干性的方法提供了一些新的状态,用来指示上级高速缓存内的区段已经修改而不需执行不必要的低级高速缓存的总线事务。这些新的“U”状态可以指示高速缓存行内哪个区段被修改,或是否高速缓存行受到了可高速缓存写通操作。这种协议作为现有技术的“MESI”高速缓存相干协议的改进来实施的。这种新的协议特别有利于处理分配和置零指令,使得修改高速缓存内的数据(置零)不需要从存储器读取老数据。文档编号G06F12/08GK1196530SQ9810568公开日1998年10月21日申请日期1998年3月23日优先权日1997年4月14日发明者雷维·库玛·艾米利,约翰·史蒂文·多德森,杰里·唐·刘易斯申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1