CN115794674B - 一种缓存数据写回方法、装置、图形处理系统及电子设备 - Google Patents
一种缓存数据写回方法、装置、图形处理系统及电子设备 Download PDFInfo
- Publication number
- CN115794674B CN115794674B CN202310056214.XA CN202310056214A CN115794674B CN 115794674 B CN115794674 B CN 115794674B CN 202310056214 A CN202310056214 A CN 202310056214A CN 115794674 B CN115794674 B CN 115794674B
- Authority
- CN
- China
- Prior art keywords
- main memory
- cache
- group
- cache lines
- target sets
- 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.)
- Active
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)
- Image Generation (AREA)
Abstract
本公开提供一种缓存数据写回方法、装置、图形处理系统及电子设备,方法包括对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;将所述至少一组目标集合写回到主存。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种缓存数据写回方法、装置、图形处理器及电子设备。
背景技术
Cache即缓存也称高速缓冲,是除寄存器以外最靠近处理器的存储单元,通常由SRAM组成。将Cache部署在处理器和主存之间,同时将主存中的部分数据也存储在Cache中,处理器可以通过访问Cache读写数据以避免直接访问主存,由于处理器对Cache的读写速度较快,因此提升了读写效率,同时也减少了处理器对主存的访问次数。
在对Cache中的数据进行更新即执行写操作后,相应的也需要将更新后的数据写回到主存中,以保证Cache和主存数据的一致性,目前在将数据写回到主存时,无法充分利用主存的带宽,写回效率较低。
发明内容
本公开的目的是提供一种缓存数据写回方法、装置、图形处理系统及电子设备,以解决在将缓存中的数据写回到主存时,无法充分利用主存的带宽,写回效率较低的问题。
根据本公开的一个方面,提供一种缓存数据写回方法,包括:
对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;
将所述至少一组目标集合写回到主存。
根据本公开的第二个方面,提供一种缓存数据写回装置,包括:
地址扫描模块,用于对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;
写回模块,用于将所述至少一组目标集合写回到主存。
根据本公开的第三个方面,提供一种图形处理系统,包括上述第二个方面任一实施例所述的缓存数据写回装置。
根据本公开的第四个方面,提供一种电子设备,包括上述第三个方面所述的图形处理系统。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供的主存和缓存直接映射的结构示意图;
图2为本公开一个实施例提供的主存和缓存组相联映射的结构示意图;
图3为本公开一个实施例提供的主存和缓存全相联映射的结构示意图;
图4为本公开一个实施例提供的直接映射和组相联映射中缓存中地址的结构示意图;
图5为本公开一个实施例提供的缓存中缓存行的结构示意图;
图6为本公开一个实施例提供的一种缓存数据写回方法的流程示意图;
图7为本公开一个实施例提供的一种缓存数据写回装置的结构示意图;
图8为本公开一个实施例提供的GPU系统的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
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中是否命中。
而在全相联的场景中不存在组的概念,因此处理器发来的地址只包括块号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中的部分地址,具体的映射方式往往和Cache中cache line即缓存行的数量以及缓存行中包含的数据量的大小相关,具体方式可以参照相关技术,本公开对此不进行详述。
当发生Cache命中,需要对Cache中的数据进行写操作时,会涉及到Cache更新策略,Cache更新策略分成两种:写直通和回写。
写直通又称为写穿,当地址在Cache命中时,既更新Cache中的数据,也更新主存的数据,因此,写直通策略并没有减少设备对主存的写访问量。
写回策略是指当写地址在Cache命中时,只更新Cache中的数据,而不更新主存里的数据,从而能有效降低一个设备对主存的写访问量。但是写回策略由于只更新Cache中的数据,因此Cache和主存的数据可能不一致,每个缓存行中会有一个bit位记录数据是否被修改过,称之为dirty bit。
为了减少设备对主存的写访问量,实际应用中通常使用写回策略,目前业界在写回策略中,在需要将数据写回到主存时,一般是在处理器确定Cache中的某些标记为dirty的数据不再具有较高的复用率时,触发Cache的写回操作。由于写回操作中,如果多个数据块同时需要写回到主存,那么往往是按照缓存中缓存行的存储顺序将各个数据块写回到主存中,而这些数据块在主存中的存储地址是随机的、不连续的,这就造成多个写回操作访问主存中的不同存储地址,而主存一般为DDR,这样的访问会造成在DDR的不同主存页之间来回切换,访问效率较低,并且每次写回时只写回一个数据块,主存带宽的利用率也不高。
为了解决上述问题,本公开提出对Cache中缓存行对应的主存地址进行检测,将位于同一主存页的多个缓存行一起写回到主存,以提升写回到主存的效率,并且在多个缓存行的主存地址连续时,在写回时可以将多个缓存行的写回操作合并为一笔写回操作,可以充分利用主存的带宽。
如图6所示,为本公开提出的一种Cache数据写回方法,应用于Cache数据写回装置,该方法包括:
S601,对Cache中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组目标集合包括至少两个缓存行,该所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;
S602,将至少一组目标集合写回到主存。
本公开提出对Cache中缓存行对应的主存地址进行检测,将主存地址位于同一主存页的多个缓存行作为一个目标集合一起写回到主存,其同一目标集合中的各主存地址可以是同一主存页中物理上连续或不连续的地址,这样将位于同一主存页的多个缓存行写回到内存时,不需要在多个主存页间进行切换,因此提升了写回效率。另外,将目标集合写回到主存时,相当于将该目标集合中的多个缓存行的写回操作合并为一笔写回操作,即由原本的一次传输一个缓存行的数据,改为同时传输多个缓存行的数据,大大提升了主存带宽的利用率。
上述S601中,具体可以是遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行,具体的,可以是确定有效标记和脏数据标记都置位的缓存行为待写回主存的缓存行,即确定当前有效且为脏数据的缓存行为待写回主存的缓存行。
在确定了待写回主存的缓存行后,可以针对待写回到主存的多个缓存行,根据Tag标记确定目标集合。
上文提到,主存和Cache的映射方式包括直接映射、组相联映射以及全相联映射。在直接映射和组相联映射方式中,主存地址被映射到缓存中后为Tag、Index以及Lineoffset,而在全相联映射中由于各个数据块可以映射到任意的缓存行中,因此不需要基于index进行映射,因此在全相联映射的方式中主存地址被映射到缓存中后成为Tag和Lineoffset的组合。因此,相同的长度的主存地址,以直接映射和组相联映射的方式映射到缓存中的Tag的长度,要小于以全相联映射的方式映射到缓存中的Tag的长度。
例如,主存地址长度为48bit,以直接映射和组相联映射的方式映射到缓存中的包括39bits的Tag、3bits的Index、6bits的Line offset。而以全相联映射的方式映射到缓存中的包括42bits的Tag以及6bits的Line offset。
上文也提到,在实际应用中,在直接映射和组相联的方式中,Tag可能包含row、bank等。在此基础上,本公开提出,在上述S601中,在主存和Cache的映射方式为组相联映射或直接映射;且在主存地址中的bank地址以及row地址被映射为Tag标记的情况下,可以确定Tag标记相同的多个缓存行为一组目标集合。
如图1所示,在Cache line0- Cache line7中,例如Cache line0和Cache line1的Tag标记相同,则说明Cache line0 和Cacheline1对应的主存地址是位于同一主存页的(bank和row均相同),另外,由于Cache line0 和Cache line1映射到缓存中的位置也是连续的,因此,可以确定Cacheline0 和Cache line1对应的主存地址在物理上也是连续的。又例如,Cache line0和Cache line2的Tag标记相同,则说明Cache line0 和Cache line2对应的主存地址是位于同一主存页的。
再以图2示出的组相联为例,可以是确定多个way中,Tag标记相同的多个缓存行为一组目标集合。
例如,way0中的Cache line1与way0中的Cache line3 Tag标记相同,则将way0中的Cache line0与way1中的Cache line3确定为目标集合。
另外,也可以进一步缩小目标集合的范围,即只将主存地址物理上连续的多个缓存行作为目标集合,那么可以确定多个way中,set编号连续并且Tag标记相同的多个缓存行为一组目标集合。
例如,way0中的Cache line0与way1中的Cache line1 Tag标记相同,则将way0中的Cache line0与way1中的Cache line1确定为目标集合。
另外,在直接映射和组相联映射的方式中,如果主存地址中不包含bank只包含row地址,且row地址也被映射为Tag后,也可以将多个Tag相同的缓存行确定为目标集合。如果,row地址和bank地址被映射为包含于Tag,则可以针对待写回到主存的多个缓存行,从多个缓存行的Tag标记中查找bank地址和row地址;确定bank地址和row地址相同的多个缓存行为一组目标集合。
上文提到,在实际应用中,在全相联映射方式中,在缓存中的地址只包括Tag以及Line offset,而Tag的长度往往大于主存地址中bank以及row的长度,即主存地址中的bank地址以及row地址被映射为包含于Tag标记。
因此,在全相联的方式中,可以针对待写回到主存的多个缓存行,从多个缓存行的Tag标记中查找bank地址和row地址;
确定bank地址和row地址相同的多个缓存行为一组目标集合。
如图3所示,如果遍历后发现Cache line0和Cache line1的Tag中的bank地址以及row地址均相同,则说明Cache line0和Cache line1对应的主存地址是位于同一主存页的,则将Cache line0和Cache line1确定为目标集合。
可以理解的是,上述例子中虽然都是以两个缓存行组成目标集合为例,但是在多于两个的缓存行的Tag标记或Tag标记中包含的bank地址和row地址相同时,则可以将多于两个的缓存行确定为目标集合。
在按照上述方式确定了至少一个目标集合之后,可以将确定的目标集合写回到主存中。
以图2为例,如果确定了3个目标集合,确定的目标集合可以如表3所示。
表3
本步骤中,针对目标集合,可以记录目标集合中每个缓存行所在的way编号以及在way中的位置,在得到了至少一个目标集合后,可以针对每个目标集合,基于缓存行所在way的编号信息确定该缓存行位于哪片SRAM(Cache通常由SRAM构成),然后通过Cache在way中的位置确定该Cache在SRAM中的偏移量,进而生成该缓存行在Cache中的地址,在确定了目标集合中所有的缓存行在Cache中的地址后,即可以从Cache中获取目标集合中的各个缓存行,具体而言是获取各个缓存行中的Data block中的数据,然后将获取的数据写回到主存中。在写回之后可以将目标集合中各个缓存行中的有效标记改为失效状态。在针对一个目标集合写回后,再对下一个目标集合进行写回,直到将所有目标集合写回到主存。
考虑到还有些dirty且有效的待写回主存的缓存行,不属于任何一个目标集合,即其不与其他待写回主存的缓存行地址属于同一主存页,对于此类缓存行可以是在等到其与其他缓存行组成目标集合后再写回主存,也可以是在本次将目标集合写回到主存之后也逐一的写回主存。
在将目标集合写回到主存时,考虑到此时Cache可能会接收处理器发送的访问请求,如果先执行写回操作再执行处理器的访问请求,会降低处理器的处理效率,因此本公开提出,在将至少一组目标集合写回到主存时,若检测到处理器发送的对至少一组目标集合中缓存行的访问请求,则停止将该至少一组目标集合写回到主存,并处理该访问请求,即优先处理访问请求,提升处理器的处理效率。更具体而言,结合上述表3,如果处理器发送的访问请求是针对目标集合A的,可以停止对目标集合A的写回处理,避免发生处理器的访问请求发生Cache的miss情况,但并不停止对目标集合B和目标集合C的写回处理,在执行完处理器的访问请求后,再将目标集合A写回到主存。
可以理解的是,上述S601可以是在确定需要写回时执行,另外,为了提升写回效率,也可以将遍历和确定目标集合的工作前置,在需要写回时,直接执行S602,例如定期、或在Cache控制器空闲时执行上述S601以更新目标集合,这样在需要写回时,只需要在已生成的目标集合的基础上进行更新,而不需要对所有的缓存行进行遍历并确定目标集合,进而可以有效提升写回效率。
考虑到在写回时,写回数据占用了传输总线的带宽,可能影响会影响主存对其他事务的传输,如影响处理器对主存中的non-cacheable数据(不占用Cache,处理器之间从主存中进行读写的数据)的访问,因此上述S602,具体可以是在检测到主存与Cache的传输总线空闲时,将该至少一组目标集合写回到主存。
另外,为了避免每次写回时写回的数据较少,也可以是在检测到目标集合中的缓存行达到预设数量时,才将各个目标集合写回到主存。例如检测到各目标集合中的缓存行的总量达到第一预设数量时,才将各目标集合中的缓存行写回到主存,也可以是检测到任一目标集合中缓存行的数据达到第二预设数量时,就将各目标集合中的缓存行写回到主存。
另外,也可是在检测到传输总线空闲且目标集合中的缓存行达到预设数量时才执行写回操作。
为了进一步提升写回效率,本公开提出针对确定的至少一组目标集合,确定每组目标集合包含的缓存行数量;根据每组目标集合中包含的缓存行的数量,对至少一组目标集合进行排序,其中,包含缓存行多的目标集合排在包含缓存行少的目标集合之前;根据排序结果的顺序将至少一组目标集合写回到主存。
以表3为例,可以确定目标集合A中包含的缓存行的数量为3,目标集合B中包含的缓存行的数量为2,目标集合C中包含的缓存行的数量为2,则可以对目标集合A-目标集合C进行排序,得到排序结果:目标集合A-目标集合B-目标集合C,或目标集合A-目标集合C-目标集合B,然后先将包含缓存行最多的目标集合A写回到主存。采用该种方式,在先写回包含缓存行数量多的目标集合时,如果包含缓存行数量较小的目标集合的成员变多时,可以对包含缓存行数量较小的目标集合进行扩充,将扩充成员后的目标集合再写回主存。例如,当前在写回目标集合A,在写回的过程中,如果处理器需要对缓存进行了读写,根据读写结果对目标集合C的成员扩展了,则在写回目标集合A后可以将扩充后的目标集合C进行写回,采用这种方式,可以将更多的数据写回到主存,进一步提升了写回效率以及主存带宽的利用率。
与前述一种缓存数据写回方法相对应,如图7所示,本公开还提出一种缓存数据写回装置,包括:地址扫描模块710、写回模块720,选择模块730,以及触发模块740。
地址扫描模块710,用于用于对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;
写回模块720,用于将该至少一组目标集合写回到主存。
在本实施例中,地址扫描模块可以采用队列的方式存放确定的多个目标集合的信息,并输出给写回模块;目标集合的信息包括目标集合中每个缓存行是否有效、缓存行的个数、各个缓存行所在的way编号、缓存行在way中的位置。
写回模块,在接收到上述信息后,可以生成缓存行在缓存SRAM中的地址,进而基于生成的地址从缓存中的相应位置将目标集合中的各个缓存行写回到主存。
例如通过way信息得到cacheline位于那片SRAM,通过缓存行在way中的位置得到cacheline在SRAM中的偏移量。
因为可能存在多个目标集合,因此写回模块与地址扫描模块采用握手机制,当一个目标集合完成写回后,写回模块将给地址扫描模块返回一个完成标记,地址扫描模块接收到标记后可以无效目标集合中的各个缓存行,具体可以是将各个缓存行的有效标记改为无效,并向写回模块发送下一个目标集合的信息。
在一个实施例中,地址扫描模块710,具体用于遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
针对待写回到主存的多个缓存行,根据Tag标记确定目标集合。
在一个实施例中,主存和Cache的映射方式为组相联映射或直接映射;主存地址中的bank地址以及row地址被映射为Tag标记;
地址扫描模块710,具体用于确定Tag标记相同的多个缓存行为一组目标集合。
在一个实施例中,主存和Cache的映射方式为组相联映射;地址扫描模块710,具体用于确定多个way中,set编号连续并且Tag标记相同的多个缓存行为一组目标集合。
在一个实施例中,主存和Cache的映射方式为全映射;主存地址中的bank地址以及row地址被映射为包含于Tag标记;
地址扫描模块710,具体用于针对待写回到主存的多个缓存行,从所述多个缓存行的Tag标记中查找bank地址和row地址;
确定bank地址和row地址相同的多个缓存行为一组目标集合。
在一个实施例中,地址扫描模块710,还用于针对确定的至少一组目标集合,确定每组目标集合包含的缓存行数量;
根据每组目标集合中包含的缓存行的数量,对所述至少一组目标集合进行排序得到排序结果,其中,包含缓存行多的目标集合排在包含缓存行少的目标集合之前;
写回模块720,具体用于根据排序结果的顺序将所述至少一组目标集合写回到主存。
在一个实施例中,写回模块710,具体用于调用选择模块将所述至少一组目标集合写回到主存;
选择模块,用于在将所述至少一组目标集合写回到主存时,若检测到处理器发送的对所述至少一组目标集合中缓存行的访问请求,则停止将所述至少一组目标集合写回到主存,并处理所述访问请求。
本实施例中,为了不影响处理器的正常访问,例如处理器需要对目标集合中的数据进行访问时,如果将数据写回了主存则会发生不命中的情况,因此,本公开提出配置选择模块730,用于在写回和正常的内存访问发生冲突的时候,中断cache写回的操作,优先处理正常内存访问,即选择模块在正常cache控制器的内存访问请求和写回模块产生的访问请求中进行选择。在需要终止时,选择模块可以向写回模块返回终止标志,写回模块接收到终止模块后,可以终止写回操作。另外,在本实施例中,当选择模块选择了写回操作时,可以监测写回完成的进度,当一个缓存行写回完成时,可以向写回模块返回一个完成标志,写回模块基于完成标志确定和计数器记录有多少缓存行完成写回,在目标集合中的缓存行都完成写回后,可以发送写回完成标志给地址扫描模块,地址扫描模块基于接收到的写回完成标志发送下一目标集合的信息。
在一个实施例中,触发模块740,用于在检测到主存与Cache的传输总线空闲时,触发写回模块720将所述至少一组目标集合写回到主存。
在本实施例中,触发模块可以设置在cache访问外部总线的接口,实时检测总线接口的空闲状态,当总线接口空闲时,可以触发写回模块720将所述至少一组目标集合写回到主存。
在一个实施例中,所述触发模块740,用于在所述至少一组目标集合中的缓存行达到预设数量时,触发写回模块720将至少一组目标集合写回到主存。
在本实施例中,触发模块检测地址扫描模块生成的目标集合,在检测到至少一组目标集合中的缓存行达到预设数量时,可以触发写回模块720将所述至少一组目标集合写回到主存。采用此方式可以避免在写回数据较少时频繁的发起写回操作。
本公开实施例还提供一种图形处理系统,包括上述缓存数据写回装置。
在一个具体的实施例中,本公开中所描述图形处理系统,如图8所示,其至少包括:
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 (18)
1.一种缓存数据写回方法,其特征在于,方法包括:
对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;
针对确定的至少一组目标集合,确定每组目标集合包含的缓存行数量;
根据每组目标集合中包含的缓存行的数量,对所述至少一组目标集合进行排序得到排序结果,其中,包含缓存行多的目标集合排在包含缓存行少的目标集合之前;
根据排序结果的顺序将所述至少一组目标集合写回到主存。
2.根据权利要求1所述的方法,所述对缓存中存储的缓存行进行遍历,确定至少一组目标集合,包括:
遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
针对待写回到主存的多个缓存行,根据Tag标记确定目标集合。
3.根据权利要求2所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述根据Tag标记确定目标集合,包括:
确定Tag标记相同的多个缓存行为一组目标集合。
4.根据权利要求3所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射;
所述确定Tag标记相同的多个缓存行为一组目标集合,包括:
确定多个way中,set编号连续并且Tag标记相同的多个缓存行为一组目标集合。
5.根据权利要求2所述的方法,其特征在于,所述主存和缓存的映射方式为全相联;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
所述根据Tag标记确定目标集合,包括:
针对待写回到主存的多个缓存行,从所述多个缓存行的Tag标记中查找bank地址和row地址;
确定bank地址和row地址相同的多个缓存行为一组目标集合。
6.根据权利要求1所述的方法,其特征在于,还包括:
在将所述至少一组目标集合写回到主存时,若检测到处理器发送的对所述至少一组目标集合中缓存行的访问请求,则停止将所述至少一组目标集合写回到主存,并处理所述访问请求。
7.根据权利要求1所述的方法,其特征在于,所述根据排序结果的顺序将所述至少一组目标集合写回到主存,包括:
在检测到主存与缓存的传输总线空闲时,根据排序结果的顺序将所述至少一组目标集合写回到主存。
8.根据权利要求1所述的方法,其特征在于,所述根据排序结果的顺序将所述至少一组目标集合写回到主存,包括:
在所述至少一组目标集合中的缓存行达到预设数量时,根据排序结果的顺序将所述至少一组目标集合写回到主存。
9.一种缓存数据写回装置,其特征在于,包括:
地址扫描模块,用于对缓存中存储的缓存行进行遍历,确定至少一组目标集合;其中,任一组所述目标集合包括至少两个缓存行,所述至少两个缓存行待写回主存且对应的主存地址位于同一主存页;针对确定的至少一组目标集合,确定每组目标集合包含的缓存行数量;根据每组目标集合中包含的缓存行的数量,对所述至少一组目标集合进行排序得到排序结果,其中,包含缓存行多的目标集合排在包含缓存行少的目标集合之前;
写回模块,用于根据排序结果的顺序将所述至少一组目标集合写回到主存。
10.根据权利要求9所述的装置,其特征在于,
所述地址扫描模块,具体用于遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
针对待写回到主存的多个缓存行,根据Tag标记确定目标集合。
11.根据权利要求10所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射;所述主存地址中的bank地址以及row地址被映射为Tag标记;
所述地址扫描模块,具体用于确定Tag标记相同的多个缓存行为一组目标集合。
12.根据权利要求11所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射;
所述地址扫描模块,具体用于确定多个way中,set编号连续并且Tag标记相同的多个缓存行为一组目标集合。
13.根据权利要求10所述的装置,其特征在于,所述主存和缓存的映射方式为全相联;所述主存地址中的bank地址以及row地址被映射为包含于Tag标记;
所述地址扫描模块,具体用于针对待写回到主存的多个缓存行,从所述多个缓存行的Tag标记中查找bank地址和row地址;
确定bank地址和row地址相同的多个缓存行为一组目标集合。
14.根据权利要求9所述的装置,其特征在于,所述装置还包括选择模块;
所述写回模块,具体用于调用选择模块将所述至少一组目标集合写回到主存;
所述选择模块,用于在将所述至少一组目标集合写回到主存时,若检测到处理器发送的对所述至少一组目标集合中缓存行的访问请求,则停止将所述至少一组目标集合写回到主存,并处理所述访问请求。
15.根据权利要求9所述的装置,其特征在于,还包括:
触发模块,用于在检测到主存与缓存的传输总线空闲时,触发写回模块将所述至少一组目标集合写回到主存。
16.根据权利要求9所述的装置,其特征在于,还包括:
触发模块,用于在所述至少一组目标集合中的缓存行达到预设数量时,触发写回模块将所述至少一组目标集合写回到主存。
17.一种图形处理系统,其特征在于,包括上述权利要求9-16任一项所述的缓存数据写回装置。
18.一种电子设备,其特征在于,包括权利要求17所述的图形处理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310056214.XA CN115794674B (zh) | 2023-01-19 | 2023-01-19 | 一种缓存数据写回方法、装置、图形处理系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310056214.XA CN115794674B (zh) | 2023-01-19 | 2023-01-19 | 一种缓存数据写回方法、装置、图形处理系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794674A CN115794674A (zh) | 2023-03-14 |
CN115794674B true CN115794674B (zh) | 2023-05-12 |
Family
ID=85429743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310056214.XA Active CN115794674B (zh) | 2023-01-19 | 2023-01-19 | 一种缓存数据写回方法、装置、图形处理系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794674B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000187616A (ja) * | 1998-12-22 | 2000-07-04 | Nec Corp | キャッシュラインをクリーンな状態に保つメモリシステム |
US9336142B2 (en) * | 2013-11-06 | 2016-05-10 | International Business Machines Corporation | Cache configured to log addresses of high-availability data via a non-blocking channel |
CN105095116B (zh) * | 2014-05-19 | 2017-12-12 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN110673786B (zh) * | 2019-09-03 | 2020-11-10 | 浪潮电子信息产业股份有限公司 | 数据缓存的方法和装置 |
-
2023
- 2023-01-19 CN CN202310056214.XA patent/CN115794674B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115794674A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100382821B1 (ko) | 2-웨이세트연관캐시메모리 | |
US6629188B1 (en) | Circuit and method for prefetching data for a texture cache | |
US8443152B2 (en) | Cache memory capable of adjusting burst length of write-back data in write-back operation | |
US7697009B1 (en) | Processing high numbers of independent textures in a 3-D graphics pipeline | |
CN115794673B (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
US20060164429A1 (en) | 3-D rendering texture caching scheme | |
CN101782872A (zh) | 使用固态盘的缓存系统和方法 | |
US7948498B1 (en) | Efficient texture state cache | |
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
CN101201933B (zh) | 绘图处理单元及方法 | |
CN101918925A (zh) | 用于处理器的高关联性高速缓存的第二次机会取代机制 | |
CN115809028B (zh) | 一种缓存数据替换方法、装置、图形处理系统及电子设备 | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
US7809904B1 (en) | Page preloading using page characterization data | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
CN117609314A (zh) | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
US6570573B1 (en) | Method and apparatus for pre-fetching vertex buffers in a computer system | |
EP2779088B1 (en) | Techniques for improving rendering efficiency | |
CN115794674B (zh) | 一种缓存数据写回方法、装置、图形处理系统及电子设备 | |
KR20030005253A (ko) | 타일형 그래픽스 아키텍쳐 | |
CN116303138B (zh) | 一种缓存架构及缓存方法、电子设备 | |
TW440761B (en) | The cache device and method | |
CN115794675B (zh) | 写数据方法、装置、图形处理系统、电子组件及电子设备 | |
CN115809208B (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 |