DMA简介

        这个是在学组成原理时候的一些东西,自己找上的找的一些资料,问了中科院的一个同学,整理出来,虽然和服务器差别很大,但是理解了一下,觉得还是有益处的。
数据库I/O始终是瓶劲,和I/O量没关系,I/O次数很多很多,所以会造成CPU繁忙,本身I/O是由DMA控制器来实现的。可以这么理解。
DMA:Direct Memory Access,其意思是“存储器直接访问”
 
说明它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
 
如果在DMA的时候,仍旧让CPU坐其他的I/O操作,肯定是受影响的。但是,在系统设计的时候,DMA是一种I/O的操作,在DMA的过程中,CPU一般会做其他的非I/O操作,如果一定要让CPU做I/O操作,由于DMA占据总线控制权,则I/O进程会阻塞,CPU转而执行其他的操作
 
DMA只有在批量的数据读才会高效,对于单个字节的读写效率比CPU的直接I/O还低呢,而现在的很多高端存储支持多种类型的I/O,不管是块还是字节,效率都很高
 
Direct Memory Access 直接存储器访问
  在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。
  一个完整的DMA传输过程必须经过下面的4个步骤。
  1.DMA请求 CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
  2.DMA响应 DMA控制器对DMA请求判别优选级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
  3.DMA传输 DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
  4.DMA结束 当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。
由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。
DMA控制的仅仅是数据总线
 
