聚集页错误信令和处理的制作方法

文档序号:18301453发布日期:2019-07-31 10:11阅读:162来源:国知局
聚集页错误信令和处理的制作方法

各实施例涉及计算机架构。具体而言,各实施例涉及计算机架构中的页错误。



背景技术:

处理器通常执行访问(例如,读取和/或写入)存储器的指令。例如,这些指令可具有提供存储器位置的地址的存储器操作数。虚拟存储器管理方案通常被使用,其中这些指令指示虚拟或逻辑存储器地址,这些虚拟或逻辑存储器地址被转换成用于访问主存储器中的各个位置的物理地址。分页通常被用作存储器管理方案。分页将存储器组织成各个页。各个页可表示存储器的作为单独实体来处理的固定或可变大小的块或部分。因此,各指令对存储器操作数的访问可以表示对页的访问。分页的一个优点是它允许数据被存储在次级存储(例如,硬盘)中并在需要时被取回到主存储器中。

页错误可在指令尝试访问主存储器中没有的页时发生。例如,该指令可指示不能被映射到与该页相关联的物理地址的虚拟地址。页错误还可在该指令所尝试的访问被认为不许可时发生。这可例如在该指令尝试向只读页进行写入时发生。页错误可有效地表示由硬件(例如,处理器和/或存储器管理单元(mmu))对软件(例如,操作系统和/或页错误处理程序)发起或用信号通知的错误、中断、异常、或陷入。响应于页错误,软件(例如,页错误处理程序)可以在从页错误返回到处理器之前尝试处理该页错误。这样的页错误往往花费大量时间来解决,往往降低性能,并且一般是不合乎需要的。

一些指令具有多个存储器操作数并且尝试访问多个存储器位置。作为示例,2011年6月发布的文档参考号为319433-011的advancedvectorextensionsprogrammingreference(英特尔高级向量扩展编程参考)描述了若干vgather指令(例如,vgatherdpd、vgatherqpd、vgatherdps、vgatherqps、vpgatherdd、vpgatherqd、vpgatherdq以及vpgatherqq)。vgather指令被用来使用从索引的向量中导出的存储器地址来从存储器收集或加载多个值。作为示例,vpgatherdd/vpgatherqd能够从存储器收集高达4或8个值。具有两个或更多个存储器操作数并尝试访问两个或更多个存储器位置的其他指令在本领域中是已知的。

图1是示出可响应于vgather指令101来执行的示例收集操作100的框图,vgather指令101指定存储器104中的多个对应页103的多个存储器地址102。vgather操作使用由该vgather指令指定的8个对应的存储器地址从8个页收集或加载8个值并将它们存储在结果打包数据104中。例如,第一存储器地址0102-0与第一页0103-0相对应,第二存储器地址1102-1与第二页1103-1相对应,以此类推。因此,该vgather指令潜在地尝试同时访问高达8个不同页。这样的vgather指令/操作可在例如置换大型矩阵或以其他方式访问稀疏存储器位置时使用。

在该vgather指令所指示的页中的两个或更多个(或更糟地全部8个)不在存储器中时和/或对这些页的访问不许可时,可发生重大问题。具体而言,该vgather指令的执行可涉及两个或更多个(或更糟地潜在8个)连续页错误。用于vgather的当前页错误机制是连续的,伴随这些页错误的从右至左地址排序。例如,如果在vgather指令的执行期间,与存储器地址0、存储器地址2以及存储器地址7相对应的页不存在于物理存储器中,则第一页错误可针对存储器地址0来引起。在第一页错误已被解决之后,vgather指令的执行可重启并且第二页错误可针对存储器地址2来引起。在第二页错误已被解决之后,vgather指令的执行可重启并且第三页错误可针对存储器地址7来引起。在一些情况下,对于这样的vgather指令,高达8个连续页错误可被引起。类似地,各种其他指令可以指定可潜在地导致两个或更多个连续页错误被引起的两个或更多个存储器地址。

这样的页错误的连续解决可能往往花费大量时间来解决,往往降低性能,并且一般是不合乎需要的。

附图说明

可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中:

图1是示出可响应于vgather指令来执行的示例收集操作的框图,该vgather指令指定存储器中的多个对应页的多个存储器地址。

图2是其中可以实现本发明的各实施例的系统的实施例的框图。

图3是处理器中的用于生成多页页错误的方法的示例实施例的框流程图。

图4是页错误处理程序模块中的用于解决多页页错误的方法的示例实施例的框流程图。

图5是页错误通信接口的实施例的框图。

图6是具有聚集的页错误信息和处理器状态信息的页错误处理程序模块栈的特定示例实施例的框图。

图7是多个出错页的合适的聚集错误代码的特定示例实施例的框图。

图8是具有纹理采样器和存储器管理子系统的图形处理单元(gpu)的框图,该存储器管理子系统包含多页错误聚集逻辑。

图9a是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图。

图9b是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的框图。

图10a和图10b示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块(包括具有相同类型和/或不同类型的其他核)中的一个。

图11是根据本发明的实施例的处理器1100的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形器件。

图12所示为根据本发明的一个实施例的系统1200的框图。

图13所示为根据本发明的一实施例的第一更具体示例性系统1300的框图。

图14所示为根据本发明的实施例的第二更具体的示例性系统1400的框图。

图15所示为根据本发明的实施例的soc1500的框图。

图16是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。

具体实施方式

在以下描述中,阐述众多具体细节(例如,具体处理器配置、操作序列、接口、错误代码等)。然而,在没有这些具体细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理解。

图2是其中可实现本发明的各实施例的系统210(例如,计算机系统或具有一个或多个处理器和存储器的其他电子系统)的实施例的框图。该计算机系统包括处理器211、主存储器233以及次存储器232。该处理器可以是各种复杂指令集计算(cisc)处理器、各种精简指令集计算(risc)处理器、各种超长指令字(vliw)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型等计算机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适专用处理器的示例包括但不限于,图形处理器、网络处理器、通信处理器、加密处理器、协处理器、嵌入式处理器、数字信号处理器(dsp),仅列举数例。

处理器包括常规指令流水线214。指令可被提供给指令流水线以供执行。在一些实施例中,多存储器地址指令212可被提供给指令流水线以供执行。多存储器地址指令具有多个存储器地址213。这些存储器地址可表示虚拟或逻辑存储器地址(例如,线性地址)。如图所示,该指令可具有第一存储器地址213-1到第n存储器地址213-n,其中n至少是2。合适的多存储器地址指令的示例包括但不限于指示多个存储器地址的收集指令、指示多个存储器位置的分散指令、以及指示可各自潜在地对应于不同存储器页的多个存储器地址的其他存储器访问指令。

在指令流水线内,尝试将该多存储器地址指令的虚拟或逻辑存储器地址转换成对应的物理地址。存储器地址可被提供给处理器的存储器管理子系统216。在相关于聚集的页错误的少量异常的情况下(这将在下文进一步讨论),存储器管理子系统可基本上是常规的,并且可执行基本上常规的操作来尝试将虚拟存储器地址转换成对应的物理地址。

不同存储器管理子系统在本领域中是已知的。在一些实施例中,存储器管理子系统可包括存储器管理单元(mmu)和转换后备缓冲器(tlb)。mmu可表示被用来帮助尝试将该指令所指示的虚拟存储器地址转换成物理存储器地址的硬件组件。mmu可检查tlb以查看该tlb中是否有虚拟存储器地址到物理存储器地址转换是可用的。如果转换是可用的(即,存在tlb命中),则物理存储器地址222可被取回并被用于访问主存储器233中对应的页228。或者,如果转换不可用(即,存在tlb未命中),则mmu还可通过执行页走查来尝试转换虚拟存储器地址。在页走查期间,mmu可以确定与虚拟存储器地址相关联的页是否存在于存储器中并且可以确定与该页相关联的许可是否允许所尝试的访问。如果该页缺失或者如果许可不允许所尝试的访问,则常规上,将发生页错误。

在本发明的各实施例中,存储器管理子系统216包括能操作来聚集多个页错误的多页错误聚集逻辑220。页错误可以表示较小页错误、软页错误、较大页错误、硬页错误、无效页错误、或其组合。多页错误聚集逻辑可操作来存储或向页错误通信接口225提供多个页错误的聚集的页错误信息226。在一些实施例中,多页错误聚集逻辑可操作来聚集多存储器地址指令212的所有存储器地址的所有页错误,但这不是必需的。在其他实施例中,多页错误聚集逻辑可操作来聚集多存储器地址指令的两个或更多个存储器地址的子集的两个或更多个页错误的子集。虽然这可往往牺牲一些性能,但与聚集所有页错误的情况相比,聚集两个或更多个页错误可具有比不聚集页错误的情况更好的性能并且可适用于一些实现。取决于实现,页错误聚集逻辑可顺序地(例如,从指令的第一存储器地址朝着最后存储器地址)或并行地工作。一检测到第一页错误,聚集逻辑就可确定出错指令所指示的多个页,并提供该多个页作为所发生的异常的一部分。多页错误聚集逻辑可操作来发起或发出与多个聚集的页错误相对应的多页页错误223。

多页错误聚集逻辑还可操作来存储或向页错误通信接口提供与处理器状态221有关的处理器状态信息227。处理器状态可以表示处理器的执行的当前状态。处理器状态的示例包括但不限于处理器状况、处理器标志、指令指针、以及其组合。

