CN106201915B - 高速缓冲存储器系统及其操作方法 - Google Patents

高速缓冲存储器系统及其操作方法 Download PDF

Info

Publication number
CN106201915B
CN106201915B CN201510463551.6A CN201510463551A CN106201915B CN 106201915 B CN106201915 B CN 106201915B CN 201510463551 A CN201510463551 A CN 201510463551A CN 106201915 B CN106201915 B CN 106201915B
Authority
CN
China
Prior art keywords
data
tag
cache
pieces
bits
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
CN201510463551.6A
Other languages
English (en)
Other versions
CN106201915A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106201915A publication Critical patent/CN106201915A/zh
Application granted granted Critical
Publication of CN106201915B publication Critical patent/CN106201915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/604Details relating to cache allocation

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

公开了一种高速缓冲存储器系统及其操作方法。所述高速缓冲存储器设备包括:标签比较器,被配置为将包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的位与接收到的标签地址的较高的位进行比较,将所述多条标签数据中的每条标签数据的其他位与标签地址的其他位进行比较,并且基于比较的结果确定存在高速缓存命中还是高速缓存未命中;更新控制器,被配置为响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的位和标签地址的较高的位之间的比较结果,将包括在所述组中且与所述多条标签数据对应的多个高速缓存数据中的一个高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。

Description

高速缓冲存储器系统及其操作方法
本申请要求于2014年9月17日提交到韩国知识产权局的第10-2014-0123704号韩国专利申请的权益,其全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及一种高速缓冲存储器系统及其操作方法。
背景技术
通常,诸如中央处理单元(CPU)和图形处理单元(GPU)的处理单元访问和处理存储在大容量外部存储器中的命令和数据。由于大多数大容量外部存储器的处理速度比处理单元的处理速度慢得多,因此采用高速缓冲存储器系统来提高操作速度。
高速缓冲存储器系统存储由处理单元最近访问过的数据。当处理单元再次请求相同数据时,高速缓冲存储器系统访问高速缓冲存储器,而不是访问外部存储器,从而提高了数据传输率。
如果由处理单元请求的数据被加载到高速缓冲存储器系统的数据存储器上(高速缓存命中(cache hit)),则数据被传输到处理单元。如果由处理单元请求的数据不存在(高速缓存未命中(cache miss)),则从外部存储器读出数据。此外,高速缓冲存储器系统擦除存储在数据存储器中的任意条高速缓存数据,用读取的数据对擦除的高速缓存数据进行更新,并将读取的数据传输到处理单元。
根据映射方法,高速缓冲存储器系统可实施在使用组相联(set-associative)映射方法的组相联高速缓冲存储器和使用直接映射方法的直接映射高速缓冲存储器中。组相联高速缓冲存储器具有多条路。对于高速缓存未命中,根据替换状态,用从外部存储器读取的新数据对与任意一条路对应的高速缓存数据进行更新。
发明内容
提供本发明内容来以简化的形式引入在以下具体实施方式中进一步描述的构思的选择。本发明内容不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用来帮助确定所要求保护的主题的范围。
在一个总体方面,提供了一种高速缓冲存储器设备,包括:数据存储器,被配置为存储与存储在主存储器中的多条数据对应的多条高速缓存数据;标签存储器,包括组,并且被配置为将与所述多条高速缓存数据分别对应的多条标签数据存储为所述组,所述多条标签数据均包括N位。所述设备还包括:标签比较器,被配置为将包括在由接收到的组地址所指示的组中的所述多条标签数据中的每条标签数据的较高的K位(其中,1≤K<N)与接收到的标签地址的较高的K位进行比较,所述标签地址包括N位,将所述多条标签数据中的每条标签数据的其他(N-K)位与标签地址的其他(N-K)位进行比较,并且基于比较的结果确定存在高速缓存命中还是高速缓存未命中。所述设备还包括:更新控制器,被配置为响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的K位和标签地址的较高的K位之间的比较结果来将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。
更新控制器可被配置为响应于与一条高速缓存数据对应的一条标签数据的较高的K位与标签地址的较高的K位不匹配,将该条高速缓存数据确定为更新候选。
标签比较器可被配置为响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并将每条标签数据的较高的K位与标签地址的较高的K位之间的比较结果输出到更新控制器。
标签比较器可被配置为响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
所述高速缓冲存储器设备还可包括:数据输出部,被配置为响应于高速缓存命中被确定,读取所述多条高速缓存数据中与所述多条标签数据中的和标签地址匹配的标签数据对应的一条高速缓存数据,并输出读取的一条高速缓存数据。
更新控制器可被配置为响应于高速缓冲存储器设备接收到均具有相同的组地址的多个数据请求,基于针对所述多条数据中的每条数据接收到的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位之间的比较结果,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选,并用新数据对在所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
标签比较器还可被配置为输出与所述多条数据分别对应的多个比较矢量,其中,所述多个比较矢量中的每个包括的分量的数量与所述组的路的数量相同,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此匹配,所述分量指示第一值,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此不匹配,所述分量指示第二值,并且更新控制器可被配置为针对所述组的多条路中的每条路对比较矢量的分量值进行求和,并基于求和的分量值,用新数据对与所述多条路中的任意一条路对应的高速缓存数据进行更新。
第一值可以是1,第二值可以是0,更新控制器可被配置为用新数据对与所述多条路中具有最小的求和的分量值的路对应的高速缓存数据进行更新。
在另一个总体方面,提供了一种高速缓冲存储器设备,包括:数据存储器,被配置为存储与存储在主存储器中的多条数据对应的多条高速缓存数据;标签存储器,包括组,并且被配置为将与所述多条高速缓存数据分别对应的多条标签数据存储为所述组,所述多条标签数据均包括N位。所述设备还可包括:标签比较器,被配置为计算包括在由接收到的组地址所指示的组中的所述多条标签数据中的每条标签数据的较高的K位(其中,1≤K<N)与接收到的标签地址的较高的K位之间的差,所述标签地址包括N位,将标签地址与所述多条标签数据中的每条标签数据进行比较,并且基于比较的结果确定存在高速缓存命中还是高速缓存未命中。所述设备还可包括:更新控制器,被配置为响应于高速缓存未命中被确定,基于所述差将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。
更新控制器可被配置为响应于所述差大于或等于预定值,将一条高速缓存数据确定为更新候选。
标签比较器可被配置为响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并将所述差输出到更新控制器。
更新控制器可被配置为响应于高速缓冲存储器设备接收到均具有相同的组地址的多个数据请求,基于所述差,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选,并用新数据对在所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
在另一个总体方面,提供了一种操作高速缓冲存储器设备的方法,所述方法包括:将包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的K位(其中,1≤K<N)与接收到的标签地址的较高的K位进行比较,与多条高速缓存数据分别对应的所述多条标签数据作为所述组,所述多条标签数据均包括N位,所述标签地址包括N位,所述多条高速缓存数据与多条数据对应。所述方法还包括:将所述多条标签数据中的每条标签数据的其他(N-K)位与标签地址的其他(N-K)位进行比较,并且基于比较的结果确定存在高速缓存命中还是高速缓存未命中。所述方法还包括:响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的K位和标签地址的较高的K位之间的比较结果来将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。
将一条高速缓存数据确定为更新候选的步骤可包括:响应于与一条高速缓存数据对应的一条标签数据的较高的K位与标签地址的较高的K位不匹配,将该条高速缓存数据确定为更新候选。
确定存在高速缓存命中还是高速缓存未命中的步骤可包括:响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并输出每条标签数据的较高的K位与标签地址的较高的K位之间的比较结果。
确定存在高速缓存命中还是高速缓存未命中的步骤可包括:响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
所述方法还可包括:响应于高速缓存命中被确定,读取所述多条高速缓存数据中与所述多条标签数据中的和标签地址匹配的一条标签数据对应的一条高速缓存数据,并输出读取的一条高速缓存数据。
响应于接收到均具有相同的组地址的多个数据请求,将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选的步骤可包括:基于针对所述多条数据中的每条数据接收到的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位之间的比较结果,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选;对更新候选进行更新的步骤包括:用新数据对在所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
所述方法还可包括:输出与所述多条数据分别对应的多个比较矢量,其中,所述多个比较矢量中的每个包括的分量的数量与所述组的路的数量相同,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此匹配,所述分量指示第一值,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此不匹配,所述分量指示第二值。对更新候选进行更新的步骤可包括:针对所述组的多条路中的每条路对比较矢量的分量值进行求和,并基于求和的分量值,用新数据对与所述多条路中的任意一条路对应的高速缓存数据进行更新。
第一值可以是1,第二值可以是0,对更新候选进行更新的步骤可包括:用新数据对与具有最小的求和的分量值的路对应的高速缓存数据进行更新。
在另一个总体方面,提供了一种操作高速缓冲存储器设备的方法,所述方法包括:计算包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的K位(其中,1≤K<N)与接收到的标签地址的较高的K位之间的差,与多条高速缓存数据分别对应的所述多条标签数据作为所述组,所述多条标签数据均包括N位,所述标签地址包括N位,所述多条高速缓存数据与多条数据对应。所述方法还包括:将标签地址与所述多条标签数据中的每条标签数据进行比较,并且基于计算和比较的结果来确定存在高速缓存命中还是高速缓存未命中。所述方法还包括:响应于高速缓存未命中被确定,基于所述差将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。
将一条高速缓存数据确定为更新候选的步骤可包括:响应于所述差大于或等于预定值,将一条高速缓存数据确定为更新候选。
确定存在高速缓存命中还是高速缓存未命中的步骤可包括:响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并输出所述差。
响应于接收到均具有相同的组地址的多个数据请求,将一条高速缓存数据确定为更新候选的步骤可包括:基于所述差,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选,并且对更新候选进行更新的步骤可包括:用新数据对在所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
在另一个总体方面,提供了一种高速缓冲存储器设备,包括:标签比较器,被配置为将包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的位与接收到的标签地址的较高的位进行比较,将所述多条标签数据中的每条标签数据的其他位与标签地址的其他位进行比较,并且基于比较的结果来确定存在高速缓存命中还是高速缓存未命中。所述设备还包括:更新控制器,被配置为响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的位和标签地址的较高的位之间的比较结果,将包括在所述组中且与所述多条标签数据对应的多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新。
标签比较器可被配置为响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并且响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
更新控制器可被配置为响应于与一条高速缓存数据对应的一条标签数据的较高的位与标签地址的较高的位不匹配,将该条高速缓存数据确定为更新候选。
通过下面的具体实施方式、附图和权利要求,其他特征和方面将是显然的。
附图说明
图1是示出数据处理系统的示例的框图。
图2是示出高速缓冲存储器系统的示例的框图。
图3是示出四路组相联高速缓冲存储器的示例的框图。
图4是示出将与包括在一个组中的多条路中的一条路对应的标签数据和标签地址进行比较的方法的示例的电路图。
图5是示出将与包括在一个组中的多条路分别对应的多条标签数据和标签地址进行比较的方法的示例的电路图。
图6是示出矢量“hit_results_h[M-1:0]”的示例的示图。
图7是示出高速缓冲存储器系统的更新数据的方法的示例的流程图。
图8是示出高速缓冲存储器系统的更新数据的方法的另一个示例的流程图。
图9是示出针对多条数据的矢量“hit_results_h[][M-1:0]”的示例的示图。
图10是示出将与包括在一个组中的多条路中的一条路对应的标签数据和标签地址进行比较的方法的另一个示例的电路图。
图11是示出将与包括在一个组中的多条路分别对应的多条标签数据和标签地址进行比较的方法的另一个示例的电路图。
图12是示出高速缓冲存储器系统的更新数据的方法的另一个示例的流程图。
图13是示出针对多条数据的矢量“hit_results_d[][M-1:0]”的另一个示例的示图。
具体实施方式
提供以下详细描述以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,这里所描述的系统、设备和/或方法的各种变化、修改和等同物对本领域的普通技术人员而言将是显然的。例如,这里所描述的操作的顺序仅是示例,除了必需按特定顺序发生的操作之外,操作的顺序不限于在此阐述的顺序,并且可进行如对本领域的普通技术人员而言将是显然的改变。此外,为了更加清楚和简明,可省略对本领域的普通技术人员公知的功能和构造的描述。
在整个附图和具体实施方式中,相同的参考标号表示相同的元件。为了清楚、说明和方便,附图可不必成比例,并且可夸大附图中元件的相对尺寸、比例和描绘。
在此描述的特征可以以不同形式体现,并且不应被解释为限于在此描述的示例。相反地,提供在此描述的示例,使得本公开将是彻底和完整的,并且将向本领域的普通技术人员传达本公开的全部范围。
图1是示出数据处理系统的示例的框图。参照图1,数据处理系统包括数据处理单元10和主存储器200。数据处理单元10包括核50和高速缓冲存储器系统100或者高速缓冲存储器设备。此外,高速缓冲存储器系统100的线和主存储器200的线连接到系统总线60。
虽然图1为了便于解释而示出了高速缓冲存储器系统100被布置为与核50分开的示例,但本公开不限于此,高速缓冲存储器系统100可被包含于包含有核50的同一芯片中。此外,图1的数据处理单元10可以是图形处理单元(GPU),但不限于此。
为了请求在数据处理期间需要的数据,核50可在访问主存储器200之前访问高速缓冲存储器系统100。例如,当数据处理单元10为GPU时,核50可以是像素着色器核。像素着色器核可执行像素着色以在渲染期间确定像素的颜色值。像素着色器核可向高速缓冲存储器系统100请求将被用于确定像素的颜色值的纹理数据。此外,核50可包括多个核,并且多个核可同时向高速缓冲存储器系统100请求数据。
当由核50请求的数据或者命令(以下,被称为目标数据)存在于高速缓冲存储器系统100中时,执行根据高速缓存命中的操作。在高速缓存命中期间,高速缓冲存储器系统将高速缓存数据或目标数据输出到核50。
由于经常使用的主存储器200的数据很可能存储在高速缓冲存储器系统100中,因此核50在访问主存储器200之前首先访问高速缓冲存储器系统100。因此,可通过在访问主存储器200之前首先访问高速缓冲存储器系统100来提高数据传输率。
当目标数据不存在于高速缓冲存储器系统100中时,执行根据高速缓存未命中的操作。换句话说,在该示例中,高速缓冲存储器系统100访问主存储器200,并且主存储器200通过系统总线60将数据输出到高速缓冲存储器系统100。高速缓冲存储器系统100可擦除任意一条先前存储的高速缓存数据,并存储从主存储器200输出的数据。
图2是示出高速缓冲存储器系统100的示例的框图。参照图2,高速缓冲存储器系统100或者高速缓冲存储器设备包括标签比较器110、高速缓冲存储器120和更新控制器130。
高速缓冲存储器120包括标签存储器123和数据存储器125。数据存储器125存储一些存储在图1的主存储器200中的数据(高速缓存数据)。换句话说,高速缓存数据与存储在主存储器200中的某一条主数据相同。标签存储器123存储与存储在数据存储器125中的多条高速缓存数据分别对应的多条标签数据。标签数据可指示主存储器200的存储高速缓存数据的实际地址。以下参照图3对标签存储器123和数据存储器125进行详细的描述。
图3是示出具有四路的四路组相联高速缓冲存储器的示例的框图。参照图3,标签存储器123和数据存储器125包括至少一个组310,并且一个组具有多条路。标签存储器123和数据存储器125的行和列分别指示组和路。换句话说,一个组被存储在标签存储器123和数据存储器125的相同行。如图3所示,当高速缓冲存储器120为四路组相联高速缓冲存储器时,一个组包括第一高速缓存数据CD1、第二高速缓存数据CD2、第三高速缓存数据CD3和第四高速缓存数据CD4以及分别指示第一高速缓存数据CD1、第二高速缓存数据CD2、第三高速缓存数据CD3和第四高速缓存数据CD4的地址的第一标签数据TD1、第二标签数据TD2、第三标签数据TD3和第四标签数据TD4。
此外,第一标签数据TD1、第二标签数据TD2、第三标签数据TD3和第四标签数据TD4被存储在标签存储器123的同一行中。第一标签数据TD1与第一路1-way对应。第二标签数据TD2与第二路2-way对应。第三标签数据TD3与第三路3-way对应。第四标签数据TD4与第四路4-way对应。与第一标签数据TD1、第二标签数据TD2、第三标签数据TD3和第四标签数据TD4分别对应的第一高速缓存数据CD1、第二高速缓存数据CD2、第三高速缓存数据CD3和第四高速缓存数据CD4以与第一标签数据TD1、第二标签数据TD2、第三标签数据TD3和第四标签数据TD4相同的方式被存储在数据存储器125中。
高速缓冲存储器系统100从外部接收与请求的数据对应的地址位320。如图3所示,地址位320包括标签地址“Tag add”和组地址“Set add”。组地址“Set add”是指示高速缓冲存储器120的行地址的数据。换句话说,组地址“Set add”指示包括在高速缓冲存储器120中的多个组中的任意一个组。
当存在例如由图1的核50从外部请求的数据时,标签比较器110确定请求的数据是否被存储在高速缓冲存储器120中。换句话说,标签比较器110确定存在高速缓存命中还是高速缓存未命中。
标签比较器110确定包括在组地址“Set add”所指示的组310中的每个标签数据是否与标签地址匹配。如果标签地址“Tag add”的N位与任意一条标签数据的N位匹配,则标签比较器110确定存在高速缓存命中。换句话说,高速缓存命中是指从外部请求的目标数据存在于数据存储器125中。
标签比较器110可将标签地址“Tag add”的N位中的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与标签数据的N位中的较高的K位“tagway[N-1:N-K]”进行比较。此外,标签比较器110可将标签地址“Tag add”的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”进行比较。标签比较器110可基于比较的结果来确定存在高速缓存命中还是高速缓存未命中。以下参照图4和图5对标签比较器110的以上操作进行详细的描述。
当标签比较器110确定存在高速缓存命中时,高速缓冲存储器系统100输出与和标签地址“Tag add”匹配的标签数据对应的高速缓存数据。即,标签比较器110将高速缓存命中信号输出到数据输出部150。数据输出部150读取存储在数据存储器125中的与和标签地址“Tag add”匹配的标签数据对应的高速缓存数据,并且输出读取的高速缓存数据。与此相反,当标签比较器110确定存在高速缓存未命中时,标签比较器110将高速缓存未命中信号输出到图1的主存储器200,并且可请求目标数据。此外,标签比较器110可将标签地址“Tagadd”的其他(N-K)位与标签数据的其他(N-K)位的比较结果输出到更新控制器130。
更新控制器130可基于标签地址“Tag add”的较高的K位与标签数据的较高的K位的比较结果来确定更新候选(update candidate)。可选择地,更新控制器130也可基于标签地址“Tag add”的其他(N-K)位与标签数据的其他(N-K)位的比较结果来确定更新候选。更新控制器130可擦除任意一条被确定为更新候选的高速缓存数据,并且可用从主存储器200接收的新数据对擦除的高速缓存数据进行更新。
图4是示出将与包括在一个组中的多条路中的一条路对应的标签数据和标签地址进行比较的方法的示例的电路图。参照图4,存储在图2-图3的标签存储器123中的标签数据和标签地址由N位表示。此外,标签比较器110包括第一比较器410、第二比较器420和AND运算器(与运算器)430。第一比较器410为K位比较器,第二比较器420为(N-K)位比较器。
第一比较器410将标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与标签数据的较高的K位“tagway[N-1:N-K]”进行比较。此外,第二比较器420将标签地址“Tag add”的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”进行比较。
如果标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与每条标签数据的较高的K位“tagway[N-1:N-K]”彼此匹配,则第一比较器410可输出“1”。否则,第一比较器410可输出“0”。可选择地,如果标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与标签数据的较高的K位“tagway[N-1:N-K]”彼此匹配,则第一比较器410可输出“0”。否则,第一比较器410可输出“1”。然而,本示例不限于此。
此外,如果标签地址的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”彼此匹配,则第二比较器420可输出“1”。否则,第二比较器420可输出“0”。可选择地,如果标签地址的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”彼此匹配,则第二比较器420可输出“0”。否则,第二比较器420可输出“1”。然而,本示例不限于此。
为了便于解释,在以下描述中,第一比较器410和第二比较器420在输入的位数据彼此匹配时输出“1”。
AND运算器430通过将第一比较器410和第二比较器420的输出值用作输入值来执行AND运算(与运算)。例如,当标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与每条标签数据的较高的K位“tagway[N-1:N-K]”彼此匹配(即,第一比较器410输出“1”)并且标签地址的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”彼此匹配(即,第二比较器420输出“1”)时,AND运算器430输出“1”作为“hit_result”。与此相反,当标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与每条标签数据的较高的K位“tagway[N-1:N-K]”彼此不匹配,或者标签地址的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”彼此不匹配时,AND运算器430输出“0”作为“hit_result”。
换句话说,当AND运算器430输出“1”时,可以确定标签地址“Tag add”的N位“Tagadd[N-1:0]”与标签数据的N位“tagway[N-1:0]”彼此匹配。当AND运算器430输出“0”时,可以确定标签地址“Tag add”的N位“Tag add[N-1:0]”与标签数据的N位“tagway[N-1:0]”彼此不匹配。
图5是示出将与包括在一个组中的多条路分别对应的多条标签数据和标签地址进行比较的方法的示例的电路图。参照图5,当存在M条路时,标签比较器110包括M个第一比较器、M个第二比较器和2M个AND运算器。
如参照图4所描述,标签比较器110将与多条路对应的每个标签数据和标签地址“Tag add”进行比较。由于以上参照图4详细描述了将标签数据和标签地址“Tag add”进行比较的方法,因此省略其描述。
标签比较器110还包括第二AND运算器510。第二AND运算器510接收指示高速缓存数据是否被存储在图2-图3的数据存储器125的对应的路中的值“valid_way”以及指示对应的路的标签数据和标签地址是否彼此匹配的值,作为输入。当高速缓存数据被存储在对应的路中时,指示高速缓存数据是否被存储的值“valid_way”为“1”,当高速缓存数据没有被存储在对应的路中时,指示高速缓存数据是否被存储的值“valid_way”为“0”。
因此,当高速缓存数据没有被存储在对应的路中(即,值“valid_way”为“0”),并且对应的路的标签数据和标签地址“Tag add”彼此不匹配时,第二AND运算器510输出“0”。此外,当高速缓存数据被存储在对应的路中(即,值“valid_way”为“1”),并且对应的路的标签数据和标签地址“Tag add”彼此匹配时,第二AND运算器510输出“1”作为“hit_way”。标签比较器110输出来自与多条路对应的M个第二AND运算器的值作为矢量“hit_results[M-1:0]。该矢量的分量的数量与M条路相同。
例如,如图5所示,当图2-图3的高速缓冲存储器120为四路高速缓冲存储器时,与第一路对应的第二AND运算器510可输出“1”,与第二路对应的第二AND运算器510可输出“0”,与第三路对应的第二AND运算器510可输出“0”,与第四路对应的第二AND运算器510可输出“0”。此外,输出的矢量“hit_results[M-1:0]”可以是[1,0,0,0]。
在该示例中,当矢量的任意一个分量指示“1”时,标签比较器110确定存在高速缓存命中。换句话说,当存在指示“1”的分量时,与该分量对应的路的目标数据和标签地址匹配,并且与和标签地址匹配的标签数据对应的高速缓存数据是例如由图1的核50从外部请求的目标数据。如果高速缓存命中被确定,则图3的数据输出部150从数据存储器125读取与和标签地址匹配的标签数据对应的高速缓存数据,并且可输出读取的高速缓存数据。
与此相反,当矢量的所有分量指示“0”时,标签比较器110确定存在高速缓存未命中。换句话说,当所有路的目标数据都不与标签地址“Tag add”匹配时,确定由核50请求的目标数据没有被存储在高速缓冲存储器120中。当存在高速缓存未命中时,标签比较器110输出来自与多条路对应的M个第一比较器的值作为“hit_results_h[M-1:0]”。
图6是示出矢量“hit_results_h[M-1:0]”的示例的示图。矢量的大小与M条路相同。图6示出具有四路的矢量“hit_results_h[M-1:0]”。在矢量“hit_results_h[M-1:0]”的分量之中,指示“0”的分量表示与该分量对应的标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”不匹配。与此相反,在矢量“hit_results_h[M-1:0]”的分量之中,指示“1”的分量表示与该分量对应的标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”匹配。
当标签地址的较高的K位“Tag add[N-1:N-K]”与标签数据的较高的K位“tagway[N-1:N-K]”彼此不匹配时,更新控制器130可确定在与标签数据对应的高速缓存数据和从外部请求的数据(即,目标数据)之间不存在空间本地性。因此,矢量“hit_results_h[M-1:0]”的分量的指示“0”的对应的路的高速缓存数据可被确定为更新候选。
在高速缓存未命中的示例中,图2-图3的更新控制器130可从图1的主存储器200接收多条目标数据,可擦除被确定为更新候选的任意一条高速缓存数据,并且可用从主存储器200接收到的新数据对擦除的高速缓存数据进行更新。图3的数据输出部150可将从主存储器200接收到的新数据输出到例如图1的核50。
图7是示出高速缓冲存储器系统100的更新数据的方法的示例的流程图。参照图7,在操作S710中,高速缓冲存储器系统100接收N位的标签地址“Tag add[N-1:0]”。
例如,如参照图3所描述,高速缓冲存储器系统100可从外部接收数据请求,并且可接收包括与请求的数据对应的组地址“Set add”和标签地址“Tag add”的地址位。组地址“Set add”可以是指示高速缓冲存储器120的行地址的数据,标签地址“Tag add”可以是请求的数据在主存储器200中的实际地址。
此外,标签地址“Tag add”包括N位。如果地址位被接收,则高速缓冲存储器系统100可输出包括在组地址“Set add”所指示的组中的目标数据。标签数据可以是与标签地址“Tag add”相同的N位。
在操作S720中,高速缓冲存储器系统100将每条输出的标签数据的较高的K位与标签地址的较高的K位进行比较,并且将每条标签数据的其他(N-K)位与标签地址的其他(N-K)位进行比较。例如,高速缓冲存储器100可包括图4或图5的第一比较器410和第二比较器420。第一比较器410可将标签地址“Tag add”的较高的K(1≤K<N)位“Tag add[N-1:N-K]”与标签数据的较高的K位“tagway[N-1:N-K]”进行比较。此外,第二比较器420可将标签地址的其他(N-K)位“Tag add[N-K-1:0]”与标签数据的其他(N-K)位“tagway[N-K-1:0]”进行比较。
在操作S730中,高速缓冲存储器系统100基于比较的结果来确定存在高速缓存命中还是高速缓存未命中。例如,当任意一条输出的标签数据与标签地址匹配时,高速缓冲存储器系统100确定存在高速缓存命中。与此相反,当没有一条输出的标签数据与标签地址匹配时,高速缓冲存储器系统100确定存在高速缓存未命中,并且在操作S740中继续。
在该示例中,当在组地址“Set add”所指示的组的高速缓存数据中存在无效数据(即,至少一条高速缓存线为空)时,高速缓冲存储器系统100可将从图1的主存储器200接收到的目标数据存储在空的高速缓存线中。与此相反,当组地址“Set add”所指示的组的所有高速缓存数据均有效(即,所有的高速缓存线中均存储有高速缓存数据)时,高速缓冲存储器系统100可在操作S740中继续。
在操作S740中,高速缓冲存储器系统100基于将每条标签数据的较高的K位与标签地址的较高的K位的比较结果,将与标签数据对应的高速缓存数据确定为更新候选。例如,当高速缓存未命中被确定,并且针对每条输出的标签数据,标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”彼此不匹配时,高速缓冲存储器系统100可将与标签数据对应的高速缓存数据确定为更新候选。与此相反,当标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”彼此匹配时,高速缓冲存储器系统100可取消将与标签数据对应的高速缓存数据作为更新候选。
在操作S750中,高速缓冲存储器系统100擦除确定的更新候选的任意一条高速缓存数据,并且用新数据对擦除的高速缓存数据进行更新。当高速缓存未命中被确定时,高速缓冲存储器系统100可输出高速缓存未命中信号,并且可从主存储器200接收目标数据。高速缓冲存储器系统100可从确定的更新候选擦除任意一条高速缓存数据,并可用从主存储器200接收到的数据对擦除的高速缓存数据进行更新。
图8是示出高速缓冲存储器系统100的更新数据的方法的另一个示例的流程图。参照图8,在操作S810中,高速缓冲存储器系统100接收均具有相同的组地址的多个数据请求。
例如,当图1的核50为多核时,高速缓冲存储器系统100可同时接收多个数据请求。高速缓冲存储器系统100可接收与每个数据对应的标签地址“Tag add”和组地址“Setadd”,并且与数据对应的组地址可彼此相同。
如参照图4所描述,对于每个数据,高速缓冲存储器系统100可将接收到的标签地址的较高的K位“Tag add[N-1:N-K]”与包括在组地址“Set add”所指示的组中的每条标签数据的较高的K位“tagway[N-1:N-K]”进行比较,并且可将标签地址的其他(N-K)位“Tagadd[N-K-1:0]”与每个标签数据的(N-K)位(tagway[N-K-1:0])进行比较。高速缓冲存储器系统100可基于比较的结果,针对请求的数据中的每个确定存在高速缓存命中还是高速缓存未命中。由于以上参照图5详细描述了该过程,因此省略其详细描述。
如图9所示,当存在高速缓存未命中时,高速缓冲存储器系统100可输出针对每个数据的矢量“hit_results_h[][M-1:0]”。
图9是示出针对多条数据的矢量“hit_results_h[][M-1:0]”的示例的示图。例如,当高速缓冲存储器系统100同时接收到四个数据请求时,矢量“hit_results_h[0][M-1:0]=[1 0 0 0]”与第一数据对应,矢量“hit_results_h[1][M-1:0]=[0 0 0 0]”与第二数据对应,矢量“hit_results_h[2][M-1:0]=[0 1 1 0]”与第三数据对应,矢量“hit_results_h[3][M-1:0]=[0 0 0 0]”与第四数据对应。
如果矢量的分量值指示“1”,则表示标签地址的较高的K位“Tag add[N-1:N-K]”和对应的路的标签数据的较高的K位“tagway[N-1:N-K]”彼此匹配。如果矢量的分量值指示“0”,则表示标签地址的较高的K位“Tag add[N-1:N-K]”和对应的路的标签数据的较高的K位“tagway[N-1:N-K]”彼此不匹配。由于以上参照图6详细描述了该操作,因此省略其详细描述。
再次参照图8,在操作S820中,高速缓冲存储器系统100基于矢量“hit_results_h[][M-1:0]”的分量值,针对每个数据确定更新候选。
例如,当矢量的分量值为“0”时,即,当对应的路的标签数据的较高的K位和标签地址的较高的K位彼此不匹配时,高速缓冲存储器系统100可确定例如由图1的核50从外部请求的数据和与标签数据对应的高速缓存数据不具有空间局部性。因此,高速缓冲存储器系统100可将与矢量“hit_results_h[][M-1:0]”的分量之中的指示“0”的分量对应的路的高速缓存数据确定为更新候选。
再次参照图9,高速缓冲存储器系统100可针对第一数据,将与第二路对应的高速缓存数据(第二高速缓存数据)、与第三路对应的高速缓存数据(第三高速缓存数据)以及与第四路对应的高速缓存数据(第四高速缓存数据)确定为更新候选。此外,高速缓冲存储器系统100可针对第二数据和第四数据,将与第一路至第四路中的任何一个对应的高速缓存数据(第一高速缓存数据至第四高速缓存数据)确定为更新候选,并且可针对第三数据,将第一高速缓存数据和第四高速缓存数据中的任何一个确定为更新候选。
再次参照图8,在操作S830中,高速缓冲存储器系统100针对多条数据擦除被确定为更新候选的次数最多的高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
例如,再次参照图9,第一高速缓存数据针对第二数据至第四数据被确定为更新候选,并且被确定为更新候选的次数为3次。此外,第二高速缓存数据针对第一数据、第二数据和第四数据被确定为更新候选,并且被确定为更新候选的次数为3次。此外,第三高速缓存数据针对第一数据、第二数据和第四数据被确定为更新候选,并且被确定为更新候选的次数为3次。此外,第四高速缓存数据针对第一数据至第四数据被确定为更新候选,并且被确定为更新候选的次数为4次。因此,高速缓冲存储器系统100可擦除被确定为更新候选的次数最多的第四高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
如图9所示,当多个矢量被输出时,高速缓冲存储器系统100可根据每条路对矢量的分量值进行求和。高速缓冲存储器系统100可选择各条路中具有最小的求和值的一条路,可擦除与选择的路对应的高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
例如,在图9中,第一路的求和值为1,第二路的求和值为1,第三路的求和值为1,第四路的求和值为0。高速缓冲存储器系统100可选择具有最小的求和值的第四路,可擦除与选择的第四路对应的高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
图10是示出将与包括在一个组中的多条路中的一条路对应的标签数据和标签地址进行比较的方法的另一个示例的电路图。参照图10,存储在标签存储器123中的标签数据和标签地址由N位表示。此外,标签比较器110包括第三比较器1010和减法器1020。第三比较器1010为N位比较器,减法器1020为K位减法器。
第三比较器1010将标签地址“Tag add”的N位“Tag add[N-1:0]”和标签数据的N位“tagway[N-1:0]”进行比较。当标签地址“Tag add”的N位“Tag add[N-1:0]”和标签数据的N位“tagway[N-1:0]”彼此匹配时,第三比较器1010可输出“1”。否则,第三比较器1010可输出“0”。可选择地,当标签地址“Tag add”的N位“Tag add[N-1:0]”和标签数据的N位“tagway[N-1:0]”彼此匹配时,第三比较器1010可输出“0”。反之,第三比较器1010可输出“1”。然而,本示例不限于此。在以下描述中,为了便于解释,当输入的位数据彼此匹配时,第三比较器1010输出“1”。
减法器1020确定标签地址的较高的K位“Tag add[N-1:N-K]”和标签数据的较高的K(1≤K<N)位“tagway[N-1:N-K]”之间的差值。
此外,标签比较器110包括第四比较器1030。当从减法器1020输出的差值小于或者等于预定值时,第四比较器1030可输出“1”,当从减法器1020输出的差值超过预定值时,第四比较器1030可输出“0”。然而,本示例不限于此。
图11是示出将与包括在一个组中的多条路分别对应的多条标签数据和标签地址进行比较的方法的另一个示例的电路图。参照图11,当存在M条路时,标签比较器110包括M个第三比较器、M个减法器、M个第四比较器和M个第二AND运算器。
如参照图10所描述,标签比较器110将与多条路对应的每条标签数据和标签地址进行比较。由于参照图10详细描述了将标签数据和标签地址进行比较的方法,因此省略其描述。
标签比较器110包括第二AND运算器510。第二AND运算器510接收指示高速缓存数据是否被存储在图2-图3的数据存储器125的对应的路中的值“valid_way”以及指示对应的路的标签数据和标签地址是否彼此匹配的值,作为输入。当高速缓存数据被存储在对应的路中时,指示高速缓存数据是否被存储的值“valid_way”可以是“1”,当高速缓存数据没有被存储在对应的路中时,指示高速缓存数据是否被存储的值“valid_way”可以是“0”。
因此,当高速缓存数据没有被存储在对应的路中(即,“valid_way”为“0”),并且对应的路的标签数据和标签地址彼此不匹配时,第二AND运算器510可输出“0”。此外,当高速缓存数据被存储在对应的路中(即,“valid_way”为“1”),并且对应的路的标签数据和标签地址彼此匹配时,第二AND运算器510可输出“1”。
标签比较器110输出从与各条路对应的M个第二AND运算器输出的值作为矢量“hit_results_d[M-1:0]”,其中,矢量的分量的数量与M条路相同。例如,当与第一路对应的第二AND运算器510输出“1”,与第二路对应的第二AND运算器510输出“0”,与第三路对应的第二AND运算器510输出“0”,并且与第四路对应的第二AND运算器510输出“0”时,矢量“hit_results_d[M-1:0]”可被表示为[1,0,0,0]。
在该示例中,当矢量的任意一个分量指示“1”时,标签比较器110确定存在高速缓存命中。换句话说,当存在指示“1”的分量时,表示与该分量对应的路的标签数据与标签地址匹配,并且与和所述标签地址匹配的标签数据对应的高速缓存数据是例如由图1的核50从外部请求的目标数据。当高速缓存命中被确定时,图3的数据输出部150从数据存储器125读取与和标签地址匹配的标签数据对应的高速缓存数据,并且可输出读取的高速缓存数据。
与此相反,当矢量的所有分量指示“0”时,标签比较器110确定存在高速缓存未命中。换句话说,当所有路的标签数据都不与标签地址匹配时,意味着例如由图1的核50从外部请求的目标数据没有被存储在高速缓冲存储器120中。当高速缓存未命中被确定时,标签比较器110可输出从与多条路对应的第四比较器输出的值作为矢量“hit_results_d[N-1:0]”。
在该示例中,矢量的分量的数量与M条路相同。矢量的分量中指示“0”的分量指示与该分量对应的标签数据的较高的K位和标签地址的较高的K位之间的差值大于预定值。与此相反,矢量的分量中指示“1”的分量指示与该分量对应的标签数据的较高的K位和标签地址的较高的K位之间的差值小于或者等于预定值。
当标签数据的较高的K位和标签地址的较高的K位之间的差值大于预定值时,图2-图3的更新控制器130可确定在与标签数据对应的高速缓存数据和从外部请求的数据(即,目标数据)之间不存在空间本地性。因此,与矢量“hit_results_d[N-1:0]”的分量中指示“0”的分量对应的路的高速缓存数据可以被确定为更新候选。
当存在高速缓存未命中时,更新控制器130可从主存储器200接收目标数据,可擦除被确定为更新候选的任意一个高速缓存数据,并且可用从主存储器200接收的新数据对擦除的高速缓存数据进行更新。此外,数据输出部150可输出从主存储器200接收的新数据。
图12是示出根据另一个示例的高速缓冲存储器系统100的更新数据的方法的另一个示例的流程图。参照图12,在操作S1210中,高速缓冲存储器系统100接收N位的标签地址。
例如,如参照图3所描述,高速缓冲存储器系统100接收外部数据请求,并且接收包括与请求的数据对应的组地址“Set add”和标签地址“Tag add”的地址位。组地址“Setadd”是指示高速缓冲存储器120的行地址的数据,标签地址“Tag add”是请求的数据在图1的主存储器200中的实际地址。
此外,标签地址“Tag add”包括N位。当地址位被接收时,高速缓冲存储器系统100输出包括在组地址“Set add”所指示的组中的标签数据。与标签地址“Tag add”相同,标签数据包括N位。
在操作S1220中,高速缓冲存储器系统100将每个输出的标签数据的N位和标签地址的N位进行比较,确定每个标签数据的较高的K位和标签地址的较高的K位之间的差值,并将差值和预定值进行比较。例如,如参照图10所描述,高速缓冲存储器系统100包括第三比较器1010、减法器1020和第四比较器1030。第三比较器1010将标签地址“Tag add”的N位“Tag add[N-1:0]”和标签数据“tagway”的N位“tagway[N-1:0]”进行比较。此外,减法器1020确定标签地址的较高的K位“Tag add[N-1:N-K]”和标签数据的较高的K位“tagway[N-1:N-K]”之间的差值。此外,第四比较器1030确定该确定的差值是否小于或者等于预定值。
在操作S1230中,高速缓冲存储器系统100基于每个输出的标签数据的N位和标签地址的N位之间的比较结果来确定存在高速缓存命中还是高速缓存未命中。例如,当输出的标签数据中的任意一个与标签地址匹配时,高速缓冲存储器系统100确定存在高速缓存命中。与此相反,当输出的标签数据中没有标签数据与标签地址匹配时,高速缓冲存储器系统100确定存在高速缓存未命中,并且在操作S1240中继续。
当在组地址“Set add”所指示的组的高速缓存数据中存在无效数据(即,至少一条高速缓存线为空)时,从主存储器200接收的目标数据被存储在空的高速缓存线中。与此相反,当组地址“Set add”所指示的组的高速缓存数据均有效(即,所有的高速缓存线中均存储有高速缓存数据)时,高速缓冲存储器系统100在操作S1240中继续。
在操作S1240中,高速缓冲存储器系统100基于每个标签数据的较高的K位与标签地址的较高的K位之间的差值,将与标签数据对应的高速缓存数据确定为更新候选。例如,当高速缓存未命中被确定,并且针对每个输出的标签数据,标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”之间的差值超过预定值时,高速缓冲存储器系统100将与标签数据对应的高速缓存数据确定为更新候选。与此相反,当标签数据的较高的K位“tagway[N-1:N-K]”与标签地址的较高的K位“Tag add[N-1:N-K]”之间的差值小于或者等于预定值时,与标签数据对应的高速缓存数据被取消作为更新候选。
在操作S1250中,高速缓冲存储器系统100擦除确定的更新候选的高速缓存数据中的任意一个,并且用新数据对擦除的高速缓存数据进行更新。例如,当高速缓存未命中被确定时,高速缓冲存储器系统100可输出高速缓存未命中信号,并且可从主存储器200接收目标数据。高速缓冲存储器系统100可擦除确定的更新候选的高速缓存数据中的任意一个,并可用从主存储器200接收的数据对擦除的高速缓存数据进行更新。
此外,高速缓冲存储器系统100可接收均具有相同的组地址的多个数据请求。在该示例中,如参照图10和图11所描述,高速缓冲存储器系统100可针对每个数据,将标签地址和包括在组地址所指示的组中的每个标签数据进行比较。此外,如参照图10和图11所描述,高速缓冲存储器系统100可针对每个数据,确定标签地址的较高的K位和每条标签数据的较高的K位之间的差值。
如参照图13所描述,当存在高速缓存未命中时,高速缓冲存储器系统100可输出针对每个数据的矢量“hit_results_d[][M-1:0]”。
图13是示出针对多条数据的矢量“hit_results_d[][M-1:0]”的另一个示例的示图。例如,当高速缓冲存储器系统100同时接收到四个数据请求时,矢量“hit_results_d[0][M-1:0]=[0 0 0 1]”与第一数据对应,矢量“hit_results_d[1][M-1:0]=[0 0 0 0]”与第二数据对应,矢量“hit_results_d[2][M-1:0]=[1 1 0 0]”与第三数据对应,矢量“hit_results_d[3][M-1:0]=[0 0 0 0]”与第四数据对应。
当矢量的分量值指示“1”时,意味着标签地址的较高的K位“Tag add[N-1:N-K]”和对应的路的标签数据的较高的K位“tagway[N-1:N-K]”之间的差值小于或者等于预定值。与此相反,当矢量的分量值指示“0”时,意味着标签地址的较高的K位“Tag add[N-1:N-K]”和对应的路的标签数据的较高的K位“tagway[N-1:N-K]”之间的差值大于预定值。
因此,高速缓冲存储器系统100可基于矢量的分量值,针对每条数据确定更新候选。例如,当矢量的分量值为“0”时,即,当对应的路的标签数据的较高的K位和标签地址的较高的K位之间的差值大于预定值时,高速缓冲存储器系统100可确定在从外部请求的数据和与标签数据对应的高速缓存数据之间不存在空间本地性。如此,高速缓冲存储器系统100可将与矢量“hit_results_d[][M-1:0]”的分量中的指示“0”的分量对应的路的高速缓存数据确定为更新候选。
参照图13,高速缓冲存储器系统100针对第一数据,将与第一路对应的高速缓存数据(即,第一高速缓存数据)、与第二路对应的高速缓存数据(即,第二高速缓存数据)以及与第三路对应的高速缓存数据(即,第三高速缓存数据)确定为更新候选。此外,高速缓冲存储器系统100针对第二数据和第四数据,将与第一路至第四路中的每个对应的高速缓存数据(即,第一高速缓存数据至第四高速缓存数据)确定为更新候选,并且针对第三数据,将第三高速缓存数据和第四高速缓存数据确定为更新候选。当更新候选针对每个数据被确定时,高速缓冲存储器系统100可针对多条数据擦除被最频繁地确定为更新候选的高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
由于参照图9详细描述了在更新候选中选择被最频繁地确定为更新候选的高速缓存数据的方法,因此省略其详细描述。
此外,当多个矢量被输出时,高速缓冲存储器系统100可针对每条路对矢量的分量值进行求和。在该示例中,高速缓冲存储器系统100可在多条路中选择具有最小的求和值的路,可擦除与选择的路对应的高速缓存数据,并且可用新数据对擦除的高速缓存数据进行更新。
由于参照图9描述了基于针对每条路的求和值在更新候选中选择高速缓存数据的方法,因此省略其详细描述。
如上所述,当高速缓存命中或者高速缓存未命中发生时,由于不需要附加信息来确定将替换的高速缓存数据,因此可减小存储器的大小。此外,可降低确定将替换的高速缓存数据的逻辑的复杂性。
可使用一个或更多个硬件组件或者一个或更多个硬件组件和一个或更多个软件组件的组合来实现上面描述的各种单元、元件和方法。
硬件组件可以是例如物理地执行一个或更多个操作的物理装置,但不限于此。硬件组件的示例包括麦克风、放大器、低通滤波器、高通滤波器、带通滤波器、模数转换器、数模转换器和处理装置。
可例如由被软件或指令控制以执行一个或更多个操作的处理装置实施软件组件,但不限于此。计算机、控制器或其它控制装置可使处理装置运行软件或执行指令。可由一个处理装置实施一个软件组件,或者可由一个处理装置实施两个或更多个软件组件,或者可由两个或更多个处理装置实施一个软件组件,或者可由两个或更多个处理装置实施两个或更多个软件组件。
可使用一个或更多个通用或专用计算机(诸如,例如,处理器、控制器和算术逻辑单元、数字信号处理器、微型计算机、现场可编程阵列、可编程逻辑单元、微处理器或能够运行软件或执行指令的任何其它装置)来实现处理装置。处理装置可运行操作系统(OS),并且可运行在OS下操作的一个或更多个软件应用。当运行软件或执行指令时,处理装置可访问、存储、操纵、处理和创建数据。为了简单,可在描述中使用单数术语“处理装置”,但本领域普通技术人员将会理解,处理装置可包括多个处理元件和多种类型的处理元件。例如,处理装置可包括一个或更多个处理器、或者一个或更多个处理器和一个或更多个控制器。此外,可实现不同的处理配置,诸如并行处理器或多核处理器。
被配置为实施软件组件以执行操作A的处理装置可包括这样的处理器,该处理器被编程为运行软件或执行指令以控制处理器执行操作A。此外,被配置为实施软件组件以执行操作A、操作B和操作C的处理装置可具有各种配置,诸如例如:被配置为实施软件组件以执行操作A、操作B和操作C的处理器;被配置为实施软件组件以执行操作A的第一处理器和被配置为实施软件组件以执行操作B和C的第二处理器;被配置为实施软件组件以执行操作A和操作B的第一处理器和被配置为实施软件组件以执行操作C的第二处理器;被配置为实施软件组件以执行操作A的第一处理器、被配置为实施软件组件以执行操作B的第二处理器和被配置为实施软件组件以执行操作C的第三处理器;被配置为实施软件组件以执行操作A、操作B和操作C的第一处理器和被配置为实施软件组件以执行操作A、操作B和操作C的第二处理器,或者一个或更多个处理器的任何其它配置,所述一个或更多个处理器中的每个执行操作A、操作B和操作C中的一个或更多个。虽然这些示例提及三个操作A、B和C,但可执行的操作的数量不限于三个,而是可以是实现希望的结果或执行希望的任务所需的任何数量的操作。
用于控制处理装置实施软件组件的软件或指令可包括用于独立地或共同地指示或配置处理装置执行一个或更多个期望的操作的计算机程序、一段代码、指令或它们的一些组合。软件或指令可包括可由处理装置直接执行的机器代码(诸如,由编译器产生的机器代码)和/或可由处理装置使用解释器执行的更高级代码。软件或指令和任何关联的数据、数据文件和数据结构可被永久或暂时地实施在任何类型的机器、组件、物理或虚拟装备、计算机存储介质或装置或者能够将指令或数据提供给处理装置或由处理装置解释的传播信号波中。软件或指令和任何关联的数据、数据文件和数据结构还可分布在通过网络连接的计算机系统中,从而以分布方式存储和执行软件或指令和任何关联的数据、数据文件和数据结构。
例如,软件或指令和任何关联的数据、数据文件和数据结构可被记录、存储或固定在一个或更多个非暂时性计算机可读存储介质中。非暂时性计算机可读存储介质可以是能够存储软件或指令和任何关联的数据、数据文件和数据结构以使它们可由计算机系统或处理装置读取的任何数据存储装置。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘或者本领域普通技术人员公知的任何其他的非暂时性计算机可读存储介质。
用于实现这里公开的示例的功能程序、代码和代码段可由示例所属领域的编程技术人员基于这里提供的附图及其对应描述容易地构造。
虽然本公开包括特定的示例,但是本领域的普通技术人员将清楚的是,可在不脱离权利要求及其等同物的精神和范围的情况下对这些示例做出形式和细节上的各种改变。这里描述的示例仅被考虑为描述性意义,而不是限制的目的。对每个示例中的特征或方面的描述将被认为可应用于其它示例中的类似特征或方面。如果描述的技术被以不同的顺序执行和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合和/或由其它组件或其等同物代替或补充,则可实现合适的结果。因此,本公开的范围不是由具体实施方式限定,而是由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有改变将被解释为包括在本公开中。

Claims (22)

1.一种高速缓冲存储器设备,包括:
数据存储器,被配置为存储与存储在主存储器中的多条数据对应的多条高速缓存数据;
标签存储器,包括组,并且被配置为将与所述多条高速缓存数据分别对应的多条标签数据存储为所述组,其中,所述多条标签数据均包括N位;
标签比较器,被配置为进行以下操作:
将包括在由接收到的组地址所指示的组中的所述多条标签数据中的每条标签数据的较高的K位与接收到的标签地址的较高的K位进行比较,其中,1≤K<N,标签地址包括N位,
将所述多条标签数据中的每条标签数据的其他(N-K)位与标签地址的其他(N-K)位进行比较,
基于比较的结果确定存在高速缓存命中还是高速缓存未命中;
更新控制器,被配置为响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的K位和标签地址的较高的K位之间的比较结果来将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新,
其中,更新控制器被配置为:
响应于与一条高速缓存数据对应的一条标签数据的较高的K位与标签地址的较高的K位不匹配,将该条高速缓存数据确定为更新候选。
2.如权利要求1所述的高速缓冲存储器设备,其中,标签比较器被配置为:
响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并将每条标签数据的较高的K位与标签地址的较高的K位之间的比较结果输出到更新控制器。
3.如权利要求1所述的高速缓冲存储器设备,其中,标签比较器被配置为:
响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
4.如权利要求1所述的高速缓冲存储器设备,还包括:
数据输出部,被配置为响应于高速缓存命中被确定,在所述多条高速缓存数据中读取与所述多条标签数据中的和标签地址匹配的标签数据对应的一条高速缓存数据,并输出读取的一条高速缓存数据。
5.如权利要求1所述的高速缓冲存储器设备,其中,更新控制器被配置为响应于高速缓冲存储器设备接收到均具有相同的组地址的多个数据请求而执行如下操作:
基于针对所述多条数据中的每条数据接收到的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位之间的比较结果,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选;
用新数据对所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
6.如权利要求5所述的高速缓冲存储器设备,其中,
标签比较器还被配置为输出与所述多条数据分别对应的多个比较矢量,其中,所述多个比较矢量中的每个包括的分量的数量与所述组的路的数量相同,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此匹配,所述分量指示第一值,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此不匹配,所述分量指示第二值;
更新控制器被配置为针对所述组的多条路中的每条路对比较矢量的分量值进行求和,并基于求和的分量值,用新数据对与所述多条路中的任意一条路对应的高速缓存数据进行更新。
7.如权利要求6所述的高速缓冲存储器设备,其中,
第一值为1,第二值为0;
更新控制器被配置为用新数据对与所述多条路中具有最小的求和的分量值的路对应的高速缓存数据进行更新。
8.一种高速缓冲存储器设备,包括:
数据存储器,被配置为存储与存储在主存储器中的多条数据对应的多条高速缓存数据;
标签存储器,包括组,并且被配置为将与所述多条高速缓存数据分别对应的多条标签数据存储为所述组,其中,所述多条标签数据均包括N位;
标签比较器,被配置为进行以下操作:
计算包括在由接收到的组地址所指示的组中的所述多条标签数据中的每条标签数据的较高的K位与接收到的标签地址的较高的K位之间的差,其中,标签地址包括N位,1≤K<N,
将标签地址与所述多条标签数据中的每条标签数据进行比较,并且
基于比较的结果确定存在高速缓存命中还是高速缓存未命中;
更新控制器,被配置为响应于高速缓存未命中被确定,基于所述差将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新,其中,更新控制器被配置为:
响应于所述差大于或等于预定值,将一条高速缓存数据确定为更新候选。
9.如权利要求8所述的高速缓冲存储器设备,其中,标签比较器被配置为:
响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并将所述差输出到更新控制器。
10.如权利要求8所述的高速缓冲存储器设备,其中,更新控制器被配置为响应于高速缓冲存储器设备接收到均具有相同的组地址的多个数据请求而执行如下操作:
基于所述差,针对所述多个数据请求的多条数据中的每条数据,将一条高速缓存数据确定为更新候选;
用新数据对所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
11.一种操作高速缓冲存储器设备的方法,所述方法包括:
将包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的K位与接收到的标签地址的较高的K位进行比较,其中,与多条高速缓存数据分别对应的所述多条标签数据作为所述组,所述多条标签数据均包括N位,标签地址包括N位,所述多条高速缓存数据与多条数据对应,其中,1≤K<N;
将所述多条标签数据中的每条标签数据的其他(N-K)位与标签地址的其他(N-K)位进行比较;
基于比较的结果确定存在高速缓存命中还是高速缓存未命中;
响应于高速缓存未命中被确定,基于所述多条标签数据中的每条标签数据的较高的K位和标签地址的较高的K位之间的比较结果来将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新,
其中,将一条高速缓存数据确定为更新候选的步骤包括:
响应于与一条高速缓存数据对应的一条标签数据的较高的K位与标签地址的较高的K位不匹配,将该条高速缓存数据确定为更新候选。
12.如权利要求11所述的方法,其中,确定存在高速缓存命中还是高速缓存未命中的步骤包括:
响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并输出每条标签数据的较高的K位与标签地址的较高的K位之间的比较结果。
13.如权利要求11所述的方法,其中,确定存在高速缓存命中还是高速缓存未命中的步骤包括:
响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
14.如权利要求11所述的方法,还包括:
响应于高速缓存命中被确定,读取所述多条高速缓存数据中与所述多条标签数据中的和标签地址匹配的标签数据对应的一条高速缓存数据,并输出读取的一条高速缓存数据。
15.如权利要求11所述的方法,其中,响应于接收到均具有相同的组地址的多个数据请求:
将一条高速缓存数据确定为更新候选的步骤包括:基于针对所述多条数据中的每条数据接收到的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位之间的比较结果,针对所述多个数据请求的多条数据中的每条数据将一条高速缓存数据确定为更新候选;
对更新候选进行更新的步骤包括:用新数据对所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
16.如权利要求15所述的方法,还包括:
输出与所述多条数据分别对应的多个比较矢量,其中,所述多个比较矢量中的每个包括的分量的数量与所述组的路的数量相同,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此匹配,所述分量指示第一值,响应于所述多条数据中的每条数据的标签地址的较高的K位与所述多条标签数据中的每条标签数据的较高的K位彼此不匹配,所述分量指示第二值,
其中,对更新候选进行更新的步骤包括:
针对所述组的多条路中的每条路对比较矢量的分量值进行求和,
基于求和的分量值,用新数据对与所述多条路中的任意一条路对应的高速缓存数据进行更新。
17.如权利要求16所述的方法,其中,
第一值为1,第二值为0;
对更新候选进行更新的步骤包括:用新数据对与所述多条路中具有最小的求和的分量值的路对应的高速缓存数据进行更新。
18.一种操作高速缓冲存储器设备的方法,所述方法包括:
计算包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的K位与接收到的标签地址的较高的K位之间的差,其中,与多条高速缓存数据分别对应的所述多条标签数据作为所述组,所述多条标签数据均包括N位,标签地址包括N位,所述多条高速缓存数据与多条数据对应,其中,1≤K<N;
将标签地址与所述多条标签数据中的每条标签数据进行比较;
基于计算和比较的结果来确定存在高速缓存命中还是高速缓存未命中;
响应于高速缓存未命中被确定,基于所述差将所述多条高速缓存数据中的一条高速缓存数据确定为更新候选,并用新数据对更新候选进行更新,
其中,将一条高速缓存数据确定为更新候选的步骤包括:
响应于所述差大于或等于预定值,将一条高速缓存数据确定为更新候选。
19.如权利要求18所述的方法,其中,确定存在高速缓存命中还是高速缓存未命中的步骤包括:
响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中,并输出所述差。
20.如权利要求18所述的方法,其中,响应于接收到均具有相同的组地址的多个数据请求:
将一条高速缓存数据确定为更新候选的步骤包括:基于所述差,针对所述多个数据请求的多条数据中的每条数据,将一条高速缓存数据确定为更新候选;
对更新候选进行更新的步骤包括:用新数据对在所述多条高速缓存数据中被最频繁地确定为更新候选的一条高速缓存数据进行更新。
21.一种高速缓冲存储器设备,包括:
标签比较器,被配置为:
将包括在由接收到的组地址所指示的组中的多条标签数据中的每条标签数据的较高的位与接收到的标签地址的较高的位进行比较,
将所述多条标签数据中的每条标签数据的其他位与标签地址的其他位进行比较,
基于比较的结果确定存在高速缓存命中还是高速缓存未命中;
更新控制器,被配置为响应于高速缓存未命中被确定,
基于所述多条标签数据中的每条标签数据的较高的位和标签地址的较高的位之间的比较结果,将包括在所述组中且与所述多条标签数据对应的多条高速缓存数据中的一条高速缓存数据确定为更新候选,
用新数据对更新候选进行更新,其中,更新控制器被配置为:
响应于与一条高速缓存数据对应的一条标签数据的较高的位与标签地址的较高的位不匹配,将该条高速缓存数据确定为更新候选。
22.如权利要求21所述的高速缓冲存储器设备,其中,标签比较器被配置为:
响应于所述多条标签数据中的任何一条都与标签地址不匹配,确定存在高速缓存未命中;
响应于所述多条标签数据中的任何一条与标签地址匹配,确定存在高速缓存命中。
CN201510463551.6A 2014-09-17 2015-07-31 高速缓冲存储器系统及其操作方法 Active CN106201915B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140123704A KR102354990B1 (ko) 2014-09-17 2014-09-17 캐시 메모리 시스템 및 그 동작방법
KR10-2014-0123704 2014-09-17

