具有高速缓存系统的存储系统的制作方法

文档序号:20838511发布日期:2020-05-22 17:11阅读:99来源:国知局
具有高速缓存系统的存储系统的制作方法

相关申请的交叉引用

本申请要求2018年11月14日提交的申请号为10-2018-0140299的韩国申请的优先权,其公开内容通过引用整体合并于此。

本公开的各种实施例涉及存储系统,并且更具体地,涉及具有高速缓存系统的存储系统以及控制该存储系统中的高速缓存操作的方法。



背景技术:

在存储系统中,与诸如中央处理单元(cpu)之类的主机相比,存储器通常以相对较低的速度运行。因此,包括高速缓冲存储器的高速缓存系统已经在大多数存储系统中被广泛采用以解决由于主机与存储器之间的速度差异而引起的问题。高速缓存系统可以设置在主机(或主机控制器)与存储器之间,或者可以设置在主机与存储器之间的存储器控制器中。如果存储系统采用完全关联的高速缓存架构,则即使高速缓冲存储器中构成一个组的所有块都填充数据,也可以在数据传输中使用高速缓冲存储器中的另一个组中的空块。相反,如果存储系统采用组关联的高速缓存架构并且在高速缓冲存储器中构成特定组的所有块都填充数据,则从主机朝向高速缓冲存储器的数据传输可能会中断,直到该特定组中所包括的任何一个块中储存的数据被移除为止。这可能导致存储系统性能下降。



技术实现要素:

根据本公开的实施例,一种存储系统包括主机控制器,所述主机控制器包括主机队列,其中主机队列被配置为储存从主机接收到的主机数据,并且其中,主机数据包括命令。所述存储系统还包括高速缓存系统,其包括高速缓冲存储器和高速缓存控制器,其中高速缓存控制器被配置为控制高速缓冲存储器的操作,并且其中,高速缓冲存储器包括多个组。所述高速缓存控制器还被配置为向主机控制器传送与多个组中的主机数据中的第一主机数据要被传送至的第一组有关的第一状态信息。主机控制器被配置为从高速缓存控制器接收第一状态信息,并基于第一状态信息来确定是否将储存在主机队列中的第一主机数据传送给高速缓存系统。

根据本公开的另一实施例,一种存储系统,包括主机、存储器以及耦接在主机与存储器之间以控制存储器的操作的存储器控制器。所述存储器控制器包括:主机队列,其被配置为储存包括从主机输出的命令的主机数据;主机队列管理逻辑单元,其被配置为控制用于传送主机队列中所储存的主机数据的操作;以及高速缓存系统,其包括具有多个组的高速缓冲存储器和控制高速缓冲存储器的操作的高速缓存控制器。高速缓存控制器向主机队列管理逻辑单元传送与多个组之中的主机数据要被传送至的特定组有关的状态信息。主机队列管理逻辑单元从高速缓存控制器接收所述状态信息,以确定是否把储存在主机队列中的主机数据传送给高速缓存系统。

根据本公开的另一实施例,一种用于控制存储系统中的高速缓存操作的方法,所述存储系统包括:主机队列,其被配置为储存包括从主机输出的命令的主机数据;和高速缓冲存储器,其包括多个组。具有组关联高速缓存架构的所述高速缓冲存储器还包括多个路,其中多个路中的每个路均包括多个块,其中多个组中的每个组均包括来自每个路中的单个块。所述方法包括:提供与构成高速缓冲存储器的多个组之中的主机数据要被传送至的特定组有关的状态信息,以及根据所述状态信息来确定储存在主机队列中的主机数据至高速缓冲存储器的传输或不传输。

附图说明

参考附图通过各种实施例说明了所公开技术的某些特征,其中:

图1是示出根据本公开的实施例的存储系统的框图。

图2是示出图1的存储系统中所包括的主机队列的示例的示意图。

图3是示出图1的存储系统中所包括的高速缓冲存储器的示例的示意图。

图4是示出在图1所示的存储系统的操作期间储存了主机数据的主机队列的示例的示意图。

图5是示出具有包括多个块的组的高速缓冲存储器的示例的示意图,在图1所示的存储系统的操作期间,所有这些块均被填充数据。

图6是示出根据本公开的另一实施例的存储系统的框图。

图7是示出根据本公开的又一实施例的存储系统的框图。

图8是示出图7的存储系统中所包括的高速缓存组状态列表的示例的示意图。

图9和图10是示出在图7所示的存储系统的操作期间产生了组已满信号的情况下高速缓冲存储器的状态变化的示意图。

图11是示出在图7所示的存储系统的操作期间产生了组已满信号的情况下高速缓存组状态列表的状态变化的示意图。

图12和图13是示出在图7中所示的存储系统的操作期间产生了组可用信号的情况下高速缓冲存储器的状态变化的示意图。

图14是示出在图7中所示的存储系统的操作期间产生了组可用信号的情况下高速缓存组状态列表的状态变化的示意图。

图15是示出在图7所示的存储系统的操作期间处理主机数据的过程的流程图。

图16是示出根据本公开的又一实施例的存储系统的框图。

图17是示出根据本公开的又一实施例的存储系统的框图。

图18是示出根据本公开的再一实施例的存储系统的框图。

具体实施方式

在以下的实施例描述中,将理解的是,术语“第一”和“第二”旨在区分相似的元件,而不是用来暗示元件的特定数量或顺序。另外,当元件被称为位于另一元件“上”、“上方”、“以上”、“下”或“下方”时,其旨在表示相对位置关系,而不用于对该元件直接接触另一元件或者在它们之间存在至少一个中间元件的特定情况进行限制。因此,在本文中使用的诸如“在...上”、“在...上方”、“在...以上”、“在...下”、“在...下方”、“在...以下”等术语仅是出于描述特定实施例的目的,而不是旨在限制本公开的范围。此外,当一个元件被称为“连接”或“耦接”到另一元件时,该元件可以直接地电或机械地连接或耦接到另一元件,或者可以通过取代它们之间的另一元件而形成连接关系或耦接关系。

各个实施例针对具有高速缓存系统的存储系统以及控制该存储系统中的高速缓存操作的方法。

图1是示出根据本公开的实施例的存储系统100的框图。参考图1,存储系统100可以被配置为包括主机、主机控制器110、高速缓存系统120和存储器。主机控制器110可以从主机接收主机数据,并且可以将主机数据传送给高速缓存系统120。主机控制器110可以包括主机队列112,并且高速缓存系统120可以包括高速缓冲存储器122和高速缓存控制器124。从主机输出的主机数据可以被储存到主机队列112中。在一个实施例中,主机数据可以包括用于执行存储器的写入操作的写入命令、写入数据以及写入数据被写入的高速缓冲存储器122中的组地址。在这种情况下,组地址可以包括与写入数据被写入的存储器的地址有关的信息。另外,主机数据可以包括用于执行存储器的读取操作的读取命令以及其中储存有读取数据的高速缓冲存储器122中的组地址。在这种情况下,组地址可以包括与其中储存有读取数据的存储器的地址有关的信息。主机队列112可以具有多个储存元件。主机队列112的多个储存元件中的每个储存元件可以储存一个单位的主机数据。主机控制器110可以把从主机顺序输出的主机数据以与从主机输出的顺序相同的顺序储存到主机队列112的多个储存元件中的相应储存元件中。在主机数据传输模式下,如果主机队列112中的所有储存元件都被填充主机数据,则主机控制器110可以将主机数据以与被储存到主机队列112中的顺序相同顺序传送给高速缓存系统120。

如上所述,高速缓存系统120可以被配置为包括高速缓冲存储器122和高速缓存控制器124。高速缓存控制器124可以控制高速缓冲存储器122的操作。具体地,高速缓存控制器124可以响应于从主机输出的写入请求来控制用于把写入数据储存到高速缓冲存储器122中的操作以及用于把所储存的写入数据传送给存储器的操作。另外,高速缓存控制器124可以响应于从主机输出的读取请求来控制用于把从存储器输出的读取数据储存到高速缓冲存储器122中的操作以及用于把所储存的读取数据传送给主机的操作。高速缓存控制器124可以与主机控制器110通信以控制高速缓冲存储器122的操作。

在存储系统100中,在主机数据传输模式下,主机控制器110可以向高速缓存系统120的高速缓存控制器124传送请求信号。请求信号可以包括与当前待命的主机数据要被传送的地址有关的信息。高速缓存控制器124可以响应于请求信号来辨别针对高速缓冲存储器122中的与根据高速缓冲存储器122的状态所传送的地址信息相对应的高速缓冲储存区域的高速缓存操作是否可用,并且可以根据辨别结果而将继续进行信号与保持信号中的一个传送给主机控制器110。如果针对高速缓冲存储器122的高速缓存操作可用,则可以产生继续进行信号,而如果针对高速缓冲存储器122的高速缓存操作不可用,则可以产生保持信号。

主机控制器110可以响应于从高速缓存系统120的高速缓存控制器124输出的继续进行信号或保持信号,来向高速缓存控制器124传送主机数据或者不向其传送主机数据。如果从高速缓存控制器124输出继续进行信号,则主机控制器110可以将主机队列112中所储存的主机数据之中的当前待命的主机数据传送给高速缓存控制器124。如果保持信号是从高速缓存控制器124输出的,则主机控制器110可以将当前待命的主机数据连续地置于待命状态。

图2是示出图1的存储系统100中所包括的主机队列112的示例的示意图。参考图2,主机队列112可以具有多个队列储存元件,例如,四个队列储存元件(即,第一至第四队列储存元件queue_storage-0、queue_storage-1、queue_storage-2、queue_storage-3)。第一至第四队列储存元件queue_storage-0、queue_storage-1、queue_storage-2、queue_storage-3中的每个储存元件可以具有储存区域,在该储存区域中相应地储存命令、组地址和构成一组主机数据的数据。所述命令可以包括读取命令或写入命令。所述组地址可以包括与写入数据被写入或读取数据被储存的存储器的地址有关的信息。在一个实施例中,如果主机首次输出主机数据,则该主机数据可以首先被储存到第一队列储存元件queue_storage-0中。第二次从主机输出的主机数据可以被储存到第二队列储存元件queue_storage-1中。类似地,第三次从主机输出的主机数据可以被储存到第三队列储存元件queue_storage-2中,并且第四次从主机输出的主机数据可以被储存到第四队列储存元件queue_storage-3中。如果第一至第四队列储存元件queue_storage-0、queue_storage-1、queue_storage-2和queue_storage-3全部都被填充主机数据,则主机控制器110可以以主机数据传输模式操作。

图3是示出图1的存储系统100中所包括的高速缓冲存储器122的示例的示意图。参考图3,高速缓冲存储器122可以被配置为具有组关联高速缓存架构。具体地说,高速缓冲存储器122可以具有多个路,例如四个路(即,第一路至第四路way-0、way-1、way-2和way-3)。第一路至第四路way-0、way-1、way-2和way-3中的每个路都可以具有多个块,例如128个块(即,第一块至第一百二十八块)。有效位、标记位和数据可以被储存在第一块至第一百二十八块中的每一个块中。尽管未在附图中示出,但是每个块还可以储存用于通知或告知脏线(dirtyline)的存在的脏位。在way-0、way-1、way-2和way-3中的每个路中的第一块至第128块中的任何一个块都可以属于一个组。例如,在第一路至第四路way-0、way-1、way-2和way-3中的第一块可以构成第一组set_0,而在第一路至第四路way-0、way-1、way-2和way-3中的第二块可以构成第二组set_1。类似地,在第一路至第四路way-0、way-1、way-2和way-3中的第128块可以构成第128组set_127。所述组可以被称为高速缓存行或索引。

