WO2023016382A1 - 用于片上系统的方法及其相关产品 - Google Patents

用于片上系统的方法及其相关产品 Download PDF

Info

Publication number
WO2023016382A1
WO2023016382A1 PCT/CN2022/110739 CN2022110739W WO2023016382A1 WO 2023016382 A1 WO2023016382 A1 WO 2023016382A1 CN 2022110739 W CN2022110739 W CN 2022110739W WO 2023016382 A1 WO2023016382 A1 WO 2023016382A1
Authority
WO
WIPO (PCT)
Prior art keywords
cluster
memory
storage space
chip
clusters
Prior art date
Application number
PCT/CN2022/110739
Other languages
English (en)
French (fr)
Inventor
葛祥轩
张尧
梁军
Original Assignee
寒武纪(西安)集成电路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 寒武纪(西安)集成电路有限公司 filed Critical 寒武纪(西安)集成电路有限公司
Publication of WO2023016382A1 publication Critical patent/WO2023016382A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit

Definitions

  • the present disclosure generally relates to the technical field of chip design. More specifically, aspects of the present disclosure relate to methods for a system on a chip, a system on a chip, an integrated circuit device, a board, and a computing device.
  • SoC System on Chip
  • SoC System on Chip
  • the micro system usually includes various modules such as a microprocessor integrated on a single chip, an analog IP core, a digital IP core, a memory module (or an off-chip storage control interface), and the like.
  • cache memories are usually set up in the on-chip system, such as the first level cache, the second level cache, and the last level cache farthest from the processor core.
  • LLC Layer Cache
  • the present disclosure provides a board including the integrated circuit device described above and described in detail below.
  • FIG. 1 is a structural diagram showing a board according to an embodiment of the present disclosure
  • FIG. 4 is a schematic diagram showing the internal structure of a multi-core computing device according to an embodiment of the present disclosure
  • the board 10 may also include a storage device 104 for storing data, which includes one or more storage units 105 .
  • the storage device 104 is connected and data transmitted with the control device 106 and the chip 101 through the bus.
  • the control device 106 in the board 10 may be configured to regulate the state of the chip 101 .
  • the control device 106 may include a microcontroller (Micro Controller Unit, MCU).
  • the computing device 201 of the present disclosure can be regarded as having a single-core structure or a homogeneous multi-core structure. However, when considering the integration of the computing device 201 and the processing device 203 together, they are considered to form a heterogeneous multi-core structure.
  • the operation module 32 includes a vector operation unit 321 and a matrix operation unit 322 .
  • the vector operation unit 321 is used to perform vector operations, and can support complex operations such as vector multiplication, addition, and nonlinear transformation;
  • the matrix operation unit 322 is responsible for the core calculation of the deep learning algorithm, that is, matrix multiplication and convolution operations.
  • the storage module 33 is used to store or transfer relevant data, including a neuron storage unit (Neuron RAM, NRAM) 331, a parameter storage unit (Weight RAM, WRAM) 332, and a direct memory access module (Direct Memory Access, DMA) 333.
  • the synchronization module 404 is a global synchronization barrier controller (Global Barrier Controller, GBC), which is used to coordinate the work progress of each cluster and ensure the synchronization of information.
  • GBC Global Barrier Controller
  • the plurality of clusters 405 of the present disclosure are the computing cores of the multi-core computing device 41 . Although 4 clusters are exemplarily shown in FIG. 4 . However, with the development of hardware, the multi-core computing device 41 of the present disclosure may also include 8, 16, 64, or even more clusters 405 . In an application scenario, the cluster 405 can be used to efficiently execute deep learning algorithms.
  • the number of processor cores 406 is exemplarily shown in the figure as four, and the present disclosure does not limit the number of processor cores 406, and its internal architecture is shown in FIG. 5 .
  • Each processor core 406 is similar to the single-core computing device 301 in FIG. 3 , and may also include three modules: a control module 51 , an operation module 52 and a storage module 53 .
  • the functions and structures of the control module 51 , computing module 52 and storage module 53 are roughly the same as those of the control module 31 , computing module 32 and storage module 33 , and will not be repeated here.
  • the broadcast bus 409, the CDMA 410 and the GDMA 411 are respectively used to perform communication between the processor cores 406, communication between the clusters 405, and data transmission between the clusters 405 and the DRAM 204. They will be described separately below.
  • FIG. 7 is a flowchart illustrating a method 700 for a system on chip according to an embodiment of the present disclosure.
  • the method 700 can be used in the aforementioned system-on-chip described in conjunction with FIGS. 1-6 . Therefore, for the purpose of brevity, only a brief description of the SoC will be given below and no further details will be given.
  • cluster memory is visible to all clusters of the system on chip, and each cluster is based on regular IO instructions (for example, including write instructions for performing write operations and read instructions for performing read operations) You can perform read and write operations on the cluster memory.
  • cluster 0 may perform a write operation to the cluster storage after performing the application operation, and write data involved in the current task into the cluster storage.
  • the above integrated units may be implemented in the form of software program modules. If implemented in the form of a software program module and sold or used as a stand-alone product, the integrated unit may be stored in a computer readable memory. Based on this, when the solution of the present disclosure is embodied in the form of a software product (such as a computer-readable storage medium), the software product can be stored in a memory, and it can include several instructions to make a computer device (such as a personal computer, a server, or A network device, etc.) executes part or all of the steps of the method described in the embodiments of the present disclosure.
  • a computer device such as a personal computer, a server, or A network device, etc.
  • the aforementioned storage unit or storage device can be any suitable storage medium (including magnetic storage medium or magneto-optical storage medium, etc.), which can be, for example, a variable resistance memory ("Resistive Random Access Memory”, abbreviated as RRAM), dynamic random access memory (“Dynamic Random Access Memory”, abbreviated as DRAM), static random access memory (“Static Random Access Memory”, abbreviated as SRAM), enhanced dynamic random access memory (“Enhanced Dynamic Random Access Memory”, abbreviated as "EDRAM”), high bandwidth memory (“High Bandwidth Memory”, abbreviated as "HBM”), hybrid memory cube ("Hybrid Memory Cube”, abbreviated as "HMC”), ROM and RAM, etc.
  • RRAM variable resistance memory
  • DRAM dynamic random access memory
  • SRAM static random access memory
  • EDRAM enhanced dynamic random access memory
  • HBM High Bandwidth Memory
  • HMC Hybrid Memory Cube
  • ROM and RAM etc.
  • Operations of the cluster are performed using the cluster memory.
  • the write data is sent to the second cluster in response to a read operation by the second cluster.
  • Clause A5. The method of Clause A1, wherein using the cluster memory to perform operations of the cluster comprises using the cluster memory for data staging for the cluster.
  • Clause A6 The method of Clause A1, wherein using the cluster memory to perform the operations of the cluster comprises using the cluster memory for data sharing among multiple clusters such that a cluster on the cluster memory Temporary data is shared among the rest of the clusters.
  • Clause A7 The method of Clause A1, wherein prior to using the cluster memory to perform operations of the cluster, the method comprises:
  • a write-back operation to an off-chip memory and an invalidation operation are performed on cache lines of the part of the storage space, so as to use the part of the storage space to perform operations of the cluster.
  • Clause A8 The method of Clause A7, wherein before the request is received and/or after an operation of the cluster is performed, the method comprises using the portion of storage space for the cache memory cache operation.
  • Clause A9 The method of Clause A1, further comprising:
  • the request instruction includes an operation code and at least one operand, the operation code is used to identify the request operation and the operand includes the start address and/or size of the part of the storage space.
  • the release instruction includes an operation code and at least one operand
  • the operation code is used to identify the release operation and the operand includes the start address and/or size of the part of the storage space to be released.
  • Clause A11 The method of Clause A10, wherein the operation of the cluster includes some or all of the plurality of clusters cooperating to perform a single task, the method comprising:
  • the part of the storage space is released according to the release instruction.
  • a system on a chip comprising:
  • each cluster includes at least a plurality of processor cores for performing computational operations
  • a cache interconnected with the plurality of clusters and configured to perform:
  • Operations of the cluster are performed using the cluster memory.
  • Clause A13 The system on a chip of Clause A12, wherein the cluster memory is used for inter-cluster broadcast communication or cluster-to-cluster point-to-point communication.
  • write data is sent to the second cluster.
  • Clause A15 The system-on-chip of Clause A14, wherein the second cluster is configured to:
  • the read operation is performed on the cluster memory in response to receiving the hardware semaphore.
  • Clause A16 The system-on-chip of Clause A12, wherein the cluster memory is configured for data scratchpad of the cluster.
  • Clause A17 The system-on-a-chip of Clause A12, wherein the cluster memory is configured for data sharing among multiple clusters, such that data temporarily stored on the cluster memory by one cluster is shared with the remaining multiple clusters .
  • Clause A18 The system-on-chip of Clause A12, wherein the cache memory is configured to:
  • a write-back operation to an off-chip memory and an invalidation operation are performed on cache lines of the part of the storage space, so as to use the part of the storage space to perform operations of the cluster.
  • Clause A19 The system-on-a-chip of clause A18, wherein the cache memory is configured to use the portion of the memory space for all Caching operation of the cache memory described above.
  • Clause A20 The system-on-chip of Clause A12, wherein the cluster memory is further configured to:
  • the part of the storage space is released according to the release instruction, wherein the release instruction includes a start address, a size and/or a mark for identifying a release operation of the part of the storage space to be released.
  • Clause A22 The system-on-a-chip of Clause A21, wherein the operation of the cluster includes some or all of the plurality of clusters cooperatively executing a single task, and during execution of the single task, the cluster memory is configured to be The part or all of the clusters are shared for inter-cluster communication, and after the single task is executed, the part of the storage space is released according to the release instruction.
  • Clause A25 A computing device comprising the board of Clause A24.

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

一种用于片上系统的方法、片上系统、集成电路装置、板卡和计算设备,该计算设备包括在组合处理装置(20)中,该组合处理装置(20)还可以包括接口装置(202)和其他处理装置。该计算装置(201)与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置(20)还可以包括存储装置(204),该存储装置(204)分别与计算装置(201)和其他处理装置连接,用于存储该计算装置(201)和其他处理装置的数据。可以改善高速缓冲存储器的使用效率。

Description

用于片上系统的方法及其相关产品
相关申请的交叉引用
本公开要求于2021年8月12日申请的、申请号为202110926716.4、发明名称为“用于片上系统的方法及其相关产品”的中国专利申请的优先权。
技术领域
本公开一般地涉及芯片设计技术领域。更具体地,本公开的方案涉及用于片上系统的方法、片上系统、集成电路装置、板卡和计算设备。
背景技术
片上系统(“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 Specific Integrated 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及指令译码单元(Instruction Decode 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则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线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 Direct Memory 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)、动态随机存取存储器(“Dynamic Random Access Memory”,简写为DRAM)、静态随机存取存储器(“Static Random Access Memory”,简写为SRAM)、增强动态随机存取存储器(“Enhanced Dynamic Random Access Memory”,简写为“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所述的板卡。
PCT/CN2022/110739 2021-08-12 2022-08-08 用于片上系统的方法及其相关产品 WO2023016382A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110926716.4 2021-08-12
CN202110926716.4A CN115905104A (zh) 2021-08-12 2021-08-12 用于片上系统的方法及其相关产品

Publications (1)

Publication Number Publication Date
WO2023016382A1 true WO2023016382A1 (zh) 2023-02-16

Family

ID=85200567

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/110739 WO2023016382A1 (zh) 2021-08-12 2022-08-08 用于片上系统的方法及其相关产品

Country Status (2)

Country Link
CN (1) CN115905104A (zh)
WO (1) WO2023016382A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537364A (zh) * 2014-07-29 2017-03-22 慧与发展有限责任合伙企业 存储事务
CN106970864A (zh) * 2016-01-13 2017-07-21 三星电子株式会社 片上系统、移动终端和用于操作片上系统的方法
CN107836001A (zh) * 2015-06-29 2018-03-23 微软技术许可有限责任公司 硬件加速器上的卷积神经网络
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537364A (zh) * 2014-07-29 2017-03-22 慧与发展有限责任合伙企业 存储事务
CN107836001A (zh) * 2015-06-29 2018-03-23 微软技术许可有限责任公司 硬件加速器上的卷积神经网络
CN106970864A (zh) * 2016-01-13 2017-07-21 三星电子株式会社 片上系统、移动终端和用于操作片上系统的方法
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device

Also Published As

Publication number Publication date
CN115905104A (zh) 2023-04-04

Similar Documents

Publication Publication Date Title
WO2022161318A1 (zh) 数据处理装置、方法及相关产品
CN111258935B (zh) 数据传输装置和方法
WO2023071238A1 (zh) 计算图的编译、调度方法及相关产品
CN111258769B (zh) 数据传输装置和方法
WO2023016382A1 (zh) 用于片上系统的方法及其相关产品
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
WO2024045580A1 (zh) 用于调度任务的方法及其相关产品
WO2023241478A1 (zh) 人工智能加速器流水线性能分析方法及设备
WO2023016383A1 (zh) 用于高速缓冲存储器的方法及其相关产品
WO2024046018A1 (zh) 指令控制方法、数据缓存方法及相关产品
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN111209230A (zh) 数据处理装置、方法及相关产品
CN111210011B (zh) 数据处理装置及相关产品
CN117667211A (zh) 指令同步控制方法、同步控制器、处理器、芯片和板卡
WO2022111013A1 (zh) 支援多种访问模式的设备、方法及可读存储介质
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2023236929A1 (zh) 基于指令读取数据中的目标数据的方法及其设备
CN115705300A (zh) 用于高速缓冲存储器的方法及其相关产品
CN114281559A (zh) 多核处理器、用于多核处理器的同步方法及相应产品
CN117667212A (zh) 指令控制装置、方法、处理器、芯片和板卡
CN115878553A (zh) 用于片上系统的方法及其相关产品
CN117908959A (zh) 用于执行原子操作的方法及其相关产品
CN118113631A (zh) 一种数据处理系统、方法、设备、介质及计算机程序产品
WO2020063940A1 (zh) 计算装置及相关产品
CN113742266A (zh) 集成电路装置、电子设备、板卡和计算方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22855363

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE