【高性能計算】【2】並行硬件和並行軟件

最初計算機都是一次只能運行一個程序。
馮諾依曼架構:其主要特點就是內存和CPU的分離,但是這也造成了馮諾依曼瓶頸:CPU執行指令比從內存中讀取指令要快得多
在這裏插入圖片描述

main memory是一堆地址的集合
在這裏插入圖片描述

sRAM主要使用於作爲寄存器或者作爲cache,價格比較昂貴。
在這裏插入圖片描述

進程

操作系統是控制軟件的基礎軟件
在這裏插入圖片描述
一些操作系統分配給程序的資源描述符

多任務

會讓人產生一種錯覺,單核處理器也可以同時運行多個程序

每個進程排隊等待被執行,時間到了就需要停止
在這裏插入圖片描述

線程

把程序分割成多個任務,一個任務就是一個線程。當一個線程在訪問內存時阻塞了,同一個程序的其他進程還可以繼續執行。
在這裏插入圖片描述
在這裏插入圖片描述
線程可以看做是一種輕量級的進程

馮諾依曼架構的改進

緩存結構

緩存是CPU 的一個組成部分,之間通信將比和內存快得多

在這裏插入圖片描述

現代計算機的體系架構是一種層式架構,與CPU數據交互最快的是寄存器和緩存,接下來是主存。

在這裏插入圖片描述

在這裏插入圖片描述
內存行或者內存塊指的是內存中的一整塊數據,把它放在緩存中。

低級別緩存可以看做是緩存的緩存,高級別緩存的組成部分中中有低級別緩存

緩存命中

順利找到相應變量
在這裏插入圖片描述

緩存缺失

在緩存中找不到對應變量,只能再從內存中讀取,會放慢時間。
在這裏插入圖片描述

緩存與主存的問題

數據不一致

當CPU向緩存中寫入數據時,緩存中數據可能和主存有所不同。
在這裏插入圖片描述

其中,寫回機制的效率較高,使用較爲廣泛。

cache和主存之間的映射機制

從內存中回去的緩存行怎樣在緩存中存貯

在這裏插入圖片描述

具體例子

在這裏插入圖片描述

最近最少使用原則

全相聯和n路組相連從內存中申請內存行在緩存中的存放位置不是唯一的,如果有很多內存行都可以映射至緩存上的同一位置,如何確定哪一個內存行最終被保留。

因此,在最近時間內,最少被使用的緩存行將被替換,最近被訪問多的可以被保留。

在這裏插入圖片描述

緩存和程序

在這裏插入圖片描述

以第一個程序來看,矩陣A的一行剛好是一個緩存行,所以只會在查找A[ 0 ] [ 0 ]的時候發生一次cache miss,在訪問同一行的其他元素時,它們已經被放在緩存中了,類似的情況也發生在其他行中,也就是說,只會發生四次cache miss。
然而第二個程序按照列來讀取數據,這樣的話,如果緩存比較小隻能裝兩個緩存行,就需要發生16次緩存缺失,導致運行時間可能會差別很大。

實際上,矩陣規模可能會大很多,cache的大小也會大一些。

虛擬存儲技術

在這裏插入圖片描述

虛存是將主存看做緩存來使用,虛存和主存相當於形成了主存和緩存的關係

在這裏插入圖片描述

交換空間中存儲不活躍的數據,比緩存行的大小大得多。

在這裏插入圖片描述

有可能導致虛存中的頁指向主存中的同一塊地址。

  • 在程序運行時,需要轉換虛擬地址到實際地址。頁表(page table)用於進行這樣一種翻譯映射操作

轉譯後備緩衝區

爲了減少加載頁表的時間,CPU中有一個專門的轉譯後備緩衝區用於存放頁表
在這裏插入圖片描述

指令集並行

在這裏插入圖片描述

流水線

在這裏插入圖片描述
在這裏插入圖片描述

多發射

算術邏輯單元ALU中部分相同功能單元是不止一個的,可以同時執行不同任務。
在這裏插入圖片描述

在這裏插入圖片描述

靜態多發射

動態多發射(超標量處理器)

多發射預測

爲了充分利用多任務問題,系統必須認識到那些任務可以同時執行。

在這裏插入圖片描述

如果出現錯誤,還存在一種退回機制。

硬件多線程

比如計算斐波那契數列,就不能進行同時執行。
在這裏插入圖片描述

細粒度的

在執行一個指令之後,編譯器都允許切換至別的線程指令來執行
在這裏插入圖片描述

粗粒度的

只有在讀內存或者硬盤等耗時過大的指令時,可以切換。

在這裏插入圖片描述

同步多線程(細粒度的一種變種)

允許充分利用超標量處理器的潛能

在這裏插入圖片描述

一個物理核=兩個邏輯核,因爲是多發射的,同步多線程的技術。每個核中有兩個線程

並行硬件

在這裏插入圖片描述

SIMD

對多個數據執行相同的指令來實現並行計算,適合數據並行的任務方式。

如果ALU和數組長度相等,那麼每個ALU將執行相同的操作。
在這裏插入圖片描述

如果數量不同呢?在這裏插入圖片描述

缺陷

在這裏插入圖片描述

向量處理器

在這裏插入圖片描述

在這裏插入圖片描述

vector_length:4-128
在這裏插入圖片描述

優點

在這裏插入圖片描述

缺點

在這裏插入圖片描述

顯卡上圖形處理單元GPU

也借鑑了了SIMD的架構,衍生出不同於CPU的結構

在這裏插入圖片描述

一個SIMD內部,都在執行相同的指令,但是在GPU中 不是這樣的

MIMD

在這裏插入圖片描述

時間上是不同步的。

共享內存系統和

分佈式內存系統

課堂作業

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章