CN100511184C - 用于对芯片多处理器的共享高速缓存器分区的设备和方法 - Google Patents

用于对芯片多处理器的共享高速缓存器分区的设备和方法 Download PDF

Info

Publication number
CN100511184C
CN100511184C CNB2005100980710A CN200510098071A CN100511184C CN 100511184 C CN100511184 C CN 100511184C CN B2005100980710 A CNB2005100980710 A CN B2005100980710A CN 200510098071 A CN200510098071 A CN 200510098071A CN 100511184 C CN100511184 C CN 100511184C
Authority
CN
China
Prior art keywords
cache
path
sacrificial block
processor
shared cache
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.)
Expired - Fee Related
Application number
CNB2005100980710A
Other languages
English (en)
Other versions
CN1728112A (zh
Inventor
M·马蒂娜
A·胡安-奥米戈
J·埃默
R·马塔斯-纳瓦罗
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1728112A publication Critical patent/CN1728112A/zh
Application granted granted Critical
Publication of CN100511184C publication Critical patent/CN100511184C/zh
Expired - Fee Related 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache

Abstract

描述一种用于对芯片多处理器的共享高速缓存器分区的方法和设备。在一个实施例中,该方法包括如果依照从处理器接收的请求检测到共享高速缓存器内高速缓存器未命中,则从系统存储器请求高速缓存器块。一旦请求高速缓存器块,就依照处理器标识符和接收请求的请求类型选择共享高速缓存器内的牺牲块。在一个实施例中,依照处理器标识符和请求类型的牺牲块选择是基于成组相联的共享高速缓存器的分区,从而依照高速缓存器分区限制从可利用高速缓存器路径的子集中选择牺牲块。描述并主张了其他实施例。

Description

用于对芯片多处理器的共享高速缓存器分区的设备和方法
技术领域
本发明的一个或多个实施例通常涉及集成电路和计算机系统设计的领域,更具体地说,本发明的一个或多个实施例涉及用于对芯片多处理器的共享高速缓存器分区的方法和设备。
背景技术
芯片多处理器(CMP)包括相同管芯(die)上的几个处理器。在共享高速缓存器CMP中,高速缓存器的某一级由芯片上的一些或全部处理器共享和访问。通常,这种共享是有益的,因为处理器运行多线程软件应用,其中这些线程共享数据和指令。通过共享高速缓存器,由不止一个处理器访问的数据的字占用高速缓存器中一个位置。而且,如果其它处理器需要和允许,任何处理器可以使用所有高速缓存器。共享高速缓存器的不利之处在于,如果这些处理器共同请求的容量多于可利用的容量,它们会经历比具有较小的专用高速缓存器的情况多的总高速缓存器未命中。
在成组相联的高速缓冲存储器中,请求在高速缓冲存储器内数据的高速缓存器未命中请求从高速缓存器逐出块,在此被称为“牺牲块”,来为被请求的块腾出空位。依照高速缓存器请求的索引执行成组相联的高速缓存器的访问,该请求用于选择高速缓冲存储器内的一个集合。一旦选择了该集合,就使用高速缓存器请求的标记值来识别包含所请求高速缓存器块的所选择集合内的路径。当高速缓存器请求的标记值的比较未能识别所选择集合内的相应路径时,检测高速缓存器未命中。在共享高速缓存器中,选择要逐出的牺牲块以响应高速缓存器未命中,这随着共享高速缓存器的处理器数目而可能成问题。
附图说明
在附图的图形中,通过举例的方式而不是限定的方式来描述本发明的各种实施例,其中:
图1是依照一个实施例描述芯片多处理器(CMP)的框图,该芯片多处理器包括用来提供共享高速缓存器的分区的控制器。
图2是依照一个实施例进一步描述共享高速缓存器和图1的控制器的框图,其提供共享高速缓存器的高速缓存器分区。
图3是依照一个实施例进一步描述图2中候选牺牲块逻辑的框图。
图4是依照一个实施例描述根据共享高速缓存器分区来选择共享高速缓存器内牺牲块的方法的流程图。
图5是依照一个实施例描述用于对芯片多处理器(CMP)的共享高速缓存器分区的方法的流程图。
图6是依照一个实施例描述用于根据共享高速缓存器的高速缓存器分区方案来选择牺牲块的方法的流程图。
图7是描述使用公知技术的用于设计的仿真、模拟和制造的多种设计表示或格式的框图。
具体实施方式
描述用于对芯片多处理器(CMP)的共享高速缓存器分区的方法和设备。在一个实施例中,如果依照从处理器接收的请求检测共享高速缓存器内的高速缓存器未命中,那么该方法包括来自系统存储器的高速缓存器块的请求。一旦请求高速缓存器块,就依照处理器标识符和接收的请求的请求类型来选择共享高速缓存器内的牺牲块。在一个实施例中,依照处理器标识符和请求类型的牺牲块的选择是基于成组相联的共享高速缓存器的分区来限定根据高速缓存器的分区从可利用高速缓存路径的子集中牺牲块的选择。在一个实施例中,每个置换算法可以使用的高速缓存路径的子集可以因存储器请求的不同类型而不同,比如,需要和预取请求。
在下面的描述中,使用某个术语来描述本发明的特征。例如,术语“逻辑”代表配置为执行一个或多个功能的硬件和/或软件。例如,“硬件”的例子包括,但是不限于或约束为,集成电路、有限状态机或甚至组合逻辑。该集成电路可以采取诸如微处理器、专用集成电路、数字信号处理器、微控制器等处理器的形式。
“软件”的例子包括应用程序、小应用程序、例程或甚至一系列指令的形式的可执行代码。在一个实施例中,制造的产品可以包括带有在其中存储的软件的机器或计算机可读取介质,可以利用该软件来编程计算机(或者其他的电子设备)以依照一个实施例来执行处理。计算机或者机器可读取介质包括但不限于:可编程电子电路、包括易失存储器(例如,随机存取存储器等)和/或非易失存储器(例如,任何类型的只读存储器“ROM”、闪存)的半导体存储器件、软盘、光盘(例如,压缩光盘或者数字视盘“DVD”)、硬盘驱动盘、磁带等。
系统
图1是说明依照一个实施例的芯片多处理器(CMP)100的框图,该芯片多处理器(CMP)包括共享高速缓存器150,它带有高速缓存器分区逻辑200,用来对共享高速缓存器150分区以限制从可利用的高速缓存器路径的子集中选择牺牲块。典型地,CMP 100包含多个处理器核心110(110-1,...,110-N),其制造在相同的管芯上。如图所示,处理器核心(CPU)110连接互连网络130以访问共享高速缓存器150。在一个实施例中,每个CPU 110包括专用核心高速缓存器层次112,该层次可以用于数据的临时存储或者数据的高速缓存。
在一个实施例中,多个CPU 110通过连接到互连网络130的系统存储器互连192访问系统存储器190。在一个实施例中,系统存储器190可以包括,但是不限于包括存储模块的双面存储器封装,每个存储模块中包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)、同步动态随机存取存储器(SDRAM)、双数据速率(DDR)SDRAM(DDR-SDRAM)、Rambus DRAM(RDRAM)或者任何可支持数据的高速缓冲的器件。
典型地,共享高速缓存器150被CMP 100的多个CPU 110共享。通常,这种共享是有益的,因为CPU 110执行多线程的软件应用,其中这些线程共享数据和指令,因此减少了存储需求,也依照编程需求允许单个CPU 110访问整个共享高速缓存器。不幸地是,共享高速缓存器150的不利之处在于,如果多个CPU 110共同请求的容量大于共享高速缓存器150的可利用容量,那么多个CPU 110可能经历比他们具有较小专用高速缓存器的情况更多的总高速缓存器未命中。
因此,在一个实施例中,共享高速缓存器150通过限制哪些处理器能够分配到哪些路径中来分区。在一个实施例中,共享高速缓存器150是成组相联的共享高速缓存器,依照存储器请求的高速缓存器索引访问该成组相联的共享高速缓存器,该索引标识共享高速缓存器150内的集合。基于高速缓存器索引,在选择的集合中使用请求的标记值来识别包含被请求数据块的路径。可是,如果请求数据块没有包含在集合中(高速缓存器未命中),选择数据块用于逐出共享高速缓存器150来为请求块腾出空间,该数据块在这里被称为“牺牲块”。
在一个实施例中,允许每个CPU 110在共享高速缓存器150的任何和全部路径中找到(使用)数据,无论所述CPU最初是否实际地把数据带入高速缓存器。可是,当高速缓存器控制器(未示出)检测高速缓存器未命中和需要从共享高速缓存器150中逐出牺牲块来为请求块腾出空间时,在一个实施例中,依照从其接收存储器请求的CPU 110,高速缓存器分区逻辑200限制牺牲块从可利用的高速缓存器路径的子集中的选择。在一个实施例中,如图2中所示的一样,在共享高速缓存器150的高速缓存器控制器中实现高速缓存器分区逻辑200。
如图2所示,在一个实施例中,高速缓存器分区逻辑包括置换逻辑220、连同高速缓存器控制器210和侯选牺牲块逻辑230,依照共享高速缓存器150的分区将牺牲块选择限制到可利用高速缓存器路径的子集。在一个实施例中,为不同类型的存储器请求(例如需要和预取请求)改变可以被置换逻辑220使用的高速缓存路径的子集。典型地,共享高速缓存器150可以包括M个路径(W1152-1,W2 152-2,...,WM152-M)。因此,当CPU 110检测到各自专用核心高速缓存器112内的高速缓存器未命中时,CPU 110可以将高速缓存器请求发送到共享高速缓存器150的高速缓存器控制器210。
在一个实施例中,向解码器160提供与高速缓存器请求关联的索引值204来识别共享高速缓存器150内的集合。一旦识别了该集合,将与高速缓存器请求关联的标记值202与共享高速缓存器150的M个路径152(152-1,...,152-M)中每一个相比较,来识别包含被请求高速缓存器块的路径。然而,在一个实施例中,如果检测到高速缓存器未命中,候选牺牲块逻辑230和置换逻辑220限制高速缓存器控制器210在通过索引204识别的集合内选择牺牲块。
典型地,N个处理器(CPU 110-1,...,110-N)共享共享的高速缓存器150的M个路径152。在一个实施例中,高速缓存器分区逻辑200可以依照N个CPU 110和CPU 110发出的T种存储器请求对共享高速缓存器150分区。在一个实施例中,N乘T个M位的寄存器(路径寄存器)标记为D[i][j](其中i位于[0...N-1]范围内和j位于[0...T-1]范围内)。在一个实施例中,路径寄存器(用d[i][j][b]表示,b位于[0...M-1]范围内)中每位表示无论是(1)或者是(0)CPUi能够分配到路径b中用于j型高速缓存器请求的高速缓存器未命中。
在一个实施例中,变量“i”表示发出高速缓存器请求的CPU的处理器标识符。如在此所述,处理器标识符定义成通过它能够区分一个处理器与CMP100的其他处理器的任何信号、数据序列或者其他机制。在一个实施例中,硬件标识符分配给CMP 100的每个处理器或者CPU 110作为处理器标识符(CPU-ID)。在可选择的实施例中,处理器标识符或者CPU-ID是序号或者其他的数字器件识别手段,以将各自处理器与CMP 100内的另一个处理器区分。
如在此所述,术语“处理器标识符”还可选择地称为请求者标识符,当请求者为CMP 100的处理器时,请求者标识符等于处理器标识符。但是,所属领域的技术人员会认识到,在此描述的高速缓存器分区方案不限于由处理器发出的高速缓存器请求,以及可以包括CMP 100的其他装置发出的高速缓存器请求,比如,存储器控制器向共享高速缓存器150发出的高速缓存器请求,同样属于权利要求主题范围内。
在一个实施例中,如参照图3的描述,提供了路径寄存器的实现。典型地,依照处理器标识符(CPU_ID)206和请求类型(REQ-TYPE)208为查阅表(d)240编索引。基于这两个值,查阅表240识别标识路径寄存器250的位置242,在此也称为“M位屏蔽”。在一个实施例中,M位屏蔽直接对应于共享高速缓存器150的M个路径152中的每一个。
因此,再次参看图2,在一个实施例中,向逻辑门170(170-1,...170-M)提供M位路径屏蔽250,逻辑门接收来自共享高速缓存器150的有效性位154(154-1,…154-M)。一旦收到,置换逻辑220可以依照设置的M位路径屏蔽250的相应位252(252-1,...,252-M)在高速缓存器索引204选择牺牲块。因此,当CPU i在地址a上专用核心高速缓存器112中未命中时,CPU 110-i发送对块a的请求给共享高速缓存器150。在一个实施例中,共享高速缓存器控制器210检测块a是否在共享高速缓存器150中存在。
如果块a存在,该共享高速缓存器将块a返回到处理器i。可是,如果块a不存在,共享高速缓存器将发送对块a的请求到系统存储器190。在一个实施例中,需要高速缓存器控制器210驱逐在高速缓存器索引204的M-1个块其中之一来为被请求块a腾出空间。在一个实施例中,通过共享高速缓存器150的高速缓存器分区逻辑200的置换逻辑220实现牺牲块的选择。
在一个实施例中,置换逻辑通过使用路径寄存器250(d[i][k])选择牺牲块用于CPU 110-i的类型k的存储器请求。如果寄存器d[i][k]中位b被设置(d[i][k][b]=1),那么路径b是要逐出的候选者。在一个实施例中,当设置了寄存器d[i][k]中多个位时,对于逐出的牺牲块有多个选择。在一个实施例中,当存在多个候选的牺牲块时,置换逻辑220选择最近最少使用的路径用于逐出。现在提供用于实现一个或多个上面描述的实施例的程序方法。
操作
例如,依照一个实施例,如图2中描述的一样,图4是描述从分区的共享高速缓存器中选择牺牲块的方法300的流程图。在步骤块326,确定是否检测到共享高速缓存器内的高速缓存器未命中。如果没有检测到高速缓存器未命中(“高速缓存器命中”),那么在步骤块328,为请求者提供被请求块,请求者是例如处理器核心或者芯片多处理器(CMP)的CPU。否则,在步骤块330,依照接收的请求给系统存储器发出一个对于所请求块的请求。
在一个实施例中,在步骤块340,依照请求者ID和接收请求的请求类型从共享高速缓存器中为逐出选择一个牺牲块。在一个实施例中,如图2中所示,由置换逻辑220执行牺牲块的选择。在步骤块360,例如,由高速缓存器控制器从共享高速缓存器中逐出被选择的牺牲块。在步骤块370,为请求者提供所请求的高速缓存器块。在步骤块380,将所请求的高速缓存器块存储在共享高速缓存器的一部分内,牺牲块从该部分中被逐出。
图5是依照一个实施例描述用于对共享高速缓存器分区来限制牺牲块选择的方法310的流程图。在步骤块312,从共享一个高速缓存器的多个请求者中选择诸如CMP的CPU的请求者。在步骤块314,为所选择的请求者选择存储器请求类型。一旦选择了,在步骤块316,为所选择的存储器请求类型指定共享高速缓存器的M个路径中的一个或一个以上路径。在一个实施例中,存储器请求类型可以包括,但是不限于,下载请求、存储请求、数据预取、数据推测、需要请求等。
在一个实施例中,在步骤块318,依照步骤块316指定的路径产生M位屏蔽。例如,与图3中描述的一样,M位路径屏蔽或者路径寄存器250包括位字段,该位字段对应于共享高速缓存器150内的每种路径。因此,当在高速缓存器索引204指示的集合中选择要逐出的牺牲块时,M位路径屏蔽250内的每个设置位标识潜在的牺牲块,可以逐出该牺牲块来为所请求的数据块腾出空间。
一旦产生M位路径屏蔽或者路径寄存器,在步骤块320,依照选择的请求者的请求者标识符(例如,CPU_ID)和请求类型在表内产生条目来标识M位路径屏蔽。在一个实施例中,例如,形成与图3中一样的一个表,该表按照CPU_ID206和REQ_TYPE编索引。在步骤块322,为每种存储器请求类型重复步骤块314-320。在步骤块324,为每个请求者重复步骤块312-322,所述请求者是诸如芯片多处理器的每个处理器核心,其共享一个共享高速缓存器。
依照例如与图3中描述的一样的一个实施例,图6是描述共享高速缓存器内响应请求块的高速缓存器未命中从共享高速缓存器中选择牺牲块的方法350的流程图。在步骤块352,依照请求者和请求类型查询表以识别M位路径屏蔽,该M位路径屏蔽可以在寄存器或者其他的数据存储设备中实现。在步骤块354,依照接收请求的高速缓存器索引来访问共享高速缓存器的一个集合,例如,与图2描述的一样。在步骤块356,依照M位路径屏蔽的至少一个设置位识别用于该集合的至少一个牺牲块。
换句话说,与上面描述的一样,在接收请求的索引所标识的共享高速缓存器的一个集合中M位路径屏蔽内的每个设置位识别候选牺牲块。在一个实施例中,当从逻辑230收到的M位屏蔽250包括多个设置位时,图2的置换逻辑220将选择一个最近最少使用的路径152。与在此描述的一样,各种信号可以代表高态有效信号或者低态有效信号。因此,与这里描述的一样,术语“断言”、“正断言”、“已断言”、“设置”、“正设置”、“取消断言”“已取消断言”、“正取消断言”或者其他类似的术语可以指数据信号,该数据信号是高态有效信号或者是低态有效信号。因此,可交换地使用与信号有关的这种术语来要求或者暗示高态有效信号或者低态有效信号。
尽管根据芯片多处理器的共享高速缓存器描述了上述的一个或多个实施例,但是本领域的技术人员会意识到在此描述的实施例可以用于其他系统配置,在该配置中一个或多个处理器共享一个高速缓存器。此外,提供依照存储器请求和处理器ID的高速缓存器的分区,作为实现上面描述的多个实施例的一个实例。但是,共享高速缓存器的附加分区方案限制牺牲块的选择也是可能的,同样保持在上面描述的实施例的范围内。
图7是描述使用公开技术的设计的仿真、模拟和制造的各种表示或者格式的框图。表示设计的数据可以代表许多方式的设计。首先,在仿真中使用硬件描述语言或者另一种功能描述语言可以表示硬件是有用的,该功能描述语言实质上提供期望所设计硬件如何执行的计算机化模型。硬件模型410可以存储在诸如计算机存储器的存储介质400中,因此可以使用仿真软件420来仿真该模型,该仿真软件将特定的一套检验程序430应用于硬件模型,以确定它是否的确是按照预期的设计来工作。在许多实施例中,介质中没有记录、保存或者包括仿真软件。
在设计的任何表示中,数据可以以机器可读介质的任何方式存储。调制或者其它方式产生以传输这种信息的光或电波460、存储器450或者诸如盘的磁或光存储器440可以是机器可读介质。任何这些介质可以携带设计信息。术语“携带”(例如,机器可读介质携带信息)由此涵盖存储在存储设备上的信息或者编码或者调制到载波中或载波上的信息。描述设计的位组或者设计的物品是(当嵌入诸如载体或者存储介质的机器可读介质中时)可以密封在自己内、外的或者其他人用于进一步设计或制造的产品。
可选择的实施例
会意识到,对于其他实施例可以使用不同的系统配置。例如,当系统100包括芯片多处理器系统时,包括至少一个CPU的计算机系统可能受益于各种实施例的高速缓存器分区和牺牲块选择方案。而且不同类型的系统或者不同类型的计算机系统,例如,诸如服务器、工作站、台式计算机系统、游戏系统、嵌入式计算机系统、叶片服务器等,可以用于其他实施例。
已经公开了实施例和最佳模式,在保持在由下面权利要求定义的本发明实施例范围内的同时,可以对公开的实施例进行修改和变形。

