Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 5 章 處理器指令集.

Similar presentations


Presentation on theme: "第 5 章 處理器指令集."— Presentation transcript:

1 第 5 章 處理器指令集

2 到底處理器應該提供哪些指令? 理論上,處理器只要具備某些基本的運算功能(指令),就有足夠的能力去計算任何一個函數。 電腦結構師必須考慮:
指令太多帶來的是便利性,而非功能性。 指令太多可能衍生效率問題。 電腦結構師必須考慮: 晶片大小 消耗功率 散熱問題

3 指令集重點 建置處理器的運算集合是一種妥協,一種介於硬體成本、程式便利、和工程層面(比如:功率消耗)之間的妥協。

4 表示法 所有的硬體運算 硬體運算表示法 就是所有指令的集合,稱為指令集。 指令集定義所有指令的字義和運作規格。
意指所使用的指令語法,稱為指令格式。 先把程式轉換成可執行的指令格式,然後再交給處理器。

5 指令的組成部分 執行運算的操作碼 擷取數值的運算元 置放結果的位置

6 典型指令格式 由一序列的二進制位元所組成 通常 指令開頭是操作碼欄位 接著跟隨著運算元欄位

7 典型指令格式圖

8 指令長度 固定長度指令 可變長度指令 所有的指令長度都相同 硬體比較簡單 硬體比較快速 具有各種不同長度的指令 比較吸引程式設計師
記憶體使用較有效率

9 固定長度指令的重點 對程式設計師而言,使用固定長度指令的理由似乎不夠充分,然而,固定長度指令集確實讓處理器硬體比較精簡,也比較快!

10 通用暫存器 高速設備 處理器的一部份 暫時的儲存裝置 數量不大(<100)編號由0到N-1 長度剛好可以容納整數

11 浮點暫存器 容納浮點數 通用暫存器和浮點暫存器的編號都是從0開始,當指令發出暫存器編號時,很容易搞混淆。
比如:指定暫存器3和6作整數運算,處理器會擷取通用暫存器;然而,如果指定暫存器3和6是作浮點運算,則必須擷取浮點暫存器。

12 暫存器規劃 Z = X + Y 動作: 把X載入暫存器3 把Y載入暫存器6 把暫存器3和6的數值相加 把結果放到暫存器7

13 專業術語 暫存器配置 暫存器溢出 把數值放在暫存器,改善執行效能。 選擇暫存器置放數值的程序,稱為暫存器配置。
暫存器數量不夠時,會發生暫存器溢出。 為了讓新數值使用暫存器,只好把原暫存器內的舊數值,先移到記憶體。

14 雙精準度 兩倍原運算元的位元數 通常把暫存器視為連續的硬體 比如:使用連續的暫存器儲存雙精準度整數 一半的整數放在暫存器4
一半的整數放在暫存器5

15 暫存器庫 系統可以有多個暫存器庫 暫存器庫就是暫存器的集合 把某些運算元放在某個暫存器庫,利於平行處理。 硬體細節可能會影響到暫存器配置
最佳化執行效能

16 典型的暫存器庫策略 將暫存器分割成兩個暫存器庫 ALU可以從這兩個不同的暫存器庫,同時取出加法所需要的兩個運算元。

17 暫存器庫圖

18 程式設計師受到的影響 運算元必須放在暫存器庫 無法保證每一個指令的運算元,都來自於不同的暫存器庫。 R ← X + Y S ← Z – X
T ← Y + Z

19 暫存器衝突 暫存器衝突:無法把運算元配置到不同的暫存器庫。 通常由編譯器或組譯器通知。
程式設計師最好重新指定暫存器、或插入指令複製數值,才能有效地控制衝突的發生。

20 典型指令集 CISC(複雜指令集,Complex Instruction Set Compute )
RISC(精簡指令集,Reduced Instruction Set Computer )

21 CISC指令集 指令較多,往往有數百個指令。 某些複雜的計算指令可能需要一段時間執行,比如:
圖形指令在記憶體的運算動作 sine、cosine、…等計算函數 著名的英特爾Pentium,就是CISC處理器的代表。

22 RISC指令集 指令較少,剛好滿足數學函數計算的最低要求(比如:32個指令)。 通常一個時脈週期執行一個指令。 比如:MIPS指令集。

23 指令集結論 如果處理器的指令集有眾多(比如:數百個指令)且複雜(通常執行也相當耗時)的指令,則分類為CISC處理器;反之,如果指令集只有少數的指令,而且每個指令都只需要1個時脈週期的執行時間,則分類為RISC處理器。

24 管線執行 一種硬體最佳化技術 可以讓處理器更快速地完成一個指令 典型常見於RISC處理器

25 典型的指令週期 擷取下一個指令 檢視操作碼:決定需要幾個運算元 擷取每一個運算元 執行操作碼指定的運算 儲存結果到指定的位置

26 最佳化指令週期 RISC處理器被設計成平行的硬體單元,每個硬體單元執行一個階段,多個階段的硬體單元排列成多階管線。
管線會把結果,從目前的硬體單元 傳送到 下一個硬體單元。

27 五階管線執行圖

28 管線速度 所有階段的硬體都可以平行且獨立地運作 所有階段的硬體同時往右傳送指令 效果:N階管線可以同時執行N個指令

29 管線工作圖

30 RISC處理器和管線 雖然RISC處理器不能在單一時脈週期下,就執行完擷取−執行週期的所有階段,但是藉由平行硬體的指令管線提供幾乎相等的效能表現,一旦管線滿載,每一個時脈週期剛好會有一個指令完成。

31 管線技術 指令管線透通於程式設計師。 雖然如此,但是不瞭解管線技術很可能妨礙到程式設計的效能表現。
比如:如果管線項目不合,則管線硬體可能會發生指令遲滯。

32 指令遲滯 假設 指令K: C ← add A B 指令K+1: D ← subtract E C 以下兩個連續指令分別執行加法和減法
運算元和結果置放於暫存器A、B、C和D 指令K: C ← add A B 指令K+1: D ← subtract E C

33 管線遲滯現象 使用泡泡代表延遲,泡泡的出現將影響管線階段的傳輸與進行。

34 管線遲滯的其它原因 存取外部儲存裝置 加入協同處理器 分支到新位置 呼叫副程式

35 程式高速運作 少用分支指令 最好也不要在鄰接的指令後面,立刻存取結果暫存器,以避開延遲。

36 指令重排順序

37 管線重點 雖然在任何時間上,管線硬體會自動地幫助程式盡可能高速執行,然而程式設計師最好能在撰寫程式時,就開始注意並且謹慎地運用管線技術,否則指令管線硬體可能無法全速執行。

38 No-OP指令 大部分的處理器會提供no-op指令 no-op (不動作)指令不會影響 no-op指令通常什麼都不做,只是浪費時間而已。
資料數值 計算結果 電腦狀態 no-op指令通常什麼都不做,只是浪費時間而已。 程式設計師可以插入no-op指令,來標示這裡發生指令遲滯現象。

39 前遞轉送 英文稱為forwarding技術 (forward字面意義為轉送) 讓ALU預先存取上一個指令的結果,解決連續算術指令的傳輸問題。
使用硬體來進行偵測,避免遲滯。 範例: 指令K: C ← add A B 指令K+1: D ← subtract E C

40 運算型態

41 程式計數器 就是所謂的”指令指標” 專用暫存器 使用擷取−執行週期 自動擷取下一個指令位址

42 程式計數器演算法 指定程式計數器一個初始值,重複執行下列工作{ 擷取:從程式計數器給予的位址,抓取程式的下一個指令
由剛剛擷取的指令得知下個指令位址,並送至內部位址暫存器A 執行:執行指令運算動作 複製位址暫存器A內容給程式計數器 }

43 分支指令和擷取執行 絕對分支指令 相對分支指令 最典型的就是jump指令 尾隨的運算元就是位址,會載入到內部位址暫存器A 。
最典型的就是br指令 運算元是一個有號數值,會加到內部位址暫存器A 。

44 副程式呼叫指令 jsr指令 ret指令 類似分支指令 jsr指令會先把目前的呼叫位址,完整地儲存到位址暫存器A。 副程式的結束指令

45 傳遞引數 有多種傳遞引數的方式 比如: 使用記憶體來傳遞引數 使用通用暫存器來傳遞引數 使用專用暫存器來傳遞引數

46 暫存器視窗 最佳化引數傳輸方式 在任何時間點,處理器只能看到一小部分的暫存器,稱為視窗。
每執行一個副程式,硬體會自動加入一個對應的視窗,等到副程式結束後,才會收回該視窗。 視窗之間可以出現重疊現象 重疊暫存器正是呼叫程式置放引數的地方 呼叫程式可以看見的重疊暫存器,副程式也可以看見。

47 暫存器視窗圖

48 MIPS指令集範例 MIPS處理器廣泛地應用在嵌入式系統 MIPS指令集是RISC處理器中最經典的範例

49 MIPS指令集

50 MIPS指令集(Cont.)

51 MIPS指令集(Cont.)

52 最小化指令集 最基本的指令集必須精簡,以保證高速運作。 不需要太多指令,只要具有最必要的基本指令即可。

53 正交原則 正交原則指出:每一個指令都只執行唯一的任務,再也沒有其它指令具備相同或類似的功能,來完成這個任務,也就是說,正交原則可以避免出現多個重複功能的指令,強化精簡觀念。

54 條件碼 內部的硬體機制 ALU會主動地設定條件碼 分支指令可以根據多個條件位元進行測試,並且根據這些測試的結果,來決定是否要作分支動作。

55 條件碼範例


Download ppt "第 5 章 處理器指令集."

Similar presentations


Ads by Google