一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

MAX32655:為什么兩核優(yōu)于一個核

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2022-12-16 15:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

兩個核心比一個好!有時,兩個不同的內(nèi)核比兩個相同的內(nèi)核更好!本應(yīng)用筆記解釋了原因。

介紹

當(dāng)大多數(shù)人想到多核處理器時,他們的腦海中會立即想到個人電腦、智能手機或其他高級計算設(shè)備。這些設(shè)備統(tǒng)一具有復(fù)雜的用戶界面和搶占模式操作系統(tǒng)。

當(dāng)我們閱讀新PC或新智能手機的評論時,通常會提到的一件事是內(nèi)核數(shù)量:“該設(shè)備中的CPU有四個內(nèi)核,最多支持八個線程。有了這些信息,我們知道操作系統(tǒng)可以將任務(wù)調(diào)度到任何內(nèi)核,以嘗試平衡整體工作負載。

在這種環(huán)境中,所有計算核心都盡可能相同。畢竟,必須針對不同的 CPU 架構(gòu)單獨編譯每個任務(wù)是沒有意義的。

但對于深度嵌入式處理器,擁有大量相同類型的內(nèi)核可能不如擁有多個專用內(nèi)核那么理想。

差異化內(nèi)核案例

首先,在許多深度嵌入式應(yīng)用程序中,甚至可能沒有操作系統(tǒng)。由設(shè)計人員決定哪些任務(wù)在哪些內(nèi)核上運行、何時運行以及運行多長時間。其次,主任務(wù)很可能在單個線程中運行,任何其他內(nèi)核都將在那里運行特定的專用任務(wù)。

在這些情況下,人們并不真正關(guān)心內(nèi)核是否都相同,一個CPU處理所有監(jiān)督任務(wù),另一個從屬計算內(nèi)核處理專用任務(wù)。擁有在特定區(qū)域具有更多功能、使用更少功率或消耗更少芯片硅面積的專用內(nèi)核更有意義。

例如,考慮MAX32655。它是一款基于 Arm Cortex-M4 的微控制器,Arm Cortex-M4 是一款功能強大、備受推崇的單線程 CPU 內(nèi)核。MAX32655具有半兆字節(jié)閃存、128KRAM和許多外設(shè),包括低功耗藍牙無線電。?

現(xiàn)在,就停在那里。低功耗藍牙可能聽起來像是硬件功能,但它與軟件和硬件一樣多。你看,硬件實際上相當(dāng)簡單:發(fā)射器和接收器必須具有一定的頻率捷變性,因為它們必須調(diào)諧到四十個可能的通道中的任何一個,并且它們必須快速完成。發(fā)射器和接收器均可快速打開和關(guān)閉以節(jié)省功率。他們必須處理高斯頻移鍵控調(diào)制和解調(diào)。不是微不足道的,但也不是特別具有挑戰(zhàn)性。

但是軟件 - 這可能是真正的挑戰(zhàn)!主機必須管理一整套協(xié)議——屬性協(xié)議、鏈路層控制和適應(yīng)協(xié)議、安全管理器協(xié)議等。并且有一個接口將主機連接到控制器層。正是這一層管理無線電硬件,也不是微不足道的。有一個設(shè)備管理器、鏈路管理器和鏈路控制器——這些功能塊將無線電硬件的細節(jié)抽象到主機協(xié)議。

關(guān)于BLE軟件堆棧的好消息是您不必編寫它。在大多數(shù)環(huán)境中, 當(dāng)您指定特定的 BLE 設(shè)備時,軟件堆棧就會出現(xiàn).壞消息是BLE軟件堆棧要求很高。這并不是說它需要特別大的處理器帶寬或存儲,但BLE堆棧中的時序至關(guān)重要。這意味著當(dāng)BLE需要完成某事時,需要立即完成!如果微控制器內(nèi)核已經(jīng)在執(zhí)行一些時間關(guān)鍵型功能,則必須提供一些東西!

這就是第二個核心的用武之地。主內(nèi)核被釋放出來,將其資源投入到用戶程序中,因為它可以將BLE任務(wù)移交給第二個內(nèi)核。沒有延遲問題,不用擔(dān)心BLE堆棧會在錯誤的時刻中斷內(nèi)核。第二個獨立核心解決了很多問題!

選擇合適的核心

第二個內(nèi)核對于運行BLE堆棧是有意義的。但是選擇哪個核心呢?

一種選擇是使用第二個Arm Cortex-M4。M4帶來了很多資源。它是AMBA總線的原生版本,藍牙庫都針對Cortex-M系列內(nèi)核進行了很好的編譯。那么,為什么不是第二個 M4?

事實是,與Arm Cortex-M4一樣高效,它比運行BLE堆棧的專門任務(wù)所需的CPU更多。更小,更慢,更適度的CPU會做得很好。但是哪個 CPU?

RISC-V(發(fā)音為risk-five)核心問好!與Arm Cortex-M4一樣,它是一個基于RISC架構(gòu)的32位CPU。RISC,或簡化指令集計算,是一種計算機體系結(jié)構(gòu)哲學(xué),它斷言一小組簡單的指令比一大組更復(fù)雜的指令更有效地執(zhí)行。在大多數(shù)情況下,RISC在很大程度上贏得了CISC(復(fù)雜指令集計算)的爭論。但是CISC計算仍然有一個巨大的堡壘:x86架構(gòu)。大多數(shù)其他計算環(huán)境——以及幾乎所有嵌入式處理器——都采用了RISC。

在評估新的CPU內(nèi)核時,首先跳出的三件事是指令集架構(gòu),寄存器補碼和程序員模型。下一節(jié)將探討RISC-V和Arm Cortex-M4之間的這些因素有何不同。

比較指令集

在查看指令集之前,請記?。合馛這樣的高級語言不是計算機的母語。C 編譯器將程序轉(zhuǎn)換為一組由內(nèi)核執(zhí)行的機器指令。一個 C 語句可以轉(zhuǎn)換為數(shù)十條機器指令。C編譯器已經(jīng)變得如此高效,以至于匯編語言編程,即一個語句完全轉(zhuǎn)換為一個機器指令,已經(jīng)成為一種失傳的藝術(shù)。

然而,C語句——或Python,或JavaScript,或其他高級語言——最終用原生機器代碼表達。因此,關(guān)注指令集的工作原理是有意義的。

Arm Cortex-M4基于ARMv7E-M指令集架構(gòu)。雖然Arm Cortex-M4是32位CPU,但ARMv7E-M指令集使用Thumb-2指令編碼,大多數(shù)情況下,這些是16位指令。這里有一個故事。

最初,Arm 指令集是 32 位的。盡管底層架構(gòu)是RISC,但指令集很豐富,但在代碼大小方面并不是特別有效。Arm在90年代中期提出了Thumb編碼,以解決這些關(guān)于指令集效率的擔(dān)憂。拇指指令的長度為 16 位,與以前使用的 32 位編碼的子集非常接近。指令集效率更高,但留下了許多功能。

Thumb-2 于 2003 年推出,混合使用 16 位和 32 位編碼,在恢復(fù)一些 32 位編碼功能的同時保留了大部分代碼密度優(yōu)勢。當(dāng)然,這種方案有一個缺點:它會導(dǎo)致可變長度指令集。但是今天,Thumb-2編碼已經(jīng)成熟且易于理解,實際上是Arm Cortex-M4內(nèi)核支持的唯一指令編碼。

相比之下,大多數(shù)RISC-V方案(包括Maxim的MAX32655中使用的實現(xiàn)方案)都使用純32位編碼。RISC-V支持可選的壓縮編碼,其術(shù)語為16位指令支持。但與 Arm Cortex-M4 中的 Thumb 指令編碼不同,它確實是可選的。

但是有什么指示呢?

