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

存储器控制器及其操作方法与流程

2022-12-09 23:23:29 来源:中国专利 TAG:

存储器控制器及其操作方法
1.相关申请的交叉引用
2.本技术要求于2021年6月8日提交的、申请号为10-2021-0074347的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
3.本公开的各个实施例总体涉及一种电子装置,并且更特别地,涉及一种存储器控制器和操作该存储器控制器的方法。


背景技术:

4.存储装置是在诸如计算机、智能电话或智能平板的主机装置的控制下存储数据的装置。根据存储数据的装置,存储装置的示例包括诸如将数据存储在磁盘中的硬盘驱动器(hdd)的装置以及诸如将数据存储在半导体存储器,特别是非易失性存储器中的固态驱动器(ssd)或存储卡的装置。
5.存储装置可以包括存储数据的存储器装置以及控制数据在存储器装置中的存储的存储器控制器。此类存储器装置可以被分类为易失性存储器和非易失性存储器。非易失性存储器的代表性示例包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、相变随机存取存储器(pram)、磁性ram(mram)、电阻式ram(rram)以及铁电ram(fram)。


技术实现要素:

6.本公开的各个实施例涉及一种通过延迟输出暂停(suspend)命令的时间点来提高存储装置的性能的存储器控制器,以及操作该存储器控制器的方法。
7.本公开的实施例可以提供一种用于控制存储器装置的存储器控制器。该存储器控制器可以包括:命令生成器,被配置为从主机接收请求并且生成与该请求相对应的命令;命令队列,被配置为存储所生成的命令;命令控制器,被配置为控制命令队列向存储器装置提供命令队列中存储的命令;以及暂停控制器,被配置为当读取请求在存储器装置执行操作的同时从主机输入到命令生成器时,基于命令队列中存储的读取命令的数量来确定延迟时间量,并且在经过延迟时间量之后,向存储器装置提供指示暂停操作的暂停命令。
8.本公开的实施例可以提供一种操作存储器控制器的方法,该存储器控制器包括存储待由存储器装置执行的命令的命令队列。该方法可以包括:将命令队列中存储的命令依次提供给存储器装置;当读取请求在存储器装置响应于所提供的命令中的每一个而执行操作的同时从主机输入到存储器装置时,根据命令队列中存储的读取命令的数量来确定延迟时间量;在经过延迟时间量之后,向存储器装置提供指示暂停操作的暂停命令;以及在已经将暂停命令提供到存储器装置之后,向存储器装置提供命令队列中存储的读取命令。
9.本公开的实施例可以提供一种存储装置。存储装置可以包括:存储器装置,被配置为响应于输入命令而执行操作;以及存储器控制器,被配置为从主机接收请求,生成与请求
相对应的命令,将所生成的命令存储在命令队列中,控制命令队列向存储器装置依次提供命令队列中存储的命令作为输入命令,当读取请求在存储器装置执行与命令相对应的操作的同时从主机输入时,基于命令队列中存储的读取命令的数量来确定延迟时间量,以及在经过延迟时间量之后,向存储器装置提供指示暂停执行操作的暂停命令。
附图说明
10.图1是示出存储装置的框图。
11.图2是示出图1的存储器装置的结构的示图。
12.图3是示出图2的存储器单元阵列的实施例的示图。
13.图4示出输出暂停命令的过程。
14.图5示出图4的命令队列中存储的命令。
15.图6示出在已经从存储器控制器输出暂停命令之后取决于存储器装置的操作的就绪/忙碌信号。
16.图7示出延迟输出暂停命令的过程。
17.图8a和图8b是示出确定暂停命令的输出将被延迟的时间的方法的示图。
18.图9示出延迟输出暂停命令时的就绪/忙碌信号。
19.图10示出不延迟输出暂停命令时的就绪/忙碌信号。
20.图11是示出根据本公开的实施例的存储器控制器的操作的流程图。
21.图12是示出根据本公开的实施例的存储器控制器的操作的流程图。
22.图13是示出图1的存储器控制器的示例的示图。
23.图14是示出应用了根据本公开的实施例的存储装置的存储卡系统的框图。
24.图15是示出应用了根据本公开的实施例的存储装置的固态驱动器(ssd)系统的示例的框图。
25.图16是示出应用了根据本公开的实施例的存储装置的用户系统的框图。
具体实施方式
26.示出本说明书中介绍的本公开的实施例中的特定结构或功能描述以描述根据本公开的构思的实施例。根据本公开的构思的实施例可以以各种形式实施,并且不应被解释为限于本说明书中描述的实施例。
27.图1是示出根据本公开的实施例的存储装置的框图。
28.参照图1,存储装置50可以包括存储器装置100和存储器控制器200。
29.存储装置50可以是在诸如以下的主机300的控制下存储数据的装置:移动电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、电视(tv)、平板pc或车载信息娱乐系统。
30.根据作为用于与主机300通信的方案的主机接口,存储装置50可以被制造为各种类型的存储装置中的任意一种。例如,存储装置50可以被实施为各种类型的存储装置中的任意一种,例如,固态驱动器(ssd),诸如mmc、嵌入式mmc(emmc)、缩小尺寸的mmc(rs-mmc)或微型mmc的多媒体卡,诸如sd、迷你sd或微型sd的安全数字卡,通用串行总线(usb)存储装置,通用闪存(ufs)装置,个人计算机存储卡国际协会(pcmcia)卡型存储装置,外围组件互
连(pci)卡型存储装置,高速pci(pci-e或pcie)卡型存储装置,紧凑式闪存(cf)卡,智能媒体卡和记忆棒。
31.存储装置50可以以各种类型的封装形式来制造。例如,存储装置50可以以诸如以下的各种类型的封装形式来制造:堆叠封装(pop)、系统级封装(sip)、片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶圆级制造封装(wfp)和晶圆级堆叠封装(wsp)。
32.存储器装置100可以存储数据。存储器装置100响应于存储器控制器200的控制而操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。存储器单元阵列可以包括多个存储块。每个存储块可以包括可以组成多个页面的多个存储器单元。在实施例中,每个页面可以是在存储器装置100中存储数据或者读取存储器装置100中存储的数据的单位。存储块可以是擦除数据的单位。
33.在实施例中,存储器装置100可以采取诸如以下的多种可选形式:双倍数据速率同步动态随机存取存储器(ddr sdram)、低功率双倍数据速率第四代(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)sdram、rambus动态随机存取存储器(rdram)、nand闪存、垂直nand闪存、nor闪存装置、电阻式ram(rram)、相变ram(pram)、磁阻式ram(mram)、铁电ram(fram)或自旋转移力矩ram(stt-ram)。在本说明书中,为了便于描述,将针对作为nand闪存的存储器装置100进行描述。
34.存储器装置100被实施为二维(2d)阵列结构或三维(3d)阵列结构。在下文中,尽管3d阵列结构被描述为实施例,但本公开不限于3d阵列结构。本公开不仅可以应用于电荷存储层由导电浮栅(fg)形成的闪存装置,而且还可以应用于电荷存储层由绝缘层形成的电荷撷取闪存(ctf)存储器装置。
35.在实施例中,存储器装置100可以以在一个存储器单元中存储一个数据位的单层单元(slc)方式来操作。替代地,存储器装置100可以以在一个存储器单元中存储至少两个数据位的方式来操作。例如,存储器装置100可以以在一个存储器单元中存储两个数据位的多层单元(mlc)方式、在一个存储器单元中存储三个数据位的三层单元(tlc)方式、或在一个存储器单元中存储四个数据位的四层单元(qlc)方式来操作。
36.存储器装置100可以从存储器控制器200接收命令和地址,并且可以访问存储器单元阵列的、由地址选择的区域。也就是说,存储器装置100可以响应于命令而对由地址选择的区域执行操作。例如,存储器装置100可以响应于接收到的命令而执行写入操作(即,编程操作)、读取操作或擦除操作。当接收到编程命令时,存储器装置100可以将数据编程到由地址选择的区域。当接收到读取命令时,存储器装置100可以从由地址选择的区域读取数据。当接收到擦除命令时,存储器装置100可以擦除由地址选择的区域中存储的数据。
37.存储器控制器200可以控制存储装置50的整体操作。
38.当向存储装置50施加电源电压时,存储器控制器200可以运行固件。当存储器装置100为闪存装置时,存储器控制器200可以运行诸如用于控制主机300与存储器装置100之间的通信的闪存转换层(ftl)的固件。
39.在实施例中,存储器控制器200可以包括可以从主机300接收数据和逻辑块地址(lba)的固件(未示出),并且可以将逻辑块地址(lba)转换为指示存储器装置100中包括的并且待存储数据的存储器单元的地址的物理块地址(pba)。进一步,存储器控制器200可以将配置逻辑块地址(lba)与物理块地址(pba)之间的映射关系的逻辑-物理地址映射表存储
在缓冲存储器中。
40.存储器控制器200可以控制存储器装置100,以使得响应于从主机300接收到的请求而执行编程操作、读取操作或擦除操作。例如,当从主机300接收到编程请求时,存储器控制器200可以将编程请求转换为编程命令,并且可以将编程命令、物理块地址(pba)和数据提供给存储器装置100。当从主机300接收到读取请求以及逻辑块地址时,存储器控制器200可以将读取请求转换为读取命令,选择与逻辑块地址相对应的物理块地址,之后将读取命令和物理块地址(pba)提供给存储器装置100。当从主机300接收到擦除请求以及逻辑块地址时,存储器控制器200可以将擦除请求转换为擦除命令,选择与逻辑块地址相对应的物理块地址,之后将擦除命令和物理块地址(pba)提供给存储器装置100。
41.在实施例中,存储器控制器200可以包括命令生成器210、命令队列220、命令控制器230和暂停控制器240。
42.在实施例中,命令生成器210可以生成与从主机300接收到的请求相对应的命令,并且可以将该命令存储在命令队列220中。命令控制器230可以控制命令队列220,以使得在存储器装置100和存储器控制器200中的每一个处于可操作状态时,将命令队列220中存储(排队)的命令依次输出到存储器装置100。命令队列220中存储的命令可以被依次输出到存储器装置100,并且存储器装置100可以响应于接收到的命令而执行操作。
43.具体地,当从主机300接收到编程请求、读取请求或擦除请求时,命令生成器210可以将与编程请求相对应的编程命令、与读取请求相对应的读取命令或与擦除请求相对应的擦除命令存储在命令队列220中。当编程命令、读取命令或擦除命令被存储在命令队列220中时,命令控制器230可以控制命令队列220以使得将命令队列220中存储的命令按照命令被存储在命令队列220中的顺序依次输出到存储器装置100。存储器装置100可以接收从命令队列220输出的命令,并且可以响应于接收到的命令而分别执行操作。
44.在实施例中,命令生成器210可以在存储器装置100响应于编程命令而执行编程操作或响应于擦除命令而执行擦除操作的同时从主机300接收读取请求。读取请求可以是由主机300做出以指示读取存储器装置100中包括的多个页面中的一个中存储的数据的请求。
45.在实施例中,与读取操作相比,执行编程操作或擦除操作可能需要相对较长的时间。因此,为了改善指示存储装置50的性能的时延,可以暂停正执行的编程操作或擦除操作,并且可以优先执行读取操作。
46.因此,当从主机300接收到读取请求时,命令生成器210可以生成与读取请求相对应的读取命令,将读取命令存储在命令队列220中,之后通知暂停控制器240读取命令已经被存储在命令队列220中。当读取命令被存储在命令队列220中时,暂停控制器240可以生成暂停命令并且将暂停命令输出到存储器装置100以暂停正对存储器装置100执行的操作,也就是说,优先响应于读取命令而执行操作。存储器装置100可以响应于暂停命令而暂停正执行的操作。当正对存储器装置100执行的操作是编程操作时,可以在暂停编程操作的同时对待编程的数据进行备份。
47.在实施例中,在存储器装置100响应于暂停命令而暂停当前执行的操作之后,存储器装置100可以优先执行读取操作。然而,当存储器装置100暂停当前执行的操作之后执行的读取操作的数量很小时,暂停控制器240可能响应于在暂停操作之后的预定时间段内接收到的读取请求而频繁地输出暂停命令。
48.暂停命令输出得越频繁,时延越劣化。随着时延的劣化,对存储器装置100执行的操作之间的等待时间可能会延长。
49.因此,本公开提出一种将输出暂停命令的时间点延迟与命令队列220中存储的读取命令的数量相对应的延迟时间量的方法。根据本公开的实施例,暂停命令可以从它最初应该被输出的时间点开始被延迟一延迟时间量。最初应该输出暂停命令的时间点可以是读取命令在命令队列220中排队的时间点。
50.在实施例中,暂停控制器240可以确定输出暂停命令的延迟时间量。
51.具体地,当暂停控制器240从命令生成器210接收到指示读取命令被存储在命令队列220中的信息时,暂停控制器240可以从命令队列220接收与命令队列220中存储的读取命令的数量有关的信息。暂停控制器240可以基于从命令队列220接收的信息来输出暂停命令。这里,暂停控制器240可以根据命令队列220中存储的读取命令的数量来确定输出暂停命令的延迟时间量,并且可以基于所确定的延迟时间量来确定输出暂停命令的时间点。
52.在实施例中,存储器控制器200可以控制至少两个存储器装置。在这种情况下,存储器控制器200可以根据交错方案来控制存储器装置以提高操作性能。
53.主机300可以使用诸如以下的各种通信标准或接口中的至少一种来与存储装置50通信:通用串行总线(usb)通信方法、串行at附件(sata)通信方法、串列scsi(sas)通信方法、高速芯片间(hsic)通信方法、小型计算机系统接口(scsi)通信方法、外围组件互连(pci)通信方法、高速pci(pcie)通信方法、高速非易失性存储器(nvme)通信方法、通用闪存(ufs)通信方法、安全数字(sd)通信方法、多媒体卡(mmc)通信方法、嵌入式mmc(emmc)通信方法、双列直插式存储器模块(dimm)通信方法、寄存式dimm(rdimm)通信方法以及低负载dimm(lrdimm)通信方法。
54.图2是示出根据本公开的实施例的图1的存储器装置的结构的示图。
55.参照图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
56.存储器单元阵列110包括多个存储块blk1至blkz。多个存储块blk1至blkz通过行线rl来联接到行解码器121。存储块blk1至blkz中的每一个可以通过位线bl1至bln来联接到页面缓冲器组123。存储块blk1至blkz中的每一个可以包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。联接到相同字线的存储器单元可以被定义为单个页面。因此,单个存储块可以包括多个页面。
57.行线rl可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。
58.存储器单元阵列110中包括的存储器单元中的每一个可以被实施为能够存储一个数据位的单层单元(slc)、能够存储两个数据位的多层单元(mlc)、能够存储三个数据位的三层单元(tlc)或能够存储四个数据位的四层单元(qlc)。
59.外围电路120可以在控制逻辑130的控制下对存储器单元阵列110的所选区域执行编程操作、读取操作或擦除操作。外围电路120可以驱动存储器单元阵列110。例如,外围电路120可以在控制逻辑130的控制下向行线rl和位线bl1至bln施加各种操作电压或释放所施加的电压。
60.外围电路120可以包括行解码器121、电压生成器122、页面缓冲器组123、列解码器124、输入/输出电路125以及感测电路126。
61.行解码器121通过行线rl联接到存储器单元阵列110。行线rl可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。在实施例中,字线可以包括正常字线和虚拟(dummy)字线。在实施例中,行线rl可以进一步包括管道选择线。
62.行解码器121可以对从控制逻辑130接收到的行地址radd进行解码。行解码器121根据解码后的地址选择存储块blk1至blkz中的至少一个。进一步,行解码器121可以选择所选存储块的至少一条字线wl,以使得根据解码后的地址将电压生成器122生成的电压施加到该至少一条字线wl。
63.例如,在编程操作期间,行解码器121可以将编程电压施加到所选字线并且将电平低于编程电压的电平的编程通过电压施加到未选字线。在编程验证操作期间,行解码器121可以将验证电压施加到所选字线并且将高于验证电压的验证通过电压施加到未选字线。在读取操作期间,行解码器121可以将读取电压施加到所选字线并且将高于读取电压的读取通过电压施加到未选字线。
64.在实施例中,基于存储块来执行存储器装置100的擦除操作。在擦除操作期间,行解码器121可以根据解码后的地址选择一个存储块。在擦除操作期间,行解码器121可以将接地电压施加到与所选存储块联接的字线。
65.电压生成器122可以在控制逻辑130的控制下操作。电压生成器122可以使用提供给存储器装置100的外部电源电压来生成多个电压。具体地,电压生成器122可以响应于操作信号opsig而生成用于编程操作、读取操作和擦除操作的各种操作电压vop。例如,电压生成器122可以在控制逻辑130的控制下生成编程电压、验证电压、通过电压、读取电压、擦除电压等。
66.在实施例中,电压生成器122可以通过调节外部电源电压来生成内部电源电压。由电压生成器122生成的内部电源电压用作存储器装置100的操作电压。
67.在实施例中,电压生成器122可以使用外部电源电压或内部电源电压来生成多个电压。
68.例如,电压生成器122可以包括用于接收内部电源电压的多个泵浦电容器,并且在控制逻辑130的控制下通过选择性地启用多个泵浦电容器来生成多个电压。
69.所生成的电压可以通过行解码器121被供应到存储器单元阵列110。
70.页面缓冲器组123包括第一页面缓冲器pb1至第n页面缓冲器pbn。第一页面缓冲器pb1至第n页面缓冲器pbn通过第一位线bl1至第n位线bln联接到存储器单元阵列110。第一页面缓冲器pb1至第n页面缓冲器pbn在控制逻辑130的控制下被操作。具体地,第一页面缓冲器pb1至第n页面缓冲器pbn可以响应于页面缓冲器控制信号pbsignals而被操作。例如,在读取操作或验证操作期间,第一页面缓冲器pb1至第n页面缓冲器pbn可以临时存储通过第一位线bl1至第n位线bln接收的数据,或者可以感测位线bl1至bln的电压或电流。
71.具体地,在编程操作期间,当将编程电压施加到所选字线时,第一页面缓冲器pb1至第n页面缓冲器pbn可以通过第一位线bl1至第n位线bln将通过输入/输出电路125接收的数据data传送到所选存储器单元。基于接收到的数据data对所选页面中的存储器单元进行编程。在编程验证操作期间,第一页面缓冲器pb1至第n页面缓冲器pbn可以通过感测通过第一位线bl1至第n位线bln接收的电压或电流来从所选存储器单元读取页面数据。
72.在读取操作期间,第一页面缓冲器pb1至第n页面缓冲器pbn可以通过第一位线bl1
至第n位线bln从所选页面中的存储器单元读取数据data,并且可以在列解码器124的控制下将读取的数据data输出到输入/输出电路125。
73.在擦除操作期间,第一页面缓冲器pb1至第n页面缓冲器pbn可以允许第一位线bl1至第n位线bln浮置或者可以将擦除电压施加到第一位线bl1至第n位线bln。
74.列解码器124可以响应于列地址cadd而在输入/输出电路125与页面缓冲器组123之间传送数据。例如,列解码器124可以通过数据线dl来与第一页面缓冲器pb1至第n页面缓冲器pbn交换数据,或者可以通过列线cl来与输入/输出电路125交换数据。
75.输入/输出电路125可以将从以上参照图1描述的存储器控制器(例如,图1的200)接收的命令cmd和地址addr传送到控制逻辑130,或者可以与列解码器124交换数据data。
76.在读取操作或验证操作期间,感测电路126可以响应于使能(enable)位vrybit而生成参考电流,并且可以将从页面缓冲器组123接收到的感测电压vpb与由参考电流生成的参考电压进行比较,然后输出通过信号pass或失败信号fail。
77.控制逻辑130可以通过响应于命令cmd和地址addr而输出操作信号opsig、行地址radd、页面缓冲器控制信号pbsignals和使能位vrybit,来控制外围电路120。例如,控制逻辑130可以响应于子块读取命令和地址而控制对所选存储块的读取操作。而且,控制逻辑130可以响应于子块擦除命令和地址而控制对所选存储块中包括的所选子块的擦除操作。另外,控制逻辑130可以响应于通过信号pass或失败信号fail而确定验证操作是通过还是失败。
78.图3是示出根据本公开的实施例的图2的存储器单元阵列的示例的示图。
79.参照图2和图3,图3是示出图2的存储器单元阵列110中包括的多个存储块blk1至blkz中的存储块blka的电路图。
80.存储块blka可以联接到彼此并行联接的第一选择线、字线和第二选择线。例如,字线可以彼此并行联接在第一选择线与第二选择线之间。这里,第一选择线可以是源极选择线ssl,而第二选择线可以是漏极选择线dsl。
81.具体地,存储块blka可以包括联接在位线bl1至bln与源极线sl之间的多个串。位线bl1至bln可以分别联接到串,并且源极线sl可以共同联接到串。由于串可以相同地配置,因此将通过示例的方式详细描述联接到第一位线bl1的串st。
82.串st可以包括彼此串联联接在源极线sl与第一位线bl1之间的源极选择晶体管sst、多个存储器单元f1至f16以及漏极选择晶体管dst。单个串st可以包括至少一个源极选择晶体管sst和至少一个漏极选择晶体管dst,并且在串st中可以包括比图中所示的存储器单元f1至f16更多的存储器单元。
83.源极选择晶体管sst的源极可以联接到源极线sl并且漏极选择晶体管dst的漏极可以联接到第一位线bl1。存储器单元f1至f16可以串联联接在源极选择晶体管sst与漏极选择晶体管dst之间。不同串st中包括的源极选择晶体管的栅极可以联接到源极选择线ssl,不同串st中包括的漏极选择晶体管的栅极可以联接到漏极选择线dsl,并且存储器单元f1至f16的栅极可以分别联接到多条字线wl1至wl16。在不同串st中包括的存储器单元之中,联接到相同字线的一组存储器单元可以被称为“物理页面:ppg”。因此,存储块blka可以包括与字线wl1至wl16的数量相同数量的物理页面ppg。
84.一个存储器单元可以存储一位数据。该单元通常被指定为“单层单元:slc”。这里,
一个物理页面ppg可以存储与一个逻辑页面lpg相对应的数据。与一个逻辑页面lpg相对应的数据可以包括与一个物理页面ppg中包括的存储器单元的数量相同数量的数据位。替代地,一个存储器单元可以存储两位或更多位的数据。该单元通常被指定为“多层单元:mlc”。这里,一个物理页面ppg可以存储与两个或多个逻辑页面lpg相对应的数据。
85.在一个存储器单元中存储两位或更多位数据的存储器单元被称为多层单元(mlc)。然而,最近,随着在一个存储器单元中存储的数据位的数量的增加,多层单元(mlc)是指存储两位数据的存储器单元,因此存储三位或更多位数据的存储器单元被称为三层单元(tlc),存储四位或更多位数据的存储器单元被称为四层单元(qlc)。另外,已经开发了存储多位数据的存储器单元方案,并且本实施例可以应用于存储两位或更多位数据的存储器装置100。
86.在实施例中,存储块中的每一个可以具有三维(3d)结构。存储块中的每一个可以包括堆叠在基板上的多个存储器单元。多个存储器单元沿x方向、y方向和z方向布置。
87.图4示出根据本公开的实施例的输出暂停命令的过程。
88.参照图4,在图4中示出从主机300接收读取请求read_req并且之后将暂停命令suspend_cmd输出到存储器装置100的过程。
89.在实施例中,主机300可以将编程请求pgm_req、读取请求或擦除请求ers_req输出到存储器控制器200。编程请求pgm_req可以是指示数据将被编程到存储器装置100的请求,读取请求可以是指示将读取存储器装置100中包括的所选存储器单元中存储的数据的请求,并且擦除请求ers_req可以是指示将擦除存储器装置100中包括的多个存储块之一的请求。
90.在实施例中,命令生成器210可以从主机300接收编程请求pgm_req或擦除请求ers_req,并且可以将与编程请求pgm_req相对应的编程命令pgm_cmd或与擦除请求ers_req相对应的擦除命令ers_cmd存储在命令队列220中。这里,命令被存储在命令队列220中的顺序可以是从主机300接收请求的顺序。
91.当命令被存储在命令队列220中时,命令控制器230可以基于存储器控制器200和存储器装置100的状态向命令队列220提供输出请求output_req,该输出请求output_req请求输出命令队列220中存储的命令。例如,当存储器控制器200和存储器装置100中的每一个都处于可操作状态时,命令控制器230可以将输出请求output_req提供到命令队列220。
92.命令队列220可以响应于从命令控制器230接收到的输出请求output_req而按照命令被存储的顺序依次输出所存储的命令。也就是说,命令队列220中存储的编程命令pgm_cmd或擦除命令ers_cmd可以按照命令被存储的顺序被依次输出。当编程命令pgm_cmd或擦除命令ers_cmd被输出到存储器装置100时,存储器装置100可以响应于编程命令pgm_cmd而执行编程操作或响应于擦除命令ers_cmd而执行擦除操作。
93.在实施例中,在存储器装置执行编程操作或擦除操作的同时,存储器控制器200可以从主机300接收读取请求read_req。然而,因为存储器装置100正执行操作,所以存储器控制器200可以控制存储器装置100以使得优先执行读取操作以改善时延。
94.具体地,当命令生成器210从主机300接收到读取请求read_req时,可以将与读取请求read_req相对应的读取命令read_cmd存储在命令队列220中。之后,命令生成器210可以将指示读取命令read_cmd已经被存储在命令队列220中的存储信息store_inf输出到暂
停控制器240。
95.暂停控制器240可以基于从命令生成器210接收到的存储信息store_inf而将暂停命令suspend_cmd输出到存储器装置100。进一步,为了使存储器装置100响应于暂停命令suspend_cmd而暂停操作,暂停控制器240可以向命令队列220提供输出暂停请求outs_req,该输出暂停请求outs_req指示命令队列220不将命令从命令队列220输出到存储器装置100。
96.在实施例中,存储器装置100可以响应于暂停命令suspend_cmd而暂停正被执行的编程操作或擦除操作,并且可以存储关于被暂停的操作的日志信息。在这种情况下,当正对存储器装置100执行的操作是编程操作时,可以对待编程的数据进行备份。在执行读取操作之后,可以基于所存储的日志信息恢复被暂停的操作。
97.因此,由于编程操作或擦除操作可能比读取操作消耗更多的时间,因此可以暂停正被执行的编程操作或擦除操作,并且可以优先执行读取操作以改善时延。也就是说,为了优先执行读取操作,当存储器控制器200将暂停命令suspend_cmd输出到存储器装置100时,存储器装置100可以在暂停正被执行的操作之后优先执行读取操作。
98.图5示出根据本公开的实施例的图4的命令队列中存储的命令。
99.参照图4和图5,在图5中示出与从图4的主机(例如,图4的300)接收到的请求相对应的命令在被存储在命令队列220中之后被输出的过程。
100.在实施例中,命令生成器(例如,图4的210)可以从主机(例如,图4的300)接收请求。命令生成器(例如,图4的210)可以生成与从主机(例如,图4的300)接收到的请求相对应的命令,并且可以将该命令存储在命令队列220中。
101.例如,命令生成器(例如,图4的210)可以从主机(例如,图4的300)依次接收第一编程请求pgm_req1至第四编程请求pgm_req4。命令生成器(例如,图4的210)可以生成与接收到的第一编程请求pgm_req1至第四编程请求pgm_req4相对应的第一编程命令pgm_cmd1至第四编程命令pgm_cmd4,并且可以将第一编程命令pgm_cmd1至第四编程命令pgm_cmd4存储在命令队列220中。
102.可以按照命令被存储命令队列220中的顺序将命令队列220中存储的命令依次输出到存储器装置(例如,图4的100)。存储器装置(例如,图4的100)可以接收命令,并且可以响应于命令而执行操作。
103.参照图5,命令队列220中存储的第一编程命令pgm_cmd1至第四编程命令pgm_cmd4可以被依次输出到存储器装置(例如,图4的100),并且存储器装置(例如,图4的100)可以响应于第一编程命令pgm_cmd1至第四编程命令pgm_cmd4而执行编程操作。
104.在实施例中,在存储器装置(例如,图4的100)响应于第四编程命令pgm_cmd4而执行编程操作的同时,命令生成器(例如,图4的210)可以从主机(例如,图4的300)接收读取请求。
105.当从主机(例如,图4的300)接收到读取请求时,存储器装置(例如,图4的100)可以在已经暂停正对存储器装置执行的操作之后执行优先执行读取操作所需的操作。
106.具体地,命令生成器(例如,图4的210)可以将与读取请求相对应的读取命令存储在命令队列(例如,图4的220)中,并且之后可以将指示已经存储读取命令的存储信息输出到暂停控制器(例如,图4的240)。暂停控制器(例如,图4的240)可以基于存储信息将暂停命
令suspend_cmd输出到存储器装置(例如,图4的100)。
107.存储器装置(例如,图4的100)可以响应于暂停命令suspend_cmd而暂停响应于第四编程命令pgm_cmd4的编程操作。因为被暂停的操作是编程操作,所以存储器装置(例如,图4的100)可以存储与响应于第四编程命令pgm_cmd4的编程操作有关的日志信息以及编程数据。当在已经执行了读取操作之后恢复编程操作时,可以使用与响应于第四编程命令pgm_cmd4的编程操作有关的日志信息以及编程数据。
108.在实施例中,当被暂停的操作是擦除操作时,存储器装置(例如,图4的100)可以只存储关于擦除操作的日志信息,之后在恢复擦除操作时可以使用该日志信息。
109.在实施例中,在存储器装置(例如,图4的100)暂停响应于第四编程命令pgm_cmd4的编程操作之后,与从主机(例如,图4的300)接收到的读取请求相对应的读取命令可以被依次存储在命令队列220中。例如,第一读取命令read_cmd1至第三读取命令read_cmd3可以被依次存储在命令队列220中。
110.命令队列220中存储的第一读取命令read_cmd1至第三读取命令read_cmd3可以被依次输出到存储器装置(例如,图4的100),并且存储器装置(例如,图4的100)可以响应于第一读取命令read_cmd1至第三读取命令read_cmd3而分别执行读取操作。
111.在实施例中,当在存储器装置(例如,图4的100)响应于暂停命令suspend_cmd而暂停当前执行的操作之后执行的读取操作的数量较小时,存储与被暂停的操作有关的日志信息、重新读取日志信息以及恢复被暂停的操作所消耗的时间可能较长。也就是说,当在存储器装置(例如,图4的100)暂停当前执行的操作之后执行的读取操作的数量很小时,正对存储器装置(例如,图4的100)执行的操作被频繁地暂停,因此存储装置的性能会下降。
112.因此,本公开提出一种增加在存储器装置(例如,图4的100)暂停当前执行的操作之后执行的读取操作的数量的方法。
113.图6示出在已经从存储器控制器输出暂停命令之后取决于存储器装置的操作的就绪/忙碌信号。
114.参照图4和图6,图6示出暂停命令suspend_cmd已经从存储器控制器(例如,图4的200)输出之后输出读取命令read_cmd并且然后对存储器装置(例如,图4的100)执行读取操作的过程。
115.在图6中,正对存储器装置(例如,图4的100)执行的操作是编程操作。在实施例中,正对存储器装置(例如,图4的100)执行的操作可以是擦除操作。
116.在实施例中,存储器装置(例如,图4的100)可以从存储器控制器(例如,图4的200)接收暂停命令suspend_cmd,并且之后可以暂停正执行的编程操作。当暂停编程操作时,存储器装置(例如,图4的100)可以存储与被暂停的编程操作有关的日志信息,并且可以对编程数据进行备份。这里,可以消耗存储日志信息以及对数据进行备份所需的时间tpgmsl,并且在时间tpgmsl期间,就绪/忙碌信号rb可以处于指示忙碌状态的低态(low state)。
117.当存储器装置(例如,图4的100)存储与被暂停的编程操作有关的日志信息并且对数据进行备份时,存储器装置(例如,图4的100)可以接收命令队列中存储的第一读取命令read_cmd1,并且可以响应于第一读取命令read_cmd1而在时间tr11内执行读取操作。在执行读取操作的同时,就绪/忙碌信号rb可以处于指示忙碌状态的低态。
118.当已经响应于第一读取命令read_cmd1而执行读取操作之后不存在命令队列中存
储的读取命令read_cmd时,存储器装置(例如,图4的100)可以恢复被暂停的编程操作。
119.在存储器装置(例如,图4的100)恢复被暂停的编程操作之后,存储器装置(例如,图4的100)可以再次从存储器控制器(例如,图4的200)接收暂停命令suspend_cmd,并且可以暂停正执行的编程操作。在暂停编程操作之后,存储器装置(例如,图4的100)可以存储与被暂停的编程操作有关的日志信息并且对数据进行备份(tpgmsl),可以接收命令队列中存储的第二读取命令read_cmd2,并且可以响应于第二读取命令read_cmd2在时间tr12内执行读取操作。
120.当已经响应于第二读取命令read_cmd2而执行读取操作之后不存在命令队列中存储的读取命令read_cmd时,存储器装置(例如,图4的100)可以恢复被暂停的编程操作。
121.在存储器装置(例如,图4的100)恢复被暂停的编程操作之后,存储器装置(例如,图4的100)可以再次从存储器控制器(例如,图4的200)接收暂停命令suspend_cmd,并且可以暂停正执行的编程操作。在暂停编程操作之后,存储器装置(例如,图4的100)可以存储与被暂停的编程操作有关的日志信息并且对数据进行备份(tpgmsl),可以接收命令队列中存储的第三读取命令read_cmd3,并且可以响应于第三读取命令read_cmd3而在时间tr13内执行读取操作。
122.当已经执行响应于第三读取命令read_cmd3的读取操作之后不存在命令队列中存储的读取命令read_cmd时,存储器装置(例如,图4的100)可以恢复被暂停的编程操作。
123.当通过上述过程执行读取操作时,在存储器装置(例如,图4的100)暂停编程操作之后执行的读取操作的数量很小,因此在暂停编程操作之后可能频繁地执行存储日志信息和对数据进行备份的操作。也就是说,越频繁地暂停对存储器装置(例如,图4的100)执行的操作,存储器装置(例如,图4的100)的性能可能下降得越多。
124.因此,本公开提出一种增加存储器装置(例如,图4的100)暂停编程操作之后执行的读取操作的数量的方法。
125.图7示出根据本公开的实施例的延迟暂停命令的输出的过程。
126.参照图7,在图7中示出存储器装置100基于命令队列220中存储的读取命令read_cmd的数量来暂停编程操作或擦除操作以使得在执行编程操作或擦除操作时优先执行读取操作的过程。
127.参照图4,图7示出在命令生成器(例如,图4的210)从主机(例如,图4的300)接收到读取请求read_req,将与读取请求read_req相对应的读取命令存储在命令队列220中,并且将存储信息store_inf输出到图4中的暂停控制器240之后执行的操作。
128.在实施例中,当与读取请求read_req相对应的读取命令被存储在命令队列220中时,暂停控制器240可以将暂停命令suspend_cmd输出到存储器装置100,以使得对存储器装置100优先执行响应于与读取请求read_req相对应的读取命令的读取操作。而且,暂停控制器240可以将输出暂停请求outs_req输出到命令队列220以使得在一段时间内不向存储器装置100输出命令。
129.在这种情况下,在暂停控制器240已经确定待输出暂停命令suspend_cmd的时间点之后,暂停控制器240可以在所确定的输出时间点输出暂停命令suspend_cmd。
130.例如,暂停控制器240可以从命令生成器(例如,图4的210)接收指示读取命令已经被存储在命令队列220中的存储信息store_inf,并且之后可以将用于获取命令队列220中
存储的读取命令read_cmd的数量的队列信息请求queue_inf_req输出到命令队列220。命令队列220可以将与队列信息请求queue_inf_req相对应的队列信息queue_inf输出到暂停控制器240。这里,队列信息queue_inf可以包括与命令队列220中存储的读取命令read_cmd的数量有关的信息。
131.在实施例中,暂停控制器240可以基于队列信息queue_inf来确定输出暂停命令suspend_cmd的延迟时间量。
132.例如,当命令队列220中存储的读取命令的数量较大时,暂停控制器240可以立即输出暂停命令suspend_cmd,或者可以将输出暂停命令suspend_cmd的延迟时间量设置为较短的时间。相反,当命令队列220中存储的读取命令的数量较小时,暂停控制器240可以将输出暂停命令suspend_cmd的延迟时间量设置为较长的时间。
133.当暂停控制器240已经确定了输出暂停命令suspend_cmd的延迟时间量时,暂停控制器240可以在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后输出暂停命令suspend_cmd。
134.当输出暂停命令suspend_cmd时,暂停控制器240可以向命令控制器230提供用于输出命令队列220中存储的读取命令的读取命令输出请求rcout_req。
135.命令控制器230可以响应于读取命令输出请求rcout_req而向命令队列220提供用于输出命令队列220中存储的读取命令的输出请求output_req。命令队列220可以响应于输出请求output_req而优先输出所存储的命令之中的读取命令。
136.当暂停命令suspend_cmd被输出到存储器装置100时,存储器装置100可以响应于暂停命令suspend_cmd而暂停当前执行的操作。当暂停正对存储器装置100执行的操作时,可以将与从主机300接收到的读取请求read_req相对应的读取命令read_cmd从命令队列220输出到存储器装置100,并且存储器装置100可以执行响应于读取命令read_cmd的读取操作。
137.当存储器装置100完成响应于命令队列220中存储的读取命令read_cmd的读取操作时,暂停控制器240可以确定在响应于命令队列220中存储的读取命令read_cmd而执行的读取操作期间是否从主机300接收到新的读取请求read_req,并且可以基于确定的结果来执行后续操作。
138.例如,当从主机300接收到新的读取请求read_req时,命令生成器(例如,图4的210)可以将与新的读取请求read_req相对应的读取命令存储在命令队列220中,并且可以将存储信息store_inf输出到暂停控制器240。暂停控制器240可以基于存储信息store_inf来再次接收队列信息queue_inf,然后可以确定命令队列220中存储的读取命令read_cmd的数量。
139.暂停控制器240可以基于命令队列220中存储的读取命令read_cmd的数量来确定输出恢复命令resume_cmd的延迟时间量,恢复命令resume_cmd指示恢复被暂停的操作。之后,当经过输出恢复命令resume_cmd的延迟时间量时,暂停控制器240可以输出恢复命令resume_cmd。
140.然而,当没有从主机300接收到新的读取请求read_req时,也就是说,当接收到除了读取请求read_req之外的请求并且没有从命令生成器(例如,图4的210)输出存储信息store_inf时,暂停控制器240可以将指示恢复被暂停的操作的恢复命令resume_cmd输出到
存储器装置100而无需经过延迟时间量。存储器装置100可以响应于恢复命令resume_cmd而恢复被暂停的操作。
141.而且,当输出恢复命令resume_cmd时,可以将自存储器装置100暂停当前执行的操作以来被新存储在命令队列220中的命令输出到存储器装置100。
142.因此,当命令队列220中存储的读取命令的数量较少时,可以将输出暂停命令suspend_cmd的延迟时间量设置为较长的时间,从而可以增加后续读取命令将被存储在命令队列220中的可能性。因此,在暂停存储器装置100的操作之后,可以对存储器装置100执行响应于更多读取命令的读取操作。
143.图8a和图8b是示出根据本公开的实施例的确定暂停命令的输出将被延迟的时间的方法的示图。
144.参照图7、图8a和图8b,在图8a和图8b中示出暂停控制器(例如,图7的240)中包括的暂停表。而且,图8a和图8b示出一种暂停控制器(例如,图7的240)从命令队列(例如,图7的220)接收队列信息queue_inf并且基于图8a和图8b中的暂停表来确定输出暂停命令suspend_cmd的延迟时间量tdelay的方法。
145.图8a示出基于暂停表来确定延迟时间量tdelay的方法的实施例,而图8b示出所确定的延迟时间量tdelay的示例。
146.在图8a和图8b中,延迟时间量tdelay的单位是“μs”。
147.在实施例中,队列信息queue_inf可以包括与命令队列220(例如,图7的220)中存储的读取命令的数量rc_num有关的信息。输出暂停命令suspend_cmd的延迟时间量tdelay可以基于队列信息queue_inf中包括的与读取命令的数量rc_num有关的信息来确定。
148.参照图8a,当读取命令的数量rc_num等于或大于

