CN115240726A - 封装上和封装外组合存储器系统 - Google Patents

封装上和封装外组合存储器系统 Download PDF

Info

Publication number
CN115240726A
CN115240726A CN202210393072.1A CN202210393072A CN115240726A CN 115240726 A CN115240726 A CN 115240726A CN 202210393072 A CN202210393072 A CN 202210393072A CN 115240726 A CN115240726 A CN 115240726A
Authority
CN
China
Prior art keywords
memory
package
data
processor
base layer
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
Application number
CN202210393072.1A
Other languages
English (en)
Inventor
N·查特吉
J·M·奥康纳
D·李
G·乌特雷亚
W·A·甘地
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 CN115240726A publication Critical patent/CN115240726A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1057Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F12/0882Page mode
    • 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
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L25/00Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
    • H01L25/18Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof the devices being of types provided for in two or more different subgroups of the same main group of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及使用了自定义基础层的封装上和封装外组合存储器系统,在该基础层中制造有对于封装外存储器的一个或更多个专用接口。封装上处理器和封装上存储器还直接耦合到自定义基础层。自定义基础层包括在处理器和存储器(封装上和封装外两者)之间的存储器管理逻辑,以引导请求。与单独的封装外存储器或封装上存储器相比,这些存储器被公开为具有更大带宽和容量的组合存储器空间。存储器管理逻辑服务请求在保持服务质量(QoS)的同时满足每个分配的带宽要求。分配可以包括封装上和/或封装外存储器的任意组合。存储器管理逻辑还管理封装上存储器和封装外存储器之间的数据迁移。

Description

封装上和封装外组合存储器系统
背景技术
最近,高带宽存储器访问是通过穿过插入器将处理器耦合到存储器管芯和缓冲区的堆栈来实现的。在插入器中制造的导线在处理器和与存储器管芯堆叠在一起的缓冲器之间传输信号。与传统的印刷迹线或引线接合连接相比,内插器提供了增加的密度和速度,使得可以高速并行访问存储器的更多位。然而,即使当堆叠的存储器使用内插器被耦合到处理器时,人工智能、机器学习以及其他计算密集型应用程序仍可能受到存储器带宽的限制,并且还需要比存储器管芯的堆栈所能提供的更多的存储器容量。存在解决与现有技术关联的这些问题和/或其他问题的需要。
发明内容
本公开的实施例涉及封装上和封装外组合存储器系统。自定义基础层(包括对于封装外存储器的一个或更多个专用接口)被直接耦合到封装上处理器和封装上存储器。单个设备封装包围处理器、定制基础层、封装基板和至少一个存储器堆栈。自定义基础层包括处理器和存储器(封装外和封装上)之间的存储器管理逻辑以引导请求。与单独的封装外存储器或封装上存储器相比,这些存储器被公开为具有更大带宽和容量的组合存储器空间。存储器管理逻辑服务存储器访问请求提供在保持服务质量(QoS)的同时满足每个处理工作负载的带宽要求。存储器可以被组织成不同的池,其包括封装上和/或封装外存储器的任意组合,以满足不同的带宽要求。存储器管理逻辑还管理不同池之间的数据迁移。
与诸如上述的那些传统系统相比,存储器管理逻辑将组合的存储器空间暴露给处理器,其提供了统一的接口,用于以更大的带宽和和高速来访问更多的存储器容量。存储器管理逻辑还可以从处理器卸载地址转换和映射操作。封装上和封装外组合存储器系统为人工智能、机器学习和其他计算密集型应用程序提供了高存储器带宽,并且还提供了相比由堆叠的存储器管芯单独所能提供的更大的存储器容量。
公开了针对封装上和封装外组合存储器系统的方法和系统。在一个实施例中,从耦合到封装内的基础层的处理器接收存储器访问请求,并且通过制造在基础层(耦合在处理器和存储器系统之间)内的存储器管理逻辑来处理存储器访问请求。存储器管理逻辑可以将存储器访问请求的第一部分发送到被包围在封装内并直接耦合到基础层的至少一个存储器堆栈,并将存储器访问请求的第二部分发送到位于封装外部并通过第一连接耦合到封装的至少一个存储器设备。第一部分和第二部分中的存储器访问请求可以交错。
在一个实施例中,处理器耦合到封装内的基础层,该封装包围处理器和基础层,并且该基础层包括存储器管理逻辑并且耦合在处理器和存储器系统之间。存储器管理逻辑处理从处理器接收到的存储器访问请求。存储器系统包括被包围在封装内并直接耦合到基础层的至少一个存储器堆栈和位于封装外部并被耦合到封装的至少一个存储器设备。
附图说明
下面参照附图来详细描述本发明针对封装上和封装外组合存储器系统的系统和方法,其中:
图1A示出了示例处理系统的框图,该处理系统包括耦合到适用于实现本公开的一些实施例的封装上和封装外组合的存储器系统的处理器。
图1B示出了根据一个实施例的、用于处理封装上和封装外组合存储器系统的存储器访问请求的方法的流程图。
图2A示出了适用于实现本公开的一些实施例的示例逻辑基础层的框图。
图2B示出了根据一个实施例的、包括封装上和封装外组合存储器系统的计算系统。
图3A示出了适用于实现本公开的一些实施例的近端和远端存储器映射的概念图。
图3B示出了适用于实现本公开的一些实施例的数据迁移的方法的流程图。
图4示出了适合用于实现本公开的一些实施例的示例并行处理单元。
图5A为适合用于实现本公开的一些实施例的、使用图4的PPU实现的处理系统的概念图。
图5B图示了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5C图示了在至少一个实施例中可以用于训练和利用机器学习的示例性系统的组件。
图6图示了适合用于实现本公开的一些实施例的示例性流式系统。
具体实施方式
涉及封装上和封装外组合存储器系统的方法和系统被公开,该系统使得容量优化和带宽优化的动态随机存取存储器(DRAM)设备能够以协同方式被使用,以对处理器来说实现与传统解决方案相比更高的容量和更高的带宽。这允许仅对带宽敏感的遗留工作负载继续使用高带宽HBM,但也允许更新的容量受限的工作负载将在处理器上被部署,并且与传统解决方案相比可以从增加的存储器带宽中受益。当与仅包括HBM的存储器池(memorypool)相比的HBM和封装外存储器系统的至少一部分的组合提供了统一的存储器池时,对带宽敏感的工作负载也可以从增加的存储器带宽中受益。
由图形和高性能计算(HPC)工作负载指导的传统对容量的计算的假设正在被数据中心应用程序转变。与通常通过扩展高带宽存储器(HBM)管芯密度、层数或单个封装中的HBM站点数量所提供的存储器容量相比,出现的数据中心应用程序需要来自处理系统的更高的存储器容量。更具体地,最近的应用程序(诸如为执行数据科学和分析管道准备数据的推荐系统和提取、转换和加载(ETL)操作)需要对存储器容量的兆兆字节的快速访问。
除了扩展HBM的容量之外,传统技术还用于通过具有比本地HBM更低带宽的接口为处理器访问对等体或主机存储器提供更大的物理地址空间。最近,处理器包括串行接口,其连接到与双倍数据速率(DDR)双列直插式存储器模块(DIMM)耦合的片外缓冲区,其本质上提供了管芯边缘的扩展以实现高容量。到片外缓冲区的处理器接口与具有本地HBM的接口是分开的,使得处理器承担了维护用于将请求发送到正确接口的信息的责任。
图1A示出了示例处理系统100的框图,该处理系统100包括耦合到适合用于实现本公开的一些实施例的封装上和封装外组合存储器系统的处理器110。应当理解的是,本文所描述的这种和其他布置仅作为示例被阐述。其他布置和元素(例如,机器、接口、功能、顺序、功能分组等)可以用于所示的内容的附加或代替,有些元素可以完全省略。此外,本文描述的许多元素都是功能实体,它们可以被实现为离散组件或分布式组件,或与其他组件结合实现,并且可以以任何合适的组合和位置来实现。本文描述的由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。而且,本领域普通技术人员将理解,执行耦合到封装上和封装外组合存储器系统的处理器110的操作的任何系统都在本公开的实施例的范围和精神内。
在一个实施例中,处理器110是图形处理单元(GPU)。处理器110通过内插器125耦合到封装上DRAM堆栈115和封装外存储器模块145。在一个实施例中,每个DRAM堆栈115包括堆叠在HBM控制器120的顶部上的存储器管芯,HBM控制器120垂直耦合到DRAM堆栈115中的每个管芯以形成HBM堆栈。一个或更多个HBM堆栈与处理器110一起被包围在封装105中。在一个实施例中,DRAM堆栈115中的每个都通过并行DRAM总线耦合到相应的HBM控制器120。在一个实施例中,至少一个HBM堆栈被包含在封装105中。
与包围在封装105内的封装上HBM堆栈相比,存储器模块145位于封装105的外部。在一个实施例中,每个封装外存储器模块145包括至少一个低功率(LPDDR)或DDR存储器设备、管芯或组件。在一个实施例中,每个存储器模块145包括一个缓冲器(例如,高速串行到LP5缓冲器或接口),该缓冲器耦合在总线或连接112或114与DRAM存储器组件之间。在一个实施例中,每个存储器模块145内的缓冲器通过并行总线耦合到一个或更多个DRAM存储器组件。在一个实施例中,存储器模块145内的每个缓冲器通过并行DRAM总线耦合到至少一个存储器堆栈,例如四个4GB堆栈,每个存储器模块145内的总封装外存储器容量为16GB。在一个实施例中,存储器模块145包括DIMM。在一个实施例中,连接112和114是高速串行链路,例如连接到存储器模块145的JEDECDDR或LPDDR。在一个实施例中,由连接112和114中的每个提供的高速串行链路在每个方向上提供128GB/s的数据传输速率或带宽。
处理器110通过连接106直接耦合到逻辑基础层130,该连接106能够支持比由封装外存储器模块145或HBM堆栈提供的带宽更大的带宽。在一个实施例中,处理器连接106能够支持由封装外存储器模块145和HBM堆栈提供的带宽的总和。更具体地,在封装105中,可以在处理器110和逻辑基础层130之间使用短到达内插器信令。在一个实施例中,逻辑基础层130是包括制造逻辑的自定义硅层。内插器125提供导电连接,其用于在处理器110和逻辑基础层130之间传输信号,以及在每个存储器模块145和逻辑基础层130之间传输信号。在处理器110和逻辑基础层130之间传输的信号不会退出封装105,并且可以通过在基础层130中制造的导电路径进行传输。类似地,封装上HBM控制器120和逻辑之间的连接102和104也可以通过在基础层130中制造的导电路径进行传输。如图1A所示,HBM控制器120通过连接102和104与逻辑基础层130直接耦合。在一个实施例中,连接102和104每个都是并行DRAM总线。
内插器125位于封装基板135的顶部表面上,并且封装基板135的相对(底部)表面物理和电耦合到外部基板140。在一个实施例中,封装105是球栅阵列,并且电信号通过位于封装基板135和外部基板140之间的导电焊球而被传输。封装外存储器模块145中的每个和逻辑基础层130之间的专用连接112和114通过在内插器125、封装基板135和外部基板140中制造的导电路径传输信号。在一个实施例中,外部基板140为印刷电路板并且导电路径是迹线(trace)。在一个实施例中,存储器模块145每个被封装在安装到外部衬底140上的球栅阵列中。在一个实施例中,在内插器125和封装衬底内的用于连接112和114的导电路径包括穿硅通孔。专用连接112和114将存储器模块145直接耦合到逻辑基础层130。
逻辑基础层130聚集了由DRAM栈115和存储器模块145两者提供的存储器容量,将处理器110从大部分(如果不是全部)存储器映射和管理操作中解放出来。在逻辑基础层130中制造的逻辑电路执行聚合、存储器映射和管理操作。逻辑基础层130包括用于封装上处理器110、封装上HBM堆栈和封装外存储器模块145中的每一个的单独接口。在一个实施例中,每个HBM堆栈具有24GB容量并提供512GB/s带宽的存储器访问(读取和写入访问的任意组合)。在一个实施例中,每个存储器模块145提供64GB的额外封装外存储器容量,并且连接112和114中的每一个为处理器110提供128GB/s的额外存储器访问带宽。假设配置具有单个DRAM堆栈115和两个存储器模块145,通过逻辑基础层130对于封装上和封装外存储器的组合的存储器带宽的聚合,总存储器容量为152GB,并且768GB/s的存储器带宽提供给处理器110。
通常,与封装外存储器相比,封装上存储器的可用带宽更大,并且与封装外存储器相比,封装上存储器可用的容量更小。逻辑基础层130实现了对封装上存储器和封装外存储器的支持,提供传统应用程序所需的高存储器带宽,同时还满足数据中心和机器学习应用程序的高存储器容量要求。
与仅提供封装外存储器实现的传统中央处理单元(CPU)解决方案相比,基础层提供封装上存储器和封装外存储器的组合。与提供封装上存储器并依赖封装外低带宽主机存储器以获得额外容量的传统GPU解决方案相比,逻辑基础层130提供具有提升的带宽的单个统一存储器。在一个实施例中,逻辑基础层130包括由处理器110对透明存储空间访问所需的存储器管理逻辑,其包括提供可配置的存储空间以满足不同工作负载的带宽要求和容量要求。
现在将阐述关于可以利用其按照用户的愿望实现前述框架的各种可选的架构和特征的更多说明性信息。应当强烈注意的是,以下信息出于说明性目的而被阐述,不应当以任何方式被解释为限制性的。可以在排除或不排除所描述的其他特征的情况下选择性地并入以下任何特征。
图1B示出了根据一个实施例的、用于处理封装上和封装外组合存储器系统的存储器访问请求的方法150的流程图。本文描述的方法150的每个块包括计算过程,该计算过程可以使用硬件、固件和/或软件的任意组合来执行。例如,通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管服务(独立或与另一托管服务相结合),或另一产品的插件(仅举几例)来提供。此外,通过示例描述了关于耦合到图1A的封装上和封装外组合存储器系统的处理器110的方法150。但是,这种方法可以通过任意一个系统或系统的组合(包括但不限于本文所述的那些系统)附加地或可替代地被执行。而且,本领域普通技术人员将理解执行方法150的任何系统在本公开的实施例的范围和精神内。
在步骤155中,从处理器接收存储器访问请求,该处理器直接耦合到封装内的基础层,并且存储器访问请求由耦合在处理器和存储器系统之间的基础层中制造的存储器管理逻辑处理。在一个实施例中,该基础层为逻辑基础层130,以及该处理器为处理器110。在一个实施例中,处理器110被耦合到存储器系统,该存储器系统包括逻辑基础层130、至少一个HBM堆栈和至少一个封装外存储器设备(例如存储器模块145)。在一个实施例中,至少一个存储器堆栈的容量小于所述至少一个存储器设备的容量。在一个实施例中,至少一个存储器堆栈的数据传输速率大于所述至少一个存储器设备的数据传输速率。在一个实施例中,逻辑基础层130包括所述存储器管理逻辑。
在步骤160中,存储器管理逻辑发送存储器访问请求的第一部分到至少一个存储器堆栈,该堆栈被包围在封装中,并直接耦合到基础层。在一个实施例中,响应于第一存储器访问请求,存储在至少一个存储器堆栈和至少一个存储器设备中的数据通过连接106在处理器和基础层之间被传输。在一个实施例中,存储器管理逻辑根据接口映射转换与存储器访问请求相关联的每个地址,以将存储器访问请求发送到至少一个存储器堆栈或至少一个存储器设备中的一个。在一个实施例中,接口映射被存储在逻辑基础层130中,并将与访问请求关联的每个地址映射到与连接102、104、112和114耦合的接口中的一个。在一个实施例中,逻辑基础层130转换地址以识别其中接口中的一个,并在所识别的接口上传输地址或转换的地址的至少一部分。
在步骤165中,存储器管理逻辑发送存储器访问请求的第二部分到至少一个存储器设备,该存储器设备位于封装的外部并通过第一接口耦合到基础层。在一个实施例中,至少一个存储器设备通过第一接口和存储器系统耦合到基础层,并且存储器系统还包括至少一个额外的存储器设备,该至少一个额外的存储器设备位于封装的外部并通过与第一接口分离的第二接口被耦合到基础层。在一个实施例中,远端存储器池或空间仅包括至少一个存储器设备中的位置。在一个实施例中,近端存储器池包括至少一个存储器堆栈中的第一位置和所述至少一个存储器设备中的第二位置。在一个实施例中,第一位置和第二位置根据由存储器管理逻辑执行的地址映射而在近端存储器池内交错。
在一个实施例中,数据在所述存储器管理逻辑与至少一个存储器堆栈和至少一个存储器设备之间同时传输。例如,响应于存储器读请求,数据被同时从所述DRAM堆栈115中的至少一个和存储器模块145中的至少一个发送到逻辑基础层130。在另一个实施例中,响应于存储器写入请求,数据被同时从逻辑基础层130发送到DRAM堆栈115中的至少一个和存储器模块145中的至少一个。在一个实施例中,对于DRAM堆栈115和存储器模块145的每个存储器访问请求由逻辑基础层130处理。
图2A示出了适用于实现本公开的一些实施例的示例逻辑基础层130的框图。逻辑基础层130包括HBM控制器220,该控制器通过接口连接到用于封装上存储器的连接102和104,连接102和104在HBM站点235处耦接到逻辑基础层130。逻辑基础层130还包括存储器设备控制器212和214,其分别通过接口连接到连接112和114(其连接到包括存储器模块145的封装外存储器)。逻辑基础层130还包括处理器接口215,该处理器接口215通过连接106将逻辑基础层130直接耦合到处理器110。在一个实施例中,逻辑基础层130包括一个或更多个附加处理器接口215,该接口被耦合到一个或更多个附加处理器,该附加处理器可能与处理器110相同或不同。在一个实施例中,逻辑基础层130包括至少一个附加接口,该附加接口被耦合到一个或更多个其他设备,这些设备访问封装上和封装外组合的存储器。访问封装上和封装外存储器的任何处理器或设备都向逻辑基础层130发出请求,因为没有备用路径到达/来自HBM堆栈或封装外存储器。
存储器管理逻辑225根据可能被存储在页表240中的地址映射信息,经由处理器接口215将从处理器110接收到的存储器访问请求引导到正确的存储器中。该地址映射信息可以包括接口映射,并用于将从处理器110接收到的地址转换为接口特定地址。在一个实施例中,接口映射信息还可以被存储在页表240中,或者可以与地址映射信息分开进行存储。因此,处理器110不需要知道不同的存储器,并且可以解除对封装上和封装外存储器执行存储器转换。存储器管理逻辑225还经由处理器接口215对从处理器110接收到的请求进行响应。
存储器管理逻辑225路由地址的每个请求,该地址映射到通过连接112耦合到存储器设备控制器212的封装外存储器模块145。类似地,存储器管理逻辑225路由地址的每个请求,该地址映射到通过连接114耦合到存储器设备控制器214的封装外存储器模块145。在一个实施例中,存储器设备控制器212和214根据需要将从存储器管理逻辑225接收到的地址转换,以访问在一个或多个存储器模块145中的位置。在一个实施例中,特定于接口112和114的地址映射信息被存储在存储器设备控制器212和214中。存储器设备控制器212和214也可以实现为存储器模块145规定的任何通信协议。在一个实施例中,存储器设备控制器212和214未在逻辑基础层130中被制造,反而位于封装外并被集成到存储器模块145的每个中,或者位于封装105和各自的存储器模块145之间。
存储器管理逻辑225路由地址的每个请求,该地址映射到通过HBM控制器220耦合到接口102和104的封装上HBM堆栈。在一个实施例中,HBM控制器220根据需要将从存储器管理逻辑225接收到的地址转换,以访问在HBM堆栈中的位置。HBM控制器220还可以实现为HBM堆栈规定的任何通信协议。
为了实现各种不同的存储器系统配置,可以重新设计基础层以支持不同的存储器设备和/或删除或添加额外的接口,而无需重新设计或修改处理器110。此外,通过在DRAM堆栈115中的位置为传统应用程序分配存储器池,可以在不修改传统应用程序的情况下支持依赖于HBM堆栈提供的带宽的传统应用程序。带宽受限的应用程序可以从一些增加的存储器容量中受益,可以使用近端存储器池,该存储器池被分配了所有的DRAM堆栈115和所有的封装外存储器的带宽,从而导致,例如比单独的HBM堆栈多50%的带宽和50%的容量。这样的分配将无法保证可用的远端存储器池带宽,而且封装外存储器容量的大部分将无法被利用,但可能会为一些“传统”应用程序实现最佳性能。应用程序可以从仅使用封装上HBM堆栈可获得的更高存储器容量中获益,那么可以使用在封装外存储器或封装外存储器和封装上HBM堆栈的组合中被分配位置的存储器池来访问更大的容量。
由封装上和封装外存储器提供的组合的存储器池被暴露在处理器110中作为统一的存储器空间。组合的存储器池可分为大容量的远端存储器(带宽较低)池和小容量的近端存储器(带宽较高)池。在一个实施例中,应用程序或系统软件知道这两个存储器池,并负责在近端存储器中对数据的进出(in-and-out)进行分页和/或对数据进行适当的分区。在另一个实施例中,近端和远端存储器的管理通过存储器管理逻辑225处理,并且对应用程序和处理器110是透明的。
在一个实施例中,近端存储器池仅包括封装上HBM堆栈,远端存储器池仅包括封装外存储器。在一个实施例中,近端存储器池包括封装上HBM堆栈和封装外存储器的至少一个“挖出(carveout)”部分。在一个实施例中,远端存储器池包括近端存储器池中未包括的封装外存储器。在一个实施例中,近端存储器池中用于存储器分配的地址映射可以在封装上/封装外存储器中交错位置,以满足容量和带宽要求,如结合图3A所描述的。不受存储器容量限制的处理工作负载可以以交错模式的封装外存储器所提供的附加带宽中受益。容量集中的工作负载可以从封装外存储器提供的额外容量中受益。与使用对等或主机存储器提供额外容量的传统解决方案相比,通过逻辑基础层130由处理器110直接访问的封装外存储器具有较高的带宽。
在实施例中,迁移引擎被包括在逻辑基础层130中,以一种对处理器110透明的方式在存储器系统中的不同位置之间移动数据或复制数据。在一个实施例中,近端存储器和远端存储器之间的数据迁移不会增加处理器接口215上的通信量。因此,数据迁移在功耗和处理器存储器带宽方面都是高效的。在一个实施例中,迁移引擎是通过存储器管理逻辑225来实现的。可以使用各种策略来执行迁移。例如,频繁访问的数据可以通过高速缓存230从远端存储器迁移到近端存储器,而无需中断请求服务和/或导致与常规管理事件相关的减速,例如转换后备缓冲器(TLB)的关闭。在一个实施例中,高速缓存230存储仅映射到远端存储器的地址的数据。
迁移过程可以由处理器110产生的作为程序指令的结果的显式请求来触发,或者可以由不同的机制触发。在一个实施例中,可以根据访问频率触发迁移。在一个实施例中,迁移根据给定时间窗口内的访问频率被触发。在一个实施例中,迁移基于访问模式被触发,例如迁移位于已经被迁移的两个页面之间的页面。在一个实施例中,迁移基于对访问流中的地址分析被触发以识别要迁移的页面。
在一个实施例中,近端存储器和远端存储器之间的数据传输可以以被编程或被固定的粒度(如页面大小)来完成。在一个实施例中,高速缓存230中的每条高速缓存行存储用于存储器的页面的数据,且页面中的每个位置被存储在高速缓存行内的单独扇区中。例如,在一个实施例中,一个扇区为32字节的数据,而一个高速缓存行可以存储2048个扇区。存储器管理逻辑225可以追踪高速缓存行中的有效扇区的数量,当扇区数量大于阈值时,存储器管理逻辑225可以将与高速缓存行相关联的页面迁移到近端存储器中。有效的扇区存储的数据也被存储到相应的存储器位置中。
在迁移过程中,存储器管理逻辑225可以追踪正在迁移的页面中的位置。当位置被迁移到高速缓存行中的无效扇区中,页表被更新,并且对有效扇区的任何要求都由高速缓存230提供服务,而对尚未迁移的无效扇区的请求则通过将来自远端存储器的数据加载到相应的无效扇区来提供服务。在迁移进行的同时,存储器管理逻辑225可以继续处理从处理器110接收到的请求,即使当请求访问正在被迁移的位置时也是如此。
在一个实施例中,总存储器容量为封装上和封装外存储器的总和,称为独占模式。相比之下,对于包含模式,远端存储器作为近端存储器的后备存储器。包含模式的总存储器容量是远端存储器的容量。
高速缓存230可以被用于执行迁移。对于包含模式,当存储器页面触发迁移时,存储器管理逻辑225将无效扇区加载到分配给存储器页面的高速缓存行中,同时继续服务于新请求。如果存储器页不存在缓存中,存储器管理逻辑225首先分配高速缓存行给存储器页,然后加载扇区。在一个实施例中,当无效扇区被加载时,高速缓存行被锁定在高速缓存中,并且当整个高速缓存行有效时(例如,高速缓存行为“满”),存储器管理逻辑225相应地更新页表240。例如,迁移页面的位置可能被更改为近端存储器的位置,而高速缓存行可能被标记为“脏(dirty)”。在一个实施例中,存储器管理逻辑225存储用于确定路由请求的接口信息,并更新接口信息以将迁移页面的地址与近端存储器接口关联起来。一旦迁移完成,存储器管理逻辑225可以解锁高速缓存行,并且如果需要,可以将高速缓存行逐出。
对于独占模式,所有近端存储器池和远端存储器池可以被使用,高速缓存230可用于在近端和远端存储器池之间“交换”数据。从远端存储器迁移到近端存储器的数据的第一页面可能会暂时被存储在高速缓存230中,而远端存储器中存储第一页面的位置被从近端存储器的第二位置迁移到远端存储器的数据的第二页面所覆盖。如前所述,第一页面可能与高速缓存行相关联,并且存储器管理逻辑225可以将无效扇区加载到高速缓存行中,同时继续服务新请求。一旦整个高速缓存行有效,数据的第一页面然后可能被存储到近端存储器的第二位置,存储器管理逻辑225更新页表240,以指示第二页面在远端存储器中以及第一页面在近端存储器中。本质上,通过将高速缓存230使用为临时存储器,第一页面与第二页面被“调换”。在另一个实施例中,可以将数据的第二页面存储到高速缓存230中,并且可以将数据的第一页面直接存储到近端存储器中的第二位置。然后可以从高速缓存230中读取数据的第二页面并存储在远端存储器中,存储器管理逻辑225可以相应地更新页表240。
当在近端存储器中未使用空间可用时,数据的第一页面可以直接存储到近端存储器中的第二位置,而无需首先存储到高速缓存230中。一旦数据的第一页面存储在近端存储器中,存储器管理逻辑225相应地更新页表240。在一个实施例中,当近端存储器包括封装外存储器的至少一部分时,近端存储器的封装外部分中的数据的一部分不会通过移动该部分而被迁移到远端存储器。相反,在存储了数据的该部分的封装外存储器的位置的分配将从近端存储器更改为远端存储器。因此,只有存储在封装上存储器中的剩余数据需要被移动到远端存储器,以完成近端存储器到远端存储器的迁移。
在下面描述的上下文中,数据的页面可能存在于三种状态(驻留在封装上存储器中、驻留在封装外存储器中或正在迁移中)之一。当存储器管理逻辑225确定页面正在迁移时,与高速缓存行中存储页面的与特定扇区相关的数据的当前位置也被确定。当扇区有效时,请求可以被完成。另外地,一旦扇区变为有效,请求可以被完成。在一个实施例中,存储器管理逻辑225暂停对请求的处理,直到迁移完成。
图2B示出了根据一个实施例的包括封装上和封装外组合存储器系统255的计算系统200。计算系统200包括处理器250、逻辑基础层130和存储器系统255。该存储器系统255分别包括封装上和封装外存储器,例如至少一个HBM堆栈(例如,HBM控制器120和DRAM堆栈115)和至少一个存储器模块145。
在一个实施例中,处理器250耦合到多个逻辑基础层130,处理器250包括到每个逻辑基础层130的独立接口106。多个逻辑基础层130可以制造在单个管芯或多个管芯中,并耦合到单独的存储器系统255。在一个实施例中,在内插器125内制造有逻辑基础层130之间的链接。处理器250基于接口映射的地址将请求路由到正确的接口106和逻辑基础层130。在一个实施例中,每个逻辑基础层130耦合到单个DRAM堆栈115和两个存储器模块145,提供152GB的总存储器容量和768GB/s的存储器带宽。当计算系统200中包括6个逻辑基础层130和6个存储器系统255时,通过封装上和封装外存储器的组合可以提供912GB的总存储容量,通过封装上和封装外存储器的组合的6个逻辑基础层130的存储器带宽的聚合,为处理器110提供4.5兆兆字节/秒的带宽。
处理器250可以是处理器110,并包括接口280,该接口耦合到至少一个附加的设备,该设备位于封装的外部,封装至少包围处理器250、逻辑基础层130和存储器系统255的封装上部分。在一个实施例中,至少一个额外设备是可以由处理器250访问的额外存储器。在传统的系统中,当只有封装上HBM堆栈可用时,至少一个额外设备被用于增加存储容量。然而,与包括在存储器系统255中的封装外存储器相比,至少一个额外设备没有通过与封装上HBM堆栈相同的接口耦合到处理器250。
处理器230还可以包括一个或多个单元,其包括存储,例如L2高速缓存260和L1高速缓存265、交叉开关(crossbar)270互连、和/或处理或执行核心275。在一个实施例中,处理器250可以包括多个L2高速缓存260。每个L2高速缓存260可以单独连接到专用的逻辑基础层130。当计算系统200中包括多个存储器系统255时,处理器250维持映射信息,以确定每个请求被发送到存储器系统255中的哪一个。在一个实施例中,处理器250可以指定数据是存储在近端存储器还是远端存储器中,但是处理器250不需要追踪或控制特定存储器系统255中地址的映射。基于对数据存储的需要,逻辑基础层130为存储在存储器系统255中的数据提供映射信息并维护映射信息。
虽然存储在存储器系统255中的数据可以被高速缓存在L2高速缓存260和/或L1高速缓存265中,在存储器系统255的每个中的数据(在远端存储器池和近端存储器池之间)的迁移由逻辑基础层130来执行,无需在逻辑基础层130和处理器250之间传输数据。与仅使用封装上存储器相比,逻辑基础层130和存储器系统255为处理器250提供了更高的存储器容量和更高的存储器带宽。
在一个实施例中处理器250的至少一部分被包括在虚拟机中。在一个实施例中,处理器250是服务器或数据中心的一部分,并且存储在存储器系统中的数据被流式传输到用户设备。在一个实施例中,处理器250生成用于训练、测试或证明在机器、机器人或自动驾驶车辆中使用的神经网络的数据。在一个实施例中,处理器250的至少一部分被包括在云计算环境中。
图3A示出了适合用于实现本公开的一些实施例的近端存储器和远端存储器映射的概念图。在一个实施例中,包含在存储器系统255中的封装上存储器和封装外存储器被划分为近端存储器310和远端存储器320。在一个实施例中,整个近端存储器310包括所有封装上存储器而不包括封装外存储器。在一个实施例中,整个远端存储器320包括所有的封装外存储器,而不包括封装上存储器。当近端存储器310仅为封装上存储器,远端存储器320仅为封装外存储器时,每个存储器池提供的存储器带宽很容易被确定。应用程序和/或处理工作负载可以基于存储器带宽需求和/或存储器容量需求在不同的池中被分配存储器。在每个池中,地址可以跨不同的存储器模块145和HBM堆栈以高速缓存行或其他量的粒度(granularity)进行映射(例如被条带化(stripped)。
在一个实施例中,近端存储器310包括所有封装上存储器和封装外存储器的一部分,而剩余的封装外存储器被包括在远端存储器320中。在一个实施例中,对近端存储器310使用了交错映射,以便在地址范围(线性或拌和)内,封装外存储器中的位置与封装上存储器中的位置交错。在一个实施例中,交错粒度为64K字节,使得图3A所示的交错区域包括7个交错的64K字节的存储器部分。交错确保了当访问一系列地址时,与仅访问封装上存储器相比,存储器带宽可能更高。在一个实施例中,交错粒度为2的幂值,2n,其中n为整数。在一个实施例中,交错粒度比64K字节要细,如一个值512B-1K字节的值。在另一个实施例中,交错粒度大于64K字节。
存储器带宽可能更高,因为逻辑基础层130使得处理器110或250和封装上存储器以及封装外存储器这两者之间的通信同时进行。因此,封装外存储器位置与封装上存储器位置的交错会增加带宽,可以达到存储器系统255和逻辑基础层130之间的封装外存储器带宽饱和或逻辑基础层130和处理器250之间的封装外存储器带宽饱和的点。在一个实施例中,在近端存储器内,封装外存储器通道与封装上存储器的比率等于两种不同类型存储器(HBM堆栈和封装外存储器)的聚合带宽的比率。
例如,在存储器系统中包括三个存储器模块145,每个存储器模块具有一个单独的128GB/s接口(例如,信道)时,封装外存储器的带宽为384GB/s。如果封装上存储器的带宽为512GB/s时,聚合带宽为896GB/s,其中封装外存储器提供了该聚合带宽的3/7,封装上存储器提供了该聚合带宽的4/7。如图3A所示,对于在近端存储器310的映射内的额外区域,3个封装外部分与4个封装上部分的区域内的交错被重复。根据带宽比,如果16GB的封装上存储器被包括在近端存储器中,12GB的封装外存储器被分配给近端存储器,总近端存储器容量为28GB,带宽为896GB/秒。封装外存储器的剩余被分配给远端存储器,并且地址跨三个存储器模块145被条带化,从而以高达384GB/s的带宽提供与近端存储器共享的剩余存储器容量。
在另一个示例中,每个池被分配最大带宽,近端存储器使用该最大带宽接收所有封装上带宽和封装外带宽的一部分。具体来说,近端存储器可以被分配384GB/s的总封装外存储器带宽的2/3的封装外带宽(即256GB/s)。总的来说,近端存储器的聚合带宽受限于逻辑基础层130和处理器110之间的接口215的最大带宽。但是,接口215的最大带宽可能大于存储器系统的总带宽,使得聚合带宽反而受限于存储器系统的总带宽。在一个实施例中,接口215提供的处理器带宽几乎是封装上存储器带宽的两倍。当近端存储器被分配2/3的封装外带宽时,近端存储器的最大带宽为768GB/s,近端存储器被分配了8GB的封装外存储器,并且当与16GB的封装上存储器结合,总近端存储器容量为24GB。平均起来,访问全部8GB的封装外存储器所花费的时间量与访问16GB的封装上存储器所花费的时间量相同。在本示例中,当利用最大为768GB/s的近端存储器带宽时,只有256GB/s的封装外带宽被使用。这留下了128gb/s的预留带宽来请求远端存储器池。分配更多的封装外存储器以增加近端存储器容量和带宽将减少对于远端存储器请求可用的预留带宽。
在一个实施例中,逻辑基础层130使近端存储器访问优先于远端存储器访问,以防止远端存储器请求减少包括在近端存储器池中的封装外存储器的部分所需的最大带宽。在一个实施例中,访问是根据与近端存储器池和远端存储器池相关联的最大带宽进行仲裁的,并且当没有远端存储器访问时,近端存储器访问可能临时消耗超过其相关的最大带宽。类似地,当没有近端存储器访问时,远端存储器访问可能会暂时消耗超过其相关的最大带宽。在一个实施例中,阈值被用于识别近端存储器的未充分利用,使得远端存储器可以临时消耗超过其最大带宽,同时近端存储器访问优先于远端存储器访问。
在交错平衡了跨不同存储器池(近端存储器池和远端存储器池)中所有存储器的存储器带宽的同时,交错也增加了总体访问延迟,因为与访问封装上存储器相比,访问封装外存储器的延迟更大。当使用交错时,封装外存储器带宽在近端存储器和远端存储器池之间被有效地划分,使得远端存储器流量不会减少近端存储器请求可用的带宽。在一个实施例中,逻辑基础层130根据需要基于不同存储器类型的存储器带宽以及近端存储器和远端存储器访问之间的仲裁来确定交错比率,以确保存储器带宽的数量被提供,并维持了QoS。
不能从更大的存储器容量中受益的应用程序将从交错模式下的封装外存储器的附加带宽实现存储器带宽的提高。与依赖于(在带宽和/或延迟方面)较慢的接口来访问额外存储器的传统解决方案相比,受限于存储器容量的工作负载可以以更高的带宽访问封装外存储器。
图3B示出了适合用于实现本公开的一些实施例的用于数据迁移的方法350的流程图。这里描述的方法350的每个框包括可以使用硬件、固件和/或软件的任意组合执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令而被执行。该方法也可以被体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务相结合)或另一产品的插件(仅举几例)来提供。此外,通过示例描述了方法350,该方法关于耦合到图1A的封装上和封装外组合存储器系统的处理器110和/或通过图2B的逻辑基础层130耦合到存储器系统255的处理器250。然而,该方法可以通过任何一种系统或系统(包括但不限于本文描述的那些系统)的任意组合附加地或可替代地被执行。此外,本领域普通技术人员将理解执行方法350的任何系统都在本公开的实施例的范围和精神之内。
在步骤355中,接收对于存储在远端存储器池中的数据的存储器访问请求。在一个实施例中,从处理器接收存储器访问请求,该处理器直接耦合到具有该处理器的单个封装中的基础层,并且该基础层耦合在该处理器和存储器系统之间。存储器系统包括封装上存储器和封装外存储器,其中封装上存储器被包围在单个封装中,封装外存储器位于单个封装的外部。在一个实施例中,近端存储器池包括封装上存储器和封装外存储器的组合,并且远端存储器池仅包括封装外存储器。
在步骤360中,被制造在基础层中的存储器管理逻辑确定了迁移是否被触发。在一个实施例中,当超过与访问请求相关联的访问的阈值数量时,迁移被触发。例如,访问请求在存储器的页面中指定地址,在一时间段内对该页面的访问次数由存储器管理逻辑追踪,用于与阈值进行比较。当访问请求没有导致高速缓存命中时,数据可以从远端存储器池中的某个位置被加载到高速缓存中,并初始化访问次数。如果空的高速缓存行不可用,存储在高速缓存行中的数据可能会被逐出。基于页表中的信息,在逐出的高速缓存行中的任何脏扇区被写回近端存储器或远端存储器中的位置。在实施例中,存储器管理逻辑确定已将阈值数量的扇区加载到页面的高速缓存行中,以触发页面的迁移过程。
如果在步骤360中没有触发迁移,则在步骤370中处理访问请求。否则,在步骤365中,存储器管理逻辑将丢失的扇区从远端存储器池迁移到近端存储器池中。在一个实施例中,高速缓存行存储存储器页面的多个扇区,存储该页面数据的扇区是有效的,未装载该页面数据的扇区是无效的并被认为丢失。在一个实施例中,在步骤365中开始的迁移过程可以通过执行指令而被触发或发起。
迁移过程可以在不减慢访问请求的处理的情况下被执行。在一个实施例中,处理器发起的请求被无条件地处理,并且在不干扰处理器发起的请求的处理的情况下,在后台适时地执行页面迁移。因此,迁移过程在步骤365中被启动,然后在步骤370中处理访问请求,同时页面迁移在步骤375中继续。例如,页面中的前512个扇区被访问,触发页面的迁移,在处理器请求扇区200-300之前迁移前100个扇区。在跳到扇区301之前,对扇区200-300的请求被服务(并被加载到高速缓存中),然后迁移恢复复制扇区101-199以继续迁移。因为在迁移引擎之前,处理器发起的访问完成了一些扇区的迁移,对于该迁移并没有执行冗余工作。页面迁移在处理处理器发起的访问方面(没有TLB的关闭等)和访问性能方面都是透明的。
在步骤375中,存储器管理逻辑确定整个页面的迁移是否完成,如果没有完成,存储器管理逻辑返回到步骤365以迁移丢失的扇区。当迁移完成后,在步骤380中,存储器管理逻辑更新页面的映射信息,以指示该页面被包括在近端存储器池中。
在一个实施例中,近端存储器池包括至少一个存储器堆栈中的第一位置和至少一个存储器设备中的第二位置。根据存储器管理逻辑执行的地址映射,第一和第二位置可以在近端存储器池中被交错。在一个实施例中,响应于触发器,存储器管理逻辑将未被包括在近端存储器池中的存储在至少一个存储器设备中的第三位置的第一数据迁移到近端存储器池。触发器可能在一时间段内超过对于第三个位置的存储器访问请求的阈值数目。在一个实施例中,在处理至少一个额外的存储器访问请求时,第一数据的部分从第三位置被复制到第一存储器池。在一个实施例中,存储器管理逻辑更新第一数据的地址映射,以指示在第一数据被迁移后,第一数据被存储在第一存储器池中。在一个实施例中,存储器管理逻辑将存储在第一存储器池中的数据迁移到至少一个存储器设备中的未包括在第一存储器池中的第四位置,并更新地址映射以指示数据被存储在第四位置。
通过基础层为处理器提供包括封装上和封装外存储器的统一存储器,可以增加可用存储器容量和存储器带宽两者。与具有通过基础层提供的相应的接口的封装外存储器类型相比,封装上的存储器类型可能不同。与封装上存储器或封装外存储器的带宽相比,处理器和基础层之间的带宽可能更高。在一个实施例中,存储器容量被划分为近端和远端存储器池,并且被分配到近端存储器池的封装外存储器的部分与封装上存储器的部分交错,以与仅使用用于近端存储器池的封装上存储器相比则提供更高的聚合存储器带宽。
制造在基础层中的逻辑将存储器管理任务从处理器中卸载,并使各个不同的存储器配置能够具有不同的接口、信令技术、容量、设备类型等。基于存储在基础层中的地址和/或接口映射信息,逻辑可以将请求引导到正确的存储器中。该逻辑还可以在近端存储器池和远端存储器池之间迁移数据,甚至在继续处理访问请求时也是如此。这种逻辑将处理器与存储器系统解耦,使处理器和存储器系统能够独立发展。
使用封装上和封装外存储器系统来增加可用存储器容量可以提高工作负载的数据中心性能,例如推荐系统培训。当处理器110为GPU时,使用封装上和封装外存储器系统可能有利于GPU加速数据库和其他工作负载,其中,工作集太大以至于无法装入单个GPU的封装上存储器。可能受益于封装上和封装外存储器系统的另一服务是数据中心的虚拟化,其中具有不同存储器带宽和容量需求的不同工作负载可以由使用封装上和封装外存储器系统的单个处理器来服务。
并行处理架构
图4示出了根据一个实施例的并行处理单元(PPU)400。PPU400可用于在处理系统100内实现处理器110或在计算系统200内实现处理器250。在一个实施例中,诸如PPU400之类的处理器可以被配置为实现神经网络模型。该神经网络模型可以被实现为由处理器执行的软件指令,或在其他实施例中,该处理器可以包括被配置为处理输入(例如表示值的电信号)集以生成输出集的硬件元件矩阵,所述输出可以表示神经网络模型的激活。在其他的实施例中,神经网络模型可以被实现为由硬件元件矩阵执行的处理和软件指令的组合。实现神经网络模型可以包括通过例如神经网络模型的有监督或无监督训练确定用于神经网络模型的参数集,以及或可替换地,使用该参数集执行推理,以处理新输入集。
在一个实施例中,PPU400是在一个或更多个集成电路设备上实现的多线程处理器。PPU400是被设计为并行处理许多线程的延迟隐藏架构。线程(例如执行线程)是被配置为由PPU400执行的指令集的实例化。在一个实施例中,PPU400是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示设备上显示的二维(2D)图像数据。在其他实施例中,PPU400可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,这样的处理器仅出于说明目的进行阐述,并且可采用任何处理器来补充和/或替代该处理器。
一个或更多个PPU400可以被配置为加速数千个高性能计算(HPC)、数据中心、云计算和机器学习应用。PPU400可被配置为加速众多深度学习系统和应用,所述系统和应用用于自主车辆、模拟、诸如光线或路径追踪之类的计算图形学、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
如图4所示,PPU400包括输入/输出(I/O)单元405、前端单元415、调度器单元420、工作分配单元425、集线器430、交叉开关(Xbar)470、一个或更多个通用处理集群(GPC)450以及一个或更多个存储器分区单元480。PPU400可以经由一个或更多个高速NVLink410互连连接到主机处理器或其他PPU400。PPU400可以经由互连402连接到主机处理器或其他外围设备。PPU400还可以连接到包括多个存储器设备的本地存储器404。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM管芯(die)堆叠在每个设备内。在一个实施例中,本地存储器404包括本地基础层130和存储器系统255。
NVLink410互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU400,支持PPU400和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink410通过集线器430发送到PPU400的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink410。
I/O单元405被配置为通过互连402从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。I/O单元405可以经由互连402直接与主机处理器通信,或通过一个或更多个诸如内存桥之类的中间设备与主机处理器通信。在一个实施例中,I/O单元405可以经由互连402与诸如一个或更多个PPU400之类的一个或更多个其他处理器通信。在一个实施例中,I/O单元405实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连402是PCIe总线。在替代的实施例中,I/O单元405可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元405对经由互连402接收的数据包进行解码。在一个实施例中,数据包表示被配置为使PPU400执行各种操作的命令。I/O单元405将解码的命令传输至这些命令可能指定的PPU400的各种其他单元。例如,一些命令可以被传输至前端单元415。其他命令可以被传输至集线器430或PPU400的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元405被配置为在PPU400的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU400提供工作负载用于处理。工作负载可以包括若干指令和要由那些指令处理的数据。缓冲区是存储器中可由主机处理器和PPU400两者访问(例如,读/写)的区域。例如,I/O单元405可以被配置为经由通过互连402传输的存储器请求访问连接到互连402的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然反向PPU400传输指向命令流开始的指针。前端单元415接收指向一个或更多个命令流的指针。前端单元415管理所述一个或更多个流,从这些流读取命令并将命令转发到PPU400的各个单元。
前端单元415耦合到调度器单元420,其配置各种GPC450以处理由所述一个或更多个流定义的任务。调度器单元420被配置为跟踪与由调度器单元420管理的各种任务有关的状态信息。状态可以指示任务被指派给哪个GPC450,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元420管理所述一个或更多个GPC450上的多个任务的执行。
调度器单元420耦合到工作分配单元425,其被配置为分派任务以在GPC450上执行。工作分配单元425可以跟踪从调度器单元420接收到的若干调度的任务。在一个实施例中,工作分配单元425为每个GPC450管理待处理(pending)任务池和活动任务池。当GPC450完成任务的执行时,该任务从GPC450的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC450上执行。如果GPC450上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC450中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC450上执行。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得在主机处理器上执行的一个或更多个应用程序能够调度用于在PPU400上执行的操作。在一个实施例中,多个计算应用程序由PPU400同时执行,并且PPU400为所述多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU400执行。驱动程序内核将任务输出到正在由PPU400处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。这些任务可以分配给GPC450内的一个或更多个处理单元,并且指令被调度用于由至少一个线程束执行。
工作分配单元425经由XBar470与所述一个或更多个GPC450通信。XBar470是将PPU400的许多单元耦合到PPU400的其他单元的互连网络。例如,XBar470可以被配置为将工作分配单元425耦合到特定的GPC450。虽然没有明确示出,但PPU400的一个或更多个其他单元也可以经由集线器430连接到XBar470。
任务由调度器单元420管理并由工作分配单元425分派给GPC450。GPC450被配置为处理任务并生成结果。结果可以由GPC450内的其他任务消费,经由XBar470路由到不同的GPC450,或存储在存储器404中。
结果可以经由存储器分区单元480写入存储器404,存储器分区单元480实现用于从存储器404读取数据和向存储器404写入数据的存储器接口。
结果可以经由NVLink410传输至另一个PPU400或CPU。在一个实施例中,PPU400包括数量为U的存储器分区单元480,该数量等于耦合到PPU400的存储器404的单独且不同的封装上和封装外组合存储器系统的数量。每个GPC450可以包括存储器管理单元以提供虚拟地址到物理地址的转化、存储器保护以及存储器请求的仲裁。在一个实施例中,存储器管理单元提供一个或更多个转化后备缓冲区(TLB)以用于在存储器404中执行虚拟地址到物理地址的转化。在一个实施例中,存储器管理单元将虚拟地址转换为分区接口地址,并且还有存储器404中的逻辑基础层130执行映射。换句话说,GPC450不需要知道数据的位置,只需要确定数据与U存储器分区单元480中的哪一个相关联。
在一个实施例中,存储器分区单元480包括光栅操作(ROP)单元、二级(L2)高速缓存以及耦合到存储器404的存储器接口。存储器接口可以实现用于高速数据传输的32比特、64比特、128比特、1024比特数据总线。PPU400可以连接到高达Y个存储器设备,例如高带宽存储器堆栈或图形双数据速率、版本5、同步动态随机存取存储器或其他类型的持久性存储装置。在一个实施例中,所述存储器接口实现一种HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆栈位于与PPU400相同的物理封装上,与常规的GDDR5SDRAM系统相比提供大量的功率和面积节省。在一个实施例中,每个HBM2堆栈包括四个存储器裸晶并且Y等于4,其中每个HBM2堆栈包括每个裸晶的两个129比特通道,总共8个通道且数据总线宽度为1024比特。
在一个实施例中,存储器404支持单纠错双检错(SECDED)纠错码(ECC)以保护数据。ECC为对于数据损坏敏感的计算应用提供了较高的可靠性。可靠性在其中PPU400处理非常大的数据集和/或在延长的时段运行应用程序的大规模集群计算环境中尤为重要。
在一个实施例中,PPU400实现多级存储器层级结构。在一个实施例中,存储器分区单元480支持为CPU和PPU400存储器提供单个统一的虚拟地址空间的统一存储器,允许实现虚拟存储器系统之间的数据共享。在一个实施例中,PPU400访问位于其他处理器上的存储器的频率被追踪以确保存储器页面移动到正在更频繁地访问这些页面的PPU400的物理存储器。在一个实施例中,NVLink410支持地址转化服务,允许PPU400直接访问CPU的页面表并且提供PPU400对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU400之间或在PPU400与CPU之间传输数据。复制引擎可以为没有映射到页面表中的地址生成页面错误。然后,存储器分区单元480可以维修页面错误,将这些地址映射到页面表中,之后,复制引擎可以执行所述传输。在常规的系统中,存储器被固定(例如不可分页)用于多个处理器之间的多个复制引擎操作,大大地减少了可用存储量。在硬件页面故障的情况下,可以将地址传递给复制引擎,而不用担心存储器页面是否驻留,并且复制过程是透明的。
来自存储器404或其他系统存储器的数据可以由存储器分区单元480获取并且存储在位于片上且在各种GPC450之间共享的L2高速缓存460中。如图所示,每个存储器分区单元480包括与相应存储器404关联的L2高速缓冲的部分。然后,可以在GPC450内的各种单元中实现低级高速缓存。例如,GPC450内的处理单元中的每一个可以实现一级(L1)高速缓存。L1高速缓存是专用于特定处理单元的私有存储器。L2高速缓存460耦合到存储器接口470和XBar470,并且来自L2高速缓存的数据可以被获取且存储在L1高速缓存中的每一个中以用于处理。
在一个实施例中,每个GPC450内的处理单元实现一种SIMD(单指令多数据)架构,其中线程组(例如线程束)中的每个线程被配置为基于相同的指令集合处理不同的数据集合。线程组中的所有线程执行相同的指令。在另一个实施例中,处理单元实现一种SIMT(单指令多线程)架构,其中线程组中的每个线程被配置为基于相同的指令集合处理不同的数据集合,但是其中线程组中的个别线程允许在执行期间有分歧。在一个实施例中,对于每个线程束维持程序计数器、调用堆栈和执行状态,允许在线程束内的线程有分歧时实现线程束之间的并发性和线程束内的串行执行。在另一个实施例中,对于每个个别的线程维持程序计数器、调用堆栈和执行状态,允许实现线程束之内和之间的所有线程之间的同等的并发性。当对于每个个别的线程维持执行状态时,执行相同指令的线程可以聚合并且并行地执行以获得最大效率。
协作组是一种用于组织通信线程组的编程模型,其允许开发人员表达线程正在通信的粒度,允许实现更丰富、更高效的并行分解的表达。协作启动API支持用于执行并行算法的线程块之间的同步。常规的编程模型提供了用于同步协作线程的单个简单构造:跨线程块的所有线程的屏障(例如syncthreads()函数)。然而,程序员经常愿意以集体组范围的函数接口的形式定义小于线程块粒度的线程组,并且在定义的组内同步以便允许实现更大的性能、设计灵活性和软件重用。
协作组使得程序员能够以子块和多块粒度显式地定义线程组(如和单个线程一样小),并且在协作组中的线程上执行诸如同步之类的集体操作。该编程模型支持跨软件边界的清洁组成,使得库和实用函数可以在其局部上下文内安全地同步而不必做出关于聚合的假设。协作组基元允许实现新的协作并行模式,包括生产者消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
每个处理单元包括大量(例如128等等)的不同处理核心(例如功能单元),这些处理核心可以是完全管线化的、单精度的、双精度的和/或混合精度的,并且包括浮点算术逻辑单元和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的IEEE754-2008标准。在一个实施例中,所述核心包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心。
张量核心被配置为执行矩阵运算。特别地,张量核心被配置为执行深度学习矩阵算术,例如GEMM(矩阵-矩阵乘法),用于神经网络训练和推理期间的卷积运算。在一个实施例中,每个张量核心在4x4矩阵上运算,并且执行矩阵乘法和累加运算,D=A’B+C,其中A、B、C和D为4x4矩阵。
在一个实施例中,矩阵乘法输入A和B可以为整数、定点或浮点矩阵,而累加矩阵C和D可以是相等或更高位宽的整数、定点或浮点矩阵。在一个实施例中,张量核心采用32位整数累加在1位、4位或8位整数输入数据上运算。8位整数矩阵乘法需要1024次运算,并且导致全精度乘积,该全精度乘积然后使用32位整数加法与其他中间乘积累加,以用于8x8x16矩阵乘法。在一个实施例中,张量核心利用32位浮点累加在16位浮点输入数据上运算。16位浮点乘法要求64次运算,并且导致全精度乘积,该乘积然后使用32位浮点加法与其他中间乘积累加以用于4x4x4矩阵乘法。在实践中,张量核心用于执行由这些较小的元素组成的大得多的二维或更高维矩阵运算。诸如CUDA9C++API之类的API公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作以便高效地使用于自CUDA-C++程序的张量核心。在CUDA层级,线程束级别的接口采取跨越线程束的所有32个线程的16x16大小的矩阵。
每个处理单元也可以包括执行特殊功能(例如属性评估、平方根倒数等等)的M个特殊功能单元(SFU)。在一个实施例中,SFU可以包括被配置为遍历层级树数据结构的树遍历单元。在一个实施例中,SFU可以包括被配置为执行纹理图滤波操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器404中加载纹理图(例如2D纹元阵列),并且对这些纹理图采样以便产生采样的纹理值以用于处理单元执行的着色器程序。在一个实施例中,纹理图存储在可以包括或包含L1高速缓存的共享存储器中。纹理单元使用mip图(例如细节水平变化的纹理图)实现诸如滤波操作之类的纹理操作。在一个实施例中,每个处理单元包括两个纹理单元。
每个处理单元也包括在共享存储器与寄存器文件之间实现加载和存储操作的N个加载存储单元(LSU)。每个处理单元包括将所述核心中的每一个连接到寄存器文件以及将LSU连接到寄存器文件、共享存储器的互连网络。在一个实施例中,互连网络是一种交叉开关,其可以被配置为将任何所述核心连接到寄存器文件中的任何寄存器并且将LSU连接到寄存器文件和共享存储器中的存储器位置。
共享存储器是允许数据存储以及处理单元之间和处理单元内的线程之间通信的片上存储器阵列。在一个实施例中,共享存储器包括128KB存储容量,并且处于从每个所述处理单元到存储器分区单元480的路径上。共享存储器可以用于缓存读和写。共享存储器、L1高速缓存、L2高速缓存和存储器404中的一个或更多个为后备仓。
将数据高速缓存和共享存储器功能结合到单个存储器块中对于两种类型的存储器访问提供了最佳的总体性能。所述容量可以由不使用共享存储器的程序用作高速缓存。例如,如果共享存储器被配置为使用一半的容量,那么纹理和加载/存储操作可以使用剩余的容量。整合到共享存储器内使得共享存储器能够用作用于流式数据的高吞吐量导管,同时提供对于频繁重用的数据的高带宽和低延迟访问。
当被配置用于通用并行计算时,可以使用与图形计算相比更简单的配置。特别地,绕过固定功能图形处理单元,创建简单得多的编程模型。在该通用并行计算配置中,工作分配单元425将线程块直接分派和分配给GPC450内的处理单元。线程在计算中使用唯一线程ID执行相同的程序以便确保每个线程使用执行程序和执行计算的处理单元、在线程之间通信的共享存储器以及通过共享存储器和存储器分区单元480读写全局存储器的LSU生成唯一的结果。当被配置用于通用并行计算时,处理单元也可以写入命令,调度器单元420可以使用所述命令启动处理单元上的新工作。
PPU400中的每一个可以包括诸如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、射线追踪(RT)核心、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连高速(PCIe)元件和/或类似物之类的一个或更多个处理核心和/或其组件和/或被配置为执行其功能。
PPU400可以包括在台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如无线、手持式设备)、个人数字助理(PDA)、数字照相机、车辆、头戴式显示器、手持式电子设备等等内。在一个实施例中,PPU400在单个半导体衬底上实施。在另一个实施例中,PPU400与诸如附加的PPU400、存储器404、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等等之类的一个或更多个其他设备一起包括在片上系统(SoC)内。
在一个实施例中,PPU400可以包括在包括一个或更多个存储器设备的图形卡上。该图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU400可以是包括在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。在又一个实施例中,PPU400可以在可重新配置的硬件中实现。在又一个实施例中,PPU400的部分可以在可重新配置的硬件中实现。
示例性计算系统
随着开发人员在诸如人工智能计算之类的应用中公开和利用更多的并行性,具有多个GPU和CPU的系统被用于各行各业中。具有数十至数千个计算节点的高性能GPU加速系统部署在数据中心、研究设施和超级计算机中以解决越来越大的问题。随着高性能系统内的处理设备数量的增多,通信和数据传输机制需要扩展以支持增大的带宽。
图5A为根据一个实施例的、使用图4的PPU400实现的处理系统500的概念图。示例性系统500可以被配置为实现图1B中示出的方法150和/或图3B中示出的方法350。处理系统500包括CPU530、交换机510和多个PPU400以及各个存储器404。
NVLink410提供每个所述PPU400之间的高速通信链路。尽管图5B中图示了具体数量的NVLink410和互连402连接,但是到每个PPU400和CPU530的连接的数量可以变化。交换机510在互连402与CPU530之间形成接口。PPU400、存储器404和NVLink410可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两种或更多种协议以在各个不同的连接和/或链路之间形成接口。
在另一个实施例(未示出)中,NVLink410提供每个PPU400与CPU530之间的一个或更多个高速通信链路,并且交换机510在互连402与每个PPU400之间形成接口。PPU400、存储器404和互连402可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连402提供每个PPU400与CPU530之间的一个或更多个通信链路,并且交换机510使用NVLink410在每个PPU400之间形成接口以便提供PPU400之间的一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink410通过交换机510提供PPU400与CPU530之间的一个或更多个高速通信链路。在又一个实施例(未示出)中,互连402直接提供每个PPU400之间的一个或更多个通信链路。NVLink410高速通信链路中的一个或更多个可以使用与NVLink410相同的协议实现为物理NVLink互连或片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的基于半导体的单一集成电路。应当指出,术语单个半导体平台也可以指具有增多的连接性的多芯片模块,其模拟片上操作并且相对于利用常规总线实现方式做出了重大的改进。当然,所述各个不同的电路或设备也可以按照用户的愿望单独地位于半导体平台中或位于其各种不同的组合中。可替换地,并行处理模块525可以实现为电路板衬底,并且每个PPU400和/或存储器404可以为封装设备。在一个实施例中,CPU530、交换机510和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink410的信令速率为20-25千兆比特/秒,并且每个PPU400包括六个NVLink410接口(如图5A中所示,对于每个PPU400包括五个NVLink410接口)。每个NVLink410在每个方向提供25千兆字节/秒的数据传输速率,六个链路提供400千兆字节/秒。NVLink410可以如图5A所示排他性地用于PPU到PPU通信,或在CPU530也包括一个或更多个NVLink410接口时,用于PPU到PPU和PPU到CPU的某种组合。
在一个实施例中,NVLink410允许从CPU530到每个PPU400的存储器404的直接加载/存储/原子访问。在一个实施例中,NVLink410支持一致性操作,允许从存储器404读取的数据存储在CPU530的高速缓存层级结构中,降低了CPU530的高速缓存访问延迟。在一个实施例中,NVLink410包括对于地址转化服务(ATS)的支持,允许PPU400直接访问CPU530内的页面表。NVLink410中的一个或更多个也可以被配置为操作于低功率模式。
图5B图示了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统565。示例性系统565可以被配置为实现图1B中示出的方法150和/或图3B中示出的方法350。
如图所示,提供了一种系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以直接或间接地耦合以下设备中的一个或更多个:主存储器540,网络接口535,CPU530,显示设备545,输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何适当的协议实现,并且可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一种或多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连高速(PCIe)总线、超级传输和/或另一种类型的总线或链路。在一些实施例中,存在组件之间的直接连接。作为一个示例,CPU530可以直接连接到主存储器540。此外,CPU530可以直接连接到并行处理系统525。在存在组件之间的直接或点对点连接的情况下,通信总线575可以包括实现该连接的PCIe链路。在这些示例中,PCI总线不必包括在系统565中。
尽管利用线条将图5B的不同方框示为经由通信总线575连接,但是这并不预期是限制性的并且只是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是I/O组件,例如输入设备560(例如如果显示器为触摸屏的话)。作为另一个示例,CPU530和/或并行处理系统525可以包括存储器(例如,主存储器540可以表示除了并行处理系统525、CPU530之外的存储设备,和/或其他组件)。换言之,图5B的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都预期处于图5B的计算设备的范围内。
系统565也包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,该主存储器可以采取各种各样的计算机可读介质的形式。计算机可读介质可以是可以被系统565访问的任何可用的介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括以任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息。例如,主存储器540可以存储诸如操作系统之类的计算机可读指令(例如,其表示程序和/或程序元素)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可以用于存储希望的信息以及可以被系统565访问的任何其他介质。当在本文使用时,计算机存储介质不包括信号本身。
计算机存储介质可以在诸如载波或其他传输机制之类的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
当被执行时,计算机程序使得系统565能够执行各种功能。CPU530可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU530中的每一个可以包括能够同时处理众多软件线程的一个或更多个核心(例如一个、两个、四个、八个、二十八个、七十二个等等)。取决于实现的系统565的类型,CPU530可以包括任何类型的处理器,并且可以包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器,以及用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或诸如数学协处理器之类的补充协处理器之外,系统565可以包括一个或更多个CPU530。
除了CPU530之外或可替换地,并行处理模块525可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。并行处理模块525可以由系统565用于渲染图形(例如3D图形)或执行通用计算。例如,并行处理模块525可以用于GPU上的通用计算(GPGPU)。在实施例中,CPU530和/或并行处理模块525可以分立地或联合地执行所述方法、过程和/或其部分的任意组合。
系统565也包括输入设备560、并行处理系统525和显示设备545。显示设备545可以包括显示器(例如监视器、触摸屏、电视屏、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。显示设备545可以接收来自其他组件(例如并行处理系统525、CPU530等等)的数据,并且输出该数据(例如图像、视频、声音等等)。
网络接口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也可以包括辅助存储装置(未示出)。辅助存储装置包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、紧密盘驱动器、数字多功能盘(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)或设备、视频播放器、视频照相机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、器具、消费电子设备、工作站、边缘设备、这些划定的设备的任意组合或任何其他适当的设备。
机器学习
诸如PPU400之类的处理器上开发的深度神经网络(DNN)已经用于从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像配字幕到视频聊天应用中的智能实时语言翻译的多种多样的用例。深度学习是一种对人脑的神经学习过程进行建模的技术,其不断地学习、不断地变得更聪明并且随着时间的推移更快速地输送更精确的结果。小孩最初由成年人教导对各种不同的形状进行正确的标识和分类,最终能够在没有任何指导的情况下标识形状。类似地,深度学习或神经学习系统需要在对象识别和分类中进行训练,以便它在标识基本的对象、被遮挡的对象等等方面变得更聪明和更高效,同时也将上下文赋予对象。
在最简单的水平下,人脑中的神经元观看接收的各种输入,重要性水平被赋予这些输入中的每一个,并且输出传递至其他神经元以做出反应。人工神经元或感知机是神经网络的最基本模型。在一个示例中,感知机可以接收一个或更多个输入,所述输入表示感知机正被训练对其识别和分类的对象的各种特征,并且这些特征中的每一个基于在定义对象的形状中该特征的重要性而被赋予某个权重。
深度神经网络(DNN)模型包括多层许多连接的节点(例如感知机、玻尔兹曼机、径向基函数、卷积层等等),其可以利用巨量的输入数据进行训练以便以高精度快速地解决复杂的问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为不同的片段并且寻找诸如线条和角之类的基本图案。第二层组装这些线条以便寻找诸如轮子、风挡和镜子之类的更高水平的图案。下一层标识车辆的类型,并且最终几层生成用于输入图像的标记,标识特定汽车品牌的型号。
一旦训练了DNN,DNN就可以被部署且用于在称为推理的过程中对对象或图案进行标识和分类。推理(DNN通过其从给定输入中提取有用信息的过程)的示例包括标识存入ATM机的支票上的手写数字,标识照片中朋友的图像,将电影推荐输送至超过五千万用户,在无人驾驶汽车中对不同类型的汽车、行人和道路危险进行标识和分类,或实时地翻译人类语言。
在训练期间,数据在前向传播阶段中流经DNN,直到产生指示与输入相应的标记的预测。如果神经网络没有正确地标记输入,那么对正确标记与预测的标记之间的误差进行分析,并且在反向传播阶段期间针对每个特征调节所述权重,直到DNN正确地标记所述输入以及训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括PPU400支持的浮点乘法和加法。推理的计算密集程度低于训练,是个延迟敏感过程,其中将训练的神经网络应用到它之前没有见过的新输入以便对图像分类,检测情绪,标识推荐,识别和翻译语言,并且通常推理出新信息。
神经网络严重依赖于矩阵数学运算,并且为了效率和速率二者,复杂的多层网络需要巨量的浮点性能和带宽。利用针对矩阵数学运算优化的且提供数十至数百TFLOPS的性能的数千个处理核心,PPU400是一种能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。
此外,应用本文公开的技术中的一种或更多种生成的图像可以用于训练、测试或认证用于识别真实世界中的对象和环境的DNN。这样的图像可以包括车行道、工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理对象或真实世界环境的场景。这样的图像可以用于训练、测试或认证在机器或机器人中被采用于操控、处理或修改真实世界中的物理对象的DNN。此外,这样的图像可以用于训练、测试或认证在自主车辆中被采用于在真实世界中导航和移动车辆的DNN。此外,应用本文公开的技术中的一种或多种生成的图像可以用于将信息传达至这样的机器、机器人和车辆的用户。
图5C示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。如将要讨论的,可以由可以在单个实体或多个实体的控制下的单个计算系统或计算设备和资源的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求各个方面。在至少一个实施例中,可以由与供应商环境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。在一个实施例中,存储器562包括逻辑基础层130和存储器系统225在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(CPU)。但是,如上所述,此类环境中的资源可以利用GPU来处理用于至少某些类型的请求的数据。诸如PPU300之类的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可以从包括二元分类、多类分类、生成式和回归模型的机器学习模型集中进行选择。在至少一个实施例中,要使用的模型类型可以至少部分地取决于要预测的目标类型。
图形处理管线
在一个实施例中,PPU400包括图形处理单元(GPU)。PPU400被配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以被定义为诸如点、线、三角形、四边形、三角形带等等之类的图元集。典型地,图元包括指定用于该图元的顶点的数量(例如在模型-空间坐标系统中)以及与该图元的每个顶点关联的属性的数据。PPU400可以被配置为处理图形图元以生成帧缓冲区(例如用于显示器的像素中的每一个的像素数据)。
应用程序将用于场景的模型数据(例如属性和顶点集合)写入诸如系统存储器或存储器404之类的存储器。模型数据定义了可能在显示器上可见的对象中的每一个。然后,应用程序对驱动程序内核进行API调用,其请求渲染和显示该模型数据。驱动程序内核读取该模型数据,并且将命令写入所述一个或更多个流以便执行处理该模型数据的操作。这些命令可以引用要在PPU400内的处理单元上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或更多个。例如,所述处理单元中的一个或更多个可以被配置为执行顶点着色器程序,其处理模型数据定义的若干顶点。在一个实施例中,这些不同的处理单元可以被配置为并发地执行不同的着色器程序。例如,第一处理单元子集可以被配置为执行顶点着色器程序,而第二处理单元子集可以被配置为执行像素着色器程序。第一处理单元子集处理顶点数据以产生处理的顶点数据,并且将处理的顶点数据写入L2高速缓存460和/或存储器404。在处理的顶点数据被光栅化(例如从三维数据变换为屏幕空间中的二维数据)以产生片段数据之后,第二处理单元子集执行像素着色器以产生处理的片段数据,其然后与其他处理的片段数据混合并且写入存储器404中的帧缓冲区。顶点着色器程序和像素着色器程序可以并发地执行,以流水线方式处理来自相同场景的不同数据,直到该场景的所有模型数据都被渲染到帧缓冲区。然后,将帧缓冲区的内容传输至显示控制器以便在显示设备上显示。
应用本文公开的技术中的一种或更多种生成的图像可以在监视器或其他显示设备上显示。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接耦合到系统或处理器。这样的网络的示例包括因特网、移动电信网络、WIFI网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,系统或处理器生成的图像可以通过网络流式传输至显示设备。这样的流式传输允许例如渲染图像的视频游戏或其他应用程序在服务器、数据中心上或基于云的计算环境中执行,并且渲染的图像被传输和显示于与服务器或数据中心物理上分开的一个或更多个用户设备(例如计算机、视频游戏控制台、智能电话、其他移动设备等等)上。因此,本文公开的技术可以应用于增强被流式传输的图像,并且增强流式传输图像的服务,例如NVIDIAGeForceNow(GFN)、GoogleStadia等等。
示例流式系统
图6为根据本公开一些实施例的流式系统605的示例系统示意图。图6包括服务器603(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)、客户端604(其可以包括与图5A的示例处理系统500和/或图5B的示例性系统565相似的组件、特征和/或功能)和网络606(其可以与本文描述的网络相似)。在本公开的一些实施例中,系统605可以被实现。
在一个实施例中,流式系统605为游戏流式系统,并且服务器604为游戏服务器。在系统605中,对于游戏会话,客户端设备604可以响应于输入设备626的输入而仅仅接收输入数据,将输入数据发送至服务器603,接收来自服务器603的编码的显示数据,并且在显示器624上显示该显示数据。这样,计算强度更高的计算和处理被卸载到服务器603(例如游戏会话的图形输出的渲染,尤其是光线或路径追踪,由服务器603的GPU615执行)。换言之,游戏会话从服务器603流式传输至客户端设备604,从而降低客户端设备604对于图形处理和渲染的要求。
例如,关于游戏会话的实例化,客户端设备604可以基于接收到来自服务器603的显示数据而正在显示器624上显示游戏会话的帧。客户端设备604可以接收输入设备之一的输入,并且作为响应生成输入数据。客户端设备604可以经由通信接口621且通过网络606(例如因特网)将输入数据发送至服务器603,并且服务器603可以经由通信接口618接收该输入数据。CPU608可以接收输入数据,处理输入数据,并且将数据发送至GPU615,该数据使得GPU615生成游戏会话的渲染。例如,输入数据可以表示游戏中用户角色的运动,发射武器、重新装弹、传球、使车辆转向等等。渲染组件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 (21)

1.一种系统,包括:
处理器,其耦合到封装内的基础层,所述封装包围所述处理器和所述基础层;以及
所述基础层,其包括耦合在所述处理器和存储器系统之间的存储器管理逻辑,其中所述存储器管理逻辑处理从所述处理器接收到的存储器访问请求,并且其中所述存储器系统包括:
至少一个存储器堆栈,其被包围在所述封装内并直接耦合到所述基础层;以及
至少一个存储器设备,其位于所述封装外部并且耦合到所述封装。
2.如权利要求1所述的系统,其中所述存储器管理逻辑根据接口映射转换与存储器访问请求相关联的每个地址,以将所述存储器访问请求发送到所述至少一个存储器堆栈或所述至少一个存储器设备中的一个。
3.如权利要求1所述的系统,其中远端存储器池仅包括至少一个存储器设备中的位置。
4.如权利要求1所述的系统,其中近端存储器池包括所述至少一个存储器堆栈中的第一位置和所述至少一个存储器设备中的第二位置。
5.如权利要求4所述的系统,其中所述第一位置和所述第二位置根据由所述存储器管理逻辑执行的地址映射而在所述近端存储器池内交错。
6.如权利要求4所述的系统,其中所述存储器管理逻辑响应于触发器将存储在所述至少一个存储器设备中的未被包括在所述近端存储器池中的第三位置中的第一数据迁移到所述近端存储器池。
7.如权利要求6所述的系统,其中在处理至少一个额外的存储器访问请求时,所述第一数据的部分被从所述第三位置复制到所述第一存储器池。
8.如权利要求6所述的系统,其中所述存储器管理逻辑更新所述第一数据的地址映射,以指示所述第一数据被存储在所述第一存储器池中。
9.如权利要求6所述的系统,其中所述存储器管理逻辑将存储在所述第一存储器池中的数据迁移到所述至少一个存储器设备中的未被包括在所述第一存储器池中的第四位置,并更新地址映射以指示所述数据被存储在所述第四位置中。
10.如权利要求1所述的系统,其中所述至少一个存储器堆栈的容量小于所述至少一个存储器设备的容量。
11.如权利要求1所述的系统,其中所述至少一个存储器堆栈的数据传输速率大于所述至少一个存储器设备的数据传输速率。
12.如权利要求1所述的系统,其中响应于第一存储器访问请求,存储在所述至少一个存储器堆栈和所述至少一个存储器设备中的数据通过所述处理器和所述基础层之间的连接而被发送。
13.如权利要求1所述的系统,其中所述至少一个存储器设备通过第一接口被耦合到所述基础层,并且所述存储器系统还包括至少一个额外的存储器设备,其位于所述封装的外部并通过与所述第一接口分离的第二接口耦合至所述基础层。
14.如权利要求1所述的系统,其中所述处理器的至少一部分被包括在虚拟机中。
15.如权利要求1所述的系统,其中所述处理器是服务器或数据中心的一部分,并且存储在所述存储器系统中的数据被流式传输至用户设备。
16.如权利要求1所述的系统,其中所述处理器生成用于训练、测试或证明在机器、机器人或自动驾驶车辆中采用的神经网络的数据。
17.如权利要求1所述的系统,其中所述处理器的至少一部分被包括在云计算环境中。
18.一种基础层,其被包围在封装内,所述基础层包括:
第一接口,其用于将被包围在所述封装内的处理器直接耦合到所述基础层;
存储器管理逻辑,其耦合在所述接口和用于处理在所述接口处接收的存储器访问请求的存储器系统之间;
至少一个存储器堆栈,其被包围在所述封装内并直接耦合到所述基础层;以及
第二接口,其用于将存储器访问请求发送到位于所述封装外部的至少一个存储器设备。
19.如权利要求18所述的基础层,其中响应于从所述处理器接收到的存储器访问请求,在所述存储器管理逻辑以及所述至少一个存储器堆栈和所述至少一个存储器设备两者之间传输数据。
20.一种方法,其包括:
从耦合到封装内的基础层的处理器接收存储器访问请求;以及
由被制造在所述基础层内并且被耦合在所述处理器和存储器系统之间的存储器管理逻辑通过以下步骤处理所述存储器访问请求:
发送所述存储器访问请求的第一部分到至少一个存储器堆栈,所述至少一个存储器堆栈被包围在所述封装内并直接耦合至所述基础层;以及
发送所述存储器访问请求的第二部分到至少一个存储器设备,所述至少一个存储器设备位于所述封装的外部并通过第一连接被耦合到所述封装。
21.如权利要求20所述的方法,其中所述存储器管理逻辑根据接口映射转换与存储器访问请求相关联的每个地址,以将所述存储器访问请求发送到所述至少一个存储器堆栈或所述至少一个存储器设备中的一个。
CN202210393072.1A 2021-04-22 2022-04-14 封装上和封装外组合存储器系统 Pending CN115240726A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/237,165 2021-04-22
US17/237,165 US11789649B2 (en) 2021-04-22 2021-04-22 Combined on-package and off-package memory system

Publications (1)

Publication Number Publication Date
CN115240726A true CN115240726A (zh) 2022-10-25

Family

ID=83667977

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210393072.1A Pending CN115240726A (zh) 2021-04-22 2022-04-14 封装上和封装外组合存储器系统

Country Status (3)

Country Link
US (1) US11789649B2 (zh)
CN (1) CN115240726A (zh)
DE (1) DE102022108109A1 (zh)

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857210A (en) 1997-06-26 1999-01-05 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including read and write barriers associated with an instance of a partially relocated object
US5873104A (en) 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object
US5873105A (en) 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
US7948896B2 (en) * 2005-02-18 2011-05-24 Broadcom Corporation Weighted-fair-queuing relative bandwidth sharing
US8130648B2 (en) * 2006-01-04 2012-03-06 Broadcom Corporation Hierarchical queue shaping
US9092327B2 (en) * 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9391915B2 (en) * 2013-06-20 2016-07-12 Microsoft Technology Licensing, Llc Controlling bandwidth across multiple users for interactive services
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US9535831B2 (en) 2014-01-10 2017-01-03 Advanced Micro Devices, Inc. Page migration in a 3D stacked hybrid memory
WO2016122662A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Memory network to prioritize processing of a memory access request
US10558570B2 (en) * 2016-03-14 2020-02-11 Intel Corporation Concurrent accesses of asymmetrical memory sources
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10120749B2 (en) * 2016-09-30 2018-11-06 Intel Corporation Extended application of error checking and correction code in memory
US10331566B2 (en) * 2016-12-01 2019-06-25 International Business Machines Corporation Operation of a multi-slice processor implementing adaptive prefetch control
US11601523B2 (en) * 2016-12-16 2023-03-07 Intel Corporation Prefetcher in multi-tiered memory systems
US20180285252A1 (en) * 2017-04-01 2018-10-04 Intel Corporation Optimized memory access bandwidth devices, systems, and methods for processing low spatial locality data
US10339067B2 (en) * 2017-06-19 2019-07-02 Advanced Micro Devices, Inc. Mechanism for reducing page migration overhead in memory systems
US10083891B1 (en) * 2017-10-20 2018-09-25 Globalfoundries Inc. Memory having thermoelectric heat pump and related IC chip package and method
US10593380B1 (en) * 2017-12-13 2020-03-17 Amazon Technologies, Inc. Performance monitoring for storage-class memory
US10713173B2 (en) * 2018-09-06 2020-07-14 Intel Corporation Memory controller with pre-loader
CN110731012B (zh) * 2019-04-15 2021-01-29 长江存储科技有限责任公司 具有处理器和异构存储器的一体化半导体器件及其形成方法
KR20200122118A (ko) * 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 이의 동작 방법
US20220197811A1 (en) * 2019-05-03 2022-06-23 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Method and apparatus for replacing data from near to far memory over a slow interconnect for oversubscribed irregular applications
US10790039B1 (en) * 2019-09-26 2020-09-29 Micron Technology, Inc. Semiconductor device having a test circuit
KR20210039744A (ko) * 2019-10-02 2021-04-12 삼성전자주식회사 두꺼운 금속층을 갖는 반도체 소자들
US20200136943A1 (en) * 2019-12-27 2020-04-30 Intel Corporation Storage management in a data management platform for cloud-native workloads
US20210245047A1 (en) * 2020-02-10 2021-08-12 Intel Corporation Continuum architecture for cloud gaming
US20200226066A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Apparatus and method for efficient management of multi-level memory
KR20210143611A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
US11994932B2 (en) * 2020-06-21 2024-05-28 Intel Corporation Platform ambient data management schemes for tiered architectures
US11210218B1 (en) * 2020-09-03 2021-12-28 Microsoft Technology Licensing, Llc Addressing for disaggregated memory pool
US20210318929A1 (en) * 2021-06-23 2021-10-14 Intel Corporation Application aware memory patrol scrubbing techniques
US20220050722A1 (en) * 2021-10-29 2022-02-17 Intel Corporation Memory pool management

Also Published As

Publication number Publication date
US20230393788A1 (en) 2023-12-07
US11789649B2 (en) 2023-10-17
DE102022108109A1 (de) 2022-11-24
US20220342595A1 (en) 2022-10-27

Similar Documents

Publication Publication Date Title
US20220044075A1 (en) Neural network model trained using generated synthetic images
US10810784B1 (en) Techniques for preloading textures in rendering graphics
US20230052645A1 (en) Multiresolution hash encoding for neural networks
US11977766B2 (en) Hierarchical network for stacked memory system
US20230062503A1 (en) Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity
US20220391781A1 (en) Architecture-agnostic federated learning system
CN110908929B (zh) 用于高带宽缩放的一致数据高速缓存
US11522565B2 (en) Packed error correction code (ECC) for compressed data protection
US20230081641A1 (en) Single-image inverse rendering
US11282258B1 (en) Adaptive sampling at a target sampling rate
US11620169B2 (en) Barrierless and fenceless shared memory synchronization with write flag toggling
US11830145B2 (en) Generation of differentiable, manifold meshes of arbitrary genus
US11925860B2 (en) Projective hash maps
US12001725B2 (en) Combined on-package and off-package memory system
US11789649B2 (en) Combined on-package and off-package memory system
US11595152B1 (en) Forward error correction encoding using binary clustering
US20230275068A1 (en) Memory stacked on processor for high bandwidth
US20230315651A1 (en) Application partitioning for locality in a stacked memory system
US11689750B2 (en) Workload-based dynamic throttling of video processing functions using machine learning
US20230111375A1 (en) Augmenting and dynamically configuring a neural network model for real-time systems
US20240127067A1 (en) Sharpness-aware minimization for robustness in sparse neural networks
US20240104842A1 (en) Encoder-based approach for inferring a three-dimensional representation from an image
US20230316631A1 (en) Noise-free differentiable ray casting
US12008475B2 (en) Transposed sparse matrix multiply by dense matrix for neural network training
US20230306678A1 (en) Novel view synthesis using attribute correspondences and geometric relationship constraints

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