使用无序指令选取器选择有序指令选取的制作方法

文档序号:20499408发布日期:2020-04-21 22:38阅读:191来源:国知局
使用无序指令选取器选择有序指令选取的制作方法

所公开的方面涉及并行处理多个指令的处理系统。更具体来说,示范性方面涉及在执行多个指令的处理系统中保持程序次序,可不以程序次序执行所述多个指令。



背景技术:

现代处理器通常以非程序次序执行指令,以便加快执行速度及提高指令并行性。然而,存在需要以程序次序执行的一些指令,如果程序被分成将并行执行的信息块,则可能会出现问题。通常分派指令以在称为块的信息块中执行。块是具有一个入口及一个出口的代码的一部分。

有时,块可能会停止等待页面错误、等待资源等。如果块停止,则可例如在管线刷新期间将所述块从存储器移除。然而,可能已执行块中的多个指令,但是由于移除了所述块,因此当将所述块带入存储器中以执行时,可重新执行那些指令。由于可并行执行多个指令,因此可能难以知晓已执行哪些指令。

作为说明性和非限制性实例,考虑级联isa(指令集架构)。级联isa将代码块视为原子块,即,块中的所有指令被视为已执行或块中的无一指令被视为已执行。当代码块遇到异常并且必须延迟其执行时(例如,交换出内存、刷新或仅由于未准备好执行而延迟),可能会导致开销。在处理执行延迟的原因之后,可再次尝试执行包含异常的代码块。然而,由于所述块是原子块,因此无一指令将被视为已执行。因此,由于级联isa(及其它基于块的isa)不提供重新启动块内的执行的机制,因此重新执行在异常之前执行的指令。不管已执行多少块(少于全部块),都认为未执行所述块并且从块的开头开始执行。这种块级执行粒度防止在开始时以外的任何位置重新启动块。设想如果引起异常的指令接近所述块的末尾并且大部分指令仅在清除异常之后重新执行,则这可能非常浪费。

因此,在本领域中需要在利用指令并行性的处理器中以指令粒度按程序次序执行指令,所述处理器例如并行地执行指令的具有示范性级联isa的那些处理器。



技术实现要素:

本发明的示范性方面涉及用于在无序地执行指令的基于块的处理系统中保持程序次序的系统及方法。举例来说,所公开的系统及方法涉及一种使用无序指令选取器将对指令选定组的选择串行化的方法。所述方法包含:将指令标记为属于指令选定组;识别属于所述指令选定组的所述指令的程序次序;及以程序次序执行属于所述选定组的所述指令。

本发明的其它方面包含用于执行依序指令的设备。所述设备包含:解码器,其识别指令选定组并对其进行标记;保留站(rsv),其接收标记的指令并将其放入阵列中以供执行;用于从保留站内的阵列接收复杂指令并将所述复杂指令引导至适当的功能单元的多路复用器;及接收从所述适当的功能单元产生的结果并将所述结果引导至rsv内的适当阵列的多路复用器。

本发明的其它方面包含用于执行依序指令的方法,所述方法包含:识别指令选定组;标记所述指令选定组中的每一者;接收保留站(rsv)中的标记指令;将所述标记指令放入阵列中以供执行;在多路复用器中从所述保留站内的所述阵列接收复杂指令;将所述复杂指令引导至适当的功能单元;在多路复用器中从所述适当的功能单元接收结果;及将所述结果引导至所述rsv内的适当阵列。

本发明的方面还包含跳过依序指令的执行的方法。所述方法包含:检测在计算机代码的未获取分支中的依序指令;及取消标记所述依序指令。

本发明的方面还包含用于检测最早备用指令的方法。所述方法包含:检测最早依序指令;确定最早备用指令比所述最早依序指令晚;及允许跳过所述最早依序指令。

本发明的方面还包含跳过依序指令的执行的方法。所述方法包含:检测最早执行指令;检测最早依序指令;确定所述最早执行指令比所述最早依序指令晚;及允许跳过所述最早依序指令。

本发明的方面还包含跳过依序指令的执行的方法。所述方法包含:保持rsv阵列内的多个执行指令的执行计数;确定所述rsv阵列中的最早依序指令;确定所述rsv阵列中的最早备用指令;确定早于所述最早依序指令的所有指令的所述执行计数是否为零及所述最早备用指令是否比所述最早依序指令晚;及如果早于所述最早依序指令的所有指令的所述执行计数为零及所述最早备用指令比所述最早依序指令晚,则允许跳过所述依序指令。