图4是示出在图1所示的存储系统100的操作期间储存了主机数据的主机队列112的示例的示意图。图5是示出具有包括多个块的组set_0-set_127的高速缓冲存储器122的示例的示意图,所述多个块在图1所示的存储系统100的操作期间都被填充数据。首先,如图4所示,作为第一命令的第一写入命令cmd-0(写入)、与第一组set=0的地址相对应的第一组地址set_addr_0以及第一写入数据data-0可以被储存在第一队列储存元件queue_storage-0中。另外,作为第二命令的第二写入命令cmd-1(写入)、与第二组set=1的地址相对应的第二组地址set_addr_1以及第二写入数据data-1可以被储存在第二队列储存元件queue_storage-1中。此外,作为第三命令的第三写入命令cmd-2(写入)、与第三组set=2的地址相对应的第三组地址set_addr_2以及第三写入数据data-2可以被储存在第三队列储存元件queue_storage-2中。而且,作为第四命令的第四写入命令cmd-3(写入)、与第四组set=3的地址相对应的第四组地址set_addr_3以及第四写入数据data-3可以被储存在第四队列储存元件queue_storage-3中。

接下来,如图5所示,就高速缓冲存储器122的第一组set=0而言,仅第一路way-0中的第一块可以被填充数据,而第二路至第四路way-1、way-2和way-3中的所有第一块可以为空而没有数据。就高速缓冲存储器122的第二组set=1而言,第一路至第四路way-0、way-1、way-2和way-3中的所有第二块均可以被填充数据。就高速缓冲存储器122的第三组set=2而言,第一路至第四路way-0、way-1、way-2和way-3中的所有第三块均可以为空而没有数据。就高速缓冲存储器122的第四组set=3而言,仅第一路way-0中的第四块为空,而第二路至第四路way-1、way-2和way-3中的所有第四块均可以被填充数据。

在以下实施例中,针对构成高速缓冲存储器122的组中的任何一组的高速缓存操作可用的状态可以称为高速缓存可用状态。高速缓存可用状态可以表示一个组中的所有块未被填充数据的状态。相反,针对构成高速缓冲存储器122的组中的任何一组的高速缓存操作不可用的状态可以称为高速缓存已满状态。高速缓存已满状态可以表示一个组中的所有块被填充数据的状态。然而,以上假设可以仅仅是本公开的示例。即,针对构成高速缓冲存储器122的组中的任何一组的高速缓存操作的可用性可以根据实施例而被定义为不同。

参考图1、图4和图5,在主机数据传输模式下,储存在第一至第四队列储存元件queue_storage-0、queue_storage-1、queue_storage-2、queue_storage-3中的主机数据可以被顺序地传送到高速缓冲存储器122。然而,在常规的存储系统的情况下,因为在第一组至第四组set=0、set=1、set=2和set=3之中由第二队列储存元件queue_storage-1分配的第二组(set=1)中的所有块已经被填充数据从而提供组已满状态,所以储存在主机队列112中的所有主机数据都未被传送给高速缓存系统120。相反,根据本实施例,主机控制器110可以向高速缓存系统120的高速缓存控制器124传送包括储存在第一队列储存元件queue_storage-0中的第一组地址set_addr_0的请求信号,该第一组地址set_addr_0是在第一至第四队列储存元件queue_storage-0、queue_storage-1、queue_storage-2和queue_storage-3中所储存的主机数据之中被首先传送的。高速缓存控制器124可以基于从主机控制器110传送到高速缓存控制器124的第一组地址set_addr_0来识别高速缓冲存储器122中的第一组set=0的状态。如图5所示,因为在第一组set=0的块之中属于第二路至第四路way-1、way-2和way-3的所有块都是空的,所以高速缓存控制器124可以向主机控制器110传送指示针对高速缓冲存储器122的第一组set=0的高速缓存操作可用的继续进行信号。主机控制器110可以从高速缓存控制器124接收继续进行信号,以通过缓存控制器124把储存在第一队列储存元件queue_storage-0中的第一主机数据储存到属于高速缓冲存储器122的第一组set=0中的块之中的第二路至第四路way-1、way-2和way-3中的任一路的第一块(空块)中。可以根据包括在主机数据(即,第一主机数据)中的与存储器的地址有关的信息来选择储存第一主机数据的路。

在第一主机数据被传送给高速缓冲存储器122之后,主机控制器110可以向高速缓存系统120的高速缓存控制器124传送包括储存在第二队列储存元件queue_storage-1中的第二组地址set_addr_1的请求信号。高速缓存控制器124可以基于从主机控制器110传送到高速缓存控制器124的第二组地址set_addr_1来识别高速缓冲存储器122中第二组set=1的状态。如图5所示,因为在第二组set=1的块之中属于所有第一路至第四路way-0、way-1、way-2和way-3的所有块都被填充数据从而提供组已满状态,所以高速缓存控制器124可以向主机控制器110传送用于保持针对高速缓冲存储器122的第二组set=1的高速缓存操作的保持信号。主机控制器110可以从高速缓存控制器124接收保持信号以中断针对第二队列储存元件queue_storage-1中所储存的第二主机数据的传输操作。

如上所述,根据实施例的存储系统100可以向高速缓冲存储器122传送主机数据,直到高速缓冲存储器122中所包括的组(当前待命的主机数据的一部分被传送到该组中)被验证为具有组已满状态为止。

