CN107003945A - 缓冲存储器中的推测性读 - Google Patents
缓冲存储器中的推测性读 Download PDFInfo
- Publication number
- CN107003945A CN107003945A CN201580063895.6A CN201580063895A CN107003945A CN 107003945 A CN107003945 A CN 107003945A CN 201580063895 A CN201580063895 A CN 201580063895A CN 107003945 A CN107003945 A CN 107003945A
- Authority
- CN
- China
- Prior art keywords
- read request
- data
- predictive
- memory
- sent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computer And Data Communications (AREA)
Abstract
通过缓冲存储器访问链路从主机装置接收对与特定地址关联的数据的推测性读请求。对该数据的读请求被发送到存储器装置。响应该读请求,从存储器装置接收该数据,并且将接收的数据作为对于推测性读请求后接收的需求读请求的响应发送到主机装置。
Description
对相关申请对交叉引用
本申请要求对于2014年12月23日提交的名称为“SPECULATIVE READS IN BUFFEREDMEMORY”的美国非临时专利申请No. 14/582121的权益和优先权,该申请通过引用以其整体被结合于本文中。
技术领域
本公开一般涉及计算架构领域,并且更具体地说,涉及缓冲存储器协议。
背景技术
半导体加工和逻辑设计方面的进步已允许在集成电路装置上可存在的逻辑数量的增加。因此,计算机系统配置已从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核和多个逻辑的处理器。处理器或集成电路一般包括单个处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程、逻辑的处理器、接口、存储器、控制器集线器等。
由于在更小封装中容纳更大处理功率的能力更大,更小的计算装置的普遍性已增大。智能电话、平板式计算机、超薄笔记本及其它用户设备已迅速增长。然而,这些更小的装置依赖服务器进行数据存储和超过形状因数的复杂处理。因此,高性能计算市场(即,服务器空间)中的需求也已增大。例如,在现代服务器中,一般不但有带多个核的单个处理器,而且有多个物理处理器(也称为多个插槽(socket))以增大计算功率。但随着处理功率与计算系统中装置的数量一起增大,在插槽与其它装置之间的通信变得更重要。
事实上,互连已从主要处理电通信的更多传统多分支总线增长到利用快速通信的成熟互连架构。不过,由于对将来处理器在甚至更高速率耗用的需求,对现有互连架构的能力提出了对应的需求。
附图说明
图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-16C示出根据一些实现,在缓冲器装置与主机装置之间的示例通信。
图17示出用于包括多个处理器插槽的计算系统的块的一实施例。
图18示出用于包括多核处理器的计算系统的块的另一实施例。
各个图形中类似的引用标号和标示指示类似的元件。
具体实施方式
在下面的描述中,陈述了许多特定的细节,如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线级、特定互连层、特定分组/事务配置、特定事务名称、特定协议交换、特定链路宽度、特定实现及操作等的示例,以便提供本发明的详尽理解。但是,本领域技术人员可明白,实践本公开的主题可不必采用这些特定细节。在其它实例中,已避免熟知组件或方法的详细描述,如特定和备选处理器架构、用于所述算法的特定逻辑电路/代码、特定固件代码、低级互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中算法的特定表述、特定断电和门控技术/逻辑及计算机系统的其它特定操作细节,以免不必要地混淆本公开。
虽然下面的实施例可参照特定集成电路中的能量节约、能量效率、处理效率等进行描述,如在计算平台或微处理器中,但其它实施例适用于其它类型的集成电路和逻辑装置。本文中描述的实施例的类似技术和教导可应用到也可从此类特征受益的其它类型的电路或半导体装置。例如,公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机、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提取这些存储器特定协议的细节。调度器1425能够包括重排序和仲裁对请求的响应以取得更高性能的逻辑。缓冲器芯片1315能够另外提供诸如流控制和检错等特征。在一些实现中,流控制逻辑1430能够在调度器1425中实施,或以其它方式与调度器1425互操作以确保缓冲器芯片1315的更高效率和更高性能。检错逻辑1440能够包括支持纠错码检测方案的逻辑和用于启动检测到的错误的纠正或处理的逻辑。
在一些实现中,CPU 1305能够包括主机控制器逻辑1440,除其它功能性外,其还能够将CPU(或主机)地址转换成存储器地址,包括跨通道和插槽的置换。主机1305能够包括多个处理核1445a-d,其能够允许多个进程在主机1305上行执行。另外,主机能够利用一个或更多高速缓存对来自存储器(例如,1405、1410)的以前访问的行进行高速缓存,使得主机1305能够重新访问这些行而无需从缓冲器芯片1315重新请求数据。这能够有助于解决在缓冲存储器架构中通过缓冲器芯片1315造成的更高迟滞。高速缓存能够包括本地和中间高速缓存及末级高速缓存(LLC)1450a-d。包括LLC的高速缓存能够在多个核1445a-d之间共享。实际上,通过采用一个或多个处理核的主机,能够利用多种高速缓存架构。
如上所述,缓冲存储器协议的链路层能够基于GPIO协议的链路层。例如,在缓冲存储器协议中能够利用HPI协议(例如,在图10中描述和显示)的192比特3槽微片。缓冲存储器协议中的分组能够实施完整的命令。分组能够被实现为一个或更多微片。图15A-15C能够表示缓冲存储器协议中微片的实现。在一些实现中,能够经有报头和无报头存储器数据(MemData)分组的组合将读的数据从缓冲器装置发送回主机。在三个无报头微片(而不是如使用有报头微片时的五个)中能够传送完整的高速缓存行。无报头分组由此能够提供用于可以是接口的最受约束部分上更高的吞吐量。为适合于三个微片,无报头分组删除了多个字段,并且做出有关其值的假设。所做的假设可适用于大多数但非所有读的返回。如果任何假设不为真,则将使用包含所有字段的有报头分组。在一些实现中,有报头分组能够开始读的返回的序列,以允许早期识别跟踪器标识符(例如,HTID、RTID等),以便用于在事务缓冲存储器协议中映射读返回到读请求。
在一些实现中,无报头分组能够包含表1中概述的信息:
表1:无报头分组字段
字段 | 数量 | 描述 |
数据 | 512 | 64字节高速缓存行数据 |
目录 | 2 | 两个目录比特,与数据一起存储,通常作为ECC比特的一部分。 |
HTID | 11 | 请求事务ID。由于早期HTID,分组包含用于下一读数据分组的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分组可未被取消,并且将在数据微片之后。在知道也能够发送数据前,将不发送报头。在发送报头前可在缓冲器中不累加完全高速缓存行。
系统能够对迟滞特别敏感。存储器迟滞能够对CPU性能很重要。在一些实现中,通过在保证实际上将要求或使用读前引入为在允许读请求发送到存储器缓冲器芯片的缓冲存储器链路上的使用定义的推测性读命令,能够在缓冲存储器架构中降低迟滞开销。这能够允许在发送读请求前不等待解决所有依赖性的迟滞优化管线,实际上允许读数据的推测性获取。
在一些实现中,如服务器环境或采用大的管芯上互连和复杂高速缓存和归属代理器实现的其它系统,相当大的迟滞能够在读事务从请求者到达末级高速缓存的时间与通过缓冲存储器接口发送读到存储器控制器的时间之间体现。推测性读功能性能够在知道是否将实际上发出读前(即,在知道读是否为高速缓存未命中前),通过经存储器缓冲器接口发送推测性读,有助于节约空闲迟滞。在一些实例中,如在其它缓冲存储器事务中,推测性读未从协议被跟踪,但如果读被发出到存储器控制器,则将在以后合并到由协议跟踪的需求读中。鉴于有时访问存储器所要求的相当大迟滞,在LLC中查找事务的整个迟滞能够由存储器访问迟滞掩蔽,从而除其它示例优点外,在使用推测性读的情况下还产生相当大的性能改进。
除通过缓冲存储器访问链路从主机发送到缓冲器芯片的普通读命令外,能够提供推测性读命令(MemSpecRd)。推测性读是对在推测中发送的地址的读请求,推测指的是对该地址的读可能很快生成。不发送对推测性读的响应(由本身)。相反,缓冲器芯片检索对应于在推测性读中识别的请求的地址的数据,并且在将检索的数据发送到主机前,确定在推测性读后是否已被接收对相同地址的需求读请求。需求读能够只是在推测性读后发送的规则读(MemRd)命令,其将使用来自推测性读的数据。推测性读能够充当到存储器控制器的对对应存储器地址的读将可能发生的提示。它允许存储器控制器提前读以降低平均迟滞。如果接收对应需求读,则能够使用检索的数据(否则,可丢弃数据)。
转到图16A-16C,显示了流程图1600a-c,示出在缓冲存储器架构中的示例存储器读事务。例如,在图16A中,示出正常读操作。在时间t 0 ,主机1305确定进程(例如,在一组处理核的一个特定核上执行)寻求从存储器的特定行读存储器。主机1305能够先尝试从高速缓存获得数据,如共享的末级高速缓存(LLC)1450,以便避免直接从存储器1605请求该行(例如,更高迟滞事务)。相应地,主机1305能够执行LLC查找1610a以确定LLC 1450是否具有数据行。在此示例中,LLC 1450的高速缓存逻辑能够识别1615a对应于地址的数据行在高速缓存中“未命中”,即,LLC 1450没有副本。响应接收LLC未命中1615a,主机1305能够求助于直接从存储器1605请求存储器的行的副本。相应地,在缓冲存储器架构中,主机1305能够将读请求1620a发送到单独的缓冲器芯片1315,请求对应于地址的数据。存储器读请求1620a能够包括地址的指示及事务标识符(TID)。缓冲器芯片1315能够随后从DIMM、DRAM或其它存储器元件(例如,1605)请求(在1625a)存储器,接收该数据(在1630a),并且在对存储器读请求1620a的响应1635a中返回数据。在此示例中,主机1305能够获得在t 0 后的时间t A 使用的数据。
转到图16B的示例,示出使用推测性读的示例事务。例如,作为图16A的示例的备选,主机1305能够尝试获得相同数据行(如在图16A的示例中),并且能够关于LLC查找1610b来发送推测性读请求1640b。推测性读请求1640b能够在LLC查找1610b之前、之后或在与t 0 同时的时间同时发送。在LLC逻辑1450执行查找时,缓冲器芯片1315可接收推测性读1640b,并且开始从存储器1605检索存储器的行(通过请求1625b和响应1630b)。这促使LLC查找1610b的迟滞掩蔽通过缓冲器芯片1315存储器的请求的总迟滞。
如在图16A的示例中,LLC查找1610b能够产生LLC未命中1615b。在响应中,主机1305能够发送需求读1620b以正式确定更早的推测性读1640b。在一些实例中,主机1305能够跟踪其待定推测性读请求,并且识别需求读1620b对应于更早的推测性读1640b。在其它实现中,主机1305可不跟踪其推测性读,并且需求读可只是主机1305发送到缓冲器装置1315的对相同地址的下一正常读(例如,MemRead)。换而言之,主机1305可对其待定推测性读(例如,1640b)采用不可知论方案,并且简单地像平常一样继续,适当地发送正常读(例如,1620b)(例如,响应LLC未命中(例如,1615b)),其可以或不可以充当需求读以触发对缓冲器1315检索到更早的推测性读的数据的发送而结束。实际上,能够以如果未发送推测性读而将采取的完全相同的方式发送需求读。在用于此命令的协议中将无差别,但读请求完成的速度可能快于在未发送先前推测性读的情况下将完成的速度。在一些实例中,需求读可被实施为一组定义的存储器读(例如,MernRd*)命令的任何一个命令,除其它示例外还包括操纵目录的读请求。
不考虑使用的实施例,由缓冲器芯片解释为需求读的读请求能够产生响应推测性读1640b发送到主机1305而获得的数据1630b。此外,由于从推测性读1305产生的在缓冲器装置1315和LLC 1450的并行工作,能够实现总体迟滞节约,因为(从推测性读)获得已经获取的数据需要的时间减少了将数据返回到主机1305的时间(t B )(即,t B < t A )。
接着转到图16C的示例,在一些实例中,可“浪费”推测性读(例如,1640c),如在主机1305能够在没有到缓冲器装置1315的存储器读请求的情况下获得存储器的所需行的副本的实例中。例如,主机1305能够结合LLC查找1610c,再次发送推测性读1640c。缓冲器芯片1315能够接收推测性读请求1640c,并且发送请求1625c以检索在推测性读请求1640c中指定的存储器的行。然而,尽管获得数据(在1630c),缓冲器装置1315在此示例中从不将数据继续发送到主机1305,因为在此示例中的LLC查找1610c产生了命中1615c,允许主机1305从高速缓存获得存储器的请求行的副本。在不需要检索的数据1630c时,缓冲器芯片1315能够丢弃(在1650)检索的数据。
在一些实现中,缓冲器芯片1315能够包括用于存储响应推测性读而从存储器1605获得的数据(例如,1630b、c)的缓冲器或队列。缓冲器芯片1315能够响应检测到对应于推测性读请求的需求读(例如,1620b)而清空此队列。在一些实现中,在缓冲器装置1315能够返回来自存储器的对应于特定推测性读的数据(或“推测读数据”)前,能够预期需求读将能够被发送。相应地,在一些实例中,缓冲器装置1315在获得推测性数据读存储器(例如,在1630b、c)时能够确定在接收推测性读的时间与接收来自存储器(例如,在1630b、c)的数据的时间之间是否已接收需求读。如果未接收,则缓冲器装置1315能够丢弃1650数据(例如,1630c)。在此类实现中,如果需求读在推测性读数据从存储器到达后到达,则需求读将被作为任何其它标准存储器读处理,并且缓冲器装置1315可重新检索与前面的推测性读请求有关,刚从存储器检索的相同数据。在其它实现中,由于用于保存推测性读数据的对应缓冲器、队列或其它资源已充满(例如,在FIFO基础上),或者需要用于另一操作(或者用于对应于另一推测性读的推测性读数据),缓冲器装置1315可丢弃从存储器获得的与推测性读有关的数据。在还有的其它示例中,缓冲器装置1315可保持在丢弃数据前用于在事务的某个期间内或为多个事务保存推测性读数据的定时器或事务计数器(即,在该期间内未接收对应需求读时)。相应地,在一些实现中,在已由缓冲器装置从存储器检索对应数据以促使在响应中返回推测性读数据后,能够接收需求读。实际上,在一些实例中,在需求读到达时已经从存储器检索数据的情况下,缓冲器装置将能立即返回对主机的(需求)读请求的响应。
缓冲器装置1315能够基于在两个请求中包括的一个或更多这了段的对应值,匹配需求读和推测性读。例如,如果读请求引用与推测性读相同的地址,则缓冲器装置1315能够将读请求映射到活跃推测性读。在某种意义上,其地址匹配活跃推测性读的地址的读请求在由缓冲器装置接收和识别时能够“转换”成用于推测性读的需求读。在一些实例中,由于将不直接响应推测性读请求,因此,可清零或省略请求的一些字段值。例如,可为事务ID提供返回响应的存储器读(例如,响应具有匹配TID以将响应与更早的请求相关),但可为推测性读请求省略TID(或将其编码为无效)。
在一些实现中,能够关于每个LLC(或其它高速缓存)查找而发送推测性读以尝试识别迟滞节约。然而,在主机、存储器控制器(在缓冲器装置上)与存储器之间的这些“额外”事务能够添加需求到缓冲存储器架构,并且可能影响在主机、缓冲器装置与存储器之间链路的带宽,从而产生不合需要的性能惩罚。相应地,在一些实现中,能够选择性地发送推测性读,例如,在主机控制器相信进行此操作将可能产生迟滞优势(并且不会不利地影响其它存储器事务)时。例如,能够为主机控制器提供在缓冲器装置、存储器元件的资源和/或连接缓冲器装置到存储器元件的链路的带宽的可用性的视图(例如,从寄存器或如由软件引导),并且主机控制器能够使用此信息做出是否使用推测性读的确定。例如,主机控制器(在主机上)能够在执行LLC查找时(或在其之前)识别缓冲器装置的可用性,以确定是否应发送对应推测性读。在另一实现中,缓冲器装置能够提供推测性读将不阻碍性能的指示。例如,缓冲器装置能够切换状态或模式,以在缓冲器装置资源可用性的窗口期间启用推测性读。除其它示例实现外,主机还能够识别何时推测性读被启用,并且能够结合对存储器中地址的每个LLC(或其它高速缓存)查找,发出推测性读,至少直到此类推测性读(或其它缓冲器装置活动)吸收开放资源并且促使推测性读模式切换回“关闭”。
处理该数量的推测性读和何时发送它们能够是主机的责任,因此,不存在性能损耗。对应存储器访问链路协议可定义推测性读的格式和使用,但可不提供有关其使用的详细限制。例如,协议可不限制在任何给定时间可来自主机(或者在缓冲器装置)未决的推测性读的数量。如果推测性读的使用率低(即,需求读极少跟随推测性读),则这些读可损害净性能而不是改进它。相应地,在一些实现中,主机控制器能够识别使用更可能对应于高速缓存未命中而不是高速缓存命中的推测性读的时机。例如,可提供提示到主机控制器(例如,从指令集架构)以指示一个或更多地址比其它地址更可能导致未命中。例如,除其它信息外,能够访问存储器地址使用信息以便还确定何时存储器的每行最后被使用,使用其有多频繁,由哪些进程使用(以及这些进程是否是活跃的),以帮助识别哪些地址最不可能被高速缓存和导致查找未命中。通过使用此类信息,主机控制器能够做出有关何时推测性读可能获得迟滞降低的有根据的猜测。此外,能够将关于存储器行合适的信息与有关当前缓冲器装置资源的信息组合,以通知何时使用推测性读。在一个示例中,除其它实现外,还可仅在将缓冲器资源识别为低并且性能成本可能更多时,才考虑存储器行使用信息。
可为缓冲器装置存储器控制器提供有关它如何处理推测性读的相当大自由度。例如,存储器控制器可在进程中的任何点自由放弃任何或所有推测性读(但限制过高的处理可威胁到所需迟滞降低的实现)。在缓冲器装置接收推测性读时,能够最初如任何其它读一样来处理它。它可在调度器中为或不为其指派不同优先级。然而,在从存储器返回推测性读数据时(例如,在确定对应需求读尚未被接收时),可改变推测性读的处理。在其它实例中,除其它示例外,存储器控制器还可将推测性读置于比其它读更低的优先级,因为不存在对于推测性读的需求读将会出现的保证。
如上所述,在接收与待定推测性读到相同地址的需求读时,缓冲器装置能够将推测性读数据转换成对于对应需求读的响应。如果尚未通过调度器更改其优先级,则例如通过使需求事务的发出置于其它未决推测性事务之上,这可能更改其优先级。如果在从存储器检索数据前接收需求读,则一旦读数据到达并且准备好,则需求读将简单地接受读数据。对需求读的响应能够和数据一起返回(其中该响应被编码有需求读的TID)。此外,在需求读涉及目录更新的实例中,除其它示例考虑外,还能够假设关联推测性读未提供相同目录更新的指示(例如,在从未通过需求读正式确定推测性读的情况下)。
在一些实例中,能够返回与和原来推动推测性读的事务不同的事务有关的推测性读数据。例如,第二事务能够涉及读在结合另一事务的LLC查找发送的以前推测性读中识别的地址的尝试。除其它示例外,第二事务的读请求还能够在第一事务的读请求前到达缓冲器装置,并且推测性读数据能够作为对第二事务的读请求的响应(并且在一些实现中,也作为对另一事务的读请求的响应)而返回。
HPI能够并入到任何多种计算装置和系统中,除其它示例外,还包括主机、服务器系统、个人计算机、移动计算机(如平板式计算机、智能电话、个人数字系统等)、智能家电、游戏或娱乐平台及机顶盒。例如,参照图17,图中显示根据本发明的一实施例的第二系统1700的框图。如图17中所示,多处理器系统1700是点对点互连系统,并且包括经点对点互连1750耦合的第一处理器1770和第二处理器1780。每个处理器1770和1780可以是某一版本的处理器。在一个实施例中,1752和1754是诸如高性能架构等串行、点对点相干互连构造的部分。因此,本发明可在QPI架构内被实现。
虽然只显示带有两个处理器1770、1780,但要理解的是,本发明的范围并不限于此。在其它实施例中,一个或更多另外的处理器可在给定处理器中存在。处理器1770和1780显示为分别包括集成存储器控制器单元1772和1782。处理器1770也包括作为其总线控制器单元的一部分的点对点(P-P)接口1776和1778;类似地,第二处理器1780包括P-P接口1786和1788。处理器1770、1780可经使用P-P接口电路1778和1788的点对点(P-P)接口1750交换信息。如图17中所示,IMC 1772和1782将处理器与相应存储器,即存储器1732和存储器1734耦合,这些存储器可以是在本地附接到相应处理器的主存储器部分。
处理器1770、1780各自经使用点对点接口电路1776、1794、1786、1798的各个P-P接口1752、1754与芯片集1790交换信息。芯片集1790也沿高性能图形互连1739,经图形接口1792与高性能图形电路1738交换信息。
共享高速缓存(未显示)可包括在处理器中或者在两个处理器外,但经P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集1790可经接口1796耦合到第一总线1716。在一个实施例中,第一总线1716可以是外围组件互连(PCI)总线,或诸如PCI高速总线或另一第三代I/O互连总线等总线,但本发明的范围并不限于此。
如图17中所示,各种I/O装置1714可连同将第一总线1716耦合到第二总线1720的总线桥1718,耦合到第一总线1716。在一个实施例中,第二总线1720包括低引脚数(LPC)总线。在一个实施例中,各种装置耦合到第二总线1720,例如包括键盘和/或鼠标1722、通信装置1727和诸如经常包括指令/代码和数据1730的磁盘驱动器或其它海量存储装置等存储单元1728。此外,音频I/O 1724显示为耦合到第二总线1720。注意,其它架构是可能的,其中包括的组件和互连架构不同。例如,系统可实现多分支总线或其它此类架构,而不是图17的点对点架构。
现在转到图18,图中显示的是多核处理器的一实施例的框图。如图18的实施例中所示,处理器1800包括多个域。具体而言,核域1830包括多个核1830A-1830N,图形域1860包括具有媒体引擎1865的一个或更多图形引擎和系统代理器域1810。
在各种实施例中,系统代理器域1810处理功率控制事件和功率管理,使得域1830和1860的各个单元(例如,核和图形引擎)可独立控制,以按照给定单元中发生的活动(或不活动),在适当的功率模式/级别(例如,活跃、特播(turbo)、睡眠、休眠、深度睡眠或其它像高级配置功率接口的状态)来动态操作。域1830和1860中的每个可在不同电压和/或功率操作,并且所述域内的各个单元各自还可能在独立的频率和电压操作。注意,虽然只显示带有三个域,但理解本发明的范围在此方面不受限制,并且另外的域可在其它实施例中存在。
如所示的,每个核1830除各种k执行单元和另外的处理元件外,还包括低级高速缓存。此处,各种核相互耦合,并且耦合到由末级高速缓存(LLC)1840a-1840N的多个单元或分片(slice)形成的共享高速缓存存储器;这些LLC经常包括存储和高速缓存控制器功能性,并且在核之间以及可能也在图形引擎之间共享。
如所见的,环形互连1850将核耦合在一起,并且经多个环形制动(ring stop)1852A-1852N在核域1830、图形域1860和系统代理器电路1810之间提供互连,每个环形制动在核与LLC分片之间的耦合处。如图18中所示,互连1850用于携带各种信息,包括地址信息、数据信息、确认信息和探听/无效信息。虽然示出的是环形互连,但可利用任何已知管芯上互连或构造。作为说明性示例,可以类似方式利用上面讨论的一些构造(例如,另一管芯上互连、芯片上系统构造(OSF)、高级微控制器总线架构(AMBA)互连、多维网状构造或其它已知互连架构)。
如还所示的,系统代理器域1810包括将提供关联显示器的控制和到关联显示器的接口的显示器引擎1812。系统代理器域1810可包括其它单元,如:提供到系统存储器(例如,通过多个DIMM实现的DRAM)的接口、执行存储器相干性操作的相干性逻辑1822的集成存储器控制器1820。多个接口可存在,以能够实现处理器与其它电路之间的互连。例如,在一个实施例中,提供了至少一个直接媒体接口(DMI)1816接口及一个或更多PCIe™接口1814。显示器引擎和这些接口一般经PCIe桥1818耦合到存储器。还有,为提供用于在诸如另外的处理器或其它电路等其它代理器之间的通信,可提供一个或更多其它接口。
虽然本发明已相对有限数量的实施例进行了描述,但本领域的技术人员将领会到由此产生的多种修改和变化。随附权利要求旨在涵盖本发明真正精神和范围内的此类修改和变化。
设计可经历从创建到仿真到制作的各种阶段。表示设计的数据可以多种方式来表示这个设计。首先,如在仿真中有用的,硬件可使用硬件描述语言(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。因此,值包括能够保持在计算机系统中的信息的任何表示。
另外,状态可由值或部分值来表示。例如,诸如逻辑的1等第一值可表示默认或初始状态,而诸如逻辑的0等第二值可表示非默认状态。另外,在一个实施例中,术语重置和设置分别指默认和更新的值或状态。例如,默认值可能包括高逻辑的值,即重置,而更新的值可能包括低逻辑的值,即设置。注意,值的任何组合可用于表示任何数量的状态。
上述方法、硬件、软件、固件或代码集的实施例可经在机器可访问、机器可读、计算机可访问或计算机可读媒体上存储的可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读媒体包括以机器可读形式提供(即,存储和/或传送)信息的任何机制,如计算机或电子系统。例如,非暂态机器可访问媒体包括诸如静态RAM (SRAM)或动态RAM (DRAM)等随机访问存储器(RAM)、ROM、磁或光存储媒体、闪存存储器装置、电存储装置、光存储装置、声学存储装置、用于保存从暂态(传播的)信号(例如,载波、红外信号、数字信号)等接收的信息的其它形式的存储装置等,这些媒体要与可从中接收信息的非暂态媒体区分开。
用于为逻辑编程以执行本发明的实施例的指令可存储在系统中的存储器内,如DRAM、高速缓存、闪存存储器或其它存储装置。此外,指令能够经网络或借助于其它计算机可读媒体分发。因此,机器可读媒体可包括用于以机器(例如,计算机)可读形式存储或传送信息的任何机制,但不限于硬盘、软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、可擦除编程只读存储器(EPROM)、电擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或经电、光、声或其它形式传播信号(例如,载波、红外信号、数字信号等),在信息通过因特网的传送中使用的有形机器可读存储装置。相应地,计算机可读媒体包括适合用于存储或传送机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读媒体。
下面的示例与根据本说明书的实施例有关。一个或更多实施例可提供设备、系统、机器可读存储装置、机器可读媒体、基于硬件和/或软件的逻辑及方法,以执行对与特定存储器地址关联的数据的高速缓存查找;结合该高速缓存查找,将推测性读请求发送到缓冲器装置,其中推测性读请求将促使缓冲器装置从存储器获得数据;以及至少部分基于高速缓存查找的结果,确定是否将读请求发送到缓冲器装置以促使缓冲器芯片返回来自存储器的数据。
在至少一个示例中,通过高速缓存查找获得数据促使主机逻辑不发送读请求。
在至少一个示例中,响应高速缓存查找未命中,将发送对数据的读请求。
在至少一个示例中,主机逻辑将发送读请求并且从缓冲器装置接收如从存储器获得的数据。
在至少一个示例中,在从高速缓存查找返回结果前,将发送推测性读请求。
在至少一个示例中,主机逻辑还将结合高速缓存查找,确定是否发送推测性读请求。
在至少一个示例中,基于与缓冲器装置关联的资源可用性信息,将确定要发送推测性读请求。
在至少一个示例中,推测性读请求将基于高速缓存查找将产生未命中的可能性而被确定。
在至少一个示例中,高速缓存包括末级高速缓存。
下面的示例与根据本说明书的实施例有关。一个或更多实施例可提供设备、系统、机器可读存储装置、机器可读媒体、基于硬件和/或软件的逻辑(例如,存储器控制器)和方法,以通过缓冲存储器访问链路从主机装置接收对与特定地址关联的数据的推测性读请求;将对数据的读请求发送到存储器装置;接收来自存储器装置的响应该读请求的数据;以及响应在推测性读请求后的需求读请求,将数据发送到主机装置。
在至少一个示例中,在与主机装置分开的缓冲器芯片上提供存储器控制器。
在至少一个示例中,需求读请求包括与推测性读请求到相同地址的任何存储器读请求。
在至少一个示例中,在缺少来自主机装置的对应需求读请求的情况下,存储器控制器不对于推测性读请求将响应发送到主机装置。
在至少一个示例中,推测性读请求将包括指示特定地址的字段和带有无效值的事务标识符字段,读请求将包括指示特定地址的字段和指示读请求的事务标识符的事务标识符字段,并且数据将作为响应发送到主机装置,其中响应将包括指示特定地址的字段和指示读请求的事务标识符的事务标识符字段。
在至少一个示例中,在未接收对应需求读时,存储器控制器将丢弃响应推测性读请求从存储器获得的数据。
下面的示例与根据本说明书的实施例有关。一个或更多实施例可提供设备、系统、机器可读存储装置、机器可读媒体、基于硬件和/或软件的逻辑及方法,以确定是否关联于末级高速缓存的特定查找来发送推测性读请求,其中特定查找包括对与特定存储器地址关联的数据的查找;执行末级高速缓存的特定查找;结合该特定查找,将推测性读请求发送到缓冲器装置,其中至少部分与特定查找并行,推测性读请求将促使缓冲器芯片从存储器获得数据;以及对于特定查找的未命中结果,将需求读请求发送到缓冲器装置以促使缓冲器芯片返回来自存储器的数据。
一个或更多实施例可提供系统以包括缓冲器芯片、通过缓冲器芯片要访问的存储器及通过存储器访问链路耦合到缓冲器芯片的处理器块。处理器块能够包括一个或更多处理器核、末级高速缓存和主机控制器。主机控制器能够执行对与存储器的特定地址关联的数据的末级高速缓存的查找;结合该查找,将推测性读请求发送到缓冲器芯片,其中推测性读请求将促使缓冲器装置从存储器获得数据;以及至少部分基于高速缓存查找的结果,确定是否将读请求发送到缓冲器芯片以促使缓冲器芯片返回来自存储器的数据。
在至少一个示例中,缓冲器芯片包括存储器控制器以响应在缓冲器芯片从处理器块接收的请求,从存储器访问数据。
在至少一个示例中,存储器控制器将响应推测性读请求,从存储器检索数据,并且如果在推测性读请求后未从处理器块接收到对应读请求,则丢弃检索的数据。
在至少一个示例中,存储器控制器将至少部分基于缓冲器芯片资源的可用性,确定是忽略还是服务于推测性读请求。
贯穿此说明书对“一个实施例”或“一实施例”的引用指与该实施例有关描述的特定特征、结构或特征包括在本发明的至少一个实施例中。因此,贯穿此说明书在各个位置中出现的“在一个实施例”或“在一实施例中”短语不一定全部指相同实施例。此外,特定的特征、结构或特性可在一个或更多实施例中以任何适合的方式被组合。
在前面所述说明书中,参照特定示范实施例已给出了详细描述。然而,将可明白,在不脱离如随附权利要求所述的本发明的更广的精神和范围的情况下,可对其进行各种修改和更改。相应地,说明书和附图要在说明性意义而不是限制性意义中被看待。此外,实施例和其它示范语言的上述使用不一定指相同实施例或相同示例,而是可指不同和有区别的实施例及可能相同的实施例。
Claims (25)
1.一种设备,包括:
主机逻辑,用于:
执行对与特定存储器地址关联的数据的高速缓存查找;
结合所述高速缓存查找,将推测性读请求发送到缓冲器装置,其中所述推测性读请求将促使所述缓冲器装置从存储器获得所述数据;以及
至少部分基于所述高速缓存查找的结果,确定是否将读请求发送到所述缓冲器装置以促使所述缓冲器芯片返回来自存储器的所述数据。
2.如权利要求1所述的设备,其中通过所述高速缓存查找获得所述数据促使所述主机逻辑不发送所述读请求。
3.如权利要求1所述的设备,其中响应高速缓存查找未命中,将发送对所述数据的所述读请求。
4.如权利要求3所述的设备,其中所述主机逻辑将发送所述读请求并且从所述缓冲器装置接收如从存储器获得的所述数据。
5.如权利要求1所述的设备,其中在从所述高速缓存查找返回所述结果前,将发送所述推测性读请求。
6.如权利要求1所述的设备,其中所述主机逻辑还将结合所述高速缓存查找来确定是否发送所述推测性读请求。
7.如权利要求6所述的设备,其中基于与所述缓冲器装置关联的资源可用性信息,将确定要发送所述推测性读请求。
8.如权利要求6所述的设备,其中所述推测性读请求将基于所述高速缓存查找将产生未命中的可能性而被确定。
9.如权利要求1所述的设备,其中所述高速缓存包括末级高速缓存。
10.一种设备,包括:
存储器控制器,用于:
通过缓冲存储器访问链路,从主机装置接收对与特定地址关联的数据的推测性读请求;
将对所述数据的读请求发送到存储器装置;
接收来自所述存储器装置的响应所述读请求的所述数据;以及
响应在所述推测性读请求后的需求读请求,将所述数据发送到所述主机装置。
11.如权利要求10所述的设备,其中在与所述主机装置分开的缓冲器芯片上提供所述存储器控制器。
12.如权利要求10所述的设备,其中所述需求读请求包括与所述推测性读请求到相同地址的任何存储器读请求。
13.如权利要求10所述的设备,其中在缺少来自所述主机装置的对应需求读请求的情况下,所述存储器控制器不对所述推测性读请求将响应发送到所述主机装置。
14.如权利要求13所述的设备,其中所述推测性读请求将包括指示所述特定地址的字段和带有无效值的事务标识符字段,所述读请求将包括指示所述特定地址的字段和指示所述读请求的事务标识符的事务标识符字段,并且所述数据将作为响应被发送到所述主机装置,其中所述响应将包括指示所述特定地址的字段和指示所述读请求的所述事务标识符的事务标识符字段。
15.如权利要求13所述的设备,其中在未接收到对应需求读时,所述存储器控制器将丢弃响应推测性读请求从存储器获得的数据。
16.至少一个具有其上存储的代码的机器可访问存储媒体,所述代码在机器上被执行时,促使所述机器:
确定是否关联于末级高速缓存的特定查找来发送推测性读请求,其中所述特定查找包括对与特定存储器地址关联的数据的查找;
执行所述末级高速缓存的所述特定查找;
结合所述特定查找,将推测性读请求发送到缓冲器装置,其中至少部分与所述特定查找并行,所述推测性读请求将促使所述缓冲器芯片从存储器获得所述数据;以及
对于所述特定查找的未命中结果,将需求读请求发送到所述缓冲器装置以促使所述缓冲器芯片返回来自存储器的所述数据。
17.一种方法,包括:
确定是否关联于末级高速缓存的特定查找来发送推测性读请求,其中所述特定查找包括对与特定存储器地址关联的数据的查找;
执行所述末级高速缓存的所述特定查找;
结合所述特定查找,将推测性读请求发送到缓冲器装置,其中至少部分与所述特定查找并行,所述推测性读请求将促使所述缓冲器芯片从存储器获得所述数据;以及
对于所述特定查找的未命中结果,将需求读请求发送到所述缓冲器装置以促使所述缓冲器芯片返回来自存储器的所述数据。
18.一种系统,包括:
用于确定是否关联于末级高速缓存的特定查找来发送推测性读请求的部件,其中所述特定查找包括对与特定存储器地址关联的数据的查找;
用于执行所述末级高速缓存的所述特定查找的部件;
用于结合所述特定查找将推测性读请求发送到缓冲器装置的部件,其中至少部分与所述特定查找并行,所述推测性读请求将促使所述缓冲器芯片从存储器获得所述数据;以及
用于对于所述特定查找的未命中结果而将需求读请求发送到所述缓冲器装置以促使所述缓冲器芯片返回来自存储器的所述数据的部件。
19.至少一个具有其上存储的代码的机器可访问存储媒体,所述代码在机器上被执行时,促使所述机器:
通过缓冲存储器访问链路,从主机装置接收对与特定地址关联的数据的推测性读请求;
将对所述数据的读请求发送到存储器装置;
接收来自所述存储器装置的响应所述读请求的所述数据;以及
响应在所述推测性读请求后的需求读请求,将所述数据发送到所述主机装置。
20.一种方法,包括:
通过缓冲存储器访问链路,从主机装置接收对与特定地址关联的数据的推测性读请求;
将对所述数据的读请求发送到存储器装置;
接收来自所述存储器装置的响应所述读请求的所述数据;以及
响应在所述推测性读请求后的需求读请求,将所述数据发送到所述主机装置。
21.一种系统,包括:
用于通过缓冲存储器访问链路从主机装置接收对与特定地址关联的数据的推测性读请求的部件;
用于将对所述数据的读请求发送到存储器装置的部件;
用于接收来自所述存储器装置的响应所述读请求的所述数据的部件;以及
用于响应在所述推测性读请求后的需求读请求而将所述数据发送到所述主机装置的部件。
22.一种系统,包括:
缓冲器芯片;
存储器,用于通过所述缓冲器芯片被访问;
处理器块,通过存储器访问链路耦合到所述缓冲器芯片,其中所述处理器块包括:
一个或更多处理器核;
末级高速缓存;
主机控制器,用于:
执行对与所述存储器的特定地址关联的数据的所述末级高速缓存的查找;
结合所述查找,将推测性读请求发送到所述缓冲器芯片,其中所述推测性读请求将促使所述缓冲器装置从所述存储器获得所述数据;以及
至少部分基于所述高速缓存查找的结果,确定是否将读请求发送到所述缓冲器芯片以促使所述缓冲器芯片返回来自存储器的所述数据。
23.如权利要求22所述的系统,其中所述缓冲器芯片包括存储器控制器以响应在所述缓冲器芯片从所述处理器块接收的请求,从所述存储器访问数据。
24. 如权利要求23所述的系统,其中所述存储器控制器将:
响应所述推测性读请求,从所述存储器检索所述数据;以及
如果在所述推测性读请求后未从所述处理器块接收到对应读请求,则丢弃所检索的数据。
25.如权利要求23所述的系统,其中所述存储器控制器将至少部分基于缓冲器芯片资源的可用性来确定是忽略还是服务于所述推测性读请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810200618.0A CN108829614B (zh) | 2014-12-23 | 2015-11-26 | 缓冲存储器中的推测性读 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/582,121 US9658963B2 (en) | 2014-12-23 | 2014-12-23 | Speculative reads in buffered memory |
US14/582121 | 2014-12-23 | ||
PCT/US2015/062813 WO2016105852A1 (en) | 2014-12-23 | 2015-11-26 | Speculative reads in buffered memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810200618.0A Division CN108829614B (zh) | 2014-12-23 | 2015-11-26 | 缓冲存储器中的推测性读 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003945A true CN107003945A (zh) | 2017-08-01 |
CN107003945B CN107003945B (zh) | 2021-08-10 |
Family
ID=56129557
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063895.6A Active CN107003945B (zh) | 2014-12-23 | 2015-11-26 | 缓冲存储器中的推测性读 |
CN201810200618.0A Active CN108829614B (zh) | 2014-12-23 | 2015-11-26 | 缓冲存储器中的推测性读 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810200618.0A Active CN108829614B (zh) | 2014-12-23 | 2015-11-26 | 缓冲存储器中的推测性读 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9658963B2 (zh) |
EP (2) | EP3370156B1 (zh) |
CN (2) | CN107003945B (zh) |
TW (1) | TWI596478B (zh) |
WO (1) | WO2016105852A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857445A (zh) * | 2017-11-30 | 2019-06-07 | 株式会社日立制作所 | 存储系统和控制软件配置方法 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823951B2 (en) | 2013-02-27 | 2017-11-21 | International Business Machines Corporation | Link optimization for callout request messages |
US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US10503661B2 (en) * | 2014-05-21 | 2019-12-10 | Qualcomm Incorporated | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system |
US9658963B2 (en) | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
US10388054B2 (en) | 2016-06-03 | 2019-08-20 | Apple Inc. | Controlling display performance using animation based refresh rates |
US10510317B2 (en) | 2016-06-03 | 2019-12-17 | Apple Inc. | Controlling display performance with target presentation times |
US10402349B2 (en) * | 2017-02-08 | 2019-09-03 | Arm Limited | Memory controller having data access hint message for specifying the given range of one or more memory addresses |
TWI635391B (zh) * | 2017-02-14 | 2018-09-11 | 點序科技股份有限公司 | 快閃記憶體以及其管理方法 |
US10437739B2 (en) * | 2017-09-26 | 2019-10-08 | Intel Corporation | Low-latency accelerator |
US10423558B1 (en) | 2018-08-08 | 2019-09-24 | Apple Inc. | Systems and methods for controlling data on a bus using latency |
US10853256B2 (en) * | 2019-01-04 | 2020-12-01 | Arm Limited | Cache operation in an apparatus supporting both physical and virtual address mapping |
US11455257B2 (en) * | 2019-04-07 | 2022-09-27 | Intel Corporation | Ultra-secure accelerators |
CN110188424B (zh) * | 2019-05-16 | 2021-01-15 | 浙江大学 | 一种面向动边界流场数值模拟的局部区域网格重构并行方法 |
US11151054B2 (en) * | 2019-06-27 | 2021-10-19 | International Business Machines Corporation | Speculative address translation requests pertaining to instruction cache misses |
US11048636B2 (en) | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
US11010288B2 (en) | 2019-07-31 | 2021-05-18 | Micron Technology, Inc. | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11200166B2 (en) * | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
CN110996032B (zh) * | 2019-11-22 | 2021-11-16 | 天津津航计算技术研究所 | 基于以太网和srio的数据记录与回放方法 |
CN110996031B (zh) * | 2019-11-22 | 2021-11-16 | 天津津航计算技术研究所 | 基于以太网和srio的数据记录与回放装置 |
US11341060B2 (en) | 2020-08-11 | 2022-05-24 | International Business Machines Corporation | Multifunction communication interface supporting memory sharing among data processing systems |
CN116324743A (zh) * | 2020-11-05 | 2023-06-23 | 谷歌有限责任公司 | 存储器请求优先级升级 |
US11372703B1 (en) | 2021-02-19 | 2022-06-28 | International Business Machines Corporation | Reduced system memory latency via a variable latency interface |
US20220114099A1 (en) * | 2021-12-22 | 2022-04-14 | Intel Corporation | System, apparatus and methods for direct data reads from memory |
JP7463598B2 (ja) | 2022-07-01 | 2024-04-08 | キオクシア株式会社 | メモリシステム |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995032472A1 (en) * | 1994-05-19 | 1995-11-30 | International Business Machines Corporation | Integrated level two cache and memory controller with multiple data ports |
US20020087811A1 (en) * | 2000-12-28 | 2002-07-04 | Manoj Khare | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US6523093B1 (en) * | 2000-09-29 | 2003-02-18 | Intel Corporation | Prefetch buffer allocation and filtering system |
US20040064649A1 (en) * | 2002-09-30 | 2004-04-01 | Volpe Thomas A. | Prefetch buffer method and apparatus |
CN101322103A (zh) * | 2005-12-30 | 2008-12-10 | 英特尔公司 | 无约束事务存储器系统 |
US20090282033A1 (en) * | 2005-04-25 | 2009-11-12 | Hiyan Alshawi | Search Engine with Fill-the-Blanks Capability |
US7725661B2 (en) * | 2004-01-30 | 2010-05-25 | Plurata Technologies, Inc. | Data-aware cache state machine |
CN102087634A (zh) * | 2011-01-27 | 2011-06-08 | 凌阳科技股份有限公司 | 用于提高缓存命中率的装置及方法 |
US20120102269A1 (en) * | 2010-10-21 | 2012-04-26 | Oracle International Corporation | Using speculative cache requests to reduce cache miss delays |
CN103188296A (zh) * | 2011-12-29 | 2013-07-03 | 北京网康科技有限公司 | 一种网络字节缓存的实现方法及其设备 |
US20140089592A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with speculative read engine |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
ZA954460B (en) * | 1994-09-30 | 1996-02-05 | Intel Corp | Method and apparatus for processing memory-type information within a microprocessor |
US6216208B1 (en) * | 1997-12-29 | 2001-04-10 | Intel Corporation | Prefetch queue responsive to read request sequences |
US6098115A (en) * | 1998-04-08 | 2000-08-01 | International Business Machines Corporation | System for reducing storage access latency with accessing main storage and data bus simultaneously |
US6338122B1 (en) * | 1998-12-15 | 2002-01-08 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node |
US6643747B2 (en) * | 2000-12-27 | 2003-11-04 | Intel Corporation | Processing requests to efficiently access a limited bandwidth storage area |
US20030041215A1 (en) * | 2001-08-27 | 2003-02-27 | George Robert T. | Method and apparatus for the utilization of distributed caches |
US20040022094A1 (en) * | 2002-02-25 | 2004-02-05 | Sivakumar Radhakrishnan | Cache usage for concurrent multiple streams |
EP1426866A1 (en) * | 2002-12-06 | 2004-06-09 | Sun Microsystems, Inc. | A method to reduce memory latencies by performing two levels of speculation |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US7500062B2 (en) * | 2005-11-17 | 2009-03-03 | International Business Machines Corporation | Fast path memory read request processing in a multi-level memory architecture |
US20080162907A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Structure for self prefetching l2 cache mechanism for instruction lines |
US20070186050A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data lines |
US20080162819A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Design structure for self prefetching l2 cache mechanism for data lines |
US7636813B2 (en) * | 2006-05-22 | 2009-12-22 | International Business Machines Corporation | Systems and methods for providing remote pre-fetch buffers |
US20080184012A1 (en) * | 2007-01-30 | 2008-07-31 | Nema Labs Ab | Speculative Throughput Computing |
US20080307169A1 (en) * | 2007-06-06 | 2008-12-11 | Duane Arlyn Averill | Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US9218290B2 (en) * | 2009-04-27 | 2015-12-22 | Intel Corporation | Data caching in a network communications processor architecture |
CN104270547B (zh) * | 2009-11-30 | 2018-02-02 | 松下电器(美国)知识产权公司 | 通信方法、通信装置及位置检测方法 |
US8713277B2 (en) * | 2010-06-01 | 2014-04-29 | Apple Inc. | Critical word forwarding with adaptive prediction |
US8683136B2 (en) * | 2010-12-22 | 2014-03-25 | Intel Corporation | Apparatus and method for improving data prefetching efficiency using history based prefetching |
EP2761464B1 (en) * | 2011-09-30 | 2018-10-24 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
WO2013052056A1 (en) * | 2011-10-06 | 2013-04-11 | Intel Corporation | Apparatus and method for dynamically managing memory access bandwidth in multi-core processor |
US8687421B2 (en) * | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
US9158696B2 (en) * | 2011-12-29 | 2015-10-13 | Intel Corporation | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses |
CN103246542B (zh) * | 2012-02-01 | 2017-11-14 | 中兴通讯股份有限公司 | 智能缓存及智能终端 |
US8832376B2 (en) | 2012-03-16 | 2014-09-09 | Infineon Technologies Ag | System and method for implementing a low-cost CPU cache using a single SRAM |
US9411595B2 (en) * | 2012-05-31 | 2016-08-09 | Nvidia Corporation | Multi-threaded transactional memory coherence |
US9003123B2 (en) * | 2012-06-26 | 2015-04-07 | Arm Limited | Data processing apparatus and method for reducing storage requirements for temporary storage of data |
US9772948B2 (en) * | 2012-07-06 | 2017-09-26 | Seagate Technology Llc | Determining a criterion for movement of data from a primary cache to a secondary cache |
US9104578B2 (en) | 2012-07-06 | 2015-08-11 | Seagate Technology Llc | Defining address ranges used to cache speculative read data |
US9529724B2 (en) * | 2012-07-06 | 2016-12-27 | Seagate Technology Llc | Layered architecture for hybrid controller |
US9465740B2 (en) | 2013-04-11 | 2016-10-11 | Apple Inc. | Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers |
US9384136B2 (en) * | 2013-04-12 | 2016-07-05 | International Business Machines Corporation | Modification of prefetch depth based on high latency event |
US9176877B2 (en) * | 2013-04-15 | 2015-11-03 | International Business Machines Corporation | Provision of early data from a lower level cache memory |
US9418013B2 (en) * | 2014-06-30 | 2016-08-16 | Intel Corporation | Selective prefetching for a sectored cache |
US9658963B2 (en) | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
-
2014
- 2014-12-23 US US14/582,121 patent/US9658963B2/en active Active
-
2015
- 2015-11-20 TW TW104138578A patent/TWI596478B/zh active
- 2015-11-26 EP EP18165254.6A patent/EP3370156B1/en active Active
- 2015-11-26 CN CN201580063895.6A patent/CN107003945B/zh active Active
- 2015-11-26 CN CN201810200618.0A patent/CN108829614B/zh active Active
- 2015-11-26 EP EP15874050.6A patent/EP3238078B1/en active Active
- 2015-11-26 WO PCT/US2015/062813 patent/WO2016105852A1/en active Application Filing
-
2017
- 2017-05-23 US US15/602,996 patent/US20180018267A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995032472A1 (en) * | 1994-05-19 | 1995-11-30 | International Business Machines Corporation | Integrated level two cache and memory controller with multiple data ports |
US6523093B1 (en) * | 2000-09-29 | 2003-02-18 | Intel Corporation | Prefetch buffer allocation and filtering system |
US20020087811A1 (en) * | 2000-12-28 | 2002-07-04 | Manoj Khare | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US20040064649A1 (en) * | 2002-09-30 | 2004-04-01 | Volpe Thomas A. | Prefetch buffer method and apparatus |
US7725661B2 (en) * | 2004-01-30 | 2010-05-25 | Plurata Technologies, Inc. | Data-aware cache state machine |
US20090282033A1 (en) * | 2005-04-25 | 2009-11-12 | Hiyan Alshawi | Search Engine with Fill-the-Blanks Capability |
CN101322103A (zh) * | 2005-12-30 | 2008-12-10 | 英特尔公司 | 无约束事务存储器系统 |
US20120102269A1 (en) * | 2010-10-21 | 2012-04-26 | Oracle International Corporation | Using speculative cache requests to reduce cache miss delays |
CN102087634A (zh) * | 2011-01-27 | 2011-06-08 | 凌阳科技股份有限公司 | 用于提高缓存命中率的装置及方法 |
CN103188296A (zh) * | 2011-12-29 | 2013-07-03 | 北京网康科技有限公司 | 一种网络字节缓存的实现方法及其设备 |
US20140089592A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with speculative read engine |
Non-Patent Citations (2)
Title |
---|
K.M. LEPAK等: "Reaping the Benefit of Temporal Silence to Improve Communication Performance", 《IEEE INTERNATIONAL SYMPOSIUM ON PERFORMANCE ANALYSIS OF SYSTEMS AND SOFTWARE, 2005. ISPASS 2005》 * |
刘圆: "多核结构上高效的线程级推测及事务执行模型研究", 《中国博士学位论文全文数据库(信息科技辑)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857445A (zh) * | 2017-11-30 | 2019-06-07 | 株式会社日立制作所 | 存储系统和控制软件配置方法 |
CN109857445B (zh) * | 2017-11-30 | 2022-06-10 | 株式会社日立制作所 | 存储系统和控制软件配置方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3238078A4 (en) | 2018-07-25 |
US9658963B2 (en) | 2017-05-23 |
CN108829614B (zh) | 2022-11-01 |
EP3370156A1 (en) | 2018-09-05 |
EP3370156B1 (en) | 2021-11-24 |
EP3238078A1 (en) | 2017-11-01 |
TWI596478B (zh) | 2017-08-21 |
CN107003945B (zh) | 2021-08-10 |
TW201635150A (zh) | 2016-10-01 |
US20180018267A1 (en) | 2018-01-18 |
EP3238078B1 (en) | 2021-02-17 |
US20160179679A1 (en) | 2016-06-23 |
WO2016105852A1 (en) | 2016-06-30 |
CN108829614A (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003945A (zh) | 缓冲存储器中的推测性读 | |
CN105718391B (zh) | 事务性缓冲式存储器中的提早识别 | |
CN107438838A (zh) | 打包的写完成 | |
CN107257960B (zh) | 管理计算机存储器的装置、方法、系统及存储介质 | |
CN107408021B (zh) | 隐式目录状态更新 | |
CN105378694B (zh) | 用于执行与通用串行总线(usb)装置的管理组件传输协议(mctp)通信的方法、设备和系统 | |
CN107005371A (zh) | 事务缓冲存储器中的错误处理 | |
TWI710222B (zh) | 高性能中繼器 | |
CN112433683B (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 |