我有一台配备 i7-2600K 的机器,我正在将其转变为存储服务器。它使用 P67 芯片组,使用 20 Gb/s DMI 接口连接到 CPU。板上还有直接连接到 CPU 的 pcie x8/x8 插槽。我考虑将 8 个 SATA 驱动器连接到板载控制器(使用 DMI),并通过 DELL Perc 6/i pci-e x8 控制器连接 8 个 SATA 驱动器,以使用 rr-bonding 通过四路 10 Gb/s 网络接口导出它们。
但是,即使我们忽略所有瓶颈,我也不确定这个 CPU 是否在理论上能够提供 40 Gb/s 的 i/o。是否可以估算出 CPU 的最大理论 i/o 吞吐量?
答案1
它使用 P67 芯片组,该芯片组使用 20 Gb/s DMI 接口连接 CPU。板上还有直接连接到 CPU 的 pcie x8/x8 插槽。
错误,外围总线(例如 PCIe 和 SATA)不直接连接到 CPU。PCIe
、SATA、USB 和内存不直接连接到 CPU,而是具有控制器(即辅助逻辑),这些控制器可与某种高速系统总线接口。CPU 的地址和数据总线通常直接连接到这样的系统总线。
请注意,现代 CPU芯片高度集成(例如,系统级芯片,SoC,是可能的),并且系统芯片(例如,北桥/南桥芯片)的功能可以更靠近 CPU,以通过更紧密的集成来提高性能。此类 CPU 芯片可能具有 PCIe 和 SATA 连接,因为它们集成了这些控制器。但这并不意味着此类外围设备“直接接线”至任何处理器。
是否可以估算 CPU 的最大理论 I/O 吞吐量?
是的,但使用编程 I/O 的吞吐量并不是一个有意义的数字。
由于现代计算机系统通常使用第二方或第三方 DMA(而不是编程 I/O)执行 I/O,因此 CPU 仅在典型 I/O 操作的开始和结束时参与。
换句话说,CPU 不会成为 I/O 瓶颈。
请参阅https://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400
和https://stackoverflow.com/questions/38119491/master-for-interrupt-based-uart-io/38155310#38155310
因此,你的问题应该改写为:
“是否可以计算计算机的理论 I/O 吞吐量?“。
I/O 操作的一个上限是内存带宽。由于 I/O 始终在外设和主内存之间进行(忽略使用总线主控的外设到外设传输的罕见情况),内存速度可能是一个瓶颈。由于主
内存通常比任何单个外设都快得多,因此问题更可能是 DMA 控制器、总线主控和 CPU 对内存访问的争用,这需要由内存控制器进行仲裁。