一种存储器、数据请求写入方法及控制器与流程

文档序号:21778980发布日期:2020-08-07 19:52阅读:143来源:国知局
一种存储器、数据请求写入方法及控制器与流程

本申请涉及通信技术领域,尤其涉及一种存储器、数据请求写入方法及控制器。



背景技术:

高速缓存(cache),一种是存在于中央处理器与内存之间、由静态存储芯片(sram)组成的存储器,cache可以从缓存内存中的部分数据,以供中央处理器使用,cache的容量比较小但存取速度接近于中央处理器的速度。其中,cache也可以用于图形处理器(graphicprocessingunit,gpu)与显存之间。

在程序运行的过程中,中央处理器和内存都需要频繁地与cache交换数据,因而,cache的访问速度极大地影响到整个系统的性能。

高速缓存在访问内存获取数据时,访问内存时间相对较长,在内存返回数据之前,高速缓存会进入阻塞状态,暂停响应处理器的数据请求,导致处理器停顿、处理速度下降。目前为了保证处理器的处理速度,会设置高速缓存缺失状态寄存器(missstatushandlingregister,mshr),记录高速缓存无法及时处理的数据请求,以保证高速缓存恢复工作状态后,能够继续响应来自处理器的数据请求。

而现有的mshr通常是由一系列mshr构成的,每个mshr具有一个或多个信息槽,其中,信息槽指的是mshr中的一段预设大小的存储空间,可以用于记录处理器发起的数据请求。但是目前每个mshr中用于存储数据请求中携带的数据的信息槽的数目较为固定,会导致mshr写入数据请求的方式不灵活、效率较低。



技术实现要素:

本申请提供一种存储器、数据请求写入方法及控制器,用以解决现有技术中mshr写入数据请求的方式不灵活、效率较低问题。

第一方面,本申请实施例提供了一种存储器,所述存储器包括:多个mshr分组以及与所述多个mshr分组连接的控制器,其中,每个mshr分组包括多个mshr;所述控制器可以接收第一数据请求,所述第一数据请求中携带有第一地址;之后,根据所述第一地址的第一部分确定所述多个mshr分组中的第一mshr分组;并确定所述第一mshr分组中的第一mshr没有空闲的存储空间,其中,所述第一mshr与所述第一地址中的第二部分对应;响应上述确定,所述控制器可以从所述第一mshr分组中选择第二mshr;将所述第一数据请求写入所述第二mshr中。

通过上述方法,在所述第一mshr分组可以包括多个mshr,用于记录所述第一数据请求,可以根据需要选择所述第二mshr,能够灵活、有序的将所述第一数据请求写入到所述存储器中。

在一种可能的实现方式中,所述控制器还可以用于接收第二数据请求,其中,所述第二数据请求携带有第二地址;根据所述第二地址的第一部分确定所述多个mshr分组中的第二mshr分组;确定所述第二mshr分组中没有与所述第二地址中的第二部分对应的mshr;之后,所述控制器可以响应上述确定,从所述第二mshr分组中选择第三mshr;将所述第二数据请求写入所述第三mshr中。

通过上述方法,在所述第二数据请求为首次请求的情况下,所述控制器可以便捷,快速的选取所述第三mshr来写入所述第二数据请求,使得所述存储器可以高效的写入数据请求。

在一种可能的实现方式中,所述第一mshr包括j个第一类存储空间和k个第二类存储空间,其中,所述第一类存储空间包括数据缓存空间,所述第二类存储空间不包括数据缓存空间,j和k为正整数。

通过上述方法,可以有效的节约所述存储器中的存储空间,也可以灵活的将所述数据请求中携带的数据保存在所述第一类存储空间或所述第二类存储空间中,进而可以保证写入数据请求的效率。

在一种可能的实现方式中,当所述第一数据请求是写请求时,所述控制器确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间,也就是说所述第一mshr不能写入所述第一数据请求,所述控制器从所述第一mshr分组中选择第二mshr时,所述控制器可以从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中包括空闲的所述第一类存储空间,所述第二mshr可以用于写入所述第一数据请求。

通过上述方法,通过是否有无存储空间确定第一mshr和所述第二mshr是否可用,使得所述控制器可以更加方便、快捷的确定能够用于写入所述第一数据请求的mshr。

在一种可能的实现方式中,当所述第一数据请求是读请求时,所述控制器确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间和所述第二类存储空间。

所述控制器从所述第一mshr分组中选择第二mshr时从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中至少包括空闲的所述第一类存储空间或所述第二类存储空间。

通过上述方法,对于不同类型的第一数据请求,所述控制器基于不同存储空间的类型,有针对性的确定所述第一mshr或所述第二mshr,能够使得写入数据请求的方法有序且高效。

在一种可能的实现方式中,所述控制器可以调整所述第一mshr中的所述第一类存储空间和所述第二类存储空间的数量。

通过上述方法,所述控制器可以根据具体需求,调整mshr中的所述第一类存储空间和所述第二类存储空间的数量,以保证可以将较多的数据请求写入到所述存储器中。

第二方面,本申请实施例还提供了一种数据请求写入方法,有益效果可以参见第一方面的描述,此处不再赘述。所述方法应用于控制器,所述控制器与多个mshr分组连接,每个mshr分组包括多个mshr,该方法包括,接收第一数据请求,所述第一数据请求中携带有第一地址;之后,根据所述第一地址的第一部分确定所述多个mshr分组中的第一mshr分组;确定所述第一mshr分组中的第一mshr没有空闲的存储空间,其中,所述第一mshr与所述第一地址中的第二部分对应;之后响应上述确定,从所述第一mshr分组中选择第二mshr;可以将所述第一数据请求写入所述第二mshr中。

在一种可能的实现方式中,接收第二数据请求,其中,所述第二数据请求携带有第二地址;之后,根据所述第二地址的第一部分确定所述多个mshr分组中的第二mshr分组;并确定所述第二mshr分组中没有与所述第二地址中的第二部分对应的mshr;响应上述确定,可以从所述第二mshr分组中选择第三mshr;将所述第二数据请求写入所述第三mshr中。

在一种可能的实现方式中,当所述第一数据请求是写请求时,确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间,其中,所述第一类存储空间包括数据缓存空间;之后,从所述第一mshr分组中选择第二mshr时,可以从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中包括空闲的所述第一类存储空间。

在一种可能的实现方式中,当所述第一数据请求是读请求时,确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间和所述第二类存储空间,第二类存储空间不包括数据缓存空间;

从所述第一mshr分组中选择第二mshr时,可以从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中至少包括空闲的所述第一类存储空间或所述第二类存储空间。

在一种可能的实现方式中,调整所述第一mshr中的所述第一类存储空间和所述第二类存储空间的数量。

第三方面,本申请实施例还提供了一种控制器,有益效果可以参见第一方面的描述此处不再赘述。该装置具有实现上述第二方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的实现方式中,所述装置的结构中包括接收单元、处理单元和写入单元,这些单元可以执行上述第二方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。

第四方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第五方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第六方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述各方面所述的方法。

附图说明

图1a为现有的一种数据缓存系统的结构示意图;

图1b~1c为现有的一种存储器的结构示意图;

图2为本申请提供的一种存储器的结构示意图;

图3为本申请提供的一种数据存储地址的构成示意图;

图4a~4b为本申请提供的一种存储器的结构示意图;

图5a~5b为本申请提供的一种存储器的结构示意图;

图6为本申请提供的一种存储器的结构示意图;

图7为本申请提供的一种存储器的结构示意图;

图8为本申请提供的第一数据请求的写入方法示意图;

图9为本申请提供的第二数据请求的写入方法示意图;

图10为本申请提供的第三数据请求的写入方法示意图;

图11为本申请提供的一种控制器的结构示意图。

具体实施方式

本申请提供一种存储器、数据请求写入方法及控制器,用以解决现有技术中mshr写入数据请求的方式不灵活、效率较低问题。

如图1a所示,为现有的一种数据缓存系统,其中所述数据缓存系统100中包括第一存储器101和cache102。

需要说明的是,这里所述第一存储器101指的是由控制器和多个mshr构成的存储器,其中每个mshr可以用于写入处理器103发送的数据请求。

所述数据缓存系统100可以从第二存储器104获取数据,进行缓存,还可以向处理器103提供数据,其中,所述第二存储器104可以是内存(memory)、显存、主存、动态随机存取存储器(dynamicrandomaccessmemory,dram)等存储器,所述处理器103可以是中央处理器(centralprocessingunit,cpu),也可以是图形处理器,所述处理器103从所述数据缓存系统获取数据的过程如下:

所述处理器103会发起数据请求,所述数据请求中携带有数据存储地址,所述数据存储地址为所述处理器103所请求的数据在第二存储器104中的存储地址,所述cache102在接收到所述数据请求后,会基于所述cache102数据存储地址与所述第二存储器104的数据存储地址之间的映射关系,确定所述数据请求是否命中,也就是确定所述数据请求所请求的数据是否存储在所述cache102中,由于所述cache102基于所述cache102数据存储地址与所述第二存储器104的数据存储地址之间的映射关系来存储数据的,如组相联方式,全相联方式;所述cache102可以确定所述数据请求中携带有数据存储地址是否可以匹配到所述cache102中的数据存储地址,若匹配成功,表示命中(hit),所述cache102向所述处理器103发送所述数据请求所请求的数据;否则,未命中(miss),所述cache102根据所述数据请求中携带有数据存储地址从所述外部存器获取所述数据请求所请求的数据(简称片外访存),并反馈给所述处理器103。

