包含至少一个SIMD分散操作的操作的基于指令的同步的制作方法

文档序号:17534272发布日期:2019-04-29 13:49阅读:122来源:国知局
包含至少一个SIMD分散操作的操作的基于指令的同步的制作方法

本申请案要求2016年9月22日提交的美国专利申请案第15/272,613号的优先权,所述申请案的全部内容以引用的方式并入本文中。

本公开大体上涉及电子装置,且更具体地说,涉及包含在电子装置中的处理器的操作。



背景技术:

电子装置可包含实行操作的一或多个处理器。处理器可具有单指令多数据(single-instruction,multiple-data,simd)配置,其能够使得处理器基于多数据部分(例如,通过对向量的每一位实行操作)来实行特定操作。

处理器可实行simd存储操作以将多数据部分存储到存储器的多个区域。多数据部分可存储到存储器的相邻区域,或多数据部分可随机地存储到存储器。举例来说,可实行simd分散存储操作以将多数据部分随机地存储(或“分散”)到存储器的与地址的集合相关联的非相邻部分。

处理器可确定操作的次序以存取存储器。举例来说,如果另一操作以simd分散存储操作的地址中的一或多个为目标,那么可使另一操作延迟(或可使其“暂停”)直到simd分散存储操作完成为止。

为了实现simd分散操作的次序,装置可追踪由simd分散存储操作定为目标的地址。举例来说,装置可包含指示由simd分散存储操作“使用”的地址的硬件,且处理器可在发起另一操作之前存取硬件。以这一方式追踪地址使用处理器的资源且可使处理器的操作减慢。



技术实现要素:

根据本公开的处理器可执行指令(例如替代使用硬件追踪地址)以使包含一或多个单指令多数据(simd)分散存储操作的操作的集合同步(例如确定所述操作的集合的定时)。举例来说,指令可包含形成存储器操作的“屏障”的分散存储-释放指令和加载-获取指令。分散存储-释放指令可防止先于分散存储-释放指令的存储器操作在分散存储-释放指令之后执行,且加载-获取指令可防止后于加载-获取指令的存储器操作在加载-获取指令之前执行。在说明性实例中,分散存储-释放指令为并不指示待存储数据的“空”指令。在其它实施方案中,分散存储-释放指令的执行可使处理器存储数据(例如存储到存储器)。

基于指令的操作同步的使用可改善处理器性能。举例来说,分散存储-释放操作和加载-获取操作的使用可使得处理器能够减少或避免使用硬件追踪地址(例如通过使得处理器能够使用分散存储-释放指令和加载-获取指令而不是使用专用硬件来管理simd分散存储操作的次序)。

在说明性实例中,确定由处理器实行的存储器操作的执行次序的方法包含由处理器执行至少一个simd分散操作以将数据存储到存储器。方法进一步包含由处理器执行一或多个指令以确定存储器操作的集合的执行次序,例如通过使得特定存储器存取操作能够在发起另一存储器存取操作之前完成。所述存储器操作的集合包含所述至少一个simd分散操作。

在另一说明性实例中,设备包含分散检测器电路,其经配置以检测simd分散指令。设备还包含执行单元,其经配置以执行simd分散指令来发起simd分散操作、经配置以执行存储器存取指令来发起存储器存取操作以及经配置以响应于检测simd分散指令而执行第三指令来确定存储器存取操作和simd分散操作的执行次序。

在另一说明性实例中,非暂时性计算机可读媒体存储可由处理器执行以实行操作的指令。操作包含由处理器执行一或多个指令以确定包含至少一个simd分散操作的存储器操作的集合的执行次序。

在另一说明性实例中,设备包含用于检测simd分散指令的装置。设备进一步包含用于执行simd分散指令以进行以下操作的装置:发起simd分散操作、发起存储器存取操作以及确定存储器存取操作和simd分散操作的执行次序。

由所公开实例中的至少一个提供的一个特定优点为减少处理器中的电路面积。举例来说,通过使用指令来使存储器存取操作同步,可避免使用专用硬件来追踪由存储器存取操作定为目标的地址。因此,可供用于其它硬件的电路面积增加。在检视整个申请案后,本公开的其它方面、优点和特征将变得显而易见,申请案包含以下部分:附图说明、具体实施方式和权利要求书。

