CN117032800A - 数据处理方法、系统以及精简指令集计算risc装置 - Google Patents

数据处理方法、系统以及精简指令集计算risc装置 Download PDF

Info

Publication number
CN117032800A
CN117032800A CN202311032032.5A CN202311032032A CN117032800A CN 117032800 A CN117032800 A CN 117032800A CN 202311032032 A CN202311032032 A CN 202311032032A CN 117032800 A CN117032800 A CN 117032800A
Authority
CN
China
Prior art keywords
instruction
risc
calculation
data
activation function
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
Application number
CN202311032032.5A
Other languages
English (en)
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.)
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Original Assignee
China Telecom Technology Innovation Center
China Telecom Corp 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 China Telecom Technology Innovation Center, China Telecom Corp Ltd filed Critical China Telecom Technology Innovation Center
Priority to CN202311032032.5A priority Critical patent/CN117032800A/zh
Publication of CN117032800A publication Critical patent/CN117032800A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本公开涉及一种数据处理方法、系统以及精简指令集计算RISC装置,涉及计算机技术领域。本公开的数据处理方法,由精简指令集计算RISC装置执行,包括:接收主机发送的激活函数的计算通知;将激活函数的计算通知转换为RISC‑V指令;根据RISC‑V指令确定多个可重构计算单元RCU,并将多个RCU连接成电路;利用RISC‑V指令和电路进行计算,得到激活函数的计算结果;将计算结果发送至主机。

Description

数据处理方法、系统以及精简指令集计算RISC装置
技术领域
本公开涉及计算机技术领域,特别涉及一种数据处理方法、系统以及精简指令集计算RISC装置。
背景技术
AI(Artificial Intelligence,人工智能)计算任务中包含大量使用了激活函数的运算,在例如x86或ARM架构的通用CPU中进行激活函数的计算时,计算程序会被编译为多条机器指令,其中对多条指令的取值译码等操作会产生大量的指令开销,降低了整体的计算效率。
发明内容
本公开所要解决的一个技术问题是:如何提高对激活函数的计算效率。
根据本公开的一些实施例,提供的一种数据处理方法,由精简指令集计算RISC装置执行,包括:接收主机发送的激活函数的计算通知;将激活函数的计算通知转换为RISC-V指令;根据RISC-V指令确定多个可重构计算单元RCU,并将多个RCU连接成电路;利用RISC-V指令和电路进行计算,得到激活函数的计算结果;将计算结果发送至主机。
在一些实施例中,RISC-V指令包括一个或多个扩展RISC-V指令,方法还包括:按照转换顺序将一个或多个扩展RISC-V指令存储至先入先出队列。
在一些实施例中,根据RISC-V指令确定多个可重构计算单元RCU包括:从先入先出队列中读取各个RISC-V指令;识别各个RISC-V指令对应的激活函数的类型;根据激活函数的类型,确定多个RCU。
在一些实施例中,根据激活函数的类型,确定多个RCU包括:根据激活函数的类型,确定划分的功能不同的多个计算逻辑单元;根据多个计算逻辑单元,确定多个RCU,其中,每种功能的计算逻辑单元被配置一个对应的RCU。
在一些实施例中,激活函数的计算通知包括激活函数的类型,将激活函数的计算通知转换为RISC-V指令包括:根据激活函数的计算逻辑和激活函数的类型,确定一个或多个扩展RISC-V指令;提取激活函数的计算通知中用于计算的数据;将用于计算的数据存储至一个或多个扩展RISC-V指令中应用用于计算的数据的扩展RISC-V指令的格式的寄存器中。
在一些实施例中,利用RISC-V指令和电路进行计算包括:按照RISC-V指令的转换顺序,针对每个扩展RISC-V指令,在该扩展RISC-V指令直接执行的情况下,直接执行该扩展RISC-V指令;在该扩展RISC-V指令与电路配合运行的情况下,根据该扩展RISC-V指令,调用电路执行该扩展RISC-V指令相应的计算。
在一些实施例中,一个或多个扩展RISC-V指令包括:加载指令、激活函数指令和存储指令,其中,加载指令用于将输入数据从片外内存加载到片上缓存,激活函数指令用于根据输入数据执行激活函数的计算,得到输出数据,存储指令用于将输出数据从片上缓存存储至片外内存。
在一些实施例中,用于计算的数据包括:输入数据在片外内存中的起始地址,将用于计算的数据存储至一个或多个扩展RISC-V指令中应用用于计算的数据的扩展RISC-V指令中包括:将输入数据在片外内存中的起始地址存储至加载指令的格式的源寄存器中。
在一些实施例中,激活函数的计算通知还包括输入数据的大小,输入数据的大小被存储至输入寄存器中,加载指令直接执行,直接执行该RISC-V指令包括:执行加载指令,从输入寄存器读取输入数据的大小,从加载指令的格式的源寄存器中读取起始地址;根据输入数据的大小和起始地址,从片外内存中读取输入数据;将输入数据存储至为输入数据分配的片上缓存的第一地址;将第一地址存储至加载指令的格式的目的寄存器中。
在一些实施例中,激活函数指令与电路配合运行,根据该扩展RISC-V指令,调用电路执行该扩展RISC-V指令相应的计算还包括:执行激活函数指令,将第一地址存储至激活函数指令的格式的源寄存器中;根据第一地址和输入寄存器中输入数据的大小,读取输入数据;调用电路对输入数据执行激活函数的计算,得到输出数据;将输出数据存储至片上缓存的第二地址;将第二地址存储至激活函数指令的格式的目的寄存器中。
在一些实施例中,用于计算的数据包括:输出数据在片外内存中的起始地址,将用于计算的数据存储至一个或多个扩展RISC-V指令中应用用于计算的数据的扩展RISC-V指令中包括:将输出数据在片外内存中的起始地址存储至存储指令的格式的目的寄存器中。
在一些实施例中,输出数据的大小被存储至输出寄存器,存储指令直接执行,根据该扩展RISC-V指令,调用电路执行该扩展RISC-V指令相应的计算还包括:执行存储指令,将第二地址存储至存储指令的格式的源寄存器中;读取输出寄存器中输出数据的大小;根据输出数据的大小和第二地址,从片上缓存中读取输出数据;根据存储指令的格式的目的寄存器中的片外内存中的起始地址,将输出数据存储至片外内存中。
在一些实施例中,该方法还包括:对所有RCU进行初始化,清除所有RCU间的连接,将每个RCU设置为休眠状态。
根据本公开的另一些实施例,提供的一种精简指令集计算RISC装置包括:接收模块,用于接收主机发送的激活函数的计算通知;转换模块,用于将激活函数的计算通知转换为RISC-V指令;电路构建模块,用于根据RISC-V指令确定多个可重构计算单元RCU,并将多个RCU连接成电路;计算模块,用于利用RISC-V指令和电路进行计算,得到激活函数的计算结果;发送模块,用于将计算结果发送至主机。
根据本公开的又一些实施例,提供的一种精简指令集计算RISC装置包括:处理器;以及耦接至处理器的存储器,用于存储指令,指令被处理器执行时,使处理器执行如前述任意实施例的数据处理方法。
根据本公开的再一些实施例,提供的一种非瞬时性计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的数据处理方法。
根据本公开的又一些实施例,提供的一种数据处理系统,包括:前述任意实施例的RISC装置;以及主机,用于向RISC装置发送激活函数的计算通知,接收RISC装置发送的计算结果。
本公开中设置与主机通信的RISC装置,接收主机发送的激活函数的计算通知,转换为RISC-V指令,并根据RISC-V指令确定多个RCU,将多个RCU连接成电路,利用RISC-V指令和电路进行计算,得到激活函数的计算结果返回主机。RISC装置可以卸载和分担主机中CPU中的激活函数的计算任务,通过RCU可以灵活的构建电路进行计算,以较低的硬件成本和功耗加速激活函数计算,提高了整体对激活函数的计算效率,并且拥有较高的灵活性和可扩展性。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开的一些实施例的数据处理方法的流程示意图。
图2示出本公开的一些实施例的网络架构的示意图。
图3A示出本公开的一些实施例的RISC-V指令的格式示意图。
图3B示出本公开的另一些实施例的RISC-V指令的格式示意图。
图4示出本公开的另一些实施例的数据处理方法的流程示意图。
图5示出本公开的一些实施例的RISC装置的结构示意图。
图6示出本公开的另一些实施例的RISC装置的结构示意图。
图7示出本公开的又一些实施例的RISC装置的结构示意图。
图8示出本公开的一些实施例的数据处理系统的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开提出一种数据处理方法,下面结合图1~图4进行描述。
图1为本公开数据处理方法一些实施例的流程图。如图1所示,该实施例的方法,由RISC(Reduced Instruction Set Computing,精简指令集计算)装置执行,包括:步骤S102~S110。
在步骤S102中,接收主机发送的激活函数的计算通知。
RISC装置可以包括控制模块,可以由一个或多个32位RISC-V内核(RV32GC)组成,不限于所举示例,还可以包括计算模块,可以由多个RCU(Reconfigurable ComputingUnit,可重构计算单元)和高速缓存组成。RISC装置与主机通信连接,例如,如图2所示,RISC装置和主机可以通过片上网络通信,PCle表示主机总线。
可以在主机的x86或ARM架构中,在程序使用的库函数中添加专用的激活函数加速接口,并修改程序。当主机在程序中触发该接口时,向RISC-V发送激活函数的计算通知。例如,激活函数的计算通知包括:激活函数的类型,输入数据的大小和存储地址(例如,片外内存中的起始地址)等信息。
如图2所示,控制模块根据功能逻辑可以分为三个功能单元。通用控制单元、指令转换单元和计算调度单元。通用控制单元负责整个RISC装置的通用控制,包括系统的初始化、系统内部以及和主机的通信等功能。
在步骤S104中,将激活函数的计算通知转换为RISC-V指令。
如图2所示,指令转换单元收到主机要进行激活函数计算的通知时,转换为对应的RISC-V指令。计算调度单元可以包含FIFO队列。
在一些实施例中,RISC-V指令包括一个或多个扩展RISC-V指令,按照转换顺序将一个或多个扩展RISC-V指令存储至先入先出(FIFO)队列。RISC-V内核可以实现基础RISC-V指令(IMAFDCK指令)和扩展RISC-V指令(自定义指令)。基础RISC-V指令例如包括:RV64I等,扩展RISC-V指令例如包括基于预定义的指令格式(R型、I型等)自定义的指令。
在一些实施例中,根据激活函数的计算逻辑和激活函数的类型,确定一个或多个扩展RISC-V指令;提取激活函数的计算通知中用于计算的数据;将用于计算的数据存储至一个或多个扩展RISC-V指令中应用用于计算的数据的扩展RISC-V指令的格式的寄存器中。
例如,激活函数的计算逻辑包括:读取输入数据,对输入数据进行计算,输出数据等。例如,用于计算的数据包括:输入数据在片外内存中的起始地址。
在一些实施例中,一个或多个扩展RISC-V指令包括:加载指令(可以称为LOAD指令)、激活函数指令和存储指令(可以称为STORE指令),其中,加载指令用于将输入数据从片外内存加载到片上缓存(SRAM(Static Random-Access Memory,静态随机存取存储器),激活函数指令用于根据输入数据执行激活函数的计算,得到输出数据,存储指令用于将输出数据从片上缓存存储至片外内存。
例如,激活函数指令对应Sigmoid、Tahn、ReLU等各种主流的激活函数,根据激活函数的类型可以确定对应的激活函数指令。
在一些实施例中,将输入数据在片外内存中的起始地址存储至加载指令的格式的源寄存器中。如图3A所示为加载指令(LOAD指令)的格式,rs(源寄存器)可以保存输入数据在片外内存中的起始地址。rd(目的寄存器)则用于保存片上缓存的第一地址(或起始地址)。
还可以将激活函数的计算通知中包含的输入数据的大小写入输入寄存器(RMI),例如,寄存器的高16位和低16位分别对应矩阵的长和宽。
在步骤S106中,根据RISC-V指令确定多个RCU,并将多个RCU连接成电路。
在一些实施例中,从先入先出队列中读取各个RISC-V指令;识别各个RISC-V指令对应的激活函数的类型;根据激活函数的类型,确定多个RCU。
在一些实施例中,根据激活函数的类型,确定划分的功能不同的多个计算逻辑单元;根据多个计算逻辑单元,确定多个RCU,其中,每种功能的计算逻辑单元被配置一个对应的RCU。
如图2所示,可以由计算调度单元分析队列中RISC-V指令对应的激活函数的类型,将激活函数的类型发送到计算模块中的配置单元。计算模块包含配置单元、多组RCU和高速缓存。每种类型的激活函数被划分为多个计算逻辑单元,每种计算逻辑单元被配置一个对应的RCU,不同类型的激活函数中的相同类型的计算逻辑单元可以共用对应的RCU。
例如,将各个激活函数的计算拆解为多个计算逻辑单元,例如累加、除法、指数运算等,将每种计算逻辑单元可以设计为简易的ALU(Arithmetic and Logic Unit,算术逻辑单元)。RCU即为包含此类ALU和寄存器的逻辑单元,每个RCU之间可以互相连接,以形成完整的计算电路。配置单元中包含每种激活函数对应的RCU连接方式,当收到控制模块的指令时,配置单元会将一次计算需要的RCU连接起来,形成完整的计算电路用于计算。高速缓存与计算电路连接用于缓存计算结果。
在步骤S108中,利用RISC-V指令和电路进行计算,得到激活函数的计算结果。
在一些实施例中,按照RISC-V指令的转换顺序,针对每个扩展RISC-V指令,在该扩展RISC-V指令直接执行的情况下,直接执行该扩展RISC-V指令;在该扩展RISC-V指令与电路配合运行的情况下,根据该扩展RISC-V指令,调用电路执行该扩展RISC-V指令相应的计算。
RISC-V指令的转换顺序即FIFO队列中RISC-V指令的顺序。依次从FIFO队列中取出各个RISC-V指令执行。有些RISC-V指令不需要利用RCU组成的电路执行,可以直接执行,例如,加载指令和存储指令。激活函数指令需要配合电路执行。
在一些实施例中,针对加载指令(LOAD指令),执行加载指令,从输入寄存器读取输入数据的大小,从加载指令的格式的源寄存器中读取起始地址;根据输入数据的大小和起始地址,从片外内存中读取输入数据;将输入数据存储至为输入数据分配的片上缓存的第一地址;将第一地址存储至加载指令的格式的目的寄存器中。
如图3A所示,LOAD指令的指令类型由fun3的编码决定,输入数据的大小会保存在RMI寄存器中,LOAD指令会读RMI,根据输入数据的起始地址和大小将全部数据加载到片上缓存中。
在一些实施例中,激活函数指令与电路配合运行,执行激活函数指令,将第一地址存储至激活函数指令的格式的源寄存器中;根据第一地址和输入寄存器中输入数据的大小,读取输入数据;调用电路对输入数据执行激活函数的计算,得到输出数据;将输出数据存储至片上缓存的第二地址;将第二地址存储至激活函数指令的格式的目的寄存器中。
如图3B所示,不同种类的激活函数,指令类型由fun7的编码决定。fun7提供了足够的编码空间,针对更多类型的激活函数只需根据此编码格式自定义指令并修改配置单元。rs(源寄存器)保存了输入数据在片上缓存中的起始地址(即第一地址),rd(目的寄存器)保存了计算结束后输出数据在片上缓存的目标地址(即第二地址)。同时指令还需要读RMI来确定输入数据的大小。通常情况下为读RMI来确定输入数据的大小,也可以从RMO读取输入数据的大小,此时表示此次计算的输入数据为之前计算缓存的输出数据。激活函数指令直接从片上缓存读取数据,进一步简化执行流程,提高计算效率。
在一些实施例中,用于计算的数据包括:输出数据在片外内存中的起始地址,将输出数据在片外内存中的起始地址存储至存储指令(STORE指令)的格式的目的寄存器中。
在一些实施例中,针对存储指令(STORE指令),执行存储指令,将第二地址存储至存储指令的格式的源寄存器中;读取输出寄存器中输出数据的大小;根据输出数据的大小和第二地址,从片上缓存中读取输出数据;根据存储指令的格式的目的寄存器中的片外内存中的起始地址,将输出数据存储至片外内存中。
如图3A所示,STORE指令的指令类型由fun3的编码决定,rs(源寄存器)保存了输出数据在片内缓存中的起始地址(即第二地址),rd(目的寄存器)保存了数据在片外内存中的起始地址(目标地址)。输出数据的大小会保存在RMO(输出寄存器)中,STORE指令会读RMO,根据输出数据的第二地址和大小将全部数据存储到片外内存中。
上述实施例中,设计了用于数据交换的LOAD和STORE指令及专用寄存器RMI和RMO,借助专用寄存器实现了只需两条指令就能实现不同规模的数据在片外内存和片内缓存间的交换。进而使用不同的激活函数指令直接进行完整的计算流程。
在步骤S110中,将计算结果发送至主机。
计算结果即输出数据已由STORE指令写入片外内存,RISC可以发送计算完成通知至主机,主机直接在片外内存读取输出数据。
上述实施例中设置与主机通信的RISC装置,接收主机发送的激活函数的计算通知,转换为RISC-V指令,并根据RISC-V指令确定多个RCU,将多个RCU连接成电路,利用RISC-V指令和电路进行计算,得到激活函数的计算结果返回主机。RISC装置可以卸载和分担主机中CPU中的激活函数的计算任务,通过RCU可以灵活的构建电路进行计算,以较低的硬件成本和功耗加速激活函数计算,提高了整体对激活函数的计算效率,并且拥有较高的灵活性和可扩展性。
下面结合图4描述本公开数据处理方法的另一些实施例。
图4为本公开数据处理方法另一些实施例的流程图。如图4所示,该实施例的方法包括:步骤S402~S416。
在步骤S402中,RISC装置进行初始化。
例如,系统上电后,由控制模块中的通用控制单元执行ROM中保存的初始化程序,对所有RCU进行初始化,清除所有RCU间的连接,将每个RCU设置为休眠状态。
在步骤S404中,主机向RISC装置发送激活函数的计算通知。
在步骤S406中,RISC装置将激活函数的计算通知转换为RISC-V指令。
在步骤S408中,RISC装置根据RISC-V指令确定多个RCU,并将多个RCU连接成电路。
将多个RCU由休眠状态变更为激活状态。
在步骤S410中,RISC装置根据RISC-V指令将输入数据由片外内存加载到片上缓存。
例如,根据LOAD指令输入数据由片外内存加载到片上缓存,具体参考上述实施例,在此不再赘述。
在步骤S412中,RISC装置根据RISC-V指令,调用连接成的电路执行激活函数的计算。
在步骤S414中,RISC装置根据RISC-V指令将输入数据由片上缓存存储到片外内存。
例如,根据STORE指令输入数据由片外内存加载到片上缓存,具体参考上述实施例,在此不再赘述。
在步骤S416中,RISC装置向主机发送计算完成通知。
上述实施例的方法使用RISC装置基于RISC-V指令控制可重构的RCU执行激活函数的计算,同时使用自定义的激活函数指令减少整体计算过程中指令数量,进一步降低了整体的计算时间。RISC装置能够以较低的硬件成本和功耗加速激活函数计算,并且拥有较高的灵活性和可扩展性,能应用在边缘计算等大部分场景中。
本公开还提供一种RISC装置,下面结合图5进行描述。
图5为本公开RISC装置的一些实施例的结构图。如图5所示,该实施例的装置50包括:接收模块510,转换模块520,电路构建模块530,计算模块540,发送模块550。接收模块510对应前述实施例中通用控制单元,转换模块520对应前述实施例中指令转换单元,电路构建模块530对应前述实施例中计算调度单元、配置单元,电路构建模块530中确定多个RCU的功能部分、计算模块540和发送模块550对应前述实施例中计算模块。
接收模块510用于接收主机发送的激活函数的计算通知。
转换模块520用于将激活函数的计算通知转换为RISC-V指令。
在一些实施例中,RISC-V指令包括一个或多个扩展RISC-V指令,转换模块520用于按照转换顺序将一个或多个扩展RISC-V指令存储至先入先出队列。
在一些实施例中,激活函数的计算通知包括激活函数的类型,转换模块520用于根据激活函数的计算逻辑和激活函数的类型,确定一个或多个扩展RISC-V指令;提取激活函数的计算通知中用于计算的数据;将用于计算的数据存储至一个或多个扩展RISC-V指令中应用用于计算的数据的扩展RISC-V指令的格式的寄存器中。
在一些实施例中,用于计算的数据包括:输入数据在片外内存中的起始地址,转换模块520用于将输入数据在片外内存中的起始地址存储至加载指令的格式的源寄存器中。
在一些实施例中,用于计算的数据包括:输出数据在片外内存中的起始地址,转换模块520用于将输出数据在片外内存中的起始地址存储至存储指令的格式的目的寄存器中。
电路构建模块530用于根据RISC-V指令确定多个可重构计算单元RCU,并将多个RCU连接成电路。
在一些实施例中,电路构建模块530用于从先入先出队列中读取各个RISC-V指令;识别各个RISC-V指令对应的激活函数的类型;根据激活函数的类型,确定多个RCU。
在一些实施例中,电路构建模块530用于根据激活函数的类型,确定划分的功能不同的多个计算逻辑单元;根据多个计算逻辑单元,确定多个RCU,其中,每种功能的计算逻辑单元被配置一个对应的RCU。
计算模块540用于利用RISC-V指令和电路进行计算,得到激活函数的计算结果。
在一些实施例中,计算模块540用于按照RISC-V指令的转换顺序,针对每个扩展RISC-V指令,在该扩展RISC-V指令直接执行的情况下,直接执行该扩展RISC-V指令;在该扩展RISC-V指令与电路配合运行的情况下,根据该扩展RISC-V指令,调用电路执行该扩展RISC-V指令相应的计算。
在一些实施例中,一个或多个扩展RISC-V指令包括:加载指令、激活函数指令和存储指令,其中,加载指令用于将输入数据从片外内存加载到片上缓存,激活函数指令用于根据输入数据执行激活函数的计算,得到输出数据,存储指令用于将输出数据从片上缓存存储至片外内存。
在一些实施例中,激活函数的计算通知还包括输入数据的大小,输入数据的大小被存储至输入寄存器中,加载指令直接执行,计算模块540用于执行加载指令,从输入寄存器读取输入数据的大小,从加载指令的格式的源寄存器中读取起始地址;根据输入数据的大小和起始地址,从片外内存中读取输入数据;将输入数据存储至为输入数据分配的片上缓存的第一地址;将第一地址存储至加载指令的格式的目的寄存器中。
在一些实施例中,激活函数指令与电路配合运行,计算模块540用于执行激活函数指令,将第一地址存储至激活函数指令的格式的源寄存器中;根据第一地址和输入寄存器中输入数据的大小,读取输入数据;调用电路对输入数据执行激活函数的计算,得到输出数据;将输出数据存储至片上缓存的第二地址;将第二地址存储至激活函数指令的格式的目的寄存器中。
在一些实施例中,输出数据的大小被存储至输出寄存器,存储指令直接执行,计算模块540用于执行存储指令,将第二地址存储至存储指令的格式的源寄存器中;读取输出寄存器中输出数据的大小;根据输出数据的大小和第二地址,从片上缓存中读取输出数据;根据存储指令的格式的目的寄存器中的片外内存中的起始地址,将输出数据存储至片外内存中。
发送模块550用于将计算结果发送至主机。
在一些实施例中,RISC装置50还包括:初始化模块560对应于前述实施例中的通用控制单元,用于对所有RCU进行初始化,清除所有RCU间的连接,将每个RCU设置为休眠状态。
本公开的实施例中的RISC装置可各由各种计算设备或计算机系统来实现,下面结合图6以及图7进行描述。处理器相当于RISC装置中的控制模块以及计算模块中的配置单元和RCU。
图6为本公开RISC装置的一些实施例的结构图。如图6所示,该实施例的装置60包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行本公开中任意一些实施例中的数据处理方法。
其中,存储器610例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)、数据库以及其他程序等。
图7为本公开RISC装置的另一些实施例的结构图。如图7所示,该实施例的装置70包括:存储器710以及处理器720,分别与存储器610以及处理器620类似。还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730,740,750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口750为SD卡、U盘等外置存储设备提供连接接口。
本公开还提供一种数据处理系统,下面结合图8进行描述。
图8为本公开数据处理系统的一些实施例的结构图。如图8所示,该实施例的数据处理系统8包括:前述任意实施例的RISC装置50/60/70以及主机82。
主机82用于向RISC装置50/60/70发送激活函数的计算通知,接收RISC装置50/60/70发送的计算结果。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (17)

1.一种数据处理方法,由精简指令集计算RISC装置执行,包括:
接收主机发送的激活函数的计算通知;
将所述激活函数的计算通知转换为RISC-V指令;
根据所述RISC-V指令确定多个可重构计算单元RCU,并将所述多个RCU连接成电路;
利用所述RISC-V指令和所述电路进行计算,得到所述激活函数的计算结果;
将所述计算结果发送至所述主机。
2.根据权利要求1所述的数据处理方法,其中,所述RISC-V指令包括一个或多个扩展RISC-V指令,所述方法还包括:
按照转换顺序将所述一个或多个扩展RISC-V指令存储至先入先出队列。
3.根据权利要求2所述的数据处理方法,其中,所述根据所述RISC-V指令确定多个可重构计算单元RCU包括:
从所述先入先出队列中读取各个RISC-V指令;
识别各个RISC-V指令对应的所述激活函数的类型;
根据所述激活函数的类型,确定多个RCU。
4.根据权利要求3所述的数据处理方法,其中,所述根据所述激活函数的类型,确定多个RCU包括:
根据所述激活函数的类型,确定划分的功能不同的多个计算逻辑单元;
根据所述多个计算逻辑单元,确定多个RCU,其中,每种功能的计算逻辑单元被配置一个对应的RCU。
5.根据权利要求1所述的数据处理方法,其中,所述激活函数的计算通知包括所述激活函数的类型,所述将所述激活函数的计算通知转换为RISC-V指令包括:
根据所述激活函数的计算逻辑和所述激活函数的类型,确定一个或多个扩展RISC-V指令;
提取所述激活函数的计算通知中用于计算的数据;
将所述用于计算的数据存储至所述一个或多个扩展RISC-V指令中应用所述用于计算的数据的扩展RISC-V指令的格式的寄存器中。
6.根据权利要求5所述的数据处理方法,其中,所述利用所述RISC-V指令和所述电路进行计算包括:
按照所述RISC-V指令的转换顺序,针对每个扩展RISC-V指令,在该扩展RISC-V指令直接执行的情况下,直接执行该扩展RISC-V指令;
在该扩展RISC-V指令与所述电路配合运行的情况下,根据该扩展RISC-V指令,调用所述电路执行该扩展RISC-V指令相应的计算。
7.根据权利要求6所述的数据处理方法,其中,所述一个或多个扩展RISC-V指令包括:加载指令、激活函数指令和存储指令,其中,所述加载指令用于将输入数据从片外内存加载到片上缓存,所述激活函数指令用于根据所述输入数据执行所述激活函数的计算,得到输出数据,所述存储指令用于将所述输出数据从片上缓存存储至片外内存。
8.根据权利要求7所述的数据处理方法,其中,所述用于计算的数据包括:所述输入数据在片外内存中的起始地址,将所述用于计算的数据存储至所述一个或多个扩展RISC-V指令中应用所述用于计算的数据的扩展RISC-V指令中包括:
将所述输入数据在片外内存中的起始地址存储至所述加载指令的格式的源寄存器中。
9.根据权利要求8所述的数据处理方法,其中,所述激活函数的计算通知还包括所述输入数据的大小,所述输入数据的大小被存储至输入寄存器中,所述加载指令直接执行,所述直接执行该RISC-V指令包括:
执行所述加载指令,从所述输入寄存器读取所述输入数据的大小,从所述加载指令的格式的源寄存器中读取所述起始地址;
根据所述输入数据的大小和所述起始地址,从所述片外内存中读取所述输入数据;
将所述输入数据存储至为所述输入数据分配的所述片上缓存的第一地址;
将所述第一地址存储至所述加载指令的格式的目的寄存器中。
10.根据权利要求9所述的数据处理方法,其中,所述激活函数指令与所述电路配合运行,所述根据该扩展RISC-V指令,调用所述电路执行该扩展RISC-V指令相应的计算还包括:
执行所述激活函数指令,将所述第一地址存储至所述激活函数指令的格式的源寄存器中;
根据所述第一地址和所述输入寄存器中所述输入数据的大小,读取所述输入数据;
调用所述电路对所述输入数据执行所述激活函数的计算,得到输出数据;
将所述输出数据存储至所述片上缓存的第二地址;
将所述第二地址存储至所述激活函数指令的格式的目的寄存器中。
11.根据权利要求10所述的数据处理方法,其中,所述用于计算的数据包括:所述输出数据在片外内存中的起始地址,将所述用于计算的数据存储至所述一个或多个扩展RISC-V指令中应用所述用于计算的数据的扩展RISC-V指令中包括:
将所述输出数据在片外内存中的起始地址存储至所述存储指令的格式的目的寄存器中。
12.根据权利要求11所述的数据处理方法,其中,所述输出数据的大小被存储至输出寄存器,所述存储指令直接执行,所述根据该扩展RISC-V指令,调用所述电路执行该扩展RISC-V指令相应的计算还包括:
执行所述存储指令,将所述第二地址存储至所述存储指令的格式的源寄存器中;
读取所述输出寄存器中所述输出数据的大小;
根据所述输出数据的大小和所述第二地址,从所述片上缓存中读取所述输出数据;
根据所述存储指令的格式的目的寄存器中的片外内存中的起始地址,将所述输出数据存储至所述片外内存中。
13.根据权利要求1-12任一项所述的数据处理方法,还包括:
对所有RCU进行初始化,清除所有RCU间的连接,将每个RCU设置为休眠状态。
14.一种精简指令集计算RISC装置,包括:
接收模块,用于接收主机发送的激活函数的计算通知;
转换模块,用于将所述激活函数的计算通知转换为RISC-V指令;
电路构建模块,用于根据所述RISC-V指令确定多个可重构计算单元RCU,并将所述多个RCU连接成电路;
计算模块,用于利用所述RISC-V指令和所述电路进行计算,得到所述激活函数的计算结果;
发送模块,用于将所述计算结果发送至所述主机。
15.一种精简指令集计算RISC装置,包括:
处理器;以及
耦接至所述处理器的存储器,用于存储指令,所述指令被所述处理器执行时,使所述处理器执行如权利要求1-13任一项所述的数据处理方法。
16.一种非瞬时性计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现权利要求1-13任一项所述方法的步骤。
17.一种数据处理系统,包括:权利要求14或15所述的RISC装置;以及
主机,用于向所述RISC装置发送激活函数的计算通知,接收所述RISC装置发送的计算结果。
CN202311032032.5A 2023-08-16 2023-08-16 数据处理方法、系统以及精简指令集计算risc装置 Pending CN117032800A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311032032.5A CN117032800A (zh) 2023-08-16 2023-08-16 数据处理方法、系统以及精简指令集计算risc装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311032032.5A CN117032800A (zh) 2023-08-16 2023-08-16 数据处理方法、系统以及精简指令集计算risc装置

Publications (1)

Publication Number Publication Date
CN117032800A true CN117032800A (zh) 2023-11-10

Family

ID=88626018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311032032.5A Pending CN117032800A (zh) 2023-08-16 2023-08-16 数据处理方法、系统以及精简指令集计算risc装置

Country Status (1)

Country Link
CN (1) CN117032800A (zh)

Similar Documents

Publication Publication Date Title
KR101791811B1 (ko) 가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법
CN109284815B (zh) 神经网络模型算法编译方法、装置及相关产品
JP2021108102A (ja) 行列演算アクセラレータの命令のための装置、方法、およびシステム
WO2012103148A2 (en) Unrolling quantifications to control in-degree and/or out degree of automaton
CN102207904B (zh) 用于对可重构处理器进行仿真的设备和方法
CN112579159A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
CN110321072A (zh) 针对存储器通信量的存活性保障
CN108763082A (zh) 测试数据生成方法、装置、计算机设备及存储介质
CN108549935B (zh) 一种实现神经网络模型的装置及方法
CN105988773B (zh) 硬件接口组件和用于硬件接口组件的方法
CN113468102A (zh) 混合粒度的计算电路模块和计算系统
CN107678781B (zh) 处理器以及用于在处理器上执行指令的方法
CN117112165A (zh) 虚拟现实应用任务的处理方法、装置、虚拟现实系统
CN117032800A (zh) 数据处理方法、系统以及精简指令集计算risc装置
CN112395055A (zh) 用于实现对预定义工作负载的动态处理的方法和装置
CN115577762A (zh) 一种基于risc-v的ai计算异构系统
CN106796504A (zh) 用于指令预提取的方法和设备
CN115048334A (zh) 可编程阵列处理器控制装置
CN112181496A (zh) 一种基于开源指令集处理器的ai扩展指令执行方法、装置、存储介质及电子设备
US20210055971A1 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device
US20210192353A1 (en) Processing unit, processor core, neural network training machine, and method
CN116541075B (zh) 领域专用架构处理器及其加速计算方法、介质、设备
CN117435259B (zh) Vpu的配置方法、装置、电子设备及计算机可读存储介质
CN111061460B (zh) 基于嵌入式系统的通用软件开发平台
US20240111694A1 (en) Node identification allocation in a multi-tile system with multiple derivatives

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