本发明涉及一种存储器操作方法以及相关的存储器装置,且特别涉及一种对存储器装置编程的方法以及相关的存储器装置。
背景技术:
存储器编程操作典型地被分成两类:单存储单元编程操作以及页编程操作。前者仰赖反复的编程-验证操作以确保存储单元量值落在目标范围内。后者则是在验证操作之前对整页的存储单元进行编程。
然而,对于受到电阻飘移效应影响的相变化存储器(phase change memory,PCM)而言,其存储单元电阻会随着时间而改变。此电阻变化会使被验证的存储单元电阻值在单存储单元编程操作或页编程操作的过程中产生错误的最终电阻值,并导致最终的电阻值分布变宽。
因此,如何提供一种可减缓存储单元间的电阻飘移效应以及改善数据可靠度的存储器编程技术,乃目前业界所致力的课题之一。
技术实现要素:
本发明涉及一种对存储器装置编程的方法以及相关的存储器装置。
依据本发明的一实施例,提出一种对存储器装置编程的方法,该存储器装置包括多个存储单元。该方法包括以下步骤:执行一插入编程,包括:在一第一时段对所述存储单元中的一第一存储单元编程,并对应地在一第二时段对该第一存储单元进行验证;在一第三时段对所述存储单元中的一第二存储单元编程,并对应地在一第四时段对该第二存储单元进行验证,该第四时段介于该第一时段与该第二时段之间;以及在该第一时段与该第二时段之间插入至少一延迟周期,以确保该第一存储单元的单位时间电阻值变化小于一阈值。
依据本发明的另一实施例,提出一种存储器装置。该存储器装置包括存储器阵列、列译码器、行译码器以及控制器。该存储器阵列包括多个存储单元。该列译码器通过多条字符线连接所述存储单元。该行译码器通过多条位线连接所述存储单元。该控制器执行一插入编程,使该列译码器以及该行译码器:在一第一时段对所述存储单元中的一第一存储单元编程,并对应地在一第二时段对该第一存储单元进行验证;在一第三时段对所述存储单元中的一第二存储单元编程,并对应地在一第四时段对该第二存储单元进行验证,该第四时段介于该第一时段与该第二时段之间;以及在该第一时段与该第二时段之间插入至少一延迟周期,以确保该第一存储单元的单位时间电阻值变化小于一阈值。
为了对本发明的上述及其他方面有更佳的了解,下文特举优选实施例,并配合附图,作详细说明如下:
附图说明
图1是依据本发明的一实施例的存储器装置;
图2显示了一例存储单元的标准化电阻飘移特性;
图3是依据本发明的一实施例的存储器编程的流程图;
图4是依据本发明的一实施例的插入排程的流程图;
图5是依据本发明的一实施例的插入编程的流程图;
图6显示了依据本发明的一实施例的一例重排后ISPP序列;
图7显示了依据本发明的一实施例的另一例重排后ISPP序列;
图8A显示了基于本发明提供的插入编程技术所得到的例示性电阻飘移分布;
图8B显示了基于原始编程技术所得到的例示性电阻飘移分布;
图9显示了计算自第8A及8B图中的飘移系数。
【附图标记说明】
100:存储器装置
102:存储器阵列
104:列译码器
106:感测放大器/数据输入结构
108:行译码器
110:控制器
112:查阅表
202:标准化电阻特性曲线
300、400、500:流程图
302、304、306、308、310、312、402、404、502、504、506、508、510、512、514:步骤
MC(1,1)~MC(M,N):存储单元
WL(1)~WL(M):字符线
BL(1)~BL(N):位线
RDR:快速飘移区
SDR:慢速飘移区
Δr:电阻变化量
Δt:单位时间
P(n,m):编程操作
V(n,m):验证操作
D、D1、D2、D3:延迟周期
TP:编程时间
TV:验证时间
TD:延迟时间
T1~Tk、T1’~Tk’:间隔时间
IP:初始阶段
PV:编程及验证阶段
VD:验证及延迟阶段
具体实施方式
以下通过实施例进行详细说明,实施例仅用以作为范例说明,并不会限制本发明欲保护的范围。此外,实施例中的附图省略了不必要的元件,以清楚显示本发明的技术特点。
图1是依据本发明的一实施例的存储器装置100。存储器装置100包括存储器阵列102、列译码器104、感测放大器/数据输入结构106、行译码器108以及控制器110。存储器阵列102包括多个存储单元MC(1,1)、MC(1,2)...以及MC(M,N)(在此称为存储单元MC)。存储单元MC可以是相变化存储器(phase change memory,PCM)存储单元或其它种类的存储单元。列译码器104通过多条字符线WL(1)-WL(M)(在此称为字符线WL)连接至存储单元MC。响应于所接收的地址信息,列译码器104可通过所述字符线WL自M列的存储单元MC中选择其中之一。感测放大器/数据输入结构106可通过位线BL(1)-BL(N)(在此称为位线BL)侦测储存在存储单元MC中的数据。举例来说,感测放大器/数据输入结构106包括用于读取、设定以及重设模态的电流源,并通过位线BL耦接至行译码器108。行译码器108通过所述位线BL连接至存储单元MC。响应于所接收的地址信息,行译码器108可通过所述位线BL自N行的存储单元MC中选择其中之一。控制器110可控制列译码器104以及行译码器108执行编程操作、验证操作、延迟操作或其它操作。在一实施例中,存储器装置100可还包括一查阅表112以记录多个关联于存储单元MC的电阻特性的参数。储存于查阅表112中的参数可供控制器110用于制定最佳的编程策略。
请参考图2及图3。图2显示了一例存储单元MC的标准化电阻特性。图3是依据本发明的一实施例的存储器编程的流程图300。
一般而言,一存储单元MC的电阻会随时间飘移并可通过以下的指数函数来模型化:
其中项次R0表示初始电阻、项次t0表示参考时间、项次γ表示电阻飘移系数。
通过将方程式eq1除以R0并使γ=0.1且t0=1,可得到图2中的标准化电阻特性曲线202。一般来说,存储单元MC的电阻特征曲线可分成两个区域:快速飘移区RDR以及慢速飘移区SDR。在一实施例中,快速飘移区RDR及慢速飘移区SDR可通过电阻特性曲线的切线斜率(Δr/Δt)来区分。举例来说,对于切线斜率大于一阈值的曲线区段,可将其视为落在快速飘 移区RDR;而对于切线斜率小于一阈值的曲线区段,则可将其视为落在慢速飘移区SDR。因此,存储单元MC在快速飘移区RDR中的单位时间(Δt)电阻变化量(Δr)大于在慢速飘移区SDR中的单位时间电阻变化量。如图2所示,曲线202快速飘移区RDR中快速地上升,并在慢速飘移区SDR缓慢地上升。由于存储单元MC中的数据由其电阻值决定,故当一存储单元MC操作在其快速飘移区RDR,将会降低数据的可靠度。
为解决电阻飘移问题,控制器110可执行插入(interleaving)排程以避免操作在快速飘移区RDR(步骤302)。举例来说,控制器110可基于储存在查阅表112中的参数,适应性地重新排列增量步阶脉冲编程(Incremental Step Pulse Programming,ISPP)中的操作次序以确保各个编程操作与其对应的验证操作之间有足够的间隔时间。在一实施例中,插入排程的策略可考虑以下条件:
1.确保各个编程操作与其对应的验证操作之间有足够的间隔时间以避免操作在快速飘移区RDR;及/或
2.使所述存储单元MC之间的间隔时间差异最小化/均等;以及
3.在必要时插入延迟周期(延迟操作)以满足上述一或两个条件。
在步骤304,控制器110可执行插入编程以控制列译码器104及行译码器108执行排程后的编程/验证/延迟操作。举例来说,控制器110可控制列译码器104及行译码器108:
在第一时段对图1中所示的存储单元MC(1,1)进行编程,并对应地在第二时段对该存储单元MC(1,1)进行验证;
在第三时段对存储单元MC(1,2)进行编程,并对应地在第四时段对该存储单元MC(1,2)进行验证,该第四时段介于第一时段与第二时段之间;以及
在第一时段与第二时段之间插入至少一延迟周期,以确保存储单元MC(1,1)的单位时间电阻值变化小于一阈值,也就是说,确保在存储单元MC(1,1)的慢速飘移区SDR或非快速飘移区进行读取。
在步骤306,控制器110可检查是否所有排程后的存储单元操作(例如,编程/验证/延迟操作)皆被执行。若否,则执行步骤308,下一操作被执行。
在所有排程后的存储单元操作皆被执行后,控制器110可检查是否所有的存储单元MC(或是存储单元MC中的一目标组,例如存储单元MC(1,1)至MC(1,n),n为小于N的整数)皆被屏蔽(步骤310)。倘若仍有剩余未被屏蔽的存储单元MC,则执行步骤312,下一编程阶段依据ISPP方案而被施加至此些未被屏蔽的存储单元MC。
图4是依据本发明的一实施例的插入排程的流程图400。在步骤402,控制器402可基于上述的插入排程策略,针对各目标存储单元MC决定一插入时间以避免在所述目标存储单元MC的快速飘移区RDR进行读取。
插入时间可指示编程操作与其对应验证操作之间的间隔时间。在一实施例中,插入时间可通过搜寻查阅表112而取得,该查阅表112记录多个有关于存储单元MC的电阻特性的参数。所述参数例如包括温度、编程时间、验证时间、目标插入时间以及延迟时间至少其中之一。在另一实施例中,插入时间可通过对存储单元MC执行一或多次的测试存取而取得。举例来说,控制器110可读取存储单元MC以取得读取结果数据,并基于读取结果数据模型化存储单元MC的电阻特性以决定插入时间。
在步骤404,控制器110可基于插入时间来重新排程ISPP序列并决定未屏蔽的存储单元MC的操作。举例来说,控制器110可依据插入时间决定要在编程操作与其对应验证操作之间的间隔时间内插入多少个延迟周期、编程操作或验证操作。基于重新排程后的ISPP序列,对未屏蔽存储单元MC的操作可接着被决定。
图5是依据本发明的一实施例的插入编程的流程图500。如前所述,插入编程包括执行重排后ISPP序列的编程/验证/延迟操作。如图5所示,控制器110先判断针对目标存储单元MC的当前操作是否为验证操作(步骤502)。若是,控制器110将对目标存储单元MC进行验证。举例来说,控制器110可验证目标存储单元MC的存储单元量值(例如,电压、电流或电阻值)是否落在目标电阻区域内(步骤504)。若是,控制器110则将该目标存储单元MC屏蔽于之后的操作(步骤506)。反之,若步骤502的判断结果为否,则控制器110将检查当前的操作是否为编程(步骤508)。若是,控制器110将对目标存储单元MC进行编程。举例来说,控制器110可查找查阅表112以取得一编程条件(步骤510),并以编程脉冲对目标存 储单元MC进行编程(步骤512)。若否,则控制器110可等待(延迟)一延迟周期TD以满足插入排程策略(步骤514)。
图6显示了依据本发明的一实施例的一例重排后ISPP序列。在图6中,「X(n,m)」表示在第m个ISPP步阶对目标存储单元组中的第n个存储单元进行编程/验证(X=P或V)操作;「D」表示延迟周期。假设目标存储单元组包括k个存储单元(例如,MC(1,1)至MC(1,k),k为小于等于N的整数),则P(1,1)表示在第1个ISPP步阶时对存储单元MC(1,1)的编程操作;P(2,1)表示在第1个ISPP步阶时对存储单元MC(1,2)的编程操作P(2,1);P(k-1,1)表示在第1个ISPP步阶时对存储单元MC(1,k-1)的编程操作;P(k,1)表示在第1个ISPP步阶时对存储单元MC(1,k)的编程操作,以此类推。类似地,P(1,2)表示在第2个ISPP步阶时对存储单元MC(1,1)的编程操作;P(2,2)表示在第2个ISPP步阶时对存储单元MC(1,2)的编程操作P(2,1);P(k-1,2)表示在第2个ISPP步阶时对存储单元MC(1,k-1)的编程操作;P(k,2)表示在第2个ISPP步阶时对存储单元MC(1,k)的编程操作,以此类推。
在此实施例中,各个编程操作有其对应的验证操作。如图6所示,对应于编程操作P(1,1)的V(1,1)表示在第1个ISPP步阶时对存储单元MC(1,1)的验证操作;对应于编程操作P(2,1)的V(2,1)表示在第1个ISPP步阶时对存储单元MC(1,2)的验证操作;对应于编程操作P(k-1,1)的V(k-1,1)表示在第1个ISPP步阶时对存储单元MC(1,k-1)的验证操作;对应于编程操作P(k,1)的V(k,1)表示在第1个ISPP步阶时对存储单元MC(1,k)的验证操作,以此类推。
在图6的例子中,各编程操作的编程时间为TP,个验证操作的验证时间为TV,而各延迟周期D的延迟时间为TD。若TP>>TV且TP=TD,对于目标存储单元(例如MC(1,1)至MC(1,k))的插入时间将等于TP,而各编程操作与其对应验证操作之间的各个间隔时间T1至Tk可表示为:
T1=TP
T2=TP+TV≈TP
.
. (eq2)
.
Tk-1=TP+TV≈TP
Tk=TV+TD≈TP
由方程式eq2可看出,间隔时间T1至Tk约等于插入时间(1*TP)。针对相同的ISPP步阶而言,可视为各编程操作与其对应验证操作之间隔着一个编程操作,除了最后一个编程操作与其对应的验证操作隔着一个延迟周期D。如图6所示,编程操作P(1,1)与其对应的验证操作V(1,1)之间隔着编程操作P(2,1);编程操作P(2,1)与其对应的验证操作V(2,1)之间隔着编程操作P(3,1);编程操作P(k-1,1)与其对应的验证操作V(k-1,1)之间隔着编程操作P(k,1);编程操作P(k,1)与其对应的验证操作V(k,1)之间隔着一个延迟周期D。
图7显示了依据本发明的一实施例的另一例重排后ISPP序列。图6与图7例子之间的主要差异在于图7中针对各目标存储单元MC(1,1)至MC(1,k)的插入时间为3*TP。若TP>>TV且TP=TD,各编程操作与其对应验证操作之间的各个间隔时间T1’至Tk’可表示为:
T1′=3TP
T2′=3TP+TV≈3TP
.
. (eq3)
.
Tk-1′=TP+2TD+TV≈TP+2TD≈3TP
Tk′=3TD+3TV≈3TD≈3TP
由方程式eq3可看出,间隔时间T1’至Tk’约等于插入时间(3*TP)。针对相同的ISPP步阶而言,可视为各编程操作与其对应验证操作之间隔着三个编程操作,除了最后一个编程操作(例如P(k,1))与其对应的验证操作(例如V(k,1))隔着三个延迟周期D,如图7所示。
可理解的是,本发明并不以上述例子为限。在另一实施例中,多个目标存储单元所各自对应的插入时间可依据实际需求来选择,且可以是不相等。
基于第6、7图中的排程规则,重排后ISPP序列可包括一初始阶段(Initial Phase)IP、一编程及验证阶段(Program&Verify Phase)PV以及一验证及延迟阶段(Verify&Dummy Phase)VD。在初始阶段IP中,多个目标存储单元中的一部分被依序地进行编程且不执行验证。也就是说,多个编程操作在此阶段IP依序地被执行,且不执行任何验证操作。初始阶段IP中编程操作的数量由插入时间决定。如图6所示,两个(1+插入时间中的编程脉波)存储单元MC(1,1)、MC(1,2)在初始阶段IP中依序地被编程(P(1,1) 及P(2,1))。类似地,如图7所示,四个(1+插入时间中的编程脉波)存储单元MC(1,1)至MC(1,4)在初始阶段IP中依序地被编程(P(1,1)至P(4,1))。
编程及验证阶段PV可视为编程操作与验证操作的混合。在一实施例中,编程操作与验证操作在此阶段PV中交替地被执行。以图6为例,验证操作V(1,1)、编程操作P(3,1)、验证操作(2,1)、编程操作(4,1),...,及验证操作V(k-1,1)在编程及验证阶段PV被交替地执行。
验证及延迟阶段VD可视为验证操作与延迟操作的混合。如图6所示,在验证及延迟阶段VD中,验证操作V(k,1)紧接着延迟周期(延迟操作)D。在图7中,延迟周期D1、验证操作V(k-2,1)、延迟周期D2、验证操作V(k-1,1)、延迟周期D3以及验证周期V(k,1)在此阶段VD中被交替地执行。
请参考图8A及图8B。图8A显示了基于本发明提供的插入编程技术所得到的例示性电阻飘移分布。图8B显示了基于原始编程技术所得到的例示性电阻飘移分布,该原始编程技术中,各验证操作紧接着其对应的编程操作。
为方便比较,第8A及8B图中的电阻飘移分布经过相同时间后取得(例如100秒),且针对相同数量的存储单元(例如256个存储单元)。在图8A中,插入时间约等于16*TP(约1.6μs,其中TP=100ns),且初始电阻值(R0)等于1MΩ。由所述图中可看出,插入编程技术可产生较紧密的电阻飘移分布。
图9显示了计算自第8A及8B图中的飘移系数(γ)。如图9所示,本发明提供的插入编程技术可使飘移系数较平均减少33%,故可减缓电阻飘移效应。
总而言之,本发明的实施例可通过在编程操作与其对应的验证操作之间插入操作以避免在快速飘移区中读取存储单元电阻值。此些操作可包括延迟周期、插入编程操作、插入验证操作或其它操作。基于插入排程策略,ISPP序列的次序可通过适当的插入时间而被重新安排,以得到较紧密的电阻飘移分布。因此,存储单元间的电阻飘移效应得以被减缓,且数据读取的可靠度亦可获得改善。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已, 并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。