CN115357540A - 存储系统及其计算存储处理器、固体硬盘和数据读写方法 - Google Patents

存储系统及其计算存储处理器、固体硬盘和数据读写方法 Download PDF

Info

Publication number
CN115357540A
CN115357540A CN202210985642.6A CN202210985642A CN115357540A CN 115357540 A CN115357540 A CN 115357540A CN 202210985642 A CN202210985642 A CN 202210985642A CN 115357540 A CN115357540 A CN 115357540A
Authority
CN
China
Prior art keywords
data
address
flash memory
storage
instruction
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
CN202210985642.6A
Other languages
English (en)
Other versions
CN115357540B (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.)
Beijing Superstring Academy of Memory Technology
Original Assignee
Beijing Superstring Academy of Memory Technology
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 Beijing Superstring Academy of Memory Technology filed Critical Beijing Superstring Academy of Memory Technology
Priority to CN202210985642.6A priority Critical patent/CN115357540B/zh
Publication of CN115357540A publication Critical patent/CN115357540A/zh
Priority to EP23853680.9A priority patent/EP4375842A1/en
Priority to PCT/CN2023/086244 priority patent/WO2024036985A1/zh
Application granted granted Critical
Publication of CN115357540B publication Critical patent/CN115357540B/zh
Priority to US18/312,968 priority patent/US11928345B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Abstract

本申请实施例公开了一种存储系统及其计算存储处理器、固体硬盘和数据读写方法,该存储系统包括固态硬盘SSD和计算存储处理器CSP,SSD与CSP之间以及SSD、CSP与存储系统外部之间通过高速串行计算机扩展总线标准PCIe总线点对点通信协议进行通信:CSP被配置为接收外部的第一操作指令,根据第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;SSD被设置为接收到所述第二操作指令后,根据第二操作指令携带的信息与外部交换所述存储对象的数据。该实施例方案实现了与当前设备做到很好的兼容,费效比低,可避免或降低CSP多余的数据拷贝,降低CSP的时延和功耗。

Description