ARMv7E-M和RISC-V指令集都支持負載存儲架構(gòu)。這意味著,算術(shù)和邏輯指令的操作數(shù)必須從內(nèi)存顯式加載到寄存器中,一旦執(zhí)行操作,結(jié)果必須顯式存儲回內(nèi)存。

負載存儲架構(gòu)是RISC內(nèi)核的標志,但除此之外,ARMv7E-M指令集并沒有太多的“減少”。ARM指令集包含數(shù)十條指令和指令變體,具有條件執(zhí)行,作為指令操作數(shù)的移位,許多位和字節(jié)操作子指令以及多種內(nèi)存尋址模式。把這一切加起來,它使ARM內(nèi)核成為一個相當(dāng)復(fù)雜的邏輯。

RISC-V并非如此。RV32I指令集中只有40條基本指令。由于其中許多可以分組到指令族中,因此指令集變得更加易于理解:有六個分支指令,五個加載指令,三個存儲指令和兩個用于函數(shù)調(diào)用的“跳轉(zhuǎn)和鏈接”指令。把這些指令家庭放在一起,只有28個指令需要考慮。

為了使事情更簡單,只有六種編碼格式:注冊到注冊、立即、上層立即、存儲、分支和跳轉(zhuǎn)。就是這樣!RISC-V編譯器的代碼生成部分很容易。

看看所有這些寄存器!

現(xiàn)在,寄存器補充:ARMv7E-M 架構(gòu)指定了 16 個寄存器,其中 13 個是通用寄存器。RISC-V架構(gòu)指定了32個寄存器,其中除一個寄存器外,其他所有寄存器都是通用的。以下是它們的工作原理。

臂寄存器命名為 R0 到 R15。但是前三個寄存器有特殊的用途:R15是程序計數(shù)器,對R15的任何寫入實際上都是跳轉(zhuǎn)到該位置。R14是鏈路寄存器。執(zhí)行分支和鏈接(函數(shù)調(diào)用)時,返回地址存儲在 R14 中。R13 是堆棧指針。PUSH指令遞減R13并將指定寄存器中的值存儲到降序存儲器位置;POP 指令從升序內(nèi)存位置加載值并遞增 R13。

RISC-V寄存器被命名為x0到x31,只有一個用戶可見的特殊用途寄存器:x0在讀取時始終返回零值,寫入x0的任何內(nèi)容都會被丟棄。這對簡化指令集編碼來說是一個真正的福音。

所有其他寄存器都是真正的通用寄存器。按照慣例,x1 用作返回地址(Arm 稱之為鏈接寄存器),x2 用作堆棧指針,但硬件中沒有任何內(nèi)容可以強制執(zhí)行(除非在核心設(shè)計中實現(xiàn)了壓縮擴展,但那是另一回事)。雖然 ARM BL(分支和鏈接)指令始終將返回地址存儲在 R14 中,但 RISC-V JAL(跳轉(zhuǎn)和鏈接)指令允許您指定獲取返回地址的寄存器。

RISC-V指令集中似乎缺少一些指令,例如寄存器到寄存器的移動操作!相反,一個寄存器的內(nèi)容使用 ADDI 指令移動到另一個寄存器:ADDI rd, rs, 0 將 rs 的內(nèi)容添加到值零并將結(jié)果存儲在 rd 中,從而有效地將 rs 中的任何內(nèi)容移動到 rd。整潔!

您可能認為 ADDI 是 MOVE 的糟糕替代品,因為算術(shù)指令會修改標志寄存器,而 MOVE 不會。在RISC-V內(nèi)核中,這不是一個問題,因為沒有標志寄存器!相反,分支指令 - BEQ(如果相等則分支)、BNE(如果不等于則分支)、BLT(如果小于則為分支)、BGE(如果大于或等于則為分支)、BLTU(如果小于,則為分支,無符號)和 BGEU(如果大于或等于,則為分支,無符號)——都接受兩個寄存器說明符,執(zhí)行比較,然后有條件地獲取分支。

但是,如果結(jié)果為零,如何分支?只需寫 BEQ rs x0 .請記住,x0 始終包含值零。這使得編寫測試零、非零、負或正值的分支指令變得容易。

因此,雖然RISC-V的指令集和程序員模型對于那些習(xí)慣于Arm指令集的人來說可能看起來有點陌生,但它確實功能強大且完整。

這些內(nèi)核是如何堆疊的?

所以,現(xiàn)在我們來到一個大問題:為什么要使用RISC-V內(nèi)核來運行BLE堆棧?

答案在于可定制性。所有商用CPU內(nèi)核都允許一定程度的定制,這也適用于Arm Cortex-M系列。不過,一般來說,Arm 內(nèi)核中提供的自定義選項是大粒度的。例如,它是否具有浮點運算或嵌入式跟蹤?

相比之下,RISC-V內(nèi)核具有芯片設(shè)計人員可以啟用或禁用的一整套擴展:三種浮點單元(單精度,雙精度和四精度),原子指令,整數(shù)乘除法,壓縮指令以節(jié)省代碼空間,以及其他規(guī)格尚未凍結(jié)。

在設(shè)計運行BLE控制器堆棧的內(nèi)核時,RISC-V內(nèi)核只需整數(shù)乘法和除法擴展即可構(gòu)建。沒有必要包含其他功能, 因為它們對運行 BLE 堆棧沒有任何幫助.因此,沒有理由占用硅空間并消耗支持這些功能的功率。我們可以比主 Arm Cortex-M4 更慢地為核心計時。更慢地對內(nèi)核進行計時可以降低內(nèi)核的功耗。

這就是為什么提前知道第二個內(nèi)核的用途有助于芯片設(shè)計人員并有助于創(chuàng)造最佳的微控制器體驗!

