您現在的位置是:首頁 > 攝影首頁攝影

國產嵌入式晶片軟體演算法最佳化

由 kinmin嘉 發表于 攝影2023-02-02
簡介除此之外,還可以使用系統中多程序、多執行緒機制來並行執行應用軟體,可進一步有效利用CPU資源,從而提高演算法效能2、演算法最佳化這裡說的演算法最佳化是相對狹義的演算法最佳化,主要是針對應用程式中某個演算法進行最佳化,主要考慮使用新演算法、快

演算法怎麼嵌入硬體

這幾年受美國貿易戰的影響,國產晶片發展舉步維艱,但同時也推動的更多的人參與晶片研發,其中演算法最佳化是每個晶片研發公司一個重要工作,那麼在嵌入式晶片上的如何最佳化演算法呢,下面將簡單介紹下常見演算法最佳化方法。

國產嵌入式晶片軟體演算法最佳化

國產嵌入式晶片

嵌入式軟體演算法最佳化是指在嵌入式晶片上,使用嵌入式晶片的硬體、軟體資源提高演算法效能的手段,常用的演算法可分為以下幾種:

1、系統級最佳化

系統級最佳化是指在嵌入式系統中,對應用軟體進行編譯最佳化、多執行緒、多程序最佳化。編譯最佳化是指在編譯應用程式時選擇不同最佳化等級的配置進行最佳化,這一方式可以大大提高我們的程式碼在CPU上執行的效率,也是最簡單的一種最佳化方法。除此之外,還可以使用系統中多程序、多執行緒機制來並行執行應用軟體,可進一步有效利用CPU資源,從而提高演算法效能

2、演算法最佳化

這裡說的演算法最佳化是相對狹義的演算法最佳化,主要是針對應用程式中某個演算法進行最佳化,主要考慮使用新演算法、快速演算法替代老演算法或演算法複雜度較高的演算法,這一方法需要對演算法原理非常熟悉。

3、硬體最佳化

硬體最佳化主要是利用晶片內部的資源進行最佳化。比如可以使用晶片內部分多核CPU、多DSP、多GPU等硬體資源最佳化演算法,將演算法切成不同的部分放在不同的CPU、DSP、GPU上執行,從而達到演算法效能的提升。另外,當前主流的晶片內部還嵌入了一些硬體演算法,比如影象濾波、縮放等演算法,通用也可提高演算法效能。其實除了上述硬體資源外,還有一個比較有效的硬體資源是Cache快取,這快取又可以分為一級快取L1cache、二級快取L2cache、三級快取L3cache,快取越大演算法執行效率越高,其中L1cache和L2cache一般在晶片內部自行呼叫,不需要人為干預使用,L3cache一般是開放給使用者使用的,再結合DMA資料搬運機制,使用者可以將資料從外部儲存器DDR上搬運到L3cache上,這樣使得與CPU交換資料更快,進而提高演算法效能。

國產嵌入式晶片軟體演算法最佳化

4、程式碼最佳化

程式碼最佳化是指對應用程式中的程式碼進行最佳化,常用的方法有定點化、查表法、迴圈合併等。定點化是將應用程式中某些演算法資料格式由浮點型別轉成定點型別,這一操作主要由於浮點型別資料在記憶體中的儲存方式比定點型別資料複雜,所以CPU在處理浮點型別資料時要比定點資料複雜。查表法是將預先估計算法的輸入和輸出資料範圍的情況下,將輸出資料預先計算好儲存在固定的記憶體上,這樣就可以直接到該記憶體上讀取結果即可。迴圈合併是指在多個演算法序列執行時,且其內部都有相同的迴圈次數時,可以將多個演算法合併到一個迴圈中處理,減少迴圈跳轉操作,進而提高演算法效能。

5、彙編最佳化

彙編最佳化是演算法最佳化中最後一種選擇,因為組合語言是靠近CPU底層的語言,直接與CPU中的暫存器打交道,這需要較強的硬體功底。但是也是因為組合語言是靠近CPU底層的語言,其執行效率也是最高的。另外,值得一提的是在組合語言的上一層還有內嵌彙編可以使用,它比組合語言更容易理解,效能也比較接近組合語言,所以,在上述幾個方法都無法提高演算法效能的基礎上,可以考慮使用內軟彙編進行演算法最佳化。

綜上,演算法最佳化是作為嵌入式軟體開發中比較重要的一個環節,需要從多個角度來進行最佳化演算法,使之能滿足應用的需求。

最後也希望國產晶片研發越來越好,使我國晶片的發展不再受國外的技術制約。