作者yuu123 (yuu)
看板Storage_Zone
标题[心得] PCIe Maximum Payload Size与SSD效能问题
时间Mon Jun 28 21:33:12 2021
网页好读版
https://webptt.com/cn.aspx?n=bbs/Storage_Zone/M.1624887210.A.021.html
PTT的标题长度不够。
老实说我原本想下的题目应该是以下这串。
浅谈PCIe Maximun Payload Size大小与SSD效能之间的问题
暨ASUS TUF GAMING X570-PLUS (WIFI)实测与回溯研究
因为整篇废文很多,所以把一点也不懒人的懒人包直接写在最前面。
不是摘要
本文研究目的仅在证实PCIe Maximum Payload Size(MPS)对SSD效能之影响,
当系统处於MPS於较低的128 bytes时,会导致SSD的写入及读取速度,较256
bytes时有所不足。
就测试结果来看,WD SN750 於MPS: 128 bytes时似乎有天花板限制。
参照网路上其他人的测试,例如PCIe 4.0的SN850或980PRO也有相同的状况。
深入研究後,发现是由於主机板晶片组所提供之PCIe Maxmium Payload Size
虽然支援到512 bytes,但接在主机板晶片组後方的设备大多为256 bytes,
少部份仅支援128 bytes。
由於主机板晶片组的Maxmium Payload Size协定,会以所有接在晶片组後方的
设备中最低的MPS值为准。故在使用ASUS TUF GAMINMG X570-PLUS (WIFI)这张
主机板时,在一般正常状态下。
所有接在晶片组後方的装置,仅能运作於128 bytes。
会导致此问题,是由於主机板上的LAN及WIFI&蓝芽装置,仅支援PCIe Max Payl
oad Size: 128 bytes。故若於BIOS内将LAN, WIFI, Bluetooth之功能关闭之後
。所有接在主机板後方的装置,皆可运作於PCIe Maxmium Payload Size: 256
bytes。
且由於各家SSD厂商及主控对於PCIe Maximum Payload Size的支援度不同,
各家主机板厂商也从未於产品规格内,说明产品於主机板晶片组的PCIe Maxi
mum Payload Size的值,导致有些消费者购入SSD後效能无法完整发挥。
是故在此抛砖引玉,希望有空能帮忙做测试的热心乡民,一起来统计各家产品
的MPS值,以供消费者购入时的参考。
好了写完了又臭又长的summry之後感觉就开始有点懒了,
所以下面的正文我就随便打了。
https://i.imgur.com/bmaB9jR.png
一、引言与研究背景
之所以会发现这个不知道该说是Issue还是Problem的东西,
是因为这篇Reddit乡民的文章:
Fixed Maximum Payload Size. Now I don't have internet.[1]
https://www.reddit.com/r/AverMedia/comments/hoq07g/fixed_maximum_payload_size_now_i_dont_have/
缩网址
https://tinyurl.com/3jb3nzww
拿MPS随便咕狗之後发现一篇更劲爆的:
SN850 1TB NVME - slow write speeds (3100) on x570 using M2 Chipset slots
(PCH) - confirmed as a problem on MSI, ASRock, Gigabyte and Asus motherboards [4]
https://community.wd.com/t/sn850-1tb-nvme-slow-write-speeds-3100-on-x570-using-m2-chipset-slots-pch-confirmed-as-a-problem-on-msi-asrock-gigabyte-and-asus-motherboards/265038
缩网址
https://tinyurl.com/mwprpdah
整串看完无意识喊出一声:
晚了!
我不好容易存了一笔钱,买了SN850。
我还得把LAN关掉、还得连WIFI关掉、还得看他喵MPS的脸色。
那我不成了跪着要饭的吗?
https://i.imgur.com/6el2X6b.png
你要这麽说,买SSD测分数,还真就是跪着要饭的。
就这,多少人想跑3100以上还没这个门子呢。
速度嘛,跑分,插直通!
不过网路文章毕竟是网路文章。
而消费级的直通通道真他喵少,
所以看起来只能验证一下MPS与SSD效能之间的关系了。
口说无凭,就实际来开测吧。
二、PCIe Maxmium Payload Size
首先去下载HWiNFO64,来查看装置的Maxmium Payload Size数值。
网站在此:
https://www.hwinfo.com/download/
按Run进去之後,在Bus栏位可以找到主机板的PCIe通道分配与连接方式。
顺便附一下AMD X570晶片组的PCIe通道规画
https://i.imgur.com/P1jttQY.jpg
以本次测试标的,华硕 TUF X570-PLUS (WIFI)来说,
可以看到第一条M.2 是CPU直通通道,
是稳稳的支援PCIe 4.0 x4,
以及Support Maxmium Payload Size: 512 bytes.
https://i.imgur.com/5QkEIC5.png
可以看到X570晶片组本身,也支援Maximum Payload Size: 512 bytes.
https://i.imgur.com/9aX7GU9.png
注:因为
Maxmium Payload Size(MPS)打起来实在是有点长,
所以本文以後的段落皆使用缩写
MPS。
只是因为插在M.1_1上头的,是有点年纪的Plextor M9PEG。
仅支援128bytes,所以只能跑MPS: 128bytes.
https://i.imgur.com/XrIxt7x.png
再接着看接在X570晶片组後方的设备,
首先是也是本文的重点
M.2_2,
在HWiNFO 显示出的PCIe装置,
是 "AMD 500-Series Chipset - PCIe GPP Bridge"
虽然支援MPS:512 bytes,但不意外地跑MPS: 128bytes。
https://i.imgur.com/G1Aokuv.png
可以看到SN750虽然支援MPS:512 bytes,
但运作模式被限制在128 bytes。
https://i.imgur.com/QFRoVcb.png
由於PCIe的设计原理,是在所有同通道内的装置,
共用同一组MPS的数值,以最低的装置为限。
因此所有接在主机板晶片组,以此例是接在X570後方的装置,
其MPS值以连接装置中最低的值为主。
所以就来找找所有接在X570後方的装置,哪些是128bytes的。
可以看到与无线网卡连接的PCIe通道,是支援MPS: 256 bytes的。
https://i.imgur.com/DyKjjyB.png
但Intel AC 9260 仅支援MPS: 128bytes
https://i.imgur.com/c1fEoYK.png
有线网卡的状况也是类似,PCIe通道本身支援MPS: 256bytes.
https://i.imgur.com/q9dg6Cx.png
但RTL8168_8111 仅支援MPS: 128bytes.
https://i.imgur.com/tHlDLsr.png
X570连接USB3的PCIe通道,也支援MPS: 256bytes,
运作速度被限制在128bytes.
https://i.imgur.com/qTj7N3a.png
两个USB3的控制器都一样状态
https://i.imgur.com/hVV1oK6.png
接着来看SATA部份
AMD Internal PCIe GPP Bridge 支援MPS: 512bytes
https://i.imgur.com/P9bEbt0.png
AMD FCH SATA AHCI Controller 支援MPS: 256bytes
运作速度被限制在128bytes
https://i.imgur.com/lyit6r6.png
另一条AMD Internal PCIe GPP Bridge 的状态也一样
AMD Internal PCIe GPP Bridge 支援MPS: 512bytes
https://i.imgur.com/Jf2f0vo.png
AMD FCH SATA AHCI Controller 支援MPS: 256bytes
但运作速度被限制在128bytes
https://i.imgur.com/wQGO6NZ.png
所以在此可以得到一个结果:
由於LAN:RTL8168_8111 以及
WIFI:Intel AC 9260都仅支援MPS: 128bytes。
所以
实验的变因,
就是将这两个装置的功能开启或关闭。
看看是否能将所有接在X570晶片组後方的装置,
MPS皆恢复成256bytes。
三、实验结果
进BIOS将LAN、WIFI跟Bluetooh都关闭之後,
马上可以看到X570晶片组的MPS,运作於256bytes。
https://i.imgur.com/2Uoc7ox.png
证实了Intel的说法[5]
也可以看到SN750终於运作於MPS: 256bytes。
https://i.imgur.com/u8Ay1Uf.png
接着来看USB3的部份,
关闭网卡功能後 AMD USB3 XHCI Controller
运作於MPS: 256bytes。
https://i.imgur.com/K9i1pOL.png
SATA的部份,
AMD FCH SATA AHCI Controller 运作於MPS: 256bytes
https://i.imgur.com/6Nc6AUr.png
已确认所有接在X570晶片组後方的装置,
都处於Maximum Payload Size: 256 bytes之後,
来开测CDM快乐表:
CDM 8.0.1 SN750 运作於MPS: 256bytes
https://i.imgur.com/5WgsoS5.png
作为对比,SN750 1TB CDM 8.0.1 运作於MPS: 128bytes
https://i.imgur.com/3i5EaU0.png
四、结论
CDM比较结果
https://i.imgur.com/Yf7sTND.png
可以看到循序读取终於突破3100的大关,符合WD原厂标示的数值。
无论是大档还是4K小档,所有效能皆往上提升。
在去年的测试中,我一直以为是我测试环境不乾净的关系。
reference:
https://webptt.com/cn.aspx?n=bbs/PC_Shopping/M.1601213630.A.A5E.html
没想到是PCIe Maximum Payload Size的问题。
所以如果要发挥SN750的实力,建议插在CPU直通通道的M.2_1,
跑满速的MPS: 512bytes。
或是购买接在晶片组後方的装置,皆是MPS: 256bytes的主机板。
不过我有点怀疑符合这项条件的主机板有多少?
因为主机板厂商没有任何一家有标示关於MPS的这部份,
另外一点也是本篇文章的遗珠之憾,无法证实在SN850 980PRO
这类效能更高的PCIe 4.0 SSD,是否如文章所说有相同的状况。
是故在此抛砖引玉,
希望如果有空能帮忙做测试的热心乡民,一起来统计各家产品
的MPS值,最好附上SSD的HWiNFO MPS状态抓图。
以供广大消费者购入主机板时的参考。
以上。
参考文献:
1. Fixed Maximum Payload Size. Now I don't have internet.
https://www.reddit.com/r/AverMedia/comments/hoq07g/fixed_maximum_payload_size_now_i_dont_have/
https://tinyurl.com/3jb3nzww
2. Live Gamer 4K (GC573) not Operating at 256 bytes for Max Payload Size
https://www.reddit.com/r/AverMedia/comments/g5mmhp/live_gamer_4k_gc573_not_operating_at_256_bytes/
https://tinyurl.com/2usrurem
3. BEWARE: If you have a internal WIFI card it may be limiting your Live
Gamer 4K's bandwidth.
https://www.reddit.com/r/AverMedia/comments/hop1qq/beware_if_you_have_a_internal_wifi_card_it_may_be/
https://tinyurl.com/8v8tducd
4. SN850 1TB NVME - slow write speeds (3100) on x570 using M2 Chipset slots
(PCH) - confirmed as a problem on MSI, ASRock, Gigabyte and Asus motherboards
https://community.wd.com/t/sn850-1tb-nvme-slow-write-speeds-3100-on-x570-using-m2-chipset-slots-pch-confirmed-as-a-problem-on-msi-asrock-gigabyte-and-asus-motherboards/265038
https://tinyurl.com/mwprpdah
5. Why does the IP compiler for PCI Express not support Max Payload Size
(MPS) up to 4096 bytes as specified in the PCIe Specification?
https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/solutions/rd08222011_674.html
https://tinyurl.com/wzwaamvp
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.36.80.47 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Storage_Zone/M.1624887210.A.021.html
※ 编辑: yuu123 (114.36.80.47 台湾), 06/28/2021 21:36:31
※ yuu123:转录至看板 PC_Shopping 06/28 21:36
1F:推 SPDY : Intel AX200也还是128 bytes 06/28 22:51
2F:→ SPDY : 这装上去 无论是PCH还是FCH 不就难逃被拖累了吗... 06/28 22:51
3F:→ yuu123 : 没错喔 所以才有这篇文章的产生呐 06/28 22:54
4F:→ yuu123 : 只要其中一个装置MPS只吃128bytes 06/28 22:55
5F:→ yuu123 : 那整串晶片组後面的东西 都只能改跑128bytes 惨~~ 06/28 22:55
6F:→ SPDY : 呃 但是无线网路卡 目前似乎没更好的选择 真的囧了 06/28 22:57
7F:推 filiaslayers: 而且问题是买含有wifi的主版就是为了wifi,要关掉的 06/28 23:43
8F:→ filiaslayers: 的话我干麻不一开始就买没wifi的版子... 06/28 23:44
9F:推 filiaslayers: 不过我看了一下,应该还是看厂商的配置,我是用TUF 06/28 23:50
10F:→ filiaslayers: B550-plus wifi,虽然有ax200,但我的usb3是256Bytes 06/28 23:50
11F:→ yuu123 : AMD有的USB是直通CPU的,所以看USB不准 06/28 23:52
12F:推 filiaslayers: 应该说要接在同一个bridge下才会有影响吧? 06/28 23:54
13F:→ filiaslayers: 我这边看了一下,不同bridge的MPS似乎是分开的y 06/28 23:54
14F:→ yuu123 : 最准就看AMD 500-Series Chipset Upstream in PCIe 06/28 23:54
15F:→ yuu123 : 就是你晶片组是跑啥 那接在後面的就都只能跑那样 06/28 23:55
16F:→ yuu123 : 至於从CPU直通的像是音效 USB啥的 就各自独立 06/29 00:03
17F:推 tyfu : 效率问题、每个TLP带24B无效标头、简单算一下就知 06/29 00:10
19F:→ filiaslayers: 我看asus把wifi跟sata都塞到了PCI-e x8的bus去 06/29 00:11
20F:→ filiaslayers: 然後M.2有两个,一个大概也塞到这边,另一个应该是 06/29 00:12
21F:→ filiaslayers: 下面x16的通道?我还没买m.2 ssd不确定 06/29 00:12
22F:→ yuu123 : 原来不同主机板对PCIe切的方式也不太一样 06/29 00:25
23F:→ yuu123 : 受教了 06/29 00:25
24F:→ filiaslayers: 我觉得asus这样蛮合理的,低速就放一起 06/29 00:41
25F:→ filiaslayers: 电虾那个苦主真的太扯,高低速装置还弄成杂烩... 06/29 00:42
26F:推 goldie : 推实测 06/29 02:01
27F:→ DavisX : 在device manage里的pci max payload size 00000001 06/29 21:44
28F:→ DavisX : 对应是多少啊? 256? 06/29 21:44
29F:→ smallreader : 0x00=128, 0x01=256, 0x02=512 06/29 22:11
30F:推 smallreader : 转电虾推文,Clavius大贴Z490的组态 06/29 23:07
33F:→ smallreader : 会发现Intel晶片组能够把下游通道挂到root bus上, 06/29 23:07
34F:→ smallreader : 但AMD是很简单的阶层关系,所以後者的MPS只能从下游 06/29 23:09
35F:→ smallreader : 端点中取最大公因数,但C大的Intel Z490,插上AX200 06/29 23:09
36F:→ smallreader : (MPS=128),而980pro(同样接晶片组)MPS仍然能跑256 06/29 23:11
37F:→ smallreader : AMD的架构中有PCIe switch,Intel则好像能平面化? 06/29 23:16
38F:推 filiaslayers: 那个跟是不是intel无关,单纯是主机版厂商对PCI-e 06/30 10:05
39F:→ filiaslayers: 通道的使用方式不同而已,我用b550的晶片组,厂商把 06/30 10:05
40F:→ filiaslayers: wifi跟sata这种低速的装置放一起,我的m.2的MPS一样 06/30 10:06
41F:→ filiaslayers: 不会受限wifi的MPS 06/30 10:06
42F:推 filiaslayers: intel的优势应该在chipset能提供的pci-e通道多很多 06/30 10:10
43F:→ filiaslayers: 所以可以看到电虾c版友的pci-e用的很大方 06/30 10:11
44F:→ smallreader : 感谢解惑 06/30 10:33
45F:推 filiaslayers: 我回了一篇比较完整的在电虾了,可以去看看 06/30 11:59
46F:推 smallreader : to filia,除了x16、m.2_cpu、usb3 hub以外的功能 06/30 18:33
47F:→ smallreader : 才是经晶片组的,你的板子也不例外,只是因为扩充少 06/30 18:33
48F:→ smallreader : 所以误认到直连CPU的装置了~ 06/30 18:35
49F:推 Lukesky : 话说插了AX200 让整组MPS都变成128 除了SSD有影响 06/30 19:59
50F:→ Lukesky : 其他组件也会有影响吗? 06/30 19:59
51F:推 t5p3ax : 推 06/30 20:01
52F:推 sdbb : 这篇impact factor有多少呢? 07/01 15:02
53F:推 sdbb : @lukesky,低速装置不影响,SSD在意跑分的话才有差 07/01 15:07
54F:嘘 Fring : x 07/13 15:41