地址分配方法及DDR控制器与流程

文档序号:14747904发布日期:2018-06-22 02:48阅读:506来源:国知局
本发明涉及存储
技术领域
,尤其涉及地址分配方法及双倍速率同步动态随机存储器(英文全称:doubledatarate,英文缩写:DDR)控制器。
背景技术
:通常,DDR位宽决定了主控芯片访问内存的最大带宽,因此,选择多大位宽的DDR取决于计算机或嵌入式系统所需的最大带宽。其中,当DDR颗粒的时钟频率为800MHz时,系统所需最大带宽和DDR位宽的关系如表一所示:表一系统所需最大带宽(MaxBW)选择的DDR位宽MaxBW<3.2GB16比特(英文:bit)3.2GB≤MaxBW<6.4GB32bit6.4GB≤MaxBW<12.8GB64bit12.8GB≤MaxBW<25.6GB128bit当系统所需最大带宽在某一段范围时,比如略大于6.4GB,根据表一需要选择64bitDDR位宽。由于目前主控芯片外接的主流DDR颗粒是16bit位宽,因此需要4片16bitDDR拼接。然而,考虑成本因素,若使用48bitDDR位宽可以满足要求,此时会选择48bitDDR位宽,从而只需要3片16bitDDR。现有技术采用多通道地址交织方案来实现非对称结构的48bitDDR位宽,如图1所示,DDR控制器中包含服务质量(英文全称:qualityofservice,英文缩写:QoS)缓冲器、动态内存控制器(英文全称:dynamicmemorycontroller,英文缩写:DMC)0和DMC1。QoS缓冲器用于接收并缓存一段连续的访问地址,DDR控制器基于比例关系将QoS缓冲器中缓存的访问地址分配给与DMC0对应的32bitDDR通道和与DMC1对应的16bitDDR通道,例如,若该比例关系为1:1,则DDR控制器将QoS缓冲器中的第1、3、5、7、9、11个访问地址分配给与DMC0对应的32bitDDR通道,将QoS缓冲器中的第2、4、6、8、10、12个访问地址分配给与DMC1对应的16bitDDR通道,由于该情况下与DMC0对应的32bitDDR通道以及与DMC1对应的16bitDDR通道的流量相等,即32bitDDR通道的流量等于16bitDDR通道,因此这时系统的最大带宽实际是32bitDDR位宽提供的最大带宽,而并非48bitDDR位宽提供的最大带宽,从而造成带宽资源的浪费。同样的,采用多通道地址交织方案实现其它非对称结构DDR时,也存在类似的问题。技术实现要素:本发明实施例提供地址分配方法及DDR控制器,以至少解决现有的采用多通道地址交织方案实现非对称结构DDR时带宽资源浪费的问题。为达到上述目的,本发明实施例提供如下技术方案:第一方面,提供一种地址分配方法,该方法包括:双倍速率同步动态随机存储器DDR控制器接收访问请求消息,该访问请求消息携带待访问的一段连续地址的信息;DDR控制器将该连续地址按照预设算法进行映射以获得映射后的地址,其中,该映射后的地址为能按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道的地址,Tx为DDR控制器第x个DDR通道的位宽,x∈{1,2,......,s-1,s},s为不小于2的正整数;DDR控制器将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道。基于本发明实施例提供的地址分配方法,由于本发明实施例中,DDR控制器可以将待访问的一段连续地址按照预设算法进行映射,并可以将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,其中,Tx为DDR控制器第x个DDR通道的位宽,也就是说,与现有技术不同,本发明实施例可以按DDR通道位宽比例将地址分配到各DDR通道上,使得各DDR通道的流量比例与各DDR通道的位宽比例一致,从而避免了现有技术中采用多通道地址交织方案实现非对称结构DDR时,由于各DDR通道的流量比例与各DDR通道的位宽比例不一致所导致的带宽资源浪费的问题,可以较大限度的发挥非对称结构DDR的带宽性能,充分、高效的利用整个地址空间。结合第一方面,在第一方面第一种可能的实现方式中,当s=2,T1:T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法包括:out1[n-1:0]=in[n-1:0];其中,out1[x:y]表示映射后的地址的第x位到第y位地址位;in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,当s=2,T1∶T2=1:2时,DDR控制器将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,包括:当out1[n]=a1时,DDR控制器选择第1个DDR通道,给该第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2时,DDR控制器选择第2个DDR通道,给该第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,当s=3,T1=T2=T3时,DDR控制器将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,包括:当out1[n]=a1时,DDR控制器选择第x1个DDR通道,给该第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b1时,DDR控制器选择第x2个DDR通道,给该第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,DDR控制器选择第x3个DDR通道,给该第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给三通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第一方面,在第一方面第四种可能的实现方式中,当s=2,T1:T2=1:2时,或者,当s=3,T1=T2=T3时,若该s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法包括:out1[n-1:0]=in[n-1:0];当in[m+1:0]<2m×3/2时,当in[m+1:0]≥2m×3/2时,其中,out1[x:y]表示映射后的地址的第y位到第x位地址位,in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。结合第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,当s=2,T1∶T2=1:2时,DDR控制器将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,包括:当out1[n]=a1时,DDR控制器选择第1个DDR通道,给所述第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,所述DDR控制器选择第2个DDR通道,给所述第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第一方面第四种可能的实现方式,在第一方面第六种可能的实现方式中,当s=3,T1=T2=T3时,DDR控制器将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,包括:当out1[n]=a1时,DDR控制器选择第x1个DDR通道,给该第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2,out1[n+1]=b1时,DDR控制器选择第x2个DDR通道,给该第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,DDR控制器选择第x3个DDR通道,给该第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。第二方面,提供一种双倍速率同步动态随机存储器DDR控制器,该DDR控制器包括:接收单元、映射单元和分配单元;接收单元,用于接收访问请求消息,该访问请求消息携带待访问的一段连续地址的信息;映射单元,用于将该连续地址按照预设算法进行映射以获得映射后的地址,其中,该映射后的地址为能按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道的地址,Tx为DDR控制器第x个DDR通道的位宽,x∈{1,2,......,s-1,s},s为不小于2的正整数;分配单元,用于将该映射后的地址按照T1∶T2:…:Ts的比例分配给所述DDR控制器的s个DDR通道。基于本发明实施例提供的DDR控制器,由于本发明实施例中,DDR控制器可以将待访问的一段连续地址按照预设算法进行映射,并可以将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,其中,Tx为DDR控制器第x个DDR通道的位宽,也就是说,与现有技术不同,本发明实施例提供的DDR控制器可以按DDR通道位宽比例将地址分配到各DDR通道上,使得各DDR通道的流量比例与各DDR通道的位宽比例一致,从而避免了现有技术中采用多通道地址交织方案实现非对称结构DDR时,由于各DDR通道的流量比例与各DDR通道的位宽比例不一致所导致的带宽资源浪费的问题,可以较大限度的发挥非对称结构DDR的带宽性能,充分、高效的利用整个地址空间。结合第二方面,在第二方面第一种可能的实现方式中,当s=2,T1:T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法包括:out1[n-1:0]=in[n-1:0];其中,out1[x:y]表示映射后的地址的第x位到第y位地址位;in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,当s=2,T1∶T2=1:2时,分配单元具体用于:当out1[n]=a1时,选择第1个DDR通道,给该第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2时,选择第2个DDR通道,给该第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,当s=3,T1=T2=T3时,分配单元具体用于:当out1[n]=a1时,选择第x1个DDR通道,给该第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b1时,选择第x2个DDR通道,给该第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,选择第x3个DDR通道,给该第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给三通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第二方面,在第二方面第四种可能的实现方式中,当s=2,T1:T2=1:2时,或者,当s=3,T1=T2=T3时,若该s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法包括:out1[n-1:0]=in[n-1:0];当in[m+1:0]<2m×3/2时,当in[m+1:0]≥2m×3/2时,其中,out1[x:y]表示映射后的地址的第y位到第x位地址位,in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。结合第二方面第四种可能的实现方式,在第二方面第五种可能的实现方式中,当s=2,T1∶T2=1:2时,分配单元具体用于:当out1[n]=a1时,选择第1个DDR通道,给该第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,选择第2个DDR通道,给该第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。结合第二方面第四种可能的实现方式,在第二方面第六种可能的实现方式中,当s=3,T1=T2=T3时,分配单元具体用于:当out1[n]=a1时,选择第x1个DDR通道,给该第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2,out1[n+1]=b1时,选择第x2个DDR通道,给该第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,选择第x3个DDR通道,给该第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。通过该地址分配方式给双通道DDR控制器分配地址时,没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。第三方面,提供一种可读介质,包括计算机执行指令,当DDR控制器执行该计算机执行指令时,该DDR控制器执行如上述第一方面或者第一方面的任意一种可选方式中所述的地址分配方法。其中,本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中48bitDDR的双通道地址交织方案示意图;图2为现有技术中96bitDDR的3通道结构示意图;图3为现有技术中96bitDDR的3通道地址交织方案示意图;图4为本发明实施例提供的地址分配方法的流程示意图;图5为本发明实施例提供的DDR控制器的结构示意图一。具体实施方式现有技术中,DDR控制器在实现双通道地址交织方案时是根据地址的某一bit来确定将该地址分配给2个通道中的一个,比如交织粒度是28=256字节(英文:byte),DDR控制器就根据地址位中的bit8位(即第8个比特位)来对该地址进行通道的分配。如果该地址的bit8位是0则将该地址分配到通道0,如果该地址的bit8位是1则将该地址分配到通道1。示例性的,这里假设每个DDR颗粒容量为211byte,即每个DDR颗粒的地址位宽为11bit;每个DDR颗粒有8个交织地址空间,每个交织地址空间为256byte,即交织粒度为256byte;假设根据地址位中的bit8位分配通道,以
背景技术
中所述的由3个16bitDDR颗粒拼接而成的48bit双通道DDR方案为例进行说明。则3个DDR颗粒总共24个地址空间,对应的总地址宽度为13bit,用bit12:0表示。地址位中的bit8位代表一个256byte的地址空间,bit12:8(即第8个比特位到第12个比特位)总共5bit,代表32个256byte地址空间,其中的24个地位地址空间分配给DDR颗粒使用,剩余8个高位地址空间无效。如表二所示,为现有方案中地址bit12:8的所有地址空间映射到2个通道的映射列表。表二其中,在表二中,左侧一列为32bitDDR通道的地址空间,右侧一列为16bitDDR通道的地址空间。按地址bit8分配通道。地址bit12:8为00000时分配到32bitDDR通道,为00001时分配到16bitDDR通道,为00010时分配到32bitDDR通道,为00011时分配到16bitDDR通道,……,如此交织。10000以上地址为32bitDDR通道的非交织空间。如
背景技术
中所述,在32bitDDR通道和16bitDDR通道的交织空间,地址分配按1:1,假设有一段连续地址访问请求输入DDR控制器,此时最大带宽可能只有32bitDDR位宽提供的带宽,地址10000以上的32bit非交织空间,最大带宽也只有32bitDDR位宽提供的带宽,因此这时系统的最大带宽实际是32bitDDR位宽提供的最大带宽,而并非48bitDDR位宽提供的最大带宽,从而造成带宽资源的浪费。同样的,采用多通道地址交织方案实现其它非对称结构DDR时,也存在类似的问题。比如,外接96bitDDR位宽在使用多通道交织方案时一般由3片32bit数据位宽的DDR颗粒组成,采用3通道交织方案,其结构如图2所示,DDR控制器中包含QoS缓冲器、DMC0、DMC1和DMC2。QoS缓冲器用于接收并缓存一段连续的访问地址,进而DDR控制器将QoS缓冲器中缓存的访问地址分配给DMC0、DMC1和DMC2各自对应的DDR通道。例如,假设交织粒度为256byte,DDR控制器以4个连续256byte地址循环分配到3个通道的DDR颗粒上,则如图3所示,DDR控制器将QoS缓冲器中的第1个256byte地址空间分配给与DMC0对应的32bitDDR通道,将QoS缓冲器中的第2个256byte地址空间分配给与DMC1对应的32bitDDR通道,将QoS缓冲器中的第3个256byte地址空间分配给与DMC2对应的32bitDDR通道,第4个256byte地址空间固定分配到3个通道中的一个通道,如与DMC0对应的32bitDDR通道。下4个连续256byte地址空间如此重复,这样DMC0对应的32bitDDR通道会比DMC1对应的32bitDDR通道和DMC2对应的32bitDDR通道多出1倍流量,比例为2:1:1。当DMC0对应的32bitDDR通道在满负荷工作时,DMC1对应的32bitDDR通道和DMC2对应的32bitDDR通道的流量只有DMC0对应的32bitDDR通道的流量的一半,因此在这种情况下系统提供的最大带宽等于64bitDDR位宽提供的带宽。为解决上述问题,本发明实施例提供一种地址分配方法,基本原理为:将原地址经过某一算法映射成新地址,根据新地址,按DDR通道位宽比例给各DDR通道分配地址,这样可以最大限定的发挥非对称结构DDR的带宽性能,充分、高效的利用整个地址空间。需要说明的是,上述的DDR颗粒具体是指具有一定地址空间的DDR器件,交织粒度具体是指在一个连续的地址空间内为每个通道交替分配地址容量的最小单位。该说明同样适用于下述各实施例,以下不再赘述。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。如本申请所使用的,术语“组件”、“模块”、“系统”等等旨在指代计算机相关实体,该计算机相关实体可以是硬件、固件、硬件和软件的结合、软件或者运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行中的线程、程序和/或计算机。作为示例,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于执行中的过程和/或线程中,并且组件可以位于一个计算机中以及/或者分布在两个或更多个计算机之间。此外,这些组件能够从在其上具有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互)的信号,以本地和/或远程过程的方式进行通信。本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。另外,在本发明实施例中,“示例的”一词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。本发明实施例描述的场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着新场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。如图4所示,为本发明实施例提供的一种地址分配方法的流程示意图,包括步骤S401-S403:S401、DDR控制器接收访问请求消息,该访问请求消息携带待访问的一段连续地址的信息。S402、DDR控制器将该连续地址按照预设算法进行映射以获得映射后的地址,其中,该映射后的地址为能按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道的地址,Tx为DDR控制器第x个DDR通道的位宽,x∈{1,2,......,s-1,s},s为不小于2的正整数。S403、DDR控制器将映射后的地址按照T1:T2:…:Ts的比例给DDR控制器的s个DDR通道。具体的,本发明实施例步骤S402中:当DDR控制器的DDR通道数不同时(即s的取值不同),或者,当DDR控制器的DDR通道数相同(即s的取值相同),但是DDR通道的位宽比例不同(即T1:T2:…:Ts的比例不同)时,可能对应不同的将预设地址映射成新地址的预设算法,本发明实施例对该预设算法不作具体限定。具体的,本发明实施例步骤S403中:DDR控制器将映射后的地址按照T1:T2:…:Ts比例分配给DDR控制器的s个DDR通道。示例性的,考虑48bitDDR位宽,如
背景技术
中所述,当n=2时,2个DDR通道中,一个DDR通道的位宽为32bit;另一个DDR通道的位宽为16bit,则T1∶T2=16:32=1:2,因此DDR控制器将映射后的地址按照T1∶T2=1:2的比例分配给16bitDDR通道和32bitDDR通道。或者,示例性的,考虑96bitDDR位宽,由上述图2可知,外接96bitDDR位宽在使用多通道交织方案时一般由3片32bit数据位宽的DDR颗粒组成,采用3通道交织方案,即n=3,T1:T2:T3=32:32:32=1:1:1,因此DDR控制器将映射后的地址按照T1:T2:T3=1:1:1的比例分配给3个32bitDDR通道。基于本发明实施例提供的地址分配方法,由于本发明实施例中,DDR控制器可以将待访问的一段连续地址按照预设算法进行映射,并可以将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,其中,Tx为DDR控制器第x个DDR通道的位宽,也就是说,与现有技术不同,本发明实施例可以按DDR通道位宽比例将地址分配到各DDR通道上,使得各DDR通道的流量比例与各DDR通道的位宽比例一致,从而避免了现有技术中采用多通道地址交织方案实现非对称结构DDR时,由于各DDR通道的流量比例与各DDR通道的位宽比例不一致所导致的带宽资源浪费的问题,可以较大限度的发挥非对称结构DDR的带宽性能,充分、高效的利用整个地址空间。可选的,基于图4所示的实施例,一种可能的实现方式中,当s=2,T1∶T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2mbyte,交织粒度为2nbyte,则步骤S402中的预设算法具体可以包括:out1[n-1:0]=in[n-1:0];其中,out1[x:y]表示映射后的地址的第y位到第x位地址位,in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。比如,out1[n-1:0]表示映射后的地址的第0位到第(n-1)位地址位,in[n-1:0]表示输入的第0位到第(n-1)位地址位。下面将根据上述预设算法,结合一个具体示例对DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的过程进行详细说明。假设每个DDR颗粒容量为211byte,即m=11;交织粒度为256byte,即n=8,则根据上述预设算法公式out1[n-1:0]=in[n-1:0]和可知,当n=8,m=11时,out1[7:0]=in[7:0];此时,地址bit12:8的整个地址空间的映射方式如表三所示。表三映射前(in[12:8])映射后(out1[12:8])12111098(bit)12111098(bit)00000+00000000001+00000100010+00001000011+10010000100+10010100101+10011000110+20100000111+20100111-->01000+20101001001+30110001010+30110101011+30111001100+41000001101+41000101110+41001001111+51010010000+51010110001+51011010010+61100010011+61100110100+61101010101+71110010110+71110110111+711110由表三映射后的地址列的bit8和bit9的值可以看出,按照上述预设公式映射后获得的映射后的地址中,bit8的每3个值中有2个0,1个1。而当bit8为0时,bit9的每2个值中有1个0和1个1。以上述48bitDDR位宽为例,则可以根据映射后的地址,将bit8为0时对应的部分地址位分配给32bitDDR通道,将bit8为1时对应的部分地址位分配给16bitDDR通道,从而可以实现2:1的流量分配。或者,以上述96bitDDR位宽为例,则可以根据映射后的地址,将bit8为1时对应的部分地址位分配给其中一个32bitDDR通道,将bit8为1,并且bit9为0时对应的部分地址位分配给另外一个32bitDDR通道,将bit8为1,并且bit9为1时对应的部分地址位分配给最后个32bitDDR通道,从而可以实现1:1:1的流量分配。下面将基于上述映射方式,给出具体的地址分配方法。可选的,基于上述映射方式,当s=2,T1∶T2=1:2时,第一种可能的实现方式中,DDR控制器将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,具体可以包括:当out1[n]=a1时,DDR控制器选择第1个DDR通道,给第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2时,DDR控制器选择第2个DDR通道,给第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。示例性的,接表三所示的DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的示例,根据表三,此时可假设a1=1,a2=0,则当out1[8]=1时,DDR控制器选择第1个DDR通道,也就是16bitDDR通道,给16bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];当out1[8]=0时,DDR控制器选择第2个DDR通道,也就是32bitDDR通道,给32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[11:8]=out1[12:9]。结合表三可得,给16bitDDR通道分配的地址空间的out2[10:8]可参见表四右侧一列的out1[12:10],包含000-111共8个连续地址空间,给32bitDDR通道分配的地址空间的out2[11:8]可参见表四左侧一列的out1[12:9],包含0000-1111共16个连续地址空间。该地址分配方式没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。表四可选的,基于上述映射方式,当s=2,T1∶T2=1:2时,第二种可能的实现方式中,也可以采用下述地址分配方式给16bitDDR通道和32bitDDR通道分配交织地址空间,即交织地址空间的计算公式为:当out1[n]=a1时,DDR控制器选择第1个DDR通道,给第1个DDR通道分配的交织地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,DDR控制器选择第2个DDR通道,给第2个DDR通道分配的交织地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且映射后的地址中out1[n]=a1的个数;out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。示例性的,接表三所示的DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的示例,根据表三,此时可假设a1=1,a2=0,则交织地址空间的计算公式为:当out1[8]=1时,DDR控制器选择第1个DDR通道,也就是16bitDDR通道,给16bitDDR通道分配的交织地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[11:9];当out1[8]=0时,DDR控制器选择第2个DDR通道,也就是32bitDDR通道,给32bitDDR通道分配的交织地址为:out2[7:0]=out1[7:0];out2[11:8]=out1[12:9]。结合表三可得,给16bitDDR通道分配的交织地址空间的out2[10:8]可参见表五右侧一列的out1[11:9],包含000、010、100、110共4个地址空间,给32bitDDR通道分配的交织地址空间的out2[11:8]可参见表五左侧一列10000地址空间以下地址中的out1[12:9],包含0000-0111共8个连续地址空间。其中,在表五中,10000地址空间及其10000地址空间以上的地址(包括10001、10010、10100、10101、10110)为给32bitDDR通道分配的非交织地址空间。也就是说,对于上述映射方式,若采用本发明实施例提供的地址分配方式进行地址分配,则在表三映射后的地址中,10000以下的12个地址可用于给16bitDDR通道和32bitDDR通道分配交织地址空间;10000-10110这6个地址可用于给32bitDDR通道分配非交织地址空间;11000-11110这6个地址对应的地址空间则超出DDR的地址空间,不能使用。如果实际每个DDR颗粒为128MB,可以类推出交织空间为128MB+64MB=192MB,32bitDDR的非交织空间为96MB,实际可以使用的地址空间为192MB+96MB=288MB,虽然相对于现有技术节省了部分带宽资源,但是依旧浪费掉96MB空间。因此,对于上述映射方式,通常不采用本发明实施例提供的地址分配方法进行地址分配,而是采用上述第一种可能的实现方式中的地址分配方式进行地址分配,这样不仅没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。表五可选的,基于上述映射方式,当s=3,T1=T2=T3时,DDR控制器将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,具体可以包括:当out1[n]=a1时,DDR控制器选择第x1个DDR通道,给第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b1时,DDR控制器选择第x2个DDR通道,给第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,DDR控制器选择第x3个DDR通道,给第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。示例性的,接表三所示的DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的示例,根据表三,此时可假设a1=1,a2=0,则当out1[8]=1时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];当out1[8]=0,out1[9]=0时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];当out1[8]=0,out1[9]=1时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];结合表三可得,给3个32bitDDR通道分配的地址空间的out2[10:8]可分别参见表六中每列的out1[12:10],分别包含000-111共8个连续地址空间。该地址分配方式没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。表六可选的,基于图4所示的实施例,另一种可能的实现方式中,当s=2,T1∶T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2mbyte,交织粒度为2nbyte,则步骤S402中的预设算法具体可以包括:out1[n-1:0]=in[n-1:0];当in[m+1:0]<2m×3/2时,当in[m+1:0]≥2m×3/2时,其中,out1[x:y]表示映射后的地址的第y位到第x位地址位,in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。比如,out1[n-1:0]表示映射后的地址的第0位到第(n-1)位地址位,in[n-1:0]表示输入的第0位到第(n-1)位地址位。下面将根据上述预设算法,结合一个具体示例对DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的过程进行详细说明。假设每个DDR颗粒容量为211byte,即m=11;交织粒度为256byte,即n=8,则根据上述预设算法公式out1[n-1:0]=in[n-1:0];当in[m+1:0]<2m×3/2时,当in[m+1:0]≥2m×3/2时,可知,当n=8,m=11时,out1[7:0]=in[7:0];当in[12:0]<211×3/2时,当in[12:0]≥211×3/2时,此时,地址bit12:8的整个地址空间的映射方式如表七所示。表七由表七映射后的地址列的bit8和bit9的值可以看出,按照上述预设公式映射后获得的映射后的地址中,bit8的每3个值中有2个0,1个1。而当bit8为0时,bit9的每2个值中有1个0和1个1。以上述48bitDDR位宽为例,则可以根据映射后的地址,将bit8为0时对应的部分地址位分配给32bitDDR通道,将bit8为1时对应的部分地址位分配给16bitDDR通道,从而可以实现2:1的流量分配。或者,以上述96bitDDR位宽为例,则可以根据映射后的地址,将bit8为1时对应的部分地址位分配给其中一个32bitDDR通道,将bit8为1,bit9为0时对应的部分地址位分配给另外一个32bitDDR通道,将bit8为1,bit9为1时对应的部分地址位分配给最后个32bitDDR通道,从而可以实现1:1:1的流量分配。下面将基于上述映射方式,给出具体的地址分配方法。可选的,基于上述映射方式,当s=2,T1∶T2=1:2时,DDR控制器将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,具体可以包括:当out1[n]=a1时,DDR控制器选择第1个DDR通道,给第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,DDR控制器选择第2个DDR通道,给第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。示例性的,接表七所示的DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的示例,根据表七,此时可假设a1=1,a2=0,则当out1[8]=1时,DDR控制器选择第1个DDR通道,也就是16bitDDR通道,给16bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[11:9];当out1[8]=0时,DDR控制器选择第2个DDR通道,也就是32bitDDR通道,给32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[11:8]=out1[12:9]。结合表七可得,给16bitDDR通道分配的地址空间的out2[10:8]可参见表七右侧一列的out1[11:9],包含000-111共8个连续地址空间,给32bitDDR通道分配的地址空间的out2[11:8]可参见表八左侧一列的out1[12:9],包含0000-1111共16个连续地址空间。该地址分配方式没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。表八out1[12:8]out1[12:8]1111011100110101100010110101001001010000011101111119-->011000110101010110110100001001001101011100100001010001010011000000000132bitDDR16bitDDR可选的,基于上述映射方式,当s=3,T1=T2=T3时,DDR控制器将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,具体可以包括:当out1[n]=a1时,DDR控制器选择第x1个DDR通道,给第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2,out1[n+1]=b1时,DDR控制器选择第x2个DDR通道,给第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,DDR控制器选择第x3个DDR通道,给第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。示例性的,接表七所示的DDR控制器将连续地址按照预设算法进行映射以获得映射后的地址的示例,根据表七,此时可假设a1=1,a2=0,则当out1[8]=1时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[11:9];当out1[8]=0,out1[9]=0时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];当out1[8]=0,out1[9]=1时,DDR控制器选择1个32bitDDR通道,给该32bitDDR通道分配的地址为:out2[7:0]=out1[7:0];out2[10:8]=out1[12:10];结合表七可得,给其中一个32bitDDR通道分配的地址空间的out2[10:8]可参见表九第三列的out1[11:9],包含000-111共8个连续地址空间,给其余两个32bitDDR通道分配的地址空间的out2[10:8]可分别参见表九第一列和第二列的out1[12:10],分别包含000-111共8个连续地址空间。该地址分配方式没有浪费地址空间,并且所有的地址空间都是交织方式,最大限度的发挥了非对称结构DDR的带宽性能,充分、高效的利用了整个地址空间。表九Out1[12:8]out1[12:8]out1[12:8]11100111101111111000110100110110100101101101110000100100100101100011101011101000010100010100100001101001100000000100000132bitDDR32bitDDR32bitDDR需要说明的是,上述实施例给出了两种可能的将预设地址映射为新地址时的预设算法,当然,基于上述预设算法中的公式,还可能衍生出一系列公式,比如对地址bit[m+1:n]中的1位或多位取反,或做线性运算等,本发明实施例对该预设算法不作具体限定。需要说明的是,当s=2时,若T1∶T2≠1:2,将不能实现所有地址空间的全交织,但本发明实施例提供的映射方式仍适用于交织部分地址空间的映射,本发明实施例对此不作具体限定。同理,当s=3时,若T1∶T2∶T3≠1:1:1,将不能实现所有地址空间的全交织,但本发明实施例提供的映射方式仍适用于交织部分地址空间的映射,本发明实施例对此不作具体限定。如图5所示,本发明实施例提供一种DDR控制器50,用于执行以上图4所示的地址分配方法。该DDR控制器50可以包括相应步骤所对应的单元,示例的,可以包括:接收单元501、映射单元502和分配单元503。接收单元501,用于接收访问请求消息,该访问请求消息携带待访问的一段连续地址的信息。映射单元502,用于将该连续地址按照预设算法进行映射以获得映射后的地址,其中,该映射后的地址为能按照T1:T2:…:Ts的比例分配给DDR控制器50的s个DDR通道的地址,Tx为DDR控制器50第x个DDR通道的位宽,x∈{1,2,......,s-1,s},s为不小于2的正整数。分配单元503,用于将该映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器50的s个DDR通道。可选的,一种可能的实现方式中,当s=2,T1∶T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法具体可以包括:out1[n-1:0]=in[n-1:0];其中,out1[x:y]表示映射后的地址的第x位到第y位地址位;in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,映射单元502将连续地址按照预设算法进行映射以获得映射后的地址的具体示例可参考表三对应的示例,本发明实施例在此不再赘述。进一步的,基于该预设算法,一种可能的实现方式中,当s=2,T1∶T2=1:2时,分配单元503具体可以用于:当out1[n]=a1时,选择第1个DDR通道,给第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2时,选择第2个DDR通道,给第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,基于该预设算法和该分配方式的具体示例可参考表四对应的示例,本发明实施例在此不再赘述。或者,基于该预设算法,另一种可能的实现方式中,当s=2,T1∶T2=1:2时,分配单元503具体可以用于:当out1[n]=a1时,选择第1个DDR通道,给第1个DDR通道分配的交织地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,选择第2个DDR通道,给第2个DDR通道分配的交织地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,基于该预设算法和该分配方式的具体示例可参考表五对应的示例,本发明实施例在此不再赘述。基于该预设算法,当s=3,T1=T2=T3时,分配单元503具体可以用于:当out1[n]=a1时,选择第x1个DDR通道,给第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b1时,选择第x2个DDR通道,给第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,选择第x3个DDR通道,给第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,基于该映射方式和该分配方式的具体示例可参考表六对应的示例,本发明实施例在此不再赘述。可选的,另一种可能的实现方式中,当s=2,T1∶T2=1:2时,或者,当s=3,T1=T2=T3时,若s个DDR通道上的每个DDR颗粒的容量为2m字节,交织粒度为2n字节,则预设算法具体可以包括:out1[n-1:0]=in[n-1:0];当in[m+1:0]<2m×3/2时,当in[m+1:0]≥2m×3/2时,其中,out1[x:y]表示映射后的地址的第y位到第x位地址位,in[x:y]表示输入的第y位到第x位地址位;表示向下取整;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,映射单元502将连续地址按照预设算法进行映射以获得映射后的地址的具体示例可参考表七对应的示例,本发明实施例在此不再赘述。进一步的,基于该预设算法,当s=2,T1∶T2=1:2时,分配单元503具体可以用于:当out1[n]=a1时,选择第1个DDR通道,给第1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2时,选择第2个DDR通道,给第2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m:n]=out1[m+1:n+1];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2,out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,基于该预设算法和该分配方式的具体示例可参考表八对应的示例,本发明实施例在此不再赘述。基于该预设算法,当s=3,T1=T2=T3时,分配单元503具体可以用于:当out1[n]=a1时,选择第x1个DDR通道,给第x1个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m:n+1];当out1[n]=a2,out1[n+1]=b1时,选择第x2个DDR通道,给第x2个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];当out1[n]=a2,out1[n+1]=b2时,选择第x3个DDR通道,给第x3个DDR通道分配的地址为:out2[n-1:0]=out1[n-1:0];out2[m-1:n]=out1[m+1:n+2];其中,a1=0或者1,a2=0或者1,a1≠a2,并且所述映射后的地址中out1[n]=a1的个数:out1[n]=a2的个数=1∶2;b1=0或者1,b2=0或者1,b1≠b2;x1=1、2或者3,x2=1、2或者3,x3=1、2或者3,x1≠x2≠x3;out2[x:y]表示分配的地址的第y位到第x位地址位;n-1≤x≤m+1,0≤y≤m;m>n,x、y、m和n均为正整数。具体的,基于该预设算法和该分配方式的具体示例可参考表九对应的示例,本发明实施例在此不再赘述。需要说明的是,本发明实施例中的接收单元501可以为DDR控制器50上具备接收功能的接口电路,如接收机或接收器;映射单元502和分配单元503可以为单独设立的处理器,也可以集成在DDR控制器50的某一个处理器中实现,本发明实施例对此不作具体限定。其中,这里所述的处理器可以是一个中央处理器(英文全称:centralprocessingunit,英文缩写:CPU),还可以为其他通用处理器、数字信号处理器(英文全称:digitalsignalprocessing,英文缩写:DSP)、专用集成电路(英文全称:applicationspecificintegratedcircuit,英文缩写:ASIC)、现场可编程门阵列(英文全称:field-programmablegatearray,英文缩写:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,该处理器还可以为专用处理器,该专用处理器可以包括基带处理芯片、射频处理芯片等中的至少一个。进一步地,该专用处理器还可以包括具有DDR控制器50其他专用处理功能的芯片。可以理解,本发明实施例中的DDR控制器50可对应于上述图4所示的地址分配方法中的DDR控制器,并且本发明实施例中的DDR控制器50中的各个单元的划分和/或功能等均是为了实现上述图4所示的地址分配方法流程,为了简洁,在此不再赘述。基于本发明实施例提供的DDR控制器,由于本发明实施例中,DDR控制器可以将待访问的一段连续地址按照预设算法进行映射,并可以将映射后的地址按照T1:T2:…:Ts的比例分配给DDR控制器的s个DDR通道,其中,Tx为DDR控制器第x个DDR通道的位宽,也就是说,与现有技术不同,本发明实施例提供的DDR控制器可以按DDR通道位宽比例将地址分配到各DDR通道上,使得各DDR通道的流量比例与各DDR通道的位宽比例一致,从而避免了现有技术中采用多通道地址交织方案实现非对称结构DDR时,由于各DDR通道的流量比例与各DDR通道的位宽比例不一致所导致的带宽资源浪费的问题,可以较大限度的发挥非对称结构DDR的带宽性能,充分、高效的利用整个地址空间。可选的,本发明实施例还提供一种可读介质,该可读介质用于存储计算机执行指令,当DDR控制器执行该计算机执行指令时,该DDR控制器执行如图4所示的地址分配方法。具体的地址分配方法可参见上述如图4所示的实施例中的相关描述,此处不再赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1