附图说明

呈现附图以辅助描述本发明的各方面,且提供所述附图仅用于说明各方面而非对各方面加以限制。

图1是计算机程序及分配给rsv(保留站)阵列的程序指令的图形说明。

图2是说明本文所公开的发明性概念的各方面的示范性处理系统的图形说明。

图3是根据本文中的发明性概念的各方面的说明rsv阵列的不同方面的图形示图,所述rsv阵列可用于解决“跳过指令”问题。

图4是根据本文中的发明性概念的各方面的说明rsv阵列的实施方案的图形示图。

图5是说明“跳过指令”问题的流程图。

图6是可有利地用于采用本文中的教示来改进性能的处理器系统的图形说明。

具体实施方式

在以下针对本发明的特定方面的描述及相关图式中公开本发明的各方面。可在不脱离本发明的范围的情况下设计替代性方面。另外,将不会详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。

词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必应解释为比其它方面优选或有利。同样地,术语“本发明的方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。

本文中所使用的术语仅是出于描述特定方面的目的,且并不意图限制本发明的方面。如本文中所使用,除非上下文另外明确指示,否则单数形式“一/一个(a/an)”及“所述”也意图包含复数形式。应进一步理解,术语“包括(comprises、comprising)”及/或“包含(includes、including)”在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。

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

图1是计算机程序及分配给rsv(保留站)阵列的程序指令的图形说明。

计算机程序100是一系列指令,例如,如在102(指令0)及104(指令30)处所展示。所说明的指令标记为指令0至指令30。为了执行指令,将所述指令分配给rsv阵列,例如,在106、108及110处所说明的那些rsv阵列。可依序或无序地将指令分配给不同rsv阵列,然而,每个rsv阵列内的指令将按程序次序。在图1中的图示中,以程序次序说明性地将指令分配给rsv阵列0、rsv阵列1及rsv阵列2,其中最早指令处于rsv阵列0中级最晚指令处于rsv阵列2中,但是其不一定如此。可将分配给rsv阵列0的指令等效地分配给rsv阵列1、rsv阵列2,或任何其它rsv阵列。类似地,可将rsv阵列1及rsv阵列2中的指令等效地分配给任何其它rsv阵列。

从rsv阵列中选择指令以在所述指令准备好时执行。举例来说,在rsv阵列0中,指令1及指令3准备好执行。同样,在rsv阵列1中,指令12及指令13准备好执行。类似地,在rsv阵列2中,指令20、指令21及指令23准备好执行。

当指令准备好在每个rsv阵列内执行时可选取要执行的指令,而忽略程序次序,也就是说,在执行来自rsv阵列0的指令1或来自rsv阵列1的指令12之前,可例如从rsv阵列2中选择备用指令20来执行。这通常称为无序执行。另外,举例来说,当选取图1中的指令执行时,可选取指令1、指令12及指令20来在同一指令周期内执行时,即使指令12晚于指令1,及指令20晚于指令1及指令12两者。

在每个rsv阵列中调度备用指令,优先最早备用指令来执行。可执行其它rsv阵列中的备用指令,即使所述备用指令是其它rsv阵列中的较晚备用指令

本发明中提出的技术确保rsv阵列内的选定指令以程序次序进行,从而有效地防止在尚未执行较早指令时执行rsv阵列内的较晚备用指令。应注意,在其它块中的较早或较晚指令可继续以无序方式执行指令。rsv阵列内的备用指令依序执行,然而当与其它rsv阵列中的指令相比时,所述备用指令实际上可能是无序的。

考虑图1中的实例。如果在rsv阵列0中,指令2及指令3作为需要以程序次序执行的指令,则需要延迟指令3的执行,直到指令2准备好并且确认指令2将在调度指令3来执行之前执行。同时,指令12、13、20、21、23都可在其它块中选取来执行,即使这些指令比指令2及指令3晚。在rsv阵列0内,可选取指令1来执行,但是指令3需要等待选取指令2来执行。

图2是说明本文所公开的发明性概念的各方面的示范性处理系统的图形说明。在图2中,在201处说明计算系统的一部分。如先前所论述,解码器203根据指令的操作码来检查及分类指令,并且识别及标记需要以依序次序执行的指令。出于论述的目的,如果指令是依序指令,则指令标记有值s=1,及如果指令不是依序指令,则指令标记有值s=0。在标记指令之后,随后将指令发送到在图2中说明为阵列-0、阵列-1、阵列-2、阵列-3至阵列-n的rsv阵列105至113,以等待指令的执行。每个rsv阵列(例如,105至113)可容纳设定数目的指令,所述数目可根据计算机架构及实施需求而变化。举例来说,级联架构指定每rsv阵列最多128个指令。

每个rsv阵列通常具有可执行例如相加及移位的简单操作的alu(算术逻辑单元)。将更复杂操作及无法在rsv阵列105至113内执行的操作卸载到单独单元213,所述单元可包含各种计算相关的功能(功能单元,例如,207、209及211)。在图2中,示范性地说明此卸载。rsv阵列105至113耦合到多路复用器(mux)205,所述多路复用器可在单独单元213中接收要从rsv阵列105至113中的任一者卸载的此类操作及将其引导至适当的功能单元,例如,207、209或211。在图2所说明的实例中,多路复用器(mux)205可将此类卸载操作引导至lsu(负载存储单元)207,所述lsu可接收执行rsv阵列指令将需要的负载值,并且所述多路复用器可将来自rsv阵列指令的输出存储到正确的存储位置。多路复用器205还可将值引导至gpr(通用处理器寄存器)209或从所述gpr引导值。可将更复杂操作引导至复运算单元211。复运算单元211可执行例如乘法、除法或浮点运算的此类任务。

在完成卸载任务之后,可通过多路复用器215将完成操作的信号发送到适当的rsv阵列(例如,105至113),并且如果完成的指令被分类为s指令(s=1),则适当的rsv阵列(例如,105至113)随后可重置分类标志(s=0)。

可在rsv阵列105至113中实现的操作及需要卸载的那些操作可根据实施及系统需求而变化,并且这些功能分离的以上描述可根据需求变化而变化。因此,图2应被视为出于说明目的的一个实施方案的实例,但不限于所示的实施方案。

图3是根据本发明的各方面的说明rsv阵列的不同方面的图形示图。

rsv阵列301说明典型指令选取器的操作方面。典型的指令选取器具有来自一系列指令303的进入备用信号307。备用信号307指示指令是否准备好执行,及优先级多路复用器305是否将选择备用的最早指令309。

根据本公开的一个方面,在示范性实施方案中,分类状态(即,伴随指令的s标志)可用于通过设定s=1来防止指令准备好执行,如相对于rsv阵列321所说明。优先级多路复用器325从一系列指令323接收指示指令被分类为依序指令的依序指令标记327(s=1),及使用分类状态(s=1)来确定最早依序指令329。此信息可用于开启原文准备好的(即,仅因为指令被分类为依序指令而未准备好)最早依序指令。此信息可用于对分类为依序指令(s=1)的指令强制执行依序次序。当最早依序指令执行或保证执行时,清除所述指令的分类状态(s=0)以实现选择下一最早分类指令。这种强制执行分类为依序,即s=1的指令的程序次序选取。

强制执行程序次序的另一解决方案是防止选取具有依序指令分类状态的任何指令。当准备好执行指令时,清除(s=0)程序次序中第一个(及因此最早)依序指令的分类状态。当当前最早依序指令已执行或保证执行时,可清除下一最早分类指令的分类状态(即,设定s=0),从而允许执行下一最早分类指令。

以上教示还可用于根据本文中的发明性概念的各方面解决“跳过指令”问题。当计算机代码的未获取分支中存在依序指令时,可发生“跳过指令”问题。因为未获取分支,所以未获取分支中的依序指令从不执行,因此较晚依序指令将不会执行,以等待执行未获取分支中的依序指令。指令将不会执行,因为执行将不会到达。如果未得到解决,则此问题可能会在等待不会发生的事件时死锁计算机系统。

另外,为了解决“跳过指令”问题,可使用如图3中相对于rsv阵列311说明的另一机制。执行中的指令313向识别最早执行指令319的优先级多路复用器315提供指示指令正执行的执行信号317。

图3说明3个rsv阵列组件,但是其在物理上可能或可能不包含在可用于解决“跳过指令”问题的实际rsv中。

图4是根据本文中的发明性概念的各方面的说明rsv阵列401的实施方案的图形示图。rsv阵列401可用于通过防止执行标记为依序指令(s=1)的指令来强制执行程序次序。当当前最早依序指令已执行或保证执行时,清除(s设定成0)下一最早依序指令的分类状态(s),从而允许执行下一最早依序指令。指令403提供!s信号,如果成立,则所述信号指示所述指令不是依序指令或所述指令是已经受其s标志重置的准备好执行的最早依序指令,因此其被视为普通指令。另外,例如使用与门411将!io_exec信号与!s信号组合。!io_exec信号是rsv阵列信号并且指示在rsv阵列401内是否存在任何依序指令。将!s信号及!io_exec信号组合指示指令不是依序指令(!s),或rsv阵列中不存在依序指令(!io_exec)及确证备用信号407。优先级多路复用器405可接收备用信号407及确定哪个是最早备用指令409,随后可执行所述最早备用指令。

图5是说明依序指令“跳过指令”问题的流程图。流程图是计算机程序的图形表示,其中负载0指令511在负载1指令513之前。负载0指令511及负载1指令513两者是依序指令(s=1)。由于其中负载0指令511在负载1指令513之前的程序指令次序,因此负载0指令511被视为晚于负载1指令513。因为负载0指令511被视为晚于负载1指令513,所以需要优先执行所述负载0指令。

在框501中,读取寄存器r5。接下来在框503中,测试寄存器r5的内容以查看所述内容是否不等于零。错误结果将控制传递到执行乘法的框507,随后将控制传递到执行减法的框509。接下来,执行负载0指令511。然而,如果框503中的tnez(测试是否不等于零)指令为真,则在框505中执行加法及将控制传递到负载1指令513。然而,负载1指令513无法执行,因为所述负载1指令是依序指令,所述负载1指令无法执行的原因是存在尚未执行的较晚依序指令,即,负载0指令511。另外,因为负载0指令511处于流程图的未获取分支中,所以程序代码将不执行。因为将不执行负载0指令511,由于所述指令处于未获取的分支中,因此应跳过所述指令并且不阻止执行较早依序指令(例如,负载1指令513)。需要一种识别可跳过的依序指令的方式。如果最早执行指令晚于最早分类指令,则可跳过依序指令。如果最早执行指令晚于最早依序指令,则也可跳过依序指令。

确定是否可跳过依序指令的另一方式是保持执行指令的计数。如果执行计数是零(或具体来说,早于最早依序指令的所有指令的执行计数是零)及最早备用指令晚于最早依序指令,则可安全地跳过最早依序指令。

图6是可有利地采用本文中的教示来改进性能的计算装置600的图形说明。

在图6中,处理器602被示范性地展示为耦合到存储器606,其中缓存604安置于处理器602与存储器606之间,但是应理解,本领域中已知的其它配置也可由计算装置600支持。图6还展示耦合到处理器602及显示器628的显示控制器626。在一些情况下,计算装置600可用于无线通信及图6还以虚线展示任选的框,例如,耦合到处理器602的编解码器(codec)634(例如,音频及/或语音codec),并且扬声器636及麦克风638可耦合到codec634;及耦合到无线控制器640的无线天线642,所述无线控制器耦合到处理器602。在特定方面中,在存在这些任选框中的一或多者的情况下,处理器602、显示控制器626、存储器606及无线控制器640包含在系统级封装或芯片上系统装置622中。

因此,在特定方面中,输入装置630及电源644耦合到芯片上系统装置622。此外,在特定方面中,如图6中所说明,在存在一或多个任选框的情况下,显示器628、输入装置630、扬声器636、麦克风638、无线天线642及电源644在芯片上系统装置622外部。然而,显示器628、输入装置630、扬声器636、麦克风638、无线天线642及电源644中的每一者可耦合到芯片上系统装置622的组件,例如,接口或控制器。

应注意,尽管图6一般描绘计算装置,但是处理器602、缓存604及存储器606还可集成到机顶盒、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(pda)、固定位置数据单元、计算机、膝上型计算机、平板计算机、通信装置、移动电话或其它类似装置中。

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

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

结合本文中公开的方面描述的方法、序列及/或算法可直接以硬件、以由处理器执行的软件模块或以硬件与软件模块的组合来体现。软件模块可驻留在ram存储器、闪存存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom,或本领域中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可以从存储媒体读取信息且将信息写入所述存储媒体。在替代方案中,存储媒体可集成到处理器。

因此,本发明的方面可包含体现用于管理缓存的分配的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含于本发明的方面中。

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

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