一种确定物理地址的方法及装置制造方法

文档序号:6503456阅读:90来源:国知局
一种确定物理地址的方法及装置制造方法
【专利摘要】本发明公开一种确定物理地址的方法及装置,涉及计算机【技术领域】,可以采用支持多种页面大小的组相连的TLB获得物理地址,并且降低功耗。本发明通过根据线性地址的高N位获得页面大小,所述N大于0,并且小于所述线性地址的位数;根据所述页面大小,获得旁路转换缓存TLB的索引号;根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask;根据所述Mask,获得所述TLB的标签;根据所述索引号和所述标签,查找所述TLB,获得所述线性地址对应的物理地址的高MAC1位;根据所述Mask、所述支持的最小页面以及所述物理地址的高MAC1位,获得物理地址。本发明适于通过线性地址确定物理地址时采用。
【专利说明】-种确定物理地址的方法及装置

【技术领域】
[0001] 本发明涉及计算机【技术领域】,尤其涉及一种确定物理地址的方法及装置。

【背景技术】
[0002] 访问计算机内存的时候需要提供内存单元的物理地址。通常中央处理器(Central Processing Unit,CPU)支持分页内存管理,在分页内存管理条件下CPU所生成的地址叫做 线性地址或者虚拟地址,通过TLB中保存的页表将线性地址转换为物理地址之后才能访问 计算机内存。
[0003] 当采用组相连的旁路转换缓冲(Translation lookaside buffer, TLB)结构访问 计算机内存时,可以同时根据线性地址的不同部分索引不同的TLB,例如存放4K页的线性 地址到物理地址的转换,以及存放2M页的线性地址到物理地址的转换,每个TLB可以确定 组相连的一个组,在索引到的不同组中,确定一个与线性地址匹配的组中一个TLB表项,根 据该TLB表项将线性地址转换为物理地址。需要说明的是,采用页面大小的种类数目与TLB 的个数相同,从而进行地址转换时就需要同时查询所有的TLB。
[0004] 另外,当一个进程仅采用一种页面时,可以根据正在运行的进程所使用的页面大 小选择采用线性地址的哪几位来索引组相连的TLB,确定组相连TLB的一个组中的一个TLB 表项,根据该TLB表项将线性地址转换为物理地址。
[0005] 然而,在采用现有技术获得物理地址时,需要同时查询多个TLB,使得功耗较高,或 者需要限制每个进程只能采用一种页面,导致不灵活。


【发明内容】

[0006] 本发明的实施例提供一种确定物理地址的方法及装置,可以采用支持多种页面大 小的组相连的TLB获得物理地址,并且降低功耗。
[0007] 第一方面,提供一种确定物理地址的方法,用于将内存的地址转换为物理地址;包 括:
[0008] 根据线性地址的高N位获得页面大小,所述N大于0,并且小于所述线性地址的位 数;
[0009] 根据所述页面大小,获得旁路转换缓存TLB的索引号;
[0010] 根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask ;
[0011] 根据所述Mask,获得所述TLB的标签;
[0012] 根据所述索引号和所述标签,查找所述TLB,获得所述线性地址对应的物理地址的 高MAC1位;
[0013] 根据所述Mask、所述支持的最小页面以及所述物理地址的高MAC1位,获得物理地 址,所述物理地址用于访问内存使用。
[0014] 结合第一方面,在第一方面的第一种实现方式中,所述根据线性地址的高N位获 得页面大小包括:
[0015] 根据支持的最小页面大小,获得所述最小页面大小的页内偏移位数;
[0016] 将所述线性地址的位数除去所述最小页面大小的页内偏移位数,获得第一页号;
[0017] 根据所述第一页号的值在第一预设表中查询,获得页面大小。
[0018] 结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,
[0019] 所述第一预设表包括页面大小的起始地址、所述页面大小的终止地址和所述页面 大小;
[0020] 所述根据所述第一页号的值在第一预设表中查询,获得页面大小包括:
[0021] 当所述第一页号的值大于第一页面大小的起始地址,并且所述第一页号的值小于 所述第一页面大小的终止地址时,则确定所述页面大小为所述第一页面大小。
[0022] 结合第一方面,在第一方面的第三种实现方式中,所述根据线性地址的高N位获 得页面大小包括:
[0023] 将线性地址的高N位输入译码器,获得选通信号,所述选通信号用于选择寄存器 组中的一个寄存器;
[0024] 根据所述选通信号,确定所述寄存器组中的第一寄存器;
[0025] 确定所述页面大小为所述第一寄存器记录的页面大小;
[0026] 所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高N位 将所述线性地址等分为2 N个内存区后,每一个内存区中记录的页面大小。
[0027] 结合第一方面的前述任一种实现方式,在第一方面的第四种实现方式中,
[0028] 所述根据所述页面大小,获得TLB的索引号,包括:
[0029] 根据所述TLB中保存的记录的行数,确定表示所述TLB的行数的位数;
[0030] 根据所述页面大小,确定所述页面大小的页内偏移位数;
[0031] 将所述线性地址的位数去掉所述页面大小的页内偏移位数之后,将剩余的所述线 性地址的部分的最低的所述表示所述TLB的行数的位数确定为所述TLB的索引号。
[0032] 结合第一方面的前述任一种实现方式,在第一方面的第五种实现方式中,
[0033] 所述根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask,包括:
[0034] 根据Ml = LA_log2Pl得到Mask的位数,其中,所述Ml表示Mask的位数,所述LA 表示所述线性地址的位数,所述P1表示支持的最小页面大小;
[0035] 根据M2 = LA-log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽 位Mask中1的个数,所述P2表示所述页面大小;
[0036] 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
[0037] 结合第一方面的第五种实现方式,在第一方面的第六种实现方式中,
[0038] 所述根据所述Mask,获得所述TLB的标签,包括:
[0039] 将所述线性地址除去低所述(log2Pl)位,获得第二地址;
[0040] 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
[0041] 结合第一方面的前述任一种实现方式,在第一方面的第七种实现方式中,
[0042] 所述根据所述索引号和所述标签,查找所述TLB,获得所述线性地址对应的物理地 址包括:
[0043] 根据所述TLB的索引号在所述TLB中查找,获得所述TLB中的第一记录,所述TLB 包括至少一行记录,每一行记录中包括至少一对数据,每一对所述数据包括一个标签和与 所述标签对应的物理地址;
[0044] 将所述TLB的标签与所述第一记录中的包括至少一对数据中的各个标签比较,当 所述TLB的标签与所述第一记录中的包括的第一标签相同时,则所述第一记录中与所述第 一标签对应的物理地址为所述线性地址对应的物理地址的高MAC1位。
[0045] 结合第一方面的前述任一种实现方式,在第一方面的第八种实现方式中,
[0046] 所述根据所述Mask、所述支持的最小页面大小以及所述物理地址的高MAC1位获 得物理地址,包括:
[0047] 将所述Mask取反,并与所述第二地址按位进行与计算,获得所述物理地址的中间 MAC2 位;
[0048] 获得所述物理地址的低(l〇g2Pl)位,所述P1表示支持的最小页面大小;
[0049] 将所述物理地址的高MAC1位、所述物理地址的中间MAC2位以及所述物理地址的 低MAC3位按顺序组合,获得物理地址。
[0050] 第二方面,提供一种确定物理地址的装置,用于将内存的地址转换为物理地址;包 括:
[0051] 页面大小译码器,用于根据线性地址的高N位获得页面大小,所述N大于0,并且小 于所述线性地址的位数;
[0052] 索引处理器,用于根据所述页面大小,获得旁路转换缓存TLB的索引号;
[0053] 屏蔽位Mask译码器,用于根据所述页面大小和支持的最小页面大小,获得屏蔽位 Mask ;
[0054] 标签处理器,用于根据所述Mask,获得所述TLB的标签;
[0055] 物理地址确定单元,用于根据所述索引号和所述标签,查找所述TLB,获得所述线 性地址对应的物理地址的高MAC1位;
[0056] 所述物理地址确定单元,还用于根据所述Mask、所述支持的最小页面以及所述物 理地址的高MAC1位,获得物理地址,所述物理地址用于访问内存使用。
[0057] 结合第二方面,在第二方面的第一种实现方式中,所述页面大小译码器,包括:
[0058] 计算模块,用于根据支持的最小页面大小,获得所述最小页面大小的页内偏移位 数;
[0059] 所述计算模块,还用于将所述线性地址的位数除去所述最小页面大小的页内偏移 位数,获得第一页号;
[0060] 页面大小获得模块,用于根据所述第一页号的值在第一预设表中查询,获得页面 大小。
[0061] 结合第二方面的第一种实现方式,在第二方面的第二种实现方式中,
[0062] 所述第一预设表包括页面大小的起始地址、所述页面大小的终止地址和所述页面 大小;
[0063] 所述页面大小获得模块用于:
[0064] 当所述第一页号的值大于第一页面大小的起始地址,并且所述第一页号的值小于 所述第一页面大小的终止地址时,则确定所述页面大小为所述第一页面大小。
[0065] 结合第二方面,在第二方面的第三种实现方式中,,所述页面大小译码器包括:
[0066] 译码器,用于将线性地址的高N位输入译码器,获得选通信号,所述选通信号用于 选择寄存器组中的一个寄存器;
[0067] 寄存器,用于根据所述选通信号,确定所述寄存器组中的第一寄存器;
[0068] 所述寄存器,还用于确定所述页面大小为所述第一寄存器记录的页面大小;
[0069] 所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高N位 将所述线性地址等分为2N个内存区后,每一个内存区中记录的页面大小。
[0070] 结合第二方面的前述任一种实现方式,在第二方面的第四种实现方式中,
[0071] 所述索引处理器,包括:
[0072] 索引译码器,用于根据所述TLB中保存的记录的行数,确定表示所述TLB的行数的 位数;
[0073] 所述索引译码器,还用于根据所述页面大小,确定所述页面大小的页内偏移位 数;
[0074] 多路选择器MUX,用于将所述线性地址的位数去掉所述页面大小的页内偏移位数 之后,将剩余的所述线性地址的部分的最低的所述表示所述TLB的行数的位数确定为所述 TLB的索引号。
[0075] 结合第二方面的前述任一种实现方式,在第二方面的第五种实现方式中,
[0076] 所述屏蔽位Mask译码器,用于:
[0077] 根据Ml = LA_log2Pl得到屏蔽位Mask的位数,其中,所述Ml表示Mask的位数, 所述LA表示所述线性地址的位数,所述P1表示支持的最小页面大小;
[0078] 根据M2 = LA_log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽 位Mask中1的个数,所述P2表示所述页面大小;
[0079] 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
[0080] 结合第二方面的前述第五种实现方式,在第二方面的第六种实现方式中,
[0081] 所述标签处理器,用于:
[0082] 将所述线性地址除去低所述(log2Pl)位,获得第二地址;
[0083] 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
[0084] 结合第二方面的前述第种六实现方式,在第二方面的第七种实现方式中,
[0085] 所述物理地址确定单元,包括:
[0086] 第一纪录确定模块,用于根据所述TLB的索引号在所述TLB中查找,获得所述TLB 中的第一记录,所述TLB包括至少一行记录,每一行记录中包括至少一对数据,每一对所述 数据包括一个标签和与所述标签对应的物理地址;
[0087] 物理地址确定模块,用于将所述TLB的标签与所述第一记录中的包括至少一对 数据中的各个标签比较,当所述TLB的标签与所述第一记录中的包括的第一标签相同时, 则所述第一记录中与所述第一标签对应的物理地址为所述线性地址对应的物理地址的高 MAC1 位。
[0088] 结合第二方面的前述第七种实现方式,在第二方面的第八种实现方式中,
[0089] 所述物理地址确定单元,包括:
[0090] 计算模块,用于将所述Mask取反,并与所述第二地址按位进行与计算,获得所述 物理地址的中间MAC2位;
[0091] 所述计算模块,还用于获得所述物理地址的低(l〇g2Pl)位,所述P1表示支持的最 小页面大小;
[0092] 组合模块,用于将所述物理地址的高MAC1位、所述物理地址的中间MAC2位以及所 述物理地址的低(log 2Pl)位按顺序组合,获得物理地址。
[0093] 本发明实施例提供一种确定物理地址的方法及装置,与现有技术中需要同时查询 多个TLB,使得功耗较高,或者需要限制每个进程只能采用一种页面,导致不灵活相比,本发 明实施例可以采用支持多种页面大小的组相连的TLB获得物理地址,并使得进程在不同线 性地址区域使用不同的页面大小,并且降低功耗。

【专利附图】

【附图说明】
[0094] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。
[0095] 图1为本发明一个实施例提供的一种确定物理地址的方法的流程图;
[0096] 图2为本发明一个实施例提供的另一种确定物理地址的方法的流程图;
[0097] 图3为本发明一个实施例提供的确定物理地址的方法的示意图;
[0098] 图4为本发明一个实施例提供的另一个确定物理地址的方法的示意图;
[0099] 图5为本发明一个实施例提供的另一个确定物理地址的方法的示意图;
[0100] 图6为本发明一个实施例提供的一种确定物理地址的装置的框图;
[0101] 图7为本发明一个实施例提供的另一种确定物理地址的装置的框图;
[0102] 图8为本发明一个实施例提供的页面大小译码器的框图。

【具体实施方式】
[0103] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0104] 本发明实施例提供一种确定物理地址的方法,该方法的执行主体为CPU,用于将内 存的地址转换为物理地址;该方法包括:
[0105] 步骤101,根据线性地址的高N位获得页面大小,所述N大于0,并且小于所述线性 地址的位数;
[0106] 线性地址为CPU所生成的地址,也可以称为虚拟地址或者逻辑地址。线性地址必 须通过页表转换为物理地址才能访问内存,即页表用于将线性地址转换为物理地址。页表 可以存放在内存中,当进行线性地址到物理地址的转换时,需要访问内存中的页表,这样导 致线性地址到物理地址的转换速度较慢。CPU中的TLB也可以保存页表。页表如果保存在 TLB中,则可以在CPU中进行线性地址到物理地址的转换,而不必访问内存,使得线性地址 到物理地址的转换的速度加快。
[0107] 由于不同大小的页面在进行组相连的时候使用的index在线性地址中的位置不 同,因此在进行线性地址到物理地址的转换的时候,需要知道使用线性地址的哪一部分作 为index来索引TLB。可选的,将线性地址的高N位作为页面大小译码器的输入,可以获得 页面大小。其中,N大于0,并且小于所述线性地址的位数,即线性地址为32位时,则可以将 线性地址的高7位作为页面大小译码器的输入,获得页面大小。
[0108] 步骤102,根据所述页面大小,获得旁路转换缓存TLB的索引号;
[0109] 可选的,获得页面大小之后,将页面大小作为索引译码器的输入,可以获得多路选 择器(multiplexer,MUX)的选择信号,从而得到索引号index。其中,MUX表示选择各种页 面大小对应的index的多路选择器。
[0110] 例如,根据所述TLB的项数,确定表示所述TLB的项数的位数,即当TLB中包括512 项时,即TLB中保存有512行记录,则需要7位表示index。
[0111] 根据所述页面大小,确定所述页面大小的页内偏移位数,当页面大小为4M时,页 面大小的页内偏移位数为22位。
[0112] 将所述线性地址的位数去掉所述页面大小的页内偏移位数之后,将剩余的所述线 性地址的部分的最低的所述表示所述TLB的项数的位数确定为所述TLB的索引号。当线性 地址为32位时,则线性地址的位数去掉页面大小的页内偏移位数之后,为10位,将10位中 的最低的7位确定为TLB的索引号,即MUX选择线性地址的22位-28位作为index。
[0113] 步骤103,根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask ;
[0114] 可选的,获得页面大小之后,将页面大小作为屏蔽位Mask译码器的输入,从而获 得 Mask。
[0115] 例如,根据Ml = LA_log2Pl得到屏蔽位Mask的位数,其中,所述Ml表示Mask的 位数,所述LA表示所述线性地址的位数,所述P1表示支持的最小页面大小;
[0116] 根据M2 = LA_log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽 位Mask中1的个数,所述P2表示所述页面大小;
[0117] 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
[0118] 步骤104,根据所述Mask,获得所述TLB的标签;
[0119] 将Mask与线性地址的位数除去最小页面的页内偏移的部分按位进行与计算,获 得TLB的标签。
[0120] 可选的,将所述线性地址除去低所述(log2Pl)位,获得第二地址;
[0121] 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
[0122] 步骤105,根据所述索引号和所述标签,查找所述TLB,获得所述线性地址对应的 物理地址的高MAC1位。
[0123] 在本实施例中,TLB中不再需要Mask域,仅包括标签域和物理地址域。TLB中包括 至少一行记录,每一行记录中包括至少一对数据,每一对所述数据包括一个标签和与所述 标签对应的物理地址;
[0124] 可选的,根据所述索引号在所述TLB中查找,获得所述TLB中的第一记录;
[0125] 将所述标签与所述第一记录中的包括至少一对数据中的各个标签比较,当所述标 签与所述第一记录中的包括的第一标签相同时,则所述第一记录中与所述第一标签对应的 物理地址为所述线性地址对应的物理地址的高MAC1位。
[0126] 步骤106,根据所述Mask、所述支持的最小页面以及所述物理地址的高MAC1位,获 得物理地址,所述物理地址用于访问内存使用。
[0127] 根据所述Mask、所述支持的最小页面大小以及所述物理地址的高MAC1位获得物 理地址,包括:将所述Mask取反,并与所述第二地址按位进行与计算,获得所述物理地址的 中间MAC2位;获得所述物理地址的低(log 2Pl)位,所述P1表示支持的最小页面大小;将所 述物理地址的高MAC1位、所述物理地址的中间MAC2位以及所述物理地址的低(log 2Pl)位 按顺序组合,获得物理地址。
[0128] 需要说明的是,TLB中标签域的长度固定为最小页面的标签的长度,则对于大页面 的标签的低位需要置0。例如,线性地址为32位,最小页面为4K,最小页面的页内偏移位数 为12,TLB中标签域的长度固定为20位,若大页面为4M时,此页面的页内偏移位数为22,则 大页面的标签中有效标签位为10位,对于TLB中标签域的长度固定为20位,因此低10位 需要置0。
[0129] 本发明实施例提供一种确定物理地址的方法,通过根据线性地址的高N位获得页 面大小,所述N大于0,并且小于所述线性地址的位数;根据所述页面大小,获得旁路转换缓 存TLB的索引号;根据所述页面大小,获得所述TLB的标签;根据所述索引号和所述标签, 查找所述TLB,获得所述线性地址对应的物理地址,可以采用支持多种页面大小的组相连的 TLB获得物理地址,并使得进程在不同线性地址区域使用不同的页面大小,并且降低功耗。
[0130] 本发明实施例提供另一种确定物理地址的方法,用于将内存的地址转换为物理地 址;如图2所示,该方法包括:
[0131] 步骤201,根据线性地址的高N位获得页面大小,所述N大于0,并且小于所述线性 地址的位数。
[0132] 可选的,如图3所示,通过页面大小译码器获得页面大小,页面大小译码器表示一 种根据线性地址高位得到页面大小的逻辑模块。
[0133] 在本实施例中页面大小译码器的实现方式可以通过以下两种方式实现:
[0134] 方式一:如图4所示,页面大小译码器通过一个预设表实现,这个预设表由页面大 小的起始地址Start,页面大小的终止地址End以及页面大小Page-size组成,并由操作系 统写入和修改预设表。
[0135] 可选的,首先根据支持的最小页面大小,获得所述最小页面大小的页内偏移位数。
[0136] 例如,系统可以支持的最小页面大小为4KB,通过log2(4K) = 12计算获得页面大 小的页面偏移位数为12。因此Start和End记录的由Page-size指定的页面大小的内存区 可以以4KB为单位的起始地址和终止地址。
[0137] 将所述线性地址的位数除去所述最小页面大小的页内偏移位数,获得第一页号。
[0138] 例如,线性地址为48位,则第一页号为(48-12)位,即第一页号最大可以为36位。
[0139] 根据确定的所述第一页号的值在第一预设表中查询,获得页面大小。
[0140] 第一页号由二进制表示,将二进制数转换为十进制数,此十进制数可以表示页号 的值。
[0141] 可选的,当所述第一页号的值大于第一页面大小的起始地址,并且所述第一页号 的值小于所述第一页面大小的终止地址时,则确定所述页面大小为所述第一页面大小。
[0142] 需要说明的是,由于需要将线性地址中的36为与预设表中的每一项的Start和 End做并行的比较,因此预设表需要设置的行数较少,以便提高查找到页面大小的时间。例 如,可以将预设表设置为7项,则需要将线性地址分成7个内存区,其中,每个内存区的页面 大小可以为 4KB、8KB、16KB、32KB、64KB、128KB......32G、64G、128G、256G、512G 中的任意一种。
[0143] 方式二:如图5所示,将页面大小译码器通过一个7-128译码器和一个页面大小寄 存器组的组合进行实现,并由操作系统写入和修改。
[0144] 例如,所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高 N位将所述线性地址等分为2 N个内存区后,每一个内存区中记录的页面大小。
[0145] 线性地址为48位,使用线性地址的最高N位将线性地址等分为若干个2TB的内存 区,例如,使用线性地址的最高7位将线性地址等分为128个2TB的内存区,其中,每个内存 区的页面大小可以为 4KB、8KB、16KB、32KB、64KB、128KB......32G、64G、128G、256G、512G 中的 任意一种。
[0146] 可选的,将线性地址的高N位输入译码器,获得选通信号,所述选通信号用于选择 寄存器组中的一个寄存器;例如,将线性地址的高7位输入译码器,获得一个选通信号。
[0147] 根据所述选通信号,确定所述寄存器组中的第一寄存器。可选的,译码器的输出会 在寄存器组中查找到一个寄存器。例如,寄存器组中有0-3号共4个寄存器,选通信号为2 时,则选择的寄存器为2号寄存器。需要说明的是,第一寄存器中的"第一"不是为了排序, 而是为了方便描述,这里第一寄存器可以指寄存器组中的任意一个寄存器,例如当选通信 号为2时,第一寄存器可以为2号寄存器,选通信号为0时,第一寄存器可以为0号寄存器。
[0148] 确定所述页面大小为所述第一寄存器记录的页面大小;
[0149] 步骤202,根据所述页面大小,获得旁路转换缓存TLB的索引号;
[0150] 可选的,如图3所示,通过索引译码器和MUX获得TLB的索引号index。
[0151] 可选的,根据TLB中保存的记录的行数,确定表示所述TLB的行数的位数。TLB 中保存至少一行记录。例如,TLB中保存有512项时,即TLB中保存有512行记录,则需要 [log 2(512) = 7]位表示index,即index由7位二进制数构成。
[0152] 根据所述页面大小,确定所述页面大小的页内偏移位数。例如,当页面大小为4M 时,页面大小的页内偏移位数为22位。
[0153] 将所述线性地址的位数去掉所述页面大小的页内偏移位数之后,将剩余的所述线 性地址的部分的最低的所述表示所述TLB的项数的位数确定为所述TLB的索引号。当线性 地址为32位时,则线性地址的位数去掉页面大小的页内偏移位数之后,为10位,将10位中 的最低的7位确定为TLB的索引号,即MUX选择线性地址的22位-28位作为index输出。
[0154] 步骤203,根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask ;
[0155] 可选的,如图3所示,通过屏蔽位Mask译码器获得屏蔽位Mask。
[0156] 根据Ml = LA_log2Pl得到Mask的位数,其中,所述Ml表示Mask的位数,所述LA 表示所述线性地址的位数,所述P1表示支持的最小页面大小。
[0157] 例如,线性地址为48位,支持的最小页面为4K,则Mask的位数为[48_log2 (4K)= 36]位。在这36位中,高位为1,低位为0。
[0158] 根据M2 = LA_log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽 位Mask中1的个数,所述P2表示所述页面大小。
[0159] 页面大小为4M,则Mask中1的个数为[48-log2(4M) = 26]位。
[0160] 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
[0161] 例如,Mask 中高 26 位为 1,低(36-26 = 10)位为 0,例如 Mask 为"1111111111111 11111111111110000000000"。
[0162] 步骤204,根据所述Mask,获得所述TLB的标签。
[0163] 所述线性地址除去低所述(log2Pl)位,获得第二地址。例如,第二地址可以为线 性地址中高[48-log 2(4K) = 36]位。
[0164] 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
[0165] 步骤205,根据所述TLB的索引号在所述TLB中查找,获得所述TLB中的第一记录。
[0166] 所述TLB包括至少一行记录,每一行记录中包括至少一对数据,每一对所述数据 包括一个标签和与所述标签对应的物理地址。TLB中不再包括Mask值,使得TLB的设置更 简单,查询物理地址时更快速。
[0167] 例如,获得的TLB的索引号由7位表示,TLB为512行记录,则根据索引号的值获 得TLB中的一行记录。例如,索引号的7位表示的值为318,则可以TLB中第318行记录为 第一记录。
[0168] 步骤206,将所述TLB的标签与所述第一记录中的包括至少一对数据中的各个标 签比较,当所述TLB的标签与所述第一记录中的包括的第一标签相同时,则所述第一记录 中与所述第一标签对应的物理地址为所述线性地址对应的物理地址中的高MAC1位。
[0169] 根据获得的TLB的标签与所述第一记录中的包括至少一对数据中的各个标签比 较包括:将TLB的标签依次与所述第一记录中的包括至少一对数据的标签一一进行比较。 当TLB的标签与任一对数据中的标签进行比较时,可选的,将表示TLB的标签的二进制数依 次与任一对数据中的表示标签的二进制数进行比较,或者,将TLB的标签的值与任一对数 据中的标签的值进行比较。
[0170] 当TLB的标签与所述第一记录中的包括的第一标签不相同时,继续比较第一纪录 中包括的其他的标签。
[0171] 步骤207,根据Mask、所述支持的最小页面大小以及所述物理地址中的高MAC1位, 获得所述物理地址,所述物理地址用于访问内存使用。
[0172] 将所述Mask取反,并与所述第二地址按位进行与计算,获得所述物理地址的中 间 MAC2 位,例如,将所述 Mask 取反得到 "000000000011111111111111111111111111", 与第二地址按位进行与计算,获得" OOOOOOOOOOxxxxxxxxxxxxxxxxxxxxxxxxxx ",其中, "xxxxxxxxxxxxxxxxxxxxxxxxxx" 表不物理地址的中间 MAC2 位。
[0173] 根据所述支持的最小页面大小,获得所述物理地址的最低(log2Pl)位,所述P1表 示支持的最小页面大小,例如,支持的小页面大小为4K,则log 2(4K) = 12,即最小页面大小 的页内偏移位数为所述物理地址的最低12位,即0-11位。
[0174] 将查询TLB获得的高MAC 1位、物理地址的中间MAC2位以及物理地址的最低 (l〇g2Pl)位按顺序组合,获得物理地址。
[0175] 在本步骤中,获得线性地址对应的物理地址之后,会由CPU的引脚将物理地址发 出传到存储系统,从而执行后续的操作。
[0176] 本发明实施例提供一种确定物理地址的方法,通过根据线性地址的高N位获得页 面大小,所述N大于0,并且小于所述线性地址的位数;根据所述页面大小,获得旁路转换缓 存TLB的索引号;根据所述页面大小,获得所述TLB的标签;根据所述索引号和所述标签, 查找所述TLB,获得所述线性地址对应的物理地址,可以采用支持多种页面大小的组相连的 TLB获得物理地址,并使得进程在不同线性地址区域使用不同的页面大小,并且降低功耗。
[0177] 本发明实施例提供一种确定物理地址的装置,该装置可以为CPU,用于将内存的地 址转换为物理地址;如图6所示,该装置包括:页面大小译码器601,索引处理器602,屏蔽 位Mask译码器603,标签处理器604,物理地址确定单元605。
[0178] 页面大小译码器601,用于根据线性地址的高N位获得页面大小,所述N大于0,并 且小于所述线性地址的位数;不同线性地址区域可以使用不同的页面大小。
[0179] 索引处理器602,用于根据所述页面大小,获得旁路转换缓存TLB的索引号;
[0180] 屏蔽位Mask译码器603,用于根据所述页面大小和支持的最小页面大小,获得屏 蔽位Mask ;
[0181] 进一步可选的,屏蔽位Mask译码器603用于根据Ml = LA_log2Pl得到屏蔽位Mask 的位数,其中,所述Ml表示Mask的位数,所述LA表示所述线性地址的位数,所述P1表示支 持的最小页面大小;
[0182] 所述Mask译码器603,还用于根据M2 = LA_log2P2得到屏蔽位Mask中1的个数, 其中,所述M2表示得到屏蔽位Mask中1的个数,所述P2表示所述页面大小;
[0183] 所述Mask译码器603,还用于将所述Ml中高所述M2位置1,低(M1-M2)位置0,获 得 Mask ;
[0184] 标签处理器604,用于根据所述Mask,获得所述TLB的标签;
[0185] 进一步可选的,所述标签处理器604用于将所述线性地址除去低所述(log2Pl) 位,获得第二地址;
[0186] 所述标签处理器604,还用于将所述Mask与所述第二地址按位进行与计算,获得 所述TLB的标签。
[0187] 物理地址确定单元605,用于根据所述索引号和所述标签,查找所述TLB,获得所 述线性地址对应的物理地址的高MAC1位;
[0188] 所述物理地址确定单元605,还用于根据所述Mask、所述支持的最小页面以及所 述物理地址的高MAC1位,获得物理地址,所述物理地址用于访问内存使用。
[0189] 进一步可选的,如图7所示,所述页面大小译码器601,包括:计算模块6011,页面 大小获得模块6012。
[0190] 计算模块6011,用于根据支持的最小页面大小,获得所述最小页面大小的页内偏 移位数;
[0191] 所述计算模块6011,还用于将所述线性地址的位数除去所述最小页面大小的页内 偏移位数,获得第一页号;例如,系统可以支持的最小页面大小为4KB,通过log 2(4K) = 12 计算获得页面大小的页面偏移位数为12。因此Start和End记录的由Page-size指定的页 面大小的内存区可以以4KB为单位的起始地址和终止地址。
[0192] 页面大小获得模块6012,用于根据所述第一页号的值在第一预设表中查询,获得 页面大小。
[0193] 进一步的,所述第一预设表包括页面大小的起始地址Start、所述页面大小的终止 地址End和所述页面大小Page-size,并由操作系统写入和修改预设表。
[0194] 所述页面大小获得模块6012用于:当所述第一页号的值大于第一页面大小的起 始地址,并且所述第一页号的值小于所述第一页面大小的终止地址时,则确定所述页面大 小为所述第一页面大小。
[0195] 需要说明的是,由于需要将线性地址中的36为与预设表中的每一项的Start和 End做并行的比较,因此预设表需要设置的行数较少,以便提高查找到页面大小的时间。例 如,可以将预设表设置为7项,则需要将线性地址分成7个内存区,其中,每个内存区的页面 大小可以为 4KB、8KB、16KB、32KB、64KB、128KB......32G、64G、128G、256G、512G 中的任意一种。
[0196] 进一步可选的,如图8所示,所述页面大小译码器601包括:译码器6013,寄存器 6014。
[0197] 译码器6013,用于将线性地址的高N位输入译码器,获得选通信号,所述选通信号 用于选择寄存器组中的一个寄存器;
[0198] 寄存器6014,用于根据所述选通信号,确定所述寄存器组中的第一寄存器;
[0199] 所述寄存器6014,还用于确定所述页面大小为所述第一寄存器记录的页面大小;
[0200] 所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高N位 将所述线性地址等分为2N个内存区后,每一个内存区中记录的页面大小。例如,线性地址为 48位,使用线性地址的最高N位将线性地址等分为若干个2TB的内存区,例如,使用线性地 址的最高7位将线性地址等分为128个2TB的内存区,其中,每个内存区的页面大小可以为 4KB、8KB、16KB、32KB、64KB、128KB......32G、64G、128G、256G、512G 中的任意一种。
[0201] 进一步可选的,如图7所示,在所述索引处理器602根据所述页面大小,获得旁 路转换缓存TLB的索引号时,所述索引处理器602,包括:索引译码器6021,多路选择器 MUX6022 ;
[0202] 索引译码器6021,用于根据所述TLB中保存的记录的行数,确定表示所述TLB的 行数的位数;例如,TLB中保存有512项时,即TLB中保存有512行记录,则需要[log 2 (512) =7]位表示index,即index由7位二进制数构成。
[0203] 所述索引译码器6021,还用于根据所述页面大小,确定所述页面大小的页内偏移 位数;例如,当页面大小为4M时,页面大小的页内偏移位数为22位。
[0204] 多路选择器MUX6022,用于将所述线性地址的位数去掉所述页面大小的页内偏移 位数之后,将剩余的所述线性地址的部分的最低的所述表示所述TLB的行数的位数确定为 所述TLB的索引号。当线性地址为32位时,则线性地址的位数去掉页面大小的页内偏移位 数之后,为10位,将10位中的最低的7位确定为TLB的索引号,即MUX选择线性地址的22 位-28位作为index输出。
[0205] 进一步可选的,如图7所示,所述物理地址确定单元605,包括:第一纪录确定模块 6051,物理地址确定模块6052,计算模块6053,组合模块6054。
[0206] 第一纪录确定模块6051,用于根据所述TLB的索引号在所述TLB中查找,获得所 述TLB中的第一记录,所述TLB包括至少一行记录,每一行记录中包括至少一对数据,每一 对所述数据包括一个标签和与所述标签对应的物理地址;例如,获得的TLB的索引号由7位 表示,TLB为512行记录,则根据索引号的值获得TLB中的一行记录。例如,索引号的7位 表示的值为318,则可以TLB中第318行记录为第一记录。
[0207] 物理地址确定模块6052,用于将所述TLB的标签与所述第一记录中的包括至少 一对数据中的各个标签比较,当所述TLB的标签与所述第一记录中的包括的第一标签相同 时,则所述第一记录中与所述第一标签对应的物理地址为所述线性地址对应的物理地址的 高MAC1位;
[0208] 当TLB的标签与所述第一记录中的包括的第一标签不相同时,继续比较第一纪录 中包括的其他的标签。
[0209] 计算模块6053,用于将所述Mask取反,并与所述第二地址按位进行与计算,获得 所述物理地址的中间MAC2位;
[0210] 所述计算模块6053,还用于获得所述物理地址的低(log2Pl)位,所述P1表示支持 的最小页面大小;
[0211] 组合模块6054,用于将所述物理地址的高MAC1位、所述物理地址的中间MAC2位以 及所述物理地址的低(l〇g 2Pl)位按顺序组合,获得物理地址,所述物理地址用于访问内存 使用。
[0212] 需要说明的是,附图6或7所示装置中,其各个模块的具体实施过程以及各个模块 之间的信息交互等内容,由于与本发明方法实施例基于同一发明构思,可以参见方法实施 例,在此不一一赘述。
[0213] 本发明实施例提供一种确定物理地址的装置,通过页面大小译码器根据线性地址 的高N位获得页面大小,所述N大于0,并且小于所述线性地址的位数;根据所述页面大小, 索引处理器获得旁路转换缓存TLB的索引号;根据所述页面大小,标签处理器获得所述TLB 的标签;根据所述索引号和所述标签,物理地址确定单元查找所述TLB,获得所述线性地址 对应的物理地址,可以采用支持多种页面大小的组相连的TLB获得物理地址,并使得进程 在不同线性地址区域使用不同的页面大小,并且降低功耗。
[0214] 需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件 说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以 不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的 需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不 付出创造性劳动的情况下,即可以理解并实施。
[0215] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专 用CPU、专用存储器、专用元器件等来实现,但很多情况下前者是更佳的实施方式。基于这样 的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形 式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘U盘、移动硬 盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、 磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或 者网络设备等)执行本发明各个实施例所述的方法。
[0216] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部 分互相参见即可每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和 系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法 实施例的部分说明即可。
[0217] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1. 一种确定物理地址的方法,用于将内存的地址转换为物理地址;其特征在于,包括: 根据线性地址的高N位获得页面大小,所述N大于0,并且小于所述线性地址的位数; 根据所述页面大小,获得旁路转换缓存TLB的索引号; 根据所述页面大小和支持的最小页面大小,获得屏蔽位Mask ; 根据所述Mask,获得所述TLB的标签; 根据所述索引号和所述标签,查找所述TLB,获得所述线性地址对应的物理地址的高 MAC1 位; 根据所述Mask、所述支持的最小页面以及所述物理地址的高MAC1位,获得物理地址, 所述物理地址用于访问内存使用。
2. 根据权利要求1所述的方法,其特征在于,所述根据线性地址的高N位获得页面大小 包括: 根据支持的最小页面大小,获得所述最小页面大小的页内偏移位数; 将所述线性地址的位数除去所述最小页面大小的页内偏移位数,获得第一页号; 根据所述第一页号的值在第一预设表中查询,获得页面大小。
3. 根据权利要求2所述的方法,其特征在于,所述第一预设表包括页面大小的起始地 址、所述页面大小的终止地址和所述页面大小; 所述根据所述第一页号的值在第一预设表中查询,获得页面大小包括: 当所述第一页号的值大于第一页面大小的起始地址,并且所述第一页号的值小于所述 第一页面大小的终止地址时,则确定所述页面大小为所述第一页面大小。
4. 根据权利要求1所述的方法,其特征在于,所述根据线性地址的高N位获得页面大小 包括: 将线性地址的高N位输入译码器,获得选通信号,所述选通信号用于选择寄存器组中 的一个寄存器; 根据所述选通信号,确定所述寄存器组中的第一寄存器; 确定所述页面大小为所述第一寄存器记录的页面大小; 所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高N位将所 述线性地址等分为2N个内存区后,每一个内存区中记录的页面大小。
5. 根据权利要求1-4中任一项所述的方法,其特征在于,所述根据所述页面大小,获得 TLB的索引号,包括: 根据所述TLB中保存的记录的行数,确定表示所述TLB的行数的位数; 根据所述页面大小,确定所述页面大小的页内偏移位数; 将所述线性地址的位数去掉所述页面大小的页内偏移位数之后,将剩余的所述线性地 址的部分的最低的所述表示所述TLB的行数的位数确定为所述TLB的索引号。
6. 根据权利要求1-5中任一项所述的方法,其特征在于,所述根据所述页面大小和支 持的最小页面大小,获得屏蔽位Mask,包括: 根据Ml = LA-log2Pl得到Mask的位数,其中,所述Ml表示Mask的位数,所述LA表示 所述线性地址的位数,所述P1表示支持的最小页面大小; 根据M2 = LA-log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽位Mask 中1的个数,所述P2表示所述页面大小; 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
7. 根据权利要求6所述的方法,其特征在于,所述根据所述Mask,获得所述TLB的标 签,包括: 将所述线性地址除去低所述(l〇g2Pl)位,获得第二地址; 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
8. 根据权利要求1-7中任一项所述的方法,其特征在于,所述根据所述索引号和所述 标签,查找所述TLB,获得所述线性地址对应的物理地址包括: 根据所述TLB的索引号在所述TLB中查找,获得所述TLB中的第一记录,所述TLB包括 至少一行记录,每一行记录中包括至少一对数据,每一对所述数据包括一个标签和与所述 标签对应的物理地址; 将所述TLB的标签与所述第一记录中的包括至少一对数据中的各个标签比较,当所述 TLB的标签与所述第一记录中的包括的第一标签相同时,则所述第一记录中与所述第一标 签对应的物理地址为所述线性地址对应的物理地址的高MAC1位。
9. 根据权利要求1-8中任一项所述的方法,其特征在于,所述根据所述Mask、所述支持 的最小页面大小以及所述物理地址的高MAC1位获得物理地址,包括 : 将所述Mask取反,并与所述第二地址按位进行与计算,获得所述物理地址的中间MAC2 位; 获得所述物理地址的低(l〇g2Pl)位,所述P1表示支持的最小页面大小; 将所述物理地址的高MAC1位、所述物理地址的中间MAC2位以及所述物理地址的低 MAC3位按顺序组合,获得物理地址。
10. -种确定物理地址的装置,用于将内存的地址转换为物理地址;其特征在于,包 括: 页面大小译码器,用于根据线性地址的高N位获得页面大小,所述N大于0,并且小于所 述线性地址的位数; 索引处理器,用于根据所述页面大小,获得旁路转换缓存TLB的索引号; 屏蔽位Mask译码器,用于根据所述页面大小和支持的最小页面大小,获得屏蔽位 Mask ; 标签处理器,用于根据所述Mask,获得所述TLB的标签; 物理地址确定单元,用于根据所述索引号和所述标签,查找所述TLB,获得所述线性地 址对应的物理地址的高MAC1位; 所述物理地址确定单元,还用于根据所述Mask、所述支持的最小页面以及所述物理地 址的高MAC1位,获得物理地址,所述物理地址用于访问内存使用。
11. 根据权利要求10所述的装置,其特征在于,所述页面大小译码器,包括: 计算模块,用于根据支持的最小页面大小,获得所述最小页面大小的页内偏移位数; 所述计算模块,还用于将所述线性地址的位数除去所述最小页面大小的页内偏移位 数,获得第一页号; 页面大小获得模块,用于根据所述第一页号的值在第一预设表中查询,获得页面大小。
12. 根据权利要求11所述的装置,其特征在于,所述第一预设表包括页面大小的起始 地址、所述页面大小的终止地址和所述页面大小; 所述页面大小获得模块用于: 当所述第一页号的值大于第一页面大小的起始地址,并且所述第一页号的值小于所述 第一页面大小的终止地址时,则确定所述页面大小为所述第一页面大小。
13. 根据权利要求10所述的装置,其特征在于,所述页面大小译码器包括: 译码器,用于将线性地址的高N位输入译码器,获得选通信号,所述选通信号用于选择 寄存器组中的一个寄存器; 寄存器,用于根据所述选通信号,确定所述寄存器组中的第一寄存器; 所述寄存器,还用于确定所述页面大小为所述第一寄存器记录的页面大小; 所述寄存器组中的每一个寄存器记录的页面大小为根据所述线性地址的高N位将所 述线性地址等分为2N个内存区后,每一个内存区中记录的页面大小。
14. 根据权利要求10-13中任一项所述的装置,其特征在于,所述索引处理器,包括: 索引译码器,用于根据所述TLB中保存的记录的行数,确定表示所述TLB的行数的位 数; 所述索引译码器,还用于根据所述页面大小,确定所述页面大小的页内偏移位数; 多路选择器MUX,用于将所述线性地址的位数去掉所述页面大小的页内偏移位数之后, 将剩余的所述线性地址的部分的最低的所述表示所述TLB的行数的位数确定为所述TLB的 索引号。
15. 根据权利要求10-14中任一项所述的装置,其特征在于,所述屏蔽位Mask译码器, 用于: 根据Ml = LA-log2Pl得到屏蔽位Mask的位数,其中,所述Ml表示Mask的位数,所述 LA表示所述线性地址的位数,所述P1表示支持的最小页面大小; 根据M2 = LA-log2P2得到屏蔽位Mask中1的个数,其中,所述M2表示得到屏蔽位Mask 中1的个数,所述P2表示所述页面大小; 将所述Ml中高所述M2位置1,低(M1-M2)位置0,获得Mask。
16. 根据权利要求15所述的装置,其特征在于,所述标签处理器,用于: 将所述线性地址除去低所述(l〇g2Pl)位,获得第二地址; 将所述Mask与所述第二地址按位进行与计算,获得所述TLB的标签。
17. 根据权利要求16所述的装置,其特征在于,所述物理地址确定单元,包括: 第一纪录确定模块,用于根据所述TLB的索引号在所述TLB中查找,获得所述TLB中的 第一记录,所述TLB包括至少一行记录,每一行记录中包括至少一对数据,每一对所述数据 包括一个标签和与所述标签对应的物理地址; 物理地址确定模块,用于将所述TLB的标签与所述第一记录中的包括至少一对数据 中的各个标签比较,当所述TLB的标签与所述第一记录中的包括的第一标签相同时,则所 述第一记录中与所述第一标签对应的物理地址为所述线性地址对应的物理地址的高MAC1 位。
18. 根据权利要求17所述的装置,其特征在于,所述物理地址确定单元,包括: 计算模块,用于将所述Mask取反,并与所述第二地址按位进行与计算,获得所述物理 地址的中间MAC2位; 所述计算模块,还用于获得所述物理地址的低(l〇g2Pl)位,所述P1表示支持的最小页 面大小; 组合模块,用于将所述物理地址的高MAC 1位、所述物理地址的中间MAC2位以及所述物 理地址的低(l〇g2Pl)位按顺序组合,获得物理地址。
【文档编号】G06F12/02GK104216833SQ201310207412
【公开日】2014年12月17日 申请日期:2013年5月29日 优先权日:2013年5月29日
【发明者】张立新, 张科, 张义, 张乐乐 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1