用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令与流程

文档序号:14910885发布日期:2018-07-10 23:22阅读:121来源:国知局
在本文中描述的实施例一般地涉及处理器。更具体地,在本文中描述的实施例一般地涉及具有针对持久存储器的架构支持的处理器。
背景技术
::处理器可以被用在各种类型的计算机系统和具有主或初级存储器的其它电子设备中。主存储器通常可通过处理器的指令集的指令来寻址(例如,写到所述指令和通过所述指令来读)。常规地,易失性存储器已经被用于主存储器。广泛使用的易失性存储器的一个常见类型是动态随机存取存储器(DRAM)。这样的易失性存储器通常在没有电力的相对短暂的时间段之后、在系统崩溃之后、在操作系统崩溃之后、在重新启动之后等丢失它存储的内容。附图说明通过参考以下描述和用来图示实施例的附图,可以最好地理解本发明。在各图中:图1是在其中可以实现本发明的实施例的电子设备的方块图。图2是执行持久类型存储器检查指令的实施例的方法的实施例的方块流程图。图3是处理器的实施例的方块图,所述处理器可操作以执行持久类型存储器检查指令的实施例。图4是处理器的实施例的方块图,所述处理器可操作以执行持久类型存储器检查指令的实施例,并且其具有地址翻译(translation)单元的详细示例实施例。图5是适合的页表条目的详细示例实施例的方块图。图6是执行单元的详细示例实施例的方块图,所述执行单元用以执行持久类型存储器检查指令的实施例。图7是执行用以执行持久类型存储器检查指令的特殊加载操作的方式的详细示例实施例的方块图。图8是处理器的实施例的方块图,所述处理器可操作以执行向量持久类型存储器检查指令的实施例。图9是执行持久类型存储器检查指令的实施例并且使用持久类型存储器检查指令的结果来确定是否要更新预写日志的方法的示例实施例的方块流程图。图10A是图示有序流水线的实施例和寄存器重命名无序发出/执行流水线的实施例的方块图。图10B是处理器核心的实施例的方块图,所述处理器核心包括耦合到执行引擎单元的前端单元并且二者耦合到存储器单元。图11A是单个处理器核心连同其到管芯上互连网络的连接并且连同其级别2(L2)高速缓存的本地子集的实施例的方块图。图11B是图11A的处理器核心的部分的展开图的实施例的方块图。图12是处理器的实施例的方块图,所述处理器可以具有不止一个核心,可以具有集成存储器控制器,并且可以具有集成图形。图13是计算机架构的第一实施例的方块图。图14是计算机架构的第二实施例的方块图。图15是计算机架构的第三实施例的方块图。图16是计算机架构的第四实施例的方块图。图17是根据本发明的实施例的软件指令转换器的使用的方块图,所述软件指令转换器用以将源指令集中的二进制指令转换成目标指令集中的二进制指令。具体实施方式在本文中公开了指令的实施例、用以执行指令的处理器的实施例、执行指令的方法的实施例、合并用以执行指令的一个或多个处理器的系统的实施例,以及提供指令的程序或机器可读介质的实施例。在一些实施例中,处理器可能具有用以接收和/或解码指令的解码单元或其它逻辑,以及用以执行指令的执行单元或处理器的其它逻辑或其它部分。在以下描述中,阐述了众多特定细节(例如,特定指令操作、微架构细节、处理器配置、操作序列等)。然而,可以在没有这些特定细节的情况下实践实施例。在其它实例中,没有详细地示出公知的电路、结构和技术以避免模糊对本说明书的理解。图1是在其中可以实现本发明的实施例的电子设备100的方块图。在各种实施例中,电子设备可以表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、服务器、网络元件(例如,路由器、交换机等)、智能电话、智能电视、机顶盒、视频游戏控制台、其它类型的计算机系统或其它类型的电子设备。电子设备包括处理器108。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、协处理器、图形处理器、嵌入式处理器和数字信号处理器(DSP)。处理器可能具有和/或支持指令集架构(ISA)。ISA表示与编程相关的处理器的架构的一部分并且通常包括处理器的本机指令、架构寄存器、数据类型、寻址模式、存储器架构等。ISA区别于微架构,微架构一般表示用以实现ISA所选择的特定处理器设计技术。在各种实施例中,处理器可能具有复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、极长指令字(VLIW)架构、混合架构、其它类型的架构,或具有不同架构的组合(例如,不同的核心可能具有不同的架构)。如所示,处理器具有指令集110。指令集的指令可以表示处理器天然地(natively)能够解码的宏指令、机器指令或其它指令。电子设备还包括主存储器112。处理器和主存储器通过常规的耦合机构122(例如,通过一个或多个总线、集线器、存储器控制器、芯片组组件等)彼此耦合或以其它方式彼此通信。主存储器可以表示(例如,如与(未示出的)次级存储器或后备记忆装置相反的)初级存储器。主存储器可以用来存储软件(例如,系统级软件、用户级应用等)和数据(例如,由软件使用的数据、介质内容、数据结构等)。在操作期间,当处理器正在运行时,处理器可以对执行软件102的指令进行执行。这些指令可以表示指令集110中的指令,并且可以包括各种类型的指令,诸如例如数据处理指令(例如,算术指令、逻辑指令等)、用以访问主存储器中的数据的存储器访问指令等。存储器访问指令的示例包括用以从主存储器加载或读数据的加载或读指令,以及用以将数据写或存储到主存储器的写或存储指令(例如,写到存储器指令104)。主存储器通常可通过指令集的这样的存储器访问指令来访问,但(未示出的)次级存储器或后备记忆装置通常不可通过指令集的这样的存储器访问指令来访问(或许除了一些专门指令)。在一些实施例中,主存储器112可能包括易失性存储器114和持久存储器116二者。易失性存储器可能是易失性的或非持久的,因为其一般将在电力故障、操作系统故障、系统崩溃、系统重新启动或其它这样的事件以后的(例如,在没有刷新的情况下通常小于一秒的)相对短的时间量之后丢失它所存储的内容。相比之下,持久存储器可能是持久的和/或耐久的,因为其一般将在没有电力的情况下和/或在这样的事件以后甚至在长得多的时间量之后(例如,在至少数小时之后)也不会丢失它所存储的内容。在一些实施例中,持久存储器116和易失性存储器114二者可以是处理器可寻址的物理地址空间的部分。例如,可以执行指令集110的指令以访问持久存储器和易失性存储器二者。在一些实施例中,持久存储器可以是字节可寻址的,如与仅是页面和/或块可寻址的相反。在一些实施例中,对持久存储器的访问可能服从与对易失性存储器的访问类似或相同的处理器存储器模型(例如,关于要被高速缓存的能力、关于处理器维持高速缓存一致性、关于处理器存储器排序模型)。非常通常地使用的一个适合类型的易失性存储器114是动态随机存取存储器(DRAM)。适合类型的持久存储器116的示例包括但不限于天然地非易失性或持久存储器和可靠的电源后备易失性存储器,以及其组合。天然地非易失性或持久存储器天然地可操作以甚至在没有施加电力的至少数小时之后还保持其所存储的内容。仅举几例,适合类型的天然地非易失性或持久存储器的示例包括但不限于基于相变存储器、电阻随机存取存储器、相关电子随机存取存储器(CeRAM)、磁阻随机存取存储器(MRAM)、忆阻器(例如,涉及电荷和磁链的非线性无源两端电气组件)、自旋转移扭矩存储器(例如,其利用可以使用自旋极化电流来修改磁隧道结或自旋阀中的磁层的定向的效应)及其组合的那些。还可以可选地使用其它持久存储器技术以及将来开发的那些。还可以通过具有充分可靠的电源(诸如例如蓄电池、燃料电池等)的后备易失性存储器(例如,DRAM)创建持久存储器,使得电力不会在电力故障的情况下丢失并且内容不会在系统重新启动等的情况下丢失。在包括易失性存储器114和持久存储器116二者的电子设备100中,提供一种使软件(例如,执行软件102)能够知道(例如,通过写到存储器指令104的)对存储器的访问正在对易失性存储器还是持久存储器执行的方式可能是有用且有益的。作为示例,这一点的一个可能原因是软件可能想要知道是否正在对持久存储器执行写或存储,以确定可选的预写日志120(例如,撤销日志和/或再做日志)是否应该被更新作为预写日志记录过程的部分。(例如,在数据库应用中)常常使用预写日志记录来帮助维持原子性、持久性和数据完整性。在预写日志记录时,可以在对预写日志(例如,撤销日志和/或再做日志)的对应更新之后对持久存储器中的数据的存储或修改按时间顺序地排序。例如,在改变持久存储器中的给定数据之前,可以通过将持久存储器中的给定数据的旧版本拷贝到持久存储器中的撤销日志来保存它。以该方式,如果发生电力故障或其它这样的故障,则在持久存储器中的对数据的存储或修改已完成之前,可以使用预写日志来帮助防止不可恢复的数据丢失和/或(例如,通过重放以倒序保存在预写日志中的对数据的修改)恢复到已知的未受损坏的状态。然而,对预写日志的这样的更新可能具有时间和/或性能和/或电力代价中的一个或多个。例如,这样的更新表示要执行附加操作,并且通常可能需要执行一个或多个串行化指令,这可能趋向于具有显著的性能和/或时间代价。相应地,在一些实施例中,对软件而言可能有用且有益的是,能够知道是否正在对持久存储器执行写,因此可以在情况就是这样时选择性地更新预写日志,但是不在正在对易失性存储器执行写时选择性地更新预写日志。替代地,出于服从程序员的创造力的其它原因(例如,为了监视和/或管理持久存储器的目的),软件可能想要知道对给定存储器位置或地址的写或其它访问是对持久存储器的还是对易失性存储器的。然而,一个挑战是对软件而言能够知道正在被访问的存储器位置是在持久存储器中还是在易失性存储器中有时是困难的和/或性能代价高的。例如,尤其针对较大的代码基数,在复杂的数据结构和子例程之间的复杂调用关系的情况下,确保在存在存储器指针(例如,存储器地址)的情况下的持久性可能是困难的和/或性能代价高的。以下代码图示了其中情况就是这样的一个示例:persistentp_type*p_ptr;//指向持久存储器中的位置的指针p_type*q_ptr;//指向易失性存储器中的位置的指针voidfoo(p_type*ptr){//函数“foo”*ptr=…//在函数foo内更新*ptr}p_type*bar(…){…if(A[i]<min){ptr=p_ptr;//如果条件则将ptr更新成持久指针p_ptr…}else{ptr=q_ptr;//否则将ptr更新成易失性指针q_ptr}…returnptr;//函数bar返回ptr并且其指向或者持久或者易失性}intmain(){//主函数p_ptr=nvMalloc(sizeof(p_type));//在持久存储器中分配q_ptr=malloc(sizeof(p_type));//在易失性存储器中分配…ptr=bar(…);//利用输入(…)调用“bar”,bar将ptr更新成或者p_ptr或者q_ptrfoo(ptr);//利用ptr调用函数foo”…}在该示例中,通过将所分配的地址指派给全局持久指针p_ptr,持久存储器位置P被分配、初始化和发布。使用指向持久存储器中的位置的指针(p_ptr)和指向易失性存储器中的位置的指针(q_ptr)二者。函数“main”向具有输入参数(例如,由(…)表示的输入参数,诸如运行时间数据)的另一函数“bar”的评估指派指针“ptr”。基于函数“bar”的输入参数“(…)”,函数“bar”有条件地将指针“ptr”更新成或者指向持久存储器中的位置的指针(p_ptr)或者指向易失性存储器中的位置的指针(q_ptr)。然后,当函数“bar”返回指针“ptr”时,指针“ptr”被输入到写到由输入“ptr”指向的存储器中的地址/位置的另一函数“foo”。然而,由输入“ptr”指向的存储器中的该位置根据函数“bar”中的条件可能或者在持久存储器中或者在易失性存储器中,所述条件取决于输入参数“(…)”,诸如运行时间数据。如果被指向的地址/位置在持久存储器中,则可能所期望的是在函数“foo”向由指针“ptr”指向的存储器中的地址/位置写之前更新预写日志。然而,如果被指向的地址/位置在易失性存储器中,则可能所期望的是不更新预写日志来避免关联的性能惩罚。然而,一个挑战是对于软件和/或编译器而言能够确切地知道是函数“foo”的输入的指针“ptr”指向持久存储器还是易失性存储器常常是困难的和/或代价高的。例如,编译器可能不容易能够查明评估函数“bar”内的条件可能需要的运行时间数据或其它输入参数或者对所述运行时间数据或其它输入参数消除歧义。一个可能的方法是使编译器总是保守地在预写日志中对正在通过将“q_ptr”提升成持久指针而写到函数foo中的指针“ptr”处的数据设置检查点(checkpoint)。然而,该方法的缺点是有时将在易失性存储器中的数据没有被要求时(例如,当所述数据真的在易失性存储器中时)在预写日志中对所述数据设置检查点,从而招致在不必要时更新预写日志的性能惩罚。这仅是一个示例,但说明了为什么能够知道存储器地址/位置是在持久存储器中还是在易失性存储器中可能有益的示例。相应地,允许软件能够确定存储器地址/位置是在持久存储器中还是易失性存储器中的其它方法将是有用且有益的。再次参考图1,在一些实施例中,指令集110可以包括一个或多个类型的持久类型存储器检查指令106-2。在一些实施例中,每个持久类型存储器检查指令可以宽泛地表示存储器属性检查指令(例如,存储器页面属性检查指令)。在一些实施例中,所述一个或多个类型的持久类型存储器检查指令中的每个在被执行时可以可操作以使得处理器确定关联地址是否在持久存储器116中。在一些实施例中,持久类型存储器检查指令106-2中的一个或多个可以是可操作以在享有特权的用户级(以及特权级别)处执行的用户级指令,如与仅能够在一个或多个享有特权的级别处但不在用户级特权下执行的享有特权的指令相反。所述一个或多个类型的持久类型存储器检查指令106-2的一个或多个实例106-1可以被包括在执行软件102中以允许软件确定一个或多个关联存储器地址是否在持久存储器116中。例如,在一些实施例中,编译器可以在其不能充分地消除歧义或以其它方式确定存储器地址/位置是在持久存储器中还是在易失性存储器中时将持久类型存储器检查指令的这样的实例引入代码中。然而,持久类型存储器检查指令的其它使用也是可能的并且被设想(例如,这是通用指令并且程序员可以将其用于服从程序员的创造力的各种或通用用途)。图2是执行持久类型存储器检查指令的实施例的方法224的实施例的方块流程图。在各种实施例中,可以通过处理器、指令处理装置、数字逻辑器件或集成电路来执行方法。在一些实施例中,可以通过处理器108和/或使用指令106-2来执行方法。替代地,可以通过和/或利用类似的或不同的处理器或装置和/或使用类似的或不同的指令来执行方法。此外,处理器108可以执行与方法224相同、类似或不同的方法。方法包括在方块226处接收持久类型存储器检查指令。在各种方面中,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收该指令。在各种方面中,可以从离开处理器和/或离开管芯的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收该指令。持久类型存储器检查指令可以指定或以其它方式指示源存储器地址信息,并且可以指定或以其它方式指示目的地架构上可见的存储位置。在方块227处,响应于和/或由于持久类型存储器检查指令,可以将结果存储在目的地架构上可见的存储位置中。结果可以指示与源存储器地址信息对应和/或相关联的逻辑存储器地址是否在持久存储器中。图示的方法涉及架构操作(例如,从软件视角来看可见的那些)。在其它实施例中,方法可以可选地包括一个或多个微架构操作。作为示例,指令可以被无序地获取、解码、调度,源操作数可以被访问,执行单元可以执行微架构操作以实现指令,等等。在一些实施例中,用以实现指令的微架构操作可以可选地包括从翻译旁视缓冲器(TLB)访问对存储器地址是否在持久存储器中的指示和/或执行页表走(pagetablewalk)并且在TLB未命中的情况下从页表条目访问该指示(例如,如针对图4所描述的)。在一些实施例中,可以可选地在(例如,如针对图5描述的)页表条目的可用位[11:9]中的一个中提供该指示,但这不被要求。在一些实施例中,该指令可以可选地使用微架构掩码来掩蔽所架构的指令或使得所架构的指令对用来提供(例如,如针对图6所描述的)持久指示的页表条目中的特定位不可知。在一些实施例中,该指令可以可选地被实现为特殊加载操作并且由(例如,如针对图7所描述的)存储器排序缓冲器特别地和/或高效地处理。图3是处理器308的实施例的方块图,所述处理器可操作以执行持久类型存储器检查指令306的实施例。在一些实施例中,处理器可以可操作以执行图2的方法224。在本文中针对图3的处理器308和/或指令306描述的组件、特征和特定可选细节还可选地适用于方法224。替代地,可以通过和/或利用类似的或不同的处理器或装置和/或使用类似的或不同的指令来执行方法224。此外,处理器308可以执行与方法224相同、类似或不同的方法。处理器可以是先前针对图1的处理器108描述的各种类型(例如,通用处理器、专用处理器、具有CISC、RISC或VLIW架构等)中的任何类型。在一些实施例中,处理器308可以被集成或布置在至少一个集成电路或半导体管芯上,并且可以至少包括一些硬件(例如,晶体管、集成电路、存储微代码或其它硬件级指令的管芯上非易失性存储器等)。在操作期间,处理器可以接收持久类型存储器检查指令306。例如,可以在互连上从存储器接收该指令。在一些实施例中,持久类型存储器检查指令可以宽泛地表示存储器属性检查指令(例如,存储器页面属性检查指令)。该指令可以表示宏指令、机器代码指令、机器语言指令或处理器的指令集的其它指令。在一些实施例中,持久类型存储器检查指令306可以显式地指定(例如,通过一个或多个字段或位的集合)或以其它方式指示(例如,隐式地指示)源存储器地址信息336。源存储器地址信息可以表示该指令的源操作数。在一些实施例中,该指令可以可选地显式地指定(例如,通过一个或多个字段或位的集合)或以其它方式指示(例如,隐式地指示)要存储持久类型存储器检查指令的结果或结果操作数的目的地架构上可见的存储位置342。在不同的实施例中,持久类型存储器检查指令可以以不同的方式指定或指示源存储器地址信息336和/或目的地架构上可见的存储位置342。作为一个可能的方法,该指令可以在其指令编码内具有源和/或目的地操作数规范字段以指定用于操作数的寄存器、存储器位置或其它存储位置。作为示例,该指令可以可选地具有用以指定要存储源存储器地址信息的第一寄存器的第一字段,以及用以指定要用来存储结果的第二寄存器的第二字段。作为另一可能的方法,寄存器、存储器位置或其它存储位置可以可选地对指令(例如,其操作码)而言是固有的或否则是隐式的,而不需要指令具有用以显式地指定存储位置的任何非操作码位。在这样的方法中,处理器可以固有地或否则隐式地理解,基于操作码的识别将隐式存储位置用于操作码。作为一个说明性示例,该指令可以可选地具有用以指定初始要存储源存储器地址信息336的源/目的地寄存器的第一字段,并且其可以暗示将源/目的地寄存器再用作用以存储结果的目的地架构上可见的存储位置342。作为另一说明性示例,该指令可以可选地具有初始要存储源存储器地址信息336的隐式寄存器。作为又一可能的方法,该指令可以在其指令编码中具有立即数字段以提供源存储器地址信息336。还可以可选地使用这样的方法的组合。如所示,在一些实施例中,源存储器地址信息336和目的地架构上可见的存储位置342可以可选地在处理器的通用寄存器或其它标量寄存器334的集合中,但是本发明的范围不被如此限制。标量寄存器334中的每个可以表示管芯上(或集成电路上)的存储位置,其可操作以存储以标量(例如,非压紧)格式的数据。寄存器可以表示对软件和/或程序员可见的架构上可见的寄存器或架构寄存器,和/或是由用以标识操作数的处理器的指令集的指令所指示的寄存器。这些架构寄存器与微架构中的其它非架构寄存器(例如,暂时寄存器、重排序缓冲器等)形成对照。可以在不同的微架构中以不同的方式来实现寄存器并且寄存器不限于任何特定设计。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器,及其组合。在其它实施例中,源存储器地址信息336和/或目的地架构上可见的存储位置342可能不在标量寄存器334中。例如,目的地架构上可见的存储位置可能代之以可选地是标志寄存器、状态寄存器、条件代码寄存器等中的一个或多个位,或另一存储位置(例如,存储器中的位置)。作为另一示例,源存储器地址信息可以可选地由持久类型存储器检查指令的立即数提供,或在另一存储位置(例如,存储器中的位置)中。再次参考图1,处理器包括解码单元330。解码单元有时也被称为解码器。解码单元可以接收并解码持久类型存储器检查指令306。解码单元可以输出一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、经解码的指令或控制信号等),其反映、表示和/或源自相对较高级别的持久类型存储器检查指令。在一些实施例中,解码单元可以包括用以接收持久类型存储器检查指令的至少一个输入结构(例如,端口、互连或接口)、与其耦合的用以识别和解码持久类型存储器检查指令的指令识别及解码逻辑,以及与其耦合的用以输出(多个)较低级别指令或(多个)控制信号的至少一个输出结构(例如,端口、互连或接口)。解码单元和/或其指令识别及解码逻辑可以使用各种机制来实现,所述各种机制包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、适合于实现解码单元的其它机制,及其组合。在一些实施例中,解码单元可以被包括在管芯、集成电路或半导体衬底上。在一些实施例中,解码单元可以包括至少一些硬件(例如,晶体管、集成电路、存储微代码或其它硬件级指令的管芯上只读存储器或其它非易失性存储器等中的一个或多个)。在一些实施例中,代替将持久类型存储器检查指令直接地提供给解码单元,可以可选地使用指令模拟器、翻译器、变形器、解释器或其它指令转换模块。可以以软件、硬件、固件或其组合来实现各种类型的指令转换模块。在一些实施例中,指令转换模块可以位于处理器外部,诸如例如在分离的管芯上和/或在存储器中(例如,作为静态的、动态的或运行时间模拟模块)。作为示例,指令转换模块可以接收持久类型存储器检查指令,所述持久类型存储器检查指令可能是第一指令集的,并且可以模拟、翻译、变形、解释持久类型存储器检查指令或以其它方式将持久类型存储器检查指令转换成一个或多个对应的中间指令或控制信号,所述中间指令或控制信号可能时第二不同的指令集的。可以将第二指令集的所述一个或多个中间指令或控制信号提供给解码单元(例如,解码单元330),所述解码单元可以将它们解码成可由处理器的原生硬件(例如,一个或多个执行单元)执行的一个或多个较低级别指令或控制信号。再次参考图3,执行单元332与解码单元330耦合。在一些实施例中,执行单元可以在管芯或(例如,具有解码单元并且可选地具有处理器的所有图示的组件的)集成电路上。执行单元可以接收一个或多个经解码的或以其它方式转换的指令或控制信号,其表示和/或源自持久类型存储器检查指令。执行单元332还与源存储器地址信息336耦合(例如,与标量寄存器334耦合)并且可以接收源存储器地址信息。执行单元332还与目的地架构上可见的存储位置342耦合。在一些实施例中,执行单元可以响应于和/或由于持久类型存储器检查指令(例如,响应于一个或多个指令或从指令解码的控制信号,和/或响应于指令被解码,和/或响应于指令被提供给解码器)而可操作以执行用以实现持久类型存储器检查指令的操作。在一些实施例中,执行单元332可以响应于和/或由于持久类型存储器检查指令306而可操作以使用源存储器地址信息336,并且在一些实施例中使用可选的附加地址生成信息338,来使用虚拟存储器地址、线性存储器地址或其它逻辑存储器地址(LA)348访问地址翻译单元348。地址翻译单元与执行单元耦合。在一些实施例中,源存储器地址信息336可以表示完全形成的逻辑存储器地址348。在这样的实施例中,不需要可选的附加存储器地址生成信息338来生成逻辑存储器地址。在其它实施例中,可以组合地使用源存储器地址信息336和可选的附加存储器地址生成信息338二者来生成逻辑存储器地址348。针对不同的已知适合的存储器寻址模式或机制,这可以以不同的方式来完成。作为示例,源存储器地址信息可以可选地包括存储器索引或位移,并且可选的附加存储器地址生成信息可以包括规模因素、基址和分割(segment)中的一个或多个。其它类型的可选的附加存储器地址生成信息338可以可选地用于其它存储器寻址模式或机制。本发明的范围不限于任何特定类型的源存储器地址信息336和/或任何特定类型的存储器寻址模式或机制。可选的附加存储器地址生成信息338可以常常被存储在一个或多个专用存储器地址生成寄存器或不需要通过指令来指定的处理器的其它存储位置中。在虚拟化存储器中,在处理器上执行的软件可能不直接使用物理存储器地址来访问存储器。代之以,软件可能通过虚拟的、线性的或其它逻辑的存储器地址来访问存储器。逻辑地址空间或存储器可以被分成(例如,一个或多个大小的)块,其被称作页面。逻辑存储器的页面可以被映射到物理存储器位置,诸如物理地址空间或存储器中的(例如,相同大小的)块,其被称为存储器帧或物理帧。地址翻译单元346可以可操作以将输入逻辑存储器地址翻译成对应的输出物理存储器地址。在一些实施例中,地址翻译单元346还可以可操作以向执行单元提供对逻辑存储器地址/位置348是否在(例如,如与易失性存储器相反的)持久存储器中的指示350。例如,该指示可以指示逻辑存储器地址348是否被翻译成或以其它方式对应于(例如,在翻译旁视缓冲器条目和/或页表条目中)持久存储器内的物理存储器地址。在一些实施例中,执行单元332可以响应于和/或由于持久类型存储器检查指令306而可操作以存储对源存储器地址是否与目的地架构上可见的存储位置342中的持久存储器对应的指示340。在一些实施例中,源存储器地址可能在逻辑地址348翻译成、或被以其它方式映射到、或以其它方式对应于在持久存储器内的物理存储器地址时与持久存储器对应。指示340表示持久类型存储器检查指令的结果或结果操作数。如所示,在一些实施例中,目的地架构上可见的存储位置342可以可选地是通用寄存器或其它标量寄存器334的集合中的一个,但是这不被要求。在一些实施例中,如果期望,则仅持久指示可以被存储在目的地存储位置中。例如,单个位可以被存储并且单个位可以具有用以指示存储器地址/位置在持久存储器中的第一值(例如,根据一个可能的约定被设置成二进制一),或第二值(例如,被清除成二进制零),如果存储器地址/位置在易失性存储器中的话。其它约定也是可能的。在其它实施例中,如果期望,则可以将持久指示以及其它存储属性(例如,TLB条目或页表条目中的存储器页面属性位)的可选地一个或多个、可选地任何组合或可选地全部存储在目的地存储位置中。替代地,在其它实施例中,目的地架构上可见的存储位置可以是一个或多个标志和/或标志寄存器。如在本文中使用的,术语标志宽泛地包含标志以及通过其它名称指代的类似位或指示,诸如例如状态位、状态寄存器中的位、状态指示符、条件代码位、条件代码寄存器中的位、条件代码等。同样地,如在本文中使用的,术语标志寄存器宽泛地包含标志寄存器以及通过其它名称指代的类似寄存器或存储位置,诸如例如状态寄存器、条件代码寄存器等。可以可选地使用可用标志中的任何标志。标志的架构名称和/或常规典型使用可能并不被反映在其用以存储对存储器地址是否与如在本文中公开的持久存储器对应的指示的使用中。例如,零标志可以可选地用来指示指令的源存储器地址是否与持久存储器对应(例如,而不是像传统提供零指示)。使用所述一个或多个标志的一个可能优点是处理器的指令集常常可能包括一个或多个转移指令、分支指令或其它条件控制流传送指令,其可以基于标志而执行转移、分支或其它条件控制流传送操作。这可以允许直接使用持久类型存储器检查指令的结果来执行控制流传送。即,在一些实施例中,持久类型存储器检查指令的目的地架构上可见的存储位置可以是一个或多个条件控制流传送指令(例如,条件分支或转移指令)的源操作数,在一些情况下是隐式源操作数。执行单元和/或处理器可以包括特定的或特别的逻辑(例如,晶体管、集成电路或潜在地与固件(例如,存储在非易失性存储器中的指令)组合的其它硬件),其可操作以执行持久类型存储器检查指令和/或响应于和/或由于持久类型存储器检查指令(例如,响应于从持久类型存储器检查指令解码的一个或多个指令或控制流)而存储结果。在一些实施例中,执行单元可以包括用以接收源存储器地址信息336并且在一些情况下接收可选的附加存储器地址生成信息338的至少一个输入结构(例如,端口、互连或接口)、与其耦合的用以生成逻辑地址348的电路或逻辑、被耦合的用以将逻辑地址348提供给地址翻译单元346并且接收指示350的电路或其它逻辑,以及与其耦合并且与目的地架构上可见的存储位置耦合的用以输出结果操作数的至少一个输出结构(例如,端口、互连或接口)。在一些实施例中,执行单元可以可选地包括针对图6示出和描述的电路或其它逻辑,其是适合于执行单元的微架构的说明性示例,但本发明的范围不被如此限制。要领会,用以执行持久类型存储器检查指令的执行单元332不限于执行用以执行持久类型存储器检查指令的所有操作的单个分立单元。相反,执行单元可以可选地包括用以执行这样的操作的逻辑的分离的或分布式的部分。作为一个示例,执行单元可以包括地址生成单元的逻辑和/或用以与地址生成单元对接的逻辑,一个或多个TLB的逻辑和/或用以与一个或多个TLB对接的逻辑,以及MMU的逻辑和/或用以与MMU对接的逻辑,存储器排序缓冲器的逻辑和/或用以与存储器排序缓冲器对接的逻辑,用以更新目的地架构寄存器的保留站的逻辑和/或用以与所述保留站对接的逻辑,或其组合。如在本文中使用的,术语“执行单元”宽泛地包含或者单个分立单元或者一起工作的逻辑的分离的分布式部分,并且共同地表示用以执行持久类型存储器检查指令的执行单元。此外,在一些实施例中,执行单元可以被包括在处理器的存储器子系统内。在这样的实施例中,处理器的存储器子系统可以执行如在本文中描述的操作以实现持久类型存储器检查指令并且存储持久类型存储器检查指令的如在本文中描述的结果。有利地,持久类型存储器检查指令可以允许软件(例如,用户级软件)确定存储器位置是否在持久存储器中。对于软件(例如,用户级软件)而言,第一替代的可能方法将是执行特殊OS系统以使软件走过页表并且从页表条目读持久指示,但这一般趋向于具有显著较高的性能代价,由于调用系统调用、冲掉流水线、在软件中做页表走等。第二替代的可能方法将是使用fat指针对指针类型消除歧义。然而,fat指针一般具有较高的实现开销和/或附加操作,用以计算独立于其类型的每个存储器操作的虚拟地址。相应地,不依赖于fat指针的方法将是有益的。第三相关的替代的可能方法将是使用虚拟地址的(多个)当前未使用的较高位来标记地址是否指向持久存储器中的位置。基本上,可以在易失性存储器和非易失性存储器之间静态地划分虚拟地址空间,并且较高位可以指示这些划分。然而,该方法的一个可能的缺点是可能不保证用于标记的(多个)较高位当前没有被软件用于其它目的和/或促进(多个)这些位的全世界一致的使用可能是有挑战性的。另一可能的缺点是某些指针算术运算可能无意地切换/触发(多个)标记位。这样的方法的指针还可以表示特殊类型的fat指针和与其相关联的某些缺点。为了避免使说明模糊,已经示出并描述了相对简单的处理器308。然而,处理器可以可选地包括其它处理器组件。例如,各种实施例可以包括针对图10B、11A、11B、12中的任何图所示出和描述的组件的各种组合和配置。图4是处理器408的实施例的方块图,所述处理器408可操作以执行持久类型存储器检查指令306的实施例,并且其具有地址翻译单元446的详细示例实施例。处理器408可以可选地与图3的处理器308和/或图1的处理器108相同、类似或不同。处理器包括解码单元430和执行单元432。这些组件中的每个可以可选地与图3的对应地命名的组件相同、类似或不同。为了避免使说明模糊,将主要描述图4的实施例的不同和/或附加特性,而不重复可能可选地与先前针对图3描述的那些特性相同或类似的所有特性。解码单元430可以接收和解码持久类型存储器检查指令406。执行单元432与解码单元耦合。执行单元可以执行持久类型存储器检查指令。执行单元可以接收由持久类型存储器检查指令所指示的源存储器地址信息436。在一些实施例中,执行单元还可以可选地接收附加的存储器地址生成信息438。这样的信息可以与先前针对图3描述的信息相同、类似或不同。在一些实施例中,执行单元432可响应于和/或由于持久类型存储器检查指令406而可操作以使用源存储器地址信息336,并且在一些实施例中可选地使用附加的地址生成信息338,来使用虚拟的、线性的或其它逻辑的存储器地址448访问地址翻译单元446。地址翻译单元与执行单元耦合。地址翻译单元可以可操作以确定与逻辑存储器地址对应的物理存储器地址(例如,用以标识存储器中的对应的物理页面是否其在持久存储器中)。如所示,地址翻译单元446可能具有至少一个翻译旁视缓冲器(TLB)456。在一些情况下,可能可选地存在单个TLB。在其它情况下,可能可选地存在(例如,在不同级别处的)多个TLB。每个TLB可以将先前确定的逻辑存储器地址高速缓存或以其它方式存储成物理存储器地址翻译。例如,在已经执行页表走以将逻辑存储器地址翻译成对应的物理存储器地址之后,地址翻译可能被高速缓存在至少一个TLB中。随后,如果在足够短的时间段内再次需要经高速缓存的地址翻译,则可以从所述至少一个TLB相对快速地检索地址翻译,而不是重复相对较慢的页表走。每个TLB可以具有不同的条目,用以存储与不同的逻辑存储器地址对应的不同的地址翻译。逻辑存储器地址448可以被提供作为查找参数、搜索键或到所述至少一个TLB456的其它输入。如所示,当处理器在操作或使用中时,所述至少一个TLB456中的有代表性的TLB条目458可以高速缓存对应的地址翻译。有代表性的TLB条目可能具有对应的逻辑存储器地址459-1及其对应的映射的物理存储器地址460-1。在一些实施例中,TLB条目还可以包括持久指示461-1。持久指示可以包括一个或多个位。持久指示可以指示对应的物理存储器地址是否在持久存储器中。作为一个可能的示例,持久指示可以包括TLB条目中的单个位,其根据一个可能的约定而可以被设置成二进制一以指示存储器位置在持久存储器中,或被清除成二进制零以指示存储器位置不在持久存储器中。相反的约定也是可能的。所述至少一个TLB中的其它条目可以存储用于不同的对应的地址翻译(例如,不同的对应的逻辑存储器地址)的类似数据。每个TLB条目还可能具有在分层分页结构的集合470中的对应的页表条目,所述页表条目存储相同类型的信息,但是可能被不同地布置和/或具有不同的格式。用于逻辑存储器地址448的地址翻译或者将或者将不被存储在所述至少一个TLB456中。TLB“命中”发生在适当的地址翻译被存储在所述至少一个TLB中时。在TLB“命中”的情况下,在一些实施例中,可以将对应的持久指示450-1返回到执行单元432,所述对应的持久指示450-1可以指示映射的或对应的物理存储器地址是否在持久存储器中。相反地,TLB“未命中”462可能发生在适当的地址翻译和对应的适当的持久指示没有被存储在所述至少一个TLB中时。在TLB“未命中”的情况下,可以执行页表走。TLB可以将TLB未命中462用信号通知到存储器管理单元(MMU)454。存储器管理单元有时也被称为页面未命中处置器、页表走单元等。MMU可以宽泛地表示或至少包括处理器的管芯上逻辑,其可操作以执行页表走和/或从可以存储在主存储器412中的分层分页结构472的集合获得地址翻译。MMU可以在管芯上硬件(例如,晶体管、集成电路等)、管芯上固件(例如,非易失性存储器和存储在其中的硬件级指令)、软件(例如,存储在主存储器中的指令)或其组合(例如,占主导地位的硬件和/或固件潜在地/可选地与较少量的软件组合)中实现。MMU454可以执行页表走以将逻辑存储器地址448翻译成对应的物理存储器地址,并且确定对应的持久指示。MMU可以使用逻辑地址466(例如,其可能与逻辑地址448相同)来访问分层分页结构的集合470。常规的分层分页结构是适合的,除了其页表条目可能被适配成具有用以存储对应的持久指示的位、字段或其它部分。MMU可以可操作以“走”过或提前通过分层分页结构的集合直到最后到达分层分页结构472,其具有有着针对逻辑存储器地址448的被寻找的地址翻译的页表条目474。页表条目474可能具有对应的逻辑存储器地址459-2及其对应的映射的物理存储器地址460-2。在一些实施例中,页表条目还可能包括持久指示461-2。持久指示可以包括一个或多个位。持久指示可以指示针对所述条目的对应的物理存储器地址是否在持久存储器中。作为一个可能的示例,持久指示可以包括页表条目中的单个位,所述位根据一个可能的约定而可以被设置成二进制一以指示存储器位置在持久存储器中,或被清除成二进制零以指示存储器位置不在持久存储器中。相反的约定也是可能的。在一些实施例中,诸如例如操作系统、虚拟机监视器、管理程序等之类的系统级软件可以在对应的页面被分配时(例如,在应用(例如,通过执行nvMalloc或malloc)请求分配时)根据对应的页面被分配在持久存储器中还是在易失性存储器中来配置持久指示(例如,改变位的值)。分层分页结构的集合中的其它页表条目可以存储用于不同的对应的地址翻译(例如,不同的对应的逻辑存储器地址)的类似数据。在一些实施例中,执行单元可以接收持久指示450-2(例如,来自具有适当的地址翻译的页表条目的持久指示461-2的拷贝或以其它方式表示所述持久指示461-2的拷贝)。持久指示450-2可以指示与逻辑地址448对应的物理存储器地址是否在持久存储器中。非限制地,包括所确定的持久指示的所确定的地址翻译还可以可选地被存储464到所述至少一个TLB中的TLB条目以用于可能的将来使用。在一些实施例中,地址翻译单元446和/或存储器管理单元454可以可选地可操作以直接将持久指示450-2提供给执行单元。在其它实施例中,地址翻译单元446和/或存储器管理单元454可以可选地将地址翻译存储464在所述至少一个TLB中的TLB条目中,并且然后执行单元可以从所述至少一个TLB访问持久指示,如先前描述的。图5是适合的页表条目574的详细示例实施例的方块图。页表条目具有32位。位[0]表示用以指示页面是否当前存在于存储器中的存在位。位[1]表示用以指示页面是只读还是读/写的读/写位。位[2]表示用以指示页面具有用户特权还是监督者特权的用户/监督者位。位[3]表示用以控制用于页面的通写或回写高速缓存策略的通写位。位[4]表示用以控制对页面的高速缓存的高速缓存禁用位。位[5]表示用以指示页面是否已经被访问(写或读)的被访问位。位[6]表示用以指示是否已经向页面写的页面重写标志位。位[7]表示页表属性索引位。位[8]表示全局页面位。位[11:9]当前可用。在一些实施例中,位[11:9]中的一个或多个(在该特定示例中为位[9])可以可选地用来存储如在本文中的别处公开的持久指示550,以指示对应的页面是否被存储在持久存储器中。作为示例,系统软件可以例如在页面被分配时配置位[9]以便指示该页面被分配在易失性存储器中还是持久存储器中。位[31:12]表示物理页面地址字段560。图6是执行单元632的详细示例实施例的方块图,所述执行单元632用以执行持久类型存储器检查指令的实施例。在一些实施例中,执行单元632可以可选地用作图3的执行单元332和/或图4的执行单元432。替代地,执行单元332和/或执行单元432可以可选地与执行单元632类似或不同。执行单元632包括解码单元接口部分677,用以与解码单元(例如,解码单元330或解码单元430)对接。执行单元和/或解码单元接口部分可以包括输入结构676(例如,端口、互连或接口),用以接收解码自或否则源自持久类型存储器检查指令的控制信号。解码单元可以包括内部互连,用以贯穿其各种组件分发控制信号。执行单元还包括地址翻译接口部分678,用以与地址翻译单元(例如,346或46)对接。执行单元和/或地址翻译接口部分可以包括输入结构679(例如,端口、互连或接口),用以接收源存储器地址信息636并且可选地接收附加的存储器地址生成信息638。这些可以被提供给地址翻译单元674,所述地址翻译单元674可以使用它们来生成可以通过输出结构680(例如,端口、互连或接口)提供给地址翻译单元的逻辑存储器地址648。执行单元和/或地址翻译接口部分可以包括输入结构681(例如,端口、互连或接口),用以从地址翻译单元接收与逻辑存储器地址对应的输入页面属性650。在一些实施例中,执行单元可以可选地可操作以使用微架构掩码来隔离对所接收的页面属性的持久类型存储器指示。可以将掩码存储在掩码记忆装置683(例如,非架构或暂时寄存器)中。可以将所接收的页面属性存储在页面属性记忆装置682(例如,非架构或暂时寄存器)中。在图示的示例中,页面属性的可用位[9]包括持久类型存储器指示,但是这仅是一个说明性示例。针对该示例,微架构掩码可能具有以最低有效位“00000000100…”开始的值,其中位[8:0]被清除,位[9]被置位,并且位[10]和所有较高有效位被清除。可以将页面属性和微架构掩码提供给逻辑与(AND)逻辑685(例如,一个或多个与门)。与逻辑可以可操作以对页面属性和微架构掩码执行按位逻辑与操作。在图示的示例中,由于微架构掩码的仅位[9]被设置成二进制一并且所有其它位被清除成二进制零,这隔离页面属性的位[9],其在该示例中是持久类型存储器指示位。微架构掩码的这样的使用的一个可能的优点是其可以用来隐藏或不架构上暴露用来向软件提供持久类型存储器指示的页面属性的特定位。相反,可以通过执行单元的微架构将特定位抽象出来或隐藏。这一点的一个可能的优点是其可能有助于允许特定位被改变,如果期望的话。例如,如果代之以期望使用页面属性位中的不同的一个(例如,可用位[10])来提供指示,则可以改变微架构掩码。例如,代替微架构掩码“00000000100…”,可以代之以使用微架构掩码“00000000010…”。如果期望代之以使用页面属性的可用位[11],则可以使用又一掩码。以该方式,持久类型存储器检查指令本身可能不要求或强加使用TLB条目或页表条目中的任何特定位的限制,而是可能由于微架构掩码而对使用的特定位不可知。如果可能改变微架构掩码,则即使决定改变用来提供持久类型存储器指示的页面属性位,这也可能允许包括持久类型检查指令的现有代码被使用(例如,而不需要重新编译)。在一些实施例中,执行单元可以可选地允许微架构掩码被(例如,通过从基本输入/输出系统(BIOS)将微架构掩码值加载并存储到掩码记忆装置683中)编程,或否则(例如,通过在多个管芯上硬接线的掩码之间进行选择等)改变。执行单元还可以包括输出结构686(例如,端口、互连或接口),用以向目的地架构上可见的存储位置提供持久类型存储器指示640。要领会,这仅是适合的执行单元的一个说明性示例实施例。其它适合的执行单元不需要使用这样的微架构掩码、与逻辑等。图7是执行用以执行持久类型存储器检查指令的特殊加载操作的方式的详细示例实施例的方块图。在一些实施例中,可以可选地使用特殊加载微操作或其它特殊加载操作787来实现持久类型存储器检查指令。特殊加载操作可能是特殊的,因为其可能实际上不从存储器加载数据,可能获得如在本文中的别处描述的持久类型存储器指示,并且可能被处理器以一些方式不同地处理。可以将特殊加载操作787提供给保留站或其它调度器单元788以用于分派。在加载操作被从调度器单元分派之后,其操作标识符连同其源及目的地标签可以被传输到总线上。初始,可以将与其源存储器地址信息对应的逻辑存储器地址789从加载地址生成单元744直接提供给一个或多个数据TLB(DTLB)756。或者,在TLB未命中之后的重新分派的情况下,可以从存储器排序缓冲器(MOB)790的加载缓冲器791提供与其源存储器地址信息对应的逻辑存储器地址793。可以通过所述一个或多个DTLB756将逻辑存储器地址的较高位翻译成物理存储器地址。针对正常的加载操作,可以将物理存储器地址提供给级别1(L1)数据高速缓存794的数据高速缓存标签阵列以开始用于正常加载操作的存储器查找。然而,在一些实施例中,由于特殊加载操作实际上不加载数据,针对特殊加载操作,这可以可选地被省略。例如,MOB可以向L1数据高速缓存提供取消信号。除了物理存储器地址之外,还可以生成存储器属性和TLB状态信号。当地址翻译成功(例如,存在TLB命中)时,所述一个或多个DTLB可能针对回写总线进行仲裁,并且可能在回写总线上传输物理存储器地址和(例如,包括持久类型存储器指示的)存储器属性连同对应的标签。否则,如果所述一个或多个DTLB中的地址翻译失败(例如,存在TLB未命中),则可以断言阻塞信号。MOB790可以针对正常的加载操作执行阻塞检查。针对正常的加载,这些可能包括存储数据(STD)块(block),高速缓存挤压(squash)和DTLB页面未命中。如果用于一对加载/存储的完整地址相等且有效,但数据不可用于存储,则利用STD块来阻塞加载。STD块指示地址和随后的访问适合于转发用以加载的数据,但存储操作的STD操作(例如,存储的数据计算子操作)还没有从调度器单元(例如,保留站)分派。可以阻塞加载直到调度器单元分派STD以用于执行。一旦STD发生,加载缓冲器中的加载就可能变得非阻塞(例如,可以醒来)并且被转发到来自STD操作的数据。高速缓存挤压(例如,数据高速缓冲存储器挤压)可能发生在已经存在对相同高速缓存行的访问时,并且可能由于不必分配第二总线请求或缓冲器而提供性能增益。然而,MOB可能意识到特殊加载操作的操作标识符,并且在一些实施例中,针对特殊加载操作,可以可选地省略这样的阻塞检查中的一些。在一些实施例中,可能预测特殊加载操作不具有任何别名(alias)。在一些实施例中,仅DTLB未命中可能适用于特殊加载操作。如果特殊加载操作被阻塞,则其可以被存储在MOB的加载缓冲器中的条目中,并且在那里等待被唤醒信号进行重新分派。否则,MOB可以将特殊加载操作标记为已完成。在一些实施例中,除非特殊加载操作遭遇DTLB未命中,否则特殊加载操作不需要被指派给MOB中的排序的或有序的位置,由于其没有加载数据。使用特殊加载操作而不是特殊存储操作可以提供如下可能的优点:加载操作一般具有关联的目的地存储位置但存储操作常常不具有。并且,存储操作或许可以影响编译器代码优化,例如由于操作排序约束。但是,如果期望,则可以代之以可选地使用特殊存储操作并且其一般将不存储数据。图8是处理器808的实施例的方块图,所述处理器808以执行持久类型存储器检查指令的实施例。处理器808可以可选地与图3的处理器308和/或图4的处理器408相同、类似或不同。处理器808包括解码单元830、执行单元833和地址翻译单元846。除了处理向量类型的持久类型存储器检查指令之外,这些组件中的每个还可以可选地与图3和/或图4的相应地命名的组件相同、类似或不同。为了避免使描述模糊,将主要描述图8的实施例的不同的和/或附加的特性,而不重复可能可选地与先前描述的那些特性相同或类似的所有特性。解码单元830可以对向量持久类型存储器检查指令807进行接收和解码。向量持久类型存储器检查指令可以指定或以其它方式指示具有多个源存储器地址信息的源压紧(packed)数据或向量811。具体地,可能存在第一源存储器地址信息836-1至第N源存储器地址信息836-N,其中这样的信息的编号可以可选地是二、四、八、十六、三十二或一些其它期望的编号。每个这样的信息可以可选地与在本文中的别处(例如,针对336)描述的信息类似或相同。向量持久类型存储器检查指令可以指定或以其它方式指示目的地架构上可见的存储位置842。执行单元833与解码单元耦合。执行单元可以执行向量持久类型存储器检查指令。执行单元可以接收源压紧数据811。在一些实施例中,执行单元还可以可选地接收附加的存储器地址生成信息838,其可以与在本文中的别处描述的信息(例如,336)类似。在一些实施例中,执行单元833可以响应于和/或由于向量持久类型存储器检查指令406而可操作以使用所述多个源存储器地址信息836-1至836-N,并且在一些实施例中,可选地使用附加的地址生成信息838,以使用对应的多个逻辑存储器地址848来访问地址翻译单元446。地址翻译单元与执行单元耦合。地址翻译单元可以可操作以确定逻辑存储器地址的对应的TLB条目或页表条目。这可以如先前(例如,针对图3和/或图4)描述的那样完成。地址翻译单元可以提供对逻辑存储器地址848中的每个是否在持久存储器中的对应指示850。在一些实施例中,执行单元838可以响应于和/或由于向量持久类型存储器检查指令406而可操作以将结果压紧数据813存储在所指示的目的地架构上可见的存储位置中。在一些实施例中,结果压紧数据可以包括多个指示,所述多个指中的每个指示与(例如,在压紧数据操作数内的对应或相同的相对位置中的)所述多个源存储器地址信息中的对应的一个对应的对应逻辑存储器地址是否在持久存储器中。具体地,结果压紧数据可以包括对第一逻辑存储器地址是否持久的第一指示840-1至对第N逻辑存储器地址是否持久的第N指示840-N。在一些实施例中,目的地架构上可见的存储位置842可以可选地是向量寄存器809中的一个。在其它实施例中,目的地架构上可见的存储位置842可以可选地是通用或其它标量寄存器(例如,其一个或多个位的不同集合可能与所述多个源存储器地址信息836中的每个对应)。图9是执行持久类型存储器检查指令的实施例并且使用持久类型存储器检查指令的结果来确定是否要更新预写日志的方法900的示例实施例的方块流程图。在各种实施例中,可以通过处理器、指令处理装置、数字逻辑器件或集成电路来执行方法。在一些实施例中,可以通过处理器108和/或处理器308和/或处理器408来执行方法。替代地,可以通过和/或利用类似的或不同的处理器或装置和/或使用类似的或不同的指令来执行方法。此外,处理器108和/或处理器308和/或处理器408可以执行与方法900相同、类似或不同的方法。在块901处,方法包括执行指示源存储器地址信息的持久类型存储器检查指令的实施例,以及存储指示与源存储器地址信息对应的存储器地址是否在持久存储器中的结果。这可以可选地包括执行在本文中的别处公开的持久类型存储器检查指令的各种实施例中的任何。在块902处,可以做出持久类型存储器检查指令的结果(例如,在块901处存储的结果)是否指示(与持久存储器类型检查指令的源存储器地址信息对应的)存储器地址在持久存储器中。即,结果可以向软件通知其它指令,所述软件可以测试该结果。如果结果指示存储器地址在持久存储器(即,在块902处,“是”为确定)中,则方法可以前进到块903。在块903处,可以更新预写块。一般地,预写日志存储在持久存储器中。通常,为了写到预写日志,还可能需要执行的一个或多个附加串行化指令。这样的串行化指令的可能示例包括但不限于存储器栅栏或屏障类型指令(例如,存储栅栏指令、存储和加载栅栏指令等)、高速缓存行冲刷(flush)指令、持久提交指令等,及其各种组合,这取决于用以确保持久性的特定指令、架构和需要的各种组合。这样的指令可以用来帮助确保对预写日志的更新以恰当的顺序一直到(例如,在处理器的各种易失性存储结构外的)持久存储器,并且在实际的持久存储器更新发生之前。然而,这样的串行化指令的一个缺点是其一般趋向于具有相对高的性能代价。由于该性能代价,能够知道存储位置是在持久存储器中还是在易失性存储器中一般是有益的,使得可以仅在存储位置在持久存储器中是选择性地更新预写日志。然后,在块904处,可以向在持久存储器中的(与持久存储器类型检查指令的源存储器地址信息对应的)存储器地址执行写。这发生在预写日志的对应更新之后。再次参考块902,如果代之以结果不指示存储器地址在持久存储器(即,“否”为确定)中,则方法可以前进到块905。在块905处,可以向在易失性存储器中的(与持久存储器类型检查指令的源存储器地址信息对应的)存储器地址执行写。这可以发生而不用更新预写日志。在一些实施例中,作为一个可能的使用,可以通过编译器将用以实现方法900的代码(例如,持久类型存储器检查指令、条件控制流传送指令等)插入到软件(例如,用户级软件)中。例如,在一些实施例中,如果编译器的代码分析部分在假定在预写日志中首先反映持久存储器位置的改变时不能充分地确定到存储器的写没有更新持久存储器位置,则编译器的代码生成器部分可以插入这样的代码。如上面所论述的,当做出这样的确定根据可能对编译器不容易可用的运行时间数据时,情况可能趋向于是这样的。作为一个说明性示例,可用将以下代码插入先前到先前在上面描述的函数“foo”中:voidfoo(p_type*ptr){//函数“foo”if(PTMCI(ptr)){//只有在PTMCI的结果指示ptr持久时,才更新日志//在向ptr写之前将存储在*ptr中的当前值写到日志//执行一个或多个序列化指令}//否则不更新日志并且代之以继续更新*ptr*ptr=…//更新函数foo内的*ptr}回想起,函数“foo”更新指针“ptr”,其根据在先前描述的函数“bar”中评估的条件可能或者在持久存储器中或者在易失性存储器中。在上面的代码中,在指针“ptr”的更新之前执行持久类型存储器检查指令(PTMCI)以检查指针“ptr”是否在持久存储器中。如果指针“ptr”在持久存储器中,则更新预写日志并且执行一个或多个序列化指令。否则,如果结果不指示指针“ptr”在持久存储器中,则不更新预写。要领会,这仅是一个说明性示例。在其它情况下,出于除服从程序员的创造力的预写日志记录之外的其它原因,可以将如在本文中的别处公开的持久类型存储器检查指令包括在代码中。在执行分支预测的处理器中,处理器和/或分支预测单元可以预测条件(例如,上面的如果语句“if(PTMCI(ptr))”)是否为真(例如,预测是否存在分支)。在一些实施例中,如果期望,则分支预测可以可选地被偏置,以支持以没有更新预写日志的方式的预测。通常,更新预写日志所需的串行化指令的性能代价比与分支未命中预测相关联的性能代价更加显著。在情况就是这样时,使分支偏置以支持预测不需要对预写日志的更新在性能方面可能较好。如果实际上不需要对预写日志的更新,则将不招致分支未命中预测的惩罚,并且将不招致更新预写日志的性能惩罚。替代地,如果需要对预写日志的更新,则将招致分支未命中预测的惩罚。然而,分支未命中预测的性能惩罚一般将小于在不必要时更新预写日志的性能惩罚。还设想上面描述的那些的各种替代实施例。例如,在一些实施例中,代替在页表条目和/或TLB条目中提供持久指示,可以代之以通过范围寄存器来传达持久指示。例如,一个或多个范围寄存器可以被配置成指示主存储器的什么区域是持久的,并且执行单元响应于持久类型存储器检查指令而可以检查范围寄存器以确定源存储器地址是否与持久存储器对应,并且存储指示确定的结果。进一步地,在一些实施例中,持久类型检查指令还可以合并或整合转移、分支或其它条件控制流传送操作,其基于源存储器地址信息是否与持久存储器中的存储器位置对应而执行控制流传送。在一些这样的实施例中,可以可选地将对源存储器地址信息是否与持久存储器中的存储器位置对应的指示存储在如在本文中的别处描述的架构上可见的目的地存储位置中,并且条件控制流传送操作可以可选地检查架构上可见的目的地存储位置中的指示。在其它这样的实施例中,可以可选地不将对源存储器地址信息是否与持久存储器中的存储器位置对应的指示存储在架构上可见的目的地存储位置中,而是可以通过条件控制流传送操作来内部地使用所述指示以决定是否要执行转移、分支或其它控制流传送。示例性核心架构、处理器和计算机架构可以以不同方式、为了不同目的和在不同处理器中实现处理器核心。例如,这样的核心的实现可包括:1)意图用于通用计算的通用有序核心;2)意图用于通用计算的高性能通用无序核心;3)意图主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可包括:1)包括意图用于通用计算的一个或多个通用有序核心和/或意图用于通用计算的一个或多个通用无序核心的CPU;以及2)包括意图主要用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的分离管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在该情况下,这样的协处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核心);以及4)芯片上系统,其可在相同管芯上包括所描述的CPU(有时被称为(多个)应用核心或(多个)应用处理器)、上面所描述的协处理器和附加功能性。接下来描述示例性核心架构,之后是对示例性处理器和计算机架构的描述。示例性核心架构有序和无序的核心方块图图10A是图示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发出/执行流水线二者的方块图。图10B是图示根据本发明的实施例的要被包括在处理器中的示例性寄存器重命名、无序发出/执行架构核心和有序架构核心的示例性实施例二者的方块图。图10A-B中的实线方块图示有序流水线和有序核心,而虚线框的可选附加图示寄存器重命名、无序发出/执行流水线和核心。假定有序方面是无序方面的子集,将描述无序方面。在图10A中,处理器流水线1000包括获取阶段1002、长度解码阶段1004、解码阶段1006、分配阶段1008、重命名阶段1010、调度(还被称为分派或发出)阶段1012、寄存器读/存储器读阶段1014、执行阶段1016、回写/存储器写阶段1018、异常处置阶段1022和提交阶段1024。图10B示出处理器核心1090,其包括耦合到执行引擎单元1050的前端单元1030,并且二者被耦合到存储器单元1070。核心1090可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、极长指令字(VLIW)核心,或者混合或替代核心类型。作为又一选项,核心1090可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,指令高速缓存单元1034被耦合到指令翻译旁视缓冲器(TLB)1036,指令翻译旁视缓冲器(TLB)1036被耦合到指令获取单元1038,指令获取单元1038被耦合到解码单元1040。解码单元1040(或解码器)可对指令进行解码,并生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号作为输出,它们被解码自或其以其它方式反映或被推导自原始指令。可使用各种不同的机制来实现解码单元1040。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1090包括存储用于(例如,在解码单元1040中或否则在前端单元1030内的)某些宏指令的微代码的微代码ROM或其它介质。解码单元1040被耦合到执行引擎单元1050中的重命名/分配器单元1052。执行引擎单元1050包括耦合到引退单元1054和一个或多个调度器单元1056的集合的重命名/分配器单元1052。(多个)调度器单元1056表示任何数目的不同调度器,包括保留站、中央指令窗口等。(多个)调度器单元1056被耦合到(多个)物理寄存器文件(registerfile)单元1058。(多个)物理寄存器文件单元1058中的每个表示一个或多个物理寄存器文件,其中的不同的物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、压紧的整数、压紧的浮点、向量整数、向量浮点、状态(例如,是要被执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器文件单元1058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器文件单元1058与引退单元1054重叠以图示可(例如,使用(多个)重排序缓冲器和(多个)引退寄存器文件;使用(多个)将来文件、(多个)历史缓冲器和(多个)引退寄存器文件;使用寄存器映射和寄存器的池;等等)实现寄存器重命名和无序执行的各种方式。引退单元1054和(多个)物理寄存器文件单元1058被耦合到(多个)执行集群1060。(多个)执行集群1060包括一个或多个执行单元1062的集合和一个或多个存储器访问单元1064的集合。执行单元1062可执行各种操作(例如,移位、加法、减法、乘法)并且对各种数据类型(例如,标量浮点、压紧的整数、压紧的浮点、向量整数、向量浮点)执行所述各种操作。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但是其它实施例仅可包括一个执行单元或都执行所有功能的多个执行单元。(多个)调度器单元1056、(多个)物理寄存器文件单元1058和(多个)执行集群1060被示出为可能是复数的,因为某些实施例针对某些类型的数据/操作创建分离流水线(例如,标量整数流水线、标量浮点/压紧的整数/压紧的浮点/向量整数/向量浮点流水线和/或存储器访问流水线,其每个具有它们自己的调度器单元、(多个)物理寄存器文件单元和/或执行集群——并且在分离的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元1064的某些实施例)。还应当理解,在使用分离流水线的情况下,这些流水线中的一个或多个可以是无序的发出/执行,并且其余是有序的。存储器访问单元1064的集合被耦合到存储器单元1070,存储器单元1070包括耦合到数据高速缓存单元1074的数据TLB单元1072,数据高速缓存单元1074耦合到级别2(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可包括加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034被进一步耦合到存储器单元1070中的级别2(L2)高速缓存单元1076。L2高速缓存单元1076被耦合到一个或多个其它级别的高速缓存并最终到主存储器。作为示例,示例性寄存器重命名、无序发出/执行核心架构可如下实现流水线1000:1)指令获取1038执行获取及长度解码阶段1002和1004;2)解码单元1040执行解码阶段1006;3)重命名/分配器单元1052执行分配阶段1008和重命名阶段1010;4)(多个)调度器单元1056执行调度阶段1012;5)(多个)物理寄存器文件单元1058和存储器单元1070执行寄存器读/存储器读阶段1014;执行集群1060执行执行阶段1016;6)存储器单元1070和(多个)物理寄存器文件单元1058执行回写/存储器写阶段1018;7)各种单元可能在异常处置阶段1022中被涉及;以及8)引退单元1054和(多个)物理寄存器文件单元1058执行提交阶段1024。核心1090可支持一个或多个指令集(例如,(具有已随较新版本添加的一些扩展的)x86指令集;加利福尼亚州森尼维耳市的MIPSTechnologies的MIPS指令集;加利福尼亚州森尼维耳市的ARMHoldings的(具有诸如NEON的可选附加扩展的)ARM指令集),其包括本文中描述的(多个)指令。在一个实施例中,核心1090包括用以支持压紧的数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用压紧的数据来执行由许多多媒体应用使用的操作。应当理解,核心可支持多线程(执行操作或线程的两个或更多并行集合),并可以以多种方式来如此做,所述多种方式包括时间切片的多线程、同时多线程(其中单个物理核心为物理核心同时进行多线程的每个线程提供逻辑核心,或其组合(例如,诸如在Intel®超线程技术中的时间切片的获取和解码以及其后的同时多线程)。虽然在无序执行的上下文中描述寄存器重命名,但是应当理解,寄存器重命名可用于有序架构中。虽然处理器的图示实施例还包括分离的指令和数据高速缓存单元1034/1074以及共享的L2高速缓存单元1076,但替代实施例可具有用于指令和数据二者的单个内部高速缓存,诸如例如级别1(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存可在核心和/或处理器外部。具体的示例性有序核心架构图11A-B图示了更具体的示例性有序核心架构的方块图,所述核心将是芯片中的(包括相同类型和/或不同类型的其它核心的)若干逻辑块中的一个。逻辑块根据应用、通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要I/O逻辑进行通信。图11A是根据本发明的实施例的单个处理器核心连同其到管芯上互连网络1102的连接并且连同其级别2(L2)高速缓存1104的本地子集的方块图。在一个实施例中,指令解码器1100支持具有压紧的数据指令集扩展的x86指令集。L1高速缓存1106允许低等待时间访问以将存储器高速缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分离的寄存器集合(分别是标量寄存器1112和向量寄存器1114),并且在它们之间传送的数据被写到存储器并然后从级别1(L1)高速缓存1106读回,但本发明的替代实施例可使用不同的方法(例如,使用单个寄存器集合或包括允许数据被在这两个寄存器文件之间传送而不被写和读回的通信路径)。L2高速缓存1104的本地子集是全局L2高速缓存的部分,所述全局L2高速缓存被划分成分离的本地子集,每一处理器核心一个。每个处理器核心具有到L2高速缓存1104的它自己的本地子集的直接访问路径。由处理器核心所读的数据被存储在其L2高速缓存子集1104中并可以被与其它处理器核心访问它们自己的本地L2高速缓存子集并行地快速地访问。由处理器核心所写的数据被存储在它自己的L2高速缓存子集1104中并且如果必要则从其它子集中来冲刷。环形网络确保共享的数据的一致性。环形网络是双向的以允许诸如处理器核心、L2高速缓存和其它逻辑块之类的代理在芯片内互相通信。每个环形数据-路径每一方向为1112位宽。图11B是根据本发明的实施例的图11A中的处理器核心的部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地,向量单元1110是16-宽向量处理单元(VPU)(参见16-宽ALU1128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用拌和单元1120来拌和寄存器输入、利用数值转换单元1122A-B的数值转换,以及利用复制单元1124对存储器输入的复制。写掩码寄存器1126允许预测所得到的向量写。具有集成存储器控制器和图形的处理器图12是根据本发明的实施例的处理器1200的方块图,所述处理器1200可以具有不止一个核心,可以具有集成存储器控制器,并且可以具有集成图形。图12中的实线方块图示具有单个核心1202A、系统代理1210、一个或多个总线控制器单元1216的集合的处理器1200,而虚线框的可选附加图示具有多个核心1202A-N、系统代理单元1210中的一个或多个集成存储器控制器单元1214的集合以及专用逻辑1208的替代处理器1200。因此,处理器1200的不同实现可包括:1)CPU,其具有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心)的专用逻辑1208、以及是一个或多个通用核心(例如,通用有序核心、通用无序核心、所述两个核心的组合)的核心1202A-N;2)具有是意图主要用于图形和/或科学(吞吐量)的大量专用核心的核心1202A-N的协处理器;以及3)具有是大量通用有序核心的核心1202A-N的协处理器。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、(包括30个或更多核心的)高吞吐量许多集成核心(MIC)协处理器、嵌入式处理器等。处理器可被实现在一个或多个芯片上。处理器1200可以是一个或多个衬底的一部分和/或可以使用多个工艺技术中的任何(诸如例如BiCMOS、CMOS或NMOS)而实现在一个或多个衬底上。存储器层级包括核心内的一个或多个级别的高速缓存、一个或多个共享的高速缓存单元1206的集合,以及耦合到集成存储器控制器单元1214的集合的(未示出的)外部存储器。共享的高速缓存单元1206的集合可包括一个或多个中级高速缓存,诸如级别2(L2)、级别3(L3)、级别4(L4)或其它级别的高速缓存、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连单元1212将集成图形逻辑1208、共享的高速缓存单元1206的集合,以及系统代理单元1210/(多个)集成存储器控制器单元1214互连,但替代实施例可使用任何数目的公知技术用于互连这样的单元。在一个实施例中,一个或多个高速缓存单元1206和核心1202-A-N之间的一致性被维持。在一些实施例中,核心1202A-N中的一个或多个核心能够进行多线程。系统代理1210包括协调和操作核心1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心1202A-N和集成图形逻辑1208的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。核心1202A-N在架构指令集方面可以是同构或异构的;即,核心1202A-N中的两个或更多可能能够执行相同指令集,而其它核心可能能够仅执行不同指令集或该指令集的子集。示例性计算机架构图13-17是示例性计算机架构的方块图。在膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的领域中已知的其它系统设计和配置也是适合的。一般地,能够合并如本文中所公开的处理器和/或其它执行逻辑的种类繁多的系统或电子设备一般是适合的。现在参考图13,所示出的是依照本发明的一个实施例的系统1300的方块图。系统1300可包括被耦合到控制器集线器1320的一个或多个处理器1310、1315。在一个实施例中,控制器集线器1320包括图形存储器控制器集线器(GMCH)1390和输入/输出集线器(IOH)1350(其可在分离的芯片上);GMCH1390包括存储器1340和协处理器1345被耦合到的存储器和图形控制器;IOH1350将输入/输出(I/O)设备1360耦合到GMCH1390。替代地,存储器和图形控制器中的一个或二者被集成在处理器内(如本文中描述的),存储器1340和协处理器1345被直接耦合到处理器1310和具有IOH1350的单个芯片中的控制器集线器1320。在图13中用虚线来表示附加处理器1315的可选性质。每个处理器1310、1315可包括本文中描述的处理核心中的一个或多个,并可以是处理器1200的某一版本。存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两个存储器的组合。对于至少一个实施例,控制器集线器1320经由诸如前侧总线(FSB)的多点总线、诸如快速路径互连(QPI)的点对点接口或类似连接1395与(多个)处理器1310、1315通信。在一个实施例中,协处理器1345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1320可包括集成图形加速器。在包括架构、微架构、热、功率消耗特性等的指标的量度范围方面,在物理资源1310、1315之间可能存在多种差异。在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。指令内嵌入的可以是协处理器指令。处理器1310将这些协处理器指令识别为具有应由附连的协处理器1345执行的类型。相应地,处理器1310在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发出到协处理器1345。(多个)协处理器1345接受并执行所接收的协处理器指令。现在参考图14,所示出的是依照本发明的实施例的第一更具体的示例性系统1400的方块图。如图14中所示,多处理器系统1400是点对点互连系统,并包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每个可以是处理器1200的某一版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一个实施例中,处理器1470和1480分别是处理器1310、协处理器1345。处理器1470和1480被示出分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括点对点(P-P)接口1476和1478,作为它的总线控制器单元的部分;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可使用P-P接口电路1478、1488经由点对点(P-P)接口1450交换信息。如图14中所示,IMC1472和1482将处理器耦合到相应存储器,也就是存储器1432和存储器1434,其可以是本地地附连到相应处理器的主存储器的部分。处理器1470、1480可每个使用点对点接口电路1476、1494、1486、1498经由单独的P-P接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1492与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。(未示出的)共享的高速缓存可被包括在任一处理器中或在两个处理器外部,还经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享的高速缓存中。芯片组1490可经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围未被如此限制。如图14中所示,各种I/O设备1414连同总线桥接器1418可被耦合到第一总线1416,总线桥接器1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器之类的一个或多个附加处理器1415被耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可被耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427和诸如盘驱动器或其它大容量存储设备之类的存储单元1428,其可包括指令/代码和数据1430。进一步地,音频I/O1424可被耦合到第二总线1420。注意,其它架构是可能的。例如,代替图14的点对点架构,系统可实现多点总线或其它这样的架构。现在参考图15,所示出的是依照本发明的实施例的第二更具体的示例性系统1500的方块图。图14和15中的相同元件具有相同的参考数字,并且已从图15省略图14的某些方面以便避免模糊图15的其它方面。图15图示了处理器1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15图示了不但存储器1432、1434被耦合到CL1472、1482,而且I/O设备1514也被耦合到控制逻辑1472、1482。遗留I/O设备1515被耦合到芯片组1490。现在参考图16,所示出的是依照本发明的实施例的SoC1600的方块图。图12中的类似元件具有相同的参考数字。并且,虚线框是更高级的SoC上的可选特征。在图16中,(多个)互连单元1602被耦合到:应用处理器1610,其包括一个或多个核心152A-N的集合和(多个)共享的高速缓存单元1206;系统代理单元1210;(多个)总线控制器单元1216;(多个)集成存储器控制器单元1214;一个或多个协处理器1620的集合,其可包括集成图形逻辑、图像处理器、音频处理器以及视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,(多个)协处理器1620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。可以以硬件、软件、固件或这样的实现方法的组合来实现本文中所公开的机制的实施例。可以将本发明的实施例实现为在可编程系统上执行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、(包括易失性和非易失性存储器和/或存储元件的)存储系统、至少一个输入设备和至少一个输出设备。可以将诸如图14中图示的代码1430之类的程序代码应用于输入指令以执行本文中描述的功能并生成输出信息。输出信息可以以已知方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,所述处理器诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。程序代码可以以高级过程或面向对象的编程语言来实现以与处理系统通信。如果期望,则程序代码还可以以汇编或机器语言来实现。事实上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。至少一个实施例的一个或多个方面可通过存储在机器可读介质上的有代表性的指令来实现,所述有代表性的指令表示处理器内的各种逻辑,其当由机器读时使得机器制作用以执行本文中描述的技术的逻辑。这样的表示(被称为“IP核心”)可被存储在有形的机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器中。这样的机器可读存储介质可非限制性地包括由机器或设备所制造或形成的物品的非瞬时有形布置,其包括存储介质,诸如硬盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘的任何其它类型的盘;半导体设备,诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或适合于存储电子指令的任何其它类型的介质。相应地,本发明的实施例还包括非瞬时有形机器可读介质,所述介质包含指令或包含设计数据,诸如硬件描述语言(HDL),其定义本文中描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可被称为程序产品。模拟(包括二进制翻译、代码变形等)在一些情况下,可以使用指令转换器将指令从源指令集转换成目标指令集。例如,指令转换器可对指令进行翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或以其它方式将指令转换成要由核心来处理的一个或多个其它指令。可以以软件、硬件、固件或其组合来实现指令转换器。指令转换器可在处理器上、离开处理器或部分在处理器上且部分离开处理器。图17是根据本发明的实施例的对比软件指令转换器的使用的方块图,所述软件指令转换器用以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在图示的实施例中,指令转换器是软件指令转换器,但是替代地指令转换器可以以软件、硬件、固件或其各种组合来实现。图17示出可以使用x86编译器1704来编译用高级语言1702的程序以生成x86二进制代码1706,其可由具有至少一个x86指令集核心的处理器1716本机执行。具有至少一个x86指令集核心的处理器1716表示可以通过兼容地执行或以其它方式处理如下各项以便实现与具有至少一个x86指令集核心的Intel处理器基本上相同的结果而执行与具有至少一个x86指令集核心的Intel处理器基本上相同的功能的任何处理器:(1)Intelx86指令集核心的指令集的实质部分,或(2)目标是在具有至少一个x86指令集核心的Intel处理器上运行的应用或其它软件的对象代码版本。x86编译器1704表示可操作以生成x86二进制代码1706(例如,对象代码)的编译器,所述x86二进制代码1706可以被在利用或不利用附加联接处理的情况下在具有至少一个x86指令集核心的处理器1716上执行。类似地,图17示出了可以使用替代指令集编译器1708来编译用高级语言1702的程序以生成替代指令集二进制代码1710,其可由不具有至少一个x86指令集核心的处理器1714(例如,具有执行加利福尼亚州森尼维耳市的MIPSTechnologies的MIPS指令集和/或执行加利福尼亚州森尼维耳市的ARMHoldings的ARM指令集的核心的处理器)本机执行。使用指令转换器1712将x86二进制代码1706转换成可由不具有x86指令集核心的处理器1714本机执行的代码。该经转换的代码不太可能与替代指令集二进制代码1710相同,因为有此能力的指令转换器难以做出;然而,经转换的代码将完成一般操作并由来自替代指令集的指令组成。因此,指令转换器1712表示软件、固件、硬件或其组合,其通过模拟、仿真或任何其它过程而允许不具有x86指令集处理器或核心的处理器或其它电子设备执行x86二进制代码1706。针对图4-7中的任何图所描述的组件、特征和细节还可以可选地适用于图2-3和8中的任何图。针对在本文中公开的任何处理器所描述的组件、特征和细节可以可选地适用于在本文中公开的任何方法,所述任何方法在实施例中可以可选地由和/或利用这样的处理器来执行。在本文中在实施例中描述的任何处理器可以可选地被包括在在本文中公开的任何系统中(例如,图13-16的任何系统)。在本文中公开的处理器组件可以说可操作以执行操作、被配置成执行操作、有能力执行操作或能够执行操作。例如,解码器可以对指令进行解码,执行单元可以存储结果,等等。为了清楚,要理解,这些表达不暗示处理器组件处于操作或使用中,而是指代什么处理器组件在其处于操作中时有做的能力或能够做,但在装置权利要求中,这些处理器组件不处于操作中。在说明书和权利要求书中,可能已经使用术语“耦合”和/或“连接”连同其派生词。这些术语不意图作为彼此的同义词。相反,在实施例中,“连接”可以用来指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可能意味着两个或更多个元件彼此直接物理和/或电接触。然而,“耦合”还可能意味着两个或更多个元件彼此不直接接触,但是还仍然彼此合作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在各图中,箭头用来示出连接和耦合。可能使用了术语“和/或”。如在本文中使用的,术语“和/或”意味着一个或另一个或二者(例如,A和/或B意味着A、或B、或A和B)。在上面的描述中,阐述了特定细节以便提供对实施例的透彻理解。然而,可以在没有这些特定细节中的一些的情况下实践其它实施例。本发明的范围不是由上面提供的特定示例确定,而是仅由下面的权利要求书确定。在其它实例中,公知的电路、结构、设备和操作已经被以方块图形式和/或没有细节地示出,以便避免模糊对说明书的理解。在认为适当的地方,参考数字或参考数字的末端部分在各图之间重复以指示对应的或类似的元件,所述元件可以可选地具有类似或相同的特性,除非另外指定或显而易见。某些操作可以通过硬件组件来执行,或可以被具体化在机器可执行或电路可执行指令中,所述指令可以用来使得和/或导致编程有指令的机器、电路或硬件组件(例如,处理器、处理器的部分、电路等)执行操作。操作还可以可选地通过硬件和软件的组合来执行。处理器、机器、电路或硬件可以包括具体或特定的电路或其它逻辑(例如,潜在地与固件和/或软件组合的硬件)可操作以执行和/或处理指令并且响应于指令而存储结果。一些实施例包括制品(例如,计算机程序产品),其包括机器可读介质。介质可以包括提供(例如存储)以可由机器读的形式的信息的机构。机器可读介质可以提供或之上已经存储了指令或指令序列,所述指令或指令序列如果被机器执行和/或在被机器执行时可操作以使得机器执行和/或导致机器执行在本文中公开的操作、方法或技术中的一个。在一些实施例中,机器可读介质可以包括有形和/或非瞬时机器可读存储介质。例如,非瞬时机器可读存储介质可以包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除且可编程ROM(EPROM)、电可擦除且可编程ROM(EEPROM)、随机访问存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非瞬时存储器、非瞬时数据存储设备等。非瞬时机器可读存储介质不包括瞬时传播信号。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固态物质或材料,诸如例如半导体材料、相变材料、磁性固体材料、固体数据存储材料等。替代地,可以可选地使用非有形的瞬时计算机可读传输介质,诸如例如电的、光学的、听觉的或其它形式的传播信号——诸如载波、红外信号和数字信号。适合的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等。适合的机器的其它示例包括计算机系统或其它电子设备,其包括处理器、数字逻辑电路或集成电路。这样的计算机系统或电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用例如指示特定特征可以被包括在本发明的实践中但不一定被要求包括在本发明的实践中。类似地,出于使本公开流线型化和帮助理解各种有创造力的方面的目的,在说明书中,各种特征有时被一起组合在单个实施例、图或其描述中。然而,本公开的该方法不要被解释为反映本发明要求比在每个权利要求中明确地记载的特征的更多的特征的意图。相反,如以下权利要求反映,有创造力的方面在于少于单个公开的实施例的所有特征。因此,在具体实施方式之后的权利要求书由此被明确地合并到该具体实施方式中,其中每个权利要求独立作为本发明的分离的实施例。示例实施例以下示例关于进一步的实施例。可以在一个或多个实施例中的任何地方使用示例中的细节。示例1是处理器或其它装置,其包括用以对指令进行解码的解码单元。指令用以指示源存储器地址信息,并且指令用以指示目的地架构上可见的存储位置。处理器还包括与解码单元耦合的执行单元。响应于指令,执行单元要将结果存储在目的地架构上可见的存储位置中。结果用以指示与源存储器地址信息对应的逻辑存储器地址是否在持久存储器中。示例2包括示例1的处理器,进一步包括翻译旁视缓冲器(TLB)。并且,可选地,其中响应于指令,执行单元要从用以存储逻辑存储器地址的地址翻译的TLB中的条目接收一个或多个位,所述一个或多个位用以指示逻辑存储器地址是否在持久存储器中。示例3包括示例2的处理器,进一步包括存储器管理单元(MMU)。并且,可选地,其中MMU要执行页表走以针对逻辑存储器地址的地址翻译而检索页表条目,其要包括用以指示逻辑存储器地址是否在持久存储器中的一个或多个位。示例4包括示例3的处理器,其中所述一个或多个位要包括页表条目的位[11:9]中的一个或多个。示例5包括示例1到4中的任一个的处理器,其中响应于指令,执行单元要接收包括持久指示位的多个位。并且,可选地,其中执行单元包括用以应用掩码来将持久指示位与所述多个位隔离的逻辑。示例6包括示例5的处理器,其中执行单元包括用以存储掩码的掩码记忆装置,掩码要包括针对持久指示位的设置位和针对所述多个位中的不同于持久指示位的每个位的清除位。并且,可选地,执行单元包括与掩码记忆装置耦合的与逻辑,并且耦合以接收所述多个位。并且,可选地,其中与逻辑要对所述多个位和掩码执行按位逻辑与操作并且输出持久指示位的位值。示例7包括示例1到6中的任一个的处理器,其中解码单元要将指令解码成加载操作。并且,可选地,其中处理器进一步包括存储器排序缓冲器(MOB)。并且,可选地,其中MOB将不关于加载缓冲器中的其它操作对加载操作进行排序,除非加载操作遭遇翻译旁视缓冲器(TLB)未命中。示例8包括示例1到7中的任一个的处理器,进一步包括数据高速缓存。并且,可选地,其中解码单元要将指令解码成加载操作,并且其中响应于加载操作,处理器要向数据高速缓存提供取消信号。示例9包括示例1到8中的任一个的处理器,其中解码单元要将指令解码成加载操作。并且,可选地,其中处理器进一步包括存储器排序缓冲器(MOB)。并且,可选地,其中MOB将不针对加载操作执行一个或多个阻塞操作,但MOB将针对与加载指令对应的其它加载操作执行所述一个或多个阻塞操作,所述加载指令在被执行时将数据从存储器加载到处理器中。示例10包括示例1到9中的任一个的处理器,进一步包括多个标量寄存器。并且,可选地且其中响应于指令,执行单元要将结果存储在将是所述多个标量寄存器中的标量寄存器的目的地架构上可见的存储位置中。示例11包括示例1到10中的任一个的处理器,进一步包括用以存储至少一个标志的标志寄存器。并且,可选地,其中响应于指令,执行单元要将结果存储在将是标志寄存器中的至少一个标志的目的地架构上可见的存储位置中。示例12包括示例1到11中的任一个的处理器,其中响应于指令,执行单元要存储将仅包括对逻辑存储器地址是否在持久存储器中的指示的结果。示例13包括示例1到11中的任一个的处理器,其中响应于指令,执行单元要存储将包括针对与逻辑存储器地址对应的页面的多个页面属性位的结果。示例14包括示例1到13中的任一个的处理器,其中解码单元要对将是用户级指令的指令进行解码,所述用户级指令可操作以被在用户级特权下执行。示例15是一种通过处理器执行的方法,其包括在处理器处接收指令。指令指示源存储器地址信息并且指示目的地架构上可见的存储位置。方法还包括响应于指令而将结果存储在目的地架构上可见的存储位置中。结果指示与源存储器地址信息对应的逻辑存储器地址是否在持久存储器中。示例16包括示例15的方法,进一步包括从翻译旁视缓冲器(TLB)中的条目接收一个或多个位。并且,可选地,响应于指令,所述一个或多个位指示逻辑存储器地址是否在持久存储器中。示例17包括示例15到16中的任一个的方法,进一步包括将指令解码成加载操作。并且,可选地,进一步包括将不关于存储器排序缓冲器的加载缓冲器中的其它操作对加载操作进行排序,除非加载操作遭遇翻译旁视缓冲器(TLB)未命中。示例18包括示例15到17中的任一个的方法,进一步包括在用户级特权下执行指令。示例19包括示例15到18中的任一个的方法,进一步包括当结果指示逻辑存储器地址在持久存储器中时决定更新预写日志。示例20包括示例15到19中的任一个的方法,进一步包括当结果指示逻辑存储器地址不在持久存储器中时决定不更新预写日志。示例21包括示例15到20中的任一个的方法,进一步包括编译器将指令插入到在基于结果而有条件地更新预写日志的指令集之前的代码中。示例22包括示例15到21中的任一个的方法,进一步使预测分支的分支预测偏置,使得更新预写日志的指令集不被执行。示例23是包括互连和与互连耦合的处理器的电子设备。处理器要接收用以指示源存储器地址信息和用以指示目的地架构上可见的存储位置的指令。响应于指令,处理器要将结果存储在目的地架构上可见的存储位置中。结果用以指示与源存储器地址信息对应的逻辑存储器地址是否在持久存储器中。电子设备进一步包括与互连耦合的动态随机存取存储器(DRAM)和持久存储器中的至少一个。DRAM和/或持久存储器存储指令集,所述指令集在被处理器执行时使得处理器执行操作,所述操作包括或者如果结果将指示逻辑存储器地址在持久存储器中,则要更新预写日志,或者如果结果将指示逻辑存储器地址不在持久存储器中,则不要更新预写日志。示例24包括示例23的电子设备,其中处理器进一步包括翻译旁视缓冲器(TLB)。并且,可选地,其中响应于指令,处理器要从用以存储逻辑存储器地址的地址翻译的TLB中的条目接收一个或多个位,所述一个或多个位用以指示逻辑存储器地址是否在持久存储器中。示例25包括示例1到14中的任一个的处理器,进一步包括用以预测分支的可选的分支预测单元以及与分支预测单元耦合的可选的指令预取单元,指令预取单元用以预取包括持久类型存储器检查指令的指令。处理器还可以可选地包括与指令预取单元耦合的可选的级别1(L1)指令高速缓存,L1指令高速缓存用以存储包括持久类型存储器检查指令的指令,可选的L1数据高速缓存用以存储数据,并且可选的级别2(L2)高速缓存用以存储数据和包括持久类型存储器检查指令的指令。处理器还可以可选地包括与解码单元、L1指令高速缓存和L2高速缓存耦合的指令获取单元,用以在一些情况下从L1指令高速缓存和L2高速缓存中的一个获取持久类型存储器检查指令,并且用以将持久类型存储器检查指令提供给解码单元。处理器还可以可选地包括用以重命名寄存器的寄存器重命名单元、用以调度已经从持久类型存储器检查指令解码的一个或多个操作以用于执行的可选的调度器,以及用以提交持久类型存储器检查指令的执行结果的可选的提交单元。示例26包括芯片上系统,其包括至少一个互连、与所述至少一个互连耦合的示例1到14中的任一个的处理器、与所述至少一个互连耦合的可选的图形处理单元(GPU)、与所述至少一个互连耦合的可选的数字信号处理器(DSP)、与所述至少一个互连耦合的可选的显示控制器、与所述至少一个互连耦合的可选的存储器控制器、与所述至少一个互连耦合的可选的无线调制解调器、与所述至少一个互连耦合的可选的图像信号处理器、与所述至少一个互连耦合的可选的通用串行总线(USB)3.0兼容的控制器、与所述至少一个互连耦合的可选的蓝牙4.1兼容的控制器,以及与所述至少一个互连耦合的可选的无线收发机控制器。示例27是一种处理器或其它装置,其可操作以执行示例15到22中的任一个的方法。示例28是一种处理器或其它装置,其包括用于执行示例15到22中的任一个的方法的部件。示例29是可选地非瞬时和/或有形机器可读介质,其可选地存储或以其它方式提供包括第一指令的指令,第一指令如果被处理器执行和/或在被处理器执行时,计算机系统、电子设备或其它机器可操作以使得机器执行示例15到22中的任一个的方法。示例30是一种处理器或其它装置,其基本上如在本文中描述的那样。示例31是一种处理器或其它装置,其可操作以执行基本上如在本文中描述的任何持久类型存储器检查指令。示例32是一种处理器或其它装置,其包括用于对指令进行解码的部件,指令用以指示源存储器地址信息,并且指令用以指示目的地架构上可见的存储位置。装置还包括用于响应于指令而将结果存储在目的地架构上可见的存储位置中的部件,结果用以指示与源存储器地址信息对应的逻辑存储器地址是否在持久存储器中。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1