本发明专利技术涉及处理器核心堆栈扩展。本发明专利技术大体上是针对用于控制堆栈溢出的技术。本文描述的技术利用位于处理器核心外部的共用高速缓冲存储器或存储器的一部分作为堆栈扩展。处理器核心监视所述处理器核心内的堆栈,并在所述处理器核心堆栈超过最大条目数目时将所述堆栈的内容转移到所述处理器外部的所述堆栈扩展。当所述处理器核心确定所述处理器核心内的所述堆栈下降到最小条目数目以下时,所述处理器核心将维持在所述堆栈扩展中的所述内容的至少一部分转移到所述处理器核心内的所述堆栈中。所述技术通过利用所述处理器核心外部的堆栈扩展而防止了在所述处理器核心内执行的线程的故障和崩溃。
【技术实现步骤摘要】
本专利技术涉及维持处理器的堆栈数据结构。
技术介绍
常规处理器维持包含若干控制指令的堆栈数据结构(“堆栈”)。堆栈通常位于处理器的核心内。在处理器核心内执行的线程可对堆栈执行两个基本操作。控制单元可将控制指令“推入”到堆栈上或从堆栈“弹出”控制指令。 推入操作向堆栈的顶部添加控制指令,从而引起先前控制指令被沿着堆栈向下推动。弹出操作移除且返回堆栈的当前顶部控制指令,从而引起先前控制指令沿着堆栈向上移动一个位置。因此,处理器核心的堆栈根据后进先出(LIFO)方案而动作。由于处理器核心内存储器的有限大小,因此堆栈非常小。堆栈的小尺寸限制了可利用的嵌套控制指令的数目。将太多控制指令推入到堆栈上导致堆栈溢出,其可引起线程中的一者或一者以上故障或崩溃。
技术实现思路
本专利技术大体上是针对用于控制堆栈溢出的技术。本文描述的技术利用位于处理器核心外部的共用高速缓冲存储器或存储器的一部分作为堆栈扩展。处理器核心在处理器核心中的存储器内维持堆栈。处理器核心在处理器核心堆栈超过例如阈值条目数目的阈值大小时将堆栈内容的至少一部分转移到驻存在处理器核心外部的堆栈扩展。举例来说,处理器核心可在核心堆栈变为充满时将堆栈内容的至少一部分转移到堆栈扩展。堆栈扩展驻存在处理器核心外部的高速缓冲存储器或其它存储器内,且补充处理器核心内可用的有限堆栈大小。处理器核心还确定处理器核心内的堆栈何时下降到例如阈值条目数目的阈值大小以下。举例来说,阈值条目数目可为零。在此情况下,当堆栈变为空时,处理器核心将维持在堆栈扩展中的内容的至少一部分转移回到处理器核心内的堆栈中。换句话说,处理器核心用处理器核心外部的堆栈扩展的内容重新填充处理器核心内的堆栈。因此,堆栈内容可在处理器核心与共用高速缓冲存储器或其它存储器之间来回交换,以允许扩展和收缩堆栈的大小。以此方式,所述技术通过利用处理器核心外部的堆栈扩展而防止了在处理器核心内执行的线程的故障或崩溃。在一个实施例中,本专利技术提供一种方法,其包括确定处理器的核心内的堆栈的内容是否超过阈值大小,以及当所述堆栈的所述内容超过所述阈值大小时将所述堆栈的所述内容的至少一部分转移到所述处理器的核心外部的堆栈扩展。权利要求1.一种装置,其包括 处理器,其具有处理器核心,所述处理器核心包含 控制单元,其用以控制所述处理器的操作,以及 第一存储器,其存储所述处理器核心内的堆栈,其中所述堆栈对应于由所述处理器核心执行的特定线程;以及 第二存储器,其存储所述处理器核心外部的堆栈扩展, 其中所述控制单元可操作以 在检测到所述堆栈的内容超过第一阈值大小时将所述堆栈的第一多个逻辑堆栈条目作为连续块转移到所述堆栈扩展; 在所述转移期间将所述特定线程置于睡眠模式,其中当所述特定线程处于所述睡眠模式时,与所述特定线程相关联的算术逻辑单元可由其它线程使用;以及在所述转移之后,重新启动所述特定线程; 其中所述堆栈扩展包括第一堆栈扩展,且其中所述控制单元可操作以当所述第一堆栈扩展的内容超过第二阈值大小时,将所述第一堆栈扩展的第二多个逻辑堆栈条目作为第二连续块转移到第二堆栈扩展; 其中所述控制单元可操作以当所述第二堆栈扩展的内容下降到第三阈值大小以下时,将所述第二多个逻辑堆栈条目作为第三连续块从所述第二堆栈扩展转移到所述第一堆栈扩展。2.根据权利要求I所述的装置,其中所述第二多个逻辑堆栈条目充满所述第一堆栈扩展的整个内容。3.一种方法,其包括 当确定处理器的核心内的堆栈的内容超过第一阈值大小时,将所述处理器的所述核心内的所述堆栈的第一多个逻辑堆栈条目作为连续块转移到所述处理器的所述核心外部的堆栈扩展,其中所述堆栈对应于在所述处理器的所述核心中执行的特定线程; 在所述转移期间将所述特定线程置于睡眠模式,其中当所述特定线程处于所述睡眠模式时,与所述特定线程相关联的算术逻辑单元可由其它线程使用;以及在所述转移之后,重新启动所述特定线程; 其中在第二操作模式中,针对第二多个逻辑堆栈条目中的每个逻辑堆栈条目使用单独的写入操作而转移所述第二多个逻辑堆栈条目。4.一种方法,其包括 当确定处理器的核心内的堆栈的内容超过第一阈值大小时,将所述处理器的所述核心内的所述堆栈的第一多个逻辑堆栈条目作为连续块转移到所述处理器的所述核心外部的堆栈扩展,其中所述堆栈对应于在所述处理器的所述核心中执行的特定线程; 在所述转移期间将所述特定线程置于睡眠模式,其中当所述特定线程处于所述睡眠模式时,与所述特定线程相关联的算术逻辑单元可由其它线程使用;以及在所述转移之后,重新启动所述特定线程; 其中所述堆栈扩展的堆栈扩展大小大于所述堆栈的堆栈大小,且其中所述堆栈扩展大小是所述堆栈大小的整倍数,所述整倍数大于I。5.—种方法,其包括选择性地将处理器的核心内的堆栈的第一多个逻辑堆栈条目转移到所述处理器 的所述核心外部的堆栈扩展;以及 使用单个堆栈计数器以跟踪所述处理器的所述核心内的所述堆栈中的条目的第一数目和所述堆栈扩展中的条目的第二数目,其中所述单个堆栈计数器的第一部分对应于所述堆栈,且所述单个堆栈计数器的第二部分对应于所述堆栈扩展。6.根据权利要求5所述的方法,其进一步包括 当向所述堆栈添加条目时,递增所述单个堆栈计数器,且其中从所述第一部分到所述第二部分的进位位触发命令以将条目从所述堆栈转移到所述堆栈扩展。7.根据权利要求5所述的方法,其进一步包括 选择性地将所述堆栈扩展的第二多个逻辑堆栈条目转移到第二堆栈扩展。8.根据权利要求5所述的方法,其中所述单个堆栈计数器的第三部分对应于第二堆栈扩展以跟踪所述第二堆栈扩展中的条目的第三数目。9.根据权利要求8所述的方法,其中所述堆栈包含4个条目,其中所述堆栈扩展包含16个条目,且其中所述第二堆栈扩展包含64个条目。10.根据权利要求8所述的方法,其中所述单个堆栈计数器的第一和第二位对应于所述单个堆栈计数器的所述第一部分,其中所述单个堆栈计数器的第三和第四位对应于所述单个堆栈计数器的所述第二部分,其中所述单个堆栈计数器的第五和第六位对应于所述单个堆栈计数器的所述第三部分,其中所述第一位是所述单个堆栈计数器的最低有效位。11.根据权利要求10所述的方法,其中所述单个堆栈计数器的所述第一和第二位代表所述堆栈中的条目数目。12.根据权利要求11所述的方法,其中所述单个堆栈计数器的所述第三和第四位代表所述堆栈扩展中的条目数目。13.根据权利要求12所述的方法,其中所述单个堆栈计数器的所述第五和第六位代表所述第二堆栈扩展中的条目数目。14.根据权利要求5所述的方法,其中所述单个堆栈计数器初始设置为-I值,使得当所述堆栈具有一个条目时所述单个堆栈计数器具有O值。15.根据权利要求5所述的方法,其中所述堆栈扩展的堆栈扩展大小是所述堆栈的堆栈大小的整倍数,所述整倍数大于1,且其中所述第一多个逻辑堆栈条目包括所述堆栈的整个内容。16.根据权利要求15所述的方法,其中当所述堆栈已满且将向所述堆栈添加新条目时,转移所述第一多个逻辑堆栈条目。17.根据权利要求7所述的方法,其中所述第二堆栈扩展的第二堆栈扩展大小是所述堆栈扩展的堆栈扩展大小的整倍数,所述整倍数大于1,且其中所述第二多个逻辑堆栈条目包括所述堆栈扩展的整个内容。18本文档来自技高网...
【技术保护点】
一种装置,其包括:处理器,其具有处理器核心,所述处理器核心包含:控制单元,其用以控制所述处理器的操作,以及第一存储器,其存储所述处理器核心内的堆栈,其中所述堆栈对应于由所述处理器核心执行的特定线程;以及第二存储器,其存储所述处理器核心外部的堆栈扩展,其中所述控制单元可操作以:在检测到所述堆栈的内容超过第一阈值大小时将所述堆栈的第一多个逻辑堆栈条目作为连续块转移到所述堆栈扩展;在所述转移期间将所述特定线程置于睡眠模式,其中当所述特定线程处于所述睡眠模式时,与所述特定线程相关联的算术逻辑单元可由其它线程使用;以及在所述转移之后,重新启动所述特定线程;其中所述堆栈扩展包括第一堆栈扩展,且其中所述控制单元可操作以当所述第一堆栈扩展的内容超过第二阈值大小时,将所述第一堆栈扩展的第二多个逻辑堆栈条目作为第二连续块转移到第二堆栈扩展;其中所述控制单元可操作以当所述第二堆栈扩展的内容下降到第三阈值大小以下时,将所述第二多个逻辑堆栈条目作为第三连续块从所述第二堆栈扩展转移到所述第一堆栈扩展。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:焦国方,于春,杜云,
申请(专利权)人:高通股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。