Dax设备地址转换缓存方法及系统

文档序号:1141159 发布日期:2020-09-11 浏览:5次 >En<

阅读说明:本技术 Dax设备地址转换缓存方法及系统 (DAX equipment address translation caching method and system ) 是由 熊子威 蒋德钧 熊劲 于 2020-04-29 设计创作,主要内容包括:本发明提出一种DAX设备地址转换缓存方法及系统,包括:构建由映射文件首地址寄存器MFA、对象偏移寄存器OFS、文件编号寄存器FID和地址转换表构成的DAX地址转换缓存;根据地址转换函数,将持久化地址内文件编号和持久化地址内对象偏移分别写入该文件编号寄存器和该对象偏移寄存器;快表将CPU发出的虚拟地址转换为物理地址,DAX地址转换缓存将通过该文件编号寄存器内存储的数据检索该地址转换表,将检索结果对应的首地址和对象偏移寄存器内数据相加,得到直接访问地址,并将该直接访问地址作为该虚拟地址的转换结果反馈给CPU。本发明可将地址转换函数的指令开销减少一半,并极大增强其处理多映射文件的效率。(The invention provides a DAX device address translation caching method and a DAX device address translation caching system, wherein the method comprises the following steps: constructing a DAX address translation cache consisting of a mapping file initial address register (MFA), an object offset register (OFS), a file number register (FID) and an address translation table; according to the address conversion function, writing the file number in the persistent address and the object offset in the persistent address into the file number register and the object offset register respectively; the fast table converts a virtual address sent by the CPU into a physical address, the DAX address conversion cache searches the address conversion table through data stored in the file number register, adds a first address corresponding to a search result and data in the object offset register to obtain a direct access address, and feeds back the direct access address serving as a conversion result of the virtual address to the CPU. The invention can reduce the instruction overhead of the address conversion function by half and greatly enhance the efficiency of processing the multi-mapping file.)

DAX设备地址转换缓存方法及系统

技术领域

本发明涉及计算机体系结构和非易失性内存研究领域,并特别涉及一种DAX设备地址转换缓存方法及系统。

背景技术

将文件打开并映射至内存,之后通过load和store访存指令访问该文件,是目前系统中常见的访问映射文件的方式。在这样的情况下,文件被映射为巨大的字节数组,该数组的首地址由映射函数决定。应用程序在运行期间可自由访问该数组内任意数据。这样产生的问题是,如果程序向映射文件内写入数据,并希望程序重启后能够找回这些数据,程序必须对这些数据做一定处理,使其遵循一定格式。因为映射函数不保证将同一文件映射至同一地址,因此当程序重启后,上一次运行时的映射地址在本次运行中无效。程序不能通过虚拟地址来定位上一次运行中存储至映射文件的数据。

随着新一代非易失性内存(Non-Volatile Memory)的出现,部分研究人员和企业都在开发NVM开发库,期望提供友好的应用接口,以供开发人员使用。这些开发库工作在支持DAX(直接访问Direct Access)模式的持久化设备上,可以同现有操作系统良好对接的库都选择了使用文件系统对非易失内存NVM进行管理,并通过映射文件的方式访问NVM上的资源。因此,这些开发库也需要提供解决方案,让程序在重启后能够便捷地访问NVM上的数据。

目前常见的开发库设计为,各开发库各自为不同的存储对象维护持久化地址,在持久化地址内,储存着映射文件的编号和存储对象相对映射文件首地址的偏移量,并提供地址转换函数在运行时将持久化地址转换为虚拟地址,避免了对数据进行格式化的开销。由前文可知,这样的转换是必须的。因为虚拟地址是易失的,在每次进程重启并重新映射文件后,不保证映射文件的首地址与上一次运行时的映射地址相似,因此开发库不得不各自维护持久化地址。这样的设计虽然使得程序能够在重启后依然正常访问NVM中的数据,但也成为了NVM开发库的性能瓶颈。

对于现有的NVM开发库而言,其地址转换函数的开销较大,占总体开销的13%左右。且这类函数无法进行软件上的优化,因为传统硬件中,地址转换是交由硬件完成的。而目前的开发库在软件上进行地址转换,将消耗更多的时间。同时,如果存在多个文件需要进行管理,地址转换函数将不得不反复查询不同文件在本次运行时的首地址,效率极为底下。又由于地址转换函数的逻辑十分简单,代码也极其简短,因此软件层面的优化非常困难。

发明内容

本发明在硬件上设计了DAX地址转换缓存,为开发库提供硬件功能以加速地址转换,提供使用这些开发库的应用的运行效率。

具体来说针对现有技术的不足,本发明提出一种DAX设备地址转换缓存方法,其中包括:

步骤1、构建由映射文件首地址寄存器MFA、对象偏移寄存器OFS、文件编号寄存器FID和地址转换表构成的DAX地址转换缓存;

步骤2、根据地址转换函数,将持久化地址内文件编号和持久化地址内对象偏移分别写入该文件编号寄存器和该对象偏移寄存器;

步骤3、快表将CPU发出的虚拟地址转换为物理地址,DAX地址转换缓存将通过该文件编号寄存器内存储的数据检索该地址转换表,将检索结果对应的首地址和对象偏移寄存器内数据相加,得到直接访问地址,并将该直接访问地址作为该虚拟地址的转换结果反馈给CPU。

所述的DAX设备地址转换缓存方法,其中该步骤3包括:

步骤31、若该直接访问地址为0,地址转换函数将映射文件的首地址填入该映射文件首地址寄存器,并向DAX地址转换缓存写0,DAX地址转换缓存收到写请求后,通过替换算法将文件编号寄存器和映射文件首地址寄存器内数据填入地址转换表中。

所述的DAX设备地址转换缓存方法,其中还包括:

步骤4、将物理地址发送至高速缓冲存储器,将该高速缓冲存储器中物理地址对应的数据作为响应结果,判断该直接访问地址是否有效,若是,则将直接访问地址反馈给CPU,否则将该响应结果反馈给CPU。

所述的DAX设备地址转换缓存方法,其中该地址转换表为32个寄存器对。

本发明还提供了一种DAX设备地址转换缓存系统,其中包括:

模块1、构建由映射文件首地址寄存器MFA、对象偏移寄存器OFS、文件编号寄存器FID和地址转换表构成的DAX地址转换缓存;

模块2、根据地址转换函数,将持久化地址内文件编号和持久化地址内对象偏移分别写入该文件编号寄存器和该对象偏移寄存器;

模块3、快表将CPU发出的虚拟地址转换为物理地址,DAX地址转换缓存将通过该文件编号寄存器内存储的数据检索该地址转换表,将检索结果对应的首地址和对象偏移寄存器内数据相加,得到直接访问地址,并将该直接访问地址作为该虚拟地址的转换结果反馈给CPU。

所述的DAX设备地址转换缓存系统,其中该模块3包括:

模块31、若该直接访问地址为0,地址转换函数将映射文件的首地址填入该映射文件首地址寄存器,并向DAX地址转换缓存写0,DAX地址转换缓存收到写请求后,通过替换算法将文件编号寄存器和映射文件首地址寄存器内数据填入地址转换表中。

所述的DAX设备地址转换缓存系统,其中还包括:

模块4、将物理地址发送至高速缓冲存储器,将该高速缓冲存储器中物理地址对应的数据作为响应结果,判断该直接访问地址是否有效,若是,则将直接访问地址反馈给CPU,否则将该响应结果反馈给CPU。

所述的DAX设备地址转换缓存系统,其中该地址转换表为32个寄存器对。

由以上方案可知,本发明的优点在于:

该发明可将地址转换函数的指令开销减少一半,并极大增强其处理多映射文件的效率。

附图说明

图1为地址转换缓存结构图;

图2为CPU、TLB和Cache之间的连接关系图;

图3为本发明结构图;

图4为本发明效果对比图。

具体实施方式

发明人在进行对地址转换函数效率的研究时,发现现有技术中该项缺陷是由过多的冗余指令导致的。这些过多的指令来自条件分支,冗余的地址加载,安全性检查等。这些冗余指令的目的在于维护一个简单的缓存,该缓存暂时储存着最近访问的映射文件的首地址。

显然,软件上无法维护较大的缓存,否则查找效率将极其低下;而缓存的有效性检查也带来了较多的冗余指令。考虑到这些指令的目的在于实现地址转换,而目前的计算机体系结构中,已经包含了用于加速地址转换的快表,因此可以考虑将该过程交由硬件完成。但在设计上需要满足几个要求:(1)对目前的计算机体系结构改动尽可能小,不能引起数据通路过大的变化,最好能避免数据通路的变化(2)尽可能避免添加新指令,否则该发明的实际价值将大打折扣,(3)便于使用,不能让期望通过该器件实现性能提升的开发人员重写过多的代码。

借鉴快表的结构,本发明设计了DAX地址转换缓存。藉由该缓存,地址转换函数的指令数可减少一半,且该器件将极大提高地址转换函数处理多个映射文件的性能,因为硬件上实现并行查找是极为高效的。

本发明主要发明点包括:

关键点1,考虑到硬件性能和功耗间的平衡,DAX地址转换缓存由32对寄存器对和3个独立寄存器构成。寄存器对称为地址转换表(Address Translation Table),三个独立寄存器分别称为MFA寄存器(映射文件首地址寄存器),OFS寄存器(对象偏移寄存器)和FID寄存器(文件编号寄存器)。寄存器对中存储着映射文件的编号和该映射文件的首地址,三个独立寄存器可寄存器对进行数据传输;

关键点2,地址转换函数需要显式地通过访存指令访问DAX地址转换缓存。由于本发明不希望破坏目前计算机体系结构中已有的数据通路,因此需要地址转换函数显式地访问DAX地址转换缓存,以获取所需的首地址。这样的做法一方面可以避免添加DAX地址转换缓存时,降低已有数据同时的效率,影响已有系统的性能;另一方面也可以避免添加额外指令,或修改已有指令。唯一需要改变的,就是在操作系统内注册四个虚拟地址,将这四个虚拟地址映射至DAX地址转换缓存即可。鉴于目前各架构芯片中都保留有一定大小的保留地址,因此上述操作并不复杂;

关键点3,DAX地址转换缓存应负责检查地址的有效性,文件编号为0,偏移量为0皆属于非法地址;

关键点4,DAX地址转换缓存可写不可读,以避免恶意程序通过对DAX的读操作,非法获得无访问权限的映射文件的地址。

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

DAX地址转换缓存结构:

地址转换缓存结构如图1所示。在该图中,三个独立寄存器可单向得将数据送往地址转换表,OFS寄存器和地址转换表中的地址寄存器可向一个加法器发送数据,该加法器生成的结果为DAX地址转换缓存转换出的虚拟地址。

DAX地址转换缓存位置:

现代计算机体系结构中,CPU,TLB(快表)和Cache之间的连接关系如图2所示。当执行访存指令时,指令生成的虚拟地址由CPU送往TLB,在命中的情况下,TLB将进行地址转换,产生物理地址。该物理地址将被送往Cache,一旦命中,高速缓冲存储器Cache内数据将传输至CPU,完成访存。若未命中,则将生成的物理地址送往内存总线,并进一步交由内存控制器,最后送往DRAM,完成数据读取。其中Cache对程序员是完全透明的,且Cache是对DRAM进行缓存。动态随机存取存储器DRAM本身是用来容纳指令和数据的。

DAX地址转换缓存应置于TLB与Cache之间,并将DAX地址转换缓存编址至CPU的保留地址中。TLB完成地址转换后,生成的物理地址直接送往DAX地址转换缓存和Cache,如果物理地址是对DAX地址转换缓存的访问,则DAX地址转换缓存应进行响应,将数据传输至CPU。否则由Cache将数据传输至CPU,或报错。因此,在DAX地址转换缓存和Cache之间应设置仲裁逻辑,DAX地址转换缓存的响应拥有更高优先级,应当优先传输DAX地址转换缓存发送的数据。

地址转换函数是开发人员编写的,地址转换函数利用DAX缓存来提高函数的执行速度。通常这个函数需要查询一个软件维护的cache,然后决定如何进行地址转换。本发明相当于把软件维护的cache挪到了硬件上。地址转换函数应执行以下流程:

1.写FID寄存器,将持久化地址内文件编号写入该寄存器。文件编号不得为0,除此之外没有特殊要求。因此各开发库可自由选择如何生成文件编号。其中,地址内文件编号由上层开发者决定,这个文件编号只是一个64bit的整型。目前Intel开发的PMDK就是用的文件编号+文件内偏移的方式来管理对象的。这里的FID就是PMDK里的文件编号,OFS就是文件内偏移。

