- 1. 多處理機簡介
- 2. 多處理機硬體
- 2.1. UMA(Uniform Memory Access)
- 2.1.1. 基于總線的 UMA 多處理機體系結構
- 2.1.2. 基于交叉開關的 UMA 多處理機
- 2.1.3. 基于多級交換的 UMA 多處理機
- 2.2. NUMA(nonuniform memory access)
- 2.3. 多核晶片
- 2.1. UMA(Uniform Memory Access)
- 3. 多處理機作業系統類型
- 3.1. 每個 CPU 都有自己的作業系統
- 3.2. 主從多處理機
- 3.3. 對稱多處理機 (Symmetric MultiProcessor, SMP)
- 4. 多處理機排程
- 4.1. 分時
- 4.2. 空間共享
- 4.3. 群排程 (Gang Scheduling)
- 4.3.1. 基本思想
- 4.3.2. 排程方法
- 5. 參考資料
1. 多處理機簡介
-
共享存儲器多處理機
每個 cpu 都可同樣通路
-
消息傳遞多計算機
通過某種高速網際網路絡連接配接在一起, 每個存儲器局部對應一個 cpu, 且隻能被該 cpu 通路, 這些 cpu 通過網際網路絡發送多字消息通信
易于建構, 程式設計難
-
廣域分布式系統
通過廣域網連接配接, 如 Internet,
多處理機是共享存儲器多處理機的簡稱, 多個 cpu 共享一個公用的 RAM.
2. 多處理機硬體
是以多處理機都具有每個 cpu 可通路全部存儲器的性質, 而有些多處理機有一些特性,
2.1. UMA(Uniform Memory Access)
讀出每個存儲器字的速度一樣快
2.1.1. 基于總線的 UMA 多處理機體系結構
2.1.2. 基于交叉開關的 UMA 多處理機
2.1.3. 基于多級交換的 UMA 多處理機
此開關檢查 module 域來決定連入哪個存儲器, 即連接配接 x 還是 y
例如
Omega網絡
n 個 cpu / 存儲器, 有 log2n 級, 每級隻需 n/2 個開關,
比較:
網絡 | 開關數 | 是否阻塞 |
---|---|---|
交叉開關 | n2 | 不阻塞 |
Omega 網絡 | n/2*log2n | 阻塞 |
2.2. NUMA(nonuniform memory access)
特性:
* 具有對所有 cpu 都可見的單個位址空間
* 通過 LOAD 和 STORE 指令來通路運程存儲器
* 通路遠端存儲器慢于通路本地存儲器
基于檔案的多處理機
基本思想: 維護一個資料庫來記錄告訴緩存行的位置及其狀态. 當一個高速緩存行被引用時, 就查詢資料庫找出高速緩存行的位置以及它的 dirty 記錄,(是否被修改過),
2.3. 多核晶片
每個核就是一個完整的 CPU , 可以共享記憶體, 但是 cache 不一定共享. 時常被成為 片級多處理機
(Chip-level MultiProcessors, CMP)
.
與基于總線的多處理機和使用交換網絡的多處理機的差别不大:
* 基于總線的 每個 CPU 都有自己的 cache
* CMP 容錯性低: 連接配接緊密, 一個共享子產品的失效可能導緻其他 CPU 出錯
片上系統 (system on a chip)
晶片包含多個核, 但是同時還包含若幹個專業核, 比如視訊與音頻解碼器, 加密晶片, 網絡接口等
3. 多處理機作業系統類型
3.1. 每個 CPU 都有自己的作業系統
優點: 共享作業系統代碼
注意
* 在一個程序進行系統調用時, 是在本機的 CPU 上被捕獲并處理的, 并使用作業系統表中的資料結構
* 因為每個作業系統都有自己的表, 那麼也有自己的程序集合, 通過自身排程這些程序, 而沒有程序共享. 如果一個使用者登陸到 CPU1 , 那麼他的程序全在 CPU1 上, 也就是可能導緻其他 CPU 空載
* 沒有頁面共享: 可能出現 CPU2 不斷進行頁面替換而 CPU1 卻有多餘的頁面
* cache 不一緻
3.2. 主從多處理機
問題
如果有很多 CPU , 主 CPU 會成為瓶頸, 速度慢
3.3. 對稱多處理機 (Symmetric MultiProcessor, SMP)
消除了主從處理機的不對稱性, 在存儲器中有作業系統的一個副本, 但任何 CPU 都可以運作它.
這個模型動态平衡程序和存儲器, 因為它隻有一套作業系統資料表.
它存在的問題: 當兩個或多個 CPU 同時運作作業系統代碼時, 如請求同一個空閑存儲器頁面, 這時應該使用互斥信号量 (鎖), 使整個系統成為一大臨界區. 這樣在任一時刻隻有一個 CPU 可運作作業系統
4. 多處理機排程
排程對象: 單程序還是多程序, 線程是核心程序還是使用者線程.
* 使用者線程: 對核心不可見, 那麼排程單個程序,.
* 核心線程: 排程單元是線程,
4.1. 分時
先讨論排程獨立線程的情況, 如果有 CPU 空閑則選擇優先級隊列中的最優先線程到此 CPU
缺點:
* 随着 CPU 數量增加引起對排程資料結構的潛在競争
* 當線程在 I/O 阻塞時引起上下文切換的開銷 (overhead)
親和排程: 基本思想, 盡量使一個線程在它前一次運作過的 CPU 上運作,
4.2. 空間共享
當線程之間以某種方式彼此相關時, 可以使用此方法. 假設一組相關的線程是一次性建立的, 建立時, 檢查是否有足夠的空閑 CPU, 有 則 各自獲得專用的 CPU, 否則等待,
優點: 消除了多道程式設計, 進而消除上下文切換開銷
缺點: 當 CPU 被阻塞或根本無事可做時時間被浪費了
4.3. 群排程 (Gang Scheduling)
4.3.1. 基本思想
讓一個程序的所有線程一起運作, 這樣互相通信更友善, 在一個時間片内可以發送和接收大量的消息.
4.3.2. 排程方法
- 把一組相關線程作為一個機關, 即一個群, 一起排程
- 一個群中的所有成員在不同的分時 CPU 上同時運作
- 群中的所有成員共同開始和結束其時間片
5. 參考資料
- 現代作業系統
- Multi-Processor Systems | UCLA