CN112527196B - Cache读写方法、装置、计算机可读存储介质及电子设备 - Google Patents
Cache读写方法、装置、计算机可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN112527196B CN112527196B CN202011428133.0A CN202011428133A CN112527196B CN 112527196 B CN112527196 B CN 112527196B CN 202011428133 A CN202011428133 A CN 202011428133A CN 112527196 B CN112527196 B CN 112527196B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- write
- read
- cache
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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
本发明公开一种Cache读写方法、装置、计算机可读存储介质及电子设备,将写入所述Cache的数据按照笛卡尔树结构存储在环形缓冲区;接收数据读写请求;根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作;本发明实施例基于笛卡尔树原理实现Cache读写方案,当连续写入数据时,保存对应数据写入信息的节点位于相邻位置,相对现有技术中的哈希算法实现了保序性;当读取数据时,通过从根节点指针指向的位置开始遍历,利用堆的有序性,可以减少要查询的数据量,相对现有技术中先进先出的链表算法,避免一一比对所有节点,提高了读取数据的效率,从而提升主机读写性能。
Description
技术领域
本发明涉及硬盘存储领域,特别是涉及一种Cache读写方法、装置、计算机可读存储介质及电子设备。
背景技术
目前在主流的SSD(Solid State Drives,固态硬盘)固件开发中,高性能的读写Cache(高速缓冲存储器)是必不可少的重要组成部分,在保证读写数据正确的同时,还需要提供卓越的吞吐量和带宽性能。
常见的Cache设计主要采用两种方式,一种是Hash(哈希)算法,Hash算法可以减少冲突的范围,提高读写命中时的查询效率,避免从头至尾进行遍历;
另外一种是具有FIFO(first in first out,先入先出)性质的链表,可以保证数据的时间局部性和空间局部性。
对于第一种方式,Hash算法有限的Hash桶无法装下所有的分支数据,冲突的数据不可避免的需要一一比对,而且Hash算法会破坏数据的时间局部性和空间局部性,即先下发的数据不一定先处理,同一批下发的数据不一定保存在相邻位置,影响主机读写性能。
对于第二种方式,具有FIFO(first in first out)性质的链表查询性能比较低,极端情况下需要一一比对所有的节点,影响主机读写性能。
发明内容
本发明所要解决的技术问题是:提供一种Cache读写方法、装置、计算机可读存储介质及电子设备,实现数据写入的保序性,提高数据读取的效率,从而提升主机读写性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种Cache读写方法,包括步骤:
将写入所述Cache的数据按照笛卡尔树结构存储在预设缓冲区;
接收数据读写请求;
根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种Cache读写装置,包括:
存储模块,用于将写入所述Cache的数据按照笛卡尔树结构存储在节点缓冲区;
接收模块,用于接收数据读写请求;
操作模块,用于根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述Cache读写方法中的各个步骤。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述Cache读写方法中的各个步骤。
本发明的有益效果在于:本发明提供的Cache读写方法基于笛卡尔树原理实现,通过从内存中分配固定大小空间作为缓冲区,用来存储包含数据写入信息的节点,节点之间的关系为笛卡尔树的数据结构,当连续写入数据时,保存对应数据写入信息的节点可以保存在相邻位置,相对现有技术中的哈希算法实现了数据的保序性;当读取数据时,通过从缓冲区的根节点指针指向的位置开始遍历,利用堆的有序性,可以减少要查询的数据量,相对现有技术中先进先出的链表算法,避免一一比对所有节点,提高了读取数据的效率;综上所述,本发明提供的Cache读写方法可以实现数据写入的保序性,并提高数据读取的效率,从而提升主机读写性能。
附图说明
图1为本发明实施例的一种Cache读写方法的步骤示意图;
图2为本发明实施例的一种Cache读写装置的结构示意图;
图3为本发明实施例的一种电子设备的结构示意图;
图4为本发明实施例一中笛卡尔节点的结构示意图;
图5为本发明实施例一中节点缓冲区的结构示意图;
图6为本发明实施例二中删除节点操作和插入节点操作的过程示意图;
图7为本发明实施例二中针对节点冲突的处理过程示意图;
图8为本发明实施例三中搜索节点操作的过程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种Cache读写方法,包括步骤:
将写入所述Cache的数据按照笛卡尔树结构存储在环形缓冲区;
接收数据读写请求;
根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作。
从上述描述可知,本发明的有益效果在于:本发明提供的Cache读写方法基于笛卡尔树原理实现,通过从内存中分配固定大小空间作为环形缓冲区,用来存储包含数据写入信息的节点,节点之间的关系为笛卡尔树的数据结构,当连续写入数据时,保存对应数据写入信息的节点可以保存在相邻位置,相对现有技术中的哈希算法实现了数据的保序性;当读取数据时,通过从环形缓冲区的根节点指针指向的位置开始遍历,利用堆的有序性,可以减少要查询的数据量,相对现有技术中先进先出的链表算法,避免一一比对所有节点,提高了读取数据的效率;综上所述,本发明提供的Cache读写方法可以实现数据写入的保序性,并提高数据读取的效率,从而提升主机读写性能。
进一步的,所述将写入所述Cache的数据按照笛卡尔树结构存储在预设缓冲区包括:
将所述写入所述Cache的数据的地址信息存储在所述笛卡尔树的节点中;
所述节点还存储有分别指向所述节点的左节点、右节点和父节点的指针;
将所述笛卡尔树的节点存储到所述预设缓冲区。
由上述效果可知,所述节点通过存储分别指向所述节点的左节点、右节点和父节点的指针,所述指针链接顺序形成了笛卡尔树结构,便于后续的操作处理。
进一步的,所述预设缓冲区存储有分别指向所述笛卡尔树的最左节点、最右节点和根节点的指针;
所述数据读写请求包括数据写入请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到数据写入请求时,将所述写入的数据的地址信息保存在所述预设缓冲区中所述最右节点指针指向的下一个节点。
由上述描述可知,基于笛卡尔树的特性,所述预设缓冲区存储的分别指向所述笛卡尔树的最左节点、最右节点和根节点的指针相当于数据插入、删除、查找操作的索引,当在笛卡尔树中插入新节点时,对应的在环形缓冲区中最右节点指针指向的下一个节点存放新的数据写入信息,当存在连续的数据写入时,存放连续数据写入信息的节点位于相邻位置,相对于哈希算法实现了数据写入的保序性。
进一步的,所述预设缓冲区为环形缓冲区;
当接收到数据写入请求时,判断所述环形缓冲区的空间是否已被占满,若是,在所述笛卡尔树中删除所述最左节点指针指向的节点,并将所述写入的数据的地址信息保存在所述最右节点指针指向的下一个节点。
进一步的,当所述写入或者所述删除操作完成后,所述环形缓冲区中所述最右节点指针或所述最左节点指针对应的指向下一个位置。
由上述描述可知,通过将存放笛卡尔树节点的缓冲区设计成环形,写入或者所述删除操作完成后,所述节点缓冲区中所述最右节点指针或所述最左节点指针指向下一个位置,可以实现数据写入时如果达到环形缓冲区的结束地址,则跳转至环形缓冲区的开始位置,如此依次循环使用,而且每次删除最左节点指针指向的节点,由于最左节点指针指向的节点是最先插入笛卡尔树结构的,对应的,每次删除的节点里面存放的是最早数据写入的地址信息,实现了先下发的数据先处理即先入先出功能。
进一步的,所述节点存放的信息还包括所述节点的状态;
所述状态包括取消状态;
当接收到数据写入请求时,若在所述笛卡尔树中存在与所述数据写入请求中的地址相同值的节点时,将与所述数据写入请求中的地址相同值的节点的状态标记为取消状态。
由上述描述可知,通过记录节点的状态,当出现插入的数据在笛卡尔树中存在相同值的节点时,可以将冲突的节点标记为取消状态,这样在删除的时候,若发现待删除的节点为取消状态,则直接删除即可,无须下一步操作,从而可以节省系统操作,提高主机读写效率。
进一步的,所述读写请求包括数据读取请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到所述数据读取请求时,确定所述数据读取请求中的地址;
根据所述地址从所述笛卡尔树的根节点指针指向的节点开始遍历,并将所述数据读取请求的地址与遍历到的节点的节点值进行比较:
当所述笛卡尔树的父节点小于或者等于其左、右子节点时,若节点的值大于或者等于所述地址,则停止遍历所述节点的左、右子树;
当所述笛卡尔树的父节点大于或者等于其左、右子节点时,若节点的值小于或者等于所述地址,则停止遍历所述节点的左右子树。
由上述描述可知,读取数据时,通过从根节点指针指向的节点开始广度遍历,并利用堆的有序性,进行相应数值比较,可以省略对一些子树的遍历,相对现有技术中的具有FIFO性质的链表,避免了对所有节点一一的遍历,减少了系统查询的数据量,提高了数据读取的效率。
请参照图2,本发明另一实施例提供了一种Cache读写装置,包括:
存储模块,用于将写入所述Cache的数据按照笛卡尔树结构存储在预设缓冲区;
接收模块,用于接收数据读写请求;
操作模块,用于根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作。
本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述Cache读写方法中的各个步骤。
请参照图3,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述Cache读写方法中的各个步骤。
本发明上述Cache读写的方法、装置、计算机可读存储介质及电子设备可以应用于任何类型的Cache读写,具有通用性,以下通过具体实施方式进行说明:
实施例一
请参照图1,一种Cache读写方法,包括步骤:
将写入所述Cache的数据按照笛卡尔树结构存储在缓冲区;
所述笛卡尔树是一种特定的二叉树结构,可以由数列构造,具有堆的有序性,中序遍历的方式可以输出原数列;按照中序遍历的方式即左子节点->父节点->右子节点可以还原数据在堆中的顺序,同时笛卡尔树保证父节点小于或者大于左右子节点的值,图1中采用父节点值小于左右子节点值的方式进行的构造;
接收数据读写请求;
根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作;
其中,所述将写入所述Cache的数据按照笛卡尔树结构存储在缓冲区包括:
将所述写入所述Cache的数据的地址信息存储在所述笛卡尔树的节点中;
所述节点还存储有分别指向所述节点的左节点、右节点和父节点的指针。
将所述笛卡尔树的节点存储到所述预设缓冲区。
具体的,本实施例中,所述节点的结构声明如下:
其中left/right分别指向该节点的左子节点、右子节点,parent指向该节点的父节点,此处父节点是指所述笛卡尔树中节点的上一级节点;Laa(logic AU address)字段记录了本次读写地址信息,主机读写都会携带地址信息,该主机读写携带的地址信息即LBA(logic block address,逻辑块地址),如果按照4KB的分配单元AU(allocate_unit)大小进行处理的话,每个笛卡尔树节点(DKR_node)存储一个Laa的信息,Laa=LBA/8(4KB包括8个sectors);Ptr中保存着Laa对应的数据地址,Ptr为结构中的字段,表示存储的数据的指针;如图4所示,本实施例中节点中存放的3、5等数值表示的是节点(node)中的Laa值;
所述缓冲区存储有分别指向所述笛卡尔树的最左节点、最右节点和根节点的指针;
所述缓冲区为环形;
具体的,本实施例中,内存中分配固定大小空间作为所述环形缓冲区,由于上述DKR_node_t的大小为16Bytes,如果分配2kB大小的环形缓冲区(buffer),可以容纳128个节点,本实施例中用环形缓冲区,保存最左侧和最右侧的索引(即指针),可以快速的处理分配和释放操作,所述环形缓冲区的结构声明如下:
其中node_buffer_address保存了分配的节点缓冲区地址;left/right分别指向该笛卡尔树的最左节点和最右节点,root指向该笛卡尔树的根节点,此处根节点是指笛卡尔树整个结构中位于最顶端的节点;status记录读写Cache的状态;
本实施例中所述环形缓冲区中保存的node信息如图5所示,其中left指向最左侧节点的位置0,right指向最右侧的节点位置8,root指向根节点的位置2;
所述数据读写请求包括数据写入请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到数据写入请求时,将所述写入的数据的地址信息保存在所述环形缓冲区中所述最右节点指针指向的下一个节点;
具体的,当接收到数据写入请求时,判断所述环形缓冲区的空间是否已被占满,若是,在所述笛卡尔树中删除所述最左节点指针指向的节点,并将所述写入的数据的地址信息保存在所述最右节点指针指向的下一个节点;
当所述写入或者所述删除操作完成后,所述环形缓冲区中所述最右节点指针或所述最左节点指针对应的指向下一个位置;
所述笛卡尔树数据顺序处理的原则为从笛卡尔树的最右侧节点向父节点遍历,如果右侧节点值大于等于待插入的节点值时,则执行插入;删除则从笛卡尔树的最左侧节点进行处理;本实施例中,插入新的数据为11并且删除数据3后,对应的处理如图6所示;新写入的数据保存在RW_DKR_Cache结构中right指向的下一个位置;如果出现RW_DKR_Cache结构中right指向的下一个位置等于left指向的值时,则表示当前缓冲区已经没有空间,则需要删除的数据为RW_DKR_Cache结构中left指向的节点;删除或者插入完成后,left或者right将指向下一个位置,由于采用的环形缓冲区方案,如果达到缓冲区的结束地址,则跳转至缓冲区的开始位置,依次循环使用。
实施例二
本实施例在上述实施例一的基础上:
所述节点存放的信息还包括所述节点的状态;
所述状态包括取消状态;
还包括待处理状态、处理中状态、处理完状态;
当接收到数据写入请求时,若在所述笛卡尔树中存在与所述数据写入请求中的地址相同值的节点时,将冲突的节点标记为取消状态;
具体的,所述status记录该node的状态,包括待处理、处理中、处理完、取消这四种状态;例如在图6的基础上插入数据5,处理结果如图7所示,需要先将最左侧的值为5的节点标记为取消状态,待执行删除操作时,如果发现状态为取消,则直接删除即可无须下一步操作;这里的值为5表示的是所述Laa的值,即表示主机对地址为5的位置下发了读写;在图7中,若继续进行数据删除,数据1被删除后,数据2成为根节点,当数据2作为根节点时,其同时作为左节点left和根节点root,当插入新的数据1时,因为数据1比数据2小,且本发明实施例中的笛卡尔树是采用父节点值小于等于左右子节点值的方式进行的构造,新插入的数据1会成为根节点root,该笛卡尔树上原来的所有节点都在新插入的数据1的左子树中。
实施例三
本实施例在上述实施例一或二的基础上:
所述读写请求包括数据读取请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接受到所述数据读取请求时,确定所述数据读取请求中的地址;
根据所述地址从所述根节点指针指向的节点开始遍历与比较,包括:
当所述笛卡尔树的父节点小于等于左右子节点时,若节点的值大于等于所述地址,则停止遍历所述节点的左右子树;
当所述笛卡尔树的父节点大于等于左右子节点时,若节点的值小于等于所述地址,则停止遍历所述节点的左右子树;
具体的,本实施例中,根据笛卡尔树的根节点root指向的节点开始遍历,并采用广度遍历的方式来进行搜索,如图8所示,图8中笛卡尔树是采用父节点值小于等于左右子节点值的方式进行的构造,若搜索节点值为3的数据,一旦搜索到大于等于3的节点则退出该子树的搜索,比如图8中搜索到值为4的节点就退出,意味在该笛卡尔树中没有节点值为3的数据。
实施例四
参照图2,一种Cache读写装置,包括:
存储模块,用于将写入所述Cache的数据按照笛卡尔树结构存储在节点缓冲区;
接收模块,用于接收数据读写请求;
操作模块,用于根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作。
实施例五
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例一至三中任一个中的一种Cache读写方法中的各个步骤。
实施例六
参照图3,一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例一至三中任一个中的一种Cache读写方法中的各个步骤。
综上所述,本发明提供的Cache读写方法基于笛卡尔树原理实现,通过从内存中分配固定大小空间作为环形缓冲区,用来存储包含数据写入信息的节点,节点之间的关系为笛卡尔树的数据结构,每次写入数据时,保存在笛卡尔树最右节点指针指向的下一个节点,当连续写入数据时,保存对应数据的节点位于相邻位置,相对现有技术中的哈希算法实现了数据的保序性;当读取数据时,通过从环形缓冲区的根节点指针指向的位置开始遍历,利用堆的有序性,在遍历过程中对节点值做相应比较,可以排除一些子树,从而减少要查询的数据量,相对现有技术中先进先出的链表算法,避免一一比对所有节点,提高了读取数据的效率;综上所述,本发明提供的Cache读写方法可以实现数据写入的保序性,并提高数据读取的效率,从而提升主机读写性能。
在本申请所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种Cache读写方法,其特征在于,包括步骤:
将写入Cache的数据按照笛卡尔树结构存储在预设缓冲区;
接收数据读写请求;
根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作:
所述将写入Cache的数据按照笛卡尔树结构存储在预设缓冲区包括:
将所述写入所述Cache的数据的地址信息存储在所述笛卡尔树的节点中;
所述节点还存储有分别指向所述节点的左节点、右节点和父节点的指针;
将所述笛卡尔树的节点存储到所述预设缓冲区;
所述预设缓冲区存储有分别指向所述笛卡尔树的最左节点、最右节点和根节点的指针;
所述数据读写请求包括数据写入请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到数据写入请求时,将所述写入的数据的地址信息保存在所述预设缓冲区中所述最右节点指针指向的下一个节点;
所述预设缓冲区为环形缓冲区;
当接收到数据写入请求时,判断所述环形缓冲区的空间是否已被占满,若是,在所述笛卡尔树中删除所述最左节点指针指向的节点,并将所述写入的数据的地址信息保存在所述最右节点指针指向的下一个节点。
2.根据权利要求1所述的一种Cache读写方法,当数据写入或者数据删除操作完成后,所述环形缓冲区中所述最右节点的指针或所述最左节点的指针对应的指向下一个位置。
3.根据权利要求1至2中任一项所述的一种Cache读写方法,其特征在于,
所述节点存放的信息还包括所述节点的状态;
所述状态包括取消状态;
当接收到数据写入请求时,若在所述笛卡尔树中存在与所述数据写入请求中的地址相同值的节点时,将与所述数据写入请求中的地址相同值的节点的状态标记为取消状态。
4.根据权利要求1所述的一种Cache读写方法,其特征在于,
所述读写请求包括数据读取请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到所述数据读取请求时,确定所述数据读取请求中的地址;
根据所述地址从所述笛卡尔树的根节点指针指向的节点开始遍历,并将所述数据读取请求的地址与遍历到的节点的节点值进行比较:
当所述笛卡尔树的父节点小于或者等于其左、右子节点时,若节点的值大于或者等于所述地址,则停止遍历所述节点的左、右子树;
当所述笛卡尔树的父节点大于或者等于其左、右子节点时,若节点的值小于或者等于所述地址,则停止遍历所述节点的左右子树。
5.一种Cache读写装置,其特征在于,包括:
存储模块,用于将写入所述Cache的数据按照笛卡尔树结构存储在预设缓冲区;
接收模块,用于接收数据读写请求;
操作模块,用于根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作;
所述将写入Cache的数据按照笛卡尔树结构存储在预设缓冲区包括:
将所述写入所述Cache的数据的地址信息存储在所述笛卡尔树的节点中;
所述节点还存储有分别指向所述节点的左节点、右节点和父节点的指针;
将所述笛卡尔树的节点存储到所述预设缓冲区;
所述预设缓冲区存储有分别指向所述笛卡尔树的最左节点、最右节点和根节点的指针;
所述数据读写请求包括数据写入请求;
所述根据所述数据读写请求在所述笛卡尔树中进行遍历并执行对应的操作包括:
当接收到数据写入请求时,将所述写入的数据的地址信息保存在所述预设缓冲区中所述最右节点指针指向的下一个节点;
所述预设缓冲区为环形缓冲区;
当接收到数据写入请求时,判断所述环形缓冲区的空间是否已被占满,若是,在所述笛卡尔树中删除所述最左节点指针指向的节点,并将所述写入的数据的地址信息保存在所述最右节点指针指向的下一个节点。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任意一项所述的一种Cache读写方法中的各个步骤。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4任意一项所述的一种Cache读写方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011428133.0A CN112527196B (zh) | 2020-12-07 | 2020-12-07 | Cache读写方法、装置、计算机可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011428133.0A CN112527196B (zh) | 2020-12-07 | 2020-12-07 | Cache读写方法、装置、计算机可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527196A CN112527196A (zh) | 2021-03-19 |
CN112527196B true CN112527196B (zh) | 2023-02-14 |
Family
ID=74996884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011428133.0A Active CN112527196B (zh) | 2020-12-07 | 2020-12-07 | Cache读写方法、装置、计算机可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527196B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117150086B (zh) * | 2023-09-12 | 2024-03-22 | 北京云枢创新软件技术有限公司 | 基于层次结构树的子节点的生成方法、电子设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0438958A2 (en) * | 1990-01-22 | 1991-07-31 | International Business Machines Corporation | Byte stream file management using shared and exclusive locks |
US6347318B1 (en) * | 1999-09-01 | 2002-02-12 | Hewlett-Packard Company | Method, system, and apparatus to improve performance of tree-based data structures in computer programs |
CN101452422A (zh) * | 2007-11-29 | 2009-06-10 | 大唐移动通信设备有限公司 | 一种芯片的数据读写方法、相应装置和系统 |
CN106649131A (zh) * | 2016-12-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种固态硬盘及其逻辑地址范围冲突监控方法、系统 |
CN110968526A (zh) * | 2018-09-28 | 2020-04-07 | 英特尔公司 | 用于加速存储器访问操作的技术 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7073041B2 (en) * | 2002-10-30 | 2006-07-04 | Motorola, Inc. | Virtual memory translation unit for multimedia accelerators |
CN101853190B (zh) * | 2010-06-04 | 2012-07-04 | 华中科技大学 | 一种适用于嵌入式处理器的数据完整性验证方法 |
WO2017196315A1 (en) * | 2016-05-11 | 2017-11-16 | Hitachi, Ltd. | Data storage system and process for reducing read and write amplifications |
CN110825733B (zh) * | 2019-10-08 | 2022-08-09 | 华中科技大学 | 一种面向多采样流的时间序列数据管理方法及系统 |
-
2020
- 2020-12-07 CN CN202011428133.0A patent/CN112527196B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0438958A2 (en) * | 1990-01-22 | 1991-07-31 | International Business Machines Corporation | Byte stream file management using shared and exclusive locks |
US6347318B1 (en) * | 1999-09-01 | 2002-02-12 | Hewlett-Packard Company | Method, system, and apparatus to improve performance of tree-based data structures in computer programs |
CN101452422A (zh) * | 2007-11-29 | 2009-06-10 | 大唐移动通信设备有限公司 | 一种芯片的数据读写方法、相应装置和系统 |
CN106649131A (zh) * | 2016-12-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种固态硬盘及其逻辑地址范围冲突监控方法、系统 |
CN110968526A (zh) * | 2018-09-28 | 2020-04-07 | 英特尔公司 | 用于加速存储器访问操作的技术 |
Non-Patent Citations (1)
Title |
---|
嵌入式实时操作系统FreeRTOS的内核研究;张龙彪;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140228;I138-399 * |
Also Published As
Publication number | Publication date |
---|---|
CN112527196A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4611272A (en) | Key-accessed file organization | |
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
US10698831B2 (en) | Method and apparatus for data access | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
CN103229164B (zh) | 数据访问方法和装置 | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
CN111832065A (zh) | 使用电路实现的软件和用于密钥-值存储的方法 | |
WO2015093026A1 (ja) | 書き込み情報記憶装置、方法、及び、記録媒体 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
US11074133B2 (en) | Method, electronic device and computer readable medium of file management | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN112527196B (zh) | Cache读写方法、装置、计算机可读存储介质及电子设备 | |
US7987205B1 (en) | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations | |
CN104424222A (zh) | 数据库索引方法及装置 | |
US10698865B2 (en) | Management of B-tree leaf nodes with variable size values | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
CN110515897B (zh) | Lsm存储系统读性能的优化方法及系统 | |
CN111625198A (zh) | 一种元数据缓存方法和元数据缓存装置 | |
CN110110034A (zh) | 一种基于图的rdf数据管理方法、装置及存储介质 | |
US20240028560A1 (en) | Directory management method and system for file system based on cuckoo hash and storage medium | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
KR100878142B1 (ko) | 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법 | |
CN109325023B (zh) | 一种数据处理方法及装置 | |
EP0117906B1 (en) | Key-accessed file organization | |
CN105549903B (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 |