CN112825024A - 命令融合、拆分方法与NVMe控制器 - Google Patents
命令融合、拆分方法与NVMe控制器 Download PDFInfo
- Publication number
- CN112825024A CN112825024A CN201911142444.8A CN201911142444A CN112825024A CN 112825024 A CN112825024 A CN 112825024A CN 201911142444 A CN201911142444 A CN 201911142444A CN 112825024 A CN112825024 A CN 112825024A
- Authority
- CN
- China
- Prior art keywords
- command
- message
- data carried
- data
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
本申请提供了命令融合、拆分方法与NVMe控制器,其中数据处理方法包括获取第一命令,所述第一命令包括读命令和写命令;根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息;输出所述第一消息。在面对不同类型的命令时,该方法能够灵活地对其预先进行拆分或合并处理,减少NVMe控制器与外部单元的交互,从而提高数据传输效率。
Description
技术领域
本申请涉及存储技术,特别地,涉及命令融合、拆分方法与NVMe控制器。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
例如,控制部件104是一种NVMe控制器,从而接口103适用NMVe协议,而由于NVMe协议的规定,控制部件104处理的命令是数据长度为64字节的命令,因此主机生产的命令的长度往往是64字节。但是CPU能够处理的消息的长度通常小于64字节(如16字节)。因此,CPU在接收长度为64字节的命令时,需要分成多次来接收,仅命令传输就占用了大量时间。在CPU在接收到完整的读命令和写命令之后,才能对该命令进行处理,这也浪费了大量的等待时间。
发明内容
根据本申请的第一方面,提供了根据本申请的第一方面的第一数据处理方法,用以解决现有技术中控制部件中的CPU所需的接收命令的时间过长的问题,该方法包括:获取第一命令,所述第一命令包括读命令和写命令;根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息;输出所述第一消息。
根据本申请的第一方面的第一数据处理方法,提供了根据本申请的第一方面的第二数据处理方法,所述根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,包括:在所述第一命令为读命令时,保存所述第一命令;获取第二命令,所述第二命令包括读命令和写命令;若所述第二命令为读命令,则将所述第一命令携带的数据和所述第二命令携带的数据合并,以获取所述第一消息;其中,所述第一消息包括两个读命令携带的数据。
根据本申请的第一方面的第二数据处理方法,提供了根据本申请的第一方面的第三数据处理方法,若所述第二命令为写命令,在获取到所述第二命令之后的预设时长内获取到读命令,则将所述获取到的读命令携带的数据与所述第一命令携带的数据合并,以获取所述第一消息。
根据本申请的第一方面的第二或第三数据处理方法,提供了根据本申请的第一方面的第四数据处理方法,若所述第二命令为写命令,则不对所述第一命令携带的数据进行拆分或合并处理,并输出所述第一命令。
根据本申请的第一方面的第一至第四数据处理方法之一,提供了根据本申请的第一方面的第五数据处理方法,所述根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息还包括:在所述第一命令为写命令时,将所述第一命令携带的数据拆分成N个第一消息,所述N为大于等于2的整数;所述输出第一消息,包括:依次输出所述N个第一消息,所述N个第一消息中的每个第一消息具有相同或不同的消息类型。
根据本申请的第一方面的第五数据处理方法,提供了根据本申请的第一方面的第六数据处理方法,所述依次输出所述N个第一消息,包括:将所述N个第一消息中的任意两个相邻的第一消息,连续地输出;或者,将所述N个第一消息中的任意两个相邻的第一消息,间隔预定时长地输出;或者,将所述N个第一消息的第一个第一消息输以后的T1时间之后,输出第二个第一消息,所述第二个第一消息到第N个第一消息中的任意两个相邻的第一消息的输出的时间间隔为T2,T2小于T1,T1和T2均大于零。
根据本申请的第一方面的第五或第六数据处理方法,提供了根据本申请的第一方面的第七数据处理方法,所述第一命令携带的数据拆分成N个第一消息之前,所述方法还包括:判断所述第一命令携带的数据的数据长度;若所述数据长度小于或等于第一预设阈值,则不拆分所述第一命令携带的数据;若所述数据长度大于所述第一预设阈值,则拆分所述第一命令携带的数据。
根据本申请的第一方面的第七数据处理方法,提供了根据本申请的第一方面的第八数据处理方法,若所述数据长度小于第二预设阈值,则将所述第一命令携带的数据和第三命令携带的数据合并,以获取所述第一消息,其中,所述第三命令为获取到第一命令之后的预设时长内获取到的写命令,且所述第三命令的携带的数据的数据长度小于所述第二预设阈值。
根据本申请的第一方面的第七或第八数据处理方法,提供了根据本申请的第一方面的第九数据处理方法,所述第一预设阈值大于等于所述第二预设阈值的两倍。
根据本申请的第一方面的第五至第九数据处理方法之一,提供了根据本申请的第一方面的第十数据处理方法,第一消息携带标识符,所述标识符用于表征第一消息的消息类型,其中,所述N个第一消息中的第一个第一消息和第N个第一消息的消息类型不同。
根据本申请的第一方面的第五至第十数据处理方法之一,提供了根据本申请第一方面的第十一数据处理方法,所述N个第一消息中的每个第一消息的数据长度相等。
根据本申请的第二方面,提供了根据本申请第二方面的第一NVMe控制器,包括处理器、DMA单元和缓存区,其中,所述DMA单元获取第一命令,并将所述第一命令存放至所述缓存区,所述第一命令包括读命令和写命令;所述处理器根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,并输出所述第一消息。
根据本申请的第二方面的第一NVMe控制器,提供了根据本申请的第二方面的第二NVMe控制器,在所述第一命令为读命令时,所述处理器将所述第一命令保存至所述缓存区;所述DMA单元从所述主机中获取第二命令,所述第二命令包括读命令和写命令;若所述第二命令为读命令,所述处理器将所述第一命令携带的数据和所述第二命令携带的数据合并,以获取所述第一消息;所述处理器输出所述第一消息,所述第一消息包括包括两个读命令携带的数据。
根据本申请的第二方面的第二NVMe控制器,提供了根据本申请的第二方面的第三NVMe控制器,若所述第二命令为写命令,在获取到所述第二命令之后的预设时长内所述DMA单元获取到读命令,则所述处理器将所述获取到的读命令携带的数据与所述第一命令携带的数据合并,以获取所述第一消息。
根据本申请的第二方面的第二或第三NVMe控制器,提供了根据本申请的第二方面的第四NVMe控制器,若所述第二命令为写命令,所述处理器不对所述第一命令携带的数据进行拆分或合并处理,并输出所述第一命令。
根据本申请的第二方面的第一至第四NVMe控制器之一,提供了根据本申请的第二方面的第五NVMe控制器,所述处理器根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,还包括:在所述第一命令为写命令时,所述处理器将所述第一命令携带的数据拆分成N个第一消息,所述N为大于等于2的整数;所述处理器依次输出所述N个第一消息,所述N个第一消息中的每个第一消息具有相同或不同的消息类型。
根据本申请的第二方面的第五NVMe控制器,提供了根据本申请的第二方面的第六NVMe控制器,所述依次输出所述N个第一消息,包括:所述DMA单元将所述N个第一消息中的任意两个相邻的第一消息,连续地输出;或者,所述DMA单元将所述N个第一消息中的任意两个相邻的第一消息,间隔预定时长地输出;或者,所述DMA单元将所述N个第一消息的第一个第一消息输以后的T1时间之后,输出第二个第一消息,所述第二个第一消息到第N个第一消息中的任意两个相邻的第一消息的输出的时间间隔为T2,T2小于T1,T1和T2均大于零。
根据本申请的第二方面的第五或第六NVMe控制器,提供了根据本申请的第二方面的第七NVMe控制器,所述处理器将所述第一命令携带的数据拆分成所述N个第一消息之前,所述处理器判断所述第一命令携带的数据的数据长度;若所述数据长度小于或等于第一预设阈值,则所述处理器不拆分所述第一命令携带的数据;若所述数据长度大于所述第一预设阈值,则所述处理器拆分所述第一命令携带的数据。
根据本申请的第二方面的第七NVMe控制器,提供了根据本申请的第二方面的第八NVMe控制器,若所述数据长度小于第二预设阈值,则所述处理器将所述第一命令携带的数据和第三命令携带的数据合并,以获取所述第一消息,其中,所述第三命令为获取到第一命令之后的预设时长内所述DMA单元获取到的写命令,且所述第三命令的携带的数据的数据长度小于所述第二预设阈值。
根据本申请的第二方面的第七或第八NVMe控制器,提供了根据本申请的第二方面的第九NVMe控制器,所述第一预设阈值大于等于所述第二预设阈值的两倍。
根据本申请的第二方面的第五至第九NVMe控制器之一,提供了根据本申请的第二方面的第十NVMe控制器,第一消息携带标识符,所述标识符用于表征第一消息的消息类型,其中,所述N个第一消息中的第一个第一消息和第N个第一消息的消息类型不同。
根据本申请的第二方面的第五至第十NVMe控制器之一,提供了根据本申请第二方面的第十一NVMe控制器,所述N个第一消息中的每个第一消息的数据长度相等。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中的存储设备的框图;
图2A为现有技术中的写命令的一种数据格式的示意图;
图2B为现有技术中的读命令的一种数据格式的示意图;
图3为本申请实施例提供的一种数据处理方法的流程图;
图4A-图4D为本申请实施例提供的第一消息的数据格式的示意图;
图5为本申请实施例提供的一种NVMe控制器的结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请说明、权利要求书及附图中的术语“第一”、“第二”和“第三”等是用于区分不同对象,而不是用于限定特定顺序。此外,术语“包括”和“具有”以及它们的各种变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,二是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或模块。
本申请中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地或隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请中的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,表示单独存在A、同时存在A和B、或单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了便于理解,下面先介绍现有技术中的命令的格式和处理命令的方法。
图2A给出了现有技术中的NVMe写命令的一种数据格式,图2B给出了现有技术中的NVMe读命令的一种数据格式。
如图2A及2B所示,写命令210和读命令220均采用固定的数据格式,该读命令220和写命令210的数据长度为固定值,例如64字节。写命令210包括预留位211、命令类型212、命名空间213、元数据指针214、数据指针215、起始逻辑地址216和逻辑块数量217。其中,预留位211中没有有效数据。命令类型212用于指示本条命令的类型,包括读(Read)、写(Write)、比较(Compare)、清空(Flush)等。例如,写命令210中的命令类型212的取值为01000000。命名空间213用于指示待写入的命名空间。起始逻辑地址216待写入的SSD的中起始逻辑块,逻辑块数量217则指示有多少个待写入的逻辑块。元数据指针214和数据指针215则用于指示待写入的数据在主机中的位置。
读命令220包括预留位221、命令类型222、命名空间223、元数据指针224、数据指针225、起始逻辑地址226和逻辑块数量227。其中,读命令220中的预留位221、命令类型222与写命令210类似,在此不再赘述。命名空间223则是指示待读取的命名空间,起始逻辑地址226和逻辑块数量227则指示待读取的若干个逻辑块。元数据指针224和数据指针225则指示将数据读取出之后,主机内存放该数据的位置。由此可见,现有技术中的读命令和写命令为了符合NVMe协议,均设置了很多预留位,而命令中真正的有效信息占用的数据量并不大。
存储设备的控制部件内部的数据总线宽度有限(例如128比特),无法在一次总线传输中携带完整的读命令或写命令。为传输例如64字节的读命令或写命令需要占用多次总线传输,这增大了控制部件的命令处理延迟。本申请实施例提供了数据处理方法,用于对命令携带的数据进行拆分或合并处理,以在不影响对命令的处理的前提下提高控制部件内部的命令传输效率,利用更少的总线传输周期传输更多的命令。
参见图3,图3提供了根据本申请实施例的框图。
以主机300发出写命令为例,存储设备的NVMe控制器310从主机300中获取写命令,并将该写命令发送给CPU320。CPU320解析并处理该写命令。例如,CPU 320接收到如图2A中的写命令,解析该写命令之后,CPU 320获知逻辑块数量取值为7,从而为待写入的数据分配8个容量为4K的缓存空间,该缓存空间在将数据写入存储设备330之前,临时存放待写入的数据。CPU320还通过元数据指针和数据指针知晓待写入的数据在主机内的主机地址,从而CPU 320控制NVMe控制器310访问该主机地址,并将待写入的数据搬运至缓存空间。在待写入的数据搬运至缓存空间之后,CPU 320指示介质接口控制器将该数据写入NVM芯片330。处理读命令的方法与处理写命令的方法类似,在此不再赘述。
下面结合附图对本申请的实施例进行描述。
图5给出了一种NVMe控制器的结构示意图。参见图5,NVMe控制器500包括处理器501、DMA单元502和缓存区503。处理器501分别与DMA单元502和缓存区503耦合。NVMe控制器500还耦合到主机60,以同主机之间交换根据NVMe协议的命令。
NVMe控制器500还同处理器550耦合。NVMe控制器500解析NVMe命令,将根据NVMe命令解析出的第一消息提供给处理器500,从而处理器500根据第一消息进一步进行处理,以执行NVMe命令指示的操作。
处理器550还耦合到介质接口控制器,并指示介质接口控制器访问存储设备中的NVM芯片。
可选地,处理器550被集成于介质接口控制器内。
下面以NVMe控制器500执行数据处理方法为例进行描述,但不表示本实施例中的数据处理方法仅能由NVMe控制器500执行,该数据处理方法还可由与NVMe控制器500具有相似结构和/或功能其它电子器件执行,在此不做限定。
图4A为本申请实施例的数据处理方法的流程图,如图4A所示,本实施例中的数据处理方法包括以下步骤:
步骤S401,从主机中获取第一命令,第一命令包括读命令和写命令。
步骤S402,根据第一命令的类型,对第一命令携带的数据进行拆分或合并处理,以获取第一消息。
步骤S403,输出第一消息。
首先,执行步骤S401。
例如,响应于主机60向存储设备提供了一个或多个命令,处理器501控制DMA单元502从主机60中获取第一命令,第一命令为读命令或写命令。DMA单元502将获取到的第一命令存放到缓存区503。
继续执行步骤S402。
处理器501解析第一命令后,就知晓第一命令的类型,并根据该类型,对第一命令携带的数据进行拆分或合并处理,得到该数据合并或拆分之后形成的第一消息。
表1
命令类型 | 写 | 读 |
处理方式 | 拆分 | 合并 |
表1给出了第一命令的类型与处理器501对第一命令携带的数据的处理方式之间的关系。在第一命令为写命令时,对写命令携带的数据进行拆分。在第一命令为读命令时,对读命令携带的数据进行合并。
在一个实施例中,处理器501确定第一命令是读命令,处理器501继续控制DMA单元从主机60中获取第二命令,该第二命令为读命令或写命令。根据第二命令的类型的不同,处理器501包括以下处理方式:
方式1,在第二命令是读命令时,处理器501将第二命令携带的数据和第一命携带的数据合并成第一消息,即第一消息包括两个读命令携带的数据。
方式2,在第二命令是写命令时,处理器501不对第一命令携带的数据进行合并处理,并将第一命令发送给处理器550。
方式3,在第二命令是写命令时,处理器501进行计时,若在预设时长内再次获取到读命令,则将获取到的读命令携带的数据和第一命令携带的数据合并为第一消息。
对于上述方式1,例如,从主机60连续获取到的两个命令恰好都是读命令220,处理器501解析两个读命令220,并从中提取出所需的数据,包括预留位221、起始逻辑地址226、逻辑块数量227和命名空间223,并生成对应于两个读命令的标识符、命令标识和结束标识,并生成第一消息。
参见图4B,图4B给出了第一消息的示意图,其中,第一命令和第二命令为图2B中的读命令,合并后得到第一消息410。第一消息410包括预留位221、起始逻辑地址226(包括226-1和226-2)、逻辑块数量227、命名空间223、标识符411、命令标识412和结束标识413。其中,第一消息410包括预留位221、起始逻辑地址226、逻辑块数量227、命名空间223的作用与在上述读命令220中的相同,可参见上文中的描述,在此不再赘述。对于图4B中的起始逻辑地址包括226-1和226-2是由于,例如,图4B中一行的表示32位,而起始逻辑地址226的长度超过32位,因此将起始逻辑地址226成两部分放置,而对于长度小于32位的起始逻辑地址226则可以放置于一行内。且图4B中的每种数据占据的图形的比例并不表示实际的数据长度比例,起始逻辑地址226的长度根据实际需求进行调整,在此不做限制。
可选地,第一消息的长度同控制部件内部的总线宽度一致,从而在一个总线周期内能完成对一个第一消息的从处理器501到其他处理器的传输。
标识符411表征第一消息的消息类型,根据读/写命令和拆分/合并的不同,消息类型分为至少4种。例如,标识符411的取值为0、1、2和3,取值为0时,表征合并了2条写命令;取值为1时,表征拆分了1条写命令,且本条消息为N个第一消息中的第一个;取值为2时,表征拆分了1条写命令,且本条消息为N个第一消息中的第2个至第N个中的一个;取值为3时,表征合并了2条读命令。
命令标识412用于区分不同的命令,返回命令响应时,正确地将命令响应和命令关联起来。例如,第一消息410内的两个命令标识412的取值不同,表征这是两条不同的命令。结束标识413表征本条第一消息内,在该结束标识413之后没有其他的读命令。
对于上述方式3,例如,DMA单元502在获取到1号读命令之后,下一次获取到1号写命令,则处理器501开始计时或倒计时预设时长,如10us。在计时过程中,若DMA单元502获取到2号读命令,则将1号读命令和2号读命令携带的数据合并,得到第一消息,具体的合并方法和第一消息可参见上述方式1中的描述,在此不再赘述。而在一直等到计时结束,DMA单元502都没有获取到2号读命令,则处理器501停止等待,并将1号读命令发送给处理器550,以防止等待时间过长占用过多的资源。
对于上述方式2,继续沿用前例,DMA单元502在获取到1号读命令之后,如果DMA单元502下一次获取到的是写命令,则处理器501不对1号读命令携带的数据进行拆分或合并处理,并输出1号读命令。
可选地,在处理器501介入之前,DMA单元502将多个命令搬移到缓存503。从而处理器501对多个命令实施拆分或合并,而无须通过计时过程等待进一步的命令。
继续参见表1,在一些实施例中,处理器501确定第一命令为写命令,处理器501对写命令携带的数据采用以下处理方式:
方式a,处理器501将写命令携带的数据拆分成N个第一消息,N为大于等于2的整数。处理器501依次输出N个第一消息,其中,N个第一消息中的每个第一消息具有相同或不同的消息类型。
方式b,处理器501判断写命令携带的数据的数据长度;若数据长度小于或等于第一预设阈值,则不拆分写命令携带的数据;若数据长度大于第一预设阈值,则拆分第一命令携带的数据。
方式c,处理器501在判断数据长度小于第一预设阈值之后,处理器501继续判断该数据长度是否小于第二阈值,若数据长度小于第二预设阈值,则将写命令携带的数据和第三命令携带的数据合并,以获取第一消息,其中,第三命令为获取到写命令之后的预设时长内获取到的写命令,且第三命令携带的数据的数据长度小于所述第二预设阈值。
图4C给出了将写命令拆分为3个第一消息的示意图。以N=3为例,图4C中给出了第一消息420、第一消息430和第一消息440的示意图。其中,第一数据420包括预留位211、命名空间213、起始逻辑地址216(包括216-1和216-2)、标识符421、消息标识422、计数值423和缓存索引424(包括424-1、424-2、424-3和424-4)。第一消息430和第一消息440均包括标识符431、消息标识422和预留位211。第一消息430还包括缓存索引434(包括434-1、434-2、……、434-7),第一消息440还包括缓存索引444(包括444-1、444-2、……、444-7)。其中,预留位211、命名空间213、起始逻辑地址216是从写命令中直接解析出的,其与上文中结合图2A描述的逻辑地址216相同,在此不再赘述。标识符421、标识符431均与上文中的标识符411的含义相同,在此不再重复描述,区别在于,标识符421、标识符411和标识符431的取值不同。例如,标识符421取值为1,标识符431的取值为2。
由于写命令携带的数据可能较多,会拆分出多个第一消息,为了保证接收到第一消息的器件能够区分对应于不同写命令的第一消息,本实施例采用消息标识422来表征该第一消息所属的写命令,即对应于不同写命令的第一消息,其消息标识422取值不同。
本实施例中的缓存索引424、缓存索引434和缓存索引444,用于指示NVMe控制器500获取到写命令之后,为该写命令分配的缓存空间,该缓存空间包括多个缓存块,其分配的缓存块的数量与起始逻辑地址216和逻辑块数量217相关,也就是跟待写入NVM芯片330的数据的长度相关。缓存块的长度为预设的固定值,如4K,若待写入数据为22K,则会分配6个缓存块。本实施例中的缓存索引424指示包括5个缓存块。而计数值423则是指示缓存索引的数量,和第一消息410不同,第一消息420-440均不包括结束标识,从而第一消息420-440是采用计数值423来确定该写命令拆分出来的第一消息是否已经全部获取完。需要说明的是,本实施例中的第一命令携带的数据并不限于第一命令本身包含的数据,还包括缓存索引,而待写入的数据是指存储在主机中、等待写入NVM芯片的数据。
对于上述方式a,例如,处理器501在解析写命令后,请求分配了20个缓存块,由于第一个第一消息仅能携带5个缓存块的索引,第二个第一消息开始的每个第一消息能携带7个缓存块的索引,从而确定需要拆分出4个第一消息。可选地,在分配的缓存块数量小于5时,处理器501根据写命令生成一个第一消息。例如,在缓存块数量小于第一消息420可携带的缓存索引的最大数量时,处理器501仅生成一个第一消息。
而对于上述方式b和方式c,处理器501在解析了写命令之后,还会判断该写命令携带的数据的数据长度,然后再确定需要对写命令携带的数据进行何种处理。可选地,本实施例中第一预设阈值大于或等于第二预设阈值的两倍。例如,控制部件的总线位宽限制了在一次总线传输中最多传输16字节数据,从而为提高各部件之间的消息传递效率,处理器501与处理器505之间交换的每个消息的大小为16字节。据此设置第一预设阈值为16字节,第二预设阈值为8字节。比如,写命令携带的数据的数据长度为12字节,处理器501不拆分该写命令携带的数据。又如,数据长度为20字节,则处理器501拆分该写命令携带的数据,具体的拆分方法可参见上述方式a,在此不再赘述。再如,数据长度为4字节,处理器501判断数据长度的4字节小于第一阈值的16字节,然后进一步判断数据长度的4字节小于第二阈值的8字节。处理器501将该写命令携带的数据,和第三命令携带的数据合并,以构造第一消息。也就是,在两个写命令携带的数据的数据长度均小于第二预设阈值时,处理器501会将这两个写命令携带的数据合并,得到第一消息。具体的合并方法可参见上文中的方式1至方式3,在此不进行描述。上述方式b和方式c还可用于读命令,在此不进行展开。
图4D为本实施例中的由写命令携带的数据合并得到的第一消息的示意图。在图4D中,第一消息450包括预留位211、命名空间213(包括213-1和213-2)、其实逻辑地址216(包括216-10、216-11、216-20和216-21)、逻辑块数量217(包括217-1和217-2)、标识符451、命令数量452(包括452-1和452-2)和缓存索引454(包括454-1和454-2)。其中,命令数量452指示第一消息450携带了多少条写命令的数据(本实施例中,为1条写命令)。标识符451指示第一消息的消息类型。预留位211、命名空间213(包括213-1和213-2)、其实逻辑地址216(包括216-10、216-11、216-20和216-21)、逻辑块数量217(包括217-1和217-2)均为从写命令中获取的信息,其中附图标记的后缀“-1”、“-2”、“-11”、“-10”、“-20”和“-21”用于区分不同的写命令。
在一些实施例中,第一消息携带标识符,该标识符用于表征第一消息的消息类型,其中,所述N个第一消息中的第一个第一消息和第N个第一消息的消息类型不同。
可选地,本申请中的第一消息的长度为固定值,例如4个双字。具体的,不论是由两个读命令携带的数据合并得来的第一消息,还是写命令拆分出的N个第一消息中的任意一个第一消息,都具有相同的长度,该长度符合控制部件内部的总线位宽,例如,总线位宽为128比特(一次总线传输能携带128比特数据),则第一消息的长度为128比特。第一消息的长度可根据总线的位宽设置,在此不做限定。
在执行完步骤S402之后,执行步骤S403。
处理器501输出第一消息。例如,本实施例中将第一消息将发送给处理器550。
可选地,在拆分出N个第一消息时,DMA单元502依次数据N个第一消息。
例如,N=5,DMA单元502将5个第一消息中的任意两个相邻的第一消息,连续地输出,其中任意两个相邻的第一消息之间不存在时间间隔。又如,DMA单元502将5个第一消息中的任意两个相邻的第一消息,间隔预定时长地输出,即任意两个相邻的第一消息之间有固定的时间间隔。再如,DMA单元502将5个第一消息的第一个第一消息输以后的T1时间之后,输出第二个第一消息,第二个第一消息到第5个第一消息中的任意两个相邻的第一消息的输出的时间间隔为T2,T2小于T1,T1和T2均大于零。也就是,第一个第一消息发送之后停留较长的T1时间再继续发送第二个第一消息,而第二个第一消息发送结束到第三个第一消息开始发送具有较短的T2时间间隔。从而给接收第一消息的器件留出更多的实际来解析第一个第一消息,而对于携带信息相对较少的第二至第N个第一消息,则只需要预留较短的T2。
继续参见图5,本实施例中的NVMe控制器500,包括处理器501、DMA单元502和缓存区503,本实施例中,NVMe控制500能够执行如上述实施例中的数据处理方法,具体的执行方式参见上述方法实施例中的描述,在此不再赘述。
其中,DMA单元502从主机60中获取第一命令,并将第一命令存放至缓存区,第一命令包括读命令和写命令,主机与NVMe控制器耦合;处理器根据第一命令的类型,对第一命令携带的数据进行拆分或合并处理,以获取第一消息,并输出第一消息。
在一个实施例中,在第一命令为读命令时,处理器501将第一命令保存至例如缓存;处理器501控制DMA单元502从主机60中获取第二命令,第二命令包括读命令和写命令;若第二命令为读命令,处理器501将第一命令携带的数据和第二命令携带的数据合并,以获取第一消息;处理器501输出第一消息,第一消息包括包括两个读命令携带的数据。
在一些实施例中,若第二命令为写命令,在获取到第二命令之后的预设时长内DMA单元502获取到读命令,则处理器501将获取到的读命令携带的数据与第一命令携带的数据合并,以获取第一消息。
在又一些实施例中,若第二命令为写命令,处理器501不对第一命令携带的数据进行拆分或合并处理,并输出第一命令。
在一些实施例中,处理器501根据第一命令的类型,对第一命令携带的数据进行拆分或合并处理,以获取第一消息,还包括:在第一命令为写命令时,处理器501将第一命令携带的数据拆分成N个第一消息,N大于等于2;处理器501依次输出N个第一消息,N个第一消息中的每个第一消息具有相同或不同的消息类型。
一个实施例中,DMA单元502依次向发送N个第一消息,包括:DMA单元502将N个第一消息中的任意两个相邻的第一消息,连续地输出;或者,DMA单元502将N个第一消息中的任意两个相邻的第一消息,间隔预定时长地输出;或者,DMA单元502将N个第一消息的第一个第一消息输以后的T1时间之后,输出第二个第一消息,第二个第一消息到第N个第一消息中的任意两个相邻的第一消息的输出的时间间隔为T2,T2小于T1,T1和T2均大于零。
可选地,处理器501将第一命令携带的数据拆分成N个第一消息之前,处理器501判断第一命令携带的数据的数据长度;若数据长度小于或等于第一预设阈值,则处理器501不拆分第一命令携带的数据;若数据长度大于第一预设阈值,则处理器501拆分第一命令携带的数据。
可选地,若数据长度小于第二预设阈值,则处理器501将第一命令携带的数据和第三命令携带的数据合并,以获取第一消息,其中,第三命令为获取到第一命令之后的预设时长内DMA单元502获取到的写命令,且第三命令的携带的数据的数据长度小于第二预设阈值。
在又一些实施例中,第一预设阈值大于等于第二预设阈值的两倍。
在部分实施例中,第一消息携带标识符,标识符用于表征第一消息的消息类型,其中,N个第一消息中的第一个第一消息和第N个第一消息的消息类型不同。
在全部实施例中,N个第一消息中的每个第一消息的数据长度相等。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取第一命令,所述第一命令包括读命令和写命令;
根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息;
输出所述第一消息。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,包括:
在所述第一命令为读命令时,保存所述第一命令;
获取第二命令,所述第二命令包括读命令和写命令;
若所述第二命令为读命令,则将所述第一命令携带的数据和所述第二命令携带的数据合并,以获取所述第一消息;
其中,所述第一消息包括两个读命令携带的数据。
3.如权利要求2所述的方法,其特征在于,
若所述第二命令为写命令,在获取到所述第二命令之后的预设时长内获取到读命令,则将所述获取到的读命令携带的数据与所述第一命令携带的数据合并,以获取所述第一消息。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息还包括:
在所述第一命令为写命令时,将所述第一命令携带的数据拆分成N个第一消息,所述N为大于等于2的整数;
所述输出第一消息,包括:
依次输出所述N个第一消息,所述N个第一消息中的每个第一消息具有相同或不同的消息类型。
5.如权利要求4所述的方法,其特征在于,所述第一命令携带的数据拆分成N个第一消息之前,所述方法还包括:
判断所述第一命令携带的数据的数据长度;
若所述数据长度小于或等于第一预设阈值,则不拆分所述第一命令携带的数据;
若所述数据长度大于所述第一预设阈值,则拆分所述第一命令携带的数据。
6.如权利要求5所述的方法,其特征在于,若所述数据长度小于第二预设阈值,则将所述第一命令携带的数据和第三命令携带的数据合并,以获取所述第一消息,其中,所述第三命令为获取到第一命令之后的预设时长内获取到的写命令,且所述第三命令的携带的数据的数据长度小于所述第二预设阈值。
7.如权利要求4-6中任一项所述的方法,其特征在于,第一消息携带标识符,所述标识符用于表征第一消息的消息类型,其中,所述N个第一消息中的第一个第一消息和第N个第一消息的消息类型不同。
8.一种NVMe控制器,其特征在于,包括处理器、DMA单元和缓存区,其中,
所述DMA单元获取第一命令,并将所述第一命令存放至所述缓存区,所述第一命令包括读命令和写命令;
所述处理器根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,并输出所述第一消息。
9.如权利要求8所述的NVMe控制器,其特征在于,
在所述第一命令为读命令时,所述处理器将所述第一命令保存至所述缓存区;
所述DMA单元获取第二命令,所述第二命令包括读命令和写命令;
若所述第二命令为读命令,所述处理器将所述第一命令携带的数据和所述第二命令携带的数据合并,以获取所述第一消息;
所述处理器输出所述第一消息,所述第一消息包括包括两个读命令携带的数据。
10.如权利要求8或9所述的NVMe控制器,其特征在于,所述处理器根据所述第一命令的类型,对所述第一命令携带的数据进行拆分或合并处理,以获取第一消息,还包括:
在所述第一命令为写命令时,所述处理器将所述第一命令携带的数据拆分成N个第一消息,所述N为大于等于2的整数;
所述处理器依次输出所述N个第一消息,所述N个第一消息中的每个第一消息具有相同或不同的消息类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911142444.8A CN112825024A (zh) | 2019-11-20 | 2019-11-20 | 命令融合、拆分方法与NVMe控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911142444.8A CN112825024A (zh) | 2019-11-20 | 2019-11-20 | 命令融合、拆分方法与NVMe控制器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112825024A true CN112825024A (zh) | 2021-05-21 |
Family
ID=75907072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911142444.8A Pending CN112825024A (zh) | 2019-11-20 | 2019-11-20 | 命令融合、拆分方法与NVMe控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112825024A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220317918A1 (en) * | 2021-03-31 | 2022-10-06 | Micron Technology, Inc. | Reduction of Write Amplification in Sensor Data Recorders |
-
2019
- 2019-11-20 CN CN201911142444.8A patent/CN112825024A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220317918A1 (en) * | 2021-03-31 | 2022-10-06 | Micron Technology, Inc. | Reduction of Write Amplification in Sensor Data Recorders |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11151027B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
US20190018618A1 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
KR101988260B1 (ko) | 임베디드 멀티미디어 카드, 및 이의 동작 방법 | |
US8898375B2 (en) | Memory controlling method, memory controller and memory storage apparatus | |
KR102517685B1 (ko) | 메모리 블록 복구 방법 및 디바이스 | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
US20150100745A1 (en) | Method and apparatus for efficiently processing storage commands | |
TW201502977A (zh) | 指令執行方法、連接器與記憶體儲存裝置 | |
CN112765055A (zh) | 存储设备的控制部件 | |
CN112764669A (zh) | 用于存储控制器的加速器 | |
US20140223076A1 (en) | Controlling method, connector, and memory storage device | |
CN112825024A (zh) | 命令融合、拆分方法与NVMe控制器 | |
CN115079936A (zh) | 一种数据写入方法及装置 | |
CN103092725B (zh) | 一种实现存储器中数据备份的方法及装置 | |
TWI564809B (zh) | 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置 | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
TWI747660B (zh) | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 | |
CN114610654A (zh) | 一种固态存储设备以及向其写入数据的方法 | |
CN113031849A (zh) | 直接内存存取单元及控制部件 | |
US10838621B2 (en) | Method and flash memory controller capable of avoiding inefficient memory block swap or inefficient garbage collection | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
TWI636363B (zh) | 用來於一記憶裝置中進行動態資源管理之方法以及記憶裝置及其控制器 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TWI822516B (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 |