CN104050026B - 使对共享存储器存取的同步松弛的处理器、方法及系统 - Google Patents
使对共享存储器存取的同步松弛的处理器、方法及系统 Download PDFInfo
- Publication number
- CN104050026B CN104050026B CN201410097357.6A CN201410097357A CN104050026B CN 104050026 B CN104050026 B CN 104050026B CN 201410097357 A CN201410097357 A CN 201410097357A CN 104050026 B CN104050026 B CN 104050026B
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- memory
- memory access
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一方面的处理器包括多个逻辑处理器。多个中的第一逻辑处理器执行包括同步对存储器的存取的存储器存取同步指令的软件。处理器还包括在处理器处于松弛的存储器存取同步模式时防止存储器存取同步指令同步对存储器的存取的存储器存取同步松弛逻辑。
Description
背景技术
技术领域
本文中所描述的实施例一般涉及处理器。具体而言,本文中所描述的实施例一般涉及处理器中的存储器存取同步。
背景信息
多线程软件以及在多个实体可能存取同一共享存储器的环境中执行的其他软件通常包括一种或多种类型的存储器存取同步指令。各种此类指令在本领域中是已知的。示例包括存储器存取栅栏或屏障指令、锁定指令、条件存储器存取指令等。为了有助于确保对共享存储器的存取以适当的次序发生(例如,与原始程序次序一致地发生)并且由此有助于防止错误的结果,这些存储器存取同步指令通常是必需的。
附图说明
可通过参考附图说明以及用于示出本发明的实施例的附图最佳地理解本发明。在附图中:
图1是计算系统的一个实施例的方框图。
图2是一种使对共享存储器存取的同步松弛的方法的一个实施例的方框流程图。
图3是在处于松弛的同步模式时可操作用于将存储器存取同步指令解码成空操作(NOP)的解码逻辑的一个实施例的方框图。
图4是在处于松弛的同步模式时可操作用于引退存储器存取同步指令以使其不影响存储器存取同步的存储器子系统的一个实施例的方框图。
图5是在处于松弛的同步模式时可操作用于将一个或多个同步存储器存取指令转换成一个或多个对应非同步存储器存取指令的解码逻辑的一个实施例的方框图。
图6是具有有条件地允许或不允许控制流前进到存储器存取指令和/或存储器存取同步指令的条件分支指令的代码的示例的方框图。
图7是可操作用于预测条件分支指令以基于架构松弛的同步模式强化或松弛存储器存取同步的分支预测器的一个实施例的方框图。
图8是一种配置处理器以使用松弛的存储器存取同步模式的方法的一个实施例的方框流程图。
图9A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的方框图。
图9B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的方框图。
图10A是根据本发明的实施例的连接到管芯上(on-die)互联网络且具有第二级(L2)高速缓存的本地子集的单处理器核的方框图。
图10B是根据本发明的实施例的图10A中的处理器核的一部分的展开图。
图11是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器的方框图。
图12示出根据本发明的实施例的系统的方框图。
图13示出根据本发明的实施例的第一更具体的示例性系统的方框图。
图14示出根据本发明的实施例的第二更具体的示例性系统的方框图。
图15示出根据本发明的实施例的片上系统(SoC)的方框图。
图16是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的方框图。
实施例的详细描述
在以下描述中,阐述了大量具体细节(例如,专用存储器同步指令,用于松弛存储器同步的方法、逻辑实现、微架构细节、操作顺序、逻辑划分/集成细节、系统组件的类型和相互关系等)。然而,应当理解可在没有这些具体细节的情况下实践本发明的实施例。在其他实例中,为了不混淆对该描述的理解,未详细地示出公知电路、结构以及技术。
图1是计算系统100的一个实施例的方框图,该计算系统100包括处理器101和存储器114。在各种实施例中,计算系统可表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、个人数字助理、蜂窝电话、服务器、网络设备(例如,路由器或交换机)、移动因特网设备(MID)、媒体播放器、智能电视、机顶盒、视频游戏控制器、或者具有至少一个处理器和至少一个存储器的其他电子设备。存储器114可包括具有相同或不同类型的一个或多个存储器设备。处理器和存储器通过常规耦合机构113(例如,通过互连、总线、中枢、存储器控制器、芯片组组件等)耦合或者以其他方式相互通信。在本领域中已知的任何常规耦合机构通常是合适的。
在一些实施例中,处理器可以是通用处理器。例如,处理器可以是通常部署为计算机系统中的中央处理单元(CPU)的通用处理器。在其他实施例中,处理器可以是专用处理器。合适专用处理器的示例包括但不限于,通信处理器、网络处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、以及数字信号处理器(DSP),仅列举数例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、上述处理器的各种混合、或者完全其他类型的处理器中的任一个。
处理器101可包括任意期望数量的核、硬件线程、硬件线程单元、硬件线程槽、硬件执行上下文、或者其他处理元件或逻辑处理器。术语“核”常常指位于能够维持独立架构状态(例如,执行状态)的集成电路上的逻辑,其中独立维持的架构状态与专用执行资源相关联。相反,术语“硬件线程”常常指位于能够维持的独立架构状态的集成电路上的逻辑,其中独立维持的架构状态共享对它使用的执行资源的存取。当特定资源由架构状态共享且其他资源专属于架构状态时,核和硬件线程之间的线不太明显。然而,核和硬件线程常常被操作系统视为各个处理元件或逻辑处理器。操作系统通常能够单独地调度每一核上的线程或进程、硬件线程、硬件线程单元、硬件线程槽、硬件执行上下文或者其他处理元件或逻辑处理器。换句话说,在一个实施例中,处理元件或逻辑处理器可表示能够单独地与代码(诸如,软件线程、操作系统、应用或者其他代码)相关联的任何管芯上处理器逻辑。在一些实施例中,处理元件或逻辑处理器可广泛地表示能够保持状态且单独地与代码相关联的逻辑。
在所示的实施例中,处理器包括第一逻辑处理器102-1至第N逻辑处理器102-N。数字N可以是适合于特定实现的任何数字。作为示例,在图形处理器和芯片多处理器的情况下,数字N的范围通常是从2至几百或者甚至几千的数量级。第一逻辑处理器102-1包括指令处理流水线108。指令处理流水线通常可包括常规指令处理流水线逻辑,诸如举例而言,指令提取逻辑、指令解码逻辑、指令执行逻辑等。其他逻辑处理器中的每一个还可包括指令处理流水线,为了简洁起见未示出指令处理流水线。核或者其他逻辑处理器中的每一个可以是单线程或多线程的。在各种实施例中,核或者其他逻辑处理器可以是对称核、非对称核(例如,具有不同硬件资源或者甚至不同指令集的异质核),或者一些可以是对称的而其他可以是不对称的。
存储器114具有存储在其中的软件116。软件可包括例如一个或多个操作系统(OS)117以及一个或多个应用118。在操作期间,软件的一部分可被加载到处理器101中,并且可由处理器运行或执行。作为示例,不同的处理器或线程可被调度到不同的逻辑处理器102上。如所示的,第一逻辑处理器102-1可具有可执行软件103。类似地,在至少一些时间,其他逻辑处理器还可具有可执行软件(未示出)。可执行软件可包括逻辑处理器的指令集架构(ISA)的指令。这些ISA指令有时被称为宏指令、机器级指令或汇编语言指令。可执行软件可包括存取存储器114的一个或多个存储器存取指令119。例如,可执行软件可包括从共享存储器加载/读取数据的一个或多个加载/读取指令、和/或将数据存储/写到共享存储器的一个或多个存储/写指令。这些指令呈现不同的特点并且具有不同的名称。这些指令的示例包括但不限于,移动指令、加载/移动和复制指令、加载多指令、存储多指令、收集指令、分散指令等。
在至少一些时间,其他逻辑处理器(例如,第N逻辑处理器102-N)还可具有在其上加载和运行的可执行软件。该可执行软件可类似地具有用于存取存储器114的一个或多个存储器存取指令。在至少一些时间,共享存储器115(例如,存储器114的一部分)可由至少两个逻辑处理器共享。当两个或两个以上逻辑处理器正在存取共享存储器时,在适当的位置在可执行软件中同步存储器存取以使其以适当的次序发生(例如,与原始程序次序一致地发生)通常是适当的。在一些情况下,逻辑处理器中的一个或多个可无序地执行指令。潜在地,不同的逻辑处理器可以不同频率或者其他速率操作。在一些实施例中,不位于处理器101上(例如,不位于相同管芯或芯片上)的一个或多个外部设备(诸如举例而言,一个或多个协处理器、输入/输出(I/O)设备、或者该系统中的其他设备)还可潜在地存取共享存储器。即使处理器具有相对较强的存储器排序模型并且能够在逻辑处理器之间没有明确同步基元(primitive)的情况下解决存储器存取,同步在存在这些外部设备的可能性时常常也是适当的。
如果未使用适当的同步机制,则对共享存储器115的存储器存取可以不同于期望的次序发生(例如,与原始程序次序不一致),这可导致计算不正确的结果。考虑简单示例,其中程序期望第一逻辑处理器在给定存储位置读取值“A”,将值“A”与值“B”相加,将和“A+B”写回到给定存储位置,并且随后第N逻辑处理器从给定存储位置读取和“A+B”。在该示例中,如果相反出于任何原因第N逻辑处理器在和“A+B”被写到给定存储位置之前从给定存储位置读取值“A”,则这可导致计算不正确的结果。为了有助于防止这些发生,多线程软件以及在多实体可能潜在地存取相同的共享存储器的环境中执行的其他软件包括存储器存取同步机制(例如,一个或多个存储器存取同步指令)。
再次参考图1,可执行软件103包括可能类型的存储器存取同步指令的各种示例。在所示的实施例中,这些指令包括一个或多个存储器存取栅栏和/或存储器存取屏障指令104、一个或多个存储器锁定指令105、一个或多个条件存储器存取指令106、以及有条件地保护存储器存取(例如,有条件地跳过或不跳过存储器存取)的一个或多个条件分支指令107。已经开发了这些以及其他类型的存储器存取同步指令和机制的许多不同示例。
栅栏和/或屏障指令通常使处理器强化存储器存取排序约束。例如,栅栏指令可保证在栅栏指令之前以程序次序发生的具有给定类型的特定存储器存取操作在栅栏/屏障指令之后以程序次序的具有给定类型的存储器存取操作之前执行。作为示例,因特尔IA-32架构包括串联化存储操作的SFENCE(存储栅栏)指令(例如,保证按程序次序在SFENCE指令之前的存储在SFENCE指令之后的存储之前执行)、串联化加载操作的LFENCE(加载栅栏)指令(例如,保证按程序次序在LFENCE指令之前的加载在LFENCE指令之后的加载之前执行)、以及串联化加载和存储操作的LMFENCE(存储器栅栏)指令(例如,保证按程序次序在MFENCE指令之前的加载和存储两者在MFENCE指令之后的加载和存储之前执行)。
另外,来自德州仪器(TI)的OMAPTM3以及其他多媒体应用处理器执行数据存储器屏障(DMB)、数据同步屏障(DSB)、以及指令同步屏障(ISB)型指令。DMB指令确保DMB之前的所有明确的数据存储器传输都在DMB启动之后的任何后续数据存储器传输之前完成。DSB指令确保DSB之前的所有明确的数据存储器传输都在执行DSB之后的任何指令之前完成。ISB指令确保ISB之前的所有上下文变更操作的效果由后续指令识别。另外,来自TI的处理器执行一对加载-链接和存储-条件(LL/SC)指令。加载-链接指令可用于读取存储器位置的当前值。如果从加载-链接指令起对该存储器位置尚未作出改变,则跟随加载-链接指令的存储-条件指令可将新值存储到该存储器位置。这些以及其他架构通常还具有原子的读-修改-写指令、比较和交换指令、比较和交换双指令、比较和调换指令、测试和置位指令、比较和置位指令、提取和相加指令等中的一个或多个的变体。作为示例,读-修改-写指令可读取存储器位置并且将新值写到该存储器位置(例如,新值或功能、或者读取值的派生值)。作为示例,比较和交换原子指令可以原子形式(atomically)将存储器位置的内容与给定值作比较,并且如果它们相同,则将该存储器位置的内容修改成给定新值。
这些存储器存取同步指令/机制通常被视为必需的,以有助于确保正当的存储器存取排序且防止不正确的结果。然而,它们通常表示倾向于降低性能的开销或负担(tax)。另一方面,执行这些指令消耗特定量的时间(例如,时钟周期)、流水线资源以及功率。另外,这些指令中的一些可强制串联化,这可倾向于限制那些指令可重排序和无序地执行的程度,这可倾向于限制无序执行的益处。这种负担或开销尤其可在具有弱或相对较弱的存储器排序模型的处理器中观察到,因为存储器存取同步指令通常需要更随意地采用以有助于确保正当的存储器存取排序。因此,尤其在具有弱的存储器存取排序模型的处理器的情况下,这些存储器存取同步指令可倾向于降低性能和/或增加功耗。
在一些实施例中,存储器存取同步机制可在适当的时候选择性地松弛(例如,可降低同步的量),以有助于增加性能和/或降低功耗。例如,在一些实施例中,当仅一个逻辑处理器(例如,第一逻辑处理器102-1)正在存取共享存储器114时,相对于共享存储器115的存储器同步的这种松弛可以是适当的。当该系统中的一个或多个其他实体能够潜在地观察时,逻辑处理器可选择性地使用同步机制,并且需要与对共享存储器的存取同步。例如,如果仅单线程正在该系统中运行,则在其上该线程正在运行的逻辑处理器通常将在本机上确保单线程看到共享存储器的正确视图,并且因此单线程不一定引起强化存储器存取同步的性能和功率负担。相反,处理器可在松弛的同步模式中操作以有助于改进性能和/或降低功耗。例如,当处于松弛的同步模式时,指令可相对于存储器存取同步指令以存储器存取同步指令本来一般不准许的方式重排序。
再次参考图1,处理器101包括存储器存取同步松弛逻辑109。逻辑109在适当的时候可操作用于使对共享存储器115的存取的同步松弛。例如,在一些实施例中,当处理器处于松弛的存储器存取同步模式时,逻辑109可防止存储器存取同步指令(例如,栅栏/屏障指令104、锁定指令105、条件存取指令106等)同步对存储器的存取。在其他时间,处理器可放避免对共享存储器的存取的同步松弛(例如,可以基本常规的方式处理存储器存取同步指令/机制)。在一些实施例中,处理器101可任选地具有架构松弛的同步模式。在一些实施例中,处理器可具有指示架构松弛的存储器存取同步模式的一个或多个架构位110。当一个或多个架构位110指示架构松弛的同步模式时,存储器存取同步逻辑109可选择性地使对共享存储器存取的同步松弛。如所示的,在一些实施例中,当处理器处于松弛的同步模式时,第一逻辑处理器(例如,在其上运行的线程)可对共享存储器115执行松弛的(例如,至少部分不同步的)存取111。在一些实施例中,当处理器处于松弛的同步模式时,其他逻辑处理器可能不存取112共享存储器115。
在一些实施例中,使存取的同步松弛可包括:忽略存储器存取同步指令/机制(例如,栅栏指令、屏障指令、锁定指令等)。在一些实施例中,使存取的同步松弛可包括:将存储器存取同步指令/机制转换成对应/模拟非同步存储器存取指令/机制(例如,条件存储器存取指令可被转换成非条件存储器存取指令)。在一些实施例中,使存取的同步松弛可包括:预测条件分支指令,从而相对于存储器存取指令以特定的适当方式分支或跳跃(例如,预测似乎同步无需强化和/或似乎不存在共享数据冲突的可能性)
在一些实施例中,一个或多个架构位110可以是架构可视的,和/或对操作系统或者其他软件可以是可视的。这些位能够被配置成指示处理器或第一逻辑处理器是否处于架构松弛的同步模式。例如,在一个实施例中,一个或多个位可具有指示处理器处于松弛的同步模式的第一值(例如,单架构可视的松弛的同步模式位可被设为二进制1),或者一个或多个位可具有指示处理器不处于松弛的同步模式的第二不同的值(例如,单独一位可被清除为二进制0)。在其他实施例中,可存在一个以上架构位(例如,针对不同的对应共享存储器部分的不同架构位,针对不同逻辑处理器或线程的不同架构位等)。作为示例,这些位可被包括在架构可视或架构寄存器(例如,页表基寄存器、另一控制或配置寄存器等)中。
该系统(诸如举例而言,操作系统、应用软件、或软件)中的适当实体可取决于特定活动以及什么线程正在运行和什么存储器正在该系统中共享而适当地配置这些位。例如,在确定单线程正在该系统中运行、确定仅一个线程将存取特定共享存储器、确定没有其他线程正在观察共享存储器或运行线程、确定同步指令/机制不需要、或者以其他方式确定进入架构松弛的同步模式是适当的或可准许的之后,操作系统可确定以进入架构松弛的同步模式。
为了避免混淆描述,已示出和描述了相对简单的处理器101。在其他实施例中,处理器可任选地包括其他公知组件,诸如举例而言,指令提取单元、指令调度单元、分支预测单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(translation lookasidebuffer)、预提取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级高速缓存、引退单元(retirement unit)、寄存器重命名单元、其他常规组件、以及上述的各种组合。实际上,处理器中的组件有大量不同的组合和配置,并且实施例不限于任何特定的组合或配置。处理器可表示集成电路或者一组一个或多个半导体管芯或芯片(例如,单一管芯或芯片、或者结合两个或两个以上管芯或芯片的封装)。在一些实施例中,处理器可表示片上系统(SoC)和/或芯片多处理器(CMP)。
图2是一种使对共享存储器的存取的同步松弛的方法220的一个实施例的方框流程图。在一些实施例中,图2的操作和/或方法可由图1的装置执行和/或在图1的装置内执行。本文中针对该装置所描述的组件、特征、以及具体的任选细节还任选地应用于在实施例中可由该装置执行和/或在该装置内执行的操作和/或方法。替换地,图2的操作和/或方法可由类似的或完全不同的装置执行,和/或在类似的或完全不同的装置内执行。此外,图1的装置可执行与图2相同、相似或者完全不同的操作和/或方法。
该方法包括:在方框221,提取第一逻辑处理器的指令集。逻辑处理器可以是处理器的多个逻辑处理器中的一个。在一些实施例中,指令集可包括用于同步对存储器的存取的至少一个存储器存取同步指令。在各种实施例中,存储器存取同步指令可包括栅栏指令、屏障指令、锁定指令、条件存储器存取指令或者用于相对于存储器存取进行分支的条件分支指令。
该方法包括:在方框222,在不考虑存储器存取同步指令的同步的情况下,从第一逻辑处理器存取存储器。在一些实施例中,第一逻辑处理器可忽略、不关注、不考虑、不观察、过滤、防止、阻止、停止、或者以其他方式不考虑与存储器存取同步指令相关联的同步。例如,在一些实施例中,存储器存取同步指令可被解码或者以其他方式被转换成空操作(NOP)。作为另一示例,在一些实施例中,存储器存取同步指令可被解码或者以其他方式被转换成非同步指令。作为另一示例,在一些实施例中,处理器的逻辑可忽略或过滤存储器存取同步指令以使其不影响存储器存取同步。有利地,允许逻辑处理器在不考虑存储器存取同步指令的情况下操作可有助于改进性能和/或降低功耗。
如以上所提及的,在一些实施例中,使存取的同步松弛可包括:忽略存储器存取同步指令(例如,栅栏指令、屏障指令、锁定指令等)。存在处理器可用于忽略这些同步指令的不同微架构方式。
图3是在处理器处于松弛的同步模式时可操作用于将特定类型的存储器存取同步指令解码成空操作(NOP)的解码逻辑330的一个实施例的方框图。在一些实施例中,图3的解码逻辑可被包括在图1的处理器中,和/或可用于图2的方法中。替换地,图3的解码逻辑可被包括在类似或不同的处理器中,和/或可用于类似或不同的方法中。此外,图1的处理器和/或图2的方法可使用与图3类似或不同的逻辑。
解码逻辑还可被称为解码单元或解码器。可使用各种不同的机制来实现解码器,这些机制包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及用于实现在本领域中已知的解码器的其他机制。
在操作期间,诸如汇编指令或宏指令之类的相对较高级的指令可被提供到指令解码逻辑。作为示例,这些指令可从指令提取单元、指令队列等提供到解码逻辑。如在示图中所示的,这些指令可包括一种或多种类型的存储器存取指令303(例如,加载指令、存储指令、收集指令等)、一种或多种类型的存储器栅栏和/或存储器屏障指令304以及一种或多种类型的锁定指令305。
当解码存储器存取指令303时、以及当解码不用于存储器存取同步的各种其他指令(例如,常规算术、逻辑、以及其他指令)时,解码逻辑可基本按常规操作,不管处理器是否处于松弛的同步模式。解码逻辑可将这些相对较高级的指令解码成一个或多个对应微指令、微操作、微代码输入点、或者通常实现被解码的指令的操作的其他相对较低级(例如,电路级或硬件级)的指令或控制信号。
相反,当处理器处于松弛的同步模式时,解码逻辑可操作用于将特定类型的存储器存取同步指令解码成空操作(NOP)或者以其他方式将特定类型的存储器存取同步指令转换成空操作。如所示的,在一些实施例中,解码逻辑可与松弛的同步模式耦合和/或知悉松弛的同步模式。如先前所提及的,该模式可表示一个或多个架构可视位,其可由例如操作系统或者其他软件设置或清除从而使处理器转变到松弛的同步模式中以及使处理器从松弛的同步模式转变出来。当处理器未处于松弛的同步模式时,解码逻辑可基本按常规解码这些存储器存取同步指令。即,栅栏指令、屏障指令、锁定指令等可被解码成微操作、或者通过流水线前进且实现期望栅栏、屏障或锁定的其他指令或控制信号。然而,在一些实施例中,当处理器处于松弛的同步模式时,解码逻辑可将这些特定类型的存储器存取同步指令解码成空操作(NOP)。如所示的,在一些实施例中,栅栏和/或屏障指令可被解码为NOP。例如,MFENCE、SFENCE或LFENCE宏指令可被解码成NOP,而不是这些宏指令本应被按常规解码成的指令或控制信号。此外,在一些实施例中,锁定指令可被解码为NOP。NOP可有效地执行空操作和/或可执行空存储器存取同步。处理器流水线实质上可默默地忽略这些NOP。以此方式,当处理器处于松弛的同步状态时,解码逻辑可选择性地过滤栅栏、屏障和锁定指令、或者其至少一部分。有利地,这可有助于改进性能和/或降低功耗。
应当理解,不需要解码逻辑将多于栅栏、屏障、和/或锁定解码成NOP。相反,在一些实施例中,一个或多个栅栏指令和/或者一个或多个屏障指令和/或一个或多个锁定指令可被解码成NOP。同步松弛的水平可在一个实施例和另一实施例之间变化,从而在保持变化的水平的部分同步的情况下平衡改进性能和/或降低功率的目标。在一些实施例中,一种类型的指令(例如,对同步更重要的类型和/或更强烈地影响性能或功率的类型)可被解码为NOP,但是另一类型可能不这样。例如,一种类型的栅栏或屏障(例如,LFENCE)可被解码为NOP,而另一类型(例如,MFENCE)可能不如此。作为另一示例,在一些情况下,栅栏或屏障而非锁定可被解码为NOP,反之亦然。因此,同步松弛的水平是灵活的,并且可变化以适应实现的特定目标。
在其他实施例中,与解码器将存储器存取同步指令转换成NOP不同,其他指令转换逻辑可用于将这些指令转换成NOP。合适指令转换逻辑的示例包括但不限于,指令仿真逻辑、指令翻译逻辑、指令变形逻辑、指令解释逻辑、以及其组合。
图4是在处理器处于松弛的同步模式时可操作用于以其不影响存储器存取同步的方式引退特定类型的存储器存取同步指令的存储器子系统437的一个实施例的方框图。在一些实施例中,图4的存储器子系统可被包括在图1的处理器中,和/或可用于图2的方法中。替换地,图4的存储器子系统可被包括在类似或不同的处理器中,和/或可用于类似或不同的方法中。此外,图1的处理器和/或图2的方法可使用与图4类似或不同的存储器子系统。
如前,解码逻辑430可接收诸如汇编指令或宏指令之类的相对较高级的指令,这些指令可被提供到指令解码逻辑。这些指令可包括一种或多种类型的存储器存取指令403(例如,加载指令、存储指令、收集指令等)、一种或多种类型的存储器栅栏和/或存储器屏障指令404、以及一种或多种类型的锁定指令405。在一些实施例中,解码逻辑可基本按常规解码这些指令中的每一个,不管处理器是否处于松弛的同步模式。
存储器子系统437可接收对应经解码的指令或控制信号。如所示的,在一些实施例中,存储器子系统可与处理器耦合,和/或知晓处理器是否处于任选的架构松弛的同步模式410。当处理经解码的存储器存取同步指令或控制信号时,存储器子系统可检查以观察处理器是否处于松弛的同步模式(例如,检查一个或多个架构位)。当处理器不处于松弛的同步模式时,存储器子系统可基本按常规处理这些经解码的存储器存取同步指令或控制信号,这在一些情况下可有助于实现或强化存储器存取同步。例如,从LFENCE指令解码的控制信号可使存储器子系统防护(fence)加载。
然而,在一些实施例中,当处理器处于松弛的同步模式时,存储器子系统可不同地且以松弛存储器存取同步的方式处理这些经解码的存储器存取同步指令或控制信号。完成此的特定方式通常将取决于用于实现同步的具体微架构方法。在本领域中熟练且从本公开受益的技术人员应当理解,本发明的范围不需要任何特定的方法。作为一个特定示例,存储器子系统可引退、终止、或丢弃这些经解码的存储器存取同步指令或控制信号,而不允许它们执行存储器存取同步。如所示的,在一些实施例中,一个或多个栅栏和/或屏障指令可从存储器子系统引退438。此外,在一些实施例中,一个或多个锁定指令可从存储器子系统引退439。在一些实施例中,存储器子系统可有效地将这些经解码的存储器存取同步指令处理为NOP。在一些实施例中,当处理器处于松弛的同步模式时,存储器子系统可有效地选择性地过滤这些经解码的存储器存取同步指令。经解码的存储器存取指令或控制信号可表现为通向存储器414的互连413上的信号或循环499,并且取决于处理器是否处于松弛的同步模式可以或可以不同步。
如前,不需要所有栅栏/屏障和/或锁定以松弛的方式处理。相反,在一些实施例中,至少一些存储器存取同步指令(例如,至少一种类型)可通过松弛的同步来处理。同步松弛的水平是灵活的,并且可在一个实施例和另一实施例之间变化,从而在保持变化水平的部分同步的情况下平衡改进性能和/或降低功率的目标。
如以上所提及的,在一些实施例中,使存储器存取的同步松弛可包括:将同步存储器存取指令(或指令集)转换成对应和/或模拟非同步存储器存取指令(或指令集)。例如,条件存储器存取指令可被转换成对应/模拟无条件存储器存取指令。
图5是在处理器处于松弛的同步模式时可操作用于将同步存储器存取指令(或指令集)解码成或以其他方式转换成对应和/或模拟非同步存储器存取指令(或指令集)的解码逻辑530的一个实施例的方框图。在一些实施例中,图5的解码逻辑可被包括在图1的处理器中,和/或可用于图2的方法中。替换地,图5的解码逻辑可被包括在类似或不同的处理器中,和/或可用于类似或不同的方法中。此外,图1的处理器和/或图2的方法可使用与图5类似或不同的逻辑。
解码器可接收同步存储器存取指令(或指令集)。如所示的,在一些实施例中,解码逻辑可与松弛的同步模式耦合和/或知悉松弛的同步模式。在一些实施例中,同步存储器存取指令可表示条件存储器存取指令,诸如举例而言,条件加载、条件存储等。在其他实施例中,同步存储器存取指令集可表示一对加载-链接和存储-条件(LL/SC)指令。这对加载-链接和存储-条件(LL/SC)指令在一些多线程架构中用于实现同步。加载-链接指令可用于读取存储器位置的当前值。如果从加载-链接指令起对该存储器位置尚未作出改变,则跟随加载-链接指令的存储-条件指令可将新值存储到该存储器位置。其他实施例涉及其他未锁定的原子读-修改-写指令/操作。在其他实施例中,同步存储器存取指令集可表示事务性同步扩展(TSX)或事务性存储器支持指令。然而,合适指令的其他示例包括比较和交换指令、双比较和交换指令、N比较和交换指令等。
当处理器未处于松弛的同步模式时,解码逻辑可基本按常规解码同步存储器存取指令(或指令集)。然而,在一些实施例中,当处理器处于松弛的同步模式时,解码逻辑可将同步存储器存取指令(或指令集)解码成或以其他方式转换成对应和/或模拟非同步存储器存取指令(或指令集)。例如,在一个实施例中,条件存储器存取指令(例如,条件加载或条件存储)可被转换成对应/模拟非条件存储器存取(例如,无条件加载或无条件存储)指令或控制信号。作为另一示例,锁定移动寄存器指令可被转换成移动寄存器指令。作为另一示例,在一个实施例中,一对加载-链接和存储-条件(LL/SC)指令可被转换成单一无条件存储指令或控制信号。在一方面,这可表示宏融合型转换。在另一实施例中,读-修改-写操作可被转换成更简单的写指令或控制信号。有利地,更复杂的同步指令可被转换成更简单的非同步指令或控制信号。
如前,不需要所有同步存储器存取指令(或指令集)被转换成对应和/或模拟非同步存储器存取指令(或指令集),但是至少一个可被转换。松弛水平是灵活的,并且可对特定实现进行定制。还应当理解,在其他实施例中,其他指令转换逻辑可用于转换这些指令,而不是解码器转换。合适指令转换逻辑的示例包括但不限于,指令仿真逻辑、指令翻译逻辑、指令变形逻辑、指令解释逻辑、以及其组合。
代码常常包括一种或多种不同类型的条件分支指令。条件分支指令可使执行的控制流在两个可能的方向之一上有条件地分支。这两个方向常常被称为“占用通道”和“未占用通道”。“未占用通道”通常通向正在执行的代码中的下一顺序指令,而“占用通道”通常跳过一个或多个中间指令或者或跨越一个或多个中间指令分支至非顺序分支目标指令。占用或不占用分支指令通常取决于对与该指令相关联的条件的评价(例如,是否满足条件)。
因特尔架构包括条件跳跃指令的大量合适示例。合适“如果满足条件则跳跃”的(jcc)指令的数个代表性示例包括但不限于:(a)若高于(进位标志=0且零标志=0)则短跳的指令(JA);(b)若进位(进位标志=1)则短跳的指令(JC);(c)若为0(零标志=1)则近跳的指令(JZ);(d)若非零(零标志=0)则短跳的指令(JNZ);(e)若小于或等于(进位标志=1或零标志=1)则近跳的指令(JBE);以及(f)若不大于(零标志=1或符号标志≠OF)则近跳的指令(JNG)。其他示例在其他架构中是已知的。
为了有助于改进性能,最现代的处理器具有分支预测器以有助于在已经确定了条件分支的实际方向之前预测条件分支的方向。通常,直到该条件实际上在流水线的后续级已进行了评价,条件分支的实际方向才最终是已知的。然而,分支预测器可采用分支预测机制或逻辑来预测条件分支的方向(例如,基于过去的历史)。这可有助于改进处理器性能。在没有分支预测器的情况下,处理器可能不得不在它可将附加指令提取到流水线中之前等待对与条件分支指令相关联的条件的评价。然而,分支预测器可通过预测条件分支的最可能的方向来有助于避免这些浪费的时间。然后,经预测的分支方向可用于提取附加指令并且推测性地执行这些指令。
最后,经预测的分支方向将被证实是正确的或者不正确的。如果经预测的分支方向被证实是正确的,则可利用推测性执行的指令的结果和/或状态。在此情况下,由于更多地利用了等待对条件分支的实际方向的评价时本来已经休眠或者至少未充分利用(underutilize)的流水线级,而通常增加处理器的性能和速度。然而,如果相反经预测的分支方向被证实是不正确的(例如,被分支预测器错误地预测),则通常将必需丢弃来自越过条件分支指令推测性执行的指令的任何结果和/或状态。流水线将常常被清除(flush)(丢弃当前在流水线中进行的指令),并且执行将重绕回错误地预测的条件分支且通过改变的当前正确知晓的分支方向重新开始。该结果通常是非期望的,因为它倾向于引起性能损失和能量损失。
图6是具有有条件地允许或不允许控制流前进到存储器存取指令和/或存储器存取同步指令651的条件分支指令650的代码的示例的方框图。条件分支指令具有“占用通道”和“未占用通道”。占用通道通向由条件分支指令指示的前向分支目标指令652。例如,条件分支指令可具有指示分支目标指令(例如,指定分支目标指令的偏移量)的变量或源操作数。未占用通道通向以程序次序顺序地跟随条件分支指令且在条件分支指令和分支目标指令之间的一组一个或多个指令。在一些实施例中,这些指令可包括存储器存取指令和/或存储器存取同步指令651。
图7是可操作用于预测条件分支指令以基于架构松弛的同步模式710强化或松弛存储器存取同步的分支预测器755的一个实施例的方框图。分支预测器可接收条件分支指令。在一些实施例中,条件分支指令可用于有条件地控制流传输到存储器存取指令和/或存储器存取同步指令中或者从存储器存取指令和/或存储器存取同步指令传输出来。分支预测器与架构松弛的同步模式710耦合。分支预测器可操作用于预测基于架构松弛的同步模式占用或不占用的条件分支指令。在一些实施例中,这可以完成以强化或松弛存储器存取同步。例如,当处于架构松弛的同步模式时,分支预测器可以松弛存储器存取同步的方式预测条件分支指令。替换地,当不处于架构松弛的同步模式时,分支预测器可以强化存储器存取同步的方式预测条件分支指令。
图8是一种配置处理器以使用松弛的存储器存取同步模式的方法860的一个实施例的方框流程图。在一些实施例中,方法860可由操作系统、应用、或者在处理器上运行的其他软件的指令和/或模块执行。在一些实施例中,图8的操作和/或方法可由图1的装置执行和/或在图1的装置内执行。本文中针对该装置所描述的组件、特征、以及具体的任选细节还任选地应用于在实施例中可由该装置执行和/或在该装置内执行的操作和/或方法。替换地,图8的操作和/或方法可由类似的或完全不同的装置执行,和/或在类似的或完全不同的装置内执行。此外,图1的装置可执行与图8相同、相似、或者完全不同的操作和/或方法。
该方法包括:在方框861,确定以允许多个逻辑处理器中的第一逻辑处理器在松弛的存储器存取同步模式中操作。在一些实施例中,可以确定在当前没有其他逻辑处理器正在存取第一逻辑处理器正在存取的存储器的部分时,允许第一逻辑处理器在松弛的存储器存取同步模式中操作。
该方法还包括:在方框862,修改一个或多个架构可视位(例如,在处理器的架构可视位寄存器中)以指示第一逻辑处理器被允许在松弛的存储器存取同步模式中操作。替换地,如果需要,则可任选地使用非架构位。在一些实施例中,当允许在松弛的存储器存取同步模式中操作时,第一逻辑处理器可操作用于防止存储器存取同步指令同步对共享存储器的存取(例如,当前只有第一逻辑处理器正在使用的先前共享存储器部分)。
示例性核架构、处理器、以及计算机架构
处理器核可以不同的方式、出于不同的目的、并且在不同的处理器中实现。举例而言,这些核的实现可包括:1)期望用于通用计算的通用有序核;2)期望用于通用计算的高性能通用无序核;3)期望主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括期望用于通用计算的一个或多个通用有序核和/或期望用于通用计算的一个或多个通用无序核的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示出处理器核990,该核990包括耦合到执行引擎单元950的前端单元930,并且两者耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替换核类型。作为另一选项,核990可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,该指令高速缓存单元934耦合到指令翻译后备缓冲器(TLB)936,该指令TLB936耦合到指令提取单元938,该指令提取单元938耦合到解码单元940。解码单元940(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括微代码ROM或者存储用于特定宏指令的微代码(例如,在解码单元940中或者在前端单元930内)的其他介质。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合到引退单元954的重命名/分配器单元952、以及一组一个或多个调度器单元956。调度器单元956表示任意数量的不同调度器,包括保留站、中央指令窗口等。调度器单元956耦合到物理寄存器文件单元958。每一物理寄存器文件单元958表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元958包括矢量寄存器单元、写掩码寄存器单元、以及标量寄存器单元。寄存器单元可提供架构矢量寄存器,矢量掩码寄存器、以及通用寄存器。物理寄存器文件单元958与引退单元954重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器、以及引退寄存器文件;使用寄存器地图和寄存器池等)的各种方式。引退单元954和物理寄存器文件单元958耦合到执行集群960。执行集群960包括一组一个或多个执行单元962以及一组一个或多个存储器存取单元964。执行单元962可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行这些操作。尽管一些实施例可包括专属于特定功能或功能集的大量执行单元,但是其他实施例可包括仅一个执行单元或者全部都执行所有功能的多个执行单元。调度器单元956、物理寄存器文件单元958、以及执行集群960被示为可能是多个单元,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元964的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,而其他流水线可以是有序发布/执行。
一组存储器存取单元964耦合到存储器单元970,该存储器单元970包括耦合到数据高速缓存单元974的数据TLB单元972,该数据高速缓存单元974耦合到第二级(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 Technologies的MIPS指令集、加利福尼亚州森尼维耳市的ARM holding的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核990包括逻辑以支持打包数据指令集扩展(例如,AVX1、AVX2),由此允许大量多媒体应用所使用的操作使用打包数据来执行。
应当理解,该核可支持多线程(执行两组或两组以上的平行操作或线程),并且可以包括分时多线程、同时多线程(其中单一物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时提取和解码以及此后诸如在Hyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元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或从L1高速缓存1006中读取,但是本发明的替换实施例可使用不同的方法(例如,使用单一寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信通道)。
L2高速缓存的本地子集1004是分成分离的本地子集(每一处理器核一个本地子集)的全局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允许断定所得矢量写。
具有集成存储器控制器和图形的处理器
图11是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器1100的方框图。图11中的实线框示出具有单一核1102A、系统代理1100、一组一个或多个总线控制器单元1116的处理器1100,而任选增加的虚线框示出具有多个核1102A-N、系统代理单元1100中的一组一个或多个集成存储器控制器单元1114、以及专用逻辑1108的替换处理器1100。
由此,处理器1100的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑1108、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1102A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核1102A-N的协处理器;以及3)具有作为大量通用有序核的核1102A-N的协处理器。由此,处理器1100可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1100可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1106、以及耦合到一组集成存储器控制器单元1114的外部存储器(未示出)。一组共享高速缓存单元1106可包括一个或多个中级高速缓存(诸如第二级(L2)、第三级(L3)、第四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1112使集成图形逻辑1108、一组共享高速缓存单元1106、以及系统代理单元1110/集成存储器控制器单元1114互连,但是替换实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元1106与核1102A-N之间维持一致性。
在一些实施例中,核1102A-H中的一个或多个核能够多线程。系统代理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、以及单一芯片中的具有IOH1250的控制器中枢1220。
附加处理器1215的任选本质在图12中用虚线指示。每一处理器1210、1215可包括本文中所描述的处理核中的一个或多个,并且可以是一些版本的处理器1100。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或者两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(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包括P-P接口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)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图13所示,各种I/O设备1314可与总线桥1318一起耦合到第一总线1316,该总线桥1318使第一总线1316耦合到第二总线1320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器之类的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。各种设备可耦合到第二总线1320,包括例如键盘和/或鼠标1322、通信设备1327、以及存储单元1328,诸如在一个实施例中可包括指令/代码和数据1330的盘驱动或者其他大容量存储设备。此外,音频I/O1324可耦合到第二总线1320。注意,其他架构是可能的。例如,代替图13的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图14,示出了根据本发明的一个实施例的第二更具体的示例性系统1400的方框图。图13和14中的相似元件具有相似的附图标记,并且图13的特定方面已经从图14中省略以避免混淆图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耦合到:包括一组一个或多个核202A-N和共享高速缓存单元1106的应用处理器1510;系统代理单元1110;总线控制器单元1116;集成存储器控制器单元1114;可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器的一组或者一个或多个协处理器1520;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及用于耦合到一个或多个外部显示器的显示单元1540。在一个实施例中,协处理器1520包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机制的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
诸如图13所示的代码1330之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以高级过程或面向对象的编程语言实现,以与处理系统进行通信。如果需要,程序代码则还可以汇编或机器语言实现。实际上,本文中所描述的机制在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,这些非瞬态有形排列包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或者包含设计数据的诸如硬件描述语言(HDL)之类的非瞬态有形机器可读介质,该非瞬态有形机器可读介质定义本文中所描述的结构、电路、装置、处理器和/或系统特征。这些实施例还可被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由核处理的一个或多个其他指令。指令转换器可以软件、硬件、固件、或者其组合实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
图16是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的方框图。在所示的实施例中,指令转换器是软件指令转换器,但是替换的指令转换器可以软件、固件、硬件、或者其各种组合实现。图16示出以高级语言1602的程序可使用x86编译器1604进行编译以生成x86二进制代码1606,该x86二进制代码1616可由具有至少一个x86指令集核1616的处理器在本机上执行。具有至少一个x86指令集核1616的处理器表示可通过兼容地执行或者以其他方式处理(1)因特尔x86指令集核的指令集的实质部分或者(2)以在具有至少一个x86指令集核的因特尔处理器上运行为目标的对象代码版本的应用或其他软件来执行与具有至少一个x86指令集核的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果的任何处理器。x86编译器1604表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核1606的处理器上执行的x86二进制代码1616(例如,对象代码)的编译器。类似地,图16示出以高级语言1602的程序可使用替换指令集编译器1608进行编译,以生成可由不具有至少一个x86指令集核1614的处理器(例如,具有执行加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集和/或执行加利福尼亚州森尼维耳市ARM Holdings的ARM指令集的核的处理器)在本机上执行的替换指令集二进制代码1610。指令转换器1612用于将x86二进制代码1606转换成可由不具有x86指令集核1614的处理器在本机上执行的代码。该经转换的代码不可能与替换指令集二进制代码1610相同,因为难以制作能够这样做的指令转换器;然而,经转换的代码将完成通常的操作并且由来自替换指令集的指令构成。由此,指令转换器1612表示通过仿真、模拟、或者任何其他处理允许处理器或者不具有x86指令集处理器或核的其他电子设备执行x86二进制代码1606的软件、固件、硬件、或者其组合。
针对图3-7中的任一图所描述的组件、特征、以及细节还可任选地用于图1-2中的任一图中。此外,本文中针对任一装置所描述的组件、特征、以及细节还可任选地用于本文中所描述的在实施例中可由这种装置和/或使用这种装置执行的任一方法中。
示例实施例
以下示例涉及进一步的实施例。这些示例中的特性可用于一个或多个实施例中的任何地方。
示例1是一种处理器。处理器包括多个逻辑处理器。处理器还包括多个中的第一逻辑处理器,第一逻辑处理器执行包括使对存储器的存取同步的存储器存取同步指令的软件。处理器还包括在处理器处于松弛的存储器存取同步模式时防止存储器存取同步指令同步对存储器的存取的存储器存取同步松弛逻辑。
示例2包括示例1的主题,并且任选地其中处理器具有指示处理器处于松弛的存储器存取同步模式的一个或多个架构可视位。
示例3包括示例2的主题,并且任选地其中一个或多个架构可视位可由软件存取,从而允许软件修改一个或多个架构可视位以指示处理器处于松弛的存储器存取同步模式。
示例4包括示例2的主题,并且任选地其中一个或多个架构可视位对应于存储器,并且还包括与第二不同存储器相对应的另一组一个或多个架构可视位。
示例5包括示例1-4中的任一个的主题,并且任选地其中存储器存取同步指令选自栅栏指令和屏障指令,并且其中存储器存取同步松弛逻辑包括将存储器存取同步指令转换成空操作(NOP)的逻辑。
示例6包括示例1-4中的任一个的主题,并且任选地其中存储器存取同步指令选自栅栏指令和屏障指令,并且其中存储器存取同步松弛逻辑包括省略执行栅栏操作和屏障操作中的对应一个操作的存储器子系统的逻辑。
示例7包括示例1-4中的任一个的主题,并且任选地其中存储器存取同步指令包括选自条件加载指令和条件存储指令的条件存储器存取指令,并且其中存储器存取同步松弛逻辑包括将条件存储器存取指令转换成对应的非条件存储器存取指令的逻辑。
示例8包括示例1-4中的任一个的主题,并且任选地其中存储器存取同步指令选自读-修改-写指令、比较和交换指令、测试和置位指令、以及一对加载-链接/存储-条件指令中的存储-条件指令,并且其中存储器存取同步松弛逻辑包括将存储器存取同步指令转换成选自存储和写的指令的逻辑。
示例9包括示例104中的任一个的主题,并且任选地其中存储器存取同步指令包括条件分支指令,并且其中存储器存取同步松弛逻辑包括在处理器处于松弛存储器存取同步模时使条件分支预测特定方式的分支预测器的逻辑。
示例10是一种处理器中的方法。该方法包括:提取多个逻辑处理器中的第一逻辑处理器的指令集。指令集包括使对存储器的存取同步的存储器存取同步指令。该方法还包括:在不考虑存储器存取同步指令的同步的情况下,从第一逻辑处理器存取存储器。
示例11包括示例10的主题,并且任选地还包括:通过检查指示处理器处于松弛的存储器存取同步模式的一个或多个架构可视位来确定处理器处于松弛的存储器存取同步模式。
示例12包括示例11的主题,并且任选地还包括:软件修改指示处理器处于松弛的存储器存取同步模式的一个或多个架构可视位。
示例13包括示例10的主题,并且任选地还包括:防止存储器存取同步指令同步对存储器的存取。
示例14包括示例10的主题,并且任选地其中提取包括:提取选自栅栏指令、屏障指令、以及锁定指令的存储器存取同步指令,并且还包括:将存储器存取同步指令转换成空操作(NOP)。
示例15包括示例10的主题,并且任选地其中存储器存取同步指令包括选自栅栏指令和屏障指令的指令,并且还包括:省略执行栅栏操作和屏障操作中的对应一个操作。
示例16包括示例10的主题,并且任选地其中提取包括:提取所述存储器存取同步指令,所述存储器存取同步指令是选自读-修改-写指令、比较和交换指令、测试和置位指令、以及一对加载-链接/存储-条件指令的存储-条件指令的指令,并且还包括:将条件存储器存取指令转换成选自存储和写的指令。
示例17包括示例10的主题,并且任选地其中提取包括:提取所述存储器存取同步指令,所述存储器存取同步指令是选自条件加载指令和条件存储指令的条件存储器存取指令,并且还包括:将条件存储器存取指令转换成对应非条件存储器存取指令。
示例18包括示例10的主题,并且任选地其中提取包括:提取作为条件分支指令的存储器存取同步指令,并且还包括:基于处理器处于松弛的存储器存取同步模式预测条件分支。
示例19是一种处理包括互连的指令的系统。该系统还包括与互连耦合的处理器。该系统还包括与互连耦合的动态随机存取存储器(DRAM)。DRAM存储在由机器执行时将使机器执行操作的指令。这些操作包括:确定以允许处理器的多个逻辑处理器中的第一逻辑处理器在松弛的存储器存取同步模式中操作。这些操作还包括:修改处理器的一个或多个架构可视位以指示第一逻辑处理器允许在松弛的存储器存取同步模式中操作。当允许在松弛的存储器存取同步模式中操作时,第一逻辑处理器防止存储器存取同步指令同步对存储器的存取。
示例20包括示例19的主题,并且任选地其中这些指令包括操作系统的指令。
示例21包括示例19-20中的任一个的主题,并且任选地其中,这些指令包括在其他逻辑处理器不存取第一逻辑处理器防止存储器存取同步指令同步对其存取的存储器时将使机器确定以允许第一逻辑处理器在松弛的存储器存取同步模式中操作的指令。
示例22是一种包括非瞬态机器可读存储介质的制品。非瞬态机器可读存储介质存储如果由机器执行将使机器执行操作的指令。这些操作包括:确定以允许机器的多个逻辑处理器中的第一逻辑处理器在松弛的存储器存取同步模式中操作。这些操作包括:修改机器的一个或多个架构可视位以指示允许第一逻辑处理器在松弛的存储器存取同步模式中操作。当允许在松弛的存储器存取同步模式中操作时,第一逻辑处理器防止存储器存取同步指令同步对存储器的存取。
示例23包括示例22的主题,并且任选地其中,这些指令包括在其他逻辑处理器不存取第一逻辑处理器防止存储器存取同步指令同步对其存取的存储器时,将使机器确定以允许第一逻辑处理器在松弛的存储器存取同步模式中操作的指令。
示例24包括示例22-23中的任一个的主题,并且任选地其中这些指令包括操作系统的指令。
示例25是一种处理器。该处理器包括:提取多个逻辑处理器中的第一逻辑处理器的指令集的提取单元。指令集包括同步对存储器的存取的存储器存取同步指令。处理器还包括用于防止存储器存取同步指令的存储器存取同步的手段。
示例26是一种装置。该装置包括:用于确定以允许机器的多个逻辑处理器中的第一逻辑处理器在松弛的存储器存取同步模式中操作的手段。该装置还包括:用于修改机器的一个或多个架构可视位以指示允许第一逻辑处理器在松弛的存储器存取同步模式中操作的手段。当允许在松弛的存储器存取同步模式中操作时,第一逻辑处理器防止存储器存取同步指令同步对存储器的存取。
示例27是一种执行示例10-18中的任一个的方法的装置。
示例28是一种包括用于执行示例10-18中的任一个的方法的手段的装置。
示例29是一种执行基本如本文中所描述的方法的装置。
示例30是一种包括用于执行基本如本文中所描述的方法的手段的装置。
在该描述和权利要求中,可能使用了术语“耦合”和/或“连接”、以及其派生词。应当理解,这些术语不旨在作为彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或两个以上元件彼此直接物理或电接触。“耦合”可意味着两个或两个以上元件直接物理或电接触。然而,“耦合”还可意味着两个或两个以上元件彼此不直接接触,但是仍然彼此协同操作或交互。例如,组件可通过一个或多个中间组件耦合在一起。在附图中,箭头用于示出连接和耦合。
在该描述和权利要求中,可能使用了术语“逻辑”。如本文中所使用的,逻辑可包括诸如硬件、固件、软件、或者其组合之类的模块。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在一些实施例中,硬件逻辑可包括可能与其他电路组件一起的晶体管和/或门。
可能使用了术语“和/或”。如本文中所使用的,使用“和/或”意味着一个、或者另一个、或者两者(例如,A和/或B意味着A、或者B、或者A和B)。
在以上描述中,出于解释的目的,为了提供对本发明的实施例的透彻理解,阐述了大量具体的细节。然而,可在没有这些具体细节中的一些的情况下实践一个或多个其他实施例,对本领域技术人员而言将是显而易见。所述的特定实施例不提供用于限制本发明,但是用于贯穿示例实施例图示本发明。本发明的范围不是由具体示例确定,而是仅由权利要求确定。在其他实例中,以方块图的形式或者在没有细节的情况下,示出了公知电路、结构、设备、以及操作,以避免混淆对该描述的理解。
在适当考虑的情况下,在附图中重复了附图标记或者附图标记的端部,以指示可任选地具有类似或相同特性的对应或模拟元件,除非另外指定或清楚地指明。在描述了多个组件的一些情况下,它们可被结合到单一组件中。在描述了单一组件的其他情况下,它可被分割成多个组件。
描述了各种操作和方法。在流程图中以相对基础的形式描述了这些方法中的一些方法,但是操作可被任选地增加到这些方法和/或从这些方法移除。另外,尽管流程图示出根据示例实施例的操作的特定次序,但是特定次序是示例性的。替换实施例可任选地以不同的次序执行操作,组合特定操作,重叠特定操作等。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以可由机器读取的形式提供(例如,存储)信息的机构。机器可读介质可提供一个或多个指令或者在其上存储了一个或多个指令,这些指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或导致机器执行本文中所公开的一种或多种操作、方法、或技术。
在一些实施例中,机器可读介质可包括有形和/或非瞬态机器可读存储介质。例如,有形和/或非瞬态机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁电-光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储设备、非易失性存储器、非易失性数据存储设备、非瞬态存储器、非瞬态数据存储设备等。非瞬态机器可读存储介质并非由瞬态传播信号组成。在另一实施例中,机器可读介质可包括瞬态机器可读通信介质,例如电、光、声、或者其他形式的传播信号,诸如载波、红外信号、数字信号等。
合适机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适机器的其他示例包括计算设备、以及结合这些处理器、指令处理装置、数字逻辑电路、或集成电路的其他电子设备。这些技术设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒、以及视频游戏控制器。
还应当理解,例如贯穿本说明书对“一个实施例”、“一实施例”、或者“一个或多个实施例”的引用意味着特定特征可被包括在本发明的实践中。类似地,应当理解,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、以及其描述中。然而,公开的该方法不被解释为反映本发明需要多于在每一权利要求中明确叙述的特征的意图。相反,如所附权利要求反映的,发明性方面可在于少于单一公开的实施例的所有特征。因此,该详细描述之后的权利要求由此被明确地结合到该详细描述中,其中,每一权利要求本身代表本发明的单独实施例。
Claims (15)
1.一种处理器,包括:
多个逻辑处理器;
所述多个逻辑处理器中的第一逻辑处理器,所述第一逻辑处理器用于执行包括用于使对存储器的至少一部分的存取同步的存储器存取同步指令的软件,其中所述存储器存取同步指令包括条件存储器存取指令,所述条件存储器存取指令是条件加载指令和条件存储指令中的一者;
存储器存取同步松弛逻辑单元,用于:在所述处理器处于架构松弛的存储器存取同步模式时,防止所述存储器存取同步指令同步对所述存储器的所述至少一部分的存取,其中所述存储器存取同步松弛逻辑单元用于将所述条件存储器存取指令转换成对应的非条件存储器存取指令。
2.如权利要求1所述的处理器,其特征在于,所述处理器具有用于指示所述处理器处于所述松弛的存储器存取同步模式的一个或多个架构可视位。
3.如权利要求2所述的处理器,其特征在于,所述一个或多个架构可视位能够由软件存取,从而允许所述软件修改用于指示所述处理器处于所述松弛的存储器存取同步模式的所述一个或多个架构可视位。
4.如权利要求2所述的处理器,其特征在于,所述一个或多个架构可视位对应于所述存储器的所述至少一部分,并且还包括与所述存储器的第二不同部分相对应的另一组一个或多个架构可视位。
5.一种处理器,包括:
多个逻辑处理器;
所述多个逻辑处理器中的第一逻辑处理器,所述第一逻辑处理器用于执行包括用于使对存储器的至少一部分的存取同步的存储器存取同步指令的软件,其中,所述存储器存取同步指令是读-修改-写指令、比较和交换指令、测试和置位指令、以及一对加载-链接/存储-条件指令中的存储-条件指令中的一个;以及
存储器存取同步松弛逻辑单元,用于在所述处理器处于架构松弛的存储器存取同步模式时防止所述存储器存取同步指令同步对所述存储器的所述至少一部分的存取,其中所述存储器存取同步松弛逻辑单元用于将所述存储器存取同步指令转换成作为存储和写中的一个的指令。
6.一种处理器中的方法,包括:
提取多个逻辑处理器中的第一逻辑处理器的指令集,所述指令集包括用于使对存储器的至少一部分的存取同步的存储器存取同步指令,其中所述存储器存取同步指令是选自条件加载指令和条件存储指令的条件存储器存取指令;
将所述条件存储器存取指令转换成对应的非条件存储器存取指令;
在不考虑所述存储器存取同步指令的同步的情况下,从所述第一逻辑处理器存取所述存储器的所述至少一部分。
7.如权利要求6所述的方法,还包括:通过检查指示所述处理器处于松弛的存储器存取同步模式的一个或多个架构可视位来确定所述处理器处于所述松弛的存储器存取同步模式。
8.如权利要求7所述的方法,还包括:软件修改用于指示所述处理器处于所述架构松弛的存储器存取同步模式的所述一个或多个架构可视位。
9.如权利要求6所述的方法,还包括:防止所述存储器存取同步指令同步对所述存储器的所述至少一部分的所述存取。
10.一种处理器中的方法,包括:
提取用于多个逻辑处理器中的第一逻辑处理器的指令集,所述指令集包括用于使对存储器的至少一部分的存取同步的存储器存取同步指令,其中所述存储器存取同步指令是读-修改-写指令、比较和交换指令、测试和置位指令、以及一对加载-链接/存储-条件指令的存储-条件指令中的一个;
将所述条件存储器存取指令转换成作为存储和写中的一个的指令;以及
在不考虑所述存储器存取同步指令的同步的情况下,从所述第一逻辑处理器存取所述存储器的所述至少一部分。
11.一种处理指令的系统,包括:
互连;
处理器,与所述互连耦合;以及
动态随机存取存储器DRAM,与所述互连耦合,所述DRAM用于存储指令,
其中,所述处理器包括:
多个逻辑处理器;以及
一个或多个架构可视位,用于指示架构松弛的存储器存取同步模式,
其中所述处理器响应于所述指令,用于:
在其他逻辑处理器不存取所述多个逻辑处理器中的第一逻辑处理器防止存储器存取同步指令同步对其存取的存储器时,确定以允许所述第一逻辑处理器在所述架构松弛的存储器存取同步模式中操作;以及
修改所述一个或多个架构可视位以指示所述第一逻辑处理器被允许在所述架构松弛的存储器存取同步模式中操作,
其中,当被允许在所述架构松弛的存储器存取同步模式中操作时,所述第一逻辑处理器用于防止存储器存取同步指令同步对存储器的至少一部分的存取。
12.如权利要求11所述的系统,其特征在于,所述指令包括操作系统的指令。
13.一种处理器,包括:
多个逻辑处理器;以及
一个或多个架构可视位,用于指示架构松弛的存储器存取同步模式,
其中所述处理器用于:在其他逻辑处理器不存取所述多个逻辑处理器中的第一逻辑处理器防止存储器存取同步指令同步对其存取的所述存储器时,确定以允许所述第一逻辑处理器在所述架构松弛的存储器存取同步模式中操作;以及修改所述一个或多个架构可视位以指示所述第一逻辑处理器被允许在所述架构松弛的存储器存取同步模式中操作,
其中,当被允许在所述松弛的存储器存取同步模式中操作时,所述第一逻辑处理器用于防止存储器存取同步指令同步对存储器的至少一部分的存取。
14.一种机器可读介质,包括存储于其上的多条指令,所述多条指令当被执行时使计算设备执行如权利要求6-10中的任一项所述的方法。
15.一种计算设备,包括用于执行如权利要求6-10中的任一项所述的方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/844,729 | 2013-03-15 | ||
US13/844,729 US9304940B2 (en) | 2013-03-15 | 2013-03-15 | Processors, methods, and systems to relax synchronization of accesses to shared memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050026A CN104050026A (zh) | 2014-09-17 |
CN104050026B true CN104050026B (zh) | 2018-10-23 |
Family
ID=50482493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410097357.6A Active CN104050026B (zh) | 2013-03-15 | 2014-03-17 | 使对共享存储器存取的同步松弛的处理器、方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9304940B2 (zh) |
JP (2) | JP6006247B2 (zh) |
KR (1) | KR101594090B1 (zh) |
CN (1) | CN104050026B (zh) |
BR (1) | BR102014006021A2 (zh) |
DE (1) | DE102014003671A1 (zh) |
GB (2) | GB2512478B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9304940B2 (en) | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
US9756128B2 (en) * | 2013-04-17 | 2017-09-05 | Apeiron Data Systems | Switched direct attached shared storage architecture |
US10452316B2 (en) | 2013-04-17 | 2019-10-22 | Apeiron Data Systems | Switched direct attached shared storage architecture |
GB2529899B (en) * | 2014-09-08 | 2021-06-23 | Advanced Risc Mach Ltd | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
US10489158B2 (en) * | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US20160378480A1 (en) * | 2015-06-27 | 2016-12-29 | Pavel G. Matveyev | Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations |
US10074151B2 (en) * | 2015-09-30 | 2018-09-11 | Intel Corporation | Dense optical flow acceleration |
JP6146508B1 (ja) | 2016-03-31 | 2017-06-14 | 日本電気株式会社 | 同期処理ユニット、デバイス、システムおよび方法 |
US10223002B2 (en) * | 2017-02-08 | 2019-03-05 | Arm Limited | Compare-and-swap transaction |
US10552131B2 (en) * | 2017-10-16 | 2020-02-04 | Microsoft Technology Licensing, Llc | Barrier reduction during code translation |
GB2572578B (en) * | 2018-04-04 | 2020-09-16 | Advanced Risc Mach Ltd | Cache annotations to indicate specultative side-channel condition |
JP7064134B2 (ja) * | 2018-05-11 | 2022-05-10 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP7064135B2 (ja) * | 2018-05-15 | 2022-05-10 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10831500B2 (en) | 2018-06-10 | 2020-11-10 | International Business Machines Corporation | Adaptive locking in elastic threading systems |
US11068612B2 (en) * | 2018-08-01 | 2021-07-20 | International Business Machines Corporation | Microarchitectural techniques to mitigate cache-based data security vulnerabilities |
US10956166B2 (en) * | 2019-03-08 | 2021-03-23 | Arm Limited | Instruction ordering |
CN110147253B (zh) * | 2019-05-16 | 2020-10-20 | 湖南毂梁微电子有限公司 | 一种基于延迟栅栏同步操作指令的多核处理器同步方法 |
US20220019514A1 (en) * | 2020-07-14 | 2022-01-20 | Ronghui Gu | Systems, methods, and media for proving the correctness of software on relaxed memory hardware |
US11249766B1 (en) * | 2020-09-14 | 2022-02-15 | Apple Inc. | Coprocessor synchronizing instruction suppression |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484169A (zh) * | 2002-06-19 | 2004-03-24 | 阿尔卡塔尔加拿大公司 | 有共享程序存储器的多处理器计算设备 |
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2230119B (en) | 1989-04-07 | 1993-04-21 | Intel Corp | Conditional execution speed-up on synchronizing instructions |
JP3038781B2 (ja) * | 1989-04-21 | 2000-05-08 | 日本電気株式会社 | メモリアクセス制御回路 |
US6065086A (en) | 1998-02-17 | 2000-05-16 | International Business Machines Corporation | Demand based sync bus operation |
JPH11259437A (ja) | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
JP2938056B1 (ja) | 1998-08-12 | 1999-08-23 | 甲府日本電気株式会社 | マルチホストシステムおよびホストコンピュータ間命令制御方法 |
JP3641997B2 (ja) | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
JP4915038B2 (ja) | 2001-08-08 | 2012-04-11 | コニカミノルタホールディングス株式会社 | インクジェット記録方法 |
JP2006185232A (ja) | 2004-12-28 | 2006-07-13 | Hitachi Ltd | 複数のプログラムの実行方法、プログラム変換方法及びこれを用いたコンパイラプログラム |
US20070143755A1 (en) | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
JP4148528B2 (ja) | 2006-10-31 | 2008-09-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 排他制御を効率化する技術 |
US20080109604A1 (en) * | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Systems and methods for remote direct memory access to processor caches for RDMA reads and writes |
US20080307422A1 (en) * | 2007-06-08 | 2008-12-11 | Kurland Aaron S | Shared memory for multi-core processors |
US8131951B2 (en) * | 2008-05-30 | 2012-03-06 | Freescale Semiconductor, Inc. | Utilization of a store buffer for error recovery on a store allocation cache miss |
JP5270268B2 (ja) | 2008-09-05 | 2013-08-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体 |
US8412889B2 (en) * | 2008-10-16 | 2013-04-02 | Microsoft Corporation | Low-level conditional synchronization support |
JP5088754B2 (ja) | 2009-12-18 | 2012-12-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | システム、方法、プログラムおよびコード生成装置 |
US9069545B2 (en) | 2011-07-18 | 2015-06-30 | International Business Machines Corporation | Relaxation of synchronization for iterative convergent computations |
US8607247B2 (en) | 2011-11-03 | 2013-12-10 | Advanced Micro Devices, Inc. | Method and system for workitem synchronization |
US20140281429A1 (en) * | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9304940B2 (en) | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
-
2013
- 2013-03-15 US US13/844,729 patent/US9304940B2/en active Active
-
2014
- 2014-02-18 JP JP2014028277A patent/JP6006247B2/ja active Active
- 2014-02-20 GB GB1402964.9A patent/GB2512478B/en not_active Expired - Fee Related
- 2014-02-20 GB GB1709375.8A patent/GB2548511B/en not_active Expired - Fee Related
- 2014-03-13 KR KR1020140029403A patent/KR101594090B1/ko active IP Right Grant
- 2014-03-14 BR BR102014006021A patent/BR102014006021A2/pt active Search and Examination
- 2014-03-14 DE DE102014003671.5A patent/DE102014003671A1/de active Pending
- 2014-03-17 CN CN201410097357.6A patent/CN104050026B/zh active Active
-
2016
- 2016-04-04 US US15/089,883 patent/US10235175B2/en active Active
- 2016-09-08 JP JP2016175998A patent/JP6526609B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
CN1484169A (zh) * | 2002-06-19 | 2004-03-24 | 阿尔卡塔尔加拿大公司 | 有共享程序存储器的多处理器计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104050026A (zh) | 2014-09-17 |
US20140281196A1 (en) | 2014-09-18 |
JP6526609B2 (ja) | 2019-06-05 |
KR20140113444A (ko) | 2014-09-24 |
US9304940B2 (en) | 2016-04-05 |
JP2014182795A (ja) | 2014-09-29 |
BR102014006021A2 (pt) | 2015-10-20 |
GB201709375D0 (en) | 2017-07-26 |
US10235175B2 (en) | 2019-03-19 |
GB2512478A (en) | 2014-10-01 |
JP6006247B2 (ja) | 2016-10-12 |
US20160216967A1 (en) | 2016-07-28 |
GB2548511B (en) | 2018-01-17 |
GB201402964D0 (en) | 2014-04-09 |
GB2548511A (en) | 2017-09-20 |
DE102014003671A1 (de) | 2014-09-18 |
KR101594090B1 (ko) | 2016-02-15 |
GB2512478B (en) | 2017-08-30 |
JP2016207232A (ja) | 2016-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050026B (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
CN104503830B (zh) | 用于引导异构系统并呈现对称核视图的方法 | |
TWI742048B (zh) | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN105786665B (zh) | 用于测试事务性执行状态的系统 | |
CN108027769A (zh) | 使用寄存器访问指令发起指令块执行 | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
CN108027767A (zh) | 寄存器读取/写入排序 | |
CN107408036A (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
RU2628156C2 (ru) | Системы и способы отслеживания флага в операциях устранения перемещения | |
WO2017223006A1 (en) | Load-store queue for multiple processor cores | |
CN109313556A (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和系统 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
JP6306729B2 (ja) | ストアをソート及びリタイアする命令及びロジック | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN105247479B (zh) | 指令次序实施指令对、处理器、方法和系统 | |
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
CN107918546A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN109508206A (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN109478140A (zh) | 基于块的处理器中的加载-存储顺序 | |
TW201712529A (zh) | 持續確定處理器、方法、系統及指令 | |
CN109313607A (zh) | 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令 | |
CN103946797B (zh) | 用于转换矢量指令的系统、装置和方法 | |
CN108701027A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |