CN1659526A - 具有基于线程标识符的缓存清除的多线程缓存方法和装置 - Google Patents

具有基于线程标识符的缓存清除的多线程缓存方法和装置 Download PDF

Info

Publication number
CN1659526A
CN1659526A CN038129469A CN03812946A CN1659526A CN 1659526 A CN1659526 A CN 1659526A CN 038129469 A CN038129469 A CN 038129469A CN 03812946 A CN03812946 A CN 03812946A CN 1659526 A CN1659526 A CN 1659526A
Authority
CN
China
Prior art keywords
cache
catalogue
memory
subclauses
clauses
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
CN038129469A
Other languages
English (en)
Other versions
CN1317645C (zh
Inventor
俄代姆·霍克尼克
约翰·C.·格罗斯尼尔
阿瑟·J.·霍安
梅安·贸德基尔
王胜宏
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.)
Alamo acquiring company
Original Assignee
Sandbridge Technologies Inc
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 Sandbridge Technologies Inc filed Critical Sandbridge Technologies Inc
Publication of CN1659526A publication Critical patent/CN1659526A/zh
Application granted granted Critical
Publication of CN1317645C publication Critical patent/CN1317645C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/12Replacement control
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel

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

一种用于在多线程处理器中使用的高速缓冲存储器,包括多个组关联线程高速缓存,带有一个或多个线程高速缓存(400′),每一个都实现基于线程的清除处理,其减少了所述高速缓冲存储器中所需的替换策略存储量。在示例性实施例中,至少一个特定线程高速缓存包括具有多组存储位置(组1-组4)的存储器阵列(402)和用于存储标签(404-k)的目录(404),每个标签与存储位置之一的特定地址的至少一部分相对应,所述目录(404)具有多个条目,每个条目存储多个标签(404-k),从而如果存储器阵列中有n组存储位置,则有n个标签(404-k)与各目录条目相关联。目录(404)被用于在访问请求和存储器阵列的存储位置之间实现组关联地址映射。结合一个高速缓存未命中事件,至少部分地基于给定线程高速缓存的线程标识符的至少一部分,从该给定的线程高速缓存中选出一个特定存储位置中的条目用于清除。

Description

具有基于线程标识符的缓存 清除的多线程缓存方法和装置
相关申请
本发明与美国专利申请代理人案卷No.1007-3所描述的发明相关,该发明与本发明同时提交,标题为“Method and Apparatus forMultithreaded Cache with Simplified Implementation of CacheReplacement Policy”,其全文在此合并作为参考。
技术领域
本发明一般涉及计算机结构的领域,尤其涉及用于在多线程处理器中使用的高速缓冲存储器。
背景技术
如所公知的,处理器通常与包括一个级别的不同存储器元件的存储器系统一起使用。例如,如M.J.Flynn的“Computer Architecture:Pipelined and Parallel Processor Design”,Jones and BartlettPublishers Boston,MA,1995中所描述的,这种内存系统可包括后备存储器、主存储器以及高速缓冲存储器。
后备存储器代表分级存储器系统中的最高级存储器,在访问时间方面与处理器相差很远,并通常需要大量的循环来访问。代表性的示例是硬盘驱动器。后备存储器具有吉比特级(GB)的容量,访问时间大约为10-3秒。
主存储器或1级存储器在访问时间方面还算接近处理器。代表性的示例是动态随机访问存储器(DRAM)。其典型的容量为兆比特(MB)级,但访问速度比后备存储器快得多,通常量级为10-8秒。
高速缓冲存储器,也被称为0级存储器或简称为“高速缓存”,其为最频繁使用的数据提供有效而高速的访问,在访问时间方面最接近于处理器。代表性的示例是静态随机访问存储器(SRAM)。其通常很小,容量为千字节(KB)级,而访问速度非常快,量级为10-9秒。
高速缓冲存储器依据局域性(locality)原理工作。局域性包括空间、时间或顺序局域性。空间局域性涉及这样的可能性:处理器执行的程序在执行期间将访问相同或邻近的存储位置。时间局域性涉及这样的性质:如果程序包括对多个不同位置的一系列访问,则非常可能该系列之后的访问也访问与该序列相联系的位置。顺序局域性涉及这样的性质:如果已经访问了特定的位置S,那么随后可能访问位置S+1。处理器数据访问在本文被称为“引用(reference)”。
由高速缓存控制器实现的地址映射控制功能确定如何在高速缓存中存储数据,以及如何将数据从1级或更高级存储器中移到高速缓存中。如果高速缓存满足了特定的处理器数据访问,则该访问被称为“高速缓存命中(cache hit)”,否则被称为“高速缓存未命中(cachemiss)”。高速缓存通常从更高级的存储器中取出多个存储行(line)。该行的大小通常被设计为与被执行的程序的预期空间局域性相一致。
可以组织高速缓存以按需取数据或预取数据。大多数处理器使用按需取的方法,从而当出现高速缓存未命中时,高速缓存控制器将清除当前行并用处理器所引用的行替换它。在预取方法中,高速缓存控制器试图预测将需求哪些行,并随后在处理器引用它们之前将这些行移到高速缓存中。
在常规高速缓冲存储器中使用的寻址映射控制的三种基本类型是全关联映射(fully associative mapping)、直接映射(direct mapping)和组关联映射(set-associate mapping)。全关联映射和直接映射方法分别在图1和2中示出。在这些附图中,为了使说明简化和清楚,省略了高速缓存控制器及至少一部分与其相应的映射逻辑电路。
图1示出了使用全关联地址映射的高速缓冲存储器100。该高速缓存100包括存储器阵列102和目录104。该图示出了高速缓存处理访问请求106的方式。访问请求106包括标签110、偏移112和字节/子(B/W)选择字段114。示例性地,访问请求106的部分110、112和114的长度可以分别是18比特、3比特和3比特。标签110与目录104中的条目(entry)比较。如果在目录104的特定条目104-k的标签120与访问请求106的标签110相匹配,则为高速缓存命中。在这种情况下,同样存储在目录104的条目104-k中的相应地址122被与访问请求106的偏移112相结合使用,以识别存储器阵列102中的特定行102-j。随后将所请求的行发送给处理器。如果标签110与目录104中存储的任何标签都不匹配,则为高速缓存未命中。所示的存储器阵列102包括4KB数据,每行8字节地排列在512行中。如图所示,存储器阵列102中的512行中的特定行被唯一的9位地址识别,该9位地址包括来自目录104的6位地址122和3位偏移112。
图2示出了使用直接映射的高速缓冲存储器200。高速缓存200包括存储器阵列202和目录204。图中示出了高速缓存处理访问请求206的方式。访问请求206包括标签210、索引211、偏移212和B/W字段214。示例性地,访问请求206的部分210、211、212和214的长度可以分别是10比特、8比特、3比特和3比特。依据直接映射的方法,索引211被用于识别目录204中的特定条目204-k。该特定条目204-k包括一标签220。由于只有索引211被用于识别目录204中的特定条目,因而对不同地址的访问请求将被映射到目录204中相同的位置。因此在比较器222中比较所得的标签220与访问请求206中的标签210,如果两个标签匹配,则其匹配输出被置为逻辑高电平,否则被置为逻辑低电平。匹配输出被用作门224的启用信号,门224判断根据索引211和偏移212所确定的存储器阵列202的特定条目202-j是否将提供给处理器。如果存储在目录204的条目204-k中的标签220与访问请求206中的标签210相匹配,则为高速缓存命中,否则为高速缓存未命中。所示的存储器阵列202包括16KB的数据,每行8字节地排列在2048行中。因此,存储器阵列202中的2048行中的特定行由唯一的11比特地址识别,该11比特地址包括8比特索引211加上3比特的偏移212。
组关联高速缓存的操作方式与上述的直接映射高速缓存200类似,只是可能出现对访问请求地址的多次选择机会。组关联高速缓存的存储器阵列被分为不同的部分或组,并且该目录在其各条目中包括多个标签,各标签与这些组中的一组相对应。各访问请求地址的标签部分与由访问请求的引用部分所标识的所述目录的特定条目中的各标签相比较。如果发现了匹配,则该比较结果还被用于从存储器阵列的一个组中选出一行,传送给处理器。
如果上述高速缓冲存储器之一发生了高速缓存未命中,则通常从高速缓存中清除(evict)相应的数据,获取正确的数据并存储在高速缓存中。可用来确定哪个数据被清除的替换策略很多。例如,最近最少使用(LRU)替换策略试图通过总是去除与缓存中没有被访问的最老位置相关联的数据利用时间局域性。为了维持状态信息来实现n个资源的LRU替换策略(其中n例如指明了在组关联高速缓冲存储器中的组数),一种已知的方法要求n2位的状态信息。如G.A.Blaauw等人的“Computer Architecture:concept andEvolution,”Addison-Wesley,Reading,MA,1997中所描述的,已经发展了进一步的改进,将对状态信息的要求降低到n(n-1)/2位,该文在此合并作为参考。在高速缓冲存储器中使用的替换策略的其他示例包括随机替换和先入先出(FIFO)替换。
图1和图2中的示例存储器高速缓存是在处理器从存储位置读取数据的上下文中描述的。对于处理器向存储位置写入数据来说,场景是类似的。主要差别在于数据被处理器写入高速缓存的存储器阵列中的适当位置,随后高速缓存必须确定何时将该数据写回主存储器。直写(write-through)高速缓存立即存储到主存储器和高速缓冲存储器阵列。如果一行中的任何位置发生了写入,则回写(copy-back)高速缓存将该给定行标记为“脏”,只有在该行将被清除并标记为脏时,才更新主存储器。
与上述类型的常规高速缓冲存储器相联系的重要问题是在与多线程处理器(也就是说,支持同时执行多个独立的指令序列或“线程”的处理器)一起使用时,它们通常不是最优的。因而存在着提高多线程处理器实现缓冲存储器的技术的需求。
发明内容
本发明提供了一种改进的多线程高速缓冲存储器,在示例性实施例中,在发生高速缓存未命中时,使用线程识别器来控制决定从高速缓存中清除一行或多行或其他条目。
依据本发明的一个方面,用于在多线程处理器中使用的高速缓冲存储器包括多个组关联线程高速缓存(thread cache),组关联线程高速缓存具有一个或多个线程高速缓存,每个线程高速缓存实现基于线程的清除处理,减少高速缓冲存储器中所要求的替换策略存储量。
在示例性实施例中,一个或多个线程高速缓存中的每一个包括具有多组存储位置的存储器阵列和用于存储标签的目录,每个标签与其中一个存储位置的特定地址的至少一部分相对应。该目录具有多个条目,每个条目存储多个标签,从而如果存储器阵列中有n组存储位置,则有n个标签与各目录条目相关联。目录被用于在访问请求和存储器阵列的存储位置之间实现组关联地址映射。至少部分地基于所述线程高速缓存的线程标识符,结合一个高速缓存未命中事件,从特定线程高速缓存中选出一个特定存储位置的条目用于清除。
作为更具体的示例,该目录可以被分为第一部分和第二部分,每个部分在目录中的给定条目中具有的两个或多个标签,所述线程标识符的最低位被用于选择目录的一部分,从该部分中,标签被选出用于从线程高速缓存中清除。在使用线程标识符的最低位选择出目录的特定部分之后,可使用一个或更多的替换策略比特来确定来自被选出部分的特定标签。随后将该特定标签及其相应存储位置条目从高速缓存中清除。
本发明有利地减少了高速缓冲存储器中的替换策略状态复杂度,允许用比其他情况所需电路较少的电路实现替换策略,从而比上述常规方法节省电路面积和功率。
附图说明
图1示出了利用全关联映射的常规高速缓冲存储器;
图2示出了利用直接映射的常规高速缓冲存储器;
图3A是其中实现了本发明的示例性处理系统的方框图;
图3B是图3A的处理系统中的多线程处理器的更详细的方框图,示出了其中实现了本发明的多线程高速缓存;
图4示出了利用可与本发明一起使用的组关联映射的高速缓冲存储器;
图5示出了依据本发明的示例性实施例的高速缓冲存储器。
具体实施方式
本发明在此被示意为在多线程处理器的多线程高速缓冲存储器中实现。然而,应该明白,本发明并不是必须使用示例性实施例中的特定多线程高速缓存以及处理器配置,本发明更一般地适用于任何涉及线程处理的组关联高速缓冲存储器应用,并用于降低所需的替换策略复杂度。
将结合图3A、图3B、图4和图5描述实现了依据本发明的多线程高速缓冲存储器的示例性处理系统300。图3A示出了处理器300,该处理器300包括与主存储器304相连接的多线程处理器302。图3B示出了多线程处理器302的一可能实现的更详细的视图。在该实施例中,多线程处理器302包括多线程高速缓存310、数据存储器312、高速缓存控制器314、指令解码器316、寄存器文件318和一组算数逻辑单元(ALU)320。多线程高速缓存310在本文中也被称为高速缓冲存储器。应该强调的是:图3A和图3B所示的特定结构是为了清楚地说明而被简化了的,可以包括图中未明确示出的另选或附加的部件,这对本领域的技术人员是显而易见的。
多线程高速缓存310包括多个线程高速缓存310-1、310-2、...、310-N,其中N泛指被多线程处理器支持的线程的数目。因而每个线程在多线程高速缓存310中具有与其关联的相应线程高速缓存。类似地,数据存储器312包括N个独立的数据存储器实例,由所示的数据存储器312-1、312-2、...、312-N指示。
多线程高速缓存310通过高速缓存控制器314与主存储器304相接。高速缓存控制器314可确保来自主存储器304的适当指令被载入多线程高速缓存310。在该示例性实施例中,高速缓存控制器314与各线程高速缓存310-1、310-2、...、310-N相关联的逻辑电路或其他处理部件协同操作,实现组关联地址映射和最近最少使用(LRU)替换策略的至少一部分。下面结合图4和图5更详细地描述组关联地址映射和LRU替换策略。然而示例性实施例的特定映射方法和LRU替换策略不应被解释为对本发明的限制。其他的组关联映射实现和另选的替换策略诸如随机替换或FIFO替换也可与本发明结合使用。
通常,多线程高速缓存310被用于存储将被多线程处理器302执行的存储指令,而数据存储器312存储被该指令操作的数据。由指令解码器316从多线程高速缓存310中取出指令,指令解码器316与寄存器文件318和ALU320协同操作,以常规方式控制指令的执行。多线程处理器部件诸如316、318、320的操作在本领域内是公知的,因此本文没有深入详细地描述。
图4示出了可以在多线程高速缓存310的一个特定线程高速缓存中实现的组关联地址映射。如图4所示,组关联地址映射不包括本发明的改进的基于线程的高速缓存清除技术。图5示出了被配置并入了依据本发明的基于线程的高速缓存清除的图4的线程高速缓存。
先参照图4,图4示出了利用组关联地址映射的线程高速缓存400。线程高速缓存400被假定为与图3B所示的多线程高速缓存310中的一个特定线程高速缓存相对应。多线程310中的其他线程高速缓存的子集或全部可以以类似的方式实现。所示的线程高速缓存400包括存储器阵列402和目录404。存储器阵列402包括许多不同的存储位置组。在该实施例中,不同的存储位置组的数目为4,该四个组由组1、组2、组3、组4指明,但其他的实施例使用的组也可多于或少于4个。目录404包括多个条目,每个条目存储4个标签。在目录404的给定条目中的每个标签对应于存储器阵列402中的一对应组中的特定存储位置的地址。更具体地,目录404中的给定条目404-k包括4个所示的不同标签。每个标签控制到存储器阵列402的组组1、组2、组3、组4之一中的相应存储位置的映射。通常,在这种类型的组关联高速缓存中,如果存储器阵列402包括n组存储位置,则目录404的每个条目中存储n个标签。因此目录404可被视为被分成了所示的4个部分。这些部分由图中的1、2、3、4指明,每个部分只与目录404中的各条目中的单个标签相关联。
在图4的组相关线程高速缓存400中,示例性访问请求406被包括标签410、索引411、偏移412和B/W字段214的高速缓存处理。访问请求可能来自于与多线程处理器302的指令获取操作相协同的指令解码器316。如图所示,访问请求406的部分410、411、412和414的长度可以分别是12比特、6比特、3比特和3比特。这些字段的长度和特定访问请求结构仅仅是示例的方式而已,无论如何也不能解释为对本发明的范围的限制。依据组相关映射方法,索引411被用于识别目录404中的特定条目404-k,该特定条目404-k与本实施例中各其他目录条目一样,包括所示的4个标签,每个标签与存储器阵列402的组组1、组2、组3或组4中的一个相关联。假定每个标签的长度不限于与标签410的长度(也就是说,本实施例中的12比特)相同。被识别出的条目404-k的这些标签中的每一个在4个比较器416的与其相应的一个比较器中与标签410相比较。更具体地,来自目录条目404-k的部分1的第一标签在比较器416-1中与标签410相比较,来自部分2的第二标签在比较器416-2中与标签410相比较,来自部分3的第三标签在比较器416-3中与标签410相比较,来自部分4的第四标签在比较器416-4中与标签410相比较。这些比较器416的输出形成一组选择信号,用于选择组组1、组2、组3或组4中与该信号对应的组。
如果在标签410和来自目录条目404-k的一个标签发生匹配,则对应的选择信号被启用,例如被驱动到逻辑高电平。否则,即为高速缓存未命中,而没有选择信号被启用。在给定的时间只启用选择信号中的一个。该选择信号被施加到多路复用器418的选择信号输入端,多路复用器418根据被启用的一个特定选择信号,从存储器阵列402的被选出的组中的对应存储位置选择该行,传送到处理器。更具体地,在本实施例中,所需的行将被传送到指令解码器316解码并在多线程处理器302中执行。
所示的存储器阵列402包括16KB的数据,每行8字节的排列在2048行中。各组组1、组2、组3和组4中的每一个包括512行。因此由唯一的9比特地址来标识存储器阵列402的四个不同组中的给定组中的特定一行,在本实施例中,该9比特地址包括6比特索引411加上3比特偏移412。
依据本发明的一个方面,在发生高速缓存未命中事件时,至少部分地基于给定线程高速缓存的线程标识符,选出存储器阵列402中的一个给定组中的一个特定存储位置中的一行或其他条目用于清除。如前面所指示的,将结合图5更详细地描述基于线程的清除处理。
现在参照图5,其示出了线程高速缓存400′。线程高速缓存400′对应于图3B的多线程高速缓存310中的一个特定线程高速缓存。可以以类似的方式配置多线程高速缓存310中的其他线程高速缓存的全部或子集。线程高速缓存400′包括存储器阵列402、目录404、比较器416和多路复用器418,在处理访问请求(例如访问请求406时),每一个的操作基本与前面结合图4的描述相同。线程高速缓存400′还包括:包括低位或最低有效位(LSB)504的线程标识符寄存器502、清除条目判定多路复用器506和508以及替换策略存储器元件,在本实施例中,该替换策略存储器元件为LRU状态寄存器510的形式。
虽然在图5中将线程识别寄存器502、清除条目判定多路复用器506和508以及LRU状态寄存器示为线程高速缓存400′的部件,但每个都可以部分或全部地在线程高速缓存之外实现。例如,在给定线程高速缓存中的地址映射和替换策略实现所相关的这些和其他元件可以部分或全部地在高速缓存控制器314或多线程处理器302的另一部分中实现。
线程标识符寄存器502存储一个多位的线程标识符,该多位线程标识符被多线程处理器302用于识别与线程高速缓存400′相对应的特定线程。这种线程标识符可以以常规的方式产生,这是本领域技术人员都清楚的。在该示例性实施例中,LRU状态寄存器510包括一个一位寄存器,其存储单个比特512的状态信息。
在本文所使用的术语“线程标识符”意在包括适于识别多线程处理器中的特定线程或一组多个线程的任何信息。示例性而非限制性地,该线程标识符可以与多线程处理器中的线程计数器的输出对应。更具体地,给定的多线程处理器可以配置为以预定的顺序(例如循环顺序(Round robin order))处理多个线程,线程计数器的输出被用于识别被执行的特定线程。在该实施例中,可以以循环顺序处理总计8个线程,每个线程被3位的识别器识别,从而3位计数器的输出可以用于识别被处理的特定线程。其他的实施例可以使用线程标识符的非计数器实现。适于与本发明一起使用的大量不同的线程标识符配置对本领域技术人员是显而易见的。
清除条目判定多路复用器506和508共同地确定将从目录404中清除的特定标签,从而从存储器阵列402的对应存储位置中清除一个条目。
如图5所示,目录404被分成所示的左部分和右部分。更具体地,目录的左部分404包括最左侧的部分1和2,目录404的右部分包括最右侧的部分3和4。因而左部分和右部分整体地包括了整个目录404。而左部分和右部分中的每一个包括用于目录404的每个条目的两个标签。线程标识符寄存器502的LSB 504作为选择信号被施加到多路复用器506,以从4个输入中选择两个用于传播到多路复用器508的输入端。多路复用器506的四个输入由所示的t0L、t1L,t0R、t1R指明,并分别对应于来自目录左部分的标签0、目录左部分的标签1、目录右部分的标签0、目录右部分的标签1。LSB504用于选择传播到多路复用器508的输入端的左目录标签或右目录标签。
多路复用器508的输入因而是左目录标签t0L、t1L或右目录标签t0R、t1R。将作为选择信号的LRU比特512提供给多路复用器508,并从而用于选择所施加的左或右目录标签中的一个,用于从线程高速缓存400′中清除。一旦选出了用于清除的给定标签,则可以以常规方式从线程高速缓存中清除该标签及其相应的存储位置,例如可以用本领域熟知的用新条目信息进行覆盖的方式。
上述基于线程的高速缓存清除技术相对于常规技术产生了显著的进步。例如该技术显著减少了必须被存储以实现LRU替换策略的状态信息的量。更具体地,在上述基于组关联高速缓存的示例性实施例中,具有4个组,也就是n=4,只需要单个的一位寄存器来存储用于LRU替换策略的状态信息。前述常规技术需要n2或n(n-1)/2比特的替换策略状态信息,而上述假定只使用一位线程标识符的示例性实施例中的基于线程的清除技术需要n(n-2)/8位状态信息。该示例性实施例相对常规技术的改进在下表中作为n的示例值的函数示出。
组数(n)     n2   n(n-1)/2   n(n-2)/8
    2     4     1     0
    4     16     6     1
    8     64     28     6
    16     256     120     28
    32     1024     496     120
    64     4096     2016     496