图6是示出根据本公开的另一实施例的存储系统200的框图。参考图6,存储系统200可以被配置为包括主机、主机控制器210、高速缓存系统220和存储器。主机控制器210可以从主机接收主机数据,并且可以将主机数据传送给高速缓存系统220。主机控制器210可以包括主机队列212,并且高速缓存系统220可以包括高速缓冲存储器222和高速缓存控制器224。从主机输出的主机数据可以被储存到主机队列212中。在一个实施例中,主机数据可以包括用于执行存储器的写入操作的写入命令、写入数据以及写入数据被写入的高速缓冲存储器222中的组地址。在这种情况下,组地址可以包括与写入数据被写入的存储器的地址有关的信息。另外,主机数据可以包括用于执行存储器的读取操作的读取命令、以及其中储存有读取数据的高速缓冲存储器222中的组地址。在这种情况下,组地址可以包括与其中储存有读取数据的存储器的地址有关的信息。主机队列212可以具有多个储存元件。主机队列212的多个储存元件中的每个储存元件可以储存一个单位的主机数据。主机控制器210可以将从主机顺序输出的主机数据以与从主机输出的顺序相同的顺序储存到主机队列212的多个储存元件中的相应储存元件中。在主机数据传输模式下,如果主机队列212中的所有储存元件都被填充主机数据,则主机控制器210可以将主机数据以与被储存到主机队列212中的顺序相同的顺序传送给高速缓存系统220。主机队列212可以具有与参考图2描述的配置相同的配置。

如上所述,高速缓存系统220可以被配置为包括高速缓冲存储器222和高速缓存控制器224。高速缓存控制器224可以控制高速缓冲存储器222的操作。具体地,高速缓存控制器224可以响应于从主机输出的写入请求来控制用于将写入数据储存到高速缓冲存储器222中的操作以及用于将所储存的写入数据传送给存储器的操作。另外,高速缓存控制器224可以响应于从主机输出的读取请求来控制用于将从存储器输出的读取数据储存到高速缓冲存储器222中的操作以及用于将所储存的读取数据传送给主机的操作。高速缓存控制器224可以与主机控制器210通信以控制高速缓冲存储器222的操作。高速缓冲存储器222可以具有与参考图3所描述的配置相同的配置。

在存储系统200中,高速缓存控制器224可以向主机控制器210传送多个已满标志信号(例如,第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1))。在一个实施例中,可以通过设置在主机控制器210与高速缓存系统220之间的第一至第n传输线来传送第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)。在一个实施例中,可以根据从主机控制器210输出的请求来传送第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)。在一个实施例中,可以周期性地传送第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)。第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的每一个可以由比特位组成,该比特位的逻辑电平指示构成高速缓存系统220的高速缓冲存储器222的多个组中的任何一组的状态,例如,该比特位的逻辑电平指示对应的组是具有组已满状态还是组可用状态。例如,如果第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的特定已满标志信号具有逻辑电平“1”,则在构成高速缓冲存储器222的多个组之中与该特定已满标志信号相对应的特定组可以具有组已满状态,这意味着针对该特定组的高速缓存操作不可用。相反,如果第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的特定已满标志信号具有逻辑电平“0”,则在构成高速缓冲存储器222的多个组之中与该特定已满标志信号相对应的特定组可以具有组可用状态,这意味着针对该特定组的高速缓存操作可用。

第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)的数量“n”可以等于构成高速缓存系统220的高速缓冲存储器222的组的数量。第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)可以分别对应于构成高速缓冲存储器222的组。例如,第一已满标志信号full_flag(0)可以表示针对高速缓冲存储器222的第一组set=0的高速缓存操作的可用或不可用,并且第二已满标志信号full_flag(1)可以表示针对高速缓冲存储器222的第二组set=1的高速缓存操作的可用或不可用。类似地,第n已满标志信号full_flag(n-1)可以表示针对高速缓冲存储器222的第n组set=(n-1)的高速缓存操作的可用或不可用。

主机控制器210可以根据第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)的逻辑电平来向高速缓存控制器224传送主机数据或者不向其传送主机数据。例如,在要被传送到高速缓冲存储器222的第一组set=0的主机数据处于待命的情况下,如果与高速缓冲存储器222的第一组set=0相对应的第一已满标志信号full_flag(0)具有逻辑电平“1”,则主机控制器210可以不向高速缓存系统220传送待命的主机数据。相反,如果与高速缓冲存储器222的第一组set=0相对应的第一已满标志信号full_flag(0)具有逻辑电平“0”,则主机控制器210可以将待命的主机数据传送给高速缓存系统220,并且可以确定下一主机数据的传输或不传输。

图7是示出根据本公开的又一实施例的存储系统300的框图,并且图8是示出图7的存储系统300中所包括的高速缓存组状态列表的示例的示意图。首先,参考图7,存储系统300可以被配置为包括主机、主机控制器310、高速缓存系统320和存储器。主机控制器310可以从主机接收主机数据,并且可以将主机数据传送给高速缓存系统320。主机控制器310可以包括主机队列312和高速缓存组状态列表314,并且高速缓存系统320可以包括高速缓冲存储器322和高速缓存控制器324。从主机输出的主机数据可以被储存到主机队列312中。在一个实施例中,主机数据可以包括用于执行存储器的写入操作的写入命令、写入数据以及写入数据被写入的高速缓冲存储器322中的组地址。在这种情况下,组地址可以包括与写入数据被写入的存储器的地址有关的信息。另外,主机数据可以包括用于执行存储器的读取操作的读取命令以及在其中储存有读取数据的高速缓冲存储器322中的组地址。在这种情况下,组地址可以包括与其中储存有读取数据的存储器的地址有关的信息。主机队列312可以具有多个储存元件。主机队列312的多个储存元件中的每个储存元件可以储存一个单位的主机数据。主机控制器310可以将从主机顺序输出的主机数据以与从主机输出的顺序相同的顺序储存到主机队列312的多个储存元件中的相应储存元件中。在主机数据传输模式下,如果主机队列312中的所有储存元件都填充主机数据,则主机控制器310可以将主机数据以与被储存到主机队列312中的顺序相同的顺序传送给高速缓存系统320。主机队列312可以具有与参考图2描述的配置相同的配置。

