CN114816734A - 一种基于访存特征的Cache旁路系统及其数据存储方法 - Google Patents

一种基于访存特征的Cache旁路系统及其数据存储方法 Download PDF

Info

Publication number
CN114816734A
CN114816734A CN202210313311.8A CN202210313311A CN114816734A CN 114816734 A CN114816734 A CN 114816734A CN 202210313311 A CN202210313311 A CN 202210313311A CN 114816734 A CN114816734 A CN 114816734A
Authority
CN
China
Prior art keywords
module
load instruction
memory access
cache
sampling
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
Application number
CN202210313311.8A
Other languages
English (en)
Other versions
CN114816734B (zh
Inventor
贾世伟
张玉明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN202210313311.8A priority Critical patent/CN114816734B/zh
Publication of CN114816734A publication Critical patent/CN114816734A/zh
Application granted granted Critical
Publication of CN114816734B publication Critical patent/CN114816734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种基于访存特征的Cache旁路系统及其数据存储方法,包括指令加载模块发送Load指令;访存特征记录模块利用访存特征表记录Load指令;入口判断模块判断访存特征表是否存在Load指令对应的PC值,若存在,Load指令传输至访存旁路判定模块,若不存在,数据从全局存储模块写回Cache缓存模块;访存旁路判定模块判断访存特征表中与Load指令对应的访存旁路标识是否有效,若有效,数据从全局存储模块写回Cache缓存模块,若无效,数据直接写回寄存器;Cache缓存模块将Load指令传输至访存特征更新模块;访存特征更新模块根据Load指令更新访存特征表中访存旁路标识。本发明提高了GPU的性能。

Description

一种基于访存特征的Cache旁路系统及其数据存储方法
技术领域
本发明属于GPU体系结构技术领域,具体涉及一种基于访存特征的Cache旁路系统及其数据存储方法。
背景技术
图形处理器(Graphic Processing Unit,简称GPU)的访存性能对整个程序的执行性能有着至关重要的影响。如何提高GPU的访存性能是研究过程中不可忽视的问题。
传统的GPU设计思路为所有访存指令产生的访存请求都需要先访问Cache(缓存):如果访存请求在Cache中命中,即Cache中已存在需要被请求的数据,则数据可以及时的返回到寄存器中,以便于后续的指令执行,这个过程需要数十个周期;如果访存请求未命中Cache,则请求需要先发送到互联网络中,接着通过互联网络发送给全局存储,再在全局存储的对应地址处取回数据并通过互联网络返回到Cache中,在Cache中找到可以替换的Cache块完成数据替换,最后将数据返回到寄存器中,这个过程需要数百个周期,即数百个周期内后续的指令都被阻塞,无法发射和执行直到数据返回。由此可见,请求在Cache中命中的可能性越大,则性能就越好。传统的GPU设计中所有的请求都会访问Cache,无论其请求的数据是否有可能在后续被命中,有多大的可能被命中(即数据局域性大小),其都会请求Cache并将数据保存其中。
但是,由于Cache容量有限,因此会造成Cache竞争,即Cache中有局域性的数据还未被后续的请求命中就被替换出Cache,后续的请求本可能在Cache中命中,但却不得不重新访问全局存储以获取数据,导致了数据局域性的损失,且有部分Cache空间被完全无局域性的数据占据,也损害了Cache的性能,进而损伤了GPU程序的执行性能。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种基于访存特征的Cache旁路系统及其数据存储方法。本发明要解决的技术问题通过以下技术方案实现:
第一方面、本发明实施例提供了一种基于访存特征的Cache旁路系统,包括指令加载模块、访存特征记录模块、入口判定模块、访存旁路判定模块、访存特征更新模块、Cache缓存模块和全局存储模块,其中,
所述指令加载模块,用于加载Load指令;其中,所述Load指令包括PC值;
所述访存特征记录模块,用于利用访存特征表记录每条Load指令对应的访存特征;其中,所述访存特征包括PC值和访存旁路标识;
所述入口判断模块,连接所述指令加载模块、所述访存特征记录模块,用于判断所述访存特征表中是否存在所述Load指令对应的PC值,若存在,则将所述Load指令传输至所述访存旁路判定模块,若不存在,则将所述Load指令传输至所述Cache缓存模块,并采用将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块进行存储的存储方式;
所述访存旁路判定模块,连接所述入口判断模块、所述访存特征记录模块、所述Cache缓存模块和所述全局存储模块,用于判断所述访存特征表中与所述Load指令对应的访存旁路标识是否有效,若有效,则将所述Load指令传输至所述Cache缓存模块,并采用将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块进行存储的存储方式,若无效,则将所述Load指令直接传输至所述全局存储模块,并采用将所述Load指令对应的数据直接写回到寄存器以实现将所述Cache缓存模块旁路的存储方式;
所述Cache缓存模块,连接所述入口判断模块和所述访存旁路判定模块,用于将所述Load指令传输至所述访存特征更新模块;
所述访存特征更新模块,连接所述访存特征记录模块和所述Cache缓存模块,用于根据所述Load指令更新所述访存特征表中的访存旁路标识。
在本发明的一个实施例中,所述Load指令还包括请求命中数、请求缺失数和线程束warp ID;所述访存特征还包括请求命中与缺失统计量、采样线程块warp统计量和入口采样状态标识和入口状态标识。
在本发明的一个实施例中,所述访存特征更新模块,包括入口采样状态判断单元、请求命中与缺失统计单元、采样线程块判断单元、采样线程块warp统计单元、缓存使用与采样状态更新单元,其中,
所述入口采样状态判断单元,连接所述入口判断模块、所述Cache缓存模块和所述访存特征记录模块,用于判断所述入口采样状态标识是否有效,若有效,则等待下一条Load指令,若无效,则将所述Load指令输入至所述请求命中与缺失统计单元;
所述请求命中与缺失统计单元,连接所述入口采样状态判断单元和所述访存特征记录模块,用于根据所述Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量,并将所述Load指令输入至所述采样线程块判断单元;
所述采样线程块判断单元,连接所述请求命中与缺失统计单元,用于判断所述Load指令中线程束warp ID是否属于采样线程块,若属于,则将所述Load指令输入至所述采样线程块warp统计单元,若不属于,则等待下一条Load指令;
所述采样线程块warp统计单元,连接所述采样线程块判断单元和所述访存特征记录模块,用于统计采样线程块warp统计量,并判断所述采样线程块warp统计量和采样线程块宽度是否相等,若不相等,则等待下一条Load指令,若相等,则将所述Load指令输入至所述缓存使用与采样状态更新单元;
所述缓存使用与采样状态更新单元,连接所述请求命中与缺失统计单元、所述访存旁路判定模块和所述访存特征记录模块,用于更新所述入口采样状态标识为有效,并比较所述请求命中与缺失数统计量与预设的统计阈值,若所述请求命中与缺失数统计量大于或等于所述统计阈值,则更新所述访存旁路标识为有效,否则,更新所述访存旁路标识为无效。
在本发明的一个实施例中,所述访存特征更新模块还包括采样线程块选择单元,连接所述采样线程块判定单元,用于预先从系统的所有线程块中选择任意一线程块作为采样线程块。
在本发明的一个实施例中,所述访存特征更新模块还包括采样线程参数配置单元,连接采样线程块选择模块,用于统计选择的所述采样线程块的线程束warp数量,并将该统计结果作为所述采样线程块宽度。
第二方面、本发明实施例提供了一种基于访存特征的Cache旁路系统的数据存储方法,包括:
加载Load指令;其中,所述Load指令包括PC值;
若存在,则判断所述访存特征表中与所述Load指令对应的访存旁路标识是否有效,若有效,则将所述Load指令对应的数据从全局存储模块写回到Cache缓存模块,根据所述Load指令更新所述访存特征表中的访存旁路标识,若无效,则将所述Load指令对应的数据从所述全局存储模块直接写回到寄存器;
若不存在,则将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块,并根据所述Load指令更新所述访存特征表中的访存旁路标识;
其中,所述访存特征表用于记录每条Load指令对应的访存特征,所述访存特征包括PC值和访存旁路标识。
在本发明的一个实施例中,所述Load指令还包括请求命中数、请求缺失数和线程束warp ID;所述访存特征还包括请求命中与缺失统计量、采样线程块warp统计量和入口采样状态标识和入口状态标识。
在本发明的一个实施例中,所述根据所述Load指令更新所述访存特征表,包括:
判断所述访存特征表中入口采样状态标识是否有效:
若有效,则等待下一条Load指令;
若无效,则根据所述Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量,判断所述Load指令中线程束warp ID是否属于采样线程块,包括:
若属于,统计采样线程块warp统计量,并判断所述采样线程块warp统计量和采样线程块宽度是否相等,包括:
若相等:更新所述入口采样状态标识为有效;并比较所述请求命中与缺失数统计量与预设的统计阈值,若所述请求命中与缺失数统计量大于或等于所述统计阈值,则更新所述访存旁路标识为有效,否则,更新所述访存旁路标识为无效;
若不相等,则等待下一条Load指令;
若不属于,则等待下一条Load指令。
在本发明的一个实施例中,还包括:预先从系统的所有线程块中选择任意一线程块作为采样线程块。
在本发明的一个实施例中,还包括:统计选择的所述采样线程块的线程束warp数量,并将该统计结果作为所述采样线程块宽度。
本发明的有益效果:
本发明提出的基于访存特征的Cache旁路系统,是一种基于访存特征的Cache旁路新策略,具体地:通过访存旁路判定模块实时判断访存特征表中与Load指令对应的访存旁路标识是否有效,根据该判断结果来选择是采用将Load指令传输至Cache缓存模块,并将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式,还是采用将Load指令传输至全局存储模块,并将Load指令对应的数据直接写回到寄存器以实现将Cache缓存模块旁路的存储方式,这样存储方式的选择可以保证将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了GPU程序的执行性能,其中,访存特征更新模块根据Load指令更新访存特征表中访存旁路标识,并记录于访存特征记录模块,以指导每条Load指令存储方式的选择。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的一种基于访存特征的Cache旁路系统的结构示意图;
图2是本发明实施例提供的基于访存特征的Cache旁路系统中访存特征更新模块的结构示意图;
图3是本发明实施例提供的基于访存特征的Cache旁路系统中另一种访存特征更新模块的结构示意图;
图4是本发明实施例提供的一种基于访存特征的Cache旁路系统的数据存储方法的流程示意图;
图5是本发明实施例提供的根据Load指令更新访存特征表的流程示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
实施例一
为了提高GPU程序的执行性能,请参见图1,本发明实施例提出一种基于访存特征的Cache旁路系统,包括指令加载模块、访存特征记录模块、入口判定模块、访存旁路判定模块、访存特征更新模块、Cache缓存模块和全局存储模块,其中,
指令加载模块,用于发送Load指令;其中,Load指令包括PC值;
访存特征记录模块,用于利用一张访存特征表记录每条Load指令对应的访存特征;其中,访存特征包括PC值和访存旁路标识m_use;
入口判断模块,连接指令加载模块和访存特征记录模块,用于判断访存特征表中是否存在Load指令对应的PC值,若存在,则将Load指令传输至访存旁路判定模块,若不存在,则将Load指令传输至Cache缓存模块,并采用将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式;
访存旁路判定模块,连接入口判断模块、访存特征记录模块、Cache缓存模块和全局存储模块,用于判断访存特征表中与Load指令对应的访存旁路标识m_use是否有效,若有效,则将Load指令传输至Cache缓存模块,并采用将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式,若无效,则将Load指令传输至全局存储模块,并采用将Load指令对应的数据直接写回到寄存器以实现将Cache缓存模块旁路的存储方式;
Cache缓存模块,连接入口判断模块和访存旁路判定模块,用于将Load指令传输至访存特征更新模块;
访存特征更新模块,连接访存特征记录模块和Cache缓存模块,用于根据Load指令更新访存特征表中的访存旁路标识m_use。
其中,Load指令还包括请求命中数、请求缺失数和线程束warp ID;访存特征还包括请求命中与缺失统计量m_count、采样线程块warp统计量m_times和入口采样状态标识m_finish和入口状态标识m_valid。
经发明人分析,现有采用传统GPU设计思路,请求在Cache中命中的可能性越大,则性能就越好,即Cache性能为请求在Cache中命中的概率,很显然Cache命中率严重影响了程序在GPU上的执行性能。由于芯片面积,功耗的限制,Cache的容量无法设计的足够大,因此会造成Cache竞争,即Cache中有局域性的数据还未被后续的请求命中就被替换出Cache,后续的请求本可能在Cache中命中,但却不得不重新访问全局存储以获取数据,导致了数据局域性的损失,且有部分Cache空间被完全无局域性的数据占据,也损害了Cache的性能,损伤了GPU程序的执行性能。现有公开研究还未提出可行的系统设计,以实现Cache与全局存储之间合理选择的存储方式。
基于上述分析,本发明实施例提出了基于访存特征的Cache旁路系统设计的思想,在程序执行过程中动态识别出不具有或仅具有少量局域性的请求,然后旁路掉Cache,即其请求的数据不会被写回到Cache中,这样将Cache的空间留给具有较高局域性的数据(被命中的数据),由此可以提高Cache的命中率,降低全局存储访问的次数,从而减少指令的阻塞周期,提高程序在GPU的执行性能。具体地:
本发明实施例在访存特征记录模块中预先设计了一张如表1所示的访存特征表,根据指令加载模块加载的Load指令更新访存特征表。初始状态访存特征表为一空表,入口判断模块判断访存特征表中是否存在Load指令对应的PC值,即访存特征表中是否已更新了该PC值对应的访存特征,若访存特征表中存在Load指令对应的PC值,表明访存特征表中已经更新有该PC值对应的访存特征表,则访存旁路判定模块中判断访存特征表中与Load指令对应的访存旁路标识m_use是否有效,若有效,则将Load指令传输至Cache缓存模块,并采用将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式,表明此时可以将数据存储在Cache缓存模块中,同时,可以将数据从Cache缓存模块再写回到寄存器,若无效,则将Load指令传输至全局存储模块,并采用将Load指令对应的数据从全局存储模块直接写回到寄存器以实现将Cache缓存模块旁路的存储方式,表明此时可以直接将存储在全局存储模块的数据写回到寄存器,可以看出,根据访存特征表中与Load指令对应的访存旁路标识m_use的判断,可以实现Cache缓存模块的旁路与否。
若访存特征表中不存在Load指令对应的PC值,即访存特征表中并未更新这样的访存特征,则在访存特征更新模块,根据Load指令初始化如图1所示的访存特征表。其中,PC值为每一条Load指令对应的PC值;m_count为根据Load指令中的请求命中数、请求缺失数计算得到的请求命中与缺失统计量;m_times为根据Load指令中的线程束warp ID统计得到线程束warp统计量;m_use为访存旁路标识,用于判断是否执行Cache缓存模块的旁路;m_finish为入口采样状态标识,用于判断入口是否完成采样;m_valid为入口状态标识,用于判断入口是否启用,初始态为无效,在更新该PC值对应的访存特征时;m_valid同时置为有效,除非从访存特征表中删除该该PC值对应的访存特征,否则,入口启用后m_valid后续一直为有效。
表1访存特征表示例
PC值 m_count m_times m_use m_finish m_valid
PC1 20 4 0 0 1
PC1 10 3 1 1 1
PC2 30 1 0 1 1
PC3 5 0 0 0 1
……
其中,“0”表示无效,“1”表示有效。表1中数据只是示例性展示每一条Load指令在访存特征表的存储情况。可以看出,实时根据访存特征表中访存旁路标识m_use的存储情况,以实现Cache缓存模块的旁路与否。
对于访存特征更新模块具体如何更新访存特征表,本发明实施例提供了一种可选方案,请参见图2,包括入口采样状态判断单元、请求命中与缺失统计单元、采样线程块判断单元、采样线程块warp统计单元、缓存使用与采样状态更新单元,其中,
入口采样状态判断单元,连接入口判断模块、Cache缓存模块和访存特征记录模块,用于判断入口采样状态标识m_finish是否有效,若有效,则等待下一条Load指令,若无效,则将Load指令输入至请求命中与缺失统计单元;
请求命中与缺失统计单元,连接入口采样状态判断单元和访存特征记录模块,用于根据Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量m_count,并将Load指令输入至采样线程块判断单元;
采样线程块判断单元,连接请求命中与缺失统计单元,用于判断Load指令中线程束warp ID是否属于采样线程块,若属于,则将Load指令输入至采样线程块warp统计单元,若不属于,则等待下一条Load指令;
采样线程块warp统计单元,连接采样线程块判断单元和访存特征记录模块,用于统计采样线程块warp统计量m_times,并判断采样线程块warp统计量m_times和采样线程块宽度是否相等,若不相等,则等待下一条Load指令,若相等,则将Load指令输入至缓存使用与采样状态更新单元;
缓存使用与采样状态更新单元,连接请求命中与缺失统计单元、访存旁路判定模块和访存特征记录模块,用于更新入口采样状态标识m_finish为有效,并比较请求命中与缺失数统计量与预设的统计阈值,若请求命中与缺失数统计量大于或等于统计阈值,则更新访存旁路标识m_use为有效,否则,更新访存旁路标识m_use为无效。
通过上述各单元,可以实现访存特征表中每个访存特征的更新,具体地:
本发明实施例在入口采样状态判断单元首先从访存特征记录模块中查找与Load指令中PC值对应的访存特征表,判断该访存特征表中的入口采样状态标识m_finish是否有效,若有效,此时该入口采样完成,则需要等待下一条Load指令,若无效,则在请求命中与缺失统计单元中根据Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量m_count,具体计算方式为:将Load指令PC值对应的访存特征表中m_count与Load指令中的请求命中数对应的数值相加,并减去Load指令中的请求缺失数对应的数值,以更新Load指令PC值对应的访存特征表中m_count的值;
接着,在采样线程块判断单元中,判断Load指令中线程束warp ID是否属于采样线程块,具体判断为:假如该采样线程块包括warp0、warp1、warp2和warp3四个线程束warp,若Load指令中线程束warp ID为warp0,表明该Load指令传入的warp属于采样线程块,Load指令中线程束warp ID为warp4,表明该Load指令传入的warp不属于采样线程块。对于不属于采样线程块的Load指令,不作处理,继续等待下一条Load指令,对于属于采样线程块的Load指令,则在采样线程块warp统计单元统计采样线程块warp统计量m_times,具体统计方式为:采样线程块warp统计量m_times的值加1,即更新Load指令PC值对应的访存特征表中m_times的值加1,并判断采样线程块warp统计量m_times和采样线程块宽度是否相等,比如假设采样线程块包括四个线程束warp,m_times在Load指令传入前,访存特征表中m_times记录为3,若此时传入的Load指令中线程束warp ID属于采样线程块,则采样线程块warp统计量m_times的值加1变为4,而此时传入的Load指令中线程束warp ID不属于采样线程块,则采样线程块warp统计量m_times的值保持不变为3,比较采样线程块宽度与采样线程块warp统计量m_times是否相等,若不相等,则继续等待下一条Load指令,若相等,则在缓存使用与采样状态更新单元中,对访存特征表中的入口采样状态标识m_finish和访存旁路标识m_use进行更新,具体地:
更新入口采样状态标识m_finish为有效,表明此时该入口完成采样;并比较请求命中与缺失数统计量m_count与预设的统计阈值,若请求命中与缺失数统计量m_count大于或等于统计阈值,则更新访存旁路标识m_use为有效,表明此时Load指令请求的数据具有一定的局域性,其请求的数据可以被保存到Cache缓存模块中,否则,更新访存旁路标识m_use为无效,表明此时Load指令请求的数据不值得被保存到Cache缓存模块中,判定为旁路。其中,预设的统计阈值可以根据实际需要进行设置。
可以看出,本发明实施例是一种动态识别的方法,当一个采样线程块内的所有线程束warp全部执行完一条访存Load指令时,根据此Load指令访问缓存Cache模块时的总请求命中数与请求缺失数来判定后续其余线程束warp在执行此Load指令时是否需要使用缓存Cache模块。通过Load指令对应的总请求命中数和请求缺失数更新请求命中与缺失数统计量m_count,通过该请求命中与缺失数统计量m_count来判断该Load指令请求的数据值不值得被保存到缓存Cache模块中,若该请求命中与缺失数统计量m_count满足条件时,则认为此Load指令请求的数据具有一定的局域性,其请求的数据可以被保存到缓存Cache模块中,若该请求命中与缺失数统计量m_count不满足条件时,则认为该Load指令请求的数据不值得被保存到缓存Cache模块中,因此判定为旁路。通过上述设计,可以将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了Cache的命中率,进而提高了程序的执行性能。
请参见图3,本发明实施例对于访存特征更新模块中采样线程块的选择提供了一种可选方案,在访存特征更新模块中设计一采样线程块选择单元,连接采样线程块判定单元,用于预先从系统的所有线程块中选择任意一线程块作为采样线程块。比如,系统中包括线程块0、线程块1、线程块2、……,线程块N,N为整数,通常由于系统中可能均设计有线程块0,为了适应系统的普适性,可以直接选择线程块0作为采样线程块,也可以实时根据实际系统情况选择线程块0~线程块N中任意一线程块作为采样线程块。
请再参见图3,本发明实施例对于访存特征更新模块中采样线程块宽度的设定提供了一种可选方案,在访存特征更新模块中设计一采样线程参数配置单元,连接采样线程块选择模块,用于统计选择的采样线程块的线程束warp数量,并将该统计结果作为采样线程块宽度。比如选择的采样线程块包括warp0、warp1、warp2和warp3四个线程束warp,则统计该采样线程块的线程束warp数量为4,即采样线程块宽度为4,用于采样线程块warp统计单元中。
为了验证本发明实施例提供的基于访存特征的Cache旁路系统的有效性,通过以下实验进行说明。
1、实验条件
本发明实施例选用当前学术界公认的GPU架构研究平台——GPGPU-sim模拟器的最新版本(3.2.2)来实现并进行了功性能验证。该平台支持NVIDIA CUDA编程框架,其基础架构参考GTX480 GPU,包含15个流多处理器(Stream Multiprocessor,简称SM),每个SM最大包含1536个线程,每32个线程定义为一个warp,基础warp调度算法为罗宾环调度算法,L1Data cache为16KB\32组\8路,每路数据大小为64Byte。
且本发明实施例选用来自polybench测试集的标准二维、三维卷积作为测试程序,比较了在基础配置的GTX480 GPU架构下与经过本发明优化后的架构下的程序执行性能。其中,基础配置的GPU程序执行为所有访存指令产生的访存请求都需要先访问Cache的方式。
通过两个指标因子:每周期执行指令数(Instruction per cycle,简称IPC)与Cache缺失率来实现性能的评估,并将优化后的性能面向基础架构的性能进行了归一化处理,即本发明的评估结果/基础配置的评估结果作为归一化结果,具体结果如表2和表3所示,其中,表2为标准二维卷积作为测试程序时的指标评估结果,表3为标准三维卷积作为测试程序时的指标评估结果。
表2标准二维卷积作为测试程序时的指标评估结果
Cache缺失率 IPC
基础配置 0.3589 430.4651
本发明 0.3473 440.1754
归一化 0.9676 1.023
表3标准三维卷积作为测试程序时的指标评估结果
Cache缺失率 IPC
基础配置 0.7712 205.3899
本发明 0.6988 236.1342
归一化 0.9061 1.1492
由表2和表3可以看出,本发明相较于基础架构,在标准二维卷积与标准三维卷积的执行下:Cache缺失率方面分别下降了3.24%与9.39%,证明了经过本发明优化设计,Cache的数据局域性的开发进一步上升;而用来直接评估设计系统性能的IPC指标分别提升了2.3%与14.92%,进一步证明了本发明优化设计的有效性。
本发明实施例提供的基于访存特征的Cache旁路系统,是一种基于访存特征的Cache旁路新策略,具体地:通过访存旁路判定模块实时判断访存特征表中与Load指令对应的访存旁路标识m_use是否有效,根据该判断结果来选择是采用将Load指令传输至Cache缓存模块,并将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式,还是采用将Load指令传输至全局存储模块,并将Load指令对应的数据直接写回到寄存器以实现将Cache缓存模块旁路的存储方式,这样存储方式的选择可以保证将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了GPU程序的执行性能,其中,访存特征更新模块根据Load指令更新访存特征表中访存旁路标识m_use,并记录于访存特征记录模块,以指导每条Load指令存储方式的选择。
本发明实施例设计了一种访存特征更新模块,根据该访存特征更新模块更新访存特征表中访存旁路标识m_use,具体地:在请求命中与缺失统计单元中根据Load指令中的请求命中数、请求缺失数计算请求命中与缺失数统计量m_count,同时在采样线程块warp统计单元中根据Load指令中线程束warp ID统计采样线程块warp统计量m_times,结合采样线程块的完成情况,并根据计算的请求命中与缺失数统计量m_count来更新访存特征表中访存旁路标识m_use,由于请求在Cache中命中的可能性越大,GPU程序的执行性能就越好,所以访存旁路标识m_use更新中考虑的数据为Load指令中的请求命中数、请求缺失数,以此评价Load指令请求的数据是否值得被保存到缓存Cache模块中,保证将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了Cache的命中率,进而提高了GPU程序的执行性能。
第二方面、在上述基于访存特征的Cache旁路系统的基础上,本发明实施例提供了一种基于访存特征的Cache旁路系统的数据存储方法,请参见图4,包括:
加载Load指令;其中,Load指令包括PC值;
判断系统中配置的访存特征表中是否存在Load指令对应的PC值:
若存在,则判断访存特征表中与Load指令对应的访存旁路标识是否有效,若有效,则将Load指令对应的数据从全局存储模块写回到Cache缓存模块,根据Load指令更新访存特征表中的访存旁路标识,若无效,则将Load指令对应的数据从全局存储模块直接写回到寄存器;
若不存在,则将Load指令对应的数据从全局存储模块写回到Cache缓存模块,并根据Load指令更新访存特征表中的访存旁路标识;
其中,访存特征表用于记录每条Load指令对应的访存特征,该访存特征包括PC值和访存旁路标识m_use。
其中,Load指令还包括请求命中数、请求缺失数和线程束warp ID;访存特征还包括请求命中与缺失统计量m_count、采样线程块warp统计量m_times和入口采样状态标识m_finish和入口状态标识m_valid。
进一步地,本发明实施例根据Load指令更新访存特征表,请参见图5,包括:
判断访存特征表中入口采样状态标识m_finish是否有效:
若有效,则等待下一条Load指令;
若无效,则根据Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量m_count,判断Load指令中线程束warp ID是否属于采样线程块,包括:
若属于,统计采样线程块warp统计量m_times,并判断采样线程块warp统计量m_times和采样线程块宽度是否相等,包括:
若不相等:更新入口采样状态标识m_finish为有效;并比较请求命中与缺失数统计量与预设的统计阈值,若请求命中与缺失数统计量大于或等于统计阈值,则更新访存旁路标识m_use为有效,否则,更新访存旁路标识m_use为无效;
若相等,则等待下一条Load指令;
若不属于,则等待下一条Load指令。
进一步地,本发明实施例数据存储方法还包括:预先从系统的所有线程块中选择任意一线程块作为采样线程块。
进一步地,本发明实施例数据存储方法还包括:统计选择的采样线程块的线程束warp数量,并将该统计结果作为采样线程块宽度。
对于方法实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。
本发明实施例提供的基于访存特征的Cache旁路系统的数据存储方法,是一种基于访存特征的Cache旁路新策略,具体地:通过实时判断访存特征表中与Load指令对应的访存旁路标识m_use是否有效,根据该判断结果来选择是采用将Load指令传输至Cache缓存模块,并将Load指令对应的数据从全局存储模块写回到Cache缓存模块进行存储的存储方式,还是采用将Load指令传输至全局存储模块,并将Load指令对应的数据直接写回到寄存器以实现将Cache缓存模块旁路的存储方式,这样存储方式的选择可以保证将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了GPU程序的执行性能,其中,根据Load指令更新访存特征表中访存旁路标识m_use,以指导每条Load指令存储方式的选择。
本发明实施例设计了一种根据Load指令更新访存特征表中访存旁路标识m_use的方法,具体地:根据Load指令中的请求命中数、请求缺失数计算请求命中与缺失数统计量m_count,同时根据Load指令中的warp ID统计采样线程块warp统计量m_times,结合采样线程块的完成情况,并根据计算得到的请求命中与缺失数统计量m_count来更新访存特征表中访存旁路标识m_use,由于请求在Cache中命中的可能性越大,GPU程序的执行性能就越好,所以访存旁路标识m_use更新中考虑的数据为Load指令中的请求命中数、请求缺失数,以此评价Load指令请求的数据是否值得被保存到缓存Cache模块中,保证将具有高局域性的数据尽可能保存在缓存Cache模块中,从而提高了Cache的命中率,进而提高了GPU程序的执行性能。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种基于访存特征的Cache旁路系统,其特征在于,包括指令加载模块、访存特征记录模块、入口判定模块、访存旁路判定模块、访存特征更新模块、Cache缓存模块和全局存储模块,其中,
所述指令加载模块,用于加载Load指令;其中,所述Load指令包括PC值;
所述访存特征记录模块,用于利用访存特征表记录每条Load指令对应的访存特征;其中,所述访存特征包括PC值和访存旁路标识;
所述入口判断模块,连接所述指令加载模块、所述访存特征记录模块,用于判断所述访存特征表中是否存在所述Load指令对应的PC值,若存在,则将所述Load指令传输至所述访存旁路判定模块,若不存在,则将所述Load指令传输至所述Cache缓存模块,并采用将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块进行存储的存储方式;
所述访存旁路判定模块,连接所述入口判断模块、所述访存特征记录模块、所述Cache缓存模块和所述全局存储模块,用于判断所述访存特征表中与所述Load指令对应的访存旁路标识是否有效,若有效,则将所述Load指令传输至所述Cache缓存模块,并采用将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块进行存储的存储方式,若无效,则将所述Load指令直接传输至所述全局存储模块,并采用将所述Load指令对应的数据直接写回到寄存器以实现将所述Cache缓存模块旁路的存储方式;
所述Cache缓存模块,连接所述入口判断模块和所述访存旁路判定模块,用于将所述Load指令传输至所述访存特征更新模块;
所述访存特征更新模块,连接所述访存特征记录模块和所述Cache缓存模块,用于根据所述Load指令更新所述访存特征表中的访存旁路标识。
2.根据权利要求1所述的基于访存特征的Cache旁路系统,其特征在于,所述Load指令还包括请求命中数、请求缺失数和线程束warp ID;所述访存特征还包括请求命中与缺失统计量、采样线程块warp统计量和入口采样状态标识和入口状态标识。
3.根据权利要求2所述的基于访存特征的Cache旁路系统,其特征在于,所述访存特征更新模块,包括入口采样状态判断单元、请求命中与缺失统计单元、采样线程块判断单元、采样线程块warp统计单元、缓存使用与采样状态更新单元,其中,
所述入口采样状态判断单元,连接所述入口判断模块、所述Cache缓存模块和所述访存特征记录模块,用于判断所述入口采样状态标识是否有效,若有效,则等待下一条Load指令,若无效,则将所述Load指令输入至所述请求命中与缺失统计单元;
所述请求命中与缺失统计单元,连接所述入口采样状态判断单元和所述访存特征记录模块,用于根据所述Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量,并将所述Load指令输入至所述采样线程块判断单元;
所述采样线程块判断单元,连接所述请求命中与缺失统计单元,用于判断所述Load指令中线程束warp ID是否属于采样线程块,若属于,则将所述Load指令输入至所述采样线程块warp统计单元,若不属于,则等待下一条Load指令;
所述采样线程块warp统计单元,连接所述采样线程块判断单元和所述访存特征记录模块,用于统计采样线程块warp统计量,并判断所述采样线程块warp统计量和采样线程块宽度是否相等,若不相等,则等待下一条Load指令,若相等,则将所述Load指令输入至所述缓存使用与采样状态更新单元;
所述缓存使用与采样状态更新单元,连接所述请求命中与缺失统计单元、所述访存旁路判定模块和所述访存特征记录模块,用于更新所述入口采样状态标识为有效,并比较所述请求命中与缺失数统计量与预设的统计阈值,若所述请求命中与缺失数统计量大于或等于所述统计阈值,则更新所述访存旁路标识为有效,否则,更新所述访存旁路标识为无效。
4.根据权利要求3所述的基于访存特征的Cache旁路系统,其特征在于,所述访存特征更新模块还包括采样线程块选择单元,连接所述采样线程块判定单元,用于预先从系统的所有线程块中选择任意一线程块作为采样线程块。
5.根据权利要求4所述的基于访存特征的Cache旁路系统,其特征在于,所述访存特征更新模块还包括采样线程参数配置单元,连接采样线程块选择模块,用于统计选择的所述采样线程块的线程束warp数量,并将该统计结果作为所述采样线程块宽度。
6.一种基于访存特征的Cache旁路系统的数据存储方法,其特征在于,包括:
加载Load指令;其中,所述Load指令包括PC值;
判断系统中配置的访存特征表中是否存在所述Load指令对应的PC值:
若存在,则判断所述访存特征表中与所述Load指令对应的访存旁路标识是否有效,若有效,则将所述Load指令对应的数据从全局存储模块写回到Cache缓存模块,根据所述Load指令更新所述访存特征表中的访存旁路标识,若无效,则将所述Load指令对应的数据从所述全局存储模块直接写回到寄存器;
若不存在,则将所述Load指令对应的数据从所述全局存储模块写回到所述Cache缓存模块,并根据所述Load指令更新所述访存特征表中的访存旁路标识;
其中,所述访存特征表用于记录每条Load指令对应的访存特征,所述访存特征包括PC值和访存旁路标识。
7.根据权利要求6所述的基于访存特征的Cache旁路系统的数据存储方法,其特征在于,所述Load指令还包括请求命中数、请求缺失数和线程束warp ID;所述访存特征还包括请求命中与缺失统计量、采样线程块warp统计量和入口采样状态标识和入口状态标识。
8.根据权利要求7所述的基于访存特征的Cache旁路系统的数据存储方法,其特征在于,所述根据所述Load指令更新所述访存特征表,包括:
判断所述访存特征表中入口采样状态标识是否有效:
若有效,则等待下一条Load指令;
若无效,则根据所述Load指令中的请求命中数和请求缺失数计算请求命中与缺失统计量,判断所述Load指令中线程束warp ID是否属于采样线程块,包括:
若属于,统计采样线程块warp统计量,并判断所述采样线程块warp统计量和采样线程块宽度是否相等,包括:
若相等:更新所述入口采样状态标识为有效;并比较所述请求命中与缺失数统计量与预设的统计阈值,若所述请求命中与缺失数统计量大于或等于所述统计阈值,则更新所述访存旁路标识为有效,否则,更新所述访存旁路标识为无效;
若不相等,则等待下一条Load指令;
若不属于,则等待下一条Load指令。
9.根据权利要求8所述的基于访存特征的Cache旁路系统的数据存储方法,其特征在于,还包括:预先从系统的所有线程块中选择任意一线程块作为采样线程块。
10.根据权利要求9所述的基于访存特征的Cache旁路系统的数据存储方法,其特征在于,还包括:统计选择的所述采样线程块的线程束warp数量,并将该统计结果作为所述采样线程块宽度。
CN202210313311.8A 2022-03-28 2022-03-28 一种基于访存特征的Cache旁路系统及其数据存储方法 Active CN114816734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210313311.8A CN114816734B (zh) 2022-03-28 2022-03-28 一种基于访存特征的Cache旁路系统及其数据存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210313311.8A CN114816734B (zh) 2022-03-28 2022-03-28 一种基于访存特征的Cache旁路系统及其数据存储方法

Publications (2)

Publication Number Publication Date
CN114816734A true CN114816734A (zh) 2022-07-29
CN114816734B CN114816734B (zh) 2024-05-10

Family

ID=82530260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210313311.8A Active CN114816734B (zh) 2022-03-28 2022-03-28 一种基于访存特征的Cache旁路系统及其数据存储方法

Country Status (1)

Country Link
CN (1) CN114816734B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016091164A1 (zh) * 2014-12-12 2016-06-16 上海芯豪微电子有限公司 一种多车道/多核系统和方法
CN108762671A (zh) * 2018-05-23 2018-11-06 中国人民解放军陆军工程大学 基于pcm和dram的混合内存系统及其管理方法
CN108804020A (zh) * 2017-05-05 2018-11-13 华为技术有限公司 一种存储处理方法及装置
CN111176845A (zh) * 2019-12-29 2020-05-19 北京浪潮数据技术有限公司 一种双控制器的数据读取方法及相关装置
CN113297098A (zh) * 2021-05-24 2021-08-24 北京工业大学 一种面向高性能的适应预取的智能缓存替换策略
CN113467935A (zh) * 2021-06-16 2021-10-01 广东赛昉科技有限公司 一种L1cache load forward的实现方法及系统
CN113656332A (zh) * 2021-08-20 2021-11-16 中国科学院上海高等研究院 基于合并地址差值序列的cpu缓存数据预取方法
CN114237718A (zh) * 2021-12-30 2022-03-25 海光信息技术股份有限公司 指令处理方法及配置方法、装置及相关设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016091164A1 (zh) * 2014-12-12 2016-06-16 上海芯豪微电子有限公司 一种多车道/多核系统和方法
CN108804020A (zh) * 2017-05-05 2018-11-13 华为技术有限公司 一种存储处理方法及装置
CN108762671A (zh) * 2018-05-23 2018-11-06 中国人民解放军陆军工程大学 基于pcm和dram的混合内存系统及其管理方法
CN111176845A (zh) * 2019-12-29 2020-05-19 北京浪潮数据技术有限公司 一种双控制器的数据读取方法及相关装置
CN113297098A (zh) * 2021-05-24 2021-08-24 北京工业大学 一种面向高性能的适应预取的智能缓存替换策略
CN113467935A (zh) * 2021-06-16 2021-10-01 广东赛昉科技有限公司 一种L1cache load forward的实现方法及系统
CN113656332A (zh) * 2021-08-20 2021-11-16 中国科学院上海高等研究院 基于合并地址差值序列的cpu缓存数据预取方法
CN114237718A (zh) * 2021-12-30 2022-03-25 海光信息技术股份有限公司 指令处理方法及配置方法、装置及相关设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHIWEI JIA: ""A Survey of GPGPU Parallel Processing Architecture Performance Optimization"", 《2021 IEEE/ACIS 20TH INTERNATIONAL FALL CONFERENCE ON COMPUTER AND INFORMATION SCIENCE (ICIS FALL)》, 6 December 2021 (2021-12-06), pages 75 - 82 *
谢云峰: ""结合新型非易失性存储器的混合Cache优化策略研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2021, 15 April 2021 (2021-04-15), pages 137 - 26 *
贾世伟: ""一种面向二维三维卷积的GPGPU cache旁路系统"", 《西安电子科技大学学报》, vol. 50, no. 02, 11 January 2023 (2023-01-11), pages 92 - 100 *

Also Published As

Publication number Publication date
CN114816734B (zh) 2024-05-10

Similar Documents

Publication Publication Date Title
CN111344684B (zh) 多层缓存安置机制
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
CN104572491B (zh) 一种基于固态硬盘的读缓存管理方法及装置
US6269425B1 (en) Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US8838906B2 (en) Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US8312220B2 (en) Mode-based castout destination selection
US7783837B2 (en) System and storage medium for memory management
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8285939B2 (en) Lateral castout target selection
US20070204107A1 (en) Cache memory background preprocessing
CN107066396A (zh) 用于操作虚拟索引的物理标记的缓存的装置及方法
US20110138124A1 (en) Trace mode for cache memory system
CN110297787B (zh) I/o设备访问内存的方法、装置及设备
CN115712583B (zh) 一种提升分布式缓存跨节点访问性能的方法及装置、介质
CN115617712A (zh) 一种基于组相联高速缓存Cache的LRU替换算法
US11487671B2 (en) GPU cache management based on locality type detection
CN101589373A (zh) 硬件触发的数据高速缓存行预分配
CN114816734B (zh) 一种基于访存特征的Cache旁路系统及其数据存储方法
CN108874690A (zh) 数据预取的实现方法和处理器
CN116701246A (zh) 一种提升缓存带宽的方法、装置、设备及存储介质
CN112579482B (zh) 一种非阻塞Cache替换信息表超前精确更新装置及方法
CN115563235A (zh) 热点感知的日志结构合并树读写性能优化方法及相关设备
CN108509151B (zh) 一种基于dram内存控制器的行缓存方法和系统
Kim et al. Comparison of hybrid and hierarchical swap architectures in Android by using NVM
CN109960458A (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