终端设备的内存访问控制方法与装置
技术领域
本发明涉及计算机领域,特别涉及一种终端设备的内存访问控制方法与装置。
背景技术
随着消费电子产品的应用越来越丰富,芯片提供的功能也越来越多,这样对于芯片性能也有十分高的要求。中央处理器(CPU,Central Processing Unit)的处理速度,还有其他类似CPU的总线主控单元(Master)的数量也越来越多,每个master发出的访问对带宽的要求也越来越高,这样内存渐渐成为效率的瓶颈。尤其是对于移动通信终端设备(例如手机),一方面,随着长期演进(LTE,Long Term Evolution)等高速网络制式推出,网络数据量越来越大;另一方面,多媒体功能的加强,如4k2k、HD等高清显示分辨率的多媒体,对带宽的要求越来越高。
传统的单通道内存技术的访问效率如图1所示,消耗者(如CPU等总线主控单元)需要提供者(内存)不断地提供数据。如果消耗者过多,就会造成提供者的性能成为目前的瓶颈,这是急需解决的问题。为此,可以考虑采用双通道(Dual-channel)内存技术提升系统整体的运行性能。双通道内存技术的访问效率如图2所示,通过提供多个提供者以及改进的内存控制器,使得传输的并行度加强,可以使得内存的带宽不至于很低。一个传输请求能交错分配到图2中左下角的提供者(一个内存访问通道)或者右下角的提供者(另一个内存访问通道)。
双通道内存技术其实是一种内存控制和管理技术,它依赖于芯片组的内存控制器发生作用,在理论上能够使两条同等规格内存所提供的带宽增长一倍。它最早被应用于服务器和工作站系统中,后来为了解决台式机日益窘迫的内存带宽瓶颈问题,它又走到了台式机主板技术的前台。
如今,随着移动终端类设备对于内存性能的瓶颈问题也日益凸显,双通道内存访问控制策略也逐渐有应用于移动终端类设备。然而,由于常用的双通道内存访问控制策略针对的更多是个人电脑(PC,Personal Computer)等设备,而此类设备对于功耗问题基本上是不需要进行过多关注的,所以一般更关注的只是性能上的提升,但对于一些功耗问题较为敏感的终端设备,现有的内存访问控制策略显然并不能很好地适用;此外,现有技术中的一些双通道、多通道内存访问控制策略还存在实现较为复杂的缺点。
因此,现有技术无法在性能提升和功耗控制上实现平衡以更好地满足终端设备的各类应用对于内存的访问需求。
发明内容
本发明要解决的问题是现有技术无法在性能提升和功耗控制上实现平衡以更好地满足终端设备的各类应用对于内存的访问需求。
为解决上述问题,本发明技术方案提供一种终端设备的内存访问控制方法,所述内存至少包含两个访问通道,所述方法包括:
以第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配;
在所述第二平衡模式下,按存储地址范围将所述内存的整个存储空间划分为与各个访问通道对应的第二子存储空间,访问请求中包括对目标访问地址经过扩展处理后的扩展地址,通过对所述扩展地址进行地址译码以确定相应的访问方式;所述访问方式包括第一访问方式和第二访问方式,所述第一访问方式为在每个所述第二子存储空间实现访问请求的非交错式访问,所述第二访问方式为在虚拟访问区域实现访问请求的交错式访问,所述虚拟访问区域中的访问地址是以交错式访问的大小为单位,将各个所述第二子存储空间的物理存储地址交错映射而成的虚拟存储地址。
可选的,所述存储地址范围由各个访问通道对应的每个片选所外接物理内存的大小确定。
可选的,所述扩展处理包括对所述目标访问地址添加访问选择扩展位,所述访问选择扩展位适于标识所述访问方式为所述第一访问方式或是所述第二访问方式。
可选的,所述访问选择扩展位添加于所述扩展地址的最高位。
可选的,所述终端设备的内存访问控制方法还包括:
设置适于配置所述交错式访问的大小的寄存器;
针对发出访问请求的总线主控单元的传输特性不同,通过所述寄存器分别配置相应的交错式访问的大小。
可选的,所述终端设备的内存访问控制方法还包括:在将访问请求分配到相应的访问通道之前,检测该访问通道对应的存储地址是否允许,并在不允许时发出中断信号通知系统。
可选的,所述终端设备的内存访问控制方法还包括:在实现访问请求的非交错式访问时,若存在预定时间内未被分配访问请求的访问通道,则使该访问通道进入省电模式。
可选的,对于每个访问通道,交错式访问的大小都相等。
为解决上述问题,本发明技术方案还提供一种终端设备的内存访问控制装置,所述内存至少包含两个访问通道,所述装置包括:
控制单元,适于以第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配;
所述控制单元在所述第二平衡模式下,按存储地址范围将所述内存的整个存储空间划分为与各个访问通道对应的第二子存储空间,访问请求中包括对目标访问地址经过扩展处理后的扩展地址,通过对所述扩展地址进行地址译码以确定相应的访问方式;所述访问方式包括第一访问方式和第二访问方式,所述第一访问方式为在每个所述第二子存储空间实现访问请求的非交错式访问,所述第二访问方式为在虚拟访问区域实现访问请求的交错式访问,所述虚拟访问区域中的访问地址是以交错式访问的大小为单位,将各个所述第二子存储空间的物理存储地址交错映射而成的虚拟存储地址。
与现有技术相比,本发明的技术方案至少具有以下优点:
通过以所述第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配,在性能提升和功耗控制上实现了平衡,从而既能够兼顾高性能低功耗要求的终端设备的内存访问需求,同时又不存在需要基于仿真和测试才能确定各内存访问区域的配置参数,且配置参数一旦固定于芯片之中却又无法随意更改的缺点,任何总线主控单元都可以不受限于芯片,根据实际软件调节的效果进行优化。
在所述第二平衡模式下,通过设置适于配置所述交错式访问的大小的寄存器,针对发出访问请求的总线主控单元的传输特性不同,以所述寄存器分别配置相应的交错式访问的大小,从而使每个总线主控单元可以有自己的特有交错式访问的大小。
通过地址监控保护第二平衡模式下的内存访问,从而起到安全保障、调试优化的好处。
在第二平衡模式下实现访问请求的非交错式访问时,通过监控各访问通道的访问情况,使预定时间内未被分配访问请求的访问通道进入省电模式,从而达到节省功耗的目的。
附图说明
图1是单通道内存技术的访问效率的示意图;
图2是双通道内存技术的访问效率的示意图;
图3是本发明实施例的双通道内存的结构示意图;
图4是内存访问模式为高性能模式时的内存访问配置的示意图;
图5是内存访问模式为低功耗模式时的内存访问配置的示意图;
图6是内存访问模式为第一平衡模式时的内存访问配置的示意图;
图7是内存访问模式为第二平衡模式时的内存访问配置的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细的说明。
如背景技术所述,为了提升内存访问性能,现有技术会采用双通道内存访问控制策略,但其适用对象一般局限于个人电脑等对于功耗并不敏感的终端设备,而对于一些功耗问题较为敏感的终端设备则无法较好地适用。
考虑到终端设备具有多种产品应用形态,且终端设备的产品应用形态一般是可以通过终端设备在应用时对于功耗以及性能的敏感程度来体现的,例如:对于功耗的敏感程度较高,则表明终端设备在应用时具有低功耗的要求,对于性能的敏感程度较高,则表明终端设备在应用时具有高性能的要求,对于功耗以及性能的敏感程度均较高,则表明终端设备在应用时具有兼顾高性能和低功耗的要求。
基于上述分析,本申请的发明人分别针对不同的产品应用形态,提出了多种基于双通道/多通道内存访问控制策略的内存访问模式,对访问请求在各个访问通道上如何进行分配进行控制,所述内存访问模式包括高性能模式、低功耗模式和平衡模式,不同的内存访问模式能够适应终端设备的各类应用对于内存的不同访问需求。
若终端设备的产品应用形态为高性能要求,则可以将所述高性能模式作为内存访问模式对访问请求在各个访问通道上进行分配;若终端设备的产品应用形态为低功耗要求,则可以将所述低功耗模式作为内存访问模式对访问请求在各个访问通道上进行分配;若终端设备的产品应用形态为高性能和低功耗两者要求兼顾,则可以将所述平衡模式对访问请求在各个访问通道上进行分配。
其中,所述平衡模式包括第一平衡模式和第二平衡模式,所述第一平衡模式虽然已经能够在性能提升以及功耗控制上实现平衡,但是还存在着一些缺点。因此,为了更好地满足终端设备的各类应用对于内存的访问需求,本发明实施例提供一种终端设备的内存访问控制方法,所述内存至少包含两个访问通道,该方法中以第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配,不但实现的复杂度不高,而且能够明显提升整体系统的运行性能,同时在功耗控制上也能够满足低功耗的需求,尤其适合要求同时兼顾高性能和低功耗的移动终端设备。
为了便于更好地理解本实施例提供的终端设备的内存访问控制方法,有必要先对上述内存访问模式的适用对象,即具有双通道/多通道内存结构的终端设备进行介绍。
本实施例中,所述终端设备具体为移动通信终端设备,例如手机、具有通信模块的平板电脑等,在其他实施例中,所述终端设备也可以是掌上电脑、车载终端、台式电脑等。所述内存以现今较为常用的双倍速率同步动态随机存储器(DDR SDRAM,Double Date RateSynchronous Dynamic Random Access Memory),简称DDR内存为例进行说明,其他实施例中,所述内存也可以为其他支持双通道或多通道内存技术的存储器。
需要说明的是,在本实施例中以支持双通道内存访问技术的DDR为例说明,但本发明实施例提供的终端设备的内存访问控制方法不仅仅局限于双通道,可以是多通道(即包含两个以上的内存访问通道)。
本发明实施例的双通道内存的结构如图3所示,DDR控制器A、DDR PHY A以及A0、A1构成一个内存访问通道,DDR控制器B、DDR PHY B以及B0、B1构成另一个内存访问通道,通过DDR控制器之上的一层即互连逻辑层(interconnect logic)来分发来自于多个Master(如图3所示的M0、M1……Mn)的读写请求(即所述访问请求)。
当然,在本实施例中,一个内存访问通道分别对应一个DDR控制器,在其他实施例中,DDR控制器A和DDR控制器B也可以开发合并为一个DDR控制器,即所有内存访问通道都对应一个DDR控制器,但是该DDR控制器提供的功能是与合并之前所有DDR控制器提供的功能一样的。此外,在其他实施例中,还可以把互连逻辑层实现的功能也合入到一个DDR控制器里面去。因此,双通道内存的实现结构并不局限于本实施例所提供的示例。
继续参阅图3,DDR PHY A和DDR PHY B是双通道DDR必须的,“DDR PHY”是处理一些时序方面以及频率方面的部件,与DDR控制器相对应,一般有多少个DDR控制器就有多少个DDR PHY,由于“DDR PHY”的含义和作用为本领域技术人员所公知,此处不再详细描述。
此外,各个内存访问通道通常都具有片选(CS,Chip Select),用于选择外接的DDR物理内存,通俗地讲,片选就是选择外面接的DDR片子,以作为将来的初始化对象。图3中A0代表访问通道0的第一个CS,A1代表访问通道0的第二个CS;B0代表访问通道1的第一个CS,B1代表访问通道1的第二个CS。在图3中,对于不同的CS,分别以不同的填充图案以示区别,其中A0以空白填充表示,A1以小方格填充表示,B0以正斜线填充表示,B1以反斜线填充表示。当然,在实际实施时,各个访问通道都还可以有更多的CS。
下面结合图3所示双通道内存的结构分别对所述高性能模式、低功耗模式、第一平衡模式和第二平衡模式这几种内存访问模式进行说明。
高性能模式
所述高性能模式适合超级电话或者平板电脑等对功耗不敏感的终端设备,也就是说,此类设备由于电池容量较大,所以一般更关注的是运行性能,对于功耗则显得相对不太敏感。在所述高性能模式下,通过在所述内存的整个存储空间实现访问请求的交错式访问,从而能够在最大程度上实现各访问通道的并行访问,使系统运行性能得到提升。
需要说明的是,所述交错式访问又可以称为交叉存取(interleaving)或者交互式访问,是加快内存速度的一种并行操作的内存存取技术。在交叉存取方式中,内存是被分在不同的块中,只要读写操作是要在两个块中进行的,它们就可以同时进行。举例来说,将存储体的奇数地址和偶数地址部分分开,这样当前字节被刷新时,可以不影响下一个字节的访问。由于所述交错式访问的含义和作用为本领域技术人员所知晓,此处不再详细描述。
当一个访问请求来自于互连(Interconnect)上,由Interconnect上的逻辑分发到如图3所示的两个访问通道。为了方便说明,假设图3中只有A0和B0接了外部DDR物理内存,那么就按照规定的交错式访问的大小(interleaved size)分别访问A0和B0对应的存储区域,通过进行并行访问以提高系统运行性能。
所述高性能模式的内存访问配置情况如图4所示,图4中的每一个相邻的格子表示外接DDR物理内存连续的存储地址,每个格子的存储空间大小即为交错式访问的大小。与图3中A0和B0这两个CS所表示的填充图案相对应的是,对于空白填充格子表示的存储空间的访问来源于A0,对于正斜线填充格子表示的存储空间的访问来自于B0。图4是软件和硬件模块可以看到的地址空间视图,对软件和硬件模块来说是透明的,它们并不知道数据来源于哪个访问通道。
在所述高性能模式下,交错式访问的大小通常是相等的,也就是说,图4中空白填充格子的面积等于正斜线填充格子的面积。
在所述高性能模式下,所有存储空间都进行交错式访问,就性能来说一般是最高的,但功耗较大,因为大部分的访问都分发到了两个访问通道上,使得两个访问通道都不能进入省电模式,从而消耗过多的功耗。本领域技术人员知晓,所述省电模式一般可以由DDR控制器提供,例如根据DDR控制器来选择关闭一些时钟和电源,以达到节省功耗的目的。
需要说明的是,图4仅示出了A0接了外部DDR物理内存,B0接了外部DDR物理内存的情况,对于A1也可以外接等价与A0外接DDR物理内存的情况,B1也可以外接等价与B0外接DDR物理内存的情况。当然,本领域技术人员容易理解的是,如果每个访问通道都包含更多的CS,那么各个CS外接DDR物理内存的情况可以参考上述实现方式。
低功耗模式
所述低功耗模式更适合那些因电池容量有限或续航能力要求高而对功耗较为敏感的移动终端设备。在所述低功耗模式下,所述内存的整个存储空间按存储地址范围划分为与各个访问通道对应的第一子存储空间,在每个所述第一子存储空间实现访问请求的非交错式访问。所述存储地址范围由各个访问通道对应的每个片选所外接物理内存的大小确定。
与所述高性能模式相比较,所述低功耗模式最大的特点是在整个存储空间实现最小的交错式访问。所述低功耗模式的内存访问配置情况如图5所示,仍然假设只有A0和B0接了外部DDR物理内存,那么在低功耗模式下,整个存储空间包括两部分访问区域,其一是A0外接DDR物理内存所对应的存储空间,这是根据A0外接DDR物理内存的存储地址范围所确定的与访问通道0对应的一个所述第一子存储空间,即图5中以空白填充格子所表示的区域,其二是B0外接DDR物理内存所对应的存储空间,这是根据B0外接DDR物理内存的存储地址范围所确定的与访问通道1对应的另一个所述第一子存储空间,即图5中正斜线填充格子所表示的区域。
从图5可以看出,对于由A0和B0外接DDR物理内存的总和所构成的整个存储空间来说,A0对应的第一子存储空间与B0对应的第一子存储空间之间实现的是双通道的交错式访问,而在A0和B0各自对应的第一子存储空间内部,则均以非交错式访问的方式实现。
本领域技术人员知晓,对于任意访问内存的读写请求,都会包含其要访问的存储地址,对于内存控制器来说,程序要访问什么存储地址,就到该存储地址去找数据给程序。
本申请文件中将访问请求要访问的存储地址称为目标访问地址。在所述低功耗模式下,由于与各个访问通道对应的第一子存储空间的存储地址范围都是一大片连续的存储地址,根据某个访问请求所包含的目标访问地址,判断其处于哪个的存储地址范围,便可以确定该访问请求应当访问A0对应的第一子存储空间还是B0对应的第一子存储空间。
举例来说,一般的CPU访问只会发出一小段连续的存储地址访问,而各访问通道对应的第一子存储空间的存储地址范围一般是很大的,那么CPU发出的小段地址通常要么落在如图5所示的A0对应的区域,要么落在B0对应的区域,假设落在对应的A0区域,那么就只访问对应的A0区域,假设落在B0对应的区域,那么就只访问B0对应的区域。
在实际实施时,假设图5中的A0外接DDR物理内存的大小为1G,B0外接DDR物理内存的大小为1G,且两者之间外接DDR物理内存的存储地址是连续的,那么任何Mater读写访问的0-1G存储地址都将落在A0对应的第一子存储空间,访问1G-2G的存储地址都将落在B0对应的第一子存储空间。如此,在进行软件系统设计的时候,设计者可以根据需求将对内存的访问安排分配到A0还是B0对应的第一子存储空间。
需要说明的是,A0和B0各自外接DDR物理内存的大小也可以不相等,而且两者之间外接DDR物理内存的存储地址也可以是非连续的,例如:A0外接DDR物理内存的大小为1G,对应的存储地址范围为0-1G,而B0外接DDR物理内存的大小为2G,对应的存储地址范围为2-4G。
当所述终端设备为移动通信终端时,由于现今的移动通信终端很多都会包括通讯处理器和应用处理器,那么当所述内存访问模式为低功耗模式时,则可以将所述通讯处理器和应用处理器发出的访问请求分别分配于不同的访问通道,并实现访问请求的非交错式访问,从而达到功耗控制的目的。
举例来说,假设移动通信终端(例如手机)的应用处理器定义只访问A0对应的区域,而对于通讯处理器定义只访问B0对应的区域,A0和B0各自对应的区域的大小可以不相等。一般来说,应用处理器通常处于空闲状态(idle)时不访问A0对应的区域,通讯处理器为了和基站同步会间隔访问B0对应的区域,这样可以使得大部分时间A0对应的区域进入省电模式,从而达到节省功耗的目的;而对于多媒体等需要高带宽需求的Master,则可以分配直接存储器访问(DMA,Direct Memory Access)物理内存在A0和B0对应的区域上,也就是同时使用图5中空白填充格子和正斜线填充格子所表示的两个区域,这样使得能满足高带宽需求。
第一平衡模式
虽然高性能模式和低功耗模式存在各自的优点,但也存在各自的不足,因此可以考虑将前面的两种模式相结合,得到高性能模式和低功耗模式的混合模式,或称之为平衡模式,该模式下可以同时获得前面两种内存访问模式突出的优点:性能和功耗。所述平衡模式能够适合那些需要兼顾性能提升和功耗控制的移动终端设备。
第一平衡模式是所述平衡模式的一种实现方式,在所述第一平衡模式下,所述内存的整个存储空间包括第一访问区域和第二访问区域,在所述第一访问区域实现访问请求的交错式访问,所述第二访问区域包括分别对应于各个访问通道的子访问区域,在每个子访问区域实现访问请求的非交错式访问。
所述第一平衡模式的内存访问配置情况如图6所示,为了方便说明,仍然假设只有A0和B0接了外部DDR物理内存,那么在第一平衡模式下,整个存储空间包括两大部分访问区域,其一是所述第一访问区域,即图6示出的以多个交错相邻的空白填充小格子和正斜线填充小格子所构成的访问区域,该访问区域的大小以“size0”表示,其二是所述第二访问区域,即图6示出的一个空白填充大格子和一个正斜线填充大格子所构成的访问区域,该访问区域包括一个对应于访问通道0的子访问区域,该子访问区域以“An”表示,该子访问区域的大小以“size1”表示,该访问区域还包括另一个对应于访问通道1的子访问区域,该子访问区域以“Bn”表示,该子访问区域的大小以“size2”表示。
对于所述第一访问区域,以交错式访问的方式实现访问请求对内存的访问,与图6中A0和B0这两个CS所表示的填充图案相对应的是,对于空白填充小格子所表示区域的访问来源于A0,例如图6中的a01、a02,对于正斜线填充小格子所表示区域的访问来自于B0,例如图6中的b01、b02。每个小格子所表示区域的大小即为交错式访问的大小,也可以用“entrysize”进行表示(图6中未示出)。以交错式访问的方式访问所述第一访问区域的具体实施还可以参考所述高性能模式中的相关描述,两者都是在预定存储空间实现交错式访问,有所区别的是,前者的预定存储空间为整个存储空间,而后者的预定存储空间只是整个存储空间中的一部分。
对于所述第二访问区域,以非交错式访问的方式实现访问请求对内存的访问,与图6中A0和B0这两个CS所表示的填充图案相对应的是,对于空白填充大格子所表示的子访问区域An的访问来源于A0,对于正斜线填充大格子所表示的子访问区域Bn的访问来自于B0。以交错式访问的方式访问所述第二访问区域的具体实施还可以参考所述低功耗模式中的相关描述,两者都是在预定存储空间实现非交错式访问,有所区别的是,前者的预定存储空间为整个存储空间,而后者的预定存储空间只是整个存储空间中的一部分。
在所述第一平衡模式下,对于第一访问区域的大小(例如size0)以及其中交错式访问的大小(例如entry size)与所述第二访问区域的大小(例如size1+size2)的确定是非常重要的,因为这直接影响到终端设备对于性能提升和功耗控制的理想程度。
所述第一访问区域以及其中交错式访问的大小与所述第二访问区域的大小可以通过系统仿真和测试确定。
具体地,通过系统仿真和测试,确定第一访问区域以及其中交错式访问的大小与所述第二访问区域的大小,也就是确定哪些区域是大块用于实现交错式访问的区域(即size0),交错式访问的大小为多少比较恰当(对任何Master相等的静态配置大小,即entrysize),大块没有实现交错式访问的区域为多大(或称为用于实现非交错式访问的区域,即size1+size2)。
具体实施时,所述第一访问区域以及其中交错式访问的大小与所述第二访问区域的大小通过系统仿真和测试确定可以包括:
通过系统仿真和测试统计出所述终端设备的各项应用中对性能要求高的应用的数量以及各自所需的存储空间大小,以此确定所述第一访问区域的大小,所述内存的整个存储空间的大小减去所述第一访问区域的大小为所述第二访问区域的大小;
通过系统仿真和测试评估所述对性能要求高的应用运行时相应总线主控单元发出访问请求的传输特性,以此确定所述交错式访问的大小。
经过系统仿真和测试之后,如果size0得到确定,由于内存的整个存储空间的大小是可以根据所有片选外接物理内存的大小而很容易得到的,那么内存的整个存储空间的大小减去size0则为size1+size2,至于size1和size2分别为多少大小,则由相应访问通道的片选所外接的物理内存的大小决定,假如两个访问通道的片选所外接的物理内存的大小相等,则size1和size2也是相等的,假如两个访问通道的片选所外接的物理内存的大小不相等,那么还需要根据entry size确定,由于entry size是可以通过系统仿真和测试评估所述对性能要求高的应用运行时相应总线主控单元发出访问请求的传输特性来确定的,且所述第一访问区域中的交错式访问的大小通常又是相等的,那么size1相对应访问通道的片选所外接的物理内存的大小减去[(size0)*(1/2)]后得到的结果即为size1,同理,size2相对应访问通道的片选所外接的物理内存的大小减去[(size0)*(1/2)]后得到的结果即为size2。
关于通过系统仿真和测试评估Master发出访问请求的传输特性,确定所述交错式访问的大小,具体可以评估Master发出访问的最多的大小是多少,频率最高的是谁,谁的优先级最高。比如图像处理器一次访问发出128个字节(Byte,通常以“B”表示)的访问,但是CPU最多一次只能访问64个Byte,因为图像处理不好,人眼会观察到闪烁,所以一般就选择128个Byte作为交错式访问的大小。实际哪种情况最好,由芯片开发过程中的仿真测试来确定选择多大。
本申请的发明人认为,只要测试充分,或者很清楚应用场景,就可以得到上述参数(例如size0、entry size、size1+size2),从而使得性能和功耗都达到理想值。例如,使性能要求高的应用场景,放置于如图6所示的用于实现交错式访问的第一访问区域,而使性能要求不高的应用场景只访问第二访问区域中的An或者访问Bn。访问An和访问Bn分别放置不太同时访问的应用场景,这样可以使得当第一访问区域没访问的时候,只有An访问而Bn没有任何访问,则Bn对应的访问通道可以进入省电模式。反之,当第一访问区域没访问的时候,只有Bn访问而An没有任何访问,则An对应的访问通道可以进入省电模式。
在实际实施时,上述高性能模式、低功耗模式和第一平衡模式都可以通过静态配置表的形式相应存储于所述终端设备中,所述选择相应的内存访问模式对访问请求在各个访问通道上进行分配通过配置相应的静态配置表实现。
具体地,通过定义多张静态配置表来描述访问请求如何在双通道或多通道上进行分配,在静态配置表完成配置之后,芯片生成具体逻辑的时候能高度优化,软件配置仅需要根据不同的产品应用形态在系统启动的时候进行相应配置。
所谓的“静态配置”,也就是说终端设备开机完成启动后,对于已完成的配置将不能更改,Master发出的访问请求会根据配置分配到相应的访问通道上,这种关系是静态的。比如在所述低功耗模式下,对于某个地址,总是访问A0对应的访问通道,而对于另一个地址则总是访问B0对应的访问通道。再比如在所述第一平衡模式下,有一大部分的区域是总访问一个通道,有一大部分是小颗粒的划分,有的地址访问A0对应的访问通道,有的地址访问B0对应的访问通道。
静态配置表是要求芯片实现一段配置寄存器,然后软件配置好。表1为静态配置表的一种示例:
表1
第二平衡模式
由于所述第一平衡模式需要基于仿真和测试的基础上得到交错式访问的大小,还有哪些区域需要进行交错式访问,哪些区域不需要进行交错式访问,分别需要指定固定的大小。一旦芯片生产之后,软件选择这种内存访问模式之后,该模式下的具体配置参数(例如size0、entry size、size1和size2)无法更改。
为解决上述问题,在本实施例中,提出了一种以第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配的终端设备的内存访问控制方法。所述第二平衡模式是所述平衡模式的另一种实现方式,在所述第二平衡模式下,按存储地址范围将所述内存的整个存储空间划分为与各个访问通道对应的第二子存储空间,访问请求中包括对目标访问地址经过扩展处理后的扩展地址,通过对所述扩展地址进行地址译码以确定相应的访问方式;所述访问方式包括第一访问方式和第二访问方式,所述第一访问方式为在每个所述第二子存储空间实现访问请求的非交错式访问,所述第二访问方式为在虚拟访问区域实现访问请求的交错式访问,所述虚拟访问区域中的访问地址是以交错式访问的大小为单位,将各个所述第二子存储空间的物理存储地址交错映射而成的虚拟存储地址。
图7示出了所述第二平衡模式的内存访问配置情况,假设仍然只有A0和B0接了外部DDR物理内存,那么在第二平衡模式下,整个存储空间包括两部分访问区域,其一是A0外接DDR物理内存所对应的存储空间,这是根据A0外接DDR物理内存的存储地址范围所确定的与访问通道0对应的一个所述第二子存储空间,即图7中以空白填充粗框格子所表示的区域,其二是B0外接DDR物理内存所对应的存储空间,这是根据B0外接DDR物理内存的存储地址范围所确定的与访问通道1对应的另一个所述第二子存储空间,即图7中正斜线填充粗框格子所表示的区域。
虽然,如果单就外接DDR物理内存所构成的整个存储空间的划分来看,所述第二平衡模式与所述低功耗模式较为类似,但是,本实施例中对于两个第二子存储空间的访问方式与所述低功耗模式下对于两个第一子存储空间的访问方式却并不相同,后者的访问方式是唯一确定的,而前者的访问方式则并不唯一。本实施例中,Master发出的访问请求中包括的要访问的存储地址的形式与现有技术中通常的目标访问地址有所不同,在第二平衡模式下,访问请求中包括的是对目标访问地址经过扩展处理后的扩展地址,通过对所述扩展地址进行地址译码以确定相应的访问方式,所述访问方式包括两种,一种能够实现在每个所述第二子存储空间实现访问请求的非交错式访问(即所述第一访问方式),另一种则能够实现整个存储空间内的交错式访问(即所述第二访问方式)。
对于所述第一访问方式,其与所述低功耗模式下的访问控制方式类似,可以通过地址译码的方式,识别某个访问请求所包含的扩展地址中适于进行寻址的地址部分,判断其处于哪个的存储地址范围,便可以确定该访问请求应当访问A0对应的第二子存储空间还是B0对应的第二子存储空间。所述第一访问方式的具体实现可以参考所述低功耗模式下内存访问控制的相关描述,此处不再详细描述。
对于所述第二访问方式,为了能够实现在整个存储空间内的交错式访问,因此在本实施例中定义了一个独立的虚拟存储空间,即如图7所示的“虚拟访问区域”,该虚拟访问区域并非实际的物理存储空间,而只是一种虚拟控制,其中的访问地址是以交错式访问的大小为单位,通过地址映射的方式,将各个第二子存储空间的物理存储地址交错映射而成的虚拟存储地址,因此该虚拟访问区域中的访问地址是基于第二子存储空间的物理存储地址所确定的虚拟存储地址,而且该虚拟访问区域的大小即为整个存储空间的大小。例如,假设A0对应的第二子存储空间的大小为1G,B0对应的第二子存储空间的大小为1G,那么虚拟访问区域的大小为1G+1G=2GB,本实施例中以此为例进行说明。
可以继续参阅图7,图7左侧示出的“虚拟访问区域”中,每一个小格子为一个虚拟存储地址,其大小为交错式访问的大小,最底下的小格子为虚拟存储地址中的起始地址,即“0地址”,各个第二子存储空间的物理存储地址与虚拟访问区域中的虚拟存储地址之间的映射关系如图7中的双向箭头所示,A0对应的第二子存储空间中的地址k0映射为虚拟存储地址中的0地址,B0对应的第二子存储空间中的地址k2则映射为与“0地址”相邻的后续虚拟存储地址(假设称为“1地址”,图7未示出),A0对应的第二子存储空间中的地址k1映射为与“1地址”相邻的后续虚拟存储地址(假设称为“2地址”,图7未示出),B0对应的第二子存储空间中的地址k3映射为与“2地址”相邻的后续虚拟存储地址,以此类推,从而实现将各个第二子存储空间的物理存储地址交错映射为虚拟访问区域中的各个虚拟存储地址。
在实际实施时,DDR控制器通过地址译码的方式,确定相应的访问方式后,根据各个第二子存储空间的物理存储地址与虚拟访问区域中的虚拟存储地址之间的映射关系,便能够确定最终访问的外接DDR物理内存的存储地址,因此,在所述虚拟访问区域实现访问请求的交错式访问,相当于是实现了在整个物理存储空间内的交错式访问。
通过对上述两种访问方式的介绍可知,虽然两种访问方式最终访问的地址都是外接DDR物理内存的存储地址,但为了对这两种访问方式能够有更为直观的理解,在本实施例中可以将在所述第一访问方式下直接访问的如图7右侧所示由两个粗框格子所构成的区域称为普通区域,而将在所述第二访问方式下访问的如图7左侧所示虚拟访问区域的这种虚拟控制称为高速交错访问区域。
本实施例中,所述扩展处理具体包括对所述目标访问地址添加访问选择扩展位,所述访问选择扩展位适于标识所述访问方式为所述第一访问方式或是所述第二访问方式。例如,若访问选择扩展位为0,则表示访问方式为第一访问方式,若访问选择扩展位为1,则表示访问方式为第二访问方式。
本实施例中,为了便于识别,所述访问选择扩展位添加于所述扩展地址的最高位。在其他实施例中,也可以将所述扩展地址的次高位作为所述访问选择扩展位,而将所述扩展地址的最高位预留,以用于其他用途。需要说明的是,由于本领域技术人员习惯将某个访问地址中的低位用于寻址,因此将额外增加的访问选择扩展位设定在扩展地址的高位能够使所述扩展地址更具有通用性。
此外,由于每个Master发出的传输特性不一样,为了使每个Master可以有自己的特有交错式访问的大小,因此,所述终端设备的内存访问控制方法还包括:设置适于配置所述交错式访问的大小的寄存器;针对发出访问请求的总线主控单元的传输特性不同,通过所述寄存器分别配置相应的交错式访问的大小。
在实际实施时,可以定义一个扩展地址最高位以及交错式访问的大小扩展位的表在互连逻辑中,示例如表2:
表2
下面举例说明所述第二平衡模式下的内存访问过程:
如表2,扩展地址最高位表示是否访问高速交错访问区域,例如该位为“1”则表示访问高速交错访问区域,该位为“0”则表示访问普通区域。交错式访问的大小扩展位表示各类Master采用何种大小的交错式访问的大小,比如定义256B为1,512B为2。
假设当某个Master A发出访问,由于其对应的交错式访问的大小配置为1,那么如果落在高速交错访问区域,则交错式访问的大小会以256B为间隔进行访问。假设发出了0地址的访问,那么会直接访问到图7右侧所示空白填充粗框格子所表示区域的起始地址(普通区域)k0。假设发出了0+256B的访问,由于扩展地址最高位为0,那么还是落在普通区域的256B偏移的地方k1,同理,发出0-2GB的访问都会落在图7右侧所示的普通区域。当Master A发出最高位为1(会落在高速交错访问区域,随后的空间是具备交错访问功能的),对于扩展地址中的低32位为0的访问,那么会落在虚拟存储地址的高速交错访问区域,最终访问到物理存储地址k0。当Master A发出最高位为1,对于扩展地址中的低32位为256B的访问,那么会落在虚拟存储地址的高速交错访问区域,最终访问到物理存储地址k2。
综上,所述第二平衡模式至少存在以下特点:
1)任何Master都可以不受限于芯片,根据实际软件调节的效果进行优化,即可以通过地址的选择来决定访问高速交错访问区域还是普通区域。在这种内存访问方式下,用于实现交错式访问的区域等价于多访问通道下最小一个访问通道对应的外接DDR的大小,十分灵活。
2)由于每个Master发出的传输特性不一样,例如CPU发出的大部分访问为缓存行(Cache line)的大小,如64B,而其他Master发出128B的大小,所以针对每个Master可以有自己的特有交错式访问的大小。
因此,通过将所述第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配,在性能提升和功耗控制上实现了平衡,由此既能够兼顾高性能和低功耗的内存访问需求,又能够克服所述第一平衡模式需要基于仿真和测试才能确定各内存访问区域的配置参数,且配置参数一旦固定于芯片之中却又无法随意更改的缺点,任何总线主控单元都可以不受限于芯片,根据实际软件调节的效果进行优化。
另外,在所述第二平衡模式下,由于可以通过2个不同地址来访问物理的DDR某地址,也就是说,有2个地址对应一个真正的物理地址,都会去根据虚拟地址访问到这个真实存在的物理地址,一旦软件有很多问题,便会造成调试比较困难,因此存在一定的安全风险。为解决该问题,本实施例提供的所述终端设备的内存访问控制方法还包括:在将访问请求分配到相应的访问通道之前,检测该访问通道对应的存储地址是否允许,并在不允许时发出中断信号通知系统。在具体实施时,所述检测该访问通道对应的存储地址是否允许通过地址的范围、读和写操作的选择进行判断。
本领域技术人员能够理解是,在实际实施时,通过在DDR控制器中增加总线地址监控模块(bus monitor),可以对访问的地址进行安全监控,从而降低上述安全风险。该模块的功能很简单,通过在将访问请求分发到具体某个访问通道之前,检测其地址是否允许,如果不允许就发出中断通知系统,这样可以区分是即将访问虚拟控制的高速交错访问区域,还是去访问普通区域。地址是否被允许的检测的大致实现为:设置了地址的范围、读和写的选择,当芯片发现有读或者写操作的时候,会触发中断告诉程序员,这里或许存在非法访问。这种方式可以起到安全保障,调试优化的好处。
需要说明的是,在本实施例中,对于每个访问通道,交错式访问的大小都相等,如此可以使得各访问通道对应的外接DDR物理内存的整体利用率较高。本领域技术人员能够理解的是,在其他实施例中,对于任意两个访问通道,交错式访问的大小也可以不相等,即上述的几种内存访问模式中,均可以适合不对称的DDR,具体地址分配取决于外接DDR物理内存的实际大小。交互式访问的最大区域是等价于多通道下最小一个访问通道下的DDR大小。
此外,在本实施例中,所述终端设备的内存访问控制方法还包括:在实现访问请求的非交错式访问时,若存在预定时间内未被分配访问请求的访问通道,则使该访问通道进入省电模式。
在实际实施时,可以通过添加一个芯片机制,提供一个寄存器给软件来配置。例如提供一个用于记录空闲(idle)时间的寄存器,软件配置为200毫秒(ms),当200ms没有Master来访问某访问通道,那么该访问通道就会进入省电模式。
在实现访问请求的非交错式访问时,通过监控各访问通道的访问情况,使预定时间内未被分配访问请求的访问通道进入省电模式,从而达到节省功耗的目的。
对应于上述终端设备的内存访问控制方法,本实施例还提供一种终端设备的内存访问控制装置,所述内存至少包含两个访问通道,所述装置包括:控制单元,适于以第二平衡模式作为内存访问模式对访问请求在各个访问通道上进行分配;所述控制单元在所述第二平衡模式下,按存储地址范围将所述内存的整个存储空间划分为与各个访问通道对应的第二子存储空间,访问请求中包括对目标访问地址经过扩展处理后的扩展地址,通过对所述扩展地址进行地址译码以确定相应的访问方式;所述访问方式包括第一访问方式和第二访问方式,所述第一访问方式为在每个所述第二子存储空间实现访问请求的非交错式访问,所述第二访问方式为在虚拟访问区域实现访问请求的交错式访问,所述虚拟访问区域中的访问地址是以交错式访问的大小为单位,将各个所述第二子存储空间的物理存储地址交错映射而成的虚拟存储地址。
所述终端设备的内存访问控制装置还可以包括:适于配置所述交错式访问的大小的寄存器;配置单元,适于针对发出访问请求的总线主控单元的传输特性不同,通过所述寄存器分别配置相应的交错式访问的大小。
所述终端设备的内存访问控制装置还可以包括:检测单元,适于在所述控制单元将访问请求分配到相应的访问通道之前,检测该访问通道对应的存储地址是否允许;中断单元,适于在所述检测单元检测到访问通道对应的存储地址不允许时,发出中断信号通知系统。
所述终端设备的内存访问控制装置还可以包括:访问监控单元,适于在实现访问请求的非交错式访问时,判断是否存在预定时间内未被分配访问请求的访问通道;省电单元,适于在判断出存在预定时间内未被分配访问请求的访问通道时,使该访问通道进入省电模式。
所述终端设备的内存访问控制装置的具体实施可以参考本实施例所述的终端设备的内存访问控制方法的实施,此处不再赘述。
本领域技术人员可以理解,实现上述实施例中终端设备的内存访问控制装置的全部或部分是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是ROM、RAM、磁碟、光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。