CN110908929A - 用于高带宽缩放的一致数据高速缓存 - Google Patents

用于高带宽缩放的一致数据高速缓存 Download PDF

Info

Publication number
CN110908929A
CN110908929A CN201910463512.4A CN201910463512A CN110908929A CN 110908929 A CN110908929 A CN 110908929A CN 201910463512 A CN201910463512 A CN 201910463512A CN 110908929 A CN110908929 A CN 110908929A
Authority
CN
China
Prior art keywords
cache
memory
cache line
data
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.)
Granted
Application number
CN201910463512.4A
Other languages
English (en)
Other versions
CN110908929B (zh
Inventor
W·A·甘地
T·曼达尔
R·K·马尼亚姆
S·S·拉奥
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN110908929A publication Critical patent/CN110908929A/zh
Application granted granted Critical
Publication of CN110908929B publication Critical patent/CN110908929B/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
    • 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

公开了一种用于分布式高速缓存的方法、计算机可读介质和系统,其使多个处理单元快速访问存储在本地存储器中的一部分数据。分布式高速缓存由多个较小的高速缓存组成,并且每个较小的高速缓存与至少一个处理单元相关联。除了通过其在处理单元和较小的高速缓存之间传输数据的共享交叉网络之外,在形成伙伴高速缓存集的两个或更多个较小高速缓存之间提供专用连接。通过专用连接传输数据可减少共享交叉网络上的拥塞。减少共享交叉开关网络上的拥塞增加可用带宽并允许处理单元的数量增加。定义了一致性协议,用于访问存储在分布式高速缓存中的数据,以及用于在伙伴缓存集的较小高速缓存之间传输数据。

Description

用于高带宽缩放的一致数据高速缓存
技术领域
本发明涉及数据高速缓存,更具体地涉及一致数据高速缓存。
背景技术
当处理器中包括多个处理单元时,每个处理单元可以包括直接耦合到 本地存储器切片(silce)的高速缓存。换句话说,每个处理单元包括分布 式高速缓存的切片。通常,只有直接耦合到本地存储器切片的高速缓存可 以高速缓存存储在本地存储器切片中的数据。处理器内的处理单元通过处 理器内的交叉开关网络访问高速缓存(和本地存储器切片)。交叉开关网 络上的拥塞限制了增加处理器中处理单元数量的能力,从而限制了提高性 能的能力。高速缓存的物理布局受到制约,因为高速缓存应位于交叉开关 网络附近,以最小化交叉开关网络中用于高速操作的线路的长度,并最小 化交叉开关网络所消耗的芯片面积。需要解决这些问题和/或与现有技术相 关的其他问题。
发明内容
公开了一种用于分布式高速缓存存储器的方法、计算机可读介质和系 统,包括耦合到第一存储器切片的第一高速缓存存储器和耦合到第二存储 器切片的第二高速缓存存储器。第一高速缓存存储器包括第一高速缓冲线, 其存储来自第一存储器切片中的第一位置的第一数据并且与第一位置一 致,其中第一高速缓存存储器通过专用连接直接耦合到第二高速缓存存储 器并且通过共享连接间接耦合到第二高速缓存存储器。第二高速缓存存储 器包括第二高速缓冲线,其存储来自第二存储器切片中的第二位置的第二 数据并且与第二位置一致,其中第一高速缓冲线通过专用连接被写入第二 数据。
附图说明
图1A示出了根据实施例的包括两个处理器的子系统的框图,每个处 理器包括多个处理单元和经由交叉开关网络连接相应的高速缓存。
图1B示出了根据实施例的通过专用连接直接耦合的伙伴集中的高速 缓存的框图。
图1C示出了根据实施例的用于数据的一致高速缓存的方法的流程图。
图2A示出了根据实施例的逐出高速缓冲线的方法的流程图。
图2B示出了根据实施例的用于完成读取请求的伙伴集内的一致高速 缓冲线访问点的方法的流程图。
图3示出了根据实施例的并行处理单元。
图4A示出了根据实施例的图3的并行处理单元内的通用处理集群。
图4B示出了根据实施例的图3的并行处理单元的存储器分区单元。
图5A示出了根据实施例的图4A的流式多处理器。
图5B是根据实施例的使用图3的PPU实现的处理系统的概念图。
图5C示出了可以实现各种先前实施例的各种架构和/或功能的示例性 系统。
具体实施方式
处理器可以包括多个处理单元和高速缓存,每个处理单元和高速缓存 耦合到本地存储器的切片。然而,与传统的分布式高速缓存相比,其中只 有直接耦合到本地存储器切片的高速缓存可以高速缓存存储在本地存储器 切片中的数据,高速缓存被组织成伙伴集。伙伴集内的一个或更多个高速 缓存可以高速缓存存储在直接耦合到伙伴集内的一个或更多个高速缓存的 本地存储器的切片中的数据。伙伴集中的一个或更多个高速缓存不是通过 与其他组件(如处理单元)共享的交叉开关网络传输数据,而是通过直接 耦合到伙伴集中的一个或更多个高速缓存中的每一个的专用连接来传输数 据和命令。每个伙伴集具有单独的专用连接或专用伙伴传输网络。在一实 施例中,专用连接是片上互连。在一实施例中,每个高速缓存仅包括在单 个伙伴集中。
减少了交叉开关网络上的拥塞并且可以增加每个处理器内的处理单元 的数量。另外,多个处理器可以包括在子系统内。伙伴集中的高速缓存可 以在不使用交叉开关网络的情况下彼此通信,从而提高处理器和/或子系统 的物理布局的灵活性。
图1A示出了根据实施例的包括两个处理器105(即,105-1和105-2) 的子系统100的框图,每个处理器105包括经由交叉开关网络112(即,112-1 或112)连接的多个处理单元110和高速缓存115。请注意,高速缓存115 的数量不一定等于处理单元110的数量。子系统100包括将处理器105耦 合到系统或主机存储器122的FBHUB。单独的HSHUB将子系统耦合到包 括多个子系统和/或其他处理器的系统中的其他子系统,例如中央处理单元 (CPU)和系统存储器。在一实施例中,HSHUB是NVLink。在一实施例 中,FBHUB是PCIe。FBHUB将处理器105存储器系统连接到PCIe端点 实现。FBHUB还提供与GPU所需的如视频解码的各种IP模块的单点连接。 在一实施例中,与FBHUB的连接包括不需要高带宽性能的客户端。相反, 交叉开关制网络112允许在单个管芯上和/或在单个封装内制造的各种处理 单元110与分布式高速缓存115通信。
不同处理器中的高速缓存115被组织成伙伴集,每个伙伴集包括处理 器105-1中的第一高速缓存115和处理器105-2中的第二高速缓存115。每 个伙伴集中的高速缓存115通过专用连接彼此直接耦合。在一实施例中, 专用连接是点对点连接。高速缓存115每一个还耦合到本地存储器切片120 (图1A中未示出)。因此,本地存储器切片120分布在处理器105和处理 单元110之间。
在每个处理器105内,处理单元110通过交叉开关网络112和处理器 105内的高速缓存115访问本地存储器切片120。与处理器105-1耦合的本 地存储器切片120是处理器105-1的“归属”存储器。耦合到处理器105-2 的本地存储器切片120是处理器105-1的“远程”存储器。注意,归属和本地 的存储器类型是相对于请求的起源和目的地。每个处理单元110可以通过 交叉开关网络112和HSHUB的组合或者通过交叉开关网络112和专用连 接的组合来访问存储在远程存储器中的数据。处理器105-1中的处理单元 110可以访问经由交叉开关网络112-1、HSHUB、交叉开关网络112-2和耦 合到本地存储器的切片120的处理器105-2中的高速缓存115,耦合到处理 器105-2的任何本地存储器切片120。可选地,处理器105-1中的处理单元 110可以访问经由交叉开关网络112-1和通过专用连接耦合到与本地存储器 切片120耦合的处理器105-2中的高速缓存115的伙伴高速缓存115,耦合 到处理器105-2的任何本地存储器的切片120。
图1B示出了根据实施例的通过专用连接120直接耦合的伙伴集中的 高速缓存115的框图。每个高速缓存115包括高速缓冲线存储118中的多 个高速缓冲线、高速缓存状态125以及耦合到专用连接120和交叉开关网 络112的高速缓存接口130。高速缓存115-1在处理器105-1内并且高速缓 存115-2在处理器115-2内,专用连接120耦合在处理器105-1和处理器 105-2之间。
高速缓存状态125存储高速缓存115中的每个高速缓冲线的状态信息。 每个高速缓冲线可以被指定为一致点(POC)或本地高速缓存的节点 (LCN)。为每个高速缓冲线存储的状态信息可以指示高速缓冲线是被分 配还是可用,POC或LCN,以及共享或不共享(无效)。要被指定为POC, 高速缓存必须耦合到本地存储器切片120,其将数据存储在高速缓冲线中。 在伙伴集中组织的并且不直接耦合到将数据存储在高速缓冲线中的本地存 储器切片120的高速缓存115内的任何高速缓冲线可以被指定为LCN。例 如,高速缓存存储在本地存储器切片120-1中的数据的高速缓冲线存储器 118-1中的高速缓冲线可以被指定为POC。高速缓存存储在本地存储器切 片120-1中的数据的高速缓冲线存储器118-2中的高速缓冲线不能被指定为 POC,但相反可以被指定为存储数据的高速缓冲线存储器118-1中的高速缓冲线的LCN。LCN高速缓冲线允许数据从高速缓存115传输到子系统100 内的另一个处理器105,而不通过包含POC高速缓冲线的处理器105内的 HSHUB和交叉开关网络112。POC高速缓冲线的状态信息是被分配,POC, 以及共享或不共享。LCN高速缓冲线的状态信息是被分配,LCN和共享。 非POC和非LCN高速缓冲线的状态信息是未分配的。
对于存储在本地存储器切片中的数据的每个高速缓冲线大小的部分, 可以仅配置单个POC高速缓冲线。高速缓存115-1中的POC高速缓冲线可 以与高速缓存115-2中的LCN高速缓冲线包括在伙伴集中的其他高速缓存 115(未示出)合作,并通过专用连接135耦合。当数据在本地高速缓存115 中(在POC或LCN高速缓冲线任一中)不可用时,数据通过处理器内交 叉开关网络112或通过处理器内交叉开关网络112和处理器间网络 (HSHUB)的组合从本地存储器120传输。
存储在高速缓存状态125中的高速缓存状态信息指示每个高速缓冲线 是否被指定为POC或LCN。对于指定为POC的高速缓冲线,高速缓存状 态信息还指示高速缓冲线是否与在伙伴高速缓存中指定为LCN的高速缓冲 线共享。当指定为POC的高速缓冲线未共享时,指示POC高速缓冲线是 否被共享的状态信息是无效的(不共享),这意味着POC高速缓冲线是独 占的。命令和数据在伙伴集中的高速缓存115之间传输以遵守一致协议, 如结合图1C、2A和2B所描述的。在以下描述的上下文中,POC高速缓冲 线始终与本地存储器120一致,并且LCN高速缓冲线与对应的POC高速 缓冲线一致。在一实施例中,LCN高速缓冲线的状态信息指示LCN高速缓 冲线与伙伴高速缓存集中的对应POC高速缓冲线一致。
在一实施例中,高速缓冲线存储118-1和118-2中的任何高速缓冲线 可以被分配为POC或LCN的任一,而不限制分配给POC或LCN的高速 缓冲线的最大数量(直到高速缓冲线存储器118中的物理高速缓冲线的数 量)。在另一实施例中,在每个高速缓冲线存储器118中可用于分配为POC 的高速缓冲线的数量可以由可编程值限制。类似地,在每个高速缓冲线存 储器118中可用于分配为LCN的高速缓冲线的数量可以由可编程值限制。
现在将根据用户的期望阐述关于可以实现前述框架的各种任选架构和 特征的更多说明性信息。应该特别注意的是,以下信息出于说明性目的进 行阐述,并且不应该被解释为以任何方式进行限制。任意以下特征可以任 选地并入或不排除所描述的其他特征。
在一实施例中,未直接耦合到子系统100的其他存储器区域也被高速 缓存在高速缓存115中。每个存储器区域可以由存储器孔径(即,虚拟或 物理地址的范围)定义,并且存储器孔径内的每个位置被指定为处理器105 之一内的单个高速缓存115的归属存储器。该位置被指定为其他处理器105 内的高速缓存115的远程存储器。因此,存储归属存储器的数据的高速缓 冲线被指定为POC,并且对于其该位置是远程且也存储数据的高速缓存115 中的其他高速缓冲线被指定为LCN,因为存储器是远程的。例如,存储器 孔径可以被定义为高速缓存115-2的归属存储器,并且存储器孔径的数据 被存储在被指定为POC的高速缓冲线存储器118-2中的第一高速缓冲线 中。高速缓冲线存储器118-1中的第二高速缓冲线也可以存储数据,并且 被指定为第一高速缓冲线的LCN。
在一实施例中,指定存储器孔径,其中数据未存储在指定为LCN的高 速缓冲线中,并且在对其而言存储器是远程的高速缓存中的缺失由与归属 存储器相关联的高速缓存服务。例如,在处理器105-1中起始高速缓存115-1 可以通过专用连接135将访问远程存储器孔径内的地址的请求转发到与归 属存储器相关联的处理器105-2中的伙伴高速缓存115-2。伙伴高速缓存 115-2然后通过专用连接135将所请求的数据返回到起始高速缓存115-1。在一实施例中,根据对存储器孔径的要求,起始高速缓存115-1不将数据 存储在高速缓冲线中。每个存储器孔径可以被定义以使得LCN高速缓冲线 能够存储存储在伙伴POC高速缓冲线中的数据或者使LCN高速缓冲线不 能存储数据。
图1C示出了根据实施例的用于一致数据高速缓存的方法的流程图。 尽管在处理单元的上下文中描述了方法150,但是方法150还可以由程序、 定制电路或定制电路和程序的组合来执行。例如,方法150可以由GPU(图 形处理单元)、CPU(中央处理单元)或包括耦合到存储器切片并被组织 成伙伴集的高速缓存的任何处理器来执行。此外,本领域普通技术人员将 理解,执行方法150的任何系统都在本发明的实施例的范围和精神内。
在步骤155,将来自第一存储器切片104-1中的第一位置的第一数据存 储到高速缓存115-1中的第一高速缓冲线,其耦合到第一存储器切片104-1。 第一高速缓冲线与第一位置一致,并且第一高速缓冲线被指定为POC。在 步骤160,将来自第二存储器切片104-2中的第二位置的第二数据存储到高 速缓存115-2中的第二高速缓冲线,其耦合到第二存储器切片104-2。第二 高速缓冲线与第二位置一致,并且第二高速缓冲线被指定为POC。
第一高速缓存115-1通过专用连接135直接耦合到第二高速缓存 115-2,并且通过共享连接(交叉开关网络112和HSHUB)间接耦合到第 二高速缓存115-2。在步骤165,第一高速缓存115-1中的第一高速缓冲线 通过专用连接135写入第二数据。在步骤170,高速缓存115-1中的第一高 速缓冲线的高速缓存状态125从POC变为LCN。具体地,第一高速缓冲线的状态信息被修改为无效(不共享)。此外,第一高速缓冲线的状态信息 从指示第一高速缓冲与第一位置一致线被修改为指示第一高速缓冲线与第 二高速缓冲线一致。
在步骤175,在第一高速缓存115-1处接收对第二位置的写入请求,并 且将第三数据写入第一高速缓冲线。根据第一高速缓冲线的状态信息,第 一高速缓冲线是LCN缓冲线。因此,第三数据也将被写入第二(POC)高 速缓冲线。在步骤180,第一高速缓存115-1通过专用连接135将写入命令 发送到第二高速缓存115-2,并且将第三数据写入第二高速缓冲线。第二高 速缓冲线是POC高速缓冲线,因此保持与本地存储器的一致性。写入命令 在LCN高速缓存中执行。由于已经在POC处跟踪该线,因此LCN高速缓 冲线不需要额外的状态跟踪。
在步骤185,在第二高速缓存115-2处接收对第二位置的写入请求,并 且通过专用连接135将第四数据写入第二高速缓冲线。根据第二高速缓冲 线的状态信息,第二高速缓冲线是POC缓冲线。因此,在步骤190,因为 第二高速缓冲线与至少第一高速缓冲线共享,所以第二高速缓存115-2通 过专用连接135发送无效命令。伙伴集中与第二高速缓冲线共享的LCN高 速缓冲线无效,并且更新第二高速缓冲线的状态以指示不共享第二高速缓 冲线。
在一实施例中,在步骤190,高速缓存接口130通过专用连接135发 送用于第二位置的无效命令。无效命令由伙伴高速缓存115-1和其他伙伴 高速缓存115(图1B中未示出)接收,并且与第二高速缓冲线共享的任何 LCN高速缓冲线的状态信息被修改为不共享(无效)。当未共享LCN高速 缓冲线时,LCN高速缓冲线被释放。当高速缓存状态125指示POC高速缓 冲线未与伙伴集中的任何LCN高速缓冲线共享时,则当POC高速缓冲线 被写入时不需要额外的状态更新,因为POC高速缓冲线的状态信息表明 POC缓冲线未共享。
在一实施例中,在步骤190,高速缓存115-2中的高速缓存接口130 通过专用连接135发送用于第二位置的无效命令。第二高速缓冲线的状态 信息可以包括指示与第二高速缓冲线共享的LCN缓冲线数量的计数。当具 有与第二高速缓冲线共享的LCN高速缓冲线的伙伴高速缓存115接收到无 效命令时,LCN高速缓冲线无效并且通过专用连接135将确认命令发送到 高速缓存115-2。一旦高速缓存115-2接收到确认命令的数量等于LCN高 速缓冲线的计数时,第二高速缓冲线的状态信息被更新为不共享。任何无 效的LCN高速缓冲线可以响应于高速缓存缺失而被释放并且被重新分配为 POC或LCN高速缓冲线以存储用于不同存储器位置的数据。无效高速缓冲 线不能用于服务请求。
在一实施例中,高速缓存状态125包括用于跟踪共享LCN高速缓冲线 的n路相关缓冲器。在一实施例中,用于跟踪共享高速缓冲线的高速缓存 状态125的存储容量是有限的,并且指定为LCN的高速缓冲线可以无效, 以在消耗预定阈值量的存储容量时有效地逐出LCN高速缓冲线。在一实施 例中,一个或更多个最近最少使用(LRU)的LCN高速缓冲线被无效。
图2A示出了根据实施例的用于逐出高速缓冲线的方法的流程图。尽 管在处理单元的上下文中描述了方法200,但是方法200也可以由程序、定 制电路或者通过定制电路和程序的组合执行。例如,方法200可以由GPU (图形处理单元)、CPU(中央处理单元)或包括耦合到存储器切片并被 组织成伙伴集的的高速缓存的任何处理器来执行。此外,本领域普通技术 人员将理解,执行方法200的任何系统都在本发明的实施例的范围和精神 内。
在步骤205,选择高速缓存存储器118中的高速缓冲线以进行逐出。 由于各种原因(诸如设置/容量冲突、高速缓存无效等),高速缓存115中 的高速缓冲线可被逐出。在步骤210,高速缓存115确定为所选择的高速缓 冲线存储的状态信息是否指示所选择的高速缓冲线被指定为POC。如果是, 则在步骤220,高速缓存115释放所选择的高速缓冲线。该高速缓冲线的状 态信息保持不变,直到再次分配该高速缓冲线。重要的是,即使所选择的 高速缓冲线与伙伴高速缓存115中的一个或更多个LCN高速缓冲线共享, 也没有命令由高速缓存115通过专用连接135发送。任何LCN高速缓冲线 可以继续服务于本地处理单元的读取和写入请求。
如果在步骤210,高速缓存115确定为所选择的高速缓冲线存储的状 态信息指示所选择的高速缓冲线未被指定为POC,则所选择的高速缓冲线 被指定为LCN,并且在步骤215,高速缓存115通过专用连接135将逐出 命令发送到POC高速缓冲线。在一实施例中,仅当专用连接135空闲(没 有发送其他命令)时才发送逐出命令。在步骤220,POC高速缓冲线的状 态信息从共享更新为不共享,并且包括POC高速缓冲线的高速缓存115将 确认发送到包括所选择的LCN高速缓冲线的高速缓存。
在步骤225,高速缓存115确定伙伴高速缓存组中的其他高速缓冲线 是否被共享为LCN高速缓冲线,并且,如果不是,则高速缓存115进行到 步骤235。否则,在步骤230,高速缓存115通过专用连接135将无效命令 发送到伙伴高速缓存集中的其他高速缓存115,以使其他LCN高速缓冲线 无效。
图2B示出了根据实施例的用于在伙伴高速缓存集内用于完成读取请 求的POC高速缓冲线访问的方法240的流程图。尽管在处理单元的上下文 中描述了方法240,但是也可以通过程序、定制电路或定制电路和程序的组 合执行方法240。例如,方法240可以由GPU(图形处理单元)、CPU(中 央处理单元)或包括耦合到存储器切片并被组织成伙伴集的高速缓存的任 何处理器来执行。此外,本领域普通技术人员将理解,执行方法240的任 何系统都在本发明的实施例的范围和精神内。
在步骤245,伙伴高速缓存集中的高速缓存115接收对本地存储器切 片120中的,或者被定义为伙伴高速缓存组中的特定高速缓存115的归属 存储器的存储器孔径内的位置的读取请求。如果在步骤250,高速缓存115 确定发生高速缓存命中,意味着存储在该位置的数据也存储在高速缓存115 内的高速缓冲线存储器118中,然后在步骤290,从高速缓冲线存储器118 读取数据并返回给请求者。否则,当没有发生高速缓存命中时,在高速缓冲线存储器118中既没有POC高速缓冲线也没有LCN高速缓冲线。在步 骤260,高速缓存115确定高速缓存115是否耦合到本地存储器切片120 并且因此可以将来自该位置的数据存储在指定为POC的高速缓冲线中。例 如,高速缓存115-1可以将来自本地存储器切片120-1中的位置的数据存储 在指定为POC的高速缓冲线中,并且高速缓存115-1不能将来自本地存储 器切片120-2中的位置的数据存储在指定为POC的高速缓冲线中。相反, 高速缓存115-1可以将来自本地存储器切片120-2中的位置的数据存储在指 定为LCN的高速缓冲线中。
如果高速缓存115可以将数据存储在指定为POC的高速缓冲线中,则 在步骤265,高速缓存115将数据从该位置加载到高速缓存115内的高速缓 冲线存储器118中的高速缓冲线。如果没有高速缓冲线可分配用于存储数 据,则高速缓存115可以逐出高速缓冲线。在步骤268,更新高速缓存115 内的高速缓存状态125以指示高速缓冲线被指定为该位置的POC,并且在 步骤290,高速缓存115将数据返回给请求者。
如果在步骤260,高速缓存115不能将数据存储在指定为POC的高速 缓冲线中,则在步骤270,高速缓存115从存储POC缓冲线中的该位置的 数据的伙伴高速缓存集中的另一高速缓存115读取数据。例如,当存储数 据的请求位置在本地存储器切片120-2中时,高速缓存115-1可以通过专用 连接135从高速缓存115-2读取数据。高速缓存115-1可以通过专用连接 135将读请求发送到高速缓存115-2。如果数据没有存储在高速缓存115-2 中,则将发生高速缓存缺失,并且数据可以由高速缓存115-2加载到POC 高速缓冲线中。
在步骤275,高速缓存115确定指定为LCN高速缓冲线的高速缓冲线 是否被分配来存储数据。在一实施例中,如前所述,可以定义存储器孔径, 对于该存储器孔径,数据不存储在指定为LCN的高速缓冲线中,并且高速 缓存115中的缺失从伙伴高速缓存集中的另一高速缓存115中的POC高速 缓冲线读取。换句话说,可以定义存储器孔径,对于该存储器孔径,禁用 与其他高速缓存115中的高速缓冲线一致的分配(LCN)高速缓冲线。例 如,接收到读取请求的起始高速缓存115-1通过专用连接135将访问定义 的存储器孔径内的位置的请求转发到伙伴高速缓存115-2。然后,伙伴高速 缓存115-2将所请求的数据通过专用连接135返回给起始高速缓存115-1。 在一实施例中,根据对存储器孔径的要求,起始高速缓存115-1不分配指 定为LCN高速缓冲线的高速缓冲线来存储数据,并且进行到步骤290。
如果在步骤275,高速缓存115确定将分配指定为LCN高速缓冲线的 高速缓冲线来存储数据,则在步骤280,从POC高速缓冲线读取的数据存 储在指定为LCN的高速缓冲线中。如果高速缓冲线不可用于分配为LCN 高速缓冲线,则高速缓存115可以选择一个或更多个高速缓冲线用于逐出。 在步骤285,更新高速缓冲线的状态信息以指示高速缓冲线被指定为LCN 高速缓冲线,并且高速缓存前进到步骤290。
可以修改方法240以完成写入请求,如下所述。在步骤265,利用写 入请求接收的数据被存储到POC高速缓冲线。在步骤270,利用写入请求 接收的数据被存储到POC高速缓存,而不是从POC高速缓存中读取。在 步骤280,将利用写入请求接收的数据存储到高速缓冲线,并省略步骤290。
在一实施例中,存储在存储器中的数据被压缩,并且在数据可以被解 压和在其上操作之前需要压缩元数据。高速缓存115可以存储用于本地存 储器切片的压缩元数据的至少一部分。在一实施例中,为每个POC高速缓 冲线存储的压缩元数据不与任何LCN高速缓冲线共享。因此,当POC高 速缓冲线存储压缩数据时,压缩数据在被存储在与POC高速缓冲线共享的 LCN高速缓冲线之前被使用压缩元数据解压。在一实施例中,压缩数据在 被从POC高速缓冲线发送到伙伴高速缓存集中的另一个高速缓存115之前 被解压。在一实施例中,LCN高速缓冲线存储未压缩的数据。
将高速缓存115组织成伙伴高速缓存集形成分布式高速缓存,其中每 个伙伴集中的高速缓存115通过专用连接135彼此耦合。高速缓存115内 的每个高速缓冲线可以被配置为用于本地存储器切片120的POC或者用作 远程存储器(与伙伴高速缓存集中的另一个高速缓存115耦合的本地存储 器切片120)的LCN。在一实施例中,高速缓存115内的每个高速缓冲线 可以被配置为用于存储器孔径的POC。通过专用连接135发送数据减少了 交叉开关网络112上的拥塞,允许每个处理器105中的处理单元110的数 量增加并且允许子系统100中的处理器105的数量增加,从而提高性能。 专用连接135还通过允许高速缓存115远离高速缓存处理器105中的交叉 开关网络112而改善布局灵活性。
并行处理架构
图3示出了根据一实施例的并行处理单元(PPU)300。在一实施例中, PPU 300是在一个或更多个集成电路器件上实现的多线程处理器。PPU 300 是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程) 是被配置为由PPU 300执行的指令集的实例。在一实施例中,PPU 300是 图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据以生 成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图 像数据的图形渲染管线。在其他实施例中,PPU 300可以用于执行通用计 算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指 出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补 充和/或替代该处理器。
一个或更多个PPU 300可以被配置为加速数千个高性能计算(HPC)、 数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和 应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别 系统、智能视频分析、分子模拟、药物开发、疾病诊断、天气预报、大数 据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、 实时语言翻译、在线搜索优化和个性化用户推荐等。
如图3所示,PPU 300包括输入/输出(I/O)单元305、前端单元315、 调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、 一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。 PPU 300可以经由一个或更多个高速NVLink310互连连接到主机处理器或 其他PPU 300。PPU 300可以经由互连302连接到主机处理器或其他外围设 备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一 实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。 DRAM设备可以被配置为高带宽存储器(HBM)子系统,具有在每个设备 内堆叠的多个DRAM裸晶(die)。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU结 合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性, 以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330发送到 PPU 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码 器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描 述NVLink 310。
I/O单元305被配置为通过互连302从主机处理器(未示出)发送和接 收通信(即,命令、数据等)。I/O单元305可以直接经由互连302,或通 过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一实施例 中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如,一 个或更多个PPU 300)通信。在一实施例中,I/O单元305实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连302是PCIe 总线。在可选的实施例中,I/O单元305可以实现其他类型的周知的接口, 用于与外部设备进行通信。
I/O单元305对经由互连302接收的分组进行解码。在一实施例中,分 组表示被配置为使PPU 300执行各种操作的命令。I/O单元305按照命令指 定将解码的命令发送到PPU300的各种其他单元。例如,一些命令可以被 发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其 他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管 理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300的 各种逻辑单元之间和之中路由通信。
在一实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编 码,该缓冲区向PPU 300提供工作量用于处理。工作量可以包括要由那些 指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 300 两者访问(即,读/写)的区域。例如,I/O单元305可以被配置为经由通 过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲 区。在一实施例中,主机处理器将命令流写入缓冲区,然后向PPU 300发 送指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的 指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到 PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由 一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单 元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。 调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到被配置为分派任务以在GPC 350上执行的工作 分配单元325。工作分配单元325可以跟踪从调度器单元320接收到的多个 调度任务。在一实施例中,工作分配单元325为每个GPC 350管理待处理 (pending)任务池和活动任务池。待处理任务池可以包括多个时隙(例如, 32个时隙(slot)),其包含被指派为由特定GPC 350处理的任务。活动任 务池可以包括多个时隙(例如,4个时隙),用于正在由GPC 350主动处理 的任务。当GPC 350完成任务的执行时,该任务从GPC 350的活动任务池 中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待待解决的 数据依赖性时,那么活动任务可以从GPC 350中逐出并返回到待处理任务 池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar(交叉开关)370与一个或更多个GPC 350 通信。XBar370是将PPU 300的许多单元耦合到PPU 300的其他单元的互 连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的 GPC 350。虽然没有明确示出,但PPU 300的一个或更多个其他单元也可 以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。 GPC 350被配置为处理任务并生成结果。结果可以由GPC 350内的其他任 务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。 结果可以经由分区单元380写入存储器304,分区单元380实现用于从存储 器304读取数据和向存储器304写入数据的存储器接口。结果可以通过 NVLink310发送到另一个PPU 304或CPU。在一实施例中,PPU 300包括 数目为U的分区单元380,U等于耦合到PPU 300的分离且不同的存储器 设备304的数目。下面将结合图4B更详细地描述分区单元380。
在一实施例中,主机处理器执行实现应用程序编程接口(API)的驱 动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调 度操作用于在PPU 300上执行。在一实施例中,多个计算机应用程序由PPU 300同时执行,并且PPU 300为多个计算机应用程序提供隔离、服务质量 (QoS)和独立地址空间。应用程序可以生成指令(即API调用),其使得 驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将 任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一 个或更多个相关线程组,本文称为线程束(warp)。在一实施例中,线程 束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的 指令并且可以通过共享存储器交换数据的多个线程。结合图5A更详细地描 述线程和协作线程。
图4A示出了根据一实施例的图3的PPU 300的GPC 350。如图4A所 示,每个GPC 350包括用于处理任务的多个硬件单元。在一实施例中,每 个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引 擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490 以及一个或更多个数据处理集群(DPC)420。应当理解,图4A的GPC 350 可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外 的其他硬件单元。
在一实施例中,GPC 350的操作由管线管理器410控制。管线管理器 410管理用于处理分配给GPC 350的任务的一个或更多个DPC 420的配置。 在一实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少 一个来实现图形渲染管线的至少一部分。例如,DPC 420可以被配置为在 可编程流式多处理器(SM)440上执行顶点着色程序。管线管理器410还 可以被配置为将从工作分配单元325接收的分组路由到GPC 350中适当的 逻辑单元。例如,一些分组可以被路由到PROP 415和/或光栅引擎425中 的固定功能硬件单元,而其他分组可以被路由到DPC 420以供图元引擎435 或SM 440处理。在一实施例中,管线管理器410可以配置一个或更多个 DPC 420中的至少一个以实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路 由到光栅操作(ROP)单元,结合图4B更详细地描述。PROP单元415还 可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单 元。在一实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、 裁剪引擎、精细光栅引擎和瓦片聚合引擎。设置引擎接收变换后的顶点并 生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅 引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎 的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔 除,并且未剔除的片段被发送到裁剪引擎,其中位于视锥体之外的片段被 裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎, 以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的 输出包括例如要由在DPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个DPC 420包括M管线控制器(MPC)430、 图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将 从管线管理器410接收到的分组路由到DPC 420中的适当单元。例如,与 顶点相关联的分组可以被路由到图元引擎435,图元引擎435被配置为从存 储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的分组 可以被发送到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理 器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个 线程(例如,32个线程)。在一实施例中,SM 440实现SIMD(单指令、 多数据)体系架构,其中线程组(即,线程束)中的每个线程被配置为基 于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的 指令。在另一实施例中,SM 440实现SIMT(单指令、多线程)体系架构, 其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集, 但是其中线程组中的各个线程在执行期间被允许发散(diverge)。在一实施 例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的 线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另 一实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从 而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单 独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行 以获得最大效率。下面结合图5A更详细地描述SM 440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以 提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在 一实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地 址的转换的一个或更多个转换后备缓冲器(TLB)。
图4B示出了根据一实施例的图3的PPU 300的存储器分区单元380。 如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级 (L2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。 存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据 总线等。在一实施例中,PPU 300合并了U个存储器接口470,每对分区单元380有一个存储器接口470,其中每对分区单元380连接到对应的存储 器设备304。例如,PPU 300可以连接到多达Y个存储器设备304,诸如高 带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其 他类型的永久存储器。
在一实施例中,存储器接口470实现HBM2存储器接口,并且Y等于 U的一半。在一实施例中,HBM2存储器堆叠位于与PPU 300相同的物理 封装上,提供与常规GDDR5SDRAM系统相比显著的功率和面积节约。在 一实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中 HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据 总线宽度。
在一实施例中,存储器304支持单错校正双错检测(SECDED)纠错 码(ECC)以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供 了更高的可靠性。在大型集群计算环境中,可靠性尤其重要,其中PPU 300 处理非常大的数据集和/或长时间运行应用程序。
在一实施例中,PPU 300实现多级存储层级。在一实施例中,存储器 分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的 虚拟地址空间,使能虚拟存储器系统之间的数据共享。在一实施例中,由 PPU 300对位于其他处理器上的存储器的访问频率被跟踪,以确保存储器 页面被移动到更频繁地访问页面的PPU 300的物理存储器。在一实施例中, NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并 且提供由PPU 300对CPU存储器的完全访问。
在一实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU 之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后, 存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制 引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎 操作固定存储器(即,不可分页),其显著减少了可用存储器。由于硬件页 面错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并以 及制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380 提取并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各 个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的 存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350 内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级 (L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自 L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和 XBar 370。
ROP单元450执行与像素颜色相关的图形光栅操作,诸如颜色压缩、 像素混合等。ROP单元450还与光栅引擎425一起实现深度测试,从光栅 引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。深度针对 与片段关联的样本位置的深度缓冲区中的对应深度进行测试。如果片段通 过样本位置的深度测试,则ROP单元450更新深度缓冲区并将深度测试的 结果发送给光栅引擎425。将理解的是,分区单元380的数量可以不同于 GPC 350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。 ROP单元450跟踪从不同GPC350接收到的分组并且确定由ROP单元450 生成的结果通过Xbar 370被路由到哪个GPC350。尽管ROP单元450包括 在图4B中的存储器分区单元380内,但是在其他实施例中,ROP单元450 可以在存储器分区单元380之外。例如,ROP单元450可以驻留在GPC 350 或另一个单元中。
图5A示出了根据一实施例的图4A的流式多处理器440。如图5A所 示,SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存 器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU) 552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储 器/L1高速缓存570。
如上所述,工作分配单元325分派任务以在PPU 300的GPC 350上执 行。任务被分配给GPC 350内的特定DPC 420,并且如果任务与着色器程 序相关联,则该任务可以被分配给SM 440。调度器单元510接收来自工作 分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令 调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每 个线程块被分配至少一个线程束。在一实施例中,每个线程束执行32个线 程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的 线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到 各个功能单元(即,核心550、SFU552和LSU 554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正 在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协 作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型 为同步协作线程提供了单一的简单结构:跨线程块的所有线程的屏障 (barrier)(即,syncthreads()函数)。然而,程序员通常希望以小于线程 块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接 口(collective group-wide function interface)的形式使能更高的性能、设计 灵活性和软件复用。
协作组使得程序员能够在子块(即,像单个线程一样小)和多块粒度 处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。 编程模型支持跨软件边界的干净组合,以便库和效用函数可以在本地环境 中安全地同步,而无需对收敛进行假设。协作组图元启用协作并行的新模 式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局 同步。
分派单元515被配置为向一个或更多个功能单元发送指令。在该实施 例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期 期间分派来自相同线程束的两个不同指令。在替代实施例中,每个调度器 单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的 一组寄存器。在一实施例中,寄存器文件520在每个功能单元之间被划分, 使得每个功能单元被分配寄存器文件520的专用部分。在另一实施例中, 寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件 520为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 440包括L个处理核心550。在一实施例中,SM 440包括大 量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线 化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元 和整数运算逻辑单元。在一实施例中,浮点运算逻辑单元实现用于浮点运 算的IEEE 754-2008标准。在一实施例中,核心550包括64个单精度(32 位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量 核心(tensorcore)。在一实施例中,核心550被配置为使用方法100或260 执行修约操作。
张量核心被配置为执行矩阵运算,并且在一实施例中,一个或更多个 张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习 矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一实施例中,每 个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C, 其中A、B、C和D是4×4矩阵。在一实施例中,张量核心被配置为使用 方法100或260执行修约操作。
在一实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵 C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据 以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的 积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实 践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的 矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘 法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量 核心。在CUDA水平,线程束级接口假定16×16尺寸矩阵跨越线程束的全 部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等) 的M个SFU552。在一实施例中,SFU 552被配置为使用方法100或260 执行修约操作。在一实施例中,SFU 552可以包括树遍历单元,其被配置 为遍历分层树数据结构。在一实施例中,SFU 552可以包括被配置为执行 纹理贴图过滤操作的纹理单元。在一实施例中,纹理单元被配置为从存储 器304加载纹理贴图(例如,纹理像素的2D阵列)并且对纹理贴图进行采 样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在 一实施例中,纹理贴图被存储在共享存储器/L1高速缓存470中。纹理单元 实现纹理操作,诸如使用mip贴图(即,不同细节水平的纹理贴图)的过 滤操作。在一实施例中,每个SM 440包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存 570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功 能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共 享存储器/L1高速缓存570的互连网络580。在一实施例中,互连网络580 是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的 任何寄存器,以及将LSU 554连接到寄存器文件和共享存储器/L1高速缓 存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许SM 440与图 元引擎435之间以及SM 440中的线程之间的数据存储和通信。在一实施例 中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM 440 到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓 存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器 304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的 存储器访问提供最佳的总体性能。该容量可用作不使用共享存储器的程序 的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加 载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成 使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管道的 作用,并且同时提供对频繁复用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的 配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单 的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指 派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线 程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算, 使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554 通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局 存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320 可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务 器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、 数码相机、车辆、头戴式显示器、手持式电子设备等中。在一实施例中, PPU 300体现在单个半导体衬底上。在另一实施例中,PPU 300与一个或更 多个其他器件(诸如附加PPU 300、存储器204、精简指令集计算机(RISC) CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包 括在片上系统(SoC)上。
在一实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或 更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的PCIe 插槽接口。在又一实施例中,PPU 300可以是包含在主板的芯片集中的集 成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸 如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和 超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以 解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传 输机制需要扩展以支持该增加带宽。
图5B是根据一实施例的使用图3的PPU 300实现的处理系统500的 概念图。示例性系统565可以被配置为实现图1中所示的方法100。处理系 统500包括CPU 530、交换机510和多个PPU 300中的每一个以及各自的 存储器304。NVLink 310提供每个PPU 300之间的高速通信链路。尽管图 5B中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU300和CPU 530的连接的数量可以改变。交换机510在互连302和CPU 530 之间接口。PPU300、存储器304和NVLink 310可以位于单个半导体平台 上以形成并行处理模块525。在一实施例中,交换机510支持两个或更多个 在各种不同连接和/或链路之间接口的协议。
在另一实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530 之间提供一个或更多个高速通信链路,并且交换机510在互连302和每个 PPU 300之间进行接口。PPU300、存储器304和互连302可以位于单个半 导体平台上以形成并行处理模块525。在又一实施例(未示出)中,互连 302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交 换机510使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300 之间提供一个或更多个高速通信链路。在另一实施例(未示出)中,NVLink 310在PPU300和CPU 530之间通过交换机510提供一个或更多个高速通 信链路。在又一实施例(未示出)中,互连302直接地在每个PPU 300之 间提供一个或更多个通信链路。可以使用与NVLink 310相同的协议将一个 或更多个NVLink 310高速通信链路实现为物理NVLink互连或者片上或裸 晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造 的唯一的基于单一半导体的集成电路。应该注意的是,术语单个半导体平 台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常 规总线实现方式进行实质性改进。当然,根据用户的期望,各种电路或器 件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理 模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一实施例中,CPU 530、交换机510和并行处理模 块525位于单个半导体平台上。
在一实施例中,每个NVLink 310的信令速率是20到25千兆比特/秒, 并且每个PPU300包括六个NVLink 310接口(如图5B所示,每个PPU 300 包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆 比特/秒的数据传输速率,其中六条链路提供300千兆比特/秒。当CPU 530 还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5B 所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一实施例中,NVLink 310允许从CPU 530到每个PPU 300的存储 器304的直接加载/存储/原子访问。在一实施例中,NVLink 310支持一致 性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层 结构中,减少了CPU 530的高速缓存访问延迟。在一实施例中,NVLink 310 包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU 530内 的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5C示出了示例性系统565,其中可以实现各种先前实施例的各种体 系架构和/或功能。示例性系统565可以被配置为实现图1C中所示的方法 150或图2A中所示的方法200。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中 央处理单元530。通信总线575可以使用任何合适的协议来实现,诸如PCI (外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其 他总线或一个或更多个点对点通信协议。系统565还包括主存储器540。控 制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取 随机存取存储器(RAM)的形式。
系统565还包括输入设备560、并行处理系统525和显示设备545,即 常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离 子显示器等。可以从输入设备560(例如键盘、鼠标、触摸板、麦克风等) 接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平 台上以形成系统565。可选地,根据用户的期望,各个模块还可以分开放置 或以半导体平台的各种组合来放置。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例 如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、 对等网络、电缆网络等)。
系统565还可以包括二级存储(未示出)。二级存储610包括例如硬 盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱 动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB) 闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写 入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或二 级存储中。这些计算机程序在被执行时使得系统565能够执行各种功能。 存储器540、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板 系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他期望的 系统的上下文中实现。例如,系统565可以采取台式计算机、膝上型计算 机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、 个人数字助理(PDA)、数字相机、车辆、头戴式显示器、手持式电子设备、 移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他 类型的逻辑的形式。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于 各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图 像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它 模拟人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时 间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确 识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样, 深度学习或神经学习系统需要在目标识别和分类方面进行训练,以便在识 别基本目标、遮挡目标等同时还有为物体分配情景时变得更加智能和高效。
在最简单的水平上,人类大脑中的神经元查看接收到的各种输入,将 重要性级别分配给这些输入中的每一个,并且将输出传递给其他神经元以 进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中, 感知器可以接收一个或更多个输入,其表示感知器正被训练以识别和分类 的目标的各种特征,并且在定义目标形状时,这些特征中的每一个基于该 特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接的感知器(例如节点)的多 个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一 个示例中,DLL模型的第一层将汽车的输入图像分解为各个部分,并查找 基本图案(诸如线条和角)。第二层组装线条以寻找更高级别的图案,诸如 轮子、挡风玻璃和镜子。下一层识别车辆类型,最后几层生成输入图像的 标签,识别具体汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理 (inference)的过程中识别和分类目标或图案。推理的示例(DNN从给定 输入中提取有用信息的过程)包括识别沉积在ATM机中的支票上的手写数 字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分 类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类 言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生指示对应于 输入的标签的预测为止。如果神经网络没有正确标记输入,则分析正确标 签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权 重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂 的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和 加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过 程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图 像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的 浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学 运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传 送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
虽然上文已经描述了各种实施例,但应该理解的是,它们仅作为示例 呈现,而不是限制。因此,优选实施例的广度和范围不应被任何上述示例 性实施例限制,而应仅根据以下和随后提交的权利要求及其等同来限定。

Claims (20)

1.一种分布式高速缓存存储器,包括:
耦合到第一存储器切片的第一高速缓存存储器,所述第一高速缓存存储器包括第一高速缓冲线,其存储来自所述第一存储器切片中的第一位置的第一数据并且与所述第一位置一致,其中所述第一高速缓存存储器通过专用连接直接耦合到第二高速缓存存储器,并通过共享连接间接耦合到所述第二高速缓存存储器;以及
耦合到第二存储器切片的第二高速缓存存储器,所述第二高速缓存存储器包括第二高速缓冲线,其存储来自所述第二存储器切片中的第二位置的第二数据并且与所述第二位置一致,其中所述第一高速缓冲线通过所述专用连接被写入所述第二数据。
2.如权利要求1所述的分布式高速缓存存储器,其中,所述第一高速缓冲线的状态信息被从指示所述第一高速缓冲线与所述第一位置一致修改为指示所述第一高速缓冲线与所述第二高速缓冲线一致。
3.如权利要求2所述的分布式高速缓存存储器,其中,响应于接收对所述第二位置的写入请求,所述第二高速缓存存储器被配置为:
将命令发送到所述第一高速缓存存储器以使所述第一高速缓冲线无效;以及
修改所述第二高速缓冲线的状态信息以指示所述第二高速缓冲线与另一高速缓冲线不一致。
4.如权利要求2所述的分布式高速缓存存储器,其中,响应于接收对所述第二位置的写入请求,所述第一高速缓存存储器被配置为:
将第三数据写入所述第一高速缓冲线;以及
将命令发送到所述第二高速缓存存储器以将所述第三数据写入所述第二高速缓冲线。
5.如权利要求2所述的分布式高速缓存存储器,其中,选择所述第一高速缓冲线用于逐出,并且作为响应,所述第一高速缓存存储器通过所述专用连接发送逐出命令并释放所述第一高速缓冲线。
6.如权利要求5所述的分布式高速缓存存储器,其中,响应于接收所述逐出命令,所述第二高速缓冲线的状态信息被从指示所述第二高速缓冲线与所述第一高速缓冲线一致修改为指示所述第二高速缓冲线与另一高速缓冲线不一致。
7.如权利要求2所述的分布式高速缓存存储器,其中,选择所述第二高速缓冲线用于逐出,并且作为响应,所述第二高速缓存存储器释放所述第二高速缓冲线,并且所述第一高速缓冲线的所述状态信息不变。
8.如权利要求2所述的分布式高速缓存存储器,其中,响应于确定所述与所述第二高速缓存中的高速缓冲线一致的所述第一高速缓存中的高速缓冲线的数量超过阈值,所述第一高速缓存存储器被配置为:
逐出所述第一高速缓冲线;以及
通过所述专用连接将所述逐出命令发送至所述第二高速缓存。
9.如权利要求1所述的分布式高速缓存存储器,其中,响应于从请求者接收对第三位置的请求,所述第一高速缓存存储器被配置为通过所述专用连接向所述第二高速缓存存储器发送读取命令以从与所述第三位置一致的第三高速缓冲线读取第三数据。
10.如权利要求9所述的分布式高速缓存存储器,其中,所述第一高速缓存存储器还被配置为:
确定所述第三位置在定义的存储器孔径内,对于该存储器孔径,禁用分配与其他高速缓存中的高速缓冲线一致的高速缓冲线;以及
将所述第三数据返回给所述请求者,而不在所述第一高速缓存中分配第四高速缓冲线来存储所述第三数据。
11.如权利要求9所述的分布式高速缓存存储器,其中,存储在所述第三高速缓冲线中的所述第三数据被压缩,并且所述第二高速缓存还被配置为解压所述第三数据并通过所述专用连接将所述解压的第三数据发送到所述第一高速缓存存储器。
12.如权利要求11所述的分布式高速缓存存储器,其中,所述第一高速缓存存储器还被配置为:
将所述解压的第三数据存储在所述第一高速缓存存储器中的第四高速缓冲线中;以及
将所述解压的第三数据返回给所述请求者。
13.如权利要求1所述的分布式高速缓存存储器,其中所述共享连接是交叉开关。
14.如权利要求1所述的分布式高速缓存存储器,其中,所述专用连接是点对点连接。
15.一种计算机实现的方法,包括:
将来自第一存储器切片的第一位置的第一数据存储到耦合到所述第一存储器切片的第一高速缓存存储器内的第一高速缓冲线,其中所述第一高速缓冲线与所述第一位置一致,并且所述第一高速缓存存储器通过专用连接直接耦合到第二高速缓存存储器,并通过共享连接间接耦合到所述第二高速缓存存储器;
将来自第二存储器切片的第二位置的第二数据存储到耦合到所述第二存储器切片的第二高速缓存存储器内的第二高速缓冲线,其中所述第二高速缓冲线与所述第二位置一致;以及
通过所述专用连接将所述第二数据写入所述第一高速缓冲线。
16.如权利要求15所述的计算机实现的方法,还包括:将所述第一高速缓冲线的状态信息从指示所述第一高速缓冲线与所述第一位置一致修改为指示所述第一高速缓冲线与所述第二高速缓冲线一致。
17.如权利要求16所述的计算机实现的方法,其中,响应于接收对所述第二位置的写入请求,所述第二高速缓存存储器:
将命令发送到所述第一高速缓存存储器以使所述第一高速缓冲线无效;以及
修改所述第二高速缓冲线的状态信息以指示所述第二高速缓冲线与另一高速缓冲线不一致。
18.如权利要求16所述的计算机实现的方法,其中,响应于对所述第二位置的写入请求,所述第一高速缓存存储器:
将第三数据写入所述第一高速缓冲线;以及
将命令发送到所述第二高速缓存存储器以将所述第三数据写入所述第二高速缓冲线。
19.如权利要求16所述的计算机实现的方法,其中,选择所述第一高速缓冲线用于逐出,并且作为响应,所述第一高速缓存存储器通过所述专用连接发送逐出命令并且释放所述第一高速缓冲线。
20.如权利要求19所述的计算机实现的方法,其中,响应于接收所述逐出命令,所述第二高速缓存存储器将所述第二高速缓冲线的状态信息从指示所述第二高速缓冲线与所述第一高速缓冲线一致修改为指示所述第二高速缓存与另一高速缓冲线不一致。
CN201910463512.4A 2018-09-18 2019-05-30 用于高带宽缩放的一致数据高速缓存 Active CN110908929B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/134,379 US10915445B2 (en) 2018-09-18 2018-09-18 Coherent caching of data for high bandwidth scaling
US16/134,379 2018-09-18

Publications (2)

Publication Number Publication Date
CN110908929A true CN110908929A (zh) 2020-03-24
CN110908929B CN110908929B (zh) 2023-06-09

Family

ID=69646711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910463512.4A Active CN110908929B (zh) 2018-09-18 2019-05-30 用于高带宽缩放的一致数据高速缓存

Country Status (3)

Country Link
US (1) US10915445B2 (zh)
CN (1) CN110908929B (zh)
DE (1) DE102019102825A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597138A (zh) * 2020-04-27 2020-08-28 科大讯飞股份有限公司 一种x型链路结构的多并发ram数据传输方法及结构

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797192B2 (en) 2021-04-21 2023-10-24 Micron Technology, Inc. Data transmission management
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020159632A1 (en) * 2001-02-23 2002-10-31 Chui Charles K. Graphic image re-encoding and distribution system and method
US20030084248A1 (en) * 2001-10-31 2003-05-01 Gaither Blaine D. Computer performance improvement by adjusting a count used for preemptive eviction of cache entries
CN1754139A (zh) * 2002-12-30 2006-03-29 小利兰斯坦福大学理事会 用于数字视频内容的交互式网络共享的方法及装置
CN101042679A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 维护存储器一致性的方法和系统
US20110022801A1 (en) * 2007-12-06 2011-01-27 David Flynn Apparatus, system, and method for redundant write caching
CN103404223A (zh) * 2012-03-02 2013-11-20 英派尔科技开发有限公司 针对高用户集中度的可缩放毫米波无线网络架构
EP2743711A1 (en) * 2012-12-13 2014-06-18 Tektronix, Inc. Automatic centre frequency and span setting in a test and measurement instrument
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑
US20150331794A1 (en) * 2014-05-14 2015-11-19 HGST Netherlands B.V. Systems and methods for cache coherence protocol
CN105706068A (zh) * 2013-04-30 2016-06-22 惠普发展公司,有限责任合伙企业 路由存储器流量和i/o流量的存储器网络

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374332B1 (en) 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US6922755B1 (en) 2000-02-18 2005-07-26 International Business Machines Corporation Directory tree multinode computer system
US8635410B1 (en) 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US7120755B2 (en) 2002-01-02 2006-10-10 Intel Corporation Transfer of cache lines on-chip between processing cores in a multi-core system
US7272688B1 (en) 2003-04-28 2007-09-18 Newisys,, Inc. Methods and apparatus for providing cache state information
US20050144397A1 (en) 2003-12-29 2005-06-30 Rudd Kevin W. Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic
US7702875B1 (en) * 2004-11-18 2010-04-20 Sun Microsystems, Inc. System and method for memory compression
US7418557B2 (en) 2004-11-30 2008-08-26 International Business Machines Corporation Managing multiprocessor operations
US20070150664A1 (en) 2005-12-28 2007-06-28 Chris Dombrowski System and method for default data forwarding coherent caching agent
US7581068B2 (en) 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US8099650B1 (en) 2008-08-29 2012-01-17 Nvidia Corporation L2 ECC implementation
US8095617B2 (en) 2009-06-30 2012-01-10 Oracle America Inc. Caching data in a cluster computing system which avoids false-sharing conflicts
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9170946B2 (en) 2012-12-21 2015-10-27 Intel Corporation Directory cache supporting non-atomic input/output operations
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
US20140281270A1 (en) 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
JP6089891B2 (ja) * 2013-03-29 2017-03-08 富士通株式会社 演算処理装置、情報処理装置及び情報処理装置の制御方法
US20150254182A1 (en) 2014-03-07 2015-09-10 Cavium, Inc. Multi-core network processor interconnect with multi-node connection
US9619396B2 (en) 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10042762B2 (en) * 2016-09-14 2018-08-07 Advanced Micro Devices, Inc. Light-weight cache coherence for data processors with limited data sharing

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020159632A1 (en) * 2001-02-23 2002-10-31 Chui Charles K. Graphic image re-encoding and distribution system and method
US20030084248A1 (en) * 2001-10-31 2003-05-01 Gaither Blaine D. Computer performance improvement by adjusting a count used for preemptive eviction of cache entries
CN1754139A (zh) * 2002-12-30 2006-03-29 小利兰斯坦福大学理事会 用于数字视频内容的交互式网络共享的方法及装置
CN101042679A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 维护存储器一致性的方法和系统
US20110022801A1 (en) * 2007-12-06 2011-01-27 David Flynn Apparatus, system, and method for redundant write caching
CN103404223A (zh) * 2012-03-02 2013-11-20 英派尔科技开发有限公司 针对高用户集中度的可缩放毫米波无线网络架构
CN104937539A (zh) * 2012-11-28 2015-09-23 英特尔公司 用于提供推入缓冲器复制和存储功能的指令和逻辑
EP2743711A1 (en) * 2012-12-13 2014-06-18 Tektronix, Inc. Automatic centre frequency and span setting in a test and measurement instrument
CN105706068A (zh) * 2013-04-30 2016-06-22 惠普发展公司,有限责任合伙企业 路由存储器流量和i/o流量的存储器网络
US20150331794A1 (en) * 2014-05-14 2015-11-19 HGST Netherlands B.V. Systems and methods for cache coherence protocol

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夏勃 等: ""一种动态自适应HTTP流媒体码率切换算法"" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597138A (zh) * 2020-04-27 2020-08-28 科大讯飞股份有限公司 一种x型链路结构的多并发ram数据传输方法及结构
CN111597138B (zh) * 2020-04-27 2024-02-13 科大讯飞股份有限公司 一种x型链路结构的多并发ram数据传输方法及结构

Also Published As

Publication number Publication date
CN110908929B (zh) 2023-06-09
US10915445B2 (en) 2021-02-09
DE102019102825A1 (de) 2020-03-19
US20200089611A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
US11106261B2 (en) Optimal operating point estimator for hardware operating under a shared power/thermal constraint
US10909033B1 (en) Techniques for efficiently partitioning memory
US10614613B2 (en) Reducing noise during rendering by performing parallel path space filtering utilizing hashing
US11043028B2 (en) Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene
US20200151571A1 (en) Transposed sparse matrix multiply by dense matrix for neural network training
US10810784B1 (en) Techniques for preloading textures in rendering graphics
US11379420B2 (en) Decompression techniques for processing compressed data suitable for artificial neural networks
US10916252B2 (en) Accelerated data transfer for latency reduction and real-time processing
CN112783554A (zh) 用于程序间数据交换的持久便签内存
CN110908929B (zh) 用于高带宽缩放的一致数据高速缓存
US10684824B2 (en) Stochastic rounding of numerical values
US11372548B2 (en) Techniques for accessing and utilizing compressed data and its state information
US11625279B2 (en) Read-write page replication for multiple compute units
US11620169B2 (en) Barrierless and fenceless shared memory synchronization with write flag toggling
US11836361B2 (en) Implementing compiler-based memory safety for a graphic processing unit
US20230061154A1 (en) Implementing hardware-based memory safety for a graphic processing unit
US20210232366A1 (en) Dynamic directional rounding
US20230089606A1 (en) Reducing crosstalk pessimism using gpu-accelerated gate simulation and machine learning
US20230385232A1 (en) Mapping logical and physical processors and logical and physical memory
US20230394647A1 (en) Determining contour edges for an image
US20230297499A1 (en) Locating a memory unit associated with a memory address utilizing a mapper
US20230080247A1 (en) Pruning a vision transformer
CN115240726A (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