CN109508316B - 异构计算环境的设备和系统 - Google Patents
异构计算环境的设备和系统 Download PDFInfo
- Publication number
- CN109508316B CN109508316B CN201810909419.7A CN201810909419A CN109508316B CN 109508316 B CN109508316 B CN 109508316B CN 201810909419 A CN201810909419 A CN 201810909419A CN 109508316 B CN109508316 B CN 109508316B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- reprogrammable
- memory
- task
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- 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/445—Program loading or initiating
-
- 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
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/768—Gate array
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
- Memory System (AREA)
Abstract
本发明提供一种设备,所述设备可包含可至少部分地由任务调度程序控制的异构计算环境,其中异构计算环境可包含:处理单元,具有配置成执行指令的固定逻辑电路;可重编程处理单元,具有配置成执行指令的可重编程逻辑电路,所述指令包含用以控制存储器内处理功能的指令;以及高带宽存储器裸片的堆叠,其中每一堆叠可配置成存储数据并提供由可重编程处理单元可控制的存储器内处理功能,从而使得可重编程处理单元至少部分地与高带宽存储器裸片一起堆叠。任务调度程序可配置成在处理单元与可重编程处理单元之间调度计算任务。本发明也提供一种异构计算环境的系统。
Description
相关申请案的交叉引用
本申请请求2017年9月14日提交的标题为“高效学习系统的异构加速器(AHETEROGENEOUS ACCELERATOR FOR HIGHLY EFFICIENT LEARNING SYSTEMS)”的临时专利申请第62/558,745号的优先权。此先前提交的申请的主题特此以引用的方式并入。
技术领域
本说明书大体上涉及电路。确切地说,本公开涉及一种用于高效学习系统的异构加速器的系统和方法。
背景技术
如学习系统(例如深度神经网络)的新兴应用通常需要大量计算和存储能力以在不同数据集上训练并以高精度学习。此外,随着如高性能计算、图形操作等应用变为数据密集型及计算密集型,能量效率和低延时变得至关重要。一种称为“存储器内处理”的技术具有通过在较低功率技术处理中且还更接近于数据驻留处在存储器(例如动态随机存储器(dynamic random access memory;DRAM)等)逻辑裸片上调度复杂操作以提供额外计算能力从而解决这些挑战的能力。
高带宽存储器(High Bandwidth Memory;HBM)是用于3D堆叠存储器(例如DRAM)的高性能随机存取存储器(random access memory;RAM)接口。其通常与高性能图形加速器以及存取大型数据集的网络装置结合使用。相比于其它DRAM技术(例如双数据速率第四代同步动态随机存取存储器(double data rate fourth-generation synchronous dynamicrandom-access memory;DDR4)、双数据速率五型同步图形随机存取存储器(double datarate type five synchronous graphics random-access memory;GDDR5)等),HBM通常实现更高带宽,同时在基本上更小形状参数中使用更少功率。这通常可通过将一数量(例如八个)的存储器裸片堆叠在一起来实现。此堆叠常常还包含具有存储器控制器的任选基础裸片。所述裸片可通过硅穿孔(through-silicon vias;TSV)和微凸块而互连。
发明内容
根据一个总的方面,实例实施例提供一种设备,所述设备可包含可至少部分地由任务调度程序来控制的异构计算环境,其中所述异构计算环境可包含:处理单元,具有配置成执行指令的固定逻辑电路;可重编程处理单元,具有配置成执行指令的可重编程逻辑电路,所述指令包含用以控制存储器内处理功能的指令;以及高带宽存储器裸片的堆叠,其中每一堆叠可配置成存储数据并提供可由可重编程处理单元控制的存储器内处理功能,从而使得可重编程处理单元至少部分地与高带宽存储器裸片一起堆叠。任务调度程序可配置成在处理单元与可重编程处理单元之间调度计算任务。
根据另一总的方面,另一实例实施例提供一种设备,所述设备可包含可至少部分地由中央处理单元控制的异构计算环境,其中所述异构计算环境可包含中央处理单元、固定处理单元、可重编程处理单元、高带宽存储器裸片的堆叠以及中央存储器。中央处理单元可配置成在固定处理单元与可重编程处理单元之间分配计算任务。固定处理单元可具有配置成执行指令的固定逻辑电路。可重编程处理单元可具有配置成执行指令的可重编程逻辑电路,所述指令包含用以控制存储器内处理功能的指令。高带宽存储器裸片的每一堆叠可配置成存储数据并提供可由可重编程处理单元控制的存储器内处理功能,从而使得可重编程处理单元至少部分地与高带宽存储器裸片一起堆叠。中央存储器可包含为固定处理单元保留的缓冲器部分,以及为可重编程处理单元保留的缓冲器部分。
根据另一总的方面,又另一实例实施例提供一种系统,所述系统可包含中央处理单元、系统存储器以及异构加速器。中央处理单元可配置成将计算任务分配到异构计算环境的处理单元。系统存储器可配置成存储数据。异构加速器多芯片模块可包含异构计算环境,其中异构加速器多芯片模块可包含:固定处理单元,具有配置成执行指令的固定逻辑电路;可重编程处理单元,具有配置成执行指令的可重编程逻辑电路,所述指令包含用以控制存储器内处理功能的指令;以及高带宽存储器裸片的堆叠,每一堆叠配置成存储数据并提供可由可重编程处理单元控制的存储器内处理功能,从而使得可重编程处理单元至少部分地与高带宽存储器裸片一起堆叠。
在以下附图和描述中阐述一个或多个实施方案的细节。其它特征将从描述和图且从权利要求书中显而易见。
一种用于高效学习系统的异构加速器的系统和/或方法,基本上如结合图中的至少一个所绘示和/或所描述,如在权利要求中更彻底地阐述。
附图说明
图1是根据所公开主题的系统的实例实施例的框图。
图2是根据所公开主题的系统的实例实施例的框图。
图3是根据所公开主题的系统的实例实施例的框图。
图4是根据所公开主题的系统的实例实施例的框图。
图5是根据所公开主题的系统的实例实施例的框图。
图6是根据所公开主题的系统的实例实施例的框图。
图7是可包含根据所公开主题的原理形成的装置的信息处理系统的示意性框图。
各图中的相同参考符号指示相同元件。
附图标号说明
100:系统;
104:图形处理单元/固定处理单元/裸片;
106:可重编程处理单元/裸片;
108:堆叠/高带宽存储器堆叠;
110:高带宽存储器控制器裸片;
112:裸片/高带宽存储器裸片;
120:插入件/插入件裸片/裸片;
122:封装衬底裸片/裸片;
124:焊接凸块;
200:系统;
202:中央处理单元;
212:中央处理单元存储器裸片/中央处理单元存储器;
214:固定处理单元存储器裸片/固定处理单元存储器;
300:系统;
302:任务调度程序/中央处理单元;
304:固定处理单元/固定逻辑处理单元/处理器;
306:可重编程处理单元/处理器;
308:高带宽存储器堆叠;
400:系统;
402:互连总线;
404:数据;
412:系统存储器;
414:固定处理单元存储器;
442:轮询电路;
444:存取寄存器;
462:预备旗标;
464:直接存储器存取或远端直接存储器存取引擎或电路/远端直接存储器存取引擎;
490:任务;
500:系统;
504:数据;
514:存储器/固定处理单元缓冲器/缓冲器;
516:存储器/可重编程处理单元缓冲器/缓冲器;
542:轮询电路;
546:触发事件;
590:任务;
600:系统;
604:数据;
614、616:箭头;
642:轮询电路;
646:触发事件;
690:任务;
700:信息处理系统;
705:系统总线;
710:处理器;
715:组合逻辑块;
720:易失性存储器;
730:非易失性存储器;
740:网络接口;
750:用户接口单元;
760:硬件组件;
770:软件组件。
具体实施方式
将在下文中参考附图更全面地描述各种实例实施例,在附图中绘示了一些实例实施例。然而,本发明所公开的主题可以以许多不同形式实施,并且不应被解释为限于本文中所阐述的实例实施例。确切地说,提供这些实例实施例以使得本公开将透彻且全面,且将向本领域的技术人员充分地传达本发明所公开的主题的范围。在图中,为了清楚起见可能夸大层和区域的尺寸以及相对尺寸。
将理解,当一元件或层被称作在另一元件或层“上”、“连接到”另一元件或层或“耦合到”另一元件或层时,这个元件或层可直接在另一元件或层上、直接连接到另一元件或层或耦合到另一元件或层,或可存在介入元件或层。相比之下,当一元件被称作“直接”在另一元件或层“上”、“直接连接到”或“直接耦合到”另一元件或层时,不存在介入元件或层。相同标号始终指代相同元件。如本文中所使用,术语“和/或”包含相关联的所列项中的一个或多个中的任何一个以及所有组合。
将理解,虽然本文中可使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或区段,但是这些元件、组件、区域、层和/或区段不应受到这些术语的限制。这些术语仅用以区分一个元件、组件、区域、层或区段与另一区域、层或区段。因此,在不脱离本发明公开的主题的教示的情况下,下文所论述的第一元件、组件、区域、层或区段可称为第二元件、组件、区域、层或区段。
为易于描述,可在本文中使用如“在…下面(beneath)”、“在…下方(below)”、“下部的(lower)”、“在…上方(above)”、“上部的(upper)”和其类似物的空间相对术语来描述如图中所示的一个元件或构件与另一元件或构件的关系。将理解,空间相对术语意图涵盖装置在使用或操作中除图中所描绘的取向外的不同取向。举例来说,如果图中的装置倒过来,那么描述为“在”其它元件或构件“下方”或“下面”的元件便将定向成“在”其它元件或构件“上方”。因此,示范性术语“在…下方”可涵盖上方和下方两个取向。装置可以以其它方式取向(旋转90度或处于其它定向),且本文中所使用的空间相对描述符可相应地进行解释。
类似地,为易于描述,可在本文中使用如“高”“低”、“上拉”、“下拉”、“1”、“0”和其类似物的电气术语来描述相对于其它电压电平或相对于如图中所示的另一元件或构件的电压电平或电流。将理解,电气相对术语意图涵盖装置在使用或操作中除图中所描绘的电压或电流外的不同参考电压。举例来说,如果图中的装置或信号反向或使用其它参考电压、电流或电荷,那么被描述为“高”或“上拉”的元件与新参考电压或电流相比随后将为“低”或“下拉”。因此,示范性术语“高”可涵盖相对较低或较高电压或电流。装置可以其它方式基于参考的不同电气帧,且本文中所使用的电气相对描述词相应地进行解释。
本文中所使用的术语仅出于描述特定实例实施例的目的,且并不意图限制本所发明公开的主题。如本文中所使用,除非上下文另外明确指示,否则单数形式“一(a、an)”以及“所述”意图还包含复数形式。将进一步理解,当在本说明书中使用时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组。
本文中参考为理想化实例实施例(以及中间结构)的示意性图解的横截面图解来描述实例实施例。如此,应预期到作为例如制造技术和/或公差的结果而与图示的形状的差异。因此,实例实施例不应解释为限于本文中所说明的区域的特定形状,而是应包含(例如)由制造引起的形状偏差。举例来说,图示为矩形的植入区域典型地将具有圆形或弯曲特征和/或植入物浓度在其边缘处的梯度,而不是从植入区域到非植入区域的二元变化。同样,通过植入形成的埋入区域可在埋入区域与发生植入所在的表面之间的区域中产生一些植入。因此,图中所示的区域本质上是示意性的,且其形状并不意图说明装置的区域的实际形状且并不意图限制本发明公开主题的范围。
除非另外定义,否则本文中所使用的所有术语(包含技术术语和科学术语)具有本公开主题所属领域的普通技术人员通常所理解的相同意义。将进一步理解,例如常用词典中所定义的术语等术语应解释为具有与其相关技术的上下文中的含义一致的含义,且将不在理想化或过度正式意义上进行解释,除非本文中明确地如此界定。
下文中将参考附图来详细解释实例实施例。
图1是根据所公开主题的系统100的实例实施例的框图。在所示实施例中,系统100可包含多个集成电路(integrated circuit;IC)裸片。在此实施例中,IC可布置在多芯片模块(multi-chip module;MCM)中。
MCM通常是电子组合件(如使用数个导体端子或“接脚”的封装件),其中多个集成电路(IC或“晶片”)、半导体裸片和/或其它离散组件通常集成在统一衬底上,从而使得其在使用中如同单个组件(如同较大IC)一样处理。应理解,上述仅仅是并未限制所公开主题的一个说明性实例。
在所说明实施例中,系统100可包含形成为裸片112的高带宽存储器(HBM)的堆叠108。如上文所描述,HBM可配置成存储数据并允许存储器比标准DRAM或系统存储器更快速且有效地存取。在一个实施例中,HBM裸片112可配置成提供存储器内处理功能。在各种实施例中,伴以裸片112之间通过硅穿孔(TSV)、微凸块或其它芯片间连通(图中未示)的方式所进行的连通,HBM裸片112可一个在另一个的顶部上垂直堆叠。
在各种实施例中,HBM 112的堆叠108可包含HBM控制器裸片110。HBM控制器裸片110可配置成执行标准存储器存取协调功能(例如页表翻译、地址映射、写入组合等)。在各种实施例中,HBM控制器裸片110可包含集中在HBM裸片112上的存储器管理单元(memorymanagement unit;MMU)。
在所说明实施例中,系统100可包含可编程处理单元(programmable processingunit;PU)或可重编程处理单元(reprogrammable processing unit;RPU)106。在各种实施例中,RPU 106可包含可动态编程以执行各种功能或执行某些指令的逻辑电路。在一个实施例中,RPU 106可配置成执行包含控制HBM裸片112中的存储器内处理功能的指令。在各种实施例中,RPU 106可包含如(但不限于)现场可编程门阵列(field-programmable gatearray;FPGA)、专用集成电路(application-specific integrated circuit;ASIC)、查找表(look-up table;LUT)、可编程阵列逻辑(Programmable Array Logic;PAL)等的装置。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在各种实施例中,RPU 106可与HBM裸片112的堆叠108一起堆叠或在堆叠108下方堆叠。在此实施例中,RPU 106可配置成直接与堆叠108接合,且为堆叠108提供对系统100的其它组件(例如固定GPU 104)的存取。
在各种实施例中,RPU 106可提供粗晶粒功能或指令执行可重配置性。在另一实施例中,RPU 106可提供细晶粒功能或指令执行可重配置性。在一些实施例中,由RPU 106执行的操作可包含控制HBM裸片112中的存储器内处理功能,所述存储器内处理功能可包含(但不限于)乘法累加操作、数据重排、数据转置等。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。在各种实施例中,RPU 106以及其对HBM堆叠108的接近存取可提供比固定或相对远处理单元或电路更快的指令执行、任务执行或操作执行。
在所示实施例中,系统100还可包含不可改变处理单元或固定处理单元(fixedprocessing unit;FPU)104。在此实施例中,FPU 104可配置成执行各种指令或执行逻辑操作。FPU 104可包含不可改变或固定的逻辑电路,且所述逻辑电路在制造FPU 104期间静态地形成;然而,各种配置设置可对固定逻辑电路如何执行进行改变。
在各种实施例中,FPU 104可包含专用处理单元,例如图形处理单元(graphicsprocessing unit;GPU)、加密处理单元、物理处理单元、机器学习处理单元等。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。在各种实施例中,FPU 104可布置在堆叠108旁边以使得其并不直接与堆叠108连通。
在各种实施例中,系统100还可包含插入件裸片或层120。在此实施例中,插入件120可包含硅或另一衬底,且可提供FPU 104与RPU 106(以及堆叠108)之间连通的通道。在此实施例中,插入件裸片120可与RPU 106裸片和FPU 104裸片耦合且在所述裸片下方。
在所示实施例中,系统100可包含封装衬底裸片122。封装衬底裸片122可配置成在其它组件或裸片之间且在系统100外部通信。各种裸片122、裸片120、裸片104、裸片106等可通过多个焊接凸块124连接。
图2是根据所公开主题的系统200的实例实施例的框图。在所示实施例中,系统200可包含多个集成电路(IC)裸片。在此实施例中,IC可布置在多芯片模块(MCM)中。
在所示实施例中,如上文所描述,系统200可包含HBM裸片112与HBM控制器裸片110的堆叠108、RPU 106、FPU 104、插入件120以及封装衬底122。在所示实施例中,绘示数个可能的额外裸片或组件。在各种实施例中,这些裸片中的一个或多个如下所述可包含在系统200中。在另一实施例中,这些裸片或组件中的一个或多个可包含为另一IC封装件的部分或为较大系统的部分(例如中央处理单元和/或系统存储器可包含为桌上型计算机或笔记本计算机的部分)。
在各种实施例中,系统200还可包含中央处理单元(central processing unit;CPU)202。在此实施例中,CPU 202可包含在裸片中且可包含微处理器和/或多个处理器核心。CPU 202可以是处理和管理指令的系统的主要组件。CPU 202可主要负责执行操作系统和应用程序。在各种实施例中,CPU 202可包含通用计算架构,如由ARM或Intel所作出的通用计算架构。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。在所示实施例中,CPU 202可配置成控制系统200的异构计算环境,且在FPU 104与RPU 106之间分配计算任务。
在各种实施例中,系统200可包含CPU存储器裸片212。在一些实施例中,CPU存储器裸片212可堆叠在CPU 202上。在此实施例中,CPU存储器212可配置成存储数据且可由CPU202直接存取。在一些实施例中,CPU存储器212可包含系统存储器。在另一实施例中,系统存储器(例如DRAM)可在系统200外部。
在各种实施例中,系统200可包含FPU存储器裸片214。在一些实施例中,FPU存储器裸片214可堆叠在FPU 104上。在此实施例中,FPU存储器214可配置成存储数据且可由FPU104直接存取。
在各种实施例中,系统200的三个处理器(RPU 106、FPU 104以及CPU 202)可在其自身中分配各种计算任务、指令或内核的执行。在此上下文中,“内核”定义为分组在一起来执行任务或可定义子任务的一个或多个指令。内核的边界可或可以不符合子程序且不应假定为同义术语。在此上下文中,术语“内核”更等效于术语“计算内核”,且不应与“内核”的其它定义如“操作系统内核”、“内核方法”、“图像内核”或数学中所采用的内核的许多定义相混淆。
在此实施例中,系统200的三个处理器(RPU 106、FPU 104以及CPU 202)可分发任务以提高效率,且减少功率使用以及存储器带宽消耗。在各种实施例中,这可与ARMbig.LITTLE异构计算架构相类似(但不相同),在所述ARM big.LITTLE异构计算架构中,省电且较慢的处理器核心(LITTLE)与相对较强大且耗电的处理器核心(big)相耦合。在此实施例中,工作负载可在不同类型的内核之间(例如在big核心与LITTLE核心、RPU 106、FPU104以及CPU 202等之间)调换。在此实施例中,多核心系统200可调整为动态计算需要且使用较低功率(或较快)。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
图3是根据所公开主题的系统300的实例实施例的框图。在各种实施例中,系统300可由中图1和/或图2中示出的裸片或其它IC组成。
在所示实施例中,系统300可包含CPU、主机处理器或配置成在固定处理单元304与可重编程处理单元306之间分配计算任务的任务调度程序302。在各种实施例中,任务调度程序302可配置成至少部分地控制系统300。在各种实施例中,任务调度程序302可包含处理器(例如CPU),但在另一实施例中,任务调度程序302可包含较小通用电路。
在所示实施例中,系统300可包含固定逻辑处理单元304(例如GPU、数字信号处理器(digital signal processor;DSP)等),如上文所描述。如上文所描述,系统300可包含RPU 306(例如FPGA等)。如上文所描述,系统300还可包含HBM堆叠308。
在所示实施例中,FPU 304和RPU 306可配置成具有集成控制和/或数据路径。在此实施例中,计算任务(以及其中相关联的数据)可在两个处理器304和处理器306之间传送或切换。如下文所描述,在各种实施例中,任务和数据切换可以自调节方式进行或可由CPU302来协调。
在所示实施例中,FPU 304可允许程序员或用户使用已知FPU(例如GPU)编程模型或应用程序编程接口(application programming interfaces;API),以及与FPU相关联的数据存取协议或模型。然而,RPU 306的可重编程性可允许提高效率(例如功率、时间等)的任务专用电路且可动态改变。
图4是根据所公开主题的系统400的实例实施例的框图。在各种实施例中,系统400的部分可由中图1和/或图2中所说明的裸片或其它IC组成。系统400可说明简要在图3中所示的任务传送的一个实施例。
在所示实施例中,如上文所描述,系统400可包含固定逻辑处理单元304(例如GPU、数字信号处理器(DSP)等)。如上文所描述,系统400可包含RPU 306(例如FPGA等)。如上文所描述,系统400还可包含HBM堆叠308。
在所示实施例中,系统400还可包含配置成存储数据且由CPU 302直接存取(或在CPU 302的控制下)的系统存储器412。系统400可包含配置成存储数据且由FPU 304直接存取(或在FPU 304的控制下)的FPU存储器414。
在所示实施例中,CPU 302可经由互连总线402与FPU 304以及RPU 306相耦合。在各种实施例中,互连总线402可使用串行协议,例如高速外围组件互连(PeripheralComponent Interconnect Express;PCIe)协议。应理解,上述仅仅是并未限制所公开主题的一个说明性实例。
在所示实施例中,CPU(或任务调度程序)302可向FPU 304分配第一任务、第一子任务或任务490的第一部分。FPU 304可开始执行与第一子任务相关联的指令且可能需要存取与任务490相关联的数据404。在所示实施例中,数据404可存储在HBM堆叠308中。
在所示实施例中,RPU 306可包含直接存储器存取(direct memory access;DMA)或远端DMA(RMDA)引擎或电路464。因为RPU 306直接与HBM堆叠308相耦合,所以RPU 306可对HBM堆叠308进行栅极存取。在各种实施例中,如果RPU 306实施RDMA引擎464,那么其它处理器便可通过RPU 306对HBM堆叠308执行DMA调用或请求。RDMA引擎464可随后服务或执行DMA请求。
在所示实施例中,FPU 304可发出RDMA存取请求到RDMA引擎464。RDMA可随后撷取或读取来自HBM堆叠308的数据404且将其提供到FPU 304。在各种实施例中,FPU 304可包含一个或多个存取寄存器444。在此实施例中,数据404(或其部分)可在存取寄存器444中(例如在256兆字节部分中)分级或缓存。可随后将数据404拷贝到FPU存储器414中。FPU 304可随后对数据404执行任务490的分配部分。
在所示实施例中,CPU(或任务调度程序)302可向RPU 306分配第二任务、第二子任务或任务490的第二部分。在各种实施例中,RPU 306可使用使得RPU 306上的第二部分有效或以其它期望的方式执行的逻辑电路来编程。举例来说,任务490分配到RPU 306的部分可包含控制HBM堆叠308的HBM裸片的存储器内处理功能。一旦FPU 304完成任务490的其第一部分,FPU 304便暂停以卸载内核或向RPU 306传送任务490的剩余部分的执行。
在所示实施例中,RPU 306可包含预备旗标462或准备好开始处理任务490的第二部分的一些其它指示。在一些实施例中,RPU 306可包含数个预备旗标462,每一预备旗标与可分别执行任务的各种逻辑电路相关联。FPU 304可包含配置成定期检查或轮询RPU 306(例如预备旗标462)以查看是否到达将任务490的处理传送到RPU 306的时刻的轮询电路442。在各种实施例中,可采用另一旗标类同步协议。
一旦FPU 304识别到RPU 306准备好,便可将任务490或数据404的所有权在两个处理器304与处理器306之间传送。RPU 306可随后开始执行其所分配的任务490的第二部分。在各种实施例中,CPU 302可配置成对FPU 304告知RPU 306可能准备好开始执行任务490的第二部分。在此实施例中,RPU 306可将此告知CPU 302,或CPU 302可监测RPU 306的状态(例如CPU 302可了解RPU 306已完成另一任务)。
在各种实施例中,可使用上文所描述的RDMA协议将数据404从FPU存储器414传送到HBM堆叠308。RPU 306可随后直接存取存储在HBM堆叠308中的数据404。当RPU 306执行任务490的第二部分时,FPU 304可暂停或停止,或可异步地执行另一任务,以使得FPU 304的计算功率并未浪费。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在一些实施例中,任务执行可以类似方式但反向地从RPU 306切换到FPU 304(或到CPU 302)。在此实施例中,FPU 304、RPU 306以及甚至CPU 302之间的数据同步可类似于上文所描述来进行。
图5是根据所公开主题的系统500的实例实施例的框图。在各种实施例中,系统500的部分可由中图1和/或图2中所示出的裸片或其它IC组成。系统500可说明简要在图3中所示的任务传送的一个实施例。
在所示实施例中,如上文所描述,系统500可包含固定逻辑处理单元304(例如GPU、数字信号处理器(DSP)等)。如上文所描述,系统500可包含RPU 306(例如FPGA等)。如上文所描述,系统500还可包含HBM堆叠308。
在所示实施例中,系统500可包含配置成存储数据且由FPU 304直接存取(或在FPU304的控制下)的FPU存储器414。系统500可包含FPU缓冲器或配置成存储与FPU 304相关的数据的存储器514。系统500可包含RPU缓冲器或配置成存储与RPU 306相关的数据的存储器516。在此实施例中,FPU缓冲器514和RPU缓冲器516可由CPU 302控制或存取。在各种实施例中,FPU缓冲器514和RPU缓冲器516可以是系统存储器的分区或区域(例如图4中所示的分区或区域),或可以是分离存储器电路。
在所示实施例中,CPU 302可经由互连总线402与FPU 304以及RPU 306相耦合。在各种实施例中,互连总线402可使用串行协议,例如高速外围组件互连(PCIe)协议。应理解,上述仅仅是并未限制所公开主题的一个说明性实例。
如上文所描述,CPU 302(或任务调度程序)可向FPU 304和RPU 306分发或分配各种任务590或任务590的部分以用于执行。在各种实施例中,此分配可至少部分地基于哪一处理器可用且更有效执行任务590。如上文所描述,CPU 302可向FPU 304分配任务590的第一部分且向RPU 306分配任务590的第二部分。举例来说,各种任务590向RPU 306分配的部分可包含控制HBM堆叠308的HBM裸片的存储器内处理功能。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在所示实施例中,如上文所描述,FPU 304可执行所分配的任务。在此实施例中,FPU 304可使用FPU存储器414作为临时高速缓存或工作存储器。当所分配的任务、子任务或任务590的部分完成时,FPU 304可向FPU缓冲器514写入数据504。
在此实施例中,这可能涉及使CPU 302充当FPU 304与FPU缓冲器514之间的中介,或至少告知正在向FPU缓冲器514写入数据504。在一些实施例中,这可经由存储器分配功能或程序调用来进行(例如在GPU情形下,可调用CUDAMalloc())。在此实施例中,FPU 304可将数据拷贝到CPU 302,且CPU 302可转而将数据拷贝到FPU缓冲器514。
在所示实施例中,CPU 302可随后将数据504从FPU缓冲器514传送到RPU缓冲器516。在此实施例中,CPU 302可控制数据传送的时序以及FPU 304与RPU 306之间(至少缓冲器514与缓冲器516之间)的同步。
在所示实施例中,当数据504在缓冲器514与缓冲器516之间的拷贝完成时,CPU302可启动触发事件546以向RPU 306指示数据504准备好。在各种实施例中,此触发事件546可包含中断信号、穿过互连总线的消息或到RPU 306的信号。在所示实施例中,RPU 306可包含配置成检测触发事件546并对其做出反应的轮询电路542。同样,在此实施例中,CPU 302可控制数据传送的时序。在各种实施例中,轮询电路542可结合RPU相关的驱动器或固件来工作。应理解,上述仅仅是并未限制所公开主题的一个说明性实例。
在此实施例中,一旦触发事件546已发生,RPU 306便可将数据504从RPU缓冲器516拷贝到HBM堆叠308。RPU 306可随后执行任务、子任务或任务590中其分配到的部分。如早先所描述,任务590分配到RPU 306的部分可包含控制HBM堆叠308的HBM裸片的存储器内处理功能。当RPU 306执行任务590的第二部分时,FPU 304可暂停或停止,或可异步地执行另一任务,以使得FPU 304的计算功率并未浪费。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在一些实施例中,任务执行可以类似方式但反向地从RPU 306切换到FPU 304(或到PCU 302)。在此实施例中,FPU 304、RPU 306以及甚至CPU 302之间的数据同步可类似于上文所描述来进行。
图6是根据所公开主题的系统600的实例实施例的框图。在各种实施例中,系统600的部分可由中图1和/或图2中所示出的裸片或其它IC组成。系统600可说明简要在图3中所示的任务传送的一个实施例。
在所示实施例中,如上文所描述,系统600可包含固定逻辑处理单元304(例如GPU、数字信号处理器(DSP)等)。如上文所描述,系统600可包含RPU 306(例如FPGA等)。如上文所描述,系统600还可包含HBM堆叠308。
在所示实施例中,系统600可包含配置成存储数据且由FPU 304直接存取(或在FPU304的控制下)的FPU存储器414。如上文所描述,系统600可包含系统存储器412。
在所示实施例中,CPU 302可经由互连总线402与FPU 304以及RPU 306相耦合。在各种实施例中,互连总线402可使用串行协议,例如高速外围组件互连(PCIe)协议。应理解,上述仅仅是并未限制所公开主题的一个说明性实例。
如上文所描述,CPU 302(或任务调度程序)可向FPU 304和RPU 306分发或分配各种任务690或任务690的部分以用于执行。在各种实施例中,此分配可至少部分地基于哪一处理器可用且更有效执行任务690。如上文所描述,CPU 302可向FPU 304分配任务690的第一部分且向RPU 306分配任务690的第二部分。举例来说,任务690分配到RPU 306的部分可包含控制HBM堆叠308的HBM裸片的存储器内处理功能。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在所示实施例中,如上文所描述,FPU 304可执行所分配的任务。在此实施例中,FPU 304可使用FPU存储器414作为临时高速缓存或工作存储器。当所分配的任务、子任务或任务690的部分完成时,FPU 304可向系统存储器412写入数据604。
在所示实施例中,FPU 304可经由远端直接存储器存取(remote direct memoryaccess;RDMA)来存取系统存储器412。在各种实施例中,这可实质上绕过CPU 302,或至少CPU 302的有效涉及。箭头614绘示向系统存储器412直接(或使用CPU 302的DMA引擎)写入数据604的FPU 304。
在向系统存储器412的数据写入完成时,可启动触发事件646(例如中断等)以告知RPU 306数据604准备好使用。在各种实施例中,如上文所描述,触发事件646可由CPU 302来建立。在另一实施例中,触发事件646可由FPU 304来建立。
在所示实施例中,RPU 306可包含轮询电路642以检测触发事件646何时发生。在此实施例中,RPU 306可随后将数据604从系统存储器412拷贝到HBM堆叠308(由箭头616示出)。在各种实施例中,这可经由RDMA来进行。在此实施例中,RPU 306可包含如图4中所示的RDMA引擎。
RPU 306可随后执行任务、子任务或任务690中其分配到的部分,所述分配到的任务可包含控制HBM堆叠308的HBM裸片的存储器内处理功能。当RPU 306执行任务690的第二部分时,FPU 304可暂停或停止,或可异步地执行另一任务,以使得FPU 304的计算功率并未浪费。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
在一些实施例中,任务执行可以类似方式但反向地从RPU 306切换到FPU 304(或到CPU 302)。在此实施例中,FPU 304、RPU 306以及甚至CPU 302之间的数据同步可类似于上文所描述来进行。
图7是信息处理系统700的示意性框图,其可包含根据所公开主题的原理形成的半导体装置。
参考图7,信息处理系统700可包含根据所公开主题的原理构建的装置中的一个或多个。在另一实施例中,信息处理系统700可采用或执行根据所公开主题的原理的一种或多种技术。
在各种实施例中,信息处理系统700可包含计算装置,例如膝上型计算机、桌上型计算机、工作站、服务器、刀片服务器、个人数字助理、智能手机、平板计算机以及其它适当的计算机或其虚拟机或虚拟计算装置。在各种实施例中,信息处理系统700可由用户(未示出)使用。
根据所公开主题的信息处理系统700可进一步包含中央处理单元(CPU)、逻辑或处理器710。在一些实施例中,处理器710可包含一个或多个功能单元块(functional unitblock;FUB)或组合逻辑块(combinational logic block;CLB)715。在此实施例中,组合逻辑块可包含各种布尔逻辑操作(Boolean logic operation)(例如与非(NAND)、或非(NOR)、非(NOT)、异或(XOR))、稳定逻辑装置(例如触发器、锁存器)、其它逻辑装置或其组合。这些组合逻辑操作可以简单或复杂方式配置成处理输入信号以实现所需结果。应理解,在描述同步组合逻辑操作的几个说明性实例时,所公开主题不受如此限制且可包含异步操作或其混合。在一个实施例中,组合逻辑操作可包括多个互补金属氧化物半导体(complementarymetal oxide semiconductor;CMOS)晶体管。在各种实施例中,这些CMOS晶体管可布置到执行逻辑操作的门中;但应理解,可使用其它技术且所述其它技术在所公开主题的范围内。
根据所公开主题的信息处理系统700可进一步包含易失性存储器720(例如随机存取存储器(RAM))。根据所公开主题的信息处理系统700可进一步包含非易失性存储器730(例如硬盘驱动器、光学存储器、与非型或闪存存储器)。在一些实施例中,易失性存储器720、非易失性存储器730或其组合或部分可被称作“存储介质”。在各种实施例中,易失性存储器720和/或非易失性存储器730可配置成以半永久或基本上永久的形式存储数据。
在各种实施例中,信息处理系统700可包含一个或多个网络接口740,所述网络接口740配置成允许信息处理系统700为通信网络的部分且经由通信网络通信。Wi-Fi协议的实例可包含(但不限于)电气和电子工程师学会(Institute of Electrical andElectronics Engineer;IEEE)802.11g,IEEE 802.11n。蜂窝协议的实例可包含(但不限于):IEEE 802.16m(也称为无线-MAN(城域网))改进、长期演进(Long Term Evolution,LTE)改进、GSM(全球移动通信系统)的增强数据速率演进(EDGE)、演进高速分组接入(Evolved High-Speed Packet Access;HSPA+)。有线协议的实例可包含(但不限于)IEEE802.3(也称为以太网(Ethernet))、光纤通道(Fibre Channel)、电力线通信(PowerLine communication)(例如HomePlug、IEEE 1901)。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
根据所公开主题的信息处理系统700可进一步包含用户接口单元750(例如显示适配器、触觉接口、人机接口装置)。在各种实施例中,此用户接口单元750可配置成接收来自用户的输入和/或向用户提供输出。其它类型的装置也可用以提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感觉反馈(例如视觉反馈、听觉反馈或触感反馈);且可以任何形式接收来自用户的输入,包含声音输入、语音输入或触感输入。
在各种实施例中,信息处理系统700可包含一个或多个其它装置或硬件组件760(例如显示器或监测器、键盘、鼠标、相机、指纹读取器、视频处理器)。应理解,上述仅仅是并未限制所公开主题的几个说明性实例。
根据所公开主题的信息处理系统700可进一步包含一个或多个系统总线705。在此实施例中,系统总线705可配置成以通信方式与处理器710、易失性存储器720、非易失性存储器730、网络接口740、用户接口单元750以及一个或多个硬件组件760耦合。由处理器710处理的数据或从非易失性存储器730外部输入的数据可存储在非易失性存储器730或易失性存储器720中。
在各种实施例中,信息处理系统700可包含或执行一个或多个软件组件770。在一些实施例中,软件组件770可包含操作系统(operating system;OS)和/或应用程序。在一些实施例中,OS可配置成向应用程序提供一个或多个服务且在信息处理系统700的应用程序与各种硬件组件(例如处理器710、网络接口740)之间管理或充当中介。在此实施例中,信息处理系统700可包含一个或多个原生应用程序,所述程序可本地(例如在非易失性存储器730内)安装且配置成由处理器710直接执行且与OS直接交互。在此实施例中,原生应用程序可包含预编译机器可执行码。在一些实施例中,原生应用程序可包含脚本解译器(例如Cshell(csh)、苹果脚本(AppleScript)、热键脚本(AutoHotkey))或虚拟执行机(virtualexecution machine;VM)(例如Java虚拟机(Java Virtual Machine)、微软公共语言运行时间(Microsoft Common Language Runtime)),其被配置成将源代码或目标代码转译为随后由处理器710执行的可执行码。
上文所描述的半导体装置可使用各种封装技术来包封。举例来说,根据所公开主题的原理构建的半导体装置可使用下述技术中的任一种来包封:层叠封装(package onpackage;POP)技术、球栅阵列(ball grid array;BGA)技术、芯片尺寸封装(chip scalepackage;CSP)技术、塑料引线芯片载体(plastic leaded chip carrier;PLCC)技术、塑料双列直插式封装(plastic dual in-line package;PDIP)技术、华夫包装式裸片(die inwaffle pack)技术、晶片式裸片(die in wafer form)技术、板上芯片(chip on board;COB)技术、陶瓷双列直插封装(ceramic dual in-line package;CERDIP)技术、塑料公制四方扁平封装(plastic metric quad flat package;PMQFP)技术、塑料四方扁平封装(plastic quad flat package;PQFP)技术、小外形封装(small outline package;SOIC)技术、紧缩小外形封装(shrink small outline package;SSOP)技术、薄型小外形封装(薄型小外形封装;TSOP)技术、薄型四方扁平封装(thin quad flat package;TQFP)技术、系统级封装(system in package;SIP)技术、多芯片封装(multi-chip package;MCP)技术、晶片级构造封装(wafer-level fabricated package;WFP)技术、晶片级处理堆叠封装(wafer-level processed stack package;WSP)技术或如本领域的技术人员将已知的其它技术。
方法步骤可由执行计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并产生输出来执行功能。方法步骤还可由专用逻辑电路来执行且设备可实施为专用逻辑电路,例如FPGA(场可程式化门阵列)或ASIC(专用集成电路)。
在各种实施例中,计算机可读介质可包含在执行时使得装置执行方法步骤中的至少一部分的指令。在一些实施例中,计算机可读介质可包含在磁性介质、光学介质、其它介质或其组合(例如CD-ROM、硬盘驱动器、只读存储器、闪存驱动器)中。在此实施例中,计算机可读介质可以是有形且非暂时性实施的制品。
在已参考实例实施例描述所公开主题的原理时,对本领域的技术人员将显而易见的是可在不脱离这些公开概念的精神和范围的情况下对其作出各种改变以及修改。因此,应理解,上述实施例并非限制性的,而仅是说明性的。因此,所公开概念的范围将通过所附权利要求书和其等效物的最广泛容许的解释来确定,并且不应受前文描述的约束或限制。因此,应理解,所附权利要求书意图覆盖如落入实施例范围内的所有此类修改和改变。
Claims (20)
1.一种异构计算环境的设备,其特征在于,包括:
异构计算环境,至少部分地由任务调度程序控制,所述异构计算环境包括:
处理单元,具有配置成执行指令的固定逻辑电路;
可重编程处理单元,具有可重编程逻辑电路,所述可重编程逻辑电路配置成执行包含用以控制存储器内处理功能的指令的指令;以及
高带宽存储器裸片的堆叠,每一堆叠配置成存储数据并提供可由所述可重编程处理单元控制的存储器内处理功能,其中所述可重编程处理单元至少部分地与所述高带宽存储器裸片一起堆叠;以及
其中所述任务调度程序配置成在所述处理单元与所述可重编程处理单元之间调度计算任务,以及
其中所述计算任务中包含控制所述高带宽存储器裸片的堆叠的存储器内处理功能的部分是分配给所述可重编程处理单元。
2.根据权利要求1所述的设备,其特征在于,所述处理单元包括图形处理单元。
3.根据权利要求1所述的设备,其特征在于,所述处理单元配置成经由远端直接存储器存取来存取存储在所述高带宽存储器裸片中的数据;以及
其中所述可重编程处理单元包含配置成对来自所述处理单元的远端直接存储器存取进行服务的直接存储器存取电路,其中所述远端直接存储器存取针对所述高带宽存储器裸片来进行。
4.根据权利要求1所述的设备,其特征在于,所述处理单元包括配置成对来自所述高带宽存储器裸片的数据进行分级的寄存器存储器。
5.根据权利要求1所述的设备,其特征在于,所述任务调度程序配置成使得所述处理单元执行任务的第一部分,且所述可重编程处理单元执行所述任务的第二部分,
其中所述处理单元配置成暂停所述任务的执行,且至少部分地基于旗标类同步协议来等待将所述任务的执行卸载到所述可重编程处理单元。
6.根据权利要求5所述的设备,其特征在于,所述处理单元配置成轮询所述可重编程处理单元以确定所述可重编程处理单元是否准备好执行所述任务。
7.根据权利要求5所述的设备,其特征在于,所述任务调度程序配置成告知所述处理单元所述可重编程处理单元准备好执行所述任务。
8.一种异构计算环境的设备,其特征在于,包括:
异构计算环境,至少部分地由中央处理单元控制,所述异构计算环境包括:
所述中央处理单元,配置成在固定处理单元与可重编程处理单元之间分配计算任务;
所述固定处理单元,具有配置成执行指令的固定逻辑电路;
所述可重编程处理单元,具有可重编程逻辑电路,所述可重编程逻辑电路配置成执行包含用以控制存储器内处理功能的指令的指令;
高带宽存储器裸片的堆叠,每一堆叠配置成存储数据并提供由所述可重编程处理单元可控制的存储器内处理功能,其中所述可重编程处理单元至少部分地与所述高带宽存储器裸片一起堆叠;以及
中央存储器,包括为所述固定处理单元保留的缓冲器部分,以及为所述可重编程处理单元保留的缓冲器部分,
其中所述计算任务中包含控制所述高带宽存储器裸片的堆叠的存储器内处理功能的部分是分配给所述可重编程处理单元。
9.根据权利要求8所述的设备,其特征在于,所述中央处理单元配置成向所述固定处理单元分配第一任务以用于执行;
其中所述固定处理单元配置成在所述第一任务的执行至少部分地完成时,将数据拷贝到所述中央处理单元;
其中所述中央处理单元配置成向所述可重编程处理单元分配第二任务以用于执行且使得所述数据可用于所述可重编程处理单元。
10.根据权利要求9所述的设备,其特征在于,所述中央处理单元配置成将所述数据从为所述固定处理单元保留的所述缓冲器部分拷贝到为所述可重编程处理单元保留的所述缓冲器部分。
11.根据权利要求8所述的设备,其特征在于,所述中央处理单元配置成至少部分地控制在所述固定处理单元与所述可重编程处理单元之间传送的数据的时序。
12.根据权利要求8所述的设备,其特征在于,所述可重编程处理单元配置成在于所述数据上执行任务之前,将所述数据从所述中央存储器拷贝到所述高带宽存储器裸片。
13.根据权利要求12所述的设备,其特征在于,所述可重编程处理单元配置成在将所述数据从所述中央存储器拷贝到所述高带宽存储器裸片之前,确定触发事件是否已发生。
14.根据权利要求8所述的设备,其特征在于,所述异构计算环境配置成使得所述固定处理单元能够不直接存取所述高带宽存储器裸片。
15.一种异构计算环境的系统,其特征在于,包括:
中央处理单元,配置成向异构计算环境的处理单元分配计算任务;
系统存储器,配置成存储数据;以及
异构加速器多芯片模块,包含所述异构计算环境,其中所述异构加速器多芯片模块包括:
固定处理单元,具有配置成执行指令的固定逻辑电路,
可重编程处理单元,具有可重编程逻辑电路,所述可重编程逻辑电路配置成执行包含用以控制存储器内处理功能的指令的指令;以及
高带宽存储器裸片的堆叠,每一堆叠配置成存储数据并提供可由所述可重编程处理单元控制的存储器内处理功能,其中所述可重编程处理单元至少部分地与所述高带宽存储器裸片一起堆叠,
其中所述计算任务中包含控制所述高带宽存储器裸片的堆叠的存储器内处理功能的部分是分配给所述可重编程处理单元。
16.根据权利要求15所述的系统,其特征在于,所述固定处理单元配置成在向所述固定处理单元分配的任务的执行至少部分地完成时,将数据拷贝到所述系统存储器;以及
其中所述可重编程处理单元配置成在执行需要所述数据的所述可重编程处理单元所分配的任务之前,将所述数据从所述系统存储器拷贝到所述高带宽存储器裸片。
17.根据权利要求16所述的系统,其特征在于,所述固定处理单元配置成经由远端直接存储器存取将所述数据拷贝到所述系统存储器。
18.根据权利要求15所述的系统,其中所述可重编程处理单元配置成在将所述数据从所述系统存储器拷贝到所述高带宽存储器裸片之前,确定触发事件是否已发生。
19.根据权利要求15所述的系统,其特征在于,所述固定处理单元包含图形处理单元;以及
所述可重编程处理单元包含场可程式化门阵列。
20.根据权利要求15所述的系统,其中所述中央处理单元配置成向所述固定处理单元分配任务的第一部分以用于执行,以及向所述可重编程处理单元分配所述任务的第二部分以用于执行;以及
其中所述固定处理单元配置成在所述任务的所述第一部分完成的时间与所述任务的所述第二部分完成的时间之间中断任务的执行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762558745P | 2017-09-14 | 2017-09-14 | |
US62/558,745 | 2017-09-14 | ||
US15/825,047 | 2017-11-28 | ||
US15/825,047 US10474600B2 (en) | 2017-09-14 | 2017-11-28 | Heterogeneous accelerator for highly efficient learning systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109508316A CN109508316A (zh) | 2019-03-22 |
CN109508316B true CN109508316B (zh) | 2023-08-18 |
Family
ID=65631148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810909419.7A Active CN109508316B (zh) | 2017-09-14 | 2018-08-10 | 异构计算环境的设备和系统 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10474600B2 (zh) |
JP (1) | JP7028745B2 (zh) |
KR (1) | KR20190030579A (zh) |
CN (1) | CN109508316B (zh) |
TW (1) | TWI754752B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
US11367707B2 (en) * | 2018-09-26 | 2022-06-21 | Intel Corporation | Semiconductor package or structure with dual-sided interposers and memory |
CN109785224B (zh) * | 2019-01-29 | 2021-09-17 | 华中科技大学 | 一种基于fpga的图数据处理方法和系统 |
US11211378B2 (en) * | 2019-07-18 | 2021-12-28 | International Business Machines Corporation | Heterogeneous integration structure for artificial intelligence computing |
KR102147912B1 (ko) | 2019-08-13 | 2020-08-25 | 삼성전자주식회사 | 프로세서 칩 및 그 제어 방법들 |
KR20210034784A (ko) * | 2019-09-23 | 2021-03-31 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 장치 및 그 제조 방법 |
KR20210042757A (ko) | 2019-10-10 | 2021-04-20 | 삼성전자주식회사 | Pim을 채용하는 반도체 메모리 장치 및 그 동작 방법 |
US11769043B2 (en) | 2019-10-25 | 2023-09-26 | Samsung Electronics Co., Ltd. | Batch size pipelined PIM accelerator for vision inference on multiple images |
CN114787830A (zh) * | 2019-12-20 | 2022-07-22 | 惠普发展公司,有限责任合伙企业 | 异构集群中的机器学习工作负载编排 |
US11385837B2 (en) | 2020-01-07 | 2022-07-12 | SK Hynix Inc. | Memory system |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
US11315611B2 (en) | 2020-01-07 | 2022-04-26 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
US11748100B2 (en) * | 2020-03-19 | 2023-09-05 | Micron Technology, Inc. | Processing in memory methods for convolutional operations |
US11941433B2 (en) | 2020-03-24 | 2024-03-26 | Via Technologies Inc. | Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor |
TWI811620B (zh) * | 2020-03-24 | 2023-08-11 | 威盛電子股份有限公司 | 運算裝置與資料處理方法 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
KR20220032366A (ko) | 2020-09-07 | 2022-03-15 | 삼성전자주식회사 | 가변적인 모드 설정을 수행하는 메모리 장치 및 그 동작방법 |
WO2022139835A1 (en) * | 2020-12-23 | 2022-06-30 | Futurewei Technologies, Inc. | Server architecture with configurable universal expansion slots |
CN115469800A (zh) | 2021-06-10 | 2022-12-13 | 三星电子株式会社 | 数据处理系统以及用于访问异构存储器系统的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156851A (zh) * | 2016-06-24 | 2016-11-23 | 科大讯飞股份有限公司 | 面向深度学习业务的加速装置及方法 |
WO2017107118A1 (en) * | 2015-12-24 | 2017-06-29 | Intel Corporation | Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951193A (en) * | 1986-09-05 | 1990-08-21 | Hitachi, Ltd. | Parallel computer with distributed shared memories and distributed task activating circuits |
US5918248A (en) * | 1996-12-30 | 1999-06-29 | Northern Telecom Limited | Shared memory control algorithm for mutual exclusion and rollback |
US20030216874A1 (en) * | 2002-03-29 | 2003-11-20 | Henry Manus P. | Drive techniques for a digital flowmeter |
US7155602B2 (en) * | 2001-04-30 | 2006-12-26 | Src Computers, Inc. | Interface for integrating reconfigurable processors into a general purpose computing system |
JP3825370B2 (ja) * | 2002-05-24 | 2006-09-27 | 富士通株式会社 | 半導体装置の製造方法 |
US6794273B2 (en) | 2002-05-24 | 2004-09-21 | Fujitsu Limited | Semiconductor device and manufacturing method thereof |
US8108656B2 (en) * | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
EP1443417A1 (en) * | 2003-01-31 | 2004-08-04 | STMicroelectronics S.r.l. | A reconfigurable signal processor with embedded flash memory device |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7506297B2 (en) * | 2004-06-15 | 2009-03-17 | University Of North Carolina At Charlotte | Methodology for scheduling, partitioning and mapping computational tasks onto scalable, high performance, hybrid FPGA networks |
TWI251171B (en) * | 2004-09-21 | 2006-03-11 | Univ Tsinghua | Task scheduling method with low power consumption and a SOC using the method |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US8412872B1 (en) | 2005-12-12 | 2013-04-02 | Nvidia Corporation | Configurable GPU and method for graphics processing using a configurable GPU |
JP4934356B2 (ja) * | 2006-06-20 | 2012-05-16 | 株式会社日立製作所 | 映像処理エンジンおよびそれを含む映像処理システム |
US8806228B2 (en) * | 2006-07-13 | 2014-08-12 | International Business Machines Corporation | Systems and methods for asymmetrical performance multi-processors |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US8296743B2 (en) | 2007-12-17 | 2012-10-23 | Intel Corporation | Compiler and runtime for heterogeneous multiprocessor systems |
JP5331427B2 (ja) * | 2008-09-29 | 2013-10-30 | 株式会社日立製作所 | 半導体装置 |
US8041852B1 (en) * | 2008-12-09 | 2011-10-18 | Calos Fund Limited Liability Company | System and method for using a shared buffer construct in performance of concurrent data-driven tasks |
US7996564B2 (en) * | 2009-04-16 | 2011-08-09 | International Business Machines Corporation | Remote asynchronous data mover |
US8310492B2 (en) * | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
US8874943B2 (en) | 2010-05-20 | 2014-10-28 | Nec Laboratories America, Inc. | Energy efficient heterogeneous systems |
JP5516744B2 (ja) * | 2010-08-27 | 2014-06-11 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US8996644B2 (en) | 2010-12-09 | 2015-03-31 | Solarflare Communications, Inc. | Encapsulated accelerator |
US8745626B1 (en) * | 2012-12-17 | 2014-06-03 | Throughputer, Inc. | Scheduling application instances to configurable processing cores based on application requirements and resource specification |
US9329843B2 (en) | 2011-08-02 | 2016-05-03 | International Business Machines Corporation | Communication stack for software-hardware co-execution on heterogeneous computing systems with processors and reconfigurable logic (FPGAs) |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
WO2013177765A1 (en) * | 2012-05-30 | 2013-12-05 | Intel Corporation | Runtime dispatching among heterogeneous group of processors |
US20140040532A1 (en) | 2012-08-06 | 2014-02-06 | Advanced Micro Devices, Inc. | Stacked memory device with helper processor |
US9304730B2 (en) | 2012-08-23 | 2016-04-05 | Microsoft Technology Licensing, Llc | Direct communication between GPU and FPGA components |
US8737108B2 (en) * | 2012-09-25 | 2014-05-27 | Intel Corporation | 3D memory configurable for performance and power |
US8996781B2 (en) * | 2012-11-06 | 2015-03-31 | OCZ Storage Solutions Inc. | Integrated storage/processing devices, systems and methods for performing big data analytics |
US9110778B2 (en) * | 2012-11-08 | 2015-08-18 | International Business Machines Corporation | Address generation in an active memory device |
US10079044B2 (en) * | 2012-12-20 | 2018-09-18 | Advanced Micro Devices, Inc. | Processor with host and slave operating modes stacked with memory |
US9135185B2 (en) | 2012-12-23 | 2015-09-15 | Advanced Micro Devices, Inc. | Die-stacked memory device providing data translation |
US9658977B2 (en) * | 2013-03-15 | 2017-05-23 | Micron Technology, Inc. | High speed, parallel configuration of multiple field programmable gate arrays |
US9135062B2 (en) * | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
US9244629B2 (en) * | 2013-06-25 | 2016-01-26 | Advanced Micro Devices, Inc. | Method and system for asymmetrical processing with managed data affinity |
US9424079B2 (en) | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US9600346B2 (en) * | 2013-07-10 | 2017-03-21 | International Business Machines Corporation | Thread scheduling across heterogeneous processing elements with resource mapping |
US9146747B2 (en) | 2013-08-08 | 2015-09-29 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing configurable computational imaging pipeline |
US9880971B2 (en) * | 2013-12-20 | 2018-01-30 | Rambus Inc. | Memory appliance for accessing memory |
EP3100562B1 (en) * | 2014-01-31 | 2018-03-07 | Telefonaktiebolaget LM Ericsson (publ) | Scheduling in cellular communication systems |
US9444827B2 (en) * | 2014-02-15 | 2016-09-13 | Micron Technology, Inc. | Multi-function, modular system for network security, secure communication, and malware protection |
JP2017508161A (ja) * | 2014-03-10 | 2017-03-23 | オープンアイオーラブズ リミテッド | 走査型イオンコンダクタンス顕微鏡法 |
KR101887797B1 (ko) * | 2014-05-08 | 2018-09-10 | 마이크론 테크놀로지, 인크. | 메모리 내 가벼운 일관성 |
US9785481B2 (en) * | 2014-07-24 | 2017-10-10 | Qualcomm Innovation Center, Inc. | Power aware task scheduling on multi-processor systems |
US10691663B2 (en) * | 2014-09-16 | 2020-06-23 | Sap Se | Database table copy |
US9424092B2 (en) * | 2014-09-26 | 2016-08-23 | Microsoft Technology Licensing, Llc | Heterogeneous thread scheduling |
US9836277B2 (en) * | 2014-10-01 | 2017-12-05 | Samsung Electronics Co., Ltd. | In-memory popcount support for real time analytics |
WO2016078008A1 (zh) * | 2014-11-19 | 2016-05-26 | 华为技术有限公司 | 调度数据流任务的方法和装置 |
CN104615488B (zh) * | 2015-01-16 | 2018-01-19 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US10528443B2 (en) * | 2015-01-30 | 2020-01-07 | Samsung Electronics Co., Ltd. | Validation of multiprocessor hardware component |
US9542248B2 (en) | 2015-03-24 | 2017-01-10 | International Business Machines Corporation | Dispatching function calls across accelerator devices |
JP6588230B2 (ja) | 2015-05-12 | 2019-10-09 | 愛知株式会社 | 収納式テーブル |
US9983857B2 (en) * | 2015-06-16 | 2018-05-29 | Architecture Technology Corporation | Dynamic computational acceleration using a heterogeneous hardware infrastructure |
US9698790B2 (en) * | 2015-06-26 | 2017-07-04 | Advanced Micro Devices, Inc. | Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces |
US10540588B2 (en) | 2015-06-29 | 2020-01-21 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
US10387314B2 (en) * | 2015-08-25 | 2019-08-20 | Oracle International Corporation | Reducing cache coherence directory bandwidth by aggregating victimization requests |
WO2017048294A1 (en) * | 2015-09-18 | 2017-03-23 | Hewlett Packard Enterprise Development Lp | Memory persistence from a volatile memory to a non-volatile memory |
US10031765B2 (en) * | 2015-09-24 | 2018-07-24 | Intel Corporation | Instruction and logic for programmable fabric hierarchy and cache |
US11036509B2 (en) | 2015-11-03 | 2021-06-15 | Intel Corporation | Enabling removal and reconstruction of flag operations in a processor |
US9996268B2 (en) * | 2015-12-18 | 2018-06-12 | Toshiba Memory Corporation | Memory system and control method of the same |
JP2017135698A (ja) * | 2015-12-29 | 2017-08-03 | 株式会社半導体エネルギー研究所 | 半導体装置、コンピュータ及び電子機器 |
US11079936B2 (en) * | 2016-03-01 | 2021-08-03 | Samsung Electronics Co., Ltd. | 3-D stacked memory with reconfigurable compute logic |
US9977609B2 (en) * | 2016-03-07 | 2018-05-22 | Advanced Micro Devices, Inc. | Efficient accesses of data structures using processing near memory |
US10802992B2 (en) * | 2016-08-12 | 2020-10-13 | Xilinx Technology Beijing Limited | Combining CPU and special accelerator for implementing an artificial neural network |
US10198349B2 (en) * | 2016-09-19 | 2019-02-05 | Advanced Micro Devices, Inc. | Programming in-memory accelerators to improve the efficiency of datacenter operations |
US10416896B2 (en) * | 2016-10-14 | 2019-09-17 | Samsung Electronics Co., Ltd. | Memory module, memory device, and processing device having a processor mode, and memory system |
US20180115496A1 (en) * | 2016-10-21 | 2018-04-26 | Advanced Micro Devices, Inc. | Mechanisms to improve data locality for distributed gpus |
CN108022905A (zh) * | 2016-11-04 | 2018-05-11 | 超威半导体公司 | 使用多个金属层的转接板传输线 |
US20180173619A1 (en) * | 2016-12-21 | 2018-06-21 | Sandisk Technologies Llc | System and Method for Distributed Logical to Physical Address Mapping |
US11119923B2 (en) * | 2017-02-23 | 2021-09-14 | Advanced Micro Devices, Inc. | Locality-aware and sharing-aware cache coherence for collections of processors |
US10489195B2 (en) * | 2017-07-20 | 2019-11-26 | Cisco Technology, Inc. | FPGA acceleration for serverless computing |
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
-
2017
- 2017-11-28 US US15/825,047 patent/US10474600B2/en active Active
-
2018
- 2018-05-22 TW TW107117305A patent/TWI754752B/zh active
- 2018-06-27 KR KR1020180074070A patent/KR20190030579A/ko active IP Right Grant
- 2018-08-10 CN CN201810909419.7A patent/CN109508316B/zh active Active
- 2018-09-13 JP JP2018171047A patent/JP7028745B2/ja active Active
-
2019
- 2019-10-07 US US16/595,452 patent/US11226914B2/en active Active
-
2022
- 2022-01-17 US US17/577,370 patent/US11921656B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017107118A1 (en) * | 2015-12-24 | 2017-06-29 | Intel Corporation | Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment |
CN106156851A (zh) * | 2016-06-24 | 2016-11-23 | 科大讯飞股份有限公司 | 面向深度学习业务的加速装置及方法 |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200042477A1 (en) | 2020-02-06 |
TWI754752B (zh) | 2022-02-11 |
US10474600B2 (en) | 2019-11-12 |
US20190079886A1 (en) | 2019-03-14 |
JP7028745B2 (ja) | 2022-03-02 |
JP2019053734A (ja) | 2019-04-04 |
US20220138132A1 (en) | 2022-05-05 |
US11921656B2 (en) | 2024-03-05 |
CN109508316A (zh) | 2019-03-22 |
KR20190030579A (ko) | 2019-03-22 |
TW201915724A (zh) | 2019-04-16 |
US11226914B2 (en) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109508316B (zh) | 异构计算环境的设备和系统 | |
US11016906B2 (en) | GPU virtualisation | |
EP3155521B1 (en) | Systems and methods of managing processor device power consumption | |
KR102380776B1 (ko) | 가속기 컨트롤러 및 그것의 가속기 로직 로딩 방법 | |
CN108628685B (zh) | 用本地BMC在结构上NVMe内分配共享资源的系统、设备和方法 | |
KR20200003709A (ko) | 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조 | |
EP4332906A2 (en) | Game engine on a chip | |
CN114662088A (zh) | 用于提供对内核和用户空间存储器区域的访问的技术 | |
CN113094326A (zh) | 处理器控制的可编程逻辑器件修改 | |
TWI743400B (zh) | 用以避免負載填充衝突的設備以及系統 | |
US20240193111A1 (en) | Heterogeneous accelerator for highly efficient learning systems | |
CN108572812B (zh) | 存储器加载和算术加载单元(alu)融合 | |
US9081766B2 (en) | Memory and process sharing via input/output with virtualization | |
US20180329711A1 (en) | Banking register renaming to reduce power | |
US20220058062A1 (en) | System resource allocation for code execution | |
JP2021047863A (ja) | ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法 | |
TW202107275A (zh) | 用於暫存器記憶體的系統及設備 | |
CN110928812A (zh) | 电子设备、电子系统和存储器控制器 | |
JP2002140203A (ja) | コンピュータ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |