存储器违反预测的制作方法

文档序号:17534286发布日期:2019-04-29 13:49阅读:141来源:国知局
存储器违反预测的制作方法

本发明涉及存储器违反预测。



背景技术:

处理器提供加载且存储指令来存取位于处理器高速缓冲存储器(例如l1、l2等)和/或主存储器中的信息。加载指令可包含存储器地址(直接在加载指令中提供或使用地址寄存器提供),且识别目标寄存器。当执行所述加载指令时,可检索(例如从高速缓冲存储器,从主存储器,或从另一存储机构)存储在所述存储器地址处的数据,并将其放入所识别的目标寄存器中。类似地,存储指令可包含源寄存器的存储器地址和识别符。当执行存储指令时,来自源寄存器的数据可写入到存储器地址。加载指令和存储指令可利用高速缓存在l1高速缓冲存储器中的数据。

处理器可利用指令级并行度(ilp)来改进应用程序性能。乱序执行是利用ilp的频繁使用的技术。在乱序执行中,识别并执行准备好执行的指令,通常与冯-纽曼(von-neumann)编程模型所指定的程序次序不同。这可导致存储器操作,例如加载和存储,以乱序方式执行。举例来说,“较老的”存储指令可未就绪执行,直到“较年轻的”加载指令已执行之后,因为程序中较早的数据和地址计算等待时间。“较老的”指令是在程序次序中比“较年轻的”指令早出现的指令。

较年轻的指令可取决于较老的指令。举例来说,两个指令可存取同一存储器地址,或较年轻的指令可需要较老的指令的结果。因此,继续以上实例,较年轻的加载指令可取决于正首先执行的较老的存储指令,但归因于程序执行中较早的等待时间,在较年轻的加载指令执行之前,较老的存储指令并不执行,从而导致错误。

为了解决此错误,所执行的加载指令和随后发布的指令从管线冲洗,且经冲洗指令中的每一者再发布且再执行。虽然加载指令和随后发布的指令失效并重新发布,但可用存储指令所存储的数据来更新l1高速缓冲存储器。当第二次执行重新发布的加载指令时,加载指令接着可从l1高速缓冲存储器接收经正确更新的数据。

在加载-存储冲突之后,执行加载指令和随后的所执行指令、使加载指令和随后的所执行指令无效和重新发布加载指令的随后的执行所执行指令可花费许多处理器循环。因为加载指令和随后发布的指令的初始结果是失效的,所以执行这些指令所花的时间基本上被浪费。因此,加载-存储冲突可导致处理器低效。



技术实现要素:

下文呈现与本文所公开的一或多个方面有关的简化概述。由此,以下概述不应被视为与所有预期方面有关的广泛综述,也以下概述不应被认为识别与所有预期方面有关的关键或重要元素或划定与任何特定方面相关联的范围。因此,以下概述具有以下唯一目的:以简化形式呈现和与本文中所公开的机构有关的一或多个方面有关的某些概念以先于下文呈现的具体实施方式。

在一方面,一种用于防止存储器违反的方法包含:通过获取单元从处理器的分支预测器存取与将由处理器执行的程序的指令块相关联的消歧指示符;通过处理器的获取单元从指令高速缓冲存储器获取所述指令块;以及通过所述处理器,基于所述消歧指示符指示所述指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令。

在一方面中,一种用于防止存储器违反的设备包含:处理器;获取单元,其经配置以从指令高速缓冲存储器获取将由处理器执行的程序的指令块;以及分支预测器,其经配置以向所述处理器提供与所述指令块相关联的消歧指示符,其中所述处理器经配置以基于所述消歧指示符指示指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令。

在一方面中,一种用于防止存储器违反的设备包含:用于处理的装置;用于获取的装置,其经配置以从指令高速缓冲存储器获取将由处理器执行的程序的指令块;以及用于分支预测的装置,其经配置以向处理器提供与所述指令块相关联的消歧指示符,其中所述用于处理的装置经配置以基于所述消歧指示符指示所述指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令。

在一方面,一种存储用于防止存储器违反的计算机可执行代码的非暂时性计算机可读媒体包含包括以下各项的计算机可执行代码:用以致使处理器的获取单元从指令高速缓冲存储器获取将由处理器执行的程序的指令块的至少一个指令;用以致使获取单元从处理器的分支预测器存取与所述指令块相关联的消歧指示符的至少一个指令;以及用以致使处理器基于所述消歧指示符指示所述指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令的至少一个指令。

所属领域的技术人员基于附图和具体实施方式将明白与本文中所公开的方面相关联的其它目标和优点。

附图说明

参考结合附图考虑的以下详细描述将更好理解本公开的方面,且易于获得对本公开的方面的更完整了解,所述附图仅出于说明目的呈现而非限制本公开,且在附图中:

图1是描绘根据本公开的至少一个方面的系统的框图。

图2是描绘根据本公开的至少一个方面的示范性计算机处理器的框图。

图3说明用于分支预测和存储器消歧预测的示范性系统。

图4说明根据本公开的至少一个方面的用于存储器违反预测的示范性系统。

图5说明根据本公开的至少一个方面的用于防止存储器违反的示范性流程。

具体实施方式

本发明公开用于防止存储器违反的方法和设备。在一方面,获取单元从处理器的分支预测器存取与将由处理器执行的程序的指令块相关联的消歧指示符,并从指令高速缓冲存储器获取所述指令块。所述处理器基于所述消歧指示符指示所述指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令。

在以下针对本公开的具体方面的描述和相关图式中公开本公开的这些和其它方面。可在不脱离本公开的范围的情况下设计替代方面。此外,将不会详细描述本公开的众所周知的元件,或将省略所述元件,以免混淆本公开的相关细节。

本文使用词语“示范性”和/或“实例”来表示“充当实例、例子或说明”。本文中描述为“示范性”和/或“实例”的任何方面不必被解释为比其它方面优选或有利。同样,术语“本公开的方面”并不要求本公开的所有方面包含所论述的特征、优点或操作模式。

另外,依据将由(例如)计算装置的元件执行的动作序列来描述许多方面。将认识到,本文所述的各种动作可由特定电路(例如专用集成电路(asic))、由一或多个处理器正执行的程序指令或由两者的组合执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以多种不同形式来实施,所述形式全都已经考虑在所主张的标的物的范围内。另外,对于本文所描述的方面中的每一者,任何此类方面的对应形式可在本文中描述为(例如)“经配置以”执行所描述动作的“逻辑”。

图1是描绘根据本公开的至少一个方面的系统100的框图。系统100可以是任何计算装置,例如蜂窝式电话、个人数字助理(pda)、寻呼机、膝上型计算机、平板计算机、桌上型计算机、服务器计算机、压缩闪存装置、外部或内部调制解调器、无线或有线电话等等。

系统100可含有:系统存储器102,其用于存储指令和数据;图形处理单元104,其用于图形处理;输入/输出(i/o)接口,其用于与外部装置通信;存储装置108,其用于长期存储指令和数据;以及处理器110,其用于处理指令和数据。处理器110可具有l2高速缓冲存储器112以及多个l1高速缓冲存储器116,其中每一l1高速缓冲存储器116由多个处理器核心114中的一者利用。

图2是更详细地描绘图1的处理器110的框图。为简单起见,图2描绘处理器110的单个核心114并相对于其进行描述。

l2高速缓冲存储器112可含有处理器110正使用的指令和数据的一部分。如图2所示,l1高速缓冲存储器116可分成两部分,用于存储i线的l1指令高速缓冲存储器222(i高速缓冲存储器222),以及用于存储d线的l1数据高速缓冲存储器224(d高速缓冲存储器224)。l2高速缓冲存储器存取电路210可从l2高速缓冲存储器112获取指令群组。从l2高速缓冲存储器112检索的i线可由预解码器和调度器220处理,并放置到i高速缓冲存储器222中。为了进一步改进处理器110的性能,当例如从l2高速缓冲存储器112(或更高)检索到i线时,通常预解码指令。此预解码可包含各种功能,例如地址产生、分支预测和调度(确定应发布所述指令的次序),其作为控制指令执行的调度信息捕获(一组旗标)。

指令获取电路236可用于为核心114获取指令。举例来说,指令获取电路236可含有程序计数器,其跟踪核心114中正执行的当前指令。核心114内的分支单元(未图示)可用于在遇到分支指令时改变程序计数器。i线缓冲器232可用于存储从l1i高速缓冲存储器222获取的指令。发布和调度电路234可用于将i线缓冲器232中的指令分组成接着与核心114并行发布的指令群组。在一些情况下,发布和调度电路234可使用预解码器和调度器220所提供的信息来形成适当的指令群组。

