Controlador de Floppy Disk - DMA Alejandro Furfaro Progrmación Sistemas Operativos 12 de Mayo de 2011 - 1c2011 Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 1 / 19 Acceso Directo a Memoria Introducción ¿Que es DMA? DMA es una técnica mediante la cual un controlador dedicado, realiza transferencias directas de datos, sin la intervención del procesador. Este solo necesita programar al Controlador de DMA con los siguientes datos: 1 Cantidad de bytes a transferir. 2 Dirección del flujo de datos (Memoria-E/S, E/S-Memoria, Memoria-Memoria). 3 Dirección de memoria a partir de la cual se comenzará a leer o escribir datos. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 2 / 19 Acceso Directo a Memoria Introducción Diagrama de un Controlador de DMA Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 3 / 19 Acceso Directo a Memoria Introducción Máquina de estados del procesador 1 El dispositivo que necesita iniciar un DMA, envı́a al procesador una señal de Bus Request. 2 El procesador completa el ciclo de bus actual (si lo hubiere) y envı́a una señal de Bus Grant al dispositivo. 3 Simultáneamente, el procesador libera el bus, para que el dispositivo pueda accederlo. 4 El controlador de DMA comienza la transferencia desde la dirección de origen a la de destino. 5 El procesador sensa a través el snoop bus del controlador cache las direcciones que son accedidas durante el DMA en especial las de escritura. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 4 / 19 Acceso Directo a Memoria Introducción Máquina de estados del procesador 6 Durante las transferencias el controlador cache del procesador sensa a través del snoop bus si se modifica alguna dirección que esté almacenada en la memoria cache. Si se da esta condición: Invalida la lı́nea completa del cache que contiene la dirección modificada Actualiza el caché si tiene posibilidad de acceder al bus de datos en modo lectura. 7 Una vez finalizada la transferencia el controlador desactiva la lı́nea de requerimiento del bus. 8 El procesador reasume la actividad en el punto en que la habı́a suspendido. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 5 / 19 Acceso Directo a Memoria Introducción DMA en la PC Primer generación: PC-XT. Bus ISA. Controlador de DMA 8237. Funciones: Refresco de memoria (obsoleta), Floppy disk, y Hard disk (obsoleta) Segunda Generación: PC-386. BUS ISA. PIO (programmable Input Output). El 8237 es un dispositivo antiguo y comparativamente lento respecto de los procesadores siguientes. Además los discos rı́gidos desarrollan mas velocidad, y llevan toda la lógia del HDC al disco junto con el HDD, y estandarizan una interfaz ATA. Con lo cual es mas rápida una rutina utilizando las instrucciones INS y OUTS, que usar el DMA 8237. Tercer Generación: PCs Modernas. BUS PCI. UDMA (Ultra DMA). Ultra DMA es una tecnologı́a basada en incluir en el Hard Disk Drive, además el controlador de DMA. Aparece la interfaz SATA. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 6 / 19 Acceso Directo a Memoria Introducción El floppy se arregla con el viejo 8237... El 8237 fue desarrollado por Intel durante los años ’70, y está pensado igual que el PIC 8259 para trabajar con los procesadores 8085 y 8088. No obstante, continuó integrando la arquitectura base de todas las PCs por compatibilidad con el modelo original. Básicamente el 8237 consta de 4 canales de DMA independientes. Todos soportan transferencias Memoria - E/S y E/S - Memoria. Los canales 0 y 1, además soportan transferencias Memoria - Memoria. Al desarrollar la primer PC, IBM incluyó en la Arquitectura base del mother board un 8237, destinando el canal 0 para refrescar la memoria RAM dinámica. En los slots de expansión del bus ISA de las viejas PCs se dispone de las señales correspondientes a los tres canales restantes. El canal 1 no está dedicado, el 2 se utiliza para las transferencias asociadas a los discos flexibles, y el 3 para las de disco rı́gido (ya obsoleta como vimos). Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 7 / 19 Acceso Directo a Memoria Introducción Diagrama detallado en la PC original Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 8 / 19 Acceso Directo a Memoria Introducción Diagrama PC actual Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 9 / 19 Acceso Directo a Memoria Introducción Direcciones en la PC Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 10 / 19 Acceso Directo a Memoria Registros del 8237 Command Register Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 11 / 19 Acceso Directo a Memoria Registros del 8237 Mode Register Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 12 / 19 Acceso Directo a Memoria Registros del 8237 Modos del 8237 Transferencia Simple.En este modo el 8237 realiza una transferencia de un byte, e independientemente del estado de la lı́nea DREQ, devuelve el bus al procesador e ingresa al ciclo Inactivo. Vale decir, aunque el dispositivo periférico mantenga DREQ activa indefinidamente, el control vuelve al procesador. Cada vez que termina una transferencia, el 8237 decrementa el Current Word Count Register. Cuando este registro llega a cero, setea el bit TC (Terminal Count) en la palabra de estados, y activa la lı́nea /EOP indicando por hardware al periférico que la transferencia total finalizó. Si además, se lo ha programado en modo Autoinicialización, vuelve a cargar los valores contenidos en Base Address Register y Base Word Count Register, en los Current Address Register y Current Word Count Register respectivamente. Los canales 0 y 2 de la PC (DMA Refresh y Floppy Disk I/O) están programados de este modo. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 13 / 19 Acceso Directo a Memoria Registros del 8237 Modos del 8237 Transferencia de Bloque. En este modo un solo DREQ fuerza una sola transferencia de DMA de múltiples bytes hasta que el Current Word Count Register alcance la cuenta de cero o hasta que el dispositivo de E/S aborte bajando la lı́nea /EOP. Luego de concluida la transferencia el 8237 devuelve el bus al procesador y se cumplen los mismos pasos que en el modo Transferencia Simple. En este modo a diferencia del anterior, el periférico debe desactivar DREQ una vez recibido el DACK. Demanda de Transferencia. Básicamente es igual al modo Transferencia de Bloque, solo que el dispositivo debe mantener activa DREQ para que la transferencia no se detenga. Es decir, la transferencia tiene lugar mientras el dispositivo la ”demanda”manteniendo activa DREQ. Cascada. Permite incrementar el número de canales mediante una expansión en árbol de 8237s, que trabajen en configuración Master Slave. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 14 / 19 Acceso Directo a Memoria Registros del 8237 Request Register Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 15 / 19 Acceso Directo a Memoria Registros del 8237 Mask Register Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 16 / 19 Acceso Directo a Memoria Registros del 8237 Status Register Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 17 / 19 Acceso Directo a Memoria Registros del 8237 DMA Page Registers El 8237 tiene tan solo 16 lı́neas para manejar el bus de Direcciones, es decir que solo direcciona 64 Kbytes. La primer PC agregó cuatro registros (uno por cada canal de DMA) para cubrir su espacio de direcciones de 1 Mbyte. Por lo tanto son registros de 4 bits. . . :o A partir de las PC AT y posteriores se extendieron a 8 bits, ya que el 80286 agregó a su bus de direcciones las lı́neas A20 a A23, permitiendo direccionar 16 Mbytes de memoria. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 18 / 19 Acceso Directo a Memoria Registros del 8237 Limitaciones de este modelo Este subsistema introdujo mejoras en la performance de una PC XT con un disco rı́gido de 10 Mbytes. En las máquinas actuales con discos de 500 Gbytes, la combinación 8237 mas Bus ISA, se transformarı́a en un cuello de botella. Los chipsets que acompañan a los procesadores actuales, aun los mas modernos siguen incluyendo la lógica equivalente a este subsistema (8237 like). La única razón: COMPATIBILIDAD. A este montaje se lo denomina DMA de terceras partes. las PCs modernas utilizan DMA de primera parte, esto es, controladores de dispositivos de E/S (como disco por ejemplo) capaces de requerir por si solos el DMA y manejarlo. Este concepto se conoce como Bus Mastering y en él se basa la tecnologı́a Ultra DMA (UDMA) de los controladores IDE para discos rı́gidos Serial ATA 2 atuales. Alejandro Furfaro (PSO - DC) Controlador de Floppy Disk - DMA 12 de Mayo de 2011 19 / 19