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

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

2022-02-24 18:00:11 来源:中国专利 TAG:

存储器控制器及其操作方法
1.相关申请的交叉引用
2.本技术要求于2020年8月21日向韩国知识产权局提交的、申请号为10-2020-0105641的韩国专利申请的优先权,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
3.本公开涉及一种电子装置,并且更特别地,涉及一种存储器控制器及其操作方法。


背景技术:

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


技术实现要素:

6.本公开的实施例提供了一种分配用于在没有来自外部的附加信息的情况下传输映射数据或命令数据的高速缓存行的存储器控制器以及操作该存储器控制器的方法。
7.根据本公开的实施例的存储器控制器包括:存储器缓冲器,被配置为存储与从主机接收的请求相对应的命令数据;以及高速缓存存储器,被配置为高速缓存该命令数据。高速缓存存储器通过基于输出命令数据的组件和命令数据中包括的标志分配高速缓存行来存储命令数据。
8.根据本公开的实施例的操作包括存储器缓冲器和高速缓存存储器的存储器控制器的方法包括:将与从主机接收的请求相对应的命令数据存储在存储器缓冲器中;并且将该命令数据高速缓存在高速缓存存储器中,高速缓存可以包括基于输出命令数据的组件和命令数据中包括的标志来分配高速缓存行。
9.根据本技术,可以通过分配高速缓存行来增加高速缓存存储器的命中率,该高速缓存行用于通过访问映射数据或命令数据的方法传输映射数据或命令数据。
附图说明
10.图1是示出根据实施例的存储装置的框图。
11.图2是示出图1的存储器装置的结构的示图。
12.图3是示出图2的存储器单元阵列的示图。
13.图4是示出图1的存储器控制器的示图。
14.图5至图8是示出在存储器控制器和存储器装置之间传输映射数据或命令数据的示图。
15.图9是示出在存储器控制器中包括的组件之间传输命令数据的示图。
16.图10是示出清除命令数据的单位的示图。
17.图11是示出分配给一个高速缓存行的命令数据的示图。
18.图12是示出当高速缓存行未均匀分配时分配高速缓存行的方法的示图。
19.图13是示出当高速缓存行未均匀分配时分配高速缓存行的另一方法的示图。
20.图14是示出根据本公开的实施例的存储器控制器的操作的示图。
21.图15是示出根据另一实施例的存储器控制器的示图。
22.图16是示出应用根据本公开的实施例的存储装置的存储卡系统的框图。
23.图17是示例性地示出应用根据本公开的实施例的存储装置的固态驱动器(ssd)系统的框图。
24.图18是示出应用根据本公开的实施例的存储装置的用户系统的框图。
具体实施方式
25.示出根据本说明书或本技术中公开的概念的实施例的具体结构或功能描述仅仅是为了描述根据本公开的概念的实施例。根据本公开的概念的实施例可以以各种形式实施,并且描述不限于本说明书或本技术中描述的实施例。
26.在下文中,将参照附图详细描述本公开的实施例,使得本公开所属领域的技术人员可以容易地实施本公开的技术精神。
27.图1是示出根据实施例的存储装置50的框图。
28.参照图1,存储装置50可以包括存储器装置100和存储器控制器200。
29.存储装置50可以是在诸如以下的主机300的控制下存储数据的装置:蜂窝电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、tv、平板pc、车载信息娱乐系统等。
30.根据作为与主机300的通信方法的主机接口,存储装置50可以被制造为各种类型的存储装置中的一种。例如,存储装置50可以被配置为诸如以下的各种类型的存储装置中的任意一种:ssd,mmc、emmc、rs-mmc、微型mmc等形式的多媒体卡,sd、迷你sd、微型sd等形式的安全数字卡,通用串行总线(usb)存储装置,通用闪存(ufs)装置,个人计算机存储卡国际协会(pcmcia)卡类型存储装置,外围组件互连(pci)卡类型存储装置,高速pci(pci-e)卡类型存储装置,紧凑型闪存(cf)卡,智能媒体卡,记忆棒等。
31.存储装置50可以被制造为诸如以下的各种类型的封装中的任意一种:堆叠封装(pop)、系统级封装(sip)、片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶圆级制造封装(wfp)、晶圆级堆叠封装(wsp)等。
32.存储器装置100可以存储数据。存储器装置100响应于存储器控制器200的控制而操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。存储器单元阵列可以包括多个存储块。存储块中的每一个可以包括多个存储器单元,并且多个存储器单元可以配置多个页面。在实施例中,页面可以是用于将数据存储在存储器装置100中或者读取存储器装置100中存储的数据的单位。存储块可以是用于擦除存储器装置100中存储的数据的单位。
33.在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(ddr sdram)、第四代低功率双倍数据速率(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)、rambus动态随机存取存储器(rdram)、nand闪速存储器、垂直nand闪速存储器、nor闪速存储器装置、电阻式随机存取存储器(rram)、相变ram(pram)、磁阻随机存取存储器(mram)、铁电随机存取存储器(fram)、自旋转移力矩随机存取存储器(stt-ram)等。在本说明书中,为了便于描述,假设存储器装置100是nand闪速存储器。
34.存储器装置100可以被实施为二维阵列结构或三维阵列结构。在下文中,将三维阵列结构作为实施例进行描述,但是实施例不限于三维阵列结构。本公开不仅可以应用于电荷存储层由导电浮栅(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可以操作诸如闪存转换层(ftl)的固件以控制主机300与存储器装置100之间的通信。
39.在实施例中,存储器控制器200可以包括固件(未示出),该固件可以从主机300接收写入数据和逻辑块地址(lba),并且将lba转换为指示待存储写入数据的存储器单元的地址的物理块地址(pba)。另外,存储器控制器200可以将配置lba和pba之间的映射关系的逻辑-物理地址映射表存储在缓冲存储器中。
40.存储器控制器200可以根据主机300的请求控制存储器装置100执行编程操作、读取操作、擦除操作等。例如,当从主机300接收到编程请求时,存储器控制器200可以将编程请求转换为编程命令,并且可以将编程命令、pba和写入数据提供到存储器装置100。当从主机300接收到读取请求以及lba时,存储器控制器200可以将读取请求改变为读取命令,选择与lba相对应的pba,然后将读取命令和pba提供到存储器装置100。当从主机300接收到擦除请求以及lba时,存储器控制器200可以将擦除请求改变为擦除命令,选择与lba相对应的pba,然后将擦除命令和pba提供到存储器装置100。
41.在实施例中,存储器控制器200可以在没有来自主机300的请求的情况下生成命令、地址和数据并将命令、地址和数据传输到存储器装置100。例如,存储器控制器200可以将命令、地址和数据提供到存储器装置100从而执行后台操作,诸如用于损耗均衡的编程操
作和用于垃圾收集的编程操作。
42.在实施例中,存储器控制器200可以包括中央处理器210。中央处理器210可以执行用于执行与从主机300接收的请求相对应的操作的操作。
43.例如,当从主机300接收的请求是编程请求时,中央处理器210可以指示将与从主机300接收的编程请求相对应的lba转换为pba,并且将转换后的pba输出到存储器装置100。另外,中央处理器210可以将待编程的数据输出到存储器装置100。
44.再如,当从主机300接收的请求是读取请求时,中央处理器210可以指示将与从主机300接收的读取请求相对应的lba转换为pba,并且将转换后的pba输出到存储器装置100。
45.另外,中央处理器210可以生成与从主机300接收的请求相对应的命令。此时,中央处理器210可以输出与命令相对应的命令数据。
46.在实施例中,存储器控制器200可以包括直接存储器访问(dma)控制器220。dma控制器220可以控制存储器控制器200和存储器装置100,从而使用dma方法执行操作。
47.例如,dma控制器220可以控制存储器装置100,使得存储器装置100和存储器控制器200通过输入/输出焊盘(pad)进行通信,而无需中央处理器210的干预。此时,因为在中央处理器210不访问存储器缓冲器250的同时,dma控制器220可以使用连接到存储器控制器200中的其它组件的总线,所以dma控制器220可以控制存储器装置100而无需中央处理器210的干预。
48.在实施例中,存储器控制器200可以包括闪存转换层230。闪存转换层230可以生成表示lba和pba之间的映射关系的映射数据。另外,闪存转换层230可以将基于映射数据生成的逻辑-物理地址映射表存储在存储器缓冲器250中。
49.在实施例中,存储器控制器200可以包括高速缓存存储器240。高速缓存存储器240可以临时存储从闪存转换层230输出的映射数据,或者临时存储从中央处理器210接收的映射数据或命令数据。高速缓存存储器240可以将临时存储的映射数据或命令数据输出到存储器缓冲器250。另外,高速缓存存储器240可以临时存储从存储器缓冲器250输出的映射数据或命令数据,并且可以将临时存储的映射数据或命令数据输出到中央处理器210或dma控制器220。
50.此外,高速缓存存储器240可以基于局部性(locality)来高速缓存接收的映射数据或命令数据。局部性可以意为映射数据或命令数据再次被引用的可能性较高,并且该局部性可以是时间局部性和空间局部性中的任意一种。时间局部性指示对与先前引用的数据相对应的映射数据map_data的频繁访问,并且空间局部性是在空间上邻近于存储先前引用的数据的存储器区域的地址。另外,高速缓存在高速缓存存储器240中的映射数据或命令数据可以基于映射数据或命令数据的改变后的局部性而更新。
51.在实施例中,高速缓存存储器240可以由静态随机存取存储器(sram)配置。
52.在实施例中,高速缓存存储器240可以主动地分配用于存储接收的映射数据或命令数据的高速缓存行。此时,高速缓存存储器240可以根据输出映射数据或命令数据的组件(例如,中央处理器210或dma控制器)来分配高速缓存行。也就是说,可以在没有来自外部(例如,主机300)的附加信息的情况下分配用于存储映射数据或命令数据的高速缓存行。
53.在实施例中,存储器控制器200可以包括存储器缓冲器250。存储器缓冲器250可以由动态随机存取存储器(dram)配置。
54.存储器缓冲器250可以存储通过高速缓存存储器240接收的映射数据或命令数据。另外,通过中央处理器210或dma控制器220的请求,存储器缓冲器250中存储的映射数据或命令数据可以通过高速缓存存储器240输出。在另一实施例中,存储器缓冲器250可以根据来自主机300的清除请求,通过高速缓存存储器240将存储器缓冲器250中存储的所有映射数据输出到存储器装置100。
55.此外,随着闪存转换层230形成新的映射关系,可以更新存储器缓冲器250中存储的映射数据。
56.在实施例中,存储装置50可以进一步包括缓冲存储器(未示出)。存储器控制器200可以控制主机300和缓冲存储器(未示出)之间的数据交换。可选地,存储器控制器200可以将用于控制存储器装置100的系统数据临时存储在缓冲存储器中。例如,存储器控制器200可以将从主机300输入的数据临时存储在缓冲存储器中,然后将临时存储在缓冲存储器中的数据传输到存储器装置100。
57.在各个实施例中,缓冲存储器可以用作存储器控制器200的操作存储器和高速缓存存储器。缓冲存储器可以存储存储器控制器200运行的代码或命令。可选地,缓冲存储器可以存储存储器控制器200处理的数据。
58.在实施例中,缓冲存储器可以被实施为诸如以下的动态随机存取存储器(dram):双倍数据速率同步动态随机存取存储器(ddr sdram)、ddr4 sdram、第四代低功率双倍数据速率(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)sdram或rambus动态随机存取存储器(dram),或静态随机存取存储器(sram)。
59.在各个实施例中,可以从存储装置50的外部连接缓冲存储器。在这种情况下,连接到存储装置50的外部的易失性存储器装置可以用作缓冲存储器。
60.在实施例中,存储器控制器200可以控制至少两个或更多个存储器装置。在这种情况下,存储器控制器200可以根据交错方法来控制存储器装置,以提高操作性能。
61.主机300可以使用诸如以下的各种通信方法中的至少一种与存储装置50通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围组件互连(pci)、高速pci(pcie)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和减小负载的dimm(lrdimm)。
62.图2是示出图1的存储器装置100的结构的示图。
63.参照图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
64.存储器单元阵列110包括多个存储块blk1至blkz。多个存储块blk1至blkz通过行线rl连接到行解码器121。多个存储块blk1至blkz可以通过位线bl1至bln连接到页面缓冲器组123。多个存储块blk1至blkz中的每一个包括多个存储器单元。在实施例中,多个存储器单元是非易失性存储器单元。连接到相同字线的存储器单元可以被定义为一个页面。因此,一个存储块可以包括多个页面。
65.行线rl可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。
66.存储器单元阵列110中包括的存储器单元中的每一个可以被配置为存储一位数据的单层单元(slc)、存储两位数据的多层单元(mlc)、存储三位数据的三层单元(tlc)或存储
四位数据的四层单元(qlc)。
67.外围电路120可以被配置为在控制逻辑130的控制下对存储器单元阵列110的选择的区域执行编程操作、读取操作或擦除操作。外围电路120可以驱动存储器单元阵列110。例如,外围电路120可以在控制逻辑130的控制下向行线rl和位线bl1至bln施加各种操作电压或使所施加的电压放电。
68.外围电路120可以包括行解码器121、电压生成器122、页面缓冲器组123、列解码器124、输入/输出电路125和感测电路126。
69.行解码器121通过行线rl连接到存储器单元阵列110。行线rl可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。在实施例中,字线可以包括普通字线和虚设字线。在实施例中,行线rl可以进一步包括管道选择线。
70.行解码器121被配置为对从控制逻辑130接收的行地址radd进行解码。行解码器121根据经解码的地址选择存储块blk1至blkz之中的至少一个存储块。另外,行解码器121可以根据经解码的地址来选择所选择的存储块的至少一个字线wl,以将电压生成器122生成的电压施加到该至少一个字线wl。
71.例如,在编程操作期间,行解码器121可以将编程电压施加到选择的字线,并且将编程通过电压施加到未选择的字线,该编程通过电压的电平低于该编程电压。在编程验证操作期间,行解码器121可以将验证电压施加到选择的字线,并且将验证通过电压施加到未选择的字线,该验证通过电压的电平高于该验证电压。在读取操作期间,行解码器121可以将读取电压施加到选择的字线,并且将读取通过电压施加到未选择的字线,该读取通过电压的电平高于该读取电压。
72.在实施例中,以存储块为单位执行存储器装置100的擦除操作。在擦除操作期间,行解码器121可以根据经解码的地址选择一个存储块。在擦除操作期间,行解码器121可以将接地电压施加到连接到选择的存储块的字线。
73.电压生成器122响应于控制逻辑130的控制而操作。电压生成器122被配置为使用供应到存储器装置100的外部电源电压来生成多个电压。具体地,电压生成器122可以响应于操作信号opsig而生成用于编程操作、读取操作和擦除操作的各种操作电压vop。例如,电压生成器122可以响应于控制逻辑130的控制而生成编程电压、验证电压、通过电压、读取电压、擦除电压等。
74.在实施例中,电压生成器122可以通过调节外部电源电压来生成内部电源电压。电压生成器122生成的内部电源电压用于生成存储器装置100的各种操作电压。
75.也就是说,电压生成器122可以使用外部电源电压或内部电源电压来生成多个电压。
76.例如,电压生成器122可以包括接收内部电源电压的多个泵浦(pumping)电容器,并且可以响应于控制逻辑130的控制而选择性地启用多个泵浦电容器来生成多个电压。
77.生成的多个电压可以由行解码器121供应到存储器单元阵列110。
78.页面缓冲器组123包括第一至第n页面缓冲器pb1至pbn。第一至第n页面缓冲器pb1至pbn通过第一至第n位线bl1至bln分别连接到存储器单元阵列110。第一至第n页面缓冲器pb1至pbn响应于控制逻辑130的控制而操作。具体地,第一至第n页面缓冲器pb1至pbn可以响应于页面缓冲器控制信号pbsignals而操作。例如,在读取操作或编程验证操作期间,第
一至第n页面缓冲器pb1至pbn可以临时存储通过第一至第n位线bl1至bln接收的数据,或者可以感测位线bl1至bln的电压或电流。
79.具体地,在编程操作期间,当将编程电压施加到选择的字线时,第一至第n页面缓冲器pb1至pbn可以通过第一至第n位线bl1至bln将通过输入/输出电路125接收的数据data传送到选择的页面的存储器单元,该选择的页面联接到选择的字线。根据所传送的数据data对选择的页面的存储器单元进行编程。在编程验证操作期间,第一至第n页面缓冲器pb1至pbn可以通过感测通过第一至第n位线bl1至bln从选择的存储器单元接收的电压或电流来读取页面数据。
80.在读取操作期间,第一至第n页面缓冲器pb1至pbn通过第一至第n位线bl1至bln从选择的页面的存储器单元读取数据,并且在列解码器124的控制下将读取的数据输出到输入/输出电路125。
81.在擦除操作期间,第一至第n页面缓冲器pb1至pbn可以使第一至第n位线bl1至bln浮置或施加擦除电压。
82.列解码器124可以响应于列地址cadd而在输入/输出电路125和页面缓冲器组123之间传送数据。例如,列解码器124可以通过数据线dl与第一至第n页面缓冲器pb1至pbn交换数据,或者可以通过列线cl与输入/输出电路125交换数据。
83.输入/输出电路125可以将从图1的存储器控制器200接收的命令cmd和地址addr传送到控制逻辑130,或者可以与列解码器124交换数据data。
84.在读取操作或编程验证操作期间,感测电路126可以响应于允许位信号vrybit而生成参考电流,并且将从页面缓冲器组123接收的感测电压vpb与参考电流生成的参考电压进行比较,以向控制逻辑130输出通过信号pass或失败信号fail。
85.控制逻辑130可以基于命令cmd和地址addr来输出操作信号opsig、行地址radd、页面缓冲器控制信号pbsignals和允许位信号vrybit,从而控制外围电路120。例如,控制逻辑130可以响应于子块读取命令和地址addr而控制选择的存储块的读取操作。另外,控制逻辑130可以响应于子块擦除命令和地址addr而控制选择的存储块中包括的选择的子块的擦除操作。另外,控制逻辑130可以响应于通过信号pass或失败信号fail而确定编程验证操作是通过还是失败。
86.图3是示出图2的存储器单元阵列110的示图。
87.图3示出图2的存储器单元阵列110中包括的多个存储块blk1至blkz之中的任意一个存储块blka。
88.彼此平行布置的第一选择线、字线和第二选择线可以连接到存储块blka。例如,字线可以在第一选择线和第二选择线之间彼此平行地布置。在此,第一选择线可以是源极选择线ssl,并且第二选择线可以是漏极选择线dsl。
89.更具体地,存储块blka可以包括连接在位线bl1至bln与源极线sl之间的多个串。位线bl1至bln可以分别连接到串,并且源极线sl可以共同地连接到串。因为串可以被配置为彼此相同,所以将作为示例具体描述连接到第一位线bl1的串st。
90.串st可以包括串联连接在源极线sl和第一位线bl1之间的源极选择晶体管sst、多个存储器单元f1至f16和漏极选择晶体管dst。在其它实施例中,一个串st可以包括至少一个源极选择晶体管sst和至少一个漏极选择晶体管dst,并且一个串st可以包括数量大于存
储器单元f1至f16的数量的多个存储器单元。
91.源极选择晶体管sst的源极可以连接到源极线sl,并且漏极选择晶体管dst的漏极可以连接到第一位线bl1。存储器单元f1至f16可以串联连接在源极选择晶体管sst和漏极选择晶体管dst之间。不同串中包括的源极选择晶体管sst的栅极可以共同地连接到源极选择线ssl,不同串中包括的漏极选择晶体管dst的栅极可以共同地连接到漏极选择线dsl,并且存储器单元f1至f16的栅极可以连接到多个字线wl1至wl16。不同串中包括的存储器单元之中的、连接到相同字线的一组存储器单元可以被称为物理页面ppg。因此,存储块blka可以至少包括与字线wl1至wl16的数量相对应的多个物理页面ppg。
92.一个存储器单元可以存储一位数据。通常将该存储器单元称为单层单元(slc)。在这种情况下,一个物理页面ppg可以存储一个逻辑页面lpg的数据。一个逻辑页面lpg的数据可以包括与一个物理页面ppg中包括的存储器单元的数量相对应的数据位。另外,一个存储器单元可以存储两位或更多位的数据。在这种情况下,一个物理页面ppg可以存储两个或更多个逻辑页面lpg的数据。也就是说,物理页面ppg对应于两个或更多个逻辑页面lpg。
93.存储两位或更多位的数据的存储器单元被称为多层单元(mlc),但是最近,随着一个存储器单元中存储的数据的位数增加,多层单元(mlc)是指存储两位数据的存储器单元,存储三位数据的存储器单元被称为三层单元(tlc),并且存储四位数据的存储器单元被称为四层单元(qlc)。另外,已经开发了存储多位数据的存储器单元,并且本实施例可以应用于每个存储器单元中存储两位或更多位的数据的存储器装置100。
94.在另一实施例中,存储块可以具有三维结构。在三维结构中,每个存储块包括堆叠在衬底上的多个存储器单元。这样的多个存储器单元沿着 x方向、 y方向和 z方向布置。
95.图4是示出图1的存储器控制器200的配置的示图。
96.参照图4,存储器控制器200可以包括中央处理器210、dma控制器220、闪存转换层230、高速缓存存储器240和存储器缓冲器250。图4示出存储器控制器200用于执行与主机300的请求req相对应的操作的操作。
97.在实施例中,中央处理器210可以从主机300接收请求req以及与请求req相对应的逻辑块地址lba。从主机300接收的请求req可以是编程请求、读取请求和擦除请求中的任意一种。
98.在实施例中,中央处理器210可以将从主机300与请求req一起接收的逻辑块地址lba输出到闪存转换层230,以便将与逻辑块地址lba相对应的物理块地址pba输出到存储器装置100。也就是说,中央处理器210可以将与从主机300接收的请求req相对应的逻辑块地址lba输出到闪存转换层230,以便向存储器装置100输出指示待执行编程操作的页面的物理块地址pba、指示待执行读取操作的页面的物理块地址pba或指示待执行擦除操作的存储块的物理块地址pba。
99.另外,中央处理器210可以生成与从主机300接收的请求req相对应的命令,并且将生成的命令作为命令数据cmd_data输出。可以将命令数据cmd_data输出到存储器装置100,并且可以对存储器装置100执行与命令数据cmd_data相对应的操作。在实施例中,命令数据cmd_data可以包括指示存储器缓冲器250中存储命令数据cmd_data的地址的标志。
100.闪存转换层230可以在从中央处理器210接收的逻辑块地址lba与物理块地址pba之间形成映射关系。也就是说,闪存转换层230可以生成表示逻辑块地址lba和物理块地址
pba之间的映射关系的映射数据map_data,该映射数据map_data对应于请求req。生成的映射数据map_data可以被配置为构造逻辑块地址lba与物理块地址pba之间的映射关系的逻辑-物理地址映射表。
101.当配置了映射表时,闪存转换层230可以将物理块地址pba输出到存储器装置100。
102.在实施例中,闪存转换层230可以将生成的映射数据map_data输出到高速缓存存储器240。高速缓存存储器240可以存储从闪存转换层230接收的映射数据map_data,并且将存储的映射数据map_data输出到存储器缓冲器250。存储器缓冲器250可以存储从高速缓存存储器240输出的映射数据map_data。
103.高速缓存存储器240可以基于映射数据map_data或命令数据cmd_data的局部性来高速缓存映射数据map_data或命令数据cmd_data。
104.映射数据map_data的局部性可以意为与映射数据map_data相对应的数据再次被引用的可能性较高,并且该局部性可以是时间局部性和空间局部性中的任意一种。时间局部性指示对与先前引用的数据相对应的映射数据map_data的频繁访问,并且空间局部性是在空间上邻近于存储先前引用的数据的存储器区域的地址。另外,高速缓存在高速缓存存储器240中的映射数据map_data可以基于映射数据map_data的改变后的局部性而更新。
105.命令数据cmd_data的局部性可以意为与数据相对应的命令数据cmd_data再次被引用的可能性较高,并且命令数据cmd_data可以包括关于相应数据的物理块地址pba的信息。也就是说,在命令数据cmd_data的情况下,局部性可以是时间局部性和空间局部性中的任意一种。时间局部性指示对与先前引用的命令数据cmd_data相对应的数据的频繁访问,并且空间局部性是在空间上邻近于存储与先前引用的命令数据cmd_data相对应的数据的存储器区域的地址。另外,高速缓存在高速缓存存储器240中的命令数据cmd_data可以基于命令数据cmd_data的改变后的局部性而更新。
106.此后,可以响应于来自中央处理器210或dma控制器220的请求req,将高速缓存在高速缓存存储器240中的映射数据map_data或命令数据cmd_data输出到中央处理器210或dma控制器220。中央处理器210或dma控制器220可以基于从高速缓存存储器240接收的映射数据map_data或命令数据cmd_data将物理块地址pba输出到存储器装置100。
107.在实施例中,从主机300接收的请求req可以是用于在没有中央处理器210的控制的情况下从存储器装置100接收数据的请求。在这种情况下,中央处理器210可以响应于主机300的请求req而将dma请求dma_req输出到dma控制器220。dma控制器220可以基于从中央处理器210接收的dma请求dma_req与存储器装置100通信,而无需中央处理器210的控制。
108.例如,当传输或接收数据时,dma控制器220可以最初从中央处理器210接收dma请求dma_req以指示传输或接收数据,然后可以与存储器装置100交换数据而无需中央处理器210的指令。
109.因此,dma控制器220可以读取高速缓存存储器240或存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data,并且可以基于映射数据map_data或命令数据cmd_data来控制存储器装置100执行操作。例如,dma控制器220可以读取高速缓存存储器240或存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data,以输出与用于向存储器装置100传输数据或从存储器装置100接收数据的操作相对应的物理块地址pba。
110.在实施例中,闪存转换层230可以每隔预定时段将映射数据map_data存储在存储
器装置100中,以为突然断电(spo)等做准备。此时,因为闪存转换层230读取存储器缓冲器250中存储的所有映射数据map_data并将所有映射数据map_data存储在存储器装置100中,所以可以将高速缓存存储器240中存储的映射数据map_data清除到存储器装置100。
111.可选地,高速缓存存储器240可以读取存储器缓冲器250中存储的所有命令数据cmd_data,并且每隔预定时段或者为了防止高速缓存命中率降低而将所有命令数据cmd_data清除到存储器装置100。
112.此时,因为高速缓存存储器240中存储的所有映射数据map_data或命令数据cmd_data被清除到存储器装置100,所以高速缓存存储器240中存储的映射数据map_data或命令数据cmd_data的高速缓存命中率可能降低。也就是说,因为所有映射数据map_data或命令数据cmd_data被清除到存储器装置100,所以高速缓存的映射数据map_data或命令数据cmd_data的高速缓存命中率可能降低。
113.此时,当高速缓存存储器240中存在与请求req相对应的映射数据map_data或命令数据cmd_data时,可能发生高速缓存命中。当高速缓存存储器240中不存在与请求req相对应的映射数据map_data或命令数据cmd_data时,可能发生高速缓存未命中。当发生高速缓存未命中时,可以通过高速缓存存储器240将图4的存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data提供到中央处理器210或dma控制器220。
114.为了增加高速缓存命中率,存储器控制器200可以向高速缓存存储器240分配高速缓存行。高速缓存存储器240可以从中央处理器210或dma控制器220接收映射数据map_data或命令数据cmd_data,并且主动地分配高速缓存行以高速缓存映射数据map_data或命令数据cmd_data。
115.具体地,除了高速缓存命中的映射数据map_data或高速缓存命中的命令数据cmd_data之外,高速缓存未命中的映射数据map_data或高速缓存未命中的命令数据cmd_data可以从存储器缓冲器250传输到高速缓存存储器240。高速缓存存储器240中不存在高速缓存未命中的数据,而高速缓存存储器240中已经存储了高速缓存命中的数据。当发生高速缓存未命中时,可以参考高速缓存未命中的映射数据map_data或高速缓存未命中的命令数据cmd_data的局部性将该映射数据map_data或该命令数据cmd_data传输到高速缓存存储器240。
116.在本公开中,为了增加高速缓存存储器240中存储的映射数据map_data或命令数据cmd_data的高速缓存命中率,提出了一种分配用于向高速缓存存储器240传输映射数据map_data的高速缓存行的方法。
117.图5至图8是示出在存储器控制器200与存储器装置100之间传输映射数据map_data或命令数据cmd_data的示图。
118.参照图5至图8,存储器控制器200可以包括中央处理器210、高速缓存存储器240和存储器缓冲器250。在图5至图8中,未示出图4的dma控制器220和图4的闪存转换层230。
119.在实施例中,存储器缓冲器250可以存储从存储器装置100接收的映射数据map_data或命令数据cmd_data,并且高速缓存存储器240可以高速缓存存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data。
120.具体地,参照图5,当启动包括存储器控制器200和存储器装置100的存储器系统时,存储器装置100可以读取存储器装置100的系统区域中存储的映射数据map_data或命令
数据cmd_data,并且将读取的映射数据map_data或命令数据cmd_data传输到存储器控制器200。存储器控制器200可以从存储器装置100接收映射数据map_data或命令数据cmd_data,并且将接收的映射数据map_data或命令数据cmd_data存储在高速缓存存储器240中(

)。
121.在实施例中,高速缓存存储器240可以包括存储器ecc引擎(未示出)。具体地,可以通过高速缓存存储器240的存储器ecc引擎,通过执行ecc编码向映射数据map_data或命令数据cmd_data添加奇偶校验,并且可以将添加奇偶校验的映射数据map_data或命令数据cmd_data从高速缓存存储器240传输到存储器缓冲器250(

)。
122.在实施例中,高速缓存存储器240可以是静态随机存取存储器(sram)模块。
123.在实施例中,存储器缓冲器250可以存储从高速缓存存储器240接收的映射数据map_data或命令数据cmd_data。在此,存储器缓冲器250可以是动态随机存取存储器(dram)模块。
124.在实施例中,可以将存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data传输到高速缓存存储器240。此时,高速缓存存储器240可以高速缓存从存储器缓冲器250接收的映射数据map_data或命令数据cmd_data。高速缓存存储器240可以使用存储器ecc引擎对从存储器缓冲器250接收的映射数据map_data或命令数据cmd_data进行解码,并且在高速缓存存储器240中高速缓存经解码的映射数据map_data或经解码的命令数据cmd_data(

)。
125.参照图6,当存储器系统从图4的主机300接收读取请求时,存储器控制器200可以查询目标数据(其为用于执行读取请求的映射数据map_data或命令数据cmd_data)是否被高速缓存在高速缓存存储器240中(

)。
126.具体地,当目标数据被高速缓存在高速缓存存储器240中时,中央处理器210可以接收高速缓存在高速缓存存储器240中的目标数据,并且引用接收的目标数据来执行所请求的读取操作(

)。例如,可以读取与高速缓存的映射数据map_data相对应的物理块地址pba指示的存储器区域中存储的数据,或者可以将与高速缓存的命令数据cmd_data相对应的读取命令输出到存储器装置100并且可以执行与读取命令相对应的读取操作。
127.在此,当输出高速缓存在高速缓存存储器240中的目标数据时,高速缓存在高速缓存存储器240中的映射数据map_data或命令数据cmd_data可以被命中(高速缓存命中)。然而,当目标数据没有被高速缓存在高速缓存存储器240中时,映射数据map_data或命令数据cmd_data可能未被命中(高速缓存未命中)。
128.参照图7,当存储器系统从图4的主机300接收读取请求时,存储器控制器200可以查询目标数据(其为用于执行读取请求的映射数据map_data或命令数据cmd_data)是否被高速缓存在高速缓存存储器240中(

)。
129.在实施例中,当目标数据被高速缓存在高速缓存存储器240中时,中央处理器210可以从高速缓存存储器240接收目标数据(

)。另一方面,当目标数据未被高速缓存在高速缓存存储器240中时,中央处理器210可以查询存储器缓冲器250(

),并且可以将存储器缓冲器250中存储的目标数据传输到高速缓存存储器240(

)。中央处理器210可以基于从高速缓存存储器240或存储器缓冲器250接收的目标数据来执行所请求的读取操作(

)。
130.在实施例中,当从存储器缓冲器250接收的目标数据具有局部性时,高速缓存存储器240可以在高速缓存存储器240中高速缓存目标数据。此时,高速缓存存储器240可以将高
速缓存存储器240中高速缓存的目标数据传输到中央处理器210。
131.在此,映射数据map_data的局部性可以意为与映射数据map_data相对应的数据再次被引用的可能性较高,并且该局部性可以是时间局部性和空间局部性中的任意一种。时间局部性指示对与先前引用的数据相对应的映射数据map_data的频繁访问,并且空间局部性是在空间上邻近于存储先前引用的数据的存储器区域的地址。
132.在实施例中,当从存储器缓冲器250接收的目标数据不具有局部性时,高速缓存存储器240可以不在高速缓存存储器240中高速缓存目标数据。此时,高速缓存存储器240或存储器缓冲器250可以将目标数据传输到中央处理器210。
133.在实施例中,当从存储器缓冲器250接收的命令数据cmd_data具有局部性时,高速缓存存储器240可以在高速缓存存储器240中高速缓存命令数据cmd_data。此时,高速缓存存储器240可以将高速缓存存储器240中高速缓存的命令数据cmd_data传输到中央处理器210。在此,命令数据cmd_data的局部性可以意为与数据相对应的命令数据cmd_data再次被引用的可能性较高,并且与数据相对应的命令数据cmd_data可以包括关于该数据的物理块地址pba的信息。
134.也就是说,在命令数据cmd_data的情况下,局部性可以是时间局部性和空间局部性中的任意一种。时间局部性指示对与先前引用的命令数据cmd_data相对应的数据的频繁访问,并且空间局部性是在空间上邻近于存储与先前引用的命令数据cmd_data相对应的数据的存储器区域的地址。
135.在实施例中,当从存储器缓冲器250接收的命令数据cmd_data不具有局部性时,高速缓存存储器240可以不在高速缓存存储器240中高速缓存命令数据cmd_data。此时,高速缓存存储器240或存储器缓冲器250可以将命令数据cmd_data传输到中央处理器210。
136.在实施例中,高速缓存存储器240可以对从存储器缓冲器250接收的目标数据进行解码,并且将经解码的目标数据传输到中央处理器210。
137.当使用dma方法执行操作时,高速缓存存储器240可以将经解码的目标数据传输到dma控制器220。
138.参照图8,当执行图4的主机300请求的编程操作的次数等于或大于预设次数时,或者当执行图4的主机300请求的读取操作的次数等于或大于预设次数时,可以将存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data传输到存储器装置100。存储器装置100可以将从存储器控制器200接收的映射数据map_data或命令数据cmd_data存储在存储器装置100的系统区域中。
139.在实施例中,可以将存储器缓冲器250中存储的映射数据map_data或命令数据cmd_data传输到高速缓存存储器240(

),并且高速缓存存储器240可以将从存储器缓冲器250接收的映射数据map_data或命令数据cmd_data传输到存储器装置100(

)。此时,高速缓存存储器240可以对从存储器缓冲器250接收的映射数据map_data或命令数据cmd_data进行解码,并且将经解码的映射数据map_data或经解码的命令数据cmd_data传输到存储器装置100。
140.参照图5至图8,可以根据映射数据map_data或命令数据cmd_data的局部性将映射数据map_data或命令数据cmd_data高速缓存在高速缓存存储器240中。此外,根据对存储器装置100执行的操作,高速缓存在高速缓存存储器240中的映射数据map_data或命令数据
cmd_data可以被高速缓存命中或高速缓存未命中。也就是说,根据对存储器装置100执行的操作,可以输出或可以不输出高速缓存在高速缓存存储器240中的映射数据map_data或命令数据cmd_data。因此,高速缓存在高速缓存存储器240中的映射数据map_data或命令数据cmd_data可能未被均匀地引用。
141.因此,本公开提出了一种基于与访问对应于请求req的映射数据map_data或命令数据cmd_data的主题以及映射数据map_data或命令数据cmd_data的大小相关的访问信息而主动地分配高速缓存存储器240的高速缓存行的方法。也就是说,本公开提出了一种将映射数据map_data或命令数据cmd_data高速缓存在高速缓存存储器240中的方法。
142.图9是示出根据实施例的在图1的存储器控制器200中包括的组件之间传输命令数据的示图。
143.参照图9,存储器控制器200可以包括中央处理器210、dma控制器220、高速缓存存储器240和存储器缓冲器250。图9示出存储器控制器200传输和接收命令数据cmd_data以执行与主机300的请求req相对应的操作的操作。
144.在图9中,未示出图4的闪存转换层230。
145.在实施例中,中央处理器210可以从主机300接收请求req。从主机300接收的请求req可以是编程请求、读取请求和擦除请求中的任意一种。
146.中央处理器210可以生成与从主机300接收的请求req相对应的命令,并且将生成的命令作为命令数据cmd_data输出。可以将命令数据cmd_data输出到图1的存储器装置100,并且可以对图1的存储器装置100执行与命令相对应的操作。此时,中央处理器210可以以4字节(byte)为单位输出命令数据cmd_data。
147.在实施例中,中央处理器210可以将命令数据cmd_data输出到高速缓存存储器240。可以将命令数据cmd_data输出到存储器装置100,并且可以对存储器装置100执行与命令数据cmd_data相对应的操作。
148.在实施例中,从主机300接收的请求req可以是用于在没有中央处理器210的控制的情况下从图1的存储器装置100接收数据的请求。在这种情况下,中央处理器210可以响应于主机300的请求req而将命令数据cmd_data输出到dma控制器220。
149.dma控制器220可以基于从中央处理器210接收的命令数据cmd_data,在没有中央处理器210的控制的情况下与图1的存储器装置100通信。此时,因为dma控制器220在没有中央处理器210的控制的情况下输出命令数据cmd_data,所以dma控制器220可以将与各种大小相对应的命令数据cmd_data输出到高速缓存存储器240。因此,从dma控制器220输出到高速缓存存储器240的命令数据cmd_data需要根据高速缓存行进行分配。
150.在实施例中,dma控制器220可以读取高速缓存存储器240或存储器缓冲器250中存储的命令数据cmd_data,并且控制图1的存储器装置100执行与命令数据cmd_data相对应的操作。例如,dma控制器220可以读取高速缓存存储器240或存储器缓冲器250中存储的命令数据cmd_data并且将命令数据cmd_data输出到图1的存储器装置100,并且可以对图1的存储器装置100执行与命令数据cmd_data相对应的操作。
151.在实施例中,高速缓存存储器240可以根据输出命令数据cmd_data的主题执行主动分配高速缓存行以分配命令数据cmd_data的操作。此时,可以以8字节为单位分配参考高速缓存行的大小。
152.例如,因为当从中央处理器210输出命令数据cmd_data时以4字节为单位输出命令数据cmd_data,所以高速缓存存储器240可以不单独地分配高速缓存行以存储来自中央处理器210的命令数据cmd_data。也就是说,因为从中央处理器210输出的命令数据cmd_data不超过8字节(其为参考高速缓存行的大小),所以高速缓存存储器240可以不为命令数据cmd_data单独地分配高速缓存行。
153.然而,因为当从dma控制器220输出命令数据cmd_data时以各种大小输出命令数据cmd_data,所以高速缓存存储器240可以主动地分配高速缓存行以存储以各种大小输出的命令数据cmd_data。也就是说,因为从dma控制器220输出的命令数据cmd_data可以超过8字节或小于8字节,所以高速缓存存储器240可以主动地分配高速缓存行以存储命令数据cmd_data。
154.图10是示出将命令数据清除到图1的存储器装置100的单位的示图。
155.参照图10,按单位清除图9的高速缓存存储器240中存储的命令数据cmd_data。
156.在实施例中,第一至第四命令数据cmd_data1至cmd_data4可以被存储在图9的高速缓存存储器240中。第一至第四命令数据cmd_data1至cmd_data4中的每一个可以是与图9的主机300的请求req相对应的命令数据。
157.高速缓存存储器240可以每隔预定时段将存储的命令数据cmd_data1至cmd_data4清除到存储器装置100,以为突然断电(spo)等做准备或为了防止高速缓存命中率降低。此时,可以以128字节为单位清除命令数据cmd_data1至cmd_data4。例如,因为第一至第四命令数据cmd_data1至cmd_data4中的每一个的大小是32字节,所以可以一次清除第一至第四命令数据cmd_data1至cmd_data4。
158.然而,当将高速缓存存储器240中存储的第一至第四命令数据cmd_data1至cmd_data4清除到存储器装置100时,高速缓存命中率可能降低。因此,可以防止高速缓存存储器240中存储的命令数据被频繁地清除。
159.在下文中,提出了一种用于防止高速缓存存储器240中存储的命令数据被频繁地清除的高速缓存行分配方法。
160.图11是示出分配给一个高速缓存行的命令数据的示图。
161.图11示出图10的第一命令数据cmd_data1以及分配高速缓存行以存储第一命令数据cmd_data1的方法。此时,假设从图9的dma控制器220接收第一命令数据cmd_data1。也就是说,因为以4字节为单位从图9的中央处理器210接收命令数据,所以从中央处理器210接收的命令数据不超过8字节(其为一个高速缓存行即参考高速缓存行的大小),因此没有必要分配具有不同大小的高速缓存行。因此,在图11中,假设从图9的dma控制器220接收命令数据cmd_data1。
162.在实施例中,第一命令数据cmd_data1可以由标志和划分的命令数据配置。此时,标志可以包括指示图9的存储器缓冲器250中存储第一命令数据cmd_data1的地址的地址位,并且可以包括关于指定存储器缓冲器250中存储第一命令数据cmd_data1的存储区域的起始地址和结束地址的信息。另外,图9的高速缓存存储器240可以基于标志中包括的起始地址和结束地址来确定存储器缓冲器250中存储的第一命令数据cmd_data1的大小。
163.例如,第一命令数据cmd_data1可以包括第一标志flag1以及第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4。第一标志flag1可以包括关于指定存储器缓冲
器250中存储第一命令数据cmd_data1的存储区域的起始地址和结束地址的信息。另外,可以通过划分第一命令数据cmd_data1来获得第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4,并且第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4中的每一个的大小可以是8字节。
164.因此,在图11中,因为第一命令数据cmd_data1的大小是32字节,并且第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4中的每一个的大小是8字节,所以不需要分配单独的高速缓存行以将第一命令数据cmd_data1存储在高速缓存存储器240中的操作。也就是说,可以基于大小是8字节的高速缓存行,将第一命令数据cmd_data1的第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4直接存储在高速缓存存储器240中。
165.在实施例中,命令数据可以由图9的中央处理器210以4字节为单位或8字节为单位进行访问。因此,在图11中,当第一命令数据cmd_data1由图9的中央处理器210以4字节为单位进行访问时,通过对第(1_1)至第(1_4)划分的命令数据cmd_data1_1至cmd_data1_4进行细分而获得的命令数据可以由图9的中央处理器210进行访问。
166.图12是示出当高速缓存行未均匀分配时分配高速缓存行的方法的示图。
167.特别地,图12示出分配高速缓存行以存储图10的第二命令数据cmd_data2的方法。此时,假设从图9的dma控制器220接收第二命令数据cmd_data2。也就是说,因为以4字节为单位从图9的中央处理器210接收命令数据,所以命令数据不超过8字节(其为参考高速缓存行的大小),因此没有必要分配高速缓存行。因此,在图12中,假设从图9的dma控制器220接收第二命令数据cmd_data2。
168.在实施例中,第二命令数据cmd_data2可以包括第二标志flag2以及第(2_1)至第(2_4)划分的命令数据cmd_data2_1至cmd_data2_4。第二标志flag2可以包括关于指定图9的存储器缓冲器250中存储第二命令数据cmd_data2的存储区域的起始地址和结束地址的信息。另外,可以通过划分第二命令数据cmd_data2来获得第(2_1)至第(2_4)划分的命令数据cmd_data2_1至cmd_data2_4。
169.然而,作为基于关于第二标志flag2中包括的起始地址和结束地址的信息来确定第二命令数据cmd_data2的大小的结果,第二命令数据cmd_data2的大小可以不是32字节。也就是说,可以基于第二标志flag2中包括的起始地址和结束地址来确定第二命令数据cmd_data2的大小,因此,第二命令数据cmd_data2的大小可以是24字节而不是32字节。
170.在这种情况下,图9的高速缓存存储器240可以确定第二标志flag2中包括的起始地址是否是多个参考地址中的任意一个。此时,与两个连续参考地址之间的间隔相对应的划分的命令数据的大小可以是8字节。
171.图12示出当起始地址不是多个参考地址中的任意一个时分配高速缓存行的方法。如果起始地址是多个参考地址中的一个,则高速缓存存储器240可以以8字节为单位从第一参考地址ref_addr1起划分第二命令数据cmd_data2。也就是说,高速缓存存储器240可以通过从第(2_1)划分的命令数据cmd_data2_1起以8字节为单位划分第二命令数据cmd_data2来生成划分的命令数据,并且将划分的命令数据分配给每个大小是8字节的高速缓存行。
172.然而,如图12所示,因为第二命令数据cmd_data2的起始地址和结束地址不是包括第一至第五参考地址ref_addr1至ref_addr5的多个参考地址中的任意一个,所以高速缓存存储器240可以通过划分第二命令数据cmd_data2来生成与起始地址和第二参考地址ref_
addr2之间的数据相对应的划分的命令数据,该划分的命令数据从起始地址之后的参考地址(即,第一至第五参考地址ref_addr1至ref_addr5之中的第二参考地址ref_addr2)开始。
173.此后,高速缓存存储器240可以以与参考高速缓存行的大小相对应的8字节为单位划分第二命令数据cmd_data2。也就是说,高速缓存存储器240可以以与从起始地址至第二参考地址ref_addr2的大小相对应的6字节为单位分配第(2_1)划分的命令数据cmd_data2_1,然后以8字节(其为参考高速缓存行的大小)为单位从第(2_2)划分的命令数据cmd_data2_2起划分第二命令数据cmd_data2。
174.具体地,高速缓存存储器240可以将第二命令数据cmd_data2划分为与第二参考地址ref_addr2和第三参考地址ref_addr3之间的数据相对应的第(2_2)划分的命令数据cmd_data2_2、与第三参考地址ref_addr3和第四参考地址ref_addr4之间的数据相对应的第(2_3)划分的命令数据cmd_data2_3以及与第四参考地址ref_addr4和结束地址之间的数据相对应的第(2_4)划分的命令数据cmd_data2_4。也就是说,因为结束地址不是第一至第五参考地址ref_addr1至ref_addr5中的任意一个,所以对应于第四参考地址ref_addr4和结束地址之间的数据分配第(2_4)划分的命令数据cmd_data2_4。
175.因此,因为第二命令数据cmd_data2的大小是24字节,所以第(2_1)划分的命令数据cmd_data2_1可以被分配为具有6字节,第(2_1)划分的命令数据cmd_data2_1和第(2_2)划分的命令数据cmd_data2_2中的每一个可以被分配为具有8字节,并且第(2_4)划分的命令数据cmd_data2_4可以被分配为具有2字节。因此,可以使用不同分配的高速缓存行将划分为四个的第二命令数据cmd_data2存储在高速缓存存储器240中。
176.此外,因为第(2_4)划分的命令数据cmd_data2_4是位于第二命令数据cmd_data2的最后部分的命令并且第(2_4)划分的命令数据cmd_data2_4的大小小于8字节,所以新的命令数据很可能被输入到第(2_4)划分的命令数据cmd_data2_4之后。也就是说,第(2_4)划分的命令数据cmd_data2_4可以具有空间局部性。因此,即使第(2_4)划分的命令数据cmd_data2_4不具有8字节,第(2_4)划分的命令数据cmd_data2_4也可以被高速缓存在高速缓存存储器240中。
177.图13是示出当高速缓存行未均匀分配时分配高速缓存行的另一方法的示图。
178.图13示出划分图12的第二命令数据cmd_data2并将划分的第二命令数据cmd_data2分配给高速缓存行的方法。在下文中将省略对与图12重复的内容的描述。
179.在实施例中,第二命令数据cmd_data2可以包括第二标志flag2以及第(2_1)至第(2_4)划分的命令数据cmd_data2_1至cmd_data2_4。另外,第二命令数据cmd_data2的大小可以是24字节,并且第二命令数据cmd_data2的起始地址和结束地址可以不是第一至第五参考地址ref_addr1至ref_addr5中的任意一个。此时,与第一至第五参考地址ref_addr1至ref_addr5之中的两个连续参考地址之间的间隔相对应的命令数据的大小可以是8字节。
180.因此,图9的高速缓存存储器240可以将具有6字节的第(2_1)划分的命令数据cmd_data2_1分配给与第二命令数据cmd_data2的起始地址和第一至第五参考地址ref_addr1至ref_addr5之中的第二参考地址ref_addr2之间的间隔相对应的高速缓存行,该第二参考地址ref_addr2在起始地址之后,然后以与参考高速缓存行的大小相对应的8字节为单位,将第二命令数据cmd_data2从第(2_2)划分的命令数据cmd_data2_2起进行划分。
181.然而,在从第二参考地址ref_addr2之后的参考地址开始的划分的命令数据之中,
除了位于最后部分的划分的命令数据之外的命令数据可以不被划分为具有8字节。例如,与第二参考地址ref_addr2至第四参考地址ref_addr4之间的间隔相对应的命令数据可以不以8字节为单位进行划分。
182.因此,第(2_23)划分的命令数据cmd_data2_23(其为与第二参考地址ref_addr2和第四参考地址ref_addr4之间的间隔相对应的命令数据)可以不进行细分,并且可以以16字节的大小输出到高速缓存存储器240。
183.因此,因为第二命令数据cmd_data2的大小是24字节,所以第(2_1)划分的命令数据cmd_data2_1可以被分配为具有6字节,第(2_23)划分的命令数据cmd_data2_23可以被分配为具有16字节,并且第(2_4)划分的命令数据cmd_data2_4可以被分配为具有2字节。因此,第二命令数据cmd_data2可以被划分为三个划分的命令,但是仅第(2_1)划分的命令数据cmd_data2_1和第(2_4)划分的命令数据cmd_data2_4可以使用不同分配的高速缓存行而被高速缓存在高速缓存存储器240中。
184.在实施例中,因为与第四参考地址ref_addr4和结束地址之间的间隔相对应的第(2_4)划分的命令数据cmd_data2_4是位于第二命令数据cmd_data2的最后部分的划分的命令数据,所以新命令数据很可能被输入到第(2_4)划分的命令数据cmd_data2_4之后。因为结束地址不是第一至第五参考地址ref_addr1至ref_addr5中的任意一个,所以对应于第四参考地址ref_addr4和结束地址之间的数据分配第(2_4)划分的命令数据cmd_data2_4。也就是说,第(2_4)划分的命令数据cmd_data2_4可以具有空间局部性,即空间邻近性。因此,即使第(2_4)划分的命令数据cmd_data2_4不具有8字节,第(2_4)划分的命令数据cmd_data2_4也可以被高速缓存在高速缓存存储器240中。
185.图14是示出根据本公开的实施例的图1的存储器控制器200的操作的示图。将参照图1描述图14的操作。
186.参照图14,在步骤s1401中,可以输出命令数据。在此,命令数据可以是用于与从主机300接收的请求相对应的命令的数据,并且可以从存储器控制器200中的中央处理器210或dma控制器220输出。
187.在步骤s1403中,存储器控制器200可以确定输出命令数据的位置和存储命令数据的位置。存储命令数据的位置可以表示存储器控制器200中包括的存储器缓冲器250中的存储区域的位置。
188.例如,存储器控制器200可以确定命令数据是从存储器控制器200中的中央处理器210还是dma控制器220输出的。另外,存储器控制器200可以通过检查命令数据中包括的标志来确定存储区域中存储命令数据的位置的起点和终点。此时,标志可以包括关于存储器缓冲器250中存储命令数据的存储区域的位置的信息。
189.在步骤s1405中,可以基于输出命令数据的位置和命令数据中包括的标志来分配用于高速缓存命令数据的高速缓存行。
190.例如,因为当从中央处理器210输出命令数据时命令数据的大小是4字节,所以命令数据不超过8字节(其为参考高速缓存行的大小),因此没有必要为命令数据分配单独的高速缓存行。
191.然而,因为当从dma控制器220输出命令数据时命令数据的大小发生变化,所以可以基于命令数据中包括的标志来不同地分配高速缓存行。此时,存储器控制器200可以根据
命令数据的起始地址是否是存储器缓冲器250中存储命令数据的参考地址中的一个来分配高速缓存行。
192.在步骤s1407中,当分配用于高速缓存命令数据的高速缓存行时,可以通过所分配的高速缓存行将命令数据高速缓存在高速缓存存储器240中。当在高速缓存存储器240中得到命令数据的存储空间时,可以将所有接收的命令数据存储在高速缓存存储器240中。然而,当在高速缓存存储器240中没有得到映射数据的存储空间时,可以通过将高速缓存存储器240中存储的命令数据之中的、具有相对较低局部性的命令数据替换为具有相对较高局部性的命令数据来将通过高速缓存行接收的命令数据存储在高速缓存存储器240中。
193.图15是示出根据本公开的另一实施例的与图1的存储器控制器200相对应的存储器控制器1000的示图。
194.存储器控制器1000连接到图1的主机300和图1的存储器装置100。存储器控制器1000被配置为响应于来自主机300的请求而访问存储器装置100。例如,存储器控制器1000被配置为控制存储器装置100的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000被配置为在存储器装置100与主机300之间提供接口。存储器控制器1000被配置为驱动用于控制存储器装置100的固件。
195.参照图15,存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正电路(ecc)1030、主机接口1040、缓冲器控制器(或缓冲器控制电路)1050、存储器接口1060和总线1070。
196.总线1070可以被配置为在存储器控制器1000的组件之间提供通道。
197.处理器1010可以控制存储器控制器1000的全部操作并且可以执行逻辑运算。处理器1010可以通过主机接口1040与主机300通信,并且通过存储器接口1060与存储器装置100通信。另外,处理器1010可以通过缓冲器控制器1050与存储器缓冲器1020通信。处理器1010可以使用存储器缓冲器1020作为操作存储器、高速缓存存储器或缓冲存储器来控制图1的存储装置50的操作。
198.处理器1010可以执行闪存转换层(ftl)的功能。处理器1010可以通过ftl将主机300提供的lba转换为pba。ftl可以接收lba,并且通过使用映射表将lba转换为pba。根据映射单位,闪存转换层的地址映射方法包括多种映射方法。代表性的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
199.处理器1010被配置为使从主机300接收的数据随机化。例如,处理器1010可以使用随机化种子来使从主机300接收的数据随机化。经随机化的数据作为待存储的数据被提供到存储器装置100,并且被编程到存储器装置100的存储器单元阵列。
200.处理器1010可以通过驱动软件或固件来执行随机化和去随机化。
201.存储器缓冲器1020可以用作处理器1010的操作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储处理器1010运行的代码和命令。存储器缓冲器1020可以存储处理器1010处理的数据。存储器缓冲器1020可以包括静态ram(sram)或动态ram(dram)。
202.错误校正电路1030可以执行错误校正。错误校正电路1030可以对待通过存储器接口1060写入存储器装置100的数据执行错误校正编码(ecc编码)。可以通过存储器接口1060将错误校正编码后的数据传送到存储器装置100。错误校正电路1030可以对通过存储器接
口1060从存储器装置100接收的数据执行错误校正解码(ecc解码)。在另一实施例中,错误校正电路1030可以作为存储器接口1060的组件被包括在存储器接口1060中。
203.主机接口1040被配置为在处理器1010的控制下与主机300通信。主机接口1040可以被配置为使用诸如以下的各种通信方法中的至少一种来执行通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围组件互连(高速pci)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和减小负载的dimm(lrdimm)。
204.缓冲器控制器1050被配置为在处理器1010的控制下控制存储器缓冲器1020。
205.存储器接口1060被配置为在处理器1010的控制下与存储器装置100通信。存储器接口1060可以通过通道与存储器装置100进行命令、地址和数据的通信。
206.在另一实施例中,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制器1050在其中。
207.在实施例中,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从设置在存储器控制器1000内部的非易失性存储器装置(例如,只读存储器)中加载代码。在另一实施例中,处理器1010可以通过存储器接口1060从存储器装置100中加载代码。
208.存储器控制器1000的总线1070可以被划分为控制总线和数据总线。数据总线可以被配置为在存储器控制器1000内传输数据,并且控制总线可以被配置为在存储器控制器1000内传输诸如命令和地址的控制信息。数据总线和控制总线可以彼此分开,并且可以互不干扰或互不影响。数据总线可以连接到主机接口1040、缓冲器控制器1050、错误校正电路1030和存储器接口1060。控制总线可以连接到主机接口1040、处理器1010、缓冲器控制器1050、存储器缓冲器1020和存储器接口1060。
209.图16是示出应用根据本公开的实施例的存储装置的存储卡系统2000的框图。
210.参照图16,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
211.存储器控制器2100连接到存储器装置2200。存储器控制器2100被配置为访问存储器装置2200。例如,存储器控制器2100被配置为控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100被配置为在存储器装置2200与主机之间提供接口。存储器控制器2100被配置为驱动用于控制存储器装置2200的固件。存储器装置2200可以对应于参照图2描述的图1的存储器装置100。
212.存储器控制器2100可以包括诸如随机存取存储器(ram)、处理器、主机接口、存储器接口和错误校正电路的组件。
213.存储器控制器2100可以通过连接器2300与外部装置(例如,主机)通信。存储器控制器2100可以根据特定的通信标准与外部装置通信。作为示例,存储器控制器2100被配置为通过使用诸如以下的各种通信标准中的至少一种与外部装置通信:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(mcm)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata、并行ata、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙和nvme。作为示例,连接器2300可以由
sdram、ddr3sdram、lpddr sdarm、lpddr2 sdram、lpddr3 sdram等的易失性随机存取存储器,或者诸如pram、reram、mram、fram等的非易失性随机存取存储器。例如,应用处理器4100和存储器模块4200可以基于堆叠封装(pop)进行封装并设置为一个半导体封装。
226.网络模块4300可以与外部装置通信。例如,网络模块4300可以支持无线通信,诸如码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进(lte)、wimax、wlan、uwb、蓝牙、wi-fi等。例如,网络模块4300可以包括在应用处理器4100中。
227.存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将存储模块4400中存储的数据传输到应用处理器4100。例如,存储模块4400可以被实施为非易失性半导体存储器元件,诸如相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪存、nor闪存、三维nand闪存等。例如,存储模块4400可以被设置为可移动存储装置(可移动驱动器),诸如存储卡、用户系统4000的外部驱动器等。
228.例如,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以像参照图2和图3描述的存储器装置100一样进行操作。因此,存储模块4400可以像参照图1描述的存储装置50一样进行操作。
229.用户接口4500可以包括用于向应用处理器4100输入数据或指令或者用于向外部装置输出数据的接口。例如,用户接口4500可以包括诸如以下的用户输入接口中的一个或多个:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器、压电元件等。用户接口4500可以包括诸如以下的用户输出接口中的一个或多个:液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器、监视器等。
230.尽管已经出于说明的目的描述了各个实施例,但对于本领域技术人员将显而易见的是,在不脱离所附权利要求书所定义的本公开的精神和范围的情况下,可以进行各种改变和修改。
再多了解一些

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

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

相关文献