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

优化闪存颗粒的方法和相关装置与流程

2022-08-31 05:01:07 来源:中国专利 TAG:


1.本技术涉及存储技术领域,尤其涉及一种优化闪存颗粒的方法和相关装置。


背景技术:

2.具有高读写(input/output,i/o)速率闪存颗粒通常会给用户带来更好的用户体验。提升非易失性闪存接口(nand flash interface,nfi)的总线速率是提升i/o速率的一种有效方式。然而,随着nfi总线速率的提升,理想数据宽度随之下降,从而导致总线链路可靠性降低,造成数据丢失等故障。
3.对于nfi总线出现单通道单比特误码的解决方案是重新发送出现误码的通道的数据。但是随着nfi总线通道数目的增加,出现单比特误码的概率也随之增加。而且重发数据会严重影响闪存颗粒的读写性能,降低用户体验。


技术实现要素:

4.本技术实施例提供一种优化闪存颗粒的方法和相关装置,可以在不掉盘的情况下,对 nfi总线中的部分通道进行优化。
5.第一方面,本技术实施例提供一种优化闪存颗粒的方法,该方法包括:在该闪存颗粒的业务运行过程中,挂起该闪存颗粒的非易失性闪存接口nfi总线中的n个通道,其中n 为大于或等于1且小于或等于该nfi总线中的通道总数的整数;从该n个通道中确定至少一个待优化通道;根据该至少一个待优化通道中的每个待优化通道的训练数据,确定该每个待优化通道的优化参数;根据该每个待优化通道的优化参数,对该每个待优化通道进行优化。
6.上述技术方案可以在闪存颗粒正常运行过程中,对nfi总线中的部分通道进行优化。换句话说,另一部分通道可以保持正常工作状态。这样,可以实现在不掉盘的情况下对 nfi总线通道进行优化。
7.结合第一方面,在第一方面的一种可能的实现方式中,该从n个通道中确定至少一个待优化通道,包括:对该n个通道中的第n个通道进行裕量测试,得到该第n个通道的裕量,n依次取1至n的整数;确定该第n个通道的裕量是否满足裕量条件,该裕量条件包括时序裕量条件和电压裕量条件中的至少一个;若该第n个通道的裕量不满足该裕量条件,则确定该第n个通道属于该待优化通道。
8.上述技术方案可以判断出需要进行优化的通道,从而为后续优化做好准备。
9.结合第一方面,在第一方面的一种可能的实现方式中,该优化参数包括读优化电压和写优化电压,该每个待优化通道的训练数据包括该每个待优化通道的k个读裕量和k个写裕量,k为大于1的正整数,该根据该至少一个待优化通道中的每个待优化通道的训练数据,确定该每个待优化通道的优化参数,包括:确定该k个读裕量的平均值为该读优化电压;确定该k个写裕量的平均值为该写优化电压。
10.通过确定的读优化参数,可以对通道的读参考电压进行优化;相应的,通过确定的
写优化参数,可以对通道的写参考电压进行优化。通过优化读参考电压和写参考电压,可以降低闪存控制器与nand flash颗粒之间传输出错的概率,提高存储性能。
11.结合第一方面,在第一方面的一种可能的实现方式中,该k个读裕量为k个读时序裕量,该k个写裕量为k个写时序裕量,该k个读时序裕量与k个电压档位一一对应,该k个写时序裕量与该k个电压档位一一对应,该读优化电压通过以下公式确定:
[0012][0013]
其中vrx_best表示该读优化电压,vk表示该k个电压档位中的第k个电压档位,trx1 表示该k个读时序裕量中的第k个读时序裕量,k=1,

