衡阳派盒市场营销有限公司

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

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

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

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

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)鍵機(jī)器學(xué)習(xí)數(shù)字信號(hào)處理的性能提升。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

愛麗絲:這是不可能的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    134

    文章

    9169

    瀏覽量

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

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121198
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8441

    瀏覽量

    133093

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    接口的控制與狀態(tài)寄存器什么作用

    接口的控制與狀態(tài)寄存器(Control and Status Registers,簡稱CSR)是計(jì)算機(jī)系統(tǒng)中用于控制和監(jiān)控硬件設(shè)備操作的寄存器。它們是硬件設(shè)備與其驅(qū)動(dòng)程序之間的橋梁,允許軟件控制硬件
    的頭像 發(fā)表于 10-17 10:42 ?607次閱讀

    寄存器間接尋址和寄存器尋址的區(qū)別

    寄存器間接尋址和寄存器尋址是計(jì)算機(jī)體系結(jié)構(gòu)中兩種重要的尋址方式,它們在指令執(zhí)行過程中起著關(guān)鍵作用。下面將從定義、原理、特點(diǎn)、應(yīng)用場景以及區(qū)別等方面對(duì)這兩種尋址方式進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 10-05 17:13 ?2114次閱讀

    通用寄存器是什么意思

    在計(jì)算機(jī)體系結(jié)構(gòu)中,通用寄存器是中央處理(CPU)內(nèi)部最為核心和基礎(chǔ)的組成部分之一。它們被設(shè)計(jì)為能夠存儲(chǔ)和傳輸各種類型的數(shù)據(jù)和指令,是CPU進(jìn)行數(shù)據(jù)處理和運(yùn)算的關(guān)鍵工具。通用寄存器不僅在程序的執(zhí)行過程中起著至關(guān)重要的作用,還直
    的頭像 發(fā)表于 09-05 14:13 ?1224次閱讀

    寄存器的類型和作用

    在計(jì)算機(jī)科學(xué)中,寄存器(Register)是一種高速存儲(chǔ)單元,它位于CPU內(nèi)部,與CPU的運(yùn)算單元和邏輯控制單元緊密相連。寄存器的主要作用是暫時(shí)存儲(chǔ)指令、操作數(shù)和地址等臨時(shí)數(shù)據(jù),以便CPU快速訪問和處理。由于寄存器直接集成在CP
    的頭像 發(fā)表于 09-05 14:11 ?2594次閱讀

    寄存器故障分析

    寄存器故障分析是計(jì)算機(jī)硬件維護(hù)與系統(tǒng)穩(wěn)定性保障中的重要環(huán)節(jié)。寄存器作為計(jì)算機(jī)中的關(guān)鍵組成部分,負(fù)責(zé)存儲(chǔ)和傳輸數(shù)據(jù),其穩(wěn)定性和可靠性直接影響到整個(gè)計(jì)算機(jī)系統(tǒng)的性能。以下是對(duì)寄存器故障的全面分析,包括故障類型、故障現(xiàn)象、故障原因及診
    的頭像 發(fā)表于 08-29 11:26 ?1278次閱讀

    寄存器是什么意思?寄存器是如何構(gòu)成的?

    在計(jì)算機(jī)科學(xué)中,寄存器(Register)是一個(gè)高速存儲(chǔ)單元,它位于中央處理(CPU)內(nèi)部,用于存儲(chǔ)計(jì)算機(jī)程序執(zhí)行過程中所需要的數(shù)據(jù)、指令地址或狀態(tài)信息。寄存器是計(jì)算機(jī)體系結(jié)構(gòu)中至關(guān)重要的組成部分,對(duì)計(jì)算機(jī)的運(yùn)算速度和性能有著
    的頭像 發(fā)表于 08-02 18:23 ?4866次閱讀
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何構(gòu)成的?

    寄存器尋址和直接尋址的區(qū)別

    寄存器尋址和直接尋址是計(jì)算機(jī)指令系統(tǒng)中的兩種基本尋址方式。它們在指令的執(zhí)行過程中起著至關(guān)重要的作用,決定了指令操作數(shù)的來源和目標(biāo)。下面我們將介紹這兩種尋址方式的特點(diǎn)、區(qū)別以及在實(shí)際應(yīng)用中的優(yōu)缺點(diǎn)
    的頭像 發(fā)表于 07-12 10:42 ?2412次閱讀

    寄存器尋址的實(shí)現(xiàn)方式

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器寄存器尋址可以提高程序的執(zhí)行效率,因?yàn)樗苊饬藢?duì)內(nèi)存的訪問。 寄存器尋址的基本概念
    的頭像 發(fā)表于 07-12 10:36 ?838次閱讀

    寄存器有哪幾種?可以實(shí)現(xiàn)什么功能?

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)和指令的高速存儲(chǔ)設(shè)備,是計(jì)算機(jī)硬件的重要組成部分。寄存器的種類很多,不同的寄存器具有不同的功能。 通用寄存器(General-Purpose Registe
    的頭像 發(fā)表于 07-12 10:32 ?1397次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?1624次閱讀

    移位寄存器右移是怎么移位的

    移位寄存器是一種在數(shù)字電路和計(jì)算機(jī)科學(xué)中廣泛使用的存儲(chǔ)設(shè)備,它可以用來存儲(chǔ)和傳輸數(shù)據(jù)。在移位寄存器中,數(shù)據(jù)可以通過移位操作來實(shí)現(xiàn)數(shù)據(jù)的傳輸和處理。移位寄存器的移位操作有兩種基本形式:左移和右移。本文
    的頭像 發(fā)表于 07-12 10:14 ?1759次閱讀

    寄存器和內(nèi)存的區(qū)別

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器和內(nèi)存是兩個(gè)至關(guān)重要的組成部分。它們各自承擔(dān)著不同的角色,共同確保計(jì)算機(jī)系統(tǒng)的正常運(yùn)行。本文將對(duì)寄存器和內(nèi)存進(jìn)行詳細(xì)的介紹,包括它們的定義、功能以及二者之間的主要區(qū)別。
    的頭像 發(fā)表于 05-12 17:11 ?2585次閱讀

    干貨滿滿:ARM的內(nèi)核寄存器講解

    內(nèi)核寄存器與外設(shè)寄存器: 內(nèi)核寄存器與外設(shè)寄存器是完全不同的概念。內(nèi)核寄存器是指 CPU 內(nèi)部的寄存器
    發(fā)表于 04-17 11:47 ?4290次閱讀
    干貨滿滿:ARM的內(nèi)核<b class='flag-5'>寄存器</b>講解

    如何根據(jù)自己設(shè)計(jì)中的寄存器配置總線定義來生成一套寄存器配置模版

    無論是FPGA還是ASIC,系統(tǒng)設(shè)計(jì)中總會(huì)存在配置寄存器總線的使用,我們會(huì)將各種功能、調(diào)試寄存器掛載在寄存器總線上使用。
    的頭像 發(fā)表于 03-04 13:56 ?1252次閱讀
    如何根據(jù)自己設(shè)計(jì)中的<b class='flag-5'>寄存器</b>配置總線定義來生成一套<b class='flag-5'>寄存器</b>配置模版

    寄存器屬于時(shí)序邏輯電路嗎 寄存器是什么邏輯電路

    寄存器是一種用來存儲(chǔ)數(shù)據(jù)的數(shù)字電路組件。它可以存儲(chǔ)一個(gè)或多個(gè)位的二進(jìn)制數(shù),并且能夠在時(shí)鐘信號(hào)的控制下將數(shù)據(jù)從輸入端復(fù)制到輸出端。寄存器通常用于存儲(chǔ)和操作計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù),是計(jì)算機(jī)的基本組
    的頭像 發(fā)表于 02-18 09:37 ?1763次閱讀
    尊龙备用网站| 加多宝百家乐的玩法技巧和规则 | 正规百家乐平注法口诀| 百家乐保单机作弊| 戒掉百家乐的玩法技巧和规则| 百家乐赌场娱乐城| 罗浮宫百家乐的玩法技巧和规则| 澳门百家乐赌场| 合肥太阳城莱迪广场| 大发888娱乐场下载zhidu| ,瑞丰国际娱乐场| 百家乐官网心得分享| 百家乐官网去哪里玩最好| 百家乐官网号解码器| 三公百家乐官网在线哪里可以| 做生意进门风水| 真人百家乐软件云南景| 全讯网图库| 菲律宾新利国际| 百家乐官网四式正反路| 百家乐官网凯时娱乐平台| 百家乐官网手论坛48491| 百家乐注册下注平台| 恒利百家乐的玩法技巧和规则| 大发888娱乐场下载sampling id112| 优博网址| 太阳城百家乐官网分析解码| 芝加哥百家乐官网的玩法技巧和规则| 百家乐事电影| 威尼斯人娱乐城信誉好不好| 赌博堕天录漫画| 网络百家乐官网真假| 百家乐波音平台路单| 威尼斯人娱乐网代理| 皇冠现金投注网| 在线百家乐官网合作| 新濠峰百家乐官网的玩法技巧和规则| 云鼎百家乐官网代理| 百家乐平台出租家乐平台出租| 保单百家乐官网游戏机| 百家乐官网赌场视频|