页错误通信接口225是处理器和操作系统模块229和/或聚集的页错误处理程序模块230使用来交换与聚集的页错误有关的信息的接口。在一些实施例中,页错误通信接口可以表示处理器和操作系统两者都可访问的、一个或多个预定达成一致的架构上可见的存储位置。不同类型的页错误通信接口是合适的。合适的页错误通信接口的示例包括但不限于一个或多个栈(例如,页错误处理程序模块栈)、一个或多个寄存器(例如,一个或多个控制寄存器或向量控制寄存器)、所分配的存储器位置、存储器映射输入/输出存储器位置、以及其组合。本发明的范围不限于任何已知类型的页错误通信接口,只要处理器和操作系统和/或页错误处理程序模块知道该接口并能够在需要时访问它以传达适当的信息。

多页错误聚集逻辑220可用硬件(例如集成电路)、固件、微代码、软件、或其组合来实现。在一些实施例中,多页错误聚集逻辑可用处理器的微代码、嵌入式固件、或嵌入式软件来实现。在一些实施例中,多页错误聚集逻辑包括至少一些硬件(例如,集成电路、晶体管、逻辑门等)。在一些实施例中,存储器管理子系统包括mmu且多页错误聚集逻辑被包括在mmu中。在其他实施例中,存储器管理子系统包括mmu且多页错误聚集逻辑与mmu分开但与mmu相耦合或以其他方式与mmu通信。

再次参考图2,操作系统模块229被存储在主存储器中。所示操作系统模块包括可操作来处理响应于处理器发起或用信号通知的单个多页页错误223的多个页错误的聚集的页错误处理程序模块230。在各实施例中,聚集的页错误处理程序模块可表示可操作来处理来自处理器的单次访问中的多个页错误的一个或多个例程、子例程、模块、子模块、软件部分、或操作系统的一个或多个其他部分。页错误可表示错误、中断、异常、或陷入。

在处理多个页错误时,聚集的页错误处理程序模块230可以从页错误通信信息读取或以其他方式访问聚集的页错误信息226。如下文将进一步解释的,聚集的页错误信息可包括与多个页错误有关的信息。作为示例,聚集的页错误信息可包括出错页的多个存储器地址、描述各页错误中的每一个的性质的信息(例如,因各页错误中的每一个而异或与其相关的错误代码信息)等等。聚集的页错误处理程序模块可潜在地从次存储器232引入多个缺失的页231并将它们与其他页228一起存储在主存储器中。次存储器可包括一个或多个硬盘或其他大容量存储设备。在一些情况下,聚集的页错误处理程序模块可潜在地改变页的属性。

页错误处理程序模块和/或操作系统可处理、服务、或解决响应于来自处理器的单次访问的所有出错页(例如,单个多页页错误)。即,多个页错误可被一起或作为一批或一群来处理,而非在处理器中出现了分开的顺序或串行的页错误之后各自被顺序地或串行地处理。在多个页错误已被解决时,可从操作系统和/或页错误处理程序模块向处理器作出来自多页页错误224的单个返回。例如,作为处理器状态信息的一部分来传递的指令指针可被用来使执行返回到该多存储器地址指令,这可随后在不招致页错误或招致页错误的至少降低的风险的情况下继续执行。有利地,通过允许处理器将多个页错误聚集在一起,并且通过允许操作系统将聚集的多个页错误作为一批或一群来处理,与串行地发起并处理多个页错误的链相关联的缺陷可被避免,这可帮助极大地提高性能和执行速度。

为了避免混淆本描述,已示出和描述了相对简单的计算机系统和处理器。在其他实施例中,处理器可任选地包括其他公知组件,诸如举例而言,指令获取单元、指令调度单元、分支预测单元、指令和数据高速缓存、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级高速缓存、引退单元、寄存器重命名单元、处理器中包括的其他组件、及其各种组合。实施例可具有多个核、逻辑处理器或执行引擎。可操作用于执行本申请中公开的指令实施例的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。

图3是处理器中的用于生成多页页错误的方法340的示例实施例的框流程图。在各实施例中,该方法可由通用处理器或专用处理器(例如,图形处理器)执行。在一些实施例中,方法340可由图2的处理器211执行。或者,方法340可由与处理器211不同的处理器执行。此外,处理器211可执行与方法340的实施例相同或者不同的操作和方法的实施例。

该方法包括在框341,检测多个页错误。在一些实施例中,该多个页错误可以与单个多存储器地址指令相关联。

该方法包括在框342,将处理器状态信息存储在页错误通信接口中。作为示例,处理器状态信息可包括处理器状况、处理器标志、指令指针、栈指针、栈段信息、代码段信息、或其组合。一般而言,可以存储常规上针对页错误进行存储的任何类型的处理器状态信息。在一些实施例中,页错误通信接口可包括页错误处理程序栈、控制寄存器、一个或多个所分配的存储器位置、存储器映射输入/输出、或其组合。

