用于基于高速缓存类型来提供高速缓存一致性的技术的制作方法

文档序号:16972396发布日期:2019-02-26 18:40阅读:173来源:国知局
用于基于高速缓存类型来提供高速缓存一致性的技术的制作方法

本文的实施例一般涉及信息处理,并且更具体地,涉及在支持不同类型的高速缓存的计算系统内提供高速缓存一致性技术。



背景技术:

计算系统通常包括耦合在一起以在中央处理器(通常称为中央处理单元(cpu))的控制下互操作并执行各种处理功能的各种组件。大多数系统还包含诸如处理器、处理器核(或“核”)、加速器、存储器设备、外围设备、专用处理单元等的元件集合以及可用作系统存储器以提供用于由处理单元使用的信息的存储的附加半导体器件。在许多系统中,可以存在多个存储器,其中的每一个存储器可以与给定的元件(诸如核或加速器)相关联,所述给定的元件可以作为用于对应元件的本地存储器或高速缓存来操作。本地高速缓存可以由基于大小、速度或其他操作特性而区分的不同类型的存储器设备形成。

为了维持跨系统的数据的一致性,可以实现高速缓存一致性协议,诸如基于窥探的协议、基于目录的协议,其组合和/或其变体。对于系统元件的本地高速缓存的某些操作特性,每种形式的一致性协议可以不同地操作。例如,对于特定高速缓存类型,某个一致性协议可以高效地进行操作,但是对于其他类型的高速缓存可能操作的效率较低,甚至根本不进行操作。

附图说明

图1示出了第一操作环境的实施例。

图2示出了第一逻辑流的实施例。

图3示出了第二逻辑流的实施例。

图4示出了第二操作环境的实施例。

图5示出了第三操作环境的实施例。

图6示出了第三逻辑流的实施例。

图7示出了第四逻辑流的实施例。

图8示出了存储介质的示例。

图9示出了计算架构的实施例。

具体实施方式

各种实施例通常可以涉及用于在处理系统内的多个组件之间提供至少一个高速缓存一致性处理的技术。在一些实施例中,高速缓存一致性处理可以在多组件(例如,多芯片)计算环境内操作以跟踪其“归属”处于第一组件(例如,第一芯片)的附加存储器中的、当被高速缓存于第二组件(例如第二芯片)上时高速缓存行。在一些实施例中,第一芯片可以包括处理器芯片以及其他。在各种实施例中,第二芯片可以包括处理器芯片、加速器芯片等。

在一些实施例中,多个组件可以包括处理器,诸如中央处理单元(cpu)、处理器管芯(包括例如多芯片处理器管芯)、处理器核(或“核”)、加速器、输入/输出(i/o)设备、智能i/o设备、存储器设备、它们的组合和/或类似物。在一些实施例中,多个组件中的至少一部分可以包括和/或可以可操作地耦合到存储器(“本地存储器”、“高速缓冲存储器”或“高速缓存”)。基于一个或多个高速缓存特性,多个组件的高速缓存可以包括一个或多个高速缓存类型。高速缓存特性的非限制性示例可以包括大小、速度、位置、关联组件、使用等。高速缓存的高速缓存类型可以影响与高速缓存交互的至少一个高速缓存一致性处理的操作。例如,所述至少一个高速缓存一致性处理可以包括第一高速缓存一致性处理,该第一高速缓存一致性处理对第一高速缓存类型高效地操作,而对于第二高速缓存一致性处理低效地操作。

在一些实施例中,高速缓存类型可以基于高速缓存的大小。例如,高速缓存可被指定为“巨型高速缓存类型”或“小型高速缓存类型”中的一个。在一些实施例中,小型高速缓存类型可包括具有用于处理器核中的典型高速缓存的存储器大小的高速缓存,而巨型高速缓存类型可以包括具有比在处理器核中使用的典型高速缓存或某个其他尺寸阈值更大的尺寸的高速缓存。在各种实施例中,小型高速缓存类型可具有1至10兆字节(mb)范围内的存储器大小,而巨型高速缓存类型可具有10-100mb范围或千兆字节(gb)范围内的存储器大小。在各种实施例中,小型高速缓存类型可具有大约小于2mb到大约12mb的存储器大小。在一些实施例中,小型高速缓存类型可具有大约500千字节(kb)、1mb、2mb、4mb、6mb、8mb、10mb、12mb、16mb以及介于这些值中的任意两者之间(包括端点)的范围和值的存储器大小。在各种实施例中,巨型高速缓存类型可具有大于约10mb到大于约10gb的存储器大小。在一些实施例中,巨型高速缓存类型可以具有大约10mb、20mb、30mb、40mb、50mb、100mb、200mb、500mb、1gb、5gb、10gb、25gb、50gb、100gb、500gb以及这些值中的任意两个值之间(包括端点)的范围和值的存储器大小。实施例不限于该上下文。

通常,小型高速缓存类型和巨型高速缓存类型的存储器大小可取决于相应系统的操作特性,包括任何高速缓存一致性处理。通常,如下面更详细描述的,某些高速缓存一致性处理或其部分可以针对小型高速缓存类型高效地操作,而某些高速缓存一致性处理或其部分可以针对巨型高速缓存类型低效地操作(或根本不进行操作)。例如,在使用第一高速缓存一致性协议的第一系统中,巨型高速缓存类型可具有大约500mb的存储器大小,而在使用第二高速缓存一致性协议的第二系统中,巨型高速缓存类型可具有约10gb的存储器大小。在一些实施例中,例如,基于高速缓存的存储器大小对高速缓存一致性处理的操作特性(例如,窥探延迟)的影响,可以区分小型高速缓存类型和巨型高速缓存类型。

对于基于窥探的高速缓存一致性协议,与处理器核的小型高速缓存类型相比,巨型高速缓存类型(例如,加速器或智能i/o设备)的窥探延迟可能非常高。因此,巨型高速缓存类型可以与“高窥探延迟”相关联,并且小型高速缓存类型可以与“低窥探延迟”相关联。如果具有巨型高速缓存类型的代理被视为传统的一致性代理,则标准高速缓存一致性机制可能导致与巨型高速缓存类型相关联的代理的窥探延迟成为对存储器读取延迟的限制器,例如,如处理器核所见。因此,针对巨型高速缓存类型的标准高速缓存一致性机制通常对处理器性能具有显着的负面影响。

使用针对巨型高速缓存类型的标准高速缓存一致性机制的常规的基于软件的技术通常涉及以低粒度级别管理数据。例如,可以以页面粒度管理数据,其中在一致性代理处对数据页面高速缓存可能需要从处理器核看到的页表中对该页面解除分配。另外,当页面从高速缓存返回到主机存储器时,可能需要某些操作,例如反转页表操作。因此,这种用于针对巨型高速缓存提供高速缓存一致性的常规的基于软件的技术是非常低效的并且提供较差的性能。

对于采用小型高速缓存的基于窥探的高速缓存一致性系统,可以在例如处理器管芯上实现专用于一致性代理的基于随机存取存储器(ram),例如基于静态ram(sram)的窥探过滤器。但是,基于sram的窥探过滤器由于映射如此巨型高速缓存所需的窥探过滤器的大小而不能应用于巨型高速缓存。例如,这种窥探过滤器将消耗处理器管芯可用的面积和功率的不可接受的大百分比。

因此,一些实施例提供用于支持针对巨型高速缓存类型的高速缓存一致性处理的技术。在一些实施例中,高速缓存一致性处理可以包括基于窥探的一致性处理、基于目录的一致性处理,其组合和/或其变体。在各种实施例中,高速缓存一致性处理可以提供能够在相同或相关架构内支持小型高速缓存类型和巨型高速缓存类型的多个一致性流。例如,在一些实施例中,高速缓存一致性处理可以扩展在一致性目录(例如,存储器内服务器一致性目录)中跟踪的状态以跟踪多个代理,而不是如根据常规技术提供的单个代理类。在各种实施例中,多个代理可以包括用于巨型高速缓存类型(或高窥探延迟)的代理(“高延迟代理”)和/或用于小型高速缓存类型(或低窥探延迟)的代理(“低延迟代理”)。代理,例如,具有小型高速缓存类型的处理器核可以使用低延迟目录比特来跟踪一致性,而具有巨型高速缓存类型的代理可以使用高延迟目录比特来跟踪一致性。在各种实施例中,代理可以指定将哪种类型的代理用于特定请求。以这种方式,代理可以实现巨型高速缓存类型(或高窥探延迟)和小型高速缓存类型(或低窥探延迟)。因此,在一些实施例中,可以至少部分地以硬件跟踪针对巨型高速缓存类型的一致性,而不需要基于软件的解决方案所需的资源昂贵的与分页相关的软件活动。因此,在一些实施例中,系统可以实现针对巨型高速缓存类型的改进的高速缓存一致性性能。例如,一些实施例可以改善针对密集计算逻辑设备(例如,对数据占用量大于其附加存储器容量的计算进行操作)的高速缓存一致性性能,例如计算加速器(例如,图形处理单元(gpu))和/或高门数现场可编程门阵列(fpga)。

