CN111258770A - 数据处理方法、处理器、数据处理装置及存储介质 - Google Patents

数据处理方法、处理器、数据处理装置及存储介质 Download PDF

Info

Publication number
CN111258770A
CN111258770A CN201811459677.6A CN201811459677A CN111258770A CN 111258770 A CN111258770 A CN 111258770A CN 201811459677 A CN201811459677 A CN 201811459677A CN 111258770 A CN111258770 A CN 111258770A
Authority
CN
China
Prior art keywords
data
storage device
sub
comparison result
source operand
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
CN201811459677.6A
Other languages
English (en)
Other versions
CN111258770B (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201811459677.6A priority Critical patent/CN111258770B/zh
Priority to PCT/CN2019/121064 priority patent/WO2020108496A1/zh
Publication of CN111258770A publication Critical patent/CN111258770A/zh
Application granted granted Critical
Publication of CN111258770B publication Critical patent/CN111258770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及一种数据处理方法、处理器、数据处理装置及存储介质。所述数据处理方法包括:根据运算指令从第一存储装置中读取子数据段,并将当前读取的子数据段存储至第二存储装置中,根据运算指令,将子数据段中的N个子数据逐一进行比较得到N个子数据中的最大值,并将该最大值作为第一比较结果存储于第一存储装置中;再读取第一比较结果和另一所述子数据段进行最大值比较,得到第二比较结果,并将第二比较结果存储于第一存储装置中。通过将大数据拆分成小数据进行循环运算处理,通过对操作数按照数据读取容量循环读取,使得运算处理时的能够容纳的数据大小满足要求,且加快运算速度。

Description

数据处理方法、处理器、数据处理装置及存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据处理方法、处理器、数据处理装置及存储介质。
背景技术
原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换(例如共享变量i执行累加,非原子操作情况下多个核同时i++的结果会出错)。在多核处理器系统当中,多个处理器核共享同一块存储空间,通常的数据传输技术可能无法保证原子性,即同一时间可能有多个处理器核访问同一地址。
在实际程序当中,运算结果存储在一个存储空间内,该存储空间具有一定的地址范围,由于该存储空间可能在运算完成之前被其他处理器核访问,传统的做法是先将该存储空间的数据读到存储单元,然后将运算结果存在该存储单元,指令运算结束之后将该存储单元的结果写回到该存储空间。然而,如果运算期间有其它的处理器核访问该存储空间,就会得到一个错误的结果,破坏这次累加的原子性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现原子操作期间单独访问片外存储空间的数据处理方法、处理器、数据处理装置及存储介质。
一种数据处理方法,所述方法包括:
获取运算指令,其中,所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述子数据段,并将当前读取的所述子数据段存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中;
从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;
根据所述运算指令,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置以及所述第一存储装置中。
在其中一个实施例中,所述运算指令的指令格式,包括指令类别、指令类型、源操作数、目标操作数及操作码;
所述指令类别用于确定所述运算指令是否为原子操作运算指令;
所述指令类型用于确定所述运算指令的运算类型;
所述操作码用于配置源操作数的个数;
所述目标操作数用于表示当前比较结果。
在其中一个实施例中,所述方法还包括:
控制计数器累加一次或递减一次,之后,返回根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至所述计数器从初始值累加至目标循环次数,或所述计数器从所述目标循环次数递减为初始值,完成所述运算指令对应的运算操作。
一种用于数据处理方法的处理器,所述处理器包括运算电路、读写电路以及与所述运算电路邻近设置的第二存储装置,所述第二存储装置能够通过所述读写电路与所述处理器外部的第一存储装置连接;
其中,所述运算电路用于获取运算指令,根据所述运算指令向所述第一存储装置发送读写请求;
所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
所述读写电路用于根据所述读写请求,从所述第一存储装置中读取所述子数据段,并将所述子数据段存储至所述第二存储装置;
所述运算电路用于根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从所述第一存储装置中读取所述子数据段,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置中;通过所述读写电路将所述第二存储装置的所述第一比较结果存储至所述第一存储装置中;从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置中;通过所述读写电路将所述第二存储装置的所述第二比较结果存储于所述第一存储装置中。
在其中一个实施例中,所述运算电路包括主处理电路和一个以上的从处理电路,一个以上的所述从处理电路均连接至所述主处理电路;
所述单目最大值运算模块置于所述主处理电路中。
一种数据处理装置,所述装置包括:
获取模块,用于获取运算指令,其中,所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
读取模块,用于根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述子数据段,并将当前读取的所述子数据段存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
运算模块,用于根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中;从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;根据所述运算指令,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置以及所述第一存储装置中。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取运算指令,其中,所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述子数据段,并将当前读取的所述子数据段存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中;
从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;
根据所述运算指令,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置以及所述第一存储装置中。
上述数据处理方法、处理器、数据处理装置及存储介质,根据运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中,然后根据运算指令,将子数据段中的N个子数据逐一进行比较得到N个子数据中的最大值,并将该最大值作为第一比较结果存储于第二存储装置以及第一存储装置中,之后从第一存储装置中读取第一比较结果和另一子数据段,将第一比较结果与另一子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至第一存储装置中,直至完成该运算指令对应的相关运算操作。通过循环读取数据进行比较,将每次循环的比较结果不断地存储到第一存储装置中,对该第一存储装置实现独占访问,避免其它的处理器核访问该第一存储装置,保证了原子操作的原子性。对处理器的算术运算功能进一步扩展,通过对该第一存储装置实现独占访问,提高了原子操作期间的运算效率。
附图说明
图1为一个实施例中处理器的结构示意图;
图2为一个实施例中运算模块的结构示意图;
图3为另一个实施例中处理器的结构示意图;
图4为另一个实施例中处理器的结构示意图;
图5为另一个实施例中处理器的结构示意图;
图6为一个实施例中数据处理方法的流程示意图;
图7为另一个实施例中数据处理方法的流程示意图;
图8为另一个实施例中指令拆解方法的流程示意图;
图9为一个实施例中步骤S300的流程示意图;
图10为另一个实施例中步骤S300的流程示意图;
图11为一个实施例中Atomic MAX_SCALAR方法的流程示意图;
图12为另一个实施例中Atomic MAX_SCALAR方法的流程示意图;
图13为一个实施例中数据处理装置的结构框图;
图14为一个实施例中指令拆解装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。片外是指处理器外部,即片外存储装置是指设置在处理器外部的存储装置;片上是指处理器内部,即片上存储装置是指设置在处理器内部的存储装置。
本申请提供的数据处理方法,可以应用于如图1所示的处理器1000。该处理器1000包括运算电路12、读写电路203以及第二存储装置201。该第二存储装置201可以是设置在处理器1000内部的缓存器和/或寄存器。该第二存储装置201可通过读写电路203连接至处理器1000外部设置的第一存储装置13。该第一存储装置13及第二存储装置201可以是非易失性存储器或易失性存储器,此处不做具体限定。该读写电路203可以是I/O电路。
其中,该运算电路12以及读写电路203可分别与第二存储装置201连接,且读写电路203可连接第一存储装置13。第二存储装置201能够通过读写电路203与处理器1000外部的第一存储装置13连接。第二存储装置201可以通过读写电路203从第一存储装置13读取第一源操作数,并将第一源操作数传送至运算电路12进行运算。运算电路12可以将其获得的运算结果及中间运算结果存储于第二存储装置201中,第二存储装置201还可以通过读写电路203将运算结果写回第一存储装置13中。本申请实施例中,通过不断地将中间运算结果从第二存储装置201写回处理器1000外部的第一存储装置13,可以实现运算电路12对第一存储装置13的独占使用,从而可以保证运算的原子性及运算结果的准确性。
其中,运算电路12用于接收运算指令,对该运算指令进行解析,并根据该运算指令实现相应的运算操作。可选地,该运算指令可以具有特定的指令格式,该运算电路可以对根据该运算指令的指令格式进行解析,获得该运算指令的指令类型、源操作数及操作码等指令信息,从而根据该运算指令实现相应的运算操作。
可选地,本申请实施例中的运算指令可以是原子操作运算指令,如下表1所示,该运算指令的指令格式可以包括有指令类别Name、指令类型Op、第一源操作数、第二源操作数、目标操作数Dst及操作码Src Op等等。
其中,指令类别Name用于确定指令的类别(指令的类别包括原子操作运算指令和其他普通运算指令),即指令类别用于确定运算指令是否为原子操作运算指令。指令类型Op用于确定运算指令的运算类型,运算类型用于表明该运算指令实现何种运算,以区分该运算的具体功能,例如,运算类型可以是累加运算、递减运算、最大值运算、最小值运算、逻辑与运算、逻辑或运算、逻辑异或运算、替换运算、交换运算等。操作码Src Op用于配置该运算指令涉及的源操作数的个数。目标操作数Dst addr用于表示至少一个源操作数运算后获得的当前运算结果,具体地,该目标操作数Dst addr可以是指该当前比较结果的存储地址,该运算指令对应的运算结果可以存储在Dst addr对应的存储地址表示的存储空间内。第一源操作数和第二源操作数可以表示参与运算的数据,第一源操作数可以是存储在片外的第一存储装置13上的数据,即第一源操作数可以表示地址Src0 addr中存储的数据。第二源操作数可以表示立即数或者指令中的地址中存储的数据。
进一步地,运算指令的指令格式还可以包括用于标识源操作数A是立即数还是地址的标识位Src1 vec以及用于标识源操作数B是立即数还是地址的标识位Src2 vec。
具体地,Src1 vec为0时,表示源操作数A为立即数,Src1 vec为1时,表示源操作数A为地址中存储的数据;Src2 vec为0时,表示源操作数B为立即数,Src2 vec为1时,表示源操作数B为地址中存储的数据。
更进一步地,该运算指令的指令格式还包括用于表示标识第一源操作数的数据大小Data size以及用于请求拆分,标识计算所述目标循环次数的数据流IO config。
该运算指令的指令格式可以如下格式,如表1所示:
指令域 位宽 含义
Name 8 指令类别,Atomic类为15
Op 8 指令类型,区分具体功能
Src0 addr 49 源操作数0地址,仅片外,按byte对齐
Dst addr 32 目的地址,仅片上
Src1 32 源操作数A,立即数/地址(由Src1 vec决定)
Src2 32 源操作数B,立即数/地址(由Src2 vec决定)
IO config 9 原子操作读写数据流ID,用于请求拆分
Data size 32 原子操作读写数据大小,按byte对齐
Scr Op 3 操作码,配置源操作数个数
Data type 3 数据类型
Src1 vec 1 源操作数A类型(立即数/地址)
Src2 vec 1 源操作数B类型(立即数/地址)
其中,Src0 addr表示第一源操作数的地址,Dst addr表示目标操作数的存储地址。
在其中一个实施例中,根据运算指令,将源操作数A或源操作数B作为第二源操作数。
可选地,第二源操作数包括源操作数A(Src1)、源操作数B(Src2)、源操作A选定标识位、源操作数B选定标识位。具体地,当源操作数A选定标识位有效时,将源操作数A作为第二源操作数;当源操作数B选定标识位有效时,将源操作数B作为第二源操作数。当源操作数A选定标识位有效,且源操作数B选定标识位有效时,则源操作数A和源操作数B可以同时作为第二源操作数,此时,第二源操作数的数量为两个。进一步地,该操作码Scr Op的位宽可以包括3比特,其中2比特用于区分参加运算的源操作数的个数,1比特用于选择源操作数A(Src1)和/或源操作数B(Src2)作为第二源操作数参加运算。可参考表2:
Figure BDA0001888409400000061
Figure BDA0001888409400000071
当操作码Scr Op为“000”时,则表示运算指令的源操作数为1个,为第一源操作数Src0。当操作码Scr Op为“010”时,则表示运算指令的源操作数为2个,包括第一源操作数Src0和第二源操作数,且此时源操作数A选定标识位有效,第二源操作数为源操作数A(Src1)。当操作码Scr Op为“011”时,则表示运算指令的源操作数为2个,包括第一源操作数Src0和第二源操作数,且此时源操作数B选定标识位有效,第二源操作数为源操作数B(Src2)。当操作码Scr Op为“100”时,则表示运算指令的源操作数为3个,包括第一源操作数Src0、源操作数A(Src1)以及源操作数B(Src2)。
本申请实施例中,可以默认第一源操作数Src0始终有效。
可选地,Data Type表示数据类型,该指令支持但不限于以下几种数据类型:
数据类型 Data Type
Int16 000
Uint16 001
Int32 010
Uint32 011
可选地,该运算指令可以包括算术运算指令,也可以包括逻辑运算指令:其中,算术运算指令可以包括:单目最大值运算指令Atomic MAX_SCALAR、单目最小值运算指令Atomic MIN_SCALAR、两目最大值运算指令Atomic MAX_VEC、两目最小值运算指令AtomicMIN_VEC、替换运算指令Atomic CAS、交换运算指令Atomic EXCH、加法运算指令AtomicADD、累加运算指令Atomic INC及减法运算指令Atomic DEC。逻辑运算指令可以包括:逻辑与运算指令Atomic AND、逻辑或运算指令Atomic OR、逻辑异或运算指令Atomic XOR及逻辑非运算指令Atomic NOT。
其中,单目最大值运算指令Atomic MAX_SCALAR,用于求取第一源操作数中多个第一子数据的最大值。
单目最小值运算指令Atomic MIN_SCALAR,用于求取第一源操作数中多个第一子数据的最小值。
两目最大值运算指令Atomic MAX_VEC,用于求取第一源操作数以及第二源操作数的最大值。
两目最小值运算指令Atomic MIN_VEC,用于求取第一源操作数以及第二源操作数的最小值。
加法运算指令Atomic ADD,用于将第一源操作数与第二源操作数相加。
累加运算指令Atomic INC,用于在第一源操作数与第二源操作数之间进行累加运算。
减法运算指令Atomic DEC,用于在第一源操作数与第二源操作数之间进行减法运算。
逻辑与运算指令Atomic AND,用于在第一源操作数以及第二源操作数之间进行与逻辑运算。
逻辑或运算指令Atomic OR,用于在第一源操作数以及第二源操作数之间进行逻辑或运算。
逻辑异或运算指令Atomic XOR,用于在第一源操作数以及第二源操作数之间进行逻辑异或运算。
逻辑非运算指令Atomic NOT,用于在第一源操作数以及第二源操作数之间进行非运算。
替换运算指令Atomic CAS,用于在第一源操作数、第二源操作数以及第三源操作数之间进行替换。
交换运算指令Atomic EXCH,用于在第一源操作数以及第二源操作数之间进行交换的运算指令。
本申请实施例中,为保证运算的原子性,可以将该运算指令能够将同一运算操作划分为多次子运算操作实现,通过不断地向第一存储装置写回中间计算结果,实现第一存储装置的独占。
具体地,第一源操作数包括至少一个第一子数据,运算电路12接收运算指令,根据运算指令向第一存储装置13发送读写请求,读写电路203按照数据读取方式,根据读写请求从第一存储装置13读取第一子数据,并存储至第二存储装置201中,运算电路12根据运算指令获取第二源操作数,执行运算操作,获得当前运算结果,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203将第二存储装置201的当前运算结果存储至第一存储装置13中。之后,运算电路12可以再次向第一存储装置13发送读写请求,以再次从第一存储装置13中读取第一子数据,循环多次执行运算操作,直至完成所述运算指令对应的运算操作。
可选地,该处理器还可以包括计数器,该计数器可以连接至运算电路12,该计数器用于记录运算指令的目标循环次数。具体地,每当读写电路203将第二存储装置201的当前运算结果存储至第一存储装置13中之后,运算电路12可以控制计数器累加一次,再次向第一存储装置13发送读写请求,直至计数器从初始值累加至目标循环次数。本申请实施例中,该计数器的初始值可以是0,即当计数器从0累加至目标循环次数时,完成该运算指令的相应运算操作。或者,运算电路12可以控制计数器递减一次,再次向第一存储装置13发送读写请求,直至计数器从目标循环次数递减为初始值。本申请实施例中,该计数器的初始值可以是0,即当计数器从目标循环次数递减为0时,完成该运算指令的相应运算操作。
进一步地,运算电路12可以设置有对应各个运算指令的运算模块。具体地,请参阅图2,该运算电路12可以包括两目最大值运算模块121、两目最小值运算模块122、逻辑与运算模块123、逻辑或运算模块124、逻辑异或运算模块125、交换运算模块126、替换运算模块127、单目最大值运算模块128、单目最小值运算模块129、加法运算模块130、累加运算模块131、减法运算模块132以及逻辑非运算模块133等。
其中,两目最大值运算模块121用于实现上述的两目最大值运算指令Atomic MAX_VEC的运算操作,即用于实现第一源操作数以及第二源操作数的最大值运算。
两目最小值运算模块122用于实现上述两目最小值运算指令Atomic MIN_VEC的运算操作,即用于实现第一源操作数以及第二源操作数的最小值运算。
逻辑与运算模块123用于实现上述的逻辑与运算指令Atomic AND的运算操作,即用于实现第一源操作数以及第二源操作数的之间的逻辑与运算。
逻辑或运算模块124用于实现上述的逻辑或运算指令Atomic OR的运算操作,即用于实现第一源操作数以及第二源操作数之间的逻辑或运算。
逻辑异或运算模块125用于实现上述的逻辑异或运算指令Atomic XOR的运算操作,即用于实现第一源操作数以及第二源操作数之间的逻辑异或运算。
交换运算模块126用于实现上述的交换运算指令Atomic EXCH的运算操作,即用于现第一源操作数以及第二源操作数之间的交换运算。
替换运算模块127用于实现上述的替换运算指令Atomic CAS的运算操作,即用于实现第一源操作数、第二源操作数以及第三源操作数之间的替换运算。
单目最大值运算模块128用于实现上述的单目最大值运算指令Atomic MAX_SCALAR的运算操作,即用于实现第一源操作数中多个第一子数据的最大值运算。
单目最小值运算模块129用于实现上述的单目最小值运算指令Atomic MIN_SCALAR的运算操作,即用于实现第一源操作数中多个第一子数据的最小值运算。
加法运算模块130用于实现上述的加法运算指令Atomic ADD的运算操作,即用于实现第一源操作数与第二源操作数相加的运算。
累加运算模块131用于实现上述的累加运算指令Atomic INC的运算操作,即用于实现第一源操作数与第二源操作数之间进行累加的运算。
减法运算模块132用于实现上述的减法运算指令Atomic DEC的运算操作,即用于实现第一源操作数与第二源操作数之间进行减法的运算。
逻辑非运算模块133用于实现上述的逻辑非运算指令Atomic NOT的运算操作,即用于实现第一源操作数以及第二源操作数之间的逻辑非运算。
可选地,各个运算模块可以包括运算单元以及与运算单元连接的结果输出单元。其中,运算单元用于执行具体的运算操作步骤,结果输出单元用于将运算操作步骤得出的结果作为当前运算结果。
更进一步地,如图1和图2所示,该处理器还可以包括数据选择器14,数据选择器14连接在运算电路12和读写电路203之间。其中,数据选择器14用于分别选通运算电路12中各个运算模块与读写电路203的连接通路。例如,若运算指令为两目最大值运算指令AtomicMAX_VEC时,数据选择器14用于选通两目最大值运算模块121与读写电路203的连接通路。此时,两目最大值运算模块121用于获取第二子数据,并根据运算指令判断当前读取的第一子数据是否大于或等于第二子数据,将获得的当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为两目最小值运算指令Atomic MIN_VEC时,数据选择器14用于选通两目最小值运算模块122与读写电路203的连接通路。此时,两目最小值运算模块122用于获取第二子数据,并根据运算指令判断当前读取的第一子数据是否小等于第二子数据,将获得的当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为逻辑与运算指令Atomic AND时,数据选择器14用于选通逻辑与运算模块123与读写电路203的连接通路。此时,逻辑与运算模块123用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据进行逻辑与运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为逻辑与运算指令Atomic OR时,数据选择器14用于选通逻辑或运算模块124与读写电路203的连接通路。此时,逻辑或运算模块124用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据进行逻辑或运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为逻辑与运算指令Atomic XOR时,数据选择器14用于选通逻辑异或运算模块125与读写电路203的连接通路。此时,逻辑异或运算模块125用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据进行逻辑异或运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为替换运算指令Atomic CAS时,数据选择器14用于选通替换运算模块127与读写电路203的连接通路。此时,替换运算模块127用于获取第二子数据以及第三子数据,并根据运算指令将当前读取的第一子数据、第二子数据以及第三子数据进行替换运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为交换运算指令Atomic EXCH时,数据选择器14用于选通交换运算模块126与读写电路203的连接通路。此时,交换运算模块126用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据进行交换运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为单目最大值运算指令Atomic MAX_SCALAR时,数据选择器14用于选通单目最大值运算模块128与读写电路203的连接通路。此时,单目最大值运算模块128用于将源操作数的子数据段中的N个子数据逐一进行比较,得到N个子数据中的最大值,并将该最大值作为当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为单目最小值运算指令Atomic MIN_SCALAR时,数据选择器14用于选通单目最小值运算模块129与读写电路203的连接通路。此时,单目最小值运算模块129用于将源操作数的子数据段中的N个子数据逐一进行比较,得到N个子数据中的最小值,并将该最小值作为当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为加法运算指令Atomic ADD时,数据选择器14用于选通加法运算模块130与读写电路203的连接通路。此时,加法运算模块130用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据相加得到当前运算结果,将当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
若运算指令为累加运算指令Atomic INC时,数据选择器14用于选通累加运算模块131与读写电路203的连接通路。此时,累加运算模块131用于获取第二子数据,并根据运算指令判断当前读取的第一子数据是否大于或等于第二子数据,当第一子数据大于或等于第二子数据时,将第一子数据复位,并将复位后的第一子数据作为当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为减法运算指令Atomic DEC时,数据选择器14用于选通减法运算模块132与读写电路203的连接通路。此时,减法运算模块132用于获取第二子数据,并根据运算指令判断当前读取的第一子数据是否大于第二子数据,当第一子数据大于第二子数据时,将第二子数据作为当前比较结果存储至第二存储装置201中;当第一子数据小于或等于第二子数据时,将第一子数据与第一预设值相减,并将相减后的第一子数据作为当前比较结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前比较结果存储至第一存储装置13中。
若运算指令为逻辑非运算指令Atomic NOT时,数据选择器14用于选通逻辑非运算模块133与读写电路203的连接通路。此时,逻辑非运算模块133用于获取第二子数据,并根据运算指令将当前读取的第一子数据与第二子数据进行逻辑非运算,将获得的当前运算结果存储至第二存储装置201中,通过读写电路203和数据选择器14将第二存储装置201的当前运算结果存储至第一存储装置13中。
在一个实施例中,请继续参阅图3-图5,第二存储装置201与读写电路203可以封装为存储电路10。运算电路12包括主处理电路101和至少一个从处理电路102,至少一个从处理电路102均连接至主处理电路101,主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;其中,分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。其中,主处理电路101用于对源操作数执行前序处理以及与多个从处理电路之间传输数据以及运算指令;多个从处理电路102用于依据从主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路;主处理电路101用于对多个中间结果执行后续处理得到计算指令的计算结果。
该主处理电路101可以包括上述两目最大值运算模块121、两目最小值运算模块122、逻辑与运算模块123、逻辑或运算模块124、逻辑异或运算模块125、替换运算模块126、交换运算模块127、单目最大值运算模块128、单目最小值运算模块129、加法运算模块130、累加运算模块131、减法运算模块132以及逻辑非运算模块133等。上述的数据选择器14可以连接在该主处理电路101和读写电路203之间。
在一个实施例中,处理器还可以包括控制器电路11,该控制器电路11包括:指令缓存电路110、指令处理电路111和存储队列电路113。
其中,指令缓存电路110,用于存储人工神经网络运算关联的计算指令。
指令处理电路111,用于对计算指令解析得到多个运算指令。
存储队列电路113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
进一步地,控制器电路11可以包括拆分粒度电路114、循环次数处理电路115以及数据读取容量计算电路116。
其中,拆分粒度电路114连接循环次数处理电路115,循环次数处理电路115分别连接指令处理电路111以及数据读取容量计算电路116,数据读取容量计算电路116连接运算电路12,第二存储装置201能够通过读写电路203与处理器外部的第一存储装置13连接。
其中,指令处理电路111用于获取运算指令,并根据运算指令解析出第一源操作数的数据大小,并将该第一源操作数的数据大小传送至循环次数处理电路115。
拆分粒度电路114用于存储预设的拆分粒度。本申请实施例中,拆分粒度电路114可以是缓存(buffer)或第二存储装置中的一段存储空间,例如,该拆分粒度电路114可以是第二存储装置中指定地址区间对应的存储空间。
循环次数处理电路115用于根据第一操作数大小以及预设的拆分粒度,得到目标循环次数,并将该目标循环次数传送至运算电路12。本申请实施例中,该循环次数处理电路115可以是计数器。
数据读取容量计算电路116用于根据第一操作数大小以及预设的拆分粒度,得到数据读取容量,并将该数据读取容量传送至运算电路12。运算电路12用于根据运算指令向第一存储装置13发送读写请求,以从第一存储装置13中读取第一子数据,该第一子数据的大小等于该数据读取容量。之后,运算电路12可以根据读取的第一子数据和第二子数据进行运算,当前运算完成后,循环次数处理电路115将目标循环次数从初始值累加一次,再次向第一存储装置13发送读写请求,直至计数器从初始值累加至目标循环次数。本申请实施例中,该初始值可以是0,即直到当前循环次数从0累加至目标循环次数时,完成该运算指令的相应运算操作。或者,循环次数处理电路115将目标循环次数递减一次,再次向第一存储装置13发送读写请求,直至从目标循环次数递减为0。即直到当前循环次数递减为0时,完成该运算指令的相应运算操作。
本实施例通过添加拆分粒度电路114、循环次数处理电路115以及数据读取容量计算电路116对数据进行拆分,使得处理的数据大小大于单时钟周期能容纳的访存带宽。
请参阅图6或图7,当接收到运算指令后,该处理器可以进行相应的步骤:
S100,获取运算指令。
其中,该运算指令用于实现源操作数之间的运算,第一源操作数包括至少一个第一子数据。
S200,根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中。
其中,数据读取容量表示每次读取的数据的数量,可以计算得到。第一存储装置13为片外存储装置,第二存储装置201为片上存储装置。具体地,运算电路12获取运算指令之后,根据运算指令向第一存储装置13发送读写请求,之后读写电路203按照预设的数据读取方式,根据该读写请求,从第一存储装置13中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置201。
S300,根据运算指令执行运算操作,将获得当前运算结果存储至第二存储装置以及第一存储装置中。
具体地,运算电路12根据获取的运算指令,进行相应的运算操作,进而得到当前运算结果,之后,将得到的当前运算结果存储在第二存储装置201中,再将第二存储装置201的当前运算结果通过读写电路203存储到第一存储装置13中。
S400,返回根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据的步骤,直至完成运算指令对应的运算操作。
具体地,步骤S400可以包括:控制计数器累加一次或递减一次,之后,返回步骤S200,根据运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取第一子数据,直至计数器从初始值累加至目标循环次数,或计数器从目标循环次数递减为初始值。本申请实施例中,计数器的初始值可以为0。
进一步地,目标循环次数是根据第一源操作数的数据大小进行计算得到。当将第二存储装置201的当前运算结果通过读写电路203存储到第一存储装置13后,控制计数器累加一次,之后继续根据运算指令以及数据读取容量,从第一存储装置13中读取第一子数据,直至计数器从0累加至目标循环次数。或者控制计数器递减一次,直至计数器将目标循环次数递减为0,停止从第一存储装置13中读取第一子数据。
在另一个实施例中,请参阅图8,上述数据处理方法还可以包括以下步骤:
S500,获取运算指令,根据运算指令解析出第一源操作数的数据大小。
具体地,指令处理电路111获取到运算指令,根据运算指令解析出第一源操作数的数据大小,并将该第一源操作数的数据大小发送给循环次数处理电路115。
S600,根据第一源操作数的数据大小以及预设的拆分粒度,得到循环次数以及数据读取容量。
具体地,预设的拆分粒度存储在拆分粒度电路114中,可以为片上的静态存储器中的某个存储空间。循环次数处理电路115接收到第一源操作数的数据大小,根据第一源操作数的数据大小以及预设的拆分粒度,计算得到循环次数。数据读取容量计算电路116根据循环次数处理电路115发送的循环次数、指令处理电路111发送的第一源操作数的数据大小以及预设的拆分粒度,计算得到数据读取容量,并将数据读取容量以及循环次数发送给运算电路12。
可选地,循环次数处理电路115可以按照如下公式计算循环次数:
Figure BDA0001888409400000141
其中,Count表示为循环次数,data size表示为第一源操作数的数据大小,拆分粒度即为预设的拆分粒度。本申请实施例中,将data size除以预设的拆分粒度的商值向上取整,获得循环次数Count。
数据读取容量计算电路116可以按照如下公式计算数据读取容量:
data real size=min{未处理数据大小,拆分粒度}
其中,data real size表示数据读取容量,拆分粒度即为预设的拆分粒度,未处理数据大小表示第一源操作数的数据大小减去数据读取容量以后剩余的数据大小。
例如,控制器电路11根据运算指令解析出第一源操作数的数据大小为1000byte,预设的拆分粒度为512byte,可以得到循环次数为2,两次的数据读取容量分别为512byte和488byte。
进一步地,上述数据处理方法还可以包括:
根据该运算指令,确定运算指令中包括的源操作数的数量。其中,源操作数的数量可以包括一个、两个或三个。
具体地,运算电路12可以根据运算指令中的操作码Scr Op进行判断,当操作码ScrOp为“000”时,则表示运算指令的源操作数为1个,为第一源操作数Src0。当操作码Scr Op为“010”时,则表示运算指令的源操作数为2个,包括第一源操作数Src0和第二源操作数,且第二源操作数为源操作数A(Src1)。当操作码Scr Op为“011”时,则表示运算指令的源操作数为2个,包括第一源操作数Src0和第二源操作数,且第二源操作数为源操作数B(Src2)。当操作码Scr Op为“100”时,则表示运算指令的源操作数为3个,包括第一源操作数Src0、源操作数A(Src1)以及源操作数B(Src2)。
可选地,当源操作数为一个时,上述步骤S300还可以包括以下步骤:
根据运算指令、子数据段,执行运算操作,将获得的当前运算结果/比较结果存储至第二存储装置以及第一存储装置中。
具体地,运算电路12根据接收到的指令、子数据段,执行相应的操作,获得当前运算结果/比较结果,将获得的当前运算结果/比较结果存储至第二存储装置201中,并通过读写电路203将第二存储装置201中的当前运算结果/比较结果存储至第一存储装置13中。
具体地,当源操作数的数量为一个时,该运算指令可以是单目最大值运算指令Atomic MAX_SCALAR、单目最小值运算指令Atomic MIN_SCALAR以及逻辑非运算指令AtomicNOT等,上述各个运算指令的具体执行过程具体可参见上文的描述。
可选地,当源操作数的数量为两个时,请一并参阅图9,两个源操作数分别为第一源操作数和第二源操作数,上述步骤S300还可以包括以下步骤:
S310,根据运算指令获取第二子数据。
具体地,根据运算指令确定出参加运算的源操作数为两个,运算电路12根据运算指令,获取第二子数据。
S320,根据运算指令、第一子数据和第二子数据,执行运算操作,将获得的当前运算结果存储至第二存储装置以及第一存储装置中。
具体地,运算电路12根据接收到的指令、第一子数据和第二子数据,执行相应的操作,获得当前运算结果,将获得的当前运算结果存储至第二存储装置201中,并通过读写电路203将第二存储装置201中的当前运算结果存储至第一存储装置13中。
具体地,当源操作数的数量为两个时,该运算指令可以是两目最大值运算指令Atomic MAX_VEC、两目最小值运算指令Atomic MIN_VEC、逻辑与运算指令Atomic AND、逻辑或运算指令Atomic OR、逻辑异或运算指令Atomic XOR、交换运算指令Atomic EXCH、加法运算指令Atomic ADD、累加运算指令Atomic INC以及减法运算指令Atomic DEC等,上述各个运算指令的具体执行过程具体可参见上文的描述。
可选地,当源操作数为三个时,请参阅图10,三个源操作数分别为第一源操作数、第二源操作数和第三源操作数,上述步骤S300还可以包括以下步骤:
S330,根据运算指令获取第二子数据以及第三子数据。
其中,第三源操作数包括至少一个第三子数据。
具体地,根据运算指令确定出参加运算的源操作数为三个,运算电路12根据运算指令,获取第二子数据以及第三子数据。
S340,根据运算指令、第一子数据、第二子数据和第三子数据,执行运算操作,将获得的当前运算结果存储至第二存储装置以及第一存储装置中。
具体地,运算电路12根据接收到的指令、第一子数据、第二子数据和第三子数据,执行相应的操作,获得当前运算结果,将获得的当前运算结果存储至第二存储装置201中,并通过读写电路203将第二存储装置201中的当前运算结果存储至第一存储装置13中。
在其中一个实施例中,根据运算指令的指令格式,将源操作数A或源操作数B作为第二源操作数。
具体地,可参照表2中Src Op的格式,当接收到的运算指令中Src Op对应为010时,此时表示源操作数A有效,则将源操作数A作为第二源操作数;当接收到的运算指令中SrcOp对应为011时,此时表示源操作数B有效,则将源操作数B作为第二源操作数;当接收到的运算指令中Src Op对应为100时,此时表示源操作数A有效以及源操作数B有效,则将源操作数A作为第二源操作数,将源操作数B作为第三源操作数。
本实施例中通过指令格式中操作码Src Op的格式,选取源操作数A或源操作数B作为第二源操作数进行选择。
具体地,当上述运算指令为Atomic MAX_SCALAR时,如图11所示的数据处理方法,可以包括以下步骤:
S952,获取运算指令。
其中,运算指令用于实现源操作数的比较运算,源操作数包括至少一个子数据段,每一子数据段包括N个子数据。
具体地,该运算电路12获取运算指令,该运算指令用于实现源操作数的比较运算。
S954,根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取子数据段,并将当前读取的子数据段存储至第二存储装置。
其中,第一存储装置13为片外存储装置,第二存储装置201为片上存储装置。
具体地,运算电路12获取运算指令之后,根据运算指令以及数据读取容量,向第一存储装置13发送读写请求,之后读写电路203按照预设的数据读取方式,根据该读写请求,从第一存储装置13中读取子数据段,并将当前读取的子数据段存储至第二存储装置203。
S956,根据运算指令,将子数据段中的N个子数据逐一进行比较得到N个子数据中的最大值,并将最大值作为第一比较结果存储至第二存储装置以及第一存储装置中。
其中,第一比较结果指的是第一段子数据段中的最大值。
具体地,运算电路12根据获取的运算指令,将子数据段中的N个子数据逐一进行比较得到N个子数据中的最大值,并将最大值作为第一比较结果,之后,将得到的第一比较结果存储在第二存储装置201中,再通过读写电路203将第一比较结果存储到第一存储装置13中。
S958,从第一存储装置中读取第一比较结果和另一子数据段,并将当前读取的第一比较结果和另一子数据段存储至第二存储装置。
具体地,运算电路12获取运算指令之后,根据运算指令以及数据读取容量,向第一存储装置13发送读写请求,之后读写电路203按照预设的数据读取方式,根据该读写请求,从第一存储装置13中读取第一比较结果和另一子数据段,并将当前读取的第一比较结果和另一子数据段存储至第二存储装置203。
可选的,可以根据第二存储装置203中存储地址的顺序,依次读取另一子数据段,也可以不按照地址的存储顺序进行读取,在此不做具体限定。
S960,根据运算指令,将第一比较结果与另一子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至第二存储装置以及第一存储装置中。
其中,第二比较结果指的是第一段子数据段与另一段子数据段中的最大值。
具体地,运算电路12根据获取的运算指令,将第一比较结果与另一子数据段中的N个子数据逐一进行比较,即将第一段子数据段中的最大值与另一子数据段中的N个子数据逐一进行比较,并将比较得到的最大值作为第二比较结果,之后,将得到的第二比较结果存储在第二存储装置201中,再通过读写电路203将第二比较结果存储到第一存储装置13中。
以此类推进行循环比较运算,直至完成所有子数据段的比较运算,得到源操作数中所有子数据中的最大值。
具体地,循环比较运算可以通过控制计数器累加一次或递减一次实现,直至计数器从初始值累加至目标循环次数,或计数器从目标循环次数递减为初始值。本申请实施例中,计数器的初始值可以为0。
进一步地,目标循环次数是根据源操作数的数据大小进行计算得到。当将第二存储装置201的第一比较结果通过读写电路203存储到第一存储装置13后,控制计数器累加一次,之后继续根据运算指令以及数据读取容量,从第一存储装置13中读取第一比较结果和另一子数据段,直至计数器从0累加至目标循环次数。或者控制计数器递减一次,直至计数器将目标循环次数递减为0,停止从第一存储装置13中执行读取操作。
上述数据处理方法中,通过循环读取数据进行比较,将每次循环的比较结果不断地存储到第一存储装置中,对该第一存储装置实现独占访问,避免其它的处理器核访问该第一存储装置,保证了原子操作的原子性。
在其中一个实施例中,上述步骤S956还可以包括:
将子数据段中的第一个子数据与第二个子数据进行比较,当第一个子数据大于或等于第二个子数据时,继续将第一个子数据与第三个子数据进行比较,直到完成与第N个子数据的比较,得到N个子数据中的最大值。
具体地,运算电路12获取到子数据段之后,将当前读取的子数据段中的第一个子数据与第二个子数据进行比较,当第一个子数据大于或等于第二个子数据时,继续将第一个子数据与第三个子数据进行比较,直到完成与第N个子数据的比较,N个子数据中的最大值作为第一比较结果。
进一步,运算电路12获取到第一比较结果和另一子数据段之后,将当前读取的第一比较结果和另一子数据段中每一个子数据依次进行比较,直到完成与另一子数据段中第N个子数据的比较,将比较得到的最大值作为第一比较结果。
例如,当前读取的第一子数据段为多个数据,第一子数据段有a1={1,2,3,4,5,6,7,8},将a1中的多个子数据逐一进行比较,得到a1中的最大值8,将该最大值8作为第一比较结果,将该最大值8存储至第一存储装置13以及第二存储装置201中;再次读取第一比较结果和第二子数据段a2={0,3,4,5,2,10,7,2},将第一比较结果8与a2中的每一个子数据依次进行比较,得到最大值10,将该最大值10作为第二比较结果存储至第一存储装置13以及第二存储装置201中;依次类推。
本实施例中通过将子数据段中的N个子数据进行逐一比较,并将比较得到的最大值存储在第一存储装置13中,完成了最大值的寻找。
在其中一个实施例中,如图12所示的数据处理方法,可以包括以下步骤:
S1000,根据运算指令,获得源操作数的数据长度。
具体地,控制器电路11对该运算指令进行解析的过程中,可以根据该运算指令的Data size域,获取源操作数的数据长度。
S2000,将源操作数的数据长度增加操作位,得到源操作数的数据大小;其中,增加的操作位用于存储第一比较结果。
具体地,译码阶段,控制器电路11需要在源操作数的实际长度之后增加操作位,用于存放第一比较结果,并将增加操作位之后的数据长度作为源操作数的数据大小参与运算。可选的,可以增加一个或多个操作位,在此不做具体限定,优选为增加一个操作位。
例如:控制器电路11根据运算指令解析出源操作数的数据大小为1000byte,为源操作数增加操作位(假设操作位为1byte),则得到的源操作数的数据大小为1001byte。
在一个实施例中,请继续参阅图8,提供了一种指令拆解方法,可以包括:
S500,获取运算指令,根据运算指令解析出第一源操作数的数据大小。
具体地,指令处理电路111获取到运算指令,根据运算指令解析出第一源操作数的数据大小,并将该第一源操作数的数据大小发送给循环次数处理电路115。
S600,根据第一源操作数的数据大小以及预设的拆分粒度,得到目标循环次数以及数据读取容量。
其中,预设的拆分粒度存储在拆分粒度电路114中,可以为片上的静态存储器中的某个存储空间。
具体地,循环次数处理电路115接收到第一源操作数的数据大小,根据第一源操作数的数据大小以及预设的拆分粒度,计算得到目标循环次数。数据读取容量计算电路116根据循环次数处理电路115发送的循环次数、指令处理电路111发送的第一源操作数的数据大小以及预设的拆分粒度,计算得到数据读取容量。并将数据读取容量以及循环次数发送给运算电路12。
可选地,计算目标循环次数的公式可以是:
Figure BDA0001888409400000191
其中,Count表示为目标循环次数,data size表示为第一源操作数的数据大小,拆分粒度即为预设的拆分粒度。
计算数据读取容量的公式可以是:
data real size=min{未处理数据大小,拆分粒度}
其中,data real size表示数据读取容量,拆分粒度即为预设的拆分粒度,未处理数据大小表示第一源操作数的数据大小减去数据读取容量以后剩余的数据大小。
例如,控制器电路11根据运算指令解析出第一源操作数的数据大小为1000byte,预设的拆分粒度为512byte,可以得到循环次数为2,两次的数据读取容量分别为512byte和488byte。
S700,根据运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中。
具体地,运算电路12接收到运算指令,根据运算指令以及数据读取容量,向第一存储装置13发起读写请求,通过读写电路203按照预设的数据读取方式,从第一存储装置13中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置201中。
S800,根据运算指令执行运算操作,将获得的当前运算结果存储至第二存储装置以及第一存储装置中。
具体地,运算电路12根据接收到的运算指令,执行相应的运算操作,获得当前运算结果,将当前运算结果存储至第二存储装置201中,并将第二存储装置201中的当前运算结果存储至第一存储装置13中。
S900,返回根据第一源操作数的数据大小以及预设的拆分粒度,得到目标循环次数以及数据读取容量的步骤,直至当前循环次数等于初始值或所述当前循环次数等于所述目标循环次数,完成运算指令对应的运算操作。
具体地,上述步骤可以包括:将目标循环次数递减一次或从初始值累加一次,之后,返回上述步骤S600,根据第一操作数的数据大小以及预设的拆分粒度,确定数据读取容量的步骤,直至目标循环次数递减为初始值或从初始值累加至目标循环次数。本申请实施例中,计数器的初始值可以为0。
进一步地,运算电路12执行完运算操作后,将当前运算结果存储至第一存储装置13中后,循环次数处理电路115将目标循环次数递减一次,之后继续执行步骤S600,直至目标循环次数递减为0。或者从0累加一次,之后继续执行步骤S600,直至累加到目标循环次数。
进一步地,运算电路12可以根据运算指令中的操作码Scr Op进行判断,判断出源操作数的个数,当源操作数为两个时,根据指令获取第二子数据,然后执行运算操作。当源操作数为三个时,根据指令获取第二子数据以及第三子数据,然后执行运算操作。对于第二子数据和/或第三子数据的读取,具体可参见上文中的描述。
本实施例中的指令拆解方法,通过译码阶段得到第一源操作数的数据大小,并且对第一源操作数进行拆分,循环读取,将大数据拆分成小数据进行运算处理,通过对操作数按照数据读取容量循环读取,使得运算处理时的能够容纳的数据大小满足要求,并且加快运算速度。
在其中一个实施例中,根据运算指令的指令格式,将源操作数A或源操作数B作为第二源操作数。
当根据运算指令可以确定有三个源操作数参与运算时,据运算指令的指令格式,将源操作数A作为第二源操作数,将源操作数B作为第三源操作数。
具体地,可参照表2中Src Op的格式,当接收到的运算指令中Src Op对应为010时,此时表示源操作数A有效,则将源操作数A作为第二源操作数;当接收到的运算指令中SrcOp对应为011时,此时表示源操作数B有效,则将源操作数B作为第二源操作数;当接收到的运算指令中Src Op对应为100时,此时表示源操作数A有效以及源操作数B有效,则将源操作数A作为第二源操作数,将源操作数B作为第三源操作数。
本实施例中通过指令格式中操作码Src Op的格式,选取源操作数A或源操作数B作为第二源操作数进行选择。
应该理解的是,虽然图6-12的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图6-12中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种数据处理装置,包括:获取模块100、读取模块200、运算模块300和计数模块400,其中:
获取模块100,用于获取运算指令。
读取模块200,用于根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中。
运算模块300,用于根据运算指令执行运算操作,获得当前运算结果,并将当前运算结果存储至第二存储装置以及第一存储装置中,之后,循环调用读取模块200和运算模块300,直至完成运算指令对应的运算操作。
进一步地,该数据处理装置可以包括计数模块400,用于在将第二存储装置中的当前运算结果存储于第一存储装置之后,控制计数器累加一次或递减一次,之后,循环调用读取模块200、运算模块300和计数模块400,直至计数器从初始值累加至目标循环次数或计数器从目标循环次数递减为初始值。本申请实施例中,初始值可以为0。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
当上述运算指令为Atomic MAX_SCALAR时,该运算模块300可以包括单目最大值运算模块,其中,获取模块100,用于获取运算指令,其中,运算指令用于实现源操作数的比较运算,源操作数包括至少一个子数据段,每一子数据段包括N个子数据;读取模块200,用于根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取子数据段,并将当前读取的子数据段存储至第二存储装置,其中,第一存储装置为片外存储装置,第二存储装置为片上存储装置;单目最大值运算模块312,用于根据运算指令,将子数据段中的N个子数据逐一进行比较得到N个子数据中的最大值,并将最大值作为第一比较结果存储至第二存储装置以及第一存储装置中;从第一存储装置中读取第一比较结果和另一子数据段,并将当前读取的第一比较结果和另一子数据段存储至第二存储装置;根据运算指令,将第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至第二存储装置以及第一存储装置中。之后,循环调用读取模块200和单目最大值运算模块312,直至完成运算指令对应的运算操作。进一步地,该数据处理装置可以包括计数模块400,用于在将第二存储装置中的当前运算结果存储于第一存储装置之后,控制计数器累加一次或递减一次,之后,循环调用读取模块200、单目最大值运算模块312和计数模块400,直至计数器从初始值累加至目标循环次数或计数器从目标循环次数递减为初始值。本申请实施例中,初始值可以为0。
本申请实施例中,上述运算模块的具体结构与上述实施例中运算电路的结构类似,具体可参见图2与上文中的描述。
在一个实施例中,如图14所示,提供了一种指令拆解装置,包括:获取模块500、循环次数处理模块600、数据读取容量计算模块700、读取模块800以及运算模块900,其中:
获取模块500,用于获取运算指令,根据运算指令解析出第一源操作数的数据大小。
循环次数处理模块600,用于根据第一源操作数的数据大小以及预设的拆分粒度,得到循环次数。数据读取容量计算模块700,用于根据第一源操作数的数据大小以及预设的拆分粒度,得到数据读取容量。读取模块800,用于根据运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中。运算模块900,用于根据运算指令执行运算操作,将获得的当前运算结果存储至第二存储装置以及第一存储装置中。循环次数处理模块600,用于将循环次数递减一次或从0累加一次,之后,调用数据读取容量计算模块700、读取模块800以及运算模块900,直至当前循环次数等于初始值或所述当前循环次数等于所述目标循环次数,完成运算指令对应的运算操作。
本申请实施例中,该运算模块900的工作原理与上述运算模块300及运算电路的工作原理相同,具体可参见上文中的描述。关于指令拆解装置的具体限定可以参见上文中对于指令拆解方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取运算指令,其中,该运算指令用于实现源操作数之间的运算,第一源操作数包括至少一个第一子数据。
根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中;其中,第一存储装置13片外存储装置,第二存储装置201为片上存储装置。
根据运算指令执行运算操作,将获得当前运算结果存储至第二存储装置以及第一存储装置中。
之后,返回根据数据读取容量以及运算指令,按照预设的数据读取方式,从第一存储装置中读取第一子数据的步骤,直至完成运算指令对应的运算操作。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取运算指令,根据运算指令解析出第一源操作数的数据大小,其中,第一源操作数包括至少一个第一子数据;
根据第一源操作数的数据大小以及预设的拆分粒度,得到循环次数以及数据读取容量;
根据运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取第一子数据,并将当前读取的第一子数据存储至第二存储装置中;
根据运算指令执行运算操作,将获得的当前运算结果存储至第二存储装置中,并将第二存储装置中的当前运算结果存储至第一存储装置中;
之后,则返回根据第一源操作数的数据大小以及预设的拆分粒度,确定数据读取容量的步骤,直至完成运算指令对应的运算操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (14)

1.一种数据处理方法,其特征在于,所述方法包括:
获取运算指令,其中,所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述子数据段,并将当前读取的所述子数据段存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中;
从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;
根据所述运算指令,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置以及所述第一存储装置中。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中的步骤,包括:
将所述子数据段中的第一个子数据与第二个子数据进行比较,当所述第一个子数据大于或等于所述第二个子数据时,继续将所述第一个子数据与第三个子数据进行比较,直到完成与第N个子数据的比较,得到所述N个子数据中的最大值。
3.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
每当将所述第一比较结果存储于所述第一存储装置中之后,将上一次读取的所述子数据段的结束地址的下一位地址,作为当前读取的子数据段的起始地址。
4.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
所述第一比较结果存储于所述第一存储装置中时,所述第一比较结果的存储地址与所述当前读取的子数据段的存储地址一致。
5.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
根据所述运算指令,获得所述源操作数的数据大小;
根据所述源操作数的数据大小以及预设的拆分粒度,得到所述目标循环次数。
6.根据权利要求5所述的数据处理方法,其特征在于,所述据所述运算指令,获得所述源操作数的数据大小的步骤,包括:
根据所述运算指令,获得所述源操作数的数据长度;
将所述源操作数的数据长度增加操作位,得到所述源操作数的数据大小;
其中,增加的所述操作位用于存储所述第一比较结果。
7.根据权利要求1所述的数据处理方法,其特征在于,
所述运算指令的指令格式,包括指令类别、指令类型、源操作数、目标操作数及操作码;
所述指令类别用于确定所述运算指令是否为原子操作运算指令;
所述指令类型用于确定所述运算指令的运算类型;
所述操作码用于配置源操作数的个数;
所述目标操作数用于表示当前比较结果。
8.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
控制计数器累加一次或递减一次,之后,返回根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至所述计数器从初始值累加至目标循环次数,或所述计数器从所述目标循环次数递减为初始值,完成所述运算指令对应的运算操作。
9.一种用于数据处理方法的处理器,其特征在于,所述处理器包括运算电路、读写电路以及与所述运算电路邻近设置的第二存储装置,所述第二存储装置能够通过所述读写电路与所述处理器外部的第一存储装置连接;
其中,所述运算电路用于获取运算指令,根据所述运算指令向所述第一存储装置发送读写请求;
所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
所述读写电路用于根据所述读写请求,从所述第一存储装置中读取所述子数据段,并将所述子数据段存储至所述第二存储装置;
所述运算电路用于根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从所述第一存储装置中读取所述子数据段,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置中;通过所述读写电路将所述第二存储装置的所述第一比较结果存储至所述第一存储装置中;从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置中;通过所述读写电路将所述第二存储装置的所述第二比较结果存储于所述第一存储装置中。
10.根据权利要求9所述的处理器,其特征在于,所述处理器还包括数据选择器,所述运算电路包括单目最大值运算模块,所述数据选择器连接在所述运算电路和所述读写电路之间,所述数据选择器用于选通所述单目最大值运算模块与所述读写电路的连接通路;
所述单目最大值运算模块用于根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置中;通过所述读写电路和所述数据选择器将所述第二存储装置的所述第一比较结果存储至所述第一存储装置中;从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;通过所述读写电路和所述数据选择器将所述第二存储装置的所述第二比较结果存储于所述第一存储装置中。
11.根据权利要求10所述的处理器,其特征在于,所述单目最大值运算模块包括比较单元及与所述比较单元连接的结果输出单元;
所述比较单元用于将所述子数据段中的第一个子数据与第二个子数据进行比较,当所述第一个子数据大于或等于所述第二个子数据时,继续将所述第一个子数据与第三个子数据进行比较,直到完成与第N个子数据的比较;
所述比较单元还用于将所述第一比较结果与另一所述子数据段中的第一个子数据进行比较,当所述第一比较结果大于或等于另一所述子数据段中的第一个子数据时,继续将所述第一比较结果与另一所述子数据段中的第二个子数据进行比较,直到完成与另一所述子数据段中的第N个子数据的比较;
所述结果输出单元用于将所述子数据段中N个子数据中的最大值作为所述第一比较结果;
所述结果输出单元还用于将所述第一比较结果与另一所述子数据段中的N个子数据中的最大值作为所述第二比较结果。
12.根据权利要求9-11中任一项所述的处理器,其特征在于,所述运算电路包括主处理电路和一个以上的从处理电路,一个以上的所述从处理电路均连接至所述主处理电路;
所述单目最大值运算模块置于所述主处理电路中。
13.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取运算指令,其中,所述运算指令用于实现源操作数的比较运算,所述源操作数包括至少一个子数据段,每一所述子数据段包括N个子数据;
读取模块,用于根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述子数据段,并将当前读取的所述子数据段存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
运算模块,用于根据所述运算指令,将所述子数据段中的N个子数据逐一进行比较得到所述N个子数据中的最大值,并将所述最大值作为第一比较结果存储至所述第二存储装置以及所述第一存储装置中;从所述第一存储装置中读取所述第一比较结果和另一所述子数据段,并将当前读取的所述第一比较结果和另一所述子数据段存储至第二存储装置;根据所述运算指令,将所述第一比较结果与另一所述子数据段中的N个子数据逐一进行比较,将比较得到的最大值作为第二比较结果存储至所述第二存储装置以及所述第一存储装置中。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
CN201811459677.6A 2018-11-30 2018-11-30 数据处理方法、处理器、数据处理装置及存储介质 Active CN111258770B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811459677.6A CN111258770B (zh) 2018-11-30 2018-11-30 数据处理方法、处理器、数据处理装置及存储介质
PCT/CN2019/121064 WO2020108496A1 (zh) 2018-11-30 2019-11-26 原子操作中的数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811459677.6A CN111258770B (zh) 2018-11-30 2018-11-30 数据处理方法、处理器、数据处理装置及存储介质

Publications (2)

Publication Number Publication Date
CN111258770A true CN111258770A (zh) 2020-06-09
CN111258770B CN111258770B (zh) 2023-10-10

Family

ID=70948421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811459677.6A Active CN111258770B (zh) 2018-11-30 2018-11-30 数据处理方法、处理器、数据处理装置及存储介质

Country Status (1)

Country Link
CN (1) CN111258770B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179689A (en) * 1987-03-13 1993-01-12 Texas Instruments Incorporated Dataprocessing device with instruction cache
US20050125624A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory
CN101685388A (zh) * 2008-09-28 2010-03-31 北京大学深圳研究生院 执行比较运算的方法和模块
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统
CN103309893A (zh) * 2012-03-15 2013-09-18 阿里巴巴集团控股有限公司 一种字符串的比较方法及装置
CN105022961A (zh) * 2015-06-29 2015-11-04 北京深思数盾科技有限公司 一种计算机数据的保护方法及装置
CN105453021A (zh) * 2013-08-01 2016-03-30 经度企业快闪公司 用于原子存储操作的系统和方法
US20180011707A1 (en) * 2016-07-07 2018-01-11 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
CN107688853A (zh) * 2016-08-05 2018-02-13 北京中科寒武纪科技有限公司 一种用于执行神经网络运算的装置及方法
CN107977232A (zh) * 2017-10-24 2018-05-01 上海华为技术有限公司 一种数据处理方法、数据处理电路和网络设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179689A (en) * 1987-03-13 1993-01-12 Texas Instruments Incorporated Dataprocessing device with instruction cache
US20050125624A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory
CN101685388A (zh) * 2008-09-28 2010-03-31 北京大学深圳研究生院 执行比较运算的方法和模块
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统
CN103309893A (zh) * 2012-03-15 2013-09-18 阿里巴巴集团控股有限公司 一种字符串的比较方法及装置
CN105453021A (zh) * 2013-08-01 2016-03-30 经度企业快闪公司 用于原子存储操作的系统和方法
CN105022961A (zh) * 2015-06-29 2015-11-04 北京深思数盾科技有限公司 一种计算机数据的保护方法及装置
US20180011707A1 (en) * 2016-07-07 2018-01-11 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
CN107688853A (zh) * 2016-08-05 2018-02-13 北京中科寒武纪科技有限公司 一种用于执行神经网络运算的装置及方法
CN107977232A (zh) * 2017-10-24 2018-05-01 上海华为技术有限公司 一种数据处理方法、数据处理电路和网络设备

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
K. GEETHA: "Compressed Instruction Set Coding (CISC) for Performance Optimization of Hand Held Devices", 《2008 16TH INTERNATIONAL CONFERENCE ON ADVANCED COMPUTING AND COMMUNICATIONS》 *
K. GEETHA: "Compressed Instruction Set Coding (CISC) for Performance Optimization of Hand Held Devices", 《2008 16TH INTERNATIONAL CONFERENCE ON ADVANCED COMPUTING AND COMMUNICATIONS》, 23 January 2009 (2009-01-23) *
余玲;李克俭;: "基于FPGA的PLC并行逻辑运算器的设计", 大众科技, no. 09 *
朱成博: "微处理器流水线前端的设计与验证", 《第十五届计算机工程与工艺年会暨第一届微处理器技术论坛论文集(A辑)》 *
朱成博: "微处理器流水线前端的设计与验证", 《第十五届计算机工程与工艺年会暨第一届微处理器技术论坛论文集(A辑)》, 12 August 2011 (2011-08-12) *

Also Published As

Publication number Publication date
CN111258770B (zh) 2023-10-10

Similar Documents

Publication Publication Date Title
TWI708186B (zh) 用於多微磚處理陣列之同步化之計算機與方法
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
US9239735B2 (en) Compiler-control method for load speculation in a statically scheduled microprocessor
TWI713913B (zh) 電腦可讀儲存媒體、處理單元及計算機
US20140215189A1 (en) Data processing apparatus and method for controlling use of an issue queue
EP3213219A1 (en) Multicore bus architecture with non-blocking high performance transaction credit system
CN105393240A (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
US8332622B2 (en) Branching to target address by adding value selected from programmable offset table to base address specified in branch instruction
KR101812912B1 (ko) 자율 메모리를 위한 방법 및 시스템
KR20180137521A (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
TWI740851B (zh) 用於向量負載指示之資料處理設備、方法及電腦程式
CN111258644B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258646A (zh) 指令拆解方法、处理器、指令拆解装置及存储介质
CN111258635B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258643B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258642B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258637B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258636B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258639B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258638B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258652B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258645B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258647B (zh) 数据处理方法、处理器、数据处理装置及存储介质
CN111258770A (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
GR01 Patent grant
GR01 Patent grant