x’时,延迟时间量tdelay可以是“0”。也就是说,当命令队列(例如,图7的220)中存储的读取命令的数量rc_num等于或大于预定值时,暂停控制器(例如,图7的240)可以无延迟地立即地输出暂停命令suspend_cmd。
149.当读取命令的数量rc_num为“x-1”时,延迟时间量tdelay可以为“y”,当读取命令的数量rc_num为“x-2”时,延迟时间量tdelay可以为“y z”,当读取命令的数量rc_num小于

x-2’时,延迟时间量tdelay可以为“y z*(x-1)”。也就是说,随着命令队列(例如,图7的220)中存储的读取命令的数量rc_num的减少,输出暂停命令suspend_cmd的延迟时间量tdelay可以增加。
150.因此,通过随着命令队列(例如,图7的220)中存储的读取命令的数量rc_num的减少而增加延迟时间量tdelay,可以在输出暂停命令suspend_cmd的延迟时间量tdelay期间增加命令队列(例如,图7的220)中存储的读取命令的数量rc_num。因此,随着在存储器装置(例如,图7的100)暂停当前执行的操作之后执行的读取命令的数量rc_num的增加,存储装置(例如,图1的50)的性能可以提高。
151.参照图8b,在图8b中示出图8a中的x是“10”并且y和z是“1”的情况。在其他实施例中,与x、y和z相对应的数字可以变化。
152.在实施例中,当读取命令的数量rc_num等于或大于“10”时,延迟时间量tdelay可以为“0”,当读取命令的数量rc_num为“9”时,延迟时间量tdelay可以为“1”,当读取命令的数量rc_num为“8”时,延迟时间量tdelay可以为“2”,当读取命令的数量rc_num小于“8”时,延迟量时间tdelay可以为“10”。也就是说,随着命令队列(例如,图7的220)中存储的读取命
令的数量rc_num的减少,输出暂停命令suspend_cmd的延迟时间量tdelay可以增加。
153.在实施例中,当在存储器装置(例如,图7的100)执行读取操作的同时没有从主机(例如,图1的300)接收到读取请求并且响应于命令队列(例如,图7的220)中存储的所有读取命令的读取操作被终止时,存储器装置(例如,图7的100)可以恢复被暂停的操作。
154.然而,当在存储器装置(例如,图7的100)执行读取操作的同时从主机(例如,图1的300)连续接收到读取请求并且与读取请求相对应的读取命令被连续输出到存储器装置(例如,图7的100)时,被执行的读取操作的数量可以增加。也就是说,随着被执行的读取操作的数量的增加,可以通过一次操作暂停而被执行的读取操作的数量增加,因此存储装置(例如,图1的50)的性能可以提高。
155.图9示出根据本公开的实施例的在延迟输出暂停命令时的就绪/忙碌信号。
156.参照图8a、图8b和图9,图9示出在已经如图8a和图8b中那样确定延迟时间量tdelay并且从读取命令在命令队列220中排队的时间点开始已经经过延迟时间量tdelay之后,取决于存储器装置(例如,图7的100)的操作的就绪/忙碌信号。
157.在实施例中,暂停控制器(例如,图7的240)可以从命令队列(例如,图7的220)接收队列信息queue_inf并且可以确定输出暂停命令suspend_cmd的延迟时间量tdelay。当确定延迟时间量tdelay时,暂停控制器(例如,图7的240)可以在从读取命令在命令队列220中排队的时间点开始的所确定的延迟时间量tdelay期间不输出暂停命令suspend_cmd。因此,在从读取命令在命令队列220中排队的时间点开始的延迟时间量tdelay期间,存储器装置(例如,图7的100)可以继续执行正被执行的操作,并且就绪/忙碌信号r/b可以处于指示忙碌状态的低态。
158.在图9中,在延迟时间量tdelay期间在命令队列(例如,图7的220)中存储的读取命令是第一读取命令read_cmd1至第三读取命令read_cmd3。在其他实施例中,当延迟时间量tdelay延长时,命令队列(例如,图7的220)中存储的读取命令的数量增加,而当延迟时间量tdelay缩短时,命令队列(例如,图7的220)中存储的读取命令的数量可能减少。
159.在实施例中,在从读取命令在命令队列220中排队的时间点开始经过所确定的延迟时间量tdelay之后,暂停控制器(例如,图7的240)可以将暂停命令suspend_cmd输出到存储器装置(例如,图7的100)。存储器装置(例如,图7的100)可以响应于暂停命令suspend_cmd而暂停正被执行的操作。
160.当正对存储器装置(例如,图7的100)执行的操作是编程操作时,存储器装置(例如,图7的100)可以在时间tpgmsl期间暂停编程操作,可以存储与被暂停的编程操作有关的日志信息,并且可以对编程数据进行备份。在时间tpgmsl期间,就绪/忙碌信号rb可以处于指示忙碌状态的低态。
161.之后,命令队列(例如,图7的220)中存储的第一读取命令read_cmd1至第三读取命令read_cmd3可以被依次输出到存储器装置(例如,图7的100)。当第一读取命令read_cmd1至第三读取命令read_cmd3被输出到存储器装置(例如,图7的100)时,存储器装置(例如,图7的100)可以在时间tr11内执行响应于第一读取命令read_cmd1的读取操作,在时间tr12内执行响应于第二读取命令read_cmd2的读取操作,并且在时间tr13内执行响应于第三读取命令read_cmd3的读取操作。在执行分别响应于第一读取命令read_cmd1至第三读取命令read_cmd3的读取操作的同时,就绪/忙碌信号rb可以处于指示忙碌状态的低态。
162.因此,暂停命令suspend_cmd的输出可以被延迟所确定的延迟时间量tdelay,并且在延迟输出暂停命令suspend_cmd的同时命令队列(例如,图7的220)中存储的读取命令的数量可能增加。随着命令队列(例如,图7的220)中存储的读取命令的数量的增加,在存储器装置(例如,图7的100)暂停当前执行的操作之后执行的读取操作的数量可以增加,并且存储装置(例如,图1的50)的性能可以提高。
163.图10示出根据本公开的实施例的当不延迟输出暂停命令时的就绪/忙碌信号。
164.参照图8a和图8b以及图10,图10示出在图8a和图8b中确定不延迟输出暂停命令suspend_cmd之后,取决于存储器装置(例如,图7的100)的操作的就绪/忙碌信号。
165.在实施例中,暂停控制器(例如,图7的240)可以从命令队列(例如,图7的220)接收队列信息queue_inf,并且可以确定输出暂停命令suspend_cmd的延迟时间量tdelay。当命令队列(例如,图7的220)中存储的读取命令的数量rc_num等于或大于预设参考值时,暂停控制器(例如,图7的240)可以无延迟地立即输出暂停命令suspend_cmd。
166.在图10中,预设参考值为“10”,与图8b的预设参考值相同,命令队列(例如,图7的220)中存储的读取命令为第十一读取命令read_cmd11至第二十读取命令read_cmd20,读取命令的数量rc_num为10。
167.因此,由于命令队列(例如,图7的220)中存储的读取命令的数量rc_num是作为预设参考值的“10”,因此暂停控制器(例如,图7的240)可以无延迟地立即输出暂停命令suspend_cmd。
168.在实施例中,存储器装置(例如,图7的100)可以从暂停控制器(例如,图7的240)接收暂停命令suspend_cmd,并且可以响应于暂停命令suspend_cmd而暂停正被执行的操作。
169.当正对存储器装置(例如,图7的100)执行的操作是编程操作时,存储器装置(例如,图7的100)可以在时间tpgmsl期间暂停编程操作,可以存储与被暂停的编程操作有关的日志信息,并且可以对编程数据进行备份。在时间tpgmsl期间,就绪/忙碌信号rb可以处于指示忙碌状态的低态。
170.之后,命令队列(例如,图7的220)中存储的第十一读取命令read_cmd11至第二十读取命令read_cmd20可以被依次输出到存储器装置(例如,图7的100)。
171.当第十一读取命令read_cmd11至第二十读取命令read_cmd20被输出到存储器装置(例如,图7的100)时,存储器装置(例如,图7的100)可以在时间tr21内执行响应于第十一读取命令read_cmd11的读取操作,可以在时间tr22内执行响应于第十二读取命令read_cmd12的读取操作,可以在时间tr23内执行响应于第十三读取命令read_cmd13的读取操作,可以在时间tr24内执行响应于第十四读取命令read_cmd14的读取操作,可以在时间tr25内执行响应于第十五读取命令read_cmd15的读取操作,可以在时间tr26内执行响应于第十六读取命令read_cmd16的读取操,可以在时间tr27内执行响应于第十七读取命令read_cmd17的读取操作,可以在时间tr28内执行响应于第十八读取命令read_cmd18的读取操作,可以在时间tr29内执行响应于第十九读取命令read_cmd19的读取操作,并且可以在时间tr30内执行响应于第二十读取命令read_cmd20的读取操作。在执行分别响应于第十一读取命令read_cmd11至第二十读取命令read_cmd20的读取操作的同时,就绪/忙碌信号rb可以处于指示忙碌状态的低态。
172.因此,当命令队列(例如,图7的220)中存储的读取命令的数量rc_num等于或大于
预设参考值时,可以无延迟地立即输出暂停命令suspend_cmd,以使得可以在短时间段内快速执行响应于命令队列(例如,图7的220)中存储的读取命令的读取操作。
173.图11是示出根据本公开的实施例的存储器控制器的操作的流程图。
174.参照图11,在操作s1101,在存储器装置执行编程操作或擦除操作的同时,存储器控制器可以从主机接收读取请求。在实施例中,当从主机接收到读取请求时,存储器控制器可以控制存储器装置,以使得暂停正对存储器装置执行的操作并且优先执行响应于读取请求的读取操作。
175.在操作s1103,存储器控制器可以基于命令队列中存储的读取命令的数量来确定输出暂停命令的延迟时间量。
176.例如,当命令队列中存储的读取命令的数量等于或大于预设参考值时,存储器控制器可以确定无延迟地输出暂停命令。然而,当命令队列中存储的读取命令的数量小于预设参考值时,可以根据命令队列中存储的读取命令的数量来确定延迟时间量。
177.在实施例中,当命令队列中存储的读取命令的数量较少时,可以延长延迟时间量,而当命令队列中存储的读取命令的数量较大时,可以缩短延迟时间量。
178.在操作s1105,在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后,存储器控制器可以将暂停命令输出到存储器装置。存储器装置可以响应于暂停命令而暂停正被执行的操作。
179.图12是示出根据本公开的实施例的存储器控制器的操作的流程图。
180.参照图11和图12,在图12中示出在图11的操作s1105输出暂停命令之后执行的详细操作。
181.在操作s1201,存储器控制器可以依次输出命令队列中存储的读取命令。也就是说,在存储器装置响应于暂停命令而暂停当前执行的操作之后,存储器控制器可以依次输出读取命令,并且存储器装置可以响应于读取命令而执行读取操作。
182.在操作s1203,存储器控制器可以确定在命令队列中是否存在读取命令。当命令队列中存在读取命令时(在“是”的情况下),过程可以进行到操作s1201,其中可以依次输出命令队列中存储的命令。也就是说,当在存储器装置暂停当前执行的操作之后读取命令被连续存储在命令队列中时,存储器控制器可以继续将所存储的读取命令输出到存储器装置。
183.然而,当命令队列中不存在读取命令时(在“否”的情况下),过程可以进行到操作s1205。
184.在操作s1205,当没有待由存储器装置执行的读取命令时,存储器控制器可以输出用于恢复被暂停的操作的恢复命令。当从存储器控制器输出恢复命令时,存储器装置可以响应于恢复命令而恢复被暂停的操作。
185.图13是示出根据本公开的实施例的图1的存储器控制器的示例的示图。
186.存储器控制器1000联接到主机和存储器装置。响应于从主机接收到的请求,存储器控制器1000可以访问存储器装置。例如,存储器控制器1000可以被配置为控制存储器装置的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000可以提供存储器装置与主机之间的接口。存储器控制器1000可以运行用于控制存储器装置的固件。
187.参照图13,存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ecc)电路1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
188.总线1070可以提供存储器控制器1000的组件之间的通道。
189.处理器1010可以控制存储器控制器1000的整体操作并且可以执行逻辑操作。处理器1010可以通过主机接口1040与外部主机通信,并且还通过存储器接口1060与存储器装置通信。进一步,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以通过将存储器缓冲器1020用作工作存储器、高速缓存存储器或缓冲存储器来控制存储装置的操作。
190.处理器1010可以执行闪存转换层(ftl)的功能。处理器1010可以通过ftl将主机提供的逻辑块地址(lba)转换为物理块地址(pba)。ftl可以接收使用映射表的lba并且将lba转换为pba。根据映射单元,通过ftl执行的地址映射方法的示例可以包括各种方法。典型的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
191.处理器1010可以使从主机接收的数据随机化。例如,处理器1010可以使用随机化种子来使从主机接收的数据随机化。可以将经随机化的数据作为待存储的数据提供到存储器装置,并且可以将经随机化的数据编程在存储器单元阵列中。
192.处理器1010可以运行软件或固件来执行随机化或去随机化操作。
193.在实施例中,处理器1010可以运行软件或固件来执行随机化和去随机化操作。
194.存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010运行的代码和命令。存储器缓冲器1020可以存储由处理器1010处理的数据。存储器缓冲器1020可以包括静态ram(sram)或动态ram(dram)。
195.ecc电路1030可以执行错误校正。ecc电路1030可以基于待通过存储器接口1060写入存储器装置的数据来执行错误校正码(ecc)编码。经ecc编码的数据可以通过存储器接口1060传送到存储器装置。ecc电路1030可以基于通过存储器接口1060从存储器装置接收的数据来执行ecc解码。在实施例中,ecc电路1030可以作为存储器接口1060的组件被包括在存储器接口1060中。
196.主机接口1040可以在处理器1010的控制下与外部主机通信。主机接口1040可以使用诸如以下的各种通信标准或接口中的至少一种来执行通信:通用串行总线(usb)通信方法、串行at附件(sata)通信方法、串列scsi(sas)通信方法、高速芯片间(hsic)通信方法、小型计算机系统接口(scsi)通信方法、外围组件互连(pci)通信方法、高速pci(pcie)通信方法、高速非易失性存储器(nvme)通信方法、通用闪存(ufs)通信方法、安全数字(sd)通信方法、多媒体卡(mmc)通信方法、嵌入式mmc(emmc)通信方法、双列直插式存储器模块(dimm)通信方法、寄存式dimm(rdimm)通信方法以及低负载dimm(lrdimm)通信方法。
197.缓冲器控制电路1050可以在处理器1010的控制下控制存储器缓冲器1020。
198.存储器接口1060可以在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道向存储器装置发送命令、地址和数据/从存储器装置接收命令、地址和数据。
199.在实施例中,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制电路1050。
200.在实施例中,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从存储器控制器1000中设置的非易失性存储器装置(例如,rom)加载代码。在实施例中,处理器1010可以通过存储器接口1060从存储器装置加载代码。
201.在实施例中,处理器1010可以在存储器装置(例如,图1的100)执行编程操作或读取操作的,从主机(例如,图1的300)接收读取请求。读取请求可以是指示存储器装置(例如,图1的100)中包括的多个页面之中的所选页面中存储的、待读取的数据的请求。
202.当从主机(例如,图1的300)接收到读取请求时,处理器1010可以确定命令队列中存储的读取命令的数量。命令队列可以被包括在存储器缓冲器1020中。
203.处理器1010可以基于确定命令队列中存储的读取命令的数量的结果来确定输出暂停命令的延迟时间量。这里,当命令队列中存储的读取命令的数量变大时,可以缩短输出暂停命令的延迟时间量,而当命令队列中存储的读取命令的数量变小时,可以延长输出暂停命令的延迟时间量。
204.因此,当命令队列中存储的读取命令的数量较大时,通过将输出暂停命令的延迟时间量设置为较短的时间,可以在短时间段内快速执行响应于命令队列中存储的读取命令的读取操作。相反,当命令队列中存储的读取命令的数量较少时,通过将输出暂停命令的延迟时间量设置为较长的时间,更多的读取命令可以被存储在命令队列中并且可以执行响应于更多的读取命令的读取操作。
205.在实施例中,在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后,处理器1010可以将暂停命令输出到存储器装置(例如,图1的100)。存储器装置(例如,图1的100)可以响应于暂停命令而暂停正被执行的操作。
206.在实施例中,当暂停正对存储器装置(例如,图1的100)执行的操作时,命令队列中存储的读取命令可以被依次输出到存储器装置(例如,图1的100)。存储器装置(例如,图1的100)可以响应于依次接收到的读取命令而执行读取操作。
207.因此,可以根据命令队列中存储的读取命令的数量来延迟输出暂停命令的时间点,以使得在暂停当前执行的操作之后更多的读取命令可以被存储在命令队列中,并且存储器装置(例如,图1的100)可以执行响应于更多的读取命令的读取操作。因此,可以提高存储装置(例如,图1的50)的性能。
208.图14是示出应用了根据本公开的实施例的存储装置的存储卡系统的框图。
209.参照图14,存储卡系统2000可以包括存储器控制器2100、存储器装置2200和连接器2300。
210.存储器控制器2100联接到存储器装置2200。存储器控制器2100可以访问存储器装置2200。例如,存储器控制器2100可以控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100可以提供存储器装置2200与主机之间的接口。存储器控制器2100可以运行用于控制存储器装置2200的固件。存储器装置2200可以以与上面参照图1描述的存储器装置(例如,图1的100)相同的方式来实施。
211.在实施例中,存储器控制器2100可以包括诸如ram、处理器、主机接口、存储器接口和ecc电路的组件。
212.存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以基于特定通信协议与外部装置(例如,主机)通信。在实施例中,存储器控制器2100可以通过诸如以下的各种通信标准或接口中的至少一种与外部装置通信:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e或pcie)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、小型计算机小型系统接口(scsi)、增强型小型磁盘
接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙以及高速非易失性存储器(nvme)协议。在实施例中,连接器2300可以由上述各种通信标准或接口中的至少一种来限定。
213.在实施例中,存储器装置2200可以被实施为诸如以下的各种非易失性存储器装置中的任意一种:电可擦除可编程rom(eeprom)、nand闪速存储器、nor闪速存储器、相变ram(pram)、电阻式ram(reram)、铁电ram(fram)以及自旋转移力矩磁性ram(stt-mram)。
214.存储器控制器2100和存储器装置2200可以集成到单个半导体装置以配置存储卡。例如,存储器控制器2100和存储器装置2200可以集成到单个半导体装置中以配置诸如以下的存储卡:pc卡(个人计算机存储卡国际协会:pcmcia)、紧凑式闪存卡(cf)、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc、mmcmicro或emmc)、sd卡(sd、迷你sd、微型sd或sdhc)或通用闪存(ufs)。
215.在实施例中,存储器控制器2100可以在存储器装置2200执行编程操作或读取操作的同时,从主机(例如,图1的300)接收读取请求。读取请求可以是指示存储器装置2200中包括的多个页面之中的所选页面中存储的、待读取的数据的请求。
216.当从主机(例如,图1的300)接收到读取请求时,存储器控制器2100可以确定命令队列中存储的读取命令的数量。存储器控制器2100可以基于确定命令队列中存储的读取命令的数量的结果来确定输出暂停命令的延迟时间量。这里,当命令队列中存储的读取命令的数量较大时,可以缩短输出暂停命令的延迟时间量,而当命令队列中存储的读取命令的数量较小时,可以延长输出暂停命令的延迟时间量。
217.因此,当命令队列中存储的读取命令的数量变大时,通过将输出暂停命令的延迟时间量设置为较短的时间,可以在短时间段内快速执行响应于命令队列中存储的读取命令的读取操作。相反,当命令队列中存储的读取命令的数量较少时,通过将输出暂停命令的延迟时间量设置为较长的时间,更多的读取命令可以被存储在命令队列中并且可以执行响应于更多的读取命令的读取操作。
218.在实施例中,在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后,存储器控制器2100可以将暂停命令输出到存储器装置2200。存储器装置2200可以响应于暂停命令而暂停正被执行的操作。
219.在实施例中,当暂停正对存储器装置2200执行的操作时,命令队列中存储的读取命令可以被依次输出到存储器装置2200。存储器装置2200可以响应于依次接收到的读取命令而执行读取操作。
220.因此,可以根据命令队列中存储的读取命令的数量来延迟输出暂停命令的时间点,以使得在暂停当前执行的操作之后,更多的读取命令可以被存储在命令队列中,并且存储器装置2200可以执行响应于更多的读取命令的读取操作。因此,可以提高存储卡系统2000的性能。
221.图15是示出应用了根据本公开的实施例的存储装置的固态驱动器(ssd)系统的示例的框图。
222.参照图15,ssd系统3000可以包括主机3100和ssd 3200。ssd3200可以通过信号连接器3001与主机3100交换信号sig,并且可以通过电源连接器3002接收电力pwr。ssd 3200可以包括ssd控制器3210、多个闪存或多个非易失性存储器(nvm)3221至322n、辅助电源
3230和缓冲存储器3240。
223.在实施例中,ssd控制器3210可以执行上面参照图1描述的存储器控制器(例如,图1的200)的功能。
224.ssd控制器3210可以响应于从主机3100接收的信号sig而控制多个闪存3221至322n。在实施例中,信号sig可以是基于主机3100和ssd3200的接口的信号。例如,信号sig可以是由诸如以下的各种通信标准或接口中的至少一种限定的信号:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e或pcie)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙以及高速非易失性存储器(nvme)接口。
225.辅助电源3230可以通过电源连接器3002联接到主机3100。辅助电源3230可以被供应来自主机3100的电力pwr并且可以被充电。当无法平稳地从主机3100执行供电时,辅助电源3230可以向ssd 3200供电。在实施例中,辅助电源3230可以位于ssd 3200内部或位于ssd 3200外部。例如,辅助电源3230可以设置在主板中并且可以向ssd 3200供应辅助电力。
226.缓冲存储器3240用作ssd 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪存3221至322n接收的数据,或者可以临时存储闪存3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如dram、sdram、ddr sdram、lpddr sdram和gram的易失性存储器,或者诸如fram、reram、stt-mram和pram的非易失性存储器。
227.在实施例中,ssd控制器3210可以在多个闪存3221至322n执行编程操作或读取操作的同时,从主机3100接收读取请求。读取请求可以是指示多个闪存3221至322n中的每一个中包括的多个页面之中的所选页面中存储的、待读取的数据的请求。
228.当从主机3100接收到读取请求时,ssd控制器3210可以确定命令队列中存储的读取命令的数量。ssd控制器3210可以基于确定命令队列中存储的读取命令的数量的结果来确定输出暂停命令的延迟时间量。这里,当命令队列中存储的读取命令的数量较大时,可以缩短输出暂停命令的延迟时间量,而当命令队列中存储的读取命令的数量较小时,可以延长输出暂停命令的延迟时间量。
229.因此,当命令队列中存储的读取命令的数量较大时,通过将输出暂停命令的延迟时间量设置为较短的时间,可以在短时间段内快速执行响应于命令队列中存储的读取命令的读取操作。相反,当命令队列中存储的读取命令的数量较少时,通过将输出暂停命令的延迟时间量设置为较长的时间,更多的读取命令可以被存储在命令队列中并且可以执行响应于更多的读取命令的读取操作。
230.在实施例中,在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后,ssd控制器3210可以将暂停命令输出到多个闪存3221至322n。多个闪存3221至322n中的每一个可以响应于暂停命令而暂停正被执行的操作。
231.在实施例中,当暂停正对多个闪存3221至322n中的每一个执行的操作时,命令队列中存储的读取命令可以被依次输出到多个闪存3221至322n。多个闪存3221至322n可以响应于依次接收到的读取命令而执行读取操作。
232.因此,可以根据命令队列中存储的读取命令的数量来延迟输出暂停命令的时间
点,以使得在暂停当前执行的操作之后,更多的读取命令可以被存储在命令队列中,并且多个闪存3221至322n可以执行响应于更多的读取命令的读取操作。因此,可以提高ssd 3200的性能。
233.图16是示出应用了根据本公开的实施例的存储装置的用户系统的框图。
234.参照图16,用户系统4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
235.应用处理器4100可以运行用户系统4000中包括的组件、操作系统(os)或用户程序。在实施例中,应用处理器4100可以包括用于控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上系统(soc)。
236.存储器模块4200可以用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可以包括诸如dram、sdram、ddr sdram、ddr2 sdram、ddr3 sdram、lpddr sdram、lpddr2 sdram和lpddr3 sdram的易失性ram,或诸如pram、reram、mram和fram的非易失性sam。在实施例中,应用处理器4100和存储器模块4200可以基于堆叠封装(pop)来进行封装,然后可以被设置为单个半导体封装。
237.网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进(lte)、wimax、wlan、uwb、蓝牙或wi-fi通信的无线通信。在实施例中,网络模块4300可以被包括在应用处理器4100中。
238.存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。替代地,存储模块4400可以将存储模块4400中存储的数据传输到应用处理器4100。在实施例中,存储模块4400可以被实施为诸如以下的非易失性半导体存储器装置:相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪存、nor闪存或具有三维(3d)结构的nand闪存。在实施例中,存储模块4400可以被设置为可移动存储介质(即,可移动驱动器),诸如用户系统4000的存储卡或外部驱动器。
239.在实施例中,存储模块4400可以包括多个非易失性存储器装置,每个非易失性存储器装置可以以与上面参照图2和图3描述的存储器装置相同的方式操作。存储模块4400可以以与上面参照图1描述的存储装置50相同的方式操作。
240.用户接口4500可以包括将数据或指令输入到应用处理器4100或将数据输出到外部装置的接口。在实施例中,用户接口4500可以包括诸如以下的用户输入接口:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电装置。用户接口4500可以进一步包括诸如以下的用户输出接口:液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器和监视器。
241.在实施例中,应用处理器4100可以在存储模块4400执行编程操作或读取操作的同时从主机(例如,图1的300)接收读取请求。读取请求可以是指示存储模块4400中包括的多个页面之中的所选页面中存储的、待读取的数据的请求。
242.当从主机(例如,图1的300)接收到读取请求时,应用处理器4100可以确定命令队列中存储的读取命令的数量。应用处理器4100可以基于确定命令队列中存储的读取命令的数量的结果来确定输出暂停命令的延迟时间量。这里,当命令队列中存储的读取命令的数量变大时,可以缩短输出暂停命令的延迟时间量,而当命令队列中存储的读取命令的数量
变得更小时,可以延长输出暂停命令的延迟时间量。
243.因此,当命令队列中存储的读取命令的数量较大时,通过将输出暂停命令的延迟时间量设置为较短的时间,可以在短时间段内快速执行响应于命令队列中存储的读取命令的读取操作。相反,当命令队列中存储的读取命令的数量较少时,通过将输出暂停命令的延迟时间量设置为较长的时间,更多的读取命令可以被存储在命令队列中并且可以执行响应于更多的读取命令的读取操作。
244.在实施例中,在从读取命令在命令队列220中排队时的时间点开始经过所确定的延迟时间量之后,应用处理器4100可以将暂停命令输出到存储模块4400。存储模块4400可以响应于暂停命令而暂停正被执行的操作。
245.在实施例中,当暂停正对存储模块4400执行的操作时,命令队列中存储的读取命令可以被依次输出到存储模块4400。存储模块4400可以响应于依次接收到的读取命令而执行读取操作。
246.因此,可以根据命令队列中存储的读取命令的数量来延迟输出暂停命令的时间点,以使得在暂停当前执行的操作之后,更多的读取命令可以被存储在命令队列中,并且存储模块4400可以执行响应于更多的读取命令的读取操作。因此,可以提高用户系统4000的性能。
247.根据本公开,在输出暂停命令之前,根据命令队列中存储的读取命令的数量来确定输出暂停命令的延迟时间量,因此可以增加在暂停时段期间待执行的读取操作的数量。
248.虽然已经参考具体实施例描述了存储器控制器及其操作方法,但是这些仅仅是示例,并且本公开不限于此,而是应该根据本说明书中公开的基本构思被解释为具有最广的范围。本领域技术人员可以通过组合和替换所公开的实施例来实施未详细说明的实施例,但是这些也不脱离本公开的范围。另外,本领域技术人员可以容易地改变或修改基于本说明书所公开的实施例,并且显而易见的是,这些改变或修改也落入本公开和所附权利要求的范围内。此外,可以组合实施例以形成额外的实施例。
再多了解一些

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

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

相关文献