CN112559053A - 可重构处理器数据同步处理方法及装置 - Google Patents

可重构处理器数据同步处理方法及装置 Download PDF

Info

Publication number
CN112559053A
CN112559053A CN202011518287.9A CN202011518287A CN112559053A CN 112559053 A CN112559053 A CN 112559053A CN 202011518287 A CN202011518287 A CN 202011518287A CN 112559053 A CN112559053 A CN 112559053A
Authority
CN
China
Prior art keywords
operation time
node
time information
information
reconfigurable processor
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
CN202011518287.9A
Other languages
English (en)
Other versions
CN112559053B (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202011518287.9A priority Critical patent/CN112559053B/zh
Publication of CN112559053A publication Critical patent/CN112559053A/zh
Application granted granted Critical
Publication of CN112559053B publication Critical patent/CN112559053B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种可重构处理器数据同步处理方法及装置,涉及通信技术领域,该方法包括获取第一节点的第一运算时刻信息、可重构处理器各节点的运算周期信息和间隔周期信息;根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息;后继节点与第一节点存在直接或间接的依赖关系;根据第二运算时刻信息计算除第一节点和多个后继节点外的剩余节点的第三运算时刻信息;根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务。本发明实施例提供了对于高并行流水任务面对存储资源有限导致的访存冲突的解决方案。

Description

可重构处理器数据同步处理方法及装置
技术领域
本发明涉及通信技术领域,尤其是涉及一种可重构处理器数据同步处理方法及装置。
背景技术
粗粒度可重构处理器架构以其低能耗、高性能和高能效和灵活动态可重构的特性,正得到越来越多的关注。粗粒度可重构计算架构是一种综合了通用处理器的灵活性和专用集成电路的高性能计算架构,非常适用于对于数据和计算密集型等并行度非常高的应用的处理,比如人工智能、数字信号处理、视频图像处理、科学计算和通信加密等领域的应用。同时,随着人工智能、神经网络、大数据、云计算、5G通信等应用的迅速兴起,其带来的更加密集的数据和更加密集的运算,而这些应用往往都会涉及到大量的数据依赖问题,而对于可重构处理器多个运算单元,在协同工作中对同步方案则提出了较高的需求。
目前的可重构处理器,作为一种新兴的硬件平台,并没有非常完善的工具链,在处理小规模计算任务的时候常常需要手动测试调整的方法进行设计,这导致在更大规模的计算任务情况下,难以设计整个计算阵列的同步方法。在现在既没有很好的理论支撑,有没有很好的开发工具的现状下,极大限制了可重构处理器处理任务的效率。
发明内容
本发明提供了一种可重构处理器数据同步处理方法及装置,该方法可以实现对可重构处理器内部的各个运算单元对应的子运算之间数据依赖关系的同步控制的计算,提供了对于高并行流水任务面对存储资源有限导致的访存冲突的解决方案。
第一方面,本发明实施例提供了一种可重构处理器数据同步处理方法,该方法包括:获取第一节点的第一运算时刻信息、所述可重构处理器各节点的运算周期信息和间隔周期信息;所述间隔周期信息根据所述可重构处理器和待处理任务确定;根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息;所述后继节点与所述第一节点存在直接或间接的依赖关系;根据所述第二运算时刻信息计算除所述第一节点和所述多个后继节点外的剩余节点的第三运算时刻信息;根据所述第一运算时刻信息、所述第二运算时刻信息和所述第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
第二方面,本发明实施例还提供一种可重构处理器数据同步处理装置,该装置包括:获取模块,用于获取第一节点的第一运算时刻信息、所述可重构处理器各节点的运算周期信息和间隔周期信息;所述间隔周期信息根据所述可重构处理器和待处理任务确定;顺序计算模块,用于根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息;所述后继节点与所述第一节点存在直接或间接的依赖关系;逆序计算模块,用于根据所述第二运算时刻信息计算除所述第一节点和所述多个后继节点外的剩余节点的第三运算时刻信息;控制模块,用于根据所述第一运算时刻信息、所述第二运算时刻信息和所述第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
第三方面,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述可重构处理器数据同步处理方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述可重构处理器数据同步处理方法的计算机程序。
本发明实施例带来了以下有益效果:本发明实施例提供了一种可重构处理器数据同步处理方案,该方案包括获取第一节点的第一运算时刻信息、可重构处理器各节点的运算周期信息和间隔周期信息;间隔周期信息根据可重构处理器和待处理任务确定;根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息;后继节点与第一节点存在直接或间接的依赖关系;根据第二运算时刻信息计算除第一节点和多个后继节点外的剩余节点的第三运算时刻信息;根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务。本发明实施例可以实现对可重构处理器内部的各个运算单元对应的子运算之间数据依赖关系的同步控制的计算,提供了对于高并行流水任务面对存储资源有限导致的访存冲突的解决方案。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的可重构处理器数据同步处理方法流程图;
图2为本发明实施例提供的计算任务通过编译器提取出的中间表达数据流图;
图3为本发明实施例提供的同步方案计算流程示意图;
图4为本发明实施例提供的相邻节点A和B示意图;
图5为本发明实施例提供的数据流图举例;
图6为本发明实施例提供的高能效可重构处理器平台示意图;
图7为本发明实施例提供的用于映射的详细数据流图;
图8为本发明实施例提供的部分运算节点的启动时间示意图;
图9为本发明实施例提供的数据流图全部运算节点的启动时间示意图;
图10为本发明实施例提供的数据流图调整后的启动时间示意图;
图11为本发明实施例提供的一种可重构处理器数据同步处理装置结构框图;
图12为本发明实施例提供的另一种可重构处理器数据同步处理装置结构框图;
图13为本发明实施例提供的计算机设备结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,流水线挖掘了指令之间潜在的并行性,有两种方法可以增加潜在的指令集并行程度,第一种是增加流水线的深度以及重叠更多的指令,另一种方法则是复制计算机内部部件的数量,提供更多的运算单元,使得每个流水及可以启动多条指令,这种技术一般被称为多发射(multiple issue)。多发射流水线必须处理的一个问题就是处理数据冒险和控制冒险,数据冒险是在对于同一存储块(bank),会遇见同时读写的问题,同时读写会导致的访存冲突,因此需要合理规划使用时间来规避冲突;控制冒险是在运算过程中会有前后数据的依赖关系,后面使用的数据应该在前面计算出结果后再启动,并且保证整个流水线的数据前后使用时间都给合适的分配。
对于具体的可重构处理器计算平台,进行的运算数据的传递可以归结为后一个运算在执行阶段开始时,前一个运算需要已经得到计算结果,而在流水线情况下,前一个运算的运算结果在流水线寄存器只会保留一个周期,之后新的运算结果会将改流水线寄存器上的运算结果冲刷,所以两个运算的配合需要后一个运算刚好能在前一个运算计算出结果的下一周期访问该流水线寄存器。该运算单元即可正确读取到前一个运算的运算结果。
对于片外存储资源有限,bank数量会限制最大可并行读取的数据量,所以正常流水线无法满足取数的需求。进而考虑设计新的流水线模式,1+x计算停顿模式,如片外有8个bank,即每周期支持最大可并行存取的数据量为8,而流水线每拍需要访问24个数据单元,则可以让片上所有运算单元都采取运算1周期+停顿2周期为1拍的运算模式。
对于存储类运算单元(LSU),其中8个在1拍中的第1周期访存,8个在第2周期访存,8个在第三周期访存,即三周期为一拍,按拍进行流水线。而对于计算类运算单元,则在1拍中的3个周期中任意一周期工作均可正确进行运算得到需要的结果。
基于此,本发明实施例提供的一种可重构处理器数据同步处理方法及装置,该方法适合用于处理数据密集型和计算密集型的硬件加速器、多发射超标量加速器和可重构计算硬件,比如粗粒度可重构处理器、FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)、DSP(Digital Signal Process,数字信号处理)、加密芯片和神经网络ASIC(Application Specific Integrated Circuit,专用集成电路)加速芯片等。因为在人工智能、数字信号处理、视频图像处理、通信、科学计算和加解密算法等领域的计算芯片,通常含有多个运算单元进行处理,而提高运算密度以及更高效发挥多运算单元的优势,则需要对多运算单元合理分配运算指令,控制好数据依赖关系使之能正确配合计算出正确结果。粗粒度的可重构计算处理器架构以其低能耗、高性能和高能效和灵活动态可重构的特性,非常适合进行像神经网络、矩阵乘、FFT(Fast Fourier Transform,快速傅里叶变换)等具有大量乘法/乘累加的计算并行度高的任务和应用。对于已经将计算任务抽象成中间表达后,进行空域映射后还需要一套整个阵列的同步方案以计算各个运算的时间和数据流传递,使得整个阵列能够在一套规整稳定的数据通路计算出需求的结果。
本发明实施例提供的空域执行模式同步方案,针对高性能多运算单元的处理器,在多发射指令的高并行流水情况下提供了数据依赖的控制方案,保证了阵列在特定的运算模式下,在特定的启动时间运行可以得到正确的运算结果。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种可重构处理器数据同步处理方法进行详细介绍。
本发明实施例提供了一种可重构处理器数据同步处理方法,参见图1所示的一种可重构处理器数据同步处理方法流程图,该方法包括以下步骤:
步骤S102,获取第一节点的第一运算时刻信息、可重构处理器各节点的运算周期信息和间隔周期信息。
在本发明实施例中,在具备多运算单元的可重构处理器计算平台上分配计算任务后,计算任务通过编译器前端和优化器转换为中间表达,参见图2所示的计算任务通过编译器提取出的中间表达数据流图,该图为FFT运算的数据流图,针对高能效的可重构处理器平台,其每个运算节点会对应的映射到一个具体的计算单元当中,而数据依赖关系则通过对预算单元开始运算时间的设置使之能正确的得到计算结果。
基于类似图2的数据流图,第一节点可以是数据流图中第一批次启动计算的任一节点,例如,根据图2,第一节点可以为LoadD1节点。图中,LoadD、Mrl、Sub、Add以及Store等均表示不同类型的操作,而如LoadD1和LoadD2,则表示同一操作下不同操作步骤。将第一节点的启动运算的时刻作为第一运算时刻信息。
在本发明实施例中,可重构处理器的每个节点对应的数据操作类型都有对应的运算周期和间隔周期信息。其中,运算周期信息包括节点运算所需周期数和节点访问寄存器所需要的周期数(如果不访问寄存器,则为0)。间隔周期信息根据可重构处理器和待处理任务确定,用于确定运算周期之间的间隔时长。
步骤S104,根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息。
在本发明实施例中,后继节点与第一节点存在直接或间接的依赖关系。参见图2,与节点LoadD1存在直接依赖关系的后继节点包括Mrl1、Mrl3,而Sub1为与节点LoadD1存在间接依赖关系的后继节点。
步骤S106,根据第二运算时刻信息计算除第一节点和多个后继节点外的剩余节点的第三运算时刻信息。
在本发明实施例中,将除除第一节点和第一节点的多个后继节点外的剩余节点的运算时刻信息作为第三运算时刻信息。
步骤S108,根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务。
在本发明实施例中,获得了第一运算时刻信息、第二运算时刻信息和第三运算时刻信息之后,即获得了可重构处理器中各节点的相对启动计算的时刻信息,从而,按照这些时刻信息控制可重构处理器同步处理待处理任务,提升处理效率,并保证数据处理质量。
本发明实施例提供了一种可重构处理器数据同步处理方案,该方案包括获取第一节点的第一运算时刻信息、可重构处理器各节点的运算周期信息和间隔周期信息;间隔周期信息根据可重构处理器和待处理任务确定;根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息;后继节点与第一节点存在直接或间接的依赖关系;根据第二运算时刻信息计算除第一节点和多个后继节点外的剩余节点的第三运算时刻信息;根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务。本发明实施例可以实现对可重构处理器内部的各个运算单元对应的子运算之间数据依赖关系的同步控制的计算,提供了对于高并行流水任务面对存储资源有限导致的访存冲突的解决方案。
在一个实施例中,间隔周期信息包括流水线延时周期信息和停顿周期信息;获取间隔周期信息之前,还包括:配置流水线延时周期信息;根据可重构处理器确定硬件参数;根据待处理任务确定访存操作参数;根据硬件参数和访存操作参数确定停顿周期信息。
在本发明实施例中,流水线延时周期流水线自然延时周期数,通常为1。将停顿周期信息记为x,对于具体的数据流图和硬件平台,可以计算其在所需要停顿的周期数,即确定x的大小。假设对于如图5所示的数据流图,图中LoadA、LoadD和Store均为访存操作,需要访问片外存储。LoadA[1-2]、LoadD[1-6]、Store[1-4],即图5中共有12个访存操作,该12个访问操作即为访存操作参数,如本运算被映射到有8个bank的存储器上,该8个bank即为硬件参数,则单周期最大访存数据量为8,无法完成每周期12个的访存需求,所以计算停顿周期信息
Figure BDA0002848156990000071
该公式对12除以8的结果向上取整进行计算,得到每本方案需要阵列每次运算后停顿1周期,即2周期为一拍,按拍流水,而在每拍中,我们可以选取LoadA[1-2]和Store[1-4]共6个操作在每拍的第1个周期,即该周期访存为6个bank,可以满足需求,而选择LoadD[1-6]共6个操作在每拍的第2个周期。至此,在只有8个bank的阵列可以放下拥有12个访存操作的数据流图。
在一个实施例中,利用如下公式根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息:
Figure BDA0002848156990000072
其中,Start(B)表示节点B的第二运算时刻信息,Start(A)表示节点A的第一运算时刻信息或节点B依赖的节点的第二运算时刻信息,L(A) OP表示节点A的运算周期信息或节点B依赖的节点的运算周期信息,T(A) Reg表示节点A访问寄存器所需要的周期信息或节点B依赖的节点访问寄存器所需要的周期信息,TPipeline表示流水线延时周期信息,x表示停顿周期信息。
在本发明实施例中,参见图4所示的相邻节点A和B示意图,分析前驱节点的各项数据对后继节点的影响,节点A对于节点B启动时间的影响应为:
Figure BDA0002848156990000073
其中:
Start(B):节点B开始运算的时间点,节点B为节点A的后继节点,因此Start(B)表示节点B的第二运算时刻信息。
Start(A):节点A开始运算的时间点。需要说明的是,可以基于节点B计算节点B的后继节点开始运算的时间点,因此,Start(A)表示节点A的第一运算时刻信息或节点B依赖的节点的第二运算时刻信息。
L(A) OP:节点A运算所需周期数。需要说明的是,可以基于节点B计算节点B的后继节点开始运算的时间点,因此,L(A) OP表示节点A的运算周期信息或节点B依赖的节点的运算周期信息。
T(A) Reg:节点A访问寄存器所需要的周期数(如果不访问寄存器,则为0)。需要说明的是,可以基于节点B计算节点B的后继节点开始运算的时间点,因此,T(A) Reg表示节点A访问寄存器所需要的周期信息或节点B依赖的节点访问寄存器所需要的周期信息。
TPipeline:流水线自然延时周期数,通常为1。
x:表示停顿周期数。
需要说明的是,在知道后继节点地启动时间,回推前驱节点启动时间时,可以将上述公式变形为:
Figure BDA0002848156990000081
可得到由后继节点反推前驱节点的具体求取办法。其中,对于具体的硬件平台,其LOP和TReg均可通过查表得到,而TPipeline和x则可以在对于具体应用的前期分析中计算,并在接下来当作定值使用。
在一个实施例中,根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务,可以按照如下步骤执行:
获取同步处理规划信息;根据同步处理规划信息和间隔周期信息调整第二运算时刻信息和第三运算时刻信息,以使调整后的第二运算时刻信息和调整后的第三运算时刻信息与同步处理规划信息的差别小于预设差别范围;利用第一运算时刻信息、调整后的第二运算时刻信息和调整后的第三运算时刻信息控制可重构处理器同步处理待处理任务。
在本发明实施例中,预设差别范围可以根据实际需求进行设置,本发明实施例对此不作具体限定。
下面以一个具体实施例对该方法的实施过程进行说明。
下面将针对具体的高能效可重构平台计算一个具体的数据流图启动时间分析,所使用的硬件平台含有8×8的运算单元阵列,如图6所示。
该可重构平台可支持多种LSU和ALU运算,不同运算所需要的运算周期数(LOP)不一样,具体如表1所示。
需要说明的是,表1中及附图2-图10中记载的Add,Sub,Shr,Shl,Ahr,Ahl,Route,Mul,Mac,Mrl,Load或Store表示不同类型的操作。
而每次访存,如果需要将结果写入全局寄存器供后继节点读取,则需要额外增加2个周期,即此时T(A) Reg为2,否则为0(通过互联流水线寄存器传递)。
Figure BDA0002848156990000091
表1
下面将图7数据流图映射到该阵列,这里给出更细致的数据流图,其中Sub1、Add1、LoadD5和LoadD6的运算需要通过写全局寄存器进行接下来访存。
图7中一共有10个存储单元,而具体的硬件平台具有8个bank,因此可计算出每次运算后需要停顿x=1个周期,具体选择LoadD[1-6]占用每次流水线节拍的第1个周期(1,3,5,…即所有奇数周期),Store[1-4]占用流水线节拍的第2个周期(2,4,6,…即所有偶数周期)。
首先选取LoadD1的启动时间为1,作为运算起点,并向下计算出Mrl1和Mrl3,由公式
Figure BDA0002848156990000092
计算得其启动时间为Start(Mrl1/Mrl3)=1+6+0+(1+1)=9。
同理可以顺序向下计算出Sub[1-3]、Add[1-3]、Store[1-4]得启动时间,如图8所示。
之后,再利用公式
Figure BDA0002848156990000093
反向求取剩下的运算对应的启动时间,如图9所示。
此时计算结果还有待调整,因为LoadD5、LoadD6的启动时间在之前的规划应该在每拍的第1个周期(即奇数节拍执行),所以其需要调整。考虑到其运算时间10为正常反向推导出,即其为运算一拍后会停一拍,所以其“10”或者“11”周期得到的结果都能被正确的传递给后面的运算,所以对LoadD5、LoadD6调整后的启动时间如图10所示。同样的,需要对节点Store1至节点Store4进行调整,将“23”调整为“24”。
图10即为数据流图最终的启动时间推导结果,即针对图6所示的高性能可重构计算平台,所有运算节点在此启动时间开始运算,按照运算1周期停1周期的运算模式,可正确的得到所需的计算结果。
参见图3所示的同步方案计算流程示意图,首先通过对中间表达的访存节点分析,分析在目前运算模式下所需要的访存需求,再比对硬件已有的bank数量,即硬件可支持单周期最大数据访问量,计算得到1+x模式中需要停顿的周期数,即决定流水线中一拍所包含的周期数,此后所有运算均按照此模式运行。
在确定具体的停顿时长后,从运算起点顺序向下,按照广度优先向下递归求取各运算单元的启动时间,使之能正确的得到所需要的运算数。再在确定了顺序向下能遍历的所有运算节点启动时间后,对于无法顺序向下遍历的节点,再在其最接近的有确定启动时间的运算节点,反向向上逐个回推启动时间。至此,将整个数据流图所有运算节点的启动时间。
在根据前一节点求取直接后继节点的启动时间中,如果其中需要通过全局寄存器,还应在求取公式中加上访问寄存器带来的周期延时,同理,在反向回推过程中,也应该考虑前驱节点是否有因访问全局寄存器而导致的延时。
在每次求取完前一节点运算所花费时长后,由第一步中1+x中求得的停顿周期数x,所有运算均会在运算后停顿x周期,因此结果也将在流水线寄存器保留(1+x)周期,因此如果有访存运算在某节点的后继节点,如果需要有访存操作,则根据其调节结果,可以在此(1+x)周期段内任一周期,进行访存。
本发明实施例首先通过分析访存需求,得到1+x计算停顿模式下的x值,然后在此x下,分析各个节点运算时间,并向下传递得到顺序向下的各运算的启动时间。再根据具体的映射情况,因为读写全局寄存器还会有额外的时间开销,需要有全局寄存器访问的还将进行一定的延时调整,最后再在分支处再递归向上将之前向下传递无法得到启动时间的运算反向计算出启动时间,从而得到整个数据流图在具体硬件上时间的启动时间,保证正确的数据依赖关系。提供了阵列在硬件资源有限的情况下访存冲突的一种解决办法,并保证数据依赖关系不被打破,能正确得到所需结果。总而言之,充分利用硬件资源,需要向计算平台同时发射多条指令,在高度并行化地流水计算过程中,完备的同步方案具体有如下优势:
1.本发明设计的空域执行模式下的同步方案中,空域映射指的是在运算阵列下的每个运算单元只负责流水线中的一个运算,即只需要考虑运算单元之间的数据依赖关系,而不需要考虑运算单元内部的数据依赖关系,是多发射流水线中最常用的映射方案。
2.本发明设计的空域执行模式下的同步方案中,同步方案将前端代码通过编译器转换成的中间表达(数据流图)之间定性的箭头符号,转换为了定量的运算周期数差值,可以准确描述各个运算之间的配合关系,让整个阵列的流水线工作状态可以稳定准确的执行大规模、超大规模的计算任务。
3.本发明设计的空域执行模式下的同步方案中,针对大规模高并行化任务,会有硬件资源有限导致的访存冲突问题,因而提供1+x的计算停顿模式,使得阵列可以通过多周期合为一拍,在流水线上按拍执行,提高了每拍的吞吐量,使得在本方案下的计算阵列有了计算更大计算任务的拓展性。
4.本发明设计的空域执行模式下的同步方案中,还提供了针对全局寄存器读写增加阵列互联能力时,所导致的周期延长的调整方法,使得在存在全局寄存器读写时,更灵活的同步计算方法保证数据依赖不被破坏。
5.本发明设计的空域执行模式下的同步方案中,还提供了自动化实现的方法,通过树图的结构,先按照广度优先向下探索,再在交接点反推,从而得到同步方案的具体实施手段,可以很好的应用在工程中。
本发明实施例,通过将硬件ALU运算单元的各运算周期的总结,以树状结构描述编译器前端提取的中间表达,首先根据数据流图的访存节点数量,即LSU操作的数量与硬件资源比较,决定1+x的阵列运算模式,再从数据流图的起点向下推导各个运算所需的启动时间,期间也伴随考虑如果使用全局寄存器导致的额外时间开销,之后再反向将整个数据流图通过数据依赖关系计算出剩余节点的启动时间,最后再根据已经划分好的各LSU所占用运算模式中的特定位置,对LSU运算进行调整,得到最终的启动时间。而阵列的运算模式与启动时间,共同构成了本阵列的同步方案,而其树状结构广度优先的方法可以良好的通过代码自动化实现,因此本发明设计可以应用到以高性能可重构计算平台为代表的具有多运算单元的硬件加速电路中,具有非常高的通用性。
本发明实施例提供了一种可重构处理器数据同步处理方法及装置,该方法还伴随针对合适中间表达的设计的自动化计算方法,可以有效地用于粗粒度可重构处理器架构中,通过灵活的计算数据传递方式,在充分利用其运算资源的前提下,同时解决了数据流在正确的时间传递到正确的计算单元的问题以及对于数据密集型任务不可避免地有限的存储资源带宽会遇到的访存冲突的问题。
该方案通过分析不同类型指令和寄存器读写方式导致的单个运算延时,对后续数据依赖关系的影响,并向下递归地影响更深层次运算的相关配置。在遇到访存需求较大的时候,也提供一种通过启动时间求模调整,按分配的运算周期进行运算的方法,让整个阵列可以解决在硬件资源有限的情况下难以处理数据访存冲突的问题。
本发明实施例中还提供了一种可重构处理器数据同步处理装置,如下面的实施例所述。由于该装置解决问题的原理与可重构处理器数据同步处理方法相似,因此该装置的实施可以参见可重构处理器数据同步处理方法的实施,重复之处不再赘述。参见图11所示的一种可重构处理器数据同步处理装置结构框图,该装置包括:
获取模块71,用于获取第一节点的第一运算时刻信息、可重构处理器各节点的运算周期信息和间隔周期信息;间隔周期信息根据可重构处理器和待处理任务确定;顺序计算模块72,用于根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息;后继节点与第一节点存在直接或间接的依赖关系;逆序计算模块73,用于根据第二运算时刻信息计算除第一节点和多个后继节点外的剩余节点的第三运算时刻信息;控制模块74,用于根据第一运算时刻信息、第二运算时刻信息和第三运算时刻信息控制可重构处理器同步处理待处理任务。
在一个实施例中,参见图12所示的另一种可重构处理器数据同步处理装置结构框图,间隔周期信息包括流水线延时周期信息和停顿周期信息;装置还包括确定模块75,用于:配置流水线延时周期信息;根据可重构处理器确定硬件参数;根据待处理任务确定访存操作参数;根据硬件参数和访存操作参数确定停顿周期信息。
在一个实施例中,顺序计算模块,具体用于利用如下公式根据第一运算时刻信息、运算周期信息和间隔周期信息计算第一节点的多个后继节点的第二运算时刻信息:
Figure BDA0002848156990000121
其中,Start(B)表示节点B的第二运算时刻信息,Start(A)表示节点A的第一运算时刻信息或节点B依赖的节点的第二运算时刻信息,L(A) OP表示节点A的运算周期信息或节点B依赖的节点的运算周期信息,T(A) Reg表示节点A访问寄存器所需要的周期信息或节点B依赖的节点访问寄存器所需要的周期信息,TPipeline表示流水线延时周期信息,x表示停顿周期信息。
在一个实施例中,控制模块,具体用于:获取同步处理规划信息;根据同步处理规划信息和间隔周期信息调整第二运算时刻信息和第三运算时刻信息,以使调整后的第二运算时刻信息和调整后的第三运算时刻信息与同步处理规划信息的差别小于预设差别范围;利用第一运算时刻信息、调整后的第二运算时刻信息和调整后的第三运算时刻信息控制可重构处理器同步处理待处理任务。
本发明实施例还提供一种计算机设备,参见图13所示的计算机设备结构示意框图,该计算机设备包括存储器81、处理器82及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一种可重构处理器数据同步处理方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的计算机设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有执行上述任一种可重构处理器数据同步处理方法的计算机程序。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种可重构处理器数据同步处理方法,其特征在于,包括:
获取第一节点的第一运算时刻信息、所述可重构处理器各节点的运算周期信息和间隔周期信息;所述间隔周期信息根据所述可重构处理器和待处理任务确定;
根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息;所述后继节点与所述第一节点存在直接或间接的依赖关系;
根据所述第二运算时刻信息计算除所述第一节点和所述多个后继节点外的剩余节点的第三运算时刻信息;
根据所述第一运算时刻信息、所述第二运算时刻信息和所述第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
2.根据权利要求1所述的方法,其特征在于,所述间隔周期信息包括流水线延时周期信息和停顿周期信息;
获取间隔周期信息之前,还包括:
配置流水线延时周期信息;
根据可重构处理器确定硬件参数;
根据待处理任务确定访存操作参数;
根据所述硬件参数和所述访存操作参数确定所述停顿周期信息。
3.根据权利要求2所述的方法,其特征在于,包括利用如下公式根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息:
Figure FDA0002848156980000011
其中,Start(B)表示节点B的第二运算时刻信息,Start(A)表示节点A的第一运算时刻信息或节点B依赖的节点的第二运算时刻信息,L(A) OP表示节点A的运算周期信息或节点B依赖的节点的运算周期信息,T(A) Reg表示节点A访问寄存器所需要的周期信息或节点B依赖的节点访问寄存器所需要的周期信息,TPipeline表示流水线延时周期信息,x表示停顿周期信息。
4.根据权利要求1-3任一项所述的方法,其特征在于,根据所述第一运算时刻信息、所述第二运算时刻信息和所述第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务,包括:
获取同步处理规划信息;
根据所述同步处理规划信息和所述间隔周期信息调整所述第二运算时刻信息和所述第三运算时刻信息,以使调整后的第二运算时刻信息和调整后的第三运算时刻信息与所述同步处理规划信息的差别小于预设差别范围;
利用所述第一运算时刻信息、所述调整后的第二运算时刻信息和所述调整后的第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
5.一种可重构处理器数据同步处理装置,其特征在于,包括:
获取模块,用于获取第一节点的第一运算时刻信息、所述可重构处理器各节点的运算周期信息和间隔周期信息;所述间隔周期信息根据所述可重构处理器和待处理任务确定;
顺序计算模块,用于根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息;所述后继节点与所述第一节点存在直接或间接的依赖关系;
逆序计算模块,用于根据所述第二运算时刻信息计算除所述第一节点和所述多个后继节点外的剩余节点的第三运算时刻信息;
控制模块,用于根据所述第一运算时刻信息、所述第二运算时刻信息和所述第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
6.根据权利要求5所述的装置,其特征在于,所述间隔周期信息包括流水线延时周期信息和停顿周期信息;所述装置还包括确定模块,用于:
配置流水线延时周期信息;
根据可重构处理器确定硬件参数;
根据待处理任务确定访存操作参数;
根据所述硬件参数和所述访存操作参数确定所述停顿周期信息。
7.根据权利要求6所述的装置,其特征在于,所述顺序计算模块,具体用于利用如下公式根据所述第一运算时刻信息、所述运算周期信息和所述间隔周期信息计算所述第一节点的多个后继节点的第二运算时刻信息:
Figure FDA0002848156980000021
其中,Start(B)表示节点B的第二运算时刻信息,Start(A)表示节点A的第一运算时刻信息或节点B依赖的节点的第二运算时刻信息,L(A) OP表示节点A的运算周期信息或节点B依赖的节点的运算周期信息,T(A) Reg表示节点A访问寄存器所需要的周期信息或节点B依赖的节点访问寄存器所需要的周期信息,TPipeline表示流水线延时周期信息,x表示停顿周期信息。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述控制模块,具体用于:
获取同步处理规划信息;
根据所述同步处理规划信息和所述间隔周期信息调整所述第二运算时刻信息和所述第三运算时刻信息,以使调整后的第二运算时刻信息和调整后的第三运算时刻信息与所述同步处理规划信息的差别小于预设差别范围;
利用所述第一运算时刻信息、所述调整后的第二运算时刻信息和所述调整后的第三运算时刻信息控制所述可重构处理器同步处理所述待处理任务。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至4任一所述方法的计算机程序。
CN202011518287.9A 2020-12-21 2020-12-21 可重构处理器数据同步处理方法及装置 Active CN112559053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011518287.9A CN112559053B (zh) 2020-12-21 2020-12-21 可重构处理器数据同步处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011518287.9A CN112559053B (zh) 2020-12-21 2020-12-21 可重构处理器数据同步处理方法及装置

Publications (2)

Publication Number Publication Date
CN112559053A true CN112559053A (zh) 2021-03-26
CN112559053B CN112559053B (zh) 2022-06-03

Family

ID=75031056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011518287.9A Active CN112559053B (zh) 2020-12-21 2020-12-21 可重构处理器数据同步处理方法及装置

Country Status (1)

Country Link
CN (1) CN112559053B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114239816A (zh) * 2021-12-09 2022-03-25 电子科技大学 一种卷积神经网络-图卷积神经网络可重构硬件加速架构
CN115933528A (zh) * 2022-11-03 2023-04-07 吉林大学 一种考虑通信时延的龙门机床大惯量动梁同步误差补偿方法
CN116303791A (zh) * 2023-03-22 2023-06-23 合肥申威睿思信息科技有限公司 一种基于加速系统的数据同步方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512088A (zh) * 2015-11-27 2016-04-20 中国电子科技集团公司第三十八研究所 一种可重构的处理器架构及其重构方法
CN105824604A (zh) * 2015-11-24 2016-08-03 中国科学院计算技术研究所 多输入多输出处理器流水线数据同步装置及方法
CN111897580A (zh) * 2020-09-29 2020-11-06 北京清微智能科技有限公司 一种可重构阵列处理器的指令调度系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105824604A (zh) * 2015-11-24 2016-08-03 中国科学院计算技术研究所 多输入多输出处理器流水线数据同步装置及方法
CN105512088A (zh) * 2015-11-27 2016-04-20 中国电子科技集团公司第三十八研究所 一种可重构的处理器架构及其重构方法
CN111897580A (zh) * 2020-09-29 2020-11-06 北京清微智能科技有限公司 一种可重构阵列处理器的指令调度系统及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KIAT W P: "The design of an FPGA-based processor with reconfigurable processor execution structure for internet of things (IoT) applications", 《UTAR》 *
LIU L等: "A survey of coarse-grained reconfigurable architecture and design: Taxonomy, challenges, and applications", 《ACM COMPUTING SURVEYS (CSUR), 2019》 *
LIU L等: "Compilation Method of Reconfigurable Cryptographic Processors", 《RECONFIGURABLE CRYPTOGRAPHIC PROCESSOR. SPRINGER, SINGAPORE, 2018》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114239816A (zh) * 2021-12-09 2022-03-25 电子科技大学 一种卷积神经网络-图卷积神经网络可重构硬件加速架构
CN114239816B (zh) * 2021-12-09 2023-04-07 电子科技大学 一种卷积神经网络-图卷积神经网络可重构硬件加速架构
CN115933528A (zh) * 2022-11-03 2023-04-07 吉林大学 一种考虑通信时延的龙门机床大惯量动梁同步误差补偿方法
CN116303791A (zh) * 2023-03-22 2023-06-23 合肥申威睿思信息科技有限公司 一种基于加速系统的数据同步方法和装置