除从发布和调度电路234接收指令之外,核心114可从多种位置接收数据。在核心114需要来自数据寄存器的数据的情况下,寄存器堆240可用于获得数据。在核心114需要来自存储器位置的数据的情况下,高速缓冲存储器加载和存储电路250可用于从d高速缓冲存储器224加载数据。在执行此加载的情况下,可向d高速缓冲存储器224发出对所需数据的请求。如果d高速缓冲存储器224不含所要数据,那么可向l2高速缓冲存储器112发出对所要数据的请求(例如使用l2存取电路210)。

在一些情况下,可在核心114中修改数据。可将经修改的数据写入到寄存器堆240,或存储在存储器中。写回电路238可将数据写回到寄存器堆240,或可利用高速缓冲存储器加载和存储电路250来将数据写回到d高速缓冲存储器224。任选地,核心114可直接存取高速缓冲存储器加载和存储电路250以执行存储。在一些情况下,写回电路238还可用以将指令写回到i高速缓冲存储器222。

处理器110可利用指令级并行度(ilp)来改进应用程序性能。乱序执行是利用ilp的频繁使用的技术。在乱序执行中,识别并执行准备好执行的指令,通常与冯-纽曼编程模型所指定的程序次序不同。这可导致存储器操作,例如加载和存储,以乱序方式执行。

举例来说,可执行存储指令,其将数据存储到特定存储器地址,但归因于乱序执行所述程序的不同指令群组中的等待时间,所存储的数据无法立即可用于“较年轻的”相关加载指令。因此,如果在“较老的”存储指令之后不久执行加载来自相同存储器地址的数据的较年轻的加载指令,那么在用较老的存储指令的结果更新l1高速缓冲存储器116之前,较年轻的加载指令可从l1高速缓冲存储器116接收数据,从而导致存储器违反。存储-存储和加载-加载指令排序也发生类似的问题。

表1说明两个常见指令排序违反的实例。

表1

存储器违反产生需要解决的功能故障。通常,较年轻的加载指令在其开始执行之前,应已等待先前存储器操作的地址解决。因为其未等待,因此此加载指令以及所有其相依指令必须再评估来维持功能性。将此导致错误的较年轻的加载指令视为精确故障,其中机器状态在较年轻的加载的边界处恢复,且处理器110重新开始从将再执行的较年轻的加载获取指令。如同任何精确故障(类似分支误预测),存在与此类存储器违反相关联的高性能和功率代价。

为了解决此类存储器违反,许多处理器利用维持加载和存储的使用期限的加载和存储队列。加载指令检查所述存储队列,以识别具有地址重叠的最年轻的较老存储。如果存在重叠,那么存储指令将数据转发到加载指令以确保功能性。如果不存在重叠,那么加载指令进行到从数据高速缓冲存储器(例如l1高速缓冲存储器116、l2高速缓冲存储器112等)加载数据。

是否存在目标地址尚未解决的任何较老的存储指令,那么加载指令必须决定其是否取决于此未解决的存储指令。这通常被称为存储器消歧。用于执行存储器消歧的当前方法包含:

1.总是阻塞未知的存储地址。

2.总是绕过-假定未解决的存储指令中无一者转发到加载指令。

3.基于其指令地址或其它唯一性,预测加载指令将不取决于基于加载指令的历史的任何未解决的存储指令。

4.基于其指令地址或其它唯一性,预测特定存储指令永不转发到比存储指令本身早执行的任何加载指令。因此,如果其地址是未知的,那么任何较年轻的加载指令可绕过此存储指令。

图3说明用于分支预测和存储器消歧预测的示范性常规系统300。系统300包含分支预测器302、前端(fe)管304、后端(be)管306、加载/存储(su)管308,以及存储器消歧(md)预测器310。分支预测器302可为“前端”的部分,且将下一指令地址提供给获取单元(例如指令获取电路236)。分支预测器302、存储器消歧预测器310、前端管304、后端管306和加载/存储管308可为核心114的组件。

在系统300中,分支预测器302将下一程序计数器(pc)发送到核心114中的前端管304。存储器消歧预测器310可将其对正执行的加载和/或存储指令是否取决于未解决加载和/或存储指令的预测发送到前端管304、后端管306和加载/存储管308中的任一个或全部。

