存储器系统的制作方法

文档序号:26942523发布日期:2021-10-12 17:10阅读:234来源:国知局
存储器系统的制作方法
存储器系统
1.相关申请的交叉引用
2.本技术要求于2020年4月3日向韩国知识产权局提交的申请号为10-2020-0040816的韩国申请的优先权,其通过引用整体并入本文。
技术领域
3.各个实施例总体涉及一种存储器系统,且更特别地,涉及一种包括非易失性存储器的存储器系统。


背景技术:

4.存储器系统可以被配置为响应于主机装置的写入请求而存储从主机装置提供的数据。此外,存储器系统可以被配置为响应于主机装置的读取请求而将其中存储的数据提供到主机装置。主机装置是指能够处理数据的电子装置,并且可以包括计算机、数码相机、移动电话等。存储器系统可以被嵌入在主机装置中或被单独地制造并连接到主机装置。


技术实现要素:

5.各个实施例涉及一种能够以提高的性能执行回写操作的存储器系统。
6.在实施例中,一种存储器系统可以包括:高速缓存存储器,被配置为存储多个高速缓存条目;非易失性存储器;以及控制器,被配置为通过以下方式从高速缓存存储器中逐出具有目标事务id的逐出高速缓存条目:当在回写等待队列的头部的第一等待条目包括与目标事务id不同的事务id时,对与第一等待条目相对应的高速缓存条目执行向非易失性存储器的回写操作,以及当在回写等待队列的头部的第一等待条目包括等于目标事务id的事务id时,对逐出高速缓存条目执行向非易失性存储器的回写操作。
7.在实施例中,一种存储器系统可以包括:高速缓存存储器,被配置为存储多个高速缓存条目;非易失性存储器,被配置为存储数据;以及控制器,被配置为响应于命令:执行比较操作,包括将在回写等待队列的头部的第一等待条目的事务id与高速缓存存储器的逐出高速缓存条目的事务id进行比较;执行高速缓存条目确定,包括根据比较结果确定高速缓存存储器中的高速缓存条目;执行回写操作,包括对所确定的高速缓存条目执行向非易失性存储器的回写操作。
8.在实施例中,一种存储器系统可以包括:高速缓存存储器,被配置为存储多个高速缓存条目;非易失性存储器;以及控制器,被配置为:当响应于写入命令将高速缓存条目存储在高速缓存存储器中时,将与高速缓存条目相对应的等待条目入队到回写等待队列中,并且基于回写等待队列对高速缓存条目执行回写操作,其中高速缓存条目和等待条目中的每一个包括写入命令的事务id。
9.根据本实施例,该存储器系统可以以提高的性能执行回写操作。
附图说明
10.图1示出根据实施例的存储器系统。
11.图2示出根据实施例的在读取命中的情况下的存储器系统的操作进程。
12.图3a和图3b示出根据实施例的在写入命中的情况下的存储器系统的操作进程。
13.图4a和图4b示出根据实施例的在读取未命中的情况下的存储器系统的操作进程。
14.图5a、图5b和图5c示出根据实施例的在写入未命中的情况下的存储器系统的操作进程。
15.图6a、图6b和图6c示出根据实施例的在读取未命中的情况下的存储器系统的操作进程。
16.图7a、图7b和图7c示出根据实施例的在读取未命中的情况下的存储器系统的操作进程。
17.图8a、图8b、图8c和图8d示出根据实施例的在写入未命中的情况下存储器系统的操作进程。
18.图9a、图9b、图9c和图9d示出根据实施例的在写入未命中的情况下存储器系统的操作进程。
19.图10示出根据实施例的图1的存储器系统的操作过程。
20.图11示出根据实施例的图1的存储器系统的操作过程。
具体实施方式
21.将通过下面参照附图详细描述的实施例来描述本公开的优点和特征以及用于实现这些优点和特征的方法。然而,本公开不限于本文所描述的实施例,而是可以以不同形式实现。提供实施例仅是为了详细描述本公开,使得本公开所属领域的技术人员可以容易地实施本公开的技术构思。
22.实施例不限于附图中所示出的特定形状,但是为了清楚起见可能被放大。在本说明书中,使用了特定术语。然而,这些术语仅用于描述本公开,而不用于限定其含义或限制权利要求书中所描述的本公开的范围。
23.在本说明书中,诸如“和/或”的表述指示包括在该表述之前/之后所列出的一个或多个组件。此外,诸如“连接/联接”的表述指示一个元件直接地连接/联接到另一元件或通过又一元件间接地连接/联接到另一元件。除非另有规定,否则单数形式的术语包括复数形式。此外,“包括”和“包含”或“包括有”和“包含有”的含义可以指定组件、步骤、操作和元件的存在,并且不排除存在或添加一个或多个其他组件、步骤、操作和元件。
24.在下文中,将参照附图详细描述实施例。
25.图1示出根据实施例的存储器系统10的框图。
26.参照图1,存储器系统10可以被配置为响应于主机host的写入命令而存储从外部主机host提供的数据。此外,存储器系统10可以被配置为响应于主机host的读取请求将其中存储的数据提供到主机host。
27.根据实施例,存储器系统10可以包括:pcmcia(个人计算机存储卡国际协会)卡、cf(紧凑型闪存)卡、智能媒体卡、记忆棒、各种多媒体卡(mmc、emmc、rs-mmc和微型mmc)、sd(安全数字)卡(sd、迷你sd、微型sd)、ufs(通用闪存)、ssd(固态驱动器)等
28.根据实施例,存储器系统10可以包括台式计算机、笔记本电脑、平板pc、数码相机、智能tv或移动电话。
29.存储器系统10可以包括控制器ctrl、高速缓存存储器cmem、回写等待队列wbq和非易失性存储器nvm。
30.控制器ctrl可以控制存储器系统10的全部操作。控制器ctrl可以根据主机host的指令控制非易失性存储器nvm以执行前台操作。前台操作可以包括根据来自主机host的指令,即写入命令或读取命令,将数据写入非易失性存储器nvm或从非易失性存储器nvm读取数据的操作。
31.控制器ctrl可以独立于主机host控制非易失性存储器nvm以执行内部需要的后台操作。后台操作可以包括对非易失性存储器nvm的损耗均衡操作、垃圾收集操作、擦除操作、读取回收操作和刷新操作中的一个或多个。如同前台操作,后台操作可以包括将数据写入非易失性存储器nvm的操作,从非易失性存储器nvm读取数据的操作,或这两者。
32.响应于来自主机host的命令,控制器ctrl可以在访问非易失性存储器nvm之前首先访问高速缓存存储器cmem。如下面将描述的,高速缓存存储器cmem可以包括分别在多个高速缓存区域中存储的多个高速缓存条目。高速缓存条目中的每一个可以包括地址和与该地址相对应的数据。在下文中,将通过读取命令或写入命令请求的数据定义为目标数据,并且将与目标数据相对应的地址,即读取命令或写入命令中包括的地址,定义为目标地址。此外,将包括读取命令或写入命令的目标地址的高速缓存条目定义为目标高速缓存条目。
33.将如下详细描述控制器ctrl访问高速缓存存储器cmem的进程。当从主机host接收包括目标地址的读取命令时,控制器ctrl可以在高速缓存存储器cmem中搜索包括该目标地址的目标高速缓存条目。当高速缓存存储器cmem中存在该目标高速缓存条目(即,发生读取命中)时,控制器ctrl可以将目标高速缓存条目中包括的数据作为目标数据传输到主机host。当高速缓存存储器cmem中不存在该目标高速缓存条目(即,发生读取未命中)时,控制器ctrl可以从非易失性存储器nvm读取与目标地址相对应的目标数据,并且将目标地址和目标数据存储在高速缓存存储器cmem的空高速缓存区域中。控制器ctrl然后可以从高速缓存存储器cmem读取目标数据,并将所读取的目标数据传输到主机host。
34.当从主机host接收包括目标地址和目标数据的写入命令时,控制器ctrl可以在高速缓存存储器cmem中搜索包括该目标地址的目标高速缓存条目。当高速缓存存储器cmem中存在该目标高速缓存条目(即,发生写入命中)时,控制器ctrl可以利用目标数据替换目标高速缓存条目的数据。当高速缓存存储器cmem中不存在该目标高速缓存条目(即,发生写入未命中)时,控制器ctrl可以从非易失性存储器nvm读取与目标地址相对应的数据,并且将目标地址和所读取的数据作为目标高速缓存条目存储在高速缓存存储器cmem的空高速缓存区域中。控制器ctrl然后可以将目标高速缓存条目的数据替换为目标数据。
35.如上所述,写入命令的目标数据可以在被存储在非易失性存储器nvm中之前临时存储在高速缓存存储器cmem中。可以通过回写操作将写入命令的目标数据从高速缓存存储器cmem迁移到非易失性存储器nvm。当尚未对写入命令的目标数据执行回写操作时,控制器ctrl可以将包括相应目标数据的高速缓存条目标记为处于脏状态。在对写入命令的目标数据执行回写操作后,控制器ctrl可以将包括相应目标数据的高速缓存条目标记为处于干净状态。
36.当读取命令或写入命令的目标数据待被存储在没有空高速缓存区域的高速缓存存储器cmem中时,控制器ctrl可以从高速缓存存储器cmem中逐出一个或多个高速缓存条目。控制器ctrl可以根据各种策略来选择待被逐出的高速缓存条目(在下文中,称为逐出高速缓存条目)或者选择存储逐出高速缓存条目的高速缓存区域(在下文中,称为逐出高速缓存区域)。例如,控制器ctrl可以选择不太必要或不太重要的高速缓存条目作为逐出高速缓存条目。
37.当逐出高速缓存条目处于脏状态时,仅在对逐出高速缓存条目执行回写操作之后,控制器ctrl才可以将该逐出高速缓存区域视为空高速缓存区域。但是,当逐出高速缓存条目处于干净状态时,控制器ctrl可以立即将该逐出高速缓存区域视为空高速缓存区域,而无需对该逐出高速缓存条目执行回写操作。
38.主机host可以基于事务(transaction)来处理数据。可以通过多个写入命令来处理单个事务。当将包括事务id的写入命令传输到控制器ctrl时,主机host也可以将与该写入命令相对应的事务id传输到控制器ctrl。事务id可以与目标地址和目标数据一起被包括在目标高速缓存条目中。
39.因此,可以在高速缓存存储器cmem中存储对应于不同事务的数据。在实施例中,由于事务的原子性,与不同事务相对应的数据需要根据从主机host传输该数据的顺序(在下文中,称为写入顺序)被回写到非易失性存储器nvm。然而,与相同事务相对应的数据可以与写入顺序无关地被回写到非易失性存储器nvm。
40.控制器ctrl可以管理回写等待队列wbq以满足这些排序要求。当将写入命令的目标数据临时存储在高速缓存存储器cmem中时,控制器ctrl可以将目标地址和事务id作为目标高速缓存条目存储在高速缓存存储器cmem中,并且还可以将对应的等待条目入队到回写等待队列wbq中。等待条目可以包括与目标高速缓存条目相同的目标地址和事务id。
41.回写等待队列wbq可以以先进先出(fifo)的方式操作。因此,等待条目被入队到回写等待队列wbq中的顺序可以指示与相应的等待条目相对应的高速缓存条目需要被回写的顺序。因此,控制器ctrl可以循序地处理回写等待队列wbq的等待条目,从而确保事务所需的写入顺序。
42.当控制器ctrl需要对高速缓存存储器cmem的逐出高速缓存条目执行回写操作时,控制器ctrl可以首先参考位于回写等待队列wbq的头部的等待条目(在下文中,称为头部等待条目)。在一些情况下,在对逐出高速缓存条目执行回写操作之前,控制器ctrl可以首先对与头部等待条目相对应的高速缓存条目执行回写操作。具体地,控制器ctrl可以首先对与头部等待条目相对应的高速缓存条目执行回写操作,直到包括该逐出高速缓存条目的事务id的等待条目到达回写等待队列wbq的头部。换言之,控制器ctrl可以在回写等待队列wbq中领先于与逐出高速缓存条目相对应的等待条目的等待条目之中,优先地对具有与逐出高速缓存条目不同的事务id的等待条目执行回写操作。
43.更具体地,当头部等待条目的事务id不同于逐出高速缓存条目的事务id时,则在对逐出高速缓存条目执行回写操作之前,控制器ctrl可以对与头部等待条目相对应的高速缓存条目执行回写操作。然后,控制器ctrl可以在对与头部等待条目相对应的高速缓存条目执行回写操作之后,将该头部等待条目从回写等待队列wbq中出队。控制器ctrl然后可以对新的头部等待条目重复上述进程。以这种方式,可以确保事务的写入顺序。
44.当头部等待条目的事务id等于逐出高速缓存条目的事务id时,控制器ctrl则可以对逐出高速缓存条目执行回写操作。在这种情况下,尽管与逐出高速缓存条目相对应的等待条目在回写等待队列wbq中晚于头部等待条目出现,但是首先对该逐出高速缓存条目执行回写操作,然后再对与头部等待条目相对应的高速缓存条目执行回写操作。这是可能的,因为当与头部等待条目相对应的高速缓存条目对应于与逐出高速缓存条目相同的事务时,可以以与写入顺序不同的顺序回写与头部等待条目相对应的高速缓存条目。因此,由于推迟了不需要立即执行的回写操作,因此可以减少存储器系统10的开销。
45.根据实施例,在空闲时间期间,控制器ctrl可以对与回写等待队列wbq的头部等待条目相对应的高速缓存条目执行回写操作,并且使该头部等待条目从回写等待队列wbq中出队。
46.图1示出回写等待队列wbq存在于单独的存储器中的情况,但是实施例不限于此。在实施例中,回写等待队列wbq可以被包括在控制器ctrl或高速缓存存储器cmem中。
47.高速缓存存储器cmem可以包括多个高速缓存区域,并且多个高速缓存区域可以分别存储高速缓存条目。高速缓存区域可以对应于存储相应的高速缓存条目的存储器单位。高速缓存条目可以包括数据和与该数据相对应的标签。标签可以包括与数据相对应的地址、事务id和脏/干净状态标记。
48.高速缓存存储器cmem可以包括易失性存储器。易失性存储器可以包括dram(动态随机存取存储器)或sram(静态随机存取存储器)。高速缓存存储器cmem可以以比非易失性存储器nvm更高的速度操作。
49.非易失性存储器nvm可以在控制器ctrl的控制下存储数据。
50.非易失性存储器nvm可以直接联接到高速缓存存储器cmem。在这种情况下,可以在高速缓存存储器cmem和非易失性存储器nvm之间迁移数据,而无需经过控制器ctrl。根据实施例,可以通过控制器ctrl在高速缓存存储器cmem和非易失性存储器nvm之间迁移数据。
51.非易失性存储器nvm可以包括诸如nand闪存或nor闪存的闪速存储器装置、feram(铁电随机存取存储器)、pcram(相变随机存取存储器)、mram(磁性随机存取存储器)或reram(电阻式随机存取存储器)。
52.非易失性存储器nvm可以包括一个或多个平面、一个或多个存储器芯片、一个或多个存储器管芯、或者一个或多个存储器封装。
53.图2是示出根据实施例的在读取命中rdhit的情况下存储器系统10的操作进程的示图。参照图2,高速缓存存储器cmem的高速缓存条目中的每一个可以包括标签和数据dt,该标签包括地址ad、事务id ti和脏/干净状态标记d/c。
54.在步骤s211中,控制器ctrl可以从主机host接收读取命令rdcmd。读取命令rdcmd可以对应于目标地址ad10。
55.在步骤s212中,当在高速缓存存储器cmem中存在包括目标地址ad10的目标高速缓存条目tge时,控制器ctrl可以确定发生读取命中rdhit。
56.在步骤s213中,控制器ctrl可以将目标高速缓存条目tge中包括的目标数据dt1传输到主机host。
57.图3a和图3b是示出根据实施例的在写入命中wthit的情况下存储器系统10的操作进程的示图。
58.参照图3a,在步骤s311中,控制器ctrl可以从主机host接收写入命令wtcmd。写入命令wtcmd可以对应于目标地址ad10和目标数据dt11。此外,写入命令wtcmd可以对应于事务id ti1。
59.在步骤s312中,当在高速缓存存储器cmem中存在包括目标地址ad10的目标高速缓存条目tge时,控制器ctrl可以确定发生了写入命中wthit。
60.然后,参照图3b,在步骤s321中,控制器ctrl可以利用目标数据dt11替换目标高速缓存条目tge的一些或全部数据dt1,并且将目标高速缓存条目tge标记为处于脏状态d。当目标高速缓存条目tge已经被标记为处于脏状态d(不同于图3b所示的状态)时,控制器ctrl可以保留处于脏状态d的标记。控制器ctrl还可以将事务id ti1存储在目标高速缓存条目tge的高速缓存区域中。
61.在步骤s322中,控制器ctrl可以将与目标高速缓存条目tge相对应的等待条目head入队到回写等待队列wbq中。等待条目head可以包括目标地址ad10和事务id ti1。
62.图3b示出等待条目head作为头部等待条目入队到回写等待队列wbq中。然而,当在回写等待队列wbq中已经存在另一个等待条目时,可以将等待条目head入队到回写等待队列wbq中位于另一个等待条目之后(例如,在回写等待队列wbq的末尾)。
63.图4a和图4b是示出根据实施例的在读取未命中rdmiss的情况下存储器系统10的操作进程的示图。
64.参照图4a,在步骤s411中,控制器ctrl可以从主机host接收读取命令rdcmd。读取命令rdcmd可以对应于目标地址ad30。
65.在步骤s412中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了读取未命中rdmiss。在图4a和图4b的示例中,假定高速缓存存储器cmem已满。
66.在步骤s413中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。如上所述,控制器ctrl可以根据各种策略来确定逐出高速缓存条目evt。
67.在步骤s414中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于干净状态c。因此,控制器ctrl可以确定不需要对逐出高速缓存条目evt执行回写操作。控制器ctrl可以直接将存储有逐出高速缓存条目evt的逐出高速缓存区域立即视为空高速缓存区域。
68.然后,参照图4b,在步骤s421中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的目标数据dt3。
69.在步骤s422中,控制器ctrl可以将目标地址ad30和目标数据dt3存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。目标高速缓存条目tge可以不包括事务id(例如,目标高速缓存条目tge中存储的事务id可以是指示目标高速缓存条目tge不与任何事务关联的值)。
70.在步骤s423中,控制器ctrl可以将目标高速缓存条目tge中包括的目标数据dt3传输到主机host。
71.图5a至图5c是示出根据实施例的在写入未命中wtmiss的情况下存储器系统10的操作进程的示图。
72.参照图5a,在步骤s511中,控制器ctrl可以从主机host接收写入命令wtcmd。写入命令wtcmd可以对应于目标地址ad30和目标数据dt3。此外,写入命令wtcmd可以对应于事务id ti3。
73.在步骤s512中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了写入未命中wtmiss。在图5a至图5c的示例中,假定高速缓存存储器cmem已满。
74.在步骤s513中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。
75.在步骤s514中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于干净状态c。因此,控制器ctrl可以确定不需要对逐出高速缓存条目evt执行回写操作。控制器ctrl可以在不对逐出高速缓存条目evt执行回写操作的情况下而将存储有该逐出高速缓存条目evt的逐出高速缓存区域视为空高速缓存区域。
76.然后,参照图5b,在步骤s521中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的数据dt7。数据dt7可以包括与目标地址ad30相对应的旧数据。
77.在步骤s522中,控制器ctrl可以将目标地址ad30和数据dt7存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。
78.然后,参照图5c,在步骤s531中,控制器ctrl可以利用目标数据dt3替换目标高速缓存条目tge的一些或全部数据dt7,并且将目标高速缓存条目tge标记为处于脏状态d。控制器ctrl还可以将事务id ti3存储在目标高速缓存条目tge的高速缓存区域中。
79.在步骤s532中,控制器ctrl可以将与目标高速缓存条目tge相对应的等待条目head入队到回写等待队列wbq中。等待条目head可以包括目标地址ad30和事务id ti3。
80.图6a至图6c是示出根据实施例的在读取未命中rdmiss的情况下存储器系统10的操作进程的示图。
81.参照图6a,在步骤s611中,控制器ctrl可以从主机host接收读取命令rdcmd。读取命令rdcmd可以对应于目标地址ad30。
82.在步骤s612中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了读取未命中rdmiss。在图6a至图6c的示例中,假定高速缓存存储器cmem已满。
83.在步骤s613中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。
84.在步骤s614中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于脏状态d。因此,控制器ctrl可以确定对逐出高速缓存条目evt执行回写操作。
85.在步骤s615中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前检查回写等待队列wbq。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti1不同于逐出高速缓存条目evt的事务id ti2。
86.在步骤s616中,控制器ctrl可以对与头部等待条目head相对应的高速缓存条目che执行回写操作wtback。与头部等待条目head相对应的高速缓存条目che可以包括与头部等待条目head相同的地址。控制器ctrl可以将数据dt1存储在非易失性存储器nvm中。
87.参照图6b,在步骤s621中,控制器ctrl可以使与经回写的高速缓存条目che相对应的头部等待条目phead1从回写等待队列wbq中出队。
88.在步骤s622中,控制器ctrl可以将经回写的高速缓存条目che标记为处于干净状态c。
89.在步骤s623中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti2与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前参考回写等待队列wbq。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti2等于逐出高速缓存条目evt的事务id ti2。
90.因此,在步骤s624中,控制器ctrl可以对逐出高速缓存条目evt执行回写操作wtback。也就是说,控制器ctrl可以将数据dt2存储在非易失性存储器nvm中,并且将逐出高速缓存条目evt标记为干净(或者,在另一实施例中标记为空)。
91.在步骤s625中,控制器ctrl可以将头部等待条目head的地址ad20与逐出高速缓存条目evt的地址ad20进行比较。换言之,控制器ctrl可以确定头部等待条目head是否对应于逐出高速缓存条目evt。控制器ctrl可以执行该操作以确定在对逐出高速缓存条目evt执行回写操作wtback之后是否使头部等待条目head从回写等待队列wbq中出队。在所示的示例中,控制器ctrl可以确定头部等待条目head的地址ad20等于逐出高速缓存条目evt的地址ad20。换言之,控制器ctrl可以确定头部等待条目head对应于逐出高速缓存条目evt。
92.作为响应,参照图6c,在步骤s631中,控制器ctrl可以使与经回写的逐出高速缓存条目evt相对应的头部等待条目phead2从回写等待队列wbq中出队。
93.在步骤s632中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的目标数据dt3。
94.在步骤s633中,控制器ctrl可以将目标地址ad30和目标数据dt3存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。
95.在步骤s634中,控制器ctrl可以将目标高速缓存条目tge中包括的目标数据dt3传输到主机host。
96.图6a示出在回写等待队列wbq中与逐出高速缓存条目evt相对应的等待条目之前仅存在一个等待条目head的情况。但是,当在回写等待队列wbq中与逐出高速缓存条目evt相对应的等待条目之前存在多个等待条目时,可以以相同方式重复步骤s615、s616、s621和s622的过程。
97.图6a示出在步骤s615中确定头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2不同的情况。然而,当在步骤s615中确定头部等待条目head的事务id等于逐出高速缓存条目evt的事务id ti2时,可以以相同方式执行该过程,但是紧接在步骤s615之后是步骤s624。
98.图7a至图7c是示出根据实施例的在读取未命中rdmiss的情况下存储器系统10的
操作进程的示图。
99.参照图7a,在步骤s711中,控制器ctrl可以从主机host接收读取命令rdcmd。读取命令rdcmd可以对应于目标地址ad30。
100.在步骤s712中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了读取未命中rdmiss。在图7a至图7c的示例中,假定高速缓存存储器cmem已满。
101.在步骤s713中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。
102.在步骤s714中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于脏状态d。因此,控制器ctrl可以确定对逐出高速缓存条目evt执行回写操作wtback。
103.在步骤s715中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前参考回写等待队列wbq。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti1不同于逐出高速缓存条目evt的事务id ti2。
104.因此,在步骤s716中,控制器ctrl可以对与头部等待条目head相对应的高速缓存条目che执行回写操作wtback。也就是说,控制器ctrl可以将数据dt1存储在非易失性存储器nvm中。
105.参照图7b,在步骤s721中,控制器ctrl可以使与经回写的高速缓存条目che相对应的头部等待条目phead从回写等待队列wbq中出队。
106.在步骤s722中,控制器ctrl可以将经回写的高速缓存条目che标记为处于干净状态c。
107.在步骤s723中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti2与逐出高速缓存条目evt的事务id ti2进行比较。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti2等于逐出高速缓存条目evt的事务id ti2。
108.在步骤s724中,控制器ctrl可以对逐出高速缓存条目evt执行回写操作wtback。也就是说,控制器ctrl可以将数据dt2存储在非易失性存储器nvm中。
109.在步骤s725中,控制器ctrl可以将头部等待条目head的地址ad50与逐出高速缓存条目evt的地址ad20进行比较。换言之,控制器ctrl可以确定头部等待条目head是否对应于逐出高速缓存条目evt。控制器ctrl可以执行该操作以确定在对逐出高速缓存条目evt执行回写操作wtback之后是否使头部等待条目head从回写等待队列wbq中出队。在所示的示例中,控制器ctrl可以确定头部等待条目head的地址ad50不同于逐出高速缓存条目evt的地址ad20。换言之,控制器ctrl可以确定头部等待条目head不对应于逐出高速缓存条目evt。因此,控制器ctrl可以不使头部等待条目head从回写等待队列wbq中出队。
110.然后,参照图7c,在步骤s731中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的目标数据dt3。
111.在步骤s732中,控制器ctrl可以将目标地址ad30和目标数据dt3存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。
112.在步骤s733中,控制器ctrl可以将目标高速缓存条目tge中包括的目标数据dt3传输到主机host。
113.因此,因为即使对应于头部等待条目head的高速缓存条目che2的写入顺序领先于逐出高速缓存条目evt的写入顺序,但高速缓存条目che2与逐出高速缓存条目evt对应于相同的事务,所以高速缓存条目che2可以不在逐出高速缓存条目evt之前回写。由于对高速缓存条目che2的回写操作被推迟,可以减少存储器系统10的开销。
114.图7a示出了在步骤s715中确定头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2不同的情况。然而,当在步骤s715中确定头部等待条目head的事务id等于逐出高速缓存条目evt的事务id ti2时,可以在步骤s715之后从步骤s724开始以相同的方式执行该过程。
115.图8a至图8d是示出根据实施例的在写入未命中wtmiss的情况下存储器系统10的操作进程的示图。
116.参照图8a,在步骤s811中,控制器ctrl可以从主机host接收写入命令wtcmd。写入命令wtcmd可以对应于目标地址ad30和目标数据dt3。此外,写入命令wtcmd可以对应于事务id ti3。
117.在步骤s812中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了写入未命中wtmiss。在图8a至图8d的示例中,假定高速缓存存储器cmem已满。
118.在步骤s813中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。
119.在步骤s814中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于脏状态d。因此,控制器ctrl可以确定对逐出高速缓存条目evt执行回写操作wtback。
120.在步骤s815中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前参考回写等待队列wbq。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti1不同于逐出高速缓存条目evt的事务id ti2。
121.因此,在步骤s816中,控制器ctrl可以对与头部等待条目head相对应的高速缓存条目che执行回写操作wtback。也就是说,控制器ctrl可以将数据dt1存储在非易失性存储器nvm中。
122.参照图8b,在步骤s821中,控制器ctrl可以使与经回写的高速缓存条目che相对应的头部等待条目phead1从回写等待队列wbq中出队。
123.在步骤s822中,控制器ctrl可以将经回写的高速缓存条目che标记为处于干净状态c。
124.在步骤s823中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti2与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前参考回写等待队列wbq。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti2等于逐出高速缓存条目evt的事务id ti2。
125.在步骤s824中,控制器ctrl可以对逐出高速缓存条目evt执行回写操作wtback。也就是说,控制器ctrl可以将数据dt2存储在非易失性存储器nvm中。
126.在步骤s825中,控制器ctrl可以将头部等待条目head的地址ad20与逐出高速缓存条目evt的地址ad20进行比较。换言之,控制器ctrl可以确定头部等待条目head是否对应于逐出高速缓存条目evt。控制器ctrl可以执行该操作以确定在对逐出高速缓存条目evt执行回写操作wtback之后是否使头部等待条目head从回写等待队列wbq中出队。在所示的示例中,控制器ctrl可以确定头部等待条目head的地址ad20等于逐出高速缓存条目evt的地址ad20。换言之,控制器ctrl可以确定头部等待条目head对应于逐出高速缓存条目evt。
127.然后,参照图8c,在步骤s831中,控制器ctrl可以使与经回写的逐出高速缓存条目evt相对应的头部等待条目phead2从回写等待队列wbq中出队。
128.在步骤s832中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的数据dt7。
129.在步骤s833中,控制器ctrl可以将目标地址ad30和数据dt7存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。
130.然后,参照图8d,在步骤s841中,控制器ctrl可以利用目标数据dt3替换目标高速缓存条目tge的一些或全部数据dt7,并且将目标高速缓存条目tge标记为处于脏状态d。控制器ctrl还可以将事务id ti3存储在目标高速缓存条目tge的高速缓存区域中。
131.在步骤s842中,控制器ctrl可以将与目标高速缓存条目tge相对应的等待条目head入队到回写等待队列wbq中。等待条目head可以包括目标地址ad30和事务id ti3。
132.图8a示出了在步骤s815中确定头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2不同的情况。然而,当在步骤s815中确定头部等待条目head的事务id等于逐出高速缓存条目evt的事务id ti2时,可以在步骤s815之后从步骤s824开始以相同的方式执行该过程。
133.图9a至图9d是示出根据实施例的在写入未命中wtmiss的情况下存储器系统10的操作进程的示图。
134.参照图9a,在步骤s911中,控制器ctrl可以从主机host接收写入命令wtcmd。写入命令wtcmd可以对应于目标地址ad30和目标数据dt3。此外,写入命令wtcmd可以对应于事务id ti3。
135.在步骤s912中,当在高速缓存存储器cmem中不存在包括目标地址ad30的目标高速缓存条目时,控制器ctrl可以确定发生了写入未命中wtmiss。在图9a至图9d的示例中,假定高速缓存存储器cmem已满。
136.在步骤s913中,控制器ctrl可以根据逐出策略来选择逐出高速缓存条目evt。
137.在步骤s914中,控制器ctrl可以通过参考逐出高速缓存条目evt的脏/干净状态标记d/c来确定逐出高速缓存条目evt处于脏状态d。因此,控制器ctrl可以确定对逐出高速缓存条目evt执行回写操作wtback。
138.在步骤s915中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2进行比较。也就是说,为了保持事务的写入顺序,控制器ctrl可以在回写逐出高速缓存条目evt之前参考回写等待队列wbq。在所示的示
例中,控制器ctrl可以确定头部等待条目head的事务id ti1不同于逐出高速缓存条目evt的事务id ti2。
139.因此,在步骤s916中,控制器ctrl可以对与头部等待条目head相对应的高速缓存条目che执行回写操作wtback。也就是说,控制器ctrl可以将数据dt1存储在非易失性存储器nvm中。
140.然后,参照图9b,在步骤s921中,控制器ctrl可以使与经回写的高速缓存条目che相对应的头部等待条目phead从回写等待队列wbq中出队。
141.在步骤s922中,控制器ctrl可以将经回写的高速缓存条目che标记为处于干净状态c。
142.在步骤s923中,控制器ctrl可以将回写等待队列wbq的头部等待条目head的事务id ti2与逐出高速缓存条目evt的事务id ti2进行比较。在所示的示例中,控制器ctrl可以确定头部等待条目head的事务id ti2等于逐出高速缓存条目evt的事务id ti2。
143.在步骤s924中,控制器ctrl可以对逐出高速缓存条目evt执行回写操作wtback。也就是说,控制器ctrl可以将数据dt2存储在非易失性存储器nvm中。
144.在步骤s925中,控制器ctrl可以将头部等待条目head的地址ad50与逐出高速缓存条目evt的地址ad20进行比较。换言之,控制器ctrl可以确定头部等待条目head是否对应于逐出高速缓存条目evt。控制器ctrl可以执行该操作以确定在对逐出高速缓存条目evt执行回写操作wtback之后是否使头部等待条目head从回写等待队列wbq中出队。在所示的示例中,控制器ctrl可以确定头部等待条目head的地址ad50不同于逐出高速缓存条目evt的地址ad20。换言之,控制器ctrl可以确定头部等待条目head不对应于逐出高速缓存条目evt。因此,控制器ctrl可以不使头部等待条目head从回写等待队列wbq中出队。
145.然后,参照图9c,在步骤s931中,控制器ctrl可以执行读取操作rd以从非易失性存储器nvm读取与目标地址ad30相对应的数据dt7。
146.在步骤s932中,控制器ctrl可以将目标地址ad30和数据dt7存储在已经存储有逐出高速缓存条目evt的空高速缓存区域中。在相应的高速缓存区域中,存储了包括目标地址ad30的目标高速缓存条目tge。
147.然后,参照图9d,在步骤s941中,控制器ctrl可以利用目标数据dt3替换目标高速缓存条目tge的一些或全部数据dt7,并且将目标高速缓存条目tge标记为处于脏状态d。控制器ctrl还可以将事务id ti3存储在目标高速缓存条目tge的高速缓存区域中。
148.在步骤s942中,控制器ctrl可以将与目标高速缓存条目tge相对应的等待条目wbe入队到回写等待队列wbq中。等待条目wbe可以包括目标地址ad30和事务id ti3。
149.图9a示出在步骤s915中确定头部等待条目head的事务id ti1与逐出高速缓存条目evt的事务id ti2不同的情况。然而,当在步骤s915中确定头部等待条目head的事务id等于逐出高速缓存条目evt的事务id ti2时,可以在步骤s915之后从步骤s924开始以相同的方式执行该过程。
150.图10是示出根据实施例的图1的存储器系统10的操作进程的流程图。
151.参照图10,在步骤s11中,控制器ctrl可以从主机host接收写入命令。
152.在步骤s12中,控制器ctrl可以确定是否发生了针对写入命令的写入未命中。当发生写入未命中时,该过程可以进行到步骤s13。当发生写入命中时,该过程可以进行到步骤
s24。
153.在步骤s13中,控制器ctrl可以确定高速缓存存储器cmem是否已满。当高速缓存存储器cmem已满时,该过程可以进行到步骤s14。当高速缓存存储器cmem未满时,该过程可以进行到步骤s23。
154.在步骤s14中,控制器ctrl可以在高速缓存存储器cmem中选择逐出高速缓存条目。
155.在步骤s15中,控制器ctrl可以通过参考逐出高速缓存条目的脏/干净状态标记来确定逐出高速缓存条目是否处于脏状态。当逐出高速缓存条目处于脏状态时,该过程可以进行到步骤s16。当逐出高速缓存条目处于干净状态时,该过程可以进行到步骤s23。
156.在步骤s16中,控制器ctrl可以确定回写等待队列wbq的头部等待条目的事务id是否等于逐出高速缓存条目的事务id。当头部等待条目的事务id等于逐出高速缓存条目的事务id时,该过程可以进行到步骤s20。当头部等待条目的事务id不同于逐出高速缓存条目的事务id时,该过程可以进行到步骤s17。
157.在步骤s17中,控制器ctrl可以对与头部等待条目相对应的高速缓存条目执行回写操作。
158.在步骤s18中,控制器ctrl可以从回写等待队列中使与经回写的高速缓存条目相对应的头部等待条目出队。
159.在步骤s19中,控制器ctrl可以将经回写的高速缓存条目标记为处于干净状态c。然后,该过程可以进行到步骤s16。
160.在步骤s20中,控制器ctrl可以对逐出高速缓存条目执行回写操作。
161.在步骤s21中,控制器ctrl可以确定头部等待条目的地址是否等于逐出高速缓存条目的地址。当头部等待条目的地址等于逐出高速缓存条目的地址时,该过程可以进行到步骤s22。当头部等待条目的地址不同于逐出高速缓存条目的地址时,该过程可以进行到步骤s23。
162.在步骤s22中,控制器ctrl可以使头部等待条目从回写等待队列中出队。
163.在步骤s23中,控制器ctrl可以从非易失性存储器读取与目标地址相对应的数据,并且将所读取的数据存储在空高速缓存区域中。
164.在步骤s24中,控制器ctrl可以利用目标数据替换目标高速缓存条目的一些或全部数据,并且将目标高速缓存条目标记为处于脏状态。此外,控制器ctrl还可将与写入命令相对应的事务id存储在目标高速缓存条目的高速缓存区域中。
165.在步骤s25中,可以将与目标高速缓存条目相对应的等待条目入队到回写等待队列wbq中。等待条目可以包括目标地址和与写入命令相对应的事务id。
166.图11是示出根据实施例的图1的存储器系统10的操作进程的流程图。
167.参照图11,在步骤s31中,控制器ctrl可以从主机host接收读取命令。
168.在步骤s32中,控制器ctrl可以确定是否发生了针对读取命令的读取未命中。当发生读取未命中时,该过程可以进行到步骤s33。当发生读取命中时,该过程可以进行到步骤s44。
169.步骤s33至s42可以以与图10的步骤s13至s22基本相同的方式执行。
170.在步骤s43中,控制器ctrl可以从非易失性存储器读取与目标地址相对应的目标数据,并且将所读取的目标数据存储在空高速缓存区域中。当在s34中选择了逐出高速缓存
条目时,空高速缓存区域可以对应于逐出高速缓存区域。
171.在步骤s44中,控制器ctrl可以将高速缓存存储器cmem中存储的目标数据传输到主机host。
172.虽然上面已经描述了各个实施例,但是本领域技术人员将理解的是,所描述的实施例仅是示例。因此,不应基于所描述的实施例来限制本文所描述的存储器系统。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1