CN106681949B - 基于一致性加速接口的直接内存操作实现方法 - Google Patents
基于一致性加速接口的直接内存操作实现方法 Download PDFInfo
- Publication number
- CN106681949B CN106681949B CN201611245747.9A CN201611245747A CN106681949B CN 106681949 B CN106681949 B CN 106681949B CN 201611245747 A CN201611245747 A CN 201611245747A CN 106681949 B CN106681949 B CN 106681949B
- Authority
- CN
- China
- Prior art keywords
- fpga
- data packet
- description information
- arm
- message
- 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
Links
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于一致性加速接口的直接内存操作实现方法,由FPGA在内部实现接收外设,将接收到的数据以直接内存存取的方式写入内存,并将数据包的描述信息同时写入内存,以数据包描述信息队列写指针更新的方式通知ARM处理器,ARM处理器以中断或查询的方式识别此指针是否更新,计算读写指针差,获取待处理数据包数量信息,数据的处理过程是,首先读取数据包描述信息,再根据所描述的数据包属性决定是否处理对应的数据包。本发明极大提高了处理器的处理效率和灵活性,简化了***复杂性,相应提高了传输可靠性。用于数据吞吐量大、处理实时性要求高的电力***控制领域。
Description
技术领域
本发明属于电力***控制领域,适用于外部输入数据量较大,需要大量外部数据搬移、处理的应用场合,比如数字化继电保护等。
背景技术
随着变电站自动化技术的不断发展和进步,在智能变电站中,由于信息数字化的推广,为各种高级应用提供了基础,已经成为变电站自动化技术发展的主要方向。在此基础上,各种智能设备的数据接入量逐步提高,对于处理器的数据吞吐和处理能力的要求随着高速数据接口外设数量的增加迅速提高。
目前的嵌入式高性能处理器,如PowerPC、DSP等,为提高数据吞吐能力,同时兼顾接口灵活性,通常采用处理器+FPGA的配置,处理器和FPGA之间通常使用DMA(直接内存操作)方式交互数据,处理器定义数据搬移任务,不再负责数据搬移操作,以达到节约处理器开销的目的。其特点是DMA任务必须由处理器发起并控制,由于处理器中嵌入的DMA控制器需要配置长度、目标地址等属性,才能完成一次完整的数据搬移,而这些属性无法事先由FPGA自行获取,这就需要处理器在每次任务开始前把各种任务属性写入FPGA,且至少要区分配置阶段、数据搬移阶段、数据处理阶段,过程较为复杂,双向的交互过程也导致处理器效率不太高。
为应对大数据量吞吐的需求,ARM公司在定义了各种高性能处理器的同时,也定义了AMBA(Advanced Microcontroller Bus Architecture)系列高速总线,对于数据交互的效率提高帮助很大。主流FPGA厂家Xilinx和Altera公司基于ARM处理内核和AMBA总线定义,开发生产了系列SOC芯片,可以很好的适应数据流越来越大、处理实时性很高的工业控制领域的处理要求。
主流FPGA厂家Xilinx和Altera公司基于ARM处理内核和增强型微处理器总线结构(AMBA,Advanced Microcontroller Bus Architecture)定义,开发生产了系列SOC芯片,可以很好的适应数据流越来越大、处理实时性很高的工业控制领域的处理要求。Xilinx公司这个系列的芯片名称是Zynq。
先进可扩展接口(AXI,Advanced eXtensible Interface)是AMBA系列中一个定义完备,支持高速、多任务传输的协议集。Zynq内部ARM处理器和FPGA之间的接口,均定义为AXI接口。
常见的处理器和FPGA之间DMA任务如图2所示,完成一次DMA任务,往往需要往返交互,过程复杂。通过部署数据传输任务的方式,降低数据交换带来的处理开销。作为主管的处理器,需要高频率监视上行数据流量,根据报文数量,动态调整DMA长度,此复杂过程对架构和代码的设计都有很高要求,且往返过程牺牲了处理器的开销。
对于通过CACHE操作DDR存储器的处理器来说,FPGA和DDR通过共享同一块物理地址交换数据还存在CACHE是否一致的问题。
发明内容
为解决现有技术中存在的上述问题,本发明提出了一种基于一致性加速接口的直接内存操作实现方法,在一致性加速接口总线基础上,FPGA将接收到的数据以直接内存存取(DMA,Direct Memory Access)的方式写入内存,以数据包描述信息队列写指针更新的方式通知ARM处理器,ARM处理器不再参与数据交互,仅通过简单的信号通知的方法,获取通信数据,专注数据处理,提高处理器利用率;ACP是Zynq内部AXI接口定义中的一种,它将Zynq内部的FPGA和ARM处理器的CACHE监听控制单元(SCU,Snoop Control Unit)连接,SCU是ARM公司设计的一种可以保证多核间CACHE一致性的模块。FPGA通过ACP接口写入CACHE的数据,可以通过SCU自动、即时的同步到ARM,解决了CACHE一致性的问题。
本发明具体采用以下技术方案。
一种基于一致性加速接口的直接内存操作实现方法,其特征在于:使用FPGA代替ARM处理器对外设接收数据进行直接内存操作的管理,利用一致性加速接口实现FPGA和ARM之间的缓存CACHE同步。
一种基于一致性加速接口的直接内存操作实现方法,所述实现方法用于ARM处理器+FPGA配置的嵌入式处理器,使用一致性加速接口,将FPGA连接到ARM的监听控制单元(SCU,Snoop Controller Unit),用于保证FPGA对内存的操作即时同步到ARM的缓存CACHE;其特征在于,所述实现方法包括以下步骤:
步骤1:FPGA根据所在的硬件板卡的条件,确定在逻辑资源允许情况下,外接以太网报文可以定义的优先级数量,并将优先级数量存入寄存器中供ARM读取,并将所定义的报文优先级数量存储在固定地址的寄存器供ARM处理器读取;
步骤2:ARM处理器读取FPGA提供的接收报文优先级数量后,根据工程的需要,为各种工程应用报文定义优先级别,并为各种优先级别报文分配和FPGA之间的共享内存空间,包括存储区大小和存储区首地址,并以写寄存器的方式将共享内存的地址、空间大小等信息传递给FPGA;
步骤3:FPGA为每种优先级报文分配一级接收缓冲区;
步骤4:FPGA根据步骤2中ARM处理器写到寄存器中的各接收报文优先级的存储区大小和存储区首地址,将外部输入的报文筛选进不同的优先级缓冲区同时为报文建立一个数据包描述信息;
步骤5:在一致性加速接口调度模块中,将不同的优先级缓冲区写入动态随机存储器DDR中对应的共享内存地址,并将数据包描述信息也写入相应的共享内存地址,此时监听控制单元SCU自动完成FPGA所操作地址映射的CACHE向ARM处理器的同步;
步骤6:FPGA在完成步骤5的报文写入DDR的工作后,将接收报文数据包描述信息写指针加1,此写指针在寄存器地址中,ARM可以通过读寄存器的方式读取此指针;
步骤7:ARM处理器在循环查询或中断任务中,通过读数据包描述信息写指针,和ARM维护的读数据包描述信息读指针比较,当识别到接收报文数据包描述信息写指针和读指针不一致,则判断为相应接收报文优先级对应内存空间有新数据等待处理;
步骤8:ARM处理器处理新报文的顺序为:首先读取接收报文数据包描述信息,并将数据包描述信息的读指针加1,根据数据包描述信息中的内容,判断此报文是不是ARM订阅的报文,从而决定是否真正处理数据包描述信息中包含的数据包指针指向的数据报文,用于判断的报文属性包括目标地址、以太网报文类型和APPID;无论ARM处理器是否处理数据包,一旦数据包描述信息的读指针加1,即意味着该接收报文数据包已处理
可以看到,整个过程中,ARM处理器核无需关心外设何时输入数据、也无需管理外设数据向内存的写入,只需根据指针变化识别新数据并处理即可,极大的提高了ARM处理器的工作效率;ARM在读取DDR共享内存时,也无需通过编程刷新CACHE,同样提高了处理效率
本发明的有益效果是:原本复杂的DMA交互过程,简化为FPGA完全负责上行数据传输的情况,处理器只需处理内存数据即可,实现了处理器效率利用的最大化;数据处理和数据传输的解耦,极大简化了***复杂性,相应提高了传输可靠性;
附图说明
图1为Zynq芯片硬件结构图;
图2为现有技术中处理器+FPGA的DMA流程示意图;
图3为本发明基于一致性加速接口的直接内存操作实现方法流程示意图。
具体实施方式
下面结合说明书附图对本发明的技术方案做进一步详细介绍。
本申请公开了一种基于一致性加速接口的主动式变长度DMA实现方法,如附图3所示。
所述Zynq芯片为Xilinx公司的Zynq双核系列芯片,是由双核ARM和FPGA组成,双核ARM和FPGA之间通过片内的先进可扩展接口(AXI)总线连接,双核ARM和FPGA共享外部存储器。内部硬件结构如图1所示。
附图2存在的处理器+FPGA实现方案中,完成一次DMA任务首先需要处理器从FPGA读取上行数据的概要信息,处理器根据概要信息,计算DMA的传输长度,并启动DMA接收任务,再将DMA传输长度传递给FPGA,FPGA根据DMA长度信息,开始一次数据上送,可以看到,这个过程需要至少往复交互信息,传输过程的控制比较复杂,最致命的是,一旦DMA传输发生意外(比如FPGA上送的数据长度不符),处理器只能使用传输超时等方法判断,而且解决方法也只能复位FPGA,对于***的整体运行影响较大。本发明将数据上送的任务完全交给了FPGA,整个数据传输过程除了指针更新,不需要其他任何信息传递,提高效率的同时,通过简化传输控制,提高了***稳定性。
本发明公开的基于一致性加速接口的直接内存操作实现方法流程示意图如附图3所示,本发明以Zynq芯片为例,基于一致性加速接口的主动式变长度DMA实现方法包括以下步骤:
步骤1:FPGA根据所在的硬件板卡的条件,确定在逻辑资源允许情况下,外接以太网报文可以定义的优先级数量,并将优先级数量存入寄存器中供ARM读取,并将所定义的报文优先级数量存储在固定地址的寄存器供ARM处理器读取;
步骤2:ARM处理器核读取FPGA提供的接收报文优先级数量后,根据工程的需要,为各种工程应用报文决定定义优先级,并为各种优先级别报文分配和FPGA之间的共享内存空间,包括存储区大小和存储区首地址,并以写寄存器的方式将共享内存的地址、空间大小等信息传递给FPGA;
数据包描述信息长度固定,如下表所示:
序号 | 定义及说明 | 字节数 |
1 | 序号 | 2 |
2 | 长度。对应数据包的有效数据字节数 | 2 |
3 | 地址。数据包首地址 | 4 |
4 | 数据类型 | 4 |
步骤3:FPGA为每种优先级报文分配一级接收缓冲区;
步骤4:FPGA根据步骤2中ARM处理器写到寄存器中的各接收报文优先级的存储区大小和存储区首地址,将外部输入的报文筛选进不同优先级缓冲区,进同时为报文建立一个数据包描述信息;
步骤5:在一致性加速接口调度模块中,将不同的优先级缓冲区写入DDR中对应的共享内存地址,并将数据包描述信息也写入相应的共享内存地址,此时监听控制单元(SCU)会自动完成FPGA所操作地址映射的CACHE向ARM处理器的同步;
步骤6:FPGA在完成步骤5的报文写入DDR的工作后,将接收报文数据包描述信息写指针加1,此写指针在寄存器地址中,ARM可以通过读寄存器的方式读取此指针;
步骤7:ARM处理器在循环查询或中断任务中,通过读数据包描述信息写指针,和ARM维护的读数据包描述信息读指针比较,可以识别到接收报文数据包描述信息写指针和读指针不一致,则判断为相应接收报文优先级对应内存空间有新数据等待处理;
步骤8:ARM处理器处理新报文的顺序为:首先读取接收报文数据包描述信息,并将数据包描述信息的读指针加1,根据数据包描述信息中的内容,判断此报文是不是ARM订阅的报文,从而决定是否真正处理数据包描述信息中包含的数据包指针指向的数据报文,用于判断的报文属性包括目标地址、以太网报文类型和APPID等;无论ARM处理器是否处理数据包,一旦数据包描述信息的读指针加1,即意味着该接收报文数据包已处理。
申请人结合说明书附图对本发明的实施例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
Claims (1)
1.一种基于一致性加速接口的直接内存操作实现方法,所述实现方法用于ARM处理器+FPGA配置的嵌入式处理器,使用一致性加速接口,将FPGA连接到ARM的监听控制单元,用于保证FPGA对内存的操作即时同步到ARM的缓存CACHE;其特征在于,所述实现方法包括以下步骤:
步骤1:FPGA根据所在的硬件板卡的条件,确定在逻辑资源允许情况下,外接以太网报文可以定义的优先级数量,并将优先级数量存入寄存器中供ARM读取,并将所定义的报文优先级数量存储在固定地址的寄存器供ARM处理器读取;
步骤2:ARM处理器读取FPGA提供的接收报文优先级数量后,根据工程的需要,为各种工程应用报文定义优先级别,并为各种优先级别报文分配和FPGA之间的共享内存空间,包括存储区大小和存储区首地址,并以写寄存器的方式将共享内存的地址、空间大小信息传递给FPGA;
步骤3:FPGA为每种优先级报文分配一级接收缓冲区;
步骤4:FPGA根据步骤2中ARM处理器写到寄存器中的各接收报文优先级的存储区大小和存储区首地址,将外部输入的报文筛选进不同的优先级缓冲区同时为报文建立一个数据包描述信息;
步骤5:在一致性加速接口调度模块中,将不同的优先级缓冲区写入动态随机存储器DDR中对应的共享内存地址,并将数据包描述信息也写入相应的共享内存地址,此时监听控制单元SCU自动完成FPGA所操作地址映射的CACHE向ARM处理器的同步;
步骤6:FPGA在完成步骤5的报文写入DDR的工作后,将接收报文数据包描述信息写指针加1,此写指针在寄存器地址中,ARM可以通过读寄存器的方式读取此指针;
步骤7:ARM处理器在循环查询或中断任务中,通过读数据包描述信息写指针,和ARM维护的读数据包描述信息读指针比较,当识别到接收报文数据包描述信息写指针和读指针不一致,则判断为相应接收报文优先级对应内存空间有新数据等待处理;
步骤8:ARM处理器处理新报文的顺序为:首先读取接收报文数据包描述信息,并将数据包描述信息的读指针加1,根据数据包描述信息中的内容,判断此报文是不是ARM订阅的报文,从而决定是否真正处理数据包描述信息中包含的数据包指针指向的数据报文,用于判断的报文属性包括目标地址、以太网报文类型和APPID;无论ARM处理器是否处理数据包,一旦数据包描述信息的读指针加1,即意味着该接收报文数据包已处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611245747.9A CN106681949B (zh) | 2016-12-29 | 2016-12-29 | 基于一致性加速接口的直接内存操作实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611245747.9A CN106681949B (zh) | 2016-12-29 | 2016-12-29 | 基于一致性加速接口的直接内存操作实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681949A CN106681949A (zh) | 2017-05-17 |
CN106681949B true CN106681949B (zh) | 2019-12-10 |
Family
ID=58872439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611245747.9A Active CN106681949B (zh) | 2016-12-29 | 2016-12-29 | 基于一致性加速接口的直接内存操作实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681949B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101439B (zh) * | 2017-06-21 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 一种报文处理的方法及装置 |
CN108920184B (zh) * | 2018-06-05 | 2020-06-23 | 山东大学 | 基于双环形缓冲区的微处理器高性能数据通信方法 |
CN109376104B (zh) * | 2018-09-28 | 2021-12-07 | 创新先进技术有限公司 | 一种芯片及基于其的数据处理方法和装置 |
CN111046072A (zh) * | 2019-11-29 | 2020-04-21 | 浪潮(北京)电子信息产业有限公司 | 一种数据查询方法、***、异构计算加速平台及存储介质 |
CN111221759B (zh) * | 2020-01-17 | 2021-05-28 | 深圳市风云实业有限公司 | 一种基于dma的数据处理***及方法 |
CN112104866A (zh) * | 2020-08-05 | 2020-12-18 | 成都卓元科技有限公司 | 一种8k视频传输方式 |
CN112199323A (zh) * | 2020-10-12 | 2021-01-08 | 南方电网数字电网研究院有限公司 | 电力***继电保护SoC芯片 |
CN112613691B (zh) * | 2020-11-09 | 2022-07-29 | 贵州电网有限责任公司 | 芯片化继电保护通用装置 |
CN115237353B (zh) * | 2022-08-12 | 2023-12-22 | 青岛汉泰智能科技有限公司 | 一种arm查询fpga长度寄存器的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1870593A (zh) * | 2006-04-12 | 2006-11-29 | 杭州华为三康技术有限公司 | 基于现场可编程逻辑阵列的读写缓存单元的方法及装置 |
CN103036893A (zh) * | 2012-12-21 | 2013-04-10 | 国电南瑞科技股份有限公司 | 一种适用于智能变电站的一层网络数据处理方法 |
CN104319878A (zh) * | 2014-09-26 | 2015-01-28 | 中国南方电网有限责任公司电网技术研究中心 | 一种芯片化数字化继电保护*** |
CN104820657A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2988124B1 (en) * | 2013-08-30 | 2017-07-19 | Magnomics, SA | Scalable and high throughput biosensing platform |
-
2016
- 2016-12-29 CN CN201611245747.9A patent/CN106681949B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1870593A (zh) * | 2006-04-12 | 2006-11-29 | 杭州华为三康技术有限公司 | 基于现场可编程逻辑阵列的读写缓存单元的方法及装置 |
CN103036893A (zh) * | 2012-12-21 | 2013-04-10 | 国电南瑞科技股份有限公司 | 一种适用于智能变电站的一层网络数据处理方法 |
CN104319878A (zh) * | 2014-09-26 | 2015-01-28 | 中国南方电网有限责任公司电网技术研究中心 | 一种芯片化数字化继电保护*** |
CN104820657A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 |
Non-Patent Citations (1)
Title |
---|
"芯片化保护测控装置方案研究";习伟等;《电网与清洁能源》;20161130;第32卷(第11期);第91-97页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106681949A (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681949B (zh) | 基于一致性加速接口的直接内存操作实现方法 | |
US20210112003A1 (en) | Network interface for data transport in heterogeneous computing environments | |
CN108351813B (zh) | 用于在非易失性存储器快速(NVMe)控制器的不同网络地址上使能个别的NVMe输入/输出(IO)队列的方法和装置 | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
US10739836B2 (en) | System, apparatus and method for handshaking protocol for low power state transitions | |
CN106951379B (zh) | 一种基于axi协议的高性能ddr控制器及数据传输方法 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及*** | |
WO2019233322A1 (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
WO2018075182A1 (en) | Gpu remote communication with triggered operations | |
CN104657308A (zh) | 一种用fpga实现的服务器硬件加速的方法 | |
CN102841869A (zh) | 一种基于fpga的多通道i2c控制器 | |
CN102314400B (zh) | 一种分散聚合式dma方法及装置 | |
CN204423250U (zh) | 一种具有多路高速智能can的x86嵌入式cpu主板 | |
WO2016189294A1 (en) | Single-chip multi-processor communication | |
CN106489132A (zh) | 读写数据的方法、装置、存储设备和计算机*** | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机***及实现方法 | |
CN104714918A (zh) | 主机环境下高速fc总线数据接收及缓冲方法 | |
EP3036648B1 (en) | Enhanced data transfer in multi-cpu systems | |
CN117032812B (zh) | 服务器的管理方法、设备、装置、存储介质和电子设备 | |
CN113297097A (zh) | 一种面向封装级多处理器的混合地址编程方法 | |
CN104317747B (zh) | 一种网格接收机的数据缓存与发送装置及方法 | |
CN103106164A (zh) | 一种高效dma控制器 | |
WO2021247077A1 (en) | Link affinitization to reduce transfer latency | |
CN105579952B (zh) | 利用伪停顿的高速通道上的emi抑制 | |
CN202178776U (zh) | 一种基于can总线的高速通讯*** |
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 |