图1示出了可以代表各种实施例的操作环境100的示例。在图1中描绘的操作环境100可以包括具有处理单元120(例如,中央处理单元(cpu))的装置105。在一些实施例中,处理单元120可以在片上系统(soc)上实现。在一些实施例中,处理单元120可以被实现为独立的处理器管芯。处理单元120可以包括一个或多个处理核122a-n,诸如1、2、4、6、8、10、12或16个处理核。实施例不限于该上下文。处理单元120可包括任何类型的计算元件,例如但不限于微处理器、微控制器、复杂指令集计算(cisc)微处理器、精简指令集(risc)微处理器、超长指令字(vliw)微处理器、虚拟处理器(例如,vcpu)或任何其他类型的处理器或处理电路。在一些实施例中,处理单元120可以是可从加利福尼亚州圣克拉拉的公司获得的处理器系列中的一个或多个处理器,诸如处理器。尽管图1中仅描绘了一个处理单元120,但是装置可包括多个处理单元。

处理器核122a-n中的每一个可以经由内部互连112连接到路由器块160。路由器块160和内部互连112通常可以代表支持处理单元120中的组件之间的通信的各种电路,包括总线、串行点对点链路、互连结构和/或诸如此类的。未示出这种连接的进一步细节,以免模糊操作环境100的细节。

所支持的通信协议的非限制性示例可以包括外围组件互连(pci)协议、快速外围组件互连(pcie或pci-e)协议、通用串行总线(usb)协议、串行外围接口(spi)协议、串行at附件(sata)协议、quickpath互连(qpi)协议、ultrapath互连(upi)协议、优化加速器协议(oap)、加速器链路(ial)、设备内互连(idi)协议、片上可扩展结构(iosf)协议、可扩展存储器互连(smi)协议、smi第三代(smi3)等等。在一些实施例中,链路115可以支持设备内协议(例如,idi)和存储器互连协议(例如smi3)。在各种实施例中,链路115可以支持设备内协议(例如,idi)、存储器互连协议(例如,smi3)和基于结构的协议(例如,iosf)。

如图1所示,处理单元120可以通信地耦合到逻辑设备180。在各种实施例中,逻辑设备180可以包括硬件设备。在一些实施例中,逻辑设备180可以用硬件、软件或其组合来实现。在各种实施例中,逻辑设备180可以包括加速器。在一些实施例中,逻辑设备180可以包括硬件加速器。在各种实施例中,逻辑设备180可以包括i/o设备,例如智能i/o设备。在一些实施例中,处理单元120可以耦合到多个逻辑设备。尽管加速器和智能i/o设备可以用作示例逻辑设备180,但是实施例不限于此,因为逻辑设备180可以包括任何类型的设备、处理器(例如图形处理单元(gpu))、逻辑单元、电路、集成电路、专用集成电路(asic)、fpga、存储器单元、计算单元和/或能够根据一些实施例操作的类似设备。例如,在多芯片配置中,逻辑设备180可以包括与处理单元120相同、相似或基本相似的处理单元。

逻辑设备180可以包括一致性代理140n和一个或多个高速缓存184a-n或者与一致性代理140n和一个或多个高速缓存184a-n相关联。在一些实施例中,高速缓存184a-n中的至少一个可以包括巨型高速缓存类型。在各种实施例中,一致性代理140a-n可以例如经由多芯片封装(mcp)或其他封装外链接(例如,一致性代理140n)而驻留在与一致性结构130(例如一致性代理140a)相同的处理器管芯上或在耦合到处理器管芯的伴随管芯上。

如图1所示,处理单元120可以包括形成为例如各级高速缓存124a-n和最后级高速缓存(llc)126的分层结构的本地高速缓存。通常,最靠近处理器核122a-n的高速缓存具有最小延迟和最小尺寸,并且离处理器核122a-n越远高速缓存越大,但延迟更长。例如,核122a-n可以包括高速缓存124a-n,其可以用作一级高速缓存(l1)或l1和二级高速缓存(l2)。核122a-n内的高速缓存124a-n或其部分可以对每个处理器核122a-n是“私有的”。在操作环境100的上下文中,最高级高速缓存是llc126。例如,如果还使用l1和l2高速缓存,则用于给定核122a-n的llc126可以包括三级(l3)高速缓存,或者如果唯一的其他高速缓存是l1高速缓存,则用于给定核122a-n的llc126可以包括l2类型高速缓存。由于高速缓冲存储器可以被扩展到更高级别的高速缓存,因此实施例不限于此上下文。

处理器核122a-n中的每一个还可以连接到llc126。llc126被描绘为图1中的单个逻辑块;然而,与llc126相关的组件可以分布在处理单元120上,而不是实现为单个整体块或盒。在一些实施例中,高速缓存124a-n和/或llc126中的一个或多个可以包括小型高速缓存类型。在一些实施例中,高速缓存124a-n和/或llc126中的一个或多个可以包括巨型高速缓存类型。在各种实施例中,高速缓存124a-n和llc126可以包括小型高速缓存类型,并且高速缓存184a-n中的至少一个可以包括巨型高速缓存类型。因此,处理单元120可以包括形成为由经由高速缓存124a-n在处理器核122a-n中的每一个内实现的私有高速缓存和被实现为位于私有核高速缓存和系统存储器156之间的分层结构层的llc126形成的分层结构的本地高速缓存。

在各种实施例中,llc126可以被实现为单个块或盒(例如,在处理器核122a-n中的每个上共享)或一组对等llc(例如,在处理器核122a-n的子集上共享)。每个llc126可以实现为单片代理或“分片”代理的分布式集。每个单片llc或分片llc代理可以包括核/llc一致性代理114a-n或者与核/llc一致性代理114a-n相关联,该核/llc一致性代理114a-n被配置为与高速缓存一致性逻辑共同运行在与llc126的给定llc对等关联的每个处理器核122a-n中。在一些实施例中,核/llc一致性代理114a-n可以提供可操作以维持llc对等和相关联的处理器核122a-n之间的高速缓存一致性的一致性处理。在各种实施例中,核/llc一致性代理114a-n可以提供高速缓存一致性处理,该高速缓存一致性处理能够操作来由llc标签存储库通知跟踪存储在llc126的llc数据阵列中的高速缓存行以及由窥探过滤器(sf)标签存储库通知跟踪存储在相关联的处理器核122a-n高速缓存124a-n中的高速缓存行(例如,在64b的粒度下)。可以使用各种类型的存储器(诸如处理单元120的处理器管芯上的sram)来实现llc标签和/或sf标签。通常,在10纳米硅处理器芯片中高核计数处理器的典型实现方式(例如30-50个核)可以包括拆分在多个llc对等上的总共大约100mb的llc存储,以及拆分在核上的大约100mb的核私有高速缓存(在一个示例中包括30-50个核,提供每个核大约1.5-2mb私有高速缓存的私有高速缓存)。

处理单元120可以包括高速缓存代理128和/或一致性代理140a-n。在一些实施例中,一致性代理140a-n可以包括布置在芯片上的一组llc对等和系统存储器126之间的llc/存储器一致性代理。llc/存储器一致性代理可以提供高速缓存一致性处理,其可操作以维持llc126的llc对等之间的高速缓存一致性等等。由llc/存储器一致性代理提供的一致性处理可以通过等效于由llc标签存储库和处理单元120的处理芯片的llc对等的sf标签存储库捕获的状态的高速缓存状态来通知。

如图1所示,在一些实施例中,高速缓存代理128和/或一致性代理140a-n的至少一部分可以耦合到一致性结构130,一致性结构130可以包括各种组件,诸如存储器134、存储装置(例如寄存器)、接口、高速缓存一致性控制器132。在各种实施例中,高速缓存代理128的至少一部分可以在不使用一致性结构130的情况下被耦合到一致性代理140a-n。在正常操作期间,一致性结构130可以在系统代理之间路由流量。流量可以包括响应于高速缓存请求的窥探。在一些实施例中,一致性结构130可以充当多个不同代理(例如,高速缓存代理128和/或一致性代理140a-n)和其他组件之间的主要芯片上互连。在各种实施例中,一致性结构130可以包括可操作用于基于高速缓存一致性处理来在处理单元120内的结构上实施一致性和排序的逻辑。此外,一致性结构130可以执行分组和/或其他数据的端到端路由,并且还可以处理所有相关联的功能,诸如网络公平性、死锁避免、流量调制以及用于处理单元120的代理的其他互连功能。

在一些实施例中,高速缓存代理128可以负责管理核122a-n和/或逻辑设备180与共享高速缓存126和/或高速缓存184a-n之间的数据传递。高速缓存代理128还负责维护单个插槽内(例如,处理单元120内)的核122a-n与逻辑设备180之间的高速缓存一致性。这可以包括根据高速缓存一致性协议(如mesi、mosi、moesi或mesif)来生成窥探内容并收集来自核122a-n的窥探响应。可以分配多个高速缓存代理128中的每一个以管理共享高速缓存126的不同子集。

