数据处理方法、处理器、数据处理装置及存储介质制造方法及图纸

技术编号:24454756 阅读:27 留言:0更新日期:2020-06-10 15:13
本申请涉及一种数据处理方法、处理器、数据处理装置及存储介质,所述方法包括:获取运算指令,根据运算指令,从第一存储装置中读取第一子数据,将当前读取的第一子数据存储至第二存储装置中,根据运算指令获取第二子数据,将当前读取的第一子数据与第二子数据进行逻辑与运算,获得当前运算结果,将当前运算结果存储于第一存储装置中,返回继续从第一存储装置中读取第一子数据,直至完成该运算指令对应的运算操作。通过循环读取数据进行运算,将每次循环的运算结果不断地存储到第一存储装置中,对该第一存储装置实现独占访问,避免其它的处理器核访问该第一存储装置,保证了原子操作的原子性。

Data processing method, processor, data processing device and storage medium

【技术实现步骤摘要】
数据处理方法、处理器、数据处理装置及存储介质
本申请涉及数据处理
,特别是涉及一种数据处理方法、处理器、数据处理装置及存储介质。
技术介绍
原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换(例如共享变量i执行累加,非原子操作情况下多个核同时i++的结果会出错)。在多核处理器系统当中,多个处理器核共享同一块存储空间,通常的数据传输技术可能无法保证原子性,即同一时间可能有多个处理器核访问同一地址。在实际程序当中,运算结果存储在一个存储空间内,该存储空间具有一定的地址范围,由于该存储空间可能在运算完成之前被其他处理器核访问,传统的做法是先将该存储空间的数据读到存储单元,然后将运算结果存在该存储单元,指令运算结束之后将该存储单元的结果写回到该存储空间。然而,如果运算期间有其它的处理器核访问该存储空间,就会得到一个错误的结果,破坏这次累加的原子性。
技术实现思路
基于此,有必要针对上述技术问题,提供一种能够实现原子操作期间单独访问片外存储空间的数据处理方法、处理器、数据处理装置及存储介质。一种数据处理方法,所述方法包括:获取运算指令,其中,所述运算指令用于实现第一源操作数以及第二源操作数之间的逻辑与运算,所述第一源操作数包括第一子数据,所述第二源操作数包括第二子数据;根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据,并将当前读取的所述第一子数据存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;根据所述运算指令获取所述第二子数据,将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,将获得的当前运算结果存储至所述第二存储装置以及所述第一存储装置中;返回根据所述运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至完成所述运算指令对应的运算操作。在其中一个实施例中,将当前读取的所述第一子数据与所述第二子数据进行对位逻辑与运算;将每一位所述第一子数据与所述第二子数据进行逻辑与运算的结果作为所述当前运算结果。在其中一个实施例中,所述第二源操作数为立即数或所述第二存储装置中存储的数据,所述方法还包括:若所述第二源操作数为立即数,则复制所述立即数,复制获得的多个所述立即数作为所述第二子数据,所述第二子数据的数量与当前读取的所述第一子数据的数量相等;若所述第二源操作数为所述第二存储装置中存储的数据,则从所述第二存储装置的预设存储地址中读取所述第二子数据,当前读取的所述第二子数据的数量与所述第一子数据的数量相等。在其中一个实施例中,根据所述运算指令,将所述源操作数A或所述源操作数B作为所述第二源操作数。在其中一个实施例中,每当将所述当前运算结果存储于所述第一存储装置中之后,将上一次读取的所述第一子数据的结束地址的下一位地址,作为当前读取的第一子数据的起始地址。在其中一个实施例中,所述当前运算结果存储于所述第一存储装置中时,所述当前运算结果的存储地址与所述当前读取的第一子数据的存储地址一致。在其中一个实施例中,控制计数器累加一次或递减一次,之后,返回根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至所述计数器从初始值累加至所述目标循环次数,或所述计数器从所述目标循环次数递减为初始值,完成所述运算指令对应的运算操作。在其中一个实施例中,根据所述运算指令,获得所述第一源操作数的数据大小;根据所述第一源操作数的数据大小以及预设的拆分粒度,得到所述目标循环次数。在其中一个实施例中,所述运算指令的指令格式,包括指令类别、指令类型、第一源操作数、第二源操作数、目标操作数及操作码;所述指令类别用于确定所述运算指令是否为原子操作运算指令;所述指令类型用于确定所述运算指令的运算类型;所述操作码用于配置源操作数的个数;所述第一源操作数和所述第二源操作数分别用于表示参与运算的数据;所述目标操作数用于表示所述当前运算结果。一种处理器,所述处理器包括运算电路、读写电路以及与所述运算电路邻近设置的第二存储装置,所述第二存储装置能够通过所述读写电路与所述处理器外部的第一存储装置连接;其中,所述运算电路用于获取运算指令,根据所述运算指令向所述第一存储装置发送读写请求;所述运算指令用于实现第一源操作数和第二源操作数之间的逻辑与运算,所述第一源操作数包括第一子数据,所述第二源操作数包括第二子数据;所述读写电路用于根据所述读写请求,按照预设的数据读取方式,从所述第一存储装置中读取第一子数据,并将所述第一子数据存储至所述第二存储装置;所述运算电路用于获取所述第二子数据,并根据所述运算指令将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,将获得的当前运算结果存储至所述第二存储装置以及所述第一存储装置中;之后,再次向所述第一存储装置发送读写请求,直至完成所述运算指令对应的运算操作。在其中一个实施例中,所述处理器还包括数据选择器,所述运算电路包括逻辑与运算模块,所述数据选择器连接在所述运算电路和所述读写电路之间,所述数据选择器用于选通所述逻辑与运算模块与所述读写电路的连接通路;所述逻辑与运算模块用于获取所述第二子数据,并根据所述运算指令将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,将获得的当前运算结果存储至所述第二存储装置以及所述第一存储装置中。在其中一个实施例中,所述逻辑与运算模块包括运算单元及与所述运算单元连接的结果输出单元;所述运算单元用于将所述当前读取的第一子数据与所述第二子数据进行对位逻辑与运算;所述结果输出单元用于将每一位所述第一子数据与所述第二子数据进行逻辑与运算的结果作为当前运算结果。在其中一个实施例中,所述逻辑与运算模块还用于根据所述运算指令,确定所述第二源操作数为立即数或所述第二存储装置中存储的数据,若确定所述第二源操作数为立即数,则所述逻辑与运算模块复制所述立即数,复制获得的多个所述立即数作为所述第二子数据,所述第二子数据的数量与当前读取的所述第一子数据的数量相等;若确定所述第二源操作数为所述第二存储装置中存储的数据,则所述读写电路从所述第二存储装置的预设存储地址中读取所述第二子数据,当前读取的所述第二子数据的数量与所述第一子数据的数量相等。在其中一个实施例中,所述运算电路包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;所述逻辑与运算模块置于所述主处理电路中。一种数据处理装置,所述装置包括:获取模块,用于获取运算指令,其中,所述运算指令用于实现第一源操作数以及第二源操作数之间的逻辑与运算,所述第一源操作数包括第一子数据,所述第二源操作数包括第二子数据;读取模块,用于根本文档来自技高网...

