Frenado inesperado del disco duro, por qué y cómo se solucionó. Luchando contra el modo PIO. Modos de transferencia de datos

Hola a todos los lectores del blog. En este artículo hablaremos sobre cómo restaurar el rendimiento del sistema. A menudo los usuarios tienen el problema de una computadora muy lenta, especialmente al grabar y en lectura discos, o simplemente "frenos" irrazonables del sistema durante el funcionamiento o la carga. ¿Por qué el sistema se congela?
Puede haber muchas razones para esto, hoy propongo considerar una bastante común: este es un modo de funcionamiento incorrecto CD/DVD-ROM o discos duros, es decir, hablemos de PIO y DMA.Lea cómo comprobar si hay errores en su disco duro y solucionarlos.

¿Cuál es la esencia y diferencia entre PIO y DMA?.

PIO y DMA- estos son dos modos de funcionamiento de los discos duros, en el caso general de cualquier disco.
PIO (Entrada/Salida Programable)- modo ya desactualizado, para que funcione necesita
comprometer CPU, lo que resulta en una pérdida significativa de rendimiento.
DMA (acceso directo a memoria)- un método moderno que pasa por alto el procesador y
apelaciones directamente a RAM, esto permite significativamente aumentar la productividad y deshazte de los molestos “frenos”.
Sin embargo, el modo DMA en diversas variantes se utiliza desde hace mucho tiempo en los sistemas operativos Windows 7, 8 y 10. en Windows XP, A menudo hay una situación en la que DMA cambia automáticamente a PIO y no será posible recuperarlo utilizando métodos convencionales. ¿Qué causa esta situación?
Implementado en Windows XP mecanismo control de errores, si los errores ocurren con demasiada frecuencia al leer desde un disco duro u otra unidad, el sistema cambia automáticamente a un modo más lento, donde su porcentaje es menor. Sin embargo, WindowsXP Puede poner un dispositivo que funciona normalmente en este modo.
Cómo corregir errores lectura de ventanas

Entonces, verifiquemos los modos de funcionamiento de todas las unidades para que el sistema no se ralentice.

1 . Inicie la consola "Gestión informática"– haga clic derecho en "Mi computadora"


en el menú desplegable seleccione el elemento "Administrador de dispositivos", o a través de
Panel de control. O Inicio - Ejecutar - devmgmt.msc

2. Seleccionar " Administrador de dispositivos", seleccionar IDEATA/ATAPI controladores,


Se abrirán varias líneas con controladores: nos interesa :
Primaria y Secundaria canales IDE→ vamos uno por uno a propiedades estos canales (haga clic derecho en el canal, línea " Propiedades"), al marcador " Opciones adicionales»,
Hay dos grupos aquí. "Dispositivo 0" y "Dispositivo 1", cada uno tiene líneas
"Modo de transferencia"– debe ser seleccionado "DMA si está disponible", entonces la línea "Modo de transmisión actual", debe haber algo como "Modo Ultra DMA: 4,


si aquí se configura el “modo PIO”, entonces esto es nuestro caso y lo haremos arreglarlo.
si en todas partes el modo vale la pena ultra-DMA, entonces todo está bien para usted y no es necesario continuar con otras acciones.
3. Primero, intentemos solucionarlo manualmente, en cada línea. “Modo de transferencia” configurado en “DMA, si está disponible”, haga clic "DE ACUERDO" y reinicie la computadora. Después de encender de nuevo
Observamos los modos de funcionamiento de los canales, si DMA está instalado en todas partes, entonces todo está en orden. si queda PIO, luego continuamos más.
4. encontrar de nuevo Canales IDE primarios y secundarios y elimínelos (haga clic derecho en cada canal, seleccione de la lista "Borrar"). No tengas miedo, todo funcionará bien.
Reinicie su computadora nuevamente – Windows XP encontrará controladores y los cambia al modo de funcionamiento rápido, es decir, en DMA. Comprueba el resultado, debería haber un modo en todas partes. DMA.
5. Si todo lo anterior no ayudó y vuelves a ver “ Modo PIO", entonces será necesario reorganizar los controladores para la placa base - reiniciar
y comprobar el resultado nuevamente.
6. Bueno, el último punto, si después de todo el sufrimiento el régimen PIO no desapareció, entonces tendrás que editarlo en registro Me gustaría señalar: realizar cualquier operación con
el registro es muy cuidadoso y cuidadoso; cualquier acción incorrecta puede provocar la inoperancia total de su sistema. Lo mejor es hacer una copia del registro con antelación.
Lea cómo configurar Windows XP usando el registro

