DSP、CUDA、VIP7000VIP7000:shader core是2个,每个shader core有4个寄存器文件,每个寄存器文件有128个寄存器,每个寄存器有128bit(一条指令可以处理128bit数据).
线程切换0开销. 一条指令执行完毕后,可以立刻拿到结果,没有数据延迟CUDA:shader core数量多,但寄存器32bit.DSP: VNW架构,指令里面的功能单元的并行,实现加速. 线程切换零开销. 指令执行需要数据延迟. 用汇编语言写.
VIP7000非常方便,一个图像分块,只需考虑一个小块图像即可. 处理一个小块图像,相当于处理一个线程. 写完一个线程配上相应的参数,自动会有驱动把整个算法分参,按照这个线程去做.
VIP7000有2个shader core, 每个shader core有4个寄存器文件,每个寄存器文件有128个寄存器,每个寄存器128bit. 写openvx程序的时候,只需要关注一个寄存器文件即可.
GPU可隐藏数据延迟,DSP开发中shader core去访问DDR,需要等待数据周期.DSP关注点, 减少数据延迟和程序优化.VIP7000,写一个线程,只需要关注一个寄存器文件就可以了. 如果kernel里面需要129个寄存器,则第129个寄存器需要等待。等到前128个寄存器里的数据处理完空出来,然后把第129个数放进去,同时把L1-cache里的数据加载到剩余的127个寄存器里继续使用.VIP7000, shader core不同,驱动自动拆分,程序不用改动.VIP7000, 浮点的加减乘除都可用指令出结果. 也可自动对图像的边界进行自动处理.
VIP7000指令集: shader指令 EVIS指令(24条)指令集扩展:DSP有些功能,想把它作为指令集的加速,DSP无法进行. VIP7000, 在GPU的基础上加了EVIS指令,定义指令非常方便,在指定级别的基础上进行加速.数据管理差异: DSP 混合memory架构, L1 L2 DDR DMA Cache的一致性. VIP7000, 多core的并行方式,来隐藏数据延迟. shader core共享一个L1-cache.
视觉算法,VIP7000需要,DSP需要C、C++, VIP7000需要,DSP需要Opencl,VIP7000支持,DSP不支持指令集,VIP7000(EVIS 24条指令),DSP几百条指令并行汇编语言,VIP7000不需要,DSP需要DMA, VIP不需要掌握,DSP需要掌握Cache一致性,VIP7000不需要掌握,DSP需要掌握
DSP可以扩展Core, 但两个Core不独立.
对VIP7000来说,分辨率越来越高,相同程序只需要换4个Core的版本即可,而DSP需要重新推翻重来.VIP7000串行单线程的程序架构. VIP7000硬件加速接口,客户可以自己算法固化,做成SDK的方案. DSP是很难做到的.