CN107341053A - 异构多核可编程系统及其内存配置和计算单元的编程方法 - Google Patents
异构多核可编程系统及其内存配置和计算单元的编程方法 Download PDFInfo
- Publication number
- CN107341053A CN107341053A CN201710404920.3A CN201710404920A CN107341053A CN 107341053 A CN107341053 A CN 107341053A CN 201710404920 A CN201710404920 A CN 201710404920A CN 107341053 A CN107341053 A CN 107341053A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- memory
- programmable system
- heterogeneous polynuclear
- realized
- 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
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本发明涉及一种在单颗FPGA芯片内实现的异构多核可编程系统及其内存配置方法和计算单元的编程方法。该异构多核可编程系统包括一个主机和多个计算单元,以及作为系统内存配置给多个计算单元共享的外部DDR存储器,其中为每个计算单元分配有一块存储空间,每个存储空间用于存储相应计算单元的数据和指令。该内存配置方法包括:主机根据为各个计算单元配置的计算任务,在外部DDR存储器中为各计算单元分配相应的存储空间;并进一步地将该存储空间划分为两个对称区域。本发明将计算单元的指令和数据存储器都分配在外部的DDR存储器上,不会出现因芯片内部存储资源稀缺,而导致指令和数据存储容量不够的情况,且内存分配具有灵活、高效、可靠的优势。
Description
技术领域
本发明涉及异构多核可编程系统领域,主要涉及在单颗现场可编程门阵列(FPGA,Field-Programmable Gate Array)芯片内实现异构多核可编程系统的设计方法、内存分配、编程模型设计与开放运算语言(OpenCL,Open Computing Language)支持,更具体地说,涉及一种在单颗FPGA芯片内实现的异构多核可编程系统及其内存配置方法和计算单元的编程方法。
背景技术
异构多核可编程系统是将结构、功能、功耗、运算性能不同的多个核心处理器集成在单颗芯片上,通过任务剖析与核心调度,将不同的任务分配给相应的核心,使每个核心物尽其用,这种组织方式实现了资源的最佳化配置,且能降低整体功耗。由于在FPGA平台上实现异构多核系统,其能量效率方面表现较高,且FPGA的硬件可编程性可以使开发者方便的搭建符合自身需求的数字系统。目前,常见的异构模型有同种CPU+FPGA上的硬件加速模块组成,或单个CPU+单个DSP组成异构系统。前者的硬件加速模块,由于是在系统设计之初就确定了功能,设计完成后不能实现灵活的可编程性。后者其实还是在用单个核心做串行的数据运算和处理,未达到并行处理的要求,不能充分展现系统的高效性。
在异构多核可编程系统中,内存的分配使用是关键问题。如何保证多个计算单元无冲突的访问内存,当前有设计是给计算单元在FPGA芯片上实现本地数据和指令存储器。然而FPGA内部的存储器资源非常稀缺,因而限制了各个计算单元的本地存储器大小,导致数据和指令空间的不够用,这种本地存储的方式在多计算单元的设计中尤为矛盾。而且在主机需要结果数据时,还需要从原有本地存储中拷贝数据到主机内存空间,数据搬移上产生了时间的消耗。
此外,异构多核可编程系统的编程较复杂,有研究者提出“统一编程,分开编译”的编程模型,对于此种模型,需要为从核的变量和函数都添加特定的标记,然后再设计相应的分离解析程序。此种方式其实加大了编程的复杂性,并不能保证分离解析程序的准确性、可靠性。
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。现在已成为行业规范。AMD和NVIDIA都发布了支持OpenCL的图形处理器及软件开发工具包(SDK,Software Development Kit)。美国FPGA厂商英特尔和赛灵思公司,也推出了使支持OpenCL的开发板卡,用以实现CPU+FPGA的异构并行计算。微软在数据中心使用FPGA加速计算任务。但是这只能针对于特定的板卡,开发者对在FPGA内部的系统不可见也无法修改。
针对现有技术存在的上述问题,业内需要开发一种具有大容量内存的异构多核可编程系统,以及与之配套的内存优化配置方法和计算单元的编程方法。
发明内容
本发明要解决的技术问题在于,针对现有异构多核可编程系统存在系统效率低、存储空间小的缺陷,提供一种具有大容量存储空间的在单颗FPGA芯片内实现的异构多核可编程系统及其内存配置方法。
本发明要解决另一技术问题在于,针对现有异构多核可编程系统存在的系统编程复杂的缺陷,提供一种在单颗FPGA芯片内实现的异构多核可编程系统中计算单元的编程方法。
本发明解决其技术问题所采用的技术方案是:构造一种在单颗FPGA芯片内实现的异构多核可编程系统,包括一个主机和多个计算单元,还包括,
作为系统内存配置给所述多个计算单元共享的外部DDR存储器,其中为每个计算单元分配有一块存储空间,每个所述存储空间用于存储相应计算单元的数据和指令。
在本发明所述的在单颗FPGA芯片内实现的异构多核可编程系统中,
每个所述计算单元在外部DDR存储器所分配的所述存储空间的起始地址和空间大小是可动态配置的。
在本发明所述的在单颗FPGA芯片内实现的异构多核可编程系统中,
为每个计算单元分配的所述存储空间划分为相互对称的第一区域和第二区域,使得能够交替使用和配置所述第一区域和第二区域,以节省等待配置时间。
在本发明所述的在单颗FPGA芯片内实现的异构多核可编程系统中,
包括直接内存访问(DMA,Direct Memory Access)模块,用于进行主机存储器与各计算单元的存储空间的数据相互搬移。
在本发明所述的在单颗FPGA芯片内实现的异构多核可编程系统中,
所述主机包括采用MicroBlaze软核的片上可编程系统,所述计算单元包括OR1200软核;且所述主机通过AXI4Lite互联模块与所述直接内存访问模块及各计算单元通信。
在本发明所述的在单颗FPGA芯片内实现的异构多核可编程系统中,
所述系统包括DDR控制器,其通过AXI4Interconnect总线互联模块与所述主机、直接内存访问模块及各计算单元通信连接;
计算单元包括协议转换模块(wb2axi模块),以实现WISHBONE协议到AXI协议的转换;且
计算单元设置有读指令、读数据、写数据接口,计算单元的访存AXI总线,连接到所述AXI4Interconnect总线互联模块,由所述DDR控制器负责访存。
本发明解决其技术问题所采用的另一技术方案是:提供一种如上所述在单颗FPGA芯片内实现的异构多核可编程系统的内存配置方法,其特征在于,所述方法包括:
主机为各个计算单元配置计算任务;
根据所配置的计算任务在外部DDR存储器中为各计算单元分配相应的存储空间,其包括为计算单元所分配的外部存储器的起始地址和空间大小,并为各计算单元及其相应的区域设置编号。
在本发明所述的在单颗FPGA芯片内实现异构多核可编程系统的内存配置方法中,包括:
输入要配置的计算单元及其相应的区域的编号,以确定将要配置的目标区域的地址;
判断所确定的目标区域是否处于空闲状态和非配置状态;
当所述目标区域处于空闲及非配置状态下,设置直接内存访问模块,以启动主机与该计算单元之间的数据传输。
在本发明所述的在单颗FPGA芯片内实现异构多核可编程系统的内存配置方法中,包括在计算单元的存储空间的第一区域和第二区域进行切换的方法,其中包括:
输入要切换区域的计算单元及其相应的区域的编号,以确定将要切换的目标区域地址;
检查所述计算单元当前是否处于空闲状态,
当所述计算单元是空闲的状态下,确定目标区域的配置状态;
当所述目标区域为非配置状态时,设置区域切换。
本发明解决其技术问题所采用的又一技术方案是:提供一种如上所述在单颗FPGA芯片内实现的异构多核可编程系统中计算单元的编程方法,其特征在于,所述方法包括:
为每个计算单元创建其自己的工程目录,以使多个计算单元的程序开发彼此独立;且所述多个计算单元共用同一链接脚本,用Makefile文件直接调用其编译工具链。
实施本发明,具有以下有益效果:
相比于在FPGA芯片上实现本地数据和指令存储器的方法,本发明提出更灵活、高效、可靠的内存分配方式。在外部DDR存储器中,为每个计算单元分配一块存储空间,用于数据和指令的存储。首先,将计算单元的指令和数据存储器都分配在外部的DDR存储器上,不会出现因芯片内部存储资源稀缺,而导致指令和数据存储容量不够的情况。
其次,每个计算单元的存储地址可灵活配置,其大小也可根据实际所需,进行差异化配置。不同于固定大小和固定地址的分配方式,通常为保证最大情况的内存所需,会配置一块较大的空间,然而并不是每个计算单元都需要。特别是在当每个计算单元的性能、执行任务差异较大的设计中,灵活配置的方法可节省不必要的空间浪费。
计算单元的数据和指令都存储在外部DDR存储器,这也方便了主机对各个计算单元的配置。为优化主机的内存配置,提高系统吞吐率,本发明技术方案中引入直接内存访问(DMA,Direct Memory Access)功能模块,主机在内存配置期间可执行其他任务。另外,当计算任务完成时,主机可直接从相应内存空间读取处理数据。而对于在芯片内实现存储的设计,主机对计算单元配置和读取数据时,都需要经过主机存储器与芯片内部存储的搬移操作。
每个计算单元的运行指令可由主机配置,为提高配置效率和可靠性,将每个计算单元的存储器分成对称的两个区。在效率方面,当计算单元正使用存储器某一区运行时,主机可配置存储器的另一区。两个区交替工作,对比于只有一个存储区域的设计,本处理方式能节省等待配置时间。在可靠性方面,另一个区还可作为配置的备份。对称区域的设计,对于动态更新计算单元的程序也更为快捷。
在编程模型设计与OpenCL支持方面,针对多核CPU平台的编程、编译复杂性,结合上述的内存优化模型,编写脚本提高编程效率,自动化编译流程。本发明提出一种能简化分开编程、编译的模型,保证程序的可移植性。设计用脚本直接调用其编译工具链,确保了编译准确,同时方便对每个计算单元的任务进行调试分析。
综合上述,本发明提供了一种在单颗FPGA芯片内实现异构多核可编程系统的内存优化方法、编程模型设计与OpenCL支持,能优化内存分配,提高系统吞吐率,加快开发验证速度,使软硬件设计更加灵活。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是根据本发明一实施例的异构多核可编程系统的结构框图;
图2是根据本发明实施例的异构多核可编程系统的多个计算单元(图1中CU,Computing Unit)从DDR分配存储空间的方式的示意图;
图3是根据本发明实施例的计算单元访问外部DDR时的访问地址产生方式的示意图;
图4是根据本发明实施例的异构多核可编程系统的各个计算单元存储空间内部区域分布的示意图;
图5是根据本发明实施例的计算单元的内存区域配置的流程图;
图6是根据本发明实施例的在计算单元的对称内存区域切换的流程图;
图7是根据本发明实施例的异构多核可编程系统的自动创建工作空间脚本生成的文件示意图。
具体实施方式
本发明构思一种在单颗FPGA芯片内实现的异构多核可编程系统,其采用两种不同架构的CPU来实现一个主机和多个计算单元。主机负责任务分配和结果处理,多个计算单元负责并行化处理任务。使得计算单元的任务是在线可配置的,可实现单指令多数据或多指令多数据的任务。
本发明中,采用计算单元的内部数据和指令缓存器+外部DDR存储器实现动态可配置的本地数据和指令存储器。这既提供了每个计算单元够用的数据和指令存储空间,又不会降低访问存储的速度。
在本发明自主提出的编程、编译模型基础上,通过实现软件开发工具包,使在FPGA芯片上设计的本异构多核可编程系统能支持OpenCL规范。
图1是根据本发明一实施例的异构多核可编程系统的结构框图。
如图1所示,本发明在单颗FPGA芯片10内实现的异构多核可编程系统包括:
一个主机11,用于任务分配和结果处理;
多个计算单元121、122……12n(n为正整数,代表计算单元的个数,n的最大值取决于AXI互联模块所能容纳的计算单元总个数),用于并行化处理任务;
外部DDR存储器20,用于作为系统内存配置给多个计算单元121、122……12n共享,其中为每个计算单元分配有一块存储空间(如图2所示),每个存储空间用于存储相应计算单元的数据和指令;这种将计算单元的指令和数据存储器都分配在外部的DDR存储器上的技术方案,不会出现因芯片内部存储资源稀缺,而导致指令和数据存储容量不够的情况;
直接内存访问(DMA,Direct Memory Access)模块13,用于进行主机存储器与各计算单元的存储空间的数据相互搬移;
AXI4Lite互联模块14,用于主机与直接内存访问模块、各个计算单元之间的通信信道;
AXI4Interconnect总线互联模块15,用于主机、直接内存访问模块及各计算单元与DDR控制器16之间的通信信道;以及
DDR控制器16,其通过AXI4Interconnect总线互联模块15与主机、直接内存访问模块及各计算单元通信连接,用于负责对外部DDR存储器20的访存。
在一些实施例中,主机11包括以MicroBlaze软核为核心模块加上其他子模块所组成的片上可编程系统,计算单元包括OR1200软核和协议转换模块(wb2axi模块);且主机11通过AXI4Lite互联模块14与直接内存访问模块13及各计算单元121、122……12n通信。其中,协议转换模块(wb2axi模块)用以实现WISHBONE协议到AXI协议的转换。计算单元设置有读指令、读数据、写数据接口,计算单元的访存AXI总线,连接到AXI4Interconnect总线互联模块15,由DDR控制器负责访存。
在图1所示的实施例中,主机11采用MicroBlaze软核组成的片上可编程系统,设计16个从机做计算单元,计算单元包括OR1200软核和协议转换模块(wb2axi模块)。在该实施例中,计算单元是由OR1200为核心组成的系统,OR1200的指令和数据总线均为WISHBONE协议,要让OR1200直接访问外部DDR,需要实现WISHBONE协议到AXI协议的转换,如图1中计算单元(CU)部分的wb2axi模块,实现通信协议的转换。具体实施方案中,为实现AXI总线协议访问外部DDR,分别给每个计算单元设置了读指令、读数据、写数据接口,计算单元的访存AXI总线,连接到AXI4Interconnect总线互联模块15,由DDR控制器16负责访存。
由于主机要配置各计算单元的计算任务,读取结果,故主机会多次访问外部DDR存储器,且多为大量连续的存储区域。为提高系统吞吐率,本发明的技术方案中,加入直接内存访问模块13。主机设置好直接内存访问模块后,该模块会完成主机存储器空间与各计算单元存储器空间的数据相互搬移,而不需主机参与数据的读写操作。
图2是根据本发明实施例的异构多核可编程系统的多个计算单元从DDR分配存储空间的方式的示意图。
如图2所示,为计算单元所分配的外部存储器的起始地址和空间大小,都可由主机通过AXI4Lite模块配置。例如:有一个容量为1GB的外部DDR存储器,其地址范围为0x00000000~0x3FFFFFFF。配置计算单元(CU0)121的起始地址为CU0_ADDR_STR,空间大小为CU0_ADDR_SIZE,则计算单元121访存的地址范围为CU0_ADDR_STR~CU0_ADDR_STR+CU0_ADDR_SIZE-1。其他计算单元以此类推。
图3是根据本发明实施例的计算单元访问外部DDR时的访问地址产生方式的示意图。
如图3,计算单元(CU)的指令和数据总线均是Wishbone协议,Wishbone总线地址由从机(本发明中指CU)地址(指示访问的从机设备地址)和访问地址(指示该从机设备的内部地址)组成。计算单元实际访问的DDR地址是由基地址+偏移地址组成:由主机所配置的起始地址做基地址,OR1200的指令或数据总线的Wishbone地址的访问地址段做偏移地址。
在本发明的一些实施例中,每个计算单元121、122……12n在外部DDR存储器20所分配的存储空间的起始地址和空间大小是可动态配置的。
具体地说,每个计算单元的存储地址可灵活配置,其大小也可根据实际所需,进行差异化配置。不同于固定大小和固定地址的分配方式,通常为保证最大情况的内存所需,会配置一块较大的空间,然而并不是每个计算单元都需要。特别是在当每个计算单元的性能、执行任务差异较大的设计中,灵活配置的方法可节省不必要的空间浪费。
图4是根据本发明实施例的异构多核可编程系统的各个计算单元存储空间内部区域分布的示意图。在一些实施例中,本发明为每个计算单元分配的存储空间划分为相互对称的第一区域和第二区域,使得能够交替使用和配置所述第一区域和第二区域,以节省等待配置时间。
如图4,本实施例中的指令和数据均为统一编址。这是一种将计算单元的存储空间配置为16MB的实例,将其分成等分对称的两个区,两个区本质是一样的。设计中使程序段的排列、用作数据存储的区域划分均相同,在计算单元的程序编译中也是使用的同一链接脚本。在访问一区时,基地址为所配置的计算单元的起始地址;在访问二区时,基地址为所配置的计算单元的起始地址+0X800000。每个区域的划分是前4MB空间用来做程序的运行空间,接下来的1MB空间留做备用,最后的3MB空间,程序中可通过指针访问,用于结果数据的存储。对称区域的设计,对于动态更新计算单元的程序也更为方便。例如:当一区的任务执行完毕,主机直接切换该计算单元的基地址到二区,计算单元即可继续执行重新分配的计算任务,而且不会污染一区任务的结果数据。
本发明在单颗FPGA芯片内实现的异构多核可编程系统的内存配置方法如下:首先,主机为各个计算单元配置计算任务。然后,主机根据所配置的计算任务在外部DDR存储器中为各计算单元分配相应的存储空间,其包括为计算单元所分配的外部存储器的起始地址和空间大小,并为各计算单元及其相应的区域设置编号。
图5是根据本发明实施例的计算单元的内存区域配置的流程图,是在计算单元的存储空间为对称内存区域的实施例中,实现内存配置的基本流程。输入要配置的计算单元以及区域编号,便可确定要配置的地址。在该区域空闲的状态下,通过设置直接内存访问模块,启动数据传输。
如图5所示,在单颗FPGA芯片内实现异构多核可编程系统的内存配置方法,包括:
开始配置,在步骤510,输入要配置的计算单元及其相应的区域的编号;
在步骤520,确定将要配置的目标区域的地址;
在步骤530,判断所确定的目标区域是否在运行(即非空闲状态),
如果处于运行状态,则执行步骤535,返回正在运行状态;
如果处于空闲状态;则执行步骤540,判断是否处于配置状态;
如果处于配置状态,则执行步骤560,返回正在进行的配置状态;
如果未在配置状态,则执行步骤550,标记当前为配置状态,并设置直接内存访问模块,以启动主机与该计算单元之间的数据传输。
图6是根据本发明实施例的在计算单元的对称内存区域切换的流程图。在区域切换前,需要检查计算单元当前的运行状态,执行任务是否完成,并确定目标区域的配置状态。
如图6所示,在计算单元的存储空间的第一区域和第二区域进行切换的方法包括:
开始切换,在步骤610,输入要切换区域的计算单元及其相应的区域的编号,以确定将要切换的目标区域地址;
在步骤620,检查该计算单元当前是否处于运行状态;
如果处于运行状态,则执行步骤625,返回正在运行状态;
如果处于空闲状态;则执行步骤630,判断是否处于配置状态;
如果处于配置状态,则执行步骤635,返回正在进行的配置状态;
如果未在配置状态,则执行步骤640,标记当前为运行且非配置状态;
之后,执行步骤650,设置区域切换。
在步骤660,切换成功后返回切换成功,结束切换。
图7是根据本发明实施例的异构多核可编程系统的自动创建工作空间脚本生成的文件示意图。
如图7,这是一种在每个计算单元分配相同空间大小时的工作空间目录结构。针对此情况,多个计算单元可以共用同一链接脚本(即如下所列的自动化编译脚本中的ram.ld文件)。每个计算单元有自己的工程目录,这使得多计算单元的程序开发彼此独立,避免相互干扰。在独立程序开发的前提下,通过设计一套符合OpenCL规范的软件开发工具包,使之支持并行计算编程模型。
本发明一些实施例中,在单颗FPGA芯片内实现的异构多核可编程系统中计算单元的编程方法包括:为每个计算单元创建其自己的工程目录,以使多个计算单元的程序开发彼此独立;且所述多个计算单元共用同一链接脚本,用Makefile文件直接调用其编译工具链,从而为其编译自己的工程目录。
其中,Makefile配置文件(Makefile mkconfig)用于1)控制对哪几个计算单元(CU)进行编译;2)调用各自的编译工作链;3)涉及多Makefile文件的情况下,即主机配置文件(host_makefile)、第n+1计算单元配置文件(cu_n_makefile),由总的makefile来控制。
在一实施例中,本发明在单颗FPGA芯片内实现异构多核可编程系统的自动化编译脚本如下:
本发明的技术关键点包括其采用的内存优化方法,其中包括将多个计算单元的数据和指令存储器分配到外部DDR存储器上,多个计算单元共享一个外部存储器,每个计算单元在外部存储器分配的起始地址和空间大小可实现动态配置的方法。如图3中所示,由主机软件来配置访问DDR的基地址(即为该起始地址),和可以访问的空间大小(即可访问的地址范围)。
另外,针对各个计算单元存储器内部的具体分布情况,本发明采用对称的两个区,包括区域的交替使用和配置,以及为提升可靠性方面的备份策略,动态更新计算单元对称区域的计算任务均为本发明的技术关键点。
以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。
Claims (10)
1.一种在单颗FPGA芯片内实现的异构多核可编程系统,包括一个主机和多个计算单元,其特征在于,还包括,
作为系统内存配置给所述多个计算单元共享的外部DDR存储器,其中为每个计算单元分配有一块存储空间,每个所述存储空间用于存储相应计算单元的数据和指令。
2.根据权利要求1所述的在单颗FPGA芯片内实现的异构多核可编程系统,其特征在于,
每个所述计算单元在外部DDR存储器所分配的所述存储空间的起始地址和空间大小是可动态配置的。
3.根据权利要求1或2所述的在单颗FPGA芯片内实现的异构多核可编程系统,其特征在于,
为每个计算单元分配的所述存储空间划分为相互对称的第一区域和第二区域,使得能够交替使用和配置所述第一区域和第二区域,以节省等待配置时间。
4.根据权利要求3所述的在单颗FPGA芯片内实现的异构多核可编程系统,其特征在于,
包括直接内存访问(DMA,Direct Memory Access)模块,用于进行主机存储器与各计算单元的存储空间的数据相互搬移。
5.根据权利要求4所述的在单颗FPGA芯片内实现的异构多核可编程系统,其特征在于,
所述主机包括采用MicroBlaze软核的片上可编程系统,所述计算单元包括OR1200软核;且所述主机通过AXI4Lite互联模块与所述直接内存访问模块及各计算单元通信。
6.根据权利要求5所述的在单颗FPGA芯片内实现的异构多核可编程系统,其特征在于,
所述系统包括DDR控制器,其通过AXI4 Interconnect总线互联模块与所述主机、直接内存访问模块及各计算单元通信连接;
计算单元包括协议转换模块(wb2axi模块),以实现WISHBONE协议到AXI协议的转换;且
计算单元设置有读指令、读数据、写数据接口,计算单元的访存AXI总线,连接到所述AXI4 Interconnect总线互联模块,由所述DDR控制器负责访存。
7.一种如权利要求4-6中任一项所述在单颗FPGA芯片内实现的异构多核可编程系统的内存配置方法,其特征在于,所述方法包括:
主机为各个计算单元配置计算任务;
根据所配置的计算任务在外部DDR存储器中为各计算单元分配相应的存储空间,其包括为计算单元所分配的外部存储器的起始地址和空间大小,并为各计算单元及其相应的区域设置编号。
8.根据权利要求7所述的在单颗FPGA芯片内实现异构多核可编程系统的内存配置方法,其特征在于,包括:
输入要配置的计算单元及其相应的区域的编号,以确定将要配置的目标区域的地址;
判断所确定的目标区域是否处于空闲状态和非配置状态;
当所述目标区域处于空闲及非配置状态下,设置直接内存访问模块,以启动主机与该计算单元之间的数据传输。
9.根据权利要求7所述的在单颗FPGA芯片内实现异构多核可编程系统的内存配置方法,其特征在于,包括在计算单元的存储空间的第一区域和第二区域进行切换的方法,其中包括:
输入要切换区域的计算单元及其相应的区域的编号,以确定将要切换的目标区域地址;
检查所述计算单元当前是否处于空闲状态,
当所述计算单元是空闲的状态下,确定目标区域的配置状态;
当所述目标区域为非配置状态时,设置区域切换。
10.一种如权利要求1-6中任一项所述在单颗FPGA芯片内实现的异构多核可编程系统中计算单元的编程方法,其特征在于,所述方法包括:
为每个计算单元创建其自己的工程目录,以使多个计算单元的程序开发彼此独立;且所述多个计算单元共用同一链接脚本,用Makefile文件直接调用其编译工具链。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710404920.3A CN107341053B (zh) | 2017-06-01 | 2017-06-01 | 异构多核可编程系统及其内存配置和计算单元的编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710404920.3A CN107341053B (zh) | 2017-06-01 | 2017-06-01 | 异构多核可编程系统及其内存配置和计算单元的编程方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341053A true CN107341053A (zh) | 2017-11-10 |
CN107341053B CN107341053B (zh) | 2020-12-15 |
Family
ID=60220195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710404920.3A Active CN107341053B (zh) | 2017-06-01 | 2017-06-01 | 异构多核可编程系统及其内存配置和计算单元的编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341053B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800192A (zh) * | 2019-01-17 | 2019-05-24 | 广东高云半导体科技股份有限公司 | 电子设备、fpga芯片及其接口电路 |
CN109828941A (zh) * | 2019-03-06 | 2019-05-31 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
CN110109861A (zh) * | 2019-04-22 | 2019-08-09 | 北京中科寒武纪科技有限公司 | 一种任务执行方法及装置 |
CN110427337A (zh) * | 2019-09-29 | 2019-11-08 | 广东高云半导体科技股份有限公司 | 基于现场可编程门阵列的处理器内核及其运行方法 |
CN110471705A (zh) * | 2019-07-15 | 2019-11-19 | 江苏泛腾电子科技有限公司 | 一种定制双系统 |
CN111274042A (zh) * | 2020-01-19 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种fpga异构加速系统及其同步调度方法和相关设备 |
CN111490946A (zh) * | 2019-01-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 基于OpenCL框架的FPGA连接实现方法及装置 |
CN111858457A (zh) * | 2020-07-15 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、系统和fpga |
CN112347032A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的嵌入式指令缓存系统 |
CN112347028A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的数据处理方法及系统 |
CN112347029A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的嵌入式数据缓存系统 |
CN113254384A (zh) * | 2021-06-23 | 2021-08-13 | 中科院微电子研究所南京智能技术研究院 | 一种众核系统的数据传输方法及系统 |
CN113806245A (zh) * | 2021-10-11 | 2021-12-17 | 芯河半导体科技(无锡)有限公司 | 一种根据出口类型自动分配缓存地址的装置 |
CN113806244A (zh) * | 2021-11-18 | 2021-12-17 | 深圳比特微电子科技有限公司 | 用于片上系统的内存管理方法和基于片上系统的设备 |
CN115080455A (zh) * | 2022-08-22 | 2022-09-20 | 华控清交信息科技(北京)有限公司 | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 |
WO2023115529A1 (zh) * | 2021-12-24 | 2023-06-29 | 华为技术有限公司 | 芯片内的数据处理方法及芯片 |
CN117149699A (zh) * | 2023-09-08 | 2023-12-01 | 广东高云半导体科技股份有限公司 | 一种片上系统、装置及访问存储器的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446158A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
CN103377032A (zh) * | 2012-04-11 | 2013-10-30 | 浙江大学 | 一种基于异构多核芯片的细粒度科学计算并行处理装置 |
US20140020083A1 (en) * | 2006-05-17 | 2014-01-16 | Richard Fetik | Customizable Storage Controller With Integrated F+ Storage Firewall Protection |
CN104572529A (zh) * | 2015-02-09 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种适用异构多核dsp的高效总线仲裁系统 |
-
2017
- 2017-06-01 CN CN201710404920.3A patent/CN107341053B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140020083A1 (en) * | 2006-05-17 | 2014-01-16 | Richard Fetik | Customizable Storage Controller With Integrated F+ Storage Firewall Protection |
CN102446158A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
CN103377032A (zh) * | 2012-04-11 | 2013-10-30 | 浙江大学 | 一种基于异构多核芯片的细粒度科学计算并行处理装置 |
CN104572529A (zh) * | 2015-02-09 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种适用异构多核dsp的高效总线仲裁系统 |
Non-Patent Citations (2)
Title |
---|
熬天勇,陈杰: ""基于CostarII的异构多核DSP设计与实现"", 《微电子学与计算机》 * |
边育心: ""一种支持OpenCL的异构多核可重构片上系统硬件架构研究与设计"", 《信息科技辑》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800192A (zh) * | 2019-01-17 | 2019-05-24 | 广东高云半导体科技股份有限公司 | 电子设备、fpga芯片及其接口电路 |
CN111490946A (zh) * | 2019-01-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 基于OpenCL框架的FPGA连接实现方法及装置 |
CN111490946B (zh) * | 2019-01-28 | 2023-08-11 | 阿里巴巴集团控股有限公司 | 基于OpenCL框架的FPGA连接实现方法及装置 |
CN109828941A (zh) * | 2019-03-06 | 2019-05-31 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
CN109828941B (zh) * | 2019-03-06 | 2020-07-07 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
CN110109861A (zh) * | 2019-04-22 | 2019-08-09 | 北京中科寒武纪科技有限公司 | 一种任务执行方法及装置 |
CN110471705A (zh) * | 2019-07-15 | 2019-11-19 | 江苏泛腾电子科技有限公司 | 一种定制双系统 |
CN110427337A (zh) * | 2019-09-29 | 2019-11-08 | 广东高云半导体科技股份有限公司 | 基于现场可编程门阵列的处理器内核及其运行方法 |
CN111274042A (zh) * | 2020-01-19 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种fpga异构加速系统及其同步调度方法和相关设备 |
CN111858457B (zh) * | 2020-07-15 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、系统和fpga |
CN111858457A (zh) * | 2020-07-15 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、系统和fpga |
CN112347028A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的数据处理方法及系统 |
CN112347029A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的嵌入式数据缓存系统 |
CN112347032A (zh) * | 2020-09-24 | 2021-02-09 | 深圳市紫光同创电子有限公司 | 基于fpga的嵌入式指令缓存系统 |
CN113254384A (zh) * | 2021-06-23 | 2021-08-13 | 中科院微电子研究所南京智能技术研究院 | 一种众核系统的数据传输方法及系统 |
CN113806245A (zh) * | 2021-10-11 | 2021-12-17 | 芯河半导体科技(无锡)有限公司 | 一种根据出口类型自动分配缓存地址的装置 |
CN113806245B (zh) * | 2021-10-11 | 2023-11-21 | 芯河半导体科技(无锡)有限公司 | 一种根据出口类型自动分配缓存地址的装置 |
CN113806244A (zh) * | 2021-11-18 | 2021-12-17 | 深圳比特微电子科技有限公司 | 用于片上系统的内存管理方法和基于片上系统的设备 |
CN113806244B (zh) * | 2021-11-18 | 2022-02-08 | 深圳比特微电子科技有限公司 | 用于片上系统的内存管理方法和基于片上系统的设备 |
WO2023115529A1 (zh) * | 2021-12-24 | 2023-06-29 | 华为技术有限公司 | 芯片内的数据处理方法及芯片 |
CN115080455A (zh) * | 2022-08-22 | 2022-09-20 | 华控清交信息科技(北京)有限公司 | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 |
CN117149699A (zh) * | 2023-09-08 | 2023-12-01 | 广东高云半导体科技股份有限公司 | 一种片上系统、装置及访问存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107341053B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341053A (zh) | 异构多核可编程系统及其内存配置和计算单元的编程方法 | |
Karam et al. | Trends in multicore DSP platforms | |
CN103714039B (zh) | 通用计算数字信号处理器 | |
US6363453B1 (en) | Parallel processor with redundancy of processor pairs | |
CN102023844B (zh) | 并行处理器及其线程处理方法 | |
CN101799750B (zh) | 一种数据处理的方法与装置 | |
WO2020103058A1 (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
CN103348333B (zh) | 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置 | |
CN112199173B (zh) | 双核cpu实时操作系统数据处理方法 | |
CN111506540B (zh) | 一种硬件可编程异构多核片上系统 | |
Abellán et al. | Efficient hardware barrier synchronization in many-core cmps | |
CN104375805A (zh) | 采用多核处理器仿真可重构处理器并行计算过程的方法 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
Zhuang et al. | High performance, low power matrix multiply design on acap: from architecture, design challenges and dse perspectives | |
CN205003526U (zh) | 一种基于sopc技术的plc协同控制装置 | |
Bates et al. | Exploiting tightly-coupled cores | |
CN116757132A (zh) | 异构多核fpga电路架构、构建方法及数据传输方法 | |
CN103150157A (zh) | 基于访存分歧的gpu核心程序重组优化方法 | |
Pham et al. | Moving compute towards data in heterogeneous multi-FPGA clusters using partial reconfiguration and I/O virtualisation | |
CN107665281B (zh) | 一种基于fpga的处理器模拟方法 | |
Samahi et al. | Automated integration and communication synthesis of reconfigurable MPSoC platform | |
Hussain et al. | Amc: Advanced multi-accelerator controller | |
CN101236576B (zh) | 一种适用于异质可重构处理器的互联模型 | |
Neuwirth et al. | Communication models for distributed intel xeon phi coprocessors | |
CN101539849B (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 |