串行互连接口的速率在过去几年里得到了显著提高,每线的速率从2.5Gbit/s提高到10Gbit/s,而每个接口可以容纳1到32线。8B10B作为互连接口的一种编码技术,设计简单、性能出众,因此成为应用最广泛的技术。然而,它的系统开销高达25%,问题突出。为了解决这个问题,设计者们一直在探寻改进的方法。本文就将介绍一些低开销的编码技术,并讨论它们的优势与存在的问题。
编码技术基础理论
目前,高速接口正在被广泛应用于包括SATA、SAS、高速PCI等多种标准中。这些接口的速率甚至可以达到并超过每线10Gbits/s。同时,所有主流ASIC和FPGA平台也都支持这些高速接口技术。从结构上看,这些高速接口主要包括三个组成部分:
电路部分(串行/解串行)
物理部分(实现编码)
链路与协议部分(高层)
支持多速率、多协议的串行/解串行器已经实现。以OIF(光互联论坛)为例,他们已经为两组速率制定了电路规范,分别为5Gbits/s-6.375Gbits/s和10Gbits/s-11Gbits/s。OIF同样为两种应用距离制定了规范,分别为短距离(采用一个连接器,8英寸)和长距离(采用两个连接器,40英寸)。串行/解串行器还可以被设计用来满足更多的规范,包括不同的速率、距离、电路规格等等。
物理部分的主要任务是对数据进行编码,以保证串行/解串行器的正常运行。这些编码的目的包括:确保必须的变换(“1”到“0”和“0”到“1”的变换),保证稳定的直流均衡(“0”码与“1”码的个数相当),以及满足其它标准的要求(最大化信道带宽利用率,提高对误差的容忍能力等等)。
以Manchester编码为例,这种编码技术被广泛应用于10Mbit/s以太网连接中。它的编码方式非常简单,就是将“1”编码为“01”,将“0”编码为“10”。从编码原理我们可以推断出:
最大相同连续字符数为2(正常情况下连续出现两个以上连续“0”或“1”是不可能的)。
保证稳定的直流均衡(“0”的个数与“1”的个数总是相同的)。
具备1bit误码纠错能力(“00”或者“11”是无效码)。
高达100%的系统开销。
扰码技术是串行链路常用的另一种编码技术。这种技术将伪随机序列与原始码流混合,以实现转换、直流均衡等目的。伪随机发生器由线性反馈移位寄存器产生的最长序列(m序列)构成1。此序列的周期为2n,其中n为线性反馈移位寄存器特征多项式的最高阶。例如SONET/SDH的特征多项式为x7+x6+1,它的序列长度为27-1,即127。
扰码器包括两种类型,分别为边扰码器与自同步扰码器。通常,边扰码器的寄存器状态与发送数据异或构成它的下一个状态,这需要在输入与输出之间“重置/同步”扰码器状态。自同步扰码器直接将输入数据作为扰码器状态,不需要重置和同步过程。
8B10B编码技术
8B10B是应用最广泛的编码技术。它被用于串行连接SCSI、串行ATA、光纤链路、吉比特以太网、XAUI(10吉比特接口)、PCI Express总线、InfiniBand、Seria RapidIO、HyperTransport总线以及IEEE1394b接口(火线)技术中。
8B10B2将8bit代码组合编码成10bit代码,代码组合包括256个数据字符编码和12个控制字符编码(如表1所示)。通过仔细选择编码方法可以获得不同的优化特性。这些特性包括满足串行/解串行器功能必须的变换;确保“0”码元与“1”码元个数的一致,又称为直流均衡;确保字节同步易于实现(在一个比特流中找到字节的起始位);以及对误码率有足够的容忍能力和降低设计复杂度。
8B10B中所有的编码都具备3到10种变换。每个码字确保:
在一行中不会产生超过四个连“1”或连“0”;
“1”与“0”的不平衡度(不平衡度指“0”的个数减去“1”的个数)不会超过2个码字(5个“1”/5个“0”,4个“1”/6个“0”或4个“0”/6个“1”)。
8B10B采用一种简单的方法保证了编码的直流平衡。在不平衡时,采用两个10bit字符表示一个8bit字符,其中一个称为RD-,表示“1”的个数比“0”多2个,另一个称为RD+,表示“1”的个数比“0”少2个。选取合适的RD字符可以保证不平衡度不大于1。同时,采用只有在控制字符(K28.5,K28.1,K28.7)中才有的特殊字符可以保证同步定位的准确。
8B10B借助总共268个字符及它们的反转码,还可以检测任何可能破坏不平衡的误码。但是,即使接收机接收到了正确的码字,有时它们也有可能因为不平衡性而导致误码,这种现象被称为误码复制。8B10B编码技术将8bit数据分成3bit和5bit两组,因此可以看作是3B4B和5B6B编码技术的组合。
改进传统8B10B编码技术的一种方法是,在编码之前增加扰码过程。有证据证明,特殊的模式3或差分群时延可能会导致重复模式产生不可预测的误码。解决这个问题最直接的办法就是在编码之前对数据进行扰码。
以上这些特点保证了8B10B编码成为使用最广泛的编码技术。它最主要的缺点只有一个,就是高达25%的系统开销。
低开销编码
最近,人们提出了几种降低8B10B编码技术系统开销的改进方法。这些改进主要基于以下两个基础:一是随着链路速率与数量的增加,25%系统开销的问题显得越来越突出;二是集成技术的进步,使得硬件复杂度不再像过去那样重要。
在这些低开销的改进技术中,有四个非常相似的技术脱颖而出,受到人们的广泛关注:
64B66B编码技术,应用于10G以太网4;
OIF CEIP5;
10GBase-KR6,应用于10GbE背板连接;
Interlaken7。
这些技术的共同点是,都以提高硬件设计复杂度(门数目)为代价,换取了较低的系统开销。
64B66B编码技术。这种技术应用于10G以太网(10GBase-R),是一种编码与扰码相结合的技术。首先,数据被分成8个字节一组(总共64比特)。然后,这些字节采用自同步扰码实现随机化,其特征多项式为x58+x39+1。最后,如果这些8字节组是数据字符,那么会加上“01”标识;如果有一个或多个字节是控制字符,那么就会加上“10”标识。
表1. 主要标准中的控制码字使用
在此编码技术中,将8个字节的字符(由8B10B编码定义,可能是数据或控制字符)编码为64比特长字符的过程通常被称为转换代码。GFP-T8为组合8B10B的8比特为64比特字符提供了标准方法。而10GbE为10G以太网和10Gbit/s光纤链路提供了相关子集的映射表。用于同步定位的“01”和“10”比特不参与扰码过程。这是因为其它比特在扰码后可能取任何值,只有同步比特“01”和“10”在经历长途传输后基本保持不变。同步比特还可以保证每隔66比特至少会发生一次转换。
CEI-P编码技术。这种技术由OIF定义。它的系统开销与64B66B编码相等,大约为3%。当然,它还有很多不同之处。
CEI-P采用边扰码,特征多项式为x17+x14+1。这样做的优点是可以有效防止误码复制的产生(扰码的状态不会受之前产生的误码影响),缺点是需要在发送与接收之间同步扰码状态。
当边扰码与线路误码无关时,如果发送数据与扰码值相同(或恰好相反),那么扰码器会输出非常长的“1”或“0”序列。而这种非常长的扰码输出序列比短的序列对误码的容忍能力更强。
CEI-P编码采用帧同步取代定位同步。64B66B采用同步比特实现定位,而CEI-P将24个64比特码字看作一帧,这样用1个比特就可以实现数据或控制字符的判定。附加的24比特用于误码校验与信令。其中误码校验使用20比特,采用fire-code技术,可以纠正长达7比特的突发误码串。
10GBase-KR编码技术。这种技术的系统开销与CEI-P一致,都是3%,主要的不同在于帧的长度是32个码字,而不是24个码字。这样一来纠错码长度就是32比特,可以纠正比CEI-P更长的突发误码串。而它采用的扰码规则与10GbE相似。只不过它的扰码多项式与10GBase-R一致,寄存器采用的初始序列为“010101……”,而且每一帧重置一次。
Interlaken PHY编码技术。Interlaken编码技术的系统开销为4.5%(64/67)。它的码字基于64比特。与其它低开销编码技术相比,Interlaken的主要不同之处在于:
同步信号为3个比特,其中两个比特用于区分数据与控制,一个比特用于标识数据是否转化。数据转化比特的目的与8B10B类似,都是为了保证直流平衡;
Interlaken采用与10GbE相同的边扰码特征多项式实现扰码。这样可以避免因采用自同步扰码器所导致的误码复制问题。一个同步码字用于传递扰码器状态,而且它非常长的扰码长度保证不会出现很长的连“0”或者连“1”;
表2. 编码技术的对比
整个链路采用CRC32循环冗余校验方式保证误码校验。
表2对比了以上讨论的几种编码技术的异同,主要包括以下几点:
实际采用情况;
系统开销;
转换密度与直流平衡;
同步定位;
误码(保护、校验、复制);
硬件复杂度(门数目)。
虽然8B10B编码行之有效,而且被广泛采用,但是它高达25%系统开销的缺点在未来数百吉比特链路与系统应用中显得越来越突出。现在已经有若干种低开销的编码技术,它们具备不同的优势与缺点。但是到目前为止,还没有哪种低开销技术能够脱颖而出,成为继8B10B之后被广泛采用的首选技术。不过,本文所提到的几种技术都以提高硬件复杂度为代价,以满足低开销的要求。
参考文献
1. PN Sequence Generator, http://www.mathworks.com/.
2. A. X. Widmer, P. A. Franaszek, “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code,” IBM J. Res. Develop., Vol. 12, No. 5, Sept. 1983.
3. Andrew W. Moore, et al., “Explaining Structured Errors in Gigabit Ethernet,” Inte Research Report, IRC-TR-05-032, 2003.
4. IEEE 802.3 Standard, 2006.
5. CEIP, “Common Electrica I/O - Protoco (CEI-P) Implementation Agreement,” IA# CEI-P-01.0, OIF March 2005.
6. 10GBase-KR draft 3.0, http://www.ieee802.org/3/ap/.
7. Interlaken Protoco Definition, version 1.03, July 2006, http://www.cortina-systems.com.
8. ITU-T G7041/Y.1303, pp. 30-32, December 2001.