用于在执行被转换指令时维持环境的方法和装置的制作方法

文档序号:6534958阅读:177来源:国知局
专利名称:用于在执行被转换指令时维持环境的方法和装置的制作方法
背景技术
发明领域本发明涉及计算机系统,尤其涉及用于改善微处理器在执行程序过程中的性能的方法,所述程序是从为不同处理器执行而设计的程序转换而来。
现有技术的历史最近,开发了一种新的微处理器,它将一个简单但快速的主机处理器(被称作“变体主机(morph host)”)和软件(被称作“代码变体软件(code morphingsoftware)”)组合起来,以便执行为目标处理器设计的应用程序,该目标处理器具有与变体主机处理器不同的指令集。变体主机处理器执行代码变体软件,该软件将目标应用程序动态地转换成能够实现目标应用程序的目的主机处理器指令。当指令被转换时,它们被存储在一个转换缓冲器中,在那里,它们可以被存取而无须进一步转换。虽然程序初步转换缓慢,但是,一旦被转换,硬件执行程序通常所需的其中的许多步骤就被取消了。新的微处理器已经证明,被设计成扩展很少功率的一个简单的快速处理器能够以等同于“目标”处理器(程序为它而设计)速率的速率来执行被转换的“目标”指令。
使转换问题复杂化的是各种中断和例外,它们由目标计算机及其操作系统的硬件执行,以便计算机系统进行操作。当在目标计算机的操作过程中采用目标例外时,通常必须通过调用一个微代码序列以实现操作来保存例外时间的计算机状态,必须检索正确的例外处理程序,必须处理例外,然后必须发现程序中的正确点,用于读取程序。这经常要求程序回复到例外发生点处的目标计算机状态。实行这些操作的目标计算机的硬件和软件所提供的各种结果必须以某种方式由转换程序提供,以便变体主机处理器能够正确地响应于这些例外。
为了能够以快速的速率运行为其他处理器设计的程序,变体主机处理器包括许多硬件改进。这些改进中的一个改进是门控存储缓冲器,它临时存储由执行转换缓冲器中的指令的被转换序列产生的内存存储。第二项改进是一组主机寄存器(除了正常工作的寄存器以外),它们存储任何序列的正在被转换的目标指令开始时目标处理器的状态。目标指令序列被转换成主机指令并被加以执行。这些序列在目标状态已知的点处开始和结束。如果被转换指令的执行没有出现一个例外,则由执行被转换主机指令生成的内存存储通过一个提交指令被存储在存储器中(被记住);保持目标状态的寄存器被更新到完成序列的点处的目标状态。
但是,如果在执行该序列的主机指令时发生一个例外,则处理停止;整个操作可能被返回到该序列的目标指令的开始(其处存有目标处理器的已知状态)。这允许动态转换和执行指令时所导致的例外进行迅速、准确的处理。
将注意到,所用的方法是由新的微处理器处理转换的执行,它通过保持由临时存储器中的执行所生成的效果,直到转换的执行被完成,是一种推测性的迅速而有效的方法。实质上,新的微处理器使用相同的电路,用于推测其他操作的结果。例如,通过由软件调度程序从自然转换的指令重新排序后执行,而临时保存的指令的执行结果,可以实现比原先的技术尝试更有进取性的重新排序。当执行这种重排序列的指令以产生一个正确的结果时,由执行重排序序列产生的内存存储可以被记住,目标状态可以被更新。如果重排序序列在执行时生成一个例外,那么,处理器的状态可以被返回序列开始时的目标状态并在执行序列的过程中采用一种更保守的方法。
新的微处理器最有利的特点之一是其链接长序列的被转换指令的能力。一旦短序列的目标指令已被转换并被发现无例外地执行,就可以链接大量这些短序列,以便形成长序列的指令。这允许按高速度执行一个转换程序,因为微处理器不需要经历通常由硬件处理器采取的所有步骤(例如,查找每个较短的转换序列)来执行指令。甚至可以达到比预期可能更高的速度,因为一旦长序列被链接,优化器就可以经常取消来自长序列的许多步骤,而不改变产生的结果。硬件优化器从未能优化足够长的各个序列的指令,以便允许显著优化模式能变得显而易见。
无论处理器何时正在执行指令,它都在按具有各种特征的某种特殊的模式运行。必须按正确的模式来执行一项应用的指令,以便始终如一地产生正确的结果。模式的这些特征有效地成为指令的背景,可以被认为是指令的一部分。当处理器执行指令时,那些指令中的某些指令可以改变操作的特征和模式。这要求微处理器的许多特征有不同的设置,以便处理这些不同的模式。机器状态的特征通常是指指令在其中执行的环境(context),这些特征必须被正确设置,以便指令提供正确的结果。环境可以被说成是机器当前状态的概括,它是从指令执行产生正确结果所需的。
在为具有第一指令集的目标处理器设计的各个序列的指令转换成一个不同指令集的一系列主机指令的过程中,新的微处理器面临的一个主要问题是由需要维持转换和运行时的环境所引起。
有种种不同的事物,它们可构成执行一个程序中的环境。只列举可构成环境的许多因素中的一些因素就可展示该问题有多复杂。精通该技术领域的人将理解,差不多有成百上千个环境的可能项目。
许多微处理器被设计成操作具有8位、16位和32位字长(取决于使用的操作系统的能力)的指令的应用程序。相同的指令经常被用于利用不同字长的指令来书写应用。但是,如果微处理器尝试执行16位指令,而它的特征被设置用来执行32位指令,则这些指令也许将不会正确执行。这样,指令字长可以被认为是出于执行目的的目标处理器环境。
另一个例子是,指令按不同层次的许可来执行。这样,一些指令只能由具有最高层次存取的人来执行;其他指令可以由处于较低层次和较高层次的用户来执行。当执行转换指令时,有必要维持相同的存取层次,以便应用不会干涉不相关的应用的资源。
基于因特尔X86的处理器允许应用指定代码和数据的各个部分(段)被存储在存储器中。例如,程序可以指定基地址和程序段的长度,以便一个代码段在一个基地址开始并连续通过一定数量的内存,而一个数据段在一个不同的基地址开始并包括不同数量的内存。或者,程序可以指定一个单一的扁平段,用于存储程序所有的指令、数据和其他因素。此外,一个程序的所有段可以在相同的基地址开始,但运行到不同的结束地址。所以,正在被使用的基地址的布置对于执行指令而言是一个非常重要的特征。为不同用户分配的各个内存区域的混乱也许会妨碍程序执行指令具有正确的结果。这样,这就可能是环境的一个重要因素。
如果一项应用被设计成执行调页启动,则该应用必须虑及可能发生的调页例外。如果一项应用被设计为调页关闭,则不会发生调页例外。因此,调页可能是环境的一个重要的因素。
有许多其他的特征,无论指令何时被执行,这些特征必须与将指令汇编成指令时相同,以便产生正确的结果。利用复杂的指令集(例如,因特尔X86处理器所用的指令集),构成环境的特征的数量非常大。
如同目标处理器的指令执行一样,当那些转换指令被执行时,有必要使从目标指令转换来的主机指令维持原来处理器的环境,目标指令正是为该处理器而被设计,以便由主机系统产生相同的结果。由于环境的那些项目可能由指令而引起不同的结果,需要从转换到执行过程中维持环境,这似乎要求环境的差不多成百上千个因素都要成为各个转换的一部分,以便确保所产生的结果是正确的。
何时执行处理器上的指令以产生正确的结果很关键,同时还需要能尽快地执行指令。通常通过产生尽可能有效地运行的代码,来实现这一点。环境或机器状态恰好控制如何可以使代码有效。有许多机器状态的特征(指令在其中执行)影响转换和执行的效率并可以使指令更快地运行或对执行产生某种其他所需的影响。在所有情况下,重要的是,在目标微处理器上以一种特殊的模式使被执行的指令在一种环境中被加以执行,该环境具有被设置成在主机系统中以相同模式执行指令的特征。此外,重要的是,当执行那个被优化的代码时,要维持执行目标代码的优化转换的转换环境。
所以,需要提供这样的装置和方法,通过它们,执行为目标处理器(具有不同指令集)设计的指令转换而来的指令的微处理器可以维持目标处理器的环境,以便转换指令的执行提供正确的结果。
同样需要通过动态转换而保证的速度和由新的微处理器实行的优化被维持在一个过程中,该过程确保在与原来设计的环境相同的环境中执行转换。
发明概要所以,本发明的一个目的是确保转换指令在与它们被原来转换的环境相同的转换环境中被加以执行,只要有可能,就这样做,而不减慢被转换指令的执行。
本发明的这个目的和其他的目的通过这样一种方法来实现,该方法维持转换指令的每个部分的转换环境,将其中只要转换指令的一个新部分要被执行时变体主机就起作用的的转换环境与转换指令所述部分的转换处的转换环境进行比较,如果转换环境相同,则允许执行;如果转换环境不同,则强迫搜索一个不同的转换或原始指令的重新转换,从中导出被转换指令的所述部分。
通过参考以下结合附图的详细描述,将更好地理解本发明的这些和其他的目的和特征。在附图中,类似的因素在几幅视图中有类似的名称。
附图简述

