CN115048319A - 地址映射关系的确定方法、控制器和地址关系映射*** - Google Patents
地址映射关系的确定方法、控制器和地址关系映射*** Download PDFInfo
- Publication number
- CN115048319A CN115048319A CN202210796176.7A CN202210796176A CN115048319A CN 115048319 A CN115048319 A CN 115048319A CN 202210796176 A CN202210796176 A CN 202210796176A CN 115048319 A CN115048319 A CN 115048319A
- Authority
- CN
- China
- Prior art keywords
- address
- physical address
- memory
- system physical
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供了一种地址映射关系的确定方法、控制器和地址关系映射***。该方法包括:对存储器发送访问指令,访问指令包括预设的第一地址信息,第一地址信息包括数据存储的***物理地址;获取第二地址信息,第二地址信息为存储器在接收到访问指令后根据第一地址信息自动解码后生成的地址信息,第二地址信息包括数据存储的存储器物理地址;根据第二地址信息和第一地址信息的对应关系,构建地址映射表;根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系;根据映射关系,确定***访问事件对应的存储器物理地址。该方案通过地址映射表进行推算,可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。
Description
技术领域
本公开涉及地址信息处理领域,具体而言,涉及一种地址映射关系的确定方法、控制器、计算机可读存储介质、处理器和地址关系映射***。
背景技术
在现代计算机***中,为了提高内存访问效率和保护内存数据,一般内存控制器的厂商会故意隐藏存储器物理地址和DRAM(Dynamic Random Access Memory,动态随机存取存储器)器件地址的映射关系,通过***物理地址无法确定***物理地址对应于DRAM器件的内存颗粒中的具***置,即无法确定***物理地址和存储器物理地址之间的映射关系,而在内存应用中,有些场景是需要知道***物理地址和存储器物理地址的映射关系的,例如,对***中失效内存单元定位分析(内存测试中发现某个***地址上对应的内存失效,需要后端技术人员对失效的内存单元进行技术分析,此时就需要找到失效单元的具***置)、DRAM器件内存***(需要对特定DRAM阵列和DRAM行进行测试)或者***Rowhammer测试。
发明内容
本公开的主要目的在于提供一种地址映射关系的确定方法、控制器、计算机可读存储介质、处理器和地址关系映射***,本公开实施例可以具有以下优点:可以确定***物理地址和存储器物理地址之间的映射关系,进而根据映射关系可以确定与已知的***物理地址对应的存储器物理地址。
根据一些实施例,本公开第一方面提供一种地址映射关系的确定方法,包括:对存储器发送访问指令,所述访问指令包括预设的第一地址信息,所述第一地址信息包括数据存储的***物理地址;获取第二地址信息,所述第二地址信息为所述存储器在接收到所述访问指令后根据所述第一地址信息自动解码后生成的,所述第二地址信息包括数据存储的存储器物理地址,所述存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表;根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系;根据所述映射关系,确定***访问事件对应的存储器物理地址。
根据本公开的一些实施例,在对存储器发送访问指令之前,所述方法还包括:获取所述存储器的***物理地址编码位数;根据所述***物理地址的编码位数确定要访问的所述***物理地址的预设数量N,N个所述***物理地址构成***物理地址集合,其中,N等于所述***物理地址的编码位数。
根据本公开的另一些实施例,各所述***物理地址仅有一位比特位的值为1,其余比特位的值为0;并且所述***物理地址集合中的所述***物理地址各不相同。
根据本公开的又一些实施例,对存储器发送访问指令,包括:遍历所述***物理地址集合中的每一个所述***物理地址;对每一个所述***物理地址执行至少一次所述访问指令。
根据本公开的再一些实施例,所述存储器物理地址字段为第一类型物理地址字段,所述第一类型物理地址字段包括所述通道、所述插槽、所述存储体组和所述存储体,各所述第一类型物理地址字段分别由至少一个比特位组成;根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表,包括:根据各所述第一类型物理地址字段中每一个比特位对各所述***物理地址的响应状态,构建各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表;根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系,包括:根据各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,构建各所述第一类型物理地址字段中每一个比特位与所述***物理地址之间的地址映射关系函数。
根据一些实施例,根据各所述第一类型物理地址字段中每一个比特位对各所述***物理地址的响应状态,构建各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,包括:获取所述第一类型物理地址字段中的一个比特位对所述***物理地址集合中各所述***物理地址的响应状态,所述响应状态包括第一状态和第二状态;将所述比特位为第一状态时对应的多个所述***物理地址,在地址映射表中标记为所述比特位的特征***物理地址;对所述第一类型物理地址字段中的每一个比特位执行以上步骤,直至在地址映射表中完成对各所述第一类型物理地址字段中全部比特位的特征***物理地址的标记;根据各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,构建各所述第一类型物理地址字段中每一个比特位与所述***物理地址之间的地址映射关系函数,包括:针对各所述第一类型物理地址字段中每一个比特位,将标记为所述比特位的特征***物理地址进行相加运算,得到每一个所述比特位的所述地址映射关系函数。
根据另一些实施例,所述第一状态为高电平状态、所述第二状态为低电平状态,或者,所述第一状态为低电平状态、所述第二状态为高电平状态。
根据又一些实施例,所述存储器物理地址字段还包括第二类型物理地址字段,所述第二类型物理地址字段包括所述存储体行地址和所述存储体列地址,所述存储体行地址和所述存储体列地址分别由多个比特位组成;根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表,还包括:根据各所述第二类型物理地址字段对各所述***物理地址的响应地址,构建各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表;根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系,还包括:根据各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,构建各所述第二类型物理地址字段与所述***物理地址之间的地址映射掩码。
根据再一些实施例,根据各所述第二类型物理地址字段对各所述***物理地址的响应地址,构建各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,包括:获取一个所述第二类型物理地址字段对所述***物理地址集合中各所述***物理地址的响应地址,将所述响应地址中仅有一个比特位为1时对应的所述***物理地址,在地址映射表中标记为所述第二类型物理地址字段的特征***物理地址;对每一个所述第二类型物理地址字段执行以上步骤,直至在地址映射表中完成对全部所述第二类型物理地址字段的特征***物理地址的标记;根据各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,构建各所述第二类型物理地址字段与所述***物理地址之间的地址映射掩码,包括:针对每一个所述第二类型物理地址字段,将标记为所述第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个所述第二类型物理地址字段的地址映射掩码。
根据本公开的一些实施例,所述根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:获取***访问事件中的第一***物理地址;将各所述第一类型物理地址字段中的每一个比特位对应的所述地址映射关系函数分别与所述第一***物理地址进行逐位与运算,得到每一个比特位对应的第一运算结果;获取二进制形式的所述第一运算结果中值为1的位数;若值为1的位数是奇数,确定所述第一运算结果对应的比特位的值为1,若值为1的位数是偶数,确定所述第一运算结果对应的比特位的值为0;根据每一个比特位的运算结果,得到与所述第一***物理地址对应的所述存储器物理地址中各所述第一类型物理地址字段的值。
根据本公开的另一些实施例,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:获取***访问事件中的第一***物理地址;将所述第一***物理地址与所述存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;将所述第二运算结果转换为二进制形式,将二进制形式的所述第二运算结果中值为1的比特位标记为第一目标比特位,获取所述***物理地址集合中所述第一目标比特位为1的多个第一目标***物理地址,在地址映射表中将所述多个第一目标***物理地址对应的存储器行地址的响应地址相加,获得第一***物理地址对应的存储器行地址。
根据本公开的又一些实施例,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:获取***访问事件中的第一***物理地址;将所述第一***物理地址与所述存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;获取所述存储体行地址的地址映射掩码对应的第一移位数,所述第一移位数为所述存储体行地址的地址映射掩码从最低位开始连续为0的比特位的数量;将二进制形式的所述第二运算结果右移所述第一移位数的比特位,得到所述第一***物理地址对应的存储器行地址。
根据本公开的再一些实施例,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:获取***访问事件中的第一***物理地址;将所述第一***物理地址与所述存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;将所述第三运算结果转换为二进制形式,将二进制形式的所述第三运算结果中值为1的比特位标记为第二目标比特位,获取所述***物理地址集合中所述第二目标比特位为1的多个第二目标***物理地址,在地址映射表中将所述多个第二目标***物理地址对应的存储器列地址的响应地址相加,得到所述第一***物理地址对应的初始存储器列地址。
根据一些实施例,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:获取***访问事件中的第一***物理地址;将所述第一***物理地址与所述存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;将所述第三运算结果转换为二进制形式,获取所述存储体列地址的地址映射掩码对应的第二移位数,所述第二移位数为所述存储体列地址的地址映射掩码从最低位开始连续为0的比特位的数量;将二进制形式的所述第三运算结果右移所述第二移位数的比特位,得到所述第一***物理地址对应的初始存储器列地址。
根据另一些实施例,在得到所述第一***物理地址对应的初始存储器列地址之后,还包括:获取二进制形式的所述第一***物理地址中相邻的多个第三目标比特位;将所述第一***物理地址对应的初始存储器行地址数据与所述多个第三目标比特位的数据进行拼接,得到所述第一***物理地址对应的存储器列地址。
根据一些实施例,本公开第二方面提供一种控制器,包括:访问单元,用于对存储器发送访问指令,所述访问指令包括预设的第一地址信息,所述第一地址信息包括数据存储的***物理地址;第一获取单元,用于获取第二地址信息,所述第二地址信息为所述存储器在接收到所述访问指令后根据所述第一地址信息自动解码后生成的地址信息,所述第二地址信息包括数据存储的存储器物理地址,所述存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;构建单元,根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表;第一确定单元,用于根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系;第二确定单元,用于根据所述映射关系,确定***访问事件对应的存储器的存储器物理地址。
根据一些实施例,本公开第三方面提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的方法。
根据一些实施例,本公开第四方面提供一种地址关系映射***,包括:控制器和存储器,所述控制器和所述存储器通信,所述控制器用于执行任意一种所述的方法。
在本公开实施例中,首先对存储器发送访问指令,之后获取第二地址信息,之后根据上述第一地址信息和上述第二地址信息,构建地址映射表,最后根据上述地址映射表,确定上述***物理地址和上述存储器物理地址之间的映射关系。该方案中,通过对存储器进行访问,可以获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,通过地址映射表进行推算,可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
本公开的一个或多个实施例的细节在下面的附图和描述中提出。本公开的其它特征和优点将从说明书、附图以及权利要求书变得明显。
附图说明
为了更清楚地说明本公开实施例或传统技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一些实施例中的多内存插槽的***示意图;
图2示出了根据本公开的实施例的一种地址映射关系的确定方法的流程示意图;
图3示出了本公开的获取的***物理地址编码位数的示意图;
图4示出了一些实施例中含双内存控制器、双通道和双插槽的***的逻辑组合关系示意图;
图5示出了一些实施例中一种更为具体的逻辑组合关系图;
图6和图7示出了第一类型物理地址字段的地址映射表;
图8示出了本公开的计算通道的地址映射关系函数的原理图;
图9示出了本公开的计算插槽的地址映射关系函数的原理图;
图10示出了本公开的计算存储体的单比特位的地址映射关系函数的原理图;
图11示出了本公开的第二类型物理地址字段的地址映射表;
图12示出了本公开的计算存储体行地址的地址映射掩码原理图;
图13示出了本公开的计算存储体列地址的地址映射掩码的原理图;
图14示出了本公开的计算存储器行地址的原理图;
图15示出了本公开的计算存储器列地址的原理图;
图16示出了根据本公开的实施例的一种控制器的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,在说明书以及权利要求书中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
由于现代计算机***为了增加内存容量和提高内存访问并行度,会集成多个内存控制器,如图1所示,而每个内存控制器可以集成多个内存通道,每个内存通道也可以集成多个内存插槽,也就是说,以内存模组为单位来看,内存***拓扑结构上存在3个层次:内存控制器、通道、插槽。在这种复杂的多内存插槽的***下,普通软件无法知道具体某一个内存地址的访问是对应到哪个插槽上的,这对于内存错误分析造成巨大的困扰,无法快速更换损坏的内存模组。
正如背景技术中所说的,一些实施例中通过***物理地址无法确定出对应于DRAM器件的内存颗粒中的具***置(即存储器物理地址),本公开的实施例中,提供了一种地址映射关系的确定方法、控制器、计算机可读存储介质、处理器和地址关系映射***。
根据本公开的实施例,提供了一种地址映射关系的确定方法。
图2是根据本公开实施例的地址映射关系的确定方法的流程图。如图2所示,该方法包括以下步骤:
步骤S101,对存储器发送访问指令,访问指令包括预设的第一地址信息,第一地址信息包括数据存储的***物理地址;
其中,***物理地址指的是控制存储器的控制器的地址信息;
具体地,访问指令可以是写指令或者读指令,写指令用于对存储器进行写操作的指令,读指令用于对存储器进行读操作的指令,当然,访问指令并不限于写指令或者读指令,可以为任何包括第一地址信息的指令;
步骤S102,获取第二地址信息,第二地址信息为存储器在接收到访问指令后根据第一地址信息自动解码后生成的地址信息,第二地址信息包括数据存储的存储器物理地址,存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
步骤S103,根据第二地址信息和第一地址信息的对应关系,构建地址映射表;
步骤S104,根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系;
步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址。
的方法中,首先对存储器发送访问指令,之后获取第二地址信息,之后根据第二地址信息和第一地址信息的对应关系,构建地址映射表,再根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系,再根据映射关系,确定***访问事件对应的存储器物理地址。
该方案中,通过对存储器进行访问,可以获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,根据地址映射表可以确定***物理地址和存储器物理地址之间的映射关系,进而根据映射关系在已知***物理地址的情况下确定存储器物理地址。***物理地址在***访问事件中。即可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
具体地,在实际应用中,本方案可以适用于目前主流的芯片,例如CPU芯片、SOC芯片。
在一些实施例中,在步骤S101,对存储器发送访问指令之前,方法还包括:获取存储器中的***物理地址编码位数;根据***物理地址的编码位数确定要访问的***物理地址的预设数量N,N个***物理地址构成***物理地址集合,其中,N等于***物理地址的编码位数。该实施例中,由于确定了***物理地址集合,后续就可以根据***物理地址集合中的每一个***物理地址来执行访问指令。
具体地,获取***物理地址编码位数可以由以下方式获取得到,也不限于以下的方式:
UEFI shell中的memmap命令获取;传统BIOS中通过e820中断获取;Linux***中通过dmidecode命令获取。
将得到的最高***物理地址,以二进制形式表示,最高位所在的位置编号作为***物理地址编码位数,如图3所示,最高***物理地址是0x260BFFFFF,则***物理地址编码位数是34。
在一些实施例中,***物理地址仅有一个比特位的值为1,其余比特位的值为0;并且***物理地址集合中的***物理地址各不相同。这样可以简化***物理地址和存储器物理地址之间的映射关系的获取步骤。例如:***物理地址表示为0x08000000、0x04000000、0x02000000。
在一些实施例中,步骤S101,对存储器发送访问指令,可以采用如下步骤实现:步骤S1011:遍历***物理地址集合中的每一个***物理地址;步骤S1012:对每一个***物理地址执行至少一次访问指令;该实施例中,通过遍历***物理地址集合中的每一个***物理地址,可以获取每一个***物理地址对应的存储器物理地址,即不会遗漏***物理地址集合中的***物理地址,进而构建准确的地址映射表。
具体地,在计算机***中,即使在空闲的时候,DRAM界面上也有很多内存读写的访问,从统计上看,更多的是“内存读”操作,而“内存写”的访问很少发生或者根本没有。所以,进行“内存写”操作更容易被观测仪器触发,不容易受到***其它应用的干扰,从而能够观测到准确的存储器物理地址的响应。
其中,内存写操作可以在以下环境中实现或者通过访问一些接口实现,当然并不限于以下的几种:
环境:UEFI应用程序;接口:USB DBC调试接口;接口:Intel DCI调试接口;
通过的三种方式可以实现对***物理地址的写操作,的第二种方法和第三种方法在执行“内存写”操作之前,先暂停CPU(例如发送halt命令),可以减少***中其他模型或者其他应用程序对内存的访问。“内存写”的操作流程为:执行往特定***物理地址写任意一个数据的指令,之后再对这个特定***物理地址所在的缓存行(cache line)进行清空(flush)操作,以确保写的数据能真正被写到DRAM内存而不是仅仅停留在***缓存(cache)里面。
在一些实施方式中,一个34位的***物理地址,以二进制形式表示遍历的顺序:
第1次访问:0000-0000-0000-0000-0000-0000-0000-0000-0001;
第2次访问:0000-0000-0000-0000-0000-0000-0000-0000-0010;
第3次访问:0000-0000-0000-0000-0000-0000-0000-0000-0100;
第4次访问:0000-0000-0000-0000-0000-0000-0000-0000-1000;
第5次访问:0000-0000-0000-0000-0000-0000-0000-0001-0000;
第6次访问:0000-0000-0000-0000-0000-0000-0000-0010-0000;
第7次访问:0000-0000-0000-0000-0000-0000-0000-0100-0000;
…
第34次访问:0010-0000-0000-0000-0000-0000-0000-0000-0000。
在一些实施方式中,存储器物理地址字段包括第一类型物理地址字段,第一类型物理地址字段包括通道、插槽、存储体组和存储体,各第一类型物理地址字段分别由至少一个比特位组成;步骤S103,根据第二地址信息和第一地址信息的对应关系,构建地址映射表,可以实现为步骤S1031:根据各第一类型物理地址字段中每一个比特位对各***物理地址的响应状态,构建各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表;步骤S104,根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系,可以实现为步骤S1041:根据各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,构建各第一类型物理地址字段中每一个比特位与***物理地址之间的地址映射关系函数。该实施例中,由于对应于相同的***物理地址,第一类型物理地址字段中的不同比特位的响应是不同的,所以,在存储器物理地址字段为第一类型物理地址字段的情况下,构建各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,构建各第一类型物理地址字段中每一个比特位与***物理地址之间的地址映射关系函数,以实现第一类型物理地址字段的地址映射关系函数的精确确定。
在一些实施方式中,选取***物理地址中某些位做“逻辑异或”的组合逻辑,把“逻辑异或”的结果当做存储器物理地址的选择信号。图4中的MC表示内存控制器选择信号、CH表示通道选择信号、Slot表示插槽选择信号,选择信号以二进制形式标识,1根选择信号可以表示2个状态,2根信号可以表示4个状态,例如2个内存控制器,只需要采用1个内存控制器选择信号表示,即图4示出了一个含双内存控制器、双通道和双插槽的***的逻辑组合关系。图5中的Ch表示通道选择信号、BG0和BG1表示存储体组选择信号、BA0和BA1表示存储体选择信号、Rank表示存储排选择信号。但是,不同产品上的内存控制器中的组合逻辑方式,甚至同一款产品的内存控制器中的组合逻辑方式都可能是不同的,而且不同的内存型号,内存容量都可能会有不同的组合逻辑。
在一些实施方式中,第一类型物理地址字段为通道和插槽时,对应的地址映射表如图6所示,一个单内存控制,具有双通道(分别为通道1和通道2),每一个通道中具有双插槽(通道1中具有插槽1和插槽2,通道2中具有插槽1和插槽2),插了4根8GBX8规格的DDR4的内存模组(内存条)。进行了一次***物理地址遍历后,得到图6中所示的地址映射表,字母V表示访问对应的***物理地址时,对应的插槽被激活(即响应状态为第一状态),例如,访问***物理地址0x000000001时,通道2中的插槽2被激活,访问***物理地址0x000000100时,通道1中的插槽2被激活。
在一些实施方式中,第一类型物理地址字段为存储体组和存储体时,对应的地址映射表如图7所示,存储体组包括第一存储体组位BG[1]和第二存储体组位BG[0],存储体包括第一存储***BA[1]和第二存储***BA[0]。进行了一次***物理地址遍历后,得到图7中所示的地址映射表,字母V表示访问对应的***物理地址时,对应的比特位被激活(即响应状态为第一状态),例如,访问***物理地址0x004000000时,第一存储体组位BG[1]被激活。
当然,存储体组和存储体并不限于图7中的形式,存储体组是和存储器有关的,还可以有其他的存储***,存储体并不限于以上的几种,存储体是和存储体器有关的,还可以有其他的存储位。
在一些实施例中,步骤S1031:根据各第一类型物理地址字段中每一个比特位对各***物理地址的响应状态,构建各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,可以通过以下方式实现:获取第一类型物理地址字段中的一个比特位对***物理地址集合中各***物理地址的响应状态,响应状态包括第一状态和第二状态;将比特位为第一状态时对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址;对第一类型物理地址字段中的每一个比特位执行以上步骤,直至在地址映射表中完成对各第一类型物理地址字段中全部比特位的特征***物理地址的标记;步骤S1041,根据各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,构建各第一类型物理地址字段中每一个比特位与***物理地址之间的地址映射关系函数,可以通过以下方式实现:针对各第一类型物理地址字段中每一个比特位,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。对于每一个第一类型物理地址字段中每一个比特位,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。经过状态的区分,实现对地址映射关系函数的精确确定。
如图8所示,V表示响应状态为第一状态,通道1比特位为第一状态时对应的***物理地址有0x000080000,0x000040000,0x000002000,0x 000001000,0x 000000200,0x000000100,将这六个***物理地址标记为特征***物理地址,将特征***物理地址进行相加运算,得到通道1的地址映射关系函数是:0xC3300。在二选一的情况下,只要计算响应状态为第一状态较少的通道信号即可。
如图9所示,采用如计算图8一样的方式,得到通道2中的插槽1的特征***物理地址为0x000400000和0x000040000。将这两个***物理地址相加,得到插槽选择信号的地址映射关系函数是:0x000440000。在二选一的情况下,只要计算响应状态为第一状态较少的插槽信号即可。
具体地,***上插一根DDR4 X8规格的内存条,就有BG[1]、BG[0]、BA[1]和BA[0]对应的4个地址映射关系函数,如图10所示,存储器物理地址信号BA[0]在整个***物理地址遍历过程中有四个特征***物理地址,分别是0x010000000、0x004000000、0x000040000、0x000008000,那么BA[0]对应的地址映射关系函数为0x014048000(0x010000000+0x004000000+0x000040000+0x000008000),同理,BA[1]的地址映射关系函数为0x080490000。
在一些实施例中,第一状态为高电平状态、第二状态为低电平状态,或者,第一状态为低电平状态、第二状态为高电平状态。在第一状态为高电平状态的情况下,将高电平状态对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数;在第一状态为低电平状态的情况下,将低电平状态对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。
在一些实施例中,存储器物理地址字段还包括第二类型物理地址字段,第二类型物理地址字段包括存储体行地址和存储体列地址,存储体行地址和存储体列地址分别由多个比特位组成;步骤S103,根据第二地址信息和第一地址信息的对应关系,构建地址映射表,可以实现为步骤S1032:根据各第二类型物理地址字段对各***物理地址的响应地址,构建各第二类型物理地址字段与各***物理地址之间的地址映射表;步骤S104,根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系,可以实现为步骤S1042:根据各第二类型物理地址字段与各***物理地址之间的地址映射表,构建各第二类型物理地址字段与***物理地址之间的地址映射掩码。即根据第二类型物理地址字段的响应特性发现,第二类型物理地址字段作为一个整体相对应***物理地址仅有一个响应地址,所以构建第二类型物理地址字段作为一个整体,与***物理地址之间的地址映射掩码。该实施例中,还可以更高效准确地计算储体行地址和存储体列地址分别与***物理地址之间的地址映射掩码。
在一些实施例中,步骤S1032,根据各第二类型物理地址字段对各***物理地址的响应地址,构建各第二类型物理地址字段与各***物理地址之间的地址映射表,具有如下实现方式:获取一个第二类型物理地址字段对***物理地址集合中各***物理地址的响应地址,将响应地址中仅有一个比特位为1时对应的***物理地址,在地址映射表中标记为第二类型物理地址字段的特征***物理地址;对每一个第二类型物理地址字段执行以上步骤,直至在地址映射表中完成对全部第二类型物理地址字段的特征***物理地址的标记;步骤S1042,根据各第二类型物理地址字段与各***物理地址之间的地址映射表,构建各第二类型物理地址字段与***物理地址之间的地址映射掩码,具有如下实现方式:针对每一个第二类型物理地址字段,将标记为第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个第二类型物理地址字段的地址映射掩码。对于每一个第二类型物理地址字段,将标记为第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个第二类型物理地址字段的地址映射掩码。
如图11所示,示出了存储体行地址Row和存储体列地址Col的地址映射表。
如图12所示,针对存储体行地址Row仅有一个比特位为1的二进制的响应地址对应的十六进制表示为0x8000、0x4000、0x2000、…0x0002、0x0001,对应的***物理地址分别是0x10000000、0x080000000、0x040000000、…0x000040000、0x000020000,即将0x10000000、0x080000000、0x040000000、…0x000040000、0x000020000标记为存储体行地址的特征***物理地址,将存储体行地址的特征***物理地址相加得到存储体行地址的地址映射掩码为0x1FFFE0000(0x100000000+0x080000000+0x080000000+…+0x000020000);同理,如图13所示,针对存储体列地址Col,仅有一个比特位为1的二进制的响应地址对应的十六进制表示为0x200、0x100、0x080、…0x010、0x008,对应的***物理地址分别是0x000002000、0x000001000、0x000000800、…0x000000100、0x000000080,将0x000002000、0x000001000、0x000000800、…0x000000100、0x000000080标记为存储体列地址的特征***物理地址,将存储体类地址的特征***物理地址相加得到存储体列地址的地址映射掩码为0x000003F80(0x000002000+0x000001000+0x000000800+…+0x000000080)。
在一些实施例中,步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址,具有如下实现方式:获取***访问事件中的第一***物理地址;将各第一类型物理地址字段中的每一个比特位对应的地址映射关系函数分别与第一***物理地址进行逐位与运算,得到每一个比特位对应的第一运算结果;获取二进制形式的第一运算结果中值为1的位数;若值为1的位数是奇数,确定第一运算结果对应的比特位的值为1,若值为1的位数是偶数,确定第一运算结果对应的比特位的值为0;根据每一个比特位的运算结果,得到与第一***物理地址对应的存储器物理地址中各第一类型物理地址字段的值。该实施例中,在得到了地址映射关系函数后,还可以将各第一类型物理地址字段中的每一个比特位对应的地址映射关系函数与第一***物理地址进行逻辑与运算,根据二进制形式的第一运算结果中1的个数确定存储器物理地址中的每一个比特位的值,进而确定存储器物理地址。例如,存储器物理地址两位,高位的值为1,低位的值为0,则存储器物理地址为10。
在一些实施方式中,计算内存控制器的通道和插槽的地址,方式如下:将第一***物理地址和某个映射关系函数做逻辑与运算,统计二进制形式下的计算结果中1的个数,如果1的个数是奇数,则该***物理地址对应的比特位的值为1,如果1的个数是偶数,则该***物理地址对应的比特位的值为0,循环执行,直到遍历完所有的内存控制、通道和插槽,如果在一个单内存控制器、双通道、双插槽的***中,通道的映射关系函数是0xC3300,插槽的映射关系函数是0x440000,第一***物理地址是0x479AC7139,分别将***物理地址与通道的映射关系函数、插槽的映射关系函数做逻辑与运算,得到的结果分别是0xC3100和0x40000,这两个计算结果中分别有奇数个1,因此***物理地址0x479AC7139对应的通道比特位的值为1,***物理地址0x479AC7139对应的插槽的比特位的值为1,将通道的所有的比特位的值计算得到即得到通道的存储器物理地址,将插槽的所有的比特位的值计算得到即得到插槽的存储器物理地址。
在一些实施方式中,第一***物理地址为0x479AC7139,存储***BA[0]的地址映射关系函数是0x014048000,做逻辑与运算后变成了0x10040000,二进制形式是0001 00000000 0100 0000 0000 0000 0000,有偶数个1,所以存储***BA[0]的值为0;存储***BA[1]的地址映射关系函数是0x080490000,做逻辑与运算后变成了0x00080000,二进制形式是0000 0000 0000 1000 0000 0000 0000 0000,有奇数个1,即存储***BA[1]的值为1,因此,存储体地址是0x02(BA[1:0]=10b)。
在一些实施例中,步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址,具有如下实现方式:获取***访问事件中的第一***物理地址;将第一***物理地址与存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;将第二运算结果转换为二进制形式,将二进制形式的第二运算结果中值为1的比特位标记为第一目标比特位,获取***物理地址集合中第一目标比特位为1的多个第一目标***物理地址,在地址映射表中将多个第一目标***物理地址对应的存储器行地址的响应地址相加,获得第一***物理地址对应的存储器行地址。本实施例在获取地址映射掩码之后,用逻辑与运算,二进制化,确定第一目标比特位,确定物理地址集合中第一目标比特位为1的多个第一目标***物理地址等处理实现了在已知***物理地址的情况下对存储器行地址的精确确定。
具体地,如图14所示,第一***物理地址是0x12345678,存储体行地址的地址映射掩码是0x1FFFE0000,进行逻辑与运算后的第二运算结果是0x12340000,二进制形式是00010010 0011 0100 0000 0000 0000 0000,0001 0000 0000 0000 0000 0000 0000 0000与***物理地址0x010000000对应,0000 0010 0000 0000 0000 0000 0000 0000与***物理地址0x002000000对应,0000 0000 0011 0000 0000 0000 0000 0000与***物理地址0x000200000和0x000100000 对应,0000 0000 0000 0100 0000 0000 0000 0000与***物理地址0x000040000对应,存储器行地址为0x0800+0x0100+0x0010+0x0008+0x0002=0x091A。
在一些实施例中,步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址,具有如下实现方式:获取***访问事件中的第一***物理地址;将第一***物理地址与存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;获取存储体行地址的地址映射掩码对应的第一移位数,第一移位数为存储体行地址的地址映射掩码从最低位开始连续为0的比特位的数量;将二进制形式的第二运算结果右移第一移位数的比特位,得到第一***物理地址对应的存储器行地址。该实施例中,通过将第二运算结果进行右移,可以去除掉无效的信号,进而精准确定存储器行地址。
具体地,第一***物理地址是0x12345678,存储体行地址的地址映射掩码是0x1FFFE0000,以二进制形式表示的存储体行地址的地址映射掩码中,有17个连续的0,将0x12340000右移17位,得到存储器行地址是0x091A。
在一些实施例中,步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址,包括如下步骤:获取***访问事件中的第一***物理地址;将第一***物理地址与存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;将第三运算结果转换为二进制形式,将二进制形式的第三运算结果中值为1的比特位标记为第二目标比特位,获取***物理地址集合中第二目标比特位为1的多个第二目标***物理地址,在地址映射表中将多个第二目标***物理地址对应的存储器列地址的响应地址相加,得到第一***物理地址对应的初始存储器列地址。本实施例在获取地址映射掩码之后,通过逻辑与运算,二进制化,确定第二目标比特位,以及确定第二目标比特位为1的多个第二目标***物理地址,实现了对初始存储器列地址的精确确定。
具体地,如图15所示,第一***物理地址是0x12345678,存储体列地址的地址映射掩码是0x000003F80,进行逻辑与运算后的第三运算结果是0x1600,二进制形式是00010110 0000 0000,对应的第二目标***物理地址分别为0x000001000、0x000000400和0x000000200,初始存储器列地址是0x100+0x040+0x020=0x160。
在一些实施例中,步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址,包括如下步骤:获取***访问事件中的第一***物理地址;将第一***物理地址与存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;将第三运算结果转换为二进制形式,获取存储体列地址的地址映射掩码对应的第二移位数,第二移位数为存储体列地址的地址映射掩码从最低位开始连续为0的比特位的数量;将二进制形式的第三运算结果右移第二移位数的比特位,得到第一***物理地址对应的初始存储器列地址。该实施例中,通过将转换为二进制形式的第三运算结果进行右移,进而精准确定初始存储器列地址。
具体地,在二进制形式的地址映射掩码中,有7个连续的0,将0x1600右移4(7-3,其中,预设数值为3)位,得到初始存储器列地址0x160。
在一些实施例中,在得到第一***物理地址对应的初始存储器列地址之后,还包括:获取二进制形式的第一***物理地址中相邻的多个第三目标比特位;将第一***物理地址对应的初始存储器行地址数据与多个第三目标比特位的数据进行拼接,得到第一***物理地址对应的存储器列地址。该实施例中,在之前计算得到的初始存储器列地址基础上,经过与第一***物理地址中相邻的多个比特位拼接得到更为精准的存储器列地址。
具体地,***物理地址0x12345678以二进制形式表示后的第[5:3]比特位是111(十六进制是7),与0x160进行相加,得到最终存储器列地址0x167。
本公开实施例还提供了一种控制器,需要说明的是,本公开实施例的控制器可以用于执行本公开实施例所提供的用于地址映射关系的确定方法。以下对本公开实施例提供的控制器进行介绍。
图16是根据本公开实施例的控制器的示意图。如图16所示,该控制器包括:
访问单元10,用于对存储器发送访问指令,访问指令包括预设的第一地址信息,第一地址信息包括数据存储的***物理地址;
具体地,访问指令可以是写指令或者读指令,写指令用于对存储器进行写操作的指令,读指令用于对存储器进行读操作的指令,当然,访问指令并不限于写指令或者读指令,可以为任何包括第一地址信息的指令。
第一获取单元20,用于获取第二地址信息,第二地址信息为存储器在接收到访问指令后根据第一地址信息自动解码后生成的地址信息,第二地址信息包括数据存储的存储器物理地址,存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
构建单元30,根据第二地址信息和第一地址信息的对应关系,构建地址映射表;
第一确定单元40,用于根据地址映射表,确定存储器物理地址和***物理地址之间的映射关系;
第二确定单元50,用于根据映射关系,确定***访问事件对应的存储器物理地址。
的控制器中,访问单元对存储器进行访问,第一获取单元获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,第一确定单元根据地址映射表可以确定***物理地址和存储器物理地址之间的映射关系,第二确定单元根据映射关系在已知***物理地址的情况下确定存储器物理地址。***物理地址在***访问事件中。即可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
具体地,在实际应用中,本方案可以适用于目前主流的芯片,例如CPU芯片和SOC芯片。
在一些实施例中,控制器还包括第二获取单元和第三确定单元,第二获取单元用于获取存储器中的***物理地址编码位数;第三确定单元用于根据***物理地址的编码位数确定要访问的***物理地址的预设数量N,N个***物理地址构成***物理地址集合,其中,N等于***物理地址的编码位数。该实施例中,由于确定了***物理地址集合,后续就可以根据***物理地址集合中的每一个***物理地址来执行访问指令。
在一些实施例中,各***物理地址中仅有一位比特位的值为1,其余比特位的值为0,并且***物理地址集合中的***物理地址各不相同。这样可以简化***物理地址和存储器物理地址之间的映射关系的获取步骤。例如:***物理地址表示为0x08000000、0x04000000、0x02000000。
在一些实施例中,访问单元包括遍历模块和访问模块,遍历模块用于遍历***物理地址集合中的每一个***物理地址;访问模块用于对每一个***物理地址执行至少一次访问指令;该实施例中,该实施例中,通过遍历***物理地址集合中的每一个***物理地址,可以获取每一个***物理地址对应的存储器物理地址,即不会遗漏***物理地址集合中的***物理地址,进而构建准确的地址映射表。
具体地,在计算机***中,即使在空闲的时候,DRAM界面上也有很多内存读写的访问,从统计上看,更多的是“内存读”操作,而“内存写”的访问很少发生或者根本没有。所以,进行“内存写”操作更容易被观测仪器触发,不容易受到***其它应用的干扰,从而能够观测到准确的存储器物理地址的响应。
在一些实施例中,存储器物理地址字段包括第一类型物理地址字段,第一类型物理地址字段包括通道、插槽、存储体组和存储体,各第一类型物理地址字段分别由至少一个比特位组成;构建单元还用于根据各第一类型物理地址字段中每一个比特位对各***物理地址的响应状态,构建各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表;第一确定单元还用于根据各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,构建各第一类型物理地址字段中每一个比特位与***物理地址之间的地址映射关系函数。该实施例中,由于对应于相同的***物理地址,第一类型物理地址字段中的不同比特位的响应是不同的,所以,在存储器物理地址字段为第一类型物理地址字段的情况下,构建各第一类型物理地址字段中每一个比特位与各***物理地址之间的地址映射表,构建各第一类型物理地址字段中每一个比特位与***物理地址之间的地址映射关系函数,以实现第一类型物理地址字段的地址映射关系函数的精确确定。
在一些实施例中,构建单元包括第一获取模块、标记模块和第一执行模块,第一获取模块用于获取第一类型物理地址字段中的一个比特位对***物理地址集合中各***物理地址的响应状态,响应状态包括第一状态和第二状态;标记模块用于将比特位为第一状态时对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址;第一执行模块用于对第一类型物理地址字段中的每一个比特位执行以上步骤,直至在地址映射表中完成对各第一类型物理地址字段中全部比特位的特征***物理地址的标记;第一确定单元包括第一运算模块,第一运算模块用于针对各第一类型物理地址字段中每一个比特位,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。对于每一个第一类型物理地址字段中每一个比特位,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。经过状态的区分,实现对地址映射关系函数的精确确定。
在一些实施例中,第一状态为高电平状态、第二状态为低电平状态,或者,第一状态为低电平状态、第二状态为高电平状态。在第一状态为高电平状态的情况下,将高电平状态对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数;在第一状态为低电平状态的情况下,将低电平状态对应的多个***物理地址,在地址映射表中标记为比特位的特征***物理地址,将标记为比特位的特征***物理地址进行相加运算,得到每一个比特位的地址映射关系函数。
在一些实施例中,存储器物理地址字段还包括第二类型物理地址字段,第二类型物理地址字段包括存储体行地址和存储体列地址,存储体行地址和存储体列地址分别由多个比特位组成;构建单元还用于根据各第二类型物理地址字段对各***物理地址的响应地址,构建各第二类型物理地址字段与各***物理地址之间的地址映射表;第一确定单元还用于根据各第二类型物理地址字段与各***物理地址之间的地址映射表,构建各第二类型物理地址字段与***物理地址之间的地址映射掩码。即根据第二类型物理地址字段的响应特性发现,第二类型物理地址字段作为一个整体相对应***物理地址仅有一个响应地址,所以构建第二类型物理地址字段作为一个整体,与***物理地址之间的地址映射掩码。该实施例中,还可以更高效准确地计算储体行地址和存储体列地址分别与***物理地址之间的地址映射掩码。
在一些实施例中,构建单元包括第二获取模块和第二执行模块,第二获取模块用于获取一个第二类型物理地址字段对***物理地址集合中各***物理地址的响应地址,将响应地址中仅有一个比特位为1时对应的***物理地址,在地址映射表中标记为第二类型物理地址字段的特征***物理地址;第二执行模块用于对每一个第二类型物理地址字段执行以上步骤,直至在地址映射表中完成对全部第二类型物理地址字段的特征***物理地址的标记;第一确定单元还用于针对每一个第二类型物理地址字段,将标记为第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个第二类型物理地址字段的地址映射掩码。对于每一个第二类型物理地址字段,将标记为第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个第二类型物理地址字段的地址映射掩码。
在一些实施例中,第二确定单元包括第三获取模块、第二运算模块、第四获取模块、确定模块和处理模块,第三获取模块用于获取***访问事件中的第一***物理地址;第二运算模块用于将各第一类型物理地址字段中的每一个比特位对应的地址映射关系函数分别与第一***物理地址进行逐位与运算,得到每一个比特位对应的第一运算结果;第四获取模块用于获取二进制形式的第一运算结果中值为1的位数;确定模块用于若值为1的位数是奇数,确定第一运算结果对应的比特位的值为1,若值为1的位数是偶数,确定第一运算结果对应的比特位的值为0;处理模块用于根据每一个比特位的运算结果,得到与第一***物理地址对应的存储器物理地址中各第一类型物理地址字段的值。该实施例中,在得到了地址映射关系函数后,还可以将各第一类型物理地址字段中的每一个比特位对应的地址映射关系函数与第一***物理地址进行逻辑与运算,根据二进制形式的第一运算结果中1的个数确定存储器物理地址中的每一个比特位的值,进而确定存储器物理地址。例如,存储器物理地址两位,高位的值为1,低位的值为0,则存储器物理地址为10。
在一些实施例中,第二确定单元包括第五获取模块、第三运算模块和第一处理模块,第五获取模块用于获取***访问事件中的第一***物理地址;第三运算模块用于将第一***物理地址与存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;第一处理模块用于将第二运算结果转换为二进制形式,将二进制形式的第二运算结果中值为1的比特位标记为第一目标比特位,获取***物理地址集合中第一目标比特位为1的多个第一目标***物理地址,在地址映射表中将多个第一目标***物理地址对应的存储器行地址的响应地址相加,获得第一***物理地址对应的存储器行地址。本实施例在获取地址映射掩码之后,用逻辑与运算,二进制化,确定第一目标比特位,确定物理地址集合中第一目标比特位为1的多个第一目标***物理地址等处理实现了在已知***物理地址的情况下对存储器行地址的精确确定。
在一些实施例中,第二确定单元包括第六获取模块、第四运算模块、第七获取模块和第二处理模块,第六获取模块用于获取***访问事件中的第一***物理地址;第四运算模块用于将第一***物理地址与存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;第七获取模块用于获取存储体行地址的地址映射掩码对应的第一移位数,第一移位数为存储体行地址的地址映射掩码从最低位开始连续为0的比特位的数量;第二处理模块用于将二进制形式的第二运算结果右移第一移位数的比特位,得到第一***物理地址对应的存储器行地址。该实施例中,通过将第二运算结果进行右移,可以去除掉无效的信号,进而精准确定存储器行地址。
在一些实施例中,第二确定单元包括第八获取模块、第五运算模块和第三处理模块,第八获取模块用于获取***访问事件中的第一***物理地址;第五运算模块用于将第一***物理地址与存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;第三处理模块用于将第三运算结果转换为二进制形式,将二进制形式的第三运算结果中值为1的比特位标记为第二目标比特位,获取***物理地址集合中第二目标比特位为1的多个第二目标***物理地址,在地址映射表中将多个第二目标***物理地址对应的存储器列地址的响应地址相加,得到第一***物理地址对应的初始存储器列地址。本实施例在获取地址映射掩码之后,通过逻辑与运算,二进制化,确定第二目标比特位,以及确定第二目标比特位为1的多个第二目标***物理地址,实现了对初始存储器列地址的精确确定。
在一些实施例中,第二确定单元包括第九获取模块、第六运算模块、第三处理模块和第四处理模块,第九获取模块用于获取***访问事件中的第一***物理地址;第六运算模块用于将第一***物理地址与存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;第三处理模块用于将第三运算结果转换为二进制形式,获取存储体列地址的地址映射掩码对应的第二移位数,第二移位数为存储体列地址的地址映射掩码从最低位开始连续为0的比特位的数量;第四处理模块用于将二进制形式的第三运算结果右移第二移位数的比特位,得到第一***物理地址对应的初始存储器列地址。该实施例中,通过将转换为二进制形式的第三运算结果进行右移,进而精准确定初始存储器列地址。
在一些实施例中,控制器还包括第三获取单元和拼接单元,第三获取单元用于在得到第一***物理地址对应的初始存储器列地址之后,获取二进制形式的第一***物理地址中相邻的多个第三目标比特位;拼接单元用于将第一***物理地址对应的初始存储器行地址数据与多个第三目标比特位的数据进行拼接,得到第一***物理地址对应的存储器列地址。该实施例中,在之前计算得到的初始存储器列地址基础上,经过与第一***物理地址中相邻的多个比特位拼接得到更为精准的存储器列地址。
控制器包括处理器和存储器,访问单元、第一获取单元、构建单元、第一确定单元和第二确定单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来通过***物理地址可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本公开实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现地址映射关系的确定方法。
本公开实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行地址映射关系的确定方法。
本公开还提供了一种地址关系映射***,包括控制器和存储器,控制器和存储器通信,控制器用于执行任意一种的方法。
的***中,由于包括任一种的方法,该方法中首先对存储器发送访问指令,之后获取第二地址信息,之后根据第一地址信息和第二地址信息,构建地址映射表,最后根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系。该方案中,通过对存储器进行访问,可以获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,通过地址映射表进行推算,可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
本公开实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,对存储器发送访问指令,访问指令包括预设的第一地址信息,第一地址信息包括数据存储的***物理地址;
步骤S102,获取第二地址信息,第二地址信息为存储器在接收到访问指令后根据第一地址信息自动解码后生成的地址信息,第二地址信息包括数据存储的存储器物理地址,存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
步骤S103,根据第二地址信息和第一地址信息的对应关系,构建地址映射表;
步骤S104,根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系;
步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址。
本文中的设备可以是服务器、PC、PAD、手机等。
本公开还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,对存储器发送访问指令,访问指令包括预设的第一地址信息,第一地址信息包括数据存储的***物理地址;
步骤S102,获取第二地址信息,第二地址信息为存储器在接收到访问指令后根据第一地址信息自动解码后生成的地址信息,第二地址信息包括数据存储的存储器物理地址,存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
步骤S103,根据第二地址信息和第一地址信息的对应关系,构建地址映射表;
步骤S104,根据地址映射表,确定***物理地址和存储器物理地址之间的映射关系;
步骤S105,根据映射关系,确定***访问事件对应的存储器物理地址。
在本公开的实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本公开的实施例实现了如下技术效果:
1)、本公开的地址映射关系的确定方法,通过对存储器进行访问,可以获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,根据地址映射表可以确定***物理地址和存储器物理地址之间的映射关系,进而根据映射关系在已知***物理地址的情况下确定存储器物理地址。***物理地址在***访问事件中。即可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
2)、本公开的地址映射关系的确定方法,访问单元对存储器进行访问,第一获取单元获取每次访问***物理地址时响应的存储器物理地址,再构建地址映射表,第一确定单元根据地址映射表可以确定***物理地址和存储器物理地址之间的映射关系,第二确定单元根据映射关系在已知***物理地址的情况下确定存储器物理地址。***物理地址在***访问事件中。即可以确定***物理地址对应于DRAM器件的内存颗粒中的存储器物理地址。并且,本方案可以实现用最少的访问次数确定***物理地址对应于DRAM器件的内存颗粒中的物理地址,提高了解析速度。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (18)
1.一种地址映射关系的确定方法,其特征在于,包括:
对存储器发送访问指令,所述访问指令包括预设的第一地址信息,所述第一地址信息包括数据存储的***物理地址;
获取第二地址信息,所述第二地址信息为所述存储器在接收到所述访问指令后根据所述第一地址信息自动解码后生成的地址信息,所述第二地址信息包括数据存储的存储器物理地址,所述存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表;
根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系;
根据所述映射关系,确定***访问事件对应的存储器物理地址。
2.根据权利要求1所述的方法,其特征在于,在对存储器发送访问指令之前,所述方法还包括:
获取所述***物理地址的编码位数;
根据所述***物理地址的编码位数确定要访问的所述***物理地址的预设数量N,N个所述***物理地址构成***物理地址集合,其中,N等于所述***物理地址的编码位数。
3.根据权利要求2所述的方法,其特征在于,
所述***物理地址仅有一个比特位的值为1,其余比特位的值为0;并且所述***物理地址集合中的所述***物理地址各不相同。
4.根据权利要求2所述的方法,其特征在于,对存储器发送访问指令,包括:
遍历所述***物理地址集合中的每一个所述***物理地址;
对每一个所述***物理地址执行至少一次所述访问指令。
5.根据权利要求2所述的方法,其特征在于,
所述存储器物理地址字段包括第一类型物理地址字段,所述第一类型物理地址字段包括所述通道、所述插槽、所述存储体组和所述存储体,各所述第一类型物理地址字段分别由至少一个比特位组成;
根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表,包括:
根据各所述第一类型物理地址字段中每一个比特位对各所述***物理地址的响应状态,构建各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表;
根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系,包括:
根据各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,构建各所述第一类型物理地址字段中每一个比特位与所述***物理地址之间的地址映射关系函数。
6.根据权利要求5所述的方法,其特征在于,
根据各所述第一类型物理地址字段中每一个比特位对各所述***物理地址的响应状态,构建各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,包括:
获取所述第一类型物理地址字段中的一个比特位对所述***物理地址集合中各所述***物理地址的响应状态,所述响应状态包括第一状态和第二状态;将所述比特位为第一状态时对应的多个所述***物理地址,在地址映射表中标记为所述比特位的特征***物理地址;对所述第一类型物理地址字段中的每一个比特位执行以上步骤,直至在地址映射表中完成对各所述第一类型物理地址字段中全部比特位的特征***物理地址的标记;
根据各所述第一类型物理地址字段中每一个比特位与各所述***物理地址之间的地址映射表,构建各所述第一类型物理地址字段中每一个比特位与所述***物理地址之间的地址映射关系函数,包括:
针对各所述第一类型物理地址字段中每一个比特位,将标记为所述比特位的特征***物理地址进行相加运算,得到每一个所述比特位的所述地址映射关系函数。
7.根据权利要求6所述的方法,其特征在于,所述第一状态为高电平状态、所述第二状态为低电平状态,或者,所述第一状态为低电平状态、所述第二状态为高电平状态。
8.根据权利要求7所述的方法,其特征在于,
所述存储器物理地址字段还包括第二类型物理地址字段,所述第二类型物理地址字段包括所述存储体行地址和所述存储体列地址,所述存储体行地址和所述存储体列地址分别由多个比特位组成;
根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表,还包括:
根据各所述第二类型物理地址字段对各所述***物理地址的响应地址,构建各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表;
根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系,还包括:
根据各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,构建各所述第二类型物理地址字段与所述***物理地址之间的地址映射掩码。
9.根据权利要求8所述的方法,其特征在于,
根据各所述第二类型物理地址字段对各所述***物理地址的响应地址,构建各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,包括:
获取一个所述第二类型物理地址字段对所述***物理地址集合中各所述***物理地址的响应地址,将所述响应地址中仅有一个比特位为1时对应的所述***物理地址,在地址映射表中标记为所述第二类型物理地址字段的特征***物理地址;对每一个所述第二类型物理地址字段执行以上步骤,直至在地址映射表中完成对全部所述第二类型物理地址字段的特征***物理地址的标记;
根据各所述第二类型物理地址字段与各所述***物理地址之间的地址映射表,构建各所述第二类型物理地址字段与所述***物理地址之间的地址映射掩码,包括:
针对每一个所述第二类型物理地址字段,将标记为所述第二类型物理地址字段的特征***物理地址进行相加运算,得到每一个所述第二类型物理地址字段的地址映射掩码。
10.根据权利要求9所述的方法,其特征在于,所述根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:
获取***访问事件中的第一***物理地址;
将各所述第一类型物理地址字段中的每一个比特位对应的所述地址映射关系函数分别与所述第一***物理地址进行逐位与运算,得到每一个比特位对应的第一运算结果;
获取二进制形式的所述第一运算结果中值为1的位数;
若值为1的位数是奇数,确定所述第一运算结果对应的比特位的值为1,若值为1的位数是偶数,确定所述第一运算结果对应的比特位的值为0;
根据每一个比特位的运算结果,得到与所述第一***物理地址对应的所述存储器物理地址中各所述第一类型物理地址字段的值。
11.根据权利要求9所述的方法,其特征在于,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:
获取***访问事件中的第一***物理地址;
将所述第一***物理地址与所述存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;
将所述第二运算结果转换为二进制形式,将二进制形式的所述第二运算结果中值为1的比特位标记为第一目标比特位,获取所述***物理地址集合中所述第一目标比特位为1的多个第一目标***物理地址,在地址映射表中将所述多个第一目标***物理地址对应的存储器行地址的响应地址相加,获得第一***物理地址对应的存储器行地址。
12.根据权利要求9所述的方法,其特征在于,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:
获取***访问事件中的第一***物理地址;
将所述第一***物理地址与所述存储体行地址的地址映射掩码进行逻辑与运算,得到第二运算结果;
获取所述存储体行地址的地址映射掩码对应的第一移位数,所述第一移位数为所述存储体行地址的地址映射掩码从最低位开始连续为0的比特位的数量;
将二进制形式的所述第二运算结果右移所述第一移位数的比特位,得到所述第一***物理地址对应的存储器行地址。
13.根据权利要求9所述的方法,其特征在于,根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:
获取***访问事件中的第一***物理地址;
将所述第一***物理地址与所述存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;
将所述第三运算结果转换为二进制形式,将二进制形式的所述第三运算结果中值为1的比特位标记为第二目标比特位,获取所述***物理地址集合中所述第二目标比特位为1的多个第二目标***物理地址,在地址映射表中将所述多个第二目标***物理地址对应的存储器列地址的响应地址相加,得到所述第一***物理地址对应的初始存储器列地址。
14.根据权利要求9所述的方法,其特征在于,
根据所述映射关系,确定***访问事件对应的存储器物理地址,包括:
获取***访问事件中的第一***物理地址;
将所述第一***物理地址与所述存储体列地址的地址映射掩码进行逻辑与运算,得到第三运算结果;
将所述第三运算结果转换为二进制形式,获取所述存储体列地址的地址映射掩码对应的第二移位数,所述第二移位数为所述存储体列地址的地址映射掩码从最低位开始连续为0的比特位的数量;
将二进制形式的所述第三运算结果右移所述第二移位数的比特位,得到所述第一***物理地址对应的初始存储器列地址。
15.根据权利要求13或14所述的方法,其特征在于,在得到所述第一***物理地址对应的初始存储器列地址之后,还包括:
获取二进制形式的所述第一***物理地址中相邻的多个第三目标比特位;
将所述第一***物理地址对应的初始存储器行地址数据与所述多个第三目标比特位的数据进行拼接,得到所述第一***物理地址对应的存储器列地址。
16.一种控制器,其特征在于,包括:
访问单元,用于对存储器发送访问指令,所述访问指令包括预设的第一地址信息,所述第一地址信息包括数据存储的***物理地址;
第一获取单元,用于获取第二地址信息,所述第二地址信息为所述存储器在接收到所述访问指令后根据所述第一地址信息自动解码后生成的地址信息,所述第二地址信息包括数据存储的存储器物理地址,所述存储器物理地址包括以下存储器物理地址字段中的至少一个:通道、插槽、存储排、存储体组、存储体、存储体行地址和存储体列地址;
构建单元,根据所述第二地址信息和所述第一地址信息的对应关系,构建地址映射表;
第一确定单元,用于根据所述地址映射表,确定所述存储器物理地址和所述***物理地址之间的映射关系;
第二确定单元,用于根据所述映射关系,确定***访问事件对应的存储器物理地址。
17.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至15中任意一项所述的方法。
18.一种地址关系映射***,其特征在于,包括:控制器和存储器,所述控制器和所述存储器通信,所述控制器用于执行权利要求1至15中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210796176.7A CN115048319A (zh) | 2022-07-07 | 2022-07-07 | 地址映射关系的确定方法、控制器和地址关系映射*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210796176.7A CN115048319A (zh) | 2022-07-07 | 2022-07-07 | 地址映射关系的确定方法、控制器和地址关系映射*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048319A true CN115048319A (zh) | 2022-09-13 |
Family
ID=83165613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210796176.7A Pending CN115048319A (zh) | 2022-07-07 | 2022-07-07 | 地址映射关系的确定方法、控制器和地址关系映射*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048319A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115757196A (zh) * | 2022-11-09 | 2023-03-07 | 超聚变数字技术有限公司 | 内存、访问内存方法及计算设备 |
-
2022
- 2022-07-07 CN CN202210796176.7A patent/CN115048319A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115757196A (zh) * | 2022-11-09 | 2023-03-07 | 超聚变数字技术有限公司 | 内存、访问内存方法及计算设备 |
CN115757196B (zh) * | 2022-11-09 | 2023-09-01 | 超聚变数字技术有限公司 | 内存、访问内存方法及计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681931B (zh) | 数据储存设备及其操作方法 | |
US9342371B2 (en) | Boot partitions in memory devices and systems | |
KR20190127980A (ko) | 가비지 컬렉션 | |
CN107391389B (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
CN107741913B (zh) | 用来管理一记忆装置的方法、记忆装置与控制器 | |
US11556466B2 (en) | Logical-to-physical data structures | |
CN108039190B (zh) | 一种测试方法及装置 | |
US10725933B2 (en) | Method and apparatus for redirecting memory access commands sent to unusable memory partitions | |
CN111796759B (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN111857572B (zh) | Tlc固态硬盘的数据写入方法、装置、设备及存储介质 | |
CN109960466B (zh) | 存储器***及其操作方法 | |
KR20190067921A (ko) | 데이터에 대한 메모리 동작 | |
US10546618B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
CN115048319A (zh) | 地址映射关系的确定方法、控制器和地址关系映射*** | |
CN112988491B (zh) | 一种内存测试方法、装置及内存控制器 | |
US20190236020A1 (en) | Memory system and operating method thereof | |
CN103870214A (zh) | 多层存储块兼具单层存储块性能的方法 | |
US9405674B2 (en) | Address generating circuit and address generating method | |
TWI523016B (zh) | 用來管理一記憶裝置之方法以及記憶裝置與控制器 | |
US20220197792A1 (en) | Random seed generating circuit of memory system | |
CN114329640B (zh) | 计数值读取方法、计数方法、装置、电子设备及存储介质 | |
CN118035039A (zh) | 内存信息确定方法、装置、设备、存储介质及程序产品 | |
CN115705298A (zh) | 一种存储设备 | |
CN117421162A (zh) | 内存故障检出方法及其装置、计算机设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |