先給一張處理器的概念圖,未必很嚴謹,而且各種處理器的實現方式也不盡相同,但基本的原理其實都在圖里可以體現
控制匯流排cb(control bus)針腳,用於傳輸各種控制訊號,常見的有
根據馮諾依曼的模型,計算機的基本組成是
在實現的時候通常把cu和alu整合在一起構成pu(processing unit),pu也被稱為「處理器」(processo)
cu是控制單元,作用是接受指令並進行解碼,生成微程式來控制cpu內的各個部件那個需要工作那個不需要工作,來完成指令的執行;其實就是乙個能讀懂指令並可以指揮處理器的各個部件來完成這條指令的指揮重心。基本組成如下
暫存器register一般分為
然而暫存器只能儲存很少量的資料用來輔助處理器的運算,真正的資料都存在主存裡,主存對應馮諾依曼模型中的儲存器,所以處理器與主存之間的資料交換是十分頻繁的。
注意mar和mdr是「使用者(彙編程式設計師)透明的暫存器」,也就是沒有一條指令可以讀寫mar。實際上你寫一條從主訪問資料的指令,就需要主存位址作為運算元,而這條指令的執行就需要把主存的位址寫入mar中才能完成訪存操作。這都隱藏在指令中而不需要我們去操心。
基本功能
以上五步不一定每條指令都需要執行,比如乙個簡單的 mov ax,bx 只是將 bx暫存器 的資料送入 ax 而並不需要運算,也就不需要處理運算元
綜合視角
什麼是指令
這樣,指令集其實就是這台計算機的邏輯表示,簡單說就是指令集指明了這台計算機所有的功能
指令功能決定了計算機的可程式設計性
指令包含的操作,直接決定(體現)了alu的規模與組成
指令的基本格式與功能
運算元就是這條指令所需要處理的資料,可以沒有,也可以多個,這要看指令集是如何設計的
操作碼的長度
位址制
定址方式
指令的長度
定址方式
指令定址
資料定址就是說,如何去獲取指令所需要的資料,因為如果資料是存在主存那麼就需要主存的位址,如果是存在暫存器那就需要指明是那個暫存器
變址定址:通常對於陣列、向量等資料結構我們習慣通過下標來訪問,就像在c語言中陣列名表示陣列的首位址一樣,我們在指令中就把陣列名顯式地給出,把下標存到乙個特定的暫存器——變址暫存器中,指令執行的時候就把陣列名所代表的陣列首位址和變址暫存器的下標相加得到實體地址來獲取資料。只需要改變變址暫存器的內容就可以輕易的遍歷陣列或實現隨機訪問
指令集的設計
綜合分析計算機的功能,指令集的設計一般要實現一下五大部分的功能
邏輯 移位
注意各種運算的結果會對標誌暫存器的標誌位產生影響,如溢位標誌of會在運算結果有溢位的情況下被置為1否則置為0,進製標誌cf會在運算結果有進製產生的情況下置為1否則置為0,等等其他標誌位,
通過這些標誌位可以方便的判斷運算的情況,比如零標誌位zf通常用於比較兩個數是否相等,即讓兩數相減看結果是否為零,也就是看zf是否為1
資料傳送指令,簡稱數傳指令(有過之而無不及的難聽)
控制轉移指令
子程式呼叫指令 「call 子程式名」
輸入/輸出指令
處理器控制及除錯指令
此外還有空操作nop,等待指令wait
cisc與risc
精簡指令集計算機risc(reduced instruction set computer)
進一步區別
流水線原理
流水線的方式實際上也就實現了指令的重疊
也就是說,流水線的效率與指令的細分相關
乙個很顯然的優化策略就是,進一步細分每條指令
流水線的原理除了可以應用在指令上,也可以應用在運算上
流水線的分類
功能分類
連線方式分類 其他
效能評價
排空時間 td:最後乙個任務從進入(完成第一部分才叫進入)到完成的時間,經過 td 後流水線才能排空,進入空閒狀態
總時間t:就是總時間
加速比sp:序列處理的話所花費的時間與流水化處理所花費時間的比率,意味著我們的流水線技術可以提高的效率
吞吐量tp:單位時間流水線完成的任務數量
最大吞吐率tp_max:即在完全流水化的狀態下的吞吐率,此時每隔∆ t就有乙個任務完成
效率e:指流水線的裝置利用率,從時空圖上看。即在總時間t內,n個任務所占用的區域與總的區域的比值。
指令間的相關
結構相關:即對硬體資源的需求衝突,可能是競爭同乙個資源,也可能是資源不夠分配。主要表現是訪問主存,以取指的訪存與其他訪存衝突為例
處理器內設「先行指令預取緩衝佇列」
定長指令集、指令和資料在儲存器中「對齊」存放
load/store 風格
資料相關:後一條指令需要用到前一條指令的結果,那麼在流水線中就有可能產生無法重疊執行的情況,即我後一條指令需要取運算元,但因為前一條指令還沒有執行完,結果還沒算出來,這就十分尷尬了
控制相關:當流水線遇到分支指令的時候,,,,,,分支的結果是要選擇下一條要執行那條指令,,,,,,既然分支結果還沒出來,那麼我怎麼知道並行執行的下一條指令是不是正確的指令呢??尷尬尷尬
再就是硬體加速,讓分支指令的結果可以盡早生成
何為指令的並行
指令相關的進一步分析
名相關
控制相關
如此一來,在考慮指令並行的時候,處理器的cpi(平均指令週期數)就等於理想的cpi加上各種相關導致的停頓cp
i流水線
=cpi
理想+c
pi控制
相關+c
pi結構
相關+c
pi先寫
後讀(數
據相關)
+cpi
先讀後寫
+cpi
寫後寫
並行相關技術
根據公式,提高每一項都可以提高最終的cpi流水線
迴圈展開
暫存器換名
指令的動態排程
前瞻 多指令流出
指令的動態排程演算法 原理
所有指令在「解碼」階段都屬順序的執行的,而在「取運算元」則允許亂序執行
基本的演算法有
本質都是通過記錄的各個部件的資訊、指令執行的狀態等資訊,與部件之間通訊,來控制指令執行的每一步
計算機組成與設計(八) 單週期處理器
處理器的設計步驟 分析指令系統,得出對資料通路的需求 為資料通路選擇合適的元件 連線元件,建立資料通路 分析每條指令的實現,以確定控制訊號 整合控制訊號,完成完整的資料通路 具體設計步驟 mips的所有指令是非常多的,我們只實現其簡化版,包含如下6種 需求分析,需要存放指令位址的32位暫存器 pc ...
計算機組成與設計3 處理器概述
指令在執行過程中,資料所經過的路徑 包括路徑中的部件 是指令的執行部件。是由操作元件 組合邏輯單元 和儲存單元 狀態元件 通過匯流排方式或分散方式連線而成的進行資料儲存 處理 傳送的路徑。1.2.1組合邏輯元件 加法器 多路選擇器 alu 解碼器 解碼器的輸出是控制資訊 等四部分組成 組合邏輯元件的...
計算機組成第六周 流水線處理器
流水線的特點 超級流水線 流水線的級數越多,流水線暫存器的延遲所佔比例越高,所以不是級數越多越好 超標量流水線 標量流水線和超標量流水線 如果指令和資料放在同乙個儲存器中,則不能同時讀儲存器 解決方案 流水線停頓,產生空泡 指令和資料放在不同的儲存器中 如果讀暫存器和寫暫存器同時發生 解決方案 一條...