[筆記] 平行計算 Ch2 part 6 Multiprocessor

本系列是 Parallel Programming in C with MPI and OpenMP 這本書的讀書心得!

延續之前幾篇,書中第二章內容筆記

Multiprocessor



書中定義:

Multiprocessor: multiple-CPU computer with a

shared memory

Same address on two different CPUs refers

to the same memory location

我的理解:

一台電腦裡面有很多CPU並且一起共享記憶體,所以這個架構下,如果這兩個CPU裡面的存放的記憶體位址是相同的,(Address一樣)

則他們所指的就是同一塊記憶體!

區別:Multiprocessor 與 Multicomputer

Multiprocessor : 不同CPU看同一個記憶體的address是一樣的!是multiprocessor

Multicomputer : 不同CPU看到相同記憶體的address不同,是multicomputer

Multiprocessor 跟上一篇介紹的 Processor Array 的區別是

Multiprocessor 改善了Processor Array的問題,使得可以支援多個使用者使用,也更有效率!

Centralized Multiprocessor



這是第一種的Multiprocessor !

直接把Uniprocessor做擴充!

直接把CPU掛到bus上!

不管哪一個CPU處理去連記憶體都一樣快!(有相同的Memory access time)

這種的稱為:

UMA : Uniform memory access multiprocessor

SMP : Symmetrical multiprocessor 對稱型的多處理機

架構圖:



架構:

直接再Bus上面掛CPU

記憶體跟I/O都沒增加!

優點:這樣每一個CPU去存取Memory的速度一樣

所以叫作Uniform memory access !

缺點:需要的頻寬很大才能,應付每一個CPU要求的記憶體存取量

Private Data 與 Shared Data



Private data : 只有一個處理器在使用它(那個data)

Shared data: 有兩科以上的處理器去使用它

Shared data會面臨到的問題:

Cache coherence 快取的一致性:

每個處理器都會掛一個Cache ,所以會把要用的data 先掛到Cache裏面

如此會發生一種問題:同一個data會在不同cache裏面有了不同狀態,資料就會不同步!

解決方法:Mutual exclusion 一個人正在使用了其他人就不能動那個data

Barrier 設一個屏障!

舉個例子:



如圖,如果變數 X (他的值是 7) 同時被 CPU A 與 CPU B 用到!

此時:



如果CPU B 把資料改了(改成 2) 並且把結果存回去位於Memory裡面的變數X 當中

此時CPU A 拿到的資料是cache裡面的X的值 7 資料就會是錯的!

解法:



解法,加一個cache control monitor!!

來控管結果

他會一直盯著看原始的data是否被改動了



當CPU B嘗試要寫入的時候,Cache control monitor 就會告訴大家把手邊現有的丟掉,

換成正確的data !

這種叫做:Write Invalidate Protocol

Distributed Multiprocessor



這是另一種Multiprocessor的架構

這種架構下,每一個CPU都會分到(Distributed)一塊自己主要在用的Memory (primary memory)

增加Memory頻寬,降低存取Memory的時間

如此的好處是擴充性高!增加CPU不會像UMA架構那樣,直接占用到Bus的頻寬,

而是自己就會分配到一塊主要用的記憶體空間,不會常常需要跟別人共用

這種架構稱為

NUMA : non-uniform memory access multiprocessor

如下圖:



先將連續空間的記憶體切成三塊

這個架構底下,CPU可以存取全部的記憶體

只是有一個離他比較"近"

CPU存取不同區域的記憶體位置速度會不一樣快

所以這樣的memory access 都會

non-uniform !!! (NUMA架構)

現今大型電腦用的架構

(個人電腦還是用 UMA的架構)

(下集待續...)

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking