CN116089356A - 近存计算装置、近存计算方法、集成电路及存储介质 - Google Patents

近存计算装置、近存计算方法、集成电路及存储介质 Download PDF

Info

Publication number
CN116089356A
CN116089356A CN202310376476.4A CN202310376476A CN116089356A CN 116089356 A CN116089356 A CN 116089356A CN 202310376476 A CN202310376476 A CN 202310376476A CN 116089356 A CN116089356 A CN 116089356A
Authority
CN
China
Prior art keywords
memory
unit
module
computing
calculation
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.)
Granted
Application number
CN202310376476.4A
Other languages
English (en)
Other versions
CN116089356B (zh
Inventor
张倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hongshan Microelectronics Technology Co ltd
Original Assignee
Beijing Hongshan Microelectronics Technology Co ltd
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 Beijing Hongshan Microelectronics Technology Co ltd filed Critical Beijing Hongshan Microelectronics Technology Co ltd
Priority to CN202310376476.4A priority Critical patent/CN116089356B/zh
Publication of CN116089356A publication Critical patent/CN116089356A/zh
Application granted granted Critical
Publication of CN116089356B publication Critical patent/CN116089356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及近存计算领域,公开了一种近存计算装置、近存计算方法、集成电路及存储介质,该装置包括:控制单元、内存单元、近存计算单元、缓存单元和原计算单元;控制单元分别与内存单元、缓存单元和近存计算单元连接;近存计算单元通过总线分别与控制单元和缓存单元连接,还通过接口和内存单元连接;近存计算单元用于接收到来自控制单元或内存单元的程序指令后,确定并执行程序指令中的第一计算任务;原计算单元用于对缓存单元中的数据执行程序指令中的第二计算任务。通过设置近存计算单元,将原计算单元的任务分配到近存计算单元中,减少了缓存单元的数据搬移量,降低了功耗比,提高了整体计算效率。

Description

近存计算装置、近存计算方法、集成电路及存储介质
技术领域
本发明涉及近存计算领域,尤其涉及一种近存计算装置、近存计算方法、集成电路及存储介质。
背景技术
高性能众核计算系统(High Performance ManyCore Computing)定义为多个处理器Core(核)和多个处理器Thread(线程)进行紧耦合,通过总线和交叉开关来共享存储器,并且通过有效的调度方法来协同多个Core/Thread执行并发指令,并同时处理超长的数据流,最终提供优秀计算性能的系统。在对目前计算机市场产品和方案进行调研,绝大部分产品都使用冯.诺伊曼架构,数据的存储和计算单元分离,计算单元和存储器之间通过数据总线进行交互。这种架构当计算单元的发展远快于存储器时,将暴露存在两个缺陷:依赖计算单元对数值进行处理,但“内存墙”严重制约了芯片的整体性能提升。计算单元需要对大量的数据进行处理,但数据在存储器和计算单元之间的搬移将占用70%以上的芯片功耗。使得芯片的算力提升遭受极大的制约,造成功耗的浪费。
发明内容
第一方面,本申请提供一种近存计算装置,包括:控制单元、内存单元、近存计算单元、缓存单元和原计算单元;
所述控制单元分别与所述内存单元、所述缓存单元和所述近存计算单元连接;所述近存计算单元通过总线分别与所述控制单元和所述缓存单元连接,还通过接口和所述内存单元连接;
所述近存计算单元用于接收到来自所述控制单元或所述内存单元的程序指令后,确定并执行所述程序指令中的第一计算任务;
所述原计算单元用于对所述缓存单元中的数据执行所述程序指令中的第二计算任务。
进一步的,所述近存计算单元包括:功能算子模块、配置模块、取值存储模块、内存控制器接口、上行模块和下行模块;
所述功能算子模块包括多种算子,用于根据所述程序指令执行所述第一计算任务;
所述上行模块用于执行上行会话,当接收来自所述内存单元的程序指令,根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述控制单元;
所述下行模块用于执行下行会话,当接收来自所述控制单元的程序指令时,根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述内存单元;
所述配置模块用于存放所述近存计算单元的配置信息,所述配置信息包括参与相应计算任务的目的地址;
所述取值存储模块用于根据所述配置信息,确定所述上行模块或所述下行模块中所需要参与计算的数据,并调用所述功能算子模块对需要进行参与计算的数据进行计算;
所述内存控制器接口用于对接所述内存单元,以将接收来自所述内存单元的数据发送给所述上行模块,以及将所述下行模块的数据发送给所述内存单元。
进一步的,所述功能算子模块包括浮点处理算子、整数处理算子、归约算子和稀疏矩阵算子中的至少一种;
所述浮点处理算子用于执行加运算、减运算、以及移位运算;
所述整数处理算子用于执行与运算、或运算和异或运算;
所述归约算子用于执行归约运算、分布运算、数据分发运算和比较交换运算;
所述稀疏矩阵算子用于执行稀疏矩阵的格式变化、小矩阵的压缩与解压缩操作。
进一步的,所述近存计算单元还包括:指令解析模块;
所述指令解析模块用于解析来自总线的程序指令,并根据所述程序指令,对所述配置模块中的配置信息进行更新。
进一步的,所述上行模块包括总线封装模块和上行缓存区;
所述上行缓存区用于缓存所述内存控制器接口接收到的来自所述内存单元的数据,以及所述功能算子模块计算得到的计算结果;
所述总线封装模块用于根据对应的接口协议类型,将所述上行缓存区中的数据转换为标准总线数据。
进一步的,所述下行模块包括总线解析模块和下行缓存区;
所述总线解析模块用于将来自所述控制单元的程序指令缓存入所述下行缓存区;
所述下行缓存区用于缓存来自所述总线解析模块的所述程序指令,以及所述功能算子模块计算得到的计算结果。
进一步的,所述取值存储模块用于根据所述配置信息,确定所述上行模块或所述下行模块中所需要参与计算的数据,包括:
所述取值存储模块读取所述上行缓存区或所述下行缓存区中的首地址,将所述首地址和所述目的地址进行匹配,以确定参与第一计算任务的数据。
第二方面,本申请还提供一种近存计算方法,应用于如所述近存计算装置中,所述方法包括:
当进行上行会话或下行会话时,所述近存计算单元确定并执行所述程序指令中的第一计算任务;
由所述原计算单元对所述缓存单元中的数据执行所述程序指令中的第二计算任务。
第三方面,本申请还提供一种集成电路,所述集成电路包括多个处理器、多个存储器,其中,所述集成电路采用所述的近存计算装置来实现所述多个功能单元之间的近存计算功能。
第四方面,本申请还提供一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上执行时,实施所述的近存计算装置的近存计算。
本发明公开了一种近存计算装置、近存计算方法、集成电路及存储介质,该设备包括:包括:控制单元、内存单元和近存计算单元;所述控制单元分别与所述内存单元、所述缓存单元和所述计算单元连接;所述近存计算单元通过总线分别与所述控制单元和所述缓存单元连接,还通过接口和所述内存单元连接;所述近存计算单元用于接收到来自所述控制单元或所述内存单元的程序指令后,确定并执行所述程序指令中的第一计算任务;所述原计算单元用于对所述缓存单元中的数据执行所述程序指令中的第二计算任务。通过近存计算单元分担一部分重复性、适合在内存读出和写入时刻进行的算子,减少了计算时的数据搬运,提高了处理器的工作效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了一种计算机设备结构示意图;
图2示出了本申请实施例一种近存计算装置结构示意图;
图3示出了本申请实施例一种近存计算单元结构示意图;
图4示出了本申请实施例一种上行模块结构示意图;
图5示出了本申请实施例一种下行模块结构示意图;
图6示出了本申请实施例一种近存计算方法流程示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
本申请的技术方案应用于计算机设备中,如图1所示,当前的计算机设备包括控制单元100、内存单元200、原计算单元300和缓存单元400。其中,控制单元100、原计算单元300和缓存单元400可以认为是中央处理器,即控制芯片,内存单元200通过总线和中央处理器连接,进行数据交互。
当执行程序时,会需要原计算单元300执行程序中的计算命令,可以理解,程序数据会从内存单元200传递到缓存单元400然后才会进入原计算单元300中,因此无论原计算单元300的计算性能多高,一个计算指令的计算速度依旧会受制于缓存单元400的读写速度,并且在整个程序的执行过程中,会发生多次数据从缓存单元400搬移到原计算单元300,再从原计算单元300搬移到缓存单元400的情况,会极大的增加处理器的芯片功耗。
而本申请通过在内存与控制单元间增加了一个近存计算单元,将部分适合在内存入口和出口的运算定义为近存计算单元,先通过该近存计算单元进行计算处理,从而减少了上述的数据搬移情况,增加计算效率和降低功耗。
接下来以具体的实施例说明本申请的技术方案。
实施例1
如图2所示,为本实施例一种近存计算装置结构示意图。
本实施例的近存计算装置包括:控制单元100、内存单元200、原计算单元300、缓存单元400和近存计算单元500。
其中,近存计算单元500设置于控制单元100与内存单元200之间,当有数据从内存单元200流向控制单元100时,会先经过近存计算单元500,这样近存计算单元500可以在程序指令抵达缓存单元400前,完成相应的计算,再将计算结果直接发送给控制单元100,以实现减少程序数据在缓存单元400与原计算单元300之间频繁搬迁的操作。
例如,所述近存计算单元300可以在所述内存单元200中的程序指令上传至所述控制单元前,执行所述程序指令中对应的计算操作,并将计算结果发送至所述控制单元100。其中,近存计算单元300因为比缓存单元400更靠近内存,在程序指令和参与计算的数据进入缓存单元200之前就接受到了程序指令,因此可以执行完整运算流程中的更适合在内存入口和出口完成的类似:格式变换、算数运算的重复步骤、数据归约的第一任务,而相对流程复杂,形式多变的第二计算任务由原计算单元300执行。
从内存单元200中传输程序指令至控制单元100的过程为上行过程,例如对数据的分析修改等程序,就需要由上行操作将程序指令发送给控制单元100,通过获取返回值,确定下一步程序的走向。此时的近存计算单元500因为其设置的位置较缓存单元400更接近内存单元200,所以可以先得到传输过来的程序指令,对这些程序指令进行解析,然后根据程序指令进行相应的计算。可以理解,本实施例的近存计算单元都支持更适合在近存位置完成的重复性运算,例如多目标的加法和位运算,归约和格式变换运算、矩阵的数据压缩和解压缩等,例如加法减法,一些逻辑运算和简单的稀疏矩阵计算,而这些计算由对应的算子提供计算功能。
从控制单元100传输程序指令至内存单元200的过程为下行过程,例如对内存单元200或者计算机内的存储介质进行写操作时,会进行下行操作。类似于上述的上行过程,通过对来自控制单元100的程序指令进行解析,然后执行对应的计算操作,最后将计算结果发送至内存单元200中。
可以理解,计算机中任何的程序指令传输,都是上述各个功能单元之间的一次交互过程,也是数据交换和数据计算过程,一次交互中的程序可能带有近存计算单元500无法处理的计算指令,这些计算指令不会被执行,而是会按照现有方式,交给后续的原计算单元300处理,则由近存计算单元500处理。由此实现原计算单元300处计算任务的分流,进而降低了进入缓存单元的数据量,从而减少了数据搬移的次数,加快了处理速度。
具体的,如图3所示,为本实施例近存计算单元500的结构示意图。
该近存计算单元包括:配置模块510、上行模块520取值存储模块530、功能算子模块540、下行模块550和内存控制器接口560。
其中,配置模块510用于存放所述近存计算单元的配置信息。
该配置信息是从程序指令中解析得到的,可以理解,一个程序指令,会指示参与运算的参数的地址,运算方法等,不同的程序指令,其涉及的运算都会不一样,因此当程序指令到达近存设备时,会需要对该近存设备进行配置,告知近存设备该命令所涉及到的运算是哪些,涉及的参数所存储的地址,根据这些信息以正确的进行计算。这些配置信息存储在配置模块510中即完成了配置,运行程序时,根据该配置信息来完成对应的计算工作。
具体的,可以通过设置一个指令解析模块来对该配置模块510进行配置,指令解析模块用于解析来自总线的程序指令,并根据所述执行指令,对所述配置模块中的数据进行更新,从而实现对程序指令的解析以及对配置模块510的配置。
其中,所述功能算子模块540用于根据程序指令进行计算操作。
功能算子模块540中包含多个算子,例如浮点处理算子、整数处理算子、归约算子和稀疏矩阵算子。其中浮点处理算子用于执行加、减、移位运算。所述整数处理算子用于执行与、或和异或运算。所述归约算子用于执行归约、分布和数据分发、比较交换等运算;所述稀疏矩阵算子用于执行稀疏矩阵的格式变换、稀疏子矩阵的压缩与解压缩操作。这些算子所执行的计算任务都归属于上述的第一计算任务中。
算子的种类支持近存计算单元进行相应的功能计算,在各种计算操作中,例如累加、位变换、归约操作等,往往这些算子操作步骤不复杂,指令规律性很强,而且还是整体计算/分部计算的最后一步,因此可以将这些计算交给近存计算单元,如上述的浮点处理算子、整数处理算子设置在近存计算单元中,以减少这些简单计算对缓存单元的使用。此外,计算过程中数据的存储格式往往直接影响计算单元的运行效率,部分指令必须用于源数据格式变化、数据搬移操作,这种频繁操作会导致指令执行效率低和缓存和内存的刷新,引起系统性能下降。因此可以将归约算子和稀疏矩阵算子设置在近存计算单元中,实现计算的优化。
例如浮点处理算子,其支持的通用算子描述表如下:
整数处理算子支持的功能描述表如下:
归约算子支持的功能描述表如下:
稀疏矩阵算子支持的功能描述表如下:
上行模块520用于接收来自所述内存单元的程序指令,并根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述控制单元。
如图4所示,上行模块520包括总线封装模块521和上行缓存区522。
所述上行缓存区522用于缓存所述内存控制器接口560接收到的来自所述内存单元200的数据,以及所述功能算子模块540计算得到的计算结果。
所述总线封装模块521用于根据对应的接口协议类型,将所述上行缓存区中的接口数据转换为标准总线数据。转换成标准总线数据后,才能够通过总线,发送给控制单元100。
可以理解,在计算机底层的所有计算,都是数据存储在缓存中,按照程序指令进行相应的计算,本实施例中的近存计算单元也是如此,程序指令中携带的数据会存入对应的地址中,配置信息会带有参与计算的参数的地址信息,这些地址信息就是上述上行缓存区的地址信息,然后调用对应的功能算子模块进行计算,再将计算后的数据写入缓存模块中,完成计算。这些计算结果会经过总线封装模块521进行转换,然后通过总线发送个控制单元100。其中,可以通过堆栈或者队列的方式,控制缓存中的程序指令以及参数参与计算的顺序,以及发送的顺序。
所述下行模块550用于接收来自所述控制单元的程序指令,并根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述内存单元。
如图5所示,下行模块包括总线解析模块551和下行缓存区552。
所述总线解析模块551用于将来自所述控制单元的程序指令缓存入所述下行缓存区552。
所述下行缓存区552用于缓存来自所述总线解析模块的所述程序指令,以及所述功能算子模块计算得到的计算结果。
下行时,即从控制单元100下发程序指令至内存单元200,途中该程序指令会经过近存计算单元500,类似于上述上行时的操作,下行的程序指令以及参与运算的参数也会存在下行缓存区552中。计算后的计算结果也会存在下行缓存区552中,然后通过内存控制器接口560直接下发至内存单元200中。
所述取值存储模块530用于根据所述配置信息,确定所述上行模块或所述下行模块中的所述程序指令是否需要进行计算,若需要,则调用所述功能算子模块进行计算。
如前述所说,近存计算单元500所支持的计算方式有限,为一些简单的加减运算等,因此程序指令中可能存在一些超出近存计算的计算方式,这些计算是不需要近存计算单元500处理的。取值存储模块530会从上行模块520或下行模块550中对应的上行缓存区522或者下行缓存区552中读取所有的程序指令。
例如读取上行模块520中的程序指令时,主要读取内存控制器接口读入的程序指令,读取下行模块550中的程序指令时,主要读取总线解析模块中读入的程序指令,以监控每一个进入近存计算单元500的程序指令,确定该指令的内容,然后根据配置信息模块中的配置信息,对应的上行缓存区522或者下行缓存区552中的数据以及地址进行匹配,确定需要进行处理的目的地址以及对应的计算方法。
确定了地址和计算方法后,就可以读取这些地址中的数据,然后从功能算子模块中调用对应的算子来进行计算。因此,本实施例中的取值存储模块530起到一个判断和定位的作用,帮助近存计算单元确定计算对象。
无论是上行还是下行,都会有多个数据存入缓存中,根据控制单元中处理器的核心数,可以拉出多个线程进行并行处理,例如同时处理2个,4个或者8个不同的计算操作,以完成多条程序指令。
可以理解,取值存储模块530是通过利用匹配信息对上行缓存区522或者下行缓存区552中的地址进行匹配来寻找参与计算的参数的,若是在上行缓存区522或者下行缓存区552中没有找到任何一个匹配的地址,则表示当前没有需要进行计算的数据,则表示无需进行计算,此时也不需要调用功能算子模块540。若是匹配到了对应的地址,则是表示需要进行计算,此时才会调用功能算子模块540。
所述内存控制器接口560用于和所述内存单元对接,用于将接收来自所述内存单元的程序数据发送给所述上行模块,以及将所述下行模块的数据发送给所述内存单元。
内存控制器接口560可以如图3所示,上行模块520和下行模块550都通过同一个内存控制器接口560与内存单元200连接。也可以为上行模块520和下行模块550各单独配置一个与内存单元200连接。其主要是用于和内存单元200对接,使得在上行时,内存单元200中的数据可以被近存计算单元500接收,并且在下行时可以将数据发送至内存单元200中。
此外可以理解,上行时,数据流从内存单元流向控制单元,而当下行时,数据流从控制单元流向内存单元,数据流向不同,数据经过近存计算单元和原计算单元的顺序也不同,因此具体的第一计算任务和第二计算任务的执行顺序也会有所不同。
本实施例的近存近存计算装置通过添加一个近存计算单元,实现部分计算操作的转移,使得在执行程序时,让一部分运算及相关的数据不再进入缓存、避免频繁的数据搬移和刷新工作,在内容出口和入口就可以完成运算,不占用处理器时间,得到计算结果,大大降低了数据在缓存和计算单元之间迁移切换的操作以及功耗,绕开了“内存墙”的阻碍。同时近存计算单元结构简单,不占用过多空间就可以实现大量重复性运算,在较小的投入下使得处理器的性能可以有更大的飞跃。
实施例2
如图6所示,本申请还提供一种近存计算方法,该近存计算方法运行于上述实施例1中的近存计算单元,该方法包括以下步骤:
步骤S100,当进行上行会话或下行会话时,所述近存计算单元确定并执行所述程序指令中的第一计算任务。
如实施例1中所述,近存计算单元在进行工作时,存在上行和下行两种工作情况,而无论是哪些情况,其区别仅在于程序指令的来源以及计算结果的去处,在程序指令进入近存计算单元后的一系列步骤都是类似的。
例如,无论上行或者下行,都会需要对所接收到的程序指令进行解析,以确定该程序指令中哪些是近存计算单元可以执行的第一计算任务,哪些是只有原计算单元才能执行的第二计算任务。
确定需要参与计算的数据时,可以通过将缓存的首地址与配置信息中的所述目的地址进行对比,寻找匹配的地址,匹配中的地址中所储存数据是需要参与计算的,没有被匹配中的地址中的数据,则不需要进行计算,若匹配则需要进行计算。
可以理解,在计算机内部对数据进行计算时,首先需要将参与计算的数据存入缓存中,每个数据在缓存中都有对应的地址,计算机通过这些地址才能寻址找到对应的数据,因此在将程序指令中的命令首地址与配置信息中目的地址进行对比,若是相同的,则表示该数据需要在近存计算单元中进行计算,否则不需要进行计算。由此,识别出需要在近存计算单元中进行计算的第一计算任务,并由近存计算单元进行计算。
计算后,计算结果会发送给相应的内存单元或者控制单元。
具体的,当在上行时,需要将计算结果发送给控制单元,这些计算结果需要通过总线封装模块发送给控制单元,则需要根据对应的接口协议类型,将所述计算结果转换为标准总线数据,再发送给所述控制单元。其中,协议类型与具体的接口相关,例如AXI(Advanced eXtensible Interface,总线协议)/AHB(Advanced High Performance Bus,高级高性能总线)/CXL(高速缓存一致性互连协议)等接口协议。通过这类协议对数据进行转换,从而可以通过总线将数据发送给控制单元。
当在下行时,需要将计算结果发送给内存单元,数据是通过内存控制器接口发送至内存中,此时只需要直接将所述计算结果发送给所述内存单元即可。
步骤S200,由所述原计算单元对所述缓存单元中的数据执行所述程序指令中的第二计算任务。
程序指令中除了第一计算任务外,还会存在需要复杂流程和多种计算模式的第二计算任务,这部分的程序指令会在缓存单元中由原计算单元执行。其执行方式可以由任意现有技术实现,在此不做展开。
本实施例中的近存计算方法,无论是上行还是下行,整体流程基本相同,不同之处也由不同的硬件差异化完成,无需特别为之编码,整个计算过程和现有计算单元相比并不会有多少差别,并且只需要通过自身的缓存就可以完成大部分的简单计算,降低了数据经过缓存的数量,从而提高了芯片的工作效率。
本申请还提供一种集成电路,所述集成电路包括多个处理器、多个存储器,其中,所述集成电路采用所述的近存计算装置来实现所述多个功能单元之间的近存计算功能。
本申请还提供一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上执行时,实施所述的近存计算装置的近存计算。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种近存计算装置,其特征在于,包括:控制单元、内存单元、近存计算单元、缓存单元和原计算单元;
所述控制单元分别与所述内存单元、所述缓存单元和所述近存计算单元连接;所述近存计算单元通过总线分别与所述控制单元和所述缓存单元连接,还通过接口和所述内存单元连接;
所述近存计算单元用于接收到来自所述控制单元或所述内存单元的程序指令后,确定并执行所述程序指令中的第一计算任务;
所述原计算单元用于对所述缓存单元中的数据执行所述程序指令中的第二计算任务。
2.根据权利要求1所述的近存计算装置,其特征在于,所述近存计算单元包括:功能算子模块、配置模块、取值存储模块、内存控制器接口、上行模块和下行模块;
所述上行模块用于执行上行会话,当接收来自所述内存单元的程序指令时,根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述控制单元;
所述下行模块用于执行下行会话,当接收来自所述控制单元的程序指令时,根据所述程序指令调用所述功能算子模块进行计算,并将计算结果发送至所述内存单元;
所述功能算子模块包括多种算子,用于根据所述程序指令调用相应算子以执行所述第一计算任务;
所述配置模块用于存放所述近存计算单元的配置信息,所述配置信息包括参与相应计算任务的目的地址、算子的运行格式和对总线命令的解析方式和直接命令配置目的地址;
所述取值存储模块用于根据所述配置信息,确定所述上行模块或所述下行模块中所需要参与计算的数据,并调用所述功能算子模块对需要进行参与计算的数据进行计算;
所述内存控制器接口用于对接所述内存单元,以将接收来自所述内存单元的数据发送给所述上行模块,以及将所述下行模块的数据发送给所述内存单元。
3.根据权利要求2所述的近存计算装置,其特征在于,所述功能算子模块包括浮点处理算子、整数处理算子、归约算子和稀疏矩阵算子中的至少一种;
所述浮点处理算子用于执行加运算、减运算、以及移位运算;
所述整数处理算子用于执行与运算、或运算和异或运算;
所述归约算子用于执行归约运算、分布运算、数据分发运算和比较交换运算;
所述稀疏矩阵算子用于执行稀疏矩阵的格式变化、小矩阵的压缩与解压缩操作。
4.根据权利要求2所述的近存计算装置,其特征在于,所述近存计算单元还包括:指令解析模块;
所述指令解析模块用于解析来自总线的程序指令,并根据所述程序指令,对所述配置模块中的配置信息进行更新,并下发对应的执行指令。
5.根据权利要求2所述的近存计算装置,其特征在于,所述上行模块包括总线封装模块和上行缓存区;
所述上行缓存区用于缓存所述内存控制器接口接收到的来自所述内存单元的数据,以及所述功能算子模块计算得到的计算结果;
所述总线封装模块用于根据对应的接口协议类型,将所述上行缓存区中的数据转换为标准总线数据。
6.根据权利要求2所述的近存计算装置,其特征在于,所述下行模块包括总线解析模块和下行缓存区;
所述总线解析模块用于将来自所述控制单元的程序指令缓存入所述下行缓存区;
所述下行缓存区用于缓存来自所述总线解析模块的所述程序指令,以及所述功能算子模块计算得到的计算结果。
7.根据权利要求5或6所述的近存计算装置,其特征在于,所述取值存储模块用于根据所述配置信息,确定所述上行模块或所述下行模块中所需要参与计算的数据,包括:
所述上行模块包括上行缓存区,所述下行模块包括下行缓冲区;
所述取值存储模块读取所述上行缓存区或所述下行缓存区中的首地址,将所述首地址和所述目的地址进行匹配,以确定参与第一计算任务的数据。
8.一种近存计算方法,其特征在于,应用于如权利要求1至7中任一项所述近存计算装置中,所述方法包括:
当进行上行会话或下行会话时,所述近存计算单元确定并执行所述程序指令中的第一计算任务;
由所述原计算单元对所述缓存单元中的数据执行所述程序指令中的第二计算任务。
9.一种集成电路,其特征在于,所述集成电路包括多个处理器、多个存储器,其中,所述集成电路采用如权利要求1至7中任一项所述的近存计算装置来实现多个功能单元之间的近存计算功能。
10.一种可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上执行时,实施根据权利要求1至7中任一项所述的近存计算装置的近存计算。
CN202310376476.4A 2023-04-11 2023-04-11 近存计算装置、近存计算方法、集成电路及存储介质 Active CN116089356B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310376476.4A CN116089356B (zh) 2023-04-11 2023-04-11 近存计算装置、近存计算方法、集成电路及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310376476.4A CN116089356B (zh) 2023-04-11 2023-04-11 近存计算装置、近存计算方法、集成电路及存储介质

Publications (2)

Publication Number Publication Date
CN116089356A true CN116089356A (zh) 2023-05-09
CN116089356B CN116089356B (zh) 2023-06-27

Family

ID=86199511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310376476.4A Active CN116089356B (zh) 2023-04-11 2023-04-11 近存计算装置、近存计算方法、集成电路及存储介质

Country Status (1)

Country Link
CN (1) CN116089356B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688065A (zh) * 2020-07-30 2021-11-23 西安紫光国芯半导体有限公司 近存计算模块和方法、近存计算网络及构建方法
CN114356840A (zh) * 2021-12-15 2022-04-15 北京苹芯科技有限公司 具有存内/近存计算模块的SoC系统
US20220342712A1 (en) * 2021-07-20 2022-10-27 Kunlunxin Technology (Beijing) Company Limited Method for Processing Task, Processor, Device and Readable Storage Medium
CN115456155A (zh) * 2022-09-15 2022-12-09 浙江大学 一种多核存算处理器架构
CN115827211A (zh) * 2021-09-17 2023-03-21 华为技术有限公司 近内存计算加速器、双列直插式内存模块以及计算设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688065A (zh) * 2020-07-30 2021-11-23 西安紫光国芯半导体有限公司 近存计算模块和方法、近存计算网络及构建方法
US20220342712A1 (en) * 2021-07-20 2022-10-27 Kunlunxin Technology (Beijing) Company Limited Method for Processing Task, Processor, Device and Readable Storage Medium
CN115827211A (zh) * 2021-09-17 2023-03-21 华为技术有限公司 近内存计算加速器、双列直插式内存模块以及计算设备
CN114356840A (zh) * 2021-12-15 2022-04-15 北京苹芯科技有限公司 具有存内/近存计算模块的SoC系统
CN115456155A (zh) * 2022-09-15 2022-12-09 浙江大学 一种多核存算处理器架构

Also Published As

Publication number Publication date
CN116089356B (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
US11409575B2 (en) Computation method and product thereof
CN112465129B (zh) 片内异构人工智能处理器
CN110147251B (zh) 用于计算神经网络模型的系统、芯片及计算方法
CN1286019C (zh) 多核心多线程处理器
CN114503072A (zh) 用于向量中的区的排序的方法及设备
JP7060720B2 (ja) ネットワークオンチップによるデータ処理方法及び装置
CN107704922A (zh) 人工神经网络处理装置
CN107679621A (zh) 人工神经网络处理装置
KR101791901B1 (ko) 빅데이터의 효율적인 저장·실시간 분석형 스마트 스토리지 플랫폼장치 및 방법
US20120311353A1 (en) Parallel processing computer systems with reduced power consumption and methods for providing the same
KR102593583B1 (ko) Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법
CN103810125A (zh) 有源存储器件聚集、分散和过滤
CN116627892B (zh) 一种数据近存储计算方法、装置和存储介质
CN104461966B (zh) 一种基于Nand Flash芯片的数据缓存传输方法及其控制器
CN103793208A (zh) 矢量dsp 处理器和协处理器协同运作的数据处理系统
CN114610472A (zh) 异构计算中多进程管理方法及计算设备
CN116089356B (zh) 近存计算装置、近存计算方法、集成电路及存储介质
CN114399035A (zh) 搬运数据的方法、直接存储器访问装置以及计算机系统
US20100257329A1 (en) Apparatus and method for loading and storing multi-dimensional arrays of data in a parallel processing unit
CN1464415A (zh) 一种多处理器系统
CN108763421B (zh) 一种基于逻辑电路的数据搜索方法及系统
CN115344393A (zh) 业务处理方法及相关设备
JP2766216B2 (ja) 情報処理装置
KR20090055765A (ko) 멀티미디어 데이터 처리를 위한 다중 simd 프로세서 및이를 이용한 연산 방법
JP2007087177A (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