该方法包括在框343,将多个页错误的聚集的页错误信息存储在页错误通信接口中。在一些实施例中,聚集的页错误信息可包括多个相对应的出错页的多个存储器地址。在一些实施例中,聚集的页错误信息可包括多个出错页的聚集的错误代码信息。在一些实施例中,聚集的错误代码信息可包括多个或所有出错页共同的信息(例如,与多存储器地址指令有关的、影响该指令的各存储器地址中的每一个的信息)以及因出错页中的各单独页而异的信息。

该方法包括在框344,用信号通知多个出错页的单个多页页错误。在一些实施例中,在操作系统处理聚集的页错误时,多存储器地址指令的执行可被停止,并且在一批中使用向操作系统发起的单个错误以及来自操作系统的单个相关联的来自错误的返回处理了该多个页错误之后,该多存储器地址指令的执行可恢复。

这仅仅是合适的方法的一个实施例。已经以基本形式示出了该方法,但可任选地向该方法添加操作和/或从该方法移除操作。另外,虽然已示出和/或描述了特定操作次序,但替换实施例可按不同次序执行某些操作、组合某些操作、重叠某些操作等等。例如,聚集的页错误信息可在处理器状态信息之前被存储。

图4是页错误处理程序模块中的用于解决多页页错误的方法445的示例实施例的框流程图。在各实施例中,该方法可在计算机系统或包括在通用或专用处理器上执行指令的其他电子设备中执行。页错误处理程序模块可以是具有用于解决多个聚集的页错误的特定逻辑的特定页错误处理程序模块。

该方法包括在框446接收多页页错误。多页页错误可涉及多个页。在一些实施例中,这可包括接收由处理器或mmu发起或用信号通知的页错误。

该方法包括在框447,从页错误通信接口访问处理器状态信息。处理器状态信息可包括上述各类型的信息。页错误通信接口可以是如上所述的那样(例如,栈、寄存器、存储器位置、或其组合)。

该方法包括在框448,从页错误通信接口访问多个页错误的聚集的页错误信息。在一些实施例中,聚集的页错误信息可包括多个相对应的出错页的多个存储器地址。在一些实施例中,聚集的页错误信息可包括多个出错页的聚集的错误代码信息。在一些实施例中,聚集的错误代码信息可包括多个或所有出错页共同的信息(例如,与多存储器地址指令有关的、影响该指令的各存储器地址中的每一个的信息)以及因出错页中的各单独页而异的信息。

该方法包括在框449,解决多个页错误。页错误处理程序模块可以标识与该错误相关联的多个页地址。页错误处理程序随后可确定多个页中的每一个的问题是与关联于所尝试的访问的许可属性相关还是由于该页不存在。作为示例,如果该问题与许可属性相关(例如,存在许可冲突),则可解决该许可属性(例如,新页可被分配)。作为另一示例,如果该问题是由于该页不存在(例如,该页不在主存储器中而在次存储器中),则该页可被取回(例如,该页可从次存储器访问并被存储在主存储器中)。在一些情况下,页可能需要被交换出主存储器以腾出空间。用于反映该变化的分页结构和其他更新可被执行,如常规地进行的。这可对与该多页页错误相关联的多个或一批页中的每一个页重复。

该方法包括在框450,在多个页错误已被解决之后从多页页错误的单个返回。在一些实施例中,这可包括在通过发起单个页错误以及从页错误的单个返回已解决了与多个存储器地址相关联的多个页错误之后,使用指令指针来将执行返回到多存储器地址指令。

这仅仅是合适的方法的一个实施例。已经以基本形式示出了该方法,但可任选地向该方法添加操作和/或从该方法移除操作。另外,虽然已示出和/或描述了特定操作次序,但替换实施例可按不同次序执行某些操作、组合某些操作、重叠某些操作等等。例如,聚集的页错误信息可在处理器状态信息之前被访问。

图5是页错误通信接口525的实施例的框图。页错误通信接口表示由处理器和操作系统模块用来交换与聚集的页错误有关的信息的接口。在一些实施例中,页错误通信接口可以表示处理器和操作系统两者都可访问的、一个或多个预定达成一致的架构上可见的存储位置。合适页错误通信接口的示例包括但不限于一个或多个栈(例如,页错误处理程序模块栈)、一个或多个寄存器(例如,一个或多个控制寄存器或向量控制寄存器)、所分配的存储器位置、存储器映射输入/输出存储器位置、以及它们的组合。本发明的范围不限于任何已知类型的页错误通信接口,只要处理器和操作系统和/或页错误处理程序模块知道该接口并能够在需要时访问它以传达适当的信息。

