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

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

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

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

Zynq UltraScale+ MPSoC為軟件移植提供穩(wěn)健可靠的平臺(tái)

Xilinx賽靈思官微 ? 來源:djl ? 作者:賽靈思 ? 2019-07-30 16:21 ? 次閱讀

Zynq UltraScale+ MPSoC 的核心 ARMv8 架構(gòu)使系統(tǒng)設(shè)計(jì)人員只需極少量修改就可以快速啟用并運(yùn)行現(xiàn)有的 ARMv7 代碼。這種架構(gòu)兼容性使設(shè)計(jì)人員可以提高生產(chǎn)力,加速產(chǎn)品上市進(jìn)程,同時(shí)減少開發(fā)成本和工程設(shè)計(jì)投資。

簡(jiǎn) 介

WP473

軟件設(shè)計(jì)人員運(yùn)用基于新一代 ARMv8 架構(gòu)的賽靈思 Zynq UltraScale+ MPSoC,不僅可以充分利用其先進(jìn)性能,同時(shí)還能保持現(xiàn)有軟件投資。

在美國(guó)計(jì)算機(jī)學(xué)會(huì)雜志《美國(guó)計(jì)算機(jī)協(xié)會(huì)通訊全集》的一篇專欄中,Steve Furber 指出,32 位 ARMv7 SoC(例如 Zynq UltraScale+ MPSoC)是最豐富和最受歡迎的 SoC 產(chǎn)品。[ 參考資料 1]另一層隱含的意義是:ARMv7 SoC 的用戶群很大,意味著軟件—— 從簡(jiǎn)單的庫、工具一直到完整操作系統(tǒng)—— 的用戶群更為龐大。最近,隨著向 64 位平臺(tái)的移植持續(xù)加速,系統(tǒng)設(shè)計(jì)人員面臨的問題在于:是花大力氣將現(xiàn)有軟件移植到新架構(gòu),還是簡(jiǎn)單地在新平臺(tái)上重新開始開發(fā)軟件。[ 參考資料 2]

任何一個(gè)具有一定規(guī)模的軟件項(xiàng)目都需要投入大量的人力和軟件架構(gòu)。損失這些投資無論從短期還是長(zhǎng)期看對(duì)項(xiàng)目都有毀滅性影響。因此,SoC 平臺(tái)之間的軟件移植會(huì)帶來很大不確定性。移植不當(dāng)很容易導(dǎo)致功能和性能不理想。在這個(gè)需要縮減設(shè)計(jì)預(yù)算和加速產(chǎn)品上市進(jìn)程的時(shí)代,不允許有太多的不確定性。

賽靈思 Zynq 產(chǎn)品組合的最新成員 Zynq UltraScale+ MPSoC 采用新一代 ARMv8 架構(gòu),其精湛的設(shè)計(jì)可解決上述種種問題。ARMv8 采用設(shè)計(jì)人員熟悉的 CPU 架構(gòu)和軟件開發(fā)流程,使他們能夠立即著手進(jìn)行項(xiàng)目移植,且可將現(xiàn)有軟件基礎(chǔ)架構(gòu)投資損失降至最低。

ARMv8 通過設(shè)計(jì)簡(jiǎn)化軟件移植

Zynq UltraScale+ MPSoC 中的 ARMv8 架構(gòu)與前代 ARMv7 架構(gòu)兼容,同時(shí)可擴(kuò)展支持最新特性與功能,因此能夠從根本上簡(jiǎn)化軟件移植。這樣可創(chuàng)建熟悉的開發(fā)環(huán)境,讓軟件開發(fā)人員在移植過程伊始就能專注于代碼本身。ARMv8 架構(gòu)通過兩種基本方式實(shí)現(xiàn)這種深度兼容:

ARMv8 架構(gòu)支持兩種不同執(zhí)行狀態(tài):

AArch32,本機(jī) 32 位狀態(tài)

AArch64,本機(jī) 64 位狀態(tài)

AArch64 狀態(tài)中的 64 位 ARMv8 指令集是 ARMv7 中指令集的自然延伸;AArch32 狀態(tài)中的 32 位指令集直接兼容于 ARMv7 中的指令集。

AArch64 執(zhí)行狀態(tài)是本機(jī) ARMv8 執(zhí)行環(huán)境。它支持 ARMv8 架構(gòu)的完整特性集與功能。相反,AArch32 執(zhí)行狀態(tài)提供與 ARMv7 環(huán)境的本機(jī)向后兼容。從軟件執(zhí)行角度來看,該狀態(tài)為本機(jī) ARMv7 環(huán)境。開發(fā)人員可選擇讓代碼在編譯時(shí)間內(nèi)在哪種執(zhí)行狀態(tài)下運(yùn)行。正常運(yùn)行時(shí)間內(nèi),CPU 可在 AArch64 和 AArch32 這兩種執(zhí)行方式之間即時(shí)切換,以提供軟件所要求的執(zhí)行環(huán)境。這些上下文變化發(fā)生在異常邊界,無需用戶或軟件設(shè)計(jì)人員進(jìn)行輸入;32 位代碼和64 位代碼高效并行執(zhí)行。

當(dāng)在 AArch64 狀態(tài)下運(yùn)行時(shí),提供完整的 64 位 ARMv8 指令集。很大程度上,64 位 ARMv8 指令集是ARMv7 中指令集的延伸。只需對(duì)指令集在語法和行為上稍加修改,就能支持 32 位指令以及 32 位與 64 位混合寄存器。當(dāng)在 AArch32 狀態(tài)下運(yùn)行時(shí),處理器使用標(biāo)準(zhǔn) 32 位指令以及 32 位寄存器;軟件設(shè)計(jì)人員處理指令集的方式與使用其他 ARMv7 處理器時(shí)相同。

使用代碼庫

WP473

低層裸機(jī)和 RTOS 代碼開發(fā)人員是受低層處理器架構(gòu)差別影響最多的人。當(dāng)開始移植軟件時(shí),最佳方式是啟用編譯器中所有警告和錯(cuò)誤消息,使用 ARMv8 編譯器重新簡(jiǎn)單編譯軟件,不做修改。對(duì)這種方式下生成的警告或錯(cuò)誤信息進(jìn)行分析,這樣軟件開發(fā)團(tuán)隊(duì)可以確定哪些錯(cuò)誤可以忽略,以及哪些需要在移植過程中加以注意。

ARMv8 編譯器本機(jī)支持標(biāo)準(zhǔn)高級(jí)代碼,例如 C 和 C++ ;當(dāng)有合適的 ARMv8 板支持包 (BSP) 時(shí),可編譯和運(yùn)行這類代碼。相比之下,匯編代碼時(shí)則需要特別注意如何使用代碼。盡管 ARMv8 中依然存在諸多 ARMv7 匯編指令,但是它們的語法或行為存在微秒的變化。有些編碼結(jié)構(gòu)的編譯或行為與 ARMv7 不同,其中包括:硬編碼存儲(chǔ)器位置( 適用任何軟件移植項(xiàng)目)、對(duì) ARMv7 協(xié)處理器( 例如 CP15) 和寄存器名稱的訪問,以及數(shù)據(jù)對(duì)齊。由ARM 發(fā)布的ARM Cortex -A 程序員ARMv8-A 使用指南 (DEN0024A) 對(duì)移植問題進(jìn)行了詳細(xì)的分析。

我們不妨看看容易移植的代碼實(shí)例以及會(huì)產(chǎn)生問題的代碼,這樣有助于我們從概念上討論架構(gòu)之間的區(qū)別。

有的指令只需很少的操作就可從 ARMv7 轉(zhuǎn)換為 ARMv8 語法,ADD 指令就是個(gè)很好的例子。ARMv7 中的寄存器的命名方案為 Rn,其中 n 是寄存器的個(gè)數(shù)。這樣命名直接了當(dāng),因?yàn)?ARMv7 中所有寄存器都是 32 位。在 ARMv8 中,寄存器既可以是 32 位也可以是 64 位。32 位寄存器的命名方案為 Wn,而 64 位寄存器的命名方案則為 Xn。這樣軟件設(shè)計(jì)人員必須根據(jù)正在考慮的操作對(duì)象的尺寸,對(duì)現(xiàn)有的代碼進(jìn)行評(píng)估并適當(dāng)?shù)匦薷摹R姳?1。

