CN111340678A - 一种数据缓存系统、图形处理器及数据缓存方法 - Google Patents
一种数据缓存系统、图形处理器及数据缓存方法 Download PDFInfo
- Publication number
- CN111340678A CN111340678A CN201811556790.6A CN201811556790A CN111340678A CN 111340678 A CN111340678 A CN 111340678A CN 201811556790 A CN201811556790 A CN 201811556790A CN 111340678 A CN111340678 A CN 111340678A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- graphics processor
- gpu
- program
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008569 process Effects 0.000 claims abstract description 33
- 239000011159 matrix material Substances 0.000 description 22
- 238000013500 data storage Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据缓存系统、图形处理器及数据缓存方法,解决现有技术中GPU的数据缓存方式会导致GPU的运行速率下降的问题。本申请中。数据缓存系统位于图形处理器中,数据缓存系统与外部存储器连接,具体的,数据缓存系统可以包括第一存储器和第二存储器。第一存储器可以从外部存储器获取第一数据,并存储第一数据,其中,第一数据为图形处理器在程序执行过程中需多次使用的数据。第二存储器可以从第一存储器获取并存储第一数据;针对在程序执行过程中会多次使用的第一数据能够进行明确的区分,并可以存储在第一存储器中,使得图形处理器在程序执行过程中,只需从内部的数据缓存系统中获取第一数据,不需要多次片外访存,可提高GPU的运行速率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据缓存系统、图形处理器及数据缓存方法。
背景技术
图形处理器(graphics processing unit,GPU)是一种在电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上进行图像运算的微处理器,为了使GPU可以高速获取数据并进行数据处理,在GPU中增加了本地共享内存和L2缓存,本地共享内存和L2缓存作为GPU内部的数据缓存系统,可以从GPU外部的外部存储器获取数据,进行缓存。
GPU在执行程序的过程中,GPU的内核和外部存储器都需要频繁地与L2缓存交换数据,因而,L2缓存的访问速度极大地影响到GPU的性能。
GPU在执行程序的过程中,一些数据需要重复利用,这些数据会先从主存器加载在L2缓存中,之后再转移到本地共享内存;也就是说,L2缓存需要多次的从外部存储器进行数据加载,也就是需要访问GPU外部存储设备(简称片外访存),由于片外访存速度较慢,会直接降低GPU的运行速率。
综上,现有的GPU数据缓存方式会导致GPU的运行速率下降。
发明内容
本申请提供一种数据缓存系统、图形处理器及数据缓存方法,用以解决现有技术中GPU的数据缓存方式会导致GPU的运行速率下降的问题。
第一方面,本申请实施例提供了一种数据缓存系统,所述数据缓存系统位于图形处理器中,用于缓存数据,所述数据缓存系统与所述图形处理器外部的存储器,也就是外部存储器连接,具体的,所述数据缓存系统可以包括第一存储器和第二存储器。
所述第一存储器可以从外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据。
所述第二存储器可以从所述第一存储器获取所述第一数据并存储,所述第二存储器还可以向所述图形处理器中的运算单元提供所述第一数据。
通过上述方法,所述图形处理器中针对在程序执行过程中会多次使用的第一数据能够进行明确的区分,并可以存储在所述第一存储器中,使得所述图形处理器在程序执行过程中,只需要从内部的数据缓存系统中就可以获取所述第一数据,不需要进行多次片外访存,能够有效提高数据缓存效率,进而提高GPU的运行速率。
在一种可能的设计中,所述第一存储器在存储所述第一数据时,所述第一存储器可以存储所述第一数据和所述第一数据对应的指示位,所述第一数据对应的指示位用于指示所述图形处理器在程序执行过程中使用所述第一数据的次数。
通过上述方法,存储所述第一数据时增加对应的指示位,可以明确的指示出所述第一数据能够被使用的次数,方便后续所述第一存储器对所述第一数据进行释放等操作。
在一种可能的设计中,所述第二存储器从所述第一存储器每获取一次所述第一数据后,所述第一存储器可以对所述第一数据对应的指示位进行调整,使所述第一数据对应的指示位指示的次数减少一次。
通过上述方法,可以使得所述第一数据对应的指示位动态的变化,且能够实时的反映出所述第一数据的使用情况。
在一种可能的设计中,若所述第二存储器在多次调用所述第一数据后,使得所述第一数据对应的指示位指示的次数为零,所述第一存储器可以释放所述第一数据。
通过上述方法,所述第一数据对应的指示位指示的次数为零说明所述第一数据之后将不会被使用,通过释放所述第一数据,可以有效地释放出所述第一存储器的存储空间。
在一种可能的设计中,所述第一存储器还可以在所述图形处理器的程序执行完成后,释放所述第一数据。
通过上述方法,在程序执行完成后,释放所述第一数据,也可以及时的清空所述第一存储器中的数据,以便于之后再存储所述图形处理器在执行其他程序时所需要使用的数据,能够提高所述第一存储器的存储效率和所述图像处理器的性能。
在一种可能的设计中,所述第二存储器可以从所述第一存储器获取所述第一数据后,连续多次的分发所述第一数据,也就是说,所述第二存储器可以连续多次的将所述第一数据提供给所述图像处理器中的运算单元。
通过上述方法,所述第二存储器可以集中式的将所述第一数据分发出去,不需要多次的从所述第一存储器获取所述第一数据,再单次的进行数据分发,可以有效提高所述数据缓存系统的数据供应效率。
在一种可能的设计中,所述第一存储器也可以用于存储其他数据,如所述第一存储器可以从主存储器中获取第二数据,并存储所述第二数据,其中,所述第二数据为所述图形处理器执行程序时需要使用的除所述第一数据外的数据,之后,所述第二存储器可以从所述第一存储器获取并存储所述第二数据,还可以分发所述第二数据。
通过上述方法,所述第一存储器除可以明确存储所述图形处理器在程序执行过程需要多次使用的第一数据之外,还可以存储其他数据,进而提高所述第一存储器的利用率。
在另一种可能的设计中,所述数据缓存系统可以单独设置一个存储器,示例性的,所述数据存储系统还可以包括所述第三存储器。所述第三存储器可以从主存储器中获取所述第二数据,并存储所述第二数据;之后,所述第二存储器可以从所述第三存储器获取并存储所述第二数据,还可以分发所述第二数据。
通过上述方法,所述第一存储器和第三存储器可以有针对性的存储不同的数据,可以使得所述数据缓存系统的数据缓存方式更加灵活。
第二方面,本申请实施例提供了一种图形处理器,所述图形处理器包括第一方面任一种可能的设计中所述的数据缓存系统。
第三方面,本申请实施例提供了一种数据缓存方法,应用于图像处理器,包括第一存储器可以从图像处理器的外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据;之后,所述第一存储器可以为第二存储器提供所述第一数据,所述第二存储器可以向所述图形处理器中的运算单元提供所述第一数据。
在一种可能的设计中,所述第一存储器在存储所述第一数据时,可以存储所述第一数据和所述第一数据对应的指示位,所述第一数据对应的指示位用于指示所述图形处理器在程序执行过程中使用所述第一数据的次数。
在一种可能的设计中,所述第一存储器每向所述第二存储器提供一次所述第一数据后,所述第一存储器可调整所述第一数据对应的指示位,使所述第一数据对应的指示位指示的次数减少一次。
在一种可能的设计中,为节约所述第一存储器中的存储空间,所述第一存储器还可以在所述第一数据对应的指示位指示的次数为零的情况下,释放所述第一数据。
在一种可能的设计中,为有效利用所述第一存储器中的存储空间,所述第一存储器还可以在所述图形处理器的程序执行完成后,释放所述第一数据。
在一种可能的设计中,所述第一存储器还可以从主存储器中获取第二数据,并存储所述第二数据,其中,所述第二数据为所述图形处理器执行程序时需要使用的除所述第一数据外的数据;所述第一存储器可以为第二存储器提供所述第二数据。
第四方面,本申请实施例提供了一种数据缓存方法,应用于图像处理器,该方法包括:
第二存储器从第一存储器获取并存储第一数据,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据,所述第二存储器还可以向所述图形处理器中的运算单元提供所述第一数据。
在一种可能的设计中,所述第二存储器可以连续多次的分发所述第一数据,也就是向所述图形处理器中的运算单元提供所述第一数据。
附图说明
图1为现有的一种GPU的结构示意图;
图2为本申请提供的一种分块矩阵相乘的示意图;
图3为本申请提供的一种数据缓存系统的结构示意图;
图4为本申请提供的一种第一存储器的存储结构示意图;
图5为本申请提供的另一种第一存储器的存储结构示意图;
图6为本申请提供的另一种数据缓存系统的结构示意图;
图7为本申请提供的一种图形处理器的结构示意图;
图8为本申请提供的一种数据缓存方法的示意图。
具体实施方式
本申请提供了一种数据缓存系统、图形处理器及数据缓存方法,用以解决现有技术中GPU的数据缓存方式会导致GPU的运行速率下降的问题。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请中所涉及的多个,是指两个或两个以上。在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
如图1所示,为现有的GPU的一种简单结构示意图,所述GPU包括一个或多个流处理器和L2缓存,流处理器中包括本地共享内存和单指令多线程(single instructionmultiplethreads,SIMT)核。
所述SIMT核作为GPU的运算单元,在GPU执行程序的过程中,GPU的运算单元用来对数据进行运算如加减乘除等,是GPU程序执行的主要单元;在具体应用中,GPU的运算单元有很多种,所述SIMT核仅是其中一种,本申请仅是SIMT核为例仅是说明。
所述SIMT核可以同时执行多个线程块,以实现对数据进行运算,一个线程块由多个线程构成,一个线程块中的多个线程执行的运算相同,各个线程块可以从本地共享内存中获取数据,对获取的数据进行运算。
所述L2缓存和所述本地共享内存之间通过互连网络连接,互连网络用于提供所述L2缓存和所述本地共享内存之间进行数据交换的通道,示例性的,互连网络可以是交叉开关网络(crossbar)。所述L2缓存和所述本地共享内存可以看做是所述GPU的数据缓存系统,所述GPU的数据缓存系统可以从外部存储器中加载数据,进行短暂的缓存,由于所述L2缓存的容量有限,所述L2缓存进行数据缓存时,会采用一定的替换策略,对已存储的数据进行替换。
需要说明的是,所述外部存储器是指GPU外部的存储设备,例如动态随机存取存储器(dynamic random access memory,DRAM)。
下面对所述GPU在程序执行过程中获取数据的过程进行说明,在所述GPU执行程序时,若需要对数据进行运算时,所述SIMT核向所述GPU中的数据缓存系统(所述L2缓存和所述本地共享内存)会发起数据请求,用于请求所需的数据,所述数据请求中携带有所述数据在外部存储器中的存储地址;所述GPU中的数据缓存系统接收到所述数据请求后,所述L2缓存和所述本地共享内存分别确定所述所需的数据是否存储在本地。
以所述L2缓存确定所述所需的数据是否存储在本地为例进行说明,由于外部存储器与所述L2缓存中的数据存储地址存在关联(如全相联方式、直接相联方式或组相联映射方式),所述L2缓存基于所述外部存储器与所述L2缓存中的数据存储地址之间的关联关系,将所述数据请求中的数据地址的标识位(tag)与所述L2缓存中的数据存储地址中的标识位进行对比,若所述数据请求中的数据地址的标识位与所述L2缓存中的某一个数据存储地址中的标识位相同,则说明命中,说明所述数据请求所请求的数据已保存在所述L2缓存中,且保存所述L2缓存中标识位相同的数据存储地址处;否则未命中,所述数据请求所请求的数据未保存在所述L2缓存中。
若命中,所述L2缓存可以将所述数据请求所请求的数据通过互连网络发送给所述本地共享内存,由所述本地共享内存提供给所述GPU中的所述SIMT核。
若未命中,所述L2缓存则需要根据所述数据请求中携带的存储地址从所述外部存储器获取数据,也就是说需要进行片外访存,之后,将获取的数据通过互连网络发送给所述本地共享内存,由所述本地共享内存提供给所述GPU中的所述SIMT核。
而在GPU执行程序的过程中,可能需要对一些数据进行重复利用,数据重复利用的次数可能与程序本身相关,下面以分块矩阵相乘的过程为例,对数据的重复利用进行说明:
分块矩阵相乘的过程中,需要先对矩阵按行和列切分成同样大小的子矩阵,所述SIMT核中的每一个线程块可以负责一个子矩阵的计算。如图2所示,分块矩阵A与分块矩阵B相乘获得分块矩阵C,其中分块矩阵C中的子矩阵C0,0、C1,0、C2,0等均可以看做是由一个独立的线程块负责计算并输出的,在子矩阵的计算过程中,各个线程块会使用本地共享内存来缓存分块矩阵A和分块矩阵B的子矩阵,以便之后计算获得分块矩阵的子矩阵。
当计算分块矩阵C中的同一列的子矩阵(C0,0、C1,0、C2,0)时,负责计算各个子矩阵的线程均需要通过L2缓存和本地共享内存中缓存分块矩阵B中的子矩阵B0,0、B1,0,由于L2缓存中的数据会动态的发生替换,并不能保证L2缓存中始终存储有子矩阵B0,0、B1,0,若L2缓存中未存储有子矩阵B0,0、B1,0,则L2缓存会从所述外部存储器中加载子矩阵B0,0、B1,0,由于各个负责计算各个子矩阵的线程的计算子矩阵的过程是独立的,若在各个子矩阵的计算过程中,L2缓存中未存储有子矩阵B0,0、B1,0,L2缓存会多次从所述外部存储器中加载子矩阵B0,0、B1,0,也就是形成了多次的片外访存,而片外访存的速度慢且会增加功耗,这样就会严重影响到GPU的运行速率,降低GPU的性能。
事实上,现有的L2缓存的存储空间有限,且L2缓存并不能明确的确定出在分块矩阵相乘的计算过程中哪些数据是需要多次利用的,且也无法始终存储那些需要多次利用的数据,仅是按照硬件配置的策略进行数据缓存,也就是说整个计算过程中,L2缓存中的数据会进行多次替换,无法固定的保存需要多次利用的数据(简称为数据抖动),如此在整个计算过程中,产生多次片外访存;在上述说明中,仅是以分块矩阵相乘为例,本申请实施例并不限定其他程序执行过程,在其他程序执行过程中,也会存在需要多次利用的数据,同样也会存在多次片外访存的问题。
为了提高GPU执行程序时的运行速率,提高GPU的性能,本申请实施例提供了一种数据缓存系统,在本申请实施例提供的数据缓存系统中,第一存储器可以存储GPU执行程序时需多次使用的数据,也就是第一存储器只需从外部存储器一次获取所述GPU执行程序过程中需多次使用的数据,减少了片外访存的次数,能够有效改善GPU的性能。
如图3所示,为本申请实施例提供的一种数据缓存系统,所述数据缓存系统300可以位于图形处理器中,用于存储所述图形处理器执行程序所需的数据,所述数据缓存系统300与外部存储器之间可以保持连接,具体的,所述数据缓存系统300包括第一存储器301和第二存储器302。
其中,所述第一存储器301用于从外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用数据。所述第二存储器302用于从所述第一存储器301获取所述第一数据,存储所述第一数据,还可以分发所述第一数据。具体地,所述第二存储器302可以从所述第一存储器301中获取所述第一数据,以供所述GPU中的运行单元使用,示例性的,所述GPU中的运行单元可以从所述第二存储器302中读取所述第一数据。
所述第一存储器301在从所述外部存储器中获取所述第一数据时,可以先确定所述外部存储器中存储所述第一数据的存储地址,再根据所述存储地址获取所述第一数据。
作为一种可能的实施方式,所述第一存储器301确定所述外部存储器中存储所述第一数据的存储地址的方式有很多种,例如所述外部存储器中存储所述第一数据的存储地址可以预先设置在所述第一存储器301中,以便所述第一存储器301可以及时根据所述外部存储器中存储所述第一数据的存储地址以获取所述第一数据,也可以是有其他处理器在确定了所述外部存储器中存储所述第一数据的存储地址之后,再告知所述第一存储器301,本申请实施例并不限定。
针对所述第一数据,所述第一数据可以是所述图形处理器在程序执行过程中需要多次使用的数据,数据是否需要被多次使用是与执行的程序有关的,具体的,所述第一数据可以分为两类,一类是任一所述流处理器需要多次使用的数据,由于所述流处理器中会部署多个线程块执行对应的程序,各个线程块在执行程序时需要使用数据,任一所述流处理器需要多次使用的数据也就是任一所述流处理器中的多个线程块需要使用的数据,另一类是流处理器之间关联的数据,也就是需要被不同的流处理器使用的数据。
需要说明的是,在所述图形处理器在程序执行的过程中,对于一些程序来说,可以明确的获知哪些数据是需要多次使用的,而对于一些数据,并不能明确的确定是否会被多次使用,在本申请实施例中所述第一数据是指可以通过一定的方式确定出的一定会被多次使用的数据,对于不能明确的确定是否被多次使用的数据不属于所述第一数据。
本申请实施例中并不限定所述第一数据的数量和大小,所述第一数据的数量和大小与所述图形处理器执行的程序与所述外部存储器存储的数据有关;所述第一存储器301从所述外部存储器中获取所述第一数据时,可以分多次获取,也就是每次只获取部分所述第一数据;也可以一次性获取全部所述第一数据。
在具体实施中,可以基于所述图形处理器执行的程序与所述外部存储器存储的数据进行分析确定所述第一数据,进而确定所述第一数据在所述外部存储器中的存储地址,上述确定所述第一数据在所述外部存储器中的存储地址的操作的可以是其他处理器执行的,也可以是所述图形处理器执行的,本申请并不限定,在确定了所述第一数据在所述外部存储器中的存储地址后,可以告知所述第一存储器301,如通过指令的方式告知所述第一存储器301所述第一数据在所述外部存储器中的存储地址。
所述第一存储器301在存储所述第一数据时,可以预先在所述第一存储器301和所述外部存储器之间建立所述外部存储器的存储地址与所述第一存储器301的缓存地址之间的关联关系,所述关联关系可以是全相联方式,也就是说,所述外部存储器上的任意一块数据可以映射到所述第一存储器301中的任意一块;所述第一存储器301在存储所述第一数据时,除了存储所述第一数据之外,还可以存储所述第一数据在所述外部存储器的存储地址与所述第一数据在所述第一存储器301的缓存地址之间的关联关系,以便在所述图形处理器需要使用所述第一数据时,所述第一存储器301可以基于所述外部存储器的存储地址与所述第一数据在所述第一存储器301的缓存地址之间的关联关系,准确的找到所述第一存储器301中存储的第一数据。
在上述描述中,仅是以所述关联关系是全相联方式为例,本申请并不限定关联方式,也可以采用其他关联方式,如组相联映像关联方式等等。
下面介绍两种所述第一存储器301存储所述第一数据的方式:
第一种、所述第一存储器301容量较大,能够存储全部所述第一数据。
在这种情况下,所述第一存储器301可以一次性或分多次从所述外部存储器获取全部所述第一数据,并将全部所述第一数据存储在所述第一存储器301中。
在所述第一存储器301中可以采用组相联的方式存储所述第一数据,也就是说,所述第一存储器301中以组的格式对所述第一数据进行存储,每组中存储的所述第一数据具有一定的关联关系。示例性的,分组方式可以采用L2缓存中的分组方式,采用8-way的分组方式,也即每个分组中包括8个条目。
如图4所示,为所述第一存储器301在容量较大时,所述第一存储器301的存储架构,其中,所述第一存储器301的存储空间可分为多组,每组中包括多个数据存储条目,每个数据存储条目中包括标识位和数据存储位,所述标识位用于标识所述数据存储位存储的数据,所述数据存储位用于存储所述第一数据。
本申请实施例并不限定所述标识位的设置方式,凡是可以标识所述数据存储位存储的数据的均适用于本申请实施例,所述第一数据在所述外部存储器中的存储地址可以是由块地址和偏置量(offset)构成的,其中块地址指示的是所述第一数据在所述外部存储器中所在块(block)的地址,偏置量用于指示所述第一数据在所述外部存储器的块中的偏移量,可以结合块地址和偏置量确定出所述第一数据在所述外部存储器中的存储位置,具体的,所述块地址又可以分为标签位(tag)和索引位(index);其中,tag和index结合可以确定出所述第一数据在所述外部存储器所在的块。
所述标识位可以是所述第一数据在所述外部存储器中存储地址中的tag,也可以是所述第一数据在所述外部存储器中存储地址中的tag中的部分字段,也可以是从所述第一数据在所述外部存储器中存储地址中的tag和index中选取部分字段作为所述标识位。
当所述第一存储器301接收到所述数据请求后,可以根据所述数据请求中携带的所述第一数据在所述外部存储器中的存储地址很快的确定出所述第一存储器301中相应的标识位,能够方便准确的查找到所述第一数据,可以有效的提高所述图形处理器中数据存取的效率,之后,也可以保证所述图形处理器的运行速率,改善所述图形处理器的性能。例如,所述标识位设置为所述第一数据在所述外部存储器中的存储地址中的tag,当所述第一存储器301接收到所述数据请求后,可以根据所述数据请求中携带的所述第一数据在所述外部存储器中的存储地址的tag,可以很快的确定出所述第一存储器301中与所述tag相同的标识位,进而确定所述第一数据。
第二种、所述第一存储器301容量较小,不足以存储全部所述第一数据。
在这种情况下,所述第一存储器301可以分多次从所述外部存储器获取全部所述第一数据,采用一定的策略对存储在所述第一存储器301中的所述第一数据进行替换。
由于所述第一存储器301的容量有限,所述第一存储器301中在一定时间段内只保存部分所述第一数据,若后续需要再存储剩余的所述第一数据,则可以采用预设的方式释放所述第一存储器301中已存储的所述第一数据,也即是说删除已存储在所述第一存储器301中的所述第一数据,再将剩余的所述第一数据存储在所述第一存储器301中。
需要说明的是,释放所述第一存储器301中已存储的所述第一数据可以是释放全部已存储在所述第一存储器301中的第一数据,也可以有选择的释放部分已存储在所述第一存储器301中的第一数据;相应的,存储剩余的所述第一数据时,在有足够存储空间的情况下,可以存储剩余的全部所述第一数据,也可以有选择的存储剩余的部分所述第一数据。
所述第一存储器301释放已存储的所述第一数据的方式本申请实施例并不限定,例如,所述第一存储器301可以根据已存储的所述第一数据的使用频率释放已存储的所述第一数据,比如,所述第一存储器301可以释放已存储的所述第一数据的使用频率低于阈值的所述第一数据;又例如,所述第一存储器301可以根据已存储的所述第一数据的使用次数释放已存储的所述第一数据,比如,所述第一存储器301可以释放已存储的、使用次数已达到一定阈值的所述第一数据。上述释放已存储的所述第一数据的方式仅是举例说明。
所述第一存储器301在存储部分所述第一数据时,也可以采用组相联的方式,关于组相联的描述可参见第一种方式中的相关描述,此处不再赘述。
如图5所示,为所述第一存储器301在容量较小时,所述第一存储器301的存储架构,其中,所述第一存储器301的存储空间可分为多组,每组中包括多个数据存储条目,每个数据存储条目中包括标识位、指示位以及数据存储位,所述标识位用于标识所述数据存储位存储的数据,所述数据存储位用于存储所述第一数据,所述指示位与存储在所述数据存储位上的第一数据对应,所述第一数据对应的指示位用于指示所述图形处理器执行程序时需使用所述第一数据的次数。
所述标识位的设置方式可参见第一种方式中的相关描述,此处不再赘述。
在设置所述第一数据对应的指示位时,需要先确定所述图形处理器执行程序时需使用所述第一数据的次数,也就是说需要对所述图形处理器执行的程序进行分析,在具体实施中,可以基于所述图形处理器执行的程序与执行所述程序所需要的数据进行分析确定在程序执行过程中,所述图形处理器使用各个所述第一数据的使用次数,上述确定需使用所述第一数据的次数的操作的可以是其他处理器执行的,也可以是所述图形处理器执行的,本申请并不限定,在确定了需使用所述第一数据的次数后,可以告知所述第一存储器301,如通过指令的方式告知所述图形处理器的内核执行程序时需使用所述第一数据的次数。
所述第一存储器301在存储所述第一数据时,同时存储所述第一数据对应的指示位,这样后续可以使得GPU明确地获知所述第一数据的使用次数,便于之后根据所述第一数据对应的指示位对已存储的所述第一数据进行调整,如可以释放使用次数较少的所述第一数据。
需要说明的是,所述第一存储器301在确定了所述图形处理器执行程序时需使用所述第一数据的次数后,可以有选择存储所述第一数据,例如只存储使用次数大于一定阈值的所述第一数据,也可以随机选取所述第一数据进行存储,在存储时同时存储所述第一数据对应的指示位。
所述第一存储器301存储了所述第一数据之后,所述第二存储器302可以从所述第一存储器301获取所述第一数据。所述第二存储器302从所述第一存储器301每获取一次所述第一数据后,所述第一存储器301可以调整所述第一数据对应的指示位,使所述第一数据对应的指示位指示的次数减少一次。
也就是说,所述第一存储器301可以根据所述第一数据的获取次数动态的调整所述第一数据对应的指示位,使所述第一数据对应的指示位可以实时的反映出所述第一数据的使用次数情况。
在所述第一数据对应的指示位指示的次数为零的情况下,说明所述图形处理器在程序执行的过程中已经不再需要所述第一数据,为了节约存储资源,所述第一存储器301可以释放所述第一数据。
作为另一种可能的实施方式,所述第一存储器301也可以在所述图形处理器的程序执行完成后,释放所述第一数据,以确保所述图形处理器的程序可以顺利完成。
所述第二存储器302在获取了所述第一数据后,需要将所述第一数据分发给所述图形处理器中执行程序的运算单元,如所述图形处理器的SIMT核。
需要说明的,所述第二存储器302分发所述第一数据的方式本申请实施例并不限定,所述第二存储器302可以主动的将所述第一数据发送给所述图形处理器中执行程序的运算单元;
所述第二存储器302也可以只是提供所述第一数据,由所述图形处理器中执行程序的运算单元从所述第二存储器302获取所述第一数据,示例性的,所述第二存储器302可以在设定的某个时间段或时间点,只提供所述第一数据,所述图形处理器中执行程序的运算单元,可以只在某个时间段或时间点只从所述第二存储器302获取所述第一数据,在具体实施过程中,可以对需要使用相同的第一数据的线程块进行聚类,聚类后的线程块可以集中的从所述第二存储器302中获取所述第一数据,从所述第二存储器302的角度来说,所述第二存储器302可以连续多次的向聚类的线程块分发所述第一数据。
所述第二存储器302需要将所述第一数据发送给程序执行时需要所述第一数据的线程,由于在所述图形处理器在执行程序的过程中,所述第一数据会被多次使用,也就是说会存在多个线程块需要所述第一数据,所述第二存储器302在获取所述第一数据后,可以连续多次的分发所述第一数据,所述第二存储器302可以同时将所述第一数据提供给需要所述第一数据的各个线程块,也就是说,所述第一数据在分发的过程中,可以集中式的分发,可以在一段时间或某一个时刻,集中的将所述第一数据分发出去,而不需要分散的分发所述第一数据,能有效的提供数据供应效率,进一步的,可以较好的改善所述图形处理器的性能。
在上述说明中,所述第一存储器301可以只用于存储所述第一数据,事实上,所述第一存储器301也可以用于存储所述外部存储器中的其他数据,如所述图形处理器执行程序时需要使用的除所述第一数据之外的第二数据。
示例性的,若所述第一存储器301的存储空间较大,在存储了所有的第一数据后,若仍存在存储空间,可以用于存储所述第二数据,所述第二数据可以所述图形处理器执行程序时需要使用的除所述第一数据外的所有数据,也可以是所述图形处理器执行程序时需要使用的除所述第一数据外的部分数据。相应的,所述第二存储器302可以从所述第一存储器301获取所述第二数据,存储所述第二数据,还可以负责分发所述第二数据给所述图形处理器中的运算单元。
作为一种可能的实施方式,本申请实施例还提供的一种数据缓存系统,如图6所示为本申请实施例提供的另一种数据缓存系统600,其中所述数据缓存系统600包括第一存储器601、第二存储器602和第三存储器603。
关于所述第一存储器601和第二存储器602的描述可参见如图3所示的所述数据缓存系统的所述第一存储器301和第二存储器302,此处不再赘述。
所述数据缓存系统600中还可以设置一个单独的第三存储器603,用于存储所述第二数据。所述第三存储器可以从主存储器中获取所述第二数据,并存储所述第二数据;所述第二存储器602则可以从所述第三存储器603获取所述第二数据,并存储所述第二数据,还可以向所述图形处理器中的运算单元提供所述第二数据。
作为一种可能的实施按时,所述第三存储器可以为L2缓存,所述第二存储器可以为本地共享内存。
所述第一存储器601和所述第三存储器603可以为同级缓存器,均可以从所述外部存储器获取数据,且均可以为第二存储器602提供数据。
本申请实施例还提供了一种图形处理器,其中包括如上述任一实施例提供的数据存储系统。
下面结合具体应用场景,对本申请实施例提供的一种图形处理器进行介绍,如图7所示,为本申请实施例提供的一种图形处理器700,所述图形处理器700中包括所述数据缓存系统710和运算单元720,可选的,所述运算单元720可以是SIMT核。
所述数据缓存系统710包括第一存储器711、第二存储器712和第三存储器713。
所述第一存储器711与所述第二存储器712通过互连网络进行数据交互,所述第三存储器713与所述第二存储器712通过互连网络进行数据交互。
所述第一存储器711和所述第三存储器713可以从外部存储器(也即图形处理器700外部的数据存储设备)获取数据。
所述第一存储器711可以用于从外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用数据。
所述第二存储器712用于从所述第一存储器获取并存储所述第一数据,并为运算单元720提供所述第一数据。
所述第三存储器713可以从主存储器中获取所述图形处理器执行程序时需要使用的除所述第一数据外的第二数据,并存储所述第二数据。
所述第二存储器712还用于从所述第三存储器713获取所述第二数据,并为运算单元720提供所述第二数据。
基于与系统实施例同一发明构思,本申请实施例还提供了一种数据缓存方法,应用于图像处理器中,其中,方法和系统是基于同一构思的,由于方法及系统解决问题的原理相似,因此系统与方法的实施可以相互参见,重复之处不再赘述。
如图8所示,为本申请实施例提供的一种数据缓存方法,该方法包括:
步骤801:第一存储器从外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据。
步骤802:所述第一存储器为第二存储器提供所述第一数据。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据缓存系统,位于图形处理器中,所述数据缓存系统与外部存储器连接,其特征在于,所述数据缓存系统包括第一存储器和第二存储器;
所述第一存储器用于从外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据;
所述第二存储器用于从所述第一存储器获取并存储所述第一数据。
2.如权利要求1所述的数据缓存系统,其特征在于,所述第一存储器在存储所述第一数据时,具体用于:
存储所述第一数据和所述第一数据对应的指示位,所述第一数据对应的指示位用于指示所述图形处理器在程序执行过程中使用所述第一数据的次数。
3.如权利要求2所述的数据缓存系统,其特征在于,所述第二存储器从所述第一存储器每获取一次所述第一数据后,所述第一存储器还用于:调整所述第一数据对应的指示位,使所述第一数据对应的指示位指示的次数减少一次。
4.如权利要求3所述的数据缓存系统,其特征在于,所述第一存储器还用于在所述第一数据对应的指示位指示的次数为零的情况下,释放所述第一数据。
5.如权利要求1~3任一所述的数据缓存系统,其特征在于,所述第一存储器还用于在所述图形处理器的程序执行完成后,释放所述第一数据。
6.如权利要求1所述的数据缓存系统,其特征在于,所述第二存储器还用于连续多次的分发所述第一数据。
7.如权利要求1所述的数据缓存系统,其特征在于,所述第一存储器还用于从主存储器中获取第二数据,并存储所述第二数据,其中,所述第二数据为所述图形处理器执行程序时需要使用的除所述第一数据外的数据;
所述第二存储器还用于从所述第一存储器获取并存储所述第二数据。
8.如权利要求1所述的数据缓存系统,其特征在于,所述数据缓存系统还包括所述第三存储器;
所述第三存储器用于从主存储器中获取第二数据,并存储所述第二数据;
所述第二存储器还用于从所述第三存储器获取并存储所述第二数据。
9.一种图形处理器,其特征在于,包括如权利要求1~8任一所述的数据缓存系统。
10.一种数据缓存方法,应用于图形处理器,其特征在于,该方法包括:
第一存储器从所述图形处理器的外部存储器获取第一数据,并存储所述第一数据,其中,所述第一数据为所述图形处理器在程序执行过程中需多次使用的数据;
所述第一存储器为第二存储器提供所述第一数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811556790.6A CN111340678A (zh) | 2018-12-19 | 2018-12-19 | 一种数据缓存系统、图形处理器及数据缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811556790.6A CN111340678A (zh) | 2018-12-19 | 2018-12-19 | 一种数据缓存系统、图形处理器及数据缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111340678A true CN111340678A (zh) | 2020-06-26 |
Family
ID=71181625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811556790.6A Pending CN111340678A (zh) | 2018-12-19 | 2018-12-19 | 一种数据缓存系统、图形处理器及数据缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111340678A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
US20150286472A1 (en) * | 2014-04-04 | 2015-10-08 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
US20160231933A1 (en) * | 2015-02-06 | 2016-08-11 | Advanced Micro Devices, Inc. | Memory page access detection |
CN108694136A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于超越基于非局部性的指令处理的系统、设备和方法 |
CN109032964A (zh) * | 2018-07-02 | 2018-12-18 | 京东方科技集团股份有限公司 | 缓存替换方法及其装置、异构多核系统 |
-
2018
- 2018-12-19 CN CN201811556790.6A patent/CN111340678A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
US20150286472A1 (en) * | 2014-04-04 | 2015-10-08 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
US20160231933A1 (en) * | 2015-02-06 | 2016-08-11 | Advanced Micro Devices, Inc. | Memory page access detection |
CN108694136A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于超越基于非局部性的指令处理的系统、设备和方法 |
CN109032964A (zh) * | 2018-07-02 | 2018-12-18 | 京东方科技集团股份有限公司 | 缓存替换方法及其装置、异构多核系统 |
Non-Patent Citations (3)
Title |
---|
TAO ZHANG等: "Efficient graph computation on hybrid CPU and GPU systems", 《THE JOURNAL OF SUPERCOMPUTING》 * |
景乃锋: "面向SRAM型FPGA软错误的可靠性评估与容错算法研究", 《中国优秀博硕士学位论文全文数据库(博士) 信息科技辑》 * |
赵伟华等: "《计算机操作系统》", 31 August 2018, 西安:西安电子科技大学出版社 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101361945B1 (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
JP5615361B2 (ja) | スレッドシフト:コアへのスレッド割振り | |
CN103218309B (zh) | 多级指令高速缓存预取的方法、系统与设备 | |
US20110066830A1 (en) | Cache prefill on thread migration | |
US10025504B2 (en) | Information processing method, information processing apparatus and non-transitory computer readable medium | |
US9471510B2 (en) | System and method for cache monitoring in storage systems | |
US20140372810A1 (en) | Apparatus and method for monitoring performance of cores based on multi-core processor | |
US9836396B2 (en) | Method for managing a last level cache and apparatus utilizing the same | |
JP2019096309A (ja) | メンテナンス動作の実行 | |
US9367466B2 (en) | Conditional prefetching | |
EP3662376B1 (en) | Reconfigurable cache architecture and methods for cache coherency | |
US9535845B2 (en) | Cache control device and cache control method | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
JP2020514859A (ja) | 変換索引バッファにおける構成可能なスキューアソシエイティビティ | |
US9740611B2 (en) | Memory management for graphics processing unit workloads | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US20220114097A1 (en) | System performance management using prioritized compute units | |
CN107861819B (zh) | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 | |
CN111340678A (zh) | 一种数据缓存系统、图形处理器及数据缓存方法 | |
US9542318B2 (en) | Temporary cache memory eviction | |
US20180129713A1 (en) | Efficient execution of data stream processing systems on multi-core processors | |
CN114063923A (zh) | 数据读取方法、装置、处理器及电子设备 | |
US8484423B2 (en) | Method and apparatus for controlling cache using transaction flags | |
CN113010173A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200626 |
|
RJ01 | Rejection of invention patent application after publication |