一种内存容量判断方法、服务器及存储介质与流程

文档序号:14156283阅读:253来源:国知局

本发明涉及内存容量检测领域,尤其涉及一种内存容量判断方法、服务器及存储介质。



背景技术:

近年来,随着物联网、智能家居、可穿戴设备的普及,越来越多的嵌入式设备走进了人们的日常生活,嵌入式设备硬件千差万别,即使是同一厂家同一类型的嵌入式设备,在处理器、闪存、内存容量上也可能有所不同。尤其是内存容量,因软件定制的不同而有不同的需求,因此,需要对内存的容量进行识别。

嵌入式系统中,内存的容量一般不同,在软件编译期间,需要为每一款软件适配对应的内存容量,这将导致开发和测试的工作量成倍增加。

传统的固定内存容量识别软件已经不能满足现在嵌入式设备中内存容量变化的需求。因此,迫切需要一种在运行期间能够自动判断内存容量的方法对内存容量进行判断。



技术实现要素:

有鉴于此,本发明的目的是提出一种内存容量判断方法、服务器及存储介质,通过识别内存控制器映射模式,以解决自动判断内存容量大小的问题。

为实现上述目的,本发明采用如下技术方案:

第一方面,本发明实施例提供了一种内存容量判断方法,包括:

确定内存的最大寻址容量和映射模式;

根据所述最大寻址容量和映射模式,预测所述内存内疑似镜像区的寻址范围;

检验在所述疑似镜像区的寻址范围内是否存在目标镜像区;

根据检验结果确定所述内存容量。

进一步地,所述检验在所述疑似镜像区的寻址范围内是否存在目标镜像区,包括:

确定所述疑似镜像区的寻址范围的开始地址;

根据所述开始地址和预先确定的地址长度确定第一地址区和第二地址区;

根据所述第一地址区和所述第二地址区检验在所述寻址范围内是否存在目标镜像区。

进一步地,所述根据所述开始地址和预先确定的地址长度确定第一地址区和第二地址区,包括:

识别最小内存的行地址线,确定最小内存的地址长度;

根据最小内存的地址长度确定所述预先确定的地址长度,其中,所述预先确定的地址长度是最小内存的地址长度的整数倍;

从所述开始地址,按着所述预先确定的地址长度,选取所述第一地址区和所述第二地址区。

进一步地,所述根据最小内存的地址长度确定所述预先确定的地址长度,其中,所述预先确定的地址长度是最小内存的地址长度的整数倍,包括:

选取所述预先确定的地址长度等于所述最小内存的地址长度;

若所述第一地址区和所述第二地址区检验的目标寻址范围内不存在目标镜像区,则将所述预先确定的地址长度加倍,以获取所述第一地址区和所述第二地址区进行检验。

进一步地,所述映射模式包括:rbc和brc。

进一步地,所述根据所述最大寻址容量和映射模式,预测所述内存内疑似镜像区的寻址范围,包括:

当所述映射模式为rbc时,所述疑似镜像区的寻址范围等于所述内存容量的寻址范围;

当所述映射模式为brc时,所述疑似镜像区的寻址范围等于所述内存容量/bank数的寻址范围。

进一步地,所述根据检验结果确定所述内存容量,包括:

若所述检验结果为所述疑似镜像区的寻址范围存在目标镜像区,

当所述映射模式为rbc时,所述内存容量为所述目标镜像区的大小;

当所述映射模式为brc时,所述内存容量为所述目标镜像区的大小乘以bank数;

若所述检验结果为所述疑似镜像区的寻址范围不存在目标镜像区,则所述最大寻址容量为所述内存容量。

进一步地,所述内存容量的计算公式为:

m=2r*2b*2c*2w

其中,m为内存容量,r为行地址线数,b为log2(bank数),c为列地址线数,w为log2(位宽/8)。

第二方面,本发明实施例提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的一种内存容量判断方法。

第三方面,本发明实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行以实现如第一方面所述的一种内存容量判断方法。

本发明的有益效果是:本发明提供的一种内存容量判断方法、服务器及存储介质,可应用于任意一种需要进行内存容量判断的系统中,如:嵌入式系统、安卓系统等,通过内存最大寻址容量和映射模式预测疑似镜像区的寻址范围的技术手段,在获取疑似镜像区的寻址范围之后,查找目标镜像区,排除目标镜像区的干扰,准确地计算内存容量。通过确定疑似镜像区,缩小了目标镜像区的检验范围,也实现了对目标镜像区的准确判断。解决了现有技术中,不能够对不同大小容量的内存和不同类型的内存的内存容量进行准确判断的问题,降低了内存容量判断的复杂程度。

与现有技术相比,本发明提供的技术方案能够根据不同内存的映射模式,确定内存中疑似镜像区的寻址范围,对所述疑似镜像区内的目标镜像区进行检验,根据检验结果得到准确的内存容量,实现了对不同类型的内存和不同容量的内存进行内存容量的自动判断,减少研发、测试的重复工作,降低研发成本,提高产品市场竞争力。

附图说明

下面将通过参照附图详细描述本发明的示例性实施例,使本领域的普通技术人员更清楚本发明的上述及其他特征和优点,附图中:

图1是本发明实施例一提供的一种内存容量判断方法的流程示意图;

图2是本发明实施例二提供的一种内存容量判断方法的流程示意图;

图3是本发明实施例三提供的一种内存容量判断方法的流程示意图;

图4是本发明实施例三提供的一种映射模式为rbc的内存物理地址的映射示意图;

图5是本发明实施例三提供的一种映射模式为brc的内存物理地址的映射示意图;

图6是本发明实施例四提供的一种服务器的结构框图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在不冲突的情况下,本发明实施例以及实施例中的特征可以相互组合。

为清楚介绍本发明实施例的技术方案,首先对本发明实施例以sdram内存控制器的容量自动判断为例进行全面的介绍。将内存以处理器最大寻址空间初始化,以便能够读写最大寻址容量内任意内存地址。通过内存控制器寄存器获取映射模式为rbc或者brc,根据内存容量公式m=2r*2b*2c*2w,其中m为内存容量,r为行地址线数,b为log2(bank数),c为列地址线数,w为log2(位宽/8)。

当映射模式为rbc映射模式时,可以形成大小为内存最大寻址容量的镜像区,假设内存映射开始地址为s,识别最小内存为n条行地址线,判断地址区:

s—s+2n*2b*2c*2w-1与s+2n*2b*2c*2w—s+2n+1*2b*2c*2w-1

如果这两个地址区互为镜像,则内存容量为2n*2b*2c*2w

如果没有镜像形成,继续判断:

s—s+2n+1*2b*2c*2w-1与s+2n+1*2b*2c*2w—s+2n+2*2b*2c*2w-1

如果这两个地址区互为镜像,则内存容量为2n+1*2b*2c*2w,依次类推识别出内存容量大小。

当映射模式为brc映射模式时,可以形成大小为最大寻址容量/bank数的镜像区,假设内存映射开始地址为s,识别最小内存为n条行地址线,会形成2n*2c*2w大小的镜像区,判断镜像区:

s—s+2n*2c*2w-1与s+2n*2c*2w—s+2n+1*2c*2w-1

如果这两个地址区互为镜像,则内存容量为:2b*2n*2c*2w

如果没有镜像形成,继续判断:

s—s+2n+1*2c*2w-1与s+2n+1*2c*2w—s+2n+2*2c*2w-1

如果这两个地址区互为镜像,则内存容量为2b*2n+1*2c*2w,依次类推识别出内存容量大小。以识别出来的内存容量重新初始化内存控制器。

实施例一

本发明实施例提供的一种内存容量判断方法。适用于各个应用系统中对内存容量自动判断等应用场景,该方法可以由如布设在应用系统内部或外部的处理器等设备或装置来执行。具体可以由部署在应用系统内部和外部的软件和/或硬件负责实施。如图1所示,该方法包括:

步骤110、确定内存的最大寻址容量和映射模式。

最大寻址容量是内存可逻辑寻址的最大地址范围,逻辑寻址的最大地址范围中可能存在多个地址模块可以共同访问同一个物理地址的情况,从而,使得内存的最大寻址容量与内存实际的存储容量有所不同。

映射模式是内存的逻辑地址对物理地址进行寻址的一种寻址模式,产生在逻辑地址与物理地址之间的映射关系。利用映射模式,处理器可以实现使用一系列相邻的逻辑地址来访问物理地址中不相邻的内存地址区。映射模式反映的逻辑地址的寻址方式。内存的映射模式存储在内存控制器寄存器内,通过访问内存控制器寄存器可以获取映射模式。

最大寻址容量和处理器有关,可以查询处理器技术手册,来获取最大寻址容量。