另外,通过减少实现替换策略所必须存储的状态信息的数量,本发明还减少了多线程高速缓冲存储器所需的电路面积和功率。
如上所述,前述表格假定只使用一位的线程标识符来实现本发明的高速缓存清除技术。然而,可以使用多于一位的线程标识符。例如,n=8的实施例可以将其目录分成4个部分,每个部分在每个目录条目中具有两个标签,线程标识符的两个最低比特用于选择四个部分中的一个特定部分,根据替换策略状态信息,从该特定部分中选出一个标签用于清除。在该示例中,与图5的示例性实施例一样,只需要一个比特的替换策略信息。
虽然本发明是结合对高速缓冲存储器的存储器阵列中的存储位置的读访问进行描述的,但本发明还可用于对这种位置的写访问。另外,可以根据本文的公开,以直截了当的方式修改常规的写技术以实现本发明的用于写访问的技术。
如前面所指出的,本发明可以在能够配置用于实现组关联映射的任何多线程处理器中使用。这种处理器更具体的示例在2001年12月20日提交的美国专利申请No.60/341,289中详细描述,该申请在此被合并作为参考。
本发明的上述实施例仅仅是实施例性的,在所附权利要求范围内的大量可选实施例对本领域技术人员是显而易见的。例如,在图5中,给定的线程高速缓存目录可以分为比只分成左部分和右部分更多的部分,也就是说,可以被分成三个或更多的独立部分,并适当地增加用于选择从目录条目中清除的特定标签的线程标识符和替换策略比特。在该示例性实施例中用于实现清除条目判定的特定电路结构可以被可选的结构所替换。如上面所指明的,可以改变组的数目n。另外,可以使用其他的替换策略,诸如随机替换或FIFO替换,来代替示例性实施例的LRU替换策略。作为关于随机替换的更具体的示例,一个或更多比特的线程标识符可以被用于判定在给定的目录内,在什么地方发生特定的随机替换。

Claims (15)

1.一种用于在多线程处理器中使用的高速缓冲存储器,所述高速缓冲存储器包括多个线程高速缓存,所述线程高速缓存中的至少一个给定的线程高速缓存包括:
包括多组存储位置的存储器阵列;和
用于存储标签的目录,每个标签与其中一个存储位置的特定地址的至少一部分相对应,所述目录具有多个条目,每个条目存储多个标签;
其特征在于,结合一个高速缓存未命中事件,至少部分地基于所述给定的线程高速缓存的线程标识符的至少一部分,从所述给定的线程高速缓存中选出一个特定的存储位置中的条目用于清除。
2.根据权利要求1所述的高速缓冲存储器,其特征在于,所述多组存储位置包括n组存储位置,并且每个目录条目存储n个标签。
3.根据权利要求2所述的高速缓冲存储器,其特征在于,存储在所述给定的线程高速缓存中的替换策略状态信息比特的总数为大约n(n-2)/8。
4.根据权利要求1所述的高速缓冲存储器,其特征在于,所述给定的线程高速缓存作为组关联高速缓存操作。
5.根据权利要求1所述的高速缓冲存储器,其特征在于,所述给定的线程高速缓存还包括用于存储所述线程标识符的线程寄存器。
6.根据权利要求1所述的高速缓冲存储器,其特征在于,所述给定的线程高速缓存还包括一个寄存器,用于存储一个或多个替换策略比特,至少部分地基于所述线程标识符和所存储的一个或多个替换策略比特选出从所述给定的线程高速缓存中选择的用于清除的所述存储位置条目。
7.根据权利要求6所述的高速缓冲存储器,其特征在于,所述线程标识符的一个和多个比特用于确定所述目录的一个特定部分,从该特定部分中选出一个标签,用于确定将从所述给定的线程高速缓存中清除的条目,所述特定部分在其一给定条目中具有与所述条目相关联的多个标签,并且所述一个或多个存储的替换策略比特从与基于所述线程标识符的一个或多个比特所确定的特定部分相关联的多个标签中确定所选出的标签。
8.根据权利要求1所述的高速缓冲存储器,其特征在于,所述给定的线程高速缓存使用最近最少使用(LRU)替换策略来选择将从所述线程高速缓存中清除的特定条目。
9.根据权利要求1所述的高速缓冲存储器,其特征在于,所述线程标识符的一个或多个最低有效位被用于确定所述目录的一个特定部分,从该特定部分中选出一个与将被清除的存储位置条目相对应的标签。
10.根据权利要求1所述的高速缓冲存储器,其特征在于,所述目录被组织为第一部分和第二部分,该目录的每个条目在所述目录的第一部分中具有一个或多个相关标签,并且在所述目录的第二部分中具有一个或多个相关标签,而且所述线程标识符的最低有效位被用于确定是从所述目录的第一部分还是从所述目录的第二部分选择与将被清除的条目相对应的标签。
11.根据权利要求1所述的高速缓冲存储器,还包括与至少所述给定的线程高速缓存相关的清除判定电路,并包括:
第一选择电路,用于基于所述线程标识符的一个或多个比特,选出在该目录的给定条目中标签总数的子集;以及
第二选择电路,用于基于与给定线程高速缓存相关联的一个或多个替换策略比特,选择所述标签子集中的一个特定标签用于从所述目录中清除。
12.根据权利要求11所述的高速缓冲存储器,其特征在于,所述第一选择电路包括第一多路复用器,所述第一多路复用器具有多个输入端以及一个选择信号,每个输入端与所述标签中的一个相对应,而所述选择信号与所述线程标识符的一个或多个比特相对应。
13.根据权利要求12所述的高速缓冲存储器,其特征在于,所述第二选择电路包括第二多路复用器,所述第二多路复用器包括多个输入端以及一个选择信号,每个输入端与所述第一多路复用器的一个输出端相对应,而所述选择信号与一个或多个替换策略比特相对应。
14.一种多线程处理器,包括:
高速缓冲存储器,用于存储要被所述处理器执行的指令;
数据存储器,用于存储依据所述指令处理的数据;
指令解码器,用于解码从所述高速缓冲存储器中取出的指令;以及
一个或多个算术逻辑单元,用于依据所述解码的指令对所述数据进行操作;
其特征在于,所述高速缓冲存储器包括多个线程高速缓存,所述线程高速缓存中的至少一个给定的线程高速缓存包括:
包括多组存储位置的存储器阵列;和
用于存储标签的目录,每个标签与其中一个存储位置的特定地址的至少一部分相对应,所述目录具有多个条目,每个条目存储多个标签;
其特征在于,结合一个高速缓存未命中事件,至少部分地基于所述给定的线程高速缓存的线程标识符的至少一部分,从所述给定的线程高速缓存中选出一个特定存储位置中的条目用于清除。
15.一种用于控制多线程处理器中的高速缓冲存储器的方法,所述高速缓冲存储器包括多个线程高速缓存,所述线程高速缓存中的至少一个给定的线程高速缓存包括具有多组存储位置的存储器阵列和用于存储标签的目录,每个标签与其中一个存储位置的特定地址的至少一部分相对应,所述目录具有多个条目,每个条目存储多个标签;所述方法包括步骤:
确定在所述给定的线程高速缓存中发生了高速缓存未中事件;以及
结合所述高速缓存未命中事件,至少部分地基于所述给定的线程高速缓存的线程标识符的至少一部分,从所述给定的线程高速缓存中选出一个特定的存储位置中的条目用于清除。
CNB038129469A 2002-06-04 2003-06-03 具有基于线程标识符的缓存清除的多线程缓存方法和装置 Expired - Fee Related CN1317645C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/161,774 2002-06-04
US10/161,774 US6990557B2 (en) 2002-06-04 2002-06-04 Method and apparatus for multithreaded cache with cache eviction based on thread identifier

Publications (2)

Publication Number Publication Date
CN1659526A true CN1659526A (zh) 2005-08-24
CN1317645C CN1317645C (zh) 2007-05-23

Family

ID=29583482

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038129469A Expired - Fee Related CN1317645C (zh) 2002-06-04 2003-06-03 具有基于线程标识符的缓存清除的多线程缓存方法和装置

Country Status (7)

Country Link
US (1) US6990557B2 (zh)
EP (1) EP1532532A4 (zh)
JP (1) JP2005528694A (zh)
KR (1) KR100962058B1 (zh)
CN (1) CN1317645C (zh)
AU (1) AU2003243368A1 (zh)
WO (1) WO2003102780A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231621B (zh) * 2006-12-27 2011-10-19 英特尔公司 隐藏存储器访问模式
CN101730885B (zh) * 2007-06-28 2013-03-27 英特尔公司 用于多线程和多核心系统的高速缓存及其方法
CN110023916A (zh) * 2016-12-16 2019-07-16 阿里巴巴集团控股有限公司 一种减少缓存中读/写竞争的方法和装置
CN111026680A (zh) * 2018-10-09 2020-04-17 Arm有限公司 将第一标识符映射到第二标识符
CN111190836A (zh) * 2018-11-14 2020-05-22 爱思开海力士有限公司 具有高速缓存系统的存储系统

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4363716B2 (ja) * 1999-06-25 2009-11-11 株式会社東芝 Lsiの配線構造の設計方法
JP3981070B2 (ja) * 2003-12-26 2007-09-26 株式会社東芝 キャッシュリプレース装置及びキャッシュリプレース方法
US7213107B2 (en) 2003-12-31 2007-05-01 Intel Corporation Dedicated cache memory
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
EP1834231A1 (en) * 2004-12-10 2007-09-19 Koninklijke Philips Electronics N.V. Data processing system and method for cache replacement
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
KR20090078790A (ko) * 2006-09-26 2009-07-20 샌드브리지 테크놀로지스, 인코포레이티드 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법
WO2008060948A2 (en) * 2006-11-10 2008-05-22 Sandbridge Technologies, Inc. Method and system for parallelization of pipelined computations
US7958320B2 (en) * 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US7991956B2 (en) * 2007-06-27 2011-08-02 Intel Corporation Providing application-level information for use in cache management
EP2602710A1 (en) * 2007-11-05 2013-06-12 Aspen Acquisition Corporation Method of encoding register instruction fields
JP5217432B2 (ja) 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
WO2009097444A1 (en) * 2008-01-30 2009-08-06 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
KR20100126690A (ko) * 2008-02-18 2010-12-02 샌드브리지 테크놀로지스, 인코포레이티드 널-종료 문자열 동작을 가속화하는 방법
US8762641B2 (en) * 2008-03-13 2014-06-24 Qualcomm Incorporated Method for achieving power savings by disabling a valid array
WO2010017263A1 (en) 2008-08-06 2010-02-11 Sandbridge Technologies, Inc. Haltable and restartable dma engine
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9122786B2 (en) * 2012-09-14 2015-09-01 Software Ag Systems and/or methods for statistical online analysis of large and potentially heterogeneous data sets
US9588893B2 (en) 2014-11-10 2017-03-07 International Business Machines Corporation Store cache for transactional memory
US9971693B2 (en) 2015-05-13 2018-05-15 Ampere Computing Llc Prefetch tag for eviction promotion
CN106649139B (zh) * 2016-12-29 2020-01-10 北京奇虎科技有限公司 一种基于多个缓存的数据淘汰方法及装置
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
KR20200112435A (ko) 2019-03-22 2020-10-05 에스케이하이닉스 주식회사 캐시 메모리, 이를 포함하는 메모리 시스템, 및 그의 동작 방법
CN112100089B (zh) * 2020-07-30 2023-08-01 重庆兰德适普信息科技有限公司 内存管理方法
US11593109B2 (en) * 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache lines between multiple threads
US11593108B2 (en) 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache footprint between multiple threads

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0673114B2 (ja) * 1987-03-31 1994-09-14 日本電気株式会社 キヤツシユ制御装置
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
CN1168025C (zh) * 1999-03-10 2004-09-22 国际商业机器公司 用于多线程处理机的指令高速缓存器
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6405287B1 (en) * 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
US6965982B2 (en) * 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231621B (zh) * 2006-12-27 2011-10-19 英特尔公司 隐藏存储器访问模式
US8078801B2 (en) 2006-12-27 2011-12-13 Intel Corporation Obscuring memory access patterns
CN101730885B (zh) * 2007-06-28 2013-03-27 英特尔公司 用于多线程和多核心系统的高速缓存及其方法
CN110023916A (zh) * 2016-12-16 2019-07-16 阿里巴巴集团控股有限公司 一种减少缓存中读/写竞争的方法和装置
CN110023916B (zh) * 2016-12-16 2023-07-28 阿里巴巴集团控股有限公司 一种减少缓存中读/写竞争的方法和装置
CN111026680A (zh) * 2018-10-09 2020-04-17 Arm有限公司 将第一标识符映射到第二标识符
CN111190836A (zh) * 2018-11-14 2020-05-22 爱思开海力士有限公司 具有高速缓存系统的存储系统
CN111190836B (zh) * 2018-11-14 2023-08-29 爱思开海力士有限公司 具有高速缓存系统的存储系统