Also Published As

Publication number Publication date
CN112559053B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
US11449364B2 (en) Processing in a multicore processor with different cores having different architectures
CN112559053B (zh) 可重构处理器数据同步处理方法及装置
US8782645B2 (en) Automatic load balancing for heterogeneous cores
US20090172353A1 (en) System and method for architecture-adaptable automatic parallelization of computing code
JPH01108638A (ja) 並列化コンパイル方式
JP2015207318A (ja) 逐次コンピュータプログラムコードを並列処理する方法及びシステム
Valero-Lara et al. A fast solver for large tridiagonal systems on multi-core processors (lass library)
CN110704193B (zh) 一种适合向量处理的多核软件架构的实现方法及装置
CN113326137B (zh) 深度学习计算方法、装置、芯片及介质
CN114925591A (zh) 基于多面体模型建模的自动并行策略搜索方法及相关设备
Maghazeh et al. Cache-aware kernel tiling: An approach for system-level performance optimization of GPU-based applications
Kirchhoff et al. Optimizing compiler for a specialized real-time floating point softcore processor
Nguyen et al. Lu factorization: Towards hiding communication overheads with a lookahead-free algorithm
Chennupati et al. Automatic evolution of parallel recursive programs
Taghiyev et al. Parallel matrix multiplication for various implementations
Chung et al. Proactive task offloading for load balancing in iterative applications
Nichols et al. Learning to Predict Performance of Parallel Applications AcrossArchitectures
Singh Automatic parallelization using OpenMP API
VIANELLO Development of a multi-GPU Navier-Stokes solver
Vachálek et al. Numerical acceleration of data processing using MATLAB for the needs of expert systems
Sudduth OpenMP device mapping prediction using GNNs
CN118070424A (zh) 一种船舶三维水弹性高效并行计算方法
Besnard et al. Towards Smarter Schedulers: Molding Jobs into the Right Shape via Monitoring and Modeling
Bertozzi et al. Tools for code optimization and system evaluation of the image processing system PAPRICA-3
Nicely Parallel implementation of resampling methods for particle filtering on graphics processing units

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