存储系统及其计算存储处理器、固体硬盘和数据读写方法
技术领域
本申请涉及数据存储技术,尤指一种存储系统及其计算存储处理器、固体硬盘和数据读写方法。
背景技术
目前计算机存储领域的一些架构是基于CSP(计算存储处理器)做前端的存储架构,随着计算存储领域的发展,要求存储设备接受的对象存储或键值存储的指令不再是基于块地址的读写指令,因此,CSP做前端处理时,会有大量的数据流经CSP,多余的数据拷贝增加了CSP时延和功耗,为了基于目前已有的相关设备适应计算存储领域的发展,可以通过增加一个或多个CSP来解决该问题,但这一方案费效比很高,因此,亟需研究一种有效的解决方案。
发明内容
本申请实施例提供了一种存储系统及其计算存储处理器、固体硬盘和数据读写方法,可有效与当前设备做到很好的兼容,费效比低,并避免或减少CSP多余的数据拷贝,降低CSP的时延和功耗。
本申请一些实施例提供了一种存储系统,可以包括固态硬盘SSD和计算存储处理器CSP,所述SSD与CSP之间以及所述SSD、CSP与存储系统外部之间通过高速串行计算机扩展总线标准PCIe总线的点对点通信协议进行通信:
所述CSP被配置为接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;
所述SSD被设置为接收到所述第二操作指令后,根据所述第二操作指令携带的信息与外部交换所述存储对象的数据;
其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令。
本申请一些实施例提供了一种存储系统中的计算存储处理器CSP,可以包括:
第一高速串行计算机扩展总线标准PCIe总线接口,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的固态硬盘SSD及所述存储系统外部通信;
存储管理系统,被设置为通过第一PCIe总线接口接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令;以及,
信息管理模块,被设置为维护所述存储系统中的SSD资源信息。
本申请一些实施例提供了一种存储系统中的固态硬盘SSD,可以包括主控芯片和闪存芯片,所述主控芯片可以包括:
第二高速串行计算机扩展总线标准PCIe总线接口,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的计算存储处理器CSP及所述存储系统外部通信;以及,
存储控制器,被设置为接收CSP发送的基于闪存地址的第二操作指令,根据所述第二操作指令携带的信息与外部交换存储对象的数据;其中,所述第二操作指令包括第二存入指令和第二读取指令。
本申请一些实施例提供了一种数据存入方法,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,所述方法可以包括:
接收外部基于存储对象的第一存入指令;
根据所述第一存入指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二存入指令并发送给SSD。
本申请一些实施例提供了一种数据存入方法,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,所述方法可以包括:
接收CSP发送的基于闪存地址的第二存入指令,解析所述第二存入指令携带的此次要存入的数据的起始来源地址,及本SSD中的闪存地址;
根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址。
本申请一些实施例提供了一种数据读取方法,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,所述方法可以包括:
接收外部基于存储对象的第一读取指令;
根据所述第一读取指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二读取指令并发送给SSD。
本申请一些实施例提供了一种数据读取方法,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,所述方法可以包括:
接收CSP发送的基于闪存地址的第二读取指令,解析所述第二读取指令携带的此次要读取的数据在本SSD中的闪存地址以及数据接收的起始地址;
根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址。
本申请一些实施例提供了一种存储系统中的计算存储处理器CSP,可以包括:第三高速串行计算机扩展总线标准PCIe总线接口,及与第三PCIe总线接口耦合的第一逻辑电路组件;所述第一逻辑电路组件被配置为存储管理系统以执行第四方面所述的数据存入方法,以及第六方面所述的数据读取方法。
本申请一些实施例还提供了一种固态硬盘SSD的主控芯片,可以包括:第四高速串行计算机扩展总线标准PCIe总线接口,及与第四PCIe总线接口耦合的第二逻辑电路组件;所述第二逻辑电路组件被配置为执行第五方面所述的数据存入方法,以及第七方面所述的数据读取方法。
本申请一些实施例提供了一种非易失性存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行第四方面和第五方面所述的数据存入方法,以及第六和和第七方面所述的数据读取方法。
与相关技术相比,本申请实施例的存储系统及其计算存储处理器、固体硬盘和数据读写方法中,SSD与CSP之间以及所述SSD、CSP与存储系统外部之间通过PCIe总线的点对点通信协议进行通信,实现了与当前设备做到很好的兼容,费效比低;并且所述CSP接收外部基于存储对象的第一操作指令,根据所述第一操作指令生成基于闪存地址的第二操作指令并发送给SSD;所述SSD根据所述第二操作指令携带的信息与外部交换所述存储对象的数据,避免了CSP多余的数据拷贝,从而降低了CSP的时延和功耗。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请实施例技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请实施例技术方案的限制。
图1为本申请实施例的存储系统结构示意图;
图2为本申请实施例的存储系统中的CSP第一组成框图;
图3为本申请实施例的存储系统中的SSD第一组成框图;
图4为本申请实施例的CSP侧数据存入方法流程图;
图5为本申请实施例的SSD侧数据存入方法流程图;
图6为本申请实施例的CSP侧数据读取方法流程图;
图7为本申请实施例的SSD侧数据读取方法流程图;
图8为本申请实施例的存储系统中的CSP第二组成框图;
图9为本申请实施例的存储系统中的SSD第二组成框图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
第一方面:
本申请一些实施例提供了一种存储系统,如图1所示,包括固态硬盘SSD和计算存储处理器CSP;
所述SSD与CSP之间以及所述SSD、CSP与存储系统外部之间通过高速串行计算机扩展总线标准PCIe总线的点对点通信协议进行通信:
所述CSP被配置为接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;
所述SSD被设置为接收到所述第二操作指令后,根据所述第二操作指令携带的信息与外部交换所述存储对象的数据;
其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令。
在本申请的示例性实施例中,存储系统中可以包括一个CSP和多个SSD,该CSP和SSD都接入到PCIe总线上,并通过点对点通信协议进行通信。
在本申请的示例性实施例中,CSP通过PCIe总线接受外部的存储请求,即上述的第一操作指令(所述第一操作指令可以为第一存入指令或第一读取指令),该第一操作指令可以包含存储对象的相关信息,根据该存储对象的相关信息以及存储的每个SSD的资源信息可以对存储对象的数据进行SSD地址分配,或者查找存储对象的数据所存储的SSD地址等处理,并根据处理结果生成相应的第二操作指令(与上述的第一操作指令相对应,该所述第二操作指令为第二存入指令或第二读取指令),利用PCIe总线的点到点通讯机制,CSP可以将生成的第二操作指令发送给所分配到的或所查询到的SSD,从而使得SSD根据第二操作指令直接和外部请求方(此时也可以称为外部数据交换方)交换数据,不再通过CSP,CSP与SSD之间仅进行指令的传输,不会有大量的数据流经CSP,CSP也不会拷贝多余数据,从而大幅度减小了CSP的工作量,降低了时延和功耗。
在本申请的示例性实施例中,下面分别从写入数据和读取数据两个方面详细介绍本申请实施例方案。
在本申请的示例性实施例中,所述CSP被配置为接收到第一存入指令后,通过以下方式生成基于闪存地址的第二操作指令并发送给SSD:
解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
在本申请的示例性实施例中,该闪存地址即SSD对外提供的任何形式的地址,例如:可以是闪存页、闪存块或存储块的地址,也可以是闪存页、闪存块或存储块的地址段。当该闪存地址是存储块地址时,SSD对外提供逻辑地址,当该闪存地址是闪存页或闪存块的地址时,SSD对外提供物理地址的操作接口。在本申请实施例中以闪存地址为闪存页或闪存块的地址为例进行说明。
在本申请的示例性实施例中,当外部请求方发送的第一操作指令为第一存入指令时,该第一存入指令可以包括但不限于:存储对象的标识、数据长度信息和整个数据的起始来源地址。
在本申请的示例性实施例中,SSD中的资源占用信息可以包括但不限于:存储系统所包含的全部SSD的地址,每个SSD中的闪存页和/或闪存块的地址,每个闪存页的资源占用信息、每个被占用的闪存页对应的存储对象的标识以及偏移,等等。
在本申请的示例性实施例中,CSP可以根据该资源占用信息确定出可存储当前待存储的存储对象数据的一个或多个SSD中的闪存地址,并根据待存储对象的数据量大小为该存储对象分配一个或多个所述闪存地址。
在本申请的示例性实施例中,CSP可以首先根据第一存入指令携带的数据长度信息确定需存储的存储对象的数据为大数据还是小数据,并根据确定出的数据大小分配相应的闪存地址。
在本申请的示例性实施例中,当数据长度信息小于或等于预设的第一数据量阈值时,可以将该数据确定为小数据;当数据长度信息大于预设的第一数据量阈值时,可以将该数据确定为大数据。
在本申请的示例性实施例中,该第一数据量阈值可以为一个闪存页的存储数据量,也可以为自定义的其它数据量,在此对于第一数据量阈值的详细数值不做限定。
在本申请的示例性实施例中,当需要存入的数据为小数据时,CSP可以仅为该数据分配一个闪存页,当需要存入的数据为大数据时,CSP可以为该数据分配多个闪存页,或者,分配一个或多个闪存块。
在本申请的示例性实施例中,当CSP为大数据分配多个闪存页和/或多个闪存块时,该多个闪存页可以为地址连续的闪存页,该多个闪存块可以为地址连续的闪存块,从而可以为该大数据分配一个地址连续的地址段。
在本申请的示例性实施例中,当需要存入的大量的存储对象均为小数据时,在每次写入一个小数据时均需要生成一个第二存入指令,当该小数据的数据量足够大时,会增加存储系统的任务负载,降低性能,增加功耗。针对这一情况,可以对多个需要连续写入的小数据进行合并后再写入。
在本申请的示例性实施例中,例如,可以在接收到关于多个小数据的第一写入指令后,对多个第一写入指令携带的信息进行合并,并根据合并后的信息和本地维护的SSD资源信息,生成一个第二存入指令并发送给SSD,再由SSD根据相应的起始来源地址分别获取每个小数据并存储到所分配的闪存地址中。
在本申请的示例性实施例中,如果多个小数据的起始来源地址是连续的,可以根据该多个起始来源地址所存储的小数据的排列顺序,为多个小数据分配多个连续的闪存地址,并且该多个连续的闪存地址所存储的小数据的排列顺序与多个起始来源地址所存储的小数据的排列顺序相同。
在本申请的示例性实施例中,当存储对象需要被分配到多个不同的SSD中,或同一SSD中的不同的闪存地址时,需要从外部请求方获取每个闪存地址所需的数据量存储到该闪存地址中,因此,可以根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;从而根据该部分数据的起始来源地址获取相应的数据进行存储。
在本申请的示例性实施例中,在CSP向SSD发送第二存入指令时,可以向分配的每个闪存地址分别发送一个第二存入指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二存入指令。
在本申请的示例性实施例中,该第二存入指令可以包括但不限于NVMe(Non-Volatile Memory express易失性存储器)存入指令。
NVMe是目前市场上的主流SSD协议,它是基于PCIe(高速串行计算机扩展总线标准)总线物理层上的传输协议,特点是只发送读写指令,不直接指导数据交换。例如读指令只包括SSD的存储地址和数据接收的地址,这样SSD可以安装适合自己的顺序执行大量指令,需要进行数据传输时再通过PCIe的传输机制向接收地址传数据。
在本申请的示例性实施例中,所述SSD被设置为接收到第二存入指令后,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的起始来源地址和闪存地址,根据解析出的起始来源地址从外部读取所述存储对象的默认大小的数据,及将读取的数据存入解析出的闪存地址;或者,
所述CSP发送的第二存入指令还携带此次要存入的所述存储对象的数据量信息,所述SSD被设置为接收到第二存入指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的起始来源地址、闪存地址和数据量信息,根据解析出的起始来源地址从外部读取所述存储对象的相应数据量的数据,及将读取的数据存入解析出的闪存地址。
在本申请的示例性实施例中,第二存入指令可以仅包含存储对象的起始来源地址和闪存地址,还可以即包含存储对象的起始来源地址和闪存地址(例如,多个闪存页或闪存块的起始地址),又包含有存储对象的数据量信息。
在本申请的示例性实施例中,当第二存入指令为NVMe存入指令时,该NVMe存入指令可以为普通的NVMe指令,包括:存储对象的起始来源地址和闪存地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的起始来源地址、数据量信息和闪存地址;
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,例如,针对小数据,仅通过一个闪存页便可以存储该数据,因此,可以为该小数据分配一个闪存页,并在第二存入指令中仅包含存储对象的起始来源地址和该闪存页的地址即可。
在本申请的示例性实施例中,例如,针对大数据,需要多个闪存页存储该数据,因此,可以为该大数据分配多个闪存页并附带数据量信息,例如,附带所需闪存页的总数量,并在第二存入指令中包含存储对象的起始来源地址、闪存地址(分配的多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述CSP被配置为接收到第一读取指令后,通过以下方式生成基于闪存地址的第二操作指令并发送给SSD:
解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的所述存储对象的数据所存入的一个或多个SSD中的闪存地址;
为存储有所述存储对象的数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
在本申请的示例性实施例中,当外部请求方发送的第一操作指令为第一读取指令时,该第一读取指令可以包括但不限于:存储对象的标识以及数据接收的起始地址。
在本申请的示例性实施例中,CSP可以根据该第一读取指令中包含的存储对象的标识查询将要读取的存储对象的数据在SSD中的闪存地址,并将该和外部请求方的数据接收的起始地址携带在第二读取指令中发送给SSD。
在本申请的示例性实施例中,需读取的存储对象的数据可能为大数据,也可能为小数据,当该存储对象的数据为大数据,占用(如正好占满,或未占满存在浪费)了一个或多个完整的闪存页和/或闪存块时,可以仅在第二读取指令中携带该一个或多个闪存页和/或闪存块的地址,以及数据接收的起始地址。当该存储对象的数据为大数据,并且占用多个连续的闪存页和/或闪存块时,可以在第二读取指令中携带该多个连续的闪存页和/或闪存块的起始地址,并用数据量信息指示具体的闪存页和/或闪存块的数量,因此,该第二读取指令中可以携带该多个连续的闪存页和/或闪存块的起始地址、该存储对象的数据量信息以及数据接收的起始地址。当该存储对象的数据为小数据,并且仅占用了一个闪存页的一部分空间,而且该闪存页的另一部分空间被其他数据占用时,在第二读取指令中不仅携带该闪存页的地址,还可以携带需读取的该存储对象的闪存地址的偏移,以便于根据该偏移在该闪存页中准确读取需要的数据,因此该第二读取指令可以携带闪存页的地址及其偏移,以及数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令可以包含但不限于NVMe读取指令。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,当第二读取指令为NVMe读取指令时,该NVMe读取指令可以为普通的NVMe指令,包括:存储对象的闪存地址和数据接收的起始地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的闪存地址、数据量信息和数据接收的起始地址。
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,该偏移是指一个闪存页中的小数据相对于该闪存页的闪存地址的偏移,该偏移一般用两个偏移量表示。
在本申请的示例性实施例中,针对小数据,可能仅存储在一个闪存页内,可能完全占有一个闪存页,也有可能仅占有该闪存页的一部分,另一部分由其他小数据占用,因此,对于完全占用一个闪存页的小数据来说,在第二读取指令中仅包含存储对象的数据接收的起始地址和该闪存页的地址即可,对于与其他小数据合占一个闪存页的小数据来说,在第二读取指令中可以包含存储对象的数据接收的起始地址、该闪存页的地址以及该小数据的偏移,用于SSD从该闪存页读取出数据以后再从读取的数据中根据该偏移截取所需的数据。
在本申请的示例性实施例中,针对大数据,需要多个闪存页存储该数据,因此,读取该大数据时可以附带数据量信息(如,附带所存储的闪存页的总数量),并在第二读取指令中包含存储对象的数据接收的起始地址、闪存地址(所存储的一个或多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述SSD被设置为接收到第二读取指令后,通过以下方式与外部交换所述存储对象的数据:解析所述第二读取指令携带的闪存地址和数据接收的起始地址,根据解析出的闪存地址从SSD中读取此次要读取的数据,并将读取的数据发送至外部的所述数据接收的起始地址。
在本申请的示例性实施例中,针对仅包含闪存地址和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址在本SSD中把相应的一个或多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述CSP发送的第二读取指令还携带所述存储对象的数据量信息,所述SSD被设置为接收到第二读取指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的闪存地址、数据接收的起始地址和数据量信息,根据解析出的闪存地址从SSD中读取此次要读取的数据,并将读取的数据发送至外部的所述数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、数据量信息和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址和数据量信息把相应的多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述CSP发送的第二读取指令还携带所述存储对象的闪存地址的偏移,所述SSD被设置为接收到第二读取指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的闪存地址及其偏移,以及数据接收的起始地址,根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据,或者,根据解析出的闪存地址从一个闪存页中读取一页数据,并根据所述偏移从所述一页数据中截取所需要的存储对象的数据,存入外部的所述数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、偏移和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址把相应的一个闪存页中存储的数据全部取出,并根据该偏移从读取出的数据中提取所需的数据,并将提取出的数据存储到数据接收的起始地址;也可以根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据。
在本申请的示例性实施例中,所述SSD还被配置为根据所述第二操作指令携带的信息与外部交换所述存储对象的数据成功之后,向所述CSP返回成功响应;
所述CSP还被配置为接收到发送的所有第二操作指令的成功响应后,向所述第一操作指令的发送方返回成功响应,并更新维护的SSD资源信息。
第二方面:
本申请实施例提供了一种存储系统中的计算存储处理器CSP,如图2所示,可以包括:
第一PCIe(高速串行计算机扩展总线标准)总线接口11,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的固态硬盘SSD及所述存储系统外部通信;
存储管理系统12,被设置为通过PCIe总线接口11接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令;以及,
信息管理模块13,被设置为维护所述存储系统中的SSD资源信息。
在本申请的示例性实施例中,CSP的存储管理系统12通过第一PCIe总线接口11接受外部的存储请求,即上述的第一操作指令(所述第一操作指令可以为第一存入指令或第一读取指令),该第一操作指令可以包含存储对象的相关信息,根据该存储对象的相关信息以及信息管理模块13存储的每个SSD的资源信息可以对存储对象的数据进行SSD地址分配,或者查找存储对象的数据所存储的SSD地址等处理,并根据处理结果生成相应的第二操作指令(与上述的第一操作指令相对应,该所述第二操作指令为第二存入指令或第二读取指令),利用PCIe总线的点到点通讯机制,存储管理系统12可以将生成的第二操作指令发送给所分配到的或所查询到的SSD,从而使得SSD根据第二操作指令直接和外部请求方交换数据,不再通过CSP,CSP与SSD之间仅进行指令的传输,不会有大量的数据流经CSP,CSP也不会拷贝多余数据,从而大幅度减小了CSP的工作量,降低了时延和功耗。
在本申请的示例性实施例中,下面分别从写入数据和读取数据两个方面详细介绍本申请实施例方案。
在本申请的示例性实施例中,所述存储管理系统12包括存入处理模块121,所述存入处理模块121可以被配置为:
通过第一PCIe总线接口11接收外部的第一存入指令,解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
在本申请的示例性实施例中,该闪存地址即SSD对外提供的任何形式的地址,例如:可以是闪存页、闪存块或存储块的地址,也可以是闪存页、闪存块或存储块的地址段。当该闪存地址是存储块地址时,SSD对外提供逻辑地址,当该闪存地址是闪存页或闪存块的地址时,SSD对外提供物理地址的操作接口。在本申请实施例中以闪存地址为闪存页或闪存块的地址为例进行说明。
在本申请的示例性实施例中,当外部请求方发送的第一操作指令为第一存入指令时,该第一存入指令可以包括但不限于:存储对象的标识、数据长度信息和整个数据的起始来源地址。
在本申请的示例性实施例中,SSD中的资源占用信息可以包括但不限于:存储系统所包含的全部SSD的地址,每个SSD中的闪存页和/或闪存块的地址,每个闪存页的资源占用信息、每个被占用的闪存页对应的存储对象的标识以及偏移,等等。
在本申请的示例性实施例中,存入处理模块121可以根据该资源占用信息确定出可存储当前待存储的存储对象数据的一个或多个SSD中的闪存地址,并根据待存储对象的数据量大小为该存储对象分配一个或多个所述闪存地址。
在本申请的示例性实施例中,存入处理模块121可以首先根据第一存入指令携带的数据长度信息确定需存储的存储对象的数据为大数据还是小数据,并根据确定出的数据大小分配相应的闪存地址。
在本申请的示例性实施例中,当数据长度信息小于或等于预设的第一数据量阈值时,可以将该数据确定为小数据;当数据长度信息大于预设的第一数据量阈值时,可以将该数据确定为大数据。该第一数据量阈值可以为一个闪存页的存储数据量,也可以为自定义的数据量,在此对于第一数据量阈值的详细数值不做限定。
在本申请的示例性实施例中,当需要存入的数据为小数据时,存入处理模块121可以仅为该数据分配一个闪存页,当需要存入的数据为大数据时,存入处理模块121可以为该数据分配多个闪存页,或者,分配一个或多个闪存块。
在本申请的示例性实施例中,当存入处理模块121为大数据分配多个闪存页和/或多个闪存块时,该多个闪存页可以为地址连续的闪存页,该多个闪存块可以为地址连续的闪存块,从而可以为该大数据分配一个地址连续的地址段。
在本申请的示例性实施例中,当需要存入的大量的存储对象均为小数据时,在每次写入一个小数据时均需要生成一个第二存入指令,当该小数据的数据量足够大时,会增加存储系统的任务负载,降低性能,增加功耗。针对这一情况,可以对多个需要连续写入的小数据进行合并后再写入。
在本申请的示例性实施例中,例如,可以在接收到关于多个小数据的第一写入指令后,对多个第一写入指令携带的信息进行合并,并根据合并后的信息和本地维护的SSD资源信息,生成一个第二存入指令并发送给SSD,再由SSD根据相应的起始来源地址分别获取每个小数据并存储到所分配的闪存地址中。
在本申请的示例性实施例中,如果多个小数据的起始来源地址是连续的,可以根据该多个起始来源地址所存储的小数据的排列顺序,为多个小数据分配多个连续的闪存地址,并且该多个连续的闪存地址所存储的小数据的排列顺序与多个起始来源地址所存储的小数据的排列顺序相同。
在本申请的示例性实施例中,当存储对象需要被分配到多个不同的SSD中,或同一SSD中的不同的闪存地址时,需要从外部请求方获取每个闪存地址所需的数据量存储到该闪存地址中,因此,可以根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;从而根据该部分数据的起始来源地址获取相应的数据进行存储。
在本申请的示例性实施例中,在存入处理模块121向SSD发送第二存入指令时,可以向分配的每个闪存地址分别发送一个第二存入指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二存入指令。
在本申请的示例性实施例中,该第二存入指令可以包括但不限于NVMe存入指令。
在本申请的示例性实施例中,所述第二存入指令携带的闪存地址可以用一个闪存页的地址表示;
所述存入处理模块121为分配有闪存地址的每一SSD生成一条或多条第二存入指令时,是对该SSD中分配的每一闪存页生成一条第二存入指令,携带要存入该闪存页的数据的起始来源地址,及该闪存页的地址。
在本申请的示例性实施例中,所述第二存入指令携带的闪存地址是多个连续闪存页的地址构成的一个地址段,该地址段用起始地址和数据量信息表示;
所述存入处理模块121为分配有闪存地址的每一SSD生成一条或多条第二存入指令时,是对该SSD中的每一地址段生成一条第二存入指令,携带要存入该地址段的数据的直始来源地址,及该地址段的起始地址和数据量信息。
在本申请的示例性实施例中,第二存入指令可以仅包含存储对象的起始来源地址和闪存地址,还可以即包含存储对象的起始来源地址和闪存地址(例如,多个闪存页或闪存块的起始地址),又包含有存储对象的数据量信息。
在本申请的示例性实施例中,当第二存入指令为NVMe存入指令时,该NVMe存入指令可以为普通的NVMe指令,包括:存储对象的起始来源地址和闪存地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的起始来源地址、数据量信息和闪存地址;
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,例如,针对小数据,仅通过一个闪存页便可以存储该数据,因此,可以为该小数据分配一个闪存页,并在第二存入指令中仅包含存储对象的起始来源地址和该闪存页的地址即可。
在本申请的示例性实施例中,例如,针对大数据,需要多个闪存页存储该数据,因此,可以为该大数据分配多个闪存页并附带数据量信息,例如,附带所需闪存页的总数量,并在第二存入指令中包含存储对象的起始来源地址、闪存地址(分配的闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述存入处理模块121为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD之后,还配置为在接收到发送的所有第二存入指令的成功响应后,向所述第一存入指令的发送方返回成功响应,并通知所述信息管理模块13记录所述存储对象的标识及所述分配的SSD中的闪存地址。
在本申请的示例性实施例中,所述存储管理系统12可以包括读取处理模块122,所述读取处理模块122被配置为:
通过第一PCIe总线接口11接收外部的第一读取指令,解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的所述存储对象的数据所存入的一个或多个SSD中的闪存地址;
为存储有所述存储对象的数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
在本申请的示例性实施例中,当外部请求方发送的第一操作指令为第一读取指令时,该第一读取指令可以包括但不限于:存储对象的标识以及数据接收的起始地址。
在本申请的示例性实施例中,CSP可以根据该第一读取指令中包含的存储对象的标识查询将要读取的存储对象的数据在SSD中的闪存地址,并将该和外部请求方的数据接收的起始地址携带在第二读取指令中发送给SSD。
在本申请的示例性实施例中,需读取的存储对象的数据可能为大数据,也可能为小数据,当该存储对象的数据为大数据,占用(如正好占满,或未占满存在浪费)了一个或多个完整的闪存页和/或闪存块时,可以仅在第二读取指令中携带该一个或多个闪存页和/或闪存块的地址,以及数据接收的起始地址。当该存储对象的数据为大数据,并且占用多个连续的闪存页和/或闪存块时,可以在第二读取指令中携带该多个连续的闪存页和/或闪存块的起始地址,并用数据量信息指示具体的闪存页和/或闪存块的数量,因此,该第二读取指令中可以携带该多个连续的闪存页和/或闪存块的起始地址、该存储对象的数据量信息以及数据接收的起始地址。当该存储对象的数据为小数据,并且仅占用了一个闪存页的一部分空间,而且该闪存页的另一部分空间被其他数据占用时,在第二读取指令中不仅携带该闪存页的地址,还可以携带需读取的该存储对象的数据的偏移,以便于根据该偏移在该闪存页中准确读取需要的数据,因此该第二读取指令可以携带闪存页的地址、偏移以及数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令可以包含但不限于NVMe读取指令。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,当第二读取指令为NVMe读取指令时,该NVMe读取指令可以为普通的NVMe指令,包括:存储对象的闪存地址和数据接收的起始地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的闪存地址、数据量信息和数据接收的起始地址。
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,该偏移是指一个闪存页中的小数据相对于该闪存页的闪存地址的偏移,该偏移一般用两个偏移量表示。
在本申请的示例性实施例中,针对小数据,可能仅存储在一个闪存页内,可能完全占有一个闪存页,也有可能仅占有该闪存页的一部分,另一部分由其他小数据占用,因此,对于完全占用一个闪存页的小数据来说,在第二读取指令中仅包含存储对象的数据接收的起始地址和该闪存页的地址即可,对于与其他小数据合占一个闪存页的小数据来说,在第二读取指令中可以包含存储对象的数据接收的起始地址、该闪存页的地址以及该小数据的偏移,用于SSD从该闪存页读取出数据以后再从读取的数据中根据该偏移截取所需的数据。
在本申请的示例性实施例中,针对大数据,需要多个闪存页存储该数据,因此,读取该大数据时可以附带数据量信息(如,附带所存储的闪存页的总数量),并在第二读取指令中包含存储对象的数据接收的起始地址、闪存地址(存储数据的闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述第二读取指令携带的闪存地址用一个闪存页的地址表示;
所述读取处理模块为存储有所述此次要读取数据的每一SSD生成一条或多条第二读取指令时,是对该SSD中分配的每一闪存页生成一条第二读取指令,携带要读取的该闪存页的地址以及数据接收的起始地址。
在本申请的示例性实施例中,针对仅包含闪存地址和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址在本SSD中把相应的一个或多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令携带的闪存地址用一个闪存页的地址表示;
所述读取处理模块为存储有所述此次要读取数据的每一SSD生成一条或多条第二读取指令时,是对该SSD中分配的每一闪存页生成一条第二读取指令,携带要读取的该闪存页的地址、此次要读取数据相对于所述闪存页的地址的偏移以及数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、偏移和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址把相应的一个闪存页中存储的数据全部取出,并根据该偏移从读取出的数据中提取所需的数据,并将提取出的数据存储到数据接收的起始地址;或者,根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据。
在本申请的示例性实施例中,所述第二读取指令携带的闪存地址是多个连续闪存页的地址构成的一个地址段,该地址段用起始地址和数据量信息表示;
所述读取处理模块为分配有闪存地址的每一SSD生成一条或多条第二读取指令时,是对该SSD中的每一地址段生成一条第二读取指令,携带要读取的该地址段的起始地址和数据量信息,以及数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、数据量信息和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址和数据量信息把相应的多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
第三方面:
本申请实施例提供了一种存储系统中的固态硬盘SSD,如图3所示,可以包括主控芯片21和闪存芯片22,所述主控芯片21可以包括:
第二PCIe总线接口211,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的计算存储处理器CSP及所述存储系统外部通信;以及,
存储控制器212,被设置为接收CSP发送的基于闪存地址的第二操作指令,根据所述第二操作指令携带的信息与外部交换存储对象的数据;其中,所述第二操作指令包括第二存入指令和第二读取指令。
在本申请的示例性实施例中,CSP通过第一PCIe总线接口11接受外部的存储请求,即上述的第一操作指令,该第一操作指令可以包含存储对象的相关信息,根据该存储对象的相关信息以及存储的每个SSD的资源信息可以对存储对象的数据进行SSD地址分配,或者查找存储对象的数据所存储的SSD地址等处理,并根据处理结果生成相应的第二操作指令,利用PCIe总线的点到点通讯机制,CSP可以将生成的第二操作指令通过第二PCIe总线接口211发送给所分配到的或所查询到的SSD的主控芯片21,从而使得SSD的主控芯片21的存储控制器212根据第二操作指令直接和外部请求方交换数据,不再通过CSP,CSP与SSD之间仅进行指令的传输,不会有大量的数据流经CSP,CSP也不会拷贝多余数据,从而大幅度减小了CSP的工作量,降低了时延和功耗。
在本申请的示例性实施例中,下面分别从写入数据和读取数据两个方面详细介绍本申请实施例方案。
在本申请的示例性实施例中,所述存储控制器212包括存入控制模块2121,所述存入控制模块2121被配置为:
接收所述第二存入指令,解析所述第二存入指令携带的所述存储对象的数据的起始来源地址以及在本SSD中进行数据存储的闪存地址;
根据解析出的起始来源地址从外部读取所述存储对象的数据,将读取的数据存入解析出的闪存地址。
在本申请的示例性实施例中,在存入处理模块121向SSD发送第二存入指令时,可以向分配的每个闪存地址分别发送一个第二存入指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二存入指令。
在本申请的示例性实施例中,该第二存入指令可以包括但不限于NVMe存入指令。
在本申请的示例性实施例中,该闪存地址即SSD对外提供的任何形式的地址,例如:可以是闪存页、闪存块或存储块的地址,也可以是闪存页、闪存块或存储块的地址段。当该闪存地址是存储块地址时,SSD对外提供逻辑地址,当该闪存地址是闪存页或闪存块的地址时,SSD对外提供物理地址的操作接口。在本申请实施例中以闪存地址为闪存页或闪存块的地址为例进行说明。
在本申请的示例性实施例中,所述解析出的闪存地址是一个闪存页的地址;所述存入控制模块2121是被配置为根据解析出的起始来源地址,从外部读取所述存储对象的一个闪存页大小的数据并存入解析出的该闪存页的地址;或者,
所述解析出的闪存地址是用起始地址和数据量信息表示的一个地址段;该地址段包含多个完整闪存页的地址;所述存入控制模块2121是被配置为根据解析出的起始来源地址和数据量信息,从外部读取所述存储对象的相应数据量的数据并存入解析出的该地址段。
在本申请的示例性实施例中,第二存入指令可以仅包含存储对象的起始来源地址和闪存地址,还可以即包含存储对象的起始来源地址和闪存地址(例如,多个闪存页或闪存块的起始地址),又包含有存储对象的数据量信息。
在本申请的示例性实施例中,当第二存入指令为NVMe存入指令时,该NVMe存入指令可以为普通的NVMe指令,包括:存储对象的起始来源地址和闪存地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的起始来源地址、数据量信息和闪存地址;
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,例如,针对小数据,仅通过一个闪存页便可以存储该数据,因此,可以为该小数据分配一个闪存页,并在第二存入指令中仅包含存储对象的起始来源地址和该闪存页的地址即可。
在本申请的示例性实施例中,例如,针对大数据,需要多个闪存页存储该数据,因此,可以为该大数据分配多个闪存页并附带数据量信息,例如,附带所需闪存页的总数量,并在第二存入指令中包含存储对象的起始来源地址、闪存地址(分配的一个或多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述存入控制模块2121还配置为在成功接收到发送的所有第二存入指令并写入数据成功后,向CSP返回成功响应。
在本申请的示例性实施例中,所述存储控制器212包括读取控制模块2122,所述读取控制模块2122被配置为:
接收所述第二读取指令,解析所述第二读取指令携带的所述存储对象的数据在本SSD中进行数据存储的闪存地址以及数据接收的起始地址;
根据解析出的闪存地址从本SSD中读取所述存储对象的数据,将读取的数据存入外部的数据接收的起始地址。
在本申请的示例性实施例中,CSP可以根据该第一读取指令中包含的存储对象的标识查询将要读取的存储对象的数据在SSD中的闪存地址,并将该和外部请求方的数据接收的起始地址携带在第二读取指令中发送给SSD。
在本申请的示例性实施例中,需读取的存储对象的数据可能为大数据,也可能为小数据,当该存储对象的数据为大数据,占用(如正好占满,或未占满存在浪费)了一个或多个完整的闪存页和/或闪存块时,可以仅在第二读取指令中携带该一个或多个闪存页和/或闪存块的地址,以及数据接收的起始地址。当该存储对象的数据为大数据,并且占用多个连续的闪存页和/或闪存块时,可以在第二读取指令中携带该多个连续的闪存页和/或闪存块的起始地址,并用数据量信息指示具体的闪存页和/或闪存块的数量,因此,该第二读取指令中可以携带该多个连续的闪存页和/或闪存块的起始地址、该存储对象的数据量信息以及数据接收的起始地址。当该存储对象的数据为小数据,并且仅占用了一个闪存页的一部分空间,而且该闪存页的另一部分空间被其他数据占用时,在第二读取指令中不仅携带该闪存页的地址,还可以携带需读取的该存储对象的数据的偏移,以便于根据该偏移在该闪存页中准确读取需要的数据,因此该第二读取指令可以携带闪存页的地址、偏移以及数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令可以包含但不限于NVMe读取指令。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,当第二读取指令为NVMe读取指令时,该NVMe读取指令可以为普通的NVMe指令,包括:存储对象的闪存地址和数据接收的起始地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的闪存地址、数据量信息和数据接收的起始地址。
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,该偏移是指一个闪存页中的小数据针对该闪存页的闪存地址的偏移,该偏移一般用两个偏移量表示。
在本申请的示例性实施例中,针对小数据,可能仅存储在一个闪存页内,可能完全占有一个闪存页,也有可能仅占有该闪存页的一部分,另一部分由其他小数据占用,因此,对于完全占用一个闪存页的小数据来说,在第二读取指令中仅包含存储对象的数据接收的起始地址和该闪存页的地址即可,对于与其他小数据合占一个闪存页的小数据来说,在第二读取指令中可以包含存储对象的数据接收的起始地址、该闪存页的地址以及该小数据的偏移,用于SSD从该闪存页读取出数据以后再从读取的数据中根据该偏移截取所需的数据。
在本申请的示例性实施例中,针对大数据,需要多个闪存页存储该数据,因此,读取该大数据时可以附带数据量信息(如,附带所存储的闪存页的总数量),并在第二读取指令中包含存储对象的数据接收的起始地址、闪存地址(存储数据的闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,所述解析出的闪存地址是一个闪存页的地址;所述读取控制模块2122是被配置为根据解析出的该闪存页的地址,从本SSD读取所述存储对象的数据并存入解析出的数据接收的起始地址。
在本申请的示例性实施例中,针对仅包含闪存地址和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址在本SSD中把相应的一个或多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述解析出的闪存地址是用起始地址和数据量信息表示的一个地址段;所述读取控制模块2122是被配置为根据解析出的起始地址和数据量信息,从本SSD读取所述存储对象的相应数据量的数据并存入解析出的数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、数据量信息和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址和数据量信息把相应的多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述解析出的闪存地址是一个闪存页的地址以及此次要读取数据相对于所述闪存页的地址的偏移;所述读取控制模块是被配置为根据解析出的所述闪存页的地址从本SSD读取一页数据,并根据所述偏移从所述一页数据中截取所需要的存储对象的数据存入解析出的数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、偏移和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址把相应的一个闪存页中存储的数据全部取出,并根据该偏移从读取出的数据中提取所需的数据,并将提取出的数据存储到数据接收的起始地址;或者,根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据。
在本申请的示例性实施例中,所述读取控制模块2122还配置为在成功接收到发送的第二存入指令并读取数据成功后,向CSP返回成功响应。
第四方面:
本申请实施例提供了一种数据存入方法,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,如图4所示,所述方法可以包括步骤S101-S102:
S101、接收外部基于存储对象的第一存入指令。
在本申请的示例性实施例中,CSP通过PCIe总线基于点对点通信机制与外部请求方进行通信,接受外部的存储请求,例如上述的第一存入指令,该第一存入指令可以包含存储对象的相关信息。
在本申请的示例性实施例中,该第一存入指令可以包括但不限于:存储对象的标识、数据长度信息和整个数据的起始来源地址。
S102、根据所述第一存入指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二存入指令并发送给SSD。
在本申请的示例性实施例中,SSD中的资源占用信息可以包括但不限于:存储系统所包含的全部SSD的地址,每个SSD中的闪存页和/或闪存块的地址,每个闪存页的资源占用信息、每个被占用的闪存页对应的存储对象的标识以及偏移,等等。
在本申请的示例性实施例中,CSP根据该存储对象的相关信息以及存储的每个SSD的资源信息可以对存储对象的数据进行SSD地址分配等处理,并根据处理结果生成相应的第二存入指令,利用PCIe总线的点到点通讯机制,CSP可以将生成的第二操作指令发送给所分配到的SSD,从而使得SSD根据第二存入指令直接和外部请求方交换数据,不再通过CSP,CSP与SSD之间仅进行指令的传输,不会有大量的数据流经CSP,CSP也不会拷贝多余数据,从而大幅度减小了CSP的工作量,降低了时延和功耗。
在本申请的示例性实施例中,所述根据所述第一存入指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二存入指令并发送给SSD,包括:
解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
在本申请的示例性实施例中,该闪存地址即SSD对外提供的任何形式的地址,例如:可以是闪存页、闪存块或存储块的地址,也可以是闪存页、闪存块或存储块的地址段。当该闪存地址是存储块地址时,SSD对外提供逻辑地址,当该闪存地址是闪存页或闪存块的地址时,SSD对外提供物理地址的操作接口。在本申请实施例中以闪存地址为闪存页或闪存块的地址为例进行说明。
在本申请的示例性实施例中,CSP可以根据该SSD的资源占用信息确定出可存储当前待存储的存储对象数据的一个或多个SSD中的闪存地址,并根据待存储对象的数据量大小为该存储对象分配一个或多个所述闪存地址。
在本申请的示例性实施例中,CSP可以首先根据第一存入指令携带的数据长度信息确定需存储的存储对象的数据为大数据还是小数据,并根据确定出的数据大小分配相应的闪存地址。
在本申请的示例性实施例中,当数据长度信息小于或等于预设的第一数据量阈值时,可以将该数据确定为小数据;当数据长度信息大于预设的第一数据量阈值时,可以将该数据确定为大数据。
在本申请的示例性实施例中,该第一数据量阈值可以为一个闪存页的存储数据量,也可以为自定义的数据量,在此对于第一数据量阈值的详细数值不做限定。
在本申请的示例性实施例中,当需要存入的数据为小数据时,CSP可以仅为该数据分配一个闪存页,当需要存入的数据为大数据时,CSP可以为该数据分配多个闪存页,或者,分配一个或多个闪存块。
在本申请的示例性实施例中,当CSP为大数据分配多个闪存页和/或多个闪存块时,该多个闪存页可以为地址连续的闪存页,该多个闪存块可以为地址连续的闪存块,从而可以为该大数据分配一个地址连续的地址段。
在本申请的示例性实施例中,当需要存入的大量的存储对象均为小数据时,在每次写入一个小数据时均需要生成一个第二存入指令,当该小数据的数据量足够大时,会增加存储系统的任务负载,降低性能,增加功耗。针对这一情况,可以对多个需要连续写入的小数据进行合并后再写入。
在本申请的示例性实施例中,例如,可以在接收到关于多个小数据的第一写入指令后,对多个第一写入指令携带的信息进行合并,并根据合并后的信息和本地维护的SSD资源信息,生成一个第二存入指令并发送给SSD,再由SSD根据相应的起始来源地址分别获取每个小数据并存储到所分配的闪存地址中。
在本申请的示例性实施例中,如果多个小数据的起始来源地址是连续的,可以根据该多个起始来源地址所存储的小数据的排列顺序,为多个小数据分配多个连续的闪存地址,并且该多个连续的闪存地址所存储的小数据的排列顺序与多个起始来源地址所存储的小数据的排列顺序相同。
在本申请的示例性实施例中,当存储对象需要被分配到多个不同的SSD中,或同一SSD中的不同的闪存地址时,需要从外部请求方获取每个闪存地址所需的数据量存储到该闪存地址中,因此,可以根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;从而根据该部分数据的起始来源地址获取相应的数据进行存储。
在本申请的示例性实施例中,在CSP向SSD发送第二存入指令时,可以向分配的每个闪存地址分别发送一个第二存入指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二存入指令。
在本申请的示例性实施例中,该第二存入指令可以包括但不限于NVMe存入指令。
在本申请的示例性实施例中,所述第二存入指令是NVMe存入指令,所述NVMe存入指令携带的闪存地址是一个闪存页的地址;或者,
所述第二存入指令是扩展的NVMe存入指令,所述扩展的NVMe存入指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,第二存入指令可以仅包含存储对象的起始来源地址和闪存地址,还可以即包含存储对象的起始来源地址和闪存地址(例如,多个闪存页或闪存块的起始地址),又包含有存储对象的数据量信息。
在本申请的示例性实施例中,当第二存入指令为NVMe存入指令时,该NVMe存入指令可以为普通的NVMe指令,包括:存储对象的起始来源地址和闪存地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的起始来源地址、数据量信息和闪存地址;
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,例如,针对小数据,仅通过一个闪存页便可以存储该数据,因此,可以为该小数据分配一个闪存页,并在第二存入指令中仅包含存储对象的起始来源地址和该闪存页的地址即可。
在本申请的示例性实施例中,例如,针对大数据,需要多个闪存页存储该数据,因此,可以为该大数据分配多个闪存页并附带数据量信息,例如,附带所需闪存页的总数量,并在第二存入指令中包含存储对象的起始来源地址、闪存地址(分配的一个或多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
在本申请的示例性实施例中,CSP还会接收SSD在成功接收到第二存入指令并写入数据成功返回的成功响应。
第五方面:
本申请实施例提供了一种数据存入方法,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,如图5所示,所述方法可以包括步骤S201-S202:
S201、接收CSP发送的基于闪存地址的第二存入指令,解析所述第二存入指令携带的此次要存入的数据的起始来源地址,及本SSD中的闪存地址。
在本申请的示例性实施例中,在SSD接收CSP发送第二存入指令时,可以是每个闪存地址分别接收一个第二存入指令,也可以多个地址连续的闪存地址(即地址段)接收一条第二存入指令。
在本申请的示例性实施例中,该第二存入指令可以包括但不限于NVMe存入指令。
在本申请的示例性实施例中,第二存入指令可以仅包含存储对象的起始来源地址和闪存地址,还可以即包含存储对象的起始来源地址和闪存地址(例如,多个闪存页或闪存块的起始地址),又包含有存储对象的数据量信息。
在本申请的示例性实施例中,当第二存入指令为NVMe存入指令时,该NVMe存入指令可以为普通的NVMe指令,包括:存储对象的起始来源地址和闪存地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的起始来源地址、数据量信息和闪存地址;
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,例如,针对小数据,仅通过一个闪存页便可以存储该数据,因此,可以为该小数据分配一个闪存页,并在第二存入指令中仅包含存储对象的起始来源地址和该闪存页的地址即可。
在本申请的示例性实施例中,例如,针对大数据,需要多个闪存页存储该数据,因此,可以为该大数据分配多个闪存页并附带数据量信息,例如,附带所需闪存页的总数量,并在第二存入指令中包含存储对象的起始来源地址、闪存地址(分配的一个或多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,例如,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
S202、根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址。
在本申请的示例性实施例中,所述第二存入指令是NVMe存入指令,所述NVMe存入指令携带的闪存地址是一个闪存页的地址;
所述根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址,包括:根据解析出的起始来源地址从外部读取所述存储对象的一个闪存页大小的数据,存入解析出的该闪存页的地址。
在本申请的示例性实施例中,所述第二存入指令是扩展的NVMe存入指令,所述扩展的NVMe存入指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示;
所述根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址,包括:根据解析出的起始来源地址和数据量信息,从外部读取所述存储对象的相应数据量的数据并存入解析出的地址段。
在本申请的示例性实施例中,SSD在成功接收到发送的所有第二存入指令并写入数据成功后,向CSP返回成功响应。
第六方面:
本申请实施例提供了一种数据读取方法,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,如图6所示,所述方法可以包括步骤S301-S302:
S301、接收外部基于存储对象的第一读取指令。
在本申请的示例性实施例中,CSP通过PCIe总线基于点对点通信机制与外部请求方进行通信,接受外部的存储请求,例如上述的第一读取指令,该第一读取指令可以包含需要读取的存储对象的相关信息。
在本申请的示例性实施例中,该第一读取指令可以包括但不限于:存储对象的标识以及数据接收的起始地址。
S302、根据所述第一读取指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二读取指令并发送给SSD。
在本申请的示例性实施例中,SSD资源信息可以包括但不限于:存储系统所包含的全部SSD的地址,每个SSD中的闪存页和/或闪存块的地址,每个闪存页的资源占用信息、每个被占用的闪存页对应的存储对象的标识以及偏移,等等。
在本申请的示例性实施例中,CSP可以根据该第一读取指令中包含的存储对象的标识查询将要读取的存储对象的数据在SSD中的闪存地址,并将该闪存地址以及外部请求方的数据接收的起始地址携带在第二读取指令中发送给SSD。
在本申请的示例性实施例中,所述根据所述第一读取指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二读取指令并发送给SSD,可以包括:
解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的此次要读取数据所存入的一个或多个SSD中的闪存地址;
为存储有所述此次要读取数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
在本申请的示例性实施例中,需读取的存储对象的数据可能为大数据,也可能为小数据,当该存储对象的数据为大数据,占用(如正好占满,或未占满存在浪费)了一个或多个完整的闪存页和/或闪存块时,可以仅在第二读取指令中携带该一个或多个闪存页和/或闪存块的地址,以及数据接收的起始地址。当该存储对象的数据为大数据,并且占用多个连续的闪存页和/或闪存块时,可以在第二读取指令中携带该多个连续的闪存页和/或闪存块的起始地址,并用数据量信息指示具体的闪存页和/或闪存块的数量,因此,该第二读取指令中可以携带该多个连续的闪存页和/或闪存块的起始地址、该存储对象的数据量信息以及数据接收的起始地址。当该存储对象的数据为小数据,并且仅占用了一个闪存页的一部分空间,而且该闪存页的另一部分空间被其他数据占用时,在第二读取指令中不仅携带该闪存页的地址,还可以携带需读取的该存储对象的数据的偏移,以便于根据该偏移在该闪存页中准确读取需要的数据,因此该第二读取指令可以携带闪存页的地址、偏移以及数据接收的起始地址。
在本申请的示例性实施例中,在CSP向SSD发送第二读取指令时,可以向分配的每个闪存地址分别发送一个第二读取指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二读取指令。
在本申请的示例性实施例中,该第二读取指令可以包括但不限于NVMe读取指令。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,当第二读取指令为NVMe读取指令时,该NVMe读取指令可以为普通的NVMe指令,包括:存储对象的闪存地址和数据接收的起始地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的闪存地址、数据量信息和数据接收的起始地址。
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,该偏移是指一个闪存页中的小数据相对于该闪存页的闪存地址的偏移,该偏移一般用两个偏移量表示。
在本申请的示例性实施例中,针对小数据,可能仅存储在一个闪存页内,可能完全占有一个闪存页,也有可能仅占有该闪存页的一部分,另一部分由其他小数据占用,因此,对于完全占用一个闪存页的小数据来说,在第二读取指令中仅包含存储对象的数据接收的起始地址和该闪存页的地址即可,对于与其他小数据合占一个闪存页的小数据来说,在第二读取指令中可以包含存储对象的数据接收的起始地址、该闪存页的地址以及该小数据的偏移,用于SSD从该闪存页读取出数据以后再从读取的数据中根据该偏移截取所需的数据。
在本申请的示例性实施例中,针对大数据,需要多个闪存页存储该数据,因此,读取该大数据时可以附带数据量信息(如,附带所存储的闪存页的总数量),并在第二读取指令中包含存储对象的数据接收的起始地址、闪存地址(存储数据的闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
第七方面:
本申请实施例提供了一种数据读取方法,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,如图7所示,所述方法可以包括步骤S401-S402:
S401、接收CSP发送的基于闪存地址的第二读取指令,解析所述第二读取指令携带的此次要读取的数据在本SSD中的闪存地址以及数据接收的起始地址。
在本申请的示例性实施例中,CSP可以根据接收到的外部请求方发送的第一读取指令中包含的存储对象的标识查询将要读取的存储对象的数据在SSD中的闪存地址,并将该闪存地址以及外部请求方的数据接收的起始地址携带在第二读取指令中发送给SSD。
在本申请的示例性实施例中,需读取的存储对象的数据可能为大数据,也可能为小数据,当该存储对象的数据为大数据,占用(如正好占满,或未占满存在浪费)了一个或多个完整的闪存页和/或闪存块时,可以仅在第二读取指令中携带该一个或多个闪存页和/或闪存块的地址,以及数据接收的起始地址。当该存储对象的数据为大数据,并且占用多个连续的闪存页和/或闪存块时,可以在第二读取指令中携带该多个连续的闪存页和/或闪存块的起始地址,并用数据量信息指示具体的闪存页和/或闪存块的数量,因此,该第二读取指令中可以携带该多个连续的闪存页和/或闪存块的起始地址、该存储对象的数据量信息以及数据接收的起始地址。当该存储对象的数据为小数据,并且仅占用了一个闪存页的一部分空间,而且该闪存页的另一部分空间被其他数据占用时,在第二读取指令中不仅携带该闪存页的地址,还可以携带需读取的该存储对象的数据的偏移,以便于根据该偏移在该闪存页中准确读取需要的数据,因此该第二读取指令可以携带闪存页的地址、偏移以及数据接收的起始地址。
在本申请的示例性实施例中,在CSP向SSD发送第二读取指令时,可以向分配的每个闪存地址分别发送一个第二读取指令,也可以针对多个地址连续的闪存地址(即地址段)发送一条第二读取指令。
在本申请的示例性实施例中,该第二读取指令可以包括但不限于NVMe读取指令。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
在本申请的示例性实施例中,当第二读取指令为NVMe读取指令时,该NVMe读取指令可以为普通的NVMe指令,包括:存储对象的闪存地址和数据接收的起始地址;该NVMe存入指令还可以为扩展的NVMe指令,包括:存储对象的闪存地址、数据量信息和数据接收的起始地址。
在本申请的示例性实施例中,该数据量信息可以包含但不限于:数据总容量(例如,32K、64k等)、所需的闪存页和/或闪存块的总数量等。
在本申请的示例性实施例中,该偏移是指一个闪存页中的小数据相对于该闪存页的闪存地址的偏移,该偏移一般用两个偏移量表示。
在本申请的示例性实施例中,针对小数据,可能仅存储在一个闪存页内,可能完全占有一个闪存页,也有可能仅占有该闪存页的一部分,另一部分由其他小数据占用,因此,对于完全占用一个闪存页的小数据来说,在第二读取指令中仅包含存储对象的数据接收的起始地址和该闪存页的地址即可,对于与其他小数据合占一个闪存页的小数据来说,在第二读取指令中可以包含存储对象的数据接收的起始地址、该闪存页的地址以及该小数据的偏移,用于SSD从该闪存页读取出数据以后再从读取的数据中根据该偏移截取所需的数据。
在本申请的示例性实施例中,针对大数据,需要多个闪存页存储该数据,因此,读取该大数据时可以附带数据量信息(如,附带所存储的闪存页的总数量),并在第二读取指令中包含存储对象的数据接收的起始地址、闪存地址(所存储的一个或多个闪存页和/或闪存块的起始地址)以及数据量信息。
在本申请的示例性实施例中,每一个闪存块的尺寸是16kB,那么第一个闪存块的起始地址=原起始地址,第二个闪存块的起始地址=原起始地址+16kB,依次类推,可以确定出任何一个闪存块的起始地址,对于闪存页来说,道理相同,在此不再一一赘述。
S402、根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页或闪存块的地址;
所述根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址,包括:根据解析出的闪存页或闪存块的地址从本SSD读取相应的闪存页或闪存块的全部数据,并存入解析出的外部的数据接收的起始地址。
在本申请的示例性实施例中,针对仅包含闪存地址和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址在本SSD中把相应的一个或多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,所述第二读取指令是扩展的NVMe读取指令,所述扩展的NVMe读取指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示;
所述根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址,包括:根据解析出的地址段和数据量信息,从本SSD中读取所述存储对象的相应数据量的数据并存入解析出的外部的数据接收的起始地址。
在本申请的示例性实施例中,针对包含闪存地址、数据量信息和数据接收的起始地址的第二读取指令,所述SSD可以根据该闪存地址和数据量信息把相应的多个闪存页和/或闪存块中存储的数据全部取出,并存储到数据接收的起始地址。
在本申请的示例性实施例中,SSD在成功接收到发送的第二读取指令并读取数据成功后,向CSP返回成功响应。
第八方面:
本申请实施例提供了一种存储系统中的计算存储处理器CSP,如图8所示,可以包括:第三PCIe总线接口31,及与第三PCIe总线接口31耦合的第一逻辑电路组件32;所述第一逻辑电路组件32被配置为存储管理系统以执行第四方面所述的数据存入方法,以及第六方面所述的数据读取方法。
在本申请的示例性实施例中,前述的第四方面和第六方面中的任何实施例均适用于该第八方面的内容中,在此不再一一赘述。
第九方面:
本申请实施例还提供了一种固态硬盘SSD的主控芯片21,如图9所示,可以包括:第四PCIe总线接口41,及与第四PCIe总线接口41耦合的第二逻辑电路组件42;所述第二逻辑电路组件42被配置为执行第五方面所述的数据存入方法,以及第七方面所述的数据读取方法。
在本申请的示例性实施例中,前述的第一方面至第七方面中的任何实施例均适用于该第九方面的内容中,在此不再一一赘述。
第十方面:
本申请实施例提供了一种非易失性存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时执行第四方面和第五方面所述的数据存入方法,以及第六和和第七方面所述的数据读取方法。
在本申请的示例性实施例中,前述的第一方面至第七方面中的任何实施例均适用于该第十方面的内容中,在此不再一一赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (36)

1.一种存储系统,其特征在于,包括固态硬盘SSD和计算存储处理器CSP,所述SSD与CSP之间以及所述SSD、CSP与存储系统外部之间通过高速串行计算机扩展总线标准PCIe总线的点对点通信协议进行通信:
所述CSP被配置为接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;
所述SSD被设置为接收到所述第二操作指令后,根据所述第二操作指令携带的信息与外部交换所述存储对象的数据;
其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令。
2.如权利要求1所述的存储系统,其特征在于:
所述CSP被配置为接收到第一存入指令后,通过以下方式生成基于闪存地址的第二操作指令并发送给SSD:
解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
3.如权利要求2所述的存储系统,其特征在于:
所述SSD被设置为接收到第二存入指令后,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的起始来源地址和闪存地址,根据解析出的起始来源地址从外部读取所述存储对象的默认大小的数据,及将读取的数据存入解析出的闪存地址;或者,
所述CSP发送的第二存入指令还携带此次要存入的所述存储对象的数据量信息,所述SSD被设置为接收到第二存入指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的起始来源地址、闪存地址和数据量信息,根据解析出的起始来源地址从外部读取所述存储对象的相应数据量的数据,及将读取的数据存入解析出的闪存地址。
4.如权利要求1所述的存储系统,其特征在于:
所述CSP被配置为接收到第一读取指令后,通过以下方式生成基于闪存地址的第二操作指令并发送给SSD:
解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的所述存储对象的数据所存入的一个或多个SSD中的闪存地址;
为存储有所述存储对象的数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
5.如权利要求4所述的存储系统,其特征在于:
所述SSD被设置为接收到第二读取指令后,通过以下方式与外部交换所述存储对象的数据:解析所述第二读取指令携带的闪存地址和数据接收的起始地址,根据解析出的闪存地址从一个或多个SSD中读取此次要读取的数据,并将读取的数据发送至外部的所述数据接收的起始地址;或者,
所述CSP发送的第二读取指令还携带所述存储对象的数据量信息,所述SSD被设置为接收到第二读取指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的闪存地址、数据接收的起始地址和数据量信息,根据解析出的闪存地址从SSD中读取此次要读取的数据,并将读取的数据发送至外部的所述数据接收的起始地址;或者,
所述CSP发送的第二读取指令还携带所述存储对象的闪存地址的偏移,所述SSD被设置为接收到第二读取指令时,通过以下方式与外部交换所述存储对象的数据:解析所述第二存入指令携带的闪存地址及其偏移、数据接收的起始地址,根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据,存入外部的所述数据接收的起始地址;或者,读出闪存页的全部数据,只把所需要的部分存入外部所述数据接受的起始地址。
6.如权利要求1所述的存储系统,其特征在于:
所述SSD还被配置为根据所述第二操作指令携带的信息与外部交换所述存储对象的数据成功之后,向所述CSP返回成功响应;
所述CSP还被配置为接收到发送的所有第二操作指令的成功响应后,向所述第一操作指令的发送方返回成功响应,并更新维护的SSD资源信息。
7.一种存储系统中的计算存储处理器CSP,其特征在于,包括:
第一高速串行计算机扩展总线标准PCIe总线接口,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的固态硬盘SSD及所述存储系统外部通信;
存储管理系统,被设置为通过第一PCIe总线接口接收外部基于存储对象的第一操作指令,根据所述第一操作指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二操作指令并发送给SSD;其中,所述第一操作指令包括第一存入指令和第一读取指令,所述第二操作指令包括第二存入指令和第二读取指令;以及,
信息管理模块,被设置为维护所述存储系统中的SSD资源信息。
8.如权利要求7所述的CSP,其特征在于:
所述存储管理系统包括存入处理模块,所述存入处理模块被配置为:
通过PCIe总线接口接收外部的第一存入指令,解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
9.如权利要求8所述的CSP,其特征在于:
所述第二存入指令携带的闪存地址用一个闪存页的地址表示;
所述存入处理模块为分配有闪存地址的每一SSD生成一条或多条第二存入指令时,是对该SSD中分配的每一闪存页生成一条第二存入指令,携带要存入该闪存页的数据的起始来源地址,及该闪存页的地址。
10.如权利要求8所述的CSP,其特征在于:
所述第二存入指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一个地址段,该地址段用起始地址和数据量信息表示;
所述存入处理模块为分配有闪存地址的每一SSD生成一条或多条第二存入指令时,是对该SSD中的每一地址段生成一条第二存入指令,携带要存入该地址段的数据的直始来源地址,及该地址段的起始地址和数据量信息。
11.如权利要求8所述的CSP,其特征在于:
所述存入处理模块为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD之后,还配置为在接收到发送的所有第二存入指令的成功响应后,向所述第一存入指令的发送方返回成功响应,并通知所述信息管理模块记录所述存储对象的标识及所述分配的SSD中的闪存地址。
12.如权利要求7所述的CSP,其特征在于:
所述存储管理系统包括读取处理模块,所述读取处理模块被配置为:
通过所述第一PCIe总线接口接收外部的第一读取指令,解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的所述存储对象的数据所存入的一个或多个SSD中的闪存地址;
为存储有所述存储对象的数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
13.如权利要求12所述的CSP,其特征在于:
所述第二读取指令携带的闪存地址用一个闪存页的地址表示;
所述读取处理模块为存储有所述此次要读取数据的每一SSD生成一条或多条第二读取指令时,是对该SSD中分配的每一闪存页生成一条第二读取指令,携带要读取的该闪存页的地址以及数据接收的起始地址。
14.如权利要求12所述的CSP,其特征在于:
所述第二读取指令携带的闪存地址用一个闪存页的地址表示;
所述读取处理模块为存储有所述此次要读取数据的每一SSD生成一条或多条第二读取指令时,是对该SSD中分配的每一闪存页生成一条第二读取指令,携带要读取的该闪存页的地址、此次要读取数据在所述闪存页的存储数据中的偏移以及数据接收的起始地址。
15.如权利要求12所述的CSP,其特征在于:
所述第二读取指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一个地址段,该地址段用起始地址和数据量信息表示;
所述读取处理模块为分配有闪存地址的每一SSD生成一条或多条第二读取指令时,是对该SSD中的每一地址段生成一条第二读取指令,携带要读取的该地址段的起始地址和数据量信息,以及数据接收的起始地址。
16.一种存储系统中的固态硬盘SSD,包括主控芯片和闪存芯片,其特征在于,所述主控芯片包括:
第二高速串行计算机扩展总线标准PCIe总线接口,被配置为与PCIe总线连接,以通过PCIe总线与所述存储系统中的计算存储处理器CSP及所述存储系统外部通信;以及,
存储控制器,被设置为接收CSP发送的基于闪存地址的第二操作指令,根据所述第二操作指令携带的信息与外部交换存储对象的数据;其中,所述第二操作指令包括第二存入指令和第二读取指令。
17.如权利要求16所述的SSD,其特征在于:
所述存储控制器包括存入控制模块,所述存入控制模块被配置为:
接收所述第二存入指令,解析所述第二存入指令携带的所述存储对象的数据的起始来源地址以及在本SSD中进行数据存储的闪存地址;
根据解析出的起始来源地址从外部读取所述存储对象的数据,将读取的数据存入解析出的闪存地址。
18.如权利要求17所述的SSD,其特征在于:
所述解析出的闪存地址是一个闪存页的地址;所述存入控制模块是被配置为根据解析出的起始来源地址,从外部读取所述存储对象的一个闪存页大小的数据并存入解析出的该闪存页的地址;或者,
所述解析出的闪存地址是用起始地址和数据量信息表示的一个地址段;该地址段包含多个完整闪存页的地址;所述存入控制模块是被配置为根据解析出的起始来源地址和数据量信息,从外部读取所述存储对象的相应数据量的数据并存入解析出的该地址段。
19.如权利要求16所述的SSD,其特征在于:
所述存储控制器包括读取控制模块,所述读取控制模块被配置为:
接收所述第二读取指令,解析所述第二读取指令携带的所述存储对象的数据在本SSD中进行数据存储的闪存地址以及数据接收的起始地址;
根据解析出的闪存地址从本SSD中读取所述存储对象的数据,将读取的数据存入外部的数据接收的起始地址。
20.如权利要求19所述的SSD,其特征在于:
所述解析出的闪存地址是一个闪存页的地址;所述读取控制模块是被配置为根据解析出的该闪存页的地址,从本SSD读取所述存储对象的数据并存入解析出的数据接收的起始地址;或者,
所述解析出的闪存地址是用起始地址和数据量信息表示的一个地址段;该地址段包含多个完整闪存页的地址;所述读取控制模块是被配置为根据解析出的起始地址和数据量信息,从本SSD读取所述存储对象的相应数据量的数据并存入解析出的数据接收的起始地址。
21.如权利要求19所述的SSD,其特征在于:
所述解析出的闪存地址是一个闪存页的地址以及此次要读取数据相对于所述闪存页的地址的偏移;所述读取控制模块是被配置为根据解析出的闪存地址及其偏移从一个闪存页中读取存储的部分数据,或者,根据解析出的所述闪存页的地址从本SSD中读取该闪存页的全部数据,并根据所述偏移从读取的所述全部数据中截取所需要的存储对象的数据存入解析出的数据接收的起始地址。
22.一种数据存入方法,其特征在于,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,所述方法包括:
接收外部基于存储对象的第一存入指令;
根据所述第一存入指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二存入指令并发送给SSD。
23.如权利要求22所述的数据存入方法,其特征在于:
所述根据所述第一存入指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二存入指令并发送给SSD,包括:
解析所述第一存入指令携带的存储对象的标识、数据长度信息和整个数据的起始来源地址;
根据所述数据长度信息和SSD中的资源占用信息,分配供所述存储对象的数据存入的一个或多个SSD中的闪存地址;以及根据整个所述存储对象的数据的起始来源地址、每次要存入的所述存储对象的部分数据在整个所述存储对象的数据中的偏移,确定每次要存入的部分数据的起始来源地址;
为分配有闪存地址的每一SSD生成一条或多条第二存入指令并发送给该SSD,每条第二存入指令携带该SSD此次要存入的数据的起始来源地址,及供数据存入的闪存地址。
24.如权利要求23所述的数据存入方法,其特征在于:
所述第二存入指令是NVMe存入指令,所述NVMe存入指令携带的闪存地址是一个闪存页的地址;或者,
所述第二存入指令是扩展的NVMe存入指令,所述扩展的NVMe存入指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
25.一种数据存入方法,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,所述方法包括:
接收CSP发送的基于闪存地址的第二存入指令,解析所述第二存入指令携带的此次要存入的数据的起始来源地址,及本SSD中的闪存地址;
根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址。
26.如权利要求25所述的数据存入方法,其特征在于:
所述第二存入指令是NVMe存入指令,所述NVMe存入指令携带的闪存地址是一个闪存页的地址;
所述根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址,包括:根据解析出的起始来源地址从外部读取所述存储对象的一个闪存页大小的数据,存入解析出的该闪存页的地址。
27.如权利要求25所述的数据存入方法,其特征在于:
所述第二存入指令是扩展的NVMe存入指令,所述扩展的NVMe存入指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示;
所述根据解析出的起始来源地址,从外部读取所述存储对象的数据并存入解析出的闪存地址,包括:根据解析出的起始来源地址和数据量信息,从外部读取所述存储对象的相应数据量的数据并存入解析出的地址段。
28.一种数据读取方法,应用于存储系统中的计算存储处理器CSP,所述CSP通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的固态硬盘SSD和所述存储系统外部通信,所述方法包括:
接收外部基于存储对象的第一读取指令;
根据所述第一读取指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二读取指令并发送给SSD。
29.如权利要求28所述的数据读取方法,其特征在于:
所述根据所述第一读取指令携带的信息及本地维护的SSD资源信息,生成基于闪存地址的第二读取指令并发送给SSD,包括:
解析所述第一读取指令携带的存储对象的标识以及数据接收的起始地址;
根据所述存储对象的标识查阅预先保存的此次要读取数据所存入的SSD中的闪存地址;
为存储有所述此次要读取数据的每一个SSD生成一条或多条第二读取指令并发送给该SSD,每条第二读取指令携带该SSD中此次要读取的数据的闪存地址以及数据接收的起始地址。
30.如权利要求29所述的数据读取方法,其特征在于:
所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;或者,
所述第二读取指令是扩展的NVMe存入指令,所述扩展的NVMe读取指令携带的闪存地址是一个闪存页或多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示。
31.一种数据读取方法,其特征在于,应用于存储系统中的固态硬盘SSD,所述SSD通过高速串行计算机扩展总线标准PCIe总线与所述存储系统中的计算存储处理器CSP和所述存储系统外部通信,所述方法包括:
接收CSP发送的基于闪存地址的第二读取指令,解析所述第二读取指令携带的此次要读取的数据在本SSD中的闪存地址以及数据接收的起始地址;
根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址。
32.如权利要求31所述的数据读取方法,其特征在于:
所述第二读取指令是NVMe读取指令,所述NVMe读取指令携带的闪存地址是一个闪存页的地址;
所述根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址,包括:根据解析出的闪存页的地址从本SSD读取一页数据,存入解析出的外部的数据接收的起始地址。
33.如权利要求31所述的数据读取方法,其特征在于:
所述第二读取指令是扩展的NVMe读取指令,所述扩展的NVMe读取指令携带的闪存地址是多个连续闪存页的地址构成的一地址段,该地址段用起始地址和数据量信息表示;
所述根据解析出的闪存地址,从本SSD中读取所述存储对象的数据并存入解析出的外部的数据接收的起始地址,包括:根据解析出的地址段和数据量信息,从本SSD中读取所述存储对象的相应数据量的数据并存入解析出的外部的数据接收的起始地址。
34.一种存储系统中的计算存储处理器CSP,其特征在于,包括:第三高速串行计算机扩展总线标准PCIe总线接口,及与第三PCIe总线接口耦合的第一逻辑电路组件;所述第一逻辑电路组件被配置为存储管理系统以执行如权利要求22至24中任一所述的数据存入方法,以及如权利要求28至30中任一所述的数据读取方法。
35.一种固态硬盘SSD的主控芯片,其特征在于,包括:第四高速串行计算机扩展总线标准PCIe总线接口,及与第四PCIe总线接口耦合的第二逻辑电路组件;所述第二逻辑电路组件被配置为执行如权利要求25至27中任一所述的数据存入方法,以及如权利要求31至33中任一所述的数据读取方法。
36.一种非易失性存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求22至27中任一所述的数据存入方法,以及如权利要求28至33中任一所述的数据读取方法。
CN202210985642.6A 2022-08-17 2022-08-17 存储系统及其计算存储处理器、固体硬盘和数据读写方法 Active CN115357540B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202210985642.6A CN115357540B (zh) 2022-08-17 2022-08-17 存储系统及其计算存储处理器、固体硬盘和数据读写方法
EP23853680.9A EP4375842A1 (en) 2022-08-17 2023-04-04 Storage system, computational storage processor and solid-state drive thereof, and data reading method and data writing method therefor
PCT/CN2023/086244 WO2024036985A1 (zh) 2022-08-17 2023-04-04 存储系统及其计算存储处理器、固体硬盘和数据读写方法
US18/312,968 US11928345B1 (en) 2022-08-17 2023-05-05 Method for efficiently processing instructions in a computational storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210985642.6A CN115357540B (zh) 2022-08-17 2022-08-17 存储系统及其计算存储处理器、固体硬盘和数据读写方法

Publications (2)

Publication Number Publication Date
CN115357540A true CN115357540A (zh) 2022-11-18
CN115357540B CN115357540B (zh) 2023-04-14

Family

ID=84002114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210985642.6A Active CN115357540B (zh) 2022-08-17 2022-08-17 存储系统及其计算存储处理器、固体硬盘和数据读写方法

Country Status (2)

Country Link
CN (1) CN115357540B (zh)
WO (1) WO2024036985A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024036985A1 (zh) * 2022-08-17 2024-02-22 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法
US11928345B1 (en) 2022-08-17 2024-03-12 Beijing Superstring Academy Of Memory Technology Method for efficiently processing instructions in a computational storage device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113424144A (zh) * 2019-03-12 2021-09-21 英特尔公司 计算数据存储系统
CN113885945A (zh) * 2021-08-30 2022-01-04 山东云海国创云计算装备产业创新中心有限公司 一种计算加速方法、设备以及介质
CN113918101A (zh) * 2021-12-09 2022-01-11 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质
US20220236911A1 (en) * 2021-01-26 2022-07-28 Seagate Technology Llc Data streaming for computational storage

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357540B (zh) * 2022-08-17 2023-04-14 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113424144A (zh) * 2019-03-12 2021-09-21 英特尔公司 计算数据存储系统
US20220236911A1 (en) * 2021-01-26 2022-07-28 Seagate Technology Llc Data streaming for computational storage
CN113885945A (zh) * 2021-08-30 2022-01-04 山东云海国创云计算装备产业创新中心有限公司 一种计算加速方法、设备以及介质
CN113918101A (zh) * 2021-12-09 2022-01-11 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024036985A1 (zh) * 2022-08-17 2024-02-22 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法
US11928345B1 (en) 2022-08-17 2024-03-12 Beijing Superstring Academy Of Memory Technology Method for efficiently processing instructions in a computational storage device

Also Published As

Publication number Publication date
WO2024036985A1 (zh) 2024-02-22
CN115357540B (zh) 2023-04-14

Similar Documents

Publication Publication Date Title
CN115357540B (zh) 存储系统及其计算存储处理器、固体硬盘和数据读写方法
CN113868155B (zh) 一种内存空间扩展方法、装置及电子设备和存储介质
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
CN110096221B (zh) 存储器系统及其控制方法
KR100881597B1 (ko) 읽기 요청 처리 시스템 및 방법
US11372564B2 (en) Apparatus and method for dynamically allocating data paths in response to resource usage in data processing system
US12086432B2 (en) Gradually reclaim storage space occupied by a proof of space plot in a solid state drive
CN116431530B (zh) 一种cxl内存模组、内存的处理方法及计算机系统
US20140040541A1 (en) Method of managing dynamic memory reallocation and device performing the method
CN110908594A (zh) 存储器系统的操作方法和存储器系统
CN110908596A (zh) 数据存储装置、其操作方法和包括存储装置的存储系统
CN117992360A (zh) 存储系统及存储方法
US20060143313A1 (en) Method for accessing a storage device
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
CN116795735A (zh) 固态硬盘空间分配方法、装置、介质及系统
CN105453066A (zh) 处理器和存储器控制方法
CN115586943B (zh) 一种智能网卡虚拟机脏页的硬件标记实现方法
CN107861887B (zh) 一种串行易失性存储器的控制方法
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN112947863B (zh) 一种飞腾服务器平台下存储空间合并成的方法
US20060277326A1 (en) Data transfer system and method
CN105659216A (zh) 多核处理器系统的缓存目录处理方法和目录控制器
CN115712581A (zh) 数据访问方法、存储系统及存储节点
US11928345B1 (en) Method for efficiently processing instructions in a computational storage device
CN117971728B (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