0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种高性能多通道通用DMA设计与实现

机电信息杂志 来源:机电信息杂志 2023-11-20 15:52 次阅读

摘 要:

为充分发挥异构多核DSP芯片的实时计算能力,设计并实现了一种高性能多通道的通用DMA,该DMA最大支持64个通道的数据搬运,并支持一维、二维、转置以及级联描述符等多种传输模式。芯片实测传输性能最高可达11.7 GB/s,实现了高效率、高性能的数据供给。

0引言

DSP芯片因其强大的实时计算能力,在军事、通信、工控等领域嵌入式系统中应用广泛[1]。应用需求的不断提高以及信息技术的不断进步,推动了高性能DSP芯片向异构多核、高并行、高集成的方向发展,在DSP芯片具有高算力的同时,其对高效率、高性能的数据供给同样提出了更高的要求。DMA(Direct Memory Access)技术能够提供内存和内存、内存和外设之间的直接数据传输通道,不仅能够提高数据传输速率,还能使得DSP核从复杂的数据传输任务中脱离出来,从而有效提升芯片性能,已成为行业的研究热点[2-5]。

本文面向异构多核DSP芯片的需求,设计实现了一种高性能多通道通用DMA(Multi-channel General-purpose DMA,MG-DMA),支持一维、二维、转置以及级联描述符等多种传输模式,最大64通道,大幅提升了数据传输速率,有效匹配了DSP芯片的计算能力。

1设计与实现

1.1 总体设计

MG-DMA的结构框图如图1所示,包括配置和状态寄存器模块(CSR)、通道选择模块(CHS)、矩阵转置参数模块(MTP)、读写总线控制模块(WRBC)、4个DMA执行模块(DMAE0~DMAE3)以及DMA缓存模块(DMAB)。

33ffd894-8779-11ee-939d-92fbcf53809c.png

各模块功能如下:

(1)配置和状态寄存器模块(CSR):CSR模块有64个逻辑通道的配置寄存器组以及一个总的中端和状态控制寄存器,其中,配置寄存器组主要包括通道传输数据量、数据源地址、数据目的地址、外部描述符地址等信息,64个逻辑通道可根据用户需求映射到任意4个物理通道,映射关系由对应物理通道编号寄存器的值决定。当配置好寄存器组后,CSR模块将对应产生通道请求信号送给通道选择模块,启动一次DMA传输,当DMA传输完成或发生传输错误时,触发相应中断。

(2)通道选择模块(CHS):CHS模块根据接收到的通道请求信号产生通道选择信号,并计算本次传输的配置参数,将参数和传输启动信号传输给对应的DMAE模块,同时将通道选择信号送给WRBC模块,启动一次传输。

(3)DMA执行模块(DMAE):DMAE内部读写各自独立,当一次传输启动后,DMAE模块先启动一次burst读,将读出的数据缓存在DMAB中,一次burst最大支持128个256 bits的数据,读完后再将缓存中的数据写出到相应地址。当所有数据写完或者发生错误时,产生相应的中断信号。4个物理通道各对应一个DMAE模块,4个通道可以同时进行数据传输,但同时只有一个模块可以进行矩阵转置操作,4个物理通道轮流进行矩阵转置。

(4)DMA缓存模块(DMAB):DMAB模块存储空间共32 kByte,每个通道使用4 kByte的RAM,其余16 kByte作为矩阵转置使用。读数据时,DMAE模块将读到的数据进行256 bits拼接对齐后存入DMAB模块;写数据时,由于RAM不是寄存器输出,DMAB模块会将RAM的输出数据进行寄存器锁存后送给DMAE模块,DMAE模块按照地址进行对齐移位后再写出。

矩阵转置时,为实现对存放在内存中的矩阵进行从源矩阵到目标矩阵的行列转置功能,DMA每次转置一个32×32的小矩阵,自动累加矩阵的源地址和目的地址,最终实现一个大矩阵的转置。DMAB中使用了4个4 kByte的RAM,每两个作为一组,组成两个8 kByte的乒乓RAM,每组支持32行×32列×8 kByte的矩阵,实现了乒乓操作。

