Pentium微處理器
Pentium微處理器是一種最先進的32位微處理器。它與DOS,Windows, OS/2和UNIX基礎上的應用軟件兼容。
有兩組算術邏輯單元(ALU)、兩條流水線、能同時執行兩條指令;
並且把數據cache(高速緩衝存儲器)和代碼cache分開;不僅提高了總線的速度;還將數據總線增加到64條;
流水浮點部件提供了工作站的特性。因此它幾乎具有兩臺80X86的功能。
Pentium的原理結構
包括12個主要部件,核心部件是兩個流水線執行部件和浮點處理部件
總線接口部件
- 實現CPU與系統總線的連接,包含64位數據線、32位地址線和控制信號線,實現信息交換
U流水線和V流水線
- 獨立運行,均含ALU。每條流水線含5級(取指令、譯碼、生成地址、執行指令、回寫)
- U:可執行所有的整數運算指令 V:執行簡單的整數運算和數據交換指令
數據Cache
- 存放CPU最近要使用的數據和指令,提高存取速度,並分別配置了轉換檢測緩衝器
代碼Cache
- Cache存放CPU最近要使用的數據和指令,提高存取速度,並配置轉換檢測緩衝器(TLB),將線性地址轉換爲高速緩存的物理地址
控制ROM
- 含有複雜指令對應的微程序
分支目標緩衝器BTB
- BTB在遇到條件轉移指令時用來預測是否發生轉移,並提供預取地址
控制部件
- 通過解析指令譯碼器中的譯碼信息和控制ROM中的微程序,控制兩條流水線和FPU的執行
浮點處理單元FPU
- 採用硬件電路實現加、乘、除浮點運算
分段部件和分頁部件
- 分段/分頁實現對存儲器的兩級管理
寄存器組
- 通用寄存器
- 段寄存器
- 描述符寄存器
- 指令計數器
- 標誌寄存器
- 控制組寄存器
- 系統地址寄存器
- 調試寄存器
指令預取部件
- 從指令緩存中預取指令流
指令譯碼器
- 三個譯碼器進行譯碼
Pentium的主要部件
總線接口部件
64位數據線、32位地址線、控制總線
功能
① 地址驅動和傳輸:A31~ A3、BE7#~BE0#
② 數據驅動:D63~D0
③ 數據總線寬度控制(8,16,32,64位通過控制信號實現總線寬度控制)
④ 數據緩衝
⑤ 總線操作的控制功能(數據傳輸,成組傳輸,中斷,復位,DMA操作等)
⑥ 奇/偶校驗告示功能
⑦ Cache操作控制(片內和片外Cache一致性)
U流水線和V流水線,獨立運行
代碼Cache和數據Cache(高速緩存可讀寫RAM)
- 兩者分開,減少衝突,提高數據存取命中率
- 兩者分別配置專用的TLB(轉換檢測緩衝器),將線性地址轉換爲高速緩存的物理地址
指令預取部件IPU、指令譯碼器IDU、控制ROM和分支目標緩衝器BTB
- IPU每次預取兩條指令
- 複雜指令需要控制ROM的轉換(轉換爲微程序)
控制部件(控制流水線和FPU的正常運行)
- FPU按流水線機制執行指令(8級)
- 是U流水線的補充
- 浮點運算指令的前4級在U流水線中執行
- 常用浮點指令採用專門的硬件電路實現
- 支持32位、64位、80位精度
分段部件和分頁部件
- 片內二級存儲管理
- 分段將邏輯地址轉換爲物理地址
- 分頁將線性地址轉換爲物理地址
先進的體系結構
- 外部數據總線爲64位,數據傳輸量提高一倍
- 設置片內代碼cache和數據cache(速度高容量小的存儲器)提高取指令和讀/寫數據速度
- 兩條指令流水線並行執行
- 片內集成FPU(浮點運算器),是U流水線的補充,採用硬件實現浮點運算,對ADD,MUL,INC,DEC,PUSH等常用指令採用硬件實現
- 採用分段和分頁兩級存儲管理機制,存儲管理方便靈活
- 增強了信息傳輸準確性的檢測能力和機器異常事件的處理能力
RISC,CISC技術
計算機流水線一般是:指令流水線和運算流水線
RISC出現後,就出現了超流水線,超標量等體系結構
CISC
新設計的處理器,只需要增加較少的電晶體就可以執行同樣的指令集,也可以很快的編寫新的指令集程式。
優點:能夠有效縮短新指令的微代碼設計事件,允許設計師實現CISC體系機器的向上相容
缺點:指令集以及晶片的設計比上一代產品更復雜,不同的指令需要不同的時鐘週期完成,執行較慢的指令,將影響整臺機器的執行效率
RISC
解決途徑就是減少微處理器指令總數和減少指令操作的時鐘週期數
精簡指令集:包含了簡單的基本指令,透過簡單,基本的指令,就可以組成複雜指令。
相同長度的指令:每條指令的長度都是相同的,可以再一個單獨西操作裏完成。
單機器週期指令:大多數的指令都可以再一個機器週期裏完成,並且允許處理器在同一時間內執行一系列的指令
優點:在使用相同的晶片技術相同運行時鐘下,RISC系統的運行速度是CISC的2~ 4倍
缺點:要選用合適的編譯器;多任務環境下,會形成任務切換時衆多寄存器保護和恢復的需求,從而增加操作量
Pentium結合兩者之長——大多數指令採用簡化指令,但仍保留一部分複雜指令並用硬件實現
RISC對編譯器的要求高,CISC強調硬件的複雜性,CPU的實現更爲複雜
超標量流水線
超流水線結構:一個時鐘週期再細分偉多個子週期,每個子週期發出一條指令
超標量結構:再每個時鐘週期內發射多條指令,這要求微處理器片內集成兩條或以上的流水線
超標量超流水線結構:就是超流水線和超標量結合起來
標準狀態下:一個處理器含有一條指令流水線
Pentium微處理器的超標量執行機構允許兩條指令以並行的方式執行:一條叫U流水線,一條叫V流水線
這種雙流水線可以使兩條指令並行執行,使Pentium微處理器在每個時鐘週期內可以同時執行兩條指令
U流水線和V流水線均含有獨立的ALU,一系列寄存器,地址生成電路和連接數據Cache存取數據,稱爲Cache雙端接口
要求所有指令基本都是簡化指令,V流水線能接受U流水線的下一條指令
先進的分支預測技術
BTB可以進行動態分支預測
BTB含有一個1KB容量的Cache,BTB中存放三種信息。
以前執行過的分支指令的地址記錄BIA;該分支指令的跳轉目的地址BTA;分支歷史記錄,歷史狀態有四種情況:必定轉移,可能轉移,可能不轉移,必定不轉移
指令解碼完成後,CPU搜索BTB中的記錄,如果當前指令的地址與BTB某一條目中的BIA部分記錄相符,則成爲一次BTB命中。BTB命中後首先根據該條目分支歷史紀錄來判定分支是否跳轉,如果判定爲跳轉,那麼CPU按條目中BTA的地址紀錄取指令,否則依舊按編譯順序取指令。如果BTB未命中,.則同樣按編譯順序取指令。
與此同時,不論BTB是否命中,也不論預測結果如何,分支指令依然會被送到下級處理單元,直至執行完成,並將執行結果回饋給BTB。如果出現誤預測,則修改歷史記錄,並清空流水線裏的後續指令,並按正確的地址進行取指。
進一步提高性能:
雙向分支預測 芯片內部配置了兩個預取緩衝存儲器 一個按照BTB預測結果預取指令,並在預取指令時,在BTB中建立一個登記項
Pentium的指令流水線技術
指令流水線的組成
總線接口部件
- 控制數據總線和地址總線的信息傳輸
- 主要進行讀取指令和存取指令
指令預取部件
在總線空閒時從存儲器讀取指令放入指令預取隊列
指令譯碼部件
對指令譯碼,送入譯碼指令隊列
執行部件
控制兩條流水線的運行
總線接口部件、指令預取部件、指令譯碼部件和存儲器管理部件構成了80386CPU指令流水線
指令流水線的原理
非流水線方式
以此執行取指令,指令譯碼,執行三個操作
流水線
- Pentium的整數運算流水線最初由5級組成:
- 指令預取級PF、首級譯碼級D1、二次譯碼級D2(形成物理地址)、執行級EX、回寫級WB
- 級別越多,速度越快
- Pentium4的流水線達20級
- Pentium的浮點運算部件也採用流水線機制運行 8級組成:PF、D1、D2、EX、X1、X2、WF、ER
八個階段的浮點流水線:
- PF 預取
- D1 譯碼階段1
- D2 譯碼階段2
- EX 取操作數
- X1 浮點執行步驟1
- X2 浮點執行步驟2
- WT 寫浮點數
- ER 出錯報告
超標量流水線技術
標準狀態下:
- 一個處理器含有一條指令流水線
超標量:
- 一個處理器中又多條指令流水線
指令流水線的組成:
- 總線接口部件、指令預取部件、指令譯碼部件、執行部件
Pentium的一條指令流水線:
- 5級:指令預取級PF、首次譯碼級D1、D2、執行級EX、回寫級WB
Pentium中:
- U、V兩條流水線,U—所有整數運算,V—簡單整數運算和數據交換指令
- 每條流水線均含有獨立的ALU、一系列寄存器、地址生成電路、連接數據Cache的接口
超標量:
- 以並行方式在U、V兩條流水線上同時執行兩條指令
- 在U流水線中可以執行任何指令
- V流水線中只能執行和U流水線當前執行的指令符合配對規則的指令
配對規則:
- 兩條指令都是簡單指令(包括RISC指令)
- 互相沒有寄存器關聯性:兩條指令中的寄存器不是“讀後寫”或者“寫後寫”的關係(不能對同一寄存器多次操作)
- 一條指令不能同時既包含位移量又包含立即數
- 帶前綴的指令只能出現在U流水中
- 浮點運算指令不能和任何指令配對
過程:
- D1步驟,指令譯碼器中的兩個並行的譯碼部件對兩套指令譯碼,並用指令配對規則進行判斷
- 不能100%配對成功:V流水線不會全速運行
流水線受阻的情況:
- U:影響V
- V:不會影響U