背景技术
内存是处理器系统所必不可少的,比如,普通PC、笔记本电脑、服务器、数通设备以及一些消费类产品的处理器系统。内存的容量、访问速度和稳定性是处理器系统性能的重要指标。
目前,为了向处理器系统提供更加灵活的内存配备方式,内存通常以内存条方式存在于处理器系统中。也就是说,一方面,将完成实际存储功能的动态随机访问存储器(DRAM,Dynamic Random access memory)芯片集成在一块具有标准对外接口的印制电路板(PCB)上,形成双列直插式内存模组(DIMM,Dual In-line Memory Module),即通常所说的内存条,另一方面,在处理器系统的单板上设置DIMM连接器,然后,将DIMM插入单板的DIMM连接器,使得处理器系统中单板上的内存控制器可以对插入单板的DIMM进行读写访问。
在处理器系统中,差错检查与纠正(ECC,Error Check & Correct)功能是保证数据可靠性的一种重要功能。图1是在现有技术中实现ECC功能的装置结构示意图。参见图1,由于目前的DIMM可以分成支持ECC功能的DIMM和不支持ECC功能的DIMM,因此,在处理器系统中实现ECC功能时,必须使用支持ECC功能的DIMM,当然,单板上的内存控制器也需要支持ECC功能,并且,内存控制器与支持ECC功能的各个DIMM之间的接口信号按照其特点可分为以下几种类型:
时钟信号组CK,由内存控制器向各DIMM输出,提供DIMM的工作时钟,保证处理器系统的时钟同步;
地址命令信号组ADDR/CMD,由内存控制器向各DIMM输出,用于向DIMM提供读写操作时的具体地址和命令信息;
控制信号组CTL,由内存控制器向各DIMM输出,用于向DIMM指示具体的读操作或写操作;
数据信号组DQ,由内存控制器和各DIMM分别向对方输出,用于完成数据在内存控制器和DIMM之间的传递;
ECC数据信号组CB,由内存控制器和各DIMM分别向对方输出,用于完成ECC校验码在内存控制器和DIMM之间的传递。
参见图1,现有技术实现ECC功能的过程主要包括:当需要将数据保存到内存中时,内存控制器通过ADDR/CMD信号和CTL信号向DIMM指示具体的写操作及写操作所对应的DIMM空间,然后通过DQ信号线将需存储的数据输出到对应的DIMM中的存储空间,同时,内存控制器还针对本次存储的数据生成对应的ECC校验码,通过CB信号线将ECC校验码输出到DIMM;当需要从内存中读取数据时,内存控制器通过ADDR/CMD信号和CTL信号向DIMM指示具体的读操作及读操作所对应的DIMM空间,DIMM通过DQ信号线将对应的数据输出给内存控制器,同时,DIMM还将本次读取的数据对应的ECC校验码,通过CB信号线输出到内存控制器,内存控制器根据从CB信号线上接收到的ECC校验码,对从DQ信号线上读取的数据进行校验,如果判断读取的数据存在错误,则会进行差错纠正处理。
由以上描述可以看出,ECC功能是在处理器系统中保证数据可靠性的一种重要功能,在现有技术中,在处理器系统中实现ECC功能时,必须使用支持ECC功能的DIMM。但是,在实际的业务实现中,相对于不支持ECC功能的DIMM,支持ECC功能的DIMM通常价格较为昂贵,或体积较大。当处理器系统的空间狭小,需要使用外形较小的DIMM,或者,由于出于成本的考虑,需要使用价格低廉的DIMM时,则只能选用不支持ECC功能的DIMM,但是此时却使得处理器系统无法实现ECC功能,降低了业务服务质量。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
本发明提出了一种实现ECC功能的装置。图2是本发明提出的实现ECC功能的装置组成示意图。参见图2,该装置主要包括:单板上的内存控制器、DIMM和设置在单板上的ECC执行单元,其中,
内存控制器,用于在将数据写入DIMM时,通过写入指令将与写入DIMM的数据对应的ECC校验码输出至ECC执行单元,在从DIMM中读取数据时,通过读取指令从ECC执行单元中获取与读取的数据对应的ECC校验码;
ECC执行单元,用于根据写入指令保存ECC校验码,并根据读取指令向内存控制器输出ECC校验码。
参见图2,本发明装置中的DIMM与现有技术中DIMM的功能相同,即,在内存控制器需要保存数据时,接收内存控制器输出的写入指令,根据该写入指令,将内存控制器输出的数据保存到DIMM中对应的存储空间;在内存控制器需要读取数据时,接收内存控制器输出的读取指令,根据该读取指令,将DIMM中对应存储空间中保存的数据输出至内存控制器。
在本发明装置中,内存控制器接收到ECC执行单元输出的ECC校验码后的处理与现有技术中相同,即,内存控制器根据接收到的ECC校验码,对从DIMM中读取的数据进行校验,如果校验出所读取的数据存在错误,则会进行差错纠正处理,从而保证数据的可靠性。
可见,无论DIMM是否支持ECC功能,本发明装置均可利用在单板上设置的ECC执行单元实现ECC功能。
图3是在本发明一个实施例中当有多个DIMM插入单板且每个DIMM包括2个物理Rank时实现ECC功能的装置组成连接示意图。参见图3,在本发明一个实施例中,当有多个DIMM通过DIMM连接器连接到单板上时,为了进一步确保内存控制器对每个DIMM保存的数据均能够进行ECC校验,确保每个DIMM存储数据的可靠性,本发明可以根据DIMM的数量来设置在单板上的ECC执行单元的数量,并且,每一个DIMM均有对应的ECC执行单元。另外,在实际应用中,一个DIMM可以包括1个或2个物理列(Rank),每个物理Rank包括DIMM一个侧面上集成的所有DRAM,内存控制器在对DIMM进行一次读写操作时,是针对DIMM的一个物理Rank进行的,也就是说,内存控制器在一次操作中发送的写入指令或读取指令是针对DIMM中一个物理Rank的,相应地,该操作对应的ECC校验码也是针对DIMM中一个物理Rank的。因此,在本发明中,还可以进一步根据DIMM中物理Rank的数量来设置在单板上的ECC执行单元的数量,并且,每一个DIMM中的每个物理Rank均对应一个ECC执行单元。
因此,参见图3,当有多个DIMM插入单板且每个DIMM包括2个物理Rank时,每个DIMM的每个物理Rank都会单独对应一个ECC执行单元,比如,图3中与DIMM 0的物理Rank 0对应的ECC执行单元,图中标识为DIMM 0 Rank 0 ECC,与DIMM 0的物理Rank 1对应的ECC执行单元,图中标识为DIMM 0 Rank 1 ECC,与DIMM 1的物理Rank 0对应的ECC执行单元,图中标识为DIMM 1 Rank 0 ECC,与DIMM 1的物理Rank 1对应的ECC执行单元,图中标识为DIMM 1 Rank 1 ECC。
由于本发明装置中用于保存ECC校验码的ECC执行单元与DIMM相互分离,且ECC执行单元设置在单板上,因此,内存控制器、ECC执行单元与DIMM之间各种信号线的连接则与现有技术中不同。以处理器系统中包括多个DIMM且每个DIMM包括2个物理Rank为例,内存控制器、ECC执行单元与DIMM之间的信号线连接方式为:
第一、为了保证DIMM和ECC执行单元的正常工作,内存控制器必须能够向DIMM和ECC执行单元提供时钟信号,保证整个处理器系统的时钟同步,并且,内存控制器还必须向DIMM和ECC执行单元提供控制信号和地址命令信号,保证DIMM和ECC执行单元能够根据控制信号和地址命令信号,得到内存控制器写入数据时所指示的具体的写入指令,以及内存控制器读取数据时所指示的具体的读取指令,从而确定具体的读写操作,以及读写操作所涉及的存储空间。因此,在内存控制器与DIMM和ECC执行单元之间均需要连接控制信号线CTL、地址命令信号线ADDR/CMD和时钟信号线。
首先,对于控制信号线CTL,每个DIMM的每个物理Rank均需要单独占用一个从内存控制器引出的控制信号线,且每个ECC执行单元也需要占用控制信号线,如图3中,DIMM 0中的物理Rank 0及其对应的ECC执行单元DIMM 0 Rank 0 ECC占用控制信号线CTL0_0,DIMM0中的物理Rank1及其对应的ECC执行单元DIMM 0 Rank 1 ECC占用控制信号线CTL0_1。
其次,对于地址命令信号线ADDR/CMD,所有DIMM的所有物理Rank以及所有ECC执行单元可以共享,如图3所示。
最后,对于时钟信号线CK,每个DIMM的每个物理Rank均占用一个从内存控制器引出的时钟信号线,且每个ECC执行单元也需要占用时钟信号线,如图3中,DIMM 0的物理Rank 0占用时钟信号线CK0_0,DIMM 0的物理Rank 1占用时钟信号线CTL0_2,DIMM 0的物理Rank 0和物理Rank1对应的ECC执行单元占用时钟信号线CTL0_1。
当然,本领域技术人员可以想到,如果内存控制器无法输出足够的时钟,可以利用在本发明装置中增加零延时时钟buffer器件的方式提供更多的时钟信号。
第二、如图3所示,与现有技术中相同,为了能够在DIMM中进行数据的读写操作,内存控制器与每个DIMM之间均连接有用于传输数据的数据信号线DQ。
第三、为了能够在内存控制器与ECC执行单元之间传递ECC校验码,如图3所示,内存控制器与每个ECC执行单元之间均连接有ECC数据信号线CB。
在实际的业务实现中,信号质量需要通过适当的拓扑涉及和匹配来保证,要想得到高质量的信号,则必须使得信号拓扑尽可能简单、平衡。因此,为了得到高质量的信号,本发明装置所采用的较佳的信号线拓扑方式为:
对于控制信号线CTL,由于每个物理Rank需要占用一个控制信号线,而一个ECC执行单元与其对应的物理Rank对应的读写方式相同,可以共享内存控制器发出的同一个控制信号线上的写入指令和读取指令,因此,为了简化信号拓扑,DIMM中一个物理Rank及其对应的ECC执行单元占用从内存控制器引出的同一根控制信号线。如图4所示,控制信号线在内存控制器、任意一个DIMM中的任意一个物理Rank及其对应的ECC执行单元三者之间的拓扑方式为:以DIMM 0的物理Rank 0及其对应的ECC执行单元0_0为例,从内存控制器引出的控制信号线连接到DIMM 0连接器的一个引脚0,DIMM 0的物理Rank 0通过该引脚0连接控制信号线,并且,将控制信号线从该引脚0的过孔引出,引出的一路即图4中线路TL1所在的一路,连接到与物理Rank 0对应的ECC执行单元0_0,另外,为了保证信号的质量,最小化信号分支,引出的另一路即图4中线路TL2所在的一路连接信号终端匹配电阻,且该信号终端匹配电阻连接到VTT电源。
对于地址命令信号线ADDR/CMD,由于所有DIMM以及所有ECC执行单元可以共享,因此,为了简化信号拓扑,如图5所示,地址命令信号线在内存控制器、任意一个DIMM中的物理Rank及其对应的ECC执行单元三者之间的拓扑方式为:以DIMM 0及其对应的ECC执行单元为例,从所述内存控制器引出的所述地址命令信号线连接到DIMM 0连接器的一个引脚1,DIMM 0中的所有物理Rank均通过该引脚1连接地址命令信号线,并且,地址命令信号线从该引脚1的过孔引出,引出的一路即图5中TL1所在的一路,连接到与DIMM 0中所有物理Rank对应的所有ECC执行单元,以DIMM 0包括物理Rank 0和物理Rank 1为例,TL1所在的一路进一步分化为两个等长线路TL2的分支后,分别连接物理Rank 0和物理Rank 1对应的ECC执行单元0_0和ECC执行单元0_1;为了保证信号的质量,最小化信号分支,引出的另一路,即图5中TL3所在的一路,连接到上拉电阻。
对于时钟信号CK,以利用本发明装置中增加的零延时时钟缓冲buffer器件实现多路时钟信号输出,且每一个DIMM和每一个ECC执行单元分别占用一个时钟信号线为例,如图6所示,时钟信号线在内存控制器、零延时时钟缓冲buffer器件、任意一个DIMM中的物理Rank及其对应的ECC执行单元三者之间的拓扑方式为:以DIMM 0及其对应的ECC执行单元为例,内存控制器通过与零延时时钟buffer器件之间的一根时钟信号线将时钟信号CK输出到零延时时钟buffer器件,零延时时钟buffer器件驱动出与所述内存控制器输出的时钟信号零延时的多路时钟信号CK,以DIMM 0包括物理Rank 0和物理Rank 1为例,DIMM 0的物理Rank 0和物理Rank 1通过不同的时钟信号线分别接收驱动出的一路时钟信号CK,且与DIMM 0中物理Rank 0和物理Rank 0对应的ECC执行单元0_0和ECC执行单元0_1接收驱动出的单独一路时钟信号CK,即TL0和TL1所在的一路,具体地,需要进一步将TL0和TL1所在的一路分化为两个等长线路TL2的分支后,分别连接物理Rank 0和物理Rank 1对应的ECC执行单元0_0和ECC执行单元0_1。为了保证时钟信号的质量,最小化信号分支,无论是直接由内存控制器输出时钟信号,还是上述零延时时钟缓冲buffer器件输出时钟信号,参见图6,DIMM 0的物理Rank 0和物理Rank 1对应的两个ECC执行单元所接收的时钟信号同时输出到位于该两个ECC执行单元之间的匹配电阻,也就是,需要进一步将TL0和TL1所在的一路分化出一路,即图6中TL3所在的一路,连接到匹配电阻。
对于数据信号线DQ,由于只需连接到DIMM而无需连接到ECC执行单元,因此,在信号拓扑设计时,直接将从内存控制器引出的数据信号线DQ连接到每一个DIMM的连接器上的相应引脚即可。
对于ECC数据信号线CB,由于只需连接到ECC执行单元而无需连接到DIMM,因此,如图7所示,在信号拓扑设计时,一种较佳地的拓扑方式为:对于一个DIMM需要使用的ECC执行单元,从内存控制器引出的ECC数据信号线CB经一个匹配电阻R2后,通过不同线路分支即两个TL2所在的两个线路分支分别连接到与该DIMM中两个物理Rank对应的两个ECC执行单元。
需要说明的是,当所述ECC执行单元为第二代双倍数据速率DDR2DRAM且DIMM中集成的每个DRAM也为DDR2 DRAM时,由于DDR2DRAM内部已经集成有终端匹配电阻,能够保证ECC数据信号的质量,因此,图7所示信号拓扑图中无需为两个ECC执行单元增加终端匹配电阻。而当所述ECC执行单元为双倍数据速率DDR DRAM且DIMM中集成的每个DRAM也为DDR DRAM时,则需要在图7所示信号拓扑图中为两个ECC执行单元增加终端匹配电阻。如图7所示,从所述内存控制器引出的所述ECC数据信号线CB在经匹配电阻R2之前,进一步连接到TL3所在线路的上拉电阻。
本发明装置采用上述信号拓扑方式后,有以下优点:
1、最小化信号的分支、合理的匹配电阻位置,减少线路反射;
2、每种信号拓扑均为平衡负载,可减少组内信号之间传播延时差;
3、区分出DIMM连接器前的走线TL0和之后的走线。每种信号的TL0线段等长走线,而TL1、TL2、TL3的走线长度则可参考所用DIMM的布线长度进行设计,方便了布线设计。
需要说明的是,在本发明装置中,为了与DIMM中集成的DRAM的位宽相互匹配,如图8所示,每一个ECC执行单元均可以利用一个8比特位宽的DRAM实现,或者利用两个4比特位宽的DRAM实现,并且,用于实现ECC执行单元的DRAM,记为DRAM1,需要满足以下条件:
DRAM1的逻辑Bank的个数等于对应的DIMM的逻辑Bank的个数;
和/或,DRAM1的速度级不低于对应的DIMM的速度级;
和/或,当DRAM1的工作频率等于对应的DIMM的工作频率时,DRAM1的CAS信号输出延迟(CL)最大值不大于对应的DIMM的CL最大值;
和/或,当采用一个8比特位宽的DRAM1实现ECC执行单元时,该DRAM1的存储容量等于对应的一个物理Rank容量的1/8;当采用两个4比特位宽的DRAM1实现ECC执行单元时,每个DRAM1的存储容量等于对应的一个物理Rank容量的1/16。
下面假设采用一个符合JEDEC发布的《Unbuffered PC2-4200/3200DDR2 SDRAM SO-DIMM Reference Design Specification》的DDR2 SODIMMRaw Card A来设计内存为例,来详细说明采用上述信号拓扑方式来实现本发明装置中的走线过程。
内存控制器的输出时序可通过寄存器调节。DDR2 SODIMM Raw Card A是一个双Rank DIMM,不支持ECC功能,在单板上使用两个8bit的DDR2SDRAM作为对应的ECC执行单元。
假设PCB板材料选择使用FR4,内层铜厚0.5盎司,并假设走线基本都是PCB内层走线,每根信号线上过孔数量尽量少,最好不超过两个,那么参见图4至图7,在信号采用如上文所述拓扑方式时,每段走线的长度可按如下参数范围设计。
控制信号CTL走线推荐:
线段 | TL0 | TL1 | TL2 | R |
长度(inch) | 1.9-4.5 | 2.2-2.4 | 0.2-0.5 | (22-56)Ω±5% |
地址命令信号ADDR/CMD走线推荐:
线段 | TL0 | TL1 | TL2 | TL3 | R |
长度(inch) | 1.9-4.5 | 2.2-2.4 | 0.1-0.2 | 0.2-0.5 | (22-56)Ω±5% |
时钟信号CK走线推荐:
线段 | TL0 | TL1 | TL2 | TL3 | R1 |
长度(inch) | 1.9-4.5 | 1.0-1.2 | 0.1-0.13 | 0.3-0.4 | 100Ω±5% |
数据信号DQ和ECC数据信号CB走线推荐:
线段 | TL0 | TL1 | TL2 | R2 |
长度(inch) | 1.9-4.5 | 0.44-0.46 | 0.07-0.08 | 22Ω±5% |
基本的布线规则为:
所有信号单端阻抗控制为50欧,差分阻抗控制为100欧
CK信号:差分线间相差10mil以内,差分对间相差25mil以内,差分时钟对之间满足3H原则,与其他信号相距20mil以上。
CTL信号:等长走线,相差20mil以内,线间距12-15mil,与其他信号相距20-25mil以上。
ADDR/CMD信号:等长走线,相差20mil以内,线间距12-15mil,与其他信号相距20-25mil以上。
CB信号:等长走线,相差20mil以内,线间距12-15mil,与其他信号相距20-25mil以上。
另外,需要说明的是,当处理器系统空间狭小时,使用本发明在单板上设置ECC执行单元的做法仍然能够比使用体积较大的带ECC功能的DIMM的做法节省系统空间。
当采用现有技术的做法时,比如,使用25度斜插的带ECC功能的DIMM如DDR2 UDIMM,而本发明装置使用平插的不带ECC功能的DIMM如DDR2 SODIMM,参见图9所示,本发明装置比现有技术的做法节约36%的PCB平面空间。从高度上来说,本发明装置中不带ECC功能的DDR2SODIMM的高度只有9.2mm,而现有技术做法中25度斜插的带ECC功能的DDR2 UDIMM最高可达19.49mm,高度减少约10mm,因此,相对于现有技术,本发明装置实现ECC功能时能够节省系统空间。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。