PCIe MPS參數介紹及如何更改

目錄

1.簡介

2.主要功能作用

3.MPS控制策略

4.如何更改


1.簡介

MPS

該參數含義是一個TLP包里攜帶的有效凈荷的最大值是多少字節(該限制條件同時適用于寫操作和讀操作)。

MRRS

該參數含義是一個TLP讀請求包,一次最多能向接收端請求讀出多少字節。(MRRS參數出現的原因大家有沒有想過……其實設定MRRS的原因是為了避免某個設備長時間占用總線)

2.主要功能作用

在MPS在PCIe整體性能中,有至關重要的作用。隨著MPS大小的增加,PCIe傳輸效率也在不斷的提升。不過,在x86的機器中,RC端的MPS通常是128B/256B。在ARM CPU中,為了追求高效性能,部分場景也會設置為512B。

整個PCIe系統中,MPS的大小,跟RC、PCIe Switch、Endpoint都有相互的影響,最終TLP傳輸的數據大小取決與MPS最小的一個設備。比如下圖示例,RC MPS=256B,PCIe Switch MPS=512B,但是EP3 MPS=128B。所以最終數據傳輸的大小采用的是MPS=128B。

以下是一個實例

lspci -s 01:00.0 -vvvv
01:00.0 Non-Volatile memory controller: Toshiba Corporation Device 0116 (prog-if 02 [NVM Express])Subsystem: Toshiba Corporation Device 0001Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-Latency: 0, Cache Line Size: 64 bytesInterrupt: pin A routed to IRQ 16NUMA node: 0Region 0: Memory at 96200000 (64-bit, non-prefetchable) [size=16K]Capabilities: [40] Express (v2) Endpoint, MSI 00DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimitedExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000WDevCtl:	Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-MaxPayload 256 bytes, MaxReadReq 512 bytesDevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s <2us, L1 <32usClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-LnkSta:	Speed 8GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-DevCap2: Completion Timeout: Range AB, TimeoutDis+, LTR+, OBFF Not SupportedDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF DisabledLnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-Compliance De-emphasis: -6dBLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-Capabilities: [80] Power Management version 3Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-Capabilities: [90] MSI: Enable- Count=1/32 Maskable+ 64bit+Address: 0000000000000000  Data: 0000Masking: 00000000  Pending: 00000000Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-Vector table: BAR=0 offset=00002000PBA: BAR=0 offset=00003000

3.MPS控制策略

pcie_bus_tune_off   Disable PCIe MPS (Max Payload Size)tuning and use the BIOS-configured MPS defaults.pcie_bus_safe   Set every device's MPS to the largest valuesupported by all devices below the root complex.pcie_bus_perf   Set device MPS to the largest allowable MPSbased on its parent bus. Also set MRRS (Max Read Request Size) to the largest supportedvalue (no larger than the MPS that the deviceor bus can support) for best performance.pcie_bus_peer2peer  Set every device's MPS to 128B, whichevery device is guaranteed to support. This configuration allows peer-to-peer DMA betweenany pair of devices, possibly at the cost ofreduced performance.  This also guaranteesthat hot-added devices will work.

4.如何更改

Linux系統中通過lspci和setpci可以查詢和修改MPS/MRRS參數。

比如:lspci查看設備DevCap寄存器中MPS=512B,最終傳輸用的MPS=256B,MRRS=4KB。

lspci -s 04:00.0 -vvv | grep DevCtl: -C 2

DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited

ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+

DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-

RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-

MaxPayload 256 bytes, MaxReadReq 4096 bytes
?

如果需要修改MPS或者MRRS,需要先找到Device Control Register中MPS和MRRS的位置,如PCIe Spec定義,MPS在bit5-7,MRRS在bit12-14. 同時Device Control Register的offset是0x8h。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機畢業設計JAVA+SSM+springboot養老院管理系統

設計了養老院管理系統&#xff0c;該系統包括管理員&#xff0c;醫護人員和老人三部分。同時還能為用戶提供一個方便實用的養老院管理系統&#xff0c;管理員在使用本系統時&#xff0c;可以通過系統管理員界面管理用戶的信息&#xff0c;也可以進行個人中心&#xff0c;醫護等…

LeetCode 108. 將有序數組轉換為二叉搜索樹

對于算法題&#xff0c;按題型類別刷題才會更有成效&#xff0c;因此我這里在網上搜索并參考了下 “&#x1f525; LeetCode 熱題 HOT 100” 的題型歸類&#xff0c;并在其基礎上做了一定的完善&#xff0c;希望能夠記錄自己的刷題歷程&#xff0c;有所收獲&#xff01;點擊下發…

點滴生活記錄2

我從小跟著我爺爺奶奶&#xff0c;小學六年級轉到縣城上小學&#xff0c;就沒跟我奶奶他們住一起了。十一回家&#xff0c;把奶奶接到我這住&#xff0c;細想&#xff0c;自六年級之后&#xff0c;就很少跟奶奶住一起了。 奶奶&#xff08;間歇性&#xff09;耳聾&#xff0c;為…

104. 二叉樹的最大深度

給定一個二叉樹 root &#xff0c;返回其最大深度。二叉樹的最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 深度就是在層序遍歷的基礎上&#xff0c;每層遍歷一次&#xff0c;就增加一次深度&#xff01; import java.util.ArrayList; import java.util.LinkedL…

軟件測試相關

軟件測試是什么&#xff1f; 使用人工和自動手段來運行或測試某個系統的過程&#xff0c;其目的在于驗證它是否滿足規定的需求或弄清預期結果與實際結果的差別。 為什么做軟件測試&#xff1f;目的是什么&#xff1f; 發現軟件存在的代碼或業務邏輯錯誤 檢驗產品是否符合用戶需…

堅鵬:中國郵政儲蓄銀行數字化轉型戰略、方法與案例培訓

中國郵政儲蓄銀行擁有優良的資產質量和顯著的成長潛力&#xff0c;是中國領先的大型零售銀行。2016年9月在香港聯交所掛牌上市&#xff0c;2019年12月在上交所掛牌上市。中國郵政儲蓄銀行擁有近4萬個營業網點&#xff0c;服務個人客戶超6.5億戶。2022年&#xff0c;在《銀行家》…

算法Day24 不專心開車

不專心開車 Description 小碩開車經過一條公路&#xff0c;這條路線總共由n 1個不同海拔的點組成。小碩從海拔為0的點0開始騎行。 給小碩一個長度為n的整數數組arr&#xff0c;其中arr[i]是點i和點i 1的凈海拔高度差&#xff08;0≤i < n&#xff09;。請你返回最高點的海…

【LeetCode刷題-二叉樹】--110.平衡二叉樹

110.平衡二叉樹 方法一&#xff1a;自頂向下遞歸 對于當前遍歷到的節點&#xff0c;首先計算左右子樹的高度&#xff0c;如果左右子樹的高度差是否不超過 111&#xff0c;再分別遞歸地遍歷左右子節點&#xff0c;并判斷左子樹和右子樹是否平衡。這是一個自頂向下的遞歸的過程。…

力扣:197. 上升的溫度(Python3)

題目&#xff1a; 表&#xff1a; Weather ------------------------ | Column Name | Type | ------------------------ | id | int | | recordDate | date | | temperature | int | ------------------------ id 是該表具有唯一值的列。 該表…

[NAND Flash] 1.1 閃存(NAND Flash) 學習指南

依公知及經驗整理&#xff0c;原創保護&#xff0c;禁止轉載。 專欄 《深入理解NAND Flash》 ? 回首 漠然回首&#xff0c;從事存儲芯片行業已多年&#xff0c;這些年寶貴的青春都獻給了閃存。 我剛入行的時候&#xff0c;也是萌新一個&#xff0c;彷佛大學學的都沒有和這相…

Kubernetes簡介與部署

一、Kubernetes 簡介 1、概念&#xff1a; Kubernetes 又稱 k8s&#xff0c;是一個可移植、可擴展的開源平臺&#xff0c;用于管理容器化應用和服務&#xff0c;通過 Kubernetes 能夠進行應用的自動化部署和擴縮容。(k8s不是容器&#xff0c;而是一套容器編排系統) 官網&…

RC522(RFID射頻模塊)讀卡ID的簡單應用

文章目錄 一、RFID是什么&#xff1f;二、RC522模塊三、使用步驟1.硬件1.硬件連接2.引腳定義 2.軟件1.初始化配置代碼如下&#xff08;示例&#xff09;&#xff1a;2.引腳配置代碼如下&#xff08;示例&#xff09;&#xff1a;3.模塊復位代碼如下&#xff08;示例&#xff09…

11、虛函數、多態、純虛函數

11、虛函數、多態、純虛函數 虛函數覆蓋調用 多態實現多態的兩個必要條件多態 和 this指針多態的實現&#xff1a;虛函數表虛函數表與動態綁定動態綁定動態綁定對性能的影響 純虛函數抽象類純抽象類 虛函數 形如class 類名{ virtual 返回值 函數名(形參表) { … } }; 的成員函…

C++筆記之Delegate和委托構造(Delegating constructor)

C筆記之Delegate和委托構造辨析 code review! —— 杭州 2023-12-10 文章目錄 C筆記之Delegate和委托構造辨析0.有道詞典&#xff1a;英語發音1.ChatGPT&#xff1a;delegate概念詳解2.Delegate和“將可調用對象作為函數參數”是不是一回事&#xff1f;3.C的Delegate示例4.…

Numpy矩陣(第16講)

Numpy矩陣(第16講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ??????????????????????????????????????????????????????????????????????????????????????????…

認識計算機的設備管理

在計算機系統中&#xff0c;除了處理器和內存之外&#xff0c;其他的大部分硬設備稱為外部設備。它包括輸入/輸出設備&#xff0c;輔存設備及終端設備等。這些設備種類繁多&#xff0c;特性各異&#xff0c;操作方式的差異很大&#xff0c;從而使操作系統的設備管理變得十分繁雜…

【數據結構】哈希表算法總結

知識概覽&#xff08;哈希表&#xff09; 哈希表可以將一些值域較大的數映射到較小的空間內&#xff0c;通常用x mod 質數的方式進行映射。為什么用質數呢&#xff1f;這樣的質數還要離2的整數冪盡量遠。這可以從數學上證明&#xff0c;這樣沖突最小。取余還是會出現沖突情況。…

《三十一》開發模式構建工具 Vite

20的40分鐘之前還沒看。 20的1小時15分 基于 Vite2。 在實際開發中&#xff0c;編寫的代碼往往是不能被瀏覽器直接識別的&#xff0c;例如 ES6、React、Vue、TypeScript 等&#xff0c;必須通過構建工具來對代碼進行轉換、編譯&#xff0c;例如 Webpack、Rolluop、Vite 等。 V…

c++模板學習筆記

模板 函數模板類模板 函數模板 函數模板的格式為&#xff1a; template<typename T1,typename T2...> 函數返回值類型 函數名(參數列表) {//函數體 }typename是定義模板參數的關鍵字&#xff0c;可以使用class來代替&#xff08;不能使用struct&#xff09; 函數模板本…

【數據結構 — 排序 — 選擇排序】

數據結構 — 排序 — 選擇排序 一.選擇排序1.基本思想2.直接選擇排序2.1算法講解2.2.代碼實現2.2.1.函數定義2.2.2.算法接口實現2.2.3.測試代碼實現2.2.4.測試展示 3.堆排序3.1.算法講解3.2.代碼實現3.2.1.函數定義3.2.2.算法接口實現3.2.3.測試代碼實現3.2.4.測試展示 一.選擇…