CN114144797A - 小芯片集成的机器学习加速器 - Google Patents
小芯片集成的机器学习加速器 Download PDFInfo
- Publication number
- CN114144797A CN114144797A CN202080052852.9A CN202080052852A CN114144797A CN 114144797 A CN114144797 A CN 114144797A CN 202080052852 A CN202080052852 A CN 202080052852A CN 114144797 A CN114144797 A CN 114144797A
- Authority
- CN
- China
- Prior art keywords
- chiplet
- cache
- machine learning
- memory
- processing core
- 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
- 238000010801 machine learning Methods 0.000 title claims abstract description 86
- 230000015654 memory Effects 0.000 claims abstract description 109
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000009877 rendering Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 238000000844 transformation Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000011248 coating agent Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/045—Combinations of networks
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
Abstract
提供了用于执行机器学习操作的技术。所述技术包括:将第一小芯片的第一部分配置为高速缓存;经由所述第一部分执行高速缓存操作;将所述小芯片的所述第一部分的至少第一子部分配置为可直接访问的存储器;以及由所述第一小芯片内的机器学习加速器用所述第一子部分执行机器学习操作。
Description
相关申请的交叉引用
本申请要求2019年7月22日提交的名称为“CHIPLET APPRO ACH FOR COUPLINGGPU WITH MACHINE LEARNING ACCE LERATION AT HIGH POWER EFFICIENCY”的美国临时申请号62/877,241的优先权权益,该申请以引用方式并入,如同在本文中充分地阐述。本申请要求2019年7月22日提交的名称为“HIGH BW IN TER-CONNECTED CHIPLETS AND GPU FORHIGH PERFORM ANCE GAMING AND MACHINE LEARNING WORKLOADS”的美国临时申请号62/877,249的优先权权益,该申请以引用方式并入,如同在本文中充分地阐述。本申请要求2020年7月20日提交的名称为“CHIPLET-INTEGRATED MACHINE LEARNING ACCELERAT ORS”的美国非临时申请号16/933,863的优先权权益,该申请以引用方式并入,如同在本文中充分地阐述。
背景技术
机器学习是迅速地发展的领域。用于机器学习操作(诸如训练和推断)的硬件正在不断地改善。
附图说明
可从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:
图1是可实现本公开的一个或多个特征的示例装置的框图;
图2示出了根据示例的图1的装置的细节;
图3是示出图2所示的图形处理流水线的附加细节的框图;
图4表示根据示例的APD的框图,示出了高速缓存/机器学习加速器小芯片;
图5示出了根据示例的高速缓存/机器学习加速器小芯片的细节;并且
图6是根据示例的用于用小芯片执行机器学习操作的方法的流程图。
具体实施方式
提供了用于执行机器学习操作的技术。所述技术包括:将第一小芯片的第一部分配置为高速缓存;经由所述第一部分执行高速缓存操作;将所述小芯片的所述第一部分的至少第一子部分配置为可直接访问的存储器;以及由所述第一小芯片内的机器学习加速器用所述第一子部分执行机器学习操作。
图1是可实现本公开的一个或多个特征的示例装置100的框图。装置100可以是例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话、平板计算机或其他计算装置中的一者但不限于此。装置100包括处理器102、存储器104、存储设备106、一个或多个输入装置108,以及一个或多个输出装置110。装置100还包括一个或多个输入驱动器112和一个或多个输出驱动器114。输入驱动器112中的任一者体现为硬件、硬件和软件的组合、或软件,并且用于控制输入装置112的目的(例如,控制操作、从输入驱动器112接收输入以及向输入驱动器提供数据)。类似地,输出驱动器114中的任一者体现为硬件、硬件和软件的组合、或软件,并且用于控制输出装置的目的(例如,控制操作、从输出驱动器114接收输入以及向输出驱动器提供数据)。应理解,装置100可包括图1中未示出的附加部件。
在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或者一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。在各种替代方案中,存储器104与处理器102位于同一管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储设备106包括固定的或可移除的存储设备,例如但不限于硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112和输出驱动器114包括一个或多个硬件、软件和/或固件部件,所述一个或多个硬件、软件和/或固件部件被配置为分别与输入装置108和输出装置110介接并驱动所述输入装置和输出装置。输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102将输出发送到输出装置110。输出驱动器114包括加速处理装置(“APD”)116,该加速处理装置耦合到显示装置118,在一些示例中,该显示装置是使用远程显示协议来示出输出的物理显示装置或模拟装置。APD 116被配置为接受来自处理器102的计算命令和图形渲染命令,处理那些计算命令和图形渲染命令,并且向显示装置118提供像素输出以用于显示。如下面进一步详细地描述,APD 116包括一个或多个并行处理单元,所述一个或多个并行处理单元被配置为根据单指令多数据(“SIMD”)范例执行计算。因此,虽然本文中将各种功能描述为由APD 116执行或结合该APD来执行,但是在各种替代方案中,被描述为由APD 116执行的功能另外地或替代地由具有类似功能的其他计算装置执行,所述其他计算装置未被主机处理器(例如,处理器102)驱动并且未被配置为向显示装置118提供图形输出。例如,设想的是,根据SIMD范例执行处理任务的任何处理系统可被配置为执行本文所描述的功能。替代地,设想的是,不根据SIMD范例执行处理任务的计算系统执行本文所描述的功能。
图2示出了根据示例的装置100和APD 116的细节。处理器102(图1)执行操作系统120、驱动器122和应用程序126,并且替代地或另外地,还可执行其他软件。操作系统120控制装置100的各种方面,诸如管理硬件资源、处理服务请求、调度和控制过程执行以及执行其他操作。APD驱动器122控制APD 116的操作,将诸如图形渲染任务或其他工作的任务发送给APD 116以进行处理。APD驱动器122还包括即时编译器,该即时编译器编译程序以由APD116的处理部件(诸如,在下面进一步详细地讨论的SIMD单元138)执行。
APD 116执行有关选定功能的命令和程序,诸如可适合于进行并行处理的图形操作和非图形操作。APD 116可用于基于从处理器102接收的命令来执行图形流水线操作,诸如像素操作、几何计算,以及将图像渲染到显示装置118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。在一些示例中,通过在SIMD单元138上执行计算着色器来执行这些计算处理操作。
APD 116包括计算单元132,所述计算单元包括一个或多个SIMD单元138,所述一个或多个SIMD单元被配置为根据SIMD范例以并行方式在处理器102(或另一个单元)的请求下执行操作。SIMD范例是这样一种范例:多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够用不同的数据执行该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行同一指令,但是可用不同的数据执行该指令。如果并非所有通道都需要执行给定指令,则可利用断言关闭通道。断言也可用于执行具有发散控制流的程序。更具体地,对于其中控制流是基于由单个通道执行的计算的具有条件分支或其他指令的程序,与当前未执行的控制流路径相对于的通道的断言以及对不同控制流路径的串行执行允许任意控制流。
计算单元132中的基本计算单元是工作项。每个工作项表示将在特定通道中并行执行的程序的单个实例。工作项可在单个SIMD处理单元138上作为“波前”同时地(或部分同时地且部分顺序地)执行。一个或多个波前被包括在“工作组”中,所述工作组包括被指定来执行同一程序的工作项集合。可通过执行构成工作组的波前中的每一者来执行工作组。在替代方案中,在单个SIMD单元138上或在不同的SIMD单元138上执行波前。波前可被视为可在单个SIMD单元138上同时地(或伪同时地)执行的最大工作项集合。在波前大于SIMD单元138中的通道数量的情况下,发生“伪同时”执行。在这种情况下,波前在多个周期内执行,而工作项的不同集合在不同周期内执行。APD调度器136被配置为执行与在计算单元132和SIMD单元138上调度各种工作组和波前相关的操作。
由计算单元132提供的并行性适合于图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以并行执行。
计算单元132还用于执行与图形不相关或不作为图形流水线134的“正常”操作的部分执行的计算任务(例如,被执行来补充针对图形流水线134的操作执行的处理的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序传输给APD116以供执行。
图3是示出图2所示的图形处理流水线134的附加细节的框图。图形处理流水线134包括级,每个级执行图形处理流水线134的特定功能。每个级被部分地或完全地实现为在可编程计算单元132中执行的着色器程序,或者被部分地或完全地实现为计算单元132外部的固定功能的非可编程硬件。
输入汇编器级302从用户填充的缓冲器(例如,在由处理器102执行的软件(诸如应用程序126)的请求下填充的缓冲器)中读取图元数据,并且将数据汇编成图元以供流水线的剩余部分使用。输入汇编器级302可基于用户填充的缓冲器中包括的图元数据来生成不同类型的图元。输入汇编器级302将汇编的图元格式化以供流水线的其余部分使用。
顶点着色器级304处理由输入汇编器级302汇编的图元的顶点。顶点着色器级304执行各种逐顶点操作,诸如变换、蒙皮、变形和逐顶点照明。变换操作包括用于变换顶点坐标的各种操作。这些操作包括修改顶点坐标的建模变换、查看变换、投影变换、透视除法和视口变换中的一者或多者,以及修改非坐标属性的其他操作。
顶点着色器级304被部分地或完全地实现为将在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供,并且基于由计算机程序员预先编写的程序。驱动器122对这种计算机程序进行编译,以生成具有适于在计算单元132内执行的格式的顶点着色器程序。
外壳着色器级306、曲面细分器级308和域着色器级310一起协作以实现曲面细分,这通过将图元细分来将简单的图元转换成更复杂的图元。外壳着色器级306基于输入图元而生成用于曲面细分的补片。曲面细分器级308生成用于补片的一组样本。域着色器级310计算对应于补片的样本的顶点的顶点位置。外壳着色器级306和域着色器级310可被实现为将在计算单元132上执行的着色器程序,所述着色器程序由驱动器122编译,与顶点着色器级304一样。
几何着色器级312逐个图元地执行顶点操作。多种不同类型的操作可由几何着色器级312执行,包括诸如点精灵扩展、动态粒子系统操作、毛-翼片生成、阴影体生成、单程渲染到立方体贴图、逐图元材料交换和逐图元材料设置的操作。在一些实例中,由驱动器122编译且在计算单元132上执行的几何着色器程序执行几何着色器级312的操作。
光栅化器级314接受从光栅化器级314上游生成的简单图元(三角形)并进行光栅化。光栅化包括确定哪些屏幕像素(或子像素样本)被特定图元覆盖。光栅化由固定功能硬件执行。
像素着色器级316基于在上游生成的图元和光栅化的结果来计算屏幕像素的输出值。像素着色器级316可应用来自纹理存储器的纹理。像素着色器级316的操作由像素着色器程序执行,所述像素着色器程序由驱动器122编译并且在计算单元132上执行。
输出合并器级318接受来自像素着色器级316的输出,并且将那些输出合并到帧缓冲器中,从而执行诸如z测试和α混合的操作,以确定屏幕像素的最终颜色。
公开了APD 116的包括图形处理流水线134并且能够执行图形渲染的实现方式。然而,本公开的教导扩展到APD 116的不包括图形处理流水线134或不利用这种流水线来执行图形渲染的实现方式。
图4表示根据示例的APD 116的框图,示出了高速缓存/机器学习加速器小芯片404。APD 116包括关于图2描述的APD调度器136和计算单元132。APD 116还包括一个或多个高速缓存和机器学习加速器小芯片404,该一个或多个高速缓存和机器学习加速器小芯片经由APD到高速缓存接口406耦合到APD核心402并经由外部接口410耦合到其他存储器(例如,系统存储器104或APD 116的存储器)。在一些实现方式中,一个或多个小芯片404经由一个或多个小芯片内接口408连接到一个或多个其他小芯片404。
高速缓存/机器学习加速器小芯片404包括被配置为存储数据的存储器模块以及机器学习加速器。在一些实现方式中,机器学习加速器包括被配置为对输入矩阵执行矩阵乘法以提供输出结果的矩阵乘法电路。
在一些实现方式中,高速缓存/机器学习加速器小芯片404是与APD核心402分开的物理管芯。在一些实现方式中,用比用于APD核心402的制造工艺更大规模的制造工艺来制造高速缓存/机器学习加速器小芯片404。制造工艺是指制造装置特征的规模。制造工艺在本领域中有时被称为“工艺节点”。一些示例制造工艺包括10纳米(“nm”)工艺和7nm工艺。与APD核心402相比将更大的制造工艺规模用于小芯片404允许以与APD核心402相比更低的成本和更高的产量制造小芯片404,同时仍提供APD核心402的高性能。
高速缓存/机器学习加速器小芯片404的存储器模块可在被用作APD核心402的操作的高速缓存存储器与被用作存储机器学习加速器的操作的输入操作数和输出结果的存储器之间切换。更具体地,高速缓存/机器学习加速器小芯片404可在作为APD核心402的高速缓存存储器操作与作为可由例如高速缓存/机器学习加速器小芯片404的机器学习加速器访问的可直接访问的存储器操作之间配置。在一些实现方式中,APD调度器136和计算单元132中的任一者或两者能够指示高速缓存/机器学习加速器小芯片404中的任一者的任一部分作为高速缓存或作为可直接访问的存储器操作。
在一些实现方式中,APD核心402包括至少形成高速缓存分级结构的一部分的一个或多个高速缓存存储器。高速缓存分级结构还包括高速缓存/机器学习加速器小芯片404的高速缓存存储器。在一些示例中,高速缓存/机器学习加速器小芯片404的高速缓存存储器充当APD核心402的高速缓存分级结构的部分的3级高速缓存。
在一些实现方式中,高速缓存/机器学习加速器小芯片404还充当APD核心402与在存储器分级结构中比高速缓存分级结构更高的存储器(诸如专用于APD 116的存储器或系统存储器104)之间的物理接口。换句话说,高速缓存/机器学习加速器小芯片404既包含充当高速缓存分级结构中的级的存储器,又与该分级结构的其他级物理地介接,所述其他级包括APD核心402中的较低级和诸如APD 116中的存储器或系统存储器104的较高级。应注意,图4示出了连接“到存储器”的外部接口410。在各种示例中,所提及的“存储器”是APD116的通用(例如,非高速缓存)存储器或系统存储器104。因此,高速缓存/机器学习加速器小芯片404充当APD核心402内的高速缓存分级结构的部分与存储器之间的物理接口。
图5示出了根据示例的高速缓存/机器学习加速器小芯片404的细节。如图所示,高速缓存/机器学习加速器小芯片404包括多个机器学习加速器502和小芯片存储器504。在一些实现方式中,机器学习加速器502是被配置为执行矩阵乘法运算的硬件电路。
矩阵乘法运算通常用于机器学习操作,诸如执行运算来从全连接层或卷积层的层输入生成层输出。在各种示例中,APD调度器136或计算单元132中的任一者或两者能够向高速缓存/机器学习加速器小芯片404中的任一者发送命令以将数据获取到小芯片存储器504中并且经由机器学习加速器502对获取的数据执行矩阵乘法运算以输出结果。在各种示例中,高速缓存/机器学习加速器小芯片404将矩阵乘法结果存储到小芯片存储器504中。在各种示例中,高速缓存/机器学习加速器小芯片404将结果传输到外部实体(诸如APD核心402)、传输到APD 116的存储器或传输到存储器102。
在一些示例中,神经网络被实现为一系列相互连接的层。每个层从不同的层或从神经网络的输入接收一个或多个输入。不同层的计算可能由装置100的不同实体执行。在示例中,高速缓存/机器学习加速器小芯片404执行矩阵乘法或卷积运算,并且APD核心402(例如,计算单元132)执行其他计算以实现神经网络,诸如激活、批归一化或其他操作。在一些示例中,诸如APD调度器136或处理器102的协调器命令这些不同的实体执行各种操作以用神经网络执行训练或推断。例如,协调器指示高速缓存/机器学习加速器小芯片404对需要矩阵乘法的层的输入数据执行矩阵乘法运算并且指示计算单元132对利用这种其他操作的层执行神经网络的其他操作。
APD调度器136能够调度许多不同的任务以在不同的计算单元132和高速缓存/机器学习加速器小芯片404上并行执行。在示例中,APD调度器136能够调度着色器程序以在计算单元132中执行,同时还调度操作以在高速缓存/机器学习加速器小芯片404上执行。如图5所示,小芯片存储器504可在被配置为高速缓存506的存储器与可直接访问的存储器508之间配置。更具体地,实体(诸如处理器102、APD调度器136或计算单元132)请求将特定高速缓存/机器学习加速器小芯片404的小芯片存储器504的某一部分配置为高速缓存506或可直接访问的存储器508。作为响应,高速缓存/机器学习加速器小芯片404将请求的部分配置为高速缓存506或可直接访问的存储器508并且将剩余部分配置为高速缓存506或可直接访问的存储器508中的另一者。
被配置为高速缓存506的存储器用作典型的高速缓存存储器。具体地,高速缓存506用作高速缓存分级结构中的比APD核心402的高速缓存更高的级。在示例中,被配置为高速缓存506的存储器用作3级高速缓存存储器,并且APD核心402包括一个或多个0级高速缓存、一个或多个1级高速缓存以及一个或多个2级高速缓存。在此类示例中,3级高速缓存存储器为来自2级高速缓存的未命中服务,接收并存储从一个或多个2级高速缓存逐出的高速缓存行,并且将高速缓存行逐出到后备存储器,诸如APD 116内的存储器或系统存储器104。在一些示例中,高速缓存存储器用作在APD 116的计算单元132内执行的着色器程序的高速缓存。应注意,在执行单元(诸如机器学习加速器502或计算单元132)不能够具体地请求将数据放置在这种高速缓存506中的意义上,被配置为高速缓存506的存储器不是“可直接访问的”。例如,对于正常存储器,执行单元能够请求将数据放置在该正常存储器中的地址处。然而,对于高速缓存,由高速缓存控制器响应于动作(诸如高速缓存中的未命中)将数据放置到高速缓存中,并且执行单元仅具有对存储在高速缓存中的数据的间接控制。
相比之下,可直接访问的存储器508可由执行单元直接访问。术语“可直接访问”意味着诸如APD调度器136、计算单元132或机器学习加速器502的执行单元能够明确地请求将数据存储在可直接访问的存储器508中或从中加载数据。在一些实现方式中,这些请求指定向其中存储数据或从中读取数据的特定高速缓存/机器学习加速器小芯片404,以及该高速缓存/机器学习加速器小芯片404内的地址。如其他地方所描述,机器学习加速器502能够并且有时执行消耗同一小芯片404的可直接访问的存储器508内的数据并且将操作的结果输出到同一小芯片404的可直接访问的存储器508的机器学习操作,诸如矩阵乘法。
在一些实现方式中,小芯片404包括小芯片间连接408。如本文中其他地方所描述,小芯片404从其他来源获得数据并且将数据写入其他位置。在示例中,小芯片404执行操作来产生由不同的小芯片404消耗的输出。在包括小芯片间连接408的实现方式中,小芯片404能够直接地将这种数据传输到其他小芯片404或从其他小芯片接收这种数据。
如本文中其他地方所描述,针对机器学习网络的训练或推断来执行小芯片404和APD核心402的操作。在一些示例中,图形编译器(未示出)对机器学习网络的指示网络的层、每一层的操作、每一层的输入和每一层的输出的图描述进行编译。任一层的输入可以是不同层的输出或网络的输入,并且任一层的输出可以是不同层的输入或网络的输出。图形编译器生成要由小芯片404的机器学习加速器502执行的一组操作,在一些实现方式中,生成要由APD调度器136执行的一组操作,并且在一些实现方式中,生成要由计算单元132执行的一组着色器程序。在一些实现方式中,一个或多个着色器程序包括用于执行一个或多个层的操作的指令。在一些实现方式中,一些此类着色器程序包括用于请求机器学习加速器502执行此类层所需的矩阵乘法运算的指令,并且任选地包括用于将数据传输到被配置为可直接访问的存储器508的小芯片存储器504中以输入到层的指令。在一些实现方式中,一些此类着色器程序包括用于将数据从可直接访问的存储器508移动到不同的存储器(诸如不同的小芯片404的可直接访问的存储器508或APD核心402内的存储器)的指令。在一些实现方式中,代替或补充计算单元132,APD调度器136执行操作来请求小芯片404执行机器学习加速器操作和/或执行操作来从小芯片404读入数据或向小芯片写出数据。
在一些实现方式中,小芯片404包括被配置为将数据读到可直接访问的存储器508中和/或将数据从可直接访问的存储器508存储到不同的存储器的直接存储器访问引擎。在各种替代的实现方式中,计算单元132或APD调度器136指示直接存储器访问引擎读入和/或写出数据。
如上所述,小芯片存储器504可在高速缓存506与可直接访问的存储器508之间配置。应理解,小芯片存储器504可被配置为使得第一部分是高速缓存存储器506,并且随后被配置为使得第一部分的至少一部分是可直接访问的存储器508。换句话说,曾经用作高速缓存存储器506的小芯片存储器404可被重用作可直接访问的存储器508。类似地,曾经用作可直接访问的存储器508的小芯片存储器404可被重用作高速缓存存储器506。还应理解,可同时使用同一小芯片404的被配置为高速缓存和可直接访问的不同部分。例如,可能与针对APD 116执行高速缓存操作同时地在一个小芯片404上执行机器学习操作,诸如矩阵乘法。
图6是根据示例的用于用小芯片404执行机器学习操作的方法600的流程图。尽管关于图1至图5的系统进行了描述,但本领域技术人员将理解,被配置为以任何技术上可行的顺序执行方法600的步骤的任何系统都落入本公开的范围内。
方法600以步骤602开始,其中小芯片404将小芯片存储器504的第一部分配置为高速缓存506。在各种示例中,在APD调度器136或计算单元132的请求下进行这种配置。
在步骤604处,APD 116使用被配置为高速缓存506的第一部分来执行高速缓存操作。高速缓存操作包括存储从APD核心402内的高速缓存逐出的高速缓存行,并且根据请求将高速缓存行提供到APD核心402。
在步骤606处,小芯片404将小芯片404的第一部分的至少第一子部分配置为可直接访问的存储器508。在各种示例中,在APD调度器136或计算单元132的请求下进行这种配置。在步骤608处,小芯片404用小芯片404的第一部分的被配置为可直接访问的第一子部分执行机器学习操作。在各种示例中,执行机器学习操作包括针对机器学习网络的层执行矩阵乘法以获得该层的结果。在各种示例中,操作还包括将数据存储到第一子部分中和将数据从第一部分传输到在小芯片404的外部的实体(诸如另一个小芯片404和APD核心402)的操作。
附图所示的单元中的每一者表示被配置为执行本文所述的操作的硬件电路,并且图形处理流水线300的某些单元是可编程的并且因此可执行程序。
应理解,基于本文的公开内容,许多变型是可能的。虽然上面以特定的组合描述了特征和要素,但是每个特征或要素可单独使用而无需其他特征和要素,或者以具有或不具有其他特征和要素的各种组合使用。
所提供的方法可在通用计算机、处理器或处理器核心中实现。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可通过使用处理后的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)配置制造工艺来制造这种处理器。这种处理的结果可以是掩模件,所述掩模件然后在半导体制造工艺中用于制造实现本公开的特征的处理器。
本文提供的方法或流程图可在并入非暂时性计算机可读存储介质的计算机程序、软件或固件中实现,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(诸如内部硬盘和可移除磁盘)、磁光介质、以及光学介质(诸如CD-ROM盘和数字多功能盘(DVD))。
Claims (20)
1.一种方法,所述方法包括:
将第一小芯片的第一部分配置为高速缓存;
经由所述第一部分执行高速缓存操作;
将所述小芯片的所述第一部分的至少第一子部分配置为可直接访问的存储器;以及
由所述第一小芯片内的机器学习加速器用所述第一子部分执行机器学习操作。
2.如权利要求1所述的方法,其中:
执行高速缓存操作包括针对在与所述第一小芯片分开的管芯上的处理核心执行高速缓存操作。
3.如权利要求2所述的方法,其中:
针对所述处理核心执行高速缓存操作包括以下一者或多者:存储从所述处理核心的高速缓存逐出的高速缓存行,或者响应于所述处理核心的高速缓存中的未命中而将高速缓存行提供到所述处理核心。
4.如权利要求1所述的方法,其中:
响应于来自在与所述第一小芯片分开的管芯上的处理核心的调度器或计算单元的请求而将所述第一部分配置为高度缓存或将所述第一子部分配置为可直接访问的存储器。
5.如权利要求1所述的方法,所述方法还包括:
响应于与所述小芯片分开的处理器核心的请求而将数据存储在被配置为可直接访问的存储器的所述第一子部分内。
6.如权利要求5所述的方法,其中:
执行机器学习操作包括执行将所述数据作为输入消耗的所述机器学习操作。
7.如权利要求1所述的方法,其中所述机器学习操作包括矩阵乘法运算。
8.如权利要求1所述的方法,其中:
所述第一部分包括所述第一小芯片的内部存储器的第一量的存储器;并且
所述方法还包括:在经由所述第一部分执行所述高速缓存操作时,用所述存储器的被配置为可直接访问的存储器的第二部分执行机器学习操作。
9.如权利要求1所述的方法,所述方法还包括:
将数据传输到第二小芯片或从所述第二小芯片接收数据,所述第二小芯片与请求所述第一小芯片执行机器学习操作的处理核心物理地分开,其中经由所述第一小芯片与所述第二小芯片之间的不流过所述处理核心的直接连接来传输或接收所述数据。
10.一种装置,所述装置包括:
一个或多个机器学习加速器;以及
小芯片存储器,所述小芯片存储器被配置为:
将所述小芯片存储器的第一部分配置为高速缓存;
经由所述第一部分执行高速缓存操作;
将所述小芯片存储器的所述第一部分的至少第一子部分配置为可直接访问的存储器;以及
由所述一个或多个机器学习加速器中的机器学习加速器用所述第一子部分执行机器学习操作。
11.如权利要求10所述的装置,其中:
执行高速缓存操作包括针对在与所述小芯片存储器分开的管芯上的处理核心执行高速缓存操作。
12.如权利要求11所述的装置,其中:
针对所述处理核心执行高速缓存操作包括以下一者或多者:存储从所述处理核心的高速缓存逐出的高速缓存行,或者响应于所述处理核心的高速缓存中的未命中而将高速缓存行提供到所述处理核心。
13.如权利要求10所述的装置,其中:
响应于来自在与所述小芯片存储器分开的管芯上的处理核心的调度器或计算单元的请求而将所述第一部分配置为高度缓存或将所述第一子部分配置为可直接访问的存储器。
14.如权利要求10所述的装置,其中所述小芯片存储器还被配置为:
响应于与所述小芯片分开的处理器核心的请求而将数据存储在被配置为可直接访问的存储器的所述第一子部分内。
15.如权利要求14所述的装置,其中:
执行机器学习操作包括执行将所述数据作为输入消耗的所述机器学习操作。
16.如权利要求10所述的装置,其中所述机器学习操作包括矩阵乘法运算。
17.如权利要求10所述的装置,其中:
所述第一部分包括所述第一小芯片的内部存储器的第一量的存储器;并且
所述一个或多个机器学习加速器被配置为:在经由所述第一部分执行高速缓存操作时,用所述存储器的被配置为可直接访问的存储器的第二部分执行机器学习操作。
18.如权利要求10所述的装置,其中所述小芯片存储器还被配置为:
将数据传输到第二小芯片或从所述第二小芯片接收数据,所述第二小芯片与请求所述第一小芯片执行机器学习操作的处理核心物理地分开,其中经由所述第一小芯片与所述第二小芯片之间的不流过所述处理核心的直接连接来传输或接收所述数据。
19.一种装置,所述装置包括:
第一小芯片,所述第一小芯片包括第一小芯片存储器和第一组一个或多个机器学习加速器;
第二小芯片;以及
处理核心,
其中所述第一小芯片被配置为:
将所述第一小芯片存储器的第一部分配置为高速缓存;
经由所述第一部分执行高速缓存操作;
将所述小芯片存储器的所述第一部分的至少第一子部分配置为可直接访问的存储器;以及
由所述一个或多个机器学习加速器中的机器学习加速器用所述第一子部分执行机器学习操作。
20.如权利要求19所述的装置,其中:
执行高速缓存操作包括针对所述处理核心执行高速缓存操作。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962877249P | 2019-07-22 | 2019-07-22 | |
US201962877241P | 2019-07-22 | 2019-07-22 | |
US62/877,241 | 2019-07-22 | ||
US62/877,249 | 2019-07-22 | ||
US16/933,863 | 2020-07-20 | ||
US16/933,863 US20210026686A1 (en) | 2019-07-22 | 2020-07-20 | Chiplet-integrated machine learning accelerators |
PCT/US2020/042931 WO2021016273A1 (en) | 2019-07-22 | 2020-07-21 | Chiplet-integrated machine learning accelerators |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114144797A true CN114144797A (zh) | 2022-03-04 |
Family
ID=74190249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080052852.9A Pending CN114144797A (zh) | 2019-07-22 | 2020-07-21 | 小芯片集成的机器学习加速器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210026686A1 (zh) |
EP (1) | EP4004835A4 (zh) |
JP (1) | JP2022541461A (zh) |
KR (1) | KR20220035426A (zh) |
CN (1) | CN114144797A (zh) |
WO (1) | WO2021016273A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11429480B2 (en) * | 2020-08-31 | 2022-08-30 | Micron Technology, Inc. | Method of demand scrubbing by placing corrected data in memory-side cache |
US20220198318A1 (en) * | 2020-12-17 | 2022-06-23 | SiMa Technologies, Inc. | Instruction streaming for a machine learning accelerator |
US11782757B2 (en) * | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
US20230418745A1 (en) * | 2022-06-28 | 2023-12-28 | Advanced Micro Devices, Inc. | Technique to enable simultaneous use of on-die sram as cache and memory |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798673B2 (en) * | 2013-03-14 | 2017-10-24 | Sandisk Technologies Llc | Paging enablement of storage translation metadata |
KR102219288B1 (ko) * | 2013-12-09 | 2021-02-23 | 삼성전자 주식회사 | 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법 |
US20190146837A1 (en) * | 2014-09-29 | 2019-05-16 | Samsung Electronics Co., Ltd. | Distributed real-time computing framework using in-storage processing |
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
CN109074845B (zh) * | 2016-03-23 | 2023-07-14 | Gsi 科技公司 | 存储器内矩阵乘法及其在神经网络中的使用 |
US10817802B2 (en) * | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US11694066B2 (en) * | 2017-10-17 | 2023-07-04 | Xilinx, Inc. | Machine learning runtime library for neural network acceleration |
US10509596B2 (en) * | 2017-12-21 | 2019-12-17 | Advanced Micro Devices, Inc. | Extreme-bandwidth scalable performance-per-watt GPU architecture |
US20190278593A1 (en) * | 2018-03-09 | 2019-09-12 | Nvidia Corporation | Accelerating linear algebra kernels for any processor architecture |
US11347994B2 (en) * | 2018-10-15 | 2022-05-31 | Intel Corporation | Weight prefetch for in-memory neural network execution |
US10691593B1 (en) * | 2018-12-19 | 2020-06-23 | Micron Technology, Inc. | Predictive data storage hierarchical memory systems and methods |
US11176493B2 (en) * | 2019-04-29 | 2021-11-16 | Google Llc | Virtualizing external memory as local to a machine learning accelerator |
US11521116B2 (en) * | 2019-06-25 | 2022-12-06 | Nxp Usa, Inc. | Self-optimizing multi-core integrated circuit |
-
2020
- 2020-07-20 US US16/933,863 patent/US20210026686A1/en active Pending
- 2020-07-21 KR KR1020227004629A patent/KR20220035426A/ko unknown
- 2020-07-21 CN CN202080052852.9A patent/CN114144797A/zh active Pending
- 2020-07-21 EP EP20843437.3A patent/EP4004835A4/en active Pending
- 2020-07-21 JP JP2022502435A patent/JP2022541461A/ja active Pending
- 2020-07-21 WO PCT/US2020/042931 patent/WO2021016273A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR20220035426A (ko) | 2022-03-22 |
EP4004835A1 (en) | 2022-06-01 |
US20210026686A1 (en) | 2021-01-28 |
WO2021016273A1 (en) | 2021-01-28 |
JP2022541461A (ja) | 2022-09-26 |
EP4004835A4 (en) | 2023-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210026686A1 (en) | Chiplet-integrated machine learning accelerators | |
US11869140B2 (en) | Combined world-space pipeline shader stages | |
EP3646177B1 (en) | Early virtualization context switch for virtualized accelerated processing device | |
US10102662B2 (en) | Primitive culling using automatically compiled compute shaders | |
US10643369B2 (en) | Compiler-assisted techniques for memory use reduction in graphics pipeline | |
US20210374607A1 (en) | Stacked dies for machine learning accelerator | |
US20230205608A1 (en) | Hardware supported split barrier | |
US11276135B2 (en) | Parallel data transfer to increase bandwidth for accelerated processing devices | |
US10956338B2 (en) | Low latency dirty RAM for cache invalidation speed improvement | |
US11656877B2 (en) | Wavefront selection and execution | |
US20230206395A1 (en) | Hardware support for convolution operations | |
US20210407182A1 (en) | Load instruction for multi sample anti-aliasing |
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 |