|
Discos IDE - El misterio de la UDMA |
|
|
|
Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98
DISCOS IDE - EL MISTERIO DE LA UDMA ------------------------------------ Siempre hemos oido hablar de las velocidades del disco duro, de la DMA, del modo PIO 4, de las UDMA, y sinepre nos han querido vender las cosas con frases majestuosas: soporta UDMA 33 y nosotros nos quedamos con la boca abierta y luego incluso vamos "fardando" de rapidez. Pero ¿realmente sabemos lo que nos han vendido? ¿realmente es tan rapido? Tenemos varios componeste que influyen desde que un sector de datos está en el dsico hasta que ese sector de datos, está en la memoria principal de nuestro PC. Por una parte tenemos la veradera velocidad del disco duro. Esta velocidad es unica. Es un componente mecanico y por tanto unicamente depende de la velocidad de rotación del disco (actualemtne en los IDE, hay velocidades de 4200, 5400 y 7200 revoluciones por segundo). Cuando queremos leer un sector de datos, lo pero que no puede pasar es que el sectar, acabe de pasar por debajo de la cabeza de lectura. Si es así, tendremos que esperar una revolucion completa del disco hasta que vuelva a pasar por debajo de la cabeza de lectura. Lo mejor que puede pasar es que esté justo antes de la cabeza lectora. En este caso se leera inmediatamente. Y estadisticamente la media de los sectores que queremos leer, estarán a la "mitad" de distancia de una revoluvion completa del disco. Esto es lo que se define como "average", y realmente solo depende de la velocidad de rotacion. A mas velocidad, mas rapido será el disco (y mas caro). No tenemos en cuenta aquí tambien otro factor. Si la cabeza lectora no está en el cilindro correspondiente al sector que queremos leer, el grazo que soporta a la cabeza lectora, tendrá que hacer un movimiento transversal de posicionamiento a ese cilindor. Esto es lo que se denomina "seek". Por otra parte, pensemos, que la "mitad" de las controladoras actuales, estan integradas dentro de la electronica del disco duro. Y allí es donde podemos tener el verdadero cuello de botella (otro más), ya que a circuiteria y la logica del propio disco, lo mas normal, cuando le solicitamos un sector, es que "lea" más sectores y se lo pase a la controladora (a un mini-caché) por si acaso inmediatamente despues solicitamos otro sector contiguo (suele ser bastante normal que nos interese leer mas de un sector: 512 bytes, incluso el propio sitema operativo, se organiza en cluster que siempre son mayores de ese tamaño, por tanto siempre se le solicitará al disco más de un sector en diversas peticiones sucesivas). Pasemos a cera ahora como van los datos de la controladora a la memoria. DE LA CONTROLADORA A LA MEMORIA ------------------------------- Se pueden utilizar 4 metodos diferentes. * Programmed I/O (PIO) * Memory Mapped I/O * DMA * Busmaster DMA PROGRAMMED I/O --------------- En el programed I/O la transferencia de datos entre controladora y memoria principal se desarrolla a traves de los diferentes ports de I/O (Entrada / Salida) de la controladora, que tambien sirven para la transmision de comandos. En el lado del software, se encuentra un programa correspondiente con los coamndos de lenguaje maquina IN y OUT. Pero esto significa que cada BYTE del disco, debe pasar por la CPU despues de ejecutar dicho comando. Uno a uno (o dos a dos, como maximo). En este caso, la tasa de transferencia de datos no solo está limitado por los valores maximo de velocidad del bus, sino tambien por el rendimiento de la CPU, y evidentemente en un sistema multitarea, la CPU puede que llegue a estar demasiado ocupada preocupandose del acceso a los datos. MEMORY MAPPED I/O ------------------ La CPU podría recoger los datos de la controladora de una manera mas rapida, si esta los dejase en una zona de memoria fija. En este caso, la cpu puede trabajar mucho mas rapidamente con estos datos ya que puede moverlos mediante las intrcciones MOV que trabajan mas rapidamente que los accesos mediante IN y OUT. De esta manera, en las actuales CPUs se puede obtener un mayor rendimiento. Pero por desgracia, las controladoras no "saben" de memoria virtual. Unicamente conocen la memoria real. Esto causa un problema muy serio de rendimiento en los actuales sistemas operativos basados en las tecnicas de memoria virtual (fren al antiguo MSDOS que operaba con memoria real). DMA --- Más conocido que los dos procedimientos anteriores, es la transferencia DMA, que en los PCs se soporta en un chip DMA propio. Este chip, debe posibilitar la tranferencia de datos desde un dispositivo (disco duro, disquete, CDROM, etc..) a la memoria y evitar con ello, el largo camino a traves de la CPU. DMA = Direct Memory Access. La idea es buena, ya que el software solo debe indicarle al controlador DMS, cuantos bytes se han de transportar de donde adonde, pero esto en el PC se realizó de una manera bastante chapucera, ya que el controlador de DMA que emplean los PCs, no solo es bastante inflexible (lo que aún se le podría perdonar), sino sobre todo lento. Tan lento, que aun el acceso según el procedimiento PIO en el pero de los casos es mas rapido a partir de los antiguos 486. Ya que como anacronismo en la historia de los PCs, el controlador DMA en los AT y sus sucesores, sigió haciendose funcionar a 4 MHz, donde el los primeros PCs ya alcanzaban los 4,77 MHz. En ellos, en los antiguos, la transferencia DMA es mas rapida que el PIO. De esta forma no se puede alcanzar mas de 2 Mb /segundo. Por ello, la mayoria de los discos modernos ya no controlan segun el metodo DMA. ** En una segunda parte veremos el BusMaster DMA y los UDMA actuales.
Volver a
Artículos y FAQs
|