審核編輯:郭婷

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

    關(guān)注

    66

    文章

    18627

    瀏覽量

    183903
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5435

    瀏覽量

    124590
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7154

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    如何DIY款極AE電動車72V大容量電池

    怎么制造大容量電池極主料的選擇
    的頭像 發(fā)表于 05-14 17:50 ?519次閱讀
    如何DIY<b class='flag-5'>一</b>款極<b class='flag-5'>核</b>AE電動車72V大容量電池

    MAX32655低功耗、Arm Cortex-M4 FPU微控制器和Bluetooth 5.2引擎技術(shù)手冊

    MAX32655微控制器(MCU)是款先進的片上系統(tǒng)(SoC),采用Arm Cortex ^?^ -M4F CPU,可高效執(zhí)行復(fù)雜的函數(shù)和算法計算,額定溫度范圍為-40°C至+105°C。該SoC
    的頭像 發(fā)表于 05-08 11:36 ?305次閱讀
    <b class='flag-5'>MAX32655</b>低功耗、Arm Cortex-M4 FPU微控制器和Bluetooth 5.2引擎技術(shù)手冊

    linux+rtos系統(tǒng)如何適配linux小屏幕驅(qū)動?

    的開發(fā)板配套的屏幕都沒有hx8399,我應(yīng)該如何去適配自己的屏幕??梢缘脑捨蚁M軌蜻m配自己的第三方的屏幕,已經(jīng)在大上調(diào)通能用點亮運行。linux下的適配遇到了困難。 有的、年可以在看
    發(fā)表于 04-25 07:16

    請問canmv-k230支持雙嗎?如何調(diào)用另一個核心工作?

    系統(tǒng)使用的是Canmv-K230-micropython-V1.2.2版本. K230是雙芯片,在使用canmv-k230上沒找到關(guān)于另一個核心的調(diào)用方法。 請問如何調(diào)用另一個核心工作? 你好
    發(fā)表于 04-23 06:35

    TAG-8000無線高壓相儀操作使用

    TAG-8000 無線高壓相儀(以下簡稱“儀器”)用于條高壓線路并網(wǎng)或環(huán)網(wǎng)相。儀器適合0.22~220kV交流輸電線路帶電作業(yè)和二次側(cè)帶電作業(yè),具有高壓驗電功能。儀器采用無線傳輸技術(shù),操作安全可靠,使用方便,克服了有線
    發(fā)表于 03-28 17:33 ?0次下載

    STM32雙H7間如何通信?

    STM32雙H7間通信的方法,主要是CM7和CM4之間如何進行數(shù)據(jù)傳遞
    發(fā)表于 03-12 07:34

    ADS8363是具有8路模擬輸入,但是只有兩個ADC的在里面

    ADS8363是具有8路模擬輸入,但是只有兩個ADC的在里面,那么如果我輸入4路單端輸入時,采樣率是多少呢?是不是每路500K?如果我想在通道同時
    發(fā)表于 01-21 07:50

    全志T113雙異構(gòu)處理器的使用基于Tina Linux5.0——異構(gòu)雙通信驗證

    6、雙通信驗證 6.1、C906小創(chuàng)建通訊節(jié)點 在C906小串口終端建立兩個通訊節(jié)點用于監(jiān)聽數(shù)據(jù),輸入eptdev_bind test 2 cpu0 >eptdev_bin
    發(fā)表于 11-20 09:47

    SEGGER為ADI超低功耗微控制器提供SystemView軟件分析工具

    78000,MAX78002,MAX32561,MAX32570,MAX32655,MAX32672,M
    的頭像 發(fā)表于 11-09 17:32 ?1205次閱讀

    Vivado中FFT IP的使用教程

    本文介紹了Vidado中FFT IP的使用,具體內(nèi)容為:調(diào)用IP>>配置界面介紹>>IP端口介紹>>MATLAB生成測試數(shù)據(jù)>>測試verilogHDL>>TestBench仿真>>結(jié)果驗證>>FFT運算。
    的頭像 發(fā)表于 11-06 09:51 ?3880次閱讀
    Vivado中FFT IP<b class='flag-5'>核</b>的使用教程

    芯驛電子 ALINX 推出全新 IP 產(chǎn)品線,覆蓋 TCP/UDP/NVMe AXI IP

    在創(chuàng)新加速的浪潮中,為更好地響應(yīng)客戶群需求, 芯驛電子 ALINX 推出全新 IP 產(chǎn)品線 ,致力于為高性能數(shù)據(jù)傳輸和復(fù)雜計算需求提供 高帶寬、低延遲 的解決方案。發(fā)布的第批 IP 包括
    的頭像 發(fā)表于 10-30 17:39 ?906次閱讀
     芯驛電子 ALINX 推出全新 IP <b class='flag-5'>核</b>產(chǎn)品線,覆蓋 TCP/UDP/NVMe AXI IP <b class='flag-5'>核</b>

    如何申請xilinx IP的license

    在使用FPGA的時候,有些IP是需要申請后才能使用的,本文介紹如何申請xilinx IP的license。
    的頭像 發(fā)表于 10-25 16:48 ?1415次閱讀
    如何申請xilinx IP<b class='flag-5'>核</b>的license

    高斯濾波的卷積怎么確定

    N為奇數(shù),如3、5、7等。奇數(shù)大小的卷積有助于確定一個中心像素點,便于計算。 大小選擇 :卷積的大小決定了濾波器的范圍。較大的卷積核
    的頭像 發(fā)表于 09-29 09:29 ?1697次閱讀

    dsp和單核dsp的區(qū)別

    DSP : 擁有兩個獨立的處理器核心,能夠并行處理多個任務(wù)。 主頻通常較高,能夠提供更高的計算性能,適合處理復(fù)雜且計算量大的數(shù)字信號。 能夠在同時間內(nèi)執(zhí)行多個指令,提高處理速度和效率。 單核DSP : 只有
    的頭像 發(fā)表于 09-24 16:14 ?1927次閱讀

    關(guān)于2K1000LA的間中斷

    我試圖閱讀2K1000LA處理器用戶手冊(V1.0)以在我開發(fā)的操作系統(tǒng)中支持多核啟動。實際上我對此有些疑惑,2K1000LA啟動的時候,是兩個核心都會起啟動,還是只會啟動
    發(fā)表于 08-27 22:04