多个出错页的聚集的页错误信息526被存储在该接口中。聚集的页错误信息包括多个出错的虚拟存储器地址或页551。在该图示中,多个出错的虚拟存储器地址包括第一出错的虚拟存储器地址或页551-1以及第n出错的虚拟存储器地址或页551-n,其中n至少是2。在一些实施例中,只有出错的虚拟存储器地址才可通过该接口从处理器提供和/或传递到操作系统。或者,在其他实施例中,所有虚拟存储器地址(例如,多存储器地址指令的所有虚拟存储器地址)可通过该接口从处理器提供和/或传递到操作系统,即使它们没有出错。有利地,这可允许操作系统模块和/或页错误处理程序模块确保在返回到该指令的执行之前,该指令所需的所有页是可用的且对它们的访问是值(例如,它们具有适当的许可属性)。在又一些其他实施例中,所有虚拟存储器地址可通过该接口从处理器提供和/或传递到操作系统,即使它们没有出错,并且出错的虚拟存储器地址的子集可以与非出错的虚拟存储器地址区分开。出错和非出错的存储器地址可按各种不同的方式被彼此区分开,诸如举例来说通过设置或清除与出错和非出错的虚拟存储器地址中的一个或多个相关联的位或者以其他方式对它们中的一个或多个进行标记。

聚集的页错误信息还包括聚集的错误代码信息552。在该图示中,聚集的错误代码信息包括所有出错的虚拟存储器地址或页(在一些情况下,所有虚拟存储器地址或页)共同的信息553、第一出错的虚拟存储器地址或页专有或特有的信息554-1、以及第n出错的虚拟存储器地址或页专有或特有的信息554-n。作为示例,所有出错的虚拟存储器地址共同的信息可包括用于指定造成该错误的访问是读取(例如,在收集指令的情况下)还是写入(例如,在分散指令的情况下)、该错误是否由指令获取造成、造成该错误的访问是在处理器在特权(例如,系统管理程序)还是非特权(例如,用户)模式中执行时发起等等的信息,这对与给定多存储器地址指令相关联的所有虚拟存储器地址而言是共同的。

作为对比,给定出错的虚拟存储器地址所专有或特有的信息可包括用于指定该错误是否由不存在的页造成、该错误是否由页级保护违反造成、该错误是否由保留的位违反造成等等的信息,这对给定出错的虚拟存储器地址而言可能全部是专有的。即,该信息中的一些可以按出错的虚拟存储器地址来指定。在这一实施例中,所有出错的虚拟存储器地址共同的信息的一部分只需要被存储一次,并且只有每一出错的虚拟存储器地址所专有或特有的信息才需要针对每一出错的虚拟存储器地址来存储。或者,在其他实施例中,所有信息可针对每一出错的虚拟存储器地址来存储,但这可占据更多空间。

处理器状态信息527也被存储在该接口中。所示出的处理器状态信息包括状态寄存器和/或标志555以及指令指针556。

图6是具有聚集的页错误信息626和处理器状态信息627的页错误处理程序模块栈625的特定示例实施例的框图。页错误处理程序模块栈可表示主存储器的所分配的部分。该栈可表示信息的后进先出(lifo)线性数据结构或线性列表,其中添加和删除是从被称为该栈的顶部的一端作出的。该栈可通过特定命令或操作来访问,诸如例如推入和弹出。推入操作可将新信息段添加到该栈的顶部。弹出操作可从该栈的顶部移除项。或者,可任选地使用除栈之外的其他类型的数据结构。处理器可以将所示出的信息推入到该栈上并且操作系统模块或页错误处理程序模块可将所示出的信息从该栈中弹出。

该栈包括处理器状态信息627。如图所示,在所示实施例中,处理器状态信息可包括栈段寄存器(例如,ss)657、栈指针寄存器(例如,esp)658、状态寄存器(例如,eflags)659、代码段寄存器(例如,cs)660、以及指令指针寄存器(例如,eip)661。这只是可能的处理器状态信息的一个示例实施例,并且本发明的范围不限于这一特定处理器状态信息。在其他实施例中,这一信息中的一些可任选地被省略,附加信息可任选地被添加,并且此外,该信息的次序可任选地被重新安排。

该栈还包括聚集的页错误信息626。如图所示,在所示实施例中,聚集的页错误信息包括多个出错的页的聚集的错误代码信息652、页的数量的指示662(例如,页的总数或出错的页的总数)、多个虚拟存储器地址或页651(包括第一虚拟存储器地址或页651-1和第n虚拟存储器地址651-n或页(例如,指令的所有虚拟存储器地址或只有出错的虚拟存储器地址))、以及哪些页是出错页的指示663。这只是可能的聚集的页错误信息的一个示例实施例,并且本发明的范围不限于这一特定聚集的页错误信息。在其他实施例中,这一信息中的一些可任选地被省略,附加信息可任选地被添加,并且此外,该信息的次序可任选地被重新安排。此外,这一信息中的一些可被组合。例如,哪些页出错和/或页数的指示可任选地被组合成聚集的错误代码信息。在其他实施例中,并非指定页数,出错的区域的数量可另选地被指定。

