一般而言,DMA控制器将包括一条的址总线、一条数据总线.PDFVIP

一般而言,DMA控制器将包括一条的址总线、一条数据总线.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一般而言,DMA控制器将包括一条的址总线、一条数据总线

DMA 文档 DMA 控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通 过一组专用总线将内部和外部存储器与每个具有 DMA 能力的外设连接起来的控 制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。 值得注意的是,通常只有数据流量较大 (kBps或者更高)的外设才需要支持DMA 能力,这些应用方面典型的例子包括视频、音频和网络接口。 一般而言,DMA 控制器将包括一条地址总线、一条数据总线和控制寄存 器。高效率的 DMA 控制器将具有访问其所需要的任意资源的能力,而无须处理 器本身的介入,它必须能产生中断。最后,它必须能在控制器内部计算出地 址。 一个处理器可以包含多个 DMA 控制器。每个控制器有多个 DMA 通道, 以及多条直接与存储器站(memory bank)和外设连接的总线,如图 1 所示。在 很多高性能处理器中集成了两种类型的 DMA 控制器。第一类通常称为 “系统 DMA 控制器”,可以实现对任何资源(外设和存储器)的访问,对于这种类型的 控制器来说,信号周期数是以系统时钟(SCLK)来计数的,以 ADI 的Blackfin 处理器为例,频率最高可达 133MHz。第二类称为内部存储器DMA 控制器 (IMDMA),专门用于内部存储器所处位置之间的相互存取操作。因为存取都发 生在内部 (L1-L1、L1-L2,或者 L2-L2),周期数的计数则以内核时钟(CCLK) 为基准来进行,该时钟的速度可以超过 600MHz。 每个 DMA 控制器有一组 FIFO,起到DMA 子系统和外设或存储器之间的 缓冲器的作用。对于 MemDMA(Memory DMA)来说,传输的源端和目标端都有一组 FIFO 存在。当资源紧张而不能完成数据传输的话,则 FIFO 可以提供数据的暂 存区,从而提高性能。 因为你通常会在代码初始化过程中对DMA 控制器进行配置,内核就只 需要在数据传输完成后对中断做出响应即可。你可以对 DMA 控制进行编程,让 其与内核并行地移动数据,而同时让内核执行其基本的处理任务—那些应该让 它专注完成的工作。 图 1:系统和存储器DMA 架构。 在一个优化的应用中,内核永远不用参与任何数据的移动,而仅仅对 L1 存储器中的数据进行读写。于是,内核不需要等待数据的到来,因为 DMA 引 擎会在内核准备读取数据之前将数据准备好。图 2 给出了处理器和 DMA 控制器 间的交互关系。由处理器完成的操作步骤包括:建立传输,启用中断,生成中 断时执行代码。返回到处理器的中断输入可以用来指示 “数据已经准备好,可 进行处理”。 图2:DMA 控制器。 数据除了往来外设之外,还需要从一个存储器空间转移到另一个空间 中。例如,视频源可以从一个视频端口直接流入 L3 存储器,因为工作缓冲区 规模太大,无法放入到存储器中。我们并不希望让处理器在每次需要执行计算 时都从外部存储读取像素信息,因此为了提高存取的效率,可以用一个存储器 到存储器的 DMA(MemDMA)来将像素转移到 L1 或者 L2 存储器中。 到目前为之,我们还仅专注于数据的移动,但是 DMA 的传送能力并不总是用来 移动数据。我们可以用代码覆盖的办法来提高性能,将 DMA 的控制器配置为在 执行前把代码送入 L1 指令存储器。代码往往存储于较大的外部存储器中,而 根据需要有选择性的送入 L1。 DMA 控制器的编程 让我们考察一下在定义 DMA 活动的过程中可以有哪些选项。我们将从 最简单的模型开始,并在此基础上过渡到更为灵活的模型,这反过来增加了设 置的复杂度。 对于任何类型的 DMA 传输,我们都需要规定数据的起始源和目标地 址。对于外设 DMA 的情况来说,外设的FIFO 可以作为数据源或者目标端。当 外设作为源端时,某个存储器的位置(内部或外部)则成为目标端地址。当外设 作为目标端,存储的位置 (内部或者外部)则成为源端地址。 在最简单的 MemDMA 情况中,我们需要告诉 DMA 控制器源端地址、目标 端地址和待传送的字的个数。采用外设 DMA 的情况下,我们规定数据的源端或 者目标端,具体则取决于传输的方向。每次传输的字的大小可以是 8、16 或者 32 位。这种类型的事务代表了简单的 1 维(“1D”)统一 “跨度”(unity stride)的传输。作为这

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档