一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

将查找操作卸载到NAND卸载设备的方法和系统与流程

2021-04-30 12:58:00 来源:中国专利 TAG:存储器 申请 卸载 引用 公开
将查找操作卸载到NAND卸载设备的方法和系统与流程

相关申请的交叉引用

本申请基于并要求于2019年10月14日提交的印度申请201941041568的优先权,其公开内容整体以引用方式并入本文中。

本公开涉及存储器系统,更具体地,涉及一种用于将查找操作卸载到nand卸载设备的方法和存储器系统。



背景技术:

通常,支持基于<键,值>的访问的企业固态驱动器(ssd)(可称为键值(kv)ssd)基于键执行多级查找以寻找nand存储器中存储有与键对应的值的位置。在示例中,键和值可以是数据库中使用的术语。键可以是员工编号,值可以是员工姓名、地址等。<键>可用于在nand存储器中执行查找。各级查找可涉及与nand的传送并在ssd控制器内处理以搜索键,然后在nand存储器中执行下一级查找。由于ssd也可能正在并行进行其它操作,如,垃圾收集(gc)或与其它nand晶片的输入/输出(io),所以在各级查找之间可能引入延迟。

图1a示出说明kv读操作的示例场景。如图1a所示,可基于散列来说明<键,值>查找方法。在操作s102,kvssd可基于键从处理器(100)接收读请求,并计算键的散列。在操作s104,kvsdd可基于散列值在ram中的第一级表中执行查找。在实施例中,第一级可指例如第一级查找或1级查找。在操作s106,基于在第一级表查找中找到的nand地址,kvssd可执行页(可以是例如第二级条目)的nand读操作以及对页内的键的二分搜索。在实施例中,第二级可指例如第二级查找或2级查找。在操作s108,kvssd可在操作s106处标识的页地址和偏移处执行nand读操作并传送<值>。根据ssd中的负荷,在操作s106处的第二级条目的处理可能延时,并导致整体<键,值>读取中的延迟。

图1b是nand装置(200)的示意图。nand装置(200)可包括控制器(202)、电压选择器(204)、nand存储器阵列(206)、锁存器(208)、列解码器(210)、nand总线(212)和行解码器(214)。控制器(202)可包括读电路(202a)、编程电路(204a)和擦除电路(206a)。行解码器(214)和列解码器(210)可用于基于施加到nand装置(200)的地址选择nand存储器阵列(206)的单行和至少一列。

电压选择器(204)可连接到与nand存储器阵列(206)的列对应的列线,以在寻址的列线上供应与存储在nand装置(200)中的数据值对应的电压电平。nand装置(200)可能能够执行写操作,由此可使用编程电路(204a)和擦除电路(206a)在nand装置(200)中的写操作期间将数据写到(例如,编程到或从其擦除)由施加到行解码器和列解码器(214和210)的写地址选择的存储器单元。通过使用读电路(206a),可在nand装置(210)中的读操作期间使用读操作来检索先前写到由施加到行解码器和列解码器(214和210)的读地址选择的nand存储器阵列(206)的数据。锁存器(208)可在读操作时从选择的行的nand存储器阵列(206)感测数据,并在编程操作时经由列解码器(210)锁存nand总线(212)上的n比特数据。

因此,期望解决上述缺点或其它不足或至少提供有用的替代。



技术实现要素:

提供一种用于将查找操作卸载到nand卸载设备的方法和存储器系统。

还提供一种由nand卸载设备从键值固态驱动器(kvssd)nand接口接收nand读命令的方法。

还提供置于kvssdnand接口和nand装置之间的nand总线上的nand卸载设备。

还提供一种由nand卸载设备确定nand读命令是否包括指示间接读操作的信息元素的方法。

还提供一种如果nand读命令包括该信息元素,则由nand卸载设备执行间接读操作的方法。

还提供一种方法:如果nand读命令不包括该信息元素,则由nand卸载设备通过nand总线将nand读命令传递给nand装置,并且由nand卸载设备配置开关以在输出门处将来自nand装置的响应传递给kvssdnand接口。

根据实施例,一种用于将查找操作卸载到nand卸载设备的方法包括:由nand卸载设备从键值固态驱动器(kvssd)nand接口接收nand读命令,其中,nand卸载设备使用nand总线连接在kvssdnand接口与nand装置之间;由nand卸载设备确定nand读命令是否包括指示间接读操作的信息元素;基于确定nand读命令包括该信息元素,由nand卸载设备执行间接读操作;以及基于确定nand读命令不包括该信息元素:由nand卸载设备通过nand总线将nand读命令传递给nand装置,并且由nand卸载设备配置开关以在输出门处将来自nand装置的响应消息传递给kvssdnand接口。

根据实施例,一种使用nand总线被连接在键值固态驱动器(kvssd)nand接口和nand装置之间的nand卸载设备包括:nand卸载控制器;键大小寄存器,其连接到nand卸载控制器,并且被配置为存储要用于查找的键的大小;低密度奇偶校验(ldpc)引擎,其连接到nand卸载控制器,并且被配置为从至少一个nand装置拉取数据;以及缓冲ram,其被配置为存储由ldpc引擎拉取的数据,其中,nand卸载控制器被配置为将从kvssdnand接口接收的输入/输出(io)命令传递给nand装置,并将从nand装置接收的响应消息复制到kvssdnand接口。

根据实施例,一种用于将查找操作卸载到nand卸载设备的存储器系统包括:键值固态驱动器(kvssd)nand接口;nand装置;nand总线,其被置于kvssdnand接口和nand装置之间;以及nand卸载设备,其被置于nand总线上,其中,nand卸载设备包括nand卸载控制器,该nand卸载控制器被配置为将来自kvssdnand接口的输入/输出(io)命令传递给nand装置,并将从nand装置接收的至少一个响应消息复制到kvssdnand接口。

附图说明

附图中示出了实施例,贯穿附图,相似的标号指示各种图中的对应部件。从以下参照附图的详细描述,将更好地理解实施例,在附图中:

图1a是说明kv读操作的示例场景;

图1b是nand装置的示例的示意图;

图2是根据实施例的用于将查找操作卸载到nand卸载设备的存储器系统的示意图;

图3是示出根据实施例的nand卸载控制器处理间接读操作的方法的示例流程图;

图4是示出根据实施例的为nand卸载控制器处理间接读操作的方法的示例流程图;

图5是示出根据实施例的nand装置上的kv读操作的时序图;

图6表示根据实施例的第一级表;

图7是示出根据实施例的在第一级表中执行查找操作并确定发出间接读取还是正常读取的各种操作的流程图;

图8是示出根据实施例的在写操作期间的<键,值>插入操作的方法的流程图。

具体实施方式

参考在附图中示出并在以下描述中详述的非限制性实施例,更充分地说明本文中的实施例及其各种特征和有利细节。省略对公知的组件和处理技术的描述,以免不必要地模糊本文中的实施例。另外,本文所描述的各种实施例未必是互斥的,因为一些实施例可与一个或更多个其它实施例组合以形成新的实施例。除非另外指示,否则如本文所使用的术语“或”是指非排他性的或。本文所使用的示例仅旨在方便理解可实践本文中的实施例的方式,并且还旨在使得本领域技术人员能够实践本文中的实施例。因此,示例不应被解释为限制实施例的范围。

本领域中传统上,可从执行所描述的功能或多个功能的块方面描述和示出实施例。这些块(本文中可称为单元或模块等)由诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟或数字电路物理地实现,并且可选地,可由固件和软件驱动。例如,电路可具体实现在一个或更多个半导体芯片中或具体实现在诸如印刷电路板等的基板支撑件上。构成块的电路可由专用硬件实现,或由处理器(例如,一个或更多个编程的微处理器和关联的电路)实现,或由执行块的一些功能的专用硬件和执行块的其它功能的处理器的组合实现。在不脱离本发明的范围的情况下,实施例的各个块可物理上分离成两个或更多个交互且分立的块。同样,在不脱离本发明的范围的情况下,实施例的块可物理上组合成更复杂的块。

使用附图来帮助容易地理解各种技术特征,应该理解,本文所呈现的实施例不受附图限制。因此,除了附图中具体地阐述的那些之外,本公开应该被解释为扩展至任何更改、等同和替代。尽管本文中可使用术语第一、第二等来描述各种元件,但这些元件不应受这些术语限制。这些术语通常仅用于将一个元件与另一元件相区分。

因此,本文中的实施例公开了一种用于将查找操作卸载到nand卸载设备的方法。该方法可包括由nand卸载设备从kvssdnand接口接收nand读命令。nand卸载设备可被置于kvssdnand接口和nand装置之间的nand总线上。此外,该方法包括由nand卸载设备确定nand读命令是否包括指示间接读操作的信息元素。此外,该方法可包括响应于确定nand读命令包括该信息元素,由nand卸载设备执行间接读操作。此外,该方法可包括响应于确定nand读命令不包括该信息元素,由nand卸载设备通过nand总线将nand读命令传递给nand装置,并且由nand卸载设备配置开关以在输出门处将来自nand装置的响应传递给kvssdnand接口。

实施例可用于改进在主机或ssd中的kv实现中的<键,值>查找的延迟。实施例可扩展至实现多层次查找。实施例可用于在没有任何开销的情况下将查找操作卸载到nand卸载设备。实施例可用于通过将查找操作透明地卸载到nand总线上的nand卸载设备来优化查找操作,并改进<键,值>查找延迟。在示例中,键和值可以是数据库中使用的术语。键可以是员工编号,值可以是员工姓名、地址等。键可用于在nand装置中执行查找。

图2是根据实施例的用于将查找操作卸载到nand卸载设备(400)的存储器系统(1000)的示意图。在实施例中,存储器系统(1000)包括nand装置(200)、kvssdnand接口(300)和nand卸载设备(400)。nand装置(200)的操作和功能可与上面关于图1b描述的那些相似。

在实施例中,存储器系统(1000)包括置于kvssdnand接口(300)和nand装置(200)之间的nand总线。nand卸载设备(400)被置于nand总线上。nand卸载设备(400)包括nand卸载控制器(402)、缓冲ram(404)、低密度奇偶校验(ldpc)引擎(406)和键大小寄存器(408)。nand卸载控制器(402)将来自kvssdnand接口(300)的输入/输出(io)命令传递给nand装置(200),并将从nand装置(200)接收的至少一个响应复制回kvssdnand接口(300)。

键大小寄存器(408)连接到nand卸载控制器(402)。键大小寄存器(408)存储在查找期间要使用的键的大小。ldpc引擎(406)连接到nand卸载控制器(402),其中ldpc引擎(406)从nand装置(200)拉取数据。缓冲ram(404)存储由ldpc引擎(406)拉取的数据。nand卸载控制器(402)将从kvssdnand接口(300)接收的输入/输出(io)命令传递给nand装置(200),并将从nand装置(200)接收的响应复制回kvssdnand接口(300)。

在实施例中,nand卸载控制器(402)被配置为从kvssdnand接口(300)接收nand读命令。在从kvssdnand接口(300)接收nand读命令之后,nand卸载控制器(402)被配置为确定nand读命令是否包括指示间接读操作的信息元素。在实施例中,信息元素是配置在ram中的第一级表中以指示信息元素的位置是否处于存储第二级条目的nand装置(200)处的一比特信息。在实施例中,第一级可指例如第一级查找或1级查找,第二级可指例如第二级查找或2级查找。

在实施例中,nand卸载控制器(402)被配置为根据与nand读命令关联的键计算散列值,并在缓冲ram(404)中的第一级表中执行对与散列值对应的第二级nand页地址的查找。基于在缓冲ram(404)中的第一级表中对与散列值对应的第二级nand页地址的查找,nand卸载控制器(402)被配置为基于nand页地址来确定nand读命令是否包括信息元素。

在实施例中,如果nand读命令包括信息元素,则nand卸载控制器(402)被配置为执行间接读操作。

在实施例中,如果nand读命令不包括信息元素,则nand卸载控制器(402)被配置为通过nand总线将nand读命令传递给nand装置(200),并配置开关以通过输出门将来自nand装置(200)的响应传递给kvssdnand接口(300)。

在实施例中,通过使用闪存转换层(ftl)模块(302)读取持有与nand读命令关联的键的映射信息的nand页、使用ftl模块(302)读取持有与键对应的值的nand页、并基于与键对应的值通过nand总线将nand读命令传递给nand装置(200),来通过nans总线将nand读命令传递给nand装置(200)。

在实施例中,nand卸载控制器(402)被配置为从kvssdnand接口(300)接收nand读命令。此外,nand卸载控制器(402)被配置为确定nand读命令是间接读命令。基于该确定,nand卸载控制器(402)被配置为将nand读命令修改为正常nand读命令并将正常读命令发送到nand装置(200)。基于正常读命令,nand卸载控制器(402)被配置为基于正常读命令从nand装置(200)接收响应消息。此外,nand卸载控制器(402)被配置为将响应消息存储在缓冲ram(404)中。此外,nand卸载控制器(402)被配置为在存储在缓冲ram(404)中的nand页内搜索用于下一级映射的键。此外,nand卸载控制器(402)被配置为在由下一级映射标识的位置处将nand读命令发送到nand装置(200)。此外,nand卸载控制器(402)被配置为将响应消息从nand装置(200)转发给kvssdnand接口(300)。

在实施例中,nand卸载控制器被配置为将键和值编程到开放块中的ftl模块(302)附加点。此外,nand卸载控制器被配置为根据键计算散列值并确定第二级表的页地址。此外,nand卸载控制器被配置为将第二级表的条目更新到持有第二级表的条目的nand块的附加点。此外,nand卸载控制器被配置为确定编程有键和值的nand晶片是否与编程有第二级表的nand晶片相同。此外,nand卸载控制器被配置为确定要设定的比特是否在同一nand晶片中。如果要设定的比特在同一nand晶片中,则nand卸载控制器被配置为针对与键对应的散列值设定第一级条目。此外,如果第二级条目和<键,值>映射二者均在同一nand晶片中,则当设定第一级表中的比特indread时,nand卸载控制器被配置为针对散列值在第一级条目中更新第二级条目的页地址。可更新第一级表以指向第二级条目。

根据实施例,可由卸载控制器如下所述处理间接读命令。

在实施例中,nand卸载控制器(402)位于kvssdnand接口(300)和nand装置(200)之间的nand总线上。可使给定的nand通道上的所有nand装置(可以是例如nand晶片)与单个nand卸载控制器连接。为了简化说明,将描述一个nand装置(200)由一个nand卸载控制器管理。对nand装置的所有nandio操作均经过nand卸载控制器(402),nand卸载控制器(402)将命令传递给nand装置(200),并将来自nand装置(200)的响应复制回kvssdnand接口(300)。

尽管图2示出存储器系统(1000)的各种硬件组件,但是将理解,其它实施例不限于此。在其它实施例中,存储器系统(1000)可包括数量更少或更多的组件。此外,组件的标签或名称仅用于例示性目的,并不限制本发明范围。一个或多个组件可被组合在一起以执行相同或基本上相似的功能以将查找操作卸载到nand卸载设备(400)。

图3是示出根据实施例的卸载控制器处理间接读取的方法(s300)的示例流程图。操作(s302-s308)由nand卸载设备(400)执行。在操作s302,该方法包括从kvssdnand接口(300)接收nand读命令。在操作s304,该方法包括确定nand读命令是否包括指示间接读操作的信息元素。如果nand读命令包括指示间接读操作的信息元素,则在操作s306,该方法包括执行间接读操作。如果nand读命令不包括指示间接读操作的信息元素,则在操作s308,该方法包括通过nand总线将nand读命令传递给nand装置(200)并配置开关以在输出门处将来自nand装置(200)的响应传递给kvssdnand接口(300)。

图4是示出根据实施例的nand卸载控制器(402)处理间接读操作的方法(s400)的示例流程图。步骤和操作可与图2中描述的那些类似。在实施例中,如果ldpc解码失败或者在键锁存器中的二分搜索期间未找到键,则nand卸载控制器(402)可使感测操作失败。

在操作s402,该方法包括确定到来的命令是不是间接读命令。如果到来的命令不是间接读命令,则在操作s404,该方法包括将dq总线数据从kvssdnand接口(300)传递给nand装置(200)。在操作s406,该方法包括配置开关以将来自nand装置(200)的nand响应传递给kvssdnand接口(300)。

如果到来的命令是间接读命令,则在操作s408,该方法包括针对第二级条目执行nand读取。在操作s410,该方法包括通过ldpc引擎(406)将nand装置响应拉取到缓冲ram(404)。在操作s412,该方法包括确定ldpc解码是否成功。如果ldpc解码没有成功,则在操作s418,该方法包括使感测操作失败。如果ldpc解码成功,则在操作s414,该方法包括读取键大小。在操作s416,该方法包括确定是否通过使用二分搜索找到键。如果通过使用二分搜索未找到键,则在操作s418,该方法包括使感测操作失败。

如果通过使用二分搜索找到键,则在操作s420,该方法包括针对值发出nand读取。在操作s422,该方法包括配置开关以将来自nand装置(200)的nand响应传递给kvssdnand接口(300)。在操作s424,该方法包括将值从nand装置(200)传送至kvssdnand接口(300)。