图1是说明根据本发明的一种方法的流程图。
图2展示了执行一个特定指令所必需的各个步骤。
图3是展示实施本发明的一种方法的流程图。
图4是展示本发明的方法的一个部分的流程图。
图5是展示本发明的方法的另一个部分的流程图。
图6是展示根据本发明的环境表述图。
详细描述如以上详细描述的内容,新的微处理器执行将目标指令序列转换成主机指令序列的代码变体软件,将那些转换指令序列存储在一个转换缓冲器中用于再用,尝试执行那些转换指令序列,当转换序列执行以产生一个正确的结果时更新状态和内存,当转换指令序列没有通过执行以产生一个正确结果时,放弃转换指令序列的尝试执行的效果。所存储的转换指令序列可以被优化,并经常被互相链接,以产生长序列的转换指令。这些长序列可以被进一步优化,以减小它们的长度并提高它们的执行效率,以便新的处理器执行操作的速度经常可以大大地快于原始转换。
为了使一系列转换指令产生由原始目标指令产生的结果,新的处理器必须正确地为每个目的指令解码。这意味着新的处理器必须确保转换指令包括原来指令的所有环境,以便那些原来的指令的意思被完全转换。例如,转换必须包括确定定义段类型、其基地址和范围的信息,以便可以执行适当的内存存取。转换必须能够确定调页在执行期间是否被启动以便知道地址怎样被计算,以及页面例外是否应该被接受。转换必须能够确定环境的所有其他因素,这些因素允许目标序列实现结果,当转换序列由主机处理器执行时,它从该目标序列被转换并被实现。
例如,X86处理器的一个指令(例如以下所示)add $eax,4($ebp);命令X86处理器将4加到“ebp”寄存器中的值中,以确定一个段偏移。核查这个段偏移,以确定它是否位于正在被存取的内存段(堆栈段)的段界限内。此外,X86处理器核查指令是否被允许读和/或写正在被存取的内存段;最后,段偏移被加到段基地址,以产生一个线性地址,它又被用来确定由指令存取的内存位置的物理地址。然后,该物理地址被用来取出存储在内存位置中的值和将内存值加到“eax”寄存器中的值中。
但是,除了指令的这些因素以外,有大量的隐含因素。例如,这里“ebp”寄存器的使用意味着堆栈段的使用。一个不同寄存器的使用可能意味着一个不同段的使用。
X86段会“增大”或“减小”。堆栈段经常减小,而其他的段通常则增大。一个段偏移对于一个特定段是否有效的确定取决于正在被存取的段是增大还是减小。对于一个增大段而言,有效偏移的范围从0到段界限。对于一个减小段而言,有效偏移的范围从段界限到16位段的最大的可能偏移(216-1)和32位段的(232-1)。
当线性地址已被计算时,确定是否可以使用调页。如果不可以,则线性地址是内存数据的物理地址;如果可以使用调页,则物理地址必须被加以计算。在任何一种情况下,内存段的界限必须被测试,以确定地址是否合法;最后,数据被存取并被加到eax寄存器中的值中。
这样,关于这个简单的指令,ebp寄存器是一个堆栈寄存器的知识、存储器中堆栈的基地址、取决于段是增大还是减小的段的有效偏移的范围、是否可以使用调用、正在被寻址的内存段的类型。它的基地址是构成环境的所有特征。当转换指令被执行时,必须了解这些特征,以便能够适当地执行操作。
实际上,当解释程序执行一项目标指令时,它必须执行所有这些隐含的(即背景)步骤和检查,以便正确地执行指令。隐含的步骤和检查必须以潜在的大代价被加以明确的执行。将目标指令自然地转换成主机指令也将是如此。
精通该技术领域的人将理解,指令可以改变环境,在此环境中,指令通过改变构成一种操作模式的特征中的一个特征来加以执行。所以,新的处理器必须跟踪指令,并确保当目标指令改变环境(转换指令序列将在其中执行)时环境的因素在转换序列内变化。这样,当转换序列完成执行时,将为新的处理器正确地表现转换序列的环境。
转换指令的每个序列不仅应该包括可以用于确定构成环境的所有必要特征的信息,只要转换指令的任何序列被正确执行和接下来的一个序列将要被执行,新的处理器就应该确保它目前正在其中操作的环境是正确执行下一个序列的开始所需的环境。这样,新的处理器应该测试存在于转换指令的第一序列的末端的环境,以确保它等同于在可以开始执行下一个序列之前转换指令的下一个序列所需的环境。同样,为了将两个序列的转换指令链接起来成为一个单一的序列,新的处理器应该确定第一序列在其中完成执行的环境与序列(它将被链接到该序列)将在其中开始执行的环境相同。
将会看到,需要包括转换指令的每个序列中的环境的所有因素,并需要在开始执行之前检查每个新序列的环境,这些并不产生有效的代码。
本发明克服了这些问题并产生以一个速率有效地执行代码,该速率对目标处理器执行相同代码的速率提出了挑战。本发明依靠局域性的特性,以便生成执行更加有效的代码。
尤其是,在多数情况下,处理器在任何过程或程序中执行的指令趋向于被执行不只一次,或利用其他指令被执行大部分的时间。这产生的效果是使环境从指令的一个序列到下一个序列是类似的或相同的。例如,环境的许多因素取决于正在被存取的特殊的内存段;一个段基地址和范围、段是否增大或减小、段是否可写还是只能被读取是取决于正在被存取的段的所有因素。如果段从一个序列到下一个序列是相同的,则这些因素是相同的。在多数情况下,被用于第一序列的内存段与被用于下一个序列的段相同。环境的其他因素也显示了局域性的特征。局域性的属性允许本发明假设环境从一个序列到另一个序列将是相同的。
环境相同的假设使新的处理器能够转换一系列指令,来表现转换的环境,以便以某种方式作为一个不变量适当地执行。然后,处理器只核查表现,以确定整个环境是相同的,而不是逐步通过确定转换的环境正确所需的每项测试。如果是相同的,则可以执行转换序列。如果不相同,则处理器寻找符合标准的另一种转换。如果没有发现什么,则必须生成一项新的转换。图1以流程图展示了一般方法。
将会看见,使用局域性属性允许系列转换指令由于某些指令而减少,那些指令由正在被作为不变量的环境因素隐含。图2展示了一系列操作,它们代表解释程序执行上述增加功能的各个步骤所必需的步骤。如所见内容,那些步骤中至少有10个步骤被环境要求插入序列,以确保执行操作,来提供作为增加功能的相同的结果。被标记有一个星号的那些操作可以从指令序列中被除去,并用某种方式被表现在转换序列的开端处。例如,可能是两种状态中的这个状态或另一个状态的环境的因素可能都由环境的第一种表示(例如,四分之一字)的某个指定位置中的单个位代表,而具有更大数量的状态的特征可能需要四分之一字的一些其他指定位置中的更大数量的位。
图3是流程图,展示了当完成第一序列的转换指令的执行和开始下一个序列时新的处理器的操作。所展示的第一步骤是对下一个序列指令的环境的一项测试。新的处理器观察其目前的环境(第一序列完成时机器正在操作的环境)表示,并将那个环境与下一个序列的环境的表述进行比较。如果环境完全相同,则下一个序列的转换指令作为先前序列在相同的环境中被加以执行。这取消了较早序列中所需的所有步骤,以便确定环境是否正确。新的处理器假设符合每个条件并相应地执行以下步骤,而不是执行由星号标记的图2中的各个步骤。
如果整个环境不相同,则不执行下一个序列的指令。而是新的处理器搜索符合下一个序列标准的另一个序列的转换指令。通常,这将是相同序列的目标指令的另一个转换,但是,该目标指令具有的环境表示与上次执行的序列的环境表示相同。这种序列可能不存在。如果是这样,新的处理器执行代码变体软件,以便创建这种转换并将该转换存储在具有其环境表示的转换缓冲器中,用于进一步使用。
为了确保一系列被转换指令在其中执行的环境是正确的,代码变体软件有必要跟踪环境的可预知变化,并且当发生任何变化时,有必要将环境的表述改变成正确的表示。在这种方式下,当实现下一个序列的环境测试时,主机处理器目前正在执行的环境将被正确地表示。
代码变体软件检测不可预见地改变环境的一个指令,这也是很重要的。例如,如果一个指令加载一个新的段寄存器,那么,可能随段而变化的所有标准可能会改变。在加载段寄存器之后,实际上有一种新的环境;新的环境应该被用于执行来自该序列中的那个点上的指令。取决于环境的被影响部分的任何后续指令(例如,存取被加载的段寄存器的任何指令)不能被执行,而没有证实新的环境是合适的。代码变体软件可以终止两个点之间的任何点处的转换,和/或安排环境在它被修改的点与后来指令取决于更新值的点之间被加以证实。
由于通过将不同的转换序列链接起来而使得执行被明显地加速,以便它们作为一个单一较长序列而运行,因此,使用链接程序是非常合乎需要的。将会理解,当两个序列将被链接时,有必要使较长序列的每个部分正确地执行。所以,有必要使环境适合较长序列的每个部分,以便正确地执行。通过利用使用第二个转换序列的地址而将第一转换序列与第二个转换序列链接,可以在本发明的一个实施例中实现这一点。在新的处理器中,该地址通常保留在一个程序控制单元中。当一个序列将被链接到另一个序列时,第一序列通过指向程序控制中的地址来结束。当第二个序列被输入时,转换核查环境的表述,以确保它与第二个序列所需的环境相同。
根据每个链接序列的第二个序列所需的环境表示来测试主机的环境,这需要一些操作周期。所以,如图4中所示,本发明的一个更高级的实施例将环境测试从转换中除去,并将它放在原来的链接程序。也就是说,当首先确定两个序列将被链接时,通过比较第一序列和第二个序列的环境表示,来比较第一序列结束时它正在其中执行的环境和第二个序列在其中开始执行的环境。如果环境表示相同,则可以实现链接。此后,当执行较长的序列时,不再一定要测试两个序列被链接的点处的环境。第一序列的末端指向第二个序列的地址,就可以实现链接。通过只是在原来链接的时间核查环境,而不是每次执行链接序列都核查环境,来加速指令执行。
以同样的方式,无论何时进行对转换的搜索,一个实施例会既寻找一个特定转换和一个特定环境。这样,如图5中所示,机器操作环境到所需转换环境的核查完全从转换序列中除去,并被置于代码变体软件的调度功能中。只要需要下一个转换或将要实现一个被提议的链接,通过在转换缓冲器中搜索一个正确的转换和一个正确的环境,调度功能本质上寻找下一个序列的转换指令来执行。
本发明提供进一步提高执行指令的速度的延伸。由本发明提供的一项延伸允许当一个指令不可预见地改变环境时发生链接。该操作允许链接到由程序控制器保留的地址,然后根据目前的环境来测试新环境。如果环境的表述相同,则可以后续链接。
另一项延伸(也在图5中示出)取决于新的转换序列不一定总要具有与目前环境(主机正在其中执行)相同的环境,以便产生正确的结果。一些转换序列取决于环境的很少因素或环境(而不是主机正在其中执行的环境)的限制因素。只要存在正确执行待执行序列所必需的环境,这些序列就可以被执行并被链接到前面的序列。通过比较待执行的转换序列的环境表示和主机的目前环境的表述以便确定不同环境的那些因素,可以对此进行测试。然后,回顾不同的因素,以便确定它们对于待执行的序列而言是否必要,如果必要的话,则不同之处是它们在待执行的序列中的限制性是否较少。如果环境因素不需要或限制性较少,则可以执行或链接该序列。
如图6所示,表述环境的方式可以在很宽的范围内变化。例如,如果被连接在一起的所有环境因素占据的位与机器寄存器中的位的数量差不多(例如,32或64位),则环境可以由这种串联来表示;通过执行有关表示的简单的位操作(例如,“异或(XOR)”和“与(AND)”),可以容易地实现这些测试。或者,当环境中的因素的数量和尺寸超过寄存器中的位的数量时,环境因素可以被存储在存储器中的一个数据结构中;并且,进入数据结构的指针可以被用于为精确的环境匹配进行比较。然后,指针是环境的表述。取决于环境的单独因素的更多的有关比较(不是精确的匹配)将必须存取存储器中的数据结构。
表示环境的另一种方法是这两种技术的混合物。可以直接表示一些因素,而其他因素则被存储在存储器中。表示的余项是到存储器中的数据结构的一个指针/索引。精确的比较又是直接了当的,而取决于因素的比较则将会更加复杂。
虽然本发明已根据一个较佳实施例被描述过,但是,将理解,在不脱离本发明的精神和范围的前提下,精通该技术领域的人可以进行各种修改和变化。所以,本发明应该根据以下的权利要求来加以衡量。
权利要求
1.一种维持从为目标微处理器设计的指令转换而得到的指令的转换环境(translation context)以便在主机微处理器上运行的方法,其特征在于所述方法包括以下步骤存储与每个转换主机指令有关的转换环境,指示目前正在由主机处理器执行的主机指令的转换环境,将为下一条主机指令存储的转换环境与目前正在被执行的一条主机指令的转换环境进行比较,如果下一条主机指令的转换环境和目前执行的主机指令相同,则执行下一条主机指令,以及,如果下一条主机指令的转换环境和目前执行的主机指令不相同,搜索具有这样转换环境的一条指令,该转换环境与目前执行的主机指令的转换环境相同。
2.如权利要求1所述的方法,其中,存储与每个转换主机指令有关的转换环境的步骤包括存储作为转换主机指令的一部分的转换环境的表述。
3.如权利要求2所述的方法,其中,表述是指向转换环境被存储的地址的一个指针。
4.如权利要求2所述的方法,其中,表述是一组指示转换环境的位。
5.如权利要求2所述的方法,其中,表述是一组指示转换环境的位和额外转换环境被存储的地址的一个指针。
6.如权利要求1所述的方法,其中,存储与每个转换主机指令有关的转换环境的步骤包括存储除转换主机指令以外的转换环境的表述。
7.如权利要求1所述的方法,其中,将为下一条主机指令存储的转换环境与主机指令目前正在被执行的一条主机指令的转换环境进行比较的步骤是在一项转换被存取时完成的。
8.如权利要求1所述的方法,其特征在于还包括步骤如果第一序列的转换主机指令的转换环境和后续的转换主机指令的转换环境相同,将第一序列的转换主机指令链接到一个后续序列转换主机指令。
9.如权利要求8所述的方法,其中,将为下一条主机指令存储的转换环境与一条主机指令目前正在被执行的转换环境进行比较的步骤是在第一转换序列被链接到一个后续转换序列时完成的。
10.如权利要求1所述的方法,其特征在于还包括步骤如果影响后续转换主机指令的第一转换主机指令的转换环境与后续转换主机指令的转换环境相同,将第一转换主机指令链接到一个后续转换主机指令。
11.一种方法,其特征在于包括维持转换指令的每个部分的转换环境;将其中只要将要执行转换指令的新部分就运行变体(morph)主机处理器的转换环境与该部分转换处的转换环境进行比较;如果转换环境相同,就允许执行;以及,如果转换环境不同,则强迫搜索一个不同的转换。
12.如权利要求11所述的维持转换环境的方法,其中,如果转换环境不同,则强迫搜索一项不同的转换,它包括重新转换原来的指令,转换指令的部分从该原来的指令中导出。
全文摘要
一种方法(图1),用于维持从为目标微处理器设计的指令转换而得到的指令的转换环境,以便在主机微处理器上运行,包括:存储与每个转换主机指令有关的转换环境;指示目前正在由主机处理器执行的主机指令的转换环境;将为下一条主机指令存储的转换环境与目前正在被执行的主机指令的转换环境进行比较(图2);如果下一条主机指令的转换环境和目前执行的主机指令相同,则执行下一条主机指令;以及如果下一条主机指令的转换环境和目前执行的主机指令不相同,则搜索(图2)具有这样转换环境的一个指令,它相比于目前执行的主机指令的转换环境。
文档编号G06F9/455GK1379872SQ00814315
公开日2002年11月13日 申请日期2000年9月6日 优先权日1999年10月13日
发明者D·凯培尔, R·克迈利克, R·贝迪切克 申请人:全斯美达有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1