> ==>發信人: Master.bbs@bbs.sayya.org (可愛的ASM), 信區: programming
> ※ 引述《nikolas.bbs@ptt.cc (你花多少時間?)》之銘言:
> > 我有點疑問~~
> > 因為沒接觸過~~想在這邊請教一下
> > 有聽過在做一些訊號處理時~~ 例如影像??
> > 為什麼硬體處理的速度會比軟體快??
> > 用軟體來處理訊號很合理
> > 但硬體是怎麼處理的?
> > 有人可以舉實際例子嗎??
> > 謝謝
> 不嚴謹的講。就是將算法直接以硬體合成的方式產生,得到你想要的結果。
> 由於硬體架構純粹針對你的需求產生。自然執行速度就會快。所以為了求快
> ,有些人就是用FPGA來作直接電路合成。而PC或是一般DSP,則需要透過指令
> 告訴CPU或DSP要作怎樣的工作。
> 對於一般的DSP和PC上來說,PC的時脈這樣快,感覺好像比一般的DSP快才是
> ,指令執行速度當然PC夠快,問題是你卡了個OS在中間,那就沒辦法快。
====
OS 因為資源(resources)與程序(process)間保護的要求, 不能讓應用層程式直接
控制跟周邊有關的硬體, 所以多了 context switch 的 overhead. 但目前的
multi-thread 技術可降低這些要求.
不透過 OS , 直接接取 I/O 裝置, 專門針對專用的裝置, 執行處理訊號的程式就
不會有 OS 的 overhead 問題. 但這樣做仍然是通稱的由 "軟體" 透過通用(Gerenal
purpose)硬體來實現.
硬體實現可以比較快, 則是要透過 "特殊的硬體" 在架構與演算法使得原來個別循序
處理的軟體動作, 改由較少步驟(較少時間)的平行硬體來達成.
如 associative memory 的 content address search 就是針對所有資料同時 search
的硬體裝置.
使用軟體的原因很多, 跟畫分出共同模組的 "可再用性" 有關, 為的是透過反覆
利用以減省空間與成本, 另一方面就是功能模組產生的高階抽象化, 可以讓程式規劃
透過可再用模組變得簡潔易懂而縮短開發時程.
軟體還是硬體的分野很難說, 很多是模組的反覆再利用度問題.
舉個不確實際但可聯想拿來應用的例, 譬如(16位元*16位元)整數乘法器在只有 8 位
元運算的 CPU 裡, 可以用 32 位元位址的記憶體事先造表, 把乘數與被乘數當地址
將各結果的積先存在另一個 ROM/RAM , 因此整數乘法就可以在一次的 ROM/RAM
memory access cycle 就達成, 這一定可以比透過指令逐次透過 8 位元運算器來得
快, 這張大表如果事先算好存在電路(也就是 ROM)中, 就會被稱為硬體, 根據這樣的
概念使用 9*9 乘法表跟使用 99*99 乘法表的反覆處理次數與運算速度就是不同, 但
依然會是使用通用硬體(以 RAM 做表)來完成. 如果記憶體多了出來又不必增加成本,
這種 "耗硬體" 的算法就是一種 "勝出" 的辦法.
透過硬體要能變快, 必須在架構與演算法上要能有所不同, 但要能實用, 這個特殊硬
體的成本與大量被再利用度必需相對下是很有利才行, 否則成本上會限制住.
> 在相同的PC上,使用相同功能的程式,在XP上的觸發週期只能用ms為單位,
> 但是使用RTOS就能做到以us為單位的觸發週期。
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234