图7是多个出错页的合适的聚集错误代码的特定示例实施例的框图752。聚集的错误代码包括m位。作为示例,m可以是32位、64位、128位等。多至n个页错误的聚集的错误代码信息可被表示。在该图示中,p-n表示具有值0或者值1的每页位,值0指示页n的错误是由不存在的页造成的,值1指示页n的错误是由页级保护违反造成的。w/r表示具有值0或者值1的单个位,值0指示造成该错误的访问是读取(r),值1指示造成该错误的访问是写入(w)。u/s表示具有值0或者值1的单个位,值0指示造成该错误的访问是在处理器在系统管理程序模式(s)中执行时发起的,值1指示造成该错误的访问是在处理器在用户模式(u)中执行时发起的。rsvd-n表示具有值0或者值1的每页位,值0指示页n的错误不是由保留的位违反造成的,值1指示页n的错误是由在某些分页结构条目中保留的位被设置成1而造成的。i/d表示具有值0或者值1的单个位,值0指示造成该错误的访问不是由指令获取造成的,值1指示造成该错误的访问是由指令获取造成的。ag表示具有值0或者值1的单个位,值0指示非聚集页错误处理程序(例如,在背景一节中描述的常规程序)要被用来处理页错误,值1指示本文描述的聚集页错误处理程序要被用来处理页错误。这一位允许本文公开的聚集页错误处理程序被启用或禁用。示出了聚集错误代码内的各位的次序的特定说明性示例,但这只是说明性的并且不是必需的。在替换实施例中,这些位可被不同地安排。

图8是具有纹理采样器866和存储器管理子系统816的图形处理单元(gpu)865的框图,该存储器管理子系统816包含多页错误聚集逻辑820。纹理采样器可以从图像中检索样本,处理这些样本,并存储处理结果。对来自图像的纹理进行采样可招致多个页错误。多页错误聚集逻辑可聚集与多个页错误有关的信息并将聚集的页错误信息826存储在页错误通信接口825中。多页错误聚集逻辑随后可向操作系统模块829用信号通知或发起单个多页页错误。操作系统模块和/或其页错误处理程序模块可解决该多个页错误并且一旦该多个页错误被解决就导致从多页页错误的单个返回。在所示实施例中,存储器管理子系统(例如,mmu和其他组件)被示为位于gpu上(例如,在具有该gpu的一个或多个核的管芯上),但在其他实施例中,具有多页错误聚集逻辑的存储器管理子系统或其一部分可位于gpu之外(例如,作为独立组件或作为通用处理器的一部分)。

示例性核架构、处理器和计算机架构

处理器核可以用不同方式、出于不同目的、在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核的cpu;以及2)包括主要预期用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与cpu分开的芯片上的协处理器;2)在与cpu相同的封装中但分开的管芯上的协处理器;3)与cpu在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等的专用逻辑,或被称为专用核);以及4)可以将所描述的cpu(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图9a是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图。图9b是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的框图。图9a-b中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。

在图9a中,处理器流水线900包括获取级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922和提交级924。

图9b示出了包括耦合到执行引擎单元950的前端单元930的处理器核990,且执行引擎单元和前端单元两者都耦合到存储器单元970。核990可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或混合或替代核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(gpgpu)核、图形核等等。

前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,该指令高速缓存单元耦合到指令转换后备缓冲器(tlb)936,该指令转换后备缓冲器耦合到指令获取单元938,指令取出单元耦合到解码单元940。解码单元940(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核990包括存储特定宏指令的微代码的微代码rom或其他介质(例如,在解码单元940中或否则在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配单元952。

执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元耦合至引退单元954和一个或多个调度器单元956的集合。调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元956耦合到物理寄存器组单元958。每个物理寄存器组单元958表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元958与引退单元954重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元954和物理寄存器组单元958耦合到执行群集960。执行群集960包括一个或多个执行单元962的集合以及一个或多个存储器访问单元964的集合。执行单元962可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有函数的仅一个执行单元或多个执行单元。调度器单元956、物理寄存器组单元958和执行群集960被示为可能有多个,因为某些实施例为某些类型的数据/操作(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元964的某些实施例)创建分开的流水线。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。

存储器访问单元964的集合耦合到存储器单元970,该存储器单元包括耦合到数据高速缓存单元974的数据tlb单元972,其中数据高速缓存单元耦合到二级(l2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元970中的数据tlb单元972。指令高速缓存单元934还耦合到存储器单元970中的二级(l2)高速缓存单元976。l2高速缓存单元976耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线900:1)指令获取938执行获取和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)调度器单元956执行调度级912;5)物理寄存器组单元958和存储器单元970执行寄存器读取/存储器读取级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单元958执行写回/存储器写入级918;7)各单元可牵涉到异常处理级922;以及8)引退单元954和物理寄存器组单元958执行提交级924。