在所述cache102从所述外部存器获取所述数据请求所请求的数据的过程中,所述cache102是停止响应所述处理器103在这个过程中发起的任一数据请求的,这样会导致所述处理器103停顿,为了能够使所述cache102在片外访存之后,可以对所述处理器103在片外访存的过程中发起的数据请求进行处理,在所述数据缓存其中设置所述第一存储器101,记录数据请求。

所述第一存储器101记录的所述数据请求可以分为两类,一类为首次请求某一个数据存储地址上的数据的数据请求,也就是说,所述处理器103之前没有发送过携带有该数据存储地址的数据请求,此类数据请求的缺失类型为主缺失;另一类为后续请求该数据存储地址上的数据的数据请求,也就是说,所述处理器103之前已经发送过携带有该数据存储地址的数据请求,且所述cache102还未对之前携带有该数据存储地址的数据请求响应,此类后续发送的携带有该数据存储地址的数据请求的缺失类型为次缺失。

需要说明的是,在上述说明过程中,仅是以所述处理器103需要获取数据,也就是说数据请求为读请求,若所述处理器103需要将数据写入到第二存储器104中的某个数据存储地址处,也就是说数据请求为写请求,写请求中除携带所述数据存储地址外,还需要携带需要写入的数据,所述cache102对写请求的处理方式与对读请求的处理方式相似,例如,所述cache102在确定所述数据请求命中时,所述cache102会更新所述cache102本地保存的数据,将所述cache102中所述数据存储地址处的数据替换为所述数据请求中携带的数据,当所述cache102中所述数据存储地址处的数据需要去除,也即不存储所述数据存储地址处的数据,则会及时将数据更新到所述第二存储器104中;所述cache102在确定所述数据请求未命中时,则从所述第二存储器104获取数据,并存储到所述cache102本地,之后利用所述数据请求中携带的数据更新所述cache102从第二存储器104获取的数据。可以看出,所述cache102在处理写请求时,也存在片外访存的情况,此时所述cache102也会停止响应所述处理器103在这个过程中发起的任一数据请求。

需要说明的是,所述cache102中的数据存储地址是所述cache102在缓存所述第二存储器104中的数据时,所记录的该数据在外部存储中的地址,实质上,是所述第二存储器104的数据存储地址。

图1b~1c为一种常见的存储器结构示意图,如图1a中包括多个mshr,每个mshr包括有效位、块地址槽、一个信息槽。如图1b包括多个mshr,每个mshr包括有效位、块地址槽、多个信息槽。

而每个mshr中无论包括一个信息槽还是多个信息槽,当出现次缺失对应的mshr没有空闲的存储空间的情况时,该次缺失将无法被处理,会导致存储器发生阻塞,降低了运行的效率。且在不同的程序中,主缺失和次缺失的比例是不同的,而现有的mshr中的信息槽的个数通常是固定不变的,使得在存储器写入数据请求时不灵活、效率较低。

为了能够灵活、高效的记录数据请求,本申请实施例提供了一种存储器,所述存储器中的存储空间被划分为多个mshr分组,每个mshr分组包括多个mshr;所述存储器中的控制器在收到第一数据请求后,根据所述第一数据请求中携带的第一地址的第一部分在所述多个mshr分组中确定第一mshr分组,在确定所述第一mshr分组中与所述第一地址中的第二部分对应的第一mshr没有空闲的存储空间后,也就是说,所述第一mshr无法写入所述第一数据请求,从所述第一mshr分组中选择第二mshr;可以将所述第一数据请求写入所述第二mshr中。

本申请中存储器中存储空间为分组的方式,使得在写入所述第一数据请求的过程中,先确定所述第一mshr分组,然后,在确定第一mshr没有空闲的存储空间后,从所述第一mshr分组中选择所述第二mshr,可见,在所述第一mshr分组可以包括多个mshr,用于记录所述第一数据请求,在具体实施中,可以根据需要选择所述第二mshr,能够灵活、有序的将所述第一数据请求写入到所述存储器中。

下面对本申请实施例提供的一种存储器介绍,如图2所示,所述存储器中包括控制器201和n个mshr分组202,每个mshr分组包括一个或多个mshr203,m和n为正整数。

本申请实施例并不限定所述存储器中所述mshr分组的分组方式,以及每个mshr分组中包括的mshr的个数,下面以所述mshr分组的数目为n,每个mshr分组中的mshr数目为m为例,介绍一种本申请实施例提供的一种分组方式。

在将所述存储器划分为n个mshr分组时,可以基于所述存储器中存储空间的容量,若所述存储器中的存储空间较大,n、m值可以设置为较大的数值;若所述存储器中的存储空间较小,n、m值可以设置为较小的数值。

通常,数据请求(如本申请实施例中的第一数据请求、第二数据请求或第三数据请求)中会携带有地址(对应本申请实施例中的第一地址、第二地址或第三地址),所述地址可以为所述外部存储器中的数据存储的块地址,也可以是所述外部存储器中的数据存储地址,其中,所述数据存储地址包括所述块地址。

示例性的,如图3所示,为所述地址的组成示意图,所述地址可以指示所述外部存储器中数据存储所在的块(block)。

所述地址中包括两部分,分别用第一部分和第二部分表示,所述第一部分可以指示块所属的缓存组,示例性的,所述第一部分可以是索引位(index),所述第二部分可以标识缓存组中的一个块,示例性的,示例性的,所述第二部分为标签位(tag)。

为了方便说明,在本申请实施例中以第一部分为索引位,第二部分为标签位为例进行说明,应需理解的是,所述第一部分并不仅限于索引位,所述第二部分也不仅限于标签位,在不同的应用场景下,数据请求中携带的地址中可以根据实际需要将地址中的字段划分其他不同的组成部分,每个组成部分用于指示一类具体的信息,在本申请实施例中的第一部分或第二部分可以是其中任一的组成部分。

划分的n个mshr分组中的一个mshr分组可以对应所述外部存储器中的一个缓存组,也就是一个mshr分组中的mshr可以写入用于请求存/取对应的一个缓存组中数据的数据请求,在这种情况下,每个mshr分组与地址中的索引位是对应的。

一般而言,索引位为一个由多个字符构成的字段,每个mshr分组对应的索引位可以包括全部字符,也可以只包括部分字符;例如,所述索引位为一个由有五个字符组成的字段,在这种情况下,索引位的取值范围为00000~11111,若所述存储器中划分了32个mshr分组,则每个分组对应一个由五个字符构成的索引位,如第一个存储分组对应的索引位为00000,第二个存储分组对应的索引位为00001;若所述存储器由于存储空间有限,划分了8个mshr分组,每个分组可以对应一个由部分字符构成的索引位,如每个分组可以对应一个由3个字符构成的索引位,第一个存储分组对应的索引位可以为000,第二个存储分组对应的索引位可以为001。

应需理解的是,在上述说明中,是以每个mshr分组中包括m个mshr为例,本申请实施例并不限定每个mshr分组中包括的mshr数目是否相同;所述n个mshr分组中每个mshr分组的mshr的数目可以相同,也可以不同。

下面对每个mshr分组中的任一mshr的结构进行介绍:

如图2所示,每个mshr中可以设置有初始标签位,所述初始标签位可以为一个固定的字段,如可以是一个全零的字段,也可以为一个空值;如图3所示,地址中除了索引位还包括标签位,也就是说,通过索引位和标签位才能确定出数据存储的块地址,为了能够完整的记录所述数据请求中携带的地址,在每个mshr中设置所述初始标签位,便于在后续将所述数据请求写入到所述mshr时,可以利用所述数据请求中携带的标签位更新所述初始标签位(为方便说明,将所述初始标签位更新后的标签位称为所述mshr的标签位),进而,可以较为详细的记录到所述数据请求中携带的信息。

作为一种可能的实施方式,每个mshr分组中的mshr还可以包括有效位,所述有效位用于指示mshr的使用状况,所述有效位的值不同,对应不同的使用状况,示例性的,所述有效位为第一值(如0)时,表示mshr未被使用,所述有效位为第二值(如1)时,表示mshr已使用。

所述有效位的设置方式有多种,下面介绍其中两种:

第一种、每个mshr中设置有效位,所述有效位用于指示所在mshr的使用状况。

如图4a所示,所述存储器中包括n个mshr分组401,每个mshr分组401包括m个mshr402。

在一个mshr分组401中的每个mshr402中设置一个有效位403,所述有效位403指示所在mshr402的使用状况。

第二种、所述mshr分组中一个mshr中设置有效位,所述有效位用于指示所述mshr分组所有mshr的使用状况。

图4b所示,所述存储器包括n个mshr分组401,每个mshr分组401包括m个mshr402。

在一个所述mshr分组401中的一个mshr402中设置一个有效位403,有效位403用于指示mshr分组401中所有mshr402的占用状态。

所述有效位可以是一个字段,字段中每个字符对应一个mshr分组401中的一个mshr402。例如,mshr分组401中包括m个mshr,所述有效位可以是包括有m个字符的字段,所述有效位中的每个字符用于指示所述mshr分组一个mshr的使用状况,例如所述有效位中的第一个字符用于指示第一个mshr的使用状况,所述有效位中的第二个字符用于指示第二个mshr的使用状况,上述对应方式仅举例说明,字符与mshr的对应方式也可以采用其他方式,本申请实施例并不限定。

例如,字符为1时,表示mshr已使用,字符为0时,表示mshr未被使用,当所述有效位为1000011,则表示所述mshr分组401中第一个、第六个、第七个mshr被使用,其他mshr未被使用。

如图4a~4b所示,每个mshr中还可以包括l个存储空间,所述存储空间用于存储数据请求中携带的信息,每个mshr中的存储空间可以分为第一类存储空间和第二类存储空间,示例性的,每个mshr包括j个第一类存储空间和k个第二类存储空间,作为一种可能的实施方式,存储空间可以是信息槽,在本申请实施例中以所述存储空间为信息槽,第一类存储空间为第一信息槽,第二类存储空间为第二信息槽为例进行说明,本申请实施例并不对所述存储空间、第一类存储空间和第二类存储空间的名称做限定,每个信息槽中用于记录需要写入的数据请求中携带的信息,(如图4a~4b中仅以l为2为例)。

每个mshr中包括一个或多个信息槽,可以有效的提高每个mshr中能够写入的数据请求的数量,能够使得数据请求写入mshr的方式更加灵活。

作为一种可能的实现方式,每个mshr中还可以设置指示位,所述指示位用于指示mshr中部分或全部信息槽的使用状况,示例性的,所述指示位的值不同,对应于信息槽不同的使用状况,例如当所述指示位为第一值时,指示信息槽被占用;当指示位为第二值时,指示信息槽空闲,通过设置指示位可以较为清楚、明确的获知mshr中信息槽的使用状况。

所述指示位的设置方式有许多种,与所述有效位的设置方式相似,下面列举其中两种,本申请实施例并不限定所述指示位的设置方式。

第一种、每个mshr中设置多个指示位,每个指示位用于指示mshr一个信息槽的使用状况。

如图5a所示,所述存储器包括n个mshr分组501,每个mshr分组501包括至少一个mshr502。

在一个mshr分组501中的每个mshr502中包括l个信息槽503,每个信息槽前设置一个指示位503,一个指示位指示一个信息槽503的使用状况;如图5a中l为2。

第二种、每个mshr中设置一个指示位,所述指示位用于指示mshr中l个信息槽的使用状况。

如图5b所示,所述存储器包括n个mshr分组501,每个mshr分组501包括至少一个mshr502。

在一个mshr分组501中的每个mshr502中包括多个信息槽503,在一个信息槽503中设置一个指示位504,所述指示位504用于指示mshr中l个信息槽503的使用状况,如图5b中l为2。

所述指示位504指示mshr中所有信息槽503的使用状况可参见图4b中有效位404指示mshr分组401中所有mshr402的使用状况的方式,此处不再赘述。

具体到每个mshr中包括的信息槽可以分为两种类型,一种为包括数据缓存空间的第一信息槽,另一种为不包括数据缓存空间的第二信息槽;所述第一信息槽可以用于记录写请求中携带的信息,如在数据缓存空闲用于记录写请求所请求写入的数据,也可以用于记录读请求中携带的信息;所述第二信息槽可以用于记录读请求中携带的信息,作为一种可能的实施方式,每个mshr中可以至少包括一个所述第二信息槽。

如图6所示,所述存储器包括n个mshr分组601,每个mshr分组601包括至少一个mshr602。

每个mshr分组601包括l个信息槽603,所述l个信息槽603包括j个第一信息槽604和k个第二信息槽605,j和k为正整数且j+k=l;如图6中l为2,j为1,k为1。

需要说明的是,本申请实施例并不限定每个mshr中信息槽的数目,且每个mshr中信息槽的数目可以相同也可以不同;本申请实施例也不限定对于每个mshr中第一信息槽和第二信息槽的数目,且每个mshr中第一信息槽或第二信息槽的数目可以相同,也可以不同,为了方便说明,在本申请实施例中,仅是以每个mshr中包括l个信息槽,所述l个信息槽包括j个第一信息槽和k个第二信息槽为例进行说明。

若需要写入到mshr中的数据请求为写请求,则所述数据请求中会携带有需要写入的数据,第二信息槽605中的数据缓存空间可以存储所述需要写入的数据,也就是说,所述第二信息槽605可以较为完整的记录写请求中携带的信息。

若需要写入到mshr中的数据请求类型为读请求,则所述数据请求不会像写请求一样携带需要写入的数据,所述第一信息槽604和第二信息槽605均可以记录读请求中携带的信息。

可见,通过设置包括所述数据缓存空间的第二信息槽和不包括所述数据缓存空间的第一信息槽,可以有效的节约所述存储器中的存储空间,同时,也可以灵活的将所述数据请求中携带的数据保存在所述第一信息槽或所述第二信息槽。

作为一种可能的实施方式,每个mshr中第一信息槽或第二信息槽的数量可以进行实时调整,所述控制器可以调整任一mshr中的所述第一信息槽和所述第二信息槽的数量,示例性的,如调整所述第一mshr中的所述第一信息槽和所述第二信息槽的数量。

在不同的场景中,所述处理器发出的所述数据请求的数量以及不同类型的数据请求的数量不同,所述控制器可以根据具体需求,调整mshr中的所述第一信息槽和所述第二信息槽的数量,以保证可以将较多的数据请求写入到所述存储器中。

由于所述存储器中存储空间通常是固定的,所述控制器在调整任一mshr中的所述第一信息槽和所述第二信息槽的数量时,需要保证调整前后,所述存储器的存储空间的大小是不变的;例如,所述控制器可以在所述第一mshr中增加一个所述第一信息槽,减少一个所述第二信息槽的数量,所述控制器可以在所述第二mshr中减少一个所述第一信息槽,增加一个所述第二信息槽的数量,这样可以保证在整个所述存储器中,所述第一信息槽的数量和所述第二信息槽的数量保持不变,整个所述存储器的存储空间在调整前后也保持一致。

作为一种可能的实施方式,所述存储器中也可以设置冗余的存储空间,用于增加所述第一信息槽或所述第二信息槽,所述控制器可以利用冗余的存储空间,增加所述第一信息槽或所述第二信息槽。

需要说明的是,mshr中是否设置有效位、指示位可以根据应用场景进行设置,以及mshr中有效位和指示位的设置位置均可以灵活设置,本申请实施例并不限定。

下面提供一种存储器的结构示意图,如图7所示,所述存储器包括n个mshr分组701,每个mshr分组701包括至少一个mshr702。

在一个mshr分组701中的每个mshr702中包括l个信息槽703,在一个mshr分组701中的每个mshr702的起始位置设置一个有效位704,每个有效位704指示所在mshr702的使用状况。所述有效位704之后为指示位705,所述指示位705用于指示mshr中l个信息槽703的使用状况;如图7中l为2。

尽管未示出,在如图4a~7中还可以包括所述控制器,所述控制器可以用于控制所述数据请求的写入。

上面介绍了所述存储器中mshr分组的划分方式以及mshr分组内部的mshr的结构,下面结合如图2~图7所示的存储器,介绍在所述存储器中写入数据请求的方式。

下面以所述第一数据请求和第三数据请求为次缺失,所述第二数据请求为主缺失为例,分别说明所述控制器将不同类型的数据请求写入所述存储器中的mshr以及如何选择mshr中的信息槽的方式。

如图8所示,为本申请实施例提供的第一数据请求的写入过程,以第一部分为索引位,第二部分为标签位为例,该方法包括:

步骤801:所述控制器接收第一数据请求。

步骤802:所述控制器根据所述第一数据请求中携带的第一地址中的索引位确定第一mshr分组。

步骤803:所述控制器在确定所述第一mshr分组中与所述第一地址中的标签位对应的第一mshr没有空闲的存储空间后,从所述第一mshr分组中选取第二mshr。

步骤804:所述控制器确定了所述第二mshr之后,可以将所述第一数据请求写入到所述第二mshr中。

所述控制器在将所述第一数据请求写入到所述第一mshr的过程中,还可以将所述第一mshr中的初始标签位更新为所述第一地址中的标签位。

以所述第一数据请求中的第一地址为010010011为例,其中前三位010为标签位,010011为索引位,若所述控制器在接收到所述第一数据请求后,会根据索引位010011选择第一mshr分组,并在所述第一mshr分组中选取了所述第二mshr后,可以将所述第二mshr的初始标签位更新为标签位010。

所述控制器在从所述第一mshr分组中选择用于写入所述第一数据请求的mshr时,所述控制器可以先确定所述第一mshr分组中是否存在与所述第一地址中的标签位对应的第一mshr,并确定在存在所述第一mshr的情况下,所述第一mshr是否存在空闲的存储空间。

若所述控制器确定所述第一mshr分组存在与所述第一地址的标签位对应的第一mshr,且所述第一mshr没有空闲的存储空间。

这种情况下,表明所述第一mshr分组中在之前已记录了携带有所述第一地址的数据请求,也就是说,所述第一数据请求并非首次请求,属于次缺失。

所述第一mshr没有空闲的存储空间,无法写入所述第一数据请求的情况分为如下两种:

第一种、所述第一数据请求为读请求,所述控制器确定所述第一mshr中的没有空闲的信息槽,也就是说,没有空闲的所述第一信息槽和所述第二信息槽。

这种情况下,所述第一mshr既不包括空闲的所述第一信息槽,也不包括空闲的所述第二信息槽,所述第一mshr无法写入所述第一数据请求。

第二种、所述第一数据请求为写请求,所述控制器确定所述第一mshr中不包括空闲的所述第一信息槽。

这种情况下,所述第一mshr即便存在空闲的第二信息槽,由于所述第二信息槽中不包括数据缓存空间,所述第一mshr无法存储所述第一数据请求的中携带的需要写入的数据,故也无法写入所述第一数据请求。

