這個章節選自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」)。
這些多處理機制具有以下特徵:
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 空閒和阻塞情況的管理
linux系統程式設計讀書筆記 第八章
我草.我居然也有部落格了.為了更好的學習,我要用部落格來記錄下我看過的東西。首先看的是linux系統程式設計的記憶體管理,頁面排程是非常normal的知識了,寫時複製還比較巧妙,儲存區域說資料段是堆?真的假的,網上說的是已初始化的全域性變數啊。估計是因為堆是資料段的一部分吧。另外乙個挺有用的點是,c...
第八章 指標 第八章 指標
1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...
C 程式設計第八章
靜態聯編所支援的多型性稱為編譯時的多型性。動態聯編所支援的多型性稱為執行時的多型性。1 靜態聯編中的賦值相容性及名字支配規律類的物件和呼叫的函式一一對應,編譯時即可確定呼叫關係,從而產生編譯時的多型性。include using namespace std const double pi 3.141...