使用计算历史进行预测的制作方法

文档序号:6437829阅读:193来源:国知局
专利名称:使用计算历史进行预测的制作方法
技术领域
本发明属于程序执行,特别是提高运行程序指令的效率。
背景技术
计算机最初建造的目的是运行程序,而并不关心使计算机有效率能够运行为计算机写的程序就足够了。因此,处理器读一个指令并运行它,而后返回程序等待下一个指令。随着计算机设计更多地被大家所知,工程师已经可以设计比简单的“取来并运行” 的处理器要更有效率的处理器。现代的处理器包括“流水线”:在任何时刻,处理器的不同部分运行不同的指令。例如,当中央处理单元的核心正在运行一个指令,处理器的另一部分也许正在从存储器加载未来的指令需要的数据值。已经得到广泛研究和思考的处理器设计的一个领域是分支处理。在分支指令运行后,根据一个关联的数据值,可以在两个(或更多)不同点中的一个继续控制。这引起现代处理器的一个问题直至得到分支指令输出,任何随后指令的预处理是徒然的。为了解决这个问题,现代处理器进行分支预测。与其等待分支指令得到执行以及通过程序得到正确的路径,该处理器进行猜测。但是如果处理器猜测的不正确,任何根据计划路径的预处理都将浪费。例如,如果对分支指令的两个可能的随后的指令都加载一个值到寄存器,如果该错误指令被预处理,则寄存器中会存在该错误值。处理器必须解消对错误路径的预处理。如果处理器猜测错误,运行会比处理器只简单等待分支指令运行慢一些。与其盲目猜测,分支预测器试图进行有根据的猜测。为了实现此目的,他们做了某些假设。一个可能的假设是,一个特定分支指令的输出单独取决于此分支先前的输出。另外,更一般的假设是,该输出取决于分支指令之前的若干(固定大小)组指令。还有其他一些变种。图I说明了根据现有技术在运行一程序的计算机系统。图I中,计算机系统105 包括计算机110,其中装有存储器115。图I中的一部分说明了装入存储器115的程序130。 程序130包括分支指令135。在一个支路的最经常的方向是最可能的方向的假设下,使用表140,一个分支预测器可以预测一个分支是否被采用。如行145所示,指令135被采用的次数比不采用的次数多(每次该分支被采用,计数器增加,分支不被采用,计数器减少)。因而,分支预测器可以推测出该分支将被再次采用。在分支方向受在先指令影响的假设下,分支预测器注意指令150 (包括指令135), 并把它们的程序计数器散列在一起。这样产生一个索引,分支预测器可以用于访问表155。 使用这个方法,如行160显示,分支预测器将会推测出该分支不会被采用。
4
但是考虑到一个分支预测器观察分支前的最后五个指令。不保证任何这些指令对控制分支输出的数据值上有任何影响。同样地,不保证这些指令是影响预测的唯一指令。也许存在一条与分支的输出高度相关的旧指令。为了更精确地预测分支和指令的其他特性,我们需要一种途径来致力于解决与现有技术相关的这些和其他问题。

发明内容
本发明提供了一种计算机,包括一个存储器;一个存储在存储器中的指令;所述指令的一个计算历史,该计算历史由一组静态数据值来静态确定,每个数据值表示一个对指令有影响的对象;一个查阅表,该查阅表存储关于多个指令的多个预测;和一个索引,可由计算历史引出,用于存取查阅表以确定对该指令的预测。本发明所提供的计算机中,查阅表可存储于存储器中。查阅表可存储于计算机的第二存储器中。所述的计算机还可包括一个计算历史发生器可用以产生指令的计算历史。所述指令可包括两个操作数,每个操作数以计算机的一个寄存器来表示,第一寄存器具有第二计算历史,第二寄存器具有第三计算历史;计算历史发生器可用以对第二计算历史进行循环移位,并将循环移位后的第二计算历史与第三计算历史散列。计算历史发生器还可以进一步将循环移位过的第二计算历史与第三计算历史和该指令的程序计数器散列。计算历史发生器可使用第二计算历史为该指令的源操作数生成计算历史。计算历史发生器可使用一组静态值子集产生计算历史,该组静态值包括一个或多个第二计算历史,一个或多个静态值和一个用于指令的程序计数器。计算历史可以是由指令的目标操作数的计算历史确定的。所述的计算机还可包括一个索引计数器以计算从计算历史得来的索引。所述的计算机还可包括一个计算历史文件,来存储计算历史。所述的计算机还可包括一个与计算历史相关联的寄存器,该寄存器是指令的目标操作数。所述指令可以是组成一个程序的多个指令之一;且该计算历史可以是在运行程序前产生的。本发明还提供了一种计算机,包括一个存储器;一个存储于存储器中的分支指令;一个数据流图;一个查询表,该查询表存储着一个关于分支指令采用的方向的预测,查询表中的预测通过数据流图进行标识。
本发明还提供的计算机中,查询表可以存储在存储器中。查询表可以存储在计算机的第二存储器中。数据流图可以是由一组静态数据值来静态确定,每个数据值代表一个对分支指令有影响的对象。本发明提供了一种产生计算历史的方法,包括读取一指令;确定该指令的源操作数;从源操作数中读取静态第一计算历史;将第一计算历史与一个静态数据组合,产生一个静态第二计算历史。本发明所提供的方法还可包括确定该指令的目标操作数;和将第二计算历史存储为目标操作数的第二计算历史。所述的方法还可包括将第二计算历史存储为指令的第二计算历史。加载第一计算历史可包括,如果指令缺乏源操作数,分配一个静态值作为计算历史。加载第一计算历史可包括,如果源操作数是一个存储器地址,使用一个静态值作为计算历史。加载第一计算历史可包括,当该指令和第二指令通讯时,加载基于第二指令的第三计算历史。确定一个源操作数可包括确定一个寄存器作为源操作数。第一计算历史与静态数据的组合可包括确定是否有第二源操作数;以及如果有第二源操作数,则将第三计算历史作为静态数据装入第二源操作数。第一计算历史与静态数据的组合可包括对第一计算历史与指令的程序计数器进行组合。第一计算历史与静态数据的组合可包括对第一计算历史与静态数据进行散列。散列第一计算历史与静态数据可包括对第一计算历史进行循环移位;且对循环移位过的第一计算历史和静态数据执行“异或”操作。散列第一计算历史还可包括对“异或”操作的结果进行移位。本发明提供了一种项目,包括一个存储介质,该存储介质具有存储的上述指令,当由计算机运行时,导致读一个指令;确定该指令的源操作数;为源操作数加载一个静态第一计算历史;且将第一计算历史与静态数据组合,并产生一个静态第二计算历史。本发明提供的项目中,指令还可包括确定该指令的目标操作数;且将第二计算历史存储为目标操作数的第二计算历史。
所述指令还可包括,将第二计算历史存储为该指令的第二计算历史。加载第一计算历史可包括,当该指令缺乏源操作数时,分配一个静态值作为计算历史。加载第一计算历史可包括,如果源操作数是一个存储器地址,则使用静态值作为计算历史。加载第一计算历史可包括,当该指令和第二指令通信时,加载基于第二指令的一个第三计算历史。确定一个源操作数可包括确定一个寄存器作为源操作数。将第一计算历史与静态数据组合可包括确定是否有一个第二源操作数;和如果有第二源操作数,则将一个第三计算历史作为静态数据加载第二源操作数。将第一计算历史与静态数据组合可包括,将第一计算历史与该指令的程序计数器组合。将第一计算历史与静态数据组合可包括,对第一计算历史与静态数据进行散列。散列第一计算历史与静态数据可包括对第一计算历史进行循环移位;且对循环移位后的第一计算历史和静态数据上执行“异或”操作。散列第一计算历史还可包括,对“异或”操作的结果进行移位。本发明还提供了一种使用静态计算历史的方法,包括读一个指令;确定该指令的静态计算历史;使用该静态计算历史,预测该指令的一个特性。本发明所提供的方法中,预测该指令特性可包括存取查阅表;使用静态计算历史,索引进入查阅表;基于静态计算历史的索引,从查阅表中读值。索引进入查阅表可包括,减小静态计算历史的长度。减小静态计算历史的长度可包括将静态计算历史分成两部分;对这两部分执行“异或”操作;使用“异或”操作的结果,索引进入查阅表。预测指令特性可包括,预测一个分支指令的方向。所述的方法还可包括确定预测是否正确;更新计数器来反映预测的准确度。本发明另外提供了一种项目,包括一个存储介质,该存储介质拥有存储上述的指令,当由计算机运行时,导致读一个指令;确定该指令的一个静态计算历史;
使用该静态计算历史,预测该指令的一个特性。本发明另外提供的项目中,预测该指令的特性可包括存取查阅表;使用静态计算历史,索引进入查阅表;基于静态计算历史索引,从查阅表读值。索引进入查阅表可包括,减小静态计算历史的长度。减小静态计算历史的长度可包括将静态计算历史分成两部分;对这两部分执行“异或”操作;使用“异或”操作的结果,索引进入查阅表。预测指令特性可包括,预测一个分支指令的方向。指令还可包括确定该预测是否正确;和更新计数器来反映预测的准确性。本发明提供了一种使用数据流图的方法,包括读一个分支指令;构造分支指令的一个数据流图;使用数据流图,预测由分支指令采用的方向。构造数据流图可包括,使用一组静态数据值,构造数据流图,其中每个数据值表示一个对分支指令上有作用的对象。本发明提供了一种项目,包括一个存储介质,所述存储介质拥有存储上述的指令,当由计算机运行时,导致读一个分支指令;构造分支指令的数据流图;使用数据流图,预测由分支指令采用的方向。本发明所提供的项目中,构造数据流图可包括,使用一组静态数据值,构造数据流图,其中每个数据值表示一个对分支指令有作用的对象。


