CN110023916A - 一种减少缓存中读/写竞争的方法和装置 - Google Patents
一种减少缓存中读/写竞争的方法和装置 Download PDFInfo
- Publication number
- CN110023916A CN110023916A CN201780074718.7A CN201780074718A CN110023916A CN 110023916 A CN110023916 A CN 110023916A CN 201780074718 A CN201780074718 A CN 201780074718A CN 110023916 A CN110023916 A CN 110023916A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- array
- buffer
- caching
- 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
Links
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/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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/221—Static RAM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种缓存,包括:存储一个或更多个标签地址的标签阵列;用于存储缓存控制信息的标签控制缓冲器;存储从存储装置获取的数据的数据阵列;以及,存储与写请求相关的信息的写缓冲器;其中,所述标签阵列被配置为独立于所述标签控制缓冲器访问,所述数据阵列被配置为独立于所述写缓冲器访问。
Description
技术领域
本申请涉及计算机架构领域,更具体地,本申请涉及一种减少缓存中读/写竞争的方法和装置。
背景技术
易失性存储器,如动态随机访问存储器(DRAM),能够为计算机处理器以合理的访问速度提供临时存储空间。易失性存储器可用于存储指令和数据,这些指令和数据同时可被提取到计算机处理器进行处理。计算机处理器还可以将处理的结果存储到易失性存储器中,以便后续处理。虽然DRAM提供了合理的访问速度,但是,随着计算机处理器处理速度不断提高以及由于摩尔定律需要DRAM的存储容量不断增加,内存访问延迟仍然是计算机处理器的瓶颈。因此,现有的计算机处理器通常部署一个包括缓存在内的分层存储系统,以达到加快内存访问速度的目的。
发明内容
本公开的实施例提供一种缓存。所述缓存包含:存储一个或更多个标签地址的标签阵列;用于存储缓存控制信息的标签控制缓冲器;存储从存储装置获取的数据的数据阵列;以及存储与写请求相关的信息的写缓冲器。所述标签阵列被配置为独立于所述标签控制缓冲器访问,所述数据阵列被配置为独立于所述写缓冲器访问。
本公开的实施例同时提供一种操作缓存的方法,所述缓存包括标签阵列、标签控制缓冲器、数据阵列以及写缓冲器。所述方法包括:接收包括写数据和存储地址的第一写请求;接收第二数据访问请求;根据所述存储地址确定标签地址;对标签阵列执行第一读操作以确定是否存在缓存命中;以及对确定存在缓存命中进行响应:对写缓冲器执行写操作以存储与所述第一写请求相关的信息以及写数据,对标签控制缓冲器执行写操作以更新存储的缓存控制信息;针对所述第二数据访问请求对所述标签阵列和所述数据阵列执行第二读操作;以及基于存储于所述写缓冲器中的所述写数据以及与所述第一写请求相关的信息对所述数据阵列的第一数据条目执行写操作。
本公开的实施例同时提供一种计算机系统。所述计算机系统包括硬件处理器以及与所述硬件处理器连接的分层存储系统,所述分层存储系统包括:动态随机访问存储装置以及缓存;所述缓存包括:被配置存储一个或更多个标签地址的标签阵列;被配置为存储缓存控制信息的标签控制缓冲器;被配置为存储从动态随机访问存储装置获取的数据的数据阵列;以及被配置为存储与来自硬件处理器的写请求相关的信息的写缓冲器;所述标签阵列被配置为独立于所述标签控制缓冲器被访问,并且所述数据阵列被配置为独立于所述写缓冲器被访问。
本公开的实施例另外提供一种缓存。所述缓存包括:被配置为存储一个或更多个标签地址以及缓存控制信息的标签阵列;被配置为存储从存储装置获取的数据的数据阵列;以及,被配置为存储与写请求相关的信息的写缓冲器;所述数据阵列被配置为独立于所述写缓冲器访问。
本公开的实施例另外提供一种操作缓存的方法,所述缓存包括标签阵列,数据阵列,以及写缓冲器。所述方法包括:接收包括第一数据和存储地址的第一写请求;基于所述存储地址确定标签地址;对所述标签阵列执行第一读操作以确定是否存在缓存命中;对确定存在缓存命中进行响应,对写缓冲器执行写操作以存储所述第一数据;对标签阵列执行写操作以更新存储的缓存控制信息;响应于确定满足预设条件,基于存储在所述写缓冲器的所述第一数据对所述数据阵列执行写操作。
所公开的实施例的附加目的和优点将部分地在以下描述中阐述,并且部分地将从描述中变的显而易见,或通过对实施例的实施而获得。本公开实施例的目的和优点可以通过在权利要求书中阐述的元素和组合而获得。
应当理解,在前述的一般描述以及下面的描述仅仅是示意性和解释性的,其并不对所公开的实施例及权利要求书构成限制。
附图说明
图1示出了本公开的实施例可以使用的计算机系统的示意图;
图2A-B示出了可以适用于本公开的实施例的单端口存储装置与双端口存储装置的示意图;
图3示出了与本公开的实施例一致的示例性缓存示意图;
图4示出了与本公开的实施例一致的另一示例性缓存示意图;
图5示出了与本公开的实施例一致的操作缓存的示例性方法的流程图;
具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另有说明,否则不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实现不代表与本发明一致的所有实现。相反,它们仅仅是与所附权利要求中记载的发明相关方面相一致的装置和方法的示例。
本公开的实施例提供一种缓存,所述缓存包括:被配置为存储一个或更多个标签地址的标签阵列;被配置为存储缓存控制信息的标签控制缓冲器;被配置为存储从存储装置获取的数据的数据阵列;以及,被配置为存储与写请求相关的信息的写缓冲器。根据本公开的实施例,所述标签阵列被配置为独立于所述标签控制缓冲器被访问,所述数据阵列被配置为独立于所述写缓冲器被访问。在接收写请求以及确定所述写请求导致缓存命中之后,所述缓存可以存储写缓冲器中与写请求相关的信息,而非执行所述写请求。所述缓存进而可处理后续的访问请求,并且然后基于存储于写缓冲器中的信息执行延迟的写请求。采用这样的安排,即使数据阵列包含不允许同时执行读/写操作的单端口SRAM设备,缓存也无需等待写请求完成后再执行后续的访问请求。结果,单端口SRAM设备中的读写竞争造成的延迟可以被减少,缓存的性能可以得到实质性提升。
请参考图1,其示出了本公开的实施例可使用的计算机系统100。如图1中所示,计算机系统100包括计算机处理器102和分层存储系统104,存储系统104包括缓存122与DRAM132。虽然图1中显示出缓存122与计算机处理器102是分开的,可以理解的是,缓存122也可以是包括计算机处理器102的集成电路芯片的一部分。缓存122也可以是包括DRAM 132的集成电路芯片的一部分,或者,缓存122也可以作为一个独立的芯片存在。
缓存122通常使用静态随机存取存储器(SRAM)创建,SRAM设备比DRAM设备提供更高的访问速度,但也包括更多的晶体管,而且比相同存储容量的DRAM设备消耗更多的能量。缓存122也可以用作存储在DRAM 132中的数据子集的中间缓冲器,使得缓存122中存储的数据对应于DRAM 132中存储的至少部分数据。该数据子集通常是由计算机处理器102最近访问的数据,该数据可以包括根据数据读取操作由DRAM132中获得的数据,或由计算机处理器102修改通过写操作存储在DRAM132中的数据。由于时间和空间位置,这些数据(以及存储在附近存储位置的其它数据)可能会被计算机处理器102再次访问。当计算机处理器102再次尝试访问这些数据时,就可以由缓存122(会导致缓存命中)而非由DRAM 132读取数据。通过增加对这些数据的访问速度,可减少DRAM 132的访问延迟对计算机系统100总体速度的影响。
如图1所示,缓存122包括标签阵列124、数据阵列126和缓存控制器128。缓存122可以为直接映射的缓存。标签阵列124和数据阵列126都包含多个条目,标签阵列124包括标签条目124a和124b,数据阵列126包含数据条目126a和126b。数据阵列126存储由计算机处理器102访问(或可能访问)从DRAM 132获取的存储数据。数据阵列126的每个数据条目中存储的数据与一标签地址相关联,标签地址可以从DRAM 132中数据的存储地址获得。标签阵列124的每个标签条目可以存储与数据阵列126中的数据条目相关联的标签地址,使得标签条目对应于数据条目。标签阵列124还存储用于使用每个标签地址进行缓存操作的控制信息。所述控制信息可以包括数据一致性状态和最近最少使用(LRU)信息。当计算机处理器102在缓存写操作覆盖缓存中的数据时,数据一致性状态可以显示缓存中存储的数据与内存中存储的相应数据之间的一致性状态。LRU信息反映数据阵列126中数据条目的数据的访问历史(读或写访问),同时包含了标志,该标志指示某一数据条目是否在数据阵列126中的数据条目中被最近最少访问。
缓存控制器128管理对缓存122的读写操作。当缓存控制器128从计算机处理器102接收到对缓存122的访问(读或写)请求时,缓存控制器128从所述请求中确定一标签地址。然后,缓存控制器128对标签阵列124执行读操作,以确定其是否存储有相匹配的标签地址。在缓存122是直接映射缓存的情况下,如果在标签阵列124中的其中一标签条目中找到匹配的标签地址,则缓存控制器128确定存在缓存命中。然后,缓存控制器128对上述匹配标签条目相应的数据条目执行读操作,并将数据条目中存储的数据传回至计算机处理器102。缓存控制器128还可以更新标签阵列124中的数据一致性状态以及LRU信息,以及在缓存写操作中更新存储在数据阵列中的数据。
在现有技术中,标签阵列124和数据阵列126均是使用SRAM设备构建的。一些SRAM设备为单端口设备。请参考图2A,其示出一典型的单端口SRAM缓存200。如图2A中所示,SRAM缓存200包含用于选择一个或更多个单端口SRAM设备的单一地址(addr)。当写使能信号(we)有效时,所选设备可用于写操作来存储输入数据(din)。当读使能信号(re)有效时,所选设备还可以用于读取操作以将存储的数据作为输出数据(dout)。典型的单端口SRAM设备包括用于读写操作的共享位线,无论位线是由输入数据端口(用于写操作)驱动还是由输出数据端口(用于读操作)驱动,均由写使能和读使能信号控制。因此,所选的SRAM设备不能同时处理读操作和写操作,否则在共享位线上的输入数据端口和输出数据端口之间将发生竞争。
此外,一些SRAM设备为双端口设备,其允许同时读写操作。典型的双端口SRAM设备包括用于读操作和写操作的独立位线。请参考2B,其示出一典型的双端口SRAM缓存220。如图2B所示,SRAM缓存220包含一个读操作地址(rd_addr)和一个写操作地址(wr_addr)。SRAM缓存220允许为同时的读写操作选择不同的SRAM设备集,或者为同时的读写操作选择相同的SRAM设备集。
与具有相同存储容量的双端口SRAM器件构建的缓存相比,单端口SRAM缓存通常包含更少的晶体管器件和信号路由,并且可以提供高达50%的芯片尺寸的减少及功耗降低。然而,单端口SRAM缓存由于不能同时处理读写操作,导致性能上严重下降。
为提供说明性示例,请参考图1,假设计算机处理器102发送了将数据写到数据条目126a中的写请求,然后发送了从数据条目126b中读取数据的读请求,这两个请求会造成连续的缓存命中。写请求会对存储在标签条目124a中的LRU信息和数据一致性状态执行写操作,该LRU信息和数据一致性状态对应于数据条目126a。此外,当缓存控制器128通过标签阵列124搜索以确定是否存在匹配的标签地址时,读请求也可以引起存储在标签条目124a和124b中的标签地址的访问的读操作。
如果标签阵列124采用双端口SRAM设备构建,则可同时进行对标签条目124a的写操作以及对标签条目124a和124b的读操作。另一方面,如果标签阵列124采用单端口SRAM设备构建,对标签条目124a的写操作和对标签条目124a和124b的读操作不能同时进行。例如,在启动对标签条目124a的写操作后(用于处理写请求),在完成对标签条目124a的写操作之前,必须等待而不能执行对标签条目124a和126a的读操作(用于处理读请求)。类似地,如果数据阵列126采用单端口SRAM设备构建,在启动对数据条目126a的写操作后(用于处理写请求),在完成对数据条目126a的写操作之前,必须等待而不能同时执行对数据条目126b的读操作(用于处理读请求)。
尽管会存在连续的缓存命中,但是与当使用双端口SRAM设备构建的不存在读/写竞争的缓存122的情形相比,单端口缓存122由于存在读/写竞争而造成的等待时间仍然显著降低了其性能。在现有技术下,缓存通常可以达到90%的缓存命中率。因此,排除缓存中的读/写竞争因素,双端口SRAM设备的缓存122较单端口SRAM设备性能上显著提高。
请参考图3,其为根据本公开的实施例的缓存300的示意图。缓存300可以是来自计算机处理器(例如计算机处理器102)的处理数据访问请求的分层存储系统的一部分(例如图1中的存储系统104),并且可以替代附图1中的缓存122。可以理解的是,缓存300也可以是包括计算机处理器102在内的集成电路芯片的一部分。缓存300还可以是包括图1中的DRAM132集成电路芯片的一部分,或者可以作为独立芯片存在。缓存300可以是直接映射缓存。
如图3所示,缓存300可以包括标签部分310、数据部分340和缓存控制器360。标签部分310可以包括标签阵列312和标签控制缓冲器314。标签阵列312的每个条目可以存储标签地址,标签控制缓冲器314的每个条目可以存储包括数据一致性状态和LRU信息在内的控制信息。可以使用单端口SRAM或双端口SRAM设备来构建标签阵列312,而标签控制缓冲器314可以由顺序逻辑块(如触发器、锁存器等)或电路块(如双端口SRAM设备)构建。此外,标签阵列312和标签控制缓冲器314可以包括各自的读/写使能信号、条目选择信号等。采用这样的方式,标签阵列312和标签控制缓冲器314可以独立地访问(读或写)对方。虽然图3表明标签部分310同时包含标签阵列312和标签控制缓冲器314,但可以理解的是,标签控制缓冲器314也可以独立于标签部分310,同样地,标签阵列312也可以存储缓存控制信息。
此外,数据部分340也包括数据阵列342和写缓冲器344。数据阵列342和写缓冲器344的每个条目都可以存储由图1中的计算机处理器102访问(或可能访问)的实际数据。数据阵列342可以使用单端口SRAM或双端口SRAM设备构建。写缓冲器344也可以使用单端口SRAM或双端口SRAM设备构建,或者使用顺序逻辑块(如触发器和锁存器)构建。数据阵列342和写缓冲器344可以包括各自读/写使能信号、条目选择信号等。通过上述部署方式,在写缓冲器344中数据阵列342可以被独立访问(读或写)。
数据阵列342和写缓冲器344中的每个条目可以大小不同,例如,数据阵列342的每个条目可以相当于一条通常为64字节的高速缓存线。另一方面,写缓冲器的每个条目可以具有4比特的大小,其相当于被典型的写操作所请求的数据的大小。
在一些实施例中,缓存控制器360可以控制标签部分310和数据部分340的读写操作,从而实现预定的缓存策略。缓存控制器360可以包括数字逻辑模块,也可以是独立的应用特定集成模块(ASIC),或者是现场可编程的门阵列(FPGA),亦或是计算机处理器102的一部分。缓存控制器360也可以通过执行指令(如固件、微代码等)来控制读写操作。所述指令可以是存储在计算机可读的并由缓存控制器360访问的介质,所述介质包括易失性和非易失性、磁性、半导体、磁带、光学、可拆卸、不可拆卸等。
在一些实施例中,缓存控制器360可以通过实施缓存策略来减少对标签部分310和数据部分340的写操作所造成的延迟。在收到(例如,从计算机处理器102)将数据写入到数据阵列342的特定条目的请求后,所述写请求会导致缓存命中(例如,当在标签阵列312中查询到来自所述请求的标签地址时),缓存控制器360可以中止对数据阵列342的写操作,并且将与写操作相关的信息存储在写缓冲器344中。写缓冲器344中存储的信息可以包括,例如,存储在数据阵列342中的写数据,识别用于接收写数据的识别数据阵列342中的条目的标识符(例如,标签地址、指针、或任何标识符),以及通常可由存储器地址中包含的位偏移量得出的条目中的位置。然后,缓存控制器360可以继续处理来自计算机处理器102的下一数据请求(例如读取请求)。
在不同条件下,缓存控制器360可以使用存储在写缓冲器344中的信息来执行延迟的写请求。例如,当写缓冲器已满且不能接受另外的信息时,缓存控制器360可以执行延迟的写请求。在这种情况下,例如可以根据从计算机处理器102预计的写请求数量、在预定的时期内确定缓存命中率的数量、以及缓存的性能目标等信息来确定写缓冲器344的条目的数量。
作为另外一种实施方式,若缓存控制器360在预定的时段或者用于完成读请求的预定的时段内没有收到任何访问缓存300的请求,则缓存控制器360也可以执行延迟的写请求。预定的时段可以是特定的(例如,无论缓存是一级缓存、二级缓存等),并且可以在纳秒范围内。
此外,当后续的读请求或写请求被指向与延迟的写请求相同的数据阵列342的条目时,缓存控制器360也可以执行延迟的写请求。在这种情况下,为确保后续读或写请求操作的是缓存300中最新的数据,缓存控制器360可以执行延迟的写请求,并将与延迟的写请求关联的写数据与存储在数据阵列342中的相关联的条目中的数据合并。在执行延迟写请求之后,存储在写缓冲器344中的信息可被移除,或者被新数据覆盖。在一些实施方式中,写缓冲器344可以将状态标志与每个条目关联,以指示存储在条目中的数据是否已写数据阵列342。若标志指示数据已写数据阵列342,则数据可以被删除或者覆盖。
在本公开的实施例中,缓存300在处理后续的读或写请求之前,并非总是等待写操作完成。在收到写请求并确定其会导致缓存命中之后,缓存控制器360可以将与写请求相关的信息存储到写缓冲器344中以便后续的处理。将信息存储在写缓冲器344中后(或者同时),缓存控制器360可以处理后续的读或写请求。
此外,如上所述,在缓存命中期间,标签阵列312和标签控制缓冲器314可以被配置为允许独立访问,使得在缓存命中期间,当标签控制缓冲器314接收写操作(例如,更新针对缓存命中而被访问的数据阵列342中的条目的LRU信息)时,标签阵列312可以同时处理标签地址搜索的读操作。例如,当标签控制缓冲器条目314a在收到由写请求导致的写操作时,标签阵列312仍然可以被缓存控制器360访问。
采用这样的配置,即使标签阵列312和数据阵列342由不能同时处理读写操作的单端口SRAM设备构建,也可以减少写操作对后续请求处理造成的延迟。例如,假设计算机处理器102传输导致对数据条目342a的写操作的写请求,并且然后传输导致对数据条目342b的读操作的读请求,且两种操作均会导致缓存命中,则后续的对数据条目342b的读操作可以进行而无需等待对数据条目342a的写操作完成。同样地,如果写请求也导致对标签控制缓冲器314的写操作(例如,更新LRU信息和/或数据一致性状态),当缓存控制器360在处理读请求时搜索到匹配的标签地址时,写操作也可以与对标签阵列312进行读操作独立地、并发地执行。
如上所述,在现有技术下,缓存的缓存命中率通常达到90%。因此,使用上述公开的实施例,缓存命中期间由于读/写竞争而导致的延迟可以减少,并且使用单端口SRAM设备的标签阵列和数据阵列的缓存的性能可以显著得到提高。
在一些实施例中,当写请求导致缓存缺失(例如当无法在标签阵列312中查询到由写请求中获得的标签地址时)时,缓存控制器360可以确定对写请求进行处理,而非拒绝它;并且控制器可以确定不将写请求相关信息存储在写缓冲器344中。基于如下的策略,例如,缓存缺失发生的远少于缓存命中,并且,缓存缺失通常需要写操作来更新整个缓存行数据,而这将需要大的写缓冲器来保存写数据。因此,与改善缓存命中的同样的延迟相比,由于缓存缺失时读/写竞争引起的延迟的改善需要更高的成本,而且有益效果更差。
本公开的实施例同样也适用于用于集合关联缓存。请参考图4,其为根据本公开实施例的集合关联缓存400实例的示意图。如图4所示,缓存400包括标签部分410、数据部分440和缓存控制器460。标签部分410包括四个标签阵列412a、412b、412c和412d,以及四个标签控制缓冲器414a、414b、414c和414d。数据部分440也包括四个数据阵列442a、442b、442c和442d,以及写缓冲器444。标签阵列412a、412b、412c和412d中的每个标签条目可以分别存储与数据阵列442a、442b、442c或442d中的数据条目对应的标签地址。标签地址可以从计算机处理器102的数据请求中提供的存储地址480获得。作为示意性示例,可以通过提取存储地址480的前33位来获得标签地址。此外,每个标签阵列412a、412b、412c和412d分别与标签控制缓冲器414a、414b、414c或414d相关联,其中,标签控制缓冲器414a、414b、414c或414d存储与在标签阵列中存储的标签地址和在数据阵列中存储的数据相对应的LRU信息和数据一致性状态。
缓存400可以是具有四个标签阵列和数据阵列的四向集合关联缓存,使得特定的标签地址可以存储在四个标签阵列中的任意一个中,并且与该标签地址关联的数据可以存储在四个数据阵列中的任意一个中。根据存储地址480中的索引字段,可以确定要存储的四个标签阵列中的哪一个标签地址以及要存储的四个数据阵列中的哪一个数据。
标签阵列412a-d可以使用单端口或双端口SRAM设备构建,同时标签控制缓冲器414a-d可以使用如触发器、锁存器等顺序逻辑块,或任何电路块(如双端口SRAM设备)构建。此外,每个标签阵列412a-d和控制缓冲器414a-d都可以包含自己的读写使能信号、条目选择信号等。采用这种部署方式,相应的标签阵列和控制缓冲器对(如标签阵列412a和控制缓冲器414a)可以被独立访问(读或写)。
此外,数据阵列442a-d可以使用单端口或双端口SRAM设备构建。写缓冲器444也可以使用单端口或双端口SRAM设备构建,或者也可以使用顺序逻辑块,如触发器和锁存器构成,每个数据阵列442a-d和写缓冲器444可以包括自己的读写使能信号、条目选择信号等。采用这种部署方式,每个数据阵列442a-d都可以独立于写缓冲器444而被访问(读或写)。
缓存控制器460管理对缓存410的读/写操作。缓存控制器460可以包括数字逻辑电路,也可以是一个独立的专用集成模块(ASIC)应用,现场可编程门阵列(FPGA),或也可以是计算机处理器102的一部分。缓存控制器460也可以通过指令(如固件、微代码等)来控制读写操作。指令可存储在计算机可读的介质中,该介质包括易失性和非易失性、磁性、半导体、磁带、光学、可拆卸、不可拆卸,并可由缓存控制器460访问。缓存控制器460包括一组比较器462a-d、一个写缓冲器管理器464和一个多路复用器466。这些组件可以是硬件电路、软件组件,也可以是两者的混合。
在从包含存储地址480的计算机处理器102收到数据访问(读或写)请求后,缓存控制器460可以对标签阵列412a-d中的每一个执行读操作以获取存储的标签地址,并使用比较器462a-d将他们与从存储地址480导出的标签地址比较。对每个标签阵列412a-d的读取操作可以是同时的,并且独立于任何对标签控制缓冲器414a-d的写操作(例如更新LRU信息和/或数据一致性状态)。根据比较结果,写缓冲器管理器464可以确定是否存在缓存命中。如果存在缓存命中,并且数据访问请求是写请求,则写缓冲器管理器464可以指示写缓冲器444存储与写请求相关的信息。这些信息可以包括,例如,与存储地址480相关联的写数据484,即要用该数据写入的数据阵列442a-d中的哪个,用于标识要接收写数据的数据阵列中的条目的标识符(例如,标签地址、指针或任何标识符),以及该条目中的位置,该位置通常可以由存储地址中包含的位偏移量获得。在将信息存储在写缓冲器的之后(或者同时),缓存控制器460就可以处理后续请求,而无需等待写请求完成。另一方面,如果数据访问请求为读请求,可以为存储在数据条目且对应于匹配标签地址的数据提供多路复用器466,多路复用器466然后提取读取数据486,并提供该读取数据以作为读请求的相应。
请参考图5,其示出了一个运行缓存的方法500的示例。该方法可由(例如)图3的缓存控制器360或图4的缓存控制器460来执行。缓存可以包括标签部分和数据部分,其中数据部分包括可独立访问的数据阵列和写缓冲器。缓存(例如)可以是图3的缓存300或图4的缓存400。
在初始启动之后,控制器执行步骤502并接收包括写数据和存储地址的写请求。所述写请求可来自计算机处理器(例如图1中的计算机处理器102)。
控制器收到写请求后,执行步骤504,并且根据写请求中的存储地址确定标签地址。
确定标签地址后,控制器(在步骤506)接着确定是否存在缓存命中。为确定是否存在缓存命中,控制器对标签部分执行读操作来读取存储的标签地址,比较存储的标签地址与步骤504中确定的标签地址,并确定匹配的标签条目。
如果控制器在步骤506确定有缓存缺失(例如,基于如下判定:在步骤504确定的标签地址无法在标签阵列被找到),则控制器可以执行步骤508,以从存储器中获得新的数据(例如,DRAM 132),并执行步骤509,确定缓存的数据部分和标签部分是否是空闲的。控制器可以始终执行步骤509(并阻止写操作),直到确定缓存的数据部分和标签部分是空闲的。在控制器确定缓存的数据部分和标签部分是空闲的之后,控制器可以继续执行步骤510,以对缓存的数据部分和标签部分执行写操作。在完成写操作后,控制器继续执行步骤511:处理下一个请求,该方法执行完毕。
另一方面,如果在确定标签阵列存储的标签地址与在步骤504中确定的标签地址相匹配之后,在步骤506中控制器确定存在标签命中,则控制器可以为匹配标签条目确定缓存控制信息。所述缓存控制信息可以包括LRU信息、数据一致性状态等。例如,如果匹配标签条目的LRU信息表明标签条目与最近访问的数据阵列中的数据条目相关联,则控制器可以更新LRU信息以表明标签条目不再至少是最近访问过的(相反,它是最近访问过的)。然后控制器继续执行步骤514,并对标签控制缓冲器执行写操作以存储缓存控制信息。
控制器接着执行步骤516的写操作,以将写请求信息存储在写缓冲器中。写请求信息可以包括,例如,写数据,以及要写入的数据阵列的位置(以及缓存400中的多个数据阵列中的哪一个)等信息。在执行步骤516之后(或与此同时),控制器可以继续执行步骤518来处理下一个数据请求。
接着,控制器继续执行步骤520来执行延迟的写请求。延迟的写请求可以由预置条件触发执行。所述预置条件可以包括,例如,写缓冲器已满,数据阵列处于空闲状态,随后的读或写请求被指向与延迟的写请求相同的数据阵列中条目,等等。
对本领域技术人员可以理解的是,缓存300中的标签控制缓冲器314的功能可以通过标签阵列312来实现。例如,标签阵列312也可以存储缓存控制信息。
考虑到本文公开的本发明的说明书和实践,本发明的其他实施方案对于本领域技术人员而言是显而易见的。本申请旨在涵盖本发明的一般原理之后的任何变化,使用或改编,并且包括在本领域的已知或惯常实践范围内的对本公开的偏离。本说明书和实施例仅被认为是示例性的,本发明的范围和实施例由权利要求表示。本方法500可以接着进行,然后结束。
应当理解,本发明不限于上面已经解释并在附图中示出的精确结构,并且可以在不脱离其范围的情况下进行各种修改和改变。本发明的范围旨在本发明应仅受所附权利要求的限制。
Claims (20)
1.一种缓存,其特征在于,包括:
标签阵列,所述标签阵列被配置为存储一个或更多个标签地址;
标签控制缓冲器,所述标签控制缓冲器被配置为存储缓存控制信息;
数据阵列,所述数据阵列被配置为存储从存储装置获取的数据;以及,
写缓冲器,所述写缓冲器被配置为存储与写请求相关的信息,
其中,所述标签阵列被配置为独立于所述标签控制缓冲器被访问,并且其中,所述数据阵列被配置为独立于所述写缓冲器被访问。
2.根据权利要求1所述的缓存,其中,所述标签阵列包括单端口静态随机存取SRAM装置的阵列。
3.根据权利要求1或2所述的缓存,其中,所述数据阵列包括单端口SRAM装置的阵列。
4.根据权利要求1至3中任一项所述的缓存,其中,所述标签控制缓冲器包括触发器的阵列。
5.根据权利要求1至4中任一项所述的缓存,其中,所述缓存控制信息包括至少数据一致性状态与最近最少使用LRU信息中的一种。
6.根据权利要求1至5中任一项所述的缓存,其中,所述与写请求相关的信息包括:写数据以及关于在所述数据阵列中使用所述写数据进行更新的位置的信息。
7.根据权利要求6所述的缓存,其中,关于所述位置的信息包括:针对所述数据阵列中的第一数据条目的第一指针,以及针对具有所述第一数据条目的位置的第二指针。
8.根据权利要求7所述的缓存,所述缓存还包括第二数据条目,其中,关于所述位置的信息还包括针对所述第二数据阵列的第三指针。
9.根据权利要求1至8中任一项所述的缓存,所述缓存还包括控制器,所述控制器被配置为:
基于所述写请求确定是否存在缓存命中;
对确定存在缓存命中进行响应;
对所述标签控制缓冲器执行写操作;
对所述写缓冲器执行写操作以存储与所述写请求相关的信息;
处理后续的数据访问请求;以及
基于所述写缓冲器中存储的信息对所述数据阵列的第一数据条目执行写操作。
10.根据权利要求9所述的缓存,其中,对所述数据阵列的所述第一数据条目执行的所述写操作相应于确定以下各项中的至少一个:所述写缓冲器存储已满,所述数据阵列处于空闲状态,以及所述后续的数据访问请求指向所述第一数据条目。
11.一种操作缓存的方法,所述缓存包括标签阵列、标签控制缓冲器、数据阵列以及写缓冲器,所述方法包括:
接收包括写数据和存储地址的第一写请求;
接收第二数据访问请求;
根据所述存储地址确定标签地址;
对所述标签阵列执行第一读操作以确定是否存在缓存命中;以及
对确定存在缓存命中进行响应:
对所述写缓冲器执行写操作以存储与所述第一写请求相关的信息以及写数据;
对所述标签控制缓冲器执行写操作以更新存储的缓存控制信息;
针对所述第二数据访问请求对所述标签阵列和所述数据阵列执行第二读操作;以及
基于存储于所述写缓冲器中的所述写数据以及与所述第一写请求相关的信息对所述数据阵列的第一数据条目执行写操作。
12.根据权利要求11所述的方法,其中,为第二请求对标签阵列和数据阵列的第二读操作在对标签控制缓冲器的写操作完成之前。
13.根据权利要求11或12所述的方法,其中,基于存储于所述写缓冲器中与所述第一写请求相关的信息对所述数据阵列执行的所述写操作是在执行针对所述第二请求的对所述标签阵列和所述数据阵列的所述第二读操作之前执行的,该方法还包括:
基于存储在所述写缓冲器中的与所述第一写请求相关的信息来确定对所述数据阵列的所述第一数据条目执行写操作是相应于确定以下各项中的至少一种:所述写缓冲器已满,所述数据阵列处于空闲状态,以及第二数据访问请求指向所述数据阵列中的所述第一数据条目。
14.根据权利要求11至13中的任一项所述的方法,其中,所述缓存控制信息包括至少数据一致性状态与最近最少使用LRU信息中的一种。
15.根据权利要求11至14任一所述的缓存方法,与写操作相关的信息包括所述写数据以及与所述第一数据条目相关的位置的信息;
其中,与位置相关的所述信息包括:针对第一数据条目的第一指针,以及针对具有所述第一数据条目的位置的第二指针;并且
其中,所述缓存还包括第二数据条目,其中,关于所述位置的信息还包括针对所述第二数据阵列的第三指针。
16.一种计算机系统,其包括:
硬件处理器;以及
与所述硬件处理器连接的分层存储系统,所述分层存储系统包括:
动态随机访问存储装置;以及
缓存,所述缓存包括:
标签阵列,所述标签阵列被配置为存储一个或更多个标签地址;
标签控制缓冲器,所述标签控制缓冲器被配置为存储缓存控制信息;
数据阵列,所述数据阵列被配置为存储从动态随机访问存储装置获取的数据;以及,
写缓冲器,所述写缓冲器被配置为存储与来自硬件处理器的写请求相关的信息;
其中,所述标签阵列被配置为独立于所述标签控制缓冲器被访问,并且其中,所述数据阵列被配置为独立于所述写缓冲器被访问。
17.根据权利要求16所述的计算机系统,所述缓存还包括控制器,所述控制器被配置为:
基于所述写请求确定是否存在缓存命中;
对确定存在缓存命中进行响应;
对所述标签控制缓冲器执行写操作;
对所述写缓冲器执行写操作以存储与所述写请求相关的信息;
处理来自所述硬件处理器的后续的数据访问请求;以及
基于在所述写缓冲器中存储的信息对所述数据阵列的第一数据条目执行写操作;
其中,基于确定以下各项中的至少一种来执行对所述数据阵列的所述写请求:所述写缓冲器已满,所述数据阵列处于空闲状态,以及所述后续的数据访问请求指向所述第一数据条目。
18.根据权利要求16或17所述的计算机系统,其中,所述标签阵列与所述数据阵列各自都包括单端口静态随机存取SRAM装置,其中,所述标签控制缓冲器包括触发器的阵列。
19.一种缓存,其包括:
标签阵列,所述标签阵列被配置为存储一个或更多个标签地址以及缓存控制信息;
数据阵列,所述数据阵列被配置为存储从存储装置获取的数据;以及,
写缓冲器,所述写缓冲器被配置为存储与写请求相关的信息,
其中,所述数据阵列被配置为独立于所述写缓冲器被访问。
20.一种操作缓存的方法,所述缓存包括标签阵列、数据阵列以及写缓冲器,所述方法包括:
接收包括第一数据和存储地址的写请求;
基于所述存储地址确定标签地址;
对所述标签阵列执行读操作以确定是否存在缓存命中;
对确定存在缓存命中进行响应,对所述写缓冲器执行写操作以存储所述第一数据,并且对所述标签阵列执行写操作以更新存储的缓存控制信息;以及
响应于确定满足预设条件,基于存储在所述写缓冲器的所述第一数据对所述数据阵列执行写操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/381,672 | 2016-12-16 | ||
US15/381,672 US10565121B2 (en) | 2016-12-16 | 2016-12-16 | Method and apparatus for reducing read/write contention to a cache |
PCT/US2017/066730 WO2018112373A1 (en) | 2016-12-16 | 2017-12-15 | Method and apparatus for reducing read/write contention to a cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110023916A true CN110023916A (zh) | 2019-07-16 |
CN110023916B CN110023916B (zh) | 2023-07-28 |
Family
ID=62556298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780074718.7A Active CN110023916B (zh) | 2016-12-16 | 2017-12-15 | 一种减少缓存中读/写竞争的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10565121B2 (zh) |
CN (1) | CN110023916B (zh) |
WO (1) | WO2018112373A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965668A (zh) * | 2021-03-30 | 2021-06-15 | 上海芷锐电子科技有限公司 | 一种缓存数字电路处理请求冲突的方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726920B2 (en) * | 2018-06-29 | 2023-08-15 | Rambus Inc. | Tag processing for external caches |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226009A (en) * | 1990-03-30 | 1993-07-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device supporting cache and method of driving the same |
KR940007687A (ko) * | 1992-09-24 | 1994-04-27 | 모리시다 요이치 | 캐쉬메모리 장치 |
EP0596636A2 (en) * | 1992-11-02 | 1994-05-11 | STMicroelectronics, Inc. | Cache tag memory |
US5675765A (en) * | 1992-04-29 | 1997-10-07 | Sun Microsystems, Inc. | Cache memory system with independently accessible subdivided cache tag arrays |
US20050108496A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Hardware support for superpage coalescing |
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN1659526A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 |
US20050188155A1 (en) * | 2004-02-25 | 2005-08-25 | Analog Devices, Inc. | High/low priority memory |
US20050235115A1 (en) * | 2004-04-15 | 2005-10-20 | International Business Machines Corporation | System, method and storage medium for memory management |
US6993633B1 (en) * | 1999-07-30 | 2006-01-31 | Hitachi, Ltd. | Computer system utilizing speculative read requests to cache memory |
CN102541761A (zh) * | 2012-01-17 | 2012-07-04 | 苏州国芯科技有限公司 | 应用于嵌入式芯片的只读高速缓冲存储器 |
US20120215979A1 (en) * | 2011-02-21 | 2012-08-23 | Advanced Micro Devices, Inc. | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information |
US20130042068A1 (en) * | 2011-08-11 | 2013-02-14 | International Business Machines Corporation | Shadow registers for least recently used data in cache |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630075A (en) * | 1993-12-30 | 1997-05-13 | Intel Corporation | Write combining buffer for sequentially addressed partial line operations originating from a single instruction |
US5678020A (en) | 1994-01-04 | 1997-10-14 | Intel Corporation | Memory subsystem wherein a single processor chip controls multiple cache memory chips |
US5680572A (en) * | 1994-02-28 | 1997-10-21 | Intel Corporation | Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers |
JP3872118B2 (ja) | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
JP3348367B2 (ja) * | 1995-12-06 | 2002-11-20 | 富士通株式会社 | 多重アクセス方法および多重アクセスキャッシュメモリ装置 |
US6119205A (en) * | 1997-12-22 | 2000-09-12 | Sun Microsystems, Inc. | Speculative cache line write backs to avoid hotspots |
US6557084B2 (en) | 1999-07-13 | 2003-04-29 | International Business Machines Corporation | Apparatus and method to improve performance of reads from and writes to shared memory locations |
EP1304620A1 (en) * | 2001-10-17 | 2003-04-23 | Texas Instruments Incorporated | Cache with selective write allocation |
US7028147B2 (en) | 2002-12-13 | 2006-04-11 | Sun Microsystems, Inc. | System and method for efficiently and reliably performing write cache mirroring |
US6950909B2 (en) | 2003-04-28 | 2005-09-27 | International Business Machines Corporation | System and method for reducing contention in a multi-sectored cache |
US7143243B2 (en) | 2003-05-29 | 2006-11-28 | Via-Cyrix, Inc. | Tag array access reduction in a cache memory |
JP4189342B2 (ja) | 2004-03-11 | 2008-12-03 | 東芝ソリューション株式会社 | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 |
US7380068B2 (en) | 2005-10-27 | 2008-05-27 | International Business Machines Corporation | System and method for contention-based cache performance optimization |
US8341352B2 (en) * | 2007-04-17 | 2012-12-25 | International Business Machines Corporation | Checkpointed tag prefetcher |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
US9596324B2 (en) * | 2008-02-08 | 2017-03-14 | Broadcom Corporation | System and method for parsing and allocating a plurality of packets to processor core threads |
US8145817B2 (en) | 2009-04-28 | 2012-03-27 | Microsoft Corporation | Reader/writer lock with reduced cache contention |
US8281222B2 (en) * | 2009-08-07 | 2012-10-02 | Via Technologies, Inc. | Detection and correction of fuse re-growth in a microprocessor |
US20120124327A1 (en) | 2010-11-17 | 2012-05-17 | Mccombs Edward M | Translation Lookaside Buffer Structure Including a Data Array Storing an Address Selection Signal |
US8898390B2 (en) * | 2011-03-08 | 2014-11-25 | Intel Corporation | Scheduling workloads based on cache asymmetry |
US9268542B1 (en) | 2011-04-28 | 2016-02-23 | Google Inc. | Cache contention management on a multicore processor based on the degree of contention exceeding a threshold |
WO2013095525A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Content-aware caches for reliability |
US9767025B2 (en) | 2012-04-18 | 2017-09-19 | Qualcomm Incorporated | Write-only dataless state for maintaining cache coherency |
US9190141B2 (en) | 2013-07-30 | 2015-11-17 | Qualcomm Incorporated | Circuits for voltage or current biasing static random access memory (SRAM) bitcells during SRAM reset operations, and related systems and methods |
US9734080B2 (en) * | 2013-08-08 | 2017-08-15 | Nxp Usa, Inc. | Cache organization and method |
US9086974B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Centralized management of high-contention cache lines in multi-processor computing environments |
US9811273B1 (en) * | 2014-12-23 | 2017-11-07 | Cadence Design Systems, Inc. | System and method for reliable high-speed data transfer in multiple data rate nonvolatile memory |
US9886987B1 (en) * | 2014-12-30 | 2018-02-06 | Cadence Design System, Inc. | System and method for data-mask training in non-provisioned random access memory |
TWI540433B (zh) * | 2015-01-21 | 2016-07-01 | 晨星半導體股份有限公司 | 用來存取記憶體的電路及相關的存取方法 |
US20170255572A1 (en) | 2016-03-07 | 2017-09-07 | Ceva D.S.P. Ltd. | System and method for preventing cache contention |
US10628320B2 (en) * | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
-
2016
- 2016-12-16 US US15/381,672 patent/US10565121B2/en active Active
-
2017
- 2017-12-15 WO PCT/US2017/066730 patent/WO2018112373A1/en active Application Filing
- 2017-12-15 CN CN201780074718.7A patent/CN110023916B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226009A (en) * | 1990-03-30 | 1993-07-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device supporting cache and method of driving the same |
US5675765A (en) * | 1992-04-29 | 1997-10-07 | Sun Microsystems, Inc. | Cache memory system with independently accessible subdivided cache tag arrays |
KR940007687A (ko) * | 1992-09-24 | 1994-04-27 | 모리시다 요이치 | 캐쉬메모리 장치 |
EP0596636A2 (en) * | 1992-11-02 | 1994-05-11 | STMicroelectronics, Inc. | Cache tag memory |
US6993633B1 (en) * | 1999-07-30 | 2006-01-31 | Hitachi, Ltd. | Computer system utilizing speculative read requests to cache memory |
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN1659526A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 |
US20050108496A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Hardware support for superpage coalescing |
US20050188155A1 (en) * | 2004-02-25 | 2005-08-25 | Analog Devices, Inc. | High/low priority memory |
US20050235115A1 (en) * | 2004-04-15 | 2005-10-20 | International Business Machines Corporation | System, method and storage medium for memory management |
US20120215979A1 (en) * | 2011-02-21 | 2012-08-23 | Advanced Micro Devices, Inc. | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information |
US20130042068A1 (en) * | 2011-08-11 | 2013-02-14 | International Business Machines Corporation | Shadow registers for least recently used data in cache |
CN102541761A (zh) * | 2012-01-17 | 2012-07-04 | 苏州国芯科技有限公司 | 应用于嵌入式芯片的只读高速缓冲存储器 |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
Non-Patent Citations (1)
Title |
---|
张剑飞;: "多处理器共享缓存设计与实现", 计算机与数字工程 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965668A (zh) * | 2021-03-30 | 2021-06-15 | 上海芷锐电子科技有限公司 | 一种缓存数字电路处理请求冲突的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018112373A1 (en) | 2018-06-21 |
US10565121B2 (en) | 2020-02-18 |
CN110023916B (zh) | 2023-07-28 |
US20180173640A1 (en) | 2018-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6916751B2 (ja) | ハイブリッドメモリーモジュール及びその動作方法 | |
US9710399B2 (en) | Systems and methods for flushing a cache with modified data | |
US20070226424A1 (en) | Low-cost cache coherency for accelerators | |
CN110442381A (zh) | 用于保护有条件的推测性指令执行的影子缓存 | |
JPH04501027A (ja) | キャッシュメモリー付マルチ処理システム | |
CN109952567B (zh) | 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 | |
US7237067B2 (en) | Managing a multi-way associative cache | |
US20020169935A1 (en) | System of and method for memory arbitration using multiple queues | |
KR20040007546A (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치 | |
CN101617298A (zh) | 用于dma、任务终止和同步操作的缓存一致保持 | |
JP3798049B2 (ja) | データメモリおよびその動作方法 | |
US6865649B2 (en) | Method and apparatus for pre-fetching data during program execution | |
CN108334284A (zh) | 尾延迟感知前台垃圾收集算法 | |
JP5868213B2 (ja) | キャッシュ制御装置、及びキャッシュ制御方法 | |
KR20070104906A (ko) | 캐시 메모리를 구비한 시스템 및 엑세스 방법 | |
JPH0950400A (ja) | マルチプロセッサシステム | |
KR100851738B1 (ko) | 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리 | |
CN110023916A (zh) | 一种减少缓存中读/写竞争的方法和装置 | |
JP4452644B2 (ja) | 記憶性能の改善 | |
US8688919B1 (en) | Method and apparatus for associating requests and responses with identification information | |
US9262325B1 (en) | Heterogeneous memory system | |
US11573724B2 (en) | Scoped persistence barriers for non-volatile memories | |
CN105612505B (zh) | Cpu调度的方法和装置 | |
JPH10240695A (ja) | Sciシステムにおける複数の未処理要求の局所記憶装置を用いた操作 | |
US7089387B2 (en) | Methods and apparatus for maintaining coherency in a multi-processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |