原创 用于高速密集并行总线通信的零和信号方法(第1部分)

2013-10-16 10:24 851 9 9 分类: 通信
一些复杂的数字系统,比如高性能计算机(HPC),在处理单元之间或在处理单元与内存之间路由信号时经常广泛使用高速电气互连。尽管串行器/解串器(SerDes)和内存接口速度在不断提高,但仍要求在受限的物理空间中提供更高带宽的总线,同时降低并发开关噪声(SSN)。零和信号概念是在数据总线上使用编码机制,允许使用单端缓冲器同时仍能降低并发开关噪声,因此与传统差分信号相比,可以将物理通道(例如电路板走线)数量减少近2倍。通过仿真和分析实际的(非理想的)数据总线和供电网络架构,我们展示了零和信号的可行性,并与传统(单端和差分)方法进行了性能比较。 引言 许多数字系统(如高性能计算机HPC)都广泛使用差分和单端通道及总线。例如,经常将高速差分串行通道用于处理器至处理器的通信,而密集单端总线通常用于处理器到内存接口。差分信号有许多优势(比如共模噪声抑制,降低并发开关噪声(SSN)等),但所用互连走线的数量是单端信号的两倍。我们建议中间解决方案可能是最优的。考虑用一组缓冲器驱动2N条互连走线,在任何给定的时间点,这些走线中有N条处于逻辑高状态(拉电流),其它N条处于逻辑低状态(灌电流),但不存在差分系统所具有的限制(即高低状态对必须相邻)。 我们称之为“零和信号”,因为它保留了差分缓冲系统的一个最重要特性——独立于输出状态的恒定供电电流输出。这种恒流特性可以极大地减少与系统电感交互的开关电流瞬变,因而能降低供电电压瞬变,减少相关的数据塌陷。通过在任何时间点使用单端走线和合适的编码机制在总线上创建数量平衡(或接近平衡)的逻辑高低状态,我们可以沿着2N条走线传送比差分信号协议更多的数据,并且随着总线数量(N)的增加而接近单端极限。 本文将首先简要介绍零和信号方法的理论,然后详细讨论编码方法以及产生成组的平衡和接近平衡的代码字。接下来使用时域仿真方法评估零和信号应用于包括真实有源与无源单元的概念性HPC环境的可行性。 在仿真部分,我们将研究工作条件的许多变化并观察对高速链路性能的影响。性能评估是通过在并行总线上使用标称和更苛刻的位图案激励条件展开的,同时在链路末端监视垂直眼图开度等指标。最后,文章提供了总结性的评论,并对今后的工作提出了一些建议。

分页导航

• 第1页:引言• 第2页:零和信号方法的基本工作原理
• 第3页:零和编码• 第4页:用于仿真的编码方法
延伸阅读用于高速密集并行总线通信的零和信号方法(第2部分) 用于高速密集并行总线通信的零和信号方法(第3部分)
《电子技术设计》网站版权所有,谢绝转载 零和信号方法的基本工作原理 在这篇文章中总共讨论了三种不同的并行总线数据传输方法,即单端(SE)、差分(DIFF)和零和(ZS)。在印刷线路板(PWB)走线数量固定的情况下,使用三种信号机制可以传送的数据比特数量见下表1。需要注意的是,表中所示的零和比特数量公式来自计算总比特数为2N时可用的代码数量,其中N个比特是1,N个比特是0。随着N增长,零和数据比特数量将接近单端数据比特数极限。

zrsmsgnlmthd4hsdpbuscom-t1.jpg
表1:单端、差分和(最佳的)零和信号机制比较。

很显然,对于二元传输而言,表1中非整数的零和数据比特是不现实的。不过换个思路,我们可以有效地反过来利用这些公式计算使用这些信号机制传送固定数量比特所需的走线数量。这些公式的结果见下面的表2。针对零和情况,我们自我限制为偶数的走线数量(否则1和0的数量就不可能相等),然后计算可以支持给定数据比特数的最小偶数走线数。

zrsmsgnlmthd4hsdpbuscom-t2.jpg
表2:各种信号机制为了支持固定的数据比特数而需要的走线数量。

图1是针对32位数据总线的概念化单端、差分及零和链路的比较框图。

zrsmsgnlmthd4hsdpbuscom-p1.jpg
图1:传统信号机制(单端和差分)与零和信号机制的比较。(23489v3)

值得注意的是,这个概念可以延伸到采用“接近零和”的编码机制。在这种情况下,1和0的数量不必相等,而是可以有一定程度的“差值”d(比如d = ±2、±4等)。这时可能导致有限电流开关,进而增加并发开关噪声(SSN),但由于具有代码字扩展集的优势,因此给定走线数量理论上可以支持更多的比特数。即使我们将零和信号概念扩展到包含接近零和编码,我们因此也会继续使用术语“零和信号”来表示两种情况下的通用概念,并使用术语“差值”反映在零和总线上任一时间瞬间允许的1和0数量间的差别。 表1中用于计算可以通过给定数量走线传送的(编码后的)比特数的公式可以扩展适应如下所示的有限差值。2N比特(实际上有N-k个1和N+k个0)上可用的代码字数量(也就是差值等于2k的代码字)可以根据以下公式计算:

zrsmsgnlmthd4hsdpbuscom-f1.jpg

同样这个公式可以用来计算具有N+k个1和N-k个0的代码字数。通过累加差值为d、小于等于给定值的代码字总数并对这个数字求底为2的对数可以计算得到所有代码字的有效比特数量。例如,

zrsmsgnlmthd4hsdpbuscom-f2.jpg