表 1 :ADD 各種環(huán)境中指令命名方案

ARMv7 ARMv8 A32 ARMv8 A64
(32位)
ARMv8 A64
(64 位)
ADD Rd, Rn ADD Rd, Rn ADD Wd, Wn ADD Xd, Xn

移植 ADD 這樣的指令不僅需要評(píng)估代碼的最終用途,還要相應(yīng)地改變寄存器名稱。根據(jù)整個(gè)代碼庫的復(fù)雜程度,甚至可以自動(dòng)執(zhí)行移植。

其他情況下,例如訪問 ARMv7 協(xié)處理器,可能需要更全面的代碼分析。這種分析被認(rèn)為是最佳方法,因?yàn)閰f(xié)處理器控制很多針對(duì)整個(gè)處理器的系統(tǒng)級(jí)屬性和功能,而且控制協(xié)處理器是針對(duì)ARMv7 的常見操作。

當(dāng)在 AArch64 狀態(tài)下運(yùn)行時(shí),無法直接訪問 CP15 寄存器,因?yàn)樗鼈儾辉?ARMv8 架構(gòu)中。當(dāng)在 AArch32 狀態(tài)下運(yùn)行時(shí),則可通過概念協(xié)處理器訪問它們。這是由 AArch32 執(zhí)行狀態(tài)提供的結(jié)構(gòu),用于為原有的 32 位代碼提供一致的執(zhí)行環(huán)境。

例如,假設(shè)一個(gè)程序需要 Main ID Register —— 協(xié)處理器 CP15 中 c0 寄存器的一部分—— 的內(nèi)容。使用 ARMv7 的專用 MRC 指令和 ARMv8 的 AArch32 執(zhí)行狀態(tài)訪問這個(gè)值:

MRC p15, 0, r1, c0, c0, 0

直接在 AArch32 狀態(tài)運(yùn)行的原有代碼無需修改;但移植到 AArch64 狀態(tài)的代碼需要根據(jù)新架構(gòu)的要求進(jìn)行調(diào)整。

在本機(jī) AArch64 執(zhí)行狀態(tài)下,Main ID Register 值位于名為 MIDR_Eln 的新專用寄存器中。該寄存器可方便地通過系統(tǒng)寄存器訪問指令來訪問。

MRS:

MRS x1, MIDR_EL1

因此,開發(fā)人員應(yīng)該知道這種專用操作和調(diào)用,以便相應(yīng)地更改匯編指令。同樣,這是單行修改,不會(huì)影響周圍軟件代碼的整體結(jié)構(gòu)。此外,還要注意源寄存器和目標(biāo)寄存器都是本機(jī) 64 位寄存器,與 64 位架構(gòu)的其余部分一致。

保持現(xiàn)有軟件完整

WP473

對(duì)基于 Linux 操作系統(tǒng)的軟件而言,移植條件通常比 RTOS 或裸機(jī)代碼更直接。底層的 Linux 操作系統(tǒng)可通過抽象消除很多底層硬件中的差異。大多數(shù)情況下,只需使用 64 位 Linux 編譯器進(jìn)行重新編譯就可以讓代碼運(yùn)行在 64 位 Linux 上。賽靈思 PetaLinux 工具可針對(duì)64 位 Linux 環(huán)境在本機(jī)中整合和重新編譯代碼,從而自動(dòng)執(zhí)行該過程。

其他情況下,開發(fā)人員可能需要使代碼保持為 32 位二進(jìn)制數(shù)。軟件可能需要與只有 32 位形式的外部庫鏈接;或者包含需要花時(shí)間轉(zhuǎn)換的 32 位匯編代碼。移植這類軟件時(shí),可利用很多現(xiàn)代 Linux 版本中都有的 multiarch 或 multib 功能實(shí)現(xiàn)顯著加速。盡管不是完全一樣,但這些經(jīng)常可以互換使用。

