CN115878507B - 系统级芯片的内存访问方法、装置及电子设备 - Google Patents
系统级芯片的内存访问方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115878507B CN115878507B CN202310061168.2A CN202310061168A CN115878507B CN 115878507 B CN115878507 B CN 115878507B CN 202310061168 A CN202310061168 A CN 202310061168A CN 115878507 B CN115878507 B CN 115878507B
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- data
- cache line
- chip
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 277
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000013507 mapping Methods 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 239000002674 ointment Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
-
- 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
一种系统级芯片的内存访问方法、装置及电子设备,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;所述方法包括:获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;将所述目标数据写入片上缓存的缓存行中;在片上缓存中进行遍历,确定待写回内存、对应的内存地址与所述目标地址位于同一内存页的至少一个缓存行;在达到预设写回条件的情况下,将所述至少一个缓存行中的数据和所述目标数据连续写入内存。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种系统级芯片的内存访问方法、装置及电子设备。
背景技术
系统级芯片上往往部署有多个IP模块,各个IP模块通常都有访问片外内存的访问需求。
系统级芯片上的多个模块,会发起较多访问,而不同的访问通常会访问内存的不同位置,其中多个针对内存不同位置的写访问,需要在内存中不断的切换访问地址然后写入数据,这种处理写访问的方式无法充分利用内存的带宽。
发明内容
本公开的目的是提供一种系统级芯片的内存访问方法、装置以及电子设备。
根据本公开的第一个方面,提供一种系统级芯片的内存访问方法,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;所述方法包括:
获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
将所述目标数据写入片上缓存的缓存行中;
在片上缓存中进行遍历,确定待写回内存、对应的内存地址与所述目标地址位于同一内存页的至少一个缓存行;
在达到预设写回条件的情况下,将所述至少一个缓存行中的数据和所述目标数据连续写入内存。
在一种实施方式中,所述目标数据为Cacheable数据,所述将所述目标数据写入片上缓存的缓存行中,包括:
根据预设的映射算法和所述目标地址,确定所述目标数据对应的缓存行,将所述目标数据写入所确定的缓存行。
在一种实施方式中,所述目标数据为non-Cacheable数据,所述将所述目标数据写入片上缓存的缓存行中,包括:
将所述目标数据写入片上缓存中的任一空闲缓存行,或者,若片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将所述目标数据写入至该替换缓存行。
在一种实施方式中,所述将替换缓存行中的数据写回至内存,包括:
查找内存地址与所述替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
在一种实施方式中,所述在片上缓存中进行遍历,确定待写回内存、对应的内存地址与所述目标地址位于同一内存页的至少一个缓存行;包括:
遍历全部缓存行的脏数据标记和有效标记,确定多个待写回内存的缓存行;
根据多个待写回内存的缓存行的Tag标记,确定各个待写回内存的缓存行对应的内存页,查找与所述目标地址的内存页一致的至少一个待写回内存的缓存行。
在一种实施方式中,所述内存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述根据多个待写回内存的缓存行的Tag标记,确定各个待写回内存的缓存行对应的内存页,查找与所述目标地址的内存页一致的至少一个待写回内存的缓存行,包括:
查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行。
在一种实施方式中,所述预设写回条件包括:
需要将片上缓存中的所述目标数据写回至内存、需要刷新片上缓存或需要将片上缓存中的所述目标数据替换为其他数据。
根据本公开的第二个方面,提供一种系统级芯片的内存访问装置,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;所述装置包括:
获取模块,用于获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
写入模块,用于将所述目标数据写入片上缓存的缓存行中;
遍历模块,用于在片上缓存中进行遍历,确定待写回内存、对应的内存地址与所述目标地址位于同一内存页的至少一个缓存行;
所述写入模块,还用于在达到预设写回条件的情况下,将所述至少一个缓存行中的数据和所述目标数据连续写入内存。
在一种实施方式中,所述目标数据为Cacheable数据;
所述写入模块,具体用于根据预设的映射算法和所述目标地址,确定所述目标数据对应的缓存行,将所述目标数据写入所确定的缓存行。
在一种实施方式中,所述目标数据为non-Cacheable数据;
所述写入模块,具体用于将所述目标数据写入片上缓存中的任一空闲缓存行,或者,若片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将所述目标数据写入至该替换缓存行。
在一种实施方式中,所述写入模块,具体用于查找内存地址与所述替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
在一种实施方式中,所述遍历模块,具体用于遍历全部缓存行的脏数据标记和有效标记,确定多个待写回内存的缓存行;
根据多个待写回内存的缓存行的Tag标记,确定各个待写回内存的缓存行对应的内存页,查找与所述目标地址的内存页一致的至少一个待写回内存的缓存行。
在一种实施方式中,所述内存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述遍历模块,具体用于查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行。
在一种实施方式中,所述预设写回条件包括:
需要将片上缓存中的所述目标数据写回至内存、需要刷新片上缓存或需要将片上缓存中的所述目标数据替换为其他数据。
根据本公开的第三个方面,提供一种图形处理系统,包括上述第二方面所述的系统级芯片的内存访问装置。
根据本公开的第四个方面,提供一种电子组件,包括第三方面所述所述的图形处理系统。
根据本公开的第五个方面,提供一种电子设备,包括第四方面所述所述的电子组件。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供的系统级芯片中的结构示意图;
图2为本公开一个实施例提供的内存和缓存直接映射的结构示意图;
图3为本公开一个实施例提供的内存和缓存组相联映射的结构示意图;
图4为本公开一个实施例提供的内存和缓存全相联映射的结构示意图;
图5为本公开一个实施例提供的缓存行地址的结构示意图;
图6为本公开一个实施例提供的缓存中缓存行的结构示意图;
图7为本公开一个实施例提供的一种系统级芯片的内存访问方法的流程示意图;
图8为本公开一个实施例提供的一种系统级芯片的内存访问装置的结构示意图;
图9为本公开一个实施例提供的一种图形处理系统的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
系统级芯片即SOC(System on Chip),也称片上系统,是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上,各个关键部件在本公开中称为IP模块。如图1所示,为本公开提出的一种系统级芯片的结构示意图,多个IP模块可以通过片上网络进行互联,同时该系统级芯片还有片上缓存即图中示出的系统级Cache,多个IP模块可以共享该片上缓存,图中的缓存控制器用于对该缓存进行读写,内存控制器用于对内存进行读写。
由于IP模块访问内存的效率要远低于访问Cache即片上缓存的效率,因此各个IP模块可以将一些复用性较高的数据存储在片上缓存中,以提升访问这类数据的效率,业界将这一类数据称为Cacheable的访问数据。对应的,对于一些复用性不高的数据,各个IP模块通常是通过直接访问内存的方式进行访问,业界将这一类数据称为non-Cacheable的访问数据。
将内存中的Cacheable的访问数据存储到Cache中,需要采用一定的映射算法,映射算法把内存和Cache分割成一定大小的块,这个块在内存中称为数据块data block,需要将内存中的data block映射到Cache中的缓存行即Cacheline中,常见的映射方式包括直接映射、组相联映射以及全相联映射。
直接映射采用取模的方式进行一对一映射,容易出现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个路(way),每个way中包括M组(set)。每一组即每一set中包括N个缓存行。如图3所示,存在两个way,即way0和way1,每一way有8行,对应8组,每组中有2个缓存行,即way0的Cache line0和way1的Cache line0为一组。
这样内存中数据块0、8、16、24…中任意两个数据块可以同时存储在缓存中的两个Cache line0中,进而组相联映射的方式相对于直接映射增加了Cache命中的概率提升了整体的读写效率。
如图4所示,为全相联的示意图,全相联是极端的组相联,即cache只有一个组。每一个数据块都可以存进任何一个缓存行。全相联方式中Cache命中的概率也较高,但是实现较为复杂,工作延时也较高。
如图5所示,在直接映射和组相联的映射方式中,Cache中的地址被划分为3段,包括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中没有命中时,需要将被访问的数据块从内存中读取并写入Cache中以使IP模块可以在Cache中对该数据块进行读写,而当Cache被存满时,需要将Cache中已有的缓存行进行替换,即将Cache中已有的某个缓存行中的数据写至内存,并将内存当前需要被访问的数据块写入该缓存行的存储位置。目前的替换策略包括:随机算法,即从可以替换的缓存行(根据映射算法确定)中,随机确定一个缓存行作为待替换缓存行进行替换;先进先出算法:从可以替换的缓存行中选择最先写入的缓存行作为待替换缓存行进行替换;近期最少使用算法:通过计数器来确定各个可以替换的缓存行未被访问的时间,将未被访问时间最长的缓存行作为待替换缓存行进行替换;最近不常使用算法:通过计数器来记录各个可以替换的缓存行缓存行被访问的次数,将被访问次数最少的缓存行作为待替换缓存行进行替换。
采用上述方式,可以将一些IP模块复用性较高的Cacheable的访问数据存储在Cache,以提升IP模块访问这类数据的效率。
但是,如上文所述,目前的内存通常是DDR SDRAM,对于non-Cacheable写访问,当需要访问DDR SDRAM时,通常是先要定位和启动内存页,进一步在内存页中的相应位置写数据。对于Cacheable写访问,在需要将片上缓存中的Cacheable数据写到内存中时,也需要先要定位和启动内存页,进一步在内存页中的相应位置写数据。
而系统级芯片中存在多个IP模块,也就会产生较多的写访问,既包括Cacheable写访问也包括non-Cacheable写访问,不同的写访问通常会访问内存中的不同位置,因此在针对不同的写访问,向内存中写数据时,需要切换内存页,也就需要反复执行启动内存页的操作,在启动某个内存页后只写回一段数据即只写回一个写访问对应的数据,内存带宽的利用率不高。
例如,IP模块1发送的non-Cacheable写访问,需要将目标数据写入至内存页1中,IP模块2发送的non-Cacheable写访问,需要将目标数据写入至内存页2中,IP模块3发送的non-Cacheable写访问,需要将目标数据写入至内存页3中。针对这样的访问需求,需要先启动内存页1,将IP模块1的数据写入,然后启动内存页2,将IP模块2的目标数据写入,最后启动内存页3,将IP模块3的目标数据写入。可见,每次启动内存页后,只将很少的数据写入内存,无法充分利用内存的带宽,同时,每写入一个数据需要执行一次启动内存页的操作,效率也较低。同理,三个IP模块,如果分别发起三个写入不同内存页的Cacheable写访问,虽然可以先将各个写访问的数据存储在片上缓存中,但是在需要将片上缓存中的数据写到内存中时,针对三笔数据,仍然需要开启三个内存页,并在开启内存页后只写入一笔数据,仍然无法充分利用内存的带宽。
针对上述问题,本公开提出,获取各个IP模块发送的写访问,各个写访问用于将目标数据写入至内存中的目标地址,将各个写访问的目标数据先存储在片上缓存中,然后从缓存中查找与目标地址位于同一内存页的待写回内存的目标缓存行,在一定的时机将目标缓存行中的数据和目标数据一起连续的写入至内存中,这样,可以在启动内存页后,写入更多的数据,提升内存带宽的利用率。
具体的,如图7所示,为本公开提出的一种系统级芯片的内存访问方法,该方法可以应用于缓存控制器,也可以应用于单独设计的系统级芯片的内存访问装置,以下均以缓存控制器为例进行说明,该方法包括:
S701,获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
系统级芯片上存在多个IP模块,各个模块都具有访问内存的需求,即都有发送写访问的需求。各个IP通常会将non-Cacheable写访问的需求发送到内存控制器,以对内存进行访问,因此,本步骤中可以从内存控制器获取各个IP模块发送的non-Cacheable写访问。另外,在本公开中,各个IP模块也可以直接将non-Cacheable写访问发送给缓存控制器,即本步骤中可以是直接从各个IP模块获取non-Cacheable写访问。各个IP模块通常会将Cacheable写访问发送到缓存控制器,因此本步骤中可以是直接从各个IP模块获取Cacheable写访问。
S702,将所述目标数据写入片上缓存的缓存行中;
缓存控制器在获取了写访问后,可以对该写访问进行解析,获取目标数据以及目标地址。
在本公开中提出,不论是Cacheable写访问携带的Cacheable数据,还是non-Cacheable写访问携带的non-Cacheable数据,都会利用片上缓存对该数据进行存储。
针对Cacheable数据,即Cacheable写访问携带的目标数据,可以是根据预设的映射算法和目标地址,确定目标数据对应的缓存行,将目标数据写入所确定的缓存行。如上文介绍的,内存和缓存的映射算法可以包括直接映射算法、组相联映射算法和全相联映射算法,可以根据当前使用的映射算法,和Cacheable写访问携带的目标地址即内存地址,确定该Cacheable数据对应的缓存行。
针对non-Cacheable数据,即non-Cacheable写访问携带的目标数据,可以将该non-Cacheable数据写入片上缓存中的任一空闲缓存行,即可以利用空闲缓存行对non-Cacheable携带的目标数据进行缓存。
另外,如果片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将目标数据写入至该替换缓存行。预设的替换算法可以参照下文,这里先不进行详述。
S703,在片上缓存中进行遍历,确定待写回内存、对应的内存地址与目标地址位于同一内存页的至少一个缓存行;
在将目标数据存储在片上缓存中后,可以对片上缓存进行遍历,可以是先遍历全部缓存行的脏数据标记和有效标记确定待写回到内存的多个缓存行,具体的,可以是确定有效标记和脏数据标记都置位的缓存行为待写回内存的缓存行,即确定当前有效且为脏数据的缓存行为待写回内存的缓存行。
然后,查找各个待写回内存的缓存行的Tag标记来确定各个缓存行对应的内存页,查找与目标地址的内存页一致的至少一个待写回内存的缓存行。
如上所述,如果row地址和bank地址被映射为Tag标记,则直接基于Tag标记就可以确定各个缓存行的内存页,即可以查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行。
如果row地址和bank地址被映射为包含于Tag,则从Tag中可以查找出内存页,即查找出row地址和bank地址。
进而可以将查找到对应的内存地址与目标地址位于同一内存页的缓存行。
S704,在达到预设写回条件的情况下,将确定的至少一个缓存行中的数据和目标数据连续写入内存。
在上述S704中,预设写回条件可以是需要将片上缓存中的所述目标数据写回至内存、需要刷新片上缓存或需要将片上缓存中的所述目标数据替换为其他数据。
以预设写回条件是需要将片上缓存中的目标数据写回至内存为例进行说明,以图3示出的组相联映射方式为例,如果way0的Cacheline0存储的为目标数据,对应的内存页为内存页1,通过遍历发现way0的Cacheline2和way1的Cacheline3对应的内存页也为内存页1,则在需要将way0的Cacheline0中的数据写回到内存时,可以将way0的Cacheline0、way0的Cacheline2和way1的Cacheline3中的数据一起连续写回至内存。具体的,可以是在检测到系统级芯片和内存之间带宽空闲时进行写回。
以预设写回条件是需要刷新片上缓存为例进行说明,仍以以图3示出的组相联映射方式为例,如果当前需要刷新片上缓存,即需要将片上缓存中的待写回内存的缓存行中的数据都写回至内存时,如果way0的Cacheline0存储的为目标数据,对应的内存页为内存页1,通过遍历发现way0的Cacheline2和way1的Cacheline3对应的内存页也为内存页1,则在刷新片上缓存时,可以将way0的Cacheline0、way0的Cacheline2和way1的Cacheline3中的数据连续写回至内存。
再以预设写回条件是需要将片上缓存中的目标数据替换为其他数据为例进行说明,仍以以图3示出的组相联映射方式为例,如果way0的Cacheline0存储的为目标数据,对应的内存页为内存页1,当前片上缓存中的缓存行都被占满,在需要进行替换时,将way0的Cacheline0作为了待替换缓存行。通过遍历发现way0的Cacheline2和way1的Cacheline3对应的内存页也为内存页1,则在将way0的Cacheline0目标数据替换为其他数据时,可以将way0的Cacheline0、way0的Cacheline2和way1的Cacheline3中的数据连续写回至内存,然后将其他数据写入至way0的Cacheline0。
可见,采用上述方式,利用片上缓存对各个IP模块发送的写访问携带的Cacheable数据和non-Cacheable数据都进行缓存,在需要将数据写到内存中时,通过对片上缓存进行遍历,查找与写访问的目标地址位于同一内存页的其他缓存行,将查找到的缓存行中的数据和目标数据连续写入内存,这样,在针对目标数据启动内存的某个内存页后,就可以将Cacheable数据和non-Cacheable数据一起写入内存页,即可以将更多的数据写入至该内存页,提升了内存带宽的利用率,避免了直接向内存写入non-Cacheable数据时,无法充分利用内存带宽问题,同时也避免了将片上缓存中的Cacheable数据写回到内存时,无法充分利用内存带宽的问题。
下面对上述S702中提到的预设的替换算法进行说明:
在一种实施方式中,预设的替换算法可以是随机算法、先进先出算法、近期最少使用算法、最近不常使用算法等算法中的一种。即可以采用任一种算法,从缓存中的全部缓存行中确定替换缓存行,将替换缓存行中的数据写回至内存,并将non-Cacheable携带的目标数据缓存到该替换缓存行中。
考虑到如果有较多的non-Cacheable的数据对Cache进行占用,会抢占Cacheable的数据对Cache的使用,因此,在另一种实施方式中,预设的替换算法,可以是优先对Cache中的non-Cacheable数据进行替换。
一种具体的方式可以是:在将non-Cacheable数据写入到某个缓存行中后,利用预定义标识对该缓存行进行标记,以标识该缓存行存储有non-cacheble写访问对应的目标数据。
这样在需要替换时,可以遍历片上缓存,查找被标记有预定义标识的缓存行为替换缓存行,然后进行替换。
另一种具体的方式可以是:在采用随机算法、先进先出算法、近期最少使用算法、最近不常使用算法等算法时,可以根据使用的算法默认将片上缓存中存储有non-Cacheable数据的缓存行确定为替换缓存行。例如,对于先进先出算法,往往需要根据缓存行被使用的先后顺序生成一个链表,最早被使用的缓存行在链表头,其会被优先作为替换缓存行进行替换,那么在这种算法中,可以将存储有non-Cacheble数据的缓存行默认作为链表头,这样就可以将存储有non-Cacheble数据的缓存行优先进行替换,在其他算法中也类似,本公开进行详述。
上文提到,预设的写回条件可以是需要将片上缓存中的所述目标数据替换为其他数据,因此,如果在上述S702中,对于non-Cacheable访问携带的目标数据,如果片上缓存没有空闲缓存行,则在将替换缓存行中的数据写回至内存时,可以查找内存地址与替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
以图3示出的组相联映射的Cache为例,如果当前利用预设的替换算法确定way0的Cacheline0为替换缓存行,根据其Tag标记确定其对应的内存页为内存页0,并且通过遍历发现片上缓存中还存在way0的Cacheline2和way1的Cacheline4为待写回内存的缓存行,且对应的内存地址的内存页也为内存页0,则可以将way0的Cacheline0、way0的Cacheline2以及way1的Cacheline4中的数据一起连续的写回到内存,这样在启动内存页0后,可以一次性写入更多的数据,而非只写回替换缓存行中的数据,有效提升了内存的带宽利用率。
如图8所示,一种系统级芯片的内存访问装置,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;所述装置包括:
获取模块810,用于获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
写入模块820,用于将所述目标数据写入片上缓存的缓存行中;
遍历模块830,用于在片上缓存中进行遍历,确定待写回内存、对应的内存地址与所述目标地址位于同一内存页的至少一个缓存行;
所述写入模块820,还用于在达到预设写回条件的情况下,将所述至少一个缓存行中的数据和所述目标数据连续写入内存。
在一种实施方式中,所述目标数据为Cacheable数据;
所述写入模块820,具体用于根据预设的映射算法和所述目标地址,确定所述目标数据对应的缓存行,将所述目标数据写入所确定的缓存行。
在一种实施方式中,所述目标数据为non-Cacheable数据;
所述写入模块820,具体用于将所述目标数据写入片上缓存中的任一空闲缓存行,或者,若片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将所述目标数据写入至该替换缓存行。
在一种实施方式中,所述写入模块820,具体用于查找内存地址与所述替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
在一种实施方式中,所述遍历模块830,具体用于遍历全部缓存行的脏数据标记和有效标记,确定多个待写回内存的缓存行;
根据多个待写回内存的缓存行的Tag标记,确定各个待写回内存的缓存行对应的内存页,查找与所述目标地址的内存页一致的至少一个待写回内存的缓存行。
在一种实施方式中,所述内存和缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;
所述遍历模块830,具体用于查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行。
在一种实施方式中,所述预设写回条件包括:
将片上缓存中的所述目标数据写回至内存、刷新片上缓存或将片上缓存中的所述目标数据替换为其他数据。
基于相同的发明构思,本公开还提出一种图形处理系统,如图9所示,其至少包括:
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 (13)
1.一种系统级芯片的内存访问方法,其特征在于,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;内存和片上缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;所述方法包括:
获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
将所述目标数据写入片上缓存的缓存行中;
遍历全部缓存行的脏数据标记和有效标记,确定多个待写回内存的缓存行;根据所述多个待写回内存的缓存行的Tag标记,查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行;
在达到预设写回条件的情况下,将所述至少一个待写回内存的缓存行中的数据和所述目标数据连续写入内存。
2.根据权利要求1所述的方法,其特征在于,所述目标数据为Cacheable数据,所述将所述目标数据写入片上缓存的缓存行中,包括:
根据预设的映射算法和所述目标地址,确定所述目标数据对应的缓存行,将所述目标数据写入所确定的缓存行。
3.根据权利要求1所述的方法,其特征在于,所述目标数据为non-Cacheable数据,所述将所述目标数据写入片上缓存的缓存行中,包括:
将所述目标数据写入片上缓存中的任一空闲缓存行,或者,若片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将所述目标数据写入至该替换缓存行。
4.根据权利要求3所述的方法,其特征在于,所述将替换缓存行中的数据写回至内存,包括:
查找内存地址与所述替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
5.根据权利要求1所述的方法,其特征在于,所述预设写回条件包括:
需要将片上缓存中的所述目标数据写回至内存、需要刷新片上缓存或需要将片上缓存中的所述目标数据替换为其他数据。
6.一种系统级芯片的内存访问装置,其特征在于,所述系统级芯片包括多个IP模块以及片上缓存,所述多个IP模块共享所述片上缓存;内存和片上缓存的映射方式为组相联映射或直接映射,主存地址中的bank地址以及row地址被映射为Tag标记;所述装置包括:
获取模块,用于获取任一IP模块发送的写访问;所述写访问用于将目标数据写入内存的目标地址;
写入模块,用于将所述目标数据写入片上缓存的缓存行中;
遍历模块,用于遍历全部缓存行的脏数据标记和有效标记,确定多个待写回内存的缓存行;根据所述多个待写回内存的缓存行的Tag标记,查找Tag标记与所述目标数据所在缓存行Tag标记相同的至少一个待写回内存的缓存行;
所述写入模块,还用于在达到预设写回条件的情况下,将所述至少一个待写回内存的缓存行中的数据和所述目标数据连续写入内存。
7.根据权利要求6所述的装置,其特征在于,所述目标数据为Cacheable数据;
所述写入模块,具体用于根据预设的映射算法和所述目标地址,确定所述目标数据对应的缓存行,将所述目标数据写入所确定的缓存行。
8.根据权利要求6所述的装置,其特征在于,所述目标数据为non-Cacheable数据;
所述写入模块,具体用于将所述目标数据写入片上缓存中的任一空闲缓存行,或者,若片上缓存没有空闲缓存行,则利用预设的替换算法确定当前片上缓存中的任一缓存行为替换缓存行,将替换缓存行中的数据写回至内存,并将所述目标数据写入至该替换缓存行。
9.根据权利要求8所述的装置,其特征在于,
所述写入模块,具体用于查找内存地址与所述替换缓存行对应的内存地址,位于同一内存页的其他待写回内存的缓存行;将替换缓存行和所确定的其他待写回内存的缓存行中的数据连续写回至内存。
10.根据权利要求8所述的装置,其特征在于,所述预设写回条件包括:
需要将片上缓存中的所述目标数据写回至内存、需要刷新片上缓存或需要将片上缓存中的所述目标数据替换为其他数据。
11.一种图形处理系统,其特征在于,包括上述权利要求6-10任一项所述的系统级芯片的内存访问装置。
12.一种电子组件,其特征在于,包括权利要求11所述的图形处理系统。
13.一种电子设备,其特征在于,包括权利要求12所述的电子组件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310061168.2A CN115878507B (zh) | 2023-01-19 | 2023-01-19 | 系统级芯片的内存访问方法、装置及电子设备 |
PCT/CN2023/102983 WO2024152517A1 (zh) | 2023-01-19 | 2023-06-28 | 系统级芯片的内存访问方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310061168.2A CN115878507B (zh) | 2023-01-19 | 2023-01-19 | 系统级芯片的内存访问方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878507A CN115878507A (zh) | 2023-03-31 |
CN115878507B true CN115878507B (zh) | 2023-07-21 |
Family
ID=85758687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310061168.2A Active CN115878507B (zh) | 2023-01-19 | 2023-01-19 | 系统级芯片的内存访问方法、装置及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115878507B (zh) |
WO (1) | WO2024152517A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878507B (zh) * | 2023-01-19 | 2023-07-21 | 北京象帝先计算技术有限公司 | 系统级芯片的内存访问方法、装置及电子设备 |
CN117608498B (zh) * | 2024-01-22 | 2024-10-18 | 北京象帝先计算技术有限公司 | 一种dram的访问处理方法、缓存控制模块及dram控制器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694639B (zh) * | 2009-10-15 | 2011-06-01 | 清华大学 | 一种计算机数据的缓存方法 |
Family Cites Families (8)
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 |
CN105095116B (zh) * | 2014-05-19 | 2017-12-12 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
WO2020199061A1 (zh) * | 2019-03-30 | 2020-10-08 | 华为技术有限公司 | 一种处理方法、装置及相关设备 |
CN110275841B (zh) * | 2019-06-20 | 2020-09-04 | 上海燧原智能科技有限公司 | 访问请求处理方法、装置、计算机设备和存储介质 |
CN113342265B (zh) * | 2021-05-11 | 2023-11-24 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
US20220414020A1 (en) * | 2022-04-18 | 2022-12-29 | Intel Corporation | Software interface to xpu address translation cache |
CN115481054A (zh) * | 2022-08-08 | 2022-12-16 | Oppo广东移动通信有限公司 | 数据处理方法、装置及系统、系统级soc芯片及计算机设备 |
CN115878507B (zh) * | 2023-01-19 | 2023-07-21 | 北京象帝先计算技术有限公司 | 系统级芯片的内存访问方法、装置及电子设备 |
-
2023
- 2023-01-19 CN CN202310061168.2A patent/CN115878507B/zh active Active
- 2023-06-28 WO PCT/CN2023/102983 patent/WO2024152517A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694639B (zh) * | 2009-10-15 | 2011-06-01 | 清华大学 | 一种计算机数据的缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2024152517A1 (zh) | 2024-07-25 |
CN115878507A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115794673B (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
CN115878507B (zh) | 系统级芯片的内存访问方法、装置及电子设备 | |
CN115809028B (zh) | 一种缓存数据替换方法、装置、图形处理系统及电子设备 | |
KR101001100B1 (ko) | Gpu에서의 페이지 매핑을 위한 전용 메커니즘 | |
CN115794675B (zh) | 写数据方法、装置、图形处理系统、电子组件及电子设备 | |
US20120297139A1 (en) | Memory management unit, apparatuses including the same, and method of operating the same | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
US8055851B2 (en) | Line swapping scheme to reduce back invalidations in a snoop filter | |
US20090077320A1 (en) | Direct access of cache lock set data without backing memory | |
WO2018034875A1 (en) | Method and apparatus for compressing addresses | |
US7948498B1 (en) | Efficient texture state cache | |
US20140040541A1 (en) | Method of managing dynamic memory reallocation and device performing the method | |
US20240289275A1 (en) | Data processing method and apparatus, and cache, processor and electronic device | |
US7809904B1 (en) | Page preloading using page characterization data | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
US9196014B2 (en) | Buffer clearing apparatus and method for computer graphics | |
US20070233965A1 (en) | Way hint line replacement algorithm for a snoop filter | |
CN117609314A (zh) | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN115809208B (zh) | 缓存数据刷新方法、装置、图形处理系统及电子设备 | |
US10418002B2 (en) | Merged access units in frame buffer compression | |
CN115794674B (zh) | 一种缓存数据写回方法、装置、图形处理系统及电子设备 | |
CN115809207B (zh) | Cache中地址标记方法、装置、图形处理系统及电子设备 | |
CN111966608A (zh) | 一种外存储器的直接内存储器访问方法和装置 | |
CN118626404A (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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Memory access method, device, and electronic equipment for system level chips Granted publication date: 20230721 Pledgee: Ji Aiqin Pledgor: Xiangdixian Computing Technology (Chongqing) Co.,Ltd.|Beijing xiangdixian Computing Technology Co.,Ltd. Registration number: Y2024980043989 |