高速缓存代理128可以包括可以高速缓存一个或多个高速缓存块的任何代理。例如,核122a-n可以是高速缓存代理,高速缓存124a-n也可以是高速缓存代理。一致性结构130和/或高速缓存一致性控制器132可以促进装置105内的一致性通信。在事务的地址、响应和数据阶段期间,可以在装置105内支持一致性通信。通常,通过在地址阶段发送事务的地址以及指示哪个事务正在发起的命令以及各种其他控制信息来发起事务。一致性代理140a-n使用响应阶段来维持高速缓存一致性。每个一致性代理140a-n可以用由地址寻址的高速缓存块的状态的指示进行响应,并且还可以重试不能确定一致性响应的事务。重试的事务将被取消,发起代理可能会在稍后重新尝试。成功(未重试)地址阶段的顺序可以为了一致性目的而建立事务的顺序(例如,根据顺序一致的模型)。用于事务的数据在数据阶段发送。某些事务可能不包括数据阶段。例如,某些事务可以仅用于建立高速缓存块的一致性状态的变化。通常,高速缓存块的一致性状态可以定义高速缓存代理可以在高速缓存块上执行的允许操作(例如,读取、写入等)。通用的一致性状态方案包括mesi、moesi以及这些方案的变体。

一致性代理140a-n(其中的一个或多个可以被称为“归属”代理)可以连接到存储器控制器150。在一些实施例中,高速缓存代理128、归属代理140a-n中的一个或多个和存储器控制器150可协同工作以管理对系统存储器156的存取。存储器156的实际物理存储器可存储在一个或多个存储器模块(未示出)上并经由存储器接口从存储器控制器150存取。例如,在一个实施例中,存储器接口可以包括一个或多个双倍数据速率(ddr)接口,诸如ddr3型(ddr3)接口。在一些实施例中,存储器控制器150可以包括ram(例如,动态ram(dram))存储器控制器。

一致性代理140a-n可以与高速缓存代理128交互以管理各种存储器消费者(例如,处理器核122a-n、逻辑设备180等)的高速缓存行使用。具体而言,一致性代理140a-n和高速缓存代理128(单独或经由一致性结构130)可以支持一致性存储器方案,在该方案下存储器可以以一致方式被共享而没有数据损坏。为了支持该功能,一致性代理140a-n和高速缓存代理128存取和更新存储在目录152中的高速缓存行使用数据(参见例如图5),其在存储器控制器150中逻辑地描绘(例如,由存储器控制器150采用的逻辑的部分涉及目录152数据的使用),但是其数据可以存储在系统存储器156中。

装置105中的高速缓冲存储器可以使用各种高速缓冲存储器一致性协议(诸如基于窥探的协议、基于目录的协议,其组合和/或其组合)保持一致,所述高速缓冲存储器一致性协议诸如mesi、mosi、moesi、mesif、目录辅助窥探(das)、i/o目录高速缓存(iodc)、归属窥探、早期窥探、具有目录和机会窥探广播的窥探、管芯上群集和/或诸如此类。通常,系统存储器地址可以与系统中的特定位置相关联。这个位置通常可以称为存储器地址的“归属节点”。在基于目录的协议中,高速缓存代理128可以向归属节点发送请求(例如,经由一致性结构130)以存取与一致性代理(或归属代理)140a-n相关联的存储器地址。高速缓存代理128继而负责确保所请求数据的最新副本从拥有所请求数据的存储器156或高速缓存代理128返回给请求者。例如,如果请求是针对独占副本的,则一致性代理140a-n也可以负责使其他高速缓存代理128处的数据副本无效。为了这些目的,一致性代理140a-n通常可以窥探每个高速缓存代理128或依赖于目录152来跟踪数据可驻留在其上的一组高速缓存代理128。

在一些实施例中,装置105可以使用高速缓存一致性处理来提供一致性。高速缓存一致性处理可以包括多个高速缓存一致性协议、功能、数据流和/或诸如此类。在各种实施例中,高速缓存一致性处理可以包括基于目录的高速缓存一致性协议。在基于目录的高速缓存一致性协议中,保护存储器的代理(诸如一致性代理140a-n(或归属代理))共同地维护目录152,该目录跟踪每个高速缓存行高速缓存在系统中何处以及以何种状态被高速缓存在系统中。试图获取高速缓存行的高速缓存代理128可以向一致性代理140a-n(例如,经由一致性结构130)发送请求,一致性代理140a-n在目录152中执行查找并将消息(通常称为窥探内容)发送到只有目录152指示可以具有高速缓存行的高速缓存副本的那些高速缓存代理128。

目录152可以存储目录信息(或一致性信息)。存储器控制器150和/或高速缓存一致性控制器132可以在目录152中维护存储器中每行的目录状态。响应于一些事务,相对应行的目录状态可以改变。存储器控制器150和/或高速缓存一致性控制器132可以更新标识存储器中每行的当前目录状态的记录。在一些情况下,存储器控制器150和/或高速缓存一致性控制器132可以从一致性代理140a-n接收数据以指示对存储器行的目录状态的改变。在其他实例中,存储器控制器150和/或高速缓存一致性控制器132可以包括用于基于相对应请求的性质而自动更新目录状态(例如,没有主机指示改变)的逻辑。在各种实施例中,利用请求地址来执行目录读取以确定请求地址在目录152中命中或未命中,以及如果存储器地址命中,则确定目标存储器块的一致性状态。可以包括系统中每个高速缓存行的一个目录状态的目录信息可以在后续周期中由目录152返回。

在各种实施例中,目录信息可以包括比特或其他数据,比如存储在与所请求的数据相对应的存储器条目的纠错码(ecc)比特中的信息。在一些实施例中,目录信息可以包括如下编码的2比特:无效-没有高速缓存副本,干净-在存储器位置高速缓存的干净副本,脏-在存储器位置中高速缓存的脏的副本,以及未使用。在各种实施例中,目录信息可以包括两组两比特目录状态。在一些实施例中,目录信息可以包括与数据一起存储的2比特或4比特,例如,作为ecc比特的一部分。目录152条目的比特数可以包括2比特、4比特、6比特、8比特、10比特、12比特、16比特、20比特、32比特,以及这些值中的任何两个值(包括端点)之间的任何值或范围。在一些实施例中,目录信息可以包括各种字段。字段的非限制性示例可以包括:标签字段,其标识保持在相对应的高速缓存行中的存储块的实际地址,状态字段,其指示高速缓存行的一致性状态,包含性比特,指示存储块是否被保持在关联的l1高速缓存中,以及高速缓存状态信息。在一些实施例中,目录可以包括状态(或状态信息)以标识具有数据副本的确切的一个高速缓存(如果仅存在一个副本);一组特定的高速缓存代理(其中可以找到数据的副本);状态(或状态信息),用于指示副本数(例如,1个副本、2个副本、多个副本和/或类似物);和/或用于高速缓存代理类型的指示符。

在一些实施例中,目录信息可以包括高速缓存状态或高速缓存状态信息。在一些实施例中,高速缓存状态信息可以指示存储器操作的类型、高速缓存一致性处理、一致性操作等。举例来说,高速缓存状态信息可指示高速缓存一致性处理是否支持巨型高速缓存类型、小型高速缓存类型和/或诸如此类。以这种方式,目录152可以支持多类代理(例如,一致性代理或归属代理)的一致性跟踪。代理的非限制性类包括操作用于支持巨型高速缓存类型的一致性的巨型高速缓存代理(高延迟代理)和操作用于支持小型高速缓存类型的一致性的小型高速缓存代理(低延迟代理)。在一些实施例中,巨型高速缓存代理和/或小型高速缓存代理可以包括一致性代理140a-n(或归属代理)。在各种实施例中,高速缓存一致性处理可以包括小型高速缓存一致性处理和巨型高速缓存一致性处理。响应于指示小型高速缓存状态的高速缓存状态,装置105或其组件可以跟随小型高速缓存一致性处理,并且装置105或其组件可以响应于指示巨型高速缓存状态的高速缓存状态而遵循巨型高速缓存一致性处理。

在一些实施例中,巨型高速缓存代理可以包括作为巨型高速缓存类型的代理操作的一致性代理140a-n。例如,一致性代理140n可以是用于逻辑设备180的巨型高速缓存的巨型高速缓存代理。在另一个示例中,一致性代理140a可以是用于核122a的小型高速缓存(例如,高速缓存124a)的小型高速缓存代理。在一些实施例中,处理单元120可以包括巨型高速缓存。在一些实施例中,逻辑设备180可以包括巨型高速缓存。在一些实施例中,处理单元120和逻辑设备180可以包括巨型高速缓存。实施例不限于该上下文。

在各种实施例中,高速缓存状态信息可以包括或使用每个目录条目的附加目录比特来编码每个目录条目的高速缓存状态(例如,小型高速缓存状态或巨型高速缓存状态)。例如,高速缓存状态信息可以包括每个目录条目2个附加目录比特,以便提供每个目录条目的每个代理类的2比特目录编码字段。在一些实施例中,4比特或编码(例如来自传统的目录编码)跟踪巨型高速缓存状态,2比特或编码跟踪小型高速缓存状态,以及剩余比特或编码跟踪“未高速缓存”状态。

在一些实施例中,装置105可以被布置在多芯片(或多插槽)配置中,例如,其中逻辑设备180是与处理单元120相同、相似或基本相似的处理器、处理单元、处理器管芯、cpu等等。在一些实施例中,逻辑设备180可以是或可以包括多个伴随处理器管芯,例如2个、4个或8个管芯。在其中逻辑设备是伴随处理器管芯的一些实施例中,对等llc的所有处理器本地组可以组合以在所有芯片上创建单个大组llc对等。在这样的实施例中,llc/存储器一致性代理可以负责使用根据一些实施例的高速缓存一致性处理来维护所有对等之间的一致性。例如,根据一些实施例,llc/存储器一致性代理可以使用upi、基于upi或upi导出的高速缓存一致性处理。

在多芯片配置中,llc/存储器一致性代理(或由此执行的高速缓存一致性处理)需要通过llc标签和sf标签相同等效物来通知与以上所述相同或相似的信息。然而,在多芯片配置中,每个芯片上的每个llc/存储器一致性代理上的每个高速缓存一致性处理需要在配置中通过每个芯片上的llc状态和sf状态的等效来通知。

在常规系统中,如果多芯片系统的每个芯片包括用于每个其他芯片的标签存储库,则每个芯片的总标签存储库的尺寸可以增长高达8(对于8处理器管芯架构)的因子并且会强制芯片增加或减少可用作高速缓存的sram数量(并且会向每个芯片增加开销功率)。而且,就可扩展性而言,如果芯片被构建为支持多达8芯片配置,但同时也用于2和4芯片配置,那么聚集标签状态(和相关联区域)的一半或3/4将分别在4芯片配置和2芯片配置中被浪费(例如,不会用于高速缓存或其他功能用途)。

由于这种可伸缩性和成本问题,本领域中已知的大多数解决方案使用各种不同的方案,例如标签(目录)高速缓存、粗粒度一致性、完整目录等。在标签高速缓存中,每个芯片都会保留对等llc标签状态的相对较小的高速缓存。标签高速缓存可以解决成本和可扩展性问题的某些方面,但是限制了可以高速缓存在其他芯片中的数据量并且限制了性能,同时还需要在处理器芯片上增加额外的标签状态。在粗粒度一致性中,可以使用例如1kb高速缓存行而不是llc和核之间使用的64b来维持对等llc之间的一致性。在这个模型中,高速缓存未命中更加昂贵(必须移动完整的1kb数据块),并且高速缓存冲突(热点集)的机会要大得多。这两种现象都会造成性能上的负担,而仍需要管芯上跟踪结构,只是尺寸缩小的结构。在完整目录方案中,跟踪状态以每个存储器行为基础存储(相对于以每个高速缓存行为基础)在dram存储器中。该解决方案向某些流增加了存储器读取延迟,以允许访问跟踪状态,并具有一些性能影响,但不需要额外的管芯上结构,允许以64b粒度进行高速缓存,并且不会限制伴随处理器管芯而高速缓存的数据量。在一些实施例中,装置可以以使用单个目录状态来实现完整目录高速缓存的形式来表示伴随芯片(诸如1至7个伴随芯片)的标签状态。

如上所述,在一些实施例中,逻辑设备180可以是加速器、加速器芯片、加速器管芯等。当逻辑设备180是一致性加速器管芯形式的伴随管芯时,管芯可以以处理器核122a-n的方式附接到高速缓存分层结构,参与由核/llc一致性代理114a-n管理的高速缓存一致性处理,并且使其高速缓存行在与处理器芯片的核122a-n相同的窥探过滤器中被跟踪。这是有利的,因为它允许一致性加速器利用处理器llc(或一个llc对等)并且它允许处理器的核窥探过滤器也用于过滤到加速器的窥探,这在加速器设备具有较差窥探延迟时可能是特别有利的。

当加速器的高速缓存(例如,逻辑设备180高速缓存184a-n)大小具有与处理器核122a-n高速缓存124a-n相同的量级时,上述布置可以很好地工作。在这种情况下,每个加速器附接点需要一定数量的窥探过滤器容量,所述一定数量的窥探过滤器容量类似于将单个内核添加到相关联的llc对等的sf中的窥探过滤器容量。这是一个相对较小的加法器,并且在整个芯片中提出相对较低的成本。然而,当加速器的高速缓存比处理器核的高速缓存大一个数量级(例如,10mb)时,这样的配置可能成为问题,类似于多插槽系统的问题,并且当加速器的高速缓存增长了几个数量级(例如10gb)时可能不可操作或基本上不可操作,随着诸如多通道dram(mcdram)和高带宽存储器(hbm)等存储技术的出现,这已成为可能。

因此,根据一些实施例,设备105和/或其组件可以被配置为操作高速缓存一致性处理,其中,高速缓存一致性处理可操作用于解决针对在core/llc一致性代理级别上与高速缓存分层结构接合并且其高速缓存太大而无法在关联的llc对等的sf中进行跟踪的芯片/代理提供一致性状态跟踪的问题以及其他。例如,根据一些实施例的高速缓存一致性处理可以使用由具有用于存储器中的完整目录的第二字段的完整目录或基于完整目录的方案中llc/存储器一致性代理所采用的机制,其中第一字段跟踪llc对等中的存储器行的高速缓存以通知llc/存储器一致性代理,而第二字段跟踪加速器代理的高速缓存以通知核/llc一致性代理。在各种实施例中,可以包括每种类型的字段中的一种,使得所有伴随处理器芯片上的所有llc对等由第一字段类型的单个实例跟踪,并且附连到多处理器芯片系统中的所有伴随处理器的所有加速器都由第二字段类型的单个实例进行跟踪。在一些实施例中,可以实现每个字段类型的n,使得每个字段类型的每个实例可以精确映射到一个逻辑设备180(例如恰好一个伴随处理器芯片、对等llc和/或加速器芯片)。

这里包括的是表示用于执行所公开的架构的新颖方面的示例性方法的一个或多个逻辑流。虽然为了简化说明的目的,本文所示的一种或多种方法被示出并描述为一系列动作,但是本领域技术人员将理解并意识到,这些方法不受动作顺序的限制。据此,一些动作可以以不同的顺序发生和/或与本文所示和描述的其他动作同时发生。例如,本领域的技术人员将理解并意识到,方法可以替代地表示为一系列相互关联的状态或事件,诸如在状态图中。此外,并非方法中所示的所有动作都可能是新颖实施所必需的。

逻辑流可以用软件、固件、硬件或其任何组合来实现。在软件和固件实施例中,逻辑流可以由存储在非暂时性计算机可读介质或机器可读介质(例如光学、磁性或半导体存储装置)上的计算机可执行指令来实现。实施例不限于该上下文。

图2示出了逻辑流200的实施例。逻辑流200可以代表由本文描述的一个或多个实施例(例如,装置105、405和/或505和/或其组件)执行的操作中的一些或全部。在一些实施例中,逻辑流200可以代表用于多处理器芯片单处理器核读取请求的操作中的一些或全部。

如图2所示,逻辑流200可以在框202处发出读取。例如,核122a-n中的一个可以发出数据读取。在框204处,逻辑流200可以查找用于读取的标签。例如,读取过程可以使用核/llc存储器一致性代理来查找llc和sf标签。在框206处,逻辑流200可以确定是否存在可用的数据副本。例如,核/llc存储器一致性代理可以基于llc标签和sf标签确定llc对等或从属处理器核中是否存在行高速缓存的副本。如果逻辑流200在框206处确定存在可用的数据副本,则逻辑流200可在框216处返回数据。

如果逻辑流200在框206处确定存在可用的数据副本,则逻辑流200可以在框210处向存储器发出读取。例如,核/llc存储器一致性代理可以向dram发出读取。在框212处,逻辑流200可以返回存储器行和跟踪字段。例如,dram可以返回数据的存储器行和完整的目录跟踪字段。在框214,逻辑流200可以确定数据的副本是否在伴随芯片中可用。例如,完整目录字段可以指示伴随处理器芯片可以具有存储器行的副本。如果逻辑流200在框214处确定数据副本在伴随芯片中可用,则逻辑流200可在框220处向所有处理器芯片发出窥探。例如,llc/存储器一致性代理可向所有伴随处理器芯片发出窥探。如果逻辑流200在框214处确定数据的副本在伴随芯片中不可用,则逻辑流200可以在框216处将数据返回到请求核并且在框218处更新字段和标签。例如,完整目录、llc标签和sf标签可以被更新以记录该存储器行现在被高速缓存在请求核处。

图3示出了逻辑流300的实施例。逻辑流300可以代表由本文描述的一个或多个实施例(例如,装置105、405和/或505和/或其组件)执行的操作中的一些或全部。在一些实施例中,逻辑流300可以代表用于包括至少一个加速器芯片的多处理器芯片单处理器核读取请求的操作中的一些或全部。

如图3所示,逻辑流300可以在框302处发出读取。例如,核122a-n中的一个可以发出数据读取。在框304处,逻辑流300可以查找用于读取的标签。例如,读取过程可以使用核/llc存储器一致性代理来查找llc和sf标签。在框306处,逻辑流300可以确定是否存在可用的数据副本。例如,核/llc存储器一致性代理可以基于llc标签和sf标签来确定llc对等或从属处理器核中是否存在行高速缓存的副本。如果逻辑流300在框306处确定存在可用的数据副本,则逻辑流300可在框322处返回数据。

如果逻辑流300在框306处确定存在可用的数据副本,则逻辑流300可在框310处向存储器发出读取。例如,核/llc存储器一致性代理可向dram发出读取。在框312处,逻辑流300可以返回存储器行和跟踪字段。例如,dram可以返回数据的存储器行和完整的目录跟踪字段。在框314处,逻辑流300可以确定数据的副本是否在伴随芯片中可用。例如,完整目录字段可以指示伴随处理器芯片可以具有存储器行的副本。如果逻辑流300在框314处确定数据副本在伴随芯片中可用,则逻辑流300可在框315处向所有处理器芯片发出窥探。例如,llc/存储器一致性代理可向所有伴随处理器芯片发出窥探。如果逻辑流300在框314处确定数据的副本在伴随芯片中不可用,则逻辑流300可以在框318处确定数据的副本是否在加速器芯片中可用。如果逻辑流300在框318处确定数据的副本在加速器芯片中可用,则逻辑流300可以在框320处向所有加速器芯片发出窥探。如果逻辑流200在框314处确定数据的副本在伴随处理器芯片中不可用并且在框314处确定数据的副本在伴随加速器芯片中不可用,则逻辑流300可以在框322处将数据返回到请求核并且在框324处更新字段和标签。

图4示出了可以代表各种实施例的操作环境400的示例。图4中描绘的操作环境400可以包括具有处理单元420和逻辑设备480的装置405。在一些实施例中,处理单元可以是cpu和/或可以实现为soc。在各种实施例中,逻辑设备480可以包括加速器、i/o设备、智能i/o设备等。逻辑设备480可以包括附接的或直接附接的存储器。在各种实施例中,逻辑设备480可以使用直接附接的存储器的至少一部分作为一个或多个高速缓存。举例来说,逻辑设备480可包括和/或可操作地耦合到能够作为一个或多个高速缓存(例如小型高速缓存484a和/或巨型高速缓存484b)操作的直接附接的存储器。在一些实施例中,小型高速缓存484a可以包括小型高速缓存,而巨型高速缓存484b可以包括巨型高速缓存。

逻辑设备480可以经由一个或多个接口(包括但不限于一致性接口或总线(例如“请求总线”)406)耦合到处理单元420。在一些实施例中,逻辑设备480可以经由总线406直接耦合到处理单元。在各种实施例中,逻辑设备480可以经由总线406通过一致性结构(例如一致性结构130)耦合到处理单元420。在一些实施例中,逻辑设备480可以与处理单元420的一致性控制器422进行通信。一致性控制器422可以包括各种组件以在装置405内实现高速缓存一致性。例如,一致性控制器422可以包括归属代理428、一致性引擎424、窥探过滤器426(或目录)和/或类似物。处理单元420可包含被配置为处理来自逻辑设备480或其他元件(例如,高速缓存代理128)的存储器操作请求的请求处理代理430。在一些实施例中,请求处理代理430可以是一致性结构(例如,一致性结构130)的组件,例如,可用作链路406的接口进行操作。通常,存储器操作请求可包括用于执行存储器操作(例如,读取、写入等)的针对处理单元420的请求。

在一些实施例实施例中,当针对存储器操作的请求到达一致性控制器422时,一致性引擎424可以确定转发请求的位置。存储器操作通常可以指需要存取主机存储器456或任何高速缓存484a、484b和/或处理单元高速缓存(未示出)的事务。在一些实施例中,主机存储器456可以包括目录452。一致性引擎424可以在窥探过滤器426或目录452中执行查找以确定窥探过滤器426或目录452是否具有所请求的行的目录信息。在一些实施例中,窥探过滤器426可以是“稀疏”或“部分”目录,其可操作以维护部分目录(例如,目录452的部分目录)。例如,窥探过滤器426中的目录信息可以跟踪系统中的所有高速缓存,而目录452可以跟踪系统中的整个或基本上整个物理地址空间。例如,窥探过滤器426中的目录信息可以指示具有与存储器操作请求相关联的高速缓存块的副本的高速缓存(诸如高速缓存484a、484b、高速缓存124a-n、高速缓存126等)。一般来说,可以使用窥探过滤器来避免发送不必要的窥探流量,并且从而从关键路径中移除窥探流量,并减少整个系统中的流量和高速缓存活动量。在各种实施例中,窥探过滤器426和/或目录452可以是以集合关联方式组织的阵列,其中该方式的每个条目可以包含一个或多个有效比特(取决于配置-基于行或区域),代理类比特和标签字段。在一个实施例中,有效比特指示相应的条目是否具有有效信息,并且代理状态比特用于指示高速缓存行是否存在于相对应的高速缓存代理中,并且标签字段用于保存高速缓存行的标签。在一个实施例中,代理类比特被配置为指示与高速缓存行和/或存储器操作相关联的代理类。

如果窥探过滤器426和/或目录452具有目录信息,则一致性引擎424基于该行的存在矢量将该请求转发到具有该行的当前副本的高速缓存。如果事务可能潜在地改变所请求的行的状态,则一致性引擎424更新窥探过滤器426和/或目录452中的目录信息以反映这些变化。如果窥探过滤器426和/或目录452不具有针对该行的信息,则一致性引擎424可以向窥探过滤器426和/或目录452添加条目以记录所请求的行的目录信息。在一些实施例中,目录信息可以包括指示存储器操作的类型、高速缓存一致性处理、一致性操作等的高速缓存状态信息。举例来说,高速缓存状态信息可指示高速缓存一致性处理是否支持巨型高速缓存类型、小型高速缓存类型和/或类似物。在一些实施例中,逻辑设备480和/或一致性控制器422可操作用于指定与窥探过滤器426和/或目录452中的条目相关联的高速缓存状态信息。例如,与小型高速缓存484a的高速缓存行相关联的窥探过滤器426和/或目录452中的条目可以包括指示小型高速缓存状态的高速缓存状态信息。在另一个示例中,与巨型高速缓存484b的高速缓存行相关联的窥探过滤器426和/或目录452中的条目可以包括指示巨型高速缓存状态的高速缓存状态信息。以这种方式,逻辑设备480与一致性控制器422结合,可以使用相同的硬件和/或软件架构支持小型高速缓存484a和巨型高速缓存484b。

