天天看點

PCIe鎖定事務(Locked Transactions)介紹✨ 1. 鎖定事務背景介紹✨ 2. 鎖定事務的發起及傳輸✨ 3. 各PCIe元件的鎖定通路規則📚參考

✨ 1. 鎖定事務背景介紹

  有些CPU在執行指令的過程中有可能誤觸發鎖定而進入鎖定通路模式。比如,一些傳統的軟體并不需要exclusive通路,但由于錯誤地使用了現如今會導緻鎖定的事務而對PCIe鍊路産生了鎖定。由于鎖定通路IO裝置會潛在引入死鎖、惡化傳輸性能,故(純粹的)PCIe EP被禁止使用鎖定通路,新的軟體也不允許使用含有鎖定通路IO裝置操作的指令。為避免使用傳統軟體的系統通路IO裝置造成死鎖,在PCIe系統中常采用RC代替主機CPU發起鎖定事務。

  鎖定事務是非轉發事務,有三種:

鎖定存儲器讀請求(MRdLk)

、與鎖定存儲器讀請求對應的

不帶資料的完成(CplLk)

及與鎖定存儲器讀請求對應的

帶資料的完成(CplDLk)

。PCIe系統中隻允許RC發起鎖定通路,不允許EP及bridge發起鎖定通路,支援鎖定通路的傳統EP也僅用于相容已有的舊版本軟體。這符合PCI協定exclusive通路中對鎖定事務的限制條件。鎖定存儲器讀事務協定示意圖如圖1所示。

PCIe鎖定事務(Locked Transactions)介紹✨ 1. 鎖定事務背景介紹✨ 2. 鎖定事務的發起及傳輸✨ 3. 各PCIe元件的鎖定通路規則📚參考

圖1 鎖定存儲器讀事務協定示意圖

✨ 2. 鎖定事務的發起及傳輸

  鎖定事務是在寫請求事務之後由主機CPU發起的一筆或多筆讀請求事務,讀請求與寫請求的目标位址相同。鎖定存儲器讀請求TLP利用標頭标裡的資訊向下遊路由,通過交換開關,到達目标完成者。該請求的完成者隻能是傳統EP。一旦鎖定建立,在被鎖定的RC到傳統EP或橋之間的路徑上,所有其他請求都會被阻塞。

📌  鎖定事務的發起及傳輸遵循以下規則:
  • 鎖定事務序列以MRdLk、CplDLk等鎖定事務開始,以解鎖消息結束。
  • 解鎖消息用以訓示鎖定解除,由RC下發給完成者,也可以采用廣播的方式廣播給所有EP及橋,與鎖定無關的裝置會忽略該消息。
  • 解鎖消息由交換節點将其傳遞給交換節點中鎖定了的出端口。
  • 收到解鎖消息後,傳統EP及交換節點必須解除鎖定。對于PCIe EP或橋等不支援鎖定的接收者,解除鎖定對齊無影響。
  • 所有違反鎖定事務發起/傳輸規則的都有可能導緻未知的裝置/系統行為。
  • 以MRdLk開始的鎖定事務,其接下來的存儲器讀請求也必須是鎖定通路,收到CplDLk表示讀成功,CplLk表示失敗。若鎖定讀請求請求失敗,意味着鎖定通路的原子性被破壞,請求者與完成者之間的鎖定也不複存在。
  • 沒有存儲器寫的鎖定請求,隻有正常的存儲器寫請求。

✨ 3. 各PCIe元件的鎖定通路規則

👉3.1 交換節點的鎖定通路規則

  交換節點必須對鎖定事務及非鎖定事務進行區分,防止鎖定事務影響到非鎖定事務,導緻潛在的死鎖。交換節點應遵循以下規則:

  • 交換節點從入端口到出端口傳遞MRdLk請求時,需阻塞住所有送往出端口的映射到VC0的通路請求。若接下來交換節點入端口收到了另一筆送往其他出端口(不同于上一MRdLk出端口),目前尚無相關規範。PCIe不支援出端口不同的鎖定通路,軟體也不能産生這種鎖定請求。一旦出現這種情況,系統極有可能被死鎖。
  • 在發出MRdLk請求後并收到CplDLk後,若完成狀态為成功,交換節點需阻塞住所有傳輸在鎖定通路相關端口上的非鎖定請求。當然,出端口上映射到VC0的請求事務不受此影響。
  • 交換節點與鎖定通路相關的入端口與出端口應保持鎖定狀态,直到當初收到鎖定請求的入端口收到解鎖消息之後才能解除鎖定。解鎖消息必須轉發至出端口,也可以廣播至所有其他端口。跟鎖定通路無關的端口不受解鎖消息的影響。

  📌 注:以上鎖定通路事務僅限于TC0。

👉3.2 PCIe-PCI橋的鎖定通路規則

 PCIe-PCI橋的鎖定通路規則與交換節點相似。由于PCIe-PCI橋僅适用于VC0/TC0,一旦開啟了鎖定通路,在PCIe-PCI橋上所有其他非鎖定請求也都被阻塞住了。

👉3.3 RC的鎖定通路規則

 RC允許作為鎖定事務的請求者。若RC支援鎖定事務,RC需遵循第2節的規則才能發起鎖定通路。

👉3.4 傳統EP的鎖定通路規則

 傳統EP支援鎖定通路,但不建議使用。若傳統EP支援鎖定通路,其應按照如下規則處理鎖定通路:

  • 傳統EP在收到第一筆鎖定讀請求之後回報一筆完成消息。若完成狀态為不成功,傳統EP不能鎖定;若完成狀态為成功,傳統EP鎖定。
  • 鎖定以後,傳統EP禁止發送任何TC映射到VC0的請求事務,但仍然可以采用其他TC(非映射到VC0)發送請求事務。

👉3.5 PCIe EP的鎖定通路規則

 PCIe EP不支援鎖定,PCIe EP将MRdLk請求當作UR處理。

📚參考

  1. PCI Express Base Specification Revision 5.0 Version 1.0 (22 May 2019)
  2. PCI Express Technology - Comprehensive Guide to Generation1.x, 2.x and 3.0. Mike Jacson, Ravi Budruk, MindShare, Inc.
  3. PCI、PCI-X和PCI Express的原理及體系結構,馬錦明,朱劍冰 等著

繼續閱讀