CN101790719A - 低开销/省电处理器同步机制及其应用 - Google Patents

低开销/省电处理器同步机制及其应用 Download PDF

Info

Publication number
CN101790719A
CN101790719A CN200880104604A CN200880104604A CN101790719A CN 101790719 A CN101790719 A CN 101790719A CN 200880104604 A CN200880104604 A CN 200880104604A CN 200880104604 A CN200880104604 A CN 200880104604A CN 101790719 A CN101790719 A CN 101790719A
Authority
CN
China
Prior art keywords
register
instruction
value
processor
load
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.)
Pending
Application number
CN200880104604A
Other languages
English (en)
Inventor
N·J·斯蒂芬斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MIPS Tech LLC
Original Assignee
MIPS Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN101790719A publication Critical patent/CN101790719A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本发明提供了低开销/省电处理器同步机制及其应用。在一个实施例中,本发明提供了一种具有链接加载寄存器的处理器并且执行与链接加载寄存器有关的指令。第一指令使得处理器将由第一指令指定的第一值加载到寄存器文件的第一寄存器内并且将第二值加载到链接加载寄存器内。第二指令使得处理器在链接加载寄存器内的第二值未被改变的情况下暂停与链接加载寄存器关联的指令流的执行,直到链接加载寄存器内的第二值被改变。第三指令使得处理器有条件地将第三值移动到由第三指令指定的存储器位置并且将表示链接加载寄存器的状态的值移动到第三寄存器。

Description

低开销/省电处理器同步机制及其应用
技术领域
本发明一般涉及处理器。更具体地讲,本发明涉及处理器同步机制。
背景技术
在计算机科学中,测试并置位指令(test-and-set instruction)被频繁用于实现例如互斥锁和信号量的同步原语。测试置位指令是作为单个不可中断或原子操作的一部分的、进行测试并有条件写入存储器位置的指令。
短活锁通常实现为自旋锁。自旋锁是例如包含测试并置位指令的指令循环。重复执行该指令循环,直到测试并置位指令例如通过原子地将存储器中的一个字从表示未锁定的值0改变成表示锁定的值1,而能够成功修改存储器中表示锁的状态的字。
尽管例如自旋锁的常规同步原语在对称多处理环境(例如,由于在获取锁之前处理器无其它事可做)下使用时是高效的,但是在通过单个管道对几个线程进行多路复用的多线程处理器中就不是这种情况。在多线程处理器中,等待锁的自旋线程浪费了能够由其它线程使用的处理周期,并且很可能增加直到释放所需的锁的时间。
需要克服上述缺陷的新的同步机制。
发明内容
本发明提供了一种低开销/省电处理器同步机制及其应用。在一个实施例中,本发明包括一种具有至少一个寄存器文件和至少一个链接加载寄存器的处理器。该处理器执行与链接加载寄存器有关的指令。第一指令当被处理器执行时,使处理器将来自由第一指令指定的存储器位置的第一值加载到寄存器文件的第一寄存器内并且同时将第二值加载到链接加载寄存器内。第二指令当被处理器执行时,使处理器暂停执行与链接加载寄存器关联的指令流,直到链接加载寄存器内的第二值被改变。第三指令当被处理器执行时,使处理器在自第一指令的执行开始链接加载寄存器内的第二值尚未改变的情况下有条件地将存储在第三寄存器(其可以与第一寄存器相同)内的第三值移动到由第三指令指定的存储器位置,并且无条件地将存储在链接加载寄存器内的值复制到第三寄存器。链接加载寄存器内的值将根据多个事件而改变,这些事件例如包括由系统中的任何处理器在由第一指令指定的存储器位置附近对存储器的任何写操作。
在下文中参照附图详细描述本发明的另外实施例、特征和优点以及本发明的各个实施例的结构和操作。
附图说明
包括在这里并且形成说明书的一部分的附图例示了本发明,并且与描述一起进一步用来解释本发明的原理并且使得相关领域的技术人员能够完成并使用本发明。
图1A是根据本发明的实施例的处理器的图。
图1B是示出了根据本发明的实施例的多线程处理器的一部分的图。
图2是根据本发明的实施例的处理器执行的第一指令的图。
图3是根据本发明的实施例的处理器执行的第二指令的图。
图4是根据本发明的实施例的处理器执行的第三指令的图。
图5是根据本发明的实施例的示例方法的流程图。
图6是根据本发明的实施例的示例系统的图。
参照附图描述本发明。其中首次出现元件的附图通常由对应参考标号中的最左侧一个数字或多个数字指示。
具体实施方式
本发明提供了一种低开销/省电处理器同步机制及其应用。在后面的本发明的详细说明中,提及的“一个实施例”、“实施例”、“示例实施例”等指示描述的实施例可以包括特定特征、结构或特性,但是每一个实施例不是必须要包括该特定特征、结构或特性。此外,这些短语不一定是指同一实施例。另外,当结合一个实施例来描述特定特征、结构或特性时,不管是否进行了明确说明,结合其它实施例实现这种特征、结构或特性是在本领域技术人员的知识范围内的。
在一个实施例中,本发明提供了一种具有至少一个寄存器文件和至少一个链接加载寄存器的处理器。该处理器执行与链接加载寄存器有关的指令。第一指令当被处理器执行时,使处理器将由第一指令指定的第一值加载到寄存器文件的第一寄存器内并且将第二值加载到链接加载寄存器内。第二指令当被处理器执行时,使处理器暂停执行与链接加载寄存器关联的指令流,直到链接加载寄存器内的第二值被改变。第三指令当被处理器执行时,使处理器在自第一指令的执行开始链接加载寄存器内的第二值尚未改变的情况下有条件地将存储在第三寄存器内的第三值移动到由第三指令指定的存储器位置,并且无条件地将存储在链接加载寄存器内的值复制到第三寄存器。
图1A是能够实现本发明的实施例的示例性处理器100的图。如图1A所示,处理器100包括执行单元102、取指单元104、线程控制单元105(例如,在多线程处理器的情况下)、浮点单元106、加载/存储单元108、存储器管理单元(MMU)110、指令缓存器112、数据缓存器114、总线接口单元116、功率管理单元118、乘除单元(MDU)120、和协处理器122。尽管处理器100在此被描述为包括多个分离的组件,但是这些组件中的许多组件是不会在本发明的每一个实施例中均存在的可选组件,或者是例如通过组合而使得两个组件的功能位于单个组件内的组件。因此,图1A所示的各个组件是例示性的,并非意图限制本发明。
执行单元102优选实现具有算术逻辑单元运算(例如,逻辑、移位、加法、减法等)的加载-存储、精简指令集计算机(RISC)架构。在一个实施例中,执行单元102具有至少一个寄存器文件103,该寄存器文件103包括用于标量整数运算和地址计算的多个32位通用寄存器(未示出)。例如在多线程处理器以及/或者例如在中断和/或异常处理期间使环境切换(context switching)开销最小化的情况下,能够包括一个或多个附加寄存器文件。执行单元102与取指单元104、浮点单元106、加载/存储单元108、乘除单元120和协处理器122对接。
取指单元104负责向线程控制单元105(例如,在多线程处理器的情况下)和/或执行单元102提供指令。在一个实施例中,取指单元104包括用于指令缓存器112的控制逻辑、用于对压缩格式指令进行重新编码的重新编码器、动态分支预测逻辑、指令缓冲器、和与便笺式存储器(scratch pad)(未示出)的接口。取指单元104与线程控制单元105或执行单元102、存储器管理单元110、指令缓存器112以及总线接口单元116对接。
线程控制单元105存在于多线程处理器内,用于对指令线程进行调度。在一个实施例中,线程控制单元105包括策略管理器,该策略管理器确保处理器资源由多个执行线程共享。线程控制单元105与执行单元102和取指单元104对接。
浮点单元106与执行单元102对接并且对非整数数据进行运算。由于许多应用不需要浮点单元的功能,所以在本发明的一些实施例中不需要处理器100的这个组件。
加载/存储单元108负责进行数据加载和存储,并且包括数据缓存器控制逻辑。加载/存储单元108与数据缓存器114和诸如便笺式存储器和/或填充缓冲器的其它存储器对接。加载/存储单元108还与存储器管理单元110和总线接口单元116对接。
存储器管理单元110将虚拟地址转换成用于存储器访问的物理地址。在一个实施例中,存储器管理单元110包括转换后备缓冲器(translation lookaside buffer,TLB),并且可以包括单独的指令TLB和单独的数据TLB。存储器管理单元110与取指单元104以及加载/存储单元108对接。
指令缓存器112是被组织为多路组相联缓存器(例如,2路组相联缓存器或4路组相联缓存器)的片上存储器阵列。优选地对指令缓存器112进行虚拟索引和物理标记,从而可以与缓存器访问并行地进行虚拟至物理地址转换。在一个实施例中,这些标记除了包括物理地址比特以外,还包括有效比特和可选的奇偶校验比特。指令缓存器112与取指单元104对接。
数据缓存器114也是片上存储器阵列。优选地对数据缓存器114进行虚拟索引和物理标记。在一个实施例中,这些标记除了包括物理地址比特以外,还包括有效比特和可选的奇偶校验比特。在本发明的实施例中,数据缓存器114能够被选择性地启用和禁用,以降低由处理器100消耗的总功率。数据缓存器114与加载/存储单元108对接。
总线接口单元116控制处理器100的外部接口信号。在一个实施例中,总线接口单元116包括折叠式(collapsing)写缓冲器,该折叠式写缓冲器用于合并直写式事务并且聚集来自非缓存存储的写入。
功率管理单元118提供多个功率管理特征,包括低功率设计特征、活动功率管理特征、以及操作的掉电(power-down)模式。
乘除单元120执行处理器100的乘除运算。在一个实施例中,乘除单元120优选包括管道式乘法器、结果与累积寄存器、乘除状态机、以及例如执行乘法、乘加和除法功能所需的所有控制逻辑。如图1A所示,乘除单元120与执行单元102对接。
协处理器122执行处理器100的各种开销功能。在一个实施例中,协处理器122负责进行虚拟至物理地址转换、执行缓存协议、异常处理、操作模式选择以及启用/禁用中断功能。在一个实施例中,协处理器122包括至少一个链接加载(L-L)寄存器123。链接加载寄存器123可以是单比特寄存器或者多比特寄存器。在一个实施例中,链接加载寄存器123是触发器。在一个实施例中,链接加载寄存器123是两比特寄存器。在一个实施例中,对于每个程序线程(例如,在多线程处理器的情况下),有一个链接加载寄存器和/或一个链接加载比特。在本发明的实施例中,链接加载寄存器123不需要被实施为协处理器122的一部分。例如,一个或多个链接加载寄存器123可被实施为线程控制单元105的一部分。在实施例中,链接加载寄存器可被实施为加载/存储单元或数据缓存器的一部分。协处理器122与执行单元102对接。
图1B是示出了根据本发明的实施例的多线程处理器的一部分的图。如图1B所示,在一个实施例中,根据本发明的多线程处理器具有多个寄存器文件103a到103n和协处理器122,协处理器122包括每线程(或线程环境(thread context,TC))寄存器、每虚拟处理元件(VPE)寄存器、和每处理器寄存器。
在一个实施例中,处理器能够并发执行的每个线程具有它自身关联的寄存器文件103。此外,每个线程具有它自身关联的线程寄存器130,所述线程寄存器130是协处理器122的一部分。在一个实施例中,这些每线程寄存器包括链接加载(L-L)寄存器123a到123n。在一个实施例中,每个线程还具有它自身关联的程序计数器寄存器(未示出),该程序计数器寄存器用于保持要执行的线程的下一个指令的存储器地址。在一个实施例中,每个线程还具有它自身的乘除单元结果与累积器寄存器。
除了每线程寄存器以外,在一个实施例中,协处理器122包括由一个或多个线程共享的寄存器。所述一个或多个线程的这些被共享的寄存器与每线程寄存器以及所需的其它资源形成虚拟处理元件(VPE)。根据本发明的多线程处理器可以具有一个或多个虚拟处理元件。处理器的每个虚拟处理元件对于软件而言看起来是一个单独的处理器(例如,具有两个虚拟处理元件的多线程处理器对于软件而言看起来与在对称多处理系统内共享存储器的两个分立处理器几乎相同)。在图1B中,寄存器132与第一虚拟处理元件(VPE-0)关联。寄存器134与第二虚拟处理元件(VPE-1)关联。
在一个实施例中,协处理器122还包括共享寄存器136。在一个实施例中,共享寄存器136是例如提供处理器资源的清单(例如,能够并发执行多少个线程、实现了多少个虚拟处理元件等)的寄存器。
如图1B所示,存储在协处理器122的寄存器中的信息能够被传送至执行单元102和/或线程控制单元105。以这种方式,线程控制单元105的策略管理器例如知道存储在协处理器122的每个链接加载寄存器123内的值。如这里所述,存储在链接加载寄存器中的值能够用于暂停执行与链接加载寄存器关联的线程。在一个实施例中,通过利用存储在关联的链接加载寄存器中的值启用和/或禁用属于关联线程的指令的取回和/或执行,来暂停该关联线程。当链接加载寄存器内的值变化时,该值被立即传送至例如线程控制单元105。线程控制单元105能够利用这个变化来恢复特定线程的执行。
在一个实施例中,链接加载寄存器123是每虚拟处理元件寄存器,而非每线程寄存器。
图2是由根据本发明的实施例的处理器执行的指令200的图。如图2所示,指令200包括opcode(操作码)202、基地址寄存器标识符204、目的地寄存器标识符206、和地址偏移值208。在一个实施例中,指令200包括如图2所示分配的32比特。
当被例如处理器100的处理器执行时,指令200使处理器将存储在由指令200的基地址寄存器标识符204和地址偏移值208指定的存储器位置处的字的内容移动到由指令200的目的地寄存器标识符206指定的寄存器文件103的一个寄存器。在一个实施例中,通过对地址偏移值208进行符号扩展并且将它加到由基地址寄存器标识符204指定的寄存器的内容,形成了所述存储器位置的地址。在一个实施例中,通过执行指令200还使得值1被存储在根据本发明的链接加载寄存器中。在MIPS指令集架构中,指令200被称作链接加载(load-linked,LL)指令。
如图2所示,在一个实施例中,利用处理器100执行指令200使得存储在数据缓存器114中的n比特值(其中n是2的幂)被加载到寄存器文件103的一个寄存器中。此外,值1被加载到链接加载寄存器123中。
图3是由根据本发明的实施例的处理器执行的指令300的图。如图3所示,指令300包括opcode 302、基地址寄存器标识符304、源寄存器标识符306、和地址偏移值308。在一个实施例中,指令300包括如图3所示分配的32比特。
当被例如处理器100的处理器执行时,指令300使处理器在值1位于链接加载寄存器内的情况下有条件地将由指令300的源寄存器标识符306指定的寄存器文件103的寄存器的内容移动至由指令300的基地址寄存器标识符304和地址偏移值308指定的存储器位置。在一个实施例中,通过对地址偏移值308进行符号扩展并且将它加到由基地址寄存器标识符304指定的寄存器的内容,形成了所述存储器位置的地址。此外,执行指令300使得存储在链接加载寄存器中的值被无条件地进行零扩展并被存储在由指令300的源寄存器标识符306指定的寄存器文件的寄存器内。在MIPS指令集架构中,指令300被称作条件存储(storeconditional,SC)指令。
如图3所示,在一个实施例中,利用处理器100执行指令300使得存储在寄存器文件103的一个寄存器中的n比特值(n是2的幂)被存储在数据缓存器114中。此外,存储在链接加载寄存器123中的值(例如,1)被进行零扩展并存储在由指令300指定的寄存器文件103的寄存器内。
图4是由根据本发明的实施例的处理器执行的指令400的图。如图4所示,指令400包括opcode 402和opcode扩展404。Opcode 402和opcode扩展404将指令400标识为基于链接加载值指令的管道输出(pepeline yield)(YIELDLL)。在一个实施例中,指令400不需要任何操作数。在一个实施例中,指令400包括如图4所示分配的32比特。
当被例如处理器100的处理器执行时,指令400使处理器在非零值存储在链接加载寄存器中的情况下暂停与该链接加载寄存器关联的指令流。在一个实施例中,如果非零值存储在链接加载寄存器中,则指令400还用于将例如处理器的至少一部分掉电。任何暂停的指令流保持暂停并且处理器的任何掉电部分保持掉电,直到存储在链接加载寄存器中的值被改变或清除(例如,值变成零)。在链接加载寄存器内的值被改变或清除后,任何暂停的指令流在指令流中位于指令400之后的下一个指令处重新开始。在MIPS指令集架构中,到2007年8月为止,不存在与指令400等同的指令,并且没有执行指令400的功能的指令。在一个实施例中,以使现有的MIPS遗留处理器对作为无操作(nop)指令的指令进行响应的方式对指令400进行编码,从而使得指令400可以被安全地包括在能够在任何MIPS处理器或任何MIPS指令集架构兼容处理器上运行的操作系统和库代码中。
在实施例中,指令200、300和400用于实现例如互斥锁。现在将参照图5和下面的表1描述如何利用这些指令实现锁。
图5是根据本发明的实施例的实现锁的示例方法500的流程图。方法500开始于步骤502。
在步骤502中,存储器中用于表示锁的状态的变量被加载到处理器寄存器文件的一个寄存器中。在该变量被加载到该寄存器时,值(例如1)被存储在链接加载寄存器中。在一个实施例中,链接加载寄存器是被置位的触发器。可以利用指令200执行步骤502。控制从步骤502进行到步骤504。
在步骤504中,对加载到寄存器文件的寄存器中的值进行检查以确定锁的状态(例如,锁是处于锁定状态还是非锁定状态)。可以利用条件分支指令执行该检查。如果在步骤504中确定锁处于非锁定状态,则控制进行到步骤508。否则,控制进行到步骤506。
在步骤506中,如果存储在链接加载寄存器中的值仍然是1(或者如果链接加载触发器仍然被置位),则暂停指令流的执行,直到存储在链接加载寄存器中的值(或者链接加载触发器的状态)被改变或清除。可以利用指令400执行步骤506。在一个实施例中,程序员利用编程符号“yieldll”或“sll $0,$0,5”来指定指令400。在其它实施例中可以使用其它符号。在一个实施例中,指令400还使得执行指令400的处理器的至少一部分掉电,直到存储在链接加载寄存器中的值(或者链接加载触发器的状态)被改变或清除。一旦存储在链接加载寄存器(或者链接加载触发器)中的值被改变或清除,控制就返回到步骤502。
在步骤508中,置位/改变用于指示锁的状态的变量(例如,存储在寄存器文件中的值)以指示锁的锁定状态。例如,通过将值(例如,1)加到在步骤504中加载的用于指示锁的状态的寄存器,可以执行这个操作。控制从步骤508进行到步骤510。
在步骤510中,尝试将在步骤508中修改的寄存器写入存储器。在一个实施例中,如果将该变量成功写入存储器,则先前保持该变量的寄存器将存储值1(例如,存储在链接加载寄存器中的值的零扩展版本)。如果该变量不能够被写入存储器(例如,由于存储在链接加载寄存器中的值是零),则先前保持该变量的寄存器将存储值0。例如,可以利用指令300执行步骤510。
在步骤512中,进行检查以确定在步骤510中尝试存储变量是否成功。能够利用条件分支指令执行这个操作。如果该变量被成功写入存储器,则控制进行到步骤514。否则,控制进行到步骤506或步骤502。
在步骤514中,执行关键代码(例如,关键区代码)。在一个实施例中,关键代码是在正在执行的同时需要对例如共享资源进行独占访问的代码。在完成关键代码后,控制从步骤514进行到步骤516。
在步骤516中,释放锁。可以利用存储字指令将值0存储到表示锁的状态的变量来执行这个步骤。在释放锁时,链接加载寄存器(链接加载触发器)中的值被改变或复位。通过将该值复位,使得任何暂停的指令流能够再次尝试获取锁。在一个实施例中,通过将链接加载寄存器(链接加载触发器)复位,还对在步骤506中掉电的处理器的任何部分进行加电。
下面的表1示出了执行方法500的示例代码。利用MIPS指令集架构的指令和这里所述的新颖指令400提供这些代码。如上所述,MIPS指令集架构不包括与指令400等同的指令,并且在MIPS指令集架构中没有执行指令400的功能的指令。
这里要注意,本发明不限于实现表1中呈现的锁或者表1中呈现的代码。基于这里对本发明的描述,本领域技术人员会明白如何利用本发明实现其它形式的锁和使用其它程序代码的同步机制。因此,本发明绝不限于表1的示例锁和示例代码。
表1
  非自旋锁的示例代码
    acquire_lock:ll t0,0(a0)                /*读取锁;置位L-L寄存器*/bnez  t0,acquire_lock_retry/*如果获得锁就分支*/addiu t0,t0,1             /*将锁置位*/sc    t0,0(a0)             /*尝试存储锁*/bnez t0,start_critical_code/*如果获取锁就分支*/sync                        /*在分支延迟时隙中,同步加载和存储*/acquire_lock_retry:yieldll                   /*暂停指令流,直到L-L寄存器值被清除*/b  acquire_lock             /*分支以获取锁*/nop                         /*可选的nop,在处理器有分支延迟时隙的情况下*/start_critical_code:start critical code      /*执行关键代码*/***                         /*执行关键代码*/end critical code           /*执行关键代码*/release_lock:sync                       /*同步加载和存储*/sw zero,0(a0)              /*释放软件锁;清除L-L寄存器*/
图6是根据本发明的实施例的示例系统600的图。系统600包括处理器602、存储器604、输入/输出(I/O)控制器606、时钟608和定制硬件610。在一个实施例中,系统600是专用集成电路(ASIC)中的片上系统(SOC)。
处理器602是包括这里所述的本发明的特征和/或实现本发明的方法实施例的任何处理器。在一个实施例中,与上述的处理器100相似,处理器602包括取指单元、指令缓存器、指令解码和分派单元、一个或多个指令执行单元、数据缓存器、寄存器文件和总线接口单元。
存储器604可以是能够存储指令和/或数据的任何存储器。存储器604例如可以包括随机访问存储器和/或只读存储器。
输入/输出(I/O)控制器606用于使得系统600的组件能够从外围设备接收信息和/或向外围设备发送信息。I/O控制器606例如可以包括模拟-数字转换器和/或数字-模拟转换器。
时钟608用于确定系统600的顺序子系统何时改变状态。例如,每当时钟608的时钟信号滴答一次,系统600的状态寄存器捕获由组合逻辑产生的信号。在一个实施例中,时钟608的时钟信号可以变化。例如,在时钟信号提供给系统600的选择组件之前,还可以对时钟信号进行除法操作。
定制硬件610是添加到系统600以使得系统600适于特定应用的任何硬件。定制硬件610例如可以包括对音频和/或视频信号进行解码、加速图形运算和/或实现智能传感器所需的硬件。本领域技术人员会明白如何实现定制硬件610以使得系统600适于特定应用。
尽管在上文中已描述了本发明的各种实施例,但是应该明白通过举例给出这些实施例并且这些实施例不是限制。对于计算机领域的技术人员显而易见的是,在不脱离本发明的范围的情况下,可以对这些实施例的形式和细节进行各种改变。例如,除了利用硬件(例如,位于或耦接到中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器核、片上系统(“SOC”)、或任何其它设备)以外,还可以在位于例如被构造为存储软件的计算机可用(例如,可读)介质内的软件(例如,诸如源语言、目标语言或机器语言的任何形式的计算机可读代码、程序代码和/或指令)中实现这些实施方式。这种软件例如能够实现这里所述的设备和方法的功能、制造、建模、仿真、说明和/或测试。例如,这可以通过利用一般的编程语言(例如,C、C++)、包括Verilog HDL、VHDL、SystemC寄存器传输级(RTL)等的硬件描述语言(HDL)、或者其它可用程序来实现。这种软件可以布置在例如半导体、磁盘、光盘(例如,CD-ROM、DVD-ROM等)的任何已知计算机可用介质中。该软件还可以布置为在计算机可用(例如,可读)传输介质(例如,载波或包括数字、光学或基于模拟的介质的任何其它介质)中实现的计算机数据信号。本发明的实施例可以包括通过提供描述设备的软件并且随后通过包括互联网和企业内部网的通信网络传输作为计算机数据信号的软件来提供这里所述的设备的方法。
应当明白,这里所述的设备和方法实施例可以被包括在例如微处理器核(例如以HDL实现)的半导体知识产权核内并且被转换成集成电路产品中的硬件。此外,这里所述的设备和方法实施例可以被实施为硬件和软件的组合。因此,本发明不限于上述任何一个示例性实施例,并且仅应根据下面权利要求及其等同物进行限定。另外,应该明白,这里提供的本发明的具体实施方式部分而非发明内容和摘要部分旨在用于解释权利要求。发明内容部分和摘要部分可以阐述本发明的一个或多个示例性实施例,但不是全部的示例性实施例。