高速缓存组状态列表314可以具有多个储存元件,这些储存元件储存包括与构成高速缓冲存储器322的组的状态有关的信息的数据。如图8所述,高速缓存组状态列表314可以具有其中储存有多个组地址的第一储存区域和其中储存有状态位的第二储存区域。与构成高速缓冲存储器322的组的地址相对应的组地址(例如,第一至第128组地址set_addr_0、…和set_addr_127)可以相应地被储存在第一储存区域中。与指示高速缓冲存储器322的组(其由组地址来指定)的状态的状态位有关的信息可以相应地被储存在第二区域中。与这些组的状态位有关的信息可以具有二进制数,例如逻辑电平“0”或逻辑电平“1”。例如,如果针对由组地址指定的高速缓冲存储器322的特定组的高速缓存操作不可用,则该特定组的状态位可以具有逻辑电平“0”。相反,如果针对由组地址指定的高速缓冲存储器322的特定组的高速缓存操作可用,则该特定组的状态位可以具有逻辑电平“1”。

主机控制器310可以根据储存在高速缓存组状态列表314中的构成高速缓冲存储器322的组的状态位的逻辑电平来向高速缓存控制器324传送主机数据或者不向其传送主机数据。在一个实施例中,如果当前待命的主机数据被传送至的特定组的状态位具有逻辑电平“1”,则主机控制器310可以中断当前待命的主机数据的传输,并且可以确定下一主机数据的传输或不传输。相反,如果当前待命的主机数据被传送至的特定组的状态位具有逻辑电平“0”,则主机控制器310可以将当前待命的主机数据传送给高速缓冲存储器322。主机控制器310可以改变被储存在高速缓存组状态列表314中的状态位的值(即,逻辑电平)。状态位的值可以根据从高速缓存控制器324传送到主机控制器310的组已满信号set_full和组可用信号set_available而改变。除组已满信号set_full和组可用信号set_available之外,主机控制器310还可以从高速缓存控制器324接收组地址set_addr。组地址set_addr可以与组已满信号set_full或组可用信号set_available一起传送。在下文中将详细描述根据组已满信号set_full或组可用信号set_available的传输来改变高速缓存组状态列表314的操作。

主机控制器310可以从高速缓存控制器324接收全局已满信号global_full。在一个实施例中,全局已满信号global_full可以通知构成高速缓冲存储器322的组中的至少一组是否具有组已满状态。例如,如果全局已满信号global_full具有逻辑电平“1”,则构成高速缓冲存储器322的组中的至少一组可以具有组已满状态。相反,如果全局已满信号global_full具有逻辑电平“0”,则构成高速缓冲存储器322的组中的任何一组都不会具有组已满状态。即,如果全局已满信号global_full具有逻辑电平“0”,则针对构成高速缓冲存储器的所有组的高速缓存操作可以是可用的。主机控制器310可以从高速缓存控制器324接收全局已满信号global_full,以辨别在主机数据被传送时是否检查了高速缓存组状态列表314。例如,如果具有逻辑电平“1”的全局已满信号global_full被传送到主机控制器310,则主机控制器310可以在主机数据被传送时检查高速缓存组状态列表314中所储存的状态位的逻辑电平,并且然后可以确定主机数据的传输或不传输。相反,如果具有逻辑电平“0”的全局已满信号global_full被传送到主机控制器310,则主机控制器310可以立即将主机数据传送给高速缓存控制器324,而无需在主机数据被传送时检查高速缓存组状态列表314中所储存的状态位的逻辑电平。

如上所述,高速缓存系统320可以被配置为包括高速缓冲存储器322和高速缓存控制器324。高速缓冲存储器322可以具有与参考图3描述的配置相同的配置。高速缓存控制器324可以检查构成高速缓冲存储器322的组的状态,以将全局已满信号global_full传送给主机控制器310。在一个实施例中,在检查了高速缓冲存储器322中包括的所有组的状态之后,高速缓存控制器324可以根据这些组的状态来将“0”或“1”的值(即,逻辑电平)给予状态位。可以将值“1”分配给具有组已满状态的组,并且可以将值“0”分配给具有组未满状态(例如,组可用状态)的组。随后,在对状态位的给予值执行逻辑“或”运算之后,该逻辑“或”运算的结果可以作为全局已满信号global_full被传送给主机控制器310。因此,如果构成高速缓冲存储器322的组中的至少一组具有组已满状态,则状态位的给予值中的至少一个也可以具有值“1”,并且全局已满信号global_full可以以值“1”被传送。在一个实施例中,可以将全局已满信号global_full周期性地从高速缓存控制器324传送到主机控制器310。可替代地,可以根据主机控制器310的请求将全局已满信号global_full从高速缓存控制器324传送到主机控制器310。

图9和图10是示出在图7所示的存储系统300的操作期间产生了组已满信号set_full的情况下高速缓冲存储器322的状态变化的示意图,并且图11是示出在图7所示的存储系统300的操作期间产生了组已满信号set_full的情况下高速缓存组状态列表314的状态变化的示意图。如图9所示,在高速缓冲存储器322的第一组set=0被配置为具有带有四个路(即,第一路至第四路way-0、way-1、way-2和way-3)以及一百二十八个组(即第一组至第128组set=0、…和set=127)的组关联高速缓存架构的情况下,仅属于第一路way-0的第一块可以被填充数据,而属于第二路至第四路way-1、way-2和way-3的第一块可以为空而没有数据。在高速缓冲存储器322的第二组set=1的情况下,仅第三路way-2中的第二块为空而没有数据,而其余路(即,第一路way-0、第二路way-1和第四路way-3)中的所有第二块可以被填充数据。在高速缓冲存储器322的第三组set=2的情况下,第一路至第四路way-0、way-1、way-2和way-3中的所有第三块均可以为空而没有数据。在高速缓冲存储器322的第四组set=3的情况下,仅第一路way-0中的第四块可以为空而没有数据,而第二路至第四路way-1、way-2和way-3中的所有第四块均可以被填充数据。在高速缓冲存储器322的其余组(即,第五组至第128组set=4、…和set=127)的情况下,可以假定第一路至第四路way-0、way-1、way-2和way-3中的所有块为空而没有数据。

