CPU架構及併發編程基礎(一)

1、intel cpu發展計劃tick-tock

Tick-Tock是Intel發展微處理器芯片設計製造業務的一種戰略模式。Intel指出,每一次處理器微架構的更新和每一次芯片製程的更新遵循「Tick-Tock」規律,名稱源於時鐘秒針行走時所發出的聲響。每一次「Tick」表明着一代微架構的處理器芯片製程的更新,而每一次「Tock」表明着在上一次「Tick」的芯片製程的基礎上,更新微處理器架構提高性能。通常一次「Tick-Tock」的週期爲兩年,「Tick」佔一年,「Tock」佔一年。架構

2、如今CPU微架構

 

3、cpu cache

一個例子,下面loop1和loop2 哪一個執行快app

int []arr = new int[64 * 1024 * 1024];
// Loop 1
for (int i = 0; i < arr.Length; i++) arr[i] *= 3;
// Loop 2
for (int i = 0; i < arr.Length; i += 16) arr[i] *= 3;

第二個循環只執行了第一個1/16的計算量,可是兩個循環在計算機上的耗時是差很少的70-80ms;形成這個問題的緣由在於cpu cache line是64bytes,每次從內存加載64Bytes數據到cache;

3.1 Nehalem(三級)結構              oop

 L1(每核獨有) 數據32k 指令32K分開性能

L2(每核獨有) 256K
L3(共享) 8Mspa





 

4、cache和內存的關聯方式(associativity)

一類是全關聯cache(full associative cache),一種是直接關聯cache(direct mapped cache),還有一種是N路關聯cache(N-ways associative cache)。設計

全關聯(每一個內存塊可映射到任意cache line),衝突最低,定位慢;直接關聯(每一個內存塊映射到固定的cache line),定位最快,衝突嚴重;N路關聯折中。3d

下圖是8路關聯 cache line定位,共64個set:code

其中:blog

index用於定位set內存

tag用於在set中定位cache line

offet在cache line中定位數據

 

 

 5、cache一致性協議MESI

 cache一致性問題描述:

 

 

步驟2 update時,根據一致性協議,會先發送Invalid消息到總線,失效core1的cache及RAM;core1讀取Bar時,發現Invalid狀態後,會向總線請求,core2會發送Bar=2給core1的cache。

 

 MESI提供cache一致性保證,表示cache對應的四種狀態及狀態遷移。

 Invalid:無有效數據

Shared:與memory有一致數據,讀

Modified:更新數據,與memory不一致

Excusive:與memory有一致數據,單點持有;

相關文章
相關標籤/搜索