附图说明

图1为包含经配置以执行指令以使存储器存取操作同步的处理器的系统的说明性实例的框图。

图2为确定例如图1处理器的处理器的存储器操作的执行次序的方法的说明性实例的图。

图3为包含例如图1处理器的经配置以执行指令以使存储器存取操作同步的处理器的电子装置的说明性实例的框图。

具体实施方式

参看图1,描绘了系统的说明性实例且一般将其表示为100。系统100包含一或多个处理器,例如处理器102、处理器104和处理器106。取决于特定实施方案,处理器102、104和106可包含在共同集成电路中(例如系统芯片装置中)或在单独积体电路中。虽然图1的说明性实例描绘三个处理器,但是在其它实施方案中,系统100可包含不同数量的处理器。处理器102、104和106可耦合到存储器160。

在图1的实例中,处理器102包含存储装置,例如指令高速缓存110。指令高速缓存110可经配置以存储指令,例如存储器存取指令112、单指令多数据(simd)分散指令114和存储器存取指令116。在说明性实例中,存储器存取指令112包含存储指令、加载指令、simd分散指令或simd收集指令。存储器存取指令116可包含存储指令、加载指令、simd分散指令或simd收集指令。

simd分散指令114可指示存储器160的地址118。虽然图1说明单个地址118,但是应注意,simd分散指令114以存储器160的多个地址(例如多个独立地址)为目标。举例来说,simd分散指令114可由处理器102执行以将向量的多个分量存储到存储器160,其中向量的每个分量存储到存储器160的不同地址。地址可以是非连续的。

处理器102还可包含数据高速缓存120。数据高速缓存120可经配置以存储数据,例如数据122、124和126。

处理器102可进一步包含分散检测器电路130。分散检测器电路130可经配置以存取释放指令(例如分散存储-释放指令132)和获取指令(例如加载-获取指令134)。在一些实施方案中,分散检测器电路130耦合到指令高速缓存110且经配置以检测存储在指令高速缓存110处的simd分散指令(例如simd分散指令114)。处理器102可经配置以响应于检测simd分散指令(例如simd分散指令114)而执行一或多个指令(例如所述指令132、134),如下文中进一步描述。

处理器102进一步包含一或多个执行单元,例如执行单元140。执行单元140可包含多个级,例如级142和第二级144。举例来说,步骤142、144可对应于流水线级,且执行单元140可具有流水线化配置。执行单元140可耦合到指令高速缓存110,耦合到数据高速缓存120且耦合到分散检测器电路130。

存储器160包含多个存储器区域,例如区域162、164、166和168。地址118可指示区域162、164、166和168中的一个。地址118可包含在由simd分散操作定为目标的一或多个地址的集合中。举例来说,一或多个地址的集合可对应于存储器160的区域(例如区域162、164、166和168中的任一个)。

在操作期间,系统100可使用处理器102、104和106中的一或多个来执行指令。举例来说,执行单元140可执行从指令高速缓存110、从存储器160或从所述两者接收到的指令。作为进一步说明,执行单元140可从指令高速缓存110中或从存储器160中检索存储器存取指令112。执行单元140可执行存储器存取指令112来向存储器160发起存储器存取操作。作为说明性实例,存储器存取操作可包含将数据122写入到存储器160中或从存储器160中读取数据122。在说明性实例中,由处理器102实行的存储器操作并不由处理器102的硬件追踪。

在说明性实例中,执行单元140在执行存储器存取指令112之后执行simd分散指令114。执行simd分散指令114在系统100处发起simd分散操作。举例来说,执行simd分散指令114可使得处理器102存取来自数据高速缓存120的数据124且将数据124存储到存储器160。作为进一步说明,数据124可包含数据向量,且将数据124存储到存储器160可包含将数据向量的元素存储到存储器160的独立地址。

处理器102经配置以检测simd分散指令114。举例来说,分散检测器电路130可经配置以检测simd分散指令114待由执行单元140执行。作为说明性实例,分散检测器电路130可经配置以分析存储在指令高速缓存110处的指令,从而检测具有对应于simd分散指令的特定操作码的一或多个指令。在这个实例中,分散检测器电路130可基于simd分散指令114的操作码来检测simd分散指令114。

执行单元140经配置以响应于simd分散指令114的检测而执行第三指令。举例来说,处理器102可经配置以在执行所述simd分散指令114之后执行分散存储-释放指令132。在一些实施方案中,分散检测器电路130经配置以将分散存储-释放指令132提供到执行单元140。分散存储-释放指令132可指示地址118。

执行单元140经配置以执行分散存储-释放指令132,从而确定由处理器102实行的存储器操作的集合的执行次序。举例来说,分散存储-释放指令132的执行可使得处理器102在实行分散存储-释放操作之前完成先于由分散存储-释放指令132识别的分散存储-释放操作的存储器存取操作。作为说明性实例,处理器102可“等待”实行分散存储-释放操作直到由存储器存取指令112指示的存储器存取操作完成为止、直到由simd分散指令114指示的simd分散操作完成为止或所述两者完成为止。通过“等待”直到simd分散操作完成为止,释放指令的执行可使得存储器160的特定架构状态的更新推迟(例如通过避免重写数据)直到simd分散操作完成为止。

如本文中所使用,存储器存取操作的“同步”可包含使得特定存储器存取操作能够在发起另一存储器存取操作之前完成,例如通过“等待”特定存储器存取操作完成、通过使另一存储器存取操作延迟或所述两者。如本文中所使用,同步可应用于多个存储器存取操作(例如与操作间同步结合),可应用于特定simd分散操作的子操作(例如与操作内同步结合),或可应用于所述两者。如本文中所使用,确定存储器操作的执行次序可包含实现以预先存在的次序执行存储器操作(例如通过执行存储器操作而不改变存储器操作的次序)。

在一些实施方案中,分散存储-释放指令132对应于“没有”数据的“虚假”存储指令。在这个实例中,分散存储-释放指令132的执行并不使得处理器102存取数据高速缓存120或存储器160。相反,处理器102可使用分散存储-释放指令132来使存储器操作同步。此外,simd分散指令114可包含第一操作码,其指示simd分散指令114“没有”数据。在这种情况下,用于存储数据的另一simd分散指令可包含与第一操作码不同的第二操作码(以指示另一simd分散指令用于存储数据)。

在一些实施方案中,处理器102经配置以使以公共地址为目标作为simd分散指令114的一或多个存储器存取操作同步。举例来说,处理器102可响应于检测指令112、114各自指示地址118而使由指令112、114指示的存储器存取操作同步。在这一说明性实施方案中,如果指令112、114指示不同地址,那么处理器102可制止使由指令112、114指示的存储器存取操作同步。

在其它实施方案中,处理器102经配置以使与由存储器存取操作定为目标的地址无关的存储器存取操作同步。为了说明,在一些实施方案中,地址118可由处理器102相对较“晚”地在执行单元140中(例如在级142、144之后的流水线级处)确定。在这个实例中,将某些指令(例如指令114、116)的地址进行比较以确定指令是否以公共地址为目标可能并不可行。作为进一步说明,由存储器存取指令116指示的存储器存取操作可以与地址118不同的地址为目标,且执行单元140可经配置以(例如使用分散存储-释放指令132)使存储器存取操作和由simd分散指令114指示的simd分散操作同步。

作为说明性实例,在其它实施方案中,处理器102经配置以使simd分散操作的集合同步,而不使例如加载操作或存储操作的一或多个其它存储器存取操作同步。为了说明,在一些实施方案中,处理器102可使由simd分散指令114指示的simd分散操作与一或多个其它simd分散操作同步,且可制止使一或多个其它存储器存取操作同步。举例来说,由存储器存取指令112指示的存储器存取操作可以是第二simd分散操作,且执行单元140可经配置以(例如使用分散存储-释放指令132)使第二simd分散操作和由simd分散指令114指示的simd分散操作同步,而不使一或多个其它存储器存取操作同步。

处理器102可经配置以响应于检测simd分散指令114而执行另一指令(例如第四指令)。举例来说,处理器102可经配置以响应于检测simd分散指令114而执行加载-获取指令134(或另一加载指令)。在一些实施方案中,分散检测器电路130将加载-获取指令134提供到执行单元140。加载-获取指令134可指示地址118(例如可以其为目标)。分散存储-释放指令132和加载-获取指令134可形成屏障(或“栅栏”)以使存储器存取操作同步,如下文中进一步解释。

加载-获取指令134可与经延迟(例如暂停)直到与分散存储-释放指令132相关联的分散存储-释放操作完成为止的加载-获取操作相关联。此外,由于可不完成(例如可等待)分散存储-释放操作直到一或多个预先simd分散操作完成为止,因此加载-获取指令134可经延迟(例如可暂停)直到一或多个预先simd分散操作完成为止。

作为进一步说明,释放指令(例如分散存储-释放指令132)和获取指令(例如加载-获取指令134)可形成使存储器存取操作同步的屏障。举例来说,分散存储-释放指令132可防止先于分散存储-释放指令132的存储器存取操作在分散存储-释放指令132之后执行,且加载-获取指令134可防止后于加载-获取指令134的存储器存取操作在加载-获取指令134之前执行。作为进一步说明,分散存储-释放指令132可防止由存储器存取指令112指示的存储器存取操作在分散存储-释放指令132之后执行,且加载-获取指令134可防止由存储器存取指令116指示的存储器存取操作在加载-获取指令134之前执行(例如加载-获取指令134的执行可暂停直到分散存储-释放指令132的执行完成为止)。

在一些实施方案中,由处理器102发起的simd分散操作的集合可以流水线化方式(例如使用软件流水线化技术)执行。为了说明,如果存储器存取指令116指示第二simd分散操作,那么处理器102可流水线化处理与指令114、116相关联的simd分散操作。在一些情况下,处理器102经配置以响应于确定指令114、116并不指示公共地址而流水线化处理simd分散操作。

另外,在一些实施方案中,处理器102可将待以流水线化方式执行的多个simd分散操作分组(或“捆包”)。举例来说,如果存储器存取指令116指示第二simd分散操作,那么处理器102可并行地执行指令114、116(例如使用处理器102的多个处理核心或多个执行单元)。在说明性实例中,处理器102响应于确定多个simd分散操作的数量符合阈值而执行指令132、134,如参看图3进一步描述。因此,虽然已参考单个simd分散操作描述图1,但是应了解,在一些实施方案中,处理器102可将多个simd分散操作分组(或“捆包”)。多个simd分散操作可与单个分散存储-释放指令、单个加载-获取指令或所述两者相关联。

作为进一步说明,在一些实施方案中,处理器102经配置以执行多个simd分散指令,例如simd分散指令114和第二simd分散指令115。处理器102可经配置以汇总多个simd分散指令且例如使用处理器102的多个处理核心来并行地执行多个simd分散指令。处理器102可经配置以汇总符合(例如大于,或大于或等于)阈值的simd分散指令的数量。处理器102可响应于确定多个simd分散操作的数量符合阈值(例如大于阈值,或大于或等于阈值)而执行指令132、134。

参看图1描述的一或多个方面可改善处理器性能。举例来说,使用分散检测器电路130来检测分散指令以及使用指令132、134以形成屏障(或“栅栏”)来使指令112、114和116同步可避免使用追踪存储器存取操作的硬件,例如指示由simd分散操作使用的地址的硬件。此外,与追踪存储器存取操作的硬件相比,分散检测器电路130可具有减小的线路尺寸和复杂度。因此,可减少或避开检查地址以确定地址是否在使用中的专用硬件。

参看图2,描绘了确定由处理器实行的存储器操作的执行次序的方法的特定说明性实例,且一般将其表示为200。作为说明性实例,方法200可由图1的处理器102、104和106中的一或多个实行。

在202处,方法200包含由处理器执行至少一个单指令多数据(simd)分散操作以将数据存储到存储器。举例来说,处理器102可通过执行simd分散指令114以将数据124存储到存储器160来发起simd分散操作。

