CN116049033A - 一种高速缓冲存储器Cache读写方法、系统、介质及设备 - Google Patents
一种高速缓冲存储器Cache读写方法、系统、介质及设备 Download PDFInfo
- Publication number
- CN116049033A CN116049033A CN202310331589.2A CN202310331589A CN116049033A CN 116049033 A CN116049033 A CN 116049033A CN 202310331589 A CN202310331589 A CN 202310331589A CN 116049033 A CN116049033 A CN 116049033A
- Authority
- CN
- China
- Prior art keywords
- cache
- request
- data
- size
- requests
- 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
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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
Abstract
本公开实施例提供的一种高速缓冲存储器Cache读写方法、系统、介质及设备,属于数据处理领域,根据计算任务特性配置Cache机制和数据区特性,一方面可以较灵活地对不同的数据块做合适的控制,另外一方面对高速缓冲存储器Cache设计添加了预缓存prefetch功能,能很快速地把需要prefetch的数据提前加载到Cache中,减少后续数据读取的延时,特别是对于人工智能算法等比较规律的计算工作,可以减少数据等待时间,提升整体的性能。
Description
技术领域
本公开实施例涉及数据处理领域,具体地涉及一种高速缓冲存储器Cache读写方法、系统、介质及设备。
背景技术
Cache(高速缓冲存储器)通常用来缓存数据以减少从下一级的存储中搬移数据,来节省计算延时等。在CPU和GPU等芯片中广泛使用。人工智能算法包括了各种各样的模型算法或AI框架,开发使用时包括推理和训练两个重要的过程,一般用GPU进行并行加速。
一般Cache都是多路(way)多组(set)的,如果处理器数据请求发现在Cache中,则快速返回;如果数据缺失,则替换一条数据并开始从外层存储中去读取数据,这个过程耗时较长。经典的数据缺失替换策略是通过LRU(最近最少被使用)等算法把同组内的一条不常使用数据替换掉,基本达到高频使用的数据被缓存下来的目的,基本满足数据处理不规律的场景。但人工智能算法的工作比较有规律性和周期性,数据训练通常一轮接着一轮,内部计算通常一层(layer)接着一层。在处理新的一层时,很多数据都会缺失,导致局部计算单元的数据读取的延时过长,进而有明显的木桶效应导致整层的处理时间被拉长。
GPU处理人工智能算法的一层时,很多计算单元同时在工作,只要有一小部分数据没有在Cache中命中,就会导致整体的处理时间变长。如何改善这种状况,成为亟待解决的问题。
发明内容
本发明的目的在于提供一种高速缓冲存储器Cache读写方法、系统、介质及设备,以便于至少部分地解决上述问题。
根据本公开的一个方面,提出一种高速缓冲存储器Cache读写方法,包括:
接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求Cache中,并把第一预缓存请求传递至预缓存请求生成器,
预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列,
如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列,
普通请求队列中的请求和预缓存请求队列中的请求,经仲裁后进入高速缓冲存储器Cache进行请求的处理。
在一些实施例中,预缓存标识在为数据分配缓存区buffer时或在需要时通过接口程序设置。
在一些实施例中,基于计算任务特性或基于先验知识或基于AI框架模型特性选择需要设置预缓存标识的数据区,以及相应的预缓存大小。
在一些实施例中,如果计算得到的地址标签tag已经被记录,则对应的第一预缓存请求转为普通请求进行处理。
在一些实施例中,第一预缓存请求传递至普通请求队列或预缓存请求队列。
在一些实施例中,预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,包括,
假设预缓存大小为MB,Cache line的大小为mB,则将第一预缓存请求展开成n个请求,其中n=⌈M/m⌉。
在一些实施例中,高速缓冲存储器Cache可以通过接口程序选择开启或关闭预缓存特性。
根据本公开的另一个方面,提出一种高速缓冲存储器Cache读写系统,包括:
处理器,用于从存储器接收数据,
高速缓冲存储器,可操作地连接在存储器和处理器单元之间,用于从存储器接收数据,并将数据传送至处理器,
高速缓冲存储器包括,普通请求队列单元,预缓存请求队列单元,预缓存请求cache单元,预缓存请求生成器单元,预缓存标识判断单元,仲裁单元和高速缓冲存储Datacache单元,
其中,高速缓冲存储器接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
预缓存标识判断单元,用于判断预缓存标识的真假,如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求cache单元中,并把第一预缓存请求传递至预缓存请求生成器单元,
预缓存请求生成器单元基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列单元,
如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列单元,
普通请求队列单元中的请求和预缓存请求队列单元中的请求,经仲裁单元仲裁后进入高速缓冲存储Data cache单元进行请求的处理。
在一些实施例中,预缓存标识在为数据分配缓存区buffer时或在需要时通过接口程序设置。
在一些实施例中,基于计算任务特性或基于先验知识或基于AI框架模型特性选择需要设置预缓存标识的数据区,以及相应的预缓存大小。
在一些实施例中,如果计算得到的地址标签tag已经被记录,则对应的第一预缓存请求转为普通请求进行处理。
在一些实施例中,第一预缓存请求传递至普通请求队列或预缓存请求队列。
在一些实施例中,预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,包括,
假设预缓存大小为MB,Cache line的大小为mB,则将第一预缓存请求展开成n个请求,其中n=⌈M/m⌉。
在一些实施例中,高速缓冲存储器Cache可以通过接口程序选择开启或关闭预缓存特性。
本申请实施例还提供一种电子设备,电子设备包括存储器和处理器,存储器中存储有计算机程序,处理器通过调用存储器中存储的计算机程序,执行如上任一实施例的方法中的步骤。
本公开实施例提供的一种高速缓冲存储器Cache读写方法、系统、介质及设备,根据计算任务特性配置Cache机制和数据区特性,一方面可以较灵活地对不同的数据块做合适的控制,另外一方面对高速缓冲存储器Cache设计添加了预缓存prefetch功能,能很快速地把需要prefetch的数据提前加载到Cache中,减少后续数据读取的延时,特别是对于人工智能算法等比较规律的计算工作,可以减少数据等待时间,提升整体的性能。
附图说明
图1为本申请实施例提供的高速缓冲存储器Cache读写方法流程示意图。
图2为本申请实施例提供的高速缓冲存储器结构示意图。
图3为本申请实施例提供的高速缓冲存储器Cache读写系统架构示意图。
图4为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
对于本技术方案中的“第一”和“第二”,仅为对相同或相似结构,或者起相似功能的对应结构的称谓区分,不是对这些结构重要性的排列,也没有排序、或比较大小、或其他含义。
另外,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个结构内部的连通。对于本领域的普通技术人员而言,可以根据本发明的总体思路,联系本方案上下文具体情况理解上述术语在本发明中的具体含义。
实施例一
具体地,请参阅图1,为本公开提供的高速缓冲存储器Cache读写方法。具体步骤如下:
步骤S1,接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小。
在一些实施例中,软件层面负责根据计算任务特性配置Cache机制和数据区特性;软件驱动对各个数据块做了信息标识,是否需要预缓存,预缓存的颗粒度是多少。一个请求下发到Cache时,除了原来的地址信号等,还需要带预缓存标识(prefetchBuffFlag)和预缓存大小(prefetchGranularity),来标识当前请求是否需要预缓存以及预缓存的颗粒度。
在一些实施例中,数据在使用前通常需要提前分配(用buffer标识),可以在分配时或者后续设置数据区的预缓存特性,示例性的,接口程序为setL2Prefetch(buffer,True)。也可以根据需要,取消一个数据区的预缓存特性,示例性的,接口程序为setL2Prefetch(buffer,False)。
在一些实施例中,设置数据区的预缓存颗粒度也可以一起设置。对于什么样的数据区需要设置预缓存特性,以及预缓存颗粒度设置成多少比较合适,一方面用户可以根据自己对计算任务的认知进行设置,另外一方面AI框架或者驱动程序可以根据效果分析等数据进行设置或不停调整,乃至选择最优的设置。此外,对驱动程序等来说,数据区的设置不仅仅是对整个数据区,可以在更小细粒度的数据页面(page)维度进行设置。
步骤S2:如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求Cache中,并把第一预缓存请求传递至预缓存请求生成器。
在一些实施例中,高速缓冲存储器Cache的架构如图2所示,可以理解的是,高速缓冲存储器(cache)可以与处理器分离耦接,也可以集成在处理器中。如果prefetchBuffFlag信息为1,表示预缓存标识为真,即要访问的数据区域是需要预先缓存的,进入预缓存(prefetch)请求Cache模块,示例性地,Prefetch请求Cache可以是比Data cache容量小的一个Cache,可以采用LRU策略,也可以根据实际需要设置Prefetch请求Cache的大小和置换算法,本公开不做限制。
一个prefetch请求进来,首先像普通的Cache一样计算地址tag,计算公式为:
addrTag = address / prefetchGranularity // 对计算结果地址取整,示例性地,输入地址是0x04091224,假设当前数据块的prefetchGranularity为4KB,则addrTag为0x04091,其中addrTag为物理地址在prefetch请求Cache对应的标签,address为prefetch请求的数据地址,prefetchGranularity为预缓存的颗粒度。
如果prefetch请求Cache 中已经有addrTag为0x04091的记录,则这个prefetch请求被当作普通请求进行后续处理,如果没有这条记录,则生成一条带这个tag的记录 ,并把当前这个prefetch请求传递给prefetch请求生成器。
步骤S3:预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列。
在一些实施例中,对于prefetch请求,根据prefetchGranularity的大小以及Datacache一行数据(cache line)的大小,进行Prefetch请求展开生成,把初始地址对应的那个请求设置为普通请求,传递给prefetch请求队列(也可以传递给普通请求队列),对于其它展开生成的Prefetch请求,传递给Prefetch请求队列,示例性地,Prefetch请求队列可以是一个深度为128或256的buffer,也可以根据实际需要设置Prefetch请求队列的大小,本公开不做限制。
示例性地,输入地址为0x04091224,prefetchGranularity为4KB的请求DataCache一行为256B。那么总共会有4KB/256B=16条请求,包括1条起始地址是0x04091200的普通请求(地址为0x04091224),以及起始地址为0x04091000,0x04091100,0x04091300,0x04091400等等15条prefetch请求。
步骤S4:如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列。
在一些实施例中,如果数据请求对应的prefetchBuffFlag信息为0,表示是普通的请求,不需要进行数据的预缓存,走普通的(先前的)请求队列即可。
步骤S5:普通请求队列中的请求和预缓存请求队列中的请求,经仲裁后进入高速缓冲存储器Cache进行请求的处理。
前述步骤中展开生成的Prefetch请求都保存在这个Prefetch请求队列中,和普通的请求队列一起,在仲裁后进入Data cache进行请求处理。
为便于理解,下文以一个具体例子对本公开的构思进行说明。
例如,数据读取请求的是一个数据区块A(地址0x80000000-0x80010000 ), 在本实施例中,该数据区块会规律性地被读取使用,因此被设置成启用预缓存,其中预缓存颗粒度为4KB;其中Data Cache line的大小是256B。
处理器具体为GPU,GPU有很多个并行计算单元,某一阶段开始对数据块A里的数据进行读取并处理 。假设GPU第一个请求初始地址是0x80000020,因为prefetchBuffFlag=True,所以该请求会分配到Prefetch请求Cache去处理,同时会在Prefetch请求Cache 添加一个地址为0x80000020/4K=0x80000的记录 ,并且展开生成4K/256B=16条读取数据的指令,这些展开的请求指令被传递至Prefetch请求队列中,在执行过程中,展开的请求经仲裁后进入Data cache处理,可以理解的是,通过本公开,不仅第一个请求地址0x80000020对应的256B的数据被写入data cache,而且几乎同时会把展开请求指令对应的数据(0x80000000-0x80001000)加载到DataCache中去。
在GPU执行过程中,例如隔了一定时间,GPU请求一个请求地址是0x80000120的数据,由于基于本公开,在GPU向data cache发出初始地址是0x80000020的数据读取请求时,通过本公开的构思,整个数据块A对应的数据(0x80000000-0x80001000)被几乎同时加载至data cache中了。因此,对于对应地址为0x80000120的新的读取请求,该请求在Prefetch请求Cache里可以找到相关的0x80000,并且在DataCache中可以找到0x80000120的数据,从而节省了DataCache再去外部存储中加载数据的延时,加快了整体的计算性能。
实施例二
为实现上述目的,本实施例提出了一种高速缓冲存储器Cache读写系统,本实施例系统中个模块及其功能和实施例一中的描述是一致的,对于重复部分,本实施例不再赘述,具体的请参阅图3.
高速缓冲存储器Cache读写系统包括处理器(未示出),用于从存储器(未示出)接收数据,高速缓冲存储器,可操作地连接在存储器和处理器单元之间,用于从存储器接收数据,并将数据传送至处理器,可以理解的是,高速缓冲存储器也可以集成在处理器中。
高速缓冲存储器包括,普通请求队列单元,预缓存请求队列单元,预缓存请求cache单元,预缓存请求生成器单元,预缓存标识判断单元,仲裁单元和高速缓冲存储Datacache单元,
其中,高速缓冲存储器接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
预缓存标识判断单元,用于判断预缓存标识的真假,如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求cache单元中,并把第一预缓存请求传递至预缓存请求生成器单元,
预缓存请求生成器单元基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列单元,
如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列单元,
普通请求队列单元中的请求和预缓存请求队列单元中的请求,经仲裁单元仲裁后进入高速缓冲存储Data cache单元进行请求的处理。
实施例三
相应的,本申请实施例还提供一种电子设备,该电子设备可以为终端或者服务器。如图4所示,图4为本申请实施例提供的电子设备的结构示意图。
该电子设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备400的各个部分,通过运行或加载存储在存储器402内的软件程序(计算机程序)和/或单元,以及调用存储在存储器402内的数据,执行电子设备400的各种功能和处理数据,从而对电子设备400进行整体监控。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求Cache中,并把第一预缓存请求传递至预缓存请求生成器,
预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列,
如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列,
普通请求队列中的请求和预缓存请求队列中的请求,经仲裁后进入高速缓冲存储器Cache进行请求的处理。
以上各个操作的具体实施可参见前述的实施例,在此不再赘述。
可选的,如图4所示,电子设备400还包括:Cache读写模块403、通讯模块404、输入单元405以及电源406。其中,处理器401分别与Cache读写模块403、通讯模块404、输入单元405以及电源406电性连接。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
Cache读写模块403可用于实现高速缓冲存储器Cache读写。
通讯模块404可用于与其他设备通信。
输入单元405可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源406用于给电子设备400的各个部件供电。可选的,电源406可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源406还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
实施例四
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的一种高速缓冲存储器Cache读写方法的步骤。例如,该计算机程序可以执行如下步骤:
接收数据读取请求,读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
如果预缓存标识为真,读取请求为第一预缓存请求,基于第一数据地址和预缓存大小计算地址标签tag,将地址标签tag记录在预缓存请求Cache中,并把第一预缓存请求传递至预缓存请求生成器,
预缓存请求生成器基于预缓存大小和Cache line的大小,将第一预缓存请求展开成多个第二预缓存请求,并将多个第二预缓存请求传递至预缓存请求队列,
如果预缓存标识为假,读取请求为普通请求,并将普通请求传递至普通请求队列,
普通请求队列中的请求和预缓存请求队列中的请求,经仲裁后进入高速缓冲存储器Cache进行请求的处理。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种高速缓冲存储器Cache读写方法中的步骤,因此,可以实现本申请实施例所提供的任一种高速缓冲存储器Cache读写方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
Claims (16)
1.一种高速缓冲存储器Cache读写方法,其特征在于,包括:
接收数据读取请求,所述读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
如果所述预缓存标识为真,所述读取请求为第一预缓存请求,基于所述第一数据地址和所述预缓存大小计算地址标签tag,将所述地址标签tag记录在预缓存请求Cache中,并把所述第一预缓存请求传递至预缓存请求生成器,
所述预缓存请求生成器基于所述预缓存大小和Cache line的大小,将所述第一预缓存请求展开成多个第二预缓存请求,并将所述多个第二预缓存请求传递至预缓存请求队列,
如果所述预缓存标识为假,所述读取请求为普通请求,并将所述普通请求传递至普通请求队列,
所述普通请求队列中的请求和所述预缓存请求队列中的请求,经仲裁后进入所述高速缓冲存储器Cache进行请求的处理。
2.根据权利要求1所述的方法,其特征在于:
所述预缓存标识在为数据分配缓存区buffer时或在需要时通过接口程序设置。
3.根据权利要求2所述的方法,其特征在于:
基于计算任务特性或基于先验知识或基于AI框架模型特性选择需要设置预缓存标识的数据区,以及相应的预缓存大小。
4.根据权利要求1所述的方法,其特征在于:
如果计算得到的地址标签tag已经被记录,则对应的所述第一预缓存请求转为普通请求进行处理。
5.根据权利要求1所述的方法,其特征在于:
所述第一预缓存请求传递至所述普通请求队列或所述预缓存请求队列。
6.根据权利要求1所述的方法,其特征在于:
所述预缓存请求生成器基于所述预缓存大小和Cache line的大小,将所述第一预缓存请求展开成多个第二预缓存请求,包括,
假设预缓存大小为MB,Cache line的大小为mB,则将所述第一预缓存请求展开成n个请求,其中n=⌈M/m⌉。
7.根据权利要求1所述的方法,其特征在于:
所述高速缓冲存储器Cache可以通过接口程序选择开启或关闭预缓存特性。
8.一种高速缓冲存储器Cache读写系统,其特征在于,包括:
处理器,用于从存储器接收数据,
高速缓冲存储器,可操作地连接在存储器和处理器单元之间,用于从存储器接收数据,并将所述数据传送至处理器,
所述高速缓冲存储器包括,普通请求队列单元,预缓存请求队列单元,预缓存请求cache单元,预缓存请求生成器单元,预缓存标识判断单元,仲裁单元和高速缓冲存储Datacache单元,
其中,所述高速缓冲存储器接收数据读取请求,所述读取请求至少包括第一数据地址、预缓存标识和预缓存大小,
所述预缓存标识判断单元,用于判断预缓存标识的真假,如果所述预缓存标识为真,所述读取请求为第一预缓存请求,基于所述第一数据地址和所述预缓存大小计算地址标签tag,将所述地址标签tag记录在所述预缓存请求cache单元中,并把所述第一预缓存请求传递至所述预缓存请求生成器单元,
所述预缓存请求生成器单元基于所述预缓存大小和Cache line的大小,将所述第一预缓存请求展开成多个第二预缓存请求,并将所述多个第二预缓存请求传递至所述预缓存请求队列单元,
如果所述预缓存标识为假,所述读取请求为普通请求,并将所述普通请求传递至所述普通请求队列单元,
所述普通请求队列单元中的请求和所述预缓存请求队列单元中的请求,经所述仲裁单元仲裁后进入所述高速缓冲存储Data cache单元进行请求的处理。
9.根据权利要求8所述的系统,其特征在于:
所述预缓存标识在为数据分配缓存区buffer时或在需要时通过接口程序设置。
10.根据权利要求9所述的系统,其特征在于:
基于计算任务特性或基于先验知识或基于AI框架模型特性选择需要设置预缓存标识的数据区,以及相应的预缓存大小。
11.根据权利要求8所述的系统,其特征在于:
如果计算得到的地址标签tag已经被记录,则对应的所述第一预缓存请求转为普通请求进行处理。
12.根据权利要求8所述的系统,其特征在于:
所述第一预缓存请求传递至所述普通请求队列或所述预缓存请求队列。
13.根据权利要求8所述的系统,其特征在于:
所述预缓存请求生成器基于所述预缓存大小和Cache line的大小,将所述第一预缓存请求展开成多个第二预缓存请求,包括,
假设预缓存大小为MB,Cache line的大小为mB,则将所述第一预缓存请求展开成n个请求,其中n=⌈M/m⌉。
14.根据权利要求8所述的系统,其特征在于:
所述高速缓冲存储器Cache可以通过接口程序选择开启或关闭预缓存特性。
15.一种电子设备,其特征在于:包括存储有可执行程序代码的存储器以及与所述存储器耦合的处理器;其中,所述处理器调用所述存储器中存储的可执行程序代码,执行如权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器运行时执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310331589.2A CN116049033B (zh) | 2023-03-31 | 2023-03-31 | 一种高速缓冲存储器Cache读写方法、系统、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310331589.2A CN116049033B (zh) | 2023-03-31 | 2023-03-31 | 一种高速缓冲存储器Cache读写方法、系统、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116049033A true CN116049033A (zh) | 2023-05-02 |
CN116049033B CN116049033B (zh) | 2023-07-28 |
Family
ID=86131643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310331589.2A Active CN116049033B (zh) | 2023-03-31 | 2023-03-31 | 一种高速缓冲存储器Cache读写方法、系统、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049033B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6098154A (en) * | 1997-06-25 | 2000-08-01 | Sun Microsystems, Inc. | Apparatus and method for generating a stride used to derive a prefetch address |
US20070136533A1 (en) * | 2005-12-09 | 2007-06-14 | Microsfoft Corporation | Pre-storage of data to pre-cached system memory |
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
US20150227935A1 (en) * | 2015-02-28 | 2015-08-13 | Brighterion, Inc. | Payment authorization data processing system for optimizing profits otherwise lost in false positives |
US20200081841A1 (en) * | 2018-09-07 | 2020-03-12 | BigStream Solutions, Inc. | Cache architecture for column-oriented database management systems |
CN111124951A (zh) * | 2018-10-31 | 2020-05-08 | 伊姆西Ip控股有限责任公司 | 管理数据访问的方法、设备和计算机程序产品 |
CN111142941A (zh) * | 2019-11-27 | 2020-05-12 | 核芯互联科技(青岛)有限公司 | 一种非阻塞高速缓存缺失处理方法及装置 |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN113886286A (zh) * | 2021-12-02 | 2022-01-04 | 南京芯驰半导体科技有限公司 | 一种兼容二维结构数据读写系统及方法 |
US20220129385A1 (en) * | 2020-10-26 | 2022-04-28 | International Business Machines Corporation | Fast cache tracking to support aggressive prefetching |
CN114528229A (zh) * | 2022-04-21 | 2022-05-24 | 飞腾信息技术有限公司 | 一种缓存数据访问方法、装置及电子设备 |
CN115563031A (zh) * | 2022-10-14 | 2023-01-03 | 无锡先进技术研究院 | 指令高速缓存的预取控制方法、装置、芯片及存储介质 |
-
2023
- 2023-03-31 CN CN202310331589.2A patent/CN116049033B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6098154A (en) * | 1997-06-25 | 2000-08-01 | Sun Microsystems, Inc. | Apparatus and method for generating a stride used to derive a prefetch address |
US20070136533A1 (en) * | 2005-12-09 | 2007-06-14 | Microsfoft Corporation | Pre-storage of data to pre-cached system memory |
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
US20150227935A1 (en) * | 2015-02-28 | 2015-08-13 | Brighterion, Inc. | Payment authorization data processing system for optimizing profits otherwise lost in false positives |
US20200081841A1 (en) * | 2018-09-07 | 2020-03-12 | BigStream Solutions, Inc. | Cache architecture for column-oriented database management systems |
CN111124951A (zh) * | 2018-10-31 | 2020-05-08 | 伊姆西Ip控股有限责任公司 | 管理数据访问的方法、设备和计算机程序产品 |
CN111142941A (zh) * | 2019-11-27 | 2020-05-12 | 核芯互联科技(青岛)有限公司 | 一种非阻塞高速缓存缺失处理方法及装置 |
US20220129385A1 (en) * | 2020-10-26 | 2022-04-28 | International Business Machines Corporation | Fast cache tracking to support aggressive prefetching |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN113886286A (zh) * | 2021-12-02 | 2022-01-04 | 南京芯驰半导体科技有限公司 | 一种兼容二维结构数据读写系统及方法 |
CN114528229A (zh) * | 2022-04-21 | 2022-05-24 | 飞腾信息技术有限公司 | 一种缓存数据访问方法、装置及电子设备 |
CN115563031A (zh) * | 2022-10-14 | 2023-01-03 | 无锡先进技术研究院 | 指令高速缓存的预取控制方法、装置、芯片及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘秉煦;张文军;李小勇;: "面向SSD/HDD混合存储的动态缓存调度算法DRC", 微型电脑应用, no. 04, pages 15 - 18 * |
Also Published As
Publication number | Publication date |
---|---|
CN116049033B (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963394B2 (en) | System and method for optimizing performance of a solid-state drive using a deep neural network | |
US10838626B2 (en) | Methods, apparatuses, and computer program products for controlling write requests in storage system | |
US11500797B2 (en) | Computer memory expansion device and method of operation | |
US9400544B2 (en) | Advanced fine-grained cache power management | |
CN107544926B (zh) | 处理系统及其访存方法 | |
US20160154452A1 (en) | System and method for controlling the power mode of operation of a memory device | |
US20210390053A1 (en) | Host-Assisted Memory-Side Prefetcher | |
US8019939B2 (en) | Detecting data mining processes to increase caching efficiency | |
CN100530141C (zh) | 用于互连网络上高效的有序储存的方法和装置 | |
CN115981833A (zh) | 一种任务处理方法及装置 | |
CN112306652A (zh) | 带有上下文提示的功能的唤醒和调度 | |
CN104460938B (zh) | 利用存储器高速缓存在系统范围内节省电力的方法和系统 | |
CN116049033B (zh) | 一种高速缓冲存储器Cache读写方法、系统、介质及设备 | |
WO2023173991A1 (en) | Cache line compression prediction and adaptive compression | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
US8719499B2 (en) | Cache-line based notification | |
CN101599049B (zh) | 控制dma访问不连续物理地址的方法及dma控制器 | |
CN109491785A (zh) | 内存访问调度方法、装置及设备 | |
CN115657839A (zh) | 一种处理器低功耗控制方法、系统、设备及存储介质 | |
JPH02287648A (ja) | Lruキヤツシユ管理方法 | |
EP4022446B1 (en) | Memory sharing | |
KR20230046356A (ko) | 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치 | |
JP7335253B2 (ja) | スコアボードの保存及び復元 | |
US10509727B1 (en) | Method and apparatus for performing task-level cache management in electronic device | |
EP4160423B1 (en) | Memory device, memory device operating method, and electronic device including memory device |
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 |