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

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

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

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

在MAX78000上開發(fā)功耗優(yōu)化應(yīng)用

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

掃碼添加小助手

加入工程師交流群

功耗是邊緣人工智能AI) 應(yīng)用的關(guān)鍵因素,其中整個系統(tǒng)由小型電池供電,預(yù)計無需充電或更換電池即可運行數(shù)月。MAX78000超低功耗AI微控制器專為物聯(lián)網(wǎng)邊緣的此類應(yīng)用而設(shè)計。本文介紹了各種配置,使用戶能夠在MAX78000上開發(fā)功耗優(yōu)化應(yīng)用,并提供基準(zhǔn)測試示例。功耗優(yōu)化方法應(yīng)用于兩個案例研究應(yīng)用:20個關(guān)鍵詞的關(guān)鍵詞發(fā)現(xiàn)(KWS20)和人臉識別(FaceID),報告的結(jié)果可作為用戶應(yīng)用的指南。

介紹

MAX78000為超低功耗微控制器,具有專用卷積神經(jīng)網(wǎng)絡(luò)(CNN)加速器。這種架構(gòu)能夠在能源受限的環(huán)境中開發(fā)非常節(jié)能的 AI 應(yīng)用程序。MAX78000提供多種選擇,便于開發(fā)低功耗應(yīng)用(詳見數(shù)據(jù)資料[1]),例如可根據(jù)目標(biāo)應(yīng)用選擇不同的振蕩器、時鐘源和工作模式。以下部分概述了這些選項,包括MAX78000評估板的實際示例和實際測量結(jié)果。有關(guān)詳細(xì)信息,請遵循本文檔中的參考資料。

注:本應(yīng)用筆記給出的測量結(jié)果基于MAX78000評估板上的示例代碼。用戶平臺和特定應(yīng)用程序的實際結(jié)果可能會有所不同。

MAX78000

MAX78000是新一代AI微控制器,用于以超低功耗執(zhí)行神經(jīng)網(wǎng)絡(luò),并位于物聯(lián)網(wǎng)邊緣。該產(chǎn)品將最節(jié)能的AI處理與Maxim Integrated成熟的超低功耗微控制器相結(jié)合?;谟布?CNN 加速器使電池供電的應(yīng)用程序能夠執(zhí)行 AI 推理,同時僅消耗微焦耳的能量。MAX78000具有帶FPU微控制器的Atarm Cortex-M4,通過超低功耗深度神經(jīng)網(wǎng)絡(luò)加速器實現(xiàn)高效的系統(tǒng)控制。還集成了一個RISC-V內(nèi)核,可以執(zhí)行應(yīng)用和控制代碼以及驅(qū)動CNN加速器。圖1所示為MAX78000的頂層架構(gòu)。 ^?^ ^?^

圖1.MAX78000的結(jié)構(gòu)

圖1.MAX78000的結(jié)構(gòu)

MAX78000評估板(EV kit)提供了一個平臺,利用MAX78000的功能構(gòu)建新一代AI器件。評估板具有板載硬件,如數(shù)字麥克風(fēng)、串行端口、攝像頭模塊支持和3.5英寸觸摸彩色薄膜晶體管TFT)顯示屏[2]。它還包括用于監(jiān)控和顯示功率電平的電路。MAX34417 [3] 監(jiān)測 VCOREA 和 VCOREB 電壓以及

圖2.電源監(jiān)視器。

圖2.電源監(jiān)視器。

MAX78000,并將累積功率報告給MAX32625,MAX2用作電源數(shù)據(jù)處理器,同時控制功率顯示,如圖<>所示。

電源監(jiān)視器以兩種模式運行; 瞬時 ,顯示平均功率、電源電流和電壓,以及 窗口能量累積 ,根據(jù)觸發(fā)事件測量 CNN 功率或總系統(tǒng)功率。瞬時測量通常用于快速、粗略地估計功率電平。另一方面,窗口測量非常適合測量用戶定義的開始實例和完整實例之間的累積能量。這些事件由MAX78000的兩個GPIO(P0.2和P0.3)的切換觸發(fā),這兩個GPIO也連接到LED1和LED2以及MAX32625功率數(shù)據(jù)處理器的端口。有關(guān)使用電源監(jiān)視器的詳細(xì)信息,請參閱 [4]。

MAX78000時鐘和工作模式

MAX78000支持不同的時鐘源和低功耗工作模式,可聯(lián)合配置以實現(xiàn)優(yōu)化的功耗和性能。本應(yīng)用筆記簡要介紹了每種模式,以指導(dǎo)讀者根據(jù)所需應(yīng)用設(shè)置模式。有關(guān)更詳細(xì)的描述,請參閱 [5]。

時鐘

MAX78000包括多個可配置時鐘,供不同外設(shè)使用。用戶可以根據(jù)需要配置時鐘源,以選擇性能和電源效率的組合。選定的系統(tǒng)振蕩器(SYS_OSC)是大多數(shù)內(nèi)部模塊的時鐘源。以下振蕩器源可用,可以選擇SYS_OSC:

  1. 內(nèi)部初級振蕩器 (IPO) – 100MHz:

    IPO 是頻率最快的振蕩器,消耗的功率最大。當(dāng)進(jìn)入低功耗模式(LPM)時,該振蕩器可以關(guān)斷。

  2. 內(nèi)部次級振蕩器 (ISO) – 60MHz:

    這是一款低功耗內(nèi)部次級振蕩器,是SYS_OSC的上電復(fù)位默認(rèn)設(shè)置。

  3. 內(nèi)部納米環(huán)振蕩器 (INRO) – 8kHz-30kHz:

    INRO 是一種超低功耗內(nèi)部振蕩器,可以選擇作為SYS_OSC并始終啟用。頻率可配置為 8kHz、16kHz 或 30kHz(默認(rèn))。

  4. 內(nèi)部波特率振蕩器 (IBRO) – 7.3728MHz:

    這是一款功耗非常低的內(nèi)部振蕩器,可以選擇作為SYS_OSC。該時鐘可以選擇用作UART的專用波特率時鐘。

  5. 外部實時時鐘振蕩器 (ERTCO) – 32.768kHz:

    ERTCO 是一款功耗極低的內(nèi)部振蕩器,可以選擇作為SYS_OSC。ERTCO可以選擇使用32.768kHz輸入時鐘或8kHz獨立納米環(huán)振蕩器代替外部晶體。該振蕩器是實時時鐘 (RTC) 的默認(rèn)時鐘,一旦啟用 RTC,就會自動啟用。

所選SYS_OSC是系統(tǒng)振蕩器分頻器的輸入,用于生成系統(tǒng)時鐘 (SYS_CLK)。分頻器可在 0 到 7 之間選擇,得到 1、2、4、8、16、32、64 或 128 的除數(shù)。SYS_CLK驅(qū)動帶有 FPU 內(nèi)核的 Arm Cortex-M4,以及系統(tǒng)中的所有高級高性能總線 (AHB) 主站。通過兩個分頻器的固定分頻后,它還可以生成高級外設(shè)總線(APB)時鐘,為CNN加速器、RISC-V和外設(shè)供電。有關(guān)時鐘源、配置和要設(shè)置的寄存器列表的更多詳細(xì)信息,請參閱 [3] 的第 1.5 節(jié)。

表 1 中列出了用于設(shè)置時鐘的 API。

表 1:用于設(shè)置時鐘的 API| 應(yīng)用程序接口 | 描述 |

| ------------------------------------------------------------- | ------ |

