女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何克服Amdahl定律的影響呢?

Arm社區 ? 來源:Arm社區 ? 2024-01-12 14:30 ? 次閱讀

Arm Helium 技術誕生的由來

克服 Amdahl 定律的影響

在前幾篇文章中,我們介紹了采用 Arm Helium 技術(也稱為 MVE)的 Armv8.1-M 架構如何處理矢量指令。但問題是,每當代碼被矢量化時,Amdahl 定律的影響很快便會顯現,讓人措手不及。如果您不了解 Amdahl 定律,可以簡單理解為,Amdahl 定律表明算法中無法并行化的部分很快就會成為性能瓶頸。例如,如果有 50% 的工作負載可以并行化,那么即使這部分工作負載可以無限并行,最多也只能將速度提高二倍。不知您作何感受,如果我能將某件事情無限并行化,但速度卻只能提升二倍,這種微不足道的提升一定會讓我感到非常惱火!在設計 Helium 時,我們必須考慮矢量指令及其相關聯的一切內容,這樣才能最大限度地提高性能。

串行代碼在循環處理中很常見,串行代碼造成的開銷可能相當大,特別是對于小循環。下面的內存復制代碼就是一個很好的例子:

a85c54ac-b112-11ee-8b88-92fbcf53809c.png

循環迭代計數的遞減和返回循環頂端的條件分支占循環指令的 50%。許多小型 Cortex-M 處理器沒有分支預測器(小型 Cortex-M 處理器的面積效率極高,這意味著許多分支預測器比整個 Cortex-M 處理器還要大幾倍)。因此,由于分支損失,運行時開銷實際上高于 50%。通過在多次迭代中攤銷開銷,循環展開可以幫助減少開銷,但會增加代碼大小,并使代碼的矢量化過程更加復雜。

鑒于許多 DSP 內核都有小循環,因此在 Helium 研究項目中解決這些問題至關重要。許多專用 DSP 處理器支持零開銷循環。一種實現方法是使用 REPEAT 指令,告訴處理器將下面的指令重復 N 次:

a8745e44-b112-11ee-8b88-92fbcf53809c.png

處理器必須記錄多項數據:

循環開始的地址

需要分支回到循環開始前所剩余的指令數

剩余的循環迭代次數

在處理中斷時,跟蹤記錄所有這些數據可能會造成問題,因此一些 DSP 只需要延遲中斷,直到循環完成。如果要執行大量的迭代,這可能需要相當長的時間,而且完全不符合 Cortex-M 處理器應該實現的快速和確定性中斷延遲的需求。這種方法也不適用于處理精確故障,如權限違規導致的內存管理故障異常 (MemManage)。另一種方法是增加額外的寄存器來處理循環狀態。但這些新寄存器必須在異常進入和返回時保存和恢復,而這又會增加中斷延遲。為了解決這個問題,Armv8.1-M 采用了一對循環指令:

a8a57cb8-b112-11ee-8b88-92fbcf53809c.png

該循環首先執行 While Loop Start (WLS) 指令,該指令將循環迭代計數復制到 LR,循環迭代計數為零時,分支到循環結束。還有一條 Do Loop Start (DLS) 指令,可用于設置一個循環,在該循環中至少始終執行一次迭代。Loop End (LE) 指令檢查 LR 以確認是否還需要一次迭代,如果需要,則分支返回起點。有趣的是,處理器可以緩存 LE 指令提供的信息(即循環開始和結束的位置),因此在下一次迭代時,處理器甚至可以在獲取 LE 指令之前分支回到循環的起點。因此,處理器執行的指令序列如下所示:

a8b82142-b112-11ee-8b88-92fbcf53809c.png

在循環末尾添加循環指令有一個很好的副作用,如果緩存的循環信息刷新,該指令將重新執行。然后,重新執行 LE 指令將重新填充緩存。如下圖所示,由于無需保存循環開始和結束地址,因此現有的快速中斷處理功能得以保留。

a8d2dcd0-b112-11ee-8b88-92fbcf53809c.png

除了第一次迭代和從中斷恢復時的一些設置外,所有時間實際上都花在了內存復制而不是循環處理上。此外,由于處理器事先知道指令的順序,因此總能用正確的指令填充流水線。這樣就消除了流水線清空和由此導致的分支損失。因此,我們可以將這一循環矢量化,不必再擔心 Amdahl 定律的影響,我們(暫時)克服了這些困難。

在對代碼進行矢量化時,一個循環通常以不同類型的指令開始和結束,例如矢量加載 (VLDR) 和矢量乘加 (VMLA)。執行這樣的循環時,會產生一長串不間斷的交替 VLDR/VMLA 操作(如下圖所示)。這種不間斷的鏈條使處理器能夠從指令重疊中獲得最大益處,因為它甚至可以從一個循環迭代結束重疊到下一個迭代開始,從而進一步提高性能。關于指令重疊的更多信息,可參閱:《Arm Helium 技術誕生的由來:為何不直接采用 Neon?》

a8edba5a-b112-11ee-8b88-92fbcf53809c.png

當需要處理的數據量不是矢量長度的倍數時,矢量化代碼就會出現問題。典型的解決方案是先處理全矢量,然后用一個串行/非矢量化尾部清理循環來處理剩余的元素。不知不覺中,Amdahl 定律又出現了,真是令人不勝其煩!Helium 中的矢量可容納 16 個 8 位數值,因此在我們對 31 字節的 memcpy 函數進行矢量化時,僅有不到一半的拷貝將由尾部循環連續執行,而不是由矢量指令并行執行。

為了解決這個問題,我們增加了循環指令的尾部預測變體(如 WLSTP、LETP)。對于這些尾部預測循環,LR 保存的是要處理的矢量元素的個數,而不是要執行的循環迭代的次數。循環開始指令 (WLSTP) 有一個大小字段(下面 memcpy 函數示例中的“.8”),用于指定要處理的元素的寬度。

a9040440-b112-11ee-8b88-92fbcf53809c.png

如果您曾見過其他優化的 memcpy 例程,可能會對這個例子的簡單程度感到驚訝,但對于 Helium 來說,這已經是最好的完全矢量化解決方案所需要的一切了。具體工作原理如下:處理器使用大小字段和剩余元素的數量來計算剩余迭代次數。

如果最后一次迭代要處理的元素個數少于矢量長度,則矢量末尾相應數量的元素將被禁用。因此,在上文復制 31 個字節的例子中,Helium 會在第一次迭代時并行復制 16 個字節,然后在下一次迭代時并行復制 15 個字節。這不僅可以避免 Amdahl 定律的影響,實現該有的性能,還可以完全消除串行尾碼,減少代碼量,簡化開發過程。

由于面臨高性能目標和嚴格的面積/中斷延遲限制,我們在設計 Helium 時就像在設計一個多維拼圖,且其中一半的形狀是已經固定的。架構中看似毫不相干的部分可以相互作用,產生意想不到的效果或助力解決一些有趣的難題。

整個 Helium 研究團隊和我都無比期待看到 Helium 技術能夠為全新的應用帶來有力的支持。目前 Cortex-M 已有三款產品支持 Helium 技術——Cortex-M52、Cortex-M55 和 Cortex-M85,我迫不及待看到 Helium 技術持續賦能我們生態伙伴的 AI 創新應用。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19799

    瀏覽量

    233489
  • dsp
    dsp
    +關注

    關注

    555

    文章

    8141

    瀏覽量

    355133
  • 寄存器
    +關注

    關注

    31

    文章

    5421

    瀏覽量

    123290
  • ARM技術
    +關注

    關注

    0

    文章

    22

    瀏覽量

    7488
  • Cortex-M
    +關注

    關注

    2

    文章

    230

    瀏覽量

    30215

原文標題:Helium 技術講堂 | 克服 Amdahl 定律的影響

文章出處:【微信號:Arm社區,微信公眾號:Arm社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    電力電子中的“摩爾定律”(1)

    本文是第二屆電力電子科普征文大賽的獲獎作品,來自上海科技大學劉賾源的投稿。著名的摩爾定律中指出,集成電路每過一定時間就會性能翻倍,成本減半。那么電力電子當中是否也存在著摩爾定律?1965年,英特爾
    的頭像 發表于 05-10 08:32 ?145次閱讀
    電力電子中的“摩爾<b class='flag-5'>定律</b>”(1)

    摩爾定律是什么 影響了我們哪些方面

    摩爾定律是由英特爾公司創始人戈登·摩爾提出的,它揭示了集成電路上可容納的晶體管數量大約每18-24個月增加一倍的趨勢。該定律不僅推動了計算機硬件的快速發展,也對多個領域產生了深遠影響。
    的頭像 發表于 01-07 18:31 ?1143次閱讀

    電荷守恒定律與電流的關系 電荷守恒定律與能量守恒定律的區別

    電荷守恒定律與電流的關系 電荷守恒定律與電流之間存在著密切的關系。電荷守恒定律指出,在任何物理過程中,電荷的總量保持不變。這意味著電荷既不能被創造,也不能被銷毀,只能從一個物體轉移到另一個物體,或者
    的頭像 發表于 12-16 14:45 ?880次閱讀

    電荷守恒定律的定義 電荷守恒定律與電場的關系

    電荷守恒定律的定義 電荷守恒定律是一個基本的物理定律,它指出在一個封閉系統(或孤立系統)中,電荷的總量保持不變。這意味著電荷既不能被創造,也不能被銷毀,它只能從一種形式轉移到另一種形式,或者從一個
    的頭像 發表于 12-16 14:41 ?1356次閱讀

    歐姆定律與電路分析技巧

    歐姆定律是電路分析中的基石,它描述了電流、電壓和電阻之間的基本關系。在進行電路分析時,掌握一些基于歐姆定律的技巧可以幫助我們更有效地理解和解決問題。以下是一些關于歐姆定律與電路分析技巧的討論: 一
    的頭像 發表于 10-28 15:31 ?1623次閱讀

    歐姆定律在新能源技術中的應用

    歐姆定律是電氣工程和物理學中的一個基本定律,它描述了電流、電壓和電阻之間的關系。定律表明,通過導體兩點間的電流與這兩點間的電壓成正比,與導體的電阻成反比。數學表達式為:I = V / R,其中I
    的頭像 發表于 10-28 15:28 ?850次閱讀

    歐姆定律的實際應用實例

    歐姆定律是電氣工程和物理學中的一個基本定律,它描述了電流、電壓和電阻之間的關系。這個定律由德國物理學家喬治·西蒙·歐姆在1827年首次提出,其公式為 V = IR,其中 V 代表電壓(伏特),I
    的頭像 發表于 10-28 15:27 ?3935次閱讀

    歐姆定律的常見誤區

    歐姆定律是電磁學中的一個基本定律,它描述了電流、電壓和電阻之間的關系。這個定律以德國物理學家喬治·西蒙·歐姆的名字命名,他在1827年首次發表了這一定律。盡管歐姆
    的頭像 發表于 10-28 15:25 ?2491次閱讀

    歐姆定律和基爾霍夫定律的區別

    歐姆定律和基爾霍夫定律是電路學中兩個重要的定律,它們各自描述了電路中不同的現象和規律。以下是它們之間的主要區別: 一、定義與內容 歐姆定律 定義:描述電流、電壓和電阻之間關系的基本
    的頭像 發表于 10-28 15:19 ?1266次閱讀

    歐姆定律與電阻關系

    歐姆定律與電阻之間存在密切的關系,這一關系在電路學中至關重要。以下是對歐姆定律與電阻關系的介紹: 一、歐姆定律的基本內容 歐姆定律表明,在一段電路中,當導體兩端的電壓一定時,通過導體的
    的頭像 發表于 10-28 15:15 ?3039次閱讀

    如何理解歐姆定律

    歐姆定律是電路學中的基本原理,它描述了導體中電流、電壓和電阻之間的關系。以下是對歐姆定律的介紹: 一、定義 歐姆定律表明,在一段電路中,當導體兩端的電壓一定時,通過導體的電流與導體的電阻成反比;當
    的頭像 發表于 10-28 15:11 ?3260次閱讀

    歐姆定律在電路中的應用

    在電氣工程和電子技術領域,歐姆定律是一個不可或缺的基礎理論。它不僅幫助我們理解電路的工作原理,還在電路設計、故障診斷和性能優化中發揮著關鍵作用。 一、歐姆定律的定義 歐姆定律是由德國物理學家喬治
    的頭像 發表于 10-28 15:06 ?3107次閱讀

    楞次定律怎么用手判斷 楞次定律怎么判斷感應電流方向

    楞次定律是電磁感應定律的一個重要部分,它描述了感應電動勢和感應電流的產生方向。在理解和應用楞次定律時,我們可以借助右手定則來判斷感應電流的方向。 一、楞次定律的基本概念 楞次
    的頭像 發表于 10-17 18:03 ?3844次閱讀

    克服設計難題-實現高性能接口

    電子發燒友網站提供《克服設計難題-實現高性能接口.pdf》資料免費下載
    發表于 08-28 09:41 ?0次下載
    <b class='flag-5'>克服</b>設計難題-實現高性能接口

    什么定律體現了線性電路元件上電壓 歐姆定律在實際電路中的應用

    線性電路元件上的電壓與電流之間的關系遵循歐姆定律。 1. 歐姆定律的基本概念 歐姆定律是描述電阻、電壓和電流之間關系的定律。在最簡單的形式中,歐姆
    的頭像 發表于 07-17 11:22 ?1344次閱讀