這個章節選自Intel官方文檔,是由本人親自翻譯的。
這裡先註明一下,以下所碰到的英文單詞Cache,如果C是大寫的,即Cache,表示名詞——高速緩衝儲存空間;如果c是小寫,即cache,表示動詞——表示將資料快存到某個高速緩衝儲存空間中
Intel 64以及IA-32架構提供了管理及提升串連到同一系統匯流排的多個處理器的執行。這些包括:
1、為執行系統儲存空間上原子操作所需要的鎖匯流排與/或Cache一致性管理
2、序列化指令。這些指令僅應用於奔騰4、Intel致強、P6家族和奔騰處理器
3、一個坐落於處理器晶片上的進階可程式化插斷控制器(APIC)(見第10章“進階可程式化插斷控制器(APIC)”)。這個特徵由奔騰處理器所引入。
4、一個二級Cache(level 2,L2)。對於奔騰4、Intel至強和P6家族處理器,L2 Cache被包含在處理器包中,並且與處理器緊耦合。對於奔騰和Intel486處理器,提供引腳以支援外部L2 Cache。
5、一個三級Cache(level 3,L3)。對於Intel至強處理器,L3被包含在處理器包中,並且與處理器緊耦合。
6、Intel超執行緒技術。這個對Intel 64與IA-32架構的擴充允許一單個處理器核心並發執行兩個或更多的線程。(見8.5部分,“Intel Hyper-Threading Technology and Intel Multi- Core Technology”)。
這些機制尤其在對稱式多處理器(SMP)系統中特別有用。然後,它們也可以用在一個Intel 64或IA-32處理器與一個特殊目的處理器(諸如,一個通訊、圖形或視頻處理器)共用系統匯流排的場合。
這些多處理機制具有以下特徵:
1、維護系統儲存空間一致性——當兩個或更多處理器試圖同時訪問系統儲存空間中的同一個地址時,一些通訊機制以及儲存空間訪問協議必須對促進資料一致性可用,並且在某些情況下允許一個處理器臨時性地鎖一個儲存空間位置。
2、維護Cache一致性——當一個處理器訪問被cache在另一個處理器上的資料時,它必須不能接受到不正確的資料(譯者註:也就是說,當一個處理器對一個地址單元進行讀操作時,而另一個處理器之前對這個地址單元修改過,但卻是寫到Cache中的。此時必須要有個機制能確保前一個處理器能讀到更新後的資料,而不是“髒”資料。)。如果一個處理器修改了資料,那麼訪問該資料的所有其它處理器必須能接受到已修改的資料。
3、允許可預測的對儲存空間寫的次序——在某些情況下,儲存空間寫操作以所編程的完全相同的次序對外部觀察到(譯者註:這個就是要用Memory Fence機制來實現)。
4、在一組處理器之間分發中斷處理——當若干個處理器在一個系統中並行運行時,有一個中心化機制來接收中斷並把它們分發到可用的處理器進行服務是很有用的。
5、通過開拓同時代的作業系統和應用的多線程和多進程的天性來提升系統效能。
Intel 64和IA-32處理器的Cache機制和Cache一致性在第11章中討論。APIC架構在第10章中描述。匯流排和鎖儲存空間、序列化指令、儲存空間次序和Intel超執行緒技術在本章的以下部分進行討論。
8.1 加鎖的原子操作
8.2 儲存空間次序
8.3 序列化指令
8.4 多處理器(MP)初始化
8.6 探測硬體多線程支援和拓撲
8.7 Intel超執行緒技術架構
8.8 多核架構
8.9 對硬體多線程效能處理器的編程考慮
8.10 空閑和阻塞情況的管理