CN115905104A - 用于片上***的方法及其相关产品 - Google Patents
用于片上***的方法及其相关产品 Download PDFInfo
- Publication number
- CN115905104A CN115905104A CN202110926716.4A CN202110926716A CN115905104A CN 115905104 A CN115905104 A CN 115905104A CN 202110926716 A CN202110926716 A CN 202110926716A CN 115905104 A CN115905104 A CN 115905104A
- Authority
- CN
- China
- Prior art keywords
- cluster
- memory
- chip
- clusters
- storage space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种用于片上***的方法、片上***、集成电路装置、板卡和计算设备,该计算设备包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本公开的方案可以改善高速缓冲存储器的使用效率。
Description
技术领域
本公开一般地涉及芯片设计技术领域。更具体地,本公开的方案涉及用于片上***的方法、片上***、集成电路装置、板卡和计算设备。
背景技术
片上***(“System on Chip”,简称“SoC”)是将信息处理的关键部件集成在一块芯片上的微小型***,而该芯片由此构成***级芯片。该微小型***通常包括集成于单个芯片上的微处理器、模拟IP核、数字IP核、存储器模块(或片外存储控制接口)等多种模块。为了实现处理器核对信息(包括各种类型的数据和指令)的高速访问,通常在片上***中设置高速缓冲存储器,例如一级缓存、二级缓存直至距离处理器核最远的最后一级缓存(“Last Level Cache”,简称“LLC”)。尽管当前对于如何高效使用高速缓冲存储器存在各种实现手段,但高速缓冲存储器在多核架构下的使用并没有得到充分扩展和应用。因此,如何充分使用片上***的高速缓冲存储器来适应多核架构的应用场景成为需要解决的技术问题。
发明内容
为了至少解决上述的问题,本公开提出一种将高速缓冲存储器用于集群和集群间操作的解决方案。在本公开的示例性实施场景中,每个集群(“Cluster”)可以视为片上***中的多个处理器核(“Core”)所构成的集合,这些处理器核(或称计算单元)可以配置用于执行包括人工智能领域各类型运算在内的运算任务。为了实现对片上***的高速缓冲存储器的有效利用,本公开在多个方面中提供了如下的技术方案。
在一个方面中,本公开提供了一种用于片上***的方法,所述片上***包括至少用于执行运算操作的多个集群和与该多个集群互联的高速缓冲存储器,每个集群包括用于执行所述运算操作的多个处理器核,所述方法包括:将所述高速缓冲存储器的部分存储空间用作集群存储器;以及使用所述集群存储器来执行所述集群的操作。
在另一个方面中,本公开提供了一种片上***,包括:多个集群,其中每个集群包括至少用于执行运算操作的多个处理器核;以及高速缓冲存储器,其与所述多个集群互联,并且配置成执行:根据来自于所述集群的申请将部分存储空间用作集群存储器;以及使用所述集群存储器来执行所述集群的操作。
在另一个方面中,本公开提供了一种集成电路装置,包括上述和下文将要详细描述的片上***。
在另一个方面中,本公开提供了一种板卡,包括上述和下文将要详细描述的集成电路装置。
在另一个方面中,本公开提供了一种计算设备,包括上述和下文将要详细描述的板卡。
通过上面多个方面中所记载的方案,本领域技术人员可以对高速缓冲存储器进行不同的设置,从而可以有效地扩展高速缓冲存储器的使用,使得高速缓冲存储器在片上***中得到充分的利用。进一步,通过在高速缓冲存储器中设置用于集群操作的集群存储器,促进了集群间的高效信息传输,从而明显提升了片上***的整体性能。另外,通过利用本公开的集群存储器,也可以大幅增加数据访存的缓存命中率。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出根据本公开实施例的板卡的结构图;
图2是示出根据本公开实施例的集成电路装置的结构图;
图3是示出根据本公开实施例的单核计算装置的内部结构示意图;
图4是示出根据本公开实施例的多核计算装置的内部结构示意图;
图5是示出根据本公开实施例的处理器核的内部结构示意图;
图6是示意性示出根据本公开实施例的片上***的架构图;
图7是示出根据本公开实施例的用于片上***的方法的流程图;
图8是示出根据本公开实施例的集群间通信的示意图;以及
图9是示出根据本公开实施例的集群间广播的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,本文所描述的实施例仅是本公开的部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开所保护的范围。
应当理解,本公开的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了充分利用高速缓冲存储器的数据驻留功能,本公开的方案提出一种用于将其部分存储空间配置成集群存储器,以便用于片上***的集群的通信使用。在一个实施方式中,前述的配置可以通过软件来完成,并且配置后的集群存储器的生存期间可以是集群执行任务(例如单个任务)的期间。根据不同的实施方式,该集群通信方式可以是两个集群之间的点对点通信,或者是多个集群之间的数据广播。
下面结合附图来详细描述本公开的具体实施方式。
图1示出根据本公开实施例的一种板卡10的结构示意图。可以理解的是图1所示结构和组成仅仅是一种示例,其并不用于在任何方面对本公开的方案进行限制。
如图1所示,板卡10包括芯片101,其可以是一种***级芯片(System on Chip,SoC)。在一个实施场景中,其可以集成有一个或多个组合处理装置。前述组合处理装置可以是一种人工智能运算单元,用以支持各类深度学***台的存储能力和计算能力有很高的要求,而本实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
进一步如图中所示,芯片101通过对外接口装置102与外部设备103相连接。根据不同的应用场景,外部设备103例如可以是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还可以包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106可以配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出根据上述实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20可以包括计算装置201、接口装置202、处理装置203和动态随机存取存储器(Dynamic Random Access Memory,DRAM)DRAM 204。
计算装置201可以配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器。在一些操作中,其可以用于执行深度学习或机器学习方面的计算,并且还可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202可以用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,其可以是DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置301包括三个主要模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(Instruction Fetch Unit,IFU)311及指令译码单元(InstructionDecode Unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321和矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘和卷积操作。存储模块33用以存储或搬运相关数据,包括神经元存储单元(Neuron RAM,NRAM)331、参数存储单元(Weight RAM,WRAM)332、直接内存访问模块(Direct Memory Access,DMA)333。在一个实施场景中,NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA333通过总线34连接DRAM 204,负责单核计算装置301与DRAM 204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上***,其包括根据本公开的至少一个集群(cluster),每个集群又包括多个处理器核。换言之,多核计算装置41是以片上***-集群-处理器核的层次所构成的。以片上***的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个(如图中示例性地示出2个),其用以响应处理器核发出的访问请求,访问外部存储设备,也即本公开上下文中的片外存储器(例如图2中的DRAM 204),从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(Global Barrier Controller,GBC),用以协调各集群的工作进度,确保信息的同步。本公开的多个集群405是多核计算装置41的计算核心。尽管在图4中示例性地示出4个集群。然而,随着硬件的发展,本公开的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。在一个应用场景中,集群405可以用于高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405可以包括多个处理器核(IPU core)406及一个存储核(MEM core)407,其例如可以包括本公开上下文所描述的高速缓冲存储器(例如LLC)。
处理器核406在图中示例性地示出为4个,本公开不限制处理器核406的数量,并且其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,并且同样可以包括三个模块:控制模块51、运算模块52和存储模块53。控制模块51、运算模块52及存储模块53的功能及其结构大致与控制模块31、运算模块32及存储模块33相同,此处不再赘述。需要特别说明的是,存储模块53可以包括输入/输出直接内存访问模块(Input/Output DirectMemory Access,IODMA)533、搬运直接内存访问模块(Move Direct Memory Access,MVDMA)534。IODMA 533通过广播总线409控制NRAM 531/WRAM 532与DRAM 204的访存;MVDMA 534则用以控制NRAM 531/WRAM 532与存储单元(SRAM)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与DRAM 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407可以具有标量运算的能力,用以执行标量运算。
存储核407可以包括静态随机存取存储器(Static Random-Access Memory,SRAM)408、广播总线409、集群直接内存访问模块(Cluster Direct Memory Access,CDMA)410及全局直接内存访问模块(Global Direct Memory Access,GDMA)411。在一个实施场景中,SRAM 408可以承担高性能数据中转站的角色。由此,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SRAM 408在处理器核406间中转。进一步,存储核407仅需要将复用的数据从SRAM 408迅速分发给多个处理器核406即可,从而可以提高核间通信效率,并显著减少片上片外的输入/输出访问。
广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与DRAM 204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从SRAM 408传输到所有处理器核406的通信方式,属于多播的一种特例。
CDMA 410用以控制在同一个计算装置201内不同集群405间的SRAM 408的访存。GDMA 411与外部存储控制器401协同,用以控制集群405的SRAM 408到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 408中。从前述可知,DRAM 204与NRAM 431或WRAM 432间的通信可以经由2种方式来实现。第一种方式是通过IODAM 433直接和DRAM 204与NRAM 431或WRAM 432通信;第二种方式是先经由GDMA 411使得数据在DRAM 204与SRAM 408间传输,再经过MVDMA 534使得数据在SRAM 408与NRAM 431或WRAM 432间传输。尽管第二种方式可能需要更多的元件参与且数据流较长,但实际上在部分实施例中,第二种方式的带宽远大于第一种方式,因此通过第二种方式来执行DRAM 204与NRAM 431或WRAM 432间的通信可能更为有效。可以理解的是,这里所描述的数据传输方式仅仅是示例性的,并且本领域技术人员根据本公开的教导,也可以根据硬件的具体布置来灵活地选择和适用各种数据传输方式。
在其他的实施例中,GDMA 411的功能和IODMA 533的功能可以整合在同一部件中。尽管本公开为了方便描述,将GDMA 411和IODMA 533视为不同的部件,然而对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本公开类似,即属于本公开的保护范围。进一步地,GDMA 411的功能、IODMA 533的功能、CDMA 410的功能、MVDMA 534的功能也可以由同一部件来实现。
以上结合图1-图5对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。以上述用于不同集群访问SRAM(或经由SRAM实现通信)的CDMA为例,其根据不同的应用场景具有不同的应用或替代方式。例如,以本公开的片上***方案为例,由于本公开利用LLC来实现集群间的通信,因此CDMA并不需要使用在本公开的片上***中。替代地,也可以将CDMA包括在本公开的片上***中,作为集群间通信的备选方式。下面将对本公开的用于片上***的方案进行详细地描述。
图6是示意性示出根据本公开的片上***的架构图。可以理解的是图6中所示片上***是前述结合图1-图5所示出的片上***的简化,其目的旨在强调和突出本公开的方案重点和实质,并且不在任何方面对本公开前述的片上***进行限制。基于此,关于图1-图5的细节描述也同样适用于图6所示片上***,并且为了简明的目的而不在赘述。
如图6中所示,该片上***可以包括集群存储器601和多个集群,例如集群0~集群3。在本公开的方案中,集群存储器601可以是从高速缓冲存储器(例如LLC)中划分(或申请)出的部分存储空间,以用于集群0~集群3中任意一个或多个集群间的数据传递操作。
在一个实施场景中,前述的部分存储空间及其生存期可以依据集群所要执行的任务(“job”)来申请,并且具体地可以通过软件进行设置。例如,该部分存储空间对上层软件操作人员可见,软件操作人员可以直接对该部分存储空间进行配置和管理,并且依据集群需执行的任务来对该部分存储空间进行划分和属性配置。作为优选,可以以待执行的单个任务的粒度来设置集群存储器的大小和生存期。在一个实施场景中,前述的申请操作并不会对集群存储器中先前存储的数据产生影响。换句话说,这些先前存储在集群存储器的存储空间的数据并不会由于申请操作而被清空,或者脏数据(dirty data)也并不会写回到片外存储器(例如DRAM)。由此,可以理解本公开的申请操作仅仅是提前预定高速缓冲存储器中的部分存储空间,而非在申请的同时而实际占用该部分存储空间。通过这样的申请操作,本公开的方案使得高速缓冲存储器的使用更为灵活和高效,避免了片上***有效存储空间的浪费。
图7是示出根据本公开实施例的用于片上***的方法700的流程图。这里,应当理解的是方法700可以用于前述结合附图1-图6描述的片上***。因此,为了简明的目的,下面关于片上***仅做简单的描述而不再赘述。
如图7所示,在步骤S702处,将高速缓冲存储器的部分存储空间用作集群存储器。如前所述,该高速缓冲存储器可以是布置于片上***的存储模块(如图5中的存储模块53)内的高速缓冲存储器,并且与多个集群互联。在一个实施场景中,该高速缓冲存储器可以是LLC,而每个集群可以包括用于执行运算操作的多个处理器核。在一个实施方式中,高速缓冲存储器中可以包含有多个缓存行(cacheline)。在该情形中,本公开的方案可以将高速缓冲存储器中指定数量的缓存行用作集群存储器。在一个实施例中,用作集群存储器的缓存行的数量可以由用户通过软件自定义来设置。在一个场景中,用作集群存储器的缓存行的数量可以小于高速缓冲存储器中缓存行的总数量。换句话说,本公开的方案仅使用部分而非所有的缓存行来用作集群存储器。
为了实现将部分存储空间用作集群存储器,在一个实施例中,可以在用于片上***的“指令集”中增加将高速缓冲存储器的部分存储空间用作集群存储器的申请指令。由此,可以根据前述的申请指令来分配部分存储空间,以用作集群存储器。在一个实施场景中,前述的申请指令可以包括操作码和至少一个操作数,其中操作码用于标识申请操作,而前述的至少一个操作数可以包括所述部分存储空间的起始地址和/或大小。
在执行完上述关于申请指令的申请操作后,在一个实施例中,当需要使用集群存储器时,可以接收使用所述集群存储器来执行集群的操作的请求。接着,响应于所述请求,对所述部分存储空间(也即集群存储器)的缓存行(cacheline)执行向片外存储器的写回操作(例如针对脏数据)以及无效操作,以便使用所述部分存储空间来执行所述集群的操作。换句话说,前述的请求操作可以使得集群存储器被启用并用于集群的操作。反之,在执行了申请操作而未接收到请求前,本公开的方案仍将部分存储空间用于高速缓冲存储器的缓存操作而非集群操作。
当启用了集群存储器后,在步骤S704处,可以使用集群存储器来执行集群的操作。在一个实施例中,使用集群存储器来执行所述集群的操作包括将所述集群存储器用于集群间通信。在一个场景中,可以利用集群存储器来实现集群之间的点对点通信。附加地,在另一个场景中,可以利用集群存储器来实现多个集群之一对其余集群的广播通信。在前述的点对点通信中,集群存储器可以接收来自于第一集群针对写入数据的写操作以及响应于第二集群的读操作,向第二集群发送前述的写入数据。
在一个实施例中,使用所述集群存储器来执行所述集群的操作包括将集群存储器用于所述集群的数据暂存。在该情形中,暂存在集群存储器中的数据并不需要传递至其他的集群,其仅充当存储数据的集群的临时存储器。通过这样的方式,集群存储器可以暂时保存集群例如执行计算操作所获得的中间结果等各种类型的数据。由此,可以提升集群的应用场景和性能,以缓解其对数据存储的要求。在另一个实施例中,与上述用于单个集群的数据暂存不同,集群存储器还可以用于多个集群间的数据共享,以便将一个集群在所述集群存储器上暂存的数据共享于其余的多个集群。
在一个实施例中,当执行完集群的操作后,可以将所述部分存储空间用于所述高速缓冲存储器的缓存操作。换句话说,此时的集群存储器将仅用作高速缓冲存储器的常规操作而非用于集群的操作。为此,在一个实施场景中,可以在指令集中增加释放指令,以及根据该释放指令来释放所述部分存储空间。与前述的申请指令相对应或类似,该释放指令可以包括操作码和至少一个操作数,其中操作码可以用于标识该部分存储空间的释放操作,而至少一个操作数可以包括待释放的所述部分存储空间的起始地址和/或大小。可以理解的是,本公开实施例通过在指令集中增加高速缓冲存储器中部分存储空间的申请指令和释放指令,上层软件应用的用户可以通过配置部分存储空间的起始地址和/或大小等操作来直接对该部分存储空间进行管理。通过这种方式,可以将该高速缓冲存储器的部分存储空间作为高速暂存存储器(Scratchpad memory)使用,通过指令直接访问和管理该部分存储空间,从而实现对高速缓冲存储器的高效管理和有效使用,从而也显著提升了高速缓冲存储器的硬件利用率。
在一个实施例中,集群存储器的生存期间可以是片上***执行单个任务的持续期间。在一个场景中,该单个任务可以由多个集群中的部分或全部集群协同执行。具体地,在单个任务的执行期间,可以使用集群存储器来在部分或全部集群之间执行集群间通信。接着,在执行完单个任务后,可以根据释放指令来释放该部分存储空间。通过这样的申请和释放操作,本公开的高速缓冲存储器的使用效率得到显著提升。进一步,由于针对集群分配专用的部分存储空间,因此本公开片上***的集群之间的通信将更为高效和稳定,从而增强了片上***的整体性能。
图8是示出根据本公开实施例的集群间通信的示意图。可以理解的是,此处仅为了清楚示例的目的示出了集群0和集群1之间的点对点通信,而本公开的方案可以适用于更多个集群之间的通信。
如图8中所示,在步骤0处,集群0可以执行前文的申请操作。例如,该申请操作可以由程序员根据执行当前任务所需的存储空间来通过软件程序设置。在一个实施场景中,可以通过编译器来编译前述的软件程序,以获得相应的申请指令。基于此,本公开的申请指令可以是能够在片上***上执行的二进制指令,从而集群0通过执行该申请指令以得到本公开上下文的集群存储器。在任务的存续期间,该集群存储器对于片上***的所有集群都是可见的,并且各个集群基于常规的IO指令(例如包括用于执行写入操作的写指令和用于执行读操作的读指令)就可以对该集群存储器进行读写操作。例如,在步骤1处,集群0在执行申请操作后,可以执行向集群存储器的写入操作,将当前任务所涉及的数据写入到集群存储器中。
当将数据写入到集群存储器中后,在一个实施场景中,为了保证集群间操作的同步,集群0可以向集群1发送硬件信号量(hsem)。当集群1接收到来自于集群0的硬件信号量后,其即获悉集群0已经将数据写入到集群存储器中,由此集群1向集群存储器发起读操作,如图中步骤3所示。在从集群存储器读取了集群0写入的数据后,当任务已经执行完毕,则在步骤4处,集群1可以执行针对于集群存储器的释放操作。如前所述,此处的释放操作可以通过释放指令来执行。通过执行释放指令,集群存储器内指定范围的所有数据都将会被销毁。由于该销毁操作会删除所涉及的所有数据,因此必须在针对该指定范围的所有访问都执行完毕后才能进行。鉴于此,集群间针对该指定范围的访问操作需要进行同步。在一个实现场景中,本公开提出由程序员通过软件手动***同步指令,从而保证在如步骤4的释放操作前完成针对指定范围的所有访存操作。
图9是示出根据本公开实施例的集群间广播的示意图。如图9所示,本例中的片上***包括四个集群,即集群0~集群3,其中集群0将数据写入进集群存储器中,并且集群1~集群3分别从集群存储器中读取该数据,从而完成集群间的广播操作。与图8中所示出的点对点通信类似,集群0可以通过申请操作来确定集群存储器的空间大小,并且该指定区域对于集群1~集群3可见。接着,集群0可以通过硬件信号量来向集群1~集群3通知数据已经写入进集群存储器。此后,集群1~集群3可以从集群存储器读取先前集群0写入的数据,从而完成此次的广播操作。当完成读取操作并且当前任务已经执行完毕后,程序员可以通过软件指令来确定集群1~集群3中一集群来执释放操作,从而释放该集群存储器的存储空间,以用于例如高速缓冲存储器的常规缓存操作。
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场景,本公开的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本公开的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。
进一步,本公开的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本公开将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本公开的方案并不受所描述的动作的顺序限制。因此,依据本公开的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本公开所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本公开某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本公开对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本公开某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本公开的公开和教导,本领域技术人员可以理解本公开中的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本公开中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本公开的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本公开实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(“Read Only Memory”,简写为ROM)、随机存取存储器(“Random Access Memory”,简写为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(“Resistive Random Access Memory”,简写为RRAM)、动态随机存取存储器(“DynamicRandom Access Memory”,简写为DRAM)、静态随机存取存储器(“Static Random AccessMemory”,简写为SRAM)、增强动态随机存取存储器(“Enhanced Dynamic Random AccessMemory”,简写为“EDRAM”)、高带宽存储器(“High Bandwidth Memory”,简写为“HBM”)、混合存储器立方体(“Hybrid Memory Cube”,简写为“HMC”)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1.一种用于片上***的方法,所述片上***包括至少用于执行运算操作的多个集群和与该多个集群互联的高速缓冲存储器,每个集群包括用于执行所述运算操作的多个处理器核,所述方法包括:
将所述高速缓冲存储器的部分存储空间用作集群存储器;以及
使用所述集群存储器来执行所述集群的操作。
条款A2.根据条款A1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于集群间通信。
条款A3.根据条款A2所述的方法,其中将所述集群存储器用于集群间通信包括:
利用所述集群存储器来实现集群之间的点对点通信;或者
利用所述集群存储器来实现多个集群之一对其余集群的广播通信。
条款A4.根据条款A3所述的方法,其中利用所述集群存储器来实现集群之间的点对点通信包括:
接收来自于第一集群针对写入数据的写操作;以及
响应于第二集群的读操作,向所述第二集群发送所述写入数据。
条款A5.根据条款A1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于所述集群的数据暂存。
条款A6.根据条款A1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于多个集群间的数据共享,以便将一个集群在所述集群存储器上暂存的数据共享于其余的多个集群。
条款A7.根据条款A1所述的方法,其中在使用所述集群存储器来执行所述集群的操作前,所述方法包括:
接收使用所述集群存储器来执行集群的操作的请求;以及
响应于所述请求,对所述部分存储空间的缓存行执行向片外存储器的写回操作以及无效操作,以便使用所述部分存储空间来执行所述集群的操作。
条款A8.根据条款A7所述的方法,其中在未接收到所述请求前和/或在执行完所述集群的操作后,所述方法包括将所述部分存储空间用于所述高速缓冲存储器的缓存操作。
条款A9.根据条款A1所述的方法,还包括:
接收将部分存储空间用作集群存储器的申请指令;以及
根据所述申请指令来分配所述部分存储空间,以用作集群存储器,
其中所述申请指令包括操作码和至少一个操作数,所述操作码用于标识申请操作并且所述操作数包括所述部分存储空间的起始地址和/或大小。
条款A10.根据条款A1或A9所述的方法,还包括:
接收释放所述部分存储空间的释放指令;以及
根据所述释放指令来释放所述部分存储空间,
其中所述释放指令包括操作码和至少一个操作数,所述操作码用于标识释放操作并且所述操作数包括待释放的所述部分存储空间的起始地址和/或大小。
条款A11.根据条款A10所述的方法,其中所述集群的操作包括多个集群中的部分或全部集群协同执行单个任务,所述方法包括:
在所述单个任务的执行期间,使用所述集群存储器来在所述部分或全部集群之间执行集群间通信;以及
在执行完所述单个任务后,根据所述释放指令来释放所述部分存储空间。
条款A12.一种片上***,包括:
多个集群,其中每个集群包括至少用于执行运算操作的多个处理器核;以及
高速缓冲存储器,其与所述多个集群互联,并且配置成执行:
根据来自于所述集群的申请将部分存储空间用作集群存储器;以及
使用所述集群存储器来执行所述集群的操作。
条款A13.根据条款A12所述的片上***,其中所述集群存储器用作集群间的广播通信或集群与集群之间的点对点通信。
条款A14.根据条款A13所述的片上***,其中在所述点对点通信中,所述集群存储器配置成:
接收来自于第一集群针对写入数据的写操作;以及
响应于第二集群的读操作,向所述第二集群发送写入数据。
条款A15.根据条款A14所述的片上***,其中所述第二集群配置成:
接收来自于所述第一集群的硬件信号量;以及
响应于接收到所述硬件信号量,对所述集群存储器执行所述读操作。
条款A16.根据条款A12所述的片上***,其中所述集群存储器配置成用于所述集群的数据暂存。
条款A17.根据条款A12所述的片上***,其中所述集群存储器配置成用于多个集群间的数据共享,以便将一个集群在所述集群存储器上暂存的数据共享于其余的多个集群。
条款A18.根据条款A12所述的片上***,其中所述高速缓冲存储器配置成:
接收使用所述集群存储器来执行集群的操作的请求;以及
响应于所述请求,对所述部分存储空间的缓存行执行向片外存储器的写回操作以及无效操作,以便使用所述部分存储空间来执行所述集群的操作。
条款A19.根据条款A18所述的片上***,其中在未接收到所述请求前和/或在执行完所述集群的操作后,所述高速缓冲存储器配置成将所述部分存储空间用于所述高速缓冲存储器的缓存操作。
条款A20.根据条款A12所述的片上***,其中所述集群存储器还配置成:
从所述集群接收将部分存储空间用作集群存储器的申请指令;以及
根据所述申请指令来分配部分存储空间,以用作所述集群存储器,其中所述申请指令包括所述部分存储空间的起始地址、大小和/或用于标识申请操作的标记。
条款A21.根据条款A12或A20所述的片上***,其中所述集群存储器还配置成:
从所述集群接收释放所述部分存储空间的释放指令;以及
根据所述释放指令来释放所述部分存储空间,其中所述释放指令包括待释放的所述部分存储空间的起始地址、大小和/或用于标识释放操作的标记。
条款A22.根据条款A21所述的片上***,其中所述集群的操作包括多个集群中的部分或全部集群协同执行单个任务,并且在所述单个任务的执行期间,所述集群存储器配置成被所述部分或全部集群共享,以用于集群间通信,并且在执行完所述单个任务后,根据所述释放指令来释放所述部分存储空间。
条款A23.一种集成电路装置,包括根据条款A12-A22的任意一项所述的片上***。
条款A24.一种板卡,包括根据条款A23所述的集成电路装置。
条款A25.一种计算设备,包括根据条款A24所述的板卡。
虽然本文已经示出和描述了本公开的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施例的各种替代方案。所附权利要求书旨在限定本公开的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (25)
1.一种用于片上***的方法,所述片上***包括至少用于执行运算操作的多个集群和与该多个集群互联的高速缓冲存储器,每个集群包括用于执行所述运算操作的多个处理器核,所述方法包括:
将所述高速缓冲存储器的部分存储空间用作集群存储器;以及
使用所述集群存储器来执行所述集群的操作。
2.根据权利要求1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于集群间通信。
3.根据权利要求2所述的方法,其中将所述集群存储器用于集群间通信包括:
利用所述集群存储器来实现集群之间的点对点通信;或者
利用所述集群存储器来实现多个集群之一对其余集群的广播通信。
4.根据权利要求3所述的方法,其中利用所述集群存储器来实现集群之间的点对点通信包括:
接收来自于第一集群针对写入数据的写操作;以及
响应于第二集群的读操作,向所述第二集群发送所述写入数据。
5.根据权利要求1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于所述集群的数据暂存。
6.根据权利要求1所述的方法,其中使用所述集群存储器来执行所述集群的操作包括将所述集群存储器用于多个集群间的数据共享,以便将一个集群在所述集群存储器上暂存的数据共享于其余的多个集群。
7.根据权利要求1所述的方法,其中在使用所述集群存储器来执行所述集群的操作前,所述方法包括:
接收使用所述集群存储器来执行集群的操作的请求;以及
响应于所述请求,对所述部分存储空间的缓存行执行向片外存储器的写回操作以及无效操作,以便使用所述部分存储空间来执行所述集群的操作。
8.根据权利要求7所述的方法,其中在未接收到所述请求前和/或在执行完所述集群的操作后,所述方法包括将所述部分存储空间用于所述高速缓冲存储器的缓存操作。
9.根据权利要求1所述的方法,还包括:
接收将部分存储空间用作集群存储器的申请指令;以及
根据所述申请指令来分配所述部分存储空间,以用作集群存储器,
其中所述申请指令包括操作码和至少一个操作数,所述操作码用于标识申请操作并且所述操作数包括所述部分存储空间的起始地址和/或大小。
10.根据权利要求1或9所述的方法,还包括:
接收释放所述部分存储空间的释放指令;以及
根据所述释放指令来释放所述部分存储空间,
其中所述释放指令包括操作码和至少一个操作数,所述操作码用于标识释放操作并且所述操作数包括待释放的所述部分存储空间的起始地址和/或大小。
11.根据权利要求10所述的方法,其中所述集群的操作包括多个集群中的部分或全部集群协同执行单个任务,所述方法包括:
在所述单个任务的执行期间,使用所述集群存储器来在所述部分或全部集群之间执行集群间通信;以及
在执行完所述单个任务后,根据所述释放指令来释放所述部分存储空间。
12.一种片上***,包括:
多个集群,其中每个集群包括至少用于执行运算操作的多个处理器核;以及
高速缓冲存储器,其与所述多个集群互联,并且配置成执行:
根据来自于所述集群的申请将部分存储空间用作集群存储器;以及
使用所述集群存储器来执行所述集群的操作。
13.根据权利要求12所述的片上***,其中所述集群存储器用作集群间的广播通信或集群与集群之间的点对点通信。
14.根据权利要求13所述的片上***,其中在所述点对点通信中,所述集群存储器配置成:
接收来自于第一集群针对写入数据的写操作;以及
响应于第二集群的读操作,向所述第二集群发送写入数据。
15.根据权利要求14所述的片上***,其中所述第二集群配置成:
接收来自于所述第一集群的硬件信号量;以及
响应于接收到所述硬件信号量,对所述集群存储器执行所述读操作。
16.根据权利要求12所述的片上***,其中所述集群存储器配置成用于所述集群的数据暂存。
17.根据权利要求12所述的片上***,其中所述集群存储器配置成用于多个集群间的数据共享,以便将一个集群在所述集群存储器上暂存的数据共享于其余的多个集群。
18.根据权利要求12所述的片上***,其中所述高速缓冲存储器配置成:
接收使用所述集群存储器来执行集群的操作的请求;以及
响应于所述请求,对所述部分存储空间的缓存行执行向片外存储器的写回操作以及无效操作,以便使用所述部分存储空间来执行所述集群的操作。
19.根据权利要求18所述的片上***,其中在未接收到所述请求前和/或在执行完所述集群的操作后,所述高速缓冲存储器配置成将所述部分存储空间用于所述高速缓冲存储器的缓存操作。
20.根据权利要求12所述的片上***,其中所述集群存储器还配置成:
从所述集群接收将部分存储空间用作集群存储器的申请指令;以及
根据所述申请指令来分配部分存储空间,以用作所述集群存储器,其中所述申请指令包括所述部分存储空间的起始地址、大小和/或用于标识申请操作的标记。
21.根据权利要求12或20所述的片上***,其中所述集群存储器还配置成:
从所述集群接收释放所述部分存储空间的释放指令;以及
根据所述释放指令来释放所述部分存储空间,其中所述释放指令包括待释放的所述部分存储空间的起始地址、大小和/或用于标识释放操作的标记。
22.根据权利要求21所述的片上***,其中所述集群的操作包括多个集群中的部分或全部集群协同执行单个任务,并且在所述单个任务的执行期间,所述集群存储器配置成被所述部分或全部集群共享,以用于集群间通信,并且在执行完所述单个任务后,根据所述释放指令来释放所述部分存储空间。
23.一种集成电路装置,包括根据权利要求12-22的任意一项所述的片上***。
24.一种板卡,包括根据权利要求23所述的集成电路装置。
25.一种计算设备,包括根据权利要求24所述的板卡。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110926716.4A CN115905104A (zh) | 2021-08-12 | 2021-08-12 | 用于片上***的方法及其相关产品 |
PCT/CN2022/110739 WO2023016382A1 (zh) | 2021-08-12 | 2022-08-08 | 用于片上***的方法及其相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110926716.4A CN115905104A (zh) | 2021-08-12 | 2021-08-12 | 用于片上***的方法及其相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115905104A true CN115905104A (zh) | 2023-04-04 |
Family
ID=85200567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110926716.4A Pending CN115905104A (zh) | 2021-08-12 | 2021-08-12 | 用于片上***的方法及其相关产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115905104A (zh) |
WO (1) | WO2023016382A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016018262A1 (en) * | 2014-07-29 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Storage transactions |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US10025741B2 (en) * | 2016-01-13 | 2018-07-17 | Samsung Electronics Co., Ltd. | System-on-chip, mobile terminal, and method for operating the system-on-chip |
CN207440765U (zh) * | 2017-01-04 | 2018-06-01 | 意法半导体股份有限公司 | 片上***和移动计算设备 |
-
2021
- 2021-08-12 CN CN202110926716.4A patent/CN115905104A/zh active Pending
-
2022
- 2022-08-08 WO PCT/CN2022/110739 patent/WO2023016382A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023016382A1 (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022161318A1 (zh) | 数据处理装置、方法及相关产品 | |
CN111258935B (zh) | 数据传输装置和方法 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN111258769B (zh) | 数据传输装置和方法 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN115905104A (zh) | 用于片上***的方法及其相关产品 | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN114281559A (zh) | 多核处理器、用于多核处理器的同步方法及相应产品 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN111209230A (zh) | 数据处理装置、方法及相关产品 | |
CN118113631B (zh) | 一种数据处理***、方法、设备、介质及计算机程序产品 | |
CN114648438A (zh) | 处理图像数据的设备、方法及可读存储介质 | |
WO2024045580A1 (zh) | 用于调度任务的方法及其相关产品 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN114647442A (zh) | 根据指令集运行的设备 | |
CN115437693A (zh) | 根据多操作指令及单操作指令运行的计算装置 | |
CN117667212A (zh) | 指令控制装置、方法、处理器、芯片和板卡 | |
CN117311812A (zh) | 用于重排序缓冲的方法及其相关产品 | |
CN115705300A (zh) | 用于高速缓冲存储器的方法及其相关产品 | |
CN117667211A (zh) | 指令同步控制方法、同步控制器、处理器、芯片和板卡 | |
CN115878553A (zh) | 用于片上***的方法及其相关产品 | |
CN114565075A (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
CN114429194A (zh) | 处理神经网络计算的装置、板卡、方法及可读存储介质 | |
CN117311813A (zh) | 用于重排序缓冲的方法及其相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |