数据速率与吞吐量:RGMII 1000Mbps vs RMII 100Mbps

做接口选型,第一个跳出来的问题就是:你到底需要跑多快?
RGMII 标称 1000Mbps,RMII 标称 100Mbps,差了一个数量级。
但「标称」和「实际能跑多少」是两码事。我见过不少项目,选型时只看理论峰值,结果实测吞吐量直接砍半……今天咱们就把这笔账算清楚。

理论速率到底怎么算出来的?

先把数学公式摆出来,其实不复杂:

  • RGMII:时钟 125 MHz,DDR 双沿采样,数据线 4 bit。
    速率 = 125 MHz × 2 (双沿) × 4 bit = 1000 Mbps。
  • RMII:时钟 50 MHz,SDR 单沿采样,数据线 2 bit。
    速率 = 50 MHz × 1 (单沿) × 2 bit = 100 Mbps。

你看,RGMII 靠「抬高时钟 + 双沿 + 宽位宽」三管齐下,把速率推上去了。
但 RMII 的 50 MHz 时钟也是折衷——它故意砍了时钟频率,好让 PCB 走线更容易。说白了,这是用性能换设计余量。

我习惯在项目初期就把这个公式写在笔记本首页。为什么?
有一次客户拿着 RMII 的 FPGA 方案说想跑千兆,我当场给他算了这笔账——时钟频率翻倍根本不可能,最后老老实实换了 RGMII。

时钟频率与数据位宽的实际影响

很多人只盯着 Mbps 数字,忽略了物理层实现代价。这里我做了个对比表,一看就明白:

参数 RGMII RMII
时钟频率 125 MHz 50 MHz
采样方式 DDR (双沿) SDR (单沿)
数据线宽度 4 bit 2 bit
理论线速率 1000 Mbps 100 Mbps
参考时钟抖动要求 < ±50 ps < ±150 ps
PCB 走线约束 严苛 (等长 ±50 mil) 宽松

看到时钟抖动那行没?RGMII 对时钟质量敏感得多。
我在一个 8 层板项目里吃过亏:晶振的 RMS 抖动 60 ps,RMII 跑得稳稳的,一换 RGMII 就丢包。后来换成专用振荡器才解决。这就是 125 MHz DDR 的脾气。

有效吞吐量:理论 vs 现实

别以为 1000 Mbps 就能传 1000 Mbps 的数据。MAC 层有帧间隙、前导码、CRC,这些都要算进去。

以标准以太网帧 1518 字节为例:

  • 有效载荷 1500 字节
  • 帧间隙 12 字节 + 前导码 8 字节 + 帧头 14 字节 + CRC 4 字节 = 总开销 38 字节
  • 线速效率 = 1500 / (1518 + 12 + 8) ≈ 97.5%

所以:

  • RGMII 实际吞吐量 ≈ 1000 Mbps × 97.5% ≈ 975 Mbps
  • RMII 实际吞吐量 ≈ 100 Mbps × 97.5% ≈ 97.5 Mbps

嗯,这里要注意:上面算的是连续大包场景。如果全是 64 字节小包,效率会掉到 66% 左右。RGMII 掉到 660 Mbps,RMII 掉到 66 Mbps。所以做交换机、路由器的时候,一定要用小包做压力测试。

我曾经踩过的坑: 某 IoT 网关项目,用 RMII + 百兆 PHY,理论 100 Mbps。客户说「够了,我们小包数据量不大」。结果现场跑的是 64 字节的传感器心跳包,每秒 15 万个,算下来有效带宽直接被打到 45 Mbps 左右,CPU 中断都爆了。所以别只看理论峰值,要算「最坏场景有效吞吐量」。

为什么 RGMII 能跑千兆而 RMII 不行?

从时序角度再深挖一层。RMII 的 50 MHz 单沿 2 bit,确实可以用更低速的 FPGA I/O 和更宽松的 PCB。
但想把它推到千兆?除非把时钟提到 500 MHz 或者把数据线扩到 20 bit……这种方案在工业界基本不存在。

RGMII 聪明在哪?它用了 DDR 技术,在 125 MHz 时钟下同时采上升沿和下降沿,等效频率 250 MHz。再加上 4 bit 位宽,刚好凑出 1000 Mbps。

我2015年做过一个项目,为了省成本,想用 RMII + 4 bit 数据线(自己魔改)跑千兆。结果 PHY 芯片不支持,MAC 层时序对不上,折腾两周放弃了。所以——

一句话建议: 千兆只能选 RGMII(或 SGMII/1000BASE-X),百兆选 RMII。不要试图改造 RMII 跑千兆,那是死路。

下面这张图把两个接口的时钟、位宽、采样方式与速率的关系串起来了:

RGMII vs RMII 数据速率对比 RGMII 时钟: 125 MHz 双沿采样 (DDR) → 等效 250 MHz 数据宽度: 4 bit 每个时钟周期可传 4 位 理论速率: 1000 Mbps 125 × 2 × 4 = 1000 Mbps 有效吞吐量 (1518B): ≈ 975 Mbps 小包下约 660 Mbps RMII 时钟: 50 MHz 单沿采样 (SDR) → 等效 50 MHz 数据宽度: 2 bit 每个时钟周期可传 2 位 理论速率: 100 Mbps 50 × 1 × 2 = 100 Mbps 有效吞吐量 (1518B): ≈ 97.5 Mbps 小包下约 66 Mbps RGMII 用更高时钟 + 双沿 + 更宽数据线实现 10x 速率

选型时看速率,更得看背后的系统代价

这么多参数下来,结论其实很清晰:

  • 如果你的产品只跑百兆(比如智能家居网关、工业传感器集线器),RMII 是省心之选。时钟要求低,PCB 容易画,IO 需求量少。
  • 如果你需要千兆上行(比如路由器 WAN 口、NAS、视频监控 NVR),RGMII 是唯一选择,但要做好信号完整性功课。

我自己的经验法则是:

  • 100 Mbps 场景 → RMII(省钱、省引脚、省开发时间)
  • 1000 Mbps 场景 → RGMII(别犹豫,老老实实做阻抗控制)
  • 不确定场景 → 选支持双模的 PHY + 可切换 MAC,硬件预留两组接口,软件根据实际需求切换

最后提醒一句:别被「理论峰值」忽悠。我在实验室测过很多次,RGMII 跑满 1000 Mbps 需要 MAC、PHY、DMA 三方配合,任何一方有瓶颈,实际吞吐量就掉到 800 Mbps 甚至更低。RMII 同样,100 Mbps 的 PHY 配上垃圾主控,跑 60 Mbps 也常见。所以——

看数据手册的「典型吞吐量」那一栏,别只看「最大支持速率」。 如果有条件,让芯片厂商提供实际打流测试报告。