一种轮循环定位缓存器设计方法及轮循环定位缓存器技术

技术编号:39440767 阅读:14 留言:0更新日期:2023-11-19 16:23
本发明专利技术涉及密码算法处理器技术领域,公开了一种轮循环定位缓存器设计方法及轮循环定位缓存器,该方法,基于分支预测结构实现,通过解析分支结构的预测信息实现轮循环定位缓存和取指目标切换。本发明专利技术解决了现有技术存在的程序存储器访问频率高、动态功耗高等问题。动态功耗高等问题。动态功耗高等问题。

【技术实现步骤摘要】
一种轮循环定位缓存器设计方法及轮循环定位缓存器


[0001]本专利技术涉及密码算法处理器
,具体是一种轮循环定位缓存器设计方法及轮循环定位缓存器。

技术介绍

[0002](1)分组密码专用指令处理器
[0003]分组密码专用指令处理器,是一种对信息数据进行加解密处理的专用集成电路,采用流水线结构设计,具有针对密码算法运算特征优化的指令集,通过静态配置和动态切换算法程序,实现不同的分组密码算法功能,主要提升密码算法处理性能的策略是增加指令并行度和流水线级数。
[0004]分组密码专用指令处理器的总体架构按照功能划分主要可分为:程序存储模块、译码控制模块、密码运算模块和数据传输模块。其中程序存储模块主要用于存放处理器运行时需要执行的运算程序,在取指(IF,Instruction Fetch)阶段根据程序指针(PC,Program Counter)的访问,并在下一个时钟周期输出将要运行的程序指令。该部件普遍存在存储规模大,程序运行期间全程访问的特点,据统计,该部件的运行功耗在整个分组密码专用程序存储模块中占有较高的比例(大约30%~40%左右),因此降低该部件的运行功耗,是降低密码处理器运行功耗的重要方向之一。
[0005]使用分组密码专用指令处理器实现算法编程时,普遍具有:

模式选择结构;

分组循环结构;

子程序调用和返回结构;

子程序轮循环结构;

尾包特别处理结构。运行多种典型的分组算法,并将程序指针PC做分布统计,可以发现

子程序轮循环结构对应的PC重复出现的次数最多,通常是其他结构对应PC出现次数的8倍以上;

分组循环结构次之,出现次数跟数据包的分组个数相等。符合软件工程中20%程序指令占据80%运行时间的“二八法则”,还存在循环体指令条数较少,单次密码处理循环体固定的特点。
[0006]为了降低程序存储器的运行功耗,同时不影响算法执行的正确性,最理想的状态是,所有通过访问程序存储模块获取的指令只需要获取1次,即程序存储模块中相同地址的指令不重复执行访问。为了实现这个目标,需要将可能重复执行的指令缓存起来,并在恰当的时候将对应的指令传递给ID(指令译码)模块。该方法的关键在于:如何判断指令可能重复执行,并将其缓存到轮循环缓存器;又如何在指令出现重复执行时,自动访问轮循环缓存器,同时关掉程序存储模块的时钟。
[0007](2)轮循环缓冲技术
[0008]近年来,为了降低嵌入式处理器中程序存储模块的功耗,除了在电路级采用更高效的低功耗设计手段外,在体系结构上主要采用的方法是:在取指逻辑和程序存储器之间插入一块更小的Cache,用作轮循环体指令的存放与访问。
[0009]Kin等提出一种Fillter Cache,其结构与普通的Cache相同,只是容量更小,可以看作是0级Cache,CPU只能从这个L0 Cache中获取指令。这种策略虽然结构简单,但由于容量太小,指令命中率偏低,L0 Cache需要不断刷新,不仅无法显著降低程序存储器的访问功
耗,还会对程序处理的性能造成影响。
[0010]为了避免对性能的影响以及Cache中tag的比较,Lee等提出一种无tag的Loop Cache,其控制器根据ID译码阶段从指令获取的跳转方向和跳转地址与当前指令地址的相对关系来定位轮循环代码,并将其放入Loop Cache中,然后改由从此Loop Cache中获取指令。这种Loop Cache由硬件仅根据指令译码信息判断是否加载代码,存在相同轮循环代码重复加载的问题,降功耗的效果差强人意。
[0011]还有一些研究者使用了一种预先装载的无tag的Loop Cache:实现根据profile信息,将占执行时间最多的循环放入Loop Cache中,并根据ID译码阶段从指令获取的跳转方向和跳转地址与当前指令地址的相对关系来确定是从Loop Cache中取指还是从程序存储器中取指。这种方法对于特定程序可以达到很好的降低功耗的效果,但由于其静态配置的特性限制了程序的动态切换,使用范围有限。
[0012]胡定磊在其博士论文中提出了一种编译器控制的循环缓冲,由编译器通过对程序的功耗进行分析来决定那个循环放入循环缓冲中,从而达到降低功耗的目的。这种方法需要引入两条特殊指令,用来指引何时将轮循环指令装载到Loop Cache中,以及判定当前是从Loop Cache中取指还是从L1中取指,因此只能在ID译码阶段才能定位轮循环程序,判断并切换取指目标存储器,与进入流水线的指令存在匹配滞后性,从而引入流水线控制开销,特别是对于流水线级数较多的高性能密码处理器而言,影响程序性能的情况更加严重。
[0013]分组密码专用指令处理器是一种嵌入式微处理器,主要面向的是低成本、低功耗的市场,其特点是结构相对简单,密码程序的规模和单次处理数据量也比较有限。因此,需要有针对性地设计一种硬件开销小,定位速度快,降功耗效果明显,不影响数据处理性能的轮循环缓冲和取指切换方案。
[0014](3)分支预测技术
[0015]当多级流水线处理器取出一条分支指令的时候,在流水线的译码或执行阶段才能计算出下一条指令的存储地址,而此时存放在其后顺序位置的多条指令已经进入流水线,但实际上这些指令跳转发生时并不应该被执行。因此,需要在流水线识别到当前指令是分支指令的时候,封闭PC寄存器的同时向指令寄存器输送同步清零信号,使译码器将后续不应该被执行的指令均识别为NOOP指令,形成多个空泡来阻塞流水线。当流水线级数较多,分支指令的执行频率较高时,流水线阻塞将变得非常严重,导致流水线的运行效率大幅降低。
[0016]分支预测技术,就是为了不阻塞流水线的执行,提前在取指阶段预判即将取出的指令是否为分支指令,并对其跳转方向和目标地址进行预计算的技术,其本质是对程序运行行为的归纳总结和记录,是一种机器学习的过程。如果能够对当前正在执行目标代码的条件跳转指令做出较为准确的预测,那么就可以减少甚至避免流水线排空,从而提高流水线的运行效率。
[0017]分支预测主要分为静态预测和动态预测两类。静态预测机制的硬件开销较小,但是其命中率较低;动态预测机制的命中率较高,但是其硬件开销较大。无论采用哪一类分支预测机制,都需要至少维持一份分支预测表,其中每1个表项记录的主要信息包括但不限于:当前指令的PC值,分支目标地址的PC值,分支条件阈值,分支类型等信息,这些信息为密码算法轮循环程序段的定位提供了关键依据。

