用于可重构处理器的阵列间数据传输结构与调度方法转让专利

申请号 : CN201610992998.7

文献号 : CN106569968B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高静杜增权史再峰罗韬

申请人 : 天津大学

摘要 :

本发明涉及计算机技术领域,为提出一种用于可重构处理器的阵列间数据传输结构,该方法可以有效降低在可重构处理器频繁传输数据时的可重构阵列等待时间,提高中间数据的传输效率,加速可重构处理器的运行速度。为此,本发明提出一种用于可重构处理器的阵列间数据传输结构,适用于N个同构或者异构阵列的架构组成的处理器架构,具体包括N个阵列间存储器以及与之相连的数据存取仲裁模块;所述阵列间存储器是一个单向数据传输结构,承担前级阵列的数据存储和后级阵列的数据读取;所述数据存取仲裁模块具有数据存入和数据读取两个模块。本发明主要应用于计算机设计制造。

权利要求 :

1.一种用于可重构处理器的阵列间数据传输结构,其特征是,包括N个阵列间存储器以及与之相连的数据存取仲裁模块;

所述阵列间存储器是一个单向数据传输结构,承担前级阵列的数据存储和后级阵列的数据读取,阵列间存储器将多个阵列连接起来形成单向回路,阵列间存储器具有m个数据存储单元,每个数据存储单元结构相同,具有单独的数据存取仲裁模块,每个数据存储单元具多个端口:输入数据端口、输入地址端口、输入使能端口、输出数据端口、输出地址端口、输出使能端口,输入和输出两组端口能够实现数据的并行读取操作,采用读优先的模式;

所述数据存取仲裁模块具有数据存入和数据读取两个模块,两个模块同时运作,数据存入与读取模块的用于判断阵列中多个处理单元的请求,内部为不同的处理单元设置优先级,阵列间存储器中不同的数据存储单元连接的仲裁模块对同样的处理单元的优先级不同,数据存入仲裁模块包括有以下几个端口:处理单元阵列请求端口、输入数据端口和输入地址端口,这三类端口的个数与处理单元个数相同;使能端口,与共享存储器的片选端口相连;数据输入端口,与共享存储器的数据输入端口相连;地址请求端口,与共享存储器的输入地址端口相连,数据读取仲裁模块包括有以下几个端口:处理阵列请求端口、地址请求端口,端口个数与处理单元个数相同;数据端口,与共享存储器的数据输出端口相连;地址请求端口,与共享存储器相连;使能端口,与共享存储器的片选端口相连;数据端口,与阵列相连;目标处理单元端口,与阵列相连,表示数据的去向。

2.一种用于可重构处理器的阵列间数据传输调度方法,其特征是,调度的步骤为:在阵列的配置信息准备阶段,将执行后续核心函数kernel的阵列的配置信息数据来源设置为阵列间存储器,外部主控核首先使能负责执行算法第一个kernel的阵列,在阵列执行完一遍后,外部主控核会接收到相应的完成信号,此时负责执行第二个kernel的阵列将被使能,以此类推;执行第一个kernel的阵列在执行一遍后同样会被再次使能,读取其他数据进行运算,并存储到阵列间存储器中,为了尽量不影响执行第二个kernel阵列的数据读取,二次运算的数据起始地址起于一次运算完成数据存储地址后加1。

说明书 :

用于可重构处理器的阵列间数据传输结构与调度方法

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及用于可重构处理器的阵列间数据传输结构与调度方法。

背景技术

