日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

將舊版應(yīng)用程序遷移到多核并沒(méi)有那么可怕

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:BILL GRAHAM ? 2022-11-07 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

移植到便攜式標(biāo)準(zhǔn)

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

分而治之

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

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

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

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

利用這些工具

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

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

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

進(jìn)行過(guò)渡

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

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    20362

    瀏覽量

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

    關(guān)注

    5210

    文章

    20727

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    S32K3跳轉(zhuǎn)到應(yīng)用程序后,PTD5上沒(méi)有活動(dòng),為什么?

    應(yīng)用程序應(yīng)用程序在主循環(huán)(快速)切換 PTD5。 我的問(wèn)題是跳轉(zhuǎn)到應(yīng)用程序后,PTD5 上沒(méi)有活動(dòng),出現(xiàn)問(wèn)題: 在地址“0x502000”中斷,
    發(fā)表于 04-16 08:59

    s32k344 accMem;demo進(jìn)行配置并沒(méi)有成功初始化,程序進(jìn)入hardfault怎么辦

    大家好, 按照提供的demo進(jìn)行配置并沒(méi)有成功初始化,程序進(jìn)入hardfault,單步調(diào)試顯示在這里進(jìn)入的。請(qǐng)幫助我排查。謝謝! 我是用的是s32k344 ,ide
    發(fā)表于 04-15 06:23

    RDMA設(shè)計(jì)56:如何設(shè)計(jì)基于RDMA的應(yīng)用程序

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

    如何構(gòu)建藍(lán)牙應(yīng)用程序

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

    JH7110 什么時(shí)候支持 Vulkan API?

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

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

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

    使用RT-Thread+ST-link燒錄程序到STM32F4沒(méi)有報(bào)錯(cuò)但是程序沒(méi)有燒錄進(jìn)去,是哪里問(wèn)題?

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

    原來(lái)正常的studio工程在cubemx更新(遷移)版本后編譯報(bào)錯(cuò)在,怎么解決?

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

    學(xué)生適合使用的SOLIDWORKS 云應(yīng)用程序

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

    請(qǐng)問(wèn)如何使用 NUC220 應(yīng)用程序從 APROM 0x0000切換到 APROM 0x4000?

    我在 APROM 0x0000 中保存了 1 個(gè)應(yīng)用程序,在 APROM 0x4000 中保存了 1 個(gè)應(yīng)用程序,如何使用 NUC220 應(yīng)用程序從 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核程序的啟動(dòng)、編寫(xiě)和仿真

    有很多研究單片機(jī)的小伙伴在面對(duì)多核異構(gòu)處理器時(shí),可能會(huì)對(duì)多核的啟動(dòng)流程感到困惑——因?yàn)椴皇煜CC編程和GDB調(diào)試,所以也無(wú)法確定多核異構(gòu)處理器的程序是否能像單片機(jī)那樣方便地編寫(xiě)和仿真
    的頭像 發(fā)表于 08-13 09:05 ?4282次閱讀
    【老法師】<b class='flag-5'>多核</b>異構(gòu)處理器中M核<b class='flag-5'>程序</b>的啟動(dòng)、編寫(xiě)和仿真

    HighTec編譯的HEX文件燒錄進(jìn)去開(kāi)發(fā)板時(shí),程序并沒(méi)有在運(yùn)行是怎么回事?

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

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

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

    無(wú)法應(yīng)用程序下載到串行閃存怎么解決?

    我嘗試在藍(lán)牙模塊CYBT-343026-01(CYW20706)上下載應(yīng)用程序到串行閃存,但失敗了。 第一步是按照 AIROC? HCI UART 控制協(xié)議文檔(見(jiàn)下文)的指示向模塊發(fā)送
    發(fā)表于 07-04 06:49
    泸溪县| 阳泉市| 天柱县| 饶平县| 开化县| 大悟县| 普兰县| 凤山市| 澜沧| 淄博市| 绍兴市| 启东市| 扬州市| 宁河县| 襄汾县| 巴东县| 江华| 涿州市| 合山市| 潞城市| 三明市| 原阳县| 长汀县| 五华县| 南靖县| 湟源县| 广饶县| 庄浪县| 泗水县| 漾濞| 景东| 绵阳市| 乐业县| 恩平市| 博白县| 新安县| 洪洞县| 海宁市| 玉树县| 霍邱县| 资阳市|