CN103778069B - 高速缓冲存储器的高速缓存块长度调整方法及装置 - Google Patents

高速缓冲存储器的高速缓存块长度调整方法及装置 Download PDF

Info

Publication number
CN103778069B
CN103778069B CN201210396334.6A CN201210396334A CN103778069B CN 103778069 B CN103778069 B CN 103778069B CN 201210396334 A CN201210396334 A CN 201210396334A CN 103778069 B CN103778069 B CN 103778069B
Authority
CN
China
Prior art keywords
cache
cache memory
length value
adjusting
length
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
Application number
CN201210396334.6A
Other languages
English (en)
Other versions
CN103778069A (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.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
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 Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201210396334.6A priority Critical patent/CN103778069B/zh
Priority to US14/436,976 priority patent/US20150269027A1/en
Priority to JP2015537128A priority patent/JP6001185B2/ja
Priority to EP13846714.7A priority patent/EP2911062A4/en
Priority to KR1020157013023A priority patent/KR20150076200A/ko
Priority to PCT/CN2013/084369 priority patent/WO2014059869A1/zh
Publication of CN103778069A publication Critical patent/CN103778069A/zh
Application granted granted Critical
Publication of CN103778069B publication Critical patent/CN103778069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种高速缓冲存储器的高速缓存块长度调整方法及装置。该方法包括:如果访问的数据或者指令的连续命中失败的次数大于第一预定阈值,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将所有高速缓存块长度调整为小于当前长度值的第一预设长度值,并使能高速缓冲存储器;如果访问数据或者指令时,在高速缓冲存储器中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个高速缓存块里的数据和指令都会被顺序访问,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值,并使能高速缓冲存储器。

Description

高速缓冲存储器的高速缓存块长度调整方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种高速缓冲存储器的高速缓存块长度调整方法及装置。
背景技术
目前,在现有技术中,高速缓冲存储器(Cache)技术主要是从程序的局部连续性和cache的访问速率比下一级存储器快得多这个特性来考虑。图1是现有技术中***存储结构示意图,如图1所示,包括:CPU、Cache、总线接口,外部存储设备通过总线接口传输数据和地址信息。对于32bit位宽的***而言,当访问一个4字节指令或者数据时,将包括这个地址在内的一个高速缓存块(cacheline)长度的内容(指令或者数据)一次装入一个cacheline,以保证一段时间内可以直接从cache里面取指令或数据,提高程序的运行速度,减短运行时间,但是,在有些程序里程序的局部连续性并不高的情况下,这样每次读取局部的一条指令会将包括这个地址在内的一个cacheline长度的内容(指令或者数据)一次装入一个cacheline。
在cache大小一定的情况下,如果cacheline长度比较大,那么在将来的一段时间内大量的不需要运行的代码或者数据的将占据cache空间,增加cache的替换次数,例如,在处理多个大容量的音视频文件(例如,4G bytes的视频文件,文件分成多个段,每个段大小1Kbytes)的格式转换或者属性统计算法中,只需要获得音视频文件的各个段的头或者尾的几个字节的数据,如果这个时候cacheline的长度比较大,那么在开Cache的情况下,发生Cache替换的次数将会非常频繁,这样势必影响我们算法的效率,这时希望cacheline的长度能尽可能的小,相反在大量指令连续性比较强,或者将要访问大量且连续数据空间时,cacheline长度比较小的cache会明显的降低cache的性能,例如,在下载或者上传大批量的大音视频文件(例如,4G bytes的高清视频文件),如果连续的访问5Gbytes的音视频数据,则希望每次访问一个没命中的数据时能将更多的数据装入一个cacheline里面,这样上传下载音视频数据的速率会成倍的提高。
发明内容
本发明提供一种高速缓冲存储器的高速缓存块长度调整方法及装置,以解决现有技术中Cache的cacheline长度不能够变化调整的问题。
本发明提供一种高速缓冲存储器的高速缓存块长度调整方法,包括:如果访问的数据或者指令在高速缓冲存储器中连续命中失败的次数大于第一预定阈值,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值,并使能高速缓冲存储器;如果访问数据或者指令时,在高速缓冲存储器中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个高速缓存块里的数据和指令都会被顺序访问,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值,并使能高速缓冲存储器。
优选地,将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值具体包括:通过硬件自动进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值;或者,通过软件控制寄存器进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值。
优选地,将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值具体包括:通过硬件自动进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值;或者,通过软件控制寄存器进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值。
优选地,高速缓冲存储器采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
优选地,上述方法还包括:如果存在三个设置为最大高速缓存块长度的写入缓冲器,则使用三个写入缓冲器支持高速缓冲存储器的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;如果三个写入缓冲器没有设置为最大高速缓存块长度,则使用三个写入缓冲器的低地址空间支持高速缓冲存储器的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
本发明还提供了一种高速缓冲存储器的高速缓存块长度调整装置,包括:第一调整模块,用于如果访问的数据或者指令在高速缓冲存储器中连续命中失败的次数大于第一预定阈值,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值,并使能高速缓冲存储器;第二调整模块,用于如果访问数据或者指令时,在高速缓冲存储器中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个高速缓存块里的数据和指令都会被顺序访问,则作废并清除高速缓冲存储器中所有的高速缓存块,去使能高速缓冲存储器,将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值,并使能高速缓冲存储器。
优选地,第一调整模块具体用于:通过硬件自动进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值;或者,通过软件控制寄存器进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值。
优选地,第二调整模块具体用于:通过硬件自动进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值;或者,通过软件控制寄存器进行调整的方式将高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值。
优选地,高速缓冲存储器采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
优选地,上述装置还包括:第一处理模块,用于如果存在三个设置为最大高速缓存块长度的写入缓冲器,则使用三个写入缓冲器支持高速缓冲存储器的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;第二处理模块,用于如果三个写入缓冲器没有设置为最大高速缓存块长度,则使用三个写入缓冲器的低地址空间支持高速缓冲存储器的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
本发明有益效果如下:
通过对Cacheline长度的随时切换来适应不同的应用场景,解决了现有技术中Cache的cacheline长度不能够变化调整的问题,能够提高***指令数据的访问速率,提升***性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是现有技术中***存储结构示意图;
图2是本发明实施例的高速缓冲存储器的高速缓存块长度调整方法的流程图;
图3是本发明实施例的32字节长度的cacheline的cache结构示意图;
图4是本发明实施例的64字节长度的cacheline的cache结构示意图;
图5是本发明实施例的高速缓冲存储器的高速缓存块长度调整装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在实际应用中,cache在某种场合下Cacheline的大小需要为8字节(在程序局部连续性不高的情况下,在某些音视频文件属性统计和一些音频格式转换处理算法中),在另外某种场合下,cacheline长度需要为64字节或者128字节(在程序的局部连续性特别高的情况下或者将要访问大批量连续地址空间数据时,高清音视频上传下载的情况下);此外,如果程序在一段程序内发生跳转的情况异常频繁,并且每次发生跳转的指令间的虚拟地址相距很大,并且每次跳转后连续的指令比较少,或者在一段时间内要访问大批量的数据但是数据在空间上有很大的跨度,这样希望每次进入cacheline的指令条数或者数据个数能越少越好,所以希望cacheline的长度能很短,但是在另外一种情况下,在很大一段时间内程序将一直顺序执行下去,或者在很大一段时间内将一直操作很大一段连续空间的数据,所以希望一次进入cache的指令条数和数据个数越多越好。因此,就需要根据应用场景对Cache的cacheline长度进行调整,为了解决现有技术中Cache的cacheline长度不能够变化调整的问题,本发明提供了一种高速缓冲存储器的高速缓存块长度调整方法及装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
方法实施例
根据本发明的实施例,提供了一种高速缓冲存储器的高速缓存块长度调整方法,图2是本发明实施例的高速缓冲存储器的高速缓存块长度调整方法的流程图,如图2所示,根据本发明实施例的高速缓冲存储器的高速缓存块长度调整方法包括如下处理:
步骤201,如果访问的数据或者指令在cache中连续命中失败的次数大于第一预定阈值,则作废并清除cache中所有的cacheline,去使能cache,将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值,并使能cache;
在步骤201中,将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值具体包括:
方式1、通过硬件自动进行调整的方式将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值;
方式2、通过软件控制寄存器进行调整的方式将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值。
需要说明的是,在方式2中,也需要硬件能够cacheline长度进行调整,并且需要借助寄存器来预先设置可调整的cacheline长度值,软件通过寄存器来控制cacheline长度的选择。
在方式1和方式2中,可以通过寄存器来设置是否启动这个功能。
步骤202,如果访问数据或者指令时,在cache中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个cacheline里的数据和指令都会被顺序访问,则作废并清除cache中所有的cacheline,去使能cache,将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值,并使能cache。
在步骤202中,将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值具体包括:
方式1,通过硬件自动进行调整的方式将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值;
方式2,通过软件控制寄存器进行调整的方式将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值。
需要说明的是,在方式2中,也需要硬件能够cacheline长度进行调整,并且需要借助寄存器来预先设置可调整的cacheline长度值,软件通过寄存器来控制cacheline长度的选择。
在方式1和方式2中,可以通过寄存器来设置是否启动这个功能。
需要说明的是,在本发明实施例中,cache采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
为了保证Cache的基本操作,如果存在三个设置为最大cacheline长度的写入缓冲器,则使用三个写入缓冲器支持cache的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;
如果三个写入缓冲器没有设置为最大cacheline长度,则使用三个写入缓冲器的低地址空间支持cache的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
以下结合附图,对本发明上述技术方案进行详细说明。
本发明提出了一种根据不同的情况来改变当前cacheline长度的方法,主要包括以下五个方面的内容:
一、如何切换cacheline长度,方法有两种:
方法1、通过硬件来来自动改变长度:当访问的数据或者指令在连续多次(例如5次)命中(hit)失败的情况下,硬件将自动切换当前的cacheline长度改为更小值;当访问数据或者指令时,在连续进行的多次(比如5次)内容填充(linefill)过程中如果发现每次linefill后整个cacheline里面的数据和指令都会被顺序访问,在这种情况下,硬件将自动切换当前的cacheline长度改为更大值,是否启动这个功能可以通过寄存器来设置。
方法2、软件通过寄存器来设置cacheline的长度:当访问的数据或者指令在连续多次(例如5次)命中(hit)失败的情况下,软件通过寄存器切换当前的cacheline长度改为更小值;当访问数据或者指令时,在连续进行的多次(比如5次)内容填充(linefill)过程中如果发现每次linefill后整个cacheline里面的数据和指令都会被顺序访问,在这种情况下,软件通过寄存器切换当前的cacheline长度改为更大值,是否启动这个功能可以通过寄存器来设置。
在进行硬件或者软件切换cacheline长度时,需要对cache存放数据或者指令的结构进行调整,cache访问数据时,tag位数会发生改变,其大小为32-n-7,cacheline长度为2nbytes;
例1,表1是32字节长度的cacheline的cache结构,此时n=5;
表1
图3是本发明实施例的32字节长度的cacheline的cache结构示意图,如图3所示,如果Cache大小为32k bytes,则采用32个set,当cacheline大小为32byte,那么每个Set 32个cacheline,也就是32way,如果起始地址为0x0,则way0存放0x00000000~0x000003ff;way1存放0x00000400~0x7ff;……,Way31存放0x7c00~0x7fff。其中,bit[31:13]表示set所在way的首地址,bit[12:5]表示是哪个cacheline,bit[4:2]表示在cacheline中word的偏移地址。
例2,表2为64bytes cacheline长度的结构,此时n=6;
表2
图4是本发明实施例的64字节长度的cacheline的cache结构示意图,在cache中采用组相联的方式来设计cache,如果Cache大小为32k bytes,那么采用32个set,当cacheline大小为64byte,那么每个Set 16个cacheline,也就是32way,如果起始地址为0x0,则way0存放0x00000000~0x000003ff;way1存放0x00000400~0x7ff;……;Way31存放0x7c00~0x7fff。其中,其中bit[31:14]表示set所在组(Set)t的首地址,bit[15:6]表示是哪个cacheline,bit[5:2]表示在cacheline中word的偏移地址。
根据例1和例2,就可以得出其他其cacheline size的情况的cache的结构组成。
二、硬件将要改变cacheline的长度值后将要做的操作:
步骤1,作废并清除所有的cacheline;
步骤2,去使能(disable)cache;
步骤3,改变cacheline长度;
步骤4,使能(enable)cache.
三、在不同的cacheline长度情况下要支持cache的所有操作,包括作废(inv),写回(clean),作废写回(invclean),锁定(lockdown)、使能(enable),去使能(disable),以及存储(eviction),并能以当前长度的cacheline为基本单元进行操作:
1、为了能支持cache的这些基本操作,要有3个最大cacheline长度的写入缓冲器(writebuffer),其中包括1个替换写入缓冲器(victim write buffer)、1个写回缓冲器(cache linefill buffer)、1个存储缓冲器(store buffer);
2、当3个writebuffer的长度不是所能设置的最大长度时,只用低地址空间的部分。
四、cache采用的存放映射关系:在cache中采用组相联的方式来设计cache。
五、cache采用的替换策略:采用伪随机和顺序替换。
需要说明的是,本发明实施例可以支持的cacheline长度要是当前***数据位宽(比如32bits)的整数倍,同时不能使cacheline的长度大于256bytes。有了这样的cache,可以根据自己的程序的结构和数据操作的情况来使用不同长度的cacheline来提高程序执行,数据访问的速度,提高工作的效率,提高cpu与外设的通信速度,改善整个soc的性能。
综上所述,在本发明实施例中,引入了可变cacheline长度的cache的思想,应用场景如下:1、在一些音视频文件处理算法中,比如我只需要访问大量音视频文件,以及各段中的某些特殊属性值时,将cacheline值设置很小;2、在网络数据包处理过程中,比如我只需要访问大批量网络数据包中各个段的头和尾,以及各段中的某些特殊属性值时,将cacheline值设置很小;3、在USB、HDMI、PCI、或者SATA以及一些外设中数据处理以及数据传输过程中,要根据前面一部分数据包的各个段的属性值来决定后面的大批量数据的传输中会涉及到cacheline值的改变;4、在大批量大的音视频文件,以及大的网络数据包的连续传输过程中设置大的cacheline值会很大的提升***的速率和效率。可以看出此结构的cache存在如下好处:可以通过软件或者硬件来决定cacheline的长度,Cacheline长度可以随时切换来适应不同的应用场景提高***指令数据的访问速率,提升***性能。
装置实施例
根据本发明的实施例,提供了一种高速缓冲存储器的高速缓存块长度调整装置,图5是本发明实施例的高速缓冲存储器的高速缓存块长度调整装置的结构示意图,如图5所示,根据本发明实施例的高速缓冲存储器的高速缓存块长度调整装置包括:第一调整模块50、以及第二调整模块52,以下对本发明实施例的各个模块进行详细的说明。
第一调整模块50,用于如果访问的数据或者指令在cache中连续命中失败的次数大于第一预定阈值,则作废并清除cache中所有的cacheline,去使能cache,将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值,并使能cache;
第一调整模块50具体用于:通过硬件自动进行调整的方式将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值;或者,通过软件控制寄存器进行调整的方式将cache中的所有cacheline长度调整为小于当前长度值的第一预设长度值。
需要说明的是,通过软件控制寄存器进行调整的方式也需要硬件能够cacheline长度进行调整,并且需要借助寄存器来预先设置可调整的cacheline长度值,软件通过寄存器来控制cacheline长度的选择。第一调整模块50可以通过寄存器来设置是否启动这个功能。
第二调整模块52,用于如果访问数据或者指令时,在cache中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个cacheline里的数据和指令都会被顺序访问,则作废并清除cache中所有的cacheline,去使能cache,将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值,并使能cache。
第二调整模块52具体用于:通过硬件自动进行调整的方式将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值;或者,通过软件控制寄存器进行调整的方式将cache中的所有cacheline长度调整为大于当前长度值的第二预设长度值。
需要说明的是,通过软件控制寄存器进行调整的方式也需要硬件能够cacheline长度进行调整,并且需要借助寄存器来预先设置可调整的cacheline长度值,软件通过寄存器来控制cacheline长度的选择。第二调整模块52可以通过寄存器来设置是否启动这个功能。
优选地,cache采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
此外,为了保证Cache的基本操作,上述装置还包括:第一处理模块,用于如果存在三个设置为最大cacheline长度的写入缓冲器,则使用三个写入缓冲器支持cache的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;第二处理模块,用于如果三个写入缓冲器没有设置为最大cacheline长度,则使用三个写入缓冲器的低地址空间支持cache的基本操作,其中,三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
以下结合附图,对本发明上述技术方案进行详细说明。
本发明提出了一种根据不同的情况来改变当前cacheline长度的方法,主要包括以下五个方面的内容:
一、如何切换cacheline长度,方法有两种:
方法1、通过硬件来来自动改变长度:当访问的数据或者指令在连续多次(例如5次)命中(hit)失败的情况下,硬件将自动切换当前的cacheline长度改为更小值;当访问数据或者指令时,在连续进行的多次(比如5次)内容填充(linefill)过程中如果发现每次linefill后整个cacheline里面的数据和指令都会被顺序访问,在这种情况下,第一调整模块50通过硬件将自动切换当前的cacheline长度改为更大值,是否启动这个功能可以通过寄存器来设置。
方法2、软件通过寄存器来设置cacheline的长度:当访问的数据或者指令在连续多次(例如5次)命中(hit)失败的情况下,软件通过寄存器切换当前的cacheline长度改为更小值;当访问数据或者指令时,在连续进行的多次(比如5次)行的内容填充(linefill)过程中如果发现每次linefill后整个cacheline里面的数据和指令都会被顺序访问,在这种情况下,第二调整模块52通过软件控制寄存器切换当前的cacheline长度改为更大值,是否启动这个功能可以通过寄存器来设置。
在进行硬件或者软件切换cacheline长度时,需要对cache存放数据或者指令的结构进行调整,cache访问数据时,tag位数会发生改变,其大小为32-n-7,cacheline长度为2nbytes;
例1,表1是32字节长度的cacheline的cache结构,此时n=5;
表1
图3是本发明实施例的32字节长度的cacheline的cache结构示意图,如图3所示,如果Cache大小为32k bytes,则采用32个set,当cacheline大小为32byte,那么每个Set 32个cacheline,也就是32way,如果起始地址为0x0,则way0存放0x00000000~0x000003ff;way1存放0x00000400~0x7ff;……,Way31存放0x7c00~0x7fff。其中,bit[31:13]表示set所在way的首地址,bit[12:5]表示是哪个cacheline,bit[4:2]表示在cacheline中word的偏移地址。
例2,表2为64bytes cacheline长度的结构,此时n=6;
表2
图4是本发明实施例的64字节长度的cacheline的cache结构示意图,在cache中采用组相联的方式来设计cache,如果Cache大小为32k bytes,那么采用32个set,当cacheline大小为64byte,那么每个Set 16个cacheline,也就是32way,如果起始地址为0x0,则way0存放0x00000000~0x000003ff;way1(路1)存放0x00000400~0x7ff;……;Way31存放0x7c00~0x7fff。其中,其中bit[31:14]表示set所在Set的首地址,bit[15:6]表示是哪个cacheline,bit[5:2]表示在cacheline中word(4字节单元)的偏移地址。
根据例1和例2,就可以得出其他其cacheline size的情况的cache的结构组成。
二、硬件将要改变cacheline的长度值后将要做的操作:
步骤1,作废并清除所有的cacheline;
步骤2,去使能(disable)cache;
步骤3,改变cacheline长度;
步骤4,使能(enable)cache.
三、在不同的cacheline长度情况下要支持cache的所有操作,包括作废(inv),写回(clean),写回并作废(invclean),锁定(lockdown)、使能(enable),去使能(disable),以及存储(eviction),并能以当前长度的cacheline为基本单元进行操作:
1、为了能支持cache的这些基本操作,要有3个最大cacheline长度的写入缓冲器(writebuffer),其中包括1个替换写入缓冲器(victim write buffer)、1缓存的行填充缓冲器(cache linefill buffer)、1写缓存填充缓冲器(store buffer);
2、当3个writebuffer的长度不是所能设置的最大长度时,只用低地址空间的部分。
四、cache采用的存放映射关系:在cache中采用组相联的方式来设计cache。
五、cache采用的替换策略:采用伪随机和顺序替换。
需要说明的是,本发明实施例可以支持的cacheline长度要是当前***数据位宽(比如32bits)的整数倍,同时不能使cacheline的长度大于256bytes。有了这样的cache,可以根据自己的程序的结构和数据操作的情况来使用不同长度的cacheline来提高程序执行,数据访问的速度,提高工作的效率,提高cpu与外设的通信速度,改善整个soc的性能。
综上所述,在本发明实施例中,引入了可变cacheline长度的cache的思想,应用场景如下:1、在一些音视频文件处理算法中,比如我只需要访问大量音视频文件,以及各段中的某些特殊属性值时,将cacheline值设置很小;2、在网络数据包处理过程中,比如我只需要访问大批量网络数据包中各个段的头和尾,以及各段中的某些特殊属性值时,将cacheline值设置很小;3、在USB(通用串行总线)、HDMI(高清多媒体接口)、PCI、或者SATA以及一些外设中数据处理以及数据传输过程中,要根据前面一部分数据包的各个段的属性值来决定后面的大批量数据的传输中会涉及到cacheline值的改变;4、在大批量大的音视频文件,以及大的网络数据包的连续传输过程中设置大的cacheline值会很大的提升***的速率和效率。可以看出此结构的cache存在如下好处:可以通过软件或者硬件来决定cacheline的长度,Cacheline长度可以随时切换来适应不同的应用场景提高***指令数据的访问速率,提升***性能。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种高速缓冲存储器的高速缓存块长度调整方法,其特征在于,包括:
如果访问的数据或者指令在高速缓冲存储器中连续命中失败的次数大于第一预定阈值,则作废并清除所述高速缓冲存储器中所有的高速缓存块,去使能所述高速缓冲存储器,将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值,并使能所述高速缓冲存储器;
如果访问数据或者指令时,在所述高速缓冲存储器中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个高速缓存块里的数据和指令都会被顺序访问,则作废并清除所述高速缓冲存储器中所有的高速缓存块,去使能所述高速缓冲存储器,将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值,并使能所述高速缓冲存储器。
2.如权利要求1所述的方法,其特征在于,将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值具体包括:
通过硬件自动进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值;或者,
通过软件控制寄存器进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值。
3.如权利要求1所述的方法,其特征在于,将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值具体包括:
通过硬件自动进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值;或者,
通过软件控制寄存器进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述高速缓冲存储器采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
5.如权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
如果存在三个设置为最大高速缓存块长度的写入缓冲器,则使用所述三个写入缓冲器支持所述高速缓冲存储器的基本操作,其中,所述三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,所述基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;
如果所述三个写入缓冲器没有设置为最大高速缓存块长度,则使用所述三个写入缓冲器的低地址空间支持所述高速缓冲存储器的基本操作,其中,所述三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,所述基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
6.一种高速缓冲存储器的高速缓存块长度调整装置,其特征在于,包括:
第一调整模块,用于如果访问的数据或者指令在高速缓冲存储器中连续命中失败的次数大于第一预定阈值,则作废并清除所述高速缓冲存储器中所有的高速缓存块,去使能所述高速缓冲存储器,将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值,并使能所述高速缓冲存储器;
第二调整模块,用于如果访问数据或者指令时,在所述高速缓冲存储器中连续进行内容填充的次数大于第二预定阈值且每次进行内容填充后整个高速缓存块里的数据和指令都会被顺序访问,则作废并清除所述高速缓冲存储器中所有的高速缓存块,去使能所述高速缓冲存储器,将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值,并使能所述高速缓冲存储器。
7.如权利要求6所述的装置,其特征在于,所述第一调整模块具体用于:
通过硬件自动进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值;或者,
通过软件控制寄存器进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为小于当前长度值的第一预设长度值。
8.如权利要求6所述的装置,其特征在于,所述第二调整模块具体用于:
通过硬件自动进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值;或者,
通过软件控制寄存器进行调整的方式将所述高速缓冲存储器中的所有高速缓存块长度调整为大于当前长度值的第二预设长度值。
9.如权利要求6至8中任一项所述的装置,其特征在于,所述高速缓冲存储器采用组相联的存放映射关系,并采用伪随机和顺序替换的替换策略。
10.如权利要求6至8中任一项所述的装置,其特征在于,所述装置还包括:
第一处理模块,用于如果存在三个设置为最大高速缓存块长度的写入缓冲器,则使用所述三个写入缓冲器支持所述高速缓冲存储器的基本操作,其中,所述三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,所述基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换;
第二处理模块,用于如果所述三个写入缓冲器没有设置为最大高速缓存块长度,则使用所述三个写入缓冲器的低地址空间支持所述高速缓冲存储器的基本操作,其中,所述三个写入缓冲器包括:一个替换写缓冲器、一个写回缓冲器、以及一个存储缓冲器,所述基本操作包括:作废、写回、作废写回、锁定、使能、去使能、以及替换。
CN201210396334.6A 2012-10-18 2012-10-18 高速缓冲存储器的高速缓存块长度调整方法及装置 Active CN103778069B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201210396334.6A CN103778069B (zh) 2012-10-18 2012-10-18 高速缓冲存储器的高速缓存块长度调整方法及装置
US14/436,976 US20150269027A1 (en) 2012-10-18 2013-09-26 Method and device for adjusting cacheline length of cache
JP2015537128A JP6001185B2 (ja) 2012-10-18 2013-09-26 キャッシュのキャッシュライン長を調整する方法及び装置
EP13846714.7A EP2911062A4 (en) 2012-10-18 2013-09-26 METHOD AND DEVICE FOR ADJUSTING A CACHE BLOCK LENGTH OF A CACHE MEMORY
KR1020157013023A KR20150076200A (ko) 2012-10-18 2013-09-26 캐시의 캐시 라인 길이 조절 방법 및 장치
PCT/CN2013/084369 WO2014059869A1 (zh) 2012-10-18 2013-09-26 高速缓冲存储器的高速缓存块长度调整方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210396334.6A CN103778069B (zh) 2012-10-18 2012-10-18 高速缓冲存储器的高速缓存块长度调整方法及装置

Publications (2)

Publication Number Publication Date
CN103778069A CN103778069A (zh) 2014-05-07
CN103778069B true CN103778069B (zh) 2017-09-08

Family

ID=50487557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210396334.6A Active CN103778069B (zh) 2012-10-18 2012-10-18 高速缓冲存储器的高速缓存块长度调整方法及装置

Country Status (6)

Country Link
US (1) US20150269027A1 (zh)
EP (1) EP2911062A4 (zh)
JP (1) JP6001185B2 (zh)
KR (1) KR20150076200A (zh)
CN (1) CN103778069B (zh)
WO (1) WO2014059869A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214244A (zh) * 2016-08-05 2021-01-12 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
US10664405B2 (en) * 2017-11-03 2020-05-26 Google Llc In-memory distributed cache
US11294808B2 (en) * 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
CN112711383B (zh) * 2020-12-30 2022-08-26 浙江大学 用于电力芯片的非易失性存储读取加速方法
CN113778912B (zh) * 2021-08-25 2024-05-07 深圳市中科蓝讯科技股份有限公司 cache映射架构动态调整方法及cache控制器
CN113805814B (zh) * 2021-09-22 2023-08-15 深圳宏芯宇电子股份有限公司 缓存管理方法、装置、存储设备和可读存储介质
US20240028512A1 (en) * 2022-07-25 2024-01-25 Samsung Electronics Co., Ltd. Adaptive cache indexing for a storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1232911C (zh) * 2002-10-09 2005-12-21 凌阳科技股份有限公司 可适应性存取指令与资料的方法与架构
CN102591799A (zh) * 2011-12-30 2012-07-18 华为技术有限公司 一种存放数据的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
JPH03144750A (ja) * 1989-10-31 1991-06-20 Pfu Ltd キャッシュメモリ制御方式
US5257360A (en) * 1990-03-23 1993-10-26 Advanced Micro Devices,Inc. Re-configurable block length cache
US5465342A (en) * 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
JP2002163150A (ja) * 2000-11-28 2002-06-07 Toshiba Corp プロセッサ
JP2004259109A (ja) * 2003-02-27 2004-09-16 Toshiba Corp マイクロプロセッサ及びキャッシュ制御方法
US7464246B2 (en) * 2004-09-30 2008-12-09 International Business Machines Corporation System and method for dynamic sizing of cache sequential list
JP4378386B2 (ja) * 2007-02-26 2009-12-02 富士通株式会社 キャッシュウェイ縮退監視装置、キャッシュウェイ縮退監視方法およびキャッシュウェイ縮退監視プログラム
US8549208B2 (en) * 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
US8285936B2 (en) * 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US8631198B2 (en) * 2010-08-06 2014-01-14 Seagate Technology Llc Dynamic cache reduction utilizing voltage warning mechanism
CN102521149B (zh) * 2011-11-28 2014-08-27 曙光信息产业(北京)有限公司 一种从多缓冲区收取数据的优化轮询***和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1232911C (zh) * 2002-10-09 2005-12-21 凌阳科技股份有限公司 可适应性存取指令与资料的方法与架构
CN102591799A (zh) * 2011-12-30 2012-07-18 华为技术有限公司 一种存放数据的方法和装置

Also Published As

Publication number Publication date
EP2911062A4 (en) 2015-10-14
WO2014059869A1 (zh) 2014-04-24
JP6001185B2 (ja) 2016-10-05
JP2015532496A (ja) 2015-11-09
KR20150076200A (ko) 2015-07-06
CN103778069A (zh) 2014-05-07
US20150269027A1 (en) 2015-09-24
EP2911062A1 (en) 2015-08-26

Similar Documents

Publication Publication Date Title
CN103778069B (zh) 高速缓冲存储器的高速缓存块长度调整方法及装置
JP6514569B2 (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
KR102510384B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
CN104346294B (zh) 基于多级缓存的数据读/写方法、装置和计算机***
US7861055B2 (en) Method and system for on-chip configurable data ram for fast memory and pseudo associative caches
CN102804152B (zh) 对存储器层次结构中的闪存的高速缓存一致性支持
JP3880581B2 (ja) キャッシュのロックを使用するストリーミング・データ
US9563568B2 (en) Hierarchical cache structure and handling thereof
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
US20100281219A1 (en) Managing cache line allocations for multiple issue processors
US20030126369A1 (en) Cache memory eviction policy for combining write transactions
US20170083444A1 (en) Configuring fast memory as cache for slow memory
EP2866148B1 (en) Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
US7493453B2 (en) System, method and storage medium for prefetching via memory block tags
CN1849591A (zh) 使用高速缓存未命中模式来寻址跨距预测表
US7555610B2 (en) Cache memory and control method thereof
US20070106846A1 (en) Adaptive replacement cache
US20140143498A1 (en) Methods and apparatus for filtering stack data within a cache memory hierarchy
US9053030B2 (en) Cache memory and control method thereof with cache hit rate
CN111124955B (zh) 一种高速缓存控制方法及设备和计算机存储介质
WO2010098152A1 (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
KR100481943B1 (ko) 시간적·공간적 지역성을 향상시키고 플레쉬 메모리장치로의 접근 횟수를 줄이는 플레쉬 메모리 시스템 및데이터 억세스 방법
JPH04369061A (ja) キャッシュメモリの制御方式
TW201527977A (zh) 資料處理裝置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20140507

Assignee: Xi'an Chris Semiconductor Technology Co. Ltd.

Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Contract record no.: 2019440020036

Denomination of invention: High-speed cache block length adjusting method and device of high-speed cache memory

Granted publication date: 20170908

License type: Common License

Record date: 20190619