用于使用现场可编程门阵列来实施编码器、解码器和/或缓冲器的存储系统和方法与流程

文档序号:30498222发布日期:2022-06-22 10:55阅读:315来源:国知局
用于使用现场可编程门阵列来实施编码器、解码器和/或缓冲器的存储系统和方法与流程
用于使用现场可编程门阵列来实施编码器、解码器和/或缓冲器的存储系统和方法


背景技术:

1.存储系统可配置有用于对将要存储在存储系统的存储器中的数据的错误校正码位进行编码的编码器,以及用于对从存储器读取的数据的错误校正码位进行解码的解码器。一些存储系统实施控制器存储器缓冲器或主机存储器缓冲器。
附图说明
2.图1a为实施例的非易失性存储系统的框图。
3.图1b为示出实施例的存储模块的框图。
4.图1c为示出实施例的阶层式存储系统的框图。
5.图2为示出根据实施例的图1a中所示出的非易失性存储系统的控制器的组件的框图。
6.图3为示出根据实施例的图1a中所示出的非易失性存储系统的组件的框图。
7.图4为片上系统(soc)嵌入式现场可编程门阵列(efpga)系统的实例的框图。
8.图5为efpga的示例使用情况的框图。
9.图6a至6d为由efpga实施的实施例的自适应存储错误校正码(ecc)解码器硬件设计的框图。
10.图7为用于针对不同存储寿命状态而调适存储ecc解码器的实施例的方法的流程图。
11.图8为实施例的存储系统的框图。
12.图9为具有错误校正码(ecc)编码器和解码器内核的固定分区的实施例的存储系统的框图。
13.图10a为现有技术ecc内核的框图。
14.图10b和10c为实施例的ecc内核的框图。
15.图11为用于自适应编码和解码信道的实施例的方法的流程图。
16.图12为实施例的确定性和非确定性窗口的图。
17.图13为实施例的存储系统的框图。
18.图14为用于提供用于存储控制器的动态主机存储器缓冲器(hmb)-控制器存储器缓冲器(cmb)支持的实施例的方法的流程图。
19.图15为实施例的存储系统的框图。
具体实施方式
20.通过介绍,以下实施例涉及一种用于使用现场可编程门阵列来实施编码器、解码器和/或缓冲器的存储系统和方法。在一个实施例中,存储系统具备现场可编程门阵列和存储器,所述存储器存储用于所述现场可编程门阵列的指令代码集合。所述指令代码集合可用于不同的错误解码器实施方案,用于提供额外编码器和/或解码器,和/或用于实施主机
存储器缓冲器或控制器存储器缓冲器。其它实施例是可能的,且实施例中的每一者可单独使用或一起组合使用。因此,现将参考附图描述各种实施例。
21.现在转向图式,适用于实施这些实施例的方面的存储系统展示在图1a至1c中。图1a为示出根据本文中所描述的主题的实施例的非易失性存储系统100(有时在本文中被称为存储装置或仅装置)的框图。参考图1a,非易失性存储系统100包含控制器102和非易失性存储器,所述非易失性存储器可由一个或多个非易失性存储器裸片104组成。如本文中所使用,术语“裸片”是指形成在单个半导体衬底上的非易失性存储器单元的合集,和用于管理那些非易失性存储器单元的物理操作的相关联电路系统。控制器102与主机系统介接,且将用于读取、编程和擦除操作的命令序列传输到非易失性存储器裸片104。
22.控制器102(其可为非易失性存储器控制器(例如快闪、电阻式随机存取存储器(reram)、相变存储器(pcm)或磁阻随机存取存储器(mram)控制器))可呈以下形式:处理电路系统、微处理器或处理器以及存储计算机可读程序代码(例如,固件)的计算机可读介质,所述计算机可读程序代码可由例如(微)处理器、逻辑门、开关、专用集成电路(asic)、可编程逻辑控制器和嵌入式微控制器执行。控制器102可配置有硬件和/或固件以执行下文所描述和流程图中所展示的各种功能。并且,展示为在控制器内部的一些组件也可存储在控制器外部,且可使用其它组件。另外,短语“操作性地与
……
进行通信”可意指直接进行通信,或通过本文中可或可未展示或描述的一个或多个组件间接(有线或无线)进行通信。
23.如本文中所使用,非易失性存储器控制器是管理存储在非易失性存储器上的数据且与例如计算机或电子装置等主机进行通信的装置。非易失性存储器控制器除本文中所描述的特定功能性外还可具有各种功能性。举例来说,非易失性存储器控制器可格式化非易失性存储器以确保存储器恰当地操作,映射出不良非易失性存储器单元,并且分配备用单元来替代未来的故障单元。备用单元的某一部分可用以保持固件来操作非易失性存储器控制器并实施其它特征。在操作中,在主机需要从非易失性存储器读取数据或将数据写入到非易失性存储器时,所述主机可与非易失性存储器控制器进行通信。如果主机提供数据将被读取/写入到的逻辑地址,则非易失性存储器控制器可将从主机接收到的逻辑地址转换成非易失性存储器中的物理地址。(替代地,主机可提供物理地址。)非易失性存储器控制器还可执行各种存储器管理功能,例如但不限于损耗均衡(分布写入以避免损耗原本将会被重复地写入到的特定存储器块)和垃圾收集(在块已满之后,仅将有效数据页移动到新块,如此已满的块可被擦除且再使用)。此外,权利要求书中所叙述的“构件”的结构可包含例如本文中所描述的控制器的结构中的一些或全部,所述结构视需要被编程或制造以使控制器进行操作以执行所叙述功能。
24.非易失性存储器裸片104可包含任何合适的非易失性存储介质,包含电阻式随机存取存储器(reram)、磁阻随机存取存储器(mram)、相变存储器(pcm)、nand快闪存储器单元和/或nor快闪存储器单元。存储器单元可呈固态(例如,快闪)存储器单元的形式,且可为可一次编程、可少次编程或可多次编程的。存储器单元还可为单层级单元(slc)、多层级单元(mlc)、三层级单元(tlc),或使用其它现今已知或将来开发的存储器单元层级技术。此外,存储器单元可以二维或三维方式制造。
25.控制器102与非易失性存储器裸片104之间的接口可为任何合适的快闪接口,例如切换模式(toggle mode)200、400或800。在一个实施例中,存储系统100可为基于卡的系统,
例如安全数字(sd)或微安全数字(微sd)卡。在替代实施例中,存储系统100可为嵌入式存储系统的部分。
26.虽然在图1a中所示出的实例中,非易失性存储系统100(在本文中有时被称为存储模块)在控制器102与非易失性存储器裸片104之间包含单个信道,但本文中所描述的主题不限于具有单个存储器信道。举例来说,在一些存储系统架构(例如图1b和图1c中所展示的存储系统架构)中,取决于控制器能力,可在控制器与存储器装置之间存在2个、4个、8个或更多个存储器信道。在本文中所描述的任何实施例中,控制器与存储器裸片之间可存在多于单个信道,即使图中展示单个信道。
27.图1b示出包含多个非易失性存储系统100的存储模块200。因而,存储模块200可包含与主机且与存储系统204介接的存储控制器202,所述存储系统包含多个非易失性存储系统100。存储控制器202与非易失性存储系统100之间的接口可为总线接口,例如串行高级技术附件(sata)、周边组件互连高速(pcie)接口或双数据速率(ddr)接口。在一个实施例中,存储模块200可为固态驱动器(ssd)或非易失性双列直插式存储器模块(nvdimm),例如在服务器pc或诸如膝上型计算机和平板计算机等便携式计算装置中所发现。
28.图1c为示出阶层式存储系统的框图。阶层式存储系统250包含多个存储控制器202,所述存储控制器中的每一者控制相应存储系统204。主机系统252可经由总线接口存取存储系统内的存储器。在一个实施例中,总线接口可为非易失性存储器高速(nvme)接口或以太网光纤信道(fcoe)接口。在一个实施例中,图1c中所示出的系统可为可由多个主机存取的可安装在支架上的大容量存储系统,例如将在数据中心或其中需要大容量存储的其它位置中所发现。
29.图2为更详细地示出控制器102的组件的框图。控制器102包含与主机介接的前端模块108、与一个或多个非易失性存储器裸片104介接的后端模块110以及执行现在将详细描述的功能的各种其它模块。模块可例如呈以下形式:设计成与其它组件一起使用的经封装功能硬件单元、可由通常执行相关功能的特定功能的(微)处理器或处理电路系统执行的程序代码(例如,软件或固件)的一部分,或与较大系统介接的自主硬件或软件组件。控制器102的模块可包含在下文更详细地论述的嵌入式现场可编程门阵列(efpga)111。在一些实施例中,ecc模块124至少部分地嵌入于efpga 111中。
30.再次参考控制器102的模块,缓冲器管理器/总线控制器114管理随机存取存储器(ram)116中的缓冲器,且控制控制器102的内部总线仲裁。只读存储器(rom)118存储系统启动代码。虽然在图2中示出为与控制器102分开定位,但在其它实施例中,ram 116和rom 118中的一者或两者可定位在控制器内。在另外其它实施例中,ram和rom的部分可既定位于控制器102内又位于控制器外部。
31.前端模块108包含提供与主机或下一层级存储控制器的电接口的主机接口120和物理层接口(phy)122。主机接口120的类型的选择可取决于正在使用的存储器的类型。主机接口120的实例包含但不限于sata、sata高速、串行附接的小型计算机系统接口(sas)、光纤信道、通用串行总线(usb)、pcie和nvme。主机接口120通常促进数据、控制信号和定时信号的传送。
32.后端模块110包含错误校正码(ecc)引擎124,所述错误校正码引擎对从主机接收到的数据字节进行编码,且对从非易失性存储器读取的数据字节进行解码和错误校正。命
令测序器126产生待传输到非易失性存储器裸片104的命令序列,例如编程和擦除命令序列。独立驱动器冗余阵列(redundant array of independent drive;raid)模块128管理raid奇偶校验的产生和失效数据的恢复。raid奇偶校验可用作用于正写入到存储器装置104中的数据的额外层级的完整性保护。在一些情况下,raid模块128可为ecc引擎124的部分。存储器接口130将命令序列提供到非易失性存储器裸片104,且从非易失性存储器裸片104接收状态信息。在一个实施例中,存储器接口130可为双数据速率(ddr)接口,例如切换模式200、400或800接口。快闪控制层132控制后端模块110的总体操作。
33.存储系统100还包含其它离散组件140,例如外部电接口、外部ram、电阻器、电容器或可与控制器102介接的其它组件。在替代实施例中,物理层接口122、raid模块128、介质管理层138和缓冲器管理/总线控制器114中的一者或多者为未必在控制器102中的任选组件。
34.图3为更详细地示出非易失性存储器裸片104的组件的框图。非易失性存储器裸片104包含周边电路系统141和非易失性存储器阵列142。非易失性存储器阵列142包含用于存储数据的非易失性存储器单元。非易失性存储器单元可为任何合适的非易失性存储器单元,包含呈二维和/或三维配置的reram、mram、pcm、nand快闪存储器单元和/或nor快闪存储器单元。非易失性存储器裸片104进一步包含对数据进行高速缓冲存储的数据高速缓冲存储器156。周边电路系统141包含将状态信息提供到控制器102的状态机152。
35.再次返回到图2,快闪控制层132(其将在本文中被称为快闪转换层(ftl),或例如更通常,在存储器可能不是快闪时被称为“介质管理层”)处理快闪错误且与主机介接。确切地说,可为固件中的算法的ftl负责存储器内部管理,并且将来自主机的写入转换成至存储器104的写入。因为存储器104可具有受限的耐久性、可仅以多页形式写入,和/或除非其作为块擦除,否则可能不被写入,所以可能需要ftl。ftl了解存储器104的这些潜在限制,所述潜在限制可能对主机不可见。因此,ftl试图将来自主机的写入转换成至存储器104中的写入。
36.ftl可包含逻辑到物理地址(l2p)映射(有时在本文中被称为表或数据结构)和所分配的高速缓冲存储器。以此方式,ftl将来自主机的逻辑块地址(“lba”)转换成存储器104中的物理地址。ftl可包含其它特征,例如但不限于断电恢复(以使得可在突然断电的情况下恢复ftl的数据结构)和损耗均衡(以使得存储器块上的损耗较平均以防止某些块过量损耗,这将导致较大故障概率)。
37.现代存储系统通常包含迭代软解码器,例如低密度奇偶校验(ldpc)错误校正码(ecc)引擎,其通常包含若干内部硬件内核以支持所存储数据的不同误码率(ber)层级。举例来说,存储系统可包含ldpc硬件模块内部的三个解码引擎(在本文中有时被称为齿轮或算法):目标为提供第一层级的校正能力的第一引擎;目标为提供第二层级的额外校正能力的第二引擎;以及目标为提供第三层级的甚至更多的校正能力的第三引擎。
38.ldpc ecc解码器的不同解码内核并有一方面校正能力与另一方面所消耗操作电力和解码持续时间之间的折衷。不同ecc内核的使用频率在整个存储装置寿命中改变(例如,通过编程/擦除计数所测量)。由于在装置的寿命期间存储条件降级(例如,如通过ber增加来表明),因此不同解码器内核的使用也降级。
39.随着存储系统的吞吐量要求增加,多个解码引擎的使用增加。举例来说,一些消费型固态驱动器(cssd)具有各种数目的第一、第二和第三引擎,而一些企业型固态驱动器
(essd)具有其它各种数目的第一、第二和第三引擎。下一代存储系统可具有甚至进一步变化。
40.具有多解码器方法的成本和电力消耗的增益相当大。此外,每一解码齿轮的成功概率可随ber而变化。以此方式,不同ber可指示不同解码齿轮的使用。举例来说,在寿命开始时,第一引擎可为适当的,但随着存储器发展,ber增加且因此第二和第三引擎的使用百分比也增加。
41.为了解决此情形,在一个实施例中,自适应存储解码器硬件设计可基于嵌入式现场可编程门阵列(efpga)实施方案。一般来说,efpga将fpga集成为专用集成电路(asic)片上系统(soc)的一部分。efpga技术向fpga的灵活硬件可编程性提供asic soc的性能和成本益处。虽然在这些实例中的一些中使用嵌入式fpga,但应理解,可使用非嵌入式fpga。
42.图4为soc efpga系统400的实例的框图。如图4中所展示,系统400包括两个中央处理单元(cpu)集群405、410、efpga 415、三个2级(l2)高速缓冲存储器420、425、430、高速缓冲存储相干互连层435、安全桥440、双数据速率(ddr)控制器445、周边组件互连高速(pcie)接口450和以太网接口455。此soc 400可与可编程加速度一起使用。
43.图6为efpga的示例使用情况的框图。此图表明允许将soc内部的fpga组件编程到不同硬件功能性的efpga系统的硬件可编程性灵活性。举例来说,在一个使用情况510中,efpga系统用作加速器且提供灵活输入/输出(i/o)功能。在另一使用情况520中,efpga系统用作在锁定步骤中运行的双内核处理器的表决逻辑。在又一使用情况530中,efpga系统用于提供运行不同工作负载的并行i/o处理器。
44.在soc上采用fpga的主要优点与fpga的灵活性有关,同时仍保持soc的性能。采用fpga的直接优点与缩短上市时间(ttm)和灵活硬件漏洞支持有关。
45.返回到对解码引擎的论述,第二和第三解码模式极少用于新制存储装置,且在存储器的寿命开始时实际上是冗余的。然而,当传统asic硬件设计为固定时,ldpc解码解决方案可根据所有条件设定大小:用于寿命开始(bol)时的第一解码器和用于寿命结束(eol)时的第二/第三解码器。取决于产品要求,可需要两组解码器,或作出牺牲bol时的电力效率(较少第一解码器)或eol时的性能(较少第三解码器)的折中。如果硬件设计可根据对应于装置使用期的典型ber(或ber的估计(例如,校验子权重)动态地调适,那么可显著地加快存储装置性能。然而,当前存储系统使用ldpc ecc解码器的固定硬件设计,其包含相同硬件模块(例如,不同解码内核)以在性能和校正能力方面支持bol和eol两者的最差情况条件。
46.在一个实施例中,利用嵌入式fpga soc实施方案提供动态自适应存储解码器硬件设计。此实施例以独特方式利用efpga能力。如上文所提及,efpga的常见使用情况旨在缩短上市时间以及改进硬件漏洞支持能力。然而,此实施例可用于并入不同概念,所述概念利用efpga沿着装置寿命(甚至在产品的稳态开发阶段中)提供灵活硬件设计。在一个实施例中,soc的fpga部分可被配置成根据装置使用期(例如,如通过编程/擦除循环层级所测量)实施解码内核的不同组合以将解码器特性调整到存储器特性以实现优化的性能和电力消耗。
47.在一个实施例中,通过不同解码模式子引擎的基于efpga的自适应配置提供ldpc ecc模块的灵活硬件设计。存储装置ldpc内核的灵活硬件设计可基于典型ber层级(根据装置寿命阶段)而提供。
48.如上文所提及,昂贵fp-解码模式(即,具有长解码持续时间的高电力消耗)极少用
于新制存储装置。然而,因为传统asic soc硬件设计为固定的,所以ldpc解码内核必须包含所有解码模块,因为其需要以同样在寿命结束(eol)时的相同硬件很好地操作。相比而言,此实施例限定若干硬件模式配置,所述硬件模式配置根据存储装置的使用期而容纳不同ber层级,以使得在寿命开始时存在更多第一解码内核,在寿命中期时存在更多第二解码内核,以及在寿命结束时存在更多第三解码内核。
49.对于每一ber层级,可根据预期ber和存储器条件来限定引擎和其并行性以优化性能和电力。通过调整解码器架构、每一引擎类型的数目以及每一引擎与存储器条件的并行性,此实施例可优化解码器性能和电力消耗。换句话说,与非自适应系统相比,此优化可产生较高性能和较低电力。
50.图6a至6d为由efpga实施的实施例的自适应存储错误校正码(ecc)解码器硬件设计的框图。将结合图7中的流程图700论述这些图式,其展示不同存储寿命阶段之间的efpga硬件设计的转变。如图6a中所展示,模块620包括第一解码器630、第二解码器640和第三解码器650以及efpga 610。在此实施例中,基于存储系统100的寿命阶段而对efpga 610进行编程以实施一个或多个额外解码器。
51.举例来说,如图6b中所展示且在图7中的动作710中所展示,在寿命开始时,模块被编程为“设计模式a”,其中efpga 610被编程以实施三个额外第一解码器611、612和613。这是在寿命开始时加快解码并行性的超快解码硬件模式。在此模式中,控制器102执行主机命令(动作720)且监测存储系统100的老化以查看是否需要改变解码模式。举例来说,如图7中的动作730中所展示,控制器102可确定编程/擦除计数(pec)或误码率(ber)是否高于阈值。如果是,那么表示存储器已老化到寿命中期,其中不同的错误保护方案将很可能是适当的。在此情况下,控制器102实施设计模式b(动作740)。如图6c中所展示,在设计模式b中,efpga 610实施两个第二解码器614、615,因为使用第二解码作为解码齿轮适合于寿命中期。
52.控制器102继续执行命令(动作750)且确定存储器是否已老化到寿命结束了(例如,通过确定pec或ber是否大于第二阈值)(动作760)。当存储器处于寿命结束时,控制器102将硬件解码器设定为设计模式c(动作770),其中efpga 610实施第三解码器616(参见图6d),且控制器102在此模式中执行主机命令(动作780)。
53.图8为涉及这些特征的实施例的存储系统100的框图。如图8中所展示,存储系统100包括控制器102和存储器(此处为nand)104。控制器102包括错误校正efpga模块800,其可呈类似于图6a中的模块620的形式。efpga模块800含有可由处理器810用从存储器104中的efpga配置区域/文件805读取的指令进行编程的efpga。举例来说,存储器104中的efpga配置区域/文件805可存储三个不同指令代码集合以实施上文所论述的设计模式a至c。在操作中,基于存储器104的平均ber或pec,处理器810将会经由快闪接口模块110将配置读取命令发布到存储器104以获取用于所要配置的适当指令代码集合,且接着利用读取指令代码动态地配置efpga模块800。控制器102的其它组件(例如,命令路径820、命令调度器830、其它处理器840、控制路径850、直接存储器存取(dma)模块860和数据传送调度器870)将像往常一样操作。
54.在另一实施例中,每一ecc引擎的并行性随平均ber而改变。举例来说,当具有最佳ber时,每一ecc引擎的并行性较低,但存在许多ecc引擎。在具有较差ber之后,控制器102可减少ecc引擎的数目,但增加其每一者中的并行性。
55.存在与这些实施例相关联的若干优点。举例来说,在产品的寿命期间使解码器架构适应于存储器条件可有助于确保最优性能和电力消耗。作为另一实例,针对仅在异常/维护期间使用的模块重新配置efpga解码器可有助于降低控制器102的成本和/或减少efpga的额外成本。
56.在另一实施例中,efpga可用于自适应编码和解码信道。ldpc ecc引擎可包含编码和解码的不同信道。编码信道在写入路径期间操作,其中计算奇偶校验冗余数据,而解码信道在读取路径期间操作,其中使用指定解码器硬件操作迭代ecc方案以便校正错误地翻转的位(例如,通过实施例如置信传播等消息传递算法)。
57.因为编码和解码操作严格地彼此不同(例如,编码本质上为确定性操作,而解码操作为随机的),所以常见所涉及的硬件实施方案产生用于编码器和解码器的不同硬件内核。然而,为了增强解码和/或编码的性能,有效的选项是添加编码器/解码器内核中的每一者的若干副本以便允许较大数据块的并行处理。这在图9中的框图900中展示。
58.图9展示ecc编码器和解码器内核的固定分区,其被称为平衡系统,因为其具有相同数目个编码器和解码器。然而,改变标称平衡可为有益的,因为(1)产品要求可发生变化,在使用相同控制器的同时一些更加写入密集且一些更加读取密集,并且(2)根据裸片的数目,在nand编程/读取时间中可存在极大不对称性,因此相同产品的不同配置可需要编码器/解码器内核的不同分区。
59.由于用以实施编码器和解码器信道的惯例是具有一个或多个编码内核和一个或多个解码内核的固定硬件设计,因此此类ecc引擎的硬件能力受到解码/编码分区的可用设计的限制。此类不灵活性意味着系统不能够根据特定主机工作流和/或根据所需当前性能来调适其性能。
60.举例来说,如果写入密集型应用程序在某一存储装置上定期操作(例如,用于事件数据记录器日志),那么针对通用工作流而规划的装置的性能将受到写入路径的限制。而如果相同存储装置以读取密集型模式操作(例如,用于自主车辆的存储器中的三维和/或高清地图),则其会受到读取路径的限制。因为存储器可仅一次执行一个操作(编程或感测),所以具有编码/解码内核的固定分区(即使使用多个裸片,但难以且有时不可能维持同时读取/写入)是低效的。可能需要允许ecc引擎有能力根据特定的主机/应用程序工作流和/或根据当前与所需读取/写入性能相对来自适应地改变其内部硬件资源在解码与编码信道之间的分配。
61.如上文所提及,用于存储装置的ecc引擎的编码/解码信道的硬件设计的前述方法是一个或多个编码内核和一个或多个解码内核的固定分区,其中不具有根据特定的主机工作流和/或根据所需当前性能在编码/解码信道之间的调适能力。相比而言,在一个实施例中,ecc引擎根据当前存储装置性能和特定用户典型工作流使用efpga技术以优化方式在编码与解码信道之间具有硬件资源的灵活分区。此实施例进一步包含跟踪存储器的统计性能以便自适应地优先化编码/解码资源分配以及任选地还出于相同目的跟踪特定主机/应用程序典型工作流。在一个实施例中,由嵌入式fpga模块允许编码/解码信道的可调适性。
62.返回到图式,图10a为现有技术ecc内核设计1的框图。如图10a中所展示,此设计1包括单个编码器2、单个解码器3以及i/o接口4。与此固定设计相比,此实施例的ecc模块提供自适应编码和解码硬件信道。举例来说,如图10b和10c中所展示,此实施例的ecc模块
1000包括编码器1010、解码器1020、存储装置性能统计记录仪1030、主机典型工作流跟踪模块1040、i/o接口和嵌入式fpga 1060。嵌入式fpga 1060可被编程以实施额外编码器和/或解码器。举例来说,在图10b中,嵌入式fpga 1060被编程以实施两个额外解码器1065(其为增强解码的设计),而在图10c中,嵌入式fpga1060被编程以实施两个额外编码器1075、1080(其为增强编码的设计)。
63.在一个实施例中,存在两种方法用于调适efpga模块以用于编码或解码密集型工作负载:离线调适和在线调适。在离线调适中,根据产品要求(例如,特定产品识别符(库存单位(sku))、配置和已连接裸片的数目)来调适编码/解码的分区。用于解码或编码密集型工作负载的efpga模块的此离线调适可在通电重新发送(por)之后在初始化期间执行。
64.相比而言,在线调适可用于随时间动态地改变配置。图11为用于在线调适的实施例的方法的流程图1100。如图11中所展示,在从主机接收配置信息(动作1110)之后,跟踪读取和写入性能以及存储装置的服务质量(qos)(动作1120)。可跟踪其它度量,例如但不限于应用程序的类型、配置的类型、虚拟主机的类型、队列深度、电力条件和温度条件。接着将读取/写入性能与相关基准性能值进行比较(动作1130)。这些值可在装置寿命期间被预定义或更新为来自用户的输入。可根据用户通知以预定义时间间隔起始此比较检查点,或一旦识别到可接受性能标准的异常,便起始此比较检查点。
65.为了作出硬件配置决策,控制器102可将读取和写入信道的重要性层级与相关阈值进行比较(动作1140)且相应地设定控制器102中的efpga模块的对应配置(动作1150)。在一个实施例中,存储器104存储预定义efpga配置选项的多个集合,且“if-else”条件集合预先相关联以决定恰当的硬件配置模式。所选择的efpga硬件配置的有效性可在需要时被跟踪且任选地报告给主机,或另外用于更新先前步骤的决策规则(动作1160)。
66.在一个实施例中,efpga概念可用于寻址突发操作。举例来说,通常,一个系统可并有十个解码器和三个编码器。然而,如果装置检测到需要额外编码器并行性的突发写入操作,那么解码器的数目可动态地减小,同时增加编码器的数目且针对此突发操作具有性能/qos提升。存储装置可以各种方式检测突发操作,例如但不限于经由对具有相同属性的许多操作(例如,读取/写入命令)的在线检测、基于先前历史或机器学习的突发操作的预测、主机提示,以及使用可预测等待时间模式。
67.关于可预测等待时间模式,在一些系统中,工作负载随时间而为可预测的,且可预测等待时间模式用于实现nvme装置中的读取和写入操作两者的可预测等待时间。当nvme装置被配置成在此模式中操作时,nvm集合中的名称空间提供用于确定性操作和用于非确定性操作的独特的单独操作窗口。确定性窗口(dtwin)为操作窗口,在此期间nvm集合能够提供用于读取和写入操作的确定性等待时间。非确定性窗口(ndwin)为操作窗口,在此期间nvm集合由于针对后续确定性窗口的准备而不能够提供用于读取和写入操作的确定性等待时间。可在非确定性窗口中执行的示例动作包含对非易失性介质的后台操作。nvm集合在其中操作的当前窗口由主机使用可预测等待时间模式窗口特征来配置或由控制器102由于自主动作来配置。图12描绘周期性地切换的确定性和非确定性窗口。动机是增加确定性窗口持续时间且按需要减小非确定性窗口持续时间。在一个实施例中,由于读取操作的qos和性能是关键的,因此在dtwin期间实施更多解码器。另一方面,由于发布更多写入操作,因此在ndwin期间实施更多编码器引擎。
68.图13为可与以上特征一起使用的实施例的存储系统100的框。如图13中所展示,存储系统100包括控制器102和存储器(此处为nand)104。控制器102包括具有efpga的ecc引擎1300,所述efpga可呈类似于图10b和10c中的模块1000的形式。ecc引擎1300中的efpga可由处理器1310用从存储器104中的efpga配置区域/文件1305读取的指令进行编程。举例来说,存储器104中的efpga配置区域/文件1305可存储三个不同指令代码集合以实施不同ecc方案。在操作中,基于预期的工作负载,处理器1310经由快闪接口模块110将配置读取命令发布到存储器104以获取用于所要配置的适当指令代码集合,且接着利用读取指令代码动态地重新配置ecc引擎1300中的efpga。控制器102的其它组件(例如,命令路径1320、命令调度器1330、其它处理器1340、控制路径1350、直接存储器存取(dma)模块1360和数据传送调度器1370)将像往常一样操作。
69.存在与这些实施例相关联的许多优点。举例来说,上文所描述的自适应系统允许更好地利用可用资源,从而需要用于相同性能目标的较少总体资源。并且,相较于非自适应系统,自适应系统可实现较高性能和qos。所述解决方案更有效且适于当前工作负载和突发操作。此外,这些实施例允许设计中的灵活性(例如,以支持在流片之后需要不同读取/写入型态的产品)。
70.在另一实施例中,嵌入式fpga用于向控制器102提供动态主机存储器缓冲器(hmb)-控制器存储器缓冲器(cmb)支持,所述支持可用在非易失性存储器高速(nvme)环境中。nvme是基于配对的提交和完成队列机制。命令由主机软件放置到提交队列中,且完成由控制器102放置到相关联完成队列中。一般来说,将提交和完成队列分配在主机存储器中,而每一队列可能在主机存储器中连续地或非连续地物理地定位。
71.现代高性能ssd控制器(例如nvme控制器)使用大量ram,并且通常存在对于每1tb快闪的1gb的ram比率。控制器通常保守用于将ram用作用于用户数据的高速缓冲存储器来限制突然断电的损害,且ram改为用以存储供控制器跟踪哪些数据在快闪芯片上何处存储所必需的组织元数据。目标为当驱动器接收读取或写入请求时,其可基于控制器的dram中快得多的查找(与快闪相比)而确定需要存取哪个快闪存储器位置,且驱动器不需要在每单一写入操作完成之后更新存储在快闪上的元数据副本。对于快速、一致的性能,可选择数据结构以最小化以需要更多ram为代价所需的计算量和ram查找的数目。作为共同成本降低,可从主机上的共享池分配ram,而非将机载dram添加到装置。此特征被称为pcie/nvme装置中的主机存储器缓冲器(hmb),且利用pcie协议以允许对主机存储器进行直接存取。
72.通常,在主机初始化期间将hmb分配为固定缓冲器,且将其完全留给装置作为专用池。装置接着可直接存取此缓冲器且将所述缓冲器当作其自身存储器的扩展。hmb特征在低端客户端ssd应用程序中极为常见,但在其它客户端和企业市场中并不常见。另一方面,控制器存储器缓冲器(cmb)和持久性存储器区(pmr)特征在数据中心和企业市场中很常见。cmb特征使得主机能够将提交队列、完成队列、物理区页(prp)列表、分散收集列表(sgl)片段和数据缓冲器放置在控制器存储器中。pmr特征为可用于多种目的的通用读取/写入持久性存储器的任选区。pmr的地址范围由pci基地址寄存器(bar)界定且消耗由bar暴露的整个地址区。pmr支持pci高速编程模型的所需特征(即,其绝不限制pci高速原本准许的内容)。pmr的内容在pmr停用、控制器和nvm子系统复位以及电力循环期间保持不变。
73.cmb/pmr成为下一代的企业市场中的热门话题,因为此特征尤其在pci高速结构拓
扑中对性能具有直接影响。另外,其减少在主机dram中实施的存储装置的量。
74.由于hmb和cmb特征中的每一者对于特定市场而言是独特的且通常与其它市场不相关,因此不在相同应用程序中实现hmb和cmb特征。此外,支持用于未来产品的存储控制器中的hmb和cmb特征的当前方法是基于实施hmb支持以及cmb支持的两个硬件引擎。然而,这些工作方法可能永远不会并行完成(即,存储系统将在hmb模式或cmb模式中操作)。
75.以下实施例可用于提供将不需要hmb和cmb支持的两个引擎的冗余实施方案的可配置硬件。在一个实施例中,存储控制器具备可被配置成在无冗余硬件的情况下支持hmb或cmb(或一个模式都不支持)以支持两个模式的嵌入式fpga。以此方式,嵌入式fpga可替换存储装置控制器中的当前hmb和cmb支持块。
76.返回到图式,图14为用于配置控制器102中的嵌入式fpga模块以作为hmb支持模块或cmb支持模块操作的实施例的方法的流程图1400。如图14中所展示,主机首先将控制器102中的efpga配置为预定义的hmw/cmb硬件选项中的一者(动作1410)。在一个实施例中,主机可将efpga配置为三个选项中的一者:(1)efpga hmb支持,(2)efpga cmb支持,以及(3)非hma/cmb支持。在选项1中,efpga将被配置成hmb支持块的预定义设计。在选项2中,efpga将被配置成cmb支持块的预定义设计。在选项3中,efpga将自由地利用任何其它硬件加速选项,例如添加如ecc等额外处理引擎、加密和解密引擎,或额外分级缓冲器。
77.接下来,控制器102中的固件剖析主机配置指令(动作1420)且从存储器104的管理区域下载相关配置(动作1430)。随后,控制器102中的efpga根据从存储器104所获取的配置而被配置成特定硬件设计(动作1440)。当完成此动态配置时,可将完成通知发布给主机。
78.在另一实施例中,可调谐efpga模块以实施hmb或cmb支持模块的各种特点,包含但不限于hmb/cmb大小、hmb邻接或非邻接缓冲器(非邻接为更复杂的,因为主机可提供表示整个hmb的许多非邻接缓冲器)、cmb使用(例如,主机提交队列、主机完成队列、写入用户数据、读取用户数据和prp/sgl),以及hmb/cmb性能/等待时间。
79.再次转向图式,图15为可用于提供efpga hmb/cmb可配置装置的实施例的存储系统100的框图。如图15中所展示,存储系统100包括控制器102和存储器(此处为nand)104。控制器102包括可由处理器1540用从存储器104中的efpga配置区域/文件1505读取的指令进行编程的efpga 1500。举例来说,存储器104中的efpga配置区域/文件1505可存储用以实施hmb的指令代码和用以实施cmb的指令代码。在操作中,基于来自主机50(其具有主机存储器55)的安装指令,处理器1510经由快闪接口模块110将配置读取命令发布到存储器104以获取适当指令代码,且接着利用读取指令代码动态地重新配置efpga 1500。控制器102的其它组件(例如,控制路径1550、命令获取器1551、命令执行器1552、直接存储器存取(dma)模块1560、数据传送调度器1570和错误校正块1554)将像往常一样操作。
80.存在与这些实施例相关联的许多优点。举例来说,通过使用单个可配置efpga模块来代替hmb和cmb支持块的两个不同硬件模块,这些实施例可降低控制器asic的价格,提供设计灵活性以在装置寿命期间将hmb/cmb用途配置为不同值特点,并且缩短上市时间(通过由重新配置hmb/cmb支持模块的选项甚至在流片之后实现的较高漏洞抗扰性来实现)。
81.最终,如上文所提及,可使用任何合适类型的存储器。半导体存储器装置包含:易失性存储器装置,例如动态随机存取存储器(“dram”)或静态随机存取存储器(“sram”)装置;非易失性存储器装置,例如电阻式随机存取存储器(“reram”);电可擦除可编程只读存
储器(“eeprom”);快闪存储器(也可将其视为eeprom的子集);铁电随机存取存储器(“fram”)和磁阻随机存取存储器(“mram”);以及能够存储信息的其它半导体元件。每一类型的存储器装置可具有不同的配置。举例来说,快闪存储器装置可以nand或nor配置来进行配置。
82.存储器装置可由无源和/或有源元件以任何组合形成。借助于非限制性实例,无源半导体存储器元件包含reram装置元件,所述reram装置元件在一些实施例中包含电阻率切换存储元件,例如反熔丝、相变材料等,且任选地包含转向元件,例如二极管等。另外,借助于非限制性实例,有源半导体存储器元件包含eeprom和快闪存储器装置元件,所述快闪存储器装置元件在一些实施例中包含含有电荷存储区的元件,例如浮动栅极、导电纳米粒子或电荷存储电介质材料。
83.多个存储器元件可被配置成使得其串联连接或使得每一元件可个别地存取。借助于非限制性实例,nand配置(nand存储器)中的快闪存储器装置通常含有串联连接的存储器元件。nand存储器阵列可配置成使得阵列由多个存储器串构成,其中一串由共享单个位线且作为群组被存取的多个存储器元件构成。替代地,存储器元件可被配置成使得每一元件可个别地存取,例如nor存储器阵列。nand和nor存储器配置是实例,且存储器元件可以其它方式来配置。
84.位于衬底内和/或衬底上方的半导体存储器元件可布置为二维或三维,例如二维存储器结构或三维存储器结构。
85.在二维存储器结构中,半导体存储器元件布置于单个平面或单个存储器装置层级中。通常,在二维存储器结构中,存储器元件布置在大体上平行于支撑存储器元件的衬底的主表面而延伸的平面中(例如在x-z方向平面中)。衬底可为上方或其中形成存储器元件层的晶片,或可为在存储器元件形成之后附接到存储器元件的载体衬底。作为非限制性实例,衬底可包含例如硅之类的半导体。
86.存储器元件可以例如多个行和/或列之类的有序阵列的形式布置在单个存储器装置层级中。然而,存储器元件可以非规则或非正交配置排列。存储器元件可各自具有两个或更多个电极或接触线,例如位线和字线。
87.三维存储器阵列被布置成使得存储器元件占据多个平面或多个存储器装置层级,由此形成呈三维(即,在x、y和z方向上,其中y方向大体上垂直于衬底的主表面,且x和z方向大体上平行于衬底的主表面)的结构。
88.作为非限制性实例,三维存储器结构可竖直地布置为多个二维存储器装置层级的堆叠。作为另一非限制性实例,三维存储器阵列可布置为多个竖直列(例如,大体上垂直于衬底的主表面而延伸,即沿y方向延伸的列),其中每一列在每一列中具有多个存储器元件。所述列可以二维配置来布置,例如在x-z平面中,从而产生具有在多个竖直堆叠的存储器平面上的元件的存储器元件的三维布置。呈三维形式的存储器元件的其它配置也可构成三维存储器阵列。
89.借助于非限制性实例,在三维nand存储器阵列中,存储器元件可耦合在一起以形成单个水平(例如,x-z)存储器装置层级内的nand串。或者,存储器元件可耦合在一起以形成横穿多个水平存储器装置层级的竖直nand串。可设想其它三维配置,其中一些nand串含有单个存储器层级中的存储器元件,而其它串含有横跨多个存储器层级的存储器元件。三
维存储器阵列还可以nor配置和reram配置来设计。
90.通常,在单片三维存储器阵列中,在单个衬底上方形成一个或多个存储器装置层级。任选地,单片三维存储器阵列还可具有至少部分地在单个衬底内的一个或多个存储器层。作为非限制性实例,衬底可包含例如硅之类的半导体。在单片三维阵列中,构成阵列的每一存储器装置层级的层通常形成于阵列的下伏存储器装置层级的层上。然而,单片三维存储器阵列的邻近存储器装置层级的层可被共享,或在存储器装置层级之间具有插入层。
91.而且,二维阵列可分别形成且接着封装在一起以形成具有多个存储器层的非单片存储器装置。举例来说,可通过在单独的衬底上形成存储器层级且接着将存储器层级堆叠于彼此之上来构造非单片堆叠的存储器。衬底可在堆叠之前薄化或从存储器装置层级去除,但由于存储器装置层级最初形成于单独衬底上方,因此所得存储器阵列不是单片三维存储器阵列。另外,多个二维存储器阵列或三维存储器阵列(单片或非单片的)可形成于单独芯片上且接着封装在一起以形成堆叠芯片存储器装置。
92.通常需要相关联电路系统来操作存储器元件并与存储器元件进行通信。作为非限制性实例,存储器装置可具有用于控制和驱动存储器元件以实现例如编程和读取等功能的电路系统。此相关联电路系统可在与存储器元件相同的衬底上和/或在单独的衬底上。举例来说,用于存储器读写操作的控制器可位于单独的控制器芯片上和/或位于与存储器元件相同的衬底上。
93.所属领域的技术人员将认识到,本发明不限于所描述的二维和三维结构,而是覆盖如本文中所描述且如所属领域的技术人员所理解的在本发明的精神和范围内的所有相关存储器结构。
94.希望将前述详细描述理解为本发明可采取的选定形式的说明,而非对本发明的限定。只有所附权利要求书(包含所有等效物)意图限定所要求的本发明的范围。最后,应注意,本文中所描述的实施例中的任一者的任何方面可独自使用或彼此组合使用。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1