System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机指令架构领域,具体而言,涉及一种超长指令字架构快速跳转的方法和系统。
技术介绍
1、数字信号处理器(dsp)是一种针对数字信号处理算法的微处理器芯片,广泛应用于音频信号处理、电信、数字图像处理、雷达、声纳和语音识别系统,以及移动电话、磁盘驱动器和高清电视(hdtv)产品等日常消费电子设备。dsp芯片的目标通常是测量、滤波或压缩连续的信号,计算密集且相对规整因此dsp芯片常使用能够支持多条指令并行的专用核心架构。
2、高性能dsp核心通常采用超长指令字架构,一个指令字中包含多条可以并行的指令。编译器对源程序进行分析整理,将可以并行的指令打包放置在一个固定长度的指令字中,但有时找不到足够多并行的指令,因此指令字可能放不满。为了增加可执行码的指令密度,减少指令字空洞,编译器通常为每条指令增加一个并行位表示其是否可以和上一条指令并行,从而将可以并行和不能并行的指令都放在同一个指令字当中,即一个指令字中可能包含多个并行指令包,从而提升了指令字中有效指令的密度。另外,编译器为了提升程序执行效率,还会在分支延时槽中放置和分支指令没有依赖关系的指令,分支延时槽中的指令不管分支跳转与否都会执行,因此可以尽可能减少等待分支计算完毕产生的流水线停顿。
3、根据程序特点,有时可能无法找到足够的指令将分支延时槽填充饱满(假设分支延时槽长度为5,指令字内最大并行指令数为8,将分支延时槽填满需要40条指令,找不到足够的指令时甚至需要用nop来占位),因此可能在分支跳转时,指令流水线已经将分支延时槽内的指令全部取得,甚至
4、理想状态下,对于高性能dsp核心中的分支指令,既要保证分支延时槽内指令准确执行,即不漏取指令也不会将多取的分支延时槽外的指令发送到指令流水线后端,而且还需要快速跳转到相应的目标地址处取指执行,在保证正确性的前提下减少延时槽外非分支目标处的冗余取指,提高核心取指效率。
技术实现思路
1、为了解决上述技术问题,本申请提供一种超长指令字架构分支指令跳转取指方法和系统,通过在分支跳转时提前判断分支延时槽中的指令是否都已取得,进而可以快速跳转到分支目标处取指,减少等待分支延时槽的开销,减少取得无用指令的数量,实现遇到分支跳转时尽可能快地从分支目标处取指执行。
2、具体的,本申请的技术方案如下:
3、第一方面,本申请公开一种超长指令字架构分支指令跳转取指方法,包括:
4、通过地址仲裁站台对指令进行取指地址仲裁,得到所述指令的仲裁地址;
5、通过缓存访问站台接收所述仲裁地址并访问指令缓存;
6、通过命中检查站台检查所述指令取指是否命中所述指令缓存,并判断指令分析站台是否能接收所述指令;在所述命中检查站台设置指令包计数器和跨越标志;所述指令包计数器用于从所述指令缓存中取得指令字并分析所述指令缓存中的并行指令包数;所述跨越标志用于判断最后一个所述并行指令包是否跨越所述指令字;
7、当检查到所述指令取指命中所述指令缓存时,将所述指令字、所述指令包计数器值和所述跨越标志写入取指缓冲;
8、通过所述指令分析站台缓存所述已经取得的指令,并对取得的指令进行并行位分析,将指令字分解为并行指令包并发送到后续站台;通过所述指令分析站台设置n个取指缓冲条目,取指缓冲实现为循环缓冲;所述取指缓冲分别设置一个分配指针和一个取指指针,所述分配指针用于将取出的指令字、指令包计数器值和跨越标志写入当前要分配的取指缓冲条目,所述取指指针用于选择要发送到下一流水站台的并行指令包;在所述指令分析站台设置分支延时槽计数器,所述分支延时槽计数器用于计算所述分支延时槽中缓存的并行指令包数;
9、通过在所述指令执行站台设置分支延时槽距离计数器,所述分支延时槽距离计数器用于统计当前的分支延时槽长度;在产生分支跳转请求后,所述指令执行站台将所述分支延时槽长度发送到所述指令分析站台进行分支延时槽发送判断。
10、在一些实施方式中,所述的一种超长指令字架构分支指令跳转取指方法,还包括步骤:
11、通过指令分派站台将所述并行指令包中的所述指令分派到具体的执行部件对应的译码站台;
12、通过指令译码站台对所述指令进行译码;
13、通过所述指令执行站台执行所述指令,得到分支跳转的目标地址,将所述目标地址反馈到地址仲裁站台参与所述取指地址仲裁。
14、在一些实施方式中,所述取指缓冲设置所述分配指针,指示当前取出的指令字要写入的取指缓冲条目;
15、每当取指命中指令缓存且取指缓冲可接收时,将所述指令字、所述指令包计数器值和所述跨越标志写入所述分配指针所指条目。当所述分配指针所指条目有效时,此时所述分配指针必然和所述取指指针重合,表示所述取指缓冲已满,无法接收新写入的指令;
16、每当写入一个新的指令字后,所述分配指针顺序移动到下一条目。
17、在一些实施方式中,所述取指缓冲设置所述取指指针,指示当前要发送并行指令包的取指缓冲条目;
18、每当有并行指令包发送到下一流水站台时,将对应的指令有效位清0,若所述取指指针所指取指缓冲条目的跨越标志有效,表示当前并行指令包跨越了指令字,则在发送最后一个并行指令包时要和下一指令字开始的并行指令包一同发送到下一站台,若下一指令字还未取得则需等待。当取指指针所指条目无有效指令时,表示取指缓冲已空,没有指令需要发送到下一流水站台;
19、当前所指取指缓冲条目中所有指令发送完毕后,将所述取指指针顺序移动到下一条目。
20、在一些实施方式中,所述的一种超长指令字架构分支指令跳转取指方法,还包括步骤:
21、当所述指令分析站台接收到由所述指令执行站台发送的分支跳转请求时,比较所述指令分析站台的所述分支延时槽计数器的值和所述分支延时槽距离计数器的值;
22、若所述分支延时槽计数器的值大于等于所述分支延时槽距离计数器的值,则响应所述分支跳转请求,从分支目标地址处取指执行,并清除所述分支延时槽外多取的指令;
23、若所述分支延时槽计数器的值小于所述分支延时槽距离计数器的值,则不响应所述分支跳转请求,将所述分支跳转请求、所述分支目标地址和所述分支延时槽的长度装入取指请求队列,同时保存当前分支延时槽计数器值;等待当前分支延时槽中的所述并行指令包全都取得后从分支目标地址处取指执行。
24、在一些实施方式中,所述的一种超长指令字架构分支指令跳转取指方法,还包括步骤:
25、当所述分支延时槽计数器的值小于所述分支延时槽距离计数器的值,等待当前分支延时槽中的所述并行指令包发送的过程中,每收到一个新取的指令字,将其并行指令包数累计到所述已保存的分支延时槽计数器上;
26、若所述分支延时槽计数器的值大本文档来自技高网...
【技术保护点】
1.一种超长指令字架构分支指令跳转取指方法,其特征在于,包括步骤:
2.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
3.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
4.如权利要求3所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
5.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
6.如权利要求5所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
7.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
8.如权利要求7所述的一种超长指令字架构分支指令跳转取指方法,其特征在于:
9.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于:
10.一种超长指令字架构分支指令跳转取指系统,其特征在于,包括:
【技术特征摘要】
1.一种超长指令字架构分支指令跳转取指方法,其特征在于,包括步骤:
2.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
3.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
4.如权利要求3所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括步骤:
5.如权利要求1所述的一种超长指令字架构分支指令跳转取指方法,其特征在于,还包括...
【专利技术属性】
技术研发人员:王国澎,
申请(专利权)人:上海耀芯电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。