两级存储器全行写入的制作方法

文档序号:14911049发布日期:2018-07-10 23:25阅读:213来源:国知局
相关申请的交叉引用本申请要求于2015年3月27日提交的题为“TWOLEVELMEMORYFULLLINEWRITES”的美国非临时专利申请14/670,857的权益和优先权,该美国非临时专利申请通过引用方式以其整体并入本文。
技术领域
本公开一般涉及计算体系结构领域,更具体地涉及缓冲存储器协议。
背景技术
:半导体加工和逻辑设计的进步允许增加可能存在于集成电路器件上的逻辑的数量。作为必然的结果,计算机系统配置已经从系统中的单个或多个集成电路演变为单个集成电路上存在的多个核、多个硬件线程和多个逻辑处理器,以及集成在这些处理器内的其他接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可以包括任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。由于更强的将更多的处理能力装配在较小的封装中的能力,因此较小的计算设备的普及度增加。智能手机、平板电脑、超薄笔记本电脑和其他用户设备呈指数级增长。然而,这些较小的设备依赖于用于超过外形规格的数据存储和复杂处理的服务器。因此,高性能计算市场(即服务器空间)的需求也在增加。例如,在现代服务器中,通常不仅存在具有多个核的单个处理器,还存在多个物理处理器(也称为多个插槽)以增加计算能力。但随着处理能力随着计算系统中的设备数量的增加而增长,插槽和其他设备之间的通信变得越来越重要。事实上,互连已经从主要处理电通信的更传统的多点总线发展到便于快速通信的充分成熟的互连体系结构。不幸的是,作为对未来处理器在更高速率消费的需求,相应的需求将放在现有互连体系结构的能力上。附图说明图1示出了根据一个实施例的包括用于连接计算机系统中的I/O设备的串行点对点互连的系统的简化框图;图2示出了根据一个实施例的分层协议栈的简化框图;图3示出了事务描述符的实施例。图4示出了串行点对点链路的实施例。图5示出了潜在的高性能互连(HPI)系统配置的实施例。图6示出了与HPI相关联的分层协议栈的实施例。图7示出了示例状态机的表示。图8示出了通过示例二十通道数据链路发送的示例数据片的表示。图9示出了通过示例八通道数据链路发送的示例数据片的表示。图10示出了示例多时隙数据片的表示。图11示出了通过示例八通道数据链路发送的示例数据片的表示。图12示出了包括调试消息的示例多时隙数据片的表示。图13示出了利用缓冲存储器协议的系统的表示。图14示出了支持缓冲存储器协议的缓冲器设备的表示。图15A-15C示出缓冲存储器协议中的示例性数据片的表示。图16示出了根据一些实现方式的涉及两级存储器的示例事务。图17A-17B示出了根据一些实现方式的涉及两级存储器的示例事务。图18示出了用于包括多个处理器插槽的计算系统的块的实施例。图19示出了包括多核处理器的计算系统的框图的另一实施例。各附图中的相同的附图标记和标号表示相同的元件。具体实施方式在下面的描述中,阐述了许多具体细节,例如具体类型的处理器和系统配置,特定硬件结构,特定体系结构和微体系结构细节,特定寄存器配置,特定指令类型,特定系统组件,特定处理器流水线级,特定互连层,特定分组/事务配置,特定事务名称,特定协议交换,特定链路宽度,特定实现方式和操作等,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,不一定需要采用这些具体细节来实践本公开的主题。在其他情况下,已经避免了对已知组件或方法的详细描述,例如具体和替代的处理器体系结构,用于描述的算法的特定逻辑电路/代码,特定固件代码,低层互连操作,特定逻辑配置,特定制造技术以及材料,特定的编译器实现,代码中的算法的具体表达,特定功率下降和门控技术/逻辑以及计算机系统的其他特定操作细节,以避免不必要地模糊本公开。虽然可以参考诸如计算平台或微处理器的特定集成电路中的节能、能量效率、处理效率等来描述以下实施例,但是其它实施例也可应用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以受益于这些特征的其他类型的电路或半导体器件。例如,所公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机、UltrabooksTM,而是也可以用于诸如手持设备、智能电话、平板电脑、其它薄型笔记本电脑、片上系统(SOC)设备和嵌入式应用的其他设备。手持设备的一些示例包括蜂窝电话、因特网协议设备、数字照相机、个人数字助理(PDA)和手持PC。这里,可以应用用于高性能互连的类似技术来提高低功率互连中的性能(甚至节省功率)。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可执行下面教导的功能和操作的任何其他系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和效率的软件优化。在下面的描述中可能变得显而易见,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件,还是其组合)可能被认为对于考虑与性能的平衡的“绿色技术”的未来是至关重要的。随着计算系统的进步,其中的组件变得越来越复杂。在组件之间耦合和通信的互连体系结构的复杂性也增加,以确保满足最佳组件操作的带宽需求。此外,不同的细分市场需要互连体系结构的不同方面来适应各自的市场。例如,服务器需要更高的性能,而移动生态系统有时能够为节省功率而牺牲整体性能。然而,大多数结构的单一的目的是可以尽可能提供最高的性能,同时最大限度地节省功率。此外,各种不同的互连可以从本文所述的主题潜在地受益。除了其他示例之外,外围组件互连(PCI)Express(PCIe)互连结构体系结构和QuickPathInterconnect(QPI)结构体系结构可以根据本文所描述的一个或多个原理潜在地得以改进。例如,PCIe的主要目标是使来自不同供应商的组件和设备在跨越多个细分市场的开放体系结构中进行互操作;客户端(台式机和移动设备),服务器(标准和企业)以及嵌入式和通信设备。PCIExpress是为各种未来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性(如其使用模型,加载存储体系结构和软件接口)已经通过其修订进行了维护,而以前的并行总线实现已被高度可扩展的完全串行接口所取代。PCIExpress的最新版本利用了点到点互连、基于交换机的技术和分组协议的进步,提供了新的水平的性能和功能。电源管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理是PCIExpress支持的高级功能中的一些。尽管这里的主要讨论是参考新的高性能互连(HPI)体系结构,但是本文描述的本发明的各方面可以应用于其他互连体系结构,例如PCIe兼容体系结构、QPI兼容体系结构、MIPI兼容体系结构、高性能体系结构或其他已知的互连体系结构。参考图1,示出了由将一组组件互连的点对点链路组成的结构的实施例。系统100包括耦合到控制器集线器115的处理器105和系统存储器110。处理器105可以包括诸如微处理器、主处理器、嵌入式处理器、协处理器或其它处理器的任何处理元件。处理器105通过前端总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB106是如下所述的串行点到点互连。在另一个实施例中,链路106包括符合不同互连标准的串行差分互连体系结构。系统存储器110包括诸如随机存取存储器(RAM)、非易失性(NV)存储器或可由系统100中的设备访问的其他存储器的任何存储器设备。系统存储器110通过存储器接口116耦合到控制器集线器115。存储器接口的示例包括双数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。在一个实施例中,控制器集线器115可以包括根集线器、根复合体或根控制器,例如在PCIe互连层次结构中。控制器集线器115的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥、以及根控制器/集线器。术语“芯片组”通常是指两个物理上分离的控制器集线器,例如耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前系统通常包括与处理器105集成的MCH,而控制器115以与下面描述的类似的方式与I/O设备进行通信。在一些实施例中,可选地通过根复合体115来支持对等路由。这里,控制器集线器115通过串行链路119耦合到交换机/桥接器120。也可以称为接口/端口117和121的输入/输出模块117和121可以包括/实现分层协议栈以提供控制器集线器115和交换机120之间的通信。在一个实施例中,多个设备能够耦合到交换机120。交换机/桥接器120将分组/消息从设备125向上游(即,沿层次结构向上,朝向根复合体)路由到控制器集线器115,并且向下游(即,沿层次结构向下,远离根控制器)从处理器105或系统存储器110路由到设备125。在一个实施例中,交换机120被称为多个虚拟PCI至PCI桥接设备的逻辑组合。设备125包括要耦合到电子系统的任何内部或外部设备或组件,诸如I/O设备,网络接口控制器(NIC),附加卡,音频处理器,网络处理器,硬驱动器,存储设备,CD/DVDROM,监视器,打印机,鼠标,键盘,路由器,便携式存储设备,火线设备,通用串行总线(USB)设备,扫描仪和其他输入/输出设备。通常在PCIe特有语言中,例如设备被称为端点。虽然没有具体示出,设备125可以包括桥接器(例如,PCIe到PCI/PCI-X桥接器),以支持由这些设备支持的设备或互连结构的旧版或其他版本。图形加速器130还可以通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到与ICH耦合的MCH。然后,交换机120以及相应地I/O设备125,耦合到ICH。I/O模块131和118还实现分层协议栈以在图形加速器130和控制器集线器115之间进行通信。与上述MCH讨论类似,图形控制器或图形加速器130本身可以集成在处理器105中。转到图2,示出了分层协议栈的实施例。分层协议栈200可以包括任何形式的分层通信堆栈,例如QPI堆栈、PCIe堆栈、下一代高性能计算互连(HPI)堆栈或其他分层堆栈。在一个实施例中,协议栈200可以包括事务层205、链路层210和物理层220。例如图1中的接口117,118,121,122,126和131接口可以表示为通信协议栈200。作为通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。分组可以用于在组件之间传送信息。可以在事务层205和数据链路层210中形成分组,以将信息从发送组件传送到接收组件。当传输的分组流过其他层时,传输的分组将被扩展具有用于处理那些层中的分组的附加信息。在接收侧,发生逆向过程,并且分组从其物理层220表示变换到数据链路层210表示,最后(对于事务层分组)变换为可由接收设备的事务层205来处理的形式。在一个实施例中,事务层205可以提供设备的处理核与诸如数据链路层210和物理层220的互连体系结构之间的接口。在这方面,事务层205的主要责任可以包括分组(即事务层分组或TLP)的组装和拆卸。事务层205还可以管理用于TLP的基于信用的流控制。在一些实现方式中,可以利用分割事务,即具有按时间分离的请求和响应的事务,在目标设备收集响应的数据的同时允许链路携带其他业务,以及其他示例。基于信用的流控制可以用于实现利用互连结构的虚拟通道和网络。在一个示例中,设备可以通告事务层205中的每个接收高速缓冲存储器的初始的信用量。在链路的相对端的外部设备,例如图1中的控制器集线器115,可以对每个TLP消耗的信用数量进行计数。如果事务不超过信用限额,则可以发送事务。收到回复后,信用额度将被恢复。这种信用方案的优点的一个示例是信用回报的延迟只要不遭遇信用限额就不会影响性能,以及其他潜在的优点。在一个实施例中,四个事务地址空间可以包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括将数据传送到/传送自存储器映射位置的一个或多个读取请求和写入请求。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如诸如32位地址的短地址格式,或诸如64位地址的长地址格式。配置空间事务可用于访问连接到互连的各种设备的配置空间。到配置空间的事务可以包括读取请求和写入请求。还可以定义消息空间事务(或简单的消息)来支持互连代理之间的带内通信。因此,在一个示例性实施例中,事务层205可以组合分组报头/有效载荷206。快速参考图3,示出了事务层分组描述符的示例实施例。在一个实施例中,事务描述符300可以是用于承载事务信息的机制。在这方面,事务描述符300支持系统中的事务的识别。其他潜在用途包括跟踪默认事务排序的修改和与通道的事务关联。例如,事务描述符300可以包括全局标识符字段302、属性字段304和通道标识符字段306。在所示的示例中,描绘了全局标识符字段302,其包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未完成请求是唯一的。根据一个实施方式,本地事务标识符字段308是由请求代理产生的字段,并且对于需要该请求代理完成的所有未完成请求可以是唯一的。此外,在该示例中,源标识符310唯一地标识互连层次结构内的请求者代理。因此,与源ID310一起,本地事务标识符308字段提供层次结构域内的事务的全局标识。属性字段304指定事务的特征和关系。在这方面,属性字段304潜在地用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和无探听字段318。这里,优先级子字段312可以被发起者修改以分配事务的优先级。保留属性字段314保留以用于未来用途或供应商定义的用途。使用优先权或安全属性的可能的使用模型可以使用保留属性字段来实现。在该示例中,排序属性字段316用于提供传达可修改默认排序规则的排序类型的可选信息。根据一个示例的实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示松弛排序,其中写入可以沿相同方向传递写入,并且读取完成可以将写入沿相同方向传递。探听属性字段318用于确定事务是否被探听。如图所示,通道ID字段306标识事务与之相关联的通道。回到图2的讨论,也称为数据链路层210的链路层210可以用作事务层205和物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路上的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组合的TLP,应用分组序列标识符211,即标识号或分组号,计算并应用错误检测码,即CRC212,并将修改的TLP提交给物理层220,用于跨物理设备到外部设备的发送。在一个示例中,物理层220包括逻辑子块221和电子子块(electricalsub-block)222,以物理地将分组发送到外部设备。这里,逻辑子块221负责物理层221的“数字”功能。在这点上,逻辑子块可以包括准备用于物理子块222发送的输出信息的发送部,以及在将其传递到链路层210之前识别和准备接收到的信息的接收部。物理块222包括发送器和接收器。发送器由逻辑子块221提供符号,发送器将符号串行化并发送到外部设备。接收器由外部设备提供串行化符号,并将接收的信号变换为比特流。比特流被解串行化并提供给逻辑子块221。在一个示例实施例中,采用8b/10b传输码,其中发送/接收十位符号。这里,使用特殊符号来构建具有帧223的分组。另外,在一个示例中,接收器还提供从输入串行流中恢复的符号时钟。如上所述,尽管参考协议栈的特定实施例(例如PCIe协议栈)来讨论事务层205、链路层210和物理层220,但分层协议栈不限于此。事实上,任何分层协议可以被包括/实现,并且采用本文讨论的特征。作为示例,表示为分层协议的端口/接口可以包括:(1)组合分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及发送分组的第三层,即物理层。作为具体示例,利用如本文所述的高性能互连分层协议。接下来参考图4,示出了串行点对点结构的示例实施例。串行点对点链路可以包括用于发送串行数据的任何发送路径。在所示的实施例中,链路可以包括两个低电压差分驱动信号对:发送对406/411和接收对412/407。因此,设备405包括将数据发送到设备410的发送逻辑406,和从设备410接收数据的接收逻辑407。换句话说,两条发送路径,即路径416和417,以及两条接收路径,即路径418和419,被包括在链路的一些实现方式中。发送路径是指用于发送数据的任何路径,诸如传输线,铜线,光线,无线通信通道,红外通信链路或其他通信路径。两个设备(例如设备405和设备410)之间的连接被称为链路,例如链路415。链路可以支持一个通道——每个通道表示一组差分信号对(一对用于发送,一对用于接收)。为了缩放(scale)带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如1,2,4,8,12,16,32,64或更宽。差分对可以指发送差分信号的两个发送路径,例如线路416和417。作为示例,当线路416从低电压电平切换到高电压电平,即上升沿时,线路417从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合,电压过冲/欠冲,振铃以及其它示例优点。这允许更好的定时窗口,其实现更快的发送频率。在一个实施例中,提供了新的高性能互连(HPI)。HPI可以包括下一代的高速缓冲存储器一致性的(cache-coherent)、基于链路的互连。作为一个示例,HPI可以被用在诸如工作站或服务器的高性能计算平台中,包括在通常使用PCIe或另一互连协议来连接处理器、加速器、I/O设备等的系统中。然而,HPI不限于此。相反,HPI可以用在本文所述的任何系统或平台中。此外,所开发的各种想法可以应用于其他互连和平台,如PCIe,MIPI,QPI等。为了支持多个设备,在一个示例实现中,HPI可以包括不可知的指令集体系结构(ISA)(即,HPI能够在多个不同设备中实现)。在另一种场景中,HPI也可用于连接高性能I/O设备,而不仅仅是处理器或加速器。例如,高性能PCIe设备可以通过适当的转换桥(即HPI到PCIe)耦合到HPI。此外,HPI链路可以由许多基于HPI的设备(例如处理器)以各种方式(例如,星形,环形,网格等)来使用。图5示出了多个潜在的多插槽配置的示例实现方式。如图所示,双插槽配置505可以包括两个HPI链路;然而,在其他实现方式中,可以使用一个HPI链路。对于较大的拓扑结构,可以使用任何配置,只要标识符(ID)可分配,并且存在某种形式的虚拟路径以及其他附加或替代特征。如图所示,在一个示例中,四插槽配置510具有从每个处理器到另一处理器的HPI链路。但是在配置515中显示的8插槽实现中,并不是每个插槽通过HPI链路直接相互连接。但是,如果处理器之间存在虚拟路径或通道,则支持该配置。受支持的处理器在本机领域中包括2个至32个的范围。除了其他示例之外,可以通过使用节点控制器之间的多个域或其他互连来达到更多数量的处理器。HPI体系结构包括分层协议体系结构的定义,在一些示例中包括协议层(一致性,非一致性,以及可选地,其他基于存储器的协议),路由层,链路层和物理层。此外,HPI还可以包括与电源管理器(如电源控制单元(PCU)、测试和调试设计(DFT)、故障处理、寄存器、安全性以及其他示例相关的增强功能。图5示出了示例HPI分层协议栈的实施例。在一些实现方式中,图5中所示的至少一些层可以是可选的。每个层处理其自身的粒度级或信息量(协议层605a,b处理分组630,链路层610a,b处理数据片(数据片)635,物理层605a,b处理物理数位(phit)640)。注意,在一些实施例中,基于实现方式,分组可以包括部分数据片、单个数据片或多个数据片。作为第一示例,物理数位640的宽度包括链路宽度与比特的1比1映射(例如,20比特链路宽度包括20比特的物理数位,等等)。数据片可以具有更大的尺寸,例如184,192或200比特。请注意,如果物理数位640是20位宽,并且数据片635的大小是184位,则它需要分数数量的物理数位640来发送一个数据片635(例如,发送184位数据片635的20位下的9.2个物理数位,或发送192位数据片的20位下的9.6个物理数位,以及其他示例)。注意,物理层上的基本链路的宽度可以变化。例如,每个方向的通道数可以包括2,4,6,8,10,12,14,16,18,20,22,24等。在一个实施例中,链路层610a,b能够将多个不同的事务嵌入到单个数据片中,以及一个或多个(例如,1,2,3,4)报头可以嵌入在数据片中。在一个示例中,HPI将报头分割成到相应的时隙中,以使能数据片中的以不同节点为目的地的多个消息。在一个实施例中,物理层605a,b可以负责物理介质(电或光等)上的信息的快速传输。物理链路可以是在两个链路层实体(例如层605a和605b)之间的点对点。链路层610a,b可以从上层抽象物理层605a,b,并提供可靠地传输数据(以及请求)并管理两个直接连接的实体之间的流量控制的能力。链路层还可以负责将物理通道虚拟化成多个虚拟通道和消息类。协议层620a,b依赖于链路层610a,b在将协议消息处理到物理层605a,b以便跨物理链路传输之前将协议消息映射到适当的消息类和虚拟通道。链路层610a,b可以支持多个消息,诸如请求,探听,响应,回写,非一致性数据,以及其它示例。HPI的物理层605a,b(或PHY)可以在电层(即,连接两个部件的电导体)上方并且在链路层610a,b下方实现,如图6所示。物理层和相应的逻辑可以驻留在每个代理上,并且将彼此分离的两个代理(A和B)上(例如在链路任一侧的设备上)的链路层连接起来。本地和远程电层通过物理介质(例如电线,导体,光学等)连接。在一个实施例中,物理层605a,b具有两个主要阶段:初始化和操作。在初始化期间,连接对于链路层是不透明的,并且信令可能涉及定时状态和握手事件的组合。在操作期间,连接对于链路层是透明的,并且信令处于一个速度,所有通道一起作为单个链路操作。在操作阶段中,物理层将数据片从代理A传送到代理B,并从代理B传送到代理A。该连接也被称为链路,并从链路层中提取包括媒体、宽度和速度在内的一些物理方面,同时与链路层交换数据片和当前配置的控制/状态(例如宽度)。初始化阶段包括次要阶段,例如轮询,配置。操作阶段也包括次要阶段(例如链路功率管理状态)。在一个实施例中,可以实现链路层610a,b,以便在两个协议或路由实体之间提供可靠的数据传输。链路层可以从协议层620a,b抽象物理层605a,b,并且可以负责两个协议代理(A,B)之间的流控制,并向协议层(消息类)以及路由层(虚拟网络)提供虚拟通道服务。协议层620a,b和链路层610a,b之间的接口通常可以处于分组级别。在一个实施例中,链路层处的最小传输单元被称为指定位数(例如192位或某些其他面值)的数据片。链路层610a,b依赖于物理层605a,b以将物理层605a,b的传输单位(物理数位)映射到链路层610a,b的传输单位(数据片)。另外,链路层610a,b可以在逻辑上分为发送方和接收方两部分。一个实体上的发送器/接收器对可以连接到另一实体上的接收器/发送器对。流控制通常是在数据片和分组的基础上进行的。错误检测和纠正也可能在数据片级的基础上执行。在一个实施例中,路由层615a,b可以提供灵活且分布式方法来将HPI事务从源路由到目的地。该方案是灵活的,因为用于多个拓扑的路由算法可以通过每个路由器上的可编程路由表来指定(一个实施例中的编程由固件、软件或其组合执行)。路由功能可以分布;可以通过一系列路由步骤来完成路由,每个路由步骤通过在源、中间或目的地路由器处的表的查找来定义。源处的查找可用于将HPI分组注入到HPI结构中。在中间路由器处的查找可用于将HPI分组从输入端口路由到输出端口。目的端口处的查找可用于定位目标HPI协议代理。注意,在一些实现方式中,路由层可以是薄的,因为路由表以及因此路由算法没有被规范具体定义。这允许灵活性和各种使用模型,包括由系统实现定义的灵活的平台体系结构拓扑。在一个示例中,路由层615a,b依赖于链路层610a,b用于提供多达三个(或更多个)虚拟网络(VN)的使用,在一个示例中,两个无死锁VN,VN0和VN1具有在每个虚拟网络中定义的几个消息类。可以在链路层中定义共享自适应虚拟网络(VNA),但是该自适应网络可能不直接暴露在路由概念中,因为每个消息类和虚拟网络可以具有独占资源并保证向前进展,以及其他特征和示例。在一个实施例中,HPI可以包括一致性协议层620a,b以支持代理从存储器缓存数据行。希望缓存存储器数据的代理可以使用一致性协议来读取要加载到其高速缓冲存储器中的数据行。希望在其高速缓冲存储器中修改数据行的代理可以在修改数据之前使用一致性协议获取该行的所有权。在修改行之后,代理可以遵循将其保持在其高速缓冲存储器中的协议要求,直到它将行写回存储器或包括对外部请求响应的行。最后,代理可以满足外部请求,使其缓存中的行无效。该协议通过规定所有缓存代理(也称为“一致性代理”)可能遵循的规则来确保数据的一致性。它还为没有缓存的代理提供一致性读取和写入存储器数据的方式。可以执行两个条件以支持利用HPI一致性协议的事务。首先,协议可以保持数据一致性,作为示例,在每个地址的基础上,在代理的高速缓冲存储器中的数据之间以及那些数据和存储器中的数据之间。非正式地,数据一致性可以指代理的高速缓冲存储器中的每个有效数据行表示数据的最新值,并且在一致性协议分组中传输的数据可以代表在数据发送时的数据的最新值。当没有有效的数据副本存在于高速缓冲存储器或在传输中时,协议可以确保数据的最新值位于存储器中。其次,协议可以为请求提供明确的承诺点。读取的承诺点可以指示数据何时可用;对于写入,它们可以指示写入的数据何时是全局可见的并且将通过后续读取来加载。该协议可以支持在一致性存储器空间中的可缓存和不可缓存(UC)请求的这些承诺点。在一些实现方式中,HPI可以利用嵌入式时钟。时钟信号可以嵌入在使用互连传输的数据中。利用嵌入在数据中的时钟信号,可以省略不同的独占时钟通道。这可以是有用的,例如,因为它可以允许设备的更多引脚独占于数据传输,特别是在引脚空间非常珍贵的系统中。可以在互连的任一侧上的两个代理之间建立链路。发送数据的代理可以是本地代理,并且接收数据的代理可以是远程代理。两个代理都可以使用状态机来管理链路的各个方面。在一个实施例中,物理层数据路径可以将链路层的数据片发送到电前端。在一个实现方式中,控制路径包括状态机(也称为链路训练状态机或类似的)。状态机的动作和退出状态可能取决于内部信号、定时器、外部信号或其他信息。实际上,一些状态,如一些初始化状态,可能有定时器提供一个超时值来退出一个状态。注意,在一些实施例中,检测是指检测通道的两条支路上的事件;但不一定同时。然而,在其他实施例中,检测是指由引用的代理检测事件。作为一个例子,去反冲是指信号的持续断言。在一个实施例中,HPI支持在非功能通道的情况下的操作。在这里,通道可能在特定状态下掉线。在状态机中定义的状态可以包括复位状态、初始化状态和操作状态,以及其他类别和子类别。在一个示例中,一些初始化状态可以具有次级定时器,其用于在超时时退出状态(基本上是由于在该状态下不能取得进展而中止)。中止可能包括更新寄存器,如状态寄存器。一些状态还可以具有用于在该状态下对主要功能计时的主定时器。可以定义其他状态,使得内部或外部信号(例如握手协议)驱动从状态到另一状态的转换,以及其他示例。状态机还可以支持通过单步调试、冻结初始化中止和使用测试器。在这里,状态退出可以推迟/保持,直到调试软件准备就绪。在某些实例中,退出可以推迟/暂停,直到二次超时。在一个实施例中,动作和退出可以基于训练序列的交换。在一个实施例中,链路状态机将在本地代理时钟域中运行,并且从一个状态到下一个状态的转换要与发送器训练序列边界一致。可以使用状态寄存器来反映当前状态。图7示出了HPI的一个示例性实现中由代理使用的状态机的至少一部分的表示。应当理解,包括在图7的状态表中的状态包括可能状态的非详尽列表。例如,为了简化图,省略了一些转换。而且,一些状态可能会被组合、分割或省略,而其他状态可能会被添加。这种状态可以包括:事件复位状态:在热或冷复位事件中进入。恢复默认值。初始化计数器(例如,同步计数器)。可能退出到另一个状态,如另一个复位状态。定时复位状态:带内复位的定时状态。可以驱动预定义的电有序集(EOS),因此远程接收器能够检测EOS并且也进入定时复位。接收器具有保持电设置的通道。可退出代理以校准复位状态。校准复位状态:通道上无信令的校准(例如接收器校准状态)或关闭驱动器的校准。可能是基于定时器的状态下的预定时间量。可能设定运行速度。当端口未启用时,可能会作为等待状态。可能包括最低驻留时间。接收器调理或交错可能基于设计而发生。在超时和/或完成校准之后,可能退出到接收器检测状态。接收器检测状态:检测通道上接收器的存在。可能寻找接收器终止(例如接收器下拉插入)。在指定值已设定或未设定其他指定值时,可退出以校准复位状态。如果检测到接收器或达到超时,可能退出到发送器校准状态。发送器校准状态:用于发送器校准。可能是分配给发送器校准的定时状态。可能包括通道上的信令。可能会持续驱动EOS,例如电动空闲退出有序集(或EIEIOS)。完成校准或计时器到期后,可退出到兼容状态。如果计数器已经过期或发生了二次超时,可能退出到发送器检测状态。发送器检测状态:准予(qualify)有效的信令。可能是一个代理完成动作并基于远程代理信令退出到下一个状态的握手状态。接收器可以准予来自发送器的有效信令。在一个实施例中,接收器寻找唤醒检测,并且如果在一个或多个通道上去反冲则在其他通道上寻找它。发送器驱动检测信号。可以退出到轮询状态,以响应所有通道完成去反冲和/或超时,或者如果所有通道上的去反冲未完成并且有超时。这里,可以保持一个或多个监视器通道唤醒以对唤醒信号去反冲。而如果已经去反冲,那么其他通道可能会被去反冲。这可以在低功率状态下实现功率节约。轮询状态:接收器适配,锁定位(例如,通过初始化漂移缓冲器),锁定字节(例如,通过识别符号边界),并锁定训练序列边界(例如,通过锁定到电有序集(EOS)和/或训练序列头)。通道可以进行偏斜校正。握手也可以完成,以便退出轮询到几个潜在状态之一。例如,退出可以由(代理)导致到链路宽度状态、兼容状态、环回标记状态或复位状态中的任何一个。握手可以包括完成各种定义的接收器动作或条件,以及发送确认消息(ACK)以触发退出到与完成的动作集合和ACK相对应的状态。对于轮询偏斜校正,在远程发送器处的通道到通道偏斜可以用于最高速的第一长度和用于慢速的第二长度封闭。偏斜校正可以以慢速模式和操作模式进行。接收器可能具有对通道-通道偏斜进行偏斜校正的特定的最大值,例如8个、16个或32个偏斜间隔。接收器动作还可以包括在一些实现方式中的等待时间固定。在一个实施例中的接收器动作可以在有效通道图的成功偏斜校正时完成。在一个示例中,当接收到具有确认的多个连续的训练序列报头并且在接收器完成其动作之后发送具有确认的多个训练序列时,可以实现成功的握手。兼容(Compliance)状态:从轮询状态进入。为了认证的目的,可以使代理成为兼容主设备或从设备。设备(充当主设备)可以将兼容模式发送到另一个设备(从设备),并且该从设备可以在将其重新定时到其本地时钟之后将该模式环回(例如,不撤销任何极性反转或通道反转)。当环回不起作用或不期望时,兼容模式可用于表征通道的某些子集上的模拟前端的操作。例如,在成功的字节锁定,TS锁定,偏斜校正,延迟测试以及依赖于几个数字逻辑的正常运作的其他测试之后,可以对进入环回进行预调节。通过实现位锁定,可以将兼容输入,并可用于抖动或噪声调查、调试、探索链路以及其他调节。换句话说,如果轮询的结果不允许直接进入环回,则兼容可以作为轮询的替代而退出。兼容状态可以使用主设备的发送器驱动超级序列。接收器在监视器通道上寻找唤醒,对唤醒去反冲,丢弃坏通道,适配、以及位锁等。从设备发送器可以驱动兼容模式,直到其接收器动作完成。然后环回被重新定时且不被偏斜校正。从设备接收器执行类似的监视和去反冲等动作。除了其他示例之外,退出可以是到复位状态,例如定时复位,或到环回模式状态,以开始测试。在退出到环回模式状态的情况下,可以将主设备(例如,由软件控制器)发送到环回模式状态以尝试更专门化的模式。代理环回标记状态:环回标记是代理状态,但与其他代理状态主设备和从设备动作不同,且退出可能不同。环回从设备可以撤消任何极性反转和/或通道反转,但可能不会对已被环回的位进行解扰或重新乱序。确认交换可能不适用于从设备,因为它正在环回。由于在符号边界上环回之前,从设备可能会进行偏斜校正,因此主设备可能不会被强制重新进行字节锁定或重新进行偏斜校正,但主设备可能会重新锁定训练序列,以避免锁定到某些寄生信号(alias)。这样做的手段可能包括重新播种LFSR,比较TS和/或EIEOS或这些的一些组合。SDS结束标志着环回设置的结束以及模式生成、检查和计数的开始。代理环回模式状态(或阻塞链路状态):从环回标记状态或兼容状态进入。在环回模式状态下,主设备发送器可以发送附加的专门化模式而非控制模式,以补充在兼容环回模式状态中环回的那些模式。接收器可以接收环回模式中的专门化模式并检查接收模式中的错误。对于发送器适配,两个代理都可以是主设备。在预定时间段内,发送器可以发送模式,远程接收器可以比较该模式,并确定记录在诸如寄存器的存储元件中的接收模式的品质因数或度量。比较方法和度量可以是取决于设计的(例如,具有抖动注入的BER)。在这段时间结束时,两个代理都可以退出以针对反向通道进行复位,以检查该度量,并设置发送器适配的下一个迭代。链路宽度状态:代理与到远程发送器的最终的路线映射通信。接收器接收信息并进行解码。接收器可以在第二结构中先前通道图值的检查点之后的结构中记录配置的通道图。接收器也可以用确认(“ACK”)进行响应。可能会启动带内复位。作为一个示例,第一状态是启动带内复位。在一个实施例中,响应于该ACK而执行退出到下一状态,诸如数据片配置状态。此外,在进入低功率状态之前,如果唤醒检测信号发生的频率降到低于指定值(例如,每个数量的单位间隔(UI)为1,例如4KUI),也可以产生复位信号。接收器可以保持当前和之前的通道图。基于具有不同值的训练序列,发送器可以使用不同的通道组。在一些实施例中,通道图可能不会修改一些状态寄存器。数据片锁定配置状态:由发送器进入,但当发送器和接收器都已经退出到阻塞链路状态或其他链路状态时,该状态被认为退出(即,次级超时未决)。在一个实施例中,发送器退出到链路状态包括在接收到行星对准信号(planetaryalignmentsignal)之后数据序列(SDS)和训练序列(TS)边界的开始。这里,接收器退出可以基于从远程发送器接收SDS。这种状态可能是从代理到链路状态的桥梁。接收器识别SDS。如果在解扰器初始化后接收到SDS,则接收器可以退出到阻塞链路状态(BLS)(或控制窗口)。如果发生超时,退出可能是到复位状态。发送器利用配置信号驱动通道。基于条件或超时,发送器退出可能是到复位、BLS或其他状态。发送链路状态:链路状态。数据片被发送到远程代理。可以从阻塞链路状态进入,并在发生事件(例如超时)时返回阻塞链路状态。发送器发送数据片。接收器接收数据片。也可能退出低功耗链路状态。在一些实现中,发送链路状态(TLS)可以被称为L0状态。阻塞链路状态:链路状态。发送器和接收器以统一的方式运行。可以是在物理层信息被传送到远程代理的同时保持链路层数据片的定时状态。可能退出到低功率链路状态(或基于设计到其他链路状态)。在一个实施例中,周期性地发生阻塞链路状态(BLS)。该周期被称为BLS间隔,并且可以是定时的,并且可能在慢速和操作速度之间不同。注意,可以周期性地阻止链路层发送数据片,使得可以发送一定长度的物理层控制序列,诸如在发送链路状态或部分宽度发送链路状态期间。在一些实现中,阻塞链路状态(BLS)可以被称为L0控制或L0c状态。部分宽度发送链路状态:链路状态。可以通过进入部分宽度状态来节省电力。在一个实施例中,不对称部分宽度是指具有不同宽度的两方向链路的每个方向,其可以在一些设计中被支持。在图9的示例中示出了诸如发送器的发起者的示例,发送部分宽度指示以进入部分宽度发送链路状态。这里,在具有第一宽度的链路上发送时,发送部分宽度指示,以使链路转变为以第二新宽度进行发送。不匹配可能导致复位。请注意,速度可能不会改变,但宽度可能会改变。因此,数据片可能以不同的宽度发送。逻辑上可能类似于发送链路状态;然而,由于宽度较小,发送数据片可能需要更长的时间。可以退出到其他链路状态,例如基于某些接收和发送的消息的低功率链路状态,或基于其他事件的部分宽度发送链路状态或链路阻塞状态的退出。在一个实施例中,发送器端口可以以交错方式关闭空闲通道,以提供更好的信号完整性(即噪声减轻),如时序图所示。这里,在链路宽度正在改变的时段期间,可以使用诸如空数据片之类的不可重试的数据片。相应的接收器可能会丢弃这些空数据片,并以交错方式关闭空闲通道,以及将当前和之前的通道图记录在一个或多个结构中。注意状态和相关状态寄存器可能保持不变。在一些实现中,部分宽度发送链路状态可以被称为部分L0或L0p状态。退出部分宽度发送链路状态:退出部分宽度状态。在某些实现中可能使用或不使用阻塞链路状态。在一个实施例中,发送器启动退出,这是通过在空闲通道上发送部分宽度退出模式来对它们进行训练和偏斜校正。作为一个示例,退出模式从EIEOS开始,其被检测和去反冲,以指示该通道准备好开始进入到完全发送链路状态,并且可以在空闲通道上以SDS或快速训练序列(FTS)结束。退出序列期间的任何故障(接收器动作,例如在超时之前未完成的偏斜校正)都会停止向链路层进行数据片传输,并断言复位,这通过在下一个阻塞链路状态发生时将链路复位来处理。SDS还可以将通道上的加扰器/解扰器初始化为适当的值。低功率链路状态:是较低功率状态。在一个实施例中,它比部分宽度链路状态的功率更低,因为在该实施例中信令在所有通道上并且沿两个方向停止。发送器可以使用阻塞链路状态来请求低功率链路状态。这里,接收器可以解码该请求并用ACK或NAK进行响应;否则可能会触发复位。在一些实现中,低功率链路状态可以被称为L1状态。在一些实施方式中,例如当诸如某些校准和配置的状态的状态动作已经完成时,可以促进状态转换以允许将状态旁路(bypass)。链路的先前状态结果和配置可以在链路的后续初始化和配置中存储和重用。而不是重复这样的配置和状态动作,可以旁路相应的状态。然而,实施状态旁路的传统系统通常实现复杂的设计和昂贵的验证转义。在一个示例中,HPI可以在某些状态下利用短定时器,而不是使用传统的旁路,例如在不需要重复状态的动作的情况。在其他潜在的优点中,这可能允许更均匀和同步的状态机转换。在一个示例中,基于软件的控制器(例如,通过物理层的外部控制点)可以为一个或多个特定状态启用短定时器。例如,对于已经执行和存储动作的状态,状态可以是短定时的,以便于从该状态快速退出到下一状态。然而,如果先前的状态动作在短定时器持续时间内失败或不能应用,则可以执行状态退出。此外,控制器可以禁用短定时器,例如,当应该重新执行状态动作时。可以为每个相应的状态设置一个长的或默认的定时器。如果在长定时器内该状态下的配置动作无法完成,则可能会发生状态退出。长定时器可以设置为合理的持续时间,以便允许完成状态动作。相反,短定时器可能会相当短,在一些情况下,使得在不返回参考先前执行的状态动作的情况下不可能执行状态动作,以及其他示例。在某些实例中,在链路的初始化(或重新初始化)期间,当代理通过状态机进展到操作链路状态时,可能发生导致状态复位(例如,到复位或其他状态)的一个或多个故障或状态退出。实际上,链路的初始化可以循环通过一个或多个状态而不完成初始化并进入链路状态。在一个示例中,可以维持在链路的初始化期间的状态转换中的非生产性循环的数量的计数。例如,每当初始化返回到复位状态而不到达链路状态时,计数器可以增加。一旦链路成功进入链路状态,可以对该链路复位计数器。这些计数器可以由链路两侧的代理维护。此外,可以例如通过利用一个或多个外部控制点的基于软件的控制器来设置阈值。当非生产性循环的计数满足(或超过)定义的阈值时,链路的初始化可以被暂停(例如,在复位状态或之前设置和保持)。在一些实现中,为了重新开始初始化并从暂停状态释放初始化,基于软件的控制器可以触发链路的重新启动或重新初始化。在某些实例中,基于软件的工具可以分析暂停的初始化的性质,并执行诊断,设置寄存器值,并执行其他操作,以防止初始化的进一步循环。实际上,在一些实现中,控制器可以设置更高的计数器阈值或者甚至在其他示例中与重新开始暂停的链路初始化来超驰计数器。在HPI的一些实施方式中,可以定义超级序列,每个超级序列对应于相应的状态或从相应状态进入/退出到相应状态。超级序列可以包括数据集和符号的重复序列。在某些实例中,序列可以重复,直到状态完成或状态转换或相应事件的通信以及其他示例。在一些实例中,超级序列的重复序列可以根据定义的频率重复,例如定义数量的单位间隔(UI)。单位间隔(UI)可以对应于在链路或系统的通道上发送单个位的时间间隔。在一些实现中,重复序列可以以电有序集(EOS)开始。因此,可以预期EOS的实例将根据预定义的频率重复。这样的有序集可以被实现为可以以十六进制格式表示的定义的16字节代码,以及其他示例。在一个例子中,超级序列的EOS可以是EIEIOS。在一个示例中,EIEOS可以类似于低频时钟信号(例如,预定数量的重复FF00或FFF000十六进制符号等)。预定义的一组数据可以遵从EOS,例如预定义数量的训练序列或其他数据。除了其他示例之外,这种超级序列可以用于状态转换,包括链路状态转换以及初始化。在互连的一些实现方式中,例如在QPI中,串行数据链路的终端可以被打开和关闭,例如当链路被复位或初始化时。这种方法可以将复杂性和时间引入到链路的初始化中。在HPI的一些实现中,链路的终端可以被维持,包括在链路的复位或重新初始化期间。此外,HPI可以允许设备的热插拔。当引入另一个设备时,通过热插拔或其他方式,添加新远程代理的通道的电压特性将发生变化。本地代理可以检测通道电压的这些变化,以检测远程代理的存在并提示链路的初始化。可以在状态机中定义状态机状态和定时器,以协调链路的检测、配置和初始化,而无需终止。在一个实现中,HPI可以支持带内复位的重新初始化,而不需要通过接收代理对输入信号的筛选来改变终止值。信令可用于识别良好的通道。作为示例,可以对要由发送器设备发送的一组预定义信号中的任何一个屏蔽通道,以便于发现和配置链路。在一个示例中,可以对应于一个或多个初始化或重新初始化任务来定义超级序列。预定义的序列可以包括电空闲退出有序集(EIEOS),随后是附加的序列数据。在某些示例中,当通道任一侧的每个设备变为活动时,设备可以开始发送对应于特定初始化状态等的超级序列。在一个实施例中,可以支持两种类型的引脚复位;上电(或“冷”)复位和热复位。由软件发起的复位或在一个代理上发起(在物理层或另一层中)的复位可以在带内传送到另一个代理。然而,由于使用嵌入式时钟,可以通过使用诸如特定电有序集或EIOS之类的有序集与另一个代理的通信来处理带内复位。可以在初始化期间发送有序集,并且可以在初始化之后发送PHY控制序列(或“阻塞链路状态”)。阻塞链路状态可以阻止链路层发送数据片。作为另一示例,链路层业务可能被阻塞以发送可能在接收器处丢弃的几个空数据片。如上所述,在一个实施例中,初始化可以最初以低速开始,然后以快速的初始化来完成。以慢速进行初始化使用寄存器和定时器的默认值。软件然后使用慢速链路设置寄存器、定时器和电参数,并清空校准信号机,为快速初始化铺平道路。作为一个示例,初始化可以包括诸如复位、检测、轮询、兼容和配置之类的状态或任务,以及可能的其它状态或任务。在一个示例中,链路层阻塞控制序列(即,阻塞链路状态(BLS)或L0c状态)可以包括定时状态,在该定时状态期间链路层数据片保持关闭,而PHY信息被传送到远程代理。这里,发送器和接收器可以启动阻塞控制序列定时器。并且在定时器到期后,发送器和接收器可以退出阻塞状态,并且可以采取其他动作,例如退出到复位,退出到不同的链路状态(或其他状态),包括允许通过链路发送数据片的状态。在一个实施例中,可以提供链路训练,并且包括发送加扰训练序列、有序集和控制序列中的一个或多个,例如结合定义的超级序列。训练序列符号可以包括报头、保留部分、目标延迟、对号码、物理通道图代码参考通道或一组通道以及初始化状态中的一个或多个。在一个实施例中,除了其他示例之外,报头可以用ACK或NAK发送。作为示例,训练序列可以作为超级序列的一部分发送,并且可以被加扰。在一个实施例中,有序集和控制序列不被加扰或交错,并且在所有通道上等同地、同时且完全地发送。有序集的有效接收可以包括检查有序集的至少一部分(或对于部分有序集的整个有序集)。有序集可以包括电有序集(EOS),例如电空闲有序集(EIOS)或EIEOS。超级序列可以包括数据序列(SDS)或快速训练序列(FTS)的开始。这样的集合和控制超级序列可以是预定义的,并且可以具有任何模式或十六进制表示以及任何长度。例如,有序集和超级序列可以是8字节,16字节或32字节等的长度。作为示例的FTS可以另外用于在部分宽度发送链路状态的退出期间的快速位锁定。请注意,FTS定义可以是每个通道,并且可以利用FTS的旋转版本。在一个实施例中,超级序列可以包括在训练序列流中插入EOS,例如EIEOS。当信令开始时,通道在一个实现中以交错的方式上电。然而,这可能导致在一些通道上的接收器处看到截短的初始超级序列。然而,可以在短时间间隔(例如,大约千分之一单位间隔(或~1KUI))中重复超级序列。训练超级序列可以另外用于偏斜校正、配置和用于通信初始化目标、通道图等中的一个或多个。EIEOS可以用于将通道从不活动状态转换到活动状态、筛选良好通道、识别符号和TS边界中的一个或多个,以及其它示例。在一个实施例中,时钟可以嵌入在数据中,因此没有单独的时钟通道。通过通道发送的数据片可以被加扰以促进时钟恢复。作为一个示例,接收器时钟恢复单元可以向接收器递送采样时钟(即,接收器从数据中恢复时钟并使用它来对输入的数据采样)。接收器在一些实现中连续地适应输入比特流。通过嵌入时钟,可以潜在地减少引脚分配(pinout)。然而,将时钟嵌入带内数据可以改变对待带内复位的方式。在一个实施例中,可以在初始化之后利用阻塞链路状态(BLS)。此外,在初始化期间,可以利用电有序集超级序列以促进复位(例如,如上所述),以及其他考虑。嵌入式时钟可以在链路上的设备之间共用,并且可以在链路校准和配置期间设置公共操作时钟。例如,HPI链路可以使用漂移缓冲区来引用公共时钟。这种实现可以实现比在非公共参考时钟中使用的弹性高速缓冲存储器更低的等待时间,以及其它可能的优点。此外,参考时钟分配段可以匹配到指定的限制以内。在一些实现中,HPI可以支持具有在一些情况下不是标称通道宽度的倍数的宽度的数据片(例如,使用192位和20通道的数据片宽度作为纯粹的说明性示例)。实际上,在允许部分宽度发送状态的实现中,即使在链路的寿命期间,发送数据片的通道的数量也可能波动。例如,在一些实例中,数据片宽度可以是一时刻的活动通道数量的倍数,但不是另一时刻的活动通道数量的倍数(例如,随着链路改变状态和通道宽度)。在通道数不是当前通道宽度的倍数的实例中(例如,在20个通道上的192位的数据片宽度的示例),在一些实施例中,连续的数据片可以被配置为被发送以在通道上重叠从而保留带宽(例如,发送在20个通道上重叠的五个连续的192位数据片)。图8示出了在多个通道上重叠的连续数据片的发送的表示。例如,图8示出了通过20通道链路(由列0-19表示的通道)发送的五个重叠的192位数据片的表示。图8的每个单元表示包含在通过4UI跨度发送的数据片中的四位(例如,位4n+3:4n)的相应“半字节”或分组。例如,192位数据片可以分为48个四位半字节。在一个示例中,半字节0包括位0-3,半字节1包括位4-7,等等。可以将半字节中的位发送为重叠或交织(例如,“绞合”),使得更早地呈现数据片的更高优先级字段,除其他考虑之外,还保留了错误检测属性(例如,CRC)。实际上,绞合方案还可以提供一些半字节(及其各自的位)被乱序发送(例如,如图8和9的示例中所示)。在一些实现方式中,绞合方案可以取决于链路层的体系结构和链路层中使用的数据片的格式。具有不是活动通道的倍数的长度的数据片的位(或半字节)可以被绞合,例如根据图8的示例。例如,在第一个4UI中,可以发送半字节1,3,5,7,9,12,14,17,19,22,24,27,29,32,34,37,39,42,44和47。可以在下一个4UI期间发送半字节0,2,4,6,8,11,13,16,18,21,23,26,28,31,33,36,38,41,43和46。在UI8-11中,第一个数据片只剩下八个半字节。可以与第二个数据片第一个半字节(即,半字节2,4,7,9,12,16,20,25,30,35,40,45...)同时发送第一个数据片的这些最终半字节(即,10,15,20,25,30,40,45),使得第一个数据片和第二个数据片重叠或绞合。使用这种技术,在本示例中,可以在48UI中发送五个完整的数据片,每个数据片通过分数的(fractional)9.6UI期间发送。在一些情况下,绞合可能导致周期性的“干净”数据片边界。例如,在图8的示例中,起始5数据片边界(第一个数据片的顶行)也可以被称为干净的数据片边界,因为所有的通道正在从相同的数据片开始发送半字节。代理链路层逻辑可以被配置为识别通道的绞合,并且可以从绞合位重建数据片。此外,物理层逻辑可以包括用于基于当前正在使用的通道数目来识别何时以及如何绞合数据片数据流的功能。实际上,在从一个链路宽度状态到另一个链路宽度状态的转换中,代理可以配置自身以识别将如何使用数据流的绞合。如上所述,链路可以在通道宽度之间转换,在某些实例中原始宽度或全宽度运行,并且随后使用较少的通道转换到(和自)部分宽度。在某些实例中,限定的数据片宽度可以被通道数量除尽。例如,图9的示例示出了这样的示例,其中先前示例的192位数据片通过8通道链路发送。如图9所示,192比特数据片的四位半字节可以均匀分布并在8个通道上发送(即,因为192是8的倍数)。实际上,当在8通道部分宽度下操作时,可以通过24个UI发送单个数据片。此外,在图9的示例中,每个数据片边界可以是干净的。虽然干净的数据片边界可以简化状态转换、确定性和其他功能,允许绞合和偶尔的锯齿状数据片边界可以允许使得在链路上浪费的带宽最小化。另外,尽管图9的示例显示通道0-7作为在部分宽度状态下保持活动的通道,可以潜在地使用任何8条通道的集合。还要注意,上面的例子仅仅是为了说明的目的。可以将数据片定义为具有任何宽度。链路也可能具有可能的任何链路宽度。此外,可以根据数据片的格式和字段、系统中的优选通道宽度以及其他考虑和示例,灵活地构建系统的绞合方案。除了其他考虑之外,HPIPHY逻辑层的操作可以独立于底层传输介质,只要延迟不会导致链路层的等待时间固定错误或超时。链路层链路层可以从协议层抽象物理层,处理两个协议代理之间的流控制,并向协议层(消息类)和路由层(虚拟网络)提供虚拟通道服务。在一些实现中,链路层可以处理称为数据片的固定量的信息。在一个示例中,数据片可以被定义为192位长度。然而,可以在不同的变化中使用诸如81-256(或更多)位的任何范围。诸如192数据片的大数据片大小可以包括格式、循环冗余校验(CRC)、纠错码(ECC)和其他特征。例如,较大的数据片长度还可以允许CRC字段被扩展(例如,16位)以处理较大的数据片有效载荷。用于传输单个数据片的物理数位或单位间隔(UI)的数量(例如,用于传输单个位或者物理数位等的时间)可以随着链路宽度而变化。例如,20通道或位链路宽度可以在9.6UI中传输单个192位的数据片,而8通道链路宽度在24个UI中传输相同的数据片,以及其他潜在的示例。链路层信用和协议分组化也可以基于一个数据片。图10示出了用于8通道链路宽度的广义数据片的表示1000。表示1000的每列可以将链路通道符号化,并且每行可以将相应的UI符号化。在一些实现中,单个数据片可以被细分为两个或更多个时隙。每个时隙中都可以包含不同的消息或链路层报头,从而允许在单个数据片中发送与潜在的不同事务对应的多个不同的并且在某些情况下独立的消息。此外,除了其他示例之外,包括在单个数据片的时隙中的多个消息也可以发往不同的目的地节点。例如,图10的示例示出了具有三个时隙的数据片格式。阴影部分可以表示包括在相应时隙中的数据片的部分。在图10的示例中,提供三个时隙,时隙0、时隙1和时隙2。时隙0可以被提供72位的数据片空间,其中22位独占于消息报头字段,50位用于消息有效负载空间。时隙1可以被提供70位的数据片空间,其中20位独占于消息报头字段,50位独占于消息有效载荷空间。可以优化消息报头字段空间的差异以提供某些消息类型将被指定为包括在时隙0中(例如,其中使用更多消息报头编码的情况)。可以提供第三时隙(时隙2),其占用比时隙0和1小得多的空间,在这种情况下使用18比特的数据片空间。可以对时隙2进行优化以处理那些不利用较大的消息有效载荷的消息,例如确认、信用回报等。另外,可以提供浮动有效载荷字段,其允许替代地应用附加的11位来补充时隙0或时隙1的有效载荷字段。继续图10的具体示例,其他字段可以是对数据片是全局的(即,应用于数据片上而不是特定的时隙上)。例如,报头位可以与可用于指定诸如数据片的虚拟网络的信息、识别如何编码数据片以及其他示例的4位数据片控制字段一起提供。此外,可以提供错误控制功能,例如通过16位循环CRC字段以及其他潜在示例。可以定义数据片格式,以便优化链路层上的消息的吞吐量。一些传统协议已经使用了无时隙的、较小的数据片。例如,在QPI中,使用了80位的数据片。虽然较大(例如,192位的数据片)的数据片吞吐量可能较低,但可以通过优化数据片数据的使用来增加消息或分组吞吐量。例如,在QPI的一些实现中,无论消息大小或类型如何,都使用整个80位数据片的空间。通过将较大的数据片细分成预定长度和字段的时隙,即使在有时候一个或多个可用时隙未使用的实例中,也可以优化192数据片长度,从而实现更高的效率。实际上,可以假设链路层业务包括许多不同类型的消息和业务,包括具有变化的报头长度和字段的消息和分组。可以定义在数据片中定义的时隙的相应长度和组织,以便与各种消息的统计或预期频率以及这些消息的需要相对应。例如,可以为每个小的时隙定义两个较大的时隙,以适应使用这些较大消息类型和报头长度的消息传递的预期统计频率。此外,还可以提供灵活性以进一步适应不同的业务,例如通过浮动有效负载字段,如图10的示例中那样。在一些实例中,可以固定数据片格式,包括独占于数据片中的特定时隙的位。在图10的示例中,可以通常为数据片提供“Hdr”字段,并且该字段表示数据片的报头指示。在某些实例中,Hdr字段可以指示数据片是报头数据片(headerflit)还是数据数据片(dataflit)。在数据数据片中,数据片仍然可以保留带时隙,但是省略某些字段的使用或用有效载荷数据替换某些字段的使用。在某些实例中,数据字段可以包括操作码和有效载荷数据。在报头数据片的情况下,可以提供各种报头字段。在图10的示例中,可以为每个时隙提供“Oc”字段,Oc表示操作码。类似地,一个或多个时隙可以具有表示要包括在时隙中的对应分组的消息类型的对应的“msg”字段,前提是该时隙被设计为处理这种分组类型,等等。“DNID”字段可以表示目的地节点ID,“TID”字段可以表示事务或跟踪器ID,“RHTID”字段可以表示请求者节点ID或归属跟踪器ID以及其他可能的字段。此外,一个或多个时隙可以被提供有效载荷字段。此外,除了其他示例之外,可以在数据片中包括CRC字段以提供用于数据片的CRC值。在一些实现中,链路宽度可以在链路的寿命期间变化。例如,物理层可以在链路宽度状态之间转换,例如从完整或原始通道宽度和不同或部分通道宽度,以及到完整或原始通道宽度和不同或部分通道宽度。例如,在一些实现中,可以初始化链路以通过20个通道传输数据。之后,链路可以转换到仅有8个通道被主动使用的部分宽度发送状态,以及许多其它的潜在示例。这样的通道宽度转换可以例如与一个或多个功率控制单元(PCU)一起管理的功率管理任务相结合使用,以及其他示例。如上所述,链路宽度可以影响数据片吞吐率。图11是通过8通道链路发送的示例192位数据片的表示,导致在24UI处的数据片吞吐量。此外,如图11的示例中所示,在某些实例中,可以无序发送数据片的位,例如,可以在传输中较早地发送更多的时间敏感字段(例如,数据片类型字段(例如,数据或报头数据片),操作码等),保存或促进特定的错误检测或在数据片中体现的其他功能,以及其它示例。例如,在图11的示例中,在第一个UI(即,UI0)传输期间,在通道L7至L0上并行地发送位191,167,143,119,95,71,47和23,而位168,144,120,96,72,48,24和0在数据片传输的第24个(或最后)UI(即UI23)中发送。应当理解,在其他实现和示例中可以使用其他排序方案、数据片长度、通道宽度等。在一些实例中,数据片的长度可以是活动通道数量的倍数。在这种实例中,数据片可以均匀地在所有活动通道上发送,并且数据片的传输可以基本上同时以干净(即,不重叠)的边界终止。例如,如图8的表示所示,可以认为以4比特或“半字节”的连续分组来发送数据片的比特。在这个例子中,一个192位的数据片将通过8通道链路进行发送。由于192是8的倍数,所以可以在24个UI中通过8通道链路干净地传输整个数据片。在其他实例中,数据片宽度可能不是活动通道数量的倍数。例如,图9示出了通过20个通道传输的示例192位的另一表示。由于192不能被20除尽,所以全数据片的传输将需要非整数个间隔(例如,9.6UI)。在这种情况下,不是浪费在第十个传送UI传输期间未使用的“额外”通道,而是可以用前一个数据片的最后的位传输第二重叠数据片。在某些实现中,数据片的这种重叠或绞合可能导致锯齿状的边界和数据片位无序发送。用于传输的模式可以被配置为允许数据片更多的时间敏感字段在数据片中被更早地传输,保持错误检测和校正,以及其他考虑。可以在物理层和链路层中的一个或两个中提供逻辑,以根据这样的模式传输数据片位,并且基于当前链路宽度在模式之间动态地改变。可以提供进一步的逻辑来重新排序和重新构建来自这样的绞合或有序比特流的数据片,以及其他示例。在一些实现中,数据片可以被表征为报头数据片(例如,承载分组报头数据)或数据数据片(例如,承载分组有效载荷数据)。返回到图10,可以定义包括三(3)个不同时隙(例如,0,1和2)的数据片格式,允许在单个数据片(例如,每个时隙中的一个报头)中传送多达三个报头。在图10的示例中,提供三个时隙,时隙0,1和2。时隙0可以被提供72位的数据片空间,其中22位专用于消息报头字段,50位专用于消息有效负载空间。时隙1可以被提供70位的数据片空间,其中20位专用于消息报头字段,50位专用于消息有效载荷空间。可以优化消息报头字段空间的差异以提供某些消息类型将被指定为包括在时隙0中(例如,其中使用更多消息报头编码的情况)。可以提供第三时隙(时隙2),其占用比时隙0和1小得多的空间,在这种情况下使用18位的数据片空间。可以对时隙2进行优化以处理那些不利用较大的消息有效载荷的消息,例如确认、信用回报等。另外,可以提供浮动有效载荷字段,其允许替代地应用附加的11位来补充时隙0或时隙1的有效载荷字段。在一些实现中,通过允许字段在两个时隙之间浮动,可以根据需要为某些消息提供额外的比特,同时仍然保持在预定义的数据片长度(例如,192位)内并且最大化带宽的利用。转到图19的示例,在8通道数据链路上示出了示例192位数据片的两个实例1905,1910。在一个实例中,数据片(例如,1905)可以包括三个时隙,时隙0,1和2。时隙0和1中的每个可以包括50比特有效载荷字段。可以提供浮动字段以交替地将时隙0或时隙1的有效载荷字段延伸浮动字段的字段长度(例如,11位)。使用浮动字段可以进一步扩展通过定义的多时隙数据片格式提供的效率增益。数据片中的时隙的大小以及可以放置在每个时隙中的消息的类型可以潜在地提供增加的带宽,即使具有降低的数据片速率。在图10的具体示例中,可以优化可以使用时隙1和2的消息,减少要为对这些时隙操作码编码所留出的比特数。当具有时隙0可以提供的更多比特的报头进入链路层时,可以提供时隙算法以允许其接管时隙1有效载荷比特以用于附加空间。也可以提供特殊控制(例如LLCTRL)数据片,以满足他们需要的所有三个时隙位值。也可能存在时隙算法,以允许在链路部分占用的情况下使用各个时隙,而其他时隙不携带信息。在一个实施例中,链路层可另外定义可用于例如调试消息和其他用途的特殊控制数据片。在一个示例中,当设置了启用调试控制字段时,LLCTRL-DEBUG数据片可以由链路层发送。当该位未设置时,LLCTRL-DEBUG数据片可能不会在链路上发送。调试分组对于暴露由HPI连接的设备的内部状态可能非常重要,否则无法访问。调试报文的内容也可以是具体的实现。内容可以包括比如分支信息(源和目标IP)、时间戳、内部事件触发的指示等事项。暴露的数据可以是例如监视诸如用于后处理和故障分析的逻辑分析器的设备。图12中示出了调试消息类型的示例数据片编码。在一些实现中,可以利用诸如HPI的通用I/O互连(GPIO)体系结构的原理和协议来实现缓冲存储器接口和相应的协议。例如,上面概述的物理层和链路层定义也可以在缓冲存储器协议中实现。实际上,用于支持GPIO协议的物理层和链路层的逻辑可以在支持缓冲存储器协议的接口中重用。缓冲存储器协议还可以共享消息类,诸如请求、响应和回写消息类,以及其他示例。虽然缓冲存储器协议消息中的操作码值可以与HPI(或另一种GPIO协议)不同的解释,但是在缓冲存储器协议和构建它的GPIO互连中都可以使用相同的通用分组格式。实际上,附加的分组和数据片字段对于缓冲存储器协议和GPIO互连协议都是唯一的。在一些实现中,利用HPI的物理层和链路层的缓冲存储器协议可以是事务性接口和协议。这可以允许将数据无序返回到一系列接收到的请求(例如,读取请求)。缓冲存储器接口可用于在一些实现中将缓冲器芯片与CPU互连。在一个实现中,虽然一些协议在缓冲存储器总线上发送诸如激活、读取、写入和转储清除(flush)的DRAM命令,但是在本文讨论的缓冲存储器协议的一些实现中,读取或写入命令可以简单地用地址发送。然后,缓冲器芯片可以对特定的级别和存储体进行解码,并将请求分解为DRAM命令。也可以支持猜测(speculative)读取和需求读取。转到图13,示出了简化框图1300,其示出了包括通过HPI兼容链路互连的CPU设备1305,1310的计算系统的示例拓扑。每个CPU1305,1310同样可以使用对应的缓冲存储器协议链路(“MemLink”)连接到一个或多个相应的缓冲器设备1315a-1。如上所述,在一些实现中,缓冲存储器协议互连可基于GPIO协议,因为缓冲存储器协议的物理层和链路层基于GPIO协议的相同物理层和链路层定义(例如,HPI)。尽管图13中未示出,CPU1305,1310可以使用GPIO协议进一步连接到一个或多个下游设备。如图13的示例中进一步示出的,缓冲器设备1315a-1可以连接到诸如双列直插存储器模块(DIMM)设备的存储器设备。对应于每个缓冲器设备的存储器可以被认为是在缓冲器设备连接到的CPU(例如,1305,1301)本地。但是,其他设备(包括其他CPU)可以使用符合GPIO协议的链路通过其他插槽访问存储器。在一些实现中,运行缓冲存储器协议的端口可以仅支持与存储器通信的命令,并且仅支持缓冲存储器协议(即,不支持GPIO协议和缓冲存储器协议)。此外,在一些实现中,GPIO互连协议可以支持路由并指示诸如请求和目的地节点标识符之类的信息(例如,在其分组中)。另一方面,缓冲存储器协议可以是不利用路由的点对点接口。因此,GPIO协议中使用的一些字段可能在使用缓冲存储器接口发送的分组中被省去(dispensed)。相反,除了其他示例之外,可以指定用于携带地址解码信息主设备到高速缓冲存储器的字段。在进一步的实现中,缓冲器设备1315a-1可以支持具有一定量的快速存储器(例如,DRAM)的两级存储器拓扑,其用作较大、较慢的存储器(例如,非易失性存储器)的高速缓冲存储器。在一个这样的实现中,除了其他示例之外,缓冲器设备1315a-1中的一个或多个可以将DDR用作较近的快速存储器,并且将事务DDRDIMM作为较大的“远”存储器。事务性DIMM可以使用协议(例如,DDR-Transactional(DDR-T))来使用事务性命令与易失性存储器单列直插存储器模块(SIMM)进行通信。转到图14,呈现了简化的框图1400,其示出了连接到近存储器模块和远存储器模块(例如,1405,1410)的缓冲器芯片1315的更详细的表示。如上面的示例所述,缓冲器芯片1315可以通过使用定义的缓冲存储器协议的缓冲存储器协议互连链路1415通信地耦合到CPU设备或其他处理设备1305。缓冲器芯片1315可以包括执行附加功能的逻辑。例如,缓冲器芯片1315的实现可以包括存储器控制器1420、调度器1425、流控制逻辑1430和错误检测逻辑1435。可以使用硬件电路、固件和/或软件来实现逻辑。在一些实现中,由存储器控制器控制的系统存储器可以在双层存储器(2LM)系统存储器方案中实现,并且包括近存储器1405和远存储器1410。例如,存储器拓扑可以使用相对少量的快速存储器(例如,DRAM或嵌入式DRAM)作为用于更大、更慢的存储器的高速缓冲存储器(例如,被实现为非易失性存储器,例如NAND闪存),其更密集并且可以消耗比DRAM更少的功率。这样的系统存储器的实现方式可以实现比传统拓扑结构相对更多的存储和更少的功耗,例如,由于对远存储器1410使用更致密、更少功耗的技术。使用较慢相变技术的惩罚是通过使用近存储器1405中的DRAM层作为远存储器1415的高速缓冲存储器层来至少略微进行补偿。此外,在一些实现方式中,如果更加频繁使用的信息保存在近存储器1405DRAM中,则也可以改善达到这种信息的访问时间。在一个示例中,近存储器1405可以充当以2LM直接映射到远存储器1410的高速缓冲存储器。在一个实现中,高速缓冲存储器标签可以存储在近存储器DRAM数据的纠错码(ECC)位中。此外,在一个实施例中,近存储器1405和远存储器1410都可以出现在连接到缓冲器芯片1315的双数据速率4(DDR4)总线上。近存储器1405可以运行标准DDR4协议,并且实现为一个或多个DIMM的远存储器1410可以运行基于DDR的协议。近存储器1405安装在所有DDR4总线上,远存储器1410只能安装在一个或多个DDR4总线上。多个DRAM总线可以由一个存储器控制器控制。近存储器和远存储器可以在相同或不同的DRAM总线上。在一个实现中,存储器缓冲器芯片1315上的所有DRAM总线可以在相同的存储器控制器之后。这可以通常实现为两个或更多个总线。此外,近存储器1405将远存储器1410高速缓存在同一缓冲器芯片1315之后。如所指出的,在一些实现中,近存储器1405可以是直接映射高速缓冲存储器。在直接映射高速缓存存储器的情况下,一组系统存储器地址(在远存储器中)映射到近存储器中的单个条目(该位置可从系统存储器地址本身确定)。因此,在某种意义上,多于一个的系统存储器地址将竞争使用相同的近存储器条目。在操作中,对于任何读取或写入请求,存储器控制器1420可执行读入近存储器(例如,1405),以查看该请求所属的高速缓冲存储器行是否被高速缓存在那里。如果是这样(即,近存储器高速缓存“命中”),存储器控制器1420执行所请求的操作,并将高速缓冲存储器行保持在近存储器1405中。在读取的情况下,将所请求的高速缓冲存储器行的副本发送到请求者和高速缓冲存储器行不会在近存储器被重写(即其保存在那里)。在写入的情况下,在请求中接收到的高速缓冲存储器行的新数据被重写近存储器中的旧高速缓冲存储器行。如果在近存储器中没有找到所请求的高速缓冲存储器行(即,近存储器高速缓冲存储器“未命中(miss)”),则在读取的情况下,存储器控制器从远存储器(例如,1410)读取高速缓冲存储器行,将高速缓冲存储器行的副本发送到请求者,并将高速缓冲存储器行写入近存储器。在写入的情况下,当在近存储器中没有找到所请求的高速缓冲存储器行时,存储器控制器简单地将与请求一起接收的高速缓冲存储器行写入远存储器。近存储器中没有放置副本。因此,如果在近存储器中没有“命中”,则读取将驱逐近存储器中的高速缓冲存储器行,但写入将不会驱逐近存储器中的高速缓冲存储器行。当有可能系统的一个高速缓冲存储器内的可写高速缓冲存储器行(例如,处于修改(“M”)或独占(“E”)状态的高速缓冲存储器行)的副本可能不存在近存储器时,系统被称为以“非包含(non-inclusive)”模式运行。这里,即使对于处理器高速缓冲存储器中的处于M或E状态的高速缓冲存储器行,由于不知道高速缓冲存储器行的副本是否驻留在近存储器中,所以“非包含”模式要求对系统存储器的任何写操作读入近存储器。这种知识的缺乏可能会导致系统效率低下。称为“包含(inclusive)”的另一操作模式可以保证任何处理器高速缓冲存储器级别中的可写高速缓冲存储器行将被保存在近存储器中。这意味着,例如,如果M或E高速缓冲存储器行被高速缓存在处理器中,则相同系统存储器地址的高速缓冲存储器行的副本或旧版本也保存在近存储器中。因此,如果处理器高速缓冲存储器中的M/E高速缓冲存储器行被写回,则写回的高速缓冲存储器行由存储器控制器直接写入到近存储器中。换句话说,不需要预先执行接近存储器的读取。然而,高速缓冲存储器行可以被并且将要被从近存储器中逐出。例如,如果存储器控制器接收到对用于具有与系统级高速缓冲存储器中的处于M/E状态的近存储器中的高速缓冲存储器行的地址不同的系统存储器地址的高速缓冲存储器行的读取请求,但是仍然映射到近存储器中的同一位置,则会导致近存储器高速缓冲存储器未命中。近存储器中的高速缓冲存储器行将从近存储器中被逐出,并且如果该行在近存储器为“脏”则将其写回远存储器。然后可以从远存储器读取所请求的高速缓冲存储器行并转发给请求者。所请求的高速缓冲存储器行也将被写入到如上所述的近存储器中(在近存储器上读未命中将逐出近存储器高速缓冲存储器行)。因此,在系统级高速缓冲存储器中具有处于M或E状态的相关高速缓冲存储器行的近存储器中的高速缓冲存储器行可以违反对系统的“包含”写保证而从近存储器中被逐出。因此,主机控制器(例如,1440)和/或存储器控制器(例如,1420)可以被提供有解决该问题的逻辑。例如,主机控制器中的一致性代理可以跟踪近存储器冲突,并确保任何CPU高速缓冲存储器的处于E或M状态中所包含的任何行都驻留在2LM高速缓冲存储器中。在CPU高速缓冲存储器中还可以跟踪行是否与“包含”或“非包含”模式相结合地操作。在一些实现方式中,除了其它示例之外,可以使用在2013年12月27日提交并且通过引用并入本文的题为“MethodandApparatusforEliminatingTagReadsforWritesinTwo-LevelMemory”的第14/142,045号美国专利申请论述的原理和解决方案。在一些实现中,存储器控制器1420可以包括将请求转换成其存储器设备的存储器特定协议(例如,DDR4)的逻辑。存储器控制器1420可以从使用链路1415与缓冲器芯片1315通信的CPU1305(或另一主机)的主机控制器逻辑1440抽象出这些存储器特定协议的细节。调度器1425可以包括重新排序和仲裁对请求的响应以达到更高的性能的逻辑。缓冲器芯片1315可另外提供诸如流量控制和错误检测的特征。在一些实现方式中,流控制逻辑1430可以在调度器1425中体现或以其他方式与调度器1425互操作以确保缓冲器芯片1315的更高效率和更高性能。错误检测逻辑1435可以包括支持纠错码(ECC)检测方案的逻辑以及启动校正或处理检测到的错误的逻辑。目录状态管理逻辑1436可以维护存储器中每一行的目录状态。响应一些事务,相应行的目录状态可以改变。目录状态管理逻辑1436可以更新识别存储器中每行的当前目录状态的记录。在某些情况下,目录状态管理逻辑1436可以从归属代理(例如,在主机1305处)接收数据,以指示对存储器行的目录状态的改变。在其他实例中,目录状态管理逻辑1436可以基于相应请求的性质而改变包括逻辑以自动更新目录状态(即,没有指示改变的主机)。这可以具有节省带宽以及其他示例优点,因为用于指示目录状态改变的至少一部分的带宽可以被保留,目录状态管理逻辑1436允许这些目录状态改变的一部分直接在存储器控制器处被识别(例如,1315处的1420)。在一些实现方式中,CPU1305可以包括可以将CPU(或主机)地址转换为存储器地址的主机控制器逻辑1440,包括跨通道和插槽的排列,以及其它功能。主机1305可以包括可以允许多个进程在主机1305上并行执行的多个处理核1445a-d。另外,主机可以使用一个或多个高速缓冲存储器来从存储器缓存先前访问的行(例如,1405,1410),使得主机1305可以重新访问这些行而不从缓冲器芯片1315重新请求数据。这可以帮助解决缓冲存储器体系结构中通过缓冲器芯片1315引入的较高延迟。高速缓冲存储器可以包括本地高速缓冲存储器和中间高速缓冲存储器,以及最后一级高速缓冲存储器(LLC)1450a-d。高速缓冲存储器,包括LLC,可以在多个核1445a-d之间共享。实际上,使用一个或多个处理核的主机可以使用各种高速缓存体系结构。如上所述,缓冲存储器协议的链路层可以基于GPIO协议的链路层。例如,可以在缓冲存储器协议中使用HPI协议的192比特,3时隙数据片(例如,在图10中描述和示出)。缓冲存储器协议中的分组可以体现整个命令。分组可以被实现为一个或多个数据片(flit)。图15A-15C可以表示缓冲存储器协议中的数据片的实现。在一些实现中,读取数据可以通过有报头和无报头存储器数据(MemData)分组的组合从缓冲器设备发回到主机。整个高速缓冲存储器行可以以三个无报头数据片传输(而不是五个,对于有报头的数据片)。因此,无报头分组可以在接口的最受限制的部分上提供更高的吞吐量。为了适应三个数据片,无报头分组去除了一些字段,并对其值进行了假设。所做的假设对于大多数而非全部读返回可能是正确的。如果任何假设都不是真的,则要使用包含所有字段的有报头分组。在一些实现中,有报头分组可以开始读返回序列,以允许早期识别跟踪器标识符(例如,HTID,RTID等),以用于将读返回映射到事务缓冲存储器协议中的读取请求。在一些实现中,无报头分组可以包含表1中概述的信息:表1:无报头分组字段另外,图15A-15C示出了可以用于在读返回中发送整个高速缓冲存储器行的三个数据片的序列(例如,数据片0(在图15A中),数据片1(在图15B中),以及数据片2(在图15C中))。表2提供了在无报头分组中使用的三个数据片的示例的摘要:表2:无报头分组数据片内容数据数据片0来自高速缓冲存储器行的前32字节的数据数据数据片1前32字节的其余部分,加上第二32字节的第一部分数据数据片2第二32字节的其余部分可以设置HIB位以指示分组是有报头还是无报头。可以将HIB设置为仅对于报头数据片之后的数据数据片指示无报头分组。这允许某些其他分组在分组中间交错。当交错的分组完成时,原始有报头分组的数据部分可以在数据片中以HIB=0发送。该技术也可用于通过插入空数据片来延迟数据分组。在一些实现中,当通常需要报头时,无报头分组的开始由HIB位为0来指示。所有其他分组(包括空数据片)可能包含HIB位被置位的报头。如上所述,有报头分组可以是总共五个长度的数据片,并且可以包括一个报头数据片和4个数据数据片。为了减少空闲延迟,有报头数据片可能会发送数据数据片1两次。第一次只发送来自前32个字节的数据,被称为数据片la。这允许该数据片在从存储器设备可获得数据的第二32字节之前发送。结果是数据的关键的32字节块在空闲情况下较早到达主机。数据片1可以再次发送,此次完成。它将包含前32字节数据部分的重复,加上第二32字节部分。表3描述了一个有报头分组的五个数据片:表3:有报头分组在一些实现中,有报头的MemData分组可能不被删除,并且随后是数据数据片。在知道数据也可以发送之前,不发送报头。在发送报头之前,完整的高速缓冲存储器行可能不会在缓冲器中累积。在一些系统中,高速缓冲存储器行的目录状态可以被定义在包括在对应的高速缓冲存储器行本身中的目录状态位中。在一个示例中,目录状态位可以包括在高速缓冲存储器行的ECC位中。因此,在一些实现中,对目录状态的更新可以涉及重写整个高速缓冲存储器行(例如,因为必须基于目录状态改变来更新ECC)。如果目录状态没有改变,则高速缓冲存储器行将不被重写。对于读取和无效命令,返回到主机的目录位是更新前的原始目录信息。所有随后的读取都将返回新的状态,即使它们在数据被写回存储器之前发生(即,具有更新的目录的高速缓冲存储器行全局可见)。参考图16,示出了简化的流程图1600,其示出涉及主机1305和存储器控制器1420的示例事务。所示的事务可以至少部分地通过例如上文介绍的缓冲存储器互连在主机1305和缓冲器芯片1315之间实施。在图16的示例中,与本地一致性代理1605(例如,归属代理)相关联的处理器可以尝试在系统存储器(例如,远存储器1410)中继续执行特定高速缓冲存储器行的全高速缓冲存储器行写入。本地代理1605可以使用InvItoE请求1610发送获得高速缓冲存储器行的独占所有权的请求。在该示例中,本地代理1605对于行具有无效(I)状态的访问,因为它是本地的并且未被目录覆盖(cover)。此外,InvItoE请求1610可以是在GPIO互连协议内定义的请求,诸如上述的。InvItoE请求1610可以由归属代理1615接收。作为响应,归属代理1615可以生成探听以发送到其他一致性代理(例如,1620)。例如,归属代理1615可以生成探听无效SnpInvItoE1625以发送给一个或多个远程一致性代理(例如,1620)以确定远程高速缓冲存储器的高速缓冲存储器状态。探听无效1625可以作为InvItoE请求1610的结果而被发送,并且可能导致接收一致性代理1620处的高速缓冲存储器行的副本无效。探听无效还可能导致高速缓冲存储器行的任何修改的或“脏”的副本从保持有脏副本的高速缓冲存储器中转储清除(flush)到系统存储器。在某些情况下,首先会发生将脏的高速缓冲存储器行转储清除到近存储器,以便归属代理1615有机会确定如何路由数据。此外,响应于接收到InvItoE请求1605,归属代理1615可以向存储器控制器1420发送请求(例如,由缓冲存储器接口定义)以适应一致性代理1605获得高速缓冲存储器行的独占副本的请求。在这种情况下,请求可以是存储器无效请求1625(MemlnvXtoI)。响应于MemlnvXtoI请求1625,不会返回读取的数据。存储器控制器1420响应于MemlnvXtoI请求1625而读取(在1630处)高速缓冲存储器行,并且如果高速缓冲存储器行尚未处于无效(“I”)状态,则存储器控制器重写高速缓冲存储器行,使得其目录状态被设置为I。在2LM系统中,如图16的示例中那样,存储器控制器可以首先检查对应的近存储器1405以寻找作为MemlnvXtoI请求的对象的高速缓冲存储器行。在该示例中,为所请求的近存储器地址(例如,在1635处)返回“未命中”。另外,在地址处找到的其他高速缓冲存储器行可以是修改的副本。因此,存储器控制器1420将修改的其它高速缓冲存储器行转储清除到远存储器1410(通过写入1640)。响应于未命中,存储器控制器1420然后可以从远存储器1410读取(在1645处)(无效请求1625的)特定高速缓冲存储器行,以便用特定高速缓冲存储器行重写(在1650处)相应的近存储器地址。存储器控制器1420然后可以响应于存储器无效请求1625而发送完成(CmpU)1655。完成可以是要以正向响应排序的无序完成(CmpU)或有序完成(CmpO)。在该示例中,无序完成(CmpU)(例如,1655)在这种情况下可以用作存储器控制器1420和归属代理1615之间的不排序要求。对于在归属代理1615和本地代理1605之间的完成,可以使用有序完成(例如,1660),使得该完成被排序在到相同的高速缓冲存储器行地址的任何稍后的转发消息的前面。完成1655的接收可以指示目录状态已经改变。发送到请求一致性代理1605的完成(CmpO)1660向一致性代理1605指示所请求的高速缓冲存储器行的独占副本已经被授予本地一致性代理1605(例如,将目录状态从I转换到E)。通过独占访问,一致性代理1605接下来可以继续所意图的全高速缓冲存储器行写入。写入使行转换到修改状态,并且作为响应可以执行相应的回写。例如,在行被修改之后,一致性代理1605可以发送WbMtoI请求1665以使处于修改的M状态的高速缓冲存储器行被回写到近存储器(在1670处)并使高速缓冲存储器中的行无效,并且改变目录状态为无效(I)。在17A-17B的简化流程图中示出的替代实现中,可以定义特殊命令以在写入之前对将高速缓冲存储器行的独占副本向一致性代理的授予进行优化。例如,可以将MemInvItoX命令1705定义为与全高速缓冲存储器行写入相关联地发送。MemInvItoX命令1705可以是根据缓冲存储器互连协议定义的存储器无效命令,并且可以直接涉及2LM系统存储器拓扑。MemInvItoX命令1705可以是根据缓冲存储器互连协议定义的多个存储器无效命令之一。与其他存储器无效命令(例如,MemlnvXtoI)不同,目录不会被MemInvItoX命令1705本身更新(即,到I)。可以响应于使用InvItoE请求1610获得高速缓冲存储器行的独占所有权的请求来发送MemInvItoX命令1705。归属代理可以探听其他一致性代理(在1625处)以确定所请求的行的目录状态(响应于获得独占所有权的请求)。此外,MemInvItoX命令1705可以导致近存储器1405被读取(在1710处)并且被检查以寻找所需行的副本(即,将被重写的行)的存在。命中可能导致目录状态从如保持在近存储器副本中的读取1710返回。对于未命中,可以为近存储器副本假设保守的人工目录状态结果(因为副本和实际目录状态值在近存储器中不可用)。例如,对于行,对于在其对应的近存储器中的行的未命中的情况,可以假设任何(A)状态。假设的目录状态可以保守地选择,使得它不会引入由于不正确的目录状态假设导致的一致性问题或错误。这可以进一步允许远存储器读取仅对于目录状态保存。在MemInvItoX事务中,如果对应的近存储器读取1710导致在近存储器1405的地址处的“未命中”,并且该地址具有处于脏状态的另一行的副本(如在图17A的示例中那样),MemInvItoX命令1705可以在对应的全行写入之前使另一行的数据被转储清除或写入到远存储器(在1715处)。对MemInvItoX请求1705的完成(例如,1720,1725)可以在任何修改的数据在1715完成转储清除到远存储器1410之前被发送。实际上,不是另外读取远存储器1410以将所请求的高速缓冲存储器行从远存储器拉出、然后用所需高速缓冲存储器行的数据写入近存储器地址,而是在检查在其近存储器地址处是否找到所需的高速缓冲存储器行之后,立即将完成发送到MemInvItoX请求1705,并且新的高速缓冲存储器行数据可以写入近存储器地址(在1740处)(例如,因为一致性代理1605在近存储器中按照“包含”来跟踪该行)。实际上,由于MemInvItoX请求1705是与执行全高速缓冲存储器行写入的请求(例如,1730)相关联地被发送,所以响应于读取未命中而从远存储器中检索所需行的即将过时的副本且将这个即将被重写的数据写入近存储器可以跳过,有利于保持远存储器的约束带宽。此外,在MemInvItoX请求1705中,与远存储器1410的唯一交互可以是在近存储器未命中的情况下写入备用高速缓冲存储器行的任何脏数据(例如1715)。脏数据的转储清除1715可以与将完成1720发送到MemInvItoX请求1705同时执行。因此,对MemInvItoX请求1705的完成响应(例如,1720,1725)可以授予与MemInvItoX请求1705相关联的特定高速缓冲存储器行的独占副本,以允许主机接下来继续用特定高速缓冲存储器行(例如,通过WbMtoI或包含MemWr(inclusiveMemWr)请求,在1735发起)重写相应的近存储器地址中的数据(在1735,1740处)。如图17A的示例中所阐述的那样,响应于MemInvItoX请求1705,存储器控制器读取近存储器,以确定是否存在期望的高速缓冲存储器行的副本。MemInvItoX请求1705不会导致在近存储器中对目录位进行更新,不管命中或未命中。在近存储器未命中的情况下,不会执行远存储器读取,而如果近存储器地址包含修改的或脏的数据,则将该数据写入远存储器,因为稍后的对该组内的不同地址的写入可能会重写(overwrite)该数据。在读取1710产生所需高速缓冲存储器行的近存储器命中的情况下,对于近存储器或远存储器(在全高速缓冲存储器行写入之前)不做任何改变。例如,如图17B所示,MemInvItoX请求1705可以提示在近存储器1405中的对应地址的读取1710。在该示例中,读取1710产生近存储器命中并返回“真实”目录状态。事务如图17A所示进行以完成(例如1720,1725)。然而,在近存储器命中的情况下,即使当数据的副本被修改(因为近存储器即将被更新)时,也没有数据从近存储器写入远存储器。类似的流程(如图17B所示)可以导致当MemInvItoX请求1705产生一个导致未命中但是具有“干净的”数据(例如,在保守的目录状态中,因为近存储器位置上的另一高速缓冲存储器行的副本与远存储器1410中的高速缓冲存储器行的副本匹配)的读取1710的情况。在图17B的示例中,到InvItoE请求1730的完成(例如,CmpO1725)对请求者授予行的独占所有权,允许执行全行写入(例如,在1735,1740处)。可以使用WbMtoI请求1735执行全行写入,这使得目录状态在写入1740之后返回到无效(I)状态(即,M→I)。HPI和相关联的缓冲存储器访问协议可并入到任意各种计算设备和系统中,包括大型机,服务器系统,个人计算机,移动计算机(例如平板电脑,智能电话,个人数字系统等),智能电器,游戏或娱乐控制台和机顶盒,以及其它示例。例如,参照图18,示出了根据本发明实施例的第二系统1800的框图。如图18所示,多处理器系统1800是点到点互连系统,并且包括经由点对点互连1850耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个可以是处理器的某个版本。在一个实施例中,1852和1854是串行点对点一致性互连结构的一部分,例如高性能体系结构。结果,本发明可以在QPI体系结构内实现。尽管仅以两个处理器1870,1880示出,但是应当理解,本发明的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定的处理器中。处理器1870和1880被示为分别包括集成存储器控制器单元1872和1882。处理器1870还包括作为其总线控制器单元的一部分的点对点(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。处理器1870,1880可以使用P-P接口电路1878,1888经由点对点(P-P)接口1850来交换信息。如图18所示,FMC1872和1882将处理器耦合到相应的存储器,即存储器1832和存储器1834,存储器1832和存储器1834可以是主存储器的向各个处理器本地地附接的部分。处理器1870,1880各自使用点对点接口电路1876,1894,1886,1898通过独立P-P接口1852,1854与芯片组1890交换信息。芯片组1890还经由接口电路1892沿着高性能图形互连1839与高性能图形电路1838交换信息。共享高速缓冲存储器(未示出)可以包括在任一处理器中或两个处理器外部;但是通过P-P互连与处理器连接,使得如果处理器被置于低功率模式,则任一个或两个处理器的本地高速缓冲存储器信息可以被存储在共享高速缓冲存储器中。芯片组1890可以经由接口1896耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(PCI)总线或例如PCIExpress总线或另一第三代I/O互连总线等的总线,但是本发明的范围不限于此。如图18所示,各种I/O设备1814连同总线桥1818耦合到第一总线1816,总线桥1818将第一总线1816耦合到第二总线1820。在一个实施例中,第二总线1820包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1820,包括例如键盘和/或鼠标1822、通信设备1827以及通常包括指令/代码和数据1830的诸如磁盘驱动器或其他大容量存储设备的存储单元1828。此外,示出了耦合到第二总线1820的音频I/O1824。注意,其他体系结构是可能的,其中包括的组件和互连体系结构有所变化。例如,替代于图18的点对点体系结构,系统可以实现多点总线或其他此类体系结构。现在参考图19,示出了多核处理器的实施例的框图。如图19的实施例所示,处理器1900包括多个域。具体地,核心域1930包括多个核1930A-1930N,图形域1960包括具有媒体引擎1965的一个或多个图形引擎和系统代理域1910。在各种实施例中,系统代理域1910处理功率控制事件和功率管理,使得域1930和1960的各个单元(例如,核和/或图形引擎)根据在给定单元中发生的活动(或不活动)独立可控以在适当的功率模式/水平(例如,活动,涡轮增压,睡眠,休眠,深度睡眠或其他高级配置电源接口,如状态)动态地操作。域1930和1960中的每一个可以在不同的电压和/或功率下工作,此外,域内的各个单元均潜在地以独立的频率和电压工作。注意,虽然仅以三个域示出,但要理解本发明的范围在这方面不受限制,并且在其他实施例中可能存在另外的域。如图所示,除了各种执行单元和附加处理元件之外,每个核1930还包括低级高速缓冲存储器。这里,各个核彼此耦合、并且与由最后一级高速缓冲存储器(LLC)1940A-1940N的多个单元或片段形成的共享高速缓冲存储器耦合;这些LLC通常包括存储和缓存控制器功能,并在核之间共享,也可能在图形引擎之间共享。如所看到的,环互连1950将这些核耦合在一起,并且经由多个环形停止器1952A-1952N提供核心域1930、图形域1960和系统代理电路1910之间的互连,每个环形停止器在核与LLC片段之间的耦合处。如图19所示,互连1950用于携带各种信息,包括地址信息、数据信息、确认信息和探听/无效信息。尽管示出了环形互连,但是可以使用任何已知的管芯上互连或结构。作为说明性示例,上面讨论的一些结构(例如,别的管芯上互连、片上系统结构(OSF)、高级微控制器总线体系结构(AMBA)互连、多维网格结构或其他已知的互连体系结构)可以以类似的方式使用。如进一步描绘的,系统代理域1910包括显示引擎1912,其用于提供对相关联显示器的控制和接口。系统代理域1910可以包括其他单元,例如:集成存储器控制器1920,其提供到系统存储器(例如,使用多个DFMM实现的DRAM)的接口;执行存储器一致性操作的一致性逻辑1922。可以存在多个接口以实现处理器与其它电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1916接口以及一个或多个PCIeTM接口1914。显示引擎和这些接口通常经由PCIeTM桥接器1918耦合到存储器。另外,为了提供在其他代理(诸如另外的处理器)或其他电路之间的通信,可以提供一个或多个其他接口。虽然已经相对于有限数量的实施例描述了本发明,但是本领域技术人员将意识到从其中得到的许多修改和变化。所附权利要求旨在涵盖落入本发明的真实精神和范围内的所有这些修改和变化。设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,硬件可以使用硬件描述语言(HDL)或别的功能描述语言来表示。此外,具有逻辑和/或晶体管栅极的电路级模型可以在设计过程的某些阶段产生。此外,大多数设计在某些阶段达到数据级,其表示硬件模型中各种设备的物理放置。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在一些实现方式中,这样的数据可以以诸如图形数据系统II(GDSII)、开放工艺系统交换标准(OASIS)或类似格式的数据库文件格式来存储。在一些实现方式中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括其他示例中的寄存器传送语言(RTL)文件。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),解析HDL对象以获得所描述的硬件的属性,以及根据对象确定物理电路和/或片上布局。设计工具的输出可用于制造物理设备。例如,设计工具可以确定来自HDL对象的各种硬件和/或固件元件的配置,例如总线宽度,寄存器(包括尺寸和类型),存储器块,物理链路路径,结构拓扑以及可被实施从而实现HDL对象中建模的系统的其他属性。设计工具可以包括用于确定片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在某些情况下,HDL对象可以用作开发可以被制造设备用来制造所描述的硬件的模型和设计文件的基础。实际上,HDL对象本身可以被提供作为对制造系统的软件的输入以得到所描述的硬件。在该设计的任何表达方式中,数据可以以任何形式的机器可读介质存储。存储器或诸如盘的磁存储器或光学存储器可以是机器可读介质,用于存储通过经调制或以其他方式生成以用于传送此类信息的光或电波发送的信息。当发送指示了或携带了代码或设计的电载波时,如果进行电信号的复制、缓冲或再传输,则进行新的拷贝。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的物件(诸如编码到载波中的信息)至少暂时存储在有形的机器可读介质上。本文所用的“模块”是指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件诸如微控制器,其与用于存储适于由微控制器执行的代码的非暂时介质相关联。因此,在一个实施例中,对“模块”的提及是指硬件,其被特别配置为辨识和/或执行要在非暂时介质上保持的代码。此外,在另一个实施例中,对“模块”的使用是指包括代码的非暂时介质,其特别适于由微控制器执行以执行预定操作。并且可以推断,在另一个实施例中,术语“模块”(在该示例中)可以指微控制器和非暂时介质的组合。时常,被描绘为分离的模块边界通常会有变化并可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括硬件,诸如晶体管、寄存器或诸如可编程逻辑器件的其它硬件。在一个实施例中,短语“被配置用于”是指安排,组合,制造,提供销售,导入和/或设计装置、硬件、逻辑或元件以执行指定或确定的任务。在该示例中,如果装置或其元件被设计、耦合和/或互连以执行指定的任务,那么该装置或其元件即使未运行仍然“被配置用于”执行所述指定的任务。作为纯粹的说明性示例,逻辑门可以在运行期间提供0或1。但是,“被配置用于”向时钟提供使能信号的逻辑门不包括每个可能提供1或0的潜在逻辑门。相反,逻辑门是以以下某种方式耦合的逻辑门:在运行期间,1或0的输出用于启用时钟。再次注意,术语“被配置用于”的使用不要求操作,而是侧重于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件被设计成当装置、硬件和/或元件正在操作时执行特定的任务。此外,在一个实施例中,使用“用于(to)”、“能够/给”或“可操作用于”的短语是指以这样的方式设计的一些装置、逻辑、硬件和/或元件:使得能够以指定的方式使用该装置、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中使用、能够或可操作用于指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有正在操作,而是以这样的方式设计,以使得能够以指定的方式使用装置。如本文所使用的“值”包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也称为“l和0”,它们简单地表示二进制逻辑状态。例如,1指代高逻辑电平,0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元可能能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。此外,状态可以由值或值的部分表示。作为示例,第一值(例如逻辑1)可以表示默认或初始状态,而第二值(例如逻辑0)可以表示非默认状态。此外,在一个实施例中,术语“复位”和“置位”分别指代默认值和更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而更新的值潜在地包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态。上述方法、硬件、软件、固件或代码的实施例可以通过存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时的机器可访问/可读介质包括以机器(诸如计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂时机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪存设备;电学存储设备;光学存储设备;声学存储设备;用于保存从暂时的(传播的)信号(例如载波,红外信号,数字信号)接收的信息的其他形式的存储设备;等等,它们应与可能从中接收信息的非暂时介质区分开来。用于对逻辑编程以执行本发明实施例的指令可以存储在系统中的存储器(诸如DRAM、高速缓冲存储器、闪速存储器或其它存储设备)中。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于,软盘,光盘,压缩盘只读存储器(CD-ROM)和磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM),磁或光卡、闪存或在经由因特网通过电、光、声或其他形式的传播信号(例如,载波,红外信号,数字信号等)传输信息时使用的有形的机器可读存储器。因此,计算机可读介质包括适于以机器(例如,计算机)可读的形式存储或发送电子指令或信息的任何类型的有形机器可读介质。以下实施例涉及根据本说明书的实施例。一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或基于软件的逻辑(例如,结合存储器控制器实现),以及方法,其接收引用具有远存储器和近存储器的两级系统存储器拓扑中的远存储器的特定行的特定的存储器无效请求,识别与特定行对应的近存储器的特定地址,读取近存储器的特定地址以确定近存储器中是否存在该行的副本,如果特定地址的数据包括远存储器的另一行的副本并且另一行的副本包括修改的数据,则将该特定地址的数据转储清除到远存储器,并发送对于特定的存储器无效请求的完成以指示一致性代理被授予特定行的独占副本。特定行的独占副本将要被修改以生成特定行的修改版本,并且近存储器的所述特定地址将要被用所述特定行的所述修改版本重写。在一个示例中,所述完成是在对远存储器的任何读取和写入完成之前响应于特定的存储器无效请求而发送的。在一个示例中,存储器控制器用于:从读取中识别出远存储器中除了特定行之外的行的副本被存储在近存储器的特定地址中,识别除特定行以外的行的副本包括修改的数据,并重写远存储器中的行以包括修改的数据。在一个示例中,在近存储器的特定地址被用特定行的修改版本重写之前,特定行的副本不被写入特定地址。在一个示例中,存储器控制器还进一步接收将特定行的修改版本写入近存储器的特定地址的写入请求,并且使所述近存储器的所述特定地址被用所述特定行的所述修改版本重写。在一个示例中,写入请求是从一致性代理接收的。在一个示例中,写入请求是使特定行的目录状态从已修改转变为无效。在一个示例中,特定地址中的行的副本的目录状态在所述读取中被识别。在一个示例中,如果在读取中识别出远存储器的另一行,则特定行的目录状态被假设为任意(A)状态。在一个示例中,存储器控制器被包括在缓冲存储器芯片中。在一个示例中,特定的存储器无效请求通过缓冲存储器接口被接收。在一个示例中,缓冲存储器接口与通用输入/输出(GPIO)接口分离,并且缓冲存储器接口包括基于所述通用输入/输出(GPIO)接口的物理层的物理层。在一个示例中,特定的存储器无效请求是多个存储器无效请求之一。在一个示例中,特定的存储器无效请求对应于指示特定行的即将到来的全行写入的请求。在一个示例中,当读取展现近存储器的特定地址中存在除了特定行以外的行的干净副本时,没有远存储器的写入或读取响应于特定存储器无效请求而被执行。在一个示例中,特定行的目录状态不直接响应于特定的存储器无效请求而改变。一个或多个实施例可以提供一种系统,其包括缓冲器芯片,通过包括近存储器和远存储器的缓冲器芯片访问的两层存储器,以及通过存储器访问链路耦合到缓冲器芯片的处理器块。缓冲器芯片可以包括存储器控制器,所述存储器控制器用于:接收引用远存储器的特定行的特定存储器无效请求,识别与特定行对应的近存储器的特定地址,读取近存储器的特定地址以确定近存储器中是否存在所述行的副本,如果特定地址的数据包括远存储器的另一行的副本并且另一行的副本包括修改的数据,则将该特定地址的数据转储清除到远存储器,并且发送针对特定的存储器无效请求的完成,以指示一致性代理被授予特定行的独占副本。特定行的独占副本将要被修改以生成特定行的修改版本,并且近存储器的特定地址将要被用特定行的修改版本重写。在一个示例中,系统还包括归属代理。在一个示例中,归属代理基于特定的存储器无效请求向一个或多个其他一致性代理发送探听。在一个示例中,探听包括探听无效。在一个示例中,处理器块通过通用输入/输出(GPIO)互连链路与一个或多个其他设备进行接合,该存储器访问链路不同于GPIO互连链路,并且存储器访问链路的物理层是基于GPIO互连链路的物理层的。在一个示例中,存储器访问链路包括缓冲存储器访问链路,并且特定存储器无效请求通过缓冲存储器访问链路被接收。整个说明书中对“一个实施例”或“实施例”的提及意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书的各个地方的短语“在一个实施例中”或“在实施例中”的出现不一定都指代相同的实施例。此外,特定特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。在前述说明书中,已经参考具体示例性实施例给出了详细描述。然而,显而易见的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。此外,上述实施例和其它示例性语言的使用不一定指代相同的实施例或相同的示例,而是可以指代不同和有区别的实施例以及潜在的相同实施例。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1