CN116126242A - 一种写数据方法、装置、设备及介质 - Google Patents
一种写数据方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116126242A CN116126242A CN202310064517.6A CN202310064517A CN116126242A CN 116126242 A CN116126242 A CN 116126242A CN 202310064517 A CN202310064517 A CN 202310064517A CN 116126242 A CN116126242 A CN 116126242A
- Authority
- CN
- China
- Prior art keywords
- data
- dirty
- tag
- write operation
- writing
- 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
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开一种写数据方法、装置、设备及介质,涉及数据传输技术领域。该方法应用于设置有DDR的RAID包括:获取并在dirty RAM中标记DDR中的数据为脏数据以及历史数据并传输写操作至AXI Slave;当写操作命中Tag,根据dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,用于替换Cache中某个CacheLine的历史数据,现有写数据方法花费更多时间确定CacheLine中数据应当保留还是覆盖,当写入的数据有较多段时,填满CacheLine进行多次不连续读操作,造成较大性能损失。确定命中Tag的数据处理,dirty标识避免不必要回写操作并提高写数据的写入性能。
Description
技术领域
本申请涉及数据传输技术领域,特别是涉及一种写数据方法、装置、设备及介质。
背景技术
随着独立冗余磁盘阵列(Redundant Arrays of Independent Disks,RAID)的快速发展,在现有的设备中,一般使用RAID-5磁盘阵列或RAID-6磁盘阵列,而现有的对于应用于RAID-5磁盘阵列的算法或应用于RAID-6磁盘阵列的算法,一般以用户定义的“条带”为基本单位进行调度。当一个条带被写入新数据时,需要将位于该条带所在行的其他旧数据从磁盘中读入随机存储器(random-access memory,RAM)并与新数据进行运算,生成校验数据,此时会将新数据和生成的校验数据都写入磁盘中。在写入数据的过程中,一般使用回写操作,但传统的回写操作需要在一个CacheLine第一次被访问且不被命中时,将所有旧数据读入Cache,此时会发生新数据和/或校验数据被覆盖,读取数据的操作被浪费的情况,使得写数据的写入性能降低,至少降低至单磁盘写入性能的三分之一。
鉴于上述存在的问题,寻求如何不浪费读取数据的操作并提高磁盘阵列的写入性能是本领域技术人员竭力解决的问题。
发明内容
本申请的目的是提供一种写数据方法、装置、设备及介质,其能够不浪费读取数据的操作并提高磁盘阵列的写入性能。
为解决上述技术问题,本申请提供一种写数据方法,应用于设置有DDR的RAID,包括:
获取DDR中的数据,并在dirty RAM中标记数据为脏数据;
读取历史数据,并将磁盘对DDR的写操作传输至AXI Slave;
判断写操作是否命中设置于RAID的存储资源中的Tag;
若写操作未命中Tag,则直接输出写操作;
若写操作命中Tag,则根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,以便于Cache中的某个CacheLine中的历史数据被脏数据替换,其中,脏数据为写操作对应传输的数据;
根据写操作将其余历史数据传输并写入DDR。
优选地,在将磁盘对DDR的写操作传输至AXI Slave之后,在判断写操作是否命中设置于RAID的存储资源中的Tag之前,还包括:
将AXI Slave接收的写操作对应的写地址的高32位替换为DDR对应的写地址的高32位,以便于脏数据写入DDR。
优选地,当写操作命中Tag时,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
获取存储于Tag RAM中写操作命中的Tag对应的Tag号。
优选地,根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃包括:
根据dirty标识判断扇区中是否存在已被脏数据覆盖;
若dirty标识不为1,则确定扇区未被脏数据覆盖;
若dirty标识为1,则确定扇区已被脏数据覆盖。
优选地,在获取存储于Tag RAM中写操作命中的Tag对应的Tag号之后,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
根据Tag号查询并获取对应的dirty_base,dirty_base用于表征写操作命中的Tag对应的dirty RAM中全部扇区的起始地址;
根据dirty_base读取dirty_word,dirty_word为32位数据,用于表征Tag对应的存储于扇区中的数据的改写状态,且dirty_word为32位数据;
根据dirty_word选取dirty标识,dirty标识用于确定扇区中是否已被脏数据覆盖。
优选地,在确定扇区未被脏数据覆盖之后,还包括:
将以回写操作获取的历史数据历史数据写满扇区。
优选地,在确定扇区已被脏数据覆盖之后,还包括:
丢弃以回写操作获取的历史数据。
为解决上述技术问题,本申请还提供了一种写数据装置,应用于设置有DDR的RAID,包括:
第一获取模块,用于获取DDR中的数据,并在dirty RAM中标记数据为脏数据;
第一读取模块,用于读取历史数据,并将磁盘对DDR的写操作至AXI Slave;
第一判断模块,用于判断写操作是否命中设置于RAID的存储资源中的Tag;
若写操作未命中Tag,则触发输出模块,用于直接输出写操作;
若写操作命中Tag,则触发覆盖并丢弃模块,用于根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,以便于Cache中的某个CacheLine中的历史数据被脏数据替换,其中,脏数据为写操作对应传输的数据;
传输模块,用于根据写操作将其余历史数据传输并写入DDR。
此外,该装置还包括以下模块:
优选地,在将磁盘对DDR的写操作传输至AXI Slave之后,在判断写操作是否命中设置于RAID的存储资源中的Tag之前,还包括:
替换模块,用于将AXI Slave接收的写操作对应的写地址的高32位替换为DDR对应的写地址的高32位,以便于脏数据写入DDR。
优选地,当写操作命中Tag时,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
第二获取模块,用于获取存储于Tag RAM中写操作命中的Tag对应的Tag号。
优选地,根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃包括:
第二判断模块,用于根据dirty标识判断扇区中是否存在已被脏数据覆盖;
若dirty标识不为1,则确定扇区未被脏数据覆盖;
若dirty标识为1,则确定扇区已被脏数据覆盖。
优选地,在获取存储于Tag RAM中写操作命中的Tag对应的Tag号之后,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
查询并获取模块,用于根据Tag号查询并获取对应的dirty_base,dirty_base用于表征写操作命中的Tag对应的dirty RAM中全部扇区的起始地址;
第二读取模块,用于根据dirty_base读取dirty_word,dirty_word为32位数据,用于表征Tag对应的存储于扇区中的数据的改写状态,且dirty_word为32位数据;
选取模块,用于根据dirty_word选取dirty标识,dirty标识用于确定扇区中是否已被脏数据覆盖。
优选地,在确定扇区未被脏数据覆盖之后,还包括:
写入模块,用于将以回写操作获取的历史数据写满扇区。
优选地,在确定扇区已被脏数据覆盖之后,还包括:
丢弃模块,用于丢弃以回写操作获取的历史数据。
为解决上述技术问题,本申请还提供了一种写数据设备,包括:
存储器,用于存储计算机程序;
处理器,用于指向计算机程序,实现写数据方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现上述全部写数据方法的步骤。
本申请所提供的一种写数据方法,应用于设置有DDR的RAID,包括:获取DDR中的数据,并在dirty RAM中标记数据为脏数据;读取历史数据,并将磁盘对DDR的写操作传输至AXI Slave;判断写操作是否命中设置于RAID的存储资源中的Tag;若写操作未命中Tag,则直接输出写操作;若写操作命中Tag,则根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,以便于Cache中的某个CacheLine中的历史数据被脏数据替换,其中,脏数据为写操作对应传输的数据;根据写操作将其余历史数据传输并写入DDR。对比现有的写数据的方法需要复杂的调度才能完成对于RAID的CacheLine的部分改写,需要花费更多的时间用于确定CacheLine中哪些部分的数据应当保留,哪些数据应当被覆盖,同时,当写入CacheLine中的数据被
分成较多段时,RAID需要进行多次不连续的读操作才能把CacheLine填满,对于处理数据速度极慢的机械硬盘来说,性能损失尤其明显。确定命中Tag要进行数据处理,dirty标识避免了不必要的回写操作并提高了写数据的写入性能。因此,本申请通过确定命中Tag以及dirty标识避免了读取数据的操作被浪费的情况,提高写数据的写入性能。
本申请还提供了一种写数据装置、设备及介质,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为RAID结构示意图;
图2为本申请实施例所提供的一种写数据方法流程图;
图3为本申请实施例所提供的一种写数据装置结构图;
图4为本申请实施例所提供的一种写数据设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种写数据方法、装置、设备及介质,其能够不浪费读取数据的操作并提高磁盘阵列的写入性能。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
RAID一般是由多块磁盘组成的存储器整体,磁盘之间存放数据的关系由算法定义。常见的有关于RAID算法有0,1,5,6,10,50,60等多种,每种在磁盘中存放数据的方式不同。需要说明的是,RAID-5和/或RAID-6以用户定义的“条带”为基本单位进行调度,其中条带为数据长度单位,由用户
自定义,是有关于RAID算法中拆分地址、使数据在不同阵列成员之间轮换的单位。
图1为RAID结构示意图,如图1所示,该RAID应设置有3个总线,分别是:用于CPU进行配置和数据访问的AHB总线;用于接收磁盘写请求的AXI Slave总线;用于向DDR转发写请求的AXI Master总线。其中,需要进一步说明的是,Cache内的资源可以分为3类:分别为,存储资源:包括各配置寄存器(图中的Reg模块)、Tag Ram、Dirty Ram等等;触发式算法:CPU通过配置寄存器主动调用的运算加速功能;自发式算法:当收到硬件访问时自动开始工作的算法,即Dirty Merge算法,该算法模块自动对磁盘写请求进行过滤、转发。
其中,存储资源中的Tag具体内容如下:
0x30200000,Tag RAM:256*(16dword),存放256个tag的磁盘扇区和属性,每个tag包含:48位的虚拟盘起始扇区,占用64位;48位的虚拟盘结束扇区,占用64位;48位的物理盘起始扇区,占用64位;dirty_base指针32位,记录tag所对应的Dirty RAM起始地址;属性32位,记录lock等软件调度信息;保留占位符8*32位。0x30280000,Addr64 Array:256*(64bits),存放256个tag的DDR地址。0x302C0000,Valid Array:256*(1bit),标识256个tag是否被占用。0x302E0000,LRU Array:256*(8bits),记录256个tag最后一次被访问的顺序。0x302A0000,Size Mapping Array:256*(3bits),记录256个tag分别映射到8个size中的哪一个。0x30000990,Size Array:8*(32bits),记录最多8个size供选择。
其中,存储资源中的Dirty具体内容如下:
0x30100000,Dirty RAM:8Mbit,记录Cache中最多8M个扇区各自的数据改写状态。Cache的数据区是由软件分配的,一段专用的DDR地址范围,用于存放Cache中缓存的数据。
还需要说明的是,Dirty Merge算法会对每一次磁盘控制器发起的DDR写操作进行判断,根据其写地址查询对应的dirty位,并丢弃标记为dirty=1的历史数据。为了实现这一功能,每个CacheLine都需要将其在DDR中的地址映射区间保存在硬件寄存器中,一个地址区间由起始地址和长度唯一确定,各CacheLine的起始地址存放在Addr64 Array中,而长度是由Mapping和Size
Array的二级映射决定的。通常情况下,一个RAID内的各个CacheLine都是等长的,且为磁盘个数和条带大小的整数倍,这样有利于简化管理,并能够通过虚拟盘地址计算Cache Line编号和物理盘地址。上述提及的RAID结构示意图也可以用于其他RAID算法,但性能提高效果不如RAID-5或RAID-6效果显著。
图2为本申请实施例所提供的一种写数据方法流程图,如图2所示,该写数据方法,应用于设置有DDR的RAID,包括:
S20:获取DDR中的数据,并在dirty RAM中标记数据为脏数据;
S21:读取历史数据,并将磁盘对DDR的写操作传输至AXI Slave;
S22:判断写操作是否命中设置于RAID的存储资源中的Tag;
若写操作未命中Tag,则进入步骤S23:直接输出写操作;
若写操作命中Tag,则进入步骤S24:根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃;
以便于Cache中的某个CacheLine中的历史数据被脏数据替换,其中,脏数据为写操作对应传输的数据史数据S25:根据写操作将其余历史数据传输并写入DDR。
本实施例中为了提高RAID-5和/或RAID-6的写入性能所提及的DDR应为大容量DDR,且将该DDR作为Cache,其中,CacheLine为Cache中的数据行,一组地址连续的数据,数据以行为单位进或出Cache;脏数据指CPU新写入Cache的有效数据,是需要保留的最新数据。选哟说明的是,将CPU发出的写操作以CacheLine的形式进行管理。将零散的写操作(总大小通常小于1MB,分散到各个磁盘后可能小于100KB)合并为CacheLine大小的大包写操作(分散到各个磁盘后不小于1MB)后,可以减少磁盘读写次数,提高整体系统性能。
本申请所提供的一种写数据方法,应用于设置有DDR的RAID,包括:获取DDR中的数据,并在dirty RAM中标记数据为脏数据;读取历史数据,并将磁盘对DDR的写操作传输至AXI Slave;判断写操作是否命中设置于RAID的存储资源中的Tag;若写操作未命中Tag,则直接输出写操作;若写操作命中Tag,则根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,以便于Cache中的某个CacheLine中的历史数据被脏数据替换,
其中,脏数据为写操作对应传输的数据;根据写操作将其余历史数据传输并写入DDR。对比现有的写数据的方法需要复杂的调度才能完成对于RAID的CacheLine的部分改写,需要花费更多的时间用于确定CacheLine中哪些部分的数据应当保留,哪些数据应当被覆盖,同时,当写入CacheLine中的数据被分成较多段时,RAID需要进行多次不连续的读操作才能把CacheLine填满,对于处理数据速度极慢的机械硬盘来说,性能损失尤其明显。确定命中Tag要进行数据处理,dirty标识避免了不必要的回写操作并提高了写数据的写入性能。因此,本申请通过确定命中Tag以及dirty标识避免了读取数据的操作被浪费的情况,提高写数据的写入性能。
在上述实施例的基础上,作为一种更优选的实施例,在将磁盘对DDR的写操作传输至AXI Slave之后,在判断写操作是否命中设置于RAID的存储资源中的Tag之前,还包括:
将AXI Slave接收的写操作对应的写地址的高32位替换为DDR对应的写地址的高32位,以便于脏数据写入DDR。
此外,当写操作命中Tag时,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
获取存储于Tag RAM中写操作命中的Tag对应的Tag号。
当写操作落在某个区间内时(例如第i个),我们称该次写操作“命中”了i号tag。比较电路会将命中与否、命中的tag号i、以及命中的区间起始地址Addr64[i]输出给上层电路,用于接下来的判断。
此时,根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃包括:
根据dirty标识判断扇区中是否存在已被脏数据覆盖;
若dirty标识不为1,则确定扇区未被脏数据覆盖;
若dirty标识为1,则确定扇区已被脏数据覆盖。
优选地,在获取存储于Tag RAM中写操作命中的Tag对应的Tag号之后,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
根据Tag号查询并获取对应的dirty_base,dirty_base用于表征写操作命中的Tag对应的dirty RAM中全部扇区的起始地址;
根据dirty_base读取dirty_word,dirty_word为32位数据,用于表征Tag对应的存储于扇区中的数据的改写状态,且dirty_word为32位数据;
根据dirty_word选取dirty标识,dirty标识用于确定扇区中是否已被脏数据覆盖。
需要说明的是,在确定扇区未被脏数据覆盖之后,还包括:将以回写操作获取的历史数据写满扇区。同样的,在确定扇区已被脏数据覆盖之后,还包括:丢弃以回写操作获取的历史数据。
具体可以简述为:对于不命中任一tag的写操作,Dirty Merge会将其原样输出。这些数据是不受Cache管理的数据,它们可能是磁盘的Command List回写,或是其他控制信息。
对于命中了第i个tag的写操作,Dirty Merge会用地址减去对应的Addr64[i],得到该地址对应于CacheLine i中的第几个扇区(注:CPU读写RAID中的数据时,必须以扇区为最小单位,一个扇区等于512KB),之后到Dirty RAM中的对应地址将该扇区的dirty标识读出。如果该扇区为dirty=1,就表明这个扇区中已存有新数据,那么来自磁盘的旧数据应当被丢弃。如果该扇区为dirty=0,那么旧数据应当写入DDR中。
另外,当Dirty Merge用于接收到两次写操作时,具体流程如下:
当Cache中没存储数据时,将第一个写操作对应的脏数据放置于Cache中的一个CacheLine中,当接收到第二个写操作时,将第二个写操作对应的脏数据放置于Cache中的一个CacheLine中,放置第二个写操作对应的脏数据的CacheLine不同于放置第一个写操作对应的脏数据的CacheLine;当两个写操作对应的脏数据全部放置完成后,将历史数据以回写操作填满剩余Cache的空间,并将历史数据和脏数据进行校验,生成校验数据,最后得到的Cache中应含有历史数据、脏数据、校验数据。
当Cache中存储有数据时,将第一个写操作对应的脏数据覆盖历史数据,将脏数据放置于Cache中的一个CacheLine中,当接收到第二个写操作时,将第二个写操作对应的脏数据覆盖历史数据,将脏数据放置于Cache中的一个
CacheLine中,放置第二个写操作对应的脏数据的CacheLine不同于放置第一个写操作对应的脏数据的CacheLine;当两个写操作对应的脏数据全部放置完成后,并将历史数据和脏数据进行校验,生成校验数据,最后得到的Cache中同样含有历史数据、脏数据、校验数据。
在上述实施例中,对于写数据方法进行了详细描述,本申请还提供写数据装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图3为本申请实施例所提供的一种写数据装置结构图,如图3所示,本申请还提供了一种写数据装置,应用于设置有DDR的RAID,包括:
第一获取模块30,用于获取DDR中的数据,并在dirty RAM中标记数据为脏数据;
第一读取模块31,用于读取历史数据,并将磁盘对DDR的写操作至AXI Slave;
第一判断模块32,用于判断写操作是否命中设置于RAID的存储资源中的Tag;
若写操作未命中Tag,则触发输出模块33,用于直接输出写操作;
若写操作命中Tag,则触发覆盖并丢弃模块34,用于根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃,以便于Cache中的某个CacheLine中的历史数据被脏数据替换,其中,脏数据为写操作对应传输的数据;
传输模块35,用于根据写操作将其余历史数据传输并写入DDR。
此外,该装置还包括以下模块:
优选地,在将磁盘对DDR的写操作传输至AXI Slave之后,在判断写操作是否命中设置于RAID的存储资源中的Tag之前,还包括:
替换模块,用于将AXI Slave接收的写操作对应的写地址的高32位替换为DDR对应的写地址的高32位,以便于脏数据写入DDR。
优选地,当写操作命中Tag时,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
第二获取模块,用于获取存储于Tag RAM中写操作命中的Tag对应的Tag号。
优选地,根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃包括:
第二判断模块,用于根据dirty标识判断扇区中是否存在已被脏数据覆盖;
若dirty标识不为1,则确定扇区未被脏数据覆盖;
若dirty标识为1,则确定扇区已被脏数据覆盖。
优选地,在获取存储于Tag RAM中写操作命中的Tag对应的Tag号之后,在根据存储于dirty RAM中的dirty标识将被脏数据覆盖的历史数据丢弃之前,还包括:
查询并获取模块,用于根据Tag号查询并获取对应的dirty_base,dirty_base用于表征写操作命中的Tag对应的dirty RAM中全部扇区的起始地址;
第二读取模块,用于根据dirty_base读取dirty_word,dirty_word为32位数据,用于表征Tag对应的存储于扇区中的数据的改写状态,且dirty_word为32位数据;
选取模块,用于根据dirty_word选取dirty标识,dirty标识用于确定扇区中是否已被脏数据覆盖。
优选地,在确定扇区未被脏数据覆盖之后,还包括:
写入模块,用于将以回写操作获取的历史数据写满扇区。
优选地,在确定扇区已被脏数据覆盖之后,还包括:
丢弃模块,用于丢弃以回写操作获取的历史数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图4为本申请实施例所提供的一种写数据设备结构图,如图4所示,一种写数据设备,包括:
存储器40,用于存储计算机程序;
处理器41,用于执行计算机程序时实现如上述实施例中所提到的写数据方法的步骤。
本实施例提供的写数据设备可以包括但不限于智能手机、平板电脑、笔
记本电脑或台式电脑等。
其中,处理器41可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器41可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器41也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器41可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器41还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器40可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器40还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器40至少用于存储以下计算机程序,其中,该计算机程序被处理器41加载并执行之后,能够实现前述任意一个实施例公开的写数据方法的相关步骤。另外,存储器40所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括Windows、Unix、Linux等。数据可以包括但不限于写数据设备等。
在一些实施例中,写数据设备还可包括有显示屏、输入输出接口、通信接口、电源以及通信总线。
本领域技术人员可以理解,图4中示出的结构并不构成对写数据设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的写数据设备,包括存储器40和处理器41,处理器41在执行存储器40存储的程序时,能够实现写数据方法。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory),ROM、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种写数据方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种写数据方法,其特征在于,应用于设置有DDR的RAID,包括:
获取DDR中的数据,并在dirty RAM中标记所述数据为脏数据;
读取历史数据,并将磁盘对所述DDR的写操作传输至AXI Slave;
判断所述写操作是否命中设置于RAID的存储资源中的Tag;
若所述写操作未命中所述Tag,则直接输出所述写操作;
若所述写操作命中所述Tag,则根据存储于所述dirty RAM中的dirty标识将被所述脏数据覆盖的所述历史数据丢弃,以便于Cache中的某个CacheLine中的所述历史数据被所述脏数据替换,其中,所述脏数据为所述写操作对应传输的数据;
根据所述写操作将其余所述历史数据传输并写入所述DDR。
2.根据权利要求1所述的写数据方法,其特征在于,在所述将磁盘对所述DDR的写操作传输至AXI Slave之后,在所述判断所述写操作是否命中设置于RAID的存储资源中的Tag之前,还包括:
将所述AXI Slave接收的所述写操作对应的写地址的高32位替换为所述DDR对应的写地址的高32位,以便于所述脏数据写入所述DDR。
3.根据权利要求1所述的写数据方法,其特征在于,当所述写操作命中所述Tag时,在所述根据存储于所述dirty RAM中的dirty标识将被所述脏数据覆盖的所述历史数据丢弃之前,还包括:
获取存储于Tag RAM中所述写操作命中的所述Tag对应的Tag号。
4.根据权利要求3所述的写数据方法,其特征在于,所述根据存储于所述dirty RAM中的dirty标识将被所述脏数据覆盖的所述历史数据丢弃包括:
根据所述dirty标识判断所述扇区中是否存在已被所述脏数据覆盖;
若所述dirty标识不为1,则确定所述扇区未被所述脏数据覆盖;
若所述dirty标识为1,则确定所述扇区已被所述脏数据覆盖。
5.根据权利要求4所述的写数据方法,其特征在于,在所述获取存储于Tag RAM中所述写操作命中的所述Tag对应的Tag号之后,在所述根据存储于所述dirty RAM中的dirty标识将被所述脏数据覆盖的所述历史数据丢弃之前,还包括:
根据所述Tag号查询并获取对应的dirty_base,所述dirty_base用于表征所述写操作命中的所述Tag对应的dirty RAM中全部扇区的起始地址;
根据所述dirty_base读取dirty_word,所述dirty_word为32位数据,用于表征所述Tag对应的存储于所述扇区中的数据的改写状态,且所述dirty_word为32位数据;
根据所述dirty_word选取dirty标识,所述dirty标识用于确定所述扇区中是否已被所述脏数据覆盖。
6.根据权利要求5所述的写数据方法,其特征在于,在所述确定所述扇区未被所述脏数据覆盖之后,还包括:
将以回写操作获取的所述历史数据写满所述扇区。
7.根据权利要求5所述的写数据方法,其特征在于,在所述确定所述扇区已被所述脏数据覆盖之后,还包括:
丢弃以回写操作获取的所述历史数据。
8.一种写数据装置,其特征在于,应用于设置有DDR的RAID,包括:
第一获取模块,用于获取DDR中的数据,并在dirty RAM中标记所述数据为脏数据;
第一读取模块,用于读取历史数据,并将磁盘对所述DDR的写操作传输至AXI Slave;
第一判断模块,用于判断所述写操作是否命中设置于RAID的存储资源中的Tag;
若所述写操作未命中所述Tag,则触发输出模块,用于直接输出所述写操作;
若所述写操作命中所述Tag,则触发覆盖并丢弃模块,用于根据存储于所述dirty RAM中的dirty标识将被所述脏数据覆盖的所述历史数据丢弃,以便于Cache中的某个CacheLine中的所述历史数据被所述脏数据替换,其中,所述脏数据为所述写操作对应传输的数据;
传输模块,用于根据所述写操作将其余所述历史数据传输并写入所述DDR。
9.一种写数据设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任意一项所述的写数据方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的写数据方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310064517.6A CN116126242A (zh) | 2023-01-16 | 2023-01-16 | 一种写数据方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310064517.6A CN116126242A (zh) | 2023-01-16 | 2023-01-16 | 一种写数据方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126242A true CN116126242A (zh) | 2023-05-16 |
Family
ID=86307761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310064517.6A Pending CN116126242A (zh) | 2023-01-16 | 2023-01-16 | 一种写数据方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126242A (zh) |
-
2023
- 2023-01-16 CN CN202310064517.6A patent/CN116126242A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
JP3264319B2 (ja) | バスブリッジ | |
CN110362504A (zh) | 对一致性链路和多级存储器的管理 | |
CN109952565B (zh) | 内存访问技术 | |
EP0777183A1 (en) | Computer cache system | |
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
EP3553665B1 (en) | Non-volatile memory access method, device, and system | |
CN102968386B (zh) | 数据供给设备、缓存设备及数据供给方法 | |
CN111666044A (zh) | 一种访问叠瓦式磁记录smr硬盘的方法及服务器 | |
EP1579332A2 (en) | Cache replacement with write allocate empty policy | |
CN106354664A (zh) | 一种固态硬盘数据传输方法及装置 | |
CN109164976A (zh) | 利用写缓存优化存储设备性能 | |
CN110347338B (zh) | 混合内存数据交换处理方法、系统及可读存储介质 | |
CN114036089B (zh) | 数据处理方法、装置、缓存器、处理器及电子设备 | |
CN110737607A (zh) | 管理hmb内存的方法、装置、计算机设备及存储介质 | |
CN117389914A (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
CN116755625A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN116126242A (zh) | 一种写数据方法、装置、设备及介质 | |
JP3964821B2 (ja) | プロセッサ、キャッシュシステム及びキャッシュメモリ | |
EP0474356A1 (en) | Cache memory and operating method | |
CN115079957A (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
EP3916567A1 (en) | Method for processing page fault by processor | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device |
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 |