91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

將舊版應用程序遷移到多核并沒有那么可怕

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:BILL GRAHAM ? 2022-11-07 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

多核處理器嵌入式系統(tǒng)帶來了顯著的性能和功耗優(yōu)勢,但它們也增加了傳統(tǒng)遷移工作負載的多處理復雜性。盡管如此,開發(fā)團隊可以通過遵循一些簡單的技術(shù)來成功管理向多核的過渡。

移植到便攜式標準

通常,遷移到多核不僅僅涉及遷移到新處理器。在許多情況下,開發(fā)人員必須首先將舊代碼移植到新的編程語言、編譯器或操作系統(tǒng)。 強烈建議使用 POSIX 等開放標準,因為它支持許多通用和實時操作系統(tǒng)。這樣做將有助于確保應用程序的大部分內(nèi)容(包括其與操作系統(tǒng)的接口)是可移植的。同樣重要的是,POSIX標準在多處理系統(tǒng)中有著悠久的歷史,而多核處理器只是多處理片上系統(tǒng)(SoC)。

分而治之

支持對稱多處理 (SMP) 的操作系統(tǒng)是同構(gòu)多核處理器的最佳選擇。SMP 將分配 CPU 資源的復雜細節(jié)留給操作系統(tǒng),而不是應用程序。從應用程序的角度來看,與操作系統(tǒng)的接口保持不變,無論內(nèi)核數(shù)量如何,從 1 到 N。因此,隨著更多內(nèi)核的添加,應用程序可以輕松擴展。

在 SMP 模式下運行的多核系統(tǒng)提供了真正的并行性,但一些傳統(tǒng)應用程序從未設計為并行執(zhí)行。通常,大部分代碼不使用線程,這將允許應用程序的不同部分并行運行,或者僅使用線程來隔離阻塞系統(tǒng)調(diào)用,例如文件或網(wǎng)絡 I/O。

另一個典型的陷阱發(fā)生在代碼使用優(yōu)先級方案來控制對共享內(nèi)存的訪問時。例如,在單處理器嵌入式系統(tǒng)中,軟件開發(fā)人員通常可以假設高優(yōu)先級線程和低優(yōu)先級線程不會同時訪問內(nèi)存,因為高優(yōu)先級線程將始終搶占低優(yōu)先級線程。因此,許多程序無法使用互斥鎖(互斥鎖)來正確同步對內(nèi)存的訪問。但是,在 SMP 多核系統(tǒng)中,這兩個線程可以并行運行,因此會同時訪問內(nèi)存,從而產(chǎn)生不可預測的結(jié)果。由于同步錯誤,可能存在其他隱蔽問題,這些錯誤在單處理器系統(tǒng)上完美運行,但僅在多處理器執(zhí)行中出現(xiàn)。

為了解決這樣的問題,開發(fā)人員可以分而治之:將問題代碼隔離在多核芯片的單個內(nèi)核上,直到代碼可以修復。為此,開發(fā)人員可以使用綁定多處理 (BMP),這是 SMP 的擴展,允許選定的進程僅在指定的內(nèi)核或 CPU 上運行。實際上,BMP 為遺留代碼提供了一個單核、非并行執(zhí)行環(huán)境,同時允許其他代碼利用 SMP 的完全并行性。開發(fā)團隊在修改舊代碼以在其新的并行環(huán)境中正常運行后,可以隨后刪除 CPU 綁定。

利用這些工具

開發(fā)團隊還必須使用正確的工具。特別是,他們需要可視化工具來幫助他們查明并行環(huán)境中代碼行為異常的區(qū)域。大多數(shù)情況下,這項工作涉及檢測和糾正前面提到的同步錯誤。

一旦應用程序正常運行,它仍然可能無法利用多核芯片的所有 CPU 容量。可視化工具在這方面也可以提供幫助,它允許開發(fā)人員減少對共享資源(熱點)的爭用,消除過多的線程遷移或內(nèi)核之間的通信,并找到并行化代碼的機會。隨著多核平臺內(nèi)核數(shù)量的增加,可視化工具將是成功利用多核提供的性能優(yōu)勢的關(guān)鍵。

為了提供這樣的分析,多核可視化工具必須超越傳統(tǒng)調(diào)試工具的范圍。例如,它們必須在線程從一個內(nèi)核遷移到另一個內(nèi)核時跟蹤線程,并診斷在內(nèi)核之間流動的消息。他們還必須靈活控制記錄哪些事件以及何時記錄,以便開發(fā)人員可以專注于關(guān)注的領(lǐng)域。

進行過渡

“多核”不需要是一個壞詞,也不需要為傳統(tǒng)遷移添加另一個障礙。采用POSIX等可移植編程標準,使用專為多核平臺設計的操作系統(tǒng),隔離遺留代碼以在單個內(nèi)核上運行,以及使用可視化工具,所有這些都使過渡變得不那么令人生畏。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    20305

    瀏覽量

    254050
  • 嵌入式
    +關(guān)注

    關(guān)注

    5206

    文章

    20572

    瀏覽量

    336141
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RDMA設計56:如何設計基于RDMA的應用程序

    工作流程圖 在接收到 FPGA 數(shù)據(jù)包后,應用程序進行數(shù)據(jù)包類型判斷,針對 SEND 數(shù)據(jù)包和 WRITE 數(shù)據(jù)包分別進入對應的處理流程。 當接收到 SEND 數(shù)據(jù)包后,首先記錄首包時間戳并啟動定時器
    發(fā)表于 04-05 09:54

    如何構(gòu)建藍牙應用程序?

    應用程序使用藍牙(blueZ)。 我已經(jīng)安裝了 gcc-riscv64-linux-gnu。 但是,沒有安裝 blueZ 標頭和庫。 如何構(gòu)建我的藍牙應用程序?
    發(fā)表于 04-01 07:31

    JH7110 什么時候支持 Vulkan API?

    JH7110 什么時候支持 Vulkan API? 現(xiàn)在很多圖形應用程序后端 API 正在遷移到 vulkan 支持 vulkan 后,您還可以運行許多以前不支持的游戲 JH7110 的 GLES
    發(fā)表于 01-26 06:11

    無質(zhì)量損失的數(shù)據(jù)遷移:Nikon SLM Solutions信賴3Dfindit企業(yè)版

    使用轉(zhuǎn)換器CAD數(shù)據(jù)從一個系統(tǒng)傳輸?shù)搅硪粋€系統(tǒng),但這往往會導致數(shù)據(jù)的質(zhì)量下降。因此,該公司決定使用3Dfindit企業(yè)版CAD數(shù)據(jù)遷移到新系統(tǒng),便不會造成任何質(zhì)量損失。這樣,在保持最高數(shù)據(jù)質(zhì)量
    發(fā)表于 11-25 10:06

    使用RT-Thread+ST-link燒錄程序到STM32F4沒有報錯但是程序沒有燒錄進去,是哪里問題?

    前提:板子上的程序是自己學習的程序,會一直輸出hello 項目代碼是不會持續(xù)輸出hello的,項目代碼可以編譯通過,并且點擊下載也提示下載完成。 但是下載完成之后打開串口輸出,還是會一直有hello輸出出來,感覺系統(tǒng)并沒有被燒錄
    發(fā)表于 09-26 07:27

    原來正常的studio工程在cubemx更新(遷移)版本后編譯報錯在,怎么解決?

    的,比較了這些設置和更新cubemx之前比并沒有什么變化。 本來也是運行的好好的程序,只是更新了cubemx并且重新生成了代碼,其他啥都沒改過,就很摸不著頭腦。 請教各路大神這是個什么情況?
    發(fā)表于 09-26 06:20

    學生適合使用的SOLIDWORKS 云應用程序

    隨著科技的不斷發(fā)展,計算機輔助設計(CAD)技術(shù)已經(jīng)成為現(xiàn)代工程教育的重要組成部分。SOLIDWORKS作為一款CAD軟件,其教育版云應用程序為學生提供了強大而靈活的設計平臺。本文探討
    的頭像 發(fā)表于 09-15 10:39 ?899次閱讀
    學生適合使用的SOLIDWORKS 云<b class='flag-5'>應用程序</b>

    請問如何使用 NUC220 應用程序從 APROM 0x0000切換到 APROM 0x4000?

    我在 APROM 0x0000 中保存了 1 個應用程序,在 APROM 0x4000 中保存了 1 個應用程序,如何使用 NUC220 應用程序從 APROM 0x0000切換到
    發(fā)表于 08-27 06:20

    如何在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6?

    在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    【老法師】多核異構(gòu)處理器中M核程序的啟動、編寫和仿真

    有很多研究單片機的小伙伴在面對多核異構(gòu)處理器時,可能會對多核的啟動流程感到困惑——因為不熟悉GCC編程和GDB調(diào)試,所以也無法確定多核異構(gòu)處理器的程序是否能像單片機那樣方便地編寫和仿真
    的頭像 發(fā)表于 08-13 09:05 ?4123次閱讀
    【老法師】<b class='flag-5'>多核</b>異構(gòu)處理器中M核<b class='flag-5'>程序</b>的啟動、編寫和仿真

    HighTec編譯的HEX文件燒錄進去開發(fā)板時,程序并沒有在運行是怎么回事?

    我目前正在使用DAvE2 + HighTec + Memtools等工具正在對TC1796的開發(fā)版進行測試,但我發(fā)現(xiàn),HighTec編譯的HEX文件燒錄進去開發(fā)板時,程序并沒有在運行,RST指示燈
    發(fā)表于 08-01 07:46

    如何確定PSoC? Creator 中綁定數(shù)據(jù)的行/位置?

    十六進制轉(zhuǎn)儲的比較可以看出,粘合數(shù)據(jù)似乎存儲在第 389 行和第 391 行。 有幾個問題。 那么,是否有適當?shù)男衼肀Wo引導加載程序 0-388? 如何確定PSoC? Creator 中綁定數(shù)據(jù)的行/位置? 我可以設置粘合數(shù)據(jù)的位置嗎?我嘗試過這個但
    發(fā)表于 07-22 07:58

    無法應用程序下載到串行閃存怎么解決?

    我嘗試在藍牙模塊CYBT-343026-01(CYW20706)上下載應用程序到串行閃存,但失敗了。 第一步是按照 AIROC? HCI UART 控制協(xié)議文檔(見下文)的指示向模塊發(fā)送
    發(fā)表于 07-04 06:49

    客戶改了一個電阻就炸機?原因并沒有那么簡單

    客戶改了一個電阻就炸機?原因并沒有那么簡單【樣機芯片介紹】本次調(diào)試的樣機主控IC為思睿達主推的成都啟臣微的CR6853B,該IC為副邊控制IC,該IC是一款高集成度,低功耗的電流模PWM控制芯片,該
    的頭像 發(fā)表于 05-08 09:59 ?1279次閱讀
    客戶改了一個電阻就炸機?原因<b class='flag-5'>并沒有</b><b class='flag-5'>那么</b>簡單

    從Keil MDK到IAR EWARM:通過工程遷移實現(xiàn)項目資產(chǎn)的更好管理

    對于需要統(tǒng)一開發(fā)環(huán)境或涉及多核架構(gòu)(如Cortex-A/R)的項目,越來越多的用戶選擇從Keil MDK遷移到IAR EWARM。這就會面臨著需要將之前的Keil MDK工程遷移到IAR EWARM的問題。本文
    的頭像 發(fā)表于 05-08 09:03 ?1426次閱讀
    從Keil MDK到IAR EWARM:通過工程<b class='flag-5'>遷移</b>實現(xiàn)項目資產(chǎn)的更好管理