图5是指示根据实施例的nand装置(200)上的kv读操作的时序图。图5中示出kvssdnand接口(300)所看到的事务。在发出间接读操作命令之后,kvssdnand接口发现nand装置(200)(可以是例如nand晶片)忙。在此期间,nand卸载控制器(402)可执行中间级查找。当启用就绪时,用信号通知值在nand锁存器中可用并且可被拉取出。此外,dq<7:0>:表示数据总线,其用于将nand命令 地址从处理器(100)传送到nand装置(200),并将数据传送到处理器(100)和nand装置(200)或从处理器(100)和nand装置(200)传送数据。此外,r/b:是从nand装置(200)到处理器(100)的信号,指示nand装置(200)当前是否繁忙。当nand装置(200)繁忙时,处理器(100)不应发送新命令。

所示的命令阶段不是单独的信号。dq总线上的传输分为多个阶段。命令阶段示出传输的状态。首先,处理器(100)将命令和地址信息发送到nand装置(200)。地址信息由nand存储单元的行号和列号组成。命令和地址通过dq总线传递。一旦nand装置(200)接收到命令,则nand装置(200)向处理器(100)指示忙信号。当忙信号关闭时,处理器(100)可以取出数据,显示为<dout>。

图7是示出根据实施例的在第一级表中执行查找操作并确定发出间接读取还是正常读取的方法(s700)的流程图。操作(s702-710)可由在kvssdnand接口(300)中运行的闪存转换层(ftl)模块(302)执行。

方法s700可用于在第一级表中引入指示值的位置是否处于存储有第二级条目的同一nand晶片处的一比特(indread)。如图7所示,该比特的存在指示是否可执行间接读操作。

在操作s702,该方法包括计算散列。在704,该方法包括针对与散列对应的条目在ram中提供第一级表。在操作s706,该方法包括确定indread是否为1。如果indread为1,则在操作s712,该方法包括执行对持有与键对应的值的nand页的间接读取。如果indread不等于1,则在操作s708,该方法包括读取持有键的映射信息的nand页。在操作s710,该方法包括读取持有与键对应的值的nand页。

图8是示出根据实施例的在写操作期间执行<键,值>插入操作的方法(s800)的流程图。在实施例中,indread比特可被包括在1级表中,如例如图6所示。如果2级条目和值在同一晶片中,则可设定该比特。这可在<键,值>的插入操作期间标识。图8示出参照图8的插入过程。为了受益于间接读操作,ftl模块(302)可维持开放块以用于将值和对应的2级条目(可对应于例如元数据)尽可能存储在同一nand晶片中。

在操作s802,该方法包括将<键,值>编程到开放块中的ftl模块(302)附加点。在此操作期间,可注意所使用的nand晶片(例如,晶片d1)。在操作s804,该方法包括根据来自给定散列的第一级条目的键计算散列(h)并寻找第二级页地址。在操作s806,该方法包括将第二级条目更新到持有第二级条目的nand块的附加点。在此操作期间,可注意所使用的nand晶片(例如,晶片d2)。在操作s808,该方法包括确定是否d1==d2。如果d1==d2,则在操作s810,该方法包括针对散列(h)在第一级条目中设定indread。在操作812,该方法包括针对散列(h)在第一级条目中更新第二级条目的页地址。

上面所讨论的各种动作、行为、块、步骤等(例如,方法(s300、s400、s700和s800))可按所呈现的顺序执行、按不同的顺序执行或同时执行。此外,在一些实施例中,在不脱离本发明范围的情况下,一些动作、行为、块、步骤等可被省略、添加、修改、跳过等。

本文所公开的实施例可使用在至少一个硬件装置上运行并执行网络管理功能以控制元件的至少一个软件程序来实现。

特定实施例的上述描述将如此充分地揭示本文中的实施例的一般性质,其他人可在不脱离一般构思的情况下通过应用当前知识容易地针对各种应用修改和/或调整这些特定实施例,因此,这些调整和修改应该并且旨在理解为在所公开的实施例的含义和等同范围内。将理解,本文所采用的措词或术语是为了描述而非限制。因此,尽管从优选实施例方面描述了本文中的实施例,但本领域技术人员将认识到,可在如本文所描述的实施例的精神和范围内以修改来实践本文中的实施例。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