Está en la página 1de 7

Andrea Judith Melgar Contreras

0905-16-5835
DMA
El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de
componentes de una computadora acceder a la memoria del sistema para leer o escribir
independientemente de la unidad central de procesamiento (CPU). Muchos
sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas
gráficas y tarjetas de sonido. DMA 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.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo
a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el
controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa
a una interna más rápida. Tal operación no ocupa al procesador y, por ende, éste puede efectuar
otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento
de aplicaciones que requieran muchos recursos.
PROBLEMAS DE COHERENCIA EN LA MEMORIA CACHE
La DMA puede llevar a problemas de coherencia de caché. Imagine una CPU equipada con una
memoria caché y una memoria externa que se pueda acceder directamente por los dispositivos que
utilizan DMA. Cuando la CPU accede a X lugar en la memoria, el valor actual se almacena en la caché.
Si se realizan operaciones posteriores en X, se actualizará la copia en caché de X, pero no la versión
de memoria externa de X. Si la caché no se vacía en la memoria antes de que otro dispositivo intente
acceder a X, el dispositivo recibirá un valor caducado de X.
Del mismo modo, si la copia en caché de X no es invalidada cuando un dispositivo escribe un nuevo
valor en la memoria, entonces la CPU funcionará con un valor caducado de X.
Este problema puede ser abordado en el diseño del sistema de las siguientes dos formas:
 Los sistemas de caché coherente implementan un método en el hardware externo
mediante el cual se escribe una señal en el controlador de caché, la cual realiza una
invalidación de la caché para escritura de DMA o caché de descarga para lectura de DMA.
 Los sistemas no-coherente dejan este software, donde el sistema operativo debe
asegurarse de que las líneas de caché se vacían antes de que una transferencia de salida de
DMA sea iniciada y anulada antes de que una parte de la memoria sea afectada por una
transferencia entrante de DMA que se haya requerido. El sistema operativo debe
asegurarse de que esa parte de memoria no es accedida por cualquier subproceso que se
ejecute en ese instante. Este último enfoque introduce cierta sobrecarga a la operación de
DMA, ya que la mayoría de hardware requiere un bucle para invalidar cada línea de caché
de forma individual.
Los híbridos también existen, donde en la caché secundaria L2 es coherente, mientras que en la
caché L1 (generalmente la CPU) es gestionado por el software.
SECUENCIA DE EVENTOS
Una operación de E/S por DMA se establece ejecutando una corta rutina de inicialización. Consiste
en varias instrucciones de salida para asignar valores iniciales a:
 AR: Dirección de memoria de la región de datos de E/S IOBUF (buffer de entrada/salida).
 WC: Número N de palabras de datos a transferir.
Andrea Judith Melgar Contreras
0905-16-5835
Una vez inicializado, el DMA procede a transferir datos entre IOBUF y el dispositivo de E/S. Se realiza
una transferencia cuando el dispositivo de E/S solicite una operación de DMA a través de la línea de
petición del DMAC.}
Después de cada transferencia, se decrementa el valor de WC y se incrementa el de AR.
La operación termina cuando WC=0, entonces el DMAC (o el periférico) indica la conclusión de la
operación enviando al procesador una petición de interrupción.
SECUENCIA DE EVENTOS DETALLADA
 El procesador inicializa el DMAC programando AR y WC.
 El dispositivo de E/S realiza una petición de DMA al DMAC.
 El DMAC le responde con una señal de aceptación.
 El DMAC activa la línea de petición de DMA al procesador.
 Al final del ciclo del bus en curso, el procesador pone las líneas del bus del sistema en alta
impedancia y activa la cesión de DMA.
 El DMAC asume el control del bus.
 El dispositivo de E/S transmite una nueva palabra de datos al registro intermedio de datos
del DMAC.
 El DMAC ejecuta un ciclo de escritura en memoria para transferir el contenido del registro
intermedio a la posición M[AR].
 El DMAC decrementa WC e incrementa AR.
 El DMAC libera el bus y desactiva la línea de petición de DMA.
 El DMAC compara WC con 0:
 Si WC > 0, se repite desde el paso 2.
 Si WC = 0, el DMAC se detiene y envía una petición de interrupción al procesador.
