第三章 CXL事務(wù)層
3.1 CXL.io
CXL.io為IO設(shè)備提供非一致性的load/strore接口。事務(wù)類(lèi)型、事務(wù)數(shù)據(jù)包格式、信用流量控制、虛擬通道管理、事務(wù)順序的規(guī)則等遵循PCIe協(xié)議。CXL.io的事務(wù)層如下圖中的黃色部分所示。
3.1.1 CXL.io端點(diǎn)(Endpoint)
CXL設(shè)備需要支持在CXL 1.1和CXL 2.0模式下運(yùn)行。當(dāng)鏈路配置為在CXL 1.1模式下運(yùn)行時(shí),CXL.io端點(diǎn)必須作為PCIe RCiEP;而當(dāng)配置為在CXL 2.0模式下運(yùn)行時(shí),必須作為PCI Express端點(diǎn)。
RCiEP是Root Complex Integrated Endpoints的縮寫(xiě),PCIe端點(diǎn)的一種。
3.1.2 CXL電源管理VDM(Vendor Defined Message)格式
CXL電源管理消息使用PCIe的VDM Type 0,帶有4DW的負(fù)載數(shù)據(jù),包括PMREQ,PMRSP和PMGO消息。
CXL電源管理VDM的格式如下:
如果接收方CXL組件接收到“有毒”的電源管理VDM,則應(yīng)丟棄此類(lèi)消息。由于接收方在接收到此類(lèi)VDM后能夠繼續(xù)正常運(yùn)行,因此應(yīng)將此事件視為非致命性錯(cuò)誤(non-fatal)。如果接收方的電源管理單元(PMU)不理解電源管理VDM數(shù)據(jù)負(fù)載的內(nèi)容,則應(yīng)無(wú)聲地丟棄該消息,并且不發(fā)出無(wú)法糾正錯(cuò)誤(uncorrectableerror)的信號(hào)。
數(shù)據(jù)負(fù)載的字段定義比較多,就不貼圖了。
電源管理信用和初始化過(guò)程是本地鏈接。設(shè)備和主機(jī)之間通過(guò)CXL.io通道發(fā)送的消息類(lèi)型主要涉及兩種,分別是CREDIT_RTN和AGENT_INFO,其中PM2IP是主機(jī)發(fā)給設(shè)備的電源管理消息,而IP2PM是設(shè)備發(fā)給主機(jī)的電源管理消息。至于“信用”機(jī)制就不解釋了,在前面講CCIX的時(shí)候已經(jīng)介紹過(guò)了。
所謂的上游端口(Upstream Port)指的是設(shè)備的端口;而下游端口(Downstream Port)是主機(jī)端口。CXL上游端口PMU必須能夠接收和處理CREDIT_RTN消息,而不依賴(lài)于任何其它PM2IP消息。此外,CREDIT_RTN消息不使用信用。CREDIT_RTN消息用于初始化和更新每側(cè)的TX信用,以便可以適當(dāng)?shù)毓芾砹髁靠刂?。在PM初始化期間的第一條CREDIT_RTN消息,通過(guò)NUM_CREDITS字段發(fā)送的信用表示CREDIT_RTN的發(fā)起方可以從另一端接收的信用相關(guān)PM消息的數(shù)量。在后續(xù)CREDIT_RTN消息期間,NUM_CREDITS字段表示自上一條CREDIT_RTN消息以來(lái)在同一方向釋放的PM信用數(shù)。下游端口PMU還使用第一條CREDIT_RTN消息為上游端口PMU分配PM_AGENT_ID。此ID通過(guò)CREDIT_RTN消息中的TARGET_AGENT_ID字段進(jìn)行通信。在啟動(dòng)任何IP2PM消息之前,上游端口PMU必須等待來(lái)自下游端口PMU的CREDIT_RTN消息
參考下圖,第一條消息,PM2IP.CREDIT_RTN(Target_Agent_ID,Num_Credits=1) ,這個(gè)消息里面包含了2個(gè)內(nèi)容,一個(gè)是Target_Agent_ID,另一個(gè)是主機(jī)給了設(shè)備1個(gè)信用值。之后,設(shè)備也給主機(jī)發(fā)送了一個(gè)消息IP2PM. CREDIT_RTN(Num_Credits=2),授權(quán)了主機(jī)2個(gè)信用值。在初始化的時(shí)候,設(shè)備必須先等待接受來(lái)自主機(jī)的CREDIT_RTN消息,而不能先向主機(jī)發(fā)送消息。
上游端口PMU必須遵循的規(guī)則:
在啟動(dòng)任何IP2PM消息之前,上游端口PMU必須等待接收PM2IP.CREDIT_RTN消息。
上游端口PMU必須從下游端口PMU接收到的第一條PM2IP消息中提取TARGET_AGENT_ID字段,并將其用作未來(lái)消息中的PM_AGENT_ID。
上游端口PMU必須實(shí)現(xiàn)足夠的資源來(lái)接收和處理任何CREDIT_RTN消息,而不依賴(lài)于任何其他PM2IP或IP2PM消息或其他消息類(lèi)。
上游端口PMU必須實(shí)現(xiàn)至少一個(gè)信用,以接收PM2IP消息。
上游端口PMU必須盡快向下游端口PMU返回信用,以防止通過(guò)CXL鏈路阻塞電源管理消息通信。
建議上游端口PMU占用信用額度不得超過(guò)10us。
插播一句,是不是看的暈暈的?這里簡(jiǎn)單介紹一下供應(yīng)商定義的消息(VDM),PCIe協(xié)議里是這么說(shuō)的“TheVendor Defined Messages allow expansion of PCI Express messaging capabilities,either as a general extension to the PCI Express Specification or avendor-specific extension”。
3.1.3 CXL錯(cuò)誤VDM格式
CXL錯(cuò)誤消息使用PCIe的VDM Type 0,沒(méi)有負(fù)載數(shù)據(jù),格式如下。
3.1.4 CXL所需的可選PCIe功能
3.1.5 錯(cuò)誤傳播
設(shè)備檢測(cè)到的CXL.cache和CXL.mem錯(cuò)誤通過(guò)CXL.io通信流傳播到上游端口。這些錯(cuò)誤在PCIe AER寄存器中記錄為可糾正(Correctable)和不可糾正(Uncorrectable)的內(nèi)部錯(cuò)誤。
3.1.6 ATS上的存儲(chǔ)器類(lèi)型指示
對(duì)某些內(nèi)存區(qū)域的請(qǐng)求只能在CXL.io上發(fā)出,而不能在CXL.cache上發(fā)出。由主機(jī)決定這些內(nèi)存區(qū)域是什么。例如,在x86系統(tǒng)上,主機(jī)可以選擇僅通過(guò)CXL.io限制對(duì)不可緩存(Uncacheable)類(lèi)型內(nèi)存的訪問(wèn)。主機(jī)通過(guò)ATS完成(ATS Completion)向設(shè)備來(lái)指示這些區(qū)域。
插播一句,ATS是Address Translation Services的縮寫(xiě)。PCIe協(xié)議里面有一整章講ATS。為節(jié)省CPU資源,I/O Function常采用DMA方式訪問(wèn)內(nèi)存。一般I/O Function看到的物理地址空間與CPU一樣。但有時(shí)候,I/O Function看到的地址空間不是真實(shí)的物理地址,需要RC將DMA請(qǐng)求進(jìn)行處理,通過(guò)一次地址轉(zhuǎn)換才能將訪問(wèn)到真實(shí)的物理地址。這種地址轉(zhuǎn)換機(jī)制有利于訪問(wèn)權(quán)限檢查。
一般PCIe設(shè)備在本地實(shí)現(xiàn)一個(gè)地址緩存(Address Translation Cache,ATC),類(lèi)似CPU中的TLB。Function發(fā)送存儲(chǔ)器讀寫(xiě)請(qǐng)求前,先在本地的ATC中查找是否有該地址的條目。如果在ATC中查找成功,直接采用轉(zhuǎn)換后地址進(jìn)行訪問(wèn)。如果在ATC中沒(méi)有找到該地址的條碼,則給TA(TranslationAgent)發(fā)送該地址的地址轉(zhuǎn)換請(qǐng)求。在ARM體系中,TA的功能由SMMU(System Memory Management Unit)承擔(dān),此外SMMU還要顯式的負(fù)責(zé)同步TLB和與它相連的分布ATC中的數(shù)據(jù)一致性。關(guān)于SMMU,之前的文章介紹過(guò)。
3.1.7 可延遲寫(xiě)
CXL規(guī)范中定義的可延遲寫(xiě)入僅在CXL1.1模式下運(yùn)行時(shí)適用。在CXL 2.0模式下操作時(shí),請(qǐng)參閱PCIe規(guī)范以了解此功能。
審核編輯:湯梓紅
-
電源管理
+關(guān)注
關(guān)注
115文章
6177瀏覽量
144450 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151021 -
PCIe
+關(guān)注
關(guān)注
15文章
1234瀏覽量
82585
原文標(biāo)題:技術(shù)分享 | CXL學(xué)習(xí)(三)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論