CN104536911A - 一种多路组相联的高速缓冲存储器及其处理方法 - Google Patents

一种多路组相联的高速缓冲存储器及其处理方法 Download PDF

Info

Publication number
CN104536911A
CN104536911A CN201410856634.7A CN201410856634A CN104536911A CN 104536911 A CN104536911 A CN 104536911A CN 201410856634 A CN201410856634 A CN 201410856634A CN 104536911 A CN104536911 A CN 104536911A
Authority
CN
China
Prior art keywords
inquiry request
streamline
cache memory
indication information
address
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
CN201410856634.7A
Other languages
English (en)
Other versions
CN104536911B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410856634.7A priority Critical patent/CN104536911B/zh
Publication of CN104536911A publication Critical patent/CN104536911A/zh
Priority to PCT/CN2015/086526 priority patent/WO2016107182A1/zh
Priority to US15/637,805 priority patent/US10152420B2/en
Application granted granted Critical
Publication of CN104536911B publication Critical patent/CN104536911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/6022Using a prefetch buffer or dedicated prefetch cache

Landscapes

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

Abstract

本发明公开了一种多路组相联的高速缓冲存储器及其处理方法。包括:M条流水线、控制器和数据存储器,任一流水线包括仲裁电路、标签存储器和判断电路;仲裁电路在第N时刻接收至少一个查询请求,从至少一个查询请求中确定出第一查询请求;标签存储器根据第一索引地址,对自身存储的标签信息进行查询,以获取与第一索引地址对应的至少一个目标标签地址;判断电路判断至少一个目标标签地址中是否存在与第一标签地址相匹配的地址;当不存在与第一标签地址相匹配的地址时,控制器将第一查询请求发给下一级设备或其它流水线处理;每条流水线的标签存储器的标签信息各不相同且M条流水线各自的标签存储器的标签信息为高速缓冲存储器的标签信息的子集。

Description

一种多路组相联的高速缓冲存储器及其处理方法
技术领域
本发明涉及计算机技术领域,特别涉及一种多路组相联的高速缓冲存储器(Cache)及其处理方法。
背景技术
为了提高中央处理器(Central Processing Unit,CPU)系统的性能,通常会采用Cache结构来缓存最近经常使用的一些指令或数据,这样,每次取指令、或者进行数据操作时,就不需要都访问内存了,从而大大降低了操作的延迟,典型的CPU系统如图1所示。距离CPU最近的是第一级Cache(Level 1Cache,L1Cache),其访问速度最快,但容量一般不大;L1Cache的外围设置L2Cache,其访问速度比L1Cache稍慢,但容量明显增加;大型的多核CPU系统中还会有L3Cache,甚至L4Cache;在最后一级Cache(LLC,Last Level Cache)的下游,才是通常所说的内存(Memory),其访问速度相对各级Cache会慢很多,但是容量大了很多。
CPU发出的请求(Request)主要分为两大类,一是取指令的操作,二是数据操作。取指令操作表现为读操作,数据操作表现为读操作和写操作。不论是读操作还是写操作,请求中都会携带有地址信息。CPU先把请求发往第一级Cache;第一级Cache根据请求的地址信息判断出该请求的数据是否存在于第一级Cache中,若存在,直接在第一级Cache中完成操作,若不存在,第一级Cache将请求发往下一级存储器(可能是下一级Cache或者内存)。
Cache的结构主要有三种:直接映射、全相联和组相联。其中应用最广泛的是组相联结构,典型的组相联Cache结构如图2所示。以收到一个读请求为例,处理过程如下:首先,根据该读请求的地址信息中的索引(Index)域段找到一个组(Set),其中,每个Set包括若干条路(Way),每条Way都可能存有请求的数据;然后,将请求地址中的标签(Tag)域段与每条Way中存的Tag信息进行比较,若出现相等,则表示命中(Hit)了某条Way,该Way中存有请求的数据;若未出现相等,则表示发生了未命中(Miss),该级Cache中并不含有请求的数据,需要将请求发往下一级存储器。
在大容量Cache结构的设计中,为了降低功耗,一般是采用先查Tag Ram(Random-Access Memory,随机存取存储器)进行Hit/Miss判断,根据查询结果再决定是否读取Data Ram的方式。为了提高吞吐率,查询Tag Ram一般是采用流水线结构。目前常采用如下方式:
将所有Tag Ram作为一条流水线,每个时钟周期内接收一个查询请求,在对查询请求进行Tag查询时,同时访问某一个Index中所有的way的信息,读出后一起进行Hit/Miss判断。流水线每个时钟周期都能接收一个查询请求,每个时钟周期都可以翻转。当Cache的路数越来越多时,上述方式存在以下两方面的问题:1)查询需要并行访问的Tag Ram越多,判断Hit/Miss的逻辑复杂度越高,使得处理效率低;2)由于需要同时翻转的Tag Ram数量较多,会造成峰值功耗的增加。
发明内容
本发明提供了一种多路组相联的高速缓冲存储器及其处理方法,解决了现有多路组相联的高速缓冲存储器中存在的处理效率低,峰值功耗大的问题。
第一方面,一种多路组相联的高速缓冲存储器,该高速缓冲存储器包括:M条流水线、控制器以及数据存储器,M为大于等于2的正整数,其中任一流水线包括执行流水处理的仲裁电路、标签存储器和判断电路;所述任一流水线中:
所述仲裁电路,用于在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
所述标签存储器,用于根据所述第一索引地址,对自身存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址并发送给所述判断电路;
所述判断电路,用于判断所述至少一个目标标签地址中是否存在与所述第一标签地址相匹配的地址;
所述控制器,用于当所述判断电路判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,每条流水线的标签存储器所存储的标签信息各不相同,且所述M条流水线各自的标签存储器存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器中的各个存储块一一对应。
结合第一方面,在第一种可能的实现方式中,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中的标签存储器所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
结合第一方面,在第二种可能的实现方式中,当所述判断电路判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,所述控制器用于:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述控制器判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,所述控制器还用于:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,若所述第一查询请求中未携带所述指示信息,所述控制器还用于:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
结合第一方面、或者第一方面的第一种至第五种可能的实现方式中的任一方式,在第六种可能的实现方式中,所述控制器还用于:
当所述判断电路判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器中与所述第一目标地址相对应的存储块里读取数据。
结合第一方面、或者第一方面的第一种至第六种可能的实现方式中的任一方式,在第七种可能的实现方式中,若M等于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求;
当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
结合第一方面、或者第一方面的第一种至第六种可能的实现方式中的任一方式,在第八种可能的实现方式中,若M大于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
结合第一方面的第七种可能的实现方式、或者第一方面的第八种可能的实现方式,在第九种可能的实现方式中,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
结合第一方面、或者第一方面的第一种至第九种可能的实现方式中的任一方式,在第十种可能的实现方式中,所述高速缓冲存储器还包括:
使能电路,用于在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路接收所述至少一个查询请求。
第二方面,一种多路组相联的高速缓冲存储器的处理方法,所述高速缓冲存储器包括M条流水线,M为大于等于2的正整数,任一条流水线的处理方法包括:
在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
根据所述第一索引地址,对本地存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址;
当判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,所述M条流水线各自存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述高速缓冲存储器中的数据存储器中的各个存储块一一对应。
结合第二方面,在第一种可能的实现方式中,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
结合第二方面,在第二种可能的实现方式中,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理,包括:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,若所述第一查询请求中未携带所述指示信息,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
结合第二方面、或者第二方面的第一种至第五种可能的实现方式中的任一方式,在第六种可能的实现方式中,该方法还包括:
当判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器中与所述第一目标地址相对应的存储块里读取数据。
结合第二方面、或者第二方面的第一种至第六种可能的实现方式中的任一方式,在第七种可能的实现方式中,若M等于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求;
当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
结合第二方面、或者第二方面的第一种至第六种可能的实现方式中的任一方式,在第八种可能的实现方式中,若M大于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
结合第二方面的第七种可能的实现方式、或者第二方面的第八种可能的实现方式,在第九种可能的实现方式中,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
结合第二方面、或者第二方面的第一种至第九种可能的实现方式中的任一方式,在第十种可能的实现方式中,该方法还包括:
在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路接收所述至少一个查询请求。
本发明提供的多路组相联的高速缓冲存储器及其处理方法中,高速缓冲存储器包括M条流水线,M为大于等于2的正整数,由于在第N时刻仅有一条流水线处理接收到的查询请求,从而降低了系统功耗;另外,每条流水线的标签存储器所存储的标签信息各不相同,且所述M条流水线各自的标签存储器存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器中的各个存储块一一对应,由于各条流水线的标签存储器分别存储了所属的高速缓冲存储器所存储的标签信息,实现了各条流水线并行进行查询的方式,节省了查询时间,提高了系统吞吐率。
附图说明
图1为CPU系统的结构示意图;
图2为现有组相联结构的高速缓冲存储器的结构示意图;
图3为本发明提供的一种多路组相联的高速缓冲存储器的示意图;
图4为现有高速缓冲存储器中各个组与主存的存储块之间的映射关系的示意图;
图5为本发明提供的高速缓冲存储器的各条流水线的标签存储器与主存的存储块之间的映射关系的示意图;
图6为本发明提供的实施例一的示意图;
图7为本发明提供的实施例一的处理时序图;
图8为本发明提供的一种多路组相联的高速缓冲存储器的处理方法的示意图。
具体实施方式
本发明实施例提供的高速缓冲存储器包括M条流水线,M为大于等于2的正整数,由于在第N时刻仅有一条流水线处理接收到的查询请求,从而降低了系统功耗;本发明实施例中,每条流水线的标签存储器所存储的标签信息各不相同,且所述M条流水线各自的标签存储器存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器中的各个存储块一一对应,由于各条流水线的标签存储器分别存储了所属的高速缓冲存储器所存储的标签信息,实现了各条流水线并行进行查询的方式,节省了查询时间,提高了系统吞吐率。
下面结合说明书附图对本发明实施例作进一步详细描述。应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
如图3所示,本发明实施例提供的一种多路组相联的高速缓冲存储器(Cache),包括:M条流水线、控制器34以及数据存储器35,M为大于等于2的正整数,其中任一流水线包括执行流水处理的仲裁电路31、标签(Tag)存储器32和判断电路33;所述任一流水线中:
所述仲裁电路31,用于在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
所述标签存储器32,用于根据所述第一索引地址,对自身存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址并发送给所述判断电路;
所述判断电路33,用于判断所述至少一个目标标签地址中是否存在与所述第一标签地址相匹配的地址;
所述控制器34,用于当所述判断电路33判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,每条流水线的标签存储器32所存储的标签信息各不相同,且所述M条流水线各自的标签存储器32存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器35中的各个存储块一一对应。
本发明实施例以M条流水线中的任一条流水线的处理过程为例进行说明,其它流水线的处理过程类似,此处不再赘述。
本发明实施例中,所述至少一个查询请求为读/写操作。
本发明实施例提供的Cache包括M条流水线、控制器以及数据存储器,M为大于等于2的正整数,由于在第N时刻仅有一条流水线处理接收到的查询请求,从而降低了系统功耗;本发明实施例中,每条流水线的标签存储器所存储的标签信息各不相同,且所述M条流水线各自的标签存储器存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器中的各个存储块一一对应,由于各条流水线的标签存储器分别存储了所属的高速缓冲存储器所存储的标签信息,实现了各条流水线并行进行查询的方式,节省了查询时间,提高了系统吞吐率。
需要说明的是,在第N时刻,仅有一条流水线能够读取查询请求,每条流水线的标签存储器在自身能够读取查询请求的时钟周期的上升沿或下降沿进行读取处理。但是,每条流水线在其能够读取查询请求的时钟周期内,可以读取查询请求,也可以不读取查询请求。若在第N时刻,该标签存储器中已有正在进行处理的查询请求,则在该第N时刻,可以将正在处理的查询请求从当前处理阶段输送至下一个处理阶段。
其中,每条流水线中,对查询请求进行的处理依次包括以下处理阶段(Stage):Ram输入Stage、Ram访问Stage、Ram输出Stage、以及Hit/Miss判断Stage等。实现时,可能会根据具体情况做适当调整。比如,在时序不紧张时,任何连续的两个Stage可以合并为一个Stage;又如,在时序紧张时,任何一个Stage也可以拆分成多个Stage。
为了进一步降低功耗,只有在每条流水线的仲裁电路入口有查询请求进入或者该条流水线的标签存储器中有查询请求正在处理时,该条流水线的仲裁电路才会进行仲裁处理。
本发明实施例中,每条流水线中的标签存储器中包含的标签信息的数量可以相同,也可以不同。作为一种优选的实现方式,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中的标签存储器所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
现有的组相联Cache架构如图4所示,该架构使用了几组(set)直接映像的块,各个组与主存(Memory)的存储块之间存在映射关系,可以根据Cache的各个组与主存的存储块之间的映射关系,将主存中的一部分数据放到Cache的某个组中的任意位置。例如,主存中0、4、8、12的存储块对应Cache中的组1,则主存中的这些块包含的数据,可以放到Cache的组1中的任意一个位置。CPU访问Cache是通过查找目录表来实现的,即Cache中设有一个目录表,该表所包含的项数与Cache的块数相同,每一项对应于Cache中的一个块,当一个主存块被调入Cache中某一个块位置时,它的标识就被填入目录表中与该Cache块相对应的项中,并且该项的有效位置被“1”。
而本发明实施例的组相联Cache架构中,包括至少两条流水线,且每条流水线包括一个标签存储器(Tag Ram),每条流水线的标签存储器所存储的标签信息为该Cache所存储的标签信息的一个子集。以Cache中包括两条流水线为例,如图5所示,Cache所存储的标签信息分成多个组,再对多个组中的标签信息进行均分,然后得到两个集合,每条流水线的标签存储器对应一个集合,即Tag Ram1中包括组1中的块0、组2中的块2、组3中的块4和组4中的块6,Tag Ram2中包括组1中的块1,组2中的块3,组3中的块5和组4中的块7。两个Tag Ram中分别存储的标签信息为Cache所存储的标签信息的全集。在进行查询时,可以根据查询请求中的索引(index)域信息,先确定是哪个组(way),确定组之后,再比较查询地址中的标签(tag)信息与选中的组中的tag信息是否匹配;若匹配,则根据这个查询地址在数据存储器(Data Ram)中读取数据;若不匹配,则将该查询请求发给其他流水线进行查询处理,若每条流水线的查询结果均为未命中,说明该Cache中不存在该查询请求所需数据,则发给下一级设备处理。由于各条流水线的标签存储器分别存储了所属的高速缓冲存储器所存储的标签信息,实现了各条流水线并行进行查询的方式,节省了查询时间,提高了系统吞吐率。
在实施中,所述控制器34还用于:当所述判断电路33判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器35中与所述第一目标地址相对应的存储块里读取数据。
在实施中,当所述判断电路33判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,所述控制器34用于:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
具体的,若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则所述控制器34可以按照预设的优先级,将在第N+1时刻将所述第一查询请求发给所述至少一条流水线中优先级最高的流水线进行处理;或者,所述控制器34可以所述至少一条流水线的编号信息,将在第N+1时刻将所述第一查询请求发给所述至少一条流水线中编号最小(或最大)的流水线进行处理。当然,所述控制器34也可以采用其它方式将将所述第一查询请求发给所述至少一条流水线中的任意一条进行处理,本发明实施例不对此进行限定。
在实施中,所述控制器34判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
具体的,若所述高速缓冲存储器中仅包括两条流水线,则所述指示信息的具体实现包括以下三种方式:所述第一查询请求被处理的次数;处理过所述第一查询请求的流水线的标识信息;以及所述第一查询请求被处理的次数和处理过所述第一查询请求的流水线的标识信息的组合。
若所述高速缓冲存储器中包括两条以上流水线,则所述指示信息的具体实现包括以下两种方式:处理过所述第一查询请求的流水线的标识信息;以及所述第一查询请求被处理的次数和处理过所述第一查询请求的流水线的标识信息的组合。
在实施中,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,所述控制器34还用于:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
具体的,由于所述任一流水线已处理了所述第一查询请求,因此,所述控制器34还需要更新所述第一查询请求的指示信息的内容。具体为:若所述指示信息中包括所述第一查询请求已被处理的次数,则所述控制器34将所述第一查询请求已被处理的次数加1;若所述指示信息中包括处理过所述第一查询请求的所述任一流水线的标识信息,则所述控制器34将所述任一流水线的标识信息添加至所述指示信息中。
在实施中,若所述第一查询请求中未携带所述指示信息,所述控制器34还用于:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
具体的,若所述第一查询请求中未携带所述指示信息,则说明所述第一查询请求是首次处理(如该第一查询请求来自上游设备),该情况下,所述控制器34将所述第一查询请求发送给所述其它流水线处理时,需要在所述第一查询请求中增加所述指示信息。
基于上述任一实施例,若M等于2(即所述高速缓冲存储器包括两条流水线),所述预设的仲裁策略包括以下三种处理方式:
一、当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求。
该方式下,所述至少一个查询请求仅包括来自上游设备的查询请求,此时,只需要将该查询请求作为所述第一查询请求进行处理即可。
二、当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求。
该方式下,所述至少一个查询请求仅包括来自所述其他流水线的查询请求,此时,只需要将该查询请求作为所述第一查询请求进行处理即可。
三、当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
该方式下,对于来自上游设备发送的查询请求和所述其它流水线发送的查询请求,所述其它流水线发送的查询请求的优先级高于所述上游设备发送的查询请求的优先级,因此,先处理所述其它流水线发送的查询请求,并缓存所述上游设备发送的查询请求。
该方式下,对于已缓存的查询请求,所述控制器34可以在第N+M时刻,读取已缓存的查询请求,并将已缓存的查询请求作为所述第一查询请求。
基于上述任一实施例,若M大于2(即所述高速缓冲存储器包括三条及三条以上的流水线),所述预设的仲裁策略包括以下两种处理方式:
一、当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求。
该方式下,预先的流水线的优先级可以是按照各条流水线的编号顺序设定,例如,流水线的编号越小,其优先级越高;又如,流水线的编号越大,其优先级越高。本发明实施例不对各条流水线的优先级的设定规则进行限定。
该方式下,对于已缓存的查询请求,所述控制器34可以在第N+i×M时刻,按照已缓存的查询请求对应的优先级依次读取已缓存的查询请求,并将所读取的查询请求作为所述第一查询请求,i为自然数。
二、所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
该方式下,所述其它流水线发送的查询请求的优先级高于所述上游设备发送的查询请求的优先级;所述其它流水线发送的查询请求中,流水线的优先级越高,其发送的查询请求的优先级越高。
该方式下,对于已缓存的查询请求,所述控制器34可以在第N+i×M时刻,按照已缓存的查询请求对应的优先级依次读取已缓存的查询请求,并将所读取的查询请求作为所述第一查询请求,i为自然数。
基于上述任一方式,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
基于上述任一实施例,所述高速缓冲存储器还包括:
使能电路36,用于在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路31接收所述至少一个查询请求。
本发明实施例中,所述上游设备为:与所述高速缓冲存储器连接的处理器、或者与所述高速缓冲存储器连接的上一级高速缓冲存储器。
本发明实施例中,所述下一级设备为:与所述高速缓冲存储器连接的主内存、或者与所述高速缓冲存储器连接的下一级高速缓冲存储器。
下面以Cache中包含两条流水线(记为Pipeline0和Pipeline1)为例,对本发明实施例提供的一种多路组相联的高速缓冲存储器的处理过程进行说明。
实施例一、本实施例中,每个时钟周期有且只有一条流水线能够读取接收到的查询请求。具体过程如下:
1、将Cache中所有的标签信息分成两个子集,分别存储在两条流水线的标签存储器中(Pipeline0的标签存储器记为标签存储器1,Pipeline1的标签存储器记为标签存储器2),如图6所示。
2、设置一个位宽为1bit的循环计数器(图6中的RC,Ring Counter),即使能电路。复位撤离后,RC开始循环计数,0和1交替变化。其中,RC的计数为0代表Pipeline0可以翻转(即Pipeline0可以读取接收到的查询请求),此时,RC可以触发Pipeline0中的仲裁电路接收查询请求;RC的计数为1代表Pipeline1可以翻转(即Pipeline1可以读取接收到的查询请求),此时,RC可以触发Pipeline1中的仲裁电路接收查询请求。
需要说明的是,RC的计数值表示当前可以翻转的流水线,但该流水线不一定翻转。为了进一步降低功耗,只有在流水线的仲裁电路入口有查询请求进入或者该条流水线的标签存储器中有查询请求正在处理时,该条流水线才会翻转。
3、每条流水线中的仲裁电路既可以接收上游设备的查询请求,也可以接收从其它流水线发送的查询请求。仲裁电路的仲裁策略是:当只有一路存在查询请求时,直接处理该查询请求;当两路查询请求同时存在时,缓存上游设备的查询请求,优先处理另一条流水线发送的查询请求。
4、首次处理该查询请求的流水线中的判断电路得出查询结果后,控制器根据该判断电路的查询结果选择后续处理流程:如果Hit(命中),则可以根据该查询请求的地址信息,从该Cache的Data Memory中进行读/写操作;如果Miss(未命中),则在第N+1时刻将该查询请求发送给另一条流水线进行处理,处理时序图如图7所示。
图7中,对于查询请求i(req i),在第一个时钟脉冲到来的时刻,进入第一条流水线(Pipeline0)进行处理,若Pipeline0中的判断电路查询结果为Miss(未命中),则送入第二条流水线(Pipeline1)进行处理;对于查询请求i+1(reqi+1),在第二个时钟脉冲到来的时刻,进入Pipeline1进行处理,若Pipeline1中的判断电路查询结果为Miss(未命中),则送入Pipeline0进行处理;对于查询请求i+2(req i+2),在第三个时钟脉冲到来的时刻,进入Pipeline0进行处理;对于查询请求i+3(req i+3),在第四个时钟脉冲到来的时刻,进入Pipeline1进行处理;对于查询请求i+4(req i+4),在第三个时钟脉冲到来的时刻,进入流Pipeline0进行处理。需要说明的是,图7中的每个方框中的数字1、2、3分别表示处理过程中的每一个Stage。
基于同一发明构思,本发明实施例还提供了一种多路组相联的高速缓冲存储器的处理方法,所述高速缓冲存储器包括M条流水线,M为大于等于2的正整数,如图8所示,任一条流水线的处理方法包括:
S81、在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
S82、根据所述第一索引地址,对本地存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址;
S83、当判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,每条流水线中所存储的标签信息各不相同,且所述M条流水线各自存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述高速缓冲存储器中的数据存储器中的各个存储块一一对应。
作为一种优选的实现方式,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
在实施中,S83中,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理,包括:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
进一步,判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
在实施中,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
在实施中,若所述第一查询请求中未携带所述指示信息,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
基于上述任一实施例,该方法还包括:
当判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器中与所述第一目标地址相对应的存储块里读取数据。
基于上述任一实施例,若M等于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求;
当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
基于上述任一实施例,若M大于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
进一步,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
基于上述任一实施例,该方法还包括:
在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路接收所述至少一个查询请求。
上述方法处理流程可以用软件程序实现,该软件程序可以存储在存储介质中,当存储的软件程序被调用时,执行上述方法步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (22)

1.一种多路组相联的高速缓冲存储器,其特征在于,该高速缓冲存储器包括:M条流水线、控制器以及数据存储器,M为大于等于2的正整数,其中任一流水线包括执行流水处理的仲裁电路、标签存储器和判断电路;所述任一流水线中:
所述仲裁电路,用于在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
所述标签存储器,用于根据所述第一索引地址,对自身存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址并发送给所述判断电路;
所述判断电路,用于判断所述至少一个目标标签地址中是否存在与所述第一标签地址相匹配的地址;
所述控制器,用于当所述判断电路判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,每条流水线的标签存储器所存储的标签信息各不相同,且所述M条流水线各自的标签存储器存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述数据存储器中的各个存储块一一对应。
2.如权利要求1所述的高速缓冲存储器,其特征在于,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中的标签存储器所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
3.如权利要求1所述的高速缓冲存储器,其特征在于,当所述判断电路判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,所述控制器用于:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
4.如权利要求3所述的高速缓冲存储器,其特征在于,所述控制器判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
5.如权利要求4所述的高速缓冲存储器,其特征在于,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,所述控制器还用于:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
6.如权利要求4所述的高速缓冲存储器,其特征在于,若所述第一查询请求中未携带所述指示信息,所述控制器还用于:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
7.如权利要求1~6任一项所述的高速缓冲存储器,其特征在于,所述控制器还用于:
当所述判断电路判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器中与所述第一目标地址相对应的存储块里读取数据。
8.如权利要求1~7任一项所述的高速缓冲存储器,其特征在于,若M等于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求;
当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
9.如权利要求1~7任一项所述的高速缓冲存储器,其特征在于,若M大于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
10.如权利要求8或9所述的高速缓冲存储器,其特征在于,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
11.如权利要求1~10任一项所述的高速缓冲存储器,其特征在于,所述高速缓冲存储器还包括:
使能电路,用于在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路接收所述至少一个查询请求。
12.一种多路组相联的高速缓冲存储器的处理方法,其特征在于,所述高速缓冲存储器包括M条流水线,M为大于等于2的正整数,任一条流水线的处理方法包括:
在第N时刻接收至少一个查询请求,根据预设的仲裁策略,从所述至少一个查询请求中确定出第一查询请求,其中,N为正整数,所述第一查询请求携带有第一索引地址和第一标签地址;
根据所述第一索引地址,对本地存储的标签信息进行查询,以获取与所述第一索引地址对应的至少一个目标标签地址;
当判断出所述至少一个目标标签地址中不存在与所述第一标签地址相匹配的地址时,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理;
其中,所述M条流水线各自存储的标签信息为所述高速缓冲存储器的标签信息的子集,所述高速缓冲存储器的各个标签信息与所述高速缓冲存储器中的数据存储器中的各个存储块一一对应。
13.如权利要求12所述的方法,其特征在于,所述高速缓冲存储器的标签信息划分为至少两个组,每条流水线中所存储的标签信息是将所述高速缓冲存储器各个组内的标签信息按照流水线的总数M平分后得到的。
14.如权利要求12所述的方法,其特征在于,将所述第一查询请求发给下一级设备或者除所述任一流水线之外的其它流水线进行处理,包括:
判断所述其它流水线是否已处理过所述第一查询请求;
若所述其它流水线均已处理过所述第一查询请求,则将所述第一查询请求发给下一级设备进行处理;
若所述其它流水线中至少一条流水线未处理过所述第一查询请求,则在第N+1时刻将所述第一查询请求发给未处理过所述第一查询请求的所述至少一条流水线中的任意一条进行处理。
15.如权利要求14所述的方法,其特征在于,判断所述其它流水线是否已处理过所述第一查询请求,包括:
检测所述第一查询请求中是否携带有指示信息,其中,所述指示信息中包括:所述第一查询请求被处理的次数、和/或处理过所述第一查询请求的流水线的标识信息;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理过M-1次,则确定所述其它流水线均已处理过所述第一查询请求;
若所述第一查询请求中携带有所述指示信息,且所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,则确定所述其它流水线中存在未处理过所述第一查询请求的所述至少一条流水线;
若所述第一查询请求中未携带所述指示信息,则确定所述其它流水线未处理过所述第一查询请求。
16.如权利要求15所述的方法,其特征在于,若所述指示信息指示所述第一查询请求已被处理的次数小于M-1次,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,更新所述指示信息中的所述第一查询请求已被处理的次数、和/或将所述任一流水线的标识信息更新到所述指示信息中。
17.如权利要求15所述的方法,其特征在于,若所述第一查询请求中未携带所述指示信息,该方法还包括:
将所述第一查询请求发送给所述其它流水线处理时,携带用于指示所述第一查询请求为首次处理、和/或指示处理过所述第一查询请求的所述任一流水线的标识信息的指示信息。
18.如权利要求12~17任一项所述的方法,其特征在于,该方法还包括:
当判断出所述至少一个目标标签地址中存在与所述第一标签地址相匹配的第一目标地址时,根据所述第一目标地址,从所述数据存储器中与所述第一目标地址相对应的存储块里读取数据。
19.如权利要求12~18任一项所述的方法,其特征在于,若M等于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括上游设备发送的查询请求时,将所述上游设备发送的查询请求作为所述第一查询请求;
当所述至少一个查询请求中仅包括所述其它流水线发送的查询请求时,将接收到的查询请求作为所述第一查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的查询请求时,将所述其它流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备发送的查询请求。
20.如权利要求12~18任一项所述的方法,其特征在于,若M大于2,所述预设的仲裁策略包括:
当所述至少一个查询请求中仅包括所述其它流水线发送的至少两个查询请求时,则根据预设的流水线的优先级,将所述其它流水线中优先级最高的流水线所发送的查询请求作为所述第一查询请求,并缓存其余的查询请求;
当所述至少一个查询请求中包括上游设备发送的查询请求和所述其它流水线发送的至少两个查询请求时,将所述其它流水线中优先级最高的流水线发送的查询请求作为所述第一查询请求,并缓存所述上游设备和所述其它流水线中除优先级最高的流水线之外的流水线发送的查询请求。
21.如权利要求19或20所述的方法,其特征在于,所述预设的仲裁策略还包括:
当所述至少一个查询请求中还包括已缓存的查询请求时,将所述至少一个查询请求中优先级最高的流水线发送查询请求作为所述第一查询请求,并缓存所述至少一个查询请求中除所述第一查询请求之外的查询请求;其中,所述其它流水线的优先级高于所述上游设备的优先级。
22.如权利要求12~21任一项所述的方法,其特征在于,该方法还包括:
在第N时刻,从所述M条流水线中确定用于处理所述至少一个查询请求的所述任一流水线,并使能所述任一流水线以触发所述任一流水线中的所述仲裁电路接收所述至少一个查询请求。
CN201410856634.7A 2014-12-31 2014-12-31 一种多路组相联的高速缓冲存储器及其处理方法 Active CN104536911B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201410856634.7A CN104536911B (zh) 2014-12-31 2014-12-31 一种多路组相联的高速缓冲存储器及其处理方法
PCT/CN2015/086526 WO2016107182A1 (zh) 2014-12-31 2015-08-10 一种多路组相联的高速缓冲存储器及其处理方法
US15/637,805 US10152420B2 (en) 2014-12-31 2017-06-29 Multi-way set associative cache and processing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410856634.7A CN104536911B (zh) 2014-12-31 2014-12-31 一种多路组相联的高速缓冲存储器及其处理方法

Publications (2)

Publication Number Publication Date
CN104536911A true CN104536911A (zh) 2015-04-22
CN104536911B CN104536911B (zh) 2018-01-02

Family

ID=52852441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410856634.7A Active CN104536911B (zh) 2014-12-31 2014-12-31 一种多路组相联的高速缓冲存储器及其处理方法

Country Status (3)

Country Link
US (1) US10152420B2 (zh)
CN (1) CN104536911B (zh)
WO (1) WO2016107182A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016107182A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种多路组相联的高速缓冲存储器及其处理方法
CN108347383A (zh) * 2018-02-05 2018-07-31 吴子仪 一种基于流水线的并发多路路由查询实现方法
CN109426650A (zh) * 2017-08-28 2019-03-05 华为技术有限公司 处理器和处理标签的方法
CN110362507A (zh) * 2018-04-11 2019-10-22 忆锐公司 存储器控制设备和包括该设备的存储器系统
CN113836053A (zh) * 2021-09-07 2021-12-24 上海砹芯科技有限公司 信息获取方法、装置和电子设备
CN114924999A (zh) * 2022-07-21 2022-08-19 苏州浪潮智能科技有限公司 一种高速缓存管理方法、装置、系统、设备及介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021126286A1 (en) 2020-02-14 2021-06-24 Huawei Technologies Co., Ltd. Upward eviction of cache lines
US11467966B2 (en) * 2020-09-02 2022-10-11 Shenzhen GOODIX Technology Co., Ltd. Cache memory having a programmable number of ways

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1450457A (zh) * 2003-04-16 2003-10-22 复旦大学 采用改进时序的低功耗组相联高速缓冲存储器
CN101681304A (zh) * 2007-06-20 2010-03-24 富士通株式会社 高速缓冲存储器控制装置及流水线控制方法
CN101727406A (zh) * 2008-10-20 2010-06-09 株式会社东芝 组相联方式的高速缓存装置、高速缓存方法及处理器系统
CN102298554A (zh) * 2010-06-24 2011-12-28 英特尔公司 用于降低存储设备功耗的方法和系统
US20140244939A1 (en) * 2013-02-28 2014-08-28 Industry & Academic Cooperation Group Of Sejong University Texture cache memory system of non-blocking for texture mapping pipeline and operation method of texture cache memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395372B2 (en) * 2003-11-14 2008-07-01 International Business Machines Corporation Method and system for providing cache set selection which is power optimized
US8195883B2 (en) * 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor
CN103176914B (zh) * 2011-11-18 2016-12-21 上海芯豪微电子有限公司 一种低缺失率、低缺失惩罚的缓存方法和装置
CN104050092B (zh) * 2013-03-15 2018-05-01 上海芯豪微电子有限公司 一种数据缓存系统及方法
US9223705B2 (en) * 2013-04-01 2015-12-29 Advanced Micro Devices, Inc. Cache access arbitration for prefetch requests
CN104536911B (zh) * 2014-12-31 2018-01-02 华为技术有限公司 一种多路组相联的高速缓冲存储器及其处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1450457A (zh) * 2003-04-16 2003-10-22 复旦大学 采用改进时序的低功耗组相联高速缓冲存储器
CN101681304A (zh) * 2007-06-20 2010-03-24 富士通株式会社 高速缓冲存储器控制装置及流水线控制方法
CN101727406A (zh) * 2008-10-20 2010-06-09 株式会社东芝 组相联方式的高速缓存装置、高速缓存方法及处理器系统
CN102298554A (zh) * 2010-06-24 2011-12-28 英特尔公司 用于降低存储设备功耗的方法和系统
US20140244939A1 (en) * 2013-02-28 2014-08-28 Industry & Academic Cooperation Group Of Sejong University Texture cache memory system of non-blocking for texture mapping pipeline and operation method of texture cache memory

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016107182A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种多路组相联的高速缓冲存储器及其处理方法
US10152420B2 (en) 2014-12-31 2018-12-11 Huawei Technologies Co., Ltd. Multi-way set associative cache and processing method thereof
CN109426650A (zh) * 2017-08-28 2019-03-05 华为技术有限公司 处理器和处理标签的方法
CN108347383A (zh) * 2018-02-05 2018-07-31 吴子仪 一种基于流水线的并发多路路由查询实现方法
CN110362507A (zh) * 2018-04-11 2019-10-22 忆锐公司 存储器控制设备和包括该设备的存储器系统
CN113836053A (zh) * 2021-09-07 2021-12-24 上海砹芯科技有限公司 信息获取方法、装置和电子设备
CN114924999A (zh) * 2022-07-21 2022-08-19 苏州浪潮智能科技有限公司 一种高速缓存管理方法、装置、系统、设备及介质

Also Published As

Publication number Publication date
US10152420B2 (en) 2018-12-11
CN104536911B (zh) 2018-01-02
WO2016107182A1 (zh) 2016-07-07
US20170300417A1 (en) 2017-10-19

Similar Documents

Publication Publication Date Title
CN104536911A (zh) 一种多路组相联的高速缓冲存储器及其处理方法
EP2885728B1 (en) Hardware implementation of the aggregation/group by operation: hash-table method
CN104133780B (zh) 一种跨页预取方法、装置及系统
US8560509B2 (en) Incremental computing for web search
CN101692651A (zh) 一种哈希查找表的方法和装置
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
CN1991793A (zh) 用于在多核系统中进行邻近高速缓存的方法及系统
CN105359142B (zh) 哈希连接方法和装置
CN103902702A (zh) 一种数据存储系统和存储方法
US20150242487A1 (en) System and a method for executing sql-like queries with add-on accelerators
CN104239134A (zh) 一种众核系统的任务管理方法和装置
CN110147507A (zh) 一种获取短链接地址的方法、装置及服务器
CN110442773A (zh) 分布式系统中节点缓存方法、系统、装置及计算机介质
CN104516822A (zh) 一种内存访问方法和设备
CN108052535B (zh) 基于多处理器平台的视觉特征并行快速匹配方法和系统
US20160334996A1 (en) In-flash immutable object processing
US11061676B2 (en) Scatter gather using key-value store
CN103077198B (zh) 一种操作系统及其文件缓存定位方法
CN101770504B (zh) 数据存储、读取方法及设备
CN104346404A (zh) 一种访问数据的方法、设备及系统
CN102929943B (zh) 数据输出方法及装置
US8935508B1 (en) Implementing pseudo content access memory
CN109189994A (zh) 一种面向图计算应用的cam结构存储系统
CN107967306B (zh) 一种存储系统中关联块的快速挖掘方法
CN102103490B (zh) 一种利用流水处理提高内存效率的方法

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant