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

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

2021-11-27 00:37:00 来源:中国专利 TAG:

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


背景技术:

4.存储装置是在诸如计算机或智能电话的主机装置的控制下来存储数据的装置。存储装置可以包括存储数据的存储器装置以及控制该存储器装置的存储器控制器。存储器装置可以分类为易失性存储器装置和非易失性存储器装置。
5.易失性存储器装置可以是仅在向其供应电力时存储数据,而在电力供应中断时丢失所存储的数据的装置。易失性存储器装置可以包括静态随机存取存储器(sram)、动态随机存取存储器(dram)等。
6.非易失性存储器装置是即使电力供应中断也不丢失所存储的数据的装置。非易失性存储器装置可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪速存储器等。


技术实现要素:

7.本公开的实施例提供一种具有提高的操作速度的存储器控制器及其操作方法。
8.根据本公开的实施例的存储器控制器可以包括:主存储器;处理器,被配置成生成用于访问主存储器中存储的数据的命令;调度器,被配置成存储命令并且根据预设标准输出命令;高速缓存存储器,被配置成高速缓存和存储主存储器中存储的数据之中的、由处理器访问的数据;以及危险过滤器,被配置成存储关于主存储的、与命令之中的写入命令相对应的地址的信息,在接收写入命令时,将针对写入命令的预完成响应提供到调度器,并且将写入命令提供到主存储器。
9.根据本公开的实施例的存储器控制器可以包括:主存储器,包括与多个主存储器地址相对应的区域中存储的主数据;高速缓存存储器,被配置成将主数据的一部分高速缓存和存储在与多个主存储器地址相对应的高速缓存行中;处理器,被配置成生成用于访问该主数据的命令;调度器,被配置成根据生成命令的顺序来将命令提供到高速缓存存储器;以及危险过滤器,被配置成响应于命令之中的写入命令,将预写入完成响应提供到调度器,并且将该写入命令提供到主存储器以执行与该写入命令相对应的操作。
附图说明
10.图1是用于描述根据本公开的实施例的存储装置的示图。
11.图2是用于描述图1的存储器装置的示图。
12.图3是用于描述图2的存储块中的任意一个的配置的示图。
13.图4是用于描述对参照图1描述的主存储器中存储的l2p映射数据的读取-修改-写入操作的示图。
14.图5是用于描述物理地址的有效页面表(vpt)的读取-修改-写入操作的示图。
15.图6是示出根据本公开的实施例的存储器控制器的结构的示图。
16.图7是示出参照图6描述的存储器控制器的操作的流程图。
17.图8是用于描述根据本公开的另一实施例的存储器控制器的结构的示图。
18.图9和图10是用于描述参照图8描述的存储器控制器的操作的流程图。
19.图11是示出图1的存储器控制器的实施例的示图。
20.图12是示出应用了根据本公开的实施例的存储装置的存储卡系统的框图。
21.图13是示出应用了根据本公开的实施例的存储装置的固态驱动器(ssd)系统的框图。
22.图14是示出应用了根据本公开的实施例的存储装置的用户系统的框图。
具体实施方式
23.示出根据本说明书或申请中公开的构思的实施例的具体结构或功能描述,仅用来描述根据本公开的构思的实施例。根据本公开的构思的实施例可以以各种形式实施,并且这些描述不限于本说明书或申请中描述的实施例。
24.图1是用于描述根据本公开的实施例的存储装置50的示图。
25.参照图1,存储装置50可以包括存储器装置100和控制该存储器装置100的操作的存储器控制器200。存储装置50可以是在诸如以下的主机500的控制下存储数据的装置:蜂窝电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、tv、平板pc、车载式信息娱乐系统等。
26.根据作为与主机500的通信方法的主机接口,存储装置50可以是各种类型的存储装置中的任意一种。例如,存储装置50可以包括以下中的一种:ssd,mmc、emmc、rs-mmc和微型mmc形式的多媒体卡,sd、迷你sd或微型sd形式的安全数字卡,通用串行总线(usb)存储装置,通用闪存(ufs)装置,个人计算机存储卡国际协会(pcmcia)卡型存储装置,外围组件互连(pci)卡型存储装置,高速pci(pci-e)卡型存储装置,紧凑型闪存(cf)卡,智能媒体卡,记忆棒等。
27.存储装置50可以被制造为各种类型的封装中的一种。例如,存储装置50可以被制造为以下中的一种:堆叠式封装(pop)、系统级封装(sip)、片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶圆级制造封装(wfp)、晶圆级堆叠封装(wsp)等。
28.存储器装置100可以存储数据。存储器装置100可以在存储器控制器200的控制下操作。存储器装置100可以包括存储器单元阵列(未示出),该存储器单元阵列包括存储数据的多个存储器单元。
29.存储器单元的每一个可以被配置成存储一位数据的单层单元(slc)、存储两位数据的多层单元(mlc)、存储三位数据的三层单元(tlc)或存储四位数据的四层单元(qlc)。
30.存储器单元阵列(未示出)可以包括多个存储块。一个存储块可以包括多个页面。在实施例中,页面可以是将数据存储在存储器装置100中或者读取存储器装置100中存储的
数据的单位。存储块可以是擦除数据的单位。
31.在实施例中,存储器装置100可以是:双倍数据速率同步动态随机存取存储器(ddr sdram)、低功率双倍数据速率第四代(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)、rambus动态随机存取存储器(rdram)、nand闪速存储器、垂直nand闪速存储器、nor闪速存储器装置、电阻式随机存取存储器(rram)、相变存储器(pram)、磁阻随机存取存储器(mram)、铁电随机存取存储器(fram)、自旋转移扭矩随机存取存储器(stt-ram)等。在本说明书中,为了便于描述,假设存储器装置100是nand闪速存储器。
32.存储器装置100被配置成从存储器控制器200接收命令cmd和地址addr,并且访问存储器单元阵列中由地址addr选择的区域。存储器装置100可以对由地址addr选择的区域执行由命令cmd指示的操作。例如,存储器装置100可以响应于命令cmd而执行写入操作(或编程操作)、读取操作和擦除操作。在编程操作期间,存储器装置100可以将数据编程到由地址addr选择的区域。在读取操作期间,存储器装置100可以从由地址addr选择的区域读取数据。在擦除操作期间,存储器装置100可以擦除由地址addr选择的区域中存储的数据。
33.存储器控制器200可以控制存储装置50的全部操作。
34.当向存储装置50供应电力时,存储器控制器200可以运行固件(fw)。当存储器装置100是闪速存储器装置时,固件(fw)可以包括主机接口层(hil)、闪存转换层(ftl)和闪存接口层(fil),该hil控制与主机500的通信,该ftl控制存储器控制器200与主机500之间的通信,并且该fil控制与存储器装置100的通信。
35.在实施例中,存储器控制器200可以从主机500接收数据和逻辑块地址(lba),并且将lba转换为物理块地址(pba),该pba指示存储器装置100中存储器单元的、待存储所接收的数据的地址。在本说明书中,lba和“逻辑地址”或“逻辑性地址”可以以具有相同的含义来使用。在本说明书中,pba和“物理性地址”可以以具有相同的含义来使用。
36.存储器控制器200可以根据主机500的请求来控制存储器装置100执行编程操作、读取操作或擦除操作。在编程操作期间,存储器控制器200可以将写入命令、pba和写入数据等提供到存储器装置100。在读取操作期间,存储器控制器200可以将读取命令和pba提供到存储器装置100。在擦除操作期间,存储器控制器200可以将擦除命令和pba提供到存储器装置100。
37.在实施例中,存储器控制器200可以不管是否存在来自主机500的请求而生成命令、地址和数据,并且将命令、地址和数据传输到存储器装置100。例如,存储器控制器200可以将用于伴随执行损耗均衡、读取回收、垃圾收集等一起执行读取操作和编程操作的命令、地址和数据提供到存储器装置100。
38.在实施例中,存储器控制器200可以控制两个或更多个存储器装置100。在这种情况下,存储器控制器200可以根据交错方法来控制两个或更多个存储器装置100,以提高操作性能。该交错方法可以是控制对两个或更多个存储器装置100的操作彼此重叠的方法。
39.存储装置50可以进一步包括主存储器300。主存储器300可以临时存储从主机500提供的数据,或者可以临时存储从存储器装置100读取的数据。在实施例中,主存储器300可以是易失性存储器装置。例如,主存储器300可以包括动态随机存取存储器(dram)、静态随机存取存储器(sram)、或两者。
40.在实施例中,主存储器300可以读取存储器装置100中存储的元数据,并且将所读
取的元数据存储在其中。
41.元数据可以是包括控制存储装置50所需的各种信息的数据。例如,元数据可以包括坏块信息和待被存储器控制器200的处理器210运行的固件,该坏块信息是关于存储器装置100中包括的多个存储块之中的坏块的信息。
42.在实施例中,元数据可以包括映射数据,指示由主机500提供的逻辑地址与存储器装置100中包括的存储器单元的物理地址之间的对应关系;有效页面表,指示存储器装置100中包括的页面中存储的数据是否是有效数据。在实施例中,有效页面表可以包括多个有效页面表。有效页面表可以包括指示以4kb为单位存储在页面中的数据是否有效的位图形式的数据。
43.可选地,在各个实施例中,元数据可以包括读取计数数据,指示对存储器装置100中包括的存储块执行的读取操作的次数;周期数据,指示存储器装置100中包括的存储块的擦除次数;热/冷数据,指示存储器装置100中包括的页面中存储的数据是热数据还是冷数据;以及日志数据,指示映射数据的更改内容。
44.在实施例中,主存储器300中存储的元数据可以包括数据块,该数据块针对元数据的类型而具有不同类型的数据结构。例如,元数据可以针对其类型而具有不同的数据大小。因此,针对元数据的类型,主存储器300中存储的元数据的大小可能彼此不同。
45.在本公开的实施例中,存储器控制器200可以包括处理器210和高速缓存存储器220。
46.处理器210可以控制存储器控制器200的全部操作。处理器210可以运行固件(fw)。处理器210可以执行访问存储器装置100所需的操作。例如,处理器210可以将命令提供到存储器装置100,并且控制存储器装置100和主存储器300执行与该命令相对应的操作。
47.例如,当从主机500接收到写入请求时,处理器210可以将与该写入请求相对应的逻辑地址转换为物理地址。处理器210可以将指示逻辑地址与物理地址之间的对应关系的映射数据存储在主存储器300中。
48.为了存储映射数据,处理器210可以从主存储器300读取映射段,映射段包括由主机500提供的逻辑地址的映射信息。此后,处理器210可以将与逻辑地址相对应的物理地址记录在映射段中。处理器210可以将记录了物理地址的映射段再次存储在主存储器300中。当分配了物理地址时,也可以更新与所分配的物理地址相对应的有效页面表的数据。
49.在实施例中,可以更新主存储器300中存储的映射数据。例如,当针对先前请求写入的逻辑地址输入了新数据的写入请求时,先前所存储的数据可能变为无效数据,并且可能会更改与相应的逻辑地址相对应的物理地址。可选地,当存储数据的位置因诸如垃圾收集、读取回收和损耗均衡的各种后台操作而更改时,可以更新与该数据的位置相对应的映射数据。
50.高速缓存存储器220可以存储待被处理器210访问的数据,该数据从主存储器300读取。高速缓存存储器220的存储容量可以小于主存储器300的存储容量。在实施例中,高速缓存存储器220可以是易失性存储器装置。例如,高速缓存存储器220可以包括动态随机存取存储器(dram)或静态随机存取存储器(sram)、或这两者。高速缓存存储器220可以是具有比主存储器300的操作速度更快的操作速度的存储器。
51.因为高速缓存存储器220的存储容量小于主存储器300的存储容量,所以高速缓存
存储器220可以仅存储主存储器300中存储的元数据之中由处理器210访问的元数据。将主存储器300中存储的数据之中的、存储在特定地址中的数据存储在高速缓存存储器220中称为高速缓存。
52.当高速缓存存储器220存储从主存储器300读取的、待被处理器210访问的数据时,该高速缓存存储器220可以将相应数据提供到处理器210。因为高速缓存存储器220的操作速度比主存储器300的操作速度更快,所以当待被处理器210访问的数据存储在高速缓存存储器220中时,与从主存储器300获得数据相比,处理器210可以更快地获得数据。待被处理器210访问的数据存储在高速缓存存储器220中的情况称为高速缓存命中,并且待被处理器210访问的数据未存储在高速缓存存储器220中的情况称为高速缓存未命中。随着高速缓存命中的次数增加,可以提高由处理器210处理的操作速度。
53.高速缓存存储器220的操作方法可以分类为直接映射高速缓存、组相联高速缓存或全相联高速缓存。
54.直接映射高速缓存可以是主存储器300的多个地址对应于高速缓存存储器220的一个地址的多对一(n:1)方法。也就是说,在直接映射高速缓存中,可以将主存储器300的特定地址中存储的数据高速缓存在高速缓存存储器220的预映射地址中。
55.全相联高速缓存可以是高速缓存存储器220的地址没有被预映射到主存储器300的特定地址的操作方法,因此,该高速缓存存储器220的空白部分的地址可以高速缓存主存储器300的任意地址中存储的数据。当确定是否存在高速缓存命中时,需要全相联高速缓存来搜索高速缓存存储器220的所有地址。
56.组相联高速缓存是直接映射高速缓存和全相联高速缓存的中间形式,并且通过将高速缓存存储器220划分为多个高速缓存组来对高速缓存存储器220进行管理。另外,可以将高速缓存组划分为高速缓存路或高速缓存行。
57.主机500可以使用诸如以下的各种通信方法中的至少一种与存储装置50通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围组件互连(pci)、高速pci(pcie)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和低负载dimm(lrdimm)。
58.图2是用于描述图1的存储器装置100的示图。
59.参照图2,存储器装置100可以包括存储器单元阵列110、电压生成器120、地址解码器130、输入/输出(i/o)电路140和控制逻辑150。
60.存储器单元阵列110包括多个存储块blk1至blki,i是大于1的正整数。多个存储块blk1至blki通过行线rl连接到地址解码器130。多个存储块blk1至blki可以通过列线cl连接到输入/输出电路140。在实施例中,行线rl可以包括字线、源极选择线和漏极选择线。在实施例中,列线cl可以包括位线。
61.多个存储块blk1至blki中的每一个包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。多个存储器单元之中的、连接到相同字线的存储器单元可以定义为一个物理页面。也就是说,存储器单元阵列110可以包括多个物理页面。存储器装置100的存储器单元中的每一个可以被配置成存储一位数据的单层单元(slc)、存储两位数据的多层单元(mlc)、存储三位数据的三层单元(tlc)或能够存储四位数据的四层单元
(qlc)。
62.在实施例中,电压生成器120、地址解码器130和输入/输出电路140可以统称为外围电路。外围电路在控制逻辑150的控制下驱动存储器单元阵列110。外围电路可以驱动存储器单元阵列110以执行编程操作、读取操作和擦除操作。
63.电压生成器120被配置成使用供应到存储器装置100的外部电源电压来生成多个操作电压。电压生成器120可以在控制逻辑150的控制下而操作。
64.在实施例中,电压生成器120可以通过调节外部电源电压来生成内部电源电压。由电压生成器120生成的内部电源电压被用作存储器装置100的操作电压。
65.在实施例中,电压生成器120可以使用外部电源电压或内部电源电压来生成多个操作电压。电压生成器120可以被配置成生成存储器装置100中所需的各种电压。例如,电压生成器120可以生成多个擦除电压、多个编程电压、多个通过电压、多个选择读取电压以及多个未选择读取电压。
66.电压生成器120可以包括接收内部电源电压的多个泵电容器,并且可以在控制逻辑150的控制下通过选择性地启用多个泵电容器来生成多个操作电压。
67.由电压生成器120生成的多个操作电压可以通过地址解码器130被供应到存储器单元阵列110。
68.地址解码器130通过行线rl连接到存储器单元阵列110。地址解码器130被配置成在控制逻辑150的控制下操作。地址解码器130可以从控制逻辑150接收地址addr。地址解码器130可以解码所接收的地址addr之中的块地址。地址解码器130可以根据经解码的块地址来选择存储块blk1至blki之中的至少一个存储块。地址解码器130可以解码所接收的地址addr之中的行地址。地址解码器130可以根据经解码的行地址来选择所选择的存储块的字线之中的至少一条字线。在实施例中,地址解码器130可以解码所接收的地址addr之中的列地址。地址解码器130可以根据经解码的列地址将输入/输出电路140和存储器单元阵列110彼此连接。
69.根据本公开的实施例,在读取操作期间,地址解码器130可以将读取电压施加到所选择的字线,并且将读取通过电压施加到未选择字线,该读取通过电压具有比读取电压更高的电压电平。
70.例如,地址解码器130可以包括诸如行解码器、列解码器和地址缓冲器的组件。
71.输入/输出电路140可以包括多个页面缓冲器。多个页面缓冲器可以通过位线连接到存储器单元阵列110。在编程操作期间,可以基于与由外部装置提供的输入数据data相对应的多个页面缓冲器中存储的数据,将写入数据存储在选择存储器单元中。
72.在读取操作期间,可以通过位线感测选择存储器单元中存储的读取数据,并且所感测的数据可以存储在页面缓冲器中。之后,页面缓冲器中存储的数据作为输出数据data被输出到外部装置。
73.控制逻辑150可以控制地址解码器130、电压生成器120和输入/输出电路140。控制逻辑150可以响应于从外部装置输出的命令cmd来操作。控制逻辑150可以响应于命令cmd和地址addr而生成各种信号来控制外围电路。
74.图3是用于描述图2的存储块中的任意一个的配置的示图。
75.例如,图3中示出存储块blki。
76.参照图3,彼此平行布置的多条字线可以连接在第一选择线和第二选择线之间。此处,第一选择线可以是源极选择线ssl,并且第二选择线可以是漏极选择线dsl。更具体地,存储块blki可以包括连接在位线bl1至bln与源极线sl之间的多个串st。位线bl1至bln可以分别连接到串st,并且源极线sl可以共同连接到串st。因为可以将串st配置为彼此相同,所以将作为示例具体描述连接到第一位线bl1的串st。
77.串st可以包括串联连接在源极线sl与第一位线bl1之间的源极选择晶体管sst、多个存储器单元mc1至mc16、以及漏极选择晶体管dst。在实施例中,一个串st可以包括至少一个源极选择晶体管sst和漏极选择晶体管dst,并且可以包括存储器单元mc1至mc16,但是实施例并不限于此。在另一实施例中,一个串中包括的存储器单元的数量可能大于16。
78.源极选择晶体管sst的源极可以连接到源极线sl,并且漏极选择晶体管dst的漏极可以连接到第一位线bl1。存储器单元mc1至mc16可以串联地连接在源极选择晶体管sst与漏极选择晶体管dst之间。不同串st中包括的源极选择晶体管sst的栅极可以共同连接到源极选择线ssl,不同串st中的漏极选择晶体管dst的栅极可以共同连接到漏极选择线dsl,并且不同串st中的存储器单元mc1至mc16的栅极可以共同连接到多条字线wl1至wl16。不同串st中包括的存储器单元之中连接到相同字线的一组存储器单元可以被称为物理页面pg。因此,存储块blki可以包括与字线wl1至wl16的数量相同的多个物理页面pg。
79.一个存储器单元可以存储一位数据。这通常被称为单层单元(slc)。在这种情况下,一个物理页面pg可以存储与一个逻辑页面(lpg)相对应的数据。与一个逻辑页面(lpg)相对应的数据可以包括具有与一个物理页面pg中包括的单元相同数量的数据位。
80.在其它实施例中,一个存储器单元可以存储两位或更多位数据。在这种情况下,一个物理页面pg可以存储与两个或更多个逻辑页面相对应的数据。
81.图4是用于描述对参照图1描述的主存储器300中存储的逻辑到物理(l2p)映射数据的读取-修改-写入操作。
82.参照图1和图4,可以更新主存储器300中存储的l2p映射数据。
83.例如,当从主机500输入写入请求时,处理器210可以将物理地址分配到根据写入请求从主机500输入的逻辑地址,并且更新与该物理地址相对应的有效页面表信息。之后,当针对先前请求写入的逻辑地址输入了用于写入新数据的写入请求时,先前所存储的数据可能变为无效数据,并且可能将新的物理地址分配到先前请求写入的逻辑地址。也就是说,更改了分配到逻辑地址的物理地址。同时,当因诸如垃圾收集、读取回收和损耗均衡的各种后台操作而改变存储数据的位置时,可以更新l2p映射数据。
84.l2p映射数据可以包括多个映射段。映射段中的每一个可以包括多个映射条目。映射条目可以包括关于逻辑地址与物理地址之间的对应关系的信息。
85.此处,假设从主机500输入与第一逻辑块地址lba1相对应的数据的写入请求。处理器210可以读取主存储器300中存储的l2p映射数据之中的、包括第一逻辑块地址lba1的映射条目的映射段0(1)。
86.处理器210可以分配第一物理块地址pba1,作为与该第一逻辑块地址lba1相对应的物理地址(2)。
87.处理器210可以将映射段0存储在主存储器300中,该映射段0包括分配了第一物理块地址pba1的第一逻辑块地址lba1的映射条目(3)。因此,更新主存储器300中存储的l2p映
射数据。
88.图5是用于描述物理地址的有效页面表(vpt)的读取-修改-写入操作的示图。
89.vpt可以包括指示存储器装置100中包括的页面中存储的数据是否是有效数据的位图形式的数据。vpt可以包括分别与多个页面相对应的多个位。“设置”状态的位可以指示相应页面中存储的数据是有效数据,并且“清除”状态的位可以指示相应页面中存储的数据是无效数据。
90.参照图1、图4和图5,将描述包括第零物理块地址pba0和第一物理块地址pba1的vpt。
91.通常,当存储器控制器200将数据存储在存储器装置100中时,存储器控制器200确保作为未存储数据的空白存储块的空闲块,然后将数据顺序地存储在该空闲块中包括的页面中。在将数据存储在该页面中之后,与该页面相对应的vpt的位被更改为“设置”状态。因此,在存储该数据之前,与待分配的物理块地址相对应的vpt的所有位都可以处于“清除”状态。
92.假设参照图4描述的映射段0处于分配第零物理块地址pba0作为与第零逻辑块地址lba0相对应的物理地址的状态。
93.当假设与第零物理块地址pba0的页面相对应的位是第一位bit1时,处理器210可以读取包括该第零物理块地址pba0的vpt(501),并且将第一位bit1的“清除”状态修改为“设置”状态。在实施例中,位“1”可以指示“设置”状态,并且位“0”可以指示“清除”状态。可选地,位“0”可以指示“设置”状态,并且位“1”可以指示“清除”状态。处理器210可以将第一位bit1的“清除”状态被修改为“设置”状态的vpt存储在主存储器300中(503)。
94.此后,因为如参照图4描述的新分配了第一物理块地址pba1,所以处理器210可以再次读取包括该第一物理块地址pba1的vpt(505)。
95.当假设与第一物理块地址pba1的页面相对应的位是第二位bit2时,处理器210可以将第二位bit2的“清除”状态修改为“设置”状态。
96.处理器210可以将第二位bit2的“清除”状态被修改为“设置”状态的vpt存储在主存储器300中(507)。
97.在参照图4和图5描述的实施例中,可以根据固件(fw)的数据访问模式来访问主存储器300,因此可以相应地使用高速缓存存储器220。
98.例如,当从主机500顺序地输入写入请求时,处理器210可以顺序地执行主存储器300的数据访问模式。也就是说,可以连续地访问l2p映射数据和vpt,以便分配用于存储数据的物理块地址,并且将分配的物理块地址的页面作为有效数据页面来存储。因此,对l2p映射数据和vpt的访问可能具有非常高的局部性。
99.相反,当从主机500随机地输入写入请求时,处理器210可以以顺序访问和随机访问的混合方式来处理主存储器300的数据访问模式。例如,对l2p映射数据的访问可以是随机的,并且对vpt的访问可以是顺序的。
100.图6是示出根据本公开的实施例的存储器控制器400的结构的示图。
101.参照图6,存储器控制器400可以包括处理器410、高速缓存控制器420和主存储器430。
102.处理器410和主存储器430可以被分别配置,并且与参照图1描述的处理器210和主
存储器300相同地操作。
103.高速缓存控制器420可以包括调度器421和高速缓存存储器422。
104.调度器421可以存储从处理器410输入的访问请求以及与该访问请求相对应的地址。调度器421可以将访问请求提供到高速缓存存储器422或者接收针对所提供的访问请求的完成响应。
105.调度器421可以从处理器410接收访问请求和待被访问的地址。当从处理器410接收的访问请求是写入请求时,调度器421可以接收写入请求、写入地址和写入数据。调度器421可以将写入请求、写入地址和写入数据传送到高速缓存存储器422。可以通过高速缓存存储器422将写入数据存储在主存储器430中与写入地址相对应的区域中。主存储器430可以将写入数据存储在与写入地址相对应的区域中,然后将写入完成响应提供到高速缓存控制器420,该写入完成响应指示已经执行写入请求。可以通过高速缓存存储器422和调度器421将写入完成响应传送到处理器410。
106.当从处理器410接收的访问请求是读取请求时,调度器421可以接收读取请求和读取地址。调度器421可以将读取请求和读取地址传送到高速缓存存储器422。当与读取请求相对应的数据被高速缓存在与读取地址相对应的高速缓存行中(高速缓存命中)时,高速缓存存储器422可以将所高速缓存的数据提供到调度器421。调度器421可以将所接收的数据传送到处理器410。当与读取请求相对应的数据未被高速缓存在与读取地址相对应的高速缓存行中(高速缓存未命中)时,高速缓存存储器422可以将读取请求和读取地址提供到主存储器430。主存储器430可以将与读取地址相对应的区域中存储的读取数据提供到高速缓存控制器420。读取数据可以存储在高速缓存存储器422中的、与读取地址相对应的高速缓存行中(高速缓存)。读取数据可以通过调度器421被传送到处理器410。
107.当在写入请求完成之前输入了针对对应于与该写入请求相同的高速缓存行的地址的读取请求时,高速缓存存储器422中存储的数据可能与主存储器430中存储的数据不同,在写入请求之后输入该读取请求。在这种情况下,当与读取请求相对应的数据已经被高速缓存在高速缓存存储器422中时,可能发生高速缓存命中,因此与最近写入的数据不同的数据可能被提供到处理器410(发生危险)。
108.为了防止危险发生,当分别与所输入的访问请求的地址相对应的高速缓存行发生冲突时,也就是说,当输入了针对与相同的高速缓存行相对应的地址的第一访问请求和第二访问请求时,调度器421可以保持在第一访问请求之后输入的第二访问请求,而不将该第二访问请求传送到高速缓存存储器422,直到处理了该第一访问请求。
109.然而,考虑到主存储器430的数据访问模式,可能频繁发生许多读取请求因在前写入请求而在调度器421内部被保持或阻塞(pended)的现象。
110.因此,在高速缓存存储器422中发生的读取延迟可能变得更长,因此处理器410的处理速度可能会更慢。
111.图7是示出参照图6描述的存储器控制器400的操作的流程图。
112.参照图6和图7,在步骤s601中,处理器410可以将针对地址addr0的读取请求提供到调度器421。
113.在步骤s603中,调度器421可以存储针对地址addr0的读取请求,并且因为不存在针对地址addr0的在前读取请求或写入请求,所以该调度器421可以将针对地址addr0的读
取请求提供到高速缓存存储器422。
114.在步骤s605中,高速缓存存储器422可以检查与地址addr0相对应的数据是否已经被高速缓存在高速缓存存储器422中。当高速缓存存储器422中不存在与地址addr0相对应的数据时,可能发生高速缓存未命中。
115.当发生高速缓存未命中时,在步骤s607中,高速缓存存储器422可将针对地址addr0的读取请求提供到主存储器430。
116.在步骤s609中,主存储器430可以读出与地址addr0相对应的数据,即addr0 data,并且将读取数据addr0 data提供到高速缓存存储器422。
117.在步骤s611中,高速缓存存储器422可以将读取数据addr0 data存储在该高速缓存存储器422中(高速缓存)。
118.在步骤s613中,高速缓存存储器422可以将读取数据addr0 data提供到调度器421。在步骤s615中,调度器421可以将读取数据addr0 data提供到处理器410。
119.在步骤s617中,处理器410可以将针对地址addr0的写入请求提供到调度器421。
120.在步骤s619中,调度器421可以将针对地址addr0的写入请求提供到高速缓存存储器422。
121.在步骤s621中,高速缓存存储器422可以将写入数据存储在该高速缓存存储器422中。可选地,可以不将写入数据存储在该高速缓存存储器422中,并且与地址addr0相对应的高速缓存行中高速缓存的数据是脏数据的指示可以存储在高速缓存存储器422中。
122.在步骤s623中,高速缓存存储器422可以将针对地址addr0的写入请求提供到主存储器430。
123.当在主存储器430中执行写入请求时,在步骤s625中,处理器410可能将针对地址addr0的另一读取请求提供到调度器421。在这种情况下,因为调度器421还未接收到针对与其它读取请求的地址addr0相同的地址addr0的写入请求完成响应write addr0 completion,所以其它读取请求不被输出到高速缓存存储器422,并且在调度器421中被保持或阻塞。
124.在步骤s627中,主存储器430可以执行针对地址addr0的写入请求,即将写入数据存储在与地址addr0相对应的区域中,并且将写入完成响应write addr0 completion提供到调度器421。
125.在步骤s629中,调度器421可以将写入完成响应write addr0 completion提供到处理器410。
126.在步骤s631中,调度器421可以将针对地址addr0的其它读取请求提供到高速缓存存储器422。
127.在步骤s633中,高速缓存存储器422可以检查与地址addr0相对应的新写入的数据是否已经被高速缓存在高速缓存存储器422中。因为与地址addr0相对应的新写入的数据尚未高速缓存在高速缓存存储器422中,所以可能发生高速缓存未命中。
128.在步骤s635中,高速缓存存储器422可以将针对地址addr0的其它读取请求提供到主存储器430。
129.在步骤s637中,主存储器430可以读出与地址addr0相对应的新写入的数据,即addr0 data,并且将读取数据addr0 data提供到高速缓存存储器422。
130.在步骤s639中,高速缓存存储器422可以将读取数据addr0 data存储在该高速缓存存储器422中(高速缓存)。
131.在步骤s641中,高速缓存存储器422可以将读取数据addr0 data提供到调度器421。在步骤s643,调度器421可以将读取数据addr0 data提供到处理器410。
132.根据参照图7描述的实施例,当分别与所输入的访问请求的地址相对应的高速缓存行之中存在冲突时,例如,当顺序地输入与对应于相同的高速缓存行的地址相对应的第一访问请求和第二访问请求时,调度器421可以保持第二访问请求而不将该第二访问请求传送到高速缓存存储器422,直到处理了该第一访问请求。因此,考虑到由处理器410处理的、主存储器430的数据访问模式,可能频繁发生许多读取请求因在前写入请求而被保持或阻塞在调度器421内部的现象。因此,在高速缓存存储器422中发生的读取延迟可能变得更长,因此处理器410的处理速度可能会更慢。
133.图8是用于描述根据本公开的实施例的存储器控制器700的结构的示图。
134.参照图8,存储器控制器700可以包括处理器710、高速缓存控制器720和主存储器730。
135.处理器710和主存储器730可以分别与参照图1和图6描述的处理器210和处理器410以及主存储器230和主存储器430相同地配置和操作。
136.高速缓存控制器720可以包括调度器721、高速缓存存储器722和危险过滤器723。
137.调度器721可以存储从处理器710输入的访问请求以及与该访问请求相对应的地址。调度器721可以将输入的访问请求提供到高速缓存存储器722或者接收针对所提供的访问请求的完成响应。
138.调度器721可以从处理器710至少接收访问请求和待被访问的地址。当从处理器710接收的访问请求是写入请求时,调度器721可以接收写入请求、写入地址和写入数据。调度器721可以将写入请求、写入地址和写入数据传送到高速缓存存储器722。可以通过高速缓存存储器722将写入数据提供到危险过滤器723。
139.当从处理器710接收的访问请求是读取请求时,调度器721可以接收读取请求和读取地址。调度器721可以将读取请求和读取地址传送到高速缓存存储器722。当与读取地址相对应的数据已经被高速缓存在与读取地址相对应的高速缓存行中(高速缓存命中)时,高速缓存存储器722可以将所高速缓存的数据提供到调度器721。调度器721可以将所接收的数据传送到处理器710。当与读取地址相对应的数据尚未被高速缓存在与读取地址相对应的高速缓存行中(高速缓存未命中)时,高速缓存存储器722可以将读取请求和读取地址提供到主存储器730。主存储器730可以将与读取地址相对应的区域中存储的读取数据提供到高速缓存控制器720。读取数据可以存储在高速缓存存储器722中的、与读取地址相对应的高速缓存行中(高速缓存)。读取数据可以通过调度器721被传送到处理器710。
140.当在完成针对对应于与读取请求相同的高速缓存行的地址的写入请求之前输入了针对该地址的读取请求时,高速缓存存储器722中的数据可能是与响应于写入请求而在主存储器730中最近存储的写入数据不同的先前数据。在这种情况下,当与读取请求相对应的数据已经被高速缓存在高速缓存存储器722中时,可以发生高速缓存命中,因此高速缓存存储器722中存储的、与最近写入的数据不同的先前数据可能被提供到处理器710(发生危险)。
141.为了防止危险发生,当分别与所输入的访问请求的地址相对应的高速缓存行发生冲突时,也就是说,当顺序地输入了针对与相同的高速缓存行相对应的地址的访问请求时,调度器721可以保持稍后输入的访问请求,而不将稍后输入的访问请求传送到高速缓存存储器722,直到处理了首先输入的访问请求。
142.例如,假设首先输入的访问请求是写入请求,并且稍后输入的访问请求是读取请求,首先输入的访问请求和稍后输入的访问请求针对与相同的高速缓存行相对应的地址。在这种情况下,调度器721可以保持读取请求,而不将该读取请求传送到高速缓存存储器722,直到在主存储器730中完成写入请求。
143.危险过滤器723可以接收已经通过调度器721和高速缓存存储器722的写入请求、写入地址和写入数据,并且将写入请求和/或写入地址存储在内部查找表lut中。此后,危险过滤器723可以将写入请求、写入地址和写入数据提供到主存储器730。在实施例中,当从高速缓存存储器722接收到写入请求或者写入请求被提供到主存储器730时,在从主存储器730接收写入完成响应之前,危险过滤器723可以将预写入完成响应提供到调度器721。
144.在从危险过滤器723接收到预写入完成响应之后,调度器721可以将调度器721保持或阻塞的读取请求和读取地址提供到高速缓存存储器722。当在高速缓存存储器722中发生针对读取请求的高速缓存未命中时,危险过滤器723可以接收读取请求。危险过滤器723可以检查内部查找表lut中是否包括针对与读取地址相同的地址的写入请求。
145.当内部查找表lut中存储针对与读取地址相同地址的写入请求时,危险过滤器723可以保持该读取请求,直到从主存储器730接收到写入完成响应。当内部查找表lut中没有存储针对与读取地址相同的地址的写入请求时,危险过滤器723可以将该读取请求提供到主存储器730。
146.也就是说,危险过滤器723可以在从主存储器730接收写入完成响应之前向调度器721发出针对写入请求的预写入完成响应,并且处理随后可能发生的危险情况。因此,可以改善读取延迟。
147.图9和图10是用于描述图8的存储器控制器700的操作的流程图。
148.参照图9和图10,在步骤s901中,处理器710可以将针对地址addr0的读取请求提供到调度器721。
149.在步骤s903中,调度器721可以存储针对地址addr0的读取请求。当不存在针对地址addr0的在前读取请求或写入请求时,调度器721可以将针对地址addr0的读取请求提供到高速缓存存储器722。
150.在步骤s905中,高速缓存存储器722可以检查与地址addr0相对应的数据是否已经被高速缓存在高速缓存存储器722中。当与地址addr0相对应的数据尚未高速缓存在高速缓存存储器722中时,可能发生高速缓存未命中。
151.当发生高速缓存未命中时,在步骤s907中,高速缓存存储器722可将针对地址addr0的读取请求提供到危险过滤器723。
152.在步骤s909中,危险过滤器723可以将针对地址addr0的读取请求传送到主存储器730。
153.在步骤s911中,主存储器730可以读出与地址addr0相对应的数据,即addr0 data,并且将读取数据addr0 data提供到高速缓存存储器722。
154.在步骤s913中,高速缓存存储器722可以将读取数据addr0 data存储在该高速缓存存储器722中(高速缓存)。
155.在步骤s915中,高速缓存存储器722可以将读取数据addr0 data提供到调度器721。在步骤s917中,调度器721可以将读取数据addr0 data提供到处理器710。
156.在步骤s919中,处理器710可以将针对地址addr0的写入请求提供到调度器721。
157.在步骤s921中,调度器721可以将针对地址addr0的写入请求提供到高速缓存存储器722。
158.在步骤s923中,高速缓存存储器722可以将写入数据存储在高速缓存存储器722中。在另一实施例中,可以不将该写入数据存储在高速缓存存储器722中,并且与地址addr0相对应的高速缓存行中高速缓存的数据是脏数据的指示可以存储在高速缓存存储器722中。
159.在步骤s925中,高速缓存存储器722可以将针对地址addr0的写入请求提供到危险过滤器723。
160.在步骤s927中,危险过滤器723可以将预写入完成响应提供到调度器721。另外,写入地址addr0可以存储在危险过滤器723的内部查找表中。
161.在步骤s929中,危险过滤器723可以将写入请求提供到主存储器730。
162.当在主存储器730中执行写入请求时,在步骤s931中,处理器710可能将针对地址addr0的另一读取请求提供到调度器721。
163.在步骤s933中,因为调度器721已经从危险过滤器723接收针对地址addr0的预写入请求完成响应,该地址addr0与针对其它读取请求的地址addr0相同,所以调度器721可以将针对该地址addr0的其它读取请求提供到高速缓存存储器722。
164.在步骤s935中,高速缓存存储器722可以检查与地址addr0相对应的数据是否已经被高速缓存在高速缓存存储器722中。当与地址addr0相对应的数据尚未高速缓存在高速缓存存储器722中时,可能发生高速缓存未命中。
165.当发生高速缓存未命中时,在步骤s937中,高速缓存存储器722可将针对地址addr0的其它读取请求提供到危险过滤器723。
166.在步骤s939中,危险过滤器723可以确定内部查找表lut中是否存储了针对与其它读取请求相同的地址的写入请求。作为确定的结果,当内部查找表lut中存储了针对与其它读取请求相同的地址的写入请求,并且尚未接收到针对该写入请求的写入完成响应时,可以在危险过滤器723中保持或阻塞针对地址addr0的其它读取请求。
167.在步骤s941中,主存储器730可以将写入完成响应提供到危险过滤器723。虽然未示出,但是当从主存储器730接收到写入完成响应时,危险过滤器723可以从查找表lut中移除关于写入请求的信息,例如写入请求或与写入请求相对应的地址。
168.在步骤s943中,危险过滤器723可以将针对地址addr0的其它读取请求提供到主存储器730。
169.在步骤s945中,主存储器730可以读出与地址addr0相对应的读取数据,即addr0 data,并且将读取数据addr0 data提供到高速缓存存储器722。
170.在步骤s947中,高速缓存存储器722可以将读取数据addr0 data存储在高速缓存存储器722中(高速缓存)。
171.在步骤s949,高速缓存存储器722可以将读取数据addr0 data提供到调度器721。在步骤s951,调度器721可以将读取数据addr0 data提供到处理器710。
172.在实施例中,当处理器710将接在写入请求之后的读取请求提供到高速缓存控制器720时,如果写入请求不是针对与读取请求相同的地址,并且由此在内部查找表lut中没有存储针对与读取请求相同的地址的写入请求,则危险过滤器723可以将读取请求提供到主存储器730,而无需等待写入请求完成响应。
173.根据高速缓存控制器720中的上述操作,可以减少读取延迟,因此处理器410的处理速度可以更快。
174.图11是示出根据实施例的图1的存储器控制器200的示图。
175.参照图1和图11,存储器控制器200可以包括处理器210、ram 220、错误校正电路230、rom 260、主机接口270和闪存接口280。
176.处理器210可以控制存储器控制器200的全部操作。ram 220可以用作存储器控制器200的缓冲存储器、高速缓存存储器和操作存储器。例如,参照图1描述的高速缓存存储器220可以是ram 220。在实施例中,ram 220可以是sram。
177.rom 260可以以固件形式存储存储器控制器200的操作所需的各种信息。
178.存储器控制器200可以通过主机接口270与外部装置(例如,主机500、应用处理器等)通信。
179.存储器控制器200可以通过主机接口280与存储器装置100通信。存储器控制器200可以通过闪存接口280将命令cmd、地址addr和控制信号ctrl传输到存储器装置100,并且接收从存储器装置100读出的数据data。例如,闪存接口280可以包括nand接口。
180.图12是示出应用了根据本公开的实施例的存储装置的存储卡系统2000的框图。
181.参照图12,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
182.存储器控制器2100连接到存储器装置2200。存储器控制器2100被配置成访问存储器装置2200。例如,存储器控制器2100可以被配置成控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100被配置成提供存储器装置2200与主机(未示出)之间的接口。存储器控制器2100被配置成驱动用于控制存储器装置2200的固件。存储器控制器2100可以利用参照图1描述的存储器控制器200来配置。
183.例如,存储器控制器2100可以包括诸如随机存取存储器(ram)、处理器、主机接口、存储器接口、错误校正器等的组件。
184.存储器控制器2100可以通过连接器2300与例如主机的外部装置通信。存储器控制器2100可以根据特定通信标准与外部装置通信。例如,存储器控制器2100被配置成根据诸如以下的各种通信标准中的至少一种与外部装置通信:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e或pcie)、高级技术附件(ata)、串行ata、并行ata、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙、nvme等。例如,连接器2300可以由上述各种通信标准中的至少一种来定义。
185.例如,存储器装置2200可以被配置为诸如以下的各种非易失性存储器元件中的任意一种:电可擦除可编程rom(eeprom)、nand闪速存储器、nor闪速存储器、相变ram(pram)、
电阻式ram(reram)、铁电ram(fram)、自旋扭矩磁性ram(stt-mram)等。
186.存储器控制器2100和存储器装置2200可以被集成到一个半导体装置中以配置诸如以下的存储卡:pc卡(个人计算机存储卡国际协会(pcmcia))、紧凑型闪存卡(cf)、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc、微型mmc或emmc)、sd卡(sd、迷你sd、微型sd或sdhc)、通用闪存(ufs)等。
187.图13是示出应用了根据本公开的实施例的存储装置的固态驱动器(ssd)系统3000的框图。
188.参照图13,ssd系统3000包括主机3100和ssd 3200。ssd 3200通过信号连接器3001与主机3100交换信号sig,并且通过电源连接器3002接收电力pwr。ssd 3200包括ssd控制器3210、多个闪速存储器3221至322n、辅助电源装置3230和缓冲存储器3240。
189.根据本公开的实施例,ssd控制器3210可以执行参照图1描述的存储器控制器200的功能。
190.ssd控制器3210可以响应于从主机3100接收的信号sig来控制多个闪速存储器3221至322n。例如,信号sig可以是基于主机3100和ssd3200之间的接口的信号。例如,信号sig可以是通过诸如以下的各种通信标准中的至少一种来定义的信号:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata、并行ata、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙、nvme等。
191.辅助电源装置3230通过电源连接器3002连接到主机3100。辅助电源装置3230可以从主机3100接收电力pwr,并且可以由其中的电力pwr来充电。当来自主机3100的供电不平稳时,辅助电源装置3230可以将辅助电力提供到ssd 3200。例如,辅助电源装置3230可以定位于ssd 3200内部或可以定位于ssd 3200外部。例如,辅助电源装置3230可以定位于主板中,并且可以将辅助电力提供到ssd 3200。
192.缓冲存储器3240作为ssd 3200的缓冲存储器而操作。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者可以临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如dram、sdram、ddr sdram、lpddr sdram、gram等的易失性存储器或诸如fram、reram、stt-mram、pram等的非易失性存储器。
193.图14是示出应用了根据本公开的实施例的存储装置的用户系统4000的框图。
194.参照图14,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
195.应用处理器4100可以驱动用户系统4000中包括的组件、操作系统(os)、用户程序等。例如,应用处理器4100可以包括控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上系统(soc)。
196.存储器模块4200可以作为用户系统4000的主存储器、操作存储器、缓冲存储器或高速缓存存储器而操作。存储器模块4200可以包括诸如dram、sdram、ddr sdram、ddr2 sdram、ddr3 sdram、lpddr sdarm、lpddr2 sdram、lpddr3 sdram等的易失性随机存取存储器或诸如pram、reram、mram、fram等的非易失性随机存取存储器。例如,应用处理器4100和存储器模块4200可以基于堆叠式封装(pop)来进行封装,并且被设置为一个半导体装置。
197.网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如以下的无线通信:码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进、wimax、wlan、uwb、蓝牙、wi-fi等。例如,网络模块4300可以包括在应用处理器4100中。
198.存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将该存储模块4400中存储的数据传输到应用处理器4100。例如,存储模块4400可以被实施为诸如相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪存、nor闪存或三维nand闪存的非易失性半导体存储器元件。例如,存储模块4400可以被设置为用户系统4000的诸如存储卡或外部驱动器的可移动存储装置(可移动驱动器)。
199.例如,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以与参照图1描述的存储器装置100来相同地操作。存储模块4400可以与参照图1描述的存储装置50来相同地操作。
200.用户接口4500可以包括用于向应用处理器4100输入数据或指令或者用于向外部装置输出数据的接口。例如,用户接口4500可以包括诸如以下的用户输入接口中的一种或多种:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、相机、麦克风、陀螺仪传感器、振动传感器、压电元件等。用户接口4500可以包括诸如以下的用户输出接口中的一种或多种:液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器、监视器等。
201.虽然上面已经描述了各个实施例,但是本领域技术人员将理解的是,描述的实施例仅仅作为示例。因此,本文描述的系统和装置不应基于所描述的实施例而受到限制。
再多了解一些

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

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

相关文献