完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-22 11:19 编辑
如何知道,比如具体优化的某个函数是否发生了L1P和L1D的cache 冲突情况,用来知道这个函数是否有cache优化空间? |
|
相关推荐
6个回答
|
|
如果不先判断某个函数是否发生了了L1P冲突和L1D冲突,又怎么能知道去优化哪里
|
|
|
|
关键是你没有办法预知L1P和L1D冲突,你只能是根据TI的一些guide采取一些能够避免冲突的措施,对代码尽心调整。另外说一下,你是要做一个库,还是一个工程?如果是库的话,放到不同的应用当中得到的结果也会不一样,需要profile,然后看反馈的信息再调整代码。 |
|
|
|
cmh8 发表于 2018-6-22 05:04 可以详细阅读《TMS320C64x+ DSP Cache User's Guide》,了解一下 3.4.3 Avoiding L1P Conflict Misses .................................................................................... 56 3.4.4 Avoiding L1D Conflict Misses.................................................................................... 60 3.4.5 Avoiding L1D Thrashing .......................................................................................... 62 3.4.6 Avoiding Capacity Misses ........................................................................................ 64 3.4.7 Avoiding Write Buffer Related Stalls ............................................................................ 66 |
|
|
|
cmh8 发表于 2018-6-22 05:04 1. 关于你说的没办法预知L1P和L1D冲突问题 我想说的是,那是因为对cache的运行机制没有彻底了解,烂熟于心,对于DSP的二级缓冲机制的不了解,必然会觉得DSP像一个黑盒子一样,不可预测。 如果了解了二级缓存的运行机制,代码和数据是如何从DDR导入到L2CACHE,地址是如何映射的,数据内容是如何替换的等等。只有了解了这些基本知识,才能对代码进行判断和分析,预知。 2. 关于ti的一些建议问题,以前也感觉优化只能跟着ti的文档走,只是一些技巧,这里搞一下,那里搞一下,往往ti列举的例子都是很特殊的,它举的例子,你实际中根本不会碰到,问题在于没有了解ti推荐技巧的本质所在,不知道背后的实质,不知道ti为什么这么做,就很被动。 |
|
|
|
viczeng 发表于 2018-6-22 05:38 你好, 抱歉,可能没有表达准确,我想表达的意思是你的对于L1P和L1D的冲突,在你写代码的时候是无法准确预知的,只有代码写完了,然后可以通过CCS profile的功能,才能看到那些函数出现了L1P,L1D的冲突,冲突占用的cycle是多少等等。 同意你关于熟悉二级缓存机制对于有效避免冲突的观点,对于DSP的二级CACHE缓存机制越是熟悉,在写代码的过程中,就能通过一些技巧和经验避免冲突。关于DSP的二级缓存机制,可以参考《TMS320C64x DSP Two-Level Internal Memory Reference Guide》 http://www.ti.com/lit/ug/spru610c/spru610c.pdf。 多谢你的建议,需要了解优化的技巧,需要了解DSP流水线的结构,缓存的机制,冲突产生的原因,BIOS的工作机制,内存的使用,编译器,EDMA的使用,DSP指令的功能单元的作用以及工作原理等等,是一个系统化的过程。 关于优化,我推荐你看一下 《TMS320C6000 Programmer’s Guide》 http://www.ti.com/lit/ug/spru198k/spru198k.pdf,里面有一些C代码以及编译器选项的优化。 |
|
|
|
cmh8 发表于 2018-6-22 05:51 我要谢谢你的! |
|
|
|
只有小组成员才能发言,加入小组>>
351 浏览 1 评论
546 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
790 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
660 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
84浏览 29评论
307浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
262浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
210浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
69浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 14:38 , Processed in 1.257120 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号