译码器和原子指令解析方法与流程

专利2022-06-29  102


本申请涉及信息处理技术领域,特别是涉及一种译码器和原子指令解析方法。



背景技术:

随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高。对于高速i/o设备以及神经网络处理器中批量数据处理的情况,通常需要增加原子操作功能。

传统的多核处理器中,通过指令解析单元对现有的计算指令进行解析,且仅能实现单一源操作数的计算指令。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够根据不同的原子指令功能,对其所需的源操作数进行配置的译码器和原子指令解析方法。

第一方面,提供一种译码器,包括:指令解析单元、多个选择单元以及配置单元;所述指令解析单元,用于对人工神经网络运算关联的计算指令的类型进行解析;所述多个选择单元,用于对多个源操作数的类型进行选择并输出;所述配置单元,用于对所述多个源操作数的数目进行配置;所述配置单元,还用于输出不同位宽的源操作数;其中,所述多个源操作数的类型包括地址和立即数。

第二方面,本申请实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个上述数据传输装置。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其他处理装置。

第三方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所述的机器学习处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。

第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的译码器、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组合处理装置。

第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;

第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯片封装结构。

第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第五方面所述的神经网络芯片或者上述第六方面所述的板卡。

第八方面,本申请实施例还提供了一种原子指令解析方法,包括:

对原子指令进行解析,得到多个原子运算指令;

根据所述多个原子运算指令,获取第一源操作数;

通过选择单元对所述第一源操作数的类型进行选择,并将选择结果发送至配置单元;

所述配置单元根据所述选择结果对所述第一源操作数的数目进行配置,得到第二源操作数;

将所述第二源操作数发送至运算单元。

上述译码器和原子指令解析方法,通过多个选择单元对多个源操作数的类型进行选择并输出,通过配置单元对多个源操作数的数目进行配置,并输出不同位宽的源操作数,能够针对不同的原子指令进行功能解析,并实现多个源操作数的原子访存指令和原子计算指令。

附图说明

图1为一个实施例中译码器1000的结构框架图;

图2为一个实施例中译码器1000的工作流程示意图;

图3为一个实施例中译码器2000的结构框架图;

图4为一个实施例中组合处理装置的结构示意图;

图5为另一个实施例中组合处理装置的结构示意图;

图6为一个实施例中板卡的结构示意图;

图7为一个实施例中原子指令解析方法的流程示意图;

图8为另一个实施例中原子指令解析方法的流程示意图;

图9为另一个实施例中原子指令解析方法的流程示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在一个实施例中,如图1所示,提供了一种译码器1000,该译码器包括:指令解析单元1001、多个选择单元1002以及配置单元1003。指令解析单元1001,用于对人工神经网络运算关联的计算指令的类型进行解析;多个选择单元1002连接于指令解析单元1001和配置单元1003之间,用于对多个源操作数的类型进行选择并输出;配置单元1003,用于对多个源操作数的数目进行配置,以及还用于输出不同位宽的源操作数;其中,多个源操作数的类型包括地址和立即数。

作为一种可选的实施方式,指令解析单元1001具体用于解析人工神经网络运算关联的计算指令是否是原子类指令。指令解析单元1001通过计算指令的name域,判断该计算指令是否是原子类指令,例如:name=15表示指令类型为原子类指令。

其中,多个选择单元1002根据计算指令的功能,获取执行该计算指令所需的多个源操作数,并通过该计算指令的源操作数类型(src1vec或src2vec)域,选择执行该计算指令所需的源操作数类型。

作为一种可选的实施方式,选择单元1002的数目与源操作数的数目一一对应,例如:三个源操作数需要设置三个选择单元1002,分别对每一源操作数的类型进行选择。

其中,不同数目的源操作数进行原子操作时,配置单元1003通过该计算指令的srcop域完成该计算指令的源操作数数目配置,并输出不同位宽的源操作数,例如:srcop={src1,src2},表示该计算指令包括两个源操作数,分别为src1和src2。可选的,源操作数的数目可以为一个、两个或三个。

上述译码器中,通过多个选择单元对多个源操作数的类型进行选择并输出,通过配置单元对多个源操作数的数目进行配置,从而输出不同位宽的源操作数。该译码器和原子指令解析方法能够根据不同的原子指令功能,从编程角度实现不同数目源操作数的原子操作。

在其中一个实施例中,如图1所示,例如:源操作数的数目为两个,分别为src1和src2,不同数目的源操作数进行原子操作时,其中一个选择单元1002对src1的类型进行选择,通过该计算指令的src1vec域判断所选择的src1为地址还是立即数,例如:src1vec=1表示执行该计算指令的源操作数src1为寻址数据,那么选择单元1002将src1中寻址得到的数据作为输出;另一个选择单元1002对src2的类型进行选择,通过该计算指令的src2vec域判断所选择的src2为地址还是立即数,例如:src2vec=0表示执行该计算指令的源操作数src2为立即数,那么选择单元1002将src2中的立即数作为输出。

上述译码器中,通过增加多个选择单元,从而实现对多个源操作数中每一源操作数的类型选择。

在其中一个实施例中,如图2所示,原子指令需要对三个源操作数(src0、src1和src2)执行原子操作,src0存储在片外,src1和src2均存储在片上。通过直接内存存取(directmemoryaccess,dma)单元访问系统内存,从访存地址src0中获取数据data0。其中,dma单元执行访存操作之前,需启用缓存锁保证该处理器核独占访存地址src0;或者启用总线锁,保证dma单元数据传输过程中取得总线控制权。两个选择单元1002中的其中一个选择单元会输入src1的立即数和寻址数据;另一个选择单元会输入src2的立即数和寻址数据,两个选择单元1002分别根据原子指令中的src1vec域和src2vec域对src1和src2进行类型选择。若src1vec=1表示执行该计算指令的源操作数src1为寻址数据,那么选择单元1002将src1中寻址得到的数据作为输出data1;若src2vec=0表示执行该计算指令源操作数src0为立即数,那么选择单元1002将src2中的立即数作为输出data2。配置单元1003对输入数据data0、data1和data2进行源操作数数目配置,并输出不同位宽的data0、data1和data2,将data0、data1和data2发送至存储单元进行存储,或发送至运算单元执行运算。

上述译码器中,通过增加选择单元,实现对源操作数的类型选择;通过增加配置单元对源操作数的数目进行配置,能够适应不同应用场景下对原子指令集的需求,提高了译码器的完备性;进一步,能够输出不同位宽的源操作数,节约了平均执行时间。

在其中一个实施例中,如图3所示,提供了一种译码器2000,该译码器包括:指令存储单元2001、指令解析单元2002、多个选择单元2003、配置单元2004、依赖关系处理单元2005以及存储队列单元2006。指令存储单元2001,用于存储人工神经网络运算关联的计算指令;指令解析单元2002,用于对人工神经网络运算关联的计算指令的类型进行解析;多个选择单元2003连接于指令解析单元2002和配置单元2004之间,用于对多个源操作数的类型进行选择并输出;配置单元2004,用于对多个源操作数的数目进行配置,以及还用于输出不同位宽的源操作数;其中,多个源操作数的类型包括地址和立即数;依赖关系处理单元2005,用于确定第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系,如第一运算指令与第零运算指令存在关联关系,将第一运算指令缓存在指令存储单元2001内,在第零运算指令执行完毕后,从指令存储单元2001提取的第一运算指令传输至运算单元;其中,确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据第一运算指令提取第一运算指令中所需数据的第一存储地址区间,依据第零运算指令提取第零运算指令中所需数据的第零存储地址区间,如第一存储地址区间与第零存储地址区间具有重叠的区域,确定第一运算指令与第零运算指令具有关联关系,如第一存储地址区间与第零存储地址区间不具有重叠的区域,确定第一运算指令与所述第零运算指令不具有关联关系;存储队列单元2006,用于存储指令队列,该指令队列包括:按该指令队列的前后顺序待执行的多个运算指令或计算指令。

本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的译码器,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。

该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图4为组合处理装置的示意图。

其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。

通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。

可选的,该结构如图5所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,还申请了一种芯片,其包括了上述神经网络运算装置或组合处理装置。

在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图6,图6提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;

所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-31200颗粒时,数据传输的理论带宽可达到251600mb/s。

在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到116000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。

在一些实施例里,申请了一种电子设备,其包括了上述板卡。

电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

在一个实施例中,如图7所示,提供了一种原子指令解析方法,该方法可在如图1或图3所示的译码器上运行,所述方法包括以下步骤:

步骤202,对原子指令进行解析,得到多个原子运算指令。

其中,原子指令指的是用于执行原子操作的指令;原子运算指令指的是原子指令经解析以后的多个原子算数指令以及原子访存指令。

具体地,通过指令处理单元对存储在指令存储单元中的计算指令进行解析,得到多个原子算数指令以及原子访存指令,并将多个原子算数指令以及原子访存指令按照执行顺序依次存储在存储队列单元中。原子运算指令如表1所示:

表1

步骤204,根据所述多个原子运算指令,获取第一源操作数。

其中,第一源操作数指的是待处理数据,包括立即数以及从片上地址或片外地址中通过寻址得到的数据。

作为一种可选的实施方式,根据解析得到的多个原子运算指令,获取单一第一源操作数;或者根据解析得到的多个原子运算指令,获取多个第一源操作数。可选的,第一源操作数可以为两个或多个。