本公开呈现一种用于存储器消歧的方法,其将消歧预测与分支预测集成。为简单起见,此组合的预测方法在本文中被称作“存储器违反预测”。

图4说明根据本公开的至少一个方面的用于存储器违反预测的示范性系统400。系统400包含分支和存储器违反预测器(mvp)402、前端(fe)管304、后端(be)管306和加载/存储(su)管308。分支和存储器违反预测符402可为图2中的指令获取电路236的组件,而前端管304、后端管306和加载/存储管308可为核心114的组件。

分支和存储器违反预测器402包含分支预测器404和存储器违反预测器406。分支预测器404和存储器违反预测器406分别存储pc和存储器违反预测器代码(在本文中也被称为“消歧指示符”)。分支和存储器违反预测器402将来自分支预测器404的下一pc和来自存储器违反预测器406的存储器违反预测器代码作为条目408(例如表示pc和存储器违反预测器代码的一或多个位)发送到前端管304。还将条目408传递到后端管306和加载/存储管308。

在本公开中,为简单起见,假定分支预测器404是去耦分支预测器,但分支预测器404可代替地为耦合分支预测器,而不改变本文所公开的存储器违反预测的操作。分支预测器的耦合是与获取管线。在耦合管线中,趋向于在请求-响应类型的关系中进行,而在去耦分支预测器(例如分支预测器404)中,所述关系较多是具有某一反压机构的生产者-消费者类型。去耦分支预测器继续基于当前获取组地址来产生可能的下一获取组地址。获取组地址是连续指令块的第一地址,且由pc指向。这可为指令高速缓冲存储器的高速缓存行的一部分(例如在arm类模型中)或指令块(例如在基于块的isa中,例如e2)。

如图4中所示,存储器违反预测器406通过将消歧指示符(即,存储器违反预测器代码)添加到发送到前端管304的pc作为条目408来增强来自分支预测器404的条目。条目408中的消歧指示符将对基于pc获取的指令块内的所有加载指令和/或存储指令有效。消歧指示符提供消歧预测的历史情境,且避免在不需要时阻止加载指令。也就是说,如果阻止指令块中的加载指令并未像期望那样表现,那么存储器违反预测器可改变应如何执行所述指令块中的加载指令的预测这提供对加载指令的较精细的消歧预测,且可改进性能而不增加加载误预测。

此历史情境可在较年轻的加载指令(其归因于其早期执行而发生故障)处于与较老的存储或加载指令不同的控制域中时可用于消歧。多种因素,如较老的指令的存在、位置和解决时间,决定了违反的可能性,且分支情境(由分支预测器404提供)有助于在较年轻的加载指令将因为传递未解决的较老的存储器操作而实际上发生故障时,使所述情境变窄。

存储器违反预测器406使用电流指令获取组地址来存取分支预测器404,且连同分支预测器404所提供的方向和/或目标预测,经更新的分支预测提供关于指令的当前块(其地址用以查找分支预测)中的存储器违反的可能性的信息。更具体地,分支可具有不同后果,取决于如何执行/解决一或多个先前分支。由此,分支预测器404中可存在针对相同指令块的多个条目,其对应于指令的当前块中的分支如何与先前分支后果相关。相同指令块可具有多个后继者,取决于其之前的分支指令。类似地,对于相同指令块,还可存在多个消歧指示器,其中每一消歧指示符对应于分支预测器404中用于指令块的条目。举例来说,对于给定指令块,如果分支预测器404中存在两个条目,那么存储器违反预测器406中可存在两个对应的消歧指示器,各自针对分支预测器404中的每一条目。当指令块解码时,指令块内部的任何加载和/或存储指令将遵循如由经更新的分支预测器为那些加载和/或存储指令提供的存储器消歧预测。因此,本公开的存储器违反预测器准许对相同指令块(即,对相同静态分支pc)的多个不同消歧预测。因此,取决于程序执行如何到达给定分支pc,那么存储器违反预测器可选择一个消歧代码而不是另一消歧代码。

注意,在上文的论述中,分支预测器404不是仅由pc编索引。实际上,如上文所描述,其为pc与历史情境的组合。然而,即使无历史情境,分支预测器404也仍将提供预测。

存储器违反预测器406可提供一或多个状态位,以为指令块指示消歧预测。这些可为(但不限于)表2中说明的消歧指示符/存储器违反预测器代码。消歧指示符的初始值可为这些状态中的任一者,取决于本设计的保守性。注意,表2中的编码仅为示范性的。可依据每一预测的范围内的指令块中的存储器指令之间的行为和交互来表达许多较大(或较小)细节。

表2

条目408中的消歧指示符适用于指令块中的所有加载和存储指令。也就是说,指令块中的所有加载和存储指令用指令块的消歧指示符标记。消歧指示符指示指令块内的任何存储和/或加载指令的执行先前是否导致存储器违反。因此,在这种类型的存储器消歧中,跨指令块描述存储器相依性行为,相对于根据个别存储器指令(例如加载和存储)来表达。这准许此群组行为在管线中非常早地表达(甚至在指令块中受预测影响的加载和存储已解码之前)。

注意,较老的冲突加载和/或存储指令(其在当前指令块中的加载和/或存储指令的执行导致存储器违反之前缺乏解决方案)无需在相同/当前指令块中。实际上,可能已在一或多个先前指令块中执行较老的冲突加载和/或存储指令。

另外,存储器违反预测器406无需知道指令块是否含有加载和/或存储指令。实际上,当第一次执行指令块时,存储器违反预测器406可简单地将初始/默认值指派给所述指令块的消歧指示符。消歧指示符接着可取决于指令块的执行是否导致存储器违反而更新。下次检索指令块时,经更新的消歧指示符将更多地反映应如何执行指令块(例如如由表2中的消歧指示符指示)来防止存储器违反。

另外,每当指令块完成执行时,存储器违反预测器406将以所述指令块的消歧状态(例如来自表2的0、1、2或3)更新。当消歧冲洗在机器中发生时,还可存在额外更新,以更新存储器违反预测器402中的对应条目。

可将消歧指示符操纵为粘性条目(例如一旦设定,就不为特定指令块改变),操纵为线性阈值(例如大于阈值将停用消歧)、操纵为滞后阈值(例如快速斜升以停用、变为缓慢向下以再启用),或类似者。

指令块如何相对于存储器操作解决可导致为所述指令块选择不同的消歧指示符(例如如表2中所描述)。具体地说,对应于指令块的分支队列条目可保持指令块的存储器违反状态。是否存在存储器违反,那么可用适当的解决方案来更新对应的分支队列条目。消歧指示符(或存储器违反预测器代码)取决于违反的类型。举例来说,如果存储指令使多个加载指令无效,那么可将包含所述存储指令的指令块的消歧指示符设定为存储器违反预测器代码4(来自表2)。然而,如果仅存在一个加载指令,那么将包含存储指令的指令块的消歧指示符设定为存储器违反预测器代码1。可将指令块的消歧指示符更新为不同的存储器违反预测器代码。举例来说,在一个存储指令冲洗多个加载指令的情况下,且如果包含加载指令中的一者的指令块中的一者的消歧指示符设定为存储器违反预测器代码1,那么包含存储指令的指令块的消歧指示符可设定为存储器违反预测器代码4,且包含加载指令的指令块的消歧指示符可清除。或者,如果指令块的消歧指示符设定成存储器违反预测器代码4,且检测到存储器违反,其中较老的加载指令冲洗较年轻的加载指令,那么可将指令块的消歧指示符更新为更具限制性的存储器违反预测器代码6。

图5说明根据本公开的至少一个方面的用于防止存储器违反的示范性流程500。

在502处,获取单元(例如图2中的指令获取电路236)从分支预测器(例如图4中的分支和存储器违反预测器402)存取与将由处理器(例如图2中的核心114)执行的程序的指令块相关联的消歧指示符,例如图4中的条目408中的消歧指示符。或者,分支预测器向处理器提供与所述指令块相关联的消歧指示符。在一方面,消歧指示符可为与正执行的程序的每一指令块相关联的多位字段。在504处,获取单元从指令高速缓冲存储器(例如图2中的l1i高速缓冲存储器222)获取指令块。

在506处,处理器基于所述消歧指示符指示所述指令块中的加载指令和/或存储指令可绕过所述程序的其它指令还是被所述程序的其它指令绕过,来执行所述指令块中的加载指令和/或存储指令。

在一方面,指令块可与分支预测器中的多个条目相关联,分支预测器中的所述多个条目中的每一条目对应于指令块中的一分支(从而为所述指令块提供历史情境)。在所述情况下,分支预测器中的所述多个条目中的每一条目可具有对应的消歧指示符,其表示应如何为指令块中的分支执行指令块中的加载指令和存储指令。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示应阻止指令块中的所有加载指令执行直到未知的存储指令已解决为止的消歧指示符,如表2中示出为消歧指示符“1”。在所述情况下,506处的执行可包含阻止指令块中的所有加载指令执行,直到未知的存储指令已解决为止。“未知的”存储指令可为其中未知的存储指令的目标存储器地址是未知的,直到未知的存储指令被解决为止的存储指令。在程序执行次序中,未知的存储指令可在指令块中的任何加载指令之前。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示应阻止指令块中的所有加载指令执行直到未知的加载指令已解决为止的消歧指示符,如表2中示出为消歧指示符“2”。在所述情况下,506处的执行可包含阻止指令块中的所有加载指令执行,直到未知的加载指令已解决为止。“未知的”加载指令可为其中未知的加载指令的目标存储器地址是未知的,直到未知的加载指令被解决为止的加载指令。在程序执行次序中,未知的加载指令可在指令块中的任何加载指令之前。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示应阻止指令块中的所有加载指令执行直到未知的存储指令和未知的加载指令已解决为止的消歧指示符,如表2中示出为消歧指示符“3”。在所述情况下,506处的执行可包含阻止指令块中的所有加载指令执行,直到未知的存储指令已解决为止;以及阻止指令块中的所有加载指令执行,直到未知的加载指令已解决为止。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示指令块中的所有未知的存储指令应标记为非可绕过的消歧指示符,如表2中示出为消歧指示符“4”。在所述情况下,506处的执行可包含等待执行程序的其它指令,直到指令块中的所有未知的存储指令都已解决为止。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示指令块中的所有未知的加载指令应标记为非可绕过的消歧指示符,如表2中示出为消歧指示符“5”。在所述情况下,506处的执行可包含等待执行程序的其它指令,直到指令块中的所有未知的加载指令已解决为止。

在一方面,指示指令块中的加载指令和/或存储指令可绕过程序的其它指令还是被程序的其它指令绕过的消歧指示符可包含指示指令块中的所有未知的存储指令和所有未知的加载指令的消歧指示符应标记为非可绕过的消歧指示符,如表2中示出为消歧指示符“6”。在所述情况下,506处的执行可包含等待执行程序的其它指令,直到指令块中的所有未知的存储指令和指令块中的所有未知的加载指令均已解决为止。

尽管图5中未说明,但流程500可进一步包含在第一次执行指令块之前,(例如通过分支预测器)将消歧指示符设定为默认值。在所述情况下,流程500可进一步包含基于指令块中在指令块的执行期间导致存储器违反的加载指令或存储指令来更新消歧指示符。

所属领域的技术人员将了解,可使用多种不同技术和技法中的任一个来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。

另外,所属领域的技术人员将了解,结合本文中所公开的方面描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的这种可互换性,上文已大体就各种说明性组件、块、模块、电路和步骤的功能性加以描述。此类功能性是实施为硬件还是软件取决于特定应用以及强加于整个系统的设计约束。本领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本发明的范围。

结合本文中所揭示的方面而描述的各种说明性逻辑块、模块和电路可以用以下各者来实施或执行:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件组件或其经设计以执行本文中所描述的功能的任何组合。通用处理器可为微处理器;但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,dsp与微处理器的组合、多个微处理器的组合、一个或多个微处理器与dsp核心结合,或任何其它此类配置。

结合本文中所公开的方面描述的方法、序列和/或算法可以直接以硬件、以由处理器执行的软件模块或以硬件和软件模块的组合来体现。软件模块可驻留在随机存取存储器(ram)、快闪存储器、只读存储器(rom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可装卸式磁盘、cd-rom或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息且将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。

在一或多个示范性方面中,所描述的功能可用硬件、软件、固件或其任何组合实施。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体包含计算机存储媒体和通信媒体两者,通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。存储媒体可以是可由计算机存取的任何可供使用的媒体。作为实例而非限制,此类计算机可读媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携带或存储呈指令或数据结构的形式的所需程序代码且可由计算机存取的任何其它媒体。并且,适当地将任何连接称作计算机可读媒体。

尽管前述揭示内容示出本发明的说明性方面,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可以在本文中做出各种改变和修改。不必以任何特定次序来执行根据本文中所描述的本发明的方面的方法权利要求项的功能、步骤和/或动作。此外,尽管可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。

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