Claims (17)

1.一种方法,包括:
如果依照从处理器核心接收的请求检测到共享高速缓存器的每个路径内的高速缓存器未命中,则从系统存储器请求所请求的高速缓存器块,所述共享高速缓存器被多个处理器核心共享;和
当检测到所述高速缓存器未命中时,依照所述处理器核心的处理器标识符ID和来自所述处理器核心的所接收请求的存储器请求类型从共享高速缓存器中选择牺牲块来逐出,以将对所述牺牲块的选择限于根据所述处理器标识符ID和所述存储器请求类型而确定的路径子集。
2.权利要求1的方法,还包括:
将所请求的高速缓存器块提供给处理器核心;和
在从中逐出牺牲块的共享高速缓存器的部分内存储所请求的高速缓存器块。
3.权利要求1的方法,其中在请求前,该方法还包括:
(a)依照N个处理器核心和T个存储器请求类型对M个路径的成组相联的共享高速缓存器分区;以及
(b)将对牺牲块的选择限于与根据所述处理器标识符和存储器请求类型而确定的所述分区对应的M个路径的成组相联的共享高速缓存器的可利用路径的子集。
4.权利要求3的方法,其中限制对牺牲块的选择包括:
(a)选择一个处理器核心;
(b)为所选择的处理器核心选择一种存储器请求类型;
(c)为所选择的存储器请求类型指定共享高速缓存器的M个路径中的一个或多个路径;
(d)依照(c)的指定路径产生M位路径屏蔽;
(e)依照所选择的处理器核心的处理器标识符ID和存储器请求类型在表内产生条目来标识M位路径屏蔽;
(f)为T个存储器请求类型中每一个重复(b)-(e);和
(g)为N个处理器核心中每一个重复(a)-(f)。
5.权利要求4的方法,其中限制对牺牲块的选择还包括:
依照处理器标识符和存储器请求类型来查询表以识别M位路径屏蔽;
依照接收请求的高速缓存器索引来访问共享高速缓存器的一个集合;
依照M位路径屏蔽中的至少一个设置位从该集合中识别至少一个候选牺牲块;
当存在多个候选牺牲块时,选择最近最少使用的路径的候选牺牲块作为牺牲块用于逐出;以及
逐出所选择的牺牲块。
6.一种方法,包括:
依照来自处理器核心的所接收的请求检查共享高速缓存器的每个路径,以确定其中是否存储了所请求的高速缓存器块,所述共享高速缓存器被多个处理器核心共享;
如果检测到所请求的高速缓存器块的高速缓存器未命中,则依照所述处理器核心的处理器标识符ID和来自所述处理器核心的所接收请求的存储器请求类型从所述共享高速缓存器中逐出所选择的牺牲块,以将对所述牺牲块的选择限于根据所述处理器标识符ID和所述存储器请求类型而确定的路径子集,且所述所接收的请求包括识别所述共享高速缓存器内的一个高速缓存器路径集合的高速缓存器索引。
7.权利要求6的方法,其中在检查共享高速缓存器之前,该方法还包括:
(a)选择处理器核心;
(b)为所选择的处理器核心选择一种存储器请求类型;
(c)为所选择的存储器请求类型指定共享高速缓存器的M个路径中的一个或多个路径;
(d)依照(c)的指定路径产生M位路径屏蔽;
(e)依照所选择的处理器核心的处理器标识符和存储器请求类型在表内产生条目以标识M位路径屏蔽;
(f)为T个存储器请求类型中每一个重复(b)-(e);和
(g)为N个处理器核心中每一个重复(a)-(f)。
8.权利要求6的方法,其中逐出所选择的牺牲块包括:
依照所述处理器标识符和所述存储器请求类型查询表以识别M位路径屏蔽;其中所述M位路径屏蔽内的每个设置位在所接收请求的所述高速缓存器索引所指示的共享高速缓存器的一个集合中识别候选牺牲块。
9.权利要求8的方法,其中查询还包括:
如果设置了所述M位路径屏蔽的至少两个位,则选择最近最少使用的路径作为所选择的牺牲块。
10.一种设备,包括:
用于依照来自处理器核心的所接收的请求检查共享高速缓存器的每个路径,以确定其中是否存储了所请求的高速缓存器块的装置,所述共享高速缓存器被多个处理器核心共享;
用于如果检测到所请求的高速缓存器块的高速缓存器未命中,则依照所述处理器核心的处理器标识符ID和来自所述处理器核心的所接收请求的存储器请求类型从所述共享高速缓存器中逐出所选择的牺牲块,以将对所述牺牲块的选择限于根据所述处理器标识符ID和所述存储器请求类型而确定的路径子集的装置,且所述所接收的请求包括识别所述共享存储器内的一个高速缓存器路径集合的高速缓存器索引。
11.权利要求10的设备,其中逐出所选择的牺牲块的装置还包括:
用来依照处理器标识符和存储器请求类型查询表以识别M位路径屏蔽的模块;其中M位路径屏蔽内的每个设置位在所接收请求的所述高速缓存器索引所指示的共享高速缓存器的一个集合中识别候选牺牲块。
12.权利要求10的设备,其中逐出所选择的牺牲块的装置还包括:
用来依照N个处理器和T个存储器请求类型对M个路径的成组相联的共享高速缓存器分区,以及把对牺牲块的选择限于根据所述处理器标识符和存储器请求类型而确定的M个路径的成组相联的共享高速缓存器的可利用路径的子集的模块。
13.权利要求11的设备,其中逐出所选择的牺牲块的装置还包括:
具有M位路径屏蔽的模块,该模块用来依照所述所接收请求的高速缓存器索引访问共享高速缓存器的一个集合,依照所述M位路径屏蔽的至少一个设置位从所述集合中识别一个牺牲块以选择所述牺牲块,并且在存在多个候选牺牲块时,选择最近最少使用的路径的牺牲块用于逐出,以及逐出所选择的牺牲块。
14.一种系统,包括:
连接互连网络的系统存储器;
包括连接互连网络的多个处理器核心的芯片多处理器;
连接共享高速缓存器的高速缓存器控制器;以及
连接互连网络的所述共享高速缓存器,所述共享高速缓存器包括用于指示高速缓存器控制器在响应从所述多个处理器核心中的处理器核心接收的请求、检测到共享高速缓存器内的高速缓存器块的高速缓存器未命中的情况下,从系统存储器请求高速缓存器块的装置,以及用于在检测到所述高速缓存器未命中时,依照处理器标识符和所述所接收请求的请求类型从所述共享高速缓存器中选择牺牲块来逐出的装置,且所述所接收请求包括识别所述共享高速缓存器内的一个高速缓存器路径集合的高速缓存器索引。
15.权利要求14的系统,其中系统存储器包括RDRAM。
16.权利要求14的系统,其中共享高速缓存器还包括:
用来依照处理器标识符和请求类型查询表以识别M位路径屏蔽的装置,其中M位路径屏蔽内的每个设置位在所接收请求的高速缓存器索引所指示的共享高速缓存器的一个集合中识别候选牺牲块。
17.权利要求16的系统,其中共享高速缓存器还包括:
具有M位路径屏蔽的装置,该装置用来依照所述所接收请求的高速缓存器索引访问共享高速缓存器的一个集合,依照所述M位路径屏蔽的至少一个设置位从所述集合中识别一个牺牲块以选择所述牺牲块,并且在存在多个候选牺牲块时,选择最近最少使用的路径的牺牲块用于逐出,以及逐出所选择的牺牲块。
CNB2005100980710A 2004-06-30 2005-06-30 用于对芯片多处理器的共享高速缓存器分区的设备和方法 Expired - Fee Related CN100511184C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/882,048 US7558920B2 (en) 2004-06-30 2004-06-30 Apparatus and method for partitioning a shared cache of a chip multi-processor
US10/882048 2004-06-30