2.写OFS寄存器,将持久化地址内对象偏移写入该寄存器。对象偏移不得为0,除此之外没有特殊要求。

3.读DAX地址转换缓存内地址转换表。此时DAX地址转换缓存将通过FID内存储的数据检索地址转换表,如果发现匹配项,则将其对应的首地址和OFS寄存器内数据相加,将所得结果作为对地址转换函数读请求的响应。

4.检查所读数据是否为0,若不为0,地址转换结束;若为0,执行下一步。

5.写MFA寄存器,将映射文件的首地址填入该寄存器。编程的时候,访问NVM的第一步就是进行文件映射,这个时候就可以拿到映射文件的首地址。

6.向DAX地址转换缓存写0。DAX地址转换缓存收到写请求后,通过替换算法将FID和MFA内数据填入地址转换表中。

7.地址转换函数结束。

DTLB(Direct access TLB)与Cache之间的仲裁:

前文以及,当TLB完成地址转换后,所得物理地址应当同时送往DTLB与Cache,并对DTLB和Cache的响应进行仲裁,优先将DTLB的响应传送至CPU。图3展示了为完成这样的仲裁,应当采用的硬件结构。

测评。由于目前向CPU中添加该组件是不切实际的,因此测评采用模拟的方式进行。本发明选用gem5模拟器。该模拟器模拟了不同架构CPU,包括X86,ARM等。提供了全系统模拟和系统中断模拟两种模式。由于本发明在用户态工作,因此不需要运行操作系统,故使用系统中断模拟模式。

在测试中,本发明使用Intel开发维护的PMDK库内的pmemobj_direct地址转换函数和自行编写的调用DAX地址转换缓存的地址转换函数进行比较,分别在使用单一内存池和多个内存池的条件下,对800万持久化对象进行地址转换。各自耗时(单位:秒)如图4所示。

对现有系统造成的影响:

为了评估增加DAX地址转换缓存对现有系统将造成何种影响,需要对已有的计算机系统中各个组件的性能做出评估。

目前,TLB可在1时钟周期内完成响应,Cache可在5个时钟周期内完成响应。则理论上当指令完成译码,进入执行阶段后,数据最快在6个时钟周期后才可送往CPU。目前

可查找的资料显示,一级Cache命中率高达95%,配合二级Cache,可实现97%命中率。因此可以估算访存平均延迟为9个时钟周期。若将DAX地址转换缓存之间添加至TLB与Cache之间,每次访存都将增加一个时钟周期,以仲裁是否将物理地址传输至Cache,使得普通访存指令遭受额外的1时钟周期延迟,性能下降约20%。因此,本文在设计中强调,TLB应当将物理地址同时送往Cache和DAX地址转换缓存,并通过仲裁逻辑选择响应访存请求的数据,而不能按序送往DAX地址转换缓存,而后送往Cache。

以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。

本发明还提供了一种DAX设备地址转换缓存系统,其中包括:

模块1、构建由映射文件首地址寄存器MFA、对象偏移寄存器OFS、文件编号寄存器FID和地址转换表构成的DAX地址转换缓存;

模块2、根据地址转换函数,将持久化地址内文件编号和持久化地址内对象偏移分别写入该文件编号寄存器和该对象偏移寄存器;

模块3、快表将CPU发出的虚拟地址转换为物理地址,DAX地址转换缓存将通过该文件编号寄存器内存储的数据检索该地址转换表,将检索结果对应的首地址和对象偏移寄存器内数据相加,得到直接访问地址,并将该直接访问地址作为该虚拟地址的转换结果反馈给CPU。

所述的DAX设备地址转换缓存系统,其中该模块3包括:

模块31、若该直接访问地址为0,地址转换函数将映射文件的首地址填入该映射文件首地址寄存器,并向DAX地址转换缓存写0,DAX地址转换缓存收到写请求后,通过替换算法将文件编号寄存器和映射文件首地址寄存器内数据填入地址转换表中。

所述的DAX设备地址转换缓存系统,其中还包括:

模块4、将物理地址发送至高速缓冲存储器,将该高速缓冲存储器中物理地址对应的数据作为响应结果,判断该直接访问地址是否有效,若是,则将直接访问地址反馈给CPU,否则将该响应结果反馈给CPU。

所述的DAX设备地址转换缓存系统,其中该地址转换表为32个寄存器对。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于描述符表的参数加载方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类