CN108268382B - 两级存储器全行写入 - Google Patents

两级存储器全行写入 Download PDF

Info

Publication number
CN108268382B
CN108268382B CN201810018846.6A CN201810018846A CN108268382B CN 108268382 B CN108268382 B CN 108268382B CN 201810018846 A CN201810018846 A CN 201810018846A CN 108268382 B CN108268382 B CN 108268382B
Authority
CN
China
Prior art keywords
memory
state
link
cache
line
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
CN201810018846.6A
Other languages
English (en)
Other versions
CN108268382A (zh
Inventor
R·G·布兰肯希普
J·D·张伯伦
Y-C·刘
V·吉塔
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 CN108268382A publication Critical patent/CN108268382A/zh
Application granted granted Critical
Publication of CN108268382B publication Critical patent/CN108268382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

存储器控制器接收存储器无效请求,该存储器无效请求引用在具有远存储器和近存储器的两级系统存储器拓扑中的远存储器的行,识别近存储器的与该行对应的地址,并且在该地址处读取数据以确定在近存储器中是否存在该行的副本。如果该地址的数据包含远存储器的另一行的副本并且该另一行的该副本是“脏的”,则该数据将被转储清除到远存储器。发送针对存储器无效请求的“完成”,以指示一致性代理被授予对该行的独占访问权限。通过独占访问,将修改该行以生成该行的修改版本,并且将使用该行的修改版本重写近存储器的该地址。

Description

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

Claims (31)

1.一种用于管理计算机存储器的装置,所述装置包括:
转换存储器缓冲器TMXB设备,其与存储器相接合,所述存储器包括近存储器高速缓存和远存储器,其中,所述近存储器高速缓存包括所述远存储器的直接映射高速缓存,并且所述TMXB设备包括:
接收器,用于接收对应于特定存储器地址的特定读取无效请求;
调度器;以及
存储器控制器,用于:
基于所述特定读取无效请求,读取所述近存储器高速缓存的与所述特定存储器地址相对应的特定行;
确定所述近存储器高速缓存的所述特定行中的与所述特定读取无效请求相对应的未命中;
与所述特定读取无效请求相关联地识别与所述近存储器高速缓存中的存储器的所述特定行相关联的目录状态处于修改状态;以及
基于所述未命中以及所述近存储器高速缓存中的存储器的所述特定行处于修改状态,使得所述近存储器高速缓存的所述特定行的数据被写入到所述远存储器的对应的行中。
2.根据权利要求1所述的装置,其中,所述存储器控制器还用于发送针对特定读取无效请求的完成,并且所述完成是在对远存储器的与所述特定存储器地址相对应的任何读取和写入的完成之前而被发送的。
3.根据权利要求1所述的装置,其中,所述存储器控制器还用于:
接收将所述特定行的修改版本写入到所述近存储器的所述特定存储器地址的写入请求;并且
使所述近存储器的所述特定存储器地址被用所述特定行的所述修改版本重写。
4.根据权利要求3所述的装置,其中,所述写入请求是从一致性代理接收的。
5.根据权利要求3所述的装置,其中,所述写入请求使所述特定行的目录状态从已修改转变为无效。
6.根据权利要求1-5中任一项所述的装置,其中,所述特定存储器地址中的所述特定行的副本的目录状态在所述特定读取无效请求中被识别。
7.根据权利要求1-5中任一项所述的装置,其中,所述TMXB包括缓冲存储器芯片。
8.根据权利要求7所述的装置,其中,所述特定读取无效请求通过缓冲存储器接口被接收。
9.根据权利要求8所述的装置,其中,所述缓冲存储器接口与通用输入/输出(GPIO)接口分离,并且所述缓冲存储器接口包括基于所述通用输入/输出(GPIO)接口的物理层的物理层。
10.根据权利要求1-5中任一项所述的装置,其中,所述特定读取无效请求是多个存储器无效请求之一。
11.根据权利要求1-5中任一项所述的装置,其中,所述存储器包括动态随机存取存储器(DRAM)。
12.根据权利要求1-5中任一项所述的装置,其中,所述存储器控制器将存储器请求转换为基于双倍数据速率(DDR)的协议。
13.根据权利要求1-5中任一项所述的装置,其中,所述特定读取无效请求不会导致所述目录状态改变。
14.根据权利要求1-5中任一项所述的装置,其中,所述特定读取无效请求是多种类型的读取无效请求中的一种。
15.根据权利要求14所述的装置,其中,所述多种类型的读取无效请求中的每一种都不返回数据作为响应。
16.根据权利要求15所述的装置,其中,所述多种类型中的除所述特定读取无效请求以外的类型的读取无效请求对存储器的对应的行的目录状态进行更新。
17.一种管理计算机存储器的方法,所述方法包括:
接收对应于特定存储器地址的特定读取无效请求;
基于所述特定读取无效请求,读取近存储器高速缓存的与所述特定存储器地址相对应的特定行,其中,所述近存储器高速缓存包括远存储器的直接映射高速缓存;
确定所述近存储器高速缓存的所述特定行中的与所述特定读取无效请求相对应的未命中;
与所述特定读取无效请求相关联地识别与所述近存储器高速缓存中的存储器的所述特定行相关联的目录状态处于修改状态;以及
基于所述未命中以及所述近存储器高速缓存中的存储器的所述特定行处于修改状态,使得所述近存储器高速缓存的所述特定行的数据被写入到所述远存储器的对应的行中。
18.根据权利要求17所述的方法,其中,所述特定存储器地址中的所述特定行的副本的目录状态在所述特定读取无效请求中被识别。
19.根据权利要求17所述的方法,其中,所述特定读取无效请求通过缓冲存储器接口被接收。
20.根据权利要求19所述的方法,其中,所述缓冲存储器接口与通用输入/输出(GPIO)接口分离,并且所述缓冲存储器接口包括基于所述通用输入/输出(GPIO)接口的物理层的物理层。
21.根据权利要求17-20中任一项所述的方法,其中,所述特定读取无效请求是多种类型的读取无效请求中的一种。
22.根据权利要求21所述的方法,其中,所述多种类型的读取无效请求中的每一种都不返回数据作为响应。
23.根据权利要求22所述的方法,其中,所述多种类型中的除所述特定读取无效请求以外的类型的读取无效请求对存储器的对应的行的目录状态进行更新。
24.一种计算系统,包括用于执行根据权利要求17-23中任一项所述的方法的单元。
25.根据权利要求24所述的计算系统,其中,所述单元包括在其上存储有指令的计算机可读介质,所述指令在被机器执行时使所述机器执行根据权利要求17-23中任一项所述的方法的至少一部分。
26.一种计算系统,包括:
缓冲器芯片;
通过所述缓冲器芯片访问的存储器,其中,所述存储器包括近存储器和远存储器;以及
处理器块,其通过存储器访问链路耦合到所述缓冲器芯片;
其中,所述缓冲器芯片包括存储器控制器,所述存储器控制器用于:
基于特定读取无效请求,读取近存储器高速缓存的特定行;
确定所述近存储器高速缓存的所述特定行中的与所述特定读取无效请求相对应的未命中;
与所述特定读取无效请求相关联地识别与所述近存储器高速缓存中的存储器的所述特定行相关联的目录状态处于修改状态;以及
基于所述未命中以及所述近存储器高速缓存中的存储器的所述特定行处于修改状态,使得所述近存储器高速缓存的所述特定行的数据被写入到所述远存储器的对应的行中。
27.根据权利要求26所述的计算系统,还包括归属代理。
28.根据权利要求27所述的计算系统,其中,所述归属代理基于所述特定读取无效请求来向一个或多个其他一致性代理发送探听。
29.根据权利要求28所述的计算系统,其中,所述探听包括探听无效。
30.根据权利要求26所述的计算系统,其中,所述处理器块通过通用输入/输出(GPIO)互连链路与一个或多个其他设备进行接合,所述存储器访问链路不同于所述GPIO互连链路,并且所述存储器访问链路的物理层是基于所述GPIO互连链路的物理层的。
31.根据权利要求30所述的计算系统,其中,所述存储器访问链路包括缓冲存储器访问链路,并且所述特定读取无效请求通过所述缓冲存储器访问链路被接收。
CN201810018846.6A 2015-03-27 2016-02-26 两级存储器全行写入 Active CN108268382B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/670,857 2015-03-27
US14/670,857 US9619396B2 (en) 2015-03-27 2015-03-27 Two level memory full line writes
CN201680012356.4A CN107257960B (zh) 2015-03-27 2016-02-26 管理计算机存储器的装置、方法、系统及存储介质
PCT/US2016/019698 WO2016160202A1 (en) 2015-03-27 2016-02-26 Two level memory full line writes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680012356.4A Division CN107257960B (zh) 2015-03-27 2016-02-26 管理计算机存储器的装置、方法、系统及存储介质

Publications (2)

Publication Number Publication Date
CN108268382A CN108268382A (zh) 2018-07-10
CN108268382B true CN108268382B (zh) 2022-05-31

Family

ID=56975442

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810018846.6A Active CN108268382B (zh) 2015-03-27 2016-02-26 两级存储器全行写入
CN201680012356.4A Active CN107257960B (zh) 2015-03-27 2016-02-26 管理计算机存储器的装置、方法、系统及存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201680012356.4A Active CN107257960B (zh) 2015-03-27 2016-02-26 管理计算机存储器的装置、方法、系统及存储介质

Country Status (4)

Country Link
US (2) US9619396B2 (zh)
CN (2) CN108268382B (zh)
TW (2) TWI643068B (zh)
WO (1) WO2016160202A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619396B2 (en) 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US20170109072A1 (en) * 2015-10-16 2017-04-20 SK Hynix Inc. Memory system
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
CN108763106B (zh) * 2018-05-31 2020-07-24 西安微电子技术研究所 一种基于交叉存储的Cache实现方法
US10534710B2 (en) * 2018-06-22 2020-01-14 Intel Corporation Non-volatile memory aware caching policies
US10649927B2 (en) * 2018-08-20 2020-05-12 Intel Corporation Dual in-line memory module (DIMM) programmable accelerator card
US10915445B2 (en) 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
KR102605566B1 (ko) * 2018-11-22 2023-11-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10771189B2 (en) * 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US11669454B2 (en) 2019-05-07 2023-06-06 Intel Corporation Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
CN110309014B (zh) * 2019-07-05 2023-06-20 西安微电子技术研究所 一种全行编解码sram编码器数据读写结构及数据读写方法
CN110413521B (zh) * 2019-07-24 2023-01-24 杭州迪普信息技术有限公司 一种堆内存的写越界检测方法和装置
SG11202001978YA (en) * 2019-09-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage based on error correction coding in trusted execution environments
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11016913B1 (en) * 2020-03-30 2021-05-25 Apple Inc. Inter cluster snoop latency reduction
US11874774B2 (en) * 2020-09-24 2024-01-16 Advanced Micro Devices, Inc. Mechanism to efficiently rinse memory-side cache of dirty data
CN112380150B (zh) * 2020-11-12 2022-09-27 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN112597080B (zh) * 2020-12-29 2022-10-21 联芸科技(杭州)股份有限公司 读请求控制装置及方法以及存储器控制器
US11625251B1 (en) * 2021-12-23 2023-04-11 Advanced Micro Devices, Inc. Mechanism for reducing coherence directory controller overhead for near-memory compute elements
US11977782B2 (en) * 2022-06-30 2024-05-07 Advanced Micro Devices, Inc. Approach for enabling concurrent execution of host memory commands and near-memory processing commands

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442571A (en) * 1991-06-17 1995-08-15 Digital Equipment Corporation Method and apparatus for cache miss reduction by simulating cache associativity
CN101027652A (zh) * 2004-09-30 2007-08-29 英特尔公司 对于直接存储器存取地址转换的高速缓存支持
CN101165666A (zh) * 2006-10-17 2008-04-23 国际商业机器公司 在数据处理系统中建立地址转换的方法和装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US6640287B2 (en) * 2000-06-10 2003-10-28 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US6725343B2 (en) 2000-10-05 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US6925537B2 (en) * 2001-06-11 2005-08-02 Hewlett-Packard Development Company, L.P. Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US8140770B2 (en) * 2005-02-10 2012-03-20 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation
US8495308B2 (en) * 2006-10-09 2013-07-23 International Business Machines Corporation Processor, data processing system and method supporting a shared global coherency state
US8443134B2 (en) * 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US8108621B2 (en) 2009-05-27 2012-01-31 Via Technologies, Inc. Data cache with modified bit array
US9208084B2 (en) * 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling
US8799586B2 (en) 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US20120324195A1 (en) 2011-06-14 2012-12-20 Alexander Rabinovitch Allocation of preset cache lines
EP2761472B1 (en) 2011-09-30 2020-04-01 Intel Corporation Memory channel that supports near memory and far memory access
CN107608910B (zh) * 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN102521151A (zh) * 2011-11-28 2012-06-27 华为技术有限公司 数据缓存方法和装置
WO2014065880A1 (en) * 2012-10-22 2014-05-01 Robert Beers Coherence protocol tables
GB2514107B (en) 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
CN103440223B (zh) * 2013-08-29 2017-04-05 西安电子科技大学 一种实现高速缓存一致性协议的分层系统及其方法
US9619396B2 (en) 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442571A (en) * 1991-06-17 1995-08-15 Digital Equipment Corporation Method and apparatus for cache miss reduction by simulating cache associativity
CN101027652A (zh) * 2004-09-30 2007-08-29 英特尔公司 对于直接存储器存取地址转换的高速缓存支持
CN101165666A (zh) * 2006-10-17 2008-04-23 国际商业机器公司 在数据处理系统中建立地址转换的方法和装置

Also Published As

Publication number Publication date
US20170337134A1 (en) 2017-11-23
CN107257960A (zh) 2017-10-17
WO2016160202A1 (en) 2016-10-06
US10140213B2 (en) 2018-11-27
TW201820147A (zh) 2018-06-01
CN107257960B (zh) 2021-07-20
US20160283388A1 (en) 2016-09-29
US9619396B2 (en) 2017-04-11
TWI643068B (zh) 2018-12-01
TW201635151A (zh) 2016-10-01
CN108268382A (zh) 2018-07-10
TWI653532B (zh) 2019-03-11

Similar Documents

Publication Publication Date Title
CN108268382B (zh) 两级存储器全行写入
US20230367481A1 (en) Implied directory state updates
CN108829614B (zh) 缓冲存储器中的推测性读
CN108334463B (zh) 事务性缓冲式存储器中的提早识别
CN107005371B (zh) 事务缓冲存储器中的错误处理
CN107438838B (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