System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于随机指令集的哈佛架构多级指令缓存测算方法技术_技高网

一种基于随机指令集的哈佛架构多级指令缓存测算方法技术

技术编号:42374538 阅读:6 留言:0更新日期:2024-08-16 14:58
本发明专利技术公开了一种基于随机指令集的哈佛架构多级指令缓存测算方法,针对被测芯片选取特定汇编指令构建基础测试单元,在测试过程中随机动态生成测试指令集,通过对测试指令集执行过程的监测获取被测芯片性能的显著变化点,显著变化点所对应的已执行代码块的缓存大小即为其对应级别的指令缓存大小,实现了哈佛架构芯片的每一级指令缓存大小的软件方式测算,为循环展开等编译器优化策略的制定提供可量化的参数支撑。

【技术实现步骤摘要】

本专利技术属于计算机软件开发,具体涉及一种基于随机指令集的哈佛架构多级指令缓存测算方法


技术介绍

1、循环展开(loop unrolling)是一种程序优化技术,用于减少程序运行过程中的循环控制开销,可以提高程序执行的效率。它通过将循环体的代码复制多次来减少循环的迭代次数,从而减少了循环控制的开销,减少分支预测错误的可能性,提高指令级并行性及cpu指令调度的能力。

2、冯诺依曼架构和哈佛架构最主要的区别在于存储器的布局,在冯诺依曼架构中指令和数据使用同一套存储器和总线结构,而在哈佛架构中指令存储器和数据存储器是分开的、各自拥有独立的总线结构。

3、在冯诺依曼架构下,由于指令和数据共享同一存储空间,较大的循环展开可能会导致代码体积增加,进而增加指令缓存的压力。如果过度展开循环,可能会造成指令缓存命中率下降,反而会降低程序性能。因此,在进行循环展开时需要权衡代码大小和执行效率之间的平衡。在哈佛架构下,指令和数据是分开的,循环展开增加的代码体积只影响指令存储器。这样可以在不影响数据缓存的情况下对循环进行更大幅度的展开,尤其是在指令存储器容量较大时。哈佛架构能够通过独立的指令通路来减轻由于循环展开导致的指令带宽需求,因此适合进行更激进的循环展开。然而,无论那种架构都需要避免过度展开所导致的指令缓存溢出问题,因为溢出后指令需要去内存中读取,这会导致性能急剧下降。

4、因此,循环展开时需要考虑指令缓存的大小。对于哈佛架构的处理器,由于其数据缓存(data cache)和指令缓存(instruction cache)是分开的,因此测量指令缓存大小尤其是多级指令缓存大小的方法与测量统一缓存(unified cache)存在重要差异,现有方式无法准确度量哈佛架构下多级指令缓存的大小。


技术实现思路

1、有鉴于此,本专利技术提供了一种基于随机指令集的哈佛架构多级指令缓存测算方法,实现了哈佛架构芯片的每一级指令缓存大小的软件方式测算。

2、本专利技术提供的一种基于随机指令集的哈佛架构多级指令缓存测算方法,具体包括以下步骤:

3、步骤1、根据被测芯片支持的汇编指令构造基础测试单元,基础测试单元由多条仅在寄存器内执行、不涉及内存访问且串行化的汇编指令构成,其中,最后一条汇编指令为跳转指令,将基础测试单元的大小记为基础长度;

4、步骤2、启动测试,在指令地址空间分配指令空间,将其记为代码空间,代码空间的大小为基础长度的整数倍且大于各级指令缓存大小的总和;在数据地址空间分配数据空间保存跳转地址数组,跳转地址数组内每个成员为基础测试单元内跳转指令的跳转目标地址;随机改变基础测试单元,设置其中的跳转目标地址,再使用基础测试单元填满代码空间,代码空间内的数据即为待执行的测试指令集;

5、步骤3、执行测试指令集,同时获取执行时间及被测芯片的性能作为监测结果;执行完毕后根据监测结果确定被测芯片性能的显著变化点,获取显著变化点所对应的已执行的代码块,根据已执行的代码块计算其所占缓存大小,得到显著变化点与缓存大小之间的对应关系,这些缓存大小即为被测芯片各级指令缓存大小。

6、进一步地,所述基础测试单元中的汇编指令之间均不存在相互依赖的逻辑关系。

7、进一步地,在启动测试前结束被测芯片内正在执行的所有计算任务。

8、进一步地,所述步骤2中所述使用基础测试单元填满代码空间,包括以下步骤:

9、步骤2.1、代码空间中包含多个长度为基础长度的代码块,令当前代码块id的取值为0;

10、步骤2.2、查找未被填充的代码块,若存在则使用该代码块id更新当前代码块id,若不存在则结束本流程;随机改变基础测试单元中汇编指令的前后执行顺序,形成当前基础测试单元;

11、步骤2.3、随机生成跳转块id,该跳转块id满足跳转块id与当前代码块id之差的绝对值与基础长度之积不小于阈值,且与该跳转块id对应的代码块未被填充;该跳转块id对应待跳转代码块,将待跳转代码块的起始地址作为当前基础测试单元内跳转指令的跳转目标地址;

12、步骤2.4、采用当前基础测试单元填充当前代码块id对应的代码块,并将代码块标记为已填充;执行步骤2.2。

13、进一步地,所述阈值为被测芯片的一级指令缓存的大小。

14、进一步地,所述步骤2.3中将待跳转代码块的起始地址保存到跳转地址数组中,将其在跳转地址数组中的索引作为当前基础测试单元内跳转指令的跳转目标地址。

15、进一步地,在执行测试指令集之前,执行多次对跳转地址数组的循环读取操作。

16、进一步地,在所述基础测试单元中增加多个空操作指令。

17、有益效果

18、本专利技术针对被测芯片选取特定汇编指令构建基础测试单元,再根据基础测试单元中测试过程中随机动态生成测试指令集,通过对测试指令集执行过程的监测获取被测芯片性能的显著变化点,显著变化点所对应的已执行代码块的缓存大小即为其对应级别的指令缓存大小,实现了哈佛架构芯片的每一级指令缓存大小的软件方式测算,为循环展开等编译器优化策略的制定提供可量化的参数支撑。

本文档来自技高网...

【技术保护点】

1.一种基于随机指令集的哈佛架构多级指令缓存测算方法,其特征在于,具体包括以下步骤:

2.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,所述基础测试单元中的汇编指令之间均不存在相互依赖的逻辑关系。

3.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,在启动测试前结束被测芯片内正在执行的所有计算任务。

4.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,所述步骤2中所述使用基础测试单元填满代码空间,包括以下步骤:

5.根据权利要求4所述的哈佛架构多级指令缓存测算方法,其特征在于,所述阈值为被测芯片的一级指令缓存的大小。

6.根据权利要求4所述的哈佛架构多级指令缓存测算方法,其特征在于,所述步骤2.3中将待跳转代码块的起始地址保存到跳转地址数组中,将其在跳转地址数组中的索引作为当前基础测试单元内跳转指令的跳转目标地址。

7.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,在执行测试指令集之前,执行多次对跳转地址数组的循环读取操作。

8.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,在所述基础测试单元中增加多个空操作指令。

...

【技术特征摘要】

1.一种基于随机指令集的哈佛架构多级指令缓存测算方法,其特征在于,具体包括以下步骤:

2.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,所述基础测试单元中的汇编指令之间均不存在相互依赖的逻辑关系。

3.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,在启动测试前结束被测芯片内正在执行的所有计算任务。

4.根据权利要求1所述的哈佛架构多级指令缓存测算方法,其特征在于,所述步骤2中所述使用基础测试单元填满代码空间,包括以下步骤:

5.根据权利要求4所述的哈佛架构多级...

【专利技术属性】
技术研发人员:温研刘忠新
申请(专利权)人:长沙麟卓信息科技有限公司
类型:发明
国别省市:

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

1