acceso directo de memoria

5
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

Upload: cristian-aguirre

Post on 01-Jun-2015

1.168 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Acceso Directo de Memoria

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

Page 2: Acceso Directo de Memoria

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

Page 3: Acceso Directo de Memoria

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.

Page 4: Acceso Directo de Memoria

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.

Page 5: Acceso Directo de Memoria

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.