Arquitectura de computadoras UNIDAD 2

download Arquitectura de computadoras UNIDAD 2

of 30

description

BUSES

Transcript of Arquitectura de computadoras UNIDAD 2

UNIDAD 2 COMUNICACIN INTERNA DE LA COMPUTADORA

BUSES

La familia de computadoras PC interconexiona toda la circuiteria de control interna mediante un diseo de circuito, conocido con el nombre de bus. Es el conjunto de lneas (cables) de hardware utilizados para la transmisin de datos entre los componentes de un sistema informtico. Un bus es en esencia una ruta compartida que conecta diferentes partes del sistema como el procesador, la controladora de unidad de disco, la memoria y los puertos de entrada, salida, permitindoles transmitir informacin. El bus, por lo general supervisado por el microprocesador, se especializa en el transporte de diferentes tipos de informacin. Por ejemplo, un grupo de cables (en realidad trazos sobre una placa de circuito impreso) transporta los datos, otro las direcciones (ubicaciones) en las que puede encontrarse informacin especfica, y otro las seales de control para asegurar que las diferentes partes del sistema utilizan su ruta compartida sin conflictos. Los buses se caracterizan por el nmero de bits que pueden transmitir en un determinado momento. Un equipo con un bus de 8 bits de datos, por ejemplo, transmite 8 bits de datos cada vez, mientras que uno con un bus de 16 bits de datos transmite 16 bits de datos simultneamente. Como el bus es parte integral de la transmisin interna de datos y como los usuarios suelen tener que aadir componentes adicionales al sistema, la mayora de los buses de los equipos informticos pueden ampliarse mediante uno o ms zcalos de expansin (conectores para placas de circuito aadidas). Al agregarse estas placas permiten la conexin elctrica con el bus y se convierten en parte efectiva del sistema. El Bus se refiere al camino que recorren los datos desde una o varias fuentes hacia uno o varios destinos y es una serie de hilos contiguos. En el sentido estricto de la palabra, esta definicin slo se aplica a la interconexin entre el procesador y los perifricos. Un bus es simplemente un conjunto compartido de pistas trazadas en la placa de circuito principal, al que se conectan todas las partes que controlan y forman el ordenador. Cuando un dato pasa de un componente a otro, viaja a lo largo de este camino comn para alcanzar su destino. Cada chip de control y cada byte de memoria del PC estn conectados directa o indirectamente al bus. Cuando un nuevo componente se inserta en uno de los conectores de expansin, queda unido directamente al bus, convirtindose en un objeto ms de la unidad completa. Cualquier informacin que entra o sale de un sistema ordenador se almacena temporalmente en al menos una de las distintas localizaciones que existen a lo largo del bus. La mayor parte de las veces el dato se sita en la memoria principal, que en la familia PC est

formada por miles de posiciones de memoria de 8 bits. Pero algn dato puede acabar en un puerto, o registro, durante unos instantes, mientras espera que la CPU lo enve a una posicin adecuada. Generalmente los puertos y registros almacenan slo uno o dos bytes de informacin a la vez, y se utiliza normalmente como lugares de parada intermedia para los datos, que se estn enviando de un lugar a otro. Siempre que se utiliza una posicin de memoria, o un puerto, como lugar de almacenamiento, su localizacin est marcada por una direccin que la identifica individualmente. Cuando el dato est listo para ser transferido, se transmite primero su direccin de destino por el bus de direcciones; el dato sigue a la zaga por el bus de datos. Por tanto, el bus transporta algo ms que datos. Lleva informacin de control, tales como las seales de temporizacin (del sistema reloj), las seales de interrupcin, as como las direcciones de las miles de posiciones que forman tanto la memoria como los dispositivos que estn conectados al bus. Para diferenciar estas cuatro funciones diferentes, el bus est dividido en cuatro partes: lneas de potencia, bus de control, bus de direcciones y bus de datos. La informacin codificada viaja a travs de la computadora por un bus. El bus soporta tres tipos principales de informacin: un grupo de cables transporta datos, tales como la letra A codificada; otro grupo lleva la direccin del componente al que van dirigidos los datos. Cada componente acepta slo la informacin que va dirigida a l; por ejemplo, la informacin enviada a la impresora no ser aceptada de forma inadvertida por la unidad de disco. La tercera clase de informacin son seales de tiempo, que sincronizan todo lo que hay conectado al bus para enviar y recibir mensajes en el instante correcto. Una PC tiene muchos tipos de buses incluyendo los siguientes: Processor Bus: Es la va de comunicacin entre el CPU y los chip inmediatos a el, comnmente llamado chipset en los sistemas modernos. Este bus es usado para transferir datos entre el CPU y bus del sistema principal, por ejemplo, o entre el cpu y la memoria cach externa. El propsito de processor bus es conseguir mayor velocidad en la entrega de la informacin para y del CPU, este bus opera a una mayor rapidez que cualquier otro bus en la PC. En este bus no existen los cuellos de botellas, el bus consiste de circuitos elctricos para datos, direccin y control. Este bus opera con la misma velocidad del reloj a como lo hace el CPU externamente, ya que internamente el CPU puede trabajar a mayores velocidades. Memory Bus: Es usado para transferir informacin entre la memoria principal y el CPU. Este bus es implementado en un chip dedicado, el cual es responsable de la comunicacin. La informacin que viaja sobre el memory bus se hace a una velocidad mas baja que en el processor bus. Este bus tiene el mismo ancho que el procesor bus, esto significa que en un sistema con CPU de 32 bits el memory bus es de 32 bits, esto definir el tamao de lo que se conoce como banco de memoria. Los slots para la memoria son conectados en el memory bus de la misma forma que son conectados los slots de E/S Bus. Address Bus: En los sistemas actuales, este bus es considerado como parte de los buses del procesador y de la memoria. Este bus es usado para indicar exactamente que direccin en

memoria o que direccin sobre el bus de sistema ser usada en la operacin de transferir un dato. El tamao del bus de memoria controla la cantidad de memoria que el CPU puede direccional directamente. I/O Bus: Son los buses que se encargan de la entrada y salida de los datos en todo el sistema. Las diferencias entre los tipos de buses que pertenecen a esta categora consiste en la cantidad de datos que pueden transferir a la vez y la velocidad a la que pueden hacerlo. Conexiones del hardware Para funcionar, el hardware necesita unas conexiones materiales que permitan a los componentes comunicarse entre s e interaccionar. Un bus constituye un sistema comn interconectado, compuesto por un grupo de cables o circuitos que coordina y transporta informacin entre las partes internas de la computadora. El bus de una computadora consta de dos canales: uno que la CPU emplea para localizar datos, llamado bus de direcciones, y otro que se utiliza para enviar datos a una direccin determinada, llamado bus de datos. Un bus se caracteriza por dos propiedades: la cantidad de informacin que puede manipular simultneamente (la llamada anchura de bus) y la rapidez con que puede transferir dichos datos. Una conexin en serie es un cable o grupo de cables utilizado para transferir informacin entre la CPU y un dispositivo externo como un mouse, un teclado, un mdem, un digitalizador y algunos tipos de impresora. Este tipo de conexin slo transfiere un dato de cada vez, por lo que resulta lento. La ventaja de una conexin en serie es que resulta eficaz a distancias largas. Una conexin en paralelo utiliza varios grupos de cables para transferir simultneamente ms de un bloque de informacin. La mayora de los digitalizadores e impresoras emplean este tipo de conexin. Las conexiones en paralelo son mucho ms rpidas que las conexiones en serie, pero estn limitadas a distancias menores de 3 m entre la CPU y el dispositivo externo. FUNCIONAMIENTO En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU escribe la direccin de la posicin deseada de la memoria en el bus de direcciones accediendo a la memoria, teniendo cada una de las lneas carcter binario. Es decir solo pueden representar 0 o 1 y de esta manera forman conjuntamente el nmero de la posicin dentro de la memoria (es decir: la direccin). Cuanto ms lneas haya disponibles, mayor es la direccin mxima y mayor es la memoria a la cual puede dirigirse de esta forma. En el bus de direcciones original haban ya 20 direcciones, ya que con 20 bits se puede dirigir a una memoria de 1 MB y esto era exactamente lo que corresponda a la CPU.

Esto que en le teora parece tan fcil es bastante mas complicado en la prctica, ya que aparte de los bus de datos y de direcciones existen tambin casi dos docenas ms de lneas de seal en la comunicacin entre la CPU y la memoria, a las cuales tambin se acude. Todas las tarjetas del bus escuchan, y se tendr que encontrar en primer lugar una tarjeta que mediante el envo de una seal adecuada indique a la CPU que es responsable de la direccin que se ha introducido. Las dems tarjetas se despreocupan del resto de la comunicacin y quedan a la espera del prximo ciclo de transporte de datos que quizs les incumba a ellas. PROCESADOR Bus de direcciones Bus de datos 8086 20 16 8088 20 8 80186 20 16 80188 20 8 80286 24 16 80386 SX 32 16 80386 DX 32 32 80486 DX 32 32 80486 SX 32 32 PENTIUM 32 64 PENTIUM PRO 32 64 Este mismo concepto es tambin la razn por la cual al utilizar tarjetas de ampliacin en un PC surgen problemas una y otra vez, si hay dos tarjetas que reclaman para ellas el mismo campo de direccin o campos de direccin que se solapan entre ellos. Los datos en si no se mandan al bus de direcciones sino al bus de datos. El bus XT tena solo 8 bits con lo cual slo poda transportar 1 byte a la vez. Si la CPU quera depositar el contenido de un registro de 16 bits o por valor de 16 bits, tena que desdoblarlos en dos bytes y efectuar la transferencia de datos uno detrs de otro. De todas maneras para los fabricantes de tarjetas de ampliacin, cuyos productos deben atenderse a este protocolo, es de una importancia bsica la regulacin del tiempo de las seales del bus, para poder trabajar de forma inmejorable con el PC. Pero precisamente este protocolo no ha sido nunca publicado por lBM con lo que se obliga a los fabricantes a medir las seales con la ayuda de tarjetas ya existentes e imitarlas. Por lo tanto no es de extraar que se pusieran en juego tolerancias que dejaron algunas tarjetas totalmente eliminada. Manejo de interrupciones Otro uso importante del bus es el manejo de interrupciones. Cuando la CPU instruye algn dispositivo de E/S para que haga algo, por lo general espera una interrupcin cuando termina el trabajo. La seal de interrupcin indica que requiere del bus. Aqu se presenta el mismo tipo de problema que con los ciclos del bus ordinario, ya que es posible que varios dispositivos quieran enviar una interrupcin al mismo tiempo. La solucin usual es asignar prioridades a los dispositivos, y usar un arbitro centralizado para dar prioridad a aquellos que tengan los tiempos mas crticos.

BUSES

Los buses son un medio de transmisin compartido:

-

Reduce costes

- Reduce complejidad de diseo hardware - Posibilidad de fcil expansin del sistema ---------------------------------Obliga a una cierta homogeneidad de los dispositivos conectados Protocolos de acceso ordenado Limitacin del rendimiento

Entrada /Salida

P.

M.

P.

M

Estructura de un bus:

-

Lneas de datos: Lneas de direccin Lneas de control

Datos: Llevan datos y tambin comandos para los dispositivos de entrada / salida. Su amplitud influye en el rendimiento del bus Relacionado con el tamao de palabra del sistema

Direcciones: Llevan direcciones de memoria en acceso a memoria, o permiten seleccionar un dispositivo conectado al bus. Su amplitud determina el espacio de direcciones tanto de memoria como entrada / salida

Control: Son seales de control de acceso y uso del bus. - Arbitraje del bus - Sincronizacin de las comunicaciones - Reloj del sistema

Tipos de seales de Control:

Write: Escritura. Indicar una escritura tanto en memoria como en un dispositivo e/s

Read: Lectura. Indicar una lectura tanto en memoria como en un dispositivo e/s

(Estas seales pueden venir fundidas en una, necesitndose slo una seal para saber si en cada acceso del bus se lee o escribe. Tambin pueden venir separadas las seales para acceder a memoria y e/s: MemRead MemWrite I/Oread I/Owrite)

BusRequest: Seal de solicitud de uso del bus.

BusGrant Seal que indica que se cede el bus a un dispositivo o que el bus est ocupado

InterruptRequest: Seal de solicitud de interrupcin a un dispositivo

InterrruptAcknowledge: Seal de reconocimiento de que se ha producido una interrupcin

Ack: Seal de reconocimiento de transferencia de datos, o de cesin del uso del bus, etc

Clock: Seal de reloj del bus (en buses sncronos)

Reset: Seal que llama al reinicio de todos los dispositivos.

Protocolos de uso del bus:

Son necesarios para

-

sincronizar la comunicacin entre dispositivos con diferentes caractersticas de transmisin. arbitrar la lucha que pueden emprender varios dispositivos por acceder al uso del bus.

Dos tipos de dispositivos:

-

Maestros: pueden iniciar una transaccin de bus (tambin pueden actuar como esclavos) Esclavos: se activan cuando reciben una peticin del bus.

Jerarqua

Tendencia a utilizar mltiples buses debido a que:

-

degradacin del rendimiento a medida que aumenta el nmero de dispositivos colgados al bus. "Cuello de botella" de las comunicaciones debido a los tiempos de espera para acceder al bus.

Por ellos se introducen mltiples buses basando la jerarqua en los requerimientos de comunicacin de los dispositivos:

-

Bus local: Conecta al procesador con la cache y con algn dispositivo e/s muy rpido. Bus del sistema: Conecta al procesador (a travs de la cache) con la memoria del sistema y con un segundo nivel de dispositivos de velocidad media. Bus de expansin: Se conecta al bus del sistema y hace de interfaz entre este y los dispositivos ms lentos

P.

Bus local Cache E/S Bus del sistema

Mem o

Temas de diseo de un bus:

Las tomas de decisin en el diseo de un bus se basan en un conjunto de parmetros bsicos:

Caractersticas: Lneas: Dedicadas o multiplexadas Algunas lneas pueden compartir varias funciones dentro del bus. Esto ahorra en nmero de lneas y por lo tanto en espacio que ocupa el bus en el diseo. Por el contrario influye inversamente en el rendimiento.

Dedicacin de los buses: Introducir jerarqua de buses segn las caractersticas de los dispositivos a conectar. Respeta el rendimiento de los dispositivos ms rpidos, mejorando el rendimiento del sistema. Complica el diseo del sistema y su coste

Mtodos de arbitraje: Mtodo que permita dar el uso del bus a un dispositivo cuando varios lo han solicitado. Uso de prioridades junto con esquemas de gestin. Dos tipos de esquemas: Centralizados: sincronizacin Existe un controlador del bus encargado de esta

Daisy Chain: La lnea de cesin encadena a los dispositivos por orden de prioridad. Arbitraje paralelo: El controlador decide directamente a qu dispositivo le cede el bus Distribuido: La relacin entre los dispositivos determina la poltica de acceso Autoseleccin: Los dispositivos, observando alguna informacin, decide si toman el bus o espera una nueva contienda. Seleccin por conflictos: Los dispositivos usan el bus y determinan si existen o no colisiones.

Solicitud de bus rbitro Liberacin del bus M1 M2 M3 M4 Permiso de uso del bus

