26考研——中央處理器_指令流水線_指令流水線的基本概念 流水線的基本實現(5)

408答疑


文章目錄

  • 六、指令流水線
    • 指令流水線的基本概念
    • 流水線的基本實現
      • 流水線設計的原則
      • 流水線的邏輯結構
      • 流水線的時空圖表示
  • 八、參考資料
    • 鮑魚科技課件
    • 26王道考研書


六、指令流水線

  • 前面介紹的指令都是在單周期處理機中采用串行方法執行的,同一時刻 CPU 中只有一條指令在執行,因此各功能部件的使用率不高。
  • 現代計算機普遍采用指令流水線技術,同一時刻有多條指令在 CPU 的不同功能部件中并發執行,大大提高了功能部件的并行性和程序的執行效率。

指令流水線的基本概念

  • 可以從兩方面提高處理機的并行性:

    1. 時間上的并行技術:將一個任務分解為幾個不同的子階段,每個子階段在不同的功能部件上并行執行,以便在同一時刻能夠同時執行多個任務,進而提升系統性能,這種方法被稱為流水線技術。
    2. 空間上的并行技術:在一個處理機內設置多個執行相同任務的功能部件,并讓這些功能部件并行工作,這樣的處理機被稱為超標量處理機。
  • 一條指令的執行過程可分解為若干階段,每個階段由相應的功能部件完成。若將各階段視為相應的流水段,則指令的執行過程就構成了一條指令流水線。

    • 假設一條指令的執行過程分為如下 5 個階段(也稱功能段或流水段):

      • 取指(IF):從指令存儲器或 Cache 中取指令。
      • 譯碼/讀寄存器(ID):操作控制器對指令進行譯碼,同時從寄存器堆中取操作數。
      • 執行/計算地址(EX):執行運算操作或計算地址。
      • 訪存(MEM):對存儲器進行讀/寫操作。
      • 寫回(WB):將指令執行結果寫回寄存器堆。
    • k + 1 k+1 k+1 條指令的取指階段提前到第 k k k 條指令的譯碼階段,從而將第 k + 1 k+1 k+1 條指令的譯碼階段與第 k k k 條指令的執行階段同時進行,如下圖所示。
      在這里插入圖片描述

    • 理想情況下,每個時鐘周期都有一條指令進入流水線,每個時鐘周期都有一條指令完成,每條指令的時鐘周期數(CPI)都為 1。

  • 為了利于實現指令流水線,指令集應具有如下特征:

    1. 指令長度應盡量一致:有利于簡化取指令和指令譯碼操作。否則,取指令所花的時間長短不一,使得取指部件極其復雜,并且也不利于指令譯碼。
    2. 指令格式應盡量規整:盡量保證源寄存器的位置相同,有利于在指令未知時就可取寄存器操作數,否則須譯碼后才能確定指令中各寄存器編號的位置。
    3. 采用 LOAD/STORE 型指令:其他指令都不能訪問存儲器,這樣可把 LOAD/STORE 指令的地址計算和運算指令的執行步驟規整在同一個周期中,有利于減少操作步驟。
    4. 數據和指令在存儲器中“按邊界對齊”存放:這樣,有利于減少訪存次數,使所需數據在一個流水段內就能從存儲器中得到。

流水線的基本實現

流水線設計的原則

  • 在單周期實現中,雖然不是所有指令都必須經歷完整的 5 個階段,但只能以執行速度最慢的指令作為設計其時鐘周期的依據,單周期 CPU 的時鐘頻率取決于數據通路中的最長路徑。

  • 流水線設計的原則:

    1. 指令流水線段個數以最復雜指令所用的功能段個數為準;
    2. 流水段的長度以最復雜的操作所花的時間為準。
  • 假設某條指令的 5 個階段所花的時間分別如下:① 取指:200 ps;② 譯碼:100 ps;③ 執行:150 ps;④ 訪存:200 ps;⑤ 寫回:100 ps。

    • 該指令的總執行時間為 750 ps。
    • 按照流水線設計原則,每個流水段的長度為 200 ps,所以每條指令的執行時間為 1ns,反而比串行執行時增加了 250 ps。
    • 假設某程序有 N N N 條指令,單周期處理機所用的時間為 N × 750 p s N \times 750ps N×750ps,而流水線處理機所用的時間為 ( N + 4 ) × 200 p s (N + 4) \times 200ps (N+4)×200ps
    • 由此可見,流水線方式并不能縮短單條指令的執行時間,但對于整個程序來說,執行效率得到了大幅提高。

流水線的邏輯結構

  • 每個流水段后面都要增加一個流水段寄存器,用于鎖存本段處理完的所有數據,以保證本段的執行結果能在下個時鐘周期給下一流水段使用,如下圖所示。