(5)矩阵转置参数模块(MTP):MTP模块主要用于矩阵转置时的参数计算,每个小矩阵的大小为32行×32列,不足的按实际大小读写。当小矩阵读或写完毕后,计算下一个小矩阵的地址和对应在RAM中的地址。

(6)读写总线控制模块(WRBC):WRBC主要包括读通道编号和写通道编号两个动态的寄存器,读通道编号表示当前使用AXI读操作的通道编号,写通道编号表示当前使用AXI写操作的通道编号,在当前物理通道传输完成后,会判断下一个通道是否需要操作,如果需要,则将AXI总线使用权交给下一个通道。

1.2 工作流程

MG-DMA典型工作流程如下:

(1)通过APB接口配置通道寄存器;当有通道请求时,CSR模块将请求送给CHS模块。

(2)判断是否是矩阵转置请求,如果是,判断矩阵工作编号是否等于通道编号,如果不是,通道允许传输;如果矩阵工作编号等于通道编号,通道允许矩阵传输,将传输启动信号和传输参数送给DMAE模块。如果不相等,等待其他通道矩阵传输完成。

(3)DMAE模块收到传输启动信号后,根据收到的传输参数开始读取数据;DMAE模块每次发送一个burst读操作,读取不超过16个256 bits的数据,可以连续发送多个读命令。

(4)当DMAE模块发送的读命令达到上限时,通知WRBC模块,WRBC模块判断下一个通道是否要读取数据,如果是,更新到下一个通道编号的值,如果不是,按照4个通道顺序轮询。

(5)当DMAE模块在缓存数据大于16个256 bits时,开始burst写操作;如果当次读的数据被写完,通知WRBC模块;WRBC模块判断下一个通道是否要写数据,如果是,更新到下一个通道编号的值,如果不是,按照4个通道顺序轮询。

(6)当收到通道传输停止或总线响应错误时,DMAE模块在发完本次burst读命令后停止读取新数据,在写完所有的数据后,提起总线错误或传输错误中断。

(7)如果不需要读取描述符,当所有数据写完时通道传输完成;如果需要读取描述符,读取下一个描述符后进行下一次DMA操作。

1.3 物理实现

本文所述MG-DMA模块应用于3080型DSP芯片,该芯片包括4个处理核和4个专用加速核,支持PCIe、SRIO等高速接口以及2路DDR4大带宽存储,其片内DMA的性能对DSP芯片计算能力的发挥有着重要作用。物理实现后,MG-DMA模块的总规模约41万Inst,工作主频达到800 MHz。芯片流片后的实物图如图2所示。

341ed00a-8779-11ee-939d-92fbcf53809c.png

2测试

3080型DSP芯片测试板如图3所示。设置芯片DDR速率为2 400 MT/s,分别选择传输数据长度为1 MB~1 GB,测量MG-DMA的性能如图4所示,可以看到,DMA性能随点数的变化不大,在同一DDR内部从一段地址搬运数据到另一段地址的性能平均在5.76 GB/s,从一个DDR搬运到另一个DDR的性能平均在11 GB/s。

345221f8-8779-11ee-939d-92fbcf53809c.png

改变DDR的速率从1 600 MT/s到3 200 MT/s,设定数据长度为1 MB,测量MG-DMA的性能如图5所示,可以看到,随着DDR速率增加,MG-DMA的性能呈线性增加,DDR速率为3 200 MT/s时,DDR内DMA传输性能为6.7 GB/s,DDR间的DMA传输性能高达11.7 GB/s。

345e5270-8779-11ee-939d-92fbcf53809c.png

3结语

本文面向异构多核DSP芯片对数据传输性能的需求,设计并实现了一种高性能多通道的通用DMA,实现了64个逻辑通道、4个物理通道的数据搬运,能够支持一维、二维、转置以及级联描述符等多种传输模式。芯片实测结果显示,单个DDR内DMA传输性能为6.7 GB/s,DDR间的DMA传输性能高达11.7 GB/s,大幅提升了数据传输速率,有效匹配了DSP芯片的计算能力。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128219
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99020
  • DSP芯片
    +关注

    关注

    8

    文章

    141

    浏览量

    29721
  • 多核DSP
    +关注

    关注

    0

    文章

    19

    浏览量

    11314

原文标题:一种高性能多通道通用DMA设计与实现

文章出处:【微信号:机电信息杂志,微信公众号:机电信息杂志】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA 1/4/8通道PCIe-DMA控制器IP,高性能应用介绍

    Subsystem实现了使用DMA地址队列的独立通道高性能Continous或Scather Gather
    发表于 03-07 13:54

    DMA实现的STM32ADC通道采集读数问题

    最近几天直在做用DMA实现的STM32ADC通道采集,所有配置都是按着要求来的,ADC和DMA
    发表于 03-26 18:38

    一种基于FPGA的通道频率测量系统的实现方法介绍

    设计了一种通道频率测量系统。系统由模拟开关、信号调理电路、FPGA、总线驱动电路构成,实现对频率信号的分压、放大、滤波、比较、测量,具备回路自测试功能,可与主设备进行数据交互,具有精
    发表于 06-27 07:23

    如何设计并实现一种高性能中频采样系统?

    如何设计并实现一种高性能中频采样系统?中频采样系统系统总体设计由哪些组成?它们分别有什么作用?
    发表于 04-07 07:09

    请问怎么设计一种高性能集成电压比较器?

    怎么设计一种高性能集成电压比较器?
    发表于 04-21 06:25

    请问怎么设计一种高性能数据采集系统?

    怎么设计一种高性能数据采集系统?影响工业数据采集系统DAS的主要噪声和干扰源有哪些?如何利用接地和屏蔽措施保持信号完整性?PCB布线通用规则有哪些?
    发表于 04-21 06:48

    如何去设计一种高性能的数据采集系统?

    μC/OSII嵌入式操作系统简介数据采集系统基本工作原理如何去设计一种高性能的数据采集系统?
    发表于 04-22 06:46

    分享一种通道天线校准参考解决方案

    本文分享了一种通道天线校准参考解决方案。
    发表于 05-10 06:12

    如何去实现一种高性能网络接口设计?

    传统网络接口处理流程包括哪些步骤?如何去实现一种高性能网络接口设计?
    发表于 05-20 06:41

    分享一种高性能的FM内置天线解决方案

    分享一种高性能的FM内置天线解决方案
    发表于 05-26 06:18

    如何去实现一种高性能IP电话语音终端系统的设计?

    如何去实现一种高性能IP电话语音终端系统的设计?
    发表于 06-04 06:39

    一种高性能视频系统的解决方案

    一种基于内核处理器的高性能视频系统设计
    发表于 06-07 07:07

    如何去实现一种基于STM32的DMA驱动设计呢

    串口与DMA是如何结合的如何去实现一种基于STM32的DMA驱动设计呢?
    发表于 12-10 06:29

    通道高性能视频采集与加速系统|2023集创赛紫光同创杯优秀作品

    准确率仍有优化空间。 作品简介:本项目通过紫光同创FPGA实现通道高性能的视频采集和加速系 统。其包括HDMI/千兆以太网/摄像头/
    发表于 09-21 17:34

    Xilinx高性能PCIe DMA控制器IP,8个DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道高性能Contin
    的头像 发表于 02-22 11:11 299次阅读
    Xilinx<b class='flag-5'>高性能</b>PCIe <b class='flag-5'>DMA</b>控制器IP,8个<b class='flag-5'>DMA</b><b class='flag-5'>通道</b>