CN109471732B - 一种面向cpu-fpga异构多核系统的数据分配方法 - Google Patents

一种面向cpu-fpga异构多核系统的数据分配方法 Download PDF

Info

Publication number
CN109471732B
CN109471732B CN201811398237.4A CN201811398237A CN109471732B CN 109471732 B CN109471732 B CN 109471732B CN 201811398237 A CN201811398237 A CN 201811398237A CN 109471732 B CN109471732 B CN 109471732B
Authority
CN
China
Prior art keywords
data
array
port
cache
time
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.)
Active
Application number
CN201811398237.4A
Other languages
English (en)
Other versions
CN109471732A (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.)
Shandong University
Original Assignee
Shandong 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 Shandong University filed Critical Shandong University
Priority to CN201811398237.4A priority Critical patent/CN109471732B/zh
Publication of CN109471732A publication Critical patent/CN109471732A/zh
Application granted granted Critical
Publication of CN109471732B publication Critical patent/CN109471732B/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

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

本公开公开了一种面向CPU‑FPGA异构多核系统的数据分配方法,包括:将源代码通过Clang前端编译成低级虚拟机LLVM的中间码;用低级虚拟机LLVM执行低级虚拟机LLVM的中间码,并接收输入数据,从而获取数据访问的轨迹和指令轨迹;通过指令轨迹生成动态数据依赖图DDDG,以表示FPGA内核的控制流和数据流;将获得的数据访问轨迹送入缓存模拟器CacheSimulator,获取缓存冲突图CCG;构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图CCG,对整数线性规划公式进行求解,得到最优的数据分配方案。

Description

