一种数据处理方法和装置与流程

文档序号:18028105发布日期:2019-06-28 22:21阅读:161来源:国知局
一种数据处理方法和装置与流程

本发明涉及微处理器技术领域,具体涉及一种数据处理方法和装置。



背景技术:

随着半导体制造工艺及密集型计算的发展,各种应用程序极度复杂化,微处理器的计算能力也与日俱增,最为突出的表现就是定/浮点数据向量(数据并行执行)运算能力的增强。当前定/浮点计算类型主要分为单精度、双精度、四精度数据运算,涵盖了32/64/128位等多种数据。微处理器要支持上述计算类型就需要在其内部添加并配置相应的计算硬件单元,如加法器、乘法器、除法器等,在最大计算位宽为128位的微处理器中,如果执行多种数据类型的操作,就会导致在计算32/64位定/浮点数据时,每个执行时钟周期都会闲置70%或50%的计算资源。

针对上述存在问题,最简单方法就是直接闲置已有硬件资源,这样显然效率不高,浪费硬件资源,显然在高性能的微处理器设计中是不可取的。



技术实现要素:

有鉴于此,本发明实施例提供了一种数据处理方法和装置,以解决高性能的微处理器在计算32/64位定/浮点数据时,每个执行时钟周期都会闲置70%或50%的计算资源的问题。

根据第一方面,本发明实施例提供了一种数据处理方法,包括:获取控制信号和待处理第一数据;根据控制信号对第一数据进行置换运算得到第二数据;根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据,第二数据的位宽大于第三数据的位宽。

可选地,置换运算包括数据饱和运算、数据扩展运算、数据合并运算、位置换运算中的至少之一。

可选地,根据控制信号对第一数据进行置换运算得到第二数据包括:根据控制信号对第一数据的高位进行饱和运算;判断运算结果是否在预设范围内;如果运算结果在预设范围内,则选择第一数据的有效数据进行输出得到第二数据。

可选地,如果运算结果不在预设范围内,则选择预设数据进行输出得到第二数据。

可选地,根据控制信号对第一数据进行置换运算得到第二数据包括:判断控制信号中是否存在携带有数据的指令;当控制信号中存在携带有数据的指令时,对携带有数据的指令的符号位进行扩展,得到第一预设位宽的数据;对第一数据的低位数据的符号位进行扩展,得到第二预设位宽的数据;将第一预设位宽的数据作为高位数据并将第二预设位宽的数据作为低位数据组成第二数据。

可选地,根据控制信号对第一数据进行置换运算得到第二数据还包括:当控制信号中不存在携带有数据的指令时,对第一数据的高位数据的符号位进行扩展,得到第三预设位宽的数据;将第三预设位宽的数据作为高位数据并将第二预设位宽的数据作为低位数据组成第二数据。

可选地,根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据包括:将第二数据以字节为单位进行划分;根据控制信号对划分字节后的第二数据按照交叉开关矩阵进行选择输出,得到预设位宽的第三数据。

根据第二方面,本发明实施例提供了一种数据处理装置,包括:获取模块,用于获取控制信号和待处理第一数据;置换运算模块,用于根据控制信号对第一数据进行置换得到第二数据;交错运算模块,用于根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据,第二数据的位宽大于第三数据的位宽。

根据第三方面,本发明实施例提供了一种控制器,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行第一方面或者第一方面的任意实施例方式中的数据处理方法。

根据第四方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行第一方面或者第一方面任意实施方式中的数据处理方法。

本发明实施例提供了一种数据处理方法和装置,可以灵活组合32位、64位和128位的源数据,并对32位、64位和128位的源数据进行数据置换运算,例如,对32/64/128位定/浮点数据格式进行压缩、解压缩、合并、复制、置换、移位、选择等多种向量运算,使32位、64位和128位的源数据经过数据置换后,成为与微处理器相同位宽的数据,可以完成定/浮点数据预处理的前置计算,从而使微处理在计算32/64/128位定/浮点数据等多种数据类型时,每个时钟的计算资源都不浪费,从而提高微处理器浮点运算的硬件使用效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例数据处理方法的流程图;

图2示出了本发明实施例数据饱和运算、数据扩展运算、数据合并运算基本电路结构图;

图3示出了本发明实施例位置换运算单元基本结构图;

图4示出了本发明实施例数据交错单元基本结构图;

图5示出了本发明实施例数据交错选择器基本结构图;

图6示出了本发明实施例无符号到无符号的饱和运算模式结构图;

图7示出了本发明实施例有符号到无符号的饱和运算模式结构图;

图8示出了本发明实施例有符号到有符号的饱和运算模式结构图;

图9示出了本发明实施例数据扩展运算基本结构图;

图10示出了本发明实施例数据处理装置的结构框图;

图11示出了本发明实施例控制器结构示意图。

具体实施方式

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

本发明实施例提供了一种数据处理方法,如图1所示,包括:

s101.获取控制信号和待处理第一数据。

