主要内容
1.1 基本構成
1.2 微處理器的發展
1.3 指令的執行
1.4 中斷
1.5 存儲器的層次結構
1.6 高速緩存
1.7 直接記憶體存取
1.8 多處理器和多核計算機組織結構
作業系統是什麼?
作業系統是利用一個利用一個或多個處理器的硬體資源,為系統使用者提供一組服務,它還代表使用者管理輔助存儲器和輸入/輸出(I/O)裝置
計算機由處理器、存儲器和輸入/輸出部件組成,每類部件都有一個或多個子產品,這些部件以某種方式互聯,以實作計算機執行程式的主要功能。
計算機有4個主要的結構化部件:
- 處理器
- 記憶體
- 輸入/輸出子產品(I/O)
- 系統總線
處理器(Processor)
控制計算機的操作,執行資料處理功能。隻有一個處理器時,它通常指中央處理器(CPU)
內存(Main Memory)
- 存儲資料和程式
- 此類存儲器通常時易失性的,即當計算機關機或意外斷電時,記憶體的内容會丢失
相對于此的是磁盤存儲器,當計算機關機時,它的内容不會丢失
- 通常也稱為實存儲器( real memory)或主存儲器( primary memory )
I/O子產品(I/O Modules)
在計算機和外部環境之間移動資料
外部環境有各種外部裝置組成,包括輔助存儲器裝置(eg.硬碟)、通信裝置和終端
系統總線(System Bus)
在處理器、記憶體和輸入/輸出子產品間提供通信的設施
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TTyklck1mYoJ1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2ITO3ADOyAjM0EzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
上圖的俯視圖中:
處理器的一種功能是與存儲器交換資料,它通常使用兩個内部寄存器:
- 記憶體位址寄存器(MAR):用于确定下次讀寫的存儲器位址
- 記憶體緩沖寄存器(MBR):用于放入要寫入存儲器的資料或從存儲器中讀取的資料
同理
- 輸入/輸出位址寄存器(I/O AR或I/O位址寄存器):用于确定一個特定的輸入/輸出裝置
- 輸入/輸出緩沖寄存器(I/O BR或I/O緩沖寄存器):用于輸入/輸出子產品和處理器間交換資料
記憶體子產品有一組單元組成,這些單元由順序編号的位址定義,每個單元包含一個二進制數,它可解釋為一個指令或資料。
輸入/輸出子產品在外部裝置與處理器和存儲器之間傳送資料。輸入/輸出子產品包含記憶體緩沖區,用于臨時儲存資料,知道它們被發送出去。
微處理器可以在一個晶片上容納一個處理器核心,它的發明為台式計算機和便攜式計算機帶來了一場硬體革命。
多核微處理器
- 一個晶片上容納多個處理器核心,共享執行單元
- 每個核還可以配多個硬體線程——邏輯處理器
片上系統(SoC)
- 片上系統不僅指CPU和高速緩存在一個晶片上,也包括系統中的其它硬體,如DSP、GPU、I/O裝置(無線電和codecs)和記憶體
- 滿足便攜式裝置的需求
圖形處理單元GPU
- 利用單指令多資料技術,有效計算資料集
- 可以用于普通數值處理,如遊戲的實體仿真計算或大型電子表格的計算
數字信号處理器DSP
- 對流信号如音頻或視訊進行處理
- 用于嵌入式I/O裝置,如數據機
- 用于編碼/解碼語音和視訊(多媒體數字信号編碼器/解碼器,codecs)
- 提供對加密和安全技術的支援
處理器執行的程式是由一組儲存在存儲器中的指令組成,最簡單的指令處理包括兩步:
graph LR
A[處理器從存儲器中讀取一條指令] --> B[處理器執行每條指令]
單個指令所需要的處理成為一個指令周期,基本指令周期如下圖
- 每個指令開始時,處理器從存儲器中取一條指令,在典型的處理器中,程式計數器PC儲存下一次要取的指令位址
- 取到的指令放在處理器中的指令寄存器IR中。指令中包含确定處理器将要執行的操作的位,處理器解釋指令并執行對應的操作。這些動作大體可以分為4類
處理器-存儲器:資料可以從處理器傳送到存儲器,或從存儲器傳送到處理器
處理器-I/O:通過處理器和I/O子產品間的資料傳送,資料可以輸出到外部裝置,或從外部裝置向處理器輸入資料
資料處理:處理器可以執行很多與資料相關的算術操作或邏輯操作
控制:某些指令可以改變執行順序
1.4 中斷
中斷是一種機制,即允許其它子產品(I/O、存儲器)在處理器正常處理過程中打斷其工作。
中斷分類
産生原因 | |
---|---|
程式中斷 | 在某種條件下由指令執行的結果産生 |
時鐘中斷 | 有處理器内部的計時器産生,允許作業系統按一定的規律執行函數 |
I/O中斷 | 由I/O控制器産生,用于發信号通知一個作業系統的正常完成或各種錯誤條件 |
硬體失效中斷 | 有諸如掉電或存儲器奇偶校驗錯之類的故障産生 |
中斷是提高處理器效率的一種手段
- 利用中斷功能,處理器可以在I/O操作的執行過程中執行其他指令。
- 多數I/O裝置處理速度都要遠慢于處理器,未引入中斷機制前,處理器必須暫停等待該裝置,嚴重浪費處理器時間
中斷與指令周期
中斷處理
處理機制
硬體
在CPU初始化時設定中斷使能标志
- 依據内部或外部事件設定中斷标志
- 依據中斷向量調用相應中斷服務例程
軟體
- 現場儲存(CPU+編譯器)
- 中斷服務處理(服務例程)
- 清除中斷标記(服務例程)
- 現場恢複(CPU+編譯器)
簡單處理過程
因中斷導緻的存儲器和寄存器變化
多個斷點
正在處理一個中斷時,可以發生一個或多個中斷。比如:一個程式正在從一條通信線上接收資料,同時要求列印結果。有兩種方法:
- 正在處理一個中斷時,禁止再發生中斷
- 使用優先級政策
相應的,就産生了兩種處理方式:
順序中斷處理
當正在處理一個中斷時,禁止中斷(對任何新的中斷請求信号不予理睬,處理完這個再處理下一個)
缺點:沒有考慮相對優先級和時間限制的要求
嵌套中斷處理
定義中斷優先級,允許高優先級的中斷打斷低優先級的中斷處理程式的運作。
中斷嵌套
硬體中斷服務例程可被打斷
異常服務例程可被打斷
- 不同硬體中斷源可能在硬體中斷處理時出現
- 硬體中斷服務例程中需要臨時禁止中斷請求
- 中斷請求會保持到CPU做出響應
異常服務例程可嵌套
- 異常服務例程執行時可能出現硬體中斷
- 異常服務例程可能出現缺頁
中斷、異常和系統調用
系統調用(system call) | 應用程式主動向作業系統發出的服務請求 |
---|---|
異常(exception) | 非法指令或者其他原因導緻目前指令執行失敗(如:記憶體出錯)後的處理請求 |
中斷(hardware interrupt) | 來自硬體裝置的處理請求 |
系統調用
- 作業系統提供服務的程式設計接口
- 通常由進階語言編寫(C或者C++)
- 程式通路通常是通過高層次的API接口而不是直接進行系統調用
- 三種最常用的應用程式程式設計接口(API)
※ Win32 API 用于 Windows
※ POSIX API 用于 POSIX-based systems (包括UNIX,LINUX,Mac OS X的所有版本)
※ Java API 用于JAVA虛拟機(JVM)
系統調用的實作
- 每個系統調用對應一個系統調用号。
系統調用接口根據系統調用号來維護表的索引
- 系統調用接口調用核心态中的系統調用功能實作,并傳回系統調用的狀态和結果。
- 使用者不需要知道系統調用的實作。
需要設定調用參數和擷取傳回結果
作業系統接口的細節大部分都隐藏在應用程式程式設計接口後, 通過運作程式支援的庫來管理
函數調用與系統調用的不同處
系統調用:函數調用
- INT和IRET指令用于系統調用
- 系統調用時,實作堆棧切換和特權級的轉換
- CALL和RET指令用于正常調用
- 正常調用時沒有堆棧切換
中斷、異常和系統調用比較
源頭響應方式
- 中斷:外設
- 異常:應用程式意想不到的行為
- 系統調用:應用程式請求操作提供服務
- 中斷:異步
- 異常:同步
- 系統調用:異步或同步
- 中斷:持續,對使用者應用程式是透明的
- 異常:殺死或者重新執行意想不到的應用程式指令
- 系統調用:等待和持續
計算機存儲器的設計受到三個因素的限制
- 容量
- 速度
- 成本
但各項技術之間又往往存在着以下的關系
- 存期時間越快,每“位”價格越高
- 容量越大,每“位”價格越低
- 容量越大,存取速度越慢
對一個實際的計算機系統,存儲器的價格與計算機其他部件的價格相比應該是合理的,因而存儲器的設計往往需要在各項技術之間找到一個平衡點,但同時存儲器的速度必須能跟得上處理器的速度。解決這些問題的方法在于使用存儲器層次結構
自上而下
- 每個比特的價格遞減
- 容量遞增
- 存取時間遞增
- 處理器通路存儲器的頻率遞減
容量較大、價格較便宜的慢速存儲器,是容量較小、價格較貴的快速存儲器的後備。
存儲器層次結構能夠成功的關鍵是低層通路頻率遞減。
假定有一個二級存儲器(記憶體+高速緩存),記憶體存取時間為1us,高速緩存存取時間為0.1us,且高
速緩存的命中率為95%,則通路一個位元組的平均存取時間為:
0.95×0.1+0.05×(0.1+1)=0.15(us) ```
程式通路的局部性原理
在執行程式期間,處理器的指令訪存和資料訪存呈現“簇”狀(一組資料集合),例如:
- 循環:重複通路一小範圍的指令集合;
- 數組操作:存取一簇資料。
經過很長一段時間,程式通路的“簇” 會改變,但在較短時間内,處理器主要通路存儲器中固定的 “簇”。
如二級存儲結構,程式目前通路的“簇”暫時存放在第一級存儲器中,而第二級存儲器包含所有指令和資料。
時間局部性:被引用過一次的存儲器位置在最近的未來會被多次引用(通常在循環中)。
空間局部性:如果一個存儲器的位置被引用,那麼在最近的将來它附近的位置也會被引用
二級存儲器
也稱為輔助存儲器,為非易失性外部存儲器
用于存儲程式或資料檔案,其表現形式是程式員可以看到檔案和記錄,而不是單個位元組或字
高速緩存對作業系統不可見,但它與其他存儲管理硬體互相影響
1.6.1 動機
指令執行期間,處理器在取指時至少要通路一次記憶體,通常要多次通路記憶體用于取操作數或儲存結果。但是處理器和記憶體的速度不比對,處理器速度的提高一直快于記憶體通路速度的提高,即處理器執行指令的速度受限。為了解決這個問題,利用局部性原理,在處理器和記憶體之間提供一個容量小而速度快的存儲器,也就是高速緩存。
1.6.2 高速緩存原理
高速緩存的目的是使通路速度接近現有最快的存儲器(寄存器組),同時保持價格便宜的大存儲容量。
1.6.3 高速緩存設計
此内容這裡隻簡單的概括主要設計因素
在進行虛拟存儲器和磁盤高速緩沖設計時,還需要解決如下六類問題
- 高速緩存大小
- 塊大小
- 映射函數
- 置換算法
- 寫政策
- 高速緩存的級數
高速緩存大小:小容量高速緩存會對性能産生明顯的影響
塊大小:高速緩存與記憶體之間的資料
映射函數:決定資料塊占據哪個高速緩存單元
- 設計時要考慮兩方面的限制:
- 讀入一個塊時,另一個塊可能會被置換出高速緩存
- 映射函數越靈活,完成搜尋以确定某個指定塊是否位于高速緩存中的功能所需要的邏輯電路越複雜
執行I/O操作三種可能的技術:可程式設計I/O、中斷驅動I/O、 直接記憶體存取(DMA)
可程式設計I/O
I/O子產品執行請求的動作并設定I/O狀态寄存器中相應的位; 處理器執行I/O指令後,要定期檢查I/O的狀态,以确定I/O操作是否已經完成。
問題: 處理器在等待I/O操作完成期間需不斷詢問I/O子產品的狀态,嚴重降低了整個系統的性能。
中斷驅動I/O
處理器給I/O子產品發送I/O指令,然後繼續做其它有用的工作, 當I/O子產品準備好與處理器交換資料時,将打斷處理器的執行并請求服務,處理器執行資料傳送,然後恢複以前的執行過程
盡管比可程式設計I/O更有效,但處理器仍需要主動幹預在存儲器和I/O子產品之間的資料傳送,任何資料傳送都必須完全通過處理器
直接記憶體存取(DMA)
由系統總線中的一個獨立子產品完成,或者并入一個I/O子產品執行。
當處理器希望讀或寫一塊資料時,給DMA子產品産生一條指令,發送以下資訊:
- 是否請求一次讀或寫
- 所涉I/O裝置的位址
- 進行讀或寫的存儲器起始位置
- 需要讀或寫的字數
DMA子產品直接與存儲器互動,傳送整個資料塊,一次傳送一個字,無須處理器參與。傳送完成,DMA子產品發一個中斷信号給處理器。是以,隻在開始傳送和傳送結束時處理器才會參與
問題:在DMA傳送過程中,當處理器需要通路總線時,因存在競争,處理器将暫停一個總線周期,處理器的執行速度會變慢。盡管如此,仍比中斷驅動和可程式設計I/O更有效
對稱多處理器(SMP)
SMP是具有以下特點的獨立計算機系統:
- 具有兩個或兩個以上可比性能的處理器;
- 所有處理器共享記憶體和I/O裝置,并通過總線或其他内部連接配接方式互連,進而每個處理器的訪存時間大緻上相同;
- 所有處理器共享對I/O裝置的通路,通過相同的通道或者可以連接配接到相同裝置的不同通道;
-
所有處理器可以執行相同的功能;
整個系統由一個統一的作業系統控制,為多個處理器及其程式提供作業、程序、檔案和資料元素等各種級别的互動。
SMPd的突出特點是多處理器的存在對使用者是透明的。
優點:
- 性能:如果計算機要做的工作包 含可以并行完成的部分, 那麼它能提供更好的性能
- 可伸縮性:廠商可以提供一系列不同 價格和性能名額的産品, 其中産品性能可通過系統 中的處理器數量來配置
- 可用性:單個處理器的失效不會導 緻停機
- 漸增式成長:使用者可通過增加處理器的 數量來提高系統的性能
下圖為其組織結構
多核計算機
多核(muliticore)計算機是指将兩個或多個處 理器(核)組裝在同一塊晶片上。也稱為晶片多處理器。
每個核上通常會包含組成一個獨立處理器的所有零部件,如寄存器、流水線硬體、控制單元,以 及L1指令和資料高速緩存。現代多核晶片還可以包含L2高速緩存,甚至在某些晶片中包含L3高速緩存。
叢集
附:計算機體系結構發展的五個時代
參考教材
《作業系統——精髓與設計原理(第九版)》 [美] William Stallings 著 陳向群 陳渝 譯 電子工業出版社
課堂筆記,如有錯誤之處,敬請指正!
本文同時釋出在CSDN中,連結:
https://blog.csdn.net/tangkcc/article/details/114794501
https://blog.csdn.net/tangkcc/article/details/114829480