Also Published As

Publication number Publication date
US6990557B2 (en) 2006-01-24
JP2005528694A (ja) 2005-09-22
US20030225975A1 (en) 2003-12-04
CN1317645C (zh) 2007-05-23
AU2003243368A1 (en) 2003-12-19
EP1532532A4 (en) 2008-05-07
KR100962058B1 (ko) 2010-06-08
WO2003102780A1 (en) 2003-12-11
KR20050005535A (ko) 2005-01-13
EP1532532A1 (en) 2005-05-25

Similar Documents

Publication Publication Date Title
CN1317645C (zh) 具有基于线程标识符的缓存清除的多线程缓存方法和装置
CN1317644C (zh) 简化了缓存替换策略的实现的多线程缓存方法和装置
US5778434A (en) System and method for processing multiple requests and out of order returns
JP2839060B2 (ja) データ処理システムおよびデータ処理方法
EP1370946B1 (en) Cache way prediction based on instruction base register
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US5584013A (en) Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
US5651136A (en) System and method for increasing cache efficiency through optimized data allocation
US4774654A (en) Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US6578111B1 (en) Cache memory system and method for managing streaming-data
US10019381B2 (en) Cache control to reduce transaction roll back
US9176856B2 (en) Data store and method of allocating data to the data store
KR20190058318A (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
GB2441435A (en) Directory cache for a plurality of caches stores information about copies of memory lines stored in the caches.
US7007135B2 (en) Multi-level cache system with simplified miss/replacement control
CN113392043A (zh) 缓存数据替换方法、装置、设备和存储介质
US6598124B1 (en) System and method for identifying streaming-data
US20050027963A1 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
US6587923B1 (en) Dual line size cache directory
US20140013054A1 (en) Storing data structures in cache
WO2002027498A2 (en) System and method for identifying and managing streaming-data
US20040015669A1 (en) Method, system, and apparatus for an efficient cache to support multiple configurations
US7143239B2 (en) Cache structure and methodology
Lee et al. Dirty-block tracking in a direct-mapped DRAM cache with self-balancing dispatch
US20210064527A1 (en) Computer architecture with unified cache and main memory and associated methods

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BAIYANG ACQUISITION CO., LTD.

Free format text: FORMER OWNER: SANDBRIDGE TECHNOLOGIES INC.

Effective date: 20101221

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: NEW YORK, USA TO: CALIFORNIA, USA

TR01 Transfer of patent right

Effective date of registration: 20101221

Address after: American California

Patentee after: Alamo acquiring company

Address before: American New York

Patentee before: Sandbridge Technologies Inc.

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070523

Termination date: 20110603