Publications (2)

Publication Number Publication Date
CN106201915A CN106201915A (zh) 2016-12-07
CN106201915B true CN106201915B (zh) 2020-06-09

Family

ID=53719643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510463551.6A Active CN106201915B (zh) 2014-09-17 2015-07-31 高速缓冲存储器系统及其操作方法

Country Status (5)

Country Link
US (1) US9852070B2 (zh)
EP (1) EP2998868B1 (zh)
JP (1) JP6339987B2 (zh)
KR (1) KR102354990B1 (zh)
CN (1) CN106201915B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912476A (zh) * 2016-04-06 2016-08-31 中国科学院计算技术研究所 片上重复寻址的方法及装置
KR102636925B1 (ko) 2017-05-19 2024-02-16 모비디어스 리미티드 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치
KR20190006314A (ko) 2017-07-10 2019-01-18 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190040614A (ko) 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR20200083048A (ko) * 2018-12-31 2020-07-08 삼성전자주식회사 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법
CN109933543B (zh) * 2019-03-11 2022-03-18 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备
US11263015B1 (en) * 2019-12-05 2022-03-01 Marvell Asia Pte, Ltd. Microarchitectural sensitive tag flow
US11372647B2 (en) 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
US11307857B2 (en) 2019-12-05 2022-04-19 Marvell Asia Pte, Ltd. Dynamic designation of instructions as sensitive for constraining multithreaded execution
CN117130663B (zh) * 2023-09-19 2024-06-11 摩尔线程智能科技(北京)有限责任公司 一种指令读取方法及l2指令缓存、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131143A (en) * 1997-06-09 2000-10-10 Nec Corporation Multi-way associative storage type cache memory
US6493797B1 (en) * 2000-03-31 2002-12-10 Intel Corporation Multi-tag system and method for cache read/write
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
CN102160040A (zh) * 2008-09-17 2011-08-17 松下电器产业株式会社 高速缓存存储器、存储器系统、数据复制方法及数据改写方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086857A (ja) * 1994-06-17 1996-01-12 Mitsubishi Electric Corp キャッシュメモリ
TW374873B (en) 1997-06-30 1999-11-21 Hyundai Electronics Ind A high-performance LRU memory capable of supporting multiple ports
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
JP2000330869A (ja) * 1999-05-19 2000-11-30 Hitachi Ltd キャッシュメモリ装置
US6449694B1 (en) * 1999-07-27 2002-09-10 Intel Corporation Low power cache operation through the use of partial tag comparison
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US7133971B2 (en) 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6950904B2 (en) 2002-06-25 2005-09-27 Intel Corporation Cache way replacement technique
US7020748B2 (en) 2003-01-21 2006-03-28 Sun Microsystems, Inc. Cache replacement policy to mitigate pollution in multicore processors
US7069390B2 (en) * 2003-09-04 2006-06-27 International Business Machines Corporation Implementation of a pseudo-LRU algorithm in a partitioned cache
WO2005066796A1 (ja) 2003-12-22 2005-07-21 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
KR100851298B1 (ko) 2005-12-28 2008-08-08 엠텍비젼 주식회사 캐시 메모리 컨트롤러 및 이를 이용한 캐시 메모리 관리방법
US7512739B2 (en) 2006-07-05 2009-03-31 International Business Machines Corporation Updating a node-based cache LRU tree
US7545702B2 (en) 2006-07-21 2009-06-09 Freescale Semiconductor, Inc. Memory pipelining in an integrated circuit memory device using shared word lines
US8364900B2 (en) 2008-02-12 2013-01-29 Oracle America, Inc. Pseudo-LRU cache line replacement for a high-speed cache
US7546417B1 (en) * 2008-07-15 2009-06-09 International Business Machines Corporation Method and system for reducing cache tag bits
US8543769B2 (en) 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US8825955B2 (en) 2011-11-22 2014-09-02 The Regents Of The University Of Michigan Data processing apparatus having a cache configured to perform tag lookup and data access in parallel, and a method of operating the data processing apparatus
US9477610B2 (en) 2011-12-23 2016-10-25 Intel Corporation Address range priority mechanism
US9104542B2 (en) 2012-12-28 2015-08-11 Intel Corporation Apparatus and method for fast tag hit with double error correction and triple error detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131143A (en) * 1997-06-09 2000-10-10 Nec Corporation Multi-way associative storage type cache memory
US6493797B1 (en) * 2000-03-31 2002-12-10 Intel Corporation Multi-tag system and method for cache read/write
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
CN102160040A (zh) * 2008-09-17 2011-08-17 松下电器产业株式会社 高速缓存存储器、存储器系统、数据复制方法及数据改写方法

Also Published As

Publication number Publication date
EP2998868B1 (en) 2017-08-30
US9852070B2 (en) 2017-12-26
US20160077969A1 (en) 2016-03-17
JP2016062613A (ja) 2016-04-25
KR20160032934A (ko) 2016-03-25
JP6339987B2 (ja) 2018-06-06
KR102354990B1 (ko) 2022-01-24
EP2998868A1 (en) 2016-03-23
CN106201915A (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
CN106201915B (zh) 高速缓冲存储器系统及其操作方法
US20170132147A1 (en) Cache with address space mapping to slice subsets
US10621093B2 (en) Heterogeneous computing system configured to adaptively control cache coherency
US11704036B2 (en) Deduplication decision based on metrics
CN104756090B (zh) 提供扩展的缓存替换状态信息
KR102028252B1 (ko) 자율 메모리 아키텍처
US10628066B2 (en) Ensuring in-storage data atomicity and consistency at low cost
US20200117400A1 (en) Parallel Memory Access and Computation in Memory Devices
TWI645287B (zh) 用於卸載來自處理元件之指標追逐操作之近記憶體加速器及其方法、系統和電腦程式產品
CN108431831A (zh) 循环代码处理器优化
US20180189230A1 (en) Processor in non-volatile storage memory
US20170371668A1 (en) Variable branch target buffer (btb) line size for compression
JP2021506032A (ja) オンチップの計算ネットワーク
CN103777898A (zh) 操作存储器设备的方法及系统
US11321092B1 (en) Tensor-based memory access
US20210082520A1 (en) Processor in non-volatile storage memory
KR20140006143A (ko) 공유된 캐쉬들을 제공하는 방법 및 장치
US20230273736A1 (en) Interconnected memory grid with bypassable units
CN103295257A (zh) 渲染系统和方法
US10719982B2 (en) Surface extrction method, apparatus, and non-transitory computer readable storage medium thereof
JP6229990B2 (ja) 連想記憶装置、インデックス生成器、及び登録情報更新方法
US20200117449A1 (en) Accelerated Access to Computations Results Generated from Data Stored in Memory Devices
US9798550B2 (en) Memory access for a vector processor
US8533423B2 (en) Systems and methods for performing parallel multi-level data computations
JP5453500B2 (ja) ストア制御装置、情報処理装置、および、ストア制御方法

Legal Events

Date Code Title Description
C06 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