Primero, intente desactivar el sistema de control de errores.
Para ello, en la rama de registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\,
crear una clave Control de errores y establecer su valor en 0.


Después de eso, reinicie y siga los pasos. №4.


puedes configurar manualmente el modo DMA.
Hay varias carpetas aquí. - 0000, 0001, 0002.
0000 – responsable del propio controlador;
0001 – responsable del canal IDE secundario;
0002 – responsable del canal IDE primario;
Abra la carpeta del canal que necesitamos. contiene
varias teclas, primero seleccione:
MasteDeviceTimingModePermitido
Dispositivo esclavoTimingModePermitido
y establecer el valor igual a 0хffffffff.
Después de esto, establezca el valor de las siguientes claves:
Modo de sincronización del dispositivo maestro
Modo de sincronización del dispositivo esclavo
según los siguientes datos, dependiendo de
apoyado Modos UDMA:
Modo UDMA 2 – 0 × 2010
Modo UDMA 4 – 0 × 8010
Modo UDMA 5 – 0×10010
Modo UDMA 6 – 0xffff

Después de eso, reinicie y verifique el resultado; todo debería funcionar bien.
Cómo acelerar y restaurar el rendimiento de Windows 10, lea
¿Cuál es la velocidad de transferencia de información en las computadoras? Lea
Espero que este artículo te ayude a configurar los modos correctamente. PIO y DMA y mejorar el rendimiento general del sistema.


Queridos lectores!
Si te gustó el blog y los materiales publicados te resultaron útiles, te pido que ayudes con el contenido y desarrollo de este blog. Puedes hacerlo donando cualquier cantidad. Su apoyo financiero se utilizará para promocionar el blog, llenarlo con buen material, mejorar la funcionalidad y la facilidad de lectura e implementar planes futuros.
1) Transfiriendo dinero a la tarjeta Sberbank: 4424 7710 1196 4323
2) La forma más sencilla, que no requerirá mucho esfuerzo por parte de cada usuario y lector del blog, es que al final de cada artículo hay varios botones ( "compartir") para agregar un artículo a redes sociales o blogs y otros recursos de comunicación en Internet.
Gracias de antemano a todos los que ayudarán a desarrollar el blog.

Si la computadora comienza a ralentizarse, la mayoría de los usuarios, en primer lugar, comienzan a culpar al procesador, la RAM o la tarjeta de video, pero olvidan por completo que el disco duro es un componente igualmente importante de la computadora y, en muchos casos, los problemas de reducción la velocidad del sistema operativo están relacionadas precisamente con él.

Posibles modos de funcionamiento del disco duro.

El disco duro tiene la capacidad de trabajar con datos en dos modos: PIO heredado y DMA más nuevo. Se diferencian radicalmente en el principio de funcionamiento y, en consecuencia, en la velocidad de procesamiento de datos. Entonces, en el modo PIO, todos los datos se procesan utilizando el procesador, lo que los carga mucho y, como resultado, conduce a una caída en el rendimiento general del sistema. Pero el modo DMA ya es un procesamiento de datos de hardware en el que se utilizan varios aceleradores y la CPU no participa en este proceso.

Cambio espontáneo de Windows al modo PIO y signos de esto

De forma predeterminada, Windows funciona con el disco duro en modo DMA de alta velocidad, pero a veces, debido a errores específicos, cambia al modo PIO por sí solo. Además, habilitar nuevamente DMA es muy problemático y es casi imposible hacerlo utilizando métodos estándar. Los signos característicos de que Windows ha pasado a trabajar con el disco duro en modo PIO son:

La velocidad de trabajo con HDD disminuye varias veces;
Velocidad lenta del sistema durante las operaciones del disco;
Carga excesiva del procesador (80-90%) cuando se trabaja con un disco duro;
El sistema comenzó a “desacelerarse” drásticamente. Es decir, todo estaba bien hace una hora y de repente aparecieron problemas.

Por el momento, el disco duro es el punto más débil de todo el sistema, y ​​una caída en su velocidad de funcionamiento, incluso a la mitad, tiene consecuencias catastróficas. Para asegurarse de que Windows realmente haya cambiado para funcionar con el disco duro en modo PIO lento, debe hacer lo siguiente:

1. Haga clic en el icono “Mi PC” con el botón derecho del mouse y seleccione “Administrar”;

2. Expanda la rama del controlador y busque el canal al que está conectado su disco duro;
3. Haga clic derecho sobre él, vaya a "Propiedades" y cambie a "Configuración avanzada";
4. Mire la línea "Modo de transmisión actual". Si dice "Modo DMA", entonces todo está bien, pero si es "Modo PIO", tendrá que realizar algunas operaciones simples y devolver el disco al modo de funcionamiento preferido.

Habilitar el modo DMA

En realidad, hay dos formas de lograrlo. El primero es bastante simple y sólo necesita quitar el dispositivo que funciona mal y luego reiniciar su computadora. Después de esto, Windows lo instalará automáticamente nuevamente y el modo operativo del dispositivo volverá a ser DMA.

Si por alguna razón no puede habilitar DMA usando el primer método, tendrá que hacer un poco más de esfuerzo y usar el Editor del Registro. Haga lo siguiente:

  1. Presione Win+R y escriba el comando en la línea que aparece regedit;
  2. Sigue el camino HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\(4D36E96A-E325-11CE-BFC1-08002BE10318);

  1. Busque la línea MasterDeviceTimingModeAllowed.
  2. Si el valor de esta línea en la columna está escrito 0x00000001f, esto significa que su disco duro realmente está funcionando en modo PIO;
  3. Cambie el valor a 0xffffffff y reinicie su computadora.

Después de esto, su disco duro volverá al modo DMA y su velocidad y la velocidad general del sistema aumentarán significativamente.

Como tú sabes, ventana 7 recibió mejoras más significativas en el tiempo de arranque y la respuesta del sistema en comparación con su predecesor Vista de Windows. Se realizaron cambios significativos que permitieron que el sistema no consumiera toda la memoria del sistema al abrir una gran cantidad de ventanas del Explorador, y se optimizaron los servicios y procesos del sistema.


En este artículo veremos:

  • optimización del menú de inicio
  • optimizar el rendimiento del disco duro en Windows 7
  • optimizar la velocidad de copiar y mover archivos en Windows 7
  • optimización del trabajo con controladores de Windows 7
  • Optimización del tiempo de arranque de Windows 7
  • acelerar el proceso de visualización de imágenes en miniatura
  • acelerar el apagado de Windows 7
¡Atención!
Tenga en cuenta que algunos de los métodos discutidos para acelerar el trabajo ventana 7 se basan en deshabilitar cualquier tipo de tareas, simplificando o mejorando la funcionalidad del sistema para un uso más cómodo. Aquellos. Básicamente, estás eligiendo entre comodidad y rendimiento.

Formas de optimizar Windows 7

1. Acelera el menú de inicio.

Al sistema le toma algún tiempo detectar los programas instalados recientemente, así como resaltar estos programas instalados recientemente, cada vez que abre el menú Inicio. Puedes ahorrar este tiempo.

Para hacer esto, debe ir a la configuración del menú de inicio: en propiedades "Barra de tareas y menú Inicio"(para activar, vaya al panel de control Windows 7: Inicio -> Panel de control). Ir al marcador "Menú Inicio" y haga clic en el botón "Melodía".
Figura 1. Personalización del menú Inicio

Desmarcar "Resaltar programas instalados recientemente", luego haga clic "Aplicar".
Figura 2. Deshabilite el resaltado de programas instalados recientemente
Para reducir la pausa cuando aparece la ventana del menú Inicio, vaya al editor de registro (comando "regedit" en dialogo "Buscar programas y archivos").
Figura 3. Lanzamiento del Editor del Registro
Después de iniciar el Editor del Registro ( regedit.exe) ir al hilo HKEY_CURRENT_USER -> Panel de control -> Escritorio(Figura 4).

Figura 4. Seleccionar la rama de registro requerida
Cambiar el valor clave MenúMostrarRetraso Con "400" en "50". La pausa se acortará significativamente.

Figura 5. Cambiar la pausa al mostrar una ventana
2. Optimización de tu disco duro en Windows 7

Esta opción ha sido familiar desde los días. WindowsXP, pero si en experiencia originalmente se incluyó, luego en ventana 7 La optimización del disco duro se consideró innecesaria y está deshabilitada de forma predeterminada. Ahora veremos el método para habilitar esta opción.