,k;该写优化电压通过以下公式确定:其中vtx_best表示该写优化电压, vk表示该k个电压档位中的第k个电压档位,ttx1表示该k个写时序裕量中的第k个写时序裕量。
[0014]
结合第一方面,在第一方面的一种可能的实现方式中,该k个读裕量为k个读电压裕量,该k个写裕量为k个写电压裕量,该k个读电压裕量与k个数据锁存信号dqs 延时档位一一对应,该k个写电压裕量与该k个dqs延时档位一一对应,该读优化电压为该k个读电压裕量的算数平均值,该写优化电压为该k个写电压裕量的算数平均值。
[0015]
结合第一方面,在第一方面的一种可能的实现方式中,该优化参数包括读优化dqs 时序优化参数和写优化dqs时序优化参数,该每个待优化通道的训练数据包括读方向训练数据和写方向训练数据,该根据该至少一个待优化通道中的每个待优化通道的训练数据,确定该每个待优化通道的优化参数,包括:根据该读方向训练数据,确定该读优化 dqs时序优化参数,该读方向训练数据包括通过读方向时序训练得到的左边界和右边界,该读优化dqs时序优化参数用于调整dqs的延迟线至第一中心位置,该第一中心位置为该通过读方向时序训练得到的左边界和右边界的平均值;根据该写方向训练数据,确定该写优化dqs时序优化参数,该写方向训练数据包括通过写方向时序训练得到的左边界和右边界,该写优化dqs时序优化参数用于调整dqs的延迟线至第二中心位置,该第二中心位置为该通过写方向时序训练得到的左边界和右边界的平均值。
[0016]
上述方案中通过调整dqs信号的延迟线的位置,可以达到优化时序裕量的目的,使得接收端信号的时序裕量有效宽度最大、建立时间和保持时间裕量最大,从而满足规格要求,避免读写数据时出现误码,导致数据丢失。
[0017]
第二方面,本技术实施例提供一种电子设备,该电子设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
[0018]
第三方面,本技术实施例提供一种固态硬盘,包括:ssd控制器,该ssd控制器通过非易失性闪存接口总线与闪存耦合,该ssd控制器还用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
[0019]
第四方面,本技术实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
[0020]
第五方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质
存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
[0021]
第六方面,本技术实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
[0022]
图1示出了本技术实施例一种可能的应用场景的示意图。
[0023]
图2示出了闪存控制器与nand flash颗粒的示意图。
[0024]
图3是dqs-n和dqs-p的示意图
[0025]
图4是写参考电压的示意图。
[0026]
图5是如图1所示的电子设备中的nand flash颗粒的示意图。
[0027]
图6是根据本技术实施例提供的一种优化闪存颗粒的方法的示意性流程图。
[0028]
图7是闪存控制器与die的连接示意图。
[0029]
图8是时序裕量测试流程图。_
[0030]
图9是闪存控制器的示意图。
[0031]
图10是电压裕量测试的示意性流程图。
[0032]
图11是根据本技术实施例提供的电压裕量优化的示意性流程图。
[0033]
图12是根据本技术实施例提供的时序裕量优化的示意性流程图。
[0034]
图13是根据本技术实施例提供的一种优化闪存颗粒的方法的示意性流程图。
[0035]
图14是根据本技术实施例提供的一种电子设备的示意性结构框图。
具体实施方式
[0036]
下面将结合附图,对本技术中的技术方案进行描述。
[0037]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/ 或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c 中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0038]
为了便于本领域技术人员更好地理解本技术的技术方案,首先对本技术技术方案涉及到的应用场景和一些相关概念进行介绍。
[0039]
图1示出了本技术实施例一种可能的应用场景的示意图。如图1所示,固态硬盘 (solid-state disk,ssd)100中包括ssd控制器110和nand型闪存(nand flash)130。
[0040]
ssd控制器110中包括主机接口控制器111,处理器112和闪存控制器113。主机接口控制器111、处理器112和闪存控制器113通过总线114相连。可以理解的是,ssd控制器除了如图1所示的主机接口控制器111、处理器112和闪存控制器113以外,还可以包括其他模块,例如缓存控制器、纠错码(error correcting code,ecc)模块等。
[0041]
主机接口控制器(host interface controller)也可以称为前端。前端是负责主
机和ssd 通信的接口,命令和数据传输通过前端总线流向或流出ssd。主机可以是计算机、手机、基站、行车电脑(也可以称为电子控制单元(electronic control unit,ecu))等。前端接口可以是高速串行计算机扩展总线标准(peripheral component interconnect express,pcie) 接口、小型串行高级技术附件(mini serial advanced technology attachment,msata)接口、 m.2(或称下一代模组(next generation form factor,ngff))接口或者其他用户自行定义的接口。
[0042]
处理器112可以包括一颗或者多颗中央处理器(central processing unit,cpu)核。处理器112负责运算、系统调度等功能。处理器112中除了cpu核以外,还可以有一些外围模块,例如通用异步收发传输器(universal asynchronous receiver/transmitter,uart)、通用型之输入输出(general-purpose input/output,gpio)模块、温度传感器、定时器等。
[0043]
闪存控制器113负责管理数据向nand flash 130写入或者读取。闪存控制器113通过nfi总线120与nand flash 130相连。
[0044]
下面结合图2对闪存控制器113进行介绍。
[0045]
图2示出了闪存控制器与nand flash颗粒的示意图。如图1所示的nand flash 130 中包括多个nand flash颗粒。图2所示的nand flash颗粒131可以是nand flash 130 包括多个nand flash颗粒中的任一个nand flash颗粒。
[0046]
如图2所示,闪存控制器113与nand flash颗粒131通过nfi总线120连接。nfi 总线120中包括多条数据信号线(例如图2中的数据信号线l0至l7)和多条时序西好像 (如图1中的时序信号线ls-p和ls-n)。
[0047]
数据信号线l0至数据信号线l7可以并行传输8个数据信号(data signal,dq)。例如,数据信号线l0可以传输dq0,数据信号线l1可以传输dq1,
……
,数据信号线l7 可以传输dq7。应理解,dq为周期性的数字信号,因此能够承载数据。例如,dq在一个周期内可以传输1比特(bit)数据,其中,在一个低电平的周期内,可以传输1bit数据“0”,在一个高电平的周期内,可以传输1bit数据“1”。由于数据信号线l0至数据信号线l7可以并行传输8个dq,因此在一个周期内,数据信号线l0至数据信号线l7共传输8bit数据。
[0048]
可以理解,由于dq为数字信号,dq的接收端需要借助于与dq同周期的时钟信号才能正确区分dq的周期,从而正确识别dq的电平状态,进而正确获取dq所承载的数据。有鉴于此,nfi总线120中还可以包括时序信号线ls-n和时序信号线ls-p,时序信号线ls-n和时序信号线ls-p可以传输数据选通脉冲信号(data strobe signal,dqs)。
[0049]
具体来说,时序信号线ls-n可以传输dqs-n,时序信号线ls-p可以传输dqs-p。其中,dqs-n和dqs-p为反相信号,示例性的,dqs-n和dqs-p可以如图3所示。dqs 包括dqs-n和dqs-p,dqs可以作为与dq对应的时钟信号,与dq具有相同的发送端和接收端,可以触发dq的接收端识别dq的电平状态。为了便于表述,本技术实施例接下来以dqs代指dqs-n和dqs-p。
[0050]
需要指出的是,通过nfi总线120能够实现闪存控制器113与nand flash颗粒131 之间双向的数据传输。例如,在闪存控制器113向nand flash颗粒131写入数据的过程中,可以由闪存控制器113作为dqs和dq的发送端,由nand flash颗粒131作为dqs 和dq的接收端。在闪存控制器113从nand flash颗粒131读取数据的过程中,可以由nand flash颗粒131作为dqs和dq的发送端,由闪存控制器113作为dqs和dq的接收端。
[0051]
为了便于表述,本技术实施例接下来以写dq和写dqs分别表示闪存控制器113向 nand flash颗粒131写入数据的过程中,闪存控制器113向nand flash颗粒131发送的 dq和dqs;以及,以读dq和读dqs分别表示闪存控制器113从nand flash颗粒131 读取数据的过程中,nand flash颗粒131向闪存控制器113发送的dq和dqs。其中,写dq包括写dq0至写dq7,读dq包括读dq0至读dq7。
[0052]
接下来,分别对写入数据和读取数据的具体实现进行说明:
[0053]
场景一:闪存控制器113向nand flash颗粒131写入数据
[0054]
处理器110可以调用闪存控制器113向nand flash颗粒131中写入数据。处理器110 调用闪存控制器113的具体实现可以参考现有技术,本技术实施例对此并不多作限制。
[0055]
闪存控制器113在处理器112的调用下,可以向nand flash颗粒131写入数据。具体来说,闪存控制器113可以通过数据信号线l0至数据信号线l7向nand flash颗粒131 发送写dq0至写dq7,其中,闪存控制器113所发送的写dq0至写dq7可以承载需要写入nand flash颗粒131的目标写入数据。
[0056]
在闪存控制器113向nand flash颗粒131写入数据的过程中,闪存控制器113还会向nand flash颗粒131发送写dqs,写dqs可以触发nand flash颗粒131识别写dq0 至写dq7的电平状态,nand flash颗粒131进而可以根据识别到的电平状态存储写dq0 至写dq7所承载的数据,从而实现了向nand flash颗粒131写入数据。
[0057]
一般来说,在闪存控制器113向nand flash颗粒131发送的写dqs中,写dqs-n 与写dqs-p之间的交叉点(如图3所示)可以作为触发nand flash颗粒131识别写dq 的电平状态的触发点。也就是说,当nand flash颗粒131确定接收到的写dqs处于交叉点时,nand flash颗粒131可以识别当前写dq0至写dq7的电平状态,从而可以将写 dq0至写dq7所承载的目标写入数据写入nand flash颗粒131。
[0058]
例如,目标写入数据为11010011,则对应于写dqs中的同一个交叉点,此时的写dq0 至写dq7分别承载的数据为:写dq0可以承载“1”,写dq1可以承载“1”,写dq2 可以承载“0”,写dq3可以承载“1”,写dq4可以承载“0”,写dq5可以承载“0”,写dq6可以承载“1”,写dq7可以承载“1”。
[0059]
nand flash颗粒131在确定接收到的写dqs处于交叉点时,可以识别接收到的写 dq0至写dq7的电平状态。如上例中,写dq0为高电平(承载“1”),写dq1为高电平(承载“1”),写dq2为低电平(承载“0”),写dq3为高电平(承载“1”),写dq4为低电平(承载“0”),写dq5为低电平(承载“0”),写dq6为高电平(承载“1”),写dq7为高电平(承载“1”)。nand flash颗粒131进而可以根据识别到的写dq0至写dq7的电平状态,存储目标写入数据“11010011”。
[0060]
场景二:闪存控制器113从nand flash颗粒131读取数据
[0061]
处理器110可以调用闪存控制器113从nand flash颗粒131中读取数据。处理器110 调用闪存控制器113的具体实现可以参考现有技术,本技术实施例对此并不多作限制。
[0062]
闪存控制器113在处理器110的调用下,可以指示nand flash颗粒131向闪存控制器113发送目标读取数据,从而使闪存控制器113读取nand flash颗粒131中的目标读取数据。其中,闪存控制器113指示nand flash颗粒131的具体实现可以参考现有技术,本技术实施例对此并不多作限制。
[0063]
nand flash颗粒131可以通过数据信号线l0至数据信号线l7向闪存控制器113发
送读dq0至读dq7,该读dq0至读dq7可以承载发送给闪存控制器113的目标读取数据。nand flash颗粒131在向闪存控制器113发送读dq0至读dq7时,nand flash颗粒131还会向闪存控制器113发送读dqs。闪存控制器113可以根据读dqs识别读dq0 至读dq7的电平状态,并根据识别到的电平状态获取读dq0至读dq7所承载的目标读取数据,从而实现了从nand flash颗粒131读取数据。
[0064]
读dqs以及读dq0至读dq7的具体实现类似于上述场景一,对此不再赘述。区别在于,在nand flash颗粒131向闪存控制器113发送的读dqs中,通常可以由相邻的两个交叉点之间的中间点作为触发闪存控制器113识别读dq0至读dq7的电平状态的触发点。也就是说,当nand flash颗粒131确定接收到的读dqs处于中间点时,闪存控制器 113可以识别当前读dq0至读dq7的电平状态,以获取读dq0至读dq7所承载的目标读取数据。
[0065]
由以上场景一和场景二可见,闪存控制器113与nand flash颗粒131之间是否能够准确传输数据,与同向传输的dqs和dq之间的相对时序位置是否对齐息息相关。其中,同向传输的dqs和dq可以理解为读dqs和读dq,也可以理解为写dqs和写dq。
[0066]
以图3所示的写dqs和写dq为例,该写dq可以是写dq0至写dq7中的任一写 dq。写dqs的交叉点作为触发点,该交叉点对应的写dq的周期是指该交叉点发生的时刻所落在的哪个写dq周期。由图3可见,写dqs的触发点(交叉点)可以将与该触发点对应的写dq的周期分为两部分,在触发点之前的部分为建立(setup)时间,触发点之后的部分为保持(hold)时间。假设nand flash颗粒131接收到的任一个写dq周期的起始时间点为t1,该写dq周期的结束时间点为t2,在t1与t2之间,nand flash颗粒131 接收到的写dqs处于触发点的时间点为t0。在此情况下,t1至t0之间的时间段可以称为建立时间,t0至t2之间的时间段可以称为保持时间。
[0067]
写dq的建立时间充足,有利于提高数据传输的准确性。具体来说,由于写dq为数字信号,因此写dq的电平状态往往是变化的,即在任一周期内写dq既可能是低电平,也可能是高电平。在相邻的两个周期之间,写dq的电平状态既可能保持不变,也可能由低电平变为高电平,还可能由高电平变为低电平。
[0068]
通常,高电平和低电平是相对于参考电压而言的,即若写dq的电平低于参考电压,则写dq为低电平,若写dq的电平高于参考电压,则写dq为高电平。当写dq的电平状态发生变化时,往往需要一定的时延才能完成电平状态切换。示例性的,如图3所示,写dq的电平在tmin和tmax时到达参考电压。
[0069]
以前一周期的低电平切换为当前周期的高电平为例,若建立时间不足,如t0位于t1 与tmin之间,则在t0时写dq的电平有可能尚未完全升至大于参考电压的高电平,此时 nand flash颗粒131便有可能误以为是写dq在当前周期为低电平。也即,当前周期的写dq本应该是高电平,却因为t0位于t1与tmin之间且电平没有完全上升至大于参考电压而被误识别为低电平,进而使写入nand flash颗粒131的数据出现错误。因此,为了保证闪存控制器113与nand flash颗粒131之间数据传输的准确性,需要确保建立时间足够长。
[0070]
写dq的保持时间充足,也有利于提高数据传输的准确性。具体来说,nand flash 颗粒131需要一定的时延才能识别出写dq的电平状态。以当前周期的高电平切换为下一周期的低电平为例,在t0时nand flash颗粒131开始识别写dq的电平状态。若保持时间不足,如t0位于tmax与t2之间,则在nand flash颗粒131识别写dq的电平状态期间,写dq的电平有
可能下降至低于参考电压(写dq在下一周期为低电平),使nandflash颗粒131误将当前周期的电平识别为低电平,进而使写入nand flash颗粒131的数据出现错误。也就是说,写dq在当前周期的电平本应当是高电平,却因为t0位于tmax 与t2之间且电平下降至低于参考电压而被误以为是低电平。因此,为了保证闪存控制器 113与nand flash颗粒131之间数据传输的准确性,需要确保保持时间足够长。
[0071]
综上,为了提高闪存控制器113与nand flash颗粒131之间数据传输的准确性,需要写dq的保持时间和建立时间皆具有较长的时长。当写dq的保持时间或建立时间的时长不足时,便会使闪存控制器113与nand flash颗粒131之间的数据传输的准确性降低,误码率提高。
[0072]
一般来说,闪存控制器113和nand flash颗粒131中参考电压的大小相同。也就是说,对于图3所示的写dqs与写dq,tmin与t1之间的时间间隔也可以称为nand flash 颗粒131所适用的最小建立时间,tmax与t2之间的时间间隔也可以称为内存芯片t2所适用的最小保持时间。
[0073]
在一个写dq的周期内,写dqs的建立时间与nand flash颗粒131所适用的最小建立时间之间的差值可以称为写dq的建立时间的时序裕量,写dqs的保持时间与nandflash颗粒131所适用的最小保持时间之间的差值可以称为写dq的保持时间的时序裕量。写dq的建立时间的时序裕量与保持时间的时序裕量中的最小值可以理解为写dq的时序裕量。例如图3中,写dq的时序裕量为t1与tmin之间的差值,以及tmax与t2之间的差值之间的最小值。
[0074]
一般来说,tmin和tmax之间的时间间隔主要由nand flash颗粒131的性能决定。也就是说,对于闪存控制器113而言,颗粒建立时间的要求和保持时间的要求是由颗粒的性能决定的,不可调,时序裕量是可以通过时序训练来调整到最优的。通过时序训练,闪存控制器113可以将写dqs的交叉点对应的时间点t0调节至tmin和tmax的中间位置,即写dq的建立时间的时序裕量与保持时间的时序裕量相等,因此可以使写dq的时序裕量达到最大值,从而可以从时序裕量的角度最优化闪存控制器113向nand flash颗粒131 传输数据的准确性。
[0075]
基于相同的道理,在闪存控制器113从nand flash颗粒131读取数据的过程中,nandflash颗粒131向闪存控制器113发送的读dq的保持时间与闪存控制器113所适用的最小保持时间之间的差值也可以称为读dq的保持时间的时序裕量。读dq的建立时间与闪存控制器113所适用的最小建立时间之间的差值也可以称为读dq的建立时间的时序裕量。读dq的时序裕量可以理解为读dq的保持时间的时序裕量和建立时间的时序裕量的最小值。当nand flash颗粒131向闪存控制器113发送的读dq中保持时间的时序裕量和建立时间的时序裕量相等时可以使读dq的时序裕量达到最大值。在此情况下,可以从时序裕量的角度最优化nand flash颗粒131向闪存控制器113传输数据的准确性。
[0076]
为了提高读dq和写dq的时序裕量,从而提高闪存控制器113和nand flash颗粒 131之间数据传输的准确性,往往需要将同向传输的dq和dqs的相对时序位置对齐,该过程也常被称为内存训练。
[0077]
本技术实施例中,“对齐”可以理解为同向传输的dqs和dq中,dq的保持时间的时序裕量和建立时间的时序裕量相等,或dq的保持时间的时序裕量和建立时间的时序裕量相差不大,使dq具有较为充足的保持时间的时序裕量和建立时间的时序裕量。dq的建立时间的
时序裕量是相对于接收端所适用的最小建立时间而言的,dq的保持时间的时序裕量也是相对于接收端所适用的最小保持时间而言的,也就是说,“对齐”可以使dq的建立时间不小于接收端所适用的最小建立时间,使dq的保持时间不小于接收端所适用的最小保持时间。
[0078]
其中,接收端既可以是nand flash颗粒131,也可以是闪存控制器113。接收端所适用的最小建立时间和最小保持时间可以是根据接收端的结构、性能等因素得到的。若dq 的建立时间小于接收端所适用的最小建立时间,或者dq的保持时间小于接收端所适用的最小保持时间,则会导致接收端无法正确识别dq承载的数据。
[0079]
此外,如上所述高电平和低电平的判断是与参考电压进行比较判断得到的。如图4所示,从t0开始,写电平高于写参考电压vref,在此情况下,nand flash颗粒131可以确定写电平是高电平,从而判断写入数据为1;从t1开始,写电平低于写参考电压vref,在此情况下,nand flash颗粒131可以确定写电平是低电平,从而判断写入数据为0;从t2 开始,写电平高于写参考电压vref,在此情况下,nand flash颗粒131可以确定写电平是高电平,从而判断写入数据为1。
[0080]
假设写参考电压vref大于写电平的最大值(即图4所示的v1),那么nand flash 颗粒131会认为写电平是低电平。在此情况下,nand flash颗粒131会判断所有的写入数据都是为0。或者,假设写参考电压vref小于写电平的最小值(即图4所示的v2),那么nand flash颗粒131会认为写电平是高电平。在此情况下,nand flash颗粒131会判断所有的写入数据都是为1。
[0081]
写方向的电压裕量为参考电压与写电平的差。如图4所示的vref与v2的差为写方向的电压裕量。
[0082]
基于相同的道理,在闪存控制器113从nand flash颗粒131读取数据的过程中,参考电压与读电平的差为读方向电压裕量。
[0083]
图5是如图1所示的电子设备中的nand flash颗粒的示意图。
[0084]
闪存(flash memory)可以分为nor型闪存(nor flash)和nand型闪存(nandflash)。相对于nor flash而言,nano flash具有容量大,价格低廉,读写速度都较快等优点,因而得到广泛应用。目前,nand flash可以应用于固态硬盘(solid-state disk,ssd)、安全数码(secure digital,sd)卡、插卡(add in card,aid)等。nand flash也可以作为手机、平板电脑等电子设备内的存储介质。
[0085]
nand flash的结构从大到小可以分为设备(device)、对象(target)、晶粒(die)、平面(plane)、块(block)、页面(page)和单元(cell)。
[0086]
如图5所示的nand flash颗粒131就是一个device。device是封装好的nand flash 单元,也可以称为封装(package)、闪存芯片或者nand flash芯片等。一个存储设备 (例如ssd)中可以有一个或多个device,一个device可以包含一个或多个target。一个 target可以包含一个或多个die。
[0087]
例如,如图5所示的nand flash颗粒131中包括两个target,分别为target 510和target 520。每个target包括4个die,其中target 510中包括die 511,die 512,die 513和die 514,target 520中包括die 521,die 522,die 523和die 524。
[0088]
die也可以称为逻辑单元(logical unit,lun)。一个die中可以包括一个或多个plane。每个plane可以由大量的block页组成,每个block页都是由大量的page页组成,每个
page 又是由大量的cell构成。
[0089]
闪存的通道(channel)数量直接反映了固态硬盘的并发读写能力。一条通道上可以有一个或多个die。每个device可以支持一个或多个通道。
[0090]
例如,如图5所示的nand flash颗粒131还包括输入输出接口501,通道502,通道 503,通道504和通道505,其中通道502与die 511和die 512相连,通道503与die 513 和die 514相连,通道504与die 521和die 522相连,通道505与die 523和die 524相连。
[0091]
nand flash颗粒131的输入输出接口501可以通过nfi总线与闪存控制器相连,接收来自于闪存控制器的命令,根据接收到的命令读取保存在nand flash颗粒131中的数据、向nand flash颗粒131写入数据,或者删除nand flash颗粒131中的数据等。例如, nand flash颗粒131接收到的读命令是读取保存在die 511中的数据,那么可以通过通道 502将保存在die 511中的数据读出,然后将读取到的数据发送至闪存控制器。又如,nandflash颗粒131接收到的写命令是向die 524中写入数据,那么可以通过通道505将数据写入到die 524中。
[0092]
本技术实施例对nand flash颗粒的数据接口并不限定,可以是sdr、nv-ddr、 nv-ddr2或者nv-ddr3。
[0093]
nfi总线的理想数据宽度是指在理想传输环境下,传输单次数据所占用的时间。理想传输环境是指数据传输过程中不考虑传输损耗。例如,在nfi总线的传输速率为400兆次 /秒(million times per second,mt/s)的情况下,每次数据传输所占用时间为400
×
108分之一秒,即每次数据传输对应的理想数据宽度为2.5ns。
[0094]
nfi总线的理想数据宽度与闪存颗粒的性能、容量、速率规格等相关。nfi总线的传输速率与nfi总线的理想数据宽度呈倒数关系。因此,随着nfi总线传输速率的提高, nfi总线理想数据宽度会相应降低。例如,如果nfi总线传输速率为400mt/s,传输速率,那么该nfi总线的理想数据宽度为2.5ns;如果nfi总线传输速率为800mt/s,传输速率,那么该nfi总线的理想数据宽度为1.25ns;如果nfi总线传输速率为1200mt/s,传输速率,那么该nfi总线的理想数据宽度为0.83ns;如果nfi总线传输速率为1600mt/s,传输速率,那么该nfi总线的理想数据宽度为0.625ns。
[0095]
如图3所示,t2到t1的差是数据的有效宽度。nfi总线理想数据宽度变小就意味着t2 到t1的差变小。相应的,t1与tmin之间的差值,以及tmax与t2之间的差值也会随之变小,这就导致时序裕量变小。此外,在实际数据传输过程中,发送端以理想数据宽度发送的数据经过传输通道衰减后,使得接收端实际获得的数据宽度变小。在此情况下,nfi总线更易受温度、电压等外界因素影响,导致nfi总线通道出现可靠性问题,造成数据传输出现问题。如数据传输误码问题。
[0096]
下面对有效宽度和裕量有效宽度的概念进行说明。
[0097]
该有效宽度可以定义为:发送端理想宽度的数据在经过传输通道衰减后达到接收端时,接收端实际获得的信号宽度。该裕量有效宽度是指预设数据在发送端的理想信号宽度经过传输到达接收端时,被该接收端正确采样的信号宽度。相比于有效宽度,该裕量有效宽度除去了数据建立时间和数据保持时间后剩余的时间。
[0098]
例如,在一个dqs周期内能够传输总共n个比特,比如以传输速率400mbps,即每秒传输4
×
108个比特,那么传输每个比特所占用的时间是1s/(4
×
108)=2.5ns,即每个比特
所对应的理想信号宽度为2.5ns,经过传输通道达到接收端后,理想信号宽度缩小,被接收端实际正确接收的有效信号宽度为2ns。
[0099]
其中,bps是比特率(bit rate)的单位,该比特率是指信号(用数字二进制位表示)通过系统(设备、无线电波或导线)处理或传送的速率,即单位时间内处理或传输的数据量。单位“比特每秒”(bit/s或bps)。在通信领域可以用于表示连接速度、传输速度、信道容量、最大吞吐量和数字带宽容量等,本技术可用于表示控制器和nand flash之间用于传输的总线速率。
[0100]
另外,该“裕量有效宽度”也可以称为时序裕量的有效宽度,相当于前述的“时序裕量”区别仅在于本技术为了对“时序裕量”进行衡量,所以定义一个“裕量有效宽度”的概念。其中,“裕量”可以翻译为“margin”,本技术中“margin”可以指“裕量有效宽度”。因此,除非特殊说明,本技术实施例中的时序裕量都可以理解为时序裕量的有效宽度。
[0101]
本技术实施例提供一种优化闪存颗粒的方法。该方法在闪存颗粒的业务运行过程中对电压裕量和时序裕量进行优化,从而降低数据传输误码率,提高闪存颗粒的可靠性。
[0102]
只要设置有nand flash颗粒的设备具有如图2所示的结构都可以应用本技术的技术方案。换句话说,本技术的基础方案除了可以应用于如图1所示的ssd以外,也可以应用于其他通过nfi总线与nand flash颗粒通信的设备,例如插卡(add in card,aic)、安全数码卡(secure digital memory card,sd card)、使用nand flash颗粒作为存储介质的电子设备(例如手机、平板电脑、数码相机、ecu等)。
[0103]
图6是根据本技术实施例提供的一种优化闪存颗粒的方法的示意性流程图。
[0104]
如图6所示,闪存颗粒在完成上电初始化、时序训练和电压训练后,开始业务运行阶段(即可以读取保存在闪存颗粒中的数据、向闪存颗粒写入数据或者删除闪存颗粒中的数据等)。在业务运行过程中,确定是否满足触发条件;如果不满足触发条件,则继续进行监控;如果满足触发条件,那么选择闪存颗粒的一个或多个通道挂起;待所选通带中的 die变为空闲(idle)态后,对选择的通道进行裕量测试,以确定选择的通道的裕量是否满足需求;如果被选择的通道的裕量不满足需求,则可以对这些通道进行优化;如果被选择的通道的裕量满足需求,那么确定是否该闪存颗粒的所有通道都已经进行裕量测试;如果没有,则继续对剩余的通道进行裕量测试;如果所有通道都已经进行裕量测试,那么继续监控是否满足触发条件。
[0105]
下面,结合如图5所示的nand flash颗粒131,对如图6所示的本技术实施例提供的优化闪存颗粒的方法的示意性流程图进行介绍。
[0106]
假设nand flash颗粒131在t0时刻上电,t1时刻完成上电初始化,t2时刻完成时序训练和电压训练。那么从t2时刻开始就可以认为nand flash颗粒131处于业务运行阶段。换句话说,从t2时刻开始,可以对nand flash颗粒131进行读/写操作,或者删除nandflash颗粒131中的数据。
[0107]
在一些实施例中,可以对工作环境数据进行监测,根据监测的工作环境数据确定是否满足触发条件。工作环境数据可以包括温度和/或湿度,其中温度监测可以通过温度传感器实现,湿度监测可以通过湿度传感器实现。
[0108]
例如,可以设定一个温度上限,如果监测的温度大于该温度上限,则可以确定满足触发条件。又如,可以设定一个温度上限和一个温度下限,如果该监测的温度大于该温度上
限或者小于该温度下限,则可以确定满足触发条件。
[0109]
又如,可以设定一个温度上限和一个湿度上限,如果监测的温度和湿度同时满足对应的上限(即温度满足温度上限且湿度满足湿度上限),则可以确定满足触发条件;如果监测的温度和湿度中的至少一个不满足对应的上限(例如温度大于温度上限,但湿度小于湿度上限),则可以确定不满足触发条件。
[0110]
与温度门限相比的温度可以是温度传感器监测到的实时温度,也可以是一段时间内的温度平均值。类似的,与湿度门限相比的湿度可以是湿度监测的实时湿度,也可以是一段时间内的湿度平均值。
[0111]
在另一些实施例中,可以对nand flash颗粒131的工作参数进行监测,根据监测的工作参数确定是否满足触发条件。工作参数可以包括工作电压、数据传输量,或通道的当前状态等的一个或者多个。该工作电压可以是nand flash颗粒131的工作电压,也可以是传输数据的接口电压。
[0112]
例如,可以设定一个数据传输量下限,如果nand flash颗粒131的数据传输量小于该数据传输量下限,则可以确定满足触发条件。
[0113]
又如,如果确定nand flash颗粒131存在处于空闲状态的通道或者处于空闲状态的通道大于一个预设数量,则可以确定满足触发条件。
[0114]
在另一些实施例中,可以设置一个定时器,如果该定时器超时,那么可以确定满足触发条件。此外,可以在所有通道都完成裕量测试后,重新启动该定时器。
[0115]
在另一些实施例中,可以同时监测工作环境数据、工作参数,或定时器中的多个来确定是否满足触发条件。
[0116]
在一些实施例中,可以在监测到的多个数据同时满足对应的条件时,才确定满足触发条件。例如,同时监测存储设备温度和定时器,如果存储设备温度大于预设的温度上限且定时器超时,则可以确定满足触发条件;如果存储设备温度大于预设的温度上限但定时器未超时,则可以确定不满足触发条件。
[0117]
在另一些实施例中,可以在监测到的多个数据中的任一个数据满足对应的条件时,确定满足触发条件。例如,同时监测存储设备温度和定时器,如果存储设备温度大于预设的温度上限和/或定时器超时,则可以确定满足触发条件;如果存储设备温度小于预设的温度上限且定时器未超时,则可以确定不满足触发条件。
[0118]
在满足触发条件后,可以选择一个或多个通道挂起。
[0119]
在一些实施例中,可以随机选择挂起的通道。
[0120]
在另一些实施例中,可以根据通道的数据传输量选择挂起的通道。例如,可以先选择处于空闲态的通道,然后再选择正在执行业务读写的通道。又如,可以先选择数据传输量较低的通道,然后再选择数据业务流较高的通道。
[0121]
如果选择的挂起的通道数量小于总通道数量,那么未被选择的通道则继续正常工作。
[0122]
假设如图5所示的通道502和通道503被选择挂起。在此情况下,可以通过通道504 和通道505对die 521至die 524进行正常的读写操作。
[0123]
在通道502和通道503被挂起后,可以等待通道502和通道503对应的die的状态变为空闲态。假设die 511和die 512的状态变为空闲态,则可以对通道502进行裕量测试。在
对通道502进行裕量测试后,如果die 513和die 514处于空闲态,那么可以对通道503 进行裕量测试。
[0124]
裕量测试可以分为时序裕量测试和电压裕量测试。以通道502为例,对裕量测试进行介绍。
[0125]
在一些实施例中,对通道502进行裕量测试可以是仅对通道502进行时序裕量测试。在此情况下,如果通道502通过了时序裕量测试,那么则可以确定通道502不需要进行优化;如果通道502没有通过时序裕量测试,那么可以确定通道502是一个待优化通道。
[0126]
在另一些实施例中,对通道502进行裕量测试可以是仅对通道502进行电压裕量测试。在此情况下,如果通道502通过了电压裕量测试,那么可以确定通道502不需要进行优化;如果通道502没有通过电压裕量测试,那么可以确定通道502是一个待优化通道。
[0127]
在另一些实施例中,对通道502进行裕量测试可以是对通道502进行时序裕量测试和电压裕量测试。
[0128]
在通道502既进行时序裕量测试又进行电压裕量测试的情况下,判断通道502是否通过裕量测试的方式可以由多种。
[0129]
例如,在一种实现方式中,只有两种测试都通过,才可以确定通道502通过了裕量测试。换句话说,如果通道502没有通过时序裕量测试或者通道502没有通过电压裕量测试,那么可以确定通道502没有通过裕量测试。
[0130]
又如,在另一种实现方式中,只要通过另种裕量测试中的一种,就可以确定通道502 通过了裕量测试。换句话说,如果通道502通过时序裕量测试或者通道502通过电压裕量测试,那么可以确定通道502通过裕量测试。在此情况下,可以依次执行两种裕量测试,如果先执行的裕量测试通过,那么可以无需执行另一种裕量测试。例如,先对通道502进行时序裕量测试,如果通道502通过时序裕量测试,那么可以直接确定通道502通过裕量测试,不需要继续对通道502进行电压裕量测试;如果通道502没有通过时序裕量测试,那么再对通道502进行电压裕量测试;如果通道502通过了电压裕量测试,那么可以确定通道502通过了裕量测试;如果通道502没有通过电压裕量测试,那么可以确定通道502 没有通过裕量测试。
[0131]
下面结合图7至图10对时序裕量测试和电压裕量测试进行介绍。
[0132]
图7是闪存控制器与die的连接示意图。如图7所示的输入输出接口701是闪存控制器的输入输出接口。如图7所示的输入输出接口是die的输入输出接口。
[0133]
如图7所示,输入输出接口701中包括分压模块702。利用分压模块702可以实现时序裕量的测试。
[0134]
图8是时序裕量测试流程图。假设分压模块702可以将参考电压vref的档位设置为n 个(n为大于或等于2的正整数)。该n个档位的电压可以分别用v1、v2、
……
、vn表示。
[0135]
801,将vref的档位设置为v1。
[0136]
802,确定vref的当前档位是否小于或等于vn。若vref的当前档位小于或等于参考电压的最大档位vn,那么继续执行后续的时序裕量测试步骤。
[0137]
803,向nand flash颗粒写入测试数据。
[0138]
可选的,在向nand flash颗粒写入测试数据时,可以以较低速率写入。这样可以减少写入时出错的概率。例如,表1为本技术实施例中nfi总线工作模式与速率的对应关系。不
同的工作模式对应不同的总线速率。
[0139]
表1
[0140]
模式速率(mpbs)sdr10~50nv-ddr40~200nv-ddr266~800nv-ddr366~1200
[0141]
例如,nv-ddr工作模式对应的总线速率为40~200兆比特每秒(million bit per second, mbps),其对应的低速率可以为40mbps或者48mbps等。
[0142]
向nand flash颗粒写入的数据可以是容易出现传输错误的数据,例如0x5aa55aa5,或者0xa55aa55a等。该测试数据可以写入到nand flash颗粒中的缓存寄存器(catachregister)。将测试数据写入nand flash颗粒的缓存寄存器而不是更加深层的其他区域(例如数据寄存器或者nand flash阵列(nand flash array))可以减少数据在nand flash 颗粒内部传输发生错误的概率。
[0143]
804,进行读方向时序裕量测试,记录读方向时序裕量的有效宽度。
[0144]
在向nand flash颗粒写入测试数据后,可以读取步骤803中写入的测试数据。在读取测试数据的过程中记录dq信号的读方向有效眼宽,得到当前档位的读方向时序裕量的有效宽度trx1。
[0145]
805,进行写方向时序裕量测试,记录写方向时序裕量的有效宽度。
[0146]
在完成读方向时序裕量测试后,以正常速率写入测试数据,以执行写方向时序裕量测试。在写入测试数据的过程中记录dq信号的写方向有效眼宽,得到当前档位的写方向时序裕量的有效宽度ttx1。
[0147]
806,将vref的档位设置为下一档位,即vref=v
n 1
,继续执行读方向时序裕量测试和写方向时序裕量测试,依次得到n个档位下的读方向时序有效宽度和n个档位下的写方向时序有效宽度。
[0148]
在得到n个档位下的读方向时序有效宽度和n个档位下的写方向时序有效宽度后,可以根据n个档位下的读方向时序有效宽度和n个档位下的写方向时序有效宽度确定是否通过时序裕量测试。为了便于描述,可以将n个档位下的读方向时序有效宽度称为n 个读时序有效宽度,n个档位下的写方向时序有效宽度称为n个写时序有效宽度。
[0149]
在一些实施例中,如果n个读时序有效宽度和n个写时序有效宽度都通过时序裕量测试,那么可以认为该通道通过时序裕量测试。换句话说,如果n个读时序有效宽度和n 个写时序有效宽度中的任一个没有通过裕量测试,那么就可以认为该通道没有通过时序裕量测试。
[0150]
在一些实施例中,n个档位下的每个档位的读方向时序有效宽度都有一个对应的阈值范围。例如,假设n个档位下每个档位的读方向时序有效宽度分别为trx1、trx2、
……
、 trxn,其中,trx1的阈值范围为[th1_trx1,th2_trx1],trx2的阈值范围为[th1_trx2, th2_trx2],
……
,trxn的阈值范围为[th1_trxn,th2_trxn],如果某个档位下的读方向的时序有效宽度在对应的阈值范围内,那么可以认为该档位的读方向的时序有效宽度可以通过时序裕量测试。类似的,n个档位下的每个档位的写方向时序有效宽度都有一个对应的阈值范
围。例如,假设n个档位下每个档位的写方向时序有效宽度分别为ttx1、 ttx2、
……
、ttxn,其中,ttx1的阈值范围为[th1_ttx1,th2_ttx1],ttx2的阈值范围为 [th1_ttx2,th2_ttx2],
……
,trxn的阈值范围为[th1_ttxn,th2_ttxn],如果某个档位下的写方向的时序有效宽度在对应的阈值范围内,那么可以认为该档位的写方向的时序有效宽度可以通过时序裕量测试。
[0151]
在另一些实施例中,n个档位下的每个档位的读方向时序有效宽度都有一个下限值,如果某个档位的读方向的时序有效宽度超过该档位对应的下限值,那么可以认为该档位的读方向的时序有效宽度可以通过时序裕量测试。类似的,n个档位下的每个档位的写方向时序有效宽度都有一个下限值,如果某个档位的写方向的时序有效宽度超过该档位对应的下限值,那么可以认为该档位的写方向的时序有效宽度可以通过时序裕量测试。
[0152]
在另一些实施例中,如果通过时序裕量测试的档位超过一个预设比例,那么可以认为该通道通过时序裕量测试。
[0153]
在一些实施例中,可以分别统计读方向和写方向通过裕量测试的档位比例,这两个档位比例分别与该预设比例进行比较,如果两个档位比例都超过该预设比例,那么可以认为该通道通过时序裕量测试。
[0154]
例如,假设预设比例为50%,75%的档位的读方向的时序有效宽度通过时序裕量测试, 90%的档位的写方向的时序有效宽度通过时序裕量测试。在此情况下,可以认为该通道通过时序裕量测试。
[0155]
又如,假设预设比例为50%,75%的档位的读方向的时序有效宽度通过时序裕量测试, 40%的档位的写方向的时序有效宽度通过时序裕量测试。在此情况下,可以认为该通道没有通过时序裕量测试。
[0156]
在另一些实施例中,可以统计通过时序裕量测试的总档位比例,该总档位比例超过该预设比例,那么可以认为该通道通过时序裕量测试,反之认为该通道没有通过时序裕量测试。
[0157]
例如,假设n等于10,预设比例为50%,3个档位的读方向的时序有效宽度通过时序裕量测试,8个档位的写方向的时序有效宽度通过时序裕量测试。通过时序裕量测试的总档位比例为(3 8)/(10 10)=11/20。可见,通过时序裕量测试的总档位比例大于50%,因此,可以认为该通道通过时序裕量测试。
[0158]
在另一些实施例中,可以设置两个预设阈值,该两个预设阈值可以分别称为预设时序阈值1和预设时序阈值2。在确定n个读时序有效宽度和n个写时序有效宽度后,可以确定n个读时序有效宽度的最大值(可以用max_rx表示)和n个写时序有效宽度的最大值 (可以用max_tx表示)。如果max_rx不大于预设时序阈值1,且max_tx不大于预设时序阈值2,那么可以认为该通道通过时序裕量测试;如果max_rx大于预设时序阈值1或者max_tx大于预设时序阈值2,那么可以认为该通道没有通过时序裕量测试。
[0159]
在另一些实施例中,可以确定n个读时序有效宽度和n个写时序有效宽度中的最大值,如果该最大值不大于一个预设阈值,则可以认为该通道通过时序裕量测试;如果该最大值大于预设阈值,那么可以认为该通道没有通过时序裕量测试。
[0160]
上述实施例中与预设的阈值比较的是时序有效宽度的最大值。在另一些实施例中,还可以确定时序有效宽度的平均值,比较确定的平均值和预设的阈值,确定通道是否通
过时序裕量测试。
[0161]
例如,在一些实施例中,可以统计n个读时序有效宽度的平均值(可以用avg_rx表示)和n个写时序有效宽度的平均值(可以用avg_tx表示)。如果avg_rx不大于一个预设的阈值(可以称为预设时序阈值3)且avg_tx不大于另一个预设的阈值(可以称为预设时序阈值4),那么可以认为该通道通过时序裕量测试;如果avg_rx大于预设时序阈值3或者avg_tx大于预设时序阈值4,那么可以认为该通道没有通过时序裕量测试。
[0162]
在另一些实施例中,可以统计n个读时序有效宽度和n个写时序有效宽度的平均值,如果该平均值不大于一个预设阈值,则可以认为该通道通过时序裕量测试;如果该平均值大于预设阈值,那么可以认为该通道没有通过时序裕量测试。
[0163]
图9是闪存控制器的示意图。利用如图9所示的闪存控制器中的dll/dl模块中的延迟锁相环(delay locked loop,dll)和延迟线(delay line,dl)可以实现电压裕量测试。
[0164]
图10是电压裕量测试的示意性流程图。假设如图10所示的dll/dl模块可以将dqs 的延时档位设置为n个(n为大于或等于2的正整数)。该n个档位的延时可以分别用 t1、t2、
……
、tn表示。
[0165]
1001,将dqs延时的初始档位设置为t1。
[0166]
1002,确定dqs延时的当前档位是否小于或等于tn。若dqs延时的当前档位小于或等于延时的最大档位tn,那么继续执行后续的电压裕量测试步骤。
[0167]
1003,向nand flash颗粒写入测试数据。
[0168]
与图8的时序裕量测试过程类似,也可以以较低速率向nand flash颗粒写入测试数据。测试数据也可以是容易出错的数据。写入测试数据的位置也可以是nand flash颗粒中的缓存寄存器。
[0169]
1004,进行读方向时序裕量测试,记录读方向电压裕量。
[0170]
在向nand flash颗粒写入测试数据后,可以读取写入的测试数据。在读取测试数据的过程中得到当前档位的读方向的高电平vrx1h和低电平vrx1l,确定vrx1h和vrx1l的和为当前档位的读方向的电压裕量vrx1。
[0171]
1005,进行写方向时序裕量测试,记录写方向电压裕量。
[0172]
在写入测试数据的过程中得到当前档位的写方向的高电平vtx1h和低电平vtx1l,确定vtx1h和vtx1l的和为当前档位的写方向的电压裕量vtx1。
[0173]
1006,将dqs延时的档位设置为下一档位,即t
n 1
,继续执行读方向电压裕量测试和写方向电压裕量测试,依次得到n个档位下的读方向电压裕量和n个档位下的写方向电压裕量。
[0174]
在得到n个档位下的读方向电压裕量和n个档位下的写方向电压裕量后,可以根据 n个档位下的读方向电压裕量和n个档位下的写方向电压裕量确定是否通过电压裕量测试。为了便于描述,可以将n个档位下的读方向电压裕量称为n个读电压裕量,n个档位下的写方向电压裕量称为n个写电压裕量。
[0175]
确定通道是否通过电压裕量测试的方式与确定通道是否通过时序裕量测试的方式类似。
[0176]
例如,在一些实施例中,每个电压裕量可以由一个对应的阈值范围,如果n个读电压裕量和n个写电压裕量都在对应的阈值范围内,则可以确定通道通过电压裕量测试;如果
有一个电压裕量不再对应的阈值范围内,那么可以确定该通道没有通过裕量测试。
[0177]
又如,在一些实施例中,可以将n个读电压裕量的最大值和一个预设阈值比较,将n 个写电压裕量的最大值和一个预设阈值比较,根据比较结果,确定通道是否通过裕量测试。
[0178]
又如,在另一些实施例中,与阈值比较的可以是电压裕量的平均值。
[0179]
确定通道是否通过电压裕量测试的具体实现方式可以参考确定通道是否通过时序裕量测试的描述,为了简洁,在此就不再赘述。
[0180]
假设通道502通过了裕量测试,通道503没有通过裕量测试,那么可以确定通道503 是一个待优化通道。在此情况下,不需要对通道502进行优化,需要对通道503进行优化,下面结合图11至图12对通道优化过程进行介绍。
[0181]
通道优化可以分为电压裕量优化和时序裕量优化。
[0182]
在一些实施例中,对待优化通道(例如通道503)可以同时进行电压裕量优化和时序裕量优化。
[0183]
在另一些实施例中,对待优化通道(例如通道503)可以只进行电压裕量优化,或者,只进行时序裕量优化。
[0184]
例如,如果通道503通过了电压裕量测试,但没有通过时序裕量测试,那么可以对通道503进行时序裕量优化。
[0185]
又如,如果通道503通过了时序裕量测试,但没有通过电压裕量测试,那么可以对通道503进行电压裕量优化
[0186]
图11是根据本技术实施例提供的电压裕量优化的示意性流程图。
[0187]
1101,获取k个读裕量和k个写裕量,该k个读裕量与k个档位一一对应,该k个写裕量与该k个档位一一对应,k为大于1的正整数。
[0188]
如上所述,在进行时序裕量测试的过程中,可以提取n个电压档位下的读方向时序裕量的有效宽度和n个档位下的写方向时序裕量的有效宽度。
[0189]
在一些实施例中,可以从该n个电压档位中选取k个电压档位(k为大于1且小于 n的正整数),以及该k个电压档位对应的读方向时序裕量的有效宽度和写方向时序裕量的有效宽度。所选取的k个电压档位就是步骤1101中的k个档位,k个电压档位对应的读方向时序裕量的有效宽度就是步骤1101中的k个读裕量,k个电压档位对应的写方向时序裕量的有效宽度就是步骤1101中的k个写裕量。
[0190]
从n个电压档位中选取k个电压档位的方式可以有多种。例如,可以随机选取k个电压档位。又如,可以选择读方向时序裕量的有效宽度最大的k个读方向时序裕量的有效宽度对应的k个电压档位,其中k可以是一个预设值或者根据一个预设比例计算出来的正整数。又如,可以选择写方向时序裕量的有效宽度最大的k个写方向时序裕量的有效宽度对应的k个电压档位,其中k可以是一个预设值或者根据一个预设比例计算出来的正整数。
[0191]
在另一些实施例中,该k个档位可以与该n个电压档位相同。换句话说,步骤1101 可以直接使用时序裕量测试中得到的n个电压档位以及每个电压档位的读方向时序裕量的有效宽度和写方向时序裕量的有效宽度。在此情况下k的取值和n相同。
[0192]
如果k个档位是k个电压档位,那么该k个读裕量也可以称为k个读时序裕量,该 k个写裕量也可以称为k个写时序裕量。
[0193]
如上所述,在进行电压裕量测试的过程中,可以获取n个dqs的延时档位下的读方
k=1,

,k。
[0212]
上述实施例中,在确定读优化电压和写优化电压的过程中都是使用了步骤1101中确定到的所有读裕量和写裕量。在另一些实施例中,确定读优化电压和写优化电压的过程中也可以使用步骤1101中确定的部分读裕量和写裕量,例如可以排除最大和最小的读裕量和写裕量后,对剩余的读裕量取平均得到读优化电压,对剩余的写裕量取平均得到写电压裕量。
[0213]
上述实施例可以优化读参考电压和写参考电压,降低闪存控制器与nand flash颗粒之间传输出错的概率,提高存储性能。
[0214]
图12是根据本技术实施例提供的时序裕量优化的示意性流程图。
[0215]
1201,向nand flash颗粒写入测试数据。
[0216]
与图8的时序裕量测试过程类似,也可以以较低速率向nand flash颗粒写入测试数据。测试数据也可以是容易出错的数据。写入测试数据的位置也可以是nand flash颗粒中的缓存寄存器。
[0217]
1202,获取dq的时序裕量有效宽度。
[0218]
1203,根据该时序裕量有效宽度确定左边界(l_boundary),以及确定右边界 (r_boundary),该左边界为所有dq的时序裕量有效宽度最小值中的最大值,该右边界为所有dq在以该左边界对齐的情况下,对应的所有时序裕量有效宽度最大值中的最小值。
[0219]
1204,根据该左边界和该右边界计算第一中心位置,该第一中心位置为读数据训练时,对齐所有dq后的最小裕量有效宽度的中心。
[0220]
其中,所述第一中心位置为所述左边界和右边界的平均值,即centring=
ꢀ‑
(l_boundary-r_boundary)/2。
[0221]
1205,调整dqs的延迟线dl至该第一中心位置,使dqs信号边沿位于dq裕量有效宽度的中心点(centring)。
[0222]
另外,该方法还包括:将第一中心位置对应的延迟线dl值赋给dqs寄存器;将每个dq的dl值赋给对应的dq寄存器,其中该每个dq的dl值是指每个dq与dqs边沿对齐所需要调整的长度,再转换成dq对应的刻度单位后的值。
[0223]
可选的,dqs的刻度与dq的刻度不同,具体地,该dqs信号的刻度值较多,比如 tap number共有1024个,单位刻度代表的时间由dqs周期确定,即将dll测量到的dqs 周期除以1024。该dq信号的刻度值较少,比如tap number共有20个,单位刻度代表的时间固定(由硬件电路精度决定),进一步地,所述刻度单位可以设置为5ps、10ps、20ps 等。
[0224]
用于调整dqs的延迟线至第一中心位置的参数可以称为读优化dqs时序优化参数。
[0225]
1206,进行写方向裕量时序训练,得到第二中心位置。该第二中心位置为写数据训练时,对齐所有dq后的最小裕量有效宽度的中心
[0226]
在做完读方向训练之后,会以正常速率写入预设数据或自定义数据,然后再发送读命令读取刚写入的数据,并执行写方向上的时序训练。
[0227]
其中,写入的预设数据或自定义数据可以与读方向上预设数据相同,也可以不相同,不申请实施例不予限制。
[0228]
写方向训练完成之后,将该第二中心位置对应的延迟线dl赋给dqs寄存器,以及将每个dq的dl值赋给对应的dq寄存器,其中该每个dq的dl值是指每个dq与dqs 边沿对齐所需
要调整的长度,再转换成dq对应的刻度单位后的值。
[0229]
用于调整dqs的延迟线至第二中心位置的参数可以称为写优化dqs时序优化参数。
[0230]
上述方法中以低速率写入训练数据,再发送读命令读取该训练数据,并执行读方向时序训练,利用nfi总线总线上各个dq的裕量有效宽度的左、右边界值,确定出读训练方向的第一中心位置,并自动调整控制器侧dq信号的延迟线,使所有dq信号的时序裕量有效宽度最大,将该dqs信号的延迟线调整至该第一中心位置,使dqs信号边沿位于 dq信号的最佳采样点。进一步通过使用正常速率写入自定义数据,再发送读命令读取刚写入的数据,并执行写方向时序训练,确定第二中心位置,再自动调整控制器的dq信号的延迟线,使所有接收的dq信号的裕量有效宽度最大,并且控制器将该dqs信号的延迟线调整至该第二中心位置,使nand flash接收端接收的dqs信号边沿位于dq信号的最佳采样点。综上所述,上述方案中通过调整dqs信号的延迟线的位置,可以达到优化时序裕量的目的,使得接收端信号的时序裕量有效宽度最大、建立时间和保持时间裕量最大,从而满足规格要求,避免读写数据时出现误码,导致数据丢失。
[0231]
确定该左边界和右边界可以通过以下三种具体的实现方式中的一种实现:
[0232]
第一种方式,以设置的预设边界范围[a,b]来确定左边界和右边界;
[0233]
第二种方式:以dqs周期的1/4为起始位置向左和向右调整dqs的位置来确定左边界和右边界;
[0234]
第三种方式:从初始刻度值开始逐渐地从左到右调整dqs位置,来确定左边界和右边界。
[0235]
图13是根据本技术实施例提供的一种优化闪存颗粒的方法的示意性流程图。
[0236]
1301,在该闪存颗粒的业务运行过程中,挂起该闪存颗粒的非易失性闪存接口nfi 总线中的n个通道,其中n为大于或等于1且小于或等于该nfi总线中的通道总数的整数。
[0237]
1302,从该n个通道中确定至少一个待优化通道。
[0238]
1303,根据该至少一个待优化通道中的每个待优化通道的训练数据,确定该每个待优化通道的优化参数。
[0239]
1304,根据该每个待优化通道的优化参数,对该每个待优化通道进行优化。
[0240]
确定待优化通道以及优化参数的具体实现方式可以参见上述实施例,为了简洁,在此就不再赘述。
[0241]
上述技术方案是在闪存颗粒运行过程中选择多个通道中的部分通道进行检测并优化。换句话说,nfi总线中的另一部分通道处于正常工作状态。因此,可以在不掉盘的情况下,实现通道的参数优化。可以减弱裕量判断标准中对物理环境和工作状态的依赖,进一步压缩裕量判断标准,将更多的裕量留给接口链路,从而支持更高的速率。
[0242]
图14是根据本技术实施例提供的一种电子设备的示意性结构框图。如图14所示的电子设备1400可以是如图1所示的ssd 100,或者,也可以是如图1所示的ssd控制器110,或者,也可以是如图1所示的闪存控制器113。
[0243]
处理单元1401,用于在该闪存颗粒的业务运行过程中,挂起该闪存颗粒的非易失性闪存接口nfi总线中的n个通道,其中n为大于或等于1且小于或等于该nfi总线中的通道总数的整数。
[0244]
确定单元1402,用于从该n个通道中确定至少一个待优化通道。
[0245]
确定单元1402,还用于根据该至少一个待优化通道中的每个待优化通道的训练数据,确定该每个待优化通道的优化参数。
[0246]
优化单元,1403,用于根据该每个待优化通道的优化参数,对该每个待优化通道进行优化。
[0247]
处理单元1401,确定单元1402和优化单元1403的具体功能和有益效果,可以参见上述实施例,为了简洁,就不再赘述。
[0248]
本技术实施例还提供一种芯片系统,该芯片系统包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行上述实施例所示的方法。
[0249]
该芯片系统可以是如图1所示的闪存控制器113,也可以是如图1所示的ssd控制器 110。
[0250]
本技术实施例还提供一种ssd,该ssd包括上述芯片系统。
[0251]
申请实施例还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行以执行上述实施例所示的方法。
[0252]
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
[0253]
应注意,本技术实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0254]
可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom, eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器 (enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram, sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限
于这些和任意其它适合类型的存储器。
[0255]
根据本技术实施例提供的方法,本技术还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述实施例所示的方法。
[0256]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0257]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0258]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0259]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0260]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0261]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0262]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

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

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

相关文献