CN114579083A - 一种基于矢量处理器的数据处理装置和方法 - Google Patents
一种基于矢量处理器的数据处理装置和方法 Download PDFInfo
- Publication number
- CN114579083A CN114579083A CN202210496254.1A CN202210496254A CN114579083A CN 114579083 A CN114579083 A CN 114579083A CN 202210496254 A CN202210496254 A CN 202210496254A CN 114579083 A CN114579083 A CN 114579083A
- Authority
- CN
- China
- Prior art keywords
- vector
- data
- unit
- length
- recovery
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于矢量处理器的数据处理装置及方法,包括矢量读入单元、矢量处理器、矢量写出单元、尾部处理单元和内部数据存储单元;尾部处理单元,用于获取内部数据存储单元中的恢复数据,并启动矢量读入单元读入恢复数据至矢量处理器的寄存器中,并当矢量实际输出数据存储至内部数据存储单元中对应的位置后,启动矢量写出单元将恢复数据写入到内部数据存储单元中对应的位置。可见,通过尾部处理单元的使用,在矢量写出单元写出输出数据之前,先保存可能被错误覆盖的数据,再在矢量写出单元写出输出数据之后,恢复被错误覆盖的数据,不需要条件判断模块,大大提升了矢量处理器的数据处理能力。
Description
技术领域
本发明涉及矢量数据处理领域,特别是涉及一种基于矢量处理器的数据处理装置和方法。
背景技术
当前随着科学技术的发展,各种高科技领域的应用场景层出不穷,由此推动硬件运算能力的不断提高。特别是在数字信号处理领域,由于大数据量需要及时快速地处理,相较于处理速度较慢的标量处理器,应运而生的矢量处理器正在越来越多的应用场合发挥着巨大的作用。
所谓矢量处理器就是一种成组数据处理技术,即在单位时间周期内能够处理比标量处理器多得多的数据。例如一般的标量处理器在一个指令周期内只能计算一到两个乘累加运算,而矢量处理器却可以计算16或32或64个乘累加运算,这个具体数值与矢量处理器的硬件性能相关。这种硬件运算能力的大幅度提高,使得一些需要快速计算的应用场景如人工智能AI、5G无线通信以及图像处理领域都能得到高速发展。然而,矢量处理器的大规模应用,也带来了一些难以解决的负面问题。其中,最主要的一个问题是目前矢量处理器在一个指令周期内处理的数据长度是固定不变的,它虽然可以选配在一定范围内的某个确定值,但不能是变量值。而我们需要处理的数据长度总是个变量,它是个不确定的值,在使用它之前,我们一般是不知道这个具体的数据长度数值。一般来说,我们在选配矢量处理器的硬件处理能力时,先要弄清楚需要处理的数据长度大体范围,然后选配矢量处理器的运算能力总是大于或等于需要处理数据长度的运算负荷。如果想要更精确地求出这个运算负荷,减少矢量处理器的运算能力冗余,就需要增加条件判断模块来查清楚这个运算负荷,然后再根据具体的运算负荷,选配相对应的矢量处理器硬件运算能力。但是这个条件判断模块不但增加了硬件成本,也由于判断时间较长,导致硬件运算流水线被打断,严重延缓了整个数据处理的时间,这样就大大减弱了矢量处理器的快速运算能力。
发明内容
本发明的目的是提供一种基于矢量处理器的数据处理装置和方法,通过设置尾部处理单元,能够恢复内部数据存储单元中被矢量输出数据覆盖的数据,舍弃了现有的条件判断模块,大大提升了矢量处理器的快速运算能力,提高了矢量处理器处理数据的效率。
为实现上述目的,本发明提供了如下方案:
一种基于矢量处理器的数据处理装置,包括矢量读入单元、矢量处理器、矢量写出单元、尾部处理单元和内部数据存储单元;
所述矢量读入单元的输入端连接所述内部数据存储单元,所述矢量读入单元的输出端连接所述矢量处理器;所述矢量写出单元的输入端连接所述矢量处理器,所述矢量写出单元的输出端连接所述内部数据存储单元;所述尾部处理单元分别与所述矢量读入单元和所述矢量写出单元连接;
所述内部数据存储单元,用于存放参与矢量运算的矢量输入数据和矢量运算后的矢量实际输出数据;
所述矢量处理器,用于对所述矢量读入单元读入的所述矢量输入数据进行矢量运算;
所述尾部处理单元,用于获取所述内部数据存储单元中的恢复数据,并启动所述矢量读入单元读入所述恢复数据至所述矢量处理器的寄存器中,并当所述矢量实际输出数据存储至所述内部数据存储单元中对应的位置后,启动所述矢量写出单元将所述恢复数据写入到所述内部数据存储单元中对应的位置;所述恢复数据为在所述内部数据存储单元中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据。
可选的,所述矢量处理器的寄存器包括第一寄存器、第二寄存器和第三寄存器;
所述第一寄存器,与所述矢量读入单元连接,用于存储所述矢量读入单元读入的所述矢量输入数据;
所述第二寄存器,与所述矢量写出单元连接,用于存储矢量运算后的所述矢量输出数据;
所述第三寄存器,分别与所述矢量读入单元和所述矢量写出单元连接,用于存储所述矢量读入单元读入的恢复数据。
可选的,所述尾部处理单元包括恢复数据地址和长度获取子单元和恢复数据获取子单元;
所述恢复数据地址和长度获取子单元,用于计算所述恢复数据在所述内部数据存储单元中的起始地址和长度;
所述恢复数据获取子单元,用于根据恢复数据的起始地址和长度获取所述恢复数据。
可选的,所述恢复数据地址和长度获取子单元,用于计算所述恢复数据在所述内部数据存储单元中的起始地址和长度具体包括:
获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
可选的,所述恢复数据的长度等于所述矢量实际输出数据的长度与所述矢量理论输出数据的长度之差。
一种基于矢量处理器的数据处理方法,包括:
利用矢量读入单元读入矢量输入数据至矢量处理器的寄存器中;
利用矢量处理器对所述矢量输入数据进行矢量运算,得到矢量实际输出数据;
利用尾部处理单元获取恢复数据;所述恢复数据为在内部数据存储单元中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据;
利用所述尾部处理单元启动所述矢量读入单元读入所述恢复数据至所述矢量处理器的寄存器中;
利用所述尾部处理单元启动矢量写出单元将所述矢量实际输出数据写出到所述内部数据存储单元对应的位置;
利用所述矢量写出单元将所述恢复数据写出到所述内部数据存储单元对应的位置。
可选的,所述利用尾部处理单元获取恢复数据具体包括:
利用所述尾部处理单元计算所述恢复数据在内部数据存储单元中的起始地址和长度;
根据恢复数据的起始地址和长度获取所述恢复数据。
可选的,所述利用所述尾部处理单元计算所述恢复数据在内部数据存储单元中的起始地址和长度,具体包括:
利用所述尾部处理单元获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供一种基于矢量处理器的数据处理装置及方法,包括矢量读入单元、矢量处理器、矢量写出单元、尾部处理单元和内部数据存储单元;矢量读入单元的输入端连接所述内部数据存储单元,所述矢量读入单元的输出端连接所述矢量处理器;所述矢量写出单元的输入端连接所述矢量处理器,所述矢量写出单元的输出端连接所述内部数据存储单元;所述尾部处理单元分别与所述矢量读入单元和所述矢量写出单元连接;内部数据存储单元,用于存放参与矢量运算的矢量输入数据和矢量运算后的矢量实际输出数据;矢量处理器,用于对所述矢量读入单元读入的所述矢量输入数据进行矢量运算;尾部处理单元,用于获取所述内部数据存储单元中的恢复数据,并启动所述矢量读入单元读入所述恢复数据至所述矢量处理器的寄存器中,并当所述矢量实际输出数据存储至所述内部数据存储单元中对应的位置后,启动所述矢量写出单元将所述恢复数据写入到所述内部数据存储单元中对应的位置。可见,通过尾部处理单元的使用,在矢量写出单元写出输出数据之前,先保存可能被错误覆盖的数据,再在矢量写出单元写出输出数据之后,恢复被错误覆盖的数据。这彻底解决了矢量处理器的硬件固有属性和应用场景的不确定性之间的矛盾,大大提升了矢量处理器的数据处理能力。并且由于舍弃了条件判断模块,只使用简单的算术运算和数据读写操作,不但减少了硬件成本也加快了尾部数据处理的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种基于矢量处理器的数据处理装置结构图;
图2为本发明实施例1提供的内部数据存储单元MEM中存储数据的位置关系;
图3为本发明实施例2提供的一种基于矢量处理器的数据处理方法流程图;
图4为本发明实施例2提供的矢量数据处理任务的执行顺序。
附图标记说明:
VL:矢量读入单元;VP:矢量处理器;VS:矢量写出单元;TP:尾部处理单元;MEM:内部数据存储单元;REG1:第一寄存器;REG2:第二寄存器;REG3:第三寄存器。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于矢量处理器的数据处理装置和方法,通过设置尾部处理单元,能够恢复内部数据存储单元中被矢量输出数据覆盖的数据,舍弃了现有的条件判断模块,大大提升了矢量处理器的快速运算能力,提高了矢量处理器处理数据的效率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例1
如图1所示,本实施例提供一种基于矢量处理器的数据处理装置,包括矢量读入单元VL、矢量处理器VP、矢量写出单元VS、尾部处理单元TP和内部数据存储单元MEM;
所述矢量读入单元VL的输入端连接所述内部数据存储单元MEM,所述矢量读入单元VL的输出端连接所述矢量处理器VP;所述矢量写出单元VS的输入端连接所述矢量处理器VP,所述矢量写出单元VS的输出端连接所述内部数据存储单元MEM;所述尾部处理单元TP分别与所述矢量读入单元VL和所述矢量写出单元VS连接;
所述内部数据存储单元MEM,用于存放参与矢量运算的矢量输入数据和矢量运算后的矢量实际输出数据;
所述矢量处理器VP,用于对所述矢量读入单元VL读入的所述矢量输入数据进行矢量运算;
其中,所述矢量处理器VP是按照其本身具有的某种固定的硬件计算能力进行矢量运算操作。这里所述某种固定的硬件计算能力是指,硬件计算能力在一定范围内可选某个固定值,但不能是具有任意属性的变量值。
所述矢量读入单元VL是按照其本身具有的某种固定的硬件传输能力进行数据读入操作。这里所述某种固定的硬件传输能力是指,硬件传输能力在一定范围内可选某个固定值,但不能是具有任意属性的变量值。
所述矢量写出单元VS是按照其本身具有的某种固定的硬件传输能力进行数据写出操作。这里所述某种固定的硬件传输能力是指,硬件传输能力在一定范围内可选某个固定值,但不能是具有任意属性的变量值。
由于矢量处理器VP的硬件属性,在选配硬件运算能力时只能选配大于或等于实际需要的运算能力值,所以矢量处理器VP的硬件运算能力总是存在一定程度的冗余量。这样,矢量读入单元VL实际的输入数据读入数量、矢量处理器VP实际的矢量处理数据量、矢量写出单元VS实际的输出数据写出数量均是大于或等于理论上的需求量。其中,矢量读入单元VL的冗余读入数据量和矢量处理器VP的冗余矢量处理数据量并不会造成任何负面或不好的影响,只有矢量写出单元VS的冗余写出数据量会造成内部数据存储单元MEM里产生数据越界和不合理覆盖的错误现象,称矢量写出单元VS写出的输出数据长度为实际输出数据长度。为了消除矢量写出单元VS的这种错误覆盖,设置了尾部处理单元TP来解决这个问题,它需要保存和恢复被错误覆盖的数据。所以说尾部处理单元TP处理所述矢量写出单元VS在矢量输出数据写到内部数据存储单元MEM后的遗留问题。
具体的,所述尾部处理单元TP,用于获取所述内部数据存储单元MEM中的恢复数据,并启动所述矢量读入单元VL读入所述恢复数据至所述矢量处理器VP的寄存器中,并当所述矢量实际输出数据存储至所述内部数据存储单元MEM中对应的位置后,启动所述矢量写出单元VS将所述恢复数据写入到所述内部数据存储单元MEM中对应的位置;为了更清楚的理解所述的恢复数据,请参阅图2,其示出了内部数据存储单元MEM中存储数据的位置关系;所述恢复数据为在所述内部数据存储单元MEM中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据。这里所说的超出数据指的是矢量实际输出数据相比矢量理论输出数据多出的数据,恢复数据实际为图2中覆盖区域的为被覆盖前的数据,从图2可直观的看出,所述恢复数据的长度等于所述矢量实际输出数据的长度与所述矢量理论输出数据的长度之差。
图2中的矢量数据输出起始地址是根据实际需求确定的。获取恢复数据是通过预先获取恢复数据的起始地址和长度。具体的,所述尾部处理单元TP包括恢复数据地址和长度获取子单元和恢复数据获取子单元;
所述恢复数据地址和长度获取子单元,用于计算所述恢复数据在所述内部数据存储单元MEM中的起始地址和长度,具体包括:
获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;其中,尾部处理单元TP需要根据矢量输入数据长度和具体的矢量处理方式来确定输出数据长度,由于这样的输出数据长度是通过计算得来的,称之为矢量理论输出数据长度。
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
所述恢复数据获取子单元,用于根据恢复数据的起始地址和长度获取所述恢复数据。
寄存器是位于矢量处理器VP的内部,为了更清楚的进行数据的寄存,将矢量处理器VP的寄存器设置为多个,所述矢量处理器VP的寄存器可以包括第一寄存器REG1、第二寄存器REG2和第三寄存器REG3;
所述第一寄存器REG1,与所述矢量读入单元VL连接,用于存储所述矢量读入单元VL读入的所述矢量输入数据;即第一寄存器REG1是输入数据寄存器,用于存放进行矢量运算的输入数据;
所述第二寄存器REG2,与所述矢量写出单元VS连接,用于存储矢量运算后的所述矢量输出数据;即第二寄存器REG2是输出数据寄存器,用于存放进行矢量运算的输出数据;
所述第三寄存器REG3,分别与所述矢量读入单元VL和所述矢量写出单元VS连接,用于存储所述矢量读入单元VL读入的恢复数据;第三寄存器REG3是保存数据寄存器,用于将内部数据存储单元MEM中的要被覆盖的数据(恢复数据)保存一个时间段。
其中,如果第一寄存器REG1在保存恢复数据时不被使用,第一寄存器REG1可以充当第三寄存器REG3,但第二寄存器REG2总是不能充当第三寄存器REG3。
可以进一步说明矢量读入单元VL,用于将内部数据存储单元MEM中的矢量输入数据读入位于矢量处理器VP中的第一寄存器REG1操作;矢量写出单元VS,用于将位于矢量处理器VP中的第二寄存器REG2里的矢量输出数据发送到内部数据存储单元MEM中的操作;
本实施例中,通过尾部处理单元TP的使用,在矢量写出单元VS写出输出数据之前,先保存可能被错误覆盖的数据(恢复数据),再在矢量写出单元VS写出输出数据之后,恢复被错误覆盖的数据(恢复数据)。这彻底解决了矢量处理器VP的硬件固有属性和应用场景的不确定性之间的矛盾,大大提升了矢量处理器VP的数据处理能力。并且由于舍弃了条件判断模块,只使用简单的算术运算和数据读写操作,不但减少了硬件成本也加快了尾部数据处理的速度。相对于现有技术,本发明舍弃条件判断模块在数据处理时延上有很明显的优势。因为一般的条件判断执行延时需要5个指令周期,如果按照本实施例所述的矢量处理器VP硬件处理能力有16个处理器单元来说,16个分支需要做16次条件判断,因而最大耗时将要达到16*5等于80个指令周期。而且随着矢量处理器VP硬件处理能力的提高,条件判断执行延时将会成倍增加。这些数据表明本发明的一种基于矢量处理器的数据处理装置具有很高的技术先进性和良好的低成本高收益经济性。
实施例2
如图3所示,本实施例提供一种基于矢量处理器的数据处理方法,包括:
步骤S1:利用矢量读入单元VL读入矢量输入数据至矢量处理器VP的寄存器中;
步骤S2:利用矢量处理器VP对所述矢量输入数据进行矢量运算,得到矢量实际输出数据;
步骤S3:利用尾部处理单元TP获取恢复数据;所述恢复数据为在内部数据存储单元MEM中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据;
其中,步骤S3具体包括:
(1)利用所述尾部处理单元TP计算所述恢复数据在内部数据存储单元MEM中的起始地址和长度;具体包括:
利用所述尾部处理单元TP获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
(2)根据恢复数据的起始地址和长度获取所述恢复数据。
步骤S4:利用所述尾部处理单元TP启动所述矢量读入单元VL读入所述恢复数据至所述矢量处理器VP的寄存器中;
步骤S5:利用所述尾部处理单元TP启动矢量写出单元VS将所述矢量实际输出数据写出到所述内部数据存储单元MEM对应的位置;
步骤S6:利用所述矢量写出单元VS将所述恢复数据写出到所述内部数据存储单元MEM对应的位置。
为了更清楚的了解数据处理过程中尾部处理单元TP的功能下面给出尾部处理单元TP的参与的数据处理过程:(尾部处理单元TP的4个处理过程)
过程1:TP取得矢量输入数据的长度和矢量实际输出数据的起始地址。
由于尾部处理单元TP在计算内部数据存储单元MEM中需要保存数据的起始地址和长度时,需要根据矢量输出数据的起始地址和矢量理论输出数据长度来进行。其中,保存数据的起始地址=矢量实际输出数据起始地址+矢量理论输出数据长度,保存数据的长度=矢量实际输出数据长度—矢量理论输出数据长度。尾部处理单元TP在理论计算输出数据长度时,需要根据矢量处理器VP在对数据进行矢量处理的具体方式来进行。矢量处理的具体方式包括但不限于如下一些举例:数据搬移、算术运算、逻辑运算、位运算、移位、打包解包、比较判断等。由于对数据进行矢量处理的具体方式不同,在同样的输入数据长度下,输出数据长度仍可能不同。故尾部处理单元TP需要根据输入数据长度和具体的矢量处理方式来确定输出数据长度,由于这样的输出数据长度是通过计算得来的,我们称之为矢量理论输出数据的长度。
由于在大多数应用场景下,实际输出数据长度总是大于理论输出数据长度,两者等于的情况较少见,故尾部处理单元TP的作用不可或缺。
过程2:尾部处理单元TP根据矢量处理器VP对数据进行矢量处理的方式计算在内部数据存储单元MEM中需要保存数据的起始地址和长度;这里需要保存数据是指恢复数据;后续出现的需要保存数据或保存数据均是指恢复数据。
过程3:尾部处理单元TP在矢量写出单元VS写出输出数据之前,先将需要保存的数据读入位于矢量处理器VP中的第三寄存器REG3中;
过程4:尾部处理单元TP在矢量写出单元VS写出输出数据之后,再将第三寄存器REG3中的数据写出到原先存放的区域中。
总体来说,尾部处理单元TP的尾部处理过程可以分成三个部分,首先是计算需要保存数据的起始地址和长度,这部分工作可以和矢量数据处理同时进行,并行操作,不占用额外的时间资源。其次是启动矢量读入单元VL在内部数据存储单元MEM中读入需要保存的数据,这部分工作也可以和矢量数据处理同时进行,并行操作,不占用额外的时间资源。但要注意是矢量读入单元VL的读入保存数据操作要在矢量写出单元VS写出输出数据之前进行。最后是启动矢量写出单元VS写出保存的数据到内部数据存储单元MEM中,它必须在矢量写出单元VS写出输出数据之后进行,更不能和矢量数据处理同时操作。
结合图4说明一下矢量数据处理任务的执行顺序,将本实施例中基于矢量处理器的数据处理方法描述为下面的数据处理步骤:
步骤301:矢量读入单元VL将存放在内部数据存储单元MEM中的矢量输入数据读入第一寄存器REG1中;
步骤302:矢量处理器VP对第一寄存器REG1中的数据进行矢量运算,结果存放在第二寄存器REG2中;
步骤303:尾部处理单元TP计算在内部数据存储单元MEM中需要保存数据的起始地址和长度;
步骤304:尾部处理单元TP启动矢量读入单元VL将保存数据读入第三寄存器REG3中;
步骤305:矢量写出单元VS将第二寄存器REG2中的矢量输出数据写出到内部数据存储单元MEM中;
步骤306:矢量写出单元VS将在第三寄存器REG3中的保存数据写出到内部数据存储单元MEM中;
其中,矢量读入单元VL读入矢量输入数据任务步骤301最先执行。
等待步骤301完成之后,启动矢量处理器VP执行处理矢量数据任务即步骤302。
在步骤302执行期间,适时先启动尾部处理单元TP计算保存数据起始地址和长度任务即步骤303;在等待步骤303完成之后,再启动矢量读入单元VL读入保存数据任务即步骤304。也就是步骤303和步骤304两个步骤是串行执行,而步骤303和步骤304两个步骤都和步骤302并行执行。由于步骤302的任务量远大于步骤303和步骤304的任务量之和,故等待步骤302完成之后,再启动矢量写出单元VS写出矢量输出数据任务即步骤305。在步骤305完成之后,启动矢量写出单元VS写出保存数据任务即步骤306。
为了便于本领域技术人员能够清楚的了解本实施例的基于矢量处理器的数据处理过程,下面给出了详细过程:
过程一:使用所述矢量处理器VP将数据长度为N的数据从A地址搬移到B地址,这里N是个变量,范围是大于等于1的整数。矢量处理器VP的最大硬件处理能力是每指令周期可使用16个处理器单元,可选配的矢量处理器VP硬件处理能力也就是每指令周期1—16个处理器单元。本着最快数据搬移策略,我们在最初数据阶段,使用矢量处理器VP的最大硬件处理能力为16,但由于不知N的具体数值,在使用矢量处理器VP搬数几个指令周期之后,总的搬运数据量就可能超过实际的N值。现有的做法是这样的,先计算N/16的商,并下取整,作为循环次数M,再计算N/16的余数n。由于N是任意变量,一般不会被16整除,这样余数n就很大可能不等于0,等于0的情况也存在但很少。这样在使用矢量处理器VP搬数M个指令周期之后,总的搬运数据量是M*16,而M*16肯定是小于或等于N的。如果n等于0,则M*16等于N,表示矢量处理器VP每指令周期使用16个处理器单元循环M次后就能完整地把数据搬完。但大多数情况下,n不等于0,表示矢量处理器VP在循环M次后,还剩下n个数据没有搬完。现有的做法是使用条件判断模块,按n的可能取值范围分别得到16个分支,即n是0分支、n是1分支、n是2分支、n是3分支、...、n是14分支、n是15分支。在每个不同的分支里,采用不同的处理方法。例如,n是0不做任何操作就返回。n是T分支,就选配矢量处理器VP的硬件处理能力T,这里T取值是1、2、3、...、15。这样一个指令周期,矢量处理器VP就将剩余的数据搬移完毕。这样做的好处是在数据搬移的尾部,能够精确地选配矢量处理器VP的硬件处理能力,没有造成硬件资源的浪费。但由于条件判断模块的使用,极大地增加了整个数据的搬移时间,严重削弱了矢量处理器VP的快速数据处理能力,而且也增加了条件判断模块的使用成本。
过程二:针对上述过程一的使用缺陷和不足,提出了新的对于尾部数据的处理方法。我们在计算N/16的商时,并不是下取整,而是上取整。这样得到的商M作为循环次数后,总的搬运数据量是M*16,而M*16肯定是大于或等于N的。我们也不做余数n计算和判断,不使用条件判断模块。这样在矢量处理器VP每指令周期使用16个处理器单元循环M次搬数后,在大多数情况下,肯定把多于N的数据也从A地址搬到了B地址,从而造成B地址在N长度之外的数据被覆盖。为此,我们提供一个新的装置叫尾部处理单元TP,它只是运行加法减法运算和适时发布操作命令,并不具有条件判断单元,因而成本极小。尾部处理单元TP的具体工作步骤如下:如图2所示,尾部处理单元TP首先取得矢量输出数据起始地址和理论输出数据长度。矢量输出数据起始地址是B地址,矢量理论输出数据长度就是N,矢量实际输出数据长度就是M*16。因而,如图2所示,需要保存数据起始地址等于B地址加上矢量理论输出数据长度N,需要保存数据长度等于矢量实际输出数据长度M*16减去矢量理论输出数据长度N之后,尾部处理单元TP启动矢量读入单元VL将需要保存的数据读入位于矢量处理器VP内部的第三寄存器REG3中。在等待矢量处理器VP处理矢量数据完成并将输出的矢量数据写出到内部数据存储单元MEM之后,尾部处理单元TP再启动矢量写出单元VS将第三寄存器REG3中的保存数据写出到内部数据存储单元MEM中。
过程三:按照过程二所述,矢量处理器VP处理完成矢量输入数据的矢量运算并将输出的矢量数据写出到内部数据存储单元MEM之后,在内部数据存储单元MEM中,肯定存在有一段数据被覆盖的区域,如图2所示。由于尾部处理单元TP在数据被覆盖前,已经将这段要被覆盖的数据保存起来,所以即使矢量写出单元VS的写出输出数据导致内部数据存储单元MEM中有被数据覆盖的错误,但在矢量写出单元VS写出保存数据之后,错误能够得到快速纠正,数据能够得到完全恢复,也就不会产生后续错误了。这样,本发明的一种基于矢量处理器的数据处理过程能够快速而完整地进行数据的搬移,不仅减少了硬件使用成本,而且大大加快了矢量处理器VP进行矢量处理数据的能力。具体来说,按照现有的数据搬移方法,搬移N个数据的总耗时是(N/16)下取整加1个指令周期再加条件判断延时。而本发明的数据搬移方法,搬移N个数据的总耗时是(N/16)上取整加1个指令周期。由于上取整比下取整大1个指令周期,因而影响不大,主要的差别还是条件判断延时。我们知道一般的条件判断执行延时需要5个指令周期,如果按照本实施例一所述的矢量处理器VP硬件处理能力有16个处理器单元来说,16个分支需要做16次条件判断,因而最大耗时将要达到16*5等于80个指令周期。而且随着矢量处理器VP硬件处理能力的提高,条件判断执行延时将会成倍增加。这些数据表明本发明的一种基于矢量处理器的数据处理方法和装置具有很高的技术先进性和良好的低成本高收益经济性。
需要说明的是,由于矢量处理器VP可以进行多种不同类型的矢量数据运算,上述的矢量处理式仅为本发明的较佳实施例而已,并非用于本发明的保护范围。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于矢量处理器的数据处理装置,其特征在于,包括矢量读入单元、矢量处理器、矢量写出单元、尾部处理单元和内部数据存储单元;
所述矢量读入单元的输入端连接所述内部数据存储单元,所述矢量读入单元的输出端连接所述矢量处理器;所述矢量写出单元的输入端连接所述矢量处理器,所述矢量写出单元的输出端连接所述内部数据存储单元;所述尾部处理单元分别与所述矢量读入单元和所述矢量写出单元连接;
所述内部数据存储单元,用于存放参与矢量运算的矢量输入数据和矢量运算后的矢量实际输出数据;
所述矢量处理器,用于对所述矢量读入单元读入的所述矢量输入数据进行矢量运算;
所述尾部处理单元,用于获取所述内部数据存储单元中的恢复数据,并启动所述矢量读入单元读入所述恢复数据至所述矢量处理器的寄存器中,并当所述矢量实际输出数据存储至所述内部数据存储单元中对应的位置后,启动所述矢量写出单元将所述恢复数据写入到所述内部数据存储单元中对应的位置;所述恢复数据为在所述内部数据存储单元中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据。
2.根据权利要求1所述的装置,其特征在于,所述矢量处理器的寄存器包括第一寄存器、第二寄存器和第三寄存器;
所述第一寄存器,与所述矢量读入单元连接,用于存储所述矢量读入单元读入的所述矢量输入数据;
所述第二寄存器,与所述矢量写出单元连接,用于存储矢量运算后的所述矢量输出数据;
所述第三寄存器,分别与所述矢量读入单元和所述矢量写出单元连接,用于存储所述矢量读入单元读入的恢复数据。
3.根据权利要求1所述的装置,其特征在于,所述尾部处理单元包括恢复数据地址和长度获取子单元和恢复数据获取子单元;
所述恢复数据地址和长度获取子单元,用于计算所述恢复数据在所述内部数据存储单元中的起始地址和长度;
所述恢复数据获取子单元,用于根据恢复数据的起始地址和长度获取所述恢复数据。
4.根据权利要求3所述的装置,其特征在于,所述恢复数据地址和长度获取子单元,用于计算所述恢复数据在所述内部数据存储单元中的起始地址和长度具体包括:
获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
5.根据权利要求4所述的装置,其特征在于,所述恢复数据的长度等于所述矢量实际输出数据的长度与所述矢量理论输出数据的长度之差。
6.一种基于权利要求1至5任一项所述的基于矢量处理器的数据处理装置的数据处理方法,其特征在于,包括:
利用矢量读入单元读入矢量输入数据至矢量处理器的寄存器中;
利用矢量处理器对所述矢量输入数据进行矢量运算,得到矢量实际输出数据;
利用尾部处理单元获取恢复数据;所述恢复数据为在内部数据存储单元中,所述矢量实际输出数据的超出数据所覆盖的数据;所述超出数据和所述矢量理论输出数据组成所述矢量实际输出数据;
利用所述尾部处理单元启动所述矢量读入单元读入所述恢复数据至所述矢量处理器的寄存器中;
利用所述尾部处理单元启动矢量写出单元将所述矢量实际输出数据写出到所述内部数据存储单元对应的位置;
利用所述矢量写出单元将所述恢复数据写出到所述内部数据存储单元对应的位置。
7.根据权利要求6所述的方法,其特征在于,所述利用尾部处理单元获取恢复数据具体包括:
利用所述尾部处理单元计算所述恢复数据在内部数据存储单元中的起始地址和长度;
根据恢复数据的起始地址和长度获取所述恢复数据。
8.根据权利要求7所述的方法,其特征在于,所述利用所述尾部处理单元计算所述恢复数据在内部数据存储单元中的起始地址和长度,具体包括:
利用所述尾部处理单元获取所述矢量输入数据的长度和所述矢量实际输出数据的起始地址;
根据所述矢量输入数据的长度和所述矢量输入数据的矢量运算方式确定所述矢量理论输出数据的长度;
根据所述矢量理论输出数据的长度和所述矢量实际输出数据的起始地址确定所述恢复数据的起始地址;
根据所述矢量实际输出数据的长度和所述矢量理论输出数据的长度确定所述恢复数据的长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210496254.1A CN114579083B (zh) | 2022-05-09 | 2022-05-09 | 一种基于矢量处理器的数据处理装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210496254.1A CN114579083B (zh) | 2022-05-09 | 2022-05-09 | 一种基于矢量处理器的数据处理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114579083A true CN114579083A (zh) | 2022-06-03 |
CN114579083B CN114579083B (zh) | 2022-08-05 |
Family
ID=81767692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210496254.1A Active CN114579083B (zh) | 2022-05-09 | 2022-05-09 | 一种基于矢量处理器的数据处理装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579083B (zh) |
Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4799186A (en) * | 1985-12-12 | 1989-01-17 | Inria Institut National De Recherche En Informatique Et En Automatique | Electronic circuit constituting an improved high-speed stable memory with memory zones protect from overlap |
JPH01205269A (ja) * | 1988-02-10 | 1989-08-17 | Hitachi Ltd | ベクトル処理装置 |
JPH01206462A (ja) * | 1988-02-15 | 1989-08-18 | Agency Of Ind Science & Technol | ベクトル計算機 |
JPH0264766A (ja) * | 1988-08-30 | 1990-03-05 | Nec Corp | ベクトル化処理方式 |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
CN1666187A (zh) * | 2002-06-28 | 2005-09-07 | 摩托罗拉公司 | 可重配置的流型矢量处理器 |
US20060039474A1 (en) * | 2004-08-19 | 2006-02-23 | Matsushita Electric Industrial Co., Ltd. | Motion vector estimating method and motion picture processor |
US20060104365A1 (en) * | 2004-11-17 | 2006-05-18 | Microsoft Corporation | Bi-directional temporal error concealment |
CN102109978A (zh) * | 2011-02-28 | 2011-06-29 | 孙瑞琛 | 一种数据的重排方法及重排装置 |
CN202331425U (zh) * | 2011-08-29 | 2012-07-11 | 江苏中科芯核电子科技有限公司 | 基于矢量运算的矢量浮点运算装置 |
US20130305087A1 (en) * | 2012-05-09 | 2013-11-14 | Imec | Method and system for real-time error mitigation |
CN106776474A (zh) * | 2016-11-21 | 2017-05-31 | 江苏宏云技术有限公司 | 一种矢量处理器实现fft运算的方法及系统 |
US20190098332A1 (en) * | 2017-09-25 | 2019-03-28 | Intel Corporation | Temporal motion vector prediction control in video coding |
US20190196825A1 (en) * | 2016-09-13 | 2019-06-27 | Arm Limited | Vector multiply-add instruction |
CN110192186A (zh) * | 2017-01-24 | 2019-08-30 | Arm有限公司 | 使用矢量处理电路的错误检测 |
US20200089559A1 (en) * | 2016-11-04 | 2020-03-19 | Arm Limited | Main processor error detection using checker processors |
US20200192742A1 (en) * | 2017-10-05 | 2020-06-18 | Arm Limited | Error recovery for intra-core lockstep mode |
CN111352894A (zh) * | 2018-12-20 | 2020-06-30 | 深圳市中兴微电子技术有限公司 | 一种单指令多核系统、指令处理方法及存储介质 |
US20200293316A1 (en) * | 2019-03-11 | 2020-09-17 | Untether Ai Corporation | Computational memory |
CN112307431A (zh) * | 2020-11-09 | 2021-02-02 | 哲库科技(上海)有限公司 | 一种vdsp、数据处理方法及通讯设备 |
CN113885943A (zh) * | 2020-07-02 | 2022-01-04 | 阿里巴巴集团控股有限公司 | 处理单元、片上系统、计算装置及方法 |
CN114116557A (zh) * | 2021-11-15 | 2022-03-01 | 同济大学 | 基于硬件加速器与数字信号处理器的信道估计装置及方法 |
CN114389758A (zh) * | 2020-10-19 | 2022-04-22 | 华为技术有限公司 | 一种数据传输方法和装置 |
-
2022
- 2022-05-09 CN CN202210496254.1A patent/CN114579083B/zh active Active
Patent Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4799186A (en) * | 1985-12-12 | 1989-01-17 | Inria Institut National De Recherche En Informatique Et En Automatique | Electronic circuit constituting an improved high-speed stable memory with memory zones protect from overlap |
JPH01205269A (ja) * | 1988-02-10 | 1989-08-17 | Hitachi Ltd | ベクトル処理装置 |
JPH01206462A (ja) * | 1988-02-15 | 1989-08-18 | Agency Of Ind Science & Technol | ベクトル計算機 |
JPH0264766A (ja) * | 1988-08-30 | 1990-03-05 | Nec Corp | ベクトル化処理方式 |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
CN1666187A (zh) * | 2002-06-28 | 2005-09-07 | 摩托罗拉公司 | 可重配置的流型矢量处理器 |
US20060039474A1 (en) * | 2004-08-19 | 2006-02-23 | Matsushita Electric Industrial Co., Ltd. | Motion vector estimating method and motion picture processor |
US20060104365A1 (en) * | 2004-11-17 | 2006-05-18 | Microsoft Corporation | Bi-directional temporal error concealment |
CN102109978A (zh) * | 2011-02-28 | 2011-06-29 | 孙瑞琛 | 一种数据的重排方法及重排装置 |
CN202331425U (zh) * | 2011-08-29 | 2012-07-11 | 江苏中科芯核电子科技有限公司 | 基于矢量运算的矢量浮点运算装置 |
US20130305087A1 (en) * | 2012-05-09 | 2013-11-14 | Imec | Method and system for real-time error mitigation |
US20190196825A1 (en) * | 2016-09-13 | 2019-06-27 | Arm Limited | Vector multiply-add instruction |
US20200089559A1 (en) * | 2016-11-04 | 2020-03-19 | Arm Limited | Main processor error detection using checker processors |
CN106776474A (zh) * | 2016-11-21 | 2017-05-31 | 江苏宏云技术有限公司 | 一种矢量处理器实现fft运算的方法及系统 |
CN110192186A (zh) * | 2017-01-24 | 2019-08-30 | Arm有限公司 | 使用矢量处理电路的错误检测 |
US20190098332A1 (en) * | 2017-09-25 | 2019-03-28 | Intel Corporation | Temporal motion vector prediction control in video coding |
US20200192742A1 (en) * | 2017-10-05 | 2020-06-18 | Arm Limited | Error recovery for intra-core lockstep mode |
CN111352894A (zh) * | 2018-12-20 | 2020-06-30 | 深圳市中兴微电子技术有限公司 | 一种单指令多核系统、指令处理方法及存储介质 |
US20200293316A1 (en) * | 2019-03-11 | 2020-09-17 | Untether Ai Corporation | Computational memory |
CN113885943A (zh) * | 2020-07-02 | 2022-01-04 | 阿里巴巴集团控股有限公司 | 处理单元、片上系统、计算装置及方法 |
CN114389758A (zh) * | 2020-10-19 | 2022-04-22 | 华为技术有限公司 | 一种数据传输方法和装置 |
CN112307431A (zh) * | 2020-11-09 | 2021-02-02 | 哲库科技(上海)有限公司 | 一种vdsp、数据处理方法及通讯设备 |
CN114116557A (zh) * | 2021-11-15 | 2022-03-01 | 同济大学 | 基于硬件加速器与数字信号处理器的信道估计装置及方法 |
Non-Patent Citations (3)
Title |
---|
ANDREI POENARU 等: "The Effects of Wide Vector Operations on Processor Caches", 《2020 IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING (CLUSTER)》 * |
王江等: "基于无冲突地址生成的高性能FFT处理器设计", 《微电子学与计算机》 * |
韩正飞 等: "基于FPGA的浮点向量协处理器设计", 《计算机工程》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114579083B (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111860813B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN109376861B (zh) | 一种用于执行全连接层神经网络训练的装置和方法 | |
CN111310904B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN111860811B (zh) | 一种用于执行人工神经网络全连接层正向运算的装置和方法 | |
US20240069957A1 (en) | Systems and Methods for Task Switching in Neural Network Processor | |
CN103827818B (zh) | Fifo加载指令 | |
CN107977233A (zh) | 内核镜像文件快速加载方法和装置 | |
WO2023197526A1 (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
JPS61267871A (ja) | 情報処理装置 | |
CN114579083B (zh) | 一种基于矢量处理器的数据处理装置和方法 | |
CN112486907A (zh) | 可重构处理器上多层循环任务的硬件实现方法 | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
US8972471B2 (en) | Arithmetic module, device and system | |
CN116151321A (zh) | 半导体装置 | |
CN116308989A (zh) | 一种全同态快速数论变换的gpu加速方法 | |
CN111860772B (zh) | 一种用于执行人工神经网络pooling运算的装置和方法 | |
CN116382782A (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
CN116862756B (zh) | 行数据处理方法、行缓存器、电子设备及存储介质 | |
CN110705701A (zh) | 一种高并行度的卷积运算方法和电路 | |
JPH07219766A (ja) | 演算処理装置 | |
CN114741352B (zh) | 一种基于fpga的双线性插值重采样实现方法及装置 | |
US20230205530A1 (en) | Graph Instruction Processing Method and Apparatus | |
CN114936636A (zh) | 一种基于fpga的通用型轻量级卷积神经网络加速方法 | |
CN110647984B (zh) | 芯片、集成处理设备及其操作方法 | |
CN116128016A (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 |