完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
C6000系列处理器的闪光之处就是它可以通过循环提高运行速度。这在以循环为中心的数字信号处理、图像处理和其他数学程序方面有着非常明显的优势。“软件流水”的技术对提高循环代码的性能做出的贡献最大。软件流水只有在使用-o2 或 -o3 编译选项时,才会被启用。
如下图示,如果不使用软件流水,循环就会在循环体 i 完成后再开始循环体 i+1。软件流水技术允许循环体出现重叠。因此,只要能够保持正确性,即可在循环体 i 完成之前开始循环体 i+1。在通常情况下,使用软件流水调度技术与不使用软件流水调度技术相比,使用时计算机资源利用率会高很多。 在软件流水循环中,即便一个循环体可能需要 s 个周期才能完成,但每隔 ii 个指令周期会启动一个新的循环。在一个高效的软件流水循环中,其中 ii 所以我们进行循环优化的目的就是减少ii,进而降低整体循环执行时间。 我们使用建议的选项进行编译:-k-s -mw 。得到汇编文件和软件流水信息 假定有以下函数 BasicLoop() ... ;* SOFTWARE PIPELINE INFORMAtiON;*;* Loop source line : 5;* Loop opening brace source line : 5;* Loop closing brace source line : 6;* Known Minimum Trip Count : 1 ;* Known Max Trip Count Factor : 1;* Loop Carried Dependency Bound(^) : 7;* Unpartitioned Resource Bound : 2;* Partitioned Resource Bound(*) : 2;* Resource Partition:;* A-side B-side;* .L units 0 0 ;* .S units 0 1 ;* .D units 2* 1 ;* .M units 0 0 ;* .X cross paths 1 0 ;* .T address paths 2* 1 ;* Long read paths 0 0 ;* Long write paths 0 0 ;* Logical ops (.LS) 0 0 (.L or .S unit);* Addition ops (.LSD) 1 0 (.L or .S or .D unit);* Bound(.L .S .LS) 0 1;* Bound(.L .S .D .LS .LSD) 1 1;*;* Searching for software pipeline schedule at ...;* ii = 7 Schedule found with 1 iterations in parallel...;* SINGLE SCHEDULED ITERATION;*;* C25:;* 0 LDW .D1T1 *A4++,A3 ; |6| ^;* || LDW .D2T2 *B4++,B5 ; |6| ^;* 1 [ B0] BDEC .S2 C24,B0 ; |5|;* 2 NOP 3;* 5 ADD .L1X B5,A3,A3 ; |6| ^;* 6 STW .D1T1 A3,*A5++ ; |6| ^;* 7 ; BRANCHCC OCCURS [C25] ; |5|;*----------------------------------------------------------------------------*L1: ; PD LOOP PROLOG;** --------------------------------------------------------------------------*L2: ; PIPED LOOP KERNELLDW .D1T1 *A4++,A3 ; |6| <0,0> ^|| LDW .D2T2 *B4++,B5 ; |6| <0,0> ^[ B0] BDEC .S2 L2,B0 ; |5| <0,1>NOP 3ADD .L1X B5,A3,A3 ; |6| <0,5> ^STW .D1T1 A3,*A5++ ; |6| <0,6> ^;** --------------------------------------------------------------------------*L3: ; PIPED LOOP EPILOG;** --------------------------------------------------------------------------*软件流水循环信息包括循环开始的源代码行、对循环资源和延迟要求的描述以及循环是否已展开(还有其他信息)。使用 -mw 编译时,该信息还包含单个已调度循环体的副本。C6000 Programmer's Guide(C6000 程序员指南)的第 4 章详细介绍了 -mw 注释块。尽管此信息不是最新的,但是在编写本文时它是可以获得的最好信息。 启动间隔 (ii) 为 7。这意味着在稳定状态,每 7 个 CPU 周期计算出一次结果(相当于原始循环)。因此,基准 CPU 性能为 7 个指令周期/结果。 通过分析该软件流水信息我们就可以找到影响ii大小的瓶颈所在 此处为Loop Carried Dependency Bound(^) : 7,即循环体的相关性限制为7 |
|
相关推荐
3个回答
|
|
怎么不更新了,亟需优化方面的知识。
|
|
|
|
关于优化详情阅读C6000编程指南及相关的loop optimization手册。 http://www.ti.com/lit/ug/spru198k/spru198k.pdf http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprabg7&fileType=pdf |
|
|
|
请参考 基本介绍<二> http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/16842.aspx |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
694 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
605 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1065 浏览 1 评论
757 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
529 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
171浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
133浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
129浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
64浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 02:09 , Processed in 0.872642 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号