在本实施例中,待处理第一数据为源数据,可以是任意32/64/128位的数据的组合,控制信号为信号控制单元根据外部输入的选择控制信号和待处理第一数据中的立即数对各个功能编码及相应的逻辑组合进行译码实时产生各个功能对应的控制信号。选择控制信号与待处理数据是一一对应的,控制信号与待处理数据也是一一对应的,选择控制信号的种类可以包括n组,可以表示为s0、s1、……、sn-2、sn-1。立即数为携带有数据的指令。具体的,待处理第一数据可以为多组32/64/128位数据,可以是多组128位的数据,可以是多组32/64位数据,也可以是由32/64位数据组合而成的128位数据。

s102.根据控制信号对第一数据进行置换运算得到第二数据。

在本实施例中,置换运算包括数据饱和运算(saturate)、数据扩展运算(extend)、数据合并运算、位置换运算中的至少之一。

具体的,数据饱和运算、数据扩展运算、数据合并运算涵盖功能见表1。

表1

数据饱和运算、数据扩展运算、数据合并运算基本电路结构如图2所示。例如,控制信号可以控制第一数据中的数据a(也即vr[vra])和数据b(也即vr[vrb]分别经过数据饱和运算后可以分别得到一个128位的数据(也即dataf_out[0:127]),或控制信号可以控制第一数据中的数据b(也即vr[vrb])和立即数(也即sim[0:4])经过数据扩展后得到一个256位的数据(也即dataf_out[0:255]或ex_out[0:255]),或控制信号可以控制第一数据中的数据a和数据b不进行数据饱和运算和扩展运算,而是直接进行合并运算,得到一个256位的数据(也即dataf_out[0:255])。

位置换运算单元主要用于实现第一数据位的置换运算,因其主要以bit为基本单位进行操作,且涉及到的各类位置换运算无法进行电路复用,因此该电路单元中的数据通路相互独立,其单元的基本结构如图3所示。具体的,位置换运算单元内部主要划分为6个功能电路模块,涵盖了9类位置换操作,包括:按位与、按位或、按位异或、取反、左移、右移。位置换运算单元在控制信号单元(也即signalcontrol模块)控制下,可以对第一数据中的数据进行位置换运算,最终将计算结果(例如,bit_out[0:127])通过一个多路选择器(也即mux6_1模块)输出。

s103.根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据,第二数据的位宽大于第三数据的位宽。

在本实施例中,数据交错单元以字节为基本单位进行数据交错运算。控制根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据可以包括:将第二数据以字节为单位进行划分;根据控制信号对划分字节后的第二数据按照交叉开关矩阵进行选择输出,得到预设位宽的第三数据。例如,数据交错单元输入数据接口可以设置为256位,输出数据接口可以设置为128位,该单元内部由16个相同微结构电路的数据全互联的数据交错选择器(也称为crossbar_mux)并联组成,数据交错单元基本结构如图4所示。数据全互联的数据交错选择器选择数据是按照交叉开关矩阵的模式进行选择的,数据交错选择器(crossbar_mux)基本结构如图5所示。具体的,在16个相同的数据交错选择器中,每个数据交错选择器的控制信号均由5位字节选择信号(也即sel)、两个4位字节控制字(也即byte[i].bit[0:3]和byte[i].bit[4:7])组成。当控制信号为5位字节选择信号时,5位的sel在dataf_out中的32个byte选出一个作为输出。当控制信号为两个4位字节控制字时,两个4位字节控制字与图5中的异或门电路使字节进行置换异或运算,且从dataf_out中的高16byte和低16byte各选一个byte进行异或运算后输出计算结果,经过16个相同的数据交错选择器选择后,输出一个128位的数据。在本实施例中,根据其他计算的需求,数据交错单元输入数据接口也可以设置为其他位宽,例如64位,128位,512位等;输出数据接口也可以设置为其他位宽,例如64位,256位等;相应的,数据交错选择器的个数也可以设置为其他数。

本发明实施例提供了一种数据处理方法,可以灵活组合32位、64位和128位的源数据,并对32位、64位和128位的源数据进行数据置换运算,例如,对32/64/128位定/浮点数据格式进行压缩、解压缩、合并、复制、置换、移位、选择等多种向量运算,使32位、64位和128位的源数据经过数据置换后,成为与微处理器相同位宽的数据,可以完成定/浮点数据预处理的前置计算单元,从而使微处理在计算32/64/128位定/浮点数据等多种数据类型时,每个时钟的计算资源都不浪费,从而提高微处理器浮点运算的硬件使用效率。

在可选的实施例中,根据控制信号对第一数据进行置换运算得到第二数据包括:根据控制信号对第一数据的高位进行饱和运算;判断运算结果是否在预设范围内;如果运算结果在预设范围内,则选择第一数据的有效数据进行输出得到第二数据。如果运算结果不在预设范围内,则选择预设数据进行输出得到第二数据。在本实施例中,数据饱和运算主要包括3类运算模式,为无符号-无符号(uu)模式、有符号-无符号(su)模式和有符号-有符号(ss)模式。

具体的,无符号-无符号(uu)模式,即为无符号到无符号的饱和运算模式,如图6所示,根据控制信号分别对半字、字、双字的高位数据进行饱和运算,例如,对每个半字的高8位进行饱和运算,得到一个计算结果,如果计算结果在0~28-1之间,则输出每个半字的低8位数据作为第二数据,否则,输出预设的8位数据作为第二数据,预设的8位数据为上限值或下限值。

有符号-无符号(su)模式,即有符号到无符号的饱和运算模式,如图7所示,根据控制信号分别对半字、字、双字的高位数据进行饱和运算,例如,对每个半字进行判断,如果符号位等于1,则输出结果8’h00,如果符号位等于0,再判断每个半字的高位数据是否等于7’h7f,如果等于7’h7f,则输出8’hff,如果不等于7’h7f,则输出8’hff。

有符号-有符号(ss)模式,即有符号到有符号的饱和运算模式,如图8所示,根据控制信号分别对半字、字、双字的高位数据进行饱和运算,例如,对每个半字进行判断,如果符号位等于0,再判断每个半字的高位数据(vr[8:15])是否等于8’h00,如果等于8’h00,则输出{vr[0],vr[8:15]}(vr的0bit与8-15bit拼接成一个byte);如果不等于8’h00,则输出{vr[0],7’h7f};如果符号位等于1,再判断每个半字的高位数据(vr[8:15])是否等于8’hff,如果等于8’hff,则输出{vr[0],vr[8:15]}(vr的0bit与8-15bit拼接成一个byte),如果不等于8’hff,则输出{vr[0],7’h00}。

在可选的实施例中,如图9所示,根据控制信号对第一数据进行置换运算得到第二数据包括:判断控制信号中是否存在携带有数据的指令,在本实施例中,立即数即为携带有数据的指令;当控制信号中存在携带有数据的指令时,对携带有数据的指令的符号位进行扩展,得到第一预设位宽的数据,在本实施例中,对携带有数据的指令的符号位进行扩展的模块为sim[0:4]与sign-extended[0:31]模块,可以分别对字节模式取16组[24:31]数据模块、半字模式取8组[16:31]数据模块、字模式取4组[0:31]数据模块,输出得到一个128位的数据,例如ex_out[0:127];对第一数据的低位数据的符号位进行扩展,例如将vrb[64:127]进行b_s_ex、h_s_ex或w_s_ex扩展,得到第二预设位宽的数据,例如ex_out[128:255],其中b_s_ex模块用于将字节符号位扩展为半字*8(总计8组半字并行运算输出);h_s_ex模块用于将半字符号位扩展为字*4(总计4组字并行运算输出);w_s_ex模块用于将字符号位扩展为双字*2(总计2组双字并行运算输出);将第一预设位宽的数据作为高位数据并将第二预设位宽的数据作为低位数据组成第二数据,例如ex_out[0:255]。当控制信号中不存在携带有数据的指令时,对第一数据的高位数据的符号位进行扩展,得到第三预设位宽的数据,例如将vrb[0:63]进行b_s_ex、h_s_ex或w_s_ex扩展后,得到一个128位的数据ex_out[0:127];将第三预设位宽的数据作为高位数据并将第二预设位宽的数据作为低位数据组成第二数据。

本发明实施例提供了一种数据处理装置,如图10所示,包括:获取模块10,用于获取控制信号和待处理第一数据;置换运算模块20,用于根据控制信号对第一数据进行置换得到第二数据;交错运算模块30,用于根据控制信号对第二数据进行数据交错运算得到预设位宽的第三数据,第二数据的位宽大于第三数据的位宽。

本发明实施例提供的一种数据处理装置,既可以作为加速硬核内嵌在各类计算单元中,也可以指令集形式集成在微处理器中。当该装置作为指令集形式集成在微处理器中,可以处理不同位宽数据的任意排列和重组的向量存/取操作指令,从而提升微处理器内部寄存器其他指令执行的效率;当该装置作为定/浮点数据预处理的前置计算单元,可以使微处理在计算32/64/128位定/浮点数据等多种数据类型时,每个时钟的计算资源都不浪费,从而提高微处理器浮点运算的硬件使用效率。

本发明实施例提供了一种控制器,包括:至少一个处理器71;以及与至少一个处理器通信连接的存储器72;图11中以一个处理器71为例。

检测设备还可以包括:输入装置73和输出装置74。

处理器71、存储器72、输入装置73和输出装置74可以通过总线或者其他方式连接,图11中以通过总线连接为例。

处理器71可以为中央处理器(centralprocessingunit,cpu)。处理器71还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器72作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的数据处理方法对应的程序指令/模块。处理器71通过运行存储在存储器72中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例数据处理方法。

存储器72可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据用户终端操作的处理装置的使用所创建的数据等。此外,存储器72可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器72可选包括相对于处理器71远程设置的存储器,这些远程存储器可以通过网络连接至图像检测、处理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置73可接收输入的数字或字符信息,以及产生与用户终端的处理装置的用户设置以及功能控制有关的键信号输入。输出装置74可包括显示屏等显示设备。

一个或者多个模块存储在存储器72中,当被一个或者多个处理器71执行时,执行如图1所示的方法。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1