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

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

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

3天內不再提示

GD32H7如何利用超標量流水線

麥辣雞腿堡 ? 來源:軒哥談芯 ? 作者:義軒 ? 2023-11-29 17:15 ? 次閱讀

我們拿一個算法的代碼實現來舉例子,首先我們寫一個求階乘的子函數,這里我偷懶讓 ChatGPT 幫忙生成了一個:

#include
// 階乘函數intfactorial_iterative(int n) { int result = 1; // 從1乘到n for (int i = 1; i <= n; ++i) { result *= i; } return result;}
// 示例int main() { int result_iterative = factorial_iterative(5); printf("5的階乘是: %dn", result_iterative);
return 0;}

這種簡單的迭代算法的優點是比較容易理解,一眼就可以看出程序員想干什么。

但這樣寫出來的程序缺點也很大,就是運行效率非常低,我們在算法編寫中最怕的就是for 循環,因為這里面會存在大量的比較和跳轉,同時最容易產生一些代碼被無效的循環執行。

圖片

這些缺點有的會被編譯器的優化措施給規避掉,比如編譯器可以把一些需要內存訪問的變量先放到寄存器中,等計算完結果后,再把結果從寄存器中轉移到內存中,因為 CPU 讀取寄存器比讀取內存可快多了。

但是編譯器也不是萬能的,有些優化他就做不到。比如,我們改成下面展開的樣子,超標量的流水線就開始起作用了。

// 階乘函數intfactorial_iterative(int n) {    int result0 = 1, result1 = 1, result2 = 1,result3 = 1;    // 從1乘到n    for (int i = 1; i < n; i += 4) {
result0 *= i; result1 *= i + 1; result2 *= i + 2; result3 *= i + 3;
} return (result0 * result1 * result2 * result3);}


首先,我們假設開啟了編譯器優化,編譯器已經把所有內存訪問的變量在函數開始都歸置到了寄存器中,那么這時候我們可以看到,4 個 result 的乘法語句是相互獨立的,他們的計算過程不依賴于其他 3 個語句的計算結果。

這就好比安排了四個人,給他們算 4 個單獨的式子,假設他們計算能力相同,于是他們會在同一段時間后跑到黑板上來互相乘一下算個總的結果。

而如果我們只是簡單的做循環展開,不增加新的寄存器變量,也就是不加人的情況下是怎么樣的呢?

// 階乘函數intfactorial_iterative(int n) {    int result = 1;    // 從1乘到n    for (int i = 1; i < n; i += 4) {
result *= i; result *= i + 1; result *= i + 2; result *= i + 3;
} return (result * result * result * result);}


這里只放了一個聰明的孩子做算式,不過你看他要做的 4 個算式,其中后一個算式總要用到前一個算式的結果,他即便再聰明也得一個一個的算。

這就是超標量流水線的用處,當然展開多少還需要我們自己衡量,本質上也是用空間換時間,另外寄存器可是稀缺資源。

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

    關注

    68

    文章

    19825

    瀏覽量

    233778
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17874

    瀏覽量

    361251
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70313
  • 編譯器
    +關注

    關注

    1

    文章

    1657

    瀏覽量

    49934
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    什么是超標量處理器的流水線超標量處理器的特點有哪些?

    如果每周期可取出多條指令(eg: 超過一條)送到流水線中執行,并使用硬件來對指令進行調度(eg: 靠硬件自身來決定哪些指令可以并行執行)的處理器,就可稱為超標量處理器;
    的頭像 發表于 03-04 14:03 ?3956次閱讀

    FPGA中的流水線設計

    8bit 流水線加法器的小例子 module add8(a, b, c);input[7:0] a;input[7:0] b;output [8:0] c; assign c[8:0
    發表于 10-26 14:38

    現代RISC中的流水線技術

    取得了成功。流水線技術是當前指令集處理器設計中廣泛采用的技術。在這里我們將重點放在(標量流水線處理器的設計。流水線處理器設計中的許多方法和技術,例如用于檢測和化解相關的
    發表于 03-01 17:52

    什么是流水線技術

    什么是流水線技術 流水線技術
    發表于 02-04 10:21 ?4051次閱讀

    什么是超標量技術/FADD?

    什么是超標量技術/FADD? 超標量(superscalar)是指在CPU中有一條以上的流水線,并且每時鐘周期內可以完成一條以上的指令,
    發表于 02-04 10:45 ?1642次閱讀

    流水線中的相關培訓教程[4]

    流水線中的相關培訓教程[4] 下面討論如何利用編譯器技術來減少這種必須的暫停,然后論述如何在流水線中實現數據相關檢測和定向。
    發表于 04-13 16:09 ?4908次閱讀

    電鍍流水線的PLC控制

    電鍍流水線的PLC控制電鍍流水線的PLC控制電鍍流水線的PLC控制
    發表于 02-17 17:13 ?36次下載

    FPGA之流水線練習(3):設計思路

    流水線的平面設計應當保證零件的運輸路線最短,生產工人操作方便,輔助服務部門工作便利,最有效地利用生產面積,并考慮流水線安裝之間的相互銜接。為滿足這些要求,在流水線平面布置時應考慮
    的頭像 發表于 11-28 07:07 ?2570次閱讀

    各種流水線特點及常見流水線設計方式

    按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網帶線、懸掛線及滾筒流水線這七類流水線
    的頭像 發表于 07-05 11:12 ?7988次閱讀
    各種<b class='flag-5'>流水線</b>特點及常見<b class='flag-5'>流水線</b>設計方式

    如何選擇合適的LED生產流水線輸送方式

    LED生產流水線輸送形式分為平面直線傳輸流水線、各種角度平面轉彎傳輸流水線、斜面上傳流水線、斜面下傳流水線這四種輸送方式,企業也是可以根據L
    發表于 08-06 11:53 ?1168次閱讀

    嵌入式_流水線

    流水線一、定義流水線是指在程序執行時多條指令重疊進行操作的一種準并行處理實現技術。各種部件同時處理是針對不同指令而言的,他們可同時為多條指令的不同部分進行工作。? 把一個重復的過程分解為若干個子過程
    發表于 10-20 20:51 ?6次下載
    嵌入式_<b class='flag-5'>流水線</b>

    什么是流水線 Jenkins的流水線詳解

    jenkins 有 2 種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkin
    發表于 05-17 16:57 ?1267次閱讀

    首款Cortex-M7內核超高性能MCU性能揭秘

    GD32H7系列MCU采用基于Armv7E-M架構的600MHz Arm Cortex-M7高性能內核,憑借支持分支預測的6級超標量流水線架構,以及支持高帶寬的AXI和AHB總線接口,
    發表于 05-25 11:36 ?1502次閱讀
    首款Cortex-M<b class='flag-5'>7</b>內核超高性能MCU性能揭秘

    H7的特點 什么是超標量流水線

    流水線,并且是超標量的,并且支持分支預測。 內置了高級DSP硬件加速器和雙精度浮點單元(FPU),以及硬件三角函數加速器(TMU)和濾波算法加速器(FAC)。 內置了TFT LCD液晶驅動器和圖形處理
    的頭像 發表于 11-29 16:52 ?1129次閱讀
    <b class='flag-5'>H7</b>的特點 什么是<b class='flag-5'>超標量流水線</b>

    GD32H7系列MCU安全啟動概述

    電子發燒友網站提供《GD32H7系列MCU安全啟動概述.pdf》資料免費下載
    發表于 01-17 15:34 ?0次下載
    <b class='flag-5'>GD32H7</b>系列MCU安全啟動概述