Claims (20)

1.一种处理器,包括:
链接加载寄存器,
其中,所述处理器执行第一指令使所述处理器在第一值存储在链接加载寄存器内的情况下暂停与链接加载寄存器关联的指令流的执行。
2.根据权利要求1的处理器,还包括:
寄存器文件,包括多个寄存器,
其中,所述处理器执行第二指令使所述处理器将由第二指令指定的存储器值加载到寄存器文件的第一寄存器内并且在链接加载寄存器中加载一个值。
3.根据权利要求2的处理器,其中,所述处理器执行第三指令使所述处理器在从第二指令的执行开始链接加载寄存器中的值尚未改变的情况下有条件地将一个值移动到由第三指令指定的存储器位置,并且将表示链接加载寄存器的状态的值加载到寄存器文件的一个寄存器。
4.根据权利要求3的处理器,其中,从链接加载寄存器加载到寄存器文件的所述寄存器的值被零扩展。
5.根据权利要求1的处理器,其中,链接加载寄存器是一比特或两比特寄存器。
6.根据权利要求1的处理器,还包括:
第二链接加载寄存器。
7.一种系统,包括:
处理器,该处理器包括:
寄存器文件,包括多个寄存器,和
链接加载寄存器,
其中,所述处理器执行第一指令使所述处理器将由第一指令指定的第一值加载到寄存器文件的第一寄存器内并且将第二值加载到链接加载寄存器内,并且
其中,所述处理器执行第二指令使所述处理器暂停与链接加载寄存器关联的指令流的执行,直到链接加载寄存器中的值与第二值不同;以及
存储器,耦合到所述处理器。
8.根据权利要求7的系统,其中,链接加载寄存器是一比特或两比特寄存器。
9.根据权利要求7的系统,其中,执行第一指令将值1加载到链接加载寄存器内。
10.根据权利要求7的系统,其中,执行单元执行第三指令使所述处理器将表示存储在链接加载寄存器内的值的值加载到寄存器文件的一个寄存器。
11.根据权利要求7的系统,其中,所述处理器还包括第二寄存器文件和第二链接加载寄存器,该第二寄存器文件包括多个寄存器。
12.一种用于计算系统的控制方法,包括以下步骤:
(1)执行第一指令,该第一指令将由第一指令指定的第一值加载到寄存器文件的第一寄存器内并且将第二值加载到链接加载寄存器内;
(2)执行第二指令,该第二指令暂停与链接加载寄存器关联的指令流的执行,直到链接加载寄存器内的值与第二值不同;以及
(3)执行第三指令,该第三指令在自第一指令的执行开始链接加载寄存器内的值尚未改变的情况下有条件地将第三值移动到由第三指令指定的存储器位置,并且将存储在链接加载寄存器内的值的表示加载到寄存器文件的一个寄存器。
13.根据权利要求12的方法,其中步骤(1)包括:
将值1加载到链接加载寄存器内。
14.根据权利要求12的方法,还包括步骤:
(4)作为执行第二指令的结果,使处理器的至少一部分掉电。
15.一种用于计算系统的控制方法,包括以下步骤:
(1)执行第一指令,该第一指令将由第一指令指定的第一值加载到寄存器文件的第一寄存器内并且将第二值加载到链接加载寄存器内;
(2)执行第二指令,该第二指令暂停与链接加载寄存器关联的指令流的执行,直到链接加载寄存器内的第二值被改变;以及
(3)作为执行第二指令的结果,使处理器的至少一部分掉电。
16.根据权利要求15的方法,其中步骤(1)包括:
将值1加载到链接加载寄存器。
17.根据权利要求15的方法,还包括步骤:
(4)当链接加载寄存器内的第二值被改变时,对处理器的所述部分加电。
18.一种用于实现锁的计算机方法,包括以下步骤:
(1)执行使得多线程处理器响应于存储在硬件控制的链接加载寄存器内的值而暂停执行选择的指令线程的指令序列;以及
(2)响应于存储在链接加载寄存器内的值的改变而恢复执行暂停的指令流。
19.根据权利要求18的方法,其中,步骤(1)包括执行YIELDLL指令。
20.根据权利要求18的方法,其中,步骤(1)包括执行能够在任何MIPS指令集架构兼容处理器上运行的指令。
CN200880104604A 2007-08-31 2008-08-29 低开销/省电处理器同步机制及其应用 Pending CN101790719A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/896,424 2007-08-31
US11/896,424 US20090063881A1 (en) 2007-08-31 2007-08-31 Low-overhead/power-saving processor synchronization mechanism, and applications thereof
PCT/US2008/010234 WO2009032186A1 (en) 2007-08-31 2008-08-29 Low-overhead/power-saving processor synchronization mechanism, and applications thereof

