精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: 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