| 國際MXC_SYS_ClockSourceEnable(mxc_sys_system_clock_t時鐘) | 啟用時鐘源而不選擇它;以下來源可用:
MXC_SYS_CLOCK_IPO、MXC_SYS_CLOCK_IBRO、MXC_SYS_CLOCK_ISO、MXC_SYS_CLOCK_INRO、MXC_SYS_CLOCK_ERTCO MXC_SYS_CLOCK_EXTCLK |

| 國際MXC_SYS_Clock_Select(mxc_sys_system_clock_t時鐘) | 選擇要用于SYS_CLK的時鐘源;有關(guān)列表,請參閱時鐘部分 |

| void SystemCoreClockUpdate(void) | 根據(jù)所選時鐘源更新系統(tǒng)核心時鐘 |

| 無效MXC_SYS_ClockEnable(mxc_sys_periph_clock_t時鐘) | 支持外設(shè)時鐘:MXC_SYS_PERIPH_CLOCK_GPIO0 至 2MXC_SYS_PERIPH_CLOCK_DMAMXC_SYS_PERIPH_CLOCK_SPI0和 1MXC_SYS_PERIPH_CLOCK_UART0 至 3MXC_SYS_PERIPH_CLOCK_I2C0 至 2MXC_SYS_PERIPH_CLOCK_TMR0 至 5MXC_SYS_PERIPH_CLOCK_ADCMXC_SYS_PERIPH_CLOCK_CNNMXC_SYS_PERIPH_CLOCK_PTMXC_SYS_PERIPH_CLOCK_TRNGMXC_SYS_PERIPH_CLOCK_SMPHRMXC_SYS_PERIPH_CLOCK_OWIREMXC_SYS_PERIPH_CLOCK_CRC MXC_SYS_PERIPH_CLOCK_AESMXC_SYS_PERIPH_CLOCK_I^2^SMXC_SYS_PERIPH_CLOCK_PCIFMXC_SYS_PERIPH_CLOCK_WDT0MXC_SYS_PERIPH_CLOCK_CPU1 // RISC-V 時鐘MXC_SYS_PERIPH_CLOCK_WDT1MXC_SYS_PERIPH_CLOCK_LPCOMP1 至 3 |

| 無效MXC_SYS_ClockDisable(mxc_sys_periph_clock_t時鐘) | 禁用外設(shè)時鐘;有關(guān)列表,請參閱時鐘部分 |

操作模式

MAX78000包括多種工作模式,能夠微調(diào)電源選項以優(yōu)化性能和功耗。系統(tǒng)支持以下操作模式,如表 2 所示。

表2:MAX78000的工作模式| 操作模式 | 手臂 | RISC-V | 振蕩器 | 系統(tǒng) | 美國有線電視新聞網(wǎng)象限 | 美國有線電視新聞網(wǎng)內(nèi)存 | 外設(shè) |

| ---------------------------------------------------------------------------------------------- | ------ | -------- | -------- | ------ | ------------------------ | ------------------------ | ------ |

| 積極 | 上 | 上 | 全部可用 | 可用 | 活動,可配置 | 活動,可配置 | 可用 |

| 睡 | 保留 | 開/留 | 全部可用 | 可用 | 活動,可配置 | 活動,可配置 | 可用 |

| 液化石油馬 | 保留 | 開/留 | ISO, IBRO, ERTCO,
INRO | 0,1:保留期
2,3:可用 | 活動,可配置 | 活動,可配置 | 可用 |

| 芬歐匯川 | 保留 | 保留 | 伊布羅、埃爾特科、
印度工業(yè)大學(xué) | 保留 | 可選關(guān)閉 | 可選擇保留 | 保留, LPUART0, LPTMR0-1 LPWDT0, LPCOMP0-3, GPIO, WUT,

RTC 可用 |

| 待機(jī) | 保留 | 保留 | 伊布羅、埃爾特科、
印度工業(yè)大學(xué) | 保留 | 關(guān)閉 | 可選擇保留 | 保留、WUT、RTC、
COMP0、GPIO 可用 |

| 備份 | 關(guān)閉 | 關(guān)閉 | 埃爾科 | 可配置
的保留 | 關(guān)閉 | 可選擇保留 | 關(guān)閉
WUT、RTC、COMP0、GPIO 可用 |

| 關(guān)斷
| 關(guān)閉 | 關(guān)閉 | 關(guān)閉 | 關(guān)閉 | 關(guān)閉 | 關(guān)閉 | 關(guān)閉,
可配置 P3.0/1 |

活動模式:

在這種模式下,Arm 和 RISC-V 內(nèi)核都可以執(zhí)行應(yīng)用代碼,并且所有數(shù)字和模擬外設(shè)均可按需提供。動態(tài)時鐘禁用未使用的外設(shè),提供高性能和低功耗的最佳組合。每個外設(shè)都可以在活動模式下單獨使能或斷電。CNN 和四個 CNNx16_n 處理器陣列中的每一個及其相關(guān)存儲器都可以根據(jù)需要關(guān)閉電源或設(shè)置為活動狀態(tài)。

睡眠模式:

當(dāng) Arm 或 RISC-V 執(zhí)行代碼時,可以使用此模式,在此期間,另一個進(jìn)入睡眠狀態(tài)以降低功耗。可以選擇啟用時鐘以加快喚醒過程。CNN 可供使用,四個CNNx16_n象限中的每一個都可以單獨配置為關(guān)斷。除非明確禁用,否則所有外圍設(shè)備均處于打開狀態(tài)

To enter SLEEP Mode:
     SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;  // Needed just once

Either directly set sleep mode bit in MXC_GCR->pm register, or use WFI instruction:
?  MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE;
MXC_GCR->pm   |= MXC_S_GCR_PM_MODE_CM4;
?  Or use WFI:
o   Arm:  __WFI(); // Enter to sleep and wait for interrupt to wake up
o   RISC-V: asm volatile("wfi");

To enter into this mode on Arm, MXC_LP_EnterSleepMode() API call can also be used.

低功耗模式:

如果RISC-V希望在Arm處于深度睡眠狀態(tài)時從啟用的外設(shè)收集和移動數(shù)據(jù),則可以使用此模式。如果未使用 RISC-V 并且處于睡眠模式,則 Arm 還可以處理數(shù)據(jù)并在外圍設(shè)備或 CNN 處于活動狀態(tài)并在中斷時喚醒時切換到 LPM。Arm、DMA 和 SPI0 處于狀態(tài)保留狀態(tài)。CNN 象限、內(nèi)存和其他外設(shè)處于活動狀態(tài)且可配置。請注意,CNN 只能喚醒 RISC-V,而不能喚醒 LPM 中的 Arm。在這種情況下,如果 CNN 處理時間已知,則喚醒計時器 (WUT) 可用于喚醒 Arm?;蛘撸珻NN中斷可以喚醒RISC-V,RISC-V反過來可以喚醒Arm,然后RISC-V可以重新進(jìn)入睡眠狀態(tài)。

Before going to LPM:
Make sure the clock source is enabled during LPM in MXC_GCR->pm, for example:
 MXC_GCR->pm &= ~MXC_F_GCR_PM_ISO_PD;  // enable ISO during sleep

Power Sequencer Registers (PWRSEQ) are used to configure clock source and wake up source. The clock source for peripherals and RISC-V needs to be specified. By default, it uses ISO during LPM. If needed, set this field to 1 to use the PCLK (APB Clock = SYS_CLK/2)
PWRSEQ_LPCN ->lpcn |= MXC_F_PWRSEQ_LPCN_LPMCLKSEL;

