Re: [请益] 影像IC设计疑问

楼主: xmiracle (旋律碎片)   2017-02-12 17:57:50
针对算法为什么要从软件实现改做成IC
前面回文推文的大大已经有提到软件速度不够和成本太高等问题
这些问题的根源是因为要实现一套算法
以下四个参数之间是需要彼此取舍的
1. 面积
2. 功耗
3. 速度
4. 算法可事后改动的程度
当你希望某些参数表现变好,就要牺牲其他参数的表现
当你选择将算法跑在CPU上时,
隐含的意义是你希望算法可事后改动的程度表现很好。
这样做会牺牲另外三点的表现。
这三点之间也是可以互相取舍的。
前面几位大大提到的速度不够,
指的是在不牺牲面积和功耗的情况下速度不够。
若愿意牺牲面积或功耗,
你也可以超频(牺牲功耗),
或一次用超多颗CPU平行跑(假设这算法可平行化程度很高)来增加速度。
类似dasala大大的回文中
"除非你处理器非常强大,也有大量的RAM,但这不合成本"
牺牲算法可事后改动的程度来换取面积功耗速度的好处,
意思是让硬件配合算法的特性做最佳化。
一个简单的例子是直接看CPU上你的算法用到哪些硬件,
把没用到的部分都拔掉,你就得到一个面积跟功耗较小,
又可以做一样算法的硬件。
但这时候这颗CPU可能就无法有效实现其他的算法。
实际上IC对于"算法可事后改动的程度"会牺牲得很彻底,
尽量换取另外三个参数上的好表现。
平行处理是常见的最佳化作法
前面有推文提到硬件是平行,软件是sequential
讲精确一点的话其实软件并不是不能平行处理,
例如借由OpenMP,就可将软件程式码跑在多核上。
但重点是CPU上能作的平行处理,并不是配合你的算法作的。
假设一颗CPU最多可以平行作64个加法,
但你的算法算到某一步有65个彼此不相干的加法,
软件实现还是无法一次算完这65个加法,达到最有效率的平行化。
如果作IC,就可以让这65个加法一次算完。
作者: icarusming   2017-02-12 20:55:00
我推
作者: chris1281 (无言的美德)   2017-02-12 22:06:00
作者: hellomen (BB)   2017-02-12 22:43:00
作者: stary030565   2017-02-12 23:08:00
作者: DaimlerHuang (达米乐)   2017-02-13 00:23:00
推~
作者: jeromeshih (以谨慎态度来面对问题)   2017-02-13 11:14:00
作者: beryllite (贝雷里德)   2017-02-14 00:15:00
作者: cdps13tw (chris)   2017-02-15 20:40:00

Links booklink

Contact Us: admin [ a t ] ucptt.com