处理器核心堆栈扩展制造技术

技术编号:2912676 阅读:207 留言:0更新日期:2012-04-11 18:40
本发明专利技术大体上是针对用于控制堆栈溢出的技术。本文描述的技术利用位于处理器核心外部的共用高速缓冲存储器或存储器的一部分作为堆栈扩展。处理器核心监视所述处理器核心内的堆栈,并在所述处理器核心堆栈超过最大条目数目时将所述堆栈的内容转移到所述处理器外部的所述堆栈扩展。当所述处理器核心确定所述处理器核心内的所述堆栈下降到最小条目数目以下时,所述处理器核心将维持在所述堆栈扩展中的所述内容的至少一部分转移到所述处理器核心内的所述堆栈中。所述技术通过利用所述处理器核心外部的堆栈扩展而防止了在所述处理器核心内执行的线程的故障和崩溃。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及维持处理器的堆栈数据结构。
技术介绍
常规处理器维持包含若干控制指令的堆栈数据结构(“堆栈”)。堆栈通常位于处理器的核心内。在处理器核心内执行的线程可对堆栈执行两个基本操作。控制单元可将控制指令“推入”到堆栈上或从堆栈“弹出”控制指令。推入操作向堆栈的顶部添加控制指令,从而引起先前控制指令被沿着堆栈向下推动。弹出操作移除且返回堆栈的当前顶部控制指令,从而引起先前控制指令沿着堆栈向上移动一个位置。因此,处理器核心的堆栈根据后进先出(LIFO)方案而动作。由于处理器核心内存储器的有限大小,因此堆栈非常小。堆栈的小尺寸限制了可利用的嵌套控制指令的数目。将太多控制指令推入到堆栈上导致堆栈溢出,其可引起线程中的一者或一者以上故障或崩溃。
技术实现思路
本专利技术大体上是针对用于控制堆栈溢出的技术。本文描述的技术利用位于处理器核心外部的共用高速缓冲存储器或存储器的一部分作为堆栈扩展。处理器核心在处理器核心中的存储器内维持堆栈。处理器核心在处理器核心堆栈超过例如阈值条目数目的阈值大小时将堆栈内容的至少一部分转移到驻存在处理器核心外部的堆栈扩展。举例来说,处理器核心可在核心堆栈变为充满时将堆栈内容的至少一部分转移到堆栈扩展。堆栈扩展驻存在处理器核心外部的高速缓冲存储器或其它存储器内,且补充处理器核心内可用的有限堆栈大小。处理器核心还确定处理器核心内的堆栈何时下降到例如阈值条目数目的阈值大小以下。举例来说,阈值条目数目可为零。在此情况下,当堆栈变为空时,处理器核心将维持在堆栈扩展中的内容的至少一部分转移回到处理器核心内的堆栈中。换句话说,处理器核心用处理器核心外部的堆栈扩展的内容重新填充处理器核心内的堆栈。因此,堆栈内容可在处理器核心与共用高速缓冲存储器或其它存储器之间来回交换,以允许扩展-->和收缩堆栈的大小。以此方式,所述技术通过利用处理器核心外部的堆栈扩展而防止了在处理器核心内执行的线程的故障或崩溃。在一个实施例中,本专利技术提供一种方法,其包括确定处理器的核心内的堆栈的内容是否超过阈值大小,以及当所述堆栈的所述内容超过所述阈值大小时将所述堆栈的所述内容的至少一部分转移到所述处理器的核心外部的堆栈扩展。在另一实施例中,本专利技术提供一种装置,其包括具有处理器核心的处理器,所述处理器核心包含:控制单元,其用以控制所述处理器的操作;以及第一存储器,其存储所述处理器核心内的堆栈;以及第二存储器,其存储所述处理器核心外部的堆栈扩展,其中所述控制单元在所述堆栈的内容超过阈值大小时将所述堆栈的内容的至少一部分转移到所述堆栈扩展。本专利技术的技术可使用硬件、软件、固件或其任意组合来实施。如果以软件实施,那么本专利技术的技术可体现于包括指令的计算机可读媒体上,所述指令在由处理器执行时执行本专利技术中描述的技术中的一者或一者以上。如果以硬件实施,那么所述技术可实施于一个或一个以上处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或其它等效集成或离散逻辑电路中。在附图和下文描述中陈述本专利技术的一个或一个以上实施例的细节。从描述和附图以及权利要求书中将明了本专利技术的其它特征、目的和优点。附图说明图1是说明根据本文描述的技术管理核心堆栈数据结构的系统的框图。图2是通过利用位于处理器核心外部的存储器作为堆栈扩展来控制堆栈溢出的另一示范性系统的框图。图3是更详细说明图1的系统的框图。图4是更详细说明核心堆栈和堆栈扩展的框图。图5是说明将条目推入共用高速缓冲存储器的堆栈扩展以防止核心堆栈的堆栈溢出的系统的示范性操作的流程图。图6是说明检索存储在堆栈扩展上的条目的系统的示范性操作的流程图。具体实施方式图1是说明根据本文描述的技术管理核心堆栈数据结构的装置8的框图。装置8通过利用位于处理器10的处理器核心12外部的存储器作为堆栈扩展来控制堆栈溢出,因-->此允许装置8扩展堆栈的大小。为了实施例如循环/结束(LOOP/End)循环和调用/设定(CALL/Ret)命令的嵌套动态流控制指令,例如处理器核心12内的堆栈14是必要的。核心堆栈14的大小决定了递归嵌套的数目,因此限制处理器针对任何应用的能力。装置8经济地提供了其中可实施较大数目的嵌套流控制指令的环境。通过使用堆栈扩展,装置8可支持较大数目的嵌套流控制指令。在图1的实例中,处理器10包括单个核心处理器。因此,处理器10包含单个处理器核心12,其提供用于运行例如多媒体应用程序的软件应用程序的若干线程的环境。在其它实施例中,处理器10可包含多个处理器核心。处理器核心12可包含例如控制处理器10的操作的控制单元、用以执行算术和逻辑计算的算术逻辑单元(ALU)以及至少一定量的存储器,例如若干寄存器或高速缓冲存储器。处理器核心12形成处理器10内的可编程处理单元。处理器10的其它部分,例如固定功能管线或共用工作单元,可位于处理器核心12外部。再者,处理器10可包含单个处理器核心或多个处理器核心。处理器核心12贡献处理器核心12的局部存储器的至少一部分作为核心堆栈数据结构14(本文称为“核心堆栈14”)。核心堆栈14具有固定大小且含有与应用程序的线程相关联的堆栈条目,例如控制指令或数据。核心堆栈14可例如经配置以保持总共16个条目、32个条目、64个条目或较大数目的条目。在一个实施例中,核心堆栈14可包括处理器核心12的1级(L1)高速缓冲存储器的一部分。因此核心堆栈14的大小可受到L1高速缓冲存储器或L1高速缓冲存储器的专用于存储控制指令的部分的大小所限制。核心堆栈14可配置成逻辑堆栈15A-15N(“逻辑堆栈15”)。处理器核心12将核心堆栈14动态细分为逻辑堆栈15以适应与当前应用程序相关联的多个线程。每一逻辑堆栈15可对应于当前在处理器10上运行的应用程序的线程之一。逻辑堆栈15的数目和大小取决于当前应用程序中同时运行的线程的数目。处理器核心12可基于与特定应用程序相关联的同时线程的数目,针对每一应用程序以不同方式细分核心堆栈14。针对应用程序执行的线程数目越大,逻辑堆栈15的数目越大且逻辑堆栈15的大小越小。相反,针对应用程序执行的线程数目越小,逻辑堆栈15的数目越小且逻辑堆栈15的大小越大。与应用程序相关联的线程的数目可例如根据特定多媒体应用程序的资源要求由软件驱动程序确定。此类可配置性可最大化全部堆栈的利用,且提供不同应用程序需要的灵活性。逻辑堆栈15针对给定应用程序一般将每一者具有相同大小,但针对不同应用程序大小可不同。在处理器核心12上运行的线程将控制指令推入到核心堆栈14上和从核心堆栈14弹出控制指令以控制应用程序的执行。更具体来说,线程将控制指令推入到与线程相关-->联的逻辑堆栈15上和从所述逻辑堆栈15弹出控制指令。因为核心堆栈14和逻辑堆栈15具有固定大小,所以线程可推入到堆栈上的控制指令的数目有限。将太多控制指令推入到逻辑堆栈15中的一者上导致堆栈溢出,其可引起线程中的一者或一者以上故障和崩溃。为了减少堆栈溢出的可能性,装置8利用处理器核心12外部的存储器作为堆栈扩展。装置8可利用共用高速缓冲存储器16的一部分、外部存储器24或两者作为堆栈扩展。共用高速缓冲存储器16可由单个处理器核心使用或由多核心处理器内的多个处理器核心共享。共用高速缓冲存储器16通常指位本文档来自技高网...