附:总线结构概述
   
   PC的组成部件都是通过数据总、地址总线和控制总线这三组,总线连接在一起并完成和实现它们之间的通讯与数据传送的,因此总线的概念是理解PC和主板的组成结构、工作原理及部件之间相互关系统的基础。

   一、概述

   1.地址总线AB(Address Bus)
     是用来传送地址信息的信号线,其特点是:
   (1).地址信号一般都由CPU发出,当采用MDA(Direct Memory Access,即直接内存访问)方式访问内存和I/O设备时,地址信号也可以由DMA控制器发生,并被送往各个有关的内存单元或I/O接口,实现CPU对内存或I/O设备的寻址(在PC中,内存和I/O设备的寻址都是采用统一编址方式进行的),即采用单向传输,动态控制(在计算机中,由于采用二进制工作方式,一般只有两种状态,即“1”和“0”,但是当计算机各总线上,显示“0”状态时,在电气上的效果相当于总线脱离。
   (2).CPU能够直接寻找内存地址的范围是由地址线的数目(由于一条地址总线一次传送一位二进制数的地址,故也叫地址总线的位数)决定的,即PC系统中所能安装内存容量上限由CPU的地址总线的数目决定。

    CPU能够直接寻址的内存范围上限为2CPU的地址总线数目

   2.数据总线DB(Data、Bus)
     用来传送数据信息的信号线,这些数据信息可以是原始数据或程序。数据总线来往于CPU、内存和I/O设备之间,其特点是:
   (1).双向传输,三态控制:即可以由CPU送往内存或I/O设备,也可以由内存或I/O设备送往CPU。
   (2).数据总线的数目称为数据宽度(由于一条数据线一次可传送一位二进制数,故也称位数),数据总线宽度决定了CPU一次传输的数据量,它决定了CPU的类型与档次。

   3、控制总线CB(Control Bus)
     是用来传送控制信息的信号线,这些控制信息包括CPU对内存和I/O接口的读写信号,I/O接口对CPU提出的中断请求或DMA请求信号,CPU对这些I/O接口回答与响应信号,I/O接口的各种工作状态信号以及其他各种功能控制信号。控制总线来往于CPU、内存和I/O设备之间,其特点是:
     在单向、双向、双态等种形态,是总线中最复杂、最灵活、功能最强的,其数量、种类、定义随机型不同而不同。

   二、总线的分类
    总线就是各种信号线的集合,是计算机各部件之间传送数据、地址和控制信息的公共通道。
    1.按相对于CPU与其芯片的位置来分
     (1).片内总线:指在CPU内部各寄存器、算术逻辑部件ALU,控制部件以及内部高速缓冲存储器之间传输数据所用的总线,即芯片内部总线。
     (2).片外总线:通常所说的总线(BUS)指的外总线,是CPU与内存RAM、ROM和输入输出(I/O)设备接口之间进行通讯的数据通道,CPU通过总线实现程序存取命令,内存/外设的数据交换在CPU与外设一定的情况下,总线速度是限制计算机整体性能的最大因数。

    2.按总线功能分
     (1).地址总线:(AB)用来传递地址信息
     (2).数据总线:(DB)用来传递数据信息
     (3).控制总线:(CB)用来传送各种控制信号

    3.按总线的层次结构分
     (1).CPU总线:包括CPU地址线(CAB),CPU数据线(CDB)和CPU控制线(CCD),其用来连接CPU和控制芯片。
     (2).存储器总线:包括存储器地址线(MAB)、存储器数据线(MDB)和存储器控制线(MCD),用来连接内存控制器(北桥)和内存。
     (3).系统总线:(I/O扩展总线)也称为I/O通道总线或I/O扩展总线,包括系统地址线(SAB),系统数据线(SDB)和系统控制线(SCD),用来与I/O扩展槽上的各种扩展卡相连接。
     (4).外部总线:(外围芯片总线)用来连接各种外设控制芯片,如主板上的I/O控制器(如硬盘接口控制器、软盘驱动控制器、串行/并行接口控制器等),和键盘控制器,包括外部地址线(XAB)、外部数据线(XMB)和外部控制线(XCB)。

    4.系统总线(I/O扩展总线)又分为ISA、PCI、AGP等多种标准
     (1).ISA(Industry standard architecture,工业标准结构)是IBM公司为286AT电脑制定的总线工业标准,也称为AT标准。
     (2).PCI(peripheral component interconnet,外部设备互连)是SIG(spelial interest group)集团推出的总线结构。
     (3).AGP(accelerated graphics port,加速图形端口)是一种为了提高视频带宽而设计的总线规范,因为它是点对点连接,即连接控制芯片和AGP显卡,因此严格说来,AGP也是一种接口标准。

   三、总线主要的技术指标

     1、总线的带宽(总线数据传输速率)

      总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:

                    总线的带宽=总线的工作频率*总线的位宽/8
     2、总线的位宽
      总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。

     3、总线的工作频率
      总线的工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。

   四、总线命令含义
ADS#地址通讯
STOP#停止
SMIACT#激活系统管理中断
ACAS[B:A]写功能
D/C数据/控制
LOCK#锁存
TWE#TAG写效能
PC-LINK[15:0]PCI链锁
M/IO#记忆器/IO
DEVSEL#设备选择
COE#CACHE输出效能
1+STB:[1:0]记忆器选通
W/R#读写
PAR奇偶校验
GNE[7:0]#全写效能
MADV#MEHORY优先
BRDY#总线就绪
REQ[2:0]请求
TIO[7:0]TAG地址
PCMD[1:0]PCI命令
EADS#外部地址选通
GNT[2:0]PCI允许
H-LINK主时钟输入
BOE#BOST输入功能
HZTM#中较正
RE23#/MREQ#
PCLINK时钟输入
MOE#MEMY输入功能
BOFF#退去
PHLD#PCI保持
AD地址/数据
POE#PLINK输入功能
AHOLD地址保持
PHLD#PCI保持响应
C/BE[3:0]命令/字节使能
MXSCSH多功能选择
NA#下位地址
RAS[3:0]行选
FRAME#结构
 
KEN#/ZNLCACHE效能
CAS[7:0]列选
TRDY#目标就绪
 
CACHE#CACAHE效应
MA内存地址
IRDY#初始就绪
 
HLOCK#主锁存
SRASA#SDRAM行选
 
   五、ISA插槽

   1、地址总线:SA0~SA19(I/O)和LA17~LA23(I/O)
   2、数据总线:SD0~SD7(I/O)和SD8~SD15(I/O)
   3、控制总线:BALE(0)---US Address latch enable:系统地址锁存允许
   4、SYSCLK(0)---SYSTEM CLOCK系统时钟信号
   5、IR23~7,9~12,15(Z)---这是用于I/O设备通过中断控制器向CPU发送的中断请求(interrupt request)信号
   6、SMEMR#和SMEMW#(0)---这是命令内存将数据送至数据总线的信号
   7、MEMR#和MEMW#(I/O)---内存读(MEMR)或内存写(MEMW#)信号
   8、DRQ0~3,5~7(2)---这是DMA请求(DMA Requesc)信号
   9、DACK0#~3,5~7(0)---(DMA Acknowledge,DMA响应)这是对DRQ0~3,5~7的响应信号
   10、AEN(0)---地址允许(Address enable)信号
   11、REFRESH#(I/O)---内存刷新(DRAM refresh)信号
   12、SBHE(I/O)---系统总线字节允许(system bus high enable)信号
   13、MASTER(2)---主控信号
   14、MEMCS16#(2)---存储器16位片选(Memory 16bit chip select)信号
   15、ZOCS16#(2)---I/O16位片选(I/O 16bit chip select)信号
   16、OWS(2)---零等待状态(Zero Wait State)信号

   六、PCI插槽

   1、系统信号定义:即“CLK”信号,除“RST#”、“ZRZB”、“ZRQC#”、“ZR2#”之外,其余信号都在“CLK”的上升没有效。

   RST#(ZN)---复位信号,是用来使PCI专用特性寄存器和定序器相关的信号恢复规定的初始状态

   2、地址和数据信号:

   AD[31::00](T/S)---它们是地址,数据多路复用的输入/输出信号
   C/BE[3::00]#(T/S)---它们是总线命令和字节使能多路复回信号线

   3、接口控制信号

   FRAME#(S/T/S)---帧周期信号
   IRDY#(S/T/S)---主设备准备好信号
   TRDY#(S/T/S)---从设备准备好信号
   STOP#(S/T/S)---停止数据传送信号
   LOCK#(S/T/S)---锁定信号
   IDSEL(ZN)---初始化设备选择信号
   DEVSEL#(S/T/S)---设备选择信号

   4、仲裁信号

   REQ#(T/S)---总线前用请求信号,它是一个点到点的信号线,任何主设备都应有自己的“GNT#”信号
   GNT#(T/S)---总线占用允许信号

   5、错误报告信号
   为了使数据传输可靠、完整、PCI局部总线标准要求,所有挂接在其上的设备都应具有错误报告信号线

   PERR#(S/T/S)---数据奇偶校验错误报告信号
   SERR#(O/D)---系统错误报告信号

   6、中断信号

   PCI局部总线中一共有四条中断线,分虽是:“INTA#”、“INTB”、“INTC#”、“INTD”,它们均具有O/D(漏极开)的性质,其作用是用来请示一个中断

   7、其它可选信号

    (1)、高速缓存支持信号
      SBD#(IN/OUT)---试探返回信号
      SDONE(IN/OUT)---监听完成信号

    (2)、64位总线扩展信号

      AD[63::32](T/S)---扩展的32位地址和数据多路复用线
      C/BE[7::4]#(T/S)---总线命令和字节使能多路复用信号线
      REQ64#(S/T/S)---64位传输请求信号线
      ACK64#(S/T/S)---64位传输认可信号线
      DAR64(S/T/S)---奇偶双字节校验
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页