CN115202922A - 用于压缩数据保护的打包的纠错码(ecc) - Google Patents
用于压缩数据保护的打包的纠错码(ecc) Download PDFInfo
- Publication number
- CN115202922A CN115202922A CN202210359563.4A CN202210359563A CN115202922A CN 115202922 A CN115202922 A CN 115202922A CN 202210359563 A CN202210359563 A CN 202210359563A CN 115202922 A CN115202922 A CN 115202922A
- Authority
- CN
- China
- Prior art keywords
- compressed data
- data
- processor
- check bits
- computer
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6312—Error control coding in combination with data compression
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
公开了用于压缩数据保护的打包的纠错码(ECC)。打包的纠错码(ECC)技术适时地将ECC校验位嵌入压缩数据。当被压缩时,数据以更少的位被编码并且因此与未压缩的数据相比,当被存储或传输时被分段。ECC校验位可以在“源”点上与压缩数据一起被打包。校验位与压缩数据一起被传输,并且在源和“目的地”之间的任何“中间”点处,校验位可用于检测和纠正压缩数据中的错误。与常规系统相比,打包的ECC使得能够对处理器内部和外部的充分压缩的数据进行端到端覆盖。虽然存储电路通常由结构特定的ECC保护,但保护也有利于数据,因为它在处理和/或存储单元之间传输。
Description
背景技术
提供了结构特定的纠错码(ECC),用于检测和纠正存储器设备内的错误,但ECC在外部不可用。现代存储器设备的广泛接口排除了在存储器设备和处理器之间使用专用的ECC芯片。因此,处理器使用地址映射提供ECC支持,以分割存储器的专用部分来存储ECC代码-称为“嵌入式”或“内联”ECC。常规的内联ECC的缺点在于,许多数据访问还需要单独的ECC访问,与只访问数据相比,这增加了存储器带宽的使用和功耗。具有解决这些问题和/或与现有技术相关联的其他问题的需要。
发明内容
本公开的实施例涉及用于压缩数据保护的打包的纠错码。系统和方法公开了在“源”点处与压缩数据一起适时地打包ECC校验位。校验位与压缩数据一起传输,并且在源和“目的地”之间的任何“中间”点处,校验位可用于检测和纠正压缩数据中的错误。与如上所描述的常规系统相比,打包的ECC使得能够在处理器内部和外部对充分压缩的数据进行端到端覆盖。虽然存储电路通常由结构特定的ECC保护,但保护也有利于数据,因为它在处理和/或存储单元之间传输。特别地,期望为交叉开关结构提供保护。
公开了一种用于压缩数据保护的打包的纠错码的方法、计算机可读介质和系统。在一个实施例中,在处理器内处理压缩数据以计算纠错码校验位,并确定存储压缩数据和校验位的组合所需的固定大小的存储单元的数量。在一个实施例中,固定大小的存储单元的数量是可以容纳所有压缩数据和校验位的最小数量。在一个实施例中,压缩数据和校验位被组合成用于在处理器内传输或传输到处理器外部的附加设备的数量。在一个实施例中,将该组合传输到处理器内的存储资源,并且基于校验位,确定压缩数据是否被损坏。将组合存储在存储资源中,并且,当压缩数据被损坏时,在组合被存储之前或之后使用校验位纠正压缩数据。
附图说明
下面参照附图详细描述使用打包的ECC保护压缩数据的本系统和方法,其中:
图1A示出了适用于实现本公开的一些实施例的示例ECC和压缩数据打包逻辑的框图。
图1B示出了适用于实现本公开的一些实施例的打包的ECC校验位和压缩数据的格式。
图1C示出了适用于实现本公开的一些实施例的打包的ECC校验位和压缩数据的交错格式。
图1D示出了根据本公开的一些实施例的当支持三种打包的压缩状态时的打包成功率图。
图1E示出了适用于实现本公开的一些实施例的用于打包ECC校验位以用于压缩数据保护的方法的流程图。
图2A示出了适用于实现本公开的一些实施例的各种打包格式的失败率图。
图2B示出了适用于实现本公开的一些实施例的示例ECC和压缩数据纠正逻辑的框图。
图2C示出了用于实现本公开的一些实施例的示例系统的框图。
图2D示出了适用于实现本公开的一些实施例的用于打包ECC校验位以用于压缩数据保护的方法的另一流程图。
图3示出了适用于实现本公开的一些实施例的示例并行处理单元。
图4A示出了适用于实现本公开的一些实施例的图3的并行处理单元内的示例通用处理集群。
图4B示出了适用于实现本公开的一些实施例的图3的并行处理单元的示例存储器分区单元。
图4C示出了适用于实现本公开的一些实施例的图4A的流式多处理器的示例。
图5A为适用于实现本公开的一些实施例的、使用图4的PPU实现的处理系统的概念图。
图5B示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5C示出了在至少一个实施例中可以用于训练和利用机器学习的示例性系统的组件。
图6示出了适用于实现本公开的一些实施例的示例性流式系统。
具体实施方式
公开了有关用于压缩数据保护的打包的ECC的系统和方法。可以为压缩数据计算ECC校验位,并使用与未压缩数据相比相等或更少的位数与压缩数据组合成打包格式。打包的ECC压缩数据可以在处理器内传输或传输到处理器外部。嵌入的校验位可用于在处理器内的任何点或由接收打包的ECC压缩数据的外部设备检测和纠正压缩数据中的错误。因此,除了在处理器内提供保护外,打包的ECC还可以用于保护在处理器外部传输的压缩数据。相反地,处理器可以接收打包的ECC数据,并检测和纠正被压缩的接收到的数据中的任何错误。
以压缩格式表示数据可能会降低功率,特别地当访问存储压缩数据的存储器时。当性能受限于带宽时,压缩数据还能够通过使多个数据被传输用于每个事务而提高性能。将ECC校验位与压缩数据相组合提供了保护,只需对处理器、接口和外部存储器设备中的现有高速缓存和存储进行最小修改或不进行修改。例如,打包的ECC校验位不需要专用的存储和路由电路,因为校验位被嵌入压缩数据占用位,否则其由于压缩而未使用。ECC提供的保护提高了恢复力,并且可能出于安全认证和/或满足可靠性要求而被需要。
传统上,主存储器和大型存储阵列中的数据受到结构特定的ECC的保护。通过为ECC校验位提供固定数量的存储器容量,为主存储器提供了使用ECC的内联(inline)检错或纠错。固定的量无法用于存储其他数据,这有效地减少了主存储器容量。此外,读取和写入ECC校验位消耗额外的存储器带宽和功率。还存在映射ECC校验位地址空间以及生成额外的事务(例如,存储器访问)来访问ECC校验位的管理开销。此外,在诸如图形处理单元(GPU)之类的处理器中,ECC校验位通常不会从一个结构传输到下一个结构,从而在存储器层次结构中的一个结构的ECC解码器和存储器层次结构中的下一个结构的ECC编码器之间留下覆盖孔洞。
与常规的解决方案相比,当校验位由于压缩不足而不能与压缩数据组合时,打包的ECC压缩数据只需要专用的ECC存储。因此,当校验位成功地与压缩数据组合时,与内联ECC实现方式相比,存储器访问的存储器带宽和功耗降低。特别地,压缩数据和校验位的组合可以存储在存储器中的由单个地址访问并使用单个访问请求进行读取或写入的位置。此外,ECC覆盖可以通过存储器层次结构和跨多个结构进行扩展,减少或消除覆盖孔洞,并提供端到端保护的可能性。
图1A示出了适用于实现本公开的一些实施例的示例ECC和压缩数据打包逻辑100的框图。应当理解,本文描述的这种和其他布置仅仅作为示例而被阐述。除了示出的那些之外或代替示出的那些,还可以使用其他的布置和元件(例如机器、接口、功能、顺序、功能分组等等),并且一些元件可以完全省略。此外,本文描述的元件中的许多元件是可以实现为分立或分布式组件或结合其他组件以及以任意适当的组合和位置实现的功能实体。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件实现。例如,各种功能可以通过处理器执行存储在存储器中的指令而实现。此外,本领域普通技术人员会理解,执行ECC和压缩数据打包逻辑100的操作的任何系统都处于本公开实施例的范围和精神之内。
如图1A所示,数据压缩单元110压缩数据,并且ECC计算单元115计算压缩数据的ECC校验位。由数据压缩单元110执行的压缩操作与ECC校验位计算和打包操作进行解耦。数据压缩单元110可以在单独的处理或执行单元中,在数据压缩单元110和ECC计算单元115之间有一个或更多个存储和/或传输电路。然而,为了最好地保护压缩数据,应该在数据压缩单元110的输出处计算校验位,以确保在计算校验位之前压缩数据没有被损坏。
打包单元120将校验位和压缩数据打包成最小可能数量的固定大小的存储单元,例如,原子(atom)。在一个实施例中,每个原子是32字节,并且未压缩的数据是四个原子。根据数据的可压缩性,压缩数据可容纳(fit in)在一个、两个、三个或四个原子中。在一个实施例中,为数据的每个原子计算的校验位是2字节,因此为压缩数据的四个原子计算8字节的校验位。在一个实施例中,确定存储压缩数据和校验位的组合所需的原子的数量。在一个实施例中,原子的数量是整个组合可容纳在其中的最小数量的原子。在没有校验位的情况下存储压缩数据所需的原子的第二数量可能小于存储压缩数据和校验位的组合所需的原子的数量。打包单元120输出组合和压缩状态。压缩状态可以存储在存储器映射单元中,存储在保留的元数据存储器区域(可能具有单独的高速缓存层次结构)中,和/或以组合传输。在一个实施例中,压缩状态指示校验位是否与压缩数据一起成功地打包在组合中以及该组合所占据的原子的数量。在一个实施例中,压缩状态还指示用于压缩数据以及解压缩该压缩数据所需的压缩格式。
在一个实施例中,该压缩状态用支持每个压缩大小的打包的和未打包的变体的状态增强。例如,压缩状态的单个位可以指示校验位是否与压缩数据一起进行打包,以及压缩格式是否以压缩状态的剩余位进行编码。因此,无论校验位是否与压缩数据一起进行打包,压缩数据都以相同的位进行编码。在一个实施例中,当压缩状态指示打包不成功时,可以将单独存储的校验位作为块进行预取,以减少校验位读取访问的数量,从而从打包失败局部性获益。
当打包成功时,压缩状态是指示容纳该组合的原子的数量的打包的压缩状态,并且可能的打包的压缩状态可取决于模式设置。在一个实施例中,原子的最大数量是四个,并且支持四个可能的打包的压缩状态,一、二、三和四个原子。最大数量和打包的压缩状态由输入到打包单元120的打包模式来控制。打包模式可以根据设置或上下文进行固定、编程或配置。在另一个实施例中,原子的最大数量是四个,并且只支持两个可能的打包的压缩状态,两个和四个原子。在一个实施例中,当存储该组合所需的原子的数量大于原子的最大数量时,打包不成功。当打包失败时,校验位和压缩数据的组合不被打包,并且压缩状态为“未打包的”。
当压缩状态不是打包的时,校验位和压缩数据分别存储和传输。在另一个实施例中,当压缩状态不是打包的时,从组合中去除校验位并丢弃,使得校验位不能用于检错和纠错。在一个实施例中,原子的最大数量足够大以能够存储与校验位一起打包的未压缩数据。当最大数量足够大以能够存储与校验位一起打包的未压缩数据时,最大数量也足够大以能够存储压缩数据和校验位的所有组合,而不论数据的压缩率或可压缩性如何。因此,未被打包的压缩状态隐含地指示压缩数据占据原子的最大数量。
现在,阐述关于可以利用其按照用户的愿望实现前述框架的各种可选的架构和特征的更多说明性信息。应当强烈指出的是,以下信息出于说明的目的而被阐述,并且不应当以任何方式被解释为限制性的。可选地,可以在排除或不排除所描述的其他特征的情况下结合以下任何特征。
图1B示出了用于编码适合于实现本公开的一些实施例的打包的ECC校验位125和压缩数据130的组合的格式。该格式包括N个原子的整数,其中1≤N≤最大值。当压缩数据130占用小于原子的整数时,压缩数据130被“分段”,并且校验位125可以填充未占用的位。当未占用的位小于校验位125中的位数时,可以包括额外的原子来将校验位125与压缩数据130一起进行打包。在一个实施例中,校验位125位于该格式内的相同位置,而不论用于编码压缩数据130的原子数如何。例如,校验位125可能总是在最高有效位中。在一个实施例中,未使用的位被设置为常数值或任意值。在一个实施例中,未使用的位与被输入到ECC计算单元115的压缩数据相比保持不变。在一个实施例中,未使用的位被设置为将传输该组合的总线的切换(例如,信号切换)最小化的值。
图1C示出了适合于实现本公开的一些实施例的用于编码打包的ECC校验位126和压缩数据121的组合的交错格式。该格式包括最多四个原子,其中压缩数据121与校验位128交错。针对压缩数据121-A计算校验位126-A,并且在一个实施例中,通过压缩数据的一个原子产生压缩数据121-A。如果压缩数据121-A和校验位126-A的组合超过一个原子,则打包失败。同样,压缩数据121-B、121-C和121-D与它们各自的校验位126-B、126-C和126-D交错。
交错格式的优点在于,当访问少于四个原子时,可以使用相应的校验位128验证被读取的每个原子的压缩数据121,并且如果需要,它们可以被独立地纠正。类似地,如果四个原子被串行传输,则每个原子的压缩数据121可以被验证,并且如果需要,可以在接收时进行纠正。
在一个实施例中,压缩状态包括两个或更多个未打包的压缩状态和相应的打包的压缩状态。例如,打包的压缩状态分别为4:1和4:2,这表明占据四个原子的数据被压缩,并且当与校验位组合时,分别占据1个和2个原子。在本示例中,当压缩数据和校验位的组合需要多于两个原子时,打包失败。在另一个示例中,打包的压缩状态包括4:3,这表明占据四个原子的数据被压缩,并且当与校验位组合时,占据三个原子。同样,当打包的压缩状态包括4:4时,占据四个原子的数据被压缩,当与校验位组合时,占据四个原子。
在一个实施例中,原子的数量是仅基于压缩数据确定的压缩大小,并且当压缩数据和校验位的组合不能容纳在该数量中时,打包失败。在一个实施例中,原子数是压缩数据可容纳在其中的原子的最小数量。在一个实施例中,当打包失败时,校验位从组合中去除,并且与压缩数据分开传输和/或存储。当打包失败或ECC打包未启用时,4:4、4:2、4:3和4:4的未打包的压缩状态指示占据四个原子的数据分别被压缩为1个、2个、3个和4个原子。
图1D示出了根据本公开的一些实施例的当支持三种打包的压缩状态时的打包成功率图。横轴表示压缩数据中的字节数。纵轴表示处理工作负载中的各种压缩数据的出现计数。压缩数据130占用32字节原子中的多于30字节。假设每个32字节的数据的校验位需要2字节,那么压缩数据130的打包失败。对于占用小于32字节的压缩数据(沿横轴向左),在4:1打包的压缩状态下打包成功。当压缩大小可以增加额外的原子时,压缩数据130的原子的数量从一增加到二,并且在4:2的压缩状态下打包成功。
压缩数据135占用两个原子的多于60字节,并且打包失败。同样,当压缩大小可以增加时,压缩数据135的原子的数量从二增加到三,并且在4:3的压缩状态下打包成功。压缩数据140占用三个原子的多于90字节,因此压缩数据140打包失败。当压缩大小不能增大,使得压缩数据130、135和140处于未打包的压缩状态时,打包成功率为83%。
图1E示出了适用于实现本公开的一些实施例的用于打包ECC校验位以用于压缩数据保护的方法150的流程图。本文描述的方法150的每个框包括可以使用硬件、固件和/或软件的任意组合执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令而实现。该方法也可以实现为存储在计算机存储介质上的计算机可用指令。该方法可以由——举几个例子来说——独立的应用程序、服务或托管服务(独立地或与另一个托管服务相结合)或另一个产品的插件提供。此外,方法150通过示例的方式关于图1A的逻辑进行描述。然而,此外或可替换地,该方法还可以由任何一个系统,或系统(包括但不限于本文描述的那些系统)的任意组合执行。此外,本领域普通技术人员将理解,执行方法150的任何系统都处于本公开实施例的范围和精神之内。
在步骤155,在处理器内处理压缩数据以计算ECC校验位。在一个实施例中,ECC质量被固定,以便不跟踪或存储额外的状态信息。换言之,在一个实施例中,可以仅使用压缩状态、压缩数据和校验位来检测压缩数据中的错误。在一个实施例中,从位于处理器外部的附加设备接收压缩数据。在一个实施例中,在处理器内生成压缩数据。
在步骤160,确定存储压缩数据和校验位的组合所需的固定大小的存储单元(例如,原子)的数量。在一个实施例中,被确定的固定大小的存储单元的数量是整个组合所容纳在其中的固定大小的存储单元的最小数量。在一个实施例中,没有校验位的情况下存储压缩数据所需的固定大小的存储单元的第二数量小于存储组合所需的数量。在一个实施例中,针对每个固定大小的存储单元中的压缩数据的一部分分别计算ECC校验位,并与压缩数据的该部分一起组合在固定大小的存储单元中。
在步骤165,压缩数据和校验位被组合到该数量以产生组合。在步骤170,组合在处理器内传输或传输到处理器外部的附加设备。在一个实施例中,在与附加设备的接口处丢弃校验位,并且只有压缩数据从处理器传输到附加设备。在一个实施例中,该组合被存储在存储器设备中。在一个实施例中,该组合通过互连从处理器传输到附加设备。在一个实施例中,该组合通过处理器内的交叉开关互连传输。
在一个实施例中,定义固定大小的单元的最大数量,并且当数量大于最大数量时,从组合中去除校验位。当校验位被去除时,校验位可以在处理器内传输或与压缩数据分开地传输到附加设备。在一个实施例中,将压缩数据存储在存储器设备的第一部分中,并且校验位被存储在存储器设备的与第一部分分离的第二部分中。
图2A示出了适于实现本公开的一些实施例的各种打包格式的失败率图。每组四个条对应于一个程序执行期间的打包失败率。每组中最左边的条是针对打包的压缩状态(4:1和4:2),并由此产生的打包失败率平均小于50%。当打包失败时,校验位与压缩数据分开存储(例如,内联ECC)。因此,与常规的内联ECC相比,对单独存储的校验位的额外访问将省去超过一半的时间。添加4:3的压缩状态会导致接近20%的平均打包失败率,与常规的内联ECC相比,省去了4/5的ECC访问。
每组最右边的两个条包括专门的4:4打包的压缩状态。专门的刚刚足够的4:4打包的压缩放大了边缘可压缩数据,特别是浮点数据的打包成功率。边缘可压缩数据压缩到足以将校验位打包到最大数量的原子中,但不足以进行带宽压缩。
在一个实施例中,专用压缩器以小的32字节压缩块大小操作,以保持对包括四个32字节块的4:4打包的压缩状态的边缘可压缩数据的随机访问。在较小的块大小下操作,避免了在边缘可压缩工作负载的32字节粒度下随机访问期间出现过抓取形式的潜在性能下降。在一个实施例中,专用压缩器被包括在数据压缩单元110中或在ECC计算单元115中。如图2A所示,4:4打包的压缩状态将平均打包失败率降低到10%或更小。当所有四种打包的压缩状态都可用时,如每组最右侧的条所示,达到最低的打包失败率。
图2B示出了适用于实现本公开的一些实施例的示例ECC和压缩数据纠正逻辑200的框图。应当理解,本文描述的这种和其他布置仅仅作为示例而被阐述。除了示出的那些之外或代替示出的那些,可以使用其他的布置和元件(例如机器、接口、功能、顺序、功能分组等等),并且一些元件可以完全省略。此外,本文描述的元件中的许多元件是可以实现为分立或分布式组件或结合其他组件以及以任意适当的组合和位置实现的功能实体。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件实现。例如,各种功能可以通过处理器执行存储在存储器中的指令而实现。此外,本领域普通技术人员会理解,执行ECC和压缩数据纠正逻辑200的操作的任何系统都处于本公开实施例的范围和精神之内。
如图2B所示,ECC计算单元215计算打包的数据的压缩数据部分的ECC校验位,并且纠正单元205将计算出的校验位与打包的数据的校验位部分进行比较,以检测压缩数据是正确的还是损坏的。ECC计算单元215和纠正单元205各自根据需要使用打包的数据的压缩状态来分离压缩数据和校验位。如果纠正单元205确定压缩数据被损坏,则纠正单元205对压缩数据进行纠正。纠正单元205将压缩数据输出到数据解压缩单元210和打包单元220。纠正单元205还将打包的数据的校验位部分输出到打包单元220。
打包单元220执行与打包单元120相同的操作,输出组合和压缩状态。在一个实施例中,与打包单元120使用的打包模式相比,该打包模式可以改变。当打包模式不变且纠正单元205没有检测到损坏时,ECC计算单元215接收到的打包的数据可以被选择,以由ECC和压缩数据纠正逻辑200输出。在一个实施例中,数据解压缩单元210位于目的地点处,并且打包的数据不在处理器内传输或传输到外部的附加设备,并且省略打包单元220。
由数据解压缩单元210执行的压缩操作与ECC校验位计算、纠正和打包操作进行解耦。数据解压缩单元210可以在单独的处理单元中,在数据压缩单元210和纠正单元205之间有一个或更多个存储和/或传输电路。然而,为了最好地保护压缩数据,应该在数据解压缩单元210的输入处对压缩数据进行检测并根据需要进行纠正,以确保压缩数据在纠正单元和数据解压缩单元210之间没有损坏。
图2C示出了用于实现本公开的一些实施例的示例系统225的框图。系统225包括处理器230和位于处理器230外部的存储器235,并且可以包括多个存储器设备。处理器230包括与位于处理器230外部的至少一个附加设备227的接口254和与NVLink 258互连的接口256。
除了诸如接口254和256之类的单元之外,处理器230还包括一个或更多个包括存储的单元,诸如L2高速缓存232和L1高速缓存252、交叉开关255互连和/或处理核心或执行核心250。每个单元可以包括ECC打包单元120和/或可能够压缩数据和计算ECC校验位。每个单元可以包括ECC打包单元220和/或可以能够基于校验位检测和纠正压缩数据中的错误。每个单元还可以配置为解压缩所述压缩数据。一般来说,对于特定事务,任何一个单元可以是生成打包的数据的源点、简单地传输有或没有进行检错和纠错的打包的数据的中间点,或者检测和纠正压缩数据(与校验位一起包括在打包的数据中)中的错误的目的地点。目的地点也可以解压缩所述压缩数据。类似地,源点也可以压缩与校验位一起打包的数据。打包的数据可以存储在存储器235中,其中有或没有检测和纠正错误。对于某些事务,源或目的地在处理器230的外部,并经由NVLink 258到达。源点和目的地点为压缩数据定义了保护区。检测和纠正错误的中间点可以用于提高可靠性。
打包的ECC使得能够在保护区内实现适时的端到端保护。例如,L2高速缓存232可以存储打包的数据,并且可以可选地检测和纠正错误。交叉开关255可以在L2高速缓存232、L1高速缓存252和接口256中的一个或更多个之间传输打包的数据。L2高速缓存252可以存储打包的数据,并可选地检测和纠正错误,同时还解压缩所述压缩数据,以输出到一个或更多个执行核心250。L2高速缓存252还可以压缩和打包从一个或更多个执行核心250接收到的数据。在L2高速缓存232和L1高速缓存252中提供检错和纠错,填补了处理器230内的潜在可靠性覆盖孔洞,并增加了跨交叉开关255的保护区的范围。
在存储器235中存储打包的数据并检测和纠正L2高速缓存252中的错误,为在存储器235和处理器230之间传输的数据提供了保护。在接口254处的检测和纠正错误为在处理器230和附加设备227之间传输的数据提供了保护。类似地,在接口256处检测和纠正错误为在处理器230和耦合到NVlink 258的设备之间传输的数据提供了保护。
图2D示出了适用于实现本公开的一些实施例的打包ECC校验位以用于压缩数据保护的方法260的另一个流程图。本文描述的方法260的每个框包括可以使用硬件、固件和/或软件的任意组合执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令而实现。该方法也可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由(举几个例子来说)独立的应用程序、服务或托管服务(独立地或与另一个托管服务相结合)或另一个产品的插件提供。此外,方法260通过示例的方式关于图1A、图2B和图2C的逻辑进行描述。然而,此外或可替换地,该方法可以由任何一种系统,或系统(包括但不限于本文描述的那些系统)的任意组合执行。此外,本领域普通技术人员将会理解,执行方法260的任何系统都在本公开实施例的范围和精神之内。
步骤155和160按照前面描述的结合方法150执行。在步骤265,压缩数据和校验位的组合被传输到处理器内的存储资源。在一个实施例中,处理器内的存储资源包括寄存器文件和/或存储器,例如处理器230内的L2高速缓存232和L1高速缓存252。在一个实施例中,该组合通过处理器内的交叉开关互连传输到存储资源。在一个实施例中,存储资源是处理器内的源点、中间点和/或目的地点。
在步骤270,组合被传输到的中间点或目的地点处的逻辑确定压缩数据是否被损坏。在一个实施例中,该逻辑包括ECC计算单元215和纠正单元205。如果在步骤270压缩数据被损坏,那么在步骤275,在进行到步骤280之前使用校验位纠正压缩数据。在步骤280中,该组合被存储在存储资源中。在另一个实施例中,在步骤280中只存储压缩数据,并且丢弃校验位。在一个实施例中,在步骤270之前执行步骤280,并且存储在存储资源中的任何损坏的压缩数据在被纠正之后被覆盖。在另一个实施例中,在步骤270之前执行步骤280,并且当从存储资源读取压缩数据时,纠正存储在存储资源中的任何损坏的压缩数据。在一个实施例中,处理器内的执行核心从存储资源接收该组合,执行核心基于校验位确定压缩数据被损坏,并且在处理压缩数据之前,执行核心使用校验位纠正压缩数据。
在一个实施例中,该组合从该存储资源中被读取,并从该处理器传输到位于该处理器外部的附加设备。在一个实施例中,附加设备确定压缩数据被损坏,并且在处理和/或存储该组合之前使用校验位纠正压缩数据。在一个实施例中,在与附加设备的接口处丢弃校验位,并且只有压缩数据从处理器传输到附加设备。在一个实施例中,该组合从处理器传输并存储在处理器外部的存储器设备中。在一个实施例中,在与存储器设备的接口处丢弃校验位,并且只有压缩数据从处理器传输到存储器设备。
与内联ECC实现方式相比,将校验位与压缩数据一起打包避免或显著减少了外部存储器中的专用校验位存储以及对校验位的专用写入和读取请求。通过在不同处理单元、存储资源和设备之间传输压缩数据和校验位的组合,可以在处理器内部和独立设备之间扩展保护。因此,即使是在处理器内部和设备之间的互连结构中,也填充了可靠性孔洞。对于不能被充分压缩的数据,可以使用内联ECC保护,同时仍然可以受益于打包其他可以被充分压缩的数据的效率。总之,打包的ECC降低了存储器带宽消耗和功率,同时提高了可靠性和性能。
并行处理架构
图3示出了根据一个实施例的并行处理单元(PPU)300。PPU 300可以包括一个或更多个ECC和压缩数据打包逻辑100或ECC和压缩数据纠正逻辑200。PPU 300可以包括一个或更多个数据压缩单元110、ECC压缩单元115和215、打包单元120和220、纠正单元205、或数据解压缩单元210。PPU 300可以分别被配置为实现图1E和图2D所示的方法150或260。
在一个实施例中,诸如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的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5A更详细地描述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耦合到工作分配单元325,其被配置为分派任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的若干调度的任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干插槽(例如,32插槽),所述插槽包括分配给由特定GPC350处理的任务。活动任务池可以包括若干插槽,所述插槽用于由GPC350活跃地处理的任务。当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 300或CPU。在一个实施例中,PPU 300包括数量为U的存储器分区单元380,其等于耦合到PPU 300的存储器304的独立且不同的存储器设备的数量。下面将结合图4B更详细地描述存储器分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 300上执行。在一个实施例中,多个计算应用程序由PPU 300同时执行,并且PPU 300为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图4C更详细地描述线程和协作线程。
图4A示出了根据一个实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC350包括用于处理任务的多个硬件单元。在一个实施例中,每个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(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图4C更详细地描述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个存储器设备,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器304支持单错校正双错检测(SECDED)ECC以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,PPU300处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
在一个实施例中,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和XBar370。
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。尽管在图4B中ROP单元450被包括在存储器分区单元380内,但是在其他实施例中,ROP单元450可以在存储器分区单元380之外。例如,ROP单元450可以驻留在GPC 350或另一个单元中。
图4C示出了根据一个实施例的图4A的流式多处理器440。如图4C所示,SM 440包括指令高速缓存405、一个或更多个(K)调度器单元445、寄存器文件455、一个或更多个处理核心442、一个或更多个特殊功能单元(SFU)452、一个或更多个加载/存储单元(LSU)454、互连网络458、共享存储器/L1高速缓存465。
如上所述,工作分配单元325调度任务以在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定DPC 420,并且如果该任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元445接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元445调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元445可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心442、SFU 452和LSU454)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元448被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元445包括两个分派单元448,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元445可以包括单个分派单元448或附加分派单元448。
每个SM 440包括寄存器文件455,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件455在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件455的专用部分。在另一个实施例中,寄存器文件455在由SM 440执行的不同线程束之间被划分。寄存器文件455为连接到功能单元的数据路径的操作数提供临时存储器。
每个SM 440包括L个处理核心442。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心442。每个核心442可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心442包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心442中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入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 452。在一个实施例中,SFU 452可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 452可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/L1高速缓存465中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个SM 440包括两个纹理单元。
每个SM 440还包括N个LSU 454,其实现共享存储器/L1高速缓存465和寄存器文件455之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件455以及共享存储器/L1高速缓存465的互连网络458。在一个实施例中,互连网络458是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件455中的任何寄存器,和共享存储器/L1高速缓存465中的存储器位置。
共享存储器/L1高速缓存465是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存465包括128KB的存储容量并且在从SM 440到存储器分区单元380的路径中。共享存储器/L1高速缓存465可以用于高速缓存读取和写入。共享存储器/L1高速缓存465、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存465内的集成使共享存储器/L1高速缓存465起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存465以在线程之间通信,以及使用LSU 454通过共享存储器/L1高速缓存465和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他器件(诸如附加PPU 300、存储器304、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5A是根据一个实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统565可以分别被配置为实现图1E和图2D中所示的方法150或260。处理系统500包括CPU 530、交换机510和多个PPU 300以及相应的存储器304。
每个PPU 300可以包括,和/或被配置为执行一个或更多个处理核心和/或其组件的功能,例如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、特定于应用的集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快速(PCIe)元件,等等。
NVLink 310提供每个PPU 300之间的高速通信链路。尽管图5A中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU 300和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在PPU 300和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接口(如图5A所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5A所示的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直接访问CPU530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5B示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以分别被配置为实现图1E和图2D中所示的方法150或260。
如图所示,提供了一种系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以直接或间接地耦合以下设备中的一个或更多个:主存储器540,网络接口535,CPU 530,显示设备545,输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何适当的协议实现,并且可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一种或多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连高速(PCIe)总线、超级传输和/或另一种类型的总线或链路。在一些实施例中,存在组件之间的直接连接。作为一个示例,CPU 530可以直接连接到主存储器540。此外,CPU 530可以直接连接到并行处理系统525。在存在组件之间的直接或点对点连接的情况下,通信总线575可以包括实现该连接的PCIe链路。在这些示例中,PCI总线不必包括在系统565中。
尽管利用线条将图5B的不同方框示为经由通信总线575连接,但是这并不预期是限制性的并且只是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是I/O组件,例如输入设备560(例如如果显示器为触摸屏的话)。作为另一个示例,CPU 530和/或并行处理系统525可以包括存储器(例如,主存储器540可以表示除了并行处理系统525、CPU 530之外的存储设备,和/或其他组件)。换言之,图5B的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都预期处于图5B的计算设备的范围内。
系统565也包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,该主存储器可以采取各种各样的计算机可读介质的形式。计算机可读介质可以是可以被系统565访问的任何可用的介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括以任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息。例如,主存储器540可以存储诸如操作系统之类的计算机可读指令(例如,其表示程序和/或程序元素)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可以用于存储希望的信息以及可以被系统565访问的任何其他介质。当在本文使用时,计算机存储介质不包括信号本身。
计算机存储介质可以在诸如载波或其他传输机制之类的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
当被执行时,计算机程序使得系统565能够执行各种功能。CPU 530可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU530中的每一个可以包括能够同时处理众多软件线程的一个或更多个核心(例如一个、两个、四个、八个、二十八个、七十二个等等)。取决于实现的系统565的类型,CPU 530可以包括任何类型的处理器,并且可以包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器,以及用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或诸如数学协处理器之类的补充协处理器之外,系统565可以包括一个或更多个CPU 530。
除了CPU 530之外或可替换地,并行处理模块525可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。并行处理模块525可以由系统565用于渲染图形(例如3D图形)或执行通用计算。例如,并行处理模块525可以用于GPU上的通用计算(GPGPU)。在实施例中,CPU 530和/或并行处理模块525可以分立地或联合地执行所述方法、过程和/或其部分的任意组合。
系统565也包括输入设备560、并行处理系统525和显示设备545。显示设备545可以包括显示器(例如监视器、触摸屏、电视屏、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。显示设备545可以接收来自其他组件(例如并行处理系统525、CPU 530等等)的数据,并且输出该数据(例如图像、视频、声音等等)。
网络接口535可以使得系统565能够逻辑耦合到其他设备,所述其他设备包括输入设备560、显示设备545和/或其他组件,其中一些可以嵌入到(例如集成到)系统565中。说明性输入设备560包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等等。输入设备560可以提供自然用户界面(NUI),其处理用户生成的空中手势、语音或其他生理输入。在一些实例中,可以将输入传输至适当的网络元件以供进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头眼跟踪以及与系统565的显示器关联的触摸识别(如下文中更详细地描述的)。系统565可以包括用于手势检测和识别的深度照相机,例如立体照相机系统、红外照相机系统、RGB照相机系统、触摸屏技术及其组合。此外,系统565可以包括允许实现运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由系统565用于渲染沉浸式增强现实或虚拟现实。
此外,系统565可以出于通信的目的通过网络接口535耦合到网络(例如电信网络、局域网(LAN)、无线网络、诸如因特网之类的广域网(WAN)、对等网络、电缆网络等等)。系统565可以包括在分布式网络和/或云计算环境内。
网络接口535可以包括一个或更多个接收器、发射器和/或收发器,其使得系统565能够经由包括有线和/或无线通信的电子通信网络与其他计算设备通信。网络接口535可以包括允许实现通过若干不同网络中的任意网络通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或InfiniBand的通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
系统565也可以包括辅助存储装置(未示出)。辅助存储装置610包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、紧密盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移除存储驱动器。可移除存储驱动器以众所周知的方式从可移除存储单元读和/或写到可移除存储单元。系统565也可以包括硬接线电源、电池电源或其组合(未示出)。该电源可以向系统565供电以使得系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可替换地,各种不同的模块也可以按照用户的愿望单独地放置或位于半导体平台的各种组合中。尽管上面描述了各个不同的实施例,但是应当理解,它们仅仅通过示例的方式且非限制性地给出。因此,优选实施例的宽度和范围应当不受限于上面描述的任何示例性实施例,而是应当仅仅根据下面的权利要求及其等效物限定。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、附接到网络的存储装置(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如每个设备)可以在图5A的处理系统500和/或图5B的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括处理系统500和/或示例性系统565的相似的组件、特征和/或功能。
网络环境的组件可以经由网络彼此通信,所述网络可以是有线的、无线的或兼而有之。网络可以包括多个网络或网络的网络。举例而言,网络可以包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络——例如因特网,和/或公共交换电话网络(PSTN),和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点之类的组件(以及其他组件)可以提供无线连接性。
兼容的网络环境可以包括一个或更多个对等网络环境——在该情况下,服务器可以不包括在网络环境中,以及一个或更多个客户端-服务器网络环境——在该情况下,一个或更多个服务器可以包括在网络环境中。在对等网络环境中,本文关于服务器描述的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等等。基于云的网络环境可以包括框架层、作业调度器、资源管理器以及在一个或更多个服务器上实现的分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或应用程序可以分别包括基于web的服务软件或应用程序。在实施例中,客户端设备中的一个或更多个可以使用基于web的服务软件或应用程序(例如通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于例如可以将分布式文件系统用于大规模数据处理(例如“大数据”)的免费开源软件web应用程序框架类型。
基于云的网络环境可以提供实现本文描述的计算和/或数据存储功能(或其一个或更多个部分)的云计算和/或云存储。这些不同功能中的任何功能可以从中心或核心服务器(例如一个或更多个数据中心的中心或核心服务器,所述数据中心可以跨州、地区、国家、全球等等分布)分布在多个位置。如果到用户(例如客户端设备)的连接相对靠近边缘服务器,那么核心服务器可以将所述功能的至少一部分指派给边缘服务器。基于云的网络环境可以是私有的(例如限于单个组织),可以是公共的(例如对于许多组织可用),和/或其组合(例如混合云环境)。
客户端设备可以包括图5A的示例处理系统500和/或图5B的示例性系统565的组件、特征和功能中的至少一些。举例而言且非限制性地,客户端设备可以实施为个人计算机(PC)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实头戴式视图器、全球定位系统(GPS)或设备、视频播放器、视频照相机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、器具、消费电子设备、工作站、边缘设备、这些划定的设备的任意组合或任何其他适当的设备。
机器学习
诸如PPU 300之类的处理器上开发的深度神经网络(DNN)已经用于从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像配字幕到视频聊天应用中的智能实时语言翻译的多种多样的用例。深度学习是一种对人脑的神经学习过程进行建模的技术,其不断地学习、不断地变得更聪明并且随着时间的推移更快速地输送更精确的结果。小孩最初由成年人教导对各种不同的形状进行正确的标识和分类,最终能够在没有任何指导的情况下标识形状。类似地,深度学习或神经学习系统需要在对象识别和分类中进行训练,以便它在标识基本的对象、被遮挡的对象等等方面变得更聪明和更高效,同时也将上下文赋予对象。
在最简单的水平下,人脑中的神经元观看接收的各种输入,重要性水平被赋予这些输入中的每一个,并且输出传递至其他神经元以做出反应。人工神经元或感知机是神经网络的最基本模型。在一个示例中,感知机可以接收一个或更多个输入,所述输入表示感知机正被训练对其识别和分类的对象的各种特征,并且这些特征中的每一个基于在定义对象的形状中该特征的重要性而被赋予某个权重。
深度神经网络(DNN)模型包括多层许多连接的节点(例如感知机、玻尔兹曼机、径向基函数、卷积层等等),其可以利用巨量的输入数据进行训练以便以高精度快速地解决复杂的问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为不同的片段并且寻找诸如线条和角之类的基本图案。第二层组装这些线条以便寻找诸如轮子、风挡和镜子之类的更高水平的图案。下一层标识车辆的类型,并且最终几层生成用于输入图像的标记,标识特定汽车品牌的型号。
一旦训练了DNN,DNN就可以被部署且用于在称为推理的过程中对对象或图案进行标识和分类。推理(DNN通过其从给定输入中提取有用信息的过程)的示例包括标识存入ATM机的支票上的手写数字,标识照片中朋友的图像,将电影推荐输送至超过五千万用户,在无人驾驶汽车中对不同类型的汽车、行人和道路危险进行标识和分类,或实时地翻译人类语言。
在训练期间,数据在前向传播阶段中流经DNN,直到产生指示与输入相应的标记的预测。如果神经网络没有正确地标记输入,那么对正确标记与预测的标记之间的误差进行分析,并且在反向传播阶段期间针对每个特征调节所述权重,直到DNN正确地标记所述输入以及训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括PPU300支持的浮点乘法和加法。推理的计算密集程度低于训练,是个延迟敏感过程,其中将训练的神经网络应用到它之前没有见过的新输入以便对图像分类,检测情绪,标识推荐,识别和翻译语言,并且通常推理出新信息。
神经网络严重依赖于矩阵数学运算,并且为了效率和速率二者,复杂的多层网络需要巨量的浮点性能和带宽。利用针对矩阵数学运算优化的且提供数十至数百TFLOPS的性能的数千个处理核心,PPU 300是一种能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。
此外,应用本文公开的技术中的一种或更多种生成的图像可以用于训练、测试或认证用于识别真实世界中的对象和环境的DNN。这样的图像可以包括车行道、工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理对象或真实世界环境的场景。这样的图像可以用于训练、测试或认证在机器或机器人中被采用于操控、处理或修改真实世界中的物理对象的DNN。此外,这样的图像可以用于训练、测试或认证在自主车辆中被采用于在真实世界中导航和移动车辆的DNN。此外,应用本文公开的技术中的一种或多种生成的图像可以用于将信息传达至这样的机器、机器人和车辆的用户。
图5C示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。示例系统555可以包括ECC和压缩数据打包逻辑100或ECC和压缩数据纠正逻辑200中的一个或更多个。示例系统555可以包括数据压缩单元110、ECC计算单元115和215、打包单元120和220、纠正单元205、或数据解压缩单元210中的一个或更多个。示例系统555可以分别被配置为实现图1E和图2D所示的方法150或260。
如将要讨论的,可以由可以在单个实体或多个实体的控制下的单个计算系统或计算设备和资源的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求各个方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练。在至少一个实施例中,训练数据(或要由经训练的神经网络分析的数据)可以由供应商、用户或第三方内容供应商524提供。在至少一个实施例中,客户端设备502可以是例如要代表用户被导航的车辆或对象,该用户可以提交请求和/或接收有助于设备导航的指令。
在至少一个实施例中,能够通过至少一个网络504提交请求以便由供应商环境506接收。在至少一个实施例中,客户端设备可以是使得用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,诸如但不限于台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏控制台(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒。一个或更多个网络504可以包括用于传输请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、以太网、蜂窝网络、局域网(LAN)、广域网(WAN)、个人区域网络(PAN)、在对等体之间进行直接无线连接的自组织网络等等。
在至少一个实施例中,可以在接口层508接收请求,在该示例中,该接口层可以将数据转发到训练和推理管理器532。训练和推理管理器532可以是包括用于管理与数据或内容相应的服务和请求的硬件和软件的系统或服务。在至少一个实施例中,该训练和推理管理器532可以接收训练神经网络的请求,并且可以将用于请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或神经网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是存储在训练数据存储库514中的、从客户端设备502接收的或从第三方供应商524获得的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如递归神经网络(RNN)或卷积神经网络(CNN)。一旦训练并成功评估了神经网络,就可以将经训练的神经网络存储到例如模型存储库516,其可以存储用于用户、应用程序或服务等的不同模型或网络。在至少一个实施例中,针对单个应用程序或实体可能存在多个模型,其可以基于多个不同因素而被利用。
在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一个这样的设备)接收对至少部分地被经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如输入数据,其要使用神经网络进行处理,以获得一个或更多个推理或其他输出值、分类或预测,或对于至少一个实施例,输入数据可以由接口层508接收并且被引导到推理模块518,尽管不同的系统或服务也可以使用。在至少一个实施例中,如果尚未本地存储到推理模块518,则推理模块518可以从模型存储库516中获得适当的训练的网络,例如本文所讨论的训练的深度神经网络(DNN)。推理模块518可以将数据作为输入提供给训练的网络,其然后可以生成一个或更多个推理作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理传输至客户端设备502以向用户显示或与用户进行其他通信。在至少一个实施例中,用户的上下文数据也可以存储到用户上下文数据存储库522,该数据库可以包括关于用户的数据,该数据可以用作生成推理或确定获得实例后返回给用户的数据的网络输入。在至少一个实施例中,可以包括输入或推理数据中的至少一些的相关数据也可以被存储到本地数据库534以用于处理将来的请求。在至少一个实施例中,用户可以使用帐户信息或其他信息来访问供应商环境的资源或功能。在至少一个实施例中,如果允许和可用,还可以收集用户数据并将其用于进一步训练模型,以便为将来的请求提供更精确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用526的请求,并通过相同的界面显示结果。客户端设备可以包括资源,诸如用于生成请求和处理结果或响应的处理器528和存储器562,以及用于存储用于机器学习应用526的数据的至少一个数据存储元件552。
在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(CPU)。但是,如上所述,此类环境中的资源可以利用GPU来处理用于至少某些类型的请求的数据。诸如PPU 300之类的GPU具有数千个核心,被设计为处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用GPU进行离线构建允许更快地训练更大、更复杂的模型,但离线生成预测意味着无法使用请求-时间输入特征,或必须针对所有特征排列生成预测并将其存储在查找表中以进行服务实时请求。如果深度学习框架支持CPU模式,并且模型足够小且简单以至可以合理的延迟在CPU上执行前馈,则CPU实例上的服务可以托管模型。在这种情况下,可以在GPU上离线进行训练,并在CPU上实时进行推理。如果CPU方法不是可行的,则服务可以在GPU实例上运行。但是,由于GPU具有与CPU不同的性能和成本特性,因此运行将运行时算法卸载到GPU的服务可能要求将其设计成与基于CPU的服务不同。
在至少一个实施例中,可以从客户端设备502提供视频数据以便在供应商环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理以便在客户端设备502上进行增强。在至少一个实施例中,可以从第三方内容供应商524流式传输并且由第三方内容供应商524、供应商环境506或客户端设备502增强视频数据。在至少一个实施例中,可以从客户端设备502提供视频数据以便用作供应商环境506中的训练数据。
在至少一个实施例中,有监督和/或无监督训练可以由客户端设备502和/或供应商环境506执行。在至少一个实施例中,训练数据514(例如分类的或标记的数据)集作为输入而提供以便用作训练数据。在至少一个实施例中,训练数据可以包括针对其要对神经网络进行训练的至少一种类型的对象的实例,以及标识该对象类型的信息。在至少一个实施例中,训练数据可以包括图像集,其每个图像包括一种类型的对象的表示,其中每个图像也包括标记、元数据、分类或标识对应图像中表示的对象类型的其他信息,或与之关联。各种不同的其他类型的数据也可以用作训练数据,其可以包括文本数据、音频数据、视频数据等等。在至少一个实施例中,训练数据514作为训练输入提供给训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备,以用于训练神经网络(或其他模型或算法等等)。在至少一个实施例中,训练模块512接收指示要用于训练的模型类型的指令或请求,在至少一个实施例中,模型可以是对于这样的目的有用的任何适当的统计模型、网络或算法,其可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等等。在至少一个实施例中,训练模块512可以从适当的储存库中选择初始模型或其他未训练的模型,并且利用训练数据514训练模型,从而生成可以用于对相似类型的数据分类或生成其他这样的推理的训练的模型(例如训练的深度神经网络)。在其中未使用训练数据的至少一个实施例中,仍然可以选择初始模型以便对每个训练模块512的输入数据进行训练。
在至少一个实施例中,可以以若干不同的方式训练模型,其可以部分地取决于选择的模型类型。在至少一个实施例中,可以向机器学习算法提供训练数据集,其中模型是通过训练过程创建的模型工件。在至少一个实施例中,训练数据的每个实例包含可以称为目标或目标属性的正确答案(例如分类)。在至少一个实施例中,学习算法找到将输入数据属性映射到目标——要预测的答案——的训练数据中的模式,并且机器学习模型是捕获这些模式的输出。在至少一个实施例中,机器学习模型于是可以用于获得对未指定目标的新数据的预测。
在至少一个实施例中,训练和推理管理器532可以从包括二元分类、多类分类、生成式和回归模型的机器学习模型集中进行选择。在至少一个实施例中,要使用的模型类型可以至少部分地取决于要预测的目标类型。
图形处理管线
在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以被定义为诸如点、线、三角形、四边形、三角形带等等之类的图元集。典型地,图元包括指定用于该图元的顶点的数量(例如在模型-空间坐标系统中)以及与该图元的每个顶点关联的属性的数据。PPU 300可以被配置为处理图形图元以生成帧缓冲区(例如用于显示器的像素中的每一个的像素数据)。
应用程序将用于场景的模型数据(例如属性和顶点集合)写入诸如系统存储器或存储器304之类的存储器。模型数据定义了可能在显示器上可见的对象中的每一个。然后,应用程序对驱动程序内核进行API调用,其请求渲染和显示该模型数据。驱动程序内核读取该模型数据,并且将命令写入所述一个或更多个流以便执行处理该模型数据的操作。这些命令可以引用要在PPU 300内的SM 440上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或更多个。例如,所述SM 440中的一个或更多个可以被配置为执行顶点着色器程序,其处理模型数据定义的若干顶点。在一个实施例中,这些不同的SM 440可以被配置为并发地执行不同的着色器程序。例如,SM 440的第一子集可以被配置为执行顶点着色器程序,而SM 440的第二子集可以被配置为执行像素着色器程序。SM 440的第一子集处理顶点数据以产生处理的顶点数据,并且将处理的顶点数据写入L2高速缓存360和/或存储器304。在处理的顶点数据被光栅化(例如从三维数据变换为屏幕空间中的二维数据)以产生片段数据之后,SM 440的第二子集执行像素着色器以产生处理的片段数据,其然后与其他处理的片段数据混合并且写入存储器304中的帧缓冲区。顶点着色器程序和像素着色器程序可以并发地执行,以流水线方式处理来自相同场景的不同数据,直到该场景的所有模型数据都被渲染到帧缓冲区。然后,将帧缓冲区的内容传输至显示控制器以便在显示设备上显示。
应用本文公开的技术中的一种或更多种生成的图像可以在监视器或其他显示设备上显示。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接耦合到系统或处理器。这样的网络的示例包括因特网、移动电信网络、WIFI网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,系统或处理器生成的图像可以通过网络流式传输至显示设备。这样的流式传输允许例如渲染图像的视频游戏或其他应用程序在服务器、数据中心上或基于云的计算环境中执行,并且渲染的图像被传输和显示于与服务器或数据中心物理上分开的一个或更多个用户设备(例如计算机、视频游戏控制台、智能电话、其他移动设备等等)上。因此,本文公开的技术可以应用于增强被流式传输的图像,并且增强流式传输图像的服务,例如NVIDIAGeForce Now(GFN)、Google Stadia等等。
示例流式系统
图6为根据本公开一些实施例的流式系统605的示例系统示意图。流式系统605可以包括ECC和压缩数据打包逻辑100或ECC和压缩数据纠正逻辑200中的一个或更多个。流式系统605可以包括数据压缩单元110、ECC计算单元115和215、打包单元120和220、纠正单元205、或数据解压缩单元210中的一个或更多个。流式系统605可以分别被配置为实现图1E和图2D所示的方法150或260。
图6包括服务器603(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)、客户端604(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)和网络606(其可以与本文描述的网络相似)。在本公开的一些实施例中,系统605可以被实现。
在一个实施例中,流式系统605为游戏流式系统,并且服务器604为游戏服务器。在系统605中,对于游戏会话,客户端设备604可以响应于输入设备626的输入而仅仅接收输入数据,将输入数据发送至服务器603,接收来自服务器603的编码的显示数据,并且在显示器624上显示该显示数据。这样,计算强度更高的计算和处理被卸载到服务器603(例如游戏会话的图形输出的渲染,尤其是光线或路径追踪,由服务器603的GPU 615执行)。换言之,游戏会话从服务器603流式传输至客户端设备604,从而降低客户端设备604对于图形处理和渲染的要求。
例如,关于游戏会话的实例化,客户端设备604可以基于接收到来自服务器603的显示数据而正在显示器624上显示游戏会话的帧。客户端设备604可以接收输入设备626之一的输入,并且作为响应生成输入数据。客户端设备604可以经由通信接口621且通过网络606(例如因特网)将输入数据发送至服务器603,并且服务器603可以经由通信接口618接收该输入数据。CPU 608可以接收输入数据,处理输入数据,并且将数据发送至GPU 615,该数据使得GPU 615生成游戏会话的渲染。例如,输入数据可以表示游戏中用户角色的运动,发射武器、重新装弹、传球、使车辆转向等等。渲染组件612可以渲染游戏会话(例如表示输入数据的结果),并且渲染捕获组件614可以捕获游戏会话的渲染作为显示数据(例如作为捕获游戏会话的渲染的帧的图像数据)。游戏会话的渲染可以包括使用服务器603的一个或更多个并行处理单元(例如GPU,其可以进一步采用一个或更多个专用硬件加速器或处理核心的使用以执行光线或路径追踪技术)计算的光线或路径追踪的光照和/或阴影效果。然后,编码器616可以对显示数据进行编码以生成编码的显示数据,并且该编码的显示数据可以经由通信接口618通过网络606发送至客户端设备604。客户端设备604可以经由通信接口621接收该编码的显示数据,并且解码器622可以对该编码的显示数据进行解码以生成显示数据。然后,客户端设备604可以经由显示器624显示该显示数据。
应当指出,本文描述的技术可以包含在存储于计算机可读介质中的可执行指令中,所述指令供基于处理器的指令执行机器、系统、装置或设备使用或结合其使用。本领域技术人员将领会,对于一些实施例而言,可以包括各种不同类型的计算机可读介质以用于存储数据。当在本文使用时,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何适当的介质中的一种或更多种,从而指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令并且执行这些指令以实现所描述的实施例。适当的存储格式包括电子、磁性、光学和电磁格式中的一种或多种。常规的示例性计算机可读介质的非详尽列表包括:便携式计算机磁盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM);闪存设备;以及光学存储设备,包括便携式紧密盘(CD)、便携式数字视频盘(DVD)等等。
应当理解,附图中所示的组件的布置用于说明性目的,并且其他布置是可能的。例如,本文所描述的元件中的一个或更多个可以全部或部分实现为电子硬件组件。其他元件可以以软件、硬件或软件和硬件的组合实现。而且,这些其他元件中的一些或全部可以进行组合,一些可以完全省略,并且可以添加附加的组件,同时仍然实现本文描述的功能。因此,本文描述的主题可以在许多不同的变型中实施,并且所有这样的变型预期处于权利要求书的范围之内。
为了便于理解本文描述的主题,许多方面是按照动作序列来描述的。本领域技术人员会认识到,各种不同的动作可以通过专用电路或电路系统、通过一个或更多个处理器执行的程序指令或通过二者的组合执行。本文对于任何动作序列的描述并不预期意味着被描述用于执行该序列的特定顺序必须被遵循。本文描述的所有方法都可以以任何适当的顺序执行,除非本文另有指明或以其他方式与上下文明显矛盾。
在描述所述主题的上下文中(尤其是在下面的权利要求书的上下文中)术语“一”、“一个”、“该/这个”以及类似指称的使用应当被解释为覆盖单数和复数二者,除非本文另有指明或与上下文明显矛盾。后接具有一个或更多个项目的列表的术语“至少一个”(例如A和B中的至少一个)的使用应当被解释为表示选自列出的项目的一个项目(A或B),或列出的项目中的两个或更多个的任意组合(A和B),除非本文另有指明或与上下文明显矛盾。此外,前面的描述仅仅用于说明的目的,并不用于限制的目的,因为寻求保护的范围由此后与其等效物一起阐述的权利要求书限定。本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅仅预期更好地说明所述主题,并不构成对主题的范围的限制,除非另有声明。权利要求书和书面说明书二者中指示带来结果的条件的“基于”以及其他类似短语的使用并不预期排除带来该结果的任何其他条件。说明书中的语言不应当被解释为指示任何未要求权利保护的元素对于要求保护的本发明的实施是必不可少的。
Claims (20)
1.一种计算机实现的方法,包括:
处理处理器内的压缩数据以计算纠错码校验位;
确定存储所述压缩数据和校验位的组合所需的固定大小的存储单元的数量;
将所述压缩数据和所述校验位组合到所述数量的固定大小的存储单元中以生成组合;以及
将所述组合在所述处理器内传输或传输到所述处理器外部的附加设备。
2.如权利要求1所述的计算机实现的方法,进一步包括:
确定所述数量超过所述固定大小的存储单元的最大数量;
从所述组合中去除所述校验位;以及
将所述校验位在所述处理器内单独传送或单独传送到所述附加设备。
3.如权利要求1所述的计算机实现的方法,进一步包括:在与所述附加设备的接口处丢弃所述校验位,并且只将所述压缩数据从所述处理器传输到所述附加设备。
4.如权利要求1所述的计算机实现的方法,进一步包括:将所述组合存储在存储器设备中,所述存储器设备位于由使用单个访问请求读取或写入的地址访问的位置。
5.如权利要求1所述的计算机实现的方法,进一步包括:将所述压缩数据存储在存储器设备的第一部分中,并且将所述校验位存储在所述存储器设备的与所述第一部分分开的第二部分中。
6.如权利要求1所述的计算机实现的方法,其中所述组合通过互连从所述处理器传输到所述附加设备。
7.如权利要求1所述的计算机实现的方法,其中所述组合通过交叉开关互连在所述处理器内传输。
8.如权利要求1所述的计算机实现的方法,其中需要第二数量的所述固定大小的存储单元来存储无所述校验位的所述压缩数据,并且所述第二数量小于存储所述组合所需的所述固定大小的存储单元的数量。
9.如权利要求1所述的计算机实现的方法,其中针对每个固定大小的存储单元中的所述压缩数据的一部分分别计算所述纠错码校验位,并且所述纠错码校验位与所述压缩数据的所述一部分一起组合在所述固定大小的存储单元中。
10.如权利要求1所述的计算机实现的方法,其中所述组合被传输到所述处理器内的存储资源,并且所述计算机实现的方法进一步包括:
基于所述校验位确定所述压缩数据是否损坏;以及
将所述组合存储在所述存储资源中,其中,响应于确定所述压缩数据被损坏,在存储所述组合之前使用所述校验位纠正所述压缩数据。
11.如权利要求10所述的计算机实现的方法,其中所述组合通过所述处理器内的交叉开关互连被传输到所述存储资源。
12.如权利要求10所述的计算机实现的方法,进一步包括:
由所述处理器内的执行核心接收来自所述存储资源的所述组合;
由所述执行核心基于所述校验位确定所述压缩数据被损坏;以及
在由所述执行核心处理所述压缩数据之前,使用所述校验位纠正所述压缩数据。
13.如权利要求1所述的计算机实现的方法,进一步包括:
由所述附加设备确定所述压缩数据被损坏;以及
在所述附加设备内处理所述组合之前,使用所述校验位纠正所述压缩数据。
14.如权利要求1所述的计算机实现的方法,其中在服务器上或在数据中心中执行处理步骤、确定步骤和组合步骤中的至少一个以生成图像,并且所述图像被流式传输到用户设备。
15.如权利要求1所述的计算机实现的方法,其中在云计算环境中执行处理步骤、确定步骤和组合步骤中的至少一个。
16.如权利要求1所述的计算机实现的方法,其中执行处理步骤、确定步骤和组合步骤中的至少一个,以用于训练、测试或证明在机器、机器人或自主车辆中使用的神经网络。
17.如权利要求1所述的计算机实现的方法,其中在包括图形处理单元的一部分的虚拟机上执行处理步骤、确定步骤和组合步骤中的至少一个。
18.一种系统,包括:
处理器,其包括接口;以及
附加设备,其在所述处理器外部并连接到所述接口,其中所述处理器被配置为通过以下步骤保护压缩数据:
处理所述压缩数据以计算纠错码校验位;
确定存储所述压缩数据和校验位的组合所需的固定大小的存储单元的数量;以及
将所述压缩数据和所述校验位组合到所述数量的固定大小的存储单元中,以在所述处理器内传送或传送到所述处理器外部的所述附加设备。
19.如权利要求18所述的系统,进一步包括通过所述处理器内的交叉开关互连传输所述组合。
20.一种非暂态计算机可读介质,其存储计算机指令,所述计算机指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:
处理压缩数据以计算纠错码校验位;
确定存储所述压缩数据和校验位的组合所需的固定大小的存储单元的数量;
将所述压缩数据和所述校验位组合到所述数量的固定大小的存储单元中,以在所述一个或更多个处理器的第一处理器内传送或传送到所述第一处理器外部的附加设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/224,434 | 2021-04-07 | ||
US17/224,434 US11522565B2 (en) | 2021-04-07 | 2021-04-07 | Packed error correction code (ECC) for compressed data protection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202922A true CN115202922A (zh) | 2022-10-18 |
Family
ID=83361975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210359563.4A Pending CN115202922A (zh) | 2021-04-07 | 2022-04-06 | 用于压缩数据保护的打包的纠错码(ecc) |
Country Status (3)
Country | Link |
---|---|
US (1) | US11522565B2 (zh) |
CN (1) | CN115202922A (zh) |
DE (1) | DE102022107232A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11960438B2 (en) * | 2020-09-08 | 2024-04-16 | Rambus Inc. | Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture |
CN116343890B (zh) * | 2023-05-31 | 2023-07-25 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510518B2 (en) * | 2010-06-22 | 2013-08-13 | Advanced Micro Devices, Inc. | Bandwidth adaptive memory compression |
US8495464B2 (en) | 2010-06-28 | 2013-07-23 | Intel Corporation | Reliability support in memory systems without error correcting code support |
-
2021
- 2021-04-07 US US17/224,434 patent/US11522565B2/en active Active
-
2022
- 2022-03-28 DE DE102022107232.0A patent/DE102022107232A1/de active Pending
- 2022-04-06 CN CN202210359563.4A patent/CN115202922A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220329265A1 (en) | 2022-10-13 |
US11522565B2 (en) | 2022-12-06 |
DE102022107232A1 (de) | 2022-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111191784A (zh) | 转置的稀疏矩阵乘以稠密矩阵用于神经网络训练 | |
US20230052645A1 (en) | Multiresolution hash encoding for neural networks | |
US11657571B2 (en) | Joint shape and appearance optimization through topology sampling | |
CN114155331A (zh) | 从二维图像恢复三维模型 | |
CN115202922A (zh) | 用于压缩数据保护的打包的纠错码(ecc) | |
US20220391781A1 (en) | Architecture-agnostic federated learning system | |
US20230062503A1 (en) | Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity | |
US11977766B2 (en) | Hierarchical network for stacked memory system | |
US20230289509A1 (en) | Parallel mask rule checking on evolving mask shapes in optical proximity correction flows | |
CN115797543A (zh) | 单个图像逆向渲染 | |
US11475549B1 (en) | High dynamic range image generation from tone mapped standard dynamic range images | |
US11282258B1 (en) | Adaptive sampling at a target sampling rate | |
CN115039076A (zh) | 无障碍和无围栏共享存储器同步 | |
US11830145B2 (en) | Generation of differentiable, manifold meshes of arbitrary genus | |
US11925860B2 (en) | Projective hash maps | |
CN115427933A (zh) | 用于虚拟机的存储器带宽限制 | |
CN111221498A (zh) | 动态方向舍入 | |
US11595152B1 (en) | Forward error correction encoding using binary clustering | |
US20240127067A1 (en) | Sharpness-aware minimization for robustness in sparse neural networks | |
US11783532B1 (en) | View synthesis using attribute correspondences and geometric relationship constraints | |
US11689750B2 (en) | Workload-based dynamic throttling of video processing functions using machine learning | |
US20240127041A1 (en) | Convolutional structured state space model | |
US20230316631A1 (en) | Noise-free differentiable ray casting | |
US20240112308A1 (en) | Joint neural denoising of surfaces and volumes | |
US20230360278A1 (en) | Table dictionaries for compressing neural graphics primitives |
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 |