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年8月7日
    700
  • 项目管理目标 ci目标是什么

    在项目管理中,CI目标是指持续集成目标,这是一种软件开发实践,它要求团队频繁地将代码集成到一个共享的主线中。CI目标主要包括:减少集成问题、提高软件质量、加速软件发布。 持续集成通过自动化的构建和测试,可以发现并修复集成问题,从而避免了“集成地狱”的情况。这有利于提高团队的效率,减少重复的工作,帮助…

    2024年8月7日
    400
  • 文化项目运行管理是什么

    文化项目运行管理包括:项目规划、资源配置、进度控制、成本管理、风险管理。项目规划是文化项目运行管理中最为关键的一环。它不仅涉及到项目的总体目标、阶段性目标和具体任务的明确,还包括对项目时间表、资源分配及预算的详细安排。一个科学的项目规划可以有效地指导项目的实施,确保项目按计划进行,避免资源浪费和时间…

    2024年8月7日
    300
  • 新加坡项目管理模式是什么

    新加坡的项目管理模式是一种以结果为导向,注重团队协作的管理方式。这种模式的主要特点包括:以项目为中心,明确项目目标和预期成果;强调团队之间的沟通和协作,确保项目的顺利进行;关注风险管理,提前预防和解决可能出现的问题;重视质量管理,保证项目成果的质量和效益。其中,以项目为中心,明确项目目标和预期成果是…

    2024年8月7日
    500
  • 项目管理师需要学什么

    项目管理师需要掌握的知识和技能主要包括:项目管理理论、项目质量管理、项目风险管理、项目时间管理、项目成本管理、项目沟通管理、项目人力资源管理、项目采购管理、项目整合管理等。此外,还需要具备一定的领导力、沟通能力、决策能力、协调能力、解决问题的能力以及时间管理能力等。 接下来,我将详细介绍这些知识和技…

    2024年8月7日
    200

发表回复

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

400-800-1024

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

分享本页
返回顶部