步骤206,通过选择单元对所述第一源操作数的类型进行选择,并将选择结果发送至配置单元。

其中,选择单元指的是,对第一源操作数的类型进行选择并输出的硬件单元;配置单元指的是,对第一源操作数的数目进行配置并输出不同位宽的第二源操作数的硬件单元。

作为一种可选的实施方式,若所述第一源操作数为单一第一源操作数,则通过所述选择单元对所述单一第一源操作数的类型进行选择;若所述第一源操作数为多个第一源操作数,则通过多个所述选择单元对所述多个第一源操作数的类型进行选择。

具体地,选择单元的数目与第一源操作数的数目一一对应,例如:若第一源操作数为三个,则需要设置三个选择单元,分别对每一个第一源操作数的类型进行选择。

作为另一种可选的实施方式,根据所述原子指令中的第一源操作数类型为地址还是立即数,对所述第一源操作数进行选择并输出。

具体地,选择单元根据该原子指令的源操作数类型(src1vec或src2vec)域,判断所选择的第一源操作数为地址还是立即数,例如:src1vec=1表示执行该原子指令的第一源操作数为寻址数据,那么选择单元将第一源操作数中寻址得到的数据作为输出,并发送至配置单元。

步骤208,所述配置单元根据所述选择结果对所述第一源操作数的数目进行配置,得到第二源操作数。

其中,第二源操作数指的是经配置单元配置后的数据,第二源操作数可以为不同位宽的数据。第二源操作数的数目与第一源操作数的数目相同,也就是说,每一个第一源操作数都会经过配置得到一个第二源操作数。

具体地,配置单元通过该原子指令的srcop域,对执行该原子指令的第一源操作数的数目进行配置,并输出不同位宽的第二源操作数,例如:srcop={src1,src2},表示执行该原子指令需要两个第一源操作数,分别为src1和src2,通过配置单元输出不同位宽的src1和src2。

步骤210,将所述第二源操作数发送至运算单元。

其中,运算单元指的是根据原子指令的功能执行相应计算的硬件单元,包括一个主处理电路和多个从处理电路。

具体地,将经过源操作数选择和配置后的第二源操作数发送至运算单元执行相应计算,得到目的操作数。

上述原子指令解析方法中,通过多个选择单元对多个源操作数的类型进行选择并输出,通过配置单元对多个源操作数的数目进行配置,并输出不同位宽的源操作数,能够针对不同的原子指令进行功能解析,并实现多个源操作数的原子访存指令和原子计算指令。

在其中一个实施例中,如图8所示,提供了一种原子指令解析方法,该方法可在如图1或图3所示的译码器上运行,所述方法还包括以下步骤:

步骤302,获取计算指令。

具体地,根据计算指令的指令地址,从指令存储单元中获取待执行的计算指令。

步骤304,通过指令解析单元对所述计算指令的类型进行解析,得到所述原子指令。

具体地,指令解析单元通过该计算指令的name域对该计算指令的类型进行解析,若name=15,则表示该计算指令为原子类指令。

在其中一个实施例中,如图9所示,提供了一种原子指令解析方法,所述方法还包括以下步骤:

步骤402,根据所述多个原子运算指令对所述第二源操作数进行计算,得到目的操作数。

其中,目的操作数指的是对源操作数操作完成后的操作结果,包括立即数以及片上或片外的存储地址。

具体地,按照指令队列中多个原子运算指令的执行顺序,将第二源操作数进行转发,计算得到目的操作数。

步骤404,将所述目的操作数存储至片上存储单元。

其中,存储单元指的是处理器核内部的片上存储空间,包括缓存、寄存器的任意组合,用于存储输入数据以及输入数据中的标量数据。

具体地,将计算得到的目的操作数存储至片上缓存中,完成当前原子指令操作的写回阶段。

上述原子指令解析方法中,经过配置的第二源操作数参与运算得到目的操作数,从而实现多个操作数的原子操作,增强了原子指令集的完备性以及功能完整性。

应该理解的是,虽然图7-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图7-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。


技术特征:

1.一种译码器,其特征在于,所述译码器包括:指令解析单元、多个选择单元以及配置单元;

所述指令解析单元,用于对人工神经网络运算关联的计算指令的类型进行解析;

所述多个选择单元,用于对多个源操作数的类型进行选择并输出;

所述配置单元,用于对所述多个源操作数的数目进行配置;

所述配置单元,还用于输出不同位宽的源操作数;

其中,所述多个源操作数的类型包括地址和立即数。

2.根据权利要求1所述的译码器,其特征在于,所述指令解析单元,还用于解析所述人工神经网络运算关联的计算指令是否是原子类指令。

3.根据权利要求1所述的译码器,其特征在于,所述多个选择单元中的每一选择单元,用于对所述多个源操作数中每一源操作数的类型进行选择。

4.根据权利要求3所述的译码器,其特征在于,所述选择单元根据所述计算指令中的源操作数类型,对所述源操作数的类型进行选择并输出。

5.根据权利要求1所述的译码器,其特征在于,所述译码器还包括:指令存储单元以及存储队列单元;

所述指令存储单元,用于存储所述人工神经网络运算关联的计算指令;

所述存储队列单元,用于存储指令队列,所述指令队列包括:按所述指令队列的前后顺序待执行的多个运算指令或计算指令。

6.根据权利要求5所述的译码器,其特征在于,所述译码器还包括:依赖关系处理单元;

所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至运算单元;

所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:

依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。

7.一种机器学习芯片,其特征在于,所述机器学习芯片包括如权利要求1-5中任意一项所述的译码器。

8.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-6中任意一项所述的译码器,所述神经网络运算装置用于从处理装置中获取待运算输入数据和控制信息,并执行机器学习运算,将执行结果通过输入/输出接口传递给所述处理装置。

9.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求8所述的神经网络运算装置、处理装置以及通用互联接口;

所述神经网络运算装置与所述处理装置进行交互,共同完成用户的计算操作。

10.根据权利要求9所述的组合处理装置,其特征在于,还包括:存储装置,所述存储装置分别与所述神经网络运算装置和所述处理装置连接,用于保存所述神经网络运算装置和所述处理装置的数据。

11.一种电子设备,其特征在于,所述电子设备包括如所述权利要求7所述的机器学习芯片。

12.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置、控制器件以及如权利要求7所述的机器学习芯片;

其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;

所述控制器件,用于对所述机器学习芯片的状态进行监控。

13.根据权利要求12所述的板卡,其特征在于,

所述存储器件包括:多组存储单元,每一组所述存储单元与所述机器学习芯片通过总线连接,所述存储单元包括:同步动态随机存取存储器或双倍速率同步动态随机存取存储器;

所述机器学习芯片包括:双倍速率控制器,用于对每个所述存储单元的数据传输与数据存储的控制;

所述接口装置包括:标准高速串行扩展总线接口。

14.一种原子指令解析方法,其特征在于,所述方法包括:

对原子指令进行解析,得到多个原子运算指令;

根据所述多个原子运算指令,获取第一源操作数;

通过选择单元对所述第一源操作数的类型进行选择,并将选择结果发送至配置单元;

所述配置单元根据所述选择结果对所述第一源操作数的数目进行配置,得到第二源操作数;

将所述第二源操作数发送至运算单元。

15.根据权利要求14所述的方法,其特征在于,所述对原子指令进行解析,得到多个原子运算指令的步骤之前,还包括:

获取计算指令;

通过指令解析单元对所述计算指令的类型进行解析,得到所述原子指令。

16.根据权利要求14所述的方法,其特征在于,所述根据所述多个原子运算指令,获取第一源操作数,包括:

根据所述多个原子运算指令,获取单一第一源操作数;

根据所述多个原子运算指令,获取多个第一源操作数。

17.根据权利要求14所述的方法,其特征在于,所述通过选择单元对所述第一源操作数的类型进行选择,并将选择结果发送至配置单元,包括:

若所述第一源操作数为单一第一源操作数,则通过所述选择单元对所述单一第一源操作数的类型进行选择;

若所述第一源操作数为多个第一源操作数,则通过多个所述选择单元对所述多个第一源操作数的类型进行选择。

18.根据权利要求17所述的方法,其特征在于,所述若所述源操作数为单一第一源操作数,则通过所述选择单元对所述单一第一源操作数的类型进行选择,包括:

根据所述原子指令中的第一源操作数类型为地址还是立即数,对所述第一源操作数进行选择并输出。

19.根据权利要求14所述的方法,其特征在于,所述方法还包括:

根据所述多个原子运算指令对所述第二源操作数进行计算,得到目的操作数;

将所述目的操作数存储至片上存储单元。

技术总结
本申请涉及一种译码器和原子指令解析方法,包括:指令解析单元、多个选择单元以及配置单元;所述指令解析单元,用于对人工神经网络运算关联的计算指令的类型进行解析;所述多个选择单元,用于对多个源操作数的类型进行选择并输出;所述配置单元,用于对所述多个源操作数的数目进行配置;所述配置单元,还用于输出不同位宽的源操作数;其中,所述多个源操作数的类型包括地址和立即数。采用本译码器和原子指令解析方法能够根据不同的原子指令功能,对其所需的源操作数进行配置。

技术研发人员:不公告发明人
受保护的技术使用者:上海寒武纪信息科技有限公司
技术研发日:2018.11.30
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-15865.html

最新回复(0)