Publications (2)

Publication Number Publication Date
CN1728112A CN1728112A (zh) 2006-02-01
CN100511184C true CN100511184C (zh) 2009-07-08

Family

ID=35464043

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100980710A Expired - Fee Related CN100511184C (zh) 2004-06-30 2005-06-30 用于对芯片多处理器的共享高速缓存器分区的设备和方法

Country Status (5)

Country Link
US (1) US7558920B2 (zh)
EP (1) EP1612683A3 (zh)
KR (1) KR20060049710A (zh)
CN (1) CN100511184C (zh)
TW (1) TWI285810B (zh)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703404A1 (fr) * 2005-03-16 2006-09-20 Amadeus s.a.s Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
US20070033371A1 (en) * 2005-08-04 2007-02-08 Andrew Dunshea Method and apparatus for establishing a cache footprint for shared processor logical partitions
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US7415575B1 (en) * 2005-12-08 2008-08-19 Nvidia, Corporation Shared cache with client-specific replacement policy
US7730261B1 (en) 2005-12-20 2010-06-01 Marvell International Ltd. Multicore memory management system
US8984256B2 (en) * 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US8244980B2 (en) * 2006-06-21 2012-08-14 Intel Corporation Shared cache performance
US7434001B2 (en) * 2006-08-23 2008-10-07 Shi-Wu Lo Method of accessing cache memory for parallel processing processors
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US7627718B2 (en) * 2006-12-13 2009-12-01 Intel Corporation Frozen ring cache
US8055851B2 (en) * 2006-12-14 2011-11-08 Intel Corporation Line swapping scheme to reduce back invalidations in a snoop filter
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US20090037678A1 (en) * 2007-07-31 2009-02-05 Giles Chris M Protected portion of partition memory for computer code
JP5217432B2 (ja) 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
US20090254712A1 (en) * 2008-04-02 2009-10-08 Naveen Cherukuri Adaptive cache organization for chip multiprocessors
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8140767B2 (en) * 2009-06-04 2012-03-20 International Business Machines Corporation Cache management through delayed writeback
US8543769B2 (en) * 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US9311245B2 (en) * 2009-08-13 2016-04-12 Intel Corporation Dynamic cache sharing based on power state
US8745618B2 (en) * 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
US8661200B2 (en) * 2010-02-05 2014-02-25 Nokia Corporation Channel controller for multi-channel cache
US20110197031A1 (en) * 2010-02-05 2011-08-11 Nokia Corporation Update Handler For Multi-Channel Cache
TWI420311B (zh) * 2010-03-18 2013-12-21 Univ Nat Sun Yat Sen 基於集合分模組之快取記憶體之分割方法
US10187247B2 (en) * 2010-07-30 2019-01-22 Hewlett Packard Enterprise Development Lp Computer system and method for sharing computer memory
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
JP5683205B2 (ja) 2010-10-18 2015-03-11 キヤノン株式会社 情報処理装置、情報処理装置を制御する制御方法、およびそのプログラム
US9021206B2 (en) 2011-08-25 2015-04-28 International Business Machines Corporation Use of cache statistics to ration cache hierarchy access
US20130097387A1 (en) * 2011-10-14 2013-04-18 The Board Of Trustees Of The Leland Stanford Junior University Memory-based apparatus and method
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US10140219B2 (en) * 2012-11-02 2018-11-27 Blackberry Limited Multi-port shared cache apparatus
GB2509755B (en) * 2013-01-14 2015-07-08 Imagination Tech Ltd Partitioning a shared cache using masks associated with threads to avoiding thrashing
US9213644B2 (en) 2013-03-07 2015-12-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Allocating enclosure cache in a computing system
US9195606B2 (en) 2013-03-15 2015-11-24 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
KR102354848B1 (ko) 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
US9652400B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097805A1 (en) 2014-12-14 2016-06-23 Via Alliance Semicoductor Co., Ltd. Cache memory budgeted by ways on memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US9898411B2 (en) * 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
KR101627456B1 (ko) * 2015-03-16 2016-06-07 성균관대학교산학협력단 그래픽 사용자 인터페이스 품질 개선방법 및 그 방법을 수행하는 프로그램이 저장된 기록매체
US9563564B2 (en) * 2015-04-07 2017-02-07 Intel Corporation Cache allocation with code and data prioritization
US9971693B2 (en) 2015-05-13 2018-05-15 Ampere Computing Llc Prefetch tag for eviction promotion
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
JP6424330B2 (ja) * 2015-10-13 2018-11-21 株式会社アクセル 情報処理装置、及び情報処理方法
EP3258382B1 (en) * 2016-06-14 2021-08-11 Arm Ltd A storage controller
US9928176B2 (en) * 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US11080810B2 (en) * 2017-04-21 2021-08-03 Intel Corporation Dynamically reconfigurable memory subsystem for graphics processors
US10635590B2 (en) * 2017-09-29 2020-04-28 Intel Corporation Software-transparent hardware predictor for core-to-core data transfer optimization
US10482017B2 (en) * 2017-09-29 2019-11-19 Intel Corporation Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
EP3486787B1 (en) * 2017-11-20 2022-09-28 Samsung Electronics Co., Ltd. Systems and methods for tag-less buffer implementation
KR101936951B1 (ko) * 2018-04-11 2019-01-11 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 메모리 시스템
US10761988B2 (en) * 2018-07-25 2020-09-01 Arm Limited Methods and apparatus of cache access to a data array with locality-dependent latency characteristics
US10802973B1 (en) 2019-07-01 2020-10-13 Bank Of America Corporation Data access tool
TWI760702B (zh) * 2020-03-03 2022-04-11 瑞昱半導體股份有限公司 資料寫入系統與方法
US10949352B1 (en) * 2020-03-05 2021-03-16 Nxp Usa, Inc. Data processing system having a shared cache
CN111651376B (zh) * 2020-07-06 2023-09-19 Oppo广东移动通信有限公司 数据读写方法、处理器芯片及计算机设备
WO2023165543A1 (zh) * 2022-03-02 2023-09-07 华为技术有限公司 共享缓存的管理方法、装置及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5584014A (en) 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
JP3348367B2 (ja) * 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US6745292B1 (en) 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
US20010029574A1 (en) * 1998-06-18 2001-10-11 Rahul Razdan Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state
US6421762B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
JP2003517682A (ja) 1999-12-17 2003-05-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ キャッシュを有するデータプロセッサ
US6757793B1 (en) * 2000-03-29 2004-06-29 Advanced Micro Devices, Inc. Reducing probe traffic in multiprocessor systems using a victim record table
US6889291B1 (en) 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US6745293B2 (en) * 2000-08-21 2004-06-01 Texas Instruments Incorporated Level 2 smartcache architecture supporting simultaneous multiprocessor accesses
US6668307B1 (en) 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
JP3620473B2 (ja) 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency

Also Published As

Publication number Publication date
EP1612683A2 (en) 2006-01-04
TW200615755A (en) 2006-05-16
TWI285810B (en) 2007-08-21
EP1612683A3 (en) 2008-04-30
CN1728112A (zh) 2006-02-01
US7558920B2 (en) 2009-07-07
US20060004963A1 (en) 2006-01-05
KR20060049710A (ko) 2006-05-19

Similar Documents

Publication Publication Date Title
CN100511184C (zh) 用于对芯片多处理器的共享高速缓存器分区的设备和方法
US7711901B2 (en) Method, system, and apparatus for an hierarchical cache line replacement
US7571285B2 (en) Data classification in shared cache of multiple-core processor
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US20070156963A1 (en) Method and system for proximity caching in a multiple-core system
US9836406B2 (en) Dynamic victim cache policy
WO2006034289A1 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US7809889B2 (en) High performance multilevel cache hierarchy
CN115509955A (zh) 预测性数据存储分级存储器系统及方法
WO2017176443A1 (en) Selective bypassing of allocation in a cache
US9342461B2 (en) Cache memory system and method using dynamically allocated dirty mask space
US10761986B2 (en) Redirecting data to improve page locality in a scalable data fabric
CN102859504A (zh) 有效分区存储缓存
WO2023055486A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US20180292988A1 (en) System and method for data access in a multicore processing system to reduce accesses to external memory
US20060143400A1 (en) Replacement in non-uniform access cache structure
US7293141B1 (en) Cache word of interest latency organization
CN108664415B (zh) 共享替换策略计算机高速缓存系统和方法
US9146870B2 (en) Performance of accesses from multiple processors to a same memory location
US20180052778A1 (en) Increase cache associativity using hot set detection
US8606999B2 (en) Cache partitioning
JP6249120B1 (ja) プロセッサ
CN110720093A (zh) 用于dram的选择性刷新机制
US20040015669A1 (en) Method, system, and apparatus for an efficient cache to support multiple configurations
US20210117327A1 (en) Memory-side transaction context memory interface systems and 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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

Termination date: 20100630