图I是根据现有技术的一个在运行程序的计算机系统。图2是根据本发明的一实施例,对指令特性进行预测的计算机系统。图3是根据本发明的一实施例,在图2所示的计算机系统中,与计算历史相关联的
寄存器。图4是根据本发明的一实施例,从其他寄存器生成的一个图3所示的寄存器的计算历史。图5是根据本发明的一实施例,在没有使用其它寄存器的计算历史的前提下,生成一个图3所示寄存器的计算历史。图6是根据本发明的一实施例,在图2所示计算机系统中,生成一个查找表索引。图7A-7B是根据本发明的一实施例,在图2所示计算机系统中,为一个指令构建计算历史的步骤的流程图。图8是根据本发明的一实施例,在图2所示计算机系统中,使用一种可能的散列函数来产生计算历史的步骤的流程图。图9是根据本发明的一实施例,在图2所示计算机系统内,使用一个计算历史来预测指令特性的步骤的流程图。
具体实施例方式图2是根据本发明的一实施例,对指令特性进行预测的计算机系统。图2中,计算机系统202与图I中的计算机系统105非常相似。计算机系统202包括计算机205,监视器 210,键盘215和鼠标220。本领域技术人员会发现尽管计算机系统202显示为台式个人计算机,但本发明不局限于任何特定类型的计算机。例如,计算机系统202也可以是一个缺少计算机205,键盘215或鼠标220的互联网设备。计算机系统202也可以成为个人数字助理 (PDA),或是无线计算机,或是其他设备的其中一种。在图2中,计算机系统202中部分没有显示的作为其一部分的选装设备包括其他输入/输出设备,例如打印机或调制解调器。图 2中也没有显示某些计算机系统202的常规内部组件如,中央处理单元,文件系统,网络接
π坐坐 II -rj- -Tj- O计算机205包括计算历史发生器225。计算历史发生器225负责在程序130中产生指令的计算历史。有关计算历史是什么和如何被使用的具体情况会在图3-5中提及。在一个实施例中,计算历史发生器225是计算机205的中央处理单元的一部分。在另一个实施例中,计算历史发生器225是中央处理单元的外部硬件。在第三个实施例中,计算历史发生器225是当计算机运行时,存储于存储器115中的软件。当计算机系统202需要对一个指令的特性做预测时,计算历史发生器225为该指令产生.一个计算历史。该计算历史可用于确定对查阅表230的索引。该查阅表存储着对指令特性的预测。例如,如果询问的特性是分支指令135的方向,指令135的计算历史可以由计算历史发生器225产生。然后,计算历史可以用于确定索引0x41Dl,该索引指向查阅表 230的行235。该分支的预测是该分支将会被采用(由正向计数器值显示出)。图3显示了根据本发明的一实施例,在图2所示计算机系统中与计算历史关联的寄存器。图3中显示了程序130,同时也显示了作为中央处理单元中的寄存器305-1至 305-8。不同的指令使用这些寄存器例如,指令310使用寄存器305-1,305-3和305-5,指令315使用寄存器305-5和305-7。寄存器可以是源寄存器或目标寄存器(或两者都是),取决于指令是从寄存器读一个值还是写一个值到寄存器。例如,寄存器305-5是指令310的一个目标寄存器,也是指令315的源寄存器(箭头的方向显示一个寄存器是源寄存器还是目标寄存器)。与每个寄存器关联的是计算历史。例如,寄存器305-1与计算历史320-1关联,寄存器305-2与计算历史320-2关联,等等。每个计算历史是影响寄存器当前数据值的所有事件的信息融合。影响寄存器当前数据值的事件可以包括其他寄存器值,静态常量,存储器值,写入寄存器的指令,等等。为了简化计算历史的产生,在一个实施例中只使用静态数据以产生计算历史。形容词“静态”意味着计算历史产生中使用的事件(通常是某类数据)是在程序编译时就知道的事件(比较术语“静态”与“动态”和“运行时间”,意味着事件在程序运行时才知道)。换句话说,计算历史不取决于实际运用在程序中的数据,并限于某些在每一时间运行程序时总是相同的事件。为生成寄存器的计算历史,首先,需要确定计算历史和其他对寄存器有影响的对象的静态数据。典型地,这些是由写入寄存器的指令使用的其他寄存器的计算历史。也可以使用其他静态数据例如,写入到寄存器的指令的程序计数器。将这些计算历史和其他静态数据通过一个散列算法散列在一起。结果得到与在当前状况下的寄存器关联的计算历史。例如,考虑到一个如ADD Rl, R2,R3的指令,该指令指示处理器读取寄存器Rl和 R2的值,将读出的值相加,结果存储在寄存器R3中。运行这个指令后,为计算寄存器R3的计算历史,需读取寄存器Rl和R2的计算历史,但ADD指令的程序计数器可任选。这些值散列在一起,产生一个新的计算历史,该计算历史可与寄存器R3关联(至少到寄存器R3已经分配了一个新值前)。通常把一组寄存器(寄存器305-1至305-8)称为一个寄存器文件。在本文中,当寄存器中的值变化时,寄存器文件也相应变化。同样,计算历史320-1至320-8可以被称为一个计算历史文件。当与单独寄存器相关联的计算历史改变时,计算历史文件也相应改变。图4使用特定散列算法详细图解了该过程。图4中,源寄存器的计算历史是确定的在这种情况下,是计算历史320-1和320-3。由于散列算法使用了指令的程序计数器, 程序计数器405也会被确定。此信息被输入至计算历史发生器225,其详细情况显示在框 410中。如框410所示,计算历史之一被循环移位,产生循环移位后的计算历史420。如图框425所示,该计算历史通过一个“异或”操作与其他计算历史和程序计数器405组合。结果被框430移位。最终输出是寄存器305-5新的计算历史。框410中按次序解释了散列算法。首先,如果相同的计算历史被使用两次(在同一个寄存器被作为指令的源操作使用两次时,该情况可以发生),则同一不经循环移位操作数的“异或”操作将归零。为了避免该情况,计算历史之一可以被循环移位。其次,通过结果移位,计算历史将老化。这将帮助计算历史反映新近的指令比老化的指令对计算历史的值影响更大的事实。在本发明的一实施例中,一个计算历史持续的时间仅仅与它被使用的时间一样长。例如,假定寄存器305-5当前储存着一个值,计算历史320-5当前在寄存器305-5中存储一个计算历史的值。如果下一个指令从存储器读出一个值,并存入寄存器305-5,一个新计算历史320-5将会产生,旧的计算历史将消失。在另一个实施例中,与丢弃计算历史不同,计算历史可以置于计算历史栈435中。计算历史栈435在存储器的某一位置,当相应的寄存器的值被存入存储器时,计算历史可以存入计算历史栈。然后,如果该计算历史的值返回至寄存器,相应计算历史可以从计算历史栈435重新得到。例如,当寄存器305-5的值被交换出至存储器,行440显示与该值相关的计算历史的值是0x34D12F21。虽然如图3-4显示了计算历史与寄存器相关,它们也可与指令相关联。指令的计算历史可以是一个操作数的计算历史,一个由源操作数(或者其他静态信息)或目标操作数的计算历史产生的计算历史。例如,在预测一分支指令时,源寄存器的计算历史可以被加载为指令的计算历史。本领域技术人员将认识到,计算历史的生成是递归的就是说,产生一计算历史依赖于对先前计算历史的了解。通过计算历史递归产生,每个计算历史标识(通过散列)影响寄存器当前值的所有的值。影响计算历史的对象数目没有限制计算历史有效的跟踪寄存器中当前数据值的全部起源。本领域技术人员也认识到,指令可以有非寄存器的操作数对象。例如,一个“加载” 指令加载一个数据值(或许来自存储器,如果直接存储器寻址是允许的,或许是一个静态值)到寄存器中。这些如何影响计算历史将通过以下的图5进一步讨论。图5是根据本发明的一实施例,没有使用其它寄存器的计算历史,生成一个图3所示寄存器的计算历史。图5中,指令505可以是一个“加载”指令,从存储器515加载一个值到寄存器。加载指令505的计算历史通常是在忽视加载指令505使用的任何源寄存器的前提下生成的,但是加载指令505的计算历史可使用源寄存器的计算历史或源寄存器中的值。例如,用于加载该数值的存储单元地址可以被装入寄存器用于加载指令505。(计算历史发生器225可以将该值与指令505的程序计数器510进行任选散列。)这个新值成为寄存器305-5的计算历史。计算历史是一个更普通概念的特殊实例数据流图。数据流图是程序中数据流的一种表示法。数据流图可以使用运行时间数据(例如程序运行中与变量关联的实际值)动态生成,也可以使用仅在编译时可用数据来静态生成。数据流图可以计算历史相同的方式使用对指令特性作出预测,例如由分支指令采用的方向。图6是根据本发明的一实施例,显示在图2所示计算机系统中,一个查找表索引的生成。显然,计算历史可以被直接用于索引进入查阅表230。但是由于查阅表230索引使用的每一附加位使查阅表230长度变长两倍,最好是保持查阅表230的长度不要过大。这样, 即使图6显示了 32位计算历史,查阅表230的索引长度仅仅是16位。为了将计算历史的长度缩短至索引的长度,可使用索引计算器605。框610显示了一实施例中索引计算器610 的详细情况。框610中,计算历史被分成两部分。图6所示,两部分615和620通过框625中的 “异或”操作散列。结果得到一个16位索引,该索引可用于索引进入查阅表230。如果希望得到一个较小的索引,可重复该过程,将该索引减少为8位。本领域技术人员也认识到,也可以使用其它方法将计算历史的长度减少至索引进入查阅表230索引的大小。请注意查阅表230可以存储对数据的任何种类的预测。查阅表230最直接的用途是存储一个分支预测,但是它对于存储何种预测没有限制。例如,查阅表230可以用于对存储器查阅地址或由变量采用的数据值做预测。图7A-7B是根据本发明的一实施例,在图2所示计算机系统中,为一个指令构建计算历史的步骤的流程图。图7A中,在程序块705,一个指令被读取。在判定点710,检查源操作数以确定是否存在计算历史。如果有,在程序块715中,加载源操作数的计算历史。如果没有,在程序块720中,静态值将被用作源操作数的计算历史。(根据以上对图5的讨论, 那些没有源计算历史的指令的例子是存取存储器或将一个静态值加载至寄存器的指令。)在程序块725(图7B),计算历史被组合。其他静态数据在此时也可以被使用。在程序块730,结果被确定为指令的计算历史。最后,在程序块735,计算历史(任选地)与指令的目标操作数一起存储。图8是根据本发明的一实施例,在图2所示计算机系统中,使用一种可能的散列功能来产生计算历史的步骤的流程图。在程序块805中,源操作数之一的计算历史被循环移位。在程序块810中,计算历史通过“异或”操作组合。在程序块815中,任何其他静态数据都可以成为计算历史的一部分例如,指令的程序计数器。最后,在程序块820中,结果被移位,以老化计算历史。图9是根据本发明的一实施例,在图2所示计算机系统内,使用一个计算历史来预测指令特性的步骤的流程图。在程序块905中,为指令存取一个计算历史。通常如果指令有一个目标寄存器,采用的计算历史与该指令的目标存储器相关联。对于没有目标存储器的指令(例如一个分支指令),采用的计算历史与该指令的源寄存器相关联。在程序块910 中,由计算历史产生一个索引。在程序块915中,该索引被用来存取一个查阅表。在程序块 920中,从查阅表读一个值。在程序块925中,使用从查阅表读出的值对指令特性作出预测。 最后,在程序块930中,一旦预测的真伪已知,查阅表的值可以被(任选地)更新。本领域技术人员将认识到,以上描述的发明实施例是可以通过使用计算机实现的。那样,本方法由组成程序的指令实现(这样,指示中央处理单元如何运行程序)。该程序可以存储于计算机可读媒介,例如软盘,光盘(如压密盘),硬盘(如硬驱),随即存取存储器(RAM),只读存储器(R0M),或快速存储器。该程序可以在计算机上运行以实现该方法。 本领域技术人员也可以认识到,以上涉及的发明实施例可以包括一个计算机可读调制载波信号,该程序或程序运行的一部分,可以分布于网络中的多个计算机。以上在本发明的一个实施例中图示和描述了本发明的原理,有一点对本领域技术人员显而易见,不偏离该原理,本发明可在安排和细节上修改。所有在随后权利要求的精神和范围中的修改都被要求权利。
权利要求
1.一种处理器,包括计算历史发生器,以产生相应于指令的计算历史,所述计算历史包括操作数的计算历史,其中所述操作数的计算历史包括静态数据,所述静态数据是在包括所述指令的程序编译时就知道的;以及预测器,以使用所述计算历史来产生与所述指令的特性有关的预测,所述预测器包括存储区以存储与所述指令的所述特性有关的所述预测,所述存储区包括查阅表以存储与至少一个指令的特性有关的至少一个预测,所述至少一个指令包括所述指令,所述至少一个指令的所述特性包括所述指令的方向,其中所述指令是分支指令。
2.如权利要求I所述的处理器,还包括索引存储区,以存储由所述计算历史引出的索弓丨,所述索引被用于存取与所述指令的所述特性有关的所述预测。
3.如权利要求2所述的处理器,还包括逻辑以减小所述计算历史的长度,以便引出所述索引。
4.如权利要求I所述的处理器,还包括逻辑以更新所述查阅表中的所述预测。
5.如权利要求I所述的处理器,还包括逻辑以更新所述存储区中的所述预测。
6.如权利要求I所述的处理器,其中所述计算历史可使用一组数据值来产生,每个数据值表示对所述指令有影响的对象。
7.一种用于使用静态计算历史的方法,包括读取指令,所述指令包括两个操作数,每个操作数是计算机中的一个寄存器,第一寄存器具有第二计算历史,而第二寄存器具有第三计算历史;使用一组静态值的子集确定用于所述指令的静态计算历史,所述一组静态值包括一个或多个第二计算历史,一个或多个静态值和一个用于所述指令的程序计数器,包括对所述第二计算历史进行循环移位;以及将循环移位后的第二计算历史与所述第三计算历史散列;以及使用所述静态计算历史预测所述指令的特性。
8.如权利要求7所述的方法,其中将循环移位后的第二计算历史与所述第三计算历史散列包括将循环移位后的第二计算历史与所述第三计算历史和用于所述指令的程序计数器散列。
9.如权利要求7所述的方法,其中预测所述指令的特性包括存取查阅表;使用所述静态计算历史,索引进入所述查阅表;以及基于所述静态计算历史的索引,从所述查阅表读值。
10.如权利要求9所述的方法,其中索引进入所述查阅表包括减小所述静态计算历史的长度。
11.如权利要求10所述的方法,其中减小所述静态计算历史的长度包括将所述静态计算历史分成两部分;对所述两部分执行“异或”操作;以及使用“异或”操作的结果,索引进入所述查阅表。
12.如权利要求7所述的方法,其中预测所述指令的特性包括预测分支指令的方向。
13.如权利要求7所述的方法,还包括确定所述预测是否正确;以及更新计数器来反映所述预测的准确性。
全文摘要
程序中与指令相关的是计算历史。计算历史代表所有影响指令结果的对象,这些对象包括(但不限于)寄存器,存储地址,静态值,和指令程序计数器。计算历史可以用来对指令特性做预测。
文档编号G06F9/00GK102591621SQ20111035310
公开日2012年7月18日 申请日期2003年12月25日 优先权日2002年12月27日
发明者托马斯·瑞杰, 斯塔克·W·加尔德, 维尔克森·B·克里斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1