在這里插入圖片描述

  • 各種寄存器和數據存儲器均采用統一時鐘 CLK 進行同步,每來一個時鐘,各段處理完的數據都將鎖存到段尾的流水段寄存器中,作為后段的輸入。同時,當前段也會收到前段通過流水段寄存器傳遞過來的數據。
  • 一條指令會依次進入 IF、ID、EX、MEM、WB 五個功能段進行處理,第一條指令進入 WB 段后,各流水段都包含一條不同的指令,流水線中將同時存在 5 條不同的指令并行執行。

在考試中,若沒有明確說明,則可以不用考慮流水寄存器的時延。

流水線的時空圖表示

  • 通常用時空圖來直觀地描述流水線的執行情況,如下圖所示。
    在這里插入圖片描述

    • 在時空圖中,橫坐標表示時間,它被分割成長度相等的時間段 T T T
    • 縱坐標為空間,表示當前指令所處的功能部件。
  • 在上圖中,

    • 第一條指令 I 1 I_1 I1? 在時刻 0 進入流水線,在時刻 5T 流出流水線。
    • 第二條指令 I 2 I_2 I2? 在時刻 T T T 進入流水線,在時刻 6T 流出流水線。
    • 以此類推,每隔一個時間 T T T 就有一條指令進入流水線,從時刻 5T 開始每隔一個時間 T T T 就有一條指令流出流水線。
  • 從上圖中可看出,在時刻 10T 時,流水線上便有 6 條指令流出。若采用串行方式執行,在時刻 10T 時,只能執行 2 條指令,可見使用流水線方式成倍地提高了計算機的速度。

只有大量連續任務不斷輸入流水線,才能充分發揮流水線的性能,而指令的執行正好是連續不斷的,非常適合采用流水線技術。對于其他部件級流水線,如浮點運算流水線,同樣也僅適合于提升浮點運算密集型應用的性能,對于單個運算是無法提升性能的。

八、參考資料

鮑魚科技課件

b站免費王道課后題講解:
在這里插入圖片描述

網課全程班:
在這里插入圖片描述

26王道考研書

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

配置集群(yarn)

在配置 YARN 集群前,要先完成以下準備工作: 集群環境規劃:明確各節點的角色,如 ResourceManager、NodeManager 等。網絡環境搭建:保證各個節點之間能夠通過網絡互通。時間同步設置:安裝 NTP 服務&#xff0…

vue實現與后臺springboot傳遞數據【傳值/取值 Axios 】

vue實現與后臺springboot傳遞數據【傳值/取值】 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是node.js和vue的使用。前后每一小節的內容是存在的有:學習and理解的關聯性。【幫幫志系列文章】:每…

二叉樹路徑總和

一、給你二叉樹的根節點 root 和一個表示目標和的整數 targetSum 。判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等于目標和 targetSum 。如果存在,返回 true ;否則,返回 false 。 112. 路徑總和 - 力扣&…

Matlab 模糊控制平行側邊自動泊車

1、內容簡介 Matlab 233-模糊控制平行側邊自動泊車 可以交流、咨詢、答疑 2、內容說明 略 3、仿真分析 略 4、參考論文 略

M0G3507完美移植江科大軟件IIC MPU6050

經過兩天兩夜的查閱文獻資料、整理學習,成功的把江科大的軟件IIC讀寫MPU6050移植到MSPM0G3507,親測有效!!包的,為了讓大家直觀地感受下,先上圖。記得點個贊哦! 學過江科大的STM32的小伙伴是不是…

CI/CD與DevOps流程流程簡述(提供思路)

一 CI/CD流程詳解:代碼集成、測試與發布部署 引言 在軟件開發的世界里,CI/CD(持續集成/持續交付)就像是一套精密的流水線,確保代碼從開發到上線的整個過程高效、穩定。我作為一名資深的軟件工程師,接下來…

大數據基礎——Ubuntu 安裝

文章目錄 Ubuntu 安裝一、配置電腦二、安裝系統 Ubuntu 安裝 一、配置電腦 1、進入VMware 2、選擇配置類型 3、選擇硬件兼容性版本 4、當前虛擬機的操作系統 選擇“稍后安裝操作系統”(修改) 5、選擇虛擬機將來需要安裝的系統 選中“Linux”和選擇…

LeetCode百題刷003(449周賽一二題)

遇到的問題都有解決的方案,希望我的博客可以為你提供一些幫助 一、不同字符數量最多為 K 時的最少刪除數 (哈希表空間換時間) 不同字符數量最多為 K 時的最少刪除數 - 力扣 (LeetCode) 競賽https://leetcode.cn/contest/weekly-contest-449/…