在一些实施例中,可以在总线406上的存储器请求(作为请求总线)从逻辑设备480包括和/或确定代理类限定符。在各种实施例中,在来自逻辑设备480的读取请求或写入请求期间总线406上的代理类限定符可指定逻辑设备针对特定请求需要两个级别的一致性支持中的哪一个支持,包括巨型高速缓存类型支持或小型高速缓存类型支持。因此,在各种实施例中,由逻辑设备480、处理器核(例如,处理器核122a-n)、高速缓存代理128和/或其他元件生成的存储器操作请求可以包括代理类限定符,其被配置为指定用于特定的存储器操作的代理类。在一些实施例中,发送存储器请求的元件(例如,逻辑设备480(例如,作为加速器、i/o设备等操作)可以在逐个请求的基础上调制活动类,允许单个逻辑设备480采用一个或多个小型高速缓存和一个或多个巨型高速缓存。

在一些实施例中,数据请求者(例如,逻辑设备480)可以通过总线406发送数据请求。数据请求可以包括数据请求信息,诸如数据、存储器地址、高速缓存状态信息等。在各种实施例中,高速缓存状态信息可以指示与请求相关联的代理类,诸如请求是否与巨型高速缓存状态或小型高速缓存状态相关联。例如,来自与小型高速缓存484a相关联的逻辑设备480的存储器请求可以包括指示小型高速缓存状态的高速缓存状态信息,并且来自与巨型高速缓存484b相关联的逻辑设备480的存储器请求可以包括指示巨型高速缓存状态的高速缓存状态信息。

请求处理代理430可以接收或以其他方式存取存储器请求并从存储器请求中确定高速缓存状态信息。在一些实施例中,针对指示小型高速缓存状态的请求,请求处理代理430可以执行、促使执行和/或指示一致性控制器422操作小型高速缓存一致性处理,例如,使用如下流,所述流调用或使用了处理单元420的管芯上窥探过滤器426和与小型高速缓存状态相关联的目录字段。在各种实施例中,针对指示巨型高速缓存状态的请求,请求处理代理430可以执行、促使执行,和/或指示一致性控制器422操作巨型高速缓存一致性处理,以指示一致性控制器422使用如下流,所述流调用与巨型高速缓存状态(例如,与目录452)关联的目录字段。

在一些实施例中,响应于用于访问高速缓存行的目录状态,一致性控制器422可以响应于确定与存储器操作相关联的巨型高速缓存状态(并因此巨型高速缓存一致性处理处于活动状态)将窥探消息直接转发到逻辑设备480,所述巨型高速缓存状态指示逻辑设备480可具有关联的高速缓存行的高速缓存副本。在各种实施例中,响应于用于访问高速缓存行的目录状态,当小型高速缓存状态指示小型高速缓存代理可具有与存储器操作关联的高速缓存行的高速缓存副本(因此,小型高速缓存一致性处理处于活动状态)时,一致性控制器422可以将窥探消息直接转发到管芯上处理器窥探过滤器426。在一些实施例中,如果管芯上窥探过滤器指示逻辑设备480可具有与存储器操作相关联的高速缓存行的高速缓存副本,则管芯上窥探过滤器426处的一致性控制器422可将窥探转发到逻辑设备480。

图5示出了可以代表各种实施例的操作环境500的示例。图5中描绘的操作环境500可以包括具有存储目录520的系统存储器510的装置505。目录520可以包括一个或多个条目530a-n。在一些实施例中,每个条目530a-n可以对应于存储在装置505的高速缓存(例如,高速缓存124a-n、llc126、高速缓存184a-n和/或类似物)中的数据高速缓存行。每个条目530a-n可以包括目录信息,例如高速缓存行信息540a-n(例如,指示与条目530a-n相关联的高速缓存行和/或物理存储器地址)、一致性状态542a-n(例如,无效、锁定、拥有、修改、排他、共享、转发等)和/或高速缓存状态544a-n。在各种实施例中,高速缓存状态544a-n可以指示高速缓存条目530a-n是否与小型高速缓存状态(并且因此,小型高速缓存类型)或巨型高速缓存状态(并且因此,巨型高速缓存类型)相关联。

在一些实施例中,对于每个存储器操作,一致性控制器(诸如一致性控制器422)可以访问目录520的条目530a-n以确定高速缓存状态。例如,一致性控制器可以确定高速缓存状态以执行相对应的高速缓存一致性处理。例如,对于读取操作,响应于确定高速缓存状态544a-n是巨型高速缓存状态,一致性控制器可以执行巨型高速缓存一致性处理,并且响应于确定该高速缓存状态544a-n是小型高速缓存状态,一致性控制器可以执行小型高速缓存一致性处理。在另一实例中,对于写入操作,可以根据存储器操作请求来确定高速缓存状态,并且如果对于相关联的高速缓存行不存在先前条目,则可以将对应的高速缓存状态544a-n写入新条目530a-n中,或者高速缓存状态544a-n可以被更新为与存储器操作请求中指定的高速缓存状态相对应。

这里包括的是表示用于执行所公开的架构的新颖方面的示例性方法的一个或多个逻辑流。虽然为了简化说明的目的,本文所示的一种或多种方法被示出并描述为一系列动作,但是本领域技术人员将理解并意识到,这些方法不受动作顺序的限制。据此,一些动作可以以不同的顺序发生和/或与本文所示和描述的其他动作同时发生。例如,本领域的技术人员将理解并意识到,方法可以替代地表示为一系列相互关的状态或事件,诸如在状态图中。此外,并非方法中所示的所有动作都可能是新颖实施所必需的。

逻辑流可以用软件、固件、硬件或其任何组合来实现。在软件和固件实施例中,逻辑流可以由存储在非暂时性计算机可读介质或机器可读介质(例如光学、磁性或半导体存储装置)上的计算机可执行指令来实现。实施例不限于该上下文。

图6示出了逻辑流600的实施例。逻辑流600可以代表由此处描述的一个或多个实施例(诸如装置105、405和/或605)执行的操作中的一些或全部。在一些实施例中,逻辑流600可以表示根据一些实施例的用于高速缓存一致性处理的操作中的一些或全部。

如图6所示,在框602处,逻辑流600可以接收存储器操作请求。例如,请求处理代理430可以接收或以其他方式存取存储器请求并从存储器请求中确定高速缓存状态信息。在框604处,逻辑流600可以确定与存储器操作请求相关联的高速缓存状态。例如,请求处理代理430可以确定存储器操作请求是否与巨型高速缓存状态或小型高速缓存状态相关联。在各种实施例中,在来自逻辑设备480的读取请求或写入请求期间总线406上的代理类限定符可指定逻辑设备针对特定请求需要两个级别的一致性支持中的哪一个,包括巨型高速缓存类型支持或小型高速缓存类型支持。在各种实施例中,由逻辑设备480、处理器核(例如,处理器核122a-n)、高速缓存代理128和/或其他元件生成的存储器操作请求可以包括代理类限定符,其被配置为指定要用于特定的存储器操作的代理类。

如果确定框606确定高速缓存状态是小型高速缓存状态,则逻辑流600可在框608处调用窥探过滤器并使用与小型高速缓存状态相关联的目录字段。例如,对于指示小型高速缓存状态的请求,请求处理代理430可以指示一致性控制器422使用如下流来进行操作,所述流调用处理单元420的管芯上窥探过滤器426以及与小型高速缓存状态相关联的目录字段。

如果确定框606确定高速缓存状态是巨型高速缓存状态,则逻辑流600可以调用与巨型高速缓存状态关联的目录字段。例如,对于指示巨型高速缓存状态的请求,请求处理代理430可以指示一致性控制器422使用如下流来进行操作,所述流调用与巨型高速缓存状态(例如,与目录452)相关联的目录字段。

图7示出了逻辑流700的实施例。逻辑流700可以代表由本文描述的一个或多个实施例(例如,装置105、405和/或505)执行的操作中的一些或全部。在一些实施例中,逻辑流700可以代表根据一些实施例的用于高速缓存一致性处理的操作中的一些或全部。

如图7所示,逻辑流700可以在框702处确定与高速缓存行存取相关联的高速缓存状态。例如,在一些实施例中,对于每个存储器操作,一致性控制器(诸如一致性控制器422)可以访问目录520的条目530a-n来确定高速缓存状态。如果确定框704确定高速缓存状态是小型高速缓存状态,则逻辑流700可以在框706处确定小型高速缓存代理是否可以具有与存储器操作相关联的高速缓存行的高速缓存副本。如果小型高速缓存代理具有如确定框706所指示的高速缓存行的副本,则可以在框708处将窥探消息转发到窥探过滤器。例如,响应于用于访问高速缓存行的目录状态,当小型高速缓存状态指示小型高速缓存代理可具有与存储器操作相关联的高速缓存行的高速缓存副本时,一致性控制器422可以直接将窥探消息转发到管芯上处理器窥探过滤器426。如果在确定框712处窥探过滤器指示逻辑设备的巨型高速缓存代理可以具有与存储器操作相关联的高速缓存行的高速缓存副本,则可以在框714将窥探消息转发到逻辑设备。例如,如果管芯上窥探过滤器指示逻辑设备480可以具有与存储器操作相关联的高速缓存行的高速缓存副本,则管芯上窥探过滤器426处的一致性控制器422可将窥探内容转发到逻辑设备480。

如果确定框704确定高速缓存状态是巨型高速缓存状态,则逻辑流700可在确定框712处确定逻辑设备高速缓存(例如,巨型高速缓存设备)是否可具有与存储器操作相关联的高速缓存行的高速缓存副本。如果逻辑流700在框712处确定逻辑设备高速缓存可具有高速缓存行的高速缓存副本,则逻辑流700可在框714处将窥探消息转发到逻辑设备。例如,如果管芯上窥探过滤器指示逻辑设备480可具有与存储器操作相关联的高速缓存行的高速缓存副本,则在管芯上窥探过滤器426处的一致性控制器422可将窥探内容转发到逻辑设备480。

图8示出了存储介质800的示例。存储介质800可以包括制造品。在一些示例中,存储介质800可以包括任何非暂时性计算机可读介质或机器可读介质,诸如光学、磁性或半导体存储。存储介质800可以存储各种类型的计算机可执行指令,诸如用于实现逻辑流100、200、600和/或逻辑流700的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等等。计算机可执行指令的示例可以包括任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不限于此上下文。

图9示出了适用于实现如前所述的各种实施例的示例性计算架构900的实施例。在各种实施例中,计算架构900可以包括或被实现为电子设备的一部分。在一些实施例中,计算架构900可以代表例如装置105、405和/或505。实施例不限于此上下文。

如在本申请中所使用的,术语“系统”和“组件”和“模块”旨在指代与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件或执行中的软件,其示例由示例性计算架构900提供。例如,组件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、(光和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行的线程、程序和/或计算机。举例来说,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,组件可以通过各种类型的通信介质彼此通信地耦合以协调操作。协调可能涉及信息的单向或双向交换。例如,组件可以以通过通信介质传送的信号的形式传送信息。该信息可以被实现为分配给各种信号线的信号。在这种分配中,每个消息都是信号。然而,其他实施例可以可选地使用数据消息。这种数据消息可以通过各种连接发送。示例性的连接包括并行接口、串行接口和总线接口。

计算架构900包括各种常见计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围部件、接口、振荡器、定时设备、视频卡、声卡、多媒体输入/输出(i/o)组件、电源等。然而,实施例不限于由计算架构900来实现。

如图9所示,计算架构900包括处理单元904、系统存储器906和系统总线999。处理单元904可以是各种商业上可用的处理器中的任何一种,包括但不限于处理器;应用、嵌入式和安全处理器;处理器;ibm和cell处理器;core(2)处理器;和类似的处理器。双微处理器、多核处理器和其他多处理器架构也可以用作处理单元904。

系统总线999提供用于系统组件的接口,包括但不限于系统存储器906到处理单元904的接口。系统总线999可以是几种类型的总线结构中的任何一种,其可以使用各种商用总线架构中的任何一种进一步互连到存储器总线(带有或不带有存储器控制器)、外围总线和本地总线。接口适配器可以经由插槽架构连接到系统总线999。示例性插槽架构可包括但不限于加速图形端口(agp)、卡总线、(扩展)工业标准架构((e)isa)、微通道架构(mca)、nubus、外围组件互连(扩展)(pci(x))、快速pci、个人计算机存储卡国际协会(pcmcia)等。

系统存储器906可以包括一个或多个更高速存储器单元形式的各种类型的计算机可读存储介质,诸如只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双数据速率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、聚合物存储器如铁电聚合物存储器、双向存储器、相变或铁电存储器、硅氧化物氮化物氧化物硅(sonos)存储器、磁卡或光卡、诸如独立磁盘冗余阵列(raid)驱动器之类的设备阵列、固态存储器设备(例如,usb存储器、固态驱动器(ssd))和适用于存储信息的任何其他类型的存储介质。在图9所示的所示实施例中,系统存储器906可以包括非易失性存储器910和/或易失性存储器912。基本输入/输出系统(bios)可以存储在非易失性存储器910中。

计算机902可以包括一个或多个较低速度存储器单元形式的各种类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(hdd)914、从可移动磁盘919读取或向其写入的磁性软盘驱动器(fdd)916,以及从可移动光盘922(例如,cd-rom或dvd)读取或向其写入的光盘驱动器920。hdd914、fdd916和光盘驱动器920可以分别通过hdd接口924、fdd接口926和光驱接口929连接到系统总线999。用于外部驱动器实现的hdd接口924可以包括通用串行总线(usb)和ieee1394接口技术中的至少一个或两者。

驱动器和相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的易失性和/或非易失性存储。例如,可以在包括操作系统930、一个或多个应用程序932、其他程序模块934和程序数据936的驱动器和存储器单元910、912中存储多个程序模块。在一个实施例中,一个或多个应用程序932、其他程序模块934和程序数据936可以包括例如装置105、305、405和/或505的各种应用和/或组件。

用户可以通过一个或多个有线/无线输入设备(例如,键盘938和诸如鼠标940的定点设备)将命令和信息输入到计算机902中。其他输入设备可以包括麦克风、红外(ir)遥控器、射频(rf)遥控器、游戏手柄、手写笔、读卡器、软件狗、指纹阅读器、手套、绘图板、游戏杆、键盘、视网膜阅读器、触摸屏(例如电容式、电阻式等)、轨迹球、触控板、传感器、指示笔等。这些和其他输入设备通常通过耦合到系统总线999的输入设备接口942连接到处理单元904,但可以通过其他接口连接,所述其他接口例如并行端口、ieee1394串行端口、游戏端口、usb端口、ir接口等。

监视器944或其他类型的显示设备也经由诸如视频适配器946的接口连接到系统总线999。监视器944可以在计算机902内部或外部。除了监视器944,计算机通常包括其他外围输出设备,例如扬声器、打印机等。

计算机902可以使用经由有线和/或无线通信到一个或多个远程计算机(诸如远程计算机948)的逻辑连接在联网环境中进行操作。远程计算机948可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他常见网络节点,并且通常包括相对于计算机902描述的元件中的许多或全部,尽管为了简洁起见,仅示出了存储器/存储设备950。所描绘的逻辑连接包括到局域网(lan)952和/或更大的网络(例如广域网(wan)954)的有线/无线连接。这种lan和wan联网环境在办公室和公司中是常见的,并且便于企业范围的计算机网络,例如内联网,所有这些都可以连接到全球通信网络,例如因特网。

当在lan联网环境中使用时,计算机902通过有线和/或无线通信网络接口或适配器956连接到lan952。适配器956可以促进到lan952的有线和/或无线通信,其还可以包括设置在其上的无线接入点,用于与适配器956的无线功能通信。

当在wan联网环境中使用时,计算机902可以包括调制解调器959,或者连接到wan954上的通信服务器,或者具有用于通过wan954(例如,通过因特网)建立通信的其他装置。可以是内部或外部以及有线和/或无线设备的调制解调器959经由输入设备接口942连接到系统总线999。在联网环境中,相对于计算机902或其部分描绘的程序模块可以被存储在远程存储器/存储设备950中。将会意识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。

计算机902可操作来使用ieee902系列标准与有线和无线设备或实体进行通信,诸如可操作地设置在无线通信中的无线设备(例如,ieee802.16空中调制技术)。这至少包括wi-fi(或无线保真)、wimax和bluetoothtm无线技术等等。因此,该通信可以是与传统网络一样的预定义结构,或者仅仅是至少两个设备之间的自组织通信。wi-fi网络使用名为ieee802.11x(a、b、g、n等)的无线电技术来提供安全、可靠、快速的无线连接。wi-fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(其使用ieee802.3相关的媒体和功能)。

至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,当机器读取时所述代表性指令使机器制造逻辑以执行本文所描述的技术。被称为“ip核”的这种表示可以被存储在有形的机器可读介质上并且被供应给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。一些实施例可以例如使用机器可读介质或物品来实现,该机器可读介质或物品可以存储指令或一组指令,所述指令或一组指令如果由机器执行,则可以使机器执行根据实施例的方法和/或操作。这样的机器可以包括例如任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,并且可以使用硬件和/或软件的任何合适的组合来实现。机器可读介质或物品可包括例如任何合适类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元,例如,存储器、可移除或不可移动介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、光盘只读存储器(cd-rom)、可记录光盘(cd-r)、可重写光盘(cd-rw)、光盘、磁介质、磁光介质、可移动存储卡或磁盘、各种类型的数字通用盘(dvd)、磁带、盒式磁带等。指令可以包括使用任何合适的高级别、低级别、面向对象、可视、编译和/或解释的编程语言实现的任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、加密代码等。

示例1是一种装置,包括至少一个处理器、至少一个高速缓冲存储器和逻辑,逻辑的至少一部分包括在硬件中,该逻辑用于接收与该至少一个高速缓冲存储器相关联的存储器操作请求,确定存储器操作请求的高速缓存状态,高速缓存状态指示巨型高速缓存状态或小型高速缓存状态中的一个,响应于确定高速缓存状态是小型高速缓存状态,经由小型高速缓存一致性处理执行存储器操作请求,以及响应于确定高速缓存状态是小型高速缓存状态,经由巨型高速缓存一致性处理执行存储器操作请求。

示例2是示例1的装置,所述至少一个高速缓冲存储器包括至少一个小型高速缓存和至少一个巨型高速缓存。

示例3是示例1的装置,所述至少一个高速缓冲存储器包括至少一个巨型高速缓存,其具有大于1千兆字节(gb)的存储器大小。

示例4是示例1的装置,该至少一个高速缓冲存储器包括至少一个小型高速缓存,其具有小于或等于10兆字节(mb)的存储器大小。

示例5是示例1的装置,还包括逻辑设备,所述至少一个高速缓冲存储器可操作地耦合到逻辑设备。

示例6是示例1的装置,还包括加速器,所述至少一个高速缓冲存储器可操作地耦合到加速器。

示例7是示例1的装置,还包括存储目录的系统存储器,所述目录包括用于指示所述至少一个高速缓冲存储器是巨型高速缓存还是小型高速缓存的高速缓存状态信息。

示例8是示例1的装置,还包括具有窥探过滤器的一致性控制器,窥探过滤器包括用于指示至少一个高速缓冲存储器是巨型高速缓存还是小型高速缓存的高速缓存状态信息。

示例9是示例1的装置,该逻辑用于经由存储器操作请求的代理类限定符来指定存储器操作请求的高速缓存状态。

示例10是示例1的装置,该逻辑用于使用窥探过滤器来执行小型高速缓存一致性处理。

示例11是示例1的装置,该逻辑用于使用目录字段来执行巨型高速缓存一致性处理。

示例12是示例1的装置,该存储器操作请求包括用于存取高速缓存行的请求,该高速缓存状态基于高速缓存行的副本存储在小型高速缓存代理中来指示小型高速缓存状态。

示例13是示例1的装置,该存储器操作请求包括用于存取高速缓存行的请求,该高速缓存状态基于高速缓存行的副本存储在巨型高速缓存代理中来指示巨型高速缓存状态。

示例14是包括根据权利要求1-13中任一项所述的装置和至少一个收发机的系统。

示例15是一种方法,包括:接收与至少一个高速缓冲存储器相关联的存储器操作请求,确定存储器操作请求的高速缓存状态,高速缓存状态指示巨型高速缓存状态或小型高速缓存状态中的一个,响应于所述高速缓存状态是小型高速缓存状态,经由小型高速缓存一致性处理来执行所述存储器操作请求;以及响应于所述高速缓存状态是巨型高速缓存状态,经由巨型高速缓存一致性处理来执行所述存储器操作请求。

示例16是示例15的方法,所述至少一个高速缓冲存储器包括至少一个小型高速缓存和至少一个巨型高速缓存。

示例17是示例15的方法,该至少一个高速缓冲存储器包括至少一个巨型高速缓存,其具有大于1千兆字节(gb)的存储器大小。

示例18是示例15的方法,该至少一个高速缓冲存储器包括至少一个小型高速缓冲存储器,其具有小于或等于10兆字节(mb)的存储器大小。

示例19是示例15的方法,该至少一个高速缓冲存储器可操作地耦合到计算设备的逻辑设备。

示例20是示例15的方法,该至少一个高速缓冲存储器可操作地耦合到计算设备的加速器。

示例21是示例15的方法,包括存储包括高速缓存状态信息的目录,高速缓存状态信息用于指示至少一个高速缓存是巨型高速缓存还是小型高速缓存。

示例22是示例15的方法,还包括提供存储在计算设备的一致性控制器中的窥探过滤器,窥探过滤器包括用于指示至少一个高速缓冲存储器是巨型高速缓存还是小型高速缓存的高速缓存状态信息。

示例23是示例15的方法,包括经由存储器操作请求的代理类限定符来指定存储器操作请求的高速缓存状态。

示例24是示例15的方法,包括使用窥探过滤器来执行小型高速缓存一致性处理。

示例25是示例15的方法,包括使用目录字段来执行巨型高速缓存一致性处理。

示例26是示例15的方法,该存储器操作请求包括用于存取高速缓存行的请求,该高速缓存状态基于高速缓存行的副本存储在小型高速缓存代理中来指示小型高速缓存状态。

示例27是示例15的方法,该存储器操作请求包括用于存取高速缓存行的请求,高速缓存状态基于高速缓存行的副本存储在巨型高速缓存代理中来指示巨型高速缓存状态。

示例28是计算机可读存储介质,其存储用于由计算设备的处理电路执行的指令,所述指令用于使计算设备接收与至少一个高速缓冲存储器相关联的存储器操作请求,确定存储器操作请求的高速缓存状态,所述高速缓存状态指示巨型高速缓存状态或小型高速缓存状态中的一个,响应于确定高速缓存状态是小型高速缓存状态,经由小型高速缓存一致性处理来执行所述存储器操作请求,并且响应于确定高速缓存状态是巨型高速缓存状态,经由巨型高速缓存一致性处理来执行存储器操作请求。

示例29是示例28的计算机可读存储介质,所述至少一个高速缓冲存储器包括至少一个小型高速缓存和至少一个巨型高速缓存。

示例30是示例28的计算机可读存储介质,所述至少一个高速缓冲存储器包括至少一个巨型高速缓存,其具有大于1千兆字节(gb)的存储器大小。

示例31是示例28的计算机可读存储介质,所述至少一个高速缓冲存储器包括至少一个小型高速缓存,其具有小于或等于10兆字节(mb)的存储器大小。

示例32是示例28的计算机可读存储介质,该至少一个高速缓冲存储器可操作地耦合到计算设备的逻辑设备。

示例33是示例28的计算机可读存储介质,所述至少一个高速缓冲存储器可操作地耦合到计算设备的加速器。

示例34是示例28的计算机可读存储介质,所述指令用于使计算设备存储包括高速缓存状态信息的目录,所述高速缓存状态信息用于指示至少一个高速缓存是巨型高速缓存还是小型高速缓存。

示例35是示例28的计算机可读存储介质,所述指令用于使计算设备提供存储在计算设备的一致性控制器中的窥探过滤器,窥探过滤器包括用于指示至少一个高速缓存是巨型高速缓存或小型高速缓存的高速缓存状态信息。

示例36是示例28的计算机可读存储介质,所述指令用于使计算设备经由存储器操作请求的代理类限定符来指定存储器操作请求的高速缓存状态。

示例37是示例28的计算机可读存储介质,该指令用于使计算设备使用窥探过滤器来执行小型高速缓存一致性处理。

示例38是示例28的计算机可读存储介质,该指令用于使计算设备使用目录字段来执行巨型高速缓存一致性处理。

示例39是示例28的计算机可读存储介质,存储器操作请求包括用于存取高速缓存行的请求,高速缓存状态基于高速缓存行的副本存储在小型高速缓存代理中来指示小型高速缓存状态。

示例40是示例28的计算机可读存储介质,存储器操作请求包括用于存取高速缓存行的请求,高速缓存状态基于高速缓存行的副本存储在巨型高速缓存代理中来指示巨型高速缓存状态。

示例41是一种装置,包括至少一个高速缓冲存储器单元以及存储器操作管理单元,其用于接收与至少一个高速缓冲存储器相关联的存储器操作请求,确定存储器操作请求的高速缓存状态,高速缓存状态指示巨型高速缓存状态或小型高速缓存状态中的一个,响应于确定高速缓存状态是小型高速缓存状态,经由小型高速缓存一致性处理来执行存储器操作请求,并且响应于确定高速缓存状态是巨型高速缓存状态,经由巨型高速缓存一致性处理来执行该存储器操作请求。

示例42是示例41的装置,所述至少一个高速缓冲存储器包括至少一个小型高速缓存和至少一个巨型高速缓存。

示例43是示例41的装置,该至少一个高速缓冲存储器包括至少一个巨型高速缓存,其具有大于1千兆字节(gb)的存储器大小。

示例44是示例41的装置,该至少一个高速缓冲存储器包括至少一个小型高速缓存,其具有小于或等于10兆字节(mb)的存储器大小。

示例45是示例41的装置,还包括逻辑设备单元,所述至少一个高速缓冲存储器单元可操作地耦合到逻辑设备单元。

示例46是示例41的装置,还包括加速器单元,所述至少一个高速缓冲存储器单元可操作地连接到加速器单元。

示例47是示例41的装置,还包括系统存储器单元,该系统存储器单元存储包括高速缓存状态信息的目录,高速缓存状态信息用于指示至少一个高速缓冲存储器单元是巨型高速缓存还是小型高速缓存。

示例48是示例41的装置,还包括具有窥探过滤器的一致性控制器单元,该窥探过滤器包括用于指示至少一个高速缓冲存储器单元是巨型高速缓存还是小型高速缓存的高速缓存状态信息。

示例49是示例41的装置,存储器操作管理单元用于经由存储器操作请求的代理类限定符来指定存储器操作请求的高速缓存状态。

示例50是示例41的装置,存储器操作管理单元用于使用窥探过滤器来执行小型高速缓存一致性处理。

示例51是示例41的装置,存储器操作管理单元用于使用目录字段来执行巨型高速缓存一致性处理。

示例52是示例41的装置,存储器操作请求包括用于存取高速缓存行的请求,高速缓存状态基于高速缓存行的副本存储在小型高速缓存代理中来指示小型高速缓存状态。

示例53是示例41的装置,存储器操作请求包括用于存取高速缓存行的请求,高速缓存状态基于高速缓存行的副本存储在巨型高速缓存代理中来指示巨型高速缓存状态。

示例54是一种包括根据权利要求41-53中任一项所述的装置和至少一个收发机的系统。

应该注意的是,本文描述的方法不必以所描述的顺序或以任何特定的顺序执行。此外,关于本文中所标识的方法所描述的各种活动可以以串行或并行方式来执行。

尽管本文已经说明和描述了特定实施例,但应该意识到的是,为了达到相同目的而计算的任何布置可以代替所示的特定实施例。本公开内容旨在覆盖各种实施例的任何和所有修改或变化。应该理解,上面的描述是以说明性的方式进行的,而不是限制性的。上述实施例的组合以及本文中未具体描述的其他实施例在阅读了上述说明之后对于本领域技术人员而言将是显而易见的。因此,各种实施例的范围包括其中使用上述组合物、结构和方法的任何其它应用。

需要强调的是,提供了本公开的摘要以符合37c.f.r.第1.72(b)节要求,需要便于读者迅速确定技术公开的性质的摘要。应认为理解成,它不会被用来解释或限制权利要求的范围或含义。另外,在前面的具体实施方式中,可以看出,出于简化本公开的目的,将各种特征组合在一个实施例中。本公开的方法不应被解释为反映所要求保护的实施例需要比每个权利要求中明确记载的更多特征的意图。相反,如以下权利要求所反映的,发明主题在于少于单个公开实施例的所有特征。因此,以下权利要求由此被并入到具体实施方式中,其中每个权利要求本身作为单独的优选实施例。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”分别用作各自术语“包括(comprising)”和“其中(wherein)”的简明英语等同词。此外,术语“第一”、“第二”、“第三”等仅用作标签,并不意图对其对象施加数字要求。

尽管已经以结构特征和/或方法动作特有的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上述具体特征和动作被公开为实现权利要求的示例形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1