The wakeup source of the low power peripheral (e.g GPIO, RISC-V) needs to be enabled. For example:
MXC_PWRSEQ->lppwen |= MXC_F_PWRSEQ_LPPWEN_CPU1;  // wake up on RISC-V interrupt
To enter LPM:
     SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;  // Needed just once
     /* Write 1 to clear */
    MXC_PWRSEQ->lpwkst0 = 0xFFFFFFFF;
    MXC_PWRSEQ->lpwkst1 = 0xFFFFFFFF;
    MXC_PWRSEQ->lppwst  = 0xFFFFFFFF; 
    MXC_MCR->ctrl |= MXC_F_MCR_CTRL_ERTCO_EN; // enable ERTCO 

Either directly set sleep mode bit in MXC_GCR->pm register, or use WFI instruction:
  • MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE; MXC_GCR->pm |= MXC_S_GCR_PM_MODE_LPM;

  • Or use WFI:

    • Arm:__WFI(); // Enter to deepsleep, wait for interrupt to wake up

在LPM中,IPO斷電,應(yīng)使用IBRO,ERTCO,INRO或ISO。

注意:如果 Arm 內(nèi)核進(jìn)入 LPM,RISC-V 可以根據(jù)需要繼續(xù)執(zhí)行并進(jìn)入睡眠狀態(tài)。如果需要在兩個內(nèi)核之間管理 LPM 的入口,則可以使用多處理器通信來確保兩個內(nèi)核都處于已知狀態(tài)。有關(guān)詳細(xì)信息,請參閱 [3] 中的第 3.3.5 節(jié)。

微功耗模式:

此模式用于極低的功耗,同時使用最少的外設(shè)集來提供喚醒功能。在此模式下,將保留 Arm 和 RISC-V、系統(tǒng)和 CNN RAM 以及非 UPM 外設(shè)的狀態(tài)。CNN 象限可以關(guān)閉。IPO 和 ISO 振蕩器斷電,IBRO、ERTCO和INRO啟用。以下外設(shè)可用作喚醒源:WUT、LPUART0、LPTMR0、LPTMR1、LPWDT0、LPCOMP0-LPCOMP3 和 GPIO

To enter UPM Mode:
      /* Write 1 to clear */
     MXC_PWRSEQ->lpwkst0 = 0xFFFFFFFF;
     MXC_PWRSEQ->lpwkst1 = 0xFFFFFFFF;
     MXC_PWRSEQ->lppwst  = 0xFFFFFFFF; 
     MXC_MCR->ctrl |= MXC_F_MCR_CTRL_ERTCO_EN; // enable ERTCO 

Set UPM mode bit in MXC_GCR->pm register:
      MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE;
MXC_GCR->pm |= MXC_S_GCR_PM_MODE_UPM;

To enter into this mode on Arm, MXC_LP_EnterDeepSleepMode() API call can also be used.

這種模式在低活動循環(huán)應(yīng)用中最有利于節(jié)省能源。

為了確保確定性地進(jìn)入 UPM 模式,Arm 和 RISC-V 可能需要使用多處理器通信進(jìn)行同步。有關(guān)更多信息,請參閱 [3] 中的第 3.4.5 節(jié)。

待機(jī)模式:

在此模式下,RTC 運行時保留系統(tǒng)狀態(tài);Arm、RISC-V、System RAM、GPIO 和外設(shè)也保留其狀態(tài)。CNN 象限關(guān)閉,CNN 內(nèi)存具有可選擇的保留。IPO 和 ISO 振蕩器斷電,ERTCO、INRO 和 IBRO 啟用。如果需要對應(yīng)用進(jìn)行占空比,此模式可提供進(jìn)一步的功耗降低。

To enter STANDBY Mode:
     /* Write 1 to clear */
    MXC_PWRSEQ->lpwkst0 = 0xFFFFFFFF;
    MXC_PWRSEQ->lpwkst1 = 0xFFFFFFFF;
    MXC_PWRSEQ->lppwst = 0xFFFFFFFF; 
    MXC_MCR->ctrl |= MXC_F_MCR_CTRL_ERTCO_EN; // enable ERTCO 

Set STANDBY mode bit in MXC_GCR->pm register:
    MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE;
    MXC_GCR->pm |= MXC_S_GCR_PM_MODE_STANDBY;

To enter into this mode on Arm, MXC_LP_EnterStandbyMode() API call can also be used.

為了確保確定性地進(jìn)入待機(jī)模式,Arm 和 RISC-V 可能需要使用多處理器通信進(jìn)行同步。有關(guān)更多信息,請參閱 [3] 中的第 3.5.5 節(jié)。

備份模式:

此模式用于保留系統(tǒng)內(nèi)存。在此模式下,Arm、RISC-V、所有外設(shè)和除 ERTCO 之外的所有振蕩器都將關(guān)閉電源。系統(tǒng) RAM 0-3 可以獨立配置為使用 PWRSEQ_LPCN 寄存器保留狀態(tài)。

進(jìn)入備份模式不需要 Arm 和 RISC-V 之間的同步,任何一個內(nèi)核都可以將 GCR_PM.mode 設(shè)置為 BACKUP,這會導(dǎo)致設(shè)備立即進(jìn)入 BACKUP。

To enter BACKUP Mode:
     /* Write 1 to clear */
    MXC_PWRSEQ->lpwkst0 = 0xFFFFFFFF;
    MXC_PWRSEQ->lpwkst1 = 0xFFFFFFFF;
    MXC_PWRSEQ->lppwst  = 0xFFFFFFFF; 

 Set BACKUP mode bit in MXC_GCR->pm register:
    MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE;
    MXC_GCR->pm |= MXC_S_GCR_PM_MODE_BACKUP

To enter into this mode on Arm, MXC_LP_EnterBackupMode() API call can also be used.

掉電模式:

此模式在產(chǎn)品級別的分發(fā)和存儲期間使用。ARM、RISC-V、存儲器、外設(shè)和振蕩器均斷電。在此模式下沒有數(shù)據(jù)保留,但閃存中的值會保留。在此模式下,V導(dǎo)演POR電壓監(jiān)視器正在運行。

如果已配置,可通過外部復(fù)位 (RSTN) 或 P3.0 或 P3.1 上的喚醒事件退出 PDM。

To enter PDM Mode:
 MXC_GCR->pm &= ~MXC_F_GCR_PM_MODE;
 MXC_GCR->pm |= MXC_S_GCR_PM_MODE_POWERDOWN

To enter into this mode on Arm, MXC_LP_ShutDownMode() API call can also be used.

喚醒配置

需要將 Arm 和 RISC-V 配置為在發(fā)生喚醒事件時喚醒。有關(guān)不同操作模式下的喚醒源列表,請參閱 [3] 中的第 4.5 節(jié)。

手臂喚醒配置:

應(yīng)啟用中斷。在 SLEEP 的情況下,Arm 內(nèi)核會喚醒 after__WFI() 以響應(yīng)任何中斷。

對于低功耗模式,需要啟用喚醒源:

  • 在電源排序器寄存器 (PWRSEQ) 中:在低功耗外設(shè)喚醒中啟用外設(shè)和特定 GPIO 源 啟用寄存器(PWRSEQ_LPWKEN0 至 3,PWRSEQ_LPPWEN)
  • 在全局控制寄存器 (GCR) 中:在電源管理寄存器 (GCR_PM) 中啟用 GPIO 喚醒使能和 RTC 報警喚醒啟用

請參閱[3]的第11.3和13.5節(jié)。

Example of Arm wakeup configuration: 
Wakeup from LPM on GPIO:
 MXC_GCR->pm  |= MXC_F_GCR_PM_GPIO_WE;  // enable wakeup from GPIOs
 MXC_PWRSEQ->lpwken2 |= (1 << 7);   // Pb2: GPIO2.7 is selected for wakeup

Wakeup from LPM on RISC-V interrupt:
 MXC_PWRSEQ->lppwen |= MXC_F_PWRSEQ_LPPWEN_CPU1; // wakeup on RISC-V interrupt

RISC-V 喚醒配置:

要將RISC-V配置為在中斷時喚醒,需要啟用IRQ和EVENT。

Example of RISC-V wakeup configuration: 
 __enable_irq();
 NVIC_EnableIRQ(CNN_IRQn);
 NVIC_EnableEVENT(CNN_IRQn);

表 3 顯示了 Arm 和 RISC-V 代碼的示例。Arm 進(jìn)入 LPM(深度睡眠),RISC-V 初始化并啟動 CNN,然后進(jìn)入睡眠狀態(tài),直到 CNN 推理完成。之后,CNN中斷喚醒RISC-V,然后喚醒ARM也。

有關(guān)此示例的完整代碼,請參閱 [6]。

表 3:ARM 和 RISC-V LPM 和喚醒的示例| 手臂 | RISC-V |

| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |

| mnist-riscvint main(void){MXC_ICC_Enable(MXC_ICC0); // 啟用緩存// 切換到 100 MHz 時鐘MXC_SYS_Clock_Select(MXC_SYS_CLOCK_IPO);SystemCoreClockUpdate();設(shè)置 RISC-V 引導(dǎo)地址MXC_FCR->urvbootaddr = (uint32_t) &_ FlashStart ;啟用森帕霍爾時鐘MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_SMPHR);設(shè)置喚醒 ISR NVIC_SetVector(RISCV_IRQn, WakeISR); 不要刪除此行:MXC_Delay(SEC(2));如果需要,讓調(diào)試器中斷 啟用 RISC-V 時鐘MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_CPU1);轉(zhuǎn)到 LPM,等待 RISC-V 喚醒MXC_LP_ClearWakeStatus();SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; // SLEEPDEEP=1__WFI(); // 轉(zhuǎn)到深度睡眠,讓 RISC-V 運行返回 0;} void WakeISR(void){MXC_SEMA->irq0 = MXC_F_SEMA_IRQ0_EN & ~MXC_F_SEMA_IRQ0_CM4_IRQ;
} | int main(void){Debug_Init(); // 設(shè)置 RISCV JTAGMXC_ICC_Enable(MXC_ICC1); // 啟用緩存 使能外設(shè), CNN 中斷, CNN 時鐘 // CNN 時鐘: 50 MHz 分區(qū) 1cnn_enable(MXC_S_GCR_PCLKDIV_CNNCLKSEL_PCLK, MXC_S_GCR_PCLKDIV_CNNCLKDIV_DIV1); cnn_init();使?fàn)顟B(tài)機(jī)進(jìn)入一致的狀態(tài)cnn_load_weights();加載內(nèi)核cnn_load_bias();cnn_configure();配置狀態(tài)機(jī)load_input();加載數(shù)據(jù)輸入cnn_start(); // 在 (cnn_time == 0)asm volatile(“WFI”) 時啟動 CNN 處理; 睡眠,等待 CNN 完成 // 現(xiàn)在信號 Arm 喚醒MXC_SEMA->irq0 = MXC_F_SEMA_IRQ0_EN |MXC_F_SEMA_IRQ0_CM4_IRQ;} int cnn_enable(uint32_t clock_source, uint32_t clock_divider){ // 重置所有域,恢復(fù) CNN 的電源 MXC_BBFC->reg3 = 0xf; // 重置 MXC_BBFC->reg1 = 0xf; // 屏蔽內(nèi)存MXC_BBFC->reg0 = 0xf; // PowerMXC_BBFC->reg2 = 0x0; // isoMXC_BBFC->reg3 = 0x0; // 重置MXC_GCR->pclkdiv = (MXC_GCR->pclkdiv & ~(MXC_F_GCR_PCLKDIV_CNNCLKDIV |MXC_F_GCR_PCLKDIV_CNNCLKSEL))|clock_divider |clock_source;啟用 CNN 時鐘MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_CNN);在 CNN上啟用中斷和喚醒完成 __enable_irq();NVIC_EnableIRQ(CNN_IRQn);NVIC_EnableEVENT(CNN_IRQn);返回CNN_OK;
} |

不同模式下的功耗

在開發(fā)應(yīng)用時,用戶可以將MAX78000切換到不同的工作模式,并相應(yīng)地安排任務(wù)以節(jié)省功耗。了解每種操作模式下的功耗以及啟動或喚醒所需的時間,有助于用戶選擇合適的模式并規(guī)劃任務(wù)的占空比。電源監(jiān)視器可在系統(tǒng)電源模式 [4] 下使用,以測量幾種情況下的功耗和喚醒或啟動時間。在此測試中,RISC-V和外圍設(shè)備關(guān)閉,Arm在不同的操作模式下進(jìn)行測試。對于喚醒時間測試,RISC-V用作Arm的喚醒源。 圖3顯示了該實驗的結(jié)果。使用ISO振蕩器在60MHz下測量活動功率和睡眠功率。其他低功耗模式在休眠期間采用 ERTCO (32kHz)(API 默認(rèn)值)。

還測試了不同時鐘頻率的啟動時間(定義為從上電到開始執(zhí)行主代碼的時間)和喚醒時間,如圖4所示。喚醒時間隨所選時鐘頻率進(jìn)行縮放。啟動時間以上電默認(rèn)時鐘(ISO 在 60MHz)測量。

圖3.不同運行模式下的功耗。

圖3.不同運行模式下的功耗。

圖4.不同頻率的啟動和喚醒時間。

圖4.不同頻率的啟動和喚醒時間。

美國有線電視新聞網(wǎng)電源

人工智能應(yīng)用程序的核心是由CNN加速器執(zhí)行的推理。根據(jù)應(yīng)用程序的不同,推理可以連續(xù)地對傳入的數(shù)據(jù)進(jìn)行,也可以按特定的時間間隔定期進(jìn)行。CNN推理可以在輸入數(shù)據(jù)準(zhǔn)備就緒后開始(例如KWS案例研究),也可以在FIFO模式下(例如FaceID示例)開始,一旦FIFO中存儲了足夠的數(shù)據(jù)來開始該過程,它就會開始。CNN 功耗分三個階段測量:

  • 加載權(quán)重(內(nèi)核):在活動模式下將權(quán)重加載到 CNN 內(nèi)存中發(fā)生一次
  • 加載輸入數(shù)據(jù):每次有新的推理時。在FIFO模式下,它可以與推理重疊
  • 推理:對輸入數(shù)據(jù)進(jìn)行操作并生成分類結(jié)果

功率監(jiān)視器使用 GPIO 信號觸發(fā)每個事件,并在 CNN 功率模式下測量每個相位的功率 [4]。為了進(jìn)行測量,在Maxim SDK中選擇了兩個示例:KWS20和FaceID。每個示例都經(jīng)過訓(xùn)練[7]、合成[8],并閃存到MAX78000評估板中??梢灾甘竞铣赡_本僅為 Arm(默認(rèn):RISC-V 關(guān)閉)或 RISC-V(帶有 --deepsleep --riscv --riscv-debug 標(biāo)志)生成代碼,其中 Arm 初始化 RISC-V 并進(jìn)入睡眠狀態(tài)。合成腳本還可以包括 GPIO 信號,以指示電源監(jiān)視器在 CNN 電源模式 (--energy) 下運行。能量、時間、非活動 (I) 和活動 (A) 功率測量值顯示在功率監(jiān)視器顯示屏上。KWS20和FaceID在不同操作模式和時鐘源(100MHz時的IPO和60MHz的ISO)下的測試結(jié)果如表4和表5所示。請注意,F(xiàn)IFO用于FaceID,因此推理時間也包括加載時間。根據(jù)結(jié)果,當(dāng)CNN使用相同的時鐘時,僅使用ARM以及ARM和RISC-V的推理時間和能量是相似的。使用較慢的時鐘源加載權(quán)重和數(shù)據(jù)需要更長的時間,從而導(dǎo)致能量顯著增加。用戶應(yīng)考慮加載內(nèi)核和輸入所需的能量,以決定如何調(diào)度應(yīng)用程序。在活動周期較小時的情況下,重新加載重量可能會改善整體功耗。在睡眠模式或LPM中,推理時間和能量預(yù)計不會改善,因為它們僅在CNN的活動窗口內(nèi)測量。但是,它們會顯著影響應(yīng)用程序的總體功耗,如下文所示。

選擇ARM和RISC-V在空閑時間都處于睡眠狀態(tài)的案例,通過應(yīng)用不同的時鐘頻率和源來測試振蕩器頻率的影響。RISC-V驅(qū)動加載權(quán)重和輸入,以及管理CNN。通過降低時鐘頻率,推理時間和能量呈指數(shù)級增長。這表明以最高速度執(zhí)行加載和推理,然后進(jìn)入更長的睡眠期往往會改善整體能耗。該實驗的結(jié)果如圖5和圖6所示。

表 4:KWS20 的 CNN 功率分析| KWS20:
操作
模式 | 時鐘頻率(兆赫) | 內(nèi)核加載 | 輸入加載 | 推理 |

| ----------------------------------------------------------------- | ------------------ | ---------- | ---------- | ------ |

| 手臂 | RISC-V | 美國有線電視新聞網(wǎng) | E(毫焦耳) | T(毫秒) | I(毫瓦) | A(毫瓦) | E(毫焦耳) | T(毫秒) | I(毫瓦) | A(毫瓦) | E(毫焦耳) | T(毫秒) | A(毫瓦) |

| 僅手臂 | 始終處于活動狀態(tài) | 100 | 不適用 | 50 | 0.146 | 11.6 | 7.2 | 19.8 | 0.013 | 1.1 | 7.2 | 19.27 | 0.14 | 2 | 37.45 |

| 睡 | 100 | 不適用 | 50 | 0.148 | 11.6 | 7.02 | 19.8 | 0.013 | 1.1 | 7.02 | 19.33 | 0.136 | 2 | 35.82 |

| 液化石油馬 | 60 | 不適用 | 30 | 0.154 | 19.3 | 5.33 | 13.29 | 0.014 | 1.8 | 5.33 | 13.06 | 0.139 | 4.1 | 18.32 |

| Arm 和 RISC-V | 始終處于活動狀態(tài) | 100 | 50 | 50 | 0.42854 | 34.72 | 5.47 | 17.81 | 0.04001 | 3.31 | 10.45 | 22.52 | 0.1401 | 1.99 | 21.86 |

| 只有手臂睡眠 | 100 | 50 | 50 | 0.04036 | 3.31 | 5.5 | 17.71 | 0.14077 | 2.01 | 21.89 |

| 都睡 | 100 | 50 | 50 | 0.03829 | 3.15 | 5.47 | 17.63 | 0.14055 | 2.19 | 21.41 |

| 都睡 | 60 | 30 | 30 | 0.487 | 50.3 | 3.48 | 13.16 | 0.0481 | 5.53 | 3.63 | 12.31 | 0.14595 | 3.38 | 13.06 |

| 液化石油馬 | 60 | 30 | 30 | 0.0456 | 4.7 | 3.48 | 12.92 | 0.1424 | 3.5 | 13.67 |

表 5:分析 FaceID 的 CNN 功率| 面容ID:
操作
模式 | 時鐘頻率(兆赫) | 內(nèi)核加載 | 輸入加載 | 先進(jìn)先出加載

  • 推理 |

| --------------------------------------------------------------------------------- | ------------------ | ---------- | ---------- | --------------------- |

| 手臂 | RISC-V | 美國有線電視新聞網(wǎng) | E(毫焦耳) | T(毫秒) | I(毫瓦) | A(毫瓦) | E(毫焦耳) | T(毫秒) | I(毫瓦) | A(毫瓦) | E(毫焦耳) | T(毫秒) | A(毫瓦) |

| 僅手臂 | 始終處于活動狀態(tài) | 100 | 不適用 | 50 | 0.158 | 12.2 | 7.03 | 20.01 | 0.132 | 12.1 | 7.03 | 17.91 | 0.435 | 14 | 38.19 |

| 睡 | 100 | 不適用 | 50 | 0.156 | 12.2 | 7.22 | 20.01 | 0.13 | 12.1 | 7.22 | 17.93 | 0.43 | 14 | 38 |

| 液化石油馬 | 60 | 不適用 | 30 | 0.188 | 20.3 | 4.6 | 13.5 | 0.162 | 20 | 4.6 | 12.61 | 0.472 | 24 | 24.1 |

| Arm 和 RISCV | 始終處于活動狀態(tài) | 100 | 50 | 50 | 0.26 | 36 | 3.52 | 10.64 | 0.30203 | 24.82 | 14.54 | 26.72 | 0.57958 | 24.37 | 38.39 |

| 只有手臂睡眠 | 100 | 50 | 50 | 0.29813 | 24.32 | 5.46 | 17.47 | 0.57823 | 24.87 | 29.3 |

| 都睡 | 100 | 50 | 50 | 0.29899 | 24.82 | 5.48 | 17.53 | 0.57921 | 24.37 | 29.18 |

| 都睡 | 60 | 30 | 30 | 0.53 | 52 | 3.45 | 13.48 | 0.36954 | 41.47 | 3.57 | 12.49 | 0.65009 | 40.72 | 19.52 |

| 液化石油馬 | 60 | 30 | 30 | 0.328 | 36.5 | 3.45 | 12.45 | 0.608 | 36.1 | 20.36 |

| 液化石油氣,快速先進(jìn)先出 | 60 | 30 | 30 | 不適用 | 不適用 | 不適用 | 不適用 | 0.524 | 25.2 | 24.29 |

| 液化石油馬 | 60 | 60 | 60 | 不適用 | 不適用 | 不適用 | 不適用 | 0.254 | 18.2 | 6.02 | 19.19 | 0.533 | 18 | 35.58 |

| 液化石油氣,快速先進(jìn)先出 | 60 | 60 | 60 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 0.471 | 12.6 | 43.57 |

圖5.時鐘頻率對KWS20、Arm in SLEEP和RISC-V的影響驅(qū)動CNN并在空閑時間休眠。

圖5.時鐘頻率對KWS20、Arm in SLEEP和RISC-V的影響驅(qū)動CNN并在空閑時間休眠。

圖6.時鐘頻率對FaceID的影響;手臂處于睡眠狀態(tài);RISC-V驅(qū)動CNN并在空閑時間休眠。

圖6.時鐘頻率對FaceID的影響;手臂處于睡眠狀態(tài);RISC-V驅(qū)動CNN并在空閑時間休眠。

在 CNN 內(nèi)存中保留權(quán)重

四個 CNN 掩碼 RAM(CNN 權(quán)重存儲)中的每一個都可以配置為在 UPM、備份或待機(jī)的情況下保留權(quán)重。另一方面,無論 CNN 掩碼 RAM 保留設(shè)置如何,CNN 配置寄存器在任何這些省電模式下(SLEEP 和 LPM 除外)都會丟失,并且需要重新加載。