在204处,方法200进一步包含由处理器执行一或多个指令以确定包含至少一个simd分散操作的存储器操作的集合的执行次序。举例来说,一或多个指令可包含指令132、134,且存储器操作的集合可包含由指令112、114和116指示的存储器操作。在执行次序的说明性实例中,由指令112、116指示的存储器操作中的一或两个在至少一个simd分散操作之前实行。在执行次序的另一说明性实例中,至少一个simd分散操作在由指令112、116指示的存储器操作中的一或两个之前实行。

执行一或多个指令可包含响应于发起至少一个simd分散操作而执行释放指令(例如分散存储-释放指令132)。在说明性实例中,释放指令并不指示数据(例如释放指令可“没有”数据)。释放指令可指示由至少一个simd分散操作定为目标的存储器的区域的至少第一地址,例如地址118。

方法200可以任选地包含在simd分散操作期间接收指令以实行与第一地址相关联的加载操作,且在完成simd分散操作之前,延迟实行加载操作。举例来说,存储器存取指令116可指示加载操作以从存储器160中加载数据。响应于在simd分散操作完成之前由执行单元140接收到存储器存取指令116,处理器102可使加载操作延迟。方法200可任选地包含响应于检测simd分散操作的完成而实行加载操作。

执行一或多个指令可包含响应于发起至少一个simd分散操作而执行获取指令(例如加载-获取指令134)。在说明性实例中,执行一或多个指令包含响应于发起至少一个simd分散操作而执行释放指令(例如分散存储-释放指令132)和获取指令(例如加载-获取指令134)。取决于特定实施方案,执行一或多个指令可包含执行释放指令和获取指令中的一个(而非两个)。

在一些实例中,至少一个simd分散操作包含多个simd分散操作。举例来说,如参看图1所描述,处理器102可将待由执行单元140以流水线化方式执行的多个simd分散操作分组。在说明性实例中,处理器102响应于确定多个simd分散操作的数量符合阈值而执行一或多个指令,如参看图3进一步描述。

图2的方法200可用于使多个存储器存取操作同步(例如与操作间同步结合),可用于使特定simd分散操作的子操作同步(例如与操作内同步结合),或可用于所述两者。为了说明,在操作间同步的一实例中,使操作的集合同步可包含确定至少一个simd分散操作和由另一存储器存取指令指示的另一存储器存取操作的次序,所述另一存储器存取指令例如存储器存取指令112或存储器存取指令116。在操作内同步的一实例中,使操作的集合同步包含(例如通过使与至少一个simd分散操作相关联的向量运算同步来)确定至少一个simd分散操作的子操作的次序。

参看图3,描绘了电子装置的特定说明性实例的框图,且一般将其表示为300。电子装置300可对应于移动装置(例如蜂窝电话)、计算机(例如服务器、膝上型计算机、平板计算机或台式计算机)、存取点、基站、可穿戴电子装置(例如个人相机、头戴式显示器或表)、车辆控制系统或控制台、自主车辆(例如机器人汽车或无人机)、家用电器、机顶盒、娱乐装置、导航装置、个人数字助理(pda)、电视、监视器、调谐器、收音机(例如卫星收音机)、音乐播放器(例如数字音乐播放器或便携式音乐播放器)、视频播放器(例如数字视频播放器,例如数字视频光盘(dvd)播放器或便携式数字视频播放器)、机器人、医疗保健装置、其它电子装置或其组合。

电子装置300包含一或多个处理器,例如多处理器装置310。多处理器装置310可包含处理器102、104和106。多处理器装置310可包含数字信号处理器(dsp)、中央处理单元(cpu)、图形处理单元(gpu)、其它处理装置或其组合。

电子装置300可进一步包含一或多个存储器,例如存储器160。存储器160可耦合到多处理器装置310。存储器160可包含随机存取存储器(ram)、磁阻随机存取存储器(mram)、快闪存储器、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、一或多个寄存器、硬盘、可装卸式磁盘、压缩光盘只读存储器(cd-rom)、其它存储器装置或其组合。

存储器160可存储指令368。指令368可由多处理器装置310执行以实行一或多个操作,例如图2的方法200的操作。指令368可包含图1的指令112、114、116、132和134中的一或多个。

译码器/解码器(编解码器(codec))334也可耦合到多处理器装置310。codec334可耦合到一或多个麦克风,例如麦克风338。图3还展示显示控制器326,其耦合到多处理器装置310且耦合到显示器328。扬声器336可耦合到codec334。图3还指示天线342可耦合到射频(rf)装置340(例如收发器)。

在一特定实例中,多处理器装置310、存储器160、显示控制器326、codec334和rf装置340包含在系统芯片(soc)装置322中或附接到所述系统芯片装置322上。此外,输入装置330和电源344可耦合到soc装置322。此外,在一特定实例中,如图3中所说明,显示器328、输入装置330、扬声器336、麦克风338、天线342和电源344在soc装置322外部。然而,显示器328、输入装置330、扬声器336、麦克风338、天线342和电源344中的每一个可耦合到soc装置322的组件,例如耦合到接口或耦合到控制器。

结合所描述实例,计算机可读媒体(例如存储器160)存储可由处理器(例如处理器102)执行的指令(例如指令368)以实行操作。操作包含由处理器执行一或多个指令(例如指令132、134)以确定包含至少一个simd分散操作的存储器操作的集合的执行次序。作为说明性实例,存储器操作的集合可对应于指令112、114、115和116中的任一个。

结合所描述实例,设备包含用于检测simd分散指令(例如simd分散指令114)的装置(例如分散检测器电路130)。设备进一步包含用于执行simd分散指令以进行以下操作的装置(例如执行单元140):发起simd分散操作、发起存储器存取操作以及确定存储器存取操作和simd分散操作的执行次序。

结合所描述实例,过程包含对存储器的第一区域(例如对存储器160的区域162中的任一个)实行一系列分散(例如对应于simd分散指令114、115中的一或多个的分散操作)。过程进一步包含(例如使用分散存储-释放指令132)实行较少数据分散存储-释放操作以启动第一区域。过程还包含对存储器的下一区域(例如对区域164)实行一系列分散。过程还包含使用加载操作(例如使用加载-获取指令134)依序地加载和处理来自第一区域的信息。加载操作暂停直到分散存储-释放操作完成为止。

前面所公开的装置和功能可使用计算机文件(例如rtl、gdsii、gerber等)来设计和表示。所述计算机文件可存储在计算机可读媒体上。一些或所有这些文件可提供给基于这些文件制造装置的制造操作者。所得产品包含晶片,所述晶片随后被切割成晶粒并封装到集成电路(或“芯片”)中。所述芯片随后用于电子装置中,例如图3的电子装置300。

结合本文中所公开的实例描述的各种说明性逻辑块、配置、模块、电路和算法步骤可实施为电子硬件、由处理器执行的计算机软件或两者的组合。上文已大体上就各种说明性组件、块、配置、模块、电路和步骤的功能性对它们加以描述。这类功能性是实施为硬件还是处理器可执行指令取决于特定应用和强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会导致脱离本公开的范围。

本文所述的方法或算法的一或多个操作可直接在硬件中、在由处理器执行的软件模块中或在两者的组合中实施。举例来说,图2的方法200的一或多个操作可由以下发起、控制或实行:现场可编程门阵列(fpga)装置、专用集成电路(asic)、例如中央处理单元(cpu)的处理单元、数字信号处理器(dsp)、控制器、其它硬件装置、固件装置或其组合。软件模块可驻留于以下中:随机存取存储器(ram)、磁阻随机存取存储器(mram)、快闪存储器、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、寄存器、硬盘、可装卸式磁盘、压缩光盘只读存储器(cd-rom),或所属领域中已知的任何其它形式的非暂时性存储媒体。示范性存储媒体耦合到处理器,使得处理器可以从存储媒体读取信息且将信息写入所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留于专用集成电路(asic)中。asic可驻留于计算装置或用户终端中。替代方案中,处理器和存储媒体可以作为离散组件驻留于计算装置或用户终端中。

提供对所公开实例的先前描述是为了使所属领域的技术人员能够制作或使用所公开的实例。所属领域的技术人员将容易明白对这些实例的各种修改,且在不脱离本公开的范围的情况下,本文中所定义的原理可应用于其它实例。因此,本公开并不意图限于本文中所展示的实例,而应被赋予与如由随附权利要求书定义的原理及新颖特征一致的可能的最广范围。

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