Re: [请益] 纯软往ic算法易遇到的困难

楼主: fallcolor (秋天走了)   2024-01-24 20:39:11
做过几年ic影像算法开发
猜得出你想问什么
个人觉得主要有三个面向不同于纯软
1. 定点化
没有另外挂fpu的情况下算法里不能有浮点数逻辑运算
位元精度越高运算越贵
可使用的运算子也是有贵有便宜
基本上能用乘法器搭配位元运算就不要用除法器
能用常数乘法器就不要用变量乘法器
能用加法器就不要用乘法器
当然全部能用位元操作取代最好
同时间也要克服精度损失造成的算法品质下降问题
2. 时间控制
ic产品的功能基本上都有时间性要求
例如监控要求帧率
触控要求反应
换言之算法复杂度必须是可控的
不是说不能写循环
但至少不能写成动态循环甚至递回
worst case的复杂度决定了算法做不做得进ic
一个很常见的情况是某个运算必须等不只一路算完才能开始
这时再考虑多路计算结果的同步化
时间控制就更复杂了
3. 内存控制
纯软coding的习惯基本上就是memory富翁
中间计算结果想暂存多少就宣告多少
但ic算法不行给你这样用
进出ddr会影响整路系统设计
非重要输出的计算产物不是存sram就是存register
但sram贵register也没这么多给你存
所以能同步算完的东西就尽量同步算完
能化简就化简
化简到一次算完最好
以影像算法来说frame buffer等级的资源是想都不用想了
先考虑你有几条line buffer能用你才知道算法能设计多大的滤波器
至于这些知识能不能进业界前先行补强
个人认为
很难也没什么必要
这种靠经验累积的东西不来一场实战也只是纸上谈兵
等你第一次跟rtl工程师开会然后被喷某某逻辑运算合出来面积多大
你自然就会知道要怎么优化了
那时你大概会产生两种想法
一个是
马的我不要做这些cost down的逻辑我要开发高大上算法然后回到纯软
一个是
咦cost down满有趣的呀感觉哪里哪里还可以再缩面积
时候到了你自然知道自己是哪一种人
作者: SentLiTryPay (呼拉呼拉)   2024-01-25 01:32:00
作者: dagehoya5566 (肥宅揪4丑)   2024-01-25 10:57:00
内行欸

Links booklink

Contact Us: admin [ a t ] ucptt.com