CN115794675A - 写数据方法、装置、图形处理系统、电子组件及电子设备 - Google Patents
写数据方法、装置、图形处理系统、电子组件及电子设备 Download PDFInfo
- Publication number
- CN115794675A CN115794675A CN202310058479.3A CN202310058479A CN115794675A CN 115794675 A CN115794675 A CN 115794675A CN 202310058479 A CN202310058479 A CN 202310058479A CN 115794675 A CN115794675 A CN 115794675A
- Authority
- CN
- China
- Prior art keywords
- cache
- main memory
- cache lines
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 title claims abstract description 13
- 238000013507 mapping Methods 0.000 claims description 80
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 238000009877 rendering Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供一种写数据方法、装置、图形处理系统、电子组件及电子设备,用于将缓存中的数据写入至主存中,包括:针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种写数据方法、装置、图形处理系统、电子组件以电子设备。
背景技术
Cache即缓存也称高速缓冲,是除寄存器以外最靠近处理器的存储单元,通常由SRAM组成。将Cache部署在处理器和主存之间,同时将主存中的部分数据也存储在Cache中,处理器可以通过访问Cache读写数据以避免直接访问主存,由于处理器对Cache的读写速度较快,因此提升了读写效率,同时也减少了处理器对主存的访问次数。
目前在将Cache中的数据写到主存时,无法充分利用主存的带宽。
发明内容
本公开的目的是提供一种基于缓存的写数据方法、装置、图形处理系统以及电子设备,以解决在将缓存中的数据写到主存时,无法充分利用主存带宽的问题。
根据本公开的一个方面,提供一种基于缓存的写数据方法,用于将缓存中的数据写入至主存中,包括:
针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行,包括:
确定Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射,所述确定Tag标记相同的缓存行为一组目标缓存行,包括:
确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括写回操作,所述方法还包括:遍历全部缓存行的脏数据标记和有效标记,确定待写回主存的多个缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
对待写回主存的多个缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括刷新操作,所述方法还包括:接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括替换操作,所述方法还包括:遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
在利用主存中的替换数据块对缓存中的待替换缓存行进行替换时,对待写回到主存的多个缓存行的Tag标记进行遍历,确定多个路中,与所述待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和所述待替换缓存行组成目标缓存行。
根据本公开的第二个方面,提供基于缓存的写数据装置,用于将缓存中的数据写入至主存中,包括:
遍历模块,用于针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
写入模块,用于针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述遍历模块,具体用于确定Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述主存和缓存的映射方式为组相联映射;
所述遍历模块,具体用于确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括写回操作;
所述遍历模块,具体用于遍历全部缓存行的脏数据标记和有效标记,确定待写回主存的多个缓存行;
对待写回主存的多个缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括刷新操作;
所述遍历模块,具体用于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括替换操作;
所述遍历模块,具体用于遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
在利用主存中的替换数据块对缓存中的待替换缓存行进行替换时,对待写回到主存的多个缓存行的Tag标记进行遍历,确定多个路中,与所述待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和所述待替换缓存行组成目标缓存行。
根据本公开的第三个方面,提供一种图形处理系统,包括上述第二个方面任一实施例所述的写数据装置。
根据本公开的第四个方面,提供一种电子组件,包括上述第三个方面所述的图形处理系统。
根据本公开的第五个方面,提供一种电子设备,包括上述第四个方面所述的电子组件。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供的系统级芯片中缓存的结构示意图;
图2为本公开一个实施例提供的主存和缓存直接映射的结构示意图;
图3为本公开一个实施例提供的主存和缓存组相联映射的结构示意图;
图4为本公开一个实施例提供的主存和缓存全相联映射的结构示意图;
图5为本公开一个实施例提供的直接映射和组相联映射中缓存中地址的结构示意图;
图6为本公开一个实施例提供的缓存中缓存行的结构示意图;
图7为本公开一个实施例提供的一种基于缓存的写数据方法的流程示意图;
图8为本公开一个实施例提供的一种组相联映射的结构示意图;
图9为本公开一个实施例提供的一种组相联映射的结构中替换的示意图;
图10为本公开一个实施例提供的一种基于缓存的写数据装置的结构示意图;
图11为本公开一个实施例提供的另一种基于缓存的写数据装置的结构示意图;
图12为本公开一个实施例提供的一种图形处理系统的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
将Cache部署在处理器和主存之间,同时将主存中的部分数据也存储在Cache中,处理器可以通过访问Cache读写数据以避免直接访问主存,在系统级芯片中,如图1所示,为Cache具体部署的两种形式。其中IP即为各个处理器,在图1中左图示出的形式中各个IP共享一个Cache,在右图中,各个IP有独立的Cache,图中的内存即为主存,下文中,本公开中提到主存即为内存。
Cache的容量要远远小于主存容量,它保存的数据是主存的一个子集,且Cache和主存进行地址交换是以缓存行为单位的。即把主存和Cache分割成一定大小的块,这个块在主存中称为数据块data block,将主存中的data block映射到Cache中的缓存行中就需要采用相应的映射方式,常见的映射方式包括直接映射、组相联映射以及全相联映射。
直接映射采用取模的方式进行一对一映射,容易出现Cache不命中的情况。组相联中每一组(set)中可以存储更多的信息,因此相对于直接映射的方式,增加了Cache命中的几率。全相联是极端的组相联,即Cache只有一个set,实现较为复杂,目前业界最常用的映射方法为组相联。
如图2所示,为直接映射的示意图,在直接映射的方式中,如果Cache中共有8个缓存行,那么主存中的0、8、16、24...号数据块会被映射到缓存行0中,同理1、9、17....号数据块会被映射到缓存行1中。当主机的读取顺序是数据块0-数据块8-数据块0-数据块8的情况下,由于缓存行0只能同时缓存一个数据块,因此,在读取数据块8以及第二次读取数据块0时,会发生Cache不命中的情况,即在Cache中无法找到数据块需要去主存中查找数据块。因此,直接映射的方式中Cache命中的几率并不高,进而整体的读写效率也不高。
在组相联的方式中包括N个路(路),每个路中包括M组(set)。每一组即每一set中包括N个缓存行。如图3所示,存在两个路,即路0和路1,每一路有8行,对应8组,每组中有2个缓存行,即路0的Cache line0和路1的Cache line0为一组。
这样主存中数据块0、8、16、24…中任意两个数据块可以同时存储在缓存中的两个Cache line0中,进而组相联映射的方式相对于直接映射增加了Cache命中的概率提升了整体的读写效率。
如图4所示,为全相联的示意图,全相联是极端的组相联,即cache只有一个组。每一个数据块都可以存进任何一个缓存行。全相联方式中Cache命中的概率也较高,但是实现较为复杂,工作延时也较高。
在直接映射和组相联的映射方式中,处理器发送到Cache中的地址被划分为3段,如图5所示,包括Tag、Index、Line offset。其中line offset(偏移位)用来表示该地址在缓存行中的偏移,Index(行标记)表示该地址位于哪一个组(set)中(组相联映射的方式中)或哪一行中(直接映射的方式中),Tag(标记位)用于确定是否命中数据块。其中,每个缓存行如图6所示,缓存行中包括有效标记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置位的缓存行一起刷新至主存,或者独立的写回至主存,以保证缓存中的数据与主存中的数据一致。
为了减少设备对主存的写访问量,实际应用中通常使用写回策略。目前业界在写回策略中,在需要将数据写回到主存时,一般是在处理器确定Cache中的某个标记为dirty的数据不再具有较高的复用率时,触发Cache的写回操作。由于写回操作中,通常都是仅写回一个缓存行的数据到主存中,每次写回操作只写回一个缓存行中的数据,不能充分利用主存的带宽,另外,上文也提到,在需要写回至主存时,需要先开启主存页,因此写入一个缓存行的数据就需要执行开启主存页的操作,比较浪费资源。另外,如果多个缓存行中的数据在一个时间段内需要同时被写回,那么往往是按照缓存中缓存行的存储顺序将各个数据块写回到主存中,而这些数据块在主存中的存储地址是随机的、不连续的,这就造成多个写回操作访问主存中的不同存储地址,而主存一般为DDR SDRAM,这样的访问会造成在DDRSDRAM的不同主存页之间来回切换,访问效率较低,并且每次写回时只写回一个数据块,主存带宽的利用率也不高。
另外,在写回策略中还存在刷新的场景,即需要将dirty bit置位的缓存行一起刷新至主存。通常是按照缓存中各个缓存行的存储顺序进行刷新,例如,如图3所示的缓存,如果该缓存中的全部缓存行都需要进行刷新,则会先将路0的Cache line0-Cache line7依次进行刷新,然后将路1的Cache line0-Cache line7依次进行刷新,这里的刷新可以是将Cacheline中的数据依次写回至主存的相应位置,然后将Cache line中的脏数据标记置为0,以表示该Cache line中的数据为非脏数据;另外,也可以是将Cache line中的数据依次写回至主存的相应位置后,直接将Cache line中的有效比特位置为0,以表示该Cacheline中的数据失效。可以采用上述任一一种方式,本公开对此不进行限定,其中,采用第一种方式时,在刷新后,该Cache line中的数据仍能被处理器访问和使用。
上述方式中,按照缓存行在缓存中的存储顺序进行刷新,由于各个缓存行在主存中存储的位置不同,在缓存中连续的多个缓存行对应的存储位置可能在主存中的不同主存页,这就造成刷新过程需要多次切换主存页,因此,刷新效率较低,同时在开启某个主存页后,仅仅写回一个对应于该主存页的缓存行中的数据,也无法充分利用主存的带宽。更具体而言,仍以图3为例,如果路0的Cache line0和路0的Cache line1对应的主存地址在不同的主存页,例如路0的Cacheline0对应的主存页为主存页0,路0的Cache line1对应的主存页为主存页1,刷新过程具体为:开启主存页0,将路0的Cache line0刷新至主存页0,关闭开启主存页0;开启主存页1,将路0的Cache line1刷新至主存页1。可见,当在缓存中连续的缓存行对应不同的主存页时,刷新两个缓存行就需要进行一次主存页的切换,可以理解的是,在缓存行较多时,需要多次切换主存页,需要消耗大量时间,刷新效率较低,另外,在开启某个主存页后,只写回少量的缓存行的数据到主存,并不能充分利用主存的带宽。
此外,还存在替换的场景,即在Cache中没有命中时,需要将被访问的数据块从主存中读取并写入Cache中以使处理器可以在Cache中对该数据块进行读写,而当Cache被存满时,需要将Cache中已有的缓存行进行替换,即将Cache中已有的某个缓存行中的数据写至主存,并将主存当前需要被访问的数据块写入该缓存行的存储位置,目前的替换策略包括:随机算法,即从已有的缓存行中,随机确定一个缓存行作为待替换缓存行,然后进行替换;先进先出算法:从已有的缓存行中选择最先写入的缓存行作为待替换缓存行进行替换;近期最少使用算法:通过计数器来确定每个缓存行未被访问的时间,将未被访问时间最长的缓存行作为待替换缓存行,进行替换;最近不常使用算法:通过计数器来记录每个缓存行被访问的次数,将被访问次数最少的缓存行作为待替换缓存行,进行替换。上述替换算法中,仅是一对一的进行替换,每次在需要替换时,仅将一个待替换缓存行的数据写回至主存,而主存一般为DDR SDRAM,在对DDR SDRAM进行访问时,需要先开启访问地址所在的主存页,在开启后,才能进行访问,采用上述替换方式,在开启主存页后,仅将一个待替换缓存行的数据写回到该主存页中,并未充分利用主存的带宽,另外,在替换时,整体的执行过程包括:开启主存页,写入一个待替换缓存行,关闭该主存页,整体执行过程中,开启和关闭主存页所需的时间可能要多于写入一个待替换缓存行的时间,因此,仅为写入一个待替换缓存行而执行开启和关闭主存页的过程,无疑是一种资源上的浪费。
综上,在将Cache中的数据写到主存中时可能会涉及到三种场景,即写回操作的场景、刷新操作的场景以及替换操作的场景,在这三种场景中,采用现有的方式,均无法充分利用主存的带宽。
为了解决上述问题,本公开提出在将缓存中的数据写到主存时,针对目标写操作,将位于同一主存页的缓存行一起写到主存,以提升主存的带宽利用率。
如图7所示,为本公开提出的一种基于缓存的写数据方法,用于将缓存中的数据写入至主存中,该方法包括:
S701,针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
S702,针对至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
本公开提出,在需要执行写操作,如写回、刷新或替换操作时,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行,每组目标缓存行中的各个缓存行对应的主存页相同,并将每组缓存行中的缓存行连续的写到主存,从而在执行写操作时,可以有效减少在多个主存页之间的切换次数,在开启主存页后,可以同时写入更多的缓存行,因此提升了主存带宽的利用率,同时也提升了整体的写操作的效率。
上文提到,主存和缓存的映射方式包括组相联映射、直接映射、全相联映射等,并且在组相联映射和直接映射中,主存地址的bank地址和row地址可以被映射为Tag标记,还可以被映射为包含于Tag标记,在全相联映射中,主存地址的bank地址和row地址往往被映射为包含于Tag标记。
下面以主存和缓存的映射方式为组相联映射或直接映射,主存地址的bank地址和row地址被映射为Tag标记为例,对本公开提出的基于缓存的写数据方法进行说明。
在这种映射方式中,上述S701具体可以是:
确定Tag标记相同的缓存行为一组目标缓存行。
以图2示出的映射关系为例,例如Cache line0和Cache line3的Tag相同,Cacheline2和Cache line4相同,则确定Cache line0和Cache line3为一组目标缓存行,Cacheline2和Cache line4为一组目标缓存行。
则在执行写操作时,即在S702中,可以按照Cache line0、Cache line3、Cacheline2、Cache line4的顺序写入至主存。在组相联的方式中也类似,如图3所示的映射方式中,如果路0的Cache line0和路1的Cache line2中的Tag标记相同,则确定路0的Cacheline0和路1的Cache line2属于一组目标缓存行。
由于在这种映射方式中,Tag标记相同意味着位于同一主存页,因此可以将同一主存页的缓存行中的数据一起写入到主存中,减少了主存切换次数,并且提升了主存带宽的利用率。
此外,在主存和缓存的映射方式为组相联映射或直接映射,并且主存地址中的bank地址以及row地址被映射为Tag标记时,还可以是仅将主存地址连续的缓存行作为一组目标缓存行。即在组相联映射方式中,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组缓存行。
如图3所示,如果路0的Cache line0和路1的Cache line1中的Tag标记相同,则确定路0的Cache line0和路1的Cache line1属于一组目标缓存行。
在直接映射中,还可以是确定缓存行位置连续并且Tag标记相同的缓存行为一组缓存行。如图2所示,如果Cache line0和Cache line1的Tag标记相同,则确定Cacheline0和Cache line1属于同一组目标缓存行。
另外,在直接映射或者组相联中,如果主存地址中的bank地址以及row地址被映射为包含于Tag标记,则需要从Tag标记中查找bank地址和row地址,确定bank地址和row地址相同的缓存行为一组目标缓存行。
在全相联的映射方式中,在实际应用中,主存地址中的bank地址以及row地址通常被映射为包含于Tag标记。
因此,在全相联的方式中,可以从多个缓存行的Tag标记中查找bank地址和row地址,确定bank地址和row地址相同的多个缓存行为一组目标缓存行。如图4所示,如果遍历后发现Cache line0和Cache line1的Tag中的bank地址以及row地址均相同,则说明Cacheline0和Cache line1对应的主存地址是位于同一主存页的,则将Cacheline0和Cacheline1确定为一组目标缓存行。
可以理解的是,上述例子中虽然都是以两个缓存行组成目标集合为例,但是在多于两个的缓存行的Tag标记或Tag标记中包含的bank地址和row地址相同时,则可以将多于两个的缓存行确定为一组目标缓存行。
下面以写回场景为例,对本公开提出的基于缓存的写数据方法进行说明:
本公开提出,可以在特定时刻,例如在检测到主存与Cache的传输总线空闲时,执行写回操作。
具体可以是先遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行,具体的,可以是确定有效标记和脏数据标记都置位的缓存行为待写回主存的缓存行,即确定当前有效且为脏数据的缓存行为待写回主存的缓存行。如果映射方式为直接映射或组相联映射,并且主存地址中的bank地址以及row地址被映射为Tag标记,则可以对待写回主存的多个缓存行的Tag标记进行遍历,将Tag相同的缓存行确定为一组目标缓存行。
另外,也可以只将主存地址物理上连续的缓存行作为目标缓存行,即如果映射方式为组相联映射,则可以对待写回主存的多个缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
以图3为例,如果确定了3组目标缓存行,确定的目标缓存行可以如表1所示。
表1
可以记录目标缓存行中每个缓存行所在的路编号以及在路中的位置,在得到了至少一组目标缓存行后,可以针对每组目标缓存行,基于缓存行所在路的编号信息确定该缓存行位于哪片SRAM(Cache通常由SRAM构成),然后通过Cache在路中的位置确定该Cache在SRAM中的偏移量,进而生成该缓存行在Cache中的地址,在确定了目标缓存行中所有的缓存行在Cache中的地址后,即可以从Cache中获取各个缓存行,具体而言是获取各个缓存行中的Data block中的数据,然后将获取的数据写回到主存中。在写回之后可以将各个缓存行中的有效标记改为失效状态。在针对一组目标缓存行执行写回后,再对下一组目标缓存行进行写回,直到将所有组目标缓存行写回到主存。考虑到还有些dirty且有效的待写回主存的缓存行,不与其他待写回主存的缓存行地址属于同一主存页,对于此类缓存行可以是在等到其与其他缓存行组成一组目标缓存行后再写回主存,也可以是在本次将其他组目标缓存行写回到主存之后,也将此类缓存行单独作为一组目标缓存行,并逐一的写回主存。
下面以刷新场景为例,对本公开提出的基于缓存的写数据方法进行说明:
在刷新场景中,可以是接收处理器发送的刷新指令,刷新指令中携带待刷新的主存地址范围,主存地址范围往往包括至少两个主存页对应的地址范围,即需要对至少两个主存页中的数据进行刷新;
如果映射方式为直接映射或组相联映射,并且主存地址中的bank地址以及row地址被映射为Tag标记,则可以对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于主存地址范围的缓存行,确定为对应于该主存地址范围的待刷新缓存行。即从目前全部的待刷新的缓存行中,查找对应于待刷新主存地址范围的缓存行。
以图8包括两个路的组相联的映射方式为例,例如接收到的主存地址范围包括0x1000以及0x2000,如果图中的各个缓存行均为脏数据标记和有效标记均置位的缓存行,则确定目前缓存中的全部缓存行均为待刷新的缓存行,由于直接将主存地址的row和bank地址映射为了Tag,因此可以对多个待刷新的缓存行的Tag标记进行遍历,将Tag标记属于主存地址范围的缓存行,确定为对应于主存地址范围的待刷新缓存行,即经过遍历后,发现路0的Cache line0、路0的Cache line3-Cache line5、路1的Cache line1、路1的Cacheline7;路0的Cache line1、路0的Cache line2、路1的Cache line0、路1的Cache line3为对应于主存地址范围的待刷新缓存行。当然,在一些实际场景中,缓存中的所有待刷新缓存行可能均属于对应于主存地址范围的待刷新缓存行,例如在接收到的待刷新的主存地址范围包括0x1000、0x2000、0x1400、0x1100、0x1200时,则可以确定当前缓存中的全部待刷新缓存行均属于对应于主存地址范围的待刷新缓存行。
然后,可以对多个待刷新的缓存行的Tag标记进行遍历,并将Tag标记相同的待刷新缓存行连续刷新至主存中。可以采用以下多种方式中的一种方式进行实现。
具体的,在一种实施方式中,可以是针对至少两个主存页,每次以一个或多个主存页为刷新对象,对多个待刷新的缓存行的Tag标记进行遍历,分别得到对应于该至少两个主存页的目标缓存行,任一组目标缓存行中包括Tag相同的待刷新缓存行;将对应于至少两个主存页的目标缓存行分别连续刷新至主存中。即先查找出各个主存页对应的目标缓存行,然后将各个目标缓存行中的缓存行分别连续刷新至主存中。
仍以图8为例,例如,主存地址范围包括0x1000、0x2000、0x1100、0x1200、0x1400,即图8展示的全部缓存行均为待刷新缓存行。
可以每次以一个主存页为刷新对象进行遍历,例如,可以以0x1000为刷新对象,对多个待刷新的缓存行的Tag标记进行遍历,得到对应于0x1000的目标缓存行:路0的Cacheline0、路0的Cache line3-Cache line5、路1的Cache line1、路1的Cache line7。然后,再以下一个主存页为刷新对象进行遍历,从而得到对应于该各个主存页的目标缓存行。
得到的目标缓存行可以如表2所示:
表2
在得到多组目标缓存行后,即可以将对应于各个主存页的目标缓存行的缓存行分别连续刷新至主存中,例如,先将主存页0x1000对应的目标缓存行路0的Cache line0、路0的Cache line3-Cache line5、路1的Cache line1、路1的Cache line7连续的刷新至主存中,然后将主存页0x2000对应的目标缓存行路0的Cacheline1-Cache line2、路1的Cacheline0、路1的Cache line3连续的刷新至主存中,以此类推,将全部主存页的目标缓存行中的缓存行分别连续刷新至主存中。采用这样的刷新方式,可以在某个主存页启动的情况下,将本次刷新对应于该主存页的待刷新缓存行都刷新进去,然后进行关闭,再启动下一主存页,对下一主存页的数据进行刷新,尽可能减少了主存页之间的切换,同时在每一主存页打开时,可以尽可能多的写入数据,可以有效提升主存带宽的利用率。
上述是每次以一个主存页为刷新对象进行遍历和刷新的过程,除此之外还可以是每次以多个主存页为刷新对象进行遍历,例如以两个主存页为刷新对象进行遍历,如在一次遍历过程中同时以0x1000和0x2000作为刷新对象进行遍历,查找出0x1000和0x2000对应的目标缓存行。
在一种实施方式中,也可以是仅对主存地址连续的缓存作为一组目标缓存行,即还可以是对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组缓存行。
下面以替换场景为例,对本公开提出的基于缓存的写数据方法进行说明:
在替换场景中,可以是遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;针对待写回到主存的多个缓存行,根据Tag确定目标缓存行。
具体的,可以是确定有效标记和脏数据标记都置位的缓存行为待写回主存的缓存行,即确定当前有效且被标记为脏数据的缓存行为待写回主存的缓存行,在确定了待写回主存的缓存行后,可以针对待写回到主存的多个缓存行,根据Tag标记确定目标缓存行。
根据Tag标记确定目标缓存行时,在主存和Cache的映射方式为组相联映射或直接映射,且在主存地址中的bank地址以及row地址被映射为Tag标记的情况下,具体可以将与待替换缓存行的Tag标记相同的缓存行以及待替换缓存行确定为目标缓存行。
如图2所示,如果待替换缓存行为Cacheline0,且Cache line0和Cache line1的Tag标记相同,则说明Cacheline0 和Cache line1对应的主存地址是位于同一主存页的(bank和row均相同),另外,由于Cache line0 和Cache line1映射到缓存中的位置也是连续的,因此,可以确定Cache line0 和Cache line1对应的主存地址在物理上也是连续的。如果Cacheline1是有效且为脏数据,则确定Cache line1和Cache line0为目标缓存行。
又例如,Cache line0和Cache line2的Tag标记相同,则说明Cacheline0 和Cacheline2对应的主存地址是位于同一主存页的,如果Cache line2是有效的且为脏数据,则确定Cache line2和Cache line0为目标缓存行。
再以图3示出的组相联为例,根据Tag标记确定目标缓存行,具体可以是确定多个路中,与待替换缓存行Tag标记相同的至少一个缓存行为目标缓存行。如果待替换缓存行为路0中的Cacheline0,且路0中的Cache line0与路0中的Cache line3 Tag标记相同,如果路0中的Cache line3是有效的且为脏数据,则确定路0中的Cache line3和 路0中的Cacheline0为目标缓存行。
在一个实施例中,也可以进一步缩小目标缓存的查找范围,即只将主存地址物理上与待替换缓存行连续的缓存行作为目标缓存行,那么可以确定多个路中,与待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和待替换缓存行组成目标缓存行为目标缓存行。
例如,如果待替换缓存行为路0中的Cacheline0,路0中的Cache line0与路1中的Cache line1 Tag标记、Way0中的Cache line2 Tag标记相同,且路1中的Cache line1 以及Way0中的Cache line2为有效的、脏数据,则将路1中的Cache line1、Way0中的Cache line2以及路0中的Cacheline0确定为目标缓存行。
在本实施例中,将主存地址物理上与待替换缓存行连续的缓存行作为目标缓存行,那么在替换时,还可以是若Cache中不存在与待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,则将Cache中的待替换缓存行替换为替换数据块。
即,在主存地址物理上与待替换缓存行连续的缓存行作为目标缓存行的方式中,在替换时,如果Cache中存在与原本的待替换缓存行主存地址物理上连续的缓存行,则在替换数据块会打断Cache中各缓存行主存地址的连续性时,直接将Cache中待替换缓存行和与待替换缓存行连续的缓存行一起写回至主存,如果没有打断Cache中各缓存行主存地址的连续性,则直接进行替换。
如图9所示,针对主存地址1,即替换数据块的地址,其映射后需要映射到路0中的Cache line6中,并且映射的Tag为0x1000,由于路0中的cache line3到cache line5以及路1中的cache line7,Tag均为0x1000,因此替换数据块和路0中的cache line3、路0中的cache line4、cacheline5、路1中的cache line7,主存地址物理上连续,而原本的路0中的Cacheline6即待替换缓存行中的Tag=1400,当前Cache中不存在与其主存地址物理上连续的目标缓存行,因此可以直接对路0中的Cache line6进行替换。
又如图9所示,针对主存地址2,即替换数据块的地址,其映射后需要映射到路0中的Cache line1中,并且映射的Tag为0x3000,而当前待替换缓存行即路0中的Cache line1中的Tag=0x2000,其与目前Cache中的路1中的Cache line0、路0中的Cache line2、路1中的Cache line3的Tag均相同,因此可以确定目标缓存行为Cache中的路1中的Cache line0、路0中的Cache line2和路1中的Cache line3,在替换时,可以将目标缓存行:路1中的Cacheline0、路0中的Cache line2、路1中的Cacheline3以及路0中的Cache line1中的数据写回至主存,并将替换数据块写入至路0中的Cache line1中。
另外,如果Cache中既不存在与待替换缓存行主存地址连续的目标缓存行,也不存在与替换数据块主存地址连续的缓存行的情况下,也可以直接利用替换数据块对待替换缓存行进行替换。
在本实施例中,采用该方式,在替换时,将目标缓存行一起写回主存,可以在替换时充分利用主存的带宽资源,并且,可以在Cache中的数据需要写回或刷新时,由于一部分数据已经通过替换操作提前进行了写回,因此可以有效减少写回或刷新的数据量,减少了写回的次数,并且提升了刷新的效率。另外,如果在缓存中无法针对待替换缓存行查找到目标缓存行,仅对待替换缓进行替换,可以使Cache中的各个缓存行的数据逐渐趋于主存地址连续(由于替换数据块可能会与Cache中已有的缓存行组成主存地址连续的多个缓存行,如图8中的主存地址1的替换),这样在在下次触发替换或者刷新时,可以将Cache中主存地址连续的多个缓存行一起进行刷新或替换,提升刷新或替换的效率。
如图10所示,与上述一种基于缓存的写数据方法相对应,本公开还提出一种基于缓存的写数据装置,该装置包括:
遍历模块1010,用于针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
写入模块1020,用于针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
在一种实施方式中,主存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
遍历模块1010,具体用于确定Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,主存和缓存的映射方式为组相联映射,
遍历模块1010,具体用于确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括写回操作,
遍历模块1010,具体用于遍历全部缓存行的脏数据标记和有效标记,确定待写回主存的多个缓存行;
对待写回主存的多个缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括刷新操作,
遍历模块1010,具体于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
在一种实施方式中,所述目标写操作包括替换操作,
遍历模块1010,具体用于遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
在利用主存中的替换数据块对缓存中的待替换缓存行进行替换时,对待写回到主存的多个缓存行的Tag标记进行遍历,确定多个路中,与所述待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和所述待替换缓存行组成目标缓存行。
在一个具体实施方式中,如图11所示,为本公开提出的基于缓存的写数据装置的一种具体的示意图,该装置包括:Cache line刷新触发模块、Cache line刷新模块、Cacheline替换触发模块、Cache line替换模块、Cache line写回触发模块、Cache line写回模块以及连续地址检测模块。
其中,连续地址检测模块用于在根据Cache line中的Tag buffer 即Tag标记来查找目标缓存行。
Cache line刷新触发模块用于在需要进行刷新时触发连续地址检测模块查找目标缓存行,Cacheline刷新模块用给接收Cache line刷新触发模块发送的目标缓存行,并将每组目标缓存行中的缓存行连续的写到主存。
Cache line替换触发模块用于在需要进行刷新时触发连续地址检测模块查找目标缓存行,Cacheline替换模块用给接收Cache line替换触发模块发送的目标缓存行,并将每组目标缓存行中的缓存行连续的写到主存。
Cache line写回触发模块用于在需要进行刷新时触发连续地址检测模块查找目标缓存行,Cacheline写出模块用给接收Cache line写回触发模块发送的目标缓存行,并将每组目标缓存行中的缓存行连续的写到主存。
基于相同的发明构思,本公开还提出一种图形处理系统,如图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等)输出到显示器上;
视频解码器,用于将主机硬盘上的编码的视频解码成能显示的画面。
视频编码器,用于将主机硬盘上原始的视频码流编码成指定的格式返回给主机。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中所述的图形处理系统。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子装置的产品形式体现为CPU主板。
本公开实施例还提供一种电子设备,该电子设备包括上述的图形处理系统。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
以上尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改,本领域的技术人员在不脱离本公开的精神和范围的前提下,做出的变更和修改也应视为本公开实施例的保护范围。
Claims (15)
1.一种写数据方法,其特征在于,用于将缓存中的数据写入至主存中,包括:
针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
2.根据权利要求1所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行,包括:
确定Tag标记相同的缓存行为一组目标缓存行。
3.根据权利要求2所述的方法,其特征在于,所述主存和缓存的映射方式为组相联映射,所述确定Tag标记相同的缓存行为一组目标缓存行,包括:
确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
4.根据权利要求3所述的方法,其特征在于,所述目标写操作包括写回操作,所述方法还包括:遍历全部缓存行的脏数据标记和有效标记,确定待写回主存的多个缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
对待写回主存的多个缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
5.根据权利要求3所述的方法,其特征在于,所述目标写操作包括刷新操作,所述方法还包括:接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
6.根据权利要求3所述的方法,其特征在于,所述目标写操作包括替换操作,所述方法还包括:遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
所述确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行,包括:
在利用主存中的替换数据块对缓存中的待替换缓存行进行替换时,对待写回到主存的多个缓存行的Tag标记进行遍历,确定多个路中,与所述待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和所述待替换缓存行组成目标缓存行。
7.一种写数据装置,其特征在于,用于将缓存中的数据写入至主存中,包括:
遍历模块,用于针对目标写操作,对缓存中缓存行的Tag标记进行遍历,确定至少一组目标缓存行;其中,每组目标缓存行中的各个缓存行对应的主存页相同;
写入模块,用于针对所述至少一组目标缓存行,将每组目标缓存行中的缓存行连续的写到主存。
8.根据权利要求7所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述遍历模块,具体用于确定Tag标记相同的缓存行为一组目标缓存行。
9.根据权利要求8所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射;
所述遍历模块,具体用于确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
10.根据权利要求8所述的装置,其特征在于,所述主存和缓存的映射方式为组相联映射;
所述遍历模块,具体用于确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
11.根据权利要求9所述的装置,其特征在于,所述目标写操作包括刷新操作;
所述遍历模块,具体用于接收待刷新的主存地址范围,所述主存地址范围包括至少两个主存页对应的地址范围;
从缓存中查找对应于所述主存地址范围的多个待刷新缓存行;
对多个待刷新缓存行的Tag标记进行遍历,确定多个路中,set编号连续并且Tag标记相同的缓存行为一组目标缓存行。
12.根据权利要求9所述的装置,其特征在于,所述目标写操作包括替换操作;
所述遍历模块,具体用于遍历全部缓存行的脏数据标记和有效标记确定待写回到主存的多个缓存行;
在利用主存中的替换数据块对缓存中的待替换缓存行进行替换时,对待写回到主存的多个缓存行的Tag标记进行遍历,确定多个路中,与所述待替换缓存行set编号连续并且Tag标记相同的至少一个缓存行,和所述待替换缓存行组成目标缓存行。
13.一种图形处理系统,其特征在于,包括上述权利要求7-12任一项所述的写数据装置。
14.一种电子组件,其特征在于,包括上述权利要求13所述的图形处理系统。
15.一种电子设备,其特征在于,包括权利要求14所述的电子组件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310058479.3A CN115794675B (zh) | 2023-01-19 | 2023-01-19 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
PCT/CN2023/102987 WO2024152518A1 (zh) | 2023-01-19 | 2023-06-28 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310058479.3A CN115794675B (zh) | 2023-01-19 | 2023-01-19 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794675A true CN115794675A (zh) | 2023-03-14 |
CN115794675B CN115794675B (zh) | 2023-05-16 |
Family
ID=85429737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310058479.3A Active CN115794675B (zh) | 2023-01-19 | 2023-01-19 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115794675B (zh) |
WO (1) | WO2024152518A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024152518A1 (zh) * | 2023-01-19 | 2024-07-25 | 北京象帝先计算技术有限公司 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
WO2024193437A1 (zh) * | 2023-03-21 | 2024-09-26 | 华为技术有限公司 | 缓存器及其控制方法、计算机系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009054000A (ja) * | 2007-08-28 | 2009-03-12 | Hitachi Ltd | マルチプロセッサシステム及びキャッシュ管理方法 |
WO2013190247A1 (fr) * | 2012-06-22 | 2013-12-27 | Commissariat à l'énergie atomique et aux énergies alternatives | Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN106227676A (zh) * | 2016-09-22 | 2016-12-14 | 大唐微电子技术有限公司 | 一种高速缓存以及从高速缓存中读取数据的方法和装置 |
CN110018971A (zh) * | 2017-12-29 | 2019-07-16 | 华为技术有限公司 | 缓存替换技术 |
CN111602377A (zh) * | 2017-12-27 | 2020-08-28 | 华为技术有限公司 | 高速缓存中资源调整方法、数据访问方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0840232B1 (en) * | 1996-10-31 | 2004-01-02 | Texas Instruments Incorporated | Microprocessor comprising means for storing non-cacheable data |
WO2014158156A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Storing data from cache lines to main memory based on memory addresses |
CN110716887B (zh) * | 2019-09-11 | 2021-08-10 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN115481054A (zh) * | 2022-08-08 | 2022-12-16 | Oppo广东移动通信有限公司 | 数据处理方法、装置及系统、系统级soc芯片及计算机设备 |
CN115794675B (zh) * | 2023-01-19 | 2023-05-16 | 北京象帝先计算技术有限公司 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
-
2023
- 2023-01-19 CN CN202310058479.3A patent/CN115794675B/zh active Active
- 2023-06-28 WO PCT/CN2023/102987 patent/WO2024152518A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009054000A (ja) * | 2007-08-28 | 2009-03-12 | Hitachi Ltd | マルチプロセッサシステム及びキャッシュ管理方法 |
WO2013190247A1 (fr) * | 2012-06-22 | 2013-12-27 | Commissariat à l'énergie atomique et aux énergies alternatives | Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN106227676A (zh) * | 2016-09-22 | 2016-12-14 | 大唐微电子技术有限公司 | 一种高速缓存以及从高速缓存中读取数据的方法和装置 |
CN111602377A (zh) * | 2017-12-27 | 2020-08-28 | 华为技术有限公司 | 高速缓存中资源调整方法、数据访问方法及装置 |
CN110018971A (zh) * | 2017-12-29 | 2019-07-16 | 华为技术有限公司 | 缓存替换技术 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024152518A1 (zh) * | 2023-01-19 | 2024-07-25 | 北京象帝先计算技术有限公司 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
WO2024193437A1 (zh) * | 2023-03-21 | 2024-09-26 | 华为技术有限公司 | 缓存器及其控制方法、计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2024152518A1 (zh) | 2024-07-25 |
CN115794675B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365930B2 (en) | Instructions for managing a parallel cache hierarchy | |
CN115794675B (zh) | 写数据方法、装置、图形处理系统、电子组件及电子设备 | |
US9952977B2 (en) | Cache operations and policies for a multi-threaded client | |
CN115809028B (zh) | 一种缓存数据替换方法、装置、图形处理系统及电子设备 | |
JP4756562B2 (ja) | 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置 | |
US6801203B1 (en) | Efficient graphics pipeline with a pixel cache and data pre-fetching | |
CN115794673B (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
CN101310259B (zh) | 用于共享l2映射高速缓存的对称分配的方法和系统 | |
CN101617298B (zh) | 用于dma、任务终止和同步操作的缓存一致保持 | |
US20080028181A1 (en) | Dedicated mechanism for page mapping in a gpu | |
US20090077320A1 (en) | Direct access of cache lock set data without backing memory | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
WO2014025691A1 (en) | Multi-core compute cache coherency with a release consistency memory ordering model | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
US20240289275A1 (en) | Data processing method and apparatus, and cache, processor and electronic device | |
US7831780B2 (en) | Operating system supplemental disk caching system and method | |
CN117609314A (zh) | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 | |
CN117389914A (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
US7685372B1 (en) | Transparent level 2 cache controller | |
CN113204501A (zh) | 高速缓存存储设备及其操作方法、包括高速缓存存储设备的系统 | |
CN115809207B (zh) | Cache中地址标记方法、装置、图形处理系统及电子设备 | |
CN115809208B (zh) | 缓存数据刷新方法、装置、图形处理系统及电子设备 | |
US20220066946A1 (en) | Techniques to improve translation lookaside buffer reach by leveraging idle resources | |
CN115794674B (zh) | 一种缓存数据写回方法、装置、图形处理系统及电子设备 | |
US11023162B2 (en) | Cache memory with transient storage for cache lines |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Writing data methods, devices, graphics processing systems, electronic components, and electronic devices Granted publication date: 20230516 Pledgee: Ji Aiqin Pledgor: Xiangdixian Computing Technology (Chongqing) Co.,Ltd.|Beijing xiangdixian Computing Technology Co.,Ltd. Registration number: Y2024980043989 |