對于某些低占空比應(yīng)用,用戶可以選擇關(guān)閉掩碼RAM,以進(jìn)一步降低睡眠期間的功耗。在這種情況下,應(yīng)考慮用于反復(fù)重新加載砝碼的額外功率的影響。表 6 顯示了在 UPM 期間,當(dāng) FaceID 示例保留 CNN 權(quán)重時,功耗從 0.17mW 增加到 0.38mW。在這種情況下,CNN 配置重新加載只需幾分之一毫秒。但是,如果 CNN 掩碼 RAM 關(guān)閉,則權(quán)重和配置的總重新加載時間大于 12 毫秒。用戶可以研究這種權(quán)衡,以優(yōu)化其應(yīng)用程序的計劃和操作模式。以下示例演示如何打開/關(guān)閉體重保留以及如何在喚醒后重新初始化 CNN。

Example: Turn on weight retention 
 MXC_BBFC->reg3 = 0xf; // Reset on
 MXC_BBFC->reg1 = 0x0; // turn off CNN RAM0-3 power
 MXC_BBFC->reg3 = 0x0; // Reset off
Example: Loading weights and configuring CNN with CNN Mask RAMs retention

 // wake up from UPM, BACKUP, or STANDBY – CNN memory was retained
 cnn_init(); // Bring state machine into consistent state
 cnn_load_bias();
 cnn_configure(); // Configure state machine
 …
 // proceed to loading data  
Example: Turn off weight retention prior to sleep (must turn back on after waking up)
 MXC_BBFC->reg3 = 0xf; // Reset on
 MXC_BBFC->reg1 = 0x0; // turn off CNN RAM0-3 power
 MXC_BBFC->reg3 = 0x0; // Reset off
  
 /* get ready to go to sleep */
 MXC_LP_EnterDeepSleepMode(); // Arm enters LPM, waits for wakup

 /* restore power to CNN RAM0-3 after wakeup, or prior to next cnn_load() */
 MXC_BBFC->reg3 = 0xf; // Reset
 MXC_BBFC->reg1 = 0xf; // turn on CNN RAM0-3 power
 MXC_BBFC->reg3 = 0x0; // Reset
Example: Loading weights and configuring CNN without CNN Mask RAMs retention

 // Power up or wake up from UPM, BACKUP or STANDBY, CNN memory not retained
 cnn_init(); // Bring state machine into consistent state
 cnn_load_weights(); // Load kernels
 cnn_load_bias();
 cnn_configure(); // Configure state machine
 …
 // proceed to loading data  

表 6:UPM 模式下的 FaceID 功耗(帶和不帶保留砝碼)| | 芬歐匯川 | 從 UPM 喚醒后加載權(quán)重/CNN 配置 |

| ----------------------------------------------- | ---------- | -------------------------------- |

| 美國有線電視新聞網(wǎng)重量保留 | P(毫瓦) | E(μJ) | T(毫秒) | P(毫瓦) |

| 關(guān)閉 | 0.172 | 242.38 | 12.16 | 19.93 |

| 上 | 0.387 | 1.956 | 0.1089 | 17.95 |

應(yīng)用功率

開發(fā)應(yīng)用時,選擇每個內(nèi)核的工作模式、時鐘頻率和占空比非常重要。通常,在 Arm 上運行的應(yīng)用程序可以以更高的頻率(100MHz 而不是 50MHz APB 時鐘)執(zhí)行,并具有更優(yōu)化的代碼,這可能導(dǎo)致更低的總能耗。如果存在可以同時分配給 Arm 和 RISC-V 內(nèi)核的并行任務(wù),則為每個內(nèi)核使用正確的操作模式非常重要。在 SLEEP 和 LPM 中,內(nèi)核可以獨立運行或休眠。但是,在其他節(jié)能模式(如 UPM 或待機(jī))中,兩個內(nèi)核同時斷電。在這種情況下,Arm 和 RISC-V 可能需要協(xié)調(diào),以便它們都使用多處理器通信進(jìn)入低功耗模式,如 [8] 的第 2.5 節(jié)所述。

對于需要偶爾較短活動時間的應(yīng)用程序,可以選擇 UPM、待機(jī)、備份或關(guān)機(jī)模式。用戶可以評估在睡眠期間在CNN內(nèi)存中維持權(quán)重的能量成本,并與在每個活動窗口之前重新加載權(quán)重的能量進(jìn)行比較。MAX78000評估板上的功率監(jiān)測電路可用于測量一段時間內(nèi)的整體系統(tǒng)功耗[4]。這有助于用戶根據(jù)需要在運行時分析應(yīng)用程序電源。

案例研究 1:在 Arm 和 CNN 上進(jìn)行關(guān)鍵字發(fā)現(xiàn) (KWS20) 演示

本示例應(yīng)用演示了使用MAX20評估板[78000]識別一組9個關(guān)鍵字。應(yīng)用程序讀取 I^2^S麥克風(fēng)以16kHz采樣,并監(jiān)視128個采樣窗口的閾值。一旦超過靜默閾值,應(yīng)用程序就會捕獲一秒鐘的樣本,對樣本運行 CNN 推理,并在 TFT 顯示屏上顯示分類結(jié)果。

在此基準(zhǔn)測試示例中,不使用RISC-V,Arm內(nèi)核處理整個任務(wù)。測試了幾種操作模式。系統(tǒng)電源模式下的功率監(jiān)視器用于以十秒間隔測量總能量,無論是在完全靜音(即無推理或 TFT 更新)時,還是當(dāng)關(guān)鍵字以每秒一個單詞的速度說出時(十個推理和 TFT 更新)。結(jié)果如表7所示。在活動模式下,Arm 內(nèi)核始終運行。無論靜默還是檢測,此模式下的功率約為20mW,因為推理能量只是總功耗的一小部分。通過在收集 I 的空閑時間內(nèi)使用 LPM^2^S采樣以及推理時間,通過在推理后關(guān)閉CNN時鐘(功耗大幅降低),功耗降至8.3mW(靜默期間為6.58mW)。

表 7:應(yīng)用于 KWS20 演示應(yīng)用的功耗優(yōu)化步驟| | 10 秒期間的平均能量(靜音) | 10 秒內(nèi)的平均能量(10 字) |

| - | - | - |

| 系統(tǒng)時鐘 | 美國有線電視新聞網(wǎng)時鐘 | 手臂模式 | E(毫焦耳) | 噸(秒) | P(毫瓦) | E(毫焦耳) | 噸(秒) | P(毫瓦) |

| 首次公開招股
100兆赫 | 50兆赫 | 積極 | 200.9 | 10.002 | 20.09 | 206.2 | 10.045 | 20.53 |

| 推理期間的睡眠 | 200.4 | 10.001 | 20.04 | 204.3 | 10.001 | 20.43 |

| 睡在我之間^2^S 中斷和推理期間 | 155 | 9.63 | 16.1 | 209.3 | 12.01 | 17.4 |

| I 之間的 LPM^2^S 中斷和推理期間 | 146.7 | 9.63 | 15.2 | 211.5 | 12.35 | 17.1 |

| I 之間的 LPM^2^S 中斷和推理期間,CNN 時鐘在完成后關(guān)閉 | 63.5 | 9.62 | 6.58 | 101.9 | 12.18 | 8.3 |

| 同上,TFT 關(guān)閉 | 66.51 | 9.63 | 6.75 | 67.4 | 9.64 | 6.99 |

| -------------------------------------------------------------- |

圖7.KWS20的占空比和平均功率示例在靜音或關(guān)鍵字檢測期間,TFT可以打開或關(guān)閉。

圖7.KWS20的占空比和平均功率示例在靜音或關(guān)鍵字檢測期間,TFT可以打開或關(guān)閉。

圖7分析并演示了表7中最后兩種功耗優(yōu)化工作模式的平均功耗和活動占空比。

案例研究 2-A:Arm 和 CNN 上的 FaceID 演示

該演示應(yīng)用演示了在MAX78000上使用面部識別識別對象。FaceID CNN模型從評估板相機(jī)拍攝的實時圖像中生成尺寸為512的嵌入。計算嵌入與已知主題嵌入的距離,如果大于閾值,則選擇最佳候選者。已知嵌入的數(shù)據(jù)庫是從主題的圖片創(chuàng)建的,并與固件集成。推理在每個圖像的 160x120 面框上執(zhí)行。為了增強(qiáng)識別性能,推理在幀上執(zhí)行三次,每次在圖片上稍微移動面部框時執(zhí)行。

在本案例研究中,RISC-V處于關(guān)閉狀態(tài),整個任務(wù)由Arm驅(qū)動并按順序執(zhí)行。Arm 在推理期間進(jìn)入睡眠模式,并在幀之間進(jìn)入 UPM 或待機(jī)模式約半秒。表 8 總結(jié)了 FaceID 主要功能的執(zhí)行時間和功能。表 9 顯示了每種操作模式下的時間和功耗。

表 8:FaceID 中不同任務(wù)的功耗和執(zhí)行時間(Arm 和 CNN)| 處理一幀 | 平均能源 |

| - | - |

| ------------------------------------------------------------------------------- |

系統(tǒng)時鐘 美國有線電視新聞網(wǎng)時鐘 臂占空比 E(μJ ) T(毫秒) P(毫瓦)
ARM-100兆赫 50兆赫 圖像捕獲 1189.8 171.2 6.95
CNN 內(nèi)核負(fù)載(用于備用或 UPM) 935.3 37.5 24.94
3 x CNN 運行 1164.7 42 27.73
3 x CNN 卸載 1.6 0.15 10.7
3x 距離計算 470.4 48 9.8
在 TFT 上顯示圖像 620.5 49.4 12.56
4382.2 348.25

表 9:FaceID(Arm 和 CNN)中每個操作模式的功率和持續(xù)時間,用于一個幀| 模式 | 積極 | 芬歐匯川 | 睡 | 總 |

| -------------------------------- | ------ | ---------- | ---- | ---- |

| 時間(毫秒) | 227 | 498 | 160 | 885 |

| 功率(毫瓦) | 18.14 | 0.3 | 6.92 | |

| 能量(微焦) | 4118 | 150 | 1112 | 5380 |

| 模式 | 積極 | 待機(jī) | 睡 | 總 |

| 時間(毫秒) | 227 | 497 | 160 | 884 |

| 功率(毫瓦) | 18.14 | 0.03 | 6.92 | |

| 能量(微焦) | 4118 | 15 | 1112 | 5245 |

圖 8:在 Arm 上運行的 FaceID 示例的占空比和平均功率。

圖 8:在 Arm 上運行的 FaceID 示例的占空比和平均功率。

案例研究2-B:Arm,RISC-V和CNN上的FaceID演示

在這種情況下,Arm處理TFT控制和顯示(只能通過MAX78000評估板上的Arm訪問),RISC-V驅(qū)動從相機(jī)捕獲的圖像、CNN加載和推理,以及針對數(shù)據(jù)庫的嵌入距離計算。共享內(nèi)存和郵箱用于協(xié)調(diào) Arm 和 RISC-V 通信。

表 10 總結(jié)了此模式下 FaceID 主要功能期間的執(zhí)行時間和功耗。處理完幀后,Arm 和 RISC-V 會像前一種情況一樣進(jìn)入待機(jī)模式大約半秒鐘。

表 10:FaceID 中不同任務(wù)的功耗和執(zhí)行時間(Arm、RISC-V 和 CNN)| 處理一幀 | 平均能源 |

| ----------------------------------------------------- | ---------- |

| 系統(tǒng)時鐘 | 美國有線電視新聞網(wǎng)時鐘 | RISC-Arm | E(μJ) | T(毫秒) | P(毫瓦) |

| ARM-100MHz RISCV-60MHz | 50兆赫 | 圖像捕獲 | 1392.6 | 169 | 8.24 |

| CNN 內(nèi)核加載 | 818.3 | 35.5 | 23.05 |

| 3 x CNN 運行 | 7910.1 | 327 | 24.19 |

| 3 x CNN 卸載 | 9.5 | 0.9 | 10.5 |

| 3x 距離計算 | 699.6 | 66 | 10.6 |

| 在TFT上顯示圖像(在手臂上與RISC-V處理并行顯示圖像) | | 60 | 12.48 |

| 總 | 10830 | 658.9 | |

表 11:FaceID(ARM、RISC-V 和 CNN)中每個操作模式的功耗和持續(xù)時間,用于一幀| 模式 | 積極 | 待機(jī) | 睡 | 總 |

| ---------------------------- | ------ | ------ | ---- | ---- |

| 時間(毫秒) | 448 | 500 | 169 | 1117 |

| 功率(毫瓦) | 18.14 | 0.05 | 7.89 | |

| 能量(微焦) | 8126.72 | 25 | 1333.41 | 9485.13 |

圖9.在 Arm 和 RISC-V 上運行的 FaceID 示例的占空比和平均功率。

圖9.在 Arm 和 RISC-V 上運行的 FaceID 示例的占空比和平均功率。

圖 10.比較在實現(xiàn)FaceID時使用Arm,或同時使用Arm和RISC-V。

圖 10.比較在實現(xiàn)FaceID時使用Arm,或同時使用Arm和RISC-V。

通過比較圖 10 中 FaceID 的兩種實現(xiàn),很明顯,使用 Arm 處理幀的總能量顯著降低,這主要是由于其速度更高,而不是 RISC-V(100MHz,vs 50MHz),導(dǎo)致活動狀態(tài)的持續(xù)時間更短。

總結(jié)