在第二组set=1的情况下,所有块都没有被填充数据从而提供具有组可用状态的第二组set=1。因此,如在图11的左侧部分所示,可以将值“0”指定作为由第二组地址set_addr_1指定的第二组set=1的状态位的逻辑电平。在这种状态下,如图10所示,如果主机数据被传送到第二组set=1并且高速缓存操作被执行以将主机数据储存到第三路way-2的第二块中,则第二组set=1的状态可以变为组已满状态。在这种情况下,高速缓存控制器324可以将组已满信号set_full和第二组地址set_addr_1传送给主机控制器310。结果,如图11的右侧部分所示,先前被指定作为第二组set=1(由第二组地址set_addr_1指定)的状态位的逻辑电平的值“0”可以变为值“1”。

图12和图13是示出在图7所示的存储系统300的操作期间产生了组可用信号set_available的情况下高速缓冲存储器322的状态改变的示意图,而图14是示出在图7所示的存储系统300的操作期间产生了组可用信号set_available的情况下高速缓存组状态列表314的状态变化的示意图。如图12所示,在高速缓冲存储器322的第一组set=0被配置为具有带有四个路(即,第一路至第四路way-0、way-1、way-2和way-3)和128个组(即,第一组至第128组set=0、…和set=127)的组关联高速缓存架构的情况下,仅属于第一路way-0的第一块可以被填充数据,而属于第二路至第四路way-1、way-2和way-3的第一块可以为空而没有数据。在高速缓冲存储器322的第二组set=1的情况下,第一路至第四路way-0、way-1、way-2和way-3中的所有第二块均可以被填充数据。在高速缓冲存储器322的第三组set=2的情况下,第一路至第四路way-0、way-1、way-2和way-3中的所有第三块均可以为空而没有数据。在高速缓冲存储器322的第四组set=3的情况下,仅第一路way-0中的第四块可以为空而没有数据,而第二路至第四路way-1、way-2和way-3中的所有第四块均可以被填充数据。在高速缓冲存储器322的其余组(即第五组至第128组set=4、…和set=127)的情况下,可以假定第一路至第四路way-0、way-1、way-2和way-3中的所有块均为空而没有数据。

在第二组set=1的情况下,所有块都被填充数据从而提供具有组已满状态的第二组set=1。因此,如图14的左侧部分所示,可以将值“1”指定作为由第二组地址set_addr_1指定的第二组set=1的状态位的逻辑电平。在这种状态下,如图13所示,如果第一路way-0中的第二块可用,则第二组set=1的状态可以变为通知第二组set=1中的至少一个块可用的组可用状态。例如,如果储存在第一路way-0的第二块中的数据被传送并写入存储器,则第一路way-0的第二块可以被认为具有可用状态。在这种情况下,高速缓存控制器324可以将组可用信号set_available和第二组地址set_addr_1传送给主机控制器310。结果,如图14的右侧部分所示,先前被指定作为第二组set=1(由第二组地址set_addr_1指定)的状态位的逻辑电平的值“1”可以变为值“0”。

图15是示出在图7所示的存储系统300的操作期间处理主机数据的过程的流程图。参考图7和图15,在步骤410处,主机控制器310可以分析储存在主机队列312中的主机数据。如参考图3所述,主机数据可以包括命令、组地址和/或数据,并且可以被储存到构成主机队列312的队列储存元件queue_storage-0、…和queue_storage-3中。在主机数据传输模式下,储存在主机队列312中的主机数据可以被传送到高速缓存控制器324,使得储存在第一队列储存元件queue_storage-0中的主机数据、储存在第二队列储存元件queue_storage-1中的主机数据、储存在第三队列储存元件queue_storage-2中的主机数据和储存在第四队列储存元件queue_storage-3中的主机数据被顺序地传送。在一个实施例中,可以根据主机的请求来设置主机数据传输模式,或者主机控制器310可以根据存储系统300的空闲状态独立地设置主机数据传输模式。在步骤410处,主机控制器310对主机数据进行分析可以包括识别从主机队列312顺序传送到高速缓存控制器324的主机数据的组地址。

在步骤420处,可以辨别从高速缓存控制器324输出的全局已满信号global_full是否被输入到主机控制器310。在一个实施例中,如果全局已满信号global_full是根据主机的请求而被传送到主机控制器310,则主机控制器310可以请求高速缓存控制器324在步骤420之前传送全局已满信号global_full。在一个实施例中,如果全局已满信号global_full是被周期性地传送到主机控制器310,则主机控制器310可以辨别全局已满信号global_full是否被预先输入到主机控制器310。如果在步骤420处全局已满信号global_full被输入到主机控制器310(即,在步骤420处高速缓冲存储器322中包括的组中的至少一组具有组已满状态),则主机控制器310可以在步骤430处检查高速缓存组状态列表314。相反,如果在步骤420处全局已满信号global_full未被输入到主机控制器310(即,在步骤420处高速缓冲存储器322中包括的组中任何一组都不具有组已满状态),则在步骤460处主机控制器310可以将主机数据传送给高速缓存系统320。

在步骤430处检查高速缓存组状态列表314之后,主机控制器310可以辨别高速缓冲存储器322的特定组(第一主机数据被传送到该特定组)是否具有组已满状态(参见步骤440)。具体地,如参考图8所描述的,在高速缓存组状态列表314中储存的组地址之中,主机控制器310可以读取第一主机数据被传送至的第一组的地址(即,第一组地址set_addr_0)的状态位的值。如果在步骤440处该组地址的状态位具有值“0”(即,第一组不具有组已满状态),则在步骤460处主机控制器310可以将主机数据传送给高速缓存系统320。如果在步骤440处该组地址的状态位具有值“1”(即,第一组具有组已满状态),则在步骤450处主机控制器310可以分析下一主机数据,例如,第二主机数据。可以用与在步骤410处分析第一主机数据的过程相同的方式来执行在步骤450处分析第二主机数据的过程。在步骤450处分析第二主机数据之后,在步骤430处主机控制器310可以检查高速缓存组状态列表314。