[0002] 可重构处理器是一种面向多种应用、性能高、功耗低的并行处理器,兼有专用集成电路与通用处理器的速度快和灵活度高的优点。通常可重构结构由主处理器耦合一组可重构阵列来组成,主处理器负责任务的调度,而可重构阵列主要负责算法的运算。可重构阵列作为可重构处理器的核心计算单元,对于处理器的性能有着决定性的影响。
[0003] 在多媒体信息处理和现代通信信息处理中,视觉处理算法都具有数据密集、计算密集等适用于大规模并行计算的特点。一些现有的可重构处理器采用多阵列的结构,将不同的核心函数(kernel)映射到不同的阵列上去,多个阵列的kernel组合为一个完整的算法,以此提高算法的执行效率。可重构处理器的架构具有多种形式,其中一种多阵列架构如图1所示,该架构包括有4个阵列。外部主控核向外部数据传输控制单元发送命令,外部数据传输控制单元接收命令后从外部数据存储器中获取指定地址的数据并分配到各个阵列中去。在可重构阵列中,内部共享存储器中存有阵列计算的原始数据。在阵列执行运算过程中,阵列中的各个计算单元(Processing Element,PE)会根据配置信息的指令读取内部共享存储器中的数据,同时将最终的计算结果存回到内部共享存储器中。最终阵列执行完毕后,内部共享存储器中的数据会重新经过外部数据传输控制单元被读出到外部存储设备中。如果被读出的数据是算法的中间数据,那么这些数据将会被搬运到被配置好的其他可重构阵列中去。或者这些数据仍然保存在内部共享存储器中,而更换当前阵列的配置信息。
[0004] 可重构处理器已经发展到众核处理器架构阶段,多个阵列的累加往往不能发挥相应倍数的性能。这主要在于多个阵列的数据来源是同一个设备,如果阵列之间难以通信或者通信代价较大,处理器性能就会收到相应的限制。这往往就成为了处理器性能提升的瓶颈。如同前述的架构,阵列之间需要通过外部存储设备来间接完成数据的传输。频繁的中间数据传输时,可重构阵列处于等待的状态,浪费了大量的时间。而更换配置信息虽然与大量的数据传输相比代价更低,但是这违背了可重构“配置一次,执行多次”的思想。并且如果频繁的更换配置信息也不利于可重构处理器的效率提升。

发明内容

[0005] 为克服现有技术的不足,本发明旨在提出一种用于可重构处理器的阵列间数据传输结构,该方法可以有效降低在可重构处理器频繁传输数据时的可重构阵列等待时间,提高中间数据的传输效率,加速可重构处理器的运行速度。为此,本发明提出一种用于可重构处理器的阵列间数据传输结构,适用于N个同构或者异构阵列的架构组成的处理器架构,具体包括N个阵列间存储器以及与之相连的数据存取仲裁模块;
[0006] 所述阵列间存储器是一个单向数据传输结构,承担前级阵列的数据存储和后级阵列的数据读取,阵列间存储器将多个阵列连接起来形成单向回路,阵列间存储器具有m个数据存储单元,每个数据存储单元结构相同,具有单独的数据存取仲裁模块,每个数据存储单元具多个端口:输入数据端口、输入地址端口、输入使能端口、输出数据端口、输出地址端口、输出使能端口,输入和输出两组端口能够实现数据的并行读取操作,采用读优先的模式;
[0007] 所述数据存取仲裁模块具有数据存入和数据读取两个模块,两个模块同时运作,数据存入与读取模块的用于判断阵列中多个处理单元的请求,内部为不同的处理单元设置优先级,阵列间存储器中不同的数据存储单元连接的仲裁模块对同样的处理单元的优先级不同,数据存入仲裁模块包括有以下几个端口:处理单元阵列请求端口、输入数据端口和输入地址端口,这三类端口的个数与处理单元个数相同;使能端口,与共享存储器的片选端口相连;数据输入端口,与共享存储器的数据输入端口相连;地址请求端口,与共享存储器的输入地址端口相连,数据读取仲裁模块包括有以下几个端口:处理阵列请求端口、地址请求端口,端口个数与处理单元个数相同;数据端口,与共享存储器的数据输出端口相连;地址请求端口,与共享存储器相连;使能端口,与共享存储器的片选端口相连;数据端口,与阵列相连;目标处理单元端口,与阵列相连,表示数据的去向。
[0008] 用于可重构处理器的阵列间数据传输调度方法,调度的步骤为:在阵列的配置信息准备阶段,将执行后续核心函数kernel的阵列的配置信息数据来源设置为阵列间存储器,外部主控核首先使能负责执行算法第一个kernel的阵列,在阵列执行完一遍后,外部主控核会接收到相应的完成信号,此时负责执行第二个kernel的阵列将被使能,以此类推;执行第一个kernel的阵列在执行一遍后同样会被再次使能,读取其他数据进行运算,并存储到阵列间存储器中,为了尽量不影响执行第二个kernel阵列的数据读取,二次运算的数据起始地址与一次运算完成数据存储地址加1。
[0009] 本发明的特点及有益效果是:
[0010] 本发明通过在可重构阵列之间设置一个小型的存储器,来暂时存储运算中的中间数据,使得在可重构处理器的主控核的调度下,同时进行数据传输与各个阵列的数据运算,提高了可重构处理器的数据存储和传输效率,增强了可重构处理器的性能。附图说明:
[0011] 图1一种现有的可重构处理器数据访存架构。
[0012] 图2本发明的阵列间数据传输结构示意图。
[0013] 图3本发明的阵列间共享存储器结构示意图。
[0014] 图4本发明的跨阵列数据仲裁器单个数据存储单元数据存入结构示意图。
[0015] 图5本发明的跨阵列数据仲裁器单个数据存储单元数据读取结构示意图。
[0016] 图6本发明的调度方法示意图。
[0017] 图中:
[0018] Data_in外部设备向共享存储器传输数据;
[0019] Data_out共享存储器向外部设备传输数据;
[0020] CPN_exe执行配置包N。

具体实施方式

[0021] 针对多阵列的可重构处理器架构,本发明提出了一种用于阵列间小数据量的通信架构,减小通信的代价,实现任务的算法级流水,高效发挥可重构处理器的性能。
[0022] 本发明提出一种用于可重构处理器的阵列间数据传输结构,适用于N个同构或者异构阵列的架构组成的处理器架构,如图2所示。具体包括N个阵列间存储器以及与之相连的数据存取仲裁模块。
[0023] 所述阵列间存储器是一个单向数据传输结构,主要承担前级阵列的数据存储和后级阵列的数据读取,阵列间存储器将多个阵列连接起来形成单向回路。该存储器具有m个数据存储单元,每个数据存储单元结构相同,具有单独的数据存取仲裁模块,每个数据存储单元具多个端口:输入数据端口、输入地址端口、输入使能端口、输出数据端口、输出地址端口、输出使能端口。输入和输出两组端口能够实现数据的并行读取操作,采用读优先的模式。
[0024] 数据存取仲裁模块具有数据存入和数据读取两个模块,两个模块同时运作。数据存入与读取模块的功能主要是判断阵列中多个处理单元的请求,内部为不同的处理单元设置优先级,阵列间存储器中不同的数据存储单元连接的仲裁模块对同样的处理单元的优先级不同。数据存入仲裁模块包括有以下几个端口:处理单元阵列请求端口、输入数据端口和输入地址端口,这三类端口的个数与处理单元个数相同;使能端口,与共享存储器的片选端口相连;数据输入端口,与共享存储器的数据输入端口相连;地址请求端口,与共享存储器的输入地址端口相连。数据读取仲裁模块包括有以下几个端口:处理阵列请求端口、地址请求端口,端口个数与处理单元个数相同;数据端口,与共享存储器的数据输出端口相连;地址请求端口,与共享存储器相连;使能端口,与共享存储器的片选端口相连;数据端口,与阵列相连;目标处理单元端口,与阵列相连,表示数据的去向。
[0025] 本发明基于图2中的结构提出一种适用于多阵列架构的算法调度方法,能够提高中间数据在阵列之间传输的效率,主要调度的步骤为:在阵列的配置信息准备阶段,将执行后续kernel的阵列的配置信息数据来源设置为阵列间存储器,外部主控核首先使能负责执行算法第一个kernel的阵列,在阵列执行完一遍后,外部主控核会接收到相应的完成信号,此时负责执行第二个kernel的阵列将被使能,以此类推。执行第一个kernel的阵列在执行一遍后同样会被再次使能,读取其他数据进行运算,并存储到阵列间存储器中,为了尽量不影响执行第二个kernel阵列的数据读取,二次运算的数据起始地址与一次运算完成数据存储地址加1。以上方式能够有效缓解访存压力,做到数据传输与阵列执行尽量并发完成,提高可重构处理器的效率。
[0026] 本发明主要针对具有多阵列结构的可重构处理器架构,其中一种包含4个阵列的架构如图1所示。每个阵列作为处理器中的一组处理单元的集合,在被主控核调用时,其中的各个处理单元通过路由的方式相互连接,达到快速处理一组计算密集型任务。
[0027] 鉴于可重构处理器具有“配置一次,执行多次”的优点,为了充分发挥处理器的这个优点,需要尽量避免多次配置阵列。在这种条件下,不同的可重构阵列执行不同的任务,但是相同的可重构阵列的任务不变。因此,不同阵列之间的数据传输应该是单向的。不同阵列之间的数据传输采用封闭环形的方式通信,以4个阵列的结构为例,本发明的阵列间数据传输结构如图2所示。阵列间存储器负责中间数据的暂时存储,而跨阵列数据仲裁器一方面为前端阵列中不同处理单元设置了优先级,并判断相应的数据存储的地址;另一方面它也为后端阵列设置了优先级,并判断相应的数据读取的地址。
[0028] 阵列间存储器中的数据可以供后端阵列的所有处理单元访问,故也称作阵列间共享存储器。在单个可重构阵列中,通常存在着比较多的处理单元。为了保证中间数据在阵列间的快速存储和读取,阵列间存储器采用多个数据存储单元的方式。如图3所示,以单个阵列包含16个处理单元为例,采用4个数据存储单元既能保证数据的存取速度,又使存储器的结构不至于过度复杂。每个数据存储单元具有6个端口:输入数据端口DI、输入地址端口AI、输入片选端口、输出数据端口DI、输出地址端口AI、输出片选端口。其中输入与输出端口的操作互不影响。
[0029] 阵列间存储器通过一个仲裁模块与两端的阵列进行数据的交互。由于共享存储器的输入与输出通道互不影响,所以在仲裁模块中输入与输出的仲裁是单独执行的。数据存储仲裁结构如图4所示,包括的端口有:处理单元阵列请求端口Ri,该端口的位宽与阵列中处理单元的个数相同;输入数据端口Di和输入地址端口Ai,这两类端口的个数与处理单元个数相同;使能端口Emi,与共享存储器的片选端口相连;数据输入端口Dmi,与共享存储器的数据输入端口相连;地址请求端口Ami,与共享存储器的输入地址端口相连。在该模块运作时首先根据处理单元访问地址的前两位判断目标数据存储单元,对相应的数据存储单元提出访问请求,具体来说采用译码器来实现。当有多个处理单元同时请求访问同一数据存储单元时,通过预先设置的优先级对这些请求逐个进行处理。数据读取仲裁结构如图5所示,包括的端口有:处理阵列请求端口Ro,该端口的位宽与阵列中处理单元的个数相同;地址请求端口Ao,端口个数与处理单元个数相同;数据端口Dmo,与共享存储器的数据输出端口相连;地址请求端口Amo,与共享存储器相连;使能端口Emo,与共享存储器的片选端口相连;数据端口Do,与阵列相连;目标处理单元端口Pe,与阵列相连,表示数据的去向。跨阵列数据仲裁器主要由输入仲裁与输出仲裁两类模块组成,这两类模块承担了对单个数据存储单元数据读取判断的功能。因此这两类模块的个数要数据仲裁器内部数据存储单元的个数保持一致。
[0030] 本发明适用于多个阵列的可重构处理器架构,阵列间存储器具有数据和地址端口,便于数据的地址规划,从而简化数据读取单元配置信息的个数,减少该单元的执行时间。阵列间存储器的个数与阵列的个数相同,在两个阵列之间设置一个存储器,一个阵列与两个存储器相连。在任务执行过程中,如果有多个不相关的任务需要同时执行,可将阵列分成不同的小组。每个小组中的阵列执行任务中不同的核心算法,并最终输出到外部存储器中。
[0031] 共享存储器可采用简单双口ram来实现,一个端口只读,另一个端口只写。对于共享存储器的数据存储单元数规划,为了保证数据在阵列间传输的效率,要考虑到阵列中处理单元的个数。每增加4个处理单元增加一个数据存储单元是比较合适的。多个数据存储单元中的数据具有并行传输的特点,因此每个数据存储单元具有单独的仲裁模块。为了便于数据的地址规划,所有的处理单元能访问到每个数据存储单元。但是为了提高数据的传输效率,将数据存放在不同的数据存储单元中能够节省更多的时间。
[0032] 本发明基于图2中的结构提出一种适用于多阵列架构的算法调度方法,能够提高中间数据在阵列之间传输的效率,主要调度的步骤为:在阵列的配置信息准备阶段,将执行后续kernel的阵列的配置信息数据来源设置为阵列间存储器,外部主控核首先使能负责执行算法第一个kernel的阵列,在阵列执行完一遍后,外部主控核会接收到相应的完成信号,此时负责执行第二个kernel的阵列将被使能,以此类推。执行第一个kernel的阵列在执行一遍后同样会被再次使能,读取其他数据进行运算,并存储到阵列间存储器中,为了尽量不影响执行第二个kernel阵列的数据读取,二次运算的数据起始地址与一次运算完成数据存储地址加1。基于本结构的算法调度示意图如图6所示,数据的存取在配置信息执行过程中会自动完成,多个阵列形成kernel级的流水线运算。为了便于地址的规划,配置信息中数据来源以间接方式访问阵列间存储器最优,具体以主控核能够访问的存储单元作为阵列间存储器的地址的存储位置。