一种面向CPU-FPGA异构多核系统的数据分配方法
技术领域
本公开涉及一种面向CPU-FPGA异构多核系统的数据分配方法。
背景技术
本部分的陈述仅仅是提高了与本公开相关的背景技术,并不必然构成现有技术。
在从低功耗嵌入式系统到高性能计算体系结构的计算机系统中,现场可编程门阵列(Field-programmable Gate Array,FPGA)成为越来越受欢迎的设计选择。传统的带有寄存器传输级别(Register-Transfer Level,RTL)编程的FPGA设计需要大量的体系结构和电路经验,这是容易出错和耗时的。高级综合(High-level Synthesis,HLS)工具将C/C++内核编译为相应的硬件描述语言(Hardware Description Language,HDL)模块。近年来,HLS工具在复杂FPGA异构系统设计中得到了广泛的应用,缩短了上市时间,降低了系统设计复杂度。
HLS工具可以为各种设计目标(包括性能、能源效率或硬件成本)优化生成HDL代码。商业的HLS工具(例如Vivado HLS)和开源工具(例如LegUp)都为优化技术的选择提供了内置的指令(如Loop unrolling循环展开、Pipelining流水线操作和Array partitioning数组分区)。目前的工作提出了启发式方法,从而在HLS中快速设计空间分配来为一个给定的核找到它的接近最优的配置。但是,这些工作的目标是管理逻辑资源,例如查找表(Look-Up-Table,LUTs)和触发器(Flip-flop,FF)。另一方面,对于深层神经网络(Deep NeuralNetwork,DNN)和视频处理等内存密集型应用程序来说,内存管理(尤其是受限的片上内存资源)变得越来越重要。
HLS提供了多个内置指令来平衡资源和性能,其中数组的默认分配是BRAM。当数组的容量超过BRAM的容量时,程序员需要手动修改源代码。由于设计空间的复杂性,系统程序员做出的人工数据分配可能会导致并不优化的系统性能。
发明内容
为了解决现有技术的不足,本公开提供了一种面向CPU-FPGA异构多核系统的数据分配方法;
面向CPU-FPGA异构多核系统,包括:CPU处理模块和FPGA,其中CPU处理模块称为处理系统PS,是ARM片上系统的部分,FPGA称为可编程逻辑PL,所述CPU处理模块上设有外部设备、APU模块、L2缓存和DDR控制器;所述FPGA上设有存储阵列Block RAM;所述L2缓存通过加速一致性接口AXIACP与可编程逻辑PL连接;所述DDR控制器通过AXIHP接口与可编程逻辑PL连接。
加速一致性接口AXIACP,是一个兼容AXI3的64位从机接口,为可编程逻辑PL提供异步缓存一致性,能直接访问PS的入口;AXI HP接口,是一种AXI3.0标准接口,共有4个,PL模块作为主设备进行连接;块随机存储器Block RAM是PL模块的存储器阵列。
一种面向CPU-FPGA异构多核系统的数据分配方法,包括:
将源代码通过Clang前端编译成低级虚拟机LLVM的中间码;
用低级虚拟机LLVM执行低级虚拟机LLVM的中间码,并接收输入数据,从而获取数据访问的轨迹和指令轨迹;
通过指令轨迹生成动态数据依赖图DDDG,以表示FPGA内核的控制流和数据流;
将获得的数据访问轨迹送入缓存模拟器CacheSimulator,获取缓存冲突图CCG;
构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图CCG,对整数线性规划公式进行求解,得到最优的数据分配方案。
数据访问轨迹,包括用于访问物理索引或物理标记缓存的物理地址;
指令轨迹,包括具体机器指令的信息和指令被调用返回的过程。
动态数据依赖图(DynamicData Dependence Graphs,DDDGs)是从程序跟踪中生成的,用于表示没有进行过RTL级实现的FPGAkernel的控制流和数据流,DDDG是一个有向无环图,其中图的节点表示在执行指令时发生的计算,边表示程序动态执行中指令之间的依赖关系。
缓存模拟器(CacheSimulator)是用来模拟数据和指令进出缓存的过程,计算内存访问模式的内存写和读的数量,计算缓存命中和未命中的数量以及主内存读写的数量。
缓存冲突图(Cache ConflictGraph,CCG)是从缓存模拟器中生成的,用来模拟数据指令进出cache的过程,是包含两个或多个冲突l-block块的缓存集,其中l-block(cacheline blocks,缓存行块)是同一基本块中映射到指令缓存中相同缓存集的连续代码序列。
构建缓存冲突图来估计每一对数组之间的总体缓存干扰。l-block是由基本块与缓存行的交集形成的。l-block中的所有指令总是按顺序一起执行。
将该问题转化为整数线性规划公式,其中得到的最优数据分配方案被写入’.tcl’配置文件,以便后续的HLS编译。
作为一些可能的实现方式,所述获取数据访问的轨迹和指令轨迹,使用llvm::Pass模块以获得数据访问的轨迹和指令跟踪。
在低级虚拟机LLVM的架构中,llvm::Pass模块的作用是优化LLVM的中间码,它作用于LLVMIR,处理IR,分析IR,寻找优化的机会修改IR产生优化的代码。
作为一些可能的实现方式,使用Aladdin模拟器从指令轨迹生成DDDGs,该DDDGs代表FPGA内核的控制和数据流,Aladdin模拟器是一种功率性能加速器模拟器,它可以进行定制架构的大设计空间探索。
作为一些可能的实现方式,构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图CCG,对整数线性规划公式进行求解,得到最优的数据分配方案的具体步骤为:
假设总的执行时间Ttotal估计为:
Figure BDA0001875700760000031
其中,B是所有基本块的集合,
Figure BDA0001875700760000032
是基本块bbi的执行次数,
Figure BDA0001875700760000033
表示基本块的执行时间,
Figure BDA0001875700760000034
是指基本块中端口干扰的时间开销变量,Tcache是表示的总的缓存干扰所花费的时间。
基本块,是指程序顺序执行的语句序列,只有一个程序执行入口和一个程序执行出口,程序执行入口就是语句序列的第—个语句,程序执行出口就是语句序列的最后一个语句。对一个基本块来说,执行时只从程序执行入口进入,从程序执行出口退出。
在BRAM容量限制下,最小化总的执行时间Ttotal
Figure BDA0001875700760000035
其中,in_bram(ai)表示是否将数组ai分配给BRAM;N是内核中数组的总数,size(ai)是数组ai的大小,sizebram是BRAM总容量的大小。
整数线性规划公式ILP的求解结果即为最优的数据分配方案。
Figure BDA0001875700760000036
其中,in_bram(ai)=1表示数组ai分配给BRAM;in_bram(ai)=0表示数组ai未分配给BRAM;
假设每个数组都从一个固定的端口访问,则有
Figure BDA0001875700760000037
作为一些可能的实现方式,
Figure BDA0001875700760000038
其中,bbi表示程序的基本块;
Figure BDA0001875700760000039
表示基本块的执行时间,sink(bbi)是bbi的唯一汇聚节点,
Figure BDA0001875700760000049
表示bbi的唯一汇聚节点的执行时间,Tn表示节点n的执行时间,pred(n)是指遍历基本块中n的所有前任节点。
bbi的唯一汇聚节点的执行时间
Figure BDA0001875700760000048
如果执行的是加载指令,则按照加载指令的计算方法来计算执行时间;如果执行的是计算指令,则由高级综合工具HLS来提供执行时间;
节点n的执行时间Tn与bbi的唯一汇聚节点的执行时间
Figure BDA00018757007600000410
计算方法一致;
如果节点表示的是数组ai的内存加载指令,其执行时间
Figure BDA00018757007600000411
则有如下计算方法:
Figure BDA0001875700760000041
其中,
Figure BDA0001875700760000042
Figure BDA0001875700760000043
其中,
Figure BDA0001875700760000044
表示加载数组ai所花费的时间,
Figure BDA0001875700760000045
表示数组ai存储在BRAM里面时所花费的加载时间
Figure BDA0001875700760000046
表示当数组ai存储在DDR控制器上时,通过AXI ACP端口和L2cache对数据进行读写访问所花费的时间,
Figure BDA0001875700760000047
表示当数组ai存储在DDR控制器上时,通过AXI HP端口和DDR控制器对数据进行读写访问所花费的时间。
in_bram(ai)表示数组ai是否存储在BRAM里,in_acp(ai)表示数组ai是否存在DDR中并通过ACP端口访问,in_hp[k]i表示数组ai是否存在DDR中并通过HP端口访问,由于面向Xilinx Zynq-7000 SoC的低成本开发板Zedboard上有四个HP端口,因此k的取值范围是0到3。
in_acp(ai)=1表示数组ai存放在DDR中并通过ACP端口访问,in_acp(ai)=0表示数组ai不通过ACP端口访问。
in_hp[0](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第一个来进行数据的传输;二进制变量in_hp[0](ai)=1表示数组ai不通过第1个HP端口进行访问;
in_hp[1](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第二个来进行数据的传输;二进制变量in_hp[1](ai)=0表示数组ai不通过第2个HP端口进行访问;
in_hp[2](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第三个来进行数据的传输;二进制变量in_hp[2](ai)=0表示数组ai不通过第3个HP端口进行访问;
in_hp[3](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第四个来进行数据的传输;二进制变量in_hp[3](ai)=0表示数组ai不通过第4个HP端口进行访问;
BRAMr是指对BRAM里的数据进行读取操作所用的时间;
Figure BDA0001875700760000051
是指对DDR控制器中的burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作所用的时间;
Figure BDA0001875700760000052
是指对DDR中的非burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作命中情况下所用的时间;
Figure BDA0001875700760000053
是指对DDR控制器中的非burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作未命中情况下所用的时间;
Figure BDA0001875700760000054
是指对DDR控制器中的非burst模式的数据通过HP端口和DDR控制器进行数据的读取访问操作所用的时间;
对于相应的加载指令,如果数组访问模式是突发模式,则burst(ai)=1;否则,burst(ai)=0;HitRate(ai)是缓存模拟得到的指令的L2缓存命中率,MissRate(ai)是缓存模拟得到的指令的L2缓存未命中率。
作为一些可能的实现方式,定义端口干扰的时间开销变量
Figure BDA0001875700760000055
Figure BDA0001875700760000056
其中,par为DDDGs中的一组并行访问数组对象,P(bb)为基本块bb中的所有存在端口争用的并行数组的集合;costacp是指两个数组在ACP端口存在端口争用时的时间延迟,costHP是指两个数组在HP端口存在端口争用时的时间延迟。
两个阵列ai和aj,只有当它们都被分配到ACP端口,才有缓存干扰,因此定义标量:
Figure BDA0001875700760000057
总缓存干扰成本Tcache估计为
Figure BDA0001875700760000058
其中,N是内核中数组的总数,conflictCount(ai,aj)是缓存冲突图中两个数组之间的缓存冲突数,以及每个冲突的代价costcc
Figure BDA0001875700760000059
其中,conflict(ai,aj)表示数组ai和aj是否存在缓存冲突的情况,
Figure BDA0001875700760000061
Figure BDA0001875700760000062
指内存访问延迟参数,其中
Figure BDA0001875700760000063
是指对DDR中的非burst模式的数据通过ACP端口和L2缓存进行读取访问操作未命中情况下所用的时间,
Figure BDA0001875700760000064
是指对DDR中的非burst模式的数据通过ACP端口和L2缓存进行读取访问操作命中情况下所用的时间。
与现有技术相比,本公开的有益效果是:
除了访问频率和局域性等传统因素需要考虑之外,还需要捕获其他体系结构计算特征,以获得最优分配方案。在实际平台上的实验结果表明,上述所提出的方法能够显著提高系统的整体性能。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为一个或多个实施方式的系统架构图;
图2为一个或多个实施方式的方法流程图;
图3为实验一结果图;
图4为实验二结果图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
专业术语介绍:
低级虚拟机(Low Level Virtual Machine,LLVM)
中间码(Intermediate Representation,IR)
动态数据依赖图(Dynamic Data Dependence Graphs,DDDG)
处理系统(Processing System,PS)
可编程逻辑(Progarmmable Logic,PL)
加速一致性(Accelerator Coherency Port,ACP)
高性能(High Performance,HP)
DDDG是一个有向无环图,其中图的节点表示在执行指令时发生的计算,边表示程序动态执行中指令之间的依赖关系。其中唯一汇聚节点相当于一个基本块的结束节点,某一个节点的前任节点是指所有指向这个点的边的源点。
如图1所示,目前的CPU-FPGA异构片上体系结构(Heterogeneous MultiprocessorSystem-On-Chip,HMPSocs)通常采用复杂的内存层次结构来处理应用程序的各种内存访问行为。每个运行在FPGA编程逻辑(Programmable Logic,PL)上的内核都能够从FPGA片上BRAM中访问数据,或者通过加速器一致性接口ACP和CPU共享二级缓存来从片下DDR(DoubleData Rate SDRAM)存储中访问数据,或通过高性能端口(High Performance Port,HP)从片下DDR存储中读取数据,这样就绕过了CPU缓存。
本发明提出的方法全面地捕获了影响内存子系统性能的各种因素,包括FPGA计算的特点、内存访问模式和体系结构属性。提出的整数线性规划(Integer LinearProgramming,ILP)公式生成了一个最优的数据分配方案,可以直接无缝地集成到关于FPGA的集成设计工具的HLS环境中。
一种针对CPU-FPGA HMPSocs的自动数据分配的方法,如图2所示,包括以下步骤:
(1)源代码通过Clang前端编译到低级虚拟机(LLVM)中间表示(IR)中,输入数据集进行模拟执行。
(2)通过指令跟踪生成动态数据依赖图DDDG,以表示FPGA内核的控制流和数据流。同时,将获得的数据访问轨迹送入缓存模拟器,获取缓存干扰信息,生成缓存干扰图以及一些参数。
(3)将该问题转化为整数线性规划(ILP)公式,其中得到的最优数据分配方案被写入’.tcl’配置文件,以便后续的高级综合工具编译。
本发明总体架构:图1显示了Xilinx Zynq-7000全可编程SoC的体系结构概述。每个运行在FPGA编程逻辑(PL)上的内核都能够从FPGA片上BRAM中访问数据,或者通过加速器一致性接口ACP和CPU共享二级缓存来从片下DDR存储中访问数据,或通过高性能端口(HP)从片下DDR存储中读取数据,这样就绕过了CPU缓存。
实施例1:
为了了解CPU-FPGA HMPSoC的内存层次性能,构建一个内存访问延迟模型。
在100MHz时钟频率下,使用Xilinx Zynq-7020 SoC,为了测量单个内存层次结构的访问延迟,设计了一个微基准测试FPGA内核,以执行数百万次特定类型的内存访问。例如,通过ACP重复访问一个巨大的矩阵列排序的内核可以用来测量平均ACP读取未命中(即L2高速缓存读取未命中)延迟。
根据给定L2高速缓存的大小来设定的矩阵的大小确保了所有列排序访问会导致缓存未命中。
实验结果如表1所示:
表1
Figure BDA0001875700760000081
其中的参数将被用于步骤(3)的某些公式运算中,例如:
基本块的执行时间变量的定义中:
Figure BDA0001875700760000082
如果一个节点表示数组ai的内存加载指令(类似于存储指令),则有:
Figure BDA0001875700760000083
其中,
Figure BDA0001875700760000084
Figure BDA0001875700760000091
Figure BDA0001875700760000092
上述公式中的内存访问延迟(如BRAMr
Figure BDA0001875700760000098
等)则是使用此实验的参数结果进行运算。
此外,本实验注意到两点:
第一点:AXI协议支持“突发模式”数据事务,其中多个数据项基于一个地址进行传输。在这种模式下,对于具有连续内存地址的多个连续数据事务,只有一个地址事务。
高级综合工具(例如HLS工具)会自动检测每个数组访问指令是否可以在突发模式下操作,并生成相应的HDL代码,这是有利于系统性能提升的。根据我们的测量结果,如表所示,通过BRAM,ACP(如
Figure BDA0001875700760000093
),或HP(如
Figure BDA0001875700760000094
)访问具有突发模式的阵列访问的区别不大。
基于上述,在步骤(3)中进行设定,即对于相应的加载指令,如果数组访问模式是突发模式,我们有burst(ai)=1;否则,burst(ai)=0。
另外,在Zedboard平台上,L2cache命中和未命中之间的延迟差异(例如
Figure BDA0001875700760000095
Figure BDA0001875700760000096
)相对于典型的CPU架构来说不那么显著,这可能是由于通过AXI协议实现了L2缓存访问机制。
第二点:图3显示了主端口数量(从并行FPGA内核读取请求)和最长内核执行时间(由于干扰延迟)之间的关系。可以看到由于总线和控制器的干扰,单个AXI从端口(ACP或HP)上的内存访问延迟与该端口的并行访问数量成正比。Zedboard提供了4个独立的HP端口,因此,在HP端口之间分布并行HP请求,通常也会带来更好的性能。
因此在步骤(3)中的变量设定中,考虑到端口干扰延迟与对端口的并行访问数量成正比,将端口争用视为具有潜在端口干扰的并行内存访问的额外执行时间开销。设定端口争用延迟:
Figure BDA0001875700760000097
实施例2:
本实施例的目的是展示数据的分配对基于Zynq-7020 SoC的Zedboard平台的系统性能有重要影响。
实验所用的是从Polybench得到的通用矩阵乘法(GEMM)的激励示例:
算法1矩阵乘算法
Figure BDA0001875700760000101
我们假设3个阵列A,B,C中最多有1个阵列可以放在芯片上的BRAMs中。
实验结果如图4所示,其中AaBbCh表示A、B、C阵列分别分配到ACP、BRAM、HP端口的分配方案。
结果表明,最优分配(AbCaBh)比最劣分配(AhChBb)加速了3.14倍。
另外可以看出,有些结果可能与传统的基于CPU的SPM分配方案背道而驰。
(1)与其他两个阵列相比,阵列C明显具有更高的读写频率。然而,所有将阵列C映射到片上BRAMs的方案都非最优性能。
(2)相比于B和C,在读写方面虽然A阵列具有较好的时间局部性,但我们不应该通过ACP和L2缓存访问A。在实验中,最好的方案是将A数组分配给BRAMs,因为A的访问是唯一的非突发事务。
如图4所示,尽管使用更快的ACP可以对数据有更多的访问,但AaChBb方案的性能优于AaCaBb。这是因为当多个并行(非突发)访问被映射到同一从属端口(ACP或HPs之一)时,端口干扰会阻碍特定端口的吞吐量。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (5)

1.一种面向CPU-FPGA异构多核系统的数据分配方法,其特征是,包括:
将源代码通过Clang前端编译成低级虚拟机LLVM的中间码;
用低级虚拟机LLVM执行低级虚拟机LLVM的中间码,并接收输入数据,从而获取数据访问的轨迹和指令轨迹;
通过指令轨迹生成动态数据依赖图DDDG,以表示FPGA内核的控制流和数据流;
将获得的数据访问轨迹送入缓存模拟器Cache Simulator,获取缓存冲突图CCG;
构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图CCG,对整数线性规划公式进行求解,得到最优的数据分配方案。
2.如权利要求1所述的方法,其特征是,所述获取数据访问的轨迹和指令轨迹,使用llvm::Pass模块以获得数据访问的轨迹和指令跟踪。
3.如权利要求1所述的方法,其特征是,构建整数线性规划公式,根据动态数据依赖图DDDG和缓存冲突图CCG,对整数线性规划公式进行求解,得到最优的数据分配方案的具体步骤为:
假设总的执行时间Ttotal估计为:
Figure FDA0002979970730000011
其中,B是所有基本块的集合,
Figure FDA0002979970730000012
是基本块bbi的执行次数,
Figure FDA0002979970730000013
表示基本块的执行时间,
Figure FDA0002979970730000014
是指基本块中端口干扰的时间开销变量,Tcache是表示的总的缓存干扰所花费的时间;
在BRAM容量限制下,最小化总的执行时间Ttotal
Figure FDA0002979970730000015
其中,in_bram(ai)表示是否将数组ai分配给BRAM;N是内核中数组的总数,size(ai)是数组ai的大小,sizebram是BRAM总容量的大小;
整数线性规划公式ILP的求解结果即为最优的数据分配方案;
Figure FDA0002979970730000016
其中,in_bram(ai)=1表示数组ai分配给BRAM;in_bram(ai)=0表示数组ai未分配给BRAM;
假设每个数组都从一个固定的端口访问,则有
Figure FDA0002979970730000021
其中,in_acp(ai)表示数组ai是否存在DDR中并通过ACP端口访问,in-hp[k](ai)表示数组ai是否存在DDR中并通过HP端口访问。
4.如权利要求3所述的方法,其特征是,
Figure FDA0002979970730000022
其中,bbi表示程序的基本块;
Figure FDA0002979970730000023
表示基本块的执行时间,sink(bbi)是bbi的唯一汇聚节点,
Figure FDA0002979970730000024
表示bbi的唯一汇聚节点的执行时间,Tn表示节点n的执行时间,pred(n)是指遍历基本块中n的所有前任节点;
bbi的唯一汇聚节点的执行时间
Figure FDA0002979970730000025
如果执行的是加载指令,则按照加载指令的计算方法来计算执行时间;如果执行的是计算指令,则由高级综合工具HLS来提供执行时间;
节点n的执行时间Tn与bbi的唯一汇聚节点的执行时间
Figure FDA0002979970730000026
计算方法一致;
如果节点表示的是数组ai的内存加载指令,其执行时间
Figure FDA0002979970730000027
则有如下计算方法:
Figure FDA0002979970730000028
其中,
Figure FDA0002979970730000029
Figure FDA00029799707300000210
Figure FDA00029799707300000211
其中,
Figure FDA00029799707300000212
表示加载数组ai所执行的时间,
Figure FDA00029799707300000213
表示数组ai存储在BRAM里面时所花费的加载时间,
Figure FDA00029799707300000214
表示当数组ai存储在DDR控制器上时,通过AXI ACP端口和L2 cache对数据进行读写访问所花费的时间,
Figure FDA00029799707300000215
表示当数组ai存储在DDR控制器上时,通过AXI HP端口和DDR控制器对数据进行读写访问所花费的时间;
in_bram(ai)表示数组ai是否存储在BRAM里;
in_acp(ai)=1表示数组ai存放在DDR中并通过ACP端口访问,in_acp(ai)=0表示数组ai不通过ACP端口访问;
in_hp[0](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第一个来进行数据的传输;二进制变量in_hp[0](ai)=0表示数组ai不通过第1个HP端口进行访问;
in_hp[1](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第二个来进行数据的传输;二进制变量in_hp[1](ai)=0表示数组ai不通过第2个HP端口进行访问;
in_hp[2](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第三个来进行数据的传输;二进制变量in_hp[2](ai)=0表示数组ai不通过第3个HP端口进行访问;
in_hp[3](ai)=1表示数组ai存放在DDR中分配给4个HP端口中的第四个来进行数据的传输;二进制变量in_hp[3](ai)=0表示数组ai不通过第4个HP端口进行访问;
BRAMr是指对BRAM里的数据进行读取操作所用的时间;
Figure FDA0002979970730000031
是指对DDR控制器中的burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作所用的时间;
Figure FDA0002979970730000032
是指对DDR中的非burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作命中情况下所用的时间;
Figure FDA0002979970730000033
是指对DDR控制器中的非burst模式的数据通过AXI ACP端口和L2缓存进行读取访问操作未命中情况下所用的时间;
Figure FDA0002979970730000034
是指对DDR控制器中的非burst模式的数据通过HP端口和DDR控制器进行数据的读取访问操作所用的时间;
对于相应的加载指令,如果数组访问模式是突发模式,则burst(ai)=1;否则,burst(ai)=0;HitRate(ai)是缓存模拟得到的指令的L2缓存命中率,MissRate(ai)是缓存模拟得到的指令的L2缓存未命中率。
5.如权利要求3所述的方法,其特征是,定义端口干扰的时间开销变量
Figure FDA0002979970730000035
Figure FDA0002979970730000036
其中,par为DDDGs中的一组并行访问数组对象,P(bb)为基本块bb中的所有存在端口争用的并行数组的集合;costacp是指两个数组在ACP端口存在端口争用时的时间延迟,cosLHP是指两个数组在HP端口存在端口争用时的时间延迟;
两个数组ai和aj,只有当它们都被分配到ACP端口,才有缓存干扰,因此定义标量:
Figure FDA0002979970730000037
总缓存干扰成本Tcache估计为
Figure FDA0002979970730000041
其中,N是内核中数组的总数,conflictCount(ai,aj)是缓存冲突图中两个数组之间的缓存冲突数,以及每个冲突的代价costcc
Figure FDA0002979970730000042
其中,conflict(ai,aj)表示数组ai和aj是否存在缓存冲突的情况,
Figure FDA0002979970730000043
Figure FDA0002979970730000044
指内存访问延迟参数,其中
Figure FDA0002979970730000045
是指对DDR中的非burst模式的数据通过ACP端口和L2缓存进行读取访问操作未命中情况下所用的时间,
Figure FDA0002979970730000046
是指对DDR中的非burst模式的数据通过ACP端口和L2缓存进行读取访问操作命中情况下所用的时间。
CN201811398237.4A 2018-11-22 2018-11-22 一种面向cpu-fpga异构多核系统的数据分配方法 Active CN109471732B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811398237.4A CN109471732B (zh) 2018-11-22 2018-11-22 一种面向cpu-fpga异构多核系统的数据分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811398237.4A CN109471732B (zh) 2018-11-22 2018-11-22 一种面向cpu-fpga异构多核系统的数据分配方法

Publications (2)

Publication Number Publication Date
CN109471732A CN109471732A (zh) 2019-03-15
CN109471732B true CN109471732B (zh) 2021-06-01

Family

ID=65673112

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811398237.4A Active CN109471732B (zh) 2018-11-22 2018-11-22 一种面向cpu-fpga异构多核系统的数据分配方法

Country Status (1)

Country Link
CN (1) CN109471732B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109901595A (zh) * 2019-04-16 2019-06-18 山东大学 一种基于单目摄像头和树莓派的自动驾驶系统及方法
US11693708B2 (en) * 2019-04-24 2023-07-04 Netflix, Inc. Techniques for increasing the isolation of workloads within a multiprocessor instance
WO2020227883A1 (zh) * 2019-05-13 2020-11-19 云图有限公司 一种数据处理方法、装置及系统
US11941433B2 (en) 2020-03-24 2024-03-26 Via Technologies Inc. Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor
TWI811620B (zh) * 2020-03-24 2023-08-11 威盛電子股份有限公司 運算裝置與資料處理方法
CN113127100B (zh) * 2021-05-14 2022-07-12 武汉深之度科技有限公司 一种异构程序执行方法、装置、计算设备及可读存储介质
CN113971022B (zh) * 2021-12-22 2022-03-18 成都航天通信设备有限责任公司 一种应用全可编程片上系统的无线信号处理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527707B2 (en) * 2009-12-25 2013-09-03 Shanghai Xin Hao Micro Electronics Co. Ltd. High-performance cache system and method
CN102681890B (zh) * 2012-04-28 2015-09-09 中国科学技术大学 一种应用于线程级推测并行的限制性值传递方法和装置
CN103513957B (zh) * 2012-06-27 2017-07-11 上海芯豪微电子有限公司 高性能缓存方法
CN103150265B (zh) * 2013-02-04 2015-10-21 山东大学 面向嵌入式片上异构存储器的细粒度数据分配方法
CN105242958B (zh) * 2015-11-25 2018-12-07 哈尔滨工业大学 一种虚拟试验系统与hla仿真系统数据交换方法

Also Published As

Publication number Publication date
CN109471732A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
CN109471732B (zh) 一种面向cpu-fpga异构多核系统的数据分配方法
Nugteren et al. A detailed GPU cache model based on reuse distance theory
Hadidi et al. Cairo: A compiler-assisted technique for enabling instruction-level offloading of processing-in-memory
Kuznik et al. LBM based flow simulation using GPU computing processor
Panda et al. Local memory exploration and optimization in embedded systems
Panda et al. Data memory organization and optimizations in application-specific systems
US8706964B1 (en) Automatic generation of cache-optimized code
Korinth et al. The TaPaSCo open-source toolflow for the automated composition of task-based parallel reconfigurable computing systems
Al Kadi et al. FGPU: An SIMT-architecture for FPGAs
Mathew et al. Design of a parallel vector access unit for SDRAM memory systems
Czajkowski et al. OpenCL for FPGAs: Prototyping a compiler
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US20220100660A1 (en) Reconfigurable cache architecture and methods for cache coherency
US9959379B2 (en) Hybrid compilation for FPGA prototyping
Zuckerman et al. Cohmeleon: Learning-based orchestration of accelerator coherence in heterogeneous SoCs
Fell et al. The marenostrum experimental exascale platform (MEEP)
JP2014523569A (ja) 拡張可能な並列プロセッサのためのシステム、方法、および、装置
Hosseinabady et al. Heterogeneous FPGA+ GPU embedded systems: Challenges and opportunities
Van Lunteren et al. Coherently attached programmable near-memory acceleration platform and its application to stencil processing
Du et al. A comprehensive memory management framework for CPU-FPGA heterogenous SoCs
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
Ma et al. GPU parallelization of unstructured/hybrid grid ALE multigrid unsteady solver for moving body problems
US20230065842A1 (en) Prediction and optimization of multi-kernel circuit design performance using a programmable overlay
Forlin et al. Sim2PIM: A complete simulation framework for processing-in-memory
Arasteh Transaction-Level Modeling of Deep Neural Networks for Efficient Parallelism and Memory Accuracy

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