转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
lstopo硬件拓扑
补充知识
HostBridge和PCIBridge
HostBridge和PCIBridge的损耗
PCIe 不同版本的带宽
PCIe 版本与编码开销
GT/s跟GB/s的联系
如果要安装的话: sudo apt install hwloc hwloc-gui -y
然后: lstopo -v
lstopo硬件拓扑
图中的带宽是单向总带宽了,不是单通道带宽。
有一点需要特别注意:由于NVIDIA驱动会自动管理GPU参数,因此在空闲状态下,你看到的GPU对应的PCIe带宽是4GB/s。但实际上,当你在跑代码时候,驱动会自动把带宽拉上来,比如我下面这个图中,带宽就拉到了最高16GB/s。所以不要被迷惑了:
同理,其他比如Perf参数,默认情况下也是P8,当有任务在运行时会自动切换到P2.
补充知识
以下内容来自GPT,仅供参考。
HostBridge和PCIBridge
在计算机硬件中,HostBridge 和 PCIBridge 是用于连接和管理不同类型硬件设备的关键组件。以下是它们的详细解释:
HostBridge(主桥)
HostBridge,也称为主桥,是连接CPU与PCI总线的桥梁。它的主要功能是将处理器与PCI总线上的设备(例如显卡、网卡、存储设备等)连接起来。HostBridge负责处理CPU与PCI设备之间的数据传输,并管理内存控制和I/O请求。
PCIBridge(PCI桥)
PCIBridge,也称为PCI桥,是用于扩展PCI总线的桥接器。它允许连接多个PCI设备,并且可以将数据在不同的PCI设备之间传输。PCIBridge主要用于扩展系统的PCI总线,以便连接更多的PCI设备。PCI桥可以是传统的PCI桥(用于标准PCI设备)或PCIe桥(用于PCI Express设备)。
HostBridge和PCIBridge的损耗
HostBridge和PCIBridge的损耗取决于多个因素,包括硬件架构、连接速度、传输数据类型等。一般来说,这种损耗包括延迟(latency)和带宽(bandwidth)限制。以下是一些常见的损耗类型及其影响因素:
HostBridge和PCIBridge的延迟
- HostBridge延迟:HostBridge通常负责将CPU、内存和I/O设备连接在一起,它的延迟主要由系统总线速度和控制逻辑的复杂性决定。现代系统中,HostBridge的延迟一般在几十到几百纳秒之间。
- PCIBridge延迟:PCIBridge用于将多个PCI设备连接到同一个PCI总线上。它的延迟主要由桥接芯片的设计和连接速度(如PCIe代数)决定。PCIe 3.0及以上版本的单跳延迟通常在几百纳秒到一微秒之间。
HostBridge和PCIBridge的带宽
- HostBridge带宽:HostBridge的带宽取决于系统总线(如QPI、UPI)的带宽。现代高性能系统的总线带宽可以达到几十GB/s。
- PCIBridge带宽:PCIBridge的带宽取决于PCIe版本和通道数。例如,PCIe 3.0 x16的理论最大带宽约为16GB/s,而PCIe 4.0 x16的理论最大带宽约为32GB/s。
实际影响因素
- PCIe版本:不同版本的PCIe(如PCIe 3.0、4.0、5.0)具有不同的带宽和延迟特性。较新的版本通常提供更高的带宽和更低的延迟。
- 通道数:PCIe通道数(如x1、x4、x8、x16)直接影响总带宽。更多的通道数意味着更高的带宽。
- 设备类型:不同类型的设备(如存储、网络、GPU)对带宽和延迟的要求不同。例如,GPU和高速存储设备通常需要更高的带宽和更低的延迟。
- 系统负载:系统负载和并发访问情况也会影响实际的延迟和带宽。例如,多设备并发访问同一个桥接器时,可能会出现带宽竞争和延迟增加。
具体数值示例
- 延迟:现代系统中,HostBridge和PCIBridge的单跳延迟通常在几十到几百纳秒之间。PCIe 4.0的延迟通常比PCIe 3.0低。
- 带宽:PCIe 3.0 x16的最大理论带宽为16GB/s,PCIe 4.0 x16为32GB/s,PCIe 5.0 x16为64GB/s。
PCIe 不同版本的带宽
PCIe 版本与编码开销
对于PCIe带宽,确实可能会看到一些小数点后的差异,这主要是由于数据传输的编码开销等因素导致的。
在PCIe 1.0和2.0中,数据传输使用8b/10b编码,这意味着每传输10位数据中有2位用于编码开销。因此,实际有效的数据传输速率会稍微低于理论上的最大带宽。
从PCIe 3.0开始,数据传输改用128b/130b编码,这意味着每传输130位数据中有2位用于编码开销,编码效率提高,实际有效带宽更接近理论带宽。
具体计算示例:
- PCIe 1.0和2.0
- 每通道带宽:2.5 GT/s(每秒2.5 GigaTransfers)
- 8b/10b编码后实际带宽:2.5 * 0.8 = 2.0 Gbps(每秒2.0 GigaBits)
- 转换为字节:2.0 Gbps / 8 = 0.25 GB/s(每通道)
- x16通道:0.25 * 16 = 4 GB/s(单向)
- PCIe 3.0
- 每通道带宽:8 GT/s
- 128b/130b编码后实际带宽:8 * (128/130) = 7.877 Gbps
- 转换为字节:7.877 Gbps / 8 = 0.985 GB/s(每通道)
- x16通道:0.985 * 16 = 15.75 GB/s(单向)
- PCIe 4.0
- 每通道带宽:16 GT/s
- 128b/130b编码后实际带宽:16 * (128/130) = 15.754 Gbps
- 转换为字节:15.754 Gbps / 8 = 1.969 GB/s(每通道)
- x16通道:1.969 * 16 = 31.51 GB/s(单向)
- PCIe 5.0
- 每通道带宽:32 GT/s
- 128b/130b编码后实际带宽:32 * (128/130) = 31.508 Gbps
- 转换为字节:31.508 Gbps / 8 = 3.938 GB/s(每通道)
- x16通道:3.938 * 16 = 63.02 GB/s(单向)
GT/s跟GB/s的联系
GT/s(GigaTransfers per second)和GB/s(GigaBytes per second)是衡量PCIe(Peripheral Component Interconnect Express)接口带宽的两个不同单位。GT/s表示每秒的传输次数,而GB/s表示每秒传输的数据量。为了将GT/s转换为GB/s,需要考虑编码开销和数据位宽。
转换关系
- 数据传输速率:PCIe传输速率以GT/s为单位,表示每秒传输的次数(或符号率)。
- 编码开销:PCIe不同版本采用不同的编码方式,影响有效带宽。
- PCIe 1.0和2.0采用8b/10b编码,每10位中有2位用于开销,有效带宽为理论带宽的80%。
- PCIe 3.0及以后采用128b/130b编码,每130位中有2位用于开销,有效带宽为理论带宽的98.46%。
- 数据位宽:1 Byte = 8 bits,转换时需要将比特速率(Gbps)转换为字节速率(GB/s)。
转换步骤
- 计算每通道的有效传输速率(Gbps)。
- 将Gbps转换为GB/s。
具体计算
以下是不同版本PCIe每通道(lane)的单向带宽计算:
- PCIe 1.0和2.0
- 每通道:2.5 GT/s
- 8b/10b编码有效带宽:2.5 GT/s * 0.8 = 2.0 Gbps
- 转换为GB/s:2.0 Gbps / 8 = 0.25 GB/s
- PCIe 3.0
- 每通道:8 GT/s
- 128b/130b编码有效带宽:8 GT/s * (128/130) = 7.877 Gbps
- 转换为GB/s:7.877 Gbps / 8 = 0.985 GB/s
- PCIe 4.0
- 每通道:16 GT/s
- 128b/130b编码有效带宽:16 GT/s * (128/130) = 15.754 Gbps
- 转换为GB/s:15.754 Gbps / 8 = 1.969 GB/s
- PCIe 5.0
- 每通道:32 GT/s
- 128b/130b编码有效带宽:32 GT/s * (128/130) = 31.508 Gbps
- 转换为GB/s:31.508 Gbps / 8 = 3.938 GB/s