经配置以执行事务型存储器操作的处理器的制造方法

文档序号:6496509阅读:164来源:国知局
经配置以执行事务型存储器操作的处理器的制造方法
【专利摘要】在特定实施例中,一种极长指令字VLIW处理器可操作以执行VLIW指令。所述VLIW指令中的至少一者包含第一加载或存储指令和第二加载或存储指令。所述第一指令和所述第二指令是作为单个原子单元而执行。所述第一和第二指令中的至少一者是有条件存储指令。
【专利说明】经配置以执行事务型存储器操作的处理器
【技术领域】
[0001]本发明一般来说涉及操作以执行存储器操作的处理器。
【背景技术】
[0002]技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含体积小、重量轻且易于由用户携带的无线计算装置,例如便携式无线电话、个人数字助理(PDA)以及寻呼装置。更具体来说,便携式无线电话(例如蜂窝式电话和因特网协议(IP)电话)可经由无线网络传送语音和数据包。此外,许多此类无线电话包含并入其中的其它类型的装置。举例来说,无线电话还可包含数字静态相机、数字摄像机、数字记录器以及音频文件播放器。并且,此些无线电话可处理可执行指令,包含可用于接入因特网的软件应用程序,例如网页浏览器应用程序。因而,这些无线电话可包含很强的计算能力。
[0003]电子装置(例如无线电话)可包含共享资源(例如,存储器中的数据结构)的多个请求者(例如,多线程处理器的线程或多个处理器)。举例来说,多个请求者(例如,读取器和写入器)可使用先进先出(FIFO)数据结构来暂时存储数据。写入索引可指向FIFO数据结构的下一个可用条目(例如,使得电子装置的线程或处理器可知道在FIFO数据结构何处写入数据)。
[0004]然而,在独立地更新数据与对应于数据的写入索引时,可能会出现问题。举例来说,如果在写入索引之前更新数据,那么同时操作的另一写入器可能会覆写数据位置。相反地,如果在数据之前更新写入索引,那么并发的读取器可能会尝试读取尚未写入的数据。因此,可希望不可分割地(即,作为同一存储器事务的部分)更新数据以及其对应写入索引条目两者。

【发明内容】

[0005]可实施各种技术以允许不可分割地更新数据和写入索引两者。举例来说,可锁定结构的全部或部分,使得一次仅一个写入器可修改数据结构。然而,所述锁定可限制并发操作,从而造成性能瓶颈。为了克服这些瓶颈,可使用“无锁”算法来在不获取锁定的情况下同时地更新数据结构。
[0006]处理器可使用不可分割的读取-修改-写入操作,其可实施锁定以及“无锁”算法。然而,一些无锁算法可要求不可分割地执行多个并发存储器操作。一些架构已开发出允许多个存储器操作不可分割地发生的方案。举例来说,部分提交指令可记录关于所提出操作的信息且其后决定是否将完成所述操作。如果确定将不会完成所述操作(例如,归因于异常、被另一处理器或线程修改或其它造成失败的事件),那么所述操作的已执行部分可“倒回”(即,撤销)。如果确定将完成所述操作,那么可“提交”(即,写入到存储器)事务内的所有更新。这有时被称为“事务型存储器”。
[0007]事务型存储器系统可能并非总是合意的。举例来说,事务型存储器可具有高成本,为了支持事务型协议而具有额外存储器、总线、高速缓存和处理器复杂性。
[0008]不可分割地更新存储器位置可涉及对存储于存储器处的值的特定加载(被称作加载锁定操作)。在修改所述值之后,可使用第二操作,如果自从加载所述值以来没有其它处理器或线程已修改所述经修改的值,那么所述第二操作存储所述经修改的值。这可被称作有条件存储。事务型存储器操作可不可分割地执行多个(例如,两个)有条件存储操作。所述多个指令的执行导致所述操作的成功或失败(例如,如果有条件存储存储器操作中的任一者失败,那么所述多个指令被视为已失败)。请注意,如本文中使用,如果两个操作具有要么全有要么全无的关系,即,要么两个操作都成功,要么两个操作都失败,那么可认为所述两个操作是“不可分割地执行”。另外,如本文中使用,两个操作可“不可分割地联系”,因为它们可囊封在单个包中且因此同时且个别地执行。因此,“不可分割地联系的”操作还可被称作被“分组”或“分封”。
[0009]在另一特定实施例中,一种极长指令字(VLIW)处理器可操作以执行VLIW指令,所述VLIW指令中的至少一者包含第一加载或存储指令和第二加载或存储指令。所述第一指令和所述第二指令是作为单个原子单元而执行。所述第一和第二指令中的至少一者是有条件存储指令。
[0010]在另一特定实施例中,一种计算机实施的方法包含执行包含事务型存储器操作的程序。所述事务型存储器操作包含不可分割地联系到第二存储器操作的第一存储器操作。所述第一和第二存储器操作是通过单个VLIW包来识别以便在VLIW处理器处执行。
[0011]在另一特定实施例中,一种设备包含多线程处理器,所述多线程处理器包含加载/存储单元。所述加载/存储单元包含指派给每一线程的多个地址预留寄存器。所述地址预留寄存器中的每一者存储与加载锁定有条件存储操作对相关联的预留地址且可进一步存储指示所述预留地址处的数据是否已改变的有效位。与所述对指令相关联的成功或失败可基于与所述对指令中的一者或一者以上相关联的数据是否已改变(例如,基于所述有效位是否指示所述数据已改变)。
[0012]在另一特定实施例中,一种设备包括用于执行极长指令字(VLIW)指令的装置,其中所述VLIW指令中的至少一者包含第一加载或存储指令和第二加载或存储指令,其中所述第一指令和所述第二指令是作为单个原子单元来不可分割地执行,且其中所述第一和第二指令中的至少一者是有条件存储指令。所述设备进一步包括用于存储数据的装置,其中所述用于存储数据的装置对所述用于执行VLIW指令的装置作出响应。
[0013]在另一特定实施例中,一种计算机可读有形媒体存储可由计算机执行以执行包含事务型存储器操作的程序的指令。所述事务型存储器操作包含不可分割地联系到第二存储器操作的第一存储器操作,其中所述第一和第二存储器操作是在VLIW处理器处通过单个极长指令字(VLIW)包来执行。
[0014]在另一特定实施例中,一种设备包含VLIW处理器。所述VLIW处理器具有:缓冲器,其包含多个数据条目;写入索引,其可操作以选择性地指向所述多个数据条目中的每一者;以及加载/存储单元。所述加载/存储单元将一对加载/锁定操作作为单个原子单元来执行且还将一对有条件存储操作作为单个原子单元来执行。
[0015]由所揭示实施例中的至少一者提供的一个特定优势是VLIW处理器,其操作以执行并发的不可分割存储器操作。举例来说,所述VLIW处理器的多个线程可共享资源(例如,数据结构)而无需锁定所述资源且无需阻止所述线程存取所述资源。因此,所述资源的使用可变成较少受到限制的,这是因为可准许所有线程使用所述资源。
[0016]由所揭示实施例中的至少一者提供的另一特定优势是VLIW处理器,其操作以执行存储器操作而无需先记录关于所述存储器操作的信息。举例来说,传统的事务型存储器可使用部分提交指令,其中在确定是否将执行所提出存储器操作之前记录关于所提出存储器操作的信息。根据本发明的事务型存储器可大体上并行地执行第一和第二指令(例如,无需基于第一指令的执行结果来确定是否将执行第二指令)。由所揭示实施例中的至少一者提供的又一优势是支撑于核心芯片内的事务型存储器(例如,不具有外部电路,例如高速缓存、总线或存储器支持元件)。
[0017]在检视整份申请案后,将明白本发明的其它方面、优点和特征,申请案包含以下部分:附图简单说明、【具体实施方式】和权利要求书。
【专利附图】

【附图说明】
[0018]图1是将指令作为单个原子单元来执行的设备的特定说明性实施例的框图;
[0019]图2是图1的设备的加载/存储单元的特定说明性实施例的框图;
[0020]图3是图1的设备的加载/存储单元的操作的特定说明性实施例的图;
[0021]图4是执行VLIW指令对的方法的特定说明性实施例的流程图;以及
[0022]图5是包含处理器的电子装置的框图,所述处理器包含图1的设备的加载/存储单元。
【具体实施方式】
[0023]参考图1,展示可操作以将多个指令作为单个原子单元来执行的设备的特定说明性实施例且将所述设备整体表示为100。如所说明,设备100包含指令高速缓存110、定序器114、存储器102、第一加载/存储单元118、第二加载/存储单元120、执行单元122、测试逻辑124以及通用寄存器(例如寄存器文件)126。
[0024]设备100进一步包含总线接口 108和数据高速缓存112。存储器102耦合到总线接口 108。另外,数据高速缓存112耦合到总线接口 108。可将数据提供到数据高速缓存112或存储器102。存储于数据高速缓存112内的数据可经由总线接口 108提供到存储器102。因此,存储器102可经由总线接口 108从数据高速缓存112检索数据。
[0025]设备100进一步包含监管控制寄存器132和全局控制寄存器134。定序器114可对存储于监管控制寄存器132和全局控制寄存器134处的数据作出响应。举例来说,监管控制寄存器132和全局控制寄存器134可存储多个位,所述位可由定序器114内的控制逻辑存取以确定是否接受中断(例如一般中断116)以及控制指令执行。
[0026]在特定实施例中,设备100是交错多线程处理器。指令高速缓存110可经由多个现行指令寄存器耦合到定序器114,所述寄存器可与所述交错多线程处理器的特定线程相关联。
[0027]存储器102、通用寄存器126和数据高速缓存112中的一者或一者以上可在多个请求者(例如,多线程处理器的多个线程或多处理器系统的多个处理器)之间共享。在特定实施例中,存储器102、通用寄存器126和数据高速缓存112中的一者或一者以上包含先进先出(FIFO)缓冲器以及经配置以指向FIFO缓冲器的下一个可用数据条目的写入索引,如参考图3进一步描述。
[0028]在操作期间,可从存储器102检索极长指令字(VLIW)指令包(例如所说明的VLIW指令包101)且将其提供到指令高速缓存110。如图1中所示,VLIW指令包101包含有条件存储指令103和加载或存储指令104。VLIW指令包101可存储于指令高速缓存110内且可由定序器114(例如经由输入111)检索。
[0029]除了检索VLIW指令包101之外,定序器114还可对一般中断116和其它输入作出响应。定序器114可将VLIW指令或个别指令(例如指令103到104)路由到执行单元。根据特定说明性实施例,VLIW指令包101可包含向定序器114指示是否路由VLIW指令包101中的每一指令以供并行或串行执行的数据。
[0030]举例来说,如图1中所描绘,VLIff指令包101内的有条件存储指令103由定序器114路由到第一加载/存储单元118,且加载或存储指令104由定序器114路由到第二加载/存储执行单元120。应理解,虽然在图1中展示了两个加载/存储执行单元118和120,但设备100可包含额外加载/存储单元和其它类型的执行单元,例如算术逻辑单元或其它代表性执行单元(例如执行单元122)。
[0031]在由第一加载/存储单元118和第二加载/存储单元120执行之后,经执行指令的输出被提供到测试逻辑124。举例来说,将第一加载/存储单元118的输出提供到测试逻辑124的第一输入,且将第二加载/存储单元120的输出提供到测试逻辑124的第二输入。另外,其它执行单元(例如所说明的执行单元122)的输出可作为执行单元输出128来提供,而执行单元输出128作为到通用寄存器126的额外输入而被接收。
[0032]测试逻辑124包含用以确定与有条件存储指令103相关联的条件是否成功的逻辑。举例来说,测试逻辑124可包含用以确定有条件存储指令103是成功还是失败的嵌入式逻辑。另外,基于对有条件存储指令103是成功还是失败的确定,可选择性地丢弃加载或存储指令104的输出或可将所述输出提供为到通用寄存器126的输出。因此,测试逻辑124可实现不可分割地执行VLIW指令包101内的多个指令103和104。
[0033]不可分割地执行指令103到104可涉及完全执行两个指令或一个指令都不执行。举例来说,要么第一存储器操作(例如,有条件存储指令103)和第二存储器操作(例如,力口载或存储指令104)两者都成功,要么第一和第二存储器操作两者都失败。另外,不可分割地执行指令可包含产生指示与有条件存储指令103相关联的成功或失败的至少一个输出。举例来说,测试逻辑124可产生指示经测试的有条件存储指令103的成功或失败的至少一个输出。在特定说明性实施例中,指示成功或失败的至少一个输出是单个位。
[0034]在成功地执行有条件存储指令103之后,测试逻辑124可即刻向通用寄存器126提供指示第一存储器指令103和第二存储器指令104两者的执行结果的输出。在特定说明性实施例中,在多线程操作的回写阶段期间,对通用寄存器126进行写入。操作的执行结果存储于通用寄存器126内且可在请求时提供到存储器102。因此,VLIW指令包101内的多个指令可作为单个原子单元且作为单个存储器事务的部分(例如,多个指令的执行可与单个成功或单个失败相关联)不可分割地执行。
[0035]设备100可包含可操作以执行VLIW指令的VLIW处理器。举例来说,VLIW处理器可包含多个执行元件,例如定序器114、执行单元118到122中的一者或一者以上以及任选地还有测试逻辑124。另外,VLIW处理器可包含经配置以在执行之前存储多个VLIW指令包的指令高速缓存110。在特定实施例中,VLIW指令中的至少一者包含第一加载或存储指令(例如,有条件存储指令103)和第二加载或存储指令(例如,加载指令或存储指令104)。第一指令与第二指令可作为单个原子单元来执行,且第一和第二指令中的至少一者是有条件存储指令。举例来说,参考图1,第一指令103是有条件存储指令。虽然第一指令103展示为有条件存储指令,但应理解,第一指令可以改为加载或存储指令(例如,加载指令、存储指令、加载锁定指令或有条件存储指令),而第二指令是有条件存储指令。
[0036]设备100提供用于执行VLIW指令的装置以及用于存储数据的装置,所述用于存储数据的装置对所述用于执行VLIW指令的装置作出响应。举例来说,所述用于执行VLIW指令的装置可包含如所描述的VLIW处理器,且所述用于存储数据的装置可包含所描述的存储器元件中的一者或一者以上,例如通用寄存器126、存储器102和数据高速缓存112。
[0037]如将了解,图1的设备100可使得能够在不锁定与指令对应的存储器位置的情况下不可分割地执行指令,例如有条件存储指令103和加载或存储指令104。明确地说,所述指令可作为单个原子单元来执行。将指令作为单个原子单元来执行可允许资源(例如,存储器102中的共享数据结构,所述数据结构可由数据高速缓存112来高速缓存)的多个请求者(例如,多线程处理器的线程)有效地共享资源,而无需在一个或一个以上处理器循环期间等待锁定被释放或等待存取被授权。
[0038]参考图2,展示设备100的第一加载/存储单元118的特定说明性实施例。加载/存储单元118包含指派给第一线程或处理器的第一地址预留寄存器(ARR) 204。加载/存储单元118可包含额外ARR。举例来说,第一加载/存储单元118包含代表性第二 ARR232。
[0039]指派给特定线程或处理器的每一 ARR(例如,第一 ARR204)可包含一个或一个以上预留的地址寄存器。举例来说,第一 ARR204包含代表性的第一预留地址寄存器208和第二预留地址寄存器220。第一预留地址寄存器208可包含第一值212和第一代表性有效位216。类似地,第二预留地址寄存器220可包含第二代表性值224和第二代表性有效位228。
[0040]类似地,第二 ARR232可包含第一预留地址寄存器236,其包含第一值240和第一有效位244。第二 ARR232可进一步包含第二预留地址寄存器246,其包含第二值250和第二有效位254。因此,指派给特定线程或处理器的ARR中的每一者可包含多个预留地址寄存器。另外,预留地址寄存器中的每一者可包含数据值(例如,待监视的存储器位置的地址)以及存储于地址寄存器内且与所述数据值相关联的有效位。
[0041]在特定实施例中,一种设备包含多线程处理器,所述多线程处理器包含加载/存储单元。举例来说,如图1中所说明,设备100包含具有代表性加载/存储单元118的多线程处理器。加载/存储单元118包含指派给每一线程的多个地址预留寄存器。举例来说,经由第一 ARR204将预留地址寄存器208和220指派给第一代表性线程。
[0042]每一预留地址寄存器可操作以存储与加载锁定有条件存储操作对相关联的预留地址。举例来说,第一预留地址寄存器208内的值212可表示与将由VLIW处理器(例如,在设备100内)执行的加载锁定有条件存储操作对相关联的预留地址。作为特定实例,力口载锁定有条件存储操作对的第一指令可为有条件指令,且加载锁定有条件存储操作对的第二指令可为加载锁定指令。所述操作对中的每一指令可经加载锁定,使得与第一指令相关联的值被请求者(例如,线程或处理器)预留。[0043]为了实施加载锁定操作,预留地址寄存器208包含第一有效位216,请求者(例如,处理器)可在对通过值212内所含的地址识别的所存储数据值(例如存储器地址)进行改变之前检查所述第一有效位。有效位216可指示自从在第一预留地址寄存器208中设定值212(例如,在对应于值212的存储器位置被请求者预留时)以来通过值212识别的地址是否已用在写入操作中。
[0044]在另一特定实施例中,处理器包含在多处理器架构中,且多个处理器中的每一者包含多个地址预留寄存器。在此实施例中,ARR204、232中的每一者被指派给多处理器架构中的分离且独立的处理器。或者,如所描述,ARR204、232中的每一者可被指派给多线程架构中的特定线程。
[0045]在完成加载锁定有条件存储操作对之前,可执行对ARR的检查。所述检查过程可包含确定对应于ARR中的一者的数据是否已改变(例如,通过确定有效位的值)。另外,加载锁定有条件存储操作对可响应于确定对应于ARR中的仅一者的数据已改变而失败(例如,确定对应于ARR中的一者的数据已改变可足以确定加载锁定有条件存储操作对已失败)。
[0046]在特定实施例中,响应于执行成功的指示,用对应于有条件存储指令的数据来更新VLIW处理器的至少一个存储器位置。响应于执行失败的指示,不用对应于有条件存储指令的数据来更新VLIW处理器的至少一个存储器位置。举例来说,接受由测试逻辑124输出的数据的回写阶段可选择性地将与有条件存储指令的执行相关联的结果写入到寄存器文件。在指示执行成功时,可更新通用寄存器126内的至少一个存储器位置,而在指示失败时,可不更新通用寄存器126内的存储器位置。因此,测试逻辑124可取决于测试逻辑对有条件存储指令103的评估结果而选择性地写入执行各种指令的结果。因此,测试逻辑124与通用寄存器126 —起可用以不可分割地执行由单个VLIW指令包发出的多个存储器操作,且对单个VLIW指令包内的多个存储器操作的不可分割执行可在VLIW多线程处理器架构或多处理器架构的执行单元的上下文内执行。
[0047]应了解,图2的加载/存储单元118可使得资源的每一请求者能够确定资源是否已被另一请求者改变。明确地说,预留地址和对应有效位可存储于指派给每一请求者的ARR处。预留存储器位置(例如,通过将所述存储器位置的地址存储为ARR的值)的请求者可通过引用所述有效位来确定所述存储器位置是否已被另一请求者改变(例如,覆写)。举例来说,如果存储器位置已改变,那么预留所述存储器位置的请求者可判定所预留存储器位置含有经更新数据且先前数据不再有效。明确地说,如果存储器位置已改变,那么操作的执行可被视为失败且稍后可重试。因此,多个请求者可共享对资源的存取,而不限制对资源的存取(例如不锁定所述资源)。
[0048]参考图3,展示设备300的特定说明性实施例,其包含多线程处理器或多处理器架构。设备300包含一个或一个以上极长指令字(VLIW)处理器、先进先出(FIFO)缓冲器370、写入索引360以及至少一个加载/存储单元118。设备300可包含多个加载/存储单元,例如所说明的第一加载/存储单元118和第二加载/存储单元120。应理解,两个以上加载/存储单元可嵌入于设备300内。另外,FIFO缓冲器370和写入索引360可对应于在多个请求者(例如,多线程处理器的线程或多处理器架构的处理器)之间共享的存储器资源(例如,图1中的通用寄存器126、数据高速缓存112和存储器102中的一者或一者以上)。
[0049]FIFO缓冲器370包含多个数据条目,例如第一数据条目372和第二数据条目374。写入索引360可操作以选择性地指向所述多个数据条目中的每一者。举例来说,写入索引值364 (如所示)最初指向第二数据条目374 (例如,存储与第二数据条目374相关联的地址),但可选择性地指向FIFO缓冲器370的其它数据条目,例如第三数据条目376或第四数据条目378。在特定说明性实施例中,写入索引值364指示FIFO缓冲器370的下一个可用数据条目。
[0050]加载/存储单元118(对应于图1的加载/存储单元118)可操作以将一对加载锁定操作作为单个原子单元来执行且进一步可操作以将一对有条件存储操作作为单个原子单元来执行。举例来说,代表性的第一对加载锁定操作381被展示为包含在第一线程或处理器301的可执行程序303内的加载锁定写入索引指令和加载锁定数据指令(即,LL(WriteIndex)指令和LL(data)指令,如图3所示)。作为另一实例,可执行程序303的有条件存储数据指令和有条件存储写入索引指令(即,SC(data)指令和SC(WriteIndeX+l)指令,如图3所示)形成了代表性的第一对有条件存储操作382。
[0051]在操作中,第一线程或处理器301可接收包含第一对加载锁定操作381的可执行程序303。举例来说,第一线程或处理器301可从图1的设备100的存储器102接收可执行程序303。作为响应,第一线程或处理器301可加载锁定写入索引360且加载锁定下一个可用数据条目(例如,第二数据条目374)。也就是说,第一 ARR204和第三ARR304(其对应于第一线程或处理器301且其可响应于第一线程或处理器301而预留存储器地址)可预留对应于第二数据条目374的地址以及对应于写入索引360的地址(由图4中的虚线说明)。
[0052]可响应于第一线程或处理器301预留下一个可用数据条目而产生与第一对加载锁定操作相关联的有效位。举例来说,可在最初设定有效位216和有效位328。在特定说明性实施例中且如图3中所描绘,如所说明,有效位最初被设定为“I”。在另一特定说明性实施例中,有效位最初被设定为“O”。因此,应了解,在图3的特定说明性实施例中,第一线程或处理器301已经由第一 ARR204和第三ARR304预留下一个可用数据条目。
[0053]在特定说明性实施例中,第二线程或处理器302可接收包含第二对加载锁定操作383的可执行程序305。作为响应,第二线程或处理器302可加载锁定写入索引360且加载锁定下一个可用数据条目(例如,第二数据条目374)。第二 ARR232和第四ARR332(其对应于第二线程或处理器302且其可响应于第二线程或处理器302而预留存储器地址)可预留对应于第二数据条目374的地址以及对应于写入索引360的地址。
[0054]可响应于第二线程或处理器302预留下一个可用数据条目(其仍可为第二数据条目374)而产生与第二对加载锁定操作相关联的有效位。举例来说,有效位244和有效位354最初可设定为“I”。因此,应了解,第一线程或处理器301和第二线程或处理器302可各自预留FIFO缓冲器370的下一个可用数据条目。如下文进一步描述,可避免由尝试存取同一资源(例如,FIFO缓冲器370和写入索引360)的多个请求者(例如,第一线程或处理器301和第二线程或处理器302)造成的潜在冲突。
[0055]在执行第一对加载锁定操作381之后,第一线程或处理器301可尝试执行第一对有条件存储操作382。第一线程或处理器301可引用有效位216、328来确定是否可成功完成第一对有条件存储操作。举例来说,如果自从执行第一对加载锁定操作381以来有效位216,328中的任一者的值已改变,那么第一对有条件存储操作可能失败,且作为响应,可产生指示第一对有条件存储操作382的失败的输出。[0056]如果自从执行第一对加载锁定操作381以来有效位216和328都不改变,那么成功提交第一对有条件存储操作382。举例来说,第二数据条目374可充填有数据(例如,如图3所示,写入有数据2),且写入索引值364可递增以指向FIFO缓冲器370的下一个可用数据条目(例如,如由图3中的虚线所示,指向第三数据条目376)。可产生指示第一对有条件存储指令382的成功的输出。在特定说明性实施例中,所述输出是提供给第一线程或处理器301的单个位,使得第一线程或处理器301可确定第一对有条件存储指令382的成功或失败。
[0057]响应于充填第二数据条目374和更新写入索引值364,有效位244、354可改变以反映请求者(即,第一线程或处理器301)已对第二数据条目374进行写入且更新写入索引值364。举例来说,第一线程或处理器301可包含可操作以清除(例如,复位到“O”)响应于第一对加载锁定操作382而设定的任何有效位的电路。因此,有效位244、354可改变到“O”值,如图3中所描绘。举例来说,第一线程或处理器301可将有效位244、354改变为“O”值以反映第一线程或处理器301已对第二数据条目374进行写入且已更新写入索引值364以指向FIFO缓冲器370的新的下一个可用数据条目。
[0058]继续设备300的实例操作,第二线程或处理器302在执行第二对加载锁定操作383之后且在第一线程或处理器301已执行第一对有条件存储操作382之后可尝试执行第二对有条件存储操作384。第二线程或处理器302可引用有效位244、354来确定是否可成功完成第二对有条件存储操作384。关于所描述的实例操作,第二线程或处理器302可确定第二对有条件存储操作384已失败,因为自从第二对加载锁定操作383完成以来有效位244、354中的一者或一者以上已改变。
[0059]响应于第二对有条件存储操作384的失败,第二线程或处理器302可在稍后重新尝试执行可执行程序305。举例来说,第二线程或处理器302可在稍后重新执行第二对加载锁定操作383和第二对有条件存储操作384。可执行程序305的后续执行可使得第二线程或处理器302能够将数据写入到FIFO缓冲器370,而不会覆写由第一线程或处理器301写入到FIFO缓冲器370的数据(即,写入到第二数据条目374的数据2)。
[0060]如将了解的,图3的设备300可便于多个请求者(例如,第一线程或处理器301和第二线程或处理器302)共享资源(例如,FIFO缓冲器370和写入索引360)。可在不锁定资源的情况下共享所述资源,因为每一请求者可确定另一资源是否已存取或改变所述资源。设备300可因此减少请求者等待存取资源的情况(例如,瓶颈)。将进一步了解,图3的设备300可促进支撑于核心芯片内的事务型存储器(例如,不具有外部电路,例如高速缓存、总线或存储器支持元件)。
[0061]参考图4,说明计算机实施的方法400的特定实施例。计算机实施的方法400包含在404处接收包含一对加载锁定指令的第一 VLIW包以及在408处使用一对地址预留寄存器来执行所述对加载锁定指令。举例来说,参考图1,第一 VLIW包101可包含待执行的一对加载锁定指令。作为另一实例,可使用加载/存储单元118和120内的一对地址预留寄存器204和304来执行所述对加载锁定指令。虽然不要求,但是所述对加载锁定指令可以不可分割地联系(例如,并行地或大体上并行地执行)。
[0062]方法400进一步包含在412处接收包含将不可分割地执行的第二对指令的第二VLIW包,其中所述第二对指令中的至少一者是有条件存储指令。作为一实例,第二对有条件存储指令可为由所述线程或处理器中的一者执行的SC(Data)和SC(Writelndex+l)指令,如303和305处展示。
[0063]方法400进一步包含在416处确定地址预留寄存器是否有效。举例来说,可通过图1的设备100的测试逻辑模块124来评估对应于所述至少一个有条件存储指令的地址预留寄存器内的状态位。
[0064]当确定所述地址预留寄存器不是有效时,可在422处提供所述有条件存储指令的执行失败的指示,且可重新尝试执行所述对加载锁定指令(例如,通过返回到执行步骤408)。举例来说,如果确定第二对指令中的任一指令已失败,那么第二对指令中的两个指令都被视为已失败(例如,没有提交第二对指令中的任一指令)。
[0065]当确定所述地址预留寄存器有效时,可在418处提供所述有条件存储指令的执行成功的指示,且可用对应于所述有条件存储指令的数据来更新至少一个存储器位置,如420处展示。举例来说,测试逻辑124可确定成功操作已发生且可将所述有条件存储操作的输出写入到图1的通用寄存器126。作为另一实例,如图3所示,可将执行有条件存储指令的结果写入到FIFO缓冲器370。根据特定实施例,第二对指令进一步包含第二有条件存储指令,且更新至少一个存储器位置进一步包含更新对应于所述第二有条件存储指令的存储器位置(例如,响应于确定有条件存储指令两者的成功而提交所述有条件存储指令两者)。
[0066]计算机实施的方法400包含执行包含事务型存储器操作的程序。事务型存储器操作可包含将不可分割地执行的指令(例如,所述指令作为单个原子单元要么成功要么失败)。举例来说,不可分割地执行的事务型存储器操作可包含加载-修改-存储序列,如本文中参考图3所描述。也就是说,如果将不可分割地执行加载-修改-存储序列,那么要么整个加载-修改-存储序列失败,要么整个加载-修改-存储序列成功。可响应于整个加载-修改-存储序列的失败而重试整个加载-修改-存储序列。
[0067]事务型存储器操作可包含不可分割地联系(例如,并行地或大体上并行地执行)的操作。不可分割地联系的第一和第二存储器操作可被分封在一起或分组到共同的包中。不可分割地联系的第一和第二存储器操作可为一对加载锁定操作或一对有条件存储操作。通过图3的可执行程序303的所述对有条件存储操作382来展示一对不可分割地联系的有条件存储操作的实例。
[0068]在特定实施例中,不可分割地执行第一加载-修改-存储序列和第二加载-修改-存储序列(例如,如果任一序列失败,那么两个序列都被视为已失败)。通过图3的可执行程序303的执行来说明一对不可分割地执行的加载-修改-存储操作的实例(即,对应于FIFO缓冲器370的加载-修改-存储序列和对应于写入索引360的加载-修改-存储序列)。
[0069]可通过极长指令字(VLIW)处理器处的单个VLIW包来不可分割地执行第一和第二存储器操作。举例来说,设备100内的处理器可执行图1的VLIW指令包101内的有条件存储指令103和加载或存储指令104,如本文中所描述。VLIW处理器可经配置以确定将不可分割地更新对应于第一和第二存储器操作的第一和第二存储器位置(例如,将不可分割地更新图3的FIFO缓冲器370的数据条目和写入索引值364)。
[0070]在特定说明性实施例中,第一存储器操作包含读取VLIW处理器的第一存储器位置处的数据,且第二存储器操作包含读取VLIW处理器的第二存储器位置处的数据。在另一实例中,可读取FIFO缓冲器内的数据元素,且可读取写入索引的写入索引值。在另一说明性实施例中,第一存储器操作包含对应于VLIW处理器的第一存储器位置的存储操作,且第二存储器操作包含对应于VLIW处理器的第二存储器位置的存储操作。在特定说明性实施例中,第一存储器位置是FIFO缓冲器370内的位置,且第二存储器位置是图3的写入索引值364。在特定说明性实施例中,所述存储操作中的一者或一者以上是有条件存储操作。
[0071]在特定说明性实施例中,第一存储器位置处的操作是有条件存储操作,且第二存储器位置处的操作是无条件存储指令。因此,有条件存储指令和无条件存储指令两者都可执行且可更新存储器。
[0072]参考图5,描绘了包含处理器510的电子装置的特定说明性实施例的框图且将所述电子装置整体表示为500,所述处理器包含图1的设备100的第一加载/存储单元118和第二加载/存储单元120。电子装置500进一步可包含参考图1到3描述的元件、可根据图4的方法来操作,或其任一组合。
[0073]第一加载/存储单元118可包含第一地址预留寄存器(ARR) 204和第二 ARR232。第二加载/存储单元120可包含第三ARR304和第四ARR332。可提供两个以上加载/存储单元。
[0074]处理器510可耦合到存储器532。存储器532可包含将由处理器510执行的指令533。举例来说,指令533可包含VLIW指令包101,所述VLIW指令包包含图1的有条件存储指令103和加载或存储指令104。
[0075]图5还展示耦合到处理器510且耦合到显示器528的显示控制器526。编码器/解码器(编解码器)534还可耦合到处理器510。扬声器536和麦克风538可耦合到编解码器 534。
[0076]图5还指示无线控制器540可耦合到处理器510且耦合到无线天线542。在特定实施例中,处理器510、显示控制器526、存储器532、编解码器534和无线控制器540包含在系统级封装或系统单芯片装置522中。在特定实施例中,输入装置530和电力供应器544耦合到系统单芯片装置522。此外,在特定实施例中,如图5中所说明,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电力供应器544在系统单芯片装置522外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电力供应器544中的每一者可耦合到系统单芯片装置522的组件,例如接口或控制器。
[0077]所属领域的技术人员将进一步了解,结合本文中所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路以及算法步骤可实施为电子硬件、计算机软件或两者的组合。上文已大体在功能性方面描述各种说明性组件、块、配置、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用以及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述功能性,但此些实施决策不应被解释为导致偏离本发明的范围。
[0078]结合本文所揭示的实施例而描述的方法或算法的步骤可直接以硬件、由处理器执行的软件模块或上述两者的组合来体现。软件模块可驻存在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸磁盘、压缩光盘只读存储器(CD-ROM),或本领域中已知的任一其它形式的存储媒体。示范性非暂时性(例如,有形)存储媒体耦合到处理器,使得处理器可从存储媒体读取信息以及将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体。处理器和存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻留在计算装置或用户终端中。
[0079]提供对所揭示实施例的先前描述是为了使所属领域的技术人员能够制造或使用所揭示实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将为显而易见的,且可在不偏离本发明的范围的情况下将本文中所定义的原理应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而是将赋予本发明与如由所附权利要求书界定的原理和新颖特征一致的可能的最广范围。
【权利要求】
1.一种设备,其包括: 极长指令字VLIW处理器,其可操作以执行VLIW指令,所述VLIW指令中的至少一者包含第一加载或存储指令和第二加载或存储指令,其中所述第一指令和所述第二指令是作为单个原子单元来执行,其中所述第一和第二指令中的至少一者是有条件存储指令。
2.根据权利要求1所述的设备,其中只有当确定存储于对应于所述有条件存储指令的地址预留寄存器处的有效位有效时所述有条件存储指令才提交。
3.根据权利要求2所述的设备,其中所述地址预留寄存器经配置以存储与所述有条件存储指令相关联的预留地址。
4.根据权利要求1所述的设备,其中所述有条件存储指令的执行经配置以提供执行成功的指示和执行失败的指示中的一者。
5.根据权利要求4所述的设备,其中响应于所述执行成功的指示,用对应于所述有条件存储指令的数据来更新所述VLIW处理器的至少一个存储器位置,且其中响应于所述执行失败的指示,不用对应于所述有条件存储指令的所述数据来更新所述VLIW处理器的所述至少一个存储器位置。
6.根据权利要求5所述的设备,其中所述VLIW处理器的所述至少一个存储器位置包含先进先出FIFO缓冲器的条目以及对应于所述FIFO缓冲器的所述条目的写入索引。
7.根据权利要求5所述的设备,其中所述VLIW处理器经配置以响应于所述执行失败的指示而重新尝试执行所述至少一个VLIW指令。
8.根据权利要求1所述的设备,其中将所述第一和第二指令作为单个原子单元来不可分割地执行包括确定所述第一和第二指令两者都已成功或所述第一和第二指令两者都已失败。
9.一种计算机实施的方法,其包括执行包含事务型存储器操作的程序,所述事务型存储器操作包含不可分割地联系到第二存储器操作的第一存储器操作,其中所述第一和第二存储器操作是在VLIW处理器处通过单个极长指令字VLIW包来执行。
10.根据权利要求9所述的计算机实施的方法,其中所述第一存储器操作包含读取所述VLIW处理器的第一存储器位置处的数据,且其中所述第二存储器操作包含读取所述VLIff处理器的第二存储器位置处的数据。
11.根据权利要求10所述的计算机实施的方法,其中读取所述第一存储器位置处的所述数据和读取所述第二存储器位置处的所述数据是经由一对加载锁定指令来执行。
12.根据权利要求9所述的计算机实施的方法,其中所述第一存储器操作包含对应于所述VLIW处理器的第一存储器位置的存储操作,且其中所述第二存储器操作包含对应于所述VLIW处理器的第二存储器位置的存储操作。
13.根据权利要求12所述的计算机实施的方法,其中所述第一存储器位置处的所述存储操作是有条件存储操作。
14.根据权利要求13所 述的计算机实施的方法,其中所述第二存储器位置处的所述存储操作是无条件存储指令。
15.根据权利要求13所述的计算机实施的方法,其中执行所述程序进一步包括确定有条件存储指令是否成功。
16.根据权利要求9所述的计算机实施的方法,其中执行所述程序进一步包括确定将不可分割地更新所述VLIW处理器的与所述第一操作对应的第一存储器位置和所述VLIW处理器的与所述第二操作对应的第二存储器位置。
17.—种设备,其包括: 多线程处理器,其包含加载/存储单元,所述加载/存储单元包含指派给每一线程的多个地址预留寄存器,所述地址预留寄存器中的每一者用以存储与加载锁定有条件存储操作对相关联的预留地址。
18.根据权利要求17所述的设备,其中所述多线程处理器是多处理器架构中的多个处理器中的一者,且其中所述处理器中的每一者包含多个地址预留寄存器。
19.根据权利要求18所述的设备,其中在完成所述加载锁定有条件存储操作对之前检查所述地址预留寄存器包括确定对应于所述地址预留寄存器中的一者的数据是否已改变。
20.根据权利要求19所述的设备,其中所述加载锁定有条件存储操作对响应于确定对应于所述地址预留寄存器中的仅一者的所述数据已改变而失败。
21.—种设备,其包括: 用于执行极长指令字VLIW指令的装置,其中所述VLIW指令中的至少一者包含第一加载或存储指令和第二加载或存储指令,其中所述第一指令和所述第二指令是作为单个原子单元来不可分割地执行,其中所述第一和第二指令中的至少一者是有条件存储指令;以及 用于存储数据的装置,其 中所述用于存储数据的装置对所述用于执行VLIW指令的装置作出响应。
22.根据权利要求21所述的设备,其中所述用于执行VLIW指令的装置包括VLIW处理器。
23.根据权利要求22所述的设备,其中所述VLIW处理器是多线程VLIW处理器,且其中所述多线程VLIW处理器的多个线程中的每一者被指派给多个地址预留寄存器。
24.根据权利要求21所述的设备,其中所述用于存储数据的装置包括先进先出FIFO缓冲器和写入索引。
25.根据权利要求21所述的设备,其中不可分割地执行所述第一和第二指令包括产生指示与所述有条件存储指令相关联的成功或失败的至少一个输出。
26.根据权利要求25所述的设备,其中所述用于执行VLIW指令的装置经配置以响应于所述至少一个输出指示成功而更新所述用于存储数据的装置处的数据。
27.一种计算机可读有形媒体,其存储可由计算机执行以执行包含事务型存储器操作的程序的指令,所述事务型存储器操作包含不可分割地联系到第二存储器操作的第一存储器操作,其中所述第一和第二存储器操作是在VLIW处理器处通过单个极长指令字VLIW包来执行。
28.根据权利要求27所述的计算机可读有形媒体,其中所述第一存储器操作与所述第二存储器操作经由相应的第一和第二加载/存储单元大体上并行地执行。
29.根据权利要求28所述的计算机可读有形媒体,其中所述第一和第二存储器操作是有条件存储存储器操作。
30.一种设备,其包括: 极长指令字VLIW处理器,其包含: 缓冲器,其包含多个数据条目;写入索引,其可操作以选择性地指向所述多个数据条目中的每一者;以及 加载/存储单元,其可操作以将一对加载/锁定操作作为单个原子单元来执行且进一步可操作以将一对有条件存储操作作为单个原子单元来执行。
31.根据权利要求30所述的设备,其中执行所述对加载锁定操作包括在所述数据条目中的一者处和所述写入索引处读取第一值,且其中执行所述对有条件存储指令包括在所述一个数据条目处和所述写入索引处存储第二值。
32.根据权利要求31所述的设备,其进一步包括用以确定在执行所述对加载锁定操作之后所述第一值是否已更改的逻辑。
33.根据权利要求32所述的设备,其进一步包括多个地址预留寄存器,其中所述地址预留寄存器经配置以存储各自与所述对加载锁定操作相关联的预留地址和有效位。
34.根据权利要求30所述的设备,其中所述VLIW处理器可操作以经由所述对加载锁定操作和所述对有条件存储指令 来不可分割地执行一对加载-修改-写入操作。
【文档编号】G06F9/38GK103814354SQ201280045488
【公开日】2014年5月21日 申请日期:2012年9月24日 优先权日:2011年9月23日
【发明者】埃里克·J·普隆德克, 阿贾伊·A·英格尔, 卢奇安·科德雷斯库 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1