rbitro Solicitud de bus M4

Liberacin del bus

M1

M2

M3

Permiso de uso del bus

Temporizacin

Sncronos: Todos los dispositivos conectados al bus funcionan con el mismo reloj - Simplicidad de la lgica de transferencia - Tendencia a mejor rendimiento Asncronos Permite la conexin de dispositivos heterogneos. Requiere un protocolo ms complejo

Reloj

Inicio

Lectura

Direcci n

Datos

Reconoc i

Diagrama de tiempo de un acceso de lectura con un protocolo sncrono

Final

8 9

Lectura

2

4

Direcci n

1

5

Datos

7

10

Reconoc i

3

6

Diagrama de tiempo de un acceso de lectura con un protocolo asncrono

Anchura del bus:

a) Cuanto ms ancho es el bus de datos, mayor capacidad de transferencia de datos tiene el bus b) Cuanto ms ancho es el bus de direcciones, a mayor espacio de datos tiene acceso el sistema c) Del nmero y tipo de seales del bus control depender la versatilidad del bus para acoger a un variado conjunto de dispositivos

1) Buses anchos implica mayores costes de construccin

Tipos de transferencia.

El tipo de transferencia es otra de las caractersticas de un bus que pueden hacerle aumentar su rendimiento o aportar al sistema funciones especiales:

-

Lectura: Indica una lectura por parte del maestro de un dato que est en el esclavo. Implica una transferencia de datos desde el esclavo al maestro. Una lectura simple trasladara un dato del tamao del bus de datos.

-

Escritura: Indica una escritura de un dato por parte del maestro en algn registro (o posicin de memoria) del esclavo.

-

Ciclo Lectura-Modificacin-Escritura: Indica un acceso combinado de lectura y escritura sin soltar el uso del bus mientras se est modificando el dato. El dato generalmente se escribe en la misma posicin en que se lee. Este acceso asegura al dispositivo que lo consigue su derecho exclusivo sobre el dato ledo.

-

Accesos mltiples: Consiste en un acceso de lectura o escritura en el que estn implicados sucesivos datos. El acceso solo requiere especificar una nica vez la direccin y el trasiego de sucesivos datos.

DIRECCIONAMIENTOS EN MODO REAL Direccionar la Memoria El direccionamiento de la memoria puede considerarse desde dos puntos de vista: Fsico y lgico. El primero se refiere a los medios electrnicos utilizados en el ordenador para acceder a las diversas posiciones de memoria. El segundo, a la forma en que se expresan y guardan las direcciones. En este epgrafe nos referiremos exclusivamente a la forma en que son tratadas las direcciones de memoria del PC. Advirtiendo desde ahora, que este asunto, como muchos otros, ha sufrido mutaciones a lo largo del tiempo, y que arrastra modos que solo tienen una justificacin de tipo histrico, en razn de las caractersticas del hardware de los primeros PCs. El sistema de numeracin utilizado por los informticos para representar las direcciones de memoria en el texto escrito no suele ser la decimal (como parecera razonable), sino el hexadecimal ( E2.2.4b). La razn es que los nmeros hexadecimales guardan cierta concordancia con las potencias de 2. Por ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones (en hexadecimal es el rango 00-FFh). En caso de direcciones de 16 bits, se puede acceder 65.536 posiciones (es el rango 0000-FFFFh). El bus de direcciones del PC XT, que tiene 20 bits, las posibilidades son 1.048.576 (es el rango 00000-FFFFFh).

Como veremos a continuacin, puede utilizarse una doble notacin: Direcciones absolutas, indicadas por un hexadecimal de cinco dgitos, en el rango 00000-FFFFFh, o en direcciones segmentadas, que utiliza dos grupos de cuatro dgitos hexadecimales. Direccionamiento segmentado Hemos indicado que el bus de direcciones del PC XT era de 20 bits ( H2), por lo que tericamente podan manejarse un total de 220 posibilidades (1.048.576). Sin embargo, el procesador 8088 utilizado tiene registros de 16 bits, por lo que solo puede contener directamente 216 posiciones (65.536). La solucin consisti en expresar las direcciones mediante dos palabras de 16 bits, denominadas desplazamiento y segmento que, por consiguiente, pueden ser representadas mediante un hexadecimal de cuatro cifras en el rango 0000-FFFFh. Estas dos palabras pueden ser traducidas a una direccin de 20 bits mediante la operacin denominada suma con desplazamiento. Por ejemplo, suponiendo que el desplazamiento y el segmento fuesen respectivamente ABCDh y E 1 F Ah, la forma de obtener la direccin resultante es como sigue: Una de las palabras, el desplazamiento, se desplaza una posicin aadindole un cero a la derecha (equivale a multiplicarla por 16, ya que las direcciones se expresan en hexadecimal). En nuestro caso, si el desplazamiento es ABCDh resulta ABC D0h?. Puesto que inicialmente es un hexadecimal de 4 cifras (ABCD en nuestro caso), el desplazamiento la transforma en un hexadecimal de 5 cifras (ABCD0). El valor obtenido se suma con el valor del segmento (E 1 F Ah), as que la direccin resultante, sera 69ECAh. Para distinguirla de la anterior, esta ltima forma se denomina direccin absoluta. Nota: Es frecuente escribir las direcciones segmentadas en forma de los dos cantidades separadas por dos puntos, poniendo a la izquierda el valor ms alto (el desplazamiento) y a la derecha el ms bajo (el segmento). En forma segmentada, la direccin anterior se expresara ABCD:E1FA , y es equivalente a la direccin absoluta 69ECAh. 4 Segmentos y prrafos Esta forma de representacin segmentada de las direcciones es en realidad una imagen de como son manejadas internamente en el procesador. Los procesadores 8088 tienen registros de 16 bits que pueden servir para almacenar los desplazamientos, es decir, cualquier direccin dentro de una zona de 64 KB (que se conoce como segmento). Disponen adems de 4 registros de segmento de 16 bits (CS, SS, DS y ES H3.2), en los que se almacenan las direcciones de inicio del segmento activo en cada momento. Resulta as, que pueden direccionar un total absoluto de 1MByte, y hasta 64 x 4 = 256 KB sin necesidad de cambiar los registros de segmento. Esto es lo que se conoce como funcionamiento en modo real (como puede verse, en realidad es una forma de manejar la memoria). La figura adjunta muestra como se utilizan los registros para sealar las direcciones de inicio de los diversos mdulos de un programa cargado en memoria ( E1.3.2) dentro del espacio de memoria direccionable con 20 bits (00000-FFFFFh).

En la figura 1 se muestra una divisin de este Mega en 16 segmentos cuyos desplazamientos son justamente 0h, 1h, 2h Fh. 5 Modelos de memoria DOS Las 220 posibilidades de direccionamiento antes comentadas, constituyen el famoso lmite del Megabyte de memoria de los primeros PCs, de los cuales se reservaron los no menos famosos 640 primeros K Bytes como mximo disponible para programas de usuario. Nota: Como ver a continuacin, gran parte del Sistema se cargaba en realidad en la memoria supuestamente reservada a usuario, con lo que en realidad el especio para programas de aplicacin resultaba siempre muy precario. Desde entonces, y en referencia a que el sistema operativo era MS-DOS, el primer Megabyte de memoria se conoce como Memoria DOS; los primeros 640 KB como memoria convencional o memoria base. Los 384 KB restantes (1024 - 640) son la memoria superior o del Sistema (Upper memory). Esta zona superior contena cosas como adaptadores y memoria de video; chips de la ROM-BIOS; ROMs de los controladores de disco, y adaptadores de red, aunque existan agujeros sin uso que podan ser aprovechados. En la figura 1 se muestra un mapa aproximado de la distribucin de esta memoria en el Sistema MS DOS. Nota: Aunque para el programador toda esta memoria RAM es un nico espacio lgico, muchas de estas cosas estn fsicamente fuera de lo que es la memoria RAM (si se abre la caja del ordenador). Por ejemplo, gran parte de la memoria de video est fsicamente en las propias placas de los adaptadores de video. Los programas DOS requieren la existencia de una zona contigua de memoria convencional (preferiblemente de 640 KB), aunque en realidad este espacio debe ser compartido con la tabla de vectores de interrupcin; rea de datos de la ROM BIOS ( H4) y buena parte del propio Sistema Operativo DOS. Por ejemplo, controladores de dispositivos (los famosos device= del fichero CONFIG.SYS). Como consecuencia de la escasez de espacio, se desarrollaron tcnicas para permitir que controladores de dispositivos y TSRs [2] se cargaran en otras zonas de memoria. Generalmente este tipo de instrucciones de carga se sitan en los ficheros CONFIG.SYS y AUTOEXEC.BAT, y aprovechan que no todo el espacio de memoria superior es utilizado por el Sistema, de modo que existen zonas ociosas en las que podan situarse los citados controladores. 6 Memoria expandida Muy pronto se comprob que el Megabyte de memoria inicialmente previsto era claramente insuficiente, por lo que se arbitraron diversos tipos de soluciones. Los ingenieros de software, en cooperacin con los de hardware, debieron hacer verdaderos juegos malabares para tratar de suplir la cortedad de miras de los diseadores del PC [1].

Concretamente hubo dos soluciones que fuero muy utilizadas y populares en su poca. La primera, fue resultado de una iniciativa conjunta de Lotus e Intel, que desarrollaron una variedad de la tcnica de direccionamiento conocida como conmutacin de bancos, a la que llamaron EMS (Expanded Memory Specification), que proporcionaba 8 MB de espacio adicional. Ms tarde fue aceptada tambin por Microsoft con alguna pequea modificacin, pasando a denominarse especificacin de memoria expandida LIM (Lotus, Intel Microsoft). Poco ms tarde Quadram, Ahston-Tate y el fabricante de tarjetas de memoria AST publicaron otra ms flexible denominada EEMS (Enhanced EMS); adems, la especificacin LIM fue perfeccionada para proporcionar 32 MB adicionales mediante una combinacin hardware/software. El procedimiento consista en aadir al ordenador una placa adicional de memoria de conmutacin de bancos de hasta 32 MB, que era conducida por un driver adecuado, el EMM (Expanded Memory Manager) cargado por el CONFIG.SYS. El truco consiste en que en un rea en desuso de la memoria superior , se sita una zona 64 KB, denominada marco de pgina, en la que existen 4 secciones de 16 KB (ventanas) que se emplean como punteros a una pgina ms grande en la memoria de conmutacin de bancos. Los programas podan utilizar segmentos de datos muy grandes ( E1.3.2), ya que el gestor de memoria EMM se encargaba de traer automticamente a la ventana la zona necesaria en cada momento. 7 Modo protegido y memoria extendida La especificacin EMS de Lotus/Intel/Microsoft, permita manejar grandes cantidades de datos (ahora no nos parecen tan grandes), pero no resolva el problema de grandes cantidades de cdigo, ya que el segmento de cdigo no poda manejarse de esta forma. Esto presentaba problemas no solo para programas grandes, sino para cualquier intento de multiprogramacin ( 1.7), cuando varios programas deben coexistir en memoria. Como siempre, la solucin vino de la mano de otro avance tecnolgico; en este caso, la aparicin del procesador Intel 80286, que en 1982 inici la era del PC AT. Este micro permite un acceso a memoria que recuerda vagamente la especificacin EMS, pero de forma nativa, ya que los mecanismos estn incluidos en el procesador. Como la poltica de Intel ha sido mantener compatibilidad con los micros anteriores, el 80286 poda trabajar en modo real, imitando el funcionamiento del 8088 , mientras que la nueva forma se denomin modo protegido. El modo protegido utiliza los registros de segmento como punteros a unos nuevos registros de direccin de 24 bits denominados tablas de descripcin (descriptor tables), que permiten acceder a un mximo de 224 (16 M Bytes) de memoria fsica, de forma que los registros de segmento son selectores que marcan el inicio de una direccin de 24 bits. La memoria que se haca accesible mediante este sistema se denomin memoria extendida, para distinguirla de la antigua EMS [3]. La posterior introduccin del 80386, con registros de 32 bits, permiti direccionar hasta 232 (4 G Bytes?) de memoria externa.

Los nuevos micros incluyeron otras mejoras que permitan al Sistema Operativo un funcionamiento ms cmodo y seguro de las aplicaciones cuando operaba en modo protegido. Los mecanismos pertinentes estaban incluidos en el hardware o al menos este proporcionaba recursos al SO para realizarlos cmodamente, aunque desde luego, para sacar provecho de estas mejoras el Sistema deba estar preparado ex profeso. El DOS no poda utilizarlas, s en cambio los sistemas ms avanzados del momento, como OS/2, Unix o Windows. Bsicamente estas mejoras se referan a dos cuestiones: Manejo de memoria virtual Soporte nativo para multiprogramacin Esta tcnica consiste en hacer creer al programa que dispone de ms memoria que la fsicamente disponible en RAM. Este artificio tiene sentido porque en ese momento (y actualmente), la memoria extendida era mayor que la fsicamente disponible en muchos sistemas, adems el disco duro era estndar en todos los equipos. Esta RAM ficticia se conoce como memoria virtual; una simulacin conocida de antiguo en el mundo de los mainframes, que fue introducida en la informtica personal a partir del 80286. Este procesador ya dispona de un controlador hardware para este menester, de forma que su manejo no significaba una gran sobrecarga para el Sistema. Su funcionamiento se basa en que cuando una aplicacin necesita ms espacio y la memoria fsica est agotada, el controlador de memoria virtual proporciona espacio auxiliar utilizando un fichero de intercambio (Swap file) situado en memoria externa (disco duro generalmente H2), donde se almacena la informacin que no cabe en la RAM. Nota: Hay ocasiones en que la RAM est demasiado fragmentada y el Sistema no puede asignar suficiente espacio contiguo a una aplicacin. Por ejemplo, el caso en que Windows muestra el conocido mensajito: No hay suficiente memoria debe cerrar alguna aplicacin en curso suele deberse a que no hay suficiente memoria grfica contigua. Es decir: memoria RAM asignada a la tarjeta de video. Adems de facilitar la apariencia de ms RAM que la fsicamente disponible, este mecanismo permite que diversas aplicaciones compartan la misma memoria fsica. Aunque para ello se requieran constantes maniobras de carga y descarga (swapping) de trozos del fichero de intercambio a memoria, por lo que el rendimiento global del sistema se resiente si la desproporcin entre el fichero de intercambio y la RAM es muy notable [4]. Nota: En el caso de los sistemas operativos de Microsoft, la memoria virtual fue introducida de forma ms o menos perfeccionada desde la aparicin del primer Windows 3.1 en 1987. En Windows 95, el Sistema comienza a funcionar directamente en modo protegido de 32 bits, proporcionando a cualquier aplicacin un espacio de memoria de hasta 4 GB. (siempre que est disponible el adecuado espacio en disco). En este Sistema, el fichero de intercambio puede crecer a medida de las necesidades hasta ocupar todo el espacio disponible en disco. 7.2 Multiprogramacin

La posibilidad de ejecucin simultanea de varios programas, ya utilizada en los grandes sistemas, era un sueo largamente acariciado en el mundo de la informtica personal (no olvidemos que la informtica naci en sistemas grandes y despus migr al entorno del PC). Sin embargo, el mantenimiento de zonas de memoria correspondiente a programas distintos, sin que existieran interferencias, era una tarea delicada de resultado a veces catastrfico (supongamos por ejemplo que un puntero descontrolado de una aplicacin invade el rea destinada a otra). La correcta solucin del problema no pasaba solo por la posibilidad de acceder a grandes cantidades de memoria, algo que resolva la memoria virtual. Eran tambin necesarios algunos dispositivos adicionales de proteccin, que se implementaron de forma nativa en los procesadores Intel286 y siguientes. Estos dispositivos incluyen control de lmites, y posibilidad de acceso de solo lectura y ejecucin en el segmento utilizado por la aplicacin, as como una serie de privilegios que permiten proteger el cdigo del Sistema de las aplicaciones o programas de usuario. Adems, la posibilidad de conmutacin hardware entre tareas protege las aplicaciones de usuario unas de otras. Adems de estos mecanismos, partir de la introduccin del 80486 en 1989, los procesadores disponen de soporte hardware para implementar sistemas multiprocesador, de forma que se haca posible una autntica multiprogramacin. [1] Hay que sealar en su descargo, que los micros utilizados en la poca utilizaban un mximo de 64 KB para sistema y programas, y que el Sistema era casi inexistente, por lo que cara al futuro, 640 KB. (diez veces ms) poda parecer un margen ms que generoso. [2] TSR Terminate and Stay Resident. Un artificio del DOS precursor de la multiprogramacin. Programas que se cargan y permanecen Stand by en memoria; activndose mediante una combinacin especfica de teclas. El primero y ms famoso, fue Side Kick? de Borland, que contena diversas utilidades, incluyendo una tabla de caracteres ASCII; un bloc de notas; una calculadora decimal/hexadecimal/binario y una agenda. [3] Vista la similitud de nombres adoptada, ms que ayudar a aclarar las cosas parece que en realidad pretendan confundir al personal. [4] Por razones de eficacia, en algunos Sistemas se requiere que este fichero de intercambio est en un espacio de disco contiguo. En Windows 95 es el fichero WIN 386?.SWP. Mientras que en Linux se prefiere utilizar una particin de disco dedicada a este fin especfico, conocida como particin swap. Los usuarios de este Sistema pueden utilizar las utilidades free y vmstat para inspeccionar ambos tipos de memoria (fsica y virtual). Modo real De Wikipedia, la enciclopedia libre

Saltar a navegacin, bsqueda El modo real (tambin llamado modo de direccin real en los manuales de Intel) es un modo de operacin del 80286 y posteriores CPUs compatibles de la arquitectura x86. El modo real est caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware perifrico, y no tiene conceptos de proteccin de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenan solo un modo operacional, que era equivalente al modo real en chips posteriores. La arquitectura 286 introdujo el modo protegido, permitiendo, entre otras cosas, la proteccin de la memoria a nivel de hardware. Sin embargo, usar estas nuevas caractersticas requiri instrucciones de software adicionales no necesarias previamente. Puesto que una especificacin de diseo primaria de los microprocesadores x86 es que sean completamente compatibles hacia atrs con el software escrito para todos los chips x86 antes de ellos, el chip 286 fue hecho para iniciarse en modo real - es decir, en un modo que tena apagadas las nuevas caractersticas de proteccin de memoria, de modo que pudieran correr sistemas operativos escritos para microprocesadores ms viejos. Al da de hoy, incluso los ms recientes CPUs x86 se inician en modo real al encenderse, y pueden correr el software escrito para cualquier chip anterior. Los sistemas operativos DOS (MS-DOS, DR-DOS, etc.) trabajan en modo real. Las primeras versiones de Microsoft Windows, que eran esencialmente un shell de interface grfica de usuario corriendo sobre el DOS, no eran realmente un sistema operativo por s mismas, corran en modo real, hasta Windows 3.0, que poda correr tanto en modo real como en modo protegido. Windows 3.0 poda correr de hecho en dos sabores de modo protegido - el modo estndar, que corra usando modo protegido, y el modo mejorado 386, que adems usaba direccionamiento de 32 bits y por lo tanto no corra en un 286 (que a pesar de tener modo protegido, segua siendo un chip de 16 bits; los registros de 32 bits fueron introducidos en la serie 80386). El Windows 3.1 removi el soporte para el modo real, y fue el primer ambiente operativo de uso masivo que requiri por lo menos un procesador 80286 (no contando con el Windows 2.0 que no fue un producto masivo). Casi todos los sistemas operativos modernos x86 (Linux, Windows 95 y posteriores, OS/2, etc.) cambian el CPU a modo protegido o a modo largo en el arranque. MODO PROTEGIDO Vamos a describir algunos conceptos importantes a la hora de entender el comportamiento del modo protegido y del acceso a las tareas (cdigo y datos de la memoria).

En el modo protegido se pueden crear hasta 8193 tablas de descriptores: una global y 8192 locales. Pero en un momento cualquiera, slo hay activas dos tablas de descriptores, la global y una local, donde a cada tarea se le asigna una tabla de descriptores local, y en un cambio de tarea se conmuta a la tabla de descriptores de la nueva tarea. Estas dos tablas de descriptores se denominan con Global Descriptor Table (GDT) y Local Descriptor Table (LDT).

En Minix existe una tabla de descriptores de interrupciones (IDT) que guarda informacin a cerca de las posiciones en la GDT donde se encuentran las rutinas de tratamiento de las interrupciones hardware y software. Contiene rutinas relativas a la operacin en modo protegido de los procesadores Intel. La Tabla de descriptores Globales (GDT), Tabla de descriptores locales (LTDs) y Tabla de descriptores de interrupciones(IDT) se encuentran en memoria, y su acceso est restringido, proporcionando acceso restringido a los recursos del sistema. La GDT e IDT son indexadas por registros especiales dentro de la CPU. La GDT est disponible para todos los procesos y mantiene descriptores de segmento para regiones de memoria usadas por el sistema operativo. Hay normalmente una LDT por cada proceso, manteniendo el descriptores de segmento de las regiones de memoria usadas por los procesos. Los descriptores son estructuras de 8 bytes con un cierto nmero de componentes, pero los campos ms importantes son los que describen, la direccin base y el lmite de la regin de memoria. La IDT contiene la direccin del cdigo a ejecutar cuando la correspondiente interrupcin es activada. TEMPORIZACION CIRCUITOS DE CONMUTACIN Y TEMPORIZACIN Los circuitos de conmutacin y temporizacin, o circuitos lgicos, forman la base de cualquier dispositivo en el que se tengan que seleccionar o combinar seales de manera controlada. Entre los campos de aplicacin de estos circuitos se pueden mencionar la conmutacin telefnica, las transmisiones por satlite y el funcionamiento de las computadoras digitales. La lgica digital es un proceso racional para adoptar sencillas decisiones de verdadero o falso basadas en las reglas del lgebra de Boole. Verdadero puede estar representado por un 1, y falso por un 0, y en los circuitos lgicos estos numerales aparecen como seales de dos tensiones diferentes. Los circuitos lgicos se utilizan para adoptar decisiones especficas de verdadero-falso sobre la base de la presencia de mltiples seales verdadero-falso en las entradas. Las seales se pueden generar por conmutadores mecnicos o por transductores de estado slido. La seal de entrada, una vez aceptada y acondicionada (para eliminar las seales elctricas indeseadas, o ruidos), es procesada por los circuitos lgicos digitales. Las diversas familias de dispositivos lgicos digitales, por lo general circuitos integrados, ejecutan una variedad de funciones lgicas a travs de las llamadas puertas lgicas, como las puertas OR, AND y NOT y combinaciones de las mismas (como NOR, que incluye a OR y a NOT). Otra familia lgica muy utilizada es la lgica transistor-transistor. Tambin se emplea la lgica de semiconductor complementario de xido metlico, que ejecuta funciones similares a niveles de potencia muy bajos pero a velocidades de funcionamiento ligeramente inferiores. Existen tambin muchas otras variedades de circuitos lgicos, incluyendo la hoy obsoleta lgica restato-transistor y la lgica de acoplamiento por emisor, utilizada para sistemas de muy altas velocidades. Los bloques elementales de un dispositivo lgico se denominan puertas lgicas digitales. Una puerta Y (AND) tiene dos o ms entradas y una nica salida. La salida de una puerta Y es verdadera slo si todas las entradas son verdaderas. Una puerta O (OR) tiene dos o ms entradas y una sola salida. La salida de una puerta O es verdadera si cualquiera de las

entradas es verdadera, y es falsa si todas las entradas son falsas. Una puerta INVERSORA (INVERTER) tiene una nica entrada y una nica salida, y puede convertir una seal verdadera en falsa, efectuando de esta manera la funcin negacin (NOT). A partir de las puertas elementales se pueden construir circuitos lgicos ms complicados, entre los que cabe mencionar los circuitos biestables (tambin llamados flip-flops, que son interruptores binarios), contadores, comparadores, sumadores, y combinaciones ms complejas. En general, para ejecutar una determinada funcin es necesario conectar grandes cantidades de elementos lgicos en circuitos complejos. En algunos casos se utilizan microprocesadores para efectuar muchas de las funciones de conmutacin y temporizacin de los elementos lgicos individuales. Los procesadores estn especficamente programados con instrucciones individuales para ejecutar una determinada tarea o tareas. Una de las ventajas de los microprocesadores es que permiten realizar diferentes funciones lgicas, dependiendo de las instrucciones de programacin almacenadas. La desventaja de los microprocesadores es que normalmente funcionan de manera secuencial, lo que podra resultar demasiado lento para algunas aplicaciones. En tales casos se emplean circuitos lgicos especialmente diseados. INTERRUPCIONES Interrupciones Una peticin de interrupcin IRQ (Interrupt Request) es una seal que se origina en un dispositivo hardware (por ejemplo, un perifrico), para indicar al procesador que algo requiere su atencin inmediata; se solicita al procesador que suspenda lo que est haciendo para atender la peticin. Hemos sealado ( H2) que las interrupciones juegan un papel fundamental, en especial en la operacin de dispositivos E/S, ya que les permite enviar estas peticiones a la UCP. Sin ellas el sistema debera chequear constantemente los dispositivos para comprobar su actividad, pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atencin del procesador. Podra figurarse un sistema telefnico donde hubiera que levantar peridicamente el auricular para comprobar si alguien nos llama? [4]. Nota: Veremos que estas peticiones pueden ser generadas no solo por dispositivos hardware, tambin por los programas, e incluso en circunstancias especiales (errores generalmente) por el propio procesador. Resumimos que existen tres posibles orgenes de estas peticiones: Hardware, Software, y del procesador. Principio de funcionamiento Cuando un dispositivo reclama atencin del procesador es para que este haga algo. Este algo es lo que se conoce como servicio; controlador o gestor de la interrupcin, ISR (Interrupt service routine). En cualquier caso se trata siempre de ejecutar un programa situado en algn lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las direcciones de inicio de estos programas, que se conocen como vectores de interrupcin, se copian en una tabla de 1024

Bytes que se carga al principio de la memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema ( H4), razn por la cual estas rutinas se conocen tambin como servicios del BIOS. La citada tabla se denomina tabla de vectores de interrupcin IDT (Interrupt Description Table) y en sus 1024 bytes pueden almacenarse 256 vectores de 4 bytes. Es decir, los vectores de interrupcin son punteros de 32 bits, numerados de 0 a 255, que sealan las direcciones donde comienza la rutina que atiende la interrupcin [3]. Como veremos a continuacin, el diseo del PC solo permite 16 interrupciones distintas, por lo que puede parecer extrao que se hayan previsto 256 vectores para atenderlas. La razn es que adems de los servicios del BIOS propiamente dichos, se cargan las direcciones de inicio de otras rutinas del Sistema Operativo, los denominados servicios del Sistema ( Servicios del Sistema). Incluso es posible cargar direcciones para rutinas especficas de usuario. Al disear el 8088, Intel estableci un reparto de estos vectores, reservando los 5 primeros para uso interno del procesador (precisamente para atender las excepciones ). A continuacin estableci otros 27 de uso reservado, aunque no desvel ningn uso especfico para algunos de ellos. A partir de aqu, los vectores 32 a 255 estaban disponibles. El esquema resultante se muestra en la tabla adjunta. ACCESO DIRECTO A MEMORIA Puesto que la mayora de datos que maneja el ordenador estn antes o despus en la memoria RAM, los intercambios entre esta y el resto de elementos son muy frecuentes. En general este intercambio es conducido por el procesador, pero en determinados casos, la memoria pueda realizar intercambios directamente con los perifricos sin intervencin del procesador. Por ejemplo, el disco o una tarjeta de sonido, lo que conduce a un incremento del rendimiento del sistema. 2 DMA Ya desde su concepcin inicial, los diseadores del PC dispusieron una arquitectura que permitiese este tipo de intercambios. El mecanismo utilizado se conoce como acceso directo a memoria DMA (Direct Memory Access), e igual que ocurre con las excepciones, el sistema DMA dispone de algunos elementos hardware auxiliares que lo convierten en un subsistema autnomo dentro del bus externo. Estos elementos son: Ciertas lneas dedicadas en el bus de control Un procesador especfico, el DMAC (DMA Controller), que permite que puedan realizarse estos intercambios sin apenas intervencin del procesador Pequeas zonas auxiliares de memoria, conocidas como Registros de pgina.

3 Lneas de control El bus de control tiene lneas especficas para este tipo de intercambios, de forma que el DMA es un subsistema autnomo dentro del mecanismo general de intercambio de datos y control del bus. Son las siguientes: Lneas DRQ1 a DRQ3 (DMA request). Utilizadas por los dispositivos que necesitan efectuar un acceso directo a memoria. Lneas DACK1 a DACK3 (DMA acknowledge). Se utilizan para acusar recibo de la peticin DRQ correspondiente. AEN (Access Enabled) Cuando esta seal est alta, el controlador DMA tiene control sobre ciertas lneas del bus; precisamente las que gobiernan los intercambios con memoria y puertos (MEMR, MEMW, IOR, IOW, Etc). MEMR (Memory Read) Cuando se activa, esta seal indica a la memoria conectada al bus que escriba los datos en el bus de datos. MEMW (Memory Write) Cuando se activa, indica a la memoria que almacene los datos situados en el bus de datos. Conexiones del controlador DMA con las patillas 30 y 31 de la UCP 4 Controlador DMA El mecanismo de acceso directo a memoria est controlado por un chip especfico, el DMAC (DMA Controller), que permite realizar estos intercambios sin apenas intervencin del procesador. En los XT estaba integrado en un chip 8237A que proporcionaba 4 canales de 8 bits (puede mover solo 1 Byte cada vez); sus direcciones de puerto son 00000Fh. Posteriormente en los AT se instalaron dos de estos integrados y las correspondientes lneas auxiliares en el bus de control. En contra de lo que podra parecer, el resultado no fue disponer de 8 canales, porque el segundo controlador se colg en Cascada de la lnea 4 del primero. Los canales del segundo DMAC est asignado a las direcciones 0C00DFh y son de 16 bits. Pueden mover 2 Bytes (de posiciones contiguas) cada vez. Cada canal tiene asignada una prioridad para el caso de recibirse simultneamente varias peticiones (los nmeros ms bajos tienen prioridad ms alta). Pueden ser utilizados por cualquier dispositivo que los necesite (suponiendo naturalmente que est diseado para soportar este modo de operacin). Cada sistema los asigna de forma arbitraria, pero hay algunos cuya asignacin es estndar. Canal Uso

0 En los primitivos PCs estaba dedicado al refresco de memoria. En los sistemas actuales est libre. 1 Libre: Generalmente a dispositivos SDLC [3] (codificadores de audio) 2 Controlador de disquete 3 Controlador puerto de impresora ECP [2] 4 Libre en los XT. Ocupado en los AT (segundo controlador DMAC) 5 Libre (AT) 6 Libre (AT) 7 Libre (AT) Nota: El Sistema Windows 98 incluye el programa MSINFO 32?.EXE con el que se pueden comprobar muchas caractersticas del sistema, incluyendo la asignacin de canales DMA. Los usuario de Linux pueden utilizar el comando dmesg | grep -i dma para obtener una relacin de los dispositivos del sistema que, en principio, estn habilitados para utilizar este tipo de transferencias. Generalmente la relacin contiene como mnimo los dos canales IDE (ide0 e ide1) y la unidad de disco (hda). 5 Funcionamiento El mecanismo de acceso directo a memoria DMA es bastante complejo en sus detalles, y por supuesto, el movimiento de grandes volmenes de datos entre memoria y un dispositivo requiere cierta intervencin del procesador. El movimiento se hace a rfagas, y cada transferencia se inicia con una interrupcin que obliga al procesador a suspender su tarea para permitir un nuevo intercambio. A continuacin intentaremos mostrar una visin general del proceso. Empezaremos sealando que el DMA permite mover datos entre un puerto y memoria, o entre memoria y un puerto, pero no entre dos puertos o entre dos posiciones de memoria. Como veremos a continuacin, cada transferencia DMA requiere cierta preparacin previa; conocer el volumen de datos a transferir (la ms simple es de 1 byte) y la direccin de inicio del bufer de memoria involucrado (del que se leern los datos o donde se escribirn). Para esto dispone de dos registros para cada lnea; el contador y el registro de direcciones. Segn se refieran a operaciones de lectura (memoria dispositivo) o escritura (dispositivo memoria) reciben distintos nombres porque su significado difiere: Escritura: Direccin de inicio (Write starting address). Contador (Write starting word count)

Lectura: Direccin actual de lectura (Read current address). Contador (Read remaining word count) Despus de cada transferencia (de 1 byte) el registro de direcciones del DMAC es incrementado en una unidad, y el contador es disminuido en una unidad. Cuando este ltimo llega a cero, la transferencia ha concluido, el DMAC pone en nivel alto la lnea T/C (Terminal Count) en el bus de control y procede a enviar al procesador la seal EOP (End of Process). A partir de este momento el controlador no puede realizar otra transferencia hasta que sea programado de nuevo por la UCP. Aunque existen varios canales, el sistema de prioridades garantiza que solo uno de ellos puede estar en funcionamiento cada vez, de forma que sus funcionamientos no pueden solaparse, y la seal EOP se refiere forzosamente al canal activo en ese momento. El sistema DMA tiene distintas formas de operacin, pero en el caso ms simple, el proceso es como sigue: cuando un dispositivo, que tiene asignado el canal x DMA, solicita una transferencia, activa la lnea DRQx, avisando as al controlador DMAC de la peticin. Al recibir la seal, el controlador DMAC comprueba que dicha lnea est programada y activada, y que no existe ninguna peticin en otra lnea DRQ de prioridad ms alta. A continuacin solicita a la UCP que le ceda el control del bus envindole una seal HRQ (Hold Request). Cuando el procesador recibe la peticin HRQ, termina la instruccin en curso, y una vez que est en condiciones de ceder el control del bus, deja flotar las seales relacionadas con su gobierno (MEMR, MEMW, IOR, IOW, Etc). Es un estado denominado tri-state, en el que el procesador no coloca la patillas correspondientes en positivo ni en negativo. A continuacin enva una seal HLDA (Hold Acknowledge) al MDAC por la patilla correspondiente ( 3.2.1), indicndole que debe tomar el control. Nota: Despus de ceder el control del bus, la UCP puede seguir su proceso, pero en cuanto llega a una instruccin que necesita un dato de memoria que no est previamente en su cache (si es un procesador moderno), debe detenerse y permanecer a la espera de ganar el control de nuevo. Esta circunstancia es totalmente transparente para el Sistema Operativo (y desde luego para las aplicaciones que corren sobre l). El nico sntoma sera el tiempo inusitadamente largo que tarda el procesador en ejecutar la prxima instruccin. A partir de este momento, el MDAC toma control del bus y monitoriza las seales que dej flotar la UCP; activa las lneas MEMR, MEMW, IOR e IOW. Si suponemos que la transferencia DMA programada consiste en transferir 1 byte a la direccin xxxxh (de memoria), el DMAC coloca la direccin en el bus de direcciones y enva una seal al dispositivo que solicit la transferencia activando la lnea DACKx correspondiente, lo que indica al dispositivo que debe depositar el dato en el bus de datos. A continuacin de la seal DACKx el controlador DMA espera un ciclo y, suponiendo que el dispositivo no haya solicitado tiempo adicional mediante la seal CHRDY del bus desactiva las lneas MEMW e IOR, lo que permite que se complete la operacin (Latch). Los datos del bus de datos son escritos en la direccin contenida en el bus de direcciones.

Suponemos que se trata de un dispositivo lento, por lo que desactiva la seal DRQx anunciando al DMAC que no lo necesita por el momento. El DMAC responde desactivando la seal DACKx que recuerda al dispositivo que no puede transmitir ms, y comprueba si existen otras peticiones que atender. A continuacin coloca en tri-state las seales del bus y enva al procesador la seal EOP. El procesador contesta desactivando a su vez la seal HLDA; deja de flotar las lneas de bus y continua con el proceso que vena ejecutando. 6 Modos de operacin Aunque el mecanismo de transferencia se ajusta en lo sustancial al proceso anteriormente descrito, en realidad el controlador MDAC permite varios modos de operacin: 6.1 Sencillo (Single) Este modo transfiere solo un byte cada vez. Despus de cada transferencia el sistema cede el control del bus y debe adquirirlo de nuevo para transmitir el siguiente. Es utilizada por dispositivos que solo pueden transmitir 1 byte cada vez a intervalos comparativamente muy largos (perifricos lentos). Por ejemplo, el primitivo controlador de disquete del PC utilizaba este modo porque su bufer era de un byte. El ciclo solicitud adquisicin del bus transferencia cesin del bus, se repite cuantas veces que sean necesarias. 6.2 Bloque (Block) Las transferencias se realizan en bloques (un mximo de 64 KB). Se supone que el perifrico es capaz de escribir/leer los datos a velocidad sostenida, porque una vez iniciada la transferencia, contina hasta que se completa. En caso necesario el perifrico puede solicitar una pausa momentnea mediante la lnea CHRDY del bus, pero en general los dispositivos lentos utilizan el modo anterior. 6.3 Demanda (Demand) Como en el caso anterior, la transferencia se realiza en bloques, pero solo tiene lugar mientras el dispositivo mantiene activada la lnea de Peticin correspondiente (DRQ). En cuanto la desactiva, el DMAC cesa la transferencia y devuelve el control del bus al procesador. Si el dispositivo necesita transferir ms datos debe solicitar otra transferencia. 6.4 Cascada (Cascade) El procedimiento de transferencia descrito anteriormente, corresponde al primitivo sistema DMA ISA. Es conocido como DMA de tercer elemento (Third party), en relacin a que en el proceso intervienen tres miembros: El dispositivo que enva los datos, el que los recibe y el controlador DMAC que sera el tercero (observe que en realidad, los datos NO pasan por l). Este enfoque pronto se mostr insuficiente para controlar los intercambios con dispositivos de alta velocidad, de forma que se arbitraron nuevas soluciones. El bus mastering o DMA de primer elemento (First party), llamado as en relacin a que es el dispositivo que realiza el intercambio de datos (con la memoria) el que toma directamente el control del bus en lugar de hacerlo el

