Controlador de Floppy Disk

Anuncio
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
Descargar