在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為您的 DSP 應用程序優化軟件

張勇 ? 來源:DengQilong ? 作者:DengQilong ? 2022-07-21 16:20 ? 次閱讀

經驗豐富的嵌入式系統程序員已經知道將代碼優化到目標平臺的大部分技巧,但是我們中的許多人相對較晚才接觸到嵌入式系統編程,因為我們在限制較少的平臺上學習了我們的編碼技能。除了算法的一般效率之外,我們不必過多擔心硬件細節,但在嵌入式應用程序中,我們需要更加小心,當然是為了性能,還要適應我們想要做的實際限制我們的硬件目標,尤其是可用內存的類型和大小。這些系統中的內存是您必須將所有軟件和所有工作數據裝入其中的手提箱,而且手提箱通常比您希望的要小得多。

作為一個額外的復雜因素,這些系統中通常有不止一種類型的內存。為了保持編程簡單,您只看到一個邏輯內存空間,但某些地址范圍可能以不同的方式在硬件中實現。一些空間可以實現為外部主存儲器,可以通過一級或多級高速緩存從處理器訪問。

一個常見的硬件優化將實現另一個范圍作為緊耦合內存 (TCM)。它與處理器位于同一芯片內,通常緊鄰該處理器。TCM 為存儲在該內存中的任何指令或數據提供有保證的單時鐘周期訪問,這與標準內存不同,標準內存只有在指令/數據已經在緩存中時才能提供該性能;否則它必須進入主存儲器,花費更多的時鐘周期。TCM 是(內存映射)快速片上內存的一個例子;還有其他用途,例如用于圖像處理中快速訪問的圖像緩沖區。

另一個考慮因素 - 使用片上存儲器可降低功耗,而使用主存儲器會消耗更多功率,這要歸功于更高的電流來驅動所有這些封裝引腳和芯片之間的電路板互連。這是低功耗應用中的一個重要考慮因素。

為什么不只使用大的片上存儲器并從片外不頻繁地加載/存儲?不幸的是,大型片上存儲器顯著增加了芯片面積,并且隨著芯片尺寸的增長,該設備變得更加昂貴且競爭力下降。系統架構師必須非常小心地平衡性能增益與此成本,考慮他們是否可能僅提供 16KB 的 TCM 與可能多達 1MB 的 TCM。這讓程序員有很多責任要盡可能節儉和謹慎地使用或規劃這些存儲器(如果你在早期的芯片架構中有發言權),尤其是在涉及到你想要的功能或數據時使用快速內存。

您需要在這里做的一些事情是相當明顯的;我假設您從基于 PC 的實現或為早期產品開發的實現開始。由于您顯然對 DSP 感興趣,因此您可能計劃進行大量浮點計算。盡可能將數據類型從雙精度減少到單精度;僅此一項就可能將數據大小減半。

臨時內存池是一種一次性分配內存塊以滿足多個較小相關分配需求的方法,它在分配和釋放速度方面很受歡迎,但在內存方面可能非常昂貴。嘗試將所有這些合并到一個內存池中,只要它們不并行使用或硬著頭皮返回堆上的傳統malloc;這可能會慢一些,但在內存中效率會高很多。

特別是在 TCM 方面,分析代碼以找到消耗最多運行時間的函數。您的策略將是從需求最高的功能開始,決定其中哪些可以適合 TCM。當然,這里必須有一些判斷。如果一個高需求函數調用一個低需求函數,你能負擔得起從緩存中拉出那個低需求函數嗎?只要緩存命中率很高,或者偶爾較長的延遲是可以容忍的,這可能就可以了。

在支持 MP3 和 FLAC 解碼器的音樂播放器中,較長的延遲可能是可以的。每首歌曲最多只能使用一個,因此它們不需要都駐留在快速內存中。接受延遲加載所需的任何內容,按需從片外加載到快速存儲器中。

您希望將生產代碼和數據壓縮到盡可能小的大小,因此作為一般良好衛生的一點,請確保所有調試、分析和日志記錄代碼都包含在編譯指示中,這些編譯指示可以在生產構建中禁用。在 PC 代碼中,您可能不會太擔心這一點(特別是如果您想在生產軟件上運行調試器),但在這里它是必不可少的。相反,您還應該確保在 禁用該代碼的情況下運行所有回歸測試。只需要在調試中忽略一個運行時依賴項即可創建下游噩夢。

同樣,請確保您的軟件中的每一段代碼都在被使用。運行覆蓋測試。如果您發現未使用的代碼,則可能是早期版本的遺留問題,可能需要它。這里不是,所以你應該能夠擺脫它,對吧?再次,你必須小心。也許這是對一個不能忽視的非常罕見的情況的錯誤處理。也許它應該包含在回歸測試中,但直接觸發太難了。您必須根據與架構師甚至硬件團隊的討論做出決定。

最后,與架構師(如果需要,還有營銷人員)爭論他們要求包含哪些功能是真正必要的。他們可能沒有意識到,在您可能想到的每一次優化之后,手提箱仍然不會關閉。然后他們將不得不決定可能不得不犧牲他們真正想要的真正酷的功能。或者,也許他們必須回到業務團隊并要求更大的片上存儲器,使用您可以提供的關于這些存儲器需要增長多少的信息。無論哪種方式,你都會看起來不錯!

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    556

    文章

    8150

    瀏覽量

    355795
  • 嵌入式
    +關注

    關注

    5143

    文章

    19575

    瀏覽量

    315707
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    華秋DFM軟件升級時,提示“應用程序無法正常啟動”怎么辦?

    最近有用戶反饋: 登錄華秋DFM軟件,點自動升級的時候有時會報錯,導致無法正常升級。 其中有一種情況是: 軟件自動升級時,彈出“應用程序無法正常啟動(0xc000007b)。請單擊“確定\"
    發表于 06-12 18:32

    如何在 Raspberry Pi AI Camera 上構建開發人員提供實時的智能應用程序!

    在這篇特邀文章中,我們的合作伙伴索尼公司的雷蒙娜-雷納(RamonaRayner)將向展示如何快速探索不同的模型和人工智能功能,以及如何在RaspberryPi人工智能相機的基礎上輕松構建應用程序
    的頭像 發表于 03-25 09:37 ?236次閱讀
    如何在 Raspberry Pi AI Camera 上構建<b class='flag-5'>為</b>開發人員提供實時的智能<b class='flag-5'>應用程序</b>!

    基于HPM_SDK_ENV開發應用程序的升級處理

    基于HPM_SDK_ENV開發應用程序的方式HPM_SDK_ENV是先楫半導體MCU的Windows集成開發環境,其包含HPM_SDK,工具鏈,依賴工具(cmake,ninja,openocd等
    的頭像 發表于 02-08 13:38 ?949次閱讀
    基于HPM_SDK_ENV開發<b class='flag-5'>應用程序</b>的升級處理

    ANACONDA——關于發布數據應用程序的新簡單方法

    與 Anaconda 的云筆記本服務無縫集成,用戶提供了一種輕松共享筆記本結果的方式,并讓其他人也可以隨意的訪問它們。 下面我們來了解關于這項新功能的實際應用: 這項功能與 Panel 的多功能性相結合,將徹底改變發布數據應用程序
    的頭像 發表于 01-17 11:39 ?388次閱讀
    ANACONDA——關于發布數據<b class='flag-5'>應用程序</b>的新簡單方法

    BQ78412應用程序編程接口

    電子發燒友網站提供《BQ78412應用程序編程接口.pdf》資料免費下載
    發表于 12-18 14:46 ?0次下載
    BQ78412<b class='flag-5'>應用程序</b>編程接口

    TAS2521應用程序參考指南

    電子發燒友網站提供《TAS2521應用程序參考指南.pdf》資料免費下載
    發表于 12-10 13:49 ?0次下載
    TAS2521<b class='flag-5'>應用程序</b>參考指南

    android手機上emulate應用程序的方法

    在Android手機上模擬(emulate)應用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環境,以便在沒有實際物理設備的情況下運行和測試應用程序
    的頭像 發表于 12-05 15:33 ?1111次閱讀

    AWTK-WEB 快速入門(2) - JS 應用程序

    導讀AWTK可以使用相同的技術棧開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用JS語言開發AWTK-WEB應用程序。用AWTKDesigner新建一個應用程序先安裝AWTKDesigner
    的頭像 發表于 12-05 01:04 ?436次閱讀
    AWTK-WEB 快速入門(2) - JS <b class='flag-5'>應用程序</b>

    AWTK-WEB 快速入門(1) - C 語言應用程序

    導讀AWTK可以使用相同的技術棧開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用C語言開發AWTK-WEB應用程序。用AWTKDesigner新建一個應用程序
    的頭像 發表于 11-27 11:46 ?651次閱讀
    AWTK-WEB 快速入門(1) - C 語言<b class='flag-5'>應用程序</b>

    使用OpenVINO? ElectronJS中創建桌面應用程序

    呈現。啟動應用程序后,會看到一個帶有黑色占位符的界面。要激活攝像頭,只需從檢測到的設備列表中選擇喜歡的
    的頭像 發表于 11-25 11:35 ?517次閱讀
    使用OpenVINO? ElectronJS中創建桌面<b class='flag-5'>應用程序</b>

    PCM2912應用程序的操作環境

    電子發燒友網站提供《PCM2912應用程序的操作環境.pdf》資料免費下載
    發表于 10-21 09:33 ?0次下載
    PCM2912<b class='flag-5'>應用程序</b>的操作環境

    I2C啟動加載準備TMS320C645x應用程序

    電子發燒友網站提供《I2C啟動加載準備TMS320C645x應用程序.pdf》資料免費下載
    發表于 10-16 11:30 ?0次下載
    <b class='flag-5'>為</b>I2C啟動加載準備TMS320C645x<b class='flag-5'>應用程序</b>

    DSP/BIOS 5應用程序遷移到SYS/BIOS 6

    電子發燒友網站提供《將DSP/BIOS 5應用程序遷移到SYS/BIOS 6.pdf》資料免費下載
    發表于 09-27 10:54 ?0次下載
    將<b class='flag-5'>DSP</b>/BIOS 5<b class='flag-5'>應用程序</b>遷移到SYS/BIOS 6

    使用HIC啟用外圍擴展應用程序應用說明

    電子發燒友網站提供《使用HIC啟用外圍擴展應用程序應用說明.pdf》資料免費下載
    發表于 09-14 09:44 ?0次下載
    使用HIC啟用外圍擴展<b class='flag-5'>應用程序</b>應用說明

    keil軟件怎么運行寫好的程序

    Keil軟件是一款功能強大的嵌入式開發工具,廣泛應用于單片機、ARM、DSP等嵌入式系統的開發。本文將介紹如何使用Keil軟件運行寫好的程序。 安裝Keil
    的頭像 發表于 09-02 10:29 ?4299次閱讀
    主站蜘蛛池模板: 一级做a爱片特黄在线观看免费看 | 日本成人免费观看 | 色多多在线 | 一二三区在线视频 | 婷婷综合丁香 | 99pao强力打造免费高清色 | 国产网站免费看 | 夜夜爱夜夜做夜夜爽 | 天天干天天色天天射 | 天使色| 天天添天天干 | 免费观看在线永久免费xx视频 | 国产一区二区影院 | 国产色女人 | 日本亚洲精品色婷婷在线影院 | 日韩在线看片 | 四虎影院观看视频 | 成 年 人 视频在线播放 | 国产性做久久久久久 | 久久性生活 | 欧美xxxx色视频在线观看 | 国产欧美日韩在线人成aaaa | 色天天综合网色鬼综合 | 六月婷婷视频 | 四虎免费久久影院 | 成人在线视频网址 | 成人中文在线 | 成人精品一区二区三区电影 | 日本欧美一区二区 | 天天爽天天爽天天片a久久网 | 日韩毛片免费线上观看 | 性色成人网 | 午夜寂寞在线一级观看免费 | 好男人午夜 | 色综合天天干 | 四虎免费大片aⅴ入口 | 欧美一区二区三区免费高 | 日韩一级欧美一级在线观看 | 韩漫免费网站无遮挡羞羞漫画 | 欧美爆插 | 男女爱爱免费视频 |