1直接存储器访问技术(DMADirectMemoryAccess)2直接存储器访问(DMA)技术•基本概念:DirectMemoryAccess。•DMA技术与中断技术一样,都是为提高系统的工作效率。•采用程序传送数据的工作过程。•大量数据的传送过程,提高效率。若通过CPU用程序进行数据传送。每传送一个数据至少要用两条指令。而在整传送过程中,CPU仅起了中间传递工作。3采用程序进行块数据移动……movcx,lengBack:moval,[si]mov[di],alIncsiIncdiLoopback…………movcx,lengback:inal,[dx]mov[di],alincdiloopback……4采用程序进行块数据移动5•除了专用的计算机系统外,一般的计算机系统要不断更换工作任务,因此经常要与外部设备进行数据交换,特别是与磁盘的数据交换。•磁盘数据是按扇区为单位存储的。一次传送至少上百字节。DMA技术就是为加速大量数据传输过程发明的技术。在DMA期间,CPU让出对系统总线的控制权,由DMA控制器负责外部设备与存储器之间的数据传送。6磁盘结构•盘面:从横向看,每一存储数据的面,从上到下0,1……N。•磁道:每一盘面上一个个同心圆,从外到内0,1,……,M。•扇区:直径将盘面分成若干相同块。0,1……,P。•柱面:从上到下,一系列的同心圆柱。•磁头:•磁盘的最小存储单位为扇区。7DMA方式的工作原理•DMA方式不使用指令(没有程序),而直接用硬件控制数据的传送。•DMA传送期间,CPU让出系统总线的控制权,由DMA控制器控制数据传送。即在DMA过程中CPU无事可干。•DMA方式数据传送的效率比CPU用程序传送高得多。8DMA方式的工作原理DMA工作过程•I/O设备向DMAC发出DMA请求•DMAC向CPU发出DMA请求•CPU在完成当前指令的当前总线周期后,向DMAC发出响应信号•CPU放弃对系统总线的控制,有DMAC接管•DMAC向I/O设备发出DMA应答信号•开始传送数据•完成设定字节数据后,将总线交换给CPU9108237DMA控制器角色1:作为CPU的一个外部(接口)芯片,接受8086/8088的管理1)对8237编程。2)能接受外设的DMA传送请求信号DREQ,并能向外设发出响应信号DACK。3)能向CPU发出总线请求信号HRQ,当CPU发出总线响应信号HLDA后,能接管对系统总线的控制权,并进入DMA方式。118237DMA控制器角色2:取代CPU用程序控制传送数据的各项功能:4)能对存储器寻址,并能修改地址指针。5)能发出读、写等控制信号,包括存储器访问信号和I/O端口访问信号。6)能决定传送的字节数,并能判断DMA传送是否结束。7)能发出DMA传送结束信号,释放系统总线。使CPU恢复对总线的控制权12DMA控制器8237A•在5MHz时钟频率下,其传送速率可达每秒1.6MB。•每个8237A芯片有4个独立的DMA通道,即有4个DMA控制器(DMAC)。•每个DMA通道具有不同的优先权,都可以分别被允许和禁止。•每个通道有4种工作方式,一次传送的最大长度可以达64KB。138237A引脚信号(1)请求和响应信号:1.DREQ0~DREQ3(DMARequest):DMA通道请求信号,当外申请DMA传送时置有效,直到8237响应。信号有效形式可指定。2.HRQ(HoldRequest):8237向8086/8088的总线请求信号。高电平有效。3.HLDA(HoldAcknowledge):8086/8088对8237总线请求的响应。高电平有效。4.DACK0~DACK3(DMAAcknowledge):8237对DMA通道请求的响应。有效信号形式可指定。148237A引脚信号(2)控制信号:在DMA传送期间,这组信号控制系统总线,完成数据传送。1.A7~A0(Address)地址总线;2.DB7~DB0(DataBus)数据总线;(高位字节地址复用总线)。3.ADSTB(AdderssStrobe)地址选通信号;4.AEN(AddressEnable)地址允许信号;5./:储器读/写信号;6./:外设读/写信号;7.:DMA过程结束信号,双向。8.CLK(clock)时钟信号,8237工作时钟。MEMRMEMWIORIOWEOP158237A引脚信号(3)8237与8086/8088CPU的接口信号:当8237A作为CPU外部芯片时,通过下列引脚,接受CPU管理和控制:1.DB7~DB0:双向三态数据总线。(非复用)2.A3~A0地址线:低4位地址总线。8237在系统中占16个地址单元。3.:片选信号。4./:作为CPU外部芯片时的读/写信号。5.RESET复位CSIORIOW168086/8088微处理器17188237A内部结构•DMA通道寄存器:每个DMA通道都有各自的当前地址寄存器、当前字节数寄存器和基地址寄存器、基字节数寄存器,它们都是16位寄存器。四个通道共用的地址暂存器(16位)和字节计数暂存器(16位)•控制和状态寄存器:模式寄存器(4个通道各有一个,6位的寄存器)、命令寄存器(8位)、状态寄存器(8位)、屏蔽寄存器(4位)、请求寄存器(4位)、临时寄存器(8位)19DMA控制器结构示意图20218237A的工作时序8237A有两种工作状态周期。•空闲周期:受CPU控制的工作状态。8237A始终处于Si状态。在Si状态,每一个时钟周期都采样通道请求输入线DREQ。当信号有效时,CPU对8237A进行读/写操作。•有效周期:8237A作为系统总线主控芯片,控制DMA传送操作。有效周期为S0,S1~S4周期,以及等待周期Sw。而S1~S4为真正的DMA传送周期。IORCSIOW22不同工作周期8237A引脚使用和定义2324258237A的工作过程(1)•在没有外设申请时,8237A始终处于Si周期。•1、CPU将8237A作为一外部接口芯片,随时可对8237A进行编程,或读8237寄存器状态。随时监测•2、检测DREQ,当检测到有DMA请求时,8237进入有效周期,S0状态,向CPU请求,并一直处于S0状态,等待CPU响应(HLDA)。此时CPU仍控制8237A。•当HLDA信号有效后,进入DMA传送的S1状态。•完整的DMA传送周期由S1、S2、S3、S4四个状态组成。CS268237A的工作过程(2)•S1状态:高地址锁存。地址允许信号AEN有效,8237A开始控制系统总线。数据总线输出高8位地址,A7~A0输出低8位地址。ADSTB为外部地址锁存信号,开始有效。•S2状态:ADSTB锁存高8位地址,存储单元的低8位地址在A7~A0;8237A向外设输出DMA响应信号DACK。•S3状态:“读控制”信号有效。数据出现在数据总线上。•S4状态:“写控制”信号有效,此时,读、写信号同时有效。•S4状态末,“读、写控制”信号均无效,完成外设和存储器之间的一个数据传送。278237A的工作过程(3)•若在S4状态结束前不能完成数据的传送,则只需使READY信号线变低,就可以在S3(S2)和S4状态间插入Sw等待状态。直到READY变高,才进入S4。•用DMA传送数据,要求存储器区地址是连续的。因此,许多时候地址的高8位不变,只是低8位改变。所以,输出和锁存高8位地址的S1状态不需要,可直接进入S2状态。因此普通时序的DMA传输只要S2、S3和S4三个状态。•如果外设的速度足够高,则还可省去S3。因此,压缩DMA传输时序只要S2和S4二个状态。288237A的工作过程(4)这个过程一直继续到把规定字节的数据传送完,终止计数TC(TerminalCounter,即当前字节数寄存器减到零之后,又减1到0FFFFH)。一个完整的DMA传送过程结束,8237A重新进入空闲周期,等待新的DMA请求。DMA传送实现了外设与存储器之间的直接数据传送,传送的数据既不进入8237A内部,也不进入CPU。DMA控制器不提供I/O端口地址(地址线上总是存储器地址),进行DMA传送的外设应负责将数据送到接口或从接口取得数据。298237A的DMA传送数据时序图308237工作状态转移31328237A传送方式(1)8237A有4种DMA传送方式,并可以实现存储器到存储器的传送。•DMA传送方式1:单字节传送。每次DMA传送仅传送一个字节。传送一个字节之后,当前字节数寄存器减l,当前地址寄存器加1(或减1),HRQ变为无效,8237A释放系统总线,将控制权还给CPU;若传输未完成,HRQ很快再次变成有效,重新申请DMA。直到全部数据传送完成。这种传送方式是CPU和DMA控制器轮流控制系统总线,速度慢。优点是CPU可重新获得总线控制权。338237A的工作方式(2)•DMA传送方式2:数据块传送方式。在这种方式下,8237A由DREQ启动,当8237A获得总线控制后,连续地传送数据,直到字节数寄存器从0减到0FFFFH,终止计数;或者由外部输入有效的EOP信号,终止DMA传送过程。这种传输方式效率高,一次DMA过程最多可传输64K字节的数据。其缺点是,在整个DMA传送期间CPU无法控制总线。(CPU无法处理中断。)348237A的工作方式(3)•DMA传送方式3:请求传送方式在这种方式下,DREQ信号有效,8237A连续传送数据;但当DREQ信号无效时,DMA传送被暂时中断,8237A释放总线,CPU得到总线控制权。但DMA传输并未终止,DMA通道的地址和字节数的当前值,仍保持在相应通道的当前地址和当前字节数寄存器中。当外设又准备好进行传送时,只要使DREQ信号再次有效,DMA传送就继续进行下去。当字节数寄存器从0减到FFFFH,或者由外部送来一个有效的EOP信号(无论是正在传输,或处于DMA传送中断状态),都可终止DMA传送过程。•其特点是可由外设利用DREQ信号控制DMA操作和传送速率。358237A的工作方式(4)•DMA传送方式4:级连方式(cascade)这种方式用于多个8237A级连以扩展通道。第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上。第二级芯片的优先权等级与所连的通道相对应。在这种情况下,第一级只起优先权网络的作用,除了接受级连8237A来的DREQ信号、向CPU输出HRQ信号外,和接受并向级连的8237A传送CPU的DACK外,并不输出任何其它信号。实际的DMA传送工作由第二级芯片完成。8237A还可进一步级连扩展。368237A级连示意378237A传输类型•8237A分三种传送类型:读、写和校验•读:数据从存储器到外设,采用的读写信号为MEMR和IOW。•写:数据外设从到存储器,采用的读写信号为IOR和MEMW。•校验:是一伪读、写过程。8237A工作如同读和写过程,修改地址、计数值,和产生正常的EOP信号等。但引脚不产生读、写控制信号。它用来进行器件测试。38存储器到存储器的传送•将数据块从存储器空间的某一地址段传送到存储器空间的另一地址段过程。•固定使用8237A的通道0和通道l。其中,通道0的地址寄存器存源数据地址,通道l的地址寄存器存数据目的地址,通道1的字节数寄存器为要传送的字节数。•8237A利用临时寄存器作为被传送数据的暂存寄存器。•每传送一个数据要8个状态周期。前4个时钟周期为读数据,根据通道0地址寄存器的地址,读出数据,送入8237A的临时寄存器;后4个时钟周期为写数据,把临时寄存器中的数据写入通道1地址寄存器指向的内存单元。39存储器到存储器的传送存储器-存储器通过设置通道0的软件请求启动。•8237A向CPU发出HRQ请求信号,等待HLDA响应后传送开始。•每传送一个字节后,源地址和目的地址都要修改,传送字节数减1。•直到通道1的字节数寄存器从0减到0FFFFH,终止计数,并在EOP端输出一个脉冲。•存储器到存储器的传送过程也可以由外部来的EOP信号中止。•存储器到存储器方式,还可以允许源通道的地址寄存器不变,即传到目的寄存器块的是同一地址单元