CN110908929B - 用于高带宽缩放的一致数据高速缓存 - Google Patents
用于高带宽缩放的一致数据高速缓存 Download PDFInfo
- Publication number
- CN110908929B CN110908929B CN201910463512.4A CN201910463512A CN110908929B CN 110908929 B CN110908929 B CN 110908929B CN 201910463512 A CN201910463512 A CN 201910463512A CN 110908929 B CN110908929 B CN 110908929B
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- cache line
- data
- cache memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details 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可以经由一个或更多个高速NVLink 310互连连接到主机处理器或其他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按照命令指定将解码的命令发送到PPU 300的各种其他单元。例如,一些命令可以被发送到前端单元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中的至少一个来实现图形渲染管线的至少一部分。例如,DPC420可以被配置为在可编程流式多处理器(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更详细地描述SM440。
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跟踪从不同GPC 350接收到的分组并且确定由ROP单元450生成的结果通过Xbar 370被路由到哪个GPC 350。尽管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、SFU 552和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个张量核心(tensor core)。在一实施例中,核心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个SFU 552。在一实施例中,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之间接口。PPU 300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一实施例中,交换机510支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530之间提供一个或更多个高速通信链路,并且交换机510在互连302和每个PPU 300之间进行接口。PPU 300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一实施例(未示出)中,互连302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交换机510使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300之间提供一个或更多个高速通信链路。在另一实施例(未示出)中,NVLink 310在PPU300和CPU 530之间通过交换机510提供一个或更多个高速通信链路。在又一实施例(未示出)中,互连302直接地在每个PPU300之间提供一个或更多个通信链路。可以使用与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所述的计算机实现的方法,其中,响应于接收所述逐出命令,所述第二高速缓存存储器将所述第二高速缓冲线的状态信息从指示所述第二高速缓冲线与所述第一高速缓冲线一致修改为指示所述第二高速缓存与另一高速缓冲线不一致。
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 CN110908929A (zh) | 2020-03-24 |
CN110908929B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597138B (zh) * | 2020-04-27 | 2024-02-13 | 科大讯飞股份有限公司 | 一种x型链路结构的多并发ram数据传输方法及结构 |
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1754139A (zh) * | 2002-12-30 | 2006-03-29 | 小利兰斯坦福大学理事会 | 用于数字视频内容的交互式网络共享的方法及装置 |
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 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
Family Cites Families (27)
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 |
US7162080B2 (en) * | 2001-02-23 | 2007-01-09 | Zoran Corporation | Graphic image re-encoding and distribution system and method |
US6813691B2 (en) * | 2001-10-31 | 2004-11-02 | Hewlett-Packard Development Company, L.P. | Computer performance improvement by adjusting a count used for preemptive eviction of cache entries |
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 |
US7814279B2 (en) * | 2006-03-23 | 2010-10-12 | International Business Machines Corporation | Low-cost cache coherency for accelerators |
US7581068B2 (en) | 2006-06-29 | 2009-08-25 | Intel Corporation | Exclusive ownership snoop filter |
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
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 |
CN103404223B (zh) * | 2012-03-02 | 2017-01-11 | 英派尔科技开发有限公司 | 针对高用户集中度的可缩放毫米波无线网络架构 |
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 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
US9952975B2 (en) * | 2013-04-30 | 2018-04-24 | Hewlett Packard Enterprise Development Lp | Memory network to route memory traffic and I/O traffic |
US20150254182A1 (en) | 2014-03-07 | 2015-09-10 | Cavium, Inc. | Multi-core network processor interconnect with multi-node connection |
US9298624B2 (en) * | 2014-05-14 | 2016-03-29 | HGST Netherlands B.V. | Systems and methods for cache coherence protocol |
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 |
-
2018
- 2018-09-18 US US16/134,379 patent/US10915445B2/en active Active
-
2019
- 2019-02-05 DE DE102019102825.6A patent/DE102019102825A1/de active Pending
- 2019-05-30 CN CN201910463512.4A patent/CN110908929B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1754139A (zh) * | 2002-12-30 | 2006-03-29 | 小利兰斯坦福大学理事会 | 用于数字视频内容的交互式网络共享的方法及装置 |
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 |
Also Published As
Publication number | Publication date |
---|---|
CN110908929A (zh) | 2020-03-24 |
US10915445B2 (en) | 2021-02-09 |
DE102019102825A1 (de) | 2020-03-19 |
US20200089611A1 (en) | 2020-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143174B (zh) | 在共享功率/热约束下操作的硬件的最佳操作点估计器 | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
US11043028B2 (en) | Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene | |
CN112445713A (zh) | 用于对内存有效分区的技术 | |
US11463272B2 (en) | Scalable in-network computation for massively-parallel shared-memory processors | |
US20200151571A1 (en) | Transposed sparse matrix multiply by dense matrix for neural network training | |
US10810784B1 (en) | Techniques for preloading textures in rendering graphics | |
CN111667542B (zh) | 适用于人工神经网络的用于处理压缩数据的解压缩技术 | |
CN110908929B (zh) | 用于高带宽缩放的一致数据高速缓存 | |
CN112783554A (zh) | 用于程序间数据交换的持久便签内存 | |
US10684824B2 (en) | Stochastic rounding of numerical values | |
US20230081641A1 (en) | Single-image inverse rendering | |
US11372548B2 (en) | Techniques for accessing and utilizing compressed data and its state information | |
CN115039076A (zh) | 无障碍和无围栏共享存储器同步 | |
US11625279B2 (en) | Read-write page replication for multiple compute units | |
US20210232366A1 (en) | Dynamic directional rounding | |
CN116127685A (zh) | 使用机器学习执行模拟 | |
US20230297499A1 (en) | Locating a memory unit associated with a memory address utilizing a mapper | |
US20230385232A1 (en) | Mapping logical and physical processors and logical and physical memory | |
US20230089606A1 (en) | Reducing crosstalk pessimism using gpu-accelerated gate simulation and machine learning | |
US20230394647A1 (en) | Determining contour edges for an image | |
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 |