controlador DMAC. En consecuencia, debe controlar las seales necesarias del bus (MEMR, MEMW, IOR, IOW, Etc). Este procedimiento permite encadenar entre s varios dispositivos DMA, y fue precisamente esta capacidad, la utilizada en el diseo del AT para aadir el segundo controlador. DMAC#2 se coloc en cascada con la lnea 4 del DMAC#1. Cuando el DAMC#1 recibe una peticin por el canal 4, cede el control del bus al dispositivo peticionario, el DMAC#2. 6.5 Autoinicializacin (Autoinicialize) En esta forma las transferencias se realizan al modo Sencillo o Demanda, pero cuando la UCP vuelve a tomar el control y el dispositivo est listo para enviar o recibir nuevos datos, no es necesario reprogramar la siguiente transferencia. Si se estaban transfiriendo datos desde el dispositivo a un bufer de memoria, la UCP puede seguir aadiendo datos al bufer a continuacin de los ltimos transmitidos. Si era una transferencia de de datos desde un bufer hacia el dispositivo, la UCP puede seguir leyendo datos desde la ltima posicin de leda y escribindolos en el dispositivo. Esta tcnica se utiliza con dispositivos que tienen bufers pequeos. Por ejemplo, dispositivos de audio. Supone cierta sobrecarga para la UCP, pero es la nica forma de eliminar el retardo existente entre el momento en que termina una transferencia y se reprograma la siguiente. 7 Registros de pgina Los chips 8237A y 8259A, elegidos por los diseadores de IBM para los controladores DMAC y PIC del PC, en realidad haban sido diseados para el 8085, un procesador de registros de 8 bits y bus de direcciones de 16 bits [1] que le proporcionaban un espacio de direccionamiento de 64 KB. (216 = 65.536); muy por debajo de las 1.048.576 (220) posiciones que poda direccionar el PC . Para que el DMAC pudiera seleccionar direcciones por encima del lmite de 64 KB impuesto por su propio diseo, agregaron una pequea memoria que pudiera contener la parte alta de las direcciones a manejar (desde las que leer, o en las que escribir, durante las operaciones DMA). IBM las denomin registros de pgina y eran accesibles en e puerto 08108Fh segn el mapa adjunto (todas las direcciones son de lectura/escritura). Puerto 0080008Fh - Registros de pgina DMA 0081 DMA channel 2 address byte 2 0082 DMA channel 3 address byte 2 0083 DMA channel 1 address byte 2 0084 extra page register

0085 extra page register 0086 extra page register 0087 DMA channel 0 address byte 2 0088 extra page register 0089 DMA channel 6 address byte 2 008A DMA channel 7 address byte 2 008B DMA channel 5 address byte 2 008C extra page register 008D extra page register 008E extra page register 008F DMA refresh page register La idea era componer la direccin (Dt) de la operacin DMA, yuxtaponiendo dos direcciones (una especie de direccionamiento segmentado aunque no exactamente). La parte alta (D2) se guardara en el registro de pgina y la parte baja (D1) en el registro de direcciones del DMAC, de modo que Dt = D2 # D1. Por ejemplo, si la direccin de destino de la transferencia es 00123456h, el registro de direcciones contendr 3456h, y el registro de pgina del canal correspondiente el valor 0012h. Como puede verse, la forma de componer la direccin resultante Dt a partir de la informacin de cada segmento (en hexadecimal) sera: Dt = D1 + FFFF + D2. Es fcil comprobar que el sistema presenta algunos inconvenientes. El valor ms alto posible para D1 es FFFFh, porque solo se dispone de 16 bits para su almacenamiento, y como puede verse en el mapa del puerto, el registro de pgina de cada canal es solo de 1 Byte, de forma que el valor ms alto para D2 es FFh. En conjunto solo se dispone de 8 + 16 = 24 bits para la direccin, y como resultado, el sistema DMA del PC estndar no puede direccionar memoria por encima de 16 MB (224) [5]. El diseo del sistema impone la limitacin adicional de que el bloque mximo que puede manejarse en una sola transferencia es de 64 KB. Est motivado porque el registro de pgina es totalmente independiente del DMAC y su funcionamiento no est sincronizado. Cuando se inicia una operacin, el valor D2 del registro de pgina permanece invariable, mientras que, como hemos visto, el valor D1 del registro de direcciones es incrementado con cada byte transferido. Cualquiera que sea la direccin inicial XXh en D2, el rango de direcciones mximo que puede cubrirse corresponde al intervalo 0000-FFFFh en D1. Despus del ltimo valor

debera sumarse 1 a XXh y volver a comenzar por el valor D1 = 0000h, cosa que no est contemplada en el diseo. 8 Evolucin Como todo lo relacionado con la arquitectura del ordenador, el sistema de acceso directo a memoria ha sufrido una considerable evolucin desde sus inicios. Adems de las anteriores, han aparecido nuevas formas de funcionamiento, como el Ultra DMA o DMA-33. En 1996 Intel introdujo el chip 82374 ESC (EISA System Component) que entre otras caractersticas incluye un superset de la funcionalidad del primitivo 8237A y que serva tanto para los buses EISA como para los (entonces emergentes) PCIs. Respecto al mecanismo DMA tradicional, presenta la mejora de que permite acceso directo a un espacio de direcciones de 32 bits. La introduccin del Bus mstering permiti que determinados dispositivos controlaran la gestin del bus en sustitucin del controlador DMA. Esta es la forma de funcionamiento de los dispositivos rpidos en los buses PCI. ________________________________________ [1] Este micro, lanzado por Intel en 1976, era en realidad una versin mejorada del 8080, que descenda a su vez del 8008 [2] ECP (Enhanced Capabilities Port). Este tipo de puerto paralelo bidireccional, desarrollado por HP y Microsoft, para conectar de forma econmica perifricos de alta velocidad al PC (como impresoras de alto rendimiento y escners), requiere acceso directo a memoria, algo que no era necesario en los puertos LPT normales SPP (Standard Parallel Port) ni con los EPP (Enhanced Parellel Port). Actualmente la mayora de PCs incluyen un chipset que puede manejar ambos tipos de puerto. En estos casos, el programa de Setup de la BIOS permite seleccionar el puerto paralelo como ECP, EPP, o ECP+EPP. En caso de utilizar ECP, la BIOS tambin puede permitir asignar el canal DMA correspondiente (generalmente el 3), aunque en los sistemas PnP es mejor confiar esta tarea a la propia BIOS. [3] Controlador sncrono serie de alta velocidad. Generalmente utilizado en dispositivos de audio y comunicaciones. [4] Los movimientos de datos entre posiciones de memoria se realizan suficientemente bien mediante instrucciones de la UCP. [5] Esta cantidad de memoria RAM era inimaginable cuando se dise el PC, pero actualmente (2005) est dentro de lo posible.

INGENIERIA EN SISTEMAS COMPUTACIONALES ARQUITECTURA DE COMPUTADORAS

07:00 A 08:00 M_10

GONZALEZ RIVERA LEONOR ALEJANDRA

Octubre 2011