Re: [請益] 純軟往ic演算法易遇到的困難

看板Tech_Job作者 (秋天走了)時間3月前 (2024/01/24 20:39), 編輯推噓35(36120)
留言57則, 39人參與, 2月前最新討論串4/5 (看更多)
做過幾年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滿有趣的呀感覺哪裡哪裡還可以再縮面積 時候到了你自然知道自己是哪一種人 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.28.131 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1706099955.A.1DB.html

01/24 20:56, 3月前 , 1F
喜歡錢錢的就選IC
01/24 20:56, 1F

01/24 21:21, 3月前 , 2F
推個精闢
01/24 21:21, 2F

01/24 22:16, 3月前 , 3F
實力決定一切
01/24 22:16, 3F

01/24 22:22, 3月前 , 4F
純軟仔用C的邏輯寫verilog的結果就是一場悲劇
01/24 22:22, 4F

01/24 22:56, 3月前 , 5F
誰說純軟是 memory 富翁,怒噓。
01/24 22:56, 5F

01/24 22:56, 3月前 , 6F
你有考慮過 edge 裝置的心情嗎?
01/24 22:56, 6F

01/24 22:58, 3月前 , 7F
不對,我會碰 edge 代表我會碰硬體,補推回來。
01/24 22:58, 7F

01/24 23:02, 3月前 , 8F
純軟大公司,用戶隨便千萬破億這種等級,記憶體要求
01/24 23:02, 8F

01/24 23:02, 3月前 , 9F
也很嚴格喔。很多後端都要自己改 OS kernel layer。
01/24 23:02, 9F

01/24 23:07, 3月前 , 10F
影像演算法純軟都被DL一統江湖了吧
01/24 23:07, 10F

01/24 23:33, 3月前 , 11F
想不到富翁兩字那麼敏感, 這裡的用辭當然是相對的,
01/24 23:33, 11F

01/24 23:33, 3月前 , 12F
不是說純軟開發毫無記憶體限制, 而是要說兩種產業
01/24 23:33, 12F

01/24 23:33, 3月前 , 13F
都待過的人自然會知道在ic上演算法能用的記憶體資
01/24 23:33, 13F

01/24 23:33, 3月前 , 14F
源相比純軟演算法有多可憐
01/24 23:33, 14F

01/24 23:35, 3月前 , 15F
01/24 23:35, 15F

01/25 00:05, 3月前 , 16F
01/25 00:05, 16F

01/25 00:11, 3月前 , 17F
01/25 00:11, 17F

01/25 00:44, 3月前 , 18F
太精闢了XDD
01/25 00:44, 18F

01/25 01:32, 3月前 , 19F
01/25 01:32, 19F

01/25 02:43, 3月前 , 20F
01/25 02:43, 20F

01/25 06:39, 3月前 , 21F
01/25 06:39, 21F

01/25 07:12, 3月前 , 22F
01/25 07:12, 22F

01/25 07:58, 3月前 , 23F
01/25 07:58, 23F

01/25 08:21, 3月前 , 24F
01/25 08:21, 24F

01/25 10:09, 3月前 , 25F
01/25 10:09, 25F

01/25 10:17, 3月前 , 26F
01/25 10:17, 26F

01/25 10:57, 3月前 , 27F
內行欸
01/25 10:57, 27F

01/25 11:41, 3月前 , 28F
這些修過大一邏設就有概念了
01/25 11:41, 28F

01/25 12:34, 3月前 , 29F
同行路過推推,非常精闢
01/25 12:34, 29F

01/25 13:29, 3月前 , 30F
01/25 13:29, 30F

01/25 14:23, 3月前 , 31F
精闢推
01/25 14:23, 31F

01/25 14:25, 3月前 , 32F
01/25 14:25, 32F

01/25 17:04, 3月前 , 33F
謝謝f大精闢的說明~
01/25 17:04, 33F

01/25 17:32, 3月前 , 34F
01/25 17:32, 34F

01/25 18:14, 3月前 , 35F
幾年還是幾十年 xd
01/25 18:14, 35F

01/25 18:17, 3月前 , 36F
純軟相較下就真的是記憶體富翁沒錯啊XDD
01/25 18:17, 36F

01/25 18:17, 3月前 , 37F
寫嵌入式系統就是記憶體小康XDDD
01/25 18:17, 37F

01/25 19:06, 3月前 , 38F
認真算是ic快6年, 中間純軟2年多
01/25 19:06, 38F

01/25 21:09, 3月前 , 39F
01/25 21:09, 39F

01/26 00:19, 3月前 , 40F
很推這篇
01/26 00:19, 40F

01/26 08:07, 3月前 , 41F
01/26 08:07, 41F

01/26 12:37, 3月前 , 42F
01/26 12:37, 42F

01/26 23:18, 3月前 , 43F
ic硬體就是要用最少的電晶體實現必要的功能就好,
01/26 23:18, 43F

01/26 23:18, 3月前 , 44F
原文寫的很好
01/26 23:18, 44F

01/26 23:19, 3月前 , 45F
而用在ic上的演算法自然要配合這個目標
01/26 23:19, 45F

01/27 10:08, 3月前 , 46F
嵌入式也有記憶體只有不到1Kbytes的上古MCU還在用
01/27 10:08, 46F

01/27 10:08, 3月前 , 47F
啊~
01/27 10:08, 47F

01/28 06:51, 3月前 , 48F
1、純軟演算法也會遇到沒有fpu的平台。2、高頻交易
01/28 06:51, 48F

01/28 06:51, 3月前 , 49F
就需要去看編譯結果錙銖必較時間效率。3、8051 cos
01/28 06:51, 49F

01/28 06:51, 3月前 , 50F
tdown到極致也沒有記憶體富翁,變數放在哪佔多少記
01/28 06:51, 50F

01/28 06:51, 3月前 , 51F
憶體編出來的code多大都影響成本,還要考慮是否部
01/28 06:51, 51F

01/28 06:51, 3月前 , 52F
分固化在ROM裡對生產成本差距多少。當然你可以說這
01/28 06:51, 52F

01/28 06:51, 3月前 , 53F
不是純軟,但工作上都會用到,如果你要做橫掃市場
01/28 06:51, 53F

01/28 06:51, 3月前 , 54F
的產品,軟體不可能不去考慮硬體的問題,三流產品
01/28 06:51, 54F

01/28 06:51, 3月前 , 55F
可以不用考慮。
01/28 06:51, 55F

01/28 12:47, 3月前 , 56F
內行
01/28 12:47, 56F

01/29 15:52, 2月前 , 57F
沒錯,我跟純軟開會都會碰到記憶體富翁
01/29 15:52, 57F
文章代碼(AID): #1biGJp7R (Tech_Job)
討論串 (同標題文章)
文章代碼(AID): #1biGJp7R (Tech_Job)