vamos a Inicio -> Panel de control -> Administrador de dispositivos -> Dispositivos de disco -> (seleccione su disco duro) -> Propiedades -> Política... y ponga una marca al lado del elemento "Deshabilite el vaciado del búfer de caché de entrada de Windows para este dispositivo".
Figura 6. Deshabilitar el borrado del búfer de caché de entrada de Windows
Ahora en el mismo "Administrador de dispositivos" abre otro hilo - "Controladores IDE ATA/ATAPI (Controladores IDE ATA/ATAPI)", después de lo cual en las propiedades de todos los canales. ATA (canal ATA 0, canal ATA 1 etc.) en la pestaña "Configuración avanzada" compruebe si la casilla de verificación está marcada “Habilitar DMA”.
Figura 7. Habilitación del modo DMA
Si la casilla de verificación no está marcada, márquela.

3. Acelera la copia y el movimiento de archivos en Windows 7

ventana 7 Recibió otra característica interesante: la compresión de diferencia remota.
Por un lado, esta opción calcula y transmite la diferencia entre dos objetos, minimizando la cantidad de datos transmitidos, pero por otro lado, lleva tiempo realizar el cálculo.

Puede desactivar esta función. Para hacer esto, vaya a Inicio -> Panel de control -> Programas y características -> Activar o desactivar las funciones de Windows -> Compresión diferencial remota (debe estar desmarcada).

Figura 8. Desactivación de la compresión diferencial
4. Deshabilite la verificación de firma digital del conductor

Esta acción también puede aumentar ligeramente la velocidad del sistema (al instalar nuevos controladores). Para desactivar esta opción en ventana 7 sigue estos pasos:

Ejecutar en "Comenzar" gpedit.msc.
Figura 9. Lanzamiento del panel de administración
Luego dirígete a la siguiente ruta:

Configuración de usuario -> Plantillas administrativas -> Sistema -> Instalación de controladores -> Firma digital de controladores de dispositivos. En esta ventana debe seleccionar el modo. "Desactivado".

Figura 10. Desactivación de la verificación de firma digital del conductor
5. Acelera el arranque de Windows 7

Podemos ganar unos segundos más, aunque este consejo aplica para aquellos usuarios que trabajen en procesadores multinúcleo con ventana 7 como sistema operativo.
Entonces, sigue estos pasos:

Ingresar MSCONFIG en el campo de búsqueda del menú "Comenzar" y presione la tecla "Ingresar".

En la ventana que se abre, vaya a la pestaña y haga clic en el botón "Opciones avanzadas".

Figura 11. Opciones adicionales de optimización del sistema Marque la casilla junto al artículo "Número de procesadores" y en el menú desplegable debajo de este elemento, seleccione el número máximo de núcleos (2 o 4).

Figura 12. Configuración de la cantidad de procesadores para sistemas con procesadores multiproceso
Hacer clic "DE ACUERDO" y reinicie el sistema para ver una diferencia bastante notable en la velocidad de arranque ventana 7.

6. Acelere la visualización de miniaturas (miniaturas).

Puede aumentar la velocidad de visualización de miniaturas en ventana 7. Para ello es necesario seguir estos pasos:

Ingresar regedit(sin comillas) en el campo de búsqueda del menú "Comenzar" y presione la tecla "Ingresar".

Ir al hilo "HKEY_CURRENT_USER -> Panel de control -> Ratón".

Figura 13. Seleccionar la rama de registro deseada para optimizar la pausa al mostrar miniaturas
Haga doble clic en el parámetro Tiempo De Desplazamiento Del Ratón y cambiar su valor a 100 .

Figura 14. Establecer un nuevo valor
7. Reducir el tiempo de apagado de Windows 7

tiempo de apagado ventana 7 puede reducirse significativamente. Sin embargo, este es un método bastante bárbaro: reducimos el tiempo asignado al proceso para finalizar el programa, después del cual el programa se finalizará por la fuerza.

Ingresar regedit en el campo de búsqueda del menú "Comenzar" y presione la tecla "Ingresar".

Ir al hilo HKEY_LOCAL_MACHINE -> Sistema -> CurrentControlSet -> Control.


Figura 15. Selección de la clave de registro requerida
Cambiar el valor del parámetro "Tiempo de espera de WaitToKillService" del significado 12000 (12 segundos) en 2000 (2 segundos).

