[发明专利]一种CPU中用于消除程序无条件跳转开销的方法及装置有效
申请号: | 201911301010.8 | 申请日: | 2019-12-17 |
公开(公告)号: | CN111026442B | 公开(公告)日: | 2022-08-02 |
发明(设计)人: | 王粟;肖佐楠;郑茳 | 申请(专利权)人: | 天津国芯科技有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 天津滨海科纬知识产权代理有限公司 12211 | 代理人: | 耿树志 |
地址: | 300457 天津市滨海新区开发*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 cpu 用于 消除 程序 无条件 跳转 开销 方法 装置 | ||
本发明提供了一种使用在嵌入式CPU中的,用于消除程序无条件跳转开销的方法。该方法通过在汇编程序中插入CPU寄存器赋值指令,将无条件跳转的源地址和目的地址信息,在跳转发生前就输入CPU内部用于控制跳转的寄存器中。使得CPU能够提前获取无条件跳转的地址信息,进而实现在跳转发生时,无缝切换取指流水线的效果。
技术领域
本发明属于对软件程序中无条件跳转的加速技术领域,尤其是涉及一种通过处理器汇编程序优化实现无条件跳转的加速方法。
背景技术
CPU(中央处理器)的核心功能是读取并执行汇编程序。读取并执行汇编程序的第一步就是取指令,即CPU向总线或存储设备发出目标指令的地址,总线或存储设备根据CPU发出的地址,返回目标指令给CPU的过程。汇编程序一般是顺序读取并执行的,直到发生程序的跳转。也就是说,取指时目标指令的地址是顺序递增的,直到遇到跳转指令。
从CPU发出地址,到总线或存储设备返回目标指令,是有一定延迟时间的。为了整体上在一定时间内尽量多的取指,CPU通常采用流水线的方式发出地址和接受指令,如图1所示。CPU在时间t0发出目标地址0,在下一个cycle(时钟周期)不等指令0返回,就继续顺序发出地址1,如此下去。当总线或存储设备返回目标地址0所对应的指令0时,CPU已流水线化地发出了d个地址,即CPU的取指延迟是d。
如果指令0经过CPU译码,发现正好是一条跳转指令,它的执行会将CPU的下一条指令的目标地址跳转到了一个新的地址n,那么时间t(d+j)之前发出的地址和已经取得的指令,就都作废了。CPU重新流水线化地发出地址n及其后续地址。当指令n进入CPU时,时间已经过去了t(d+j+d)了。
总结起来,汇编程序中的每一次跳转,使得CPU相对浪费了d+j个cycle,其中d是取指延迟时间,j是跳转指令译码和目标地址的计算时间。汇编程序的跳转打断了原有的取指流水线,不仅使CPU陷入等待而不能全速运行,而且取到了很多无用的指令,白白浪费了宝贵的总线带宽资源。可以说,汇编程序中的跳转是CPU性能的主要影响因素之一。
程序跳转,按照类型,可以分为无条件跳转和条件跳转两大类。无条件跳转是指程序会无条件地跳转到另一个确定的指令地址。在软件上通常对应着子函数的调用和退出。条件跳转是指程序会根据某个变量的值,来判断是否跳转到另一个确定的指令地址。由于条件跳转不在本文讨论范围内,因此本文之后的跳转都默认指代无条件跳转。
对无条件跳转的加速方法可以分为软件和硬件两个方面。在软件上通常着重减少程序跳转的次数,比如优化编译器,最常采用的是内联函数等。在硬件上,着重减少跳转产生的延迟开销,最常采用的是跳转地址查找表。
但在实际情况中,内联函数对于多次反复调用子函数的情况,会显著增大程序体量,进而增加总线取指负担,得不偿失。而跳转地址查找表大多采用类似Cache的结构,导致源地址到目的地址的首次跳转,都是未命中的。只有再次发生相同的跳转时才可能命中,因此对于程序中只发生一次的那些跳转,查找表并无作用。此外,查找表容量都很小,即使同一个跳转多次发生,如果相隔时间稍长,往往也不能命中。
目前主流的CPU,已经综合运用了上述多种软硬件机制来减少跳转带来的开销,但从实际效果上只是起到了一定的缓解,并未从根本上消除跳转对取指流水线的影响。
发明内容
有鉴于此,本发明旨在提出一种CPU中用于消除程序无条件跳转开销的方法及装置,使得CPU能够提前获取无条件跳转的地址信息,进而实现在跳转发生时,无缝切换取指流水线的效果。
第一方面,本发明提供一种CPU中用于消除程序无条件跳转开销的方法,包括如下步骤:
1)在汇编程序中找出无条件跳转指令,并记录其跳转目的程序标号,再为该条跳转指令本身添加一个程序标号;
2)在跳转指令之前,插入若干条CPU寄存器赋值指令,其所赋的值包含该跳转指令的目的地址信息和源地址信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津国芯科技有限公司,未经天津国芯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911301010.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:主动冷却试验用高效超临界煤油冷凝器
- 下一篇:一种位敏阳极探测器及其制作方法