CN111723025A - 电子设备和电子*** - Google Patents
电子设备和电子*** Download PDFInfo
- Publication number
- CN111723025A CN111723025A CN202010195256.8A CN202010195256A CN111723025A CN 111723025 A CN111723025 A CN 111723025A CN 202010195256 A CN202010195256 A CN 202010195256A CN 111723025 A CN111723025 A CN 111723025A
- Authority
- CN
- China
- Prior art keywords
- request
- memory
- data
- piece
- 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.)
- Granted
Links
- 230000004044 response Effects 0.000 claims description 19
- 238000005516 engineering process Methods 0.000 description 21
- 238000000034 method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000002513 implantation Methods 0.000 description 3
- 239000003826 tablet Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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
- 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
- G06F2212/1024—Latency reduction
-
- 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/1041—Resource optimization
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供一种电子设备和电子***。根据一个总体方面,所述电子设备可包括:处理器,被配置为发出针对来自高速缓冲存储器的一条数据的第一请求和针对来自***存储器的所述一条数据的第二请求。所述电子设备可包括:高速缓冲存储器,被配置为临时存储数据的子集。所述电子设备可包括存储器互连。存储器互连可被配置为接收针对来自***存储器的所述一条数据的第二请求。存储器互连可被配置为确定所述一条数据是否被存储在高速缓冲存储器中。存储器互连可被配置为:如果所述一条数据被确定为存储在高速缓冲存储器中,则取消针对来自***存储器的所述一条数据的第二请求。
Description
本申请要求于2019年3月22日提交的名称为“与高速缓存级搜索并行的借用互连目录的推测式DRAM读取”的序列号为62/822,777的临时专利申请的优先权。该在先提交的申请的主题通过引用包含于此。
技术领域
本说明书涉及存储器操作,更具体地,涉及与高速缓存级搜索并行的借用互连目录的推测式动态随机存取存储器(DRAM)读取。
背景技术
当特定数据被多个高速缓存共享并且处理器修改了共享的数据的值时,改变必须被传播到具有该数据的副本的所有其他高速缓存。这种改变传播防止***违反高速缓存一致性。数据改变的通知可通过总线侦听来完成。
总线侦听或总线监听是高速缓存中的一致性控制器(侦听器)监视或侦听总线事务的方案,它的目标是在分布式共享存储器***中保持高速缓存一致性。包含一致性控制器(侦听器)的高速缓存被称为侦听式高速缓存。
所有侦听器监视总线上的每一个事务。如果修改共享的高速缓存块的事务在总线上出现,则所有侦听器检查它们的高速缓存是否具有共享的块的相同副本。如果高速缓存具有共享的块的副本,则对应的侦听器执行用于确保高速缓存一致性的动作。该动作可以是高速缓存块的冲刷(flush)或无效化。它还涉及根据高速缓存一致性协议的高速缓存块状态的改变。
当总线事务对特定的高速缓存块发生时,所有侦听器必须侦听总线事务。然后,侦听器查询它们对应的高速缓存标签,以检查是否具有相同的高速缓存块。在大多数情况下,因为良好优化的并行程序不在多个线程之中共享许多数据,所以高速缓存不具有该高速缓存块。因此,侦听器的高速缓存标签查询对于不具有该高速缓存块的高速缓存来说通常是不必要的工作。然而,标签查询干扰了处理器的高速缓存访问,并带来额外的功耗。
用于减少不必要的侦听的一种方式是使用侦听过滤器。侦听过滤器确定侦听器是否需要检查它的高速缓存标签。侦听过滤器是基于目录的结构,并且监视所有一致性流量,以保持高速缓存块的一致性状态的跟踪。它意味着侦听过滤器知道具有高速缓存块的副本的高速缓存。因此,它可以防止不具有高速缓存块的副本的高速缓存进行不必要的侦听。根据侦听过滤器的位置,存在两种类型的过滤器。一种是位于高速缓存侧并在一致性流量到达共享的总线之前执行过滤的源过滤器。另一种是位于总线侧并阻断从共享的总线流出的不必要的一致性流量的目的地过滤器。侦听过滤器还被分类为包含式的和排除式的。包含式侦听过滤器保持高速缓存中的高速缓存块的存在的跟踪。然而,排除式侦听过滤器监视高速缓存中的高速缓存块的不存在。换言之,包含式侦听过滤器中的命中意味着对应的高速缓存块被高速缓存保持。另一方面,排除式侦听过滤器中的命中意味着没有高速缓存具有请求的高速缓存块。
发明内容
本公开的目的在于提供一种具有降低的延迟并高效地利用资源的设备和***。
根据一个总体方面,一种设备可包括:处理器,被配置为发出针对来自高速缓冲存储器的一条数据的第一请求和针对来自***存储器的所述一条数据的第二请求。所述设备可包括:高速缓冲存储器,被配置为存储数据的子集。所述设备可包括存储器互连。存储器互连可被配置为接收针对来自***存储器的所述一条数据的第二请求。存储器互连可被配置为确定所述一条数据是否被存储在高速缓冲存储器中。存储器互连可被配置为:如果所述一条数据被确定为存储在高速缓冲存储器中,则取消针对来自***存储器的所述一条数据的第二请求。
根据另一总体方面,一种***可包括:多个处理器,其中,请求的处理器被配置为发出针对来自高速缓冲存储器***的一条数据的第一请求和针对来自***存储器的所述一条数据的第二请求。所述***可包括:高速缓冲存储器***,针对每个处理器包括高速缓冲存储器***的与各自的处理器相关联的部分。所述***可包括存储器互连。存储器互连可被配置为促进所述多个处理器之间的高速缓存一致性。存储器互连可被配置为接收针对来自***存储器的所述一条数据的第二请求。存储器互连可被配置为确定所述一条数据是否被存储在高速缓冲存储器***的能够由请求的处理器访问的部分中。存储器互连可被配置为:如果所述一条数据被确定为存储在高速缓冲存储器***的所述部分中,则取消针对来自***存储器的所述一条数据的第二请求。
根据另一总体方面,一种设备可包括:存储器访问接口电路,被配置为接收和发送存储器访问请求和响应。所述设备可包括:高速缓存一致性数据结构,被配置为指示高速缓冲存储器的内容。所述设备可包括:推测式请求管理电路,被配置为:接收针对一条数据的到***存储器的推测式请求,确定所述一条数据是否被存储在高速缓冲存储器的至少一部分中,和如果所述一条数据被确定为存储在高速缓冲存储器中,则取消推测式请求。
在附图和下面的描述中阐述了一个或多个实施方式的细节。其他特征将从说明书和附图以及从权利要求将是清楚的。
如在权利要求中更全面地阐述的那样,基本上如在至少一个附图中所示和/或如结合至少一个附图所述,阐述了用于存储器操作的***和/或方法,更具体地,阐述了与高速缓存级搜索并行的借用互连目录的推测式动态随机存取存储器(DRAM)读取。
根据本公开,当对高速缓冲存储器的请求被推测为成功时,对***存储器的请求被取消。因此,具有降低的延迟并有效地利用资源的设备和***被提供。
附图说明
图1A是根据公开的主题的***的示例实施例的框图。
图1B是根据公开的主题的***的示例实施例的框图。
图2是根据公开的主题的***的示例实施例的框图。
图3是根据公开的主题的技术的示例实施例的流程图。
图4是可包括根据公开的主题的原理形成的装置的信息处理***的示意性框图。
在各个附图中的同样的参考符号指示同样的元件。
具体实施方式
在下文中将参照示出一些示例实施例的附图更全面地描述各种示例实施例。然而,本公开的主题可以以许多不同的形式来实现,并且不应被解释为受限于在此阐述的示例实施例。相反,提供这些示例实施例使得该公开将是彻底的和完整的,并且将本公开的主题的范围充分传达给本领域技术人员。在附图中,为了清楚,层和区域的大小和相对大小可被夸大。
将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”或“结合到”另一元件或层时,所述元件或层可直接在所述另一元件或层上、直接连接到或直接结合到所述另一元件或层,或者可存在中间元件或层。相反,当元件被称为“直接在”另一元件或层“上”、“直接连接到”或“直接结合到”另一元件或层时,不存在中间元件或层。同样的标号始终表示同样的元件。如在此所使用的,术语“和/或”包括相关所列项中的一个或多个中的任何或者所有组合。
将理解,尽管术语第一、第二、第三等在此可用于描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语限制。这些术语仅用于将一个元件、组件、区域、层和/或部分与另一元件、组件、区域、层和/或部分区分开。因此,在不脱离本公开的主题的教导的情况下,下面讨论的第一元件、第一组件、第一区域、第一层和/或第一部分可被称为第二元件、第二组件、第二区域、第二层和/或第二部分。
为了易于描述,在此可使用空间相对术语(诸如,“在…之下”、“在…下方”、“下面的”、“在…之上”、“上面的”等)来描述如附图中示出的一个元件或特征与另外的一个或多个元件或特征之间的关系。将理解,空间相对术语意在包含除了在附图中描绘的方位之外的装置在使用或操作中的不同方位。例如,如果附图中的装置被翻转,则被描述为在其他元件或特征“下面”或“之下”的元件随后将位于所述其他元件或特征“之上”。因此,示例性术语“在…下方”可包括“在…之上”和“在…下方”的方位两者。装置可被另外定位(旋转90度或在其他方位),并且在此使用的空间相对描述语被相应地解释。
同样地,为了易于描述,在此可使用电学术语(诸如,“高”、“低”、“上拉”、“下拉”、“1”、“0”等)来描述如附图中示出的相对于其他电压电平或者另外的一个或多个元件或特征的电压电平或电流。将理解,电学相对术语意在包含除了在附图中描绘的电压和电流之外的装置在使用或操作中的不同参考电压。例如,如果附图中的装置或信号被翻转或者使用其他参考电压、电流或电荷,则被描述为“高”或“上拉”的元件随后相比于新的参考电压或电流将是“低”或“下拉”。因此,示例性术语“高”可包括相对低的电压或电流或者相对高的电压或电流两者。装置可另外基于不同的电学参考框架,在此使用的电学相对描述语被相应地解释。
在此使用的术语仅用于描述特定示例实施例的目的,而不意在限制本公开的主题。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,当术语“包括”和/或“包含”在本说明书中使用时,指定存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
在此参照作为理想化的示例实施例(和中间结构)的示意示图的截面示图来描述示例实施例。这样,作为例如制造技术和/或公差的结果的示图的形状的改变将被预期。因此,示例实施例应不被理解为受限于在此示出的区域的特定形状,而是包括例如由于制造导致的形状的偏差。例如,示出为矩形的注入区域在它的边缘将通常具有圆角或曲线特征和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元改变。同样地,由注入形成的埋区可导致埋区与发生注入的表面之间的区域中的一些注入。因此,在附图中示出的区域本质上是示意性的,它们的形状不意在示出装置的区域的实际形状,并且不意在限制本公开的主题的范围。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开的主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确地如此限定,否则术语(诸如,在通用字典中限定的术语)应被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被理想化地或过于形式化地解释。
在下文中,将参照附图详细解释示例实施例。
图1A是根据公开的主题的***100的示例实施例的框图。在各种实施例中,***100(也称为电子***、电子设备等)可包括计算装置(诸如,以膝上型计算机、台式计算机、工作站、片上***(SOC)、个人数字助理、智能电话、平板计算机和其他合适的计算机或者其虚拟机或虚拟计算装置为例)。
在示出的实施例中,***100可包括处理器102。处理器102可被配置为执行可执行软件、固件或它们的组合的一个或多个机器可执行指令或片段。在示出的实施例中,处理器102可包括核、处理单元或更大的集成电路的部分。
在示出的实施例中,***100可包括存储器高速缓存电路或***(也称为高速缓存、高速缓冲存储器)104。高速缓存104可被配置为临时存储数据(例如,数据133)。在示出的实施例中,高速缓存104可包括1级(L1)高速缓存111和2级(L2)高速缓存112。在这样的实施例中,高速缓存111和112可以是分层式的。在各种实施例中,其他高速缓存级可被包括在高速缓冲存储器104中,或者可从高速缓冲存储器104被移除。在各种实施例中,高速缓存级的一部分可被包括在处理器102中(例如,0级(L0)高速缓存)。应理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,***100可包括存储器互连106。在各种实施例中,存储器互连106可连接和/或管理多个高速缓存***104。虽然在这种简化的说明中不存在,但是这样的多个高速缓存***104可存在于其他实施例中。在这样的实施例中,存储器互连106可促进高速缓存一致性。
在示出的实施例中,***100可包括存储器控制器电路108。存储器控制器108可被配置为与***存储器110接口连接,并且可在***存储器110(或者,另一中间电路)与处理器102(和它的中间电路(诸如,存储器互连106)等)之间发送和接收消息。
在示出的实施例中,***100可包括***存储器110。***存储器110可被配置为存储数据(例如,数据133)。在各种实施例中,***存储器110可包括动态随机存取存储器(DRAM)。尽管如此,但理解的是,以上仅是一个说明性示例,公开的主题不限于此。在各种实施例中,易失性和/或非易失性存储器技术可被采用。通常,***存储器110可存储在高速缓存104中存储的每条数据的副本,但是副本可能是旧的或者过时的(例如,对高速缓存的写入可能仍未被传播到***存储器)。
在各种实施例中,处理器102、高速缓存104、存储器互连106和存储器控制器108可被包括在集成电路或处理单元180(例如,片上***(SOC))中。在各种实施例中,***存储器110可被包括在其他组件中或者与其他组件集成。理解的是,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,处理器102可能期望访问一条数据(例如,数据133)。为了这样做,传统上,处理器102将发出存储器访问请求(例如,读取请求、写入请求)。***100将通过在进行到下一级(例如,L2)之前首先搜索最近的层级(tier)或级(例如,L1),来在高速缓存104中检查数据。如果仍未发现数据,则将对***存储器110做出对数据的请求。这一系列的搜索浪费了时间,特别是当数据是关键的并且延迟是重要的时候。
在示出的实施例中,处理器102可发出不止一个对数据的请求,而是基本上并行的两个对数据的请求。在示出的实施例中,处理器102可发出对来自高速缓存104的期望的一条数据的第一请求191(如传统上那样做)。也就是说,处理器102可向高速缓存104发出对期望的一条数据的第一请求191。然而,在各种实施例中,处理器102还可发出对来自***存储器110的期望的一条数据的第二请求192(第二请求192通过存储器互连106和存储器控制器108被路由)。也就是说,处理器102还可向***存储器110发出对期望的一条数据的第二请求192。
在各种实施例中,第二请求192可被允许自然地出现或者如传统的对***存储器110的存储器访问将会的那样出现,并且使数据133返回。然而,如果高速缓存请求191也使数据133返回,则两个版本的数据133可能引起问题。高速缓存的版本和***级的版本可能是不一致的(即,具有不同的值),读取后写入排序可能是复杂的,并且完成的***存储器请求192不必要地使用了***资源。这样,允许***级存储器访问发生而不进一步分析可能不是可取的。
在示出的实施例中,处理器102可推测式地发出第二请求192。在这样的实施例中,第二请求192可包括用于指示第二请求192不是正常的(例如,非推测式的或传统的)存储器访问而是要求非传统的处置和处理的特殊的推测式的存储器访问的位或标志。
在示出的实施例中,第二请求192可由存储器互连106接收。这与其中仅非推测式的第二请求被使用的实施例进行了比较,非推测式的第二请求可旁路存储器互连106并代替地去往存储器控制器108。在示出的实施例中,因为存储器互连106具有对处理推测式性质的第二请求192所需的信息的访问,所以第二请求192可被路由到存储器互连106。
在示出的实施例中,存储器互连106可包括侦听过滤器目录116和/或侦听高速缓存(未示出但以上进行了描述)。在这样的实施例中,侦听过滤器116(或者,类似的数据结构)可被配置为指示什么数据133当前被存储在高速缓存104中。
在这样的实施例中,代替完成对***存储器110的第二请求192,无论对高速缓存104的第一请求191是否将会成功,存储器互连106可预测或确定第一请求191是否将会成功或可能成功。
在各种实施例中,存储器互连106可通过确定请求的一条数据(例如,数据133)是否被包括或存储在高速缓存104中来预测或确定第一请求191是否将会成功或可能成功,其中,“存储”包括数据也已经在请求者处理器的高速缓存中被更新或修改的思想。如果确定请求的一条数据(例如,数据133)被包括或存储在高速缓存104中,则第一请求191可被确定或预测为成功。如果确定请求的一条数据(例如,数据133)未被包括或存储在高速缓存104中,则第一请求191可被确定或预测为失败。
在各种实施例中,这种确定可通过检查或者使用存储器互连106的侦听过滤器目录116或高速缓存一致性机制/电路来进行。在各种实施例中,侦听过滤器目录116可被配置为保守的或悲观的。在这样的实施例中,侦听过滤器目录116可被允许不正确地指示一条数据在高速缓存104中(即,错误肯定),但不允许不正确地指示一条数据不在高速缓存104中(即,错误否定)。在这样的实施例中,存储器互连106将不被配置为仅不正确地预测第二请求192应被取消,而不会不正确地预测第二请求应被进行。在这样的实施例中,存储器互连106可朝向可管理的预测失败来偏置或加权。
在各种实施例中,如果第一请求191被确定或预测为失败,则存储器互连106可允许对***存储器110的第二请求192进行。第二请求192可从***存储器110检索数据133,并将其返回到处理器102。在这样的实施例中,由于第一请求191已经失败,因此将不会存在数据133的与***存储器110的版本冲突的第二版本,用于从***存储器110检索数据的资源也不被浪费。代替地,如上所述,推测式的第二请求192将在比传统的“高速缓存失败-***请求”方案低的延迟的情况下具有检索的数据。
相反地,如果第一请求191被确定或预测为成功(即,高速缓存104被相信包括数据133),则存储器互连106可取消第二请求192,并且不允许第二请求192进行到***存储器110。在这样的实施例中,防止第二请求192进行到存储器控制器108可指示存储器控制器108不转发第二请求192。
在这样的实施例中,通过取消第二请求,处理器102可不具有上述的存在(来自高速缓存104和***存储器110二者)多个版本的相同数据的问题。此外,在从***存储器110检索数据方面花费的资源可不被花掉或浪费。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
在各种实施例中,存储器互连106可被配置为确保当出于一致性原因而不安全时将不存在***存储器110响应数据。因此,当***存储器110响应数据被接收到时,通过旁路高速缓存104,它可直接被转发到处理器102,而在高速缓存104中没有任何进一步的检查。
在各种示例实施例中,存储器互连106还可被配置为:在存储器互连106、***存储器110和/或高速缓存104队列(或者其他***资源)被大量加载的情况下防止或取消推测式的第二请求192。在这样的实施例中,第二请求192可在***100具有大量负担的情况下被延迟或节流。可选地,如果针对来自***存储器的一条数据的第二请求192在与所述一条数据相关联的写入请求之前到达存储器互连106,则取消第二请求192。此时,第二请求192可早于写入请求。
此外,在各种实施例中,处理器102可被配置为仅在存储器访问被认为关键或者延迟很重要时发出推测式的第二请求192。在这样的实施例中,这可帮助***资源的管理。在一些实施例中,用于发出推测式的第二请求192的阈值可以是动态的,使得在***资源充足时请求192被更经常地进行。在另一实施例中,处理器102可仅在它预测高速缓存未命中的情况下发出推测式的第二请求192。在另一实施例中,处理器102可发出第二请求192作为所有的或大多数的存储器访问的理所当然的任务。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,如果存储器互连106决定取消第二请求192,则它可发出取消响应195。在这样的实施例中,取消响应195可通知请求的处理器102第二请求192已被取消。在这样的实施例中,处理器102可不再等待或不再将资源分配给由于第二请求192而预期返回的数据。在另一实施例中,如果存储器互连106不正确地取消了第二请求192(例如,由于错误预测或错误肯定),则取消响应195可通知处理器102可能需要第三请求(在图1B中示出)。理解的是,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,对高速缓存104的第一请求191正常地完成或传统地完成。在这样的实施例中,第一请求191可确定数据是否在高速缓存104中。第一请求191导致每个高速缓存层、层级或级(例如,L1高速缓存111、L2高速缓存112等)被轮流检查,直到要么数据被发现,要么高速缓存中没有更多的级去检查。在这样的实施例中,第一请求191可要么返回成功响应,要么返回失败响应(均未示出)。在各种实施例中,当第二请求192与第一请求191被并行发出时,第一请求191可(在最坏的情况下)在搜索的最后的高速缓存层级处终止。在另一实施例中,如在传统情况下描述的那样,可向***存储器110发出第一请求191。
图1B是根据公开的主题的***101的示例实施例的框图。在各种实施例中,***101可包括计算装置(诸如,以膝上型计算机、台式计算机、工作站、片上***(SOC)、个人数字助理、智能电话、平板计算机和其他合适的计算机或者其虚拟机或虚拟计算装置为例)。在各种实施例中,***101可示出多核版本的图1A的***100。
在这样的实施例中,如上所述,***101可包括处理器102、高速缓存***174(与高速缓存***104相似)、存储器互连106、存储器控制器108和***存储器110。在各种实施例中,集成电路181可包括处理器102、高速缓存***174、存储器互连106、存储器控制器108和处理器102B。理解的是,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,***101可包括多个处理器、多个处理单元或多个核(由处理器102B的添加来表示)。在这样的实施例中,每个处理器102可与高速缓存***174的它自己的各个部分相关联。
在示出的实施例中,高速缓存***174可包括L1高速缓存111和111B、L2高速缓存112和112B以及3级(L3)高速缓存113。在这样的实施例中,高速缓存111和112(被分组为部分114)可专用于处理器102。然而高速缓存111B和112B(被分组为部分114B)可专用于处理器102B。在示出的实施例中,高速缓存113可用于它们的统一使用或共享使用。在另一实施例中,高速缓存113可不存在。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,当处理推测式的第二请求192时,存储器互连106可被配置为仅在与请求的处理器(例如,处理器102)相关联的高速缓存中检查请求的数据的存在。在这样的实施例中,高速缓存111、112甚至113可(经由侦听过滤器116或其他高速缓存一致性结构)被检查,而高速缓存111B和112B(与非请求的处理器102B相关联)可不被检查。同样地,如果处理器102B是请求的处理器,则高速缓存111B、112B和113可能已经被检查。
在各种实施例中,一旦与请求的处理器(例如,处理器102)相关联的高速缓存被检查并被发现缺失,其他高速缓存(例如,高速缓存111B和112B)就可被检查。在这样的实施例中,其他高速缓存(例如,高速缓存111B和112B)可包括该数据,并且由于侦听操作可返回期望的数据,因此使对***存储器110的推测式的第二请求192不必要。在另一实施例中,仅请求者的高速缓存(例如,高速缓存111、112和113)中的数据的存在可被检查,以用于生成推测式的取消响应195。
如上所述,在各种实施例中,存储器互连106可取消第二请求192,并向请求的处理器102发出取消响应195。然而,如上所述,有时存储器互连106可能关于数据存在于高速缓存174中发生错误。在这样的实施例中,第一请求191可最终失败。在这样的实施例中,处理器102可被配置为针对期望的数据向***存储器110发出非推测式的第三请求193。在各种实施例中,非推测式的第三请求193可被路由到高速缓存174,以避免在第一请求191被发出之后数据被带入高速缓存***174中(例如,在高速缓存113中)的可能性。在另一实施例中,非推测式的第三请求193可被路由到存储器互连106或存储器控制器108(当存储器互连106没有选通或取消非推测式的请求时)。在各种实施例中,非推测式的第三请求193可包括指示它是非推测式的并且可不如在此描述的那样被取消的标记或位。
图2是根据公开的主题的***200的示例实施例的框图。在各种实施例中,***200可包括上述的存储器互连电路,或者可以是上述的存储器互连电路的部分。
在各种实施例中,***200可包括被配置为接收和发送存储器访问请求和响应的存储器访问接口电路202。在各种实施例中,存储器访问接口电路202可被配置为接收如上所述的推测式的存储器访问请求。在另一实施例中,存储器访问接口电路202可被配置为发送如上所述的取消响应消息。在另一实施例中,存储器访问接口电路202可被配置为接收如上所述的非推测式的存储器访问请求。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
在各种实施例中,***200可包括高速缓存一致性数据结构204。在各种实施例中,高速缓存一致性数据结构204可能够指示一条数据当前是否被存储在高速缓存***中。在各种实施例中,当确定推测式的存储器访问是否应该被允许进行时,这种高速缓存一致性数据结构204可被访问或询问。
在各种实施例中,高速缓存一致性数据结构204可包括如上所述的侦听过滤器目录。在另一实施例中,高速缓存一致性数据结构204可包括高速缓存标签或用于访问高速缓存***的高速缓存标签的电路。在另一实施例中,基于目录的高速缓存一致性机制可被采用。理解的是,以上仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,***200可包括推测式请求管理电路206。在各种实施例中,推测式请求管理电路206可被配置为选通或确定推测式请求是否将是***资源(例如,周期、带宽等)的合适使用或宽恕使用。如上所述,在这样的实施例中,推测式请求管理电路206可被配置为确定请求的一条数据是否已经存储在高速缓存中,或者基本上并行的对高速缓存***的存储器访问是否可能成功。在这样的实施例中,可利用高速缓存一致性数据结构204来进行确定。
在各种实施例中,如果推测式请求管理电路206确定推测式请求可能冗余,则它可取消或另外阻止推测式请求。例如,推测式请求管理电路206至少部分地通过将取消请求消息发到请求的装置来取消推测式请求。在这样的实施例中,如果推测式请求管理电路206确定推测式请求可能冗余,则它可允许推测式请求进行。
图3是根据公开的主题的技术300的示例实施例的流程图。在各种实施例中,技术300可通过***(诸如,图1A、图1B和图2的***)来使用或产生。
尽管如此,但理解的是,以上仅是一些说明性示例,公开的主题不限于此。理解的是,公开的主题不限于由技术300示出的动作的顺序或数量。
块302示出:在一个实施例中,如上所述,请求的处理器或发起的电路可确定存储器访问是否是延迟关键的访问或另外重要的访问。块302还可包括额外的预测逻辑,以确定是否发出推测式请求。决定不必仅基于延迟。如果存储器访问不是延迟关键的访问或另外重要的访问,则可向高速缓存做出单个存储器请求。如果存储器访问是延迟关键的访问或另外重要的访问,则如上所述,可向高速缓存和***存储器二者做出基本上并行的两个存储器请求。
块304示出:在一个实施例中,作为基于第一高速缓存的请求的部分,可进行检查以确定数据是否实际上在高速缓存***中。块306示出:在一个实施例中,可能发生高速缓存命中或未命中。块399示出:在一个实施例中,如果发生高速缓存命中,则基于第一高速缓存的请求可用于完成存储器访问。
块308示出:在一个实施例中,如果发生高速缓存未命中,则可确定推测式的第二请求是否已经做出(每个块302)。块307示出:在一个实施例中,如上所述,如果没有进行推测式请求,则可进行对***存储器的非推测式请求。块309示出:在一个实施例中,如果已进行推测式请求,则***可等待该请求的结果。在各种实施例中,如果推测式请求最终(并且不正确地)被取消,则可发生块334的步骤。连接器335连接块309和块334。
块312示出:在一个实施例中,如上所述,可经由存储器互连向***存储器发出推测式的第二请求。块312和块316示出:在一个实施例中,存储器互连可检查侦听过滤器目录或其他高速缓存一致性结构,以确定请求的数据当前是否被存储在高速缓存***中。
块318示出:在一个实施例中,如上所述,如果请求的数据不在高速缓存***中,则存储器访问可进行到***存储器。在这样的实施例中,存储器请求可从***存储器实现。
块322示出:在一个实施例中,如果数据在高速缓存***中,则可确定如何最好地向请求的处理器提供该数据。具体地,可确定数据是否被存储在高速缓存中。在各种实施例中,进一步的测试可包括数据是否以可接收的状态(例如,不是MESI(修改的-独享的-共享的-无效的)协议的无效状态)被存储。
块324示出:在一个实施例中,如果数据不在与请求的处理器相关联的高速缓存中,则可确定它实际上是否在与多处理器***的另外的处理器相关联的高速缓存中。块324示出:在一个实施例中,如果块316的结果不正确或太有限,并且数据不也不在另外的处理器的高速缓存中,则推测式请求可进行到***存储器(块318)。否则,如果数据在另外的高速缓存中,则块326示出:在一个实施例中,数据可经由侦听其他的高速缓存而成为可用的。
块332示出:在一个实施例中,如上所述,如果数据在高速缓存中可用,并且不期望经由***存储器(块318)得到它,则推测式请求可被取消。如上所述,这可包括将取消响应发回到请求的处理器。在优选的实施例中,在块324与332之间可能不存在链接。在这样的实施例中,如果期望的数据不在请求者高速缓存中而在其他高速缓存中,则存储器互连可经由侦听来供应数据,并且可将取消响应返回到处理器。使处理器重试不必要。
块334示出:在一个实施例中,在稍后的一些时间,基于第一高速缓存的请求可完成。块399示出:在一个实施例中,如果发生高速缓存命中,则基于第一高速缓存的请求可用于完成存储器访问。块338示出:在一个实施例中,如上所述,在另一方面,如果存储器互连在取消推测式请求(块332)中错误,并且数据实际上不在高速缓存(块316和306)中,则可尝试非推测式请求。在这样的实施例中,可向***存储器发出非推测式请求。
图4是可包括根据公开的主题的原理形成的半导体装置的信息处理***400的示意性框图。
参照图4,信息处理***400可包括根据公开的主题的原理构造的一个或多个装置。在另一实施例中,信息处理***400可采用或执行根据公开的主题的原理的一种或多种技术。
在各种实施例中,信息处理***400可包括计算装置(诸如,以膝上型计算机、台式计算机、工作站、服务器、刀片服务器、个人数字助理、智能电话、平板计算机和其他合适的计算机或者其虚拟机或虚拟计算装置为例)。在各种实施例中,信息处理***400可由用户(未示出)使用。
根据公开的主题的信息处理***400还可包括中央处理器(CPU)、逻辑或处理器410。在一些实施例中,处理器410可包括一个或多个功能单元块(FUB)或组合逻辑块(CLB)415。在这样的实施例中,组合逻辑块可包括各种布尔逻辑运算(例如,与非、或非、非、异或)、稳定逻辑器件(触发器、锁存器)、其他逻辑器件或它们的组合。这些组合逻辑运算可以以简单的或复杂的方式被配置,以处理输入信号来实现期望的结果。理解的是,虽然同步组合逻辑运算的一些说明性示例被描述,但是公开的主题不被这样限制,并且可包括异步运算或它们的混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物半导体(CMOS)晶体管。在各种实施例中,这些CMOS晶体管可被布置在执行逻辑运算的门中;尽管如此,但是理解的是,其他技术可用在公开的主题的范围内并且在公开的主题的范围内。
根据公开的主题的信息处理***400还可包括易失性存储器420(例如,随机存取存储器(RAM))。根据公开的主题的信息处理***400还可包括非易失性存储器430(例如,硬盘驱动器、光学存储器、NAND或闪存)。在一些实施例中,易失性存储器420、非易失性存储器430或者它们的组合或部分也可被称为“存储介质”。在各种实施例中,易失性存储器420和/或非易失性存储器430可被配置为以半永久或基本上永久的形式来存储数据。
在各种实施例中,信息处理***400可包括被配置为允许信息处理***400成为通信网络的部分并且经由通信网络通信的一个或多个网络接口440。Wi-Fi协议的示例可包括但不限于:电气与电子工程师协会(IEEE)802.11g、IEEE 802.11n。蜂窝协议的示例可包括但不限于:IEEE 802.16m(亦称无线-MAN(城域网)高级)、长期演进(LTE)高级、增强数据速率GSM(全球移动通信***)演进(EDGE)、演进的高速分组接入(HSPA+)。有线协议的示例可包括但不限于:IEEE 802.3(亦称以太网)、光纤通道、电力线通信(例如,HomePlug、IEEE1901)。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理***400还可包括用户接口单元450(例如,显示器适配器、触觉接口、人机接口装置)。在各种实施例中,这个用户接口单元450可被配置为从用户接收输入和/或向用户提供输出。其他种类的装置也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);来自用户的输入可以以任何形式(包括声学、语音或触觉输入)被接收。
在各种实施例中,信息处理***400可包括一个或读个其他装置或硬件组件460(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器)。理解的是,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理***400还可包括一个或多个***总线405。在这样的实施例中,***总线405可被配置为通信地连接处理器410、易失性存储器420、非易失性存储器430、网络接口440、用户接口单元450和一个或多个硬件组件460。由处理器410处理的数据或从非易失性存储器430的外部输入的数据可被存储在非易失性存储器430或易失性存储器420中。
在各种实施例中,信息处理***400可包括或执行一个或多个软件组件470。在一些实施例中,软件组件470可包括操作***(OS)和/或应用。在一些实施例中,OS可被配置为向应用提供一个或多个服务,并且管理或充当信息处理***400的应用与各种硬件组件(例如,处理器410、网络接口440)之间的中介。在这样的实施例中,信息处理***400可包括一个或多个本地应用,本地应用可被本地安装(例如,在非易失性存储器430内),并且被配置为直接由处理器410执行并且直接与OS交互。在这样的实施例中,本地应用可包括预编译机器可执行代码。在一些实施例中,本地应用可包括被配置为将源代码或目标代码翻译为之后由处理器410执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey)或虚拟执行机(VM)(例如,Java虚拟机、微软公共语言运行库)。
以上描述的半导体器件可使用各种封装工艺来封装。例如,根据公开的主题的原理构造的半导体器件可使用以下中的任意一种来封装:堆叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、带引线的塑料芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、华夫裸片封装技术、晶片形式的裸片技术、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料公制四方扁平封装(PMQFP)技术、塑料四方扁平封装(PQFP)技术、小外形封装(SOIC)技术、收缩型小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄型四方扁平封装(TQFP)技术、***级封装(SIP)技术、多芯片封装(MCP)技术、晶片级制造封装(WFP)技术、晶片级处理堆叠封装(WSP)技术和如本领域技术人员将知道的其他技术。
方法步骤可通过执行计算机程序的一个或多个可编程处理器来执行,该计算机程序用于通过对输入数据进行操作并生成输出来执行功能。方法步骤还可由专用逻辑电路来执行,并且设备可被实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
在各种实施例中,计算机可读介质可包括指令,所述指令在被执行时,使装置执行方法步骤的至少一部分。在一些实施例中,计算机可读介质可被包括在磁介质、光学介质、其他介质或它们的组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器)中。在这样的实施例中,计算机可读介质可以是有形地且非暂时性地实现的制造产品。
虽然公开的主题的原理已经参照示例实施例被描述,但是本领域技术人员将清楚,在不脱离这些公开的构思的精神或范围的情况下,可对其进行各种改变和修改。因此,应理解,以上实施例不是限制性的,而仅是说明性的。因此,公开的构思的范围将通过所附权利要求和他们的等同物的最宽的可允许的解释来确定,并且不应受到前面的描述的局限或限制。因此,将理解,所附权利要求意在覆盖如落入实施例的范围内的所有这样的修改和改变。
Claims (19)
1.一种电子设备,包括:
处理器,被配置为发出针对来自高速缓冲存储器的一条数据的第一请求和针对来自***存储器的所述一条数据的第二请求;
高速缓冲存储器,被配置为存储数据的子集;和
存储器互连,被配置为:接收针对来自***存储器的所述一条数据的第二请求,确定所述一条数据是否被存储在高速缓冲存储器中,和如果所述一条数据被确定为存储在高速缓冲存储器中,则取消针对来自***存储器的所述一条数据的第二请求。
2.根据权利要求1所述的电子设备,其中,处理器被配置为在针对来自***存储器的所述一条数据的第二请求中包括推测式标志。
3.根据权利要求1所述的电子设备,其中,存储器互连被配置为:
如果所述一条数据被确定为存储在高速缓冲存储器中,则通过将取消响应消息发到处理器来取消针对来自***存储器的所述一条数据的第二请求。
4.根据权利要求1所述的电子设备,其中,存储器互连被配置为通过检查侦听过滤器目录来确定所述一条数据是否存储在高速缓冲存储器中。
5.根据权利要求4所述的电子设备,其中,侦听过滤器目录包括错误肯定结果而不是错误否定结果。
6.根据权利要求1所述的电子设备,其中,处理器被配置为:
响应于接收到第一请求的失败和第二请求的取消二者,发出针对来自***存储器的所述一条数据的第三请求。
7.根据权利要求1所述的电子设备,其中,存储器互连被配置为:当第二请求被发出时,阻止针对已存储在高速缓冲存储器中的一条数据的对***存储器的访问请求。
8.根据权利要求1所述的电子设备,其中,存储器互连被配置为:
如果第二请求在与所述一条数据相关联的写入请求之前到达存储器互连,则取消针对来自***存储器的所述一条数据的第二请求,其中,第二请求早于写入请求。
9.一种电子***,包括:
多个处理器,其中,所述多个处理器之中的请求的处理器被配置为发出针对来自高速缓冲存储器***的一条数据的第一请求和针对来自***存储器的所述一条数据的第二请求;
高速缓冲存储器***,针对所述多个处理器中的每个处理器包括高速缓冲存储器***的与相应的处理器相关联的部分;和
存储器互连,被配置为:
促进所述多个处理器之间的高速缓存一致性,
接收针对来自***存储器的所述一条数据的第二请求,
确定所述一条数据是否被存储在高速缓冲存储器***的能够由请求的处理器访问的部分中,和
如果所述一条数据被确定为存储在高速缓冲存储器***的能够由请求的处理器访问的部分中,则取消针对来自***存储器的所述一条数据的第二请求。
10.根据权利要求9所述的电子***,其中,请求的处理器被配置为在针对来自***存储器的所述一条数据的第二请求中包括推测式标志。
11.根据权利要求9所述的电子***,其中,存储器互连被配置为:
如果所述一条数据被确定为存储在高速缓冲存储器***的能够由请求的处理器访问的部分中,则通过将取消响应消息发到请求的处理器来取消针对来自***存储器的所述一条数据的第二请求。
12.根据权利要求9所述的电子***,其中,存储器互连被配置为通过检查侦听过滤器目录来确定所述一条数据是否存储在高速缓冲存储器的能够由请求的处理器访问的所述部分中。
13.根据权利要求12所述的电子***,其中,侦听过滤器目录包括错误肯定结果而不是错误否定结果。
14.根据权利要求9所述的电子***,其中,请求的处理器被配置为:
响应于接收到第一请求的失败和第二请求的取消二者,发出针对来自***存储器的所述一条数据的第三请求。
15.根据权利要求9所述的电子***,其中,存储器互连被配置为:当第二请求被发出时,阻止针对已存储在高速缓冲存储器***中的一条数据的对***存储器的访问请求。
16.根据权利要求9所述的电子***,其中,存储器互连被配置为:
如果第二请求在与所述一条数据相关联的写入请求之前到达存储器互连,则取消针对来自***存储器的所述一条数据的第二请求,其中,第二请求早于写入请求。
17.一种电子设备,包括:
存储器访问接口电路,被配置为接收和发送存储器访问请求和响应;
高速缓存一致性数据结构,被配置为指示高速缓冲存储器的内容;和
推测式请求管理电路,被配置为:
接收针对一条数据的向***存储器发出的推测式请求,
确定所述一条数据是否被存储在高速缓冲存储器的至少一部分中,和
如果所述一条数据被确定为存储在高速缓冲存储器中,则取消推测式请求。
18.根据权利要求17所述的电子设备,其中,推测式请求管理电路被配置为:
至少部分地通过将取消请求消息发到请求的装置来取消推测式请求。
19.根据权利要求17所述的电子设备,其中,推测式请求管理电路被配置为:
通过访问高速缓存一致性数据结构,来确定所述一条数据是否存储在高速缓冲存储器的至少一个部分中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962822777P | 2019-03-22 | 2019-03-22 | |
US62/822,777 | 2019-03-22 | ||
US16/424,452 | 2019-05-28 | ||
US16/424,452 US11055221B2 (en) | 2019-03-22 | 2019-05-28 | Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723025A true CN111723025A (zh) | 2020-09-29 |
CN111723025B CN111723025B (zh) | 2024-06-07 |
Family
ID=72514377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010195256.8A Active CN111723025B (zh) | 2019-03-22 | 2020-03-19 | 电子设备和电子*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US11055221B2 (zh) |
KR (1) | KR20200112666A (zh) |
CN (1) | CN111723025B (zh) |
TW (1) | TW202101214A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210224213A1 (en) * | 2021-03-19 | 2021-07-22 | Intel Corporation | Techniques for near data acceleration for a multi-core architecture |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761708A (en) * | 1996-05-31 | 1998-06-02 | Sun Microsystems, Inc. | Apparatus and method to speculatively initiate primary memory accesses |
US20030033510A1 (en) * | 2001-08-08 | 2003-02-13 | David Dice | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
EP1426866A1 (en) * | 2002-12-06 | 2004-06-09 | Sun Microsystems, Inc. | A method to reduce memory latencies by performing two levels of speculation |
US7099913B1 (en) * | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
US20090083488A1 (en) * | 2006-05-30 | 2009-03-26 | Carlos Madriles Gimeno | Enabling Speculative State Information in a Cache Coherency Protocol |
US20120317368A1 (en) * | 2011-06-13 | 2012-12-13 | Arm Limited | Memory interface control |
US20130042077A1 (en) * | 2011-08-08 | 2013-02-14 | ARM, Limited | Data hazard handling for copending data access requests |
US20150186276A1 (en) * | 2013-12-31 | 2015-07-02 | Samsung Electronics Co., Ltd. | Removal and optimization of coherence acknowledgement responses in an interconnect |
US20160328322A1 (en) * | 2015-05-06 | 2016-11-10 | Apple Inc. | Processor to memory bypass |
US20170109286A1 (en) * | 2012-10-22 | 2017-04-20 | Intel Corporation | High performance interconnect coherence protocol |
CN107729168A (zh) * | 2016-08-12 | 2018-02-23 | 谷歌有限责任公司 | 混合存储器管理 |
CN108701092A (zh) * | 2016-03-07 | 2018-10-23 | 高通股份有限公司 | 自愈粗粒探听过滤器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226722B1 (en) * | 1994-05-19 | 2001-05-01 | International Business Machines Corporation | Integrated level two cache and controller with multiple ports, L1 bypass and concurrent accessing |
US6098115A (en) * | 1998-04-08 | 2000-08-01 | International Business Machines Corporation | System for reducing storage access latency with accessing main storage and data bus simultaneously |
US8117390B2 (en) | 2009-04-15 | 2012-02-14 | International Business Machines Corporation | Updating partial cache lines in a data processing system |
US9201796B2 (en) * | 2012-09-27 | 2015-12-01 | Apple Inc. | System cache with speculative read engine |
US10649684B2 (en) * | 2017-03-16 | 2020-05-12 | Arm Limited | Memory access monitoring |
-
2019
- 2019-05-28 US US16/424,452 patent/US11055221B2/en active Active
-
2020
- 2020-02-26 KR KR1020200023683A patent/KR20200112666A/ko active Search and Examination
- 2020-03-05 TW TW109107272A patent/TW202101214A/zh unknown
- 2020-03-19 CN CN202010195256.8A patent/CN111723025B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761708A (en) * | 1996-05-31 | 1998-06-02 | Sun Microsystems, Inc. | Apparatus and method to speculatively initiate primary memory accesses |
US7099913B1 (en) * | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
US20030033510A1 (en) * | 2001-08-08 | 2003-02-13 | David Dice | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
EP1426866A1 (en) * | 2002-12-06 | 2004-06-09 | Sun Microsystems, Inc. | A method to reduce memory latencies by performing two levels of speculation |
US20090083488A1 (en) * | 2006-05-30 | 2009-03-26 | Carlos Madriles Gimeno | Enabling Speculative State Information in a Cache Coherency Protocol |
US20120317368A1 (en) * | 2011-06-13 | 2012-12-13 | Arm Limited | Memory interface control |
US20130042077A1 (en) * | 2011-08-08 | 2013-02-14 | ARM, Limited | Data hazard handling for copending data access requests |
US20170109286A1 (en) * | 2012-10-22 | 2017-04-20 | Intel Corporation | High performance interconnect coherence protocol |
US20150186276A1 (en) * | 2013-12-31 | 2015-07-02 | Samsung Electronics Co., Ltd. | Removal and optimization of coherence acknowledgement responses in an interconnect |
US20160328322A1 (en) * | 2015-05-06 | 2016-11-10 | Apple Inc. | Processor to memory bypass |
CN108701092A (zh) * | 2016-03-07 | 2018-10-23 | 高通股份有限公司 | 自愈粗粒探听过滤器 |
CN107729168A (zh) * | 2016-08-12 | 2018-02-23 | 谷歌有限责任公司 | 混合存储器管理 |
Non-Patent Citations (1)
Title |
---|
袁爱东, 董建萍: "基于目录的一致性协议浅析", 计算机工程, 31 December 2004 (2004-12-31), pages 80 - 83 * |
Also Published As
Publication number | Publication date |
---|---|
CN111723025B (zh) | 2024-06-07 |
US11055221B2 (en) | 2021-07-06 |
TW202101214A (zh) | 2021-01-01 |
KR20200112666A (ko) | 2020-10-05 |
US20200301838A1 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
CN108027804B (zh) | 片上原子事务引擎 | |
US9244846B2 (en) | Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses | |
US9514049B2 (en) | Cache backing store for transactional memory | |
US9251077B2 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
US9430380B2 (en) | Managing memory transactions in a distributed shared memory system supporting caching above a point of coherency | |
US10042580B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
US10152322B2 (en) | Memory move instruction sequence including a stream of copy-type and paste-type instructions | |
US9229868B2 (en) | Data recovery for coherent attached processor proxy | |
US9355034B2 (en) | Removal and optimization of coherence acknowledgement responses in an interconnect | |
US10241945B2 (en) | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions | |
US9251076B2 (en) | Epoch-based recovery for coherent attached processor proxy | |
KR20210000271A (ko) | 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치 | |
EP2339472B1 (en) | Arithmetic processing unit, information processing device, and cache memory control method | |
GB2550048A (en) | Read discards in a processor system with write-back caches | |
CN111723025B (zh) | 电子设备和电子*** | |
US10901691B2 (en) | System, method and apparatus for inter-process communication | |
US10331373B2 (en) | Migration of memory move instruction sequences between hardware threads | |
JP2023509334A (ja) | 特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード | |
US10831607B2 (en) | Dynamic transaction throttling in a data processing system supporting transactional memory | |
US9996298B2 (en) | Memory move instruction sequence enabling software control | |
US10216640B2 (en) | Opportunistic cache injection of data into lower latency levels of the cache hierarchy | |
CN110928812A (zh) | 电子设备、电子***和存储器控制器 |
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 |