CN117785737A - 基于链表结构并支持动态分区粒度访问的末级高速缓存 - Google Patents
基于链表结构并支持动态分区粒度访问的末级高速缓存 Download PDFInfo
- Publication number
- CN117785737A CN117785737A CN202211149739.XA CN202211149739A CN117785737A CN 117785737 A CN117785737 A CN 117785737A CN 202211149739 A CN202211149739 A CN 202211149739A CN 117785737 A CN117785737 A CN 117785737A
- Authority
- CN
- China
- Prior art keywords
- partition
- request
- cache
- miss
- last level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000005192 partition Methods 0.000 title claims abstract description 300
- 238000013500 data storage Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 6
- 238000000034 method Methods 0.000 description 2
- 101150015860 MC1R gene Proteins 0.000 description 1
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请揭露一种末级高速缓存,包括数据存储器、标记存储器、缺失锁定信息存储器、命中测试单元及缺失状态处理寄存器。数据存储器包括多条高速缓存线,其中各高速缓存线包括高位分区及低位分区。标记存储器用来储存多个标记信息及多个分区有效信息。缺失锁定信息存储器用来储存对应多条高速缓存线的缺失锁定信息。依据标记信息域及分区信息域,命中测试单元判定是否命中高位分区或低位分区。若第一请求与第二请求具有相同的标记信息域及分区信息域,且当命中测试单元判定第一请求为缓存缺失,及判定第二请求为缓存缺失下命中时,缺失状态处理寄存器根据第一请求及第二请求进入末级高速缓存的时间序,以链表的格式来暂存第一请求及第二请求。
Description
技术领域
本发明涉及一种高速缓存,更具体的涉及一种基于链表结构并支持动态分区粒度访问的末级高速缓存。
背景技术
高速缓存是一种速度极快但容量极小的储存设备,设置在中央处理器及内存之间,可大幅减少运行进程时须一再读取内存的时间。然而,一般的高速缓存须使用固定大小的高速缓存线来从内存读取数据,对访问内存的粒度大小较无调整空间,使得高速缓存线的使用效率仍有待提升。因此,如何动态地调整高速缓存访问内存的粒度,并同时兼顾处理请求时的顺序以避免产生错误,为本领域亟待解决的问题之一。
发明内容
本申请的目的之一在于公开一种末级高速缓存及其相关计算器系统,以解决上述问题。
本申请的一实施例涉及一种末级高速缓存,用来通过第一接口接收来自计算引擎的多个请求,以及通过第二接口存取内存,其中多个请求中各请求包含标记信息域及分区信息域。末级高速缓存包括数据存储器、标记存储器、缺失锁定信息存储器、命中测试单元及缺失状态处理寄存器。数据存储器包括多条高速缓存线,其中各高速缓存线包括高位分区及低位分区,高位分区的宽度及低位分区的宽度相同。标记存储器用来储存多个标记信息及多个分区有效信息。多个标记信息分别对应多条高速缓存线,以及多个分区有效信息分别对应多条高速缓存线,其中各分区有效信息包括高位有效比特及低位有效比特,分别用来指示对应的多条高速缓存线的高位分区及低位分区是否处于有效状态。缺失锁定信息存储器用来储存对应多条高速缓存线的多个缺失锁定信息,其中各缺失锁定信息包括高位缺失锁定比特及低位缺失锁定比特,分别用来指示对应多条高速缓存线的高位分区及低位分区是否处于锁定状态。依据标记信息域及分区信息域,命中测试单元判定是否命中多条高速缓存线的高位分区或低位分区。其中多个请求包括第一请求及第二请求,第一请求的标记信息域与第二请求的标记信息域相同,以及第一请求的分区信息域与第二请求的分区信息域相同,且当命中测试单元判定第一请求为缓存缺失,及判定第二请求为缓存缺失下命中时,缺失状态处理寄存器根据所述第一请求及第二请求进入末级高速缓存的时间序,以链表的格式来暂存所述第一请求及所述第二请求。
本申请的另一实施例涉及一种计算器系统,包括末级高速缓存、计算引擎及内存。
由于本申请的末级高速缓存可动态地调整访问内存的粒度,使得高速缓存线能更有效率地被使用。此外,通过链表结构,本申请的末级高速缓存可依照请求进入末级高速缓存的时间序维持请求被回传的顺序,从而达到进出末级高速缓存的请求的一致性。
附图说明
当结合附图阅读时,从以下实施方式更好理解本揭露的方面。应注意,根据行业中的标准实践,各种结构不按比例绘制。事实上,为清晰论述,各种结构的尺寸可任意增加或减小。
图1是本申请的末级高速缓存的一实施例示意图。
图2为不同配置的末级高速缓存的比较表。
图3为本申请的末级高速缓存的命中测试单元执行命中测试的示意图。
图4为本申请的末级高速缓存的命中测试单元执行命中测试的示意图。
图5为本申请的末级高速缓存的命中测试单元执行命中测试的示意图。
图6为本申请的末级高速缓存针对部分写操作的请求从内存读取数据的表格。
图7为本申请的计算器系统的一实施例示意图。
具体实施方式
以下揭露提供用于实施所提供标的物的不同构件的许多不同实施例或实例。在下文描述组件及布置的特定实例以简化本揭露。当然,此类仅为实例且并不旨在为限制性的。例如,在以下描述中,第一构件形成在第二构件上方或上可包含其中第一构件及第二构件经形成直接接触的实施例,且还可包含其中额外构件可形成于第一构件与第二构件之间使得第一构件及第二构件可不直接接触的实施例。另外,本揭露可在各种实例中重复参考数字及/或字母。此重复是出于简单及清晰的目的且本身并不指示所论述的各种实施例及/或配置之间的关系。
此外,为便于描述,例如“在……的下”、“在……下方”、“下”、“在……上方”、“上”、“在……上”及类似物的空间相对术语可在本文中用于描述一个组件或构件与图中说明的另一组件或构件的关系。除图中描绘的定向外,空间相对术语还希望涵盖装置在使用或操作中的不同定向。设备可以其它方式定向(旋转90度或按其它定向)且因此可同样解释本文中使用的空间相对描述符。
如本文中使用,例如“第一”、“第二”及“第三”的术语描述各种组件、构件、区、层及/或区段,但此类组件、构件、区、层及/或区段不应被此类术语限制。此类术语仅可用于彼此区分一个组件、构件、区、层或区段。例如“第一”、“第二”及“第三”的术语在本文中使用时并不暗示序列或顺序,除非由背景内容明确指示。
单数形式"一"、"一个"和"所述"也可包括复数形式,除非上下文明确地另有指示。术语"连接"连同其派生词可在本文用于描述部件之间的结构关系。"连接"可用于描述两个或多个组件彼此直接物理或电接触。"连接"也可用于指示两个或多个组件彼此直接或间接(在它们之间有介入的组件)物理或电接触,和/或这两个或多个组件彼此协作或交互作用。
图1是本申请的末级高速缓存10的一实施例示意图。如图1所示,末级高速缓存(last level cache,LLC)10可包括第一接口110、第二接口120、数据存储器130、标记(tag)存储器140、缺失锁定(miss lock)信息存储器150、命中测试(hit test)单元160及缺失状态处理寄存器(miss status handle register,MSHR)170。在本实施例中,末级高速缓存10可通过第一接口110接收来自计算引擎(未绘示于图中)的多个请求,以及可通过第二接口120存取内存(未绘示于图中),其中所述多个请求的种类可包括读操作及写操作。
数据存储器130可包括多条高速缓存线,其中各高速缓存线可包括高位分区(sector)及低位分区,所述高位分区的宽度及所述低位分区的宽度相同。举例来说,若各高速缓存线的宽度为128Bytes,则所述高位分区及所述低位分区的宽度皆为64Bytes。
标记存储器140可用来储存多个标记信息及多个分区有效信息。所述多个标记信息可分别对应所述多条高速缓存线,以及所述多个分区有效信息可分别对应所述多条高速缓存线,其中各分区有效信息可包括高位有效比特及低位有效比特,分别用来指示对应的所述多条高速缓存线的所述高位分区及所述低位分区是否处于有效状态。
缺失锁定信息存储器150可用来储存对应所述多条高速缓存线的多个缺失锁定信息。各缺失锁定信息可包括高位缺失锁定比特及低位缺失锁定比特,分别用来指示对应所述多条高速缓存线的所述高位分区及所述低位分区是否处于锁定状态。举例来说,当一高速缓存线(或是其中的任一分区)被分配给被判定为缓存缺失(cache miss)的请求时,缺失锁定信息可指示所述高速缓存线(或是其中的任一分区)处于锁定状态,以避免所述高速缓存线(或是其中的任一分区)在所述请求的数据从内存被读取回所述高速缓存线之前再被分配给其他请求。
在一实施例中,所述多个请求中各请求包含标记信息域及分区信息域。依据所述标记信息域及所述分区信息域,命中测试单元160判定是否命中所述多条高速缓存线的所述高位分区或所述低位分区。命中测试单元160可判定各请求为缓存命中(cache hit)、缓存缺失或缓存缺失下命中(cache hit-on-miss),其判断条件会于后续内容中说明。
在一实施例中,所述多个请求包含第一请求及第二请求,第一请求的标记信息域与第二请求的标记信息域相同,以及第一请求的分区信息域与第二请求的分区信息域相同。换言之,第一请求及第二请求具有相同的地址。在此情形下,当命中测试单元160判定第一请求为缓存缺失,及判定第二请求为缓存缺失下命中时,缺失状态处理寄存器170可根据第一请求及第二请求进入末级高速缓存10的时间序,以链表的格式来暂存第一请求及第二请求。也就是说,缺失状态处理寄存器170具有维持各请求存取顺序的功能。由于具有相同地址的请求被回传到计算引擎的顺序需与各请求进入末级高速缓存10的时间序相同,通过所述链表,缺失状态处理寄存器170可维持被判定为缓存缺失或缓存缺失下命中的多个请求的顺序。
图2为不同配置的末级高速缓存的比较表20。以下皆以数据存储器容量为1MB及分成16路(way)的末级高速缓存为例来说明。以配置202来说,每一高速缓存线的大小为64Bytes,其标记信息需要14个比特,整个末级高速缓存会有1MB/64Bytes=16384条高速缓存线,每一路会有16384/16=1024组(set),所需的标记存储器容量为16384*14比特,以及存取此末级高速缓存的粒度为64Bytes。以配置204来说,每一高速缓存线的大小为128Bytes,其标记信息需要15个比特,整个末级高速缓存会有1MB/128Bytes=8192条高速缓存线,每一路会有8192/16=512组,所需的标记存储器容量为8192*15比特,以及存取此末级高速缓存的粒度为128Bytes。配置206为本申请的末级高速缓存10的配置方式,以配置206来说,每一高速缓存线的大小为128Bytes且高速缓存线采用分区的作法,除了原先需要的15比特的标记信息以外,另需要2比特的分区有效信息。整个末级高速缓存会有1MB/128Bytes=8192条高速缓存线,每一路会有8192/16=512组,所需的标记存储器容量需要容纳标记信息及分区有效信息,因此需要8192*(15+2)比特,以及存取此末级高速缓存的粒度为64Bytes。
由图2可知,存取配置206的末级高速缓存的粒度可如同存取配置202的末级高速缓存的粒度,但其所需的标记存储器容量可以减少约4成。而存取配置206的末级高速缓存相较于配置204的末级高速缓存,仅多使用了约13%的标记存储器容量,就可以将存取粒度降低一半。因此,通过在高速缓存线中采用分区,末级高速缓存10可以在不增加过多成本的情况下,提高存取的粒度。
在一实施例中,所述多个请求包括第三请求,当第三请求对应的高位分区有效比特及低位分区有效比特分别指示高位分区及低位分区处于有效状态,且第三请求对应的高位缺失锁定比特及低位缺失锁定比特分别指示第三请求对应的高位分区及低位分区未处于锁定状态时,命中测试单元160判定所述第三请求为缓存命中。在一实施例中,末级高速缓存10还包括命中队列,用来储存被命中测试单元160判定为缓存命中的第三请求。在一实施例中,命中队列为先进先出队列。
在一实施例中,所述多个请求包括第四请求,当第四请求对应的高位分区有效比特指示第四请求对应的高位分区未处于有效状态,命中测试单元160判定第四请求为缓存缺失。也就是说,当存取内存的大小为64Bytes时,末级高速缓存10可仅启用高速缓存线中的高位分区。在一实施例中,末级高速缓存10还包括缺失队列,用来储存被命中测试单元160判定为缓存缺失的第四请求。在一实施例中,缺失队列为先进先出队列。
在一实施例中,所述多个请求包括第五请求,当第五请求对应的高位分区有效比特及低位分区有效比特分别指示第五请求对应的高位分区及低位分区中至少一分区未处于有效状态(或两分区皆未处于有效状态)时,命中测试单元160判定所述第五请求为缓存缺失。在此情形下,通过第二接口120,末级高速缓存10从内存读取对应到高位分区及低位分区中未处于有效状态的分区的数据。也就是说,当存取内存的大小为128Bytes时,末级高速缓存10可同时启用高速缓存线中的高位分区及低位分区。在一实施例中,末级高速缓存10还包括缺失队列,用来储存被命中测试单元160判定为缓存缺失的第五请求。在一实施例中,缺失队列为先进先出队列。
在一实施例中,所述多个请求包括第六请求,当第六请求对应的高位分区有效比特及低位分区有效比特分别指示第六请求对应的高位分区及低位分区处于有效状态,且第六请求对应的高位缺失锁定比特及低位缺失锁定比特分别指示第六请求对应的高位分区及低位分区中至少一分区处于锁定状态时,命中测试单元160判定第六请求为缓存缺失下命中。更详细地说,当第五请求被命中测试单元160判定为缓存缺失时,若第六请求与第五请求具有相同地址,则第六请求被命中测试单元160判定为缓存缺失下命中。当对应到第五请求的数据从内存被读取回末级高速缓存10后,第六请求可直接使用对应到第五请求的所述数据。
在一实施例中,当高速缓存线被驱逐时,通过第二接口120,末级高速缓存10写回所述高速缓存线中对应到高位分区及/或低位分区的数据到内存中。详细来说,末级高速缓存10仅会将高速缓存线中有被使用过的分区的数据写回到内存。
图3为本申请的末级高速缓存10的命中测试单元160执行命中测试30的示意图。在图3中,高速缓存线包含有高位分区300及低位分区301,最初的分区有效信息sect_vld指示高位分区300及低位分区301皆未处于有效状态(sect_vld=2'b00)。
当读取对应高位分区300的数据的请求310进入末级高速缓存10时,由于对应高位分区300的分区有效信息sect_vld指示高位分区300未处于有效状态,命中测试单元160判定请求310为缓存缺失。在此情形下,末级高速缓存10通过第二接口120读取内存中对应于高位分区300的数据,将所述数据存入高位分区300中,以及回传所述数据到计算引擎。此时,分区有效信息sect_vld指示高位分区300处于有效状态,但指示低位分区301未处于有效状态(sect_vld=2'b10)。
接着,当读取对应低位分区301的数据的请求320进入末级高速缓存10时,由于对应低位分区301的分区有效信息sect_vld指示低位分区301未处于有效状态,命中测试单元160判定请求320为缓存缺失。在此情形下,末级高速缓存10通过第二接口120读取内存中对应于低位分区301的数据,将所述数据存入低位分区301中,以及回传所述数据到计算引擎。此时,分区有效信息sect_vld指示高位分区300及低位分区301皆处于有效状态(sect_vld=2'b11)。
接着,当读取对应高位分区300及低位分区301的数据的请求330进入末级高速缓存10时,由于对应高位分区300及低位分区301的分区有效信息sect_vld指示高位分区300及低位分区301皆处于有效状态,命中测试单元160判定请求330为缓存命中。在此情形下,末级高速缓存10直接将对应于高位分区300及低位分区301的数据回传到计算引擎。此时,分区有效信息sect_vld指示高位分区300及低位分区301皆处于有效状态(sect_vld=2'b11)。
接着,当写入对应高位分区300的数据的请求340进入末级高速缓存10时,由于对应高位分区300的分区有效信息sect_vld指示高位分区300处于有效状态,命中测试单元160判定请求340为缓存命中。在此情形下,末级高速缓存10直接将该数据写入高位分区300后回传到计算引擎。此时,分区有效信息sect_vld指示高位分区300及低位分区301皆处于有效状态(sect_vld=2'b11)。
最后,当需要驱逐所述高速缓存线时,末级高速缓存10通过第二接口120将对应高位分区300及低位分区301当下的数据写回至内存,并清空高位分区300及低位分区301中的数据。此时,分区有效信息sect_vld指示高位分区300及低位分区301皆未处于有效状态(sect_vld=2'b00)。
图4为本申请的末级高速缓存10的命中测试单元160执行命中测试40的示意图。在图4中,各请求由右至左依序进入末级高速缓存10的请求序列400中,在本范例中,多个请求一共具有五种不同的地址,分别为地址0、地址1、地址2、地址3及地址4,其中根据标记储存器140中的多个标记信息,对应到地址1及地址3的请求被命中测试单元160判定为缓存命中,而对应到地址0、地址2及地址4的请求被命中测试单元160判定为缓存缺失。应注意的是,在请求序列400中标示的命中状况仅为帮助说明之用途,实际上在请求序列400的请求尚未接受命中测试单元160的命中测试,因此尚不知命中情况。
具有地址1或地址3的请求依序被放入命中队列410中,末级高速缓存10可直接依序回传对应到地址1或地址3的数据到计算引擎。
第一个具有地址0、地址2及地址4的请求依序被放入缺失队列420中,以及被储存到缺失状态处理寄存器170中。末级高速缓存10通过第二接口120从内存读取对应到地址0、地址2及地址4的数据。由于在缺失队列420中已存在地址0的请求,在缺失队列420中的地址0的请求完成之前,第二个具有地址0的请求会被命中测试单元160判定为缓存缺失下命中,以及以链表的格式被储存到缺失状态处理寄存器170。所述链表可指示第二个具有地址0的请求是接在第一个具有地址0的请求之后。接着,在缺失队列420中的地址0的请求完成之前,第三个具有地址0的请求会被命中测试单元160判定为缓存缺失下命中,以及以链表的格式被储存到缺失状态处理寄存器170。所述链表可指示第三个具有地址0的请求是接在所述第二个具有地址0的请求之后。
根据以上所述,缺失状态处理寄存器170储存所有被判定为缓存缺失及缓存缺失下命中的请求,以及以链表的格式确保具有相同地址的多个请求之间的先后顺序。根据所述链表及对应到被判定为缓存缺失的请求的数据被回传到末级高速缓存10的顺序,缺失状态处理寄存器170产生回传队列430。假设从内存回传的数据依序是对应于地址4、地址0及地址2(如队列440所示),末级高速缓存10会先回传第一个具有地址4的请求的数据到计算引擎,接着根据所述链表,末级高速缓存10再依序回传第二个、第三个…具有地址4的请求的数据到计算引擎。当所有具有地址4的请求皆已响应到计算引擎后,末级高速缓存10接着回传第一个具有地址0的请求的数据到计算引擎,以及根据所述链表依序回传第二个、第三个…具有地址0的请求的数据到计算引擎。当所有具有地址0的请求皆已响应到计算引擎后,末级高速缓存10接着回传第一个具有地址2的请求的数据到计算引擎,以及根据所述链表依序回传第二个、第三个…具有地址2的请求的数据到计算引擎。也就是说,通过链表格式,末级高速缓存10会依照具有相同地址的多个请求进入请求序列400的时间序来回传所述多个请求。
在一实施例中,所述多个请求包含有第七请求及第八请求,若第七请求进入高速缓存线的时间早于第八请求进入高速缓存线的时间,在第七请求被末级高速缓存10回传到计算引擎后,第八请求被末级高速缓存10回传到计算引擎。也就是说,内存可能未依照末级高速缓存10读取对应于多个请求(例如上述的第七请求及第八请求)的数据的顺序来回传多个请求的数据到末级高速缓存10,然而末级高速缓存10是按照所述多个请求进入高速缓存线的时间顺序来回传所述多个请求。在此情形下,由于第七请求进入高速缓存线的时间早于第八请求进入高速缓存线的时间,即使第八请求的数据被回传到末级高速缓存10的时间早于第七请求的数据被回传到末级高速缓存10的时间,在等待(进入高速缓存线的时间较早的)第七请求的数据被回传到末级高速缓存10及回传所述数据到计算引擎后,末级高速缓存10才会回传(进入高速缓存线的时间较晚的)第八请求的数据到计算引擎。
图5为本申请的末级高速缓存10的命中测试单元160执行命中测试50的示意图。在图5中,高速缓存线包含有高位分区500及低位分区501。
首先,读取对应到高位分区500的数据的请求510进入末级高速缓存10。请求510被命中测试单元160判定为缓存缺失,以及末级高速缓存10通过第二接口120从内存读取对应到高位分区500的数据。接着,读取对应到低位分区501的数据的请求520进入末级高速缓存10。请求520被命中测试单元160判定为缓存缺失,以及末级高速缓存10通过第二接口120从内存读取对应到低位分区501的数据。若较早进入末级高速缓存10的请求510的回应尚未被末级高速缓存10接收(即对应到高位分区500的数据尚未从内存被回传到末级高速缓存10),而较晚进入末级高速缓存10的请求520的回应已被末级高速缓存10接收(即对应到低位分区501的数据已从内存被回传末级高速缓存10),末级高速缓存10仍会先等待内存回传对应到高位分区500的数据到末级高速缓存10,以及回传对应到高位分区500的数据到计算引擎,以响应较早进入末级高速缓存10的请求510,接着才会回传低位分区501的数据到计算引擎,以响应较晚进入末级高速缓存10的请求520。
接着,读取对应到高位分区500及低位分区501的数据的请求530进入末级高速缓存10。此时,若末级高速缓存10已接收对应到请求510及请求520的回应,请求530被命中测试单元160判定为缓存命中。接着,写入对应到高位分区500的数据的请求540进入末级高速缓存10。请求540被命中测试单元160判定为缓存命中,以及末级高速缓存10将数据写入高位分区500中。最后,当需要驱逐所述高速缓存线时,末级高速缓存10通过第二接口120将对应高位分区500及低位分区501当下的数据写入内存,并清空高位分区500及低位分区501中的数据。
在一实施例中,高位分区的宽度及低位分区的宽度皆为第二接口120的总线宽度的两倍,以及多个请求的种类还包括部分写操作。也就是说,若分区的宽度为64Bytes,第二接口120的总线宽度仅有32Bytes,为分区的一半。
在一实施例中,高位分区及低位分区进一步分别包括高位子分区及低位子分区,以及多个子分区的顺位由高位至低位依序为高位分区的高位子分区、高位分区的低位子分区、低位分区的高位子分区及低位分区的低位子分区,且多个请求中的各请求还包括子分区信息域。举例来说,分区中的两个子分区的宽度可为分区的一半,若分区的宽度为64Bytes,每个子分区的宽度为32Bytes,可用来通过第二接口120从内存读取种类为部分写操作的请求。
在一实施例中,所述多个请求包含种类为部分写操作的第九请求,若第九请求被判定为缓存缺失,通过第二接口120,末级高速缓存10从内存读取对应于第九请求的多个子分区中至少一子分区的数据。也就是说,对种类为部分写操作的请求而言,当所述请求被判定为缓存缺失时,末级高速缓存10可仅从内存读取缺失的子分区的数据,而无须读取整个高速缓存线的数据。在此情形下,与从内存读取对应到高速缓存线的整个128Bytes的数据相比,部分写操作的缺失读取可仅读取其中1到3个子分区的数据(即仅需读取32Bytes、64Bytes或96Bytes的数据即可),最多可以省下96Bytes的数据读取。
在一实施例中,第九请求欲对对应第九请求的多个子分区中至少一特定子分区进行部分写操作,以及不对对应第九请求的多个子分区中剩余的至少两子分区进行部分写操作,且剩余的两子分区之间夹着至少一特定子分区,则末级高速缓存10从内存读取对应于第九请求的多个子分区中的剩余的两子分区及之间的至少一特定子分区的数据。也就是说,为了简化流程,末级高速缓存10仅传送一个用于缓存缺失的读请求。在此情形下,末级高速缓存10仍可能读取原先无须读取的子分区的数据(即上述多个子分区中的剩余的两子分区及之间的至少一特定子分区的数据)。
图6为本申请的末级高速缓存10针对部分写操作的请求从内存读取数据的表格60。如图6所示,假设末级高速缓存10以大小为128Bytes的高速缓存线接收部分写操作的请求,在子分区为32Bytes的情形下,一共有15种可能的情形(分别编号为情形0~14)。在图6的子分区由左至右依序为高位分区的高位子分区、高位分区的低位子分区、低位分区的高位子分区及低位分区的低位子分区。在所有子分区中,1表示该子分区的数据无须被读取,0表示该子分区的数据须被读取。
以情形0为例,高位分区的高位子分区、高位分区的低位子分区、低位分区的高位子分区须被读取,低位分区的低位子分区无须被读取,由于须被读取的三个子分区相连,末级高速缓存10一次读取这三个须被读取的子分区的数据即可。
以情形5为例,高位分区的高位子分区及低位分区的低位子分区须被读取,高位分区的低位子分区及低位分区的高位子分区无须被读取,然而须被读取的子分区之间夹了两个无须被读取的子分区(即高位分区的低位子分区及低位分区的高位子分区),为了避免分多次对内存进行读取,末级高速缓存10会一次将四个子分区的数据读取回来。
以情形9为例,高位分区的低位子分区及低位分区的低位子分区的数据须被读取,高位分区的高位子分区及低位分区的高位子分区的数据无须被读取,然而须被读取的子分区之间夹了一个无须被读取的子分区(即低位分区的高位子分区),同理,为了避免分多次对内存进行读取,末级高速缓存10会一次将从高位分区的低位子分区到低位分区的低位子分区之间的三个子分区(包含无须被读取的低位分区的高位子分区)的数据读取回来。其余情形以此类推。
由图6的表格可知:在情形1、情形3及情形5中,末级高速缓存10仍需读取所有子分区的数据,无法节省末级高速缓存10从内存读取数据的容量;在情形0、情形4、情形7、情形9中,末级高速缓存10仅需读取三个子分区的数据,可节省32Bytes的读取容量;在情形2、情形8、情形11中,末级高速缓存10仅需读取两个子分区的数据,可节省64Bytes的读取容量;在情形6、情形10、情形12、情形13中,末级高速缓存10仅需读取一个子分区的数据,可节省96Bytes的读取容量。
图7为本申请的计算器系统70的一实施例示意图。在图7中,计算系统70包括末级高速缓存700、计算引擎710及内存720。末级高速缓存70可为本申请的末级高速缓存10。计算引擎710耦接到末级高速缓存700,用来传送多个请求到末级高速缓存700,以及从末级高速缓存700接收回应所述多个请求的数据。内存720耦接到末级高速缓存700,用来从末级高速缓存700接收读取数据的请求,以及回传对应所述请求的数据到末级高速缓存700。
综上所述,本申请的末级高速缓存可以动态地调整从内存读取数据的粒度:在采用分区的情形下,粒度可减少为原高速缓存线大小的一半;以及在用于种类为部分写操作的请求时,粒度最多可减少为原高速缓存线大小的四分之一。比起未采用分区的末级高速缓存,本申请的末级高速缓存更能有效率地使用高速缓存线。此外,通过链表结构,本申请的末级高速缓存中的缺失状态处理寄存器可依照请求进入末级高速缓存的时间序维持请求被回传的顺序。
前文概述若干实施例的结构,使得所属领域的技术人员可更好理解本揭露的方面。所属领域的技术人员应了解,其可容易地使用本揭露作为设计或修改用于实行本文中介绍的实施例的相同目的及/或实现相同优点的其它制造过程及结构的基础。所属领域的技术人员还应认识到,此类等效构造不脱离本揭露的精神及范围,且其可在不脱离本揭露的精神及范围的情况下在本文中进行各种改变、替换及更改。
Claims (19)
1.一种末级高速缓存,用来通过第一接口接收来自计算引擎的多个请求,以及通过第二接口存取内存,其中所述多个请求的种类包括读操作及写操作,其特征在于,所述末级高速缓存包括:
数据存储器,包括:
多条高速缓存线,其中各高速缓存线包括高位分区及低位分区,所述高位分区的宽度及所述低位分区的宽度相同;
标记存储器,用来储存:
多个标记信息,分别对应所述多条高速缓存线;以及
多个分区有效信息,分别对应所述多条高速缓存线,其中各分区有效信息包括高位有效比特及低位有效比特,分别用来指示对应的所述多条高速缓存线的所述高位分区及所述低位分区是否处于有效状态;
缺失锁定信息存储器,用来储存对应所述多条高速缓存线的多个缺失锁定信
息,其中各缺失锁定信息包括高位缺失锁定比特及低位缺失锁定比特,分别用来指示对应所述多条高速缓存线的所述高位分区及所述低位分区是否处于锁定状态;
命中测试单元,其中所述多个请求中各请求包含标记信息域及分区信息域,依据所述标记信息域及所述分区信息域,所述命中测试单元判定是否命中所述多条高速缓存线的所述高位分区或所述低位分区;以及
缺失状态处理寄存器,其中所述多个请求包括第一请求及第二请求,所述第一请求的标记信息域与所述第二请求的标记信息域相同,以及所述第一请求的分区信息域与所述第二请求的分区信息域相同,且当所述命中测试单元判定所述第一请求为缓存缺失,及判定所述第二请求为缓存缺失下命中时,所述缺失状态处理寄存器根据所述第一请求及所述第二请求进入所述末级高速缓存的时间序,以链表的格式来暂存所述第一请求及所述第二请求。
2.依据权利要求1所述的末级高速缓存,其特征在于,所述多个请求包括第三请求,当所述第三请求对应的所述高位分区有效比特及所述低位分区有效比特分别指示所述高位分区及所述低位分区处于有效状态,且所述第三请求对应的所述高位缺失锁定比特及所述低位缺失锁定比特分别指示所述第三请求对应的所述高位分区及所述低位分区未处于锁定状态时,所述命中测试单元判定所述第三请求为缓存命中。
3.依据权利要求2所述的末级高速缓存,其特征在于,所述末级高速缓存还包括:命中队列,用来储存被所述命中测试单元判定为所述缓存命中的所述第三请求。
4.依据权利要求3所述的末级高速缓存,其特征在于,所述命中队列为一先进先出队列。
5.依据权利要求1所述的末级高速缓存,其特征在于,所述多个请求包括第四请求,当所述第四请求对应的所述高位分区有效比特指示所述第四请求对应的所述高位分区未处于有效状态,所述命中测试单元判定所述第四请求为缓存缺失。
6.依据权利要求5所述的末级高速缓存,其特征在于,所述末级高速缓存还包括:缺失队列,用来储存被所述命中测试单元判定为所述缓存缺失的所述第四请求。
7.依据权利要求6所述的末级高速缓存,其特征在于,所述缺失队列为一先进先出队列。
8.依据权利要求1所述的末级高速缓存,其特征在于,所述多个请求包括第五请求,当所述第五请求对应的所述高位分区有效比特及所述低位分区有效比特分别指示所述第五请求对应的所述高位分区及所述低位分区中至少一分区未处于有效状态,所述命中测试单元判定所述第五请求为缓存缺失。
9.依据权利要求8所述的末级高速缓存,其特征在于,通过所述第二接口,所述末级高速缓存从所述内存读取对应到所述高位分区及所述低位分区中未处于有效状态的分区的数据。
10.依据权利要求8所述的末级高速缓存,其特征在于,所述末级高速缓存还包括:缺失队列,用来储存被所述命中测试单元判定为所述缓存缺失的所述第五请求。
11.依据权利要求10所述的末级高速缓存,其特征在于,所述缺失队列为一先进先出队列。
12.依据权利要求1所述的末级高速缓存,其特征在于,所述多个请求包括第六请求,当所述第六请求对应的所述高位分区有效比特及所述低位分区有效比特分别指示所述第六请求对应的所述高位分区及所述低位分区处于有效状态,且所述第六请求对应的所述高位缺失锁定比特及所述低位缺失锁定比特分别指示所述第六请求对应的所述高位分区及所述低位分区中至少一分区处于锁定状态时,所述命中测试单元判定所述第六请求为缓存缺失下命中。
13.依据权利要求1所述的末级高速缓存,其特征在于,当高速缓存线被驱逐时,通过所述第二接口,所述末级高速缓存写回所述高速缓存线中对应到所述高位分区及/或所述低位分区的数据到所述内存中。
14.依据权利要求1所述的末级高速缓存,其特征在于,所述多个请求包含有第七请求及第八请求,若所述第七请求进入高速缓存线的时间早于所述第八请求进入所述高速缓存线的时间,在所述第七请求被所述末级高速缓存回传到所述计算引擎后,所述第八请求被所述末级高速缓存回传到所述计算引擎。
15.依据权利要求1所述的末级高速缓存,其特征在于,所述高位分区的宽度及所述低位分区的宽度皆为所述第二接口的总线宽度的两倍,以及所述多个请求的种类还包括部分写操作。
16.依据权利要求15所述的末级高速缓存,其特征在于,所述高位分区及所述低位分区进一步分别包括高位子分区及低位子分区,以及多个子分区的顺位由高位至低位依序为所述高位分区的高位子分区、所述高位分区的低位子分区、所述低位分区的高位子分区及所述低位分区的低位子分区,且所述多个请求中的各请求还包括子分区信息域。
17.依据权利要求16所述的末级高速缓存,其特征在于,所述多个请求包含种类为所述部分写操作的第九请求,若所述第九请求被判定为所述缓存缺失,通过所述第二接口,所述末级高速缓存从所述内存读取对应于所述第九请求的所述多个子分区中至少一子分区的数据。
18.依据权利要求17所述的末级高速缓存,其特征在于,所述第九请求欲对对应所述第九请求的所述多个子分区中至少一特定子分区进行所述部分写入操作,以及不对对应所述第九请求的所述多个子分区中剩余的至少两子分区进行所述部分写入操作,且所述剩余的两子分区之间夹着所述至少一特定子分区,则所述末级高速缓存从所述内存读取对应于所述第九请求的所述多个子分区中的所述剩余的两子分区及之间的所述至少一特定子分区的数据。
19.一种计算机系统,其特征在于,包括:
如权利要求1至18中任一项所述的末级高速缓存;
所述计算引擎;以及
所述内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211149739.XA CN117785737A (zh) | 2022-09-21 | 2022-09-21 | 基于链表结构并支持动态分区粒度访问的末级高速缓存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211149739.XA CN117785737A (zh) | 2022-09-21 | 2022-09-21 | 基于链表结构并支持动态分区粒度访问的末级高速缓存 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117785737A true CN117785737A (zh) | 2024-03-29 |
Family
ID=90383904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211149739.XA Pending CN117785737A (zh) | 2022-09-21 | 2022-09-21 | 基于链表结构并支持动态分区粒度访问的末级高速缓存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117785737A (zh) |
-
2022
- 2022-09-21 CN CN202211149739.XA patent/CN117785737A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169232B2 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
US10387315B2 (en) | Region migration cache | |
JP5379358B2 (ja) | データの優先順位付けを用いるマルチレベルのメモリ・アーキテクチャ | |
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
US7558920B2 (en) | Apparatus and method for partitioning a shared cache of a chip multi-processor | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
US6681293B1 (en) | Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries | |
KR100978156B1 (ko) | 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
US6170070B1 (en) | Test method of cache memory of multiprocessor system | |
US20100325374A1 (en) | Dynamically configuring memory interleaving for locality and performance isolation | |
US7590802B2 (en) | Direct deposit using locking cache | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
US6915396B2 (en) | Fast priority determination circuit with rotating priority | |
US20020169935A1 (en) | System of and method for memory arbitration using multiple queues | |
US7702875B1 (en) | System and method for memory compression | |
JP2020030822A (ja) | インメモリコンピューティングのための大容量メモリシステム | |
US7596665B2 (en) | Mechanism for a processor to use locking cache as part of system memory | |
US11829292B1 (en) | Priority-based cache-line fitting in compressed memory systems of processor-based systems | |
CN115357196A (zh) | 动态可扩展的组相联高速缓存方法、装置、设备及介质 | |
US20100257319A1 (en) | Cache system, method of controlling cache system, and information processing apparatus | |
US20230236961A1 (en) | Priority-Based Cache-Line Fitting in Compressed Memory Systems of Processor-Based Systems | |
US10942860B2 (en) | Computing system and method using bit counter | |
CN117785737A (zh) | 基于链表结构并支持动态分区粒度访问的末级高速缓存 | |
US6397295B1 (en) | Cache mechanism for shared resources in a multibus data processing system | |
JPS6194159A (ja) | メモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |