CN115809208A - 缓存数据刷新方法、装置、图形处理系统及电子设备 - Google Patents
缓存数据刷新方法、装置、图形处理系统及电子设备 Download PDFInfo
- Publication number
- CN115809208A CN115809208A CN202310062361.8A CN202310062361A CN115809208A CN 115809208 A CN115809208 A CN 115809208A CN 202310062361 A CN202310062361 A CN 202310062361A CN 115809208 A CN115809208 A CN 115809208A
- Authority
- CN
- China
- Prior art keywords
- main memory
- cache
- refreshed
- cache lines
- tag
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供一种缓存数据刷新方法、装置、图形处理系统以及电子设备,方法包括:接收待刷新的主存地址范围,主存地址范围包括至少两个主存页对应的地址范围;从缓存中查找对应于主存地址范围的多个待刷新缓存行;针对至少两个主存页中的每个主存页,对多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种缓存数据刷新方法、装置、图形处理系统以电子设备。
背景技术
Cache即缓存也称高速缓冲,是除寄存器以外最靠近处理器的存储单元,通常由SRAM组成。将Cache部署在处理器和主存之间,同时将主存中的部分数据也存储在Cache中,处理器可以通过访问Cache读写数据以避免直接访问主存,由于处理器对Cache的读写速度较快,因此提升了读写效率,同时也减少了处理器对主存的访问次数。
目前在将Cache中的数据刷新到主存时,无法充分利用主存的带宽,并且刷新效率也较低。
发明内容
本公开的目的是提供一种缓存数据刷新方法、装置、图形处理系统以及电子设备,以解决在将缓存中的数据刷新时,无法充分利用主存带宽、刷新效率低的问题。
根据本公开的一个方面,提供一种缓存数据刷新方法,包括:
接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行,包括:
对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的待刷新缓存行。
在一种实施方式中,针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中,包括:
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
在一种实施方式中,针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中,包括:
针对所述至少两个主存页,每次以一个或多个主存页为刷新对象,对所述多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于所述至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;
将对应于所述至少两个主存页的目标集合中的缓存行分别连续刷新至主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中,包括:
每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。。
在一种实施方式中,所述主存和缓存的映射方式为全相联映射;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行,包括:
对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的多个待刷新缓存行。
在一种实施方式中,针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中,包括:
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
根据本公开的第二个方面,提供一种缓存数据刷新装置,包括:
接收模块,用于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
查找模块,用于从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
刷新模块,用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述查找模块,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的待刷新缓存行。
在一种实施方式中,所述刷新模块,具体用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
在一种实施方式中,所述刷新模块,具体用于针对所述至少两个主存页,每次以一个或多个主存页为刷新对象,对所述多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于所述至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;
将对应于所述至少两个主存页的目标集合中的缓存行分别连续刷新至主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述刷新模块,具体用于每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。。
在一种实施方式中,所述主存和缓存的映射方式为全相联映射;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
所述查找模块,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的多个待刷新缓存行。
在一种实施方式中,所述刷新模块,具体同于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
根据本公开的第三个方面,提供一种图形处理系统,包括上述第二个方面任一实施例所述的缓存数据刷新装置。
根据本公开的第四个方面,提供一种电子设备,包括上述第三个方面任一实施例所述的图像处理系统。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供的主存和缓存直接映射的结构示意图;
图2为本公开一个实施例提供的主存和缓存组相联映射的结构示意图;
图3为本公开一个实施例提供的主存和缓存全相联映射的结构示意图;
图4为本公开一个实施例提供的直接映射和组相联映射中缓存中地址的结构示意图;
图5为本公开一个实施例提供的缓存中缓存行的结构示意图;
图6为本公开一个实施例提供的一种缓存中数据刷新方法的流程示意图;
图7为本公开一个实施例提供一种组相联映射的结构示意图;
图8为本公开一个实施例提供一种直接映射的结构示意图;
图9a为本公开一个实施例提供一种组相联映射中刷新数据路径的示意图;
图9b为本公开一个实施例提供另一种组相联映射中刷新数据路径的示意图;
图9c为本公开一个实施例提供又一种组相联映射中刷新数据路径的示意图;
图9d为本公开一个实施例提供再一种组相联映射中刷新数据路径的示意图;
图10a为本公开一个实施例提供的一种包括缓存中数据刷新装置的结构示意图;
图10b为本公开一个实施例提供的另一种包括缓存中数据刷新装置的结构示意图;
图11为本公开一个实施例提供的一种缓存中数据刷新装置的结构示意图;
图12为本公开一个实施例提供的一种图形处理系统的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
Cache的容量要远远小于主存容量,它保存的数据是主存的一个子集,且Cache和主存进行地址交换是以缓存行为单位的。即把主存和Cache分割成一定大小的块,这个块在主存中称为数据块data block,在Cache中称为缓存行即Cacheline,将主存中的datablock映射到Cache中的缓存行中就需要采用相应的映射方式,常见的映射方式包括直接映射、组相联映射以及全相联映射。
直接映射采用取模的方式进行一对一映射,容易出现Cache不命中的情况。组相联中每一组(set)中可以存储更多的信息,因此相对于直接映射的方式,增加了Cache命中的几率。全相联是极端的组相联,即Cache只有一个set,实现较为复杂,目前业界最常用的映射方法为组相联。
如图1所示,为直接映射的示意图,在直接映射的方式中,如果Cache中共有8个缓存行,那么主存中的0、8、16、24...号数据块会被映射到缓存行0中,同理1、9、17....号数据块会被映射到缓存行1中。当主机的读取顺序是数据块0-数据块8-数据块0-数据块8的情况下,由于缓存行0只能同时缓存一个数据块,因此,在读取数据块8以及第二次读取数据块0时,会发生Cache不命中的情况,即在Cache中无法找到数据块需要去主存中查找数据块。因此,直接映射的方式中Cache命中的几率并不高,进而整体的读写效率也不高。
在组相联的方式中包括N个路(way),每个way中包括M组(set)。每一组即每一set中包括N个缓存行。如图2所示,存在两个way,即way0和way1,每一way有8行,对应8组,每组中有2个缓存行,即way0的Cache line0和way1的Cache line0为一组。
这样主存中数据块0、8、16、24…中任意两个数据块可以同时存储在缓存中的两个Cache line0中,进而组相联映射的方式相对于直接映射增加了Cache命中的概率提升了整体的读写效率。
如图3所示,为全相联的示意图,全相联是极端的组相联,即cache只有一个组。每一个数据块都可以存进任何一个缓存行。全相联方式中Cache命中的概率也较高,但是实现较为复杂,工作延时也较高。
在直接映射和组相联的映射方式中,处理器发送到Cache中的地址被划分为3段,如图4所示,包括Tag、Index、Line offset。其中line offset(偏移位)用来表示该地址在缓存行中的偏移,Index(行标记)表示该地址位于哪一个组(set)中(组相联映射的方式中)或哪一行中(直接映射的方式中),Tag(标记位)用于确定是否命中数据块。其中,每个缓存行如图5所示,缓存行中包括有效标记V、标记位Tag和数据位Data block。Cache根据接收地址的Tag和标记位Tag进行对比就能判断出该地址在Cache中是否命中,有效标记V用于标记该缓存行是否有效,即是否可用。
而在全相联的场景中不存在组的概念,因此处理器发来的地址只包括块号Tag和Line offset。
本公开中的主存可以是DDR SDRAM,即双倍速率同步动态随机存储器,主存地址通常由column(列)地址、bank地址、row(行)组成。
表1
例如,如表1所示,DDR颗粒地址由12bit的column(列)地址,4bit的bank地址和14bit的row(行)地址组成。另外,在一些场景中,主存地址中可能并不包含bank,仅由row和column组成。其中,一个row也为主存的一个主存页,如果需要从主存中读写数据,则需要先定位和开启主存页,进一步在主存页中的相应位置读写数据。
另外,如前文介绍,在直接映射和组相联映射的方式中,在缓存中Cache line的地址被分为了Tag、Index以及Line offset,因此主存中的row、bank、column在映射到缓存中时,会被映射为Tag、Index以及Line offset。
在实际应用中,在直接映射和组相联的方式中,可以将主存地址中的row地址和bank地址映射为Tag。
例如,如表2所示:
表2
此外,row地址也可以被映射为Tag;row地址和bank地址还可能被映射为包含于Tag,例如Tag中包括row地址、bank地址以及column中的部分地址,在全相联的映射方式中,由于不存在Index的概念,因此row地址和bank地址通常被映射为包含于Tag。具体的映射方式往往和Cache中cache line即缓存行的数量以及缓存行中包含的数据量的大小相关,具体方式可以参照相关技术,本公开对此不进行详述。
当发生Cache命中,需要对Cache中的数据进行写操作时,会涉及到Cache更新策略,Cache更新策略分成两种:写直通和回写。
写直通又称为写穿,当地址在Cache命中时,既更新Cache中的数据,也更新主存的数据,因此,写直通策略并没有减少设备对主存的写访问量。
写回策略是指当写地址在Cache命中时,只更新Cache中的数据,而不更新主存里的数据,从而能有效降低一个设备对主存的写访问量。但是写回策略由于只更新Cache中的数据,因此Cache和主存的数据可能不一致,因此在每个缓存行中会有一个比特位记录数据是否被修改过,称之为dirty bit,本文中也称为脏数据标记,在适当的时机,可以将dirtybit置位的缓存行一起刷新至主存,或者独立的写回至主存,以保证缓存中的数据与主存中的数据一致。
为了减少设备对主存的写访问量,实际应用中通常使用写回策略,在写回策略中,在需要将dirty bit置位的缓存行一起刷新至主存时,通常是按照缓存中各个缓存行的存储顺序进行刷新,例如,如图2所示的缓存,如果该缓存中的全部缓存行都需要进行刷新,则会先将way0的Cache line0-Cache line7依次进行刷新,然后将way1的Cache line0-Cacheline7依次进行刷新,这里的刷新可以是将Cache line中的数据依次写回至主存的相应位置,然后将Cache line中的脏数据标记置为0,以表示该Cache line中的数据为非脏数据;另外,也可以是将Cache line中的数据依次写回至主存的相应位置后,直接将Cacheline中的有效比特位置为0,以表示该Cache line中的数据失效。可以采用上述任一一种方式,本公开对此不进行限定,其中,采用第一种方式时,在刷新后,该Cacheline中的数据仍能被处理器访问和使用。
上述方式中,按照缓存行在缓存中的存储顺序进行刷新,由于各个缓存行在主存中存储的位置不同,在缓存中连续的多个缓存行对应的存储位置可能在主存中的不同主存页,这就造成刷新过程需要多次切换主存页,因此,刷新效率较低,同时在开启某个主存页后,仅仅写回一个对应于该主存页的缓存行中的数据,也无法充分利用主存的带宽。更具体而言,仍以图2为例,如果way0的Cache line0和way0的Cache line1对应的主存地址在不同的主存页,例如way0的Cache line0对应的主存页为主存页0,way0的Cache line1对应的主存页为主存页1,刷新过程具体为:开启主存页0,将way0的Cache line0刷新至主存页0,关闭开启主存页0;开启主存页1,将way0的Cache line1刷新至主存页1。可见,当在缓存中连续的缓存行对应不同的主存页时,存储两个缓存行就需要进行一次主存页的切换,可以理解的是,在缓存行较多时,需要多次切换主存页,需要消耗大量时间,刷新效率较低,另外,在开启某个主存页后,只写回少量的缓存行的数据到主存,并不能充分利用主存的带宽。
为了解决上述问题,本公开提出在刷新时,识别缓存中的待刷新缓存行,将位于同一主存页的待刷新缓存行一起刷新至主存,以提升刷新的效率并提升主存的带宽利用率。
如图6所示,为本公开提出的一种缓存数据刷新方法,该方法包括:
S601,接收待刷新的主存地址范围,该主存地址范围包括至少两个主存页对应的地址范围;
S602,从缓存中查找对应于该主存地址范围的多个待刷新缓存行;
S603,针对该至少两个主存页中的每个主存页,对多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续的刷新到主存中。
本公开提出,在需要刷新时,从缓存中查找出待刷新的缓存行,对各个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续的刷新到主存中,有效减少在多个主存页之间的切换次数,提升了刷新效率,并且在开启主存页后,可以同时写入更多的待刷新缓存行,因此提升了主存带宽的利用率。
上述S601中,具体可以是接收处理器发送的刷新指令,刷新指令中携带待刷新的主存地址范围,主存地址范围往往包括至少两个主存页对应的地址范围,即需要对至少两个主存页中的数据进行刷新。
本步骤中,可以根据接收到的主存地址范围以及每个主存页的范围,确定该主存地址范围所包括的主存页。
上文提到,主存和缓存的映射方式包括组相联映射、直接映射、全相联映射等,并且在组相联映射和直接映射中,主存地址的bank地址和row地址可以被映射为Tag标记,还可以被映射为包含于Tag标记,在全相联映射中,主存地址的bank地址和row地址往往被映射为包含于Tag标记。
下面以主存和缓存的映射方式为组相联映射或直接映射,主存地址的bank地址和row地址被映射为Tag标记为例,对本公开提出的缓存数据刷新方法进行说明。
在这种映射方式中,上述S602具体可以包括:
首先,对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行,具体可以是确定脏数据标记和有效标记均置位的缓存行,为缓存中目前全部的待刷新的缓存行。
然后对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于主存地址范围的缓存行,确定为对应于该主存地址范围的待刷新缓存行。即从目前全部的待刷新的缓存行中,查找对应于待刷新主存地址范围的缓存行。
以图7包括两个way的组相联的映射方式为例,例如接收到的主存地址范围包括0x1000以及0x2000,如果图中的各个缓存行均为脏数据标记和有效标记均置位的缓存行,则确定目前缓存中的全部缓存行均为待刷新的缓存行,由于直接将主存地址的row和bank地址映射为了Tag,因此可以对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于主存地址范围的缓存行,确定为对应于主存地址范围的待刷新缓存行,即经过遍历后,发现way0的Cache line0、way0的Cache line3-Cache line5、way1的Cache line1、way1的Cacheline7;way0的Cache line1、way0的Cache line2、way1的Cache line0、way1的Cache line3为对应于主存地址范围的待刷新缓存行。当然,在一些实际场景中,缓存中的所有待刷新缓存行可能均属于对应于主存地址范围的待刷新缓存行,例如在接收到的待刷新的主存地址范围包括0x1000、0x2000、0x1400、0x1100、0x1200时,则可以确定当前缓存中的全部待刷新缓存行均属于对应于主存地址范围的待刷新缓存行。
在本映射方式中,上述S603具体可以是针对至少两个主存页中的每个主存页,对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
对多个待刷新的缓存行的Tag标记进行遍历,并将Tag标记相同的待刷新缓存行连续刷新至主存中,可以采用以下多种方式中的一种方式进行实现。
具体的,在一种实施方式中,可以是针对至少两个主存页,每次以一个或多个主存页为刷新对象,对多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于该至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;将对应于至少两个主存页的目标集合分别连续刷新至主存中。即先查找出各个主存页对应的目标集合,然后将各个目标集合中的缓存行分别连续刷新至主存中。
仍以图7为例,例如,主存地址范围包括0x1000、0x2000、0x1100、0x1200、0x1400,即图7展示的全部缓存行均为待刷新缓存行。
可以每次以一个主存页为刷新对象进行遍历,例如,可以以0x1000为刷新对象,对多个待刷新的缓存行的Tag标记进行遍历,得到对应于0x1000的目标集合:way0的Cacheline0、way0的Cache line3-Cache line5、way1的Cache line1、way1的Cache line7。然后,再以下一个主存页为刷新对象进行遍历,从而得到对应于该各个主存页的目标集合。
得到的目标集合可以如表3所示:
表3
在得到目标集合后,即可以将对应于各个主存页的目标集合中的缓存行分别连续刷新至主存中,例如,先将主存页0x1000对应的目标集合way0的Cache line0、way0的Cacheline3-Cache line5、way1的Cache line1、way1的Cache line7连续的刷新至主存中,然后将主存页0x2000对应的目标集合way0的Cacheline1-Cache line2、way1的Cache line0、way1的Cache line3连续的刷新至主存中,以此类推,将全部主存页的目标集合中的缓存行分别连续刷新至主存中。采用这样的刷新方式,可以在某个主存页启动的情况下,将本次刷新对应于该主存页的待刷新缓存行都刷新进去,然后进行关闭,再启动下一主存页,对下一主存页的数据进行刷新,尽可能减少了主存页之间的切换,同时在每一主存页打开时,可以尽可能多的写入数据,可以有效提升主存带宽的利用率。上述以每次以一个主存页为刷新对象进行遍历和刷新的过程,除此之外还可以是每次以多个主存页为刷新对象进行遍历,例如以两个主存页进行遍历,如在一次遍历过程中同时以0x1000和0x2000作为刷新对象进行遍历,查找出0x1000和0x2000对应的目标集合。
在另一种实施方式中,还可以是每次以该至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中缓存行的存储顺序,对各个缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。即不先查找出各个主存页对应的目标集合,然后将各个目标集合中的缓存行分别连续刷新至主存中,而是直接将遍历到的对应于刷新对象的缓存行直接刷新至主存中。
以图8所示直接映射为例,可以是以一个主存页为刷新对象,按照缓存行的存储地址顺序进行遍历,如以0x1000为刷新对象进行遍历,则在查看到第一个缓存行,即Cacheline0时,直接将Cacheline0刷新至缓存中,然后继续进行遍历,在遍历到Cacheline3时,将Cacheline3刷新到主存中,依次类推,将Tag=0x1000的缓存行连续刷新到缓存中,然后再以下一个主存页为刷新对象进行刷新,最后将全部待刷新主存范围包括的主存页对应的缓存行都刷新到主存。
在以多个主存页为刷新对象时,也可以是直接将对应于多个主存页的缓存行刷新至缓存中。仍以图8为例,可以以主存页0x1000和0x1400为刷新对象,在遍历到Cacheline0时,发现Tag=0x1000为刷新对象,则将Cacheline0写回到主存,在遍历到Cacheline1时,发现Tag为0x2000时,因此直接跳过,在遍历到Cacheline3时,发现Tag=0x1000为刷新对象,将Cacheline3写回到主存,在遍历到Cacheline6时,发现Tag=0x1400为刷新对象,将Cacheline6写回到主存。以此类推,将全部待刷新主存范围包括的主存页对应的缓存行都刷新到主存。
在以多个主存页为刷新对象时,虽然也会涉及到在主存页0x1000和主存页0x1400之间的切换,但是相对于在全部主存地址范围对应的主存页之间切换,仍然减少了切换次数,进而提升了刷新效率。例如,如果按照现有的方式进行刷新,则需要在对Cacheline0刷新后,就切换主存页,在刷新完Cacheline2后需要切换主存页,在刷新完Cacheline6和Cacheline7后还需要分别切换主存页,切换次数较多。
另外,本公开提出在映射方式是组相联映射时,上述S603具体还可以通过以下方式实现:
每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。
具体的,在本实施方式中,可以根据预先设置的刷新配置信息对缓存行进行遍历和刷新,刷新配置信息可以包括每次刷新对象的个数、查找深度。即,可根据刷新对象个数,每次选取一个或多个主存页为刷新对象,并且按照缓存中set编号的顺序以及查找深度,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。
如图9a所示,为本公开提出的包括两个way的组相联映射方式的缓存结构示意图。
如图9a所示,如果刷新对象为1个,且为Tag=0x1000;查找深度为1,即在刷新时向下查找一个set(其中set为图中示出的每一行,如way0的Cacheline0和way1的Cacheline0属于一个set)。
那么在遍历时,首先从set编号为0开始遍历,由于way0的Cache line0的Tag=0x1000,因此将way0的Cache line0刷新到主存;然后,查看set1,即way0的Cache line1以及way1的Cache line1,发现way1的Cache line1的Tag=0x1000,因此将way1的Cache line1刷新到主存;接着查看set2,即way0的Cache line2以及way1的Cache line2,发现两者的Tag均不为0x1000,因此从两者中任一选择一者进行刷新;然后查看set3,即way0的Cacheline3以及way1的Cache line3,发现way0的Cache line3的Tag=0x1000,因此将way0的Cache line3刷新到主存,以此类推,图中的虚线即为本次刷新的地址链。在刷新完Tag=0x1000的缓存行后,再针对下一刷新对象进行刷新。
如图9b所示,如果刷新对象为1个主存页,对应的Tag=0x1000;查找深度为2,即在刷新时向下查找2个set。
如上述对图9a的描述,首先会遍历并依次刷新way0的Cache line0以及way1的Cache line1,不同的是,由于查找深度为2,因此在向下查找时,虽然在set2中的两个缓存行的Tag均不为0x1000,但是可以直接查找set3,发现way0的Cache line3的Tag=0x1000,因此可以跳过set2,将way0的Cache line3刷新到主存,以此类推,图中的虚线即为本次刷新的地址链。在刷新完Tag=0x1000的缓存行后,再针对下一刷新对象进行刷新。
如图9c所示,如果刷新对象为2个主存页,对应的Tag=0x1000以及Tag=0x2000;查找深度为1,即在刷新时向下查找1个set。
在遍历时,首先从set编号为0开始遍历,由于way0的Cache line0的Tag=0x1000,way1的Cache line0的Tag=0x2000,因此可以选择其中一个刷新到主存,如图所示,选择Tag=0x1000进行刷新,先刷新way0的Cache line0,然后刷新way1的Cache line1,由于set2中两者Tag均不为0x1000,但是way0的Cache line1和Cache line2均为0x2000,因此选择way0的Cache line1和Cache lin2进行刷新;接着刷新way1的Cache line3、刷新way0的Cacheline3-Cache line6;以此类推,图中的虚线即为本次刷新的地址链。在刷新完Tag=0x1000以及Tag=0x2000的缓存行后,由于还有少量的刷新对象未被刷新,如way1中的Cache0,因此需要将少量未被刷新的刷新对象刷新到主存中。在刷新完后,再针对下两个刷新对象进行刷新。
如图9d所示,如果刷新对象为2个主存页,对应的Tag=0x1000以及Tag=0x2000;查找深度为2,即在刷新时,可以向下查找2个set。
在遍历时,首先从set编号为0开始遍历,由于way0的Cache line0的Tag=0x1000,way1的Cache line0的Tag=0x2000,但是由于查找深度为2,因此可以发现在set2中,way0的Cache line2的tag也为Tag=0x2000,而set2中不存在Tag=0x1000的缓存行,因此从已知的深度上看,Tag=0x2000的连续性更好,因此,可以从Tag=0x2000的way1的Cache line0开始刷新,刷新的方式如图中虚线所示,与图9c所描述的类似,这里不再进行赘述。在刷新完Tag=0x1000以及Tag=0x2000的缓存行后,由于还有少量的刷新对象未被刷新,如way0中的Cache0、way1中的Cache1,因此需要将少量未被刷新的刷新对象刷新到主存中。在刷新完后,再针对下两个刷新对象进行刷新。
采用上述方式,在映射方式为组相联或直接相联时,可以提升刷新效率,以及主存带宽的利用率。
上面介绍了在主存和缓存的映射方式为直接相联或组相联映射,且主存地址中的bank地址以及row地址被映射为Tag标记的情况下,S602以及S603的实现方式。
下面介绍主存地址中的bank地址以及row地址被映射为包含于Tag标记时,S602-S603的实现方式。可以理解的是,如果主存和缓存的映射方式为直接相联或组相联映射,S602-S603的实现方式,如上述实施方式中描述的类似,不同的仅在于需要从Tag标记中查找bank地址以及row地址,将bank地址以及row地址相同的确定为对应于同一主存页的缓存行,而不是直接将Tag相同的缓存行确定为对应于同一主存页的缓存行,在查找对应于主存地址范围的多个待刷新缓存行时,也是基于Tag标记中的bank地址以及row地址进行查找,本公开对此不进行详述。
下面介绍主存和缓存的映射方式为全相联映射,主存地址中的bank地址以及row地址被映射为包含于Tag标记时,S602-S603的具体实现方式,具体的上述S602可以是:
对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于主存地址范围的多个待刷新缓存行。
上述S603可以是:
针对至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
以图3为例,如果图中示出的缓存行均为对应于主存地址范围的待刷新缓存行,且Cacheline0、Cacheline1、Cacheline4的Tag中的bank地址和row地址相同,Cacheline2、Cacheline3、Cacheline5、Cacheline6、Cacheline7的Tag中的bank地址和row地址相同,则将Cacheline0、Cacheline1、Cacheline4连续的刷新至主存,并且将Cacheline2、Cacheline3、Cacheline5、Cacheline6、Cacheline7连续的刷新至主存。
采用上述方式,在映射方式为全相联映射时,可以提升刷新效率,以及提高主存带宽的利用率。
与前述一种缓存数据刷新方法相对应,本公开还提出一种缓存数据刷新装置,在一种实施方式中,如图10a所示,该装置可以分别与缓存控制器和处理器连接,在另一种实施方式中,如图10b所示,该缓存数据刷新装置也可以是缓存控制器的一部分。
如图11所示,该装置包括:接收模块1101、查找模块1102、刷新模块1103。
接收模块1101,用于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
查找模块1102,用于从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
刷新模块1103,用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
具体的,在如图10a中的架构中,刷新模块1103,可以将对多个待刷新缓存行进行遍历得到的遍历结果,发送至缓存控制器,触发缓存控制器将对应于同一主存页的待刷新缓存行连续刷新到主存中。
另外,在如图10b中的架构中,如果缓存数据刷新装置是缓存控制器的一部分,则刷新模块1103,用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续的刷新到主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述查找模块1102,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的待刷新缓存行。
在一种实施方式中,所述刷新模块1103,具体用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
在一种实施方式中,所述刷新模块1103,具体用于针对所述至少两个主存页,每次以一个或多个主存页为刷新对象,对所述多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于所述至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;
将对应于所述至少两个主存页的目标集合中的缓存行分别连续刷新至主存中。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述刷新模块1103,具体用于每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。
在一种实施方式中,所述主存和缓存的映射方式为全相联映射;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
所述查找模块1102,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的多个待刷新缓存行。
在一种实施方式中,所述刷新模块1103,具体同于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
本公开实施例还提供一种图形处理系统,包括上述缓存数据刷新装置。
在一个具体的实施例中,本公开中还提出一种图形处理系统,如图12所示,其至少包括:
GPU core,用来处理命令,例如处理画图的命令,根据画图命令,执行图像渲染的Pipeline。其中,GPU core里面主要包含了计算单元,用于执行shader编译后的指令,属于可编程模块,由大量的ALU组成;Cache(存储器),用于缓存GPU core的数据,以减少对内存的访问;控制器(图中未示出)另外,GPU core 还具有多种功能模块,例如光栅化(3D渲染管线的一个固定的阶段)、Tilling(TBR和TBDR GPU架构中对一帧进行划片处理)、裁剪(3D渲染管线的一个固定的阶段,裁剪掉观察范围外,或者背面不显示的图元)、后处理(对画完的图进行缩放,裁剪,旋转等操作)等。
通用DMA,用于执行主机内存到GPU显卡内存之间的数据搬移,例如,用于3D画图的vertex数据,通用DMA将vertex数据从主机内存搬到GPU显卡内存;
片上网络,用于SOC上各个master和salve之间的数据交换;
应用处理器,用于SOC上各个模块任务的调度,例如GPU渲染完一帧图后通知应用处理器,应用处理器再启动显示控制器将GPU画完的图显示到屏幕上;
PCIe控制器,用于和主机通信的接口,实现PCIe协议,使GPU显卡通过PCIe接口连接到主机上。主机上运行了图形API,以及显卡的驱动等程序;
内存控制器,用于连接内存设备,用于保存SOC上的数据;
缓存数据刷新装置,用于执行上文中所描述的缓存数据替换方法;
显示控制器,用于控制将内存里的frame buffer以显示接口(HDMI, DP等)输出到显示器上;
视频解码器,用于将主机硬盘上的编码的视频解码成能显示的画面。
视频编码器,用于将主机硬盘上原始的视频码流编码成指定的格式返回给主机。
本公开实施例还提供一种电子设备,该电子设备包括上述的图形处理系统。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
以上尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改,本领域的技术人员在不脱离本公开的精神和范围的前提下,做出的变更和修改也应视为本公开实施例的保护范围。
Claims (16)
1.一种缓存数据刷新方法,其特征在于,方法包括:
接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
2.根据权利要求1所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行,包括:
对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的待刷新缓存行。
3.根据权利要求2所述的方法,其特征在于,所述针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中,包括:
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
4.根据权利要求3所述的方法,其特征在于,所述针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中,包括:
针对所述至少两个主存页,每次以一个或多个主存页为刷新对象,对所述多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于所述至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;
将对应于所述至少两个主存页的目标集合中的缓存行分别连续刷新至主存中。
5.根据权利要求3所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中,包括:
每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。
6.根据权利要求1所述的方法,其特征在于,所述主存和缓存的映射方式为全相联映射;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行,包括:
对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的多个待刷新缓存行。
7.根据权利要求6所述的方法,其特征在于,所述针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中,包括:
针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
8.一种缓存数据刷新装置,其特征在于,包括:
接收模块,用于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
查找模块,用于从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
刷新模块,用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新缓存行进行遍历,将对应于同一主存页的待刷新缓存行连续刷新到主存中。
9.根据权利要求8所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述查找模块,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的待刷新缓存行。
10.根据权利要求9所述的装置,其特征在于,
所述刷新模块,具体用于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记相同的待刷新缓存行连续刷新至主存中。
11.根据权利要求10所述的装置,其特征在于,
所述刷新模块,具体用于针对所述至少两个主存页,每次以一个或多个主存页为刷新对象,对所述多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于所述至少两个主存页的目标集合,任一目标集合中包括Tag相同的待刷新缓存行;
将对应于所述至少两个主存页的目标集合中的缓存行分别连续刷新至主存中。
12.根据权利要求10所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述刷新模块,具体用于每次以所述至少两个主存页中的一个或多个主存页为刷新对象,按照缓存中set编号的顺序,对各个way中的缓存行进行遍历,将Tag标记对应于刷新对象的待刷新缓存行连续的刷新到缓存中。
13.根据权利要求8所述的装置,其特征在于,所述主存和缓存的映射方式为全相联映射;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
所述查找模块,具体用于对缓存中各个缓存行的脏数据标记以及有效标记进行遍历,确定多个待刷新的缓存行;
对多个待刷新的缓存行的Tag标记进行遍历,从Tag标记中查找bank地址和row地址;
将bank地址和row地址属于所述主存地址范围的缓存行,确定为对应于所述主存地址范围的多个待刷新缓存行。
14.根据权利要求13所述的装置,其特征在于,
所述刷新模块,具体同于针对所述至少两个主存页中的每个主存页,对所述多个待刷新的缓存行的Tag标记进行遍历,将Tag标记中bank地址和row地址相同的待刷新缓存行连续刷新至主存中。
15.一种图形处理系统,其特征在于,包括上述权利要求8-14任一项所述的缓存数据刷新装置。
16.一种电子设备,其特征在于,包括权利要求15所述的图形处理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310062361.8A CN115809208B (zh) | 2023-01-19 | 2023-01-19 | 缓存数据刷新方法、装置、图形处理系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310062361.8A CN115809208B (zh) | 2023-01-19 | 2023-01-19 | 缓存数据刷新方法、装置、图形处理系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115809208A true CN115809208A (zh) | 2023-03-17 |
CN115809208B CN115809208B (zh) | 2023-07-21 |
Family
ID=85487788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310062361.8A Active CN115809208B (zh) | 2023-01-19 | 2023-01-19 | 缓存数据刷新方法、装置、图形处理系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115809208B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744800A (zh) * | 2013-12-30 | 2014-04-23 | 龙芯中科技术有限公司 | 面向重放机制的缓存操作方法及装置 |
US20150067266A1 (en) * | 2013-08-27 | 2015-03-05 | Advanced Micro Devices, Inc. | Early write-back of modified data in a cache memory |
US20150127906A1 (en) * | 2013-11-06 | 2015-05-07 | International Business Machines Corporation | Techniques for Logging Addresses of High-Availability Data |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN108319556A (zh) * | 2017-12-28 | 2018-07-24 | 湖北经济学院 | 一种新的面向刷新的内存预取控制器及方法 |
US20210165734A1 (en) * | 2019-11-29 | 2021-06-03 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
CN113791989A (zh) * | 2021-09-15 | 2021-12-14 | 深圳市中科蓝讯科技股份有限公司 | 基于cache的缓存数据处理方法、存储介质及芯片 |
CN114036089A (zh) * | 2021-11-17 | 2022-02-11 | 海光信息技术股份有限公司 | 数据处理方法、装置、缓存器、处理器及电子设备 |
US20220066940A1 (en) * | 2020-08-31 | 2022-03-03 | Advanced Micro Devices, Inc. | Limited propagation of unnecessary memory updates |
-
2023
- 2023-01-19 CN CN202310062361.8A patent/CN115809208B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067266A1 (en) * | 2013-08-27 | 2015-03-05 | Advanced Micro Devices, Inc. | Early write-back of modified data in a cache memory |
US20150127906A1 (en) * | 2013-11-06 | 2015-05-07 | International Business Machines Corporation | Techniques for Logging Addresses of High-Availability Data |
CN103744800A (zh) * | 2013-12-30 | 2014-04-23 | 龙芯中科技术有限公司 | 面向重放机制的缓存操作方法及装置 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN108319556A (zh) * | 2017-12-28 | 2018-07-24 | 湖北经济学院 | 一种新的面向刷新的内存预取控制器及方法 |
US20210165734A1 (en) * | 2019-11-29 | 2021-06-03 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
US20220066940A1 (en) * | 2020-08-31 | 2022-03-03 | Advanced Micro Devices, Inc. | Limited propagation of unnecessary memory updates |
CN113791989A (zh) * | 2021-09-15 | 2021-12-14 | 深圳市中科蓝讯科技股份有限公司 | 基于cache的缓存数据处理方法、存储介质及芯片 |
CN114036089A (zh) * | 2021-11-17 | 2022-02-11 | 海光信息技术股份有限公司 | 数据处理方法、装置、缓存器、处理器及电子设备 |
Non-Patent Citations (1)
Title |
---|
王孝远;廖小飞;刘海坤;金海;: "面向大数据的异构内存系统", 大数据, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN115809208B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8341380B2 (en) | Efficient memory translator with variable size cache line coverage | |
US7737985B2 (en) | Pixel cache for 3D graphics circuitry | |
US6801203B1 (en) | Efficient graphics pipeline with a pixel cache and data pre-fetching | |
US9952977B2 (en) | Cache operations and policies for a multi-threaded client | |
CN115809028B (zh) | 一种缓存数据替换方法、装置、图形处理系统及电子设备 | |
JP4920378B2 (ja) | 情報処理装置およびデータ検索方法 | |
CN115794673B (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
EP2113103B1 (en) | Dynamic configurable texture cache for multi-texturing | |
CN112540939A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
KR101983833B1 (ko) | 공유된 캐쉬들을 제공하는 방법 및 장치 | |
US20240086323A1 (en) | Storage management apparatus, storage management method, processor, and computer system | |
CN118020064A (zh) | 具有伪lru补充年龄信息的重新引用区间预测(rrip) | |
US7809904B1 (en) | Page preloading using page characterization data | |
CN105550979A (zh) | 一种高数据通量纹理Cache层次结构 | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
US6538650B1 (en) | Efficient TLB entry management for the render operands residing in the tiled memory | |
US20060294302A1 (en) | Operating system supplemental disk caching system and method | |
CN104424132B (zh) | 高性能指令缓存系统和方法 | |
US7685372B1 (en) | Transparent level 2 cache controller | |
CN115809208B (zh) | 缓存数据刷新方法、装置、图形处理系统及电子设备 | |
CN115794675B (zh) | 写数据方法、装置、图形处理系统、电子组件及电子设备 | |
CN115809207B (zh) | Cache中地址标记方法、装置、图形处理系统及电子设备 | |
US11321241B2 (en) | Techniques to improve translation lookaside buffer reach by leveraging idle resources | |
CN115794674B (zh) | 一种缓存数据写回方法、装置、图形处理系统及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |