Anda di halaman 1dari 4

DMA DesdelosprimerosPC,secuentaconunaarquitecturaquepermitieseelintercambiode informacinentrelamemoriaylosdemscomponentes. ElmecanismoutilizadoseconocecomoaccesodirectoamemoriaDMA("DirectMemory Access"),eigualqueocurreconlasexcepciones,elsistemaDMAdisponedealgunos elementoshardwareauxiliaresqueloconviertenenunsubsistemaautnomodentrodel busexterno. Lneasdedicadasenelbusdecontrol. Unprocesadorespecfico,elDMAC("DMAController"),quepermitequepuedan realizarseestosintercambiossinintervencindelprocesador. Pequeaszonasauxiliaresdememoria,conocidascomoRegistrosdepgina. LNEASDEDICADASENELBUSDECONTROL Elbusdecontroltienelneasespecficasparaestetipodeintercambios,deforma queelDMAesunsubsistemaautnomodentrodelmecanismogeneraldeintercambio dedatosycontroldelbus.

Estaslneasson:

LneasDRQ1aDRQ3("DMArequest").Utilizadasporlosdispositivosquenecesitan efectuarunaccesodirectoamemoria. LneasDACK1aDACK3("DMAacknowledge").Seutilizanparaacusarrecibodela peticinDRQcorrespondiente. AEN("AccessEnabled")Cuandoestasealestalta,elcontroladorDMAtiene controlsobreciertaslneasdelbus;precisamentelasquegobiernanlos intercambiosconmemoriaypuertos(MEMR,MEMW,IOR,IOW,Etc). MEMR("MemoryRead")Cuandoseactiva,estasealindicaalamemoriaconectadaal busqueescribalosdatosenelbusdedatos. MEMW("MemoryWrite")Cuandoseactiva,indicaalamemoriaquealmacenelosdatos situadosenelbusdedatos. ConexionesdelcontroladorDMAconlaspatitas30y31delaUCP CONTROLADORDMA Elmecanismodeaccesodirectoamemoriaestcontroladoporunchipespecfico,el DMAC("DMAController). EnlosXTestabaintegradoenunchip8237Aqueproporcionaba4canalesde8bits(puede moversolo1Bytecadavez);susdireccionesdepuertoson00000Fh. Posteriormenteseinstalarondosdeestosintegradosylascorrespondienteslneas auxiliaresenelbusdecontrol,dondeelsegundocontroladorsecolgen"Cascada" delalnea4delprimero.LoscanalesdelsegundoDMACestasignadoalas direcciones0C00DFhysonde16bits. Cadacanaltieneasignadaunaprioridadparaelcasoderecibirsesimultneamentevarias peticiones(losnmerosmsbajostienenprioridadmsalta).Puedenserutilizados porcualquierdispositivoquelosnecesite. Cadasistemaasignaloscanalesdeformaarbitraria,perohayalgunoscuyaasignacines estndar. ElSistemaWindowsincluyeelprogramaMSINFO32.EXEconelquesepuedencomprobar muchascaractersticasdelsistema,incluyendolaasignacindecanalesDMA. ParalosusuariodeLinux,sepuedeutilizarelcomandodmesg|grepidmaparaobtener unarelacindelosdispositivosdelsistemaque,estnhabilitadosparautilizar estetipodetransferencias. GeneralmentelarelacincontienecomomnimolosdoscanalesIDE(ide0eide1)yla unidaddedisco(hda). FUNCIONAMIENTODELCONTROLADORDMA

ElmecanismodeaccesodirectoamemoriaDMAesbastantecomplejoensusdetalles,y porsupuesto,elmovimientodegrandesvolmenesdedatosentrememoriayun dispositivorequiereciertaintervencindelprocesador. Elmovimientosehacearfagas,ycadatransferenciaseiniciaconunainterrupcinque obligaalprocesadorasuspendersutareaparapermitirunnuevointercambio. ElDMApermitemoverdatosentreunpuertoymemoria,oentrememoriayunpuerto, peronoentredospuertosoentredosposicionesdememoria. CadatransferenciaDMArequiereunapreparacinprevia;conocerelvolumendedatosa transferiryladireccindeiniciodelbufferdememoriainvolucrado. Paraestodisponededosregistrosparacadalnea;elcontadoryelregistrode direcciones. Segnserefieranaoperacionesdelectura(memoriadispositivo)oescritura (dispositivomemoria)recibendistintosnombresporquesusignificadodifiere: Escritura:Direccindeinicio("Writestartingaddress").Contador("Write startingwordcount") Lectura:Direccinactualdelectura("Readcurrentaddress").Contador("Read remainingwordcount") Despusdecadatransferencia(de1byte)elregistrodedireccionesdelDMACes incrementadoenunaunidad,yelcontadoresdisminuidoenunaunidad. Cuandoesteltimollegaacero,latransferenciahaconcluido,elDMACponeennivel altolalneaT/C("TerminalCount")enelbusdecontrolyprocedeaenviaral procesadorlasealEOP("EndofProcess"). Apartirdeestemomentoelcontroladornopuederealizarotratransferenciahastaque seaprogramadodenuevoporelprocesador. Aunqueexistenvarioscanales,elsistemadeprioridadesgarantizaquesolounode ellospuedeestarenfuncionamientocadavez,deformaquesusfuncionamientosno puedensolaparse,ylasealEOPserefiereforzosamentealcanalactivoenese momento. ElsistemaDMAtienedistintasformasdeoperacin,peroenelcasomssimple,el procesoes: Undispositivo,quetieneasignadoelcanalxDMA,solicitaunatransferencia, activalalneaDRQx,avisandoasalcontroladorDMACdelapeticin. Alrecibirlaseal,elcontroladorDMACcompruebaquedichalneaest programadayactivada,yquenoexisteningunapeticinenotralneaDRQde prioridadmsalta. SolicitaalaCPUquelecedaelcontroldelbusenvindoleunasealHRQ(Hold Request). CuandoelprocesadorrecibelapeticinHRQ,terminalainstruccinencursoyest encondicionesdecederelcontroldelbus,envalassealesdecontrol(MEMR, MEMW,IOR,IOW,Etc). AcontinuacinenvaunasealHLDA(HoldAcknowledge)alMDAC,indicndoleque debetomarelcontrol. Despusdecederelcontroldelbus,laCPUpuedeseguirsuproceso,peroen cuantollegaaunainstruccinquenecesitaundatodememoriaquenoest previamenteensucache,debedetenerseypermaneceralaesperadeobtenerel controldenuevo. EstacircunstanciaestransparenteparaelSistemaOperativoylasaplicaciones. Elnicosntomaseraellargotiempoquetardaelprocesadorenejecutarla prximainstruccin. Apartirdeestemomento,elMDACtomacontroldelbusymonitorealassealesdel

procesador;activalaslneasMEMR,MEMW,IOReIOW. SisuponemosquelatransferenciaDMAprogramadaconsisteentransferir1byte aladireccinxxxxh(dememoria),elDMACcolocaladireccinenelbusde direccionesyenvaunasealaldispositivoquesolicitlatransferencia activandolalneaDACKxcorrespondiente,loqueindicaaldispositivoquedebe depositareldatoenelbusdedatos. AcontinuacindelasealDACKxelcontroladorDMAesperauncicloy,suponiendo queeldispositivonohayasolicitadotiempoadicionalmediantelasealCHRDY delbus,desactivalaslneasMEMWeIOR,loquepermitequesecompletela operacin("Latch"). Losdatosdelbusdedatossonescritosenladireccincontenidaenelbusde direcciones. MODOSDEOPERACIN Sencillo("Single") Transfieresolounbytecadavez. Despusdecadatransferenciaelsistemacedeelcontroldelbusydebeadquirirlode nuevoparatransmitirelsiguiente. Esutilizadapordispositivosquesolopuedentransmitir1bytecadavezaintervalos comparativamentemuylargos(perifricoslentos). ControladordedisquetedelPCutilizabaestemodoporquesubuffereradeun byte. Elciclosolicitudadquisicindelbustransferenciacesindelbus,serepitecuantas vecesqueseannecesarias. Bloque("Block") Lastransferenciasserealizanenbloques(unmximode64KB). Sesuponequeelperifricoescapazdeescribir/leerlosdatosavelocidadsostenida Unaveziniciadalatransferencia,continahastaquesecompleta. Encasonecesarioelperifricopuedesolicitarunapausamomentneamediantelalnea CHRDYdelbus,peroengenerallosdispositivoslentosutilizanelmodo"Single". Demanda("Demand") Latransferenciaserealizaenbloques,perosolotienelugarmientraseldispositivo mantieneactivadalalneade"Peticin"correspondiente(DRQ). Encuantoladesactiva,elDMACcesalatransferenciaydevuelveelcontroldelbusal procesador. Sieldispositivonecesitatransferirmsdatosdebesolicitarotratransferencia. CorrespondealprimitivosistemaDMAISA,conocidocomoDMAdetercerelemento("Third party"),yaqueenelprocesointervienentresmiembros: Eldispositivoqueenvalosdatos, elquelosrecibe elcontroladorDMAC. Cascada("Cascade") ElbusmasteringoDMAdeprimerelemento("Firstparty"),yaqueeseldispositivoque realizaelintercambiodedatos,elquetomadirectamenteelcontroldelbusen lugardehacerloelcontroladorDMAC.Enconsecuencia,debecontrolarlasseales necesariasdelbus(MEMR,MEMW,IOR,IOW,Etc). EsteprocedimientopermiteencadenarentresvariosdispositivosDMA,yfueprecisamente estacapacidad,lautilizadaeneldiseodelATparaaadirelsegundo controlador.DMAC#2secolocencascadaconlalnea4delDMAC#1. CuandoelDAMC#1recibeunapeticinporelcanal4,cedeelcontroldelbusal dispositivopeticionario,elDMAC#2. Autoinicializacin("Autoinicialize") LastransferenciasserealizanalmodoSencillooDemanda,perocuandolaCPUvuelvea tomarelcontrolyeldispositivoestlistoparaenviarorecibirnuevosdatos,no esnecesarioreprogramarlasiguientetransferencia.

Siseestabantransfiriendodatosdesdeeldispositivoaunbuferdememoria,la CPUpuedeseguiraadiendodatosalbuferacontinuacindelosltimos transmitidos.Sieraunatransferenciadedatosdesdeunbuferhaciael dispositivo,laCPUpuedeseguirleyendodatosdesdelaltimaposicinde ledayescribindoloseneldispositivo. Estatcnicaseutilizacondispositivosquetienenbufferspequeos.Porejemplo, dispositivosdeaudio.SuponeciertasobrecargaparalaCPU. Eslanicaformadeeliminarelretardoexistenteentreelmomentoenquetermina unatransferenciaysereprogramalasiguiente. REGISTROSDEPGINA Loschips8237Ay8259A,deloscontroladoresDMACyPICdelPC,fuerondiseados parael8085,unprocesadorderegistrosde8bitsybusdedireccionesde16bits, generandounespaciodedireccionamientode64KB(216=65.536);muypordebajode las1.048.576(220)posicionesquepodadireccionarelPC. ParaqueelDMACpudieraseleccionardireccionesporencimadellmitede64KB,se agregounapequeamemoriaparacontenerlapartealtadelasdireccionesamanejar. IBMlasdenominregistrosdepginayeranaccesiblesenelpuerto08108Fh. Laideaeracomponerladireccin(Dt)delaoperacinDMA,yuxtaponiendodos direcciones. Lapartealta(D2)seguardaraenelregistrodepginaylapartebaja(D1)enel registrodedireccionesdelDMAC,demodoqueDt=D2#D1. Porejemplo,siladireccindedestinodelatransferenciaes00123456h,el registrodedireccionescontendr3456h,yelregistrodepginadelcanal correspondienteelvalor0012h.Comopuedeverse,laformadecomponerla direccinresultanteDtapartirdelainformacindecadasegmento(en hexadecimal)sera:Dt=D1+FFFF+D2. Elsistemapresentaalgunosinconvenientes. ElvalormsaltoposibleparaD1esFFFFh,porquesolosedisponede16bitspara sualmacenamiento,ycomopuedeverseenelmapadelpuerto,elregistrode pginadecadacanalessolode1Byte,deformaqueelvalormsaltoparaD2 esFFh. Enconjuntosolosedisponede8+16=24bitsparaladireccin,ycomo resultado,elsistemaDMAdelPCestndarnopuededireccionarmemoriapor encimade16MB(224). Eldiseodelsistemaimponelalimitacinadicionaldequeelbloquemximoque puedemanejarseenunasolatransferenciaesde64KB. ElregistrodepginaestotalmenteindependientedelDMACysufuncionamientono estsincronizado. Cuandoseiniciaunaoperacin,elvalorD2delregistrodepginapermaneceinvariable, mientrasque,elvalorD1delregistrodedireccionesesincrementadoconcadabyte transferido. CualquieraquesealadireccininicialXXhenD2,elrangodedireccionesmximoque puedecubrirsecorrespondealintervalo0000FFFFhenD1. Despusdelltimovalordeberasumarse1aXXhyvolveracomenzarporelvalorD1= 0000h,cosaquenoestcontempladaeneldiseo.

Anda mungkin juga menyukai