El documento describe el acceso directo a memoria (DMA), el cual permite que ciertos componentes de hardware puedan acceder a la memoria del sistema de forma independiente al CPU. El DMA es útil para transferir datos entre dispositivos y memoria sin sobrecargar al CPU. Una transferencia DMA básicamente consiste en copiar un bloque de memoria de un dispositivo a otro usando el controlador DMA en lugar del CPU.
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Acceso Directo de Memoria
1. UNIVERSIDAD TÉCNICA
PARTICULAR DE LOJA
La Universidad Católica de Loja
ELECTRÓNICA Y
TELECOMUNICACIONES
CRISTIAN AGUIRRE ESPARZA
“ACCESO DIRECTO A MEMORIA
DMA”
CUARTO CICLO
2012
2. INTRODUCCION
La Entrada/Salida con interrupciones, aunque más eficiente que la Entrada/Salida
programada, también requiere la intervención del CPU para transferir datos entre la
memoria y el módulo de Entrada/Salida y cualquier transferencia de datos que debe
seguir un camino a través del procesador.
Cuando se va a leer una línea desde un terminal, el primer carácter escrito es enviado al
computador. Cuando el carácter es recibido por el controlador, éste interrumpe al CPU. El
CPU le da servicio a la interrupción y luego continua con el proceso que estaba
ejecutando. Esto es posible cuando el dispositivo es muy lento comparado con el CPU.
Entre un carácter y otro el CPU lleva a cabo gran cantidad de procesamiento. Pero en el
momento que estemos trabajando con dispositivos de Entrada/Salida más veloces
tendríamos interrupciones muy seguidas y se estaría desperdiciando mucho tiempo.
El acceso directo a memoria permite a cierto tipo de componentes de ordenador acceder
a la memoria del sistema para leer o escribir independientemente de la CPU principal.
Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco,
tarjetas gráficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. También es
utilizado para la transferencia de datos dentro del chip en procesadores con múltiples
núcleos. DMA es esencial en los sistemas integrados, además es una característica esencial
en todos los ordenadores modernos, ya que permite a dispositivos de diferentes
velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.
El acceso directo a memoria es una característica de las computadoras y
microprocesadores modernos que permite que ciertos subsistemas de hardware dentro
de la computadora puedan acceder a la memoria del sistema para la lectura y/o escritura,
independientemente de la unidad central de procesamiento CPU. De lo contrario, la CPU
tendría que copiar cada porción de dato desde el origen hacia el destino, haciendo que
ésta no esté disponible para otras tareas.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un
dispositivo a otro.
ACCESO DIRECTO A MEMORIA (DMA)
Aquellas computadoras que tienen canales DMA o (Direct Memory Access) pueden
transferir datos desde y hacia los dispositivos con menos utilización de CPU que aquellas
computadoras sin canales DMA. Básicamente una transferencia DMA consiste en copiar
un bloque de memoria de un dispositivo a otro. Esa transferencia se lleva a cabo por el
controlador DMA, en lugar del CPU. El controlador DMA es generalmente un chipset de la
3. placa madre. En computadoras sin DMA, el CPU generalmente se ocupa completo durante
toda la operación de lectura o escritura de la memoria y, por lo tanto, no está disponible
para realizar otras tareas. Con DMA, el CPU puede iniciar la transferencia, luego realizar
otras operaciones mientras la transferencia está en progreso y luego recibir una
interrupción del controlador de DMA una vez que la transferencia termina.
DMA es útil en aplicaciones en tiempo real y en el procesamiento de flujos de datos
Muchos controladores, sobre todo los de dispositivos por bloques, manejan el acceso
directo a memoria o DMA. Para explicar el funcionamiento del DMA, primeramente
debemos comprender cómo ocurren las lecturas de disco cuando no se usa DMA. Primero
el controlador lee el bloque (uno o más sectores) de la unidad en serie, bit por bit, hasta
que todo el bloque está en el buffer interno del controlador. A continuación, el
controlador calcula la suma de verificación para comprobar que no ocurrieron errores de
lectura, y luego causa una interrupción. Cuando el sistema operativo comienza a
ejecutarse, puede leer el bloque del disco del buffer del controlador byte por byte o
palabra por palabra, ejecutando un ciclo, leyéndose en cada iteración un byte o una
palabra de un registro del controlador y almacenándose en la memoria.
Naturalmente, un ciclo del CPU programado para leer los bytes del controlador uno por
uno desperdicia tiempo de CPU.
Por lo anterior el DMA se inventó, para liberar al CPU de este trabajo de bajo nivel.
Cuando se usa DMA, el CPU proporciona al controlador dos elementos de información,
además de la dirección en disco del bloque: la dirección de memoria donde debe
colocarse el bloque y el número de bytes que deben transferirse.
Una vez que el controlador ha leído todo el bloque del dispositivo, lo ha colocado en su
buffer y ha calculado la suma de verificación, copia el primer byte o palabra en la
memoria principal en la dirección especificada por la dirección de memoria de DMA.
Luego, el controlador incrementa la dirección de DMA y decrementa la cuenta de DMA en
el número de bytes que se acaban de transferir. Este proceso se repite hasta que la cuenta
de DMA es cero, y en ese momento el controlador causa una interrupción. Cuando el
sistema operativo inicia, no tiene que copiar el bloque en la memoria; ya está ahí.
No todas las computadoras usan DMA. El argumento en su contra es que en muchos casos
el CPU principal es mucho más rápido que el controlador de DMA y puede realizar el
trabajo en mucho menos tiempo (cuando el factor limitante no es la rapidez del
dispositivo de Entrada/Salida). Si el CPU (rápido) no tiene otra cosa que hacer, obligarla a
esperar hasta que el controlador de DMA (lento) termine, no tiene sentido. Además, si se
omite el controlador de DMA y se deja que el CPU realice todo el trabajo, se ahorra algo
de dinero.
4. Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí que se
necesita el bus del sistema (tanto bus de datos como bus de direcciones), por lo que
existen diferentes estrategias para regular su uso, permitiendo así que no quede
totalmente acaparado por el controlador DMA
Tipos de transferencia DMA
El uso de cada una de ellas dependerá de las características que se deseen primar en un
sistema.
DMA por robo de ciclo: se basa en usar uno o más ciclos de CPU por cada
instrucción que se ejecuta. De esta forma se consigue una alta disponibilidad del
bus del sistema para la CPU, aunque, en consecuencia, la transferencia de los
datos será considerablemente lenta. Este método es el que se usa habitualmente
ya que la interferencia con la CPU es muy baja.
DMA por ráfagas: consiste en enviar el bloque de datos solicitado mediante una
ráfaga, ocupando el bus del sistema hasta finalizar la transmisión. Así se consigue
la máxima velocidad, sin embargo la CPU no podrá usar el bus durante todo ese
tiempo, por lo que permanecería inactiva.
DMA transparente: se trata de usar el bus del sistema cuando se tiene certeza de
que la CPU no lo necesita. De esta manera, como su nombre indica, la DMA
permanecerá transparente para la CPU y la transferencia se hará sin obstaculizar la
relación CPU-bus del sistema. Como desventaja, la velocidad de transferencia es la
más baja posible.
DMA Scatter-gather: permite la transferencia de datos a varias áreas de memoria
en una transacción DMA simple. Es equivalente al encadenamiento de múltiples
peticiones DMA simples. El objetivo es liberar a la CPU de las tareas de copia de
datos e interrupciones de entrada/salida múltiples.
CONCLUSIONES
Un computador sin DMA somete a la CPU a una carga masiva de interrupciones.
Aquellas computadoras que tienen canales DMA pueden transferir datos desde y
hacia los dispositivos con menos utilización de CPU.
Básicamente una transferencia DMA consiste en copiar un bloque de memoria de
un dispositivo a otro.
El controlador DMA es generalmente un chipset de la placa madre.
En computadoras sin DMA, el CPU generalmente se ocupa completo durante toda
la operación de lectura o escritura de la memoria.
En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el
controlador DMA.
5. Las transferencias DMA son esenciales para aumentar el rendimiento de
aplicaciones que requieran muchos recursos.
La DMA libera al CPU de este trabajo de bajo nivel.
BIBLIOGRAFIA
MORERA Juan “Conceptos de Sistemas Operativos”, Editorial: Universidad Pontifica
de Comillas, 2002.
TANENBAUM Andrew. “Sistemas Operativos Modernos”, Editorial: Pearson
Educación, 2003.
SANTAMARIA Eduardo. “Electrónica Digital y Microprocesadores”, Editorial:
Universidad Pontifica de Comillas, 1993.
MANO Morris. “Lógica digital y diseño de computadores”. Editorial: Pearson
Educación, 1982.
STALLINGS William. “Organización y Arquitectura de Computación”. Editorial:
Pearson Educación, S.A 2006. Séptima edición
PILAR María “Sistemas Operativos Monopuesto”. Editorial: Paraninfo, 2010.
ORTIZ Héctor, “Sistemas Operativos Modernos”. Editorial: Universidad de Medellin,
2005.