- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存直接存取——基本原理、结构与应用(四篇系列文章之一)
By David Katz and Rick Gentile, Analog Devices, Inc.
嵌入式的 处理器核在单个周期内可以执行多项操作,包括计算、数据读取、数据存储和指针增/减。此外,此种内核可以通过对寄存器文件进行数据读写操作来协调控制内部、外部存储空间之间的数据传递。
所有这些听上去很棒,但在现实中,只有当数据的移动过程无需烦扰内核来执行传输操作时,你的应用才能保证最佳的性能。
这样的应用正是内存直接存取(direct memory access,DMA)控制器能一展身手的地方。处理器DMA功能,内核从内部/外部和外设间或者内存空间之间的数据转移(后者也称为内存DMA,或者“MemDMA”)中解脱出来。
这为何显得如此重要?好吧,不妨设想一个处理器的视频端口有一个FIFO,该FIF
DMA在理论上听上去很棒,但是基于PC的软件设计者在转向嵌入式技术领域时却对依靠DMA控制器转移数据的方法的采用迟疑不决。这种犹豫往往源自他们的一种印象:在考虑采用DMA时,编程模式的复杂性将会呈指数形式的增长。然而,我们的目标是让你的精神松缓下来,然后向你展示DMA是你真正的朋友。在这一系列文章中,我们将专注于DMA控制器本身,并为你展示如何利用DMA来优化性能,并最终就如何能对作为总体框架的一部分的DMA实施最佳的管理给出我们的理念。
让我们先偏离我们的主题,快速讨论一下内存空间方面的术语。嵌入式处理器采用分级式的内存架构,该架构努力保持内存空间在层次、大小和性能水平等方面的平衡。最接近内核处理器的内存(被称为“1级”或者“L1”内存)以全部的内核时钟频率工作。“最接近”一词只是字面上的表达,主要是因为L1内存在物理位置上最接近集成电路芯片上的内存处理器,这一安排是为了实现最高的可访问性和工作速度。L1内存常常被划分为指令和数据区,以便有效地利用内存总线的带宽。
当然,L1内存在规模上必然是有限的。对于代码规模更大的系统来说,需要提供另外的片上和片外的内存——延迟也相应上升。片上规模更大的内存被称为2级(“L2”)内存,我们将片外的内存称为3级(“L3”)内存。L1内存的容量往往有几十kByte之多,而片上的L2内存规模则应该用百kByte来衡量,L3则可以轻松地达到数Mbyte的规模。
好了——回到当前正在讨论的话题。DMA控制器是一种用于在系统内部各处间转移数据的独特的外设。可以将其视为一种能够通过一组专用总线将内部和外部存储与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。值得注意的是,只有数据流量较大(kByte/s或者更高)的外设才必须具备DMA能力。这些应用方面典型的例子包括视频、音频和网络接口。带宽较低的外设也可以具备DMA能力,至少对内核所造成的负担,即必须插手来帮助这些接口实现数据的转移,可以得以减少。
一般而言,DMA控制器将包括一条地址总线、一条数据总线和控制寄存器。高效率的DMA控制器将具有要求访问其需要的任意资源区而无需让处理器本身介入的能力。它必须有能力生成中断。最后,它必须能在控制器内部计算出地址。
一个处理器可以包含多个DMA控制器。每个控制器有多个DMA通道,以及多条直接与内存站(memory bank)和外设的总线,正如图1所示的那样。在多种高性能的处理器集成了两种类型的DMA控制器。第一类往往被称为“系统DMA控制器”,可以实现对任何资源区(外设和内存)的访问。对于这种类型的控制器来说,信号周期数是以系统时钟(SCLKs)来计数的,频率最高可达133MHz(以ADI的Blackfin处理器为例)。第二类被称为内部存储DMA控制器(IMDMA),专门用于内部存储所处位置之间的相互存取操作。因为存取都发生在内部(L1-L1,L1-L2,或者L2-L2),周期数的计数则以内核时钟(CCLK)为基准来进行,该时钟的速度可以超过600MHz。
图1 系统和内存DMA架构
图中:Memory——内存,DMA System Bus——DMA系统总线。DMA Controller——DMA控制器,DMA Access Bus——DMA存取总线,peripheral——外设,Processor——处理器,DMA External bus——DMA外部总线。
每个DMA控制器有一组FIFO,该端口起到DMA子系统和外设或内存之间的缓冲器的作用。对于MemDMA来说,传输的源区和目的区都有一组FIFO存在。当资源紧张,不足以让传输最终完成的话,则FIFO可以提供数据的暂存区,从而提高了性能。
因为你一般会在代码初始化过程中对DMA控制器进行配置,内核就只需要在数据集传输完成后对中断作出响应即可
您可能关注的文档
最近下载
- 管道防腐补口、保温施工记录.docx VIP
- 普外科疾病健康宣教知识讲座.pptx VIP
- 日本留考(EJU)日本语真题令和2年第2回日本语.pdf VIP
- 2024年仓库安全保卫管理制度(3篇) .pdf VIP
- VW-50097-孔隙率标准.pdf VIP
- 传递现象-Transport-phenomenon-Lesson-3---Calculus-for-Vectors-and-Tensors-in-Cartesian-Coordinates.ppt VIP
- 教师心理健康讲座-做一个幸福的教师--课件.ppt VIP
- 动火作业施工方案.docx VIP
- 工作计划表(工作进度表).xlsx VIP
- 网格员工作手册.pdf
文档评论(0)