天天看點

多核程式設計入門

本文是多核程式設計的入門資料彙總,來源主要是國外國内的一些網站及自己使用過程中一些記錄,寫作目的主要是内部分享用(<b>@nsfocus</b>)。在多核使用過程中,得益于很多網絡資源,是以也把自己整理的産品無關的東西共享出來,希望對多核感興趣的同學可以入門用。

在intel e5 平台上搞了幾個月多核程式設計,中間收集并學習了一些多核程式設計的知識,整理了一份pdf格式的 ,歡迎大家一起探讨。

目前遇到比較難的問題是,自己做demo的時候使用了nbds.tar.gz裡一種無鎖哈希的實作,但是最後發現它是沒有删除的,無鎖的删除真的那麼難嗎?有誰手上有比較穩定而且高效(必須針對緩存優化過)而且完整(lookup,insert,delete)的無鎖哈希表實作嗎?希望大家就這個問題給出一些建議。

一. 并發與并行的差別? ……………………………………………………………………………………………………………11.1 串行 ………………………………………………………………………………………………………………………………… 11.2 并發 ………………………………………………………………………………………………………………………………… 11.3 并行 ………………………………………………………………………………………………………………………………… 1

1.4 多核程式設計的難點 ………………………………………………………………………………………………………………. 2

二. 多核體系架構 ……………………………………………………………………………………………………………………… 3

2.1 多核處理器定義 ………………………………………………………………………………………………………………. 3

2.2 多核發展趨勢 ………………………………………………………………………………………………………………….. 3

2.3 一個多核處理器架構例子 ………………………………………………………………………………………………… 5

2.4 linux 線程核綁定 ……………………………………………………………………………………………………………… 6

2.4.1 核親和性綁定 …………………………………………………………………………………………………………… 6

2.4.2 資源控制 cgroup ………………………………………………………………………………………………………. 8

三. 記憶體模型 …………………………………………………………………………………………………………………………….. 8

3.1 操作原子性 ……………………………………………………………………………………………………………………… 9

3.1.1 原子性的3種保證機制 …………………………………………………………………………………………….. 9

3.1.2 硬體原子操作 …………………………………………………………………………………………………………… 9

3.1.3 總線鎖-原子操作原語 ……………………………………………………………………………………………… 12

3.2 緩存一緻性 ……………………………………………………………………………………………………………………. 16

3.2.1 定義 ……………………………………………………………………………………………………………………….. 16

3.2.2 cc協定 ……………………………………………………………………………………………………………………. 17

3.2.3 僞共享 ……………………………………………………………………………………………………………………. 21

3.3 順序一緻性 ……………………………………………………………………………………………………………………. 24

3.3.1 定義 ……………………………………………………………………………………………………………………….. 24

3.3.2 幾種順序限制 …………………………………………………………………………………………………………. 25

3.3.3 亂序執行和記憶體屏障 ………………………………………………………………………………………………. 28

四. 并發級别 …………………………………………………………………………………………………………………………… 31

4.1 wait-freedom 無等待并發 ……………………………………………………………………………………………….. 32

4.2 lock-freedom 無鎖并發 ……………………………………………………………………………………………………. 32

4.3 obstruction-freedom 無阻塞并發 …………………………………………………………………………………….. 33

4.4 blocking algoithms 阻塞并發 ……………………………………………………………………………………………. 33

五. 鎖 …………………………………………………………………………………………………………………………………….. 34

5.1 信号量 …………………………………………………………………………………………………………………………… 34

5.2 自旋鎖 …………………………………………………………………………………………………………………………… 35

5.3 讀寫鎖 …………………………………………………………………………………………………………………………… 35

5.4 順序鎖 …………………………………………………………………………………………………………………………… 37

5.5 rcu 

繼續閱讀