日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈Intel QPI的MESIF协议和Home,Source Snoop

發布時間:2023/12/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈Intel QPI的MESIF协议和Home,Source Snoop 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Intel的Nehalem一出,CPU江湖頓時失色。其中北橋FSB被滅,CSI/QPI興起是一個重要因素。也正式宣告了Parallel Bus在處理器領域的王牌地位退出,和Serial Bus或者Point2Point互聯的統治地位的誕生。。。:走的快(Parallel Bus)不如走的遠(Serial Bus)。

QPI的互聯,其中Cache的一致性是一個關鍵。

其協議是什么?MESIF!與經典的MESI相比,多了一個F word。當然,不是bad words。這里的F是Forwarding的意思。









在上面的兩個圖中,左邊的是MESIF;右邊的是經典的MESI。MESIF的例子中,我們可以看見,F狀態的存在其實就是為了與S狀態區別開來。系統中只有一個F,類比與:在一個家庭中,婆婆與老婆。如果是雙重領導,事情全mess up。必須是一個領導F。找數據的時候,F給你,而非S(系統中有許多S)。讀者一定要注意,F狀態的引入是為了性能,而非狀態機的完備性。沒有F,S就可以搞定一切[如上右圖]。系統中,對任何一個數據的Cacheline,有而且只有一個F。每次一個新人上臺,需要數據,F就移交。F變成S。最新的數據變成F。這也是最佳利用Cache算法中的所謂Temporal Locality和Spatial Locality的考量:年輕人一定是會持續工作,時間長的。。。;年老的數據一定不是常用的;持續力不夠的。。。另外,讀者從上面兩圖中可以看出,MESI會造成QPI的鏈路上產生沒必要的Snooping Response: 系統里多個婆婆(擁有相同數據備份的node)在非常殷勤的告訴一個申請者:阿拉有數據,and here you go。。。

在Nehalem互聯中,QPI可以有Source Snoop或者Home Snoop。通常而言,小規模socket互聯用Source Snoop;大規模互聯用Home Snoop。









Home Snoop和Source Snoop的本質區別與Snooping時候MESFI狀態機的F狀態的目的是類似的:在能解決問題的同時,盡量減少互聯上的Transaction。例如,Home Snoop的意思就是:老大說了算,負責協調;別人都別吭聲。Soure Snoop的意思就是:各個小山頭都可以摻和,立功表態。說到這里,就理解了,如果是一個大規模的Nehalem機群互聯,用Home Snoop好;如果是1-8個Nehalem互聯,估計Source Snoop好一些。道理很簡單:如果是一個startup,問一個事,吆喝一聲,知道的都回答你,挺好的;如果是一個10萬人的公司,發個群發email給10萬個人,問一個事情,估計罵你的人比回答你答案的人都多;你最好是問主管(Home)。。。

在上圖中,哪個是Home Snoop?哪個是Source Snoop?顯然,右圖上Home Snoop;左圖是Source Snoop。Source Snoop一定是而且只是2 Hop就能搞定數據,while Home Snoop需要在大本營到一下手,需要3 Hop。

MESIF,Intel申請了專利。其專利為:
Forward state for use in cache coherency in a multiprocessor system

該專利是2002年12月9日申請的。2005年7月26日批的。

M-blah-blah-I有許多變種。許多讀者估計要么會迷糊,要么靜不下心來。如果是前者,抓住一個要素:Write Invalidate。

我曾經在若干年前用大白話解釋過Write Invalidate協議。學術的東西其實本質很簡單。要理解須先要忘記學術,返璞歸真。。。

下圖是一個MESI的簡單狀態機。在理解Cache一致性協議狀態機的時候,最容易犯迷糊的是把本CPU的動作與Snooping的動作混淆。現在簡單忽悠一下這里面的M狀態。從M上面圍繞的動作,我們可以知道:藍色的是自已玩自己的動作(發生在本CPU內部的);紅色的是監聽到友商(別的CPU,或者其他邏輯,反正就是人在江湖,不得不在一起混的那些node,station等等)的動作。M的意思是:我現在是獨家擁有,而且我很牛,還獨家擁有修改過的數據。我現在自己獨樂樂(Local Read;Local Write);顯然,沒人能拿你怎么樣。你多牛呀,你接著當M!……但是,突然在總線(FSB)或者互聯(QPI)上監聽到了不想看到的事情。。。:(1)有人發生了讀行為(Remote Read)。你該如何辦?還想一黨獨大嘛?沒天理。你要把最新的數據給人民。。。而且要把數據UPDATE到DRAM里面去。數據是天下人的數據;而非某個CPU的數據!你的狀態要變成S(hared)的了。。。。。。(2)有人發生了寫行為(Remote Write)。要奪權!!!如何處理!?交權!皇帝輪流轉!請把數據交出來,給別人寫一寫,玩一玩;然后人家變成了M;你自己變成了I(nvalid)了。。。你需要變成S嘛?至少目前沒必要,除非你想讀。。。。。。










細心的讀者估計會反復琢磨這個狀態機。請注意I(nvalid)狀態的輸入!!!嚴格的一致:全部來自紅色的Remote Write–這就是我們說M-blah-blah-blah-I等各種變種協議都來自學術界里的所謂:Write Invalidate Protocol。用大白話就是:寫失效。只要我看到別人有寫一個數據備份,我就認栽!承認自己是弱勢群體。。。。。。變成非法躲貓貓。

下圖所示是MESFI,MOESI,MESI狀態機的一些比較。Note that AMD的ccHT用的是MOESI。。。















另外,從SerDes的角度來觀察QPI。可以這樣去理解:QPI是一個Parallel Clock的SerDes。

這就可以理解QPI的Signal(Pin)了。QPI是單向的。信號是21個。20lane(bit)+clock。每個信號是Differential Signal(差分信號)的。因此是20×2 +1×2=42個pin(管腳)。如果一個QPI 端口(Port)【一發,一送,pair】,是84個pin。。。

Intel以前的并行總線Front-side Bus的pin有多少,600+多個!QPI是84個!比一比,嚇一跳。

Parallel Clock SerDes是典型的把以前的并行總線信號匯聚成Serial Bus的做法。《控制信號+數據信號+地址信號+時鐘)—》時鐘+Serialized Signals。

總結

以上是生活随笔為你收集整理的浅谈Intel QPI的MESIF协议和Home,Source Snoop的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。