标题：xdr2
XDR2 DRAM系统架构
Rambus表示，XDR2内存芯片的标准设计位宽为16bit（它可以像XDR那样动态调整位宽），按每个数据引脚的传输率为8GHz，即8Gbps计算，一枚XDR2芯片的数据带宽就将达到16GB/s，与之相比，目前速度最快的GDDR3-800的芯片位宽为32bit，数据传输率为1.6Gbps，单芯片传输带宽为6.4GB/s，只是XDR2的40%，差距十分明显。
XDR2 DRAM的设计精华——MT架构
XDR2在设计之初就着眼于图形显示卡应用领域，而在这一应用领域中，常用到的访问操作与PC机上的主内存有所不同，那就是经常会访问一些小容量的离散数据集合，因此有必要对这类应用进行优化。XDR2架构的一大创新就是针对这一操作进行架构优化，Rambus将其称之为微线程架构（Micro-Theaded，MT）。 对此，Rambus用原来的RDRAM架构与XDR2进行了对比。         我们知道，RDRAM有两个数据通道（Data Pins），每个通道位宽为8bit。RDRAM的一个逻辑Bank由两个子Bank组成，每个子Bank各接有一个数据通道，合计16bit。在工作时，两个子Bank同时寻址并将各自的数据传向数据通道A与数据通道B。如图1所示。  假设行寻址命令的间隔周期是8ns（指在发出行寻址命令8ns后才能向其他逻辑Bank发送新的行寻址命令），列命令间隔周期是4ns（发出列寻址命令4ns后才能向其他Bank发送新的列寻址命令），而数据通道中的传输周期为0.25ns（4GHz），由此计算出，在一次行访问间隔内，数据通道共传输了32次数据（8ns/0.25ns），数据通道A+B的位宽为16bit，因此共计512bit的数据，即64字节；而在一次列访问间隔中，共传送16次数据（4ns/0.25ns），数据通道A+B的总带宽为256bit，即32字节。这就是传统RDRAM结构所体现的一次行访问容量与一次列访问容量（也可称之为访问颗粒度），也就是说传统的RDRAM核心在一次行访问间隔中至少要传输64字节的数据，而在一次列访问间隔中，至少要传输32字节的数据。如图2所示。  但是，在显卡的应用中，这样大的颗粒度往往会造成带宽的浪费，因为在访问一个图形对象时，一般用不到如此大的数据量，这与图形应用的特点有很大的关系。 
当我们把DRAM中的一行拿出来以列访问容量为单位做成一个二维表格时，我们就能清楚地看到显示卡在访问一个三角形的数据时所进行的寻址情况，如图3所示。假设需要访问的是由6个像素组成的三角形（3D绘图的基本单元就是不同大小的三角形），每个像素占用4个字节（典型的RGBA/32bit格式），那么，这6个像素组成的三角形就是24个字节的容量。  虽然对于一个列访问容量为32字节的DRAM架构来说，一个列访问容量就包括了一个三角形，但是，三角形的数据并不是存放于一个列中的，就像在屏幕中，组成三角形的像素不会是线性排列的一样，因此，在访问这些数据时，就需要访问多个列（因为图形数据是线性写入显存的，这就造成了三角形各像素是分布式存储的）。从图3可以看出，对于6像素的三角形来说，至少要访问2列，最多要访问4列，而对于4列来讲，就相当于读取128字节，但这其中只有24字节是需要的，其他的数据就白白地占用传输带宽与时间。所以，要想提高内存在显卡应用中的效率，在提升传输频率的同时还要有效降低访问颗粒度，而这就是MT架构的设计初衷。
MT架构的实现
从理论上，我们不难分析出，要减少行与列的访问颗粒度，首先就要将行与列的访问间隔缩小，其次就是减少每次列数据输出的容量。在这方面，XDR2先是在工作频率上进行了改进，将命令与控制总线（RQ）的工作频率提升至2GHz，是500MHz时钟频率的4倍，换句话说，就是在原有一个时钟周期内，现在理论上可以发送4个命令。 而最关键的改进是DRAM核心的全新设计。简单说，它是在XDR的外衣下采用了与RDRAM相似的核心设计——再次采用了A+B双数据通道的设计，A和B通道各8bit，并且将逻辑Bank从XDR的8个增加至16个，不过，A和B数据通道是各自独立的，各自连接8个逻辑Bank。  如图4所示，在XDR2核心中，16个逻辑Bank对应A和B通道，分成两个区，每个区（包含8个逻辑Bank，0到7在A区，8到15在B区）又分成两组，奇数Bank为一组，偶数Bank为一组。这样就形成了4个逻辑Bank组。这个架构的目的在于进行交错寻址。它们工作时的状态如图5所示。  在寻址时，XDR2内核中的4个Bank组是跨区交错/同时工作的，就是在同一时间，A区与B区中各有一个Bank组在工作，而在每个区中的两个Bank组则是交错工作的关系。        在寻址时，先指定A和B区某一Bank（共两个Bank），之后同时向这两个Bank发出列寻址命令，这两个Bank各自将数据传输至A区与B区连接的数据通道。这样做的好处就是将原来大的逻辑Bank细化，并且将A和B数据通道独立，使Bank的接口位宽按数据通道的位宽等比例缩小，从而有效地控制住了一次访问时的传输容量。比如在上面的XDR结构图中，数据预取设计是16bit，数据通道的位宽是16bit，这样逻辑Bank的位宽就是16×16bit=256bit=32字节，也就是说一次传输至少32字节的数据。而在XDR2中，预取也是16bit，但数据通道A和B各自独立，也就使XDR2的逻辑Bank的位宽变成了16×8bit=128bit=16字节，有效地降低了逻辑Bank一次传输的数据量，但由于另一个通道也在传输另一个Bank的数据，所以总的带宽并没有损失，只是访问精度进一步提高了。        在具体的传输中，与RDRAM和XDR一样，XDR2的A和B通道的每个引脚用16个传输周期串行传输两个字节，而不是在一个周期传输一个字节（8bit），这就是Rambus引以为荣的数据串行多路关联的设计。
MT架构带来什么样的好处呢？仍以前面的假设条件为准，我们可以发现，由于同时有两个Bank在工作，所以行命令间隔与列寻址间隔均要减半（R0与R1的命令是一个集合，先后选择两个Bank，而对这两个Bank的列寻址命令，如C0x和C1x则是同时发出），而且数据通道的宽度也减半，从而使列访问颗粒度降至8字节，而行访问颗粒度降至16字节，是传统DRAM核心的1/4。如图6所示。  
MT架构效能分析
XDR2之所以采用MT架构，就在于要减小行与列的颗粒度。在图形应用中，小的颗粒度有多大的优势呢？ 
我们假设访问一个由6个像素组成的三角形，每个像素4个字节，计24字节。从图7中可以看出，对于MT架构的DRAM核心，由于列访问容量为8字节，所以2KB的行容量中就有256列，而对于传统核心的DRAM，4KB行容量则只需要128列。显然MT架构更为细化，这样做的好处就是寻址更为精确有效。  对于8字节的行访问容量，只有两种可能的寻址情况发生，一种是访问4列，一种是访问5列，平均是4.5列。按列容量8字节计算就是36字节，而需要字节为24，有12个字是无效的，访问效率为24/36=66.67%。而对于传统的DRAM核心，共有8种可能出现的情况——4种需要访问2列,3种需要访问3列，1种需要访问4列，平均需要访问2.6525列，按每个列容量为32字节计算，则为84字节，其中有60个字节是无效的，访问效率为28.5%。从这一点中就可以看出MT架构的优势。
在三角形访问率的对比中，我们可以发现MT架构在小三角形访问方面有着显著的优势。图8中的tRR limit是指行访问容量的限制，一般的行访问容量是列访问容量的两倍，要访问的数据超过了这一范围，访问率就会下降，而在这一范围之内，效率不变。由于在未来的3D绘图中，出于对细节表现力的追求，小三角形的应用会越来越普及，因此MT架构的DRAM核心的优势也就会更加明显。而这也正是Rambus开发XDR2的缘由。
  不过，这里需要指出的是，上面的分析是基于一种假想的设计，事实上，XDR2的数据传输频率为8GHz，即传输周期为0.125ns。而行寻址间隔周期为两个时钟周期，以500MHz的时钟频率计算为4ns，列寻址间隔周期为1个时钟周期，即2ns，因此XDR2的列访问容量为16字节，行访问容量为32字节。 
理论上，MT架构可以应用于任何一个需要精确寻址的场合，而不仅仅是图形领域。比如大型的物理形态模拟计算系统（如流体力学仿真计算），在运算过程中会产生大量的小规模数据块，存储地点的随机性很大；在网络交换机等设备中，由于网络数据包体积大多较小，并且是随机组合，因此也需要内存系统给予强大的访问效率，以节省宝贵的时间。此外，对于很多应用于消费电子产品中的处理器而言，其内部的缓存行（Cache Line）容量也较小，而它是缓存与内存之间交换数据的容量单位，较小的访问颗粒度可以确保与缓存之间的数据交换保持最佳的效率（如Cache Line的容量是16字节，对于32字节的颗粒度来说，就要浪费16字节的传输操作）。因此，Rambus也将XDR2的应用领域锁定在了除显卡以外的高性能运算、网络与消费电子设备领域。
XDR2的其他特点
除了最引人关注的MT架构设计之外，为了保证XDR2系统的稳定运行且更有效率，XDR2还继承了XDR的优点，并加入了新的辅助设计：自适应同步（Adaptive Timing）在速度不断提升的今天，XDR的FlexPhase（弹性相位）同步电路将进行补偿处理，实时应对电压与温度变化所产生的影响。FlexPhase的本意是使内存生产者不再费力地去调校PCB的布线设计，以减少延迟/潜伏期对数据同步的影响。弹性相位技术使信号本身具备了数据/时钟同步与自校准能力，从而使外围有关时序跟踪的设计与布线变得非常简单，并有助于提高同步性，提高总线利用率。在XDR系统中，弹性相位控制这一功能由XIO完成，调校单位为bit，精度可达2.5ps（Pico Second，微微秒）。信号传送均衡（Transmit Equalization）这一技术将来自内存系统的电路反射与衰减影响降到最小程度，以稳定达到所需要的速度。DRSL发信技术(DRSL Signaling)使用200mV的差分信号发送技术，以提供较高的信噪比。另外，XDR2还使用芯片内终结与点对点传输技术，结合相关的PCB与芯片装配技术，以最大限度减少信号反射并减少传输周期。动态位宽（Dynamic data width）与XDR内存一样，XDR2可以动态调整接口的位宽，可以有2bit、4bit、8bit等选择，这样就有助于提高系统的设计灵活性，而且位宽改变后，访问颗粒度也将改变，2bit、4bit、8bit时的列访问颗粒度分别为2字节、4字节和8字节。带宽也降至2GB/s、4GB/s和8GB/s。零刷新占用（Zero Overhead Refresh）传统的DRAM在刷新时，是对所有逻辑Bank的相同地址行进行刷新，如果正好赶上某一行处于工作状态，或要访问某一行时，就与刷新操作产生了冲突。而XDR2内部独特的逻辑Bank设计，可以通过交错控制刷新，避免了刷新操作影响正常寻址的情况发生，实现了零刷新系统占用。
目标瞄准显卡市场
XDR2的应用领域虽然很广，但Rambus仍把首要目标瞄准了显卡市场。目前，nVIDIA与ATi的高端显卡均配备了GDDR3显存。XDR2在这一领域中的主要竞争对手就是GDDR3，那么与GDDR3相比，XDR2的优势如何呢？  先看看颗粒度的情况，GDDR3的位宽均为32bit，基于DDR2架构设计，预取4bit，因此，列访问颗粒度与XDR2一样，同为16字节。也就是说，在访问尺寸相当的三角形时，XDR2与GDDR3的效率是一样的。所以，XDR2在这方面并不占优势。但不要忘了两者的带宽，就单颗芯片比较的话，现在最高速度的GDDR3的带宽为6.4GB/s，而XDR2则达到了16GB/s，这样一来，在保持相同访问效率的同时，XDR2性能至少是GDDR3的2.5倍，就这一点来说，XDR2就有了很大的优势。
  再来比较一下寻址效率。在这里我们进行最常见的寻址访问的比较，即先行寻址再列寻址。从表1和表2中我们可以看出，读取时，XDR2的延迟是GDDR3的80%，而在写入时只有GDDR3 的51.4%，显然效率更高。即使加上预充电的操作，XDR2仍然占优（XDR2-500预充电用时10ns，GDDR3-800用时12.5ns）。就这点来说，XDR2已经摆脱了Rambus内存长久以来在随机访问方面的劣势（第一代XDR相对于DDR2仍有微弱的差距），当然这也与DDR的架构频率越高所需延迟周期越多有关。 
在耗电方面，虽然GDDR3的标准设计是1.8V，但最高速的GDDR3-800则为2.0V，而XDR2-500则仍保持在1.8V，与第一代XDR内存相同。 未来可能的XDR2系统设计，可以预见的肯定会有64bit的显卡接口规格，此时的XDR2系统的带宽将达到64GB/s，相对于现有的256bit GDDR3架构的51.2GB/s，提高了1.25倍，但位宽只有后者的一半，再加上XDR2芯片的引脚为108pin，而GDDR3-800则为136pin，这对于PCB布线设计来说显然会轻松很多。 总之，XDR2的设计有着明显的优势，当并行传输方式在高频率下的劣势越来越明显时，XDR的串行传输方面的优势也将得以显露。因此，我们有理由相信，XDR2在未来的某一天会进入主流显卡领域，以满足未来GPU对高带宽的强烈需求。