Multiarch 是一種系統(tǒng)和文件系統(tǒng)布局的配置方法,以便運(yùn)行 32 和 64 位動(dòng)態(tài)鏈接程序。原來的32 位 ARMv7 Linux 程序無需修改,可直接導(dǎo)入,并與新的 64 位程序共存。該功能可用來快速建立并運(yùn)行系統(tǒng),同時(shí)移植特定的 32 位應(yīng)用程序并針對(duì)底層 64 位架構(gòu)進(jìn)行微調(diào)。

支持Multiarch 的版本將 32 位和64 位庫納入相同 Linux 文件系統(tǒng)中,以實(shí)現(xiàn)這種兼容性。當(dāng)執(zhí)行 64 位應(yīng)用時(shí),使用本機(jī) 64 位庫;32 位應(yīng)用則使用 32 位庫。

創(chuàng)建和維護(hù) multiarch 操作系統(tǒng)需要投入不少時(shí)間。幸好,開源項(xiàng)目,例如 Yocto Project、Canonical 和 Linaro,提供易于集成的內(nèi)容。Yocto Project 提供完整的端對(duì)端構(gòu)建系統(tǒng);Canonical 和 Linaro 提供現(xiàn)成可用的參考文件系統(tǒng),使開發(fā)人員快速取得進(jìn)展。賽靈思答復(fù)66636 詳細(xì)介紹了如何在 ZCU102 評(píng)估平臺(tái)上集成 Ubuntu Core 14.04 文件系統(tǒng)。

默認(rèn)情況下,這些 multiarch 文件系統(tǒng)只使用 64 位應(yīng)用程序。由于它們基于 dpkg 管理工具,因此只需簡(jiǎn)單的命令行接口即可添加更多架構(gòu):

# dpkg -add-architecture armhf

配置 dpkg 工具以支持 32 位架構(gòu)( 例如 armhf),然后,使用更高級(jí)的封裝管理工具,例如 apt-get,就像在 Linux 的 Intel x86 兼容版本上一樣。

對(duì)于有些系統(tǒng)來說,通過 multiarch 在 64 位主機(jī)上運(yùn)行現(xiàn)有的 32 位應(yīng)用程序就足夠了,無需其他工作。對(duì)于其他系統(tǒng),multiarch 可起到節(jié)省時(shí)間的作用,同時(shí)還要對(duì)軟件協(xié)議棧的其他部分進(jìn)行微調(diào),并針對(duì)底層 64 位架構(gòu)和操作系統(tǒng)來優(yōu)化它們。

總 結(jié)

WP473

