[发明专利]用于管理返回堆栈的方法和设备有效
申请号: | 201210068384.1 | 申请日: | 2006-02-17 |
公开(公告)号: | CN102707933B | 公开(公告)日: | 2017-03-01 |
发明(设计)人: | 罗德尼·韦恩·史密斯;杰弗里·托德·布里奇斯;詹姆斯·诺里斯·迪芬德尔费尔;托马斯·安德鲁·萨托里乌斯 | 申请(专利权)人: | 高通股份有限公司 |
主分类号: | G06F9/42 | 分类号: | G06F9/42;G06F9/38 |
代理公司: | 北京律盟知识产权代理有限责任公司11287 | 代理人: | 刘国伟 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 管理 返回 堆栈 方法 设备 | ||
分案申请的相关信息
本案是分案申请。该分案的母案是申请日为2006年2月17日、申请号为200680011577.6、发明名称为“用于管理返回堆栈的方法和设备”的发明专利申请案。
技术领域
本发明大体上涉及微处理器,且确切地说,涉及管理某些类型的微处理器使用的硬件返回堆栈以便加速从程序调用的返回。
背景技术
由于在要求复杂功能性的不断增加的应用阵列中部署微处理器,所以需要提高微处理器的执行速度。此外,在例如具有有限电池电力的便携式电子装置的嵌入式应用中,需要减少微处理器的电力消耗。然而,简单地提高微处理器的时钟速度可能不会产生所要的系统性能提高,因为各种输入/输出瓶颈会对微处理器的现实性能强加约束。举例来说,芯片外存储器存取一般比芯片上存储器存取运行得慢,从而导致使用指令和数据高速缓存技术。精简指令集计算机(RISC)一般在每个时钟循环发布一个或一个以上指令,且通常使用指令高速缓存来增强性能。管线RISC处理器可在每个时钟循环发布多个指令,且通常大量使用数据和指令高速缓存。
指令高速缓存(“预取”)预测未来指令并在微处理器执行所述指令之前将其放入芯片上指令高速缓冲存储器中。当预取了正确的指令时,预取可消除与较慢芯片外指令存储器相关的大部分延迟。大部分指令依序执行,且可有把握地预取。条件分支指令可“采用”或不“采用”分支,这取决于通常仅在管线深处评估的分支条件。为了避免等待此评估的延迟,通常在管线早期预测分支指令的行为,且从预测的分支目标地址预取指令。指令预取方法包含静态和动态指令预取两者。
动态指令预取依赖于指令执行历史,且可能涉及(例如)追踪给定数目的最新近条件分支指令的先前采用或未采用预测的准确性。静态预取一般不依赖于执行历史,且可(例如)在首次遇到条件分支时使用。静态预取为其提供性能优点的一种类型的分支指令是来自被调用程序的返回指令,其中对所述程序的返回地址进行预测以支持对在所述预测返回地址处开始的指令进行预取。
可使用“返回堆栈”来支持对程序调用返回指令的返回地址的静态预测。典型的返回堆栈包括多层级缓冲区。当预测或辨别程序调用指令时,可将相应的返回地址从微处理器的指令管线的执行级中取出并推到返回堆栈上。相反,当预测或辨别程序返回指令时,将当前位于返回堆栈顶部的返回地址从堆栈上托,并用作所预测的用于指令预取的返回地址。
因此,在常规的管理返回堆栈的方法中,当遇到程序调用时将相应的预测返回地址依序推到返回堆栈上。相反,当遇到程序返回指令时,将返回地址依序从堆栈上托。这种常规方法不正确地预测多层级程序调用中的程序返回地址,其中连续程序调用“串”在一起,因为串中的每一随后程序调用的返回指令均指回到前一程序调用的返回指令。
最佳地,应当针对所述串中的最后程序的返回指令预测的返回地址是对应于所述串中的第一程序调用的返回地址。然而,由于连续程序调用导致将每一嵌套程序调用的返回地址依序推到返回堆栈上,因而针对最后程序调用的返回指令上托的返回地址是所述串中的紧接在前的调用程序的返回地址。如果从所述地址继续预取,那么接下来预取的指令将是另一返回,其将再次上托返回堆栈。以此方式连续上托返回堆栈不必要地降低了处理器性能且浪费了电力。
发明内容
本发明包括一种使得微处理器能够正确地预测多层级程序调用中的初始顶部层级调用程序的返回地址的方法和设备。此类多层级程序调用包括一串两个或两个以上连续程序调用,其中每一随后程序的返回地址均指回到紧接在前的程序的返回指令。根据本发明的一个或一个以上实施例的返回堆栈电路不是提供最后推入的返回地址作为串中调用的最后程序中的返回指令的目标,而是从堆栈依序上托某一数目的返回地址,所述数目等于连续调用程序串中的返回层级的数目。这样做时,返回堆栈电路检索初始调用程序的返回地址,可将所述返回地址提供到指令预取单元作为指令预取的目标。
因此,在一个实施例中,本发明包括一种基于以下操作来管理返回堆栈的方法:确定与返回指令相关联的返回层级数目,且将所述数目的返回地址从返回堆栈上托。可将最后上托的地址提供到指令预取单元作为用于指令预取的目标地址。将从堆栈上托以获得给定返回指令的预测返回地址的返回地址数目可从与返回指令相关联的静态层级指示符值中读取,或者可在程序执行期间在运行中确定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于高通股份有限公司,未经高通股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210068384.1/2.html,转载请声明来源钻瓜专利网。