在步骤460处的主机数据被传送给高速缓存系统320中的高速缓存控制器324之后,在步骤470处,高速缓存控制器324可以辨别所传送的主机数据是否为主机队列312中所储存的主机数据之中的最终主机数据。如果在步骤470处所传送的主机数据被辨别为最终主机数据,则主机数据传输模式可以终止。如果在步骤470处所传送的主机数据不是最终主机数据,则可以再次执行步骤450的过程。

图16是示出根据本公开的又一实施例的存储系统500的框图。参考图16,存储系统500可以被配置为包括主机、存储器控制器510和存储器。存储器控制器510可以基于主机的请求或储存在存储器控制器510中的算法来控制存储系统500的总体操作,包括用于访问存储器的操作。存储器控制器510可以包括主机队列512、主机队列管理逻辑单元514和高速缓存系统516。主机队列512可以被实现为具有与参考图2描述的主机队列112相同的配置。高速缓存系统516可以包括高速缓冲存储器516-2和高速缓存控制器516-4。高速缓冲存储器516-2可以被实现为具有与参考图3描述的高速缓冲存储器122相同的配置。主机队列管理逻辑单元514可以管理用于传送储存在主机队列512中的主机数据的操作,并且可以向高速缓存控制器516-4输出请求信号以管理用于传送储存在主机队列512中的主机数据的操作。请求信号可以包括与当前待命的主机数据的地址有关的信息。

高速缓存控制器516-4可以从主机队列管理逻辑单元514接收请求信号,从而在构成高速缓冲存储器516-2的组之中根据主机数据被传送到的组(下文称为目标组)的状态把继续进行信号与保持信号中的任何一个传送给主机队列管理逻辑单元514。如果针对高速缓冲存储器516-2的目标组的高速缓存操作可用,则可以产生继续进行信号,而如果针对高速缓冲存储器516-2的目标组的高速缓存操作不可用,则可以产生保持信号。主机队列管理逻辑单元514可以从高速缓存控制器516-4接收继续进行信号或保持信号,从而控制主机队列512,以使得主机数据被传送给高速缓存控制器516-4或者主机数据不被传送给高速缓存控制器516-4。具体地,如果继续进行信号从高速缓存控制器516-4被传送到主机队列管理逻辑单元514,则主机队列管理逻辑单元514可以控制主机队列512,使得主机队列512中当前待命的主机数据被传送给高速缓存控制器516-4。如果保持信号从高速缓存控制器516-4传送到主机队列管理逻辑单元514,则主机队列管理逻辑单元514可以控制主机队列512,使得主机队列512保持当前待命的主机数据。

图17是示出根据本公开的又一实施例的存储系统600的框图。参考图17,存储系统600可以被配置为包括主机、存储器控制器610和存储器。存储器控制器610可以基于主机的请求或储存在存储器控制器610中的算法来控制存储系统600的总体操作,包括用于访问存储器的操作。存储器控制器610可以包括主机队列612、主机队列管理逻辑单元614和高速缓存系统616。主机队列612可以被实现为具有与参考图2描述的主机队列112相同的配置。高速缓存系统616可以包括高速缓冲存储器616-2和高速缓存控制器616-4。高速缓冲存储器616-2可以被实现为具有与参考图3描述的高速缓冲存储器122相同的配置。

主机队列管理逻辑单元614可以管理用于传送储存在主机队列612中的主机数据的操作,并且可以从高速缓存控制器616-4接收多个已满标志信号(例如,第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1))以管理用于传送储存在主机队列612中的主机数据的操作。在一个实施例中,可以通过设置在高速缓存控制器616-4与主机队列管理逻辑单元614之间的第一至第n传输线来传送第一至第n已满标志信号full_flag(0)、full_flag(1)、...和full_flag(n-1)。在一个实施例中,可以根据主机队列管理逻辑单元614的请求来传送第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)。在一个实施例中,可以周期性地传送第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)。第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的每个信号可以由比特位组成,该比特位的逻辑电平指示构成高速缓存系统616的高速缓冲存储器616-2的多个组中的任何一组的状态,例如,该比特位的逻辑电平指示对应的组是具有组已满状态还是组可用状态。例如,如果第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的特定已满标志信号具有逻辑电平“1”,则在构成高速缓冲存储器616-2的多个组之中与该特定已满标志信号相对应的特定组可以具有组已满状态,这意味着针对该特定组的高速缓存操作不可用。相反,如果第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的特定信号具有逻辑电平“0”,则在构成高速缓冲存储器616-2的多个组之中与该特定已满标志信号相对应的特定组可以具有组可用状态,这意味着针对该特定组的缓存操作可用。

第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)的数量“n”可以等于构成高速缓存系统616的高速缓冲存储器616-2的组的数量。第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)可以分别对应于构成高速缓冲存储器616-2的组。例如,第一已满标志信号full_flag(0)可以表示针对高速缓冲存储器616-2的第一组set=0的高速缓存操作的可用或不可用,并且第二已满标志信号full_flag(1)可以表示针对高速缓冲存储器616-2的第二组set=1的高速缓存操作的可用或不可用。类似地,第n已满标志信号full_flag(n-1)可以表示针对高速缓冲存储器616-2的第n组set=(n-1)的高速缓存操作的可用或不可用。

主机队列管理逻辑单元614可以根据从高速缓存系统616的高速缓存控制器616-4输出的第一至第n已满标志信号full_flag(0)、full_flag(1)、…和full_flag(n-1)中的每一个的值来控制主机队列612,使得主机数据被传送给高速缓存控制器616-4或者不被传送给高速缓存控制器616-4。例如,在要被传送到高速缓冲存储器616-2的第一组set=0的主机数据处于待命的情况下,如果与高速缓冲存储器616-2中的第一组set=0相对应的第一已满标志信号full_flag(0)具有逻辑电平“1”,则主机队列管理逻辑单元614可以不把待命的主机数据传送给高速缓存系统616。相反,如果与高速缓冲存储器616-2中的第一组set=0相对应的第一已满标志信号full_flag(0)具有逻辑电平“0”,则主机队列管理逻辑单元614可以把待命的主机数据传送给高速缓存系统616,并且可以确定下一主机数据的传输或不传输。

图18示出了根据本公开的再一实施例的存储系统700。参考图18,存储系统700可以被配置为包括主机、存储器控制器710和存储器。存储器控制器710可以基于主机的请求或储存在存储器控制器710中的算法来控制存储系统700的总体操作,包括用于访问存储器的操作。存储器控制器710可以包括主机队列712、高速缓存组状态列表714、主机队列管理逻辑单元716和高速缓存系统718。主机队列712可以被实现为具有与参考图2描述的主机队列112相同的配置。高速缓存系统718可以包括高速缓冲存储器718-2和高速缓存控制器718-4。高速缓冲存储器718-2可以被实现为具有与参考图3描述的高速缓冲存储器122相同的配置。

高速缓存组状态列表714可以具有多个储存元件,这些储存元件储存包括与构成高速缓冲存储器718-2的组的状态有关的信息的数据。高速缓存组状态列表714可以被实现为具有与参考图8描述的高速缓存组状态列表314相同的配置。主机队列管理逻辑单元716可以根据构成高速缓冲存储器718-2的组的状态位的值(其被储存在高速缓存组状态列表714中)来确定主机队列712是否将把主机数据传送给高速缓存控制器718-4。在一个实施例中,如果当前待命的主机数据被传送至的特定组的状态位具有逻辑电平“1”,则主机队列管理逻辑单元716可以控制主机队列712,使得主机队列712中断当前待命的主机数据的传输,并可以确定下一主机数据的传输或不传输。相反,如果当前待命的主机数据被传送至的特定组的状态位具有逻辑电平“0”,则主机队列管理逻辑单元716可以控制主机队列712,使得主机队列712把当前待命的主机数据传送给高速缓冲存储器718-2。主机队列管理逻辑单元716可以改变高速缓存组状态列表714中所储存的状态位的值(即,逻辑电平)。可以根据从高速缓存控制器718-4输出的组已满信号set_full和组可用信号set_available来改变状态位的值。除了组已满信号set_full和组可用信号set_available之外,主机队列管理逻辑单元716还可以从高速缓存控制器718-4接收组地址set_addr。组地址set_addr可以与组已满信号set_full或组可用信号set_available一起传送。根据组已满信号set_full或组可用信号set_available的传输来改变高速缓存组状态列表714的操作可以与参考图9至图14所描述的相同,除了主机队列管理逻辑单元716具有主机控制器310的功能之外。

主机队列管理逻辑单元716可以从高速缓存控制器718-4接收全局已满信号global_full。在一个实施例中,全局已满信号global_full可以通知构成高速缓冲存储器718-2的组中的至少一组是否具有组已满状态。例如,如果全局已满信号global_full具有逻辑电平“1”,则构成高速缓冲存储器718-2的组中的至少一组可以具有组已满状态。相反,如果全局已满信号global_full具有逻辑电平“0”,则构成高速缓冲存储器718-2的组中的任何一组都不会具有组已满状态。即,如果全局已满信号global_full具有逻辑电平“0”,则针对构成高速缓冲存储器的所有组的高速缓存操作可以是可用的。主机队列管理逻辑单元716可以从高速缓存控制器718-4接收全局已满信号global_full,以辨别在主机数据被传送时是否检查高速缓存组状态列表714。例如,如果具有逻辑电平“1”的全局已满信号global_full被传送到主机队列管理逻辑单元716,则主机队列管理逻辑单元716可以在主机数据被传送时检查储存在高速缓存组状态列表714中的状态位的逻辑电平,并且然后可以确定主机数据的传输或不传输。相反,如果具有逻辑电平“0”的全局已满信号global_full被传送到主机队列管理逻辑单元716,则主机队列管理逻辑单元716可以在主机数据被传送时控制主机队列712,使得主机队列712立即把主机数据传送给高速缓存控制器718-4,而无需检查储存在高速缓存组状态列表714中的状态位的逻辑电平。

高速缓存系统718的高速缓存控制器718-4可以检查构成高速缓冲存储器718-2的组的状态,以向主机队列管理逻辑单元716传送全局已满信号global_full。在一个实施例中,在检查了包括在高速缓冲存储器718-2中的所有组的状态之后,高速缓存控制器718-4可以根据这些组的状态而将“0”或“1”的值(即,逻辑电平)给予状态位。可以将值“1”指定给具有组已满状态的组,并且可以将值“0”指定给具有组未满状态(例如,组可用状态)的组。随后,在针对状态位的给予值的逻辑“或”运算被执行之后,该逻辑“或”运算的结果可以作为全局已满信号global_full被传送给主机队列管理逻辑单元716。因此,如果构成高速缓冲存储器718-2的组中的至少一组具有组已满状态,则状态位的至少一个给予值也可以具有值“1”,并且全局已满信号global_full可以以值“1”被传送。在一个实施例中,全局已满信号global_full可以周期性地从高速缓存控制器718-4传送到主机队列管理逻辑单元716。可替代地,全局已满信号global_full可以根据主机队列管理逻辑单元716的请求从高速缓存控制器718-4传送到主机队列管理逻辑单元716。

出于说明性目的,以上已经公开了所公开技术的实施例。本领域普通技术人员将理解,各种修改、添加和替换是可能的。尽管该专利文件包含许多细节,但是这些细节不应解释为对任何发明或可要求保护的范围的限制,而应解释为针对可能特定于特定发明的特定实施例的特征的描述。在该专利文件中在不同实施例的语境中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的语境中描述的各种特征也可以在多个实施例中单独实施中或以任何合适的子组合来实施。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在某些情况下,可以从所要求保护的组合中删除一个或更多个特征,并且所要求保护的组合可以指示子组合或子组合的变体。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1