PCIe传输和DMA传输有什么区别

区别:PCIe实质上就是一种高速IO,而DMA(direct memory access)的主要作用是做大规模的数据搬运。PCIe有规定的协议、数据包格式、时钟配比、电压规范,不同的PCIe设备之间理论上是可以互相通信的,DMA并没有绝对规范的接口协议,DMA一般都集成在片内。

PCIe传输和DMA传输有什么区别-Worktile社区

PCIe实质上就是一种高速IO,而DMA(direct memory access)的主要作用是做大规模的数据搬运。

PCIe有规定的协议,数据包格式,时钟配比,电压规范,不同的PCIe设备之间理论上是可以互相通信的,DMA并没有绝对规范的接口协议,大部分公司的DMA一般都对接私有总线,所以DMA一般都集成在片内。

综上所述,PCIe的input/output ,基本都对接IO,而DMA的input/output,对应的是诸如noc之类的片内总线。

上面说的是PCIe和DMA的区别,我们进一步抽象,将他们的实现细节全部悬置起来,最后会发现,PCIe对应的是一种具有完整规定性的总线协议,而DMA对应的其实只是一种功能本身,即Direct Memory Access,除此之外并没有给出更多的规定性。至于DMA是对接的是何种总线,如何设置src/dst address,可以工作在主频多少的系统中,能够容纳outstanding的个数是多少,不好意思,各家公司的实现都不相同,无可奉告。

回到问题本身,PCIe和DMA传输有区别吗?不知这里问的是对host/device的memory访问吗?仅仅只是从数据传输的结果来看,二者没有任何区别,DMA能做的,PCIe都能做。但是,如果从效率上来看,DMA的效率无疑远远高于PCIe。

首先,以访问device memory为例,pcie作为master发起了,将memory A中的数据copy到memory B中的访问,需要copy的data大约是1GB,需要将A中的数据读出,再写到B中。假设pcie一次读访问的return data非常多是4KB(具体多少我不记得了……),读请求从IO进入,经noc,到cache,如果cache miss,则再进入memory controller(总共读的数据量太大,所以一定会去memory,别想逃),经ddr,到达dram,数据读出,再一路返回,如此过程重复250000次……然后再以类似的过程发起写请求,不过pcie的write tlp是posted的,所以,不需要等response,理论上会快不少。但是,在此过程中,你的pcie总线可是被memory访问的工作全程占用的!host可是需要用它进行系统管理的,这种“搬砖”的活岂能让你这么玩?

接下来我们看用片内dma,访问由dma发起,直接经内部总线,到cache,到memory controller(如果cache  miss的话),到ddr 和 dram ,然后!不需要等到所有的read return全回来,只要有数据返回,dma会直接将它写到目标地址中去(路径同上),全程的bubble很小,带宽利用率极高。而且,一般片内会有多个dma!可以同时做这种数据搬运的工作!同时,dma的访问是直接在片内发起的,省去了从IO到noc这一段的path delay,这一读一写,效应更明显了(当然在outstanding的读和写中,这一段path delay的影响可能不会很大)。别以为pcie的速度有多快(gen5能到32GT/s),IO的速度即使再快,和片内这种大规模并行总线相比仍然只是弟弟,关键是此时pcie可以更多的聚焦于系统管理的任务(而不是琐碎的存储操作),整个系统运行的效率,大大提升。

最后,很多pcie controller本身也包含了dma功能(host和device做memory交互时很常见),比单纯地使用pcie发读TLP + 写TLP的方式确实要高效多了。但是和片内DMA比,只能说…仍然还是个弟弟。术业有专攻,pcie很强大,主要强在通用性,兼容性,以及背靠x86庞大的生态系统,但在很多特殊场景中,不见得有多么高效。

延伸阅读:

什么是PCIe?

PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。

PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。

PCIe交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”,简称“PCI-e”。它的主要优势就是数据传输速率高,而且还有相当大的发展潜力。

PCI Express也有多种规格,从PCI Express x1到PCI Express x32,能满足将来一定时间内出现的低速设备和高速设备的需求。PCI-Express的接口是PCIe 3.0接口,其比特率为8Gbps,约为上一代产品带宽的两倍,并且包含发射器和接收器均衡、PLL改善以及时钟数据恢复等一系列重要的新功能,用以改善数据传输和数据保护性能。

文章标题:PCIe传输和DMA传输有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38333

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编的头像小编
上一篇 2023年2月14日 下午11:30
下一篇 2023年2月15日 上午12:07

相关推荐

  • 云端数据库是什么意思

    云端数据库是一种数据库服务,它通过互联网提供数据存储和管理功能,而不需要用户自行维护物理服务器。这种服务具有高扩展性、灵活性、成本效益高、易于维护等特点。高扩展性意味着可以根据需要随时增加或减少存储和计算资源,而不受物理硬件限制。详细来说,云端数据库允许企业在业务增长或需求变化时,迅速调整其数据库容…

    2024年7月12日
    000
  • 为什么数据库加密失败原因

    数据库加密失败的原因有很多,主要包括:加密密钥管理不当、加密算法选择错误、数据库配置不正确、加密过程中发生错误、加密后的数据无法解密等。这其中,加密密钥管理不当是导致数据库加密失败的最常见原因。如果管理不当,可能会导致密钥丢失或被非法获取,进而导致加密失败。管理加密密钥的过程包括密钥的生成、分发、存…

    2024年7月12日
    000
  • 冷门数据库连接工具是什么

    冷门数据库连接工具主要有:HeidiSQL、Navicat、DBeaver、DataGrip、Aqua Data Studio、DbVisualizer、SQLyog、Toad for Oracle、SQuirreL SQL、RazorSQL。其中,HeidiSQL 是一个轻量级、高效的数据库管理工…

    2024年7月12日
    200
  • 文档管理工具全指南:2024年10款优质文档管理系统盘点

    本文将分享2024年10款高效在线文档协作工具:PingCode、Worktile、石墨文档、Confluence、Slack、飞书文档、Zoho Docs、腾讯文档、Google Docs、印象笔记。 许多企业和个人都在寻求那些可以提升文档处理效率、简化沟通流程,并实现实时协作的在线工具。选择合适…

    2024年7月12日
    1300
  • 高效需求管理:10款优质需求池管理工具分享

    本文将分享10款优质需求池管理工具:PingCode、Worktile、Teambition、Epicor Kinetic、TAPD、SAP IBP、Logility、RELEX Solutions、JIRA、明道云。 在管理项目和产品需求时,正确的工具能够大幅提高效率与透明度。如何从众多需求池工具…

    2024年7月11日
    1100

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部