核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的某些扩展);加利福尼亚州桑尼维尔市的mips技术公司的mips指令集;加利福尼州桑尼维尔市的arm控股的arm指令集(具有诸如neon等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核990包括支持打包数据指令集合扩展(例如,avx1、avx2)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取指和解码以及此后诸如用超线程化技术来同步多线程化)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所例示的处理器的实施例还包括分开的指令和数据高速缓存单元934/974以及共享l2高速缓存单元976,但替换实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(l1)内部高速缓存或多级内部高速缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图10a-b示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块(包括具有相同类型和/或不同类型的其他核)中的一个。这些逻辑块通过高带宽的互连网络(例如,环形网络)与某些固定的功能逻辑、存储器i/o接口和其它必要的i/o逻辑通信,这依赖于应用。

图10a是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1002的连接及其二级(l2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有打包数据指令集扩展的x86指令集。l1高速缓存1006允许对高速缓存存储器的低等待时间访问进入标量和向量单元。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器1012和向量寄存器1014),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(l1)高速缓存1006读回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合,或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。

l2高速缓存的本地子集1004是全局l2高速缓存的一部分,该全局l2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的l2高速缓存的本地子集1004的直接访问路径。被处理器核读出的数据被存储在其l2高速缓存子集1004中,并且可以与其他处理器核访问其自己的本地l2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的l2高速缓存子集1004中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径每个方向为1012位宽。

图10b是根据本发明的各实施例的图10a中的处理器核的一部分的展开图。图10b包括l1高速缓存1004的l1数据高速缓存1006a部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体地说,向量单元1010是16宽向量处理单元(vpu)(见16宽alu1028),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该vpu支持通过拌和单元1020混合寄存器输入、通过数值转换单元1022a-b进行数值转换,以及通过复制单元1024进行对存储器输入的复制。写掩码寄存器1026允许断言(predicating)所得的向量写入。

具有集成存储器控制器和图形器件的处理器

图11是根据本发明的实施例的处理器1100的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形器件。图11中的实线框示出具有单个核1102a、系统代理1100、一个或多个总线控制器单元1116的集合的处理器1100,而虚线框的可选附加示出具有多个核1102a-n、系统代理单元1110中的一个或多个集成存储器控制器单元1114的集合以及专用逻辑1108的替代处理器1100。

因此,处理器1100的不同实现可包括:1)cpu,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102a-n是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1102a-n是主要旨在用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102a-n是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如bicmos、cmos或nmos等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。

存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1106的集合、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未示出)。该共享高速缓存单元1106的集合可以包括一个或多个中间级高速缓存,诸如二级(l2)、三级(l3)、四级(l4)或其他级别的高速缓存、末级高速缓存(llc)、和/或其组合。尽管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106的集合以及系统代理单元1110/集成存储器控制器单元1114互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1106和核1102a-n之间的一致性(coherency)。

在某些实施例中,核1102a-n中的一个或多个核能够多线程化。系统代理1110包括协调和操作核1102a-n的那些组件。系统代理单元1110可包括例如功率控制单元(pcu)和显示单元。pcu可以是或包括用于调整核1102a-n和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1102a-n在架构指令集方面可以是同构的或异构的;即,这些核1102a-n中的两个或更多个核可以能够执行相同的指令集,而其他核可以能够执行该指令集的仅仅子集或不同的指令集。

示例性计算机架构

图12-15是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。

现在参考图12,所示出的是根据本发明实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(gmch)1290和输入/输出中枢(ioh)1250(其可以在分开的芯片上);gmch1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;ioh1250将输入/输出(i/o)设备1260耦合到gmch1290。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245直接耦合到处理器1210以及控制器中枢1220,控制器中枢1220与ioh1250处于单个芯片中。

附加处理器1215的可选性质用虚线表示在图12中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。

存储器1240可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(fsb)之类的多点总线(multi-dropbus)、诸如快速通道互连(qpi)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。

在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。

在物理资源1210、1215之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。

在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。

现在参考图13,示出了根据本发明的一个实施例的第一更专用的示例性系统1300的方框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。

处理器1370和1380被示为分别包括集成存储器控制器(imc)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(p-p)接口1376和1378;类似地,第二处理器1380包括点对点接口1386和1388。处理器1370、1380可以使用点对点(p-p)接口电路1378、1388经由p-p接口1350来交换信息。如图13所示,imc1372和1382将各处理器耦合至相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连至相应的处理器的主存储器的部分。

处理器1370、1380可各自使用点对点接口电路1376、1394、1386、1398经由各个p-p接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。

共享高速缓存(未示出)可以被包括在任一个处理器之内或被包括在两个处理器外部但仍经由p-p互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。

芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围部件互连(pci)总线,或诸如pciexpress总线或其它第三代i/o互连总线之类的总线,但本发明的范围并不受此限制。

如图13所示,各种i/o设备1314可以连同总线桥1318耦合到第一总线1316,总线桥将第一总线1316耦合至第二总线1320。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如图形加速器或数字信号处理器(dsp)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(lpc)总线。各种设备可以被耦合至第二总线1320,在一个实施例中这些设备包括例如键盘/鼠标1322、通信设备1327以及诸如可包括指令/代码和数据1330的盘驱动器或其它大容量存储设备之类的存储单元1328。此外,音频i/o1324可以被耦合至第二总线1320。注意,其它架构是可能的。例如,代替图13的点对点架构,系统可实现多点总线或者其他此类架构。

现在参考图14,示出了根据本发明的一个实施例的更专用的第二示例性系统1400的方框图。图13和图14中的相同部件用相同附图标记表示,并从图14中省去了图13中的某些方面,以避免使图14的其它方面变得模糊。

图14示出处理器1370、1380可分别包括集成存储器和i/o控制逻辑(“cl”)1372和1382。因此,cl1372、1382包括集成存储器控制器单元并包括i/o控制逻辑。图14示出:不仅存储器1332、1334耦合至cl1372、1382,i/o设备1414也耦合至控制逻辑1372、1382。传统i/o设备1415被耦合至芯片组1390。

现在参考图15,示出了根据本发明的一个实施例的soc1500的方框图。图11中的类似元件具有相似的附图标记。另外,虚线框是更先进的soc的可选特征。在图15中,互连单元1502被耦合至:应用处理器1510,该应用处理器包括一个或多个核202a-n的集合以及共享高速缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1530;直接存储器存取(dma)单元1532;以及用于耦合至一个或多个外部显示器的显示单元1540。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

诸如图13所示的代码1330之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。

程序代码可以用高级过程语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“ip核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形配置,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、紧致盘可重写(cd-rw)的以及磁光盘;半导体器件,例如只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);相变存储器(pcm);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。

因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。

图16是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图16示出可以使用x86编译器1604来编译利用高级语言1602的程序,以生成可以由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1604表示用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码1606可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译利用高级语言1602的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集、和/或执行加利福尼亚州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生执行的替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1612表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86二进制代码1606的软件、固件、硬件或其组合。

在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合”可表示两个或多个元件直接物理或电气接触。然而,“耦合的”也可表示两个或更多个要素可能并未彼此直接接触,但是仍然彼此协作、彼此作用。例如,存储器管理子系统可通过一个或多个中间组件与寄存器或存储器位置耦合。在附图中,箭头用于示出耦合和/或连接。

在说明书和权利要求书中,可能使用了术语“逻辑”。如本文中所使用的,逻辑可包括硬件、固件、软件或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在某些实施例中,硬件设备可包括晶体管和/或门控,并潜在地包括其他电路组件。

在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在附图中显示且在说明书中描述的关系的所有等效关系都被涵盖在实施例内。在其它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦涩。在已示出和描述了多个组件的情况下,在一些情形中,它们可被结合成一个组件。在示出和描述了单一组件的一些情况下,该单一组件可被分成两个或两个以上组件。

已经以基本形式示出和描述了本文所公开的某些方法,但可任选地向这些方法添加操作和/或从这些方法移除操作。另外,已示出和/或描述了特定操作次序,但替换实施例可按不同次序执行某些操作、组合某些操作、重叠某些操作等等。

各实施例涉及包括机器可读存储介质的制品(例如,计算机程序产品),该介质存储指令序列(例如,一个或多个例程或程序的其他部分)。这些指令序列如果由机器执行则操作用于导致机器执行本文公开的一种或多种操作或方法。在一些实施例中,机器可读存储介质可以是有形的和/或非瞬态的机器可读存储介质。

在各示例实施例中,机器可读存储介质可包括软盘、光盘、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪存、相变存储器、半导体存储器、其它类型的存储器或它们的组合。在一些实施例中,介质可包括一个或多个固态数据存储材料,例如半导体数据存储材料、相变数据存储材料、磁性数据存储材料、光学透明固体数据存储材料等等。

不同类型的机器的示例包括但不限于处理器(例如,通用处理器和专用处理器)、指令处理装置、以及具有一个或多个处理器或指令处理装置的各种电子设备。这种电子设备的几个代表示例包括但不限于计算机系统、台式机、膝上型计算机、笔记本、服务器、网络路由器、网络交换机、上网计算机、机顶盒、蜂窝电话、视频游戏控制器等。

例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、及其描述中。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,说明书之后所附的权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1