技术实现思路

[0018]为克服现有技术的不足,本专利技术提供了一种轮循环定位缓存器设计方法及轮循环定位缓存器,解决现有技术存在的程序存储器访问频率高、动态功耗高等问题。
[0019]本专利技术解决上述问题所采用的技术方案是:
[0020]一种轮循环定位缓存器设计方法,基于分支预测结构实现,通过解析分支结构的预测信息实现轮循环定位缓存和取指目标切换。...

【技术保护点】

【技术特征摘要】
1.一种轮循环定位缓存器设计方法,其特征在于,基于分支预测结构实现,通过解析分支结构的预测信息实现轮循环定位缓存和取指目标切换。2.根据权利要求1所述的一种轮循环定位缓存器设计方法,其特征在于,通过解析分支预测器的分支预测信息,定位密码实现程序中轮循环程序段的位置。3.根据权利要求1所述的一种轮循环定位缓存器设计方法,其特征在于,通过对轮循环程序段的加载和缓存,实时切换轮循环缓存器和程序存储器的取指操作。4.根据权利要求1所述的一种轮循环定位缓存器设计方法,其特征在于,包括以下步骤:S1,在处理第1个分组加解密运算时,当分支指令第1次执行时,分支预测器触发分支预测失败,并记录分支指令地址和分支目标地址。5.根据权利要求4所述的一种轮循环定位缓存器设计方法,其特征在于,包括以下步骤:S2,分支指令第2次执行,分支预测器判定分支预测有效,此时若分支预测目标地址小于当前指令地址,则将当前指令地址认定为轮循环程序段的触发地址,在对应的轮循环定位表中记录轮循环标志tag、轮循环程序在轮循环定位器中的起始地址addr、以及轮循环程序段指令条数num。6.根据权利要求5所述的一种轮循环定位缓存器设计方法,其特征在于,包括以下步骤:S3,从下一条指令开始将指令加载到轮循环缓存器,将轮循环计数器cnt置为轮循环程序段指令条数num,每缓存1条指令自减1,直到轮循环计数器cnt清零或轮循环缓存器没有剩余空间。7.根据权利要求6所述的一种轮循环定位缓存器设计方法,其特征在于,包括以下步骤:S4,分支指令第3~n次执行,分支预测器判定分支预测有效,检测分支预测表项中的轮循环标志tag,若tag有效则切换取指目标为轮循环缓存器,将轮循环计数器cnt置为轮循环程序段指令条数num,每取1条指令自减1,当再次触发分支预测失败或者轮循环计数器cnt清零时或者取指地址超过轮循环缓存器容量时,切换取指目标为程序存...

【专利技术属性】
技术研发人员:吴朋庭李军王明东马云飞梅瑞
申请(专利权)人:成都三零嘉微电子有限公司
类型:发明
国别省市:

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

1