DMA sigang@mti.xidian.edu.cn.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
第3章 系统总线 3.1 总线的基本概念 3.2 总线的分类 3.3 总线特性及性能指标 3.4 总线结构 3.5 总线控制 本章主要知识点小结.
职业指导服务系统 欢迎了解职业指导服务系统!
计算机组成原理 第三讲 计算机科学与技术学院 舒燕君.
第十一章 文獻資料分析法 M99E0202 吳孟樺.
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
我征服了黃山 林達的黃山之旅 2006春.
第七章 输入输出设备.
提高自身素质做好 新时期班主任工作 北京市广渠门中学 高金英.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
普通话模拟测试 与学习平台 使用指南.
第二章 项目一:企业厂区与车间平面设计 1.
信息科学与工程学院计算机科学系 2006年9月—2007年1月
第一章信託法 第一節 信託契約 第二節 信託財產 第三節 受益人 第四節 受託人 第五節 信託關係之消滅.
網路小說劇情建構與伏線營造 Windows98.
均衡城鄉發展政策理念落實的挑戰與展望 --均衡城鄉發展推動方案-- 富麗農村、風情小鎮示範計畫 主講人:廖耀東 副組長
為孩子編織一個支持網  台北市家庭暴力暨性侵害防治中心.
操作系统结构.
Profibus Training Course
MySQL主从同步
最新計算機概論 第3章 計算機組織.
第8章 机床操作 主讲:臧红彬 博士.
Information Security Fundamentals and Practices 資訊安全概論與實務
第五章 设 备 管 理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 I/O软件 5.5 设备分配
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
关于整合检验检测认证机构实施意见的通知(国办发〔2014〕8号)
商业贿赂的构成及立法规制 2006级法学1班.
推进德育创新 做好新时期班主任工作 北京市广渠门中学 高金英.
—营造健康网络生活环境 王立丰 ISA与企业网络安全管理 —营造健康网络生活环境 王立丰
Chapter 13 輸入/輸出系統 (I/O Systems)
證券商新種業務增修訂法令介紹 交易部 101年6月.
FC OB1 FB SFC 操作系统 SFB OBs 结构化编程 其它
主讲教师:唐大仕 第5讲 计算机硬件 主讲教师:唐大仕
第 6 章 I/O 接口和总线 中国科学技术大学 何克东.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
第一章 C语言概述.
中国科学技术大学计算机系 陈香兰(0512- ) spring 2011
簡易電腦概論說明 新生國中 吳政岡.
Basis基本操作、使用者 管理與權限設定
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
作 業 系 統 第三組 楊育翰 顏瑞霖.
Operating System Internals and Design principles
Chapter 3 行程觀念 (Process Concept)
I2C匯流排介面單元.
第七章设备管理 7. 1 概述 7. 2 I/O软件的组成 7. 3 I/O硬件特点 7. 4 有关技术 7. 5 网络设备 7
第2章 電腦硬體的架構及功能.
第二章 電腦硬體知識 2-1 電腦的組成與架構 2-2 處理器 2-3 記憶體 2-4 輸入與輸出裝置 2-5 電腦的操作與保養.
8个处理IRP的模型
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
指導教授 張寶棣 助教 黃智穎 第十七組 B 物理三 李明哲 B 大氣三 吳宛真
China’s Software Industry August 2006 Instructor: Hengming Zou, Ph.D.
第 18 讲 一、第七章主要内容回顾 1、 计算机硬件产生故障的原因 2、 计算机硬件维修的方法 3、 计算机硬件故障检修实例分析
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
操作系统原理与设计 Operating Systems: Design and Implementation
第7章 其他系統軟體.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
第一章.
第二章 電腦硬體知識 Chapter 2-電腦硬體知識.
重估價模式 如果一項不動產丶廠房及設備的公允價值能可靠地衡量,則企業可以選用重估價模式作為後續衡量的會計政策。 採重估價模式其帳面金額為:
作業系統 第十四章 輸出輸入系統.
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
第三章 世界文明的蛻變與互動 第一節 歐洲社會的蛻變 第二節 世界文明的交匯 第三節 亞洲大帝國的發展 1.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
全台灣最美的日出好美…好美… 這就是傳說中的潑墨二寮,耳聞她的日出有如國畫般 所以稱為潑墨二寮
第6章 详细设计 Detailed Design
Presentation transcript:

DMA sigang@mti.xidian.edu.cn

DMA DMA即Direct Memory access 无需计算机的CPU的干预就可以在内存和外设之间传输数据 通常都有DMA控制器来进行DMA操作,DMA控制器可能是主板上的,也有可能是外设特有的。 为什么需要 DMA?

传输模型 Windows 中的DMA传输基于这个模型

适配器对象(adapter) Windows 2000内核使用一个称为适配器对象的数据结构来描述设备上的DMA特征,并用它来控制访问潜在的共享资源,如系统DMA通道和映射寄存器 通常在StartDevice函数中调用IoGetDmaAdapter获得适配器对象 适配器对象中有一个指针,指向一个DmaOperations的结构,该结构包含了所有需要的DMA相关的其它函数,这些函数如下表

DmaOperations Function Pointer Description PutDmaAdapter Destroys adapter object AllocateCommonBuffer Allocates a common buffer FreeCommonBuffer Releases a common buffer AllocateAdapterChannel Reserves adapter and map registers FlushAdapterBuffers Flushes intermediate data buffers after transfer FreeAdapterChannel Releases adapter object and map registers FreeMapRegisters Releases map registers only MapTransfer Programs one stage of a transfer GetDmaAlignment Gets address alignment required for adapter ReadDmaCounter Determines residual count GetScatterGatherList Reserves adapter and constructs scatter/gather list PutScatterGatherList Releases scatter/gather list

传输策略选择 1。如果设备有总线主控能力,那么它就有访问主存的必要硬件部件,因此只需要告诉它几个基本事实,如从哪开始,需要传输多少单位的数据,是输入操作还是输出操作,等等。可以向硬件设计者咨询或者固件程序员咨询以得到细节部分,否则只能参考许多硬件级的说明文档。

传输策略选择 2。一个有分散/聚集(scatter/gather)能力的设备可以在自身与不连续的物理内存区之间传输大块数据。设备的分散/聚集能力对软件十分有利,它可以避免对具有连续页帧的大块的内存的需求。页可以被简单地锁定在所在的物理内存,只要把内存地址告诉设备就可以进行。

传输策略选择 3。如果设备不是总线主控设备,那么需要使用计算机主板上的系统DMA控制器。这种形式的DMA传输被称为从属DMA(slave DMA)。与ISA总线连接的系统DMA控制器对所能访问的物理内存和一次传输的数据量会有些限制。EISA总线的DMA控制器去掉了这些限制。在Windows 2000中,不必知道硬件具体插入到哪种类型的总线,因为系统自动参考这些不同的限定。

传输策略选择 4。通常,DMA操作将包括编程硬件映射寄存器或操作前后的数据复制。如果设备需要连续地读写数据,我们不希望在每次I/O请求中都做这两步,这将大大地降低处理速度,在某些情况下也是不能接受的。因此,应该分配一个公用缓冲区(common buffer),设备和驱动程序可以在任何时间同时访问这个缓冲区。

说明 在涉及DMA传输的过程中策略的选择是第一步也是最重要的一步。 不仅需要参考硬件,还要参考可能的软件需求(主控,从属,包,通用缓冲区) 尽管这四种因素的相互影响会产生许多种不同的结果,但执行的步骤中有许多共同的特征。如下图显示了一次传输过程:

执行DMA传输 基于包(packet-based)的DMA传输。在这种方式中,将使用IRP携带的数据缓冲区来传输一定量的数据。 为了简单,让我们假设面对当前最普通的情况:一个基于PCI的总线主控设备并且没有分散/聚集能力。 为什么简单? 下面按照程序编写的通常步骤来详细说明DMA的过程

缓冲方式 当创建设备对象时,通常指定使用Direct缓冲方式,即设置DO_DIRECT_IO标志。或者在定义CTL_CODE时指定direct input或者direct output方式。 因为调用的MapTransfer函数需要一个MDL作为参数 ,这种方式会在每一个IRP的MdlAddress保存描述用户缓冲区的MDL

创建和销毁适配器对象 在处理start device的pnp请求时,我们除了要取得IO,内存,中断资源外,还要创建一个适配器对象(adapter obiect)。 在处理stop device请求时,除了释放映射的IO,内存资源,断开中断的连接外,还要销毁适配器对象。 例如:DMA.doc

和其它资源区别 前面讲过的IO,内存,和中断资源,我们都回在一个CmResourceTypeXxx类型的case子句中获得,这里不需要CmResourceTypeDma类型的case子句,因为设备是总线主控方式,硬件本身包含有执行DMA传输所必须的所有电路逻辑,所以系统没必要赋予设备DMA资源。

获取DMA通道 为了初始化一个I/O操作,StartIo例程必须首先调用适配器对象的AllocateAdapterChannel例程以获取适配器对象。该函数的一个参数是AdapterControl例程的地址,I/O管理器将在获取操作完成后调用这个例程。 AllocateAdapterChannel函数的准备和调用过程:DMA.doc

AllocateAdapterChannel何时完成 等待DMA控制器,和映射寄存器可用 主控,从属,支持映射寄否? 当DMA控制器,和映射寄存器都可用时, AllocateAdapterChannel调用AdapterControl例程

调用AdapterControl AllocateAdapterChannel最终将调用驱动程序提供的AdapterControl例程(在DISPATCH_LEVEL,就象StartIo例程一样)。 AdapterControl例程的两个任务:

AdapterControl例程的两个任务 第一,应该调用适配器对象的MapTransfer例程以便为I/O操作的第一阶段准备映射寄存器和其它系统资源。如果是总线主控设备,MapTransfer将返回一个代表传输第一阶段开始点的逻辑地址。这个逻辑地址可能会与CPU的物理内存地址相同,但也可能会不同。所需要知道的就是该地址就是编程设备硬件的正确地址。 第二个任务是执行与“通知设备这个物理地址”操作中涉及的任何设备相关的操作步骤,然后开始操作设备硬件:DMA.doc

DPC 中断通常都发生在传输启动后的很短一段时间后,并且Isr只做很少的事情,比如判断中断类型清除中断状态位 之后,Isr通常都请求一个DPC来处理传输第一阶段的完成,并开始下一个操作。DMA.doc

使用分散集中列表进行传输 如果硬件支持分散/聚集能力,那么系统可以更容易地处理设备的DMA传输。分散/聚集能力允许设备传输所涉及的页在物理内存中不连续。 这种设备的StartDevice例程在创建适配器对象上使用与前面讨论的同样的方式,除了ScatterGather标志应该设为TRUE。 传统方法在安排一个涉及分散/聚集功能的DMA传输时,几乎等同于前面段“执行DMA传输”中的基于包的例子。唯一不同之处是它需要为传输的每个阶段多次调用MapTransfer。每次调用后都会得到分散/聚集列表中的一个包含物理地址和长度的数组元素。 当循环完成时,可以使用设备专用的方法把分散/聚集列表发送到设备,然后开始传输。DMA.doc

使用GetScatterGatherList DMA.doc 在决定使用GetScatterGatherList 前,以下的前提需要满足: 程序运行在2000及以后系统,98/ME不支持这个函数 如果不确定或者为了程序的兼容性,应该使用传统的循环获取Scatter/gather 列表

使用系统DMA控制器 即slave DMA 所有slave设备必须共享有限的DMA通道数量。AllocateAdapterChannel在这种共享情形中具有真正意义,因为一次只能有一个设备可以使用特定的通道 可以在PnP管理器发送的I/O资源列表中找到一个CmResourceTypeDma资源。 大部分方面和总线Master设备类似,一些差别

使用公用缓冲区 通常应该在StartDevice中,在创建适配器对象后分配公用缓冲区:DMA.doc

使用公用缓冲区的Slave模式DMA传输 必须为接收数据的虚拟地址创建一个MDL。MDL的实际目的是在最后调用MapTransfer中占用一个参数,这个MDL指名不需要任何数据复制。 通常应该在StartDevice函数中,紧接着分配公用缓冲区之后创建该MDL 为了执行一个输出操作,首先应通过某些手段(如一个明确的内存复制)使公用缓冲区中包含有要发往到设备的数据 在输入操作的结尾,应该把数据从公用缓冲区复制到其它某个地方

使用公用缓冲区的Slave模式DMA传输 其它部分和进行基于包的DMA传输类似:调用AllocateAdapterChannel,该函数调用驱动程序提供的适配器控制例程,这个例程又调用KeFlushIoBuffers(如果分配了一个可被高速缓冲的缓冲区),最后调用MapTransfer。DPC例程将调用FlushAdapterBuffers和FreeAdapterChannel函数。 唯一要注意的是应该指定公用缓冲区的MDL来代替读写IRP携带的MDL

使用公用缓冲区的master模式DMA传输 如果设备是总线主控模式,那么在分配公用缓冲区后就没有必要调用AllocateAdapterChannel、MapTransfer、FreeMapRegisters函数。 因为AllocateCommonBuffer也能保留必要的映射寄存器。每个总线主控设备都有一个适配器对象,该对象不与其它设备共享,因此不必等待。由于拥有可以在任何时间都能访问缓冲区的虚拟地址,又由于设备的总线主控能力允许使用物理地址(由AllocateCommonBuffer返回)访问该缓冲区,所以没有额外的工作需要做。 这是所有形式的DMA传输中最简单的。

使用公用缓冲区的注意事项 在运行系统中,物理上连续的内存是十分稀有的,有时根本得不到这样的内存,除非在系统启动的早期请求这样的内存。内存管理器为了满足请求会对内存页进行重排列,但它的尝试十分有限,并且这个过程会推迟AllocateCommonBuffer的返回。有时尝试会失败,所以必须能够处理这种失败情况。公用缓冲区不仅与稀有的物理内存页相关,而且还与其它设备争用映射寄存器。

释放公用缓冲区 在处理停止设备时需要释放公用缓冲区 (*pdx->AdapterObject->DmaOperations->FreeCommonBuffer) ( pdx->AdapterObject, <length>, pdx->paCommonBuffer, pdx->vaCommonBuffer, FALSE );