【技术保护点】
一种方法,其包括: 确定处理器的核心内的堆栈的内容是否超过阈值大小;以及 当所述堆栈的所述内容超过所述阈值大小时,将所述堆栈的所述内容的至少一部分转移到所述处理器的所述核心外部的堆栈扩展。

【技术特征摘要】
【国外来华专利技术】US 2006-6-6 11/448,2721.一种方法,其包括:确定处理器的核心内的堆栈的内容是否超过阈值大小;以及当所述堆栈的所述内容超过所述阈值大小时,将所述堆栈的所述内容的至少一部分转移到所述处理器的所述核心外部的堆栈扩展。2.根据权利要求1所述的方法,其进一步包括:在所述处理器的所述核心内维持多个堆栈,其中所述多个堆栈中的每一者对应于由所述处理器执行的应用程序的多个线程中的不同一者;以及在所述处理器的所述核心外部维持多个堆栈扩展,其中所述堆栈扩展中的每一者对应于所述处理器的所述核心内的所述堆栈中的一者,其中转移所述内容的至少一部分包括将所述处理器的所述核心内的所述堆栈中一者的所述内容的至少一部分转移到相应的堆栈扩展。3.根据权利要求2所述的方法,其中所述堆栈中的每一者具有相等大小,且所述堆栈的数目对应于所述线程的数目。4.根据权利要求2所述的方法,其中所述堆栈中的每一者针对不同应用程序具有不同大小。5.根据权利要求2所述的方法,其进一步包括将所述处理器的所述核心内的所述堆栈中的第二者的所述内容的至少一部分转移到相应的堆栈扩展。6.根据权利要求1所述的方法,其中所述处理器的所述核心内的所述堆栈与应用程序的线程相关联,所述方法进一步包括在所述处理器的所述核心内的所述堆栈的所述内容被转移到所述堆栈扩展时将所述应用程序的所述线程置于空闲状态。7.根据权利要求6所述的方法,其进一步包括将所述堆栈扩展的所述内容转移回到所述堆栈,以及在所述堆栈扩展的所述内容被转移回到所述堆栈时将所述应用程序的所述线程置于空闲状态。8.根据权利要求1所述的方法,其进一步包括在将所述堆栈的所述内容的至少一部分转移回到所述堆栈扩展之后将新条目推入到所述处理器的所述核心内的所述堆栈上。9.根据权利要求8所述的方法,其进一步包括:应用堆栈计数器以跟踪所述处理器的所述核心内的所述堆栈中的条目数目;以及当所述堆栈计数器达到阈值时确定所述堆栈内容超过所述阈值大小。10.根据权利要求1所述的方法,其进一步包括应用共用堆栈计数器以跟踪所述核心内的所述堆栈和所述堆栈扩展两者中的条目。11.根据权利要求1所述的方法,其进一步包括:确定所述内容下降到第二阈值大小以下;以及当所述堆栈下降到所述第二阈值大小以下时,将所述处理器的所述核心外部的所述堆栈扩展的至少一部分转移到所述处理器的所述核心内的所述堆栈。12.根据权利要求1所述的方法,其进一步包括调整计数器以跟踪所述堆栈内容的转移到所述堆栈扩展的所述部分。13.根据权利要求1所述的方法,其中转移所述堆栈的所述内容的至少一部分包括在由所述处理器的其它资源利用的数据总线上转移所述堆栈的所述内容的所述部分。14.根据权利要求1所述的方法,其中所述处理器的所述核心外部的所述堆栈扩展包括所述处理器的共用高速缓冲存储器内的堆栈扩展。15.根据权利要求1所述的方法,其中所述处理器的所述核心外部的所述堆栈扩展包括所述处理器外部的存储器内的堆栈扩展。16.根据权利要求1所述的方法,其中转移所述堆栈的所述内容的至少一部分包括转移所述堆栈的整个内容。17.根据权利要求1所述的方法,其中所述堆栈扩展包括第一堆栈扩展,所述方法进一步包括当所述第一堆栈扩展的所述内容超过阈值大小时将所述第一堆栈扩展的所述内容的至少一部分转移到第二堆栈扩展。18.根据权利要求1所述的方法,其中所述核心是第一核心,所述堆栈是第一堆栈,且所述堆栈扩展是第一堆栈扩展,所述方法进一步包括:确定所述处理器的第二核心内的第二堆栈的内容是否超过阈值大小;以及当所述第二堆栈的所述内容超过所述阈值大小时,将所述第二堆栈的所述内容的至少一部分转移到所述处理器的所述第二核心外部的第二堆栈扩展。19.根据权利要求1所述的方法,其中所述第一和第二堆栈扩展驻存在共用高速缓存存储器内。20.根据权利要求1所述的方法,其进一步包括将所述堆栈和所述堆栈扩展作为连续的高速缓冲存储器来存取。21.一种装置,其包括:处理器,其具有处理器核心,所述处理器核心包含:控制单元,其用以控制所述处理器的操作,以及第一存储器,其存储所述处理器核心内的堆栈;以及第二存储器,其存储所述处理器核心外部的堆栈扩展,其中所述控制单元在所述堆栈的内容超过阈值大小时将所述堆栈的内容的至少一部分转移到所述堆栈扩展。22.根据权利要求21所述的装置,其中所述堆栈包含所述处理器的所述核心内的多个堆栈,所述多个堆栈中的每一者对应于由所述处理器执行的应用程序的多个线程中的不同一者,所述堆栈扩展包含所述处理器的所述核心外部的多个堆栈扩展,所述堆栈扩展中的每一者对应于所述处理器的所述核心内的所述堆栈中的一者,且其中所述控制单元将所述处理器的所述核心内的所述堆栈中一者的内容的至少一部分转...

【专利技术属性】
技术研发人员:焦国方于春杜云
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1