控制器及其操作方法
1.相关申请的交叉引用
2.本专利文件要求于2020年10月16日提交的、申请号为10-2020-0134059的韩国专利申请的优先权和权益,该韩国专利申请通过引用整体并入本文。
技术领域
3.所公开技术的各个实施例涉及一种控制存储器装置的控制器。
背景技术:4.计算机环境范例已经转变为能够随时随地使用计算系统的普适计算。因此,诸如移动电话、数码相机和膝上型计算机的便携式电子装置的使用已经迅速增长。这些便携式电子装置通常使用具有用于存储数据的一个或多个存储器装置的存储器系统。存储器系统可以用作便携式电子装置的主存储器装置或辅助存储器装置。
5.由于存储器系统不需要机械驱动部件,因此存储器系统提供诸如以下的优点:优异的稳定性和耐久性、高信息访问速度以及低功耗。具有这些优点的存储器系统的示例包括通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。
技术实现要素:6.各个实施例旨在提供一种能够通过对主机命令重新排序来提高存储器系统的性能的控制器及其操作方法。
7.根据实施例,一种控制器,用于控制第一存储器装置和第二存储器装置,包括:第一内核,被配置为控制第一存储器装置,该第一存储器装置与控制器通信并且被配置为存储与第一逻辑地址相关联的数据;第二内核,被配置为控制第二存储器装置,该第二存储器装置与控制器通信并且被配置为存储与第二逻辑地址相关联的数据;以及主机接口,被配置为(1)将从主机接收的命令在队列中排队,该命令包括与第一逻辑地址相关联的第一地址命令以及与第二逻辑地址相关联的第二地址命令,(2)执行命令重新排序,该命令重新排序基于第一存储器装置和第二存储器装置的状态确定排队的命令的处理顺序,并且(3)基于处理顺序,将第一地址命令提供到第一内核并将第二地址命令提供到第二内核。
8.当第一存储器装置中的一个处于空闲状态时,主机接口可以被配置为执行命令重新排序,使得与第一内核相关联的命令在与第二内核相关联的另一命令被提供到第二内核之前被提供到第一内核。
9.当第一存储器装置和第二存储器装置处于忙碌状态时,主机接口可以被配置为通过使第一地址命令和第二地址命令交织来执行命令重新排序。
10.主机接口可以被配置为使第一地址命令和第二地址命令交织,从而交替地提供第一地址命令和第二地址命令,第一地址命令和第二地址命令中的每一个具有预定大小。
11.预定大小可以基于第一内核或第二内核所控制的存储器管芯的数量以及每个存储器管芯的页面大小。
12.主机接口可以被配置为执行命令重新排序,使得命令在与第二内核相关联的另一命令被提供到第二内核之前被提供到第一内核,第一存储器装置是第一存储器装置和第二存储器装置之中的、在其开放块中具有最大空闲空间的存储器装置。
13.主机接口可以被配置为当命令在队列的所有条目中排队时执行命令重新排序。
14.主机接口可以被配置为当与在队列中排队的第一地址命令相关联的数据大小以及与在队列中排队的第二地址命令相关联的数据大小都等于或大于预定大小时,执行命令重新排序。
15.主机接口可以被配置为在从已经从主机接收到最后一个命令开始的至少预定时间段内未接收到新命令时,执行命令重新排序。
16.基于与排队的命令相关联的逻辑地址的模运算结果,主机接口可以被配置为将逻辑地址分类为第一逻辑地址和第二逻辑地址。
17.根据实施例,一种控制器的操作方法,该控制器包括分别控制第一存储器装置和第二存储器装置的第一内核和第二内核,该操作方法包括:将从主机接收的命令在队列中排队,该命令包括与第一逻辑地址相关联的第一地址命令以及与第二逻辑地址相关联的第二地址命令,第一地址命令由第一内核处理,第二地址命令由第二内核处理;执行命令重新排序,该命令重新排序基于第一存储器装置和第二存储器装置的状态确定排队的命令的处理顺序;并且基于处理顺序,将第一地址命令提供到第一内核并将第二地址命令提供到第二内核。
18.执行命令重新排序可以包括:确定处理顺序,使得与第一内核相关联的命令在与第二内核相关联的另一命令被提供到第二内核之前被提供到第一内核,第一内核被配置为控制第一存储器装置中处于空闲状态的任意一个第一存储器装置。
19.执行命令重新排序可以进一步包括:当第一存储器装置和第二存储器装置处于忙碌状态时,使第一地址命令和第二地址命令交织。
20.交织可以包括:确定排队的命令的处理顺序,从而交替地提供第一地址命令和第二地址命令,第一地址命令和第二地址命令中的每一个具有预定大小。
21.预定大小可以基于第一内核或第二内核所控制的存储器管芯的数量以及每个存储器管芯的页面大小。
22.执行命令重新排序可以包括:确定排队的命令的处理顺序,使得命令在与第二内核相关联的另一命令被提供到第二内核之前被提供到第一内核,第一存储器装置是第一存储器装置和第二存储器装置之中的、在其开放块中具有最大空闲空间的存储器装置。
23.当命令在队列的所有条目中排队时,可以执行命令重新排序。
24.当与在队列中排队的第一地址命令相关联的数据大小以及与在队列中排队的第二地址命令相关联的数据大小都等于或大于预定大小时,可以执行命令重新排序。
25.当从已经从主机接收到最后一个命令开始的至少预定时间段内未接收到新命令时,可以执行命令重新排序。
26.操作方法可以进一步包括:基于与排队的命令相关联的逻辑地址的模运算结果,将逻辑地址分类为第一逻辑地址和第二逻辑地址。
27.根据本公开,可以提供一种能够通过对主机命令重新排序来提高存储器系统的性能的控制器及其操作方法。
28.本公开中可实现的效果不限于上述效果,并且本领域技术人员将从以下描述中清楚地理解其它未提及的效果。
附图说明
29.图1是示意性地示出根据所公开技术的实施例的包括存储器系统的数据处理系统的示例的示图。
30.图2是用于说明命令队列接口操作的示图。
31.图3是图1所示的存储器系统的详细框图。
32.图4a至图4c是用于说明基于所公开技术的一些实施方案的主机接口的命令重新排序操作的示图。
33.图5是用于说明基于所公开技术的一些实施方案的为了使主机接口执行命令重新排序而确定的标准的示例的示图。
34.图6是示出根据所公开技术的实施例的主机接口的操作的示图。
具体实施方式
35.在下文中,将参照附图描述所公开技术的优选实施例。
36.图1是示出根据所公开技术的实施例的数据处理系统100的框图。
37.参照图1,数据处理系统100可以包括可操作地联接到存储器系统110的主机102,存储器系统110与主机102通信。
38.主机102可以包括诸如移动电话、mp3播放器和膝上型计算机的各种便携式电子装置中的任意一种,或者诸如台式计算机、游戏机、电视(tv)或投影仪的各种非便携式电子装置中的任意一种。
39.主机102可以包括至少一个操作系统(os),该操作系统(os)可以管理和控制主机102的全部功能和操作,并且提供主机102与使用数据处理系统100或存储器系统110的用户之间的操作。os可以支持与用户的使用目的和用途相对应的功能和操作。例如,根据主机102的移动性,可以将os划分为通用os和移动os。根据用户的环境,可以将通用os划分为个人os和企业os。
40.存储器系统110可以响应于来自主机102的请求而操作以存储主机102的数据。存储器系统110的非限制性示例可以包括固态驱动器(ssd)、多媒体卡(mmc)、安全数字(sd)卡、通用串行总线(usb)装置、通用闪存(ufs)装置、紧凑型闪存(cf)卡、智能媒体卡(smc)、个人计算机存储卡国际协会(pcmcia)卡和记忆棒。mmc可以包括嵌入式mmc(emmc)、尺寸减小的mmc(rs-mmc)、微型mmc或其它。sd卡可以包括迷你sd卡和/或微型sd卡。
41.存储器系统110可以被实现为各种类型的存储装置。这种存储装置的示例可以包括但不限于诸如动态随机存取存储器(dram)和静态ram(sram)的易失性存储器装置,以及诸如只读存储器(rom)、掩膜rom(mrom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、铁电ram(fram)、相变ram(pram)、磁阻ram(mram)、电阻式ram(rram或reram)或闪速存储器的非易失性存储器装置。闪速存储器可以具有三维(3d)堆叠结构。
42.在实施方案中,存储器系统110可以通过使用支持诸如nvme的协议的命令队列接
口与主机102通信。命令队列接口可以基于队列对来支持主机102和存储器系统110之间的接口,该队列对包括用于输入所请求的命令的提交队列sq以及用于记录命令的处理结果的完成队列cq。
43.图2是用于说明命令队列接口操作的示图。
44.主机102可以生成包括提交队列1022和完成队列1024的队列对。当主机102中存在多个内核时,提交队列1022和完成队列1024的队列对可以被生成为对应于多个内核中的一个。根据实施例,队列对可以存储在主机102的存储器中。
45.存储器系统110可以包括门铃寄存器(doorbell register)202,以便执行命令队列接口操作。存储器系统100使用基于门铃的主机接口与主机102通信,该基于门铃的主机接口允许主机102在存储器系统的存储器环(memory ring)上放置描述符,并且向存储器系统100发出指针更新写入,该指针更新写入被称为“门铃”。
46.门铃寄存器202可以是用于控制主机102所生成的队列对的寄存器。图2作为示例示出了一个门铃寄存器202,但是当主机102中存在多个内核时,存储器系统110中可以包括数量与内核数量相同的门铃寄存器202。门铃寄存器202可以存储指示提交队列1022的尾部的提交队列尾部指针2022以及指示完成队列1024的头部的完成队列头部指针2024。存储器系统110可以通过参考门铃寄存器202访问提交队列1022和完成队列1024,与主机102执行命令队列接口操作。
47.在步骤s1中,主机102可以将命令在提交队列1022中排队,以便请求存储器系统110执行命令。在步骤s2中,主机102可以更新提交队列尾部指针2022,并且将更新后的提交队列尾部指针2022提供到存储器系统110。存储器系统110可以将更新后的提交队列尾部指针2022存储在门铃寄存器202中。
48.在步骤s3中,存储器系统110可以从提交队列1022获取命令。在步骤s4中,存储器系统110可以处理所获取的命令。
49.在步骤s5中,在命令已经被处理之后,存储器系统110可以将命令处理完成记录在完成队列1024中。例如,存储器系统110可以将完成队列条目写入完成队列1024中。在这种情况下,完成队列头部指针2024可增加。在步骤s6中,存储器系统110可产生中断信号。
50.在步骤s7中,主机102可以完成命令。在步骤s8中,主机102可以将更新后的完成队列头部指针2024提供到存储器系统110。例如,存储器系统110可以将更新后的完成队列头部指针2024存储在门铃寄存器202中。
51.返回参照图1,存储器系统110可以包括多个存储器装置以及控制器130。存储器装置可以存储主机102的数据,并且控制器130可以控制将数据存储到存储器装置中。
52.控制器130和存储器装置可以被集成到单个半导体器装置中。例如,控制器130和存储器装置可以被集成为一个半导体装置以配置固态驱动器(ssd)。当存储器系统110被实施为ssd时,可以提高连接到存储器系统110的主机102的操作速度。另外,控制器130和存储器装置可以被集成为一个半导体装置以构成存储卡。例如,控制器130和存储器装置可以构成诸如以下的存储卡:个人计算机存储卡国际协会(pcmcia)卡、紧凑型闪存(cf)卡、智能媒体(sm)卡、记忆棒、包括尺寸减小的多媒体卡(rs-mmc)和微型mmc的mmc、包括迷你安全数字(迷你sd)卡、微型sd卡和sdhc卡的sd卡或通用闪存(ufs)装置。
53.存储器系统110的非限制性应用示例可以包括计算机、超移动pc(umpc)、工作站、
上网本、个人数字助理(pda)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(pmp)、便携式游戏机、导航系统、黑盒、数码相机、数字多媒体广播(dmb)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、构成数据中心的存储装置、能够在无线环境下传输/接收信息的装置、构成家庭网络的各种电子装置中的一种、构成计算机网络的各种电子装置中的一种、构成远程信息处理网络的各种电子装置中的一种、射频识别(rfid)装置或构成计算系统的各种组件中的一种。
54.存储器装置可以是非易失性存储器装置,并且即使没有供应电力也可以保留其中存储的数据。存储器装置可以通过编程操作存储从主机102提供的数据,并且通过读取操作将其中存储的数据提供到主机102。存储器装置可以包括多个存储块,存储块中的每一个可以包括多个页面,并且页面中的每一个可以包括联接到字线的多个存储器单元。在实施例中,存储器装置可以是闪速存储器。闪速存储器可以具有三维(3d)堆叠结构。
55.控制器130可以响应于来自主机102的请求控制存储器装置。例如,控制器130可以将从存储器装置读取的数据提供到主机102,并且将从主机102提供的数据存储到存储器装置中。针对该操作,控制器130可以控制存储器装置的读取操作、编程操作和擦除操作。
56.控制器130可以包括主机接口(i/f)132、处理器134、存储器i/f 142和存储器144,它们经由内部总线彼此电连接以可操作或通信。
57.主机i/f 132可以被配置为处理主机102的命令和数据,并且可以通过诸如以下的各种接口协议中的一种或多种与主机102通信:通用串行总线(usb)、多媒体卡(mmc)、高速外围组件互连(pci-e或pcie)、小型计算机系统接口(scsi)、串列scsi(sas)、串行高级技术附件(sata)、并行高级技术附件(pata)、增强型小磁盘接口(esdi)或电子集成驱动器(ide)。
58.主机i/f 132可以通过被称为主机接口层(hil)的固件来驱动,以便与主机交换数据。
59.存储器i/f 142可以用作用于控制器130和存储器装置接口连接的存储器/存储接口,使得控制器130响应于来自主机102的请求控制存储器装置。当存储器装置是闪速存储器或者具体地是nand闪速存储器时,存储器i/f 142可以在处理器134的控制下生成针对存储器装置的控制信号,并处理待提供到存储器装置的数据。存储器i/f 142可以用作用于处理控制器130与存储器装置之间的命令和数据的接口(例如,nand闪存接口)。具体地,存储器i/f 142可以支持控制器130和存储器装置之间的数据传送。
60.存储器i/f 142可以通过被称为闪存接口层(fil)的固件来驱动,以便与存储器装置交换数据。
61.存储器144可以用作存储器系统110和控制器130的工作存储器,并且存储用于驱动存储器系统110和控制器130的数据。控制器130可以响应于来自主机102的请求控制存储器装置执行读取操作、编程操作和擦除操作。控制器130可以将从存储器装置读取的数据提供到主机102,可以将从主机102提供的数据存储到存储器装置中。存储器144可以存储控制器130和存储器装置执行这些操作所需的数据。
62.存储器144可以由易失性存储器实现。例如,存储器144可以由静态随机存取存储器(sram)或动态随机存取存储器(dram)实现。存储器144可以被设置在控制器130之内或之
外。图1例示了被设置在控制器130内的存储器144。在实施例中,存储器144可以由外部易失性存储器实现,该外部易失性存储器具有在存储器144和控制器130之间传送数据的存储器接口。
63.如上所述,存储器144可以存储在主机和存储器装置之间执行数据写入/读取操作所需的数据以及在执行该数据写入/读取操作时的数据。为了存储这些数据,存储器144可以包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
64.处理器134可以控制存储器系统110的全部操作。处理器134可以驱动固件以控制存储器系统110的全部操作。固件可以被称为闪存转换层(ftl)。而且,处理器134可以被实现为微处理器或中央处理单元(cpu)。特别地,为了提高存储器系统110的数据处理性能,处理器134可以被实施为包括多个内核的多内核处理器。
65.处理器134可以驱动ftl并执行与从主机接收的请求相对应的前台操作。例如,处理器134可以响应于来自主机的写入请求控制存储器装置的写入操作,并且响应于来自主机的读取请求控制存储器装置的读取操作。
66.而且,处理器134可以对存储器装置执行后台操作。例如,对存储器装置执行的后台操作可以包括垃圾收集(gc)操作、损耗均衡(wl)操作、映射清除操作或坏块管理操作。
67.处理器134中包括的多个内核可以并行操作以提高存储器系统110的数据处理性能。将参照图3详细描述多个内核的并行操作。
68.图3是图1所示的存储器系统110的详细框图。
69.参照图1描述的多个存储器装置可以对应于图3所示的多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44。多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44可以分别通过多个通道ch1至ch4连接到存储器i/f 142。
70.多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44中的每一个可以具有存储器管芯、平面、存储块和页面的分层结构。一个存储器管芯可以通过通道一次接收一个命令。一个存储器管芯可以包括一个或多个平面,并且平面可以并行地处理存储器管芯所接收到的命令。平面中的每一个可以包括多个存储块。存储块可以是擦除操作的最小单位。一个存储块可以包括多个页面。页面可以是编程操作和读取操作的最小单位。
71.多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44的结构可以彼此基本相同或相似。多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44可以独立地操作。
72.参照图1描述的控制器130可以对应于图3所示的控制器130。图3中省略了参照图1描述的控制器130的一些组件。图3所示的第一内核(core1)136和第二内核(core2)138可以对应于图1的处理器134中包括的多个内核。第一内核136和第二内核138可以独立地操作。
73.第一内核136和第二内核138以及多个存储器管芯die11至die14、die21至die24、die31至die34和die41至die44可以被配置为并行操作,使得存储器系统110可以提供较高的数据处理性能。
74.第一内核136和第二内核138可以处理与不同地址相关联的命令。例如,第一内核
136可以仅处理与奇数逻辑地址相关联的命令,而第二内核138可以仅处理与偶数逻辑地址相关联的命令。在下文中,与奇数逻辑地址相关联的命令被称为奇数地址命令,与偶数逻辑地址相关联的命令被称为偶数地址命令。
75.将使用两个内核分别处理偶数地址命令和奇数地址命令的情况作为示例来描述本公开的实施例。然而,本公开不限于此。例如,处理器134可以包括两个或更多个内核,并且主机接口132可以基于将与来自主机102的命令相关联的逻辑地址除以内核的数量的模运算,向每个内核提供命令。
76.主机接口132可以检测门铃寄存器202的值,并且获取在主机102的提交队列1022中排队的命令。主机接口132可以首先将所获取的命令在hil队列232中排队。然后,主机接口132可以根据排队的命令的逻辑地址是奇数逻辑地址还是偶数逻辑地址将命令提供到第一内核136或第二内核138。
77.第一内核136和第二内核138可以控制排他地分配给它们的存储器管芯。例如,第一内核136可以仅控制分别通过第一通道ch1和第二通道ch2连接的存储器管芯die11至die14和die21至die24,并且第二内核138可以仅控制分别通过第三通道ch3和第四通道ch4连接的存储器管芯die31至die34和die41至die44。在下文中,第一内核136所控制的存储器管芯die11至die14和die21至die24被称为第一存储器管芯,并且第二内核138所控制的存储器管芯die31至die34和die41至die44被称为第二存储器管芯,其中第一存储器管芯包括在第一存储器装置中,第二存储器管芯包括在第二存储器装置中。
78.第一内核136可以接收奇数地址命令,将奇数地址命令在第一ftl队列(ftl queue1)236中排队,然后将奇数地址命令映射到第一存储器管芯的物理地址。第二内核138可以接收偶数地址命令,将偶数地址命令在第二ftl队列(ftl queue2)238中排队,然后将偶数地址命令映射到第二存储器管芯的物理地址。因为第一内核136和第二内核138处理与不同逻辑地址和物理地址相关联的命令,所以它们可以并行操作而互不干扰。
79.第一内核136可以对在第一ftl队列236中排队的奇数地址命令的命令运行顺序进行重新排序。可以在考虑交错程序或其他程序时,执行这种重新排序以提高数据处理性能。类似地,第二内核138也可以对在第二ftl队列238中排队的偶数地址命令的命令运行顺序进行重新排序。
80.因为第一内核136和第二内核138互不干扰,所以在常规技术中存在限制,即在hil队列232中排队的命令在第一ftl队列236和第二ftl队列238中排队之后,无法在偶数地址命令和奇数地址命令之间对命令运行顺序重新排序。
81.根据本公开的实施例,主机接口132可以改变在hil队列232中排队的命令的处理顺序,并且以改变后的顺序将命令提供到第一ftl队列236和第二ftl队列238。例如,主机接口132可以基于第一存储器管芯和第二存储器管芯的状态来改变偶数地址命令和奇数地址命令之间的命令处理顺序。根据本公开的实施例,hil队列232可以考虑第一存储器管芯和第二存储器管芯的所有状态来确定命令处理顺序,从而补偿由于第一内核136和第二内核138互不干扰而导致的第一内核和第二内核的命令重新排序的限制。
82.在下文中,将详细描述根据本公开的实施例的主机接口132的命令重新排序方法。
83.图4a至图4c是用于说明主机接口132的命令重新排序的示图。图4a至图4c示出了hil队列232、第一ftl队列236和第二ftl队列238,并且还示出了每个队列的头部head和尾
部tail。
84.图4a是用于说明根据本公开的实施例的在执行命令重新排序之前的队列的状态的示图。
85.图4a示出了命令在第一ftl队列236的所有条目中排队,而没有命令在第二ftl队列238中排队的状态。在该状态下,主机接口132可以接收多个命令,并且将命令在hil队列232中排队。在图4a的示例中,hil队列232可以接收八个命令。在八个命令之中,首先接收的第一至第六命令hil_cmd1至hil_cmd6可以是作为奇数地址命令待提供到第一内核136的命令,而稍后接收的第七和第八命令hil_cmd7和hil_cmd8可以是作为偶数地址命令待在第二内核138中排队的命令。
86.当主机接口132不对在hil队列232中排队的命令执行命令重新排序并且在不进行命令重新排序的情况下向第一内核136和第二内核138提供命令时,在第一至第六命令hil_cmd1至hil_cmd6被提供到第一内核136之前,偶数地址命令即第七和第八命令hil_cmd7和hil_cmd8可能不会被提供到第二内核138。
87.当命令在第一ftl队列236的所有条目中排队时,在第一ftl队列236中排队的命令被处理之前,第一至第六命令hil_cmd1至hil_cmd6可能不会在第一ftl队列236中排队。因此,即使当第二ftl队列238为空并且第二内核138可以处于能够立即处理命令的状态时,因为只有在等待所有的第一至第六命令hil_cmd1至hil_cmd6在第一ftl队列236中排队之后,才允许主机接口132向第二ftl队列238提供第七和第八命令hil_cmd7和hil_cmd8,所以无法根据需要执行第一内核136和第二内核138的并行操作。当第一内核136和第二内核138的并行操作受到限制时,存储器系统110的数据处理性能也受到限制。
88.根据本公开的实施例,主机接口132可以对在hil队列232中排队的命令执行命令重新排序。
89.图4b是用于说明根据本公开的实施例的命令重新排序的示图。
90.主机接口132可以将从主机102接收的命令在hil队列232中排队,并且在满足预定条件时对排队的命令重新排序。
91.作为预定条件的第一示例,当命令在hil队列232的所有条目中排队时,主机接口132可以对在hil队列232中排队的命令重新排序。
92.作为预定条件的第二示例,基于在hil队列232中排队的命令的逻辑地址,当确定第一内核136和第二内核138可以同时操作时,主机接口132可以对在hil队列232中排队的命令重新排序。例如,当与在hil队列232中排队的奇数地址命令相关联的数据大小以及与在hil队列232中排队的偶数地址命令相关联的数据大小都等于或大于预定大小时,主机接口132可以对在hil队列232中排队的命令重新排序。当与奇数地址命令相关联的数据大小以及与偶数地址命令相关联的数据大小都等于或大于预定大小时,如果主机接口132执行命令重新排序并向第一内核136和第二内核138提供命令,则第一内核136和第二内核138可以同时执行前台操作。
93.作为预定条件的第三示例,当门铃寄存器202的提交队列尾部指针2022的值在从已经获取最后在hil队列232中排队的命令开始的预定时间段或更长时间内未改变时,主机接口132可以对在hil队列232中排队的命令重新排序。因此,为了在很大程度上防止命令处理中的延迟,即使不满足第一示例和第二示例的预定条件,当从已经接收到最后一个命令
开始的预定时间段或更长时间内未接收到新命令时,主机接口132也可以对在hil队列232中排队的命令重新排序。
94.在图4b的示例中,主机接口132可以检测到命令已经在hil队列232的所有条目中排队,并且执行命令重新排序。
95.主机接口132可以根据预定标准执行命令重新排序。例如,主机接口132可以执行命令重新排序,使得命令首先被提供到包括处于空闲状态的存储器管芯的内核。在图4b的示例中,因为第二ftl队列238为空,所以与第二内核138相关联的第二存储器管芯也可处于空闲状态。主机接口132可以调整命令的顺序,使得在第一至第六命令hil_cmd1至hil_cmd6之前提供第七和第八命令hil_cmd7和hil_cmd8。
96.图4c是用于说明在执行根据本公开的实施例的命令重新排序时发生的效果的示图。
97.主机接口132可以向第二ftl队列238提供第七和第八命令hil_cmd7和hil_cmd8,而无需等待第一ftl队列236中排队的命令被完全处理之后。第二内核138可能不会在空闲状态下等待,并且可以与第一内核136同时处理命令。第二内核138所控制的第二存储器管芯还可以与第一存储器管芯同时执行操作,而无需在空闲状态下等待。因此,根据本公开的实施例,可以根据需要执行第一内核136和第二内核138的并行操作,并且可以提高存储器系统110的吞吐量。
98.为主机接口132确定的用于执行命令重新排序的标准不限于图4b中描述的那些。将参照图5详细描述预定标准的各种示例。
99.图5是用于说明为主机接口132确定的执行命令重新排序的标准的示例的示图。
100.图5示出了包括多个通道ch1至ch4中分别包括的多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44中的每一个的管芯状态和开放块偏移的表。当相应的存储器管芯处于运行状态时,管芯状态显示为busy,当相应的存储器管芯未处于运行状态时,管芯状态显示为idle。开放块偏移是指页面偏移,该页面偏移指示每个存储器管芯中包括的存储块之中的开放块中待编程的页面的顺序。在图5的示例中,每个存储块可以包括100个页面。开放块是存储器管芯的存储块之中当前分配以执行编程操作的存储块,并且可以指100个页面都没有编程的存储块。
101.图5示出了一个通道中包括的存储器管芯具有基本相同的管芯状态和开放块偏移的情况。例如,第一内核136和第二内核138可以将上述存储器管芯的存储器块分组,并且将分组的存储块视为超级块,以便提高一个通道中包括的存储器管芯的并行性。当访问一个超级块时,一个通道中包括的存储器管芯可以具有基本相同的管芯状态和开放块偏移。然而,本公开不限于一个通道中包括的存储器管芯具有基本相同的管芯状态和开放块偏移的情况。
102.作为预定标准的第一示例,在多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44之中存在空闲状态的存储器管芯的情况下,主机接口132可以执行命令重新排序,使得与控制相应存储器管芯的内核相关联的命令首先被提供。在图5的示例中,主机接口132可以对hil队列232的命令执行命令重新排序,使得与控制处于空闲状态的多个存储器管芯die31至die34和die41至die44的第二内核138相关联的偶数地址命令首先被提供。
103.当存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44都处于忙碌状态时,主机接口132可以通过使包括在主机接口132中的奇数地址命令和偶数地址命令交织来执行命令重新排序。具体地,主机接口132可以执行命令重新排序,从而交替地提供用于处理各自具有预定大小的数据的奇数地址命令和偶数地址命令。例如,主机接口132可以执行命令重新排序,从而交替地提供96kb数据的奇数地址命令以及96kb数据的偶数地址命令。
104.例如,预定大小可以是当一个内核所控制的存储器管芯同时操作时可以一次处理的数据大小。具体地,可以基于一个内核所控制的存储器管芯的数量以及每个存储器管芯的页面大小来确定预定大小。
105.作为预定标准的第二示例,主机接口132可以执行命令重新排序,使得命令首先被提供到控制多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44之中的、在其开放块中具有最大空闲空间的存储器管芯的内核。在图5的示例中,当开放块偏移接近“0”时,相应开放块中的空闲空间可能较大,并且当开放块偏移接近“100”时,相应开放块中的空闲空间可能较小。
106.当用作开放块的存储块的所有页面被编程时,第一内核136和第二内核138可以将该存储块确定为封闭块,并且将作为处于擦除状态的存储块的空闲块中的一个确定为开放块。当将空闲块中的一个确定为开放块时,存储器管芯的空闲块的数量可能减少。为了恢复空闲块减少的数量,第一内核136和第二内核138可以执行诸如垃圾收集的后台操作,但是前台操作的执行可能由于后台操作而延迟。
107.当首先在其开放块中具有相对较小的空闲空间的存储器管芯中处理编程命令时,可以在对相对少量的数据被编程之后执行存储器系统110的后台操作。例如,当第二内核138首先对连接到第三通道ch3的存储器管芯die31至die34执行编程操作时,可以针对每个存储器管芯编程10个页面的数据,然后可以在第二内核138中开始后台操作。当在第二内核138中开始后台操作时,第二内核138的吞吐量可能降低。当第二内核138的吞吐量降低时,存储器系统110的平均吞吐量可能降低。
108.当首先在其开放块中具有最大空闲空间的存储器管芯中处理命令时,可以在大量数据被编程之后执行存储器系统110的后台操作。例如,当第一内核136首先对连接到第一通道ch1的存储器管芯die11至die14执行编程操作时,可以针对每个存储器管芯编程100个页面的数据,然后可以在第一内核136中开始后台操作。
109.因此,主机接口132可以执行命令重新排序,使得与第一内核136相关联的奇数地址命令首先被处理,该第一内核136控制各自在其开放存储块中具有最大空闲空间的存储器管芯die11至die14。
110.图5示出了多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44的管芯状态和开放块偏移被包括在一个表中;然而,本公开不限于此。例如,主机接口132可以通过访问存储器i/f 142的寄存器来获取多个存储器管芯die11至die14、die21至die24、die31至die34以及die41至die44的管芯状态,并且从第一内核136和第二内核138的映射数据获取开放块偏移。
111.图6是示出根据本公开的实施例的主机接口132的操作的示图。
112.在步骤s602中,主机接口132可以确定是否满足预定条件以便执行命令重新排序。
已经参照图4b详细描述了预定条件的示例。
113.在步骤s604中,主机接口132可以根据预定标准对在hil队列232中排队的命令hil_cmd执行命令重新排序。已经参照图4b和图5详细描述了预定标准的示例。
114.在步骤s606中,主机接口132可以将在hil队列232中排队的命令hil_cmd以命令hil_cmd已经重新排序的顺序提供到第一内核136和第二内核138。
115.根据本公开的实施例,主机接口132可以执行在hil队列232中排队并且与不同内核相关联的命令之间的命令重新排序,并且将在hil队列232中排队的命令以命令重新排序所确定的顺序提供到第一内核136和第二内核138。主机接口132执行命令重新排序,从而可以基本上防止由于第一ftl队列236或第二ftl队列238的拥塞而导致的hil队列232的拥塞,并且可以提高第一内核136和第二内核138的并行性。因此,可以提高存储器系统110的性能。
116.前述实施例和示例是用于实施所公开技术的示例。基于所公开的内容,可以对所描述的实施例和其它实施例进行各种替代、修改和改变。