在下表3中,我们用这些公式计算在一组假设为物理互联走线上获得支持的数据比特数量,这些走线使用具有多种可允许差值(简写为“ZS±d”)的零和信号机制。注意在括号中,我们给出的是这个计算值的整数部分,因为一般人只对使用总线传送每个字的整数比特数感兴趣。为了便于比较,同时给出了单端(SE)和差分(DIFF)数据比特的数量。

zrsmsgnlmthd4hsdpbuscom-t3.jpg
表3:各种信号机制在固定数量的走线上支持的数据比特。

同样,我们可以反过来用这些公式计算使用任一种信号机制传送固定数量比特所需的走线数量。这些公式的结果见下面表4。跟前面一样,我们计算可以支持至少给定数据比特数量的最小偶数整数。注意,允许有限差值会开启代码空间,以便可以传送额外比特,但由于限制为偶数根走线,因此ZS±4允许的增量代码空间不允许相对于ZS±2的走线数量减少(至少对于表格中考虑的情况是这样)。

zrsmsgnlmthd4hsdpbuscom-t4.jpg
表4:各种信号机制(包括具有有限差值的零和)为了支持固定数量的数据比特而要求的走线数量。

在进行仿真之前,有必要研究零和编码的数据的产生方法,这将是下一节讨论的内容。随后再介绍仿真细节和结论。

分页导航

• 第1页:引言• 第2页:零和信号方法的基本工作原理
• 第3页:零和编码• 第4页:用于仿真的编码方法
延伸阅读用于高速密集并行总线通信的零和信号方法(第2部分) 用于高速密集并行总线通信的零和信号方法(第3部分)
《电子技术设计》网站版权所有,谢绝转载 零和编码 为了用仿真或硬件方法实现零和信号概念,有必要将任意数据字编码成一组平衡的代码字,或反过来将平衡的代码字解码成任意数据字,其中代码字包含相同数量的1和0比特。许多应用已经对平衡的编码和解码[1]、[2]、[3]、[4]、[5]进行了充分的研究,包括数据传输和存储。用于数据传输的平衡编码一般支持转换密度目标和无直流特性,这是电子和光学链路所需要的。一些编码技术还能满足数据完整性以及误码检测和纠错。 诸如8b10b等流行的传输编码技术能够满足经过单个串行通道传送的比特流需要。8b10b编码并不是完美的平衡码,但可以确保20个比特的流中的差值不超过2个,而且不会出现连续5个以上的1或0。另一方面,零和编码必须满足并行数据“字”,确保在数据总线上同时传送相同数量的1和0比特。因此,对零和编码来说需要另外的编码/解码机制和另外的硬件实现。 为了达到本文的目的,主要要求是开发出可以为仿真提供数据编码的方法。这个任务相对简单,因为对可用于这个目的的计算资源没有特殊的限制。针对仿真目的的编码支持将在下一节讨论。当然,零和信号的实际实现要求用硬件高效地实现有效编码机制。这个问题的解决要难得多,超过了本文要讨论的范围。

分页导航

• 第1页:引言• 第2页:零和信号方法的基本工作原理
• 第3页:零和编码• 第4页:用于仿真的编码方法
延伸阅读用于高速密集并行总线通信的零和信号方法(第2部分) 用于高速密集并行总线通信的零和信号方法(第3部分)
《电子技术设计》网站版权所有,谢绝转载 用于仿真的编码方法 在随后的分析章节中描述的电路仿真要求为“典型”案例提供基本的随机数据集。“最坏”情况图案可以由深入了解系统弱点的工程师提供。针对单个链路或不相关的单端链路的随机数据可以由仿真环境中可用的伪随机比特流(PRBS)提供。然而,平衡的代码字的随机流要求特殊的处理。 简单的编码方法可以采用代码字的查找表,其中每个数据值代表进入查找表的索引。随机代码字可以通过从查找表随机选择条目来产生。 在编码小的数据集时这是很容易实现的,但随着数据比特数的增加,这种做法将越来越难,而且解码也需要搜索表格。然而,出于这些仿真的目的,查找表是合适和有效的。对小的代码字集来说,可以产生整个表。而对大的代码字集来说,查找表可以用随机选择的平衡(或接近平衡)代码字填入。由于仿真(至少)要求数百个代码字,因此有1万个条目数量级的查找表在大小上足够了,并且容易产生或存储。 不管用于查找表的代码字值是枚举产生的还是随机选择的,候选代码字都要转换成二进制,并对1和0比特进行计数。平衡的代码字有相同数量的1和0比特。如上所述,“接近平衡的”代码字具有受限的差值,由0和1比特数量的差值d确定。举例来说,针对2*N = 4(线)的情况,代码字是4比特,因此共有24 = 16个。针对4比特的代码字及它们的差值列举在表5中。(注意,每列中的代码数量可以从Pascal的三角函数得到)

zrsmsgnlmthd4hsdpbuscom-t5.jpg
表5:4位代码字的差值。

我们开发了Matlab软件代码用于产生具有特定代码大小和差值的代码字集,然后随机产生代码字用作仿真的输入。例如,考虑N = 8的情况,此时零和编码要求12根线(相比之下差分信号要16根,单端信号要8根)。对40个12比特代码字执行Matlab软件产生的结果如图2所示。结果中的每一列代表一个平衡的代码字,其中有6个0和6个1。每一行代表仿真的输出缓冲器发送的比特流。

zrsmsgnlmthd4hsdpbuscom-p2.jpg
图2:Matlab产生的12比特平衡代码字例子。

点此进入文章“第2部分”

分页导航

• 第1页:引言• 第2页:零和信号方法的基本工作原理
• 第3页:零和编码• 第4页:用于仿真的编码方法
延伸阅读用于高速密集并行总线通信的零和信号方法(第2部分) 用于高速密集并行总线通信的零和信号方法(第3部分)
《电子技术设计》网站版权所有,谢绝转载
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条