超線程技術是Intel引入的一種同時多線程技術的形式。這些資源包括執行引擎,緩存和系統總線接口。資源共享使兩個邏輯處理器可以更有效地相互協作,并且使停滯的邏輯處理器可以從另一個邏輯處理器借用資源。在具有超線程功能的英特爾CPU中,一個CPU內核(帶有多個ALU)可以在同一時鐘執行來自2個線程的指令。兩個線程共享:存儲緩沖區,緩存L1 / L2和系統總線。但是,如果兩個線程在一個Core上同時執行,線程1存儲原子值,線程2加載該值,那么該交換將使用什么:共享存儲緩沖區,共享緩存L1 / L2或通常的緩存L3?如果兩個線程來自同一進程(相同的虛擬地址空間),并且來自兩個不同進程(不同的虛擬地址空間),將會發生什么?Sandy Bridge Intel CPU-緩存L1:32 KB-緩存大小64 B-緩存行大小512行(512 = 32 KB / 64 B)8路64-路數集(64 = 512行/ 8路)虛擬地址(索引)的6位[11:6]-定義當前設置的編號(這是標簽)4 K-每個相同(虛擬地址/ 4 K)爭奪同一組(32 KB / 8路)低12位-對確定當前設置的數字有效4 KB-標準頁面大小低12位-每個地址的虛擬和物理地址相同
3 回答

慕碼人2483693
TA貢獻1860條經驗 獲得超9個贊
在相同或不同地址空間的兩種情況下都是如此,因為頁面大小為4096 B(12位),即虛擬地址和物理地址的低12位相同,并且Intel x86_64 L1被“虛擬索引,物理標記”,并且8種方式和標簽范圍為0-512(8 * 64)的64B高速緩存行大小,即用于物理標記的是低9位(512),正如我們剛剛決定的-虛擬地址和物理地址相同,且標記為高速緩存行對于整個一級緩存是唯一的。

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
現在,我對CPU架構有了更多的了解,我只是重新編寫了很多這個答案(特別是,存儲在退役時不會提交給L1 ,而是在存儲緩沖區到達時才提交給L1 。) ,我們可以排除超線程之間的存儲轉發,因為存儲緩沖區是靜態分區的。另外,我認為我做得更好,解釋了為什么可以共享L1d,即VIPT高速緩存的特殊情況,即頁面偏移量以下的索引位(設置選擇,而不是選路,注釋中的另一個錯誤),因此它像被物理索引一樣工作。
添加回答
舉報
0/150
提交
取消