步骤120、根据最大寻址容量和映射模式,预测内存内疑似镜像区的寻址范围。

不同的映射模式对应不同的寻址方式,在获取最大寻址容量之后,根据各个映射模式对应的寻址特点,可以初步判断最大寻址容量中的哪个寻址区域可能存在镜像区,进而,可以对内存中存在疑似镜像区的地址范围进行预测,从而,降低镜像区地址范围的检验区间,提高目标镜像区的检验效率。

步骤130、检验在疑似镜像区的寻址范围内是否存在目标镜像区。

目标镜像区的判断方法:在疑似镜像区的任一个地址中写入一个魔术数,例如0xdeadbeef,判断另一个地址中的数据是否等于该魔术数,若等于,则说明这两个区域互为镜像,否则,该疑似镜像区不存在目标镜像区。

步骤140、根据检验结果确定内存容量。

若检验结果为疑似镜像区的寻址范围存在目标镜像区,当所述映射模式为rbc时,所述内存容量为所述目标镜像区的大小;当所述映射模式为brc时,所述内存容量为所述目标镜像区的大小乘以bank数;若检验结果为疑似镜像区的寻址范围不存在目标镜像区,则最大寻址容量为内存容量。

本发明实施例提供的一种内存容量判断方法,能够根据不同内存的映射模式确定内存中疑似镜像区的寻址范围,识别目标镜像区,根据识别结果确定内存容量,实现了对不同类型的内存和不同容量大小的内存进行内存容量的自动判断,减少研发、测试重复工作,降低研发成本,提高产品市场竞争力。

实施例二

图2是本发明实施例提供的一种内存容量判断方法的流程示意图。本实施例在上述实施例的基础上,对目标镜像区的检验过程进行了具体优化,如图2所示,该方法包括:

步骤210、确定内存的最大寻址容量和映射模式。

步骤220、根据最大寻址容量和映射模式,预测内存内疑似镜像区的寻址范围。

步骤230、确定疑似镜像区的寻址范围的开始地址。

在确定疑似镜像区的寻址范围后,获取该范围的开始地址,从开始地址对疑似镜像区的寻址范围进行检验,能够快速高效地完成镜像区的检验。

内存映射开始地址和处理器有关,可以查询处理器技术手册获知。

步骤240、根据开始地址和预先确定的地址长度确定第一地址区和第二地址区。

根据预先确定的地址长度,在疑似镜像区的寻址范围中选择预先确定的地址长度的地址区作为第一地址区和第二地址区。第一地址区和第二地址区的地址范围与预先确定的地址长度相同或成倍数关系。

可选地,通过识别最小内存的行地址线,确定最小内存的地址长度;根据最小内存的地址长度确定预先确定的地址长度,其中,预先确定的地址长度是最小内存的地址长度的整数倍;从开始地址,按着预先确定的地址长度,选取第一地址区和第二地址区。

步骤250、根据第一地址区和第二地址区检验在寻址范围内是否存在目标镜像区。

在第一地址区中写入一个魔术数,读取第二个地址区中存储的数据,判断该数据是否等于这个魔术数,若等于,则说明第一地址区和第二地址区互为镜像,否则,该寻址范围内不存在目标镜像区。

步骤260、根据检验结果确定内存容量。

进一步地,根据最小内存的地址长度确定预先确定的地址长度,其中,预先确定的地址长度是最小内存的地址长度的整数倍,包括:

选取预先确定的地址长度等于最小内存的地址长度;

若第一地址区和第二地址区检验的目标寻址范围内不存在目标镜像区,则将所述预先确定的地址长度加倍,以获取所述第一地址区和所述第二地址区进行检验。

为了获取准确的镜像区,一般选择最小内存的地址长度作为预先确定的地址长度,然后对疑似镜像区寻址范围的内存地址进行检验,确定是否存在目标镜像区。如果没有检验出目标镜像区,则加倍预先确定的地址长度,继续以加倍后的预先确定的地址长度作为第一地址区和第二地址区的选择标准,从开始地址选择第一地址区和第二地址区,重新对疑似镜像区寻址范围的内存地址进行检验。以此类推,直到预先确定的地址长度等于疑似镜像区的寻址范围。如果检验出目标镜像区,则确定所述疑似镜像区为镜像区。

本发明实施例提供的一种内存容量判断方法,对检验在疑似镜像区的寻址范围内是否存在目标镜像区的过程进行了具体优化,通过确定疑似镜像区的寻址范围的开始地址,从开始地址对疑似镜像区进行检验,确定在寻址范围内是否存在目标镜像区。通过对疑似镜像区的寻址范围内的地址进行分块检验,细致全面的排查,从而能够准确地对内存容量进行判断和计算。

实施例三

图3是本发明实施例提供的一种内存容量判断方法的流程示意图。本实施例在上述实施例的基础上,对预测内存内疑似镜像区的寻址范围的过程进行了具体优化,如图3所示,该方法包括:

步骤310、确定内存的最大寻址容量和映射模式。

步骤320、当映射模式为rbc时,疑似镜像区的寻址范围等于最大寻址容量的寻址范围;当映射模式为brc时,疑似镜像区的寻址范围等于最大寻址容量/bank数的寻址范围。根据最大寻址容量和映射模式,预测内存内疑似镜像区的寻址范围。

示例性地,内存控制器如:sdram、ddr、ddr2、ddr3中,存在两种不同的地址映射方式:块行列(bankrowcolumn,brc)和行块列(rowbankcolumn,rbc)rbc。

步骤330、检验在疑似镜像区的寻址范围内是否存在目标镜像区。

步骤340、根据检验结果确定内存容量。

内存容量的计算公式为:

m=2r*2b*2c*2w

其中,m为内存容量,r为行地址线数,b为log2(bank数),c为列地址线数,w为log2(位宽/8)。

下面以中兴微zx279100a芯片方案中,使用单片ddr3内存规格包括:容量分别为64m,128mb,256mb,512mb。

下面对512mb内存容量进行初始化,其中,最小内存行地址线为n=12,列地址线c=10,bank数为8,b=log28=3,位宽为16,w=log2(16/8)=1。

以zx279100a最大寻址空间初始化内存,以便能够读写最大寻址空间内任意内存地址,通过内存控制器获取映射模式是rbc或者brc。内存映射开始地址为s=0x4000_0000。

当映射模式为rbc时,会形成大小为内存实际容量的镜像区,物理地址映射如图4所示,判断地址区为:

0x4000_0000—0x43ff_ffff与0x4400_0000—0x47ff_ffff

如果这两个地址区互为镜像,则内存容量为64mb,

如果没镜像形成,继续判断:

0x4000_0000—0x47ff_ffff与0x4800_0000—0x4fff_ffff

如果这两个地址区互为镜像,则内存容量为128mb,依次类推识别出内存容量256mb、512mb。

当映射模式为brc时,会形成8mb的bank数大小的镜像区,物理地址映射如图5所示,判断镜像区:

0x4000_0000—0x407f_ffff与0x4080_0000—0x40ff_ffff

如果这两个地址区互为镜像,则内存容量为:64mb,

如果没镜像形成,继续判断:

0x4000_0000—0x40ff_ffff与0x4100_0000—0x41ff_ffff

如果这两个地址区互为镜像,则内存容量为128mb,依次类推识别出内存容量256mb、512mb。

以识别出来的内存容量重新初始化内存控制器。

本发明实施例提供的一种内存容量判断方法,对预测内存内疑似镜像区的寻址范围的过程进行了具体优化,通过对疑似镜像区的寻址范围进行判断,能够缩小疑似镜像区的寻址范围,减少镜像区的检验难度,提高镜像区的检验效率,减少研发、测试的重复性工作,降低研发成本,提高产品市场竞争力。

实施例四

图6为本实施例提供的一种服务器的结构示意图。如图6所示,该服务器包括:处理器610、存储器620、输入装置630和输出装置640;服务器中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;服务器中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的服务器的方法对应的程序指令/模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行设备/终端/服务器的各种功能应用以及数据处理,即实现上述的服务器方法。

存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置630可用于接收输入的数字或字符信息,以及产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。

本实施例提供的服务器,可执行本发明任意实施例所提供的一种内存容量判断方法,具备相应的功能和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的一种内存容量判断方法。

实施例五

本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种内存容量判断方法,所述方法包括:

确定内存的最大寻址容量和映射模式;

根据所述最大寻址容量和映射模式,预测所述内存内疑似镜像区的寻址范围;

检验在所述疑似镜像区的寻址范围内是否存在目标镜像区;

根据检验结果确定所述内存容量。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的一种内存容量判断方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过软件或硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1