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

用于固态驱动器的可划分神经网络的制作方法

2023-03-03 05:03:46 来源:中国专利 TAG:

用于固态驱动器的可划分神经网络
1.相关申请的交叉引用
2.本技术要求于2020年8月20日提交的美国临时专利申请no.63/068,349以及2021年1月13日提交的美国非临时专利申请no.17/148,200的优先权,该专利申请中的每个专利申请的内容全文以引用方式并入本文。


背景技术:

3.神经网络对于识别与复杂系统相关的问题的解决方案是有效的。然而,当复杂系统包括影响查询结果的大量因素和/或训练数据集的复杂性需要显著数量的隐藏神经元以实现准确结果时,网络的规模变得很大,使得在独立系统诸如专用集成电路设备中实现其以用于执行特定功能是不切实际的。具体地,由于所需的半导体表面积、功率要求、冷却要求、成本、推断延迟、配置文件空间等,该显著数量的神经网络的隐藏神经元决定使用具有如此多门的神经引擎其在单个集成电路设备上的具体实施变得不切实际。
4.用于解决这个问题的一种方法是对每个因素进行分类,并针对每个类别生成不同的推断模型。虽然这种类型的解决方案允许在单个集成电路设备上处理神经网络操作,但是这种解决方案需要显著数量的神经网络配置文件,并且需要在每个神经网络操作之前将配置文件加载到神经网络引擎中。对许多配置文件的所需的加载消耗功率并且增加推断延迟。
5.需要一种划分神经网络的方式,使得相同的物理神经网络可以用于并行生成一个或多个输出变量的多个预测。而且,需要一种用于识别最佳阈值电压漂移偏移值以用于执行固态驱动器(ssd)的读取的方法和装置。
6.本发明的方法和装置提供用于划分神经网络,使得相同的物理神经网络可以用于并行生成一个或多个输出变量的多个预测。另外,本发明的方法和装置允许识别最佳阈值电压漂移偏移值以用于执行对ssd的读取。


技术实现要素:

7.一种用于生成神经网络推断模型的方法包括:接收指示神经网络推断模型的架构的输入,该架构包括多个参数;以及接收指示针对每个参数的多个不同类别的输入。生成包括多个独立分类核心部分(iccp)的初始神经网络推断模型,每个iccp对应于每个参数的类别中的一个类别并且包括输入神经元、输出神经元和耦接到该输入神经元和该输出神经元的隐藏神经元。初始神经网络推断模型具有包括加权值的行和列的加权矩阵,每行上的第一多个加权值具有非零值并且每行上的第二多个加权值具有零值。每个iccp具有与其他iccp相同的结构,并且响应于零值,特定iccp的输入神经元、输出神经元或隐藏神经元都没有被有效地耦接到其他iccp中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。接收多个数据记录,每个数据记录包括一个或多个参数值。通过划分接收的数据记录来创建训练数据集、验证数据集和测试数据集。通过以下方式训练初始神经网络推断模型:选择类别;从训练数据集中选择具有对应于选择的类别的参数值的数据记录;使用选择的
训练数据记录在对应于选择的类别的神经元上执行反向传播算法;重复该选择数据记录和该执行反向传播算法,直到训练数据集中对应于选择的类别的所有数据记录已经被处理;继续该选择类别、选择数据记录、执行反向传播算法和该重复,直到所有类别已经被处理。然后,存储神经网络推断模型的配置文件。
8.在一个示例中,每个iccp的输出神经元被配置为生成输出值,该输出值指示在特定阈值电压漂移偏移(tvso)值处的阈值电压漂移读取错误(tvs-re)曲线的错误的数量。在另一示例中,每个iccp的输出神经元被配置为生成输出值,该输出值指示阈值电压漂移读取错误(tvs-re)曲线的系数。
9.一种用于执行推断操作的方法包括将神经网络推断模型的配置文件存储在集成电路设备上,该神经网络推断模型包括多个iccp,每个iccp对应于针对该神经网络推断模型的每个参数的多个类别中的一个类别并且包括输入神经元、输出神经元和耦接到该输入神经元和该输出神经元的隐藏神经元,该神经网络推断模型具有包括加权值的行和列的加权矩阵,每行上的第一多个加权值具有非零值并且每行上的第二多个加权值具有零值。每个iccp具有与其他iccp相同数量的输入神经元、相同数量的隐藏神经元、相同数量的输出神经元以及输入神经元、隐藏神经元和输出神经元之间的相同连接,并且响应于加权矩阵的零值,特定iccp的输入神经元、输出神经元或隐藏神经元无一被有效地耦接到其他iccp中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。将神经网络推断模型的配置文件加载到集成电路设备的神经网络引擎中以形成神经网络推断核心。监测集成电路设备的操作以识别对应于每个参数的使用值。使用使用值作为到iccp中的每个iccp的输入在神经网络推断模型核心上执行单个神经网络操作,以在每个iccp的输出神经元处生成指示对一个或多个变量的估计的输出值。识别对应于输入使用值的iccp的输出值。然后,发送识别到的输出值作为输出。
10.本发明公开了一种集成电路设备,其包括:操作电路,该操作电路用于执行一个或多个操作和生成与该一个或多个操作相关的值;以及数据存储器,该数据存储器被配置用于存储多核心神经网络推断(mcnni)模型。mcnni模型包括多个独立分类核心部分(iccp),每个iccp对应于针对mcnni模型中的每个参数的多个类别中的一个类别并且包括输入神经元、输出神经元和耦接到该输入神经元和该输出神经元的隐藏神经元,每个iccp具有与其他iccp相同数量的输入神经元、相同数量的隐藏神经元、相同数量的输出神经元以及输入神经元、隐藏神经元和输出神经元之间的相同连接,并且特定iccp的输入神经元、输出神经元或隐藏神经元都没有被耦接到其他iccp中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。神经网络推断模型具有包括加权值的行和列的加权矩阵,每行上的第一多个加权值具有非零值并且每行上的第二多个加权值具有零值。集成电路设备被配置为识别对应于该集成电路设备的操作的使用值。神经网络引擎被耦接到数据存储器,其中集成电路设备被配置为将mcnni模型加载到神经网络引擎中以形成mcnni核心,并且该神经网络引擎被配置用于使用使用值作为到单个神经网络操作的输入来执行该mcnni核心的该单个神经网络操作,以针对每个iccp在每个输出神经元处生成输出值,该输出值对应于由特定iccp核心代表的类别。集成电路设备包括选择电路,该选择电路被配置用于识别对应于输入到单个神经网络操作中的使用值的mcnni核心。选择电路被进一步配置为向集成电路设备的一个或多个其他电路发送由选择的mcnni核心的输出神经元生成的输出值。
11.本发明的方法和装置对影响uber的多个因素进行建模并在闪存控制器上生成指示tvs-re曲线的最小值的输出,该最小值准确地反映待读取的位置的物理特性、待读取的位置的两者结构特性(例如,待读取的字线和块)、待读取的位置的当前寿命/物理退化(例如,p/e循环的数量)以及待读取的位置的当前暂态特性(例如,闭合块读取干扰和闭合块保留时间)。因为生成的tvs-re曲线准确地表示影响uber的因素,所以对应于该tvs-re曲线的最小值的生成的tvso值将是用于执行读取的适当tvso值。使用最佳tvso值用于执行读取导致在闪存控制器处的读取错误的数量减少。在ssd的寿命期间,本发明的方法和装置的读取错误的数量减少在可接受水平内有效地维持uber。
附图说明
12.包括附图以提供对本发明的进一步理解,并且该附图被并入本说明书中并构成本说明书的一部分。附图示出本发明的实施方案,并且与说明书一起用于解释本发明的原理。
13.图1是示出根据本发明的实施方案的用于生成神经网络推断模型的方法的框图。
14.图2至图3是示出根据本发明的实施方案的示例性神经网络推断模型和如何生成多核心神经网络推断(mcnni)模型的图。
15.图4是示出根据本发明的实施方案的mcnni模型的图。
16.图5是示出根据本发明的实施方案的mcnni模型的加权矩阵的图。
17.图6是示出根据本发明的实施方案的用于在集成电路设备上执行神经网络操作的方法的框图。
18.图7是示出根据本发明的实施方案的ssd的框图。
19.图8是示出闪存控制器和示例性nand闪存存储器设备的图,并且该图示出根据本发明的实施方案的该闪存控制器与该闪存存储器设备之间的通信。
20.图9是示出根据本发明的实施方案的测试和模型生成系统的图。
21.图10是示出根据本发明的实施方案的针对mcnni模型的字线类别的图。
22.图11是示出根据本发明的实施方案的针对mcnni模型的类别的图。
23.图12是示出根据本发明的实施方案的垂直轴线上的错误的数量和水平轴线上的阈值电压漂移偏移的曲线图,该图示出在读取示例性闪存存储器设备中的错误。
24.图13是示出根据本发明的实施方案的从示例性阈值电压漂移读取训练数据集生成的示例性阈值电压漂移读取错误曲线的曲线图。
25.图14是示出根据本发明的实施方案的从示例性平滑的阈值电压漂移读取训练数据集生成的示例性平滑的阈值电压漂移读取错误曲线的曲线图。
26.图15至图19是示出根据本发明的实施方案的多类别神经网络推断模型的图。
具体实施方式
27.图1示出一种用于生成神经网络推断模型的方法(100),该方法包括:接收指示神经网络推断模型的架构的输入(101),该架构包括多个参数。在一个示例中,架构包括指示针对神经网络模型的参数的一个或多个文件。架构还可以包括针对神经网络模型的超参数,并且可以包括输入神经元的数量、隐藏神经元的数量、输出神经元的数量、神经元之间的连接、初始偏差值和加权值以及要使用的训练算法(例如,特定回归算法或分类算法)。
28.接收指示针对每个参数的多个不同类别的输入(102)。在一个示例中,接收电子文件作为输入,该输入指示针对每个参数的类别。另选地,经由用于执行方法100的一个或多个步骤的计算机的图形用户界面输入针对每个参数的类别。
29.生成具有多个iccp的初始神经网络推断模型(103),每个iccp对应于每个参数的类别中的一个类别并且包括输入神经元、输出神经元和耦接到该输入神经元和该输出神经元的隐藏神经元。初始神经网络推断模型具有包括加权值的行和列的加权矩阵,每行上的第一多个加权值具有非零值并且每行上的第二多个加权值具有零值。每个iccp具有与其他iccp相同的结构,并且响应于零值,特定iccp的输入神经元、输出神经元或隐藏神经元都没有被有效地耦接到其他iccp中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。物理上,特定iccp的输入神经元、输出神经元或隐藏神经元与其他iccp的输出神经元或隐藏神经元之间可能存在路径,然而由于零加权值,它们没有被有效地耦接。
30.方法100的数学操作在图2至图3中示出,该图示出了在特定输入神经元处接收的输入参数值作为x
0-x5,其中参数a、b、c和d是用于生成表示隐藏神经元(未示出)的值加上偏差值b
0-b7的输出值的y
0-y7的权重。这通过输入参数值x
0-x5乘以对应于加权指数的参数a、b、c和d的加权值来示出,加权指数包括每个参数上的加权值。虚线是将顶部部分与底部部分分开的虚拟线,并且通过在加权指数的适当行/列中将加权值设置为零来实现。因此,设置加权值为零将互连的神经网络分为单独的iccp。
31.在一个示例中,根据以下示例性方程生成多核心神经网络推断(mcnni)模型的输出,其中变量“y”表示每个iccp的输出值,变量“x”表示到每个iccp的输入,该输入可以被称为“输入参数值”,变量a、b、c和d表示参数(也可以被称为“加权值”)以及变量b
0-b7表示偏差值。
32.y0=(x0*a) (x1*a) (x2*a) (x3*0) (x4*0) (x5*0) b033.y1=(x0*b) (x1*b) (x2*b) (x3*0) (x4*0) (x5*0) b134.y2=(x0*c) (x1*c) (x2*c) (x3*0) (x4*0) (x5*0) b235.y3=(x0*d) (x1*d) (x2*d) (x3*0) (x4*0) (x5*0) b336.y4=(x0*0) (x1*0) (x2*0) (x3*a) (x4*a) (x5*a) b437.y5=(x0*0) (x1*0) (x2*0) (x3*b) (x4*b) (x5*b) b538.y6=(x0*0) (x1*0) (x2*0) (x3*c) (x4*c) (x5*c) b639.y7=(x0*0) (x1*0) (x2*0) (x3*d) (x4*d) (x5*d) b740.回归神经网络模型通常将表示输入到每个输入神经元中的变量(在以上方程中由变量“x
n”表示)称为“参数”并且此类术语在本技术中使用,其中在特定输入神经元处接收的输入值被称为“输入参数值”。然而,本发明的方法和装置还可以使用其他类型的神经网络。在这些其他类型的神经网络中的一些中,到每个输入神经元的输入被称为“特征”。本技术中使用的术语“参数”不得理解为限制于接收与回归神经网络相关的输入,但是当此类术语适用时应包括“特征”。
41.在一个示例中,步骤103包括生成针对接收的类别的每个组合的iccp。在以下示例中,独立核心部分带有下标指示,其中第一下标指示第一参数的类别,第二下标指示第二参数的类别,等等。例如,在图4中示出的其中针对第一参数存在三个类别并且针对第二参数存在两个类别的实施方案中,将生成六个iccp以形成mcnni模型40。六个iccp包括:对应于
第一参数的第一类别和第二参数的第一类别的第一iccp(iccp
11
)、对应于第一参数的第一类别和第二参数的第二类别的第二iccp(iccp
12
)、对应于第一参数的第二类别和第二参数的第一类别的第三iccp(iccp
21
)、对应于第一参数的第二类别和第二参数的第二类别的第四iccp(iccp
22
)、对应于第一参数的第三类别和第二参数的第一类别的第五iccp(iccp
31
)和对应于第一参数的第三类别和第二参数的第二类别的第六iccp(iccp
32
)。mcnni模型40包括多个输入神经元41、多个输出神经元45和隐藏神经元层42至隐藏神经元层44。可以看出,mcnni模型40中的每个iccp具有与其他iccp相同的结构,并且特定iccp的输入神经元、输出神经元或隐藏神经元没有被有效地耦接到其他iccp中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。如本技术中使用的术语“没有被有效地耦接”或
“……
都没有被有效地耦接”应指1)没有被物理耦接或2)被物理耦接,但以这样的方式被物理耦接:使得加权矩阵中的“0”值使物理耦接不可操作”。
42.iccp
11
的输入神经元41接收输入参数值x0、x1、x2、x3和x4。iccp
12
的输入神经元41接收输入参数值x5、x6、x7、x8和x9。iccp
21
的输入神经元41接收输入参数值x
10
、x
11
、x
12
、x
13
和x
14
。iccp
22
的输入神经元41接收输入参数值x
15
、x
16
、x
17
、x
18
和x
19
。iccp
31
的输入神经元41接收输入参数值x
20
、x
21
、x
22
、x
23
和x
24
。iccp
32
的输入神经元41接收输入参数值x
25
、x
26
、x
27
、x
28
和x
29

43.图5是示出根据本发明的实施方案的mcnni模型的加权矩阵的图。具有非零值的加权值(在下文中可以被称为有效加权值)形成mcnni模型中的各种推断核心。更具体地,行1至行4和列1至列4中的加权值(a、b、c、d)形成针对第一iccp
11
的推断核心,行5至行8和列5至列8中的加权值(a、b、c、d)形成针对第二iccp
12
的推断核心,等等。可以看出,每行上的不是有效加权值的所有加权值都具有零值。更具体地,第一四列和第一n行(其中n为四)包括针对第一iccp
11
的有效值,下一四列和下一n行包括针对第二iccp
12
的有效值,下一四列和下一n行包括针对第三iccp
21
的有效值,下一四列和下一n行包括针对第四iccp
22
的有效值,下一四列和下一n行包括针对第五iccp
31
的有效值,以及最后四列和最后n行包括针对第六iccp
32
的有效值。
44.任选地,执行对代表性集成电路设备的测试(104)以获得与该集成电路设备的操作相关的测试结果,如将在下文进一步详细讨论。
45.接收多个数据记录(105),每个数据记录包括一个或多个参数值。数据记录是标记示例,该标记示例中的每个标记示例包括多个特征(也被称为属性),该标记示例中的一些标记示例或全部标记示例可以是模型的参数(例如,模型中的在特定输入神经元处接收的变量“x
i”)和对应标签(例如,“y”值),即相应iccp的输出。
46.任选地,可以在数据记录上执行平滑函数(106),如下文将进行详细讨论。
47.通过划分接收的数据记录来创建训练数据集、验证数据集和测试数据集(107)。在一个示例中,接收的数据记录被随机分为相应数据集。
48.通过选择类别(108)、从具有对应于选择的类别的参数值的训练数据集中选择数据记录(109)以及使用选择的训练数据记录在对应于选择的类别的神经元上执行反向传播算法(110)来训练103中生成的初始神经网络推断模型。在其中针对第一参数存在三个类别并且针对第二参数存在两个类别的以上示例中,如果选择的类别是第一类别,将训练iccp的属于该第一参数的第一类别的神经元。更具体地,将使用选择的数据记录训练iccp
11
和iccp
12
的神经元。重复选择数据记录(109)和执行反向传播算法(110),直到训练数据集中对
应于选择的类别的所有数据记录已经被处理(111)。
49.重复步骤108至步骤111,直到所有类别已经被处理(112)。因此,在以上示例中,步骤108至步骤111的过程总共重复五次,每个类别一次。在此示例中,将执行步骤108至步骤111的第一迭代,以使用对应于第一参数的第一类别的数据记录来训练iccp
11
和iccp
12
的神经元(响应于输入参数值x
0-x9的那些,即针对其用于这些参数值的加权值还未被设置为零的那些神经元)。将执行步骤108至步骤111的第二迭代,以使用对应于第一参数的第二类别的数据记录来训练iccp
21
和iccp
22
的神经元(响应于输入参数值x
10-x
19
的那些,即针对其用于这些参数值的加权值还未被设置为零的那些神经元)。将执行步骤108至步骤111的第三迭代,以使用对应于第一参数的第三类别的数据记录来训练iccp
31
和iccp
32
的神经元(响应于输入参数输入值x
20-x
29
的那些,即针对其用于这些参数值的加权值还未被设置为零的那些神经元)。执行步骤108至步骤111的第四迭代,以使用对应于第二参数的第一类别的数据记录来训练iccp
11
和iccp
21
以及iccp
31
的神经元。执行步骤108至步骤111的第五迭代,以使用对应于第二参数的第二类别的数据记录来训练iccp
12
、iccp
22
和iccp
32
的神经元。
50.在一个示例中,步骤110包括:将不对应于正在被训练的iccp的第一多个加权值中的所有加权值暂时存储在数据存储器中(使得其将不会被反向传播改变);执行反向传播算法;然后,在已经执行反向传播算法之后,将其他iccp中的加权值中的每个加权值恢复为其相应的暂时存储值。通过在训练期间存储和替换加权值,只有待训练的iccp在训练迭代期间被修改。
51.用于训练的算法可以是回归算法,以便识别与表示训练数据的曲线相关的系数或值。另选地,可以使用分类算法或线性回归算法。
52.测试所得的经训练的神经网络推断模型(113),以确定经训练的神经网络推断模型是否满足训练标准,并且如果不满足训练标准(114-115),则更新模型(115),并且重复步骤108至步骤114的过程。步骤113中使用的标准可以是确定训练过程的“优度”的成本函数。在一个示例中,使用阈值电压漂移读取训练数据集中的数据记录来执行推断操作,并且使用最小平方误差(mse)函数来识别通过使用训练数据集进行训练而实现的mse。
53.当在步骤114中满足训练标准时,执行经过训练的神经网络推断模型的验证和测试(116)。
54.任选地,执行浮点转换(117)。在一个示例中,步骤117包括:将mcnni模型的配置文件从浮点转换到固定点,例如,40位固定点,以加速所得的最终mcnni模型的推断时间。
55.存储经训练、经验证和测试的神经网络推断模型的配置文件(118)。
56.图6示出了用于执行包括生成mcnni模型(201)的推断操作的方法。可以根据图1的方法100形成mcnni模型。将mcnni模型的配置文件存储(202)在集成电路设备上。生成的(201)和存储的(202)的mcnni模型包括多个iccp,每个iccp对应于针对神经网络推断模型的每个参数的多个类别中的一个类别并且包括输入神经元、输出神经元和耦接到该输入神经元和该输出神经元的隐藏神经元,该神经网络推断模型具有包括加权值的行和列的加权矩阵,每行上的第一多个加权值具有非零值,并且每行上的第二多个加权值具有零值。每个iccp具有与其他iccp相同数量的输入神经元、相同数量的隐藏神经元、相同数量的输出神经元以及输入神经元、隐藏神经元和输出神经元之间的相同连接,并且响应于加权矩阵的零值,特定iccp的输入神经元、输出神经元或隐藏神经元都没有被有效地耦接到其他iccp
中的任何iccp的输入神经元、输出神经元或隐藏神经元中的任一者。物理上,特定iccp的输入神经元、输出神经元或隐藏神经元与其他iccp的输出神经元或隐藏神经元之间可能存在路径,然而由于零加权值,它们没有被有效地耦接。
57.将神经网络推断模型的配置文件加载(203)到集成电路设备的神经网络引擎中以形成神经网络推断核心。监测(204)集成电路设备的操作以识别对应于参数中的每个参数的使用值。使用使用值作为到iccp中的每个iccp的输入在神经网络推断模型核心上执行(206)单个神经网络操作,以在每个iccp的输出神经元处生成指示对一个或多个变量的估计的输出值。
58.任选地,响应于在集成电路设备处接收读取指令(205),执行神经网络操作,如下文将进一步讨论。
59.在神经网络操作中,每个核心的对应输入神经元接收与每个其他核心的对应输入神经元相同的输入。在图4所示的示例中,输入参数值x0,x5,x
10
,x
15
,x
20
和x
25
分别表示与输入相同的第一使用值;输入参数值x1,x6,x
11
,x
16
,x
21
和x
26
分别表示与输入相同的第二使用值;输入参数值x2,x7,x
12
,x
17
,x
22
和x
27
分别表示与输入相同的第三使用值;和输入参数值x3,x8,x
13
,x
18
,x
23
和x
28
分别表示与输入相同的第四使用值;以及输入参数值x4,x5,x
14
,x
19
,x
24
和x
29
分别表示与输入相同的第五使用值。
60.在神经网络操作中,每个核心的对应输出神经元生成输出,该输出表示与每个其他核心的对应输出神经元相同的输出变量。在图4所示的示例中,具有输出值y0,y4,y8,y
12
,y
16
和y
20
的输出神经元45表示生成的第一输出变量;具有输出值y1,y5,y9,y
13
,y
17
和y
21
的输出神经元45表示生成的第二输出变量;具有输出值y2,y6,y
10
,y
14
,y
18
和y
22
的输出神经元45表示生成的第三输出变量;以及具有输出值y3,y7,y
11
,y
15
,y
19
和y
23
的输出神经元45表示生成的第四输出变量。在一个示例中,第一输出变量是表示曲线的第一系数的预测,第二输出变量是曲线的第二系数的预测,等等。
61.识别(207)对应于输入使用值的iccp的输出值,并且将识别到的输出值发送(208)作为输出。由于类别的每个组合在单个iccp中表示,因此可以通过识别哪个iccp对应于输入到单个神经网络操作中的使用值中的每个使用值的类别来确定对应于该输入使用值的iccp。在一个示例中,存储查找表,该查找表包括针对每个类别的使用值和识别iccp中的一个iccp的对应索引值。步骤207包括:使用输入到单个神经网络操作中的使用值来执行查找操作,以识别对应iccp。
62.在图4所示的示例中,如果第一使用值在第一类别内并且第二使用值在第一类别内,则在步骤207中识别核心iccp
11
的输出并在步骤208中输出(输出值y
0-y3);如果第一使用值在第一类别内并且第二使用值在第二类别内,则在步骤207中识别核心iccp
12
的输出并在步骤208中输出(输出值y
4-y7)。
63.任选地,使用识别到的输出值识别(209)tvso曲线的最小值(tvso-min值),并且将使用识别到的tvso-min值来执行(210)对闪存存储器的读取,如下文将进一步讨论。
64.图7示出了示例性ssd 10,其包括耦接到用于存储数据的多个闪存存储器设备9的闪存控制器3。在本实施方案中,闪存存储器设备9是nand设备,并且ssd 10包括一个或多个电路板,主机连接器插座14、闪存控制器3和闪存存储器设备9附接到该电路板上。ssd 10还可以包括一个或多个存储器设备13,诸如动态随机存取存储器(dram),该一个或多个存储
器设备可以是单独集成电路设备,该单独集成电路设备附接到在其上安装闪存控制器3的电路板上并且直接耦接到闪存控制器3。
65.闪存控制器3被配置为:通过主机连接器插座14从主机计算机接收读取和写入指令,并且在闪存存储器设备9的存储器单元上执行编程操作、擦除操作和读取操作,以完成来自主机计算机的指令。例如,在经由主机连接器插座14从主机计算机接收写入指令时,闪存控制器3能够操作以通过执行编程操作(以及当需要时,擦除操作)将码字编程到一个或多个闪存存储器设备9上来将数据存储在ssd 10中。
66.闪存控制器3包括写入电路8、读取电路6、解码器7、状态电路5、最小值查找器17和数据存储器4。闪存控制器3还包括耦接到数据存储器4和选择电路16的神经网络引擎11。闪存控制器3可以任选地包括一个或多个选择表15和耦接到选择电路16的tvso-min表15a,任选地包括在数据存储器4内。读取电路6耦接到解码器7、状态电路5、选择电路16、数据存储器4和神经网络引擎11。状态电路5耦接到写入电路8、神经处理模块11、选择电路16和数据存储器4。选择电路16可以是专用电路或可以包括软件和硬件的组合,该组合能够操作以与数据存储器4、状态电路5、神经网络引擎11和读取电路6中的一者或多者通信。最小值查找器17耦接到选择电路16,并且读取电路6可以是专用电路或可以包括软件和硬件的组合。在一个实施方案中,最小值查找器17是软件编程,该软件编程能够在控制器3的处理器上操作以用于接收输入并识别对应于由输入表示的曲线的最小值的值。用于一个或多个mcnni(例如,mcnni-tvso)推断模型12的配置文件包括在数据存储器4内,该mccni模型可以是用于读取闪存存储器设备9的tvso模型。在一个示例中,神经网络引擎11包括专门被配置为执行神经网络操作的专用硬件模块(例如,专用可配置加速器)。
67.每个闪存存储器设备9可以是封装的半导体裸片或“芯片”,其通过耦接每个闪存存储器设备9和闪存控制器3之间的指令、数据和其他信息的导电路径来耦接到闪存控制器3。在图8所示的实施方案中,每个闪存存储器设备9(例如,nand设备)包括寄存器31、微控制器32和存储器阵列33,并且通过芯片启用信号线(ce#)、命令锁存器启用信号线(cle)、读取启用信号线(re#)、地址锁存器启用信号线(ale)、写入启用信号线(we#)、读取/忙碌信号线(r/b)以及输入和输出信号线(dq)耦接到闪存控制器3。在从主机计算机接收写入指令时,写入电路8能够操作以将接收的数据编码为码字,该码字与对应编程指令一起被发送到寄存器31。微控制器32能够操作以执行请求的写入指令并从寄存器31提取码字并且通过编程存储器阵列33的单元(例如,作为逻辑页面)将该码字存储在存储器阵列33中。
68.在一个示例中,每个闪存存储器设备9包括被组织成块和页面的nand存储器单元,其中每个块由共享相同组字线的nand串构成。每个逻辑页面由属于同一字线的单元构成。每个逻辑块内的逻辑页面的数量通常是16的倍数(例如,64、128)。在本实施方案中,逻辑页面是用于从每个闪存存储器设备9的nand存储器单元读取和向其写入的最小可寻址单元,并且逻辑块是最小可擦除单元。然而,应当理解,在本发明的实施方案中,小于整个逻辑页面的编程可能是可能的,这取决于nand阵列的结构。尽管闪存存储器设备9被示出为是nand设备,但是应当理解,闪存存储器设备9可以是使用阈值电压来读取闪存存储器设备9的存储器单元的任何类型的存储器设备。
69.响应于从主机计算机接收读取指令,读取电路6被配置为使用阈值电压漂移读取操作来执行对相应闪存存储器设备9的读取。更具体地,读取电路6能够操作以向闪存存储
器设备9发送阈值电压漂移读取指令34。微控制器32响应于阈值电压漂移读取指令而读取相应存储器阵列33,并在寄存器31处输出读取结果。向解码器7发送读取结果,该解码器能够操作以解码读取结果,以获得存储的码字。
70.闪存存储器设备9可以是slc设备、mlc设备、tlc设备或qlc nand设备。在本实施方案中,闪存存储器设备9能够执行宽范围的阈值电压漂移读取,包括由整数偏移值(诸如,-n
……‑
2、-1、0、1、2、
……
n)指定的读取而没有限制。
71.闪存存储器设备9的擦除块可以被称为“自由块”。当数据被编程到已被擦除的块中时,该块被称为“开放块”,直到该块的所有页面已经被编程。一旦块的所有页面已经被编程,该块就被称为“闭合块”,直到其被再次擦除。
72.闪存控制器示例-生成mcnni模型
73.以下是其中方法100用于生成mcnni模型的示例,该mcnni模型可以用于选择用于执行对闪存存储器设备9的读取的tvso值,该mcnni模型在下文中可以被称为“mcnni-tvso推断模型”。参考图9的系统70说明该方法。然而,应当理解,也可以由闪存控制器3生成mcnni-tvso推断模型。系统70包括经由网络80耦接在一起的输入71、输出72、处理器74、数据存储器79和最小值查找器编程83。最小查找器编程83是能够在处理器74上操作的软件编程,并且因此可以表示电子可读指令,该电子可读指令能够操作以识别函数的最小值。测试和模型生成系统70包括耦接到网络80的工作台测试编程82,该工作台测试编程可以表示电子可读指令,该电子可读指令能够在处理器74上操作,以用于以识别随代表性闪存存储器设备73老化而发生的错误的数量的这种方式来测试代表性闪存存储器设备73。代表性闪存存储器设备73可以插入到一个或多个测试夹具中,该测试夹具耦接到测试和模型生成系统70,并且可以特别耦接到网络90。代表性闪存存储器设备73是与闪存存储器设备9类似或相同的设备,并且可以是由与闪存存储器设备9相同的制造商制造的相同类型的设备(例如,相同类型的nand设备)。耦接到网络80的机器学习模块81可以表示电子可读指令,该电子可读指令能够在处理器74上操作以用于生成神经网络,并且可以包括能够在处理器74上操作的计算机编程。
74.接收神经网络推断模型的架构作为输入(101),并且通过输入71接收多个不同类别作为输入(102)并且暂时存储在数据存储器79中。在本实施方案中,针对每个参数的多个类别跨越期望待接收作为到与特定参数相关的推断操作的输入的值的完整范围。耦接到网络80的机器学习模块81能够操作以在步骤103中生成初始mcnni-tvso推断模型,并且输入到机器学习模块81中的架构控制在步骤103至步骤118的过程期间机器学习模块81的生成和测试。
75.在一个实施方案中,参数包括指示闪存存储器设备的字线的参数(字线值)、指示闪存存储器设备的块的参数(块值)、指示闪存存储器设备的保留时间的参数(保留时间值)、指示闪存存储器设备的读取干扰的数量的参数(读取干扰值)和指示闪存存储器设备的编程和擦除循环的数量的参数(编程/擦除值)。在此示例中,每个分类核心部分对应于字线值的类别、块值的类别、保留时间值的类别、读取干扰值的类别或闪存存储器设备的寿命中的多个时段(例如,由编程/擦除值指示)。
76.字线通过其在芯片上的物理位置来进行分组,并且通过在测试实验室中的示例性半导体器件上运行测试来确定不同组之间的边界,以识别与tvso值的错误相关的定制限定
度量。在图10所示的实施方案中,可以看出测试结果中存在中断部分。在本发明的示例中,选择类别使得类别边界对应于中断部分。包括字线1-30的第一组字线51、包括字线31-80的第二组字线52、包括字线81-195的第三组字线53、包括字线196-220的第四组字线54、包括字线221-250的第五组字线55和包括字线250-n的第六组字线56,其中n是字线总数。因此,字线被划分为六个不同的字线类别。
77.在一个示例中,块类别按块在芯片上的物理位置将块进行分组(例如,n个邻接块是第一类别,然后下一n个邻接块是第二类别,等等),其中块被划分为五个不同的块类别。在其中ssd 10包括128个闪存存储器设备9的一个示例性实施方案中,该闪存存储器设备中的每个闪存存储器设备包括2048个块,可以给块分配0至262,143的块编号,其中输入到单个神经网络操作中的块值是待读取的页面的块编号(例如,当如步骤205中所示执行读取时)。
78.基于闭合块保留时间将保留时间分组为不同的时段,其中一些或所有时段具有相同的持续时间。在一个示例中,保留时间被分组为50个时段,其中每个时段具有40小时的持续时间(例如,第一组具有小于或等于40小时的闭合块保留时间,第二组具有大于40小时且小于或等于80小时的闭合块保留时间,第三组具有大于80小时且小于或等于120小时的闭合块保留时间,等等)。
79.基于待读取的块的闭合块读取的数量对读取干扰进行分类。在一个示例中,读取干扰被划分为四个类别,其中第一类别包括从0到100,000的闭合块读取,第二类别包括从100,001到200,000的闭合块读取,第三类别包括从200,001到300,000的闭合块读取,以及第四类别是超过300,001的闭合块读取。
80.在一个示例中,基于编程和擦除循环的数量将闪存存储器设备的寿命分组成时段,并且针对时段中的每个时段生成类别。在一个示例中,闪存存储器设备的寿命中的时段被划分为七个不同的类别,针对第一1,000个p/e循环的第一类别、其为1,001p/e循环到2,000p/e循环的第二类别、其为2,001p/e循环到3,000p/e循环的第三类别、其为3,001p/e循环到4,000p/e循环的第四类别、其为4,001p/e循环到5,000p/e循环的第五类别、其为5,001p/e循环到6,000p/e循环的第六类别、其为6,001p/e循环到7,000p/e循环的第七类别(其为ssd的寿命的结束)。
81.在本示例中,步骤103生成初始神经网络推断模型,该初始神经网络推断模型是回归神经网络模型,该初始神经网络推断模型包括生成输出的iccp,该输出识别由参数表示的曲线。在一个实施方案中,iccp在模型中的定义通过机器学习模型81以自动化方式完成,以在初始mcnni-tvso模型中定义iccp。
82.图11示出了示例性mcnni-tvso模型的iccp以及如何生成iccp。在此示例中,存在示出为w1-w6的六个字线类别,并且存在示出为b1-b5的五个块类别,示出为rt1-rt50的五十个保留时间类别,示出为rd1-rd4的四个读取干扰类别和示出为pe1-pe7的七个编程/擦除类别。可以看出,存在这些类别的大量组合,这些类别中的每个类别被实现为相应mcnni-tvso模型的iccp。最后一列表示mcnni-tvso模型中的iccp中的每个iccp。更具体地,mcnni-tvso模型包括:示出为w1b1rt1rd1pe1的第一核心部分(每个参数的第一类别)、其为第一四个参数和第二编程/擦除类别中每一者的第一类别的第二核心部分w1b1rt1rd1pe2、其为第一四个参数和第三编程/擦除类别中的每一者的第一类别的第三核心部分w1b1rt1rd1pe3、
等等,使得类别的每个可能组合包括iccp。应理解,在该说明中仅扩展每个参数的第一个类别和最后一个类别,并且将以相同的方式扩展所有类别以形成iccp。
83.在任选的步骤104中,在代表性闪存存储器设备73上执行闪存表征测试,以获得一组或多组阈值电压漂移读取测试结果。在不同条件下测试多个代表性闪存存储器设备73,以获得可以存储在数据存储器79中的一组或多组阈值电压漂移读取测试结果85。由于在闪存存储器设备73的测试期间施加的不同测试条件,该一组或多组测试结果表示表征化闪存存储器设备的寿命中的不同表征化点或时段和该表征化闪存存储器设备的不同操作条件。图12示出了表示针对示例性存储器单元的示例性闪存表征测试的曲线图,该曲线图示出了x轴上的不同tvso值和y轴上的错误的数量。此过程的结果,即不同vt漂移值(点91)处的错误的数量的集合,是曲线,其中该曲线的一部分形状像“谷”。本发明的mcnni-tvso推断模型78生成输出,该输出预测曲线,该曲线包括针对在步骤104的测试期间模拟的条件中的每个条件的谷。
84.在一个示例中,图1的步骤104包括在代表性闪存存储器设备73上执行测试,该测试识别在多个不同阈值电压漂移偏移中的每个阈值电压漂移偏移处的错误的数量,其中在测试中使用以下变量:正在被测试的编程/擦除相应代表性闪存存储器设备73的参考值、识别在测试中读取的页面的块的块值、指示在测试中读取的页面的字线的字线值、指示包含在测试中读取的页面的块的闭合块读取的数量的读取干扰值、指示包含在测试中读取的页面的块的闭合块保留时间的保留时间值以及包含在测试中读取的页面的块的值。
85.在步骤105中,接收数据记录,该数据记录指示在代表性闪存存储器设备73上的测试的结果。在一个示例中,接收阈值电压漂移读取测试结果85(例如,在输入71处接收测试结果或机器学习模块81从数据存储器79提取测试结果)。图13示出了从示例性阈值电压漂移读取训练数据集生成的tvs-re曲线的示例。更具体地,在y轴上示出错误的数量,并且在x轴上示出tvso。如在图13中可以看出,由于nand闪存读取电路的实质,在每个谷的错误数量中存在波动(噪声)。这种噪声对mcnni-tvso推断模型的学习过程产生负面影响,这可能影响谷的最小值的实际位置并导致不正确的tvso值的计算。为了避免这个问题,在训练之前如由步骤106所示,可选地将诸如移动平均值或多个多项式插值的平滑算法应用于训练数据集,以生成平滑的阈值电压漂移读取训练数据集(其中由目标数据集表示的谷的形状被平滑)。图14示出了从示例性平滑的阈值电压漂移读取训练数据集生成的tvs-re曲线的示例。因此,因为在训练之前执行平滑函数(106),所以不训练mcnni-tvso推断模型以预测对应于在设备的表征期间测量的错误的精确数量的tvs-re曲线(例如,重建“谷”),相反地,训练该mcnni-tvso推断模型以预测对应于平滑的阈值电压漂移读取训练数据集的tvs-re曲线(例如,重建“谷”)。
86.在一个示例中,训练数据集、验证数据集和测试数据集包括闪存存储器设备表征测试结果,该闪存存储器设备表征测试结果指示在不同阈值电压漂移偏移值处执行的读取中的错误的数量。在一个示例中,机器学习模块81能够操作以将阈值电压漂移读取测试结果85分成(例如,通过随机过程)包括阈值电压漂移读取训练数据集的训练数据库75、包括阈值电压漂移读取验证数据集的验证数据库76和包括阈值电压漂移读取测试数据集的测试数据库77,其中的每一者都耦接到网络80。
87.在本示例中,在图1的步骤108中选择第一字线类别,并且在步骤109中选择数据记
录,该数据记录包括在第一字线类别的限制内的字线值(例如,具有1-30的字线的数据记录),并且对输入到输入神经元41的数据执行(110)反向传播算法,以训练如由图10的框61所示的iccp。数据记录可以包括:针对示例性闪存存储器设备的读取操作的错误的数量、识别读取的字线的字线值、指示包含读取的页面的块的块编号的块值、指示包含读取的页面的块的闭合块读取的数量的读取干扰值、指示针对包含读取的页面的块的闭合块保留时间的保留时间值以及指示包含读取的页面的块的编程和擦除循环的当前数量的编程/擦除值。反向传播算法可以是生成表示在不同tvso值处的错误的曲线的回归算法。
88.一旦已经处理了具有在第一字线类别的限制内的字线值的所有数据记录,则过程移动到第二字线类别,并且对包括第二字线类别的限制内的字线值的数据记录执行反向传播算法(例如,具有31-80的字线的数据记录),如由框62所示。一旦已经处理了具有在第二字线类别的限制内的字线值的所有数据记录,则过程移动到第三字线类别,并且对包括第三字线类别的限制内的字线值的数据记录执行反向传播算法,如由框63所示。对包括第四字线类别的限制内的字线值的数据记录执行反向传播算法,如由框64所示;对包括第五字线类别的限制内的字线值的数据记录执行反向传播算法,如由框65所示;然后,对包括第六字线类别的限制内的字线值的数据记录执行反向传播算法,如由框66所示。一旦使用所有字线类别执行训练,则包括块值的每个类别的限制内的块值的数据记录用于执行训练。该过程以相同的方式继续,直到已经训练所有块类别。然后,以相同的方式针对每个保留时间类别、每个读取干扰类别和每个p/e类别执行训练。
89.在步骤113的测试中,使用阈值电压漂移读取练数据集中的数据记录来执行推断操作,并且使用诸如最小平方误差(mse)函数的误差函数来识别通过使用阈值电压漂移读取训练数据集进行训练而实现的错误。
90.当经训练的mcnni-tvso推断模型满足预定训练标准(114-115)时,通过使用阈值电压漂移读取验证数据集中的数据记录执行推断操作并对结果执行误差函数,使用存储在验证数据库76中的阈值电压漂移读取验证数据集来验证mcnni-tvso推断模型。当由误差函数计算的误差低于预定阈值时,通过使用存储在测试数据库77中的阈值电压漂移读取测试数据集中的数据记录执行推断操作来测试mcnni-tvso模型,并将使用测试数据集生成的mcnni-tvso模型的输出与最佳阈值电压漂移值进行比较,该最佳阈值电压漂移值可以被称为在不使用mcnni-tvso模型的情况下计算的“黄金vt-opt”值(例如,使用测试工作台编程82和使用最小值查找器编程83通过生成错误曲线来进行计算,以识别针对各种测试样品的黄金vt-opt值)。当使用mcnni-tvso模型计算的预测tvso-min值在对应的黄金vt-opt值的范围内时,该方法转到步骤117。
91.任选地,通过将mcnni-tvso模型的配置文件从浮点转换到固定点(例如,40位固定点)以加速所得的最终mcnni-tvso模型的推断时间来执行(117)浮点转换。在一个示例中,步骤117产生图9中所示的mcnni-tvso模型78的配置文件。从浮点到固定点的转换使神经网络引擎11能够具有较低的门计数并减少延迟。
92.存储经训练、经验证和测试的神经网络推断模型的配置文件(118)。在一个示例中,经训练、经验证和经测试的神经网络推断模型78以配置文件的形式存储在数据存储器79中。可以在销售和使用ssd 10之前和在将闪存控制器3交付给客户用于制造ssd 10之前执行mcnni模型的生成或可以在ssd 10上执行mcnni模型的生成。如果在销售和使用ssd 10
之前和在将闪存控制器3交付给客户用于制造ssd 10的之前执行,则可以使用测试和模型生成系统来执行,如下文将更详细地讨论。
93.闪存控制器示例-方法200和ssd 10
94.以下是说明ssd 10的操作的方法200的示例。在此示例中,生成(201)mcnni-tvso模型,并且将用于mcnni-tvso模型的配置文件存储(202)在闪存控制器3或耦接到该闪存控制器3的存储器设备13上的数据存储器中作为配置文件12,优选在将闪存控制器3交付给客户之前。将mcnni-tvso模型的配置文件加载(203)到神经网络引擎11中以形成mcnni-tvso核心。
95.在步骤204中,状态电路5能够操作以监测每个闪存存储器设备9的操作,以识别闪存存储器设备9的一个或多个使用值。可以将所确定的使用值存储在闪存控制器3的寄存器中、闪存控制器3的数据存储器4中或存储器设备13中。在此示例中,使用值是在闪存存储器设备9的使用期间确定的值,该值可以影响阈值电压分布,诸如例如指示待读取的位置的当前寿命/物理退化(例如,p/e循环的数量或误码率(ber))或指示待读取的位置的当前暂态特性(例如,闭合块读取干扰和闭合块保留时间)的值。
96.使用值可以包括读取干扰值。在一个示例中,每次块被闭合时,状态电路5能够操作以在块被闭合时对块的读取的数量进行计数,并且将块的读取的数量存储为读取干扰值。当擦除块时,擦除块的读取干扰值被重置为零。
97.使用值可以包括闭合块保留时间。在一个示例中,每次块被闭合时,状态电路5能够操作以启动定时器,以确定自块被闭合以来实耗时间的量。在任何时间点处由定时器确定的实耗时间被定义为闭合块保留时间值。当擦除块时,停止针对该块的定时器,并且擦除块的闭合块保留时间值被重置为零。
98.使用值可以包括指示每个块的编程操作和擦除操作的数量的数。在一个示例中,状态电路5能够操作以用于在闪存存储器设备的整个寿命期间对闪存存储器设备的每个块的编程循环和擦除循环的数量进行计数,并且将计数存储在数据存储器4或存储器设备13中,该数据存储器或存储器设备可以是动态读取存取存储器(dram)。
99.使用值还可以包括块或一组块的ber。在一个示例中,状态电路5能够操作以周期性地确定每个块的ber,并且将每个块的ber存储为ber值。在一个示例中,每次计算ber值时,将其存储在数据存储器4或存储器设备13中,以便针对特定块重写先前存储的ber值。
100.通过神经网络引擎11执行(206)单个神经网络操作。任选地,响应于接收读取指令(205)而执行单个神经网络操作。在一个示例中,在接收指示对应于闪存存储器设备的存储器单元的读取地址的读取指令时,状态电路5被配置为识别对应于待读取的该存储器单元的一个或多个使用值。
101.在步骤206中,使用使用值作为到iccp中的每个iccp的输入在mcnni-tvso核心上执行单个神经网络操作,以在每个iccp的输出神经元处生成指示对变量的估计的输出值。
102.识别(207)对应于输入使用值的分类核心部分的输出值并将其作为输出进行发送(208)。在一个示例中,选择电路16能够操作以用于执行步骤207至步骤208。在一个实施方案中,选择电路16包括处理器,该处理器能够操作以用于执行指令,以便使用输入使用值在选择表15中执行查找以识别对应于输入使用值的核心部分,并且识别作为输出耦接到数据存储器4、或最小值查找器17或读取电路6的对应输出值。在此示例中,选择表15包括输入使
用值和识别对应核心部分的索引值,并且选择电路16查找指示待使用的核心部分的索引值。然后,使用索引值通过从神经网络引擎11接收所有输出值(来自步骤206的操作的所有iccp)并且仅输出对应于识别到的核心部分的输出值来获得对应的输出值。另选地,在完成步骤206的神经网络操作时,将所有iccp的输出存储在数据存储器4中,并且选择电路16读取对应于识别到的核心部分的iccp的输出值。
103.在一个示例中,由每个分类核心部分求解以生成输出值的数学方程是等效的,并且第一多个加权值的值对于每个分类核心部分而言是不相同的,使得指示对变量的估计的输出值对应于针对每个分类核心部分的该第一多个加权值。在一个示例中,每个独立分类核心部分的输入神经元与其他独立分类核心部分中的每个其他独立分类核心部分的输入神经元相同,并且被配置为接收与该其他独立分类核心部分中的每个其他独立分类核心部分的输入神经元相同的使用值。
104.当输出指示tvso-re曲线的系数或错误tvso值的量时,最小值查找器编程83能够在步骤209中操作(例如,通过在闪存控制器3的处理器上运行编程)以找到曲线的最小值点并且识别对应于曲线中的识别到的最小值点的tvso-min。
105.在步骤210中,使用阈值电压漂移读取操作读取闪存存储器设备,该阈值电压漂移读取操作使用识别到的tvso-min被执行。每次从主机计算机接收读取指令时,执行步骤206的单个神经网络操作。更具体地,响应于在主机连接器插座14处接收读取指令,执行步骤206至步骤209,以便生成tvso-min值,并且读取电路6使用在步骤209中识别到的tvso-min值来执行步骤210的读取。
106.在另一示例中,步骤206至步骤209由后台中的闪存控制器3执行,而无需来自主机的任何触发。在此示例中,在内部控制器事件诸如定时器或计数器事件(例如,后台读取)时,由闪存控制器3执行步骤206至步骤209,以监测闪存存储器设备9的可靠性状态,并且将在步骤209中识别到的tvso-min值存储在表中。在一个示例中,选择电路16能够操作以将值存储在表15a中,该表包括使用特性和对应的tvso-min值,该表可以被称为“tvso-min表”。在此示例中,当在步骤205中指示的读取待执行时,识别使用值(步骤204),并且选择电路16使用识别到的使用值来查找在读取中待使用的对应tvso-min值。另选地,查找过程可以由读取电路6执行。
107.在一个示例中,每个iccp对应于单个类别的字线值、单个类别的块值、单个类别的保留时间值、单个类别的读取干扰值和指示闪存存储器的寿命中的时段的单个值;并且每个iccp的第一输入神经元被配置为接收字线值,每个iccp的第二输入神经元被配置为接收块值,每个iccp的第三输入神经元被配置为接收保留时间值,每个iccp的第四输入神经元被配置为接收读取干扰值,并且每个iccp的第五输入神经元被配置为接收编程/擦除值。
108.在一个示例中,在iccp的每个输出神经元处生成的输出可以由数学方程表示,该数学方程包括对应于提供给该iccp的每个输入神经元的值的变量、加权值和偏差值;以及其中每个特定iccp的输出神经元与其他iccp的输出神经元求解相同的方程,使得不同iccp的输出之间的唯一差异是该特定iccp的不同加权值和偏差值的结果。
109.图15示出了示例性rnn推断模40a的图,该示例性rnn推断模型包括多个输入神经元41a、多个输出神经元45a和隐藏神经元层42至隐藏神经元层44。针对rnn推断模型40a的输入参数值包括参考值。在一个实施方案中,参考值是识别值,该识别值识别待读取的闪存
存储器设备的一个或多个特性,诸如例如制造商、零件编号和/或制造批号,但不限于此。通过包括识别闪存存储器设备的类型的参考值,可以使用rnn推断模型,该rnn推断模型可以识别针对不同类型的闪存存储器设备的tvs-re曲线。在另一实施方案中,参考值是读取参考编号,该读取参考编号是由闪存存储器设备的制造商指定的编号,该编号指示哪个读取参考电压待用于读取页面。例如,在一种类型的闪存存储器设备中,读取参考编号1和读取参考编号5与下部页面相关联,读取参考编号2、读取参考编号4和读取参考编号6与中间页面相关联,并且读取参考编号3和读取参考编号7与上部面相关联。在一个示例中,读取参考编号是识别读取参考电压的一个或多个值,该读取参考电压用于执行读取(例如,对应于特定读取操作的读取参考编号)。
110.输入参数值进一步包括识别待读取的页面的一个或多个值,在这个示例中,该一个或多个值包括识别在步骤205待读取的页面的块的块值和指示待读取的页面的字线的字线值。在其中ssd 10包括128个闪存存储器设备9的一个示例性实施方案中,该闪存存储器设备中的每个闪存存储器设备包括2048个块,可以给块分配0至262,143的块编号,其中块编号为在步骤205中待读取的页面的块编号。
111.在这个示例中,步骤204包括对闭合块读取的数量进行计数,并且针对神经网络操作的输入参数值包括指示块的闭合块读取的数量的值,该块包括待读取的页面(即读取干扰值)。步骤204还包括确定闭合块保留时间,针对神经网络操作的输入包括指示块的闭合块保留时间的值,该块包括待读取的页面(即保留时间值)。另外,步骤204包括对闪存存储器设备的每个块的编程和擦除循环的数量进行计数,并且闪存存储器设备的寿命中的当前点被确定为包括待读取的页面的块的编程和擦除循环的当前数量(即编程/擦除值)。
112.输出神经元45a以定义tvs-re曲线的指数值的形式生成输出。rnn推断模型40a的示例性输出被示出为包括六个指数,示出为第一指数、第二指数、第三指数、第四指数、第五指数和第六指数。应当理解,rnn推断模型40a可以具有任何数量的指数,并且指数的数量可以被改变以实现处理时间与精度之间的平衡。在这个实施方案中,在步骤209中,指数耦接到最小值查找器82,该最小值查找器能够操作以接收指数作为输入并识别对应于曲线的最小值的tvso值(tvsomin)。
113.在图16所示的示例中,输出神经元45b生成指示对应于tvso值的位置处的错误的数量的值。在这个示例中,输出神经元45b包括针对每个tvso值(针对n个tvso值)生成输出的输出神经元,诸如例如在使用第一tvso值时预测错误的输出神经元(pred-err tvso1)、在使用第二tvso值时预测错误的输出神经元(pred-err tvso2)、在使用第三tvso值时预测错误的输出神经元(pred-err tvso3)、在使用第四tvso值时预测错误的输出神经元(pred-err tvso4)、在使用第五tvso值时预测错误的输出神经元(pred-err tvso5)等直到在使用第ntvso值时预测错误的输出神经元(pred-err tvson)。在一个具体实例方案中,使用来自-32
……0……
32的tvso值,并且pred-err tvso1是当使用-32的tvso时的预测误差,pred-err tvso2是当使用-31的tvso时的预测误差,pred-err tvso3是当使用-30的tvso时的预测误差,pred-err tvso4是当使用-29的tvso时的预测误差,pred-err tvso5是当使用-28的tvso时的预测误差,以及pred-err tvson是当使用 32的tvso时的预测误差。
114.如图16所示,当输出是指示对应于tvso值的位置处的错误的数量的量值时,在步骤209中,最小值查找器编程83仅需识别哪个输出生成最低错误,以确定对应于tvse曲线的
最小值的tvso值,因为已知哪个tvso值对应于每个输出神经元。然而,当输出神经元以指数形式生成输出时,最小值查找器编程83包括用于识别最小值在哪里(例如,在x轴上哪里)的算法,并且识别对应于曲线上的识别到的最小值点的tvso值(例如,与曲线上识别到的最小值点最接近的整数tvso值)。
115.图17示出了示例性mcnni-tvso推断模型40c,除了每个iccp包括具有比模型40a少一个输入神经元的输入神经元41b,该示例性mcnni-tvso推断模型与图15所示的mcnni-tvso推断模型40a相同并且没有包括参考值作为输入。图18示出了示例性mcnni-tvso推断模型40d,除了每个iccp包括具有比模型40a少一个输入神经元的输入神经元41b,该示例性mcnni-tvso推断模型与图16所示的mcnni-tvso推断模型40b相同并且没有包括参考值作为输入。
116.图19示出了mcnni-tvso模型,该mcnni-tvso模型在输出神经元45c处生成输出,该输出神经元指示对应于针对阈值电压漂移读取错误(tvs-re)曲线的最小错误的最小数量(tvso-min)的阈值电压漂移偏移(tvso)值。由于这个实施方案指示tvso-min,因此不需要执行步骤209并且不需要最小值查找器17。相反,在步骤208中将对应于在步骤207中识别的输入使用值的tvso-min输出到读取电路6或将其存储在数据存储器4中(例如,在表15a中)。
117.本发明的方法和装置对影响uber的多个因素进行建模并且在闪存控制器上生成识别tvs-re曲线的tvsomin的输出,该tvsomin准确地反映待读取的位置的物理特性、待读取的位置的结构特性(例如,待读取的字线和块)、待读取的位置的当前寿命/物理退化(例如,p/e循环的数量)以及待读取的位置的当前暂态特性(例如,闭合块读取干扰和闭合块保留时间)。因为生成的tvs-re曲线准确地表示影响uber的因素,所以tvsomin将是用于执行读取的适当tvso值(对应于在设备表征期间提供最小数量的错误的tvso值)。使用适当tvso值执行读取导致在闪存控制器处的读取错误的数量减少。在ssd的寿命期间,本发明的方法和装置的读取错误的数量减少在可接受水平内有效地维持uber。
118.此外,为了讨论和理解本发明的实施方案,应当理解,本领域技术人员使用各种术语来描述技术和方法。此外,在本说明书中,为了进行解释,阐述了许多具体细节以便提供本发明的透彻理解。然而,对于本领域普通技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明。在一些情况下,为了避免模糊本发明,以框图形式而不是详细地示出熟知的结构和设备。充分详细地描述了这些实施方案以使得本领域普通技术人员能够实践本发明,并且应当理解,在不脱离本发明的范围的情况下,可以利用其他实施方案,并且可以作出逻辑、机械、电气和其他改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献