Figura 16. Cambiando el valor.

DMA o Direct Memory Access es una tecnología utilizada en muchos dispositivos informáticos y, en particular, en los discos duros y CD-ROM modernos para mejorar su rendimiento. En los parámetros de cualquier disco duro siempre encontrarás mención a DMA. Pero no todo el mundo sabe que, de forma predeterminada, en Windows 95/98 y NT 4.0, este modo simplemente está desactivado por compatibilidad con discos antiguos (o más bien antiguos).

Cuando este modo está habilitado, la carga del procesador durante las operaciones de copia se reduce muchas veces y, a veces, aumenta significativamente el rendimiento del sistema en su conjunto. Todos los discos duros y unidades de CD-ROM modernos funcionan correctamente en modo DMA y utilizan sus capacidades inherentes.

¿Cómo funciona DMA? Muy sencillo. Si durante la copia normal los datos se transfieren desde el disco duro a través del procesador central a la RAM y luego de la RAM a través del procesador al disco, entonces en el modo DMA el procesador queda excluido de esta cadena. Los datos pasan inmediatamente del disco a la RAM. El resultado es una carga mínima del procesador durante las operaciones de lectura y escritura y, como resultado, un aumento significativo en el rendimiento del sistema.

Es importante no confundir el modo DMA y el tipo de controlador de disco duro. Si su unidad es compatible con UltraDMA 33 o 66, esto simplemente significa que es capaz de comunicarse con el controlador IDE correspondiente a 33 o 66 MB/seg.

Para verificar si realmente se está utilizando el modo DMA y, si es necesario, habilitarlo, siga las siguientes recomendaciones.

Para Windows 95/98

Haga clic derecho en el icono Mi PC, seleccione Propiedades y vaya a la pestaña Administrador de dispositivos. Seleccione Unidades de disco y Disco IDE genérico. Haga doble clic en él y vaya a la pestaña Configuración. Si la casilla de verificación junto a la opción DMA está marcada, entonces el modo DMA está funcionando. Si no, instálelo. Después de reiniciar, debería permanecer en su lugar.

Si se reinicia, entonces la unidad o el controlador no son compatibles con DMA. Se puede realizar una operación similar con una unidad de CD-ROM. Si por alguna razón después de reiniciar el dispositivo no funciona correctamente o no aparece en la lista, deberá reiniciar en Modo seguro y desmarcar la casilla. Sin embargo, en mi práctica nunca he tenido que hacer esto. Si se utiliza un controlador IDE adicional (por ejemplo, para trabajar con discos UltraDMA 66), esta pestaña puede verse diferente y el controlador del controlador toma el control del modo DMA. Muchas placas base modernas basadas en el chipset Intel 440BX utilizan un controlador UltraDMA adicional de este tipo, ya que BX no admite de forma nativa discos UltraDMA 66.

Para Windows 2000

A diferencia de Windows 9x, Windows 2000 configura de forma predeterminada muchos componentes del sistema para un rendimiento óptimo, por lo que en algunos lugares funciona mucho más rápido. Esto se aplica plenamente a los discos duros.

Para saber si está utilizando DMA en este sistema operativo, debe hacer clic derecho en el ícono Mi PC, seleccionar Administrar y seleccionar Administrador de dispositivos en la ventana Administración de computadoras. En el árbol que aparece, debe seleccionar los controladores IDE ATA/ATAPI y el canal IDE principal. Como regla general, el disco duro se encuentra en el canal principal del controlador.

Haga doble clic en el canal IDE principal (o en el canal IDE secundario, si el dispositivo está ubicado en un canal IDE adicional) y en la ventana que aparece, seleccione la pestaña Configuración avanzada. El bloque Dispositivo 0 muestra la configuración del dispositivo instalado como Maestro, y el bloque Dispositivo 1 muestra la configuración del dispositivo instalado como Esclavo. El campo Modo de transferencia actual muestra en qué modo está funcionando el dispositivo y el Modo de transferencia le permite cambiarlo manualmente.

Para Windows NT 4.0

No existe una manera fácil de habilitar DMA en este sistema. Tendrá que arreglar el registro o utilizar alguna utilidad que lo haga por usted.

Es preferible el segundo método. Para hacer esto, puede utilizar el pequeño programa ConfigNT (confignt.lgg.ru). Además de habilitar DMA, el programa puede cambiar una serie de parámetros diferentes que no se pueden cambiar con herramientas estándar.

Para habilitar el modo DMA usando ConfigNT, debe seleccionar la pestaña IDE/ATAPI en el programa y configurar Habilitar en el campo Detección de DMA para ambos canales. Después de configurar los parámetros, debe reiniciar su computadora.

Para ver la ganancia de rendimiento resultante en la práctica, basta con ejecutar un programa que mida la carga del procesador mientras se copia un archivo grande, con DMA habilitado y deshabilitado. En Windows 2000 o NT, la forma más sencilla es utilizar el Administrador de tareas estándar (Ctrl-Shift-Esc).

Vitaly Shuravko

Hola a todos, hoy hablaremos de DMA: exactamente la tecnología que ayuda a su computadora a reproducir música, mostrar imágenes en la pantalla, escribir información en el disco duro y, al mismo tiempo, poner una carga escasa en el procesador central.

DMA, ¿qué es? ¿De qué estás hablando?

DMA, o Direct Memory Access, es una tecnología para el acceso directo a la memoria, sin pasar por el procesador central. En la era de los 486 y los primeros Pentium, reinaba el bus ISA, así como el método de intercambio de datos entre dispositivos: PIO (Entrada/Salida Programada).

PIO es inherentemente simple: para obtener datos de un dispositivo, el controlador del sistema operativo (o el firmware de otro dispositivo) tenía que leer estos datos de los registros del dispositivo. Veamos un ejemplo:

  • Llegaron 1500 bytes de datos a la tarjeta de red.
  • La tarjeta de red inicia una interrupción para informar al procesador que los datos deben recuperarse del dispositivo; de lo contrario, se producirá un desbordamiento del búfer.
  • El sistema operativo capta la interrupción del controlador de interrupciones y la envía al controlador para su procesamiento.
  • El controlador lee datos de los registros de la tarjeta de red en un bucle, byte a byte.
Como resultado, si leer un byte requiere aproximadamente 1 ms de tiempo de procesador, entonces leer 1500 bytes requiere 1500 ms. Pero este es solo un paquete Ethernet, imagina cuántos paquetes recibe la tarjeta de red cuando lees tu habrahabr favorito. Por supuesto, en realidad, la lectura en modo PIO se puede organizar en 2,4 bytes, pero la pérdida de rendimiento seguirá siendo catastrófica.

Cuando el volumen de datos procesados ​​por el procesador comenzó a aumentar, quedó claro que era necesario minimizar la participación del procesador en la cadena de intercambio de datos, de lo contrario las cosas se complicarían. Y luego la tecnología de acceso directo a la memoria encontró un uso activo.

Por cierto, DMA se utiliza no sólo para intercambiar datos entre un dispositivo y la RAM, sino también entre dispositivos en el sistema. La transferencia DMA es posible entre dos secciones de RAM (aunque esta maniobra no es aplicable a la arquitectura x86). También en su procesador Cell, IBM utiliza DMA como mecanismo de comunicación principal entre los elementos de procesamiento sinérgico (SPE) y los elementos de procesamiento central (PPE). Además, cada SPE y PPE pueden intercambiar datos vía DMA con RAM. Esta técnica es en realidad una gran ventaja de Cell, porque elimina los problemas de coherencia de la caché durante el procesamiento de datos multiprocesador.

Y de nuevo la teoría

Antes de ponernos en práctica, me gustaría destacar varios aspectos importantes de la programación de dispositivos PCI y PCI-E.

Mencioné brevemente los registros de dispositivos, pero ¿cómo accede a ellos la CPU? Como muchos de ustedes saben, existe una entidad en la tecnología informática como los puertos IO (puertos de entrada/salida). Están diseñados para intercambiar información entre el procesador central y los dispositivos periféricos, y el acceso a ellos es posible mediante instrucciones de montaje especiales: entrada/salida. BIOS (u OpenFirmware en sistemas basados ​​en PPC) en las primeras etapas de inicialización de dispositivos PCI, así como algunos otros (controlador Super IO, controlador de dispositivo PS/2, temporizador ACPI, etc.), asigna su propia gama de puertos IO a un controlador específico, donde se muestran los registros del dispositivo.