Publications (1)

Publication Number Publication Date
CN101790719A true CN101790719A (zh) 2010-07-28

Family

ID=40409374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880104604A Pending CN101790719A (zh) 2007-08-31 2008-08-29 低开销/省电处理器同步机制及其应用

Country Status (4)

Country Link
US (1) US20090063881A1 (zh)
CN (1) CN101790719A (zh)
GB (2) GB2464877B (zh)
WO (1) WO2009032186A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331528A (zh) * 2013-07-22 2015-02-04 国际商业机器公司 具有低功率数字信号处理(dsp)模式的通用处理单元
CN108446009A (zh) * 2018-03-10 2018-08-24 北京联想核芯科技有限公司 掉电控制方法、装置、设备及介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680989B2 (en) * 2005-08-17 2010-03-16 Sun Microsystems, Inc. Instruction set architecture employing conditional multistore synchronization
WO2009153977A1 (ja) * 2008-06-19 2009-12-23 パナソニック株式会社 マルチプロセッサ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US6026427A (en) * 1997-11-21 2000-02-15 Nishihara; Kazunori Condition variable to synchronize high level communication between processing threads
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US7228543B2 (en) * 2003-01-24 2007-06-05 Arm Limited Technique for reaching consistent state in a multi-threaded data processing system
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US20060161919A1 (en) * 2004-12-23 2006-07-20 Onufryk Peter Z Implementation of load linked and store conditional operations
US8108863B2 (en) * 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331528A (zh) * 2013-07-22 2015-02-04 国际商业机器公司 具有低功率数字信号处理(dsp)模式的通用处理单元
CN104331528B (zh) * 2013-07-22 2018-07-20 格芯公司 具有低功率数字信号处理(dsp)模式的通用处理单元
CN108446009A (zh) * 2018-03-10 2018-08-24 北京联想核芯科技有限公司 掉电控制方法、装置、设备及介质

Also Published As

Publication number Publication date
GB201215142D0 (en) 2012-10-10
GB2464877A (en) 2010-05-05
GB201002970D0 (en) 2010-04-07
GB2491292B (en) 2013-02-06
US20090063881A1 (en) 2009-03-05
GB2491292A (en) 2012-11-28
WO2009032186A1 (en) 2009-03-12
GB2464877B (en) 2013-01-30

Similar Documents

Publication Publication Date Title
US9195786B2 (en) Hardware simulation controller, system and method for functional verification
CN109375949B (zh) 一种具有多个核的处理器
US9710276B2 (en) Execution of instruction loops using an instruction buffer
JP3531166B2 (ja) レジスタ・リネーミングのシステム及び方法
CN101523359B (zh) 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用
Nurmi Processor design: system-on-chip computing for ASICs and FPGAs
US9817667B2 (en) Techniques for scheduling operations at an instruction pipeline
US5440747A (en) Data processor with control logic for storing operation mode status and associated method
US20140380024A1 (en) Dependent instruction suppression
Furber et al. AMULET3: A high-performance self-timed ARM microprocessor
US7856632B2 (en) iMEM ASCII architecture for executing system operators and processing data operators
CN101454753A (zh) 处理异构资源的地址转换和异常
JP6272942B2 (ja) トランザクショナル電力管理を実行するためのハードウェア装置及び方法
US20140375658A1 (en) Processor Core to Graphics Processor Task Scheduling and Execution
CN104205042A (zh) 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
Myers et al. Microprocessor technology trends
CN113535245A (zh) 用于更快的启动过程的多处理器启动流程的方法、系统和设备
CN101790719A (zh) 低开销/省电处理器同步机制及其应用
CN101535947A (zh) 两次发布的条件移动指令及其应用
US9582286B2 (en) Register file management for operations using a single physical register for both source and result
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
JP2001092661A (ja) データ処理装置
JPH01140330A (ja) 高性能cpu−fpuクラスタ用パイプライン型スレーブプロトコル
EP1372065B1 (en) System large scale integrated circuit (LSI), method of designing the same, and program therefor
US9652305B2 (en) Tracking source availability for instructions in a scheduler instruction queue

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20100728