一种内容填充方法和存储器与流程

文档序号:17185588发布日期:2019-03-22 21:19阅读:176来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种内容填充方法和存储器。
背景技术
::处理器中的多个访问源可以访问同一个高速缓冲存储器,在此高速缓冲存储器可以简称为缓存(cache)。当一个访问源访问这个缓存时,如果访问到所需求的内容,则为缓存命中(cachehit),如果没有访问到所需求的内容,则为缓存未命中(cachemiss)。当缓存未命中时,访问源所需内容需要从其他存储器中获取,并被填充至该缓存中,以替换该缓存中的原有内容,原有内容有可能为其他访问源所需。如果该原有内容需要被频繁访问时,则需要将该原有内容重新填充至该缓存中。这有可能导致一个内容重复的被替换和被填入,进而导致多个访问源的内容填充发生踩踏,增大了访问延迟,降低了处理器性能。技术实现要素:本申请实施例提供了一种内容填充方法和一种高速缓冲存储器。能够提升处理器性能。第一方面,本申请实施例提供了一种内容填充方法,该方法包括:当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组;检测所述第一群组对应的缓存条目是否空闲;如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。通过上述方式,将访问源分为群组,并根据群组对应的缓存条目,能够降低各访问源内容填充发生踩踏的概率,进而降低访问延迟,提升处理器性能。可选地,访问源所属的群组是根据所述访问源的类型或者所述访问源的标识确定的;或者,访问源所属的群组是根据哈希算法确定的。结合第一方面,进一步地,该方法还可以包括:如果所述第一群组对应的缓存条目均不空闲,检测其他群组对应的缓存条目是否空闲;如果所述其他群组中的第二群组对应的缓存条目中的第二缓存条目空闲,将所述访问源所需内容填充至所述第二缓存条目。通过上述方式,能够灵活利用缓存空间。结合第一方面,进一步地,该方法还可以包括:如果所述第一群组对应的缓存条目均不空闲,检测所述第一群组对应的缓存条目所缓存的内容中是否存在越组内容,所述越组内容的访问源不属于所述第一群组;如果所述第一群组对应的缓存条目中的第三缓存条目缓存的内容为所述越组内容,将所述访问源所需内容填充至所述第三缓存条目。通过上述方式,能够灵活利用缓存空间。结合第一方面,进一步地,该方法还可以包括:如果所述第一群组对应的缓存条目中没有缓存越组内容,选取所述第一群组对应的缓存条目中的任意一个缓存条目作为第四缓存条目,并将所述访问源所需内容填充至所述第四缓存条目。通过上述方式,能够灵活利用缓存空间。结合第一方面,进一步地,该方法还可以包括:如果所述第一群组对应的缓存条目中有多个缓存条目空闲,确定所述多个缓存条目中优先级最高的缓存条目为所述第一缓存条目。可选地,所述第一群组对应的缓存条目的优先级是根据缓存条目的标识确定的。通过上述方式,能够灵活利用缓存空间。第二方面,本申请实施例提供了一种高速缓冲存储器。该高速缓冲存储器包括控制器及多个缓存条目。其中,该控制器用于执行第一方面中的任意一种方法。第三方面,本申请实施例提供了一种存储计算机指令的可读非易失性存储介质,所述计算机指令用以执行第一方面中的任意一种方法。本申请实施例中,当需要将访问源所需内容填充至缓存条目时,可以确定该访问源所属的第一群组,检测该第一群组对应的缓存条目是否空闲,如果第一群组中对应缓存条目中的第一缓存条目空闲,则可以将访问源所需内容填充至第一缓存条目。通过上述方式,将访问源分为群组,并根据群组对应的缓存条目,能够降低各访问源内容填充发生踩踏的概率,进而降低访问延迟,提升处理器性能。附图说明为了更清楚地说明本申请实施例或
背景技术
:中的技术方案,下面将对本申请实施例或
背景技术
:中所需要使用的附图进行说明。图1是本申请实施例涉及的一种计算机系统的架构示意图;图2是本申请实施例涉及的一种高速缓冲存储器的结构示意图;图3是本申请实施例涉及的一种缓存条目的结构示意图;图4是本申请实施例提供的一种内容填充方法的流程示意图;图5是本申请实施例提供的一种内容填充的应用示意图;图6是本申请实施例提供的另一种内容填充方法的流程示意图;图7是本申请实施例提供的另一种内容填充的应用示意图;图8是本申请实施例提供的又一种内容填充方法的流程示意图;图9是本申请实施例提供的又一种内容填充的应用示意图;图10是本申请实施例提供的又一种内容填充方法的流程示意图;图11是本申请实施例提供的又一种内容填充方法的流程示意图;图12是本申请实施例提供的一种高速缓冲存储器的结构示意图。具体实施方式本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。为了便于理解本申请的技术方案,首先介绍本申请所涉及的应用场景。请参阅图1,图1是本申请实施例涉及的一种计算机系统。如图1所示,该计算机系统包括处理器10和存储器30。其中,处理器10包括处理器核11~1n以及缓存1m,在此,缓存1m被配置在处理器核外,则缓存1m可以是核外缓存,处理器核11~1n可以作为缓存1m的访问源,此种情况下访问源由其中运行的程序触发对缓存1m中的内容进行访问。在此,访问可以理解为对内容的读取或调用。如图1所示,每个处理器核内可以包括一个或多个访问源以及缓存。以处理器核11为例,处理器核11包括访问源111~11x以及缓存110。其中,缓存被配置在处理器核内,则缓存110可以是核内缓存,同理,缓存120~1n0也可以是核内缓存。访问源111~11x可以是处理器核11中运行的进程、线程、虚拟机(virtualmachine)等;在此不予限定。其中,m,n,x,y,z均为正整数;m为1至n之外的任意一个正整数;x,y,z可以相同,可以不同,在此不予限定。需要说明的是,图1中所示的处理器10可以由一个或多个处理器芯片实现,进而处理器10包括的处理器核11~1n可以来自不同的处理器芯片,在此不予限定。此外,缓存1m可以由一个或多个核外缓存芯片实现,在此不予限定。其中,处理器10和存储器30连接。存储器30可以与处理器处于同一个芯片中,也可以是设置在处理器所处的芯片的外部,在此不予限定。结合图1,图2示出了一种缓存的结构示意图。如图2所示,缓存20包括控制器201和存储单元203。示例性地,缓存20可以是核内缓存,此时,缓存20被配置在处理器核内,访问源21~2p代表该处理器核内的访问源。例如,缓存20可以是图1中所示的缓存110至缓存1n0中的任意一个,以缓存20为图1中所示的缓存110为例,访问源21~2p即为图1中所示的访问源111~11x。或者,缓存20可以是核外缓存,此时,缓存20被配置在处理器核外,访问源21~2p代表访问该缓存20的处理器核。例如,缓存20可以是图2中所示的缓存1m,此时访问源21~2p即为图1中所示的处理器核11~1n中的一个或多个。需要说明的是,缓存20还可以是其他级别或类型的缓存,在此不予限定。示例性地,缓存20所包括的控制器201可以是由应用集成电路、集成逻辑电路、芯片或者其他能够实现控制功能的器件实现的,在此不予限定。存储单元203可以包括一个或多个缓存条目(entry),分别为entry1至entryq。具体的,当一个内容被回填至缓存中时,该内容被填放在一个缓存条目中。其中,内容被回填是指该内容从存储器中被复制到缓存中;缓存条目可以理解为一个单位存储单元,如图3所示,一个缓存条目可以包括一个内容和该内容对应的标签(tag),这里的标签是指该内容存储在存储器中的部分或全部存储地址。本申请中所描述的内容可以包括以下任意一种:指令、数据或页表项(pagetableentry,pte)。上述p,q为正整数。基于图2所示的缓存结构,在一种传统的实现方式中,假设访问源21需要一个从存储器中的一个存储地址访问一个内容时,如从该存储地址读或写一个内容时,该访问源21可以首先向缓存20中的控制器201发送访问请求,该访问请求用于请求访问该内容,该访问请求可以携带有请求访问的存储地址。控制器201可以根据缓存条目中的标签,来判断是否有该存储地址,如果控制器201通过标签判断出缓存条目中有该存储地址,则表明缓存条目中缓存有该存储地址中对应的内容,这种情况可以理解为缓存命中;如果控制器201通过标签判断出缓存条目中没有该存储地址,则表明缓存条目中没有缓存有该存储地址中对应的内容,这种情况可以理解为缓存未命中。如果缓存未命中,则控制器201可以根据该存储地址从对应的存储器,例如图1所示的存储器30,中调取该内容,并将其填充至存储单元203中的一个缓存条目,并将该内容对应的存储地址(标签)也填充至该缓存条目中,例如,填充至缓存条目entry1中。当存储单元203中的缓存条目均被填充有内容,仍需要向存储单元203填充内容时,可以根据当前替换算法,例如最近最少使用(leastrecentused,lru),最近最多使用(mostrecentused,mru),随机(random)或先进先出(firstinfirstout,fifo)等,将上述内容填充至一个缓存条目中,例如,将该内容填充至缓存条目entry1中,则缓存条目entry1中原有的内容会被替换。如果原有的内容仍需要被访问,则需要将原有的内容重新填充至一个缓存条目中,基于相同的替换策略,该原有的内容很有可能被重新填充至缓存条目entry1中,这就导致缓存条目entry1中的内容重复替换,影响了访问源的访问效率,进而影响了处理器的性能。结合上述系统及缓存结构,下面介绍本申请所提供的技术方案。请参阅图4,图4是本申请实施例提供的一种内容填充的方法的流程示意图。如图4所示,该方法至少包括以下步骤。步骤s401,当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组。示例性地,需要将访问源所需内容填充至缓存条目的一种情况可以是:当访问源向控制器请求访问一个内容时,控制器可以首先在存储单元的缓存条目中查找是否有该内容,如果未查找到该内容,则可以从存储器中调取该内容,并将该内容填充至存储单元中,该过程也可以被理解为内容回填。在此种情况下,可以首先确定发出访问请求的访问源所属的群组。其中,访问源与群组的所属关系是预设的。访问源与群组的所属关系可以包括以下任意一种:(1)、根据访问源之间的关联关系将访问源划分成一个或多个群组。例如,可以根据访问源的类型、访问源通常访问内容的大小、访问源通常访问内容的类型、访问源访问缓存的频繁程度、访问源的标识中的一种或多种方式结合,对访问源进行划分,在此不予限定。访问源的类型可以包括进程、线程等。例如,若根据访问源的类型对访问源进行划分,相同类型的访问源可以划分至一个群组;若根据访问源的标识对访问源进行划分,标识相邻的n个访问源可以划分至一个群组,n可以是预设正整数;若根据访问源通常访问内容的大小,可以设置一个群组的访问内容的固定大小,根据该固定大小,确定一个群组中包括的访问源,使各访问源通常访问内容的大小之和小于或等于该固定大小;本申请实施例中,内容的第一类型包括指令、数据、页表项等,内容的第二类型是指在第一类型中的一个类型下的具体类型,如指令包括读取指令、写入指令、处理指令等等可以理解为内容的第二类型。在此,若根据访问源通常访问内容的类型对访问源进行划分,是指根据访问源的通常访问内容的第二类型对访问源进行划分;若根据访问源访问缓存的频繁程度对访问源进行划分,可以将访问频繁的访问源与访问不频繁的访问源划分为一个群组,从而能够避免过多的访问频繁的访问源在访问缓存时,产生内容相互踩踏的问题。当然,还可以根据上述方式的结合对访问源进行访问,在此不予限定。(2)、如果访问该缓存的访问源的数量较少,可以将每个访问源分别划分成一个群组。每个群组可以对应一个或多个缓存条目。(3)、通过预设算法(如哈希算法),确定访问源与群组的映射关系,从而确定访问源与群组的所属关系,例如,访问源a和访问源b分别通过预设算法映射至第一群组中,则可以确定访问源a和访问源b属于第一群组。从而,根据上述访问源与群组预设的所属关系,即可确定访问源所属的群组。或者,控制器可以根据访问源所携带的所属群组的群组标识,确定访问源所属的群组。在此不予限定。其中,可以将存储单元中的多个缓存条目进行分组,每个分组包括一个或多个缓存条目,也就是说,访问源所属的一个群组对应一个分组,进而每个群组对应一个或多个缓存条目。其中,缓存条目的分组方式可以是硬件实现的,即存储单元中一个分组的缓存条目与其他分组中的缓存条目物理独立;或者,缓存条目的分组方式可以是软件实现的,控制器可以调用该分组方式以确定群组对应的缓存条目。例如,群组所对应的缓存条目的数量可以是通过以下任意一种方式确定的:群组所对应的缓存条目的数量是根据该群组中的访问源的数量确定的,或者,群组所对应的缓存条目的数量是根据该群组中的访问源通常所访问内容的大小确定的,例如可以统计各群组的访问源通常所访问内容的大小,进而根据各群组的访问内容的大小,确定与该群组对应的缓存条目的数量。当然,群组所对应的缓存条目的数量还可以通过其他方式确定,在此不予限定。此外,各群组分别对应的缓存条目可以存在交集,或者各群组分别对应的缓存条目完全独立,不存在交集,在此不予限定。可选地,群组与缓存条目的对应关系可以预存储在一个对应关系表中,控制器通过查看该对应关系表,即可确定群组与缓存条目的对应关系;或者,群组与缓存条目的对应关系是通过控制器中的逻辑电路实现的,在此不予限定。下面结合图5举例说明访问源与缓存中的缓存条目的对应关系。需要说明的是,图5中仅示例性的对访问源、所属群组以及与entry的对应关系进行说明,当然还可以包括其他实现方式,在此不予限定。图5中,访问源a至访问源e均访问图5中所示的缓存。该缓存至少包括缓存条目entry1至entry8。其中,访问源a和访问源b属于群组1,访问源c属于群组2,访问源d和访问源e属于群组3。访问源划分群组的方式可参见上述方式或其他划分方式,在此不予限定。群组1对应于缓存中的entry1至entry3,即访问源a或访问源b可以优先访问entry1至3;群组2对应于缓存中的entry4至entry5,即访问源c可以优先访问entry4和entry5;群组3对应于缓存中的entry5至entry8,即访问源d或访问源e可以优先访问entry5至entry8。在此,entry5可以被访问源c、访问源d和访问源e访问,即可以被来自两个群组的访问源访问;也就是说,群组2和群组3各自对应的缓存条目存在交集,该交集包括缓存条目entry5。在一种实现方式中,假设访问源a所需内容未在缓存中,控制器可以将访问源a所需内容从内存中调取出来,并将该内容作为待填充内容,填充至缓存条目entry1至entry8的其中一个缓存条目中。具体的,控制器可以首先确定该访问源所属群组,在确定出访问源a所属群组为群组1后,可以确定群组1所对应的缓存条目为entry1至entry3。进而,访问源a可以通过下述实施例中的任意一种实现方式,将待填充内容填充至entry1至entry3中的其中一个缓存条目中。可选地,当确定出一个群组对应的缓存条目后,还可以为该群组中的各访问源分配上述缓存条目中的一个或多个。例如,图3中访问源a对应的缓存条目为entry1至entry2,访问源b对应的缓存条目为entry3等。在此不予限定。步骤s402,检测所述第一群组对应的缓存条目是否空闲。示例性地,可以通过检测缓存条目中包括的有效(valid)标志位来检测该缓存条目是否空闲,如果有效标志位被置为有效,则表明该缓存条目中缓存有有效内容,如果有效标识为被置为无效,则表明该缓存条目空闲,可以存储上述访问源所需内容。示例性地,如果第一群组对应的缓存条目为多个,可以按照缓存条目的标识排序依次检测这多个缓存条目,或者按照预设顺序依次检测这多个缓存条目,看是否存在空闲的缓存条目,在此不予限定。步骤s403,如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。示例性地,如果缓存条目中存在多个缓存条目空闲,可以根据缓存条目的优先级选取缓存条目,缓存条目的优先级可以基于该缓存条目的标识进行确定,或者基于该缓存条目被使用的频率确定,或者基于其他方式确定,在此不予限定。若缓存条目的优先级可以基于缓存条目的标识进行确定,可以选取标识最大、或标识最小、或最接近标识平均值的一个标识的缓存条目作为第一缓存条目来存储该待填充内容。或者,如果缓存条目中存在多个缓存条目空闲,还可以随机选取该多个空闲缓存条目中的一个。或者通过其他方式选取出第一缓存条目,在此不予限定。可选地,如果第一群组对应的缓存条目中不存在空闲的缓存条目,则可以继续遍历检测第一群组中的缓存条目,直至存在空闲缓存条目;或者,选取第一群组对应的缓存条目中的任意一个缓存条目,将待填充内容填充至该缓存条目中;又或者,通过下述实施例描述的方式中的任意一种选取出缓存条目,在此不予限定。本申请实施例中,当需要将访问源所需内容填充至缓存条目时,可以确定该访问源所属的第一群组,并将访问源所需内容优先填充至第一群组对应的空闲缓存条目中。通过对访问源进行分组,能够有效避免各访问源所需内容发生互相踩踏现象,降低了访问时延,进而提升了处理器性能。请参阅图6,图6是本申请实施例提供的另一种内容填充方法的流程示意图。如图6所示,该方法至少包括以下步骤。步骤s601,当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组。步骤s602,检测所述第一群组对应的缓存条目是否空闲。步骤s603,如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。其中,步骤s601至步骤s603的实现方式可以参见上述实施例中对应步骤的描述方式,在此不再赘述。步骤s604,如果所述第一群组对应的缓存条目均不空闲,检测其他群组对应的缓存条目是否空闲。示例性地,可以按照预设顺序依次检测其他群组对应的缓存条目。例如,当第一群组对应的缓存条目不空闲时,可以依次检测其他群组对应的缓存条目,或者,可以依次检测第一群组对应的缓存条目的相邻缓存条目,在此不予限定。通过检测其他群组对应的缓存条目,能够更好的利用缓存空间。步骤s605,如果所述其他群组中的第二群组对应的缓存条目中的第二缓存条目空闲,将所述访问源所需内容填充至所述第二缓存条目。可选地,上述方法还包括:如果检测第二群组对应的第二缓存条目空闲,可以判断上述访问源是否有访问第二群组对应的缓存条目的权限。如果有权限,则控制器将访问源所需内容填充至第二缓存条目,如果没有权限,可以继续检测其他群组的缓存条目是否空闲,或者将该访问源所需内容填充至第一群组中的其中一个缓存条目中,以替换该缓存条目中的原内容等。其中,访问源具备访问除所属群组外的其他群组的权限,是指控制器能够将该访问源所需内容填充至其他群组。具体的,当确定出群组与缓存条目之间的对应关系后,可以为各群组对应的缓存条目设置访问权限,进而限制不属于该群组的访问源对其对应的缓存条目的访问。例如,如果访问源所属第一群组,且访问源不具备访问第二群组的权限,则控制器可以将该访问源所需内容填充至第一群组对应的缓存条目中,而不能将该访问源所需内容填充至第二群组对应的缓存条目中。又例如,如果访问源所属第一群组,且访问源具备访问第三群组的权限,则控制器可以在第一群组对应的缓存条目均无空闲的情况下,将该访问源所需内容填充至第三群组对应的缓存条目中。此时,该访问源所需内容也可以理解成第三群组对应的缓存条目中所缓存的越组内容。可选地,访问源的权限设置可以基于访问源的类型、访问源通常访问的内容的类型或访问源通常访问的内容的大小等因素确定,在此不予限定。可选地,上述方法还包括:控制器在以串行访问的方式来访问缓存条目的情况下,将访问源所需内容填充至第二缓存条目后,可以继续检测第一群组对应的缓存条目是否空闲,如果第一群组对应的缓存条目中有空闲的缓存条目,则可以将填充至第二缓存条目中的内容转移至该空闲的缓存条目中进行缓存,并可以通知该内容对应的访问源,以便当访问源需要一个内容时,控制器在第一群组对应的缓存条目中查找该访问源所需的内容,以提升访问效率。其中,串行访问的方式是指控制器依次访问缓存中的缓存条目,即每次仅访问一个缓存条目,或者每次仅访问一个群组对应的缓存条目。下面结合图7示例性地说明图6所示实施例中的方法。如图7所示,当需要将访问源a所需内容填充至缓存条目时,控制器首先确定访问源a所属的群组为群组1,进而确定群组1对应的缓存条目为entry1至entry3。检测entry1至entry3是否空闲,如果如图7中所示,entry1至entry3均不空闲,则可以依次检测相邻缓存条目是否空闲,如依次检测entry4至entry8是否空闲,或者,依次检测相邻群组对应的缓存条目是否空闲,例如,依次检测群组2至群组3各自对应的缓存条目是否空闲,在此不作限定。当检测到entry5空闲时,可选地,可以确定访问源a是否有访问entry5的权限,如果访问源a有访问entry5的权限,则可以将访问源a所需内容填充至entry5,如果没有权限,则可以进一步检测其他缓存条目是否空闲,例如,检测到entry6空闲,且访问源a具备访问entry6的权限,则可以将访问源a所需内容填充至entry6中,在此不作具体限定。可选地,可以记录将访问源a的访问源所需内容填充至entry6中,以便访问源a下次请求访问该内容时,控制器除访问entry1至entry3外,可以访问entry6。如此无需控制器访问所有缓存,提升访问效率。可选地,控制器在以串行访问的方式来访问缓存条目的情况下,当将访问源a所需内容填充至entry6后,还可以进一步检测entry1至entry3是否空闲,当entry1至entry3中的至少一个缓存条目出现空闲状态时,可以将上述填充至entry6的内容转移至entry1至entry3中进行缓存,以提升访问效率。通过上述方式,当访问源所属的群组对应的缓存条目均不空闲时,可以利用其他群组对应的缓存条目来缓存该访问源所需内容,从而能够灵活利用缓存中的空间。请参阅图8,图8是本申请实施例提供的又一种内容填充方法的流程示意图。如图8所示,该方法至少包括以下步骤。步骤s801,当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组。步骤s802,检测所述第一群组对应的缓存条目是否空闲。步骤s803,如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。其中,步骤s801至步骤s803的实现方式可以参见上述实施例中对应步骤的描述方式,在此不再赘述。步骤s804,如果所述第一群组对应的缓存条目均不空闲,检测所述第一群组对应的缓存条目所缓存的内容是否为越组内容,所述越组内容的访问源不属于所述第一群组。其中,在本发明实施例中所述越组内容是指当前群组对应的缓存条目中缓存有其他群组的访问源所请求的内容,所述其他群组是指除所述访问源所属群组之外的任意一个群组。也就是说,如果将一个访问源所需内容未填充至该访问源所属群组对应的缓存条目中,而是将其填充至其他群组中,则该内容可以被理解为是越组内容。例如,在第一群组对应的一个缓存条目中缓存有一个内容,该内容是访问源c所需内容,访问源c所属群组为第二群组,由于该访问源c所需内容被缓存在第一群组对应的一个缓存条目中,而非第二群组对应的一个缓存条目中,因此该访问源c所需的内容可以理解为是越组内容。示例性地,除第一群组外的其他群组中的访问源由于其所属群组对应的缓存条目均不空闲,则控制单元将该访问源所需内容填充至第一群组对应的缓存条目中,这就导致第一群组对应的缓存条目中缓存的内容中有越组内容。步骤s805,如果所述第一群组对应的缓存条目中的第三缓存条目缓存有所述越组内容,将所述访问源所需内容填充至所述第三缓存条目。可选地,上述方法还包括:控制器在以串行访问的方式来访问缓存条目的情况下,当检测到第一群组对应的缓存条目中存在缓存有越组内容的缓存条目时,可以进一步确定该越组内容的访问源。并检测当前该访问源所属群组对应的缓存条目中是否存在空闲的缓存条目,如果存在空闲的缓存条目,则可以将该越组内容填充至该空闲的缓存条目后,将访问源所需内容填充至第三缓存条目中。下面结合图9示例性地说明图8所示实施例中的方法。如图9所示,当需要将访问源a所需内容填充至缓存条目时,,控制器首先确定访问源a所属的群组为群组1,进而确定群组1对应的缓存条目为entry1至entry3。检测entry1至entry3是否空闲,如果如图7中所示,entry1至entry3均不空闲,则进一步判断entry1至entry3中是否缓存有越组内容,如果检测出entry2中缓存有越组内容,也就是说该内容的访问源不属于群组1,例如,该内容的访问源属于群组2,则可以将访问源a的访问源所需内容填充至entry2中,以替换该越组内容。可选地,控制器在以串行访问的方式来访问缓存条目的情况下,在检测entry2中缓存有越组内容后,还可以进一步地确定该越组内容的访问源所属的群组,假设该越组内容的访问源为访问源c,可以进一步判断访问源c所属的群组2对应的缓存条目中是否有空闲,如果此时entry5空闲,则可以首先将越组内容转移至entry5中,再将访问源a所需内容填充至entry2中。进一步地,如果上述访问源c的越组内容在缓存至entry2时,记录其缓存地址并通知访问源c时,当该越组内容转移至entry5后,可以记录其新的缓存地址并通知访问源c或其他访问源,以使访问源c或需要访问该越组内容的访问源能够在缓存中找到该内容。请参阅图10,图10是本申请实施例提供的又一种内容填充方法的流程示意图。图10示出了一种结合图6和图8所示方法的实现方式。如图8所示,该方法至少包括以下步骤。步骤s1001,当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组。步骤s1002,检测所述第一群组对应的缓存条目是否空闲。步骤s1003,如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。其中,步骤s1001至步骤s1003的实现方式可以参见上述实施例中对应步骤的描述方式,在此不再赘述。步骤s1004,如果所述第第一群组对应的缓存条目均不空闲,检测所述第一群组对应的缓存条目缓存的内容是否为越组内容,所述越组内容的访问源不属于所述第一群组。步骤s1005,如果所述第一群组对应的缓存条目中的第三缓存条目缓存有所述越组内容,将所述访问源所需内容填充至所述第三缓存条目。步骤s1006,如果所述第一群组对应的缓存条目中没有缓存越组内容,检测其他群组对应的缓存条目是否空闲。步骤s1007,如果所述其他群组对应的缓存条目中的第二缓存条目空闲,将所述访问源所需内容填充至所述第二缓存条目。步骤s1008,如果所述其他群组对应的缓存条目均不空闲,选取所述第一群组对应的缓存条目中的任意一个缓存条目作为第四缓存条目,并将所述访问源所需内容填充至所述第四缓存条目。上述步骤的具体描述可参见上述实施例中的对应描述,在此不予赘述。下面结合图9示例性地说明图10所示的方法。如图9所示,当需要将访问源a所需内容填充至缓存条目时,,控制器可以首先确定访问源a所属的群组为群组1,进而确定群组1对应的缓存条目为entry1至entry3。检测entry1至entry3是否空闲,如果如图9中所示,entry1至entry3均不空闲,则进一步判断entry1至entry3中是否缓存有越组内容,如果检测出entry2中缓存有越组内容,则可以将访问源a所需内容填充至entry2中。假设entry1至entry3均没有缓存有越组内容,可以依次检测相邻缓存条目是否空闲,如依次检测entry4至entry8是否空闲,或者,依次检测相邻群组对应的缓存条目是否空闲,例如,依次检测群组2至群组3各自对应的缓存条目是否空闲,在此不作限定。当检测到entry5空闲时,假设entry1至entry8均不空闲,且entry1和entry3中均未缓存有越组内容。在此种情况下,一种实现方式为:可以将访问源a所需内容填充至entry1至entry3中的任意一个,例如,采用随机算法随机选取一个缓存条目。另一种实现方式为:确定entry1至entry3的优先权,根据优先权选取优先权级别最高的一个缓存条目或者选取优先级别最低的一个缓存条目,在此不作限定。在确定缓存条目的优先级时,可以根据缓存条目的标识,或者根据缓存条目被使用的频率,或者根据缓存条目中内容被替换的频率等确定。假设一个群组的访问源各自对应一个或多个缓存条目时,可以根据各访问源的优先级,确定其对应的缓存条目的优先级。对于优先级的确定方式在此不予限定。通过上述方式能够充分利用缓存中的缓存空间,实现将访问源所需内容填充至缓存中。请参阅图11,图11是本申请实施例提供的又一种内容填充方法的流程示意图。图11示出了一种结合图6和图8所示方法的实现方式。如图11所示,该方法至少包括以下步骤。步骤s1101,当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组。步骤s1102,检测所述第一群组对应的缓存条目是否空闲。步骤s1103,如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。步骤s1104,如果所述第一群组对应的缓存条目均不空闲,检测其他群组对应的缓存条目是否空闲。步骤s1105,如果所述缓存群组中的第二群组对应的缓存条目中的第二缓存条目空闲,将所述访问源所需内容填充至所述第二缓存条目。步骤s1106,如果所述其他群组对应的缓存条目均不空闲,检测所述第一群组对应的缓存条目中是否缓存有越组内容,所述越组内容的访问源不属于所述第一群组。步骤s1107,如果所述第一群组对应的缓存条目中的第三缓存条目缓存有所述越组内容,将所述访问源所需内容填充至所述第三缓存条目。步骤s1108,如果所述第一群组对应的缓存条目中没有缓存越组内容,选取所述第一群组对应的缓存条目中的任意一个缓存条目作为第四缓存条目,并将所述访问源所需内容填充至所述第四缓存条目。上述步骤的具体描述可参见上述实施例中的对应描述,在此不予赘述。下面结合图9示例性地说明图11所示的方法。如图9所示,当需要将访问源a所需内容填充至缓存条目时,控制器可以首先确定访问源a所属的群组为群组1,进而确定群组1对应的缓存条目为entry1至entry3。检测entry1至entry3是否空闲,如果如图9中所示,entry1至entry3均不空闲,则可以依次检测相邻缓存条目是否空闲,如依次检测entry4至entry8是否空闲,或者,依次检测相邻群组对应的缓存条目是否空闲,例如,依次检测群组2至群组3各自对应的缓存条目是否空闲,在此不作限定。当检测到entry5空闲时,可选地,可以确定访问源a是否有访问entry5的权限,如果访问源a有访问entry5的权限,则可以将访问源a所需内容填充至entry5,如果没有权限,则可以进一步检测其他缓存条目是否空闲,例如,检测到entry6空闲,且访问源a具备访问entry6的权限,则可以将上述访问源a所需内容填充至entry6中,在此不作具体限定。假设entry4至entry8均不空闲,则可以进一步判断entry1至entry3中是否缓存有越组内容,如果检测出entry2中缓存有越组内容,则可以将访问源a的访问源所需内容填充至entry2中。假设entry1至entry8均不空闲,且entry1和entry3中均未缓存有越组内容。在此种情况下,可以通过上述方式选取entry1至entry3中的一个缓存条目,将访问源所需内容填充至选取的缓存条目中。通过上述方式,能够充分利用缓存中的缓存空间,实现将访问源所需内容填充至缓存中。可以理解地,控制器在以并行访问的方式来访问缓存条目的情况下,可以执行本申请实施例提供的任意一种方法。下面介绍用于实现上述方法实施例的装置实施例。请参阅图12,图12是本申请实施例提供的一种高速缓冲存储器的结构示意图。如图12所示,该缓存120可以包括控制器121和存储单元123。其中,存储单元123包括多个缓存条目entry1~entryk,k为正整数。多个缓存条目可以被划分为至少一个分组,其中该划分方式可以是硬件实现,即存储单元中一个分组的缓存条目与其他分组中的缓存条目物理独立;或者,也可以是软件实现。在此不予限定。图12中示例性地示出了一种分组方式,应当理解,还可以存在其他分组方式,在此不予限定。其中,每个分组对应一个群组,每个群组包括一个或多个访问源。如图12所示,entry1~entryk1为分组1,entryk2~entryk3为分组2,直至entrykx~entryk为分组j。其中,k1、k2,k3至kx,j为正整数。控制器121可以包括功能单元,例如,如图12中所示,控制器121可以包括分组单元1211、确定单元1213、检测单元1215和填充单元1217。其中,分组单元1211,用于为所述多个缓存条目分组,每一组与一个群组相对应,所述群组包括至少一个访问源;确定单元1213,用于当需要将访问源所需内容填充至缓存条目时,确定所述访问源所属的第一群组;检测单元1215,用于检测所述第一群组对应的缓存条目是否空闲;填充单元1217,用于如果所述第一群组对应的缓存条目中的第一缓存条目空闲,将所述访问源所需内容填充至所述第一缓存条目。其中,上述功能单元可以指特定应用集成电路(application-specificintegratedcircuit,asic),,集成逻辑电路,和/或其他可以提供上述功能的器件,或者,上述功能单元也可以由软件实现,在此不作限定。当然,控制器中还可以包括其他功能单元,用以实现上述方法中的一个或多个步骤。在此,不予限定。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1