【技术保护点】
1.一种数据处理方法,其特征在于,所述方法包括:/n获取运算指令,其中,所述运算指令用于实现第一源操作数以及第二源操作数之间的逻辑与运算,所述第一源操作数包括第一子数据,所述第二源操作数包括第二子数据;/n根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据,并将当前读取的所述第一子数据存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;/n根据所述运算指令获取所述第二子数据,将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,将获得的当前运算结果存储至所述第二存储装置以及所述第一存储装置中;/n返回根据所述运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至完成所述运算指令对应的运算操作。/n

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:
获取运算指令,其中,所述运算指令用于实现第一源操作数以及第二源操作数之间的逻辑与运算,所述第一源操作数包括第一子数据,所述第二源操作数包括第二子数据;
根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据,并将当前读取的所述第一子数据存储至第二存储装置,其中,所述第一存储装置为片外存储装置,所述第二存储装置为片上存储装置;
根据所述运算指令获取所述第二子数据,将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,将获得的当前运算结果存储至所述第二存储装置以及所述第一存储装置中;
返回根据所述运算指令以及数据读取容量,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至完成所述运算指令对应的运算操作。


2.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述运算指令获取所述第二子数据,将所述当前读取的第一子数据与所述第二子数据进行逻辑与运算,获得当前运算结果的步骤,包括:
将当前读取的所述第一子数据与所述第二子数据进行对位逻辑与运算;
将每一位所述第一子数据与所述第二子数据进行逻辑与运算的结果作为所述当前运算结果。


3.根据权利要求1或2所述的运算方法,其特征在于,所述第二源操作数为立即数或所述第二存储装置中存储的数据,所述方法还包括:
若所述第二源操作数为立即数,则复制所述立即数,复制获得的多个所述立即数作为所述第二子数据,所述第二子数据的数量与当前读取的所述第一子数据的数量相等;
若所述第二源操作数为所述第二存储装置中存储的数据,则从所述第二存储装置的预设存储地址中读取所述第二子数据,当前读取的所述第二子数据的数量与所述第一子数据的数量相等。


4.根据权利要求3所述的数据处理方法,其特征在于,所述方法还包括如下步骤:
根据所述运算指令,将所述源操作数A或所述源操作数B作为所述第二源操作数。


5.根据权利要求1所述的数据处理方法,其特征在于,所述按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,包括:
每当将所述当前运算结果存储于所述第一存储装置中之后,将上一次读取的所述第一子数据的结束地址的下一位地址,作为当前读取的第一子数据的起始地址。


6.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
所述当前运算结果存储于所述第一存储装置中时,所述当前运算结果的存储地址与所述当前读取的第一子数据的存储地址一致。


7.根据权利要求1所述的数据处理方法,其特征在于,每当将所述当前运算结果存储于所述第一存储装置中之后,所述方法还包括如下步骤:
控制计数器累加一次或递减一次,之后,返回根据数据读取容量以及所述运算指令,按照预设的数据读取方式,从第一存储装置中读取所述第一子数据的步骤,直至所述计数器从初始值累加至所述目标循环次数,或所述计数器从所述目标循环次数递减为初始值,完成所述运算指令对应的运算操作。


8.根据权利要求7所述的数据处理方法,其特征在于,所述方法还包括:
根据所述运算指令,获得所述第一源操作数的数据大小;
根据所述第一源操作数的数据大小以及预设的拆分粒度,得到所述目标循环次数。


9.根据权利要求1所述的数据处理方法,其特征在于,
所述运算指令的指令格式,包括指令类别、指令类型、第一源操作数、第二源操作数、目标操作数及操作码;
所述指令类别用于确定所述运算指令是否为原子操作运算指令;
所述指令类型用于确定所述运算指令的运算类型;
所述操作码用于配置源操作数的个数;
所述第一源操作数和所述第二源操作数分别用于表示参与运算的数据;

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1