CN107438838B - 打包的写完成 - Google Patents

打包的写完成 Download PDF

Info

Publication number
CN107438838B
CN107438838B CN201580064609.8A CN201580064609A CN107438838B CN 107438838 B CN107438838 B CN 107438838B CN 201580064609 A CN201580064609 A CN 201580064609A CN 107438838 B CN107438838 B CN 107438838B
Authority
CN
China
Prior art keywords
memory
write
flit
link
slots
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580064609.8A
Other languages
English (en)
Other versions
CN107438838A (zh
Inventor
B.S.莫里斯
J.C.斯万森
B.纳尔
R.G.布兰肯希普
J.维利
E.L.亨德里克森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107438838A publication Critical patent/CN107438838A/zh
Application granted granted Critical
Publication of CN107438838B publication Critical patent/CN107438838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

识别与通过缓冲存储器接口接收的来自主机装置的多个写请求相对应的对存储器的多个完成的写。将包括与所述多个完成的写相对应的多个写完成的完成分组发送到主机装置。

Description

打包的写完成
对相关申请的交叉引用
本申请要求对于2014年12月25日提交的名称为“PACKED WRITE COMPLETIONS”的美国非临时专利申请No. 14/583,147的权益和优先权,该申请通过引用被结合于本文中。
技术领域
本公开一般涉及计算架构的领域,并且更具体地说,涉及缓冲存储器协议。
背景技术
半导体加工和逻辑设计方面的进步已允许在集成电路装置上可存在的逻辑数量的增加。因此,计算机系统配置已从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核和多个逻辑的处理器。处理器或集成电路一般包括单个处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程、逻辑的处理器、接口、存储器、控制器集线器等。
由于在更小封装中容纳更大处理功率的能力更大,更小的计算装置的普遍性已增大。智能电话、平板式计算机、超薄笔记本及其它用户设备已迅速增长。然而,这些更小的装置依赖服务器进行数据存储和超过形状因数的复杂处理。因此,高性能计算市场(即,服务器空间)中的需求也已增大。例如,在现代服务器中,一般不但有带多个核的单个处理器,而且有多个物理处理器(也称为多个插槽(socket))以增大计算功率。但随着处理功率与计算系统中装置的数量一起增大,在插槽与其它装置之间的通信变得更重要。
事实上,互连已从主要处理电通信的更传统的多支路(multi-drop)总线成长到有助于快速通信的成熟互连架构。不过,由于对将来处理器在甚至更高速率耗用的需求,对现有互连架构的能力提出了对应的需求。
附图说明
图1示出根据一个实施例,包括串行点对点互连以连接计算机系统中的I/O装置的系统的简化框图;
图2示出根据一个实施例的分层协议栈的简化框图;
图3示出事务描述符的一实施例。
图4示出串行点对点链路的一实施例。
图5示出可能高性能互连(HPI)系统配置的实施例。
图6示出与HPI关联的分层协议栈的一实施例。
图7示出示例状态机的表示。
图8示出通过示例二十通路(lane)数据链路发送的示例微片(flit)的表示。
图9示出通过示例八通路数据链路发送的示例微片的表示。
图10示出示例多槽(multi-slot)微片的表示。
图11示出通过示例八通路数据链路发送的示例微片的表示。
图12示出包括调试消息的示例多槽微片的表示。
图13示出利用缓冲存储器协议的系统的表示。
图14示出支持缓冲存储器协议的缓冲器装置的表示。
图15A-15C示出在缓冲存储器协议中示例微片的表示。
图16A-16D是示出示例存储器写事务的流程图。
图17A-17B是示出对多个存储器写请求的示例的打包的写完成的流程图。
图18示出示例的打包的写完成分组的表示。
图19示出用于包括多个处理器插槽的计算系统的块的一实施例。
图20示出用于包括多核处理器的计算系统的块的另一实施例。
各个图形中类似的引用标号和标示指示类似的元件。
具体实施方式
在下面的描述中,陈述了许多特定的细节,如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线级、特定互连层、特定分组/事务配置、特定事务名称、特定协议交换、特定链路宽度、特定实现及操作等的示例,以便提供本发明的详尽理解。但是,本领域技术人员可明白,实践本公开的主题可不必采用这些特定细节。在其它实例中,已避免已知组件或方法的很详细的描述,如特定和备选处理器架构、用于所述算法的特定逻辑电路/代码、特定固件代码、低级互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中算法的特定表述、特定掉电和门控技术/逻辑及计算机系统的其它特定操作细节,以免不必要地使本公开难以理解。
虽然下面的实施例可参照特定集成电路中的能量节约、能量效率、处理效率等进行描述,如在计算平台或微处理器中,但其它实施例适用于其它类型的集成电路和逻辑装置。本文中描述的实施例的类似技术和教导可应用到也可从此类特征受益的其它类型的电路或半导体装置。例如,公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机、Ultrabooks™,而是也可在其它装置中使用,如手持式装置、智能电话、平板式计算机、其它薄笔记本、芯片上系统(SOC)装置及嵌入式应用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码摄像机、个人数字助理(PDA)及手持式PC。此处,可应用用于高性能互连的类似技术以在低功率互连中增大性能(或甚至节省功率)。嵌入式应用一般包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、宽域网(WAN)交换器或能够执行下面教导的功能和操作的任何其它系统。另外,本文中描述的设备、方法和系统不限于物理计算装置,而是也可涉及用于能量节约和效率的软件优化。如在下面的描述中可变得容易明白的,本文中描述的方法、设备和系统的实施例(无论是在硬件、固件、软件还是其组合的引用中)可被认为对于通过性能考虑均衡的“绿色技术”未来是重要的。
随着计算系统在发展,其中的组件变得越来越复杂。在组件之间耦合并且进行通信的互连架构复杂性也增大,以确保用于最佳组件操作的带宽需求得以满足。此外,不同市场划分(market segment)需求互连架构的不同方面以适应相应市场。例如,服务器要求更高性能,而移动生态系统有时能够牺牲总体性能以用于功率节省。然而,大多数构造(fabric)的单纯目的是以最大功率节省提供最高可能性能。此外,多种不同互连可能能够从本文中描述的主题中受益。
除其它示例外,根据本文中描述的一个或更多原则,可能能够除其它示例外还改进外围组件互连(PCI)高速(PCIe)互连构造架构和QuickPath互连(QPI)构造架构。例如,PCIe的主要目的是使得来自不同供应商的组件和装置能够在开放架构中互操作,跨多个市场划分、客户端(台式和移动型)、服务器(标准和企业)及嵌入式和通信装置。PCI高速是为广泛的多种将来计算和通信平台定义的高性能通用I/O互连。诸如其使用模型、加载-存储架构及软件接口等一些PCI属性已通过其修订版得以保持,而以前的并行总线实现已替换成高度可扩展的完全串行接口。PCI高速的更多最近版本利用点对点互连、基于交换的技术及分组化协议中的发展,输送新级别的性能和特征。功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性及错误处理是PCI高速支持的一些高级特征中的特征。虽然本文中的主要讨论是参照新高性能互连(HPI)架构,但本文中描述的本发明的方面可应用到其它互连架构,如符合PCIe的架构、符合QPI的架构、符合MIPI的架构、高性能架构或其它已知互连架构。
参照图1,图中示出由将一组组件互连的点对点链路组成的构造的一实施例。系统100包括处理器105和耦合到控制器集线器115的系统存储器110。处理器105能够包括任何处理元件,如微处理器、主机处理器、嵌入式处理器、协处理器或其它处理器。处理器105通过前端总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB 106是如下所述的串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的差分互连架构。
系统存储器110包括任何存储器,如随机访问存储器(RAM)、非易失性(NV)存储器或可由系统100中装置访问的其它存储器。系统存储器110通过存储器接口116耦合到控制器集线器115。存储器接口的示例包括双倍数据率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器115能够包括诸如在PCIe互连分层结构中的根集线器、根复合体(root complex)或根控制器。控制器集线器115的示例包括芯片集、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥及根控制器/集线器。术语芯片集经常指两个物理上分隔的控制器集线器,例如,耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。要注意的是,当前系统经常包括与处理器105集成的MCH,而控制器115要以如下所述类似的方式与I/O装置进行通信。在一些实施例中,通过根复合体115选择性地支持对等路由。
此处,控制器集线器115通过串行链路119耦合到交换器/桥接器(bridge)120。输入/输出模块117和121也可称为接口/端口117和121,能够包括/实现分层协议栈以在控制器集线器115与交换器120之间提供通信。在一个实施例中,多个装置能耦合到交换器120。
交换器/桥接器120将分组/消息从装置125往上游(即,沿分层结构上行朝向根复合体)路由到控制器115,并且从处理器105或系统存储器110往下游(即,沿分层结构下行离开根控制器)路由到装置125。在一个实施例中,交换器120称为多个虚拟PCI到PCI桥接器装置的逻辑的组合件。装置125包括要耦合到电子系统的任何内部或外部装置或组件,如I/O装置、网络接口控制器(NIC)、插卡、音频处理器、网络处理器、硬盘驱动器、存储装置、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储装置、Firewire装置、通用串行总线(USB)装置、扫描仪及其它输入/输出装置。通常,在PCIe术语中,诸如装置被称为端点。虽然未明确显示,但装置125可包括桥接器(例如,PCIe到PCI/PCI-X桥接器)以支持此类装置支持的遗留或其它版本的装置或互连构造。
图形加速器130也能够通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到MCH,而MCH耦合到ICH。交换器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的基于信用(credit)的流控制。在一些实现中,可以利用拆分的事务,即,带有按时间分隔的请求和响应的事务,从而除其它示例外还允许链路在目标装置收集对于响应的数据的同时携带其它业务。
基于信用的流控制能够用于利用互连构造实现虚拟通道和网络。在一个示例中,装置能够通告用于事务层205中每个接收缓冲器的信用的初始量。诸如图1中控制器集线器115等在链路的相反端的外部装置能够统计每个TLP耗用的信用的数量。如果事务不超过信用限制,则可传递事务。在接收响应时,恢复信用量。除其它可能优点外,此类信用方案的优点的一个示例是假设未遇到信用限制,则信用返回的迟滞不影响性能。
在一个实施例中,四个事务地址空间能够包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读请求和写请求的一个或更多请求,以便向/从存储器映射的位置传送数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,诸如32比特地址等短地址格式或诸如64比特地址等长地址格式。配置空间事务能够用于访问连接到互连的各种装置的配置空间。配置空间的事务能够包括读请求和写请求。消息空间事务(或简称为消息)也能够被定义为支持在互连代理器之间的带内通信。因此,在一个示例实施例中,事务层205能够组装分组报头/有效负载206。
快速转到图3,图中示出事务层分组描述符的一示例实施例。在一个实施例中,事务描述符300能够是用于携带事务信息的机制。在此方面,事务描述符300支持系统中事务的标识。其它可能的使用包括跟踪默认事务排序的修改和事务与通道的关联。例如,事务描述符300能够包括全局标识符字段302、属性字段304和通道标识符字段306。在所示示例中,全局标识符字段302示为包括本地事务标识符字段308和来源标识符字段310。在一个实施例中,全局事务标识符302对于所有未决请求是独特的。
根据一个实现,本地事务标识符字段308是由请求代理器生成的字段,并且它能够对于要求该请求代理器的完成的所有未决请求是独特的。此外,在此示例中,来源标识符310独特地识别互连分层结构内的请求者代理器。相应地,与来源ID 310一起,本地事务标识符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和电气子块222以将分组物理传送到外部装置。此处,逻辑的子块221负责物理层221的“数字”功能。在此方面,逻辑的子块能够包括准备外出信息以供物理子块222传送的传送段和在将接收的信息传递到链路层210前识别和准备它的接收器段。
物理块222包括传送器和接收器。传送器由逻辑的子块221供应有符号,传送器将符号串行化并且传送到外部装置上。接收器供应有来自外部装置的串行化符号,并且将接收的信号变换成比特流。比特流被去串行化并且供应到逻辑的子块221。在一个示例实施例中,采用8b/10b传送代码,其中传送/接收10比特符号。此处,特殊符号用于构造带有帧223的分组。另外,在一个示例中,接收器也提供从进入串行流恢复的符号时钟。
如上所述,虽然参照协议栈(如PCIe协议栈)的一特定实施例讨论了事务层205、链路层210和物理层220,但分层协议栈不受如此限制。事实上,任何分层协议可被包括/实现,并且采用本文中讨论的特征。作为示例,表示为分层协议的端口/接口能够包括:(1)组装分组的第一层,即,事务层;将分组排序的第二层,即,链路层;以及传送分组的第三层,即,物理层。作为特定示例,利用了如本文中所述的高性能互连分层协议。
接着参照图4,图中示出串行点对点构造的一示例实施例。串行点对点链路能够包括用于传送串行数据的任何传送路径。在所示实施例中,链路包括两个低电压差分驱动信号对:传送对406/411和接收对412/407。相应地,装置405包括传送逻辑406以将数据传送到装置410,并且接收逻辑407以接收来自装置410的数据。换而言之,在链路的一些实现中包括两个传送路径(即,路径416和417)和两个接收路径(即,路径418和419)。
传送路径指用于传送数据的任何路径,如传送线路、铜线、光线路、无线通信通道、红外通信链路或其它通信路径。在诸如装置405和装置410等两个装置之间的连接称为链路,如链路415。链路可支持一个通路 - 每个通路表示一组差分信号对(一对用于传送,一对用于接收)。为扩展带宽,链路可聚合由xN表示的多个通路,其中,N是任何支持的链路宽度,如1、2、4、8、16、32、64或更宽。
差分对能够指传送差分信号的两个传送路径,如线路416和417。作为示例,在线路416从低电压级别切换到高电压级别,即上升缘时,线路417从高逻辑级别驱动到低逻辑级别,即,下降缘。差分信号可能展示更佳的电气特性,除其它示例优点外还例如有更佳的信号完整性、即交叉耦合、电压过冲/欠冲、环接(ringing)。这允许更佳的定时窗口,更佳的定时窗口能够实现更快的传送频率。
在一个实施例中,提供了新的高性能互连(HPI)。HPI能够包括下一代高速缓存相干的基于链路的互连。作为一个示例,可在诸如工作站或服务器等高性能计算平台中利用HPI,包括在其中PCle或另一互连协议一般用于连接处理器、加速器、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中显示的八插槽实现中,并非每一插槽通过HPI链路相互直接连接。然而,如果在处理器之间存在虚拟路径或通道,则支持该配置。支持的处理器范围包括在本机域中的2-32个。除其它示例外,通过在节点控制器之间使用多个域或其它互连,可达到更高数量的处理器。
HPI架构包括分层协议架构的定义,在一些示例中包括协议层(相干的(coherent)、非相干的和可选地其它基于存储器的协议)、路由层、链路层和物理层。此外,除其它示例外,HPI还能够包括与功率管理器(如功率控制单元(PCU))、用于测试和调试(DFT)的设计、故障处理、寄存器、安全有关的增强功能。图5示出示例HPI分层协议栈的一实施例。在一些实现中,图5中示出的一些层可以是可选的。每层处理其自己级别的粒度或量子的信息(带有分组的协议层605a、b、带有微片635的链路层610a、b和带有物理片(phit)540的物理层605a、b)。注意,在一些实施例中,基于该实现,分组可包括部分微片、单个微片或多个微片。
作为第一示例,物理片640的宽度包括链路宽度到比特的1对1映射(例如,20比特链路宽度包括20比特的物理片等)。微片可以具有更大的尺寸,例如184、192或200比特。注意,如果物理片640为20比特宽,并且微片635的大小为184比特,则采用分数个物理片640来传送一个微片635(例如,除其它示例外,9.2个20比特的物理片传送184比特微片635,或者9.6个20比特的物理片传送192比特微片)。注意,在物理层的基础链路的宽度可以变化。例如,每个方向的通路数量可包括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,并且提供在两个直接连接的实体之间可靠传送数据(以及请求)和管理流控制的能力。链路层也能够负责将物理通道虚拟化成多个虚拟通道和消息类。在将协议消息传递到物理层605a、b以便跨越物理链路传送前,协议层620a、b依赖于链路层610a、b将协议消息映射到适当的消息类和虚拟通道中。除其它示例外,链路层610a、b还可支持多个消息,如请求、探听、响应、回写、非相干的数据等。
如图6所示,能够在电气层(即,连接两个组件的电导体)上方和在链路层610a、b下方实现HPI的物理层605a、b(或PHY)。物理层和对应逻辑能够驻留在每个代理器上,并且连接相互分离的两个代理器(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相干性协议的事务。首先,作为示例,该协议能够在每地址的基础上在代理器的高速缓存中的数据之间和在那些数据与存储器中的数据之间保持数据一致性。通俗地说,数据一致性可以指代理器的高速缓存中表示数据的最新值的每个有效数据行,并且在相干性协议分组中传送的数据能够表示该数据被发送时的最新值。在高速缓存中或在传送中不存在有效的数据副本时,该协议可确保数据的最新值驻留在存储器中。其次,该协议能够为请求提供明确的交付点(commitment point)。交付点对于读可指示数据何时可使用;并且对于写它们可指示写的数据何时全局可观察并且将由后续读加载。该协议可为相干的存储器空间中的可缓存的请求和不可缓存的(UC)请求支持这些交付点。
在一些实现中,HPI能够利用嵌入的时钟。时钟信号能够嵌入到使用互连传送的数据中。通过将时钟信号嵌入数据中,能够省略不同的和专用的时钟通路。这能够是有用的,例如,由于它能够允许装置的更多引脚专用于数据传送,特别是在用于引脚的空间非常珍贵的系统中。
在互连的任一侧上的两个代理器之间能够建立链路。发送数据的代理器能够是本地代理器,并且接收数据的代理器能够是远程代理器。状态机能够由两个代理器用于管理链路的各种方面。在一个实施例中,物理层数据路径能够将微片从链路层传送到电气前端。在一个实现中,控制路径包括状态机(也称为链路训练状态机或类似物)。状态机的动作和从状态的退出可取决于内部信号、定时器、外部信号或其它信息。事实上,诸如几个初始化状态等一些状态可具有定时器,以提供用于退出状态的超时值。注意,在一些实施例中,检测指检测在通路的两个方向上的事件;但不一定同时检测。然而,在其它实施例中,检测指由引用的代理器对事件的检测。作为一个示例,防跳动(debounce)指信号的持续断言(sustained assertion)。在一个实施例中,HPI支持在非功能通路的事件中进行操作。此处,可在特定状态丢弃通路。
除其它类别和子类别外,状态机中定义的状态还能够包括重置状态、初始化状态、和操作状态。在一个示例中,一些初始化状态能够具有辅助定时器,其用于在超时时退出状态(本质上,是由于没有在状态中取得进展而引起的中止)。中止可包括对诸如状态寄存器等寄存器的更新。一些状态也能够具有用于对状态中的主要功能进行定时的主定时器。除其它示例外,还能够定义其它状态,使得内部或外部信号(如,握手协议)驱动从该状态到另一状态的转变。
状态机也可通过单个步骤、固定初始化中止和测试器的使用来支持调试。此外,能够推迟/保持状态退出,直至调试软件准备就绪为止。在一些实例中,能够推迟/保持退出,直至辅助超时为止。在一个实施例中,动作和退出能够基于训练序列的交换。在一个实施例中,链路状态机将在本地代理器时钟域中运行,并且从一个状态到下一状态的转变将与传送器训练序列边界相符。状态寄存器可用于反映当前状态。
图7示出了在HPI的一个示例实现中由代理器使用的状态机的至少一部分的表示。应领会的是,包括在图7的状态表中的状态包括可能状态的非穷尽列表。例如,为简化图形,省略了一些转变。此外,一些状态可被组合,拆分或省略,而其它状态可能被添加。此类状态能够包括:
事件重置状态:在热或冷重置事件时进入。恢复默读值。初始化计数器(例如,同步计数器)。可以退出到另一状态,例如,另一重置状态。
定时重置状态:用于带内重置的定时状态。可驱动预定义的电气有序集(EOS),以便远程接收器能够检测EOS并且也进入定时重置。接收器具有保存电气设置的通路。可退出到代理器以校准重置状态。
校准重置状态:在通路上没有信令的情况下校准(例如,接收器校准状态)或关闭驱动器。可以是基于定时器的状态中的预定的时间量。可以设置操作速度。在端口未启用时,可以充当等待状态。可以包括最小驻留时间。接收器调节或交错可基于设计而发生。可以在超时后和/或校准完成后退出到接收器检测状态。
接收器检测状态:检测在通路上的接收器的存在。可以查找接收器端接(例如,接收器下拉插入)。在指定的值被设置时或者在另一指定的值未被设置时,可以退出到校准重置状态。如果检测到接收器或达到超时,则可以退出到传送器校准状态。
传送器校准状态:用于传送器校准。可以是为传送器校准分配的定时状态。可以包括在通路上的信令。可以连续驱动EOS,如电气空闲退出有序集(或EIEOS)。在校准完成时或在定时器截止时,可以退出到顺应性状态。如果计数器已截止或者辅助超时已出现,则可以退出到传送器检测状态。
传送器检测状态:证明有效信令合格。可以是握手状态,其中代理器完成动作,并且基于远程代理器信令而退出到下一状态。接收器可以证明来自传送器的有效信令合格。在一个实施例中,接收器查找唤醒检测,并且如果在一个或更多通路上防跳动,则在其它通路上查找唤醒检测。传送器驱动检测信号。响应对所有通路完成防跳动和/或超时,或者如果在所有通路上的防跳动未完成并且存在超时,则可以退出到轮询状态。此处,一个或更多监视器通路可以保持醒着,以对唤醒信号进行防跳动。而且如果被防跳动,则其它通路可能被防跳动。这能能够实现低功率状态中的功率节省。
轮询状态:接收器适应,锁定比特(例如,通过初始化漂移缓冲器),锁定字节(例如,通过识别符号边界),并且锁定训练序列边界(例如,通过锁定到电气有序集(EOS)和/或训练序列报头)。通路可以被抗歪斜(deskew)。握手也能够被完成以退出轮询到几个可能状态之一。例如,能够(由代理器)造成到链路宽度状态、顺应性状态、环回标记状态或重置状态的任何一个状态的退出。握手能够包括各种定义的接收器动作或条件的完成和确认消息(ACK)的发送以触发到对应于动作的完成集和ACK的状态的退出。对于轮询抗歪斜,在远程发射器处的通路到通路歪斜可以针对最高速度被定界在第一长度处,而针对慢速度被定界在第二长度处。可以在慢模式中以及在操作模式中执行抗歪斜。接收器可以具有用于对通路到通路歪斜进行抗歪斜的特定最大值,例如,8、16或32个歪斜间隔。在一些实现中,接收器动作也可以包括迟滞修复。在一个实施例中,接收器动作能够在有效的通路图的成功抗歪斜时完成。在一个示例中,在接收带有确认的多个连续训练序列报头、并且在接收器已完成其动作后传送带有确认的多个训练序列时,能够取得成功的握手。
顺应性状态:从轮询状态进入。可以使代理器成为顺序应主控或从属以用于验证目的。装置(充当主控)能够发送顺应性型式到另一装置(从属),并且从属能够在将它再定时到其本地时钟(例如,未撤销任何极性逆转或通路反转)后环回到该型式。顺应性型式能够用于在环回未运转或者不合需要时在通路的某一子集上表征模拟前端的操作。例如,进入环回能够以成功的字节锁定、TS锁定、抗歪斜、迟滞测试及依赖几段数字逻辑的适当运转的其它测试为前提条件。在完成比特锁定时,能够进入顺应性,并且除其它调节外,还可将其用于抖动或噪声查验,调试,探查链路。换而言之,在轮询的结果不允许直接进入环回的情况下,顺应性能够充当用于轮询的备选退出。顺应性状态能够从主控通过传送器驱动超序列。接收器查找监视器通路上的唤醒,对唤醒进行防跳动,丢弃坏的通路,适应及比特锁定等。从属传送器能够驱动顺应性型式,直至其接收器动作完成。随后,再定时环回并且不对其进行抗歪斜。从属接收器进行类似的监视和防跳动等动作。除其它示例外,退出还可以是到重置状态,如定时重置,或到环回型式状态以开始测试。在退出到环回型式状态的情况中,主控可被发送(例如,由软件控制器)到环回型式状态以尝试更多专用型式。
代理器环回标记状态:环回标记是代理器状态,但不同于其它代理器状态,主控和从属动作和退出可以不同。环回从属可撤消任何极性逆转和/或通路反转,但可对环回比特不解扰或再加扰。由于确认交换在环回,因此,它可不应用到从属。由于在符号边界上环回前从属可以抗歪斜,因此,可以不强制主控再次字节锁定或再次抗歪斜,但主控可以再次锁定训练序列以便避免锁定到一些别名。进行此操作的主控可包括LFSR的再次播种,比较TS和/或EIEOS或这些的某一组合。SDS的结束标记环回设定的结束和型式生成、检查与计数的开始。
代理器环回型式状态(或阻塞链路状态):从环回标记状态或顺应性状态任一状态进入。在环回型式状态中,主控传送器能够不发送控制型式,而是发送另外的专用型式以补充顺应性或环回型式状态中的那些环回。接收器能够在环回型式中接收专用型式,并且检查接收的型式中是否有错误。对于传送器自适应,两个代理器均能够是主控。在预定的期间内,传送器能够发送型式,并且远程接收器能够比较此型式,并且确定用于在诸如寄存器等存储元件中记录的接收的模式的品质因数或度量。比较方法和度量可取决于设计(例如,带有抖动注入的BER)。在该期间结束时,两个代理器均能够退出到重置,以便反向通道检查该度量并且设定传送器自适应的下一迭代。
链路宽度状态:代理器向远程传送器传递最终通路图。接收器接收信息并且解码。接收器可以在第二结构中的前面的通路图值的检查点后的结构中记录配置的通路图。接收器也可以通过确认(“ACK”)做出响应。可以发起带内重置。作为一个示例,第一状态发起带内重置。在一个实施例中,响应ACK而执行到诸如微片配置状态等下一状态的退出。此外,在进入低功率状态前,如果唤醒检测信号出现的频率降到低于指定值(例如,每单位间隔(UI)的数量1,如4K UI),则重置信号也可以被生成。接收器可以保存当前和以前的通路图。传送器可以基于具有不同值的训练序列来使用不同组的通路。在一些实施例中,通路图可不修改一些状态寄存器。
微片锁配置状态:由传送器进入,但在传送器和接收器均已退出到阻塞链路状态或其它链路状态时,该状态被视为已退出(即,辅助超时案例)。在一个实施例中,传送器退出到某个链路状态包括在接收行星对齐信号后,数据序列的开始部分(SDS)和训练序列(TS)边界。此处,接收器退出可基于从远程传送器接收SDS。此状态可以是从代理器到链路状态的桥接器。接收器识别SDS。如果在解扰器被初始化后接收SDS,则接收器可以退出到阻塞链路状态(BLS)(或控制窗口)。如果出现超时,则退出可以到某个重置状态。传送器通过配置信号来驱动通路。传送器退出可以是重置、BLS或基于条件或超时的其它状态。
传送器链路状态:链路状态。微片被发送到远程代理器。可从阻塞链路状态进入,并且在诸如超时等事件发生时返回到阻塞链路状态。传送器传送微片。接收器接收微片。也可以退出到低功率链路状态。在一些实现中,儒将边路状态(TLS)能够指L0状态。
阻塞链路状态:链路状态。传送器和接收器以统一方式操作。可以是定时状态,在该状态期间,链路层微片被拖延,同时物理层信息被传递到远程代理器。可以退出到低功率链路状态(或基于设计的其它链路状态)。在一个实施例中,阻塞链路状态(BLS)定期地出现。该期间被称为BLS间隔,并且可以被定时,以及可以在低速和可操作速度之间不同。注意,可定期阻塞链路层,防止发送微片,以便诸如在某个传送链路状态或部分宽度传送链路状态期间可发送一定长度的物理层控制序列。在一些实现中,阻塞链路状态(BLS)能够被称为L0控制或L0c状态。
部分宽度链路传送状态:链路状态。可以通过进入部分宽度状态来节省功率。在一个实施例中,不对称部分宽度指在一些设计中可以支持的双向链路的每个方向具有不同宽度。图9的示例中显示发送进入部分宽度传送链路状态的部分宽指示的发起者的一个示例,如传送器。此处,在以第一宽度在链路上传送的同时发送部分宽度指示,以使链路 转变成在第二新宽度传送。失配可以引起重置。注意,速度可以不改变但是宽度可以改变。因此,可能以不同的宽度发送各微片。可以在逻辑上类似于传送链路状态;然而,由于存在更小的宽度,因此,传送微片可能需要更久。可以退出到其它链路状态,如基于某些接收和发送的消息或退出部分宽度传送链路状态的低功率链路状态,或基于其它事件的链路阻塞状态。在一个实施例中,如定时图所示,传送器端口可以交错的方式关闭空闲通路,以提供更佳信号完整性(即,噪声迁移)。此处,可以在链路宽度更改的期间内利用不可重试微片,例如空微片。对应接收器可丢弃这些空微片,并且以交错的方式关闭空闲通路,以及在一个或更多结构中记录当前和以前的通路图。注意,状态和关联状态寄存器可保持不变。在一些实现中,部分宽宽传送链路状态能够指部分L0或L0p状态。
退出部分宽度传送链路状态:退出部分宽度状态。在一些实现中,可以或不可以使用阻塞链路状态。在一个实施例中,传送器通过在空闲通路上发送部分宽度退出型式以训练它们和使它们抗歪斜来发起退出。作为一个示例,退出型式从EIEOS开始,EIEOS被检测并且防跳动到通路 准备开始进入完全传送链路状态的信号,并且退出型式可以以SDS或在空闲通路上的快速训练序列(FTS)结束。在退出序列(接收器动作,如超时之前未完成的抗歪斜)期间的任何失效将使到链路层的微片传送停止,并且断言重置,这通过在下一阻塞链路状态出现时使链路重置来处理。SDS也可将通路上的加扰器/解扰器初始化到适当的值。
低功率链路状态:是较低功率状态。在一个实施例中,它是比部分宽度链路状态更低的功率,因为在此实施例中,在所有通路上并且在两个方向上停止了信令。传送器可使用阻塞链路状态来请求低功率链路状态。此处,接收器将请求解码,并且通过ACK或NAK做出响应;否则,重置可被触发。在一些实现中,低功率链路状态能够指L1状态。
在一些实现中,例如在已经完成状态的状态动作,如某些校准和配置时,能够促进状态转变以允许状态被绕过。链路的以前的状态结果和配置能够被存储并在链路的随后初始化和配置中再使用。对应的状态可被绕过,而不是重复此类配置和状态动作。然而,实现状态绕过的传统系统常常实现复杂的设计和昂贵的验证逸出(validation escape)。在一个示例中,HPI能够在例如状态动作不需要重复的某些状态中利用短定时器,而不是使用传统绕过。除其它可能优点外,这还可能能够允许更统一和同步的状态机转变。
在一个示例中,基于软件的控制器(例如,通过用于物理层的外部控制点)能够为一个或更多特定的状态启用短定时器。例如,对于已经为其执行和存储了动作的状态,该状态能够被短定时,以促进从该状态快速退出到下一状态。然而,如果以前的状态动作失败,或者不能在短定时器持续时间内应用,则能够执行状态退出。此外,控制器能够禁用短定时器,例如在状态动作应被重新执行时。能够为每种相应的状态设置长或默认定时器。如果在该状态的配置动作不能在长定时器内完成,则状态退出能够出现。长定时器能够设置成合理的持续时间以便允许状态动作的完成。相反,除其它示例外,短定时器还可更短得多,使得在一些情况下在未回头参考以前执行的状态动作的情况下不可能执行状态动作。
在一些实例中,在链路的初始化(或重新初始化)期间,在代理器通过状态机向操作链路状态前进时,能够发生造成状态重置(例如,到某种重置或其它状态)的一个或更多失效或状态退出。事实上,链路的初始化能够循环通过一个或更多状态而未完成初始化和进入链路状态。在一个示例中,能够保持用于在链路的初始化内在状态转变中无限循环的数量的计数。例如,每次初始化返回到重置状态而未达到链路状态时,便能够增大计数器。一旦链路成功进入链路状态,便能够为链路重置计数器。此类计数器能够由在链路两侧上的代理器保持。此外,能够例如由利用一个或更多外部控制点的基于软件的控制器设置阈值。在无限循环的计数达到(或超过)定义的阈值时,链路的初始化便能够被挂起(例如,设置和保存在重置状态或者在重置状态之前)。在一些实现中,为重新开始初始化和从挂起状态释放初始化,基于软件的控制器能够触发链路的重置或重新初始化。在一些实例中,基于软件的工具能够分析挂起初始化的性质,并且执行诊断,设置寄存器值,以及执行其它操作以便防止初始化的进一步循环。实际上,在一些实现中,除其它示例外,控制器还能够设置与重新启动挂起的链路初始化有关的更高计数器阈值或者甚至取代计数器。
在HPI的一些实现中,能够定义超序列,每个超序列对应于相应状态或进入到相应状态/从相应状态退出。超序列能够包括数据集和符合的重复序列。在一些实例中,序列能够重复,直至除其它示例外,状态或状态转变的完成,或对应事件的传递为止。在一些实例中,超序列的重复序列能够根据定义的频率重复,如定义数量的单位间隔(UI)。单位间隔(UI)能够对应于用于在链路或系统的通路上传送单个比特的时间的间隔。在一些实现中,重复序列能够从电气有序集(EOS)开始。相应地,能够预期EOS的实例根据预定义频率重复。除其它示例外,此类有序集还能够被实现为可以十六进制格式表示的定义的16字节码。在一个示例中,超序列的EOS能够是EIEIOS。在一个示例中,EIEOS能够类似于低频率时钟信号(例如,预定义数量的重复的FF00或FFF000十六进制符号等)。预定义的数据集能够跟随EOS,如预定义数量的训练序列或其它数据。此类超序列能够在除其它示例外还在包括链路状态转变的状态转变及初始化中被利用。
在互连的一些实现中,如在QPI中,能够使串行数据链路的端接开启和关闭,诸如在重置或初始化链路时。此方案能够将复杂性和时间引入链路的初始化中。在HPI的一些实现中,能够保持链路的端接,包括在链路的重置或重新初始化期间。此外,HPI能够允许装置的热插拔。在通过热插拔或另一方式引入另一装置时,其上添加新远程代理器的通路的电压特性将更改。本地代理器能够感应通路电压中的这些更改,以检测远程代理器的存在和推动链路的初始化。状态机状态和定时器能够在状态机中定义,以协调链路的检测、配置和初始化而不端接。
在一个实现中,通过由接收代理器为进入信令进行的通路的筛选,HPI能够支持在带内重置时的重新初始化而不更改端接值。信令能够用于识别良好的通路。作为示例,能够为将由传送器装置发送的一组预定义信号中的任何一个信号筛选通路,以便促进链路的发现和配置。在一个示例中,能够定义对应于一个或更多初始化或重新初始化任务的超序列。预定义的序列能够包括其后有另外的序列数据的电气空闲退出有序集(EIEOS)。在一些实例中,在通路的任一侧上的每个装置变成活跃的时,装置能够开始发送对应于特定初始化状态的超序列等。在一个实施例中,能够支持两种类型的引脚重置;上电(或“冷”)重置和暖重置。软件发起或在一个代理器上始发(在物理层或另一层中)的重置可带内传递到另一代理器。然而,由于嵌入时钟的使用,可通过使用诸如特定电气有序集或EIOS等有序集传递到另一代理器来处理带内重置。
在初始化期间能够发送有序集,并且在初始化后能够发送PHY控制序列(或“阻塞链路状态”)。阻塞链路状态能够阻塞链路层,防止发送微片。作为另一示例,可阻塞链路层业务以发送可在接收器被丢弃的几个空(NULL)微片。
如上所介绍,在一个实施例中,能够在最初慢速进行初始化,并且随后是快速初始化。慢速初始化使用用于寄存器和定时器的默认值。软件因而使用慢速链路设定寄存器、定时器和电气参数,并且清除校准信号量(semaphore)以便为快速初始化做好准备。作为一个示例,初始化能够除可能的其它状态或任务外还由如重置、检测、轮询、顺应性和配置的此类状态或任务所组成。
在一个示例中,链路层阻塞控制序列(即,阻塞链路状态(BLS)或L0c状态)能够包括定时状态,在该状态期间,链路层微片被拖延,而PHY信息被传递到远程代理器。此处,传送器和接收器可启动阻塞控制序列定时器。而且在定时器截止时,传送器和接收器能够退出阻塞状态并可采取其它动作,诸如退出到重置,退出至不同链路状态(或其它状态),包括允许跨链路发送微片的状态。
在一个实施例中,链路训练能够被提供并且包括发送加扰训练序列、有序集和控制序列中的一个或更多,如与定义的超序列有关。训练序列符号可包括以下的一项或更多项:报头、保留部分、目标迟滞、对数量、物理通路图代码参考通路或一组通路及初始化状态。在一个实施例中,除其它示例外,还能与ACK或NAK一起发送报头。作为示例,训练序列可作为超序列的一部分发送并可被加扰。
在一个实施例中,有序集和控制序列未被加扰或交错,并且被同样,同时和完全地在所有通路上传送。有序集的有效接收可包括检查至少一部分有序集(或用于部分有序集的整个有序集)。有序集可包括电气有序集(EOS),如电气空闲有序集(EIOS)或EIEOS。超序列可包括数据序列(SDS)或快速训练序列(FTS)的开始。此类集和控制超序列能够被预定义,并且可具有任何型式或十六进制表示及任何长度。例如,有序集和超序列可以是8字节、16字节或32字节等的长度。作为示例,FTS能够被另外用于在部分宽度传送链路状态的退出期间的快速比特锁定。注意,FTS定义可以按通路,并且可利用FTS的旋转版本。
在一个实施例中,超序列能够包括在训练序列流中诸如EIEOS等EOS的插入。在信令开始时,在一个实现中,通路以交错的方式上电。然而,这可使得初始超序列在一些通路上的接收器处被截断。然而,超序列能够通过短间隔(例如大约一千个单位间隔(或~1KUI))进行重复。训练超序列可被另外用于抗歪斜、配置的一项或更多项及用于传递初始化目标、通路图等。除其它示例外,EIEOS能够还用于以下的一项或更多项:将通路从非活跃状态转变到活跃状态,筛选良好的通路,识别符号和TS边界。
在一个实施例中,时钟能够嵌入数据中,因而不存在单独的时钟通路。通过通路发送的微片能够被加扰以促进时钟恢复。作为一个示例,接收器时钟恢复单元能够将采样时钟输送到接收器(即,接收器从数据中恢复时钟,并且使用它对进入的数据采样)。在一些实现中,接收器持续适应进入的比特流。通过嵌入时钟,能够潜在地降低引脚引出(pinout)。然而,在带内数据中嵌入时钟能够改变实现带内重置的方式。在一个实施例中,能够在初始化后利用阻塞链路状态(BLS)。此外,除其它考虑外,电气有序集超序列可在初始化期间被利用以便还促进重置(例如,如上所述)。嵌入的时钟能够在链路上的装置之间是共同的,并且共同操作时钟能够在链路的校准和配置期间设置。例如,HPI链路能够通过漂移缓冲器参考共同时钟。除其它可能优点外,此类实现与非共同参考时钟中使用的弹性缓冲器相比,还能够实现更低的迟滞。此外,在指定限制内可匹配参考时钟分布段。
在一些实现中,HPI可支持带有某个宽度的微片,该宽度在一些情况下不是标称通路宽度的倍数(例如,仅作为说明性示例,使用192比特的微片宽度和20个通路)。实际上,在允许部分宽度传送状态的实现中,通过其传送微片的通路的数量能够波动,甚至在链路的寿命期间也波动。例如,在一些实例中,微片宽度可以在一个时刻是活跃通路的数量的倍数,但在另一时刻不是活跃通路的数量的倍数(例如,在链路更改状态和通路宽度时)。在通路的数量不是当前通路宽度的倍数的情况下(例如,20个通路上192经特的微片宽度的示例),在一些实施例中,连续微片能够配置成在通路上重叠传送,以由此节省带宽(例如,传送在20个通路上重叠的五个连续192比特微片)。
图8示出在多个通路上重叠的连续微片的传送的表示。例如,图8显示通过20个通路链路发送的五个重叠192比特微片的表示(通路由列0-19表示)。图8的每个单元表示包括在通过4UI跨度发送的微片中包括的四个比特的相应“半字节”(nibble)或编组(例如,比特4n+3:4n)。例如,192比特微片能够分成48个四比特半字节。在一个示例中,半字节0包括比特0-3,半字节1包括比特4-7等。半字节中的比特能够被发送以便重叠或交织(例如,“打乱(swizzled)”),使得除其它考虑外,还更早呈现微片的更高优先级字段,保持检错属性(例如,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。在UI 8-11中,仅留下第一微片的8个半字节。第一微片的这些最后的半字节(即,10、15、20、25、30、40、45)能够与第二微片的前面的半字节(即,半字节2、4、7、9、12、16、20、25、30、35、40、45)同时发送,使得第一和第二微片重叠或被打乱。通过使用此类技术,在当前示例中,五个完整的微片能够在48UI中发送,每个微片通过分数9.6 UI期间被发送。
在一些情况下,打乱可产生周期性的“整齐的”微片边界。例如,在图8的示例中,开始的5个微片边界(第一微片的顶行)也可称为整齐的微片边界,因为所有通路均从相同微片传送开始的半字节。代理器链路层逻辑能够配置成识别通路的打乱,并且能够从打乱的比特重构微片。另外,物理层逻辑能够包括用于基于当时使用的通路的数量,识别何时以及如何打乱微片数据的流的功能性。事实上,在从一个链路宽度状态到另一链路宽度状态的转变中,代理器能够自行配置成识别将如何采用数据流的打乱。
如上所述,链路能够在通路宽度之间转变,在一些实例中在原始或完全的宽度操作,并且在以后转变成利用更少通路的部分宽度(以及从其转变)。在一些实例中,微片的定义的宽度可以是由通路的数量可除尽的。例如,图9的示例示出此类示例,其中以前的示例的192比特微片通过8通路链路传送。如图9所表示,192比特微片的4比特半字节可通过8个通路均匀地分布和传送(即,由于192是8的倍数)。实际上,在8通路部分宽度操作时,可通过24 UI发送单个微片。此外,每个微片边界能够在图9的示例中是整齐的。虽然整齐的微片边界能够简化状态转变、确定性和其它特征,但允许打乱和偶然的交错微片边界能够允许链路上浪费的带宽的最小化。
另外,尽管图9的示例将通路0-7显示为在部分宽度状态中保持活跃的通路,但可能能够使用任何8通路集。还要注意,上述示例只是为了说明的目的。微片可能能够定义成具有任何宽度。链路也可能能够具有任何链路宽度。此外,除其它考虑和示例外,系统的打乱方案还能够根据微片的格式和字段、系统中优选的通路宽度灵活地构成。
除其它考虑外,假设迟滞未在链路层处产生迟滞修复误差或超时,HPI PHY逻辑的层的操作还能够独立于底层传送媒体。
链路层
链路层能够从协议层提取物理层,处理在两个协议代理器之间的流控制,并且向协议层(消息类)和路由层(虚拟网络)提供虚拟通道服务。在一些实现中,链路层能够处理称为微片的固定量的信息。在一个示例中,微片能够被定义为长度192比特。然而,在不同变化中可利用诸如81-256(或更多)等比特的任何范围。诸如192比特等大的微片大小可包括格式、循环冗余校验(CRC)、纠错码(ECC)和其它特征。例如,更大的微片长度能够也允许CRC字段扩展(例如,到16比特)以处理更大的微片有效负载。传送单个微片的物理片或单位间隔(UI)的数量(例如,用于传送单个比特或物理片等的时间)能够随链路宽度而变化。例如,除其它可能示例外,20通路或比特链路宽度还能够在9.6 UI中传送单个192比特微片,而8通路链路宽度在24 UI中传送相同微片。链路层信用和协议分组化也能够基于微片。
图10示出用于8通路链路宽度的广义微片的表示1000。表示1000的每列能够代表链路通路,并且每行代表相应UI。在一些实现中,单个微片能够被细分成两个或更多槽。在每个槽中能够包括不同消息或链路层报头,允许对应于在单个微片中要发送的可能不同事务的多个不同且在一些情况下独立的消息。此处,除其它示例外,单个微片中包括的多个消息也可被预定到不同目的地节点。例如,图10的示例示出带有三个槽的微片格式。阴影部分能够表示在相应槽中包括的微片的部分。
在图10的示例中,提供了三个槽,即槽0、1和2。槽0能够提供有微片空间的72比特,其中22比特专用于消息报头字段并且50比特专用于消息有效负载空间。槽1能够提供有微片空间的70比特,其中20比特专用于消息报头字段并且50比特专用于消息有效负载空间。消息报头字段空间之间的不同能够被优化,以提供某些消息类型将被指定用于包括在槽0中(例如,其中利用更多消息报头编码)。能够提供占用实质上比槽0和1更少空间的第三槽、槽2,在此情况下利用微片空间的18比特。槽2能够被优化以处理不利用更大消息有效负载的那些消息,如确认、信用返回及诸如此类。另外,能够提供浮动有效负载字段,其允许备选应用另外11比特以补充槽0或槽1的有效负载字段。
继续图10的特定示例,其它字段能够对于微片而言是全局的(即,跨微片应用而不是应用于特定槽)。例如,报头比特能够与4比特微片控制字段一起提供,而除其它示例外,4比特微片控制字段能够用于将此类信息指定为微片的虚拟网络,识别将如何对微片编码。另外,除其它可能示例外,还能够提供错误控制功能性,如通过16比特循环CRC字段。
能够定义微片格式以便优化在链路层上消息的吞吐量。一些传统协议已利用无槽的、更小的微片。例如,在QPI中利用80比特微片。虽然更大微片(例如,192比特微片)的微片吞吐量可以更低,但能够通过优化微片数据的使用来增大消息或分组吞吐量。例如,在QPI的一些实现中,利用整个80比特微片空间,而无论消息大小或类型如何。通过将较大的微片细分成预定长度和字段的槽,192微片长度能够被优化,从而甚至在有时不使用可用槽中的一个或更多槽的实例中实现更高的效率。实际上,能够假设链路层业务包含许多不同类型的消息和业务,包括带有变化的报头长度和字段的消息和分组。能够定义在微片中定义的槽的相应长度和组织,以便与各种消息的统计或预期频率及这些消息的需要对应。例如,除其它示例外,还能够为每个小的槽定义两个更大的槽,以适应使用这些更大消息类型和报头长度的消息传递的预期统计频率。此外,如在图10的示例中,也能够提供灵活性以进一步适应变化的业务,如通过浮动有效负载字段。在一些实例中,能够固定微片格式,包括专用于微片中的特定槽的比特。
在图10的示例中,“Hdr”字段通常能够提供用于微片,并且表示用于微片的报头指示。在一些实例中,Hdr字段能够指示微片是报头微片还是数据微片。在数据微片中,微片仍能够保持有槽,但省略某些字段的使用或者将其替换为有效负载数据。在一些情况下,数据字段可以包括操作码和有效负载数据。在报头微片的情况中,能够提供多种报头字段。在图10的示例中,能够为每个槽提供“Oc”字段,Oc字段表示操作码。类似地,一个或更多槽能够具有对应的“msg”字段,其表示在槽设计成处理此类分组类型等的情况下将包括在槽中的对应分组的消息类型。除其它可能的字段外,“DNID”字段能够表示目的地节点ID,“TID”字段能够表示事务ID,“RHTID”字段能够表示请求者节点ID或归属跟踪器(home tracker)ID。此外,能够为一个或更多槽提供有效负载字段。另外,除其它示例外,CRC字段还能够被包括在微片内以提供对于该微片的CRC值。
在一些实现中,链路宽度能够在链路的寿命期内变化。例如,物理层能够在链路宽度状态之间转变,如向和从全通路宽度或原始通路宽度及不同或部分通路宽度转变。例如,在一些实现中,能够初始化链路以通过20个通路传送数据。随后,链路能够转变到部分宽度传送状态,其中除其它许多可能示例外,还仅活跃地使用8个通路。例如除其它示例外,还能够利用与由一个或更多功率控制单元(PCU)管理的功率管理任务有关的此类通路宽度转变。
如上所述,链路宽度能够影响微片吞吐量速率。图11是在8通路链路上发送的示例192比特微片的表示,产生了在24UI处微片的吞吐量。此外,如图11的示例中所示,在一些实例中,微片的比特能够无序被发送,例如除其它示例外,以便在传送中较早发送更多时间敏感字段(例如,微片类型字段(例如,数据或报头微片)、操作码等),保持或促进在微片中实施的特定检错或其它功能性。例如,在图11的示例中,在传送的第一个UI(即,UI0)期间在通路L7到L0上并行发送比特191、167、143、119、95、71、47及23,而在微片传送的第24个(或最后的)UI(即,UI23)期间发送比特168、144、120、96、72、48、24及0。应领会的是,在其它实现和示例中,能够利用其它排序方案、微片长度、通路宽度等。
在一些实例中,微片的长度能够是活跃通路的数量的倍数。在此类实例中,微片能够在所有活跃通路上均匀传送,并且微片的传送能够大致同时在整齐的(即,非重叠)边界处结束。例如,如图8的表示中所示,微片的比特能够被视为在4比特的连续编组或“半字节”中传送。在此示例中,192比特微片将在8通路链路上传送。由于192是8的倍数,因此,整个微片能够在24 UI中在8通路链路上整齐地被传送。在其它实例中,微片宽度可以不是活跃通路的数量的倍数。例如,图9显示在20个通路上传送的示例192比特的另一表示。由于192不能被20整除,因此,整个微片的传送将要求非整数数量的间隔(例如,9.6UI)。在此类情况下,能够通过前一微片的最后几比特来传送第二重叠微片,而不是浪费在传送的第10个UI期间中未利用的“额外”通路。微片的此类重叠或打乱能够在一些实现中导致交错的微片边界和无序发送的微片比特。除其它考虑外,用于传送的型式能够配置成允许在微片中较早传送微片的更多时间敏感的字段,保持检错和纠错。在物理层和链路层之一或两者中能够提供逻辑以根据此类型式来传送微片比特并且基于当前链路宽度在型式之间动态更改。除其它示例外,还能够提供另外的逻辑以重排序和重新构建来自此类打乱的或有序的比特流的微片。
在一些实现中,微片能够表征为报头微片(例如,承载分组报头数据)或数据微片(例如,承载分组有效载荷数据)。返回图10,能够定义一种微片格式,其包括三(3)个不同的槽(例如,0、1和2),允许在单个微片中传送最多三个报头(例如,在每个槽中一个报头)。在图10的示例中,提供了三个槽,即槽0、1和2。槽0能够提供有微片空间的72比特,其中22比特专用于消息报头字段并且50比特专用于消息有效负载空间。槽1能够提供有微片空间的70比特,其中20比特专用于消息报头字段并且50比特专用于消息有效负载空间。消息报头字段空间之间的不同能够被优化,以提供某些消息类型将被指定用于包括在槽0中(例如,其中利用更多消息报头编码)。能够提供占用实质上比槽0和1更少空间的第三槽、槽2,在此情况下利用微片空间的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所能提供的更多比特的报头进入链路层时,能够提供插槽算法(slotting algorithm)以允许其为了另外空间而接管槽1有效负载比特。也可以提供特殊控制(例如,LLCTRL)微片,其耗用全部三个槽价值的比特以满足其需要。对于链路部分繁忙的情况,插槽算法也可存在以允许利用各个槽,而其它槽不携带信息。
在一个实施例中,链路层能够另外定义特殊控制微片,其例如可用于调试消息和其它用途。在一个示例中,在设置启用调试控制字段时,可由链路层发送LLCTRL- DEBUG微片。在此比特未设置时,在链路上可不传送LLCTRL-DEBUG微片。调试分组可对显露通过HPI连接的装置的内部状态很重要,否则这些装置的内部状态不可访问。调试分组的内容也能够是实现特定的。内容能够包括像分支信息(来源IP和目的地IP)、时戳、内部事件触发器的指示等等的事物。显露的数据可例如对于诸如逻辑分析器等监视装置是用于后处理和失效分析。图12中示出调试消息类型的示例微片编码。
在一些实现中,诸如HPI等通用I/O互连(GPIO)架构的原理和协议能够用于实现缓冲存储器接口和对应协议。例如,上面概述的物理和链路层定义也能够在缓冲存储器协议中被实现。实际上,用于支持GPIO协议的物理和链路层的逻辑能够在支持缓冲存储器协议的接口再使用。缓冲存储器协议也能够具有消息类,如除其它示例外还有请求、响应和回写消息类。在缓冲存储器协议消息内的操作码值能够以与在HPI(或另一GPIO协议)中不同的方式解释时,在缓冲存储器协议和构建其所基于的GPIO互连中能够利用相同通用分组格式。实际上,另外的分组和微片字段能够对缓冲存储器协议和GPIO互连协议均是独特的。
在一些实现中,利用HPI的物理和链路层的缓冲存储器协议能够是事务接口和协议。这能够允许对于一系列接收的请求(例如,读请求),数据无序返回。在一些实现中,缓冲存储器接口能够用于将缓冲器芯片互连到CPU。在一个实现中,虽然一些协议跨缓冲存储器总线发送DRAM命令,如激活、读、写和刷新,但在本文中讨论的缓冲存储器协议的一些实现中,读或写命令能够简单地与地址一起被发送。缓冲器芯片随后能够将特定排(rank)和存储体(bank)解码,并且将请求分解成DRAM命令。也能够支持推测性和需求读。
转到图13,显示了简化的框图1300,示出包括由符合HPI的链路互连的CPU装置1305、1310的计算系统的示例拓扑。每个CPU 1305、1310能够使用对应缓冲存储器协议链路(“MemLink”),类似地连接到一个或更多相应缓冲器装置1315a-1。如上所述,在一些实现中,缓冲存储器协议互连能够基于GPIO协议,因为缓冲存储器协议的物理和链路层基于GPIO协议的相同物理和链路层定义(例如,HPI)。虽然图13中未示出,但使用GPIO协议,能够进一步将1305、1310连接到一个或更多下游装置。
如图13的示例中进一步所示,缓冲器装置1315a-l能够连接到存储器装置,如双列直插式存储器模块(DIMM)装置。对应于每个缓冲器装置的存储器能够被视为对于缓冲器装置连接到的CPU(例如,1305,1301)是本地的。然而,其它装置(包括另一CPU)能够通过使用符合GPIO协议的链路的其它插槽来访问存储器。在一些实现中,运行缓冲存储器协议的端口可只支持用于与存储器进行通信的命令和只支持缓冲存储器协议(即,不是GPIO协议和缓冲存储器协议)。另外,在一些实现中,GPIO互连协议可支持路由,并且指示此类信息(例如,在其分组中),如请求和目的地节点标识符。另一方面,缓冲存储器协议可以是不利用路由的点对点接口。因此,可在使用缓冲存储器协议发送的分组内调配在GPIO协议中使用的一些字段。相反,除其它示例外,字段还能够被指定用于携带地址解码信息主机到缓冲器。
在进一步的实现中,缓冲器装置1315a-l能够支持二级存储器拓扑,其中一定量的快速存储器(例如,DRAM)充当用于更大、更慢存储器(例如,非易失性存储器)的高速缓存。在一个此类实现中,除其它示例外,一个或更多缓冲器装置1315a-1还能够使用DDR作为近快速存储器,并且事务DDR DIMM作为更大的“远”存储器。事务DIMM能够利用协议(例如,DDR-事务(DDR-T)),使用事务命令与易失性存储器单列直插式存储器模块(SIMM)通信。
转到图14,展示了简化框图1400,显示连接到近和远存储器模块(例如,1405、1410)的缓冲器芯片1315的更详细表示。如在上面示例中所述,缓冲器芯片1315能够通过利用定义的缓冲存储器协议的缓冲存储器协议互连链路1415,以通信方式耦合到CPU装置或其它处理装置1305。缓冲器芯片1315能够包括执行另外功能的逻辑。例如,缓冲器芯片1315的实现能够包括存储器控制器1420、调度器1425、流控制逻辑1430及检错逻辑1435。逻辑能够使用硬件电路、固件和/或软件来实现。
在一些实现中,存储器控制器1420能够包括将请求转换成其存储器装置的存储器特定协议(例如,DDR4)的逻辑。存储器控制器1420能够从使用链路1415与缓冲器芯片1315进行通信的CPU 1305(或另一主机)的主机控制器逻辑1440提取这些存储器特定协议的细节。除其它功能性外,主机控制器逻辑1440能够将CPU(或主机)地址转换成存储器地址,包括跨通道和插槽的置换。调度器1425能够包括重排序和仲裁对请求的响应以取得更高性能的逻辑。缓冲器芯片1315能够另外提供诸如流控制和检错等特征。在一些实现中,流控制逻辑1430能够在调度器1425中实施,或以其它方式与调度器1425互操作以确保缓冲器芯片1315的更高效率和更高性能。检错逻辑1440能够包括支持纠错码检测方案的逻辑和用于启动检测到的错误的纠正或处理的逻辑。
如上所述,缓冲存储器协议的链路层能够基于GPIO协议的链路层。例如,在缓冲存储器协议中能够利用HPI协议(例如,在图10中描述和显示)的192比特3槽微片。缓冲存储器协议中的分组能够实施完整的命令。分组能够被实现为一个或更多微片。图15A-15C能够表示缓冲存储器协议中微片的实现。在一些实现中,能够经有报头和无报头存储器数据(MemData)分组的组合将读的数据从缓冲器装置发送回主机。在三个无报头微片(而不是如使用有报头微片时的五个)中能够传送完整的高速缓存行。无报头分组由此能够提供用于可以是接口的最受约束部分上更高的吞吐量。为适合于三个微片,无报头分组删除了多个字段,并且做出有关其值的假设。所做的假设可适用于大多数但非所有读的返回。如果任何假设不为真,则将使用包含所有字段的有报头分组。在一些实现中,有报头分组能够开始读的返回的序列,以允许早期识别跟踪器标识符(例如,HTID、RTID等),以便用于在事务缓冲存储器协议中映射读返回到读请求。
在一些实现中,无报头分组能够包含表1中概述的信息:
表1:无报头分组字段
字段 数量 描述
数据 512 64字节高速缓存行数据
目录 2 两个目录比特,与数据一起存储,通常作为ECC比特的一部分。
HTID 11 请求事务ID。由于早期HTID,分组包含用于<i>下一</i>读数据分组的HTID
CRC 48 每微片每CRC 16比特
HIB 3 报头指示比特。每微片1比特。对于无报头分组的每个微片,此比特始终为0。
此外,图15A-15C示出能够用于在读返回中传送完整高速缓存行的3个微片的序列(例如,微片0(在图15A)、微片1(在图15B)和微片2(在图15C))。表2提供在无报头分组中利用的三个微片的示例的概要:
表2:无报头分组
微片 内容
数据微片0 来自高速缓存行的第一32字节的数据
数据微片1 第一32字节的剩余部分加第二32字节的第一部分。
数据微片2 第二32字节的剩余部分
HIB比特能够设置成指示分组是有报头还是无报头。HIB可设置成指示仅用于在报头微片后数据微片的无报头分组。这允许某些其它分组在分组的中间交织。在交织的分组完成时,原始有报头分组的数据部分能够与微片中的HIB=0一起被发送。此技术也能够用于通过插入空微片来延迟数据分组。在一些实现中,在通常将要求报头时,通过为0的HIB比特表明无报头分组的开始。包括空微片的所有其它分组可包含设有HIB比特的报头。
如上所介绍的,有报头分组可以是长度为总共5个微片,并且可包括一个报头微片和4个数据微片。为降低空闲迟滞,有报头微片可发送数据微片1两次。第一次它只与来自第一32字节的数据一起被发送,并且称为微片1a。这允许在数据的第二32字节从存储器装置可用前发送微片。结果是对于空闲情况,重要的32字节数据块更早到达主机。随后能够第二次发送微片1,此次是完整的微片。它将包含第一32字节数据部分的重复加第二32字节部分。表3描述有报头分组的五个微片:
表3:有报头分组
微片 内容
报头 分组报头
数据微片0 来自高速缓存行的第一32字节的数据
数据微片1a 仅第一32字节的剩余部分。保留第二32字节部分。其它微片有效负载比特(RTID [6:3])与数据微片1相同。
数据微片1 完整的微片1。重新发送第一32字节部分。也包括第二32字节部分。
数据微片2 第二32字节的剩余部分
在一些实现中,有报头MemData分组可未被取消,并且将在数据微片之后。在知道也能够发送数据前,将不发送报头。在发送报头前可在缓冲器中不累加完全高速缓存行。
缓冲存储器接口能够支持多个不同的存储器写命令以将数据写到存储器。存储器写能够从主机(例如,1305)发送到缓冲器装置(例如,1315),以便由缓冲器装置(例如,1315)的存储器控制器(例如,1420)处理。图16A-16D是表示可由(例如,如缓冲存储器访问协议所定义的)缓冲存储器接口执行的示例存储器写事务的流程图1600a-d。例如,图16A示出示例标准存储器写(MemWr)命令。对存储器1605的写(例如,1615)(由缓冲器装置1315控制)能够由存储器写(MemWr)命令1610启动,并且通过由缓冲器装置1315返回到主机装置1305以指示写的完成(例如,1620a)来完成。在一些实现中,完成能够指示写是否成功。存储器写命令1610能够包括事务标识符(TID),并且对应完成能够包括编码有相同TID。
在存储器写(MemWr)命令1610的一个示例中,写数据和目录信息能够连同MemWr分组一起被发送。在一个实现中,MemWr分组能够包括四个微片(诸如带有如上所述定义的格式的微片)。在此示例中,写数据能够被编码在分组的第二到第四个微片中。第一微片能够是报头微片,剩余的三个微片是数据微片。在一个示例中,通过利用三槽微片格式,存储器写只出现在槽0中,而分组的槽1和2可包含其它命令。例如,除其它示例外,存储器读(MemRd)命令还可在槽1中。
单个完成(CmpU)能够在单个分组中被发送。例如,微片的一个或更多槽能够专用于传递对应于单个存储器写请求的完成(CmpU)。在其它实例中,在实施打包的写完成(MultiCmpu)的分组中能够返回用于特定存储器写1610的完成1620a,在打包的写完成中,响应主机1305的多个写请求,在单个分组或微片中包括或“打包”对应于由缓冲器装置进行的多个存储器写的多个写完成。在一些实现中,一旦对应写变得全局可见(即,它无需等待对存储器的写完成),完成(CmpU或MultiCmpU)便能够被发送。
转到图6B,表示的是存储器写部分请求事务。除字节掩码(例如,64比特字节掩码)连同MemWrPtl分组一起被发送外,存储器写部分(MemWrPtl)请求1612可类似于标准存储器写(MemWr)。在使用三槽微片的实现中,字节掩码能够代替MemWrPtl的报头微片中的槽1和2。MemWrPtl命令612能够产生对存储器的读-修改-写(RMW)(例如,在1625b、1630b、1635),从而将读数据和部分写数据合并。通过与MemWrPtl一起发送的目录数据,能够更新目录。关于存储器写(MemWr),对MemWrPtl的响应能够是CmpU或MultCmpU(1620b),其能够在部分写变得全局可见时被发送。在一些实例中,完成1620b可能等待读部分完成以简化在存储器控制器中的逻辑(例如,这将避免对相同地址的将来读命中缓冲器中只部分有效的高速缓存行的情况)。在完成1620b后的任何将来读将返回合并的数据。
图16C示出存储器写冲刷流事务。存储器写冲刷流(MemWrFlush)命令1640能够由于在CPU或主机1305中的持久性提交而被发送。MemWrFlush命令1640能够被发送到由地址确定为目标的特定存储器控制器。命令1640的目的可以是促使缓冲器装置1315提交所有以前的写到持续性存储器(在1645)。在将完成1620c发送回主机前,存储器控制器能够冲刷1645对持久性存储器的所有未决写。在存储器控制器(在1315)保证数据将使其到达持久性存储器前,完成1620将不会被发送到主机1305。在DDR-T的情况中,这意味着涉及这些写的任何DDR-T错误流已完成,并且保证数据已由DDR-T DIMM正确接收。从那点来说,DDR-TDIMM将保证甚至在电力失效的情况中,数据也被写到持久性存储器。MemWrFlush命令1640也可通过CmpU或MultCmpU来完成。
作为另一示例,图16D表示涉及使无效命令(Memlnv)1650的事务。使无效命令1650不返回读数据,相反,将更新目录(在1655),这能够包括读当前目录状态(例如,在1625d、1630d)并且随后将更改写到(在需要时)目录(在1655)。使无效命令(例如,1650)能够包括多个类型的使无效命令。缓冲器装置(例如,1315)能够通过使用单个完成CmpU或打包的完成MultCmpU来响应任何此类使无效命令1650。除其它可能示例外,其它存储器写能够包括例如存储器写包含命令和存储器写包含部分非包含命令。相应完成(例如,CmpU或MultCmpU)能够由缓冲器装置在响应中返回。
系统能够对迟滞特别敏感。存储器迟滞能够对CPU性能很重要。通过缓冲互连的存储器访问的性能能够得以改进以增强CPU性能。例如,通过增大链路带宽,能够以高利用率降低存储器迟滞。在一个实现中,通过在完成存储器写事务时最小化开销,能够至少部分优化存储器链路的读带宽。
在高带宽条件中,从存储器控制器到主机的缓冲存储器接口可主要用于将读数据发送回主机核。然而,也可将写与对应完成一起发送。不同于读或其它命令,写完成可不对迟滞敏感,表现在主控的转发进度未被延迟,或者不取决于对应写请求的完成。然而,写完成不能被无限期地保存,因为发送完成消息允许主机释放缓冲器资源以允许新事务发出。此外,写完成通常比读响应更小得多,因为写完成一般不携带从存储器返回的数据。
在一个示例中,缓冲器装置及至少部分在缓冲器装置的硬件中实现的其组件逻辑能够等待将写完成发送到多个完成的存储器写,使得多个写完成能够一次性被发送(例如,在单个微片中),由此跨多个写完成散布关联开销。此外,此类打包的写完成能够如其它完成一样在带内发送,并且不要求提供可能造成另外的硅、功率和/或平台成本的另外导线或其它特征。通过降低写完成消耗的带宽量,打包的或多个写完成能够帮助优化缓冲存储器带宽。多个写完成能够被紧密地打包到单个微片中,而不是如通过缓冲存储器链路的一些实现用于消息的传统量子,让写完成消耗微片价值的总线带宽。在逻辑上,此单个微片因而看上去像许多写完成,并且除其它示例优点外,还为更多读数据释放总线上的空间。
图17A-17B是示出根据至少一个实施例的原理,涉及打包的写完成的示例简化事务的流程图1700a、b。例如,在图17A的示例中,缓冲器装置能够保持队列、缓冲器或对来自特定主机(例如,1305)的各种存储器写命令的完成进行排队和计数(例如,在1701)的其它资源。例如,在1701,写完成尚未被排队。存储器写(MemWr)1610a能够从主机1305被发送到缓冲器装置1315,并且缓冲器装置1315的存储器控制器能够相应地促使写数据被写(在1615a)到存储器1605。缓冲器装置1315能够生成(或以其它方式确定)要为存储器写1610a发送的对应写完成。写完成能够根据存储器写操作1610a的事务标识符(TID)(例如,而不是被写到的存储器地址)被编排索引。
在此示例中,不返回存储器写命令1610a的写完成,缓冲顺装置1315能够开始形成要在打包的写完成分组中一起发送的一组写完成。相应地,缓冲器装置1315能够识别(例如,在1702)一个写完成是需要的,并且在等待被发送。缓冲器装置能够等待发送存储器写命令1610a的完成,并且同时可能返回多个读响应到主机1305,以及接收和处理多个存储器写请求(以及读请求和其它命令)。例如,能够接收另一MemWr请求1610b及MemWrPtl 1612,随后是另一MemWr 1610c,并且缓冲器装置能够将对应数据写(例如,在1615b、1635、1615c)到存储器1605。三个另外的写完成能够被确定将在响应中发送,并且能够与用于在此示例系列中第一存储器写1610a的写完成一起排队。相应地,(如在1703所示),能够将四个写完成排队以便发送。
在图17A-17B的特定说明性示例中,缓冲器装置1315能够配置成在单个打包的写完成中一次返回最多四个写完成。在打包的写完成中编码的写完成的数量能够是基于例如专用于在缓冲器装置中将写完成排队的存储器结构的大小。在单个打包的写完成中编码的写完成的数量也能够或备选是基于存储器链路访问协议中使用的分组和/或微片的定义的结构及用于映射完成到请求的索引的大小。例如,单个微片的可用比特能够被最大化,以便将尽可能多的写完成打包到单个微片中。除其它实现外,在微片被定义成支持多个槽的实现中,一部分时槽还可被定义成支持打包的写完成,并且这些槽中的可用比特能够被最大化,使得最大数量的写完成被打包到保留槽中。在此示例中,缓冲器装置1315将响应排队四(4)个写完成(在1703),生成和发送打包的写完成分组(例如,1705a)。相应地,响应完成用于写请求1610a、1610b、1612和1610c的写,四个写完成准备就绪,并且被打包成打包的写完成1705,该打包的写完成被发送到主机1305。缓冲器装置1315随后能够清空其队列(将完成队列归零(在1704)),并且过程能够通过第五存储器写1610d产生被排队(在1706)的另一写完成以对应于完成的写1615d而继续。
在图17B中,表示了图17A的示例的备选版本。关于图17A的示例,接收并且处理(在1615a、1615b、1625、1630、1635)存储器写请求1610a、1610b和1612。此外,在这三个写后,缓冲器装置1315能够将要在打包的写完成分组中发送的三个写完成排队(在1707)。然而,在图17B的示例中,在发送打包的写完成前,缓冲器装置1305可不始终等待在单个打包的写完成中填充四个可用空间。例如,在一些实现中,缓冲器装置1305能够保持定时器或事务计数器,使得缓冲器装置1305将在定时器的到期或写完成队列的充满和/或打包的写完成(即,处理第四写请求)的更早时间发送打包的写完成(例如,1705b)。作为示例,存储器缓冲器中打包的写完成流应具有阻止任何单独完成在缓冲器中等等太长的超时阈值(例如,100个微片时间或另一值,诸如作为静态或动态性能调谐阈值形成的一个值)。在不要求完全打包的写完成分组的情况下,在收集足够的未决写完成以填充打包的写完成前,发送打包的写完成1705b。但发送部分打包的写完成1705b能够清空未决写完成队列(如在1708所示),而表示第一写完成的下一存储器写重新填充队列。在其它实现中,除其它备选实现外,打包的写完成分组的填充还可以是其被允许发送前的要求(例如,以最大化带宽)。
在一个示例实现中,协议能够定义192比特,具有16比特CRC字段的3槽微片,诸如根据上述图10或图15A-15C的示例的原则格式化的片微。打包的写完成分组格式能够被定义成采用全部192个微片。分组能够具有某个类型,其将占用单个微片并且将包括无数据的响应(诸如完成)。图18示出打包的写完成分组1800的一个此类实现。微片能够包括操作码字段和消息类字段,其能够组合以形成微片的操作码,并且指示微片的通用格式,以及还指示微片是打包的写完成分组。在图18的示例中,使用了三个可用微片槽的两个槽(例如,槽0和1),并且留下第三个(且最小的槽2)未使用。除了对图18中显示的格式的其它更改外,备选实现还可利用所有三个槽。
在图18的特定示例中,在单个192比特微片中能够发送最多9个完成。能够允许发送更少的完成。四比特完成计数字段(例如,组合形成字段的比特3:0的“Cnt 3”和“Cmp Cnt[2:0]”)能够被编码以指示多个个完成是有效的并且包括在微片1800中。主机能够将此值解码以解释从打包的写完成分组1800中提取多少个完成。微片1800中的每个完成能够包括相应的十一(11)比特索引字段(“HTID”),其中完成的对应写命令的TID将与四(4)比特目的地节点标识符(“DNID”)字段编码在一起,以便在编码目录状态信息中使用(例如,在完成是响应使无效命令时)。作为示例,除其它示例编码方案外,四比特DNID还能够被编码有2比特节点标识符值和2比特目录状态值。
在一些实例中,打包的写完成(MultCmpU)可产生可能另外的确认(ACK)/信用(CRD)累积,因为更少的报头微片将被注入于满负载。除其它示例外,还能够在缓冲器大小调整中(以支持此类累积)以及通过提供用于信用返回微片的增大注入(或甚至提供用于在打包的写完成微片的备选实现中的信用返回字段),将此考虑在内。在一些实现中,类似于最后子弹(bullet)中提及的那个)。
虽然图18显示打包的写完成微片格式的说明性示例,但其它实现可采纳微片空间的其它字段和组织。例如,能够定义两个备选打包的写完成微片格式(对应于在缓冲器装置的两个不同写完成缓冲器),一个用于包括目录信息编码的另外开销的使无效完成,并且第二个用于只包括完成的索引值的其它存储器写完成。应领会的是,在不脱离本公开的范围的情况下,其它示例微片大小、微片格式、打包的写完成格式等可利用本文中描述的原理来实现打包的写完成。
HPI和关联的缓冲存储器访问协议能够被并入到任何多种计算装置和系统中,除其它示例外,还包括大型机(mainframe)、服务器系统、个人计算机、移动计算机(如平板式计算机、智能电话、个人数字系统等)、智能器具、游戏或娱乐控制台及机顶盒。例如,参照图19,图中显示根据本发明的一实施例的第二系统1900的框图。如图19中所示,多处理器系统1900是点对点互连系统,并且包括经点对点互连1950耦合的第一处理器1970和第二处理器1980。每个处理器1970和1980可以是某一版本的处理器。在一个实施例中,1952和1954是诸如高性能架构的串行、点对点相干的互连构造的部分。因此,本发明可在QPI架构内被实现。
虽然只显示带有两个处理器1970、1980,但要理解的是,本发明的范围并不限于此。在其它实施例中,一个或更多另外的处理器可在给定处理器中存在。处理器1970和1980显示为分别包括集成存储器控制器单元1972和1982。处理器1970也包括作为其总线控制器单元的一部分的点对点(P-P)接口1976和1978;类似地,第二处理器1980包括P-P接口1986和1988。处理器1970、1980可经使用P-P接口电路1978和1988的点对点(P-P)接口1950交换信息。如图19中所示,IMC 1972和1982将处理器与相应存储器,即存储器1932和存储器1934耦合,这些存储器可以是在本地附接到相应处理器的主存储器的部分。
处理器1970、1980各自经使用点对点接口电路1976、1994、1986、1998的各个P-P接口1952、1954与芯片集1990交换信息。芯片集1990也沿高性能图形互连1939,经图形接口1992与高性能图形电路1938交换信息。
共享高速缓存(未显示)可包括在处理器中或者在两个处理器外,但经P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集1990可经接口1996耦合到第一总线1916。在一个实施例中,第一总线1916可以是外围组件互连(PCI)总线,或诸如PCI高速总线或另一第三代I/O互连总线等总线,但本发明的范围并不限于此。
如图19中所示,各种I/O装置1914可连同将第一总线1916耦合到第二总线1920的总线桥1918,耦合到第一总线1916。在一个实施例中,第二总线1920包括低引脚数(LPC)总线。在一个实施例中,各种装置耦合到第二总线1920,例如包括键盘和/或鼠标1922、通信装置1927和诸如经常包括指令/代码和数据1930的磁盘驱动器或其它海量存储装置等存储单元1928。此外,音频I/O 1924显示为耦合到第二总线1920。注意,其它架构是可能的,其中包括的组件和互连架构不同。例如,系统可实现多支路总线或其它此类架构,而不是图19的点对点架构。
现在转到图20,图中显示的是多核处理器的一实施例的框图。如图20的实施例中所示,处理器2000包括多个域。具体而言,核域2030包括多个核2030A-2030N,图形域2060包括具有媒体引擎2065的一个或更多图形引擎,以及系统代理器域2010。
在各种实施例中,系统代理器域2010处理功率控制事件和功率管理,使得域2030和2060的各个单元(例如,核和图形引擎)可独立控制,以按照给定单元中发生的活动(或不活动),在适当的功率模式/级别(例如,活跃、特播(turbo)、睡眠、休眠、深度睡眠或其它像高级配置功率接口的状态)来动态操作。域2030和2060中的每个可在不同电压和/或功率操作,并且所述域内的各个单元各自还可能在独立的频率和电压操作。注意,虽然只显示带有三个域,但理解本发明的范围在此方面不受限制,并且另外的域可在其它实施例中存在。
如所示的,每个核2030除各种执行单元和另外的处理元件外,还包括低级高速缓存。此处,各种核相互耦合,并且耦合到由末级高速缓存(LLC)2040A-2040N的多个单元或分片形成的共享高速缓存存储器;这些LLC经常包括存储和高速缓存控制器功能性,并且在核之间以及可能也在图形引擎之间被共享。
如所示的,环形互连2050将核耦合在一起,并且经多个环形制动(ring stop)2052A-2052N在核域2030、图形域2060和系统代理器电路2010之间提供互连,每个环形制动在核与LLC分片之间的耦合处。如图20中所示,互连2050用于携带各种信息,包括地址信息、数据信息、确认信息和探听/无效信息。虽然示出的是环形互连,但可利用任何已知管芯上互连或构造。作为说明性示例,可以类似方式利用上面讨论的一些构造(例如,另一管芯上互连、芯片上系统构造(OSF)、高级微控制器总线架构(AMBA)互连、多维网状构造或其它已知互连架构)。
还如所示的,系统代理器域2010包括将提供关联显示器的控制和到关联显示器的接口的显示引擎2012。系统代理器域2010可包括其它单元,如:提供到系统存储器(例如,通过多个DIMM实现的DRAM)的接口的集成存储器控制器2020、执行存储器相干性操作的相干性逻辑2022。多个接口可存在,以能够实现处理器与其它电路之间的互连。例如,在一个实施例中,提供了至少一个直接媒体接口(DMI)2016接口及一个或更多PCIe™接口2014。显示器引擎和这些接口一般经PCIe桥2018耦合到存储器。还有,为提供用于在诸如另外的处理器或其它电路等其它代理器之间的通信,可提供一个或更多其它接口。
虽然本发明已相对有限数量的实施例进行了描述,但本领域的技术人员将领会到由此产生的多种修改和变化。随附权利要求旨在涵盖该本发明真正精神和范围内的所有此类修改和变化。
设计可经历从创建到仿真到制作的各种阶段。表示设计的数据可以多种方式来表示这个设计。首先,如在仿真中有用的,硬件可使用硬件描述语言(HDL)或另一功能描述语言来表示。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某个阶段,大多数设计达到表示硬件模型中各种装置的物理位置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩膜的不同掩膜层上存在或不存在各种特征的数据。在一些实现中,此类数据可以诸如图形数据系统II(GDS II)、开放式作品系统交换标准(OASIS)等数据库文件格式或类似格式被存储。
在一些实现中,除其它示例外,基于软件的硬件模型、HDL和其它功能描述语言对象还能够包括寄存器传送语言(RTL)文件。此类对象能够是机器可解析的,使得设计工具能够接受HDL对象(或模型),解析HDL对象以了解描述的硬件的属性,并且从对象中确定物理电路和/或芯片上布局。设计工具的输出能够用于制造物理装置。例如,除了为实现HDL对象中建模的系统而将实现的其它属性外,设计工具还能够从HDL对象来确定各种硬件和/或固件元件的配置,如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑。设计工具能够包括用于确定芯片上系统(SoC)和其它硬件装置的拓扑和构造配置的工具。在一些情况下,HDL对象能够用作用于开发模型和设计文件的基础,模型和设计文件能够由制造设备用于制造描述的硬件。实际上,HDL对象本身能够作为输入提供到制造系统软件以促成描述的硬件。
在设计的任何表示中,数据可存储在任何形式的机器可读媒体中。存储器或磁或光存储装置(诸如盘)可以是机器可读媒体,用于存储经调制或以其它方式生成以传送信息的光波或电波传送的此类信息。传送指示或携带代码或设计的电载波时(达到执行电气信号的复制、缓冲或重新传送的程度),形成了新的副本。因此,通信提供商或网络提供商可在有形机器可读媒体上至少暂时存储实施本公开的实施例的技术的物品,例如编码到载波中的信息。
在本文中使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如微控制器,其关联于非暂态媒体,以存储适应于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指硬件,其专门配置成识别和/或执行要保存在非暂态媒体上的代码。此外,在另一实施例中,模块的使用指包括代码的非暂态媒体,其专门适应于由微控制器执行以执行预定的操作。而且如能够推断的,在仍有的另一实施例中,术语模块(在此示例中)可指微控制器和非暂态媒体的组合。通常,示为分离的模块边界共同地变化,并可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保持一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,如晶体管、寄存器或其它硬件,如可编程逻辑装置。
在一个实施例中,短语“配置成”的使用指对设备、硬件、逻辑或元件进行布置,放置在一起,制造,许诺销售,导入和/或设计以执行指定或确定的任务。在此示例中,不在操作的设备或其元件如果经设计、耦合和/或互连以执行指定的任务,则它仍“配置成”执行所述指定的任务。作为纯说明性示例,逻辑门可在操作期间提供0或1。但“配置成”提供使能信号到时钟的逻辑门未包括可提供1或0的每个可能逻辑门。相反,逻辑门是在1或0输出将启用时钟的操作期间以某一方式耦合的逻辑门。再次要注意的是,术语“配置成”的使用不要求操作,而是转而关注于设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件设计成在设备、硬件和/或元件在操作时执行特定任务。
此外,在一个实施例中,短语“用于”、“能够/能够以”和/或“可操作以”的使用指以此类方式设计的某一设备、逻辑、硬件和/或元件能够实现以指定方式使用该设备、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,“用于”,“能够以”或“可操作以”的使用指设备、逻辑、硬件和/或元件的潜在状态,其中设备、逻辑、硬件和/或元件未在操作,但以此类方式被设计以能够实现以指定方式使用设备
在本文中使用时,值包括数、状态、逻辑的状态或二进制逻辑的状态的任何已知表示。通常,逻辑级别、逻辑值或逻辑的值的使用也表示为1和0,这简单地表示二进制逻辑状态。例如,1指高逻辑级别,并且0指低逻辑级别。在一个实施例中,诸如晶体管或闪存单元等存储单元可以能够保存单个逻辑的值或多个逻辑的值。然而,计算机系统中值的其它表示已被使用。例如,十进制数十也可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
另外,状态可由值或部分值来表示。作为示例,诸如逻辑的一的第一值可表示默认或初始状态,而诸如逻辑的零的第二值可表示非默认状态。另外,在一个实施例中,术语重置和设置分别指默认和更新的值或状态。例如,默认值可能包括高逻辑的值,即重置,而更新的值可能包括低逻辑的值,即设置。注意,值的任何组合可用于表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可经在机器可访问、机器可读、计算机可访问或计算机可读媒体上存储的可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读媒体包括以机器(如,计算机或电子系统)可读的形式提供(即,存储和/或传送)信息的任何机制。例如,非暂态机器可访问媒体包括诸如静态RAM(SRAM)或动态RAM(DRAM)等随机访问存储器(RAM)、ROM、磁或光存储媒体、闪速存储器装置、电存储装置、光存储装置、声存储装置、用于保存从暂态(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置等,其要与可从中接收信息的非暂态媒体区分开。
用于为逻辑编程以执行本发明的实施例的指令可被存储在系统中的存储器内,如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令能够经网络或借助于其它计算机可读媒体被分发。因此,机器可读媒体可包括用于以机器(例如,计算机)可读的形式存储或传送信息的任何机制,但不限于软盘、光盘、紧致盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、可擦除编程只读存储器(EPROM)、电擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或经电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)在信息通过因特网的传送中使用的有形机器可读存储装置。相应地,计算机可读媒体包括适合于以机器(例如计算机)可读的形式来存储或传送电子指令或信息的任何类型的有形机器可读媒体。
下面的示例与根据本说明书的实施例有关。下面的示例与根据本说明书的实施例有关。一个或更多实施例可提供设备、系统、机器可读存储装置、机器可读媒体、基于硬件和/或软件的逻辑(例如,存储器缓冲器逻辑)和方法,以识别与通过缓冲存储器接口接收的来自主机装置的多个写请求相对应的对存储器的多个完成的写,并且将包括与所述多个完成的写相对应的多个写完成的完成分组发送到主机装置。
在至少一个示例中,存储器缓冲器逻辑还将接收所述多个写请求,并且促使对应数据被写到存储器。
在至少一个示例中,所述多个写请求将通过缓冲存储器接口从主机装置被接收。
在至少一个示例中,所述多个写请求的每个写请求具有对应事务标识符,并且将包括在完成分组中的写完成中的每个写完成指示所述事务标识符中的对应一个。
在至少一个示例中,所述写完成的至少一个特定写完成将对应于使无效请求,所述使无效请求将更新目录状态,并且该特定写完成将指示对应于所述使无效请求的目录信息。
在至少一个示例中,完成分组将包括完成计数字段以指示与所述多个写完成相对应的完成的量。
在至少一个示例中,完成的量受到完成分组中能够打包的完成的最大数量的约束。
在至少一个示例中,完成的最大数量是至少九。
在至少一个示例中,所述多个写完成包括小于该最大数量,并且完成分组将与小于该最大数量的写完成一起被发送。
在至少一个示例中,完成分组包括单个微片。
在至少一个示例中,所述单个微片根据协议被定义成在微片中支持三个槽。
在至少一个示例中,所述槽的至少两个槽用于所述多个写完成的编码。
在至少一个示例中,存储器缓冲器逻辑将包括存储器控制器。
在至少一个示例中,所述多个写请求的至少第一请求是第一类型的写请求,并且所述多个写请求的至少第二请求是第二类型的写请求。
在至少一个示例中,写请求的第一和第二类型被包括在多个写请求类型中,并且所述多个写请求类型包括普通存储器写请求、存储器写部分请求、存储器写冲刷流请求及使无效请求。
一个或更多实施例可提供缓冲器芯片,其包括存储器控制器以响应从单独主机装置接收的多个写请求而访问存储器中的数据,完成与所述多个写请求关联的对存储器的写,生成完成分组以包括对于所完成的对存储器的写的多个写完成,以及将完成分组发送到主机装置。
在至少一个示例中,提供了队列以在生成完成分组前将写完成进行排队。
一个或更多实施例可提供一种系统以包括缓冲器芯片、要通过缓冲器芯片来访问的存储器及通过存储器访问链路耦合到缓冲器芯片的处理器块。缓冲器芯片能够包括逻辑以用于识别与通过存储器访问链路接收的来自处理器块的多个写请求相对应的对存储器的多个完成的写,并且通过存储器访问链路将完成分组发送到处理器块,其中完成分组将包括与所述多个完成的写相对应的多个写完成。
在至少一个示例中,处理器块将通过通用输入/输出(GPIO)互连链路与一个或更多其它装置进行接口,其中存储器访问链路不同于GPIO互连链路,并且存储器访问链路的物理层是基于GPIO互连链路的物理层。
贯穿此说明书对“一个实施例”或“一实施例”的引用指与该实施例有关描述的特定特征、结构或特征被包括在本发明的至少一个实施例中。因此,贯穿此说明书在各个位置中短语“在一个实施例”或“在一实施例中”的出现不一定全部指相同实施例。此外,特定的特征、结构或特性可在一个或更多实施例中以任何适合的方式被组合。
在前面所述说明书中,已参照特定示范实施例给出了详细描述。然而,将明白,在不脱离如随附权利要求所述的本发明的更广精神和范围的情况下,可对其进行各种修改和更改。相应地,说明书和附图要在说明性意义而不是限制性意义中被看待。此外,实施例和其它示范语言的上述使用不一定指相同实施例或相同示例,而是可指不同和有区别的实施例及可能相同的实施例。

Claims (21)

1.一种用于管理计算机存储器的设备,所述设备包括:
存储器缓冲器逻辑,用于:
识别对存储器的多个完成的写,其中所述多个完成的写将对应于通过缓冲存储器接口接收的来自主机装置的多个写请求;以及
将完成分组发送到所述主机装置,其中所述完成分组将包括多个字段,所述多个字段的至少子集将要与对应于所述多个完成的写的多个写完成中的相应的写完成一起编码,
其中,所述完成分组包括单个微片,
其中,所述微片包括至少三个槽,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第一槽中,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第二槽中,并且留下所述至少三个槽中的至少之一未使用。
2.如权利要求1所述的设备,其中所述存储器缓冲器逻辑还将接收所述多个写请求,并且促使对应数据被写到存储器。
3.如权利要求2所述的设备,其中所述多个写请求将通过缓冲存储器接口从所述主机装置被接收。
4.如权利要求1所述的设备,其中所述多个写请求的每个写请求具有对应事务标识符,并且将包括在所述完成分组中的所述写完成的每个写完成指示所述事务标识符中的对应一个。
5.如权利要求1所述的设备,其中所述写完成的至少一个特定写完成将对应于使无效请求,所述使无效请求将更新目录状态,并且所述特定写完成将指示对应于所述使无效请求的目录信息。
6.如权利要求1所述的设备,其中所述完成分组将包括完成计数字段以指示与所述多个写完成相对应的完成的量。
7.如权利要求6所述的设备,其中完成的所述量受到所述完成分组中能够打包的完成的最大数量的约束。
8.如权利要求7所述的设备,其中完成的所述最大数量是至少九。
9.如权利要求7所述的设备,其中所述多个写完成包括小于所述最大数量,并且所述完成分组将与小于所述最大数量的写完成一起被发送。
10.如权利要求1所述的设备,其中所述存储器缓冲器逻辑将包括存储器控制器。
11.如权利要求1所述的设备,其中所述多个写请求的至少第一写请求是第一类型的写请求,并且所述多个写请求的至少第二写请求是第二类型的写请求。
12.如权利要求11所述的设备,其中写请求的所述第一和第二类型被包括在多个写请求类型中,并且所述多个写请求类型包括普通存储器写请求、存储器写部分请求、存储器写冲刷流请求以及使无效请求。
13.一种缓冲器芯片,包括:
存储器控制器,用于:
响应从单独主机装置接收的请求而访问存储器中的数据,其中所述请求将包括多个写请求;
完成与所述多个写请求关联的对存储器的写;
生成完成分组以包括多个字段,所述多个字段的至少子集将要与对于所完成的对存储器的写的多个写完成中的相应的写完成一起编码;以及
将所述完成分组发送到所述主机装置,
其中,所述完成分组包括单个微片,
其中,所述微片包括至少三个槽,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第一槽中,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第二槽中,并且留下所述至少三个槽中的至少之一未使用。
14.如权利要求13所述的缓冲器芯片,还包括用于在生成所述完成分组前将所述写完成排队的队列。
15.一种用于操作存储器的方法,包括:
识别对存储器的多个完成的写,其中所述多个完成的写将对应于通过缓冲存储器接口接收的来自主机装置的多个写请求;以及
将完成分组发送到所述主机装置,其中所述完成分组将包括多个字段,所述多个字段的至少子集将要与对应于所述多个完成的写的多个写完成中的相应的写完成一起编码,
其中,所述完成分组包括单个微片,
其中,所述微片包括至少三个槽,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第一槽中,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第二槽中,并且留下所述至少三个槽中的至少之一未使用。
16.一种用于操作存储器的系统,包括用于执行如权利要求15所述的方法的部件。
17.如权利要求16所述的系统,其中所述部件包括编码有指令的计算机可读介质,所述指令在被执行时促使机器执行如权利要求15所述的方法。
18.一种用于管理计算机存储器的系统,所述系统包括:
缓冲器芯片;
存储器,要通过所述缓冲器芯片被访问;
处理器块,通过存储器访问链路被耦合到所述缓冲器芯片,
其中所述缓冲器芯片包括用于执行以下操作的逻辑:
识别对存储器的多个完成的写,其中所述多个完成的写将对应于通过所述存储器访问链路接收的来自所述处理器块的多个写请求;以及
通过所述存储器访问链路将完成分组发送到所述处理器块,其中所述完成分组将包括多个字段,所述多个字段的至少子集将要与对应于所述多个完成的写的多个写完成中的相应的写完成一起编码,
其中,所述完成分组包括单个微片,
其中,所述微片包括至少三个槽,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第一槽中,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第二槽中,并且留下所述至少三个槽中的至少之一未使用。
19.如权利要求18所述的系统,其中所述处理器块将通过通用输入/输出(GPIO)互连链路与一个或更多其它装置进行接口,其中所述存储器访问链路不同于所述GPIO互连链路,并且存储器访问链路的物理层是基于所述GPIO互连链路的物理层。
20.一种计算机可读介质,在其上已存储指令,所述指令在被执行时促使处理器执行如权利要求15所述的方法。
21.一种用于操作存储器的设备,包括:
用于识别对存储器的多个完成的写的部件,其中所述多个完成的写将对应于通过缓冲存储器接口接收的来自主机装置的多个写请求;以及
用于将完成分组发送到所述主机装置的部件,其中所述完成分组将包括多个字段,所述多个字段的至少子集将要与对应于所述多个完成的写的多个写完成中的相应的写完成一起编码,
其中,所述完成分组包括单个微片,
其中,所述微片包括至少三个槽,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第一槽中,所述多个字段中的两个或更多字段将要被包括在所述至少三个槽中的第二槽中,并且留下所述至少三个槽中的至少之一未使用。
CN201580064609.8A 2014-12-25 2015-11-27 打包的写完成 Active CN107438838B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/583147 2014-12-25
US14/583,147 US10061719B2 (en) 2014-12-25 2014-12-25 Packed write completions
PCT/US2015/062821 WO2016105853A1 (en) 2014-12-25 2015-11-27 Packed write completions

Publications (2)

Publication Number Publication Date
CN107438838A CN107438838A (zh) 2017-12-05
CN107438838B true CN107438838B (zh) 2022-01-21

Family

ID=56151369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580064609.8A Active CN107438838B (zh) 2014-12-25 2015-11-27 打包的写完成

Country Status (5)

Country Link
US (1) US10061719B2 (zh)
EP (1) EP3238079B1 (zh)
CN (1) CN107438838B (zh)
TW (1) TWI605343B (zh)
WO (1) WO2016105853A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US10061719B2 (en) 2014-12-25 2018-08-28 Intel Corporation Packed write completions
US11068299B1 (en) * 2017-08-04 2021-07-20 EMC IP Holding Company LLC Managing file system metadata using persistent cache
US11194524B2 (en) 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US10684965B2 (en) * 2017-11-08 2020-06-16 Advanced Micro Devices, Inc. Method to reduce write responses to improve bandwidth and efficiency
US11449489B2 (en) * 2017-11-09 2022-09-20 International Business Machines Corporation Split transaction coherency protocol in a data processing system
US11321249B2 (en) 2018-03-26 2022-05-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDS in an array
US10761939B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Powering-down or rebooting a device in a system fabric
JP2020144410A (ja) 2019-03-04 2020-09-10 キオクシア株式会社 メモリコントローラ
US11038800B2 (en) * 2019-08-28 2021-06-15 Nvidia Corporation Techniques for reducing the overhead of providing responses in a computing network
US11816052B2 (en) * 2019-10-22 2023-11-14 Intel Corporation System, apparatus and method for communicating telemetry information via virtual bus encodings
US11588745B2 (en) 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11580044B2 (en) * 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
NL2029960B1 (en) * 2021-01-13 2023-07-13 Intel Corp Logical physical layer interface specification support for pcie 6.0, cxl 3.0, and upi 3.0 protocols
CN113158227B (zh) * 2021-03-08 2022-10-11 重庆邮电大学 一种基于Fabric的数据库访问日志上链方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875313A (en) * 1997-04-08 1999-02-23 National Instruments Corporation PCI bus to IEEE 1394 bus translator employing write pipe-lining and sequential write combining
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130958B2 (en) * 2003-12-02 2006-10-31 Super Talent Electronics, Inc. Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes
US8635410B1 (en) * 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US6549977B1 (en) * 2001-05-23 2003-04-15 3Ware, Inc. Use of deferred write completion interrupts to increase the performance of disk operations
US7752281B2 (en) * 2001-11-20 2010-07-06 Broadcom Corporation Bridges performing remote reads and writes as uncacheable coherent operations
US7062577B2 (en) 2002-12-18 2006-06-13 Lsi Logic Corporation AMBA slave modular bus interfaces
US20060179183A1 (en) 2005-02-09 2006-08-10 International Business Machines Corporation Single burst completion of multiple writes at buffered DIMMs
US7788435B2 (en) * 2008-01-09 2010-08-31 Microsoft Corporation Interrupt redirection with coalescing
TW201015321A (en) * 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method
US8161221B2 (en) 2008-11-25 2012-04-17 Hitachi, Ltd. Storage system provided with function for detecting write completion
US8250328B2 (en) 2009-03-24 2012-08-21 Micron Technology, Inc. Apparatus and method for buffered write commands in a memory
US9354823B2 (en) * 2012-06-06 2016-05-31 Mosys, Inc. Memory system including variable write burst and broadcast command scheduling
US8769039B2 (en) * 2011-01-21 2014-07-01 Kaseya International Limited Method and apparatus of performing remote computer file exchange
US9507746B2 (en) * 2012-10-22 2016-11-29 Intel Corporation Control messaging in multislot link layer flit
US8959265B2 (en) * 2012-11-21 2015-02-17 Mellanox Technologies Ltd. Reducing size of completion notifications
US9176877B2 (en) 2013-04-15 2015-11-03 International Business Machines Corporation Provision of early data from a lower level cache memory
US10061719B2 (en) 2014-12-25 2018-08-28 Intel Corporation Packed write completions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875313A (en) * 1997-04-08 1999-02-23 National Instruments Corporation PCI bus to IEEE 1394 bus translator employing write pipe-lining and sequential write combining
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法

Also Published As

Publication number Publication date
TW201631477A (zh) 2016-09-01
TWI605343B (zh) 2017-11-11
EP3238079A1 (en) 2017-11-01
US20160188500A1 (en) 2016-06-30
EP3238079A4 (en) 2018-07-25
EP3238079B1 (en) 2022-04-13
WO2016105853A1 (en) 2016-06-30
CN107438838A (zh) 2017-12-05
US10061719B2 (en) 2018-08-28

Similar Documents

Publication Publication Date Title
CN108829614B (zh) 缓冲存储器中的推测性读
CN107438838B (zh) 打包的写完成
US20230367481A1 (en) Implied directory state updates
CN108334463B (zh) 事务性缓冲式存储器中的提早识别
US10140213B2 (en) Two level memory full line writes
CN107005371B (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