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

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

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

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

數(shù)獨、寄存器和相信的力量

Arm社區(qū) ? 來源:Arm ? 2023-12-29 16:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當(dāng)人工智能 (AI) 下沉到各式各樣的應(yīng)用當(dāng)中,作為市場上最大量的物聯(lián)網(wǎng)設(shè)備也將被賦予智能性。ArmHelium 技術(shù)正是為基于Arm Cortex-M 處理器的設(shè)備帶來關(guān)鍵機器學(xué)習(xí)數(shù)字信號處理的性能提升。

在上周的 Helium 技術(shù)講堂中,大家了解了 Helium 技術(shù)的核心“節(jié)拍式”執(zhí)行。今天,我們將共同探討一些復(fù)雜而又有趣的交錯加載/存儲指令。若您想要了解如何高效利用 Helium,千萬別錯過文末視頻,通過 Arm 技術(shù)專家的實例演示,詳解 Helium 如何為端點設(shè)備引入更多智能。

Arm Helium 技術(shù)誕生的由來

數(shù)獨、寄存器和相信的力量

DSP 處理中一個重要部分就是對不同的數(shù)據(jù)格式進行高效處理,這些數(shù)據(jù)格式通常需要轉(zhuǎn)換成不同的排列方式進行計算。圖像數(shù)據(jù)就是一個很好的例子,它通常以紅、綠、藍(lán)和 alpha 像素值交錯流的形式被存儲。但是,為了將計算矢量化,就需要將所有紅色像素放在一個矢量中,綠色像素放在另一個矢量中,以此類推。在 Neon 架構(gòu)中,VLD4/VST4 指令可以執(zhí)行這種轉(zhuǎn)換,如下圖所示。

9b2eabce-a625-11ee-8b88-92fbcf53809c.png

VST4 將四個 128 位寄存器交錯排列,共存儲 512 位數(shù)據(jù)。Neon 架構(gòu)有多種交織/去交織運算,可支持不同的格式。例如,提供的 VST2 可用于交織立體聲音頻的左右聲道。這些指令還支持從 8 到 32 位不等的元素大小。

MVE 的“節(jié)拍式”執(zhí)行的主要優(yōu)點之一,是它允許內(nèi)存和 ALU 運算重疊,即使在單發(fā)射處理器上也是如此。如下圖所示,基于此技術(shù)要實現(xiàn)性能的翻倍,所有指令必須執(zhí)行相同的工作量。

9b4499f2-a625-11ee-8b88-92fbcf53809c.png

顯而易見,重疊帶來的性能提升會因 VST4 這樣的寬存儲指令而大打折扣。MVE 提供的解決方案是將存儲空間分割成與 ALU 運算相平衡的塊,每個塊存儲 128 位數(shù)據(jù)。MVE 允許由 VST40、VST41、VST42 和 VST43 這四條指令構(gòu)成四路交織。但到此并未結(jié)束,仍有不少問題存在:

顯而易見的拆分方法是讓四條指令分別存儲不同的數(shù)據(jù)流(例如 VST40 存儲所有紅色像素,VST41 存儲綠色像素等)。對于 8 位像素數(shù)據(jù),這意味著每條指令將存儲 16 個非連續(xù)字節(jié)。這種訪問模式對內(nèi)存子系統(tǒng)來說非常復(fù)雜,會導(dǎo)致大量停滯。相反,指令需要生成大塊連續(xù)請求。

要正確配合其他矢量指令,必須將寄存器文件端口設(shè)置為訪問寄存器文件的行(即整個矢量寄存器),而不是列(即四個寄存器的第一個字節(jié)),如果要將數(shù)據(jù)交織存儲到連續(xù)內(nèi)存塊中,則需要訪問列。

為了避免我在上一篇內(nèi)容中描述的時間跨越問題,我們需要將指令分成幾個“節(jié)拍”,先讀取寄存器的 [63:0] 位,然后在下一個周期讀取 [127:64] 位。

解決方案必須同時適用于兩路交織和四路交織,以及 8、16 和 32 位數(shù)據(jù)運算。

面對所有這些相互矛盾的限制,我們就像掉進了兔子洞,我不禁想起了《愛麗絲夢游仙境》中的情節(jié):

愛麗絲:這是不可能的。

瘋帽匠:只要你相信,一切皆有可能。

所以,讓我們暫且放下懷疑的態(tài)度,仔細(xì)研究一下讀取端口,看看會發(fā)生什么。

9b78b228-a625-11ee-8b88-92fbcf53809c.png

MVE 重復(fù)使用浮點寄存器文件,因此矢量寄存器(Q0 至 Q7)由每四個一組的若干組 “S” 寄存器組成。每個列多路復(fù)用器選擇相同的行,然后將數(shù)據(jù)合并以訪問整個 Q 寄存器(見上圖)。但是,如果不能從一列中的任何寄存器中選擇,而是將端口扭曲,從交替列中的寄存器中選擇,如下圖所示,會如何呢:

9b8268a4-a625-11ee-8b88-92fbcf53809c.png

如果 8:1 多路復(fù)用器上的控制輸入設(shè)置為相同值,則可讀取一行數(shù)據(jù)(例如 S0 和 S1)。但是,如果使用不同的值,則可以讀取一列中的一對值(如 S0 和 S4)?,F(xiàn)在看起來似乎可行,我們能夠從列和行中讀取數(shù)據(jù)。如果我們把圖的下面放大,并將寄存器編號替換為它們所連接的多路復(fù)用器的編號,就會得到下圖結(jié)果:

9b97d766-a625-11ee-8b88-92fbcf53809c.png

這類似于一道簡單的數(shù)獨謎題,在重復(fù)矩陣的每一行和每一列中,每個數(shù)字只會出現(xiàn)一次,只不過這個矩陣是 2 x 2 的,而不是平常的 9 x 9。由于只能從一列中讀取兩個值,并且只能處理 32 位值(多路復(fù)用器的寬度),因此這種模式只能提供兩路交織的解決方案。由于我們需要一種可處理所有交錯模式和數(shù)據(jù)寬度組合的模式,因此可想象將所有組合垂直堆疊起來,得到一個多分辨率的三維數(shù)獨謎題。解決一層謎題輕而易舉,但解決整個三維謎題的過程一定令人嘆為觀止。此外,我們還需要考慮上文提到的其他限制因素,如連續(xù)內(nèi)存訪問,以及在不同周期內(nèi)拆分對寄存器上下 64 位的訪問。

經(jīng)過一番思索,我意識到可以將問題一分為二:一是確定一種可在單個統(tǒng)一的問題空間中表示全部約束的方法,二是解決這些約束的單調(diào)任務(wù)。由于該模式類似于一個非常復(fù)雜的數(shù)獨問題,而許多數(shù)獨程序都是基于 SAT 解算器的,因此我產(chǎn)生了使用 SAT 解算器來完成單調(diào)約束求解任務(wù)的想法。經(jīng)過努力,我想出了一種能表示所有約束的方法,一番調(diào)試后,第一個可行的解決方案誕生了。雖然它不完善,而且會導(dǎo)致多路復(fù)用器的控制邏輯難以實施,但至少勝利在望了。由于不想對解決方案進行手動清理,我們添加了一些額外的約束條件,引入了一些對稱性,并產(chǎn)出了最終的解決方案,它竟然是一對雙嵌套四重螺旋結(jié)構(gòu):

9babc2e4-a625-11ee-8b88-92fbcf53809c.png

為了讓大家看到嵌套的螺旋線,我在下圖中標(biāo)注了單個多路復(fù)用器的路徑。如圖所示,路徑每行交替通過 32 位 “S” 寄存器(如左圖所示),每兩行交換通過 “S” 寄存器上下兩半 16 位區(qū)域(如右圖所示)。

9bc37560-a625-11ee-8b88-92fbcf53809c.png

直覺告訴我,這種扭曲的方法對于三路交織來說是行不通的,經(jīng)證實我是對的,SAT 解算器正式證明無解。

這種扭曲方法意味著可以同時訪問寄存器文件行和列中的數(shù)據(jù)。但問題在于,讀取端口返回的字節(jié)可能順序有誤,而順序取決于訪問的寄存器。要糾正此情況,就需要使用一個交叉多路復(fù)用器,將一切交換回正確的位置。由于如 VREV 等其他指令和復(fù)數(shù)原生操作指令會用到交叉多路復(fù)用器,所以我們正好能免費使用它。這正印證了那句話:“如果你必須使用一個硬件,請物盡其用。”

下圖顯示了由讀取端口扭曲模式衍生出的一些指令訪問模式。第一種情況 (VST2n.S32) 顯示從矢量寄存器 Q0 和 Q1 讀取 32 位 (S32),并將其兩路交織(如左右音頻通道)。圖中顏色代表兩條指令分別讀取的寄存器部分(即 VST20 讀取橙色部分),元素中的文字表示內(nèi)存中存儲的字節(jié)偏移。

9bd50596-a625-11ee-8b88-92fbcf53809c.png

可以發(fā)現(xiàn),上述 S8 和 S16 模式都將相同的數(shù)據(jù)放在寄存器的相同顏色區(qū)域內(nèi);唯一不同的是每節(jié)中字節(jié)的排列方式。這意味著,只需在交叉多路復(fù)用器中使用不同的配置,16 位模式也能支持 8 位。這些模式也適用于加載指令所使用的寫入端口。除了可以建立寄存器文件端口外,這些模式還意味著內(nèi)存訪問始終是一對 64 位的連續(xù)塊,這樣可以提高內(nèi)存訪問的效率。另外,這些數(shù)據(jù)塊地址的第 [3] 位總是不同的,因此可以在擁有兩組交織 64 位內(nèi)存的系統(tǒng)上并行發(fā)送。

研究團隊從這些指令中積累了兩條重要的經(jīng)驗。首先,要想在 gate 數(shù)量和效率方面取得突破式進展,就必須在設(shè)計架構(gòu)的同時對微架構(gòu)的細(xì)節(jié)同步思考設(shè)計。其次,要保持信念,相信一切皆有可能。

您是否想要更深入了解 Helium 技術(shù)?由 Arm 物聯(lián)網(wǎng)事業(yè)部技術(shù)管理總監(jiān) Mark Quartermain 與 Arm 物聯(lián)網(wǎng)事業(yè)部嵌入式工具集成高級經(jīng)理 Matthias Hertel 共同為大家錄制了 Helium 技術(shù)視頻,通過實例演示詳解如何高效利用 Helium。

我們將在下一篇 Helium 文章中繼續(xù)探討以內(nèi)存訪問為主題的相關(guān)內(nèi)容,并介紹一些實現(xiàn)循環(huán)緩沖的技術(shù)知識。持續(xù)關(guān)注 Helium 技術(shù)講堂,我們下期再見!

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

    關(guān)注

    135

    文章

    9561

    瀏覽量

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

    關(guān)注

    31

    文章

    5609

    瀏覽量

    130041
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8556

    瀏覽量

    137002

原文標(biāo)題:Helium 技術(shù)講堂 | 數(shù)獨、寄存器和相信的力量

文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    從“能用”到“懂原理”:ARMv8寄存器架構(gòu)深度拆解

    做嵌入式或芯片開發(fā)的同學(xué),大概率都有過這樣的困惑: 寫匯編時知道X0-X30是通用寄存器,調(diào)用函數(shù)時按規(guī)矩用X0-X7傳參,但為什么是這8個?剩下的寄存器又該怎么劃分職責(zé)?調(diào)試異常時,盯著SPSR
    的頭像 發(fā)表于 01-10 07:10 ?151次閱讀
    從“能用”到“懂原理”:ARMv8<b class='flag-5'>寄存器</b>架構(gòu)深度拆解

    LAT1170+如何理解 RAMECC FAR 寄存器的值

    電子發(fā)燒友網(wǎng)站提供《LAT1170+如何理解 RAMECC FAR 寄存器的值.pdf》資料免費下載
    發(fā)表于 01-09 16:12 ?0次下載

    【NCS隨筆】nRF54L15使用UICR寄存器保存數(shù)據(jù)

    nRF54L15使用UICR寄存器保存數(shù)據(jù) 本文章主要是講解如何使用nRF54L15的UICR寄存器保存一些基礎(chǔ)數(shù)據(jù) 一、UICR寄存器的說明 UICR(用戶信息配置寄存器)**是非易
    的頭像 發(fā)表于 11-27 17:09 ?1528次閱讀

    嵌入式系統(tǒng)必懂的 20 個寄存器

    嵌入式開發(fā)看起來很復(fù)雜,但很多操作其實都離不開寄存器。寄存器就是MCU內(nèi)部的存儲單元,它們控制著處理和外設(shè)的行為。熟悉這些寄存器,你就能更精確地操作硬件,提高開發(fā)效率,減少調(diào)試時間。
    的頭像 發(fā)表于 11-14 10:28 ?1132次閱讀
    嵌入式系統(tǒng)必懂的 20 個<b class='flag-5'>寄存器</b>

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計32:寄存器功能驗證與分析2

    寄存器最大值為 64’hFFFFFFFFFFFFFFFF,到達最大值后一個時鐘周期后翻轉(zhuǎn)回 0, 在隨機時刻使用 force 將寄存器賦值臨近最大值, 當(dāng)寄存器達到最大值后, 翻轉(zhuǎn)回到 0, 讀取數(shù)值為 0, 仿真行為符合設(shè)計預(yù)
    的頭像 發(fā)表于 10-14 17:06 ?747次閱讀
    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計32:<b class='flag-5'>寄存器</b>功能驗證與分析2

    ?SN74LVC595A 8位移位寄存器技術(shù)文檔總結(jié)

    SN74LVC595A器件包含一個8位串行輸入、并聯(lián)輸出移位寄存器,該寄存器為8位D型存儲寄存器供電。存儲寄存器具有并行的 3 態(tài)輸出。為移位寄存器
    的頭像 發(fā)表于 09-28 15:09 ?1418次閱讀
    ?SN74LVC595A 8位移位<b class='flag-5'>寄存器</b>技術(shù)文檔總結(jié)

    ?SN74HCT595 8位移位寄存器技術(shù)解析與應(yīng)用指南

    Texas Instruments SN74HCT595/SN74HCT595-Q1 8位移位寄存器包含8位串進并出移位寄存器,向8位D類存儲寄存器饋送信號。存儲寄存器具有并行 3 狀
    的頭像 發(fā)表于 09-19 14:31 ?986次閱讀
    ?SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技術(shù)解析與應(yīng)用指南

    TPIC6595 8位功率移位寄存器技術(shù)文檔摘要

    該TPIC6595是一款單片、高壓、大電流功率的8位移位寄存器,設(shè)計用于需要相對較高負(fù)載功率的系統(tǒng)。該器件在輸出端包含一個內(nèi)置電壓鉗位,用于電感瞬態(tài)保護。功率驅(qū)動應(yīng)用包括繼電器、螺線管和其他中電流
    的頭像 發(fā)表于 09-09 11:10 ?934次閱讀
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技術(shù)文檔摘要

    ?TPIC6B595 8位功率移位寄存器技術(shù)文檔總結(jié)

    TPIC6B595器件是一款單片、高壓、中電流功率8位移位寄存器,設(shè)計用于需要相對高負(fù)載功率的系統(tǒng)。該器件在輸出端包含一個內(nèi)置電壓鉗位,用于電感瞬態(tài)保護。功率驅(qū)動應(yīng)用包括繼電器、螺線管和其他中電流
    的頭像 發(fā)表于 09-09 10:16 ?1026次閱讀
    ?TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技術(shù)文檔總結(jié)

    SN74LV594A:2-5.5V帶輸出寄存器的8位移位寄存器技術(shù)解析

    Texas Instruments SN74LV594A/SN74LV594A-Q1 8位并行輸出串行移位寄存器設(shè)計采用2V至5.5V V~CC~ 運行。SN74LV594A-Q1符合汽車應(yīng)用類
    的頭像 發(fā)表于 09-02 09:42 ?941次閱讀
    SN74LV594A:2-5.5V帶輸出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>技術(shù)解析

    ?TLC6C5912 12通道移位寄存器LED驅(qū)動技術(shù)文檔總結(jié)

    該TLC6C5912是一款單片、中壓、低電流功率 12 位移位寄存器 設(shè)計用于需要相對中等負(fù)載功率的系統(tǒng),例如 LED。 該器件包含一個 12 位串行輸入并行輸出移位寄存器,可為 12 位饋電
    的頭像 發(fā)表于 08-26 14:16 ?1014次閱讀
    ?TLC6C5912 12通道移位<b class='flag-5'>寄存器</b>LED驅(qū)動<b class='flag-5'>器</b>技術(shù)文檔總結(jié)

    SN74LV595B-EP低噪聲8位移位寄存器技術(shù)解析與應(yīng)用指南

    Texas Instruments SN74LV595B-EP低噪聲8位移位寄存器包含一個8位串行輸入、并行輸出移位寄存器,可為8位D類存儲寄存器饋送信號。存儲寄存器具有并行 3 狀態(tài)
    的頭像 發(fā)表于 08-15 09:28 ?1245次閱讀
    SN74LV595B-EP低噪聲8位移位<b class='flag-5'>寄存器</b>技術(shù)解析與應(yīng)用指南

    使用寄存器點亮LED燈

    學(xué)習(xí)本章時,配合以上芯片手冊中的“19. I/O Ports”章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。本章內(nèi)容涉及到較多寄存器方面的深入內(nèi)容,對于初學(xué)者而言這些內(nèi)容豐富也較難理解,但非常有必要細(xì)讀研究、夯實基礎(chǔ)。
    的頭像 發(fā)表于 05-28 17:37 ?1327次閱讀
    使用<b class='flag-5'>寄存器</b>點亮LED燈

    第四章 什么是寄存器

    本篇文章我們講解了寄存器的概念、地址映射和寄存器操作等內(nèi)容,內(nèi)容比較干,大家有個概念即可,不要求全部熟記掌握,有需要時可重復(fù)查閱觀看。下一篇我們將開始進行實操內(nèi)容,通過控制單片機的GPIO來點亮一顆LED,敬請期待!
    的頭像 發(fā)表于 05-21 14:23 ?1492次閱讀
    第四章 什么是<b class='flag-5'>寄存器</b>

    如何用C語言操作寄存器——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(10)

    由于寄存器的數(shù)量是非常之多的,如果每個寄存器都用像*((uint32_t*)(0x40080000+0x0020*1))這樣的方式去訪問的話,會顯得很繁瑣、很麻煩。為了更方便地訪問寄存器,我們會借助C語言結(jié)構(gòu)體的特性去定義
    的頭像 發(fā)表于 04-22 15:30 ?1997次閱讀
    如何用C語言操作<b class='flag-5'>寄存器</b>——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(10)