ARMv8 為軟件開發(fā)人員提供很多性能、安全和架構(gòu)方面的新功能,但是,如果軟件開發(fā)人員因擔(dān)心丟掉現(xiàn)有的軟件架構(gòu)而不愿意使用它,那么這些新功能也就無用武之地。ARMv8 可從硬件和軟件接口實(shí)現(xiàn)處理器架構(gòu)的自然演進(jìn),從而消除這種顧慮。將開發(fā)人員熟悉的指令集實(shí)現(xiàn)自然演進(jìn),以此簡(jiǎn)化低級(jí)代碼的移植。此外,還可以回退到 AArch32 狀態(tài),這樣開發(fā)人員就能夠快速運(yùn)行現(xiàn)有的32 位代碼,以最少的時(shí)間和精力在新硬件上評(píng)估代碼。最后,multiarch Linux 允許將一些代碼不經(jīng)任何修改直接運(yùn)行,這樣就可以顯著減少整體系統(tǒng)集成。ARMv8 處理器,例如 Zynq UltraScale+ MPSoC 允許開發(fā)人員利用新一代功能并保持原有軟件投資。

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

    關(guān)注

    32

    文章

    1794

    瀏覽量

    131343
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2112

    瀏覽量

    73707
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1636

    瀏覽量

    49173
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何利用ZYNQ MPSoC玩DOOM?

    賽靈思和 DornerWorks 的系統(tǒng)軟件團(tuán)隊(duì)在賽靈思的 Zynq? Ultrascale+? MPSoC 上啟動(dòng) Xen Project 管理程序時(shí),我們發(fā)現(xiàn)可通過運(yùn)行當(dāng)年叱詫一時(shí)
    發(fā)表于 10-09 06:21

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發(fā)表于 01-07 16:02

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發(fā)表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發(fā)表于 02-02 07:53

    基于Zynq UltraScale+ MPSoC上運(yùn)行 Xen 管理程序

    熟悉運(yùn)行在賽靈思 Zynq UltraScale+ MPSoC 上的 Xen 管理程序。 賽靈思和 DornerWorks 的系統(tǒng)軟件團(tuán)隊(duì)在賽靈思的
    發(fā)表于 11-16 20:17 ?3504次閱讀
    基于<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>上運(yùn)行 Xen 管理程序

    Zynq UltraScale+ MPSoC存儲(chǔ)器接口系統(tǒng)的介紹

    該視頻重點(diǎn)介紹了UltraScale +產(chǎn)品系列的第一個(gè)成員Zynq?UltraScale+?MPSoC,并展示了使用可編程邏輯中的DDR4 SDRAM IP的存儲(chǔ)器接口系統(tǒng)的
    的頭像 發(fā)表于 11-29 06:36 ?3340次閱讀

    Zynq UltraScale+ MPSoC的發(fā)售消息

    Zynq?UltraScale+?MPSoC,現(xiàn)已開始發(fā)售。視頻向您重點(diǎn)介紹了Xilinx UltraScale +產(chǎn)品組合的第一位成員
    的頭像 發(fā)表于 11-27 06:47 ?3619次閱讀

    Zynq UltraScale+ MPSoC器件的收發(fā)器技術(shù)演示

    該視頻重點(diǎn)介紹了UltraScale +產(chǎn)品組合的第一個(gè)成員,Zynq?UltraScale+?MPSoC,以及其多樣化收發(fā)器技術(shù)的穩(wěn)健性。
    的頭像 發(fā)表于 11-27 06:33 ?2795次閱讀

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發(fā)表于 02-23 06:00 ?15次下載
    如何調(diào)試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米爾電子zynq ultrascale+ mpsoc底板外設(shè)資源清單分享

    米爾電子推出的國(guó)內(nèi)首款zynq ultrascale+ mpsoc平臺(tái)核心板(及開發(fā)板):MYC-CZU3EG吸引了人工智能、工業(yè)控制、嵌入式視覺、ADAS、算法加速、云計(jì)算、有線/無
    發(fā)表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設(shè)資源清單分享

    Zynq UltraScale+ MPSoC軟件開發(fā)者指南

    電子發(fā)燒友網(wǎng)站提供Zynq UltraScale+ MPSoC軟件開發(fā)者指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:03 ?11次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>:<b class='flag-5'>軟件</b>開發(fā)者指南

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發(fā)燒友網(wǎng)站提供Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例

    電子發(fā)燒友網(wǎng)站提供Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設(shè)計(jì)示例

    Zynq UltraScale+ MPSoC驗(yàn)證數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供Zynq UltraScale+ MPSoC驗(yàn)證數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 09-15 10:13 ?0次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>驗(yàn)證數(shù)據(jù)手冊(cè)

    Zynq UltraScale+ MPSoC數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供Zynq UltraScale+ MPSoC數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 12-30 14:37 ?0次下載
    主站蜘蛛池模板: 日本视频h| 国内精品视频| 天天干天天舔天天操| 亚洲精品九色在线网站| 黄色aaaa| 欧美三级一区二区| 免费三级黄色| 国产精品成人在线播放| 在线资源网| 天天操夜夜骑| 偷自在线| 在线播放免费视频| 天天干天天射天天爽| 精品免费福利视频| 久草3| 四虎永久免费地ww4hu57| 久久久精品免费热线观看| 中国人黑人xxⅹ性猛| www深夜视频在线观看高清| 免费看片免| 天天操天天干天天| 国产一区二区三区波多野吉衣| 人人干夜夜操| yy6080亚洲半夜理论一级毛片| 91国内在线观看| jdav视频在线观看| 国产在线麻豆自在拍91精品| 欧美日本一区| 欧美一区二区视频三区| 伊人久久大香线蕉资源| 国产成人精品系列在线观看| 久久国产精品免费专区| 精品国产1000部91麻豆| 五月婷婷在线播放| 瑟瑟久久| 三级毛片在线免费观看| 色版视频| 国产卡1卡2卡三卡网站免费 | 亚州视频一区| 特级毛片网站| 日韩艹|