14 个解决方案
#1
不了解你这种CCS 编译器,也不了解你所说的并行是否vc中的多线程。
不过:
《intel 处理器》这本书中有不少 VC与汇编混合编程的例子,可以看看。
不过:
《intel 处理器》这本书中有不少 VC与汇编混合编程的例子,可以看看。
#2
恩。。多谢留言!并行的话其实就是DSP他能同时执行8条指令。。。我去看看这本书。。谢谢推介!!
#3
看对应C编译器是怎么支持嵌入asm的鸟。
#4
貌似在某本书看过 tc可以的
#5
#6
“利用DSP的8个并行工作的能力”这应该是类似sse之类的simd指令,一条指令处理多个数据,是数据处理级的并行,不是指令级的并行。你需要研究一下它的指令集手册,把你的数据处理部分转换成并行算法。
#7
刚看了一下TI的网站,TMS320C6678 - 多核定点和浮点数字信号处理器,8核心,可能你说的就是这个东西。这样的话,你需要把代码改成多线程的,每线程运行在一个核心上。
#8
额。。。可能是我一开始没有表达清楚吧。。恩。。TI的C6000系列的DSP好像是都有8个运算器,所以在同一时间内最多可以同时执行8条指令。但是如果用纯C去写代码的话,DSP的这种特性是无法体现出来的,也就没有利用到这款DSP的特性。现在我已经把纯C语句尽可能地优化了,但是还是无法达到能够实时的效果,因为要处理的图像的数据量很大,所以现在我想能用的办法就是把其中能同时执行的C语句转换为汇编来写。。来利用同时执行8条指令的特性。。但是我现在对这个汇编也是刚上手,最近虽然研究了一阵子,,但是真正动起手来还是不知如何去下手,所以我想如果有大神从事或者以前从事过这方面的研究的话,我想请教请教。。。
#9
非常感谢各位的关注!!
#10
啊,这就是超标量优化了,你还是得研究指令集,以便尽可能达到8指令并行的效果,不优化的指令序列的并行度就较低,因为指令、数据的相关性。至于书写代码,还是串行的,没有什么特殊格式,只是在处理器上执行的时候,可以把连续的若干条指令并行。
#11
TI C6000采用的是VLIW结构,有相应的汇编代码可以实现指令的并行化,只需在需要并行执行的指令前加上‘||’,则表示这条指令和上面的指令在同一个时钟周期(CYCLE)内执行。
#12
额。。。。我想把其中的一些语句写成线性汇编,但是我对这个汇编语句不熟,譬如怎么把C中的if...else..语句在汇编中改写。。所以我想大神如果有相应的例程的话,可不可以提供让我学习学习,谢谢。。。
#13
原来如此。不过我感觉这个||只是告诉汇编器把若干指令打包成长指令,能不能并行,还得看指令间的相关性。
#14
如果是自己写的汇编程序的话,在语句前面加上||就是表示把这行语句和上一行语句并行处理,这个肯定是用到了不同的运算器和寄存器的。。而且语句之间肯定不能有相关性。。。不然编译的时候会报错的。:)
#1
不了解你这种CCS 编译器,也不了解你所说的并行是否vc中的多线程。
不过:
《intel 处理器》这本书中有不少 VC与汇编混合编程的例子,可以看看。
不过:
《intel 处理器》这本书中有不少 VC与汇编混合编程的例子,可以看看。
#2
恩。。多谢留言!并行的话其实就是DSP他能同时执行8条指令。。。我去看看这本书。。谢谢推介!!
#3
看对应C编译器是怎么支持嵌入asm的鸟。
#4
貌似在某本书看过 tc可以的
#5
#6
“利用DSP的8个并行工作的能力”这应该是类似sse之类的simd指令,一条指令处理多个数据,是数据处理级的并行,不是指令级的并行。你需要研究一下它的指令集手册,把你的数据处理部分转换成并行算法。
#7
刚看了一下TI的网站,TMS320C6678 - 多核定点和浮点数字信号处理器,8核心,可能你说的就是这个东西。这样的话,你需要把代码改成多线程的,每线程运行在一个核心上。
#8
额。。。可能是我一开始没有表达清楚吧。。恩。。TI的C6000系列的DSP好像是都有8个运算器,所以在同一时间内最多可以同时执行8条指令。但是如果用纯C去写代码的话,DSP的这种特性是无法体现出来的,也就没有利用到这款DSP的特性。现在我已经把纯C语句尽可能地优化了,但是还是无法达到能够实时的效果,因为要处理的图像的数据量很大,所以现在我想能用的办法就是把其中能同时执行的C语句转换为汇编来写。。来利用同时执行8条指令的特性。。但是我现在对这个汇编也是刚上手,最近虽然研究了一阵子,,但是真正动起手来还是不知如何去下手,所以我想如果有大神从事或者以前从事过这方面的研究的话,我想请教请教。。。
#9
非常感谢各位的关注!!
#10
啊,这就是超标量优化了,你还是得研究指令集,以便尽可能达到8指令并行的效果,不优化的指令序列的并行度就较低,因为指令、数据的相关性。至于书写代码,还是串行的,没有什么特殊格式,只是在处理器上执行的时候,可以把连续的若干条指令并行。
#11
TI C6000采用的是VLIW结构,有相应的汇编代码可以实现指令的并行化,只需在需要并行执行的指令前加上‘||’,则表示这条指令和上面的指令在同一个时钟周期(CYCLE)内执行。
#12
额。。。。我想把其中的一些语句写成线性汇编,但是我对这个汇编语句不熟,譬如怎么把C中的if...else..语句在汇编中改写。。所以我想大神如果有相应的例程的话,可不可以提供让我学习学习,谢谢。。。
#13
原来如此。不过我感觉这个||只是告诉汇编器把若干指令打包成长指令,能不能并行,还得看指令间的相关性。
#14
如果是自己写的汇编程序的话,在语句前面加上||就是表示把这行语句和上一行语句并行处理,这个肯定是用到了不同的运算器和寄存器的。。而且语句之间肯定不能有相关性。。。不然编译的时候会报错的。:)