以 PCIe3.0 x16 情况举例,由于 PCIe 是一种全双共传输总线,因此计算其双向传输
带宽和频率的关系为:8GHz * 16bit / 8bit * 2 = 32 GB/s
实际上由于 PCIe 采取 8/10bit、128/130bit 编码传输,实际有效代码需要乘以对应的系数。
NTB
有些特殊场景下,比如传统存储系统中的多个控制器,它们之间需要同步很多数据和控制信
息,希望使用 PCI-E 链路直接通信。但是在 switch 上有多个 RC 设备时并不可以直接通信,
因为主机的 BIOS 或者 OS 在枚举同一堆 PCIe 总线内的设备,并为其分配访问地址,此时
会出现冲突。为了满足这个需求,出现了 NTB 技术。
其基本原理是地址翻译,因为两个不同的系统(术语 System Image,SI)各有各的地址空间,
会产生重叠。那么只要 在 PCI-E Switch 内部将对应的数据包进行地址映射翻译,便可以实
现双方通信。这种带有地址翻译的桥接技术叫做 None Transparent Bridge,非透明桥。
PCIe 总线的缺点
由于采用了基于总线的共享传输模式,在 PCI 总线上不可能同时传送两组以上的数据,当
一个 PCI 设备占用总线时,其他设备只能等待;
随着总线频率从 33MHz 提高到 66MHz,甚至 133MHz(PCI-X),信号线之间的相互干扰变
得越来越严重,在一块主板上布设多条总线的难度也就越来越大;
由于 PCI 设备采用了内存映射 I/O 地址的方式建立与内存的联系,热添加 PCI 设备变成了一
件非常困难的工作。目前的做法是在内存中为每一个 PCI 设备划出一块 50M 到 100M 的区
域,这段空间用户是不能使用的,因此如果一块主板上支持的热插拔 PCI 接口越多,用户
损失的内存就越多;
PCI 的总线上虽然有 buffer 作为数据的缓冲区,但是它不具备纠错的功能,如果在传输的过
程中发生了数据丢失或损坏的情况,控制器只能触发一个 NMI 中断通知操作系统在 PCI 总
线上发生了错误
ARI 功能
1. ARI 背景介绍
Alternative Routing-ID Interpretation,顾名思义,可替换的 Routing ID,意味着这是一种
要把 Routing ID 的部分或全部替换掉的机制。通常来讲,Requester ID 和 Comleter ID 等