CN115168259B - 一种数据存取方法、装置、设备和计算机可读存储介质 - Google Patents
一种数据存取方法、装置、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115168259B CN115168259B CN202211081605.9A CN202211081605A CN115168259B CN 115168259 B CN115168259 B CN 115168259B CN 202211081605 A CN202211081605 A CN 202211081605A CN 115168259 B CN115168259 B CN 115168259B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- block
- target
- cache block
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000015654 memory Effects 0.000 claims abstract description 116
- 238000012545 processing Methods 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 230000005856 abnormality Effects 0.000 claims description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 52
- 238000010586 diagram Methods 0.000 description 24
- 238000004364 calculation method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及计算机技术领域,公开了一种数据存取方法、装置、设备和计算机可读存储介质,在主机侧创建与加速卡内存容量匹配的缓存池;缓存池中包含按照设定的容量单位划分的缓存块。在获取到目标数据的读取指令的情况下,从缓存池中调用与目标数据的容量匹配的目标缓存块,将目标数据存储至目标缓存块。记录目标缓存块的元信息,并对目标缓存块设置写保护。依据各缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息,可以避免主机侧与加速卡之间相同数据的重复传输。缓存块为连续的大块内存,所需的传输描述符少,可一次性连续传输大量数据,提升了带宽利用率,提高了数据传输效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存取方法、装置、设备和计算机可读存储介质。
背景技术
文件***用于管理磁盘上的数据块,当磁盘进行格式化后,文件***便按照固定的格式将数据在磁盘上进行写入和读出。由于内存的访问带宽远大于磁盘,根据CPU(Central Processing Unit / Processor,中央处理器)访问数据的局部性原理,文件***会将CPU最近访问的磁盘数据块,在内存进行缓存称为文件缓存。当CPU再次访问相同位置的文件块,便不再从磁盘中读取,而是直接将文件缓存中的数据返回给CPU,从而提高***的整体性能。
随着人工智能、大数据的发展,传统架构下依赖CPU进行运算的模式难以满足新业务对计算机算力的需求。为了解决传统架构下算力不足的问题,近年来业界普遍采用GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、ASCI(Application Specific Integrated Circuit,集成电路)等加速卡,以异构计算的方式实现***整体性能的提升。
图1为现有技术提供的一种异构计算平台的结构示意图,异构计算方式中将数据从磁盘中读取到文件缓存后,再发送到加速卡进行计算,最后将计算完的结果从加速卡中读取到***内存。由于加速卡对特定数据的算力远远超过CPU算力,因此通过异构计算方式能够显著的提高***的整体性能。
但是异构计算方式需要将文件缓存中的数据传输到加速卡中,再从加速卡中取出计算完成的数据,引入了数据来回搬运的开销,降低了使用异构计算所能获得的性能收益。传统的文件***缓存,按照4KB大小页面管理内存,文件分割为多个4KB大小的数据块再进行缓存。DMA(Direct Memory Access,直接存储访问)传输前,需要以4KB为单位,逐个遍历所有页面进行内存锁定,耗时较长。同时一个描述符只能描述4KB大小,加速卡一次只能获取4KB数据,限制了DMA的传输带宽。由于数据块在内存中是不连续的随机分布,因此需要以4K为单位,给每一个页面都构建一个DMA描述符,过多的描述符创建导致耗时较长。
针对缓存块小且不连续所导致的DMA传输效率低的问题,提出了预先申请大块连续内存的方式,图2为现有技术提供的一种基于连续内存的异构计算平台的结构示意图,对于文件页面的操作过程包括①主机侧从磁盘读取的数据在操作***的文件缓存中缓存。②CPU将文件缓存中的数据块拷贝到连续的匿名页中。③将匿名页中的数据发送至加速卡。由于匿名页面是连续的大块内存,因此DMA描述符的构建很快,加速卡一次获取大块内存DMA带宽也相应提高。④加速卡计算完成后,主机侧从加速卡中获取计算的结果。测试发现,虽然步骤③使用连续内存,大幅提高了DMA数据发送效率,但步骤②中的拷贝操作仍会引入较大的延迟。
预先申请大块连续内存的方式虽然减少了DMA描述符创建时间,提高了加速卡DMA带宽。但是该实现方式仅适用于匿名页的场景,对文件页面存在拷贝开销,影响了整体性能。并且目前的文件***缓存管理机制中,并不管理加速卡内的数据。由于加速卡内的数据并不与文件存在对应关系,因此即使加速卡在上次计算中已经缓存了文件数据块,下一次计算需要的文件数据,仍需要从主机侧传输到加速卡中,造成了重复传输,浪费了大量传输带宽。
可见,如何提升带宽利用率,降低数据传输延迟,是本领域技术人员需要解决的问题。
发明内容
本申请实施例的目的是提供一种数据存取方法、装置、设备和计算机可读存储介质,可以提升带宽利用率,降低数据传输延迟。
为解决上述技术问题,本申请实施例提供一种数据存取方法,包括:
在主机侧创建与加速卡内存容量匹配的缓存池;其中,所述缓存池中包含按照设定的容量单位划分的缓存块;
在获取到目标数据的读取指令的情况下,从所述缓存池中调用与所述目标数据的容量匹配的目标缓存块,将所述目标数据存储至所述目标缓存块;
记录所述目标缓存块的元信息,并对所述目标缓存块设置写保护;其中,所述元信息包括所述目标数据所属的文件号、所述目标数据的长度、所述目标数据的地址信息,以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息;
依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息;其中,所述状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识。
可选地,在主机侧创建与加速卡内存容量匹配的缓存池之后还包括:
创建空闲链表和缓存链表;所述空闲链表用于存放未使用的缓存块,所述缓存链表用于存放已使用的缓存块;
相应的,所述在获取到目标数据的读取指令的情况下,从所述缓存池中调用与所述目标数据的容量匹配的目标缓存块,将所述目标数据存储至所述目标缓存块包括:
在获取到目标数据的读取指令的情况下,从所述空闲链表和所述缓存链表中选取与所述目标数据的容量相匹配的目标缓存块,将所述目标数据存储至所述目标缓存块;其中,所述目标缓存块存放至所述缓存链表中。
可选地,所述从所述空闲链表和所述缓存链表中选取与所述目标数据的容量相匹配的目标缓存块,将所述目标数据存储至所述目标缓存块包括:
在所述空闲链表不为空的情况下,将所述空闲链表中的一个空闲缓存块存放至所述缓存链表;
在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块,将所述第一数据块存储至所述空闲缓存块;建立所述第一数据块的物理地址和虚拟地址的映射关系;
在所述空闲链表为空的情况下,从所述缓存链表中释放一个可用缓存块,在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块,将所述第二数据块存储至所述可用缓存块;建立所述第二数据块的物理地址和虚拟地址的映射关系;直至所述目标数据划分的所有数据块均存储至目标缓存块,则结束操作。
可选地,所述从所述缓存链表中释放一个可用缓存块包括:
依据缓存链表的替换算法,从所述缓存链表中选出一个可用缓存块;
将所述可用缓存块中的原有数据回写到磁盘。
可选地,所述记录所述目标缓存块的元信息包括:
记录所述目标数据的文件号、所述目标数据的长度、所述目标数据在文件中的偏移量、用于指示所述目标数据所在目标缓存块的源地址、与所述源地址相对应的加速卡的目的地址以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息。
可选地,所述调整执行数据存取操作后的缓存块的状态信息包括:
在将所述目标数据传输至所述加速卡之后,将所述状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据一致的标识。
可选地,所述依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息包括:
在接收到目标数据修改指令的情况下,修改所述目标缓存块中存储的目标数据,并将所述状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据不一致的标识。
可选地,在主机侧创建与加速卡内存容量匹配的缓存池之后还包括:
对所述缓存池的缓存块进行内存锁定。
可选地,在主机侧创建与加速卡内存容量匹配的缓存池之后还包括:
在接收到第一数据的加速处理指令的情况下,判断所述第一数据是否被所述缓存池缓存;
在所述第一数据未被所述缓存池缓存的情况下,将所述第一数据从磁盘载入所述缓存池;将所述缓存池中的第一数据添加至DMA发送链表;
依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符;
向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据。
可选地,所述在接收到第一数据的加速处理指令的情况下,判断所述第一数据是否被所述缓存池缓存包括:
在接收到第一数据的加速处理指令的情况下,依据所述第一数据的文件号和数据量,构建文件信息链表;
将所述第一数据按照设定的容量单位划分为文件块;
遍历所述文件信息链表的文件块,判断当前文件信息链表是否为空;
在所述当前文件信息链表不为空的情况下,判断当前文件块是否被所述缓存池缓存;
相应的,所述在所述第一数据未被所述缓存池缓存的情况下,将所述第一数据从磁盘载入所述缓存池;将所述缓存池中的第一数据添加至DMA发送链表包括:
在所述当前文件块未被所述缓存池缓存的情况下,将所述当前文件块从磁盘载入所述缓存池;将所述缓存池中的当前文件块添加至DMA发送链表;
直至所述当前文件信息链表为空的情况下,执行所述依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符的步骤。
可选地,还包括:
在当前文件块被所述缓存池缓存的情况下,判断缓存所述当前文件块的当前缓存块所对应的状态信息是否为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识;
在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据不一致的标识的情况下,将所述缓存池中的当前文件块添加至DMA发送链表;
在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识的情况下,跳过所述当前文件块。
可选地,在所述向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据之后还包括:
将所述缓存池中的第一数据对应的状态信息调整为用于表征所述加速卡和所述缓存池中第一均存储数据且数据一致的标识;
对所述第一数据所在的缓存块设置写保护。
本申请实施例还提供了一种数据存取装置,包括创建单元、存储单元、记录单元、写保护设置单元和调整单元;
所述创建单元,用于在主机侧创建与加速卡内存容量匹配的缓存池;其中,所述缓存池中包含按照设定的容量单位划分的缓存块;
所述存储单元,用于在获取到目标数据的读取指令的情况下,从所述缓存池中调用与所述目标数据的容量匹配的目标缓存块,将所述目标数据存储至所述目标缓存块;
所述记录单元,用于记录所述目标缓存块的元信息;其中,所述元信息包括所述目标数据所属的文件号、所述目标数据的长度、所述目标数据的地址信息,以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息;
所述写保护设置单元,用于对所述目标缓存块设置写保护;
所述调整单元,用于依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息;其中,所述状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识。
可选地,还包括链表创建单元;
所述链表创建单元,用于创建空闲链表和缓存链表;所述空闲链表用于存放未使用的缓存块,所述缓存链表用于存放已使用的缓存块;
相应的,所述存储单元用于在获取到目标数据的读取指令的情况下,从所述空闲链表和所述缓存链表中选取与所述目标数据的容量相匹配的目标缓存块,将所述目标数据存储至所述目标缓存块;其中,所述目标缓存块存放至所述缓存链表中。
可选地,所述存储单元包括存放子单元、第一读取子单元、第一存储子单元、第一建立子单元、释放子单元、第二读取子单元、第二存储子单元、第二建立子单元;
所述存放子单元,用于在所述空闲链表不为空的情况下,将所述空闲链表中的一个空闲缓存块存放至所述缓存链表;
所述第一读取子单元,用于在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块;
所述第一存储子单元,用于将所述第一数据块存储至所述空闲缓存块;
所述第一建立子单元,用于建立所述第一数据块的物理地址和虚拟地址的映射关系;
所述释放子单元,用于在所述空闲链表为空的情况下,从所述缓存链表中释放一个可用缓存块;
所述第二读取子单元,用于在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块;
所述第二存储子单元,用于将所述第二数据块存储至所述可用缓存块;
所述第二建立子单元,用于建立所述第二数据块的物理地址和虚拟地址的映射关系;直至所述目标数据划分的所有数据块均存储至目标缓存块,则结束操作。
可选地,所述从所述释放子单元依据缓存链表的替换算法,从所述缓存链表中选出一个可用缓存块;将所述可用缓存块中的原有数据回写到磁盘。
可选地,所述记录单元用于记录所述目标数据的文件号、所述目标数据的长度、所述目标数据在文件中的偏移量、用于指示所述目标数据所在目标缓存块的源地址、与所述源地址相对应的加速卡的目的地址以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息。
可选地,所述调整单元,用于在将所述目标数据传输至所述加速卡之后,将所述状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据一致的标识。
可选地,所述调整单元,用于在接收到目标数据修改指令的情况下,修改所述目标缓存块中存储的目标数据;将所述目标缓存块的状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据不一致的标识。
可选地,还包括锁定单元;
所述锁定单元,用于对所述缓存池的缓存块进行内存锁定。
可选地,还包括数据缓存判断单元、载入单元、添加单元、生成单元和发送单元;
所述数据缓存判断单元,用于在接收到第一数据的加速处理指令的情况下,判断所述第一数据是否被所述缓存池缓存;
所述载入单元,用于在所述第一数据未被所述缓存池缓存的情况下,将所述第一数据从磁盘载入所述缓存池;
所述添加单元,用于将所述缓存池中的第一数据添加至DMA发送链表;
所述生成单元,用于依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符;
所述发送单元,用于向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据。
可选地,所述数据缓存判断单元包括构建子单元、划分子单元、第一判断子单元、第二判断子单元;
所述构建子单元,用于在接收到第一数据的加速处理指令的情况下,依据所述第一数据的文件号和数据量,构建文件信息链表;
所述划分子单元,用于将所述第一数据按照设定的容量单位划分为文件块;
所述第一判断子单元,用于遍历所述文件信息链表的文件块,判断当前文件信息链表是否为空;
所述第二判断子单元,用于在所述当前文件信息链表不为空的情况下,判断当前文件块是否被所述缓存池缓存;
相应的,所述载入单元,用于在所述当前文件块未被所述缓存池缓存的情况下,将所述当前文件块从磁盘载入所述缓存池;将所述缓存池中的当前文件块添加至DMA发送链表;直至所述当前文件信息链表为空的情况下,触发所述生成单元执行所述依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符的步骤。
可选地,还包括标识判断单元和跳过单元;
所述标识判断单元,用于在当前文件块被所述缓存池缓存的情况下,判断缓存所述当前文件块的当前缓存块所对应的状态信息是否为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识;
所述添加单元,用于在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据不一致的标识的情况下,将所述缓存池中的当前文件块添加至DMA发送链表;
所述跳过单元,用于在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识的情况下,跳过所述当前文件块。
可选地,所述调整单元还用于在所述向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据之后,将所述缓存池中的第一数据对应的状态信息调整为用于表征所述加速卡和所述缓存池中第一均存储数据且数据一致的标识;
所述写保护设置单元还用于对所述第一数据所在的缓存块设置写保护。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述数据存取方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据存取方法的步骤。
由上述技术方案可以看出,在主机侧创建与加速卡内存容量匹配的缓存池;其中,缓存池中包含按照设定的容量单位划分的缓存块;缓存块可以实现对数据的缓存,缓存块与加速卡相对应,缓存块的数据可以传输至加速卡。缓存池的容量和加速卡内存容量相匹配,可以实现对大量数据的缓存,基于单次数据的传输需求设定容量单位,可以有效的解决单次传输数据量过小造成传输带宽浪费的问题。在获取到目标数据的读取指令的情况下,可以从缓存池中调用与目标数据的容量匹配的目标缓存块,将目标数据存储至目标缓存块。缓存池的数据可以传输至加速卡,主机侧可以记录目标缓存块的元信息,并对目标缓存块设置写保护;其中,元信息可以包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征目标缓存块与加速卡的数据同步状态的状态信息。依据各缓存块中数据所执行的操作,调整各缓存块的状态信息;状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均均存储数据且数据不一致的标识。在该技术方案中,通过在主机侧创建与加速卡内存容量匹配的缓存池,并且将缓存池按照设定的容量单位划分成多个缓存块,缓存块为连续的大块内存,所需的传输描述符少,可一次性连续传输大量数据,提升了带宽利用率,提高了数据传输效率。从磁盘读取的数据可以直接放入缓存池中,缓存池的数据可以直接传输至加速卡中,对于主机侧而言,目标数据直接缓存到预分配的缓存池中,向加速卡传输时无需额外的内存拷贝操作,有效的降低了数据的传输延迟。对于加速卡已缓存且内容一致的数据,无需重复传输,节省了传输时间并提高了执行效率。并且通过对写入数据的目标缓存块设置写保护,可以在目标缓存块中的数据发生变化时,实现对状态信息的动态调整,使得主机侧依据状态信息可以清楚的获知缓存池中数据和加速卡中数据是否同步,从而避免相同数据的重复传输。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的一种异构计算平台的结构示意图;
图2为现有技术提供的一种基于连续内存的异构计算平台的结构示意图;
图3为本申请实施例提供的一种数据存取方法的流程图;
图4为本申请实施例提供的一种文件***缓存架构图;
图5为本申请实施例提供的一种元信息的示意图;
图6为本申请实施例提供的一种主机侧缓冲池缓存数据的示意图;
图7为本申请实施例提供的一种从空闲链表和缓存链表中选取目标缓存块以存储目标数据的方法的流程图;
图8为本申请实施例提供的一种空闲缓存块存储数据的示意图;
图9为本申请实施例提供的一种可用缓存块存储数据的示意图;
图10为本申请实施例提供的一种修改缓存块数据的示意图;
图11为本申请实施例提供的一种向加速卡传输数据的方法的流程示意图;
图12为本申请实施例提供的一种查询薪资总支出的示意图;
图13为本申请实施例提供的一种查询公司职位数量的示意图;
图14为本申请实施例提供的一种修改薪资表的示意图;
图15为本申请实施例提供的一种查询博士以上学历的示意图
图16为本申请实施例提供的一种数据存取装置的结构示意图;
图17为本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
接下来,详细介绍本申请实施例所提供的一种数据存取方法。图3为本申请实施例提供的一种数据存取方法的流程图,该方法包括:
S301:在主机侧创建与加速卡内存容量匹配的缓存池。
在本申请实施例中,为了降低主机侧内部数据拷贝花费的时间,可以在主机侧的内存中划分出与加速卡内存容量匹配的内存空间,将划分出的内存空间作为缓存池,缓存池实现与加速卡之间的数据传输。
在具体实现中,可以在主机侧创建与加速卡内存容量相同的缓存池。例如,加速卡内存为8GB,则可以在主机侧内存中划分出8GB内存作为缓存池。
在实际应用中,为了提升缓存池的空间利用率,便于数据的单次传输,可以设置容量单位。将缓存池按照设定的容量单位划分为多个缓存块。
在本申请实施例中,可以针对于不同的缓存块设置不同的容量单位,也可以将所有缓存块按照相同的容量单位划分。对于容量单位的取值不做限定,例如,容量单位可以均设置为8MB。
以所有缓存块按照相同的容量单位划分为例,假设加速卡内存为8GB,容量单位为8MB,8GB/8MB=1024,则可以在主机侧设置1024个缓存块。
图4为本申请实施例提供的一种文件***缓存架构图,图4中包括磁盘、主机侧和加速卡三部分。为了便于展示,图4中以4个缓存块为例,箭头表示了数据的传输方向。以一个数据块为例,主机侧与加速卡之间数据传输可以分为如下4种情况:(1)主机侧未缓存该数据块。(2)主机侧缓存了该数据块,但加速卡内没有缓存。(3)主机侧与加速卡均缓存了该数据块,但主机侧数据被修改,导致主机侧与加速卡缓存的数据不一致。(4)主机侧与加速卡均缓存,且一致。
针对于第一种情况,为了实现主机侧和加速卡数据的一致,可以从磁盘中读取数据到缓存池的缓存块中,将缓存的数据发送至加速卡内存中,并修改缓存块的状态信息为:主机与加速卡均缓存,且一致。
针对于第二种情况,为了实现主机侧和加速卡数据的一致,可以将缓存块的数据发送至加速卡内,并修改缓存块的状态信息为:主机与加速卡均缓存,且一致。
针对于第三种情况,为了实现主机侧和加速卡数据的一致,可以将缓存块的数据发送至加速卡内,并修改缓存块的状态信息为:主机与加速卡均缓存,且一致。
针对于第四种情况,主机侧和加速卡数据一致,因此无需对该缓存块进行传输操作,避免了重复数据的传输,减少了对带宽的占用。
S302:在获取到目标数据的读取指令的情况下,从缓存池中调用与目标数据的容量匹配的目标缓存块。
初始状态下,缓存池未存储数据,数据均位于磁盘中,在获取到目标数据的读取指令的情况下,需要从磁盘中读取目标数据,为了实现对目标数据的缓存,需要从缓存池中调用与目标数据的容量匹配的目标缓存块。
以每个缓存块容量为8MB为例,假设目标数据的数据量为15MB,此时需要两个缓存块才可以容纳目标数据。为了便于区分,为了将用于缓存目标数据的缓存块称作目标缓存块。
S303:将目标数据存储至目标缓存块,记录目标缓存块的元信息,并对目标缓存块设置写保护。
为了使得主机侧可以准确的获取缓存池中存储的数据与加速卡中存储的数据的同步状态,可以针对于每个目标缓存块设置元信息,元信息可以包括用于表征目标缓存块与加速卡的数据同步状态的状态信息,目标数据所属的文件号、目标数据的长度、目标数据的地址信息。
目标数据的地址信息可以包括目标数据在文件中的偏移量、目标数据在缓存池的源地址、与源地址对应的加速卡的目的地址等。
在实际应用中,一个完整的文件可能需要多个缓存块才能容纳,此时可以将文件按照每个缓存块的容量,划分为多个目标数据,将每个目标数据存储至对应容量的缓存块中,为了便于区分各目标数据的前后顺序,可以在元信息中添加块编号。
此外,为了了解数据在缓存块中存储时间的长短,以支持缓存链表的替换算法(Least Recently Used,LRU),可以在元信息中添加时间戳,以缓存块写入目标数据的时间作为时间戳。
图5为本申请实施例提供的一种元信息的示意图,图5中以每个缓存块容量为8MB为例,每个缓存块有其对应的一个元信息,元信息可以包括块编号、同步状态、源地址、目的地址、文件号、长度、偏移和时间戳这8个元素。每个元素有其对应的存储空间,如可以采用4字节即4B记录块编号,采用8字节记录源地址等。在实际应用中,也可以根据需求,对元信息中包含的元素进行增加或删减,图5中关于元信息中包含的元素仅为举例说明,并不对元信息中包含的元素造成限定。
以每个缓存块的容量为8MB为例,假设加速卡内有8GB内存,则主机侧申请1024个缓存块,每个缓存块的物理内存地址连续。将所有的缓存块在内存中锁定,可以通过修改页面标志位,标记所有页面不可换出到磁盘。为了实现缓存池中缓存块与加速卡内存的对应,可以将加速卡内存以8MB为单位,划分为1024个内存块,主机侧缓存块中源地址写入数据区域的地址,目的地址写入加速卡内存块偏移。
S304:依据各缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息。
考虑到实际应用中,主机侧的缓存池与加速卡之间数据同步状态可以包含4种情况,第一种情况是缓存池和加速卡均未缓存数据;第二种情况是缓存池缓存了数据,加速卡未缓存数据;第三种情况是缓存池和加速卡均存储数据且数据一致;第四种情况是缓存池和加速卡均存储数据且数据不一致。
缓存池按照设定的容量单位可以划分成多个缓存块,每个缓存块为一个连续的大块内存,数据传输以缓存块为基本传输单元,针对于每个缓存块会设置其对应的状态信息。结合主机侧的缓存池与加速卡之间数据同步状态包含的4种情况,状态信息可以包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识。
图6为本申请实施例提供的一种主机侧缓冲池缓存数据的示意图,图6中加速卡内存是以8MB为单位,划分为1024个加速卡内存块,主机侧相对应的划分有1024个缓存块,每个缓存块的数据区域8MB大小,物理内存地址连续。将缓存块放入空闲链表中。将所有的缓存块在内存中锁定,通过修改页面标志位,标记所有页面不可换出到磁盘。主机侧缓存块中源地址写入数据区域的地址,目的地址写入加速卡内存块偏移。
缓存池中包含有多个缓存块,缓存池中的一些缓存块存储有数据后,当有新的数据需要缓存时,需要从缓存池选取空闲缓存块,用于存储新的数据。为了方便对缓存块的调用,在本申请实施例中,在主机侧创建与加速卡内存容量匹配的缓存池之后,可以创建空闲链表和缓存链表;空闲链表用于存放未使用的缓存块,缓存链表用于存放已使用的缓存块。
相应的,在获取到目标数据的读取指令的情况下,可以从空闲链表和缓存链表中选取与目标数据的容量相匹配的目标缓存块;选取出的目标缓存块用于存储目标数据,因此可以将目标缓存块存放至缓存链表中。
缓存链表中的缓存块均存储有数据,空闲链表中缓存块属于未被使用的空闲缓存块,在实际应用中,会存在空闲链表中空闲缓存块容纳空间不足的问题,此时需要从缓存链表中释放部分缓存块,以保证数据的顺利缓存。
由上述技术方案可以看出,在主机侧创建与加速卡内存容量匹配的缓存池;其中,缓存池中包含按照设定的容量单位划分的缓存块;缓存块可以实现对数据的缓存,缓存块与加速卡相对应,缓存块的数据可以传输至加速卡。缓存池的容量和加速卡内存容量相匹配,可以实现对大量数据的缓存,基于单次数据的传输需求设定容量单位,可以有效的解决单次传输数据量过小造成传输带宽浪费的问题。在获取到目标数据的读取指令的情况下,可以从缓存池中调用与目标数据的容量匹配的目标缓存块,将目标数据存储至目标缓存块。缓存池的数据可以传输至加速卡,主机侧可以记录目标缓存块的元信息,并对目标缓存块设置写保护;其中,元信息可以包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征目标缓存块与加速卡的数据同步状态的状态信息。依据各缓存块中数据所执行的操作,调整各缓存块的状态信息;状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均均存储数据且数据不一致的标识。在该技术方案中,通过在主机侧创建与加速卡内存容量匹配的缓存池,并且将缓存池按照设定的容量单位划分成多个缓存块,缓存块为连续的大块内存,所需的传输描述符少,可一次性连续传输大量数据,提升了带宽利用率,提高了数据传输效率。从磁盘读取的数据可以直接放入缓存池中,缓存池的数据可以直接传输至加速卡中,对于主机侧而言,目标数据直接缓存到预分配的缓存池中,向加速卡传输时无需额外的内存拷贝操作,有效的降低了数据的传输延迟。对于加速卡已缓存且内容一致的数据,无需重复传输,节省了传输时间并提高了执行效率。并且通过对写入数据的目标缓存块设置写保护,可以在目标缓存块中的数据发生变化时,实现对状态信息的动态调整,使得主机侧依据状态信息可以清楚的获知缓存池中数据和加速卡中数据是否同步,从而避免相同数据的重复传输。
传统方式中,操作***会将物理内存划分为固定大小的页面(通常为4KB),按页面大小进行管理。每个页面都有一个标志位,表示该内存是否可以暂存到磁盘中。对于可以暂存到磁盘的内存页面,在操作***内存不足时,会将页面中的数据写入磁盘中,从而腾出空闲页面给其它进程使用,该操作称为页面换出。在异构计算场景中,为了保障将数据从主机侧传输到加速卡过程中,页面不会被意外的换出到磁盘,需要修改相应页面的标志位为不可换出,该操作称为页面锁定。
为了避免缓存池被其它应用占用,或者缓存池中的数据被无故释放回磁盘,在本申请实施例中,可以在主机侧创建与加速卡内存容量匹配的缓存池之后,对缓存池的缓存块进行内存锁定,防止其它进程占用或内存页面交换到磁盘中。
图7为本申请实施例提供的一种从空闲链表和缓存链表中选取目标缓存块以存储目标数据的方法的流程图,该方法包括:
S701:判断空闲链表是否为空。
在本申请实施例中,空闲链表中包含的是未被使用的空闲缓存块。在需要缓存数据时,优先从空闲链表中选取用于缓存数据的空闲缓存块。
在执行目标数据的缓存时,需要判断空闲链表是否为空。
在空闲链表不为空的情况下,说明可以从空闲链表中选取空闲缓存块存储数据,此时可以执行S702;在空闲链表为空的情况下,需要从缓存链表中释放可用缓存块以用于存储数据,即执行S705。
S702:将空闲链表中的一个空闲缓存块存放至缓存链表。
选取出的空闲缓存块需要存储目标数据,为了便于缓存块的管理,可以将选取出的空间缓存块存放至缓存链表,以便于将目标数据存储至缓存链表的空闲缓存块中。
S703:在访问目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块,将第一数据块存储至空闲缓存块。
文件***中每个文件都有唯一的文件号即索引号。操作***根据索引号,可以找到文件在磁盘中的数据块。在CPU访问磁盘文件数据时,如果数据不在内存中,操作***会发生缺页异常。在缺页异常中,CPU硬件会标记导致缺页异常的原因为:没有对应的物理地址。传统方式中操作***会调用文件***的通用缓存申请接口,以4KB为单位申请内存作为文件缓存块,存放磁盘数据,之后建立缓存块物理地址与文件虚拟地址的映射关系。当CPU再次访问文件数据时,便不会发生没有物理地址的缺页异常。
在本申请实施例中,在获取目标数据时,会按照4KB的大小读取数据,在当前读取的数据发生缺页异常的情况,可以按照设定的容量单位读取当前数据所对应的数据块,可以将该数据块称作第一数据块。
第一数据块可以是目标数据中的部分或全部数据。例如,目标数据为7MB,当前读取的数据属于0~7MB之间的数据,此时可以将0~7MB的目标数据作为第一数据块。又例如,目标数据为15MB,当前读取的数据属于0~8MB(不包括第8MB)之间的数据,此时可以将目标数据中0~8MB的数据作为第一数据块。又或者当前读取的数据属于8~15MB(包括第8MB)之间的数据,此时可以将目标数据中8~15MB的数据作为第一数据块。
在访问目标数据发生缺页异常的情况下,主机侧会从磁盘中读取第一数据块,将第一数据块存储至空闲缓存块。
S704:建立第一数据块的物理地址和虚拟地址的映射关系。
在将第一数据块存储至空闲缓存块后,可以建立物理地址和虚拟地址的映射关系。
在空闲缓存块存储第一数据块后,可以记录第一数据块的文件号、第一数据块的长度、第一数据块在文件中的偏移量、用于指示第一数据块所在空闲缓存块的源地址、与源地址相对应的加速卡的目的地址以及用于表征空闲缓存块与加速卡的数据同步状态的状态信息。
S705:从缓存链表中释放一个可用缓存块,在访问目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块,将第二数据块存储至可用缓存块。
在空闲链表为空情况下,说明需要从缓存链表中释放部分缓存块,以保证目标数据的顺利缓存。
在本申请实施例中,从缓存链表中释放一个可用缓存块可以是从缓存链表中选取数据存储时间最久的一个缓存块,将该缓存块的数据回写到磁盘,此时该缓存块为空,为了便于区分,可以将该缓存块称作可用缓存块。
在具体实现中,可以依据缓存链表的替换算法(Least Recently Used,LRU)从缓存链表中选出一个可用缓存块;将可用缓存块中的原有数据回写到磁盘。
举例说明,假设目标数据的容量为15MB,每个缓存块的容量为8MB,空闲链表中包含有一个空闲缓存块,缓存链表中所有缓存块均存储有数据,此时为了存储目标数据,可以将空闲链表中的空闲缓存块存放至缓存链表中,该空闲缓存块可以存储8MB数据,对于剩余的7MB数据,则需要从缓存链表中释放一个可用缓存块,从而利用释放得到的一个可用缓存块存储剩余的7MB数据,从而实现目标数据的顺利存储。
S706:建立第二数据块的物理地址和虚拟地址的映射关系。
在将第二数据块存储至可用缓存块后,可以建立第二数据块的物理地址和虚拟地址的映射关系。
在可用缓存块存储第二数据块后,可以记录第二数据块的文件号、第二数据块的长度、第二数据块在文件中的偏移量、用于指示第二数据块所在可用缓存块的源地址、与源地址相对应的加速卡的目的地址以及用于表征可用缓存块与加速卡的数据同步状态的状态信息。
S707:判断目标数据划分的所有数据块是否均存储至目标缓存块。
在目标数据中仍有部分数据块未存储至目标缓存块的情况下,则返回S701,直至目标数据划分的所有数据块均存储至目标缓存块的情况下,则结束操作。
以每个缓存块容量为8MB为例,假设一个文件大小为15MB,文件没有被缓存,缓存池内空闲链表剩余一个空闲缓存块,文件会按照8MB分割为2个数据块。图8为本申请实施例提供的一种空闲缓存块存储数据的示意图,第一个数据块读取过程如图8所示,包括:①从空闲链表中取出一个空闲缓存块,将该空闲缓存块放入缓存链表中;图8中带箭头的虚线表示将该空闲缓存块放入缓存链表。②从磁盘中读取8MB数据存储到该空闲缓存块内。③设置虚拟地址到物理地址映射关系④设置该空闲缓存块中长度为8MB,文件号为对应的索引号,文件偏移为0。⑤标记该空闲缓存块状态为1,表示加速卡内存中尚未缓存该空闲缓存块中存储的数据。⑥将8MB数据区域页表属性设置为写保护。⑦更新时间戳。
图9为本申请实施例提供的一种可用缓存块存储数据的示意图,对于第二个数据块读取过程如图9所示,包括:①根据LRU算法,从缓存链表中选择出一个被替换的缓存块。②将该缓存块的数据回写到磁盘中,此时该缓存块不存在数据,可以将该缓存块称作可用缓存块。③从磁盘中读取7MB数据到该被替换的缓存块中。④设置虚拟地址到物理地址映射关系。⑤设置缓存块中长度为7MB,文件号为对应的索引号,文件偏移为8MB。⑥标记缓存块状态为1,表示加速卡内存中尚未缓存该缓存块中存储的数据。⑦将8MB数据区域页表属性设置为写保护。⑧更新时间戳。
时间戳可以是缓存块写入数据的时间。
需要说明的是,在本申请实施例中,对于每个缓存块对应的元信息可以单独挂载,通过设置指针可以指向对应的缓存块。也可以将元信息与缓存块放置在一块,相应的,可以基于每个元信息占用的存储空间以及加速卡内存容量构建缓存池。
在本申请实施例中,在将目标数据存储至目标缓存块,记录目标缓存块的元信息,并对目标缓存块设置写保护之后,如果涉及到将目标数据向加速卡传输的操作,此时加速卡中的数据和缓存块中的数据变为一致,为了便于操作人员了解加速卡和缓存块的数据同步状态,此时需要对缓存块对应的同步状态进行调整。因此在将目标数据传输至加速卡之后,将状态信息调整为用于表征加速卡和目标缓存块均存储数据且数据一致的标识。例如,状态信息可以采用数字“0”,表示加速卡和目标缓存块数据一致。
通过对缓存块设置写保护,可以检测缓存块中数据***作的行为,从而可以及时更新同步状态。
在实际应用中,会涉及到缓存块中数据进行修改的情况。在内存中的页面数据回写到磁盘后,页面的属性会设置为写保护状态。当CPU对页面数据进行修改时,操作***会发生缺页异常,硬件会在缺页异常中标记导致缺页异常的原因为:对写保护区域执行了写入操作。
传统方式中,操作***在写保护的缺页异常的处理函数内,会设置页面的标志位为脏页,表示内存中的数据与磁盘中的数据不一致。当操作***后台线程将标记为脏页的页面写入磁盘后,会将取消页面的脏页标记,并重新设置页面属性为写保护。
在异构加速场景中,主机侧内存修改后,主机侧缓存块与磁盘、加速卡内存都不一致。操作***后台线程将脏页写入磁盘后,主机侧缓存块与磁盘数据一致,但仍与加速卡内存不一致。
因此在本申请实施例中,会在写保护缺页异常中添加对加速卡缓存块的管理,在缓存块对应的元信息中添加用于表征缓存块与加速卡内存的数据同步状态的状态信息,通过状态信息标记主机侧缓存块与加速卡内存块内容是否一致。
在实际应用中,在主机侧接收到目标数据修改指令的情况下,会修改目标缓存块中存储的目标数据,此时可以一并将状态信息调整为用于表征加速卡和目标缓存块均存储数据且数据不一致的标识。例如,状态信息可以采用数字“2”,表示加速卡和目标缓存块数据不一致。
图10为本申请实施例提供的一种修改缓存块数据的示意图,假设一个15MB的文件,已被缓存池缓存,第一个缓存块存储8MB数据,第二个缓存块存储7MB数据。由于数据页面设置为写保护,对任意15MB数据页面内,发生写操作均会触发缺页异常,***会在缺页异常中标记原因为:对写保护页面发生写操作。本申请实施例中,会在相应的缺页异常处理逻辑中,将缓存块对应的状态信息修改为2,表示加速卡和缓存块数据不一致。
在本申请实施例中,可以将磁盘的数据直接缓存在大块的连续的内存中,通过添加缓存块与加速卡内存数据同步状态的状态信息,可以及时了解加速卡内存与缓存块中数据是否一致,例如,在加速卡内已经存储了缓存块的数据的情况下,此时状态信息为0,表示加速卡和缓存块数据一致。当需要利用加速卡对该数据执行操作时,无需再从缓存块向加速卡传输该数据,减少了不必要的数据传输。
图11为本申请实施例提供的一种向加速卡传输数据的方法的流程示意图,该方法包括:
S1001:在接收到第一数据的加速处理指令的情况下,判断第一数据是否被缓存池缓存。
在本申请实施例中,为了便于和其它数据相区分,可以将当前所需向加速卡传输的数据称作第一数据。
在第一数据未被缓存池缓存的情况下,此时需要从磁盘中读取第一数据,即执行S1002。
在第一数据被缓存池缓存的情况下,需要进一步判断加速卡中是否已经存储了第一数据,即执行S1003。
S1002:将第一数据从磁盘载入缓存池;将缓存池中的第一数据添加至DMA发送链表。
在第一数据未被缓存池缓存的情况下,需要先从磁盘中读取第一数据。
由缓存池向加速卡传输数据时,需要将数据转换为加速卡可识别的格式,在实际应用中可以构建DMA(Direct Memory Access,直接存储访问)发送链表,在需要将缓存池的数据传输至加速卡时,先将缓存池中的第一数据添加至DMA发送链表。
S1003:判断第一数据对应的状态信息是否为用于表征加速卡和缓存池中均存储数据且数据一致的标识。
在第一数据对应的状态信息为用于表征加速卡和缓存池中第一均存储数据且数据不一致的标识的情况下,执行S1004。
在第一数据对应的状态信息为用于表征加速卡和缓存池中均存储数据且数据一致的标识的情况下,说明加速卡中已经存储了第一数据,此时无需再向加速卡传输第一数据,直接结束操作即可。
S1004:将缓存池中的第一数据添加至DMA发送链表。
S1005:依据存储第一数据的缓存块所对应的元信息,生成DMA描述符。
DMA描述符用于指示缓存块中数据的源地址、目的地址和数据长度。DMA描述符属于加速卡可识别的数据格式。
S1006:向加速卡传输DMA描述符,以便于加速卡依据DMA描述符获取DMA发送链表中包含的第一数据。
主机侧向加速卡传输DMA描述符,加速卡可以基于DMA描述符获取到第一数据。
在实际应用中,在向加速卡传输DMA描述符之后,加速卡可以依据DMA描述符获取DMA发送链表中包含的第一数据,此时加速卡和缓存池数据一致。因此在向加速卡传输DMA描述符之后,可以将缓存池中的第一数据对应的状态信息调整为用于表征加速卡和缓存池中均存储数据且数据一致的标识;对第一数据所在的缓存块设置写保护。
在本申请实施例中,磁盘的数据直接缓存在大块的连续的内存中,通过添加缓存块与加速卡内存同步标记即状态信息,减少不必要的数据传输。
考虑到实际应用中,第一数据的数据量往往大于单个缓存块的容量,因此可以在接收到第一数据的加速处理指令的情况下,依据第一数据的文件号和数据量,构建文件信息链表;将第一数据按照设定的容量单位划分为文件块;遍历文件信息链表的文件块,判断当前文件信息链表是否为空;在当前文件信息链表不为空的情况下,判断当前文件块是否被缓存池缓存。
相应的,在当前文件块未被缓存池缓存的情况下,将当前文件块从磁盘载入缓存池;将缓存池中的当前文件块添加至DMA发送链表;直至当前文件信息链表为空的情况下,执行依据存储第一数据的缓存块所对应的元信息,生成DMA描述符的步骤。
在当前文件块被缓存池缓存的情况下,需要判断缓存当前文件块的当前缓存块所对应的状态信息是否为用于表征加速卡和当前缓存块均存储数据且数据一致的标识。
在当前缓存块对应的状态信息为用于表征加速卡和当前缓存块均存储数据且数据不一致的标识的情况下,说明需要向加速卡传输当前文件块,此时可以将缓存池中的当前文件块添加至DMA发送链表。
在当前缓存块对应的状态信息为用于表征加速卡和当前缓存块均存储数据且数据一致的标识的情况下,说明加速卡中已经存储了当前文件块,此时可以跳过当前文件块。直至当前文件信息链表为空,说明所需向加速卡传输的数据已全部添加至DMA发送链表,此时可以依据存储第一数据的缓存块所对应的元信息,生成DMA描述符;向加速卡传输DMA描述符,以便于加速卡依据DMA描述符获取DMA发送链表中包含的第一数据。
通过将第一数据按照单个缓存块的容量划分为多个文件块,可以实现第一数据的快速传输。并且通过设置文件信息链表,保证了所有文件块的传输,避免了遗漏部分数据的情况发生。
举例说明,以数据库访问为例,设数据库中有三个表格:1.薪资表,文件大小32MB,包含字段:员工ID,月度绩效,薪资,奖金;2.职位信息表,文件大小1MB,包含字段:职位ID,职位名称,工作内容;3.员工信息表,文件大小16MB,包含字段:员工ID,姓名,职位ID,电话,学历。
设用户执行如下操作:
1.查询薪资总支出,需要访问薪资表。数据块缓存操作,如图12所示。①从空闲链表中分配4个8MB缓存块,载入磁盘数据;②将缓存块加入的缓存链表中;③根据缓存块中的目的地址,源地址,长度信息构建DMA描述符,将缓存块缓存的数据发送到加速卡内存中,标记同步状态为0,在发送完成后重新设置页面为写保护状态。
2.查询公司职位数量,需要访问职位信息表。由于职位信息表较少,单独查询该表,假设CPU选择不使用异构计算方式,数据块缓存操作,如图13所示。①从空闲链表中分配一个8MB缓存块,从磁盘中读取1MB数据到缓存块内;②将缓存块放入到缓存链表中;③由于该数据表只有1MB,数据较小,假设CPU不选择进行异构计算,设置缓存块的同步标记为1。
3.修改部分员工薪资,需要修改薪资表,CPU修改相关数据块,并修改缓存块标记为与加速卡内存不一致,数据块缓存操作,如图14所示。由于只是修改部分数据,当CPU修改相应页面是会触发缺页异常,在缺页异常中:①修改相应的缓存块标记为2,表示主机侧缓存与加速卡内缓存块数据不一致。
4.查询博士以上学历,从事研发职位的员工平均薪资,需要同时访问员工信息表,职位信息表,薪资表。CPU选择异构计算方式,对于加速卡中已经缓存且与主机侧缓存一致的数据块,不再进行重复发送数据块的操作,如图15所示。①空闲链表中分配2个8MB缓存块,从磁盘中读取数据到缓存块中;②将缓存块加入缓存链表;③构建DMA描述符,将加速卡内未缓存的缓存块,与加速卡数据不一致的缓存块发送至加速卡内,跳过加速卡已经缓存且与主机侧一致的缓存块,修改缓存块同步状态为0,并设置页面为写保护状态。
需要说明的是,本申请实施例提供的数据存取方案同样适用于与存储体系中存在性能差异的场景,例如:一个存储体系中包含:NVME硬盘、机械磁盘、网络存储。容量上依次增加,但性能依次降低,同样可以对数据块添加标记的方式降低重复传输。
图16为本申请实施例提供的一种数据存取装置的结构示意图,包括创建单元151、存储单元152、记录单元153、写保护设置单元154和调整单元155;
创建单元151,用于在主机侧创建与加速卡内存容量匹配的缓存池;其中,缓存池中包含按照设定的容量单位划分的缓存块;
存储单元152,用于在获取到目标数据的读取指令的情况下,从缓存池中调用与目标数据的容量匹配的目标缓存块,将目标数据存储至目标缓存块;
记录单元153,用于记录目标缓存块的元信息;其中,元信息包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征目标缓存块与加速卡的数据同步状态的状态信息;
写保护设置单元154,用于对目标缓存块设置写保护;
调整单元155,用于依据各缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息;其中,状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识。
可选地,还包括链表创建单元;
链表创建单元,用于创建空闲链表和缓存链表;空闲链表用于存放未使用的缓存块,缓存链表用于存放已使用的缓存块;
相应的,存储单元用于在获取到目标数据的读取指令的情况下,从空闲链表和缓存链表中选取与目标数据的容量相匹配的目标缓存块,将目标数据存储至目标缓存块;其中,目标缓存块存放至缓存链表中。
可选地,存储单元包括存放子单元、第一读取子单元、第一存储子单元、第一建立子单元、释放子单元、第二读取子单元、第二存储子单元、第二建立子单元;
存放子单元,用于在空闲链表不为空的情况下,将空闲链表中的一个空闲缓存块存放至缓存链表;
第一读取子单元,用于在访问目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块;
第一存储子单元,用于将第一数据块存储至空闲缓存块;
第一建立子单元,用于建立第一数据块的物理地址和虚拟地址的映射关系;
释放子单元,用于在空闲链表为空的情况下,从缓存链表中释放一个可用缓存块;
第二读取子单元,用于在访问目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块;
第二存储子单元,用于将第二数据块存储至可用缓存块;
第二建立子单元,用于建立第二数据块的物理地址和虚拟地址的映射关系;直至目标数据划分的所有数据块均存储至目标缓存块,则结束操作。
可选地,从释放子单元依据缓存链表的替换算法,从缓存链表中选出一个可用缓存块;将可用缓存块中的原有数据回写到磁盘。
可选地,记录单元用于记录目标数据的文件号、目标数据的长度、目标数据在文件中的偏移量、用于指示目标数据所在目标缓存块的源地址、与源地址相对应的加速卡的目的地址以及用于表征目标缓存块与加速卡的数据同步状态的状态信息。
可选地,调整单元,用于在将目标数据传输至加速卡之后,将状态信息调整为用于表征加速卡和目标缓存块均存储数据且数据一致的标识。
可选地,调整单元,用于在接收到目标数据修改指令的情况下,修改目标缓存块中存储的目标数据;将目标缓存块的状态信息调整为用于表征加速卡和目标缓存块均存储数据且数据不一致的标识。
可选地,还包括锁定单元;
锁定单元,用于对缓存池的缓存块进行内存锁定。
可选地,还包括数据缓存判断单元、载入单元、添加单元、生成单元和发送单元;
数据缓存判断单元,用于在接收到第一数据的加速处理指令的情况下,判断第一数据是否被缓存池缓存;
载入单元,用于在第一数据未被缓存池缓存的情况下,将第一数据从磁盘载入缓存池;
添加单元,用于将缓存池中的第一数据添加至DMA发送链表;
生成单元,用于依据存储第一数据的缓存块所对应的元信息,生成DMA描述符;
发送单元,用于向加速卡传输DMA描述符,以便于加速卡依据DMA描述符获取DMA发送链表中包含的第一数据。
可选地,数据缓存判断单元包括构建子单元、划分子单元、第一判断子单元、第二判断子单元;
构建子单元,用于在接收到第一数据的加速处理指令的情况下,依据第一数据的文件号和数据量,构建文件信息链表;
划分子单元,用于将第一数据按照设定的容量单位划分为文件块;
第一判断子单元,用于遍历文件信息链表的文件块,判断当前文件信息链表是否为空;
第二判断子单元,用于在当前文件信息链表不为空的情况下,判断当前文件块是否被缓存池缓存;
相应的,载入单元,用于在当前文件块未被缓存池缓存的情况下,将当前文件块从磁盘载入缓存池;将缓存池中的当前文件块添加至DMA发送链表;直至当前文件信息链表为空的情况下,触发生成单元执行依据存储第一数据的缓存块所对应的元信息,生成DMA描述符的步骤。
可选地,还包括标识判断单元和跳过单元;
标识判断单元,用于在当前文件块被缓存池缓存的情况下,判断缓存当前文件块的当前缓存块所对应的状态信息是否为用于表征加速卡和当前缓存块均存储数据且数据一致的标识;
添加单元,用于在当前缓存块对应的状态信息为用于表征加速卡和当前缓存块均存储数据且数据不一致的标识的情况下,将缓存池中的当前文件块添加至DMA发送链表;
跳过单元,用于在当前缓存块对应的状态信息为用于表征加速卡和当前缓存块均存储数据且数据一致的标识的情况下,跳过当前文件块。
可选地,调整单元还用于在向加速卡传输DMA描述符,以便于加速卡依据DMA描述符获取DMA发送链表中包含的第一数据之后,将缓存池中的第一数据对应的状态信息调整为用于表征加速卡和缓存池中第一均存储数据且数据一致的标识;
写保护设置单元还用于对第一数据所在的缓存块设置写保护。
图16所对应实施例中特征的说明可以参见图3、图7和图11所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,在主机侧创建与加速卡内存容量匹配的缓存池;其中,缓存池中包含按照设定的容量单位划分的缓存块;缓存块可以实现对数据的缓存,缓存块与加速卡相对应,缓存块的数据可以传输至加速卡。缓存池的容量和加速卡内存容量相匹配,可以实现对大量数据的缓存,基于单次数据的传输需求设定容量单位,可以有效的解决单次传输数据量过小造成传输带宽浪费的问题。在获取到目标数据的读取指令的情况下,可以从缓存池中调用与目标数据的容量匹配的目标缓存块,将目标数据存储至目标缓存块。缓存池的数据可以传输至加速卡,主机侧可以记录目标缓存块的元信息,并对目标缓存块设置写保护;其中,元信息可以包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征目标缓存块与加速卡的数据同步状态的状态信息。依据各缓存块中数据所执行的操作,调整各缓存块的状态信息;状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均均存储数据且数据不一致的标识。在该技术方案中,通过在主机侧创建与加速卡内存容量匹配的缓存池,并且将缓存池按照设定的容量单位划分成多个缓存块,缓存块为连续的大块内存,所需的传输描述符少,可一次性连续传输大量数据,提升了带宽利用率,提高了数据传输效率。从磁盘读取的数据可以直接放入缓存池中,缓存池的数据可以直接传输至加速卡中,对于主机侧而言,目标数据直接缓存到预分配的缓存池中,向加速卡传输时无需额外的内存拷贝操作,有效的降低了数据的传输延迟。对于加速卡已缓存且内容一致的数据,无需重复传输,节省了传输时间并提高了执行效率。并且通过对写入数据的目标缓存块设置写保护,可以在目标缓存块中的数据发生变化时,实现对状态信息的动态调整,使得主机侧依据状态信息可以清楚的获知缓存池中数据和加速卡中数据是否同步,从而避免相同数据的重复传输。
图17为本申请实施例提供的一种电子设备的结构图,如图17所示,电子设备包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例数据存取方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的数据存取方法的相关步骤。另外,存储器20所存储的资源还可以包括操作***202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作***202可以包括Windows、Unix、Linux等。数据203可以包括但不限于元信息等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图17中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的数据存取方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述数据存取方法的步骤。
以上对本申请实施例所提供的一种数据存取方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上对本申请所提供的一种数据存取方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (13)
1.一种数据存取方法,其特征在于,包括:
在主机侧创建与加速卡内存容量匹配的缓存池;其中,所述缓存池中包含按照设定的容量单位划分的缓存块;
创建空闲链表和缓存链表;所述空闲链表用于存放未使用的缓存块,所述缓存链表用于存放已使用的缓存块;
在获取到目标数据的读取指令的情况下,在所述空闲链表不为空的情况下,将所述空闲链表中的一个空闲缓存块存放至所述缓存链表;
在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块,将所述第一数据块存储至所述空闲缓存块;建立所述第一数据块的物理地址和虚拟地址的映射关系;
在所述空闲链表为空的情况下,从所述缓存链表中释放一个可用缓存块,在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块,将所述第二数据块存储至所述可用缓存块;建立所述第二数据块的物理地址和虚拟地址的映射关系;直至所述目标数据划分的所有数据块均存储至目标缓存块,则结束目标数据的存储操作;
记录所述目标缓存块的元信息,并对所述目标缓存块设置写保护;其中,所述元信息包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息;
依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息;其中,所述状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识。
2.根据权利要求1所述的数据存取方法,其特征在于,所述从所述缓存链表中释放一个可用缓存块包括:
依据缓存链表的替换算法,从所述缓存链表中选出一个可用缓存块;
将所述可用缓存块中的原有数据回写到磁盘。
3.根据权利要求1所述的数据存取方法,其特征在于,所述记录所述目标缓存块的元信息包括:
记录目标数据的文件号、所述目标数据的长度、目标数据在文件中的偏移量、用于指示所述目标数据所在目标缓存块的源地址、与所述源地址相对应的加速卡的目的地址以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息。
4.根据权利要求1所述的数据存取方法,其特征在于,所述调整执行数据存取操作后的缓存块的状态信息包括:
在将所述目标数据传输至所述加速卡之后,将所述状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据一致的标识。
5.根据权利要求1所述的数据存取方法,其特征在于,所述依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息包括:
在接收到目标数据修改指令的情况下,修改所述目标缓存块中存储的目标数据,并将所述状态信息调整为用于表征所述加速卡和所述目标缓存块均存储数据且数据不一致的标识。
6.根据权利要求1所述的数据存取方法,其特征在于,在主机侧创建与加速卡内存容量匹配的缓存池之后还包括:
对所述缓存池的缓存块进行内存锁定。
7.根据权利要求1所述的数据存取方法,其特征在于,在主机侧创建与加速卡内存容量匹配的缓存池之后还包括:
在接收到第一数据的加速处理指令的情况下,判断所述第一数据是否被所述缓存池缓存;
在所述第一数据未被所述缓存池缓存的情况下,将所述第一数据从磁盘载入所述缓存池;将所述缓存池中的第一数据添加至DMA发送链表;
依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符;
向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据。
8.根据权利要求7所述的数据存取方法,其特征在于,所述在接收到第一数据的加速处理指令的情况下,判断所述第一数据是否被所述缓存池缓存包括:
在接收到第一数据的加速处理指令的情况下,依据所述第一数据的文件号和数据量,构建文件信息链表;
将所述第一数据按照设定的容量单位划分为文件块;
遍历所述文件信息链表的文件块,判断当前文件信息链表是否为空;
在所述当前文件信息链表不为空的情况下,判断当前文件块是否被所述缓存池缓存;
相应的,所述在所述第一数据未被所述缓存池缓存的情况下,将所述第一数据从磁盘载入所述缓存池;将所述缓存池中的第一数据添加至DMA发送链表包括:
在所述当前文件块未被所述缓存池缓存的情况下,将所述当前文件块从磁盘载入所述缓存池;将所述缓存池中的当前文件块添加至DMA发送链表;
直至所述当前文件信息链表为空的情况下,执行所述依据存储所述第一数据的缓存块所对应的元信息,生成DMA描述符的步骤。
9.根据权利要求8所述的数据存取方法,其特征在于,还包括:
在当前文件块被所述缓存池缓存的情况下,判断缓存所述当前文件块的当前缓存块所对应的状态信息是否为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识;
在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据不一致的标识的情况下,将所述缓存池中的当前文件块添加至DMA发送链表;
在所述当前缓存块对应的状态信息为用于表征所述加速卡和所述当前缓存块均存储数据且数据一致的标识的情况下,跳过所述当前文件块。
10.根据权利要求7所述的数据存取方法,其特征在于,在所述向所述加速卡传输所述DMA描述符,以便于所述加速卡依据所述DMA描述符获取所述DMA发送链表中包含的第一数据之后还包括:
将所述缓存池中的第一数据对应的状态信息调整为用于表征所述加速卡和所述缓存池中均存储数据且数据一致的标识;
对所述第一数据所在的缓存块设置写保护。
11.一种数据存取装置,其特征在于,包括创建单元、存储单元、记录单元、写保护设置单元和调整单元;
所述创建单元,用于在主机侧创建与加速卡内存容量匹配的缓存池;其中,所述缓存池中包含按照设定的容量单位划分的缓存块;
所述存储单元,用于在获取到目标数据的读取指令的情况下,从所述缓存池中调用与所述目标数据的容量匹配的目标缓存块,将所述目标数据存储至所述目标缓存块;
所述记录单元,用于记录所述目标缓存块的元信息;其中,所述元信息包括目标数据所属的文件号、目标数据的长度、目标数据的地址信息,以及用于表征所述目标缓存块与所述加速卡的数据同步状态的状态信息;
所述写保护设置单元,用于对所述目标缓存块设置写保护;
所述调整单元,用于依据各所述缓存块对应的状态信息,执行数据存取操作,并调整执行数据存取操作后的缓存块的状态信息;其中,所述状态信息包括用于表征缓存块未缓存数据的标识、用于表征仅缓存块缓存数据的标识、用于表征缓存块与加速卡均存储数据且数据一致的标识以及用于表征缓存块与加速卡均存储数据且数据不一致的标识;
还包括链表创建单元;所述链表创建单元,用于创建空闲链表和缓存链表;所述空闲链表用于存放未使用的缓存块,所述缓存链表用于存放已使用的缓存块;相应的,所述存储单元包括存放子单元、第一读取子单元、第一存储子单元、第一建立子单元、释放子单元、第二读取子单元、第二存储子单元、第二建立子单元;所述存放子单元,用于在所述空闲链表不为空的情况下,将所述空闲链表中的一个空闲缓存块存放至所述缓存链表;所述第一读取子单元,用于在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第一数据块;所述第一存储子单元,用于将所述第一数据块存储至所述空闲缓存块;所述第一建立子单元,用于建立所述第一数据块的物理地址和虚拟地址的映射关系;所述释放子单元,用于在所述空闲链表为空的情况下,从所述缓存链表中释放一个可用缓存块;所述第二读取子单元,用于在访问所述目标数据发生缺页异常的情况下,从磁盘中读取与设定的容量单位匹配的第二数据块;所述第二存储子单元,用于将所述第二数据块存储至所述可用缓存块;所述第二建立子单元,用于建立所述第二数据块的物理地址和虚拟地址的映射关系;直至所述目标数据划分的所有数据块均存储至目标缓存块,则结束目标数据的存储操作。
12.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至10任意一项所述数据存取方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10任意一项所述数据存取方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211081605.9A CN115168259B (zh) | 2022-09-06 | 2022-09-06 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
PCT/CN2022/142526 WO2024051041A1 (zh) | 2022-09-06 | 2022-12-27 | 一种数据存取方法、装置、设备和非易失性可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211081605.9A CN115168259B (zh) | 2022-09-06 | 2022-09-06 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115168259A CN115168259A (zh) | 2022-10-11 |
CN115168259B true CN115168259B (zh) | 2023-01-24 |
Family
ID=83481057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211081605.9A Active CN115168259B (zh) | 2022-09-06 | 2022-09-06 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115168259B (zh) |
WO (1) | WO2024051041A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168259B (zh) * | 2022-09-06 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN118093231A (zh) * | 2024-04-23 | 2024-05-28 | 苏州元脑智能科技有限公司 | 一种面向异构计算的数据传输方法、装置、***和产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844248A (zh) * | 2017-02-16 | 2017-06-13 | 北京中航通用科技有限公司 | 数据传输的方法及*** |
CN110764708A (zh) * | 2019-10-25 | 2020-02-07 | 北京浪潮数据技术有限公司 | 一种数据读取方法、装置、设备及存储介质 |
CN114945009A (zh) * | 2022-02-24 | 2022-08-26 | 摩尔线程智能科技(北京)有限责任公司 | PCIe总线连接的设备间进行通信的方法、设备及*** |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4822598B2 (ja) * | 2001-03-21 | 2011-11-24 | ルネサスエレクトロニクス株式会社 | キャッシュメモリ装置およびそれを含むデータ処理装置 |
JP5028381B2 (ja) * | 2008-10-22 | 2012-09-19 | 株式会社日立製作所 | ストレージ装置およびキャッシュ制御方法 |
CN101968791B (zh) * | 2010-08-10 | 2012-12-26 | 深圳市飘移网络技术有限公司 | 一种数据存储方法及装置 |
US8204871B1 (en) * | 2010-09-28 | 2012-06-19 | Emc Corporation | Extended file mapping cache for fast input-output |
JP2013073644A (ja) * | 2011-09-27 | 2013-04-22 | Of Networks:Kk | バッファメモリ装置及び通信装置 |
CN104615576B (zh) * | 2015-03-02 | 2017-03-15 | 中国人民解放军国防科学技术大学 | 面向cpu+gpu处理器的混合粒度一致性维护方法 |
CN110196818B (zh) * | 2018-02-27 | 2021-07-16 | 华为技术有限公司 | 缓存数据的方法、缓存设备和存储*** |
US11288213B2 (en) * | 2019-03-29 | 2022-03-29 | Intel Corporation | Memory protection with hidden inline metadata |
CN112559165A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
US11048447B2 (en) * | 2019-10-17 | 2021-06-29 | International Business Machines Corporation | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data |
CN113343045B (zh) * | 2021-07-29 | 2021-11-05 | 阿里云计算有限公司 | 一种数据缓存方法及网络设备 |
CN114428589B (zh) * | 2022-01-04 | 2024-05-28 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN115168259B (zh) * | 2022-09-06 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
-
2022
- 2022-09-06 CN CN202211081605.9A patent/CN115168259B/zh active Active
- 2022-12-27 WO PCT/CN2022/142526 patent/WO2024051041A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844248A (zh) * | 2017-02-16 | 2017-06-13 | 北京中航通用科技有限公司 | 数据传输的方法及*** |
CN110764708A (zh) * | 2019-10-25 | 2020-02-07 | 北京浪潮数据技术有限公司 | 一种数据读取方法、装置、设备及存储介质 |
CN114945009A (zh) * | 2022-02-24 | 2022-08-26 | 摩尔线程智能科技(北京)有限责任公司 | PCIe总线连接的设备间进行通信的方法、设备及*** |
Also Published As
Publication number | Publication date |
---|---|
WO2024051041A9 (zh) | 2024-04-25 |
CN115168259A (zh) | 2022-10-11 |
WO2024051041A1 (zh) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN101189584B (zh) | 内存页面管理 | |
EP0408070B1 (en) | Method for allocating real pages to virtual pages having different page sizes therefrom | |
EP0777183B1 (en) | Computer cache system | |
KR20110100659A (ko) | 복제된 기입 요청으로 일관된 메모리 카피를 행하는 방법 및 장치 | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存***及方法 | |
CN105117351A (zh) | 向缓存写入数据的方法及装置 | |
CN113312300B (zh) | 一种融合数据传输和存储的非易失内存缓存方法 | |
CN112445767A (zh) | 内存管理方法及装置、电子设备、存储介质 | |
CN110928803B (zh) | 一种内存管理方法及装置 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN115269450A (zh) | 内存协同管理***和方法 | |
CN115470156A (zh) | 基于rdma的内存使用方法、***、电子设备和存储介质 | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN115079957A (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
JP2008217208A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
US11615019B2 (en) | Non-volatile storage device, host device, and data storage system to increase data write speed | |
CN110825658B (zh) | 闪存控制器及方法 | |
CN112015672A (zh) | 一种存储***中数据处理方法、装置、设备及存储介质 | |
CN113742253A (zh) | 存储介质管理方法、装置、设备以及计算机可读存储介质 | |
KR20200053052A (ko) | 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치 | |
CN112988034B (zh) | 一种分布式***数据写入方法及装置 | |
CN111435331A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |