CN102365627B - 用于缓存中通路分配及通路锁定的方法 - Google Patents
用于缓存中通路分配及通路锁定的方法 Download PDFInfo
- Publication number
- CN102365627B CN102365627B CN201080017816.5A CN201080017816A CN102365627B CN 102365627 B CN102365627 B CN 102365627B CN 201080017816 A CN201080017816 A CN 201080017816A CN 102365627 B CN102365627 B CN 102365627B
- Authority
- CN
- China
- Prior art keywords
- source
- buffer memory
- memory
- data
- shared buffer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000015654 memory Effects 0.000 claims abstract description 351
- 238000012545 processing Methods 0.000 claims abstract description 59
- 239000000872 buffer Substances 0.000 claims description 253
- 230000004044 response Effects 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
设想了用于计算系统共享高速缓冲存储器中的数据分配的系统和方法。共享的集关联缓存的每一个缓存通路都可被诸如一或多个处理器内核、图形处理单元(GPU)、输入/输出(I/O)设备或多个不同软件线程之类的多个源访问。共享缓存控制器基于接收到的存储器请求的对应源启用或禁用分别对每一个缓存通路的访问。一或多个配置和状态寄存器(CSR)存储用以改变对每一个共享缓存通路的可访问性的编码值。通过改变在CSR中的存储值控制对共享缓存通路的可访问性可用于在掉电序列期间在共享缓存继续运行的同时创建共享缓存内的伪RAM结构和逐步减少共享缓存的大小。
Description
技术领域
本发明涉及计算系统,更具体地,涉及计算系统的共享高速缓冲存储器中的数据分配。
背景技术
现代微处理器可包括一或多个处理器内核或处理器,其中每一个处理器都能够执行软件应用程序的指令。这些处理器通常是管线化的,其中处理器包括与位于各阶段(stage)之间的存储元件(如寄存器和阵列)串联连接的一或多个数据处理阶段。虽然该管线可分为任何数目的阶段,在所述阶段会执行一部分的指令处理,指令处理一般包括获取指令、解码指令、执行指令以及将执行结果存储到由该指令确定的目的地中。
理想地,每一个时钟周期产生用于管线的每一个阶段的指令的有用执行。然而,管线中的拖延(stall)可能会导致无用的工作在该特定的管线阶段进行。拖延(通常是多周期拖延)的一个例子是数据缓存或指令缓存的未命中。降低性能损失的方法是减少多周期拖延的发生。
微处理器可能会耦合到一个层次或多个层次的缓存层次结构,以减少存储器中的用于读或写操作的微处理器的数据请求的延迟。一般来说,缓存可能会存储一个或多个模块,每一个模块是一份存储在系统存储器中的相应地址的数据。此处使用的“块(block)”是存储在连续的存储器位置的一组字节,出于一致性的目的,它们作为单元处理。此处使用的术语“缓存块”、“块”、“缓存行”和“行”是可以互换的。在一些实施方式中,块还可以是在缓存中的分配和释放的单位。在一个块中的字节数可能会随设计的选择而多种多样,可能是任意大小的。作为例子,经常使用32字节和64字节的块。
当太多的块映射到同一个集时,在一个集关联或直接映射的缓存中有冲突或碰撞、未命中发生,因此,在那个集中有一个或多个块需要被抛弃。一个特定的缓存可能有两个或两个以上使用缓存用于数据存储的源。例如,一个或多个处理器内核、一个或多个图形处理单元(GPU)、一个或多个输入/输出(I/O)设备或可存取特定缓存的其他。这些源可能无法平等地分享缓存中的存储资源。由于源的平均存储器延迟的增加而经历的系统性能下降可能对每一个源是不相等的。
例如,可能是存储器层次结构中的L2或L3缓存的集关联的共享缓存可以被两个芯片上的处理器内核或内核、图形处理器单元(GPU)和多输入/输出(I/O)设备用于数据存储。要分配空间使新的数据在此缓存中存储,诸如在缓存未命中后的填充缓存行之类典型的缓存实现允许在选定集中的最近最少使用(LRU)通路被替换。由于这种分配策略不区分来自不同源的请求,它可能让诸如I/O源之类源占据缓存中的通路的显著部分,这可能是不可取的。现在,内核的数据块可以在这一选择的集中收回,从这降低了由系统中的内核所经历的平均存储器延迟。
鉴于以上所述,需要用于计算系统的存储器中的数据分配的高效的方法和机制。
发明简要概述
设想了用于计算系统共享高速缓冲存储器中的数据分配的系统和方法。在一实施方式中,计算系统包括一或多个处理器内核以及共享的集关联缓存。共享缓存的每一个缓存通路都可被多个源访问,其中多个源被配置为生成存储器请求。共享缓存控制器被配置为基于接收到的存储器请求的对应源启用或禁用分别给每一个缓存通路的缓存填充行分配。多个源的每一个源可以是下面中的至少一个:处理器内核、图形处理单元(GPU)和输入/输出(I/O)设备。
一或多个配置和状态寄存器(CSR)被耦合到共享缓存控制器,用于存储用来启用和禁用分别给每一个共享缓存通路的所述分配的编码值。在CSR中的存储值的编程可使得每一个共享缓存通路在只有一或多个预选源的缓存未命中之后可分配。因此,诸如I/O设备之类的特定的第一源对在缓存未命中之后的特定的缓存通路可能没有分配可用性,以避免诸如处理器内核之类的第二源的数据的不期望的逐出。通过改变在一或多个CSR中的存储值控制共享缓存通路的分配可用性也可以用于在掉电序列期间在共享缓存继续运行的同时创建共享缓存内的伪RAM结构和逐步减少共享缓存的大小。
参考下面的说明和附图,这些实施方式以及其它实施方式将变得明显。
附图说明
图1是说明计算系统的一种实施方式的总体框图。
图2是说明典范处理节点的一种实施方式的总体框图。
图3是说明集关联缓存存储布置(storage arrangement)的一种实施方式的总体框图。
图4是用于共享资源中的数据的高效分配的方法的一种实施方式的流程图。
图5是用于高效的缓存行锁机制的方法的一种实施方式的流程图。
图6是用于高效的缓存扇区掉电(power-down)序列的方法的一种实施方式的流程图。
图7是用于高效的缓存扇区上电(power-up)序列的方法的一种实施方式的流程图。
尽管本发明易受各种修改和替代形式的影响,但在附图中以实施例的方式示出了具体的实施方式并在此进行了详细说明。然而,应当认识到,附图及其详细说明不是为了将本发明限制于公开的特定形式,与此相反,本发明涵盖包括在由所附权利要求书定义的本发明的精神和范围内的所有的修改、等同形式和替代形式。
具体实施方式
在下面的说明中,阐述了许多具体细节以提供对本发明的透彻理解。然而,本领域的普通技术人员应理解,本发明可以在没有这些具体细节的情况下实施。在某些情况下,熟为人知的电路、结构和技术没有做详细说明,以避免混淆本发明。
参考图1,示出了计算系统100的一种实施方式。一般来说,计算系统100包括多个处理节点110a-110d。如此处使用的,后面跟字母的参考数字所指的元件可以由单单该数字来统称。例如,处理节点110a-110d可统称为处理节点110或节点110。虽然图1示出了四个节点110,但其它的实施方式可包括1、2、6或任何不同数量的节点,其中每个节点110包括一或多个处理器内核。
每一个节点110可通过各自的存储器控制器120耦合到各自的存储器130。此外,每一个处理节点110可包括用于与其它处理节点110通信的接口逻辑140。例如,处理节点110a包括用于与处理节点110b和110c通信的接口逻辑140a。同样,处理节点110b包括用于与处理节点110a和110d通信的接口逻辑140b,依此类推。在图1的实施方式中,处理节点110d显示为通过接口逻辑140d耦合到输入/输出(I/O)设备160a以与之通信。I/O设备160a进一步耦合到第二I/O设备160b。此外,处理节点110d显示为耦合到图形处理单元(GPU)170以与之通信。其它处理节点可与其它I/O设备、其它GPU或其它组件以类似的方式进行通信。作为选择的,处理节点110可与耦合到I/O总线的I/O桥通信。
在一实施方式中,计算系统100可只有一个处理节点110,如显示为耦合到I/O设备160和GPU170的节点110d。这样的实施方式的实施例可包括移动笔记本电脑系统、台式机、入门级服务器系统、中档工作站或其它。对于这样的实施方式,单一的处理节点110可在内部利用系统总线控制器进行通信。系统总线控制器的一个实施例是AMD-762TM北桥系统总线控制器。
在另一实施方式中,计算系统100可包括多个处理节点110。对于这样的实施方式,计算系统100可实行基于数据包的链路以用于节点间的通信。在所描绘的实施方式中,链路是作为单向线路的组合来实施的(例如,线路150a用来将数据包从处理节点110a传送到处理节点110b,而线路150b则用来将数据包从处理节点110b传送到处理节点110a)。其它的线路150c-150h的组合用来在其它处理节点之间传送数据包,如图1所示。
链路150可以以缓存相干(coherent)的方式操作用以在处理节点间通信,或作为I/O设备160a-160b(以及根据需要附加的I/O设备)之间的菊花链结构以非相干(non-coherent)的方式操作。需要注意的是,从一个处理节点110传送到另一处理节点110的数据包可能通过一或多个中间节点。例如,如图1所示,由处理节点110a传送到处理节点110d的数据包可能通过处理节点110b或处理节点110c。可以使用任何合适的路由算法。计算系统100的其它实施方式可包括比图1所示的实施方式更多或更少的处理节点。此外,在其中每一处理节点通过点对点网络耦合到每一个其它处理节点的其他实施方式是可能的。
除了所描述的存储器控制器和接口逻辑外,每一个处理节点110可包括一或多个处理器和相关的缓存,如下面进一步说明的那样。从广义上讲,处理节点110包括至少一个处理器且根据需要可选择地包括用于与存储器和其它逻辑进行通信的存储器控制器。
存储器130可包括任何合适的存储设备。例如,存储器130可包括一或多个RAMBUS动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、DRAM和静态RAM等。计算系统100的地址空间被划分在存储器130间。每一个处理节点110可包括存储器映射,存储器映射用于确定哪一地址映射到哪一存储器130且因而确定对特定地址的存储器请求应被路由到哪一处理节点110。在一实施方式中,计算系统100内的地址的相干点是耦合到存储与该地址对应的字节的存储器的存储器控制器120。存储器控制器120可包括用于接合存储器130的控制电路。此外,存储器控制器120可包括用于排队存储器请求的请求队列。
一般来说,接口逻辑140可包括缓冲区,用于接收来自链路的数据包和用于缓冲要传送到链路上的数据包。计算系统100可采用任何合适的用于传送数据包的流量控制机制。I/O设备160可解释为任何所期望的外围设备。例如,I/O设备160可包括网络接口卡、视频加速器、音频卡、硬盘或软盘驱动器或驱动器控制器、小型计算机系统接口(SCSI)适配器和电话卡、调制解调器、声卡以及诸如通用接口总线(GPIB)或现场总线接口卡之类的各种数据采集卡。
图2是典范处理节点110的一实施方式的框图。与图1对应的那些电路部分的编号是相同的。处理节点110可包括存储器控制器120、接口逻辑140、一或多个处理单元115(可包括处理器内核112和相应的高速缓冲存储器子系统114)、系统通信逻辑116和共享高速缓冲存储器子系统118。在一实施方式中,处理节点110的所示出的功能被合并在单一集成电路上。在另一实施方式中,所示出的功能被合并在计算机主板上的芯片组中。
在一实施方式中,处理节点110是移动计算机、台式机或其它中的独立系统。在一实施方式中,系统通信逻辑116是系统总线。在另一实施方式中,处理节点110在逻辑116中并入了北桥系统总线控制器以将单元115耦合到存储器130、I/O设备160、GPU170或其它。在这样的实施方式中,系统通信逻辑116可取代或吸纳存储器控制器120和接口逻辑140的功能。在一实施方式中,逻辑116可包含北桥系统总线控制器和南桥系统总线控制器二者。北桥协议可用于将单元115耦合到存储器130和GPU170。南桥协议可用于将单元115耦合到I/O设备160、实时时钟、电源管理单元或其它。逻辑116的这样的实施方式的一实施例可包括AMD-762TM北桥系统控制器和AMD-768TM南桥外设总线控制器。
在另一实施方式中,处理节点110是多插槽(socket)系统的一个插槽。在这样的实施方式中,系统通信逻辑116可吸纳数据包处理逻辑。一般来说,系统通信逻辑116可配置为响应在处理节点110所耦合的链路上接收到的控制数据包、响应于处理器内核112和/或高速缓冲存储器子系统114而生成控制数据包、响应于存储器控制器120为服务选择的事务而生成探针命令(probe command)和响应数据包、以及通过接口逻辑140将数据包路由到其他节点(对这些数据包来说,节点110是中间节点)。接口逻辑140可包括用以接收数据包并使数据包与逻辑116中的数据包处理逻辑所使用的内部时钟同步的逻辑。
处理器112包括用于根据预定义的指令集执行指令的电路。例如,可选择x86指令集架构(ISA)。另外,可以选择Alpha、PowerPC或任何其它指令集架构。一般来说,处理器内核112分别为数据和指令存取高速缓冲存储器子系统114。本文中所使用的与高速缓冲存储器子系统有关的术语“存取”是指执行读或写请求操作,如果相应请求地址所请求的数据在缓存中,该操作便可导致缓存命中,或者,如果相应请求地址所请求的数据不在缓存中,该操作便可导致缓存未命中。
如果诸如请求的块没在高速缓冲存储器子系统114或共享高速缓冲存储器子系统118中找到之类的缓存未命中发生,那么读请求可被生成并被传送到未命中块所映射的节点内的存储器控制器。具有所请求的块的相应的缓存填充行可被传送到相应的缓存,以完成原始的读或写请求。此外,缓存填充行可置于缓存中的相应集中。如果在相应的集中没有可用的通路,那么通常是最近最少使用(LRU)算法确定集内的哪一通路将放弃其数据并代之以缓存填充行数据。本文中所使用的术语“分配”是指在特定缓存的缓存未命中之后,将从缓存层次结构的较低层次中提取的缓存填充行存储到特定缓存的通路中。
缓存子系统114和118可包括配置为存储数据块的高速的缓冲存储器。高速缓冲存储器子系统114可被集成在各自的处理器内核112中。可替换地,高速缓冲存储器子系统114可根据需要在背面缓存配置或内联(inline)配置中耦合到处理器内核112。更进一步,高速缓冲存储器子系统114可作为缓存层次结构实施。如果需要,位于更接近处理器内核112(在层次结构内)的缓存可被集成到处理器内核112中。在一实施方式中,高速缓冲存储器子系统114每一个代表L2缓存结构,共享缓存的存储器子系统118代表L3缓存结构。在另一实施方式中,高速缓冲存储器子系统114每一个代表L1缓存结构,共享缓存的存储器子系统118代表L2缓存结构。其它的实施方式是可能的和可预期的。
高速缓冲存储器子系统114和共享高速缓冲存储器子系统118二者都可包括耦合到相应的缓存控制器的高速缓冲存储器或缓存阵列。在一实施方式中,用于集关联的共享高速缓冲存储器子系统118的缓存控制器可包括可编程的配置和状态寄存器(CSR)和逻辑。CSR和相应的逻辑可用于将子系统118的缓存阵列细分成多个独立的部分,以防止诸如缓存填充行之类使用子系统118的各种源在缓存未命中后在同一区域分配数据。
目前已经存储在缓存中的数据可被任何源命中用于读或写访问,不管在CSR中存储的值如何。例如,缓存可具有修改过的数据,并且因此,存储器层次结构的较低层次可具有相应的旧的数据。请求源应该接收到所请求的缓存行的更新了的复本。因此,对于共享缓存的特定集内的特定通路,仍然允许从任何源访问,但由于缓存未命中的分配由CSR中存储的值来确定。这样的方案可限制驱除有用的数据或限制共享缓存被没有用的数据污染。虽然允许任何源访问,但访问的地址范围可以为每一个源进行预定。
数据可以以各种方式存储在共享高速缓冲存储器118的阵列中。例如,图3示出了存储布置300的一实施方式,其中数据使用16路集关联缓存组织进行存储。在集关联缓存内的诸如4路、8路或其它之类不同数目的通路可被选择。给定的缓存集332可以通过用来存取诸如共享高速缓冲存储器子系统118之类的集关联缓存的地址310的块索引318部分从其它集中进行选择。当块标记312和336包含相同的值且相应的块状态334指定诸如有效的缓存块之类的预定匹配值时,缓存块命中可能会发生。
在一实施方式中,缓存330内的缓存行或缓存块的数据部分338配置为存储64个字节。其它大小是可能的和设想过的。缓存330的16路的每一个也可存储状态信息334。块状态334可包括如下的至少一个或多个:有效位、指示拥有相应的缓存块的缓存块的用户主编码、用于与缓存控制器采用的缓存替换算法关联使用的最近最少使用(LRU)的逐出信息、指定诸如修改的、独一的、拥有的、共享的、无效的或其它之类缓存的一致性状态的指示。其它的包括的状态信息是可能的和设想过的。块标记336可用于确定16个缓存行中的哪一个正在缓存集332内进行着存取。此外,地址310的偏移320可用于表示缓存行内的特定的字节或字。
缓存集332可以被块地址310的块索引318选择。虽然块状态334和块标记336可以以连续的位与每一个缓存通路中的数据338以连续的位的方式存储,但在一实施方式中,块状态334和块标记336可存储在单独的阵列中,而不是在与数据338相同的阵列中。
控制缓存阵列中的缓存未命中后的存储器请求的数据存储的分配可能是有用的。如果在特定的缓存的相应集中没有可用的通路,那么在相应集中的现存的缓存行需要被逐离。典型地,最近最少使用(LRU)的计划被用于选择当前存储的缓存行用于驱离。例如,内核112a和内核112b可能只在共享缓存118的某些部分被允许分配,I/O设备可能限于分配分离的部分,图形处理单元(GPU)可能限于分配另一分离的部分。
例如,关于缓存330中的存储布置,内核112a可能被允许只分配在通路15至12中,内核112b可能被允许只分配在通路11至8中,GPU可能被允许只分配在7和6中,三个独立的I/O设备可能被允许每一个只分别分配在诸如通路5和4、通路3和2、通路1和0之类2个通路中。因此,内核112a和112b每一个是能够分配共享缓存的1/4,GPU170和三个I/O设备160每一个都能够分配同一共享缓存的1/8。用于提供预定的分配许可的机制即将说明。在这种方式下,这些源可以通过维护与分离的部分中的每一个源相关联的非共享的和独立的数据存储而有效地共享子系统118的缓存。在一实施方式中,如例中所说明的那样,内核112可以有比GPU170和任何I/O设备160更大的共享缓存118的部分用于数据分配。
说明的是,通过不允许分配的源进入特定的通路的写操作缓存击中仍然像往常一样进行执行。使用上面的例子,I/O设备160不可允许分配到通路15。如果I/O设备160执行在特定的集中的缓存行的读操作,那么包含请未命中发生的缓存行,包含所请求的缓存行的缓存填充行就从存储器层次结构的较低层次取出。这个缓存填充行是用来完成读操作的。之后或与此同时,诸如最近最少使用(LRU)算法之类机制可扩展,以选择在相应的缓存中的预定数目的通路中的一个缓存通路被替换,而不是在缓存集中的所有的缓存通路中选择。存储在相应的CSR中的编码值可用于确定缓存通路1和0和只可用于为这个I/O设备160分配。随后的逐出只可能在缓存通路1和0中发生,并可能会选择这两个缓存通路中的最近最少使用的缓存通路。在一实施方式中,如果I/O设备160执行写入到特定的集的写操作和缓存命中发生在通路15,那么I/O设备160可以通路15内修改数据。
在另一实施方式中,内核112a和112b可以共享数据,但这个数据不可与GPU170或三个独立的I/O设备160共享。两个内核112a和112b都只可允许分配通路15至8,GPU170只可允许分配通路7和6,三个独立的I/O设备160每一个都只可允许分配诸如通路5和4、通路3和2和通路1和0之类2个通路。因此,内核112a和112b每一个具有权限分配共享缓存的1/2,GPU170和三个I/O设备160的每一个都具有权限分配同一共享缓存的1/8。
在一实施方式中,配置和状态寄存器(CSR)可以用来存储编码值,以控制用于诸如内核112a、I/O设备160、GPU 170或使用诸如高速缓冲存储器子系统118之类系统中的指定缓存的其它之类每一个源的分配空间。例如,基于存储器请求的源的16-路集关联指定缓存可利用5位掩码的编码。编码值的一个例子如表1所示。
表1 16路集关联缓存的通路启用控制
上面在表1中所示的编码可以为分享系统中的指定缓存的每一个源控制分配空间。在一实施方式中,用于内核112a的5位CSR可以通过编程来存储值′00011′,如在表1中的表项2,它允许内核112a在缓存118的16个通路的一半中分配数据。这些特定的通路可能被指定为通路7至0,其中通路在一组缓存中由左到右编号为15至0,与图3的缓存330的存储布置的例子类似。其它标记的计划是可能的和设想过的。
类似地,用于GPU 170的5位CSR可存储值′01001“,如表1的表项3,它允许GPU在缓存118的16个通路中的4个中分配数据。这些特定的通路可以指定为通路11至8。用于第一I/O设备160的第三个5位CSR可存储值′011O0′,如表1的表项2,它允许第一I/O设备在缓存的通路中的2个中分配数据。这些特定的通路可以被指定为通路13至12。最后,用于第二I/O设备160的第四个5位CSR可存储值′01110′,如表1的表项4,它允许第二I/O设备在缓存118的通路中的2个中分配数据。这些特定的通路可以被指定为通路15至14。再次说明,缓存118可利用不同数目的通路,表1的编码可能会改变以适应诸如4路、8路,或其它集关联选择之类不同数目的通路。
注意的是,缓存的区,诸如16通路集关联缓存的通路1和0或16通路集关联缓存的1/8可被所有源禁止分配,这可能会同时允许缓存的其它区被所有源分配。在一实施方式中,除了每个源采用了相应的各自的CSR之外,全方位的CSR可能会被所有源利用。存储在全方位的CSR中的编码值可能会覆盖存储在各自的CSR中的编码值。例如,在一实施方式中,全方位的CSR可能编程为存储值′10000′,如表1的表项6那样。根据表1,这个值禁止相应的集关联缓存的任何源的通路1和0分配。缓存的通路1和0以外的其它通路可能会根据相应的各自的CSR被禁止分配特定的源,但保证通路1和0禁用,不管各自的CSR的存储编码值如何。在另一实施方式中,不是利用全方位的CSR,用于某一个特定的源的单个的CSR可能修改其内容,以禁用通路1和0。如此,防止了存储在通路1和0中的信息被以后的填充事务侵犯。这些特定的通路,在这种情况下是通路1和0,可能已被事先用于分配。稍后将提供这种使用的更多细节。
在一实施方式中,用于处理节点110中的缓存118的缓存控制器118清楚特定的缓存存取请求源,因此缓存控制器和相应的逻辑知道哪一个CSR存取缓存通路启用和通路禁用控制。在一实施方式中,到特定的源的特定的CSR的分配和特定的CSR的存储值是在在系统开机期间由基本输入输出软件(BIOS)设置的。因此,可能是出于安全原因,分配和值只设置一次,尽管BIOS可能会在稍后的时间进行改变或更新。在另一实施方式中,由设备驱动程序动态加载的和通过操作系统更新机制透明地更新的固件可以用于改变CSR的分配和存储值,如果这些权限被授予的话。在又一实施方式中,可利用其它的软件机制编程和重新编程CSR的分配和存储值,如软件程序员提供对某些应用程序的控制。再一次说明,这种控制由于安全原因可能是有限的。
下面的表2扩展了表1所示的编码。关于表2,在一实施方式中,载体(Vector)[15:0]中的逻辑′1′可定义在指定的集关联缓存中的启用的方式,逻辑’0’可以定义禁用的方式。
表2启用的控制的扩展编码
表项 | 编码 | 载体[15:0] |
1 | 00000 | 0000 0000 0000 0011 |
2 | 00001 | 0000 0000 0000 1111 |
3 | 00010 | 0000 0000 0000 1100 |
4 | 00011 | 0000 0000 1111 1111 |
5 | 00100 | 0000 0000 0011 0000 |
6 | 00101 | 0000 0000 1111 0000 |
7 | 00110 | 0000 0000 1100 0000 |
8 | 00111 | 1111 1111 1111 1111 |
9 | 01000 | 0000 0011 0000 0000 |
10 | 01001 | 0000 1111 0000 0000 |
11 | 01010 | 0000 1100 0000 0000 |
12 | 01011 | 1111 1111 0000 0000 |
13 | 01100 | 0011 0000 0000 0000 |
14 | 01101 | 1111 0000 0000 0000 |
15 | 01110 | 1100 0000 0000 0000 |
16 | 01111 | 保留 |
17 | 10000 | 1111 1111 1111 1100 |
18 | 10001 | 1111 1111 1111 0000 |
19 | 10010 | 1111 1111 1111 0011 |
20 | 10011 | 1111 1111 0000 0000 |
21 | 10100 | 1111 1111 1100 1111 |
22 | 10101 | 1111 1111 0000 1111 |
23 | 10110 | 1111 1111 0011 1111 |
24 | 10111 | 0000 0000 0000 0000 |
25 | 11000 | 1111 1100 1111 1111 |
26 | 11001 | 1111 0000 1111 1111 |
27 | 11010 | 1111 0011 1111 1111 |
28 | 11011 | 0000 0000 1111 1111 |
29 | 11100 | 1100 1111 1111 1111 |
30 | 11101 | 0000 1111 1111 1111 |
31 | 11110 | 0011 1111 1111 1111 |
32 | 11111 | 保留 |
如前所述,配置和状态寄存器(CSR)可用于存储诸如表1或表2中所示的值之类编码值,以控制用于每一个源的共享资源中的分配空间。例如,如上所述,I/O请求源可能被编程为只分配16通路集关联缓存中的2个通路,如缓存的通路15和14。这可能是通过响应这些I/O请求编程CSR存储5位值′01110′的。表1的表项4和表2的表项15这两个都对应于5位值′01110′,说明通路15和14被启用用于此编码。这样的在上面的实施方式中的编码可能不允许I/O请求分配超过在共享缓存中的1/8的存储。
除了利用存储器请求的源用于分配诸如集关联缓存之类共享资源的分配,存储器请求的类型也可被使用。存储器请求的类型可用于诸如在缓存控制器中的控制逻辑之类逻辑,以确定存储器请求是否允许分配共享缓存的特定通路的相应的缓存行。可能编码为操作码的存储器请求的类型和在CSR中存储的值都可为控制逻辑利用,以确定在由缓存未命中导致的缓存填充事务期间是否分配缓存填充行和缓存填充行位于相应的集的哪一通路中。马上将提供进一步的细节。一般来说,对于命中缓存的读请求,相应的缓存行的部分数据不被修改。然而,状态信息,如一致性状态、LRU信息或其它可能会被更新。对于错过缓存的读请求,相应要求的缓存行的数据部分再次不进行修改,虽然状态信息可能会被更新。错失的相应缓存行可能已经从存储器层次结构的较低的层次取来。根据预定的缓存行的填写要求,这一相应的缓存行可能会或可能不会被储存或分配在共享缓存。
再次,一般来说,对于命中缓存的写请求,如果诸如缓存的一致性、用户主状态和/或其它之类其它要求满足,相应的缓存行的数据部分就修改。此外,更新可能会发生在相应的状态信息上。再次,如果其它的要求得到满足,错过了共享缓存的写请求可能会允许取出的缓存填充行的数据部分进行修改。与错过读请求类似,用于写未命中的相应的缓存行可能已经被从存储器层次结构的较低层次提取。这一相应的缓存行可能会或可能不会被储存或分配在共享缓存,这取决于预定的缓存行填充请求。
确定缓存行填充请求的控制逻辑除了利用如表1和表2所示的例子的基于源的编码信息外,还可利用传入的存储器请求的指令类型。共享缓存可支持多种不同类型的请求。由共享缓存支持的存储器请求的一些例子如表3所示。
表3支持的存储器请求类型。
源和存储器请求类型的组合可提供灵活性,供用户在数据部分和同时缓存行被分配的对应的状态信息的条件下编程。只有来自给定的请求源的预定类型的请求可考虑分配到缓存中。在一实施方式中,可通过在系统中为来自具有与如表2所示的编码类似的编码的、每一个源的每一个指令添加一个或多个CSR提供可编程性。这种可编程性可在第一事务的基础上执行。未编程用于分配的请求不在缓存未命中期间分配到缓存。
在另一实施方式中,可编程性可通过在系统中为每一个具有与表2中的编码类似的存储器请求的源添加一个或多个CSR来提供。在由于缓存未命中导致的缓存填充事件的情况下,存储器请求的操作码或指令的类型可通过在缓存控制器的逻辑实现,以确定缓存填充行是否允许分配到缓存中并可能导致在同一组缓存内的另一缓存行的驱离。诸如表2中的例子之类基于源的编码值可能会允许发生这样的分配,尽管这种编码值可能会限制可分配的集的通路,但指令类型可覆盖此权限并防止分配。在又一实施方式中,存储预定值的CSR可能如前所述对每一个源存在,但在一个或多个CSR中的值可能会由于传入的指令类型而被改变。预定值的变化可能只在安全限制允许它发生时才被允许。例如,基于典型的软件应用程序的执行,CSR值可能不被允许改变。
这一增加的功能可能会非常有用,因为用户可选择哪种类型的请求被允许分配到缓存。例如,当CLVICBLK存储器请求在缓存未命中时,不分配这一行到缓存可能是有益的,因为清洁的受害者只需要进行跟踪以求更好的探针筛选(probe filtering)结果。另外,对于其中用于该设备的数据很少使用的特定的I/O设备160,从这个特定的I/O设备160来的、未命中共享缓存的读写存储器请求可能会在无意中造成驱离对处理器的内核有用的数据。在这种情况下,共享缓存的一大部分可存储不会被再次使用的数据,而有用的信息被逐出。因此,系统性能可能受到影响。表1-3说明的和在缓存控制器中的逻辑所执行的可编程性可能有助于避免这种情况和提高系统性能。
此外,系统的体系结构可以支持添加和使用预定的、要包括在存储器请求中的提示位,如在一实施方式中在相应的数据包中那样。这一提示信息可能是位于与操作码连续、或放置在存储器请求指令或数据包中别处的位。与操作码或指令的类型信息类似,在缓存控制器中的逻辑可能会利用这些提示位,以确定是否在诸如在由缓存未命中导致的填充事件期间允许相应的存储器请求分配到共享缓存。
在一实施方式中,这些提示位可单独使用,而不是添加在由操作码所提供的存储器请求类型上使用。在另一实施方式中,这些提示位可与操作码一起使用,以做这样的确定。例如,提示位的第一个值可能指示操作码自身应用于确定。提示位的第二个值可能表示绕过操作码值、只有提示位用于确定。第三个值可能指示需要考虑提示位和操作码值二者以用于确定。可能是在状态图中使用的其它组合是可能的和设想过的。
如前所述,在一实施方式中,诸如表2中的例子的基于源的编码值的表可能会允许填充事件分配到共享缓存,但提示位或提示位和指令类型相结合的可重写此权限,防止分配。在又一实施方式中,存储预定值的CSR可能对如前面所述的每一个源存在,但由于传入的指令类型的提示位,在一个或多个CSR中的值可能会被改变。预定值的变化可能只在安全限制允许它发生时才被允许。再一次,基于执行典型的用户编写的典型的软件应用程序,CSR的值可能不会被允许改变。
提示位所提供的基于每一事务的指示(per-transaction-based-indication)在其中属于特定事务的数据极不可能被重用、并因此尽管存储器请求指令类型可能是缓存可修改的、在未命中后没有填充机制按照预定的表(如表2)分配此数据到缓存的情况下可能是有用的。在一实施方式中,此功能可广泛使用于I/O请求源,如I/O设备160。这种机制可防止缓存的受染。
图4说明了在共享资源中的数据的有效配置的方法400。对本领域技术人员,方法400可以修改以获得替代实施方式。此外,在此实施方式中的步骤是按顺序的。然而,在另一实施方式中,某些步骤可以不同于所示的顺序出现,有些步骤可同时执行,某些步骤可与其它步骤结合起来,一些步骤可省略。在所示的实施方式中,用于确定共享资源的哪一子部分启用或禁用将进入的操作分配的初始分配被设置在块402。例如,在诸如表2的表中定义的最初的编码值可存储在适当的CSR中。
一或多个计算机程序或软件应用程序在块404执行。这些应用程序可由一个或多个处理器内核112、图形处理单元(GPU)170、I/O设备160或其它执行。执行软件应用程序的这些实体每一个都可存取诸如数据缓存之类共享资源。在一实施方式中,可共享的资源可以是诸如图2的共享高速缓冲存储器子系统118之类可共享的L2或L3缓存。由处理器内核112对共享缓存的存取或存储器请求可能会比来自诸如GPU170或I/O设备160之类的其它源的存取对系统性能有更大的影响。
当存储器请求呈于共享缓存(条件判断块406)时,在块408执行用于在共享缓存的相应集中分配的可允许通路的确定。存储器请求的源是已知的,可用于存取相应的CSR,其存储的值确定在相应的集中可允许的通路的分配。在其它的实施方式中,如前参考表3所述的那样,存储器请求的类型和/或提示位也可以用来确定允许的通路的采集。
如果存储器请求错过缓存、因此需要正确的行从较低层次的存储器(条件判断块410)检索,就执行确定,确定是否允许填充行被分配到共享缓存(条件判断块414)。这一确定可基于源、可由操作码决定的指令类型、在指令或数据包中包含的提示位或这些因素的组合或其它。
如果确定为存储器请求不允许分配到共享缓存(条件判断块414),那么诸如读写检索的填充行的内容之类存储器请求的操作可能在416块进行,但填充行不是放置在共享缓存中。例如,众所周知不重用相应的数据的I/O设备160可由存储在相应的CSR中的值编程为不能在缓存未命中之后分配数据到共享缓存。因此,在共享缓存中的更多的空间可用于其它源,如或多个处理器内核112或GPU170。
如果确定存储器请求允许在缓存未命中后分配共享缓存(条件判断块414),那么存储器请求的操作可能会继续到块418,如读或写检索的填充行的内容,此外,填充行放置在共享缓存中。在放置到共享缓存中期间,CSR的内容可确定哪些缓存的通路是允许修改的。例如,内核112a可能会允许修改或分配缓存的一半,如通路15至8。然而,I/O设备160可能会允许修改或分配缓存的仅仅1/8,如通路5和4,。对于已满的设置,基于LRU方案的缓存行驱离可能会在分配过程中发生。此外,如果设置是未满但用于特定的源的设备的诸如对于上例中的I/O设备160是通路5和4之类可允许的通路都满了,那么,基于LRU计划或其它计划的缓存行驱离可能会发生在分配过程中。
上述方法也可用于某些指定的缓存行的加载和锁定或阻止被驱逐。这些锁定的行可以被禁止被所有源分配。这些锁定的行可被用来作为伪随机存取存储器(RAM)。这样的机制可随后用于启动基本输入输出软件(BIOS)在系统启动期间加载和锁定缓存的部分。例如,这样的机制可以用来在系统中的动态随机存取存储器(DRAM)尚未初始化时让BIOS使用诸如共享缓存118或其它的缓存用于一般的储存。这一功能可减少系统启动所需的时间。
BIOS现在可以利用缓存中的某些部分作为存储数据结构而不实其它源驱除这些锁定的行。例如,这样的缓存通道锁定方案可确保BIOS存储数据的行不会在系统执行诸如从诸如可编程只读存储器(PROM)图像之类的I/O空间来的引导代码的读操作之类到缓存行的其它填充请求时被驱逐。
现在谈图5,图5示出了用于高效的缓存行的锁定机制的方法。方法500可以为本技术领域的人员修改以获得替代的实施方式。此外,在此实施方式中的步骤是按顺序示出的。然而,在另一实施方式中,某些步骤可以不同于所示的顺序出现,有些步骤可同时执行,某些步骤可与其它步骤结合起来,一些步骤可省略。在所示的实施方式中,用于计算系统的安装软件是在块502中进行。
在块504,系统中的一个或多个CSR可能会编程为用于存储表示允许分配共享缓存中的具体通路的值。例如,与编码值“00000”对应的表2的表项1可用于允许分配到16通路集关联的共享缓存的通路1和0。共享缓存的总大小的1/8大小的区可能会以这种方式映射并作为伪RAM使用。
接下来,在块506,诸如BLOS之类安装软件可能初始化和共享缓存的缓存行具有相同的大小和队列的伪RAM内的位置。要执行这个初始化,BIOS可能要映射缓存行到目前尚未被初始化的回写DRAM,并发出加负或读操作到这个缓存行位置的至少1字节。作为此负载的一部分发出的产生的填充事务可能被发送到具有未初始化的DRAM的禁用的存储器控制器。存储器控制器可能会返回全是逻辑0的数据值,并完成待填充的请求。然后,这一数据被分配到共享缓存。只有在这个缓存行已被分配到共享缓存之后,BIOS才可在之后执行到这个缓存行的存储或写操作。
如果共享缓存的终端尚未达到(条件判断块508),如与允许的通路相应的上次未初始化的缓存行正在进行初始化,那么方法500的控制流返回到块506。否则,共享缓存的另一允许的通路可能被以类似的方式初始化(条件判断块510)。如果共享缓存的所有允许的通路已经初始化(条件判断块510),那么在块512,诸如基本输入输出系统(BIOS)之类安装软件可将所需的信息存储到这些初始化区。在块514,通过禁止对以前用于分配的相同的通路进行分配,这些修改的行可能会被锁定到共享缓存。例如,通过设置相应的CSR以保持存储在表2的表项17中的值“10000”,现在通路1和0可以被禁用于分配。现在,避免通路1和0被其它源分配或被较新的填充事务驱逐。
此外,上述分配方法可用于在缓存仍然操作的同时通过逐步减少缓存的大小来将部分或所有缓存置于掉电的状态下。期望系统层次电源管理对部分缓存关闭或加闸电源(gate power)而同时保持其它部分的功能。否则,当缓存停止了所有的功能而某些部分掉电且缓存行的驱离和重载发生时,降低系统性能的延迟可能会引出以避免锯齿问题。当缓存继续操作时通过掉电机制逐步减少缓存的大小创建了几个具有不同的性能和功耗特点的中间缓存的睡眠状态。监控缓存的系统电源管理硬件可以使用这些不同的状态以在应用性能和电池寿命之间进行权衡。此外,这样的掉电序列可用于来自制造商失败的缓存的损失。这样的缓存可分层次或为一半并以较低的价格出售。
通过诸如表1和表2中指定的值之类可编程的编码值、在集关联缓存内进行用于分配特定通路的允许和禁止可用于逐步减小缓存的大小,而使缓存仍然操作并最终减去缓存的大小。例如,从诸如上面的表2表项8之类的编码值“00111”,其中16通路集关联缓存中的所有通路被启用分配,可能逐步过渡到不断降低缓存的大小的其它编码值,如“10000”(使能14个通路的表项17)、“10001”(使能12个通路的表项18)、“01011”(使能8个通路的表项12)、“01101“(使能4个通路的表项14,)、”01110“(使能2个通路的表项15)和最后是”10111“(禁止所有的通路的表项24)。
上述的进展可能会比通过将相应的地址的索引部分减少一位的直接使缓存减半更有效。此外,通过减少地址的索引部分以减半缓存可将通常置于掉电一半的缓存中的其它地址反放入上电的大小减小的缓存中。从而,这样的情景产生当后来确定缓存需要再增加大小时的额外的驱离这些地址的工作。
参考图6,图6示出了用于高效的缓存扇区掉电序列的方法。与方法400和500相同,诸如方法600之类其它方法可以为本领域技术人员修改,以获得替代的实施方式。此外,在此实施方式中的步骤是按顺序示出的。然而,在另一实施方式中,某些步骤可以不同于所示的顺序出现,有些步骤可同时执行,某些步骤可与其它步骤结合起来,一些步骤可省略。在所示的实施方式中,用于确定共享资源的哪些子部分被将进入的操作启用或禁用分配的初始分配设置在块602。例如,在诸如表2之类编码表中定义的最初编码值可存储在适当的CSR中。
一个或多个计算机程序或软件应用程序在块604中执行。这些应用程序可以由一个或多个处理器内核112、图形处理单元(GPU)170、I/O设备160或其它执行。执行软件应用程序的这些实体每一个可能存取诸如数据缓存之类共享资源。在一实施方式中,可共享的资源可以是诸如图2的共享高速缓冲存储器子系统118之类共享的L2或L3缓存。由处理器内核112对共享缓存的存取或存储器请求可能比来自诸如GPU170或I/O设备160之类其它源的存取对系统性能有更大的影响。
当掉电的条件被确定为存在(条件判断块606)时,诸如在诸如表2之类表中定义的初始编码值之类在一个或多个CSR中存储的值可能会在块608改变。当从诸如图1的处理节点110之类处理系统的内部或外部到缓存控制器的要进入的信号表明某些缓存扇区应掉电时,掉电的条件可能存在。在一实施方式中,缓存控制器对应于处理系统内的共享缓存。若干掉电机制可被本领域技术人员用于提供这样的迹象。
到缓存控制器或其它逻辑的传入的掉电指示可被用来确定由CSR存储的编码值逐步过渡的方式。受影响的CSR可包括用于特定的源的各自的CSR、与整个CSR对应的单一主缓存、组合或其它源。在一实施方式中,缓存控制器改变当前存储的编码值,以通过通路掩蔽禁用用于分配的缓存的特定扇区。在一实施方式中,用于整个缓存的单一主CSR可能存在。对于特定的源,要用于存储器请求分配的缓存的可允许的通路可能由以主CSR和源特定的CSR存储的值作为输入的逻辑确定。对掉电或上电的序列而言,单一主CSR可能只能以每一个CSR作为每一个源进行修改。因此,如上所述,只有单一的过渡可利用(如“00111”到“10000”到“10001”等)。在另一实施方式中,单独的过渡可用于系统中的每一个CSR。
在块610,缓存控制器通过缓存的集转换,如一对一或如果支持电路存在就在同一时间存取多个索引和相应集来存取每一可能的索引,并刷新缓存的被禁用的通路的内容。在这一步骤期间,缓存本身仍起作用,仍然处理存储器请求。
在一实施方式中,当冲洗完成后,缓存控制器阻止给块612中的整个缓存的存储器请求的处理。在另一实施方式中,当冲洗完成后,缓存控制器模块只阻止存储器请求到块612中的缓存的禁用的缓存的通路。因此,存储器请求存取可以有选择性地封锁,只有禁用的通路或存储器请求存取可能被整个缓存封锁。接着,在块614,缓存控制器传送掉电通信到缓存阵列。例如,可从缓存控制器向缓存阵列发出指令以通过通路屏蔽使缓存的目标扇区掉电。掉电的过程可能需要几个时钟周期,这在掉电请求时可能是已知或未知的。当提供迹象表明缓存阵列的掉电完成(条件判断块616)时,缓存控制器重新启用存储器请求以存取块618中的缓存。如果整个缓存被事先禁用存储器请求存取,这一步就可能会重新启用整个缓存的存取。否则,如果事前只有禁用缓存通路的存储器请求被防止存取,这一步就可以跳过。方法600的控制流然后返回到只有启用的缓存通路才在执行计算机程序的过程中存取的块604。
现在翻到图7,图7示出了用于高效的缓存扇区上电序列的方法。一个或多个计算机程序或软件应用程序在块702执行。这些应用程序可以由一个或多个处理器内核112、图形处理单元(GPU)170、I/O设备160或其它执行。执行软件应用程序的这些实体每一个都可能存取诸如数据缓存之类共享资源。这一共享缓存可能已经有某些扇区或部分是之前用诸如与方法600类似的方法掉电的。
当上电条件由诸如相应的逻辑确定为存在或接收到上电通知(条件判断块704)时,在一实施方式中,缓存控制器阻止给块706中的整个缓存的存储器请求的处理。在另一实施方式中,当上电条件确定为存在时,缓存控制器可能只继续阻止存储器请求到缓存的禁用的(之前掉电的)缓存通路。因此,对整个缓存,存储器请求存取可能会继续有选择地只阻止禁用的通路或禁用的存储器请求存取。在一实施方式中,要上电的缓存扇区可能是该缓存的所有被关闭(之前掉电)的缓存通路。在另一实施方式中,要上电的缓存扇区可以由在用于特定的源的各自的CSR、与整个缓存对应的单一主CSR、组合或其它中存储的编码值确定。
接着,在块708,缓存控制器传送上电通信到缓存阵列。例如,指令可从缓存控制器发到缓存阵列,以使缓存的目标扇区或部分上电。再次,目标扇区可能会由存储在一个或多个CSR中的编码值确定。上电的过程可能需要几个时钟周期,这在上电请求的时候可能是已知或未知的。在一实施方式中,缓存阵列使用唤醒晶体管驱动新扇区的节点和线路由到完全的逻辑0和1的值。一旦这一步完成后,阵列就打开全功率晶体管。然后执行在其中设定内部阻塞位的内部初始化。
当提供了缓存阵列的上电完成的指示(条件判断块710)时,如果对整个缓存的存取是以前禁用的,缓存控制器就重新使存储器请求存取在块712中的缓存。然而,同时,缓存控制器可以利用缓存的通路屏蔽以防止存储器请求存取最近启用的扇区。在另一实施方式中,缓存可能会更新状态信息以表明最近启用的扇区是无效的。在替代实施方式中,通路屏蔽和状态信息都可能被用来防止存储器请求存取缓存的最近启用的扇区、而同时到以前启用的扇区的存取恢复。
在块714,关于最近启用的扇区或缓存通路,状态信息初始化,缓存检查重新启用。在一实施方式中,缓存控制器使用状态机通过直接的方式顺序通过最近启用的缓存的通路,相应的有效位被复位。此外,命中和奇偶校验逻辑被重新启用。最初的缓存一致性协议状态可设置为无效状态。再次,与这一步并行,存储器请求到缓存的其它扇区的存取发生。
一旦块714中的步骤完成,缓存阵列就可能会向缓存控制器发送相应的指示。接着,在块716,现在对最近启用的扇区启用缓存通路屏蔽,诸如在表(如表2)中定义的初始编码值之类在一个或多个CSR中存储的值可能会在块716中改变或重新编程。请注意,到最近启用的缓存通路的初始存取可能会遇到缓存未命中,随后的分配可能基于在一个或多个CSR中存储的编码值的至少一部分而确定。对最近启用的缓存的通路,最初的缓存未命中可能不需要驱逐无效数据。
虽然已经相当详细地说明了上述实施方式,但对本领域的技术人员而言,一旦充分理解上述公开内容,大量的变化和修改将变得很明显。期望对下面的权利要求进行解释,以包含所有这样的变化和修改。
Claims (17)
1.一种计算系统,其包括:
第一源,其被配置为生成存储器请求;
与所述第一源不同的第二源,其被配置为生成存储器请求;
共享缓存,其包括由一或多个条目组成的第一部分和由一或多个条目组成的与所述第一部分不同的第二部分;和
共享缓存控制器,其耦合到所述共享缓存;
其中共享缓存控制器配置为:
确定所述第一部分被允许具有由所述第一源分配而不是由所述第二源分配的数据;和
确定所述第二部分被允许具有由所述第二源分配而不是由所述第一源分配的数据;
基于确认所述第一源或者所述第二源为包括相应存储器请求和下面中的至少一个的命令的源来执行所述确定:所述相应存储器请求的命令类型和提示位,所述提示位是由所述源发出的所述命令的一部分但却不同于所述源的标识;
其中,存储在所述第一部分或者所述第二部分中的数据能够被所述第一源或者所述第二源命中用于读或写访问。
2.如权利要求1所述的计算系统,其中在所述共享缓存继续运作时,响应于接到掉电通知,所述共享缓存控制器进一步被配置为:
确定随后所述第一部分不允许具有由任何源分配的数据;
将内容冲洗到所述第一部分的较低层次的存储器;
阻止存储器请求到所述第一部分;和
为所述第一部分传送掉电通知到所述共享缓存。
3.如权利要求1所述的计算系统,其进一步包括将基本输入输出软件所利用的系统设置信息存储到所述共享缓存的确定为不允许具有由任何源分配的数据的部分中。
4.如权利要求1所述的计算系统,其中所述第一源和所述第二源各自是下面中的至少一个:处理器内核、图形处理单元和输入/输出设备。
5.如权利要求4所述的计算系统,其中所述共享缓存控制器进一步配置为确定所述第一部分被允许具有由多个源的一个且仅一个源所分配的数据。
6.如权利要求5所述的计算系统,其进一步包括耦合到共享缓存控制器的一或多个配置和状态寄存器,用来存储用于所述第一部分和所述第二部分的所述确定的编码值。
7.如权利要求6所述的计算系统,其中所述共享缓存是集关联缓存,且所述第一部分和所述第二部分对应于至少一个缓存通路。
8.一种用于计算系统的共享高速缓冲存储器中的数据分配的方法,其包括:
由第一源生成存储器请求;
由与所述第一源不同的第二源生成存储器请求;
确定共享缓存的包括一或多个条目的第一部分被允许具有由所述第一源分配而不是由所述第二源分配的数据;和
确定所述共享缓存的包括一或多个条目的第二部分被允许具有由所述第二源分配而不是由所述第一源分配的数据;
基于确认所述第一源或者所述第二源为包括相应存储器请求和下面中的至少一个的命令的源来执行所述确定:所述相应存储器请求的命令类型和提示位,所述提示位是由所述源发出的所述命令的一部分但却不同于所述源的标识;
其中,存储在所述第一部分或者所述第二部分中的数据能够被所述第一源或者所述第二源命中用于读或写访问。
9.如权利要求8所述的方法,其响应于接到掉电通知,进一步包括:
确定随后所述第一部分不允许具有由任何源分配的数据;
将内容冲洗到所述第一部分的较低层次的存储器;
阻止存储器请求到所述第一部分;和
为所述第一部分传送掉电通知到所述共享缓存。
10.如权利要求8所述的方法,其将基本输入输出软件所利用的系统设置信息存储到禁止被多个源的每一个源存取的所述共享条目的一或多个条目中。
11.如权利要求8所述的方法,其中所述第一源和所述第二源各自是下面中的至少一个:处理器内核、图形处理单元和输入/输出设备。
12.如权利要求11所述的方法,其进一步包括确定所述第一部分被允许具有由多个源的一个且仅一个源所分配的数据。
13.如权利要求12所述的方法,其进一步包括将编码值存储到一或多个配置和状态寄存器中,以用于所述第一部分和所述第二部分的所述确定。
14.如权利要求13所述的方法,其中所述共享缓存是集关联缓存,且所述第一部分和所述第二部分对应于至少一个缓存通路。
15.一种共享缓存控制器,其包括:
第一接口,其耦合到包括由一或多个条目组成的第一部分和由一或多个条目组成的与所述第一部分不同的第二部分的共享缓存阵列;
第二接口,其配置为接收来自至少第一源和与所述第一源不同的第二源的存储器请求;
控制单元;和
其中,所述控制单元配置为:
确定所述第一部分被允许具有由所述第一源分配而不是由所述第二源分配的数据;和
确定所述第二部分被允许具有由所述第二源分配而不是由所述第一源分配的数据;
基于确认所述第一源或者所述第二源为包括相应存储器请求和下面中的至少一个的命令的源来执行所述确定:所述相应存储器请求的命令类型和提示位,所述提示位是由所述源发出的所述命令的一部分但却不同于所述源的标识;
其中,存储在所述第一部分或者所述第二部分中的数据能够被所述第一源或者所述第二源命中用于读或写访问。
16.如权利要求15所述的共享缓存控制器,其中在所述共享缓存继续运作时,响应于接到掉电通知,所述控制单元进一步被配置为:
确定随后所述第一部分不允许具有由任何源分配的数据;
将内容冲洗到所述第一部分的较低层次的存储器;
阻止存储器请求到所述第一部分;和
为所述第一部分传送掉电通知到所述共享缓存。
17.如权利要求15所述的共享缓存控制器,其进一步包括将基本输入输出软件所利用的系统设置信息存储到所述共享缓存的确定为不允许具有由任何源分配的数据的部分中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/413,124 | 2009-03-27 | ||
US12/413,124 US8589629B2 (en) | 2009-03-27 | 2009-03-27 | Method for way allocation and way locking in a cache |
PCT/US2010/028892 WO2010111636A1 (en) | 2009-03-27 | 2010-03-26 | A method for way allocation and way locking in a cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102365627A CN102365627A (zh) | 2012-02-29 |
CN102365627B true CN102365627B (zh) | 2015-04-01 |
Family
ID=42246109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080017816.5A Active CN102365627B (zh) | 2009-03-27 | 2010-03-26 | 用于缓存中通路分配及通路锁定的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8589629B2 (zh) |
EP (1) | EP2411917B1 (zh) |
JP (1) | JP2012522290A (zh) |
KR (1) | KR101569160B1 (zh) |
CN (1) | CN102365627B (zh) |
WO (1) | WO2010111636A1 (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8417889B2 (en) * | 2009-07-24 | 2013-04-09 | International Business Machines Corporation | Two partition accelerator and application of tiered flash to cache hierarchy in partition acceleration |
US9311245B2 (en) | 2009-08-13 | 2016-04-12 | Intel Corporation | Dynamic cache sharing based on power state |
US8244982B2 (en) * | 2009-08-21 | 2012-08-14 | Empire Technology Development Llc | Allocating processor cores with cache memory associativity |
US8645629B2 (en) * | 2009-09-16 | 2014-02-04 | Intel Corporation | Persistent cacheable high volume manufacturing (HVM) initialization code |
US8412885B2 (en) * | 2009-11-12 | 2013-04-02 | Intel Corporation | Searching a shared cache by using search hints and masked ways |
US8938589B2 (en) * | 2010-01-28 | 2015-01-20 | Hewlett-Packard Development Company, L. P. | Interface methods and apparatus for memory devices using arbitration |
US20160246711A9 (en) * | 2010-01-28 | 2016-08-25 | Hewlett-Packard Development Company, L. P. | Interface methods and apparatus for memory devices |
US8606999B2 (en) * | 2010-08-13 | 2013-12-10 | Advanced Micro Devices, Inc. | Cache partitioning |
US8937622B2 (en) * | 2010-09-20 | 2015-01-20 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US20120096295A1 (en) * | 2010-10-18 | 2012-04-19 | Robert Krick | Method and apparatus for dynamic power control of cache memory |
US20120324195A1 (en) * | 2011-06-14 | 2012-12-20 | Alexander Rabinovitch | Allocation of preset cache lines |
JP2013003793A (ja) * | 2011-06-15 | 2013-01-07 | Toshiba Corp | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
US8769316B2 (en) | 2011-09-06 | 2014-07-01 | Intel Corporation | Dynamically allocating a power budget over multiple domains of a processor |
US8954770B2 (en) | 2011-09-28 | 2015-02-10 | Intel Corporation | Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin |
US9074947B2 (en) | 2011-09-28 | 2015-07-07 | Intel Corporation | Estimating temperature of a processor core in a low power state without thermal sensor information |
US9026815B2 (en) | 2011-10-27 | 2015-05-05 | Intel Corporation | Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor |
US8832478B2 (en) | 2011-10-27 | 2014-09-09 | Intel Corporation | Enabling a non-core domain to control memory bandwidth in a processor |
US8943340B2 (en) | 2011-10-31 | 2015-01-27 | Intel Corporation | Controlling a turbo mode frequency of a processor |
US9158693B2 (en) | 2011-10-31 | 2015-10-13 | Intel Corporation | Dynamically controlling cache size to maximize energy efficiency |
US9753858B2 (en) * | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
US9910893B2 (en) * | 2011-12-01 | 2018-03-06 | Oracle International Corporation | Failover and resume when using ordered sequences in a multi-instance database environment |
US9189295B2 (en) | 2011-12-01 | 2015-11-17 | Oracle International Corporation | Generating an ordered sequence in a database system using multiple interleaved caches |
US9141609B2 (en) | 2011-12-01 | 2015-09-22 | Oracle International Corporation | Reducing sequence cache latch contention in a database system |
US20130205089A1 (en) * | 2012-02-08 | 2013-08-08 | Mediatek Singapore Pte. Ltd. | Cache Device and Methods Thereof |
KR20130131135A (ko) * | 2012-05-23 | 2013-12-03 | 삼성전자주식회사 | QoS 기반 캐시 컨트롤러 및 그 동작 방법 |
US9529719B2 (en) | 2012-08-05 | 2016-12-27 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US20140136793A1 (en) * | 2012-11-13 | 2014-05-15 | Nvidia Corporation | System and method for reduced cache mode |
US9183144B2 (en) * | 2012-12-14 | 2015-11-10 | Intel Corporation | Power gating a portion of a cache memory |
US9710380B2 (en) * | 2013-08-29 | 2017-07-18 | Intel Corporation | Managing shared cache by multi-core processor |
US20150261681A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Host bridge with cache hints |
CN104407989B (zh) * | 2014-11-25 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有统一标签和片化数据的高速缓冲存储器 |
GB2537357A (en) * | 2015-04-09 | 2016-10-19 | Imagination Tech Ltd | Cache operation in a multi-threaded processor |
US9626299B2 (en) * | 2015-05-01 | 2017-04-18 | Intel Corporation | Changing a hash function based on a conflict ratio associated with cache sets |
GB2540761B (en) * | 2015-07-23 | 2017-12-06 | Advanced Risc Mach Ltd | Cache usage estimation |
JP6477352B2 (ja) * | 2015-08-17 | 2019-03-06 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10031833B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10067709B2 (en) * | 2016-09-19 | 2018-09-04 | Advanced Micro Devices, Inc. | Page migration acceleration using a two-level bloom filter on high bandwidth memory systems |
US10489273B2 (en) | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
US10310963B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using index bits in a processor cache |
US10324851B2 (en) | 2016-10-20 | 2019-06-18 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache |
US10540250B2 (en) | 2016-11-11 | 2020-01-21 | Microsoft Technology Licensing, Llc | Reducing storage requirements for storing memory addresses and values |
US9996478B1 (en) * | 2016-12-09 | 2018-06-12 | Advanced Micro Devices, Inc. | No allocate cache policy |
KR102576707B1 (ko) | 2016-12-26 | 2023-09-08 | 삼성전자주식회사 | 전자 시스템 및 그 동작 방법 |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10365824B2 (en) | 2017-04-24 | 2019-07-30 | Advanced Micro Devices, Inc. | Silent active page migration faults |
US10310985B2 (en) | 2017-06-26 | 2019-06-04 | Ati Technologies Ulc | Systems and methods for accessing and managing a computing system memory |
US10296442B2 (en) | 2017-06-29 | 2019-05-21 | Microsoft Technology Licensing, Llc | Distributed time-travel trace recording and replay |
US10318344B2 (en) | 2017-07-13 | 2019-06-11 | Advanced Micro Devices, Inc. | Predicting page migration granularity for heterogeneous memory systems |
CN109271333B (zh) * | 2017-07-17 | 2022-03-01 | 深圳市中兴微电子技术有限公司 | 一种sram控制方法及控制器、控制系统 |
GB2565338B (en) | 2017-08-10 | 2020-06-03 | Mips Tech Llc | Fault detecting and fault tolerant multi-threaded processors |
US10572388B2 (en) | 2017-08-30 | 2020-02-25 | Micron Technology, Inc. | Managed NVM adaptive cache management |
US10459824B2 (en) | 2017-09-18 | 2019-10-29 | Microsoft Technology Licensing, Llc | Cache-based trace recording using cache coherence protocol data |
US11526278B2 (en) | 2017-12-21 | 2022-12-13 | Advanced Micro Devices, Inc. | Adaptive page close prediction |
US10558572B2 (en) | 2018-01-16 | 2020-02-11 | Microsoft Technology Licensing, Llc | Decoupling trace data streams using cache coherence protocol data |
US10783083B2 (en) * | 2018-02-12 | 2020-09-22 | Stmicroelectronics (Beijing) Research & Development Co. Ltd | Cache management device, system and method |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
US10642737B2 (en) | 2018-02-23 | 2020-05-05 | Microsoft Technology Licensing, Llc | Logging cache influxes by request to a higher-level cache |
US10496537B2 (en) | 2018-02-23 | 2019-12-03 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache |
US10891234B2 (en) * | 2018-04-04 | 2021-01-12 | Sap Se | Cache partitioning to accelerate concurrent workloads |
CN109445680B (zh) * | 2018-08-20 | 2020-03-31 | 华为技术有限公司 | 一种对硬盘进行管理的方法及装置 |
US10860485B2 (en) * | 2018-11-05 | 2020-12-08 | Microsoft Technology Licensing, Llc | Leveraging existing logic paths during bit-accurate processor tracing |
US10909012B2 (en) * | 2018-11-12 | 2021-02-02 | H3 Platform, Inc. | System having persistent memory |
US11016913B1 (en) * | 2020-03-30 | 2021-05-25 | Apple Inc. | Inter cluster snoop latency reduction |
CN113687955B (zh) * | 2021-06-18 | 2023-03-17 | 上海天数智芯半导体有限公司 | 一种高效处理gpu片内和片间缓存一致性的数字电路设计方法 |
US20230195640A1 (en) * | 2021-12-21 | 2023-06-22 | Advanced Micro Devices, Inc. | Cache Associativity Allocation |
US11836088B2 (en) | 2021-12-21 | 2023-12-05 | Advanced Micro Devices, Inc. | Guided cache replacement |
US11829190B2 (en) | 2021-12-21 | 2023-11-28 | Advanced Micro Devices, Inc. | Data routing for efficient decompression of compressed data stored in a cache |
US20230205696A1 (en) * | 2021-12-28 | 2023-06-29 | Advanced Micro Devices, Inc. | Cascading execution of atomic operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282644B1 (en) * | 1998-01-08 | 2001-08-28 | Lg Electronics Inc. | Apparatus and method for storing BIOS data of computer system |
US6493800B1 (en) * | 1999-03-31 | 2002-12-10 | International Business Machines Corporation | Method and system for dynamically partitioning a shared cache |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01133162A (ja) * | 1987-11-18 | 1989-05-25 | Fujitsu Ltd | キャッシュメモリ制御方式 |
US5412787A (en) | 1990-11-21 | 1995-05-02 | Hewlett-Packard Company | Two-level TLB having the second level TLB implemented in cache tag RAMs |
JPH0887453A (ja) * | 1994-09-20 | 1996-04-02 | Mitsubishi Electric Corp | キャッシュメモリ装置、キャッシュメモリ装置の登録制御方法及びコンピュータ |
US5764946A (en) | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5848433A (en) | 1995-04-12 | 1998-12-08 | Advanced Micro Devices | Way prediction unit and a method for operating the same |
US5845323A (en) | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5802594A (en) | 1995-09-06 | 1998-09-01 | Intel Corporation | Single phase pseudo-static instruction translation look-aside buffer |
US6044478A (en) | 1997-05-30 | 2000-03-28 | National Semiconductor Corporation | Cache with finely granular locked-down regions |
US6073230A (en) | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US6138213A (en) | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6016533A (en) | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6314514B1 (en) | 1999-03-18 | 2001-11-06 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions |
US6629207B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method for loading instructions or data into a locked way of a cache memory |
JP3391315B2 (ja) * | 1999-10-20 | 2003-03-31 | 日本電気株式会社 | バス制御装置 |
JP3620473B2 (ja) * | 2001-06-14 | 2005-02-16 | 日本電気株式会社 | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 |
US6662272B2 (en) | 2001-09-29 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
US7234052B2 (en) * | 2002-03-08 | 2007-06-19 | Samsung Electronics Co., Ltd | System boot using NAND flash memory and method thereof |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US7254676B2 (en) * | 2002-11-15 | 2007-08-07 | Intel Corporation | Processor cache memory as RAM for execution of boot code |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US20050050278A1 (en) | 2003-09-03 | 2005-03-03 | Advanced Micro Devices, Inc. | Low power way-predicted cache |
US7237098B2 (en) | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US7558920B2 (en) | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US20070156992A1 (en) * | 2005-12-30 | 2007-07-05 | Intel Corporation | Method and system for optimizing latency of dynamic memory sizing |
US7302528B2 (en) * | 2004-11-19 | 2007-11-27 | Intel Corporation | Caching bypass |
US7996644B2 (en) * | 2004-12-29 | 2011-08-09 | Intel Corporation | Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache |
CN101107599B (zh) * | 2005-03-22 | 2011-09-21 | 松下电器产业株式会社 | 高速缓冲存储器控制方法和高速缓冲存储器控制装置 |
JP2007114890A (ja) * | 2005-10-18 | 2007-05-10 | Matsushita Electric Ind Co Ltd | 演算処理装置およびキャッシュ動作方法 |
JP2009015509A (ja) * | 2007-07-03 | 2009-01-22 | Renesas Technology Corp | キャッシュメモリ装置 |
US8589706B2 (en) * | 2007-12-26 | 2013-11-19 | Intel Corporation | Data inversion based approaches for reducing memory power consumption |
-
2009
- 2009-03-27 US US12/413,124 patent/US8589629B2/en active Active
-
2010
- 2010-03-26 JP JP2012502301A patent/JP2012522290A/ja active Pending
- 2010-03-26 KR KR1020117025021A patent/KR101569160B1/ko not_active IP Right Cessation
- 2010-03-26 CN CN201080017816.5A patent/CN102365627B/zh active Active
- 2010-03-26 WO PCT/US2010/028892 patent/WO2010111636A1/en active Application Filing
- 2010-03-26 EP EP10712630.2A patent/EP2411917B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282644B1 (en) * | 1998-01-08 | 2001-08-28 | Lg Electronics Inc. | Apparatus and method for storing BIOS data of computer system |
US6493800B1 (en) * | 1999-03-31 | 2002-12-10 | International Business Machines Corporation | Method and system for dynamically partitioning a shared cache |
Also Published As
Publication number | Publication date |
---|---|
WO2010111636A1 (en) | 2010-09-30 |
US8589629B2 (en) | 2013-11-19 |
KR20110134917A (ko) | 2011-12-15 |
US20100250856A1 (en) | 2010-09-30 |
CN102365627A (zh) | 2012-02-29 |
JP2012522290A (ja) | 2012-09-20 |
EP2411917A1 (en) | 2012-02-01 |
EP2411917B1 (en) | 2020-08-12 |
KR101569160B1 (ko) | 2015-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102365627B (zh) | 用于缓存中通路分配及通路锁定的方法 | |
US11636038B2 (en) | Method and apparatus for controlling cache line storage in cache memory | |
US7277992B2 (en) | Cache eviction technique for reducing cache eviction traffic | |
CN101048763B (zh) | 一种配置处理器的高速缓冲存储器的方法与处理器 | |
US20110072204A1 (en) | Memory server | |
US9128842B2 (en) | Apparatus and method for reducing the flushing time of a cache | |
CN105103144A (zh) | 用于存储器的自适应控制的设备及方法 | |
US9645942B2 (en) | Method for pinning data in large cache in multi-level memory system | |
US8392659B2 (en) | Extending cache capacity on multiple-core processor systems | |
US20170177482A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
US7197605B2 (en) | Allocating cache lines | |
JP5226010B2 (ja) | 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路 | |
CN104272277A (zh) | 用于快速缓存断电的设备和方法 | |
US20120254526A1 (en) | Routing, security and storage of sensitive data in random access memory (ram) | |
CN105808452A (zh) | 微控制单元mcu的数据分级处理方法和系统 | |
CN102855162B (zh) | 一种数据更新方法、数据更新系统及存储器 | |
US20200081716A1 (en) | Controlling Accesses to a Branch Prediction Unit for Sequences of Fetch Groups | |
US9229872B2 (en) | Semiconductor chip with adaptive BIST cache testing during runtime | |
KR20150002139A (ko) | 가상 캐시를 포함하는 메모리 및 그 관리 방법 | |
Bhebhe et al. | A survey of emerging architectural techniques for improving cache energy consumption |
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 |