【網安等保】OpenEuler 24.03系統主機安全加固及配置優化實踐指南

[ 知識是人生的燈塔,只有不斷學習,才能照亮前行的道路 ] 📢 大家好,我是 WeiyiGeek,一個正在向全棧工程師(SecDevOps)前進的計算機技術愛好者,歡迎各位道友一起學習交流、一起進步 🚀&#xff0…

大模型賦能:2D 寫實數字人開啟實時交互新時代

在數字化浪潮席卷全球的當下,人工智能技術不斷突破創新,其中大模型驅動的 2D 寫實數字人正成為實時交互領域的一顆新星,引領著行業變革,為人們帶來前所未有的交互體驗。 一、2D 寫實數字人概述 2D 寫實數字人是通過計算機圖形學…

Dockers部署oscarfonts/geoserver鏡像的Geoserver

Dockers部署oscarfonts/geoserver鏡像的Geoserver 說實話,最后發現要選擇合適的Geoserver鏡像才是關鍵,所以所以所以…🐷 推薦oscarfonts/geoserver的鏡像! 一開始用kartoza/geoserver鏡像一直提示內存不足,不過還好…

關于解決MySQL的常見問題

一:MySQL輸入密碼時閃退 這有可能是因為MySQL服務沒有開啟。 打開系統配置(直接搜索即可),查看MySQL服務是否開啟。 此時顯示的是已停止。確定是這個問題。 現在打開計算機管理(直接搜索即可)。 找到MyS…

LeetCode 熱題 100 101. 對稱二叉樹

LeetCode 熱題 100 | 101. 對稱二叉樹 大家好,今天我們來解決一道經典的二叉樹問題——對稱二叉樹。這道題在 LeetCode 上被標記為簡單難度,要求檢查給定的二叉樹是否軸對稱。 問題描述 給你一個二叉樹的根節點 root,檢查它是否軸對稱。 示…

圖形化編程革命:iVX攜手AI 原生開發范式

一、技術核心:圖形化編程的底層架構解析 1. 圖形化開發的效率優勢:代碼量減少 72% 的秘密 傳統文本編程存在顯著的信息密度瓶頸。以 "按鈕點擊→條件判斷→調用接口→彈窗反饋" 流程為例,Python 實現需定義函數、處理縮進并編寫 …

uniapp跨平臺開發HarmonyOS NEXT應用初體驗

之前寫過使用uniapp開發鴻蒙應用的教程,簡單介紹了如何配置開發環境和運行項目。那時候的HbuilderX還是4.22版本,小一年過去了HbuilderX的正式版本已經來到4.64,歷經了多個版本的更新后,跨平臺開發鴻蒙應用的體驗大幅提升。今天再…

windows怎么修改DNS

好的,在 Windows 操作系統中修改 DNS 設置有幾種方法,最常用的是通過“網絡和 Internet 設置”。以下是詳細步驟: 方法一:通過設置應用修改 DNS (適用于 Windows 10/11) 打開設置: 點擊屏幕左下角的 Windows 開始按鈕…

Java基本數據類型緩存池解析-源碼剖析

拋出問題:new Integer(18) 與 Integer.valueOf(18) 的區別是什么? new Integer(18) 每次都會新建一個對象;Integer.valueOf(18) 會使?用緩存池中的對象,多次調用只會取同?一個對象的引用 Integer x new Integer(18); Integer y new Int…

WORD壓縮兩個免費方法

日常辦公和學習中,Word文檔常常因為包含大量圖片、圖表或復雜格式而導致文件體積過大,帶來諸多不便,比如 郵件發送受限:許多郵箱附件限制在10-25MB,大文件無法直接發送 存儲空間占用:大量文檔占用硬盤或云…

羅技無線鼠標的配對方法

羅技鼠標的配對方法: 重新連接鼠標 請按照以下步驟將鼠標與 USB 接收器重新配對。 1.將USB接收器插入計算機。 2.將鼠標關閉電源。 3.按住并持續按住向右按鈕,直到操作結束。 4.切換鼠標電源。 5. 單擊一次左側按鈕。 6. 單擊一次中間按鈕。 7.全部松開&…

四、Hadoop 2.X vs 3.X:特性、架構與性能全解析

Hadoop 2.X 與 Hadoop 3.X 深度對比:版本特性、架構與性能剖析 在大數據處理的浪潮中,Hadoop 憑借其分布式存儲與計算的強大能力,成為了業界的核心框架之一。隨著技術的不斷演進,Hadoop 也經歷了多個重要版本的迭代。其中&#x…