Además, los registros del dispositivo se pueden asignar a la RAM (Registros asignados en memoria), es decir. al espacio de direcciones físicas. Este método tiene una serie de ventajas, a saber:

  • La velocidad de acceso a la memoria física es mayor que a los puertos IO.
  • Los puertos IO no pueden mostrar más de 65535 bytes de registros, mientras que el tamaño de RAM de las computadoras modernas es muchas veces mayor.
  • Leer los registros del dispositivo desde la RAM es más fácil que usar puertos IO :)
Los datos sobre qué rango de puertos IO o RAM está asignado al dispositivo se almacenan en el espacio de configuración PCI, concretamente en los registros BAR0, BAR1, BAR2, BAR4, BAR5.

Por lo tanto, existen dos métodos para reciclar DMA: DMA contiguo y DMA de dispersión/recolección.

DMA contiguo

Este método es muy simple y ahora está casi obsoleto, pero todavía se usa para programar controladores de sonido (por ejemplo, Envy24HT). Su principio es el siguiente:
  • En la RAM se asigna un búfer de tamaño suficientemente grande.
  • La dirección física (más precisamente, la dirección en el bus de la sección de memoria, porque la dirección física y la dirección del bus son iguales en la arquitectura x86, pero no iguales en PPC) de este búfer se escribe en el registro del dispositivo.
  • Cuando los datos llegan al dispositivo, el controlador del dispositivo inicia una transferencia DMA.
  • Una vez que el búfer está completamente lleno, el controlador del dispositivo emite una interrupción para indicarle a la CPU que el búfer debe pasarse al sistema operativo.
  • El controlador del sistema operativo procesa la interrupción y pasa los datos recibidos del búfer a lo largo de la pila del dispositivo del sistema operativo.
Como puede ver, todo es bastante simple y tan pronto como el bus ISA adquirió soporte DMA, este método encontró una aplicación muy amplia. Por ejemplo, los controladores de las tarjetas de red tenían dos buffers DMA: uno para recibir datos (rx) y el otro para enviar (tx).

Dispersar/reunir DMA

Con el aumento de la velocidad de los adaptadores Ethernet, el DMA contiguo ha mostrado su inconsistencia. Principalmente debido a que se requerían áreas de memoria bastante grandes, que en ocasiones eran imposibles de asignar, ya que en los sistemas modernos la fragmentación de la memoria física es bastante alta. El culpable de todo es el mecanismo de la memoria virtual, sin el cual no podemos vivir hoy :)

La solución se sugiere por sí sola: en lugar de utilizar un área de memoria grande, utilice varias, pero en diferentes regiones de la misma memoria. Surge la pregunta, pero ¿cómo decirle al controlador del dispositivo cómo iniciar una transferencia DMA y en qué dirección escribir datos? Y luego encontraron una solución: usar descriptores para describir cada área de la RAM.

Un descriptor de búfer DMA típico contiene los siguientes campos:

  1. La dirección de la sección de RAM (es decir, la dirección del bus), que está destinada a la transferencia DMA.
  2. El tamaño de la sección de RAM descrita.
  3. Banderas opcionales y otros argumentos específicos.
  4. Dirección del siguiente descriptor en memoria.
La estructura de los descriptores la determina el fabricante del controlador de dispositivo específico y puede contener otros campos. El descriptor, al igual que el búfer DMA, se encuentra en la RAM.

El algoritmo DMA de dispersión/reunión es el siguiente:

  • El controlador del sistema operativo asigna e inicializa descriptores de búfer DMA.
  • El controlador asigna buffers DMA (secciones de RAM para transferencia DMA) y escribe la información necesaria sobre ellos en descriptores.
  • El dispositivo, según surge la necesidad, llena los búferes DMA y, una vez llenos uno o más búferes, inicia una interrupción.
  • El controlador del sistema operativo examina todos los descriptores del búfer DMA, determina cuáles fueron llenados por el controlador del dispositivo, reenvía los datos del búfer más abajo en la pila del dispositivo y marca el búfer como listo para la transferencia DMA.
El orden en el que el controlador del dispositivo llena los buffers DMA lo determina el fabricante. El controlador puede escribir en el primer búfer DMA libre, o simplemente escribir en una fila (los descriptores del búfer DMA en este caso forman una lista de anillo enlazada individualmente) en todos los búferes, etc.

Detener...

Probablemente eso sea todo por hoy, de lo contrario habrá demasiada información. En el próximo artículo te mostraré cómo funciona IOKit con esta magia callejera. Espero sus comentarios y adiciones;)


Arriba