MOTOR DE ACCESO DIRECTO A MEMORIA:
Además de la interacción de hardware, el acceso directo a memoria puede ser utilizado para
descargar costosas operaciones de memoria, tales como copias de gran tamaño u operaciones de
dispersión-reunión, desde la CPU a un motor de acceso directo a memoria dedicada. Intel incluye
estos motores en los servidores de gama alta, llamado I/O Acceleration Technology (IOAT).
TRANSFERENCIAS:
Durante las operaciones del DMA, el rendimiento del sistema puede verse afectado debido a que
este dispositivo hace un uso intensivo del bus y por lo tanto la cpu no puede leer datos de memoria,
por ejemplo para leer la siguiente instrucción a ejecutar. Esto provoca que mientras el DMA está
operando, la cpu deba esperar a que finalice dicha tarea sin ejecutar ninguna instrucción. Para
solventar esto, existe una memoria cache dentro de la CPU que permite a ésta seguir trabajando
mientras el DMA mantiene ocupado el bus.
En computadores que no disponen de memoria cache,el DMA debe realizar su tarea evitando
ocupar el bus de datos mientras la CPU realiza la fase de captación de la instrucción. A partir de
estas dos posibilidades, existen dos tipos de transferencias de datos del DMA:
 TRANSFERENCIAS MODO RÁFAGA: una vez que la CPU concede el bus al DMA, este no lo
libera hasta que finaliza su tarea completamente. Este tipo de transferencia se usa en
sistemas que disponen de una memoria cache en la unidad de procesamiento, ya que
mientras la CPU puede seguir trabajando utilizando la cache.
 TRANSFERENCIAS MODO ROBO DE CICLO: una vez que la CPU concede el bus al DMA, este
lo vuelve a liberar al finalizar de transferir cada palabra. Teniendo que solicitar de nuevo el
Andrea Judith Melgar Contreras
0905-16-5835
permiso de uso del bus a la CPU. Esta operación se repite hasta que el DMA finaliza la tarea.
Este tipo de transferencia se suele usar en sistema que no disponen de memoria cache en
la unidad de procesamiento, ya que de este modo, aunque la transferencia de datos tarda
más en realizarse, la CPU puede seguir ejecutando instrucciones.

Procesador ARM
Un procesador ARM es uno de una familia de CPU basadas en la arquitectura RISC (computadora
con conjunto de instrucciones reducido) desarrollada por Advanced RISC Machines (ARM).
ARM fabrica procesadores de múltiples núcleos RISC de 32 y 64 bits. Los procesadoresRISC están
diseñados para realizar un número menor de tipos de instrucciones de computadora para que
puedan operar a una velocidad más alta, realizando más millones de instrucciones por segundo
(MIPS). Al eliminar instrucciones innecesarias y optimizar las rutas, los procesadores RISC ofrecen
un rendimiento excepcional a una fracción de la demanda de potencia de los dispositivos CISC
(computación de conjunto de instrucciones complejas).
Los procesadores ARM se utilizan ampliamente en dispositivos electrónicos de consumo como
teléfonos inteligentes, tabletas, reproductores multimedia y otros dispositivos móviles, como
dispositivos portátiles. Debido a su reducido conjunto de instrucciones, requieren menos
transistores, lo que permite un tamaño de matriz más pequeño para el circuito integrado (IC). El
tamaño reducido, la complejidad reducida y el menor consumo de energía del procesador ARM los
hacen adecuados para dispositivos cada vez más miniaturizados.
Las características del procesador ARM incluyen:
 Cargar / almacenar arquitectura.
 Un conjunto de instrucciones ortogonales.
 Principalmente ejecución de un solo ciclo.
 Diseño mejorado de ahorro de energía.
 Estados de ejecución de 64 y 32 bits para alto rendimiento escalable.
 Soporte de virtualización de hardware.
El diseño simplificado de los procesadores ARM permite un procesamiento multi-core más eficiente
y una codificación más sencilla para los desarrolladores. Si bien no tienen la misma capacidad de
procesamiento en bruto que los productos de Intel, líder del mercado x86 , los procesadores ARM a
veces superan el rendimiento de los procesadores Intel para aplicaciones que existen en ambas
arquitecturas.
La competencia directa entre los proveedores está aumentando a medida que ARM se está abriendo
camino en los portátiles de tamaño completo. Microsoft, por ejemplo, ofrece versiones basadas en
ARM de computadoras Surface. La base de código más limpia de Windows RT en comparación con
las versiones x86 también puede ser parcialmente responsable: Windows RT es más ágil porque no
tiene que admitir una cantidad de hardware heredado.
ARM también se está moviendo hacia el mercado de servidores, un movimiento que representa un
gran cambio en la dirección y una cobertura de las apuestas en el rendimiento por vatio sobre el
poder de cómputo en bruto. AMD ofrece versiones de 8 núcleos de procesadores ARM para su serie
de procesadores Opteron. Los servidores ARMrepresentan un cambio importante en la
computación basada en servidores. Un servidor tradicional clase x86 con 12, 16, 24 o más núcleos
aumentan el rendimiento de escala hasta la velocidad y la sofisticación de cada procesador,
Andrea Judith Melgar Contreras
0905-16-5835
utilizando la velocidad de la fuerza bruta y el poder para manejar exigentes cargas de trabajo de
computación.
En comparación, un servidor ARM utiliza quizás cientos de procesadores más pequeños, menos
sofisticados y de baja potencia que comparten tareas de procesamiento entre esa gran cantidad en
lugar de unos pocos procesadores de mayor capacidad. Este enfoque a veces se denomina
"ampliación", en contraste con la "ampliación" de los servidores basados en x86. La arquitectura
ARM fue desarrollada originalmente por Acorn Computers en la década de 1980.

PAGINACIÓN DE LAS MEMORIAS O BLOQUES DE MEMORIAS


En los sistemas operativos modernos como Windows, las aplicaciones y muchos procesos de sistema
siempre referencian a la memoria utilizando direcciones de memoria virtual. Direcciones de
memoria virtual se convierten automáticamente a direcciones reales (RAM) por el hardware. Sólo
piezas de núcleo del sistema operativo base omiten esta traducción de dirección y utilizan
direcciones de memoria real directamente.

La memoria virtual siempre es usada, incluso cuando la memoria requerida por todos los procesos
en ejecución no exceda el volumen de memoria RAM instalada en el sistema.

Archivo de paginación
RAM es un recurso limitado, mientras que para fines más prácticos, la memoria virtual es ilimitada.
Puede haber muchos procesos y cada proceso tiene su propio 2 GB de espacio de dirección virtual
privada. Cuando la memoria usada por todos los procesos existentes excede la memoria RAM
disponible, el sistema operativo mueve páginas (fragmentos de 4 KB) de uno o más espacios de
direcciones virtuales al disco duro del equipo. Esto libera ese marco RAM para otros usos. En
sistemas Windows, estas páginas "paginadas hacia fuera" se almacenan en uno o más archivos
(Pagefile.sys) en la raíz de una partición. Puede haber un archivo de este tipo en cada partición del
disco. La ubicación y el tamaño del archivo de página está configurado en las Propiedades del
sistema (haga clic en Opciones avanzadas, haga clic en rendimiento y, a continuación, haga clic en
el botón configuración ).

Los usuarios suelen preguntar "¿Qué tan grande debo hacer el archivo de paginación?" No hay
ninguna respuesta a esta pregunta porque depende de la cantidad de RAM instalada y en la cantidad
de memoria virtual requiere esa carga de trabajo. Si no hay ninguna otra información disponible, la
recomendación típica de 1,5 veces la RAM instalada es un buen punto de partida. En los sistemas
de servidor, normalmente desea tener suficiente RAM para que nunca haya escasez, de forma que
el archivo de paginación no se utilice. En estos sistemas, puede no ser de ninguna utilidad mantener
un archivo de paginación realmente grande. Por otra parte, si es abundante el espacio en disco,
mantener un archivo de paginación grande (por ejemplo, 1,5 veces la RAM instalada) no causa
problemas y esto también elimina la necesidad de preocuparse sobre qué tan grande hacerlo.
Rendimiento, límites de arquitectura y RAM.

En cualquier sistema, cuando aumenta la carga (el número de usuarios, el volumen de trabajo),
disminuye el rendimiento, pero de una manera no lineal. Cualquier aumento en la carga o demanda,
más allá de un cierto punto, causa una disminución significativa del rendimiento. Esto significa que
Andrea Judith Melgar Contreras
0905-16-5835
ciertos recursos se proveen de manera críticamente baja y esto lo convierte en un cuello de botella

En algún momento, no se puede aumentar los recursos que son escasos. Esto significa que se ha
alcanzado un límite de arquitectura . Algunos límites de arquitectura frecuentes en Windows son
los siguientes:
 2 GB de espacio de direcciones virtual compartido para el sistema (kernel)
 2 GB de espacio de dirección virtual privada por proceso (modo usuario)
 660 MB del sistema almacenamiento PTE (Windows Server 2003 y versiones anterior)
 470 MB de almacenamiento de información de grupo paginado (Windows Server 2003 y
versiones anterior)
 256 MB de almacenamiento de información de grupo no paginado (Windows Server 2003
y versiones anterior)
 Esto se aplica específicamente a Windows Server 2003, pero esto también se aplica a
Windows XP y Windows 2000.

Supervisar el uso de memoria RAM y la memoria virtual


El Monitor de rendimiento es la principal herramienta para supervisar el rendimiento del sistema e
identificar la ubicación del cuello de botella. Para iniciar el Monitor de rendimiento, haga clic
enInicio, haga clic en Panel de Control, haga clic en Herramientas administrativasy, a continuación,
haga doble clic en Monitor de rendimiento. Presentamos un resumen de algunos contadores
importantes y lo que te dicen:
 Memoria, Bytes confirmados: este contador es una medida de la demanda de memoria
virtual.
Muestra el número de bytes asignado por procesos y a la que el sistema operativo se ha
comprometido un marco de página de memoria RAM o una ranura de página en el archivo de
paginación (o quizás ambas). Como de Bytes asignados crece mayor que la memoria RAM
disponible, paginación aumentará y también aumentará el tamaño del archivo de paginación que
se está utilizando. En algún momento, la actividad de paginación se empieza a afectar
significativamente al rendimiento.
Proceso, conjunto de trabajo, _Total: este contador es una medida de la memoria virtual en uso
"activo".

Este contador muestra la cantidad de RAM es necesaria para que la memoria virtual que se utiliza
para todos los procesos que se encuentra en RAM.
Archivo de paginación, archivo de paginación % uso: este contador es una medida de la cantidad del
archivo de paginación se estén utilizando realmente.
Utilice este contador para determinar si el archivo de paginación es un tamaño adecuado.
Memoria, páginas/seg: este contador es una de las medidas peor comprendidas.
Un valor alto para este contador no implica necesariamente que el cuello de botella de rendimiento
se deriva de una escasez de memoria RAM.
Memoria, salida de páginas/seg: este contador muestra cuántas páginas de memoria virtual se
escribieron en el archivo de paginación para liberar los marcos de páginas de memoria RAM para
otros fines cada segundo.
Andrea Judith Melgar Contreras
0905-16-5835

Éste es el mejor contador para supervisar si sospecha que la paginación es el cuello de botella de
rendimiento. Aunque Bytes comprometidoses mayor que la memoria RAM instalada, si la salida de
páginas por segundo es bajo o cero la mayoría de los casos, no hay ningún problema de rendimiento
significativas desde la memoria RAM es insuficiente.
 Memoria, Bytes de caché
 Memoria, bytes de bloque no paginado
 Memoria, paginado,
 Memoria, Bytes totales de código de sistema,
 Total Bytes de controladores del sistema de memoria:
 La suma de estos contadores es una medida de la cantidad de los 2 GB de la parte
compartida del espacio de direcciones virtuales de 4 GB se estén utilizando realmente.
 Memoria, MBytes disponibles: este contador mide la cantidad de RAM disponible satisfacer
las peticiones de memoria virtual (ya sea nuevas asignaciones, o para restaurar una página
del archivo de paginación).

Cuando RAM es escasos (por ejemplo, Bytes asignados es mayor que la RAM instalada), el sistema
operativo intenta mantener cierta fracción de RAM instalada disponible para su uso inmediato
copiando páginas de memoria virtual que no están en uso en el archivo de paginación.

MULTIPROCESADORES
El uso, en un mismo sistema, de varias CPU que comparten recursos entre sí es lo que denominamos
multiprocesamiento. Existen muchos tipos de sistemas de multiprocesamiento, y cambian en
función de diversos aspectos.

En primer lugar, es importante tener en cuenta el emplazamiento en el que se ubican las CPU (es
decir, si están en el mismo die, en el mismo chip o en la misma placa). En segundo lugar, el sistema
de multiprocesamiento puede variar dependiendo de si todas las CPU ejecutan el mismo software
o no. Esta es la diferencia entre un sistema de multiprocesamiento simétrico y uno asimétrico.

También es importante tener en cuenta qué recursos comparten (¿se trata solo de la memoria
principal, de una parte de ella, o también comparten periféricos de entrada o salida?). El sistema de
multiprocesamiento también puede tener variar en función de si las CPU son idénticas (sistema
multinúcleo homogéneo) o diferentes (sistema multinúcleo heterogéneo).

Los sistemas de multiprocesamiento


El multiprocesamiento no es algo nuevo. Hace muchos años, los PC asignaban tareas específicas a
procesadores concretos (como las unidades de procesamiento gráfico, o GPU). En los sistemas
embebidos, también era habitual contar con más de un procesador (por lo general diferentes) y que
cada uno se encargase de la función para la que estaba mejor adaptado.

En la imagen que encontramos más abajo, podemos ver un sistema multiprocesador heterogéneo
embebido de finales de los 90 con un MPC68360 y un Z80180 compartiendo memoria en la misma
placa.
Andrea Judith Melgar Contreras
0905-16-5835
También era frecuente integrar distintas CPU en un mismo chip. De hecho, el MPC68360 que se
muestra en la imagen contaba con una CPU general y otra dedicada a las labores de comunicación.
Ambas estaban en el mismo chip y compartían una RAM interna.

Sin embargo, a medida que aumentó el nivel de integración y la frecuencia de reloj, empezaron a
aparecer problemas. Como solución, y con el fin de aumentar la potencia de procesamiento, los
fabricantes empezaron a montar CPU o núcleos idénticos en el mismo chip. Estos sistemas de
multiprocesamiento homogéneos llevan años dominando el mercado y podemos aprovechar esa
potencia de dos maneras.

Multiprocesamiento simétrico
En este tipo de multiprocesamiento, un sistema operativo usa todas las CPU a la vez y ejecuta
diversas tareas al mismo tiempo. Para optimizar este sistema, se desarrollaron nuevos bloques de
hardware y software por debajo del SO.

Estos sistemas son comunes en dispositivos generales, como ordenadores personales, móviles,
tablets, etc. Sin embargo, es en los servidores donde se saca el máximo partido a esta opción y
donde podemos encontrar procesadores con hasta 32 núcleos.

Multiprocesamiento asimétrico
Esta otra opción suele emplearse en sistemas embebidos. En estos casos, hay más de un sistema
operativo y cada uno usa sus propias CPU (por ejemplo, un router con un software de enrutamiento
propietario en una CPU y con un SO general en la otra). Esta opción permite contar, en un solo
equipo, con un router profesional y un servidor que ofrece servicios avanzados.

ARM big.LITTLE: arquitectura multinúcleo heterogénea


Los dispositivos portátiles (como los móviles) cada vez necesitan más potencia de procesamiento,
pero sus baterías no están creciendo al mismo ritmo. Una posible solución al problema es integrar,
en el mismo chip, CPU potentes y de alto consumo con algunas más lentas en las que se ahorre
energía. Al alternar entre ambos modelos, podemos mantener la capacidad de procesamiento y
ahorrar batería cuando los procesos a realizar no sean tan exigentes.

La solución ARM big. LITTLE es un ejemplo de esta arquitectura multinúcleo heterogénea.


En Teldat, siempre le hemos sacado el máximo partido a los sistemas de multiprocesamiento, desde
los primeros routers de los años 90 (con sistemas como el que se muestra en la imagen) hasta los
sistemas multinúcleo homogéneos más modernos, con multiprocesamiento asimétrico (como los
del Atlas-i60). Además, seguiremos adaptando el concepto de multiprocesamiento en los nuevos
desarrollos que lancemos en el futuro.

También podría gustarte