为了可以在所述存储器中写入所述第一数据请求,所述控制器可以选择所述第一mshr分组中其他mshr,如可以选取所述第二mshr,示例性的,所述控制器可以选择所述第一mshr分组中未被使用的一个mshr作为所述第二mshr,如可以随机选择一个未被使用的mshr作为所述第二mshr,也可以按照所述第一mshr分组中mshr的排序,选择排序位置在第一个的未被使用的mshr作为所述第二mshr,本申请实施例并不限定选择所述第二mshr的方式。

其中,所述控制器可以根据所述mshr中的有效位确定mshr的使用状况,进而确定,所述第一mshr分组中未被使用的mshr和已被使用的mshr。

所述控制器在选择了所述第二mshr之后,可以在所述第二mshr选择相应的信息槽存储所述第一数据请求中携带的数据。

作为另一种可能的实施方式,在所述第一mshr分组中的可以存在多个与所述第一地址中的标签位对应mshr,若多个与所述第一地址中的标签位对应mshr中存在没有空闲的存储空间的第一mshr外,还存在有空闲的存储空间的mshr,如存在空闲的信息槽(如第一信息槽或第二信息槽),所述控制器可以选取与所述第一地址中的标签位对应mshr中有空闲的存储空间的mshr作为所述第二mshr,将所述第一数据请求写入所述第二mshr中。

在这种情况下,所述控制器在选择了所述第二mshr之后,可以在所述第二mshr选择空闲的信息槽存储所述第一数据请求中携带的数据,所述控制器在选择所述信息槽时,可以根据所述第一数据请求的类型选择相应的信息槽,具体过程如下:

当所述第一数据请求为读请求,若所述第二mshr中包括空闲的所述第二信息槽或空闲的第一信息槽,所述控制器选择空闲的所述第二信息槽或空闲的第一信息槽,可以将所述第二数据请求写入所述控制器选取的第一信息槽或第二信息槽。

当所述第一数据请求为写请求,所述第二mshr中包括空闲的所述第一信息槽,所述存取控制器选择一个空闲的所述第一信息槽,可以将所述第二数据请求写入所述空闲的第一信息槽。

需要说明的是,所述第一mshr中第一信息槽和第二信息槽的数目可以与所述第二mshr中第一信息槽和第二信息槽的数目不同,例如,所述第一mshr中有j个第一信息槽和k个第二信息槽,所述第一mshr中和m个第一信息槽和n个第二信息槽,其中,j与m不同,和/或k与n不同。

如图9所示,为本申请实施例提供的第二数据请求的写入过程,第一部分为索引位,第二部分为标签位为例,该方法包括:

步骤901:所述控制器接收第二数据请求,其中,所述第二数据请求携带有第二地址。

步骤902:所述控制器根据所述第二地址的索引位确定所述多个mshr分组中的第二mshr分组。

步骤903:所述控制器在确定所述第二mshr分组中没有与所述第二地址中的标签位对应的mshr,从所述第二mshr分组中选择第三mshr。

步骤904:在确定了所述第三mshr后,所述控制器将所述第二数据请求写入所述第三mshr中。

所述控制器根据所述第二地址的索引位确定所述多个mshr分组中的第二mshr分组的方式与如图8中所述控制器根据所述第一地址的索引位确定所述多个mshr分组中的第一mshr分组的方式相同,此处不再赘述。

所述控制器在从所述第一mshr分组中选择用于写入所述第二数据请求的mshr时,所述控制器可以先确定所述第二mshr分组中是否存在与所述第二地址中的标签位对应的mshr,也就是确定所述第二mshr分组中是否存在标签位与所述第二地址中的标签位相同的mshr。

若所述控制器确定所述第二mshr分组不存在与所述第二地址中的标签位对应的mshr。

对于所述第二mshr分组中已被使用的mshr,所述第二地址中的标签位与任一mshr的标签位都不一致,说明所述第二mshr分组中mshr之前没有写入携带有所述第二地址的数据请求,可以说明,所述第二数据请求为首次请求,属于主缺失;应需理解的是,对于所述第二mshr分组中未被使用的任一mshr由于其标签位为初始标签位,一定与所述第二地址的标签位不一致。

所述控制器可以选择所述第二mshr分组中任一未被使用的mshr作为第三mshr,例如,所述控制器所述第三mshr的方式可以参见所述控制器选择第二mshr的方式,此处不再赘述。

所述控制器在选择了所述第三mshr之后,可以在所述第三mshr选择相应的信息槽存储所述第二数据请求中携带的数据,所述控制器在所述第三mshr选择相应的信息槽存储所述第二数据请求中携带的数据的方式可以参见如图8所示的实施例中,所述控制器在所述第二mshr选择相应的信息槽存储所述第一数据请求中携带的数据的方式,此处不再赘述。

在如图8和图9所示的实施例中,所述控制器选择的用于写入数据请求(第一数据请求或第二数据请求)的mshr(分别对应第二mshr和第三mshr)可以是未使用的mshr,事实上,所述控制器在确定mshr分组中存在与地址的标签位对应的mshr存在空闲的存储空间后,也可以将数据请求写入到与地址的标签位对应的mshr中,下面对这种情况进行说明:

如图10所示,为本申请实施例中第三数据请求写入过程,以第一部分为索引位,第二部分为标签位为例,该方法包括:

步骤1001:所述控制器接收第三数据请求,其中,所述第三数据请求携带第三地址且第三数据请求是读请求。

步骤1002:所述控制器根据所述第三地址的索引位确定所述多个mshr分组中的第三mshr分组。

步骤1003:所述控制器确定所述第三mshr分组中与所述第三地址的标签位对应的第四mshr,所述第四mshr中包括空闲的第一信息槽且不包括空闲的第二信息槽。

由于第一信息槽包括为写请求预留的数据缓存空间而第二信息槽不包括数据缓存空间,因此,当第三数据请求是读请求且第四mshr只包括空闲的第一信息槽时,可以将第三读请求写入该第一信息槽中。

步骤1004:所述控制器将所述第三数据请求写入所述第四mshr中的第一信息槽中。

所述控制器根据所述第三地址的索引位确定所述多个mshr分组中的第三mshr分组的方式与如图8所示的实施例中,所述控制器根据所述第一地址的索引位确定所述多个mshr分组中的第一mshr分组的方式相同,此处不再赘述。

所述控制器在将所述数据请求(如第一数据请求、第二数据请求或第三数据请求)写入到mshr中的信息槽(如第一信息槽或第二信息槽)的过程中,可以在所述信息槽中记录所述数据请求中携带的信息,如所述数据请求中指示的目标寄存器、所述数据请求中的偏置位等信息。

其中,所述处理器发出的数据请求中会指示在所述cache返回所要请求的数据时,需要写入到哪一个寄存器(也即目标寄存器),所述信息槽可以记录所述目标寄存器,以便在所述cache后续在响应所述数据请求时,可以将数据返回到对应的目标寄存器。

所述mshr分组对应的索引位以及mshr中的标签位可以对应数据存储地址中的块地址,而在一个数据请求中,会携带数据存储地址(可以是本申请实施例中的第一地址、第二地址或第三地址),所述数据存储地址除了块地址之外,还包括偏置(offset)位,所述偏置位用于指示数据在块中的偏移位置,为了能够详细记录所述数据请求,所述信息槽可以记录offset位。

基于与实施例同一发明构思,本申请实施例还提供了一种控制器,用于执行上述实施例中控制器执行的方法,相关特征可参见上述实施例,此处不再赘述,如图11所示,该装置包括接收单元1101、处理单元1102和写入单元1103:

所述接收单元1101,用于接收第一数据请求,所述第一数据请求中携带有第一地址。

所述处理单元1102,用于根据所述第一地址的第一部分确定所述存储器中包括的多个mshr分组中的第一mshr分组;确定所述第一mshr分组中的第一mshr没有空闲的存储空间,其中,所述第一mshr与所述第一地址中的第二部分对应;以及响应上述确定,从所述第一mshr分组中选择第二mshr。

所述写入单元1103,用于将所述第一数据请求写入所述第二mshr中。

作为一种可能的实施方式,所述接收单元1101还可以接收第二数据请求,其中,所述第二数据请求携带有第二地址。

所述处理单元1102还可以根据所述第二地址的第一部分确定所述多个mshr分组中的第二mshr分组;确定所述第二mshr分组中没有与所述第二地址中的第二部分对应的mshr;并响应上述确定,从所述第二mshr分组中选择第三mshr。

所述写入单元1103还可以将所述第二数据请求写入所述第三mshr中。

作为一种可能的实施方式,当所述第一数据请求是写请求时,所述处理单元1102在确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间,其中,所述第一类存储空间包括数据缓存空间;

所述处理单元1102在从所述第一mshr分组中选择第二mshr时,可以从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中包括空闲的所述第一类存储空间。

作为一种可能的实施方式,当所述第一数据请求是读请求时,所述处理单元1102在确定所述第一mshr分组中的第一mshr没有空闲的存储空间时,可以确定所述第一mshr没有空闲的所述第一类存储空间和所述第二类存储空间,第二类存储空间不包括数据缓存空间。

所述处理单元1102在从所述第一mshr分组中选择第二mshr时,可以从所述第一mshr分组中选择第二mshr,其中,所述第二mshr中至少包括空闲的所述第一类存储空间或所述第二类存储空间。

作为一种可能的实施方式,所述处理单元1102还可以调整所述第一mshr中的所述第一类存储空间和所述第二类存储空间的数量。

本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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