CN109992535A - 一种存储控制方法、装置和系统 - Google Patents

一种存储控制方法、装置和系统 Download PDF

Info

Publication number
CN109992535A
CN109992535A CN201711483173.3A CN201711483173A CN109992535A CN 109992535 A CN109992535 A CN 109992535A CN 201711483173 A CN201711483173 A CN 201711483173A CN 109992535 A CN109992535 A CN 109992535A
Authority
CN
China
Prior art keywords
address
write
list item
storage
data
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.)
Granted
Application number
CN201711483173.3A
Other languages
English (en)
Other versions
CN109992535B (zh
Inventor
李鸽子
弗洛里安·朗诺斯
杨伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201711483173.3A priority Critical patent/CN109992535B/zh
Publication of CN109992535A publication Critical patent/CN109992535A/zh
Application granted granted Critical
Publication of CN109992535B publication Critical patent/CN109992535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种存储控制方法,装置和系统。该方法包括:存储控制器接收第一写指令,该第一写指令中包含第一写数据和第一写地址。存储控制器根据第一写地址的第一子集在第一索引表中查找到与第一写地址对应的第一表项,将第一写数据写入写缓冲器的第一存储行的数据域,将第一写地址写入第一存储行的地址域,并将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行。表项的第一指针域用于记录与该表项对应的最新的数据在写缓存器中存储的位置,用于确定与该表项对应的数据在写缓冲器中的存储位置。在后续进行数据查找时,可以快速定位查找范围,缩小了数据查找的范围,减少了查找时间。

Description

一种存储控制方法、装置和系统
技术领域
本发明实施例涉及计算机领域,尤其涉及一种存储控制方法、装置和系统。
背景技术
写缓冲器(write buffer)是一种数据缓冲器,常被用于处理器的缓存架构中,用于临时存放处理器将要写入到内存中的数据。通过这种方式,系统可以将高速的处理器和缓存(cache)从对内存的低速读写操作中脱离了出来。
写缓冲器内部数据存储格式通常包括处理器发送的“写地址”以及“写数据”,其中“写地址”表示将要处理器发送的要写入内存的地址,“写数据”代表要写入“写地址”内的数据。
在可查询写缓冲器的系统中,当系统发送读操作请求时,处理器通常会先查询写缓冲器内的数据。当所查询的数据存在于写缓冲器中时,处理器会从写缓冲器中读出数据;当所查询的数据不在写缓冲器中时,处理器会从内存中读取数据。接收到读请求后,存储控制器会从逐一读出写缓冲器内存储的写地址“address 0”至“address N”,并与读操作地址“address”对比。当“address 0”至“address N”内某一地址与“address”相等时,读出该地址所在行中“写数据”。当写缓冲器容量十分大时,如何快速查询写缓冲器内的数据成为提高系统查询效率的关键因素。
发明内容
有鉴于此,本申请公开了一种存储控制方法、装置和系统。根据系统地址的位子集设置多个索引表,通过查询各个索引表来确定写缓存器的查询范围,从而减少查询写缓冲器的范围。
第一方面,本申请提供了一种存储控制方法,该方法包括:存储控制器接收第一写指令,该第一写指令中包含第一写数据和第一写地址,根据第一写地址的第一子集在第一索引表中查找到与第一写地址对应的第一表项,将第一写数据写入写缓冲器的第一存储行的数据域,将第一写地址写入第一存储行的地址域,并将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行。
表项的第一指针域用于记录与该表项对应的最新的数据在写缓存器中存储的位置,用于确定与该表项对应的数据在写缓冲器中的存储位置。本申请通过使用索引表记录包含特定位子集的系统地址对应的数据在写缓冲器中存储的位置,在后续进行数据查找时,可以取与地址对应的多个索引表项记录的地址范围的交集,并在交集中查找包含该地址的存储行。从而缩小了数据查找的范围,减少了查找时间。
根据第一方面,在第一方面第一种可能的实现方式中,存储控制器将第一写数据写入写缓冲器的第一存储行的数据域之前,该方法还包括:存储控制器检测到第一表项的第一指针域为空。
因为表项的第一指针域用于存储与该表项对应的最新的数据在写缓冲器中存储的位置,如果第一表项的第一指针域为空,则说明写缓冲器中不可能包含第一写地址,在写合并模式下,存储控制器会把数据写入一个新的存储行,并将缓存行的地址标识写入第一表项的第一指针域。
根据第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,该方法还包括:存储控制器将第一写地址写入第一表项的第二指针域。
第二指针域用于记录与表项对应的第一份数据在写缓存器中存储的位置,第一指针域用于记录与表项对应的最新的数据在写缓冲器中存储的位置,存储控制器可以通过第一指针域和第二指针域节点与表项对应的数据在缓冲器中的地址范围,从而减少查找范围。对写缓冲器来说,如果第一写数据是与第一表项对应的第一份数据,则存储控制器将第一写地址也存储与第一表项的第二指针域。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第三种可能的实现方式中,该方法还包括:存储控制器接收第二写指令,第二写指令中包含第二写数据和第二写地址,第二写地址包含第一子集;存储控制器检测到写缓冲器中不包含第二写地址;存储控制器将第二数据写入写缓冲器的第二存储行的数据域,并将第二写地址写入第二存储行的地址域;存储控制器将第二地址标识写入第一表项的第一指针域,第二地址标识用于指示第二存储行。
表项的第一指针域用于记录与表项对应的最新的数据在写缓冲器中存储的位置,在写合并模式下,与第二写地址对应的第一表项的第一指针域不为空,则说明有与第一表项对应的数据存在于写缓冲器,则存储控制器需要在写缓存中超找该第二写地址,如果存储控制器在写缓冲器中没有查找到第二写地址,则存储控制器将第二写数据写入写缓冲器的一个新的存储行,并更新第一写地址的第一指针域存储的地址标识。
根据第一方面第三种可能的实现方式,在第一方面第四种可能的实现方式中,存储控制器检测到写缓冲器中不包含第二写地址包括:存储控制器在至少两个索引表中分别查找与第二写地址对应的表项;存储控制器获取与第二写地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;存储控制器检测到与第二写地址对应的表项记录的地址范围的交集指示的存储行中不包含第二写地址。
表项的第一指针域用于记录与表项对应的最新的数据在写缓冲器中存储的位置,第二指针域用于记录与表项对应的第一个数据在写缓冲器中存储的位置,因为数据是以地址从小大的顺序依次写入写缓冲器的,则根据第一指针域和第二指针域中存储的地址标识,可以确定与表项对应的数据在写缓冲器中的地址范围。存储控制器可以在确定的地址范围内查找对应的数据,从而减少查找的范围,缩短查找的时间。
根据第一方面第三种或第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,该方法还包括:存储控制器在与第二写地址对应的表项的第一指针域中查找最小的地址标识;存储控制器将第二地址标识写入最小的地址标识指示的存储行的指针域。
表项的第一指针域用于记录与表项对应的最新的数据在写缓冲器中存储的位置,第二指针域用于记录与表项对应的第一个数据在写缓冲器中存储的位置,存储行的指针域用于记录对应相同表项的下一个数据在写缓冲器中存储的位置。存储行的指针域存储的地址标识将对应相同表项的数据组成了一个链表,根据存储行的地址域存储的地址标识可以找到对应相同存储存储行,即地址相似的数据。
根据第一方面第五种可能的实现方式,在第一方面第六种可能的实现方式中,该方法还包括:存储控制器将最小的地址标识指示的存储行的数据域中的数据写入内存;存储控制器根据最小的地址标识指示的存储行的指针域记录的第二地址标识,将第二存储行的数据域中保存的第二写数据写入内存。
在将写缓冲器中的数据写入内存时,可以按照根据存储行的指针域中存储的地址表项,将对应相同表项的数据依次写入内存,因为对应相同表项的系统地址比较相似,可以在一定程度上减少内存寻址的时间。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第七种可能的实现方式中,该方法还包括:存储控制器接收第三写指令,第三写指令包含第三写数据和第三写地址;存储控制器在至少两个索引表中分别查找与第三写地址对应的表项;存储控制器获取与第三写地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;存储控制器检测到与第三写地址对应的表项记录的地址范围的交集指示的存储行中存在第三存储行包含第三写地址;存储控制器将第三写数据写入第三存储行的数据域。
在写合并模式下,存储控制器在与第三写地址对应的所有表项记录的地址范围的交集指示的存储行中查找该第三写地址,如果查找到写缓冲器包含该第三写地址,则存储控制器使用写的第三写数据替换第三存储行中存储的老数据。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第八种可能的实现方式中,该方法还包括:存储控制器接收第一读请求,第一读请求中包含第一读地址;存储控制器在至少两个索引表中检测到与第一读地址对应的至少一个表项的第一指针域为空;存储控制器根据第一读地址在内存中查找待读取数据。
因为表项的第一指针域用于存储与该表项对应的最新的数据在写缓冲器中存储的位置,如果与第一读地址对应的表项中有表项的第一指针域为空,则说明写缓冲器中不可能包含待读取地址。存储控制器可以直接去内存读取待读取数据,从而避免了对写缓冲器的查找。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第九种可能的实现方式中,该方法还包括:存储控制器接收第二读请求,第二读请求中包含第二读地址;存储控制器在至少两个索引表中分别查找与第二读地址对应的表项;存储控制器获取与第二读地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;存储控制器检测到与第二读地址对应的表项记录的地址范围的交集指示的存储行中不存在第二读地址;存储控制器根据第二读地址在内存中查找待读取数据。
表项的第一指针域用于记录与表项对应的最新的数据在写缓冲器中存储的位置,第二指针域用于记录与表项对应的第一份数据在写缓冲器中存储的位置。如果与第二读地址对应的表项的第一指针域均不为空,则存储控制器在与第二读地址对应的表项记录的地址范围的交集指示的缓存行中查找第二读地址,如果在地址范围的交集中没有查找到该第二读数据,则存储控制器去内存读取待读取数据,从而减少查找的时间。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第十种可能的实现方式中,该方法还包括:存储控制器接收第三读请求,第三读请求中包含第三读地址;存储控制器在至少两个索引表中分别查找与第三读地址对应的表项;存储控制器获取与第三读地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;存储控制器检测到与第三读地址对应的表项记录的地址范围的交集指示的存储行中存在第四存储行包含第三读地址;存储控制器读取第四存储行的数据域存储的数据。
如果与第三读地址对应的表项的第一指针域均不为空,则存储控制器在与第三读地址对应的表项记录的地址范围的交集指示的存储行中查找该第三读地址,从而减少查找范围,如果地址范围指示的存储行中包含该第三读地址,则可以直接在写缓存器中读取待读取数据。
第二方面,本申请提供了一种可读介质,包括执行指令,当计算设备的处理器执行该执行指令时,该计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第三方面,本申请提供了一种计算设备,包括:处理器、存储器和总线;存储器用于存储执行指令,处理器与存储器通过总线连接,当计算设备运行时,处理器执行存储器存储的执行指令,以使计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第四方面,本申请提供了一种存储控制装置,其特征在于,该装置包括:接收单元,用于接收第一写指令,第一写指令中包含第一写数据和第一写地址;查找单元,用于根据第一写地址的第一子集在第一索引表中查找与第一写地址对应的第一表项;写入单元,用于将第一写数据写入写缓冲器的第一存储行的数据域,并将第一写地址写入第一存储行的地址域;写入单元还用于将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行。
根据第四方面,在第四方面第一种可能的实现方式中,该装置还包括检测单元,用于检测第一表项的第一指针域是否为空。
根据第四方面第一种可能的实现方式,在第四方面第二种可能的实现方式中,该写入单元还用于在检测单元检测到第一表项的第一指针域为空时,将第一写地址写入第一表项的第二指针域。
根据第四方面或第四方方面以上任一种可能的实现方式,在第四方面第三种可能的实现方式中,接收单元还用于接收第二写指令,第二写指令中包含第二写数据和第二写地址,第二写地址包含第一子集;查找单元还用于查找写缓冲器中是否包含第二写地址;写入单元还用于在查找单元查找到写缓冲器中不包含第二写地址时,将第二数据写入写缓冲器的第二存储行的数据域,并将第二写地址写入第二存储行的地址域;写入单元还用于将第二地址标识写入第一表项的第一指针域,第二地址标识用于指示第二存储行。
根据第四方面第三种可能的实现方式,在第四方面第四种可能的实现方式中,查找单元用于在至少两个索引表中分别查找与第二写地址对应的表项,获取与第二写地址对应的表项记录的地址范围的交集,并在与第二写地址对应的表项记录的地址范围的交集指示的存储行中查找第二写地址,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围。
根据第四方面第三种或第四方面第四种可能的实现方式,在第四方面第五种可能的实现方式中,查找单元还用于在与第二写地址对应的表项的第一指针域中查找最小的地址标识;写入单元还用于将第二地址标识写入最小的地址标识指示的存储行的指针域。
根据第四方面第五种可能的实现方式,在第四方面第六种可能的实现方式中,写入单元还用于将最小的地址标识指示的存储行的数据域中的数据写入内存;写入单元还用于根据最小的地址标识指示的存储行的指针域记录的第二地址标识,将第二存储行的数据域中保存的第二写数据写入内存。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第七种可能的实现方式中,接收单元还用于接收第三写指令,第三写指令包含第三写数据和第三写地址;查找单元还用于在至少两个索引表中分别查找与第三写地址对应的表项,获取与第三写地址对应的表项记录的地址范围的交集,并在与第三写地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含第三写地址的第三存储行,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;当查找单元查找到第三存储行时,写入单元还用于将第三写数据写入第三存储行的数据域。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第八种可能的实现方式中,接收单元还用于接收第一读请求,第一读请求中包含第一读地址;检测单元还用于在至少两个索引表中检测是否存在与第一读地址对应的至少一个表项的第一指针域为空;该装置还包括读取单元,用于在检测单元检测到与第一读地址对应的至少一个表项的第一指针域为空时,根据第一读地址在内存中查找待读取数据。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第九种可能的实现方式中,接收单元还用于接收第二读请求,第二读请求中包含第二读地址;查找单元还用于在至少两个索引表中分别查找与第二读地址对应的表项,取与第二读地址对应的表项记录的地址范围的交集,并在与第二读地址对应的表项记录的地址范围的交集指示的存储行中查找第二读地址,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;该装置还包括读取单元,用于在查找单元查找到与第二读地址对应的表项记录的地址范围的交集指示的存储行中不存在第二读地址时,根据第二读地址在内存中查找待读取数据。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第十种可能的实现方式中,接收单元还用于接收第三读请求,第三读请求中包含第三读地址;查找单元还用于在至少两个索引表中分别查找与第三读地址对应的表项,取与第三读地址对应的表项记录的地址范围的交集,并在与第三读地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含第三读地址的第四存储行,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;该装置还包括读取单元,用于在查找单元查找到与第三读地址对应的表项记录的地址范围的交集指示的存储行中存在第四存储行时,读取第四存储行的数据域存储的数据。
第四方面为第一方面方法对应的装置实现方式,第一方面或第一方面任一种可能的实现方式中的描述对应适用于第四方面或第四方面任一种可能的实现方式,在此不再赘述。
第五方面,本申请公开了一种存储系统,该系统包括写缓冲器,内存和第四方面或第四方面任一种可能的实现方式中的存储控制装置,写缓冲器和内存用于存储数据。
根据本申请公开的技术方案,存储控制器接收到读请求后,可以通过查询多个索引表确定与读地址对应的多个表项,并取多个表项记录的地址范围的交集,首先判断交集是否为空,如果交集为空,则表明待读取数据不在写缓冲器内,从而可以避免对写缓冲器的遍历查询操作。如果交集不为空,则存储控制器可以只在地址范围的交集指示的写缓冲器中的存储行超找待读取数据,从而可以缩小查询写缓冲器的范围。
附图说明
图1为依据本申请一实施例的数据存储系统的逻辑结构示意图;
图2为依据本申请一实施例的索引表的结构示意图;
图3为依据本申请一实施例的位子集划分结构示意图;
图4为依据本申请一实施例的写缓冲器的结构示意图;
图5为依据本申请一实施例的写操作的方法流程示意图;
图6为依据本申请一实施例的写缓冲器的结构示意图;
图7为依据本申请一实施例的写操作的方法流程示意图;
图8为依据本申请一实施例的写操作的方法流程示意图;
图9为依据本申请一实施例的写操作的方法流程示意图;
图10为依据本申请一实施例的读操作的方法流程示意图;
图11为依据本申请一实施例的读操作的方法流程示意图;
图12为依据本申请一实施例的存储控制装置的组织结构示意图;
图13为依据本申请一实施例的存储控制装置的逻辑结构示意图。
具体实施方式
下面将结合附图,对本申请实施例进行描述。
本申请实施例采用术语第一和第二等来区分各个对象,但各个“第一”和“第二”之间不具有逻辑或时序上的依赖关系。例如,第一写请求和第二写请求。
在本发明实施例中,如图1所示,缓存与内存之间配置有写缓冲器,用于临时存放处理器将要写入到内存中的数据。当进行写操作时,需首先检测写缓冲器是否处于满状态,如果写缓冲器不满,系统会先将数据先写到写缓冲器中,然后在空闲时再将写缓冲器中的数据写入较低速的内存中;当写缓冲器为满时,系统可以等待写缓冲器内有空闲存储行,然后再将写数据写入写缓冲器。通过这种方式,系统可以将高速的处理器和缓存从对内存的低速读写操作中脱离了出来。
在本发明实施例中,写缓冲器可以存在于最后一级缓存(last level cache)和内存之间。当系统向内存中写数据时,先写入写缓冲器内,然后在空闲状态时再将写缓冲器内的数据写入内存中。当系统读取内存内的数据时,首先检测读取的数据是否存在于写缓冲器内,如果存在则读取数据返回处理器,如果不存在则再从内存中读取。
在本发明实施例中,覆瓦式索引表(Tiling Range Table,TRT)的结构如图2所示,在以下描述中,覆瓦式索引表也简称为索引表,索引表包含位子集域,第一指针域和第二指针域。位子集是系统地址的子集,即系统地址中的某几位。系统可以维护有多个索引表,每个索引表中的位子集不同,不同的位子集之间可以有相同的位。位子集划分如图3所示,图3设置3个位子集,可以根据需要设置更多个。第一指针域和第二指针域用于记录数据在写缓冲器中的地址,第一指针域指向的是最近一次写请求命中索引表表项,将数据写入写缓冲器时,存储写数据的存储行的地址;第二指针域指向的是第一次写请求命中索引表表项,将数据写入写缓冲器时,存储写数据的存储行的地址。
在本发明实施例中,如图4所示,写缓冲器包含地址域,数据域和指针域,其中,指针域用于存储写地址,即处理器发送的写内存的地址,数据域用于存储数据,即处理器发送的待写进内存的数据,指针域用于存储命中同一个索引表表项的写一个写请求中的写数据在写缓冲器中存储的地址。应理解,图4仅仅为写缓冲器的一个实例,在本发明的一些实施例中,写缓冲器可以不包含指针域。
在本发明实施例中,对于写写缓冲器的操作,按照是否允许写合并用途可分为两种方式:一种为:“写合并方式”,另一种为“不可写合并方式”,对应处理器的指令分别为“快速写指令”和“持久写指令”。其中,写合并是一种先查询写缓冲器,将相同地址的数据写入写缓冲器的同一行,达到数据写合并的目的;例如,当处理器将地址“address2,data8”写入写缓冲器内时,需要先检测写缓冲器内地址域内是否存在address2地址,如address2存在与地址域中,则使用data8覆盖该存储行中数据域的原始数据。不可写合并的操作是指处理器发送的“写地址”和“写数据”必须都存储于写缓冲器内;例如,当处理器将地址“address2,data8”写入写缓冲器内时,不需要查询操作,直接将“address2,data8”写入写缓冲器的写一个空闲行内。
传统方案通常是通过查询标签(tag)的方法来减少对写缓冲器内存储数据的查询,通过增加tag列,在查询写缓冲器之前,先将查询地址address与写缓冲器中tag进行对比。当命中时,确定命中的tag对应的多个存储行,然后依次读出这些存储行内存储的“写地址”。将这些“写地址”与查询地址address进行对比,当相等时,则读出“写地址”对应行的数据,返回给处理器;如果“写地址”与查询地址address均不相等,则查询数据不存在写缓冲器内。如果不命中,说明查询的数据不存在写缓冲器内。传统方法中,当写缓冲器容量大时,查询所用时间较长,而且当查询数据不在写缓冲器内时,系统可能仍需要进行查询写缓冲器的操作,会有大量的资源浪费。
图5为依据本发明一实施例的存储控制方法500的示意性流程图,在发明实施例中,写缓冲器支持写合并方式,如图5所示,方法500包括:
S501:存储控制器接收写指令,写指令中包含写地址和写数据。
存储控制器可以从处理器接收该写指令,存储控制器首先将写数据写入写缓冲器,从而将高速的处理器和缓存从对内存的低速读写操作中脱离出来。
S502:存储控制器检测是否存在与写地址对应且第一指针域为空的表项。如果存储控制器检测到存在与写地址对应且第一指针域为空的表项,则执行步骤S503;如果存储控制器检测到不存在与写地址对应且第一指针域为空的表项,则执行步骤S504。
具体的,系统包含多个索引表,存储控制器使用写地址的不同位子集分别在多个索引表中查找与写地址对应的表项,并确定与写地址对应的表项的第一指针域是否为空。应理解,此处的指针域为空是指指针域不存在有效数据。
S503:存储控制器将写地址和写数据写入一个新存储行,并将新缓存的地址写入与写地址对应的表项中。
如果存在与写地址对应且第一指针域为空的表项,则说明该写地址是首次写入写缓冲器,存储控制器可以直接将写地址和写数据写入一个新存储行。应理解,此处的新存储行是指不包含有效数据的存储行。
具体的,存储控制器将写地址写入该新存储行的地址域,并将写数据写入该新存储行的数据域。存储控制器将该写存储行的地址写入与该写地址对应的每个表项的第一指针域。
对于与写地址对应的多个表项,如果在步骤S503之前表项的第一指针域为空,则存储控制器还可以将新存储行的地址写入该表项的第二指针域。存储控制器也可以在后续更新表项的第一指针域前,将第一指针域中记录的地址写入第二指针域。
第二指针域用于记录存储与表项对应的多个写地址的首个写数据的存储行的地址,第一指针域用于记录存储与表项对应的多个写地址的最新的写数据的存储行的地址。
S504:存储控制器获取与写地址对应的表项记录的地址范围的交集。
如果多个索引表表中与写地址对应的表项中的第一指针域均不为空,则存储控制器读取与写地址对应的每个表项中的第一指针域和第二指针域中记录的地址,每个表项的第一指针域记录的地址A1和第二指针域记录的地址A2组成地址范围[A2,A1],存储控制器取多个表项对应的地址范围的交集[A3,A4]。
S505:存储控制器检测地址范围的交集指示的存储行中是否包含该写地址。如果地址范围的交集指示的存储行中包含该写地址,则执行步骤S506;如果地址范围的交集指示的存储行中不包含该写地址,则执行步骤S507。
存储控制器可以采用地址从大到小的顺序依次在地址范围的交集指示的存储行中检测查找的存储行的地址域是否包含该写地址。存储控制器在地址交集[A3,A4]指示的存储行中查找是否存在保存有该写地址的存储行。如果写缓冲器的地址交集[A3,A4]范围内没有存储行保存有该写地址,则说明写缓冲器中不包含该写地址对应的存储行。如果写缓冲器的地址交集[A3,A4]范围内存在存储行保存有该写地址,则发生了命中。
S506:存储控制器将写数据写入包含写地址的存储行。
如果发生了存储行命中,即存在存储行包含该写地址,对应写合并的方式,存储控制器只需要使用写数据替换该命中的存储行中存储的老数据即可。即存储控制器将写数据写入命中的存储行的数据域。命中的存储行即包含该写地址的存储行。
S507:存储控制器将写地址和写数据写入一个新存储行,并将该写存储行的地址写入与写地址对应的表项中。
如果地址范围的交集指示的存储行中不包含写地址,则说明该写地址是首次写入写缓冲器,存储控制器可以直接将写地址和写数据写入一个新存储行。应理解,此处的新存储行是指不包含有效数据的存储行。具体的,存储控制器将写地址写入该新存储行的地址域,并将写数据写入该新存储行的数据域。存储控制器将该写存储行的地址写入与该写地址对应的每个表项的第一指针域。
在写缓冲器中不存在保存有写地址的存储行时,如果写缓冲器有可用的空闲空间,则存储控制器根据存储行的地址顺序,将写数据写入写缓冲器的空闲的存储行的数据域,并将写地址写入该空闲的存储行的地址域。如果写缓冲器没有空闲的剩余空间,则存储控制器可以等将写缓冲器中的数据写入到内存后,再将写数据写入写缓冲器的空闲的存储行的数据域,并将写地址写入存储行的地址域。
可选的,方法500还包括:存储控制器在与写地址对应的表项的第一指针域中查找最小的地址标识,并将该新存储行的地址写入最小的地址标识指示的存储行的指针域。存储控制器在将写缓冲器中的数据写入内存时,可以先将最小的地址标识指示的存储行的数据域中的数据写入内存,然后根据最小的地址标识指示的存储行的指针域记录的地址标识,将该新存储行的数据域中保存的写数据写入内存。
例如,如图6所示,将写缓冲器内数据写入内存的顺序是从地址“1”开始的,然后检测到地址“1”链表域不为空,则跳转至链表域内存储地址“4”处且擦除写缓冲器地址“1”内所有数据;将地址“4”内数据写入内存,跳转至链表域内地址“6”处,擦除地址“4”所在行内数据;将地址“6”所在行数据写入内存中,检测到链表域为空,擦除该行数据,并跳转至写缓冲器最小不为空的地址“2”处;依次类推。本发明中当写缓冲器为满时,系统会停止继续向写缓冲器内的写操作,须先将写缓冲器内的数据写入内存后,更新各个索引表表,然后才可以对写缓冲器进行写操作。
可选的,本发明实施例中,存储控制器也可以根据写缓冲器地址从小到大的顺序,依次将写缓冲器中的数据写入内存。
图7为本发明的写合并模式的一个实施例。其中系统地址位宽为8,索引表1的位子集为{A7,A6,A5},共3位,则索引表1中有8行,按行依次列出位子集{A7,A6,A5}可能出现的值。索引表和写缓冲器的初始状态如图7(a)所示。处理器依次发送写地址和写数据{00000000,data1}、{00000001,data2}、{00100000,data3}、{00000010,data4}和{00100000,data5},其中地址为二进制表示。
快速写步骤:
(1)当接收到{00000000,data1}时,由于{A7,A6,A5}=3’b000,且索引表1中位子集“000”所在行中新指针域为空,则将{00000000,data1}存储于写缓冲器中,记录写缓冲器为1,并将1存储于索引表1的新指针域内,如图7(b)所示。
(2)当接收到{00000001,data2}时,由于{A7,A6,A5}=3’b000,且索引表1中位子集“000”所在行中新指针域不为空,读出新指针域内数据1,并按照该数据跳转至写缓冲器地址“1”所在行,读出该行写数据域数据“0000 0000”并与“0000 0001”比较,发现不相等。将{00000001,data2}存储进写缓冲器新一行,记录地址为2,将“2”插入“1”行的指针域内。由于索引表1位子集值“000”所在行旧指针域为空,将新指针域内数据迁移至旧指针域内,并将写缓冲器新行地址“2”存储进新指针域内,如图7(c)所示;
(3)当接收到{00100000,data3}时,按照(1)中步骤进行存储,存储结果如图7(d)所示;
(4)当接收到{00000010,data4}时,检测索引表1中位子集{A7,A6,A5}=000所在行中新指针域不为空,读出新指针域与旧指针域内数据组成地址范围(2,1),然后跳转至写缓冲器中“2”地址所在行,读出数据“0000 0001”与“00000010”进行比较,发现不相等,然后读出写缓冲器中“1”地址所在行数据“0000 0000”与“00000010”进行比较,发现不相等,则将{00000010,data4}存储在写缓冲器内新行“4”中,并将地址“4”更新至索引表的新指针域内,如图7(e)。
(5)当接收到{00100000,data5}时,检测索引表1中位子集{A7,A6,A5}=001所在行中新指针域不为空,由于旧指针域为空,则新指针域与旧指针域内数据组成地址范围(3,3),跳转至写缓冲器中地址“3”所在行,读出数据“00000010”与接收到的写地址“00100000”相等,则将写数据data5写入写缓冲器中地址“3”所在行写数据域内,覆盖掉data3,如图7(f)所示。
图8为依据本发明一实施例的写缓冲器的访问方法800的示意性流程图,在发明实施例中,写缓冲器支持“不可写合并方式”,如图8所示,方法800包括:
S801:存储控制器接收写指令,写指令中包含写地址和写数据。
存储控制器可以从处理器接收该写指令,存储控制器首先将写数据写入写缓冲器,从而将高速的处理器和缓存从对内存的低速读写操作中脱离出来。
S802:存储控制器将写地址和数据写于一个新存储行。
具体的,存储控制器将写地址写入该新存储行的地址域,并将写数据写入该新存储行的数据域。
S803:存储控制器将新存储行的地址写入与写地址对应的表项中。
存储控制器将该写存储行的地址写入与该写地址对应的每个表项的第一指针域。对于与写地址对应的多个表项,如果在步骤S803之前表项的第一指针域为空,则存储控制器还可以将新存储行的地址写入该表项的第二指针域。存储控制器也可以在后续更新表项的第一指针域前,将第一指针域中记录的地址写入第二指针域。
可选的,方法800还包括:如果与写地址对应的所有表项的第一指针域均不为空,则存储控制器在与写地址对应的表项的第一指针域中查找最小的地址标识,并将该新存储行的地址写入最小的地址标识指示的存储行的指针域。存储控制器在将写缓冲器中的数据写入内存时,可以先将最小的地址标识指示的存储行的数据域中的数据写入内存,然后根据最小的地址标识指示的存储行的指针域记录的地址标识,将该新存储行的数据域中保存的写数据写入内存。具体描述参照图6,在此不再赘述。
图9为本发明的写合并模式的一个实施例。其中系统地址位宽为8,索引表1的位子集为{A7,A6,A5},共3位,则索引表1中有8行,按行依次列出位子集{A7,A6,A5}可能出现的值。索引表和写缓冲器的初始状态如图9(a)所示。处理器依次发送写地址和写数据{00000000,data1}、{00000001,data2}、{00100000,data3}、{00000010,data4}和{00100000,data5},其中地址为二进制表示。
持久写步骤:
(1)当接收到{00000000,data1}时,将{00000000,data1}存储进写缓冲器内,同时检测索引表1中{A7,A6,A5}=3’b000新指针域是否为空。当为空时,将1存储于索引表1的新指针域内,如图9(b)所示。
(2)当接收到{00000001,data2}时,将{00000001,data2}存储进写缓冲器新一行,记录地址为2;同时检测到索引表1中{A7,A6,A5}=3’b000新指针域不为空就指针域为空,则将新指针域内数据“1”存储进旧指针域内,将记录的写缓冲器地址“2”存储到新指针域内;如图9(c)所示;
(3)当接收到{00100000,data3}时,按照①中步骤进行存储,存储结果如图(d)所示;
(4)当接收到{00000010,data4}时,将{00000010,data4}存储进写缓冲器新一行,记录地址为4;同时检测到索引表1中{A7,A6,A5}=3’b000新指针域不为空就指针域不为空,则将记录的地址4插入索引表1中{A7,A6,A5}=3’b000所在行的新指针域内;如图9(e);
(5)当接收到{00100000,data5}时,将{00100000,data5}存储进写缓冲器新一行,记录地址为5,同时检测到索引表1中{A7,A6,A5}=3’b001新指针域不为空就指针域不为空且旧指针域为空,则将新指针域内数据“3”插入旧指针域内,将记录的地址5插入索引表1中{A7,A6,A5}=3’b001所在行的新指针域内以及写缓冲器地址“3”所在行的链表指针域内,如图9(f)所示。
图10为依据本发明一实施例的写缓冲器的访问方法1000的示意性流程图,如图10所示,方法1000包括:
S1001:存储控制器接收读指令,读指令中包含读地址。
存储控制器可以从处理器接收该读指令,存储控制器首先从写缓冲器中查找是否存在与写地址对应的存储行,即保存有该读地址的存储行。
S1002:存储控制器检测是否存在与读地址对应且第一指针域为空的表项。如果存储控制器检测到存在与读地址对应且第一指针域为空的表项,则执行步骤S1003;如果存储控制器检测到不存在与读地址对应且第一指针域为空的表项,则执行步骤S1004。
具体的,系统包含多个索引表,存储控制器使用读地址的不同位子集分别在多个索引表中查找与读地址对应的表项,并确定与读地址对应的表项的第一指针域是否为空。应理解,此处的指针域为空是指指针域不存在有效数据。
S1003:存储控制器从内存中读取待读取数据。
如果存在与读地址对应且第一指针域为空的表项,则说明读缓存器中没有与读地址对应的存储行。存储控制器需要从内存中读取待读取数据。
S1004:存储控制器获取与读地址对应的表项记录的地址范围的交集。
如果多个索引表表中与读地址对应的表项中的第一指针域均不为空,则存储控制器读取与读地址对应的每个表项中的第一指针域和第二指针域中记录的地址,每个表项的第一指针域记录的地址和第二指针域记录的地址组成地址范围,存储控制器取多个表项对应的地址范围的交集。
S1005:存储控制器检测地址范围的交集指示的存储行中是否包含该读地址。如果地址范围的交集指示的存储行中包含该读地址,则执行步骤S1006;如果地址范围的交集指示的存储行中不包含该读地址,则执行步骤S1007。
存储控制器可以采用地址从大到小的顺序依次在地址范围的交集指示的存储行中检测查找的存储行的地址域是否包含该读地址。存储控制器在地址交集指示的存储行中查找是否存在保存有该读地址的存储行。如果写缓冲器的地址交集范围内没有存储行保存有该读地址,则说明写缓冲器中不包含该读地址对应的存储行。如果写缓冲器的地址交集范围内存在存储行保存有该读地址,则发生了命中。
具体的,存储控制器在该地址范围内查找读地址时,可以按照地址从大到小的顺序进行查询,如果写缓存器采用的是不可写合并方式,则第一个超找到的地址即为该读地址对应的最新的数据。
S1006:存储控制器从包含读地址的存储行中读取待读取数据。
如果发生了存储行命中,即存在存储行包含该读地址,存储控制器可以直接从读缓存器中读取出待读取数据,从而节省了数据读取的时间。
S1007:存储控制器从内存中读取待读取数据。
如果在地址范围内没有查找到与读地址对应的存储行,则说明读缓存器不存在存储行存储该读地址对应的数据。存储控制器需要从内存中读取待读取数据。
图11为本发明的读流程的一个实施例。当接收到处理器发送的读地址后,按照划分规则将读地址分为不同的位子集,并将与相应的n个索引表表格进行对比。假设查询每个索引表表格的新指针域和旧指针域都不为空,则得到n个地址范围依次为{latest1,oldest1},{latest2,oldest2}……..{latestn,oldestn},然后求这些范围的交集。如果交集不存在则说明查询数据不在写缓冲器内;如果交集存在,如图所示为{Latest1,Oldest2},则按照这个交集范围依次查询写缓冲器内的数据。
由此可以看出,当划分的位子集组越多,则索引表表格越多,查询索引表得到的地址范围组数越多,则得到的交集范围越小,查询写缓冲器的所需的时间越短。
图12为依据本申请一实施例的存储控制器1200的结构示意图。
如图12所示,存储控制器1200包括处理器1202,处理器1202与存储器1204连接。处理器1202可以为中央处理器(CPU),图像处理器(英文:graphics processing unit,GPU),现场可编程门阵列(英文全称:Field Programmable Gate Array,缩小:FPGA),或数字信号处理器(英文:digital signal processor,DSP)等计算逻辑或以上任意计算逻辑的组合。处理器1202可以为单核处理器或多核处理器。
在本申请的一个实施例中,处理器1202还可以包括存储控制逻辑,存储控制逻辑可以为具体的硬件电路或集成在处理器1202中的固件模块。如果存储控制逻辑为具体的硬件电路,则存储控制逻辑执行本申请实施例的方法,如果存储控制逻辑为固件模块,则处理器1202执行存储控制逻辑中的固件代码来实现本申请实施例的技术方案。存储控制逻辑包括:(1)用于接收第一写指令的逻辑(电路/固件代码),第一写指令中包含第一写数据和第一写地址;(2)用于根据第一写地址的第一子集在第一索引表中查找与第一写地址对应的第一表项的逻辑(电路/固件代码);(3)用于检测第一表项的第一指针域是否为空的逻辑(电路/固件代码);(4)用于将第一写数据写入写缓冲器的第一存储行的数据域,并将第一写地址写入第一存储行的地址域的逻辑(电路/固件代码);(5)用于将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行的逻辑(电路/固件代码)。
总线1208用于在存储控制器1200的各部件之间传递信息,总线1208可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。总线1208还连接通信接口1206。
存储器1204的存储介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(英文全称:solid state disk,缩小:SSD))等。在一些实施例中,存储器1204还可能进一步包括远程存储器,例如通过通信接口1206和网络进行访问的网盘(包括网络文件系统(英文全称:Network File System,缩小:NFS)等网络或机群文件系统)。
通信接口1206使用例如但不限于收发器一类的收发装置,来实现与其他组件、设备或网络之间的通信,通信接口1206可以通过有线或者无线的形式与其他组件相连。
本申请实施例的一些特征可以由处理器1202执行存储器1204中的软件代码来完成/支持。存储器1204可以包括存储控制模块等。
在本申请的一个实施例中,处理器1202执行存储控制模块来实现本申请实施例的技术方案。存储控制模块包括:(1)用于接收第一写指令的代码,第一写指令中包含第一写数据和第一写地址;(2)用于根据第一写地址的第一子集在第一索引表中查找与第一写地址对应的第一表项的代码;(3)用于检测第一表项的第一指针域是否为空的代码;(4)用于将第一写数据写入写缓冲器的第一存储行的数据域,并将第一写地址写入第一存储行的地址域的代码;(5)用于将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行的代码。
此外,图12仅仅是一个存储控制器1200的例子,存储控制器1200可能包含相比于图12展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图12中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。
图13为依据本申请一实施例的一种存储控制装置1300的逻辑结构示意图,存储控制装置1300应用于数据存储系统,该数据存储系统包括写缓存、内存和存储控制装置1300,如图13所示,存储控制装置1300包括:
接收单元1302,用于接收第一写指令,第一写指令中包含第一写数据和第一写地址。查找单元1304,用于根据第一写地址的第一子集在第一索引表中查找与第一写地址对应的第一表项。写入单元1306,用于将第一写数据写入写缓冲器的第一存储行的数据域,并将第一写地址写入第一存储行的地址域。写入单元1306还用于将第一地址标识写入第一表项的第一指针域,第一地址标识用于指示第一存储行。
可选的,该装置还包括检测单元1308,用于检测第一表项的第一指针域是否为空。
写入单元1306还用于在检测单元1308检测到第一表项的第一指针域为空时,将第一写地址写入第一表项的第二指针域。
接收单元1302还用于接收第二写指令,第二写指令中包含第二写数据和第二写地址,第二写地址包含第一子集。查找单元1304还用于查找写缓冲器中是否包含第二写地址。写入单元1306还用于在查找单元1304查找到写缓冲器中不包含第二写地址时,将第二数据写入写缓冲器的第二存储行的数据域,并将第二写地址写入第二存储行的地址域。写入单元1306还用于将第二地址标识写入第一表项的第一指针域,第二地址标识用于指示第二存储行。
查找单元1304用于在至少两个索引表中分别查找与第二写地址对应的表项,获取与第二写地址对应的表项记录的地址范围的交集,并在与第二写地址对应的表项记录的地址范围的交集指示的存储行中查找第二写地址,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围。
查找单元1304还用于在与第二写地址对应的表项的第一指针域中查找最小的地址标识。写入单元1306还用于将第二地址标识写入最小的地址标识指示的存储行的指针域。
写入单元1306还用于将最小的地址标识指示的存储行的数据域中的数据写入内存,并根据最小的地址标识指示的存储行的指针域记录的第二地址标识,将第二存储行的数据域中保存的第二写数据写入内存。
接收单元1302还用于接收第三写指令,第三写指令包含第三写数据和第三写地址。查找单元1304还用于在至少两个索引表中分别查找与第三写地址对应的表项,获取与第三写地址对应的表项记录的地址范围的交集,并在与第三写地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含第三写地址的第三存储行,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围。当查找单元1304查找到第三存储行时,写入单元1306还用于将第三写数据写入第三存储行的数据域。
接收单元1302还用于接收第一读请求,第一读请求中包含第一读地址。检测单元1308还用于在至少两个索引表中检测是否存在与第一读地址对应的至少一个表项的第一指针域为空。装置1300还包括读取单元1310,用于在检测单元1308检测到与第一读地址对应的至少一个表项的第一指针域为空时,根据第一读地址在内存中查找待读取数据。
接收单元1302还用于接收第二读请求,第二读请求中包含第二读地址。查找单元1304还用于在至少两个索引表中分别查找与第二读地址对应的表项,取与第二读地址对应的表项记录的地址范围的交集,并在与第二读地址对应的表项记录的地址范围的交集指示的存储行中查找第二读地址,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围。读取单元1310还用于在查找单元1304查找到与第二读地址对应的表项记录的地址范围的交集指示的存储行中不存在第二读地址时,根据第二读地址在内存中查找待读取数据。
接收单元1302还用于接收第三读请求,第三读请求中包含第三读地址。查找单元1304还用于在至少两个索引表中分别查找与第三读地址对应的表项,取与第三读地址对应的表项记录的地址范围的交集,并在与第三读地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含第三读地址的第四存储行,其中,每个表项记录的地址范围为每个表项的第一指针域存储的地址和每个表项的第二指针域存储的地址组成的地址范围;
读取单元1310还用于在查找单元1304查找到与第三读地址对应的表项记录的地址范围的交集指示的存储行中存在第四存储行时,读取第四存储行的数据域存储的数据。
在本申请实施例中,接收单元1302的功能可以具体由图12中的处理器1202与通信接口1206来实现,或者由图12中的处理器1202,通信接口1206和存储器1204中的存储控制模块模块来实现。
在本申请实施例中,查找单元1304,检测单元1308,写入单元1306和读取单元1310的功能可以具体由图12中的处理器1202中的存储控制逻辑来实现,或者由图12中的处理器1202和存储器1204中的存储控制模块来实现。
本申请实施例为图1-图11实施例对应的存储控制器的装置实施例,图1-图7实施例部分的特征描述适用于本申请实施例,在此不再赘述。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者替换其中部分技术特征;而这些修改或者替换,并不使相应技术方案脱离权利要求的保护范围。

Claims (25)

1.一种存储控制方法,其特征在于,所述方法包括:
存储控制器接收第一写指令,所述第一写指令中包含第一写数据和第一写地址;
所述存储控制器根据所述第一写地址的第一子集在第一索引表中查找到与所述第一写地址对应的第一表项;
所述存储控制器将所述第一写数据写入所述写缓冲器的第一存储行的数据域,并将所述第一写地址写入所述第一存储行的地址域;
所述存储控制器将第一地址标识写入所述第一表项的第一指针域,所述第一地址标识用于指示所述第一存储行。
2.根据权利要求1所述的方法,其特征在于,所述存储控制器将所述第一写数据写入所述写缓冲器的第一存储行的数据域之前,所述方法还包括:
所述存储控制器检测到所述第一表项的第一指针域为空。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述存储控制器将所述第一写地址写入所述第一表项的第二指针域。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述存储控制器接收第二写指令,所述第二写指令中包含第二写数据和第二写地址,所述第二写地址包含所述第一子集;
所述存储控制器检测到所述写缓冲器中不包含所述第二写地址;
所述存储控制器将所述第二数据写入所述写缓冲器的第二存储行的数据域,并将所述第二写地址写入所述第二存储行的地址域;
所述存储控制器将第二地址标识写入所述第一表项的第一指针域,所述第二地址标识用于指示所述第二存储行。
5.根据权利要求4所述的方法,其特征在于,所述存储控制器检测到所述写缓冲器中不包含所述第二写地址包括:
所述存储控制器在至少两个索引表中分别查找与所述第二写地址对应的表项;
所述存储控制器获取与所述第二写地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述存储控制器检测到与所述第二写地址对应的表项记录的地址范围的交集指示的存储行中不包含所述第二写地址。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
所述存储控制器在与所述第二写地址对应的表项的第一指针域中查找最小的地址标识;
所述存储控制器将所述第二地址标识写入所述最小的地址标识指示的存储行的指针域。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述存储控制器将所述最小的地址标识指示的存储行的数据域中的数据写入内存;
所述存储控制器根据所述最小的地址标识指示的存储行的指针域记录的第二地址标识,将所述第二存储行的数据域中保存的所述第二写数据写入内存。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
所述存储控制器接收第三写指令,所述第三写指令包含第三写数据和第三写地址;
所述存储控制器在至少两个索引表中分别查找与所述第三写地址对应的表项;
所述存储控制器获取与所述第三写地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述存储控制器检测到与所述第三写地址对应的表项记录的地址范围的交集指示的存储行中存在第三存储行包含所述第三写地址;
所述存储控制器将所述第三写数据写入所述第三存储行的数据域。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
所述存储控制器接收第一读请求,所述第一读请求中包含第一读地址;
所述存储控制器在至少两个索引表中检测到与所述第一读地址对应的至少一个表项的第一指针域为空;
所述存储控制器根据所述第一读地址在内存中查找待读取数据。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
所述存储控制器接收第二读请求,所述第二读请求中包含第二读地址;
所述存储控制器在至少两个索引表中分别查找与所述第二读地址对应的表项;
所述存储控制器获取与所述第二读地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述存储控制器检测到与所述第二读地址对应的表项记录的地址范围的交集指示的存储行中不存在所述第二读地址;
所述存储控制器根据所述第二读地址在内存中查找待读取数据。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述方法还包括:
所述存储控制器接收第三读请求,所述第三读请求中包含第三读地址;
所述存储控制器在至少两个索引表中分别查找与所述第三读地址对应的表项;
所述存储控制器获取与所述第三读地址对应的表项记录的地址范围的交集,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述存储控制器检测到与所述第三读地址对应的表项记录的地址范围的交集指示的存储行中存在第四存储行包含所述第三读地址;
所述存储控制器读取所述第四存储行的数据域存储的数据。
12.一种存储控制装置,其特征在于,所述装置包括:
接收单元,用于接收第一写指令,所述第一写指令中包含第一写数据和第一写地址;
查找单元,用于根据所述第一写地址的第一子集在第一索引表中查找与所述第一写地址对应的第一表项;
写入单元,用于将所述第一写数据写入所述写缓冲器的第一存储行的数据域,并将所述第一写地址写入所述第一存储行的地址域;
所述写入单元还用于将第一地址标识写入所述第一表项的第一指针域,所述第一地址标识用于指示所述第一存储行。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括检测单元,所述检测单元用于检测所述第一表项的第一指针域是否为空。
14.根据权利要求13所述的方法,其特征在于,所述写入单元还用于在所述检测单元检测到所述第一表项的第一指针域为空时,将所述第一写地址写入所述第一表项的第二指针域。
15.根据权利要求12-14任一项所述的装置,其特征在于,所述接收单元还用于接收第二写指令,所述第二写指令中包含第二写数据和第二写地址,所述第二写地址包含所述第一子集;
所述查找单元还用于查找所述写缓冲器中是否包含所述第二写地址;
所述写入单元还用于在所述查找单元查找到所述写缓冲器中不包含所述第二写地址时,将所述第二数据写入所述写缓冲器的第二存储行的数据域,并将所述第二写地址写入所述第二存储行的地址域。
16.根据权利要求15所述的装置,其特征在于,所述查找单元用于在至少两个索引表中分别查找与所述第二写地址对应的表项,获取与所述第二写地址对应的表项记录的地址范围的交集,并在与所述第二写地址对应的表项记录的地址范围的交集指示的存储行中查找所述第二写地址,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围。
17.根据权利要求4或5所述的装置,其特征在于,所述查找单元还用于在与所述第二写地址对应的表项的第一指针域中查找最小的地址标识;
所述写入单元还用于将所述第二地址标识写入所述最小的地址标识指示的存储行的指针域。
18.根据权利要求17所述的装置,其特征在于,所述写入单元还用于将所述最小的地址标识指示的存储行的数据域中的数据写入内存;
所述写入单元还用于根据所述最小的地址标识指示的存储行的指针域记录的第二地址标识,将所述第二存储行的数据域中保存的所述第二写数据写入内存。
19.根据权利要求12-18任一项所述的装置,其特征在于,所述接收单元还用于接收第三写指令,所述第三写指令包含第三写数据和第三写地址;
所述查找单元还用于在至少两个索引表中分别查找与所述第三写地址对应的表项,获取与所述第三写地址对应的表项记录的地址范围的交集,并在与所述第三写地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含所述第三写地址的第三存储行,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
当所述查找单元查找到所述第三存储行时,所述写入单元还用于将所述第三写数据写入所述第三存储行的数据域。
20.根据权利要求12-19任一项所述的装置,其特征在于,所述接收单元还用于接收第一读请求,所述第一读请求中包含第一读地址;
所述检测单元还用于在至少两个索引表中检测是否存在与所述第一读地址对应的至少一个表项的第一指针域为空;
所述装置还包括读取单元,用于在所述检测单元检测到与所述第一读地址对应的至少一个表项的第一指针域为空时,根据所述第一读地址在内存中查找待读取数据。
21.根据权利要求12-20任一项所述的装置,其特征在于,所述接收单元还用于接收第二读请求,所述第二读请求中包含第二读地址;
所述查找单元还用于在至少两个索引表中分别查找与所述第二读地址对应的表项,取与所述第二读地址对应的表项记录的地址范围的交集,并在与所述第二读地址对应的表项记录的地址范围的交集指示的存储行中查找所述第二读地址,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述装置还包括读取单元,用于在所述查找单元查找到与所述第二读地址对应的表项记录的地址范围的交集指示的存储行中不存在所述第二读地址时,根据所述第二读地址在内存中查找待读取数据。
22.根据权利要求12-21任一项所述的装置,其特征在于,所述接收单元还用于接收第三读请求,所述第三读请求中包含第三读地址;
所述查找单元还用于在至少两个索引表中分别查找与所述第三读地址对应的表项,取与所述第三读地址对应的表项记录的地址范围的交集,并在与所述第三读地址对应的表项记录的地址范围的交集指示的存储行中查找是否存在包含所述第三读地址的第四存储行,其中,每个表项记录的地址范围为所述每个表项的第一指针域存储的地址和所述每个表项的第二指针域存储的地址组成的地址范围;
所述装置还包括读取单元,用于在所述查找单元查找到与所述第三读地址对应的表项记录的地址范围的交集指示的存储行中存在所述第四存储行时,读取所述第四存储行的数据域存储的数据。
23.一种存储系统,其特征在于,所述系统包括写缓冲器,内存和权利要求12-24任一项所述的存储控制装置,所述写缓冲器和所述内存用于存储数据。
24.一种可读介质,其特征在于,包括执行指令,当计算设备的处理器执行所述执行指令时,所述计算设备执行权利要求1-11任一项所述的方法。
25.一种计算设备,其特征在于,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述计算设备执行权利要求1-11任一项所述的方法。
CN201711483173.3A 2017-12-29 2017-12-29 一种存储控制方法、装置和系统 Active CN109992535B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711483173.3A CN109992535B (zh) 2017-12-29 2017-12-29 一种存储控制方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711483173.3A CN109992535B (zh) 2017-12-29 2017-12-29 一种存储控制方法、装置和系统

Publications (2)

Publication Number Publication Date
CN109992535A true CN109992535A (zh) 2019-07-09
CN109992535B CN109992535B (zh) 2024-01-30

Family

ID=67110034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711483173.3A Active CN109992535B (zh) 2017-12-29 2017-12-29 一种存储控制方法、装置和系统

Country Status (1)

Country Link
CN (1) CN109992535B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI774245B (zh) * 2021-02-20 2022-08-11 瑞昱半導體股份有限公司 連結串列搜尋方法與連結串列搜尋裝置
CN116185310A (zh) * 2023-04-27 2023-05-30 中茵微电子(南京)有限公司 一种存储器数据读写调度方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09106341A (ja) * 1995-10-12 1997-04-22 Fujitsu Ltd バッファメモリ管理方法及びその装置
US20020038410A1 (en) * 1998-03-25 2002-03-28 Arm Limited Write buffer for use in a data processing apparatus
CN102890714A (zh) * 2012-09-24 2013-01-23 华为技术有限公司 数据索引方法及装置
CN102902709A (zh) * 2012-08-02 2013-01-30 何建亿 一种固定空间分配的文件存储系统及实现方法
CN103885887A (zh) * 2012-12-21 2014-06-25 腾讯科技(北京)有限公司 用户数据存储方法、读取方法及系统
CN104484332A (zh) * 2014-11-11 2015-04-01 珠海天琴信息科技有限公司 一种嵌入式系统中读写数据的方法及装置
CN105159941A (zh) * 2015-08-07 2015-12-16 小米科技有限责任公司 数据记录查找方法及装置
US20170364262A1 (en) * 2016-06-16 2017-12-21 Advanced Micro Devices, Inc. Write buffer design for high-latency memories

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09106341A (ja) * 1995-10-12 1997-04-22 Fujitsu Ltd バッファメモリ管理方法及びその装置
US20020038410A1 (en) * 1998-03-25 2002-03-28 Arm Limited Write buffer for use in a data processing apparatus
CN102902709A (zh) * 2012-08-02 2013-01-30 何建亿 一种固定空间分配的文件存储系统及实现方法
CN102890714A (zh) * 2012-09-24 2013-01-23 华为技术有限公司 数据索引方法及装置
CN103885887A (zh) * 2012-12-21 2014-06-25 腾讯科技(北京)有限公司 用户数据存储方法、读取方法及系统
CN104484332A (zh) * 2014-11-11 2015-04-01 珠海天琴信息科技有限公司 一种嵌入式系统中读写数据的方法及装置
CN105159941A (zh) * 2015-08-07 2015-12-16 小米科技有限责任公司 数据记录查找方法及装置
US20170364262A1 (en) * 2016-06-16 2017-12-21 Advanced Micro Devices, Inc. Write buffer design for high-latency memories

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI774245B (zh) * 2021-02-20 2022-08-11 瑞昱半導體股份有限公司 連結串列搜尋方法與連結串列搜尋裝置
CN116185310A (zh) * 2023-04-27 2023-05-30 中茵微电子(南京)有限公司 一种存储器数据读写调度方法及装置

Also Published As

Publication number Publication date
CN109992535B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
CN108009008B (zh) 数据处理方法和系统、电子设备
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US20200034066A1 (en) Cluster based hard drive smr optimization
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
CN102779180B (zh) 数据存储系统的操作处理方法,数据存储系统
US8074038B2 (en) Converting luns into files or files into luns in real time
US8738861B2 (en) Data prefetching method for distributed hash table DHT storage system, node, and system
KR101786871B1 (ko) 원격 페이지 폴트 처리 장치 및 그 방법
CN102349055B (zh) 对存储在存储器上的文件的访问时间最优化
US20150278274A1 (en) Retrieving data in a storage system using thin provisioning
CN103229164B (zh) 数据访问方法和装置
CN110321325A (zh) 文件索引节点查找方法、终端、服务器、系统及存储介质
CN109144413A (zh) 一种元数据管理方法及装置
US10468061B1 (en) Indexing zones for storage devices
US11099998B2 (en) Method and device for optimization of data caching
CN109992535A (zh) 一种存储控制方法、装置和系统
CN107037988B (zh) 一种基于文件级粒度的闪存安全删除方法及系统
CN106776361B (zh) 一种面向大规模非易失性存储介质的缓存方法和系统
CN103077099B (zh) 一种块级快照系统及基于该系统的用户读写方法
CN103885890B (zh) 高速缓冲存储器cache中cache块的替换处理方法和装置
CN109478164A (zh) 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法
US11726788B2 (en) Tuple checkout with notify in coordination namespace system
CN104598166B (zh) 系统管理方法和装置
CN108804571B (zh) 一种数据存储方法、装置以及设备
KR101027248B1 (ko) 디바이스 정보 저장 방법, 데이터 프로세싱 시스템 및 컴퓨터 판독가능한 저장 매체

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