本應(yīng)用筆記概述了MAX78000支持的功耗優(yōu)化技術(shù),以及與關(guān)鍵字識別和FaceID應(yīng)用配合使用時的結(jié)果。以下摘要重點介紹了一些改善功耗的一般建議:

  • 通常越快越好。通常,使用更高的時鐘速率可以加快執(zhí)行速度,并減少恒定靜態(tài)功耗的影響,從而改善整體功耗。
  • 如果沒有太多并行任務(wù)要執(zhí)行,則首選單核。在RISC-V上運行任務(wù)由于其時鐘速率而較慢,并且與Arm相比,往往會導(dǎo)致能源使用量增加。
  • 在沒有活動時利用 UPM、備份和備用。當(dāng) Arm 在某些外圍設(shè)備運行時可以休眠時,請考慮使用 LPM。
  • 加載內(nèi)核(權(quán)重)一次并保留在內(nèi)存中,以避免在 UPM、備份和待機(jī)模式下重新加載能量。但是,如果活動占空比非常低,請考慮禁用砝碼保持或使用 POWERDOWN 模式并在每個周期中重新加載砝碼。
  • 確保在 CNN 處理完成后關(guān)閉 CNN 時鐘,并在下一個活動期間再次訪問 CNN 之前將其打開。
  • 當(dāng) CNN 正在運行并且 Arm 正在等待推理完成時,請使用 LPM。要喚醒,請使用RISC-V或喚醒定時器。CNN 中斷無法在 LPM 中直接喚醒 Arm。
  • 使用快速FIFO或四快速FIFO(僅在RISC-V驅(qū)動CNN時才支持)顯著改善了輸入加載時間和推理能量(--fast-fifo,--fast-fifo-quad)[8]。
  • 審核編輯:郭婷
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7946

    瀏覽量

    154800
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    354

    瀏覽量

    22729
  • RISC-V
    +關(guān)注

    關(guān)注

    46

    文章

    2549

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Maxim將AI推向邊緣 MAX78000功耗神經(jīng)網(wǎng)絡(luò)加速微控制器

    特性,那就意味著即使將其應(yīng)用在電池供電的物聯(lián)網(wǎng)(IoT)設(shè)備里,芯片性能并未受到影響。 如上圖所示,新芯片MAX78000包括兩個超低功耗內(nèi)核Arm Cortex-M4內(nèi)核和RISC-V內(nèi)核一個基于FPU的微控制器和一個卷積神
    發(fā)表于 10-10 10:27 ?1498次閱讀

    MAX78000將能耗和延遲降低100倍,從而在IoT邊緣實現(xiàn)復(fù)雜的嵌入式?jīng)Q策

    通過集成專用的神經(jīng)網(wǎng)絡(luò)加速器,MAX78000克服了這些局限性,憑借本地以低功耗實時執(zhí)行AI處理,使機(jī)器能夠看到和聽到復(fù)雜的型態(tài)。由于MAX78000執(zhí)行推理的
    的頭像 發(fā)表于 11-04 09:54 ?2116次閱讀

    Maxim Integrated新型神經(jīng)網(wǎng)絡(luò)加速器MAX78000 SoC貿(mào)澤開售

    MAX78000處理器提供高效的電源管理,最大限度地延長電池供電的物聯(lián)網(wǎng) (IoT) 設(shè)備的續(xù)航時間。
    的頭像 發(fā)表于 12-09 16:53 ?3006次閱讀

    美信半導(dǎo)體新型神經(jīng)網(wǎng)絡(luò)加速器MAX78000 SoC

    ? ? 新型神經(jīng)網(wǎng)絡(luò)加速器 Maxim Integrated的新型MAX78000芯片,基于雙核MCU,結(jié)合了超低功耗深度神經(jīng)網(wǎng)絡(luò)加速器,為高性能人工智能 (AI) 應(yīng)用提供所需的算力,是機(jī)器視覺
    的頭像 發(fā)表于 01-04 11:48 ?3575次閱讀

    MAX78000 開發(fā)功耗優(yōu)化應(yīng)用

    發(fā)表于 11-16 21:01 ?0次下載
    <b class='flag-5'>在</b> <b class='flag-5'>MAX78000</b> <b class='flag-5'>上</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>功耗</b><b class='flag-5'>優(yōu)化</b>應(yīng)用

    使用MAX78000進(jìn)行人臉識別

    本應(yīng)用筆記演示了MAX78000中實現(xiàn)人臉識別模型,以及如何在超低功耗MAX78000平臺上部署,用于資源受限的邊緣或物聯(lián)網(wǎng)應(yīng)用。該應(yīng)用遵循基于知識蒸餾的模型
    的頭像 發(fā)表于 12-16 16:12 ?2172次閱讀
    使用<b class='flag-5'>MAX78000</b>進(jìn)行人臉識別

    MAX78000開發(fā)功耗優(yōu)化應(yīng)用

    ,使用戶能夠MAX78000開發(fā)功耗優(yōu)化應(yīng)用,并提供基準(zhǔn)測試示例。
    的頭像 發(fā)表于 02-17 11:20 ?1187次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>MAX78000</b><b class='flag-5'>上</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>功耗</b><b class='flag-5'>優(yōu)化</b>應(yīng)用

    MAX78002開發(fā)功耗優(yōu)化應(yīng)用

    功耗是邊緣人工智能 (AI) 應(yīng)用的關(guān)鍵因素,其中整個系統(tǒng)由小型電池供電,預(yù)計無需充電或更換電池即可運行數(shù)月。MAX78002超低功耗AI微控制器專為物聯(lián)網(wǎng)邊緣的此類應(yīng)用而設(shè)計。本文介紹了各種選項,使用戶能夠
    的頭像 發(fā)表于 02-17 11:31 ?1744次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>MAX</b>78002<b class='flag-5'>上</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>功耗</b><b class='flag-5'>優(yōu)化</b>應(yīng)用

    用于MAX78000模型訓(xùn)練的數(shù)據(jù)加載器設(shè)計

    應(yīng)用程序開發(fā)周期中,第一步是準(zhǔn)備和預(yù)處理可用數(shù)據(jù)以創(chuàng)建訓(xùn)練和驗證/測試數(shù)據(jù)集。除了通常的數(shù)據(jù)預(yù)處理外,MAX78000運行模型還需要考
    的頭像 發(fā)表于 02-21 12:11 ?1795次閱讀

    厲害了,這3個項目獲得了MAX78000設(shè)計大賽一等獎!

    AX78000FTHR開發(fā)板。 AI微控制器 MAX78000 MAX78000是一款先進(jìn)的片系統(tǒng),集成帶FPU CPU的Arm ? C
    的頭像 發(fā)表于 03-10 19:45 ?1244次閱讀

    MAX78000人工智能設(shè)計大賽第二季回歸!賽題廣任意玩,獎勵足直接沖!

    MAX78000設(shè)計大賽(第2季) MAX78000設(shè)計大賽(第2季)于9月1日正式上線,完成項目不止全額返還,還有千元現(xiàn)金大獎等你來領(lǐng),摩拳擦掌的伙伴們沖沖沖?。。∪f分期待朋友們的精彩項目! 大賽
    的頭像 發(fā)表于 09-13 18:40 ?847次閱讀
    <b class='flag-5'>MAX78000</b>人工智能設(shè)計大賽第二季回歸!賽題廣任意玩,獎勵足直接沖!

    MAX78000: Artificial Intelligence Microcontroller with Ultra-Low-Power Convolutional Neural Network Accelerator Data Sheet MAX78000: Artific

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)MAX78000: Artificial Intelligence Microcontroller with Ultra-Low-Power
    發(fā)表于 10-17 18:53
    <b class='flag-5'>MAX78000</b>: Artificial Intelligence Microcontroller with Ultra-Low-Power Convolutional Neural Network Accelerator Data Sheet <b class='flag-5'>MAX78000</b>: Artific

    MAX78000進(jìn)串口通信的驗證和調(diào)試

    該資源提供了一個完整的工程,可在MAX78000開發(fā)板上進(jìn)行UART2阻塞式發(fā)送字符串的測試。以下是相關(guān)的引腳配置信息:UART2引腳配置:UART2的發(fā)送引腳為P1.1?(TXD2)。UART2
    發(fā)表于 02-18 09:43 ?0次下載

    ADI 新型AI微控制器 # MAX78000 數(shù)據(jù)手冊和芯片介紹

    MAX78000是一款新型的AI微控制器,使神經(jīng)網(wǎng)絡(luò)能夠互聯(lián)網(wǎng)邊緣端以超低功耗運行,將高能效的AI處理與經(jīng)過驗證的ADI/Maxim超低功耗微控制器相結(jié)合。通過這款基于硬件的卷積神經(jīng)
    的頭像 發(fā)表于 02-08 16:50 ?920次閱讀
    ADI 新型AI微控制器 # <b class='flag-5'>MAX78000</b> 數(shù)據(jù)手冊和芯片介紹

    MAX78000采用超低功耗卷積神經(jīng)網(wǎng)絡(luò)加速度計的人工智能微控制器技術(shù)手冊

    人工智能(AI)需要超強(qiáng)的計算能力,而Maxim則大大降低了AI計算所需的功耗。MAX78000是一款新型的AI微控制器,使神經(jīng)網(wǎng)絡(luò)能夠互聯(lián)網(wǎng)邊緣端以超低功耗運行,將高能效的AI處理
    的頭像 發(fā)表于 05-08 11:42 ?277次閱讀
    <b class='flag-5'>MAX78000</b>采用超低<b class='flag-5'>功耗</b>卷積神經(jīng)網(wǎng)絡(luò)加速度計的人工智能微控制器技術(shù)手冊